From 32ab5b0005f0c23caa8d354ce03d2b24cdc1431a Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sun, 25 Nov 2007 18:38:02 +0000 Subject: [PATCH] Full merge from trunk at revision 41356 of entire boost-root tree. [SVN r41370] --- doc/Jamfile.v2 | 23 +- doc/common_factor.html | 5 +- doc/complex/Jamfile.v2 | 80 + doc/{math-tr1.qbk => complex/complex-tr1.qbk} | 32 +- .../inverse_complex.html | 68 + .../inverse_complex/acos.html | 69 + .../inverse_complex/acosh.html | 69 + .../inverse_complex/asin.html | 69 + .../inverse_complex/asinh.html | 69 + .../inverse_complex/atan.html | 69 + .../inverse_complex/atanh.html | 68 + .../inverse_complex/history.html | 50 + .../inverse_complex/implementation.html | 64 + doc/complex/html/index.html | 72 + doc/gcd/Jamfile.v2 | 70 + doc/gcd/html/gcd_and_lcm/gcd_lcm.html | 61 + .../gcd_and_lcm/gcd_lcm/compile_time.html | 101 + doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html | 47 + doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html | 49 + .../gcd_lcm/gcd_function_object.html | 77 + doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html | 52 + doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html | 53 + .../gcd_and_lcm/gcd_lcm/introduction.html | 49 + .../gcd_lcm/lcm_function_object.html | 80 + .../html/gcd_and_lcm/gcd_lcm/rationale.html | 48 + .../html/gcd_and_lcm/gcd_lcm/run_time.html | 66 + .../html/gcd_and_lcm/gcd_lcm/synopsis.html | 67 + doc/gcd/html/index.html | 72 + doc/{ => gcd}/math-gcd.qbk | 35 +- doc/html/index.html | 372 ++ doc/index.html | 5 +- doc/math-background.qbk | 89 - doc/math-octonion.qbk | 983 --- doc/math-quaternion.qbk | 899 --- doc/math-sf.qbk | 314 - doc/math.qbk | 213 +- doc/octonion/Jamfile.v2 | 70 + .../html/boost_octonions/octonions.html | 67 + .../octonions/acknowledgements.html | 49 + .../octonions/header_file.html | 45 + .../boost_octonions/octonions/history.html | 104 + .../boost_octonions/octonions/non_mem.html | 231 + .../boost_octonions/octonions/oct_create.html | 82 + .../octonions/octonion_member_functions.html | 272 + .../octonions/octonion_member_typedefs.html | 73 + .../octonions/octonion_specializations.html | 246 + .../octonions/octonion_value_operations.html | 111 + .../octonions/octonions_transcendentals.html | 156 + .../boost_octonions/octonions/overview.html | 82 + .../boost_octonions/octonions/synopsis.html | 138 + .../octonions/template_class_octonion.html | 112 + .../octonions/test_program.html | 57 + .../html/boost_octonions/octonions/to_do.html | 52 + doc/octonion/html/index.html | 78 + doc/octonion/math-octonion.qbk | 1005 +++ doc/quaternion/Jamfile.v2 | 70 + .../html/boost_quaternions/quaternions.html | 65 + .../quaternions/acknowledgements.html | 49 + .../boost_quaternions/quaternions/create.html | 118 + .../boost_quaternions/quaternions/exp.html | 53 + .../quaternions/header_file.html | 44 + .../quaternions/history.html | 105 + .../quaternions/mem_fun.html | 251 + .../quaternions/mem_typedef.html | 75 + .../quaternions/non_mem.html | 233 + .../quaternions/overview.html | 91 + .../boost_quaternions/quaternions/quat.html | 96 + .../boost_quaternions/quaternions/spec.html | 198 + .../quaternions/synopsis.html | 124 + .../quaternions/test_program.html | 58 + .../boost_quaternions/quaternions/to_do.html | 55 + .../boost_quaternions/quaternions/trans.html | 151 + .../quaternions/value_op.html | 114 + doc/quaternion/html/index.html | 77 + doc/quaternion/math-quaternion.qbk | 931 +++ doc/sf_and_dist/Jamfile.v2 | 70 + doc/sf_and_dist/background.qbk | 85 + doc/sf_and_dist/bessel_ik.qbk | 197 + doc/sf_and_dist/bessel_introduction.qbk | 124 + doc/sf_and_dist/bessel_jy.qbk | 261 + doc/sf_and_dist/bessel_spherical.qbk | 87 + doc/sf_and_dist/beta.qbk | 128 + doc/sf_and_dist/beta_derivative.qbk | 50 + doc/sf_and_dist/common_overviews.qbk | 223 + doc/sf_and_dist/concepts.qbk | 369 ++ doc/sf_and_dist/contact_info.qbk | 25 + doc/sf_and_dist/credits.qbk | 48 + doc/sf_and_dist/digamma.qbk | 144 + doc/sf_and_dist/dist_algorithms.qbk | 78 + doc/sf_and_dist/dist_reference.qbk | 128 + doc/sf_and_dist/dist_tutorial.qbk | 391 ++ doc/sf_and_dist/distributions/bernoulli.qbk | 118 + doc/sf_and_dist/distributions/beta.qbk | 280 + doc/sf_and_dist/distributions/binomial.qbk | 404 ++ .../distributions/binomial_example.qbk | 332 + doc/sf_and_dist/distributions/cauchy.qbk | 154 + doc/sf_and_dist/distributions/chi_squared.qbk | 156 + .../distributions/chi_squared_examples.qbk | 500 ++ .../distribution_construction.qbk | 17 + .../distributions/error_handling_example.qbk | 35 + doc/sf_and_dist/distributions/exponential.qbk | 101 + .../distributions/extreme_value.qbk | 114 + .../distributions/f_dist_example.qbk | 220 + .../distributions/find_location_and_scale.qbk | 39 + doc/sf_and_dist/distributions/fisher.qbk | 190 + doc/sf_and_dist/distributions/gamma.qbk | 138 + doc/sf_and_dist/distributions/lognormal.qbk | 119 + doc/sf_and_dist/distributions/nag_library.qbk | 60 + .../distributions/negative_binomial.qbk | 372 ++ .../negative_binomial_example.qbk | 192 + doc/sf_and_dist/distributions/non_members.qbk | 406 ++ doc/sf_and_dist/distributions/normal.qbk | 110 + .../distributions/normal_example.qbk | 36 + doc/sf_and_dist/distributions/pareto.qbk | 114 + doc/sf_and_dist/distributions/poisson.qbk | 103 + doc/sf_and_dist/distributions/rayleigh.qbk | 119 + doc/sf_and_dist/distributions/students_t.qbk | 171 + .../distributions/students_t_examples.qbk | 782 +++ doc/sf_and_dist/distributions/triangular.qbk | 168 + doc/sf_and_dist/distributions/uniform.qbk | 134 + doc/sf_and_dist/distributions/weibull.qbk | 127 + doc/sf_and_dist/ellint_carlson.qbk | 213 + doc/sf_and_dist/ellint_introduction.qbk | 224 + doc/sf_and_dist/ellint_legendre.qbk | 343 ++ doc/sf_and_dist/equations/bessel1.mml | 1 + doc/sf_and_dist/equations/bessel1.png | Bin 0 -> 1547 bytes doc/sf_and_dist/equations/bessel1.svg | 2 + doc/sf_and_dist/equations/bessel10.mml | 1 + doc/sf_and_dist/equations/bessel10.png | Bin 0 -> 1634 bytes doc/sf_and_dist/equations/bessel10.svg | 2 + doc/sf_and_dist/equations/bessel11.mml | 1 + doc/sf_and_dist/equations/bessel11.png | Bin 0 -> 1638 bytes doc/sf_and_dist/equations/bessel11.svg | 2 + doc/sf_and_dist/equations/bessel12.mml | 1 + doc/sf_and_dist/equations/bessel12.png | Bin 0 -> 4278 bytes doc/sf_and_dist/equations/bessel12.svg | 2 + doc/sf_and_dist/equations/bessel13.mml | 140 + doc/sf_and_dist/equations/bessel13.png | Bin 0 -> 3979 bytes doc/sf_and_dist/equations/bessel13.svg | 2 + doc/sf_and_dist/equations/bessel14.mml | 1 + doc/sf_and_dist/equations/bessel14.png | Bin 0 -> 811 bytes doc/sf_and_dist/equations/bessel14.svg | 2 + doc/sf_and_dist/equations/bessel15.mml | 1 + doc/sf_and_dist/equations/bessel15.png | Bin 0 -> 2001 bytes doc/sf_and_dist/equations/bessel15.svg | 2 + doc/sf_and_dist/equations/bessel16.mml | 1 + doc/sf_and_dist/equations/bessel16.png | Bin 0 -> 1398 bytes doc/sf_and_dist/equations/bessel16.svg | 2 + doc/sf_and_dist/equations/bessel2.mml | 1 + doc/sf_and_dist/equations/bessel2.png | Bin 0 -> 2619 bytes doc/sf_and_dist/equations/bessel2.svg | 2 + doc/sf_and_dist/equations/bessel3.mml | 1 + doc/sf_and_dist/equations/bessel3.png | Bin 0 -> 1871 bytes doc/sf_and_dist/equations/bessel3.svg | 2 + doc/sf_and_dist/equations/bessel4.mml | 1 + doc/sf_and_dist/equations/bessel4.png | Bin 0 -> 1179 bytes doc/sf_and_dist/equations/bessel4.svg | 2 + doc/sf_and_dist/equations/bessel5.mml | 1 + doc/sf_and_dist/equations/bessel5.png | Bin 0 -> 1241 bytes doc/sf_and_dist/equations/bessel5.svg | 2 + doc/sf_and_dist/equations/bessel6.mml | 1 + doc/sf_and_dist/equations/bessel6.png | Bin 0 -> 1142 bytes doc/sf_and_dist/equations/bessel6.svg | 2 + doc/sf_and_dist/equations/bessel7.mml | 1 + doc/sf_and_dist/equations/bessel7.png | Bin 0 -> 1159 bytes doc/sf_and_dist/equations/bessel7.svg | 2 + doc/sf_and_dist/equations/bessel8.mml | 1 + doc/sf_and_dist/equations/bessel8.png | Bin 0 -> 2289 bytes doc/sf_and_dist/equations/bessel8.svg | 2 + doc/sf_and_dist/equations/bessel9.mml | 1 + doc/sf_and_dist/equations/bessel9.png | Bin 0 -> 1616 bytes doc/sf_and_dist/equations/bessel9.svg | 2 + doc/sf_and_dist/equations/beta1.mml | 49 + doc/sf_and_dist/equations/beta1.png | Bin 0 -> 617 bytes doc/sf_and_dist/equations/beta1.svg | 2 + doc/sf_and_dist/equations/beta2.mml | 106 + doc/sf_and_dist/equations/beta2.png | Bin 0 -> 1116 bytes doc/sf_and_dist/equations/beta2.svg | 2 + doc/sf_and_dist/equations/beta3.mml | 128 + doc/sf_and_dist/equations/beta3.png | Bin 0 -> 1313 bytes doc/sf_and_dist/equations/beta3.svg | 2 + doc/sf_and_dist/equations/beta4.mml | 34 + doc/sf_and_dist/equations/beta4.png | Bin 0 -> 544 bytes doc/sf_and_dist/equations/beta4.svg | 2 + doc/sf_and_dist/equations/beta5.mml | 49 + doc/sf_and_dist/equations/beta5.png | Bin 0 -> 649 bytes doc/sf_and_dist/equations/beta5.svg | 2 + doc/sf_and_dist/equations/beta6.mml | 48 + doc/sf_and_dist/equations/beta6.png | Bin 0 -> 1467 bytes doc/sf_and_dist/equations/beta6.svg | 2 + doc/sf_and_dist/equations/beta7.mml | 28 + doc/sf_and_dist/equations/beta7.png | Bin 0 -> 497 bytes doc/sf_and_dist/equations/beta7.svg | 2 + doc/sf_and_dist/equations/beta8.mml | 52 + doc/sf_and_dist/equations/beta8.png | Bin 0 -> 1310 bytes doc/sf_and_dist/equations/beta8.svg | 2 + .../equations/beta_dist_kurtosis.mml | 72 + .../equations/beta_dist_kurtosis.png | Bin 0 -> 853 bytes .../equations/beta_dist_kurtosis.svg | 2 + doc/sf_and_dist/equations/binomial_ref1.mml | 212 + doc/sf_and_dist/equations/binomial_ref1.png | Bin 0 -> 1627 bytes doc/sf_and_dist/equations/binomial_ref1.svg | 2 + doc/sf_and_dist/equations/binomial_ref2.mml | 98 + doc/sf_and_dist/equations/binomial_ref2.png | Bin 0 -> 769 bytes doc/sf_and_dist/equations/binomial_ref2.svg | 2 + doc/sf_and_dist/equations/cauchy_ref1.mml | 51 + doc/sf_and_dist/equations/cauchy_ref1.png | Bin 0 -> 606 bytes doc/sf_and_dist/equations/cauchy_ref1.svg | 2 + doc/sf_and_dist/equations/chf.mml | 44 + doc/sf_and_dist/equations/chf.png | Bin 0 -> 922 bytes doc/sf_and_dist/equations/chf.svg | 2 + doc/sf_and_dist/equations/chi_squ_ref1.mml | 44 + doc/sf_and_dist/equations/chi_squ_ref1.png | Bin 0 -> 588 bytes doc/sf_and_dist/equations/chi_squ_ref1.svg | 2 + doc/sf_and_dist/equations/chi_squ_tut1.mml | 90 + doc/sf_and_dist/equations/chi_squ_tut1.png | Bin 0 -> 1204 bytes doc/sf_and_dist/equations/chi_squ_tut1.svg | 2 + doc/sf_and_dist/equations/chi_squ_tut2.mml | 24 + doc/sf_and_dist/equations/chi_squ_tut2.png | Bin 0 -> 471 bytes doc/sf_and_dist/equations/chi_squ_tut2.svg | 2 + doc/sf_and_dist/equations/chi_squ_tut3.mml | 26 + doc/sf_and_dist/equations/chi_squ_tut3.png | Bin 0 -> 501 bytes doc/sf_and_dist/equations/chi_squ_tut3.svg | 2 + doc/sf_and_dist/equations/derivative1.mml | 61 + doc/sf_and_dist/equations/derivative1.png | Bin 0 -> 766 bytes doc/sf_and_dist/equations/derivative1.svg | 2 + doc/sf_and_dist/equations/derivative2.mml | 75 + doc/sf_and_dist/equations/derivative2.png | Bin 0 -> 1185 bytes doc/sf_and_dist/equations/derivative2.svg | 2 + doc/sf_and_dist/equations/digamma1.mml | 56 + doc/sf_and_dist/equations/digamma1.png | Bin 0 -> 807 bytes doc/sf_and_dist/equations/digamma1.svg | 2 + doc/sf_and_dist/equations/digamma2.mml | 60 + doc/sf_and_dist/equations/digamma2.png | Bin 0 -> 1055 bytes doc/sf_and_dist/equations/digamma2.svg | 2 + doc/sf_and_dist/equations/digamma3.mml | 94 + doc/sf_and_dist/equations/digamma3.png | Bin 0 -> 1271 bytes doc/sf_and_dist/equations/digamma3.svg | 2 + doc/sf_and_dist/equations/dist_tutorial1.mml | 140 + doc/sf_and_dist/equations/dist_tutorial1.png | Bin 0 -> 1883 bytes doc/sf_and_dist/equations/dist_tutorial1.svg | 2 + doc/sf_and_dist/equations/dist_tutorial2.mml | 55 + doc/sf_and_dist/equations/dist_tutorial2.png | Bin 0 -> 817 bytes doc/sf_and_dist/equations/dist_tutorial2.svg | 2 + doc/sf_and_dist/equations/dist_tutorial3.mml | 114 + doc/sf_and_dist/equations/dist_tutorial3.png | Bin 0 -> 1436 bytes doc/sf_and_dist/equations/dist_tutorial3.svg | 2 + doc/sf_and_dist/equations/dist_tutorial4.mml | 32 + doc/sf_and_dist/equations/dist_tutorial4.png | Bin 0 -> 630 bytes doc/sf_and_dist/equations/dist_tutorial4.svg | 2 + doc/sf_and_dist/equations/ellint1.mml | 1 + doc/sf_and_dist/equations/ellint1.png | Bin 0 -> 998 bytes doc/sf_and_dist/equations/ellint1.svg | 2 + doc/sf_and_dist/equations/ellint10.mml | 1 + doc/sf_and_dist/equations/ellint10.png | Bin 0 -> 2420 bytes doc/sf_and_dist/equations/ellint10.svg | 2 + doc/sf_and_dist/equations/ellint11.mml | 1 + doc/sf_and_dist/equations/ellint11.png | Bin 0 -> 2570 bytes doc/sf_and_dist/equations/ellint11.svg | 2 + doc/sf_and_dist/equations/ellint12.mml | 1 + doc/sf_and_dist/equations/ellint12.png | Bin 0 -> 2046 bytes doc/sf_and_dist/equations/ellint12.svg | 2 + doc/sf_and_dist/equations/ellint13.mml | 1 + doc/sf_and_dist/equations/ellint13.png | Bin 0 -> 3412 bytes doc/sf_and_dist/equations/ellint13.svg | 2 + doc/sf_and_dist/equations/ellint14.mml | 1 + doc/sf_and_dist/equations/ellint14.png | Bin 0 -> 6415 bytes doc/sf_and_dist/equations/ellint14.svg | 2 + doc/sf_and_dist/equations/ellint15.mml | 1 + doc/sf_and_dist/equations/ellint15.png | Bin 0 -> 3809 bytes doc/sf_and_dist/equations/ellint15.svg | 2 + doc/sf_and_dist/equations/ellint16.mml | 1 + doc/sf_and_dist/equations/ellint16.png | Bin 0 -> 1052 bytes doc/sf_and_dist/equations/ellint16.svg | 2 + doc/sf_and_dist/equations/ellint17.mml | 173 + doc/sf_and_dist/equations/ellint17.png | Bin 0 -> 1771 bytes doc/sf_and_dist/equations/ellint17.svg | 2 + doc/sf_and_dist/equations/ellint18.mml | 53 + doc/sf_and_dist/equations/ellint18.png | Bin 0 -> 595 bytes doc/sf_and_dist/equations/ellint18.svg | 2 + doc/sf_and_dist/equations/ellint19.mml | 119 + doc/sf_and_dist/equations/ellint19.png | Bin 0 -> 1201 bytes doc/sf_and_dist/equations/ellint19.svg | 2 + doc/sf_and_dist/equations/ellint2.mml | 1 + doc/sf_and_dist/equations/ellint2.png | Bin 0 -> 1901 bytes doc/sf_and_dist/equations/ellint2.svg | 2 + doc/sf_and_dist/equations/ellint20.mml | 30 + doc/sf_and_dist/equations/ellint20.png | Bin 0 -> 421 bytes doc/sf_and_dist/equations/ellint20.svg | 2 + doc/sf_and_dist/equations/ellint21.mml | 175 + doc/sf_and_dist/equations/ellint21.png | Bin 0 -> 1800 bytes doc/sf_and_dist/equations/ellint21.svg | 2 + doc/sf_and_dist/equations/ellint22.mml | 57 + doc/sf_and_dist/equations/ellint22.png | Bin 0 -> 627 bytes doc/sf_and_dist/equations/ellint22.svg | 2 + doc/sf_and_dist/equations/ellint23.mml | 130 + doc/sf_and_dist/equations/ellint23.png | Bin 0 -> 1268 bytes doc/sf_and_dist/equations/ellint23.svg | 2 + doc/sf_and_dist/equations/ellint24.mml | 224 + doc/sf_and_dist/equations/ellint24.png | Bin 0 -> 2448 bytes doc/sf_and_dist/equations/ellint24.svg | 2 + doc/sf_and_dist/equations/ellint25.mml | 93 + doc/sf_and_dist/equations/ellint25.png | Bin 0 -> 1048 bytes doc/sf_and_dist/equations/ellint25.svg | 2 + doc/sf_and_dist/equations/ellint26.mml | 55 + doc/sf_and_dist/equations/ellint26.png | Bin 0 -> 676 bytes doc/sf_and_dist/equations/ellint26.svg | 2 + doc/sf_and_dist/equations/ellint3.mml | 1 + doc/sf_and_dist/equations/ellint3.png | Bin 0 -> 1903 bytes doc/sf_and_dist/equations/ellint3.svg | 2 + doc/sf_and_dist/equations/ellint4.mml | 1 + doc/sf_and_dist/equations/ellint4.png | Bin 0 -> 2305 bytes doc/sf_and_dist/equations/ellint4.svg | 2 + doc/sf_and_dist/equations/ellint5.mml | 1 + doc/sf_and_dist/equations/ellint5.png | Bin 0 -> 948 bytes doc/sf_and_dist/equations/ellint5.svg | 2 + doc/sf_and_dist/equations/ellint6.mml | 62 + doc/sf_and_dist/equations/ellint6.png | Bin 0 -> 2242 bytes doc/sf_and_dist/equations/ellint6.svg | 2 + doc/sf_and_dist/equations/ellint7.mml | 61 + doc/sf_and_dist/equations/ellint7.png | Bin 0 -> 2167 bytes doc/sf_and_dist/equations/ellint7.svg | 2 + doc/sf_and_dist/equations/ellint8.mml | 78 + doc/sf_and_dist/equations/ellint8.png | Bin 0 -> 2575 bytes doc/sf_and_dist/equations/ellint8.svg | 2 + doc/sf_and_dist/equations/ellint9.mml | 1 + doc/sf_and_dist/equations/ellint9.png | Bin 0 -> 2208 bytes doc/sf_and_dist/equations/ellint9.svg | 2 + doc/sf_and_dist/equations/erf1.mml | 41 + doc/sf_and_dist/equations/erf1.png | Bin 0 -> 1376 bytes doc/sf_and_dist/equations/erf1.svg | 2 + doc/sf_and_dist/equations/erf2.mml | 22 + doc/sf_and_dist/equations/erf2.png | Bin 0 -> 1152 bytes doc/sf_and_dist/equations/erf2.svg | 2 + doc/sf_and_dist/equations/error1.mml | 31 + doc/sf_and_dist/equations/error1.png | Bin 0 -> 1265 bytes doc/sf_and_dist/equations/error1.svg | 2 + doc/sf_and_dist/equations/error2.mml | 15 + doc/sf_and_dist/equations/error2.png | Bin 0 -> 264 bytes doc/sf_and_dist/equations/error2.svg | 2 + .../equations/exponential_dist_ref1.mml | 23 + .../equations/exponential_dist_ref1.png | Bin 0 -> 327 bytes .../equations/exponential_dist_ref1.svg | 2 + doc/sf_and_dist/equations/fisher_pdf.mml | 91 + doc/sf_and_dist/equations/fisher_pdf.png | Bin 0 -> 766 bytes doc/sf_and_dist/equations/fisher_pdf.svg | 2 + doc/sf_and_dist/equations/fraction1.mml | 61 + doc/sf_and_dist/equations/fraction1.png | Bin 0 -> 1451 bytes doc/sf_and_dist/equations/fraction1.svg | 2 + doc/sf_and_dist/equations/fraction2.mml | 56 + doc/sf_and_dist/equations/fraction2.png | Bin 0 -> 1397 bytes doc/sf_and_dist/equations/fraction2.svg | 2 + doc/sf_and_dist/equations/fraction3.mml | 38 + doc/sf_and_dist/equations/fraction3.png | Bin 0 -> 1407 bytes doc/sf_and_dist/equations/fraction3.svg | 2 + doc/sf_and_dist/equations/fraction4.mml | 62 + doc/sf_and_dist/equations/fraction4.png | Bin 0 -> 1547 bytes doc/sf_and_dist/equations/fraction4.svg | 2 + doc/sf_and_dist/equations/gamm1.mml | 43 + doc/sf_and_dist/equations/gamm1.png | Bin 0 -> 591 bytes doc/sf_and_dist/equations/gamm1.svg | 2 + doc/sf_and_dist/equations/gamm2.mml | 130 + doc/sf_and_dist/equations/gamm2.png | Bin 0 -> 2300 bytes doc/sf_and_dist/equations/gamm2.svg | 2 + doc/sf_and_dist/equations/gamm3.mml | 25 + doc/sf_and_dist/equations/gamm3.png | Bin 0 -> 1177 bytes doc/sf_and_dist/equations/gamm3.svg | 2 + doc/sf_and_dist/equations/gamm4.mml | 28 + doc/sf_and_dist/equations/gamm4.png | Bin 0 -> 1174 bytes doc/sf_and_dist/equations/gamm4.svg | 2 + doc/sf_and_dist/equations/gamm5.mml | 33 + doc/sf_and_dist/equations/gamm5.png | Bin 0 -> 1303 bytes doc/sf_and_dist/equations/gamm5.svg | 2 + doc/sf_and_dist/equations/gamma_dist_ref1.mml | 50 + doc/sf_and_dist/equations/gamma_dist_ref1.png | Bin 0 -> 570 bytes doc/sf_and_dist/equations/gamma_dist_ref1.svg | 2 + doc/sf_and_dist/equations/gamma_dist_ref2.mml | 50 + doc/sf_and_dist/equations/gamma_dist_ref2.png | Bin 0 -> 556 bytes doc/sf_and_dist/equations/gamma_dist_ref2.svg | 2 + doc/sf_and_dist/equations/gamma_ratio0.mml | 28 + doc/sf_and_dist/equations/gamma_ratio0.png | Bin 0 -> 739 bytes doc/sf_and_dist/equations/gamma_ratio0.svg | 2 + doc/sf_and_dist/equations/gamma_ratio1.mml | 34 + doc/sf_and_dist/equations/gamma_ratio1.png | Bin 0 -> 966 bytes doc/sf_and_dist/equations/gamma_ratio1.svg | 2 + doc/sf_and_dist/equations/hazard.mml | 43 + doc/sf_and_dist/equations/hazard.png | Bin 0 -> 826 bytes doc/sf_and_dist/equations/hazard.svg | 2 + doc/sf_and_dist/equations/hermite_0.mml | 67 + doc/sf_and_dist/equations/hermite_0.png | Bin 0 -> 666 bytes doc/sf_and_dist/equations/hermite_0.svg | 2 + doc/sf_and_dist/equations/hermite_1.mml | 48 + doc/sf_and_dist/equations/hermite_1.png | Bin 0 -> 458 bytes doc/sf_and_dist/equations/hermite_1.svg | 2 + doc/sf_and_dist/equations/hypot.mml | 29 + doc/sf_and_dist/equations/hypot.png | Bin 0 -> 426 bytes doc/sf_and_dist/equations/hypot.svg | 2 + doc/sf_and_dist/equations/hypot2.mml | 34 + doc/sf_and_dist/equations/hypot2.png | Bin 0 -> 532 bytes doc/sf_and_dist/equations/hypot2.svg | 2 + doc/sf_and_dist/equations/ibeta1.mml | 63 + doc/sf_and_dist/equations/ibeta1.png | Bin 0 -> 1536 bytes doc/sf_and_dist/equations/ibeta1.svg | 2 + doc/sf_and_dist/equations/ibeta10.mml | 202 + doc/sf_and_dist/equations/ibeta10.png | Bin 0 -> 1837 bytes doc/sf_and_dist/equations/ibeta10.svg | 2 + doc/sf_and_dist/equations/ibeta11.mml | 135 + doc/sf_and_dist/equations/ibeta11.png | Bin 0 -> 1465 bytes doc/sf_and_dist/equations/ibeta11.svg | 2 + doc/sf_and_dist/equations/ibeta12.mml | 77 + doc/sf_and_dist/equations/ibeta12.png | Bin 0 -> 1425 bytes doc/sf_and_dist/equations/ibeta12.svg | 2 + doc/sf_and_dist/equations/ibeta2.mml | 49 + doc/sf_and_dist/equations/ibeta2.png | Bin 0 -> 1346 bytes doc/sf_and_dist/equations/ibeta2.svg | 2 + doc/sf_and_dist/equations/ibeta3.mml | 76 + doc/sf_and_dist/equations/ibeta3.png | Bin 0 -> 1668 bytes doc/sf_and_dist/equations/ibeta3.svg | 2 + doc/sf_and_dist/equations/ibeta4.mml | 49 + doc/sf_and_dist/equations/ibeta4.png | Bin 0 -> 1343 bytes doc/sf_and_dist/equations/ibeta4.svg | 2 + doc/sf_and_dist/equations/ibeta5.mml | 185 + doc/sf_and_dist/equations/ibeta5.png | Bin 0 -> 1676 bytes doc/sf_and_dist/equations/ibeta5.svg | 2 + doc/sf_and_dist/equations/ibeta6.mml | 247 + doc/sf_and_dist/equations/ibeta6.png | Bin 0 -> 3263 bytes doc/sf_and_dist/equations/ibeta6.svg | 2 + doc/sf_and_dist/equations/ibeta7.mml | 80 + doc/sf_and_dist/equations/ibeta7.png | Bin 0 -> 1099 bytes doc/sf_and_dist/equations/ibeta7.svg | 2 + doc/sf_and_dist/equations/ibeta8.mml | 243 + doc/sf_and_dist/equations/ibeta8.png | Bin 0 -> 4774 bytes doc/sf_and_dist/equations/ibeta8.svg | 2 + doc/sf_and_dist/equations/ibeta9.mml | 109 + doc/sf_and_dist/equations/ibeta9.svg | 2 + doc/sf_and_dist/equations/ibeta_inv1.mml | 155 + doc/sf_and_dist/equations/ibeta_inv1.png | Bin 0 -> 1282 bytes doc/sf_and_dist/equations/ibeta_inv1.svg | 2 + doc/sf_and_dist/equations/ibeta_inv2.mml | 28 + doc/sf_and_dist/equations/ibeta_inv2.png | Bin 0 -> 522 bytes doc/sf_and_dist/equations/ibeta_inv2.svg | 2 + doc/sf_and_dist/equations/ibeta_inv3.mml | 33 + doc/sf_and_dist/equations/ibeta_inv3.png | Bin 0 -> 671 bytes doc/sf_and_dist/equations/ibeta_inv3.svg | 2 + doc/sf_and_dist/equations/ibeta_inv4.mml | 47 + doc/sf_and_dist/equations/ibeta_inv4.png | Bin 0 -> 480 bytes doc/sf_and_dist/equations/ibeta_inv4.svg | 2 + doc/sf_and_dist/equations/ibeta_inv5.mml | 50 + doc/sf_and_dist/equations/ibeta_inv5.png | Bin 0 -> 672 bytes doc/sf_and_dist/equations/ibeta_inv5.svg | 2 + doc/sf_and_dist/equations/ibeta_inv6.mml | 53 + doc/sf_and_dist/equations/ibeta_inv6.png | Bin 0 -> 529 bytes doc/sf_and_dist/equations/ibeta_inv6.svg | 2 + doc/sf_and_dist/equations/ibeta_inv7.mml | 59 + doc/sf_and_dist/equations/ibeta_inv7.png | Bin 0 -> 779 bytes doc/sf_and_dist/equations/ibeta_inv7.svg | 2 + doc/sf_and_dist/equations/ibeta_inv8.mml | 37 + doc/sf_and_dist/equations/ibeta_inv8.png | Bin 0 -> 544 bytes doc/sf_and_dist/equations/ibeta_inv8.svg | 2 + doc/sf_and_dist/equations/igamma1.mml | 51 + doc/sf_and_dist/equations/igamma1.png | Bin 0 -> 1506 bytes doc/sf_and_dist/equations/igamma1.svg | 2 + doc/sf_and_dist/equations/igamma10.mml | 57 + doc/sf_and_dist/equations/igamma10.png | Bin 0 -> 1557 bytes doc/sf_and_dist/equations/igamma10.svg | 2 + doc/sf_and_dist/equations/igamma11.mml | 124 + doc/sf_and_dist/equations/igamma11.png | Bin 0 -> 1542 bytes doc/sf_and_dist/equations/igamma11.svg | 2 + doc/sf_and_dist/equations/igamma11b.mml | 104 + doc/sf_and_dist/equations/igamma11b.png | Bin 0 -> 2147 bytes doc/sf_and_dist/equations/igamma11b.svg | 2 + doc/sf_and_dist/equations/igamma12.mml | 81 + doc/sf_and_dist/equations/igamma12.png | Bin 0 -> 1646 bytes doc/sf_and_dist/equations/igamma12.svg | 2 + doc/sf_and_dist/equations/igamma13.mml | 104 + doc/sf_and_dist/equations/igamma13.png | Bin 0 -> 2086 bytes doc/sf_and_dist/equations/igamma13.svg | 2 + doc/sf_and_dist/equations/igamma16.mml | 61 + doc/sf_and_dist/equations/igamma16.png | Bin 0 -> 1081 bytes doc/sf_and_dist/equations/igamma16.svg | 2 + doc/sf_and_dist/equations/igamma17.mml | 61 + doc/sf_and_dist/equations/igamma17.png | Bin 0 -> 1095 bytes doc/sf_and_dist/equations/igamma17.svg | 2 + doc/sf_and_dist/equations/igamma18.mml | 57 + doc/sf_and_dist/equations/igamma18.png | Bin 0 -> 934 bytes doc/sf_and_dist/equations/igamma18.svg | 2 + doc/sf_and_dist/equations/igamma19.mml | 75 + doc/sf_and_dist/equations/igamma19.png | Bin 0 -> 1547 bytes doc/sf_and_dist/equations/igamma19.svg | 2 + doc/sf_and_dist/equations/igamma1f.mml | 57 + doc/sf_and_dist/equations/igamma1f.png | Bin 0 -> 920 bytes doc/sf_and_dist/equations/igamma1f.svg | 2 + doc/sf_and_dist/equations/igamma2.mml | 51 + doc/sf_and_dist/equations/igamma2.png | Bin 0 -> 1553 bytes doc/sf_and_dist/equations/igamma2.svg | 2 + doc/sf_and_dist/equations/igamma2f.mml | 98 + doc/sf_and_dist/equations/igamma2f.png | Bin 0 -> 1552 bytes doc/sf_and_dist/equations/igamma2f.svg | 2 + doc/sf_and_dist/equations/igamma3.mml | 85 + doc/sf_and_dist/equations/igamma3.png | Bin 0 -> 878 bytes doc/sf_and_dist/equations/igamma3.svg | 2 + doc/sf_and_dist/equations/igamma4.mml | 85 + doc/sf_and_dist/equations/igamma4.png | Bin 0 -> 878 bytes doc/sf_and_dist/equations/igamma4.svg | 2 + doc/sf_and_dist/equations/igamma5.mml | 26 + doc/sf_and_dist/equations/igamma5.png | Bin 0 -> 1172 bytes doc/sf_and_dist/equations/igamma5.svg | 2 + doc/sf_and_dist/equations/igamma6.mml | 31 + doc/sf_and_dist/equations/igamma6.png | Bin 0 -> 1210 bytes doc/sf_and_dist/equations/igamma6.svg | 2 + doc/sf_and_dist/equations/igamma7.mml | 70 + doc/sf_and_dist/equations/igamma7.png | Bin 0 -> 1470 bytes doc/sf_and_dist/equations/igamma7.svg | 2 + doc/sf_and_dist/equations/igamma8.mml | 108 + doc/sf_and_dist/equations/igamma8.png | Bin 0 -> 1860 bytes doc/sf_and_dist/equations/igamma8.svg | 2 + doc/sf_and_dist/equations/igamma9.mml | 110 + doc/sf_and_dist/equations/igamma9.png | Bin 0 -> 1882 bytes doc/sf_and_dist/equations/igamma9.svg | 2 + doc/sf_and_dist/equations/laguerre_0.mml | 70 + doc/sf_and_dist/equations/laguerre_0.png | Bin 0 -> 685 bytes doc/sf_and_dist/equations/laguerre_0.svg | 2 + doc/sf_and_dist/equations/laguerre_1.mml | 70 + doc/sf_and_dist/equations/laguerre_1.png | Bin 0 -> 721 bytes doc/sf_and_dist/equations/laguerre_1.svg | 2 + doc/sf_and_dist/equations/laguerre_2.mml | 66 + doc/sf_and_dist/equations/laguerre_2.png | Bin 0 -> 625 bytes doc/sf_and_dist/equations/laguerre_2.svg | 2 + doc/sf_and_dist/equations/laguerre_3.mml | 78 + doc/sf_and_dist/equations/laguerre_3.png | Bin 0 -> 683 bytes doc/sf_and_dist/equations/laguerre_3.svg | 2 + doc/sf_and_dist/equations/lanczos0.mml | 62 + doc/sf_and_dist/equations/lanczos0.png | Bin 0 -> 1485 bytes doc/sf_and_dist/equations/lanczos0.svg | 2 + doc/sf_and_dist/equations/lanczos0a.mml | 75 + doc/sf_and_dist/equations/lanczos0a.png | Bin 0 -> 1602 bytes doc/sf_and_dist/equations/lanczos0a.svg | 2 + doc/sf_and_dist/equations/lanczos0b.mml | 105 + doc/sf_and_dist/equations/lanczos0b.png | Bin 0 -> 2051 bytes doc/sf_and_dist/equations/lanczos0b.svg | 2 + doc/sf_and_dist/equations/lanczos1.mml | 50 + doc/sf_and_dist/equations/lanczos1.png | Bin 0 -> 1463 bytes doc/sf_and_dist/equations/lanczos1.svg | 2 + doc/sf_and_dist/equations/lanczos2.mml | 46 + doc/sf_and_dist/equations/lanczos2.png | Bin 0 -> 1483 bytes doc/sf_and_dist/equations/lanczos2.svg | 2 + doc/sf_and_dist/equations/lanczos3.mml | 110 + doc/sf_and_dist/equations/lanczos3.png | Bin 0 -> 1903 bytes doc/sf_and_dist/equations/lanczos3.svg | 2 + doc/sf_and_dist/equations/lanczos4.mml | 107 + doc/sf_and_dist/equations/lanczos4.png | Bin 0 -> 2005 bytes doc/sf_and_dist/equations/lanczos4.svg | 2 + doc/sf_and_dist/equations/lanczos5.mml | 134 + doc/sf_and_dist/equations/lanczos5.png | Bin 0 -> 2358 bytes doc/sf_and_dist/equations/lanczos5.svg | 2 + doc/sf_and_dist/equations/lanczos6.mml | 60 + doc/sf_and_dist/equations/lanczos6.png | Bin 0 -> 1487 bytes doc/sf_and_dist/equations/lanczos6.svg | 2 + doc/sf_and_dist/equations/lanczos7.mml | 47 + doc/sf_and_dist/equations/lanczos7.png | Bin 0 -> 1433 bytes doc/sf_and_dist/equations/lanczos7.svg | 2 + doc/sf_and_dist/equations/legendre_0.mml | 75 + doc/sf_and_dist/equations/legendre_0.png | Bin 0 -> 830 bytes doc/sf_and_dist/equations/legendre_0.svg | 2 + doc/sf_and_dist/equations/legendre_1.mml | 84 + doc/sf_and_dist/equations/legendre_1.png | Bin 0 -> 854 bytes doc/sf_and_dist/equations/legendre_1.svg | 2 + doc/sf_and_dist/equations/legendre_2.mml | 103 + doc/sf_and_dist/equations/legendre_2.png | Bin 0 -> 1068 bytes doc/sf_and_dist/equations/legendre_2.svg | 2 + doc/sf_and_dist/equations/legendre_3.mml | 106 + doc/sf_and_dist/equations/legendre_3.png | Bin 0 -> 783 bytes doc/sf_and_dist/equations/legendre_3.svg | 2 + doc/sf_and_dist/equations/legendre_4.mml | 65 + doc/sf_and_dist/equations/legendre_4.png | Bin 0 -> 592 bytes doc/sf_and_dist/equations/legendre_4.svg | 2 + doc/sf_and_dist/equations/legendre_5.mml | 80 + doc/sf_and_dist/equations/legendre_5.png | Bin 0 -> 747 bytes doc/sf_and_dist/equations/legendre_5.svg | 2 + doc/sf_and_dist/equations/lgamm1.mml | 21 + doc/sf_and_dist/equations/lgamm1.png | Bin 0 -> 381 bytes doc/sf_and_dist/equations/lgamm1.svg | 2 + doc/sf_and_dist/equations/lgamm2.mml | 137 + doc/sf_and_dist/equations/lgamm2.png | Bin 0 -> 2409 bytes doc/sf_and_dist/equations/lgamm2.svg | 2 + doc/sf_and_dist/equations/lgamm3.mml | 52 + doc/sf_and_dist/equations/lgamm3.png | Bin 0 -> 1380 bytes doc/sf_and_dist/equations/lgamm3.svg | 2 + doc/sf_and_dist/equations/lgamm4.mml | 60 + doc/sf_and_dist/equations/lgamm4.png | Bin 0 -> 1579 bytes doc/sf_and_dist/equations/lgamm4.svg | 2 + doc/sf_and_dist/equations/lgamm5.mml | 157 + doc/sf_and_dist/equations/lgamm5.png | Bin 0 -> 2667 bytes doc/sf_and_dist/equations/lgamm5.svg | 2 + doc/sf_and_dist/equations/lgamm6.mml | 166 + doc/sf_and_dist/equations/lgamm6.png | Bin 0 -> 3005 bytes doc/sf_and_dist/equations/lgamm6.svg | 2 + doc/sf_and_dist/equations/log1pseries.mml | 47 + doc/sf_and_dist/equations/log1pseries.png | Bin 0 -> 1500 bytes doc/sf_and_dist/equations/log1pseries.svg | 2 + doc/sf_and_dist/equations/lognormal_ref.mml | 55 + doc/sf_and_dist/equations/lognormal_ref.png | Bin 0 -> 543 bytes doc/sf_and_dist/equations/lognormal_ref.svg | 2 + doc/sf_and_dist/equations/mbessel1.mml | 1 + doc/sf_and_dist/equations/mbessel1.png | Bin 0 -> 1556 bytes doc/sf_and_dist/equations/mbessel1.svg | 2 + doc/sf_and_dist/equations/mbessel10.mml | 1 + doc/sf_and_dist/equations/mbessel10.png | Bin 0 -> 786 bytes doc/sf_and_dist/equations/mbessel10.svg | 2 + doc/sf_and_dist/equations/mbessel11.mml | 1 + doc/sf_and_dist/equations/mbessel11.png | Bin 0 -> 1674 bytes doc/sf_and_dist/equations/mbessel11.svg | 2 + doc/sf_and_dist/equations/mbessel12.mml | 1 + doc/sf_and_dist/equations/mbessel12.png | Bin 0 -> 2551 bytes doc/sf_and_dist/equations/mbessel12.svg | 2 + doc/sf_and_dist/equations/mbessel13.mml | 1 + doc/sf_and_dist/equations/mbessel13.png | Bin 0 -> 3200 bytes doc/sf_and_dist/equations/mbessel13.svg | 2 + doc/sf_and_dist/equations/mbessel14.mml | 1 + doc/sf_and_dist/equations/mbessel14.png | Bin 0 -> 1473 bytes doc/sf_and_dist/equations/mbessel14.svg | 2 + doc/sf_and_dist/equations/mbessel15.mml | 1 + doc/sf_and_dist/equations/mbessel15.png | Bin 0 -> 2049 bytes doc/sf_and_dist/equations/mbessel15.svg | 2 + doc/sf_and_dist/equations/mbessel16.mml | 1 + doc/sf_and_dist/equations/mbessel16.png | Bin 0 -> 1344 bytes doc/sf_and_dist/equations/mbessel16.svg | 2 + doc/sf_and_dist/equations/mbessel2.mml | 1 + doc/sf_and_dist/equations/mbessel2.png | Bin 0 -> 2593 bytes doc/sf_and_dist/equations/mbessel2.svg | 2 + doc/sf_and_dist/equations/mbessel3.mml | 1 + doc/sf_and_dist/equations/mbessel3.png | Bin 0 -> 1677 bytes doc/sf_and_dist/equations/mbessel3.svg | 2 + doc/sf_and_dist/equations/mbessel4.mml | 1 + doc/sf_and_dist/equations/mbessel4.png | Bin 0 -> 1276 bytes doc/sf_and_dist/equations/mbessel4.svg | 2 + doc/sf_and_dist/equations/mbessel5.mml | 1 + doc/sf_and_dist/equations/mbessel5.png | Bin 0 -> 1342 bytes doc/sf_and_dist/equations/mbessel5.svg | 2 + doc/sf_and_dist/equations/mbessel6.mml | 1 + doc/sf_and_dist/equations/mbessel6.png | Bin 0 -> 1153 bytes doc/sf_and_dist/equations/mbessel6.svg | 2 + doc/sf_and_dist/equations/mbessel7.mml | 1 + doc/sf_and_dist/equations/mbessel7.png | Bin 0 -> 1214 bytes doc/sf_and_dist/equations/mbessel7.svg | 2 + doc/sf_and_dist/equations/mbessel8.mml | 1 + doc/sf_and_dist/equations/mbessel8.png | Bin 0 -> 2204 bytes doc/sf_and_dist/equations/mbessel8.svg | 2 + doc/sf_and_dist/equations/mbessel9.mml | 1 + doc/sf_and_dist/equations/mbessel9.png | Bin 0 -> 1597 bytes doc/sf_and_dist/equations/mbessel9.svg | 2 + .../equations/neg_binomial_ref.mml | 54 + .../equations/neg_binomial_ref.png | Bin 0 -> 597 bytes .../equations/neg_binomial_ref.svg | 2 + doc/sf_and_dist/equations/normal_ref1.mml | 57 + doc/sf_and_dist/equations/normal_ref1.png | Bin 0 -> 555 bytes doc/sf_and_dist/equations/normal_ref1.svg | 2 + doc/sf_and_dist/equations/poisson_ref1.mml | 35 + doc/sf_and_dist/equations/poisson_ref1.png | Bin 0 -> 403 bytes doc/sf_and_dist/equations/poisson_ref1.svg | 2 + doc/sf_and_dist/equations/roots1.mml | 40 + doc/sf_and_dist/equations/roots1.png | Bin 0 -> 594 bytes doc/sf_and_dist/equations/roots1.svg | 2 + doc/sf_and_dist/equations/roots2.mml | 70 + doc/sf_and_dist/equations/roots2.png | Bin 0 -> 920 bytes doc/sf_and_dist/equations/roots2.svg | 2 + doc/sf_and_dist/equations/roots3.mml | 81 + doc/sf_and_dist/equations/roots3.png | Bin 0 -> 955 bytes doc/sf_and_dist/equations/roots3.svg | 2 + doc/sf_and_dist/equations/roots4.mml | 67 + doc/sf_and_dist/equations/roots4.png | Bin 0 -> 825 bytes doc/sf_and_dist/equations/roots4.svg | 2 + doc/sf_and_dist/equations/sbessel1.mml | 1 + doc/sf_and_dist/equations/sbessel1.png | Bin 0 -> 1836 bytes doc/sf_and_dist/equations/sbessel1.svg | 2 + doc/sf_and_dist/equations/sbessel2.mml | 1 + doc/sf_and_dist/equations/sbessel2.png | Bin 0 -> 2178 bytes doc/sf_and_dist/equations/sbessel2.svg | 2 + doc/sf_and_dist/equations/sbessel3.mml | 1 + doc/sf_and_dist/equations/sbessel3.png | Bin 0 -> 1855 bytes doc/sf_and_dist/equations/sbessel3.svg | 2 + doc/sf_and_dist/equations/sbessel4.mml | 1 + doc/sf_and_dist/equations/sbessel4.png | Bin 0 -> 2138 bytes doc/sf_and_dist/equations/sbessel4.svg | 2 + doc/sf_and_dist/equations/sbessel5.mml | 1 + doc/sf_and_dist/equations/sbessel5.png | Bin 0 -> 2827 bytes doc/sf_and_dist/equations/sbessel5.svg | 2 + .../equations/special_functions_blurb1.mml | 35 + .../equations/special_functions_blurb1.png | Bin 0 -> 2183 bytes .../equations/special_functions_blurb1.svg | 2 + .../equations/special_functions_blurb15.mml | 36 + .../equations/special_functions_blurb15.png | Bin 0 -> 2122 bytes .../equations/special_functions_blurb15.svg | 2 + .../equations/special_functions_blurb17.mml | 31 + .../equations/special_functions_blurb17.png | Bin 0 -> 2149 bytes .../equations/special_functions_blurb17.svg | 2 + .../equations/special_functions_blurb18.mml | 31 + .../equations/special_functions_blurb18.png | Bin 0 -> 2171 bytes .../equations/special_functions_blurb18.svg | 2 + .../equations/special_functions_blurb20.mml | 42 + .../equations/special_functions_blurb20.png | Bin 0 -> 1935 bytes .../equations/special_functions_blurb20.svg | 2 + .../equations/special_functions_blurb22.mml | 43 + .../equations/special_functions_blurb22.png | Bin 0 -> 2044 bytes .../equations/special_functions_blurb22.svg | 2 + .../equations/special_functions_blurb5.mml | 35 + .../equations/special_functions_blurb5.png | Bin 0 -> 2043 bytes .../equations/special_functions_blurb5.svg | 2 + .../equations/special_functions_blurb6.mml | 33 + .../equations/special_functions_blurb6.png | Bin 0 -> 1885 bytes .../equations/special_functions_blurb6.svg | 2 + .../equations/special_functions_blurb7.mml | 32 + .../equations/special_functions_blurb7.png | Bin 0 -> 1857 bytes .../equations/special_functions_blurb7.svg | 2 + doc/sf_and_dist/equations/spherical_0.mml | 81 + doc/sf_and_dist/equations/spherical_0.png | Bin 0 -> 874 bytes doc/sf_and_dist/equations/spherical_0.svg | 2 + doc/sf_and_dist/equations/spherical_1.mml | 85 + doc/sf_and_dist/equations/spherical_1.png | Bin 0 -> 974 bytes doc/sf_and_dist/equations/spherical_1.svg | 2 + doc/sf_and_dist/equations/spherical_2.mml | 85 + doc/sf_and_dist/equations/spherical_2.png | Bin 0 -> 975 bytes doc/sf_and_dist/equations/spherical_2.svg | 2 + doc/sf_and_dist/equations/students_t_dist.mml | 24 + doc/sf_and_dist/equations/students_t_dist.png | Bin 0 -> 465 bytes doc/sf_and_dist/equations/students_t_dist.svg | 2 + doc/sf_and_dist/equations/students_t_ref1.mml | 75 + doc/sf_and_dist/equations/students_t_ref1.png | Bin 0 -> 701 bytes doc/sf_and_dist/equations/students_t_ref1.svg | 2 + doc/sf_and_dist/erf.qbk | 213 + doc/sf_and_dist/erf_inv.qbk | 132 + doc/sf_and_dist/error.qbk | 71 + doc/sf_and_dist/error_handling.qbk | 318 + doc/sf_and_dist/factorials.qbk | 301 + doc/sf_and_dist/fpclassify.qbk | 99 + doc/sf_and_dist/fraction.qbk | 157 + doc/sf_and_dist/gamma_derivatives.qbk | 54 + doc/sf_and_dist/gamma_ratios.qbk | 112 + doc/sf_and_dist/graphs/bernoulli_cdf.png | Bin 0 -> 16479 bytes doc/sf_and_dist/graphs/bernoulli_pdf.png | Bin 0 -> 14564 bytes doc/sf_and_dist/graphs/bessel_i.png | Bin 0 -> 6050 bytes doc/sf_and_dist/graphs/bessel_jn.png | Bin 0 -> 13223 bytes doc/sf_and_dist/graphs/bessel_jv.png | Bin 0 -> 8873 bytes doc/sf_and_dist/graphs/bessel_k.png | Bin 0 -> 4512 bytes doc/sf_and_dist/graphs/bessel_yv.png | Bin 0 -> 5202 bytes doc/sf_and_dist/graphs/beta-small.png | Bin 0 -> 5587 bytes doc/sf_and_dist/graphs/beta.png | Bin 0 -> 5778 bytes doc/sf_and_dist/graphs/beta_dist.png | Bin 0 -> 6265 bytes doc/sf_and_dist/graphs/beta_pdf.png | Bin 0 -> 127461 bytes doc/sf_and_dist/graphs/binomial_pdf.png | Bin 0 -> 5022 bytes doc/sf_and_dist/graphs/binomial_pdf_1.png | Bin 0 -> 15775 bytes doc/sf_and_dist/graphs/binomial_pdf_2.png | Bin 0 -> 17896 bytes doc/sf_and_dist/graphs/binomial_pdf_3.png | Bin 0 -> 5956 bytes .../graphs/binomial_quantile_1.png | Bin 0 -> 5170 bytes doc/sf_and_dist/graphs/cauchy1.png | Bin 0 -> 11139 bytes doc/sf_and_dist/graphs/cauchy2.png | Bin 0 -> 9326 bytes doc/sf_and_dist/graphs/cdf.png | Bin 0 -> 3914 bytes doc/sf_and_dist/graphs/chi_square.png | Bin 0 -> 4430 bytes doc/sf_and_dist/graphs/digamma.png | Bin 0 -> 6264 bytes doc/sf_and_dist/graphs/ellint_1.png | Bin 0 -> 4750 bytes doc/sf_and_dist/graphs/ellint_2.png | Bin 0 -> 4910 bytes doc/sf_and_dist/graphs/ellint_3.png | Bin 0 -> 5805 bytes doc/sf_and_dist/graphs/ellint_c.png | Bin 0 -> 3651 bytes doc/sf_and_dist/graphs/erf1.png | Bin 0 -> 2856 bytes doc/sf_and_dist/graphs/erf2.png | Bin 0 -> 3392 bytes doc/sf_and_dist/graphs/erf_inv.png | Bin 0 -> 6422 bytes doc/sf_and_dist/graphs/erfc_inv.png | Bin 0 -> 7463 bytes doc/sf_and_dist/graphs/exp_on_r.png | Bin 0 -> 3062 bytes doc/sf_and_dist/graphs/exponential_dist.png | Bin 0 -> 3721 bytes doc/sf_and_dist/graphs/extreme_val_dist.png | Bin 0 -> 6270 bytes doc/sf_and_dist/graphs/extreme_val_dist2.png | Bin 0 -> 5472 bytes doc/sf_and_dist/graphs/fisher_f.png | Bin 0 -> 6397 bytes doc/sf_and_dist/graphs/gamma.png | Bin 0 -> 4035 bytes doc/sf_and_dist/graphs/gamma_dist1.png | Bin 0 -> 4955 bytes doc/sf_and_dist/graphs/gamma_dist2.png | Bin 0 -> 5663 bytes doc/sf_and_dist/graphs/gamma_p.png | Bin 0 -> 5042 bytes doc/sf_and_dist/graphs/gamma_q.png | Bin 0 -> 5052 bytes doc/sf_and_dist/graphs/hermite.png | Bin 0 -> 7525 bytes doc/sf_and_dist/graphs/hyperbolic.png | Bin 0 -> 4244 bytes doc/sf_and_dist/graphs/ibeta.png | Bin 0 -> 20426 bytes doc/sf_and_dist/graphs/im_exp_on_c.png | Bin 0 -> 11293 bytes doc/sf_and_dist/graphs/laguerre.png | Bin 0 -> 7610 bytes doc/sf_and_dist/graphs/legendre_p1.png | Bin 0 -> 10180 bytes doc/sf_and_dist/graphs/legendre_q.png | Bin 0 -> 10285 bytes doc/sf_and_dist/graphs/lgamma-errors.png | Bin 0 -> 5732 bytes doc/sf_and_dist/graphs/lgamma.png | Bin 0 -> 4313 bytes doc/sf_and_dist/graphs/lognormal1.png | Bin 0 -> 4892 bytes doc/sf_and_dist/graphs/lognormal2.png | Bin 0 -> 5147 bytes doc/sf_and_dist/graphs/neg_binomial_pdf1.png | Bin 0 -> 3140 bytes doc/sf_and_dist/graphs/neg_binomial_pdf2.png | Bin 0 -> 3131 bytes doc/sf_and_dist/graphs/normal.png | Bin 0 -> 7874 bytes doc/sf_and_dist/graphs/pdf.png | Bin 0 -> 4273 bytes doc/sf_and_dist/graphs/poisson.png | Bin 0 -> 3206 bytes doc/sf_and_dist/graphs/quantile.png | Bin 0 -> 4107 bytes doc/sf_and_dist/graphs/rayleigh_cdf.png | Bin 0 -> 24553 bytes doc/sf_and_dist/graphs/rayleigh_pdf.png | Bin 0 -> 22261 bytes doc/sf_and_dist/graphs/re_exp_on_c.png | Bin 0 -> 11596 bytes doc/sf_and_dist/graphs/remez-2.png | Bin 0 -> 4943 bytes doc/sf_and_dist/graphs/remez-3.png | Bin 0 -> 5890 bytes doc/sf_and_dist/graphs/remez-4.png | Bin 0 -> 5979 bytes doc/sf_and_dist/graphs/remez-5.png | Bin 0 -> 5658 bytes .../graphs/sinc_pi_and_sinhc_pi_on_r.png | Bin 0 -> 3403 bytes doc/sf_and_dist/graphs/sph_bessel_j.png | Bin 0 -> 6592 bytes doc/sf_and_dist/graphs/sph_bessel_y.png | Bin 0 -> 5884 bytes doc/sf_and_dist/graphs/students_t.png | Bin 0 -> 5766 bytes doc/sf_and_dist/graphs/survival.png | Bin 0 -> 4818 bytes doc/sf_and_dist/graphs/survival_inv.png | Bin 0 -> 3967 bytes doc/sf_and_dist/graphs/triangular_cdf.png | Bin 0 -> 25268 bytes doc/sf_and_dist/graphs/triangular_pdf.png | Bin 0 -> 22911 bytes doc/sf_and_dist/graphs/trigonometric.png | Bin 0 -> 7373 bytes doc/sf_and_dist/graphs/uniform_cdf.png | Bin 0 -> 21875 bytes doc/sf_and_dist/graphs/uniform_pdf.png | Bin 0 -> 17265 bytes doc/sf_and_dist/graphs/weibull.png | Bin 0 -> 5414 bytes doc/sf_and_dist/graphs/weibull2.png | Bin 0 -> 5375 bytes doc/sf_and_dist/hermite.qbk | 115 + doc/sf_and_dist/html/index.html | 395 ++ .../html/math_toolkit/backgrounders.html | 53 + .../backgrounders/implementation.html | 752 +++ .../math_toolkit/backgrounders/lanczos.html | 578 ++ .../html/math_toolkit/backgrounders/refs.html | 170 + .../backgrounders/relative_error.html | 124 + .../math_toolkit/backgrounders/remez.html | 542 ++ doc/sf_and_dist/html/math_toolkit/dist.html | 180 + .../html/math_toolkit/dist/dist_ref.html | 90 + .../dist/dist_ref/dist_algorithms.html | 150 + .../math_toolkit/dist/dist_ref/dists.html | 83 + .../dist/dist_ref/dists/bernoulli_dist.html | 358 ++ .../dist/dist_ref/dists/beta_dist.html | 641 ++ .../dist/dist_ref/dists/binomial_dist.html | 937 +++ .../dist/dist_ref/dists/cauchy_dist.html | 311 + .../dist/dist_ref/dists/chi_squared_dist.html | 408 ++ .../dist/dist_ref/dists/exp_dist.html | 319 + .../dist/dist_ref/dists/extreme_dist.html | 334 + .../dist/dist_ref/dists/f_dist.html | 443 ++ .../dist/dist_ref/dists/gamma_dist.html | 385 ++ .../dist/dist_ref/dists/lognormal_dist.html | 338 + .../dists/negative_binomial_dist.html | 927 +++ .../dist/dist_ref/dists/normal_dist.html | 309 + .../dist/dist_ref/dists/pareto.html | 342 + .../dist/dist_ref/dists/poisson_dist.html | 345 ++ .../dist/dist_ref/dists/rayleigh.html | 351 ++ .../dist/dist_ref/dists/students_t_dist.html | 428 ++ .../dist/dist_ref/dists/triangular_dist.html | 425 ++ .../dist/dist_ref/dists/uniform_dist.html | 371 ++ .../dist/dist_ref/dists/weibull.html | 369 ++ .../html/math_toolkit/dist/dist_ref/nmp.html | 703 +++ .../html/math_toolkit/dist/future.html | 145 + .../html/math_toolkit/dist/stat_tut.html | 134 + .../dist/stat_tut/dist_params.html | 98 + .../math_toolkit/dist/stat_tut/overview.html | 531 ++ .../math_toolkit/dist/stat_tut/variates.html | 76 + .../html/math_toolkit/dist/stat_tut/weg.html | 124 + .../dist/stat_tut/weg/binom_eg.html | 60 + .../stat_tut/weg/binom_eg/binom_conf.html | 246 + .../stat_tut/weg/binom_eg/binom_size_eg.html | 161 + .../binom_eg/binomial_coinflip_example.html | 420 ++ .../weg/binom_eg/binomial_quiz_example.html | 770 +++ .../math_toolkit/dist/stat_tut/weg/cs_eg.html | 54 + .../stat_tut/weg/cs_eg/chi_sq_intervals.html | 241 + .../dist/stat_tut/weg/cs_eg/chi_sq_size.html | 185 + .../dist/stat_tut/weg/cs_eg/chi_sq_test.html | 301 + .../dist/stat_tut/weg/dist_construct_eg.html | 431 ++ .../dist/stat_tut/weg/error_eg.html | 271 + .../math_toolkit/dist/stat_tut/weg/f_eg.html | 335 + .../dist/stat_tut/weg/find_eg.html | 53 + .../weg/find_eg/find_location_eg.html | 290 + .../weg/find_eg/find_mean_and_sd_eg.html | 750 +++ .../stat_tut/weg/find_eg/find_scale_eg.html | 315 + .../dist/stat_tut/weg/nag_library.html | 118 + .../dist/stat_tut/weg/neg_binom_eg.html | 60 + .../weg/neg_binom_eg/neg_binom_conf.html | 271 + .../weg/neg_binom_eg/neg_binom_size_eg.html | 254 + .../negative_binomial_example1.html | 834 +++ .../negative_binomial_example2.html | 152 + .../dist/stat_tut/weg/normal_example.html | 51 + .../weg/normal_example/normal_misc.html | 782 +++ .../math_toolkit/dist/stat_tut/weg/st_eg.html | 58 + .../dist/stat_tut/weg/st_eg/paired_st.html | 79 + .../weg/st_eg/tut_mean_intervals.html | 273 + .../stat_tut/weg/st_eg/tut_mean_size.html | 184 + .../stat_tut/weg/st_eg/tut_mean_test.html | 337 + .../weg/st_eg/two_sample_students_t.html | 362 ++ .../html/math_toolkit/main_overview.html | 67 + .../math_toolkit/main_overview/contact.html | 62 + .../main_overview/directories.html | 124 + .../main_overview/error_handling.html | 899 +++ .../math_toolkit/main_overview/history1.html | 218 + .../math_toolkit/main_overview/intro.html | 134 + .../main_overview/namespaces.html | 76 + .../main_overview/navigation.html | 154 + .../math_toolkit/main_overview/perf_over.html | 93 + .../main_overview/pol_overview.html | 136 + .../main_overview/result_type.html | 154 + .../math_toolkit/main_overview/threads.html | 70 + doc/sf_and_dist/html/math_toolkit/perf.html | 56 + .../math_toolkit/perf/comp_compilers.html | 377 ++ .../html/math_toolkit/perf/comparisons.html | 1772 ++++++ .../html/math_toolkit/perf/getting_best.html | 294 + .../html/math_toolkit/perf/interp.html | 70 + .../html/math_toolkit/perf/perf_over.html | 93 + .../html/math_toolkit/perf/perf_test_app.html | 63 + .../html/math_toolkit/perf/tuning.html | 897 +++ doc/sf_and_dist/html/math_toolkit/policy.html | 91 + .../math_toolkit/policy/pol_overview.html | 135 + .../html/math_toolkit/policy/pol_ref.html | 64 + .../policy/pol_ref/assert_undefined.html | 92 + .../policy/pol_ref/discrete_quant_ref.html | 297 + .../pol_ref/error_handling_policies.html | 687 +++ .../policy/pol_ref/internal_promotion.html | 168 + .../policy/pol_ref/iteration_pol.html | 67 + .../policy/pol_ref/namespace_pol.html | 172 + .../policy/pol_ref/pol_ref_ref.html | 250 + .../policy/pol_ref/policy_defaults.html | 240 + .../policy/pol_ref/precision_pol.html | 141 + .../math_toolkit/policy/pol_tutorial.html | 64 + .../pol_tutorial/ad_hoc_dist_policies.html | 110 + .../pol_tutorial/ad_hoc_sf_policies.html | 171 + .../changing_policy_defaults.html | 340 + .../pol_tutorial/namespace_policies.html | 477 ++ .../pol_tutorial/policy_tut_defaults.html | 130 + .../policy/pol_tutorial/policy_usage.html | 71 + .../pol_tutorial/understand_dis_quant.html | 442 ++ .../policy/pol_tutorial/user_def_err_pol.html | 647 ++ .../policy/pol_tutorial/what_is_a_policy.html | 88 + .../html/math_toolkit/special.html | 151 + .../html/math_toolkit/special/bessel.html | 62 + .../math_toolkit/special/bessel/bessel.html | 673 ++ .../special/bessel/bessel_over.html | 213 + .../math_toolkit/special/bessel/mbessel.html | 485 ++ .../special/bessel/sph_bessel.html | 162 + .../html/math_toolkit/special/ellint.html | 56 + .../math_toolkit/special/ellint/ellint_1.html | 285 + .../math_toolkit/special/ellint/ellint_2.html | 285 + .../math_toolkit/special/ellint/ellint_3.html | 339 + .../special/ellint/ellint_carlson.html | 484 ++ .../special/ellint/ellint_intro.html | 423 ++ .../html/math_toolkit/special/factorials.html | 56 + .../special/factorials/sf_binomial.html | 125 + .../factorials/sf_double_factorial.html | 118 + .../special/factorials/sf_factorial.html | 161 + .../factorials/sf_falling_factorial.html | 120 + .../factorials/sf_rising_factorial.html | 124 + .../html/math_toolkit/special/fpclass.html | 227 + .../html/math_toolkit/special/inv_hyper.html | 51 + .../math_toolkit/special/inv_hyper/acosh.html | 85 + .../math_toolkit/special/inv_hyper/asinh.html | 79 + .../math_toolkit/special/inv_hyper/atanh.html | 93 + .../special/inv_hyper/inv_hyper_over.html | 163 + .../html/math_toolkit/special/powers.html | 53 + .../math_toolkit/special/powers/cbrt.html | 100 + .../math_toolkit/special/powers/expm1.html | 109 + .../math_toolkit/special/powers/hypot.html | 94 + .../math_toolkit/special/powers/log1p.html | 123 + .../math_toolkit/special/powers/powm1.html | 102 + .../math_toolkit/special/powers/sqrt1pm1.html | 105 + .../html/math_toolkit/special/sf_beta.html | 53 + .../special/sf_beta/beta_derivative.html | 111 + .../special/sf_beta/beta_function.html | 336 + .../special/sf_beta/ibeta_function.html | 982 +++ .../special/sf_beta/ibeta_inv_function.html | 577 ++ .../html/math_toolkit/special/sf_erf.html | 50 + .../special/sf_erf/error_function.html | 642 ++ .../special/sf_erf/error_inv.html | 220 + .../html/math_toolkit/special/sf_gamma.html | 57 + .../special/sf_gamma/digamma.html | 400 ++ .../special/sf_gamma/gamma_derivatives.html | 116 + .../special/sf_gamma/gamma_ratios.html | 371 ++ .../math_toolkit/special/sf_gamma/igamma.html | 1062 ++++ .../special/sf_gamma/igamma_inv.html | 270 + .../math_toolkit/special/sf_gamma/lgamma.html | 494 ++ .../math_toolkit/special/sf_gamma/tgamma.html | 483 ++ .../html/math_toolkit/special/sf_poly.html | 52 + .../math_toolkit/special/sf_poly/hermite.html | 294 + .../special/sf_poly/laguerre.html | 473 ++ .../special/sf_poly/legendre.html | 720 +++ .../special/sf_poly/sph_harm.html | 321 + .../html/math_toolkit/special/sinc.html | 51 + .../special/sinc/sinc_overview.html | 85 + .../math_toolkit/special/sinc/sinc_pi.html | 86 + .../math_toolkit/special/sinc/sinhc_pi.html | 90 + doc/sf_and_dist/html/math_toolkit/status.html | 50 + .../html/math_toolkit/status/compilers.html | 629 ++ .../html/math_toolkit/status/credits.html | 84 + .../html/math_toolkit/status/history1.html | 217 + .../html/math_toolkit/status/issues.html | 163 + .../html/math_toolkit/toolkit.html | 72 + .../html/math_toolkit/toolkit/internals1.html | 58 + .../math_toolkit/toolkit/internals1/cf.html | 271 + .../toolkit/internals1/minima.html | 128 + .../toolkit/internals1/rational.html | 243 + .../toolkit/internals1/roots.html | 390 ++ .../toolkit/internals1/roots2.html | 610 ++ .../toolkit/internals1/series_evaluation.html | 194 + .../html/math_toolkit/toolkit/internals2.html | 53 + .../toolkit/internals2/error_test.html | 241 + .../toolkit/internals2/minimax.html | 273 + .../toolkit/internals2/polynomials.html | 139 + .../toolkit/internals2/test_data.html | 564 ++ .../toolkit/internals_overview.html | 58 + .../html/math_toolkit/using_udt.html | 55 + .../math_toolkit/using_udt/archetypes.html | 184 + .../html/math_toolkit/using_udt/concepts.html | 1296 ++++ .../math_toolkit/using_udt/dist_concept.html | 396 ++ .../html/math_toolkit/using_udt/use_ntl.html | 68 + doc/sf_and_dist/html4_symbols.qbk | 149 + doc/sf_and_dist/ibeta.qbk | 294 + doc/sf_and_dist/ibeta_inv.qbk | 352 ++ doc/sf_and_dist/igamma.qbk | 386 ++ doc/sf_and_dist/igamma_inv.qbk | 161 + doc/sf_and_dist/implementation.qbk | 559 ++ doc/sf_and_dist/internals_overview.qbk | 22 + doc/sf_and_dist/inv_hyper.qbk | 169 + doc/sf_and_dist/issues.qbk | 90 + doc/sf_and_dist/laguerre.qbk | 175 + doc/sf_and_dist/lanczos.qbk | 246 + doc/sf_and_dist/latin1_symbols.qbk | 111 + doc/sf_and_dist/legendre.qbk | 252 + doc/sf_and_dist/lgamma.qbk | 217 + doc/sf_and_dist/license.qbk | 6 + doc/sf_and_dist/math.qbk | 409 ++ doc/sf_and_dist/minima.qbk | 64 + doc/sf_and_dist/minimax.qbk | 159 + doc/sf_and_dist/overview.qbk | 90 + doc/sf_and_dist/performance.qbk | 369 ++ doc/sf_and_dist/poisson_optimisation.qbk | 121 + doc/sf_and_dist/policy.qbk | 826 +++ doc/sf_and_dist/policy_tutorial.qbk | 504 ++ doc/sf_and_dist/polynomial.qbk | 94 + doc/sf_and_dist/powers.qbk | 260 + doc/sf_and_dist/rational.qbk | 176 + doc/sf_and_dist/references.qbk | 81 + doc/sf_and_dist/relative_error.qbk | 134 + doc/sf_and_dist/remez.qbk | 377 ++ doc/sf_and_dist/result_type_calc.qbk | 85 + doc/sf_and_dist/roadmap.qbk | 71 + doc/sf_and_dist/roots.qbk | 245 + doc/sf_and_dist/roots_without_derivatives.qbk | 419 ++ doc/sf_and_dist/series.qbk | 129 + doc/sf_and_dist/sinc.qbk | 103 + doc/sf_and_dist/spherical_harmonic.qbk | 150 + doc/sf_and_dist/structure.qbk | 127 + doc/sf_and_dist/test_data.qbk | 438 ++ doc/sf_and_dist/test_html4_symbols.qbk | 144 + doc/sf_and_dist/tgamma.qbk | 202 + doc/sf_and_dist/thread_safety.qbk | 30 + doc/sf_and_dist/win32_nmake.mak | 73 + doc/svg-admon/caution.svg | 68 + doc/svg-admon/home.svg | 26 + doc/svg-admon/important.svg | 25 + doc/svg-admon/next.svg | 19 + doc/svg-admon/note.svg | 33 + doc/svg-admon/prev.svg | 19 + doc/svg-admon/tip.svg | 84 + doc/svg-admon/up.svg | 19 + doc/svg-admon/warning.svg | 23 + example/Jamfile.v2 | 79 + example/binomial_coinflip_example.cpp | 237 + example/binomial_confidence_limits.cpp | 159 + example/binomial_example3.cpp | 91 + example/binomial_example_nag.cpp | 91 + example/binomial_quiz_example.cpp | 520 ++ example/binomial_sample_sizes.cpp | 76 + example/c_error_policy_example.cpp | 74 + example/chi_square_std_dev_test.cpp | 552 ++ example/distribution_construction.cpp | 201 + example/error_handling_example.cpp | 143 + example/error_policies_example.cpp | 97 + example/error_policy_example.cpp | 88 + example/f_test.cpp | 184 + example/find_location_example.cpp | 170 + example/find_mean_and_sd_normal.cpp | 408 ++ example/find_root_example.cpp | 239 + example/find_scale_example.cpp | 180 + example/neg_binom_confidence_limits.cpp | 179 + example/neg_binomial_sample_sizes.cpp | 202 + example/negative_binomial_example1.cpp | 521 ++ example/negative_binomial_example2.cpp | 182 + example/normal_misc_examples.cpp | 509 ++ example/policy_eg_1.cpp | 35 + example/policy_eg_10.cpp | 171 + example/policy_eg_2.cpp | 44 + example/policy_eg_3.cpp | 42 + example/policy_eg_4.cpp | 102 + example/policy_eg_5.cpp | 41 + example/policy_eg_6.cpp | 119 + example/policy_eg_7.cpp | 57 + example/policy_eg_8.cpp | 135 + example/policy_eg_9.cpp | 316 + example/policy_ref_snip1.cpp | 44 + example/policy_ref_snip10.cpp | 25 + example/policy_ref_snip11.cpp | 27 + example/policy_ref_snip12.cpp | 38 + example/policy_ref_snip13.cpp | 54 + example/policy_ref_snip2.cpp | 34 + example/policy_ref_snip3.cpp | 36 + example/policy_ref_snip4.cpp | 40 + example/policy_ref_snip5.cpp | 33 + example/policy_ref_snip6.cpp | 27 + example/policy_ref_snip7.cpp | 33 + example/policy_ref_snip8.cpp | 33 + example/policy_ref_snip9.cpp | 27 + example/students_t_example1.cpp | 101 + example/students_t_example2.cpp | 125 + example/students_t_example3.cpp | 120 + example/students_t_single_sample.cpp | 427 ++ example/students_t_two_samples.cpp | 261 + index.html | 5 +- minimax/f.cpp | 246 + minimax/main.cpp | 520 ++ octonion/octonion_test.cpp | 9 +- performance/Jamfile.v2 | 27 + performance/distributions.cpp | 452 ++ performance/main.cpp | 212 + performance/performance_measure.hpp | 86 + performance/required_defines.hpp | 9 + performance/test_erf.cpp | 109 + performance/test_gamma.cpp | 200 + performance/test_ibeta.cpp | 191 + performance/test_igamma.cpp | 190 + performance/test_polynomial.cpp | 422 ++ performance/test_reference.cpp | 16 + quaternion/quaternion_test.cpp | 6 +- test/Jamfile.v2 | 385 +- test/acosh_test.hpp | 90 + test/asinh_test.hpp | 90 + test/assoc_legendre_p.ipp | 410 ++ test/atanh_test.hpp | 173 + test/bessel_i_data.ipp | 236 + test/bessel_i_int_data.ipp | 506 ++ test/bessel_j_data.ipp | 371 ++ test/bessel_j_int_data.ipp | 235 + test/bessel_j_large_data.ipp | 81 + test/bessel_k_data.ipp | 274 + test/bessel_k_int_data.ipp | 492 ++ test/bessel_y01_data.ipp | 111 + test/bessel_yn_data.ipp | 311 + test/bessel_yv_data.ipp | 443 ++ test/beta_exp_data.ipp | 364 ++ test/beta_med_data.ipp | 1842 ++++++ test/beta_small_data.ipp | 35 + test/binomial_data.ipp | 169 + test/binomial_large_data.ipp | 240 + test/binomial_quantile.ipp | 4042 ++++++++++++ test/cbrt_data.ipp | 95 + .../compile_test/dist_bernoulli_incl_test.cpp | 25 + test/compile_test/dist_beta_incl_test.cpp | 25 + test/compile_test/dist_binomial_incl_test.cpp | 25 + test/compile_test/dist_cauchy_incl_test.cpp | 26 + .../dist_chi_squared_incl_test.cpp | 25 + .../dist_complement_incl_test.cpp | 22 + .../dist_exponential_incl_test.cpp | 25 + .../dist_extreme_val_incl_test.cpp | 25 + test/compile_test/dist_fisher_f_incl_test.cpp | 25 + test/compile_test/dist_gamma_incl_test.cpp | 25 + .../compile_test/dist_lognormal_incl_test.cpp | 25 + .../compile_test/dist_neg_binom_incl_test.cpp | 25 + test/compile_test/dist_normal_incl_test.cpp | 25 + test/compile_test/dist_pareto_incl_test.cpp | 25 + test/compile_test/dist_poisson_incl_test.cpp | 25 + .../dist_students_t_incl_test.cpp | 25 + .../dist_triangular_incl_test.cpp | 25 + test/compile_test/dist_uniform_incl_test.cpp | 25 + test/compile_test/dist_weibull_incl_test.cpp | 25 + .../distribution_concept_check.cpp | 49 + test/compile_test/generate.sh | 46 + test/compile_test/instantiate.hpp | 742 +++ test/compile_test/sf_bessel_incl_test.cpp | 53 + test/compile_test/sf_beta_incl_test.cpp | 42 + test/compile_test/sf_binomial_incl_test.cpp | 23 + test/compile_test/sf_cbrt_incl_test.cpp | 23 + test/compile_test/sf_cos_pi_incl_test.cpp | 23 + test/compile_test/sf_digamma_incl_test.cpp | 23 + test/compile_test/sf_ellint_1_incl_test.cpp | 29 + test/compile_test/sf_ellint_2_incl_test.cpp | 29 + test/compile_test/sf_ellint_3_incl_test.cpp | 29 + test/compile_test/sf_ellint_rc_incl_test.cpp | 23 + test/compile_test/sf_ellint_rd_incl_test.cpp | 23 + test/compile_test/sf_ellint_rf_incl_test.cpp | 23 + test/compile_test/sf_ellint_rj_incl_test.cpp | 23 + test/compile_test/sf_erf_incl_test.cpp | 41 + test/compile_test/sf_expm1_incl_test.cpp | 23 + test/compile_test/sf_factorials_incl_test.cpp | 42 + test/compile_test/sf_fpclassify_incl_test.cpp | 43 + test/compile_test/sf_gamma_incl_test.cpp | 83 + test/compile_test/sf_hermite_incl_test.cpp | 23 + test/compile_test/sf_hypot_incl_test.cpp | 23 + test/compile_test/sf_laguerre_incl_test.cpp | 32 + test/compile_test/sf_lanczos_incl_test.cpp | 10 + test/compile_test/sf_legendre_incl_test.cpp | 35 + test/compile_test/sf_log1p_incl_test.cpp | 23 + test/compile_test/sf_math_fwd_incl_test.cpp | 10 + test/compile_test/sf_powm1_incl_test.cpp | 23 + test/compile_test/sf_sign_incl_test.cpp | 35 + test/compile_test/sf_sin_pi_incl_test.cpp | 23 + test/compile_test/sf_sinc_incl_test.cpp | 23 + test/compile_test/sf_sinhc_incl_test.cpp | 23 + test/compile_test/sf_sph_harm_incl_test.cpp | 43 + test/compile_test/sf_sqrt1pm1_incl_test.cpp | 23 + test/compile_test/std_real_concept_check.cpp | 200 + test/compile_test/test_compile_result.hpp | 131 + test/compile_test/test_traits.cpp | 56 + test/compile_test/tools_config_inc_test.cpp | 10 + test/compile_test/tools_fraction_inc_test.cpp | 10 + test/compile_test/tools_minima_inc_test.cpp | 10 + .../tools_polynomial_inc_test.cpp | 10 + .../compile_test/tools_precision_inc_test.cpp | 10 + test/compile_test/tools_rational_inc_test.cpp | 10 + .../compile_test/tools_real_cast_inc_test.cpp | 10 + test/compile_test/tools_remez_inc_test.cpp | 10 + test/compile_test/tools_roots_inc_test.cpp | 38 + test/compile_test/tools_series_inc_test.cpp | 35 + test/compile_test/tools_solve_inc_test.cpp | 10 + test/compile_test/tools_stats_inc_test.cpp | 11 + .../compile_test/tools_test_data_inc_test.cpp | 21 + test/compile_test/tools_test_inc_test.cpp | 36 + test/compile_test/tools_toms748_inc_test.cpp | 18 + test/complex_test.cpp | 4 +- test/digamma_data.ipp | 510 ++ test/digamma_neg_data.ipp | 211 + test/digamma_root_data.ipp | 211 + test/digamma_small_data.ipp | 44 + test/ellint_e2_data.ipp | 534 ++ test/ellint_e_data.ipp | 114 + test/ellint_f_data.ipp | 626 ++ test/ellint_k_data.ipp | 110 + test/ellint_pi2_data.ipp | 514 ++ test/ellint_pi3_data.ipp | 414 ++ test/ellint_pi3_large_data.ipp | 394 ++ test/ellint_rc_data.ipp | 216 + test/ellint_rd_data.ipp | 216 + test/ellint_rf_data.ipp | 415 ++ test/ellint_rj_data.ipp | 816 +++ test/erf_data.ipp | 510 ++ test/erf_inv_data.ipp | 110 + test/erf_large_data.ipp | 310 + test/erf_small_data.ipp | 162 + test/erfc_inv_big_data.ipp | 211 + test/erfc_inv_data.ipp | 110 + test/functor.hpp | 209 + test/gamma_inv_big_data.ipp | 141 + test/gamma_inv_data.ipp | 211 + test/gamma_inv_small_data.ipp | 239 + test/handle_test_result.hpp | 198 + test/hermite.ipp | 430 ++ test/hypot_test.cpp | 7 + test/ibeta_data.ipp | 511 ++ test/ibeta_int_data.ipp | 1010 +++ test/ibeta_inv_data.ipp | 1220 ++++ test/ibeta_inva_data.ipp | 1110 ++++ test/ibeta_large_data.ipp | 1222 ++++ test/ibeta_small_data.ipp | 512 ++ test/igamma_big_data.ipp | 298 + test/igamma_int_data.ipp | 151 + test/igamma_inva_data.ipp | 445 ++ test/igamma_med_data.ipp | 712 +++ test/igamma_small_data.ipp | 264 + test/laguerre2.ipp | 290 + test/laguerre3.ipp | 2250 +++++++ test/legendre_p.ipp | 150 + test/legendre_p_large.ipp | 170 + test/log1p_expm1_data.ipp | 90 + test/log1p_expm1_test.cpp | 655 +- test/negative_binomial_quantile.ipp | 802 +++ test/poisson_quantile.ipp | 632 ++ test/powm1_sqrtp1m1_test.cpp | 1658 +++++ test/sinc_test.hpp | 92 + test/sinhc_test.hpp | 92 + test/special_functions_test.cpp | 148 + test/sph_bessel_data.ipp | 494 ++ test/sph_neumann_data.ipp | 295 + test/spherical_harmonic.ipp | 1010 +++ test/std_real_concept_check.cpp | 199 + test/test_bernoulli.cpp | 268 + test/test_bessel_hooks.hpp | 97 + test/test_bessel_i.cpp | 285 + test/test_bessel_j.cpp | 544 ++ test/test_bessel_k.cpp | 278 + test/test_bessel_y.cpp | 463 ++ test/test_beta.cpp | 228 + test/test_beta_dist.cpp | 579 ++ test/test_beta_hooks.hpp | 81 + test/test_binomial.cpp | 742 +++ test/test_binomial_coeff.cpp | 197 + test/test_carlson.cpp | 411 ++ test/test_cauchy.cpp | 756 +++ test/test_cbrt.cpp | 135 + test/test_chi_squared.cpp | 560 ++ test/test_classify.cpp | 166 + test/test_constants.cpp | 88 + test/test_digamma.cpp | 182 + test/test_dist_overloads.cpp | 101 + test/test_ellint_1.cpp | 220 + test/test_ellint_2.cpp | 212 + test/test_ellint_3.cpp | 247 + test/test_erf.cpp | 509 ++ test/test_erf_hooks.hpp | 105 + test/test_error_handling.cpp | 193 + test/test_exponential_dist.cpp | 291 + test/test_extreme_value.cpp | 222 + test/test_factorials.cpp | 341 + test/test_find_location.cpp | 172 + test/test_find_scale.cpp | 207 + test/test_fisher_f.cpp | 549 ++ test/test_gamma.cpp | 497 ++ test/test_gamma_data.ipp | 582 ++ test/test_gamma_dist.cpp | 256 + test/test_gamma_hooks.hpp | 176 + test/test_hermite.cpp | 207 + test/test_ibeta.cpp | 582 ++ test/test_ibeta_inv.cpp | 379 ++ test/test_ibeta_inv_ab.cpp | 315 + test/test_igamma.cpp | 518 ++ test/test_igamma_inv.cpp | 440 ++ test/test_igamma_inva.cpp | 307 + test/test_instantiate1.cpp | 20 + test/test_instantiate2.cpp | 14 + test/test_laguerre.cpp | 292 + test/test_legendre.cpp | 385 ++ test/test_legendre_hooks.hpp | 41 + test/test_lognormal.cpp | 308 + test/test_minima.cpp | 59 + test/test_negative_binomial.cpp | 850 +++ test/test_normal.cpp | 329 + test/test_pareto.cpp | 333 + test/test_poisson.cpp | 623 ++ test/test_policy.cpp | 153 + test/test_policy_2.cpp | 109 + test/test_policy_sf.cpp | 138 + .../test_rational_instances/test_rational.hpp | 5480 +++++++++++++++++ .../test_rational_double1.cpp | 10 + .../test_rational_double2.cpp | 10 + .../test_rational_double3.cpp | 10 + .../test_rational_double4.cpp | 10 + .../test_rational_double5.cpp | 9 + .../test_rational_float1.cpp | 10 + .../test_rational_float2.cpp | 10 + .../test_rational_float3.cpp | 10 + .../test_rational_float4.cpp | 11 + .../test_rational_ldouble1.cpp | 10 + .../test_rational_ldouble2.cpp | 10 + .../test_rational_ldouble3.cpp | 10 + .../test_rational_ldouble4.cpp | 11 + .../test_rational_ldouble5.cpp | 9 + .../test_rational_real_concept1.cpp | 15 + .../test_rational_real_concept2.cpp | 15 + .../test_rational_real_concept3.cpp | 15 + .../test_rational_real_concept4.cpp | 16 + .../test_rational_real_concept5.cpp | 15 + test/test_rationals.cpp | 47 + test/test_rayleigh.cpp | 319 + test/test_remez.cpp | 181 + test/test_roots.cpp | 315 + test/test_spherical_harmonic.cpp | 314 + test/test_students_t.cpp | 416 ++ test/test_tgamma_ratio.cpp | 249 + test/test_toms748_solve.cpp | 270 + test/test_triangular.cpp | 705 +++ test/test_uniform.cpp | 450 ++ test/test_weibull.cpp | 378 ++ test/tgamma_delta_ratio_data.ipp | 570 ++ test/tgamma_delta_ratio_int.ipp | 354 ++ test/tgamma_delta_ratio_int2.ipp | 200 + test/tgamma_ratio_data.ipp | 410 ++ tools/bessel_data.cpp | 357 ++ tools/beta_data.cpp | 72 + tools/carlson_ellint_data.cpp | 151 + tools/cbrt_data.cpp | 68 + tools/digamma_data.cpp | 67 + tools/ellint_e_data.cpp | 64 + tools/ellint_f_data.cpp | 76 + tools/ellint_k_data.cpp | 64 + tools/ellint_pi2_data.cpp | 64 + tools/ellint_pi3_data.cpp | 79 + tools/erf_data.cpp | 225 + tools/factorial_tables.cpp | 43 + tools/gamma_P_inva_data.cpp | 75 + tools/generate_rational_code.cpp | 738 +++ tools/generate_rational_test.cpp | 526 ++ tools/hermite_data.cpp | 73 + tools/ibeta_data.cpp | 310 + tools/ibeta_inv_data.cpp | 93 + tools/ibeta_invab_data.cpp | 96 + tools/igamma_data.cpp | 183 + tools/igamma_temme_large_coef.cpp | 210 + tools/laguerre_data.cpp | 106 + tools/lanczos_generator.cpp | 4368 +++++++++++++ tools/legendre_data.cpp | 105 + tools/log1p_expm1_data.cpp | 63 + tools/ntl_rr_digamma.hpp | 292 + tools/ntl_rr_lanczos.hpp | 902 +++ tools/process_perf_results.cpp | 127 + tools/rational_tests.cpp | 366 ++ tools/spherical_harmonic_data.cpp | 91 + tools/tgamma_ratio_data.cpp | 99 + vc71_fix/Jamfile.v2 | 6 + vc71_fix/instantiate_all.cpp | 29 + 1396 files changed, 179958 insertions(+), 2913 deletions(-) create mode 100644 doc/complex/Jamfile.v2 rename doc/{math-tr1.qbk => complex/complex-tr1.qbk} (78%) create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html create mode 100644 doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html create mode 100644 doc/complex/html/index.html create mode 100644 doc/gcd/Jamfile.v2 create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html create mode 100644 doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html create mode 100644 doc/gcd/html/index.html rename doc/{ => gcd}/math-gcd.qbk (83%) create mode 100644 doc/html/index.html delete mode 100644 doc/math-background.qbk delete mode 100644 doc/math-octonion.qbk delete mode 100644 doc/math-quaternion.qbk delete mode 100644 doc/math-sf.qbk create mode 100644 doc/octonion/Jamfile.v2 create mode 100644 doc/octonion/html/boost_octonions/octonions.html create mode 100644 doc/octonion/html/boost_octonions/octonions/acknowledgements.html create mode 100644 doc/octonion/html/boost_octonions/octonions/header_file.html create mode 100644 doc/octonion/html/boost_octonions/octonions/history.html create mode 100644 doc/octonion/html/boost_octonions/octonions/non_mem.html create mode 100644 doc/octonion/html/boost_octonions/octonions/oct_create.html create mode 100644 doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html create mode 100644 doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html create mode 100644 doc/octonion/html/boost_octonions/octonions/octonion_specializations.html create mode 100644 doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html create mode 100644 doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html create mode 100644 doc/octonion/html/boost_octonions/octonions/overview.html create mode 100644 doc/octonion/html/boost_octonions/octonions/synopsis.html create mode 100644 doc/octonion/html/boost_octonions/octonions/template_class_octonion.html create mode 100644 doc/octonion/html/boost_octonions/octonions/test_program.html create mode 100644 doc/octonion/html/boost_octonions/octonions/to_do.html create mode 100644 doc/octonion/html/index.html create mode 100644 doc/octonion/math-octonion.qbk create mode 100644 doc/quaternion/Jamfile.v2 create mode 100644 doc/quaternion/html/boost_quaternions/quaternions.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/create.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/exp.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/header_file.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/history.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/non_mem.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/overview.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/quat.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/spec.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/synopsis.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/test_program.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/to_do.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/trans.html create mode 100644 doc/quaternion/html/boost_quaternions/quaternions/value_op.html create mode 100644 doc/quaternion/html/index.html create mode 100644 doc/quaternion/math-quaternion.qbk create mode 100644 doc/sf_and_dist/Jamfile.v2 create mode 100644 doc/sf_and_dist/background.qbk create mode 100644 doc/sf_and_dist/bessel_ik.qbk create mode 100644 doc/sf_and_dist/bessel_introduction.qbk create mode 100644 doc/sf_and_dist/bessel_jy.qbk create mode 100644 doc/sf_and_dist/bessel_spherical.qbk create mode 100644 doc/sf_and_dist/beta.qbk create mode 100644 doc/sf_and_dist/beta_derivative.qbk create mode 100644 doc/sf_and_dist/common_overviews.qbk create mode 100644 doc/sf_and_dist/concepts.qbk create mode 100644 doc/sf_and_dist/contact_info.qbk create mode 100644 doc/sf_and_dist/credits.qbk create mode 100644 doc/sf_and_dist/digamma.qbk create mode 100644 doc/sf_and_dist/dist_algorithms.qbk create mode 100644 doc/sf_and_dist/dist_reference.qbk create mode 100644 doc/sf_and_dist/dist_tutorial.qbk create mode 100644 doc/sf_and_dist/distributions/bernoulli.qbk create mode 100644 doc/sf_and_dist/distributions/beta.qbk create mode 100644 doc/sf_and_dist/distributions/binomial.qbk create mode 100644 doc/sf_and_dist/distributions/binomial_example.qbk create mode 100644 doc/sf_and_dist/distributions/cauchy.qbk create mode 100644 doc/sf_and_dist/distributions/chi_squared.qbk create mode 100644 doc/sf_and_dist/distributions/chi_squared_examples.qbk create mode 100644 doc/sf_and_dist/distributions/distribution_construction.qbk create mode 100644 doc/sf_and_dist/distributions/error_handling_example.qbk create mode 100644 doc/sf_and_dist/distributions/exponential.qbk create mode 100644 doc/sf_and_dist/distributions/extreme_value.qbk create mode 100644 doc/sf_and_dist/distributions/f_dist_example.qbk create mode 100644 doc/sf_and_dist/distributions/find_location_and_scale.qbk create mode 100644 doc/sf_and_dist/distributions/fisher.qbk create mode 100644 doc/sf_and_dist/distributions/gamma.qbk create mode 100644 doc/sf_and_dist/distributions/lognormal.qbk create mode 100644 doc/sf_and_dist/distributions/nag_library.qbk create mode 100644 doc/sf_and_dist/distributions/negative_binomial.qbk create mode 100644 doc/sf_and_dist/distributions/negative_binomial_example.qbk create mode 100644 doc/sf_and_dist/distributions/non_members.qbk create mode 100644 doc/sf_and_dist/distributions/normal.qbk create mode 100644 doc/sf_and_dist/distributions/normal_example.qbk create mode 100644 doc/sf_and_dist/distributions/pareto.qbk create mode 100644 doc/sf_and_dist/distributions/poisson.qbk create mode 100644 doc/sf_and_dist/distributions/rayleigh.qbk create mode 100644 doc/sf_and_dist/distributions/students_t.qbk create mode 100644 doc/sf_and_dist/distributions/students_t_examples.qbk create mode 100644 doc/sf_and_dist/distributions/triangular.qbk create mode 100644 doc/sf_and_dist/distributions/uniform.qbk create mode 100644 doc/sf_and_dist/distributions/weibull.qbk create mode 100644 doc/sf_and_dist/ellint_carlson.qbk create mode 100644 doc/sf_and_dist/ellint_introduction.qbk create mode 100644 doc/sf_and_dist/ellint_legendre.qbk create mode 100644 doc/sf_and_dist/equations/bessel1.mml create mode 100644 doc/sf_and_dist/equations/bessel1.png create mode 100644 doc/sf_and_dist/equations/bessel1.svg create mode 100644 doc/sf_and_dist/equations/bessel10.mml create mode 100644 doc/sf_and_dist/equations/bessel10.png create mode 100644 doc/sf_and_dist/equations/bessel10.svg create mode 100644 doc/sf_and_dist/equations/bessel11.mml create mode 100644 doc/sf_and_dist/equations/bessel11.png create mode 100644 doc/sf_and_dist/equations/bessel11.svg create mode 100644 doc/sf_and_dist/equations/bessel12.mml create mode 100644 doc/sf_and_dist/equations/bessel12.png create mode 100644 doc/sf_and_dist/equations/bessel12.svg create mode 100644 doc/sf_and_dist/equations/bessel13.mml create mode 100644 doc/sf_and_dist/equations/bessel13.png create mode 100644 doc/sf_and_dist/equations/bessel13.svg create mode 100644 doc/sf_and_dist/equations/bessel14.mml create mode 100644 doc/sf_and_dist/equations/bessel14.png create mode 100644 doc/sf_and_dist/equations/bessel14.svg create mode 100644 doc/sf_and_dist/equations/bessel15.mml create mode 100644 doc/sf_and_dist/equations/bessel15.png create mode 100644 doc/sf_and_dist/equations/bessel15.svg create mode 100644 doc/sf_and_dist/equations/bessel16.mml create mode 100644 doc/sf_and_dist/equations/bessel16.png create mode 100644 doc/sf_and_dist/equations/bessel16.svg create mode 100644 doc/sf_and_dist/equations/bessel2.mml create mode 100644 doc/sf_and_dist/equations/bessel2.png create mode 100644 doc/sf_and_dist/equations/bessel2.svg create mode 100644 doc/sf_and_dist/equations/bessel3.mml create mode 100644 doc/sf_and_dist/equations/bessel3.png create mode 100644 doc/sf_and_dist/equations/bessel3.svg create mode 100644 doc/sf_and_dist/equations/bessel4.mml create mode 100644 doc/sf_and_dist/equations/bessel4.png create mode 100644 doc/sf_and_dist/equations/bessel4.svg create mode 100644 doc/sf_and_dist/equations/bessel5.mml create mode 100644 doc/sf_and_dist/equations/bessel5.png create mode 100644 doc/sf_and_dist/equations/bessel5.svg create mode 100644 doc/sf_and_dist/equations/bessel6.mml create mode 100644 doc/sf_and_dist/equations/bessel6.png create mode 100644 doc/sf_and_dist/equations/bessel6.svg create mode 100644 doc/sf_and_dist/equations/bessel7.mml create mode 100644 doc/sf_and_dist/equations/bessel7.png create mode 100644 doc/sf_and_dist/equations/bessel7.svg create mode 100644 doc/sf_and_dist/equations/bessel8.mml create mode 100644 doc/sf_and_dist/equations/bessel8.png create mode 100644 doc/sf_and_dist/equations/bessel8.svg create mode 100644 doc/sf_and_dist/equations/bessel9.mml create mode 100644 doc/sf_and_dist/equations/bessel9.png create mode 100644 doc/sf_and_dist/equations/bessel9.svg create mode 100644 doc/sf_and_dist/equations/beta1.mml create mode 100644 doc/sf_and_dist/equations/beta1.png create mode 100644 doc/sf_and_dist/equations/beta1.svg create mode 100644 doc/sf_and_dist/equations/beta2.mml create mode 100644 doc/sf_and_dist/equations/beta2.png create mode 100644 doc/sf_and_dist/equations/beta2.svg create mode 100644 doc/sf_and_dist/equations/beta3.mml create mode 100644 doc/sf_and_dist/equations/beta3.png create mode 100644 doc/sf_and_dist/equations/beta3.svg create mode 100644 doc/sf_and_dist/equations/beta4.mml create mode 100644 doc/sf_and_dist/equations/beta4.png create mode 100644 doc/sf_and_dist/equations/beta4.svg create mode 100644 doc/sf_and_dist/equations/beta5.mml create mode 100644 doc/sf_and_dist/equations/beta5.png create mode 100644 doc/sf_and_dist/equations/beta5.svg create mode 100644 doc/sf_and_dist/equations/beta6.mml create mode 100644 doc/sf_and_dist/equations/beta6.png create mode 100644 doc/sf_and_dist/equations/beta6.svg create mode 100644 doc/sf_and_dist/equations/beta7.mml create mode 100644 doc/sf_and_dist/equations/beta7.png create mode 100644 doc/sf_and_dist/equations/beta7.svg create mode 100644 doc/sf_and_dist/equations/beta8.mml create mode 100644 doc/sf_and_dist/equations/beta8.png create mode 100644 doc/sf_and_dist/equations/beta8.svg create mode 100644 doc/sf_and_dist/equations/beta_dist_kurtosis.mml create mode 100644 doc/sf_and_dist/equations/beta_dist_kurtosis.png create mode 100644 doc/sf_and_dist/equations/beta_dist_kurtosis.svg create mode 100644 doc/sf_and_dist/equations/binomial_ref1.mml create mode 100644 doc/sf_and_dist/equations/binomial_ref1.png create mode 100644 doc/sf_and_dist/equations/binomial_ref1.svg create mode 100644 doc/sf_and_dist/equations/binomial_ref2.mml create mode 100644 doc/sf_and_dist/equations/binomial_ref2.png create mode 100644 doc/sf_and_dist/equations/binomial_ref2.svg create mode 100644 doc/sf_and_dist/equations/cauchy_ref1.mml create mode 100644 doc/sf_and_dist/equations/cauchy_ref1.png create mode 100644 doc/sf_and_dist/equations/cauchy_ref1.svg create mode 100644 doc/sf_and_dist/equations/chf.mml create mode 100644 doc/sf_and_dist/equations/chf.png create mode 100644 doc/sf_and_dist/equations/chf.svg create mode 100644 doc/sf_and_dist/equations/chi_squ_ref1.mml create mode 100644 doc/sf_and_dist/equations/chi_squ_ref1.png create mode 100644 doc/sf_and_dist/equations/chi_squ_ref1.svg create mode 100644 doc/sf_and_dist/equations/chi_squ_tut1.mml create mode 100644 doc/sf_and_dist/equations/chi_squ_tut1.png create mode 100644 doc/sf_and_dist/equations/chi_squ_tut1.svg create mode 100644 doc/sf_and_dist/equations/chi_squ_tut2.mml create mode 100644 doc/sf_and_dist/equations/chi_squ_tut2.png create mode 100644 doc/sf_and_dist/equations/chi_squ_tut2.svg create mode 100644 doc/sf_and_dist/equations/chi_squ_tut3.mml create mode 100644 doc/sf_and_dist/equations/chi_squ_tut3.png create mode 100644 doc/sf_and_dist/equations/chi_squ_tut3.svg create mode 100644 doc/sf_and_dist/equations/derivative1.mml create mode 100644 doc/sf_and_dist/equations/derivative1.png create mode 100644 doc/sf_and_dist/equations/derivative1.svg create mode 100644 doc/sf_and_dist/equations/derivative2.mml create mode 100644 doc/sf_and_dist/equations/derivative2.png create mode 100644 doc/sf_and_dist/equations/derivative2.svg create mode 100644 doc/sf_and_dist/equations/digamma1.mml create mode 100644 doc/sf_and_dist/equations/digamma1.png create mode 100644 doc/sf_and_dist/equations/digamma1.svg create mode 100644 doc/sf_and_dist/equations/digamma2.mml create mode 100644 doc/sf_and_dist/equations/digamma2.png create mode 100644 doc/sf_and_dist/equations/digamma2.svg create mode 100644 doc/sf_and_dist/equations/digamma3.mml create mode 100644 doc/sf_and_dist/equations/digamma3.png create mode 100644 doc/sf_and_dist/equations/digamma3.svg create mode 100644 doc/sf_and_dist/equations/dist_tutorial1.mml create mode 100644 doc/sf_and_dist/equations/dist_tutorial1.png create mode 100644 doc/sf_and_dist/equations/dist_tutorial1.svg create mode 100644 doc/sf_and_dist/equations/dist_tutorial2.mml create mode 100644 doc/sf_and_dist/equations/dist_tutorial2.png create mode 100644 doc/sf_and_dist/equations/dist_tutorial2.svg create mode 100644 doc/sf_and_dist/equations/dist_tutorial3.mml create mode 100644 doc/sf_and_dist/equations/dist_tutorial3.png create mode 100644 doc/sf_and_dist/equations/dist_tutorial3.svg create mode 100644 doc/sf_and_dist/equations/dist_tutorial4.mml create mode 100644 doc/sf_and_dist/equations/dist_tutorial4.png create mode 100644 doc/sf_and_dist/equations/dist_tutorial4.svg create mode 100644 doc/sf_and_dist/equations/ellint1.mml create mode 100644 doc/sf_and_dist/equations/ellint1.png create mode 100644 doc/sf_and_dist/equations/ellint1.svg create mode 100644 doc/sf_and_dist/equations/ellint10.mml create mode 100644 doc/sf_and_dist/equations/ellint10.png create mode 100644 doc/sf_and_dist/equations/ellint10.svg create mode 100644 doc/sf_and_dist/equations/ellint11.mml create mode 100644 doc/sf_and_dist/equations/ellint11.png create mode 100644 doc/sf_and_dist/equations/ellint11.svg create mode 100644 doc/sf_and_dist/equations/ellint12.mml create mode 100644 doc/sf_and_dist/equations/ellint12.png create mode 100644 doc/sf_and_dist/equations/ellint12.svg create mode 100644 doc/sf_and_dist/equations/ellint13.mml create mode 100644 doc/sf_and_dist/equations/ellint13.png create mode 100644 doc/sf_and_dist/equations/ellint13.svg create mode 100644 doc/sf_and_dist/equations/ellint14.mml create mode 100644 doc/sf_and_dist/equations/ellint14.png create mode 100644 doc/sf_and_dist/equations/ellint14.svg create mode 100644 doc/sf_and_dist/equations/ellint15.mml create mode 100644 doc/sf_and_dist/equations/ellint15.png create mode 100644 doc/sf_and_dist/equations/ellint15.svg create mode 100644 doc/sf_and_dist/equations/ellint16.mml create mode 100644 doc/sf_and_dist/equations/ellint16.png create mode 100644 doc/sf_and_dist/equations/ellint16.svg create mode 100644 doc/sf_and_dist/equations/ellint17.mml create mode 100644 doc/sf_and_dist/equations/ellint17.png create mode 100644 doc/sf_and_dist/equations/ellint17.svg create mode 100644 doc/sf_and_dist/equations/ellint18.mml create mode 100644 doc/sf_and_dist/equations/ellint18.png create mode 100644 doc/sf_and_dist/equations/ellint18.svg create mode 100644 doc/sf_and_dist/equations/ellint19.mml create mode 100644 doc/sf_and_dist/equations/ellint19.png create mode 100644 doc/sf_and_dist/equations/ellint19.svg create mode 100644 doc/sf_and_dist/equations/ellint2.mml create mode 100644 doc/sf_and_dist/equations/ellint2.png create mode 100644 doc/sf_and_dist/equations/ellint2.svg create mode 100644 doc/sf_and_dist/equations/ellint20.mml create mode 100644 doc/sf_and_dist/equations/ellint20.png create mode 100644 doc/sf_and_dist/equations/ellint20.svg create mode 100644 doc/sf_and_dist/equations/ellint21.mml create mode 100644 doc/sf_and_dist/equations/ellint21.png create mode 100644 doc/sf_and_dist/equations/ellint21.svg create mode 100644 doc/sf_and_dist/equations/ellint22.mml create mode 100644 doc/sf_and_dist/equations/ellint22.png create mode 100644 doc/sf_and_dist/equations/ellint22.svg create mode 100644 doc/sf_and_dist/equations/ellint23.mml create mode 100644 doc/sf_and_dist/equations/ellint23.png create mode 100644 doc/sf_and_dist/equations/ellint23.svg create mode 100644 doc/sf_and_dist/equations/ellint24.mml create mode 100644 doc/sf_and_dist/equations/ellint24.png create mode 100644 doc/sf_and_dist/equations/ellint24.svg create mode 100644 doc/sf_and_dist/equations/ellint25.mml create mode 100644 doc/sf_and_dist/equations/ellint25.png create mode 100644 doc/sf_and_dist/equations/ellint25.svg create mode 100644 doc/sf_and_dist/equations/ellint26.mml create mode 100644 doc/sf_and_dist/equations/ellint26.png create mode 100644 doc/sf_and_dist/equations/ellint26.svg create mode 100644 doc/sf_and_dist/equations/ellint3.mml create mode 100644 doc/sf_and_dist/equations/ellint3.png create mode 100644 doc/sf_and_dist/equations/ellint3.svg create mode 100644 doc/sf_and_dist/equations/ellint4.mml create mode 100644 doc/sf_and_dist/equations/ellint4.png create mode 100644 doc/sf_and_dist/equations/ellint4.svg create mode 100644 doc/sf_and_dist/equations/ellint5.mml create mode 100644 doc/sf_and_dist/equations/ellint5.png create mode 100644 doc/sf_and_dist/equations/ellint5.svg create mode 100644 doc/sf_and_dist/equations/ellint6.mml create mode 100644 doc/sf_and_dist/equations/ellint6.png create mode 100644 doc/sf_and_dist/equations/ellint6.svg create mode 100644 doc/sf_and_dist/equations/ellint7.mml create mode 100644 doc/sf_and_dist/equations/ellint7.png create mode 100644 doc/sf_and_dist/equations/ellint7.svg create mode 100644 doc/sf_and_dist/equations/ellint8.mml create mode 100644 doc/sf_and_dist/equations/ellint8.png create mode 100644 doc/sf_and_dist/equations/ellint8.svg create mode 100644 doc/sf_and_dist/equations/ellint9.mml create mode 100644 doc/sf_and_dist/equations/ellint9.png create mode 100644 doc/sf_and_dist/equations/ellint9.svg create mode 100644 doc/sf_and_dist/equations/erf1.mml create mode 100644 doc/sf_and_dist/equations/erf1.png create mode 100644 doc/sf_and_dist/equations/erf1.svg create mode 100644 doc/sf_and_dist/equations/erf2.mml create mode 100644 doc/sf_and_dist/equations/erf2.png create mode 100644 doc/sf_and_dist/equations/erf2.svg create mode 100644 doc/sf_and_dist/equations/error1.mml create mode 100644 doc/sf_and_dist/equations/error1.png create mode 100644 doc/sf_and_dist/equations/error1.svg create mode 100644 doc/sf_and_dist/equations/error2.mml create mode 100644 doc/sf_and_dist/equations/error2.png create mode 100644 doc/sf_and_dist/equations/error2.svg create mode 100644 doc/sf_and_dist/equations/exponential_dist_ref1.mml create mode 100644 doc/sf_and_dist/equations/exponential_dist_ref1.png create mode 100644 doc/sf_and_dist/equations/exponential_dist_ref1.svg create mode 100644 doc/sf_and_dist/equations/fisher_pdf.mml create mode 100644 doc/sf_and_dist/equations/fisher_pdf.png create mode 100644 doc/sf_and_dist/equations/fisher_pdf.svg create mode 100644 doc/sf_and_dist/equations/fraction1.mml create mode 100644 doc/sf_and_dist/equations/fraction1.png create mode 100644 doc/sf_and_dist/equations/fraction1.svg create mode 100644 doc/sf_and_dist/equations/fraction2.mml create mode 100644 doc/sf_and_dist/equations/fraction2.png create mode 100644 doc/sf_and_dist/equations/fraction2.svg create mode 100644 doc/sf_and_dist/equations/fraction3.mml create mode 100644 doc/sf_and_dist/equations/fraction3.png create mode 100644 doc/sf_and_dist/equations/fraction3.svg create mode 100644 doc/sf_and_dist/equations/fraction4.mml create mode 100644 doc/sf_and_dist/equations/fraction4.png create mode 100644 doc/sf_and_dist/equations/fraction4.svg create mode 100644 doc/sf_and_dist/equations/gamm1.mml create mode 100644 doc/sf_and_dist/equations/gamm1.png create mode 100644 doc/sf_and_dist/equations/gamm1.svg create mode 100644 doc/sf_and_dist/equations/gamm2.mml create mode 100644 doc/sf_and_dist/equations/gamm2.png create mode 100644 doc/sf_and_dist/equations/gamm2.svg create mode 100644 doc/sf_and_dist/equations/gamm3.mml create mode 100644 doc/sf_and_dist/equations/gamm3.png create mode 100644 doc/sf_and_dist/equations/gamm3.svg create mode 100644 doc/sf_and_dist/equations/gamm4.mml create mode 100644 doc/sf_and_dist/equations/gamm4.png create mode 100644 doc/sf_and_dist/equations/gamm4.svg create mode 100644 doc/sf_and_dist/equations/gamm5.mml create mode 100644 doc/sf_and_dist/equations/gamm5.png create mode 100644 doc/sf_and_dist/equations/gamm5.svg create mode 100644 doc/sf_and_dist/equations/gamma_dist_ref1.mml create mode 100644 doc/sf_and_dist/equations/gamma_dist_ref1.png create mode 100644 doc/sf_and_dist/equations/gamma_dist_ref1.svg create mode 100644 doc/sf_and_dist/equations/gamma_dist_ref2.mml create mode 100644 doc/sf_and_dist/equations/gamma_dist_ref2.png create mode 100644 doc/sf_and_dist/equations/gamma_dist_ref2.svg create mode 100644 doc/sf_and_dist/equations/gamma_ratio0.mml create mode 100644 doc/sf_and_dist/equations/gamma_ratio0.png create mode 100644 doc/sf_and_dist/equations/gamma_ratio0.svg create mode 100644 doc/sf_and_dist/equations/gamma_ratio1.mml create mode 100644 doc/sf_and_dist/equations/gamma_ratio1.png create mode 100644 doc/sf_and_dist/equations/gamma_ratio1.svg create mode 100644 doc/sf_and_dist/equations/hazard.mml create mode 100644 doc/sf_and_dist/equations/hazard.png create mode 100644 doc/sf_and_dist/equations/hazard.svg create mode 100644 doc/sf_and_dist/equations/hermite_0.mml create mode 100644 doc/sf_and_dist/equations/hermite_0.png create mode 100644 doc/sf_and_dist/equations/hermite_0.svg create mode 100644 doc/sf_and_dist/equations/hermite_1.mml create mode 100644 doc/sf_and_dist/equations/hermite_1.png create mode 100644 doc/sf_and_dist/equations/hermite_1.svg create mode 100644 doc/sf_and_dist/equations/hypot.mml create mode 100644 doc/sf_and_dist/equations/hypot.png create mode 100644 doc/sf_and_dist/equations/hypot.svg create mode 100644 doc/sf_and_dist/equations/hypot2.mml create mode 100644 doc/sf_and_dist/equations/hypot2.png create mode 100644 doc/sf_and_dist/equations/hypot2.svg create mode 100644 doc/sf_and_dist/equations/ibeta1.mml create mode 100644 doc/sf_and_dist/equations/ibeta1.png create mode 100644 doc/sf_and_dist/equations/ibeta1.svg create mode 100644 doc/sf_and_dist/equations/ibeta10.mml create mode 100644 doc/sf_and_dist/equations/ibeta10.png create mode 100644 doc/sf_and_dist/equations/ibeta10.svg create mode 100644 doc/sf_and_dist/equations/ibeta11.mml create mode 100644 doc/sf_and_dist/equations/ibeta11.png create mode 100644 doc/sf_and_dist/equations/ibeta11.svg create mode 100644 doc/sf_and_dist/equations/ibeta12.mml create mode 100644 doc/sf_and_dist/equations/ibeta12.png create mode 100644 doc/sf_and_dist/equations/ibeta12.svg create mode 100644 doc/sf_and_dist/equations/ibeta2.mml create mode 100644 doc/sf_and_dist/equations/ibeta2.png create mode 100644 doc/sf_and_dist/equations/ibeta2.svg create mode 100644 doc/sf_and_dist/equations/ibeta3.mml create mode 100644 doc/sf_and_dist/equations/ibeta3.png create mode 100644 doc/sf_and_dist/equations/ibeta3.svg create mode 100644 doc/sf_and_dist/equations/ibeta4.mml create mode 100644 doc/sf_and_dist/equations/ibeta4.png create mode 100644 doc/sf_and_dist/equations/ibeta4.svg create mode 100644 doc/sf_and_dist/equations/ibeta5.mml create mode 100644 doc/sf_and_dist/equations/ibeta5.png create mode 100644 doc/sf_and_dist/equations/ibeta5.svg create mode 100644 doc/sf_and_dist/equations/ibeta6.mml create mode 100644 doc/sf_and_dist/equations/ibeta6.png create mode 100644 doc/sf_and_dist/equations/ibeta6.svg create mode 100644 doc/sf_and_dist/equations/ibeta7.mml create mode 100644 doc/sf_and_dist/equations/ibeta7.png create mode 100644 doc/sf_and_dist/equations/ibeta7.svg create mode 100644 doc/sf_and_dist/equations/ibeta8.mml create mode 100644 doc/sf_and_dist/equations/ibeta8.png create mode 100644 doc/sf_and_dist/equations/ibeta8.svg create mode 100644 doc/sf_and_dist/equations/ibeta9.mml create mode 100644 doc/sf_and_dist/equations/ibeta9.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv1.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv1.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv1.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv2.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv2.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv2.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv3.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv3.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv3.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv4.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv4.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv4.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv5.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv5.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv5.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv6.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv6.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv6.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv7.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv7.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv7.svg create mode 100644 doc/sf_and_dist/equations/ibeta_inv8.mml create mode 100644 doc/sf_and_dist/equations/ibeta_inv8.png create mode 100644 doc/sf_and_dist/equations/ibeta_inv8.svg create mode 100644 doc/sf_and_dist/equations/igamma1.mml create mode 100644 doc/sf_and_dist/equations/igamma1.png create mode 100644 doc/sf_and_dist/equations/igamma1.svg create mode 100644 doc/sf_and_dist/equations/igamma10.mml create mode 100644 doc/sf_and_dist/equations/igamma10.png create mode 100644 doc/sf_and_dist/equations/igamma10.svg create mode 100644 doc/sf_and_dist/equations/igamma11.mml create mode 100644 doc/sf_and_dist/equations/igamma11.png create mode 100644 doc/sf_and_dist/equations/igamma11.svg create mode 100644 doc/sf_and_dist/equations/igamma11b.mml create mode 100644 doc/sf_and_dist/equations/igamma11b.png create mode 100644 doc/sf_and_dist/equations/igamma11b.svg create mode 100644 doc/sf_and_dist/equations/igamma12.mml create mode 100644 doc/sf_and_dist/equations/igamma12.png create mode 100644 doc/sf_and_dist/equations/igamma12.svg create mode 100644 doc/sf_and_dist/equations/igamma13.mml create mode 100644 doc/sf_and_dist/equations/igamma13.png create mode 100644 doc/sf_and_dist/equations/igamma13.svg create mode 100644 doc/sf_and_dist/equations/igamma16.mml create mode 100644 doc/sf_and_dist/equations/igamma16.png create mode 100644 doc/sf_and_dist/equations/igamma16.svg create mode 100644 doc/sf_and_dist/equations/igamma17.mml create mode 100644 doc/sf_and_dist/equations/igamma17.png create mode 100644 doc/sf_and_dist/equations/igamma17.svg create mode 100644 doc/sf_and_dist/equations/igamma18.mml create mode 100644 doc/sf_and_dist/equations/igamma18.png create mode 100644 doc/sf_and_dist/equations/igamma18.svg create mode 100644 doc/sf_and_dist/equations/igamma19.mml create mode 100644 doc/sf_and_dist/equations/igamma19.png create mode 100644 doc/sf_and_dist/equations/igamma19.svg create mode 100644 doc/sf_and_dist/equations/igamma1f.mml create mode 100644 doc/sf_and_dist/equations/igamma1f.png create mode 100644 doc/sf_and_dist/equations/igamma1f.svg create mode 100644 doc/sf_and_dist/equations/igamma2.mml create mode 100644 doc/sf_and_dist/equations/igamma2.png create mode 100644 doc/sf_and_dist/equations/igamma2.svg create mode 100644 doc/sf_and_dist/equations/igamma2f.mml create mode 100644 doc/sf_and_dist/equations/igamma2f.png create mode 100644 doc/sf_and_dist/equations/igamma2f.svg create mode 100644 doc/sf_and_dist/equations/igamma3.mml create mode 100644 doc/sf_and_dist/equations/igamma3.png create mode 100644 doc/sf_and_dist/equations/igamma3.svg create mode 100644 doc/sf_and_dist/equations/igamma4.mml create mode 100644 doc/sf_and_dist/equations/igamma4.png create mode 100644 doc/sf_and_dist/equations/igamma4.svg create mode 100644 doc/sf_and_dist/equations/igamma5.mml create mode 100644 doc/sf_and_dist/equations/igamma5.png create mode 100644 doc/sf_and_dist/equations/igamma5.svg create mode 100644 doc/sf_and_dist/equations/igamma6.mml create mode 100644 doc/sf_and_dist/equations/igamma6.png create mode 100644 doc/sf_and_dist/equations/igamma6.svg create mode 100644 doc/sf_and_dist/equations/igamma7.mml create mode 100644 doc/sf_and_dist/equations/igamma7.png create mode 100644 doc/sf_and_dist/equations/igamma7.svg create mode 100644 doc/sf_and_dist/equations/igamma8.mml create mode 100644 doc/sf_and_dist/equations/igamma8.png create mode 100644 doc/sf_and_dist/equations/igamma8.svg create mode 100644 doc/sf_and_dist/equations/igamma9.mml create mode 100644 doc/sf_and_dist/equations/igamma9.png create mode 100644 doc/sf_and_dist/equations/igamma9.svg create mode 100644 doc/sf_and_dist/equations/laguerre_0.mml create mode 100644 doc/sf_and_dist/equations/laguerre_0.png create mode 100644 doc/sf_and_dist/equations/laguerre_0.svg create mode 100644 doc/sf_and_dist/equations/laguerre_1.mml create mode 100644 doc/sf_and_dist/equations/laguerre_1.png create mode 100644 doc/sf_and_dist/equations/laguerre_1.svg create mode 100644 doc/sf_and_dist/equations/laguerre_2.mml create mode 100644 doc/sf_and_dist/equations/laguerre_2.png create mode 100644 doc/sf_and_dist/equations/laguerre_2.svg create mode 100644 doc/sf_and_dist/equations/laguerre_3.mml create mode 100644 doc/sf_and_dist/equations/laguerre_3.png create mode 100644 doc/sf_and_dist/equations/laguerre_3.svg create mode 100644 doc/sf_and_dist/equations/lanczos0.mml create mode 100644 doc/sf_and_dist/equations/lanczos0.png create mode 100644 doc/sf_and_dist/equations/lanczos0.svg create mode 100644 doc/sf_and_dist/equations/lanczos0a.mml create mode 100644 doc/sf_and_dist/equations/lanczos0a.png create mode 100644 doc/sf_and_dist/equations/lanczos0a.svg create mode 100644 doc/sf_and_dist/equations/lanczos0b.mml create mode 100644 doc/sf_and_dist/equations/lanczos0b.png create mode 100644 doc/sf_and_dist/equations/lanczos0b.svg create mode 100644 doc/sf_and_dist/equations/lanczos1.mml create mode 100644 doc/sf_and_dist/equations/lanczos1.png create mode 100644 doc/sf_and_dist/equations/lanczos1.svg create mode 100644 doc/sf_and_dist/equations/lanczos2.mml create mode 100644 doc/sf_and_dist/equations/lanczos2.png create mode 100644 doc/sf_and_dist/equations/lanczos2.svg create mode 100644 doc/sf_and_dist/equations/lanczos3.mml create mode 100644 doc/sf_and_dist/equations/lanczos3.png create mode 100644 doc/sf_and_dist/equations/lanczos3.svg create mode 100644 doc/sf_and_dist/equations/lanczos4.mml create mode 100644 doc/sf_and_dist/equations/lanczos4.png create mode 100644 doc/sf_and_dist/equations/lanczos4.svg create mode 100644 doc/sf_and_dist/equations/lanczos5.mml create mode 100644 doc/sf_and_dist/equations/lanczos5.png create mode 100644 doc/sf_and_dist/equations/lanczos5.svg create mode 100644 doc/sf_and_dist/equations/lanczos6.mml create mode 100644 doc/sf_and_dist/equations/lanczos6.png create mode 100644 doc/sf_and_dist/equations/lanczos6.svg create mode 100644 doc/sf_and_dist/equations/lanczos7.mml create mode 100644 doc/sf_and_dist/equations/lanczos7.png create mode 100644 doc/sf_and_dist/equations/lanczos7.svg create mode 100644 doc/sf_and_dist/equations/legendre_0.mml create mode 100644 doc/sf_and_dist/equations/legendre_0.png create mode 100644 doc/sf_and_dist/equations/legendre_0.svg create mode 100644 doc/sf_and_dist/equations/legendre_1.mml create mode 100644 doc/sf_and_dist/equations/legendre_1.png create mode 100644 doc/sf_and_dist/equations/legendre_1.svg create mode 100644 doc/sf_and_dist/equations/legendre_2.mml create mode 100644 doc/sf_and_dist/equations/legendre_2.png create mode 100644 doc/sf_and_dist/equations/legendre_2.svg create mode 100644 doc/sf_and_dist/equations/legendre_3.mml create mode 100644 doc/sf_and_dist/equations/legendre_3.png create mode 100644 doc/sf_and_dist/equations/legendre_3.svg create mode 100644 doc/sf_and_dist/equations/legendre_4.mml create mode 100644 doc/sf_and_dist/equations/legendre_4.png create mode 100644 doc/sf_and_dist/equations/legendre_4.svg create mode 100644 doc/sf_and_dist/equations/legendre_5.mml create mode 100644 doc/sf_and_dist/equations/legendre_5.png create mode 100644 doc/sf_and_dist/equations/legendre_5.svg create mode 100644 doc/sf_and_dist/equations/lgamm1.mml create mode 100644 doc/sf_and_dist/equations/lgamm1.png create mode 100644 doc/sf_and_dist/equations/lgamm1.svg create mode 100644 doc/sf_and_dist/equations/lgamm2.mml create mode 100644 doc/sf_and_dist/equations/lgamm2.png create mode 100644 doc/sf_and_dist/equations/lgamm2.svg create mode 100644 doc/sf_and_dist/equations/lgamm3.mml create mode 100644 doc/sf_and_dist/equations/lgamm3.png create mode 100644 doc/sf_and_dist/equations/lgamm3.svg create mode 100644 doc/sf_and_dist/equations/lgamm4.mml create mode 100644 doc/sf_and_dist/equations/lgamm4.png create mode 100644 doc/sf_and_dist/equations/lgamm4.svg create mode 100644 doc/sf_and_dist/equations/lgamm5.mml create mode 100644 doc/sf_and_dist/equations/lgamm5.png create mode 100644 doc/sf_and_dist/equations/lgamm5.svg create mode 100644 doc/sf_and_dist/equations/lgamm6.mml create mode 100644 doc/sf_and_dist/equations/lgamm6.png create mode 100644 doc/sf_and_dist/equations/lgamm6.svg create mode 100644 doc/sf_and_dist/equations/log1pseries.mml create mode 100644 doc/sf_and_dist/equations/log1pseries.png create mode 100644 doc/sf_and_dist/equations/log1pseries.svg create mode 100644 doc/sf_and_dist/equations/lognormal_ref.mml create mode 100644 doc/sf_and_dist/equations/lognormal_ref.png create mode 100644 doc/sf_and_dist/equations/lognormal_ref.svg create mode 100644 doc/sf_and_dist/equations/mbessel1.mml create mode 100644 doc/sf_and_dist/equations/mbessel1.png create mode 100644 doc/sf_and_dist/equations/mbessel1.svg create mode 100644 doc/sf_and_dist/equations/mbessel10.mml create mode 100644 doc/sf_and_dist/equations/mbessel10.png create mode 100644 doc/sf_and_dist/equations/mbessel10.svg create mode 100644 doc/sf_and_dist/equations/mbessel11.mml create mode 100644 doc/sf_and_dist/equations/mbessel11.png create mode 100644 doc/sf_and_dist/equations/mbessel11.svg create mode 100644 doc/sf_and_dist/equations/mbessel12.mml create mode 100644 doc/sf_and_dist/equations/mbessel12.png create mode 100644 doc/sf_and_dist/equations/mbessel12.svg create mode 100644 doc/sf_and_dist/equations/mbessel13.mml create mode 100644 doc/sf_and_dist/equations/mbessel13.png create mode 100644 doc/sf_and_dist/equations/mbessel13.svg create mode 100644 doc/sf_and_dist/equations/mbessel14.mml create mode 100644 doc/sf_and_dist/equations/mbessel14.png create mode 100644 doc/sf_and_dist/equations/mbessel14.svg create mode 100644 doc/sf_and_dist/equations/mbessel15.mml create mode 100644 doc/sf_and_dist/equations/mbessel15.png create mode 100644 doc/sf_and_dist/equations/mbessel15.svg create mode 100644 doc/sf_and_dist/equations/mbessel16.mml create mode 100644 doc/sf_and_dist/equations/mbessel16.png create mode 100644 doc/sf_and_dist/equations/mbessel16.svg create mode 100644 doc/sf_and_dist/equations/mbessel2.mml create mode 100644 doc/sf_and_dist/equations/mbessel2.png create mode 100644 doc/sf_and_dist/equations/mbessel2.svg create mode 100644 doc/sf_and_dist/equations/mbessel3.mml create mode 100644 doc/sf_and_dist/equations/mbessel3.png create mode 100644 doc/sf_and_dist/equations/mbessel3.svg create mode 100644 doc/sf_and_dist/equations/mbessel4.mml create mode 100644 doc/sf_and_dist/equations/mbessel4.png create mode 100644 doc/sf_and_dist/equations/mbessel4.svg create mode 100644 doc/sf_and_dist/equations/mbessel5.mml create mode 100644 doc/sf_and_dist/equations/mbessel5.png create mode 100644 doc/sf_and_dist/equations/mbessel5.svg create mode 100644 doc/sf_and_dist/equations/mbessel6.mml create mode 100644 doc/sf_and_dist/equations/mbessel6.png create mode 100644 doc/sf_and_dist/equations/mbessel6.svg create mode 100644 doc/sf_and_dist/equations/mbessel7.mml create mode 100644 doc/sf_and_dist/equations/mbessel7.png create mode 100644 doc/sf_and_dist/equations/mbessel7.svg create mode 100644 doc/sf_and_dist/equations/mbessel8.mml create mode 100644 doc/sf_and_dist/equations/mbessel8.png create mode 100644 doc/sf_and_dist/equations/mbessel8.svg create mode 100644 doc/sf_and_dist/equations/mbessel9.mml create mode 100644 doc/sf_and_dist/equations/mbessel9.png create mode 100644 doc/sf_and_dist/equations/mbessel9.svg create mode 100644 doc/sf_and_dist/equations/neg_binomial_ref.mml create mode 100644 doc/sf_and_dist/equations/neg_binomial_ref.png create mode 100644 doc/sf_and_dist/equations/neg_binomial_ref.svg create mode 100644 doc/sf_and_dist/equations/normal_ref1.mml create mode 100644 doc/sf_and_dist/equations/normal_ref1.png create mode 100644 doc/sf_and_dist/equations/normal_ref1.svg create mode 100644 doc/sf_and_dist/equations/poisson_ref1.mml create mode 100644 doc/sf_and_dist/equations/poisson_ref1.png create mode 100644 doc/sf_and_dist/equations/poisson_ref1.svg create mode 100644 doc/sf_and_dist/equations/roots1.mml create mode 100644 doc/sf_and_dist/equations/roots1.png create mode 100644 doc/sf_and_dist/equations/roots1.svg create mode 100644 doc/sf_and_dist/equations/roots2.mml create mode 100644 doc/sf_and_dist/equations/roots2.png create mode 100644 doc/sf_and_dist/equations/roots2.svg create mode 100644 doc/sf_and_dist/equations/roots3.mml create mode 100644 doc/sf_and_dist/equations/roots3.png create mode 100644 doc/sf_and_dist/equations/roots3.svg create mode 100644 doc/sf_and_dist/equations/roots4.mml create mode 100644 doc/sf_and_dist/equations/roots4.png create mode 100644 doc/sf_and_dist/equations/roots4.svg create mode 100644 doc/sf_and_dist/equations/sbessel1.mml create mode 100644 doc/sf_and_dist/equations/sbessel1.png create mode 100644 doc/sf_and_dist/equations/sbessel1.svg create mode 100644 doc/sf_and_dist/equations/sbessel2.mml create mode 100644 doc/sf_and_dist/equations/sbessel2.png create mode 100644 doc/sf_and_dist/equations/sbessel2.svg create mode 100644 doc/sf_and_dist/equations/sbessel3.mml create mode 100644 doc/sf_and_dist/equations/sbessel3.png create mode 100644 doc/sf_and_dist/equations/sbessel3.svg create mode 100644 doc/sf_and_dist/equations/sbessel4.mml create mode 100644 doc/sf_and_dist/equations/sbessel4.png create mode 100644 doc/sf_and_dist/equations/sbessel4.svg create mode 100644 doc/sf_and_dist/equations/sbessel5.mml create mode 100644 doc/sf_and_dist/equations/sbessel5.png create mode 100644 doc/sf_and_dist/equations/sbessel5.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb1.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb1.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb1.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb15.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb15.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb15.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb17.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb17.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb17.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb18.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb18.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb18.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb20.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb20.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb20.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb22.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb22.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb22.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb5.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb5.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb5.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb6.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb6.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb6.svg create mode 100644 doc/sf_and_dist/equations/special_functions_blurb7.mml create mode 100644 doc/sf_and_dist/equations/special_functions_blurb7.png create mode 100644 doc/sf_and_dist/equations/special_functions_blurb7.svg create mode 100644 doc/sf_and_dist/equations/spherical_0.mml create mode 100644 doc/sf_and_dist/equations/spherical_0.png create mode 100644 doc/sf_and_dist/equations/spherical_0.svg create mode 100644 doc/sf_and_dist/equations/spherical_1.mml create mode 100644 doc/sf_and_dist/equations/spherical_1.png create mode 100644 doc/sf_and_dist/equations/spherical_1.svg create mode 100644 doc/sf_and_dist/equations/spherical_2.mml create mode 100644 doc/sf_and_dist/equations/spherical_2.png create mode 100644 doc/sf_and_dist/equations/spherical_2.svg create mode 100644 doc/sf_and_dist/equations/students_t_dist.mml create mode 100644 doc/sf_and_dist/equations/students_t_dist.png create mode 100644 doc/sf_and_dist/equations/students_t_dist.svg create mode 100644 doc/sf_and_dist/equations/students_t_ref1.mml create mode 100644 doc/sf_and_dist/equations/students_t_ref1.png create mode 100644 doc/sf_and_dist/equations/students_t_ref1.svg create mode 100644 doc/sf_and_dist/erf.qbk create mode 100644 doc/sf_and_dist/erf_inv.qbk create mode 100644 doc/sf_and_dist/error.qbk create mode 100644 doc/sf_and_dist/error_handling.qbk create mode 100644 doc/sf_and_dist/factorials.qbk create mode 100644 doc/sf_and_dist/fpclassify.qbk create mode 100644 doc/sf_and_dist/fraction.qbk create mode 100644 doc/sf_and_dist/gamma_derivatives.qbk create mode 100644 doc/sf_and_dist/gamma_ratios.qbk create mode 100644 doc/sf_and_dist/graphs/bernoulli_cdf.png create mode 100644 doc/sf_and_dist/graphs/bernoulli_pdf.png create mode 100644 doc/sf_and_dist/graphs/bessel_i.png create mode 100644 doc/sf_and_dist/graphs/bessel_jn.png create mode 100644 doc/sf_and_dist/graphs/bessel_jv.png create mode 100644 doc/sf_and_dist/graphs/bessel_k.png create mode 100644 doc/sf_and_dist/graphs/bessel_yv.png create mode 100644 doc/sf_and_dist/graphs/beta-small.png create mode 100644 doc/sf_and_dist/graphs/beta.png create mode 100644 doc/sf_and_dist/graphs/beta_dist.png create mode 100644 doc/sf_and_dist/graphs/beta_pdf.png create mode 100644 doc/sf_and_dist/graphs/binomial_pdf.png create mode 100644 doc/sf_and_dist/graphs/binomial_pdf_1.png create mode 100644 doc/sf_and_dist/graphs/binomial_pdf_2.png create mode 100644 doc/sf_and_dist/graphs/binomial_pdf_3.png create mode 100644 doc/sf_and_dist/graphs/binomial_quantile_1.png create mode 100644 doc/sf_and_dist/graphs/cauchy1.png create mode 100644 doc/sf_and_dist/graphs/cauchy2.png create mode 100644 doc/sf_and_dist/graphs/cdf.png create mode 100644 doc/sf_and_dist/graphs/chi_square.png create mode 100644 doc/sf_and_dist/graphs/digamma.png create mode 100644 doc/sf_and_dist/graphs/ellint_1.png create mode 100644 doc/sf_and_dist/graphs/ellint_2.png create mode 100644 doc/sf_and_dist/graphs/ellint_3.png create mode 100644 doc/sf_and_dist/graphs/ellint_c.png create mode 100644 doc/sf_and_dist/graphs/erf1.png create mode 100644 doc/sf_and_dist/graphs/erf2.png create mode 100644 doc/sf_and_dist/graphs/erf_inv.png create mode 100644 doc/sf_and_dist/graphs/erfc_inv.png create mode 100644 doc/sf_and_dist/graphs/exp_on_r.png create mode 100644 doc/sf_and_dist/graphs/exponential_dist.png create mode 100644 doc/sf_and_dist/graphs/extreme_val_dist.png create mode 100644 doc/sf_and_dist/graphs/extreme_val_dist2.png create mode 100644 doc/sf_and_dist/graphs/fisher_f.png create mode 100644 doc/sf_and_dist/graphs/gamma.png create mode 100644 doc/sf_and_dist/graphs/gamma_dist1.png create mode 100644 doc/sf_and_dist/graphs/gamma_dist2.png create mode 100644 doc/sf_and_dist/graphs/gamma_p.png create mode 100644 doc/sf_and_dist/graphs/gamma_q.png create mode 100644 doc/sf_and_dist/graphs/hermite.png create mode 100644 doc/sf_and_dist/graphs/hyperbolic.png create mode 100644 doc/sf_and_dist/graphs/ibeta.png create mode 100644 doc/sf_and_dist/graphs/im_exp_on_c.png create mode 100644 doc/sf_and_dist/graphs/laguerre.png create mode 100644 doc/sf_and_dist/graphs/legendre_p1.png create mode 100644 doc/sf_and_dist/graphs/legendre_q.png create mode 100644 doc/sf_and_dist/graphs/lgamma-errors.png create mode 100644 doc/sf_and_dist/graphs/lgamma.png create mode 100644 doc/sf_and_dist/graphs/lognormal1.png create mode 100644 doc/sf_and_dist/graphs/lognormal2.png create mode 100644 doc/sf_and_dist/graphs/neg_binomial_pdf1.png create mode 100644 doc/sf_and_dist/graphs/neg_binomial_pdf2.png create mode 100644 doc/sf_and_dist/graphs/normal.png create mode 100644 doc/sf_and_dist/graphs/pdf.png create mode 100644 doc/sf_and_dist/graphs/poisson.png create mode 100644 doc/sf_and_dist/graphs/quantile.png create mode 100644 doc/sf_and_dist/graphs/rayleigh_cdf.png create mode 100644 doc/sf_and_dist/graphs/rayleigh_pdf.png create mode 100644 doc/sf_and_dist/graphs/re_exp_on_c.png create mode 100644 doc/sf_and_dist/graphs/remez-2.png create mode 100644 doc/sf_and_dist/graphs/remez-3.png create mode 100644 doc/sf_and_dist/graphs/remez-4.png create mode 100644 doc/sf_and_dist/graphs/remez-5.png create mode 100644 doc/sf_and_dist/graphs/sinc_pi_and_sinhc_pi_on_r.png create mode 100644 doc/sf_and_dist/graphs/sph_bessel_j.png create mode 100644 doc/sf_and_dist/graphs/sph_bessel_y.png create mode 100644 doc/sf_and_dist/graphs/students_t.png create mode 100644 doc/sf_and_dist/graphs/survival.png create mode 100644 doc/sf_and_dist/graphs/survival_inv.png create mode 100644 doc/sf_and_dist/graphs/triangular_cdf.png create mode 100644 doc/sf_and_dist/graphs/triangular_pdf.png create mode 100644 doc/sf_and_dist/graphs/trigonometric.png create mode 100644 doc/sf_and_dist/graphs/uniform_cdf.png create mode 100644 doc/sf_and_dist/graphs/uniform_pdf.png create mode 100644 doc/sf_and_dist/graphs/weibull.png create mode 100644 doc/sf_and_dist/graphs/weibull2.png create mode 100644 doc/sf_and_dist/hermite.qbk create mode 100644 doc/sf_and_dist/html/index.html create mode 100644 doc/sf_and_dist/html/math_toolkit/backgrounders.html create mode 100644 doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html create mode 100644 doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html create mode 100644 doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html create mode 100644 doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html create mode 100644 doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/future.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html create mode 100644 doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/contact.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/directories.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/history1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/intro.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html create mode 100644 doc/sf_and_dist/html/math_toolkit/main_overview/threads.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/comparisons.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/getting_best.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/interp.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/perf_over.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html create mode 100644 doc/sf_and_dist/html/math_toolkit/perf/tuning.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html create mode 100644 doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/bessel.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/ellint.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/factorials.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/fpclass.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_beta.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_erf.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_poly.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sinc.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html create mode 100644 doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html create mode 100644 doc/sf_and_dist/html/math_toolkit/status.html create mode 100644 doc/sf_and_dist/html/math_toolkit/status/compilers.html create mode 100644 doc/sf_and_dist/html/math_toolkit/status/credits.html create mode 100644 doc/sf_and_dist/html/math_toolkit/status/history1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/status/issues.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html create mode 100644 doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html create mode 100644 doc/sf_and_dist/html/math_toolkit/using_udt.html create mode 100644 doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html create mode 100644 doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html create mode 100644 doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html create mode 100644 doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html create mode 100644 doc/sf_and_dist/html4_symbols.qbk create mode 100644 doc/sf_and_dist/ibeta.qbk create mode 100644 doc/sf_and_dist/ibeta_inv.qbk create mode 100644 doc/sf_and_dist/igamma.qbk create mode 100644 doc/sf_and_dist/igamma_inv.qbk create mode 100644 doc/sf_and_dist/implementation.qbk create mode 100644 doc/sf_and_dist/internals_overview.qbk create mode 100644 doc/sf_and_dist/inv_hyper.qbk create mode 100644 doc/sf_and_dist/issues.qbk create mode 100644 doc/sf_and_dist/laguerre.qbk create mode 100644 doc/sf_and_dist/lanczos.qbk create mode 100644 doc/sf_and_dist/latin1_symbols.qbk create mode 100644 doc/sf_and_dist/legendre.qbk create mode 100644 doc/sf_and_dist/lgamma.qbk create mode 100644 doc/sf_and_dist/license.qbk create mode 100644 doc/sf_and_dist/math.qbk create mode 100644 doc/sf_and_dist/minima.qbk create mode 100644 doc/sf_and_dist/minimax.qbk create mode 100644 doc/sf_and_dist/overview.qbk create mode 100644 doc/sf_and_dist/performance.qbk create mode 100644 doc/sf_and_dist/poisson_optimisation.qbk create mode 100644 doc/sf_and_dist/policy.qbk create mode 100644 doc/sf_and_dist/policy_tutorial.qbk create mode 100644 doc/sf_and_dist/polynomial.qbk create mode 100644 doc/sf_and_dist/powers.qbk create mode 100644 doc/sf_and_dist/rational.qbk create mode 100644 doc/sf_and_dist/references.qbk create mode 100644 doc/sf_and_dist/relative_error.qbk create mode 100644 doc/sf_and_dist/remez.qbk create mode 100644 doc/sf_and_dist/result_type_calc.qbk create mode 100644 doc/sf_and_dist/roadmap.qbk create mode 100644 doc/sf_and_dist/roots.qbk create mode 100644 doc/sf_and_dist/roots_without_derivatives.qbk create mode 100644 doc/sf_and_dist/series.qbk create mode 100644 doc/sf_and_dist/sinc.qbk create mode 100644 doc/sf_and_dist/spherical_harmonic.qbk create mode 100644 doc/sf_and_dist/structure.qbk create mode 100644 doc/sf_and_dist/test_data.qbk create mode 100644 doc/sf_and_dist/test_html4_symbols.qbk create mode 100644 doc/sf_and_dist/tgamma.qbk create mode 100644 doc/sf_and_dist/thread_safety.qbk create mode 100644 doc/sf_and_dist/win32_nmake.mak create mode 100644 doc/svg-admon/caution.svg create mode 100644 doc/svg-admon/home.svg create mode 100644 doc/svg-admon/important.svg create mode 100644 doc/svg-admon/next.svg create mode 100644 doc/svg-admon/note.svg create mode 100644 doc/svg-admon/prev.svg create mode 100644 doc/svg-admon/tip.svg create mode 100644 doc/svg-admon/up.svg create mode 100644 doc/svg-admon/warning.svg create mode 100644 example/Jamfile.v2 create mode 100644 example/binomial_coinflip_example.cpp create mode 100644 example/binomial_confidence_limits.cpp create mode 100644 example/binomial_example3.cpp create mode 100644 example/binomial_example_nag.cpp create mode 100644 example/binomial_quiz_example.cpp create mode 100644 example/binomial_sample_sizes.cpp create mode 100644 example/c_error_policy_example.cpp create mode 100644 example/chi_square_std_dev_test.cpp create mode 100644 example/distribution_construction.cpp create mode 100644 example/error_handling_example.cpp create mode 100644 example/error_policies_example.cpp create mode 100644 example/error_policy_example.cpp create mode 100644 example/f_test.cpp create mode 100644 example/find_location_example.cpp create mode 100644 example/find_mean_and_sd_normal.cpp create mode 100644 example/find_root_example.cpp create mode 100644 example/find_scale_example.cpp create mode 100644 example/neg_binom_confidence_limits.cpp create mode 100644 example/neg_binomial_sample_sizes.cpp create mode 100644 example/negative_binomial_example1.cpp create mode 100644 example/negative_binomial_example2.cpp create mode 100644 example/normal_misc_examples.cpp create mode 100644 example/policy_eg_1.cpp create mode 100644 example/policy_eg_10.cpp create mode 100644 example/policy_eg_2.cpp create mode 100644 example/policy_eg_3.cpp create mode 100644 example/policy_eg_4.cpp create mode 100644 example/policy_eg_5.cpp create mode 100644 example/policy_eg_6.cpp create mode 100644 example/policy_eg_7.cpp create mode 100644 example/policy_eg_8.cpp create mode 100644 example/policy_eg_9.cpp create mode 100644 example/policy_ref_snip1.cpp create mode 100644 example/policy_ref_snip10.cpp create mode 100644 example/policy_ref_snip11.cpp create mode 100644 example/policy_ref_snip12.cpp create mode 100644 example/policy_ref_snip13.cpp create mode 100644 example/policy_ref_snip2.cpp create mode 100644 example/policy_ref_snip3.cpp create mode 100644 example/policy_ref_snip4.cpp create mode 100644 example/policy_ref_snip5.cpp create mode 100644 example/policy_ref_snip6.cpp create mode 100644 example/policy_ref_snip7.cpp create mode 100644 example/policy_ref_snip8.cpp create mode 100644 example/policy_ref_snip9.cpp create mode 100644 example/students_t_example1.cpp create mode 100644 example/students_t_example2.cpp create mode 100644 example/students_t_example3.cpp create mode 100644 example/students_t_single_sample.cpp create mode 100644 example/students_t_two_samples.cpp create mode 100644 minimax/f.cpp create mode 100644 minimax/main.cpp create mode 100644 performance/Jamfile.v2 create mode 100644 performance/distributions.cpp create mode 100644 performance/main.cpp create mode 100644 performance/performance_measure.hpp create mode 100644 performance/required_defines.hpp create mode 100644 performance/test_erf.cpp create mode 100644 performance/test_gamma.cpp create mode 100644 performance/test_ibeta.cpp create mode 100644 performance/test_igamma.cpp create mode 100644 performance/test_polynomial.cpp create mode 100644 performance/test_reference.cpp create mode 100644 test/acosh_test.hpp create mode 100644 test/asinh_test.hpp create mode 100644 test/assoc_legendre_p.ipp create mode 100644 test/atanh_test.hpp create mode 100644 test/bessel_i_data.ipp create mode 100644 test/bessel_i_int_data.ipp create mode 100644 test/bessel_j_data.ipp create mode 100644 test/bessel_j_int_data.ipp create mode 100644 test/bessel_j_large_data.ipp create mode 100644 test/bessel_k_data.ipp create mode 100644 test/bessel_k_int_data.ipp create mode 100644 test/bessel_y01_data.ipp create mode 100644 test/bessel_yn_data.ipp create mode 100644 test/bessel_yv_data.ipp create mode 100644 test/beta_exp_data.ipp create mode 100644 test/beta_med_data.ipp create mode 100644 test/beta_small_data.ipp create mode 100644 test/binomial_data.ipp create mode 100644 test/binomial_large_data.ipp create mode 100644 test/binomial_quantile.ipp create mode 100644 test/cbrt_data.ipp create mode 100644 test/compile_test/dist_bernoulli_incl_test.cpp create mode 100644 test/compile_test/dist_beta_incl_test.cpp create mode 100644 test/compile_test/dist_binomial_incl_test.cpp create mode 100644 test/compile_test/dist_cauchy_incl_test.cpp create mode 100644 test/compile_test/dist_chi_squared_incl_test.cpp create mode 100644 test/compile_test/dist_complement_incl_test.cpp create mode 100644 test/compile_test/dist_exponential_incl_test.cpp create mode 100644 test/compile_test/dist_extreme_val_incl_test.cpp create mode 100644 test/compile_test/dist_fisher_f_incl_test.cpp create mode 100644 test/compile_test/dist_gamma_incl_test.cpp create mode 100644 test/compile_test/dist_lognormal_incl_test.cpp create mode 100644 test/compile_test/dist_neg_binom_incl_test.cpp create mode 100644 test/compile_test/dist_normal_incl_test.cpp create mode 100644 test/compile_test/dist_pareto_incl_test.cpp create mode 100644 test/compile_test/dist_poisson_incl_test.cpp create mode 100644 test/compile_test/dist_students_t_incl_test.cpp create mode 100644 test/compile_test/dist_triangular_incl_test.cpp create mode 100644 test/compile_test/dist_uniform_incl_test.cpp create mode 100644 test/compile_test/dist_weibull_incl_test.cpp create mode 100644 test/compile_test/distribution_concept_check.cpp create mode 100755 test/compile_test/generate.sh create mode 100644 test/compile_test/instantiate.hpp create mode 100644 test/compile_test/sf_bessel_incl_test.cpp create mode 100644 test/compile_test/sf_beta_incl_test.cpp create mode 100644 test/compile_test/sf_binomial_incl_test.cpp create mode 100644 test/compile_test/sf_cbrt_incl_test.cpp create mode 100644 test/compile_test/sf_cos_pi_incl_test.cpp create mode 100644 test/compile_test/sf_digamma_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_1_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_2_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_3_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_rc_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_rd_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_rf_incl_test.cpp create mode 100644 test/compile_test/sf_ellint_rj_incl_test.cpp create mode 100644 test/compile_test/sf_erf_incl_test.cpp create mode 100644 test/compile_test/sf_expm1_incl_test.cpp create mode 100644 test/compile_test/sf_factorials_incl_test.cpp create mode 100644 test/compile_test/sf_fpclassify_incl_test.cpp create mode 100644 test/compile_test/sf_gamma_incl_test.cpp create mode 100644 test/compile_test/sf_hermite_incl_test.cpp create mode 100644 test/compile_test/sf_hypot_incl_test.cpp create mode 100644 test/compile_test/sf_laguerre_incl_test.cpp create mode 100644 test/compile_test/sf_lanczos_incl_test.cpp create mode 100644 test/compile_test/sf_legendre_incl_test.cpp create mode 100644 test/compile_test/sf_log1p_incl_test.cpp create mode 100644 test/compile_test/sf_math_fwd_incl_test.cpp create mode 100644 test/compile_test/sf_powm1_incl_test.cpp create mode 100644 test/compile_test/sf_sign_incl_test.cpp create mode 100644 test/compile_test/sf_sin_pi_incl_test.cpp create mode 100644 test/compile_test/sf_sinc_incl_test.cpp create mode 100644 test/compile_test/sf_sinhc_incl_test.cpp create mode 100644 test/compile_test/sf_sph_harm_incl_test.cpp create mode 100644 test/compile_test/sf_sqrt1pm1_incl_test.cpp create mode 100644 test/compile_test/std_real_concept_check.cpp create mode 100644 test/compile_test/test_compile_result.hpp create mode 100644 test/compile_test/test_traits.cpp create mode 100644 test/compile_test/tools_config_inc_test.cpp create mode 100644 test/compile_test/tools_fraction_inc_test.cpp create mode 100644 test/compile_test/tools_minima_inc_test.cpp create mode 100644 test/compile_test/tools_polynomial_inc_test.cpp create mode 100644 test/compile_test/tools_precision_inc_test.cpp create mode 100644 test/compile_test/tools_rational_inc_test.cpp create mode 100644 test/compile_test/tools_real_cast_inc_test.cpp create mode 100644 test/compile_test/tools_remez_inc_test.cpp create mode 100644 test/compile_test/tools_roots_inc_test.cpp create mode 100644 test/compile_test/tools_series_inc_test.cpp create mode 100644 test/compile_test/tools_solve_inc_test.cpp create mode 100644 test/compile_test/tools_stats_inc_test.cpp create mode 100644 test/compile_test/tools_test_data_inc_test.cpp create mode 100644 test/compile_test/tools_test_inc_test.cpp create mode 100644 test/compile_test/tools_toms748_inc_test.cpp create mode 100644 test/digamma_data.ipp create mode 100644 test/digamma_neg_data.ipp create mode 100644 test/digamma_root_data.ipp create mode 100644 test/digamma_small_data.ipp create mode 100644 test/ellint_e2_data.ipp create mode 100644 test/ellint_e_data.ipp create mode 100644 test/ellint_f_data.ipp create mode 100644 test/ellint_k_data.ipp create mode 100644 test/ellint_pi2_data.ipp create mode 100644 test/ellint_pi3_data.ipp create mode 100644 test/ellint_pi3_large_data.ipp create mode 100644 test/ellint_rc_data.ipp create mode 100644 test/ellint_rd_data.ipp create mode 100644 test/ellint_rf_data.ipp create mode 100644 test/ellint_rj_data.ipp create mode 100644 test/erf_data.ipp create mode 100644 test/erf_inv_data.ipp create mode 100644 test/erf_large_data.ipp create mode 100644 test/erf_small_data.ipp create mode 100644 test/erfc_inv_big_data.ipp create mode 100644 test/erfc_inv_data.ipp create mode 100644 test/functor.hpp create mode 100644 test/gamma_inv_big_data.ipp create mode 100644 test/gamma_inv_data.ipp create mode 100644 test/gamma_inv_small_data.ipp create mode 100644 test/handle_test_result.hpp create mode 100644 test/hermite.ipp create mode 100644 test/ibeta_data.ipp create mode 100644 test/ibeta_int_data.ipp create mode 100644 test/ibeta_inv_data.ipp create mode 100644 test/ibeta_inva_data.ipp create mode 100644 test/ibeta_large_data.ipp create mode 100644 test/ibeta_small_data.ipp create mode 100644 test/igamma_big_data.ipp create mode 100644 test/igamma_int_data.ipp create mode 100644 test/igamma_inva_data.ipp create mode 100644 test/igamma_med_data.ipp create mode 100644 test/igamma_small_data.ipp create mode 100644 test/laguerre2.ipp create mode 100644 test/laguerre3.ipp create mode 100644 test/legendre_p.ipp create mode 100644 test/legendre_p_large.ipp create mode 100644 test/log1p_expm1_data.ipp create mode 100644 test/negative_binomial_quantile.ipp create mode 100644 test/poisson_quantile.ipp create mode 100644 test/powm1_sqrtp1m1_test.cpp create mode 100644 test/sinc_test.hpp create mode 100644 test/sinhc_test.hpp create mode 100644 test/special_functions_test.cpp create mode 100644 test/sph_bessel_data.ipp create mode 100644 test/sph_neumann_data.ipp create mode 100644 test/spherical_harmonic.ipp create mode 100644 test/std_real_concept_check.cpp create mode 100644 test/test_bernoulli.cpp create mode 100644 test/test_bessel_hooks.hpp create mode 100644 test/test_bessel_i.cpp create mode 100644 test/test_bessel_j.cpp create mode 100644 test/test_bessel_k.cpp create mode 100644 test/test_bessel_y.cpp create mode 100644 test/test_beta.cpp create mode 100644 test/test_beta_dist.cpp create mode 100644 test/test_beta_hooks.hpp create mode 100644 test/test_binomial.cpp create mode 100644 test/test_binomial_coeff.cpp create mode 100644 test/test_carlson.cpp create mode 100644 test/test_cauchy.cpp create mode 100644 test/test_cbrt.cpp create mode 100644 test/test_chi_squared.cpp create mode 100644 test/test_classify.cpp create mode 100644 test/test_constants.cpp create mode 100644 test/test_digamma.cpp create mode 100644 test/test_dist_overloads.cpp create mode 100644 test/test_ellint_1.cpp create mode 100644 test/test_ellint_2.cpp create mode 100644 test/test_ellint_3.cpp create mode 100644 test/test_erf.cpp create mode 100644 test/test_erf_hooks.hpp create mode 100644 test/test_error_handling.cpp create mode 100644 test/test_exponential_dist.cpp create mode 100644 test/test_extreme_value.cpp create mode 100644 test/test_factorials.cpp create mode 100644 test/test_find_location.cpp create mode 100644 test/test_find_scale.cpp create mode 100644 test/test_fisher_f.cpp create mode 100644 test/test_gamma.cpp create mode 100644 test/test_gamma_data.ipp create mode 100644 test/test_gamma_dist.cpp create mode 100644 test/test_gamma_hooks.hpp create mode 100644 test/test_hermite.cpp create mode 100644 test/test_ibeta.cpp create mode 100644 test/test_ibeta_inv.cpp create mode 100644 test/test_ibeta_inv_ab.cpp create mode 100644 test/test_igamma.cpp create mode 100644 test/test_igamma_inv.cpp create mode 100644 test/test_igamma_inva.cpp create mode 100644 test/test_instantiate1.cpp create mode 100644 test/test_instantiate2.cpp create mode 100644 test/test_laguerre.cpp create mode 100644 test/test_legendre.cpp create mode 100644 test/test_legendre_hooks.hpp create mode 100644 test/test_lognormal.cpp create mode 100644 test/test_minima.cpp create mode 100644 test/test_negative_binomial.cpp create mode 100644 test/test_normal.cpp create mode 100644 test/test_pareto.cpp create mode 100644 test/test_poisson.cpp create mode 100644 test/test_policy.cpp create mode 100644 test/test_policy_2.cpp create mode 100644 test/test_policy_sf.cpp create mode 100644 test/test_rational_instances/test_rational.hpp create mode 100644 test/test_rational_instances/test_rational_double1.cpp create mode 100644 test/test_rational_instances/test_rational_double2.cpp create mode 100644 test/test_rational_instances/test_rational_double3.cpp create mode 100644 test/test_rational_instances/test_rational_double4.cpp create mode 100644 test/test_rational_instances/test_rational_double5.cpp create mode 100644 test/test_rational_instances/test_rational_float1.cpp create mode 100644 test/test_rational_instances/test_rational_float2.cpp create mode 100644 test/test_rational_instances/test_rational_float3.cpp create mode 100644 test/test_rational_instances/test_rational_float4.cpp create mode 100644 test/test_rational_instances/test_rational_ldouble1.cpp create mode 100644 test/test_rational_instances/test_rational_ldouble2.cpp create mode 100644 test/test_rational_instances/test_rational_ldouble3.cpp create mode 100644 test/test_rational_instances/test_rational_ldouble4.cpp create mode 100644 test/test_rational_instances/test_rational_ldouble5.cpp create mode 100644 test/test_rational_instances/test_rational_real_concept1.cpp create mode 100644 test/test_rational_instances/test_rational_real_concept2.cpp create mode 100644 test/test_rational_instances/test_rational_real_concept3.cpp create mode 100644 test/test_rational_instances/test_rational_real_concept4.cpp create mode 100644 test/test_rational_instances/test_rational_real_concept5.cpp create mode 100644 test/test_rationals.cpp create mode 100644 test/test_rayleigh.cpp create mode 100644 test/test_remez.cpp create mode 100644 test/test_roots.cpp create mode 100644 test/test_spherical_harmonic.cpp create mode 100644 test/test_students_t.cpp create mode 100644 test/test_tgamma_ratio.cpp create mode 100644 test/test_toms748_solve.cpp create mode 100644 test/test_triangular.cpp create mode 100644 test/test_uniform.cpp create mode 100644 test/test_weibull.cpp create mode 100644 test/tgamma_delta_ratio_data.ipp create mode 100644 test/tgamma_delta_ratio_int.ipp create mode 100644 test/tgamma_delta_ratio_int2.ipp create mode 100644 test/tgamma_ratio_data.ipp create mode 100644 tools/bessel_data.cpp create mode 100644 tools/beta_data.cpp create mode 100644 tools/carlson_ellint_data.cpp create mode 100644 tools/cbrt_data.cpp create mode 100644 tools/digamma_data.cpp create mode 100644 tools/ellint_e_data.cpp create mode 100644 tools/ellint_f_data.cpp create mode 100644 tools/ellint_k_data.cpp create mode 100644 tools/ellint_pi2_data.cpp create mode 100644 tools/ellint_pi3_data.cpp create mode 100644 tools/erf_data.cpp create mode 100644 tools/factorial_tables.cpp create mode 100644 tools/gamma_P_inva_data.cpp create mode 100644 tools/generate_rational_code.cpp create mode 100644 tools/generate_rational_test.cpp create mode 100644 tools/hermite_data.cpp create mode 100644 tools/ibeta_data.cpp create mode 100644 tools/ibeta_inv_data.cpp create mode 100644 tools/ibeta_invab_data.cpp create mode 100644 tools/igamma_data.cpp create mode 100644 tools/igamma_temme_large_coef.cpp create mode 100644 tools/laguerre_data.cpp create mode 100644 tools/lanczos_generator.cpp create mode 100644 tools/legendre_data.cpp create mode 100644 tools/log1p_expm1_data.cpp create mode 100644 tools/ntl_rr_digamma.hpp create mode 100644 tools/ntl_rr_lanczos.hpp create mode 100644 tools/process_perf_results.cpp create mode 100644 tools/rational_tests.cpp create mode 100644 tools/spherical_harmonic_data.cpp create mode 100644 tools/tgamma_ratio_data.cpp create mode 100644 vc71_fix/Jamfile.v2 create mode 100644 vc71_fix/instantiate_all.cpp diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 150f48476..ee4e89619 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -10,8 +10,27 @@ boostbook standalone : math : - nav.layout=none - navig.graphics=0 + # Path for links to Boost: + boost.root=../../../.. + # Path for libraries index: + boost.libraries=../../../../libs/libraries.htm + # Use the main Boost stylesheet: + html.stylesheet=../../../../doc/html/boostbook.css + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=1 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=0 + # How far down sections get TOC's + toc.section.depth=1 ; + diff --git a/doc/common_factor.html b/doc/common_factor.html index 932356890..d0b6309db 100644 --- a/doc/common_factor.html +++ b/doc/common_factor.html @@ -1,11 +1,11 @@ - + Automatic redirection failed, please go to - ../../../doc/html/boost_math/gcd_lcm.html + gcd/html/index.html

Copyright Daryle Walker 2006

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

@@ -15,3 +15,4 @@ + diff --git a/doc/complex/Jamfile.v2 b/doc/complex/Jamfile.v2 new file mode 100644 index 000000000..f43fb240f --- /dev/null +++ b/doc/complex/Jamfile.v2 @@ -0,0 +1,80 @@ + +# Copyright John Maddock 2005. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml complex-tr1 : complex-tr1.qbk ; +boostbook standalone + : + complex-tr1 + : + # Path for links to Boost: + boost.root=../../../../.. + # Path for libraries index: + boost.libraries=../../../../../libs/libraries.htm + # Use the main Boost stylesheet: + html.stylesheet=../../../../../doc/html/boostbook.css + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=1 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + generate.section.toc.level=10 + #root.filename="sf_dist_and_tools" + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + # fop1.extensions=1 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:admon.graphics.path=$(images_location)/../../svg-admon/ + pdf:draft.mode="no" + ; + + + + + + + + + + + + + diff --git a/doc/math-tr1.qbk b/doc/complex/complex-tr1.qbk similarity index 78% rename from doc/math-tr1.qbk rename to doc/complex/complex-tr1.qbk index 6287a7de3..f825f273b 100644 --- a/doc/math-tr1.qbk +++ b/doc/complex/complex-tr1.qbk @@ -1,17 +1,32 @@ +[article Complex Number TR1 Algorithms + [quickbook 1.4] + [copyright 2005 John Maddock] + [purpose Complex number arithmetic] + [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]) + ] + [authors [Maddock, John]] + [category math] + [last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $] +] + [def __effects [*Effects: ]] [def __formula [*Formula: ]] [def __exm1 '''ex - 1'''] [def __ex '''ex'''] [def __te '''2ε'''] +[template tr1[] [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Technical Report on C++ Library Extensions]] [section:inverse_complex Complex Number Inverse Trigonometric Functions] The following complex number algorithms are the inverses of trigonometric functions currently present in the C++ standard. Equivalents to these functions are part of the C99 standard, and -will be part of the forthcoming Technical Report on C++ Standard Library Extensions. +are part of the [tr1]. -[section Implementation and Accuracy] +[section:implementation Implementation and Accuracy] Although there are deceptively simple formulae available for all of these functions, a naive implementation that used these formulae would fail catastrophically for some input @@ -40,7 +55,7 @@ on the implementation methodology. __effects returns the inverse sine of the complex number z. -__formula [$../../libs/math/doc/images/asin.png] +__formula [$../../images/asin.png] [endsect] @@ -57,7 +72,7 @@ __formula [$../../libs/math/doc/images/asin.png] __effects returns the inverse cosine of the complex number z. -__formula [$../../libs/math/doc/images/acos.png] +__formula [$../../images/acos.png] [endsect] @@ -74,7 +89,7 @@ __formula [$../../libs/math/doc/images/acos.png] __effects returns the inverse tangent of the complex number z. -__formula [$../../libs/math/doc/images/atan.png] +__formula [$../../images/atan.png] [endsect] @@ -91,7 +106,7 @@ __formula [$../../libs/math/doc/images/atan.png] __effects returns the inverse hyperbolic sine of the complex number z. -__formula [$../../libs/math/doc/images/asinh.png] +__formula [$../../images/asinh.png] [endsect] @@ -108,7 +123,7 @@ __formula [$../../libs/math/doc/images/asinh.png] __effects returns the inverse hyperbolic cosine of the complex number z. -__formula [$../../libs/math/doc/images/acosh.png] +__formula [$../../images/acosh.png] [endsect] @@ -125,7 +140,7 @@ __formula [$../../libs/math/doc/images/acosh.png] __effects returns the inverse hyperbolic tangent of the complex number z. -__formula [$../../libs/math/doc/images/atanh.png] +__formula [$../../images/atanh.png] [endsect] @@ -140,3 +155,4 @@ __formula [$../../libs/math/doc/images/atanh.png] [endsect] + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html new file mode 100644 index 000000000..159b354ac --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex.html @@ -0,0 +1,68 @@ + + + + Complex + Number Inverse Trigonometric Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ + +

+ The following complex number algorithms are the inverses of trigonometric functions + currently present in the C++ standard. Equivalents to these functions are part + of the C99 standard, and are part of the Technical + Report on C++ Library Extensions. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html new file mode 100644 index 000000000..fea581b6d --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acos.html @@ -0,0 +1,69 @@ + + + + + acos + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Header: +

+
+#include <boost/math/complex/acos.hpp>
+
+

+ + Synopsis: +

+
+template<class T> 
+std::complex<T> acos(const std::complex<T>& z);
+
+

+ Effects: returns the inverse cosine of + the complex number z. +

+

+ Formula: acos +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html new file mode 100644 index 000000000..abd8957fd --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/acosh.html @@ -0,0 +1,69 @@ + + + + + acosh + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Header: +

+
+#include <boost/math/complex/acosh.hpp>
+
+

+ + Synopsis: +

+
+template<class T> 
+std::complex<T> acosh(const std::complex<T>& z);
+
+

+ Effects: returns the inverse hyperbolic + cosine of the complex number z. +

+

+ Formula: acosh +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html new file mode 100644 index 000000000..e784b48b5 --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asin.html @@ -0,0 +1,69 @@ + + + + + asin + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Header: +

+
+#include <boost/math/complex/asin.hpp>
+
+

+ + Synopsis: +

+
+template<class T> 
+std::complex<T> asin(const std::complex<T>& z);
+
+

+ Effects: returns the inverse sine of the + complex number z. +

+

+ Formula: asin +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html new file mode 100644 index 000000000..a7b1d67d2 --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/asinh.html @@ -0,0 +1,69 @@ + + + + + asinh + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Header: +

+
+#include <boost/math/complex/asinh.hpp>
+
+

+ + Synopsis: +

+
+template<class T> 
+std::complex<T> asinh(const std::complex<T>& z);
+
+

+ Effects: returns the inverse hyperbolic + sine of the complex number z. +

+

+ Formula: asinh +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html new file mode 100644 index 000000000..bab5195f0 --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atan.html @@ -0,0 +1,69 @@ + + + + + atan + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Header: +

+
+#include <boost/math/complex/atan.hpp>
+
+

+ + Synopsis: +

+
+template<class T> 
+std::complex<T> atan(const std::complex<T>& z);
+
+

+ Effects: returns the inverse tangent of + the complex number z. +

+

+ Formula: atan +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html new file mode 100644 index 000000000..66cde8890 --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/atanh.html @@ -0,0 +1,68 @@ + + + + + atanh + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Header: +

+
+#include <boost/math/complex/atanh.hpp>
+
+

+ + Synopsis: +

+
+template<class T> 
+std::complex<T> atanh(const std::complex<T>& z);
+
+

+ Effects: returns the inverse hyperbolic + tangent of the complex number z. +

+

+ Formula: atanh +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html new file mode 100644 index 000000000..8d5402586 --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/history.html @@ -0,0 +1,50 @@ + + + +History + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHome +
+
+ +
    +
  • + 2005/12/17: Added support for platforms with no meaningful numeric_limits<>::infinity(). +
  • +
  • + 2005/12/01: Initial version, added as part of the TR1 library. +
  • +
+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html new file mode 100644 index 000000000..43ba7b7d8 --- /dev/null +++ b/doc/complex/html/complex_number_tr1_algorithms/inverse_complex/implementation.html @@ -0,0 +1,64 @@ + + + + + Implementation and Accuracy + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Although there are deceptively simple formulae available for all of these + functions, a naive implementation that used these formulae would fail catastrophically + for some input values. The Boost versions of these functions have been implemented + using the methodology described in "Implementing the Complex Arcsine + and Arccosine Functions Using Exception Handling" by T. E. Hull Thomas + F. Fairgrieve and Ping Tak Peter Tang, ACM Transactions on Mathematical Software, + Vol. 23, No. 3, September 1997. This means that the functions are well defined + over the entire complex number range, and produce accurate values even at + the extremes of that range, where as a naive formula would cause overflow + or underflow to occur during the calculation, even though the result is actually + a representable value. The maximum theoretical relative error for all of + these functions is less than 9.5E for every machine-representable point in + the complex plane. Please refer to comments in the header files themselves + and to the above mentioned paper for more information on the implementation + methodology. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/complex/html/index.html b/doc/complex/html/index.html new file mode 100644 index 000000000..7481583b5 --- /dev/null +++ b/doc/complex/html/index.html @@ -0,0 +1,72 @@ + + + +Complex Number TR1 Algorithms + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
Next
+
+
+
+

+Complex Number TR1 Algorithms

+

+John Maddock +

+
+
+

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

+
+
+
+
+ +
+ + + +

Last revised: December 29, 2006 at 11:08:32 +0000

+
+
Next
+ + diff --git a/doc/gcd/Jamfile.v2 b/doc/gcd/Jamfile.v2 new file mode 100644 index 000000000..e7bcf5da1 --- /dev/null +++ b/doc/gcd/Jamfile.v2 @@ -0,0 +1,70 @@ + +# Copyright John Maddock 2005. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml math-gcd : math-gcd.qbk ; +boostbook standalone + : + math-gcd + : + # Path for links to Boost: + boost.root=../../../../.. + # Path for libraries index: + boost.libraries=../../../../../libs/libraries.htm + # Use the main Boost stylesheet: + html.stylesheet=../../../../../doc/html/boostbook.css + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=1 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + generate.section.toc.level=10 + #root.filename="sf_dist_and_tools" + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + # fop1.extensions=1 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:admon.graphics.path=$(images_location)/../../svg-admon/ + pdf:draft.mode="no" + ; + + + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm.html new file mode 100644 index 000000000..7e6de349f --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm.html @@ -0,0 +1,61 @@ + + + + Greatest Common Divisor and Least + Common Multiple + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html new file mode 100644 index 000000000..3f342cb77 --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/compile_time.html @@ -0,0 +1,101 @@ + + + + Compile time GCD and + LCM determination + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Header: <boost/math/common_factor_ct.hpp> +

+
+template < unsigned long Value1, unsigned long Value2 >
+struct boost::math::static_gcd
+{
+   static unsigned long const  value = implementation_defined;
+};
+
+template < unsigned long Value1, unsigned long Value2 >
+struct boost::math::static_lcm
+{
+   static unsigned long const  value = implementation_defined;
+};
+
+

+ The boost::math::static_gcd and boost::math::static_lcm class templates take + two value-based template parameters of the unsigned long type and have a + single static constant data member, value, of that same type. The value of + that member is the greatest common factor or least common multiple, respectively, + of the template arguments. A compile-time error will occur if the least common + multiple is beyond the range of an unsigned long. +

+

+ + Example +

+
+#include <boost/math/common_factor.hpp>
+#include <algorithm>
+#include <iterator>
+
+
+int main()
+{
+   using std::cout;
+   using std::endl;
+
+   cout << "The GCD and LCM of 6 and 15 are "
+   << boost::math::gcd(6, 15) << " and "
+   << boost::math::lcm(6, 15) << ", respectively."
+   << endl;
+
+   cout << "The GCD and LCM of 8 and 9 are "
+   << boost::math::static_gcd<8, 9>::value
+   << " and "
+   << boost::math::static_lcm<8, 9>::value
+   << ", respectively." << endl;
+
+   int  a[] = { 4, 5, 6 }, b[] = { 7, 8, 9 }, c[3];
+   std::transform( a, a + 3, b, c, boost::math::gcd_evaluator<int>() );
+   std::copy( c, c + 3, std::ostream_iterator<int>(cout, " ") );
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html new file mode 100644 index 000000000..1a7257a2a --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/credits.html @@ -0,0 +1,47 @@ + + + +Credits + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHome +
+
+ +

+ The author of the Boost compilation of GCD and LCM computations is Daryle + Walker. The code was prompted by existing code hiding in the implementations + of Paul Moore's rational library and Steve Cleary's pool library. The code + had updates by Helmut Zeisel. +

+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html new file mode 100644 index 000000000..35375b82b --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/demo.html @@ -0,0 +1,49 @@ + + + + Demonstration Program + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The program common_factor_test.cpp + is a demonstration of the results from instantiating various examples of + the run-time GCD and LCM function templates and the compile-time GCD and + LCM class templates. (The run-time GCD and LCM class templates are tested + indirectly through the run-time function templates.) +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html new file mode 100644 index 000000000..e83d7dd1e --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/gcd_function_object.html @@ -0,0 +1,77 @@ + + + +GCD Function + Object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Header: <boost/math/common_factor_rt.hpp> +

+
+template < typename IntegerType >
+class boost::math::gcd_evaluator
+{
+public:
+   // Types
+   typedef IntegerType  result_type;
+   typedef IntegerType  first_argument_type;
+   typedef IntegerType  second_argument_type;
+
+   // Function object interface
+   result_type  operator ()( first_argument_type const &a,
+   second_argument_type const &b ) const;
+};
+
+

+ The boost::math::gcd_evaluator class template defines a function object class + to return the greatest common divisor of two integers. The template is parameterized + by a single type, called IntegerType here. This type should be a numeric + type that represents integers. The result of the function object is always + nonnegative, even if either of the operator arguments is negative. +

+

+ This function object class template is used in the corresponding version + of the GCD function template. If a numeric type wants to customize evaluations + of its greatest common divisors, then the type should specialize on the gcd_evaluator + class template. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html new file mode 100644 index 000000000..c1021480a --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/header.html @@ -0,0 +1,52 @@ + + + + Header <boost/math/common_factor.hpp> + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This header simply includes the headers <boost/math/common_factor_ct.hpp> + and <boost/math/common_factor_rt.hpp>. +

+

+ Note this is a legacy header: it used to contain the actual implementation, + but the compile-time and run-time facilities were moved to separate headers + (since they were independent of each other). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html new file mode 100644 index 000000000..7f50fc731 --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/history.html @@ -0,0 +1,53 @@ + + + +History + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
    +
  • + 17 Dec 2005: Converted documentation to Quickbook Format. +
  • +
  • + 2 Jul 2002: Compile-time and run-time items separated to new headers. +
  • +
  • + 7 Nov 2001: Initial version +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html new file mode 100644 index 000000000..125a18c06 --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/introduction.html @@ -0,0 +1,49 @@ + + + +Introduction + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The class and function templates in <boost/math/common_factor.hpp> + provide run-time and compile-time evaluation of the greatest common divisor + (GCD) or least common multiple (LCM) of two integers. These facilities are + useful for many numeric-oriented generic programming problems. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html new file mode 100644 index 000000000..61b16cc6f --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/lcm_function_object.html @@ -0,0 +1,80 @@ + + + +LCM Function + Object + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Header: <boost/math/common_factor_rt.hpp> +

+
+template < typename IntegerType >
+class boost::math::lcm_evaluator
+{
+public:
+   // Types
+   typedef IntegerType  result_type;
+   typedef IntegerType  first_argument_type;
+   typedef IntegerType  second_argument_type;
+
+   // Function object interface
+   result_type  operator ()( first_argument_type const &a,
+   second_argument_type const &b ) const;
+};
+
+

+ The boost::math::lcm_evaluator class template defines a function object class + to return the least common multiple of two integers. The template is parameterized + by a single type, called IntegerType here. This type should be a numeric + type that represents integers. The result of the function object is always + nonnegative, even if either of the operator arguments is negative. If the + least common multiple is beyond the range of the integer type, the results + are undefined. +

+

+ This function object class template is used in the corresponding version + of the LCM function template. If a numeric type wants to customize evaluations + of its least common multiples, then the type should specialize on the lcm_evaluator + class template. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html new file mode 100644 index 000000000..deff5cdc0 --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/rationale.html @@ -0,0 +1,48 @@ + + + +Rationale + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The greatest common divisor and least common multiple functions are greatly + used in some numeric contexts, including some of the other Boost libraries. + Centralizing these functions to one header improves code factoring and eases + maintainence. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html new file mode 100644 index 000000000..10d621e07 --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/run_time.html @@ -0,0 +1,66 @@ + + + + Run-time GCD & LCM + Determination + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Header: <boost/math/common_factor_rt.hpp> +

+
+template < typename IntegerType >
+IntegerType  boost::math::gcd( IntegerType const &a, IntegerType const &b );
+
+template < typename IntegerType >
+IntegerType  boost::math::lcm( IntegerType const &a, IntegerType const &b );
+
+

+ The boost::math::gcd function template returns the greatest common (nonnegative) + divisor of the two integers passed to it. The boost::math::lcm function template + returns the least common (nonnegative) multiple of the two integers passed + to it. The function templates are parameterized on the function arguments' + IntegerType, which is also the return type. Internally, these function templates + use an object of the corresponding version of the gcd_evaluator and lcm_evaluator + class templates, respectively. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html b/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html new file mode 100644 index 000000000..c8a4ea276 --- /dev/null +++ b/doc/gcd/html/gcd_and_lcm/gcd_lcm/synopsis.html @@ -0,0 +1,67 @@ + + + +Synopsis + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost
+{
+namespace math
+{
+
+template < typename IntegerType >
+   class gcd_evaluator;
+template < typename IntegerType >
+   class lcm_evaluator;
+
+template < typename IntegerType >
+   IntegerType  gcd( IntegerType const &a, IntegerType const &b );
+template < typename IntegerType >
+   IntegerType  lcm( IntegerType const &a, IntegerType const &b );
+
+template < unsigned long Value1, unsigned long Value2 >
+   struct static_gcd;
+template < unsigned long Value1, unsigned long Value2 >
+   struct static_lcm;
+
+}
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/gcd/html/index.html b/doc/gcd/html/index.html new file mode 100644 index 000000000..27f350f62 --- /dev/null +++ b/doc/gcd/html/index.html @@ -0,0 +1,72 @@ + + + +GCD and LCM + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
Next
+
+
+
+

+GCD and LCM

+

+Daryle Walker +

+
+
+

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

+
+
+
+
+ +
+ + + +

Last revised: December 29, 2006 at 11:08:32 +0000

+
+
Next
+ + diff --git a/doc/math-gcd.qbk b/doc/gcd/math-gcd.qbk similarity index 83% rename from doc/math-gcd.qbk rename to doc/gcd/math-gcd.qbk index 0f5e645bd..625b2a534 100644 --- a/doc/math-gcd.qbk +++ b/doc/gcd/math-gcd.qbk @@ -1,3 +1,16 @@ +[article GCD and LCM + [quickbook 1.3] + [copyright 2001-2002 Daryle Walker] + [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]) + ] + [authors [Walker, Daryle]] + [category math] + [last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $] +] + [section:gcd_lcm Greatest Common Divisor and Least Common Multiple] @@ -40,7 +53,7 @@ programming problems. [section GCD Function Object] -[*Header: ] [@../../boost/math/common_factor_rt.hpp ] +[*Header: ] [@../../../../../boost/math/common_factor_rt.hpp ] template < typename IntegerType > class boost::math::gcd_evaluator @@ -72,7 +85,7 @@ gcd_evaluator class template. [section LCM Function Object] -[*Header: ] [@../../boost/math/common_factor_rt.hpp ] +[*Header: ] [@../../../../../boost/math/common_factor_rt.hpp ] template < typename IntegerType > class boost::math::lcm_evaluator @@ -103,9 +116,9 @@ specialize on the lcm_evaluator class template. [endsect] -[section Run-time GCD & LCM Determination] +[section:run_time Run-time GCD & LCM Determination] -[*Header: ] [@../../boost/math/common_factor_rt.hpp ] +[*Header: ] [@../../../../../boost/math/common_factor_rt.hpp ] template < typename IntegerType > IntegerType boost::math::gcd( IntegerType const &a, IntegerType const &b ); @@ -124,9 +137,9 @@ gcd_evaluator and lcm_evaluator class templates, respectively. [endsect] -[section Compile time GCD and LCM determination] +[section:compile_time Compile time GCD and LCM determination] -[*Header: ] [@../../boost/math/common_factor_ct.hpp ] +[*Header: ] [@../../../../../boost/math/common_factor_ct.hpp ] template < unsigned long Value1, unsigned long Value2 > struct boost::math::static_gcd @@ -178,11 +191,11 @@ is beyond the range of an unsigned long. [endsect] -[section Header ] +[section:header Header ] This header simply includes the headers -[@../../boost/math/common_factor_ct.hpp ] -and [@../../boost/math/common_factor_rt.hpp ]. +[@../../../../../boost/math/common_factor_ct.hpp ] +and [@../../../../../boost/math/common_factor_rt.hpp ]. Note this is a legacy header: it used to contain the actual implementation, but the compile-time and run-time facilities @@ -190,9 +203,9 @@ were moved to separate headers (since they were independent of each other). [endsect] -[section Demonstration Program] +[section:demo Demonstration Program] -The program [@../../libs/math/test/common_factor_test.cpp common_factor_test.cpp] is a demonstration of the results from +The program [@../../../../../libs/math/test/common_factor_test.cpp common_factor_test.cpp] is a demonstration of the results from instantiating various examples of the run-time GCD and LCM function templates and the compile-time GCD and LCM class templates. (The run-time GCD and LCM class templates are tested indirectly through diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 000000000..1948906a4 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,372 @@ + + + +Boost.Math + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+
+
+
+

+Boost.Math

+
+
+

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

+
+
+
+
+

+ The following mathematical libraries are present in Boost: +

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

+ Library +

+
+

+ Description +

+
+

+ Complex Number Inverse Trigonometric + Functions +

+
+

+ These complex number algorithms are the inverses of trigonometric functions + currently present in the C++ standard. Equivalents to these functions + are part of the C99 standard, and are part of the Technical + Report on C++ Library Extensions. +

+
+

+ Greatest Common Divisor and Least + Common Multiple +

+
+

+ The class and function templates in <boost/math/common_factor.hpp> + provide run-time and compile-time evaluation of the greatest common divisor + (GCD) or least common multiple (LCM) of two integers. These facilities + are useful for many numeric-oriented generic programming problems. +

+
+

+ Integer +

+
+

+ Headers to ease dealing with integral types. +

+
+

+ Interval +

+
+

+ As implied by its name, this library is intended to help manipulating + mathematical intervals. It consists of a single header <boost/numeric/interval.hpp> + and principally a type which can be used as interval<T>. +

+
+

+ Multi Array +

+
+

+ Boost.MultiArray provides a generic N-dimensional array concept definition + and common implementations of that interface. +

+
+

+ Numeric.Conversion +

+
+

+ The Boost Numeric Conversion library is a collection of tools to describe + and perform conversions between values of different numeric types. +

+
+

+ Octonions +

+
+

+ Octonions, like quaternions, + are a relative of complex numbers. +

+

+ Octonions see some use in theoretical physics. +

+

+ In practical terms, an octonion is simply an octuple of real numbers + (α,β,γ,δ,ε,ζ,η,θ), which we can write in the form o = α + βi + γj + δk + εe' + ζi' + ηj' + θk', + where i, j + and k are the same objects as + for quaternions, and e', i', + j' and k' + are distinct objects which play essentially the same kind of role as + i (or j + or k). +

+

+ Addition and a multiplication is defined on the set of octonions, which + generalize their quaternionic counterparts. The main novelty this time + is that the multiplication is not only not commutative, + is now not even associative (i.e. there are quaternions x, + y and z + such that x(yz) ≠ (xy)z). A way + of remembering things is by using the following multiplication table: +

+

+ octonion_blurb17 +

+

+ Octonions (and their kin) are described in far more details in this other + document (with errata + and addenda). +

+

+ Some traditional constructs, such as the exponential, carry over without + too much change into the realms of octonions, but other, such as taking + a square root, do not (the fact that the exponential has a closed form + is a result of the author, but the fact that the exponential exists at + all for octonions is known since quite a long time ago). +

+
+

+ Operators +

+
+

+ The header <boost/operators.hpp> supplies several sets of class + templates (in namespace boost). These templates define operators at namespace + scope in terms of a minimal number of fundamental operators provided + by the class. +

+
+

+ Special Functions +

+
+

+ Provides a number of high quality special functions, initially these + were concentrated on functions used in statistical applications along + with those in the Technical Report on C++ Library Extensions. +

+

+ The function families currently implemented are the gamma, beta & + erf functions along with the incomplete gamma and beta functions (four + variants of each) and all the possible inverses of these, plus digamma, + various factorial functions, Bessel functions, elliptic integrals, sinus + cardinals (along with their hyperbolic variants), inverse hyperbolic + functions, Legrendre/Laguerre/Hermite polynomials and various special + power and logarithmic functions. +

+

+ All the implementations are fully generic and support the use of arbitrary + "real-number" types, although they are optimised for use with + types with known-about significand (or mantissa) sizes: typically float, + double or long double. +

+
+

+ Statistical Distributions +

+
+

+ Provides a reasonably comprehensive set of statistical distributions, + upon which higher level statistical tests can be built. +

+

+ The initial focus is on the central univariate distributions. Both continuous + (like normal & Fisher) and discrete (like binomial & Poisson) + distributions are provided. +

+

+ A comprehensive tutorial is provided, along with a series of worked examples + illustrating how the library is used to conduct statistical tests. +

+
+

+ Quaternions +

+
+

+ Quaternions are a relative of complex numbers. +

+

+ Quaternions are in fact part of a small hierarchy of structures built + upon the real numbers, which comprise only the set of real numbers (traditionally + named R), the set + of complex numbers (traditionally named C), + the set of quaternions (traditionally named H) + and the set of octonions (traditionally named O), + which possess interesting mathematical properties (chief among which + is the fact that they are division algebras, i.e. + where the following property is true: if y + is an element of that algebra and is not equal + to zero, then yx = yx', + where x and x' + denote elements of that algebra, implies that x = + x'). Each member of the hierarchy is a super-set + of the former. +

+

+ One of the most important aspects of quaternions is that they provide + an efficient way to parameterize rotations in R3 + (the usual three-dimensional space) and R4. +

+

+ In practical terms, a quaternion is simply a quadruple of real numbers + (α,β,γ,δ), which we can write in the form q = α + βi + γj + δk, + where i is the same object as + for complex numbers, and j and + k are distinct objects which + play essentially the same kind of role as i. +

+

+ An addition and a multiplication is defined on the set of quaternions, + which generalize their real and complex counterparts. The main novelty + here is that the multiplication is not commutative + (i.e. there are quaternions x + and y such that xy + ≠ yx). A good mnemotechnical way of remembering things + is by using the formula i*i = j*j = k*k = -1. +

+

+ Quaternions (and their kin) are described in far more details in this + other document (with errata and addenda). +

+

+ Some traditional constructs, such as the exponential, carry over without + too much change into the realms of quaternions, but other, such as taking + a square root, do not. +

+
+

+ Random +

+
+

+ Random numbers are useful in a variety of applications. The Boost Random + Number Library (Boost.Random for short) provides a vast variety of generators + and distributions to produce random numbers having useful properties, + such as uniform distribution. +

+
+

+ Rational +

+
+

+ The header rational.hpp provides an implementation of rational numbers. + The implementation is template-based, in a similar manner to the standard + complex number class. +

+
+

+ uBLAS +

+
+

+ uBLAS is a C++ template class library that provides BLAS level 1, 2, + 3 functionality for dense, packed and sparse matrices. The design and + implementation unify mathematical notation via operator overloading and + efficient code generation via expression templates. +

+
+
+ + + +

Last revised: October 16, 2007 at 17:32:28 +0800

+
+
+ + diff --git a/doc/index.html b/doc/index.html index 419826279..20e2b748e 100644 --- a/doc/index.html +++ b/doc/index.html @@ -1,11 +1,11 @@ - + Automatic redirection failed, please go to - ../../../doc/html/boost_math.html + html/index.html

Copyright Daryle Walker, Hubert Holin and John Maddock 2006

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

@@ -14,3 +14,4 @@ + diff --git a/doc/math-background.qbk b/doc/math-background.qbk deleted file mode 100644 index 6a721979e..000000000 --- a/doc/math-background.qbk +++ /dev/null @@ -1,89 +0,0 @@ - -[def __form1 [^\]-1;1\[]] -[def __form2 [^\[0;+'''∞'''\[]] -[def __form3 [^\[+1;+'''∞'''\[]] -[def __form4 [^\]-'''∞''';0\]]] -[def __form5 [^x '''≥''' 0]] - - -[section Background Information and White Papers] - -[section The Inverse Hyperbolic Functions] - -The exponential funtion is defined, for all object for which this makes sense, -as the power series -[$../../libs/math/special_functions/graphics/special_functions_blurb1.jpeg], -with ['[^n! = 1x2x3x4x5...xn]] (and ['[^0! = 1]] by definition) being the factorial of ['[^n]]. -In particular, the exponential function is well defined for real numbers, -complex number, quaternions, octonions, and matrices of complex numbers, -among others. - -[: ['[*Graph of exp on R]] ] - -[: [$../../libs/math/special_functions/graphics/exp_on_R.png] ] - -[: ['[*Real and Imaginary parts of exp on C]]] -[: [$../../libs/math/special_functions/graphics/Im_exp_on_C.png]] - -The hyperbolic functions are defined as power series which -can be computed (for reals, complex, quaternions and octonions) as: - -Hyperbolic cosine: [$../../libs/math/special_functions/graphics/special_functions_blurb5.jpeg] - -Hyperbolic sine: [$../../libs/math/special_functions/graphics/special_functions_blurb6.jpeg] - -Hyperbolic tangent: [$../../libs/math/special_functions/graphics/special_functions_blurb7.jpeg] - -[: ['[*Trigonometric functions on R (cos: purple; sin: red; tan: blue)]]] -[: [$../../libs/math/special_functions/graphics/trigonometric.png]] - -[: ['[*Hyperbolic functions on r (cosh: purple; sinh: red; tanh: blue)]]] -[: [$../../libs/math/special_functions/graphics/hyperbolic.png]] - -The hyperbolic sine is one to one on the set of real numbers, -with range the full set of reals, while the hyperbolic tangent is -also one to one on the set of real numbers but with range __form1, and -therefore both have inverses. The hyperbolic cosine is one to one from __form2 -onto __form3 (and from __form4 onto __form3); the inverse function we use -here is defined on __form3 with range __form2. - -The inverse of the hyperbolic tangent is called the Argument hyperbolic tangent, -and can be computed as [$../../libs/math/special_functions/graphics/special_functions_blurb15.jpeg]. - -The inverse of the hyperbolic sine is called the Argument hyperbolic sine, -and can be computed (for __form5) as [$../../libs/math/special_functions/graphics/special_functions_blurb17.jpeg]. - -The inverse of the hyperbolic cosine is called the Argument hyperbolic cosine, -and can be computed as [$../../libs/math/special_functions/graphics/special_functions_blurb18.jpeg]. - -[endsect] - -[section Sinus Cardinal and Hyperbolic Sinus Cardinal Functions] - -The Sinus Cardinal family of functions (indexed by the family of indices [^a > 0]) -is defined by -[$../../libs/math/special_functions/graphics/special_functions_blurb20.jpeg]; -it sees heavy use in signal processing tasks. - -By analogy, the Hyperbolic Sinus Cardinal family of functions -(also indexed by the family of indices [^a > 0]) is defined by -[$../../libs/math/special_functions/graphics/special_functions_blurb22.jpeg]. - -These two families of functions are composed of entire functions. - -[: ['[*Sinus Cardinal of index pi (purple) and Hyperbolic Sinus Cardinal of index pi (red) on R]]] -[: [$../../libs/math/special_functions/graphics/sinc_pi_and_sinhc_pi_on_R.png]] - -[endsect] - -[section The Quaternionic Exponential] - -Please refer to the following PDF's: - -*[@../../libs/math/quaternion/TQE.pdf The Quaternionic Exponential (and beyond)] -*[@../../libs/math/quaternion/TQE_EA.pdf The Quaternionic Exponential (and beyond) ERRATA & ADDENDA] - -[endsect] - -[endsect] - diff --git a/doc/math-octonion.qbk b/doc/math-octonion.qbk deleted file mode 100644 index 8d7ecbd0e..000000000 --- a/doc/math-octonion.qbk +++ /dev/null @@ -1,983 +0,0 @@ - -[def __R ['[*R]]] -[def __C ['[*C]]] -[def __H ['[*H]]] -[def __O ['[*O]]] -[def __R3 ['[*'''R3''']]] -[def __R4 ['[*'''R4''']]] -[def __octulple ('''α,β,γ,δ,ε,ζ,η,θ''')] -[def __oct_formula ['[^o = '''α + βi + γj + δk + εe' + ζi' + ηj' + θk' ''']]] -[def __oct_complex_formula ['[^o = ('''α + βi) + (γ + δi)j + (ε + ζi)e' + (η - θi)j' ''']]] -[def __oct_quat_formula ['[^o = ('''α + βi + γj + δk) + (ε + ζi + ηj - θj)e' ''']]] -[def __oct_not_equal ['[^x(yz) '''≠''' (xy)z]]] - - -[section Octonions] - -[section Overview] - -Octonions, like [link boost_math.quaternions quaternions], are a relative of complex numbers. - -Octonions see some use in theoretical physics. - -In practical terms, an octonion is simply an octuple of real numbers __octulple, -which we can write in the form __oct_formula, where ['[^i]], ['[^j]] and ['[^k]] -are the same objects as for quaternions, and ['[^e']], ['[^i']], ['[^j']] and ['[^k']] -are distinct objects which play essentially the same kind of role as ['[^i]] (or ['[^j]] or ['[^k]]). - -Addition and a multiplication is defined on the set of octonions, -which generalize their quaternionic counterparts. The main novelty this time -is that [*the multiplication is not only not commutative, is now not even -associative] (i.e. there are quaternions ['[^x]], ['[^y]] and ['[^z]] such that __oct_not_equal). -A way of remembering things is by using the following multiplication table: - -[$../../libs/math/octonion/graphics/octonion_blurb17.jpeg] - -Octonions (and their kin) are described in far more details in this other -[@../../libs/math/quaternion/TQE.pdf document] -(with [@../../libs/math/quaternion/TQE_EA.pdf errata and addenda]). - -Some traditional constructs, such as the exponential, carry over without too -much change into the realms of octonions, but other, such as taking a square root, -do not (the fact that the exponential has a closed form is a result of the -author, but the fact that the exponential exists at all for octonions is known -since quite a long time ago). - -[endsect] - -[section Header File] - -The interface and implementation are both supplied by the header file -[@../../boost/math/octonion.hpp octonion.hpp]. - -[endsect] - -[section Synopsis] - - namespace boost{ namespace math{ - - template class ``[link boost_math.octonions.template_class_octonion octonion]``; - template<> class ``[link boost_math.octonions.octonion_specializations octonion]``; - template<> class ``[link boost_math.octonion_double octonion]``; - template<> class ``[link boost_math.octonion_long_double octonion]``; - - // operators - - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (T const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (octonion const & lhs, T const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (::std::complex const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (octonion const & lhs, ::std::complex const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_addition_operators operator +]`` (octonion const & lhs, octonion const & rhs); - - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (T const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (octonion const & lhs, T const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (::std::complex const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (octonion const & lhs, ::std::complex const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_subtraction_operators operator -]`` (octonion const & lhs, octonion const & rhs); - - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (T const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (octonion const & lhs, T const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (::std::complex const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (octonion const & lhs, ::std::complex const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_multiplication_operators operator *]`` (octonion const & lhs, octonion const & rhs); - - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (T const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (octonion const & lhs, T const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (::std::complex const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (octonion const & lhs, ::std::complex const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.binary_division_operators operator /]`` (octonion const & lhs, octonion const & rhs); - - template octonion ``[link boost_math.octonions.octonion_non_member_operators.unary_plus_and_minus_operators operator +]`` (octonion const & o); - template octonion ``[link boost_math.octonions.octonion_non_member_operators.unary_plus_and_minus_operators operator -]`` (octonion const & o); - - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (T const & lhs, octonion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (octonion const & lhs, T const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (::std::complex const & lhs, octonion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (octonion const & lhs, ::std::complex const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (::boost::math::quaternion const & lhs, octonion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_equality_operators operator ==]`` (octonion const & lhs, octonion const & rhs); - - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (T const & lhs, octonion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (octonion const & lhs, T const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (::std::complex const & lhs, octonion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (octonion const & lhs, ::std::complex const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (::boost::math::quaternion const & lhs, octonion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); - template bool ``[link boost_math.octonions.octonion_non_member_operators.binary_inequality_operators operator !=]`` (octonion const & lhs, octonion const & rhs); - - template - ::std::basic_istream & ``[link boost_math.octonions.octonion_non_member_operators.stream_extractor operator >>]`` (::std::basic_istream & is, octonion & o); - - template - ::std::basic_ostream & ``[link boost_math.octonions.octonion_non_member_operators.stream_inserter operator <<]`` (::std::basic_ostream & os, octonion const & o); - - // values - - template T ``[link boost_math.octonions.octonion_value_operations.real_and_unreal real]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonion_value_operations.real_and_unreal unreal]``(octonion const & o); - - template T ``[link boost_math.octonions.octonion_value_operations.sup sup]``(octonion const & o); - template T ``[link boost_math.octonions.octonion_value_operations.l1 l1]``(octonionconst & o); - template T ``[link boost_math.octonions.octonion_value_operations.abs abs]``(octonion const & o); - template T ``[link boost_math.octonions.octonion_value_operations.norm norm]``(octonionconst & o); - template octonion ``[link boost_math.octonions.octonion_value_operations.conj conj]``(octonion const & o); - - template octonion ``[link boost_math.octonions.quaternion_creation_functions spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6); - template octonion ``[link boost_math.octonions.quaternion_creation_functions multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4); - template octonion ``[link boost_math.octonions.quaternion_creation_functions cylindrical]``(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6); - - // transcendentals - - template octonion ``[link boost_math.octonions.octonions_transcendentals.exp exp]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonions_transcendentals.cos cos]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonions_transcendentals.sin sin]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonions_transcendentals.tan tan]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonions_transcendentals.cosh cosh]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonions_transcendentals.sinh sinh]``(octonion const & o); - template octonion ``[link boost_math.octonions.octonions_transcendentals.tanh tanh]``(octonion const & o); - - template octonion ``[link boost_math.octonions.octonions_transcendentals.pow pow]``(octonion const & o, int n); - - } } // namespaces - -[endsect] - -[section Template Class octonion] - - namespace boost{ namespace math { - - template - class octonion - { - public: - typedef T value_type; - - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - template - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - - T ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; - octonion ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; - - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; - T ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; - - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; - - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; - - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (T const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (T const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (T const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (T const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (T const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); - }; - - } } // namespaces - -[endsect] - -[section Octonion Specializations] - - namespace boost{ namespace math{ - - template<> - class octonion - { - public: - typedef float value_type; - - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - - float ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; - octonion ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; - - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; - float ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; - - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; - - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; - - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (float const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (float const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (float const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (float const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (float const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); - }; - -[#boost_math.octonion_double] - - template<> - class octonion - { - public: - typedef double value_type; - - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - - double ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; - octonion ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; - - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; - double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; - - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; - - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; - - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (double const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); - }; - -[#boost_math.octonion_long_double] - - template<> - class octonion - { - public: - typedef long double value_type; - - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``( ::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``( ::boost::math::quaternion const & q0, ::boost::math::quaternion const & z1 = ::boost::math::quaternion()); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - explicit ``[link boost_math.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); - - long double ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; - octonion ``[link boost_math.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; - - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; - long double ``[link boost_math.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; - - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; - ::std::complex ``[link boost_math.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; - - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; - ::boost::math::quaternion ``[link boost_math.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; - - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (long double const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); - octonion & ``[link boost_math.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (long double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (long double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (long double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); - - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (long double const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); - template - octonion & ``[link boost_math.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); - }; - - } } // namespaces - -[endsect] - -[section Octonion Member Typedefs] - -[*value_type] - -Template version: - - typedef T value_type; - -Float specialization version: - - typedef float value_type; - -Double specialization version: - - typedef double value_type; - -Long double specialization version: - - typedef long double value_type; - -These provide easy acces to the type the template is built upon. - -[endsect] - -[section Octonion Member Functions] - -[h3 Constructors] - -Template version: - - explicit octonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T()); - explicit octonion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - template - explicit octonion(octonion const & a_recopier); - -Float specialization version: - - explicit octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f); - explicit octonion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - explicit octonion(octonion const & a_recopier); - explicit octonion(octonion const & a_recopier); - -Double specialization version: - - explicit octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0); - explicit octonion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - explicit octonion(octonion const & a_recopier); - explicit octonion(octonion const & a_recopier); - -Long double specialization version: - - explicit octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L); - explicit octonion( ::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); - explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); - explicit octonion(octonion const & a_recopier); - explicit octonion(octonion const & a_recopier); - -A default constructor is provided for each form, which initializes each component -to the default values for their type (i.e. zero for floating numbers). -This constructor can also accept one to eight base type arguments. -A constructor is also provided to build octonions from one to four complex numbers -sharing the same base type, and another taking one or two quaternions -sharing the same base type. The unspecialized template also sports a -templarized copy constructor, while the specialized forms have copy -constructors from the other two specializations, which are explicit -when a risk of precision loss exists. For the unspecialized form, -the base type's constructors must not throw. - -Destructors and untemplated copy constructors (from the same type) -are provided by the compiler. Converting copy constructors make use -of a templated helper function in a "detail" subnamespace. - -[h3 Other member functions] - -[h4 Real and Unreal Parts] - - T real() const; - octonion unreal() const; - -Like complex number, octonions do have a meaningful notion of "real part", -but unlike them there is no meaningful notion of "imaginary part". -Instead there is an "unreal part" which itself is a octonion, -and usually nothing simpler (as opposed to the complex number case). -These are returned by the first two functions. - -[h4 Individual Real Components] - - T R_component_1() const; - T R_component_2() const; - T R_component_3() const; - T R_component_4() const; - T R_component_5() const; - T R_component_6() const; - T R_component_7() const; - T R_component_8() const; - -A octonion having eight real components, these are returned by -these eight functions. Hence real and R_component_1 return the same value. - -[h4 Individual Complex Components] - - ::std::complex C_component_1() const; - ::std::complex C_component_2() const; - ::std::complex C_component_3() const; - ::std::complex C_component_4() const; - -A octonion likewise has four complex components. Actually, octonions -are indeed a (left) vector field over the complexes, but beware, as -for any octonion __oct_formula we also have __oct_complex_formula -(note the [*minus] sign in the last factor). -What the C_component_n functions return, however, are the complexes -which could be used to build the octonion using the constructor, and -[*not] the components of the octonion on the basis ['[^(1, j, e', j')]]. - -[h4 Individual Quaternion Components] - - ::boost::math::quaternion H_component_1() const; - ::boost::math::quaternion H_component_2() const; - -Likewise, for any octonion __oct_formula we also have __oct_quat_formula, though there -is no meaningful vector-space-like structure based on the quaternions. -What the H_component_n functions return are the quaternions which -could be used to build the octonion using the constructor. - -[h3 Octonion Member Operators] -[h4 Assignment Operators] - - octonion & operator = (octonion const & a_affecter); - template - octonion & operator = (octonion const & a_affecter); - octonion & operator = (T const & a_affecter); - octonion & operator = (::std::complex const & a_affecter); - octonion & operator = (::boost::math::quaternion const & a_affecter); - -These perform the expected assignment, with type modification if -necessary (for instance, assigning from a base type will set the -real part to that value, and all other components to zero). -For the unspecialized form, the base type's assignment operators must not throw. - -[h4 Other Member Operators] - - octonion & operator += (T const & rhs) - octonion & operator += (::std::complex const & rhs); - octonion & operator += (::boost::math::quaternion const & rhs); - template - octonion & operator += (octonion const & rhs); - -These perform the mathematical operation `(*this)+rhs` and store the result in -`*this`. The unspecialized form has exception guards, which the specialized -forms do not, so as to insure exception safety. For the unspecialized form, -the base type's assignment operators must not throw. - - octonion & operator -= (T const & rhs) - octonion & operator -= (::std::complex const & rhs); - octonion & operator -= (::boost::math::quaternion const & rhs); - template - octonion & operator -= (octonion const & rhs); - -These perform the mathematical operation `(*this)-rhs` and store the result -in `*this`. The unspecialized form has exception guards, which the -specialized forms do not, so as to insure exception safety. -For the unspecialized form, the base type's assignment operators must not throw. - - octonion & operator *= (T const & rhs) - octonion & operator *= (::std::complex const & rhs); - octonion & operator *= (::boost::math::quaternion const & rhs); - template - octonion & operator *= (octonion const & rhs); - -These perform the mathematical operation `(*this)*rhs` in this order -(order is important as multiplication is not commutative for octonions) -and store the result in `*this`. The unspecialized form has exception guards, -which the specialized forms do not, so as to insure exception safety. -For the unspecialized form, the base type's assignment operators must -not throw. Also, for clarity's sake, you should always group the -factors in a multiplication by groups of two, as the multiplication is -not even associative on the octonions (though there are of course cases -where this does not matter, it usually does). - - octonion & operator /= (T const & rhs) - octonion & operator /= (::std::complex const & rhs); - octonion & operator /= (::boost::math::quaternion const & rhs); - template - octonion & operator /= (octonion const & rhs); - -These perform the mathematical operation `(*this)*inverse_of(rhs)` -in this order (order is important as multiplication is not commutative -for octonions) and store the result in `*this`. The unspecialized form -has exception guards, which the specialized forms do not, so as to -insure exception safety. For the unspecialized form, the base -type's assignment operators must not throw. As for the multiplication, -remember to group any two factors using parenthesis. - -[endsect] - -[section Octonion Non-Member Operators] - -[h4 Unary Plus and Minus Operators] - - template octonion operator + (octonion const & o); - -This unary operator simply returns o. - - template octonion operator - (octonion const & o); - -This unary operator returns the opposite of o. - -[h4 Binary Addition Operators] - - template octonion operator + (T const & lhs, octonion const & rhs); - template octonion operator + (octonion const & lhs, T const & rhs); - template octonion operator + (::std::complex const & lhs, octonion const & rhs); - template octonion operator + (octonion const & lhs, ::std::complex const & rhs); - template octonion operator + (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion operator + (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion operator + (octonion const & lhs, octonion const & rhs); - -These operators return `octonion(lhs) += rhs`. - -[h4 Binary Subtraction Operators] - - template octonion operator - (T const & lhs, octonion const & rhs); - template octonion operator - (octonion const & lhs, T const & rhs); - template octonion operator - (::std::complex const & lhs, octonion const & rhs); - template octonion operator - (octonion const & lhs, ::std::complex const & rhs); - template octonion operator - (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion operator - (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion operator - (octonion const & lhs, octonion const & rhs); - -These operators return `octonion(lhs) -= rhs`. - -[h4 Binary Multiplication Operators] - - template octonion operator * (T const & lhs, octonion const & rhs); - template octonion operator * (octonion const & lhs, T const & rhs); - template octonion operator * (::std::complex const & lhs, octonion const & rhs); - template octonion operator * (octonion const & lhs, ::std::complex const & rhs); - template octonion operator * (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion operator * (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion operator * (octonion const & lhs, octonion const & rhs); - -These operators return `octonion(lhs) *= rhs`. - -[h4 Binary Division Operators] - - template octonion operator / (T const & lhs, octonion const & rhs); - template octonion operator / (octonion const & lhs, T const & rhs); - template octonion operator / (::std::complex const & lhs, octonion const & rhs); - template octonion operator / (octonion const & lhs, ::std::complex const & rhs); - template octonion operator / (::boost::math::quaternion const & lhs, octonion const & rhs); - template octonion operator / (octonion const & lhs, ::boost::math::quaternion const & rhs); - template octonion operator / (octonion const & lhs, octonion const & rhs); - -These operators return `octonion(lhs) /= rhs`. It is of course still an -error to divide by zero... - -[h4 Binary Equality Operators] - - template bool operator == (T const & lhs, octonion const & rhs); - template bool operator == (octonion const & lhs, T const & rhs); - template bool operator == (::std::complex const & lhs, octonion const & rhs); - template bool operator == (octonion const & lhs, ::std::complex const & rhs); - template bool operator == (::boost::math::quaternion const & lhs, octonion const & rhs); - template bool operator == (octonion const & lhs, ::boost::math::quaternion const & rhs); - template bool operator == (octonion const & lhs, octonion const & rhs); - -These return true if and only if the four components of `octonion(lhs)` -are equal to their counterparts in `octonion(rhs)`. As with any -floating-type entity, this is essentially meaningless. - -[h4 Binary Inequality Operators] - - template bool operator != (T const & lhs, octonion const & rhs); - template bool operator != (octonion const & lhs, T const & rhs); - template bool operator != (::std::complex const & lhs, octonion const & rhs); - template bool operator != (octonion const & lhs, ::std::complex const & rhs); - template bool operator != (::boost::math::quaternion const & lhs, octonion const & rhs); - template bool operator != (octonion const & lhs, ::boost::math::quaternion const & rhs); - template bool operator != (octonion const & lhs, octonion const & rhs); - -These return true if and only if `octonion(lhs) == octonion(rhs)` -is false. As with any floating-type entity, this is essentially meaningless. - -[h4 Stream Extractor] - - template - ::std::basic_istream & operator >> (::std::basic_istream & is, octonion & o); - -Extracts an octonion `o`. We accept any format which seems reasonable. -However, since this leads to a great many ambiguities, decisions were made -to lift these. In case of doubt, stick to lists of reals. - -The input values must be convertible to T. If bad input is encountered, -calls `is.setstate(ios::failbit)` (which may throw `ios::failure` (27.4.5.3)). - -Returns `is`. - -[h4 Stream Inserter] - - template - ::std::basic_ostream & operator << (::std::basic_ostream & os, octonion const & o); - -Inserts the octonion `o` onto the stream `os` as if it were implemented as follows: - - template - ::std::basic_ostream & operator << ( ::std::basic_ostream & os, - octonion const & o) - { - ::std::basic_ostringstream s; - - s.flags(os.flags()); - s.imbue(os.getloc()); - s.precision(os.precision()); - - s << '(' << o.R_component_1() << ',' - << o.R_component_2() << ',' - << o.R_component_3() << ',' - << o.R_component_4() << ',' - << o.R_component_5() << ',' - << o.R_component_6() << ',' - << o.R_component_7() << ',' - << o.R_component_8() << ')'; - - return os << s.str(); - } - -[endsect] - -[section Octonion Value Operations] - -[h4 Real and Unreal] - - template T real(octonion const & o); - template octonion unreal(octonion const & o); - -These return `o.real()` and `o.unreal()` respectively. - -[h4 conj] - - template octonion conj(octonion const & o); - -This returns the conjugate of the octonion. - -[h4 sup] - - template T sup(octonion const & o); - -This return the sup norm (the greatest among -`abs(o.R_component_1())...abs(o.R_component_8()))` of the octonion. - -[h4 l1] - - template T l1(octonion const & o); - -This return the l1 norm (`abs(o.R_component_1())+...+abs(o.R_component_8())`) -of the octonion. - -[h4 abs] - - template T abs(octonion const & o); - -This return the magnitude (Euclidian norm) of the octonion. - -[h4 norm] - - template T norm(octonionconst & o); - -This return the (Cayley) norm of the octonion. The term "norm" might -be confusing, as most people associate it with the Euclidian norm -(and quadratic functionals). For this version of (the mathematical -objects known as) octonions, the Euclidian norm (also known as -magnitude) is the square root of the Cayley norm. - -[endsect] - -[section Quaternion Creation Functions] - - template octonion spherical(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6); - template octonion multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4); - template octonion cylindrical(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6); - -These build octonions in a way similar to the way polar builds -complex numbers, as there is no strict equivalent to -polar coordinates for octonions. - -`spherical` is a simple transposition of `polar`, it takes as inputs a -(positive) magnitude and a point on the hypersphere, given -by three angles. The first of these, ['theta] has a natural range of --pi to +pi, and the other two have natural ranges of --pi/2 to +pi/2 (as is the case with the usual spherical -coordinates in __R3). Due to the many symmetries and periodicities, -nothing untoward happens if the magnitude is negative or the angles are -outside their natural ranges. The expected degeneracies (a magnitude of -zero ignores the angles settings...) do happen however. - -`cylindrical` is likewise a simple transposition of the usual -cylindrical coordinates in __R3, which in turn is another derivative of -planar polar coordinates. The first two inputs are the polar -coordinates of the first __C component of the octonion. The third and -fourth inputs are placed into the third and fourth __R components of the -octonion, respectively. - -`multipolar` is yet another simple generalization of polar coordinates. -This time, both __C components of the octonion are given in polar coordinates. - -In this version of our implementation of octonions, there is no -analogue of the complex value operation arg as the situation is -somewhat more complicated. - -[endsect] - -[section Octonions Transcendentals] - -There is no `log` or `sqrt` provided for octonions in this implementation, -and `pow` is likewise restricted to integral powers of the exponent. -There are several reasons to this: on the one hand, the equivalent of -analytic continuation for octonions ("branch cuts") remains to be -investigated thoroughly (by me, at any rate...), and we wish to avoid -the nonsense introduced in the standard by exponentiations of -complexes by complexes (which is well defined, but not in the standard...). -Talking of nonsense, saying that `pow(0,0)` is "implementation defined" is -just plain brain-dead... - -We do, however provide several transcendentals, chief among which is -the exponential. That it allows for a "closed formula" is a result -of the author (the existence and definition of the exponential, on the -octonions among others, on the other hand, is a few centuries old). -Basically, any converging power series with real coefficients which -allows for a closed formula in __C can be transposed to __O. More -transcendentals of this type could be added in a further revision upon -request. It should be noted that it is these functions which force the -dependency upon the -[@../../boost/math/special_functions/sinc.hpp boost/math/special_functions/sinc.hpp] -and the -[@../../boost/math/special_functions/sinhc.hpp boost/math/special_functions/sinhc.hpp] -headers. - -[h4 exp] - - template - octonion exp(octonion const & o); - -Computes the exponential of the octonion. - -[h4 cos] - - template - octonion cos(octonion const & o); - -Computes the cosine of the octonion - -[h4 sin] - - template - octonion sin(octonion const & o); - -Computes the sine of the octonion. - -[h4 tan] - - template - octonion tan(octonion const & o); - -Computes the tangent of the octonion. - -[h4 cosh] - - template - octonion cosh(octonion const & o); - -Computes the hyperbolic cosine of the octonion. - -[h4 sinh] - - template - octonion sinh(octonion const & o); - -Computes the hyperbolic sine of the octonion. - -[h4 tanh] - - template - octonion tanh(octonion const & o); - -Computes the hyperbolic tangent of the octonion. - -[h4 pow] - - template - octonion pow(octonion const & o, int n); - -Computes the n-th power of the octonion q. - -[endsect] - -[section Test Program] - -The [@../../libs/math/octonion/octonion_test.cpp octonion_test.cpp] -test program tests octonions specialisations for float, double and long double -([@../../libs/math/octonion/output.txt sample output]). - -If you define the symbol BOOST_OCTONION_TEST_VERBOSE, you will get additional -output ([@../../libs/math/octonion/output_more.txt verbose output]); this will -only be helpfull if you enable message output at the same time, of course -(by uncommenting the relevant line in the test or by adding --log_level=messages -to your command line,...). In that case, and if you are running interactively, -you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR to -interactively test the input operator with input of your choice from the -standard input (instead of hard-coding it in the test). - -[endsect] - -[section Acknowledgements] - -The mathematical text has been typeset with -[@http://www.nisus-soft.com/ Nisus Writer]. -Jens Maurer has helped with portability and standard adherence, and was the -Review Manager for this library. More acknowledgements in the -History section. Thank you to all who contributed to the discussion about this library. - -[endsect] - -[section History] - -* 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format. -* 1.5.7 - 25/02/2003: transitionned to the unit test framework; now included by the library header (rather than the test files), via . -* 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis Evlogimenos (alkis@routescience.com). -* 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens (michael@acfr.usyd.edu.au); requires the /Za compiler option. -* 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different translation units); attempt at an improved compatibility with Microsoft compilers, by Michael Stevens (michael@acfr.usyd.edu.au) and Fredrik Blomqvist; other compatibility fixes. -* 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor (gregod@cs.rpi.edu). -* 1.5.2 - 07/07/2001: introduced namespace math. -* 1.5.1 - 07/06/2001: (end of Boost review) now includes and instead of ; corrected bug in sin (Daryle Walker); removed check for self-assignment (Gary Powel); made converting functions explicit (Gary Powel); added overflow guards for division operators and abs (Peter Schmitteckert); added sup and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code. -* 1.5.0 - 23/03/2001: boostification, inlining of all operators except input, output and pow, fixed exception safety of some members (template version). -* 1.4.0 - 09/01/2001: added tan and tanh. -* 1.3.1 - 08/01/2001: cosmetic fixes. -* 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink@tip.nl) algorithm. -* 1.2.0 - 25/05/2000: fixed the division operators and output; changed many signatures. -* 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh. -* 1.0.0 - 10/08/1999: first public version. - -[endsect] - -[section To Do] - -* Improve testing. -* Rewrite input operatore using Spirit (creates a dependency). -* Put in place an Expression Template mechanism (perhaps borrowing from uBlas). - -[endsect] - -[endsect] diff --git a/doc/math-quaternion.qbk b/doc/math-quaternion.qbk deleted file mode 100644 index 4971c35b9..000000000 --- a/doc/math-quaternion.qbk +++ /dev/null @@ -1,899 +0,0 @@ - -[def __R ['[*R]]] -[def __C ['[*C]]] -[def __H ['[*H]]] -[def __O ['[*O]]] -[def __R3 ['[*'''R3''']]] -[def __R4 ['[*'''R4''']]] -[def __quadrulple ('''α,β,γ,δ''')] -[def __quat_formula ['[^q = '''α + βi + γj + δk''']]] -[def __quat_complex_formula ['[^q = ('''α + βi) + (γ + δi)j''' ]]] -[def __not_equal ['[^xy '''≠''' yx]]] - - -[section Quaternions] - -[section Overview] - -Quaternions are a relative of complex numbers. - -Quaternions are in fact part of a small hierarchy of structures built -upon the real numbers, which comprise only the set of real numbers -(traditionally named __R), the set of complex numbers (traditionally named __C), -the set of quaternions (traditionally named __H) and the set of octonions -(traditionally named __O), which possess interesting mathematical properties -(chief among which is the fact that they are ['division algebras], -['i.e.] where the following property is true: if ['[^y]] is an element of that -algebra and is [*not equal to zero], then ['[^yx = yx']], where ['[^x]] and ['[^x']] -denote elements of that algebra, implies that ['[^x = x']]). -Each member of the hierarchy is a super-set of the former. - -One of the most important aspects of quaternions is that they provide an -efficient way to parameterize rotations in __R3 (the usual three-dimensional space) -and __R4. - -In practical terms, a quaternion is simply a quadruple of real numbers __quadrulple, -which we can write in the form __quat_formula, where ['[^i]] is the same object as for complex numbers, -and ['[^j]] and ['[^k]] are distinct objects which play essentially the same kind of role as ['[^i]]. - -An addition and a multiplication is defined on the set of quaternions, -which generalize their real and complex counterparts. The main novelty -here is that [*the multiplication is not commutative] (i.e. there are -quaternions ['[^x]] and ['[^y]] such that __not_equal). A good mnemotechnical way of remembering -things is by using the formula ['[^i*i = j*j = k*k = -1]]. - -Quaternions (and their kin) are described in far more details in this -other [@../../libs/math/quaternion/TQE.pdf document] -(with [@../../libs/math/quaternion/TQE_EA.pdf errata and addenda]). - -Some traditional constructs, such as the exponential, carry over without -too much change into the realms of quaternions, but other, such as taking -a square root, do not. - -[endsect] - -[section Header File] - -The interface and implementation are both supplied by the header file -[@../../boost/math/quaternion.hpp quaternion.hpp]. - -[endsect] - -[section Synopsis] - - namespace boost{ namespace math{ - - template class ``[link boost_math.quaternions.template_class_quaternion quaternion]``; - template<> class ``[link boost_math.quaternions.quaternion_specializations quaternion]``; - template<> class ``[link boost_math.quaternion_double quaternion]``; - template<> class ``[link boost_math.quaternion_long_double quaternion]``; - - // operators - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_addition_operators operator +]`` (T const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_addition_operators operator +]`` (quaternion const & lhs, T const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_addition_operators operator +]`` (::std::complex const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_addition_operators operator +]`` (quaternion const & lhs, ::std::complex const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_addition_operators operator +]`` (quaternion const & lhs, quaternion const & rhs); - - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_subtraction_operators operator -]`` (T const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_subtraction_operators operator -]`` (quaternion const & lhs, T const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_subtraction_operators operator -]`` (::std::complex const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_subtraction_operators operator -]`` (quaternion const & lhs, ::std::complex const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_subtraction_operators operator -]`` (quaternion const & lhs, quaternion const & rhs); - - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_multiplication_operators operator *]`` (T const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_multiplication_operators operator *]`` (quaternion const & lhs, T const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_multiplication_operators operator *]`` (::std::complex const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_multiplication_operators operator *]`` (quaternion const & lhs, ::std::complex const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_multiplication_operators operator *]`` (quaternion const & lhs, quaternion const & rhs); - - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_division_operators operator /]`` (T const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_division_operators operator /]`` (quaternion const & lhs, T const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_division_operators operator /]`` (::std::complex const & lhs, quaternion const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_division_operators operator /]`` (quaternion const & lhs, ::std::complex const & rhs); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.binary_division_operators operator /]`` (quaternion const & lhs, quaternion const & rhs); - - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.unary_plus operator +]`` (quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_non_member_operators.unary_minus operator -]`` (quaternion const & q); - - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.equality_operators operator ==]`` (T const & lhs, quaternion const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.equality_operators operator ==]`` (quaternion const & lhs, T const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.equality_operators operator ==]`` (::std::complex const & lhs, quaternion const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.equality_operators operator ==]`` (quaternion const & lhs, ::std::complex const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.equality_operators operator ==]`` (quaternion const & lhs, quaternion const & rhs); - - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.inequality_operators operator !=]`` (T const & lhs, quaternion const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.inequality_operators operator !=]`` (quaternion const & lhs, T const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.inequality_operators operator !=]`` (::std::complex const & lhs, quaternion const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.inequality_operators operator !=]`` (quaternion const & lhs, ::std::complex const & rhs); - template bool ``[link boost_math.quaternions.quaternion_non_member_operators.inequality_operators operator !=]`` (quaternion const & lhs, quaternion const & rhs); - - template - ::std::basic_istream& ``[link boost_math.quaternions.quaternion_non_member_operators.stream_extractor operator >>]`` (::std::basic_istream & is, quaternion & q); - - template - ::std::basic_ostream& operator ``[link boost_math.quaternions.quaternion_non_member_operators.stream_inserter operator <<]`` (::std::basic_ostream & os, quaternion const & q); - - // values - template T ``[link boost_math.quaternions.quaternion_value_operations.real_and_unreal real]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_value_operations.real_and_unreal unreal]``(quaternion const & q); - - template T ``[link boost_math.quaternions.quaternion_value_operations.sup sup]``(quaternion const & q); - template T ``[link boost_math.quaternions.quaternion_value_operations.l1 l1]``(quaternion const & q); - template T ``[link boost_math.quaternions.quaternion_value_operations.abs abs]``(quaternion const & q); - template T ``[link boost_math.quaternions.quaternion_value_operations.norm norm]``(quaternionconst & q); - template quaternion ``[link boost_math.quaternions.quaternion_value_operations.conj conj]``(quaternion const & q); - - template quaternion ``[link boost_math.quaternions.creation_spherical spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2); - template quaternion ``[link boost_math.quaternions.creation_semipolar semipolar]``(T const & rho, T const & alpha, T const & theta1, T const & theta2); - template quaternion ``[link boost_math.quaternions.creation_multipolar multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2); - template quaternion ``[link boost_math.quaternions.creation_cylindrospherical cylindrospherical]``(T const & t, T const & radius, T const & longitude, T const & latitude); - template quaternion ``[link boost_math.quaternions.creation_cylindrical cylindrical]``(T const & r, T const & angle, T const & h1, T const & h2); - - // transcendentals - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.exp exp]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.cos cos]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.sin sin]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.tan tan]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.cosh cosh]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.sinh sinh]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.tanh tanh]``(quaternion const & q); - template quaternion ``[link boost_math.quaternions.quaternion_transcendentals.pow pow]``(quaternion const & q, int n); - - } // namespace math - } // namespace boost - -[endsect] - -[section Template Class quaternion] - - namespace boost{ namespace math{ - - template - class quaternion - { - public: - - typedef T ``[link boost_math.quaternions.quaternion_member_typedefs value_type]``; - - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T()); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - template - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - - T ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts real]``() const; - quaternion ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts unreal]``() const; - T ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_1]``() const; - T ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_2]``() const; - T ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_3]``() const; - T ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_4]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_1]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_2]``() const; - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(T const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(::std::complex const & a_affecter); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(T const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(T const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(T const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(T const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(quaternion const & rhs); - }; - - } // namespace math - } // namespace boost - -[endsect] - -[section Quaternion Specializations] - - namespace boost{ namespace math{ - - template<> - class quaternion - { - public: - typedef float ``[link boost_math.quaternions.quaternion_member_typedefs value_type]``; - - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - - float ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts real]``() const; - quaternion ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts unreal]``() const; - float ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_1]``() const; - float ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_2]``() const; - float ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_3]``() const; - float ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_4]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_1]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_2]``() const; - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(float const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(::std::complex const & a_affecter); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(float const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(float const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(float const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(float const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(quaternion const & rhs); - }; - -[#boost_math.quaternion_double] - - template<> - class quaternion - { - public: - typedef double ``[link boost_math.quaternions.quaternion_member_typedefs value_type]``; - - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - - double ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts real]``() const; - quaternion ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts unreal]``() const; - double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_1]``() const; - double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_2]``() const; - double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_3]``() const; - double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_4]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_1]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_2]``() const; - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(double const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(::std::complex const & a_affecter); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(quaternion const & rhs); - }; - -[#boost_math.quaternion_long_double] - - template<> - class quaternion - { - public: - typedef long double ``[link boost_math.quaternions.quaternion_member_typedefs value_type]``; - - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - explicit ``[link boost_math.quaternions.quaternion_member_functions.constructors quaternion]``(quaternion const & a_recopier); - - long double ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts real]``() const; - quaternion ``[link boost_math.quaternions.quaternion_member_functions.real_and_unreal_parts unreal]``() const; - long double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_1]``() const; - long double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_2]``() const; - long double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_3]``() const; - long double ``[link boost_math.quaternions.quaternion_member_functions.individual_real_components R_component_4]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_1]``() const; - ::std::complex ``[link boost_math.quaternions.quaternion_member_functions.individual_complex__components C_component_2]``() const; - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(quaternion const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(long double const & a_affecter); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.assignment_operators operator = ]``(::std::complex const & a_affecter); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(long double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.addition_operators operator += ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(long double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.subtraction_operators operator -= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(long double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.multiplication_operators operator *= ]``(quaternion const & rhs); - - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(long double const & rhs); - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(::std::complex const & rhs); - template - quaternion& ``[link boost_math.quaternions.quaternion_member_functions.division_operators operator /= ]``(quaternion const & rhs); - }; - - } // namespace math - } // namespace boost - -[endsect] - -[section Quaternion Member Typedefs] - -[*value_type] - -Template version: - - typedef T value_type; - -Float specialization version: - - typedef float value_type; - -Double specialization version: - - typedef double value_type; - -Long double specialization version: - - typedef long double value_type; - -These provide easy acces to the type the template is built upon. - -[endsect] - -[section Quaternion Member Functions] -[h3 Constructors] - -Template version: - - explicit quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T()); - explicit quaternion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - template - explicit quaternion(quaternion const & a_recopier); - -Float specialization version: - - explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f); - explicit quaternion(::std::complex const & z0,::std::complex const & z1 = ::std::complex()); - explicit quaternion(quaternion const & a_recopier); - explicit quaternion(quaternion const & a_recopier); - -Double specialization version: - - explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0); - explicit quaternion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - explicit quaternion(quaternion const & a_recopier); - explicit quaternion(quaternion const & a_recopier); - -Long double specialization version: - - explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L); - explicit quaternion( ::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); - explicit quaternion(quaternion const & a_recopier); - explicit quaternion(quaternion const & a_recopier); - -A default constructor is provided for each form, which initializes -each component to the default values for their type -(i.e. zero for floating numbers). This constructor can also accept -one to four base type arguments. A constructor is also provided to -build quaternions from one or two complex numbers sharing the same -base type. The unspecialized template also sports a templarized copy -constructor, while the specialized forms have copy constructors -from the other two specializations, which are explicit when a risk of -precision loss exists. For the unspecialized form, the base type's -constructors must not throw. - -Destructors and untemplated copy constructors (from the same type) are -provided by the compiler. Converting copy constructors make use of a -templated helper function in a "detail" subnamespace. - -[h3 Other member functions] -[h4 Real and Unreal Parts] - - T real() const; - quaternion unreal() const; - -Like complex number, quaternions do have a meaningful notion of "real part", -but unlike them there is no meaningful notion of "imaginary part". -Instead there is an "unreal part" which itself is a quaternion, -and usually nothing simpler (as opposed to the complex number case). -These are returned by the first two functions. - -[h4 Individual Real Components] - - T R_component_1() const; - T R_component_2() const; - T R_component_3() const; - T R_component_4() const; - -A quaternion having four real components, these are returned by these four -functions. Hence real and R_component_1 return the same value. - -[h4 Individual Complex Components] - - ::std::complex C_component_1() const; - ::std::complex C_component_2() const; - -A quaternion likewise has two complex components, and as we have seen above, -for any quaternion __quat_formula we also have __quat_complex_formula. These functions return them. -The real part of `q.C_component_1()` is the same as `q.real()`. - -[h3 Quaternion Member Operators] -[h4 Assignment Operators] - - quaternion& operator = (quaternion const & a_affecter); - template - quaternion& operator = (quaternion const& a_affecter); - quaternion& operator = (T const& a_affecter); - quaternion& operator = (::std::complex const& a_affecter); - -These perform the expected assignment, with type modification if necessary -(for instance, assigning from a base type will set the real part to that -value, and all other components to zero). For the unspecialized form, -the base type's assignment operators must not throw. - -[h4 Addition Operators] - - quaternion& operator += (T const & rhs) - quaternion& operator += (::std::complex const & rhs); - template - quaternion& operator += (quaternion const & rhs); - -These perform the mathematical operation `(*this)+rhs` and store the result in -`*this`. The unspecialized form has exception guards, which the specialized -forms do not, so as to insure exception safety. For the unspecialized form, -the base type's assignment operators must not throw. - -[h4 Subtraction Operators] - - quaternion& operator -= (T const & rhs) - quaternion& operator -= (::std::complex const & rhs); - template - quaternion& operator -= (quaternion const & rhs); - -These perform the mathematical operation `(*this)-rhs` and store the result -in `*this`. The unspecialized form has exception guards, which the -specialized forms do not, so as to insure exception safety. -For the unspecialized form, the base type's assignment operators -must not throw. - -[h4 Multiplication Operators] - - quaternion& operator *= (T const & rhs) - quaternion& operator *= (::std::complex const & rhs); - template - quaternion& operator *= (quaternion const & rhs); - -These perform the mathematical operation `(*this)*rhs` [*in this order] -(order is important as multiplication is not commutative for quaternions) -and store the result in `*this`. The unspecialized form has exception guards, -which the specialized forms do not, so as to insure exception safety. -For the unspecialized form, the base type's assignment operators must not throw. - -[h4 Division Operators] - - quaternion& operator /= (T const & rhs) - quaternion& operator /= (::std::complex const & rhs); - template - quaternion& operator /= (quaternion const & rhs); - -These perform the mathematical operation `(*this)*inverse_of(rhs)` [*in this -order] (order is important as multiplication is not commutative for quaternions) -and store the result in `*this`. The unspecialized form has exception guards, -which the specialized forms do not, so as to insure exception safety. -For the unspecialized form, the base type's assignment operators must not throw. - -[endsect] -[section Quaternion Non-Member Operators] - -[h4 Unary Plus] - - template - quaternion operator + (quaternion const & q); - -This unary operator simply returns q. - -[h4 Unary Minus] - - template - quaternion operator - (quaternion const & q); - -This unary operator returns the opposite of q. - -[h4 Binary Addition Operators] - - template quaternion operator + (T const & lhs, quaternion const & rhs); - template quaternion operator + (quaternion const & lhs, T const & rhs); - template quaternion operator + (::std::complex const & lhs, quaternion const & rhs); - template quaternion operator + (quaternion const & lhs, ::std::complex const & rhs); - template quaternion operator + (quaternion const & lhs, quaternion const & rhs); - -These operators return `quaternion(lhs) += rhs`. - -[h4 Binary Subtraction Operators] - - template quaternion operator - (T const & lhs, quaternion const & rhs); - template quaternion operator - (quaternion const & lhs, T const & rhs); - template quaternion operator - (::std::complex const & lhs, quaternion const & rhs); - template quaternion operator - (quaternion const & lhs, ::std::complex const & rhs); - template quaternion operator - (quaternion const & lhs, quaternion const & rhs); - -These operators return `quaternion(lhs) -= rhs`. - -[h4 Binary Multiplication Operators] - - template quaternion operator * (T const & lhs, quaternion const & rhs); - template quaternion operator * (quaternion const & lhs, T const & rhs); - template quaternion operator * (::std::complex const & lhs, quaternion const & rhs); - template quaternion operator * (quaternion const & lhs, ::std::complex const & rhs); - template quaternion operator * (quaternion const & lhs, quaternion const & rhs); - -These operators return `quaternion(lhs) *= rhs`. - -[h4 Binary Division Operators] - - template quaternion operator / (T const & lhs, quaternion const & rhs); - template quaternion operator / (quaternion const & lhs, T const & rhs); - template quaternion operator / (::std::complex const & lhs, quaternion const & rhs); - template quaternion operator / (quaternion const & lhs, ::std::complex const & rhs); - template quaternion operator / (quaternion const & lhs, quaternion const & rhs); - -These operators return `quaternion(lhs) /= rhs`. It is of course still an -error to divide by zero... - -[h4 Equality Operators] - - template bool operator == (T const & lhs, quaternion const & rhs); - template bool operator == (quaternion const & lhs, T const & rhs); - template bool operator == (::std::complex const & lhs, quaternion const & rhs); - template bool operator == (quaternion const & lhs, ::std::complex const & rhs); - template bool operator == (quaternion const & lhs, quaternion const & rhs); - -These return true if and only if the four components of `quaternion(lhs)` -are equal to their counterparts in `quaternion(rhs)`. As with any -floating-type entity, this is essentially meaningless. - -[h4 Inequality Operators] - - template bool operator != (T const & lhs, quaternion const & rhs); - template bool operator != (quaternion const & lhs, T const & rhs); - template bool operator != (::std::complex const & lhs, quaternion const & rhs); - template bool operator != (quaternion const & lhs, ::std::complex const & rhs); - template bool operator != (quaternion const & lhs, quaternion const & rhs); - -These return true if and only if `quaternion(lhs) == quaternion(rhs)` is -false. As with any floating-type entity, this is essentially meaningless. - -[h4 Stream Extractor] - - template - ::std::basic_istream& operator >> (::std::basic_istream & is, quaternion & q); - -Extracts a quaternion q of one of the following forms -(with a, b, c and d of type `T`): - -[^a (a), (a,b), (a,b,c), (a,b,c,d) (a,(c)), (a,(c,d)), ((a)), ((a),c), ((a),(c)), ((a),(c,d)), ((a,b)), ((a,b),c), ((a,b),(c)), ((a,b),(c,d))] - -The input values must be convertible to `T`. If bad input is encountered, -calls `is.setstate(ios::failbit)` (which may throw ios::failure (27.4.5.3)). - -[*Returns:] `is`. - -The rationale for the list of accepted formats is that either we have a -list of up to four reals, or else we have a couple of complex numbers, -and in that case if it formated as a proper complex number, then it should -be accepted. Thus potential ambiguities are lifted (for instance (a,b) is -(a,b,0,0) and not (a,0,b,0), i.e. it is parsed as a list of two real numbers -and not two complex numbers which happen to have imaginary parts equal to zero). - -[h4 Stream Inserter] - - template - ::std::basic_ostream& operator << (::std::basic_ostream & os, quaternion const & q); - -Inserts the quaternion q onto the stream `os` as if it were implemented as follows: - - template - ::std::basic_ostream& operator << ( - ::std::basic_ostream & os, - quaternion const & q) - { - ::std::basic_ostringstream s; - - s.flags(os.flags()); - s.imbue(os.getloc()); - s.precision(os.precision()); - - s << '(' << q.R_component_1() << ',' - << q.R_component_2() << ',' - << q.R_component_3() << ',' - << q.R_component_4() << ')'; - - return os << s.str(); - } - -[endsect] - -[section Quaternion Value Operations] - -[h4 real and unreal] - - template T real(quaternion const & q); - template quaternion unreal(quaternion const & q); - -These return `q.real()` and `q.unreal()` respectively. - -[h4 conj] - - template quaternion conj(quaternion const & q); - -This returns the conjugate of the quaternion. - -[h4 sup] - -template T sup(quaternion const & q); - -This return the sup norm (the greatest among -`abs(q.R_component_1())...abs(q.R_component_4()))` of the quaternion. - -[h4 l1] - - template T l1(quaternion const & q); - -This return the l1 norm `(abs(q.R_component_1())+...+abs(q.R_component_4()))` -of the quaternion. - -[h4 abs] - - template T abs(quaternion const & q); - -This return the magnitude (Euclidian norm) of the quaternion. - -[h4 norm] - - template T norm(quaternionconst & q); - -This return the (Cayley) norm of the quaternion. -The term "norm" might be confusing, as most people associate it with the -Euclidian norm (and quadratic functionals). For this version of -(the mathematical objects known as) quaternions, the Euclidian norm -(also known as magnitude) is the square root of the Cayley norm. - -[endsect] - -[section Quaternion Creation Functions] - - template quaternion spherical(T const & rho, T const & theta, T const & phi1, T const & phi2); - template quaternion semipolar(T const & rho, T const & alpha, T const & theta1, T const & theta2); - template quaternion multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2); - template quaternion cylindrospherical(T const & t, T const & radius, T const & longitude, T const & latitude); - template quaternion cylindrical(T const & r, T const & angle, T const & h1, T const & h2); - -These build quaternions in a way similar to the way polar builds complex -numbers, as there is no strict equivalent to polar coordinates for quaternions. - -[#boost_math.quaternions.creation_spherical] `spherical` is a simple transposition of `polar`, it takes as inputs -a (positive) magnitude and a point on the hypersphere, given by three angles. -The first of these, `theta` has a natural range of `-pi` to `+pi`, and the other -two have natural ranges of `-pi/2` to `+pi/2` (as is the case with the usual -spherical coordinates in __R3). Due to the many symmetries and periodicities, -nothing untoward happens if the magnitude is negative or the angles are -outside their natural ranges. The expected degeneracies (a magnitude of -zero ignores the angles settings...) do happen however. - -[#boost_math.quaternions.creation_cylindrical] `cylindrical` is likewise a simple transposition of the usual -cylindrical coordinates in __R3, which in turn is another derivative of -planar polar coordinates. The first two inputs are the polar coordinates of -the first __C component of the quaternion. The third and fourth inputs -are placed into the third and fourth __R components of the quaternion, -respectively. - -[#boost_math.quaternions.creation_multipolar] `multipolar` is yet another simple generalization of polar coordinates. -This time, both __C components of the quaternion are given in polar coordinates. - -[#boost_math.quaternions.creation_cylindrospherical] `cylindrospherical` is specific to quaternions. It is often interesting to -consider __H as the cartesian product of __R by __R3 (the quaternionic -multiplication as then a special form, as given here). This function -therefore builds a quaternion from this representation, with the __R3 -component given in usual __R3 spherical coordinates. - -[#boost_math.quaternions.creation_semipolar] `semipolar` is another generator which is specific to quaternions. -It takes as a first input the magnitude of the quaternion, as a -second input an angle in the range `0` to `+pi/2` such that magnitudes -of the first two __C components of the quaternion are the product of the -first input and the sine and cosine of this angle, respectively, and finally -as third and fourth inputs angles in the range `-pi/2` to `+pi/2` which -represent the arguments of the first and second __C components of -the quaternion, respectively. As usual, nothing untoward happens if -what should be magnitudes are negative numbers or angles are out of their -natural ranges, as symmetries and periodicities kick in. - -In this version of our implementation of quaternions, there is no -analogue of the complex value operation `arg` as the situation is -somewhat more complicated. Unit quaternions are linked both to -rotations in __R3 and in __R4, and the correspondences are not too complicated, -but there is currently a lack of standard (de facto or de jure) matrix -library with which the conversions could work. This should be remedied in -a further revision. In the mean time, an example of how this could be -done is presented here for -[@../../libs/math/quaternion/HSO3.hpp __R3], and here for -[@../../libs/math/quaternion/HSO4.hpp __R4] -([@../../libs/math/quaternion/HSO3SO4.cpp example test file]). - -[endsect] - -[section Quaternion Transcendentals] - -There is no `log` or `sqrt` provided for quaternions in this implementation, -and `pow` is likewise restricted to integral powers of the exponent. -There are several reasons to this: on the one hand, the equivalent of -analytic continuation for quaternions ("branch cuts") remains to be -investigated thoroughly (by me, at any rate...), and we wish to avoid the -nonsense introduced in the standard by exponentiations of complexes by -complexes (which is well defined, but not in the standard...). -Talking of nonsense, saying that `pow(0,0)` is "implementation defined" is just -plain brain-dead... - -We do, however provide several transcendentals, chief among which is the -exponential. This author claims the complete proof of the "closed formula" -as his own, as well as its independant invention (there are claims to prior -invention of the formula, such as one by Professor Shoemake, and it is -possible that the formula had been known a couple of centuries back, but in -absence of bibliographical reference, the matter is pending, awaiting further -investigation; on the other hand, the definition and existence of the -exponential on the quaternions, is of course a fact known for a very long time). -Basically, any converging power series with real coefficients which allows for a -closed formula in __C can be transposed to __H. More transcendentals of this -type could be added in a further revision upon request. It should be -noted that it is these functions which force the dependency upon the -[@../../boost/math/special_functions/sinc.hpp boost/math/special_functions/sinc.hpp] and the -[@../../boost/math/special_functions/sinhc.hpp boost/math/special_functions/sinhc.hpp] headers. - -[h4 exp] - - template quaternion exp(quaternion const & q); - -Computes the exponential of the quaternion. - -[h4 cos] - - template quaternion cos(quaternion const & q); - -Computes the cosine of the quaternion - -[h4 sin] - - template quaternion sin(quaternion const & q); - -Computes the sine of the quaternion. - -[h4 tan] - - template quaternion tan(quaternion const & q); - -Computes the tangent of the quaternion. - -[h4 cosh] - - template quaternion cosh(quaternion const & q); - -Computes the hyperbolic cosine of the quaternion. - -[h4 sinh] - - template quaternion sinh(quaternion const & q); - -Computes the hyperbolic sine of the quaternion. - -[h4 tanh] - - template quaternion tanh(quaternion const & q); - -Computes the hyperbolic tangent of the quaternion. - -[h4 pow] - - template quaternion pow(quaternion const & q, int n); - -Computes the n-th power of the quaternion q. - -[endsect] - -[section Test Program] - -The [@../../libs/math/quaternion/quaternion_test.cpp quaternion_test.cpp] -test program tests quaternions specializations for float, double and long double -([@../../libs/math/quaternion/output.txt sample output], with message output -enabled). - -If you define the symbol BOOST_QUATERNION_TEST_VERBOSE, you will get -additional output ([@../../libs/math/quaternion/output_more.txt verbose output]); -this will only be helpfull if you enable message output at the same time, -of course (by uncommenting the relevant line in the test or by adding -[^--log_level=messages] to your command line,...). In that case, and if you -are running interactively, you may in addition define the symbol -BOOST_INTERACTIVE_TEST_INPUT_ITERATOR to interactively test the input -operator with input of your choice from the standard input -(instead of hard-coding it in the test). - -[endsect] - -[section Acknowledgements] - -The mathematical text has been typeset with -[@http://www.nisus-soft.com/ Nisus Writer]. Jens Maurer has helped with -portability and standard adherence, and was the Review Manager -for this library. More acknowledgements in the History section. -Thank you to all who contributed to the discution about this library. - -[endsect] - -[section History] - -* 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format. -* 1.5.7 - 24/02/2003: transitionned to the unit test framework; now included by the library header (rather than the test files). -* 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis Evlogimenos (alkis@routescience.com). -* 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens (michael@acfr.usyd.edu.au); requires the /Za compiler option. -* 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different translation units); attempt at an improved compatibility with Microsoft compilers, by Michael Stevens (michael@acfr.usyd.edu.au) and Fredrik Blomqvist; other compatibility fixes. -* 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor (gregod@cs.rpi.edu). -* 1.5.2 - 07/07/2001: introduced namespace math. -* 1.5.1 - 07/06/2001: (end of Boost review) now includes and instead of ; corrected bug in sin (Daryle Walker); removed check for self-assignment (Gary Powel); made converting functions explicit (Gary Powel); added overflow guards for division operators and abs (Peter Schmitteckert); added sup and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code. -* 1.5.0 - 26/03/2001: boostification, inlining of all operators except input, output and pow, fixed exception safety of some members (template version) and output operator, added spherical, semipolar, multipolar, cylindrospherical and cylindrical. -* 1.4.0 - 09/01/2001: added tan and tanh. -* 1.3.1 - 08/01/2001: cosmetic fixes. -* 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink@tip.nl) algorithm. -* 1.2.0 - 25/05/2000: fixed the division operators and output; changed many signatures. -* 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh. -* 1.0.0 - 10/08/1999: first public version. - -[endsect] -[section To Do] - -* Improve testing. -* Rewrite input operatore using Spirit (creates a dependency). -* Put in place an Expression Template mechanism (perhaps borrowing from uBlas). -* Use uBlas for the link with rotations (and move from the -[@../../libs/math/quaternion/HSO3SO4.cpp example] -implementation to an efficient one). - -[endsect] -[endsect] diff --git a/doc/math-sf.qbk b/doc/math-sf.qbk deleted file mode 100644 index 1f99fc5fe..000000000 --- a/doc/math-sf.qbk +++ /dev/null @@ -1,314 +0,0 @@ - -[def __asinh [link boost_math.math_special_functions.asinh asinh]] -[def __acosh [link boost_math.math_special_functions.acosh acosh]] -[def __atanh [link boost_math.math_special_functions.atanh atanh]] -[def __sinc_pi [link boost_math.math_special_functions.sinc_pi sinc_pi]] -[def __sinhc_pi [link boost_math.math_special_functions.sinhc_pi sinhc_pi]] - -[def __log1p [link boost_math.math_special_functions.log1p log1p]] -[def __expm1 [link boost_math.math_special_functions.expm1 expm1]] -[def __hypot [link boost_math.math_special_functions.hypot hypot]] - -[def __form1 [^\[0;+'''∞'''\[]] -[def __form2 [^\]-'''∞''';+1\[]] -[def __form3 [^\]-'''∞''';-1\[]] -[def __form4 [^\]+1;+'''∞'''\[]] -[def __form5 `[^\[-1;-1+'''ε'''\[]] -[def __form6 '''ε'''] -[def __form7 [^\]+1-'''ε''';+1\]]] - -[def __effects [*Effects: ]] -[def __formula [*Formula: ]] -[def __exm1 '''ex - 1'''] -[def __ex '''ex'''] -[def __te '''2ε'''] - - -[section Math Special Functions] - -[section Overview] - -The Special Functions library currently provides eight templated special functions, -in namespace boost. Two of these (__sinc_pi and __sinhc_pi) are needed by our -implementation of quaternions and octonions. - -The functions __acosh, __asinh and __atanh are entirely classical, -the function __sinc_pi sees heavy use in signal processing tasks, -and the function __sinhc_pi is an ad'hoc function whose naming is modelled on -__sinc_pi and hyperbolic functions. - -The functions __log1p, __expm1 and __hypot are all part of the C99 standard -but not yet C++. Two of these (__log1p and __hypot) were needed for the -[link boost_math.inverse_complex complex number inverse trigonometric functions]. - -The functions implemented here can throw standard exceptions, but no -exception specification has been made. - -[endsect] - -[section Header Files] - -The interface and implementation for each function (or forms of a function) -are both supplied by one header file: - -* [@../../boost/math/special_functions/acosh.hpp acosh.hpp] -* [@../../boost/math/special_functions/asinh.hpp asinh.hpp] -* [@../../boost/math/special_functions/atanh.hpp atanh.hpp] -* [@../../boost/math/special_functions/expm1.hpp expm1.hpp] -* [@../../boost/math/special_functions/hypot.hpp hypot.hpp] -* [@../../boost/math/special_functions/log1p.hpp log1p.hpp] -* [@../../boost/math/special_functions/sinc.hpp sinc.hpp] -* [@../../boost/math/special_functions/sinhc.hpp sinhc.hpp] - -[endsect] - -[section Synopsis] - - namespace boost{ namespace math{ - - template - T __acosh(const T x); - - template - T __asinh(const T x); - - template - T __atanh(const T x); - - template - T __expm1(const T x); - - template - T __hypot(const T x); - - template - T __log1p(const T x); - - template - T __sinc_pi(const T x); - - template class U> - U __sinc_pi(const U x); - - template - T __sinhc_pi(const T x); - - template class U> - U __sinhc_pi(const U x); - - } - } - -[endsect] - -[section acosh] - - template - T acosh(const T x); - -Computes the reciprocal of (the restriction to the range of __form1) -[link boost_math.background_information_and_white_papers.the_inverse_hyperbolic_functions -the hyperbolic cosine function], at x. Values returned are positive. Generalised -Taylor series are used near 1 and Laurent series are used near the -infinity to ensure accuracy. - -If x is in the range __form2 a quiet NaN is returned (if the system allows, -otherwise a `domain_error` exception is generated). - -[endsect] - -[section asinh] - - template - T asinh(const T x); - -Computes the reciprocal of -[link boost_math.background_information_and_white_papers.the_inverse_hyperbolic_functions -the hyperbolic sine function]. -Taylor series are used at the origin and Laurent series are used near the -infinity to ensure accuracy. - -[endsect] - -[section atanh] - - template - T atanh(const T x); - -Computes the reciprocal of -[link boost_math.background_information_and_white_papers.the_inverse_hyperbolic_functions -the hyperbolic tangent function], at x. -Taylor series are used at the origin to ensure accuracy. - -If x is in the range -__form3 -or in the range -__form4 -a quiet NaN is returned -(if the system allows, otherwise a `domain_error` exception is generated). - -If x is in the range -__form5, -minus infinity is returned -(if the system allows, otherwise an `out_of_range` exception -is generated), with -__form6 -denoting numeric_limits::epsilon(). - -If x is in the range -__form7, -plus infinity is returned (if the system allows, -otherwise an `out_of_range` exception is generated), with -__form6 -denoting -numeric_limits::epsilon(). - -[endsect] - -[section:expm1 expm1] - - template - T expm1(T t); - -__effects returns __exm1. - -For small x, then __ex is very close to 1, as a result calculating __exm1 results -in catastrophic cancellation errors when x is small. `expm1` calculates __exm1 using -a series expansion when x is small (giving an accuracy of less than __te). - -Finally when BOOST_HAS_EXPM1 is defined then the `float/double/long double` -specializations of this template simply forward to the platform's -native implementation of this function. - -[endsect] - -[section:hypot hypot] - - template - T hypot(T x, T y); - -__effects computes [$../../libs/math/doc/images/hypot.png] in such a way as to avoid undue underflow and overflow. - -When calculating [$../../libs/math/doc/images/hypot.png] it's quite easy for the intermediate terms to either -overflow or underflow, even though the result is in fact perfectly representable. -One possible alternative form is [$../../libs/math/doc/images/hypot2.png], but that can overflow or underflow -if x and y are of very differing magnitudes. The `hypot` function takes care of -all the special cases for you, so you don't have to. - -[endsect] - -[section:log1p log1p] - - template - T log1p(T x); - -__effects returns the natural logarithm of `x+1`. - -There are many situations where it is desirable to compute `log(x+1)`. -However, for small `x` then `x+1` suffers from catastrophic cancellation errors -so that `x+1 == 1` and `log(x+1) == 0`, when in fact for very small x, the -best approximation to `log(x+1)` would be `x`. `log1p` calculates the best -approximation to `log(1+x)` using a Taylor series expansion for accuracy -(less than __te). -Note that there are faster methods available, for example using the equivalence: - - log(1+x) == (log(1+x) * x) / ((1-x) - 1) - -However, experience has shown that these methods tend to fail quite spectacularly -once the compiler's optimizations are turned on. In contrast, the series expansion -method seems to be reasonably immune optimizer-induced errors. - -Finally when BOOST_HAS_LOG1P is defined then the `float/double/long double` -specializations of this template simply forward to the platform's -native implementation of this function. - -[endsect] - -[section sinc_pi] - - template - T sinc_pi(const T x); - - template class U> - U sinc_pi(const U x); - -Computes -[link boost_math.background_information_and_white_papers.sinus_cardinal_and_hyperbolic_sinus_cardinal_functions -the Sinus Cardinal] of x. The second form is for complexes, -quaternions, octonions... Taylor series are used at the origin -to ensure accuracy. - -[endsect] - -[section sinhc_pi] - - template - T sinhc_pi(const T x); - - template class U> - U sinhc_pi(const U x); - -Computes -[link boost_math.background_information_and_white_papers.sinus_cardinal_and_hyperbolic_sinus_cardinal_functions -the Hyperbolic Sinus Cardinal] of x. The second form is for -complexes, quaternions, octonions... Taylor series are used at the origin -to ensure accuracy. - -[endsect] - -[section Test Programs] - -The [@../../libs/math/special_functions/special_functions_test.cpp -special_functions_test.cpp] -and [@../../libs/math/test/log1p_expm1_test.cpp log1p_expm1_test.cpp] test programs test the functions for -float, double and long double arguments ([@../../libs/math/special_functions/output.txt sample output], with message -output enabled). - -If you define the symbol BOOST_SPECIAL_FUNCTIONS_TEST_VERBOSE, you will -get additional output -([@../../libs/math/special_functions/output_more.txt verbose output]), -which may prove useful for -tuning on your platform (the library use "reasonable" tolerances, -which may prove to be too strict for your platform); this will only be -helpfull if you enable message output at the same time, of course -(by uncommenting the relevant line in the test or by adding `--log_level=messages` -to your command line,...). - -[endsect] - -[section Acknowledgements] - -The mathematical text has been typeset with [@http://www.nisus-soft.com/ -Nisus Writer], and the -illustrations have been made with [@http://www.pacifict.com/ -Graphing Calculator]. Jens Maurer -was the Review Manager for this library. More acknowledgements in the -History section. Thank you to all who contributed to the discution -about this library. - -[endsect] - -[section History] - -* 1.5.0 - 17/12/2005: John Maddock added __log1p, __expm1 and __hypot. Converted documentation to Quickbook Format. -* 1.4.2 - 03/02/2003: transitionned to the unit test framework; now included by the library headers (rather than the test files). -* 1.4.1 - 18/09/2002: improved compatibility with Microsoft compilers. -* 1.4.0 - 14/09/2001: added (after rewrite) __acosh and __asinh, which were submited by Eric Ford; applied changes for Gcc 2.9.x suggested by John Maddock; improved accuracy; sanity check for test file, related to accuracy. -* 1.3.2 - 07/07/2001: introduced namespace math. -* 1.3.1 - 07/06/2001:(end of Boost review) split special_functions.hpp into atanh.hpp, sinc.hpp and sinhc.hpp; improved efficiency of __atanh with compile-time technique (Daryle Walker); improved accuracy of all functions near zero (Peter Schmitteckert). -* 1.3.0 - 26/03/2001: support for complexes & all, for cardinal functions. -* 1.2.0 - 31/01/2001: minor modifications for Koenig lookup. -* 1.1.0 - 23/01/2001: boostification. -* 1.0.0 - 10/08/1999: first public version. - -[endsect] - -[section To Do] - -* Add more functions. -* Improve test of each function. - -[endsect] -[endsect] - - diff --git a/doc/math.qbk b/doc/math.qbk index 492ab68ce..7ac058993 100644 --- a/doc/math.qbk +++ b/doc/math.qbk @@ -1,67 +1,190 @@ -[library Boost.Math - [quickbook 1.3] - [copyright 2001-2002 Daryle Walker, 2001-2003 Hubert Holin, 2005 John Maddock] - [purpose Various mathematical functions and data types] +[article Boost.Math + [quickbook 1.4] + [copyright 2007 Paul A. Bristow, Hubert Holin, John Maddock, Daryle Walker and Xiaogang Zhang] [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]) ] - [authors [Holin, Hubert], [Maddock, John], [Walker, Daryle]] [category math] [last-revision $Date$] ] -[def __asinh [link boost_math.math_special_functions.asinh asinh]] -[def __acosh [link boost_math.math_special_functions.acosh acosh]] -[def __atanh [link boost_math.math_special_functions.atanh atanh]] -[def __sinc_pi [link boost_math.math_special_functions.sinc_pi sinc_pi]] -[def __sinhc_pi [link boost_math.math_special_functions.sinhc_pi sinhc_pi]] +[def __R ['[*R]]] +[def __C ['[*C]]] +[def __H ['[*H]]] +[def __O ['[*O]]] +[def __R3 ['[*'''R3''']]] +[def __R4 ['[*'''R4''']]] +[def __quadrulple ('''α,β,γ,δ''')] +[def __quat_formula ['[^q = '''α + βi + γj + δk''']]] +[def __quat_complex_formula ['[^q = ('''α + βi) + (γ + δi)j''' ]]] +[def __not_equal ['[^xy '''≠''' yx]]] +[def __octulple ('''α,β,γ,δ,ε,ζ,η,θ''')] +[def __oct_formula ['[^o = '''α + βi + γj + δk + εe' + ζi' + ηj' + θk' ''']]] +[def __oct_complex_formula ['[^o = ('''α + βi) + (γ + δi)j + (ε + ζi)e' + (η - θi)j' ''']]] +[def __oct_quat_formula ['[^o = ('''α + βi + γj + δk) + (ε + ζi + ηj - θj)e' ''']]] +[def __oct_not_equal ['[^x(yz) '''≠''' (xy)z]]] +[template tr1[] [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Technical Report on C++ Library Extensions]] -[def __log1p [link boost_math.math_special_functions.log1p log1p]] -[def __expm1 [link boost_math.math_special_functions.expm1 expm1]] -[def __hypot [link boost_math.math_special_functions.hypot hypot]] +The following mathematical libraries are present in Boost: +[table +[[Library][Description]] -[section Overview] + [[[@../complex/html/index.html Complex Number Inverse Trigonometric Functions]] + [ +These complex number algorithms are the inverses of trigonometric functions currently +present in the C++ standard. Equivalents to these functions are part of the C99 standard, and +are part of the [tr1]. + ]] + + [[[@../gcd/html/index.html Greatest Common Divisor and Least Common Multiple]] + [ +The class and function templates in +provide run-time and compile-time evaluation of the greatest common divisor +(GCD) or least common multiple (LCM) of two integers. +These facilities are useful for many numeric-oriented generic +programming problems. + ]] -This documentation is -[@http://boost-consulting.com/vault/index.php?action=downloadfile&filename=boost_math-1.34.pdf&directory=PDF%20Documentation& also available in printer-friendly PDF format]. + [[[@../../../integer/index.html Integer]] + [Headers to ease dealing with integral types.]] -The [link boost_math.gcd_lcm Greatest Common Divisor and Least Common Multiple library] -provides run-time and compile-time evaluation of the greatest common divisor (GCD) -or least common multiple (LCM) of two integers. + [[[@../../../numeric/interval/doc/interval.htm Interval]] + [As implied by its name, this library is intended to help manipulating + mathematical intervals. It consists of a single header + and principally a type which can be + used as interval. ]] + + [[[@../../../multi_array/doc/index.html Multi Array]] + [Boost.MultiArray provides a generic N-dimensional array concept + definition and common implementations of that interface.]] -The [link boost_math.math_special_functions Special Functions library] currently provides eight templated special functions, -in namespace boost. Two of these (__sinc_pi and __sinhc_pi) are needed by our -implementation of quaternions and octonions. The functions __acosh, -__asinh and __atanh are entirely classical, -the function __sinc_pi sees heavy use in signal processing tasks, -and the function __sinhc_pi is an ad'hoc function whose naming is modelled on -__sinc_pi and hyperbolic functions. The functions __log1p, __expm1 and __hypot are all part of the C99 standard -but not yet C++. Two of these (__log1p and __hypot) were needed for the -[link boost_math.inverse_complex complex number inverse trigonometric functions]. + [[[@../../../numeric/conversion/doc/index.html Numeric.Conversion]] + [The Boost Numeric Conversion library is a collection of tools to + describe and perform conversions between values of different numeric types.]] + +[[[@../octonion/html/index.html Octonions]] + [ +Octonions, like [@../quaternions/html/index.html quaternions], are a relative of complex numbers. -The [link boost_math.inverse_complex Complex Number Inverse Trigonometric Functions] -are the inverses of trigonometric functions currently present in the C++ standard. -Equivalents to these functions are part of the C99 standard, and they -will be part of the forthcoming Technical Report on C++ Standard Library Extensions. +Octonions see some use in theoretical physics. -[link boost_math.quaternions Quaternions] are a relative of -complex numbers often used to parameterise rotations in three -dimentional space. +In practical terms, an octonion is simply an octuple of real numbers __octulple, +which we can write in the form __oct_formula, where ['[^i]], ['[^j]] and ['[^k]] +are the same objects as for quaternions, and ['[^e']], ['[^i']], ['[^j']] and ['[^k']] +are distinct objects which play essentially the same kind of role as ['[^i]] (or ['[^j]] or ['[^k]]). -[link boost_math.octonions Octonions], like [link boost_math.quaternions quaternions], -are a relative of complex numbers. [link boost_math.octonions Octonions] -see some use in theoretical physics. +Addition and a multiplication is defined on the set of octonions, +which generalize their quaternionic counterparts. The main novelty this time +is that [*the multiplication is not only not commutative, is now not even +associative] (i.e. there are quaternions ['[^x]], ['[^y]] and ['[^z]] such that __oct_not_equal). +A way of remembering things is by using the following multiplication table: -[endsect] +[$../../octonion/graphics/octonion_blurb17.jpeg] -[include math-gcd.qbk] -[include math-sf.qbk] -[include math-tr1.qbk] -[include math-quaternion.qbk] -[include math-octonion.qbk] -[include math-background.qbk] +Octonions (and their kin) are described in far more details in this other +[@../../quaternion/TQE.pdf document] +(with [@../../quaternion/TQE_EA.pdf errata and addenda]). +Some traditional constructs, such as the exponential, carry over without too +much change into the realms of octonions, but other, such as taking a square root, +do not (the fact that the exponential has a closed form is a result of the +author, but the fact that the exponential exists at all for octonions is known +since quite a long time ago). + ]] + + [[[@../../../utility/operators.htm Operators]] + [The header supplies several sets of class + templates (in namespace boost). These templates define operators at + namespace scope in terms of a minimal number of fundamental + operators provided by the class.]] + +[[[@../sf_and_dist/html/index.html Special Functions]] + [ Provides a number of high quality special functions, initially + these were concentrated on functions used in statistical applications + along with those in the Technical Report on C++ Library Extensions. + + The function families currently implemented are the gamma, beta & erf + functions along with the incomplete gamma and beta functions + (four variants of each) and all the possible inverses of these, + plus digamma, various factorial functions, Bessel functions, + elliptic integrals, sinus cardinals (along with their + hyperbolic variants), inverse hyperbolic functions, + Legrendre/Laguerre/Hermite polynomials and various special power + and logarithmic functions. + + All the implementations are fully generic and support the use of + arbitrary "real-number" types, although they are optimised for + use with types with known-about significand (or mantissa) + sizes: typically float, double or long double. ]] + +[[[@../sf_and_dist/html/index.html Statistical Distributions]] + [Provides a reasonably comprehensive set of statistical distributions, + upon which higher level statistical tests can be built. + + The initial focus is on the central univariate distributions. + Both continuous (like normal & Fisher) and discrete (like binomial + & Poisson) distributions are provided. + + A comprehensive tutorial is provided, along with a series of worked + examples illustrating how the library is used to conduct statistical tests. ]] + +[[[@../quaternion/html/index.html Quaternions]] + [ +Quaternions are a relative of complex numbers. + +Quaternions are in fact part of a small hierarchy of structures built +upon the real numbers, which comprise only the set of real numbers +(traditionally named __R), the set of complex numbers (traditionally named __C), +the set of quaternions (traditionally named __H) and the set of octonions +(traditionally named __O), which possess interesting mathematical properties +(chief among which is the fact that they are ['division algebras], +['i.e.] where the following property is true: if ['[^y]] is an element of that +algebra and is [*not equal to zero], then ['[^yx = yx']], where ['[^x]] and ['[^x']] +denote elements of that algebra, implies that ['[^x = x']]). +Each member of the hierarchy is a super-set of the former. + +One of the most important aspects of quaternions is that they provide an +efficient way to parameterize rotations in __R3 (the usual three-dimensional space) +and __R4. + +In practical terms, a quaternion is simply a quadruple of real numbers __quadrulple, +which we can write in the form __quat_formula, where ['[^i]] is the same object as for complex numbers, +and ['[^j]] and ['[^k]] are distinct objects which play essentially the same kind of role as ['[^i]]. + +An addition and a multiplication is defined on the set of quaternions, +which generalize their real and complex counterparts. The main novelty +here is that [*the multiplication is not commutative] (i.e. there are +quaternions ['[^x]] and ['[^y]] such that __not_equal). A good mnemotechnical way of remembering +things is by using the formula ['[^i*i = j*j = k*k = -1]]. + +Quaternions (and their kin) are described in far more details in this +other [@../../quaternion/TQE.pdf document] +(with [@../../quaternion/TQE_EA.pdf errata and addenda]). + +Some traditional constructs, such as the exponential, carry over without +too much change into the realms of quaternions, but other, such as taking +a square root, do not. + ]] + + [[[@../../../random/index.html Random]] + [Random numbers are useful in a variety of applications. The Boost + Random Number Library (Boost.Random for short) provides a vast variety + of generators and distributions to produce random numbers having useful + properties, such as uniform distribution.]] + + [[[@../../../rational/index.html Rational]] + [The header rational.hpp provides an implementation of rational numbers. + The implementation is template-based, in a similar manner to the + standard complex number class.]] + + [[[@../../../numeric/ublas/doc/index.htm uBLAS]] + [uBLAS is a C++ template class library that provides BLAS level 1, 2, 3 + functionality for dense, packed and sparse matrices. The design and + implementation unify mathematical notation via operator overloading and + efficient code generation via expression templates.]] + +] diff --git a/doc/octonion/Jamfile.v2 b/doc/octonion/Jamfile.v2 new file mode 100644 index 000000000..6490f5079 --- /dev/null +++ b/doc/octonion/Jamfile.v2 @@ -0,0 +1,70 @@ + +# Copyright John Maddock 2005. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml octonion : math-octonion.qbk ; +boostbook standalone + : + octonion + : + # Path for links to Boost: + boost.root=../../../../.. + # Path for libraries index: + boost.libraries=../../../../../libs/libraries.htm + # Use the main Boost stylesheet: + html.stylesheet=../../../../../doc/html/boostbook.css + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=1 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + generate.section.toc.level=10 + #root.filename="sf_dist_and_tools" + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + # fop1.extensions=1 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:admon.graphics.path=$(images_location)/../../svg-admon/ + pdf:draft.mode="no" + ; + + + diff --git a/doc/octonion/html/boost_octonions/octonions.html b/doc/octonion/html/boost_octonions/octonions.html new file mode 100644 index 000000000..990e25ae1 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions.html @@ -0,0 +1,67 @@ + + + +Octonions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/acknowledgements.html b/doc/octonion/html/boost_octonions/octonions/acknowledgements.html new file mode 100644 index 000000000..d2165905e --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/acknowledgements.html @@ -0,0 +1,49 @@ + + + +Acknowledgements + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The mathematical text has been typeset with Nisus + Writer. Jens Maurer has helped with portability and standard adherence, + and was the Review Manager for this library. More acknowledgements in the + History section. Thank you to all who contributed to the discussion about + this library. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/header_file.html b/doc/octonion/html/boost_octonions/octonions/header_file.html new file mode 100644 index 000000000..b456859f6 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/header_file.html @@ -0,0 +1,45 @@ + + + +Header File + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The interface and implementation are both supplied by the header file octonion.hpp. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/history.html b/doc/octonion/html/boost_octonions/octonions/history.html new file mode 100644 index 000000000..23faf1561 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/history.html @@ -0,0 +1,104 @@ + + + +History + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
    +
  • + 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format. +
  • +
  • + 1.5.7 - 25/02/2003: transitionned to the unit test framework; <boost/config.hpp> + now included by the library header (rather than the test files), via <boost/math/quaternion.hpp>. +
  • +
  • + 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis + Evlogimenos (alkis@routescience.com). +
  • +
  • + 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens + (michael@acfr.usyd.edu.au); requires the /Za compiler option. +
  • +
  • + 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different + translation units); attempt at an improved compatibility with Microsoft + compilers, by Michael Stevens (michael@acfr.usyd.edu.au) and Fredrik Blomqvist; + other compatibility fixes. +
  • +
  • + 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor + (gregod@cs.rpi.edu). +
  • +
  • + 1.5.2 - 07/07/2001: introduced namespace math. +
  • +
  • + 1.5.1 - 07/06/2001: (end of Boost review) now includes <boost/math/special_functions/sinc.hpp> + and <boost/math/special_functions/sinhc.hpp> instead of <boost/special_functions.hpp>; + corrected bug in sin (Daryle Walker); removed check for self-assignment + (Gary Powel); made converting functions explicit (Gary Powel); added overflow + guards for division operators and abs (Peter Schmitteckert); added sup + and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code. +
  • +
  • + 1.5.0 - 23/03/2001: boostification, inlining of all operators except input, + output and pow, fixed exception safety of some members (template version). +
  • +
  • + 1.4.0 - 09/01/2001: added tan and tanh. +
  • +
  • + 1.3.1 - 08/01/2001: cosmetic fixes. +
  • +
  • + 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink@tip.nl) + algorithm. +
  • +
  • + 1.2.0 - 25/05/2000: fixed the division operators and output; changed many + signatures. +
  • +
  • + 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh. +
  • +
  • + 1.0.0 - 10/08/1999: first public version. +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/non_mem.html b/doc/octonion/html/boost_octonions/octonions/non_mem.html new file mode 100644 index 000000000..35221ab8f --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/non_mem.html @@ -0,0 +1,231 @@ + + + +Octonion Non-Member Operators + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Unary + Plus and Minus Operators +
+
+template<typename T> octonion<T> operator + (octonion<T> const & o);
+
+

+ This unary operator simply returns o. +

+
+template<typename T> octonion<T> operator - (octonion<T> const & o);
+
+

+ This unary operator returns the opposite of o. +

+
+ + Binary + Addition Operators +
+
+template<typename T> octonion<T> operator + (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator + (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator + (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, octonion<T> const & rhs);
+
+

+ These operators return octonion<T>(lhs) += + rhs. +

+
+ + Binary + Subtraction Operators +
+
+template<typename T> octonion<T> operator - (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator - (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator - (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, octonion<T> const & rhs);
+
+

+ These operators return octonion<T>(lhs) -= + rhs. +

+
+ + Binary + Multiplication Operators +
+
+template<typename T> octonion<T> operator * (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator * (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator * (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, octonion<T> const & rhs);
+
+

+ These operators return octonion<T>(lhs) *= + rhs. +

+
+ + Binary + Division Operators +
+
+template<typename T> octonion<T> operator / (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator / (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator / (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, octonion<T> const & rhs);
+
+

+ These operators return octonion<T>(lhs) /= + rhs. It is of course still an error + to divide by zero... +

+
+ + Binary + Equality Operators +
+
+template<typename T> bool operator == (T const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, T const & rhs);
+template<typename T> bool operator == (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> bool operator == (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, octonion<T> const & rhs);
+
+

+ These return true if and only if the four components of octonion<T>(lhs) are + equal to their counterparts in octonion<T>(rhs). As + with any floating-type entity, this is essentially meaningless. +

+
+ + Binary + Inequality Operators +
+
+template<typename T> bool operator != (T const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, T const & rhs);
+template<typename T> bool operator != (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> bool operator != (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, octonion<T> const & rhs);
+
+

+ These return true if and only if octonion<T>(lhs) == + octonion<T>(rhs) is + false. As with any floating-type entity, this is essentially meaningless. +

+
+ + Stream + Extractor +
+
+template<typename T, typename charT, class traits>
+::std::basic_istream<charT,traits> & operator >> (::std::basic_istream<charT,traits> & is, octonion<T> & o);
+
+

+ Extracts an octonion o. We + accept any format which seems reasonable. However, since this leads to a + great many ambiguities, decisions were made to lift these. In case of doubt, + stick to lists of reals. +

+

+ The input values must be convertible to T. If bad input is encountered, calls + is.setstate(ios::failbit) (which may throw ios::failure + (27.4.5.3)). +

+

+ Returns is. +

+
+ + Stream + Inserter +
+
+template<typename T, typename charT, class traits>
+::std::basic_ostream<charT,traits> & operator << (::std::basic_ostream<charT,traits> & os, octonion<T> const & o);
+
+

+ Inserts the octonion o onto + the stream os as if it were + implemented as follows: +

+
+template<typename T, typename charT, class traits>
+::std::basic_ostream<charT,traits> & operator << ( ::std::basic_ostream<charT,traits> & os,
+octonion<T> const & o)
+{
+   ::std::basic_ostringstream<charT,traits> s;
+
+   s.flags(os.flags());
+   s.imbue(os.getloc());
+   s.precision(os.precision());
+
+   s << '(' << o.R_component_1() << ','
+      << o.R_component_2() << ','
+      << o.R_component_3() << ','
+      << o.R_component_4() << ','
+      << o.R_component_5() << ','
+      << o.R_component_6() << ','
+      << o.R_component_7() << ','
+      << o.R_component_8() << ')';
+
+   return os << s.str();
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/oct_create.html b/doc/octonion/html/boost_octonions/octonions/oct_create.html new file mode 100644 index 000000000..64d52ff01 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/oct_create.html @@ -0,0 +1,82 @@ + + + +Octonion Creation Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+template<typename T> octonion<T> spherical(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6);
+template<typename T> octonion<T> multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4);
+template<typename T> octonion<T> cylindrical(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6);
+
+

+ These build octonions in a way similar to the way polar builds complex numbers, + as there is no strict equivalent to polar coordinates for octonions. +

+

+ spherical is a simple transposition + of polar, it takes as inputs + a (positive) magnitude and a point on the hypersphere, given by three angles. + The first of these, theta has a natural range of -pi + to +pi, and the other two have natural ranges of -pi/2 to +pi/2 (as is the + case with the usual spherical coordinates in R3). + Due to the many symmetries and periodicities, nothing untoward happens if + the magnitude is negative or the angles are outside their natural ranges. + The expected degeneracies (a magnitude of zero ignores the angles settings...) + do happen however. +

+

+ cylindrical is likewise a + simple transposition of the usual cylindrical coordinates in R3, which in turn is another derivative of + planar polar coordinates. The first two inputs are the polar coordinates + of the first C component + of the octonion. The third and fourth inputs are placed into the third and + fourth R components + of the octonion, respectively. +

+

+ multipolar is yet another + simple generalization of polar coordinates. This time, both C components of the octonion are given + in polar coordinates. +

+

+ In this version of our implementation of octonions, there is no analogue + of the complex value operation arg as the situation is somewhat more complicated. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html b/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html new file mode 100644 index 000000000..d2d626784 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/octonion_member_functions.html @@ -0,0 +1,272 @@ + + + +Octonion Member Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Constructors +

+

+ Template version: +

+
+explicit  octonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T());
+explicit  octonion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>());
+explicit  octonion(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>());
+template<typename X> 
+explicit octonion(octonion<X> const & a_recopier);
+
+

+ Float specialization version: +

+
+explicit  octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f);
+explicit  octonion(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>());
+explicit  octonion(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>());
+explicit  octonion(octonion<double> const & a_recopier); 
+explicit  octonion(octonion<long double> const & a_recopier);
+
+

+ Double specialization version: +

+
+explicit  octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0);
+explicit  octonion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>());
+explicit  octonion(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>());
+explicit  octonion(octonion<float> const & a_recopier);
+explicit  octonion(octonion<long double> const & a_recopier);
+
+

+ Long double specialization version: +

+
+explicit  octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L);
+explicit  octonion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>());
+explicit  octonion(::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & q1 = ::boost::math::quaternion<long double>());
+explicit  octonion(octonion<float> const & a_recopier);
+explicit  octonion(octonion<double> const & a_recopier);
+
+

+ A default constructor is provided for each form, which initializes each component + to the default values for their type (i.e. zero for floating numbers). This + constructor can also accept one to eight base type arguments. A constructor + is also provided to build octonions from one to four complex numbers sharing + the same base type, and another taking one or two quaternions sharing the + same base type. The unspecialized template also sports a templarized copy + constructor, while the specialized forms have copy constructors from the + other two specializations, which are explicit when a risk of precision loss + exists. For the unspecialized form, the base type's constructors must not + throw. +

+

+ Destructors and untemplated copy constructors (from the same type) are provided + by the compiler. Converting copy constructors make use of a templated helper + function in a "detail" subnamespace. +

+

+ + Other + member functions +

+
+ + Real + and Unreal Parts +
+
+T            real()   const;
+octonion<T>  unreal() const;
+
+

+ Like complex number, octonions do have a meaningful notion of "real + part", but unlike them there is no meaningful notion of "imaginary + part". Instead there is an "unreal part" which itself is a + octonion, and usually nothing simpler (as opposed to the complex number case). + These are returned by the first two functions. +

+
+ + Individual + Real Components +
+
+T   R_component_1() const;
+T   R_component_2() const;
+T   R_component_3() const;
+T   R_component_4() const;
+T   R_component_5() const;
+T   R_component_6() const;
+T   R_component_7() const;
+T   R_component_8() const;
+
+

+ A octonion having eight real components, these are returned by these eight + functions. Hence real and R_component_1 return the same value. +

+
+ + Individual + Complex Components +
+
+::std::complex<T> C_component_1() const;
+::std::complex<T> C_component_2() const;
+::std::complex<T> C_component_3() const;
+::std::complex<T> C_component_4() const;
+
+

+ A octonion likewise has four complex components. Actually, octonions are + indeed a (left) vector field over the complexes, but beware, as for any octonion + o = α + βi + γj + δk + εe' + ζi' + ηj' + θk' we also have o + = (α + βi) + (γ + δi)j + (ε + ζi)e' + (η - θi)j' (note the minus + sign in the last factor). What the C_component_n functions return, however, + are the complexes which could be used to build the octonion using the constructor, + and not the components of the octonion on + the basis (1, j, e', j'). +

+
+ + Individual + Quaternion Components +
+
+::boost::math::quaternion<T> H_component_1() const;
+::boost::math::quaternion<T> H_component_2() const;
+
+

+ Likewise, for any octonion o = α + βi + γj + δk + εe' + ζi' + ηj' + θk' we + also have o = (α + βi + γj + δk) + (ε + ζi + ηj - θj)e', though there is + no meaningful vector-space-like structure based on the quaternions. What + the H_component_n functions return are the quaternions which could be used + to build the octonion using the constructor. +

+

+ + Octonion + Member Operators +

+
+ + Assignment + Operators +
+
+octonion<T> & operator = (octonion<T> const & a_affecter);
+template<typename X> 
+octonion<T> & operator = (octonion<X> const & a_affecter);
+octonion<T> & operator = (T const & a_affecter);
+octonion<T> & operator = (::std::complex<T> const & a_affecter);
+octonion<T> & operator = (::boost::math::quaternion<T> const & a_affecter);
+
+

+ These perform the expected assignment, with type modification if necessary + (for instance, assigning from a base type will set the real part to that + value, and all other components to zero). For the unspecialized form, the + base type's assignment operators must not throw. +

+
+ + Other + Member Operators +
+
+octonion<T> & operator += (T const & rhs)
+octonion<T> & operator += (::std::complex<T> const & rhs);
+octonion<T> & operator += (::boost::math::quaternion<T> const & rhs);
+template<typename X> 
+octonion<T> & operator += (octonion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)+rhs + and store the result in *this. + The unspecialized form has exception guards, which the specialized forms + do not, so as to insure exception safety. For the unspecialized form, the + base type's assignment operators must not throw. +

+
+octonion<T> & operator -= (T const & rhs)
+octonion<T> & operator -= (::std::complex<T> const & rhs);
+octonion<T> & operator -= (::boost::math::quaternion<T> const & rhs);
+template<typename X> 
+octonion<T> & operator -= (octonion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)-rhs + and store the result in *this. + The unspecialized form has exception guards, which the specialized forms + do not, so as to insure exception safety. For the unspecialized form, the + base type's assignment operators must not throw. +

+
+octonion<T> & operator *= (T const & rhs)
+octonion<T> & operator *= (::std::complex<T> const & rhs);
+octonion<T> & operator *= (::boost::math::quaternion<T> const & rhs);
+template<typename X> 
+octonion<T> & operator *= (octonion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)*rhs + in this order (order is important as multiplication is not commutative for + octonions) and store the result in *this. The unspecialized form has exception + guards, which the specialized forms do not, so as to insure exception safety. + For the unspecialized form, the base type's assignment operators must not + throw. Also, for clarity's sake, you should always group the factors in a + multiplication by groups of two, as the multiplication is not even associative + on the octonions (though there are of course cases where this does not matter, + it usually does). +

+
+octonion<T> & operator /= (T const & rhs)
+octonion<T> & operator /= (::std::complex<T> const & rhs);
+octonion<T> & operator /= (::boost::math::quaternion<T> const & rhs);
+template<typename X> 
+octonion<T> & operator /= (octonion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)*inverse_of(rhs) + in this order (order is important as multiplication is not commutative for + octonions) and store the result in *this. The unspecialized form has exception + guards, which the specialized forms do not, so as to insure exception safety. + For the unspecialized form, the base type's assignment operators must not + throw. As for the multiplication, remember to group any two factors using + parenthesis. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html b/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html new file mode 100644 index 000000000..51697808e --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/octonion_member_typedefs.html @@ -0,0 +1,73 @@ + + + +Octonion Member Typedefs + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ value_type +

+

+ Template version: +

+
+typedef T value_type;
+
+

+ Float specialization version: +

+
+typedef float value_type;
+
+

+ Double specialization version: +

+
+typedef double value_type;
+
+

+ Long double specialization version: +

+
+typedef long double value_type;
+
+

+ These provide easy acces to the type the template is built upon. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html b/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html new file mode 100644 index 000000000..3a4917daa --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/octonion_specializations.html @@ -0,0 +1,246 @@ + + + +Octonion Specializations + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost{ namespace math{
+
+template<>
+class octonion<float>
+{
+public:
+   typedef float value_type;
+
+   explicit  octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f);
+   explicit  octonion(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>(), ::std::complex<float> const & z2 = ::std::complex<float>(), ::std::complex<float> const & z3 = ::std::complex<float>());
+   explicit  octonion(::boost::math::quaternion<float> const & q0, ::boost::math::quaternion<float> const & q1 = ::boost::math::quaternion<float>());
+   explicit  octonion(octonion<double> const & a_recopier);
+   explicit  octonion(octonion<long double> const & a_recopier);
+
+   float                             real() const;
+   octonion<float>                   unreal() const;
+
+   float                             R_component_1() const;
+   float                             R_component_2() const;
+   float                             R_component_3() const;
+   float                             R_component_4() const;
+   float                             R_component_5() const;
+   float                             R_component_6() const;
+   float                             R_component_7() const;
+   float                             R_component_8() const;
+
+   ::std::complex<float>             C_component_1() const;
+   ::std::complex<float>             C_component_2() const;
+   ::std::complex<float>             C_component_3() const;
+   ::std::complex<float>             C_component_4() const;
+
+   ::boost::math::quaternion<float>  H_component_1() const;
+   ::boost::math::quaternion<float>  H_component_2() const;
+
+   octonion<float> & operator = (octonion<float> const  & a_affecter);
+   template<typename X> 
+   octonion<float> & operator = (octonion<X> const  & a_affecter);
+   octonion<float> & operator = (float const  & a_affecter);
+   octonion<float> & operator = (::std::complex<float> const & a_affecter);
+   octonion<float> & operator = (::boost::math::quaternion<float> const & a_affecter);
+
+   octonion<float> & operator += (float const & rhs);
+   octonion<float> & operator += (::std::complex<float> const & rhs);
+   octonion<float> & operator += (::boost::math::quaternion<float> const & rhs);
+   template<typename X> 
+   octonion<float> & operator += (octonion<X> const & rhs);
+
+   octonion<float> & operator -= (float const & rhs);
+   octonion<float> & operator -= (::std::complex<float> const & rhs);
+   octonion<float> & operator -= (::boost::math::quaternion<float> const & rhs);
+   template<typename X> 
+   octonion<float> & operator -= (octonion<X> const & rhs);
+
+   octonion<float> & operator *= (float const & rhs);
+   octonion<float> & operator *= (::std::complex<float> const & rhs);
+   octonion<float> & operator *= (::boost::math::quaternion<float> const & rhs);
+   template<typename X> 
+   octonion<float> & operator *= (octonion<X> const & rhs);
+
+   octonion<float> & operator /= (float const & rhs);
+   octonion<float> & operator /= (::std::complex<float> const & rhs);
+   octonion<float> & operator /= (::boost::math::quaternion<float> const & rhs);
+   template<typename X> 
+   octonion<float> & operator /= (octonion<X> const & rhs);
+};
+
+

+

+
+template<>
+class octonion<double>
+{
+public:
+   typedef double value_type;
+
+   explicit  octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0);
+   explicit  octonion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>(), ::std::complex<double> const & z2 = ::std::complex<double>(), ::std::complex<double> const & z3 = ::std::complex<double>());
+   explicit  octonion(::boost::math::quaternion<double> const & q0, ::boost::math::quaternion<double> const & q1 = ::boost::math::quaternion<double>());
+   explicit  octonion(octonion<float> const & a_recopier);
+   explicit  octonion(octonion<long double> const & a_recopier);
+
+   double                             real() const;
+   octonion<double>                   unreal() const;
+
+   double                             R_component_1() const;
+   double                             R_component_2() const;
+   double                             R_component_3() const;
+   double                             R_component_4() const;
+   double                             R_component_5() const;
+   double                             R_component_6() const;
+   double                             R_component_7() const;
+   double                             R_component_8() const;
+
+   ::std::complex<double>             C_component_1() const;
+   ::std::complex<double>             C_component_2() const;
+   ::std::complex<double>             C_component_3() const;
+   ::std::complex<double>             C_component_4() const;
+
+   ::boost::math::quaternion<double>  H_component_1() const;
+   ::boost::math::quaternion<double>  H_component_2() const;
+
+   octonion<double> & operator = (octonion<double> const  & a_affecter);
+   template<typename X> 
+   octonion<double> & operator = (octonion<X> const  & a_affecter);
+   octonion<double> & operator = (double const  & a_affecter);
+   octonion<double> & operator = (::std::complex<double> const & a_affecter);
+   octonion<double> & operator = (::boost::math::quaternion<double> const & a_affecter);
+
+   octonion<double> & operator += (double const & rhs);
+   octonion<double> & operator += (::std::complex<double> const & rhs);
+   octonion<double> & operator += (::boost::math::quaternion<double> const & rhs);
+   template<typename X> 
+   octonion<double> & operator += (octonion<X> const & rhs);
+
+   octonion<double> & operator -= (double const & rhs);
+   octonion<double> & operator -= (::std::complex<double> const & rhs);
+   octonion<double> & operator -= (::boost::math::quaternion<double> const & rhs);
+   template<typename X> 
+   octonion<double> & operator -= (octonion<X> const & rhs);
+
+   octonion<double> & operator *= (double const & rhs);
+   octonion<double> & operator *= (::std::complex<double> const & rhs);
+   octonion<double> & operator *= (::boost::math::quaternion<double> const & rhs);
+   template<typename X> 
+   octonion<double> & operator *= (octonion<X> const & rhs);
+
+   octonion<double> & operator /= (double const & rhs);
+   octonion<double> & operator /= (::std::complex<double> const & rhs);
+   octonion<double> & operator /= (::boost::math::quaternion<double> const & rhs);
+   template<typename X> 
+   octonion<double> & operator /= (octonion<X> const & rhs);
+};
+
+

+

+
+template<>
+class octonion<long double>
+{
+public:
+   typedef long double value_type;
+
+   explicit   octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L);
+   explicit   octonion( ::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>(), ::std::complex<long double> const & z2 = ::std::complex<long double>(), ::std::complex<long double> const & z3 = ::std::complex<long double>());
+   explicit   octonion( ::boost::math::quaternion<long double> const & q0, ::boost::math::quaternion<long double> const & z1 = ::boost::math::quaternion<long double>());
+   explicit   octonion(octonion<float> const & a_recopier);
+   explicit   octonion(octonion<double> const & a_recopier);
+
+   long double                             real() const;
+   octonion<long double>                   unreal() const;
+
+   long double                             R_component_1() const;
+   long double                             R_component_2() const;
+   long double                             R_component_3() const;
+   long double                             R_component_4() const;
+   long double                             R_component_5() const;
+   long double                             R_component_6() const;
+   long double                             R_component_7() const;
+   long double                             R_component_8() const;
+
+   ::std::complex<long double>             C_component_1() const;
+   ::std::complex<long double>             C_component_2() const;
+   ::std::complex<long double>             C_component_3() const;
+   ::std::complex<long double>             C_component_4() const;
+
+   ::boost::math::quaternion<long double>  H_component_1() const;
+   ::boost::math::quaternion<long double>  H_component_2() const;
+
+   octonion<long double> & operator = (octonion<long double> const  & a_affecter);
+   template<typename X> 
+   octonion<long double> & operator = (octonion<X> const  & a_affecter);
+   octonion<long double> & operator = (long double const  & a_affecter);
+   octonion<long double> & operator = (::std::complex<long double> const & a_affecter);
+   octonion<long double> & operator = (::boost::math::quaternion<long double> const & a_affecter);
+
+   octonion<long double> & operator += (long double const & rhs);
+   octonion<long double> & operator += (::std::complex<long double> const & rhs);
+   octonion<long double> & operator += (::boost::math::quaternion<long double> const & rhs);
+   template<typename X> 
+   octonion<long double> & operator += (octonion<X> const & rhs);
+
+   octonion<long double> & operator -= (long double const & rhs);
+   octonion<long double> & operator -= (::std::complex<long double> const & rhs);
+   octonion<long double> & operator -= (::boost::math::quaternion<long double> const & rhs);
+   template<typename X> 
+   octonion<long double> & operator -= (octonion<X> const & rhs);
+
+   octonion<long double> & operator *= (long double const & rhs);
+   octonion<long double> & operator *= (::std::complex<long double> const & rhs);
+   octonion<long double> & operator *= (::boost::math::quaternion<long double> const & rhs);
+   template<typename X> 
+   octonion<long double> & operator *= (octonion<X> const & rhs);
+
+   octonion<long double> & operator /= (long double const & rhs);
+   octonion<long double> & operator /= (::std::complex<long double> const & rhs);
+   octonion<long double> & operator /= (::boost::math::quaternion<long double> const & rhs);
+   template<typename X> 
+   octonion<long double> & operator /= (octonion<X> const & rhs);
+};
+
+} } // namespaces
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html b/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html new file mode 100644 index 000000000..7712b6f80 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/octonion_value_operations.html @@ -0,0 +1,111 @@ + + + +Octonion Value Operations + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Real + and Unreal +
+
+template<typename T> T  real(octonion<T> const & o);
+template<typename T> octonion<T> unreal(octonion<T> const & o);
+
+

+ These return o.real() + and o.unreal() + respectively. +

+
+ + conj +
+
+template<typename T> octonion<T> conj(octonion<T> const & o);
+
+

+ This returns the conjugate of the octonion. +

+
+ + sup +
+
+template<typename T> T   sup(octonion<T> const & o);
+
+

+ This return the sup norm (the greatest among abs(o.R_component_1())...abs(o.R_component_8())) of the octonion. +

+
+ + l1 +
+
+template<typename T> T   l1(octonion<T> const & o);
+
+

+ This return the l1 norm (abs(o.R_component_1())+...+abs(o.R_component_8())) of the octonion. +

+
+ + abs +
+
+template<typename T> T   abs(octonion<T> const & o);
+
+

+ This return the magnitude (Euclidian norm) of the octonion. +

+
+ + norm +
+
+template<typename T> T  norm(octonion<T>const  & o);
+
+

+ This return the (Cayley) norm of the octonion. The term "norm" + might be confusing, as most people associate it with the Euclidian norm (and + quadratic functionals). For this version of (the mathematical objects known + as) octonions, the Euclidian norm (also known as magnitude) is the square + root of the Cayley norm. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html b/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html new file mode 100644 index 000000000..dee687a81 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/octonions_transcendentals.html @@ -0,0 +1,156 @@ + + + +Octonions Transcendentals + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There is no log or sqrt provided for octonions in this implementation, + and pow is likewise restricted + to integral powers of the exponent. There are several reasons to this: on + the one hand, the equivalent of analytic continuation for octonions ("branch + cuts") remains to be investigated thoroughly (by me, at any rate...), + and we wish to avoid the nonsense introduced in the standard by exponentiations + of complexes by complexes (which is well defined, but not in the standard...). + Talking of nonsense, saying that pow(0,0) is "implementation + defined" is just plain brain-dead... +

+

+ We do, however provide several transcendentals, chief among which is the + exponential. That it allows for a "closed formula" is a result + of the author (the existence and definition of the exponential, on the octonions + among others, on the other hand, is a few centuries old). Basically, any + converging power series with real coefficients which allows for a closed + formula in C can be + transposed to O. More + transcendentals of this type could be added in a further revision upon request. + It should be noted that it is these functions which force the dependency + upon the boost/math/special_functions/sinc.hpp + and the boost/math/special_functions/sinhc.hpp + headers. +

+
+ + exp +
+
+template<typename T> 
+octonion<T> exp(octonion<T> const & o);
+
+

+ Computes the exponential of the octonion. +

+
+ + cos +
+
+template<typename T> 
+octonion<T> cos(octonion<T> const & o);
+
+

+ Computes the cosine of the octonion +

+
+ + sin +
+
+template<typename T> 
+octonion<T> sin(octonion<T> const & o);
+
+

+ Computes the sine of the octonion. +

+
+ + tan +
+
+template<typename T> 
+octonion<T> tan(octonion<T> const & o);
+
+

+ Computes the tangent of the octonion. +

+
+ + cosh +
+
+template<typename T> 
+octonion<T> cosh(octonion<T> const & o);
+
+

+ Computes the hyperbolic cosine of the octonion. +

+
+ + sinh +
+
+template<typename T> 
+octonion<T> sinh(octonion<T> const & o);
+
+

+ Computes the hyperbolic sine of the octonion. +

+
+ + tanh +
+
+template<typename T> 
+octonion<T> tanh(octonion<T> const & o);
+
+

+ Computes the hyperbolic tangent of the octonion. +

+
+ + pow +
+
+template<typename T> 
+octonion<T>  pow(octonion<T> const & o, int n);
+
+

+ Computes the n-th power of the octonion q. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/overview.html b/doc/octonion/html/boost_octonions/octonions/overview.html new file mode 100644 index 000000000..9f792ae84 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/overview.html @@ -0,0 +1,82 @@ + + + +Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Octonions, like quaternions, + are a relative of complex numbers. +

+

+ Octonions see some use in theoretical physics. +

+

+ In practical terms, an octonion is simply an octuple of real numbers (α,β,γ,δ,ε,ζ,η,θ), + which we can write in the form o = α + βi + γj + δk + εe' + ζi' + ηj' + θk', + where i, j + and k are the same objects as for + quaternions, and e', i', + j' and k' + are distinct objects which play essentially the same kind of role as i + (or j or k). +

+

+ Addition and a multiplication is defined on the set of octonions, which generalize + their quaternionic counterparts. The main novelty this time is that the multiplication is not only not commutative, is now not even + associative (i.e. there are octonions x, + y and z + such that x(yz) ≠ (xy)z). A way of + remembering things is by using the following multiplication table: +

+

+ octonion_blurb17 +

+

+ Octonions (and their kin) are described in far more details in this other + document (with errata + and addenda). +

+

+ Some traditional constructs, such as the exponential, carry over without + too much change into the realms of octonions, but other, such as taking a + square root, do not (the fact that the exponential has a closed form is a + result of the author, but the fact that the exponential exists at all for + octonions is known since quite a long time ago). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/synopsis.html b/doc/octonion/html/boost_octonions/octonions/synopsis.html new file mode 100644 index 000000000..a78965b2c --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/synopsis.html @@ -0,0 +1,138 @@ + + + +Synopsis + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost{ namespace math{
+
+template<typename T> class octonion;
+template<>           class octonion<float>;
+template<>           class octonion<double>; 
+template<>           class octonion<long double>; 
+
+// operators
+
+template<typename T> octonion<T> operator + (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator + (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator + (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator + (octonion<T> const & lhs, octonion<T> const & rhs);
+
+template<typename T> octonion<T> operator - (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator - (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator - (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator - (octonion<T> const & lhs, octonion<T> const & rhs);
+
+template<typename T> octonion<T> operator * (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator * (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator * (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator * (octonion<T> const & lhs, octonion<T> const & rhs);
+
+template<typename T> octonion<T> operator / (T const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, T const & rhs);
+template<typename T> octonion<T> operator / (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> octonion<T> operator / (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> octonion<T> operator / (octonion<T> const & lhs, octonion<T> const & rhs); 
+
+template<typename T> octonion<T> operator + (octonion<T> const & o);
+template<typename T> octonion<T> operator - (octonion<T> const & o); 
+
+template<typename T> bool operator == (T const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, T const & rhs);
+template<typename T> bool operator == (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> bool operator == (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> bool operator == (octonion<T> const & lhs, octonion<T> const & rhs);
+
+template<typename T> bool operator != (T const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, T const & rhs);
+template<typename T> bool operator != (::std::complex<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> bool operator != (::boost::math::quaternion<T> const & lhs, octonion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, ::boost::math::quaternion<T> const & rhs);
+template<typename T> bool operator != (octonion<T> const & lhs, octonion<T> const & rhs); 
+
+template<typename T, typename charT, class traits>
+::std::basic_istream<charT,traits> & operator >> (::std::basic_istream<charT,traits> & is, octonion<T> & o);
+
+template<typename T, typename charT, class traits>
+::std::basic_ostream<charT,traits> & operator << (::std::basic_ostream<charT,traits> & os, octonion<T> const & o);
+
+// values
+
+template<typename T> T           real(octonion<T> const & o);
+template<typename T> octonion<T> unreal(octonion<T> const & o);
+
+template<typename T> T           sup(octonion<T> const & o);
+template<typename T> T           l1(octonion<T>const & o); 
+template<typename T> T           abs(octonion<T> const & o);
+template<typename T> T           norm(octonion<T>const  & o);
+template<typename T> octonion<T> conj(octonion<T> const & o);
+
+template<typename T> octonion<T> spherical(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6);
+template<typename T> octonion<T> multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4);
+template<typename T> octonion<T> cylindrical(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6);
+
+// transcendentals
+
+template<typename T> octonion<T> exp(octonion<T> const & o);
+template<typename T> octonion<T> cos(octonion<T> const & o);
+template<typename T> octonion<T> sin(octonion<T> const & o);
+template<typename T> octonion<T> tan(octonion<T> const & o);
+template<typename T> octonion<T> cosh(octonion<T> const & o);
+template<typename T> octonion<T> sinh(octonion<T> const & o);
+template<typename T> octonion<T> tanh(octonion<T> const & o);
+
+template<typename T> octonion<T> pow(octonion<T> const & o, int n);
+
+}  } // namespaces
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html b/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html new file mode 100644 index 000000000..d42a94b8e --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/template_class_octonion.html @@ -0,0 +1,112 @@ + + + +Template Class octonion + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost{ namespace math {
+
+template<typename T>
+class octonion
+{
+public:
+   typedef T value_type;
+
+   explicit  octonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T());
+   explicit  octonion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>(), ::std::complex<T> const & z2 = ::std::complex<T>(), ::std::complex<T> const & z3 = ::std::complex<T>());
+   explicit  octonion(::boost::math::quaternion<T> const & q0, ::boost::math::quaternion<T> const & q1 = ::boost::math::quaternion<T>());
+   template<typename X> 
+   explicit  octonion(octonion<X> const & a_recopier);
+
+   T                             real() const;
+   octonion<T>                   unreal() const;
+
+   T                             R_component_1() const;
+   T                             R_component_2() const;
+   T                             R_component_3() const;
+   T                             R_component_4() const;
+   T                             R_component_5() const;
+   T                             R_component_6() const;
+   T                             R_component_7() const;
+   T                             R_component_8() const;
+
+   ::std::complex<T>             C_component_1() const;
+   ::std::complex<T>             C_component_2() const;
+   ::std::complex<T>             C_component_3() const;
+   ::std::complex<T>             C_component_4() const;
+
+   ::boost::math::quaternion<T>  H_component_1() const;
+   ::boost::math::quaternion<T>  H_component_2() const;
+
+   octonion<T> & operator = (octonion<T> const  & a_affecter);
+   template<typename X> 
+   octonion<T> & operator = (octonion<X> const  & a_affecter);
+   octonion<T> & operator = (T const  & a_affecter);
+   octonion<T> & operator = (::std::complex<T> const & a_affecter);
+   octonion<T> & operator = (::boost::math::quaternion<T> const & a_affecter);
+
+   octonion<T> & operator += (T const & rhs);
+   octonion<T> & operator += (::std::complex<T> const & rhs);
+   octonion<T> & operator += (::boost::math::quaternion<T> const & rhs);
+   template<typename X> 
+   octonion<T> & operator += (octonion<X> const & rhs);
+
+   octonion<T> & operator -= (T const & rhs);
+   octonion<T> & operator -= (::std::complex<T> const & rhs);
+   octonion<T> & operator -= (::boost::math::quaternion<T> const & rhs);
+   template<typename X> 
+   octonion<T> & operator -= (octonion<X> const & rhs);
+
+   octonion<T> & operator *= (T const & rhs);
+   octonion<T> & operator *= (::std::complex<T> const & rhs);
+   octonion<T> & operator *= (::boost::math::quaternion<T> const & rhs);
+   template<typename X> 
+   octonion<T> & operator *= (octonion<X> const & rhs);
+
+   octonion<T> & operator /= (T const & rhs);
+   octonion<T> & operator /= (::std::complex<T> const & rhs);
+   octonion<T> & operator /= (::boost::math::quaternion<T> const & rhs);
+   template<typename X> 
+   octonion<T> & operator /= (octonion<X> const & rhs);
+};
+
+} } // namespaces
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/test_program.html b/doc/octonion/html/boost_octonions/octonions/test_program.html new file mode 100644 index 000000000..29e3de7dd --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/test_program.html @@ -0,0 +1,57 @@ + + + +Test Program + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The octonion_test.cpp + test program tests octonions specialisations for float, double and long double + (sample output). +

+

+ If you define the symbol BOOST_OCTONION_TEST_VERBOSE, you will get additional + output (verbose output); + this will only be helpfull if you enable message output at the same time, + of course (by uncommenting the relevant line in the test or by adding --log_level=messages + to your command line,...). In that case, and if you are running interactively, + you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR + to interactively test the input operator with input of your choice from the + standard input (instead of hard-coding it in the test). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/octonion/html/boost_octonions/octonions/to_do.html b/doc/octonion/html/boost_octonions/octonions/to_do.html new file mode 100644 index 000000000..7270fb4b9 --- /dev/null +++ b/doc/octonion/html/boost_octonions/octonions/to_do.html @@ -0,0 +1,52 @@ + + + +To Do + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHome +
+
+

+To Do +

+
    +
  • + Improve testing. +
  • +
  • + Rewrite input operatore using Spirit (creates a dependency). +
  • +
  • + Put in place an Expression Template mechanism (perhaps borrowing from uBlas). +
  • +
+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/octonion/html/index.html b/doc/octonion/html/index.html new file mode 100644 index 000000000..4e4f54911 --- /dev/null +++ b/doc/octonion/html/index.html @@ -0,0 +1,78 @@ + + + +Boost.Octonions + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
Next
+
+
+
+

+Boost.Octonions

+

+Hubert Holin +

+
+
+

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

+
+
+
+
+ +
+ + + +

Last revised: December 29, 2006 at 11:08:32 +0000

+
+
Next
+ + diff --git a/doc/octonion/math-octonion.qbk b/doc/octonion/math-octonion.qbk new file mode 100644 index 000000000..4896a6e07 --- /dev/null +++ b/doc/octonion/math-octonion.qbk @@ -0,0 +1,1005 @@ +[article Boost.Octonions + [quickbook 1.3] + [copyright 2001-2003 Hubert Holin] + [purpose Octonions] + [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]) + ] + [authors [Holin, Hubert]] + [category math] + [last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $] +] + +[def __R ['[*R]]] +[def __C ['[*C]]] +[def __H ['[*H]]] +[def __O ['[*O]]] +[def __R3 ['[*'''R3''']]] +[def __R4 ['[*'''R4''']]] +[def __octulple ('''α,β,γ,δ,ε,ζ,η,θ''')] +[def __oct_formula ['[^o = '''α + βi + γj + δk + εe' + ζi' + ηj' + θk' ''']]] +[def __oct_complex_formula ['[^o = ('''α + βi) + (γ + δi)j + (ε + ζi)e' + (η - θi)j' ''']]] +[def __oct_quat_formula ['[^o = ('''α + βi + γj + δk) + (ε + ζi + ηj - θj)e' ''']]] +[def __oct_not_equal ['[^x(yz) '''≠''' (xy)z]]] + +[def __asinh [link boost_quaternions.math_special_functions.asinh asinh]] +[def __acosh [link boost_quaternions.math_special_functions.acosh acosh]] +[def __atanh [link boost_quaternions.math_special_functions.atanh atanh]] +[def __sinc_pi [link boost_quaternions.math_special_functions.sinc_pi sinc_pi]] +[def __sinhc_pi [link boost_quaternions.math_special_functions.sinhc_pi sinhc_pi]] + +[def __log1p [link boost_quaternions.math_special_functions.log1p log1p]] +[def __expm1 [link boost_quaternions.math_special_functions.expm1 expm1]] +[def __hypot [link boost_quaternions.math_special_functions.hypot hypot]] + +[section Octonions] + +[section Overview] + +Octonions, like [@../../quaternions/html/index.html quaternions], are a relative of complex numbers. + +Octonions see some use in theoretical physics. + +In practical terms, an octonion is simply an octuple of real numbers __octulple, +which we can write in the form __oct_formula, where ['[^i]], ['[^j]] and ['[^k]] +are the same objects as for quaternions, and ['[^e']], ['[^i']], ['[^j']] and ['[^k']] +are distinct objects which play essentially the same kind of role as ['[^i]] (or ['[^j]] or ['[^k]]). + +Addition and a multiplication is defined on the set of octonions, +which generalize their quaternionic counterparts. The main novelty this time +is that [*the multiplication is not only not commutative, is now not even +associative] (i.e. there are octonions ['[^x]], ['[^y]] and ['[^z]] such that __oct_not_equal). +A way of remembering things is by using the following multiplication table: + +[$../../../octonion/graphics/octonion_blurb17.jpeg] + +Octonions (and their kin) are described in far more details in this other +[@../../../quaternion/TQE.pdf document] +(with [@../../../quaternion/TQE_EA.pdf errata and addenda]). + +Some traditional constructs, such as the exponential, carry over without too +much change into the realms of octonions, but other, such as taking a square root, +do not (the fact that the exponential has a closed form is a result of the +author, but the fact that the exponential exists at all for octonions is known +since quite a long time ago). + +[endsect] + +[section Header File] + +The interface and implementation are both supplied by the header file +[@../../../../../boost/math/octonion.hpp octonion.hpp]. + +[endsect] + +[section Synopsis] + + namespace boost{ namespace math{ + + template class ``[link boost_octonions.octonions.template_class_octonion octonion]``; + template<> class ``[link boost_octonions.octonions.octonion_specializations octonion]``; + template<> class ``[link boost_octonions.octonion_double octonion]``; + template<> class ``[link boost_octonions.octonion_long_double octonion]``; + + // operators + + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (T const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion const & lhs, T const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (::std::complex const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion const & lhs, ::std::complex const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_addition_operators operator +]`` (octonion const & lhs, octonion const & rhs); + + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (T const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion const & lhs, T const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (::std::complex const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion const & lhs, ::std::complex const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_subtraction_operators operator -]`` (octonion const & lhs, octonion const & rhs); + + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (T const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion const & lhs, T const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (::std::complex const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion const & lhs, ::std::complex const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_multiplication_operators operator *]`` (octonion const & lhs, octonion const & rhs); + + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (T const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion const & lhs, T const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (::std::complex const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion const & lhs, ::std::complex const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion ``[link boost_octonions.octonions.non_mem.binary_division_operators operator /]`` (octonion const & lhs, octonion const & rhs); + + template octonion ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator +]`` (octonion const & o); + template octonion ``[link boost_octonions.octonions.non_mem.unary_plus_and_minus_operators operator -]`` (octonion const & o); + + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (T const & lhs, octonion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion const & lhs, T const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::std::complex const & lhs, octonion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion const & lhs, ::std::complex const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (::boost::math::quaternion const & lhs, octonion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_equality_operators operator ==]`` (octonion const & lhs, octonion const & rhs); + + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (T const & lhs, octonion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion const & lhs, T const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::std::complex const & lhs, octonion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion const & lhs, ::std::complex const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (::boost::math::quaternion const & lhs, octonion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion const & lhs, ::boost::math::quaternion const & rhs); + template bool ``[link boost_octonions.octonions.non_mem.binary_inequality_operators operator !=]`` (octonion const & lhs, octonion const & rhs); + + template + ::std::basic_istream & ``[link boost_octonions.octonions.non_mem.stream_extractor operator >>]`` (::std::basic_istream & is, octonion & o); + + template + ::std::basic_ostream & ``[link boost_octonions.octonions.non_mem.stream_inserter operator <<]`` (::std::basic_ostream & os, octonion const & o); + + // values + + template T ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal real]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonion_value_operations.real_and_unreal unreal]``(octonion const & o); + + template T ``[link boost_octonions.octonions.octonion_value_operations.sup sup]``(octonion const & o); + template T ``[link boost_octonions.octonions.octonion_value_operations.l1 l1]``(octonionconst & o); + template T ``[link boost_octonions.octonions.octonion_value_operations.abs abs]``(octonion const & o); + template T ``[link boost_octonions.octonions.octonion_value_operations.norm norm]``(octonionconst & o); + template octonion ``[link boost_octonions.octonions.octonion_value_operations.conj conj]``(octonion const & o); + + template octonion ``[link boost_octonions.octonions.oct_create spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6); + template octonion ``[link boost_octonions.octonions.oct_create multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4); + template octonion ``[link boost_octonions.octonions.oct_create cylindrical]``(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6); + + // transcendentals + + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.exp exp]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.cos cos]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.sin sin]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.tan tan]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.cosh cosh]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.sinh sinh]``(octonion const & o); + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.tanh tanh]``(octonion const & o); + + template octonion ``[link boost_octonions.octonions.octonions_transcendentals.pow pow]``(octonion const & o, int n); + + } } // namespaces + +[endsect] + +[section Template Class octonion] + + namespace boost{ namespace math { + + template + class octonion + { + public: + typedef T value_type; + + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + template + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + + T ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; + octonion ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; + + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; + T ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; + + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; + + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (T const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (T const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (T const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (T const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (T const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); + }; + + } } // namespaces + +[endsect] + +[section Octonion Specializations] + + namespace boost{ namespace math{ + + template<> + class octonion + { + public: + typedef float value_type; + + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + + float ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; + octonion ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; + + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; + float ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; + + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; + + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (float const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (float const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (float const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (float const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (float const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); + }; + +[#boost_octonions.octonion_double] + + template<> + class octonion + { + public: + typedef double value_type; + + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + + double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; + octonion ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; + + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; + double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; + + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; + + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (double const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); + }; + +[#boost_octonions.octonion_long_double] + + template<> + class octonion + { + public: + typedef long double value_type; + + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``( ::boost::math::quaternion const & q0, ::boost::math::quaternion const & z1 = ::boost::math::quaternion()); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + explicit ``[link boost_octonions.octonions.octonion_member_functions.constructors octonion]``(octonion const & a_recopier); + + long double ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts real]``() const; + octonion ``[link boost_octonions.octonions.octonion_member_functions.real_and_unreal_parts unreal]``() const; + + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_1]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_2]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_3]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_4]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_5]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_6]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_7]``() const; + long double ``[link boost_octonions.octonions.octonion_member_functions.individual_real_components R_component_8]``() const; + + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_1]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_2]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_3]``() const; + ::std::complex ``[link boost_octonions.octonions.octonion_member_functions.individual_complex_components C_component_4]``() const; + + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_1]``() const; + ::boost::math::quaternion ``[link boost_octonions.octonions.octonion_member_functions.individual_quaternion_components H_component_2]``() const; + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (octonion const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (long double const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::std::complex const & a_affecter); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.assignment_operators operator =]`` (::boost::math::quaternion const & a_affecter); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (long double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator +=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (long double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator -=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (long double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator *=]`` (octonion const & rhs); + + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (long double const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::std::complex const & rhs); + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (::boost::math::quaternion const & rhs); + template + octonion & ``[link boost_octonions.octonions.octonion_member_functions.other_member_operators operator /=]`` (octonion const & rhs); + }; + + } } // namespaces + +[endsect] + +[section Octonion Member Typedefs] + +[*value_type] + +Template version: + + typedef T value_type; + +Float specialization version: + + typedef float value_type; + +Double specialization version: + + typedef double value_type; + +Long double specialization version: + + typedef long double value_type; + +These provide easy acces to the type the template is built upon. + +[endsect] + +[section Octonion Member Functions] + +[h3 Constructors] + +Template version: + + explicit octonion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T(), T const & requested_e = T(), T const & requested_f = T(), T const & requested_g = T(), T const & requested_h = T()); + explicit octonion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + template + explicit octonion(octonion const & a_recopier); + +Float specialization version: + + explicit octonion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f, float const & requested_e = 0.0f, float const & requested_f = 0.0f, float const & requested_g = 0.0f, float const & requested_h = 0.0f); + explicit octonion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + explicit octonion(octonion const & a_recopier); + explicit octonion(octonion const & a_recopier); + +Double specialization version: + + explicit octonion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0, double const & requested_e = 0.0, double const & requested_f = 0.0, double const & requested_g = 0.0, double const & requested_h = 0.0); + explicit octonion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + explicit octonion(octonion const & a_recopier); + explicit octonion(octonion const & a_recopier); + +Long double specialization version: + + explicit octonion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L, long double const & requested_e = 0.0L, long double const & requested_f = 0.0L, long double const & requested_g = 0.0L, long double const & requested_h = 0.0L); + explicit octonion( ::std::complex const & z0, ::std::complex const & z1 = ::std::complex(), ::std::complex const & z2 = ::std::complex(), ::std::complex const & z3 = ::std::complex()); + explicit octonion(::boost::math::quaternion const & q0, ::boost::math::quaternion const & q1 = ::boost::math::quaternion()); + explicit octonion(octonion const & a_recopier); + explicit octonion(octonion const & a_recopier); + +A default constructor is provided for each form, which initializes each component +to the default values for their type (i.e. zero for floating numbers). +This constructor can also accept one to eight base type arguments. +A constructor is also provided to build octonions from one to four complex numbers +sharing the same base type, and another taking one or two quaternions +sharing the same base type. The unspecialized template also sports a +templarized copy constructor, while the specialized forms have copy +constructors from the other two specializations, which are explicit +when a risk of precision loss exists. For the unspecialized form, +the base type's constructors must not throw. + +Destructors and untemplated copy constructors (from the same type) +are provided by the compiler. Converting copy constructors make use +of a templated helper function in a "detail" subnamespace. + +[h3 Other member functions] + +[h4 Real and Unreal Parts] + + T real() const; + octonion unreal() const; + +Like complex number, octonions do have a meaningful notion of "real part", +but unlike them there is no meaningful notion of "imaginary part". +Instead there is an "unreal part" which itself is a octonion, +and usually nothing simpler (as opposed to the complex number case). +These are returned by the first two functions. + +[h4 Individual Real Components] + + T R_component_1() const; + T R_component_2() const; + T R_component_3() const; + T R_component_4() const; + T R_component_5() const; + T R_component_6() const; + T R_component_7() const; + T R_component_8() const; + +A octonion having eight real components, these are returned by +these eight functions. Hence real and R_component_1 return the same value. + +[h4 Individual Complex Components] + + ::std::complex C_component_1() const; + ::std::complex C_component_2() const; + ::std::complex C_component_3() const; + ::std::complex C_component_4() const; + +A octonion likewise has four complex components. Actually, octonions +are indeed a (left) vector field over the complexes, but beware, as +for any octonion __oct_formula we also have __oct_complex_formula +(note the [*minus] sign in the last factor). +What the C_component_n functions return, however, are the complexes +which could be used to build the octonion using the constructor, and +[*not] the components of the octonion on the basis ['[^(1, j, e', j')]]. + +[h4 Individual Quaternion Components] + + ::boost::math::quaternion H_component_1() const; + ::boost::math::quaternion H_component_2() const; + +Likewise, for any octonion __oct_formula we also have __oct_quat_formula, though there +is no meaningful vector-space-like structure based on the quaternions. +What the H_component_n functions return are the quaternions which +could be used to build the octonion using the constructor. + +[h3 Octonion Member Operators] +[h4 Assignment Operators] + + octonion & operator = (octonion const & a_affecter); + template + octonion & operator = (octonion const & a_affecter); + octonion & operator = (T const & a_affecter); + octonion & operator = (::std::complex const & a_affecter); + octonion & operator = (::boost::math::quaternion const & a_affecter); + +These perform the expected assignment, with type modification if +necessary (for instance, assigning from a base type will set the +real part to that value, and all other components to zero). +For the unspecialized form, the base type's assignment operators must not throw. + +[h4 Other Member Operators] + + octonion & operator += (T const & rhs) + octonion & operator += (::std::complex const & rhs); + octonion & operator += (::boost::math::quaternion const & rhs); + template + octonion & operator += (octonion const & rhs); + +These perform the mathematical operation `(*this)+rhs` and store the result in +`*this`. The unspecialized form has exception guards, which the specialized +forms do not, so as to insure exception safety. For the unspecialized form, +the base type's assignment operators must not throw. + + octonion & operator -= (T const & rhs) + octonion & operator -= (::std::complex const & rhs); + octonion & operator -= (::boost::math::quaternion const & rhs); + template + octonion & operator -= (octonion const & rhs); + +These perform the mathematical operation `(*this)-rhs` and store the result +in `*this`. The unspecialized form has exception guards, which the +specialized forms do not, so as to insure exception safety. +For the unspecialized form, the base type's assignment operators must not throw. + + octonion & operator *= (T const & rhs) + octonion & operator *= (::std::complex const & rhs); + octonion & operator *= (::boost::math::quaternion const & rhs); + template + octonion & operator *= (octonion const & rhs); + +These perform the mathematical operation `(*this)*rhs` in this order +(order is important as multiplication is not commutative for octonions) +and store the result in `*this`. The unspecialized form has exception guards, +which the specialized forms do not, so as to insure exception safety. +For the unspecialized form, the base type's assignment operators must +not throw. Also, for clarity's sake, you should always group the +factors in a multiplication by groups of two, as the multiplication is +not even associative on the octonions (though there are of course cases +where this does not matter, it usually does). + + octonion & operator /= (T const & rhs) + octonion & operator /= (::std::complex const & rhs); + octonion & operator /= (::boost::math::quaternion const & rhs); + template + octonion & operator /= (octonion const & rhs); + +These perform the mathematical operation `(*this)*inverse_of(rhs)` +in this order (order is important as multiplication is not commutative +for octonions) and store the result in `*this`. The unspecialized form +has exception guards, which the specialized forms do not, so as to +insure exception safety. For the unspecialized form, the base +type's assignment operators must not throw. As for the multiplication, +remember to group any two factors using parenthesis. + +[endsect] + +[section:non_mem Octonion Non-Member Operators] + +[h4 Unary Plus and Minus Operators] + + template octonion operator + (octonion const & o); + +This unary operator simply returns o. + + template octonion operator - (octonion const & o); + +This unary operator returns the opposite of o. + +[h4 Binary Addition Operators] + + template octonion operator + (T const & lhs, octonion const & rhs); + template octonion operator + (octonion const & lhs, T const & rhs); + template octonion operator + (::std::complex const & lhs, octonion const & rhs); + template octonion operator + (octonion const & lhs, ::std::complex const & rhs); + template octonion operator + (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion operator + (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion operator + (octonion const & lhs, octonion const & rhs); + +These operators return `octonion(lhs) += rhs`. + +[h4 Binary Subtraction Operators] + + template octonion operator - (T const & lhs, octonion const & rhs); + template octonion operator - (octonion const & lhs, T const & rhs); + template octonion operator - (::std::complex const & lhs, octonion const & rhs); + template octonion operator - (octonion const & lhs, ::std::complex const & rhs); + template octonion operator - (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion operator - (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion operator - (octonion const & lhs, octonion const & rhs); + +These operators return `octonion(lhs) -= rhs`. + +[h4 Binary Multiplication Operators] + + template octonion operator * (T const & lhs, octonion const & rhs); + template octonion operator * (octonion const & lhs, T const & rhs); + template octonion operator * (::std::complex const & lhs, octonion const & rhs); + template octonion operator * (octonion const & lhs, ::std::complex const & rhs); + template octonion operator * (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion operator * (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion operator * (octonion const & lhs, octonion const & rhs); + +These operators return `octonion(lhs) *= rhs`. + +[h4 Binary Division Operators] + + template octonion operator / (T const & lhs, octonion const & rhs); + template octonion operator / (octonion const & lhs, T const & rhs); + template octonion operator / (::std::complex const & lhs, octonion const & rhs); + template octonion operator / (octonion const & lhs, ::std::complex const & rhs); + template octonion operator / (::boost::math::quaternion const & lhs, octonion const & rhs); + template octonion operator / (octonion const & lhs, ::boost::math::quaternion const & rhs); + template octonion operator / (octonion const & lhs, octonion const & rhs); + +These operators return `octonion(lhs) /= rhs`. It is of course still an +error to divide by zero... + +[h4 Binary Equality Operators] + + template bool operator == (T const & lhs, octonion const & rhs); + template bool operator == (octonion const & lhs, T const & rhs); + template bool operator == (::std::complex const & lhs, octonion const & rhs); + template bool operator == (octonion const & lhs, ::std::complex const & rhs); + template bool operator == (::boost::math::quaternion const & lhs, octonion const & rhs); + template bool operator == (octonion const & lhs, ::boost::math::quaternion const & rhs); + template bool operator == (octonion const & lhs, octonion const & rhs); + +These return true if and only if the four components of `octonion(lhs)` +are equal to their counterparts in `octonion(rhs)`. As with any +floating-type entity, this is essentially meaningless. + +[h4 Binary Inequality Operators] + + template bool operator != (T const & lhs, octonion const & rhs); + template bool operator != (octonion const & lhs, T const & rhs); + template bool operator != (::std::complex const & lhs, octonion const & rhs); + template bool operator != (octonion const & lhs, ::std::complex const & rhs); + template bool operator != (::boost::math::quaternion const & lhs, octonion const & rhs); + template bool operator != (octonion const & lhs, ::boost::math::quaternion const & rhs); + template bool operator != (octonion const & lhs, octonion const & rhs); + +These return true if and only if `octonion(lhs) == octonion(rhs)` +is false. As with any floating-type entity, this is essentially meaningless. + +[h4 Stream Extractor] + + template + ::std::basic_istream & operator >> (::std::basic_istream & is, octonion & o); + +Extracts an octonion `o`. We accept any format which seems reasonable. +However, since this leads to a great many ambiguities, decisions were made +to lift these. In case of doubt, stick to lists of reals. + +The input values must be convertible to T. If bad input is encountered, +calls `is.setstate(ios::failbit)` (which may throw `ios::failure` (27.4.5.3)). + +Returns `is`. + +[h4 Stream Inserter] + + template + ::std::basic_ostream & operator << (::std::basic_ostream & os, octonion const & o); + +Inserts the octonion `o` onto the stream `os` as if it were implemented as follows: + + template + ::std::basic_ostream & operator << ( ::std::basic_ostream & os, + octonion const & o) + { + ::std::basic_ostringstream s; + + s.flags(os.flags()); + s.imbue(os.getloc()); + s.precision(os.precision()); + + s << '(' << o.R_component_1() << ',' + << o.R_component_2() << ',' + << o.R_component_3() << ',' + << o.R_component_4() << ',' + << o.R_component_5() << ',' + << o.R_component_6() << ',' + << o.R_component_7() << ',' + << o.R_component_8() << ')'; + + return os << s.str(); + } + +[endsect] + +[section Octonion Value Operations] + +[h4 Real and Unreal] + + template T real(octonion const & o); + template octonion unreal(octonion const & o); + +These return `o.real()` and `o.unreal()` respectively. + +[h4 conj] + + template octonion conj(octonion const & o); + +This returns the conjugate of the octonion. + +[h4 sup] + + template T sup(octonion const & o); + +This return the sup norm (the greatest among +`abs(o.R_component_1())...abs(o.R_component_8()))` of the octonion. + +[h4 l1] + + template T l1(octonion const & o); + +This return the l1 norm (`abs(o.R_component_1())+...+abs(o.R_component_8())`) +of the octonion. + +[h4 abs] + + template T abs(octonion const & o); + +This return the magnitude (Euclidian norm) of the octonion. + +[h4 norm] + + template T norm(octonionconst & o); + +This return the (Cayley) norm of the octonion. The term "norm" might +be confusing, as most people associate it with the Euclidian norm +(and quadratic functionals). For this version of (the mathematical +objects known as) octonions, the Euclidian norm (also known as +magnitude) is the square root of the Cayley norm. + +[endsect] + +[section:oct_create Octonion Creation Functions] + + template octonion spherical(T const & rho, T const & theta, T const & phi1, T const & phi2, T const & phi3, T const & phi4, T const & phi5, T const & phi6); + template octonion multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2, T const & rho3, T const & theta3, T const & rho4, T const & theta4); + template octonion cylindrical(T const & r, T const & angle, T const & h1, T const & h2, T const & h3, T const & h4, T const & h5, T const & h6); + +These build octonions in a way similar to the way polar builds +complex numbers, as there is no strict equivalent to +polar coordinates for octonions. + +`spherical` is a simple transposition of `polar`, it takes as inputs a +(positive) magnitude and a point on the hypersphere, given +by three angles. The first of these, ['theta] has a natural range of +-pi to +pi, and the other two have natural ranges of +-pi/2 to +pi/2 (as is the case with the usual spherical +coordinates in __R3). Due to the many symmetries and periodicities, +nothing untoward happens if the magnitude is negative or the angles are +outside their natural ranges. The expected degeneracies (a magnitude of +zero ignores the angles settings...) do happen however. + +`cylindrical` is likewise a simple transposition of the usual +cylindrical coordinates in __R3, which in turn is another derivative of +planar polar coordinates. The first two inputs are the polar +coordinates of the first __C component of the octonion. The third and +fourth inputs are placed into the third and fourth __R components of the +octonion, respectively. + +`multipolar` is yet another simple generalization of polar coordinates. +This time, both __C components of the octonion are given in polar coordinates. + +In this version of our implementation of octonions, there is no +analogue of the complex value operation arg as the situation is +somewhat more complicated. + +[endsect] + +[section Octonions Transcendentals] + +There is no `log` or `sqrt` provided for octonions in this implementation, +and `pow` is likewise restricted to integral powers of the exponent. +There are several reasons to this: on the one hand, the equivalent of +analytic continuation for octonions ("branch cuts") remains to be +investigated thoroughly (by me, at any rate...), and we wish to avoid +the nonsense introduced in the standard by exponentiations of +complexes by complexes (which is well defined, but not in the standard...). +Talking of nonsense, saying that `pow(0,0)` is "implementation defined" is +just plain brain-dead... + +We do, however provide several transcendentals, chief among which is +the exponential. That it allows for a "closed formula" is a result +of the author (the existence and definition of the exponential, on the +octonions among others, on the other hand, is a few centuries old). +Basically, any converging power series with real coefficients which +allows for a closed formula in __C can be transposed to __O. More +transcendentals of this type could be added in a further revision upon +request. It should be noted that it is these functions which force the +dependency upon the +[@../../../../../boost/math/special_functions/sinc.hpp boost/math/special_functions/sinc.hpp] +and the +[@../../../../../boost/math/special_functions/sinhc.hpp boost/math/special_functions/sinhc.hpp] +headers. + +[h4 exp] + + template + octonion exp(octonion const & o); + +Computes the exponential of the octonion. + +[h4 cos] + + template + octonion cos(octonion const & o); + +Computes the cosine of the octonion + +[h4 sin] + + template + octonion sin(octonion const & o); + +Computes the sine of the octonion. + +[h4 tan] + + template + octonion tan(octonion const & o); + +Computes the tangent of the octonion. + +[h4 cosh] + + template + octonion cosh(octonion const & o); + +Computes the hyperbolic cosine of the octonion. + +[h4 sinh] + + template + octonion sinh(octonion const & o); + +Computes the hyperbolic sine of the octonion. + +[h4 tanh] + + template + octonion tanh(octonion const & o); + +Computes the hyperbolic tangent of the octonion. + +[h4 pow] + + template + octonion pow(octonion const & o, int n); + +Computes the n-th power of the octonion q. + +[endsect] + +[section Test Program] + +The [@../../../octonion/octonion_test.cpp octonion_test.cpp] +test program tests octonions specialisations for float, double and long double +([@../../../octonion/output.txt sample output]). + +If you define the symbol BOOST_OCTONION_TEST_VERBOSE, you will get additional +output ([@../../../octonion/output_more.txt verbose output]); this will +only be helpfull if you enable message output at the same time, of course +(by uncommenting the relevant line in the test or by adding --log_level=messages +to your command line,...). In that case, and if you are running interactively, +you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR to +interactively test the input operator with input of your choice from the +standard input (instead of hard-coding it in the test). + +[endsect] + +[section Acknowledgements] + +The mathematical text has been typeset with +[@http://www.nisus-soft.com/ Nisus Writer]. +Jens Maurer has helped with portability and standard adherence, and was the +Review Manager for this library. More acknowledgements in the +History section. Thank you to all who contributed to the discussion about this library. + +[endsect] + +[section History] + +* 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format. +* 1.5.7 - 25/02/2003: transitionned to the unit test framework; now included by the library header (rather than the test files), via . +* 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis Evlogimenos (alkis@routescience.com). +* 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens (michael@acfr.usyd.edu.au); requires the /Za compiler option. +* 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different translation units); attempt at an improved compatibility with Microsoft compilers, by Michael Stevens (michael@acfr.usyd.edu.au) and Fredrik Blomqvist; other compatibility fixes. +* 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor (gregod@cs.rpi.edu). +* 1.5.2 - 07/07/2001: introduced namespace math. +* 1.5.1 - 07/06/2001: (end of Boost review) now includes and instead of ; corrected bug in sin (Daryle Walker); removed check for self-assignment (Gary Powel); made converting functions explicit (Gary Powel); added overflow guards for division operators and abs (Peter Schmitteckert); added sup and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code. +* 1.5.0 - 23/03/2001: boostification, inlining of all operators except input, output and pow, fixed exception safety of some members (template version). +* 1.4.0 - 09/01/2001: added tan and tanh. +* 1.3.1 - 08/01/2001: cosmetic fixes. +* 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink@tip.nl) algorithm. +* 1.2.0 - 25/05/2000: fixed the division operators and output; changed many signatures. +* 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh. +* 1.0.0 - 10/08/1999: first public version. + +[endsect] + +[section To Do] + +* Improve testing. +* Rewrite input operatore using Spirit (creates a dependency). +* Put in place an Expression Template mechanism (perhaps borrowing from uBlas). + +[endsect] + +[endsect] diff --git a/doc/quaternion/Jamfile.v2 b/doc/quaternion/Jamfile.v2 new file mode 100644 index 000000000..67168f291 --- /dev/null +++ b/doc/quaternion/Jamfile.v2 @@ -0,0 +1,70 @@ + +# Copyright John Maddock 2005. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml quaternion : math-quaternion.qbk ; +boostbook standalone + : + quaternion + : + # Path for links to Boost: + boost.root=../../../../.. + # Path for libraries index: + boost.libraries=../../../../../libs/libraries.htm + # Use the main Boost stylesheet: + html.stylesheet=../../../../../doc/html/boostbook.css + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=1 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + generate.section.toc.level=10 + #root.filename="sf_dist_and_tools" + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + # fop1.extensions=1 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:admon.graphics.path=$(images_location)/../../svg-admon/ + pdf:draft.mode="no" + ; + + + diff --git a/doc/quaternion/html/boost_quaternions/quaternions.html b/doc/quaternion/html/boost_quaternions/quaternions.html new file mode 100644 index 000000000..027c9977f --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions.html @@ -0,0 +1,65 @@ + + + +Quaternions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html b/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html new file mode 100644 index 000000000..640ec024e --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/acknowledgements.html @@ -0,0 +1,49 @@ + + + +Acknowledgements + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The mathematical text has been typeset with Nisus + Writer. Jens Maurer has helped with portability and standard adherence, + and was the Review Manager for this library. More acknowledgements in the + History section. Thank you to all who contributed to the discution about + this library. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/create.html b/doc/quaternion/html/boost_quaternions/quaternions/create.html new file mode 100644 index 000000000..035097883 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/create.html @@ -0,0 +1,118 @@ + + + + Quaternion Creation + Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+template<typename T>	quaternion<T>	spherical(T const & rho, T const & theta, T const & phi1, T const & phi2);
+template<typename T>	quaternion<T>	semipolar(T const & rho, T const & alpha, T const & theta1, T const & theta2);
+template<typename T>	quaternion<T>	multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2);
+template<typename T>	quaternion<T>	cylindrospherical(T const & t, T const & radius, T const & longitude, T const & latitude);
+template<typename T>	quaternion<T>	cylindrical(T const & r, T const & angle, T const & h1, T const & h2);
+
+

+ These build quaternions in a way similar to the way polar builds complex + numbers, as there is no strict equivalent to polar coordinates for quaternions. +

+

+ spherical is a simple transposition + of polar, it takes as inputs + a (positive) magnitude and a point on the hypersphere, given by three angles. + The first of these, theta + has a natural range of -pi + to +pi, + and the other two have natural ranges of -pi/2 + to +pi/2 (as is the + case with the usual spherical coordinates in R3). + Due to the many symmetries and periodicities, nothing untoward happens if + the magnitude is negative or the angles are outside their natural ranges. + The expected degeneracies (a magnitude of zero ignores the angles settings...) + do happen however. +

+

+ cylindrical is likewise a + simple transposition of the usual cylindrical coordinates in R3, which in turn is another derivative of + planar polar coordinates. The first two inputs are the polar coordinates + of the first C component + of the quaternion. The third and fourth inputs are placed into the third + and fourth R components + of the quaternion, respectively. +

+

+ multipolar is yet another + simple generalization of polar coordinates. This time, both C components of the quaternion are given + in polar coordinates. +

+

+ cylindrospherical is specific + to quaternions. It is often interesting to consider H + as the cartesian product of R + by R3 (the quaternionic + multiplication as then a special form, as given here). This function therefore + builds a quaternion from this representation, with the R3 component given in usual R3 spherical coordinates. +

+

+ semipolar is another generator + which is specific to quaternions. It takes as a first input the magnitude + of the quaternion, as a second input an angle in the range 0 to +pi/2 + such that magnitudes of the first two C + components of the quaternion are the product of the first input and the sine + and cosine of this angle, respectively, and finally as third and fourth inputs + angles in the range -pi/2 to +pi/2 which represent the arguments of the first + and second C components + of the quaternion, respectively. As usual, nothing untoward happens if what + should be magnitudes are negative numbers or angles are out of their natural + ranges, as symmetries and periodicities kick in. +

+

+ In this version of our implementation of quaternions, there is no analogue + of the complex value operation arg + as the situation is somewhat more complicated. Unit quaternions are linked + both to rotations in R3 + and in R4, and the correspondences + are not too complicated, but there is currently a lack of standard (de facto + or de jure) matrix library with which the conversions could work. This should + be remedied in a further revision. In the mean time, an example of how this + could be done is presented here for R3, and here for R4 (example + test file). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/exp.html b/doc/quaternion/html/boost_quaternions/quaternions/exp.html new file mode 100644 index 000000000..7f99b8ec5 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/exp.html @@ -0,0 +1,53 @@ + + + + The Quaternionic + Exponential + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/header_file.html b/doc/quaternion/html/boost_quaternions/quaternions/header_file.html new file mode 100644 index 000000000..4d929de28 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/header_file.html @@ -0,0 +1,44 @@ + + + +Header File + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The interface and implementation are both supplied by the header file quaternion.hpp. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/history.html b/doc/quaternion/html/boost_quaternions/quaternions/history.html new file mode 100644 index 000000000..18a5abe63 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/history.html @@ -0,0 +1,105 @@ + + + +History + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
    +
  • + 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format. +
  • +
  • + 1.5.7 - 24/02/2003: transitionned to the unit test framework; <boost/config.hpp> + now included by the library header (rather than the test files). +
  • +
  • + 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis + Evlogimenos (alkis@routescience.com). +
  • +
  • + 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens + (michael@acfr.usyd.edu.au); requires the /Za compiler option. +
  • +
  • + 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different + translation units); attempt at an improved compatibility with Microsoft + compilers, by Michael Stevens (michael@acfr.usyd.edu.au) and Fredrik Blomqvist; + other compatibility fixes. +
  • +
  • + 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor + (gregod@cs.rpi.edu). +
  • +
  • + 1.5.2 - 07/07/2001: introduced namespace math. +
  • +
  • + 1.5.1 - 07/06/2001: (end of Boost review) now includes <boost/math/special_functions/sinc.hpp> + and <boost/math/special_functions/sinhc.hpp> instead of <boost/special_functions.hpp>; + corrected bug in sin (Daryle Walker); removed check for self-assignment + (Gary Powel); made converting functions explicit (Gary Powel); added overflow + guards for division operators and abs (Peter Schmitteckert); added sup + and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code. +
  • +
  • + 1.5.0 - 26/03/2001: boostification, inlining of all operators except input, + output and pow, fixed exception safety of some members (template version) + and output operator, added spherical, semipolar, multipolar, cylindrospherical + and cylindrical. +
  • +
  • + 1.4.0 - 09/01/2001: added tan and tanh. +
  • +
  • + 1.3.1 - 08/01/2001: cosmetic fixes. +
  • +
  • + 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink@tip.nl) + algorithm. +
  • +
  • + 1.2.0 - 25/05/2000: fixed the division operators and output; changed many + signatures. +
  • +
  • + 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh. +
  • +
  • + 1.0.0 - 10/08/1999: first public version. +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html b/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html new file mode 100644 index 000000000..b806f7fc5 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/mem_fun.html @@ -0,0 +1,251 @@ + + + + Quaternion Member + Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Constructors +

+

+ Template version: +

+
+explicit quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());
+explicit quaternion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());
+template<typename X>
+explicit quaternion(quaternion<X> const & a_recopier);
+
+

+ Float specialization version: +

+
+explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);
+explicit quaternion(::std::complex<float> const & z0,::std::complex<float> const & z1 = ::std::complex<float>());
+explicit quaternion(quaternion<double> const & a_recopier); 
+explicit quaternion(quaternion<long double> const & a_recopier);
+
+

+ Double specialization version: +

+
+explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);
+explicit quaternion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());
+explicit quaternion(quaternion<float> const & a_recopier);
+explicit quaternion(quaternion<long double> const & a_recopier);
+
+

+ Long double specialization version: +

+
+explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);
+explicit quaternion(	::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());
+explicit quaternion(quaternion<float> const & a_recopier);
+explicit quaternion(quaternion<double> const & a_recopier);
+
+

+ A default constructor is provided for each form, which initializes each component + to the default values for their type (i.e. zero for floating numbers). This + constructor can also accept one to four base type arguments. A constructor + is also provided to build quaternions from one or two complex numbers sharing + the same base type. The unspecialized template also sports a templarized + copy constructor, while the specialized forms have copy constructors from + the other two specializations, which are explicit when a risk of precision + loss exists. For the unspecialized form, the base type's constructors must + not throw. +

+

+ Destructors and untemplated copy constructors (from the same type) are provided + by the compiler. Converting copy constructors make use of a templated helper + function in a "detail" subnamespace. +

+

+ + Other + member functions +

+

+ + Real + and Unreal Parts +

+
+T             real() const;
+quaternion<T> unreal() const;
+
+

+ Like complex number, quaternions do have a meaningful notion of "real + part", but unlike them there is no meaningful notion of "imaginary + part". Instead there is an "unreal part" which itself is a + quaternion, and usually nothing simpler (as opposed to the complex number + case). These are returned by the first two functions. +

+

+ + Individual + Real Components +

+
+T R_component_1() const;
+T R_component_2() const;
+T R_component_3() const;
+T R_component_4() const;
+
+

+ A quaternion having four real components, these are returned by these four + functions. Hence real and R_component_1 return the same value. +

+

+ + Individual + Complex Components +

+
+::std::complex<T>	C_component_1() const;
+::std::complex<T>	C_component_2() const;
+
+

+ A quaternion likewise has two complex components, and as we have seen above, + for any quaternion q = α + βi + γj + δk we also have + q = (α + βi) + (γ + δi)j . These functions return them. + The real part of q.C_component_1() + is the same as q.real(). +

+

+ + Quaternion + Member Operators +

+

+ + Assignment + Operators +

+
+quaternion<T>& operator = (quaternion<T> const & a_affecter);
+template<typename X> 
+quaternion<T>& operator = (quaternion<X> const& a_affecter);
+quaternion<T>& operator = (T const& a_affecter);
+quaternion<T>& operator = (::std::complex<T> const& a_affecter);
+
+

+ These perform the expected assignment, with type modification if necessary + (for instance, assigning from a base type will set the real part to that + value, and all other components to zero). For the unspecialized form, the + base type's assignment operators must not throw. +

+

+ + Addition + Operators +

+
+quaternion<T>& operator += (T const & rhs)
+quaternion<T>& operator += (::std::complex<T> const & rhs);
+template<typename X>	
+quaternion<T>& operator += (quaternion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)+rhs + and store the result in *this. + The unspecialized form has exception guards, which the specialized forms + do not, so as to insure exception safety. For the unspecialized form, the + base type's assignment operators must not throw. +

+

+ + Subtraction + Operators +

+
+quaternion<T>& operator -= (T const & rhs)
+quaternion<T>& operator -= (::std::complex<T> const & rhs);
+template<typename X>	
+quaternion<T>& operator -= (quaternion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)-rhs + and store the result in *this. + The unspecialized form has exception guards, which the specialized forms + do not, so as to insure exception safety. For the unspecialized form, the + base type's assignment operators must not throw. +

+

+ + Multiplication + Operators +

+
+quaternion<T>& operator *= (T const & rhs)
+quaternion<T>& operator *= (::std::complex<T> const & rhs);
+template<typename X>	
+quaternion<T>& operator *= (quaternion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)*rhs + in this order (order is important as multiplication + is not commutative for quaternions) and store the result in *this. The + unspecialized form has exception guards, which the specialized forms do not, + so as to insure exception safety. For the unspecialized form, the base type's + assignment operators must not throw. +

+

+ + Division + Operators +

+
+quaternion<T>& operator /= (T const & rhs)
+quaternion<T>& operator /= (::std::complex<T> const & rhs);
+template<typename X>	
+quaternion<T>& operator /= (quaternion<X> const & rhs);
+
+

+ These perform the mathematical operation (*this)*inverse_of(rhs) + in this order (order is important as multiplication + is not commutative for quaternions) and store the result in *this. The + unspecialized form has exception guards, which the specialized forms do not, + so as to insure exception safety. For the unspecialized form, the base type's + assignment operators must not throw. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html b/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html new file mode 100644 index 000000000..0baab67c6 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/mem_typedef.html @@ -0,0 +1,75 @@ + + + + Quaternion + Member Typedefs + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ value_type +

+

+ Template version: +

+
+typedef T value_type;
+
+

+ Float specialization version: +

+
+typedef float value_type;
+
+

+ Double specialization version: +

+
+typedef double value_type;
+
+

+ Long double specialization version: +

+
+typedef long double value_type;
+
+

+ These provide easy acces to the type the template is built upon. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html b/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html new file mode 100644 index 000000000..5f5dd4fe1 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/non_mem.html @@ -0,0 +1,233 @@ + + + + Quaternion Non-Member + Operators + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + Unary Plus +

+
+template<typename T>	
+quaternion<T> operator + (quaternion<T> const & q);
+
+

+ This unary operator simply returns q. +

+

+ + Unary Minus +

+
+template<typename T>
+quaternion<T> operator - (quaternion<T> const & q);
+
+

+ This unary operator returns the opposite of q. +

+

+ + Binary + Addition Operators +

+
+template<typename T>	quaternion<T>	operator + (T const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator + (quaternion<T> const & lhs, T const & rhs);
+template<typename T>	quaternion<T>	operator + (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator + (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T>	quaternion<T>	operator + (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+

+ These operators return quaternion<T>(lhs) += + rhs. +

+

+ + Binary + Subtraction Operators +

+
+template<typename T>	quaternion<T>	operator - (T const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator - (quaternion<T> const & lhs, T const & rhs);
+template<typename T>	quaternion<T>	operator - (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator - (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T>	quaternion<T>	operator - (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+

+ These operators return quaternion<T>(lhs) -= + rhs. +

+

+ + Binary + Multiplication Operators +

+
+template<typename T>	quaternion<T>	operator * (T const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator * (quaternion<T> const & lhs, T const & rhs);
+template<typename T>	quaternion<T>	operator * (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator * (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T>	quaternion<T>	operator * (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+

+ These operators return quaternion<T>(lhs) *= + rhs. +

+

+ + Binary + Division Operators +

+
+template<typename T>	quaternion<T>	operator / (T const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator / (quaternion<T> const & lhs, T const & rhs);
+template<typename T>	quaternion<T>	operator / (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T>	quaternion<T>	operator / (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T>	quaternion<T>	operator / (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+

+ These operators return quaternion<T>(lhs) /= + rhs. It is of course still an error + to divide by zero... +

+

+ + Equality + Operators +

+
+template<typename T>	bool	operator == (T const & lhs, quaternion<T> const & rhs);
+template<typename T>	bool	operator == (quaternion<T> const & lhs, T const & rhs);
+template<typename T>	bool	operator == (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T>	bool	operator == (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T>	bool	operator == (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+

+ These return true if and only if the four components of quaternion<T>(lhs) are + equal to their counterparts in quaternion<T>(rhs). As + with any floating-type entity, this is essentially meaningless. +

+

+ + Inequality + Operators +

+
+template<typename T>	bool	operator != (T const & lhs, quaternion<T> const & rhs);
+template<typename T>	bool	operator != (quaternion<T> const & lhs, T const & rhs);
+template<typename T>	bool	operator != (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T>	bool	operator != (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T>	bool	operator != (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+

+ These return true if and only if quaternion<T>(lhs) == + quaternion<T>(rhs) is + false. As with any floating-type entity, this is essentially meaningless. +

+

+ + Stream + Extractor +

+
+template<typename T, typename charT, class traits>
+::std::basic_istream<charT,traits>& operator >> (::std::basic_istream<charT,traits> & is, quaternion<T> & q);
+
+

+ Extracts a quaternion q of one of the following forms (with a, b, c and d + of type T): +

+

+ a (a), (a,b), (a,b,c), (a,b,c,d) (a,(c)), (a,(c,d)), ((a)), ((a),c), + ((a),(c)), ((a),(c,d)), ((a,b)), ((a,b),c), ((a,b),(c)), ((a,b),(c,d)) +

+

+ The input values must be convertible to T. + If bad input is encountered, calls is.setstate(ios::failbit) + (which may throw ios::failure (27.4.5.3)). +

+

+ Returns: is. +

+

+ The rationale for the list of accepted formats is that either we have a list + of up to four reals, or else we have a couple of complex numbers, and in + that case if it formated as a proper complex number, then it should be accepted. + Thus potential ambiguities are lifted (for instance (a,b) is (a,b,0,0) and + not (a,0,b,0), i.e. it is parsed as a list of two real numbers and not two + complex numbers which happen to have imaginary parts equal to zero). +

+

+ + Stream + Inserter +

+
+template<typename T, typename charT, class traits>
+::std::basic_ostream<charT,traits>& operator << (::std::basic_ostream<charT,traits> & os, quaternion<T> const & q);
+
+

+ Inserts the quaternion q onto the stream os + as if it were implemented as follows: +

+
+template<typename T, typename charT, class traits>
+::std::basic_ostream<charT,traits>& operator << (	
+               ::std::basic_ostream<charT,traits> & os,
+               quaternion<T> const & q)
+{
+   ::std::basic_ostringstream<charT,traits>	s;
+
+   s.flags(os.flags());
+   s.imbue(os.getloc());
+   s.precision(os.precision());
+
+   s << '(' << q.R_component_1() << ','
+            << q.R_component_2() << ','
+            << q.R_component_3() << ','
+            << q.R_component_4() << ')';
+
+   return os << s.str();
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/overview.html b/doc/quaternion/html/boost_quaternions/quaternions/overview.html new file mode 100644 index 000000000..f6842ad1e --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/overview.html @@ -0,0 +1,91 @@ + + + +Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Quaternions are a relative of complex numbers. +

+

+ Quaternions are in fact part of a small hierarchy of structures built upon + the real numbers, which comprise only the set of real numbers (traditionally + named R), the set of + complex numbers (traditionally named C), + the set of quaternions (traditionally named H) + and the set of octonions (traditionally named O), + which possess interesting mathematical properties (chief among which is the + fact that they are division algebras, i.e. + where the following property is true: if y + is an element of that algebra and is not equal to zero, + then yx = yx', where x + and x' denote elements of that algebra, + implies that x = x'). Each member + of the hierarchy is a super-set of the former. +

+

+ One of the most important aspects of quaternions is that they provide an + efficient way to parameterize rotations in R3 + (the usual three-dimensional space) and R4. +

+

+ In practical terms, a quaternion is simply a quadruple of real numbers (α,β,γ,δ), + which we can write in the form q = α + βi + γj + δk, + where i is the same object as for + complex numbers, and j and k + are distinct objects which play essentially the same kind of role as i. +

+

+ An addition and a multiplication is defined on the set of quaternions, which + generalize their real and complex counterparts. The main novelty here is + that the multiplication is not commutative + (i.e. there are quaternions x and + y such that xy + ≠ yx). A good mnemotechnical way of remembering things + is by using the formula i*i = j*j = k*k = -1. +

+

+ Quaternions (and their kin) are described in far more details in this other + document (with errata + and addenda). +

+

+ Some traditional constructs, such as the exponential, carry over without + too much change into the realms of quaternions, but other, such as taking + a square root, do not. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/quat.html b/doc/quaternion/html/boost_quaternions/quaternions/quat.html new file mode 100644 index 000000000..55e9f1dc9 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/quat.html @@ -0,0 +1,96 @@ + + + + Template Class quaternion + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost{ namespace math{
+
+template<typename T>
+class quaternion
+{
+public:
+
+   typedef T value_type;
+
+   explicit quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T());
+   explicit quaternion(::std::complex<T> const & z0, ::std::complex<T> const & z1 = ::std::complex<T>());
+   template<typename X> 
+   explicit quaternion(quaternion<X> const & a_recopier);
+
+   T                  real() const;
+   quaternion<T>      unreal() const;
+   T                  R_component_1() const;
+   T                  R_component_2() const;
+   T                  R_component_3() const;
+   T                  R_component_4() const;
+   ::std::complex<T>  C_component_1() const;
+   ::std::complex<T>  C_component_2() const;
+
+   quaternion<T>&     operator = (quaternion<T> const  & a_affecter);
+   template<typename X>	
+   quaternion<T>&     operator = (quaternion<X> const  & a_affecter);
+   quaternion<T>&     operator = (T const  & a_affecter);
+   quaternion<T>&     operator = (::std::complex<T> const & a_affecter);
+
+   quaternion<T>&     operator += (T const & rhs);
+   quaternion<T>&     operator += (::std::complex<T> const & rhs);
+   template<typename X>
+   quaternion<T>&     operator += (quaternion<X> const & rhs);
+
+   quaternion<T>&     operator -= (T const & rhs);
+   quaternion<T>&     operator -= (::std::complex<T> const & rhs);
+   template<typename X>
+   quaternion<T>&     operator -= (quaternion<X> const & rhs);
+
+   quaternion<T>&     operator *= (T const & rhs);
+   quaternion<T>&     operator *= (::std::complex<T> const & rhs);
+   template<typename X>
+   quaternion<T>&     operator *= (quaternion<X> const & rhs);
+
+   quaternion<T>&     operator /= (T const & rhs);
+   quaternion<T>&     operator /= (::std::complex<T> const & rhs);
+   template<typename X>
+   quaternion<T>&     operator /= (quaternion<X> const & rhs);
+};
+
+} // namespace math
+} // namespace boost
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/spec.html b/doc/quaternion/html/boost_quaternions/quaternions/spec.html new file mode 100644 index 000000000..75550064f --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/spec.html @@ -0,0 +1,198 @@ + + + + Quaternion Specializations + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost{ namespace math{
+
+template<>
+class quaternion<float>
+{
+public:
+   typedef float value_type;
+	
+   explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f);
+   explicit quaternion(::std::complex<float> const & z0, ::std::complex<float> const & z1 = ::std::complex<float>());
+   explicit quaternion(quaternion<double> const & a_recopier);
+   explicit quaternion(quaternion<long double> const & a_recopier);
+	
+   float                  real() const;
+   quaternion<float>      unreal() const;
+   float                  R_component_1() const;
+   float                  R_component_2() const;
+   float                  R_component_3() const;
+   float                  R_component_4() const;
+   ::std::complex<float>  C_component_1() const;
+   ::std::complex<float>  C_component_2() const;
+
+   quaternion<float>&     operator = (quaternion<float> const  & a_affecter);
+   template<typename X>	
+   quaternion<float>&     operator = (quaternion<X> const  & a_affecter);
+   quaternion<float>&     operator = (float const  & a_affecter);
+   quaternion<float>&     operator = (::std::complex<float> const & a_affecter);
+
+   quaternion<float>&     operator += (float const & rhs);
+   quaternion<float>&     operator += (::std::complex<float> const & rhs);
+   template<typename X>
+   quaternion<float>&     operator += (quaternion<X> const & rhs);
+
+   quaternion<float>&     operator -= (float const & rhs);
+   quaternion<float>&     operator -= (::std::complex<float> const & rhs);
+   template<typename X>
+   quaternion<float>&     operator -= (quaternion<X> const & rhs);
+
+   quaternion<float>&     operator *= (float const & rhs);
+   quaternion<float>&     operator *= (::std::complex<float> const & rhs);
+   template<typename X>
+   quaternion<float>&     operator *= (quaternion<X> const & rhs);
+
+   quaternion<float>&     operator /= (float const & rhs);
+   quaternion<float>&     operator /= (::std::complex<float> const & rhs);
+   template<typename X>
+   quaternion<float>&     operator /= (quaternion<X> const & rhs);
+};
+
+

+

+
+template<>
+class quaternion<double>
+{
+public:
+   typedef double value_type;
+	
+   explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0);
+   explicit quaternion(::std::complex<double> const & z0, ::std::complex<double> const & z1 = ::std::complex<double>());
+   explicit quaternion(quaternion<float> const & a_recopier);
+   explicit quaternion(quaternion<long double> const & a_recopier);
+	
+   double                  real() const;
+   quaternion<double>      unreal() const;
+   double                  R_component_1() const;
+   double                  R_component_2() const;
+   double                  R_component_3() const;
+   double                  R_component_4() const;
+   ::std::complex<double>  C_component_1() const;
+   ::std::complex<double>  C_component_2() const;
+
+   quaternion<double>&     operator = (quaternion<double> const  & a_affecter);
+   template<typename X>	
+   quaternion<double>&     operator = (quaternion<X> const  & a_affecter);
+   quaternion<double>&     operator = (double const  & a_affecter);
+   quaternion<double>&     operator = (::std::complex<double> const & a_affecter);
+
+   quaternion<double>&     operator += (double const & rhs);
+   quaternion<double>&     operator += (::std::complex<double> const & rhs);
+   template<typename X>
+   quaternion<double>&     operator += (quaternion<X> const & rhs);
+
+   quaternion<double>&     operator -= (double const & rhs);
+   quaternion<double>&     operator -= (::std::complex<double> const & rhs);
+   template<typename X>
+   quaternion<double>&     operator -= (quaternion<X> const & rhs);
+
+   quaternion<double>&     operator *= (double const & rhs);
+   quaternion<double>&     operator *= (::std::complex<double> const & rhs);
+   template<typename X>
+   quaternion<double>&     operator *= (quaternion<X> const & rhs);
+
+   quaternion<double>&     operator /= (double const & rhs);
+   quaternion<double>&     operator /= (::std::complex<double> const & rhs);
+   template<typename X>
+   quaternion<double>&     operator /= (quaternion<X> const & rhs);
+};
+
+

+

+
+template<>
+class quaternion<long double>
+{
+public:
+   typedef long double value_type;
+	
+   explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L);
+   explicit quaternion(::std::complex<long double> const & z0, ::std::complex<long double> const & z1 = ::std::complex<long double>());
+   explicit quaternion(quaternion<float> const & a_recopier);
+   explicit quaternion(quaternion<double> const & a_recopier);
+	
+   long double                  real() const;
+   quaternion<long double>      unreal() const;
+   long double                  R_component_1() const;
+   long double                  R_component_2() const;
+   long double                  R_component_3() const;
+   long double                  R_component_4() const;
+   ::std::complex<long double>  C_component_1() const;
+   ::std::complex<long double>  C_component_2() const;
+
+   quaternion<long double>&     operator = (quaternion<long double> const  & a_affecter);
+   template<typename X>	
+   quaternion<long double>&     operator = (quaternion<X> const  & a_affecter);
+   quaternion<long double>&     operator = (long double const  & a_affecter);
+   quaternion<long double>&     operator = (::std::complex<long double> const & a_affecter);
+
+   quaternion<long double>&     operator += (long double const & rhs);
+   quaternion<long double>&     operator += (::std::complex<long double> const & rhs);
+   template<typename X>
+   quaternion<long double>&     operator += (quaternion<X> const & rhs);
+
+   quaternion<long double>&     operator -= (long double const & rhs);
+   quaternion<long double>&     operator -= (::std::complex<long double> const & rhs);
+   template<typename X>
+   quaternion<long double>&     operator -= (quaternion<X> const & rhs);
+
+   quaternion<long double>&     operator *= (long double const & rhs);
+   quaternion<long double>&     operator *= (::std::complex<long double> const & rhs);
+   template<typename X>
+   quaternion<long double>&     operator *= (quaternion<X> const & rhs);
+
+   quaternion<long double>&     operator /= (long double const & rhs);
+   quaternion<long double>&     operator /= (::std::complex<long double> const & rhs);
+   template<typename X>
+   quaternion<long double>&     operator /= (quaternion<X> const & rhs);
+};
+
+} // namespace math
+} // namespace boost
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html b/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html new file mode 100644 index 000000000..6b1c18b62 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/synopsis.html @@ -0,0 +1,124 @@ + + + +Synopsis + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+namespace boost{ namespace math{
+
+template<typename T> class quaternion;
+template<>           class quaternion<float>;
+template<>           class quaternion<double>; 
+template<>           class quaternion<long double>; 
+
+// operators
+template<typename T> quaternion<T> operator + (T const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator + (quaternion<T> const & lhs, T const & rhs);
+template<typename T> quaternion<T> operator + (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator + (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> quaternion<T> operator + (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+template<typename T> quaternion<T> operator - (T const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator - (quaternion<T> const & lhs, T const & rhs);
+template<typename T> quaternion<T> operator - (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator - (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> quaternion<T> operator - (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+template<typename T> quaternion<T> operator * (T const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator * (quaternion<T> const & lhs, T const & rhs);
+template<typename T> quaternion<T> operator * (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator * (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> quaternion<T> operator * (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+template<typename T> quaternion<T> operator / (T const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator / (quaternion<T> const & lhs, T const & rhs);
+template<typename T> quaternion<T> operator / (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T> quaternion<T> operator / (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> quaternion<T> operator / (quaternion<T> const & lhs, quaternion<T> const & rhs); 
+
+template<typename T> quaternion<T> operator + (quaternion<T> const & q);
+template<typename T> quaternion<T> operator - (quaternion<T> const & q); 
+
+template<typename T> bool operator == (T const & lhs, quaternion<T> const & rhs);
+template<typename T> bool operator == (quaternion<T> const & lhs, T const & rhs);
+template<typename T> bool operator == (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T> bool operator == (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> bool operator == (quaternion<T> const & lhs, quaternion<T> const & rhs);
+
+template<typename T> bool operator != (T const & lhs, quaternion<T> const & rhs);
+template<typename T> bool operator != (quaternion<T> const & lhs, T const & rhs);
+template<typename T> bool operator != (::std::complex<T> const & lhs, quaternion<T> const & rhs);
+template<typename T> bool operator != (quaternion<T> const & lhs, ::std::complex<T> const & rhs);
+template<typename T> bool operator != (quaternion<T> const & lhs, quaternion<T> const & rhs); 
+
+template<typename T, typename charT, class traits>
+::std::basic_istream<charT,traits>& operator >> (::std::basic_istream<charT,traits> & is, quaternion<T> & q);
+
+template<typename T, typename charT, class traits>
+::std::basic_ostream<charT,traits>& operator operator << (::std::basic_ostream<charT,traits> & os, quaternion<T> const & q);
+
+// values
+template<typename T>	T              real(quaternion<T> const & q);
+template<typename T>	quaternion<T>  unreal(quaternion<T> const & q);
+
+template<typename T>	T              sup(quaternion<T> const & q);
+template<typename T>	T              l1(quaternion<T> const & q);
+template<typename T>	T              abs(quaternion<T> const & q);
+template<typename T>	T              norm(quaternion<T>const  & q);
+template<typename T>	quaternion<T>  conj(quaternion<T> const & q);
+
+template<typename T>	quaternion<T>  spherical(T const & rho, T const & theta, T const & phi1, T const & phi2);
+template<typename T>	quaternion<T>  semipolar(T const & rho, T const & alpha, T const & theta1, T const & theta2);
+template<typename T>	quaternion<T>  multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2);
+template<typename T>	quaternion<T>  cylindrospherical(T const & t, T const & radius, T const & longitude, T const & latitude);
+template<typename T>	quaternion<T>  cylindrical(T const & r, T const & angle, T const & h1, T const & h2);
+
+// transcendentals
+template<typename T>	quaternion<T>  exp(quaternion<T> const & q);
+template<typename T>	quaternion<T>  cos(quaternion<T> const & q);
+template<typename T>	quaternion<T>  sin(quaternion<T> const & q);
+template<typename T>	quaternion<T>  tan(quaternion<T> const & q);
+template<typename T>	quaternion<T>  cosh(quaternion<T> const & q);
+template<typename T>	quaternion<T>  sinh(quaternion<T> const & q);
+template<typename T>	quaternion<T>  tanh(quaternion<T> const & q);
+template<typename T>	quaternion<T>  pow(quaternion<T> const & q, int n);
+
+} // namespace math
+} // namespace boost
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/test_program.html b/doc/quaternion/html/boost_quaternions/quaternions/test_program.html new file mode 100644 index 000000000..ef18b4cfc --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/test_program.html @@ -0,0 +1,58 @@ + + + +Test Program + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The quaternion_test.cpp + test program tests quaternions specializations for float, double and long + double (sample output, + with message output enabled). +

+

+ If you define the symbol boost_quaternions_TEST_VERBOSE, you will get additional + output (verbose output); + this will only be helpfull if you enable message output at the same time, + of course (by uncommenting the relevant line in the test or by adding --log_level=messages + to your command line,...). In that case, and if you are running interactively, + you may in addition define the symbol BOOST_INTERACTIVE_TEST_INPUT_ITERATOR + to interactively test the input operator with input of your choice from the + standard input (instead of hard-coding it in the test). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/to_do.html b/doc/quaternion/html/boost_quaternions/quaternions/to_do.html new file mode 100644 index 000000000..aba5a4c2f --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/to_do.html @@ -0,0 +1,55 @@ + + + +To Do + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHome +
+
+ +
    +
  • + Improve testing. +
  • +
  • + Rewrite input operatore using Spirit (creates a dependency). +
  • +
  • + Put in place an Expression Template mechanism (perhaps borrowing from uBlas). +
  • +
  • + Use uBlas for the link with rotations (and move from the example + implementation to an efficient one). +
  • +
+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/trans.html b/doc/quaternion/html/boost_quaternions/quaternions/trans.html new file mode 100644 index 000000000..92ad49201 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/trans.html @@ -0,0 +1,151 @@ + + + + Quaternion Transcendentals + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There is no log or sqrt provided for quaternions in this implementation, + and pow is likewise restricted + to integral powers of the exponent. There are several reasons to this: on + the one hand, the equivalent of analytic continuation for quaternions ("branch + cuts") remains to be investigated thoroughly (by me, at any rate...), + and we wish to avoid the nonsense introduced in the standard by exponentiations + of complexes by complexes (which is well defined, but not in the standard...). + Talking of nonsense, saying that pow(0,0) is "implementation + defined" is just plain brain-dead... +

+

+ We do, however provide several transcendentals, chief among which is the + exponential. This author claims the complete proof of the "closed formula" + as his own, as well as its independant invention (there are claims to prior + invention of the formula, such as one by Professor Shoemake, and it is possible + that the formula had been known a couple of centuries back, but in absence + of bibliographical reference, the matter is pending, awaiting further investigation; + on the other hand, the definition and existence of the exponential on the + quaternions, is of course a fact known for a very long time). Basically, + any converging power series with real coefficients which allows for a closed + formula in C can be + transposed to H. More + transcendentals of this type could be added in a further revision upon request. + It should be noted that it is these functions which force the dependency + upon the boost/math/special_functions/sinc.hpp + and the boost/math/special_functions/sinhc.hpp + headers. +

+

+ + exp +

+
+template<typename T>	quaternion<T> exp(quaternion<T> const & q);
+
+

+ Computes the exponential of the quaternion. +

+

+ + cos +

+
+template<typename T>	quaternion<T>  cos(quaternion<T> const & q);
+
+

+ Computes the cosine of the quaternion +

+

+ + sin +

+
+template<typename T>	quaternion<T>  sin(quaternion<T> const & q);
+
+

+ Computes the sine of the quaternion. +

+

+ + tan +

+
+template<typename T>	quaternion<T>  tan(quaternion<T> const & q);
+
+

+ Computes the tangent of the quaternion. +

+

+ + cosh +

+
+template<typename T>	quaternion<T>  cosh(quaternion<T> const & q);
+
+

+ Computes the hyperbolic cosine of the quaternion. +

+

+ + sinh +

+
+template<typename T>	quaternion<T>  sinh(quaternion<T> const & q);
+
+

+ Computes the hyperbolic sine of the quaternion. +

+

+ + tanh +

+
+template<typename T>	quaternion<T>  tanh(quaternion<T> const & q);
+
+

+ Computes the hyperbolic tangent of the quaternion. +

+

+ + pow +

+
+template<typename T>	quaternion<T>  pow(quaternion<T> const & q, int n);
+
+

+ Computes the n-th power of the quaternion q. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/boost_quaternions/quaternions/value_op.html b/doc/quaternion/html/boost_quaternions/quaternions/value_op.html new file mode 100644 index 000000000..e297ed299 --- /dev/null +++ b/doc/quaternion/html/boost_quaternions/quaternions/value_op.html @@ -0,0 +1,114 @@ + + + + Quaternion Value + Operations + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ + real + and unreal +

+
+template<typename T>	T              real(quaternion<T> const & q);
+template<typename T>	quaternion<T>  unreal(quaternion<T> const & q);
+
+

+ These return q.real() + and q.unreal() + respectively. +

+

+ + conj +

+
+template<typename T>	quaternion<T>  conj(quaternion<T> const & q);
+
+

+ This returns the conjugate of the quaternion. +

+

+ + sup +

+

+ template<typename T> T sup(quaternion<T> const & q); +

+

+ This return the sup norm (the greatest among abs(q.R_component_1())...abs(q.R_component_4())) of the quaternion. +

+

+ + l1 +

+
+template<typename T>	T  l1(quaternion<T> const & q);
+
+

+ This return the l1 norm (abs(q.R_component_1())+...+abs(q.R_component_4())) of the quaternion. +

+

+ + abs +

+
+template<typename T>	T  abs(quaternion<T> const & q);
+
+

+ This return the magnitude (Euclidian norm) of the quaternion. +

+

+ + norm +

+
+template<typename T>	T  norm(quaternion<T>const  & q);
+
+

+ This return the (Cayley) norm of the quaternion. The term "norm" + might be confusing, as most people associate it with the Euclidian norm (and + quadratic functionals). For this version of (the mathematical objects known + as) quaternions, the Euclidian norm (also known as magnitude) is the square + root of the Cayley norm. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/quaternion/html/index.html b/doc/quaternion/html/index.html new file mode 100644 index 000000000..a3fcc39ef --- /dev/null +++ b/doc/quaternion/html/index.html @@ -0,0 +1,77 @@ + + + +Boost.Quaternions + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
Next
+
+
+
+

+Boost.Quaternions

+

+Hubert Holin +

+
+
+

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

+
+
+
+
+ +
+ + + +

Last revised: December 29, 2006 at 11:08:32 +0000

+
+
Next
+ + diff --git a/doc/quaternion/math-quaternion.qbk b/doc/quaternion/math-quaternion.qbk new file mode 100644 index 000000000..7f514d53f --- /dev/null +++ b/doc/quaternion/math-quaternion.qbk @@ -0,0 +1,931 @@ +[article Boost.Quaternions + [quickbook 1.3] + [copyright 2001-2003 Hubert Holin] + [purpose Quaternions] + [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]) + ] + [authors [Holin, Hubert]] + [category math] + [last-revision $Date: 2006-12-29 11:08:32 +0000 (Fri, 29 Dec 2006) $] +] + +[def __R ['[*R]]] +[def __C ['[*C]]] +[def __H ['[*H]]] +[def __O ['[*O]]] +[def __R3 ['[*'''R3''']]] +[def __R4 ['[*'''R4''']]] +[def __quadrulple ('''α,β,γ,δ''')] +[def __quat_formula ['[^q = '''α + βi + γj + δk''']]] +[def __quat_complex_formula ['[^q = ('''α + βi) + (γ + δi)j''' ]]] +[def __not_equal ['[^xy '''≠''' yx]]] + +[def __asinh [link boost_quaternions.math_special_functions.asinh asinh]] +[def __acosh [link boost_quaternions.math_special_functions.acosh acosh]] +[def __atanh [link boost_quaternions.math_special_functions.atanh atanh]] +[def __sinc_pi [link boost_quaternions.math_special_functions.sinc_pi sinc_pi]] +[def __sinhc_pi [link boost_quaternions.math_special_functions.sinhc_pi sinhc_pi]] + +[def __log1p [link boost_quaternions.math_special_functions.log1p log1p]] +[def __expm1 [link boost_quaternions.math_special_functions.expm1 expm1]] +[def __hypot [link boost_quaternions.math_special_functions.hypot hypot]] + + +[section Quaternions] + +[section Overview] + +Quaternions are a relative of complex numbers. + +Quaternions are in fact part of a small hierarchy of structures built +upon the real numbers, which comprise only the set of real numbers +(traditionally named __R), the set of complex numbers (traditionally named __C), +the set of quaternions (traditionally named __H) and the set of octonions +(traditionally named __O), which possess interesting mathematical properties +(chief among which is the fact that they are ['division algebras], +['i.e.] where the following property is true: if ['[^y]] is an element of that +algebra and is [*not equal to zero], then ['[^yx = yx']], where ['[^x]] and ['[^x']] +denote elements of that algebra, implies that ['[^x = x']]). +Each member of the hierarchy is a super-set of the former. + +One of the most important aspects of quaternions is that they provide an +efficient way to parameterize rotations in __R3 (the usual three-dimensional space) +and __R4. + +In practical terms, a quaternion is simply a quadruple of real numbers __quadrulple, +which we can write in the form __quat_formula, where ['[^i]] is the same object as for complex numbers, +and ['[^j]] and ['[^k]] are distinct objects which play essentially the same kind of role as ['[^i]]. + +An addition and a multiplication is defined on the set of quaternions, +which generalize their real and complex counterparts. The main novelty +here is that [*the multiplication is not commutative] (i.e. there are +quaternions ['[^x]] and ['[^y]] such that __not_equal). A good mnemotechnical way of remembering +things is by using the formula ['[^i*i = j*j = k*k = -1]]. + +Quaternions (and their kin) are described in far more details in this +other [@../../../quaternion/TQE.pdf document] +(with [@../../../quaternion/TQE_EA.pdf errata and addenda]). + +Some traditional constructs, such as the exponential, carry over without +too much change into the realms of quaternions, but other, such as taking +a square root, do not. + +[endsect] + +[section Header File] + +The interface and implementation are both supplied by the header file +[@../../../../../boost/math/quaternion.hpp quaternion.hpp]. + +[endsect] + +[section Synopsis] + + namespace boost{ namespace math{ + + template class ``[link boost_quaternions.quaternions.quat quaternion]``; + template<> class ``[link boost_quaternions.quaternions.spec quaternion]``; + template<> class ``[link boost_quaternions.quaternion_double quaternion]``; + template<> class ``[link boost_quaternions.quaternion_long_double quaternion]``; + + // operators + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (T const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (quaternion const & lhs, T const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (::std::complex const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (quaternion const & lhs, ::std::complex const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_addition_operators operator +]`` (quaternion const & lhs, quaternion const & rhs); + + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (T const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (quaternion const & lhs, T const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (::std::complex const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (quaternion const & lhs, ::std::complex const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_subtraction_operators operator -]`` (quaternion const & lhs, quaternion const & rhs); + + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (T const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (quaternion const & lhs, T const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (::std::complex const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (quaternion const & lhs, ::std::complex const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_multiplication_operators operator *]`` (quaternion const & lhs, quaternion const & rhs); + + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (T const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion const & lhs, T const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (::std::complex const & lhs, quaternion const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion const & lhs, ::std::complex const & rhs); + template quaternion ``[link boost_quaternions.quaternions.non_mem.binary_division_operators operator /]`` (quaternion const & lhs, quaternion const & rhs); + + template quaternion ``[link boost_quaternions.quaternions.non_mem.unary_plus operator +]`` (quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.non_mem.unary_minus operator -]`` (quaternion const & q); + + template bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (T const & lhs, quaternion const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion const & lhs, T const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (::std::complex const & lhs, quaternion const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion const & lhs, ::std::complex const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.equality_operators operator ==]`` (quaternion const & lhs, quaternion const & rhs); + + template bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (T const & lhs, quaternion const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion const & lhs, T const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (::std::complex const & lhs, quaternion const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion const & lhs, ::std::complex const & rhs); + template bool ``[link boost_quaternions.quaternions.non_mem.inequality_operators operator !=]`` (quaternion const & lhs, quaternion const & rhs); + + template + ::std::basic_istream& ``[link boost_quaternions.quaternions.non_mem.stream_extractor operator >>]`` (::std::basic_istream & is, quaternion & q); + + template + ::std::basic_ostream& operator ``[link boost_quaternions.quaternions.non_mem.stream_inserter operator <<]`` (::std::basic_ostream & os, quaternion const & q); + + // values + template T ``[link boost_quaternions.quaternions.value_op.real_and_unreal real]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.value_op.real_and_unreal unreal]``(quaternion const & q); + + template T ``[link boost_quaternions.quaternions.value_op.sup sup]``(quaternion const & q); + template T ``[link boost_quaternions.quaternions.value_op.l1 l1]``(quaternion const & q); + template T ``[link boost_quaternions.quaternions.value_op.abs abs]``(quaternion const & q); + template T ``[link boost_quaternions.quaternions.value_op.norm norm]``(quaternionconst & q); + template quaternion ``[link boost_quaternions.quaternions.value_op.conj conj]``(quaternion const & q); + + template quaternion ``[link boost_quaternions.quaternions.creation_spherical spherical]``(T const & rho, T const & theta, T const & phi1, T const & phi2); + template quaternion ``[link boost_quaternions.quaternions.creation_semipolar semipolar]``(T const & rho, T const & alpha, T const & theta1, T const & theta2); + template quaternion ``[link boost_quaternions.quaternions.creation_multipolar multipolar]``(T const & rho1, T const & theta1, T const & rho2, T const & theta2); + template quaternion ``[link boost_quaternions.quaternions.creation_cylindrospherical cylindrospherical]``(T const & t, T const & radius, T const & longitude, T const & latitude); + template quaternion ``[link boost_quaternions.quaternions.creation_cylindrical cylindrical]``(T const & r, T const & angle, T const & h1, T const & h2); + + // transcendentals + template quaternion ``[link boost_quaternions.quaternions.trans.exp exp]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.cos cos]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.sin sin]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.tan tan]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.cosh cosh]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.sinh sinh]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.tanh tanh]``(quaternion const & q); + template quaternion ``[link boost_quaternions.quaternions.trans.pow pow]``(quaternion const & q, int n); + + } // namespace math + } // namespace boost + +[endsect] + +[section:quat Template Class quaternion] + + namespace boost{ namespace math{ + + template + class quaternion + { + public: + + typedef T ``[link boost_quaternions.quaternions.mem_typedef value_type]``; + + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T()); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + template + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + + T ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; + quaternion ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; + T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; + T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; + T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; + T ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(T const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex const & a_affecter); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(T const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(T const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(T const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(T const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion const & rhs); + }; + + } // namespace math + } // namespace boost + +[endsect] + +[section:spec Quaternion Specializations] + + namespace boost{ namespace math{ + + template<> + class quaternion + { + public: + typedef float ``[link boost_quaternions.quaternions.mem_typedef value_type]``; + + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + + float ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; + quaternion ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; + float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; + float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; + float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; + float ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(float const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex const & a_affecter); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(float const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(float const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(float const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(float const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion const & rhs); + }; + +[#boost_quaternions.quaternion_double] + + template<> + class quaternion + { + public: + typedef double ``[link boost_quaternions.quaternions.mem_typedef value_type]``; + + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + + double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; + quaternion ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; + double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; + double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; + double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; + double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(double const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex const & a_affecter); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion const & rhs); + }; + +[#boost_quaternions.quaternion_long_double] + + template<> + class quaternion + { + public: + typedef long double ``[link boost_quaternions.quaternions.mem_typedef value_type]``; + + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + explicit ``[link boost_quaternions.quaternions.mem_fun.constructors quaternion]``(quaternion const & a_recopier); + + long double ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts real]``() const; + quaternion ``[link boost_quaternions.quaternions.mem_fun.real_and_unreal_parts unreal]``() const; + long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_1]``() const; + long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_2]``() const; + long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_3]``() const; + long double ``[link boost_quaternions.quaternions.mem_fun.individual_real_components R_component_4]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_1]``() const; + ::std::complex ``[link boost_quaternions.quaternions.mem_fun.individual_complex__components C_component_2]``() const; + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(quaternion const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(long double const & a_affecter); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.assignment_operators operator = ]``(::std::complex const & a_affecter); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(long double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.addition_operators operator += ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(long double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.subtraction_operators operator -= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(long double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.multiplication_operators operator *= ]``(quaternion const & rhs); + + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(long double const & rhs); + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(::std::complex const & rhs); + template + quaternion& ``[link boost_quaternions.quaternions.mem_fun.division_operators operator /= ]``(quaternion const & rhs); + }; + + } // namespace math + } // namespace boost + +[endsect] + +[section:mem_typedef Quaternion Member Typedefs] + +[*value_type] + +Template version: + + typedef T value_type; + +Float specialization version: + + typedef float value_type; + +Double specialization version: + + typedef double value_type; + +Long double specialization version: + + typedef long double value_type; + +These provide easy acces to the type the template is built upon. + +[endsect] + +[section:mem_fun Quaternion Member Functions] +[h3 Constructors] + +Template version: + + explicit quaternion(T const & requested_a = T(), T const & requested_b = T(), T const & requested_c = T(), T const & requested_d = T()); + explicit quaternion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + template + explicit quaternion(quaternion const & a_recopier); + +Float specialization version: + + explicit quaternion(float const & requested_a = 0.0f, float const & requested_b = 0.0f, float const & requested_c = 0.0f, float const & requested_d = 0.0f); + explicit quaternion(::std::complex const & z0,::std::complex const & z1 = ::std::complex()); + explicit quaternion(quaternion const & a_recopier); + explicit quaternion(quaternion const & a_recopier); + +Double specialization version: + + explicit quaternion(double const & requested_a = 0.0, double const & requested_b = 0.0, double const & requested_c = 0.0, double const & requested_d = 0.0); + explicit quaternion(::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + explicit quaternion(quaternion const & a_recopier); + explicit quaternion(quaternion const & a_recopier); + +Long double specialization version: + + explicit quaternion(long double const & requested_a = 0.0L, long double const & requested_b = 0.0L, long double const & requested_c = 0.0L, long double const & requested_d = 0.0L); + explicit quaternion( ::std::complex const & z0, ::std::complex const & z1 = ::std::complex()); + explicit quaternion(quaternion const & a_recopier); + explicit quaternion(quaternion const & a_recopier); + +A default constructor is provided for each form, which initializes +each component to the default values for their type +(i.e. zero for floating numbers). This constructor can also accept +one to four base type arguments. A constructor is also provided to +build quaternions from one or two complex numbers sharing the same +base type. The unspecialized template also sports a templarized copy +constructor, while the specialized forms have copy constructors +from the other two specializations, which are explicit when a risk of +precision loss exists. For the unspecialized form, the base type's +constructors must not throw. + +Destructors and untemplated copy constructors (from the same type) are +provided by the compiler. Converting copy constructors make use of a +templated helper function in a "detail" subnamespace. + +[h3 Other member functions] +[h4 Real and Unreal Parts] + + T real() const; + quaternion unreal() const; + +Like complex number, quaternions do have a meaningful notion of "real part", +but unlike them there is no meaningful notion of "imaginary part". +Instead there is an "unreal part" which itself is a quaternion, +and usually nothing simpler (as opposed to the complex number case). +These are returned by the first two functions. + +[h4 Individual Real Components] + + T R_component_1() const; + T R_component_2() const; + T R_component_3() const; + T R_component_4() const; + +A quaternion having four real components, these are returned by these four +functions. Hence real and R_component_1 return the same value. + +[h4 Individual Complex Components] + + ::std::complex C_component_1() const; + ::std::complex C_component_2() const; + +A quaternion likewise has two complex components, and as we have seen above, +for any quaternion __quat_formula we also have __quat_complex_formula. These functions return them. +The real part of `q.C_component_1()` is the same as `q.real()`. + +[h3 Quaternion Member Operators] +[h4 Assignment Operators] + + quaternion& operator = (quaternion const & a_affecter); + template + quaternion& operator = (quaternion const& a_affecter); + quaternion& operator = (T const& a_affecter); + quaternion& operator = (::std::complex const& a_affecter); + +These perform the expected assignment, with type modification if necessary +(for instance, assigning from a base type will set the real part to that +value, and all other components to zero). For the unspecialized form, +the base type's assignment operators must not throw. + +[h4 Addition Operators] + + quaternion& operator += (T const & rhs) + quaternion& operator += (::std::complex const & rhs); + template + quaternion& operator += (quaternion const & rhs); + +These perform the mathematical operation `(*this)+rhs` and store the result in +`*this`. The unspecialized form has exception guards, which the specialized +forms do not, so as to insure exception safety. For the unspecialized form, +the base type's assignment operators must not throw. + +[h4 Subtraction Operators] + + quaternion& operator -= (T const & rhs) + quaternion& operator -= (::std::complex const & rhs); + template + quaternion& operator -= (quaternion const & rhs); + +These perform the mathematical operation `(*this)-rhs` and store the result +in `*this`. The unspecialized form has exception guards, which the +specialized forms do not, so as to insure exception safety. +For the unspecialized form, the base type's assignment operators +must not throw. + +[h4 Multiplication Operators] + + quaternion& operator *= (T const & rhs) + quaternion& operator *= (::std::complex const & rhs); + template + quaternion& operator *= (quaternion const & rhs); + +These perform the mathematical operation `(*this)*rhs` [*in this order] +(order is important as multiplication is not commutative for quaternions) +and store the result in `*this`. The unspecialized form has exception guards, +which the specialized forms do not, so as to insure exception safety. +For the unspecialized form, the base type's assignment operators must not throw. + +[h4 Division Operators] + + quaternion& operator /= (T const & rhs) + quaternion& operator /= (::std::complex const & rhs); + template + quaternion& operator /= (quaternion const & rhs); + +These perform the mathematical operation `(*this)*inverse_of(rhs)` [*in this +order] (order is important as multiplication is not commutative for quaternions) +and store the result in `*this`. The unspecialized form has exception guards, +which the specialized forms do not, so as to insure exception safety. +For the unspecialized form, the base type's assignment operators must not throw. + +[endsect] +[section:non_mem Quaternion Non-Member Operators] + +[h4 Unary Plus] + + template + quaternion operator + (quaternion const & q); + +This unary operator simply returns q. + +[h4 Unary Minus] + + template + quaternion operator - (quaternion const & q); + +This unary operator returns the opposite of q. + +[h4 Binary Addition Operators] + + template quaternion operator + (T const & lhs, quaternion const & rhs); + template quaternion operator + (quaternion const & lhs, T const & rhs); + template quaternion operator + (::std::complex const & lhs, quaternion const & rhs); + template quaternion operator + (quaternion const & lhs, ::std::complex const & rhs); + template quaternion operator + (quaternion const & lhs, quaternion const & rhs); + +These operators return `quaternion(lhs) += rhs`. + +[h4 Binary Subtraction Operators] + + template quaternion operator - (T const & lhs, quaternion const & rhs); + template quaternion operator - (quaternion const & lhs, T const & rhs); + template quaternion operator - (::std::complex const & lhs, quaternion const & rhs); + template quaternion operator - (quaternion const & lhs, ::std::complex const & rhs); + template quaternion operator - (quaternion const & lhs, quaternion const & rhs); + +These operators return `quaternion(lhs) -= rhs`. + +[h4 Binary Multiplication Operators] + + template quaternion operator * (T const & lhs, quaternion const & rhs); + template quaternion operator * (quaternion const & lhs, T const & rhs); + template quaternion operator * (::std::complex const & lhs, quaternion const & rhs); + template quaternion operator * (quaternion const & lhs, ::std::complex const & rhs); + template quaternion operator * (quaternion const & lhs, quaternion const & rhs); + +These operators return `quaternion(lhs) *= rhs`. + +[h4 Binary Division Operators] + + template quaternion operator / (T const & lhs, quaternion const & rhs); + template quaternion operator / (quaternion const & lhs, T const & rhs); + template quaternion operator / (::std::complex const & lhs, quaternion const & rhs); + template quaternion operator / (quaternion const & lhs, ::std::complex const & rhs); + template quaternion operator / (quaternion const & lhs, quaternion const & rhs); + +These operators return `quaternion(lhs) /= rhs`. It is of course still an +error to divide by zero... + +[h4 Equality Operators] + + template bool operator == (T const & lhs, quaternion const & rhs); + template bool operator == (quaternion const & lhs, T const & rhs); + template bool operator == (::std::complex const & lhs, quaternion const & rhs); + template bool operator == (quaternion const & lhs, ::std::complex const & rhs); + template bool operator == (quaternion const & lhs, quaternion const & rhs); + +These return true if and only if the four components of `quaternion(lhs)` +are equal to their counterparts in `quaternion(rhs)`. As with any +floating-type entity, this is essentially meaningless. + +[h4 Inequality Operators] + + template bool operator != (T const & lhs, quaternion const & rhs); + template bool operator != (quaternion const & lhs, T const & rhs); + template bool operator != (::std::complex const & lhs, quaternion const & rhs); + template bool operator != (quaternion const & lhs, ::std::complex const & rhs); + template bool operator != (quaternion const & lhs, quaternion const & rhs); + +These return true if and only if `quaternion(lhs) == quaternion(rhs)` is +false. As with any floating-type entity, this is essentially meaningless. + +[h4 Stream Extractor] + + template + ::std::basic_istream& operator >> (::std::basic_istream & is, quaternion & q); + +Extracts a quaternion q of one of the following forms +(with a, b, c and d of type `T`): + +[^a (a), (a,b), (a,b,c), (a,b,c,d) (a,(c)), (a,(c,d)), ((a)), ((a),c), ((a),(c)), ((a),(c,d)), ((a,b)), ((a,b),c), ((a,b),(c)), ((a,b),(c,d))] + +The input values must be convertible to `T`. If bad input is encountered, +calls `is.setstate(ios::failbit)` (which may throw ios::failure (27.4.5.3)). + +[*Returns:] `is`. + +The rationale for the list of accepted formats is that either we have a +list of up to four reals, or else we have a couple of complex numbers, +and in that case if it formated as a proper complex number, then it should +be accepted. Thus potential ambiguities are lifted (for instance (a,b) is +(a,b,0,0) and not (a,0,b,0), i.e. it is parsed as a list of two real numbers +and not two complex numbers which happen to have imaginary parts equal to zero). + +[h4 Stream Inserter] + + template + ::std::basic_ostream& operator << (::std::basic_ostream & os, quaternion const & q); + +Inserts the quaternion q onto the stream `os` as if it were implemented as follows: + + template + ::std::basic_ostream& operator << ( + ::std::basic_ostream & os, + quaternion const & q) + { + ::std::basic_ostringstream s; + + s.flags(os.flags()); + s.imbue(os.getloc()); + s.precision(os.precision()); + + s << '(' << q.R_component_1() << ',' + << q.R_component_2() << ',' + << q.R_component_3() << ',' + << q.R_component_4() << ')'; + + return os << s.str(); + } + +[endsect] + +[section:value_op Quaternion Value Operations] + +[h4 real and unreal] + + template T real(quaternion const & q); + template quaternion unreal(quaternion const & q); + +These return `q.real()` and `q.unreal()` respectively. + +[h4 conj] + + template quaternion conj(quaternion const & q); + +This returns the conjugate of the quaternion. + +[h4 sup] + +template T sup(quaternion const & q); + +This return the sup norm (the greatest among +`abs(q.R_component_1())...abs(q.R_component_4()))` of the quaternion. + +[h4 l1] + + template T l1(quaternion const & q); + +This return the l1 norm `(abs(q.R_component_1())+...+abs(q.R_component_4()))` +of the quaternion. + +[h4 abs] + + template T abs(quaternion const & q); + +This return the magnitude (Euclidian norm) of the quaternion. + +[h4 norm] + + template T norm(quaternionconst & q); + +This return the (Cayley) norm of the quaternion. +The term "norm" might be confusing, as most people associate it with the +Euclidian norm (and quadratic functionals). For this version of +(the mathematical objects known as) quaternions, the Euclidian norm +(also known as magnitude) is the square root of the Cayley norm. + +[endsect] + +[section:create Quaternion Creation Functions] + + template quaternion spherical(T const & rho, T const & theta, T const & phi1, T const & phi2); + template quaternion semipolar(T const & rho, T const & alpha, T const & theta1, T const & theta2); + template quaternion multipolar(T const & rho1, T const & theta1, T const & rho2, T const & theta2); + template quaternion cylindrospherical(T const & t, T const & radius, T const & longitude, T const & latitude); + template quaternion cylindrical(T const & r, T const & angle, T const & h1, T const & h2); + +These build quaternions in a way similar to the way polar builds complex +numbers, as there is no strict equivalent to polar coordinates for quaternions. + +[#boost_quaternions.quaternions.creation_spherical] `spherical` is a simple transposition of `polar`, it takes as inputs +a (positive) magnitude and a point on the hypersphere, given by three angles. +The first of these, `theta` has a natural range of `-pi` to `+pi`, and the other +two have natural ranges of `-pi/2` to `+pi/2` (as is the case with the usual +spherical coordinates in __R3). Due to the many symmetries and periodicities, +nothing untoward happens if the magnitude is negative or the angles are +outside their natural ranges. The expected degeneracies (a magnitude of +zero ignores the angles settings...) do happen however. + +[#boost_quaternions.quaternions.creation_cylindrical] `cylindrical` is likewise a simple transposition of the usual +cylindrical coordinates in __R3, which in turn is another derivative of +planar polar coordinates. The first two inputs are the polar coordinates of +the first __C component of the quaternion. The third and fourth inputs +are placed into the third and fourth __R components of the quaternion, +respectively. + +[#boost_quaternions.quaternions.creation_multipolar] `multipolar` is yet another simple generalization of polar coordinates. +This time, both __C components of the quaternion are given in polar coordinates. + +[#boost_quaternions.quaternions.creation_cylindrospherical] `cylindrospherical` is specific to quaternions. It is often interesting to +consider __H as the cartesian product of __R by __R3 (the quaternionic +multiplication as then a special form, as given here). This function +therefore builds a quaternion from this representation, with the __R3 +component given in usual __R3 spherical coordinates. + +[#boost_quaternions.quaternions.creation_semipolar] `semipolar` is another generator which is specific to quaternions. +It takes as a first input the magnitude of the quaternion, as a +second input an angle in the range `0` to `+pi/2` such that magnitudes +of the first two __C components of the quaternion are the product of the +first input and the sine and cosine of this angle, respectively, and finally +as third and fourth inputs angles in the range `-pi/2` to `+pi/2` which +represent the arguments of the first and second __C components of +the quaternion, respectively. As usual, nothing untoward happens if +what should be magnitudes are negative numbers or angles are out of their +natural ranges, as symmetries and periodicities kick in. + +In this version of our implementation of quaternions, there is no +analogue of the complex value operation `arg` as the situation is +somewhat more complicated. Unit quaternions are linked both to +rotations in __R3 and in __R4, and the correspondences are not too complicated, +but there is currently a lack of standard (de facto or de jure) matrix +library with which the conversions could work. This should be remedied in +a further revision. In the mean time, an example of how this could be +done is presented here for +[@../../../quaternion/HSO3.hpp __R3], and here for +[@../../../quaternion/HSO4.hpp __R4] +([@../../../quaternion/HSO3SO4.cpp example test file]). + +[endsect] + +[section:trans Quaternion Transcendentals] + +There is no `log` or `sqrt` provided for quaternions in this implementation, +and `pow` is likewise restricted to integral powers of the exponent. +There are several reasons to this: on the one hand, the equivalent of +analytic continuation for quaternions ("branch cuts") remains to be +investigated thoroughly (by me, at any rate...), and we wish to avoid the +nonsense introduced in the standard by exponentiations of complexes by +complexes (which is well defined, but not in the standard...). +Talking of nonsense, saying that `pow(0,0)` is "implementation defined" is just +plain brain-dead... + +We do, however provide several transcendentals, chief among which is the +exponential. This author claims the complete proof of the "closed formula" +as his own, as well as its independant invention (there are claims to prior +invention of the formula, such as one by Professor Shoemake, and it is +possible that the formula had been known a couple of centuries back, but in +absence of bibliographical reference, the matter is pending, awaiting further +investigation; on the other hand, the definition and existence of the +exponential on the quaternions, is of course a fact known for a very long time). +Basically, any converging power series with real coefficients which allows for a +closed formula in __C can be transposed to __H. More transcendentals of this +type could be added in a further revision upon request. It should be +noted that it is these functions which force the dependency upon the +[@../../../../../boost/math/special_functions/sinc.hpp boost/math/special_functions/sinc.hpp] and the +[@../../../../../boost/math/special_functions/sinhc.hpp boost/math/special_functions/sinhc.hpp] headers. + +[h4 exp] + + template quaternion exp(quaternion const & q); + +Computes the exponential of the quaternion. + +[h4 cos] + + template quaternion cos(quaternion const & q); + +Computes the cosine of the quaternion + +[h4 sin] + + template quaternion sin(quaternion const & q); + +Computes the sine of the quaternion. + +[h4 tan] + + template quaternion tan(quaternion const & q); + +Computes the tangent of the quaternion. + +[h4 cosh] + + template quaternion cosh(quaternion const & q); + +Computes the hyperbolic cosine of the quaternion. + +[h4 sinh] + + template quaternion sinh(quaternion const & q); + +Computes the hyperbolic sine of the quaternion. + +[h4 tanh] + + template quaternion tanh(quaternion const & q); + +Computes the hyperbolic tangent of the quaternion. + +[h4 pow] + + template quaternion pow(quaternion const & q, int n); + +Computes the n-th power of the quaternion q. + +[endsect] + +[section Test Program] + +The [@../../../quaternion/quaternion_test.cpp quaternion_test.cpp] +test program tests quaternions specializations for float, double and long double +([@../../../quaternion/output.txt sample output], with message output +enabled). + +If you define the symbol boost_quaternions_TEST_VERBOSE, you will get +additional output ([@../../../quaternion/output_more.txt verbose output]); +this will only be helpfull if you enable message output at the same time, +of course (by uncommenting the relevant line in the test or by adding +[^--log_level=messages] to your command line,...). In that case, and if you +are running interactively, you may in addition define the symbol +BOOST_INTERACTIVE_TEST_INPUT_ITERATOR to interactively test the input +operator with input of your choice from the standard input +(instead of hard-coding it in the test). + +[endsect] + +[section:exp The Quaternionic Exponential] + +Please refer to the following PDF's: + +*[@../../../quaternion/TQE.pdf The Quaternionic Exponential (and beyond)] +*[@../../../quaternion/TQE_EA.pdf The Quaternionic Exponential (and beyond) ERRATA & ADDENDA] + +[endsect] + +[section Acknowledgements] + +The mathematical text has been typeset with +[@http://www.nisus-soft.com/ Nisus Writer]. Jens Maurer has helped with +portability and standard adherence, and was the Review Manager +for this library. More acknowledgements in the History section. +Thank you to all who contributed to the discution about this library. + +[endsect] + +[section History] + +* 1.5.8 - 17/12/2005: Converted documentation to Quickbook Format. +* 1.5.7 - 24/02/2003: transitionned to the unit test framework; now included by the library header (rather than the test files). +* 1.5.6 - 15/10/2002: Gcc2.95.x and stlport on linux compatibility by Alkis Evlogimenos (alkis@routescience.com). +* 1.5.5 - 27/09/2002: Microsoft VCPP 7 compatibility, by Michael Stevens (michael@acfr.usyd.edu.au); requires the /Za compiler option. +* 1.5.4 - 19/09/2002: fixed problem with multiple inclusion (in different translation units); attempt at an improved compatibility with Microsoft compilers, by Michael Stevens (michael@acfr.usyd.edu.au) and Fredrik Blomqvist; other compatibility fixes. +* 1.5.3 - 01/02/2002: bugfix and Gcc 2.95.3 compatibility by Douglas Gregor (gregod@cs.rpi.edu). +* 1.5.2 - 07/07/2001: introduced namespace math. +* 1.5.1 - 07/06/2001: (end of Boost review) now includes and instead of ; corrected bug in sin (Daryle Walker); removed check for self-assignment (Gary Powel); made converting functions explicit (Gary Powel); added overflow guards for division operators and abs (Peter Schmitteckert); added sup and l1; used Vesa Karvonen's CPP metaprograming technique to simplify code. +* 1.5.0 - 26/03/2001: boostification, inlining of all operators except input, output and pow, fixed exception safety of some members (template version) and output operator, added spherical, semipolar, multipolar, cylindrospherical and cylindrical. +* 1.4.0 - 09/01/2001: added tan and tanh. +* 1.3.1 - 08/01/2001: cosmetic fixes. +* 1.3.0 - 12/07/2000: pow now uses Maarten Hilferink's (mhilferink@tip.nl) algorithm. +* 1.2.0 - 25/05/2000: fixed the division operators and output; changed many signatures. +* 1.1.0 - 23/05/2000: changed sinc into sinc_pi; added sin, cos, sinh, cosh. +* 1.0.0 - 10/08/1999: first public version. + +[endsect] +[section To Do] + +* Improve testing. +* Rewrite input operatore using Spirit (creates a dependency). +* Put in place an Expression Template mechanism (perhaps borrowing from uBlas). +* Use uBlas for the link with rotations (and move from the +[@../../../quaternion/HSO3SO4.cpp example] +implementation to an efficient one). + +[endsect] +[endsect] diff --git a/doc/sf_and_dist/Jamfile.v2 b/doc/sf_and_dist/Jamfile.v2 new file mode 100644 index 000000000..809b96ea2 --- /dev/null +++ b/doc/sf_and_dist/Jamfile.v2 @@ -0,0 +1,70 @@ + +# Copyright John Maddock 2005. Use, modification, and distribution are +# subject to the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +using quickbook ; + +path-constant images_location : html ; + +xml math : math.qbk ; +boostbook standalone + : + math + : + # Path for links to Boost: + boost.root=../../../../.. + # Path for libraries index: + boost.libraries=../../../../../libs/libraries.htm + # Use the main Boost stylesheet: + html.stylesheet=../../../../../doc/html/boostbook.css + + # Some general style settings: + table.footnote.number.format=1 + footnote.number.format=1 + + # HTML options first: + # Use graphics not text for navigation: + navig.graphics=1 + # How far down we chunk nested sections, basically all of them: + chunk.section.depth=10 + # Don't put the first section on the same page as the TOC: + chunk.first.sections=1 + # How far down sections get TOC's + toc.section.depth=10 + # Max depth in each TOC: + toc.max.depth=4 + # How far down we go with TOC's + generate.section.toc.level=10 + #root.filename="sf_dist_and_tools" + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + # fop1.extensions=1 + pdf:xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + pdf:fop.extensions=0 + pdf:fop1.extensions=0 + # No indent on body text: + pdf:body.start.indent=0pt + # Margin size: + pdf:page.margin.inner=0.5in + # Margin size: + pdf:page.margin.outer=0.5in + # Paper type = A4 + pdf:paper.type=A4 + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + pdf:admon.graphics.extension=".svg" + pdf:use.role.for.mediaobject=1 + pdf:preferred.mediaobject.role=print + pdf:img.src.path=$(images_location)/ + pdf:admon.graphics.path=$(images_location)/../../svg-admon/ + pdf:draft.mode="no" + ; + + + diff --git a/doc/sf_and_dist/background.qbk b/doc/sf_and_dist/background.qbk new file mode 100644 index 000000000..34a0bfeb0 --- /dev/null +++ b/doc/sf_and_dist/background.qbk @@ -0,0 +1,85 @@ +[section:variates Random Variates and Distribution Parameters] + +[@http://en.wikipedia.org/wiki/Random_variate Random variates] +and [@http://en.wikipedia.org/wiki/Parameter distribution parameters] +are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld +by placing a semi-colon after the random variate (whose value you 'choose'), +to separate the variate from the parameter(s) that defines the shape of the distribution. + +For example, the binomial distribution has two parameters: +n (the number of trials) and p (the probability of success on one trial). +It also has the random variate /k/: the number of successes observed. +This means the probability density\/mass function (pdf) is written as ['f(k; n, p)]. + +Translating this into code the `binomial_distribution` constructor +therefore has two parameters: + + binomial_distribution(RealType n, RealType p); + +While the function `pdf` has one argument specifying the distribution type +(which includes it's parameters, if any), +and a second argument for the random variate. So taking our binomial distribution +example, we would write: + + pdf(binomial_distribution(n, p), k); + +[endsect] + +[section:dist_params Discrete Probability Distributions] + +Note that the [@http://en.wikipedia.org/wiki/Discrete_probability_distribution +discrete distributions], including the binomial, negative binomial, Poisson & Bernoulli, +are all mathematically defined as discrete functions: +only integral values of the random variate are envisaged +and the functions are only defined at these integral values. +However because the method of calculation often uses continuous functions, +it is convenient to treat them as if they were continuous functions, +and permit non-integral values of their parameters. + +To enforce a strict mathematical model, +users may use floor or ceil functions on the random variate, +prior to calling the distribution function, +to enforce integral values. + +For similar reasons, in continuous distributions, parameters like degrees of freedom +that might appear to be integral, are treated as real values +(and are promoted from integer to floating-point if necessary). +In this case however, that there are a small number of situations where non-integral +degrees of freedom do have a genuine meaning. + +Generally speaking there is no loss of performance from allowing real-values +parameters: the underlying special functions contain optimizations for +integer-valued arguments when applicable. + +[caution +The quantile function of a discrete distribution will by +default return an integer result that has been +/rounded outwards/. That is to say lower quantiles (where the probability is +less than 0.5) are rounded downward, and upper quantiles (where the probability +is greater than 0.5) are rounded upwards. This behaviour +ensures that if an X% quantile is requested, then /at least/ the requested +coverage will be present in the central region, and /no more than/ +the requested coverage will be present in the tails. + +This behaviour can be changed so that the quantile functions are rounded +differently, or even return a real-valued result using +[link math_toolkit.policy.pol_overview Policies]. It is strongly +recommended that you read the tutorial +[link math_toolkit.policy.pol_tutorial.understand_dis_quant +Understanding Quantiles of Discrete Distributions] before +using the quantile function on a discrete distribution. The +[link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs] +describe how to change the rounding policy +for these distributions. +] + +[endsect] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/bessel_ik.qbk b/doc/sf_and_dist/bessel_ik.qbk new file mode 100644 index 000000000..9c246323c --- /dev/null +++ b/doc/sf_and_dist/bessel_ik.qbk @@ -0,0 +1,197 @@ + +[section:mbessel Modified Bessel Functions of the First and Second Kinds] + +[h4 Synopsis] + + template + ``__sf_result`` cyl_bessel_i(T1 v, T2 x); + + template + ``__sf_result`` cyl_bessel_i(T1 v, T2 x, const ``__Policy``&); + + template + ``__sf_result`` cyl_bessel_k(T1 v, T2 x); + + template + ``__sf_result`` cyl_bessel_k(T1 v, T2 x, const ``__Policy``&); + + +[h4 Description] + +The functions __cyl_bessel_i and __cyl_bessel_k return the result of the +modified Bessel functions of the first and second kind respectively: + +cyl_bessel_i(v, x) = I[sub v](x) + +cyl_bessel_k(v, x) = K[sub v](x) + +where: + +[equation mbessel2] + +[equation mbessel3] + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types. The functions are also optimised for the +relatively common case that T1 is an integer. + +[optional_policy] + +The functions return the result of __domain_error whenever the result is +undefined or complex. For __cyl_bessel_j this occurs when `x < 0` and v is not +an integer, or when `x == 0` and `v != 0`. For __cyl_neumann this occurs +when `x <= 0`. + +The following graph illustrates the exponential behaviour of I[sub v]. + +[$../graphs/bessel_i.png] + +The following graph illustrates the exponential decay of K[sub v]. + +[$../graphs/bessel_k.png] + +[h4 Testing] + +There are two sets of test values: spot values calculated using +[@http://functions.wolfram.com functions.wolfram.com], +and a much larger set of tests computed using +a simplified version of this implementation +(with all the special case handling removed). + +[h4 Accuracy] + +The following tables show how the accuracy of these functions +varies on various platforms, along with a comparison to the __gsl library. +Note that only results for the widest floating-point type on the +system are given, as narrower types have __zero_error. All values +are relative errors in units of epsilon. + +[table Errors Rates in cyl_bessel_i +[[Significand Size] [Platform and Compiler] [I[sub v]] ] +[[53] [Win32 / Visual C++ 8.0] [Peak=10 Mean=3.4 + GSL Peak=6000] ] +[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=11 Mean=3] ] +[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=11 Mean=4] ] +[[113] [HP-UX / HP aCC 6] [Peak=15 Mean=4] ] +] + +[table Errors Rates in cyl_bessel_k +[[Significand Size] [Platform and Compiler] [K[sub v]] ] +[[53] [Win32 / Visual C++ 8.0] [Peak=9 Mean=2 + +GSL Peak=9] ] +[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=10 Mean=2] ] +[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=10 Mean=2] ] +[[113] [HP-UX / HP aCC 6] [Peak=12 Mean=5] ] +] + +[h4 Implementation] + +The following are handled as special cases first: + +When computing I[sub v][space] for ['x < 0], then [nu][space] must be an integer +or a domain error occurs. If [nu][space] is an integer, then the function is +odd if [nu][space] is odd and even if [nu][space] is even, and we can reflect to +['x > 0]. + +For I[sub v][space] with v equal to 0, 1 or 0.5 are handled as special cases. + +The 0 and 1 cases use minimax rational approximations on +finite and infinite intervals. The coefficients are from: + +* J.M. Blair and C.A. Edwards, ['Stable rational minimax approximations + to the modified Bessel functions I_0(x) and I_1(x)], Atomic Energy of Canada + Limited Report 4928, Chalk River, 1974. +* S. Moshier, ['Methods and Programs for Mathematical Functions], + Ellis Horwood Ltd, Chichester, 1989. + +While the 0.5 case is a simple trigonometric function: + +I[sub 0.5](x) = sqrt(2 / [pi]x) * sinh(x) + +For K[sub v][space] with /v/ an integer, the result is calculated using the +recurrence relation: + +[equation mbessel5] + +starting from K[sub 0][space] and K[sub 1][space] which are calculated +using rational the approximations above. These rational approximations are +accurate to around 19 digits, and are therefore only used when T has +no more than 64 binary digits of precision. + +In the general case, we first normalize [nu][space] to \[[^0, [inf]]) +with the help of the reflection formulae: + +[equation mbessel9] + +[equation mbessel10] + +Let [mu][space] = [nu] - floor([nu] + 1/2), then [mu][space] is the fractional part of +[nu][space] such that |[mu]| <= 1/2 (we need this for convergence later). The idea is to +calculate K[sub [mu]](x) and K[sub [mu]+1](x), and use them to obtain +I[sub [nu]](x) and K[sub [nu]](x). + +The algorithm is proposed by Temme in +N.M. Temme, ['On the numerical evaluation of the modified bessel function + of the third kind], Journal of Computational Physics, vol 19, 324 (1975), +which needs two continued fractions as well as the Wronskian: + +[equation mbessel11] + +[equation mbessel12] + +[equation mbessel8] + +The continued fractions are computed using the modified Lentz's method +(W.J. Lentz, ['Generating Bessel functions in Mie scattering calculations + using continued fractions], Applied Optics, vol 15, 668 (1976)). +Their convergence rates depend on ['x], therefore we need +different strategies for large ['x] and small ['x]. + +['x > v], CF1 needs O(['x]) iterations to converge, CF2 converges rapidly. + +['x <= v], CF1 converges rapidly, CF2 fails to converge when ['x] [^->] 0. + +When ['x] is large (['x] > 2), both continued fractions converge (CF1 +may be slow for really large ['x]). K[sub [mu]][space] and K[sub [mu]+1][space] +can be calculated by + +[equation mbessel13] + +where + +[equation mbessel14] + +['S] is also a series that is summed along with CF2, see +I.J. Thompson and A.R. Barnett, ['Modified Bessel functions I_v and K_v + of real order and complex argument to selected accuracy], Computer Physics + Communications, vol 47, 245 (1987). + +When ['x] is small (['x] <= 2), CF2 convergence may fail (but CF1 +works very well). The solution here is Temme's series: + +[equation mbessel15] + +where + +[equation mbessel16] + +f[sub k][space] and h[sub k][space] +are also computed by recursions (involving gamma functions), but the +formulas are a little complicated, readers are referred to +N.M. Temme, ['On the numerical evaluation of the modified Bessel function + of the third kind], Journal of Computational Physics, vol 19, 324 (1975). +Note: Temme's series converge only for |[mu]| <= 1/2. + +K[sub [nu]](x) is then calculated from the forward +recurrence, as is K[sub [nu]+1](x). With these two values and +f[sub [nu]], the Wronskian yields I[sub [nu]](x) directly. + +[endsect] + +[/ + Copyright 2006 John Maddock, Paul A. Bristow and Xiaogang Zhang. + Distributed under the 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/bessel_introduction.qbk b/doc/sf_and_dist/bessel_introduction.qbk new file mode 100644 index 000000000..4cdfe629d --- /dev/null +++ b/doc/sf_and_dist/bessel_introduction.qbk @@ -0,0 +1,124 @@ + +[section:bessel_over Bessel Function Overview] + +[h4 Ordinary Bessel Functions] + +Bessel Functions are solutions to Bessel's ordinary differential +equation: + +[equation bessel1] + +where [nu][space] is the /order/ of the equation, and may be an arbitrary +real or complex number, although integer orders are the most common occurrence. + +This library supports either integer or real orders. + +Since this is a second order differential equation, there must be two +linearly independent solutions, the first of these is denoted J[sub v][space] +and known as a Bessel function of the first kind: + +[equation bessel2] + +This function is implemented in this library as __cyl_bessel_j. + +The second solution is denoted either Y[sub v][space] or N[sub v][space] +and is known as either a Bessel Function of the second kind, or as a +Neumann function: + +[equation bessel3] + +This function is implemented in this library as __cyl_neumann. + +The Bessel functions satisfy the recurrence relations: + +[equation bessel4] + +[equation bessel5] + +Have the derivatives: + +[equation bessel6] + +[equation bessel7] + +Have the Wronskian relation: + +[equation bessel8] + +and the reflection formulae: + +[equation bessel9] + +[equation bessel10] + + +[h4 Modified Bessel Functions] + +The Bessel functions are valid for complex argument /x/, and an important +special case is the situation where /x/ is purely imaginary: giving a real +valued result. In this case the functions are the two linearly +independent solutions to the modified Bessel equation: + +[equation mbessel1] + +The solutions are known as the modified Bessel functions of the first and +second kind (or occasionally as the hyperbolic Bessel functions of the first +and second kind). They are denoted I[sub v][space] and K[sub v][space] +respectively: + +[equation mbessel2] + +[equation mbessel3] + +These functions are implemented in this library as __cyl_bessel_i and +__cyl_bessel_k respectively. + +The modified Bessel functions satisfy the recurrence relations: + +[equation mbessel4] + +[equation mbessel5] + +Have the derivatives: + +[equation mbessel6] + +[equation mbessel7] + +Have the Wronskian relation: + +[equation mbessel8] + +and the reflection formulae: + +[equation mbessel9] + +[equation mbessel10] + +[h4 Spherical Bessel Functions] + +When solving the Helmholtz equation in spherical coordinates by +separation of variables, the radial equation has the form: + +[equation sbessel1] + +The two linearly independent solutions to this equation are called the +spherical Bessel functions j[sub n][space] and y[sub n][space], and are related to the +ordinary Bessel functions J[sub n][space] and Y[sub n][space] by: + +[equation sbessel2] + +The spherical Bessel function of the second kind y[sub n][space] +is also known as the spherical Neumann function n[sub n]. + +These functions are implemented in this library as __sph_bessel and +__sph_neumann. + +[endsect] + +[/ + Copyright 2006 John Maddock, Paul A. Bristow and Xiaogang Zhang. + Distributed under the 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/bessel_jy.qbk b/doc/sf_and_dist/bessel_jy.qbk new file mode 100644 index 000000000..04a6a5115 --- /dev/null +++ b/doc/sf_and_dist/bessel_jy.qbk @@ -0,0 +1,261 @@ + +[section:bessel Bessel Functions of the First and Second Kinds] + +[h4 Synopsis] + + template + ``__sf_result`` cyl_bessel_j(T1 v, T2 x); + + template + ``__sf_result`` cyl_bessel_j(T1 v, T2 x, const ``__Policy``&); + + template + ``__sf_result`` cyl_neumann(T1 v, T2 x); + + template + ``__sf_result`` cyl_neumann(T1 v, T2 x, const ``__Policy``&); + + +[h4 Description] + +The functions __cyl_bessel_j and __cyl_neumann return the result of the +Bessel functions of the first and second kinds respectively: + +cyl_bessel_j(v, x) = J[sub v](x) + +cyl_neumann(v, x) = Y[sub v](x) = N[sub v](x) + +where: + +[equation bessel2] + +[equation bessel3] + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types. The functions are also optimised for the +relatively common case that T1 is an integer. + +[optional_policy] + +The functions return the result of __domain_error whenever the result is +undefined or complex. For __cyl_bessel_j this occurs when `x < 0` and v is not +an integer, or when `x == 0` and `v != 0`. For __cyl_neumann this occurs +when `x <= 0`. + +The following graph illustrates the cyclic nature of J[sub v]: + +[$../graphs/bessel_jn.png] + +The following graph shows the behaviour of Y[sub v]: this is also +cyclic for large /x/, but tends to -[infin][space] for small /x/: + +[$../graphs/bessel_yv.png] + +[h4 Testing] + +There are two sets of test values: spot values calculated using +[@http://functions.wolfram.com functions.wolfram.com], +and a much larger set of tests computed using +a simplified version of this implementation +(with all the special case handling removed). + +[h4 Accuracy] + +The following tables show how the accuracy of these functions +varies on various platforms, along with comparisons to the __gsl and +__cephes libraries. Note that the cyclic nature of these +functions means that they have an infinite number of irrational +roots: in general these functions have arbitrarily large /relative/ +errors when the arguments are sufficiently close to a root. Of +course the absolute error in such cases is always small. +Note that only results for the widest floating-point type on the +system are given as narrower types have __zero_error. All values +are relative errors in units of epsilon. + +[table Errors Rates in cyl_bessel_j +[[Significand Size] [Platform and Compiler] [J[sub 0][space] and J[sub 1]] [J[sub v]] [J[sub v][space] (large values of x > 1000)] ] +[[53] [Win32 / Visual C++ 8.0] + [Peak=2.5 Mean=1.1 + +GSL Peak=6.6 + +__cephes Peak=2.5 Mean=1.1] + [Peak=11 Mean=2.2 + +GSL Peak=11 + +__cephes Peak=17 Mean=2.5] + [Peak=413 Mean=110 + +GSL Peak=6x10[super 11] + +__cephes Peak=2x10[super 5] ] ] +[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=7 Mean=3] [Peak=117 Mean=10] [Peak=2x10[super 4][space] Mean=6x10[super 3]] ] +[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=7 Mean=3] [Peak=400 Mean=40] [Peak=2x10[super 4][space] Mean=1x10[super 4]] ] +[[113] [HP-UX / HP aCC 6] [Peak=14 Mean=6] [Peak=29 Mean=3] [Peak=2700 Mean=450] ] +] + +[table Errors Rates in cyl_neumann +[[Significand Size] [Platform and Compiler] [J[sub 0][space] and J[sub 1]] [J[sub n] (integer orders)] [J[sub v] (fractional orders)] ] +[[53] [Win32 / Visual C++ 8.0] + [Peak=330 Mean=54 + +GSL Peak=34 Mean=9 + +__cephes Peak=330 Mean=54] + [Peak=923 Mean=83 + +GSL Peak=500 Mean=54 + +__cephes Peak=923 Mean=83] + [Peak=561 Mean=36 + +GSL Peak=1.4x10[super 6][space] Mean\=7x10[super 4][space] + +__cephes Peak=+INF]] +[[64] [Red Hat Linux IA64 / G++ 3.4] [Peak=470 Mean=56] [Peak=843 Mean=51] [Peak=741 Mean=51] ] +[[64] [SUSE Linux AMD64 / G++ 4.1] [Peak=1300 Mean=424] [Peak=2x10[super 4][space] Mean=8x10[super 3]] [Peak=1x10[super 5][space] Mean=6x10[super 3]] ] +[[113] [HP-UX / HP aCC 6] [Peak=180 Mean=63] [Peak=340 Mean=150] [Peak=2x10[super 4][space] Mean=1200] ] +] + +Note that for large /x/ these functions are largely dependent on +the accuracy of the `std::sin` and `std::cos` functions. + +Comparison to GSL and __cephes is interesting: both __cephes and this library optimise +the integer order case - leading to identical results - simply using the general +case is for the most part slightly more accurate though, as noted by the +better accuracy of GSL in the integer argument cases. This implementation tends to +perform much better when the arguments become large, __cephes in particular produces +some remarkably inaccurate results with some of the test data (no significant figures +correct), and even GSL performs badly with some inputs to J[sub v]. Note that +by way of double-checking these results, the worst performing __cephes and GSL cases +were recomputed using [@http://functions.wolfram.com functions.wolfram.com], +and the result checked against our test data: no errors in the test data were found. + +[h4 Implementation] + +The implementation is mostly about filtering off various special cases: + +When /x/ is negative, then the order /v/ must be an integer or the +result is a domain error. If the order is an integer then the function +is odd for odd orders and even for even orders, so we reflect to /x > 0/. + +When the order /v/ is negative then the reflection formulae can be used to +move to /v > 0/: + +[equation bessel9] + +[equation bessel10] + +Note that if the order is an integer, then these formulae reduce to: + +J[sub -n] = (-1)[super n]J[sub n] + +Y[sub -n] = (-1)[super n]Y[sub n] + +However, in general, a negative order implies that we will need to compute +both J and Y. + +When /x/ is large compared to the order /v/ then the asymptotic expansions +for large /x/ in M. Abramowitz and I.A. Stegun, +['Handbook of Mathematical Functions] 9.2.19 are used +(these were found to be more reliable +than those in A&S 9.2.5). + +When the order /v/ is an integer the method first relates the result +to J[sub 0], J[sub 1], Y[sub 0][space] and Y[sub 1][space] using either +forwards or backwards recurrence (Miller's algorithm) depending upon which is stable. +The values for J[sub 0], J[sub 1], Y[sub 0][space] and Y[sub 1][space] are +calculated using the rational minimax approximations on +root-bracketing intervals for small ['|x|] and Hankel asymptotic +expansion for large ['|x|]. The coefficients are from: + +W.J. Cody, ['ALGORITHM 715: SPECFUN - A Portable FORTRAN Package of +Special Function Routines and Test Drivers], ACM Transactions on Mathematical +Software, vol 19, 22 (1993). + +and + +J.F. Hart et al, ['Computer Approximations], John Wiley & Sons, New York, 1968. + +These approximations are accurate to around 19 decimal digits: therefore +these methods are not used when type T has more than 64 binary digits. + +When /x/ is small, J[sub x][space] is best computed directly from the series: + +[equation bessel2] + +In the general case we compute J[sub v][space] and +Y[sub v][space] simultaneously. + +To get the initial values, let +[mu][space] = [nu] - floor([nu] + 1/2), then [mu][space] is the fractional part +of [nu][space] such that +|[mu]| <= 1/2 (we need this for convergence later). The idea is to +calculate J[sub [mu]](x), J[sub [mu]+1](x), Y[sub [mu]](x), Y[sub [mu]+1](x) +and use them to obtain J[sub [nu]](x), Y[sub [nu]](x). + +The algorithm is called Steed's method, which needs two +continued fractions as well as the Wronskian: + +[equation bessel8] + +[equation bessel11] + +[equation bessel12] + +See: F.S. Acton, ['Numerical Methods that Work], + The Mathematical Association of America, Washington, 1997. + +The continued fractions are computed using the modified Lentz's method +(W.J. Lentz, ['Generating Bessel functions in Mie scattering calculations +using continued fractions], Applied Optics, vol 15, 668 (1976)). +Their convergence rates depend on ['x], therefore we need +different strategies for large ['x] and small ['x]. + +['x > v], CF1 needs O(['x]) iterations to converge, CF2 converges rapidly + +['x <= v], CF1 converges rapidly, CF2 fails to converge when ['x] [^->] 0 + +When ['x] is large (['x] > 2), both continued fractions converge (CF1 +may be slow for really large ['x]). J[sub [mu]], J[sub [mu]+1], +Y[sub [mu]], Y[sub [mu]+1] can be calculated by + +[equation bessel13] + +where + +[equation bessel14] + +J[sub [nu]] and Y[sub [mu]] are then calculated using backward +(Miller's algorithm) and forward recurrence respectively. + +When ['x] is small (['x] <= 2), CF2 convergence may fail (but CF1 +works very well). The solution here is Temme's series: + +[equation bessel15] + +where + +[equation bessel16] + +g[sub k][space] and h[sub k][space] +are also computed by recursions (involving gamma functions), but the +formulas are a little complicated, readers are refered to +N.M. Temme, ['On the numerical evaluation of the ordinary Bessel function +of the second kind], Journal of Computational Physics, vol 21, 343 (1976). +Note Temme's series converge only for |[mu]| <= 1/2. + +As the previous case, Y[sub [nu]][space] is calculated from the forward +recurrence, so is Y[sub [nu]+1]. With these two +values and f[sub [nu]], the Wronskian yields J[sub [nu]](x) directly +without backward recurrence. + +[endsect] + +[/ + Copyright 2006 John Maddock, Paul A. Bristow and Xiaogang Zhang. + Distributed under the 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/bessel_spherical.qbk b/doc/sf_and_dist/bessel_spherical.qbk new file mode 100644 index 000000000..7be51d8a2 --- /dev/null +++ b/doc/sf_and_dist/bessel_spherical.qbk @@ -0,0 +1,87 @@ + +[section:sph_bessel Spherical Bessel Functions of the First and Second Kinds] + +[h4 Synopsis] + + template + ``__sf_result`` sph_bessel(unsigned v, T2 x); + + template + ``__sf_result`` sph_bessel(unsigned v, T2 x, const ``__Policy``&); + + template + ``__sf_result`` sph_neumann(unsigned v, T2 x); + + template + ``__sf_result`` sph_neumann(unsigned v, T2 x, const ``__Policy``&); + +[h4 Description] + +The functions __sph_bessel and __sph_neumann return the result of the +Spherical Bessel functions of the first and second kinds respectively: + +sph_bessel(v, x) = j[sub v](x) + +sph_neumann(v, x) = y[sub v](x) = n[sub v](x) + +where: + +[equation sbessel2] + +The return type of these functions is computed using the __arg_pomotion_rules +for the single argument type T. + +[optional_policy] + +The functions return the result of __domain_error whenever the result is +undefined or complex: this occurs when `x < 0`. + +The j[sub v][space] function is cyclic like J[sub v][space] but differs +in its behaviour at the origin: + +[$../graphs/sph_bessel_j.png] + +Likewise y[sub v][space] is also cyclic for large x, but tends to -[infin][space] +for small /x/: + +[$../graphs/sph_bessel_y.png] + +[h4 Testing] + +There are two sets of test values: spot values calculated using +[@http://functions.wolfram.com/ functions.wolfram.com], +and a much larger set of tests computed using +a simplified version of this implementation +(with all the special case handling removed). + +[h4 Accuracy] + +Other than for some special cases, these functions are computed in terms of +__cyl_bessel_j and __cyl_neumann: refer to these functions for accuracy data. + +[h4 Implementation] + +Other than error handling and a couple of special cases these functions +are implemented directly in terms of their definitions: + +[equation sbessel2] + +The special cases occur for: + +j[sub 0][space]= __sinc_pi(x) = sin(x) / x + +and for small ['x < 1], we can use the series: + +[equation sbessel5] + +which neatly avoids the problem of calculating 0/0 that can occur with the +main definition as x [rarr] 0. + +[endsect] + +[/ + Copyright 2006 John Maddock, Paul A. Bristow and Xiaogang Zhang. + Distributed under the 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/beta.qbk b/doc/sf_and_dist/beta.qbk new file mode 100644 index 000000000..8ec6ecc65 --- /dev/null +++ b/doc/sf_and_dist/beta.qbk @@ -0,0 +1,128 @@ +[section:beta_function Beta] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` beta(T1 a, T2 b); + + template + ``__sf_result`` beta(T1 a, T2 b, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +The beta function is defined by: + +[equation beta1] + +[$../graphs/beta.png] + +[optional_policy] + +There are effectively two versions of this function internally: a fully +generic version that is slow, but reasonably accurate, and a much more +efficient approximation that is used where the number of digits in the significand +of T correspond to a certain __lanczos. In practice any built-in +floating-point type you will encounter has an appropriate __lanczos +defined for it. It is also possible, given enough machine time, to generate +further __lanczos's using the program libs/math/tools/lanczos_generator.cpp. + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types. + +[h4 Accuracy] + +The following table shows peak errors for various domains of input arguments, +along with comparisons to the __gsl and __cephes libraries. Note that +only results for the widest floating point type on the system are given as +narrower types have __zero_error. + +[table Peak Errors In the Beta Function +[[Significand Size] [Platform and Compiler] [Errors in range + +0.4 < a,b < 100] [Errors in range + +1e-6 < a,b < 36]] +[[53] [Win32, Visual C++ 8] [Peak=99 Mean=22 + +(GSL Peak=1178 Mean=238) + +(__cephes=1612)] [Peak=10.7 Mean=2.6 + +(GSL Peak=12 Mean=2.0) + +(__cephes=174)]] +[[64] [Red Hat Linux IA32, g++ 3.4.4] [Peak=112.1 Mean=26.9] [Peak=15.8 Mean=3.6]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=61.4 Mean=19.5] [Peak=12.2 Mean=3.6]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=42.03 Mean=13.94] [Peak=9.8 Mean=3.1]] +] + +Note that the worst errors occur when a or b are large, and that +when this is the case the result is very close to zero, so absolute +errors will be very small. + +[h4 Testing] + +A mixture of spot tests of exact values, and randomly generated test data are +used: the test data was computed using +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision. + +[h4 Implementation] + +Traditional methods of evaluating the beta function either involve evaluating +the gamma functions directly, or taking logarithms and then +exponentiating the result. However, the former is prone to overflows +for even very modest arguments, while the latter is prone to cancellation +errors. As an alternative, if we regard the gamma function as a white-box +containing the __lanczos, then we can combine the power terms: + +[equation beta2] + +which is almost the ideal solution, however almost all of the error occurs +in evaluating the power terms when /a/ or /b/ are large. If we assume that /a > b/ +then the larger of the two power terms can be reduced by a factor of /b/, which +immediately cuts the maximum error in half: + +[equation beta3] + +This may not be the final solution, but it is very competitive compared to +other implementation methods. + +The generic implementation - where no __lanczos approximation is available - is +implemented in a very similar way to the generic version of the gamma function. +Again in order to avoid numerical overflow the power terms that prefix the series and +continued fraction parts are collected together into: + +[equation beta8] + +where la, lb and lc are the integration limits used for a, b, and a+b. + +There are a few special cases worth mentioning: + +When /a/ or /b/ are less than one, we can use the recurrence relations: + +[equation beta4] + +[equation beta5] + +to move to a more favorable region where they are both greater than 1. + +In addition: + +[equation beta7] + +[endsect][/section:beta_function The Beta Function] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/beta_derivative.qbk b/doc/sf_and_dist/beta_derivative.qbk new file mode 100644 index 000000000..6481df268 --- /dev/null +++ b/doc/sf_and_dist/beta_derivative.qbk @@ -0,0 +1,50 @@ +[section:beta_derivative Derivative of the Incomplete Beta Function] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` ibeta_derivative(T1 a, T2 b, T3 x); + + template + ``__sf_result`` ibeta_derivative(T1 a, T2 b, T3 x, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +This function finds some uses in statistical distributions: it +computes the partial derivative with respect to /x/ of the incomplete +beta function __ibeta. + +[equation derivative2] + +The return type of this function is computed using the __arg_pomotion_rules +when T1, T2 and T3 are different types. + +[optional_policy] + +[h4 Accuracy] + +Almost identical to the incomplete beta function __ibeta. + +[h4 Implementation] + +This function just expose some of the internals of the incomplete +beta function __ibeta: refer to the documentation for that function +for more information. + +[endsect][/section Derivatives of the Incomplete Beta and Gamma Functions] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/common_overviews.qbk b/doc/sf_and_dist/common_overviews.qbk new file mode 100644 index 000000000..9d42fae65 --- /dev/null +++ b/doc/sf_and_dist/common_overviews.qbk @@ -0,0 +1,223 @@ + + +[template policy_overview[] + +Policies are a powerful fine-grain mechanism that allow you to customise the +behaviour of this library according to your needs. There is more information +available in the [link math_toolkit.policy.pol_tutorial policy tutorial] +and the [link math_toolkit.policy.pol_ref policy reference]. + +Generally speaking unless you find that the +[link math_toolkit.policy.pol_tutorial.policy_tut_defaults + default policy behaviour] +when encountering 'bad' argument values does not meet your needs, +you should not need to worry about policies. + +Policies are a compile-time mechanism that allow you to change +error-handling or calculation precision either +program wide, or at the call site. + +Although the policy mechanism itself is rather complicated, +in practice it is easy to use, and very flexible. + +Using policies you can control: + +* [link math_toolkit.policy.pol_ref.error_handling_policies How results from 'bad' arguments are handled], + including those that cannot be fully evaluated. +* How [link math_toolkit.policy.pol_ref.internal_promotion accuracy is controlled by internal promotion] to use more precise types. +* What working [link math_toolkit.policy.pol_ref.precision_pol precision] should be used to calculate results. +* What to do when a [link math_toolkit.policy.pol_ref.assert_undefined mathematically undefined function] + is used: Should this raise a run-time or compile-time error? +* Whether [link math_toolkit.policy.pol_ref.discrete_quant_ref discrete functions], + like the binomial, should return real or only integral values, and how they are rounded. +* How many iterations a special function is permitted to perform in + a series evaluation or root finding algorithm before it gives up and raises an + __evaluation_error. + +You can control policies: + +* Using [link math_toolkit.policy.pol_ref.policy_defaults macros] to +change any default policy: the is the prefered method for installation +wide policies. +* At your chosen [link math_toolkit.policy.pol_ref.namespace_pol +namespace scope] for distributions and/or functions: this is the +prefered method for project, namespace, or translation unit scope +policies. +* In an ad-hoc manner [link math_toolkit.policy.pol_tutorial.ad_hoc_sf_policies +by passing a specific policy to a special function], or to a +[link math_toolkit.policy.pol_tutorial.ad_hoc_dist_policies +statistical distribution]. + +] + +[template performance_overview[] + +By and large the performance of this library should be acceptable +for most needs. However, you should note that the library's primary +emphasis is on accuracy and numerical stability, and /not/ speed. + +In terms of the algorithms used, this library aims to use the same "best +of breed" algorithms as many other libraries: the principle difference +is that this library is implemented in C++ - taking advantage of all +the abstraction mechanisms that C++ offers - where as most traditional +numeric libraries are implemented in C or FORTRAN. Traditionally +languages such as C or FORTAN are perceived as easier to optimise +than more complex languages like C++, so in a sense this library +provides a good test of current compiler technology, and the +"abstraction penalty" - if any - of C++ compared to other languages. + +The two most important things you can do to ensure the best performance +from this library are: + +# Turn on your compilers optimisations: the difference between "release" +and "debug" builds can easily be a [link math_toolkit.perf.getting_best factor of 20]. +# Pick your compiler carefully: [link math_toolkit.perf.comp_compilers +performance differences of up to +8 fold] have been found between some windows compilers for example. + +The [link math_toolkit.perf performance section] contains more +information on the performance +of this library, what you can do to fine tune it, and how this library +compares to some other open source alternatives. + +] + +[template compilers_overview[] + +This section contains some information about how various compilers +work with this library. +It is not comprehensive and updated experiences are always welcome. +Some effort has been made to suppress unhelpful warnings but it is +difficult to achieve this on all systems. + +[table Supported/Tested Compilers +[[Platform][Compiler][Has long double support][Notes]] +[[Windows][MSVC 7.1 and later][Yes] + [All tests OK. + + We aim to keep our headers warning free at level 4 with + this compiler.]] +[[Windows][Intel 8.1 and later][Yes] + [All tests OK. + + We aim to keep our headers warning free at level 4 with + this compiler. However, The tests cases tend to generate a lot of + warnings relating to numeric underflow of the test data: these are + harmless.]] +[[Windows][GNU Mingw32 C++][Yes] + [All tests OK. + + We aim to keep our headers warning free with -Wall with this compiler.]] +[[Windows][GNU Cygwin C++][No] + [All tests OK. + + We aim to keep our headers warning free with -Wall with this compiler. + + Long double support has been disabled because there are no native + long double C std library functions available.]] +[[Windows][Borland C++ 5.8.2 (Developer studio 2006)][No] + [We have only partial compatability with this compiler: + + Long double support has been disabled because the native + long double C standard library functions really only forward to the + double versions. This can result in unpredictable behaviour when + using the long double overloads: for example `sqrtl` applied to a + finite value, can result in an infinite result. + + Some functions still fail to compile, there are no known workarounds at present.]] + +[[Linux][GNU C++ 3.4 and later][Yes] + [All tests OK. + + We aim to keep our headers warning free with -Wall with this compiler.]] +[[Linux][Intel C++ 10.0 and later][Yes] + [All tests OK. + + We aim to keep our headers warning free with -Wall with this compiler. + However, The tests cases tend to generate a lot of + warnings relating to numeric underflow of the test data: these are + harmless.]] +[[Linux][Intel C++ 8.1 and 9.1][No] + [All tests OK. + + Long double support has been disabled with these compiler releases + because calling the standard library long double math functions + can result in a segfault. The issue is Linux distribution and + glibc version specific and is Intel bug report #409291. Fully up to date + releases of Intel 9.1 (post version l_cc_c_9.1.046) + shouldn't have this problem. If you need long + double support with this compiler, then comment out the define of + BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS at line 55 of + [@../../../../../boost/math/tools/config.hpp boost/math/tools/config.hpp]. + + We aim to keep our headers warning free with -Wall with this compiler. + However, The tests cases tend to generate a lot of + warnings relating to numeric underflow of the test data: these are + harmless.]] +[[Linux][QLogic PathScale 3.0][Yes] + [Some tests involving conceptual checks fail to build, otherwise + there appear to be no issues.]] +[[Linux][Sun Studio 12][Yes] + [Some tests involving function overload resolution fail to build, + these issues should be rairly encountered in practice.]] +[[Solaris][Sun Studio 12][Yes] + [Some tests involving function overload resolution fail to build, + these issues should be rairly encountered in practice.]] +[[Solaris][GNU C++ 4.x][Yes] + [All tests OK. + + We aim to keep our headers warning free with -Wall with this compiler.]] +[[HP Tru64][Compaq C++ 7.1][Yes] + [All tests OK.]] +[[HP-UX Itanium][HP aCC 6.x][Yes] + [All tests OK. + + Unfortunately this compiler emits quite a few warnings from libraries + upon which we depend (TR1, Array etc).]] +[[HP-UX PA-RISC][GNU C++ 3.4][No] + [All tests OK.]] +[[Apple Mac OS X, Intel][Darwin/GNU C++ 4.x][Yes][All tests OK.]] +[[Apple Mac OS X, PowerPC][Darwin/GNU C++ 4.x][No] + [All tests OK. + + Long double support has been disabled on this platform due to the + rather strange nature of Darwin's 106-bit long double + implementation. It should be possible to make this work if someone + is prepared to offer assistance.]] +[[IMB AIX][IBM xlc 5.3][Yes] + [Currently our accuracy tests are unable to be run on this platform + due to compiler errors in our /test/ code. The IBM compiler group + are aware of the problem.]] +] + +[table Unsupported Compilers +[[Platform][Compiler]] +[[Windows][Borland C++ 5.9.2 (Borland Developer Studio 2007)]] +[[Windows][MSVC 6 and 7]] +] + +If you're compiler or platform is not listed above, please try running the +regression tests: cd into boost-root/libs/math/test and do a: + + bjam mytoolset + +where "mytoolset" is the name of the +[@../../../../../tools/build/index.html Boost.Build] toolset used for your +compiler. The chances are that [*many of the accuracy tests will fail +at this stage] - don't panic - the default acceptable error tolerances +are quite tight, especially for long double types with an extended +exponent range (these cause more extreme test cases to be executed +for some functions). +You will need to cast an eye over the output from +the failing tests and make a judgement as to whether +the error rates are acceptable or not. + +] + +[/ math.qbk + Copyright 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/concepts.qbk b/doc/sf_and_dist/concepts.qbk new file mode 100644 index 000000000..ec64c6893 --- /dev/null +++ b/doc/sf_and_dist/concepts.qbk @@ -0,0 +1,369 @@ +[section:use_ntl Using With NTL - a High-Precision Floating-Point Library] + +The special functions and tools in this library can be used with +[@http://shoup.net/ntl/doc/RR.txt NTL::RR (an arbitrary precision number type)], +via the bindings in [@../../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp]. +[@http://shoup.net/ntl/ See also NTL: A Library for doing Number Theory by +Victor Shoup] + +Unfortunately `NTL::RR` doesn't quite satisfy our conceptual requirements, +so there is a very thin wrapper class `boost::math::ntl::RR` defined in +[@../../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp] that you +should use in place of `NTL::RR`. The class is intended to be a drop-in +replacement for the "real" NTL::RR that adds some syntactic sugar to keep +this library happy, plus some of the standard library functions not implemented +in NTL. + +Finally there is a high precision __lanczos suitable for use with `boost::math::ntl::RR`, +used at 1000-bit precision in +[@../../../tools/ntl_rr_lanczos.hpp libs/math/tools/ntl_rr_lanczos.hpp]. +The approximation has a theoretical precision of > 90 decimal digits, +and an experimental precision of > 100 decimal digits. To use that +approximation, just include that header before any of the special +function headers (if you don't use it, you'll get a slower, but +fully generic implementation for all of the gamma-like functions). + +[endsect][/section:use_ntl Using With NTL - a High Precision Floating-Point Library] + +[section:concepts Conceptual Requirements for Real Number Types] + +The functions, and statistical distributions in this library can be used with +any type /RealType/ that meets the conceptual requirements given below. All +the built in floating point types will meet these requirements. +User defined types that meet the requirements can also be used. For example, +with [link math_toolkit.using_udt.use_ntl a thin wrapper class] one of the types +provided with [@http://shoup.net/ntl/ NTL (RR)] can be used. Submissions +of binding to other extended precision types would also be most welcome! + +The guiding principal behind these requirements, is that a /RealType/ +behaves just like a built in floating point type. + +[h4 Basic Arithmetic Requirements] + +These requirements are common to all of the functions in this library. + +In the following table /r/ is an object of type `RealType`, /cr/ and +/cr2/ are objects +of type `const RealType`, and /ca/ is an object of type `const arithmetic-type` +(arithmetic types include all the built in integers and floating point types). + +[table +[[Expression][Result Type][Notes]] +[[`RealType(cr)`][RealType] + [RealType is copy constructible.]] +[[`RealType(ca)`][RealType] + [RealType is copy constructible from the arithmetic types.]] +[[`r = cr`][RealType&][Assignment operator.]] +[[`r = ca`][RealType&][Assignment operator from the arithmetic types.]] +[[`r += cr`][RealType&][Adds cr to r.]] +[[`r += ca`][RealType&][Adds ar to r.]] +[[`r -= cr`][RealType&][Subtracts cr from r.]] +[[`r -= ca`][RealType&][Subtracts ca from r.]] +[[`r *= cr`][RealType&][Multiplies r by cr.]] +[[`r *= ca`][RealType&][Multiplies r by ca.]] +[[`r /= cr`][RealType&][Divides r by cr.]] +[[`r /= ca`][RealType&][Divides r by ca.]] +[[`-r`][RealType][Unary Negation.]] +[[`+r`][RealType&][Identity Operation.]] +[[`cr + cr2`][RealType][Binary Addition]] +[[`cr + ca`][RealType][Binary Addition]] +[[`ca + cr`][RealType][Binary Addition]] +[[`cr - cr2`][RealType][Binary Subtraction]] +[[`cr - ca`][RealType][Binary Subtraction]] +[[`ca - cr`][RealType][Binary Subtraction]] +[[`cr * cr2`][RealType][Binary Multiplication]] +[[`cr * ca`][RealType][Binary Multiplication]] +[[`ca * cr`][RealType][Binary Multiplication]] +[[`cr / cr2`][RealType][Binary Subtraction]] +[[`cr / ca`][RealType][Binary Subtraction]] +[[`ca / cr`][RealType][Binary Subtraction]] +[[`cr == cr2`][bool][Equality Comparison]] +[[`cr == ca`][bool][Equality Comparison]] +[[`ca == cr`][bool][Equality Comparison]] +[[`cr != cr2`][bool][Inequality Comparison]] +[[`cr != ca`][bool][Inequality Comparison]] +[[`ca != cr`][bool][Inequality Comparison]] +[[`cr <= cr2`][bool][Less than equal to.]] +[[`cr <= ca`][bool][Less than equal to.]] +[[`ca <= cr`][bool][Less than equal to.]] +[[`cr >= cr2`][bool][Greater than equal to.]] +[[`cr >= ca`][bool][Greater than equal to.]] +[[`ca >= cr`][bool][Greater than equal to.]] +[[`cr < cr2`][bool][Less than comparison.]] +[[`cr < ca`][bool][Less than comparison.]] +[[`ca < cr`][bool][Less than comparison.]] +[[`cr > cr2`][bool][Greater than comparison.]] +[[`cr > ca`][bool][Greater than comparison.]] +[[`ca > cr`][bool][Greater than comparison.]] +[[`boost::math::tools::digits()`][int] + [The number of digits in the significand of RealType.]] +[[`boost::math::tools::max_value()`][RealType] + [The largest representable number by type RealType.]] +[[`boost::math::tools::min_value()`][RealType] + [The smallest representable number by type RealType.]] +[[`boost::math::tools::log_max_value()`][RealType] + [The natural logarithm of the largest representable number by type RealType.]] +[[`boost::math::tools::log_min_value()`][RealType] + [The natural logarithm of the smallest representable number by type RealType.]] +[[`boost::math::tools::epsilon()`][RealType] + [The machine epsilon of RealType.]] +] + +Note that: + +# The functions `log_max_value` and `log_min_value` can be +synthesised from the others, and so no explicit specialisation is required. +# The function `epsilon` can be synthesised from the others, so no +explicit specialisation is required provided the precision +of RealType does not vary at runtime (see the header +[@../../../../../boost/math/bindings/rr.hpp boost/math/bindings/rr.hpp] +for an example where the precision does vary at runtime). +# The functions `digits`, `max_value` and `min_value`, all get synthesised +automatically from `std::numeric_limits`. However, if `numeric_limits` +is not specialised for type RealType, then you will get a compiler error +when code tries to use these functions, /unless/ you explicitly specialise them. +For example if the precision of RealType varies at runtime, then +`numeric_limits` support may not be appropriate, see +[@../../../../../boost/math/tools/ntl.hpp boost/math/tools/ntl.hpp] for examples. + +[warning +If `std::numeric_limits<>` is *not specialized* +for type /RealType/ then the default float precision of 6 decimal digits +will be used by other Boost programs including: + +Boost.Test: giving misleading error messages like + +['"difference between {9.79796} and {9.79796} exceeds 5.42101e-19%".] + +Boost.LexicalCast and Boost.Serialization when converting the number +to a string, causing potentially serious loss of accuracy on output. + +Although it might seem obvious that RealType should require `std::numeric_limits` +to be specialized, this is not sensible for +`NTL::RR` and similar classes where the number of digits is a runtime +parameter (where as for `numeric_limits` it has to be fixed at compile time). +] + +[h4 Standard Library Support Requirements] + +Many (though not all) of the functions in this library make calls +to standard library functions, the following table summarises the +requirements. Note that most of the functions in this library +will only call a small subset of the functions listed here, so if in +doubt whether a user defined type has enough standard library +support to be useable the best advise is to try it and see! + +In the following table /r/ is an object of type `RealType`, +/cr1/ and /cr2/ are objects of type `const RealType`, and +/i/ is an object of type `int`. + +[table +[[Expression][Result Type]] +[[`fabs(cr1)`][RealType]] +[[`abs(cr1)`][RealType]] +[[`ceil(cr1)`][RealType]] +[[`floor(cr1)`][RealType]] +[[`exp(cr1)`][RealType]] +[[`pow(cr1, cr2)`][RealType]] +[[`sqrt(cr1)`][RealType]] +[[`log(cr1)`][RealType]] +[[`frexp(cr1, &i)`][RealType]] +[[`ldexp(cr1, i)`][RealType]] +[[`cos(cr1)`][RealType]] +[[`sin(cr1)`][RealType]] +[[`asin(cr1)`][RealType]] +[[`tan(cr1)`][RealType]] +[[`atan(cr1)`][RealType]] +] + +Note that the table above lists only those standard library functions known to +be used (or likely to be used in the near future) by this library. +The following functions: `acos`, `atan2`, `fmod`, `cosh`, `sinh`, `tanh`, `modf` and `log10` +are not currently used, but may be if further special functions are added. + +In addition, for efficient and accurate results, a __lanczos is highly desirable. +You may be able to adapt an existing approximation from +[@../../../../../boost/math/special_functions/lanczos.hpp +boost/math/special_functions/lanczos.hpp] or +[@../../../tools/ntl_rr_lanczos.hpp libs/math/tools/ntl_rr_lanczos.hpp]: +you will need change +static_cast's to lexical_cast's, and the constants to /strings/ +(in order to ensure the coefficients aren't truncated to long double) +and then specialise `lanczos_traits` for type T. Otherwise you may have to hack +[@../../../tools/lanczos_generator.cpp +libs/math/tools/lanczos_generator.cpp] to find a suitable +approximation for your RealType. The code will still compile if you don't do +this, but both accuracy and efficiency will be greatly compromised in any +function that makes use of the gamma\/beta\/erf family of functions. + +[endsect] + +[section:dist_concept Conceptual Requirements for Distribution Types] + +A /DistributionType/ is a type that implements the following conceptual +requirements, and encapsulates a statistical distribution. + +Please note that this documentation should not be used as a substitute +for the +[link math_toolkit.dist.dist_ref reference documentation], and +[link math_toolkit.dist.stat_tut tutorial] of the statistical +distributions. + +In the following table, /d/ is an object of type `DistributionType`, +/cd/ is an object of type `const DistributionType` and /cr/ is an +object of a type convertible to `RealType`. + +[table +[[Expression][Result Type][Notes]] +[[DistributionType::value_type][RealType] + [The real-number type /RealType/ upon which the distribution operates.]] +[[DistributionType::policy_type][RealType] + [The __Policy to use when evaluating functions that depend on this distribution.]] +[[d = cd][Distribution&][Distribution types are assignable.]] +[[Distribution(cd)][Distribution][Distribution types are copy constructible.]] +[[pdf(cd, cr)][RealType][Returns the PDF of the distribution.]] +[[cdf(cd, cr)][RealType][Returns the CDF of the distribution.]] +[[cdf(complement(cd, cr))][RealType] + [Returns the complement of the CDF of the distribution, + the same as: `1-cdf(cd, cr)`]] +[[quantile(cd, cr)][RealType][Returns the quantile of the distribution.]] +[[quantile(complement(cd, cr))][RealType] + [Returns the quantile of the distribution, starting from + the complement of the probability, the same as: `quantile(cd, 1-cr)`]] +[[chf(cd, cr)][RealType][Returns the cumulative hazard function of the distribution.]] +[[hazard(cd, cr)][RealType][Returns the hazard function of the distribution.]] +[[kurtosis(cd)][RealType][Returns the kurtosis of the distribution.]] +[[kurtosis_excess(cd)][RealType][Returns the kurtosis excess of the distribution.]] +[[mean(cd)][RealType][Returns the mean of the distribution.]] +[[mode(cd)][RealType][Returns the mode of the distribution.]] +[[skewness(cd)][RealType][Returns the skewness of the distribution.]] +[[standard_deviation(cd)][RealType][Returns the standard deviation of the distribution.]] +[[variance(cd)][RealType][Returns the variance of the distribution.]] +] + +[endsect] + +[section:archetypes Conceptual Archetypes and Testing] + +There are several concept archetypes available: + +``#include `` + + namespace boost{ + namespace math{ + namespace concepts{ + + class std_real_concept; + + }}} // namespaces + +`std_real_concept` is an archetype for the built-in Real types. + +The main purpose in providing this type is to verify +that standard library functions are found via a using declaration - +bringing those functions into the current scope - and not +just because they happen to be in global scope. + +In order to ensure that a call to say `pow` can be found +either via argument dependent lookup, or failing that then +in the std namespace: all calls to standard library functions +are unqualified, with the std:: versions found via a using declaration +to make them visible in the current scope. Unfortunately it's all +to easy to forget the using declaration, and call the double version of +the function that happens to be in the global scope by mistake. + +For example if the code calls ::pow rather than std::pow, +the code will cleanly compile, but truncation of long doubles to +double will cause a significant loss of precision. +In contrast a template instantiated with std_real_concept will *only* +compile if the all the standard library functions used have +been brought into the current scope with a using declaration. + +There is a test program +[@../../../test/std_real_concept_check.cpp libs/math/test/std_real_concept_check.cpp] +that instantiates every template in this library with type +`std_real_concept` to verify it's usage of standard library functions. + +``#include `` + + namespace boost{ + namespace math{ + namespace concepts{ + + class real_concept; + + }}} // namespaces + +`real_concept` is an archetype for [link math_toolkit.using_udt.concepts +user defined real types], it +declares it's standard library functions in it's own +namespace: these will only be found if they are called unqualified +allowing argument dependent lookup to locate them. In addition +this type is useable at runtime: +this allows code that would not otherwise be exercised by the built-in +floating point types to be tested. There is no std::numeric_limits<> +support for this type, since this is not a conceptual requirement +for [link math_toolkit.using_udt.concepts RealType]'s. + +NTL RR is an example of a type meeting the requirements that this type +models, but note that use of a thin wrapper class is required: refer to +[link math_toolkit.using_udt.use_ntl "Using With NTL - a High-Precision Floating-Point Library"]. + +There is no specific test case for type `real_concept`, instead, since this +type is usable at runtime, each individual test case as well as testing +`float`, `double` and `long double`, also tests `real_concept`. + +``#include `` + + namespace boost{ + namespace math{ + namespace concepts{ + + template + class distribution_archetype; + + template + struct DistributionConcept; + + }}} // namespaces + +The class template `distribution_archetype` is a model of the +[link math_toolkit.using_udt.dist_concept Distribution concept]. + +The class template `DistributionConcept` is a +[@../../../../../libs/concept_check/index.html concept checking class] +for distribution types. + +The test program +[@../../../test/compile_test/distribution_concept_check.cpp distribution_concept_check.cpp] +is responsible for using `DistributionConcept` to verify that all the +distributions in this library conform to the +[link math_toolkit.using_udt.dist_concept Distribution concept]. + +The class template `DistributionConcept` verifies the existence +(but not proper function) of the non-member accessors +required by the [link math_toolkit.using_udt.dist_concept Distribution concept]. +These are checked by calls like + +v = pdf(dist, x); // (Result v is ignored). + +And in addition, those that accept two arguments do the right thing when the +arguments are of different types (the result type is always the same as the +distribution's value_type). (This is implemented by some additional +forwarding-functions in derived_accessors.hpp, so that there is no need for +any code changes. Likewise boilerplate versions of the +hazard\/chf\/coefficient_of_variation functions are implemented in +there too.) + +[endsect][/section:archetypes Conceptual Archetypes and Testing] + + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + + diff --git a/doc/sf_and_dist/contact_info.qbk b/doc/sf_and_dist/contact_info.qbk new file mode 100644 index 000000000..ba8c40e18 --- /dev/null +++ b/doc/sf_and_dist/contact_info.qbk @@ -0,0 +1,25 @@ + +[section:contact Contact Info and Support] + +The main support for this library is via the Boost mailing lists: + +* Use the +[@http://www.boost.org/more/mailing_lists.htm#users boost-user list] +for general support questions. +* Use the +[@http://www.boost.org/more/mailing_lists.htm#main boost-developer list] +for discussion about implementation +and or submission of extensions. + +You can also find JM at john - at - johnmaddock.co.uk and PAB at +pbristow - at - hetp.u-net.com. + +[endsect] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/credits.qbk b/doc/sf_and_dist/credits.qbk new file mode 100644 index 000000000..37661dbcc --- /dev/null +++ b/doc/sf_and_dist/credits.qbk @@ -0,0 +1,48 @@ +[section:credits Credits and Acknowledgements] + +Hubert Holin started the Boost.Math library. The inverse +hyperbolic functions, and the sinus cardinal functions are his. + +John Maddock started this library, the beta, gamma, erf, polynomial, +and factorial functions are his, as is the "Toolkit" section, and many +of the statistical distributions. + +Paul A. Bristow threw down the challenge in +[@http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2004/n1668.pdf +A Proposal to add Mathematical Functions for Statistics to the C++ +Standard Library] to add the key math functions, especially those essential for +statistics. After JM accepted and solved the difficult problems, +not only numerically, but in full C++ template style, PAB +implemented a few of the statistical distributions. PAB also tirelessly +proof-read everything that JM threw at him (so that all +remaining editorial mistakes are his fault). + +Xiaogang Zhang worked on the Bessel functions and elliptic integrals for his +Google Summer of Code project 2006. + +Professor Nico Temme for advice on the inverse incomplete beta function. + +[@http:www.shoup.net Victor Shoup for NTL], +without which it would have much difficult to +produce high accuracy constants, and especially +the tables of accurate values for testing. + +We are grateful to Joel Guzman for helping us stress-test +his +[@http:www.boost.org/tools/quickbook/index.htm Boost.Quickbook] +program used to generate the html and pdf versions +of this document, adding several new features en route. + +We are also indebted to Matthias Schabel for managing the formal Boost-review +of this library, and to all the reviewers - including Guillaume Melquiond, +Arnaldur Gylfason, John Phillips, Stephan Tolksdorf and Jeff Garland +- for their many helpful comments. + +[endsect][/section:roadmap Roadmap] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/digamma.qbk b/doc/sf_and_dist/digamma.qbk new file mode 100644 index 000000000..c460c63b7 --- /dev/null +++ b/doc/sf_and_dist/digamma.qbk @@ -0,0 +1,144 @@ +[section:digamma Digamma] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` digamma(T z); + + template + ``__sf_result`` digamma(T z, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +Returns the digamma or psi function of /x/. Digamma is defined as the logarithmic +derivative of the gamma function: + +[equation digamma1] + +[$../graphs/digamma.png] + +[optional_policy] + +There is no fully generic version of this function: all the implementations +are tuned to specific accuracy levels, the most precise of which delivers +34-digits of precision. + +The return type of this function is computed using the __arg_pomotion_rules: +the result is of type `double` when T is an integer type, and type T otherwise. + +[h4 Accuracy] + +The following table shows the peak errors (in units of epsilon) +found on various platforms with various floating point types. +Unless otherwise specified any floating point type that is narrower +than the one shown will have __zero_error. + +[table +[[Significand Size] [Platform and Compiler] [Random Positive Values] [Values Near The Positive Root] [Values Near Zero] [Negative Values]] +[[53] [Win32 Visual C++ 8] [Peak=0.98 Mean=0.36] [Peak=0.99 Mean=0.5] [Peak=0.95 Mean=0.5] [Peak=214 Mean=16] ] +[[64] [Linux IA32 / GCC] [Peak=1.4 Mean=0.4] [Peak=1.3 Mean=0.45] [Peak=0.98 Mean=0.35] [Peak=180 Mean=13] ] +[[64] [Linux IA64 / GCC] [Peak=0.92 Mean=0.4] [Peak=1.3 Mean=0.45] [Peak=0.98 Mean=0.4] [Peak=180 Mean=13] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=0.9 Mean=0.4] [Peak=1.1 Mean=0.5] [Peak=0.99 Mean=0.4] [Peak=64 Mean=6] ] +] + +As shown above, error rates for positive arguments are generally very low. +For negative arguments there are an infinite number of irrational roots: +relative errors very close to these can be arbitrarily large, although +absolute error will remain very low. + +[h4 Testing] + +There are two sets of tests: spot values are computed using +the online calculator at functions.wolfram.com, while random test values +are generated using the high-precision reference implementation (a +differentiated __lanczos see below). + +[h4 Implementation] + +The implementation is divided up into the following domains: + +For Negative arguments the reflection formula: + + digamma(1-x) = digamma(x) + pi/tan(pi*x); + +is used to make /x/ positive. + +For arguments in the range [0,1] the recurrence relation: + + digamma(x) = digamma(x+1) - 1/x + +is used to shift the evaluation to [1,2]. + +For arguments in the range [1,2] a rational approximation [jm_rationals] is used (see below). + +For arguments in the range [2,BIG] the recurrence relation: + + digamma(x+1) = digamma(x) + 1/x; + +is used to shift the evaluation to the range [1,2]. + +For arguments > BIG the asymptotic expansion: + +[equation digamma2] + +can be used. However, this expansion is divergent after a few terms: +exactly how many terms depends on the size of /x/. Therefore the value +of /BIG/ must be chosen so that the series can be truncated at a term +that is too small to have any effect on the result when evaluated at /BIG/. +Choosing BIG=10 for up to 80-bit reals, and BIG=20 for 128-bit reals allows +the series to truncated after a suitably small number of terms and evaluated +as a polynomial in `1/(x*x)`. + +The rational approximation [jm_rationals] in the range [1,2] is derived as follows. + +First a high precision approximation to digamma was constructed using a 60-term +differentiated __lanczos, the form used is: + +[equation digamma3] + +Where P(x) and Q(x) are the polynomials from the rational form of the Lanczos sum, +and P'(x) and Q'(x) are their first derivatives. The Lanzos part of this +approximation has a theoretical precision of ~100 decimal digits. However, +cancellation in the above sum will reduce that to around `99-(1/y)` digits +if /y/ is the result. This approximation was used to calculate the positive root +of digamma, and was found to agree with the value used by +Cody to 25 digits (See Math. Comp. 27, 123-127 (1973) by Cody, Strecok and Thacher) +and with the value used by Morris to 35 digits (See TOMS Algorithm 708). + +Likewise a few spot tests agreed with values calculated using +functions.wolfram.com to >40 digits. +That's sufficiently precise to insure that the approximation below is +accurate to double precision. Achieving 128-bit long double precision requires that +the location of the root is known to ~70 digits, and it's not clear whether +the value calculated by this method meets that requirement: the difficulty +lies in independently verifying the value obtained. + +The rational approximation [jm_rationals] was optimised for absolute error using the form: + + digamma(x) = (x - X0)(Y + R(x - 1)); + +Where X0 is the positive root of digamma, Y is a constant, and R(x - 1) is the +rational approximation. Note that since X0 is irrational, we need twice as many +digits in X0 as in x in order to avoid cancellation error during the subtraction +(this assumes that /x/ is an exact value, if it's not then all bets are off). That +means that even when x is the value of the root rounded to the nearest +representable value, the result of digamma(x) ['[*will not be zero]]. + + +[endsect][/section:digamma The Digamma Function] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/dist_algorithms.qbk b/doc/sf_and_dist/dist_algorithms.qbk new file mode 100644 index 000000000..94e2e4abc --- /dev/null +++ b/doc/sf_and_dist/dist_algorithms.qbk @@ -0,0 +1,78 @@ +[section:dist_algorithms Distribution Algorithms] + +[h4 Finding the Location and Scale for Normal and similar distributions] + +Two functions aid finding location and scale of random variable z +to give probability p (given a scale or location). +Only applies to distributions like normal, lognormal, extreme value, Cauchy, (and symmetrical triangular), +that have scale and location properties. + +These functions are useful to predict the mean and/or standard deviation that will be needed to meet a specified minimum weight or maximum dose. + +Complement versions are also provided, both with explicit and implicit (default) policy. + + using boost::math::policies::policy; // May be needed by users defining their own policies. + using boost::math::complement; // Will be needed by users who want to use complements. + +[h4 find_location function] + +``#include `` + + namespace boost{ namespace math{ + + template // explicit error handling policy + typename Dist::value_type find_location( // For example, normal mean. + typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p. + // For example, a nominal minimum acceptable z, so that p * 100 % are > z + typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z. + typename Dist::value_type scale, // scale parameter, for example, normal standard deviation. + const ``__Policy``& pol); + + template // with default policy. + typename Dist::value_type find_location( // For example, normal mean. + typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p. + // For example, a nominal minimum acceptable z, so that p * 100 % are > z + typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z. + typename Dist::value_type scale); // scale parameter, for example, normal standard deviation. + + }} // namespaces + +[h4 find_scale function] + +``#include `` + + namespace boost{ namespace math{ + + template + typename Dist::value_type find_scale( // For example, normal mean. + typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p. + // For example, a nominal minimum acceptable weight z, so that p * 100 % are > z + typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z. + typename Dist::value_type location, // location parameter, for example, normal distribution mean. + const ``__Policy``& pol); + + template // with default policy. + typename Dist::value_type find_scale( // For example, normal mean. + typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p. + // For example, a nominal minimum acceptable z, so that p * 100 % are > z + typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z. + typename Dist::value_type location) // location parameter, for example, normal distribution mean. + }} // namespaces + +All argument must be finite, otherwise __domain_error is called. + +Probability arguments must be [0, 1], otherwise __domain_error is called. + +If the choice of arguments would give a negative scale, __domain_error is called, unless the policy is to ignore, when the negative (impossible) value of scale is returned. + +[link math_toolkit.dist.stat_tut.weg.find_eg Find Mean and standard deviation examples] +gives simple examples of use of both find_scale and find_location, and a longer example finding means and standard deviations of normally distributed weights to meet a specification. + +[endsect] [/section:dist_algorithms dist_algorithms] + +[/ dist_algorithms.qbk + Copyright 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/dist_reference.qbk b/doc/sf_and_dist/dist_reference.qbk new file mode 100644 index 000000000..100bafee0 --- /dev/null +++ b/doc/sf_and_dist/dist_reference.qbk @@ -0,0 +1,128 @@ +[section:dist_ref Statistical Distributions Reference] + +[include distributions/non_members.qbk] + +[section:dists Distributions] + +[include distributions/bernoulli.qbk] +[include distributions/beta.qbk] +[include distributions/binomial.qbk] +[include distributions/cauchy.qbk] +[include distributions/chi_squared.qbk] +[include distributions/exponential.qbk] +[include distributions/extreme_value.qbk] +[include distributions/fisher.qbk] +[include distributions/gamma.qbk] +[include distributions/lognormal.qbk] +[include distributions/negative_binomial.qbk] +[include distributions/normal.qbk] +[include distributions/pareto.qbk] +[include distributions/poisson.qbk] +[include distributions/rayleigh.qbk] +[include distributions/students_t.qbk] +[include distributions/triangular.qbk] +[include distributions/weibull.qbk] +[include distributions/uniform.qbk] + +[endsect][/section:dists Distributions] + +[include dist_algorithms.qbk] + +[endsect][/section:dist_ref Statistical Distributions and Functions Reference] + + +[section:future Extras/Future Directions] + +[h4 Adding Additional Location and Scale Parameters] + +In some modelling applications we require a distribution with a specific +location and scale: +often this equates to a specific mean and standard deviation, although for many +distributions the relationship between these properties and the location and +scale parameters are non-trivial. +See [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm] for more +information. + +The obvious way to handle this is via an adapter template: + + template + class scaled_distribution + { + scaled_distribution( + const Dist dist, + typename Dist::value_type location, + typename Dist::value_type scale = 0); + }; + +Which would then have its own set of overloads for the non-member accessor functions. + +[h4 An "any_distribution" class] + +It would be fairly trivial to add a distribution object that virtualises +the actual type of the distribution, and can therefore hold "any" object +that conforms to the conceptual requirements of a distribution: + + template + class any_distribution + { + public: + template + any_distribution(const Distribution& d); + }; + + // Get the cdf of the underlying distribution: + template + RealType cdf(const any_distribution& d, RealType x); + // etc.... + +Such a class would facilitate the writing of non-template code that can +function with any distribution type. It's not clear yet whether there is a +compelling use case though. Possibly tests for goodness of fit might +provide such a use case: this needs more investigation. + +[h4 Higher Level Hypothesis Tests] + +Higher-level tests roughly corresponding to the +[@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/HypothesisTests.html Mathematica Hypothesis Tests] +package could be added reasonably easily, for example: + + template + typename std::iterator_traits::value_type + test_equal_mean( + InputIterator a, + InputIterator b, + typename std::iterator_traits::value_type expected_mean); + +Returns the probability that the data in the sequence [a,b) has the mean +/expected_mean/. + +[h4 Integration With Statistical Accumulators] + +[@http://boost-sandbox.sourceforge.net/libs/accumulators/doc/html/index.html +Eric Niebler's accumulator framework] - also work in progress - provides the means +to calculate various statistical properties from experimental data. There is an +opportunity to integrate the statistical tests with this framework at some later date: + + // Define an accumulator, all required statistics to calculate the test + // are calculated automatically: + accumulator_set > acc(expected_mean=4); + // Pass our data to the accumulator: + acc = std::for_each(mydata.begin(), mydata.end(), acc); + // Extract the result: + double p = probability(acc); + +[endsect][/section:future Extras Future Directions] + +[/ dist_reference.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + + + + + + diff --git a/doc/sf_and_dist/dist_tutorial.qbk b/doc/sf_and_dist/dist_tutorial.qbk new file mode 100644 index 000000000..c687b127e --- /dev/null +++ b/doc/sf_and_dist/dist_tutorial.qbk @@ -0,0 +1,391 @@ +[/ def names end in distrib to avoid clashes] +[def __binomial_distrib [link math_toolkit.dist.dist_ref.dists.binomial_dist Binomial Distribution]] +[def __chi_squared_distrib [link math_toolkit.dist.dist_ref.dists.chi_squared_dist Chi Squared Distribution]] +[def __normal_distrib [link math_toolkit.dist.dist_ref.dists.normal_dist Normal Distribution]] +[def __F_distrib [link math_toolkit.dist.dist_ref.dists.f_dist Fisher F Distribution]] +[def __students_t_distrib [link math_toolkit.dist.dist_ref.dists.students_t_dist Students t Distribution]] + +[def __handbook [@http://www.itl.nist.gov/div898/handbook/ +NIST/SEMATECH e-Handbook of Statistical Methods.]] + +[section:stat_tut Statistical Distributions Tutorial] +This library is centred around statistical distributions, this tutorial +will give you an overview of what they are, how they can be used, and +provides a few worked examples of applying the library to statistical tests. + +[section:overview Overview] + +[h4 Headers and Namespaces] + +All the code in this library is inside namespace boost::math. + +In order to use a distribution /my_distribution/ you will need to include +either the header or +the "include everything" header: . + +For example, to use the Students-t distribution include either + or + + +[h4 Distributions are Objects] + +Each kind of distribution in this library is a class type. + +[link math_toolkit.policy Policies] provide fine-grained control +of the behaviour of these classes, allowing the user to customise +behaviour such as how errors are handled, or how the quantiles +of discrete distribtions behave. + +[tip If you are familiar with statistics libraries using functions, +and 'Distributions as Objects' seem alien, see +[link math_toolkit.dist.stat_tut.weg.nag_library the comparison to +other statistics libraries.] +] [/tip] + +Making distributions class types does two things: + +* It encapsulates the kind of distribution in the C++ type system; +so, for example, Students-t distributions are always a different C++ type from +Chi-Squared distributions. +* The distribution objects store any parameters associated with the +distribution: for example, the Students-t distribution has a +['degrees of freedom] parameter that controls the shape of the distribution. +This ['degrees of freedom] parameter has to be provided +to the Students-t object when it is constructed. + +Although the distribution classes in this library are templates, there +are typedefs on type /double/ that mostly take the usual name of the +distribution +(except where there is a clash with a function of the same name: beta and gamma, +in which case using the default template arguments - `RealType = double` - +is nearly as convenient). +Probably 95% of uses are covered by these typedefs: + + using namespace boost::math; + + // Construct a students_t distribution with 4 degrees of freedom: + students_t d1(4); + + // Construct a double-precision beta distribution + // with parameters a = 10, b = 20 + beta_distribution<> d2(10, 20); // Note: _distribution<> suffix ! + +If you need to use the distributions with a type other than `double`, +then you can instantiate the template directly: the names of the +templates are the same as the `double` typedef but with `_distribution` +appended, for example: __students_t_distrib or __binomial_distrib: + + // Construct a students_t distribution, of float type, + // with 4 degrees of freedom: + students_t_distribution d3(4); + + // Construct a binomial distribution, of long double type, + // with probability of success 0.3 + // and 20 trials in total: + binomial_distribution d4(20, 0.3); + +The parameters passed to the distributions can be accessed via getter member +functions: + + d1.degrees_of_freedom(); // returns 4.0 + +This is all well and good, but not very useful so far. What we often want +is to be able to calculate the /cumulative distribution functions/ and +/quantiles/ etc for these distributions. + +[h4 Generic operations common to all distributions are non-member functions] + +Want to calculate the PDF (Probability Density Function) of a distribution? +No problem, just use: + + pdf(my_dist, x); // Returns PDF (density) at point x of distribution my_dist. + +Or how about the CDF (Cumulative Distribution Function): + + cdf(my_dist, x); // Returns CDF (integral from -infinity to point x) + // of distribution my_dist. + +And quantiles are just the same: + + quantile(my_dist, p); // Returns the value of the random variable x + // such that cdf(my_dist, x) == p. + +If you're wondering why these aren't member functions, it's to +make the library more easily extensible: if you want to add additional +generic operations - let's say the /n'th moment/ - then all you have to +do is add the appropriate non-member functions, overloaded for each +implemented distribution type. + +[tip + +[*Random numbers that approximate Quantiles of Distributions] + +If you want random numbers that are distributed in a specific way, +for example in a uniform, normal or triangular, +see [@http://www.boost.org/libs/random/ Boost.Random]. + +Whilst in principal there's nothing to prevent you from using the +quantile function to convert a uniformly distributed random +number to another distribution, in practice there are much more +efficient algorithms available that are specific to random number generation. +] [/tip Random numbers that approximate Quantiles of Distributions] + +For example, the binomial distribution has two parameters: +n (the number of trials) and p (the probability of success on one trial). + +The `binomial_distribution` constructor therefore has two parameters: + +`binomial_distribution(RealType n, RealType p);` + +For this distribution the random variate is k: the number of successes observed. +The probability density\/mass function (pdf) is therefore written as ['f(k; n, p)]. + +[note + +[*Random Variates and Distribution Parameters] + +[@http://en.wikipedia.org/wiki/Random_variate Random variates] +and [@http://en.wikipedia.org/wiki/Parameter distribution parameters] +are conventionally distinguished (for example in Wikipedia and Wolfram MathWorld +by placing a semi-colon (or sometimes vertical bar) +after the random variate (whose value you 'choose'), +to separate the variate from the parameter(s) that defines the shape of the distribution. +] [/tip Random Variates and Distribution Parameters] + +As noted above the non-member function `pdf` has one parameter for the distribution object, +and a second for the random variate. So taking our binomial distribution +example, we would write: + +`pdf(binomial_distribution(n, p), k);` + +The distribution (effectively the random variate) is said to be 'supported' over a range that is +[@http://en.wikipedia.org/wiki/Probability_distribution + "the smallest closed set whose complement has probability zero"]. +MathWorld uses the word 'defined' for this range. +Non-mathematicians might say it means the 'interesting' smallest range +of random variate x that has the cdf going from zero to unity. +Outside are uninteresting zones where the pdf is zero, and the cdf zero or unity. +Mathematically, the functions may make sense with an (+ or -) infinite value, +but except for a few special cases (in the Normal and Cauchy distributions) +this implementation limits random variates to finite values from the `max` +to `min` for the `RealType`. +(See [link math_toolkit.backgrounders.implementation.handling_of_floating_point_infinity +Handling of Floating-Point Infinity] for rationale). + +The range of random variate values that is permitted and supported can be +tested by using two functions `range` and `support`. + +[note + +[*Discrete Probability Distributions] + +Note that the [@http://en.wikipedia.org/wiki/Discrete_probability_distribution +discrete distributions], including the binomial, negative binomial, Poisson & Bernoulli, +are all mathematically defined as discrete functions: +that is to say the functions `cdf` and `pdf` are only defined for integral values +of the random variate. + +However, because the method of calculation often uses continuous functions +it is convenient to treat them as if they were continuous functions, +and permit non-integral values of their parameters. + +Users wanting to enforce a strict mathematical model may use `floor` +or `ceil` functions on the random variate prior to calling the distribution +function. + +The quantile functions for these distributions are hard to specify +in a manner that will satisfy everyone all of the time. The default +behaviour is to return an integer result, that has been rounded +/outwards/: that is to say, lower quantiles - where the probablity +is less than 0.5 are rounded down, while upper quantiles - where +the probability is greater than 0.5 - are rounded up. This behaviour +ensures that if an X% quantile is requested, then /at least/ the requested +coverage will be present in the central region, and /no more than/ +the requested coverage will be present in the tails. + +This behaviour can be changed so that the quantile functions are rounded +differently, or return a real-valued result using +[link math_toolkit.policy.pol_overview Policies]. It is strongly +recommended that you read the tutorial +[link math_toolkit.policy.pol_tutorial.understand_dis_quant +Understanding Quantiles of Discrete Distributions] before +using the quantile function on a discrete distribtion. The +[link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs] +describe how to change the rounding policy +for these distributions. + +For similar reasons continuous distributions with parameters like +"degrees of freedom" +that might appear to be integral, are treated as real values +(and are promoted from integer to floating-point if necessary). +In this case however, there are a small number of situations where non-integral +degrees of freedom do have a genuine meaning. +] + +[#complements] +[h4 Complements are supported too] + +Often you don't want the value of the CDF, but its complement, which is +to say `1-p` rather than `p`. You could calculate the CDF and subtract +it from `1`, but if `p` is very close to `1` then cancellation error +will cause you to lose significant digits. In extreme cases, `p` may +actually be equal to `1`, even though the true value of the complement is non-zero. + +[link why_complements See also ['"Why complements?"]] + +In this library, whenever you want to receive a complement, just wrap +all the function arguments in a call to `complement(...)`, for example: + + students_t dist(5); + cout << "CDF at t = 1 is " << cdf(dist, 1.0) << endl; + cout << "Complement of CDF at t = 1 is " << cdf(complement(dist, 1.0)) << endl; + +But wait, now that we have a complement, we have to be able to use it as well. +Any function that accepts a probability as an argument can also accept a complement +by wrapping all of its arguments in a call to `complement(...)`, for example: + + students_t dist(5); + + for(double i = 10; i < 1e10; i *= 10) + { + // Calculate the quantile for a 1 in i chance: + double t = quantile(complement(dist, 1/i)); + // Print it out: + cout << "Quantile of students-t with 5 degrees of freedom\n" + "for a 1 in " << i << " chance is " << t << endl; + } + +[tip + +[*Critical values are just quantiles] + +Some texts talk about quantiles, others about critical values, the basic rule is: + +['Lower critical values] are the same as the quantile. + +['Upper critical values] are the same as the quantile from the complement +of the probability. + +For example, suppose we have a Bernoulli process, giving rise to a binomial +distribution with success ratio 0.1 and 100 trials in total. The +['lower critical value] for a probability of 0.05 is given by: + +`quantile(binomial(100, 0.1), 0.05)` + +and the ['upper critical value] is given by: + +`quantile(complement(binomial(100, 0.1), 0.05))` + +which return 4.82 and 14.63 respectively. +] + +[#why_complements] +[tip + +[*Why bother with complements anyway?] + +It's very tempting to dispense with complements, and simply subtract +the probability from 1 when required. However, consider what happens when +the probability is very close to 1: let's say the probability expressed at +float precision is `0.999999940f`, then `1 - 0.999999940f = 5.96046448e-008`, +but the result is actually accurate to just ['one single bit]: the only +bit that didn't cancel out! + +Or to look at this another way: consider that we want the risk of falsely +rejecting the null-hypothesis in the Student's t test to be 1 in 1 billion, +for a sample size of 10,000. +This gives a probability of 1 - 10[super -9], which is exactly 1 when +calculated at float precision. In this case calculating the quantile from +the complement neatly solves the problem, so for example: + +`quantile(complement(students_t(10000), 1e-9))` + +returns the expected t-statistic `6.00336`, where as: + +`quantile(students_t(10000), 1-1e-9f)` + +raises an overflow error, since it is the same as: + +`quantile(students_t(10000), 1)` + +Which has no finite result. +] + +[h4 Parameters can be calculated] + +Sometimes it's the parameters that define the distribution that you +need to find. Suppose, for example, you have conducted a Students-t test +for equal means and the result is borderline. Maybe your two samples +differ from each other, or maybe they don't; based on the result +of the test you can't be sure. A legitimate question to ask then is +"How many more measurements would I have to take before I would get +an X% probability that the difference is real?" Parameter finders +can answer questions like this, and are necessarily different for +each distribution. They are implemented as static member functions +of the distributions, for example: + + students_t::find_degrees_of_freedom( + 1.3, // difference from true mean to detect + 0.05, // maximum risk of falsely rejecting the null-hypothesis. + 0.1, // maximum risk of falsely failing to reject the null-hypothesis. + 0.13); // sample standard deviation + +Returns the number of degrees of freedom required to obtain a 95% +probability that the observed differences in means is not down to +chance alone. In the case that a borderline Students-t test result +was previously obtained, this can be used to estimate how large the sample size +would have to become before the observed difference was considered +significant. It assumes, of course, that the sample mean and standard +deviation are invariant with sample size. + +[h4 Summary] + +* Distributions are objects, which are constructed from whatever +parameters the distribution may have. +* Member functions allow you to retrieve the parameters of a distribution. +* Generic non-member functions provide access to the properties that +are common to all the distributions (PDF, CDF, quantile etc). +* Complements of probabilities are calculated by wrapping the function's +arguments in a call to `complement(...)`. +* Functions that accept a probability can accept a complement of the +probability as well, by wrapping the function's +arguments in a call to `complement(...)`. +* Static member functions allow the parameters of a distribution +to be found from other information. + +Now that you have the basics, the next section looks at some worked examples. + +[endsect] [/section:overview Overview] + +[section:weg Worked Examples] +[include distributions/distribution_construction.qbk] +[include distributions/students_t_examples.qbk] +[include distributions/chi_squared_examples.qbk] +[include distributions/f_dist_example.qbk] +[include distributions/binomial_example.qbk] +[include distributions/negative_binomial_example.qbk] +[include distributions/normal_example.qbk] +[include distributions/error_handling_example.qbk] +[include distributions/find_location_and_scale.qbk] +[include distributions/nag_library.qbk] +[endsect] [/section:weg Worked Examples] + +[include background.qbk] + +[endsect] [/ section:stat_tut Statistical Distributions Tutorial] + +[/ dist_tutorial.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + + + + + + + + diff --git a/doc/sf_and_dist/distributions/bernoulli.qbk b/doc/sf_and_dist/distributions/bernoulli.qbk new file mode 100644 index 000000000..17200fb41 --- /dev/null +++ b/doc/sf_and_dist/distributions/bernoulli.qbk @@ -0,0 +1,118 @@ +[section:bernoulli_dist Bernoulli Distribution] + +``#include `` + + namespace boost{ namespace math{ + template + class bernoulli_distribution; + + typedef bernoulli_distribution<> bernoulli; + + template + class bernoulli_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + bernoulli_distribution(RealType p); // Constructor. + // Accessor function. + RealType success_fraction() const + // Probability of success (as a fraction). + }; + }} // namespaces + +The Bernoulli distribution is a discrete distribution of the outcome +of a single trial with only two results, 0 (failure) or 1 (success), +with a probability of success p. + +The Bernoulli distribution is the simplest building block +on which other discrete distributions of +sequences of independent Bernoulli trials can be based. + +The Bernoulli is the binomial distribution (k = 1, p) with only one trial. + +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function pdf] +f(0) = 1 - p, f(1) = p. +[@http://en.wikipedia.org/wiki/Cumulative_Distribution_Function Cumulative distribution function] +D(k) = if (k == 0) 1 - p else 1. + +The following graph illustrates how the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function pdf] +varies with the outcome of the single trial: + +[$../graphs/bernoulli_pdf.png] + +and the [@http://en.wikipedia.org/wiki/Cumulative_Distribution_Function Cumulative distribution function] + +[$../graphs/bernoulli_cdf.png] + +[h4 Member Functions] + + bernoulli_distribution(RealType p); + +Constructs a [@http://en.wikipedia.org/wiki/bernoulli_distribution +bernoulli distribution] with success_fraction /p/. + + RealType success_fraction() const + +Returns the /success_fraction/ 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 variable is 0 and 1, +and the useful supported range is only 0 or 1. + +Outside this range, functions are undefined, or may throw domain_error exception +and make an error message available. + +[h4 Accuracy] + +The Bernoulli distribution is implemented with simple arithmetic operators +and so should have errors within an epsilon or two. + +[h4 Implementation] + +In the following table /p/ is the probability of success and /q = 1-p/. +/k/ is the random variate, either 0 or 1. + +[note The Bernoulli distribution is implemented here as a /strict discrete/ distribution. +If a generalised version, allowing k to be any real, is required then +the binomial distribution with a single trial should be used, for example: + +`binomial_distribution(1, 0.25)` +] + +[table +[[Function][Implementation Notes]] +[[Supported range][{0, 1}]] +[[pdf][Using the relation: pdf = 1 - p for k = 0, else p ]] +[[cdf][Using the relation: cdf = 1 - p for k = 0, else 1]] +[[cdf complement][q = 1 - p]] +[[quantile][if x <= (1-p) 0 else 1]] +[[quantile from the complement][if x <= (1-p) 1 else 0]] +[[mean][p]] +[[variance][p * (1 - p)]] +[[mode][if (p < 0.5) 0 else 1]] +[[skewness][(1 - 2 * p) / sqrt(p * q)]] +[[kurtosis][6 * p * p - 6 * p +1/ p * q]] +[[kurtosis excess][kurtosis -3]] +] + +[h4 References] +* [@http://en.wikipedia.org/wiki/Bernoulli_distribution Wikpedia Bernoulli distribution] +* [@ Weisstein, Eric W. "Bernoulli Distribution." From MathWorld--A Wolfram Web Resource.] + +[endsect][/section:bernoulli_dist bernoulli] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/beta.qbk b/doc/sf_and_dist/distributions/beta.qbk new file mode 100644 index 000000000..6686ea73c --- /dev/null +++ b/doc/sf_and_dist/distributions/beta.qbk @@ -0,0 +1,280 @@ +[section:beta_dist Beta Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class beta_distribution; + + // typedef beta_distribution beta; + // Note that this is deliberately NOT provided, + // to avoid a clash with the function name beta. + + template + class beta_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + // Constructor from two shape parameters, alpha & beta: + beta_distribution(RealType a, RealType b); + + // Parameter accessors: + RealType alpha() const; + RealType beta() const; + + // Parameter estimators of alpha or beta from mean and variance. + static RealType find_alpha( + RealType mean, // Expected value of mean. + RealType variance); // Expected value of variance. + + static RealType find_beta( + RealType mean, // Expected value of mean. + RealType variance); // Expected value of variance. + + // Parameter estimators from from + // either alpha or beta, and x and probability. + + static RealType find_alpha( + RealType beta, // from beta. + RealType x, // x. + RealType probability); // cdf + + static RealType find_beta( + RealType alpha, // alpha. + RealType x, // probability x. + RealType probability); // probability cdf. + }; + + }} // namespaces + +The class type `beta_distribution` represents a +[@http://en.wikipedia.org/wiki/Beta_distribution beta ] +[@http://en.wikipedia.org/wiki/Probability_distribution probability distribution function]. + +The [@http://mathworld.wolfram.com/BetaDistribution.htm beta distribution ] +is used as a [@http://en.wikipedia.org/wiki/Prior_distribution prior distribution] +for binomial proportions in +[@http://mathworld.wolfram.com/BayesianAnalysis.html Bayesian analysis]. + +See also: +[@http://documents.wolfram.com/calculationcenter/v2/Functions/ListsMatrices/Statistics/BetaDistribution.html beta distribution] +and [@http://en.wikipedia.org/wiki/Bayesian_statistics Bayesian statistics]. + +How the beta distribution is used for +[@http://home.uchicago.edu/~grynav/bayes/ABSLec5.ppt +Bayesian analysis of one parameter models] +is discussed by Jeff Grynaviski. + +The [@http://en.wikipedia.org/wiki/Probability_density_function probability density function PDF] +for the [@http://en.wikipedia.org/wiki/Beta_distribution beta distribution] +defined on the interval \[0,1\] is given by: + +f(x;[alpha],[beta]) = x[super[alpha] - 1] (1 - x)[super[beta] -1] / B([alpha], [beta]) + +where B([alpha], [beta]) is the +[@http://en.wikipedia.org/wiki/Beta_function beta function], +implemented in this library as __beta. Division by the beta function +ensures that the pdf is normalized to the range zero to unity. + +The following graph illustrates examples of the pdf for various values +of the shape parameters. Note the [alpha] = [beta] = 2 (blue line) +is dome-shaped, and might be approximated by a symmetrical triangular +distribution. + +[$../graphs/beta_dist.png] + +If [alpha] = [beta] = 1, then it is a __space +[@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 uniform distribution], +equal to unity in the entire interval x = 0 to 1. +If [alpha] __space and [beta] __space are < 1, then the pdf is U-shaped. +If [alpha] != [beta], then the shape is asymmetric +and could be approximated by a triangle +whose apex is away from the centre (where x = half). + +[h4 Member Functions] + +[h5 Constructor] + + beta_distribution(RealType alpha, RealType beta); + +Constructs a beta distribution with shape parameters /alpha/ and /beta/. + +Requires alpha,beta > 0,otherwise __domain_error is called. Note that +technically the beta distribution is defined for alpha,beta >= 0, but +it's not clear whether any program can actually make use of that latitude +or how many of the non-member functions can be usefully defined in that case. +Therefore for now, we regard it as an error if alpha or beta is zero. + +For example: + + beta_distribution<> mybeta(2, 5); + +Constructs a the beta distribution with alpha=2 and beta=5 (shown in yellow +in the graph above). + +[h5 Parameter Accessors] + + RealType alpha() const; + +Returns the parameter /alpha/ from which this distribution was constructed. + + RealType beta() const; + +Returns the parameter /beta/ from which this distribution was constructed. + +So for example: + + beta_distribution<> mybeta(2, 5); + assert(mybeta.alpha() == 2.); // mybeta.alpha() returns 2 + assert(mybeta.beta() == 5.); // mybeta.beta() returns 5 + +[h4 Parameter Estimators] + +Two pairs of parameter estimators are provided. + +One estimates either [alpha] __space or [beta] __space +from presumed-known mean and variance. + +The other pair estimates either [alpha] __space or [beta] __space from +the cdf and x. + +It is also possible to estimate [alpha] __space and [beta] __space from +'known' mode & quantile. For example, calculators are provided by the +[@http://www.ausvet.com.au/pprev/content.php?page=PPscript +Pooled Prevalence Calculator] and +[@http://www.epi.ucdavis.edu/diagnostictests/betabuster.html Beta Buster] +but this is not yet implemented here. + + static RealType find_alpha( + RealType mean, // Expected value of mean. + RealType variance); // Expected value of variance. + +Returns the unique value of [alpha][space] that corresponds to a +beta distribution with mean /mean/ and variance /variance/. + + static RealType find_beta( + RealType mean, // Expected value of mean. + RealType variance); // Expected value of variance. + +Returns the unique value of [beta][space] that corresponds to a +beta distribution with mean /mean/ and variance /variance/. + + static RealType find_alpha( + RealType beta, // from beta. + RealType x, // x. + RealType probability); // probability cdf + +Returns the value of [alpha][space] that gives: +`cdf(beta_distribution(alpha, beta), x) == probability`. + + static RealType find_beta( + RealType alpha, // alpha. + RealType x, // probability x. + RealType probability); // probability cdf. + +Returns the value of [beta][space] that gives: +`cdf(beta_distribution(alpha, beta), x) == probability`. + +[h4 Non-member Accessor Functions] + +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 formulae for calculating these are shown in the table below, and at +[@http://mathworld.wolfram.com/BetaDistribution.html Wolfram Mathworld]. + +[h4 Applications] + +The beta distribution can be used to model events constrained +to take place within an interval defined by a minimum and maximum value: +so it is used in project management systems. + +It is also widely used in [@http://en.wikipedia.org/wiki/Bayesian_inference Bayesian statistical inference]. + +[h4 Related distributions] + +The beta distribution with both [alpha] __space and [beta] = 1 follows a +[@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 uniform distribution]. + +The [@http://en.wikipedia.org/wiki/Triangular_distribution triangular] +is used when less precise information is available. + +The [@http://en.wikipedia.org/wiki/Binomial_distribution binomial distribution] +is closely related when [alpha] __space and [beta] __space are integers. + +With integer values of [alpha] __space and [beta] __space the distribution B(i, j) is +that of the j-th highest of a sample of i + j + 1 independent random variables +uniformly distributed between 0 and 1. +The cumulative probability from 0 to x is thus +the probability that the j-th highest value is less than x. +Or it is the probability that that at least i of the random variables are less than x, +a probability given by summing over the __binomial_distrib +with its p parameter set to x. + +[h4 Accuracy] + +This distribution is implemented using the +[link math_toolkit.special.sf_beta.beta_function beta functions] __beta and +[link math_toolkit.special.sf_beta.ibeta_function incomplete beta functions] __ibeta and __ibetac; +please refer to these functions for information on accuracy. + +[h4 Implementation] + +In the following table /a/ and /b/ are the parameters [alpha][space] and [beta], +/x/ is the random variable, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf] + [f(x;[alpha],[beta]) = x[super[alpha] - 1] (1 - x)[super[beta] -1] / B([alpha], [beta]) + + Implemented using __ibeta_derivative(a, b, x).]] + +[[cdf][Using the incomplete beta function __ibeta(a, b, x)]] +[[cdf complement][__ibetac(a, b, x)]] +[[quantile][Using the inverse incomplete beta function __ibeta_inv(a, b, p)]] +[[quantile from the complement][__ibetac_inv(a, b, q)]] +[[mean][`a/(a+b)`]] +[[variance][`a * b / (a+b)^2 * (a + b + 1)`]] +[[mode][`(a-1) / (a + b - 2)`]] +[[skewness][`2 (b-a) sqrt(a+b+1)/(a+b+2) * sqrt(a * b)`]] +[[kurtosis excess][ [equation beta_dist_kurtosis] ]] +[[kurtosis][`kurtosis + 3`]] +[[parameter estimation][ ]] +[[alpha + + from mean and variance][`mean * (( (mean * (1 - mean)) / variance)- 1)`]] +[[beta + + from mean and variance][`(1 - mean) * (((mean * (1 - mean)) /variance)-1)`]] +[[The member functions `find_alpha` and `find_beta` + + from cdf and probability x + + and *either* `alpha` or `beta`] + [Implemented in terms of the inverse incomplete beta functions + +__ibeta_inva, and __ibeta_invb respectively.]] +[[`find_alpha`][`ibeta_inva(beta, x, probability)`]] +[[`find_beta`][`ibeta_invb(alpha, x, probability)`]] +] + +[h4 References] + +[@http://en.wikipedia.org/wiki/Beta_distribution Wikipedia Beta distribution] + +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda366h.htm NIST Exploratory Data Analysis] + +[@http://mathworld.wolfram.com/BetaDistribution.html Wolfram MathWorld] + +[endsect][/section:beta_dist beta] + +[/ beta.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/distributions/binomial.qbk b/doc/sf_and_dist/distributions/binomial.qbk new file mode 100644 index 000000000..cad52611d --- /dev/null +++ b/doc/sf_and_dist/distributions/binomial.qbk @@ -0,0 +1,404 @@ +[section:binomial_dist Binomial Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class binomial_distribution; + + typedef binomial_distribution<> binomial; + + template + class binomial_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + static const ``['unspecified-type]`` cloppper_pearson_exact_interval; + static const ``['unspecified-type]`` jeffreys_prior_interval; + + // construct: + binomial_distribution(RealType n, RealType p); + + // parameter access:: + RealType success_fraction() const; + RealType trials() const; + + // Bounds on success fraction: + static RealType find_lower_bound_on_p( + RealType trials, + RealType successes, + RealType probability, + ``['unspecified-type]`` method = clopper_pearson_exact_interval); + static RealType find_upper_bound_on_p( + RealType trials, + RealType successes, + RealType probability, + ``['unspecified-type]`` method = clopper_pearson_exact_interval); + + // estimate min/max number of trials: + static RealType find_minimum_number_of_trials( + RealType k, // number of events + RealType p, // success fraction + RealType alpha); // risk level + + static RealType find_maximum_number_of_trials( + RealType k, // number of events + RealType p, // success fraction + RealType alpha); // risk level + }; + + }} // namespaces + +The class type `binomial_distribution` represents a +[@http://mathworld.wolfram.com/BinomialDistribution.html binomial distribution]: +it is used when there are exactly two mutually +exclusive outcomes of a trial. These outcomes are labelled +"success" and "failure". The +[@ binomial distribution] is used to obtain +the probability of observing k successes in N trials, with the +probability of success on a single trial denoted by p. The +binomial distribution assumes that p is fixed for all trials. + +[note The random variable for the binomial distribution is the number of successes, +(the number of trials is a fixed property of the distribution) +whereas for the negative binomial, +the random variable is the number of trials, for a fixed number of successes.] + +The PDF for the binomial distribution is given by: + +[equation binomial_ref2] + +The following two graphs illustrate how the PDF changes depending +upon the distributions parameters, first we'll keep the success +fraction /p/ fixed at 0.5, and vary the sample size: + +[$../graphs/binomial_pdf_1.png] + +Alternatively, we can keep the sample size fixed at N=20 and +vary the success fraction /p/: + +[$../graphs/binomial_pdf_2.png] + +[discrete_quantile_warning Binomial] + +[h4 Member Functions] + +[h5 Construct] + + binomial_distribution(RealType n, RealType p); + +Constructor: /n/ is the total number of trials, /p/ is the +probability of success of a single trial. + +Requires `0 <= p <= 1`, and `n >= 0`, otherwise calls __domain_error. + +[h5 Accessors] + + RealType success_fraction() const; + +Returns the parameter /p/ from which this distribution was constructed. + + RealType trials() const; + +Returns the parameter /n/ from which this distribution was constructed. + +[h5 Lower Bound on the Success Fraction] + + static RealType find_lower_bound_on_p( + RealType trials, + RealType successes, + RealType alpha, + ``['unspecified-type]`` method = clopper_pearson_exact_interval); + +Returns a lower bound on the success fraction: + +[variablelist +[[trials][The total number of trials conducted.]] +[[successes][The number of successes that occurred.]] +[[alpha][The largest acceptable probability that the true value of + the success fraction is [*less than] the value returned.]] +[[method][An optional parameter that specifies the method to be used + to compute the interval (See below).]] +] + +For example, if you observe /k/ successes from /n/ trials the +best estimate for the success fraction is simply ['k/n], but if you +want to be 95% sure that the true value is [*greater than] some value, +['p[sub min]], then: + + p``[sub min]`` = binomial_distribution::find_lower_bound_on_p( + n, k, 0.05); + +[link math_toolkit.dist.stat_tut.weg.binom_eg.binom_conf See worked example.] + +There are currently two possible values available for the /method/ +optional parameter: /clopper_pearson_exact_interval/ +or /jeffreys_prior_interval/. These constants are both members of +class template `binomial_distribution`, so usage is for example: + + p = binomial_distribution::find_lower_bound_on_p( + n, k, 0.05, binomial_distribution::jeffreys_prior_interval); + +The default method if this parameter is not specified is the Clopper Pearson +"exact" interval. This produces an interval that guarantees at least +`100(1-alpha)%` coverage, but which is known to be overly conservative, +sometimes producing intervals with much greater than the requested coverage. + +The alternative calculation method produces a non-informative +Jeffreys Prior interval. It produces `100(1-alpha)%` coverage only +['in the average case], though is typically very close to the requested +coverage level. It is one of the main methods of calculation recommended +in the review by Brown, Cai and DasGupta. + +Please note that the "textbook" calculation method using +a normal approximation (the Wald interval) is deliberately +not provided: it is known to produce consistently poor results, +even when the sample size is surprisingly large. +Refer to Brown, Cai and DasGupta for a full explanation. Many other methods +of calculation are available, and may be more appropriate for specific +situations. Unfortunately there appears to be no consensus amongst +statisticians as to which is "best": refer to the discussion at the end of +Brown, Cai and DasGupta for examples. + +The two methods provided here were chosen principally because they +can be used for both one and two sided intervals. +See also: + +Lawrence D. Brown, T. Tony Cai and Anirban DasGupta (2001), +Interval Estimation for a Binomial Proportion, +Statistical Science, Vol. 16, No. 2, 101-133. + +T. Tony Cai (2005), +One-sided confidence intervals in discrete distributions, +Journal of Statistical Planning and Inference 131, 63-88. + +Agresti, A. and Coull, B. A. (1998). Approximate is better than +"exact" for interval estimation of binomial proportions. Amer. +Statist. 52 119-126. + +Clopper, C. J. and Pearson, E. S. (1934). The use of confidence +or fiducial limits illustrated in the case of the binomial. +Biometrika 26 404-413. + +[h5 Upper Bound on the Success Fraction] + + static RealType find_upper_bound_on_p( + RealType trials, + RealType successes, + RealType alpha, + ``['unspecified-type]`` method = clopper_pearson_exact_interval); + +Returns an upper bound on the success fraction: + +[variablelist +[[trials][The total number of trials conducted.]] +[[successes][The number of successes that occurred.]] +[[alpha][The largest acceptable probability that the true value of + the success fraction is [*greater than] the value returned.]] +[[method][An optional parameter that specifies the method to be used + to compute the interval. Refer to the documentation for + `find_upper_bound_on_p` above for the meaning of the + method options.]] +] + +For example, if you observe /k/ successes from /n/ trials the +best estimate for the success fraction is simply ['k/n], but if you +want to be 95% sure that the true value is [*less than] some value, +['p[sub max]], then: + + p``[sub max]`` = binomial_distribution::find_upper_bound_on_p( + n, k, 0.05); + +[link math_toolkit.dist.stat_tut.weg.binom_eg.binom_conf See worked example.] + +[note +In order to obtain a two sided bound on the success fraction, you +call both `find_lower_bound_on_p` *and* `find_upper_bound_on_p` +each with the same arguments. + +If the desired risk level +that the true success fraction lies outside the bounds is [alpha], +then you pass [alpha]/2 to these functions. + +So for example a two sided 95% confidence interval would be obtained +by passing [alpha] = 0.025 to each of the functions. + +[link math_toolkit.dist.stat_tut.weg.binom_eg.binom_conf See worked example.] +] + + +[h5 Estimating the Number of Trials Required for a Certain Number of Successes] + + static RealType find_minimum_number_of_trials( + RealType k, // number of events + RealType p, // success fraction + RealType alpha); // probability threshold + +This function estimates the minimum number of trials required to ensure that +more than k events is observed with a level of risk /alpha/ that k or +fewer events occur. + +[variablelist +[[k][The number of success observed.]] +[[p][The probability of success for each trial.]] +[[alpha][The maximum acceptable probability that k events or fewer will be observed.]] +] + +For example: + + binomial_distribution::find_number_of_trials(10, 0.5, 0.05); + +Returns the smallest number of trials we must conduct to be 95% sure +of seeing 10 events that occur with frequency one half. + +[h5 Estimating the Maximum Number of Trials to Ensure no more than a Certain Number of Successes] + + static RealType find_maximum_number_of_trials( + RealType k, // number of events + RealType p, // success fraction + RealType alpha); // probability threshold + +This function estimates the maximum number of trials we can conduct +to ensure that k successes or fewer are observed, with a risk /alpha/ +that more than k occur. + +[variablelist +[[k][The number of success observed.]] +[[p][The probability of success for each trial.]] +[[alpha][The maximum acceptable probability that more than k events will be observed.]] +] + +For example: + + binomial_distribution::find_maximum_number_of_trials(0, 1e-6, 0.05); + +Returns the largest number of trials we can conduct and still be 95% certain +of not observing any events that occur with one in a million frequency. +This is typically used in failure analysis. + +[link math_toolkit.dist.stat_tut.weg.binom_eg.binom_size_eg See Worked Example.] + +[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 for the random variable /k/ is `0 <= k <= N`, otherwise a +__domain_error is returned. + +It's worth taking a moment to define what these accessors actually mean in +the context of this distribution: + +[table Meaning of the non-member accessors +[[Function][Meaning]] +[[__pdf] + [The probability of obtaining [*exactly k successes] from n trials + with success fraction p. For example: + +`pdf(binomial(n, p), k)`]] +[[__cdf] + [The probability of obtaining [*k successes or fewer] from n trials + with success fraction p. For example: + +`cdf(binomial(n, p), k)`]] +[[__ccdf] + [The probability of obtaining [*more than k successes] from n trials + with success fraction p. For example: + +`cdf(complement(binomial(n, p), k))`]] +[[__quantile] + [The [*greatest] number of successes that may be observed from n trials + with success fraction p, at probability P. Note that the value returned + is a real-number, and not an integer. Depending on the use case you may + want to take either the floor or ceiling of the result. For example: + +`quantile(binomial(n, p), P)`]] +[[__quantile_c] + [The [*smallest] number of successes that may be observed from n trials + with success fraction p, at probability P. Note that the value returned + is a real-number, and not an integer. Depending on the use case you may + want to take either the floor or ceiling of the result. For example: + +`quantile(complement(binomial(n, p), P))``]] +] + +[h4 Examples] + +Various [link math_toolkit.dist.stat_tut.weg.binom_eg worked examples] +are available illustrating the use of the binomial distribution. + +[h4 Accuracy] + +This distribution is implemented using the +incomplete beta functions __ibeta and __ibetac, +please refer to these functions for information on accuracy. + +[h4 Implementation] + +In the following table /p/ is the probability that one trial will +be successful (the success fraction), /n/ is the number of trials, +/k/ is the number of successes, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Implementation is in terms of __ibeta_derivative: if [sub n]C[sub k ] is the binomial + coefficient of a and b, then we have: + +[equation binomial_ref1] + +Which can be evaluated as `ibeta_derivative(k+1, n-k+1, p) / (n+1)` + +The function __ibeta_derivative is used here, since it has already + been optimised for the lowest possible error - indeed this is really + just a thin wrapper around part of the internals of the incomplete + beta function. + +There are also various special cases: refer to the code for details. + ]] +[[cdf][Using the relation: + +`` +p = I[sub 1-p](n - k, k + 1) + = 1 - I[sub p](k + 1, n - k) + = __ibetac(k + 1, n - k, p)`` + +There are also various special cases: refer to the code for details. +]] +[[cdf complement][Using the relation: q = __ibeta(k + 1, n - k, p) + +There are also various special cases: refer to the code for details. ]] +[[quantile][Since the cdf is non-linear in variate /k/ none of the inverse + incomplete beta functions can be used here. Instead the quantile + is found numerically using a derivative free method + ([link math_toolkit.toolkit.internals1.roots2 TOMS Algorithm 748]).]] +[[quantile from the complement][Found numerically as above.]] +[[mean][ `p * n` ]] +[[variance][ `p * n * (1-p)` ]] +[[mode][`floor(p * (n + 1))`]] +[[skewness][`(1 - 2 * p) / sqrt(n * p * (1 - p))`]] +[[kurtosis][`3 - (6 / n) + (1 / (n * p * (1 - p)))`]] +[[kurtosis excess][`(1 - 6 * p * q) / (n * p * q)`]] +[[parameter estimation][The member functions `find_upper_bound_on_p` + `find_lower_bound_on_p` and `find_number_of_trials` are + implemented in terms of the inverse incomplete beta functions + __ibetac_inv, __ibeta_inv, and __ibetac_invb respectively]] +] + +[h4 References] + +* [@http://mathworld.wolfram.com/BinomialDistribution.html Weisstein, Eric W. "Binomial Distribution." From MathWorld--A Wolfram Web Resource]. +* [@http://en.wikipedia.org/wiki/Beta_distribution Wikipedia binomial distribution]. +* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda366i.htm NIST Explorary Data Analysis]. + +[endsect][/section:binomial_dist Binomial] + +[/ binomial.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/distributions/binomial_example.qbk b/doc/sf_and_dist/distributions/binomial_example.qbk new file mode 100644 index 000000000..41a462ab1 --- /dev/null +++ b/doc/sf_and_dist/distributions/binomial_example.qbk @@ -0,0 +1,332 @@ +[section:binom_eg Binomial Distribution Examples] + +See also the reference documentation for the __binomial_distrib. + +[section:binomial_coinflip_example Binomial Coin-Flipping Example] + +[import ../../../example/binomial_coinflip_example.cpp] +[binomial_coinflip_example1] + +See [@../../../example/binomial_coinflip_example.cpp binomial_coinflip_example.cpp] +for full source code, the program output looks like this: + +[binomial_coinflip_example_output] + +[endsect] [/section:binomial_coinflip_example Binomial coinflip example] + +[section:binomial_quiz_example Binomial Quiz Example] + +[import ../../../example/binomial_quiz_example.cpp] +[binomial_quiz_example1] +[binomial_quiz_example2] +[discrete_quantile_real] + +See [@../../../example/binomial_quiz_example.cpp binomial_quiz_example.cpp] +for full source code and output. + +[endsect] [/section:binomial_coinflip_quiz Binomial Coin-Flipping example] + +[section:binom_conf Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution] + +Imagine you have a process that follows a binomial distribution: for each +trial conducted, an event either occurs or does it does not, referred +to as "successes" and "failures". If, by experiment, you want to measure the +frequency with which successes occur, the best estimate is given simply +by /k/ \/ /N/, for /k/ successes out of /N/ trials. However our confidence in that +estimate will be shaped by how many trials were conducted, and how many successes +were observed. The static member functions +`binomial_distribution<>::find_lower_bound_on_p` and +`binomial_distribution<>::find_upper_bound_on_p` allow you to calculate +the confidence intervals for your estimate of the occurrence frequency. + +The sample program [@../../../example/binomial_confidence_limits.cpp +binomial_confidence_limits.cpp] illustrates their use. It begins by defining +a procedure that will print a table of confidence limits for various degrees +of certainty: + + #include + #include + #include + + void confidence_limits_on_frequency(unsigned trials, unsigned successes) + { + // + // trials = Total number of trials. + // successes = Total number of observed successes. + // + // Calculate confidence limits for an observed + // frequency of occurrence that follows a binomial + // distribution. + // + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "___________________________________________\n" + "2-Sided Confidence Limits For Success Ratio\n" + "___________________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of Observations" << "= " << trials << "\n"; + cout << setw(40) << left << "Number of successes" << "= " << successes << "\n"; + cout << setw(40) << left << "Sample frequency of occurrence" << "= " << double(successes) / trials << "\n"; + +The procedure now defines a table of significance levels: these are the +probabilities that the true occurrence frequency lies outside the calculated +interval: + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +Some pretty printing of the table header follows: + + cout << "\n\n" + "_______________________________________________________________________\n" + "Confidence Lower CP Upper CP Lower JP Upper JP\n" + " Value (%) Limit Limit Limit Limit\n" + "_______________________________________________________________________\n"; + + +And now for the important part - the intervals themselves - for each +value of /alpha/, we call `find_lower_bound_on_p` and +`find_lower_upper_on_p` to obtain lower and upper bounds +respectively. Note that since we are calculating a two-sided interval, +we must divide the value of alpha in two. + +Please note that calculating two separate /single sided bounds/, each with risk +level [alpha][space]is not the same thing as calculating a two sided interval. +Had we calculate two single-sided intervals each with a risk +that the true value is outside the interval of [alpha], then: + +* The risk that it is less than the lower bound is [alpha]. + +and + +* The risk that it is greater than the upper bound is also [alpha]. + +So the risk it is outside *upper or lower bound*, is *twice* alpha, and the +probability that it is inside the bounds is therefore not nearly as high as +one might have thought. This is why [alpha]/2 must be used in +the calculations below. + +In contrast, had we been calculating a +single-sided interval, for example: ['"Calculate a lower bound so that we are P% +sure that the true occurrence frequency is greater than some value"] +then we would *not* have divided by two. + +Finally note that `binomial_distribution` provides a choice of two +methods for the calculation, we print out the results from both +methods in this example: + + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // Calculate Clopper Pearson bounds: + double l = binomial_distribution<>::find_lower_bound_on_p( + trials, successes, alpha[i]/2); + double u = binomial_distribution<>::find_upper_bound_on_p( + trials, successes, alpha[i]/2); + // Print Clopper Pearson Limits: + cout << fixed << setprecision(5) << setw(15) << right << l; + cout << fixed << setprecision(5) << setw(15) << right << u; + // Calculate Jeffreys Prior Bounds: + l = binomial_distribution<>::find_lower_bound_on_p( + trials, successes, alpha[i]/2, + binomial_distribution<>::jeffreys_prior_interval); + u = binomial_distribution<>::find_upper_bound_on_p( + trials, successes, alpha[i]/2, + binomial_distribution<>::jeffreys_prior_interval); + // Print Jeffreys Prior Limits: + cout << fixed << setprecision(5) << setw(15) << right << l; + cout << fixed << setprecision(5) << setw(15) << right << u << std::endl; + } + cout << endl; + } + +And that's all there is to it. Let's see some sample output for a 2 in 10 +success ratio, first for 20 trials: + +[pre'''___________________________________________ +2-Sided Confidence Limits For Success Ratio +___________________________________________ + +Number of Observations = 20 +Number of successes = 4 +Sample frequency of occurrence = 0.2 + + +_______________________________________________________________________ +Confidence Lower CP Upper CP Lower JP Upper JP + Value (%) Limit Limit Limit Limit +_______________________________________________________________________ + 50.000 0.12840 0.29588 0.14974 0.26916 + 75.000 0.09775 0.34633 0.11653 0.31861 + 90.000 0.07135 0.40103 0.08734 0.37274 + 95.000 0.05733 0.43661 0.07152 0.40823 + 99.000 0.03576 0.50661 0.04655 0.47859 + 99.900 0.01905 0.58632 0.02634 0.55960 + 99.990 0.01042 0.64997 0.01530 0.62495 + 99.999 0.00577 0.70216 0.00901 0.67897 +'''] + +As you can see, even at the 95% confidence level the bounds are +really quite wide (this example is chosen to be easily compared to the one +in the __handbook +[@http://www.itl.nist.gov/div898/handbook/prc/section2/prc241.htm +here]). Note also that the Clopper-Pearson calculation method (CP above) +produces quite noticeably more pessimistic estimates than the Jeffreys Prior +method (JP above). + + +Compare that with the program output for +2000 trials: + +[pre'''___________________________________________ +2-Sided Confidence Limits For Success Ratio +___________________________________________ + +Number of Observations = 2000 +Number of successes = 400 +Sample frequency of occurrence = 0.2000000 + + +_______________________________________________________________________ +Confidence Lower CP Upper CP Lower JP Upper JP + Value (%) Limit Limit Limit Limit +_______________________________________________________________________ + 50.000 0.19382 0.20638 0.19406 0.20613 + 75.000 0.18965 0.21072 0.18990 0.21047 + 90.000 0.18537 0.21528 0.18561 0.21503 + 95.000 0.18267 0.21821 0.18291 0.21796 + 99.000 0.17745 0.22400 0.17769 0.22374 + 99.900 0.17150 0.23079 0.17173 0.23053 + 99.990 0.16658 0.23657 0.16681 0.23631 + 99.999 0.16233 0.24169 0.16256 0.24143 +'''] + +Now even when the confidence level is very high, the limits are really +quite close to the experimentally calculated value of 0.2. Furthermore +the difference between the two calculation methods is now really quite small. + +[endsect] + +[section:binom_size_eg Estimating Sample Sizes for a Binomial Distribution.] + +Imagine you have a critical component that you know will fail in 1 in +N "uses" (for some suitable definition of "use"). You may want to schedule +routine replacement of the component so that its chance of failure between +routine replacements is less than P%. If the failures follow a binomial +distribution (each time the component is "used" it either fails or does not) +then the static member function `binomial_distibution<>::find_maximum_number_of_trials` +can be used to estimate the maximum number of "uses" of that component for some +acceptable risk level /alpha/. + +The example program +[@../../../example/binomial_sample_sizes.cpp binomial_sample_sizes.cpp] +demonstrates its usage. It centres on a routine that prints out +a table of maximum sample sizes for various probability thresholds: + + void find_max_sample_size( + double p, // success ratio. + unsigned successes) // Total number of observed successes permitted. + { + +The routine then declares a table of probability thresholds: these are the +maximum acceptable probability that /successes/ or fewer events will be +observed. In our example, /successes/ will be always zero, since we want +no component failures, but in other situations non-zero values may well +make sense. + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +Much of the rest of the program is pretty-printing, the important part +is in the calculation of maximum number of permitted trials for each +value of alpha: + + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate trials: + double t = binomial::find_maximum_number_of_trials( + successes, p, alpha[i]); + t = floor(t); + // Print Trials: + cout << fixed << setprecision(5) << setw(15) << right << t << endl; + } + +Note that since we're +calculating the maximum number of trials permitted, we'll err on the safe +side and take the floor of the result. Had we been calculating the +/minimum/ number of trials required to observe a certain number of /successes/ +using `find_minimum_number_of_trials` we would have taken the ceiling instead. + +We'll finish off by looking at some sample output, firstly for +a 1 in 1000 chance of component failure with each use: + +[pre +'''________________________ +Maximum Number of Trials +________________________ + +Success ratio = 0.001 +Maximum Number of "successes" permitted = 0 + + +____________________________ +Confidence Max Number + Value (%) Of Trials +____________________________ + 50.000 692 + 75.000 287 + 90.000 105 + 95.000 51 + 99.000 10 + 99.900 0 + 99.990 0 + 99.999 0''' +] + +So 51 "uses" of the component would yield a 95% chance that no +component failures would be observed. + +Compare that with a 1 in 1 million chance of component failure: + +[pre''' +________________________ +Maximum Number of Trials +________________________ + +Success ratio = 0.0000010 +Maximum Number of "successes" permitted = 0 + + +____________________________ +Confidence Max Number + Value (%) Of Trials +____________________________ + 50.000 693146 + 75.000 287681 + 90.000 105360 + 95.000 51293 + 99.000 10050 + 99.900 1000 + 99.990 100 + 99.999 10''' +] + +In this case, even 1000 uses of the component would still yield a +less than 1 in 1000 chance of observing a component failure +(i.e. a 99.9% chance of no failure). + +[endsect] [/section:binom_size_eg Estimating Sample Sizes for a Binomial Distribution.] + +[endsect][/section:binom_eg Binomial Distribution] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/cauchy.qbk b/doc/sf_and_dist/distributions/cauchy.qbk new file mode 100644 index 000000000..34ff68dd1 --- /dev/null +++ b/doc/sf_and_dist/distributions/cauchy.qbk @@ -0,0 +1,154 @@ +[section:cauchy_dist Cauchy-Lorentz Distribution] + +``#include `` + + template + class cauchy_distribution; + + typedef cauchy_distribution<> cauchy; + + template + class cauchy_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + cauchy_distribution(RealType location = 0, RealType scale = 1); + + RealType location()const; + RealType scale()const; + }; + +The [@http://en.wikipedia.org/wiki/Cauchy_distribution Cauchy-Lorentz distribution] +is named after Augustin Cauchy and Hendrik Lorentz. +It is a [@http://en.wikipedia.org/wiki/Probability_distribution continuous probability distribution] +with [@http://en.wikipedia.org/wiki/Probability_distribution probability distribution function PDF] +given by: + +[equation cauchy_ref1] + +The location parameter x[sub 0][space] is the location of the +peak of the distribution (the mode of the distribution), +while the scale parameter [gamma][space] specifies half the width +of the PDF at half the maximum height. If the location is +zero, and the scale 1, then the result is a standard Cauchy +distribution. + +The distribution is important in physics as it is the solution +to the differential equation describing forced resonance, +while in spectroscopy it is the description of the line shape +of spectral lines. + +The following graph shows how the distributions moves as the +location parameter changes: + +[$../graphs/cauchy1.png] + +While the following graph shows how the shape (scale) parameter alters +the distribution: + +[$../graphs/cauchy2.png] + +[h4 Member Functions] + + cauchy_distribution(RealType location = 0, RealType scale = 1); + +Constructs a Cauchy distribution, with location parameter /location/ +and scale parameter /scale/. When these parameters take their default +values (location = 0, scale = 1) +then the result is a Standard Cauchy Distribution. + +Requires scale > 0, otherwise calls __domain_error. + + RealType location()const; + +Returns the location parameter of the distribution. + + RealType scale()const; + +Returns the scale parameter of the 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. + +Note however that the Cauchy distribution does not have a mean, +standard deviation, etc. See __math_undefined +[/link math_toolkit.policy.pol_ref.assert_undefined mathematically undefined function] +to control whether these should fail to compile with a BOOST_STATIC_ASSERTION_FAILURE, +which is the default. + +Alternately, the functions __mean, __sd, +__variance, __skewness, __kurtosis and __kurtosis_excess will all +return a __domain_error if called. + +The domain of the random variable is \[-[max_value], +[min_value]\]. + +[h4 Accuracy] + +The Cauchy distribution is implemented in terms of the +standard library `tan` and `atan` functions, +and as such should have very low error rates. + +[h4 Implementation] + +[def __x0 x[sub 0 ]] + +In the following table __x0 is the location parameter of the distribution, +[gamma][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 = 1 / ([pi] * [gamma] * (1 + ((x - __x0) / [gamma])[super 2]) ]] +[[cdf and its complement][ +The cdf is normally given by: + +p = 0.5 + atan(x)/[pi] + +But that suffers from cancellation error as x -> -[infin]. +So recall that for `x < 0`: + +atan(x) = -[pi]/2 - atan(1/x) + +Substituting into the above we get: + +p = -atan(1/x) ; x < 0 + +So the procedure is to calculate the cdf for -fabs(x) +using the above formula. Note that to factor in the location and scale +parameters you must substitute (x - __x0) / [gamma][space] for x in the above. + +This procedure yields the smaller of /p/ and /q/, so the result +may need subtracting from 1 depending on whether we want the complement +or not, and whether /x/ is less than __x0 or not. +]] +[[quantile][The same procedure is used irrespective of whether we're starting + from the probability or it's complement. First the argument /p/ is + reduced to the range \[-0.5, 0.5\], then the relation + +x = __x0 [plusminus] [gamma][space] / tan([pi] * p) + +is used to obtain the result. Whether we're adding + or subtracting from __x0 is determined by whether we're + starting from the complement or not.]] +[[mode][The location parameter.]] +] + +[h4 References] + +* [@http://en.wikipedia.org/wiki/Cauchy_distribution Cauchy-Lorentz distribution] +* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3663.htm NIST Exploratory Data Analysis] +* [@http://mathworld.wolfram.com/CauchyDistribution.html Weisstein, Eric W. "Cauchy Distribution." From MathWorld--A Wolfram Web Resource.] + +[endsect][/section:cauchy_dist Cauchi] + +[/ cauchy.qbk + Copyright 2006, 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/distributions/chi_squared.qbk b/doc/sf_and_dist/distributions/chi_squared.qbk new file mode 100644 index 000000000..c4ff4c278 --- /dev/null +++ b/doc/sf_and_dist/distributions/chi_squared.qbk @@ -0,0 +1,156 @@ +[section:chi_squared_dist Chi Squared Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class chi_squared_distribution; + + typedef chi_squared_distribution<> chi_squared; + + template + class chi_squared_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + // Constructor: + chi_squared_distribution(RealType i); + + // Accessor to parameter: + RealType degrees_of_freedom()const; + + // Parameter estimation: + static RealType find_degrees_of_freedom( + RealType difference_from_mean, + RealType alpha, + RealType beta, + RealType sd, + RealType hint = 100); + }; + + }} // namespaces + +The Chi-Squared distribution is one of the most widely used distributions +in statistical tests. If [chi][sub i][space] are [nu][space] +independent, normally distributed +random variables with means [mu][sub i][space] and variances [sigma][sub i][super 2], +then the random variable: + +[equation chi_squ_ref1] + +is distributed according to the Chi-Squared distribution. + +The Chi-Squared distribution is a special case of the gamma distribution +and has a single parameter [nu][space] that specifies the number of degrees of +freedom. The following graph illustrates how the distribution changes +for different values of [nu]: + +[$../graphs/chi_square.png] + +[h4 Member Functions] + + chi_squared_distribution(RealType v); + +Constructs a Chi-Squared distribution with /v/ degrees of freedom. + +Requires v > 0, otherwise calls __domain_error. + + RealType degrees_of_freedom()const; + +Returns the parameter /v/ from which this object was constructed. + + static RealType find_degrees_of_freedom( + RealType difference_from_variance, + RealType alpha, + RealType beta, + RealType variance, + RealType hint = 100); + +Estimates the sample size required to detect a difference from a nominal +variance in a Chi-Squared test for equal standard deviations. + +[variablelist +[[difference_from_variance][The difference from the assumed nominal variance + that is to be detected: Note that the sign of this value is critical, see below.]] +[[alpha][The maximum acceptable risk of rejecting the null hypothesis when it is + in fact true.]] +[[beta][The maximum acceptable risk of falsely failing to reject the null hypothesis.]] +[[variance][The nominal variance being tested against.]] +[[hint][An optional hint on where to start looking for a result: the current sample + size would be a good choice.]] +] + +Note that this calculation works with /variances/ and not /standard deviations/. + +The sign of the parameter /difference_from_variance/ is important: the Chi +Squared distribution is asymmetric, and the caller must decide in advance +whether they are testing for a variance greater than a nominal value (positive +/difference_from_variance/) or testing for a variance less than a nominal value +(negative /difference_from_variance/). If the latter, then obviously it is +a requirement that `variance + difference_from_variance > 0`, since no sample +can have a negative variance! + +This procedure uses the method in Diamond, W. J. (1989). +Practical Experiment Designs, Van-Nostrand Reinhold, New York. + +See also section on Sample sizes required in +[@http://www.itl.nist.gov/div898/handbook/prc/section2/prc232.htm the NIST Engineering Statistics Handbook, Section 7.2.3.2]. + +[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 variable is \[0, +[infin]\]. + +[h4 Examples] + +Various [link math_toolkit.dist.stat_tut.weg.cs_eg worked examples] +are available illustrating the use of the Chi Squared Distribution. + +[h4 Accuracy] + +The Chi-Squared distribution is implemented in terms of the +[link math_toolkit.special.sf_gamma.igamma incomplete gamma functions]: +please refer to the accuracy data for those functions. + +[h4 Implementation] + +In the following table /v/ is the number of degrees of freedom of the distribution, +/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(v / 2, x / 2) / 2 ]] +[[cdf][Using the relation: p = __gamma_p(v / 2, x / 2) ]] +[[cdf complement][Using the relation: q = __gamma_q(v / 2, x / 2) ]] +[[quantile][Using the relation: x = 2 * __gamma_p_inv(v / 2, p) ]] +[[quantile from the complement][Using the relation: x = 2 * __gamma_q_inv(v / 2, p) ]] +[[mean][v]] +[[variance][2v]] +[[mode][v - 2 (if v >= 2)]] +[[skewness][2 * sqrt(2 / v) == sqrt(8 / v)]] +[[kurtosis][3 + 12 / v]] +[[kurtosis excess][12 / v]] +] + +[h4 References] + +* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3666.htm NIST Exploratory Data Analysis] +* [@http://en.wikipedia.org/wiki/Chi-square_distribution Chi-square distribution] +* [@http://mathworld.wolfram.com/Chi-SquaredDistribution.html Weisstein, Eric W. "Chi-Squared Distribution." From MathWorld--A Wolfram Web Resource.] + + +[endsect][/section:chi_squared_dist Chi Squared] + +[/ chi_squared.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/chi_squared_examples.qbk b/doc/sf_and_dist/distributions/chi_squared_examples.qbk new file mode 100644 index 000000000..cf071c264 --- /dev/null +++ b/doc/sf_and_dist/distributions/chi_squared_examples.qbk @@ -0,0 +1,500 @@ + +[section:cs_eg Chi Squared Distribution Examples] + +[section:chi_sq_intervals Confidence Intervals on the Standard Deviation] + +Once you have calculated the standard deviation for your data, a legitimate +question to ask is "How reliable is the calculated standard deviation?". +For this situation the Chi Squared distribution can be used to calculate +confidence intervals for the standard deviation. + +The full example code & sample output is in +[@../../../example/chi_square_std_dev_test.cpp chi_square_std_deviation_test.cpp]. + +We'll begin by defining the procedure that will calculate and print out the +confidence intervals: + + void confidence_limits_on_std_deviation( + double Sd, // Sample Standard Deviation + unsigned N) // Sample size + { + +We'll begin by printing out some general information: + + cout << + "________________________________________________\n" + "2-Sided Confidence Limits For Standard Deviation\n" + "________________________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of Observations" << "= " << N << "\n"; + cout << setw(40) << left << "Standard Deviation" << "= " << Sd << "\n"; + +and then define a table of significance levels for which we'll calculate +intervals: + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +The distribution we'll need to calculate the confidence intervals is a +Chi Squared distribution, with N-1 degrees of freedom: + + chi_squared dist(N - 1); + +For each value of alpha, the formula for the confidence interval is given by: + +[equation chi_squ_tut1] + +Where [equation chi_squ_tut2] is the upper critical value, and +[equation chi_squ_tut3] is the lower critical value of the +Chi Squared distribution. + +In code we begin by printing out a table header: + + cout << "\n\n" + "_____________________________________________\n" + "Confidence Lower Upper\n" + " Value (%) Limit Limit\n" + "_____________________________________________\n"; + +and then loop over the values of alpha and calculate the intervals +for each: remember that the lower critical value is the same as the +quantile, and the upper critical value is the same as the quantile +from the complement of the probability: + + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // Calculate limits: + double lower_limit = sqrt((N - 1) * Sd * Sd / quantile(complement(dist, alpha[i] / 2))); + double upper_limit = sqrt((N - 1) * Sd * Sd / quantile(dist, alpha[i] / 2)); + // Print Limits: + cout << fixed << setprecision(5) << setw(15) << right << lower_limit; + cout << fixed << setprecision(5) << setw(15) << right << upper_limit << endl; + } + cout << endl; + +To see some example output we'll use the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm +gear data] from the __handbook. +The data represents measurements of gear diameter from a manufacturing +process. + +[pre''' +________________________________________________ +2-Sided Confidence Limits For Standard Deviation +________________________________________________ + +Number of Observations = 100 +Standard Deviation = 0.006278908 + + +_____________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +_____________________________________________ + 50.000 0.00601 0.00662 + 75.000 0.00582 0.00685 + 90.000 0.00563 0.00712 + 95.000 0.00551 0.00729 + 99.000 0.00530 0.00766 + 99.900 0.00507 0.00812 + 99.990 0.00489 0.00855 + 99.999 0.00474 0.00895 +'''] + +So at the 95% confidence level we conclude that the standard deviation +is between 0.00551 and 0.00729. + +[h4 Confidence intervals as a function of the number of observations] + +Similarly, we can also list the confidence intervals for the standard deviation +for the common confidence levels 95%, for increasing numbers of observations. + +The standard deviation used to compute these values is unity, +so the limits listed are *multipliers* for any particular standard deviation. +For example, given a standard deviation of 0.0062789 as in the example +above; for 100 observations the multiplier is 0.8780 +giving the lower confidence limit of 0.8780 * 0.006728 = 0.00551. + +[pre''' +____________________________________________________ +Confidence level (two-sided) = 0.0500000 +Standard Deviation = 1.0000000 +________________________________________ +Observations Lower Upper + Limit Limit +________________________________________ + 2 0.4461 31.9102 + 3 0.5207 6.2847 + 4 0.5665 3.7285 + 5 0.5991 2.8736 + 6 0.6242 2.4526 + 7 0.6444 2.2021 + 8 0.6612 2.0353 + 9 0.6755 1.9158 + 10 0.6878 1.8256 + 15 0.7321 1.5771 + 20 0.7605 1.4606 + 30 0.7964 1.3443 + 40 0.8192 1.2840 + 50 0.8353 1.2461 + 60 0.8476 1.2197 + 100 0.8780 1.1617 + 120 0.8875 1.1454 + 1000 0.9580 1.0459 + 10000 0.9863 1.0141 + 50000 0.9938 1.0062 + 100000 0.9956 1.0044 + 1000000 0.9986 1.0014 +'''] + +With just 2 observations the limits are from *0.445* up to to *31.9*, +so the standard deviation might be about *half* +the observed value up to *30 times* the observed value! + +Estimating a standard deviation with just a handful of values leaves a very great uncertainty, +especially the upper limit. +Note especially how far the upper limit is skewed from the most likely standard deviation. + +Even for 10 observations, normally considered a reasonable number, +the range is still from 0.69 to 1.8, about a range of 0.7 to 2, +and is still highly skewed with an upper limit *twice* the median. + +When we have 1000 observations, the estimate of the standard deviation is starting to look convincing, +with a range from 0.95 to 1.05 - now near symmetrical, but still about + or - 5%. + +Only when we have 10000 or more repeated observations can we start to be reasonably confident +(provided we are sure that other factors like drift are not creeping in). + +For 10000 observations, the interval is 0.99 to 1.1 - finally a really convincing + or -1% confidence. + +[endsect][/section:chi_sq_intervals Confidence Intervals on the Standard Deviation] + +[section:chi_sq_test Chi-Square Test for the Standard Deviation] + +We use this test to determine whether the standard deviation of a sample +differs from a specified value. Typically this occurs in process change +situations where we wish to compare the standard deviation of a new +process to an established one. + +The code for this example is contained in +[@../../../example/chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp], and +we'll begin by defining the procedure that will print out the test +statistics: + + void chi_squared_test( + double Sd, // Sample std deviation + double D, // True std deviation + unsigned N, // Sample size + double alpha) // Significance level + { + +The procedure begins by printing a summary of the input data: + + using namespace std; + using namespace boost::math; + + // Print header: + cout << + "______________________________________________\n" + "Chi Squared test for sample standard deviation\n" + "______________________________________________\n\n"; + cout << setprecision(5); + cout << setw(55) << left << "Number of Observations" << "= " << N << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << Sd << "\n"; + cout << setw(55) << left << "Expected True Standard Deviation" << "= " << D << "\n\n"; + +The test statistic (T) is simply the ratio of the sample and "true" standard +deviations squared, multiplied by the number of degrees of freedom (the +sample size less one): + + double t_stat = (N - 1) * (Sd / D) * (Sd / D); + cout << setw(55) << left << "Test Statistic" << "= " << t_stat << "\n"; + +The distribution we need to use, is a Chi Squared distribution with N-1 +degrees of freedom: + + chi_squared dist(N - 1); + +The various hypothesis that can be tested are summarised in the following table: + +[table +[[Hypothesis][Test]] +[[The null-hypothesis: there is no difference in standard deviation from the specified value] + [ Reject if T < [chi][super 2][sub (1-alpha/2; N-1)] or T > [chi][super 2][sub (alpha/2; N-1)] ]] +[[The alternative hypothesis: there is a difference in standard deviation from the specified value] + [ Reject if [chi][super 2][sub (1-alpha/2; N-1)] >= T >= [chi][super 2][sub (alpha/2; N-1)] ]] +[[The alternative hypothesis: the standard deviation is less than the specified value] + [ Reject if [chi][super 2][sub (1-alpha; N-1)] <= T ]] +[[The alternative hypothesis: the standard deviation is greater than the specified value] + [ Reject if [chi][super 2][sub (alpha; N-1)] >= T ]] +] + +Where [chi][super 2][sub (alpha; N-1)] is the upper critical value of the +Chi Squared distribution, and [chi][super 2][sub (1-alpha; N-1)] is the +lower critical value. + +Recall that the lower critical value is the same +as the quantile, and the upper critical value is the same as the quantile +from the complement of the probability, that gives us the following code +to calculate the critical values: + + double ucv = quantile(complement(dist, alpha)); + double ucv2 = quantile(complement(dist, alpha / 2)); + double lcv = quantile(dist, alpha); + double lcv2 = quantile(dist, alpha / 2); + cout << setw(55) << left << "Upper Critical Value at alpha: " << "= " + << setprecision(3) << scientific << ucv << "\n"; + cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << ucv2 << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha: " << "= " + << setprecision(3) << scientific << lcv << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << lcv2 << "\n\n"; + +Now that we have the critical values, we can compare these to our test +statistic, and print out the result of each hypothesis and test: + + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + + cout << "Standard Deviation != " << setprecision(3) << fixed << D << " "; + if((ucv2 < t_stat) || (lcv2 > t_stat)) + cout << "ACCEPTED\n"; + else + cout << "REJECTED\n"; + + cout << "Standard Deviation < " << setprecision(3) << fixed << D << " "; + if(lcv > t_stat) + cout << "ACCEPTED\n"; + else + cout << "REJECTED\n"; + + cout << "Standard Deviation > " << setprecision(3) << fixed << D << " "; + if(ucv < t_stat) + cout << "ACCEPTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; + +To see some example output we'll use the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm +gear data] from the __handbook. +The data represents measurements of gear diameter from a manufacturing +process. The program output is deliberately designed to mirror +the DATAPLOT output shown in the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda358.htm +NIST Handbook Example]. + +[pre''' +______________________________________________ +Chi Squared test for sample standard deviation +______________________________________________ + +Number of Observations = 100 +Sample Standard Deviation = 0.00628 +Expected True Standard Deviation = 0.10000 + +Test Statistic = 0.39030 +CDF of test statistic: = 1.438e-099 +Upper Critical Value at alpha: = 1.232e+002 +Upper Critical Value at alpha/2: = 1.284e+002 +Lower Critical Value at alpha: = 7.705e+001 +Lower Critical Value at alpha/2: = 7.336e+001 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion''' +Standard Deviation != 0.100 ACCEPTED +Standard Deviation < 0.100 ACCEPTED +Standard Deviation > 0.100 REJECTED +] + +In this case we are testing whether the sample standard deviation is 0.1, +and the null-hypothesis is rejected, so we conclude that the standard +deviation ['is not] 0.1. + +For an alternative example, consider the +[@http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm +silicon wafer data] again from the __handbook. +In this scenario a supplier of 100 ohm.cm silicon wafers claims +that his fabrication process can produce wafers with sufficient +consistency so that the standard deviation of resistivity for +the lot does not exceed 10 ohm.cm. A sample of N = 10 wafers taken +from the lot has a standard deviation of 13.97 ohm.cm, and the question +we ask ourselves is "Is the suppliers claim correct?". + +The program output now looks like this: + +[pre''' +______________________________________________ +Chi Squared test for sample standard deviation +______________________________________________ + +Number of Observations = 10 +Sample Standard Deviation = 13.97000 +Expected True Standard Deviation = 10.00000 + +Test Statistic = 17.56448 +CDF of test statistic: = 9.594e-001 +Upper Critical Value at alpha: = 1.692e+001 +Upper Critical Value at alpha/2: = 1.902e+001 +Lower Critical Value at alpha: = 3.325e+000 +Lower Critical Value at alpha/2: = 2.700e+000 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion''' +Standard Deviation != 10.000 REJECTED +Standard Deviation < 10.000 REJECTED +Standard Deviation > 10.000 ACCEPTED +] + +In this case, our null-hypothesis is that the standard deviation of +the sample is less than 10: this hypothesis is rejected in the analysis +above, and so we reject the manufacturers claim. + +[endsect][/section:chi_sq_test Chi-Square Test for the Standard Deviation] + +[section:chi_sq_size Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation] + +Suppose we conduct a Chi Squared test for standard deviation and the result +is borderline, a legitimate question to ask is "How large would the sample size +have to be in order to produce a definitive result?" + +The class template [link math_toolkit.dist.dist_ref.dists.chi_squared_dist +chi_squared_distribution] has a static method +`find_degrees_of_freedom` that will calculate this value for +some acceptable risk of type I failure /alpha/, type II failure +/beta/, and difference from the standard deviation /diff/. Please +note that the method used works on variance, and not standard deviation +as is usual for the Chi Squared Test. + +The code for this example is located in [@../../../example/chi_square_std_dev_test.cpp +chi_square_std_dev_test.cpp]. + +We begin by defining a procedure to print out the sample sizes required +for various risk levels: + + void chi_squared_sample_sized( + double diff, // difference from variance to detect + double variance) // true variance + { + +The procedure begins by printing out the input data: + + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "_____________________________________________________________\n" + "Estimated sample sizes required for various confidence levels\n" + "_____________________________________________________________\n\n"; + cout << setprecision(5); + cout << setw(40) << left << "True Variance" << "= " << variance << "\n"; + cout << setw(40) << left << "Difference to detect" << "= " << diff << "\n"; + +And defines a table of significance levels for which we'll calculate sample sizes: + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +For each value of alpha we can calculate two sample sizes: one where the +sample variance is less than the true value by /diff/ and one +where it is greater than the true value by /diff/. Thanks to the +asymmetric nature of the Chi Squared distribution these two values will +not be the same, the difference in their calculation differs only in the +sign of /diff/ that's passed to `find_degrees_of_freedom`. Finally +in this example we'll simply things, and let risk level /beta/ be the +same as /alpha/: + + cout << "\n\n" + "_______________________________________________________________\n" + "Confidence Estimated Estimated\n" + " Value (%) Sample Size Sample Size\n" + " (lower one (upper one\n" + " sided test) sided test)\n" + "_______________________________________________________________\n"; + // + // Now print out the data for the table rows. + // + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate df for a lower single sided test: + double df = chi_squared::find_degrees_of_freedom( + -diff, alpha[i], alpha[i], variance); + // convert to sample size: + double size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size; + // calculate df for an upper single sided test: + df = chi_squared::find_degrees_of_freedom( + diff, alpha[i], alpha[i], variance); + // convert to sample size: + size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size << endl; + } + cout << endl; + +For some example output, consider the +[@http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm +silicon wafer data] from the __handbook. +In this scenario a supplier of 100 ohm.cm silicon wafers claims +that his fabrication process can produce wafers with sufficient +consistency so that the standard deviation of resistivity for +the lot does not exceed 10 ohm.cm. A sample of N = 10 wafers taken +from the lot has a standard deviation of 13.97 ohm.cm, and the question +we ask ourselves is "How large would our sample have to be to reliably +detect this difference?". + +To use our procedure above, we have to convert the +standard deviations to variance (square them), +after which the program output looks like this: + +[pre''' +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ + +True Variance = 100.00000 +Difference to detect = 95.16090 + + +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (lower one (upper one + sided test) sided test) +_______________________________________________________________ + 50.000 2 2 + 75.000 2 10 + 90.000 4 32 + 95.000 5 51 + 99.000 7 99 + 99.900 11 174 + 99.990 15 251 + 99.999 20 330''' +] + +In this case we are interested in a upper single sided test. +So for example, if the maximum acceptable risk of falsely rejecting +the null-hypothesis is 0.05 (Type I error), and the maximum acceptable +risk of failing to reject the null-hypothesis is also 0.05 +(Type II error), we estimate that we would need a sample size of 51. + +[endsect][/section:chi_sq_size Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation] + +[endsect][/section:cs_eg Chi Squared Distribution] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/distribution_construction.qbk b/doc/sf_and_dist/distributions/distribution_construction.qbk new file mode 100644 index 000000000..5aab16543 --- /dev/null +++ b/doc/sf_and_dist/distributions/distribution_construction.qbk @@ -0,0 +1,17 @@ +[section:dist_construct_eg Distribution Construction Example] + +See [@../../../example/distribution_construction.cpp distribution_construction.cpp] for full source code. + +[import ../../../example/distribution_construction.cpp] +[distribution_construction1] +[distribution_construction2] + +[endsect] [/section:dist_construct_eg Distribution Construction Example] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/error_handling_example.qbk b/doc/sf_and_dist/distributions/error_handling_example.qbk new file mode 100644 index 000000000..9cc3b4590 --- /dev/null +++ b/doc/sf_and_dist/distributions/error_handling_example.qbk @@ -0,0 +1,35 @@ +[section:error_eg Error Handling Example] + +See [link math_toolkit.main_overview.error_handling error handling documentation] +for a detailed explanation of the mechanism of handling errors, +including the common "bad" arguments to distributions and functions, +and how to use __policy_section to control it. + +But, by default, *exceptions will be raised*, for domain errors, +pole errors, numeric overflow, and internal evaluation errors. +To avoid the exceptions from getting thrown and instead get +an appropriate value returned, usually a NaN (domain errors +pole errors or internal errors), or infinity (from overflow), +you need to change the policy. + +[import ../../../example/error_handling_example.cpp] + +[error_handling_example] + +[caution If throwing of exceptions is enabled (the default) but +you do *not* have try & catch block, +then the program will terminate with an uncaught exception and probably abort. + +Therefore to get the benefit of helpful error messages, enabling *all exceptions +and using try & catch* is recommended for most applications. + +However, for simplicity, the is not done for most examples.] + +[endsect] [/section:error_eg Error Handling Example] +[/ + Copyright 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/exponential.qbk b/doc/sf_and_dist/distributions/exponential.qbk new file mode 100644 index 000000000..93286dfe9 --- /dev/null +++ b/doc/sf_and_dist/distributions/exponential.qbk @@ -0,0 +1,101 @@ +[section:exp_dist Exponential Distribution] + +``#include `` + + template + class exponential_distribution; + + typedef exponential_distribution<> exponential; + + template + class exponential_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + exponential_distribution(RealType lambda = 1); + + RealType lambda()const; + }; + + +The [@http://en.wikipedia.org/wiki/Exponential_distribution exponential distribution] +is a [@http://en.wikipedia.org/wiki/Probability_distribution continuous probability distribution] +with PDF: + +[equation exponential_dist_ref1] + +It is often used to model the time between independent +events that happen at a constant average rate. + +The following graph shows how the distribution changes for different +values of the rate parameter lambda: + +[$../graphs/exponential_dist.png] + +[h4 Member Functions] + + exponential_distribution(RealType lambda = 1); + +Constructs an +[@http://en.wikipedia.org/wiki/Exponential_distribution Exponential distribution] +with parameter /lambda/. +Lambda is defined as the reciprocal of the scale parameter. + +Requires lambda > 0, otherwise calls __domain_error. + + RealType lambda()const; + +Accessor function returns the lambda parameter of the 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 variable is \[0, +[infin]\]. + +[h4 Accuracy] + +The exponential distribution is implemented in terms of the +standard library functions `exp`, `log`, `log1p` and `expm1` +and as such should have very low error rates. + +[h4 Implementation] + +In the following table [lambda] is the parameter lambda of the distribution, +/x/ is the random variate, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = [lambda] * exp(-[lambda] * x) ]] +[[cdf][Using the relation: p = 1 - exp(-x * [lambda]) = -expm1(-x * [lambda]) ]] +[[cdf complement][Using the relation: q = exp(-x * [lambda]) ]] +[[quantile][Using the relation: x = -log(1-p) / [lambda] = -log1p(-p) / [lambda]]] +[[quantile from the complement][Using the relation: x = -log(q) / [lambda]]] +[[mean][1/[lambda]]] +[[standard deviation][1/[lambda]]] +[[mode][0]] +[[skewness][2]] +[[kurtosis][9]] +[[kurtosis excess][6]] +] + +[h4 references] + +* [@http://mathworld.wolfram.com/ExponentialDistribution.html Weisstein, Eric W. "Exponential Distribution." From MathWorld--A Wolfram Web Resource] +* [@http://documents.wolfram.com/calccenter/Functions/ListsMatrices/Statistics/ExponentialDistribution.html Wolfram Mathematica calculator] +* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3667.htm NIST Exploratory Data Analysis] +* [@http://en.wikipedia.org/wiki/Exponential_distribution Wikipedia Exponential distribution] + +[endsect][/section:exp_dist Exponential] + +[/ exponential.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/extreme_value.qbk b/doc/sf_and_dist/distributions/extreme_value.qbk new file mode 100644 index 000000000..66c184088 --- /dev/null +++ b/doc/sf_and_dist/distributions/extreme_value.qbk @@ -0,0 +1,114 @@ +[section:extreme_dist Extreme Value Distribution] + +``#include `` + + template + class extreme_value_distribution; + + typedef extreme_value_distribution<> extreme_value; + + template + class extreme_value_distribution + { + public: + typedef RealType value_type; + + extreme_value_distribution(RealType location = 0, RealType scale = 1); + + RealType scale()const; + RealType location()const; + }; + +There are various +[@http://mathworld.wolfram.com/ExtremeValueDistribution.html extreme value distributions] +: this implementation represents the maximum case, +and is variously known as a Fisher-Tippett distribution, +a log-Weibull distribution or a Gumbel distribution. + +Extreme value theory is important for assessing risk for highly unusual events, +such as 100-year floods. + +More information can be found on the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda366g.htm NIST], +[@http://en.wikipedia.org/wiki/Extreme_value_distribution Wikipedia], +[@http://mathworld.wolfram.com/ExtremeValueDistribution.html Mathworld], +and [@http://en.wikipedia.org/wiki/Extreme_value_theory Extreme value theory] +websites. + +The distribution has a PDF given by: + +f(x) = (1/scale) e[super -(x-location)/scale] e[super -e[super -(x-location)/scale]] + +Which in the standard case (scale = 1, location = 0) reduces to: + +f(x) = e[super -x]e[super -e[super -x]] + +The following graph illustrates how the PDF varies with the location parameter: + +[$../graphs/extreme_val_dist.png] + +And this graph illustrates how the PDF varies with the shape parameter: + +[$../graphs/extreme_val_dist2.png] + +[h4 Member Functions] + + extreme_value_distribution(RealType location = 0, RealType scale = 1); + +Constructs an Extreme Value distribution with the specified location and scale +parameters. + +Requires `scale > 0`, otherwise calls __domain_error. + + RealType location()const; + +Returns the location parameter of the distribution. + + RealType scale()const; + +Returns the scale parameter of the 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 parameter is \[-[infin], +[infin]\]. + +[h4 Accuracy] + +The extreme value distribution is implemented in terms of the +standard library `exp` and `log` functions and as such should have very low +error rates. + +[h4 Implementation] + +In the following table: +/a/ is the location parameter, /b/ is the scale parameter, +/x/ is the random variate, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = exp((a-x)/b) * exp(-exp((a-x)/b)) / b ]] +[[cdf][Using the relation: p = exp(-exp((a-x)/b)) ]] +[[cdf complement][Using the relation: q = -expm1(-exp((a-x)/b)) ]] +[[quantile][Using the relation: a - log(-log(p)) * b]] +[[quantile from the complement][Using the relation: a - log(-log1p(-q)) * b]] +[[mean][a + [@http://en.wikipedia.org/wiki/Euler-Mascheroni_constant Euler-Mascheroni-constant] * b]] +[[standard deviation][pi * b / sqrt(6)]] +[[mode][The same as the location parameter /a/.]] +[[skewness][12 * sqrt(6) * zeta(3) / pi[super 3] ]] +[[kurtosis][27 / 5]] +[[kurtosis excess][kurtosis - 3 or 12 / 5]] +] + +[endsect][/section:extreme_dist Extreme Value] + +[/ extreme_value.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/f_dist_example.qbk b/doc/sf_and_dist/distributions/f_dist_example.qbk new file mode 100644 index 000000000..4d48cca47 --- /dev/null +++ b/doc/sf_and_dist/distributions/f_dist_example.qbk @@ -0,0 +1,220 @@ +[section:f_eg F Distribution Examples] + +Imagine that you want to compare the standard deviations of two +sample to determine if they differ in any significant way, in this +situation you use the F distribution and perform an F-test. This +situation commonly occurs when conducting a process change comparison: +"is a new process more consistent that the old one?". + +In this example we'll be using the data for ceramic strength from +[@http://www.itl.nist.gov/div898/handbook/eda/section4/eda42a1.htm +http://www.itl.nist.gov/div898/handbook/eda/section4/eda42a1.htm]. +The data for this case study were collected by Said Jahanmir of the +NIST Ceramics Division in 1996 in connection with a NIST/industry +ceramics consortium for strength optimization of ceramic strength. + +The example program is [@../../../example/f_test.cpp f_test.cpp], +program output has been deliberately made as similar as possible +to the DATAPLOT output in the corresponding +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm +NIST EngineeringStatistics Handbook example]. + +We'll begin by defining the procedure to conduct the test: + + void f_test( + double sd1, // Sample 1 std deviation + double sd2, // Sample 2 std deviation + double N1, // Sample 1 size + double N2, // Sample 2 size + double alpha) // Significance level + { + +The procedure begins by printing out a summary of our input data: + + using namespace std; + using namespace boost::math; + + // Print header: + cout << + "____________________________________\n" + "F test for equal standard deviations\n" + "____________________________________\n\n"; + cout << setprecision(5); + cout << "Sample 1:\n"; + cout << setw(55) << left << "Number of Observations" << "= " << N1 << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << sd1 << "\n\n"; + cout << "Sample 2:\n"; + cout << setw(55) << left << "Number of Observations" << "= " << N2 << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << sd2 << "\n\n"; + +The test statistic for an F-test is simply the ratio of the square of +the two standard deviations: + +F = s[sub 1][super 2] / s[sub 2][super 2] + +where s[sub 1] is the standard deviation of the first sample and s[sub 2] +is the standard deviation of the second sample. Or in code: + + double F = (sd1 / sd2); + F *= F; + cout << setw(55) << left << "Test Statistic" << "= " << F << "\n\n"; + +At this point a word of caution: the F distribution is asymmetric, +so we have to be careful how we compute the tests, the following table +summarises the options available: + +[table +[[Hypothesis][Test]] +[[The null-hypothesis: there is no difference in standard deviations (two sided test)] + [Reject if F <= F[sub (1-alpha/2; N1-1, N2-1)] or F >= F[sub (alpha/2; N1-1, N2-1)] ]] +[[The alternative hypothesis: there is a difference in means (two sided test)] + [Reject if F[sub (1-alpha/2; N1-1, N2-1)] <= F <= F[sub (alpha/2; N1-1, N2-1)] ]] +[[The alternative hypothesis: Standard deviation of sample 1 is greater +than that of sample 2] + [Reject if F < F[sub (alpha; N1-1, N2-1)] ]] +[[The alternative hypothesis: Standard deviation of sample 1 is less +than that of sample 2] + [Reject if F > F[sub (1-alpha; N1-1, N2-1)] ]] +] + +Where F[sub (1-alpha; N1-1, N2-1)] is the lower critical value of the F distribution +with degrees of freedom N1-1 and N2-1, and F[sub (alpha; N1-1, N2-1)] is the upper +critical value of the F distribution with degrees of freedom N1-1 and N2-1. + +The upper and lower critical values can be computed using the quantile function: + +F[sub (1-alpha; N1-1, N2-1)] = `quantile(fisher_f(N1-1, N2-1), alpha)` + +F[sub (alpha; N1-1, N2-1)] = `quantile(complement(fisher_f(N1-1, N2-1), alpha))` + +In our example program we need both upper and lower critical values for alpha +and for alpha/2: + + double ucv = quantile(complement(dist, alpha)); + double ucv2 = quantile(complement(dist, alpha / 2)); + double lcv = quantile(dist, alpha); + double lcv2 = quantile(dist, alpha / 2); + cout << setw(55) << left << "Upper Critical Value at alpha: " << "= " + << setprecision(3) << scientific << ucv << "\n"; + cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << ucv2 << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha: " << "= " + << setprecision(3) << scientific << lcv << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << lcv2 << "\n\n"; + +The final step is to perform the comparisons given above, and print +out whether the hypothesis is rejected or not: + + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + + cout << "Standard deviations are unequal (two sided test) "; + if((ucv2 < F) || (lcv2 > F)) + cout << "ACCEPTED\n"; + else + cout << "REJECTED\n"; + + cout << "Standard deviation 1 is less than standard deviation 2 "; + if(lcv > F) + cout << "ACCEPTED\n"; + else + cout << "REJECTED\n"; + + cout << "Standard deviation 1 is greater than standard deviation 2 "; + if(ucv < F) + cout << "ACCEPTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; + +Using the ceramic strength data as an example we get the following +output: + +[pre +'''F test for equal standard deviations +____________________________________ + +Sample 1: +Number of Observations = 240 +Sample Standard Deviation = 65.549 + +Sample 2: +Number of Observations = 240 +Sample Standard Deviation = 61.854 + +Test Statistic = 1.123 + +CDF of test statistic: = 8.148e-001 +Upper Critical Value at alpha: = 1.238e+000 +Upper Critical Value at alpha/2: = 1.289e+000 +Lower Critical Value at alpha: = 8.080e-001 +Lower Critical Value at alpha/2: = 7.756e-001 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Standard deviations are unequal (two sided test) REJECTED +Standard deviation 1 is less than standard deviation 2 REJECTED +Standard deviation 1 is greater than standard deviation 2 REJECTED''' +] + +In this case we are unable to reject the null-hypothesis, and must instead +reject the alternative hypothesis. + +By contrast let's see what happens when we use some different +[@http://www.itl.nist.gov/div898/handbook/prc/section3/prc32.htm +sample data]:, once again from the NIST Engineering Statistics Handbook: +A new procedure to assemble a device is introduced and tested for +possible improvement in time of assembly. The question being addressed +is whether the standard deviation of the new assembly process (sample 2) is +better (i.e., smaller) than the standard deviation for the old assembly +process (sample 1). + +[pre +'''____________________________________ +F test for equal standard deviations +____________________________________ + +Sample 1: +Number of Observations = 11.00000 +Sample Standard Deviation = 4.90820 + +Sample 2: +Number of Observations = 9.00000 +Sample Standard Deviation = 2.58740 + +Test Statistic = 3.59847 + +CDF of test statistic: = 9.589e-001 +Upper Critical Value at alpha: = 3.347e+000 +Upper Critical Value at alpha/2: = 4.295e+000 +Lower Critical Value at alpha: = 3.256e-001 +Lower Critical Value at alpha/2: = 2.594e-001 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Standard deviations are unequal (two sided test) REJECTED +Standard deviation 1 is less than standard deviation 2 REJECTED +Standard deviation 1 is greater than standard deviation 2 ACCEPTED''' +] + +In this case we take our null hypothesis as "standard deviation 1 is +less than or equal to standard deviation 2", since this represents the "no change" +situation. So we want to compare the upper critical value at /alpha/ +(a one sided test) with the test statistic, and since 3.35 < 3.6 this +hypothesis must be rejected. We therefore conclude that there is a change +for the better in our standard deviation. + +[endsect][/section:f_eg F Distribution] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/find_location_and_scale.qbk b/doc/sf_and_dist/distributions/find_location_and_scale.qbk new file mode 100644 index 000000000..c9d87a9e4 --- /dev/null +++ b/doc/sf_and_dist/distributions/find_location_and_scale.qbk @@ -0,0 +1,39 @@ +[section:find_eg Find Location and Scale Examples] + +[section:find_location_eg Find Location (Mean) Example] +[import ../../../example/find_location_example.cpp] +[find_location1] +[find_location2] +See [@../../../example/find_location_example.cpp find_location_example.cpp] +for full source code: the program output looks like this: +[find_location_example_output] +[endsect] [/section:find_location_eg Find Location (Mean) Example] + +[section:find_scale_eg Find Scale (Standard Deviation) Example] +[import ../../../example/find_scale_example.cpp] +[find_scale1] +[find_scale2] +See [@../../../example/find_scale_example.cpp find_scale_example.cpp] +for full source code: the program output looks like this: +[find_scale_example_output] +[endsect] [/section:find_scale_eg Scale (Standard Deviation) Example] +[section:find_mean_and_sd_eg Find mean and standard deviation example] + +[import ../../../example/find_mean_and_sd_normal.cpp] +[normal_std] +[normal_find_location_and_scale_eg] +See [@../../../example/find_mean_and_sd_normal.cpp find_mean_and_sd_normal.cpp] +for full source code & appended program output. +[endsect] [/find_mean_and_sd_eg Find mean and standard deviation example] + +[endsect] [/section:find_eg Find Location and Scale Examples] + + + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/fisher.qbk b/doc/sf_and_dist/distributions/fisher.qbk new file mode 100644 index 000000000..7887e2f94 --- /dev/null +++ b/doc/sf_and_dist/distributions/fisher.qbk @@ -0,0 +1,190 @@ +[section:f_dist F Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class fisher_f_distribution; + + typedef fisher_f_distribution<> fisher_f; + + template + class fisher_f_distribution + { + public: + typedef RealType value_type; + + // Construct: + fisher_f_distribution(const RealType& i, const RealType& j); + + // Accessors: + RealType degrees_of_freedom1()const; + RealType degrees_of_freedom2()const; + }; + + }} //namespaces + +The F distribution is a continuous distribution that arises when testing +whether two samples have the same variance. If [chi][super 2][sub m][space] and +[chi][super 2][sub n][space] are independent variates each distributed as +Chi-Squared with /m/ and /n/ degrees of freedom, then the test statistic: + +F[sub n,m][space] = ([chi][super 2][sub n][space] / n) / ([chi][super 2][sub m][space] / m) + +Is distributed over the range \[0, [infin]\] with an F distribution, and +has the PDF: + +[equation fisher_pdf] + +The following graph illustrates how the PDF varies depending on the +two degrees of freedom parameters. + +[$../graphs/fisher_f.png] + + +[h4 Member Functions] + + fisher_f_distribution(const RealType& df1, const RealType& df2); + +Constructs an F-distribution with numerator degrees of freedom /df1/ +and denominator degrees of freedom /df2/. + +Requires that /df1/ and /df2/ are both greater than zero, otherwise __domain_error +is called. + + RealType degrees_of_freedom1()const; + +Returns the numerator degrees of freedom parameter of the distribution. + + RealType degrees_of_freedom2()const; + +Returns the denominator degrees of freedom parameter of the 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 variable is \[0, +[infin]\]. + +[h4 Examples] + +Various [link math_toolkit.dist.stat_tut.weg.f_eg worked examples] are +available illustrating the use of the F Distribution. + +[h4 Accuracy] + +The normal distribution is implemented in terms of the +[link math_toolkit.special.sf_beta.ibeta_function incomplete beta function] +and it's [link math_toolkit.special.sf_beta.ibeta_inv_function inverses], +refer to those functions for accuracy data. + +[h4 Implementation] + +In the following table /v1/ and /v2/ are the first and second +degrees of freedom parameters of the distribution, +/x/ is the random variate, /p/ is the probability, and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][The usual form of the PDF is given by: + +[equation fisher_pdf] + +However, that form is hard to evaluate directly without incurring problems with +either accuracy or numeric overflow. + +Direct differentiation of the CDF expressed in terms of the incomplete beta function + +led to the following two formulas: + +f[sub v1,v2](x) = y * __ibeta_derivative(v2 \/ 2, v1 \/ 2, v2 \/ (v2 + v1 * x)) + +with y = (v2 * v1) \/ ((v2 + v1 * x) * (v2 + v1 * x)) + +and + +f[sub v1,v2](x) = y * __ibeta_derivative(v1 \/ 2, v2 \/ 2, v1 * x \/ (v2 + v1 * x)) + +with y = (z * v1 - x * v1 * v1) \/ z[super 2] + +and z = v2 + v1 * x + +The first of these is used for v1 * x > v2, otherwise the second is used. + +The aim is to keep the /x/ argument to __ibeta_derivative away from 1 to avoid +rounding error. ]] +[[cdf][Using the relations: + +p = __ibeta(v1 \/ 2, v2 \/ 2, v1 * x \/ (v2 + v1 * x)) + +and + +p = __ibetac(v2 \/ 2, v1 \/ 2, v2 \/ (v2 + v1 * x)) + +The first is used for v1 * x > v2, otherwise the second is used. + +The aim is to keep the /x/ argument to __ibeta well away from 1 to +avoid rounding error. ]] + +[[cdf complement][Using the relations: + +p = __ibetac(v1 \/ 2, v2 \/ 2, v1 * x \/ (v2 + v1 * x)) + +and + +p = __ibeta(v2 \/ 2, v1 \/ 2, v2 \/ (v2 + v1 * x)) + +The first is used for v1 * x < v2, otherwise the second is used. + +The aim is to keep the /x/ argument to __ibeta well away from 1 to +avoid rounding error. ]] +[[quantile][Using the relation: + +x = v2 * a \/ (v1 * b) + +where: + +a = __ibeta_inv(v1 \/ 2, v2 \/ 2, p) + +and + +b = 1 - a + +Quantities /a/ and /b/ are both computed by __ibeta_inv without the +subtraction implied above.]] +[[quantile + +from the complement][Using the relation: + +x = v2 * a \/ (v1 * b) + +where + +a = __ibetac_inv(v1 \/ 2, v2 \/ 2, p) + +and + +b = 1 - a + +Quantities /a/ and /b/ are both computed by __ibetac_inv without the +subtraction implied above.]] +[[mean][v2 \/ (v2 - 2)]] +[[variance][2 * v2[super 2 ] * (v1 + v2 - 2) \/ (v1 * (v2 - 2) * (v2 - 2) * (v2 - 4))]] +[[mode][v2 * (v1 - 2) \/ (v1 * (v2 + 2))]] +[[skewness][2 * (v2 + 2 * v1 - 2) * sqrt((2 * v2 - 8) \/ (v1 * (v2 + v1 - 2))) \/ (v2 - 6)]] +[[kurtosis and kurtosis excess] + [Refer to, [@http://mathworld.wolfram.com/F-Distribution.html + Weisstein, Eric W. "F-Distribution." From MathWorld--A Wolfram Web Resource.] ]] +] + +[endsect][/section:f_dist F distribution] + +[/ fisher.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/distributions/gamma.qbk b/doc/sf_and_dist/distributions/gamma.qbk new file mode 100644 index 000000000..1bc233351 --- /dev/null +++ b/doc/sf_and_dist/distributions/gamma.qbk @@ -0,0 +1,138 @@ +[section:gamma_dist Gamma (and Erlang) Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class gamma_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + gamma_distribution(RealType shape, RealType scale = 1) + + RealType shape()const; + RealType scale()const; + }; + + }} // namespaces + +The gamma distribution is a continuous probability distribution. +When the shape parameter is an integer then it is known as the +Erlang Distribution. It is also closely related to the Poisson +and Chi Squared Distributions. + +When the shape parameter has an integer value, the distribution is the +[@http://en.wikipedia.org/wiki/Erlang_distribution Erlang distribution]. +Since this can be produced by ensuring that the shape parameter has an +integer value > 0, the Erlang distribution is not separately implemented. + +[note +To avoid potential confusion with the gamma functions, this +distribution does not provide the typedef: + +``typedef gamma_distibution gamma;`` + +Instead if you want +a double precision gamma distribution you can use + +``boost::gamma_distribution<>``] + +For shape parameter /k/ and scale parameter [theta][space] it is defined by the +probability density function: + +[equation gamma_dist_ref1] + +Sometimes an alternative formulation is used: given parameters +[alpha][space]= k and [beta][space]= 1 / [theta], then the +distribution can be defined by the PDF: + +[equation gamma_dist_ref2] + +In this form the inverse scale parameter is called a /rate parameter/. + +Both forms are in common usage: this library uses the first definition +throughout. Therefore to construct a Gamma Distribution from a ['rate +parameter], you should pass the reciprocal of the rate as the scale parameter. + +The following two graphs illustrate how the PDF of the gamma distribution +varies as the parameters vary: + +[$../graphs/gamma_dist1.png] + +[$../graphs/gamma_dist2.png] + +The [*Erlang Distribution] is the same as the Gamma, but with the shape parameter +an integer. It is often expressed using a /rate/ rather than a /scale/ as the +second parameter (remember that the rate is the reciprocal of the scale). + +Internally the functions used to implement the Gamma Distribution are +already optimised for small-integer arguments, so in general there should +be no great loss of performance from using a Gamma Distribution rather than +a dedicated Erlang Distribution. + +[h4 Member Functions] + + gamma_distribution(RealType shape, RealType scale = 1); + +Constructs a gamma distribution with shape /shape/ and +scale /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 distribution. + + RealType scale()const; + +Returns the /scale/ 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 variable is \[0,+[infin]\]. + +[h4 Accuracy] + +The lognormal 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. + +[h4 Implementation] + +In the following table /k/ is the shape parameter of the distribution, +[theta][space] is it's 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(k, x / [theta]) / [theta] ]] +[[cdf][Using the relation: p = __gamma_p(k, x / [theta]) ]] +[[cdf complement][Using the relation: q = __gamma_q(k, x / [theta]) ]] +[[quantile][Using the relation: x = [theta][space]* __gamma_p_inv(k, p) ]] +[[quantile from the complement][Using the relation: x = [theta][space]* __gamma_q_inv(k, p) ]] +[[mean][k[theta] ]] +[[variance][k[theta][super 2] ]] +[[mode][(k-1)[theta][space] for ['k>1] otherwise a __domain_error ]] +[[skewness][2 / sqrt(k) ]] +[[kurtosis][3 + 6 / k]] +[[kurtosis excess][6 / k ]] +] + +[endsect][/section:normal_dist Normal] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/lognormal.qbk b/doc/sf_and_dist/distributions/lognormal.qbk new file mode 100644 index 000000000..33ac076d6 --- /dev/null +++ b/doc/sf_and_dist/distributions/lognormal.qbk @@ -0,0 +1,119 @@ +[section:lognormal_dist Log Normal Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class lognormal_distribution; + + typedef lognormal_distribution<> lognormal; + + template + class lognormal_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + // Construct: + lognormal_distribution(RealType location = 0, RealType scale = 1); + // Accessors: + RealType location()const; + RealType scale()const; + }; + + }} // namespaces + +The lognormal distribution is the distribution that arises +when the logarithm of the random variable is normally distributed. +A lognormal distribution results when the variable is the product +of a large number of independent, identically-distributed variables. + +For location and scale parameters /m/ and /s/ it is defined by the +probability density function: + +[equation lognormal_ref] + +The location and scale parameters are equivalent to the mean and +standard deviation of the logarithm of the random variable. + +The following graph illustrates the effect of the location +parameter on the PDF, note that the range of the random +variable remains \[0,+[infin]\] irrespective of the value of the +location parameter: + +[$../graphs/lognormal1.png] + +The next graph illustrates the effect of the scale parameter on the PDF: + +[$../graphs/lognormal2.png] + +[h4 Member Functions] + + lognormal_distribution(RealType location = 0, RealType scale = 1); + +Constructs a lognormal distribution with location /location/ and +scale /scale/. + +The location parameter is the same as the mean of the logarithm of the +random variate. + +The scale parameter is the same as the standard deviation of the +logarithm of the random variate. + +Requires that the scale parameter is greater than zero, otherwise calls +__domain_error. + + RealType location()const; + +Returns the /location/ parameter of this distribution. + + RealType scale()const; + +Returns the /scale/ 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 variable is \[0,+[infin]\]. + +[h4 Accuracy] + +The lognormal distribution is implemented in terms of the +standard library log and exp functions, plus the +[link math_toolkit.special.sf_erf.error_function error function], +and as such should have very low error rates. + +[h4 Implementation] + +In the following table /m/ is the location parameter of the distribution, +/s/ is it's scale parameter, /x/ is the random variate, /p/ is the probability +and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = e[super -(ln(x) - m)[super 2 ] \/ 2s[super 2 ] ] \/ (x * s * sqrt(2pi)) ]] +[[cdf][Using the relation: p = cdf(normal_distribtion(m, s), log(x)) ]] +[[cdf complement][Using the relation: q = cdf(complement(normal_distribtion(m, s), log(x))) ]] +[[quantile][Using the relation: x = exp(quantile(normal_distribtion(m, s), p))]] +[[quantile from the complement][Using the relation: x = exp(quantile(complement(normal_distribtion(m, s), q)))]] +[[mean][e[super m + s[super 2 ] / 2 ] ]] +[[variance][(e[super s[super 2] ] - 1) * e[super 2m + s[super 2 ] ] ]] +[[mode][e[super m + s[super 2 ] ] ]] +[[skewness][sqrt(e[super s[super 2] ] - 1) * (2 + e[super s[super 2] ]) ]] +[[kurtosis][e[super 4s[super 2] ] + 2e[super 3s[super 2] ] + 3e[super 2s[super 2] ] - 3]] +[[kurtosis excess][e[super 4s[super 2] ] + 2e[super 3s[super 2] ] + 3e[super 2s[super 2] ] - 6 ]] +] + +[endsect][/section:normal_dist Normal] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/nag_library.qbk b/doc/sf_and_dist/distributions/nag_library.qbk new file mode 100644 index 000000000..b0377871b --- /dev/null +++ b/doc/sf_and_dist/distributions/nag_library.qbk @@ -0,0 +1,60 @@ +[section:nag_library Comparison with C, R, FORTRAN-style Free Functions] + +You are probably familiar with a statistics library that has free functions, +for example the classic [@http://nag.com/numeric/CL/CLdescription.asp NAG C library] +and matching [@http://nag.com/numeric/FL/FLdescription.asp NAG FORTRAN Library], +[@http://office.microsoft.com/en-us/excel/HP052090051033.aspx Microsoft Excel BINOMDIST(number_s,trials,probability_s,cumulative)], +[@http://www.r-project.org/ R], [@http://www.ptc.com/products/mathcad/mathcad14/mathcad_func_chart.htm MathCAD pbinom] +and many others. + +If so, you may find 'Distributions as Objects' unfamiliar, if not alien. + +However, *do not panic*, both definition and usage are not really very different. + +A very simple example of generating the same values as the +[@http://nag.com/numeric/CL/CLdescription.asp NAG C library] +for the binomial distribution follows. +(If you find slightly different values, the Boost C++ version, using double or better, +is very likely to be the more accurate. +Of course, accuracy is not usually a concern for most applications of this function). + +The [@http://www.nag.co.uk/numeric/cl/manual/pdf/G01/g01bjc.pdf NAG function specification] is + + void nag_binomial_dist(Integer n, double p, Integer k, + double *plek, double *pgtk, double *peqk, NagError *fail) + +and is called + + g01bjc(n, p, k, &plek, &pgtk, &peqk, NAGERR_DEFAULT); + +The equivalent using this Boost C++ library is: + + using namespace boost::math; // Using declaration avoids very long names. + binomial my_dist(4, 0.5); // c.f. NAG n = 4, p = 0.5 + +and values can be output thus: + + cout + << my_dist.trials() << " " // Echo the NAG input n = 4 trials. + << my_dist.success_fraction() << " " // Echo the NAG input p = 0.5 + << cdf(my_dist, 2) << " " // NAG plek with k = 2 + << cdf(complement(my_dist, 2)) << " " // NAG pgtk with k = 2 + << pdf(my_dist, 2) << endl; // NAG peqk with k = 2 + +`cdf(dist, k)` is equivalent to NAG library `plek`, lower tail probability of <= k + +`cdf(complement(dist, k))` is equivalent to NAG library `pgtk`, upper tail probability of > k + +`pdf(dist, k)` is equivalent to NAG library `peqk`, point probability of == k + +See [@../../../example/binomial_example_nag.cpp binomial_example_nag.cpp] for details. + +[endsect] [/section:nag_library Comparison with C, R, FORTRAN-style Free Functions] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/negative_binomial.qbk b/doc/sf_and_dist/distributions/negative_binomial.qbk new file mode 100644 index 000000000..de27bbe7b --- /dev/null +++ b/doc/sf_and_dist/distributions/negative_binomial.qbk @@ -0,0 +1,372 @@ +[section:negative_binomial_dist Negative Binomial Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class negative_binomial_distribution; + + typedef negative_binomial_distribution<> negative_binomial; + + template + class negative_binomial_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + // Constructor from successes and success_fraction: + negative_binomial_distribution(RealType r, RealType p); + + // Parameter accessors: + RealType success_fraction() const; + RealType successes() const; + + // Bounds on success fraction: + static RealType find_lower_bound_on_p( + RealType trials, + RealType successes, + RealType probability); // alpha + static RealType find_upper_bound_on_p( + RealType trials, + RealType successes, + RealType probability); // alpha + + // Estimate min/max number of trials: + static RealType find_minimum_number_of_trials( + RealType k, // Number of failures. + RealType p, // Success fraction. + RealType probability); // Probability threshold alpha. + static RealType find_maximum_number_of_trials( + RealType k, // Number of failures. + RealType p, // Success fraction. + RealType probability); // Probability threshold alpha. + }; + + }} // namespaces + +The class type `negative_binomial_distribution` represents a +[@http://en.wikipedia.org/wiki/Negative_binomial_distribution negative_binomial distribution]: +it is used when there are exactly two mutually exclusive outcomes of a +[@http://en.wikipedia.org/wiki/Bernoulli_trial Bernoulli trial]: +these outcomes are labelled "success" and "failure". + +For k + r Bernoulli trials each with success fraction p, the +negative_binomial distribution gives the probability of observing +k failures and r successes with success on the last trial. +The negative_binomial distribution +assumes that success_fraction p is fixed for all (k + r) trials. + +[note The random variable for the negative binomial distribution is the number of trials, +(the number of successes is a fixed property of the distribution) +whereas for the binomial, +the random variable is the number of successes, for a fixed number of trials.] + + + +It has the PDF: + +[equation neg_binomial_ref] + +The following graph illustrate how the PDF varies as the success fraction +/p/ changes: + +[$../graphs/neg_binomial_pdf1.png] + +Alternatively, this graph shows how the shape of the PDF varies as +the number of successes changes: + +[$../graphs/neg_binomial_pdf2.png] + +[h4 Related Distributions] + +The name negative binomial distribution is reserved by some to the +case where the successes parameter r is an integer. +This integer version is also called the +[@http://mathworld.wolfram.com/PascalDistribution.html Pascal distribution]. + +This implementation uses real numbers for the computation throughout +(because it uses the *real-valued* incomplete beta function family of functions). +This real-valued version is also called the Polya Distribution. + +The Poisson distribution is a generalization of the Pascal distribution, +where the success parameter r is an integer: to obtain the Pascal +distribution you must ensure that an integer value is provided for r, +and take integer values (floor or ceiling) from functions that return +a number of successes. + +For large values of r (successes), the negative binomial distribution +converges to the Poisson distribution. + +The geometric distribution is a special case +where the successes parameter r = 1, +so only a first and only success is required. +geometric(p) = negative_binomial(1, p). + +The Poisson distribution is a special case for large successes + +poisson([lambda]) = lim [sub r [rarr] [infin]] [space] negative_binomial(r, r / ([lambda] + r))) + +[discrete_quantile_warning Negative Binomial] + +[h4 Member Functions] + +[h5 Construct] + + negative_binomial_distribution(RealType r, RealType p); + +Constructor: /r/ is the total number of successes, /p/ is the +probability of success of a single trial. + +Requires: `r > 0` and `0 <= p <= 1`. + +[h5 Accessors] + + RealType success_fraction() const; // successes / trials (0 <= p <= 1) + +Returns the parameter /p/ from which this distribution was constructed. + + RealType successes() const; // required successes (r > 0) + +Returns the parameter /r/ from which this distribution was constructed. + +[h5 Lower Bound on Parameter p] + + static RealType find_lower_bound_on_p( + RealType failures, + RealType successes, + RealType probability) // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence. + +Returns a *lower bound* on the success fraction: + +[variablelist +[[failures][The total number of failures before the r th success.]] +[[successes][The number of successes required.]] +[[alpha][The largest acceptable probability that the true value of + the success fraction is [*less than] the value returned.]] +] + +For example, if you observe /k/ failures and /r/ successes from /n/ = k + r trials +the best estimate for the success fraction is simply ['r/n], but if you +want to be 95% sure that the true value is [*greater than] some value, +['p[sub min]], then: + + p``[sub min]`` = negative_binomial_distribution::find_lower_bound_on_p( + failures, successes, 0.05); + +[link math_toolkit.dist.stat_tut.weg.neg_binom_eg.neg_binom_conf See negative binomial confidence interval example.] + +This function uses the Clopper-Pearson method of computing the lower bound on the +success fraction, whilst many texts refer to this method as giving an "exact" +result in practice it produces an interval that guarantees ['at least] the +coverage required, and may produce pessimistic estimates for some combinations +of /failures/ and /successes/. See: + +[@http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf +Yong Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some Discrete Distributions. +Computational statistics and data analysis, 2005, vol. 48, no3, 605-621]. + +[h5 Upper Bound on Parameter p] + + static RealType find_upper_bound_on_p( + RealType trials, + RealType successes, + RealType alpha); // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence. + +Returns an *upper bound* on the success fraction: + +[variablelist +[[trials][The total number of trials conducted.]] +[[successes][The number of successes that occurred.]] +[[alpha][The largest acceptable probability that the true value of + the success fraction is [*greater than] the value returned.]] +] + +For example, if you observe /k/ successes from /n/ trials the +best estimate for the success fraction is simply ['k/n], but if you +want to be 95% sure that the true value is [*less than] some value, +['p[sub max]], then: + + p``[sub max]`` = negative_binomial_distribution::find_upper_bound_on_p( + r, k, 0.05); + +[link math_toolkit.dist.stat_tut.weg.neg_binom_eg.neg_binom_conf See negative binomial confidence interval example.] + +This function uses the Clopper-Pearson method of computing the lower bound on the +success fraction, whilst many texts refer to this method as giving an "exact" +result in practice it produces an interval that guarantees ['at least] the +coverage required, and may produce pessimistic estimates for some combinations +of /failures/ and /successes/. See: + +[@http://www.ucs.louisiana.edu/~kxk4695/Discrete_new.pdf +Yong Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some Discrete Distributions. +Computational statistics and data analysis, 2005, vol. 48, no3, 605-621]. + +[h5 Estimating Number of Trials to Ensure at Least a Certain Number of Failures] + + static RealType find_minimum_number_of_trials( + RealType k, // number of failures. + RealType p, // success fraction. + RealType alpha); // probability threshold (0.05 equivalent to 95%). + +This functions estimates the number of trials required to achieve a certain +probability that [*more than k failures will be observed]. + +[variablelist +[[k][The target number of failures to be observed.]] +[[p][The probability of ['success] for each trial.]] +[[alpha][The maximum acceptable risk that only k failures or fewer will be observed.]] +] + +For example: + + negative_binomial_distribution::find_minimum_number_of_trials(10, 0.5, 0.05); + +Returns the smallest number of trials we must conduct to be 95% sure +of seeing 10 failures that occur with frequency one half. + +[link math_toolkit.dist.stat_tut.weg.neg_binom_eg.neg_binom_size_eg Worked Example.] + +This function uses numeric inversion of the negative binomial distribution +to obtain the result: another interpretation of the result, is that it finds +the number of trials (success+failures) that will lead to an /alpha/ probability +of observing k failures or fewer. + +[h5 Estimating Number of Trials to Ensure a Maximum Number of Failures or Less] + + static RealType find_maximum_number_of_trials( + RealType k, // number of failures. + RealType p, // success fraction. + RealType alpha); // probability threshold (0.05 equivalent to 95%). + +This functions estimates the maximum number of trials we can conduct and achieve +a certain probability that [*k failures or fewer will be observed]. + +[variablelist +[[k][The maximum number of failures to be observed.]] +[[p][The probability of ['success] for each trial.]] +[[alpha][The maximum acceptable ['risk] that more than k failures will be observed.]] +] + +For example: + + negative_binomial_distribution::find_maximum_number_of_trials(0, 1.0-1.0/1000000, 0.05); + +Returns the largest number of trials we can conduct and still be 95% sure +of seeing no failures that occur with frequency one in one million. + +This function uses numeric inversion of the negative binomial distribution +to obtain the result: another interpretation of the result, is that it finds +the number of trials (success+failures) that will lead to an /alpha/ probability +of observing more than k failures. + +[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. + +However it's worth taking a moment to define what these actually mean in +the context of this distribution: + +[table Meaning of the non-member accessors. +[[Function][Meaning]] +[[__pdf] + [The probability of obtaining [*exactly k failures] from k+r trials + with success fraction p. For example: + +``pdf(negative_binomial(r, p), k)``]] +[[__cdf] + [The probability of obtaining [*k failures or fewer] from k+r trials + with success fraction p and success on the last trial. For example: + +``cdf(negative_binomial(r, p), k)``]] +[[__ccdf] + [The probability of obtaining [*more than k failures] from k+r trials + with success fraction p and success on the last trial. For example: + +``cdf(complement(negative_binomial(r, p), k))``]] +[[__quantile] + [The [*greatest] number of failures k expected to be observed from k+r trials + with success fraction p, at probability P. Note that the value returned + is a real-number, and not an integer. Depending on the use case you may + want to take either the floor or ceiling of the real result. For example: + +``quantile(negative_binomial(r, p), P)``]] +[[__quantile_c] + [The [*smallest] number of failures k expected to be observed from k+r trials + with success fraction p, at probability P. Note that the value returned + is a real-number, and not an integer. Depending on the use case you may + want to take either the floor or ceiling of the real result. For example: + ``quantile(complement(negative_binomial(r, p), P))``]] +] + +[h4 Accuracy] + +This distribution is implemented using the +incomplete beta functions __ibeta and __ibetac: +please refer to these functions for information on accuracy. + +[h4 Implementation] + +In the following table, /p/ is the probability that any one trial will +be successful (the success fraction), /r/ is the number of successes, +/k/ is the number of failures, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][pdf = exp(lgamma(r + k) - lgamma(r) - lgamma(k+1)) * pow(p, r) * pow((1-p), k) + +Implementation is in terms of __ibeta_derivative: + +(p/(r + k)) * ibeta_derivative(r, static_cast(k+1), p) +The function __ibeta_derivative is used here, since it has already +been optimised for the lowest possible error - indeed this is really +just a thin wrapper around part of the internals of the incomplete +beta function. +]] +[[cdf][Using the relation: + +cdf = I[sub p](r, k+1) = ibeta(r, k+1, p) + += ibeta(r, static_cast(k+1), p)]] +[[cdf complement][Using the relation: + +1 - cdf = I[sub p](k+1, r) + += ibetac(r, static_cast(k+1), p) +]] +[[quantile][ibeta_invb(r, p, P) - 1]] +[[quantile from the complement][ibetac_invb(r, p, Q) -1)]] +[[mean][ `r(1-p)/p` ]] +[[variance][ `r (1-p) / p * p` ]] +[[mode][`floor((r-1) * (1 - p)/p)`]] +[[skewness][`(2 - p) / sqrt(r * (1 - p))`]] +[[kurtosis][`6 / r + (p * p) / r * (1 - p )`]] +[[kurtosis excess][`6 / r + (p * p) / r * (1 - p ) -3`]] +[[parameter estimation member functions][]] +[[`find_lower_bound_on_p`][ibeta_inv(successes, failures + 1, alpha)]] +[[`find_upper_bound_on_p`][ibetac_inv(successes, failures, alpha) plus see comments in code.]] +[[`find_minimum_number_of_trials`][ibeta_inva(k + 1, p, alpha)]] +[[`find_maximum_number_of_trials`][ibetac_inva(k + 1, p, alpha)]] +] + +Implementation notes: + +* The real concept type (that deliberately lacks the Lanczos approximation), +was found to take several minutes to evaluate some extreme test values, +so the test has been disabled for this type. + +* Much greater speed, and perhaps greater accuracy, +might be achieved for extreme values by using a normal approximation. +This is NOT been tested or implemented. + +[endsect][/section:negative_binomial_dist Negative Binomial] + +[/ negative_binomial.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/negative_binomial_example.qbk b/doc/sf_and_dist/distributions/negative_binomial_example.qbk new file mode 100644 index 000000000..c51817b88 --- /dev/null +++ b/doc/sf_and_dist/distributions/negative_binomial_example.qbk @@ -0,0 +1,192 @@ +[section:neg_binom_eg Negative Binomial Distribution Examples] + +(See also the reference documentation for the __negative_binomial_distrib.) + +[section:neg_binom_conf Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution] + +Imagine you have a process that follows a negative binomial distribution: +for each trial conducted, an event either occurs or does it does not, referred +to as "successes" and "failures". The frequency with which successes occur +is variously referred to as the +success fraction, success ratio, success percentage, occurrence frequency, or probability of occurrence. + +If, by experiment, you want to measure the + the best estimate of success fraction is given simply +by /k/ \/ /N/, for /k/ successes out of /N/ trials. + +However our confidence in that estimate will be shaped by how many trials were conducted, +and how many successes were observed. The static member functions +`negative_binomial_distribution<>::find_lower_bound_on_p` and +`negative_binomial_distribution<>::find_upper_bound_on_p` +allow you to calculate the confidence intervals for your estimate of the success fraction. + +The sample program [@../../../example/neg_binom_confidence_limits.cpp +neg_binom_confidence_limits.cpp] illustrates their use. + +[import ../../../example/neg_binom_confidence_limits.cpp] + +[neg_binomial_confidence_limits] +Let's see some sample output for a 1 in 10 +success ratio, first for a mere 20 trials: + +[pre'''______________________________________________ +2-Sided Confidence Limits For Success Fraction +______________________________________________ +Number of trials = 20 +Number of successes = 2 +Number of failures = 18 +Observed frequency of occurrence = 0.1 +___________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +___________________________________________ + 50.000 0.04812 0.13554 + 75.000 0.03078 0.17727 + 90.000 0.01807 0.22637 + 95.000 0.01235 0.26028 + 99.000 0.00530 0.33111 + 99.900 0.00164 0.41802 + 99.990 0.00051 0.49202 + 99.999 0.00016 0.55574 +'''] + +As you can see, even at the 95% confidence level the bounds (0.012 to 0.26) are +really very wide, and very asymmetric about the observed value 0.1. + +Compare that with the program output for a mass +2000 trials: + +[pre'''______________________________________________ +2-Sided Confidence Limits For Success Fraction +______________________________________________ +Number of trials = 2000 +Number of successes = 200 +Number of failures = 1800 +Observed frequency of occurrence = 0.1 +___________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +___________________________________________ + 50.000 0.09536 0.10445 + 75.000 0.09228 0.10776 + 90.000 0.08916 0.11125 + 95.000 0.08720 0.11352 + 99.000 0.08344 0.11802 + 99.900 0.07921 0.12336 + 99.990 0.07577 0.12795 + 99.999 0.07282 0.13206 +'''] + +Now even when the confidence level is very high, the limits (at 99.999%, 0.07 to 0.13) are really +quite close and nearly symmetric to the observed value of 0.1. + +[endsect][/section:neg_binom_conf Calculating Confidence Limits on the Frequency of Occurrence] + +[section:neg_binom_size_eg Estimating Sample Sizes for the Negative Binomial.] + +Imagine you have an event +(let's call it a "failure" - though we could equally well call it a success if we felt it was a 'good' event) +that you know will occur in 1 in N trials. You may want to know how many trials you need to +conduct to be P% sure of observing at least k such failures. +If the failure events follow a negative binomial +distribution (each trial either succeeds or fails) +then the static member function `negative_binomial_distibution<>::find_minimum_number_of_trials` +can be used to estimate the minimum number of trials required to be P% sure +of observing the desired number of failures. + +The example program +[@../../../example/neg_binomial_sample_sizes.cpp neg_binomial_sample_sizes.cpp] +demonstrates its usage. + +[import ../../../example/neg_binomial_sample_sizes.cpp] +[neg_binomial_sample_sizes] + +[note Since we're calculating the /minimum/ number of trials required, +we'll err on the safe side and take the ceiling of the result. +Had we been calculating the +/maximum/ number of trials permitted to observe less than a certain +number of /failures/ then we would have taken the floor instead. We +would also have called `find_minimum_number_of_trials` like this: +`` + floor(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i])) +`` +which would give us the largest number of trials we could conduct and +still be P% sure of observing /failures or less/ failure events, when the +probability of success is /p/.] + +We'll finish off by looking at some sample output, firstly suppose +we wish to observe at least 5 "failures" with a 50/50 (0.5) chance of +success or failure: + +[pre +'''Target number of failures = 5, Success fraction = 50% + +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 11 + 75.000 14 + 90.000 17 + 95.000 18 + 99.000 22 + 99.900 27 + 99.990 31 + 99.999 36 +''' +] + +So 18 trials or more would yield a 95% chance that at least our 5 +required failures would be observed. + +Compare that to what happens if the success ratio is 90%: + +[pre'''Target number of failures = 5.000, Success fraction = 90.000% + +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 57 + 75.000 73 + 90.000 91 + 95.000 103 + 99.000 127 + 99.900 159 + 99.990 189 + 99.999 217 +'''] + +So now 103 trials are required to observe at least 5 failures with +95% certainty. + +[endsect] [/section:neg_binom_size_eg Estimating Sample Sizes.] + +[section:negative_binomial_example1 Negative Binomial Sales Quota Example.] + +This example program +[@../../../example/negative_binomial_example1.cpp negative_binomial_example1.cpp (full source code)] +demonstrates a simple use to find the probability of meeting a sales quota. + +[import ../../../example/negative_binomial_example1.cpp] +[negative_binomial_eg1_1] +[negative_binomial_eg1_2] + +[endsect] [/section:negative_binomial_example1] + +[section:negative_binomial_example2 Negative Binomial Table Printing Example.] +Example program showing output of a table of values of cdf and pdf for various k failures. +[import ../../../example/negative_binomial_example2.cpp] +[neg_binomial_example2] +[neg_binomial_example2_1] +[endsect] [/section:negative_binomial_example1 Negative Binomial example 2.] + +[endsect] [/section:neg_binom_eg Negative Binomial Distribution Examples] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/non_members.qbk b/doc/sf_and_dist/distributions/non_members.qbk new file mode 100644 index 000000000..d94874226 --- /dev/null +++ b/doc/sf_and_dist/distributions/non_members.qbk @@ -0,0 +1,406 @@ +[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 +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 +want by the name you are most familiar with. +Or use the [link function_index function index] +to go straight to the function you want if you already know its name. + +[h4 [#function_index]Function Index] + +* [link math.dist.cdf cdf]. +* [link math.dist.ccdf cdf complement]. +* [link math.dist.chf chf]. +* [link math.dist.hazard hazard]. +* __kurtosis. +* __kurtosis_excess +* __mean. +* [link math.dist.median median]. +* __mode. +* [link math.dist.pdf pdf]. +* [link math.dist.range range]. +* [link math.dist.quantile quantile]. +* [link math.dist.quantile_c quantile from the complement]. +* __skewness. +* [link math.dist.sd standard_deviation]. +* [link math.dist.support support]. +* __variance. + +[h4 [#concept_index]Conceptual Index] + +* __ccdf. +* __cdf. +* __chf. +* [link cdf_inv Inverse Cumulative Distribution Function]. +* [link survival_inv Inverse Survival Function]. +* __hazard +* [link lower_critical Lower Critical Value]. +* __kurtosis. +* __kurtosis_excess +* __mean. +* [link math.dist.median median]. +* __mode. +* [link cdfPQ P]. +* [link percent Percent Point Function]. +* __pdf. +* [link pmf Probability Mass Function]. +* [link math.dist.range range]. +* [link cdfPQ Q]. +* __quantile. +* [link math.dist.quantile_c Quantile from the complement of the probability]. +* __skewness. +* __sd +* [link survival Survival Function]. +* [link math.dist.support support]. +* [link upper_critical Upper Critical Value]. +* __variance. + +[h4 [#math.dist.cdf]Cumulative Distribution Function] + + template + RealType cdf(const ``['Distribution-Type]``& dist, const RealType& x); + +The __cdf is the probability that +the variable takes a value less than or equal to x. It is equivalent +to the integral from -infinity to x of the __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 +normal distribution: + +[$../graphs/cdf.png] + +[h4 [#math.dist.ccdf]Complement of the Cumulative Distribution Function] + + template + RealType cdf(const ``['Unspecified-Complement-Type]``& comp); + +The complement of the __cdf +is the probability that +the variable takes a value greater than x. It is equivalent +to the integral from x to infinity of the __pdf, or 1 minus the __cdf of x. + +This is also known as the survival function. + +This function may return a __domain_error if the random variable is outside +the defined range for the distribution. + +In this library, it is obtained by wrapping the arguments to the `cdf` +function in a call to `complement`, for example: + + // standard normal distribution object: + boost::math::normal norm; + // 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 +normal distribution: + +[$../graphs/survival.png] + +See __why_complements for why the complement is useful and when it should be used. + +[h4 [#math.dist.hazard]Hazard Function] + + template + RealType hazard(const ``['Distribution-Type]``& dist, const RealType& x); + +Returns the __hazard of /x/ and distibution /dist/. + +This function may return a __domain_error if the random variable is outside +the defined range for the distribution. + +[equation hazard] + +[caution +Some authors refer to this as the conditional failure +density function rather than the hazard function.] + +[h4 [#math.dist.chf]Cumulative Hazard Function] + + template + RealType chf(const ``['Distribution-Type]``& dist, const RealType& x); + +Returns the __chf of /x/ and distibution /dist/. + +This function may return a __domain_error if the random variable is outside +the defined range for the distribution. + +[equation chf] + +[caution +Some authors refer to this as simply the "Hazard Function".] + +[h4 [#math.dist.mean]mean] + + template + RealType mean(const ``['Distribution-Type]``& dist); + +Returns the mean of the distribution /dist/. + +This function may return a __domain_error if the distribution does not have +a defined mean (for example the Cauchy distribution). + +[h4 [#math.dist.median]median] + + template + RealType median(const ``['Distribution-Type]``& dist); + +Returns the median of the distribution /dist/. + +[h4 [#math.dist.mode]mode] + + template + RealType mode(const ``['Distribution-Type]``& dist); + +Returns the mode of the distribution /dist/. + +This function may return a __domain_error if the distribution does not have +a defined mode. + +[h4 [#math.dist.pdf]Probability Density Function] + + template + RealType pdf(const ``['Distribution-Type]``& dist, const RealType& x); + +For a continuous function, the probability density function (pdf) returns +the probability that the variate has the value x. +Since for continuous distributions the probability at a single point is actually zero, +the probability is better expressed as the integral of the pdf between two points: +see the __cdf. + +For a discrete distribution, the pdf is the probability that the +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: + +[$../graphs/pdf.png] + +[h4 [#math.dist.range]range] + + template + std::pair range(const ``['Distribution-Type]``& dist); + +Returns the valid range of the random variable over distribution /dist/. + +[h4 [#math.dist.quantile]Quantile] + + template + RealType quantile(const ``['Distribution-Type]``& dist, const RealType& p); + +The quantile is best viewed as the inverse of the __cdf, it returns +a value /x/ such that `cdf(dist, x) == p`. + +This is also known as the /percent point function/, or a /percentile/, it is +also the same as calculating the ['lower critical value] of a distribution. + +This function returns a __domain_error if the probability lies outside [0,1]. +The function may return an __overflow_error if there is no finite value +that has the specified probability. + +The following graph shows the quantile function for a standard normal +distribution: + +[$../graphs/quantile.png] + +[h4 [#math.dist.quantile_c]Quantile from the complement of the probability.] +[link complements complements] + + + template + RealType quantile(const ``['Unspecified-Complement-Type]``& comp); + +This is the inverse of the __ccdf. It is calculated by wrapping +the arguments in a call to the quantile function in a call to +/complement/. For example: + + // define a standard normal distribution: + boost::math::normal norm; + // print the value of x for which the complement + // of the probability is 0.05: + std::cout << quantile(complement(norm, 0.05)) << std::endl; + +The function computes a value /x/ such that +`cdf(complement(dist, x)) == q` where /q/ is complement of the +probability. + +[link why_complements Why complements?] + +This function is also called the inverse survival function, and is the +same as calculating the ['upper critical value] of a distribution. + +This function returns a __domain_error if the probablity lies outside [0,1]. +The function may return an __overflow_error if there is no finite value +that has the specified probability. + +The following graph show the inverse survival function for the normal +distribution: + +[$../graphs/survival_inv.png] + +[h4 [#math.dist.sd]Standard Deviation] + + template + RealType standard_deviation(const ``['Distribution-Type]``& dist); + +Returns the standard deviation of distribution /dist/. + +This function may return a __domain_error if the distribution does not have +a defined standard deviation. + +[h4 [#math.dist.support]support] + + template + std::pair support(const ``['Distribution-Type]``& dist); + +Returns the supported range of random variable over the distribution /dist/. + +The distribution 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"]. +Non-mathematicians might say it means the 'interesting' smallest range +of random variate x that has the cdf going from zero to unity. +Outside are uninteresting zones where the pdf is zero, and the cdf zero or unity. + +[h4 [#math.dist.variance]Variance] + + template + RealType variance(const ``['Distribution-Type]``& dist); + +Returns the variance of the distribution /dist/. + +This function may return a __domain_error if the distribution does not have +a defined variance. + +[h4 [#math.dist.skewness]Skewness] + + template + RealType skewness(const ``['Distribution-Type]``& dist); + +Returns the skewness of the distribution /dist/. + +This function may return a __domain_error if the distribution does not have +a defined skewness. + +[h4 [#math.dist.kurtosis]Kurtosis] + + template + RealType kurtosis(const ``['Distribution-Type]``& dist); + +Returns the 'proper' kurtosis (normalized fourth moment) of the distribution /dist/. + +kertosis = [beta][sub 2][space]= [mu][sub 4][space] / [mu][sub 2][super 2] + +Where [mu][sub i][space] is the i'th central moment of the distribution, and +in particular [mu][sub 2][space] is the variance of the distribution. + +The kurtosis is a measure of the "peakedness" of a distribution. + +Note that the literature definition of kurtosis is confusing. +The definition used here is that used by for example +[@http://mathworld.wolfram.com/Kurtosis.html Wolfram MathWorld] +(that includes a table of formulae for kurtosis excess for various distributions) +but NOT the definition of +[@http://en.wikipedia.org/wiki/Kurtosis kurtosis used by Wikipedia] +which treats "kurtosis" and "kurtosis excess" as the same quantity. + + kurtosis_excess = 'proper' kurtosis - 3 + +This subtraction of 3 is convenient so that the ['kurtosis excess] +of a normal distribution is zero. + +This function may return a __domain_error if the distribution does not have +a defined kurtosis. + +'Proper' kurtosis can have a value from zero to + infinity. + +[h4 [#math.dist.kurtosis_excess]Kurtosis excess] + + template + RealType kurtosis_excess(const ``['Distribution-Type]``& dist); + +Returns the kurtosis excess of the distribution /dist/. + +kurtosis excess = [gamma][sub 2][space]= [mu][sub 4][space] / [mu][sub 2][super 2][space]- 3 = kurtosis - 3 + +Where [mu][sub i][space] is the i'th central moment of the distribution, and +in particular [mu][sub 2][space] is the variance of the distribution. + +The kurtosis excess is a measure of the "peakedness" of a distribution, and +is more widely used than the "kurtosis proper". It is defined so that +the kurtosis excess of a normal distribution is zero. + +This function may return a __domain_error if the distribution does not have +a defined kurtosis excess. + +Kurtosis excess can have a value from -2 to + infinity. + + kurtosis = kurtosis_excess +3; + +The kurtosis excess of a normal distribution is zero. + +[h4 [#cdfPQ]P and Q] + +The terms P and Q are sometimes used to refer to the __cdf +and its [link math.dist.ccdf complement] respectively. +Lowercase p and q are sometimes used to refer to the values returned +by these functions. + +[h4 [#percent]Percent Point Function] + +The percent point function, also known as the percentile, is the same as +the __quantile. + +[h4 [#cdf_inv]Inverse CDF Function.] + +The inverse of the cumulative distribution function, is the same as the +__quantile. + +[h4 [#survival_inv]Inverse Survival Function.] + +The inverse of the survival function, is the same as computing the +[link math.dist.quantile_c quantile +from the complement of the probability]. + +[h4 [#pmf]Probability Mass Function] + +The Probability Mass Function is the same as the __pdf. + +The term Mass Function is usually applied to discrete distributions, +while the term __pdf applies to continuous distributions. + +[h4 [#lower_critical]Lower Critical Value.] + +The lower critical value calculates the value of the random variable +given the area under the left tail of the distribution. +It is equivalent to calculating the __quantile. + +[h4 [#upper_critical]Upper Critical Value.] + +The upper critical value calculates the value of the random variable +given the area under the right tail of the distribution. It is equivalent to +calculating the [link math.dist.quantile_c quantile from the complement of the +probability]. + +[h4 [#survival]Survival Function] + +Refer to the __ccdf. + +[endsect][/section:nmp Non-Member Properties] + + +[/ non_members.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/normal.qbk b/doc/sf_and_dist/distributions/normal.qbk new file mode 100644 index 000000000..1b057dd44 --- /dev/null +++ b/doc/sf_and_dist/distributions/normal.qbk @@ -0,0 +1,110 @@ +[section:normal_dist Normal (Gaussian) Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class normal_distribution; + + typedef normal_distribution<> normal; + + template + class normal_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + // Construct: + normal_distribution(RealType mean = 0, RealType sd = 1); + // Accessors: + RealType mean()const; // location. + RealType standard_deviation()const; // scale. + // Synonyms, provided to allow generic use of find_location and find_scale. + RealType location()const; + RealType scale()const; + }; + + }} // namespaces + +The normal distribution is probably the most well known statistical +distribution: it is also known as the Gaussian Distribution. +A normal distribution with mean zero and standard deviation one +is known as the ['Standard Normal Distribution]. + +Given mean [mu][space] and standard deviation [sigma][space] it has the PDF: + +[equation normal_ref1] + +The variation the PDF with its parameters is illustrated +in the following graph: + +[$../graphs/normal.png] + +[h4 Member Functions] + + normal_distribution(RealType mean = 0, RealType sd = 1); + +Constructs a normal distribution with mean /mean/ and +standard deviation /sd/. + +Requires sd > 0, otherwise __domain_error is called. + + RealType mean()const; + RealType location()const; + +both return the /mean/ of this distribution. + + RealType standard_deviation()const; + RealType scale()const; + +both return the /standard deviation/ of this distribution. +(Redundant location and scale function are provided to match other similar distributions, +allowing the functions find_location and find_scale to be used generically). + +[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 variable is \[-[max_value], +[min_value]\]. +However, the pdf of +[infin] and -[infin] = 0 is also supported, +and cdf at -[infin] = 0, cdf at +[infin] = 1, +and complement cdf -[infin] = 1 and +[infin] = 0, +if RealType permits. + +[h4 Accuracy] + +The normal distribution is implemented in terms of the +[link math_toolkit.special.sf_erf.error_function error function], +and as such should have very low error rates. + +[h4 Implementation] + +In the following table /m/ is the mean of the distribution, +and /s/ is its standard deviation. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = e[super -(x-m)[super 2]\/(2s[super 2])] \/ (s * sqrt(2*pi)) ]] +[[cdf][Using the relation: p = 0.5 * __erfc(-(x-m)/(s*sqrt(2))) ]] +[[cdf complement][Using the relation: q = 0.5 * __erfc((x-m)/(s*sqrt(2))) ]] +[[quantile][Using the relation: x = m - s * sqrt(2) * __erfc_inv(2*p)]] +[[quantile from the complement][Using the relation: x = m + s * sqrt(2) * __erfc_inv(2*p)]] +[[mean and standard deviation][The same as `dist.mean()` and `dist.standard_deviation()`]] +[[mode][The same as the mean.]] +[[skewness][0]] +[[kurtosis][3]] +[[kurtosis excess][0]] +] + +[endsect][/section:normal_dist Normal] + +[/ normal.qbk + Copyright 2006, 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/normal_example.qbk b/doc/sf_and_dist/distributions/normal_example.qbk new file mode 100644 index 000000000..d5cafca11 --- /dev/null +++ b/doc/sf_and_dist/distributions/normal_example.qbk @@ -0,0 +1,36 @@ +[section:normal_example Normal Distribution Examples] + +(See also the reference documentation for the __normal_distrib.) + +[section:normal_misc Some Miscellaneous Examples of the Normal (Gaussian) Distribution] + +The sample program [@../../../example/normal_misc_examples.cpp +normal_misc_examples.cpp] illustrates their use. + +[import ../../../example/normal_misc_examples.cpp] + +[h4 Traditional Tables] +[normal_basic1] + +[h4 Standard deviations either side of the Mean] +[normal_basic2] +[h4 Some simple examples] +[h4 Life of light bulbs] +[normal_bulbs_example1] +[h4 How many onions?] +[normal_bulbs_example3] +[h4 Packing beef] +[normal_bulbs_example4] +[h4 Length of bolts] +[normal_bulbs_example5] + +[endsect] [/section:normal_misc Some Miscellaneous Examples of the Normal Distribution] +[endsect] [/section:normal_example Normal Distribution Examples] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/pareto.qbk b/doc/sf_and_dist/distributions/pareto.qbk new file mode 100644 index 000000000..040b3c622 --- /dev/null +++ b/doc/sf_and_dist/distributions/pareto.qbk @@ -0,0 +1,114 @@ +[section:pareto Pareto Distribution] + + +``#include `` + + namespace boost{ namespace math{ + + template + class pareto_distribution; + + typedef pareto_distribution<> pareto; + + template + class pareto_distribution + { + public: + typedef RealType value_type; + // Constructor: + pareto_distribution(RealType location = 1, RealType shape = 1) + // Accessors: + RealType location()const; + RealType shape()const; + }; + + }} // namespaces + +The [@http://en.wikipedia.org/wiki/pareto_distribution Pareto distribution] +is a continuous distribution with the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function (pdf)]: + +f(x; [alpha], [beta]) = [alpha][beta][super [alpha]] / x[super [alpha]+ 1] + +For shape parameter [alpha][space] > 0, and location parameter [beta][space] > 0, and [alpha][space] > 0. + +The [@http://mathworld.wolfram.com/paretoDistribution.html Pareto distribution] +often describes the larger compared to the smaller. +A classic example is that 80% of the wealth is owned by 20% of the population. + +The following graph illustrates how the PDF varies with the shape parameter [alpha]: + +[/$../graphs/paretoShape.png] +[/ TODO produce a graph as png or svg] +[@http://upload.wikimedia.org/wikipedia/commons/thumb/d/d9/Pareto_distributionPDF.png/325px-Pareto_distributionPDF.png Pareto pdf] + +[h4 Related distributions] + + +[h4 Member Functions] + + pareto_distribution(RealType location = 1, RealType shape = 1); + +Constructs a [@http://en.wikipedia.org/wiki/pareto_distribution +pareto distribution] with shape /shape/ and scale /scale/. + +Requires that the /shape/ and /scale/ parameters are both greater than zero, +otherwise calls __domain_error. + + RealType location()const; + +Returns the /location/ parameter of this distribution. + + RealType shape()const; + +Returns the /shape/ 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 supported domain of the random variable is \[location, [infin]\]. + +[h4 Accuracy] + +The pareto distribution is implemented in terms of the +standard library `exp` functions plus __expm1 +and as such should have very low error rates +except when probability is very close to unity. + +[h4 Implementation] + +In the following table [alpha][space] is the shape parameter of the distribution, and +[beta][space] is its location parameter, /x/ is the random variate, /p/ is the probability +and its complement /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf p = [alpha][beta][super [alpha]]/x[super [alpha] +1] ]] +[[cdf][Using the relation: cdf p = 1 - ([beta][space] / x)[super [alpha]] ]] +[[cdf complement][Using the relation: q = 1 - p = -([beta][space] / x)[super [alpha]] ]] +[[quantile][Using the relation: x = [alpha] / (1 - p)[super 1/[beta]] ]] +[[quantile from the complement][Using the relation: x = [alpha] / (q)[super 1/[beta]] ]] +[[mean][[alpha][beta] / ([beta] - 1) ]] +[[variance][[beta][alpha][super 2] / ([beta] - 1)[super 2] ([beta] - 2) ]] +[[mode][[alpha]]] +[[skewness][Refer to [@http://mathworld.wolfram.com/paretoDistribution.html Weisstein, Eric W. "Pareto Distribution." From MathWorld--A Wolfram Web Resource.] ]] +[[kurtosis][Refer to [@http://mathworld.wolfram.com/paretoDistribution.html Weisstein, Eric W. "Pareto Distribution." From MathWorld--A Wolfram Web Resource.] ]] +[[kurtosis excess][Refer to [@http://mathworld.wolfram.com/paretoDistribution.html Weisstein, Eric W. "pareto Distribution." From MathWorld--A Wolfram Web Resource.] ]] +] + +[h4 References] +* [@http://en.wikipedia.org/wiki/pareto_distribution Pareto Distribution] +* [@http://mathworld.wolfram.com/paretoDistribution.html Weisstein, Eric W. "Pareto Distribution." From MathWorld--A Wolfram Web Resource.] + +[endsect][/section:pareto pareto] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/poisson.qbk b/doc/sf_and_dist/distributions/poisson.qbk new file mode 100644 index 000000000..e65638a97 --- /dev/null +++ b/doc/sf_and_dist/distributions/poisson.qbk @@ -0,0 +1,103 @@ +[section:poisson_dist Poisson Distribution] + +``#include `` + + namespace boost { namespace math { + + template + class poisson_distribution; + + typedef poisson_distribution<> poisson; + + template + class poisson_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + poisson_distribution(RealType mean = 1); // Constructor. + RealType mean()const; // Accessor. + } + + }} // namespaces boost::math + +The [@http://en.wikipedia.org/wiki/Poisson_distribution Poisson distribution] +is a well-known statistical discrete distribution. +It expresses the probability of a number of events +(or failures, arrivals, occurrences ...) +occurring in a fixed period of time, +provided these events occur with a known mean rate [lambda][space] +(events/time), and are independent of the time since the last event. + +The distribution was discovered by Sim__eacute on-Denis Poisson (1781 to 1840). + +It has the Probability Mass Function: + +[equation poisson_ref1] + +for k events, with an expected number of events [lambda]. + +The following graph illustrates how the PDF varies with the parameter [lambda]: + +[$../graphs/poisson.png] + +[discrete_quantile_warning Poisson] + +[h4 Member Functions] + + poisson_distribution(RealType mean = 1); + +Constructs a poisson distribution with mean /mean/. + + RealType mean()const; + +Returns the /mean/ 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 variable is \[0, [infin]\]. + +[h4 Accuracy] + +The Poisson distribution is implemented in terms of the +incomplete gamma functions __gamma_p and __gamma_q +and as such should have low error rates: but refer to the documentation +of those functions for more information. +The quantile and its complement use the inverse gamma functions +and are therefore probably slightly less accurate: this is because the +inverse gamma functions are implemented using an iterative method with a +lower tolerance to avoid excessive computation. + +[h4 Implementation] + +In the following table [lambda][space] is the mean of the distribution, +/k/ is the random variable, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = e[super -[lambda]] [lambda][super k] \/ k! ]] +[[cdf][Using the relation: p = [Gamma](k+1, [lambda]) \/ k! = __gamma_q(k+1, [lambda])]] +[[cdf complement][Using the relation: q = __gamma_p(k+1, [lambda]) ]] +[[quantile][Using the relation: k = __gamma_q_inva([lambda], p) - 1]] +[[quantile from the complement][Using the relation: k = __gamma_p_inva([lambda], q) - 1]] +[[mean][[lambda]]] +[[mode][ floor ([lambda]) or [floorlr[lambda]] ]] +[[skewness][1/[radic][lambda]]] +[[kurtosis][3 + 1/[lambda]]] +[[kurtosis excess][1/[lambda]]] +] + +[/ poisson.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + +[endsect][/section:poisson_dist Poisson] + diff --git a/doc/sf_and_dist/distributions/rayleigh.qbk b/doc/sf_and_dist/distributions/rayleigh.qbk new file mode 100644 index 000000000..8fa768406 --- /dev/null +++ b/doc/sf_and_dist/distributions/rayleigh.qbk @@ -0,0 +1,119 @@ +[section:rayleigh Rayleigh Distribution] + + +``#include `` + + namespace boost{ namespace math{ + + template + class rayleigh_distribution; + + typedef rayleigh_distribution<> rayleigh; + + template + class rayleigh_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + // Construct: + rayleigh_distribution(RealType sigma = 1) + // Accessors: + RealType sigma()const; + }; + + }} // namespaces + +The [@http://en.wikipedia.org/wiki/Rayleigh_distribution Rayleigh distribution] +is a continuous distribution with the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function]: + +f(x; sigma) = x * exp(-x[super 2]/2 [sigma][super 2]) / [sigma][super 2] + +For sigma parameter [sigma][space] > 0, and x > 0. + +The Rayleigh distribution is often used where two orthogonal components +have an absolute value, +for example, wind velocity and direction may be combined to yield a wind speed, +or real and imaginary components may have absolute values that are Rayleigh distributed. + +The following graph illustrates how the Probability density Function(pdf) varies with the shape parameter [sigma]: + +[$../graphs/rayleigh_pdf.png] + +and the Cumulative Distribution Function (cdf) + +[$../graphs/rayleigh_cdf.png] + +[h4 Related distributions] + +The absolute value of two independent normal distributions X and Y, [radic] (X[super 2] + Y[super 2]) +is a Rayleigh distribution. + +The [@http://en.wikipedia.org/wiki/Chi_distribution Chi], +[@http://en.wikipedia.org/wiki/Rice_distribution Rice] +and [@http://en.wikipedia.org/wiki/Weibull_distribution Weibull] distributions are generalizations of the +[@http://en.wikipedia.org/wiki/Rayleigh_distribution Rayleigh distribution]. + +[h4 Member Functions] + + rayleigh_distribution(RealType sigma = 1); + +Constructs a [@http://en.wikipedia.org/wiki/Rayleigh_distribution +Rayleigh distribution] with [sigma] /sigma/. + +Requires that the [sigma] parameter is greater than zero, +otherwise calls __domain_error. + + RealType sigma()const; + +Returns the /sigma/ 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 variable is \[0, max_value\]. + +[h4 Accuracy] + +The Rayleigh distribution is implemented in terms of the +standard library `sqrt` and `exp` and as such should have very low error rates. +Some constants such as skewness and kurtosis were calculated using +NTL RR type with 150-bit accuracy, about 50 decimal digits. + +[h4 Implementation] + +In the following table [sigma][space] is the sigma parameter of the distribution, +/x/ is the random variate, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = x * exp(-x[super 2])/2 [sigma][super 2] ]] +[[cdf][Using the relation: p = 1 - exp(-x[super 2]/2) [sigma][super 2][space] = -__expm1(-x[super 2]/2) [sigma][super 2]]] +[[cdf complement][Using the relation: q = exp(-x[super 2]/ 2) * [sigma][super 2] ]] +[[quantile][Using the relation: x = sqrt(-2 * [sigma] [super 2]) * log(1 - p)) = sqrt(-2 * [sigma] [super 2]) * __log1p(-p))]] +[[quantile from the complement][Using the relation: x = sqrt(-2 * [sigma] [super 2]) * log(q)) ]] +[[mean][[sigma] * sqrt([pi]/2) ]] +[[variance][[sigma][super 2] * (4 - [pi]/2) ]] +[[mode][[sigma] ]] +[[skewness][Constant from [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]] +[[kurtosis][Constant from [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]] +[[kurtosis excess][Constant from [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]] +] + +[h4 References] +* [@http://en.wikipedia.org/wiki/Rayleigh_distribution ] +* [@http://mathworld.wolfram.com/RayleighDistribution.html Weisstein, Eric W. "Rayleigh Distribution." From MathWorld--A Wolfram Web Resource.] + +[endsect][/section:Rayleigh Rayleigh] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/students_t.qbk b/doc/sf_and_dist/distributions/students_t.qbk new file mode 100644 index 000000000..25fcdf384 --- /dev/null +++ b/doc/sf_and_dist/distributions/students_t.qbk @@ -0,0 +1,171 @@ +[section:students_t_dist Students t Distribution] + +``#include `` + + namespace boost{ namespace math{ + + template + class students_t_distribution; + + typedef students_t_distribution<> students_t; + + template + class students_t_distribution + { + typedef RealType value_type; + typedef Policy policy_type; + + // Construct: + students_t_distribution(const RealType& v); + + // Accessor: + RealType degrees_of_freedom()const; + + // degrees of freedom estimation: + static RealType find_degrees_of_freedom( + RealType difference_from_mean, + RealType alpha, + RealType beta, + RealType sd, + RealType hint = 100); + }; + + }} // namespaces + +A statistical distribution published by William Gosset in 1908. +His employer, Guinness Breweries, required him to publish under a +pseudonym, so he chose "Student". Given N independent measurements, let + +[equation students_t_dist] + +where /M/ is the population mean,[' ''' μ '''] is the sample mean, and /s/ is the +sample variance. + +Student's t-distribution is defined as the distribution of the random +variable t which is - very loosely - the "best" that we can do not +knowing the true standard deviation of the sample. It has the PDF: + +[equation students_t_ref1] + +The Student's t-distribution takes a single parameter: the number of +degrees of freedom of the sample. When the degrees of freedom is +/one/ then this distribution is the same as the Cauchy-distribution. +As the number of degrees of freedom tends towards infinity, then this +distribution approaches the normal-distribution. The following graph +illustrates how the PDF varies with the degrees of freedom [nu]: + +[$../graphs/students_t.png] + +[h4 Member Functions] + + students_t_distribution(const RealType& v); + +Constructs a Student's t-distribution with /v/ degrees of freedom. + +Requires v > 0, otherwise calls __domain_error. Note that +non-integral degrees of freedom are supported, and +meaningful under certain circumstances. + + RealType degrees_of_freedom()const; + +Returns the number of degrees of freedom of this distribution. + + static RealType find_degrees_of_freedom( + RealType difference_from_mean, + RealType alpha, + RealType beta, + RealType sd, + RealType hint = 100); + +Returns the number of degrees of freedom required to observe a significant +result in the Student's t test when the mean differs from the "true" +mean by /difference_from_mean/. + +[variablelist +[[difference_from_mean][The difference between the true mean and the sample mean + that we wish to show is significant.]] +[[alpha][The maximum acceptable probability of rejecting the null hypothesis + when it is in fact true.]] +[[beta][The maximum acceptable probability of failing to reject the null hypothesis + when it is in fact false.]] +[[sd][The sample standard deviation.]] +[[hint][A hint for the location to start looking for the result, a good choice for this + would be the sample size of a previous borderline Student's t test.]] +] + +[note +Remember that for a two-sided test, you must divide alpha by two +before calling this function.] + +For more information on this function see the +[@http://www.itl.nist.gov/div898/handbook/prc/section2/prc222.htm +NIST Engineering Statistics Handbook]. + +[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 variable is \[-[infin], +[infin]\]. + +[h4 Examples] + +Various [link math_toolkit.dist.stat_tut.weg.st_eg worked examples] are available illustrating the use of the Student's t +distribution. + +[h4 Accuracy] + +The normal distribution is implemented in terms of the +[link math_toolkit.special.sf_beta.ibeta_function incomplete beta function] +and [link math_toolkit.special.sf_beta.ibeta_inv_function it's inverses], +refer to accuracy data on those functions for more information. + +[h4 Implementation] + +In the following table /v/ is the degrees of freedom of the distribution, +/t/ is the random variate, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = (v \/ (v + t[super 2]))[super (1+v)\/2 ] / (sqrt(v) * __beta(v\/2, 0.5)) ]] +[[cdf][Using the relations: + +p = 1 - z /iff t > 0/ + +p = z /otherwise/ + +where z is given by: + +__ibeta(v \/ 2, 0.5, v \/ (v + t[super 2])) \/ 2 ['iff v < 2t[super 2]] + +__ibetac(0.5, v \/ 2, t[super 2 ] / (v + t[super 2]) \/ 2 /otherwise/]] +[[cdf complement][Using the relation: q = cdf(-t) ]] +[[quantile][Using the relation: t = sign(p - 0.5) * sqrt(v * y \/ x) + +where: + +x = __ibeta_inv(v \/ 2, 0.5, 2 * min(p, q)) + +y = 1 - x + +The quantities /x/ and /y/ are both returned by __ibeta_inv +without the subtraction implied above.]] +[[quantile from the complement][Using the relation: t = -quantile(q)]] +[[mean][0]] +[[variance][v \/ (v - 2)]] +[[mode][0]] +[[skewness][0]] +[[kurtosis][3 * (v - 2) \/ (v - 4)]] +[[kurtosis excess][6 \/ (df - 4)]] +] + +[endsect][/section:students_t_dist Students t] + +[/ students_t.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/students_t_examples.qbk b/doc/sf_and_dist/distributions/students_t_examples.qbk new file mode 100644 index 000000000..bc4c35dea --- /dev/null +++ b/doc/sf_and_dist/distributions/students_t_examples.qbk @@ -0,0 +1,782 @@ + +[section:st_eg Student's t Distribution Examples] + +[section:tut_mean_intervals Calculating confidence intervals on the mean with the Students-t distribution] + +Let's say you have a sample mean, you may wish to know what confidence intervals +you can place on that mean. Colloquially: "I want an interval that I can be +P% sure contains the true mean". (On a technical point, note that +the interval either contains the true mean or it does not: the +meaning of the confidence level is subtly +different from this colloquialism. More background information can be found on the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm NIST site]). + +The formula for the interval can be expressed as: + +[equation dist_tutorial4] + +Where, ['Y[sub s]] is the sample mean, /s/ is the sample standard deviation, +/N/ is the sample size, /[alpha]/ is the desired significance level and +['t[sub ([alpha]/2,N-1)]] is the upper critical value of the Students-t +distribution with /N-1/ degrees of freedom. + +[note +The quantity [alpha][space] is the maximum acceptable risk of falsely rejecting +the null-hypothesis. The smaller the value of [alpha] the greater the +strength of the test. + +The confidence level of the test is defined as 1 - [alpha], and often expressed +as a percentage. So for example a significance level of 0.05, is equivalent +to a 95% confidence level. Refer to +[@http://www.itl.nist.gov/div898/handbook/prc/section1/prc14.htm +"What are confidence intervals?"] in __handbook for more information. +] [/ Note] + +[note +The usual assumptions of +[@http://en.wikipedia.org/wiki/Independent_and_identically-distributed_random_variables independent and identically distributed (i.i.d.)] +variables and [@http://en.wikipedia.org/wiki/Normal_distribution normal distribution] +of course apply here, as they do in other examples. +] + +From the formula, it should be clear that: + +* The width of the confidence interval decreases as the sample size increases. +* The width increases as the standard deviation increases. +* The width increases as the ['confidence level increases] (0.5 towards 0.99999 - stronger). +* The width increases as the ['significance level decreases] (0.5 towards 0.00000...01 - stronger). + +The following example code is taken from the example program +[@../../../example/students_t_single_sample.cpp students_t_single_sample.cpp]. + +We'll begin by defining a procedure to calculate intervals for +various confidence levels; the procedure will print these out +as a table: + + // Needed includes: + #include + #include + #include + // Bring everything into global namespace for ease of use: + using namespace boost::math; + using namespace std; + + void confidence_limits_on_mean( + double Sm, // Sm = Sample Mean. + double Sd, // Sd = Sample Standard Deviation. + unsigned Sn) // Sn = Sample Size. + { + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "__________________________________\n" + "2-Sided Confidence Limits For Mean\n" + "__________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of Observations" << "= " << Sn << "\n"; + cout << setw(40) << left << "Mean" << "= " << Sm << "\n"; + cout << setw(40) << left << "Standard Deviation" << "= " << Sd << "\n"; + +We'll define a table of significance/risk levels for which we'll compute intervals: + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +Note that these are the complements of the confidence/probability levels: 0.5, 0.75, 0.9 .. 0.99999). + +Next we'll declare the distribution object we'll need, note that +the /degrees of freedom/ parameter is the sample size less one: + + students_t dist(Sn - 1); + +Most of what follows in the program is pretty printing, so let's focus +on the calculation of the interval. First we need the t-statistic, +computed using the /quantile/ function and our significance level. Note +that since the significance levels are the complement of the probability, +we have to wrap the arguments in a call to /complement(...)/: + + double T = quantile(complement(dist, alpha[i] / 2)); + +Note that alpha was divided by two, since we'll be calculating +both the upper and lower bounds: had we been interested in a single +sided interval then we would have omitted this step. + +Now to complete the picture, we'll get the (one-sided) width of the +interval from the t-statistic +by multiplying by the standard deviation, and dividing by the square +root of the sample size: + + double w = T * Sd / sqrt(double(Sn)); + +The two-sided interval is then the sample mean plus and minus this width. + +And apart from some more pretty-printing that completes the procedure. + +Let's take a look at some sample output, first using the +[@http://www.itl.nist.gov/div898/handbook/eda/section4/eda428.htm +Heat flow data] from the NIST site. The data set was collected +by Bob Zarr of NIST in January, 1990 from a heat flow meter +calibration and stability analysis. +The corresponding dataplot +output for this test can be found in +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm +section 3.5.2] of the __handbook. + +[pre''' + __________________________________ + 2-Sided Confidence Limits For Mean + __________________________________ + + Number of Observations = 195 + Mean = 9.26146 + Standard Deviation = 0.02278881 + + + ___________________________________________________________________ + Confidence T Interval Lower Upper + Value (%) Value Width Limit Limit + ___________________________________________________________________ + 50.000 0.676 1.103e-003 9.26036 9.26256 + 75.000 1.154 1.883e-003 9.25958 9.26334 + 90.000 1.653 2.697e-003 9.25876 9.26416 + 95.000 1.972 3.219e-003 9.25824 9.26468 + 99.000 2.601 4.245e-003 9.25721 9.26571 + 99.900 3.341 5.453e-003 9.25601 9.26691 + 99.990 3.973 6.484e-003 9.25498 9.26794 + 99.999 4.537 7.404e-003 9.25406 9.26886 +'''] + +As you can see the large sample size (195) and small standard deviation (0.023) +have combined to give very small intervals, indeed we can be +very confident that the true mean is 9.2. + +For comparison the next example data output is taken from +['P.K.Hou, O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. +and from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 +J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907.] +The values result from the determination of mercury by cold-vapour +atomic absorption. + +[pre''' + __________________________________ + 2-Sided Confidence Limits For Mean + __________________________________ + + Number of Observations = 3 + Mean = 37.8000000 + Standard Deviation = 0.9643650 + + + ___________________________________________________________________ + Confidence T Interval Lower Upper + Value (%) Value Width Limit Limit + ___________________________________________________________________ + 50.000 0.816 0.455 37.34539 38.25461 + 75.000 1.604 0.893 36.90717 38.69283 + 90.000 2.920 1.626 36.17422 39.42578 + 95.000 4.303 2.396 35.40438 40.19562 + 99.000 9.925 5.526 32.27408 43.32592 + 99.900 31.599 17.594 20.20639 55.39361 + 99.990 99.992 55.673 -17.87346 93.47346 + 99.999 316.225 176.067 -138.26683 213.86683 +'''] + +This time the fact that there are only three measurements leads to +much wider intervals, indeed such large intervals that it's hard +to be very confident in the location of the mean. + +[endsect] + +[section:tut_mean_test Testing a sample mean for difference from a "true" mean] + +When calibrating or comparing a scientific instrument or measurement method of some kind, +we want to be answer the question "Does an observed sample mean differ from the +"true" mean in any significant way?". If it does, then we have evidence of +a systematic difference. This question can be answered with a Students-t test: +more information can be found +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm +on the NIST site]. + +Of course, the assignment of "true" to one mean may be quite arbitrary, +often this is simply a "traditional" method of measurement. + +The following example code is taken from the example program +[@../../../example/students_t_single_sample.cpp students_t_single_sample.cpp]. + +We'll begin by defining a procedure to determine which of the +possible hypothesis are rejected or not-rejected +at a given significance level: + +[note +Non-statisticians might say 'not-rejected' means 'accepted', +(often of the null-hypothesis) implying, wrongly, that there really *IS* no difference, +but statisticans eschew this to avoid implying that there is positive evidence of 'no difference'. +'Not-rejected' here means there is *no evidence* of difference, but there still might well be a difference. +For example, see [@http://en.wikipedia.org/wiki/Argument_from_ignorance argument from ignorance] and +[@http://www.bmj.com/cgi/content/full/311/7003/485 Absence of evidence does not constitute evidence of absence.] +] [/ note] + + + // Needed includes: + #include + #include + #include + // Bring everything into global namespace for ease of use: + using namespace boost::math; + using namespace std; + + void single_sample_t_test(double M, double Sm, double Sd, unsigned Sn, double alpha) + { + // + // M = true mean. + // Sm = Sample Mean. + // Sd = Sample Standard Deviation. + // Sn = Sample Size. + // alpha = Significance Level. + +Most of the procedure is pretty-printing, so let's just focus on the +calculation, we begin by calculating the t-statistic: + + // Difference in means: + double diff = Sm - M; + // Degrees of freedom: + unsigned v = Sn - 1; + // t-statistic: + double t_stat = diff * sqrt(double(Sn)) / Sd; + +Finally calculate the probability from the t-statistic. If we're interested +in simply whether there is a difference (either less or greater) or not, +we don't care about the sign of the t-statistic, +and we take the complement of the probability for comparison +to the significance level: + + students_t dist(v); + double q = cdf(complement(dist, fabs(t_stat))); + +The procedure then prints out the results of the various tests +that can be done, these +can be summarised in the following table: + +[table +[[Hypothesis][Test]] +[[The Null-hypothesis: there is +*no difference* in means] +[Reject if complement of CDF for |t| < significance level / 2: + +`cdf(complement(dist, fabs(t))) < alpha / 2`]] + +[[The Alternative-hypothesis: there +*is difference* in means] +[Reject if complement of CDF for |t| > significance level / 2: + +`cdf(complement(dist, fabs(t))) > alpha / 2`]] + +[[The Alternative-hypothesis: the sample mean *is less* than +the true mean.] +[Reject if CDF of t > significance level: + +`cdf(dist, t) > alpha`]] + +[[The Alternative-hypothesis: the sample mean *is greater* than +the true mean.] +[Reject if complement of CDF of t > significance level: + +`cdf(complement(dist, t)) > alpha`]] +] + +[note +Notice that the comparisons are against `alpha / 2` for a two-sided test +and against `alpha` for a one-sided test] + +Now that we have all the parts in place, let's take a look at some +sample output, first using the +[@http://www.itl.nist.gov/div898/handbook/eda/section4/eda428.htm +Heat flow data] from the NIST site. The data set was collected +by Bob Zarr of NIST in January, 1990 from a heat flow meter +calibration and stability analysis. The corresponding dataplot +output for this test can be found in +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm +section 3.5.2] of the __handbook. + +[pre''' + __________________________________ + Student t test for a single sample + __________________________________ + + Number of Observations = 195 + Sample Mean = 9.26146 + Sample Standard Deviation = 0.02279 + Expected True Mean = 5.00000 + + Sample Mean - Expected Test Mean = 4.26146 + Degrees of Freedom = 194 + T Statistic = 2611.28380 + Probability that difference is due to chance = 0.000e+000 + + Results for Alternative Hypothesis and alpha = 0.0500''' + + Alternative Hypothesis Conclusion + Mean != 5.000 NOT REJECTED + Mean < 5.000 REJECTED + Mean > 5.000 NOT REJECTED +] + +You will note the line that says the probability that the difference is +due to chance is zero. From a philosophical point of view, of course, +the probability can never reach zero. However, in this case the calculated +probability is smaller than the smallest representable double precision number, +hence the appearance of a zero here. Whatever its "true" value is, we know it +must be extraordinarily small, so the alternative hypothesis - that there is +a difference in means - is not rejected. + +For comparison the next example data output is taken from +['P.K.Hou, O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. +and from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 +J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907.] +The values result from the determination of mercury by cold-vapour +atomic absorption. + +[pre''' + __________________________________ + Student t test for a single sample + __________________________________ + + Number of Observations = 3 + Sample Mean = 37.80000 + Sample Standard Deviation = 0.96437 + Expected True Mean = 38.90000 + + Sample Mean - Expected Test Mean = -1.10000 + Degrees of Freedom = 2 + T Statistic = -1.97566 + Probability that difference is due to chance = 1.869e-001 + + Results for Alternative Hypothesis and alpha = 0.0500''' + + Alternative Hypothesis Conclusion + Mean != 38.900 REJECTED + Mean < 38.900 REJECTED + Mean > 38.900 REJECTED +] + +As you can see the small number of measurements (3) has led to a large uncertainty +in the location of the true mean. So even though there appears to be a difference +between the sample mean and the expected true mean, we conclude that there +is no significant difference, and are unable to reject the null hypothesis. +However, if we were to lower the bar for acceptance down to alpha = 0.1 +(a 90% confidence level) we see a different output: + +[pre''' +__________________________________ +Student t test for a single sample +__________________________________ + +Number of Observations = 3 +Sample Mean = 37.80000 +Sample Standard Deviation = 0.96437 +Expected True Mean = 38.90000 + +Sample Mean - Expected Test Mean = -1.10000 +Degrees of Freedom = 2 +T Statistic = -1.97566 +Probability that difference is due to chance = 1.869e-001 + +Results for Alternative Hypothesis and alpha = 0.1000''' + +Alternative Hypothesis Conclusion +Mean != 38.900 REJECTED +Mean < 38.900 NOT REJECTED +Mean > 38.900 REJECTED +] + +In this case, we really have a borderline result, +and more data (and/or more accurate data), +is needed for a more convincing conclusion. + +[endsect] + +[section:tut_mean_size Estimating how large a sample size would have to become +in order to give a significant Students-t test result with a single sample test] + +Imagine you have conducted a Students-t test on a single sample in order +to check for systematic errors in your measurements. Imagine that the +result is borderline. At this point one might go off and collect more data, +but it might be prudent to first ask the question "How much more?". +The parameter estimators of the students_t_distribution class +can provide this information. + +This section is based on the example code in +[@../../../example/students_t_single_sample.cpp students_t_single_sample.cpp] +and we begin by defining a procedure that will print out a table of +estimated sample sizes for various confidence levels: + + // Needed includes: + #include + #include + #include + // Bring everything into global namespace for ease of use: + using namespace boost::math; + using namespace std; + + void single_sample_find_df( + double M, // M = true mean. + double Sm, // Sm = Sample Mean. + double Sd) // Sd = Sample Standard Deviation. + { + +Next we define a table of significance levels: + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +Printing out the table of sample sizes required for various confidence levels +begins with the table header: + + cout << "\n\n" + "_______________________________________________________________\n" + "Confidence Estimated Estimated\n" + " Value (%) Sample Size Sample Size\n" + " (one sided test) (two sided test)\n" + "_______________________________________________________________\n"; + + +And now the important part: the sample sizes required. Class +`students_t_distribution` has a static member function +`find_degrees_of_freedom` that will calculate how large +a sample size needs to be in order to give a definitive result. + +The first argument is the difference between the means that you +wish to be able to detect, here it's the absolute value of the +difference between the sample mean, and the true mean. + +Then come two probability values: alpha and beta. Alpha is the +maximum acceptable risk of rejecting the null-hypothesis when it is +in fact true. Beta is the maximum acceptable risk of failing to reject +the null-hypothesis when in fact it is false. +Also note that for a two-sided test, alpha must be divided by 2. + +The final parameter of the function is the standard deviation of the sample. + +In this example, we assume that alpha and beta are the same, and call +`find_degrees_of_freedom` twice: once with alpha for a one-sided test, +and once with alpha/2 for a two-sided test. + + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate df for single sided test: + double df = students_t::find_degrees_of_freedom( + fabs(M - Sm), alpha[i], alpha[i], Sd); + // convert to sample size: + double size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size; + // calculate df for two sided test: + df = students_t::find_degrees_of_freedom( + fabs(M - Sm), alpha[i]/2, alpha[i], Sd); + // convert to sample size: + size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size << endl; + } + cout << endl; + } + +Let's now look at some sample output using data taken from +['P.K.Hou, O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. +and from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 +J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907.] +The values result from the determination of mercury by cold-vapour +atomic absorption. + +Only three measurements were made, and the Students-t test above +gave a borderline result, so this example +will show us how many samples would need to be collected: + +[pre''' +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ + +True Mean = 38.90000 +Sample Mean = 37.80000 +Sample Standard Deviation = 0.96437 + + +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (one sided test) (two sided test) +_______________________________________________________________ + 50.000 2 3 + 75.000 4 5 + 90.000 8 10 + 95.000 12 14 + 99.000 21 23 + 99.900 36 38 + 99.990 51 54 + 99.999 67 69 +'''] + +So in this case, many more measurements would have had to be made, +for example at the 95% level, 14 measurements in total for a two-sided test. + +[endsect] +[section:two_sample_students_t Comparing the means of two samples with the Students-t test] + +Imagine that we have two samples, and we wish to determine whether +their means are different or not. This situation often arises when +determining whether a new process or treatment is better than an old one. + +In this example, we'll be using the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3531.htm +Car Mileage sample data] from the +[@http://www.itl.nist.gov NIST website]. The data compares +miles per gallon of US cars with miles per gallon of Japanese cars. + +The sample code is in +[@../../../example/students_t_two_samples.cpp students_t_two_samples.cpp]. + +There are two ways in which this test can be conducted: we can assume +that the true standard deviations of the two samples are equal or not. +If the standard deviations are assumed to be equal, then the calculation +of the t-statistic is greatly simplified, so we'll examine that case first. +In real life we should verify whether this assumption is valid with a +Chi-Squared test for equal variances. + +We begin by defining a procedure that will conduct our test assuming equal +variances: + + // Needed headers: + #include + #include + #include + // Simplify usage: + using namespace boost::math; + using namespace std; + + void two_samples_t_test_equal_sd( + double Sm1, // Sm1 = Sample 1 Mean. + double Sd1, // Sd1 = Sample 1 Standard Deviation. + unsigned Sn1, // Sn1 = Sample 1 Size. + double Sm2, // Sm2 = Sample 2 Mean. + double Sd2, // Sd2 = Sample 2 Standard Deviation. + unsigned Sn2, // Sn2 = Sample 2 Size. + double alpha) // alpha = Significance Level. + { + + +Our procedure will begin by calculating the t-statistic, assuming +equal variances the needed formulae are: + +[equation dist_tutorial1] + +where Sp is the "pooled" standard deviation of the two samples, +and /v/ is the number of degrees of freedom of the two combined +samples. We can now write the code to calculate the t-statistic: + + // Degrees of freedom: + double v = Sn1 + Sn2 - 2; + cout << setw(55) << left << "Degrees of Freedom" << "= " << v << "\n"; + // Pooled variance: + double sp = sqrt(((Sn1-1) * Sd1 * Sd1 + (Sn2-1) * Sd2 * Sd2) / v); + cout << setw(55) << left << "Pooled Standard Deviation" << "= " << v << "\n"; + // t-statistic: + double t_stat = (Sm1 - Sm2) / (sp * sqrt(1.0 / Sn1 + 1.0 / Sn2)); + cout << setw(55) << left << "T Statistic" << "= " << t_stat << "\n"; + +The next step is to define our distribution object, and calculate the +complement of the probability: + + students_t dist(v); + double q = cdf(complement(dist, fabs(t_stat))); + cout << setw(55) << left << "Probability that difference is due to chance" << "= " + << setprecision(3) << scientific << 2 * q << "\n\n"; + +Here we've used the absolute value of the t-statistic, because we initially +want to know simply whether there is a difference or not (a two-sided test). +However, we can also test whether the mean of the second sample is greater +or is less (one-sided test) than that of the first: +all the possible tests are summed up in the following table: + +[table +[[Hypothesis][Test]] +[[The Null-hypothesis: there is +*no difference* in means] +[Reject if complement of CDF for |t| < significance level / 2: + +`cdf(complement(dist, fabs(t))) < alpha / 2`]] + +[[The Alternative-hypothesis: there is a +*difference* in means] +[Reject if complement of CDF for |t| > significance level / 2: + +`cdf(complement(dist, fabs(t))) < alpha / 2`]] + +[[The Alternative-hypothesis: Sample 1 Mean is *less* than +Sample 2 Mean.] +[Reject if CDF of t > significance level: + +`cdf(dist, t) > alpha`]] + +[[The Alternative-hypothesis: Sample 1 Mean is *greater* than +Sample 2 Mean.] + +[Reject if complement of CDF of t > significance level: + +`cdf(complement(dist, t)) > alpha`]] +] + +[note +For a two-sided test we must compare against alpha / 2 and not alpha.] + +Most of the rest of the sample program is pretty-printing, so we'll +skip over that, and take a look at the sample output for alpha=0.05 +(a 95% probability level). For comparison the dataplot output +for the same data is in +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm +section 1.3.5.3] of the __handbook. + +[pre''' + ________________________________________________ + Student t test for two samples (equal variances) + ________________________________________________ + + Number of Observations (Sample 1) = 249 + Sample 1 Mean = 20.14458 + Sample 1 Standard Deviation = 6.41470 + Number of Observations (Sample 2) = 79 + Sample 2 Mean = 30.48101 + Sample 2 Standard Deviation = 6.10771 + Degrees of Freedom = 326.00000 + Pooled Standard Deviation = 326.00000 + T Statistic = -12.62059 + Probability that difference is due to chance = 5.273e-030 + + Results for Alternative Hypothesis and alpha = 0.0500''' + + Alternative Hypothesis Conclusion + Sample 1 Mean != Sample 2 Mean NOT REJECTED + Sample 1 Mean < Sample 2 Mean NOT REJECTED + Sample 1 Mean > Sample 2 Mean REJECTED +] + +So with a probability that the difference is due to chance of just +5.273e-030, we can safely conclude that there is indeed a difference. + +The tests on the alternative hypothesis show that we must +also reject the hypothesis that Sample 1 Mean is +greater than that for Sample 2: in this case Sample 1 represents the +miles per gallon for Japanese cars, and Sample 2 the miles per gallon for +US cars, so we conclude that Japanese cars are on average more +fuel efficient. + +Now that we have the simple case out of the way, let's look for a moment +at the more complex one: that the standard deviations of the two samples +are not equal. In this case the formula for the t-statistic becomes: + +[equation dist_tutorial2] + +And for the combined degrees of freedom we use the +[@http://en.wikipedia.org/wiki/Welch-Satterthwaite_equation Welch-Satterthwaite] +approximation: + +[equation dist_tutorial3] + +Note that this is one of the rare situations where the degrees-of-freedom +parameter to the Student's t distribution is a real number, and not an +integer value. + +[note +Some statistical packages truncate the effective degrees of freedom to +an integer value: this may be necessary if you are relying on lookup tables, +but since our code fully supports non-integer degrees of freedom there is no +need to truncate in this case. Also note that when the degrees of freedom +is small then the Welch-Satterthwaite approximation may be a significant +source of error.] + +Putting these formulae into code we get: + + // Degrees of freedom: + double v = Sd1 * Sd1 / Sn1 + Sd2 * Sd2 / Sn2; + v *= v; + double t1 = Sd1 * Sd1 / Sn1; + t1 *= t1; + t1 /= (Sn1 - 1); + double t2 = Sd2 * Sd2 / Sn2; + t2 *= t2; + t2 /= (Sn2 - 1); + v /= (t1 + t2); + cout << setw(55) << left << "Degrees of Freedom" << "= " << v << "\n"; + // t-statistic: + double t_stat = (Sm1 - Sm2) / sqrt(Sd1 * Sd1 / Sn1 + Sd2 * Sd2 / Sn2); + cout << setw(55) << left << "T Statistic" << "= " << t_stat << "\n"; + +Thereafter the code and the tests are performed the same as before. Using +are car mileage data again, here's what the output looks like: + +[pre''' + __________________________________________________ + Student t test for two samples (unequal variances) + __________________________________________________ + + Number of Observations (Sample 1) = 249 + Sample 1 Mean = 20.145 + Sample 1 Standard Deviation = 6.4147 + Number of Observations (Sample 2) = 79 + Sample 2 Mean = 30.481 + Sample 2 Standard Deviation = 6.1077 + Degrees of Freedom = 136.87 + T Statistic = -12.946 + Probability that difference is due to chance = 1.571e-025 + + Results for Alternative Hypothesis and alpha = 0.0500''' + + Alternative Hypothesis Conclusion + Sample 1 Mean != Sample 2 Mean NOT REJECTED + Sample 1 Mean < Sample 2 Mean NOT REJECTED + Sample 1 Mean > Sample 2 Mean REJECTED +] + +This time allowing the variances in the two samples to differ has yielded +a higher likelihood that the observed difference is down to chance alone +(1.571e-025 compared to 5.273e-030 when equal variances were assumed). +However, the conclusion remains the same: US cars are less fuel efficient +than Japanese models. + +[endsect] +[section:paired_st Comparing two paired samples with the Student's t distribution] + +Imagine that we have a before and after reading for each item in the sample: +for example we might have measured blood pressure before and after administration +of a new drug. We can't pool the results and compare the means before and after +the change, because each patient will have a different baseline reading. +Instead we calculate the difference between before and after measurements +in each patient, and calculate the mean and standard deviation of the differences. +To test whether a significant change has taken place, we can then test +the null-hypothesis that the true mean is zero using the same procedure +we used in the single sample cases previously discussed. + +That means we can: + +* [link math_toolkit.dist.stat_tut.weg.st_eg.tut_mean_intervals Calculate confidence intervals of the mean]. +If the endpoints of the interval differ in sign then we are unable to reject +the null-hypothesis that there is no change. +* [link math_toolkit.dist.stat_tut.weg.st_eg.tut_mean_test Test whether the true mean is zero]. If the +result is consistent with a true mean of zero, then we are unable to reject the +null-hypothesis that there is no change. +* [link math_toolkit.dist.stat_tut.weg.st_eg.tut_mean_size Calculate how many pairs of readings we would need +in order to obtain a significant result]. + +[endsect] + +[endsect][/section:st_eg Student's t] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/triangular.qbk b/doc/sf_and_dist/distributions/triangular.qbk new file mode 100644 index 000000000..eb04ee5a3 --- /dev/null +++ b/doc/sf_and_dist/distributions/triangular.qbk @@ -0,0 +1,168 @@ +[section:triangular_dist Triangular Distribution] + + +``#include `` + + namespace boost{ namespace math{ + template + class triangular_distribution; + + typedef triangular_distribution<> triangular; + + template + class triangular_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + + triangular_distribution(RealType lower = -1, RealType mode = 0) RealType upper = 1); // Constructor. + : m_lower(lower), m_mode(mode), m_upper(upper) // Default is -1, 0, +1 triangular distribution. + // Accessor functions. + RealType lower()const; + RealType mode()const; + RealType upper()const; + }; // class triangular_distribution + + }} // namespaces + +The [@http://en.wikipedia.org/wiki/Triangular_distribution triangular distribution] +is a [@http://en.wikipedia.org/wiki/Continuous_distribution continuous] +[@http://en.wikipedia.org/wiki/Probability_distribution probability distribution] +with a lower limit a, +[@http://en.wikipedia.org/wiki/Mode_%28statistics%29 mode c], +and upper limit b. + +The triangular distribution is often used where the distribution is only vaguely known, +but, like the [@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 uniform distribution], +upper and limits are 'known', but a 'best guess', the mode or center point, is also added. +It has been recommended as a +[@http://www.worldscibooks.com/mathematics/etextbook/5720/5720_chap1.pdf proxy for the beta distribution.] +The distribution is used in business decision making and project planning. + +The [@http://en.wikipedia.org/wiki/Triangular_distribution triangular distribution] +is a distribution with the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function]: + +f(x) = + +* 2(x-a)/(b-a) (c-a) for a <= x <= c + +* 2(b-x)/(b-a)(b-c) for c < x <= b + +Parameter a (lower) can be any finite value. +Parameter b (upper) can be any finite value > a (lower). +Parameter c (mode) a <= c <= b. This is the most probable value. + +The [@http://en.wikipedia.org/wiki/Random_variate random variate] x must also be finite, and is supported lower <= x <= upper. + +The triangular distribution may be appropriate when an assumption of a normal distribution +is unjustified because uncertainty is caused by rounding and quantization from analog to digital conversion. +Upper and lower limits are known, and the most probable value lies midway. + +The distribution simplifies when the 'best guess' is either the lower or upper limit - a 90 degree angle triangle. +The default chosen is the 001 triangular distribution which expresses an estimate that the lowest value is the most likely; +for example, you believe that the next-day quoted delivery date is most likely +(knowing that a quicker delivery is impossible - the postman only comes once a day), +and that longer delays are decreasingly likely, +and delivery is assumed to never take more than your upper limit. + +The following graph illustrates how the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function PDF] +varies with the various parameters: + +[$../graphs/triangular_pdf.png] + +and cumulative distribution function + +[$../graphs/triangular_cdf.png] + +[h4 Member Functions] + + triangular_distribution(RealType lower = 0, RealType mode = 0 RealType upper = 1); + +Constructs a [@http://en.wikipedia.org/wiki/triangular_distribution triangular distribution] +with lower /lower/ (a) and upper /upper/ (b). + +Requires that the /lower/, /mode/ and /upper/ parameters are all finite, +otherwise calls __domain_error. + + RealType lower()const; + +Returns the /lower/ parameter of this distribution (default -1). + + RealType mode()const; + +Returns the /mode/ parameter of this distribution (default 0). + + RealType upper()const; + +Returns the /upper/ parameter of this distribution (default+1). + +[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 variable is \lower\ to \upper\, +and the supported range is lower <= x <= upper. + +[h4 Accuracy] + +The triangular distribution is implemented with simple arithmetic operators and so should have errors within an epsilon or two, +except quantiles with arguments nearing the extremes of zero and unity. + +[h4 Implementation] + +In the following table, a is the /lower/ parameter of the distribution, +c is the /mode/ parameter, +b is the /upper/ parameter, +/x/ is the random variate, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = 0 for x < mode, 2(x-a)\/(b-a)(c-a) else 2*(b-x)\/((b-a)(b-c))]] +[[cdf][Using the relation: cdf = 0 for x < mode (x-a)[super 2]\/((b-a)(c-a)) else 1 - (b-x)[super 2]\/((b-a)(b-c))]] +[[cdf complement][Using the relation: q = 1 - p ]] +[[quantile][let p0 = (c-a)\/(b-a) the point of inflection on the cdf, +then given probability p and q = 1-p: + +x = sqrt((b-a)(c-a)p) + a ; for p < p0 + +x = c ; for p == p0 + +x = b - sqrt((b-a)(b-c)q) ; for p > p0 + +(See [@../../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details.)]] +[[quantile from the complement][As quantile (See [@../../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details.)]] +[[mean][(a + b + 3) \/ 3 ]] +[[variance][(a[super 2]+b[super 2]+c[super 2] - ab - ac - bc)\/18]] +[[mode][c]] +[[skewness][(See [@../../../../../boost/math/distributions/triangular.hpp /boost/math/distributions/triangular.hpp] for details). ]] +[[kurtosis][12\/5]] +[[kurtosis excess][-3\/5]] +] + +Some 'known good' test values were obtained from +[@http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm Statlet: Calculate and plot probability distributions] + +[h4 References] + +* [@http://en.wikipedia.org/wiki/Triangular_distribution Wikpedia triangular distribution] +* [@http://mathworld.wolfram.com/TriangularDistribution.html Weisstein, Eric W. "Triangular Distribution." From MathWorld--A Wolfram Web Resource.] +* Evans, M.; Hastings, N.; and Peacock, B. "Triangular Distribution." Ch. 40 in Statistical Distributions, 3rd ed. New York: Wiley, pp. 187-188, 2000, ISBN - 0471371246] +* [@http://www.brighton-webs.co.uk/distributions/triangular.asp Brighton Webs Ltd. BW D-Calc 1.0 Distribution Calculator] +* [@http://www.worldscibooks.com/mathematics/etextbook/5720/5720_chap1.pdf The Triangular Distribution including its history.] +* [@http://www.measurement.sk/2002/S1/Wimmer2.pdf Gejza Wimmer, Viktor Witkovsky and Tomas Duby, +Measurement Science Review, Volume 2, Section 1, 2002, Proper Rounding Of The Measurement Results Under The Assumption Of Triangular Distribution.] + +[endsect][/section:triangular_dist triangular] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/uniform.qbk b/doc/sf_and_dist/distributions/uniform.qbk new file mode 100644 index 000000000..098a8d150 --- /dev/null +++ b/doc/sf_and_dist/distributions/uniform.qbk @@ -0,0 +1,134 @@ +[section:uniform_dist Uniform Distribution] + + +``#include `` + + namespace boost{ namespace math{ + template + class uniform_distribution; + + typedef uniform_distribution<> uniform; + + template + class uniform_distribution + { + public: + typedef RealType value_type; + + uniform_distribution(RealType lower = 0, RealType upper = 1); // Constructor. + : m_lower(lower), m_upper(upper) // Default is standard uniform distribution. + // Accessor functions. + RealType lower()const; + RealType upper()const; + }; // class uniform_distribution + + }} // namespaces + +The uniform distribution, also known as a rectangular distribution, +is a probability distribution that has constant probability. + +The [@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 continuous uniform distribution] +is a distribution with the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function]: + +f(x) = + +* 1 / (upper - lower) for lower < x < upper + +* zero for x < lower or x > upper + +and in this implementation: + +* 1 / (upper - lower) for x = lower or x = upper + +The choice of x = lower or x = upper is made because statistical use of this distribution judged is most likely: +the method of maximum likelihood uses this definition. + +There is also a [@http://en.wikipedia.org/wiki/Discrete_uniform_distribution *discrete* uniform distribution]. + +Parameters lower and upper can be any finite value. + +The [@http://en.wikipedia.org/wiki/Random_variate random variate] +x must also be finite, and is supported lower <= x <= upper. + +The lower parameter is also called the +[@http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm location parameter], +[@http://en.wikipedia.org/wiki/Location_parameter that is where the origin of a plot will lie], +and (upper - lower) is also called the [@http://en.wikipedia.org/wiki/Scale_parameter scale parameter]. + +The following graph illustrates how the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function PDF] +varies with the shape parameter: + +[$../graphs/uniform_pdf.png] + +Likewise for the CDF: + +[$../graphs/uniform_cdf.png] + +[h4 Member Functions] + + uniform_distribution(RealType lower = 0, RealType upper = 1); + +Constructs a [@http://en.wikipedia.org/wiki/uniform_distribution +uniform distribution] with lower /lower/ (a) and upper /upper/ (b). + +Requires that the /lower/ and /upper/ parameters are both finite; +otherwise if infinity or NaN then calls __domain_error. + + RealType lower()const; + +Returns the /lower/ parameter of this distribution. + + RealType upper()const; + +Returns the /upper/ 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 variable is any finite value, +but the supported range is only /lower/ <= x <= /upper/. + +[h4 Accuracy] + +The uniform distribution is implemented with simple arithmetic operators and so should have errors within an epsilon or two. + +[h4 Implementation] + +In the following table a is the /lower/ parameter of the distribution, +b is the /upper/ parameter, +/x/ is the random variate, /p/ is the probability and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = 0 for x < a, 1 / (b - a) for a <= x <= b, 0 for x > b ]] +[[cdf][Using the relation: cdf = 0 for x < a, (x - a) / (b - a) for a <= x <= b, 1 for x > b]] +[[cdf complement][Using the relation: q = 1 - p, (b - x) / (b - a) ]] +[[quantile][Using the relation: x = p * (b - a) + a; ]] +[[quantile from the complement][x = -q * (b - a) + b ]] +[[mean][(a + b) / 2 ]] +[[variance][(b - a) [super 2] / 12 ]] +[[mode][any value in \[a, b\] but a is chosen. (Would NaN be better?) ]] +[[skewness][0]] +[[kurtosis excess][-6/5 = -1.2 exactly. (kurtosis - 3)]] +[[kurtosis][9/5]] +] + +[h4 References] +* [@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 Wikpedia continuous uniform distribution] +* [@http://mathworld.wolfram.com/UniformDistribution.html Weisstein, Weisstein, Eric W. "Uniform Distribution." From MathWorld--A Wolfram Web Resource.] +* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3662.htm] + +[endsect][/section:uniform_dist Uniform] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/distributions/weibull.qbk b/doc/sf_and_dist/distributions/weibull.qbk new file mode 100644 index 000000000..140f13792 --- /dev/null +++ b/doc/sf_and_dist/distributions/weibull.qbk @@ -0,0 +1,127 @@ +[section:weibull Weibull Distribution] + + +``#include `` + + namespace boost{ namespace math{ + + template + class weibull_distribution; + + typedef weibull_distribution<> weibull; + + template + class weibull_distribution + { + public: + typedef RealType value_type; + typedef Policy policy_type; + // Construct: + weibull_distribution(RealType shape, RealType scale = 1) + // Accessors: + RealType shape()const; + RealType scale()const; + }; + + }} // namespaces + +The [@http://en.wikipedia.org/wiki/Weibull_distribution Weibull distribution] +is a continuous distribution +with the +[@http://en.wikipedia.org/wiki/Probability_density_function probability density function]: + +f(x; [alpha], [beta]) = ([alpha]\/[beta]) * (x \/ [beta])[super [alpha] - 1] * e[super -(x\/[beta])[super [alpha]]] + +For shape parameter [alpha][space] > 0, and scale parameter [beta][space] > 0, and x > 0. + +The Weibull distribution is often used in the field of failure analysis; +in particular it can mimic distributions where the failure rate varies over time. +If the failure rate is: + +* constant over time, then [alpha][space] = 1, suggests that items are failing from random events. +* decreases over time, then [alpha][space] < 1, suggesting "infant mortality". +* increases over time, then [alpha][space] > 1, suggesting "wear out" - more likely to fail as time goes by. + +The following graph illustrates how the PDF varies with the shape parameter [alpha]: + +[$../graphs/weibull.png] + +While this graph illustrates how the PDF varies with the scale parameter [beta]: + +[$../graphs/weibull2.png] + +[h4 Related distributions] + +When [alpha][space] = 3, the +[@http://en.wikipedia.org/wiki/Weibull_distribution Weibull distribution] appears similar to the +[@http://en.wikipedia.org/wiki/Normal_distribution normal distribution]. +When [alpha][space] = 1, the Weibull distribution reduces to the +[@http://en.wikipedia.org/wiki/Exponential_distribution exponential distribution]. + +[h4 Member Functions] + + weibull_distribution(RealType shape, RealType scale = 1); + +Constructs a [@http://en.wikipedia.org/wiki/Weibull_distribution +Weibull distribution] with shape /shape/ and scale /scale/. + +Requires that the /shape/ and /scale/ parameters are both greater than zero, +otherwise calls __domain_error. + + RealType shape()const; + +Returns the /shape/ parameter of this distribution. + + RealType scale()const; + +Returns the /scale/ 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 variable is \[0, [infin]\]. + +[h4 Accuracy] + +The Weibull distribution is implemented in terms of the +standard library `log` and `exp` functions plus __expm1 and __log1p +and as such should have very low error rates. + +[h4 Implementation] + + +In the following table [alpha][space] is the shape parameter of the distribution, +[beta][space] is it's scale parameter, /x/ is the random variate, /p/ is the probability +and /q = 1-p/. + +[table +[[Function][Implementation Notes]] +[[pdf][Using the relation: pdf = [alpha][beta][super -[alpha] ]x[super [alpha] - 1] e[super -(x/beta)[super alpha]] ]] +[[cdf][Using the relation: p = -__expm1(-(x\/[beta])[super [alpha]]) ]] +[[cdf complement][Using the relation: q = e[super -(x\/[beta])[super [alpha]]] ]] +[[quantile][Using the relation: x = [beta] * (-__log1p(-p))[super 1\/[alpha]] ]] +[[quantile from the complement][Using the relation: x = [beta] * (-log(q))[super 1\/[alpha]] ]] +[[mean][[beta] * [Gamma](1 + 1\/[alpha]) ]] +[[variance][[beta][super 2]([Gamma](1 + 2\/[alpha]) - [Gamma][super 2](1 + 1\/[alpha])) ]] +[[mode][[beta](([alpha] - 1) \/ [alpha])[super 1\/[alpha]] ]] +[[skewness][Refer to [@http://mathworld.wolfram.com/WeibullDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]] +[[kurtosis][Refer to [@http://mathworld.wolfram.com/WeibullDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]] +[[kurtosis excess][Refer to [@http://mathworld.wolfram.com/WeibullDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] ]] +] + +[h4 References] +* [@http://en.wikipedia.org/wiki/Weibull_distribution ] +* [@http://mathworld.wolfram.com/WeibullDistribution.html Weisstein, Eric W. "Weibull Distribution." From MathWorld--A Wolfram Web Resource.] +* [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3668.htm Weibull in NIST Exploratory Data Analysis] + +[endsect][/section:weibull Weibull] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/ellint_carlson.qbk b/doc/sf_and_dist/ellint_carlson.qbk new file mode 100644 index 000000000..de09a536d --- /dev/null +++ b/doc/sf_and_dist/ellint_carlson.qbk @@ -0,0 +1,213 @@ +[/ +Copyright (c) 2006 Xiaogang Zhang +Copyright (c) 2006 John Maddock +Use, modification and distribution are subject to the +Boost Software License, Version 1.0. (See accompanying file +LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +] + +[section:ellint_carlson Elliptic Integrals - Carlson Form] + +[heading Synopsis] + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z) + + template + ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z, const ``__Policy``&) + + }} // namespaces + + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z) + + template + ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z, const ``__Policy``&) + + }} // namespaces + + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p) + + template + ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p, const ``__Policy``&) + + }} // namespaces + + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_rc(T1 x, T2 y) + + template + ``__sf_result`` ellint_rc(T1 x, T2 y, const ``__Policy``&) + + }} // namespaces + + +[heading Description] + +These functions return Carlson's symmetrical elliptic integrals, the functions +have complicated behavior over all their possible domains, but the following +graph gives an idea of their behavior: + +[$../graphs/ellint_c.png] + +The return type of these functions is computed using the __arg_pomotion_rules +when the arguments are of different types: otherwise the return is the same type +as the arguments. + + template + ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z) + + template + ``__sf_result`` ellint_rf(T1 x, T2 y, T3 z, const ``__Policy``&) + +Returns Carlson's Elliptic Integral R[sub F]: + +[equation ellint9] + +Requires that all of the arguments are non-negative, and at most +one may be zero. Otherwise returns the result of __domain_error. + +[optional_policy] + + template + ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z) + + template + ``__sf_result`` ellint_rd(T1 x, T2 y, T3 z, const ``__Policy``&) + +Returns Carlson's elliptic integral R[sub D]: + +[equation ellint10] + +Requires that x and y are non-negative, with at most one of them +zero, and that z >= 0. Otherwise returns the result of __domain_error. + +[optional_policy] + + template + ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p) + + template + ``__sf_result`` ellint_rj(T1 x, T2 y, T3 z, T4 p, const ``__Policy``&) + +Returns Carlson's elliptic integral R[sub J]: + +[equation ellint11] + +Requires that x, y and z are non-negative, with at most one of them +zero, and that ['p != 0]. Otherwise returns the result of __domain_error. + +[optional_policy] + +When ['p < 0] the function returns the +[@http://en.wikipedia.org/wiki/Cauchy_principal_value Cauchy principal value] +using the relation: + +[equation ellint17] + + template + ``__sf_result`` ellint_rc(T1 x, T2 y) + + template + ``__sf_result`` ellint_rc(T1 x, T2 y, const ``__Policy``&) + +Returns Carlson's elliptic integral R[sub C]: + +[equation ellint12] + +Requires that ['x > 0] and that ['y != 0]. +Otherwise returns the result of __domain_error. + +[optional_policy] + +When ['y < 0] the function returns the +[@http://mathworld.wolfram.com/CauchyPrincipalValue.html Cauchy principal value] +using the relation: + +[equation ellint18] + +[heading Testing] + +There are two sets of tests. + +Spot tests compare selected values with test data given in: + +[:B. C. Carlson, ['[@http://arxiv.org/abs/math.CA/9409227 +Numerical computation of real or complex elliptic integrals]]. Numerical Algorithms, +Volume 10, Number 1 / March, 1995, pp 13-26.] + +Random test data generated using NTL::RR at 1000-bit precision and our +implementation checks for rounding-errors and/or regressions. + +There are also sanity checks that use the inter-relations between the integrals +to verify their correctness: see the above Carlson paper for details. + +[heading Accuracy] + +These functions are computed using only basic arithmetic operations, so +there isn't much variation in accuracy over differing platforms. +Note that only results for the widest floating-point type on the +system are given as narrower types have __zero_error. All values +are relative errors in units of epsilon. + +[table Errors Rates in the Carlson Elliptic Integrals +[[Significand Size] [Platform and Compiler] [R[sub F]] [R[sub D]] [R[sub J]] [R[sub C]]] +[[53] [Win32 / Visual C++ 8.0] [Peak=2.9 Mean=0.75] [Peak=2.6 Mean=0.9] [Peak=108 Mean=6.9] [Peak=2.4 Mean=0.6] ] +[[64] [Red Hat Linux / G++ 3.4] [Peak=2.5 Mean=0.75] [Peak=2.7 Mean=0.9] [Peak=105 Mean=8] [Peak=1.9 Mean=0.7] ] +[[113] [HP-UX / HP aCC 6] [Peak=5.3 Mean=1.6] [Peak=2.9 Mean=0.99] [Peak=180 Mean=12] [Peak=1.8 Mean=0.7] ] +] + +[heading Implementation] + +The key of Carlson's algorithm [[link ellint_ref_carlson79 Carlson79]] is the +duplication theorem: + +[equation ellint13] + +By applying it repeatedly, ['x], ['y], ['z] get +closer and closer. When they are nearly equal, the special case equation + +[equation ellint16] + +is used. More specifically, ['[R F]] is evaluated from a Taylor series +expansion to the fifth order. The calculations of the other three integrals +are analogous. + +For ['p < 0] in ['R[sub J](x, y, z, p)] and ['y < 0] in ['R[sub C](x, y)], +the integrals are singular and their +[@http://mathworld.wolfram.com/CauchyPrincipalValue.html Cauchy principal values] +are returned via the relations: + +[equation ellint17] + +[equation ellint18] + +[endsect] diff --git a/doc/sf_and_dist/ellint_introduction.qbk b/doc/sf_and_dist/ellint_introduction.qbk new file mode 100644 index 000000000..c93dd5fec --- /dev/null +++ b/doc/sf_and_dist/ellint_introduction.qbk @@ -0,0 +1,224 @@ +[/ +Copyright (c) 2006 Xiaogang Zhang +Use, modification and distribution are subject to the +Boost Software License, Version 1.0. (See accompanying file +LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +] + +[section:ellint_intro Elliptic Integral Overview] + +The main reference for the elliptic integrals is: + +[:M. Abramowitz and I. A. Stegun (Eds.) (1964) +Handbook of Mathematical Functions with Formulas, Graphs, and +Mathematical Tables, +National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.] + +Mathworld also contain a lot of useful background information: + +[:[@http://mathworld.wolfram.com/EllipticIntegral.html Weisstein, Eric W. +"Elliptic Integral." From MathWorld--A Wolfram Web Resource.]] + +As does [@http://en.wikipedia.org/wiki/Elliptic_integral Wikipedia Elliptic integral]. + +[h4 Notation] + +All variables are real numbers unless otherwise noted. + +[h4 [#ellint_def]Definition] + +[equation ellint1] + +is called elliptic integral if ['R(t, s)] is a rational function +of ['t] and ['s], and ['s[super 2]] is a cubic or quartic polynomial +in ['t]. + +Elliptic integrals generally can not be expressed in terms of +elementary functions. However, Legendre showed that all elliptic +integrals can be reduced to the following three canonical forms: + +Elliptic Integral of the First Kind (Legendre form) + +[equation ellint2] + +Elliptic Integral of the Second Kind (Legendre form) + +[equation ellint3] + +Elliptic Integral of the Third Kind (Legendre form) + +[equation ellint4] + +where + +[equation ellint5] + +[note ['[phi]] is called the amplitude. + +['k] is called the modulus. + +['[alpha]] is called the modular angle. + +['n] is called the characteristic.] + +[caution Perhaps more than any other special functions the elliptic +integrals are expressed in a variety of different ways. In particular, +the final parameter /k/ (the modulus) may be expressed using a modular +angle [alpha], or a parameter /m/. These are related by: + +k = sin[alpha] + +m = k[super 2] = sin[super 2][alpha] + +So that the integral of the third kind (for example) may be expressed as +either: + +[Pi](n, [phi], k) + +[Pi](n, [phi] \\ [alpha]) + +[Pi](n, [phi]| m) + +To further complicate matters, some texts refer to the ['complement +of the parameter m], or 1 - m, where: + +1 - m = 1 - k[super 2] = cos[super 2][alpha] + +This implementation uses /k/ throughout: this matches the requirements +of the [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf +Technical Report on C++ Library Extensions]. However, you should +be extra careful when using these functions!] + +When ['[phi]] = ['[pi]] / 2, the elliptic integrals are called ['complete]. + +Complete Elliptic Integral of the First Kind (Legendre form) + +[equation ellint6] + +Complete Elliptic Integral of the Second Kind (Legendre form) + +[equation ellint7] + +Complete Elliptic Integral of the Third Kind (Legendre form) + +[equation ellint8] + +Carlson [[link ellint_ref_carlson77 Carlson77]] [[link ellint_ref_carlson78 Carlson78]] gives an alternative definition of +elliptic integral's canonical forms: + +Carlson's Elliptic Integral of the First Kind + +[equation ellint9] + +where ['x], ['y], ['z] are nonnegative and at most one of them +may be zero. + +Carlson's Elliptic Integral of the Second Kind + +[equation ellint10] + +where ['x], ['y] are nonnegative, at most one of them may be zero, +and ['z] must be positive. + +Carlson's Elliptic Integral of the Third Kind + +[equation ellint11] + +where ['x], ['y], ['z] are nonnegative, at most one of them may be +zero, and ['p] must be nonzero. + +Carlson's Degenerate Elliptic Integral + +[equation ellint12] + +where ['x] is nonnegative and ['y] is nonzero. + +[note ['R[sub C](x, y) = R[sub F](x, y, y)] + +['R[sub D](x, y, z) = R[sub J](x, y, z, z)]] + + +[h4 [#ellint_theorem]Duplication Theorem] + +Carlson proved in [[link ellint_ref_carlson78 Carlson78]] that + +[equation ellint13] + +[h4 [#ellint_formula]Carlson's Formulas] + +The Legendre form and Carlson form of elliptic integrals are related +by equations: + +[equation ellint14] + +In particular, + +[equation ellint15] + +[h4 Numerical Algorithms] + +The conventional methods for computing elliptic integrals are Gauss +and Landen transformations, which converge quadratically and work +well for elliptic integrals of the first and second kinds. +Unfortunately they suffer from loss of significant digits for the +third kind. Carlson's algorithm [[link ellint_ref_carlson79 Carlson79]] [[link ellint_ref_carlson78 Carlson78]], by contrast, +provides a unified method for all three kinds of elliptic integrals +with satisfactory precisions. + +[h4 [#ellint_refs]References] + +Special mention goes to: + +[:A. M. Legendre, ['Traitd des Fonctions Elliptiques et des Integrales +Euleriennes], Vol. 1. Paris (1825).] + +However the main references are: + +# [#ellint_ref_AS]M. Abramowitz and I. A. Stegun (Eds.) (1964) +Handbook of Mathematical Functions with Formulas, Graphs, and +Mathematical Tables, +National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C. +# [#ellint_ref_carlson79]B.C. Carlson, ['Computing elliptic integrals by duplication], + Numerische Mathematik, vol 33, 1 (1979). +# [#ellint_ref_carlson77]B.C. Carlson, ['Elliptic Integrals of the First Kind], + SIAM Journal on Mathematical Analysis, vol 8, 231 (1977). +# [#ellint_ref_carlson78]B.C. Carlson, ['Short Proofs of Three Theorems on Elliptic Integrals], + SIAM Journal on Mathematical Analysis, vol 9, 524 (1978). +# [#ellint_ref_carlson81]B.C. Carlson and E.M. Notis, ['ALGORITHM 577: Algorithms for Incomplete + Elliptic Integrals], ACM Transactions on Mathematmal Software, + vol 7, 398 (1981). +# B. C. Carlson, ['On computing elliptic integrals and functions]. J. Math. and +Phys., 44 (1965), pp. 36-51. +# B. C. Carlson, ['A table of elliptic integrals of the second kind]. Math. Comp., 49 +(1987), pp. 595-606. (Supplement, ibid., pp. S13-S17.) +# B. C. Carlson, ['A table of elliptic integrals of the third kind]. Math. Comp., 51 (1988), +pp. 267-280. (Supplement, ibid., pp. S1-S5.) +# B. C. Carlson, ['A table of elliptic integrals: cubic cases]. Math. Comp., 53 (1989), pp. +327-333. +# B. C. Carlson, ['A table of elliptic integrals: one quadratic factor]. Math. Comp., 56 (1991), +pp. 267-280. +# B. C. Carlson, ['A table of elliptic integrals: two quadratic factors]. Math. Comp., 59 +(1992), pp. 165-180. +# B. C. Carlson, ['[@http://arxiv.org/abs/math.CA/9409227 +Numerical computation of real or complex elliptic integrals]]. Numerical Algorithms, +Volume 10, Number 1 / March, 1995, p13-26. +# B. C. Carlson and John L. Gustafson, ['[@http://arxiv.org/abs/math.CA/9310223 +Asymptotic Approximations for Symmetric Elliptic Integrals]], +SIAM Journal on Mathematical Analysis, Volume 25, Issue 2 (March 1994), 288-303. + + +The following references, while not directly relevent to our implementation, +may also be of interest: + +# R. Burlisch, ['Numerical Compuation of Elliptic Integrals and Elliptic Functions.] +Numerical Mathematik 7, 78-90. +# R. Burlisch, ['An extension of the Bartky Transformation to Incomplete +Elliptic Integrals of the Third Kind]. Numerical Mathematik 13, 266-284. +# R. Burlisch, ['Numerical Compuation of Elliptic Integrals and Elliptic Functions. III]. +Numerical Mathematik 13, 305-315. +# T. Fukushima and H. Ishizaki, ['[@http://adsabs.harvard.edu/abs/1994CeMDA..59..237F +Numerical Computation of Incomplete Elliptic Integrals of a General Form.]] +Celestial Mechanics and Dynamical Astronomy, Volume 59, Number 3 / July, 1994, +237-251. + +[endsect] diff --git a/doc/sf_and_dist/ellint_legendre.qbk b/doc/sf_and_dist/ellint_legendre.qbk new file mode 100644 index 000000000..d461d8b8e --- /dev/null +++ b/doc/sf_and_dist/ellint_legendre.qbk @@ -0,0 +1,343 @@ +[/ +Copyright (c) 2006 Xiaogang Zhang +Copyright (c) 2006 John Maddock +Use, modification and distribution are subject to the +Boost Software License, Version 1.0. (See accompanying file +LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +] + +[section:ellint_1 Elliptic Integrals of the First Kind - Legendre Form] + +[heading Synopsis] + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_1(T1 k, T2 phi); + + template + ``__sf_result`` ellint_1(T1 k, T2 phi, const ``__Policy``&); + + template + ``__sf_result`` ellint_1(T k); + + template + ``__sf_result`` ellint_1(T k, const ``__Policy``&); + + }} // namespaces + +[heading Description] + +These two functions evaluate the incomplete elliptic integral of the first kind +['F([phi], k)] and its complete counterpart ['K(k) = F([pi]/2, k)]. + +[$../graphs/ellint_1.png] + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types: when they are the same type then the result +is the same type as the arguments. + + template + ``__sf_result`` ellint_1(T1 k, T2 phi); + + template + ``__sf_result`` ellint_1(T1 k, T2 phi, const ``__Policy``&); + +Returns the incomplete elliptic integral of the first kind ['F([phi], k)]: + +[equation ellint2] + +Requires -1 <= k <= 1, otherwise returns the result of __domain_error. + +[optional_policy] + + template + ``__sf_result`` ellint_1(T k); + + template + ``__sf_result`` ellint_1(T k, const ``__Policy``&); + +Returns the complete elliptic integral of the first kind ['K(k)]: + +[equation ellint6] + +Requires -1 <= k <= 1, otherwise returns the result of __domain_error. + +[optional_policy] + +[heading Accuracy] + +These functions are computed using only basic arithmetic operations, so +there isn't much variation in accuracy over differing platforms. +Note that only results for the widest floating point type on the +system are given as narrower types have __zero_error. All values +are relative errors in units of epsilon. + +[table Errors Rates in the Elliptic Integrals of the First Kind +[[Significand Size] [Platform and Compiler] [F([phi], k)] [K(k)] ] +[[53] [Win32 / Visual C++ 8.0] [Peak=3 Mean=0.8] [Peak=1.8 Mean=0.7] ] +[[64] [Red Hat Linux / G++ 3.4] [Peak=2.6 Mean=1.7] [Peak=2.2 Mean=1.8] ] +[[113] [HP-UX / HP aCC 6] [Peak=4.6 Mean=1.5] [Peak=3.7 Mean=1.5] ] +] + + +[heading Testing] + +The tests use a mixture of spot test values calculated using the online +calculator at [@http://functions.wolfram.com/ functions.wolfram.com], +and random test data generated using +NTL::RR at 1000-bit precision and this implementation. + +[heading Implementation] + +These functions are implemented in terms of Carlson's integrals +using the relations: + +[equation ellint19] + +and + +[equation ellint20] + + +[endsect] + +[section:ellint_2 Elliptic Integrals of the Second Kind - Legendre Form] + +[heading Synopsis] + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_2(T1 k, T2 phi); + + template + ``__sf_result`` ellint_2(T1 k, T2 phi, const ``__Policy``&); + + template + ``__sf_result`` ellint_2(T k); + + template + ``__sf_result`` ellint_2(T k, const ``__Policy``&); + + }} // namespaces + +[heading Description] + +These two functions evaluate the incomplete elliptic integral of the second kind +['E([phi], k)] and its complete counterpart ['E(k) = E([pi]/2, k)]. + +[$../graphs/ellint_2.png] + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types: when they are the same type then the result +is the same type as the arguments. + + template + ``__sf_result`` ellint_2(T1 k, T2 phi); + + template + ``__sf_result`` ellint_2(T1 k, T2 phi, const ``__Policy``&); + +Returns the incomplete elliptic integral of the second kind ['E([phi], k)]: + +[equation ellint3] + +Requires -1 <= k <= 1, otherwise returns the result of __domain_error. + +[optional_policy] + + template + ``__sf_result`` ellint_2(T k); + + template + ``__sf_result`` ellint_2(T k, const ``__Policy``&); + +Returns the complete elliptic integral of the first kind ['E(k)]: + +[equation ellint7] + +Requires -1 <= k <= 1, otherwise returns the result of __domain_error. + +[optional_policy] + +[heading Accuracy] + +These functions are computed using only basic arithmetic operations, so +there isn't much variation in accuracy over differing platforms. +Note that only results for the widest floating point type on the +system are given as narrower types have __zero_error. All values +are relative errors in units of epsilon. + +[table Errors Rates in the Elliptic Integrals of the Second Kind +[[Significand Size] [Platform and Compiler] [F([phi], k)] [K(k)] ] +[[53] [Win32 / Visual C++ 8.0] [Peak=4.6 Mean=1.2] [Peak=3.5 Mean=1.0] ] +[[64] [Red Hat Linux / G++ 3.4] [Peak=4.3 Mean=1.1] [Peak=4.6 Mean=1.2] ] +[[113] [HP-UX / HP aCC 6] [Peak=5.8 Mean=2.2] [Peak=10.8 Mean=2.3] ] +] + + +[heading Testing] + +The tests use a mixture of spot test values calculated using the online +calculator at [http://@functions.wolfram.com +functions.wolfram.com], and random test data generated using +NTL::RR at 1000-bit precision and this implementation. + +[heading Implementation] + +These functions are implemented in terms of Carlson's integrals +using the relations: + +[equation ellint21] + +and + +[equation ellint22] + + +[endsect] + +[section:ellint_3 Elliptic Integrals of the Third Kind - Legendre Form] + +[heading Synopsis] + +`` + #include +`` + + namespace boost { namespace math { + + template + ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi); + + template + ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi, const ``__Policy``&); + + template + ``__sf_result`` ellint_3(T1 k, T2 n); + + template + ``__sf_result`` ellint_3(T1 k, T2 n, const ``__Policy``&); + + }} // namespaces + +[heading Description] + +These two functions evaluate the incomplete elliptic integral of the third kind +['[Pi](n, [phi], k)] and its complete counterpart ['[Pi](n, k) = E(n, [pi]/2, k)]. + +[$../graphs/ellint_3.png] + +The return type of these functions is computed using the __arg_pomotion_rules +when the arguments are of different types: when they are the same type then the result +is the same type as the arguments. + + template + ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi); + + template + ``__sf_result`` ellint_3(T1 k, T2 n, T3 phi, const ``__Policy``&); + +Returns the incomplete elliptic integral of the third kind ['[Pi](n, [phi], k)]: + +[equation ellint4] + +Requires ['-1 <= k <= 1] and ['n < 1/sin[super 2]([phi])], otherwise +returns the result of __domain_error (outside this range the result +would be complex). + +[optional_policy] + +[caution In addition, the region where ['n > 1] and [phi][space] ['is not in the range] +\[0, [pi]\/2\] is currently unsupported and returns the result of __domain_error. +For this reason it is recomended that you keep [phi][space] inside its "natural" range +of \[0, [pi]\/2\].] + + template + ``__sf_result`` ellint_3(T1 k, T2 n); + + template + ``__sf_result`` ellint_3(T1 k, T2 n, const ``__Policy``&); + +Returns the complete elliptic integral of the first kind ['[Pi](n, k)]: + +[equation ellint8] + +Requires ['-1 <= k <= 1] and ['n < 1], otherwise returns the +result of __domain_error (outside this range the result would be complex). + +[opitonal_policy] + +[heading Accuracy] + +These functions are computed using only basic arithmetic operations, so +there isn't much variation in accuracy over differing platforms. +Note that only results for the widest floating point type on the +system are given as narrower types have __zero_error. All values +are relative errors in units of epsilon. + +[table Errors Rates in the Elliptic Integrals of the Third Kind +[[Significand Size] [Platform and Compiler] [[Pi](n, [phi], k)] [[Pi](n, k)] ] +[[53] [Win32 / Visual C++ 8.0] [Peak=29 Mean=2.2] [Peak=3 Mean=0.8] ] +[[64] [Red Hat Linux / G++ 3.4] [Peak=14 Mean=1.3] [Peak=2.3 Mean=0.8] ] +[[113] [HP-UX / HP aCC 6] [Peak=10 Mean=1.4] [Peak=4.2 Mean=1.1] ] +] + + +[heading Testing] + +The tests use a mixture of spot test values calculated using the online +calculator at [@http://functions.wolfram.com +functions.wolfram.com], and random test data generated using +NTL::RR at 1000-bit precision and this implementation. + +[heading Implementation] + +The implementation for [Pi](n, [phi], k) first siphons off the special cases: + +['[Pi](0, [phi], k) = F([phi], k)] + +['[Pi](n, [pi]/2, k) = [Pi](n, k)] + +and + +[equation ellint23] + +Then if n < 0 the relations (A&S 17.7.15/16): + +[equation ellint24] + +are used to shift /n/ to the range \[0, 1\]. + +Then the relations: + +['[Pi](n, -[phi], k) = -[Pi](n, [phi], k)] + +['[Pi](n, [phi]+m[pi], k) = [Pi](n, [phi], k) + 2m[Pi](n, k)] + +are used to move [phi][space] to the range \[0, [pi]\/2\]. + +The functions are then implemented in terms of Carlson's integrals +using the relations: + +[equation ellint25] + +and + +[equation ellint26] + +The remaining problem area occurs when n > 1 and [phi][space] is outside +the range \[0, [pi]\/2\]. In this range the reduction formula for +large [phi][space] can no longer be applied. Likewise the identities 17.7.7/8 +in A&S for reducing n to the range \[0,1\] appear to be no longer applicable. + +[endsect] diff --git a/doc/sf_and_dist/equations/bessel1.mml b/doc/sf_and_dist/equations/bessel1.mml new file mode 100644 index 000000000..63b562d20 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel1.mml @@ -0,0 +1 @@ + z2d2u dz2 + zdu dz + (z2 ν2)u = 0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel1.png b/doc/sf_and_dist/equations/bessel1.png new file mode 100644 index 0000000000000000000000000000000000000000..8359832d8766a1ecf4e9961cacbb036e8a849a00 GIT binary patch literal 1547 zcmeAS@N?(olHy`uVBq!ia0y~yU}RumV9?=UW?*30yLH-H1_p-10X`wF|NsAIU|=|N z=1f39Kub%@iWMuqeEIU?#S04yi<+96h=_=Sf`S<{X6)Fpd8Tr>Cc9$&w`x9z1YyaVaS&F)=au@#Dvb43vq2M)Y>^XAT-J1HqC6DCYxVPWCn;W02UXlQ8Q;NV!WV8MnB8@6oOqM)E4 zARw@3&z^*Ygq)ll9UUDJ5fKdyjgXL#jEsz!m>3lm6&V>B4-XF;8=F4;^wSIstjwM+ zjv*PWcO$u@Z`p|WNj_2&S<7_pppKE?+|}DVZ>Qwl|NlQUUN5)EkK?T8$_JZm`pu?) z-e<{qcBe_t)aiF8pP#!W=E;0H+4-t#EIt3dG+h^W=iigt=fsaqdQr2rC%q-OLgn6< zg6d1NjLHPhuFAeSFXVWhyyeLjzTeZcGZtxFQ@EjKviISBd+C^UiA*9#&BQmJyK`AO z??1cxnyt|@U4ug0@`WvIcI`d=o#Q6G_;6QL!wW99tGSQgI+oR_ueRu1sMXu*tmamI*xFdi5@#dSm87mlX{JpoO*sk;Zia!la9B&s(FlRiT z9n`JXJY^N`uE?DR575wR){rU6v2pgMs?(>8u|BMnV zvDn1Ocq`+g+)aOb^P@HTcecz9I`Vhf@#xKA52vy-iEXK5J?3KSAg%DL{l{OuozwCk z+;5$+>SN#gV}9Pp|1Ro}SQ9D|BC>^b?w2Bg(Ame2Zsxdp`MF_8jmj^Mm)Cuc{`~xZ z$B%cv`K#ahwO>Efy|qg~i~E=D_w^}VANTtB$gRJa|4$`O#kx4#$2W6@tKVl{fsM6i zYTe82Yd$h1u2pK`ay}loj$y8os@ndIpHJNS)4R=hyI-2uyW+bQO`uGAi`;XOU zA{a#5UMV{)n{Z#PFK4@YU&EQlPma(2v$ss9@ylwTEVcbRw}k9kXl|Av{6VW}g-%8y z%gI|D!Ub2i^{+E&I^(rp#%;pi&_agtw&U{tcD(G$vpcu(SBN@>NSrD%_gFsT{PEwX z_s=S6?wL?$+vTz0Zx00V1*cc9R&+XzFEIC}pk5+vBJMBgzQ*3sf z5VOyp-|2Ox%ZiVFh<0LUo%P7q{L9{HCq*4E`3Bu}bUd_|Q?Yh^YLV-VlHih(fPjR2 z7q|P_p0!#}x_YiUY}|Xc;d_+YLGDY-*}4||d?niUJ?hCDp49=&tZH{MxbJ08+-$ri zkym6!!D8Kl^{(g7ZD=zMNH}zM+n2pz4rOVX5zMVecU)Yy@A|5FbFVsV>{R{FU*gcQ U!!%AS6I9lFy85}Sb4q9e0Ipl=m;e9( literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel1.svg b/doc/sf_and_dist/equations/bessel1.svg new file mode 100644 index 000000000..64d8e1eee --- /dev/null +++ b/doc/sf_and_dist/equations/bessel1.svg @@ -0,0 +1,2 @@ + +z2d2udz2+zdudz+(z2−ν2)u=0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel10.mml b/doc/sf_and_dist/equations/bessel10.mml new file mode 100644 index 000000000..c8f459552 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel10.mml @@ -0,0 +1 @@ + Y ν(z) = sin(νπ)Jν(z) + cos(νπ)Y ν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel10.png b/doc/sf_and_dist/equations/bessel10.png new file mode 100644 index 0000000000000000000000000000000000000000..90f7e9f050f760b638e4a03dbd318030968f887f GIT binary patch literal 1634 zcmeAS@N?(olHy`uVBq!ia0y~yV02($U=ZP8W?*1AttN7ofq~&bfKQ0)|Ns9P7#L2R zIFXQ$uwuoEKY#x8^z>}lu))K_X3d(EloSC0ff+Mq?Afy?BqYSe#pTVLHy=KHICJJqKtO`u%tR)w!ONO(rkV{rB!!zuDxO#YI+U zSF>6y;92e#us>bm{yHPAwsjAm9+;Kj_C{h(*Usz;OC$cgmWaL%)k9vBFM1~b$k^t# zd0S@KmD`_Bd@Is=mbxc9NL1?mS*A@1Zo&BxAv_9|-jk9PQwv1cdgna(@np(I&*Z9u z(Ydp$c~?uG;q6{EHQ=33y$-Lz_p64I4%=S^Y!rC;Rqd$bskX2JHH%xa=?6N#r5@VF zu;YFtuWH)*%>K~!E=9?Fp_I1EteX;gL?)kbm=YGNC8kwb>sdI_=*J#!k-+11cjj0` zZsfa=(OP!8ahvzih8}b7p6|~XHzh3DnHKW2t-Xs?JI-8FZV6A{Q5ie!n=~Od*>IX^qGqcDsBp`Xp~rC(!ghTZbiw_uMq*JOtW}jo0%|eG$`GL zYILI&XV<%*M-RMJyR>xc=YZ6=+a5oN4~m=SaPgnswZ=-eV$+iDISN;5-0gT>H_Udh ztw~iq=BVJBspZUE;RBeX*lS?{B*pb#=;pNa}Ui+HkpMU$x--oUXef>zzO3 z?JJ0ssoVST%QYn%sa0kZzcokvV!I$$e?eH+`NATVsS6oxlmt{J7j<-ek+)S@X&uP6 zWA)d%OU|e6{{FIer~fnUk2jtbIvswWK!3F>2CzmMt3L%oQ#QQL0PBT=e&F+jc|VjrYk5+X7RgSEZC!)Hiu1@&A{?JqoN3D)fH9mobjuY&baGS25o1gL9dSAoUt1?<_ z8!CAP^)B$~*`C;>ccEZqM9bOVx`M31t9J|h7T +Y−ν(z)=sin(νπ)Jν(z)+cos(νπ)Yν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel11.mml b/doc/sf_and_dist/equations/bessel11.mml new file mode 100644 index 000000000..aa8344196 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel11.mml @@ -0,0 +1 @@ +  CF1 : fν = Jν+1 Jν = 1 2(ν+1) x 1 2(ν+2) x \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel11.png b/doc/sf_and_dist/equations/bessel11.png new file mode 100644 index 0000000000000000000000000000000000000000..866e0b55e2b4327cf0708b7bbb65fceceae685b7 GIT binary patch literal 1638 zcmeAS@N?(olHy`uVBq!ia0y~yU<_tpU@+leW?*1o5Y`r8U|={9;1lBd|Nnmm28JI$ ze$1FLBP1jwB_*Y%rsmC?Hz!VP*PHI<;s;C zH*W0MvBSp3CL$tY%9JT{=FCY*NH}uj$d)ZzbaZqcJa}MYV)Et7myC=I78aI*f`SVd zE*KaX2nYx~dGf@?#U&shKt@K!!^30Enl&OKA`%i3d-m+{@$t#~Ia!>6fi=<7#WAFU z@ojWx*)1yp+1a(6iH7SPG+HLG_&CWZJlXnm>)-$Tt0rx&aGsWPx@FmmCpR{wm86$U zRIOaXFvrd`XAYaCWM0OhtF4Pq%4+ufj1OEj*>9oI=F6cxS1+{+H=X@hn7gIeasKVi z>9TWP9Xh#mBGZL!8^t_~#J`smbnUs&I(et#Du!=USEVJ{#>TujiU<5JfGCCJv~wI z%j>|c#cy6Sf=oK;FgfdLBd36@-_I$f4@0JU_^;o(l3B<6Jww{w?yi^OuUdoq7aiI8 zZ#$#KR-<+1Zx|!)Tk9Qp{`iWHNcYkr)>8)Mi>2SCy8a02QMohiwf_>QKUZ_!McFS~ zcP@qL!>u;cZDEJS*+tW9zH65i7XLj_zpx@cY01pORa>o+)&=H0>Yu%=ai?MU`4vYQ zR!waAUYqX!Trx&iZ|kZIm!m7qTbw&n8aGdv7|iwk;r45$z3C!`%X5=oRGB!O4eeJk z`QN&{Wwk+ndU^*-Jk1bt+}-`OPu#!?1yN7i@ApRf9K4) zEvC(P@AbBi%F#FC7-UR7Kes9EZCIbXc)y%U<^GSwyNq4(fBdy*Xq1m~)?b?H!|rxu zW3Wg}tL0Ypr_&eDIn;OVhT!&P`V$u&I^x~k5wg~Sy=|82*(h6OgT&qM_Z`0O`mavQ zEas2awA!+hck5hcdldb!TGXwsa^SL%r2o$+tB<|hoaJvaCFsxj1uTM#k6cVHnc~8- zVppPU*OL!dr8XNKI9+o{bNlKeE0bN^ePrLS<>R?G>5kF8Y`>x(RtFA7st-_cyRGh3d1Cp-7YA0f?>aC&;7X5P_>D5h zlb>!{O`FP4xKZSVL`B=CS9c^IYsj)RDXnT)$@lY1JyS`K)}GI)CZ@;ddse&_@4v`# zXCi~4p+_UjkIe4lx1&F)N^^9rSme4rP$bLhh4QW@yOq;3IK^j3I?u7<7c$@!5N;On zNK#)}5xpW^!Yt^$*Y!Z1qTk$>(%WM{thq3wLg7FXgQx;)^zuN#cV6CS^z4egaofGx6`mJW99(#~9D=;ngFQ^= zFv;Xyd)>quyyYIpnVv+y#S7;KoK|rN;Zb1adRX@)dDp`&yBzO7zRsX+V#$`~c1rWM z-j3qqhh}{9Y?vXj#KF+aPtVJGPLO+jyUeq{Q>OHAyczB@b zi5$;Ui%og2La(tsajbKB_d{`h%RG~djbe#XC+!y3m~LhKY2ZIkROVCQCuhxFo>K)D zT>U0w%jtABgE^?kx?J_3;(VJoe0yT&cxG(yNb{2pFxq_T) +CF1:fν=Jν+1Jν=12(ν+1)x−12(ν+2)x−⋅⋅⋅ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel12.mml b/doc/sf_and_dist/equations/bessel12.mml new file mode 100644 index 000000000..19e88aa03 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel12.mml @@ -0,0 +1 @@ +  CF2 : p + iq = Jν + iY ν Jν + iY ν = i 1 2x + i x 12 2 ν22(x + i) + 32 2 ν2 2(x + 2i) + \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel12.png b/doc/sf_and_dist/equations/bessel12.png new file mode 100644 index 0000000000000000000000000000000000000000..291fca6beb8b00588980dbc18f6ac4e88175afc4 GIT binary patch literal 4278 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel12.svg b/doc/sf_and_dist/equations/bessel12.svg new file mode 100644 index 000000000..a46af54da --- /dev/null +++ b/doc/sf_and_dist/equations/bessel12.svg @@ -0,0 +1,2 @@ + +CF2:p+iq=Jν′+iYν′Jν+iYν=(i−12x)+ix[(12)2−ν22(x+i)+(32)2−ν22(x+2i)+â‹…â‹…â‹…] \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel13.mml b/doc/sf_and_dist/equations/bessel13.mml new file mode 100644 index 000000000..16a6465ca --- /dev/null +++ b/doc/sf_and_dist/equations/bessel13.mml @@ -0,0 +1,140 @@ + + + + + + + J + μ + + + + = + + + ± + + + + + W + + q + + + γ + + + p + + + f + μ + + + + + + + + + + 1 + 2 + + + + + + + + + J + + μ + + + 1 + + + + + = + + + + J + μ + + + + + μ + x + + + + f + μ + + + + + + + + + Y + μ + + + + = + + + γ + + J + μ + + + + + + + Y + + μ + + + 1 + + + + + = + + + + Y + μ + + + + + μ + x + + + p + + + q + γ + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/bessel13.png b/doc/sf_and_dist/equations/bessel13.png new file mode 100644 index 0000000000000000000000000000000000000000..22a3c3935ef3166e9a8d783e1da7b26c5877c2ee GIT binary patch literal 3979 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 b|6`Z5VQrc5BTScpfq}u()z4*}Q$iB}OkJ_h literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel13.svg b/doc/sf_and_dist/equations/bessel13.svg new file mode 100644 index 000000000..15c2cbcf6 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel13.svg @@ -0,0 +1,2 @@ + +Jμ=±(Wq+γ(p−fμ))12Jμ+1=Jμ(μx−fμ)Yμ=γJμYμ+1=Yμ(μx−p−qγ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel14.mml b/doc/sf_and_dist/equations/bessel14.mml new file mode 100644 index 000000000..0b62c0f60 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel14.mml @@ -0,0 +1 @@ + γ = p fμ q \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel14.png b/doc/sf_and_dist/equations/bessel14.png new file mode 100644 index 0000000000000000000000000000000000000000..442ea6e1f6ed0cca9bd3685514dd6bf3491907b6 GIT binary patch literal 811 zcmeAS@N?(olHy`uVBq!ia0y~yV2ER2V9@1YW?*0t*rj94z`$@Iz$e7@|Ns9C3=Bt( z90>^t@$vE5vuDqT4 zxN+mgnKNfLY}nAy(2$XlAtEBOV8H?p5042GCLB0$V8)CYCr+H`>FK$1=Z=DcLP<%< zg9i^dI5>9f*zx7d7Y7H2nwlCG7M3krw!C=p!p6o%MMdSpg$rxetf{D|c=F_lfPjFD zi%UR2KtVx)jEu~ZB})<#5==}?a&mHXbaV_13{p~3EG#TEG&Ej6F#W*5z@+Bs;usRa zxiu`;d6j{P-DQ!tuO_f?&DG~v)H=2Dv)lJuZ~y;aZ5Ah`qUZjm=Hni_+2_yQWLOcs z=Igh0c|LvLw_Gm2erHXzaoyp&>vuU?-upc7HP;q<{i_bkCrfUTN!D9)&n-iwGx*f& zQsz6Z{5Im#j|acMB;MxF#(8j`>*9<`qgK|m^@l#3d>|t{KhMU&Z;p^vjMUCW&+gAr zTzX4;mR|sq+4h|_&l3J+S~`2h-ZZJbd(qXE(a1H?k>@vyL;3M0kp@jKzdGMy@r4Fo zy(iqcv^u3m@s3SK`;t>%8QveU{ls}&U(c7 zM<=;!+s^lPA~wg5)ot><@j2!%r$X)=x6g}Qi*NsYXuWRgM}t?!7p?9-Q*FJr$^C#z z%qrf_!`o(itoQ#Pu%7>y!e^f!J8n;Pw_%n(@-}(P`nH+w2iIqA_ zGa|JuHUII-pO`P7+jX+OVESt=li;+5r`P2}vOg4yOBKF4uRHO?Vdc)0pCQ42j+|r` z(=M4gdw;~LTc3E^TTV%>-^lsk>3*$>_mj4L5vc64sJb1H&|W8@A^2wVY_n5){kH0T zZn$yy$*M*7Qr1+TT5)`?;*0aER +γ=p−fμq \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel15.mml b/doc/sf_and_dist/equations/bessel15.mml new file mode 100644 index 000000000..68f0adad0 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel15.mml @@ -0,0 +1 @@ + Y μ = k=0ckgk Y μ+1 = 2x k=0ckhk \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel15.png b/doc/sf_and_dist/equations/bessel15.png new file mode 100644 index 0000000000000000000000000000000000000000..406a27e34481c2c72ca866a23ad2b89ad11e9176 GIT binary patch literal 2001 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel15.svg b/doc/sf_and_dist/equations/bessel15.svg new file mode 100644 index 000000000..a9a68951e --- /dev/null +++ b/doc/sf_and_dist/equations/bessel15.svg @@ -0,0 +1,2 @@ + +Yμ=−∑k=0∞ckgkYμ+1=−2x∑k=0∞ckhk \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel16.mml b/doc/sf_and_dist/equations/bessel16.mml new file mode 100644 index 000000000..b324fb23f --- /dev/null +++ b/doc/sf_and_dist/equations/bessel16.mml @@ -0,0 +1 @@ + ck = 1 k! x2 4 k \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel16.png b/doc/sf_and_dist/equations/bessel16.png new file mode 100644 index 0000000000000000000000000000000000000000..6553c87816424d542490b861b2bbd9186f9171d7 GIT binary patch literal 1398 zcmeAS@N?(olHy`uVBq!ia0y~yVCZ6CU@+%kW?*1=!mIR`fq~(0fKQ0)|Ns9P7#O~M z`7&k7lsR+e96562#*G^m78X~oTzT-|fsKvLn>TMHBqVn1*ilhYAtNL668XX-S3l=PJadG+Z;lr6TXG%&+5)u-0baX;OLReT>czAe3L_`!6 z6xOU+GhxDnfPjFEjEog4R_xicM@2=&#KgqI!=s>}pr@y&rKKe%CT3OY21y16mOM`v z$B+olvk|q?uM|YuUtW26=H;xJGYzA+o_Ts|`kSz_{r{KmvPk`8)^_gs&QJU@=eX@3 z6g*%!AStrFx|&Txh~uzziC#d%^SQhtPv&!rq(8aC{`T^snf0sQ@?M{O;AY2+;;0Mm zX`jC}zSF$(&t=`EV>_NS-FG?WYLfB(qvzTcTeOn-{_&*T{k?B0Zv*$_=F=w@rF~%N zV==xrdwG<`5{}5r2kzZ$xZ5JSD1>SEsRgW`rUV!6x;Vqd#PilutIUyj=IkliCcdoEy{^Z^dZ%cA{8Rks6;J#_1i;>2>bBoSgKOpgrZS{Pm zbte~Cyg&1E%K6-V8`d;9%-pa3JW6lnZS7{EeUqn(ui<3U93T-~Q76+uj?472x$ES&$rF2uG#KPN%>*%8Gg z$3X7|EYoL7_xrCb*0hd2m%2d0rC+silZ#epJfDbes8^H?=ah>sOJ6FU5xrYw6r`E? z(M7{lqrxeRvs(KVV?g9m+a-qW?ky3E_N;Z)Se>)DHbS!J!^W>iLRUHp%2`jEmF05z z$J<%m+ihpO+^UwP7x%ADPis*m`=hH?r8|#ZuMaCMs3?7U{Mx>AL00?r|0|vH?mB0a zjQxi@kY7cv+#yQo<+f1F>tV?&t`|AHTy3v@p@QT8{`AZBsU;n?MkUe{P z1mEl(a?iG1S@q`G((sL|nXJMi*4}1z6$%%>_pRcA zy-Pb`Lc~??nBA9ueKT8oR|e=83&v)j*YE~%S8 zTGv>#Y;x>y`Xc-=&@}mS!>jxx6dwk<>djQw7HLXEMyFP!4m-EtnCN^!;vWqpbiQl8+9&SkL6;Zqv46_(@5>)C{bSzq X!8iSkr +ck=1k!(−x24)k \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel2.mml b/doc/sf_and_dist/equations/bessel2.mml new file mode 100644 index 000000000..07563a976 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel2.mml @@ -0,0 +1 @@ + Jν(z) = 12zνk=0 (14z2)kk!Γ(ν + k + 1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel2.png b/doc/sf_and_dist/equations/bessel2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9198e62919a41054ea48e237666a7564fffb4d GIT binary patch literal 2619 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 O5b$*Mb6Mw<&;$T{+#Q1e literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel2.svg b/doc/sf_and_dist/equations/bessel2.svg new file mode 100644 index 000000000..018061483 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel2.svg @@ -0,0 +1,2 @@ + +Jν(z)=(12z)ν∑k=0∞(−14z2)kk!Γ(ν+k+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel3.mml b/doc/sf_and_dist/equations/bessel3.mml new file mode 100644 index 000000000..aaf2b9977 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel3.mml @@ -0,0 +1 @@ + Y ν(z) = Jν(z) cos(νπ) Jν(z) sin(νπ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel3.png b/doc/sf_and_dist/equations/bessel3.png new file mode 100644 index 0000000000000000000000000000000000000000..d61c69ce7868b7f86fff9d956caa30378883090d GIT binary patch literal 1871 zcmeAS@N?(olHy`uVBq!ia0y~yVB}0G|-o|Ns9pFfg1r zaUvlhVa19SfByXG>FL?9VS|T<$CWErjvP7C($ezf%a@9Z3KbO<4GoQkhK3g}UOag4 zASWkh%9JTLZrrf3u@MmwIdI^>oH=t!N=kTmcpMxYe*E~s!NJkd(P3g@a_7z+85x<3 zjEn^f7OYvbCM6|BKtN!|j2V0O>ynwp4+ zh=PKG9XobBdGh4Kg$q7DK1-G?QBY7|VPV;_Ws8A?wVqYrkoR=C%EQTzdrVbX$pI2)Y+xEnzPSx zE3fTf+<0*BgPslcSN~crJM-5#in-u*+4@zY#iHM}c-#fA&Ivonf9}NZpu!0O*9v{I zJ>qrew5`eVI+gb6P=Sachh~Akh4OoERmQp1HLp*FI&D{t_4mGMV<(ZIoy2hIL0kdb zf$3cFn$JJVt}Xl(ZhrNNS&GL^9XXKn6XOH54|p2%zh?b?CN8RJK3A6cjbVA^?J2&0 zqgHR#NnR?yRqA(7#y!=wyV)A1?2_z}%rCcLta!f8f~WQNMF}CT*Qwe`7F{7mF|&jF zO5^_PD!l&A-|xRzaP^#%=ToY>tY5{k7}y?X&5E0%D3@TKJuzrE1S@w5h&MA~k-d?w$?#>2OkcL)_?=U>A6sX9iubMB{mQhQ-*-jX zy_*Lf3kY3{-*-)J^3KlP>WRU%EhhICUPzX5l~||aw!CJl$opmQ_eRREQs?JcR@o@_ zr`y*tFVbEA_vwm?)9Oph4qUShyJ&ytg@EMa>k>k4CGlHAB>b|RbCRBN?oE9kcOgYR zjQ5MLh~n9(%-BU%wW^r)4{9q+^QCb6E96#@X_J zFZ6GGdinDwE?MbWNG+&rE5ak+Te9wPYn({O?&#_gNMKmpQq_7+0M>V+jaf!#9Nxzyvu`vzA0oc z@o`x$vZHA=iv)Y}%4<6$yA6Zy)LAYOSU0EdN7;d_cU-$l6(8Dl@9e6M)d^I$+WBZ% z-60#>DcNs?r>Q>v9P`yxEAV^n?3wR3cIc)i|4O)@-0m8^?ZQ~4kFCU#Gp#p?Iq5rgm^wyWW}bu(mNid=d!fu-pBiO=(&+D_H# z-nsHc^O6Zx?MI$w&N?)y{jTQP1!unp+A7OVoK(~6QlTvT+TBX@!lBzfSDLr2wL2M9 zvM=qE{p|3oO}hFua=xO0Dq|<#F7bW4$fWhpz1S<~*nje?%d5yNIGcUp>j#@1JUc62l=!MOhjHyJOZmFL zbQPa$^3i1e*IpN$R1_Co-52P(JX=z8$yDb&lT%&~|0cZnFyqXDmkC!7o#UzNSDUo% zpqu23;}NbprF9vOmX~f_h@0wlY1`S1N$Zx1{}K+n7k#^@X2Pj;v!#Q2m~L%6H_0JLuAjkCU51r#HV!nUaue zy7C>{}UE@t4C*d%a|T4^yAy^<8rwf|Ldxc)Vr?P zCG+RWiC3rRuG`1$(>q5n_wwn3{(akmU)7`^4o^?GZ+ZREM()e|51mW8qx+`xlcQC0 r{#o9YO7SkYe=5j+S?u@zAG7xEe#IBhI;9yH7#KWV{an^LB{Ts5I8J}_ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel3.svg b/doc/sf_and_dist/equations/bessel3.svg new file mode 100644 index 000000000..f3f7f41a8 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel3.svg @@ -0,0 +1,2 @@ + +Yν(z)=Jν(z)cos(νπ)−J−ν(z)sin(νπ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel4.mml b/doc/sf_and_dist/equations/bessel4.mml new file mode 100644 index 000000000..5236dd3d7 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel4.mml @@ -0,0 +1 @@ + Jν+1(z) = 2ν z Jν(z) Jν1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel4.png b/doc/sf_and_dist/equations/bessel4.png new file mode 100644 index 0000000000000000000000000000000000000000..d770813f7dd64236329e8ec1226bc4c721deedbb GIT binary patch literal 1179 zcmeAS@N?(olHy`uVBq!ia0y~yVEDwqz@Wv!%)r2~@AkJV3=9l=1AIbU|NsBbz`*d~ z!-s@~ggbZc{P^)hL_{PcB;>(^2MZP~P*6}fbLI>S3rj^s#hf{Fo;-Q7V#SJpfPgPw zzNo0E)YQ~;baY&}aKXdFqo=3m#EBCc8X5-<9B^=Oc=6(ejEu~mKYtn;8Zt66)~s2R zl9D1IATVRbj3Y;mOqnv}&6_tZEiDBF1rsJr*t2I(PEL-Ci_480H!LhHA|fJo?AUST z$`v0UpCwC{l$4a1n3&ku*u=!dNJvOUIqVqI4Nj;(1gHf`xb9XX&%V|GSZIe>SjNX_#O-^#1 zP%QV~xm8Pb&j0D|Ri1RbtD-aUL(awhKb?0ty-c`Ofb7{a`m44BWLWc#q zcwfheY`D%R=0~&y@h+<*mE+o*EOBUQsaiAfJKl};NZ^Pg;g_INVmT>D)t67e5fS9yuu{`>gy z&*Fl;X~nDdE%A{%{m7T6ImP&zy{udMpWWG$7<`;KGCB*L_`kf>{-^&hs6YNu#oNDC z313#N?06@*KS9Rd=567USQ4qJ06A)5R&X zKA0v3K4`n_`!-b~Cq;bKUa6Jm6}Ya(wOw3RwsdQF@Yk2SHr?`;&&oKz>|53f2Vb#O zd$(*%D|>Kj^-QkN(4e +Jν+1(z)=2νzJν(z)−Jν−1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel5.mml b/doc/sf_and_dist/equations/bessel5.mml new file mode 100644 index 000000000..d6356f074 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel5.mml @@ -0,0 +1 @@ + Y ν+1(z) = 2ν z Y ν(z) Y ν1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel5.png b/doc/sf_and_dist/equations/bessel5.png new file mode 100644 index 0000000000000000000000000000000000000000..39d296fee405fcdd1b0d664d3dfb7a17088e4164 GIT binary patch literal 1241 zcmeAS@N?(olHy`uVBq!ia0y~yVED?wz@Wv!%)r19!~S+H0|Ud}0G|-o|Ns9pFfg1r zaUvlhVa19SfByXG>FL?9VS|T<$CWErjvP7C($ezf%a@9Z3KbO<4GoQkhK3g}UOag4 zASWkh%9JTLZrrf3u@MmwIdI^>oH=t!N=kTmcpMxYe*E~s!NJkd(P3g@a_7z+85x<3 zjEn^f7OYvbCM6|BKtN!|j2UOnoO$!+O+i7ygb5S&?Aa3%65`_G^5MgWfPerC3yYeX znuv&q9XobBdGh4Kg$q7DK1-G?iHV7kkdV;P(b=+Pi-LlJXpm|p0|WDQPZ!6K4A!R+ zxzV=_M10qjGA&xVhN!ccGapNPFU?r}_-b<2v=U zIPTUYE^#waNHMH@v9ajO2JO{<9~h~me4V{XJu=2cbj}tEef}#l&pM%> zS?^NwS=(I|_ZW}*Bo*kF)E#^CJv8iHeZG#s0(zuoH$U{cC97q`V$&g86l-@fanY==mf0r{+ZEWIn{d454mEj__3Zf% z&jx)d+_zIlPWFSYM#NTD@r?34#Z_+$B^kXr)eSin6)oG?@0|KHyYu!v`5*r##hu=L z*U;;r+|1c)Kk91uADAh*Kj8Z3a~I^kojAMpPt47o(fG}+Sxt*79?hxM$lK*!UL))3sGcqI`P_xPc|J!y*_@ZYs_;A7 zzOCK zFPkjhc~4Z=clGvw*tzqTy?nb>PdYPd?bNJCXH0yn1K%&2w=C4 +Yν+1(z)=2νzYν(z)−Yν−1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel6.mml b/doc/sf_and_dist/equations/bessel6.mml new file mode 100644 index 000000000..62aedf9e8 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel6.mml @@ -0,0 +1 @@ + Jν(z) = ν zJν(z) Jν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel6.png b/doc/sf_and_dist/equations/bessel6.png new file mode 100644 index 0000000000000000000000000000000000000000..963eec95f195941c60972521906b06afca326979 GIT binary patch literal 1142 zcmeAS@N?(olHy`uVBq!ia0y~yV7SJ>z@W;(%)r3FY5jaP0|Udx0G|-o|Ns9pFfe@h z@F5`~;m(~qKYsiW5fKRq33>3~!GZ+~6ciNBoH@h7!ctLDF=x)4Cr_TNSg|4?AmGcF zFDfc3H8nLI9UT`gT=4Ml=;`S>apJ^|9XnpUc(G>9nv|53J$v@txN$>6Lu1O6DHA44 zIB?*AgM)*NjLe@ue;OJZGBPp*1O#Txm~rIDk(`_y7Z;b7mXzL_|as6ck*! za>d8TXUUQ!B_$;$CMH|9Y~kVIiHV7+QhA!nz`)$#>Eaj?!FhFhcJyomk>i({v~{=M zo4Z+jZANtT?cBL}#rOX=>t3H+?BVdhasDLn33KNB`NY4o;7~+x=C)T$=ZJpYUSdPi#;tls zdt~EwNnXFEvhCX6y1?Ck+0EYYtO!Y zZ>{j*#mCvhx^?3L5#Y9Pkz5N)7d;W=jyn14ZCS}Vp?yEN3$yScm&z&W`_cUw{u>(l}yy5&{vltkE^X%>md6**C^Vdkb~tykM6S~-=9aC z!Zy`Se13H)W8-SWDHY)h+R9jUGCAB7_FSI&YRCS`+ryp-Yj0`$)3Nxq__L|GZVGa0 z+wLf>@oDV~IM({XE5bA@!fs=_V@E?Kg8jT_N=KV}kT1BlotYZtmqy-28^! zD>F>gUN>7D{*<`$+T_a<=FW|mm{RlF`1AGCU$bp)t~$%wuJ-YawnEmg12=w5bk+*4 z6)2C8)447c8>browDd?__}BL6KXE$S=Gt%f+V%J7Q(o5Fx>I$h*VuP-7pJab?sRpi z)02A?zDjH%zxGzO`y~vF_d|~>FIpQpM?>M@r_Y}qYCUeIX#L3wi0!bB)-ziyx=*`! zk$c;r<9`*)NJ-Y=dDZ!PLJIdF%E ztLLs)=1S+Yi)<1#4oSlVZ zw0+vuhX;0~UgCZ->A;Qy>tjPr4DzObQ`%}_p!ezblwJS3tNr3@9OgV`U|?YIboFyt I=akR{070rNV*mgE literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel6.svg b/doc/sf_and_dist/equations/bessel6.svg new file mode 100644 index 000000000..9107b9f4f --- /dev/null +++ b/doc/sf_and_dist/equations/bessel6.svg @@ -0,0 +1,2 @@ + +Jν′(z)=νzJν(z)−Jν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel7.mml b/doc/sf_and_dist/equations/bessel7.mml new file mode 100644 index 000000000..484ad8206 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel7.mml @@ -0,0 +1 @@ + Y ν(z) = ν zY ν(z) Y ν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel7.png b/doc/sf_and_dist/equations/bessel7.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba3590ac2abfb317110c5e3f76553a5bd142d73 GIT binary patch literal 1159 zcmeAS@N?(olHy`uVBq!ia0y~yV7SS^z@W;(%)r3#!(fjZ0|UdZ0G|-o|Ns9pFfg1r zaUvlhVa19SfByXG>FL?9VS|T<$CWErjvP7C($ezf%a@9Z3KbO<4GoQkhK3g}UOag4 zASWkh%9JTLZrrf3u@MmwIdI^>oH=t!N=kTmcpMxYe*E~s!NJkd(P3g@vSY`N4b;o{=*=FOWkXU+r! z1Xx&D)YQ~OL_`!66g+wIfh7<7@fHFTmkOX5xD{=4u0Z#647o;hKbU99{p@mZcm`~MXCD=yh(6792V zirEaF)yePJGk>U`S~2P7*#!G9AuEzBQ#b4v7ghSsB6>XJ#GhxW{!cCk! zXLZx58-}}6UvFFfa$jtagmqf~?IlaT|1X!elbQNPrLTQ$py&Pb1=6-1rmxSQy=NsK zabok)>W8)Rex{*s&M~hOs1~?faw0}(*22@K^9ugo<4KrwRC7Z&Pm3sD;uTo|_xlsH zkE#`xDBP;Ev|Bh+Q~uJOx+wvT&G}+CBjVZ>Rvd8IaI)=ILT=toiA?iFYWc;tlG^`& znjpBzoJtU%=x)k|X`PPY4e>Jsi*))GYx5Mw}>+j#b+9fSsC2M}yCRfJxq*BY* z;JXSeg(k%XOK-%LoPA&W)}$xp+q`wxyuBq}hFx8M$)+?!@n3#2_X>#vUO63$r*>-} z-L^RU#e|g;FFrcGtY`YACT*2dlNa2Ku;04(%w#L>Dap=03q9NOb;ZNG-mVIF-YJe})Z#&T~EOHuTOo^g!AriCy+GEE{{5$gTc<2Y>PSxE(-Xekw|>#?8J*|V zr+1i}?(~~fTB07mYr}M_$<{cZ2uLi zY_V(6KBcd_Q%uq#C0VB~%Hnu>W4B;&?#8MjPDevE&fborD_-0`_&Gs!dv)b1#)Ha- zvvM~c+jHYSD~o8xQ`ectetOj&QR2|L!D_5fm2x^)qirZi2u-aciL}LuCb?lLW5?CmcIJFU@p~(c|Y* zr@nh%`?z_3y literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel7.svg b/doc/sf_and_dist/equations/bessel7.svg new file mode 100644 index 000000000..707b8ff75 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel7.svg @@ -0,0 +1,2 @@ + +Yν′(z)=νzYν(z)−Yν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel8.mml b/doc/sf_and_dist/equations/bessel8.mml new file mode 100644 index 000000000..861350f5f --- /dev/null +++ b/doc/sf_and_dist/equations/bessel8.mml @@ -0,0 +1 @@ + W = Jν(z)Y ν(z) Y ν(z)Jν(z) = Y ν(z)Jν+1(z) Jν(z)Y ν+1(z) = 2 πz \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel8.png b/doc/sf_and_dist/equations/bessel8.png new file mode 100644 index 0000000000000000000000000000000000000000..bbc79ef9f0f3215a5f8d8cb654399254d7c7afad GIT binary patch literal 2289 zcmeAS@N?(olHy`uVBq!ia0y~yU@~K1V9?@VW?*2L{`lcJ1_p-10X`wF|NsAIU|`6} z$w^2^=;`U%vSrJQ7cUkpSa9dgos5i(2M-=xxpJkUq2bS;KQS>eZ{EDQaN$BrOG`~n z&6FuqPMkO)A|g^zQE}kF0R;tx6)RTk*|TTOnl&aSCJqh`KYskUapQ)Kjm?A!6K2eq z5fKp~At6yxQet3WP*6}{VPP?6&YTY)KAbsoCL|<;g@xtGlP3WI0bjm+QBhIp=;-k9 z@X*lEkdcu|Nl6h95IAz=h>MHMjvYIEe0-KHS+Zfn1|A+B4h{|-9Uaxs{C^A#>@PiC z978G?-^Sc_x@{pal~YC0B35AnL!-k^9p4}??!7H#+rRwZpH(XDxmfb{sinJrE7%{| zR8w;9qRYfoPX!mdB9{! zxBpeo-gLM%E9aMQmee_G{vXc_t2b^rd`cZSS<{`|7-hqNvAQ`Y@n`{=}- zAHOU8JJv7r;bAjb_90xbd#~W;2ib4Wzp}KRC)8YPx8#zF^5a0ChSPI9HBJ^>P!QaB zEcK0PzQux#CwEkYutqH~TCVeD?cYZZ^Z833uXMRBy?2qY)4k))OV?)w1$MNm{0!TdV2oV$rHlWyabSc0@`Fsa8t2usW4=>#~gU$L%YgB0X z@jrofFa1KVe_G@bDz5Er+3Y=6?(CONM&_vd>2^+H)w2^fPLf&xwLr-zPPa3oz{kTh ztWeR@K->9{%d8A%wqTi1#sbdgfr{-ik82C-6z`ut`{UTOS^a+=wqJOa_T|9eH1~^d z%iGPrU$1(Ybh^wT{P^GC%S{Kkn8g~{d}{oXI6XG(uR7WlrRLdoY-3ssv*N4RfITNW zBP4}Zn3?)m&V1x3s-@(Z8FFr^%-vPbiV9VaM4LP;iv8v6`|Ss_eL;F!fbNm z$zIiz-x=@pz1>|^$JfYkhRl|TyT-iEK4xa-z8}H&bl;T}Tk3rK_}FE` z+^}%7wJ#d2i}#*Q;>x;EI?aA@r2?N!$&>)O`I94hRK8wcaN=5!U$tK1oGh>3+jdX= zcy)3VuUlS4wL!`$#lxXV&+R+`@Nf933(c$4#MYOFxm z*H{CUz$J=q(jOP7tmfPOz}7qR&=i@^%GL$@BsxEa`(`~~6Wa6SvbQYv_Z0K%j@Mld zisW)n4DMR;`FUO0YmF`|&-6Q)RVF`|>c4MFT&kjSsj-!}LLvU(F3HLHld~(BCW;zu zS+`Lnqzvjz6$^s)~u?t-l31`J1cuI)?>KwYa1>!({eV+XLYnzEytw zc`Nr!=k>>rvn~G=#tO%-UjBlsc(s=hbvV{pLW5(Nr4ZQ zQhHAxxqiaHWHxWbiVfS+%hk<;25|+qK&4C4Mr=H(fSYb7K?qZdN(8Zq1G(x;d0t=ywR!HuaCjSL2rfcHka%F8%5p}GC0^h=hz@9QGVpc+wDcw zG7%Z)&ImSe*nB@C{6|`M|8d55&x-pP#2eS$dC9Qb_|Vg8zS*CPSaMk2JuUcg^35cU z?-oyfJmI+F`e6AT#lmmFYvUK&@|C)N+AG8Ox7_Pl|I|Bj?ez?sm2Yid&bOzWfq{X+ M)78&qol`;+08%nK_W%F@ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel8.svg b/doc/sf_and_dist/equations/bessel8.svg new file mode 100644 index 000000000..a220f5bf0 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel8.svg @@ -0,0 +1,2 @@ + +W=Jν(z)Yν′(z)−Yν(z)Jν′(z)=Yν(z)Jν+1(z)−Jν(z)Yν+1(z)=2Ï€z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel9.mml b/doc/sf_and_dist/equations/bessel9.mml new file mode 100644 index 000000000..06aef5b82 --- /dev/null +++ b/doc/sf_and_dist/equations/bessel9.mml @@ -0,0 +1 @@ + Jν(z) = cos(νπ)Jν(z) sin(νπ)Y ν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/bessel9.png b/doc/sf_and_dist/equations/bessel9.png new file mode 100644 index 0000000000000000000000000000000000000000..726cecdf3b9d8f912c41a4383058eea2000454bb GIT binary patch literal 1616 zcmeAS@N?(olHy`uVBq!ia0y~yV60G|-o|Ns9pFfe@h z@F5`~;m(~qKYsiW5fKRq33>3~!GZ+~6ciNBoH@h7!ctLDF=x)4Cr_TNSg|4?AmGcF zFDfc3H8nLI9UT`gT=4Ml=;`S>apJ^;2@^ClG!7g%;Nal!;>8OY8JRzS{xmc+WMpKl zS+gc3B}G6$V8)CYM~)oXvu96EPL7LTN6+_+(3VG$7#QBY8@W5b4%qISa&4oep!{9u(-V*E6zo3qD5c}Gbu!oD8Q&s)xA#g( zyBept3$h!E_j;)l?y0GJlovF&@34gLO&Ew49S4z+6yH&A4 zlI64Gx{m&X3$^qXNBa8D?ciU1QK_%(>VfA+XMZc0utmAo=VW)00m^W9Qf0#SH zH%Zbs{0YNMebvNoPd4p~mQi}P{{J1NstJGh`XwHVRk=99)o+f9L9EmsGqH`^>SC&I zXs{=zb;T%rUaFFKTlLYuS>JM0es%Zp?q^>)_oA`gBb!}c3zq6e|My$-*ZA~tH%SfS z;3teh@uvj0*}BLq$nf6TD1RdHrE?UoyS3QWuTB@Y@7}S<|LNn1zMoURhHakwd^J<` z?9_cbMUMT@I=$YEq3dnlEg=!l)r|L*LX%f+(n(G0vN2krKk4HlHJ|tM;}Z>XdE0I- z)8D$A>yOYS4$)jW&eiTr61+Ay1+Kic4^945^6!t){L{zwMoxaaQ8%|YtN+8wxziZl z>QAxRr>8LY(To>?IlcKab>D3}`E2i=7gOR>BU9r~^TbSaXZv{7cy^Tk44!S0U)XN5 z+wd;?BxuQ%(B85>{-|cOx*TVM$%d5V6b2Kes})BB=9H{*`?<*W*;3sddsZ0d?w6&*spkr zD`9$zP1I@Wo@b^W`6>~cE()v(mbKp^FW;55^J7Hc8}XhonlW>!H^ivhTdEh# z(bUX3boZk&*8%OsHTex)7u6l@-mA@9W^;2w!HiJu?mH#7=RUr@fBw}?%s+abaG(9D zyT_E_-Y);N?@N^aeq9|}Gtue(oe$b+;S>GaLK9mgo&8@N@fQwceK4^hIx$+pDltRl ziqb{9V=PnT=Nmj{F_*oU`QiWTHJXR7uajGUa@GTD`>O3mZ+jPR|0}j+t%Omdb{_BS z8(!i1trEG9T+Di;wUuKsV=_~7ZV?KQWj z)Y+Ias_o}4eq2$#KW6D>)v^S`<=b*B?SBR<`g70V=6o5*HPc{H`C+l+y?wVb^=I7r z?LW)eNZ3_TQc*O`Nxklsn3G6@JJYJat1pFmGZ`EaAR#s$P zUAr+t{HW2d3C|fD_L{!>fA;m&v#)*jnXiqD3pd}-5hLijg-d|u-*|G3r7Duh=7pA7U zre?2B?{mMzm|2`~<2vJIK0g=t4}AiEEMlD7=IR!%>+4tSGEVDNPHb6Mw<&;$U=O8wCQ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/bessel9.svg b/doc/sf_and_dist/equations/bessel9.svg new file mode 100644 index 000000000..fc54da15a --- /dev/null +++ b/doc/sf_and_dist/equations/bessel9.svg @@ -0,0 +1,2 @@ + +J−ν(z)=cos(νπ)Jν(z)−sin(νπ)Yν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta1.mml b/doc/sf_and_dist/equations/beta1.mml new file mode 100644 index 000000000..ca8c9c5d2 --- /dev/null +++ b/doc/sf_and_dist/equations/beta1.mml @@ -0,0 +1,49 @@ + + + beta + + + a + , + b + + + = + B + + + a + , + b + + + = + + + Γ + + + a + + + Γ + + + b + + + + + Γ + + + a + + + b + + + + + + + diff --git a/doc/sf_and_dist/equations/beta1.png b/doc/sf_and_dist/equations/beta1.png new file mode 100644 index 0000000000000000000000000000000000000000..66d85345118f261d7c84f410cfdebd3b0a9a704e GIT binary patch literal 617 zcmeAS@N?(olHy`uVBq!ia0y~yV0gm7z@W~-%)r2)@l|9g0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8;uunK>&>jUMTZmwTrKzfcfMZMlWHHK zAn~^EEWbPR&4(Kbb|!fJZCL%sdEd`Rg|gz1LJG+?d~2QdXs8 znKHA<$4LF7;?xffw}mZRmYZ7n{&sxPxAN%Ub=zAum=w&iOIbIy#Q5mRho_yEKI-d{ zbldvw*HIV770)#zSBC5=uGw~3!rADlPq;?psx6EsUBnH1o(Mg;7xwx(``;O@k1uZy z_Enx})IPHTmyFQ3I7F0EMqBkRo+fj)<74c6=ZFQ2dXPo0?j`rdSjzsXzP^tov> zGhe%J@IF>OB4eD6)L}9WS!`CB9n|L*!sTBD)U*vuC zRA%XZwT6#z`W7b^gFx+49Gi*Zpd!`r?0YNEt%YwGb|u-`KKOII-4T-#%B z8FY5A=U1G4>tqr5=?FuQj@U+i@4_a#l9@;1Hm0PCMERcAe%3ZcZQ>1Wwbqh3Vzuid zHW}{n>%JlIyj92cL{D*1K}NcX>B0{^d~ZwCJa_xOt6Vdue);-cPv^Yn*%0wiIj-l2 cPy$2IZKt0nye_U{U|?YIboFyt=akR{03;t2 +beta(a,b)=B(a,b)=Γ(a)Γ(b)Γ(a+b) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta2.mml b/doc/sf_and_dist/equations/beta2.mml new file mode 100644 index 000000000..553dc7930 --- /dev/null +++ b/doc/sf_and_dist/equations/beta2.mml @@ -0,0 +1,106 @@ + + + beta + + + a + , + b + + + = + + + + + + a + + + g + + 0.5 + + + a + + + b + + + g + + 0.5 + + + + + + a + + 0.5 + + + + + + + + b + + + g + + 0.5 + + + a + + + b + + + g + + 0.5 + + + + + b + + + + + e + + b + + + g + + 0.5 + + + + + + + L + + + a + + + L + + + b + + + + + L + + + c + + + + + + + diff --git a/doc/sf_and_dist/equations/beta2.png b/doc/sf_and_dist/equations/beta2.png new file mode 100644 index 0000000000000000000000000000000000000000..2a6210bbaf2d34cb23c218c289bad4519fa10c57 GIT binary patch literal 1116 zcmeAS@N?(olHy`uVBq!ia0y~yU=m|sV9@7aW?*3GC@x;hz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EiQBhI< z|Nm#;xN?Ajfq}Us$S?T+e}?O)cpVuSm`{1SIEGZ*dNaE>@3jJtTk)rV{ClF_i9ZPdvEn zkz#~F&8Ejwn@&smh_QR?D93lOa;jZ7u9&gIzU$}=PlpDEy7;p;VxNyJ_1hR2&CIPl z^ZLWC=H(yk(l#DY3wj~+{7Cu&XNj7cKmX%-4l!-M9k4IeB4G)`)E_e?Z5N0YTE6*U z7AUmf;BkYH*?p|Hb_eWZP%bw=o z9#Om%pI)f7`ijVHu51=p9S*mmGYcMN72nTK%<0izzdY+%^v)G~e?=Bfv|=vI_*#@) z&>}uL-Z?F4;?|uZHrp;n@Q5rgNz7ZTINj#l<&736T&6u2-XNjxx4rFxl|_@HET`C$ zwI_LWQl<;1W;sljeUT`3?&6~@jQ)?Mgc1aI%sKS2P*2_R)zg{!d->;!&O23oTUsS` zQB8QE)qSUYJ)!&0jbC;gKYyXOI=N7NL))pTZ~Is3FYSMSGVjrx^0X{YtCv3tv)p{H zhDh2jQ%^3`>vHuDQuV5vep=v^W^7K|?fw6sx3{jh_+A@R!f$j}Yj-p2a!oP6eP@^+ z$wf4LJjP_#$GiUi!cc{{Hm2vMcR$>ZSn;bmDe~OMLV0~r?Kw$FIz^WSo4)1h?&IqI z-u!%0wYyJ+isWQ1u^-#)be44=4r)8NS4HPggN{$dl#MsKPl!i%8!S~@=0ADM?Kqdb zug9e#SoX1s$18cwk6U*m;!DE86*)S$ekHT&d~tTN zJveKU?P;g%Y@Izv1%K~ryUUrr?45pXgvjOPwUttbowCp5c5mKsBdS7Vt~Zy6t=!(? ziu81WwTh==yOqTrA9;8^)=(+@i_yM}^$pqa3r$ydc5}JZcAYzYcvi3LvRk(|U6}Rs z$ir)~cOwGUbW4Q%oV)VdHk~bLwuKd?;YSy3D>P)|cHLTDzR>h_r?=$?4Xf#I!p;WD zHo0!Rb$iu?SznJ#tdD7Pea<9yb!z#E@_@}(@3pmF)6vlTm>JV`ZgH@DYwL@vl44Pt zmsluq#CDxqEYcZbVkp(^A6vNYR&-hSEbg_DK{Az#6Cz6F-sQ1Ry%)@MW!?21e_tED z?qqI%7xiRKyX)zxI$D0+t#9jQ#eS+b5jQv#;Umue?XGFtv&|cBoNZ2jzHQ@;kQ|+| f%Uk6c*%(g9?bZ4)(UXsXfq}u()z4*}Q$iB}PEG~2 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/beta2.svg b/doc/sf_and_dist/equations/beta2.svg new file mode 100644 index 000000000..8eebc13d5 --- /dev/null +++ b/doc/sf_and_dist/equations/beta2.svg @@ -0,0 +1,2 @@ + +beta(a,b)=(a+g−0.5a+b+g−0.5)a−0.5(b+g−0.5a+b+g−0.5)beb+g−0.5L(a)L(b)L(c) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta3.mml b/doc/sf_and_dist/equations/beta3.mml new file mode 100644 index 000000000..30b7935c5 --- /dev/null +++ b/doc/sf_and_dist/equations/beta3.mml @@ -0,0 +1,128 @@ + + + beta + + + a + , + b + + + = + + + + + + a + + + g + + 0.5 + + + a + + + b + + + g + + 0.5 + + + + + + a + + b + + 0.5 + + + + + + + + + + a + + + g + + 0.5 + + + + + b + + + g + + 0.5 + + + + + + + + a + + + b + + + g + + 0.5 + + + 2 + + + + + + b + + + + + e + + b + + + g + + 0.5 + + + + + + + L + + + a + + + L + + + b + + + + + L + + + c + + + + + + + diff --git a/doc/sf_and_dist/equations/beta3.png b/doc/sf_and_dist/equations/beta3.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3d64ce05d2fe7f5a377900b08f3ec67fdade6f GIT binary patch literal 1313 zcmeAS@N?(olHy`uVBq!ia0y~yV9H})V9@7aW?*2*eY@=-0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8FABS28Q)xZh}YOqRG@=>i=LoU*E@sUog7IIBTg-u#gUlQFJz+snB_pxoeN$M ze{n~w>RveSW4_vnlGu}1t|`1+UC|=bota&>b4y>sEN%9$E_``rMzMv;F^`XZb%<kM~Ucx}tO5 z%k&v1*GTqW%eqx<@=;K{_@&pKBb^gZnH`Wcx3)dKBl5(S18a4yods%2((mxK@VM;| z&oiqE>X{*Ch$>D&G&`cy%aXwdOZ83WN&rL7svTNtSgs2)Q!#iSL5=nGO1t=$4k!# z0p61@-?^FWUYxcgv^VSGYewRa!qWE@ zI9l#{`HpdMQt0fRkH5z3Ra&Jx@Z1*!WU;J>R>z z%P-n6Z_jvpEOTv`)#a1t)y?vbU2{;+GuOLeC-nH={UiQWP9Ohj*WWtm*K)?FO>S)^ zQ(o2Nfbz-Dt`&BlT5{cQ*_YVK^BzV2+QDGXd-=!3EOTDFL^pZkwJuZGAF0WQ867_E zWg>BSZSj9+<-N(Fk#Rc=Eh8?!>C+a!`Rj)l~YnT2cPztEcen`xa#B@Bh49MNu`g| zBHUK(_GCG_?%IXpp|`WyXWQ-2Ts5n0^`@GF!>SR+%M1@~R&tS7cTcXmvqbCJ(jBp3 zrZYp-EFYU$NBAGgy>Z<1&MIx`>FF&Up}uKTJ&&E|2=uAjdoW7WL*lY|_ugQw`$66B zTcQiUZCveRbZX|yg4yzG+=Gog&5oWpeqD0kCEx6OJN~{ZT(WA}r*n&TYIQ$2EUkC& zmVmjly!g6FTI;8&I8|9@tUqDlHH!grS0809YMDUr%!{M|k^TK3|5vqQH%Bv(F`_?{tc&VTRMX^;D^ jw~ytTpZ}(QfI +beta(a,b)=(a+g−0.5a+b+g−0.5)a−b−0.5((a+g−0.5)(b+g−0.5)(a+b+g−0.5)2)beb+g−0.5L(a)L(b)L(c) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta4.mml b/doc/sf_and_dist/equations/beta4.mml new file mode 100644 index 000000000..d3fe984fd --- /dev/null +++ b/doc/sf_and_dist/equations/beta4.mml @@ -0,0 +1,34 @@ + + + beta + + + a + , + b + + + = + + + + a + + + b + + + b + + beta + + + a + , + b + + + 1 + + + + + diff --git a/doc/sf_and_dist/equations/beta4.png b/doc/sf_and_dist/equations/beta4.png new file mode 100644 index 0000000000000000000000000000000000000000..46466acc287cf533ece03db5693b2a92feb8c239 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0y~yV0gg5z@Wmx%)r2~yz5vY0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8@?w_I!)WHT<8d7`d*K>`OSf@2NvbwQs{m z!H&|IYZhr7UAOX{Mb z+Wi6s=V!MXJo!G@exCJgQdYLug4Fo(hBdWe4Et3lZ!kKw#-+G0FuM3i*ui}d9j5V0 z%)NIvH>gB&liJ=(FC8kU?#@hT$XB>g^4WBsufg&3J@W+*M{9@u+tgd1u!gl|Gh?Mf zSKdd?zsz}j6-9hTmtKAEQ1JiK`S}0CT22Fo((ktHd#=2UU|?Wi@O1TaS?83{1OQLS B=_LRF literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/beta4.svg b/doc/sf_and_dist/equations/beta4.svg new file mode 100644 index 000000000..f130637eb --- /dev/null +++ b/doc/sf_and_dist/equations/beta4.svg @@ -0,0 +1,2 @@ + +beta(a,b)=(a+b)bbeta(a,b+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta5.mml b/doc/sf_and_dist/equations/beta5.mml new file mode 100644 index 000000000..bf290a38b --- /dev/null +++ b/doc/sf_and_dist/equations/beta5.mml @@ -0,0 +1,49 @@ + + + beta + + + a + , + b + + + = + + + + + a + + + b + + + + + a + + + b + + + 1 + + + + + a + b + + + beta + + + a + + + 1, + b + + + 1 + + + + + diff --git a/doc/sf_and_dist/equations/beta5.png b/doc/sf_and_dist/equations/beta5.png new file mode 100644 index 0000000000000000000000000000000000000000..71a624fe458206551657a233d17897c8458d0208 GIT binary patch literal 649 zcmeAS@N?(olHy`uVBq!ia0y~yV6!)}f85kJ9d%8G=RNQ(qt9w$D0gr3-r~mSMH*e0;^qs|a zl$2jC?ccPx%1dQO zU1QG@b1pfdhW0zWa_j3_PcgsxvNwVGo<>#p;l&x>MT{G4ZOnhfeYg>JHCa@8`-eXd zKK-rd<6r$T`-4?eerVELY(`=ZF(GkzKU{b%KmE}rn-FJ z`aZpOQ3HubulMX&WHYHX?!t~_gTu|r?q5Z;{$|c!)INJtJ;&}{TQ#Dly3gM_W%HK~ zv8)%|A2u8GzyERY_+ie9e9On{Oj?dVtgI{G=Pye9v}b$ov_~7fep<1`8E{L_Grsp< zE;zGc-XzEANxSzs=;pA8$C+?TF*ny$te4&VQ(;&6C10nz(e^tZMN0UsKhOW_!#4fQ z3iYFjXA5qzZC+6L^Mk|Fsck2|`F-UyJbj=eQ%gRl!#d3BvKbxD?ZpyhQKx{^r zx{<-AKaYQ2d^3&f{gm@{$D~d#>-f59!<>7{S3Wl{4dHyD&UbUeiwk?=Sm$wY9W<`* z-nrt#gupLOZ>rX>`f$-@eHP1}N_*pf$qYXyney+kVH1q_(DamTmSxn3U8=LrJe$6s zL2lE7xlPjp&R%S~e*NQxGZ&k#KVJQ5&kwP+oBl~wCH>_vU|9S-^uxv8!ix+H3=E#G KelF{r5}E*{`7!GN literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/beta5.svg b/doc/sf_and_dist/equations/beta5.svg new file mode 100644 index 000000000..7187419cb --- /dev/null +++ b/doc/sf_and_dist/equations/beta5.svg @@ -0,0 +1,2 @@ + +beta(a,b)=(a+b)(a+b+1)abbeta(a+1,b+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta6.mml b/doc/sf_and_dist/equations/beta6.mml new file mode 100644 index 000000000..f1a7c27ea --- /dev/null +++ b/doc/sf_and_dist/equations/beta6.mml @@ -0,0 +1,48 @@ + + + i + f + + a + + b + + a + n + d + + a + + + b + = + a + + + t + h + e + n + : + + + b + e + t + a + + + a + , + b + + + = + Γ + + + b + + + + + diff --git a/doc/sf_and_dist/equations/beta6.png b/doc/sf_and_dist/equations/beta6.png new file mode 100644 index 0000000000000000000000000000000000000000..4e1a0a26e7b2c84daee3a021d37d9197282ed735 GIT binary patch literal 1467 zcmeAS@N?(olHy`uVBq!ia0y~yV7$h_z#z!M%)r199#?yTfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JzJN& z;m5-Zxo@2}5W0F}?W+XO0yT&2g6mhOm`pyfv(|%a*4^%3g1bBT>=Ogb!p^bJyAv1^ zlq!8;;}6DjvzN||xbM4Vfo=5)3+_0Xja}1@Z7lh~%Bwcd)U9w=)5@!kA{SR%9$lSK zxNKX|!Z{~6rUl(PbnQ`hIu1-p{WkNF^W3 zN?o^W?yeQOIXZDdp$q=bY7;YXy>}=^OAG6L+KEPe|VoEE2cBq%|{kc`xgY z&ilbUg(nZN5H>XT=v#%nZAWb({}l*@TEjcwlncxQID~S zH=4$1qNpmmTwCHo;mfMM(Ge}1uU-v1S7q{i#)8GUiGM4%bUvFdwdMSkVzq#>#JQ^y zq|O}7!^>8@8RQiw1mls7QyI+SGipf0E{aoXFb%MvniL8n9C!NtZ$vFIK;mH;I zzgMMRc(_WNXBzL_gTLbBzrNlSt~>44+VA#O@n^3;mA|y&eDCeI$Kzw_85kJ;|7T{{ XuCC|0tzp3@P&V;&^>bP0l+XkK&kQdV literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/beta6.svg b/doc/sf_and_dist/equations/beta6.svg new file mode 100644 index 000000000..64683ba66 --- /dev/null +++ b/doc/sf_and_dist/equations/beta6.svg @@ -0,0 +1,2 @@ + +ifa≫banda+b=athen:beta(a,b)=Γ(b) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta7.mml b/doc/sf_and_dist/equations/beta7.mml new file mode 100644 index 000000000..854360c3c --- /dev/null +++ b/doc/sf_and_dist/equations/beta7.mml @@ -0,0 +1,28 @@ + + + if + + a + = + 1 + + + then: + + + beta + + + a + , + b + + + = + + 1 + b + + + + diff --git a/doc/sf_and_dist/equations/beta7.png b/doc/sf_and_dist/equations/beta7.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3410a5f914847ae478e9a70adf70a89c781e4a GIT binary patch literal 497 zcmeAS@N?(olHy`uVBq!ia0y~yU=(6tU{K*;W?*0_+UqLHz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EiQBhI< z|Nm#;xN?Ajfq}Us$S?T+e}?O)cpVuS7~?%%978H@y_wF)*Q~(fT6yRHh0}AmLR?np zMBY)qnWQxB(+mCF4yiO2MS)3|8z)F8aC9zm@o0gex_x2XodK)v*Ocu4esBTfE9-Z$ zmLhFC7|S1Y-+um*(d~U^%kT8#FP_{CbeeAc#p<`YM@O?q1$RT)hE1HUMS96b$&osl zeT*}YKgkW!ym;G=dv*w*s$9?3F-TyQDoJQuk z+*?JQ>9(;kK}vEuZz8Af+P`J{M0Q{CNo7ZNPTaAX`(r|4IM>(HN0oMp__0qiu=h$+ zI+$l2(Er)<(85XU?synz9_U<>;O!+B@^`6782hBp8n=XhSC*x|ITg8f;=Ati=Y!?f zm5a^ne)3Q4`kB@%;nQu_R<9O*uuG*b;dXnw$G2CVa}Cxx{l4gtS0o~ITZN-j_eblJ wpatBW6JpG_IVEw`DX!e2>Qp45&&bA*yVrY0{3-6u3=9kmp00i_>zopr06Fc>*Z=?k literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/beta7.svg b/doc/sf_and_dist/equations/beta7.svg new file mode 100644 index 000000000..ee8feaf66 --- /dev/null +++ b/doc/sf_and_dist/equations/beta7.svg @@ -0,0 +1,2 @@ + +ifa=1then:beta(a,b)=1b \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta8.mml b/doc/sf_and_dist/equations/beta8.mml new file mode 100644 index 000000000..288ef1244 --- /dev/null +++ b/doc/sf_and_dist/equations/beta8.mml @@ -0,0 +1,52 @@ + + + + e + + l + c + + l + a + + l + b + + + + + + + + l + a + + + l + c + + + + + a + + + + + + + l + b + + + l + c + + + + + b + + + + diff --git a/doc/sf_and_dist/equations/beta8.png b/doc/sf_and_dist/equations/beta8.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ac6f93e27e780f5e300756650a9fad47e9b3d5 GIT binary patch literal 1310 zcmeAS@N?(olHy`uVBq!ia0y~yV3@+dz@W*&%)r3#WZMT{1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biU>E|x^I12ZaG_Tnn zwkC7!q7$s$hbE~{U3Ibj($Q`66C~#Rx^PrdP>@M2>%Ya1!v()0-V5!y6tu9wb*_Pp z&UAsC!w>ePmML9iW-e_AHfb!GwW)AgyI$V2sR119XTDroPx*8>ze|5IS-&yNK2x;vwoqTF$i>Cm zJ;Q@DX7+D05Be|QEA+bg`=8U^65Tx?%M1+@+0jCoV)hTKFZWyl480c8#~O)8pr5ZJ4y= zl4qkgZ?x5)wc>M@7DUhF_x@Y|=b+%`xpr9*flrIumrS&8n`M%8G-q||A(d|eGt;70 z6uQRF+&RH +elc−la−lb(lalc)a(lblc)b \ No newline at end of file diff --git a/doc/sf_and_dist/equations/beta_dist_kurtosis.mml b/doc/sf_and_dist/equations/beta_dist_kurtosis.mml new file mode 100644 index 000000000..42e2a32b1 --- /dev/null +++ b/doc/sf_and_dist/equations/beta_dist_kurtosis.mml @@ -0,0 +1,72 @@ + + + 6 + + + + α + 3 + + + + α + 2 + + + + 2 + β + + 1 + + + + + + β + 2 + + + + β + + 1 + + + + 2 + α + β + + + β + + + 2 + + + + + α + β + + + α + + + β + + + 2 + + + + + α + + + β + + + 3 + + + + + + + diff --git a/doc/sf_and_dist/equations/beta_dist_kurtosis.png b/doc/sf_and_dist/equations/beta_dist_kurtosis.png new file mode 100644 index 0000000000000000000000000000000000000000..1be258bfdeca74a4e9173205c21d1d34e1d97e12 GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0y~yVDw~QV9@4ZW?*1AB;Qrfz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E{6KPd0WZ5Gp3rwv7{Pu{Y1>wA?5Lz$mXe#Wvdy8U8O@TKdl ztMbpj_6fh;;4__ZLviGTExQ-2xGi%;_SVJy>*Z`#JnmW5c5=sW#xp9L?)~vqy|j9j zrLJ4tmIr@k-gRcR>R-=%-B&L3E$^{U=9gY?|8j2i>}~{rsd9EgR_7m1UVPqGPh>a;Qt!f64fh zo1`Tt#3tN7qw;CG;mwdYr#{IK|y(Te_IqSglNGEvh*yt +6α3−α2(2β−1)+β2(β−1)−2αβ(β+2)αβ(α+β+2)(α+β+3) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/binomial_ref1.mml b/doc/sf_and_dist/equations/binomial_ref1.mml new file mode 100644 index 000000000..6b334c385 --- /dev/null +++ b/doc/sf_and_dist/equations/binomial_ref1.mml @@ -0,0 +1,212 @@ + + + + + + f + + + k + ; + n + , + p + + + + + = + + + + + n + + + C + k + + + p + k + + + + + 1 + + p + + + + n + + k + + + + + + + + + + = + + + + + n + ! + + + k + ! + + + n + + k + + + ! + + + + p + k + + + + + 1 + + p + + + + n + + k + + + + + + + + + + = + + + + + Γ + + + n + + + 1 + + + + + Γ + + + k + + + 1 + + + Γ + + + n + + k + + + 1 + + + + + + p + k + + + + + 1 + + p + + + + n + + k + + + + + + + + + + = + + + + + + p + k + + + + + 1 + + p + + + + n + + k + + + + + B + + + k + + + 1, + n + + k + + + 1 + + + + + n + + + 1 + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/binomial_ref1.png b/doc/sf_and_dist/equations/binomial_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..684aaa0efe57139d8578e041f183370d99eecd75 GIT binary patch literal 1627 zcmeAS@N?(olHy`uVBq!ia0y~yU`%FUU|7w;%)r3Va)Ear0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8&@KmzB>v$t~>wycV8csDRk(v zfSg*4_uZ+tRtle!U}lp})?9p4fKhTg#{#d5=5HldiAXBRt$VS!XSS7P)Bkq8dxv6v zef<6GN!CV@C;PvKHU8NB4eQY&)3<(>U zbf)Mi-k)$TTfnC7(6n7=Oz$Num1Jk0lU||meVZgNr)0aHhRgxR)omX)AATx%_lF=d$z@ z`%W@>Mr-s}21^N@(Jt`+a5wW$aT>pl=U`PS2ne^%q;o7`wJ%--en4}0~RtA3Y1UQ>1;6VXw6s6JHMu_V14GE35JrB4O@Fo z&gjuh@i``9q?T;73?%k3jtRt8OE!w*_;&A_^5ep5+}_88d1m%JS6FA&yH9U^j{C7~ zFBz`xN>SgenZ%=h+5h6Q9_gB+yJ|KiKN98se3CE4#&-T2kz?AQPo7KMqc{Id&x@&t zKRagKORcrL`TT8!qutDlr=KmgaK8JfW>f!fF43PU@!v(IKAk+1*b)9@a_!uWZ8b)V zXZmk=q*W)Cnmu>Ef7+DtlFA0fZC#fq`fuY+F624>cct?DGdT?rMOv$Gv}Xc>RB2bJ-={Q);#;LiG{0W z(~sHRD*UWvF=L;i?ekWrJ<^7NckVg6)8WwtYc=e z^RW~k#bhJ3WG>{eOIhRB^!dn5{^(=ZPG_T`^ z^@P?X@rsYjjO*l1C_Pr}nY%dh{1-W+x?YPah1I)dzk8qfm3eEzM%mLllFe^484AQE z^L#yiSMc?@&<~p@C9!Y1P%U_A?TiykGuKzJs!1emPg2_b<1t&^hP@K|b<{R#CvObh zTPRxF)p=)@#BH9+ubOH_*}tmp)gSfd*H&|~F8ljoMv_w6zP%a3=_^hf^G$nqsKnt{ z*A<(!@rHuGxbka*PtN%FgY{A0QI``x$_hH4-hQ2=lonXMXK$KAR)PmhZ))JuC66W^ zbvd)D@8#c9%U`55Wfuuq9(C^ST$3&%X}an6f~l(wCO+DD)FsTwZ`Q_^!pV~BZyqtz z60rX2z_m_s=kE|L*`SabrpIe`rb>2uwac8Bc=>6%(y^vXirnTK&n6uSkGXy7jILRy z=u|$-(|wDp&#sq<)-D!3Zcw-Nx=eJ>Nw0R9BR{Uj6-%5Gp3Zkt``^78;oDPm+0)wW zYpajxf1kBbZe!Pu+q?IsWw@WYp@tki@TAQ@@n2mzZ+jSYovr@NXzNjVK+3nQlb*zzH=h_;_ z>Wk9r=k&deS4?lNINH-4uBH2>xF +f(k;n,p)=nCkpk(1−p)n−k=n!k!(n−k)!pk(1−p)n−k=Γ(n+1)Γ(k+1)Γ(n−k+1)pk(1−p)n−k=pk(1−p)n−kB(k+1,n−k+1)(n+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/binomial_ref2.mml b/doc/sf_and_dist/equations/binomial_ref2.mml new file mode 100644 index 000000000..4d660be95 --- /dev/null +++ b/doc/sf_and_dist/equations/binomial_ref2.mml @@ -0,0 +1,98 @@ + + + + + + f + + + k + ; + n + , + p + + + + + = + + + + + n + + + C + k + + + p + k + + + + + 1 + + p + + + + n + + k + + + + + + + + + + = + + + + + n + ! + + + k + ! + + + n + + k + + + ! + + + + p + k + + + + + 1 + + p + + + + n + + k + + + + + + + + diff --git a/doc/sf_and_dist/equations/binomial_ref2.png b/doc/sf_and_dist/equations/binomial_ref2.png new file mode 100644 index 0000000000000000000000000000000000000000..82cea940c21f8f226d46d2eac5158d73b5619ad4 GIT binary patch literal 769 zcmeAS@N?(olHy`uVBq!ia0y~yU=(0rU~uPPW?*3Wq4DAl0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxJE@q{r~^} z-u<2j3=9lRB|(0{{~4ZcH}GO$U@G=>aSW-r^=9_%P0b2CuHygyUrvAKv)bW_mgB<0 zW&F9iM~f`$aOQmoN01m{!^((KP2ye|GIZklE@M% zJLbi!%Keni$~Aq@+TnNX@dq|_PL=XWJntFK{14s1DbW-`qDFYMc&APKZ!qd(z|{ zeDvIlptItPg|YPxeR{r6Vr?pX9_}z_dO5>rvA1dX{nI@9SMRW$SP^vgXk(B5)fl-G zFM@ncLheK-U%S*Awo;9|y4`D~+UE6-pFONz>9z9NtYEi|A;lLp7l*GpDQ3eqElZEf zWqruxpVyU&jy<|LrPW|f$Yl2?ar=Kh;A%-*`RuU6D)VGUxwApOa*qR9mpDmfeLQ=+ zuh4?ooy+rKP8plh_u!M!sU`MuJGlgy_#NMPAL^N%aqbNV3!}>4Cz}io-w*IO7V|xv zqsjAK+3xS6#>#VeTO1T;rl0RDzA76&bKkqd*;-3B*WWqMu#$`6yR*Z+vOk;#3{K}f W8n+0BE@xn1VDNPHb6Mw<&;$Sj8&J{! literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/binomial_ref2.svg b/doc/sf_and_dist/equations/binomial_ref2.svg new file mode 100644 index 000000000..25b7e9938 --- /dev/null +++ b/doc/sf_and_dist/equations/binomial_ref2.svg @@ -0,0 +1,2 @@ + +f(k;n,p)=nCkpk(1−p)n−k=n!k!(n−k)!pk(1−p)n−k \ No newline at end of file diff --git a/doc/sf_and_dist/equations/cauchy_ref1.mml b/doc/sf_and_dist/equations/cauchy_ref1.mml new file mode 100644 index 000000000..a8c68ca72 --- /dev/null +++ b/doc/sf_and_dist/equations/cauchy_ref1.mml @@ -0,0 +1,51 @@ + + + f + + + x + ; + + x + 0, + + γ + + + + = + + + 1 + π + + + + + γ + + + + + x + + + x + 0 + + + + 2 + + + + + γ + 2 + + + + + + + + diff --git a/doc/sf_and_dist/equations/cauchy_ref1.png b/doc/sf_and_dist/equations/cauchy_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..2092fffce43ee88d5ed9d317ea8f2b66dcaeffd1 GIT binary patch literal 606 zcmeAS@N?(olHy`uVBq!ia0y~yVB}z6V9?=UW?*1gmvk+Xfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B*aCb)T%)3*{{R1f z?|#n%1_lPEk|4j}{|ryJ8+b7=FkbLM zUX(jWH}6TeJ9+NO$`uS8c`^yj2JB6uSx03!5>Bo=x=*Pu9<#6O(AD8|A7i%3~HC||{_;k%-MMbK>yI6%qYYJ6( z_OROjFPOPHUV3Wkvbg*J7d^I@|IXNT9IIZ%B`~FZ#`nmEleR3ARtC1*VfGO_!eJh* zJ9A$5OwRE4fsMzG-?J2Rnhs2L5Lv%m@kB?=73Pg8IgK2zA~YRX)@$8% zbcvt6<0(%8w@j8}%#TN#lrB8Ky>z$g>$cDPe$*=LsTAG!R&C#pS3MePfsYmbY>K-P z(x|Uj#r8^Ga;i)1t%p_HZTVe-J1(3_ycv3-M!l=rxFh=3d +f(x;x0,γ)=1Ï€(γ(x−x0)2+γ2) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/chf.mml b/doc/sf_and_dist/equations/chf.mml new file mode 100644 index 000000000..b848bbe9e --- /dev/null +++ b/doc/sf_and_dist/equations/chf.mml @@ -0,0 +1,44 @@ + + + chf + + + d + i + s + t + , + x + + + + = + + H + + + x + + + + = + + + + + + + + x + + h + + + μ + + + d + μ + + + diff --git a/doc/sf_and_dist/equations/chf.png b/doc/sf_and_dist/equations/chf.png new file mode 100644 index 0000000000000000000000000000000000000000..2923d3137390378a2e1f693dfbd19acc4e40cdd4 GIT binary patch literal 922 zcmeAS@N?(olHy`uVBq!ia0y~yU^HT2V6fz1V_;y|TDE)>0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIM>v+02hE&{obJw@% zv4TL`!;Pn>&-$%j)OYiV)V!31Qx+Ks?Ppu~e682cM<+a9F0;=#P*80*znYD|6!)D!KH09HF{k$Ztj#s?Z%!o(E5;wc)_BRP>Au;m*&BU&mxo>7 z*7dRa?1EUc>gc+@maOw1-2Eh%3dL5opS!^IX~xv28>N|VF>YPAKIyT|(_b<2S7Wq_ z@+%)-__}m=^fajjWeFVHN`CKG4!Cg7eDRMLcC#I;r>?%V`C|`L=@mu|!SyrJyY@a; zUe*wh8v8%D`dFM_zRt7FhUZ0grTy($8T&R|_x!G&r+=?8)`S$giBAYOOS=F4w}Obg zX5sEy{bTNik1I95-x1yP_GtC~^~aBTY2Dg(X0Mk>(95^RZM*jG)cj;*adWd#znF*V zCC+ba^}XB+uPO8PbbgGHvpl!QJhMrPR&6*vyDc?H&YmQ1#(w><@Gqas@)Bnba z&YOHMm*2-@uI)`b=TmDkPWfc6UH6S=Wq3xBYWjznwYQfXG?nU`5TE>an)Kt1-~asd z>7RVeef5;B*KTlZDchEGe@ENSZTV6Ctyi^{pKiJ_F)T}X?VClv-o=75fmhG6!K*2X#~HXp?}P*Qo( zdp1p+JE^g_bH+UhMP`MqEYK9gA=&Vvf-cI6JX1s6W`xz|8O~EBZ)E P1_lOCS3j3^P6st literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/chf.svg b/doc/sf_and_dist/equations/chf.svg new file mode 100644 index 000000000..b2e59a7a4 --- /dev/null +++ b/doc/sf_and_dist/equations/chf.svg @@ -0,0 +1,2 @@ + +chf(dist,x)=H(x)=∫−∞xh(μ)dμ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/chi_squ_ref1.mml b/doc/sf_and_dist/equations/chi_squ_ref1.mml new file mode 100644 index 000000000..d10a98cf9 --- /dev/null +++ b/doc/sf_and_dist/equations/chi_squ_ref1.mml @@ -0,0 +1,44 @@ + + + Q + + = + + + + + i + = + 1 + + ν + + + + + + + + χ + i + + + + ν + i + + + + + σ + i + + + + + + 2 + + + + diff --git a/doc/sf_and_dist/equations/chi_squ_ref1.png b/doc/sf_and_dist/equations/chi_squ_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..8935b41077c8feda68d9c78d5ea15a9225d2b127 GIT binary patch literal 588 zcmeAS@N?(olHy`uVBq!ia0y~yVA#gMz+l6{%)r3#hjl{-0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8L`6mY z|NsBT?K|%o7#NsKg8YL2|7W;nem3(WiFSs-Ol^1o0?Vl*h6df zkC|<~%)9?3E~(X6Y}+X~dz%~I=h7Sw!&3Egn)C29yKg)E&6BRb+1zZ+D9zbZ=Bn0t!_oHpn+#<|rOf@^=@A=}n{3~E zR9(I}^O=q6WP!5jEj~xi?dS09D(mr?(0Sua^yH7;>P+*c-)=vDu2d*T&rDtY;LfL$ ze0w9mg(rT`vRb~;*t)z*b@Swlg;Q2dT9d85?T)~1snh;v54_>_GTX}dJ6-pT+8UK$ z@$*a1mAsi1t9P{caBle?)v3P%etfVlEj?NFe@bkVtchHXw{xX;PMb>&_e7m$Uhky( xDC-2vH>|Eo-fq9|zj>N=!1eT5?*>MOJ7K|5k#m?IF)%PNc)I$ztaD0e0s!i42U!3B literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/chi_squ_ref1.svg b/doc/sf_and_dist/equations/chi_squ_ref1.svg new file mode 100644 index 000000000..bf94addcc --- /dev/null +++ b/doc/sf_and_dist/equations/chi_squ_ref1.svg @@ -0,0 +1,2 @@ + +Q=∑i=1ν(χi−νiσi)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/chi_squ_tut1.mml b/doc/sf_and_dist/equations/chi_squ_tut1.mml new file mode 100644 index 000000000..2c3790831 --- /dev/null +++ b/doc/sf_and_dist/equations/chi_squ_tut1.mml @@ -0,0 +1,90 @@ + + + + + + + + + N + + 1 + + + + s + 2 + + + + + χ + + + + + α + 2, + + N + + 1 + + + + 2 + + + + + + + + + σ + + + + + + + + + + N + + 1 + + + + s + 2 + + + + + χ + + + + 1 + + + α + 2, + + N + + 1 + + + + 2 + + + + + + + + diff --git a/doc/sf_and_dist/equations/chi_squ_tut1.png b/doc/sf_and_dist/equations/chi_squ_tut1.png new file mode 100644 index 0000000000000000000000000000000000000000..2002ca9fa0dbfdbe7615262961f7ab1d9db1ee15 GIT binary patch literal 1204 zcmeAS@N?(olHy`uVBq!ia0y~yV02_)U~u7JV_;yA-_mZzz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E z^o_K9|8e=l;m7yq{N5hOAba%6W2ZX}u0fVO3_b!3?~W&N-1=Bk=ibTuL@T z4SW9aC@eeYb^e%r{rs0aM|MmaZ8NYsS zzjv8y^|q!D|0}lXBrNmkyv8)+LEJ8@B!zEk$F}DNaVa-3o?Evy%t||u+3d9o%bAlA zwOSXYq!bgXwXf_h);ymZ9;UoY)8%@U{#@SuR(trIrcKRy{p!lK{SGEZnQNDyo5mq) z^ZDPbhVQc?Z2Q^o1ZIc7$~h^qVPf0oIs1(5&gAtiepcZ>cW3UqBdd1AeGK}=^s_X~ zt>nYio041(*^48p*q>f~>Av*d`P@p|cguqg{ylhNif`)GDF3;(=j!&lGJn6;7LX@T5Uw+Q}lf z@2UPBwztZ!f8M@D>rXM+TqL8o1GaK0^@9_t!Az;sa=1UOQ3b@+8%+D zDZ%|uPkrWlFSqTE)&+->&x;oyd0OzqQ?QhE5^q!ArPJzlteflKRKzSyWo6C!yB-n;eo%QX_*6i2$>-Jk47nr^;Y-ABEEm`{W>WhtA#iCzr z++q=M-m~P0!S(A#sv4cgUm0!^o4#i9i#JP(9x`<-JgyO?<1RJFGGUYBorNmPj&>Uz zoXET0_T6^vQ@bCZkSc6Hx+Cr1_e)9nwtA9ke%+hO^Un)xZvJG}CRY7=qs&{MWs??{ zR@c^8Zkl#v@w0bRkLP~fzS{VphU!Oi?Q7dtcjpL3dOr#)Ht!OP{-#-Dx#z2aWE#tb zM-z%FT&&K1SfJ83`RF-`ZlOehv|ERif>~vsUP_+1)|nyW +(N−1)s2χ(α2,N−1)2≤σ≤(N−1)s2χ(1−α2,N−1)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/chi_squ_tut2.mml b/doc/sf_and_dist/equations/chi_squ_tut2.mml new file mode 100644 index 000000000..166e6f835 --- /dev/null +++ b/doc/sf_and_dist/equations/chi_squ_tut2.mml @@ -0,0 +1,24 @@ + + + + + χ + + + + + α + 2, + + N + + 1 + + + + 2 + + + + + diff --git a/doc/sf_and_dist/equations/chi_squ_tut2.png b/doc/sf_and_dist/equations/chi_squ_tut2.png new file mode 100644 index 0000000000000000000000000000000000000000..3e7b6a892c4b145a707cfc77ae8273e18de9e25c GIT binary patch literal 471 zcmeAS@N?(olHy`uVBq!ia0y~yVDMmIV9?}XV_;yI=9<5Qfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9BGd*1#Ln>~)iF(U- zSb<~CvF&$0f3@8Gt-aGYB(QN&#-^0bb@Prlu6bv3{=DA#qxl@CRD1Xy%&~s-y}S25 zZvdMgm)F1Bdpg&in6cI|pK;5g%886yv@BE@mOfY_ceX{mImUwJMAv~3#zO{&w}>~J z?ca2bCwqcx!7PSN9DH00#Gc*BO&8306UF?r#dssnr&DKn4sAM^vLM5C%6r>s9S=4> zu;JZgH6iX&OHtw#r5CDVt+TwBC$WpnJb%DuVvWF&1CeJg1?SJvcIzzNn-=-{cS_nL zNmm~>1}58UU*$aV?e#f%rWJ0S%O=P#G&$hK`RIo&ua@j(6JyO=`|zC52KCSH{y(d> z54Uvtm3(~3tmS5WU*=pr5*2Hl-nY9tXPxlL`Gp&NoA%BNPBr +χ(α2,N−1)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/chi_squ_tut3.mml b/doc/sf_and_dist/equations/chi_squ_tut3.mml new file mode 100644 index 000000000..562d7a253 --- /dev/null +++ b/doc/sf_and_dist/equations/chi_squ_tut3.mml @@ -0,0 +1,26 @@ + + + + + χ + + + + 1 + + + α + 2, + + N + + 1 + + + + 2 + + + + + diff --git a/doc/sf_and_dist/equations/chi_squ_tut3.png b/doc/sf_and_dist/equations/chi_squ_tut3.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1ec3ed1b5200a8a6c1eb0231cd96a1861b2cfd GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0y~yV2EO1V9?}XV_;y|Drc9=z`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E$vWq?YzS?mM|}HT0EcIB*mFAqhSq032)Kd#sh4d__RtFH?SVycKB`}T69oB zR;1%X5^FEp2`>lcl*9$@Gv@sNz3spa>t{!9K9r91Pfb4D^Db5WOSPjF!##`5>pLW? z9qqDNgb&RqjbQpLQKQ3pUps7hm{xk{+AEh=O~3kNnVj!hE&oZPJK6I!moKZ)xSm$? zdgpr|yCV|1C%4^OrTEl&r`hBCr)I?Dri!}t+N|7mNl({1&f(dm=evzogy)=#N+{hG z%@y_LEo;WqrI%()pPVF9!1qN%u=Q&CThG&;Q_{4LPm=XLx#XMC^jl~1C!dqs{Wt90 z{Fly){qyF3PPCJ-Tbi)-&pX*T(-+?IkA>M97YR8$<7|s!T$Ojf$Y9SW-O2=`sX>*i z-B+J^Cd;$wS@-Rz_N{NXPSbDv{Mo$xbY$Tn=6%LjHtuI&W>_Goczo{R +χ(1−α2,N−1)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/derivative1.mml b/doc/sf_and_dist/equations/derivative1.mml new file mode 100644 index 000000000..d07677fd4 --- /dev/null +++ b/doc/sf_and_dist/equations/derivative1.mml @@ -0,0 +1,61 @@ + + + gamma_p_derivative + + + a + , + x + + + + = + + + + + + x + + + P + + + a + , + x + + + + = + + + + + e + + + x + + + + x + + a + + 1 + + + + + Γ + + + a + + + + + + + diff --git a/doc/sf_and_dist/equations/derivative1.png b/doc/sf_and_dist/equations/derivative1.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac5b27785413121275ea1e8b62e2ab4ea7c633e GIT binary patch literal 766 zcmeAS@N?(olHy`uVBq!ia0y~yV4T6gz@Wv!%)r2~bHd)W3=9k`>5jgR3=Hc}n6q}h zWME*BEOCt}3C>R|DNig)WpGT%PfAtr%uP&B4N6T+sVqF1YQw<5z!~5Z;;NvaU}IzR z|NsA4#fLvLFfcHe1o;L3|Icv!6t5!#15=Kti(^Q|tv9o7PkXJv(f0TAKYrWnw=y9t zzIV9Jb%?Kh>!tANq~ooE9}z_?=8erCFUmDEM^5Q!E;R6V=}>pO5hZ)HIG2|#^Gn=8 z`A5h19xQMR{C2%Ke!(66L!x}g45k?JZBFdl$lx4wg7?w=%MU&YKjb@aSbSb3Lni#2 zT|&{v*lg=BZC5vRAD&SlD0}!|MAO8_SG!xb^GfI}5p8eI%!^}Qd!YM`yc$cdo5tTc z{DudUIxmWd)=MOQ=vprG|JY>DC9AZyFM>>2LD{mf@XOV3~Eo-u!t zre~VPsj@?*N9yv9T&>-q%6w*eX2i+YCw7+xGIKpB_TOJ3p?dWGK?SkG{<9~hOsUt9 z;```T^myXlsqxF!rz}0tGk11GNO+<74CT$YC;EF9Etlpx&!ue4F==A#EH2?wR)6@L zas(1Li)`L?pO5X#%S%i%?%a1ZINDWcFsbuD=kw3YYO9pEb_6eIdvs3b@TG)hu?bv- zHZvIZl^T}(m5~rVI(K2uGEO!hu~Ro>n!g;Ib8zZbuc%J0fYrVm_-E|v?0TeUuu;Q$ z`FWjd0UJXq1E;2%#;qxSSETcA(X1QKr}1C7b~He5!OS4fLVk&oH+=_NgF;Q(8UsRf zt}%s}g|P*vtWJ!Hnyd7pK(k5tRhCoW&HegJ$HUZ(t2;LY=`=e!U$oo*Q~#R)ADgFd z($D4g(@w|oCfOT!_HF#Dug1PC=x?k2d;PsfdzmCcMJjuetjhOyy0s3wK8XBrD*9&%D1Ix`TEG8?v-a` aW8e#GnsO++;w%FL1B0ilpUXO@geCyw=1#Hz literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/derivative1.svg b/doc/sf_and_dist/equations/derivative1.svg new file mode 100644 index 000000000..b976dcfb6 --- /dev/null +++ b/doc/sf_and_dist/equations/derivative1.svg @@ -0,0 +1,2 @@ + +gamma_p_derivative(a,x)=∂∂xP(a,x)=e−xxa−1Γ(a) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/derivative2.mml b/doc/sf_and_dist/equations/derivative2.mml new file mode 100644 index 000000000..40f0f44d5 --- /dev/null +++ b/doc/sf_and_dist/equations/derivative2.mml @@ -0,0 +1,75 @@ + + + ibeta_derivative + + + a + , + b + , + x + + + + = + + + + + + x + + + + I + x + + + + a + , + b + + + + = + + + + + + + 1 + + x + + + + b + + 1 + + + + x + + a + + 1 + + + + + B + + + a + , + b + + + + + + + diff --git a/doc/sf_and_dist/equations/derivative2.png b/doc/sf_and_dist/equations/derivative2.png new file mode 100644 index 0000000000000000000000000000000000000000..6365c51b0afadfa581bbcfe1aba38ab50aed0228 GIT binary patch literal 1185 zcmeAS@N?(olHy`uVBq!ia0y~yVBE#Pz@W{+#K6GNc;i+B0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq_Nb)5S5Q;?|qFH#eR zif)BYK67MW1|Ne#i(&6!w@HN?`aj=skTSCo{k!pXM4Ujn^OUYK*AmWWUT5`Ar`6By zUBN4KJ7Bit-?reaEiKhLFNAWKuB+;?JFD&8`AMugKhs^(_~`6i{hp<9ZF-Ch*Zhxn zukAYVan};P&leu0Zjv+be(+hMr$KJvv_)HNRd=nq61se4;a-6ti^eljA{SL>oSuC0 z$aFsGe!;8Huk0u-PEZz%P+0eciN#=HS<4n9Ez1|SdL^7`onAbf%nYO%*Rp<#WnwT{ zd{OadMChHvAMB#$ty#pzyfJI$=@7RA&!oL&56)QcTe~85pP{8w zUVhkwzigj!Kh&B`%&0x9Ew__3S%12Imd&aDqCfj%AH18!9lapv@`q=URh9R;_pI0D zt!Q1j)copit-JRQhA?cJ@KyVjMu@k>QrsIn~6vro5vn1A=; z-Sa;y!(!s9xLxCP1*b$#zB#QgYPoXrRR4^^&|P1=q*p#r%`b5MyZ_zws>SZN9|!%9 zvEuai6evo4JKE!P;%Qb>#BDCadQ2ep>04`S3zp3E-*2RN=o0VBoZ$5?nNIBCZqIA>+irFD+&H=K z!KoE1`uCSVTy|uiqw}iR@|FOW=wmZ(pHF?v?Rv^{m=K=~`NAEOL!aI8RTRQ~tF +ibeta_derivative(a,b,x)=∂∂xIx(a,b)=(1−x)b−1xa−1B(a,b) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/digamma1.mml b/doc/sf_and_dist/equations/digamma1.mml new file mode 100644 index 000000000..13c3ef69f --- /dev/null +++ b/doc/sf_and_dist/equations/digamma1.mml @@ -0,0 +1,56 @@ + + + ψ + + + x + + + + = + + + d + + d + x + + + ln + + + Γ + + + x + + + + + + = + + + + + Γ + + + + + x + + + + + Γ + + + x + + + + + + + diff --git a/doc/sf_and_dist/equations/digamma1.png b/doc/sf_and_dist/equations/digamma1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f47a8f44db6f0a79385836d42cea2feabeda1ec GIT binary patch literal 807 zcmeAS@N?(olHy`uVBq!ia0y~yU=(CvV9?}XV_;wqIwkvyfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5SAsc6z!vhE&{oGuJoo zu!2DA;}g?g{S~)$H`~jWD>g0Wv>7wc2afyOJ3}VQ^PcaQl-TXf@sN>W!s*EZ3=C>a z4F4mhJ(U(_Y*38gJZQ1ni{oK;#)QZ_AFrLLUgN4gt#F#*j1vqwhZKY|9=vMWCguLB zqFXcY9D~n{t4k#Oas&^%*cDt#Jm<6YdU>+ap<|Am%$D3I@9x-q{^pi#FW>r9m*3>5 zR(jNQ&|^WU*yfq;Sz*pc1Kc>#s#+Y~K_k%N%uYcGaGY zzj3EOV1x4b9W(Is}FeZQa1 z$1P{>Ze9|$Xtj{d8SawjXN->B*;rMw^`9Kut#J*qsiIW(T}oTTuS{i zx2SbW>5?C3ONKf7SZLwO@0J+NOpX20KZ=OqqMGB6q{VIhm$WGY+`)Nyq>0 zJZ~!S`o6&Q^RD%Cc5l9Z%UBvn-Kd;w#AvercrH6^2o{U;{hJsESMBP*@BvqY@zX{7wM zu)-fPy%pzoKVPfyrIW!YY*)qpb|01mp`h<}D!1-2Cio~9?q=j?P&l@pftg|ECzBrA Uc}fQv7#J8lUHx3vIVCg!088I+x&QzG literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/digamma1.svg b/doc/sf_and_dist/equations/digamma1.svg new file mode 100644 index 000000000..e17a78d3c --- /dev/null +++ b/doc/sf_and_dist/equations/digamma1.svg @@ -0,0 +1,2 @@ + +ψ(x)=ddxln(Γ(x))=Γ′(x)Γ(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/digamma2.mml b/doc/sf_and_dist/equations/digamma2.mml new file mode 100644 index 000000000..f764615df --- /dev/null +++ b/doc/sf_and_dist/equations/digamma2.mml @@ -0,0 +1,60 @@ + + + ψ + + + x + + + + = + + ln + + + x + + + + + + 1 + + 2 + x + + + + + + + n + = + 1 + + + + + + + B + + 2 + n + + + + + 2 + n + + x + + 2 + n + + + + + + + diff --git a/doc/sf_and_dist/equations/digamma2.png b/doc/sf_and_dist/equations/digamma2.png new file mode 100644 index 0000000000000000000000000000000000000000..b9dd81862509bea7b7f61a7136e19d7bf8298cbc GIT binary patch literal 1055 zcmeAS@N?(olHy`uVBq!ia0y~yU}R-rV6f(3V_;w?nmGRl0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMZ}fC=45_&FW^QiY zVFjMH>ssxv-u+MBd(7`r=_MsaHzB(mgCCVkR)uae>ukP%BjLo`uT`}S3~%ljGBUK} z%wX74wEOP9Z|C24{QR6{y@=s~gFxAGe@@38ynze_4l=A2JzPN-mNU5UzVCPtE^z2X z!u@BLN36) ztoVEvdj9>U@q40OL&f85L0^<(Tb8_B@;m?kzW3_`%Unbp_7q0*tlb-?uEfQlUS59s zP{PUxu0V$HLkX6x8UD+gXM?^t~GgA(JJkO@kpqux-v2#pmYViYKlRPMoH)!fN)_33m^Pyi|T}YrRbQAjkRT zThF_MiWKpkdz~bv`@A>yx**%i*K+^Xe!X?y-Tc?Yr*n+k*50_9{@>}%m#C%%YFta% zpRHxgcH_`3`>LaKZMCfTFYc)Gso5_X5?^XXI4)S*{cvi1YyI>ON8dbJIz>UIv|`B- zl~Tb+lV46`k2h@)WD?hxv05A(F2MFCM1w16=j_(XZ(+`dFYUQ7DK^|odC%>_&+n#$ zy$f1fw(@74R#w;cxvuK7auw69tky z>?h4^tEF!(nX9FquU32EWxoQ~=fd>s&*FrmrkUAE>HK`36DYi>AYs9dWxLW=uAQ^z zYBaNdueJQ%(09iJlpb` zOZNQU>?F5q`#ZjBdOXS4sXCM6(4DfmYkl@kSBQvMXFE0O$oy`Xg~xALHW|#1-I?~S z)mXJ==h4D77dc+_8b6g-+_E&B#k6W}+vdOVveMf6jakY(?rXB#H>}}mx-!?E?`gl& z?}`+~uk}K~YXn(eJjsKG}^4+Kw#8B$q zy}V6WaS5wi(bpwn0;~d=FWmXwSDuJe-ug;$LkClc`H$6;Zrurbb8}J4Evt!hjJ_Bz zf3LdXi>8C&*7E)H1fAI(EB3_uudHL|bQH99pZA+V+s*LQ?utKq?ZbU~J46^9HJ z!rLjrpwQCi#^4~rz!1o=;`Dmfd5?ND7<5{WAJTSVWDsEeAo;J_hc#<~ALBIs|A&vi zT6#@FA=g2qVISih`9OyAFAv|GlA^@w!YI(W{?1W1r;7z&Hz=K&!>I7Yy@8S8pC^;! Uly|zopr0ET$mSO5S3 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/digamma2.svg b/doc/sf_and_dist/equations/digamma2.svg new file mode 100644 index 000000000..7a77a35d5 --- /dev/null +++ b/doc/sf_and_dist/equations/digamma2.svg @@ -0,0 +1,2 @@ + +ψ(x)=ln(x)+12x−∑n=1∞B2n2nx2n \ No newline at end of file diff --git a/doc/sf_and_dist/equations/digamma3.mml b/doc/sf_and_dist/equations/digamma3.mml new file mode 100644 index 000000000..a1ca38026 --- /dev/null +++ b/doc/sf_and_dist/equations/digamma3.mml @@ -0,0 +1,94 @@ + + + ψ + + + x + + + + = + + + + z + + + 1 + 2 + + + + x + + + g + + + 1 + 2 + + + + + + ln + + + x + + + g + + + 1 + 2 + + + + + + + + + P + + + + + x + + + + + P + + + x + + + + + + + + + Q + + + + + x + + + + + Q + + + x + + + + + + 1 + + + diff --git a/doc/sf_and_dist/equations/digamma3.png b/doc/sf_and_dist/equations/digamma3.png new file mode 100644 index 0000000000000000000000000000000000000000..bf4b81f607e73879af132631868de0594456bd06 GIT binary patch literal 1271 zcmeAS@N?(olHy`uVBq!ia0y~yVC-UGU@+leV_;yIa^XRSj`CKwS1Vs7B-I!)J};g3oS%Wgp{H4ofq|ig zsjG5t-2VCURZI*5Toq4j&ewloVo(raU}y+nU|?`!WMJT6WvDp#TaB~-n<7});qRIg zx8G#6>+bhAJGbfgtuWbtcmCUNU97i!t@iumGuvW*i{$WB3JZO0KG3mtjokL*&-jx1 zm40ljZu`6O^%Ry1bIzaLq`tg%>Dvu?%95><9m@Y!@V*F;Uo!RYLKBU+#*)(CUbhnO zx*2h)H!djW`v1i|>Hcj^j>@m|FaCY7b$-T@}EE9LiNv+@2uDm|?s9VdS!UNJTBOdy+-(%-yyt?`B zv|JaB7Pg0L80>;4FdVSsXuUA0@p!i8`J$<{o=fA`l||*|_m@R(|Hynhneo69g=nrh z{_L--x>~;e?haruE=vFYT64qMU1{rIKbxmFzqI2+-u=Helf|Wj_k^=cG6^a*W_;z( z%DT=oJ?_x{%!m87Z*x3&?1qGO7=MH7WcPwRfK1tj@RbmY-_wwyfk+ zeaTl`Mf+DC-m$bLOmV}sn{S?RUptbt%%f##an$q$I=5zQdK`P{#PZz9*Vqg*^x_$& z{J4KAwqf%*p9rb;o98u(zF&*BU$)MqxOI#DHNUW;nxZNDA0{t2HlM`@&e>(J`tWSa)-STGTi?E!se1iJ z*2(GFzgHab*S&T9m2;@m#Hh5Od6JQlRg0dK-aZ|F<<_iUe%)_vf3H0j#u|Tb;iOL| zwuz;SY~{*+I>Snm_soZr1?k*%?59NDSFI|nx|ViumB)&IwGA_6?x)@TUi)Qhb=%aw zmCn@#GFzAZF4?C1Enk2Bo2&A31evCOl$MqM-(38C=EXJd57Zf#wto9^=2*6R>T2)j zSN8aYuYKZwmU~vnX(?G{shqzWb_a6O=J0d*^G9#^es5X++aT?q!r#jMc25B*kUe_K zu(To4@zcIHTOR$H5ELo1b&~zYZ{Gx*R)2qQTO_um%tzKiwRwYG-yT1P^0_xY*>T-S zD)aYW!(V3k_3^s~8*F8aHN{<=>IviPpKTPrL+2DF~*|g2cI<}76 zZ|=xq4c2BpP#re$_o9uF&n@?G#jT&dedSLjCq*rldD=6aqSQT}xAU zd#ihim6f*E&N{W|N{)*LkG^nE%>rAih>EJ6qBlglr`Cy9+fB6ICX&;$t#j$}+D%g> zMSTRh80rHKH9uu%U@+>MySYm=$ +ψ(x)=z−12x+g−12+ln(x+g−12)+P′(x)P(x)−Q′(x)Q(x)−1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/dist_tutorial1.mml b/doc/sf_and_dist/equations/dist_tutorial1.mml new file mode 100644 index 000000000..7145560ea --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial1.mml @@ -0,0 +1,140 @@ + + + + + + t + + = + + + + Sm + + + 1 + + + + Sm + 2 + + + + + s + p + + + + + 1 + + S n + 1 + + + + + + 1 + + S n + 2 + + + + + + + + + + + + s + p + + + = + + + + + + + + + Sn + 1 + + + 1 + + + + Sd + + 1 + + 2 + + + + + + + Sn + 2 + + + 1 + + + + Sd + + 2 + + 2 + + + + + Sn + 1 + + + + + Sn + 2 + + + 2 + + + + + + + + + ν + + = + + + Sn + 1 + + + + + Sn + 2 + + + 2 + + + + + + diff --git a/doc/sf_and_dist/equations/dist_tutorial1.png b/doc/sf_and_dist/equations/dist_tutorial1.png new file mode 100644 index 0000000000000000000000000000000000000000..172eaab0b275f585c1c1731b55299109867b75a4 GIT binary patch literal 1883 zcmeAS@N?(olHy`uVBq!ia0y~yV3c5BVCdmsV_;xd&bKX>fq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5SBX-g>$?hE&{obN6-L z90P&2hia#Mzy7QLvgy*gRk?yj3C+33epD`9WjW#K@}D-wW8+2hlq8^r@k^oSWTujW5nm&Hm#nvLUc*VnzCz}K%6q--Wl*RJ&A!rc-^J@t)G{@LihvuJvdp$su`o5i z+g!x$=zUeObiVTWwc$6H&AwvOZIa$`^l$Xw3f5bs*tz^-EDVnWqKY?0)Al-qAW7T@s{S!op@VovUrOw4AMPMynSKTO-eB zS+_TD55&H|_%d?(id5;c8jnwl+MZv^-k$R%c4ryy=Y#_*wlFs`9upB?I9Y&Gl=t=5 z`t=`P{4L$mu6f=5@ks#*4qk@@1_5a3F)%SRu&^;SGCCwMG=RdEfrAGm2@-RRORnPQ zP)q+CV%xY<#~?16;m>jDw;);Os;^Ee4+F1!yVLdB(C>atrk;y<_9NT8`y3Mm_>w-& z*{5hQH}=%`@28tDxmyL9ZeO#sbkAa5w|CP^e|nv|wK>1V!+iIYK=zMeJB$1Zb=E$< z_ddGSeet)`VKUDI+6viIM)YF=bu zepYOya`^PQ+xO&cnOU;F&vNqv*{^dK#=m+2dBT7eydjbq_l;K*V($)DM?y8D~>1l z+^t{lQ(fv4JGtoc`eXmfzk09VcT3CJucB;ezSsNbnXlRugVx8cxafR1TA#Qb1iCi?MSix?UL|p?#ZqC zQQvz7I2|?@OkhuL>VcWfnR>kWvoPq$rmGUcn{!fsthxJgM)Qd_nYB5_ z{z3DX@~Z00^7mLI=k;v~^JTf$jMXiEp4WX*gZu<7af?VprX--g{f7k>KM<;ycN zc?4%1I+)%0%ObP#S?Z0g=c=?cqdh-u4gEQiJtg5KO#y$)PALx2TA3<^A>bWhMQWHceHF z&z33hkKyo{aZ|&oV~e_kv20%a;=P^RjhviOJMk4VJFXKz@5y%z`)?? L>gTe~DWM4f76@B} literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/dist_tutorial1.svg b/doc/sf_and_dist/equations/dist_tutorial1.svg new file mode 100644 index 000000000..748ec731e --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial1.svg @@ -0,0 +1,2 @@ + +t=Sm1−Sm2sp1S n1+1S n2sp=(Sn1−1)Sd12+(Sn2−1)Sd22Sn1+Sn2−2ν=Sn1+Sn2−2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/dist_tutorial2.mml b/doc/sf_and_dist/equations/dist_tutorial2.mml new file mode 100644 index 000000000..e7e3fef05 --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial2.mml @@ -0,0 +1,55 @@ + + + t + + = + + + + + Sm + 1 + + + + Sm + 2 + + + + + + + + Sd + + 1 + + 2 + + + Sn + 1 + + + + + + + Sd + + 2 + + 2 + + + Sn + 2 + + + + + + + + + diff --git a/doc/sf_and_dist/equations/dist_tutorial2.png b/doc/sf_and_dist/equations/dist_tutorial2.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf4ff04891fad162f7f3790c04468fe07ea3470 GIT binary patch literal 817 zcmeAS@N?(olHy`uVBq!ia0y~yV3@$bz~I5b#=yWJsa^Anfq{V~-O<;Pfnog#bJnhx zAmI|%h?3y^w370~qErUQl>DSr1<%~X^wgl##FWaylc_cg3`~bTT^vIyZoQcs+t+Ns z(=uIj`mNvgUm|jTH;63d{JAyxu({B!+^b=iE0X%1HEtKm*fV^2G+mK_!-L`Ww!P;b z*YLd0f8(Jl+fttSpIiR$Y@REkE&Pv;e{gd+`$1um=pMm%dC~goG?yYbz41Q`fA?=o~q@T;10EZNXfM(f`SJIt6 z#PXK$H(nMpx>=UQ7PT_#!5;2z@d*-Y7oIkr;QO&WXz2}2%_)yws`4;|tIfKUuHC$~ zz{z1U+aC2FTW`CC*G(5v_mY^G*&)otRH2~1?^#x+%dQ&FLM3L-%8n}suE#k&?i6Mc zGPz*Ncp>iV{Ii`xY61(UtO#nnaH~Q8)XUBC9gF{0JPxh0`~Kf+-DZoxLoMll?^-G< z9L#&pIcLY3^i7?5TTknzg{^Ltf7sH{VzuGggQ%#fd6wdCoW>8l*Q`svTA{|m(#F!; zzz{1D@%*E}1t;d(_V?`#bJ!!JY-VJrD{a`sF!Q(O0~w2%Uef;J&sN&p;Z0FkeCYIB z0Ug`$&8f+0X^%qO967YN&98dJqM6trq-MH#cfLc?nG z1Z=x;I3oIB-qXV?d6XT!=U(i4A6&(5w}x3WW$o1Mg7Oa!w;4U8wWw zU95#xurA!R&}ZS_try-#K6GMZa&~Z#$Y5a+5O8o{U}XFpE5yX~Jxgzg7IV*o_y$G> Z*V|M6Px~sqo`HdZ!PC{xWt~$(69B?CWS9T| literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/dist_tutorial2.svg b/doc/sf_and_dist/equations/dist_tutorial2.svg new file mode 100644 index 000000000..c2fb1f4b7 --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial2.svg @@ -0,0 +1,2 @@ + +t=Sm1−Sm2Sd12Sn1+Sd22Sn2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/dist_tutorial3.mml b/doc/sf_and_dist/equations/dist_tutorial3.mml new file mode 100644 index 000000000..1a5efa232 --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial3.mml @@ -0,0 +1,114 @@ + + + ν + + = + + + + + + + + + Sd + + 1 + + 2 + + + Sn + 1 + + + + + + + Sd + + 2 + + 2 + + + Sn + 2 + + + + + 2 + + + + + + + + + + Sd + + 1 + + 2 + + + Sn + 1 + + + + + 2 + + + + + Sn + 1 + + + 1 + + + + + + + + + + + + Sd + + 2 + + 2 + + + Sn + 2 + + + + + 2 + + + + + Sn + 2 + + + 1 + + + + + + + + diff --git a/doc/sf_and_dist/equations/dist_tutorial3.png b/doc/sf_and_dist/equations/dist_tutorial3.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d5d801483396a9172ec8f6a77601c26ca2c260 GIT binary patch literal 1436 zcmeAS@N?(olHy`uVBq!ia0y~yVA##Tz|g?K#=yW3tSiC7z`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EJ5rfvBw*4C{A7a@FuruT>p`^ z7{V-)Zt?~8Hq|a8#10Mesi^Q+4||sE01Mz>h9ml zFV`&AJ-p)6nGbJ|$Q?NrBbqF-zvlYk^8(h=lMQC}UYjYu{)OE98^W%ovi&y{Gu=dd`AIq_NP>z0IevWm-Jf%Wqq=aLO*wyo#mW#9$Fni> zeD=+|(ae#P|NX({4{l{$8Ba6A^x4<_?ppSJZcpUv)5jY6eBYQ(x+2pYmc*}pr)1snMq$_bu=FJLA4a9B zWh-)%7u8PXbl{G;rFWs)qiXwhr{~SjlICxX?w_IPld^t_Lz1HXwu7I4cQI7C-_tNV z#u03>sehK8lFUsR&|D^A`zWr*xulxVs-Sc}-2e&etsVz9ar`j=N z+0hM>G7*lx3F7x|He6IXe~R(^y$uWFD=#e0`1bCz(zzWePaAqOZ=7(y?>fcz%<3YC zH^P51($>$N$!xZ4q5s|L^B1pgP3ie}({jQBv%a+38C$RK&|Y8T_N<}z<&_&29mg3r zn#(*Yd~oVjQSV=gMcW0}9a?wfgp5akv})S?uB0!Yl?w~n+QrVNC#(I6Vtn%J`*I=c z7jKU6IlS3W;pg%uAne5vzQh(i$Jjj!-A#+W{OW&nV9_O&koi?6(##5*o=Z&9cK^*I zBVg?v)W&Sac0*!^eb4R$6E$|F>cwt$RvA6aNzY>o9o|Grms?AJ+!J9`^pJ)9h~1uz z-}z+ZITu>7FRoDdcJAWa43GG$@8&!`@UWLPO|d}W`gP&z!^iI3KDymDr>D76#-gBh zp<=a+gfrSJL)&5L(}y4Se*8Lp0o&K<7bjg7 zwMa-_z|-;f(S_GmulC3YSf37QV@?vkd%D2kjqBp7l8t4N8_lFY&x}aRQSA6MCr3tL z_r=9LI$El-&+b=d$-H^9Q2b`;y=!w-bl8uaI~LM-Q$nHahqaK~mkr9Nr_5ze+CTA2 zkDcg$uZ+dw6-LDlZ^Zw;T{C-ql>Pfx&(|Jc+{iBUK>g{ARDGjDhc~<)rN6`Z_&WAF zChz{MeeZ32^@gTjiOKfnZ&u&lA7}dM;(yoq?DnS*ezUEXO=4j`^3QS8u37Kj9z8ho z`>#v)5A@ppdbT=ayI{%_hm?GQ*6sUW3occ1{qJw_BPGS;t3~Fw#M11m&CT?x@wH^Qf literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/dist_tutorial3.svg b/doc/sf_and_dist/equations/dist_tutorial3.svg new file mode 100644 index 000000000..87a4d2732 --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial3.svg @@ -0,0 +1,2 @@ + +ν=(Sd12Sn1+Sd22Sn2)2(Sd12Sn1)2(Sn1−1)+(Sd22Sn2)2(Sn2−1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/dist_tutorial4.mml b/doc/sf_and_dist/equations/dist_tutorial4.mml new file mode 100644 index 000000000..dce751d1b --- /dev/null +++ b/doc/sf_and_dist/equations/dist_tutorial4.mml @@ -0,0 +1,32 @@ + + + + Y + s + + ± + + t + + + + + α + 2, + + N + + 1 + + + + + + s + + N + + + + + diff --git a/doc/sf_and_dist/equations/dist_tutorial4.png b/doc/sf_and_dist/equations/dist_tutorial4.png new file mode 100644 index 0000000000000000000000000000000000000000..3e89ffb00596267f757f9281be33fe33c6016c84 GIT binary patch literal 630 zcmeAS@N?(olHy`uVBq!ia0y~yU}$AvV9?}XV_;yAW_h)efq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5SAsI6Pe(Ln>~)iHYW8 zR^)girGNEz{g;T_?wdMqzUo?_eQ3g$#lF$3ZW0s9Zh!yF*tkR}f$2n~l23yBw%qEa z=j|gOa0XbgyKprbJ4~=sc%$)=S)^mx-Y<%bEK0481~u}Nt}q5TIGF4Wk-PLI@QKJy zR~7F0Hw|6Zw@6j{%Fe9jeZ(Om<+po^fg@XU5}Sg+M3JUP8u@9i94=j+OSWFy^N6A8 z)tS}rm#(|LIJzV7swUz}!MRhz%k>4DYUPdhWNp1dM# zt0mR5Ph3j#pp-)2 +Ys±t(α2,N−1)sN \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint1.mml b/doc/sf_and_dist/equations/ellint1.mml new file mode 100644 index 000000000..386f8de6b --- /dev/null +++ b/doc/sf_and_dist/equations/ellint1.mml @@ -0,0 +1 @@ + R(t,s) dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint1.png b/doc/sf_and_dist/equations/ellint1.png new file mode 100644 index 0000000000000000000000000000000000000000..e73bb5147c168dd89cf11b5d7b7a810cd733dc7a GIT binary patch literal 998 zcmeAS@N?(olHy`uVBq!ia0y~yU`S+OU{K{?W?*1Q6)bQ}OgVGr%!COOe*E|$At7<+&Yg~qjs*)AY}l|NCnv|iz<`5;V-0RD5Y?nstG~R6$ zn;toC4YOI(7?FQqYW|1T$=45-KAd5eaAV8QM?1rISNKS8yu9`2p`Bc>Mf)8O>u}tr&E~vh z`@#NHyLlF7oeZZV2UVr;J0g#%C8F=)E13bBpyw9H;-ntv#v_>*mb~ zy6?Z^fXRHLxL4Etj=J$Sk26!w?@sj4iYT1^^i%uCx5tXl{ziNV*qw4<)`PuRAi&+X^8m$yx8bp0bdKDe)BD_wx`}p@$>99u?c!pQ`#gM?y`sLow4NqUcRE=yr#=DJ7yRgr%08B z1iWI27uoPhY(ZG6|02JyoEKY;vtMoy&6xFlMzQ6Iybtp%=X44AJD*~$TDo_)ds4|1 zt)A&jWzJrA7o1HlTUairxJz+XK|DjsvdWnD%E)yUZ|q$vN|tHgDSXqG;c<7tS^b$m zA`d;*pV-EHt)T0(SBUnST^}wmSoC~s%|6q;SdDG^x@%w9Sgp;@Z#y+7Co%Bq{^ll= z%Ea?0wSyLK|76YQce7A_vGRWQzvsB$TDARNUw%`r@_4G}HQ6iuFQ%KQM@OvMsBq)Y zTmQ +∫R(t,s)dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint10.mml b/doc/sf_and_dist/equations/ellint10.mml new file mode 100644 index 000000000..41a7061fe --- /dev/null +++ b/doc/sf_and_dist/equations/ellint10.mml @@ -0,0 +1 @@ + RD(x,y,z) = 3 20[(t + x)(t + y)]12 (t + z)32 dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint10.png b/doc/sf_and_dist/equations/ellint10.png new file mode 100644 index 0000000000000000000000000000000000000000..027a0e83c6e42b018046262c5779a7b87f9ccc0b GIT binary patch literal 2420 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 +RD(x,y,z)=32∫0∞[(t+x)(t+y)]−12(t+z)−32dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint11.mml b/doc/sf_and_dist/equations/ellint11.mml new file mode 100644 index 000000000..1f665796e --- /dev/null +++ b/doc/sf_and_dist/equations/ellint11.mml @@ -0,0 +1 @@ + RJ(x,y,z,p) = 3 20(t + p)1[(t + x)(t + y)(t + z)]12 dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint11.png b/doc/sf_and_dist/equations/ellint11.png new file mode 100644 index 0000000000000000000000000000000000000000..092cb7111911712535e83cf3bab7989e12a035d6 GIT binary patch literal 2570 zcmeAS@N?(olHy`uVBq!ia0y~yV7$w~z@W{+%)r3F6~E{W0|Ue10G|-o|Ns9pFfg>V zv?L@XT)A@P!i5WS=FIu><;#v8J5*FuDk>@#ELia1!Gkqx)*Lu+KtVxa!h{JdEG#!} z+z=2DxO3-DL`1}qBS&OpWMX1s92^`pG&Fwv_`$)!@#4jcKY#vobaZ%lcszOXBqt}w z#Kfehr{}|m4{zSQF)%O)2?;rK=1fCF!;~pgwrtt5XU`rN7nd0`W~^ATA|)lo!os4a zre?#24NI0R(b3Tf2nZ-BDDd&|DJdyAapHu8goKTaO-4or4-b!sh=^)YIs*d(CzGd( zV@L(#+vv*pM>Ya}4g#5$u1~V|T8M;%*c>dq|Nj5Vdna%D+`4qBw0@EIzXK*`edbp# z^HiJcb>f>y`4-!VG7r1yjW@4E&NH(Qf9`jCn!$$>K8JVxzoVJb*&hc>{#c-=XdKlW zV0B)1_L0;7t0Dz2>F6(ubD1A|In3BVk8w|t@}c5Zy`O&_r~O`16_Gi;*6CGr?g_pa z8D?QK+uKi{cHY_1s-3Zp&+5&y(1Y(b?Y>vVw&!X#pWCw7W4(qZYb*9#t+a2h5>9&& z`!kJ4WYypKSMlx(ryrf@iW1e`^sh=gg8C(}jUfh16_wdY&Pm0Uh9_<#~y#2+;_y4S--^IRfbU(Bu zZTAX?!-sFaoBZ|G{Ee!A*{9@wf7i9C;KpKov+G}v#Yd;kmARe#zh%3MX$uFA7~KP*pJjhdGfzy&yXI67r#XMY zP7kYEmO{lGFV#-TXzdQ&2It8Q;fm?i*G~(6clh*fo<;v)#V3&Py7rPD|mUmdEz@;oxZr|pBw7`w_KT4ePr!N-q$c%g8iFuUS~!&yEmbM2aTJ}_H4X^TX(c889_ zktd-OGOEQNnCn;6eS0I&cG|AL_igHT58lZejd!-ht^1<)rs=5F*%=R(UbSCraGx!3 zW={Sh;XPsV^%;IA-I}lUc2oW?ds(UClm!PQKOa}#v#9U#?<%ZJAL~X`@Dj$RAAGrVEt3WSn zbv73_!wD{S)rxSpuOHlBOxk}w#8+d5B}4id`H6RyG$vG;d&)mzvea}GG89vm$Ye}W zHd$|Y@9Vr1a;IIsvgi0cQ)AC~lDGYKFwZWV7ng$jL=4WS{pjP;-QBW9QMrlx{nm=- zO*7M;+4Y`w)+)&PXV7@lu-Jr!TPj^Ce&>P_;Kf5yb>&gmhLoXxtC_0Y~q z*I%sgiVjYYW1Re3y(Ug{PsiPL><=}M%vkf}CIkEYPp0oDnw{rMG&gAtKREjUqm}k~ z0ZrW-KI@{t-D~sDdwT6nNbUjafO_He0n213I`>M{#l|Syyy@)X(AV`U^Gp$E*W0*i>!iQB)llFRh z{k*j1Yfz)1l#}xvGoQkH9UZCSHtI$bYYTRszjMCJEAzl~q2o!brs?YZ+Gur<>A^}* zV-`+Zv^Zl}m?I~Lu)-AaG<4}T*!z8y00gHG2Z!AA~ zL&2g%N0&V-)h_--gJs!^b9J&MS5~d$pU1l<>}zjjc|YITXQKTd&Wdf8V@kjG|At(*1q~1UMs8vZc0e-1vI4`;#2+h z+*RGI=-js%bFYLO7*x5R?5=B8y>>5VQ`gyuTGmr{jW-*9*yK`l_5OzFy!lSi{%@CD z{CoFkc~Ziu;$+50n!g+No-;~{tz0C2=l0colFWR?>*C5^ulsSYLB6U~`CIJ$GrQ_# z-ks&)c(M9RtNZKK=EqK)+im}F?+xoz`Oqn)QtwViemMJ1*1J1yODV*HtZ)Be)7{W(|upSynG=gXwy6$}gv44$rj JF6*2UngHt&@;(3n literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint11.svg b/doc/sf_and_dist/equations/ellint11.svg new file mode 100644 index 000000000..552c81c53 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint11.svg @@ -0,0 +1,2 @@ + +RJ(x,y,z,p)=32∫0∞(t+p)−1[(t+x)(t+y)(t+z)]−12dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint12.mml b/doc/sf_and_dist/equations/ellint12.mml new file mode 100644 index 000000000..07f9929c3 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint12.mml @@ -0,0 +1 @@ + RC(x,y) = 1 20(t + x)12 (t + y)1dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint12.png b/doc/sf_and_dist/equations/ellint12.png new file mode 100644 index 0000000000000000000000000000000000000000..00ad81905bf5fdbbc80feab9a481ebdff9fa35e3 GIT binary patch literal 2046 zcmeAS@N?(olHy`uVBq!ia0y~yV63Q?!&508yYHDh>Y}qnp%9IToHb_WFeE9I;%$YMYX3WUQ$k?-IPe@3Ji;K&O z6)RFwQYcCAU^>InAi}_3qLK-t%t$tgclompgf$ao4Ta2CSd|OuzCb zCtbUK@v#m|n>I}!kLS;1*7?pj{#z*hz^VAeqpW|K?r3#y59X+|w7*w=T5A2S)Z_n? z&9&>l`)9ne2#?q=P_*-v%=Z0ff1En{>Gp)Ri;Z|eSpQ_f%Gjmv~LxTeP8^I&aeHG?akc_yCS|U2@~xLn!T`amgdu~AItks zw}&1~+nZ&+npdlSe$(bfOFv96t~e>XLhWJkL%q24D=gbx7pr}^S92#pSJ#r%^K7APDknPk%^sQI_{G^Ifaje{1%)CNrM`HOmd$OCok$SpG06qhWc_#Z>R=lsV05(^hQ!{YB11dUD*Y zjWcJeth^c@u5joaKUe20a6NYQ!kMDO5+0V#=UHx_ zJQ?=-MX^4o{*`EMWeIWLhx&QV&-GkRZDftPqdawgR==f;)bqf+w9ToPu8Qt%{Fn4m zLL}zs%)rL^Cbstq_sgBBobS>T_1^r8!kR4$@2$GLP@XUAfLpWuS)I#mb$u1>J2s^@ zUyd=lc*p!y6O%~(gE;-&E~b6$`xjT$yuWgY-(t5)$`6y(!5?iIRmF8~UQ)6<=<4xj zkJMD&lZCTiO`a^N-gRNMi$ue!_jx>7gxblsVA((G}Z`QqFg zdSA5!*>0EoE7`0h?KJ1vgnahR2Vd$%Ua)vm$?fJkasB4BACrIH{816KONu99Q&p3F zg0OO0#?6WKeu^8XXjS=K$|-u+H<|EbVubL~9m|Ge%l zW)^psT1Z9xG-=sw`)6vQ;JmV%I$yIl#I$#%iXVA!-HJQzldwvr@F%6I4YQdX!c1g7 zWSQD{?=7lup4w}_!p*FvR>T?-3k4SH^zY5j0KAk|5E)BbmwlXvc$ zxly|DrsTQ!iYKvG4hzm>JSnOn_4elT_5R^L{cF##oX@FPZPjU4zi@R@SPHXKU)a`L z^6$LEEUu~w`_7oTJjasxV8eM^6TZ#%`;V{T=F<H{IfSN-C@M>drf|GgjMnEs2laLpu&wE?$1lQlh{xC+=IUVd;+#%9it{Z`r-{*Pi0= z^xdrMOWDFT!jE4)x;e(o?}}s7Tj}-Lv;3zx?tSuc(W3ParRrBjHcUx!R&Of7hF7sPA%ZAq9=JI|knA{AtjXK+u9}62UygkW%%7$3x^D#Ph z_qJYGRys*~on(J};N)ZS7teTYR+N_cA+c*p&og5=3-M)z8P6o=hq4-)JvnAw2Yy?y)8 z7op|r-~L(E=^4G&<(ISB!i6{dsyDdC#a>&f99FhwPT(|7m8oYZxSjvP_i`;&TUNZy*1ql>F}UuOH3Z-~YUv=~ZQIk<5NPb?4uzLiHJc zY&Y2}@O=M2!{?FjwfPS?OWv?A6?}5_-$T2`i8i&r;v( +RC(x,y)=12∫0∞(t+x)−12(t+y)−1dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint13.mml b/doc/sf_and_dist/equations/ellint13.mml new file mode 100644 index 000000000..bb20fcb93 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint13.mml @@ -0,0 +1 @@ + RF (x,y,z) = 2RF (x + λ,y + λ,z + λ) = RF x + λ 4 , y + λ 4 , z + λ 4 λ = xy + yz + zx \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint13.png b/doc/sf_and_dist/equations/ellint13.png new file mode 100644 index 0000000000000000000000000000000000000000..043f12b6a36efce9455bdd0c6bcaa77922cb5e09 GIT binary patch literal 3412 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 b_y6lz6yK@2yqLkjz`)??>gTe~DWM4foyemy literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint13.svg b/doc/sf_and_dist/equations/ellint13.svg new file mode 100644 index 000000000..a1950fc99 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint13.svg @@ -0,0 +1,2 @@ + +RF(x,y,z)=2RF(x+λ,y+λ,z+λ)=RF(x+λ4,y+λ4,z+λ4)λ=xy+yz+zx \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint14.mml b/doc/sf_and_dist/equations/ellint14.mml new file mode 100644 index 000000000..13ad3d9ae --- /dev/null +++ b/doc/sf_and_dist/equations/ellint14.mml @@ -0,0 +1 @@ +F(φ,k) = sin φRF (cos 2φ, 1 k2 sin 2φ, 1) E(φ,k) = sin φRF (cos 2φ, 1 k2 sin 2φ, 1) 1 3k2 sin 3φRD(cos 2φ, 1 k2 sin 2φ, 1) Π(n,φ,k) = sin φRF (cos 2φ, 1 k2 sin 2φ, 1) + 1 3n sin 3φRJ(cos 2φ, 1 k2 sin 2φ, 1, 1 n sin 2φ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint14.png b/doc/sf_and_dist/equations/ellint14.png new file mode 100644 index 0000000000000000000000000000000000000000..a90df8ab7b432dda0b5c140a496754212ce8e33b GIT binary patch literal 6415 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint14.svg b/doc/sf_and_dist/equations/ellint14.svg new file mode 100644 index 000000000..0fbff6693 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint14.svg @@ -0,0 +1,2 @@ + +F(φ,k)=sinφRF(cos2φ,1−k2sin2φ,1)E(φ,k)=sinφRF(cos2φ,1−k2sin2φ,1)−13k2sin3φRD(cos2φ,1−k2sin2φ,1)Π(n,φ,k)=sinφRF(cos2φ,1−k2sin2φ,1)+13nsin3φRJ(cos2φ,1−k2sin2φ,1,1−nsin2φ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint15.mml b/doc/sf_and_dist/equations/ellint15.mml new file mode 100644 index 000000000..f860af1f1 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint15.mml @@ -0,0 +1 @@ + K(k) = RF (0, 1 k2, 1) E(k) = RF (0, 1 k2, 1) 1 3k2RD(0, 1 k2, 1) Π(n,k) = RF (0, 1 k2, 1) + 1 3nRJ(0, 1 k2, 1, 1 n) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint15.png b/doc/sf_and_dist/equations/ellint15.png new file mode 100644 index 0000000000000000000000000000000000000000..d8b1c3ae9a2340e008082b000803eddbac214bb5 GIT binary patch literal 3809 zcmeAS@N?(olHy`uVBq!ia0y~yU_8vgz);S?%)r3lQF7awfq~(0fKQ0)|Ns9P7#Lbw zS`rcx_Uzfy)6?_h$&(8gE_8Hsym;|KMn-1Af(2i`e0lKTK|@2shYueV6clF6m@#F_ zl#GmwJ9q8`1O)8ZvE$8~Hyj)s1qB5vDk=g30zZEIICJKViHV7Ufx(FrCwO>xA|fLG z{Q2YI;h~|SF=x)4oSdAHkPsIamkARlI5;>QIdbI2jT<&LHZ?UhA|fJ7mMmGbW{r-H z&V~&eR;*aDWy_Y7l#~Mp4qUl%rJ|yOg@q+1CdS9d$HKy*q@+YbLW1kb(l!PL-kY8- zjv*C{Z)0yd-L?{#>KPd{c>;?^L))g7xj|7}s#CsQ`u~5Gb(Gug?H0>6D%&2}v_^97 z%#FI<+x$3I=4P$m_x1QzSNVo!_HAs!n~JPC_pR8-KJTB9QDzG=Z`9b+YK6}=_%_v?#n#w-6Crfs~n^NE<> zzN3dibUe4#*zRiJPOJEEdX;KR`|ZQs-k+P~_HJFX>)W~}2f2A`-vxL*cS_IByHO`o zy25qtx*b~UZs>`8D5`o>IrrZ(^@YzAn|{xmw`13IWsZX%>u)vgzIMBRjf55l|LT-r zd*+gtHZQic&7P6_bw#NBuS46;Z9Q>h&78M2CyUIkJjyy@uuJe$jq;V)wHNL-&p)>D zw$4_eLx+8rU%sBqQMIH*uEcHk+1oDz{rMu~J$j=LN^CLVuRkL<$I$db?%r9~b;8Xp zD;MoLzwPCEA0w_!M@}iUJie~c<+rBU%ZlB~dt2h}xf*J-Z@-%P{#&=f2Jy)!zyD*t zy?a~UgmwHYq&&*!e-IG}-LXryu06NblqFQ8Cu!?q=YXY3%a?4vXnE+YRzqD*dU$o- zf0IYw9OJiCZr=I3`EBf}6Ec3GR#$8e?m9eocCZce2Z3;NQNxh!=~XeVjM=lJnVTw4 zObB~1$Ln<9g;%`47w@e#Dbp6(xx;+t%n9yt%h%c5d%w!WLGi{myJLlacB{H6%Fa9H zvSPMw8ym}7-Fczu4NlKPqWYTdF_yHh^}q43)Szwc?M4oc9}8E1?XBDX;oXNR*QJkF ze=oH8@rQ$d`v>aT0 zV0~AU&Lv|tmcJaQwKH4Kt=uBQniOGfXDRxuYa^@dtlT$~80YUfSyS~q>sDa5&x0QBzd zeK_gGrrB%Kd%1tTSr~M4y{t~D*T^w`1hB#Ye*O;s^w*4L3%*o1)Cs+_ z6zh8Rfbs9-4^|I&CHBglsJQuNDral=(?)^AN4t*eWH|Apf4r4+vPD8K%qGoIILV^> zx|p}xk%Enn47q0s9FE+xEy75#ja#69l8o~{iD@B`M>OBx2oa2UAH7}Y_yqN~)KIa4 z1J-6s10q|DQukYJy0WsY==mj!HlvG@^IJ}0c^ExFRn`*S3Z_?K(N!KsVo|HI)b&trmREh084{Dapk@#_Tty23z zq4_IxR?nD!?4iUYedVHslMSYZO63L$mA&lQ^v25Um*hcjZ5zprRTFyVJyfWR@t^*` zbISAViiL}n>ZE2Td(=x#WS5OvwE3OJtwkztUV!w7{hA5U!!fZZaq5DYCrT$1IZkfY zS{hU*l~l~rDEP@ymES6J%OanqrB!?pVF(ne@iWE%?xHqqf!q)lTiMHHLd5Zg1-NVq@unTduOZ@1Dr6n4=pwDyDqPd7PoTZ->z9v$M|nKVG^g@$SO*==KSxZj^@b zJl`U)_v&oF_IOKCks>XDW*N7QVk!k%S6b&E+rZ_Y&cB^6-X>ahcVE}SBHcqXGf(eo zu8!Ej-D0x!+47GY?=W1R?Qz9C?v(UBS*bf#)9W?XdzZekisE_hwC?b3X0J?+?ZJ}H z%`(f>{+Pr~la{iY$+OyJ<@D%uhe+lYW37biGs}4jOFWi2D?AsKaaObJ+4Vs9-BPFH zi#}hT5!NYDwc+xIgKtAD7BiK}>b6aC^PQJroKjF?v2)R(-e=1{2Hh+8U79CbaF}oQ z!xcTT?nevk&YL8aY$@I9m3$+kPKy62?^2P)W!ibN-wM7TxpC^*sdd4UJNceYvs|?0 z&2{zaH;HRH|Cq@B3A?{^&&Q(I4j%QJ51gAC`~2^T(pks-jb9wgPoI<2a8xL={KeJf z>POcy$Ly-VnX++C#T@?KeWy7lW=jRL&(!ZPz8Ce@Y4a(C?E!yG?!RQYQvB|xMcdxb zp#mFrocnOZ@pDMkHRb3lTVL`%2>c$~7u{64_crU}T&pAuyWL&i`WH`Tzc z{}0$)JkM~CU(0=^t48p*W=8K=J_grSPn^qBHitgVTNL!==Yi+PZawIF`}nWuf_pqG zkI6;M|F-_?e})wsHBa;WePqhA@!iM!UH`7!ZBadT|6jjgxBIjEi*+_SXJz~<{30E& zeeqqXB>o9I+10{JnsUE>wXj&SPc9>V-_iZ&UOLz>`Bjx*61!giM}tj;0t#HqzwxHb>S^bMzPi4<+Z_) z4gcg;>}P#w71JOwEk*8+xS-dJK6LHo?+&dSRm#o!T#;ca1&lxyN<*>rZn5j;!lXkLi>@+QZbW=C* zt+Sug2P1wVy}6y|&exul@?wfLOu2i4M?53+;sxG~Ew8^xUzp+G6>YUtg6(qFNw-Nm z*jqpBnaSQc=ft^Ize6U*br+^OPg7VTxJgA-IpL^;^T(rWcDn?Fcwj45xTct=-g>XmGvhG0Qv0i%0&M#}8FLjEGAXO5!I(y@&aRgU}FQ%Xt} zN)$P-mEd~S_xPVyWvBkGJ^e0UPZ)T7-+c1#q#f+q$#PecG8TGwE=*l1|E1c&O+Ed{ zg+r%#wkDm>EK$>5QqFv4>GUSciLcEi*hB@-Jq%H;wUl@rX>+G}sv&=tVaN-KFHa@0rB9Rhp-HW=wqdk=Zk34zEmI={dtgZ7!d| z%?05<9?MV4;M|@PW3F~vWmiyMZ02^Cu(qDw>8%HQ7A}}_ThiZBb5fzK6i@TaIn_-$ zCm+bk)YQ3L+m$)Zxu&PRZjy86Vx#y))jgS3>H7Ifa zN%3CnYX%D;_a~1^^mi@tUzF6d-^;T2Wbqy*;SFFbmi2$!d#Bm?AHTXq?}hvIlJkNd zS?4IEYRy{InBtV+s^Pu%4F1r){4nzl%cZP(tT zyPYjgzpz)k7$Td}FS^I`_4Om!(xaI(r8y5dFsJM4~iu(6xgL_Bj+?j4}&wk~GPdHE;`Tj@X zm&V_l{u#1xGks6}dst$J{%e`T2WlgqzbJeImf*QF{cFD>=bh=i97>r2-=F@M-QV{p U^Gwn#1_lNOPgg&ebxsLQ0NE}zX#fBK literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint15.svg b/doc/sf_and_dist/equations/ellint15.svg new file mode 100644 index 000000000..0e9d4a739 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint15.svg @@ -0,0 +1,2 @@ + +K(k)=RF(0,1−k2,1)E(k)=RF(0,1−k2,1)−13k2RD(0,1−k2,1)Π(n,k)=RF(0,1−k2,1)+13nRJ(0,1−k2,1,1−n) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint16.mml b/doc/sf_and_dist/equations/ellint16.mml new file mode 100644 index 000000000..38516451b --- /dev/null +++ b/doc/sf_and_dist/equations/ellint16.mml @@ -0,0 +1 @@ + RF (x,x,x) = 1 x \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint16.png b/doc/sf_and_dist/equations/ellint16.png new file mode 100644 index 0000000000000000000000000000000000000000..2679625ab5f81cf7bdf5f303f1456d41b29b342c GIT binary patch literal 1052 zcmeAS@N?(olHy`uVBq!ia0y~yV3@|hz@X2;%)r24CUrQMfq`LHfKQ0)|Ns9P7#Lbw zS`rcxu3Wit;lhPEbLM>c@@2=49V#j+6%`c=7A$!1;K7P&&4Jj!pA|fI_K0Y&M%-FMMPe@3Ji;K&L4>dT-W8L3=GV&o-U3d5u9%$f5$I! z5V&9JudFDaA-3|#;+ll?)Y7MOzyJRqZT{OKVnz?E_1}X(8E>q=UunRz`LMfFpL5u8 z!8W<0HD^m6NQCJ{|F=7|LBaH%rcN`HW$I~#$mO?;Jg;d+-=DqK>-LF#O8&pnqB5E_ z3>BBkXGTvwZZeJWc|&HAPJ~TXpt`?lhsqSvU5+ znzg}jopUbV?zJf*aqgFXpMKgMzme5j(m`QS;`x(J0bMu!7j3!K>n-ZCi~ zA0J)i_;gY-$CLwZx2xw|RhsE~Z2z95@NK#A#$WxcgC0n(SrM|g_4W0JDf&v@94;j~ zKR9llR+!|;k!ErFQqbJR+27ygRvXO|dbDE0g88M@zllfEEr#$vsAV>P?9y}qvZTgy#z%WPH~?yk$(;ZPLCY#{_v zD6uWLUUpnP{i(OuL(;)KL$0s2_xTVEQ=6_i*>GHk0D_PQc?6bYTCEG6-_3xSgi)GT~ zD{@y3tyiA8<_OCs_TN8!&b)e+oxeHP>PE<<^A&k(Uw%qdm~uMHt%22S>XWhw;f4zq zEi=nHbY$72JY&uW>f>uM7O zY)({Oj%qz=)$!kdPT7m&W|8v)_?Y&e;{VnBHq)$ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint16.svg b/doc/sf_and_dist/equations/ellint16.svg new file mode 100644 index 000000000..e20460912 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint16.svg @@ -0,0 +1,2 @@ + +RF(x,x,x)=1x \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint17.mml b/doc/sf_and_dist/equations/ellint17.mml new file mode 100644 index 000000000..485c69200 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint17.mml @@ -0,0 +1,173 @@ + + + + + + + + + y + + + q + + + + R + J + + + + x + , + y + , + z + , + + q + + + + = + + + + + + + + p + + y + + + + R + J + + + + x + , + y + , + z + , + p + + + + 3 + + R + F + + + + x + , + y + , + z + + + + + + + + + + + + + + 3 + + + + + + x + y + z + + + x + z + + + p + q + + + + + + + 1 + 2 + + + + + R + C + + + + x + z + + + p + q + , + p + q + + + + + + + + with: + q + > + 0 + + + and: + p + = + y + + + + + + + z + + y + + + + + y + + x + + + + + + y + + + q + + + + + + + + + diff --git a/doc/sf_and_dist/equations/ellint17.png b/doc/sf_and_dist/equations/ellint17.png new file mode 100644 index 0000000000000000000000000000000000000000..13840f2e82f0a364ae8586a25ea07044f6466501 GIT binary patch literal 1771 zcmeAS@N?(olHy`uVBq!ia0y~yV7$)2z|hFS%)r2~^cTZg1_lO}bVpxD28Q(~%vrl$ zGB7YmmbgZg1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wP9djU<>dGaka6r`Tzev zhp*RE1_lPEk|4j}{|ryJ8+b7=u*G`1IEGZ*dNa3s(qaVxSN{M1FGokulxWP06Lc-! zomH+TEcznZUSXr6$2<)W*7MK2j_V$%pIOsf@M~#VyCic;nEW^2$ga29QqR+sZ@l5T z_Em*PW(Mzs$h``i*S*(ad+q+T>WuU^n+-iOv-l?L{Hsxzx?-;4x|a6hvuqaASKog( zJ?8(v=YQkn@)xP)7XOu(dh}vK%!Pi1%p->EGh&w1&CSTjyniMy$SC}=)K7-Xb#MKW zRQ7FMU6wubPS!?a&3n@o_`lx#S@~LVid7!3FrRTmS*&JrFJIfVkEzUC4hWpuo;k_f z^5dju(~8$M-u>%a!mM)5_l`Q(yxsHITzXU2${sFV&t_EZA2Of!LVwtmKhK`mG+nQ` zm$&AR+f|`eF>^D#%7VidncRJN=*3mWx*gAMG)t$SI(3%4!&+{Z)y#jl)q`0^)E$Bw6fLDSjtrlg+*a6)B7Q1-a)uWip~eqr2CK9c#Rp^6c-y6PG%6JCtmi?JAS8Zg2Wo0K7hEd3{4d5RKQb_P&iongmRa3gyVmK^x-8ROkCk__McrO~?#A5G zl>t%8NjY*|i&v#xeW#qQAND5h`N3aaYx@3gaSP;1oN>nQfYpkqp2#W2hqbDIWWC6g z7imep{=lg0*sMOOG5q zEBcysYqx^^9;5I}Mom*o%yoN|)^#sCT=*zt=`r1R*OpIiSyyr5!`+X$Q(qMJ{8`ax zcHL9mAV>awc&8lO>Gh1JLUX$c+m&~IS{k2W`_p}=oSpu{R}x1`?ZOX5#%PBwS}Y)w z+aq}O5qD;8-s9LKTaELj&acW2T~rv$9_SjpC+cdR=)3rbv&4#zHQ6e#+9plmJNjAt zBx~pC$-B0$x@)xK)a+$9vlrFO)^7dbZ|GsY_0Q3-DeDsZ7cBM5s`3xHCwjg3Q{v@r zwa`U-e@KNd))RSNwz}ZILU{4%mdD~XcA<-ct^X{siVOeNc|dHI=HB0@KhJrr-uw6S zrG=q)#))EZl2yAnbc(*F>dt zIhYOQp=P!Rjtr=es*SdUvK7@scu}$Z(Mae@>R%u&hv9jfkGe?PhVwaq$_evP8PRzlsc_xy;mX-X(uTC`_}o^1T&0?$w3*Y_O#TD0z| ztc-zdndaG7-tFqsRo_R*Cz@8zu4Ftj-~HO$nXCM&c5URl!TfIHv>Q_Em5XvL6_?%n zVzTY@m*_Vv)wy?<@ST2Zmb-iNkzMv%FMdo}x1C?raOK?E zUM10jO=~WdZ;BB3T7OYX*k?n)wpXE*Q^N{Av#+~+;B{IJzk;qqMBJUvmUqEQ=JoqxeN=-G&%D zneyvTylPK<%31fjbfRpM`mS|`^{Sr^ub;l<+_h`BS5$hXn?2pL>4bmTo~6@XuQmT$ z`f2@YH@h?6gRku_-g{l<{cApBSLQqZ7yS>NQdx66<7J5N;j;(C>?c`ry`HkR{;TEP zr{DC~@gID(-u_l~UDs>hGgqVQ-~9g(6EnT&@VQ^fFMhPd#)Lnc^(Qdq{W($LGKZM_ zv!cg4I3HEz+vgm7W?-(fZn{rN+kNrtsRxVL!U}C=a|$yj6`U@uKNzopr0HIiFO#lD@ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint17.svg b/doc/sf_and_dist/equations/ellint17.svg new file mode 100644 index 000000000..a2a34878f --- /dev/null +++ b/doc/sf_and_dist/equations/ellint17.svg @@ -0,0 +1,2 @@ + +(y+q)RJ(x,y,z,−q)=(p−y)RJ(x,y,z,p)−3RF(x,y,z)+3(xyzxz+pq)12RC(xz+pq,pq)with:q>0and:p=y+(z−y)(y−x)(y+q) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint18.mml b/doc/sf_and_dist/equations/ellint18.mml new file mode 100644 index 000000000..d0092376e --- /dev/null +++ b/doc/sf_and_dist/equations/ellint18.mml @@ -0,0 +1,53 @@ + + + + R + C + + + + x + , + + y + + + + = + + + + + + x + + x + + + y + + + + + + + 1 + 2 + + + + + R + C + + + + x + + + y + , + y + + + + + diff --git a/doc/sf_and_dist/equations/ellint18.png b/doc/sf_and_dist/equations/ellint18.png new file mode 100644 index 0000000000000000000000000000000000000000..068456a65cdd59a67e556b697082ad7e9d9c1d69 GIT binary patch literal 595 zcmeAS@N?(olHy`uVBq!ia0y~yU{qmXU@+ofW?*1AbU*A30|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxZ2p*{Qv)- z!`Evn0|Nt7NswRge}<>q4ZIi_7>|0oIEGZ*dNb>7-eCnE*Z%wemoE2>KKf(B+zzId zXV+^ft$fdEwok)@uXqB-BZsDzE#V$cULKs9imFRmwyb1T5L5B%wo$Yd7BYYK(fErp62d*b~*>0Ng zOn&74rX-jlpzMyLg5j!L8;t8*YQ@*6p6jtr(^z?J<*ojW6|sJeCax#ds{a;$bV#c(}jNcaYgI zsmAMt%l)`TS`S>OHs#&Sy6$@UjBitm>9GkmUayW{So_6;d!>iNkp>f<-1=RWQx|Ms zt)+5nRjYP{OP`1NdZCj0!D?EiqRa29#Y~uBtgv(H0{Np3dqe*{V>Icnt7M8_l#|aW z%0|SGntDnm{r-UW| D8(RP* literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint18.svg b/doc/sf_and_dist/equations/ellint18.svg new file mode 100644 index 000000000..5bd74886d --- /dev/null +++ b/doc/sf_and_dist/equations/ellint18.svg @@ -0,0 +1,2 @@ + +RC(x,−y)=(xx+y)12RC(x+y,y) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint19.mml b/doc/sf_and_dist/equations/ellint19.mml new file mode 100644 index 000000000..ed1a26602 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint19.mml @@ -0,0 +1,119 @@ + + + + + + F + + + + φ + , + k + + + + + = + + + + F + + + φ + , + k + + + + + + + F + + + φ + + + m + π + , + k + + + + + = + + + F + + + φ + , + k + + + + + 2 + m + K + + + k + + + + + + + F + + + φ + , + k + + + + + = + + + sin + φ + + R + F + + + + cos + + + 2 + + φ + , + 1 + + + k + 2 + + sin + + + 2 + + φ + , + 1 + + + + + + + + diff --git a/doc/sf_and_dist/equations/ellint19.png b/doc/sf_and_dist/equations/ellint19.png new file mode 100644 index 0000000000000000000000000000000000000000..074fc1e109131e603191cb83f62260fd7573b1ba GIT binary patch literal 1201 zcmeAS@N?(olHy`uVBq!ia0y~yU`%6RVDRH$W?*1YDeyVXz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{Ej*?&z4{De~d$v+4G1r>-AA zY&p3@;qAkI$(wyYbIzG4iG9{}R5_~t^GV#^^OY_J*Y^1N zzx5WanAo4tCUQiZ%OWXkhobR}e*focN>WF(x$MvQ@;gs$KH@wl(o}2x?O6|JYoClb z@g=2A_H(f7VqY1xnIAcx*b!{Kh|@{Zhv*g?oV&d@r_?O!Gc+^Rh!-#Ty})Q;+A^&n~j|EaX&rT6j*vT&N%qyP^FtB`(eq7^n$w#V%=`nRMK9QMeFhW z2#^aqw$a*P%Ff9fIgRxVog-g1JX&ccadU;*%G)~aGlPy9&bYm!<6DY@+Ks&|X`a7B zo_+m#c+U50M}J?g^pa#ZyZw5H!xv+1L)C?!MgN%vZF#-r^mIXY!Am=g_^*f3ptj!ckYsNM)vKW)}FG^**=*q{g?KQy=>*bYa{oa6*hN@)iGdy zc0fjK1~W87;r!3a%d$PL%{rF!_=mi~`g<2c`^`=Nl^Z0#yq|q`_GQb`>R!Dadmb*F zziSK2Rk@yoZE{*CZe2+?+EeoWd-$d!YdG~{kIWC)rIn_cy;bz^NuA8lV+M;S3s!J_ zW=Pe1xaFSl?Z9K3c53hVBCv0Z6{GbtEBiNJ+3tLddfd~us_14%q(}@Ow`yqNb=A8r zv9iHarDNLmO*^sLE-c<<>msRV@0GhBuT0-6px@bgzh$TTjyqca_8f9poaQ~rOFj6Z zK#NLBNxW8Cb9&ZoF^>^~v5nbG}OTqLqiANFP5tWB#(r-Va;13m?mqedu%Q+4{PUPa4nIrzwThY~Q=- z$CB>NGwi>(y^y^3_w91^<3Ge^Fn_+kQJ;~GA;09x!Poj{HZU+SFnGH9xvX +F(−φ,k)=−F(φ,k)F(φ+mÏ€,k)=F(φ,k)+2mK(k)F(φ,k)=sinφRF(cos2φ,1−k2sin2φ,1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint2.mml b/doc/sf_and_dist/equations/ellint2.mml new file mode 100644 index 000000000..61e7f7477 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint2.mml @@ -0,0 +1 @@ + F(φ,k) =0φ dθ1 k2 sin 2 θ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint2.png b/doc/sf_and_dist/equations/ellint2.png new file mode 100644 index 0000000000000000000000000000000000000000..e5be3a0f93b992c19221cb87701b879a8cd510ef GIT binary patch literal 1901 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint2.svg b/doc/sf_and_dist/equations/ellint2.svg new file mode 100644 index 000000000..b5dba6caf --- /dev/null +++ b/doc/sf_and_dist/equations/ellint2.svg @@ -0,0 +1,2 @@ + +F(φ,k)=∫0φdθ1−k2sin2θ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint20.mml b/doc/sf_and_dist/equations/ellint20.mml new file mode 100644 index 000000000..fcbe7fb3e --- /dev/null +++ b/doc/sf_and_dist/equations/ellint20.mml @@ -0,0 +1,30 @@ + + + K + + + k + + + + = + + + R + F + + + + 0,1 + + + k + 2 + + , + 1 + + + + + diff --git a/doc/sf_and_dist/equations/ellint20.png b/doc/sf_and_dist/equations/ellint20.png new file mode 100644 index 0000000000000000000000000000000000000000..fa94c490429c929eeee66b9dc5fab88345160156 GIT binary patch literal 421 zcmeAS@N?(olHy`uVBq!ia0y~yU^vOZz#z`S%)r1fO=orn0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxZ2p*{Qv)- z!`Evn0|Nt7NswRge}<>q4ZIi_7{xtZ978H@y_w$4by$JNwg3PB%gu_{+=Zs5yp4*I zSo7%hlY1`SRi_Sn7yaASV0yXMBfu@z$LWEAob#mU%$O4okG_v)(DwLuu6r|6`IkdM z&D$g&^49;jxafq++_gR$&McGW*&S)r;&f7(JeNbFCc>Y<)8$WsaISL5?F+G3GbUw;aK$cHMd0R zRL0XTC0AGciqAT!Bec=He$lh^viFyMA8%NYcaPg>cgV-f`G$|4@49II_}<@7sy~~b cD<5E3@I&B!jPHJH1_lNOPgg&ebxsLQ0DyU~;{X5v literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint20.svg b/doc/sf_and_dist/equations/ellint20.svg new file mode 100644 index 000000000..956c34904 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint20.svg @@ -0,0 +1,2 @@ + +K(k)=RF(0,1−k2,1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint21.mml b/doc/sf_and_dist/equations/ellint21.mml new file mode 100644 index 000000000..dc55f3596 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint21.mml @@ -0,0 +1,175 @@ + + + + + + E + + + + φ + , + k + + + + + = + + + + E + + + φ + , + k + + + + + + + E + + + φ + + + m + π + , + k + + + + + = + + + E + + + φ + , + k + + + + + 2 + m + E + + + k + + + + ; + + φ + + [ + 0, + + π + 2 + + ] + + + + + E + + + φ + , + k + + + + + = + + + sin + φ + + R + F + + + + + cos + 2 + + φ + , + 1 + + + k + 2 + + + sin + 2 + + φ + , + 1 + + + + + + 1 + 3 + + + + k + 2 + + sin + + + 3 + + φ + + R + D + + + + cos + + + 2 + + φ + , + 1 + + + k + 2 + + sin + + + 2 + + φ + , + 1 + + + + + + + + diff --git a/doc/sf_and_dist/equations/ellint21.png b/doc/sf_and_dist/equations/ellint21.png new file mode 100644 index 0000000000000000000000000000000000000000..76cdfa2256470e949103b2c56f062b01ce063902 GIT binary patch literal 1800 zcmeAS@N?(olHy`uVBq!ia0y~yU@Bo?U?}8ZW?*2*etIsQfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9BI0Jk_Ton`)Y;0`) z|NlR$`0!^21_tJmAiv=M{~4~I;&o(TU@P-+6`E^AHbQQlO=0-HEW19Q#)%pIn+@Dte7GJb*qu11#RmvqVZ;P=P z$LlXV=Ny~5rYd}on3bx1Nq~5R-^rGDC*$(kO#g~~H+7h@jd5=G&NDYIofbEFAXt+7 z>|g!tP4Ry==e?OyHhGr0^YVGq@29=0y&x%~X}VzXYHl5sP5;&~-aWkcPE2#drhhAq zyn5F6?TcM|@#|FH8|-&iES@aCYdZh>)a<;Hk}Bhpy+>DHw0QY4Ci}X4a__~jr57~w zr}DlC*&6q)UHQ!0g~3^~ej2?fb6(KHJNd800prdSU-HbCYw!7E__;M&&GmN9f4_O% z6EojP@4XW=$7+Uk->&egol7lBxk|cDY@Ad(dwR`QPDWWKtCj{nMp-9^_69!11 zVZx2nwG38Y6rZi*x@&Q@X2&A)zZ2N(W=u6MJN&8Xy3VHe_j(^{RhLG`3CbS4v-fi| zf31O5y5Ib$nHHrg#c5#&OBVJoX9NUzQMt|aM zpMNlTTDQ1J_l4Kut|s4ZHpV>5&E@Z2o(cK{T#<1{BHWx;ESd2XWo_$?OV55?CFKv*_L}& ziQiRSsJ(Yxd-&?bn_pFYd{{c8Xn*L=XR{U=tZK*;Yqn8Xs`dEC-6|{Pt9z<~=Uvk~ zc(>Zh_-WnhqP_D&)=F%-b$RLq&AZ~e0$2U4GW)Z6f=0RW`#BHmXB6#^+2o5^AEteq9cF_uAl@jg8!wl+P(I z`hGE8d%OA4{Aoq?t&ImSWN(}M+V+DxzgYYu7l-x)z84oZ&t$fm!EE)V=2^o#*)tm_ zILNoYtBQZcXa!0c0!$zZo{lh*lfZ?)lUPb#96rJMLcmt`0;B8&#Rbe(3z)4~O7ffi z(shM)zb_Y+@yX4YD!H=5FUDm3u@%pqx6iu0@poPPLBkg%A+93p&u>z^cW6HI-I7gL zw#Jp{8pwWX`%!9jIk()IW!L2e-WNBX*kxzSw5xu4&f&nChbQhneibUW!8Ez~Pw~NP zs_)i3+gR+mq+-M5Jd4BgjE+R^;NG=Vx%~WtfRmGj?|(F$HThA5{c^v9TvyNbpI#z; zZ-aVriKtw&Ucr-hsS760wXNrf{r*DIa`qmk(#ijo=eGJyoTnwVcymEz+jSB9qVE+? zy3QTWEUug3b9a*a-w5-g(^e(di7$}8tFx8wY)NGb7+=u5-9t&{eM0@kIi=R>?}2TOaFnypi2@qjmR!*%n3RnIeCK zc}3I1^1eZu;>PZ`F1ewTL$A?RWgQ$oO|)`u?vR=4}_&N)%a?>{BkE-gbSJ z(cH&}r>>nHs<%~EHg;0A@LIuX{b|!>Pu7~B?zJm9Yw5V+IlqLF)*a5+A1Cg96}-lL z*FXH?hMn``+!th<-Wha<1&RF2%)%+AsLZ?cBY^{L@~SA2S1|*st6eK6m}~ zS4UUBYA)aHTw|(Wdid4!m^Uqb3xhx1J6q(OXU>+mUNTAi-EEn7Zy4)8 z8_q;2)zce4R?Lv@vX!zbt=}47!L#dg-<`QdmK717*BhkI7hUaqw`1M&y3U;%CC_Dd zS|=8Nx%aF0MTwh-)v{&F?Y7F;-KzLx-o9RDTHG@?G3g6`y&}9E+U?%_+x`ED{EHX! y8~I*XSl*ZB<04CUQQOw!*@dowUFFnGH9xvX +E(−φ,k)=−E(φ,k)E(φ+mÏ€,k)=E(φ,k)+2mE(k);φ∉[0,Ï€2]E(φ,k)=sinφRF(cos2φ,1−k2sin2φ,1)−13k2sin3φRD(cos2φ,1−k2sin2φ,1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint22.mml b/doc/sf_and_dist/equations/ellint22.mml new file mode 100644 index 000000000..fcb3704d5 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint22.mml @@ -0,0 +1,57 @@ + + + E + + + k + + + + = + + + R + F + + + + 0,1 + + + k + 2 + + , + 1 + + + + + + 1 + 3 + + + + k + 2 + + + R + D + + + + 0,1 + + + k + 2 + + , + 1 + + + + + diff --git a/doc/sf_and_dist/equations/ellint22.png b/doc/sf_and_dist/equations/ellint22.png new file mode 100644 index 0000000000000000000000000000000000000000..dba416e2bbd181a41c3e4ede4128a6a67be0b6e2 GIT binary patch literal 627 zcmeAS@N?(olHy`uVBq!ia0y~yU`%3QU{K*;W?*1w`EsC_fq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B*aCb)Ty1P@{{R2a z;p;V(fq{XkB*-uLKf}}Q23`ydj88pX978H@y_wb6cUXa=&Hn!XrTWuLUWW***;4*C zqv&+r%nzSALt-^6=hjT*5c>FbakWvB$B~&wJ1qp&ANA-7+D9B=Tz=|RgQxp9CFQu= zz57ooPz5eCkYu4}S43+#{EK9T45nvEAyYO@1)4_zcTTLyi0!y{NB2(LQ>tm(mae?4M*Gp}WuM}0_`ZBO&gRJpjvDEf?+Hhq i9A1CF=r4x>gWDwi+#jplIT;uj7(8A5T-G@yGywotRTQxR literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint22.svg b/doc/sf_and_dist/equations/ellint22.svg new file mode 100644 index 000000000..22dd0303f --- /dev/null +++ b/doc/sf_and_dist/equations/ellint22.svg @@ -0,0 +1,2 @@ + +E(k)=RF(0,1−k2,1)−13k2RD(0,1−k2,1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint23.mml b/doc/sf_and_dist/equations/ellint23.mml new file mode 100644 index 000000000..e40eb9d79 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint23.mml @@ -0,0 +1,130 @@ + + + + + + + + + n + , + φ + , + 0 + + + + + = + + + + + + 1 + + 1 + + n + + + + + + tan + + + 1 + + + + + + + 1 + + n + + + tan + φ + + + + + ; + n + < + 1 + + + + + + + + = + + + + + + 1 + + n + + 1 + + + + + + tanh + + + 1 + + + + + + + n + + 1 + + + tan + φ + + + + + ; + n + > + 1 + + + + + + + + = + + + tan + φ + + + ; + n + = + 1 + + + + + + diff --git a/doc/sf_and_dist/equations/ellint23.png b/doc/sf_and_dist/equations/ellint23.png new file mode 100644 index 0000000000000000000000000000000000000000..cc56ea0a755576a56250e9ec9025a3ed776e32e6 GIT binary patch literal 1268 zcmeAS@N?(olHy`uVBq!ia0y~yU@T`~V5s6?W?*0_{{DCw0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8?(Y;uunK>&={(RbLc1T8sDm@BTL}b6KQF zV5gAnpX}c~r>$8UuWV+$#c{i%;m&`l5Vv>F?!0{eWFO!6&<*>WtWVT3eAny?{AIm! zHRojOos)m_+}Rt_^7`j*!LK`54)s)Lap%nvh)!90c*o&&Go1b$t|*%OWZt7bhj+gW zf;Y?Aym%+}IAw>k_4ohh6ZXh=-bpm_eeAdJ!Mfx3_Q(jo+0ULltNQiH&SgvAZSKCa zu$6_`UgNKUNxiGxw<&ya$7NOj@m<_#Q+$7V`nkWqY(y=0PO|X69v*hr*tt$` zR@t-nVZzP-^K8VQPPj95*6-TjYj^zrtyrre=y%##@67Q@TfBRJ?Y?^CLDoC>w9U$ik|cDTZd9m?lyJ+>GNNf%`EIVD}tM9T29T#oACfYv!ab$yw zjB`o#%l9utUcPUZ?`t~a$a*3$bpC$l$&DdJ?nyPf-MR|h*X(Rw{!ZAY862z%T0-mba~U+M_2`Z<@i`2iHEfha5l{`EDjqksAk;yr>@9a#D%_+{WdSaX1Q~CY-wEo5C z?rz=WkP-R9jJs@3|Jkf}RgH_RG}-pdvgZ0DYkF?Yg)Po^gO)$n%jz*La9@~k?kVT1 zW3khPw|8|<&FDFKy?^4Yr2oZ1&1&oP%QRKz{MbEpN5sTqGb;W{tknD#|9oq`z~wiE z$L@N>tno;Gvm&FkTIPJAny#VRDVw;~b$gCV8W(O9>NWiNYhzfFj};?Jq`3a`RTFna zbRLsvnzUQPP|aPd;(U6~k)vED$BaOhJvwbW`J>3o?%t>Obo9a&8LGwG|8v_n=SYOg z{FN8PrK>lDT~pwFYxp=X`XvwFD>c*ax6~xh$otoxwPF6QHuH$wox`_xDDP?8eR0LT z9ob$L;t%fszsD>tc(bO<{heF1!@5#Fn_m7Xx^Q-Mirq&&hPjOuTTB(fgeDLSiEGiQhYuBK2~qosfvS0}_}lDYG_7`P;tk19R>?ynFX>(w(~+ z{#Lusr<;dA6N_ut|NG&5+xN5QU%&sPyT@+zhx+@E1*Z$=J^Whv=1|4E*wWh1+duqD ziq}8a^F+?+UH!dhkLT@fz0UnR>7#8m_xpz@4@bZId^TjwzE^hlyKbDUov@ML=GZ?D b1BUjw@!_Vc_FiXTU|{fc^>bP0l+XkK3`C4( literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint23.svg b/doc/sf_and_dist/equations/ellint23.svg new file mode 100644 index 000000000..88b5c4f70 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint23.svg @@ -0,0 +1,2 @@ + +âˆ(n,φ,0)=11−ntan−1(1−ntanφ);n<1=1n−1tanh−1(n−1tanφ);n>1=tanφ;n=1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint24.mml b/doc/sf_and_dist/equations/ellint24.mml new file mode 100644 index 000000000..1fef1ae58 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint24.mml @@ -0,0 +1,224 @@ + + + + + + + + + + 1 + + n + + + + + 1 + + + + k + 2 + + n + + + + + + + + + n + , + φ + , + k + + + + + = + + + + + + + 1 + + N + + + + + 1 + + + + k + 2 + + N + + + + + + + + + N + , + φ + , + k + + + + + + + + + + + + + + + + k + 2 + + + + p + 2 + + + + F + + + φ + , + k + + + + + + + + + + + + + + + tan + + + 1 + + + + + + + p + 2 + + 2 + + + + sin + + 2 + φ + + + + ? + + + φ + + + + + + + + + + + N + + + = + + + + + + + k + 2 + + + n + + + + + 1 + + n + + + + + + + + + p + 2 + + + + = + + + + + + + n + + 1 + + n + + + + + + k + 2 + + + n + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/ellint24.png b/doc/sf_and_dist/equations/ellint24.png new file mode 100644 index 0000000000000000000000000000000000000000..dd51a1465e00513d316881ec13e41e565ea5bbb6 GIT binary patch literal 2448 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 t)O +(1−n)(1−k2n)âˆ(n,φ,k)=(1−N)(1−k2N)âˆ(N,φ,k)+k2p2F(φ,k)+tan−1(p22sin2φ?(φ))N=(k2−n)(1−n)p2=−n1−n(k2−n) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint25.mml b/doc/sf_and_dist/equations/ellint25.mml new file mode 100644 index 000000000..0daaf3d26 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint25.mml @@ -0,0 +1,93 @@ + + + + + + n + , + φ + , + k + + + + = + + sin + φ + + R + F + + + + cos + + + 2 + + φ + , + 1 + + + k + 2 + + sin + + + 2 + + φ + , + 1 + + + + + + n + 3 + + + sin + 3 + + φ + + R + J + + + + + cos + 2 + + φ + , + 1 + + + k + 2 + + + sin + 2 + + φ + , + 1,1 + + n + + sin + 2 + + φ + + + + + diff --git a/doc/sf_and_dist/equations/ellint25.png b/doc/sf_and_dist/equations/ellint25.png new file mode 100644 index 0000000000000000000000000000000000000000..4b7b4cb06c32ff43a6a0f409143c8e8691cca2ef GIT binary patch literal 1048 zcmeAS@N?(olHy`uVBq!ia0y~yVA{gKz@Wjw%)r24aeL-Z1_lO}bVpxD28Q(~%vrl$ zGB7YmmbgZg1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wP9dj;0*8yaaB-Iu(7fE z|NsB2;=`XA7#NsKg8YL2|7W;@~J8 zESn8ahAub0+1|RYMki&%ZTE#2%{H?KJKPqIdT~tT;=8C!SF28)-V2v9TBf;WaO(D6 zxFqv?cG9w$7xLWRe&+AJ@GdNCCYzIY8s}R(-*xM*PV)RM11j#~RS zRo94a(U|;|XYn1&jSsJ0J?Gx*dgDd?D&ib)`hN~PP?0;TBPQEQI(n8 z9{JpPsyf%(2cn{@+-98DTsCvB$gR9(PLV8cGgYSOY`J_ObqTZ)ZXDP6ZNO&s{6MWdQY!27(6JJyK*%9tI*Zd&nvp71sVP8UcGM(+nZ#w zg|%{37B7;!t-deJt;w#t`p!Y9zw4X(p7kH5q!)25&bM1?_`r^P?S{u4N{-giS@lZC zGoS92^4!mV_@lVjRDq;z3rmx^t;!dg)>MCTezf#~PsZU>d*{q*R(Nd3pR2&TV}bpF z$|`{cuBE?LNzZ*|obukSX|}o9f+;4sGmRK>O`S|jZ~b`f6}+YYZo10(ITnf58(rtR-(o(xU2VTd?mD$No^w{diBI$V z&VEyPYR8+a5)o6Z-X^gnLp-gj!H|7zjIX%k>R;Q|-Q4g)Weexi#}~GBD}_62zp=2} zyRbj0sGgB)%L_64S829aE`KxJ?b#|DeWh~E@~aEqKAk?L!f?lre?~H^*rx3{*UWOa z-{JNdEBEZOe@AcHZhX8>e7SVemFZCv)31f33hR+l6=krCdk?<%oq#1*4q2 z(=uDW#U1!`f34b +âˆ(n,φ,k)=sinφRF(cos2φ,1−k2sin2φ,1)+n3sin3φRJ(cos2φ,1−k2sin2φ,1,1−nsin2φ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint26.mml b/doc/sf_and_dist/equations/ellint26.mml new file mode 100644 index 000000000..c17ae7c08 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint26.mml @@ -0,0 +1,55 @@ + + + + + + n + , + k + + + + = + + + R + F + + + + 0,1 + + + k + 2 + + , + 1 + + + + + + n + 3 + + + R + J + + + + 0,1 + + + k + 2 + + , + 1,1 + + n + + + + + diff --git a/doc/sf_and_dist/equations/ellint26.png b/doc/sf_and_dist/equations/ellint26.png new file mode 100644 index 0000000000000000000000000000000000000000..add60172a1c07889d5cb54a90fe953de90a9fcf9 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0y~yV4TLlz@Wjw%)r3#YNC!P0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxZ2p*{Qv)- z!`Evn0|Nt7NswRge}<>q4ZIi_n8Z9?978H@y_tP6@2~=otN*|M%hf|~dmS(|GvxI3 zU20cyFs5dM=Cb6|+Y*#xH|UA=MellXE<^C|`~V^EZAT_WY*H1wekHQJ?Y@lep197` zqXnKio=-n-GGo{O;rCUN)io@S%Te zjk((U91;RNuJAj}=?x?=JE+Sf-fiD`G7NIGu4@38W>BTcbx8#?m72kKl&W=Yw&{jAZtkp2+! z!U- zzWzrMqv&@@pL(hDmeVwqZY)bM43YH<*LmFgt#_f%&uQL9>eHgH#QLSqc$#{sqg>&ytnJ~>G(JLeXU0}Nr`=2r}e+w i==+|W-QScCF!XrZB=$9B3o|e +âˆ(n,k)=RF(0,1−k2,1)+n3RJ(0,1−k2,1,1−n) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint3.mml b/doc/sf_and_dist/equations/ellint3.mml new file mode 100644 index 000000000..a105ea177 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint3.mml @@ -0,0 +1 @@ + E(φ,k) =0φ1 k2 sin 2 θ dθ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint3.png b/doc/sf_and_dist/equations/ellint3.png new file mode 100644 index 0000000000000000000000000000000000000000..30f8f04f5ff34aaaba49e37de75d384c0badb6bf GIT binary patch literal 1903 zcmeAS@N?(olHy`uVBq!ia0y~yU}RxnV9?=UW?*305@&Xufq~(0fKQ0)|Ns9P7#Lbw zS`rcxYHDgOT(~f2&YUMto}{FtxVX41Sg_#1g9mTkyirh4`0?Y%k|j$vY}k;KlM@mW z($LUw;J|?$J9gOE*nIi&Wy_W=fByXW@Zm#GPmhO(hk=0s4-XFq2gjW|clPYrGhxC6 z2M32EM~(;x2;8`Fqobqa%9Sfqrc5a*DOs^%ML^oym&EV z#*8&<*68TyoH=tQBO^mbMy8;kfQ5xcLP8=YCdS9d$HKxQA|k@X#N_{)9}gH9*wQ^+ z978f#-%3`-zp^k`D6*kdY5G=$cGp(15WT0iHv9iCzco`PmucUDxijQYy3?~^y|JQP|UdLjK=o94r3dY)S= zEjedv$Gl{`I&+`EVb6os^?I z8nTw`lkK>8gLkpKH+?R~@b%B!!&7yZ%lt_FcwRd3D))7#H}m8FR*CNs=91( zf8MvB)AtxD->Q2%sbHD$pJUHlR3omW$%LA%KgrHxeDk#4wg)UpsvDnej(p|cyzGhd z$uC{*CCM%Pk!}+bdsSAIm()BP&=IALHaJ)7|!~mwAp< zM3eA@@W|QEgnv8dHZ~vh$jh6vb)M2}jpH>Nl$>*_j!ez$-nxd>=BLCQ#UDG|RxJEu zrI`BVPSYpT$8U~rUijwA^?B2e2u(3hKc3`&u;aS)Lj_hz-I;CyDcZ+tb{Hj@?aN)? zD!4}~>*9sp3vyO2$~Q!qW7C>Gimq!i;5~HVc>jEfEU}NTvgPX46Hfc=Sk!e>tY_iYdiEp;Q0H{qB!PK)26`e z?bhj!Vs=mQ|K@kVwxL+;tp0|VdWdVAuA@}oWZh|6{Lc<5 zJ7yOtFHpVmr!yxu?0@(7O%WmY7&|o`l|M`=;8QVKX>v$crz6(sCEo<0EVpd!Vm-@a z9DKgHv(A4IS^e?otgM#6H<7w&+6h-vPV>(E%=k9B%h&u+N0RRQ_M|Rj7hOZu43?X! z6Ux|67|FbtBJf7&S&`X=4MF0GR_3n^AAazNe647gbUjE{lQ%9rP1WRrvS#sY!a=5|Q+)4ED@15#t0>Za#UkJ_VbW6}=j9G9} z(zWxAuA!>W`3u*>YUl0aIl(m9l5luzC)l9ebSKf|1!g7Acg4#cIR+2oGeUr`xt$!e{9#Nvmv##=mox}g! z^XFZs$X(Xi%cJyi#{{-xGhD>8Ll^Iq-cvgzv-D*mhnlBSC_%$D{23-a{xW>0_0ah|!MvO)RN&%oSbU&~h+h98Y??>xV_ zHsw{sWZj((+lxZtR6ad;`AUax)zOgK$}5By^K1AlX4)b6q{FuVXTz(YRNh=Oo?RuM zU#@QXYx-~N#y=imb~1S-?9LY_y*`|)6QSjoT)9_!*~EX(|3crh literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint3.svg b/doc/sf_and_dist/equations/ellint3.svg new file mode 100644 index 000000000..b53c79023 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint3.svg @@ -0,0 +1,2 @@ + +E(φ,k)=∫0φ1−k2sin2θdθ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint4.mml b/doc/sf_and_dist/equations/ellint4.mml new file mode 100644 index 000000000..38584f4c5 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint4.mml @@ -0,0 +1 @@ + Π(n,φ,k) =0φ dθ(1 n sin 2θ)1 k2 sin 2 θ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint4.png b/doc/sf_and_dist/equations/ellint4.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b52beb21f351ed124ef1623839d96360880dfd GIT binary patch literal 2305 zcmeAS@N?(olHy`uVBq!ia0y~yV9aA+U@+ofW?*3Oc0bt4z`$@gz$e7@|Ns9C3=B7J z+(<}B=;-J;aNvN0gM)~O$d@l)7A#nxprD|lqGDiR@aD~%IdkSjL_~0KaD;?}+_`gS z&z?OwIXMp=JaBPwX=!PhFk!-xBS!=T1U`KDaN@*?88c?|^z>Z0a;2f6;m@Bx8#ZkC z@#9BHNeK%J%aSEaWMpJ&YHH4$Ipg8sk&=?~mDn=I zJ=-l0JW=g0Oz*OM!BWj}L++f_;kacdgwEtoW02ynxV`Z5pYYR*cuu=F{OnFYc-B+T zS=Y4o!z$M!cK^Ps#B@HB))(F1z|!o7e7}BsS~oo;cuV%g&1X6G|5~YfHTLP@oQHm!JiChK z3%BO%`dYBl@2Ru=WEnG$n@8`g7c9N)*)vi46>NBRIFB|{-Sw@#~i;*LB+7E z#Wog?wMyrwemihgNmA(Fo7N9smA&8HFkO>3d-d+O!KZoxxuax-mz1t}sW(%eh3jdj znZ>%FWhF-gUNye>w2=MDckVv(u)A}Nnor$OSR=59ubvN@-dCcZ5(de7LeaPzYIyE5l4gXg80GnT)X zz5Uie;=*6M)+-XpQx_$?Qqnx=D)9buT~}N|aASb+UEO)d)3)j}%{OtZG3`|GuwAgE zX>Vt{ds)!lJH|1K*>oiA|j#v6232HX?^uv7kkxQsQiBcyZW+h zSNUU`KD|$SkY=(`Z>CM@g**l3}k49d%2#fQ3#}eTB_PFoekOzg#fzDz4S6$v^`MEq@8C1v| z$e)^I6es*-1JkG0tIikKteIURE3~ooMU(N<(p8(+2|0^5RhR7ia8;$rE6YCb)iP#t zhtN$QE$ytzX0CE`ee_FrR`R`K=WXE}a(2l+`Qd$mXVyQhF+aC!-Hbg#s;ZY7yt3>! z<=x;2YMQqAYps=-O31a*B_=`>qzKCCJOy9eA{H z>x*b%DVZtbM#Wvsid2Z_um_SseG7rm6P-)r|{}r3oqXoz~vhyXd&k6?g|#On*bJ>>5_zLxoqp-RcM zP=QRn<-*HO-S!IFzUW(T>1NX%7gxUby(hH%|0#uQE20bDZt0NwsXLEzno?M8OV9pD zKlN~j+O&0ftBQ+*58wU}8SW^2-|VH(rOCG$S|vgn1h)2vuFT;*w>tG>bzbbJw=etT z7FYEjtKJb2s=sB|?O&@WtiF>~RTnz>WB1ERS5|!96?XUG=5>>%*2_G$i@IRu+w7#1 z)p2Wj>|L>#Yo|X%9oOgicd$!+#MeZ|J2YRbQc##u$HdnSAooBKuX?}F`M9bHrB&->PMGFM7?aj=%; zvTv^6u02?_Q%887Z2Popf+i;`wp_k)_`}O}8=$J+PfAZNQeSE9^S1k6KChhlyE&g+ zW(4bRId=Lm@45w^#}@Bme*QRf8~feEADt)uV-c|F;dfrGUUKd0q3MsSl~37vv9ua& z)xWw|cSp-V#&Fpq`R{yY^c;Wtec8U9PA}H17CbV4ZJxqw>7<&4OTMLU%srU8SH7_K z@vZ%PlGR+NI_#{o{B}OepiSoQC%&}Ck5A|RTgDc?^V@nhucN2xO<(lqzMmXZ{p;hB hq^Fn7x5u9RKQClClk0|a#S9D#44$rjF6*2UngG?oizxsA literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint4.svg b/doc/sf_and_dist/equations/ellint4.svg new file mode 100644 index 000000000..dce0f2bd1 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint4.svg @@ -0,0 +1,2 @@ + +Π(n,φ,k)=∫0φdθ(1−nsin2θ)1−k2sin2θ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint5.mml b/doc/sf_and_dist/equations/ellint5.mml new file mode 100644 index 000000000..ab0ab38ae --- /dev/null +++ b/doc/sf_and_dist/equations/ellint5.mml @@ -0,0 +1 @@ + k = sin α, |k| 1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint5.png b/doc/sf_and_dist/equations/ellint5.png new file mode 100644 index 0000000000000000000000000000000000000000..07f3fa7c9699a2c83e0397307507ad68a12f39e1 GIT binary patch literal 948 zcmeAS@N?(olHy`uVBq!ia0y~yU|7t+z#ziG%)r2Kt+uwFfq~(0fKQ0)|Ns9P7#Qx{ zxf2o+Vq;@dQ&aQj&mR#Hkp&ADJb3UxK|vuQAz{gqB{OEsShHr$moHx?OqdW55TK)@ zvth%AGiS~?I5#fujj8X6rP9Une?Sg~TomMvR;{P^+a&6@)U4$PS| zCnY82$&)8MJUkaJTre;&xN+mgl`B^)EGz^B1Ux)Ee0+RLN=kO@*ilhY(bLnDlamt> z5pm?m5f&Df6DLlzw6qiy6sV}ENJvP?$jESTaO~N$$Hc@WCML$k#by1zFir*rrZt`} zjv*erN2h02FES8lU|*Xfp!Bb4)mNNV(hc~NKeSCmXmsxiu& zdULmHp9=FcBfs013b$;0dBo_&V^8OeA~u#sk7aSYPhu>Vs7^1}wNd@H?6gE+@C&=D zCmu!#(=NKC@1C|u!oY1dujb|BJ{FUBW~A|?-@TsWWtlA8cr$Cd*sU$iX|nulp5GOF zlxSP$c<;reuNShbC$E<4Qa;(Bm3(98?UeJj49Q2XJ}i;hetPkj<(t0lJSUZu_{Ld6 zU(n*?ryooPHP4PcVZ44`#?j(&*P}*7O-9wlkLTBvwOqa}shl-SR=BEZ`PwvKg2^-)=?hkV;#uvfOp2IbxJ{R^m;>^SbGis zxZc!R{MCA|YW}eaQyRFGV++!_<$RupN<#_))F()8D+>!xh|J>mEcvu!QMj6D9W zmU0bZUM9)7tl9qZ7U5GKMc4K*d)H)tI>)2bey`@p+;4Ka&G*u4JbqtK6Y=Dok*Xpo z{pCvSl!-B6%Hn(WIID^+ULV1=|Dj)Ui*cc(EPt4Y!-lL*-JQy=LCmjuW?T|8XZz?V zxjT7|W_eJR?IPcF>!0%u)Rn*J^Vr_#`+dW0VfB-@Q;ei%_a;AFNnN$U+p^bnOu1j~dn#V}^ww7aMyqc5Pu;qoZI+Vwd;J+42H}NvKl&IL P7#KWV{an^LB{Ts5+Qqn! literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint5.svg b/doc/sf_and_dist/equations/ellint5.svg new file mode 100644 index 000000000..80dcc0d1d --- /dev/null +++ b/doc/sf_and_dist/equations/ellint5.svg @@ -0,0 +1,2 @@ + +k=sinα,|k|≤1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint6.mml b/doc/sf_and_dist/equations/ellint6.mml new file mode 100644 index 000000000..427a6a1c5 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint6.mml @@ -0,0 +1,62 @@ + + + K + + + k + + + = + F + + + + + π + 2 + + + , + k + + + = + + + + 0 + + + + π + 2 + + + + + + d + θ + + + + + 1 + + + k + 2 + + + sin + 2 + + θ + + + + + + + + diff --git a/doc/sf_and_dist/equations/ellint6.png b/doc/sf_and_dist/equations/ellint6.png new file mode 100644 index 0000000000000000000000000000000000000000..217e652b2f1dd8df0c8fb7a55f2468ec17fa611a GIT binary patch literal 2242 zcmeAS@N?(olHy`uVBq!ia0y~yV6FIg$@@BqXj}xnf~qQBqP86BEP2!s2(X=nn$}`z}ux z$B+!xyHT0WzifE?CAloj&T(>aS**8jXOHXXsQK^zRmHaK#4$5-#`${^mS)%cURLwn z#Pr8g>-+?<`bl47jqjckeQ#R3C)@1blOMV(rglpf*vWt8SZcZc>|34(|2SNj_icLc zC8b55+|wo|8B0- zn)|P!>&^9_KbxER>ZNn9{i`r}|x5k<&O)H}m|iqhih{ z*85Bg`&jn&`>ogZk>Z_&O-0&uS`WUa*Sv}Tl*Bq!E^(q#e^PzIb4zXc?+@=Z{CRqQ zdqJO!!L1|gKWtQp=3A*61*(SN%4hi z@KqV z5J&cW0qMlN8!9|G?O#KMeCFP^c%*dvt*Dqu|AD@J(K=Z#)%lFsUM$vrnDArvj{ibQ z$;abvzujxD+Wa!$+mpj?7WICivTu${E!#ffpR1cL%VB1Ntak|)<|}x$^>W-5_5Z|{ z_;v%|+mOqTUa}l?agXvh@qC(iQ)u47-djBdZU;B3^l$F^mXYS;BU!82vmsOUh}#Uq z&l!#qZ?3)G`l@j4)v`O+xpsEDR9%(3^+D&!<6YZLFRO~G1Qx$NZ1P+_soF~7i&BSB zlJb!WmaD~Cb}ZiYN^_Rg+QmGx7N#ukeYNg+vfDZ<^K#zCM+qxJq;25WV0s`IZY zV{PluRXWf0^e*Rwj?GGnW=Zo5yTZQp?wEV1RW`=s+>&}nxrmERyEx30YDG97AOB%? zJ&6Bq+M<>lH=N6JxY%!eNsf*-tV+n9{-#Ta;l)w|ZuV3a-`n<8>yGt}H`2mq zCN9%a^V7LuZe}$->5}IL*M3$1pgf_OpZ&^X*p_SME-cxwX65D*YODc+Xv%<^yQ?R8swZq;cuODvhd?lY^hyklqaIro@9lncd=T^_P3|)r}Fo|7C&?M z*{ye6mqn9{_|`Yc3M@@Jx2@UZW~EU_pVPUvUtc%y9Xor}P(*5b>%KUBrIPyAd*2*3 z?09?HKJ3=}cgDXin5pQ>u-0v{SiLBxbIrzzq{AF@zorPtwwg%Y_8ZSN>9ey-s%P3vHRiHd^>F7m1tzgQ3zlnmmF2Nr4E30+<1~Gb;+-i! zoEf|7y6oj{y?ZJ@*Jb*ld%V1bKUHGNG{OZpMZTNP*#E|>;;QGw&H8hB7P%|(vxoid zVYhWEQ*kI=;_)%}`zQZ-MO8J1Pd{+VtD3#pA3R_D*S6Yw%O6Qiy|rY~yxiwkZ!Vkt z!c2Dm+3AiU6|C6@s-DbmJ(ah5dcD~6El)m+h@X`IT3siy$SVte&MFyt*7m~9^bFMCB0_Z)s+?7=Z2>@&-j!skjg#RZ;qa1 zN5IXcd;bU@IeqT+u{THVmg&ANGu?6H$IDz=O;{?tQ3p=<4f +K(k)=F(Ï€2,k)=∫0Ï€2dθ1−k2sin2θ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint7.mml b/doc/sf_and_dist/equations/ellint7.mml new file mode 100644 index 000000000..12026cd78 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint7.mml @@ -0,0 +1,61 @@ + + + E + + + k + + + = + E + + + + + π + 2 + + + , + k + + + = + + + + 0 + + + + π + 2 + + + + + + 1 + + + k + 2 + + + sin + + + 2 + + θ + + + + + d + θ + + + + + diff --git a/doc/sf_and_dist/equations/ellint7.png b/doc/sf_and_dist/equations/ellint7.png new file mode 100644 index 0000000000000000000000000000000000000000..061a93e60297f84f85b97a13d0d1bc3e6900ef1a GIT binary patch literal 2167 zcmeAS@N?(olHy`uVBq!ia0y~yVDw{PV9?=UW?*2jJ+^Qk0|Ue10G|-o|Ns9pFfg>V zv?L@X)YQ~mxNu?4oHdRvH9}l%a$!${`~p#;lqcXo*oYm4+8@O9v&VJ4vsr_?(EsKXTpRD z4h{}SjvNsX5V&#UhKPvBj2Sc5tXUHf5TK)@bLPyMDO09oWMsT}@j^pGqobo^#flX& zGBO1P1wKAL6%`d%u3WLOusCtzL`g|WOiYY~gaiuM8xyWGxsqtu;+Wa zIEG}fzKu$Ze`LesFS#JkVCq5(5s3wI3mPi8nikdl_b>Ilo_F_!jBwrehVNfkvu8h> zZ{mG<3v&X$_u8)1ZS7s}mz-L9M)NZwrgzWVYr5rZ!ya~qbnT6sH}gCG9e7w#3?8JI(a#o&yus3t%!xIks&V9}L+o64J6@%(C&$Rqov)x`8yfy1sA;7i9 z!{fd52-uLM~VyXPSo;p!H4?aiDjd9BndA0G2_mZ6#_G~c_y84APXy3W7dXe_$ zY^Qp%M(CGD*tos)pE7qP%jAoh%=ei#hW@dNSR}lgkK5(%t_;IT5k^VMJtzGp9ccPz z6Cbwy*dx8ObAsy5e6_gr!)Twx@Agabcg0P<8kEhwdep_h$>7vJFSBL2VwD=A!6ivw zt$b}|79UlRi9OlTE3jP0mc44?=6B0pu0GLz;cLmPr1<|rSxLVixOd7_CP%yxYis6M z=<}$*aO-0BCr?&h4=DL1+h3q0W7O za-{A3Ie9ac&ShSib9EZ8VAD|zudV}^r*anEWcj}1`SFR$HH`7%wr)cHW;re!r`z1i z{+QQ#|5;PPgsgJ`buX%}_C>zoIcW9Qruoo{pc%6dbL##6DYQOj*1iYa&k~>7+z>f9 zYlb>sl(~~ZWZDh)T(R2PIDg(8uj#GTzuu^JO$txWxt#FBYt6s3BW?}Z z%hpWQc<{qY>cXB=QP$F{pxe8E%%dVN$j7>L-L!*CGOPTddc(V7`2W)GD7pJuxI2Q%B>uPtp0RXe zJ|X1b@`QU{^RtAC^TO8m=cELe9zT>e_xa?X@kPh2{~Yk+nk(2O|4nZ~%X>A0^qU24 zN%qc8vn;<#aIDn5xquw zma9J9+?I6i>cuBUukIY_klghn$Km-Zm*R60eLM3#)wMU6^&MMtxmO_N*o#lH-Z`#M zp6_MfaN>F4b$+GrLt#sfK3Fqre$S1Lg7ZzqooxEwrLFs?ddy2Yx1xqIW77Lw=07H9 zoDD`t(u?;(->)39K^JZK32dlQtmrQrgzi|ADo!f*}4}xWk zc81?l+O@v;M2Lb4+xsG2S4R7il;d@IY<3GzO)Oo^9ch>C^2D3x$|r?8XHxRtM0WRW zc?&&NG?H%=gcI`*rho{0!SCE=eyT- z+3~f1o^_-`jrrV+8@%Cji*4Un`g^6c)U^*28<}HSJlR(wF8Kov&XSv(4cC-6bX; z)~kHTIcQ@zbAB$<{`fs#x34eyVEQac|D#E{ujOmz^Iq2yejapY>*iGtU+TY5*6Ymf zgS;QxCj37Aj^+8^_va2STrc(~X!Y({(lz2G{y%*-J!9LrIr(S3$FKWyo-pL@dhu}j zohzr}j;%3XUd>st!k z|Nr~gU$HCi^lvS`>ikNq;eQ}Uc{9hK=|11sr<|FxqEMxTm4ShQ!PC{xWt~$(698TA BLVN%K literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint7.svg b/doc/sf_and_dist/equations/ellint7.svg new file mode 100644 index 000000000..31973f136 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint7.svg @@ -0,0 +1,2 @@ + +E(k)=E(Ï€2,k)=∫0Ï€21−k2sin2θdθ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint8.mml b/doc/sf_and_dist/equations/ellint8.mml new file mode 100644 index 000000000..b6bc5d509 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint8.mml @@ -0,0 +1,78 @@ + + + + + + n + , + k + + + = + + + + n + , + + + π + 2 + + + , + k + + + = + + + + 0 + + + + π + 2 + + + + + + d + θ + + + + + 1 + + n + + sin + 2 + + θ + + + + + 1 + + + k + 2 + + + sin + 2 + + θ + + + + + + + + diff --git a/doc/sf_and_dist/equations/ellint8.png b/doc/sf_and_dist/equations/ellint8.png new file mode 100644 index 0000000000000000000000000000000000000000..912f7a7a8748209a4345ec4ba12cd49d6be5ea9c GIT binary patch literal 2575 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint8.svg b/doc/sf_and_dist/equations/ellint8.svg new file mode 100644 index 000000000..2c970b148 --- /dev/null +++ b/doc/sf_and_dist/equations/ellint8.svg @@ -0,0 +1,2 @@ + +âˆ(n,k)=âˆ(n,Ï€2,k)=∫0Ï€2dθ(1−nsin2θ)1−k2sin2θ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ellint9.mml b/doc/sf_and_dist/equations/ellint9.mml new file mode 100644 index 000000000..117c9322f --- /dev/null +++ b/doc/sf_and_dist/equations/ellint9.mml @@ -0,0 +1 @@ + RF (x,y,z) = 1 20[(t + x)(t + y)(t + z)]12 dt diff --git a/doc/sf_and_dist/equations/ellint9.png b/doc/sf_and_dist/equations/ellint9.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fdd9541c17ba30add6d81ca9fe7dfd5eec7953 GIT binary patch literal 2208 zcmeAS@N?(olHy`uVBq!ia0y~yU~FVyV9@4ZW?*1gS$;%|fq~(0fKQ0)|Ns9P7#Lbw zS`rcxu3Wit;lhPEbLM>c@@2=49V#j+6%`c=7A$!1;K7P&&4Jj!pA|fI_K0Y&M%-FMMPe@3Ji;K&L4?7DqC zDj{gLLZ^ADPTB9LOtsg{chqOpJ2Gz+)3A9o_Yl)B4c&QG8XQj!?cebIxc&P*HkI;&eKHoyF_!X-#?Gn3>y zor;BiA%agrxu3{fDsty)DC53TrGSkv;JC}Ea@w}TF&+tU?)W5#F`L4Ml4bPSuZg_ltjm3qQ^pDX2+#gDn&FiL_ zo?>*G6gx4pQ6@d|z>;q*s*`eTJbc2M+|E@cM_r0hfB9YKvE{Yq#XnS6vRcTmUvz%g z<$A6C786;X{ARw{c7uueRg_FjSmPGYG)BMPB{F9o&&Lhg>Yk{r8#q)jghS>bYYR^97oCCx`XXPA`D(p|dq zy_$|ki0Y4!km+3lC%agtcnE#cXL#8*jkPAf@wD!qskNLnU1}G|(<}Iq&nnZ5!8l^y;Zj zYPr%lD;M0}}fvvGz$$h6ccV;q3SL#l-F~R{$&>q_P!Qw!3(TLBxjw0?>Hm`2{h*AY z!C%=zy8I%OxX#>Ji)1sSeNvM}+3QaJS|`=$;dfxwqZ*O#C)F~#uDldd>h$1U!9A6U zBj=YcA6VvOfJ+`_!P+*^K5ux^JN$FdFgNN9{WQaN_-YHHlOU?H|rs*OS-A# z>6=Td`lc2x^EBTaqrB{Tn`f%U8m)8gwV&Kx-21qP@2AW~(b8Ql9y~^DAoDxEo2qQr zy->ZV{KuO9wBzlKO5Pu9gjDWqoH9dsMa!4XUAEgylw{9z=hV$+jVNo|cg0m+v6}Cy zxurh&KaRzlg?))GAymzvC2PMO<&|t%Pf{&<~!3LsQW)odg|ojVC7n@CMKlq zl({NkWy7>5%UIR=r=BYRbKSDCqnKk$po7&FskmDK@k+5I2 zt?yYlf8EPzQKrFWuN-H2aPHdV9CCEiqvS|UF9)V?@*Sy5%)@_ ziz$jBS_yNWbc!*od(1a`wa~8Xx@HIRAG%AoGk)vXyt$_1jZmWWL$$ut7pm7Zzk26z zum{>@PhaKoWOictKOcF8O%wk)h8)f2_I?v^b(v<+;_MJrpCxQA+FlDUF(j+_Z)4!t zIH_ZikC~5(2%F2}uR4YbIvbqKWJ*^YY6*N|5+^WOIV^vN+@H9Y`SMyPOEp%llCVpO z)pg3WE>z<5kX^wwm1{-L%8+MME{fdke))Z8$+11xw8U3zZrS^&N$#^njfbDm)`Zj( zZ>lO5e(SC>*I$@alWe!O;q37lY5znRE*hq<*e|;9NX^ASb+zw5zl6_gOewe{`g$+h z{`=nDM;oTD`#IrA_ji$^6R*y0WbJz}wJ6b9$TZdArBQj}$G~MrN<@`*D=ZDrY)r~- ztTyLvVCr6z)E{g0%6i|DpRtpEWtT2UJj=r)q;oH5*`vimo~oW<547_&m+JiYSl@bi z-m+)qY4-mF^ZpC=uGagU;_~db(l4txkv&IxUf2hnJ>IdaW}>6~(gUV7ar1vC82_H} zmVbA{)u>RXpOUi9QO`409PSr=_0;+QUsD6o{K6BrE}Q*Y^(eW_pz8lwKJ8mlA2u*n z$gKGFMO0`dCwo~__F;bI{Hq5{*S&3d!*i|q>RFlf6&nsjf8AyL?}g0%>sp^S9cVUJ zXm8vty~U}1^Jk;>&Y7kKUiT->eE&}U#R9Q9>m`e4e*IOJkXie;`|7-V`)(w*>PRL0 i-!+l-m!@Go!vXfWr-hAmiWwLf7(8A5T-G@yGywpNSqVu1 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ellint9.svg b/doc/sf_and_dist/equations/ellint9.svg new file mode 100644 index 000000000..245279aca --- /dev/null +++ b/doc/sf_and_dist/equations/ellint9.svg @@ -0,0 +1,2 @@ + +RF(x,y,z)=12∫0∞[(t+x)(t+y)(t+z)]−12dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/erf1.mml b/doc/sf_and_dist/equations/erf1.mml new file mode 100644 index 000000000..6568f68b9 --- /dev/null +++ b/doc/sf_and_dist/equations/erf1.mml @@ -0,0 +1,41 @@ + + + erf + + + z + + + + = + + + 2 + + + π + + + + + + + 0 + + z + + + e + + + + t + 2 + + + + d + t + + + diff --git a/doc/sf_and_dist/equations/erf1.png b/doc/sf_and_dist/equations/erf1.png new file mode 100644 index 0000000000000000000000000000000000000000..e4c2cfd83f1f57aa688094fa7f8b200b8a9aa9a0 GIT binary patch literal 1376 zcmeAS@N?(olHy`uVBq!ia0y~yVA#vRz+lC}%)r2KY0ruz1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biUVxNCL7Uf)9yI>s+F8m}zgeZQ?=i!? z!(ALrPj@uiJx^cnGCgMZ<;QQ9pF4g`xH?wZu{c@xwAK1+8|Uy!rWF4W_&lfJ!u`z) zmj2xJqV8JNE&25CJO7B!m9pBk{0g6nopLA&GJ0m@VQR+ZrlbRP zYcEXvd~TPbc#n%9Fismm64i@7+4rk?By*ABFd_ zMdv-I&)+iXaYksgoKX4ILJ6j48#C{e_@+g@Sol@f<=&19Y&Fa8p5&UpI4tFKex|BW zP5u7${Jr0<1o!XAIB&wS)~9KviP(V#CANr$bp87#4*YKn^0^*9ICWF$j^1M4CeEri zlO0;CjQ6YaRZCqsJX7)ag_NVU^DArSU$?6&J9Mr5lgjtE=^gvdpNjvY|Eu2R|B~cI gHw_oR7XL5HU}`aQv7x=O9w;q)y85}Sb4q9e0DQC!tpET3 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/erf1.svg b/doc/sf_and_dist/equations/erf1.svg new file mode 100644 index 000000000..333bc0237 --- /dev/null +++ b/doc/sf_and_dist/equations/erf1.svg @@ -0,0 +1,2 @@ + +erf(z)=2π∫0ze−t2dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/erf2.mml b/doc/sf_and_dist/equations/erf2.mml new file mode 100644 index 000000000..8b81fe4e9 --- /dev/null +++ b/doc/sf_and_dist/equations/erf2.mml @@ -0,0 +1,22 @@ + + + erfc + + + z + + + + = + + 1 + + erf + + + z + + + + + diff --git a/doc/sf_and_dist/equations/erf2.png b/doc/sf_and_dist/equations/erf2.png new file mode 100644 index 0000000000000000000000000000000000000000..d12aae79d01abc7768c713f39794bc19f3463742 GIT binary patch literal 1152 zcmeAS@N?(olHy`uVBq!ia0y~yU|7k(z#z!M%)r1faZ(K{0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@xt+|Nji5U^E0qWC-kS-0*;bfq|(c$S?Rm!_(~s zUJMKjcRXDjLn>}vnf8#cS%IhJJF$eVZJvoumb-Q7$n#a-T;#ORJY81RQy<_HP;>Uey_eHZuajzFV|~3- zRdkB-LMzeeWwIOZO!~^cedqiqdWTv4?c(3*=I{zztoi%((v^QvjXU;yDSqDDcsyp_ zi2&OjvtRCX*S7yEzL2rplmFu8--r87XMS70o{=HbAw|RG>B={t==OB=b6Mw<&;$TR Cd7J|P literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/erf2.svg b/doc/sf_and_dist/equations/erf2.svg new file mode 100644 index 000000000..79c294739 --- /dev/null +++ b/doc/sf_and_dist/equations/erf2.svg @@ -0,0 +1,2 @@ + +erfc(z)=1−erf(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/error1.mml b/doc/sf_and_dist/equations/error1.mml new file mode 100644 index 000000000..b54245007 --- /dev/null +++ b/doc/sf_and_dist/equations/error1.mml @@ -0,0 +1,31 @@ + + + max + + + | + + + a + + v + + a + + | + , + | + + + a + + v + + v + + | + + + + + diff --git a/doc/sf_and_dist/equations/error1.png b/doc/sf_and_dist/equations/error1.png new file mode 100644 index 0000000000000000000000000000000000000000..899c24b7faf41786fb85b2a2afcc7748a89e11f6 GIT binary patch literal 1265 zcmeAS@N?(olHy`uVBq!ia0y~yV3^Cmz@W^*%)r2~)8fZN1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biUjdt%C5?V0s0mMn8Pwj7aV`0ftQjYUcbgS;eLGT`5hAL`mQrQr9(nuGX7+H_Mb@fL95F|gLr!Y$*t}&+mb;T0 zqw+ewp1V&L6gCK|@A=v2b?o`~2~7EUZ857c7I8QAvI!aK1?{wWv z*)FZ-kTi!zncjmr2anz|Nr-&ImTK9S!0~3G#nQzFJ5T)nGGTMl{@|lG|5xrSwA9en z>c8*z=how6sWxp>HdI(G`@e4f)!(e%-(t4pA5nPw#Lqi?>C&#lv+G)N`!i0e@0hw< z_>R@ivZ~h^MZdeBt<_H7ee2JMSuw{?9=en{vyZoL-kRl?KOMVbv{kmAjUjVopW_~x R)sCRV<>~6@vd$@?2>|h&&R_rl literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/error1.svg b/doc/sf_and_dist/equations/error1.svg new file mode 100644 index 000000000..8aea178b5 --- /dev/null +++ b/doc/sf_and_dist/equations/error1.svg @@ -0,0 +1,2 @@ + +max(|a−va|,|a−vv|) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/error2.mml b/doc/sf_and_dist/equations/error2.mml new file mode 100644 index 000000000..9d1345469 --- /dev/null +++ b/doc/sf_and_dist/equations/error2.mml @@ -0,0 +1,15 @@ + + + | + + + a + + v + + a + + | + + + diff --git a/doc/sf_and_dist/equations/error2.png b/doc/sf_and_dist/equations/error2.png new file mode 100644 index 0000000000000000000000000000000000000000..a266de375e7515fabfb96e7cc8b02acd00be9647 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0y~yU@&1|U{K~@W?*1=Q+o3k0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8&+E!z5@yzu7T@*$Cq4g)ZAzj zwQ{i=8{d`540UTn554NR{yVZ+;n{_D>qYB1L=|i1ec7?8OCYjvM~+*H)J2w{-h!=t zFH} +|a−va| \ No newline at end of file diff --git a/doc/sf_and_dist/equations/exponential_dist_ref1.mml b/doc/sf_and_dist/equations/exponential_dist_ref1.mml new file mode 100644 index 000000000..74578c832 --- /dev/null +++ b/doc/sf_and_dist/equations/exponential_dist_ref1.mml @@ -0,0 +1,23 @@ + + + f + + + x + + + + = + + λ + + e + + + λ + x + + + + + diff --git a/doc/sf_and_dist/equations/exponential_dist_ref1.png b/doc/sf_and_dist/equations/exponential_dist_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..160ebec2cb9be203e7819aac096be0d750cb1406 GIT binary patch literal 327 zcmeAS@N?(olHy`uVBq!ia0y~yVCZCEU=ZbCW?*1&jk7(>z`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{Eq4ZIi_7&2u0|CcQ1`)cIyxYfw! zin^#u`{v0DOin*tpTe0Zq&g|{#f)yhZEm7->YN05HJvr%tKRKbs+(4DXFHc!ZMU~| zqPVW8)g=$rO`7u8WnymctFiwO$~F69`YbntP+`7UpU7hW4O7%)Vn5taf3kkcoJE_p zj~AplcV1~em*zRg|LNRh`41a%)+F2sbn5bYp7VEI?wM5os_&D%bKO5j$do%>`+TxO hQTVUzJ{AdvR#&e1E1aj8GcYhPc)I$ztaD0e0suu?e{ui- literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/exponential_dist_ref1.svg b/doc/sf_and_dist/equations/exponential_dist_ref1.svg new file mode 100644 index 000000000..d3f27c76a --- /dev/null +++ b/doc/sf_and_dist/equations/exponential_dist_ref1.svg @@ -0,0 +1,2 @@ + +f(x)=λe−λx \ No newline at end of file diff --git a/doc/sf_and_dist/equations/fisher_pdf.mml b/doc/sf_and_dist/equations/fisher_pdf.mml new file mode 100644 index 000000000..05a9a8a1a --- /dev/null +++ b/doc/sf_and_dist/equations/fisher_pdf.mml @@ -0,0 +1,91 @@ + + + + f + + n + , + m + + + + + x + + + + = + + + + + m + + + m + 2 + + + + + n + + + n + 2 + + + + + x + + + n + 2 + + + 1 + + + + + + + + m + + + n + x + + + + + + + n + + + m + + + 2 + + + + B + + + + n + 2, + + + m + 2 + + + + + + + + diff --git a/doc/sf_and_dist/equations/fisher_pdf.png b/doc/sf_and_dist/equations/fisher_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa762be80724d335c9a4ad758e831096fba4653 GIT binary patch literal 766 zcmeAS@N?(olHy`uVBq!ia0y~yVED_xz~IEe%)r2~x?CZTfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9BI0Jk_T#by3qN1Yy z|NqaxapeF50|RqOkYDis{|whp@j5avFy(l5e1a zxsoB;*Ge`g{Ta&Osh~v*_>@dO^+Az z1?Jzg9R)w0-(Ng2|L)`O$}_kOQ;g&j??0Zs#mVSxl1H&USN`Qssb8HQ?95a+wojdJ zj!LP0p<-*<;^<$pa=%o+aNlP5GF5}Wbasr>eZzU5`HnsDa{ejg_gwVZOZH&BJzo~S zxNXR6ve9L^yr9qb1)Zw%Qhy4py!x^0?zvqv?rncMxoe}1E3>E0;;6bxxv+VQ8r7yf zd|}VVJ?rwsSw;Rj;RhcdnA&NxpDkbc-s1;bC4VU`I~_Mkwj!ow{;_>0o`&+3o=)id zX;ih?u6I|e!Eu@O^VeU@|NU`tn8?1DoL@{{d|F|Wc;tf@zhC_2zX6+%oz+a!e&x67 zp5ot>ZOse$t6%*5>;3-Z>#yCVdli}Ec1#Uak_>wi$n?Q z4-+Mwj2QcOroZA@DM#^}YIi`)Q*p!$po~ zg_oY5btY|s(5Bofvqg@J#lF03DZDy;{}1=(^F`~n{E6B4=gv}hxrOGdsvquHV7aA= zTXrqql-#OZ7v?8c@)sO+m#;h|?wmW-W9OW>i?xdL^A|Rs`JypVFvleirbyWan|U!OJGC8O#@nSz}2{;hu(x}19OB}-7z<>Sj})1W*59r{bA f6`%hloWPJawVr3@f%!cQ3=9mOu6{1-oD!M +fn,m(x)=mm2nn2xn2−1(m+nx)(n+m)2B(n2,m2) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/fraction1.mml b/doc/sf_and_dist/equations/fraction1.mml new file mode 100644 index 000000000..666587cae --- /dev/null +++ b/doc/sf_and_dist/equations/fraction1.mml @@ -0,0 +1,61 @@ + + + + b + 0 + + + + + + a + 1 + + + + b + 1 + + + + + + a + 2 + + + + b + 2 + + + + + + a + 3 + + + + b + 3 + + + + + + a + 4 + + + b + 4 + + + + + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/fraction1.png b/doc/sf_and_dist/equations/fraction1.png new file mode 100644 index 0000000000000000000000000000000000000000..2ecb6810eabc63b2b14a7b3d5cd122476dfcefec GIT binary patch literal 1451 zcmeAS@N?(olHy`uVBq!ia0y~yV3@_gz~ITj%)r3#sr&pA1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biU{~1QXXb6nF5J*UWme0Vzz+4jK7ySP} z!}U|VjtmS;Y@RNTAr-gIL|yD_HsI;5{`=qG?*8GhV;h+`eJ_RGIw zf8Ds7wdLHgv&|E(hTY89$zHqbeuToI1KXDF)8F`Tx4BuKLW&xPS2y!v}@t4WIT(|9s5wtygP8*rBptTRKnK9StcJ?!PKr z*01#}c)2fc>IMFJ=Njg<{F-w1Qo+@NYflm)zxXulT)9r_=N+~k7cR6ctd{$@aHY!$ zyU791FD$veqVz&dd2K4kO65hzgHu)s1f7YwusrYk_0~VLciv%n=d@yX=3c%SPFw$E z<62!+n^OgyMcrC`?}lKTf!G)ovb|hSS&UtX7`it z@9qVj)Cl-*{a_b!)9N+)eQmDFipS2{JB5vY9Xi4ie|hKKlfOK7WL}egUC_UA*~K4EC016R zJ@#C7eet|s!KJr*_PAYaxg&XjW!Hx8ndb|IUVojnZpZ7S-_i`z@)kXtt{g23$`+ok KelF{r5}E+m89ep? literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/fraction1.svg b/doc/sf_and_dist/equations/fraction1.svg new file mode 100644 index 000000000..3de5ddaec --- /dev/null +++ b/doc/sf_and_dist/equations/fraction1.svg @@ -0,0 +1,2 @@ + +b0+a1b1+a2b2+a3b3+a4b4+… \ No newline at end of file diff --git a/doc/sf_and_dist/equations/fraction2.mml b/doc/sf_and_dist/equations/fraction2.mml new file mode 100644 index 000000000..4932943b2 --- /dev/null +++ b/doc/sf_and_dist/equations/fraction2.mml @@ -0,0 +1,56 @@ + + + + + a + 1 + + + + b + 1 + + + + + + a + 2 + + + + b + 2 + + + + + + a + 3 + + + + b + 3 + + + + + + a + 4 + + + b + 4 + + + + + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/fraction2.png b/doc/sf_and_dist/equations/fraction2.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8726c442230785b278651515aa6fe594e316e4 GIT binary patch literal 1397 zcmeAS@N?(olHy`uVBq!ia0y~yV5nkXVDRK%W?*1AntA9d0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e62PEO9k!s7q`{|uvGGz3Oo2qdIG%V%I)}dF^!MrH!sXQ)uf#-JaRi`ZzQee?z`pMFI&-B5s|OIZSPBCnC>vSBkk_V4-y9tZLMp0|1Pi7 zDLMAaTlTjrOw$i1wI5r5tvGvb!Nr(uIxmhtNr-G%qWE2Z>&horXBjNB;l5?4a_XFr zi|QdOtK3B9BL3Xl3lirjZ_<2tA~Ub**DOxY?}mR26N=__p7h@LopJhKX4Yk0>$BP} zH+9YJo*WxJ@78SfmAgz%#y#9JW2>6l{Vq=RP3Mkm+j6$$=8;e5gLZsB&am%`#PMk# zvaRDxCx&g=WAt$SO6k-5vp4Phlpd?0>iXIHi;esi~V^X(WmmI~|N?n$=mhSt)ouqfgJQC`VP1trKHrzPOmBq4@I1TW*;}_mzB& z^DL+Q{Hm}?WPjMNnVGjGR)2M{4)EAKVZLkD-CiE|wUvT%4}VU{m}m8}D{TIJ_YAf& z`Rf`S{N;PDo$r0Y`MY@c{=JjEWe=~<;r&@FYwf!0=yLuzwqLcplcqiU-goLtcJw~? z%Jnzj2G*~d@cMerEXAb-lTSzOpSN-Ux*cNwET7mh%n$6ny~{sE5R||@UHx3vIVCg! E0L%#)Gynhq literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/fraction2.svg b/doc/sf_and_dist/equations/fraction2.svg new file mode 100644 index 000000000..14d63bad8 --- /dev/null +++ b/doc/sf_and_dist/equations/fraction2.svg @@ -0,0 +1,2 @@ + +a1b1+a2b2+a3b3+a4b4+… \ No newline at end of file diff --git a/doc/sf_and_dist/equations/fraction3.mml b/doc/sf_and_dist/equations/fraction3.mml new file mode 100644 index 000000000..cf7169439 --- /dev/null +++ b/doc/sf_and_dist/equations/fraction3.mml @@ -0,0 +1,38 @@ + + + Golden Ratio + + = + + + 1 + + 1 + + + + 1 + + 1 + + + + 1 + + 1 + + + + 1 + + 1 + + + + + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/fraction3.png b/doc/sf_and_dist/equations/fraction3.png new file mode 100644 index 0000000000000000000000000000000000000000..20dcc863a990dd9eae3ec669015be5819f62c526 GIT binary patch literal 1407 zcmeAS@N?(olHy`uVBq!ia0y~yV0g;Fz~I5b%)r24H}#MR0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e7j!ouSJ|Nji5U^E0qWC(1%c@30rm`Z~Dg8wr--EQE; zz`%Ih)5S5Q;?|q!+nbsdc+Ql4`oDkA^Mwi(x-V9mD%KWp_36yM%i`j|_9KyFivHrq zY2o>@42whcs!P93x{$hnXG)_{0NW|Xz)kB7F6^4a;Jxka^doUEH|9L(RV{qJc#E9U zbyJb;^Bva&KKv;7Th8#Bvz>%h#l8)HI8XU>Ur(Kpx00{hyUU^FL5@_!Ee)SV&kp*0 zOkcRRJJ6xyR^^Nb0&Aj$KHO=$Qhe>{s?-|Jr!5ARZ+{z2Zn*g&uxFa{-W%jszK0F2XlS5=z&7Qw=`+>}DGmo&H zJU6o@WP(lmWTlV)#LwjJnY(eCy48)9IUMsMCbOK{#-t$8Xz>+wF>iyzjsAxTxrZj4&dTIaJ)b3T?z#%E5??IaDfP;3=_wN0 zNtLJOT2MKO1VlA6&^7_>lFK!_Pgh z?rNMm=vT5?bMq>5PQE#wSE_ad_4Pe^GP&IC`-eWhZNE;csQWX{{x-vZdE%Pg{If1C zH||fpvT>sR+ok^ZH8#$+i}#Co!nX3Me|miV`vS{j=I`p688jzNUbX5}Lp~_Ad%F6$ JtaD0e0sta|8Sel9 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/fraction3.svg b/doc/sf_and_dist/equations/fraction3.svg new file mode 100644 index 000000000..f048f6f31 --- /dev/null +++ b/doc/sf_and_dist/equations/fraction3.svg @@ -0,0 +1,2 @@ + +Golden Ratio=11+11+11+11+… \ No newline at end of file diff --git a/doc/sf_and_dist/equations/fraction4.mml b/doc/sf_and_dist/equations/fraction4.mml new file mode 100644 index 000000000..eaed0f225 --- /dev/null +++ b/doc/sf_and_dist/equations/fraction4.mml @@ -0,0 +1,62 @@ + + + tan + + + z + + + + = + + + z + + 1 + + + + z + 2 + + + 3 + + + + z + 2 + + + 5 + + + + z + 2 + + + 7 + + + + z + 2 + + + 9 + + + + + + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/fraction4.png b/doc/sf_and_dist/equations/fraction4.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2e7bd24cd11ccc7ecc10b8733563ad7ceda2a9 GIT binary patch literal 1547 zcmeAS@N?(olHy`uVBq!ia0y~yV7SA;z!1y9%)r3#GvmiO1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biU(cs5`D^I!k94MXmY#yis^>{8O=Gh3c?_bgxa==%%qyt9oR zCrktn7{ET~~OCE7x(m)xr$rv%Y#swN3}W?-PzZF)e**;yk%CDc&;MXZ_fA zwjsEE(-Dq!L6V7a%zD!V(@qCJd1`+{VNuw!@PgJjoe9a!&d*-e$ZGGA2l;_>yho!gK4nH`yHB(`Njql}G zN$Y8RPu*(!+^dgFQ&0aGurz6s)phfViquSl_^`F>C;ZyE>+96=`=7oRr|t6nHAC3< zf9VlfpD6qA&7ntkJ?`-joA75&ujIP(`xzN@+2;M8@VxdtDCc>)`njxgN@xNA=sH?3 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/fraction4.svg b/doc/sf_and_dist/equations/fraction4.svg new file mode 100644 index 000000000..6fe9ed318 --- /dev/null +++ b/doc/sf_and_dist/equations/fraction4.svg @@ -0,0 +1,2 @@ + +tan(z)=z1−z23−z25−z27−z29−… \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamm1.mml b/doc/sf_and_dist/equations/gamm1.mml new file mode 100644 index 000000000..d2a6842c7 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm1.mml @@ -0,0 +1,43 @@ + + + tgamma + + + z + + + = + Γ + + + z + + + = + + + + 0 + + + + + t + + z + + 1 + + + + e + + + t + + + d + t + + + diff --git a/doc/sf_and_dist/equations/gamm1.png b/doc/sf_and_dist/equations/gamm1.png new file mode 100644 index 0000000000000000000000000000000000000000..500ae109bf3d8b62b35fa0b684d99bfefc411730 GIT binary patch literal 591 zcmeAS@N?(olHy`uVBq!ia0y~yV0gyBz+lC}%)r1f+2iV61_lO}bVpxD28Q(~%vrl$ zGB7YmmbgZg1m~xflqVLYGB~E>C#5QQ<|d}62BjvZR2H60wP9dj;0*8yaWyhBii(Q* z|NlP&$CU#N3=GUAL4Lvi|1(@a#p}qxz_{1b#WAGf)|*+3lbRKHTq}3}Uub3vaX>Fb%-3}ru0 zdwb>sPx-PVhV2LED47+WnP_m-u>GJ;*0$IS{YR#}G^{jGd)>wPboq{8!<*p(E3e*` zICtkw`>H)F*9-CmPqQp8G07A&&0JP$)zT|db=h2ZvUm4cp~-6bNj~T9CwiHyrDdcE zPqAB|q5SN*(~|!4JVIwf%0(O_P>R z2`vwey|dO-YDVbSlS|W1KcBeMFgicWCv`8wb@uC?t!ihLuFiPl&Uf_vL>V;?IpfZQ zCv>G5H_h+Qxfqr->86_ktIyBgnL29ET#FVP8fJ5385TGGWZP^QxY>tu@~ayxFMEBT zuCqJqc6DP^z_iY9mwoqM>D8b5;Fmn{<}Uh#aLHvjC&{W>xS z*WBN+^>$3B<~5_*g4g#li#4CEV4bu(>Cue7pB6raXA%u&GEDZKQ|auJc3@B2rT<9} yXY^HC7|mpuoNdP5_i_dZS>A3cimc`|V3;A2rX8-@v6_K_fx*+&&t;ucLK6TWWd>mY literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/gamm1.svg b/doc/sf_and_dist/equations/gamm1.svg new file mode 100644 index 000000000..03d152b77 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm1.svg @@ -0,0 +1,2 @@ + +tgamma(z)=Γ(z)=∫0∞tz−1e−tdt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamm2.mml b/doc/sf_and_dist/equations/gamm2.mml new file mode 100644 index 000000000..b57d0dc83 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm2.mml @@ -0,0 +1,130 @@ + + + Γ + + + z + + + = + + + + l + a + + + e + + + l + + + + + + + + + + 0 + + + + + + + l + n + + + a + + + n + + + + + + + + + + 1 + + a + + + + c + 1 + + + + d + 1 + + + + + + c + 2 + + + + d + 2 + + + + + + c + 3 + + + + d + 3 + + + + + + + + + + + + + + + ; + + c + k + + = + + + + a + + + k + + 1 + + + + + d + k + + = + a + + + k + + + l + + + diff --git a/doc/sf_and_dist/equations/gamm2.png b/doc/sf_and_dist/equations/gamm2.png new file mode 100644 index 0000000000000000000000000000000000000000..bec0eff78bcc02edae961059c32caa05b3969f1f GIT binary patch literal 2300 zcmeAS@N?(olHy`uVBq!ia0y~yU{YdWU?}BaW?*1&sjI4EU|`@Z@Q5sCVBk9f!i-b3 z`J@>b7+BIBeH|GXHqJ}*as1A}z@U)q5#-CjP^HSi(9q1l@bfwhlV$$@?_ZrRcSS`j{9wnX*NN9=nQ5K)c7^rI zaybdHP2$rTvPA@UzY;YTICw~ndE)&$-A#f5J2e%LC`lMyVp8hh=ul8rXzFO-XzOX< zxTd3I{=wMxB!^a0BS)E~%ZYS{mN{%L1|ckm9axwJ-)!obaG`-ileZ&b1xH&W2b+>a zM}k5Vlp%ZLf}8Q1j~D*vvnlC0nS4s@;po`m%g@php`xZ@l-3wHal`V7iYf|1pNuP{ zWO&(>B>J8;2&g=%Fc2toU-67DoipusiOIU8n{6zc+h09D9P(06xI2Q${cCN%wH6kY1J5q)SiCbWEi&{SU;e8L zXO|~1ZIBStR*8SeyT0Yw>9UgYN4dvNth#@t%-v~{m8q!U-5!y6`|jgPw=Q3HNXuTS zAuJuzap2pVXLr-@7*y0*{5!A4|K+Q_x=WPO!rCLTo7}!-e%bU`?Ct;RSDyPeC>4Eu zmRNcEq}GZXCW-e~wym(!$lj8>UFOBC(2%uOc{8)OGB@rs(!X1y5ieXeFRP=(-Y#!- z{E9ziJik`-&pZ3#wxo;2b`7D@o8L6PRi4PXx$?dBF{kwU|L+QBn`PRDEF7KEwO4zm&<C6+J7m>OU9(>=pS$(*QE@R1o!^r$ z7GBP(ei5+S&-Cxdl`W3OQ}6v=_P}m=)(MGqsl|`x%{PcF$_l%ceg2=NugAve_DsL- zGN}1V+;&`j&DVAPx*J<;Yb&^xZ}|IsWwd?8QR{$*HKKeAnLW2ID%%-!U*14y*7r44 zOXEJCTfL)y;z3`T--|gme!eru@78uPC3}6%9q(R$f6_0js+^ShcVS1!j{nLpFKrJn zyjb2g_aB#3`L3^f1KTSi-e~oy?R`>I;(TF6Sg1-`edgonInNaXdzBu=@0(!!<5<;_ z+e(j=pM3q!s8VRzbge@6^O_wFPqw#IxPAC)DtGFM&yRj-#U$5{?hoZ|hzbO{-gxEX zEg`R+q5pC%lgHXquT75X$qDWaxinkNEi~_U;W=^E%n;W#z27e@%AZ};v9fh*=d%dT z9$wim7md=T6`zzn%zApJGb*>f!$O{oD}!(S+qY*fKIt=$TV^ggbDpN77Ois-PH!qSFB>vyUh#D+KW|$9ufee0lfqnJ+=&i|*L1TK#)b z%vK}ahOR$aDjVO}7MRAa?AXL8D9G8T)~N9?!|LA@zopr09rrAk^lez literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/gamm2.svg b/doc/sf_and_dist/equations/gamm2.svg new file mode 100644 index 000000000..850780cc6 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm2.svg @@ -0,0 +1,2 @@ + +Γ(z)=(lae−l)(∑0∞lnan−+1a−c1d1+c2d2+c3d3+…);ck=−(a+k−1)∧dk=a+k+l \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamm3.mml b/doc/sf_and_dist/equations/gamm3.mml new file mode 100644 index 000000000..9d5178d50 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm3.mml @@ -0,0 +1,25 @@ + + + Γ + + + z + + + = + + + Γ + + + z + + + 1 + + + + z + + + + diff --git a/doc/sf_and_dist/equations/gamm3.png b/doc/sf_and_dist/equations/gamm3.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f6aa03ee5ebeabc993179dbf409fb465a9de05 GIT binary patch literal 1177 zcmeAS@N?(olHy`uVBq!ia0y~yU?^u`U{K*;W?*1w`5XF>fq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=J)WTKy?5GPb6fXXCi1XvroMRM)hW^ipEE75uS{3I&amN{c){!{ zrqaSstuf+D3QQUG_U`lBesx04m4dy6A$hMWh2=!f{C*)j@j~^qrbd6O2j+oxEQ|LE za8A6!&bY1P$epcGNd@m!9X%>$=x=F?`)_ZoD;~9Wx>V}CL~r3)8@R$RFIakU$K2 b{+49;W!>WWcmA3_P&)8*^>bP0l+XkK!Aqs& literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/gamm3.svg b/doc/sf_and_dist/equations/gamm3.svg new file mode 100644 index 000000000..5946143ba --- /dev/null +++ b/doc/sf_and_dist/equations/gamm3.svg @@ -0,0 +1,2 @@ + +Γ(z)=Γ(z+1)z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamm4.mml b/doc/sf_and_dist/equations/gamm4.mml new file mode 100644 index 000000000..84b529840 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm4.mml @@ -0,0 +1,28 @@ + + + + lim + + z + + 0 + + + + + Γ + + + z + + + + + = + + 1 + z + + + + diff --git a/doc/sf_and_dist/equations/gamm4.png b/doc/sf_and_dist/equations/gamm4.png new file mode 100644 index 0000000000000000000000000000000000000000..fc41241f898d7c4834d09f532073a84feaf7f86a GIT binary patch literal 1174 zcmeAS@N?(olHy`uVBq!ia0y~yV8~`*U{K*;W?*30nQzk0z`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C8JTx6?j~%|Np;OEH0F>Fv=n2;ngDxj(quID8iC*yLI};j#!

FcHYcwOr6a?VcJsvoT5 z#KGm`q#xjOHP~R*ta+O?7N`Wp^7Xr}Xtyv>*GpCQTez%3M>fs=bkrvk%PEHwuiX%O zofdlfecaxnXokyc&usGRo+)#^=7zPuy7(rg8!r8`T7AFV`&@kY@$ +limz→0(Γ(z))=1z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamm5.mml b/doc/sf_and_dist/equations/gamm5.mml new file mode 100644 index 000000000..1d3a8de95 --- /dev/null +++ b/doc/sf_and_dist/equations/gamm5.mml @@ -0,0 +1,33 @@ + + + Γ + + + + z + + + = + + + π + + Γ + + + z + + + sin + + + π + z + + + z + + + + + diff --git a/doc/sf_and_dist/equations/gamm5.png b/doc/sf_and_dist/equations/gamm5.png new file mode 100644 index 0000000000000000000000000000000000000000..ed049b78c1decad0c490d36faf18d224871f399e GIT binary patch literal 1303 zcmeAS@N?(olHy`uVBq!ia0y~yVA#jNz@Wmx%)r3F5MI#5z`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C9%_vDnkaF{I+wl^J)%niY7Oe_P)FKXr4r;^g~{vw8O1;8U8nWtlHS&eQB@sl9J6 zD@^>I?)t;1rPFou`B!(uS5MEYXSsdp z{Bt+mp802y@XEc*EvEZSkxjoRTjM@=bKZ-lul{0h=iWZw{o-d+#TLtRzrP1?{c4d< zJapvY&;H*BFFJ41n6!4`?n4V$Qj8|MK3BOSzVqUbyJ9OD9@U+S*ZUZqw}tnKpV;&( z+wAUV{@-xDwF3H~$Q{ebIT#iGH~|+;)XZD}NqvbbMFn=gyxZbNc1c z5Bm33gugEiPTtucWiX9(=V6mO-TSlbZmp`csjREBWoM9z=qP;pdRrkV33|HvxvX +Γ(−z)=−πΓ(z)sin(Ï€z)z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamma_dist_ref1.mml b/doc/sf_and_dist/equations/gamma_dist_ref1.mml new file mode 100644 index 000000000..f67ba1ffd --- /dev/null +++ b/doc/sf_and_dist/equations/gamma_dist_ref1.mml @@ -0,0 +1,50 @@ + + + f + + + x + ; + k + , + θ + + + + = + + + x + + k + + 1 + + + + + e + + + + x + θ + + + + + + θ + k + + Γ + + + k + + + + + + + diff --git a/doc/sf_and_dist/equations/gamma_dist_ref1.png b/doc/sf_and_dist/equations/gamma_dist_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..0fc7d07e07cb49859a48f4ecae67e18a31d66233 GIT binary patch literal 570 zcmeAS@N?(olHy`uVBq!ia0y~yV7SS^z+l9|%)r3#>~S9}0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8&>j_b%zyrSS8=rU);WG)+eL> zI}WXaUzR(0ojmgF$BZi{*BzGKl*+#T{4zslzMChHr7CTEYiGSGUzPK|@}HulvJ+yS zXMIn8>Dt!Gp2)l@hNF=0cgmA#iv^5|Qx;9!xWR1MOBUD39W#`KcSQ+b&E2p?dD;4x zi|+KT^`2%^xx_xB)To|wuj{{B-r{dJ8}658&UpFuggw(452O4$?UO<`JIr@HwqT;= zlK6>=n@AZ;Ih)dE zH<*|_-`~1M;CuDr`D+wT@op+J>zj1#-HfMBu9hkNd3--J&6at&)^RU9U=SeOKH2rw ziKi<#n}mE#Y){Y4>-H>qoK<=MY4G#6Q_{0{o;tehpve03dydYVSNCI+9Cyu)$w{xa zJh-&FVE*e<;y#fI%99Lxc~Z{_Mcxn$&{^Mhg2OAG^~~+EGZQL5#|o@FVwtFw=FzQl zHY8nL^7K}=v!XkBozl$GP6gII%$WbdFycn~gzdFflE+@%^zGj+I`i4%@=E6U^4jly f-*2*KWMdFm9L!PMeN>i#fq}u()z4*}Q$iB}#lHUW literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/gamma_dist_ref1.svg b/doc/sf_and_dist/equations/gamma_dist_ref1.svg new file mode 100644 index 000000000..8ee2e0a87 --- /dev/null +++ b/doc/sf_and_dist/equations/gamma_dist_ref1.svg @@ -0,0 +1,2 @@ + +f(x;k,θ)=xk−1e−xθθkΓ(k) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamma_dist_ref2.mml b/doc/sf_and_dist/equations/gamma_dist_ref2.mml new file mode 100644 index 000000000..d01a24ea1 --- /dev/null +++ b/doc/sf_and_dist/equations/gamma_dist_ref2.mml @@ -0,0 +1,50 @@ + + + f + + + x + ; + α + , + β + + + + = + + + x + + α + + 1 + + + + + + β + α + + + e + + + β + x + + + + + Γ + + + α + + + + + + + diff --git a/doc/sf_and_dist/equations/gamma_dist_ref2.png b/doc/sf_and_dist/equations/gamma_dist_ref2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e2761b56d0845369aadff62bdc21c807ae3e211 GIT binary patch literal 556 zcmeAS@N?(olHy`uVBq!ia0y~yV0gs9z@Wv!%)r1fv$WiXfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$L7F%Nd_r7}jEth9qW=H? z&%klz00RR9b4ie2@c;h|*H7^}GB7aC@^o_FYwp^cS17z{;CB{Dl8jux=<;%9uT9Duy{`IacRY;SCtJC%)@5at>yeFTMK)cF zRu)xPUKW|!W8n5iY09F%9e&+Tdl?I5!@MTGS`zEhcOzw{Z^v$(ZIPW!wP|HjltN20 zR_x6*EtpraVPa+P8gZMWdk$Xsa<{N-vht~8ZTs0a`X04iD=R3vCw|4fc +f(x;α,β)=xα−1βαe−βxΓ(α) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamma_ratio0.mml b/doc/sf_and_dist/equations/gamma_ratio0.mml new file mode 100644 index 000000000..2a04b16fd --- /dev/null +++ b/doc/sf_and_dist/equations/gamma_ratio0.mml @@ -0,0 +1,28 @@ + + + tgamma_ratio(a,b) + + = + + + + Γ + + + a + + + + + Γ + + + b + + + + + + + + diff --git a/doc/sf_and_dist/equations/gamma_ratio0.png b/doc/sf_and_dist/equations/gamma_ratio0.png new file mode 100644 index 0000000000000000000000000000000000000000..1cddddcd2c569a5e7b90c7447b556c6814d7b4e8 GIT binary patch literal 739 zcmeAS@N?(olHy`uVBq!ia0y~yV7S7-z@W~-#K6GtW7o$Y3=9mM1s;*b3=DinK$vl= zHlH*D0|QICqpu?a!^U}uK91iR7#I|iJ%W507^+km7#f-x7=Hd|U}$*3z!1d2z$hBQ zz+g33Du;Axir_ka3c_H>yrubzMs@k#3ETf04zWy&duWMBJ(?usoMH$^=zeK0@CHYxVt%*Clo z*0csq^iO!GH%V#!1)=i|T<;6@`pdRHSl;CPAzfE5QsigL#*dRa=PJ#=uxO{=UKhKA z^YdzUivuiSpC3l{p8NYftC(*=%v%VC~G>&wEtfb2y0@OB_45 z=I6%KQC_ymrT*)x&+OvQykK3o{LQ{iMMCkXC(N>_x_n~qdt)}$-R7(A+N{6zF=EX- z!{~3i+-kv1)ohz@-P?5AW%lhaH7mK7T@zUo#r#<+gxTV^iT(9Se zS6p85T&6g3ErXu#8KsC-7qabiX6-iO{jzbg^H%LO(d=Jp1GWBVDTu{S^#7o)H`Dg@ z^2vu5e+-)F|D$V`=M&+$ +tgamma_ratio(a,b)=Γ(a)Γ(b) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/gamma_ratio1.mml b/doc/sf_and_dist/equations/gamma_ratio1.mml new file mode 100644 index 000000000..ba8645667 --- /dev/null +++ b/doc/sf_and_dist/equations/gamma_ratio1.mml @@ -0,0 +1,34 @@ + + + tgamma_delta_ratio(a,delta) + + = + + + + Γ + + + a + + + + + Γ + + + a + + + d + e + l + t + a + + + + + + + + diff --git a/doc/sf_and_dist/equations/gamma_ratio1.png b/doc/sf_and_dist/equations/gamma_ratio1.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa81df05d340fcd4feb22e5e8ff5e2eaf631147 GIT binary patch literal 966 zcmeAS@N?(olHy`uVBq!ia0y~yV033-U{L2^VqjnpULkvlfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JEaktaqG?8o0D1;cwD!h{{KJq`9ZDjM9zt-3iEznxqNn# zg18>z%)d70c^Nhc)R{0cbU$3c$-uGk{q7IhD+<2X`k#z@xIFII;scBqHV6KH>X5Yf z0Aq&#zkh%%42MqQ&-9D7XaLTmUYeKy7W^4Oszw0ii8D1F4M0n*r%VOwB`w>_q z8^#=F~2C7toh^zgIuMdp)D(nHBy5 zx?#q)Rh_}D9P3h7drQ9m`;yJxdH<6eoyTU#{cF4SO+aUll*Od0_l*1M`1bFy4)6$1 zZ3>B%VtxHhWuZWCwv+$V&%0WyZLLK`d^@*<7#Y{|GI1T4a-&f$F86=lyTVwoP}qHHoR;I4&6AiDBRsZ+{fkR*)mk9%S74cV z(gUyLsvp+pXS*#>Ud?*ejo)C}k<%K*k5l(-ka_WHeUX`#-}*1D!5W7R4)0vIo&WN? zh1u^pw%ab{{t=n!vx-}`|5HSKc24z@ga24sYnYapKi|J>PuE}Bf`!|69m^26+SR9e zO!@xqRj0#l-JaK~X?tqx@;~~!V{N!aEPfpMvU)$ymNPwXx=U`FtaA|FW^A&3deL!> zAHO;R{4*EIB)Y$RxyUEqU=5qkr|7JD^Iyw1IBUwYubX(kKTp5)YC`SL*a?BfmJ|Qo z&n~@nu<0s;%Jq$ZPpy1XJoBK-=>z3AZ@elMUpS}wzs;|@bssL}^&Xrf%KZLWu_Mo) zmp4-!8`Doue7~ilgwbu)q7#w<5xf!Y`p?9WBOc e4FCT#GiWWEygxznmlp#A1B0ilpUXO@geCxxFuKYB literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/gamma_ratio1.svg b/doc/sf_and_dist/equations/gamma_ratio1.svg new file mode 100644 index 000000000..4139afdcb --- /dev/null +++ b/doc/sf_and_dist/equations/gamma_ratio1.svg @@ -0,0 +1,2 @@ + +tgamma_delta_ratio(a,delta)=Γ(a)Γ(a+delta) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/hazard.mml b/doc/sf_and_dist/equations/hazard.mml new file mode 100644 index 000000000..0b0502cb8 --- /dev/null +++ b/doc/sf_and_dist/equations/hazard.mml @@ -0,0 +1,43 @@ + + + hazard + + + x + + + + = + + h + + + x + + + + = + + + + pdf + + + x + + + + + 1 + + cdf + + + x + + + + + + + diff --git a/doc/sf_and_dist/equations/hazard.png b/doc/sf_and_dist/equations/hazard.png new file mode 100644 index 0000000000000000000000000000000000000000..b65aebd46b1b476e91e0d02d3ab100c8e609c896 GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0y~yU=(LyU{L2^V_;xVy~lHwfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5SAs&Um^whE&{oGxuU% zs{&8k@|)go|LT8>NZ)O!*y7a4B)U&Oa#Qh?ms)=_H@^7#vt}Oy!;V3NvT2h(j0@J2}(T$)pwSeWpUnq+Lt?5PEn6RxK&k*&6DTQ+ogZEGA$G|@h()< zWtws1@s5Se#|1s#Jh&#jR#`1iP@G`~*CVC^4==M<>jWM#Jvec(I5S|6ZQf-q9guaO zIXa$vS^0M1i;Pvp!A@bn&P6pG+3mXe$~yN()8}tK{-0%=6cv^?FUNmj6> zhFbeCOzAI7dp`G`o6qZWWt(jGy1T7regE!li=511@137lF4q3GMp_~LhF7((n_JNR zm?9VEKdyb7`^-Ph*=H(iR4TMG%h_}4$VV2dtoEG0$ ziVHhWPuO~TU-qq*g^QN)>~h;!Z2W0=Uzn+2&$VSYgwGsx-8EsShpUkA%3hO4Q{Vl+ zEP0!C>2b9i!Qze+zm=ZZd1SSj>CW19XIIWGSho3@lINSw6MplHFPDW5#xZ)-> zV+YSJvz&RM@BXA6JUB1m-tn@Eh%3^UOx|>!4Rc>T>&m5~lgG{c7k&P)<#X`d)~`{i z%VP`uR^OM{aCTJ&|I>5UjkaIQK7IRNU737f@9oxYH`q6*e>r?hslhjB!<|nv?-4{Cwkz<#cj(7 k@G|j>-oe4J?}u;#Lr(eDc~7MhL5ZKi)78&qol`;+0OQPtE&u=k literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/hazard.svg b/doc/sf_and_dist/equations/hazard.svg new file mode 100644 index 000000000..80ddee434 --- /dev/null +++ b/doc/sf_and_dist/equations/hazard.svg @@ -0,0 +1,2 @@ + +hazard(x)=h(x)=pdf(x)1−cdf(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/hermite_0.mml b/doc/sf_and_dist/equations/hermite_0.mml new file mode 100644 index 000000000..abc2439e7 --- /dev/null +++ b/doc/sf_and_dist/equations/hermite_0.mml @@ -0,0 +1,67 @@ + + + hermite + + + x + + + + = + + + H + n + + + + x + + + + = + + + + + + 1 + + + n + + + e + + x + 2 + + + + + + d + 2 + + + + d + + x + 2 + + + + + e + + + + x + 2 + + + + + + diff --git a/doc/sf_and_dist/equations/hermite_0.png b/doc/sf_and_dist/equations/hermite_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e379bcdee6dad45f97176269b4f3c48284c961 GIT binary patch literal 666 zcmeAS@N?(olHy`uVBq!ia0y~yV2om5V9?-TW?*3G5ISVVz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E0-(dwFSIa;D-Oo>2c7?N> zv0Ch^$7i9VYBDoVADufT*`im3gX!&ieuWFaCe;36jWXZUXm;VB^xV0s(iwZFm|Zxx zK$Yd-;gpYmBcAR%x1DKi((C$7Np?0D`sOk`*EAEC%V^Jd&cDH7wfb!FF0%_+PZZR} z4l(DRPWN1zYWHXE#X7;=5sh6ZAN`AxewAHu=}zxU+vM`vkTpv}zxkYxzPnoR@Xbr7 zc`FS&Pdl-2)uhfLfQ_kLgX_dav9&ON(zeoNBzh}8Af>!ZSIZ+7jLnYHTfJKmXQ zt}(T5bFNuCq~_fEpCP^JQN)McFZ5FWW^O6t6}kT=XY$^?Yk2$W){5VBuoj8hw4?m7 zKF9l@jjsPsM*cs~(HQo2i&%*L1-=lo3snn!kMav;^iJLOHQIl{-A(LEleb)u;og$> d*tvm`!D?IPW$%4`T?`Bi44$rjF6*2UngAMZG(rFX literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/hermite_0.svg b/doc/sf_and_dist/equations/hermite_0.svg new file mode 100644 index 000000000..64751fb17 --- /dev/null +++ b/doc/sf_and_dist/equations/hermite_0.svg @@ -0,0 +1,2 @@ + +hermite(x)=Hn(x)=(−1)nex2d2dx2e−x2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/hermite_1.mml b/doc/sf_and_dist/equations/hermite_1.mml new file mode 100644 index 000000000..4ef3e8c6a --- /dev/null +++ b/doc/sf_and_dist/equations/hermite_1.mml @@ -0,0 +1,48 @@ + + + + H + + n + + + 1 + + + + + x + + + + = + + 2 + x + + H + n + + + + x + + + + 2 + n + + H + + n + + 1 + + + + + x + + + + + diff --git a/doc/sf_and_dist/equations/hermite_1.png b/doc/sf_and_dist/equations/hermite_1.png new file mode 100644 index 0000000000000000000000000000000000000000..94485319c9cec83d520ceff08a94c6fc82bc87d9 GIT binary patch literal 458 zcmeAS@N?(olHy`uVBq!ia0y~yU=(CvU=ZS9W?*3OUMaPVfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B*aCb)Ty1P@{{R2a z;p;V(fq{XkB*-uLKf}}Q23`ydj5eMwjv*Dd-psIOI&8qRRvMkYi-=3 zXO}5u*?8>DVsre%VdJ$$ywGW);QyWbzgjsT+@!?QlgA?W^oGdH2h|p_f-Zqi=Dpt` zpyL{4yguT|x>bDVdJZgo^B{$Hxt7u6*OPf`S3gt#+>xxr7j#M1CZSC2&B?Z>5x?CX z`vMl_s2Uyp&Tt|o&^^DZQN+UC@__BTw(i;YelLCS*KX1Jegzopr0CXj@NB{r; literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/hermite_1.svg b/doc/sf_and_dist/equations/hermite_1.svg new file mode 100644 index 000000000..64a76f0ba --- /dev/null +++ b/doc/sf_and_dist/equations/hermite_1.svg @@ -0,0 +1,2 @@ + +Hn+1(x)=2xHn(x)−2nHn−1(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/hypot.mml b/doc/sf_and_dist/equations/hypot.mml new file mode 100644 index 000000000..fea0cc06c --- /dev/null +++ b/doc/sf_and_dist/equations/hypot.mml @@ -0,0 +1,29 @@ + + + hypot + + + x + , + y + + + + = + + + + + x + 2 + + + + + y + 2 + + + + + + diff --git a/doc/sf_and_dist/equations/hypot.png b/doc/sf_and_dist/equations/hypot.png new file mode 100644 index 0000000000000000000000000000000000000000..1f46aa80f580c36d0ad3baa9d42480a6e4869631 GIT binary patch literal 426 zcmeAS@N?(olHy`uVBq!ia0y~yU^vOZz#z`S%)r1fO=orn0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxZ2p*{Qv)- z!`Evn0|Nt7NswRge}<>q4ZIi_7-c+N978H@y_wO?cUXbLmH+?$%ii+Af!Z@JEzQ1_ zVtjW_(F3M+CxZ3jCS|XkwI|Q#)07zs`X}c)e$$aydZm6s!i^dG=d(OwznEI~bP@~G zmJ_lbJtu!mdr~C8X1~Lp^BCV1hwcN@tTybMbmv-N>BZc>b#gDyzPedgzBE^3`qH~o zqGEq;=5^b*?eekpAEo+~lG~YbbyVa_TBqeKJt=(ULJza5Sg`-;F6XJCjZ5=vcIiy6 zmG*oT7_J-e#;ll{wzZyk%DxcmE#zOv14k9}s>ey5V~Vs6||e&&yp6(ZC#UMrma_>NI_ jp7DwEl}aB46Bs;R32dG@QNovjfq}u()z4*}Q$iB}fyc7O literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/hypot.svg b/doc/sf_and_dist/equations/hypot.svg new file mode 100644 index 000000000..4c3a8acc8 --- /dev/null +++ b/doc/sf_and_dist/equations/hypot.svg @@ -0,0 +1,2 @@ + +hypot(x,y)=x2+y2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/hypot2.mml b/doc/sf_and_dist/equations/hypot2.mml new file mode 100644 index 000000000..d31f1c5d5 --- /dev/null +++ b/doc/sf_and_dist/equations/hypot2.mml @@ -0,0 +1,34 @@ + + + hypot + + + x + , + y + + + + = + + x + + + 1 + + + + + + + y + x + + + + 2 + + + + + + diff --git a/doc/sf_and_dist/equations/hypot2.png b/doc/sf_and_dist/equations/hypot2.png new file mode 100644 index 0000000000000000000000000000000000000000..46bd544e281de9f5a1d20456aea24e86587a5567 GIT binary patch literal 532 zcmeAS@N?(olHy`uVBq!ia0y~yV0gs9z@Wv!%)r1fv$WiXfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$L7LbCd_r7pY;6Aj|Igv; zHI;#ZfvF_OFZe&h)9nUc3=E8Io-U3d6}R5ZXzV+zz|m%Z@BdQ$X!Gn)k@UM-*VUr+ zroZ~ZQ15W$@8RAb#lMfuQx*8{C~{X>$vo+;fVF!{{2R-_=?*S=N4|)1)vxc{AzFSY zJaH}e5e|K}&l6Wk(+v}+f;$6c{o>QUkb zUtj7;fADitnR33@Xp6Ip<@!0dw=*A8o4!X_=6bd9)$TKUls9%>Pw$Ah{w(>-%>RoS*T}`=w7~?Rm}3 zTQ{DlYp7VNdCFGF?C^>$_2KfJzXke>-f(X$P;Xt+bfc2@p@iXUEy41RBAF)>QU!Lu o@w&A?^~tkY)v;fG3MVi~oL9Cym(9Y-z`(%Z>FVdQ&MBb@0Pg+e;Q#;t literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/hypot2.svg b/doc/sf_and_dist/equations/hypot2.svg new file mode 100644 index 000000000..ccd9499be --- /dev/null +++ b/doc/sf_and_dist/equations/hypot2.svg @@ -0,0 +1,2 @@ + +hypot(x,y)=x1+(yx)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta1.mml b/doc/sf_and_dist/equations/ibeta1.mml new file mode 100644 index 000000000..fc98174dc --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta1.mml @@ -0,0 +1,63 @@ + + + beta + + + a + , + b + , + x + + + + = + + + B + x + + + + a + , + b + + + + = + + + + + 0 + + x + + + t + + a + + 1 + + + + + + 1 + + t + + + + b + + 1 + + + d + t + + + diff --git a/doc/sf_and_dist/equations/ibeta1.png b/doc/sf_and_dist/equations/ibeta1.png new file mode 100644 index 0000000000000000000000000000000000000000..57f9a5d098cae982214c62dc7e62d703effec1f2 GIT binary patch literal 1536 zcmeAS@N?(olHy`uVBq!ia0y~yU~FMvV9?-TW?*1Ad8+mR0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKQiRu6U{|uvGGz3Oo2r#YZ-NnGbz+4jK7ySP} z!}U|VjtmS;(Vi}jAr-gYMBkj$qQKJ=`|rQ{_RkNFs&#h$)-DawL^hsq8~OB^gZwEX(Q#)Q)k zbTu6>dzzTYdns-cX44G~;V=|%d%L0Q#5u8bDy|RbJ1t0Z3ln&Hc3yjm#*FEwZYqX& z=p>0aIl8W4C_ObJR6^xx?3Nkk{D}@MT$4YAJ$2@*;hX6rU>4YQE$eco#N;jg5-kSv z_T^8VSJvkf7F8}1R{1(S=8vSLM91M}Z>3NDGSIMEyp+!>Eh4%}Tz&G+&*`_qpKdR0Ep*CansOm{$M5;tftAaW z4ly=PnA^iSNB(YtLEqGD(H2!@Q^v>?&!=9AVU@`rWuH9V{bt$hdMoC7^*0QcN}DX- zDY=!%www@o|0LkIhgnwkj)n8yTWs!~zy7d?dVG1&tlR|C%=GQ87q?IMvoL)VLcd;ryzTz;T&p>jPc!aW zYkgV&(&Uz|=d-QltP6w7R&Db%maAc5*4py_cUHt_Gl#vtD?(!J)ZXvr|8(nry=}bP z!h_55_p_ZWulS$K6PMI}cg@}h8)t8|`<}seNLQ{yZ(>iM-EJ`*eQA#KiVVyL%?>?x pWVru$_ut10rmk>fQ&QT`$YB13FEn`tXA&r{dAj +beta(a,b,x)=Bx(a,b)=∫0xta−1(1−t)b−1dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta10.mml b/doc/sf_and_dist/equations/ibeta10.mml new file mode 100644 index 000000000..0aa5f5966 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta10.mml @@ -0,0 +1,202 @@ + + + + + + + I + x + + + + a + , + b + + + + + + = + + + + + I + x + + + + a + + + n + , + b + + + + + + x + a + + + + + 1 + + x + + + b + + + + + j + = + 1 + + n + + + + Γ + + + a + + + b + + + j + + 1 + + + + + Γ + + + b + + + Γ + + + a + + + j + + + + + + x + + j + + 1 + + + + + + + + + = + + + + + I + x + + + + a + + + n + , + b + + + + + + + + x + a + + + + + 1 + + x + + + b + + + a + + + + + j + = + 0 + + + n + + 1 + + + + + + + + a + + + b + + + + + j + + + + + + + + + + a + + + 1 + + + + + j + + + + + + + + x + j + + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta10.png b/doc/sf_and_dist/equations/ibeta10.png new file mode 100644 index 0000000000000000000000000000000000000000..f5621c0574e7bc8f5e28c8563445088b7f8ba451 GIT binary patch literal 1837 zcmeAS@N?(olHy`uVBq!ia0y~yV7$b@z%ZGE868U}fi7AzZCsS=07#Mg0d_r7}jEoo<7^0%0 z{{R2K%9-mI$gq+izu^D>|1&sft^C5kz&72}#WAGf)|kvVEMahs8E-p`lo7PlS$zWn=QCM8*^DqD}h z7FOl^HO2xjLzW3$N^t0MSmMvScZEPN%frw40kL9JJ9w1lp4!r6GHsTC?1{IVU8(}D zbQ=%ejP-x|VdaIByA)GIO(w?0em!-rbw-TS>Ispn(-kgl6j(h|&$TMU5OAn3Q|_ctLa|S{4i@yiO{7-CwXNPSv8%6gDk9O zrZ1^xU8$1MI(ZW7W#{M8K|1qfCVmRqy<&yX&zsCA-86ojdS1A`Z~q<5>JHZrtVkgUkHlG6Tvxw#?Mf@i0CrB=nsj zqGqm#`tKEtD;4rjewx0b-fWe%%Pk*~qrDEgA-1Z-E? z*OXeNy$zZZg)}GHX`f(!j);q8~@Dz!WD+?6hoMi2M23-e1a zU*2jHaML-cn``x{Y2iA()2&%2@`-Z4>RY6LfiGl2miDw`r{|hoJL$4&L36?W$89d{ zaT=?-w5J`4N*8`9vE<-BSIL#PRtmg~Sak0|cMv0M$OJj5pu?+T6oTTHX1jC+xOEks zW?p(OH#Vc!gLV0&Yw}lb)_mKr)=@_2uak&8gY)wc-C2FC`Sr7RJer%>uuKW9EvzvY~Zq=OigYUL`$*G@0{ap2zva0jjxg`yZ$a9=tpKp5K=_`+BwpMua|gHPE-Jye_Tv z{p=gtYbsfCp)qq`TtB<*c<|ik=Wc$NiK#XUI=5~9?THBj7hlO+-u}1h&0TXHcJ8Hb zwiYVQm2|gekMf>;e$#zR)8CWMbl5F&`DL-h{r-`uE-wPoZXbXAWlpZW_2eX(pcU&+ zx_DULu1ng<{rRu!%6BV!Ic~+TQ@S);I_SaF9`lU3Todgs%y+F`>cOuRJ6mJX0q*2V zmnE-DcHGLTcFb0|6goNgw42K=fy;Im=X>a9G|V|*)n3?9vQAy;!)&{9o%W8BzY*R` zW|wL0&)*>MGR#$X;ydRlal3M#cb?uKFx%re^WLAor*)R3?e$)=Mev({10%zo6H-4u U#I>k0FfcH9y85}Sb4q9e017-;C;$Ke literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta10.svg b/doc/sf_and_dist/equations/ibeta10.svg new file mode 100644 index 000000000..e644520bc --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta10.svg @@ -0,0 +1,2 @@ + +Ix(a,b)=Ix(a+n,b)+xa(1−x)b∑j=1nΓ(a+b+j−1)Γ(b)Γ(a+j)xj−1=Ix(a+n,b)+xa(1−x)ba∑j=0n−1(a+b)j−(a+1)j−xj \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta11.mml b/doc/sf_and_dist/equations/ibeta11.mml new file mode 100644 index 000000000..c14b6c27c --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta11.mml @@ -0,0 +1,135 @@ + + + + B + x + + + + a + , + b + + + + = + + + + + + + a + + + b + + + + + n + + + + + + + + a + + + n + + + + + + + + B + x + + + + a + + + n + , + b + + + + + + + + x + a + + + + + 1 + + x + + + b + + + a + + + + + j + = + 0 + + + n + + 1 + + + + + + + + a + + + b + + + + + j + + + + + + + + + + a + + + 1 + + + + + j + + + + + + + + x + j + + + + diff --git a/doc/sf_and_dist/equations/ibeta11.png b/doc/sf_and_dist/equations/ibeta11.png new file mode 100644 index 0000000000000000000000000000000000000000..b748844a785c1b73a98dff12a90bbcccbc783fe0 GIT binary patch literal 1465 zcmeAS@N?(olHy`uVBq!ia0y~yVBE{Vz~I2a#K6G7Xl|Flz`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C`FiE5 z=S`N*-Xo>;d*h@T7&>lV^krZu5oXW{O}@W9H#*Wv&VrG_#BoDw9uvcY*$fKjcHH;; z{+!>zobf^VvAyrl6mR*sgo`2I{N;dXdq>CMt^uYP{{)7@pd_UM+NRr%%> z|Nm|_xa%s~7wGb#-t~sQiMwa$95*44Iy7*KRqnn|a!*XyI0_*{A>aS{alS zNBxML|NYLo<&GzJJolQqvb|(a)ZUP_eAlc}p1lA6%9rgfkBL&V#iG-fxf7;5_xn=c z9hF*B+}C!Fi#K7(yv4i%(Nny%`}b}Czj$`B%jVm6yT3MENuLn&ux{xlZX4rY^&j;< zeX;Di`S#1v5Y30ni<>3aB(4>{@oK45&Az~txwrmzANMj}cgov1=u6+*;1;c2>tAoK z7BCk5XS_FLGuMJoaZ`IcU;c@Y;P2nHZ{I)X8~=OCOYCCjOV4{6UO0|;JfB8E9%!)0yVlTcBmCumP z(B8NHwaw~>8#*=mwu>_sJyo}F<(JAV^$py0*iytqaVPUniM^BVY}E^VA|qUMP%!ex zI~6VapPDNdf9&<$eC}oU0=rH(ezv#kwoY8Po|!~Z8;{`qqZVvo%}{;Y7nzp?S*o+TPsV`=);(pFK(VXKDW9BXzF1bMC1d zZx^lfQeV`W@k;H@-17%F8cEHwHE767J9YV>P z_s`^Ks_?@sF@Kd=;jQLEkFH5Kl%8(LYxA2}_ijaFsm?r;OIs|`KHNPk^Z(^FjUDRB zdBUr{%w(C}9bx0``RMzjU7@~vB(I+dVG{G#y&uk9_tvfGu9IJhah~w0x(l`mAA?oD z#((ynw=dv#;wSd*Zp`0HPruz1PzQrB3918Vc+-$%5&?BQhS)>13-+{4N6zh#04 n<1S8ygro8d3=IGOGc!ypv=ED(y3>q-fq}u()z4*}Q$iB}&-KEY literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta11.svg b/doc/sf_and_dist/equations/ibeta11.svg new file mode 100644 index 000000000..958442197 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta11.svg @@ -0,0 +1,2 @@ + +Bx(a,b)=(a+b)n−an−Bx(a+n,b)+xa(1−x)ba∑j=0n−1(a+b)j−(a+1)j−xj \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta12.mml b/doc/sf_and_dist/equations/ibeta12.mml new file mode 100644 index 000000000..a080245a5 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta12.mml @@ -0,0 +1,77 @@ + + + + I + x + + + + a + , + b + + + + = + + + + + i + = + k + + + 1 + + N + + + + N + ! + + + i + ! + + + N + + i + + + ! + + + + x + i + + + y + + + N + + i + + + + + ; + + k + = + a + + 1, + N + = + a + + + b + + 1 + + + diff --git a/doc/sf_and_dist/equations/ibeta12.png b/doc/sf_and_dist/equations/ibeta12.png new file mode 100644 index 0000000000000000000000000000000000000000..e535a3f44d3782499f89b8cff42ed50dec42dcf7 GIT binary patch literal 1425 zcmeAS@N?(olHy`uVBq!ia0y~yV7$h_z+lh8#=yW3tM+mU0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuJ%Dto#(hE&{ob2mHh zwv|BJL#q#3)z_}STlRmqv^is6V5op<*Q40;+$@fBj;OUishRW8wg39-ue=NlPaZaN zGBBJtKAH2`vyT;je*F4ZwfA52{%v)#3<^m{8KV#Vtm|FD#E|IfbmW)ng3}tJ3=R>2 z4mpub3>?}*f?Jsw5?L7%Eac8@^t-b|S~ET~fk9xSQeepR`-}`qVGIl|YZw>=!WbAP zu!c+VdA-~kEIo&zVZ*(yr#r92DBU>iwtVmIp6jVwUQ0UUd$98Bt+Qm^DDL=6%YB8; z>FPdC4TeKqT7mPb7#R{>+cb*R1Sef$b%?mwy5rlII2Lh+#G@Y`Sw+9Pa+sMxAgo02 zYOl=JE-yxbuoBU&=WG%cb}(>g&+1tHy}uCM18UN73R_aC!Bn9n1b?TaoMzh1M~ zZAZNgQ-PyZnyWEWPaCJ!>_MGdDeB@z4m`!{Q1cH+QL!{^_9nX z-h@1#Q0=Qz(mH?Z_FVO!Vk-i3Hiw_PVf7{K`km{3(4N=gus>5tn0}|4qUD{`|@ytJMpZZTorVdh0c@D|^j;Xnb9` zRl04*vGXB?`?uZyl{B+Zo!j!yYmM3k$BX2)I)-TNn0~W+%6iV@9gC*zKELk%=ex(; zC!UZ!E;?Uu+sT}|h0C|qU0ZXcHP`oMv7AxaM+EdhlMggx{qavC~EViy7B>xfZWAV%unTYm=|fv4=i;y>9={Y8$}B2I*&51g;vr z-Sov=wbp%AefG`p?CD!udaJIqA5U-OQ=VhI@MoOr_cC8O%l|W^7g(s7WlrRb$Uot+ z_wNh7w;|cb(@yYDwfI%?;|$JbQsje2uHH?(c{*XYMnYSW)9Z@u{K(A(83a5>4H}zME$~H7Ahu!fG>A!ZdINl;qTU0xWMIp)6d}7wQ z^JhN(H&nXSy_Z2C>`p{TwA`k?wfu=J7nFkzx_~nB#qI^|O1G!*`fj}z87%iD=Mz)I zhORLEz3;D{zhB+|^eIPl{q3T14->M_XNS3>fAtUfl3S`9~}R0|SGntDnm{r-UW|AjPE4 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta12.svg b/doc/sf_and_dist/equations/ibeta12.svg new file mode 100644 index 000000000..a3eb39416 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta12.svg @@ -0,0 +1,2 @@ + +Ix(a,b)=∑i=k+1NN!i!(N−i)!xiy(N−i);k=a−1,N=a+b−1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta2.mml b/doc/sf_and_dist/equations/ibeta2.mml new file mode 100644 index 000000000..bc4124b55 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta2.mml @@ -0,0 +1,49 @@ + + + betac + + + a + , + b + , + x + + + + = + + 1 + + + B + x + + + + a + , + b + + + + = + + + B + + 1 + + x + + + + + b + , + a + + + + + diff --git a/doc/sf_and_dist/equations/ibeta2.png b/doc/sf_and_dist/equations/ibeta2.png new file mode 100644 index 0000000000000000000000000000000000000000..1364fa629deb5d5a0b895dc962630e0dc243e8cb GIT binary patch literal 1346 zcmeAS@N?(olHy`uVBq!ia0y~yU`%CTU=ZYBW?*12n(zCHfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=J*m`}jxU*6yLW3|N`1Wl=K1QCqFWED8H(ukUU_l&(9^id4{z{3xbr4zBIA_B<_De` zi0EDw-D2DDO60e19>cja{Bmp6BzBldf9XhGd+PV+Dv39eYjs=o?E-lg1_=iSyY0eEZE6Yf8BIIP#~J znVl%RxzP7JTTX}b)u6L_Te;@wa=PUgv!t%=5lViOm$u2uGXP3&o% z&u$kT=ZLG{=$W=n@Wz!>g-)Byu1chLPMj+BJYr+rf)M_+_S`=Psph=_r?~^ZHTWiI zM1`6N?&4(UE1G_{+R47|-r6Odh8sB7o~c+AZNu~L*e`iCZ8LqNNa^j{ZVHtvHheqy yaj!>Svu*08+FvCd?f2v7>u<4VU|{(FpP8XG^%ak)dgFOeYV~yWb6Mw<&;$T3SL!nW literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta2.svg b/doc/sf_and_dist/equations/ibeta2.svg new file mode 100644 index 000000000..f7c3fbb75 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta2.svg @@ -0,0 +1,2 @@ + +betac(a,b,x)=1−Bx(a,b)=B1−x(b,a) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta3.mml b/doc/sf_and_dist/equations/ibeta3.mml new file mode 100644 index 000000000..dc7519b5c --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta3.mml @@ -0,0 +1,76 @@ + + + ibeta + + + a + , + b + , + x + + + + = + + + I + x + + + + a + , + b + + + + = + + + 1 + + beta + + + a + , + b + + + + + + + + 0 + + x + + + t + + a + + 1 + + + + + + 1 + + t + + + + b + + 1 + + + d + t + + + diff --git a/doc/sf_and_dist/equations/ibeta3.png b/doc/sf_and_dist/equations/ibeta3.png new file mode 100644 index 0000000000000000000000000000000000000000..5f92a921f2c8d5352fe07b93641e1210d6104656 GIT binary patch literal 1668 zcmeAS@N?(olHy`uVBq!ia0y~yU_8OVz@Wjw%)r3l>oe;e0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKQiRu6U{|uvGGz3Oo2r#YZ-NnGbz+4jK7ySP} z!}U|VjtmS;_dQ)4Ln>~)iMqM1S%GIs@t^WG;eC2y87Y5<=iTh6i=#rVP5>0 z)44E2p|rzMDmi0?gI|a5)tCzsAMA?txFYO(q@vQzc(mSfBy;et^)HBbvi+oaM38IA zq$fWhqKiK<+S^}{xRJkT-yy4AGNC!9$744I zollrFMMI{@{lX+2ftR0}t@kR*Oo%ZR$Yx>xwtZgcdBzC8hQxQ47b{L=PMVd!W;I{T za`QXW*WTAO26id|^uWqsBF+cc$=cJE--#Tlmzlo|HRM9a%cE+0s%YM!oibAw@w zK`~3JNNw**E{>!F!4H^z@BN)rxtBvJlZRI`@4_~b+E){Aah_Y9rg(n+z6iMsQ|6@Y zkvd`Mdveht=f*#UuJQM$l%$%8oLJfPHnE2LnNOKSd~Zx~a8U6RmiCIXIRd$cRo_3| zR_}6a$gmLnTye<#|BWc2)Wf!_P9@Xw`*w6CpNhY1vFq5@swefyc7+M~<(#aa6d&g^ YY}}a?u=9981Sr3Iy85}Sb4q9e06#v5M*si- literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta3.svg b/doc/sf_and_dist/equations/ibeta3.svg new file mode 100644 index 000000000..f23c66b39 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta3.svg @@ -0,0 +1,2 @@ + +ibeta(a,b,x)=Ix(a,b)=1beta(a,b)∫0xta−1(1−t)b−1dt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta4.mml b/doc/sf_and_dist/equations/ibeta4.mml new file mode 100644 index 000000000..0c21c5d3c --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta4.mml @@ -0,0 +1,49 @@ + + + ibetac + + + a + , + b + , + x + + + + = + + 1 + + + I + x + + + + a + , + b + + + + = + + + I + + 1 + + x + + + + + b + , + a + + + + + diff --git a/doc/sf_and_dist/equations/ibeta4.png b/doc/sf_and_dist/equations/ibeta4.png new file mode 100644 index 0000000000000000000000000000000000000000..64ba5c2ca9f73a5d2f1d9d60f324b9cecd03063e GIT binary patch literal 1343 zcmeAS@N?(olHy`uVBq!ia0y~yU`$|OU=ZYBW?*2rvaM|$0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKQiRu6U{|uvGGz3Oo2r#YZ-NnGbz+4jK7ySP} z!}U|VjtmTpvpiiKLn>~)nQ>dFS%Jspao_*{C$r@p-aS-Gh)-FzHhH3Lq{0$gh4|Yy z?dtCv&QN;uD*lb@x9_qUzdrYft~Byho}hcg?ZXaxtG`DNm@zz0TCK~yWx)mpMNzF= z7dhl+dA|7`etb43|K6z36_M@Br*4dW@%2QQ(OK@fj`~u&GmY4M?;WT;-tX#YrS;fW zn~6*1{qm(ND*1~v4sQ``)L?xd(DUi#Ru07@`yS}ujkVV+UTMI`5gpwBHG5X*vRaOn z0X;>(Y6@qc6HuI=rqrr^bmKLLV~3wLNnSa`b1=(bW*xtlC51munlYa|;Uir!L z&<)F(i{|+6SRWSt=&eX#Q$T(>q`{M#t#_|%6x zyCYzyipWBl#D@YQg6ldGe(*MN9bB&Ve}VOdw_m4R4iTGas~__-pk>j#_3cF*S4>_T zl}PPz-ME*}W?s$<;X|5r-sdwv)-QnC-&%0(*)7K%BPxtB|Po< xar)O +ibetac(a,b,x)=1−Ix(a,b)=I1−x(b,a) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta5.mml b/doc/sf_and_dist/equations/ibeta5.mml new file mode 100644 index 000000000..4845bd785 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta5.mml @@ -0,0 +1,185 @@ + + + + + + + I + x + + + + a + , + b + + + + = + + + + + x + a + + + y + b + + + + a + B + + + a + , + b + + + + + + + + 1 + + 1 + + + + + d + 1 + + + 1 + + + + + d + 2 + + + 1 + + + + + + + + + + + + + + + + + + + d + + 2 + m + + + 1 + + + = + + + + + + a + + + m + + + + + a + + + b + + + m + + + x + + + + + a + + + 2 + m + + + + + a + + + 2 + m + + + 1 + + + + + + + + + + + + d + + 2 + m + + + = + + + m + + + b + + m + + + x + + + + + a + + + 2 + m + + 1 + + + + + a + + + 2 + m + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta5.png b/doc/sf_and_dist/equations/ibeta5.png new file mode 100644 index 0000000000000000000000000000000000000000..faa692c36d4e2d31e8bd1b21aec490ec1b1c2786 GIT binary patch literal 1676 zcmeAS@N?(olHy`uVBq!ia0y~yU}R-rU^v3T%)r2~u=@xb0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8&@Kmb+;9G+J094Z=bj8vf7;- zp2mV=v)mw7y&BVF5Wl_sZG*7h6|sX1M*wSChl7J;Cv>N+&|N<8D0#kn|6PKQ<0v-X4BNp+fRZE zvYWQNthgM|6XEW#WyRs_v?K%8y1@24=M*+BqtF*tYH5oaUSD@yu=&o61K)3UJEa`? zIQ!0qje0E1N}pan{2#orYE_Mp^0uSO3kAx}-4pu-8?*QQ3N-Lww>Og${P4T$g4LsW zXTL4|aQSKXA#;wR=o8*Iug}tKt?THtwb&4UuZ=13heW&V+y|~ALdA+znrcP&G+g%G zDdt^teaZ`atIgNMjQ0Qgc&n(Org1sL?>S61tL=DOtM7G&D8AmXSj=hJtJfkj>t&8D zIFoq4)hRo~RlZPfF5Z7OJ+B=haA<_Vc^Can5pA;MWvzxF(C z+qFO>Zjpn(Fn4f=d)d~vmM>*Y)&xEHvn*NT!MA|(OBwRp6LYz~N*rL->^r%|ku(IgeeW!rx@Z?YMW& zKKb|L+8tRo1s2;gm+V)V7q{E|@zd(~*I5h7mE-m?@7QExW$x%-t_hCTCTIx(<{U~B zQLqthnyYytzOA!XbIKkD!RlZQTk)MXtqJvSt?u%Be)JJK;k4_)`}LO5{Y{T%s!V7t zIk>ER=_P%C&$mx(C8R$0a(D+k=z8ybaM}G3cCd0IkwbsCUhxx-wVBMaNsiTDoFVXI zjF3k@*I&Qwi-K?J?J_ug`pog_3mXm__Qd<l5FzGMEn+j}IFtV%yH+`dE2KKxEWoi|cyswG-i`Sjbg?zs_CQ!Uc^ z$%o&2pCXrPQt-#Ofg)PQwne)X1ZH>T_b&;U_)>A<1i{%|`TR=)Ccji%0A}|u4w(M( z;7(tojg41!{%I9^bYYoh@bgm~Eek!J)6Pv5>~!i*d+~DJ`Op3hj0`I*+Rh&|_~OjK Pz`)??>gTe~DWM4fORxl` literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta5.svg b/doc/sf_and_dist/equations/ibeta5.svg new file mode 100644 index 000000000..b1c2f2be8 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta5.svg @@ -0,0 +1,2 @@ + +Ix(a,b)=xaybaB(a,b)(11+d11+d21+…)d2m+1=−(a+m)(a+b+m)x(a+2m)(a+2m+1)d2m=m(b−m)x(a+2m−1)(a+2m) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta6.mml b/doc/sf_and_dist/equations/ibeta6.mml new file mode 100644 index 000000000..d698c028d --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta6.mml @@ -0,0 +1,247 @@ + + + + + + + I + x + + + + a + , + b + + + + = + + + + + x + a + + + y + b + + + + B + + + + a + , + b + + + + + + + + + + α + 1 + + + + β + 1 + + + + + + α + 2 + + + + β + 2 + + + + + + α + 3 + + + + β + 3 + + + + + + + + + + + + + + + + + + α + 1 + + = + 1 + + , + + + α + + m + + + 1 + + + = + + + + + a + + + m + + 1 + + + + + a + + + b + + + m + + 1 + + + m + + + b + + m + + + + x + 2 + + + + + + + a + + + 2 + m + + 1 + + + 2 + + + + + + + + + β + + m + + + 1 + + + = + m + + + + + m + + + b + + m + + + x + + + a + + + 2 + m + + 1 + + + + + + + + + a + + + m + + + + + a + + + + a + + + b + + + x + + + 1 + + + m + + + 2 + + x + + + + + + + a + + + 2 + m + + + 1 + + + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta6.png b/doc/sf_and_dist/equations/ibeta6.png new file mode 100644 index 0000000000000000000000000000000000000000..effcc72b9ee6efe39ebff7d30b6a80358656b1f5 GIT binary patch literal 3263 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 +Ix(a,b)=xaybB(a,b)(α1β1+α2β2+α3β3+…)α1=1,αm+1=(a+m−1)(a+b+m−1)m(b−m)x2(a+2m−1)2βm+1=m+m(b−m)xa+2m−1+(a+m)(a−(a+b)x+1+m(2−x))a+2m+1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta7.mml b/doc/sf_and_dist/equations/ibeta7.mml new file mode 100644 index 000000000..edde64963 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta7.mml @@ -0,0 +1,80 @@ + + + + I + x + + + + a + , + b + + + + = + + + + + x + a + + + + B + + + a + , + b + + + + + + + + n + = + 1 + + + + + + + + + 1 + + b + + + + + n + + + + + + x + n + + + + + + a + + + n + + + n + ! + + + + + diff --git a/doc/sf_and_dist/equations/ibeta7.png b/doc/sf_and_dist/equations/ibeta7.png new file mode 100644 index 0000000000000000000000000000000000000000..44775015b4aa0b4ade79ce1202cd602fd1224c02 GIT binary patch literal 1099 zcmeAS@N?(olHy`uVBq!ia0y~yVB}|DV6f(3Vqjo+b#X=-0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fr0s;r;B4q#jQ7U9VfLY@VH)m^*jD%q=jqbq8Sc6j`!nzzb|k& zq0Y%t6?eUqiGgE-0uw{a55*?^Zx)MeOI*M2v(4>y`Ok81 z=vT&o2ICXQ^H-6ZDYl<<$ADx^t&0 zSn9IBPyPS5_+QV-=Dh0vJDbDJ^jTkus>D}J6Mdp_anEgsE1}_itNj0e4VaR@W7+~y z*6bw32lnZiQ_pN`T~+Zo@b=Ow#1* zPM+NCe){mVj=TuF|9kCXJ?;g2epfZ$eQ(l-t@a02Hh28WLQj0~o0Dn4wQE4Yz?fq}u( L)z4*}Q$iB}?}PbB literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta7.svg b/doc/sf_and_dist/equations/ibeta7.svg new file mode 100644 index 000000000..93f5af7ab --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta7.svg @@ -0,0 +1,2 @@ + +Ix(a,b)=xaB(a,b)∑n=1∞(1−b)n−xn(a+n)n! \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta8.mml b/doc/sf_and_dist/equations/ibeta8.mml new file mode 100644 index 000000000..b2d9ddf37 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta8.mml @@ -0,0 +1,243 @@ + + + + + + + I + x + + + + a + , + b + + + + + + M + + + + n + = + 0 + + + + + p + n + + + J + n + + + + b + , + u + + + + ; + + a + > + b + + + + + M + = + + + H + + + b + , + u + + + Γ + + + a + + + b + + + + + Γ + + + a + + + + T + b + + + + + + + + H + + + c + , + u + + + = + + + + e + + + u + + + + u + c + + + + Γ + + + a + + + + + + + + + T + = + a + + + + + b + + 1 + + 2 + + + + u + = + + T + ln + + + x + + + + + + + + p + 0 + + = + 1 + + + p + n + + = + + + + + b + + 1 + + + + + + + 2 + n + + 1 + + + ! + + + + + + 1 + n + + + + + m + = + 1 + + + n + + 1 + + + + + + m + b + + n + + + + + + 2 + m + + + 1 + + + ! + + + + p + + n + + m + + + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta8.png b/doc/sf_and_dist/equations/ibeta8.png new file mode 100644 index 0000000000000000000000000000000000000000..832c213363df839b333f72688cbc58c80a323a17 GIT binary patch literal 4774 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 +Ix(a,b)≈M∑n=0∞pnJn(b,u);a>bM=H(b,u)Γ(a+b)Γ(a)TbH(c,u)=e−uucΓ(a)T=a+b−12u=−Tln(x)p0=1pn=(b−1)(2n−1)!+1n∑m=1n−1(mb−n)(2m+1)!pn−m \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta9.mml b/doc/sf_and_dist/equations/ibeta9.mml new file mode 100644 index 000000000..43efb4ba0 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta9.mml @@ -0,0 +1,109 @@ + + + + J + n + + + + b + , + u + + + = + + + + + u + + 2 + T + + + + + + 2 + n + + + + + Q + + + b + + + 2 + n + , + u + + + + + H + + + b + + + 2 + n + , + u + + + + + = + + + + + + + ln + x + + 2 + + + + + 2 + n + + + + + Q + + + b + + + 2 + n + , + u + + + + + H + + + b + + + 2 + n + , + u + + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta9.svg b/doc/sf_and_dist/equations/ibeta9.svg new file mode 100644 index 000000000..9ab97fa8c --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta9.svg @@ -0,0 +1,2 @@ + +Jn(b,u)=(u2T)2nQ(b+2n,u)H(b+2n,u)=(−lnx2)2nQ(b+2n,u)H(b+2n,u) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv1.mml b/doc/sf_and_dist/equations/ibeta_inv1.mml new file mode 100644 index 000000000..c21f6d1ea --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv1.mml @@ -0,0 +1,155 @@ + + + + I + + x + + + + 1 + + + + + a + , + b + + + + + + + + + a + p + B + + + a + , + b + + + + + + + 1 + a + + + + + + + + b + + 1 + + + a + + + 1 + + + + + + a + p + B + + + a + , + b + + + + + + + 2 + a + + + + + + + + + + b + + 1 + + + + + + a + 2 + + + + 3 + b + a + + a + + + 5 + b + + 4 + + + + + 2 + + + + a + + + 1 + + + 2 + + + + a + + + 2 + + + + + + + + a + p + B + + + a + , + b + + + + + + + 3 + a + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv1.png b/doc/sf_and_dist/equations/ibeta_inv1.png new file mode 100644 index 0000000000000000000000000000000000000000..62e68e6070d9542149b13d669cdfd1dca5b77254 GIT binary patch literal 1282 zcmeAS@N?(olHy`uVBq!ia0y~yU|Pk%z+k|^%)r3#&T>Tv0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8sGG(UOreq54t+ zN5VJ0TH#l_?^U$S!AaMCJa{e<^F?5v?#s6iR_r_Cv1s9>dkIRV)s3ewUA=uUFqfZg z+jFBIb36a?m7F*I->cnlE8uCdpnGYHwQ0Jc?^n*%D}qdRg!gDoQWliGy75@?q)^?n z&HU}BOdMVK|5@+6-R8=@J5&0Uv(GxkZ}C$m-jKig-aTbV!TdB+^tKGM^Z#l_3HC2Vr z!E~QMX!GA$-K&nS64MI!RJgLFX;;FXFQujc-$$9^DXznfRfE4hpnY}Tvp`!y|^ z7T`WLL$s(Vw3U6a)s9iSE5&vNNl7(iNmM4eTzjl5@V1VzJCF z?$PeRzf%LMVy2$-S*>HzBi6ad**7}2SGc43(gwDbdqpISo_iKeCW?KOBU73stWlE zWCR9PYg}l{;=7YRe^Zv>%H#dp*XDn>=VT1+dVlt0|LYZMvbid=6fVqKQ5Kl6VaF1u zzLr1FgPCueF)!M$R6f0b<&0X#y&_gj7jMcdT*z9wok@2ESALc7s?vDV?70yxQ!}J* zEdAhjPjKUsmx@elGeWI3FLY%caQYw_Z<;A986C-$xa*yh^YTF6DTlP1S))X+@^SHq zik`9*T5|E0_r6!#N=2Awdv3g`quW^|7TS@~C8vI2(TZ;Y2|soP78VDk#sAJv+*Ueu z_L0!ljPptOv#g_jfF2a`v74%g^PpE<^M*Ij zR*76Y@AO4_26#X24fVTNBHDB1MS_gN>Iqi2W|apg++a=M=iOYm zt4on(wc8%Q>@61Y7E>)M?1S39E_*jB?tT1Ix;``{U(f8=pU_1!ib8x__pH~u_eF8R zql-M#W+g21_f(KqU+bRyZgr3N!YI3s`@~i~t?94v*}XS*t>0o^5BIGr9dFH#NZmV8 z#-X(Q)&5;vMIrB#`@_D4es^AJY5Hh-ZC858`yEO(>Z=|Ku9)=iiN>l^%j-M(Ud7sk zUUL_{xmCx)w6*!~H>^e6)017R zV$#o~Pn5ZOU6*g8rK!-WqPcSHS7on?FP+7k;@lpDtY#wI~oiD^(V< y*CchSSgA~?{@uu>zOwFDyQeEZozK9`aQV}ZI}ev`zQVx3z~JfX=d#Wzp$Pz-`bS#; literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv1.svg b/doc/sf_and_dist/equations/ibeta_inv1.svg new file mode 100644 index 000000000..1d5d77e13 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv1.svg @@ -0,0 +1,2 @@ + +Ix−1(a,b)≈(apB(a,b))1a+b−1a+1(apB(a,b))2a+(b−1)(a2+3ba−a+5b−4)2(a+1)2(a+2)(apB(a,b))3a \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv2.mml b/doc/sf_and_dist/equations/ibeta_inv2.mml new file mode 100644 index 000000000..0408ace8b --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv2.mml @@ -0,0 +1,28 @@ + + + + I + x + + + + a + , + a + + + β + + + + + ; + + + β + < + + a + + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv2.png b/doc/sf_and_dist/equations/ibeta_inv2.png new file mode 100644 index 0000000000000000000000000000000000000000..da4b86a6a7c8cf11d00c1ba98ccc562ee4ec049f GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0y~yV7Se|z#z)O#K6Gdz|3=*fq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JEaktaqCUw?RAG0c%)bS|9|=odLzB6f(WHvbew*cXPPue-5-il(({vg^0rlJnoPR&Q-^!?cd)qE8-=2AOmFYG2;+$07l0Ok4 zJ_qhH%xH!hu> z&e1q&=c2G3Yv0_vvs!ljWd1obuIqRIpC~dd@>|D($d_uG_hr5diR|C_YiFvzzu3!) z3XjSSXW4Q-yf^xr@$HqzJR5thzL2kaZdQ}}g5#QxJm>T&*)5;OEUSA3#= literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv2.svg b/doc/sf_and_dist/equations/ibeta_inv2.svg new file mode 100644 index 000000000..c9517d47b --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv2.svg @@ -0,0 +1,2 @@ + +Ix(a,a+β);β<a \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv3.mml b/doc/sf_and_dist/equations/ibeta_inv3.mml new file mode 100644 index 000000000..639a456e2 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv3.mml @@ -0,0 +1,33 @@ + + + + I + x + + + + a + , + b + + + + + ; + + + 0.2 + + + a + + a + + + b + + + + 0.8 + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv3.png b/doc/sf_and_dist/equations/ibeta_inv3.png new file mode 100644 index 0000000000000000000000000000000000000000..30105a9268c1c03ec3c54c52a6b7e1f75ea961ec GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0y~yVEDzrz@Wgv#K6F?Mf;O70|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=UNA5OaWF87Mldi~ zO=n;b&%YieKY@XPNz~KDF{I+wn>n}p4lD4ua6kHAKhw^oOF%qXSdT4j-mSYGO_mnP zPT70D+jH!47E^3!ux7cM+GBXkMt|Fj4TtAAo?T<_S0R3F;@ySo*Vx}$%Ea>SLin|Z zcNcbFV1IYPbxrmA@hoI^>R#x4=f_14 zeeJaG&v#v1lWw21c=qEhyC!s;tZp>Po7Eg6tD`RUGIiVOloEN}4*$caJ2{Q>7K&cX znQZ5#JazV&kB9iJLjSzT{AN@9>)Ec!Qem$z&Fq*LvnGo3`Pu`k?%OWQS2TNRv&(UT zhwqYAQuXoI3Rm;g`blwJH_YPYpJr%V9Kl~KAp7B>YH(TlqWr%36Ynyv`?p8#ZpG&7 z>u0(6-M`iKdxPfb9H%YsZX2+x!~TmoOCsxCzqZ%T?n4?^0?|MdHe8&4K>-tYc;UzUBX z+77|iO<4`y3qeyB2aoH`X7alP1yWrwpUdyp0DjM~+I zvaJrt3hjPdyT6LHr1O1sbUSiTh=GBD!PC{xWt~$(696dRE4csw literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv3.svg b/doc/sf_and_dist/equations/ibeta_inv3.svg new file mode 100644 index 000000000..6b6a8de57 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv3.svg @@ -0,0 +1,2 @@ + +Ix(a,b);0.2≤aa+b≤0.8 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv4.mml b/doc/sf_and_dist/equations/ibeta_inv4.mml new file mode 100644 index 000000000..559368388 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv4.mml @@ -0,0 +1,47 @@ + + + + I + + x + + + + 1 + + + + + a + , + b + + + + + + + + + a + p + B + + + a + , + b + + + + + + + 1 + a + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv4.png b/doc/sf_and_dist/equations/ibeta_inv4.png new file mode 100644 index 0000000000000000000000000000000000000000..8526b06f1f394f55c4748ea1624691927b94e431 GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0y~yV7S4+z#z@R%)r2)*|hN}0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8;5m(4n)pWW%TZ9H2kxB>&Z)xn?y`s zsv5;xIP%&EF2RaJ*Ny zT(&m(npJe`!#kIL9a-u3`eNjqS8M*YAZMi}|Gy`dlRb((w$g z#7yJo#qDdIwyU_kw<)mVUF|=G@7~#UTIy literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv4.svg b/doc/sf_and_dist/equations/ibeta_inv4.svg new file mode 100644 index 000000000..1c1b05494 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv4.svg @@ -0,0 +1,2 @@ + +Ix−1(a,b)≈(apB(a,b))1a \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv5.mml b/doc/sf_and_dist/equations/ibeta_inv5.mml new file mode 100644 index 000000000..2833b1fd2 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv5.mml @@ -0,0 +1,50 @@ + + + p + + = + + 1 + + q + + = + + + I + x + + + + a + , + b + + + + = + + 1 + + + I + y + + + + b + , + a + + + + ; + + y + = + 1 + + x + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv5.png b/doc/sf_and_dist/equations/ibeta_inv5.png new file mode 100644 index 0000000000000000000000000000000000000000..16bd6a17674e178292e21c05f22c760abbf2d29d GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0y~yU_8RWz#z=Q#K6GNSokWNfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JEaktaqCUgMZOjV9&3*O|4-j(=2UEG*zwTp)^cw>w`*pgPDPW;oiY!kW*S-GMux_n6tUCarX8{dTb#JbQ9w`{#^S!J;A*uXzO-a8IB7w z*FDlLZWNx|EAvle`f-V`SqBrBcq($~dZ-nx+A1)Q`CdUmg3O*YJHC5g-aX{+Wzj7; z**;UVDd=NwpAgd;F83Gx5|^BN0*>xpzNlugiWWz%ZdY$w?CDVPbB1SbpF2>yOMdpJ zi5Uk4-?^5SZoL2M9{;fmkvC2AJoc}gw))CDOVKU49Vb^=&Pg^hiHuA&(w)x|?y)rW zx^QQH>H6lv8l%_>2Cc2nmIQLWGr6=$AS*j`{&Q9XXSg(|D%guYD-I#g0OrEJ0D zvj&&9zbW8X_T0X8%cQLbW^ReGkKtojw5$5SiIXA>44i)%7w|EPFf^>VCKu3U&%nU& c|35PWce!?+%KwG}1_lNOPgg&ebxsLQ0Dk--$^ZZW literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv5.svg b/doc/sf_and_dist/equations/ibeta_inv5.svg new file mode 100644 index 000000000..d9c81907a --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv5.svg @@ -0,0 +1,2 @@ + +p=1−q=Ix(a,b)=1−Iy(b,a);y=1−x \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv6.mml b/doc/sf_and_dist/equations/ibeta_inv6.mml new file mode 100644 index 000000000..edc01bf1b --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv6.mml @@ -0,0 +1,53 @@ + + + y + + = + + 1 + + + I + + x + + + + 1 + + + + + a + , + b + + + + + + + + + b + q + B + + + a + , + b + + + + + + + 1 + b + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv6.png b/doc/sf_and_dist/equations/ibeta_inv6.png new file mode 100644 index 0000000000000000000000000000000000000000..7d786e0a926e8b66af5d0f66bec9e060ccacd198 GIT binary patch literal 529 zcmeAS@N?(olHy`uVBq!ia0y~yU^HT2V36ZrW?*2L!I;Fyz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EiQBhI< z|Nm#;xN?Ajfq}Us$S?T+e}?O)cpVuS80$S<978H@y_s>5uUUb|)$-qecl}7SEt4;W z9Z2=|+{W&@NA6a3_RS&|cTbkioU08kVrkP(2t_J+r*!H}eELB|vW7QOw_wv0UiS*6 z-}xyv?n=LlrX)%~uT)!g-OxSgwng?43zH38lD5I_Zf0z0YDbm+MnAZ6VAD34@0vZ{ zGbZoPkxSv@U9;+Rf$-|zuH{yJ3!YU?nCY>#^XZH|Sw)OWf7>U_EfcbAKKq36_j#^O zwao%5AF@{*Q(DZ!R{T(F)8)zbkriQY-YXUv7Rq}mE_nF&dt;8hNe_?Ylo>OfturOe zxn_M|nE1hBU9W<)*O_;n#?siRqUgYV+-G=b!=0V zlD9-Zn{@nR=HB*n>F-8;p_$z?{F%Kpt-X9M{y+6RjOX(%pM7g{`FkoNV{_V-Y>q8v zT>2~i?vF&-wE5p4nIkFbqOfF(JeB@?6b>^!Ymf!8O?f!lE kJijK-{hR+|#RCkwf^NLAiy2QdFfcH9y85}Sb4q9e0O^s~@c;k- literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv6.svg b/doc/sf_and_dist/equations/ibeta_inv6.svg new file mode 100644 index 000000000..10bd3e23d --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv6.svg @@ -0,0 +1,2 @@ + +y=1−Ix−1(a,b)≈(bqB(a,b))1b \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv7.mml b/doc/sf_and_dist/equations/ibeta_inv7.mml new file mode 100644 index 000000000..8a2512bed --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv7.mml @@ -0,0 +1,59 @@ + + + + x + 0 + + + = + + + + x + g + + + 1 + + + + x + g + + + + + + ; + + + x + g + + + = + + + + + a + p + B + + + a + , + b + + + + + + + 1 + a + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv7.png b/doc/sf_and_dist/equations/ibeta_inv7.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5dead8254847b3bb82cd3ff4356be95204cb70 GIT binary patch literal 779 zcmeAS@N?(olHy`uVBq!ia0y~yV2og3U{K>=Vqjq43ltGzU|`@Z@Q5sCVBk9f!i-b3 z`J@>b7+BIBeH|GXHqJ}*as1A}z@U)q5#-CjP^HSi(9q1l@bfMdZFqM(^0=DmiDoVa zQznK5ZVqpr#F#Z%X>+vjIJj&`Vk?#VyZl_;Bt2?gb(YZFA+f=kbd%!w&s<62U3gB-Awb8PZ5o(3)#<@gWNzSS*$7N}pUcWM=* zAfuK+^RJflb9&WFUkUtUb_!U0kU`(eCsw>@vh%!OayN3SMUNSLvwPI>`DgP6&nIQv zo)ZO4ZtlLbeqYc6POeie2h8hoR`xLdFRWhofdBc@lSU#^j`xZd?U{DF&XiaCiSpkZ z_lvq4XRGfIdN|wXaoW^389FBqN1HhXGREJ`Ki=VgVeaB{akA>|=|Rko_+C%4eZePI z`RT=%Cr9Ue6u31(>Oj!H1^m*#XDzadS^Hb!X4r4>EnGaV=U!f%%&9bSwQGg1Ma=e% z?(f3?Nr+y55q)<#+snFYmxC*u`)90KS95pE{1)epyI5xM8Tc+WxV^rB-FdIacFq$< zCBb(u+~4nL%2Z+g{;iU*SoiUzN5AP^U%@ZzwLAMx#-8<-egTbrntP9GF3gb6bDx~` zt2U0cZYjTPMQm2bmZI4@N~D_&&GUQbUZ7lbwT?K`|nV`ww>rgFusO l;)mwge+&!^|Nk>HSkxzGNKE|xlYxPO!PC{xWt~$(69BFoM-%`6 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv7.svg b/doc/sf_and_dist/equations/ibeta_inv7.svg new file mode 100644 index 000000000..c02734af9 --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv7.svg @@ -0,0 +1,2 @@ + +x0=xg1+xg;xg=(apB(a,b))1a \ No newline at end of file diff --git a/doc/sf_and_dist/equations/ibeta_inv8.mml b/doc/sf_and_dist/equations/ibeta_inv8.mml new file mode 100644 index 000000000..77c50d6eb --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv8.mml @@ -0,0 +1,37 @@ + + + y + + = + + + + + 1 + + + p + + b + B + + + a + , + b + + + + + + + + + 1 + b + + + + + + diff --git a/doc/sf_and_dist/equations/ibeta_inv8.png b/doc/sf_and_dist/equations/ibeta_inv8.png new file mode 100644 index 0000000000000000000000000000000000000000..62f4a3b32184714af1567be86506e959e21c4ed1 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0y~yVA#OGz@Wgv#K6E{yE)a1fq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHKzN3utdF9SoBDg#49GXulV{|pQbFBlktI2ag3BN!O0 zrZX^z=UKb>TiFoSwg_o~saJ_Ci zX82j2q2}R3CWe*`e9z|;^R+P83A|zvU}8{YKoEB~8rLlI-LaB|N7Lo)ucvaCO<(IB zI??i3@X`ETTa{B|SRJeS)zZ?QskFp4&9$GyQ{i=-X{ni?)ihykyTCH9K7wWG0{ljXUdq?wu}3&lJIMbf6_t&g~U?5A~M;6ML6OIKT1G)?ahGd7I4?=iLD zQ0La9vZ%)MOIvrX%AX(o_<`;$6&dFhu36KP4~w>@_r?i7^|cULar44&p1nsN>nqMl zk}6J*lU{q#>v~GpnFX3ls!!FXaIUKJ4)|76YBYur( z=B2im+Ex3zs~*2tf6uu;-RrTav%bx%wux6Z-@kO?oaTX$WdZMV_m|(;cIU`+HPbzJ onCdcHWEhY9U}s?X|DTyb*eM|X`Kq&a3=9kmp00i_>zopr07g&VZvX%Q literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/ibeta_inv8.svg b/doc/sf_and_dist/equations/ibeta_inv8.svg new file mode 100644 index 000000000..3c6fd126f --- /dev/null +++ b/doc/sf_and_dist/equations/ibeta_inv8.svg @@ -0,0 +1,2 @@ + +y=(1−pbB(a,b))1b \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma1.mml b/doc/sf_and_dist/equations/igamma1.mml new file mode 100644 index 000000000..14851a4b9 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma1.mml @@ -0,0 +1,51 @@ + + + tgamma + + + a + , + z + + + + = + + Γ + + + a + , + z + + + + = + + + + + z + + + + + t + + a + + 1 + + + + e + + + t + + + d + t + + + diff --git a/doc/sf_and_dist/equations/igamma1.png b/doc/sf_and_dist/equations/igamma1.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4b3f4cca34fcf7ef7e2ec8c598aafd26636912 GIT binary patch literal 1506 zcmeAS@N?(olHy`uVBq!ia0y~yU<_hlV6fz1W?*0l_7DERz`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C(4S|st0!-_9cQG(9FqZ`R1^@rg zaQzgoBLf4It*47)NX4x;F%Qo*D+na_zW;yX?sw*t1xglt&&9nq9rZn4xb(X9!8feS z({9H#UD>4@T<^Nal^%(@&s;T_Z5vmJ8r zH#f#b=}g$Iot~FoGiT-7zqYr_eJ4oxTSvYTJeyOyJboc_(vFprf_096xVW;UH{oa5 zw)1s~Z(hVMs|o)n`}Iq4!c1qg&HwUS-G9vL^zE9te0ho4pG};xcdCx=+R3|Lb+-I5 z+xMm>+f5>WJETfvEKfZcvf)bRE9K^#9h;W0)TKQ9^NDl*ha`rHa!213>|Lhu%*EB^ z!a>EjO;<9s)TYg9*|6olynEZEv^D+lE|DI5hfi)QIZ(B9O~$D^L0iqQxQSIo^i|fF zh1*mAzx7$L^zP>(rVnT`;11~q{ z&P97ShVL-^UMU?cHqESD`1xJNsT0@Q?wOFi-v39>nx)?Shq*5<{%~-iA-6eGS99hm z-=n9kSWRWCLN^8cu+nd{tM<>#EDb%oeZSNUiyq&Pj{P$m%N47ZYj%G-wUP|vW%vX33m7EH-=2Gv$H +tgamma(a,z)=Γ(a,z)=∫z∞ta−1e−tdt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma10.mml b/doc/sf_and_dist/equations/igamma10.mml new file mode 100644 index 000000000..39dda6d30 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma10.mml @@ -0,0 +1,57 @@ + + + γ + + + a + , + x + + + + = + + + x + a + + + + + k + = + 0 + + + + + + + + + + 1 + + + k + + + x + k + + + + + + a + + + k + + + k + ! + + + + + diff --git a/doc/sf_and_dist/equations/igamma10.png b/doc/sf_and_dist/equations/igamma10.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc2d93c6f3bb2150db658f739f432581d267893 GIT binary patch literal 1557 zcmeAS@N?(olHy`uVBq!ia0y~yV7SG=z+lb6%)r2)bvxx80|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKIfq{vM>Hq)#45MH)1V&g0)G)g#f$~vFkY6w; z3pi-4{KCM%l<(={7*cWTP1Mav%?biCng9RySKnnfRJ^0rGSN$JTUKD>yv1)NV-z<3 zn^w7St(2LgpiKSqCbxrq-JdIYFWpE~Qc5a$!s;lPbS$R1VXdsWq4TWt{P{loHZoF1 z%&%|AtiDswR(FZnd7caSpwMqKy-<`eJeM~vhdDp7z z(ovq}jn=Qa{(XLTAY;9v{S-ls4UL_)UO&4+Oc^V^MIIZlY*3e!IlUs_pGL(b(|pz! zmnWp!?a9Z2L*A)mwyZ(`IFaFfMr}0(E;j4dQYF};Xz7(kAUiL

=@<;Ay7Sm3b@cLDu+xF&F zw)oi{Pv_fpuuT7IRI>?fzkmaTp_nTc*>e9hw0+Oq@&hK~`(@c<=v0nFv#*CcIedq0;8B@|_WPdGsZ@{I|^LOkWFaLP!`ARkhKjz*U z7T0gQUg78-cv#MKPnW;#Zxgj^7wsPJ?wa>nJIw#8x$6JUt0(?5>=l2v=f2^SyP(|X M>FVdQ&MBb@03C{1 +γ(a,x)=xa∑k=0∞(−1)kxk(a+k)k! \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma11.mml b/doc/sf_and_dist/equations/igamma11.mml new file mode 100644 index 000000000..d1fb928e6 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma11.mml @@ -0,0 +1,124 @@ + + + + + + Γ + + + a + , + x + + + + = + + + + tgamma1pm1 + + + a + + + + powm1 + + + x + , + a + + + + a + + + + + x + a + + + + + k + = + 1 + + + + + + + + + + 1 + + + k + + + x + k + + + + + + a + + + k + + + k + ! + + + + + + + tgamma1pm1 + + + a + + + = + Γ + + + a + + + 1 + + + + 1 + + + + + powm1 + + + x + , + a + + + = + + x + a + + + 1 + + + + + + diff --git a/doc/sf_and_dist/equations/igamma11.png b/doc/sf_and_dist/equations/igamma11.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5655133b42f4d511dd7837195ffe9e80697973 GIT binary patch literal 1542 zcmeAS@N?(olHy`uVBq!ia0y~yVBF2Xz|hFS%)r2qr}!k8fq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9BcmjMvT#by37#J9$ zqN4u)|G&za>letdk|4j}|Ns9pIB2c>!oa{<;OXKRQgQ3e-0n%M6?od-&i`Kj+_?Cb zYoh>D66^2uwDRi2wNH)1kLEZY>* z-SE4z$)a30*9twI5~r}6_0XI{+$rT7=Le^9?0R|g;8!u3!?*1PY^y^JE4|wKio8DB z+xWV-i*LKxAALUh#f+=V*7mifXN&Qzd|>mBZ~6<_bG0q$tMA@-vHrDadcYlv6Yt{6 zr1r3tRXqPP@#K`~oM*RvmH%))v##AypDdI6r|`(XwSs9!G_2p|DTTBi_OD$1Uh(CT z#e#90{f{n`63%&^ZqEPzQ|(^o8`=k#J9IyJcrdd4Q}v2xN}Du~H){C5isNwGB7XAu zDtDJ(ycZ&7vi!O^bN0^Oxo?EqYP=4wd-OwFQZUowUy;ZJd2_{Q&!avs@39swklpfX zhRusNDRN~EhVAv!PM+oqnt5f)-Q$H0vu=diACt{4dvTZLP19oIzW*s&wQsg@-%#Xl z*_Ku&W@B!B;;osmyL-+?XCaN-n|rd>G);+rvh&n5iJjY>t*z&zE}!f0%V@X7nHqbZ zeu4J-2^JE)_k5i$+A6eEJUVm2Mmm}|ab-t^-LlA!0dBoHkGkGG%DUZ9HR0tP_hqf~ z{=7>`>%11r-KS;QuO?Jo*nXojD`|r9hYNKkj(&$$zu$N+FTi)_ht;d3^sjte)=#e5Y+9Y7A#3@=v#fJv_bMOu%X(=uetv#)<TqjmD?QoU4^{Kya0)G5XC_9j{ZDE(*t;ZUV z875^f=|8_+UG7QoRQ3di;BOHp#TMG%m+SCb=01I{wrfyEr|{n|w`R6)lHR}Sw@}H; zok69sK9htQ><{D}e)7VoZ1%ooFTa1uTNQEis9$gBhR05yV&qQg#XA}(TYVKWZ;dT7 z%&+-3<>y`57jYSyB~#cY-refvF!lQC)P;G495-v_W%sPk)@DAD7prK!Y4L=+%yZ*@ zO5W6+sy^ZFE={?cx<}VldGl?Wed~VflD;?7dP7g-=}y*MaBr>Dsw1zDIhKiRQnu#0 z8F-@ajYf*QqBYmeiL$LAW|_#Q#S>&(-<;@kLa1>ngQy9-mhyZ@>)z+@#P3Z@4%)v} z=EOPoa~D_cTN&=S_i04yyS-->wpngn5&nM8+H-HGC2uhI-aET-?u6L=oHBP;#^naj z-@a?*78&P*yC%iTvG=?Vd7l}qe|1`N%Jn0D$4XY|Z&|s1qxRje=E>I!tvARgm@f<7 zdu!RfIr*R0?Z0Au`#k^KkoQ@^@wt|6WpZVUt*`FBeP#I@iPa|Tvld%lwZ3&FTKBj} zxkYhNU2$w`$@XHC*GG0Zrj!>cU9@=^A$s@i*E0|2z5=mDWY06|>ZG_syb1~fB(H+P z02~~5TY}z4#@JV8=>{wAK7E4mtEHQ){j7zP?rQ99_BKELKIr|lRP*Ov^FwdGz3!7X zJ$YIf!&31muT;+q_bWa(sc(AyIr-Mp*9Kt>se22uy_;n2^}Mn2U3hN&7AB9k>t4mp zQka<4^yb*c-#YOIVM-mhuH4wG(ot2eZT&=i>um2Pg)K9$TkM$<|71^3Yi#Fs<7-nn zZq_QFvr*Ds$G~NnDdR3SoyD?gYUkw7Cv(%D7pz%qlcN5OYk~Ws**5#7S$@xaQNfpy e_*4A=Lxs-Nl??NqJYis9VDNPHb6Mw<&;$VAqwL%O literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma11.svg b/doc/sf_and_dist/equations/igamma11.svg new file mode 100644 index 000000000..bfad5d859 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma11.svg @@ -0,0 +1,2 @@ + +Γ(a,x)=tgamma1pm1(a)−powm1(x,a)a+xa∑k=1∞(−1)kxk(a+k)k!tgamma1pm1(a)=Γ(a+1)−1powm1(x,a)=xa−1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma11b.mml b/doc/sf_and_dist/equations/igamma11b.mml new file mode 100644 index 000000000..369538b9c --- /dev/null +++ b/doc/sf_and_dist/equations/igamma11b.mml @@ -0,0 +1,104 @@ + + + gp1m1 + + + z + + + + = + + + + 1 + + + + + z + + g + + + 0.5 + + + + + + + + [ + + + + + + z + + + g + + 0.5 + + e + + + + z + + + 1 + ] + + + [ + L + + + z + + + + 1 + ] + + + + + + z + + + g + + 0.5 + + e + + + + z + + + + + + [ + + + 1 + + + + + z + + g + + + 0.5 + + + + + + + 1 + ] + + + diff --git a/doc/sf_and_dist/equations/igamma11b.png b/doc/sf_and_dist/equations/igamma11b.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2bf46b165626e02060c8197f1721269f78c03e GIT binary patch literal 2147 zcmeAS@N?(olHy`uVBq!ia0y~yU|P+mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JmTKeu--k%mSP7LBL zm1na%w0+i`%bt)uQ*XxfUrG!a?s=2LpHFSPx-4U6glu>7Eu(1ZHF;+HrB~-x9#~nK zzF6hs**~5)Lic%@C0)36QKa+Fmk;X~Y!kWO>-w(nwE=sKmUG< z=EOJuS1Z;99>1Y<>h-(+0^P*oq>4ihN2J^oSRDSj>GVuma8Wop_>$5RzsEOu*WW7l zKg7bBIjg62j>WDi;TKN?=ZW3**39`-`ZJ5MdBM$Ot-|9LLILOdR&3yq{TME>ePX5Q z#PFkc-|qh- zzHWTs=iV)|;KaXm8?y3^`a`GLwcNXBA7-m_Dfz49ioV`Z)sUqJ`NatN0X_UyS?`WRz$irg7?TPgeu$Bknbw&t3)IG2z=Q!th7u)YH)ITH!kNf~OL` z$G=?_IrY)LfB6>S#xZLZbGv6ezL4`bOXt$Dt2TL)&bsbdwd$y-<7uByo(WBCiq$%2 zo?l(vc}M-|s)@^l0&@k=Z<_9Q_OaScn~kpy-qu=Ev?Z(cYF2mEF|FE}_5MZMSd$Le zezaW6SiAdOu5O;RpITUO#8u0Zq_5vAc}3o*9(kWK>D&7k9LdWU?;&X2E+GD_H;UDr4Z2gT~{3bgIL zdTPf>GyS+LlcqBltor}#SlHYvD>pP%KGTrx;?+GBc2^_slkn-V#T)`TtDQbyNL(hI zS>@BJaY%q6L3QitZK?c+f8Ct#x^k}b{GffFtE2ZxF(@2Z&-Y<&7-OFO#Z7nLU46Au zbZ*en!(4ZE6l*^Ua#+?Sw7e^`U2dt_+~}W2eK%RU^sZCP-nuBx*ld|%4Zv74s>lG0k=CFwquP3K~FVOZ0lyQyEyU%6NL_25R2r8!yir^erDagTlLsI1S8KfxmULxowwR@ zTjc6iY2?MoF3=3SyqQy=Z2$c;-b)T^2U({`+)O{mRuwVj&i+?o+xsd*J(Z64z1lYS zZ|&8Jn!r0&4?^#rnSR?*{oDEADEC!MI(*pA9KXLiDK+qy% zcV7=DY`vhQyhiNk+T=A^YMjfh^K6g#q!x2efBO0N@r|!CCNizgD|{`!dKGI&@H}CD z?L!mK1iv?3vM_N&RK~<-vW|6y(o(BcmmAHTc +gp1m1(z)=1+zg+0.5([(z+g−0.5e)z−1]+[L(z)−1](z+g−0.5e)z)+[1+zg+0.5−1] \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma12.mml b/doc/sf_and_dist/equations/igamma12.mml new file mode 100644 index 000000000..058caaf6d --- /dev/null +++ b/doc/sf_and_dist/equations/igamma12.mml @@ -0,0 +1,81 @@ + + + + + + x + a + + + e + + + x + + + + + Γ + + + a + + + + + + = + + + e + + x + + a + + + + + + + x + + a + + + g + + 0.5 + + + + + a + + + + + + a + + + g + + 0.5 + + e + + + + + 1 + + L + + + a + + + + + + + diff --git a/doc/sf_and_dist/equations/igamma12.png b/doc/sf_and_dist/equations/igamma12.png new file mode 100644 index 0000000000000000000000000000000000000000..d91747dc9f288782b105ef464cdde137b3ef1772 GIT binary patch literal 1646 zcmeAS@N?(olHy`uVBq!ia0y~yU@Tx@V9?=UW?*3O{v&M4z`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C(4S|st0!-_9cQG(9FqZ`R1^@rg zaQzgoBLf4|NlzEYkcwMxqC6)ZR^Un5_2s|%_U98U%&d<%J?N^Pq54$eVwSGQpM$pj zPd|TW$oqZbyt2dAsUH~DwO{sKdecZRru)hIndR$L8=ow<=i8yh@W3V|n(_QES=sk( z+xvHXdXzqAhGXy7C7w?TT3KD)PAz!#>Bz>Yv`DiM&5z-g?*r;Du$&dkGvp3jt`H?5 z*LnEk&x)?k)7q9MTPr_3oP6QooANK78->K=b9ZaR#TovUi@qam`{6|U-Z~jeM9iFz}c4N}<*hIM2n6?hyV49 zNlfzW%s#w!{(mzWaB6f$!49>=&!s?;h^_ zcYnuOJKfy$N4xW8%=A1inej;X(5t(hcXn6DRNmdOX_%RO zzlh*h`zN(JXwP(`KgT@GkLq8``21?E&*xW_ZTA0}8I*t8&M5PGq5;a;p00i_>zopr E0Co16d;kCd literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma12.svg b/doc/sf_and_dist/equations/igamma12.svg new file mode 100644 index 000000000..8b6393414 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma12.svg @@ -0,0 +1,2 @@ + +xae−xΓ(a)=ex−a(xa+g−0.5)aa+g−0.5e1L(a) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma13.mml b/doc/sf_and_dist/equations/igamma13.mml new file mode 100644 index 000000000..4f3b51f14 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma13.mml @@ -0,0 +1,104 @@ + + + + e + + x + + a + + + + + + + x + + a + + + g + + 0.5 + + + + + a + + + = + + + e + + + a + log1pmx + + + + + x + + a + + g + + + 0.5 + + + a + + + g + + 0.5 + + + + + + + + + x + + + 0.5 + + g + + + + + a + + + g + + 0.5 + + + + + + + ; + + log1pmx + + + z + + + = + ln + + + 1 + + + z + + + + z + + + diff --git a/doc/sf_and_dist/equations/igamma13.png b/doc/sf_and_dist/equations/igamma13.png new file mode 100644 index 0000000000000000000000000000000000000000..44045d10d7fd79785d3d56597850ca763164d42d GIT binary patch literal 2086 zcmeAS@N?(olHy`uVBq!ia0y~yU@Bu^V9?`WW?*2LbYe*b0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKQiRu6U{|uvGGz3Oo2r#YZ-NnGbz+4jK7ySP} z!}U|VjtmSejh-%!Ar-gY#M~@8tiYpU{qMj3y>AD_%?~BKVKIEGva)kR;?k)s@7UdD zZ@c(*@rKLGHoU%=@!>%D@6HzsS`OveyfXN<+QiytTe+vE%MHs_jPSR>V10L{8B1i>M}rWlHS#xe zXJ`uDSiRvj58rj(JuHAsug0`I#%$avhF|7M}= zsjiz%2Y4H87EU%<9`Srdnf<(r*RH<(b>20<(=kR(-giycf)t^>0WyC@{=8ng`)TBr z+T6P=N^vFXI`0owT-Y}0&C}3{$Bvgz?A$M1FzME>KDKY?XS|Vrnmt+Ko9uQ@n>b#} z^Xdw)ks;6x7tbTw(W}j#qZWlJ73)->G4f9 zRbb)KA6I+xR@b>?z4AFeLrh+O)8yHk6+Mz}Ke%PK(qm12CeLq?+O2yPmL7=idC7Ap z;b^r*ee|Bdmpqq+C+!m{>v6GK;UfHcf%y^xuIkj^JQ|iCTJk2<%}zOe`@tfYYc|tP zEPEl_?&k4wS`UwgkxA$N>E62-9O9%dzEa*>FUG=sEXFAQ$dj*${U2u(#XqeqQdMO& zJ!_%g^iIa;pmmSsbGLs^CXx&rtXnH5KCk@sBvU=uX89AZQ=C~AA6r;HhPXWXcu?@= zdtcwLzB-jf53WC4rx?^JoT=Q>(oh8?&72BVS7Cc>|C%+-N*6{Da zBkFdy-@JXd$MTz*)ur?qUUMG4pV2Z&@AkUio_d_3B1N2X^Va{{<6bn{3qe zW8(B8O`$V6S;leRKF94$h0gjdq1Dw=>nE`VR_=acaDB3wADwbUnmsu;QLf z_9^4jEB78s^H|97r0P^bynI)I%auo8Hf7or?wS#7%kbaEVrfsi-v#j#k?WM$Uw#N) zG%e`$m9=bT>X$l>SW17KJa5Kh!<1avy>qvoeDtPwM#ReKpCQrWHv}aQsfgs>+I8q$ z*YkftmVE1+BW53Z=jAo=punEV#x0Bd62qUr%Qz6CG~4p~USXrDP3igb`<9$|_1|;l zxx7nl>a1F?rlhRi+?C +ex−a(xa+g−0.5)a=e(alog1pmx(x−a−g+0.5a+g−0.5)+x(0.5−g)a+g−0.5);log1pmx(z)=ln(1+z)−z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma16.mml b/doc/sf_and_dist/equations/igamma16.mml new file mode 100644 index 000000000..3ba06dfd6 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma16.mml @@ -0,0 +1,61 @@ + + + P + + + a + , + x + + + + = + + + 1 + 2 + + erfc + + + + y + + + + + + + e + + + y + + + + + + 2 + π + a + + + + + T + + + a + , + λ + + + + ; + + λ + + 1 + + + diff --git a/doc/sf_and_dist/equations/igamma16.png b/doc/sf_and_dist/equations/igamma16.png new file mode 100644 index 0000000000000000000000000000000000000000..d35a0b4617bec5d0a302771058a820dc5c43df38 GIT binary patch literal 1081 zcmeAS@N?(olHy`uVBq!ia0y~yU~FYzV9?-TV_;wqy!Px20|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMpZ0Wd45_&FW^Q2K zQw1K^=eDWAcmE$>lU#St%qTch$yH=hg0#W2IrCQqIScpH=5jpQ`u?{*14Bdpy%I(S z1_iEz6?^0MzijD4G4vjNaN^C+7e7lZ!{md?f2IXE?I8y;9f0L z`*khGH_gXa9C^R$?TUYShF5fHR!ctHKdDybb1F;2KT-eJuZweSwi-V^m~Xc3ybEyVLd1=3KAq(Rcl?WS#Xk*!@|5?fUG$ zd(14p-SD*ie6F=P$SRpEunX_o+pMilo_n*AP|eJ{pk!IHC3K_QhJ0?yYxS z-}JNZ*)1Lc#|!r5dXvA0&Gh)6_H2EhtK4+uKQfLpLPWCId72E)1*UV(3(TqUS?w}Y z{{746w#N^>`j|3%Z*sWV1FrLNyFcIco?mhMk9aE2BnH1IO@=EeleFs&&$xSIL(Ec! z$D4zVeC^9F?7QmxjHiRCMSx|Q;L~q5;UZh}GoP+wbr2C?d2#1?nDhsesjT-~*m&1y zDsU*Ad9>7V`_=O0Yx$QlyD&0wFx^b7_KIJZwRh*a)9M9^WRBZiG~aJDt<-WeWnf@n@O1TaS?83{1OP{X`)>dM literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma16.svg b/doc/sf_and_dist/equations/igamma16.svg new file mode 100644 index 000000000..7f28d9241 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma16.svg @@ -0,0 +1,2 @@ + +P(a,x)=12erfc(y)−e−y2Ï€aT(a,λ);λ≤1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma17.mml b/doc/sf_and_dist/equations/igamma17.mml new file mode 100644 index 000000000..8309cced3 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma17.mml @@ -0,0 +1,61 @@ + + + Q + + + a + , + x + + + + = + + + 1 + 2 + + erfc + + + + y + + + + + + + + e + + + y + + + + + + 2 + π + a + + + + + T + + + a + , + λ + + + + ; + + λ + > + 1 + + + diff --git a/doc/sf_and_dist/equations/igamma17.png b/doc/sf_and_dist/equations/igamma17.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8541f0ff91511f5605d9c6d3330148e8bd8594 GIT binary patch literal 1095 zcmeAS@N?(olHy`uVBq!ia0y~yU~FPwV9?-TV_;zT%=LFG0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIM-}H2G45_&FW^Q2L z9R;4Ya<`o!@Bd#Y{*tDWTo-=((y;~s2g3jdn{%K4w2CH}u&Z?lY6vt-h{`m|3otPl{asU_ zAk-khpfl&|ceX+o2Dd{pj0YGPcNkS#e`9zd)MT=H<;y!^ekWUI-EX*d+icS7m;CW(|IJyQm3HIDy7R92!KaTX zrk{2$N?e(!BmM6F_XmF-Tl1Lp9Sy#1$9XhEaEEkI_nXH%)3=HJ-|k|&uI=NbiMDt7 zU$FD7zj|QB8;eZ`w*UG6!mRSwn-zBVlFrY2uD>?3GC0ZE|V$L3yrnQcg|*|6JU1G4ZB{{q=u8e}1%8 zYIqaimI(y~cONTG5FQ2fL zKWd`YuJ2{vgbsMwU9~=T=k@Kij2Dw!KcBfP;P!p?a$~(s(LNr%cG=Mlv8@SDYukc8 zUYv2~%LV?j2v+OWpElIxR*H9NcNaUmM9q{_y72!_x#aHcTrR)NSI@m7x>Nt$hg_Ef zZL3OI)<&kEUZSV8;Qfl#HxFOF7rHwnN31qysW@|4zhaKF?@zn0aVE#pY}fF8-NM1Y zK#Xr$<4b4G-E-cb_R9Fc%-p{n0x=XnP16lMkj{Z9SzT?UX#21VRKPN?c!JO zq8M5j1R0pEvvpfuuT-#5maIzXV-Rd;%ZZiBaG$$(&EAjF3M>K+EGIaQPq2QN`9*2_ zO!c;db_OOQD#5JtLuWiamb6!TKcf>vciPH`gZG|oeRO-5df0i(2QQE1f8llDV3-ra zrn^W{@cX4>`3#|dJEk6GFcMs#)vRF<$)ms`$e_ih($ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma17.svg b/doc/sf_and_dist/equations/igamma17.svg new file mode 100644 index 000000000..388cb2161 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma17.svg @@ -0,0 +1,2 @@ + +Q(a,x)=12erfc(y)+e−y2Ï€aT(a,λ);λ>1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma18.mml b/doc/sf_and_dist/equations/igamma18.mml new file mode 100644 index 000000000..929f54f65 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma18.mml @@ -0,0 +1,57 @@ + + + λ + = + + x + a + + + , + + y + = + a + + + λ + + 1 + + ln + λ + + + = + + a + + + ln + + + 1 + + + σ + + + + σ + + + + ; + + σ + = + + + x + + a + + a + + + + diff --git a/doc/sf_and_dist/equations/igamma18.png b/doc/sf_and_dist/equations/igamma18.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab1df38ad4f3a9ea0b4bac6e48d3201e6d51703 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0y~yV0_5Hz@Wgv#=yX!+Ie6#0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMTX?!ShE&{oGuJWi zhysu6Y>nx!{)*eWn-}+Hx@RphY2sAj`#0lz*yV{*2g-gtusHLj#?GFBfnkBIu^Iyd z!-vGcmnTeo<6l3&fA{C}U*BIF=P@xf+%rkLee8AdskQXtzvtdu#NDvy)r;Cpb3NJgsW)zYFJB*~ zyKep_&o4gb%zDdH=dAo6zG3d7|0nqR4#r4vupFMjbm!Ff*QYjq&HAxsZP3*Iz|H1i z=P!OMymsjMQjK5zza(5{%zb}=>CUb1x<~Fk`t^RDVBw`Z$J)R0{aADU{U$>v9=Q)) zLJT|`Z-m^=(fHQ+k-PiD#DfMIGyi^jxnoMMPEKS=Ow>c;<$;&hm>SO7d~)L6sqZE( zmay#V5BgncfBVec>XmkpHs9Z^^pD%OQnJ3JH}afMSVxZS>c8J!?w#VR%hmqv_|izu z&@HZknXHRjeW$#exZ1GjXkFanCH_{D4aRTXuFh~(OmMsD`dDx9ozMP-BSOkW0qS!&%AzUxt45g_^O76ts9q?pITL_ z7@ogd^7PTP)vZ$>EeV~yF`#Sj#dzyoM*mhwZH|!SQQXSycKGh2*E_bbPj3CsvZ$&* zrc;pN{Lu)JXSX=piz@%0+>>!gOZ(E0m1`;2d7)oxkU+pXVN_;z!0 zzm&vzyUH`I^UiysW+=2_8m2+EWGzcV=9hp_8hhRHnPI`7QDps>m8?5buK28NDxzMEeh*k5SRz~FLS?c|{~{SVw +λ=xa,y=a(λ−1−lnλ)=−a(ln(1+σ)−σ);σ=x−aa \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma19.mml b/doc/sf_and_dist/equations/igamma19.mml new file mode 100644 index 000000000..433cfdb87 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma19.mml @@ -0,0 +1,75 @@ + + + T + + + a + , + λ + + + + = + + + + + k + = + 0 + + N + + + + + + + n + = + 0 + + M + + + C + + k + + n + + + z + n + + + + + a + + + k + + + + ; + + z + = + sign + + + λ + + 1 + + + + + 2 + σ + + + + + diff --git a/doc/sf_and_dist/equations/igamma19.png b/doc/sf_and_dist/equations/igamma19.png new file mode 100644 index 0000000000000000000000000000000000000000..1d241c108aa09d742165ed5e12ae64bd6195110d GIT binary patch literal 1547 zcmeAS@N?(olHy`uVBq!ia0y~yVBEpLz+lJ0#=yW38Nzpnfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9>=X$z0hE&{obJsKP zj)6ey!y7MxQzmDte2-VT{z2_}!7UFSjxIJYrS9f^@&-cNcVATr4efU=tf;K7|Ifs5 zAY)G!6T^WH8S=~X=Z6g17npYB%50g; zskG_1h+$mS|7-W%vX~i+EO;btT)+3ba&DaKp(An)2Ob`KWcK$=2oDEy!|EHWRu>y; z&TYIRa#GMmuPTY3fytaDSn!0X!}^Xc2frr`(+pfJ9X_0ydG;#bp%w;)M(1m9R!=j~ zU3*ozgn>im-|1adRe4*th2@&|=i>#d7F9^xC^j@6?x_>Pr=LAG^*kT+t>gWZ|fLrl43i{e#Zx{s&A~o|T@~{8pEh%IBRb z@ZlQk(xuxv`L;xFGpe;cx@`Np`BlBM9@T8?>*&l}`As_VxXk_CR}OZqy8e2ev0r;@ zPH;LBoDUi#MSztnxXaANLe)7zbU(zBC-mDcI~ zOkHu{t>x=$_r0xuUEA6jvsdoL&FY9nKGAa*s7jwoTyN?hXJNIg>6?|@*4!*_kM&2c zir8vMZkN~O-MuYd;n&N`ZDL=RrLLO#*Jr=^@wi#0uO?c}3fjH4QRdggPaFy154^s( zEeoDnY;iNnb#b4X<*f^AIlNYTvn%Bkyx+Iv#`}9)i?-+M?bm!Me$i}dk^Z`0>8Ap| zU7HYhYSWA>W!Vdhcct39$De=5z4HFY4xI{FY(vz?KZ0+UEKX6} z%Nw{&Pr=rwXN6{-#WlC^Kc8Q%vo?LRaC(tj_XFh}jQ8gK|08$sV>P#fEr-XE;>(i` zYpnfs_U;kgcHOtU`hG4SUhluZ|L)Go#akvzh3>z;!s*ZIKkqm1{koQYX3W0)z;k;A zKVSN~?Tvcs<)*0iQ*mEsUp%_@iqYgNMKv7JQ+9kU`hQ->*m_r?$E%i|$M3POU-s&A zWI{GuRa)8Yi4JNSTkfh^p5Cs)mVW(*j;~RN)UrFDW{X*C1R76Qes^?_pY~+;duiLg z+*g^r`26(juG?Xe#p~0pgXXXGl`7l+{O7S(2TjVCc|3S@Yw;14B^Qs@yGZYyeE;bj zvHRY;w;E+W(YR?Iz0Ok1`_8Yd{%NPu*#+vtv!5&~-EF;lVU=*|`MC$L8ddp)Ew?Rt z!w|H&&NS`x#;b;Zw9^anuc}pTznZjJBl`9xjyY@@ruVkI;@|sw<>v<+CsNrvih$PwjH7oT0;MBhD=nmVQ6eV^LCO$tmx{P(h?^&hX)10g{Sv2+>T`u z=u9s-!pp!RvtioYNatnBOk3I%y&Q|b?pk}bSZl>Q8wMu#JL@`5et&*`{k2z`!b}bi z*u=LVntAQJa=zKseSYaI42{x3cep;Uc9|J%?IXm{=bmUWI}aG9l4IQ?1!69xNYL{ zd&~@tyA4}-7#f|w&%9modfm&CnnUalwtc*)bIOn<@85sr`RX+c95M_Hb3eE@FfttI X%IoY}q +T(a,λ)=∑k=0N(∑n=0MCknzn)a−k;z=sign(λ−1)2σ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma1f.mml b/doc/sf_and_dist/equations/igamma1f.mml new file mode 100644 index 000000000..860a586ce --- /dev/null +++ b/doc/sf_and_dist/equations/igamma1f.mml @@ -0,0 +1,57 @@ + + + Q + + + a + , + x + + + + = + + + e + + + x + + + + + + n + = + 0 + + + a + + 1 + + + + + + x + n + + + + n + ! + + + + ; + + a + + + + + + + + + diff --git a/doc/sf_and_dist/equations/igamma1f.png b/doc/sf_and_dist/equations/igamma1f.png new file mode 100644 index 0000000000000000000000000000000000000000..7db0de3ded2ad60caa3b9e6ca2d953c69dd84e7c GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0y~yV3cHFV6fw0VqjpHu;xb<0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|LN)5S5Q;?|oxxBFTY1Y85HX8!-5`aDtS@d^d=jaN(OS=Bnu zP6~F7{4jHwra<6ky9lL2LVveEeJ<>j5TFw%KSx5uyG2#!;!MNnz#DCB*x9k6lzhWJ~cR|+Qw?gX7%-;MxU$k;U&Ia8r);)A7xo}kir$>a)OW6$*9~9sGF-i5c zs?NceGnRfkDv|iImwUO@B@XWx;b|LOmDf`L@0Q35 z{hi>^BDQ(U8ZPg8Um1IyJ4^=*+VA%+eS7W2qOyl2_x`tD_PiYFk@w@iuEoFatu;>D z^5>bqkZ%jV?=1CZ{@Y7$+qqBh)oJeM)amX2xMSHn=Zx(?k~O>y?~88Y?oB?bbGNW7 zm)$B^N6fN!+LT-0AD3KenPGfPi_huytwmFp{`u{_W2KVu^t8adiF{H8pWpXJt?9;jW^}vbF{TavKZU0)I#;^YG@k5Vn%@1!62R&Q#R%;sD zk&4INYvSjci9j{w=w*N7_b}neet(ZNBFMZN8 zUVQ28nmIG8J$x9pCugQKd_VMQ{vyL`5|W{EGXzf`mEE>=uKJ-kH@%5b93PXWS@%s% zT=!CM?&a&1%Qo-R-8{Ru?)$n^qFa?RssF|>#MO8s`!<2QG4hT)#P;%yyn97p`PLJaXvYSNYHdgX@msoim z3@g*wE4gGJuaV)jh89&w;&EwFeYO2UQh-jNut#&hu(D2K=Y}t*W~_ZQM?fdBGsq&B zpKr$2zf7}}I=}7py~t=9aY!h&@rZt6=c`CA$(ebUA5VW>%)KwzSZHRB!;7N7ObiVF c|1&e3E-Bc@xmdKI;Vst07PS(761SM literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma1f.svg b/doc/sf_and_dist/equations/igamma1f.svg new file mode 100644 index 000000000..4516fdaa5 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma1f.svg @@ -0,0 +1,2 @@ + +Q(a,x)=e−x∑n=0a−1xnn!;a∈ℕ+ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma2.mml b/doc/sf_and_dist/equations/igamma2.mml new file mode 100644 index 000000000..03afa3117 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma2.mml @@ -0,0 +1,51 @@ + + + tgamma_lower + + + a + , + z + + + + = + + γ + + + a + , + z + + + + = + + + + + 0 + + z + + + t + + a + + 1 + + + + e + + + t + + + d + t + + + diff --git a/doc/sf_and_dist/equations/igamma2.png b/doc/sf_and_dist/equations/igamma2.png new file mode 100644 index 0000000000000000000000000000000000000000..28ceffc89ad788515b47be1d05d633fc3d764eba GIT binary patch literal 1553 zcmeAS@N?(olHy`uVBq!ia0y~yV60$ZV6fs~W?*3GU9!oYfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JoYoTV109IvTXUBRh)l?CO7!0 zTbz_N;@oqfe(eRz>$4{BxE|P~^l#b(clLNMtsTLZ{}eUvoqbg09~N+6^<0q(Prd8r zEvoOrcLYC}nq|@*bmaT{XRL9PnHLIGxc=c^RuS~zzvmyWKfc?$4(xZ|Y_;9MSf*8T|LID9Rk%Z@y)h>tf@(Z)fyu z+$8zwf1utx&dW#kpZ}QhduI)A`LUU^Lp#s?%DK0$*`BrU+(G*Xt^T=b<(3sb^`uPfi96R!AKVAtZQGYVeC^0P=ywAvKL`D^33-+OoD#LT$3nXl}6@ge~Q znKNl7Ea|dJ&rO&^7C6-Cmv0ohaxLiEEhdY?Rz=7>WdmGKyp8a-ry4dl^`*m{~zpt*2;uIAN7B`Y_ z&wbbuGWlluyy=(jbJh53_r|}G*yh2;_u$?|FL}d!$qlyzr>Dzi#INq3{(aLW^+#W; z+$X>Ls~vondB=B;1Ba^mIrbd*FQ(cUe&l~huILY`R{}qdv+Ow_&bX0Z`D{#R3~QW` z!;~zqR#B#U=JJy0Gveh>D;lSB>^a~q)m^8tVnf`5vQLSh%o+A{h)jDmU2YR7^Le`Z KxvX +tgamma_lower(a,z)=γ(a,z)=∫0zta−1e−tdt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma2f.mml b/doc/sf_and_dist/equations/igamma2f.mml new file mode 100644 index 000000000..ca8da8873 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma2f.mml @@ -0,0 +1,98 @@ + + + Q + + + a + , + x + + + + = + + erfc + + + + x + + + + + + + + e + + + x + + + + + π + x + + + + + + + n + = + 1 + + i + + + + x + n + + + + + 1 + + + 1 + 2 + + + + + + + n + + + 1 + 2 + + + + + + + ; + + a + = + i + + + + 1 + 2 + + + ; + + i + + + + + + + + + diff --git a/doc/sf_and_dist/equations/igamma2f.png b/doc/sf_and_dist/equations/igamma2f.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c466c1fde26ad326c47c07bacbe82073890bd8 GIT binary patch literal 1552 zcmeAS@N?(olHy`uVBq!ia0y~yV6tFfV6f$2Vqjpb7+BIBeH|GXHqJ}*as1A}z@U)q5#-CjP^HSi(9q1l@bf<_^vuza$go8n4JRJ{UcYSF zW!W32qN!O4+BHSRC`4R1_P}JW%u51S77Mj$`GG?gJCh#t+h+11T!pVx)Q`7 zAy6XaY&z4|(zxW={Bgw}?}*m>S|zmUwCbo>aUTyOjJvkAwZRJ3VFXPti~WSP)cvT%(J?|hGS zin_PYp4f5MWa^g$Rr4n-54KsqTBSJi?WSk^m-c^{A7@!~bd#Wb_1qfipvb z|GK>E@DFpB^-I34y1(Jgzw>z^?d9>D*XCGNWLCV(^4{ZeXUnlWAx93?`utdD`pojs zzA3LhUvHlO@#@pNLc!0c-6~6b?Z5xO{J-xnc}sphv|cRb$?-_-)e6e zX`Fi_Gi%12eRn=CntA5o<%%PhR-NAv{xmG)@zRY~^ZK$JcT{&*K6r0ly|B2*_L@=U z#JT!{d->;EJyt!wdfFzfg0HW&=Lj3$b2eMJwmjB_7Kj-Z&d;94r zMz4)oyJjxi?0#`}@!Ym+3)Wb*1|N9X`y|6qfAjm3-8HB4g4gBc-Mq&Vf14%l_-^;U zCtKZD-iGwYnd{i%+t4p-7^0aTW)UmjInvF@AMX(Z?#H(<1g_H&f|u6);#h37{m4C zjosS!yZ(OGa9FwHtiVRq3(uR*Gj#sod1RL|PqC7zvs&i;;#UgKm3D~!+O+%ErHlXc z+PXTmv=*!h5Ua0Hb)TsJH}CA{qBH*_jS@nhamD$+4ZiOc@#DwL8NnsHyINv!gH=psaUG2-j){G+}D|NTmS4>Ze>ft)C-ZtIlP2XgTB$1sS4}(5T zW|cMBU~;44cl-Rw42zw5cWFHn_%5-3XLV*)RAz#%9@k$t91&2#VB`bq4InS{Dmo$zgVI5|M>`|>8~O^4g}v`*JE5;uFbU0%aR=x&@woZriH zSM{~tsoHLnw>b2zBt8ov3dH!+NsK?G!3*C%$OG!`)JjNX&<9Q_kI7y+{0CT zaY0qyd7C%8#J;EqWZkdcq{tH!vbDInzO%ag@w)Hd7H8-9yZbvy79ZNh<^TKOiiY%- zBHP5jua`JZ;xf=$aCgr^$to&gj$*z9Gegufc?JfC d|Nog8R3&TXR=yGIW?*1o@O1TaS?83{1OT{c`OE+S literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma2f.svg b/doc/sf_and_dist/equations/igamma2f.svg new file mode 100644 index 000000000..971e7cb9e --- /dev/null +++ b/doc/sf_and_dist/equations/igamma2f.svg @@ -0,0 +1,2 @@ + +Q(a,x)=erfc(x)+e−xÏ€x∑n=1ixn(1−12)…(n−12);a=i+12;i∈ℕ+ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma3.mml b/doc/sf_and_dist/equations/igamma3.mml new file mode 100644 index 000000000..6824ac5b6 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma3.mml @@ -0,0 +1,85 @@ + + + gamma_q + + + a + , + z + + + + = + + Q + + + a + , + z + + + + = + + + + Γ + + + a + , + z + + + + + Γ + + + a + + + + + + = + + + 1 + + Γ + + + a + + + + + + + + z + + + + + t + + a + + 1 + + + + e + + + t + + + d + t + + + diff --git a/doc/sf_and_dist/equations/igamma3.png b/doc/sf_and_dist/equations/igamma3.png new file mode 100644 index 0000000000000000000000000000000000000000..6a4767283cf2cda32a701faee0f32122c0329a15 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yV0_QOz+lP2%)r2);T~Mcz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E5YY_BX1p9rLpcul0|$(M~}Me1Ca^l$;}J}f7RZzKd?)f{N1=h-u}s7iF+NVPtV>{ zet+M}>k?1SD&(_O)@LTW-4pxuqGOHXt1_?E*6S7XCTtHpJo~I&8l&&af=~Nqnm^Mn zDy%L3Z}wF7`y<{@Wk+K5mp%W-_vv5%p1`x)dzZi6F=fK{j_n~QJD&XgUr??sd2#yp z?2mr;v@6*okG?%*J?VRnxX!0_UuOOPXM0}yiR~ww3u2$%ryun``P#_-Fsnp-SNVIX zHS$4g8XitaE3ubQzx=4~`D}-Mo(9MMethDvGhd2nKX3VR>7EzsO$2nBzV3M&#kJzL z!uIPDbvumj37n4puKL;X&K&bcxqG%xnkW!@Ea83rcL$NLwRhgca2G^*-`ueC_tLoZ zyT@PgKGD8cmMP}FKXs?kQVY%BLds9R_NuTK$W*(T=Db<<#BA2ieu1(=`N_qb^#r@L z75x>K{5rSQ;n!-JuwRTi5xMs>wjI#R_k22CVcPEgw~{RSlZ)+lnr*I3pM3RNd6nO; zJ+HsYu)hELF1hmAy~|JTG?(AcxTyF1dCI~!$BiogneTDCZt%1FrgQ6_XoCWI>Eg2| zpWIoq$1wbXT%)zwX$tA$q-M`-k!?m2tMeT()k!*>S{9-Vr? z)bdS*``%?baz3vw-#S~rr+UVmT5j=umOPclCcD{ciX$|HK3!XIB4k}W--PeJdoD|} zoR@i0E1ZAi>hqvb%M-U{%X6O{FmCT$=x|R<>|kTL!h7k0Zk=ndOk?>bY-i3jac40O z7s|6tc*;Ndd(PsVJAw^+-m~!?mkG;%eKMMt`TpGIJ@X}=_}=6Bls3Wq@D&b)_v)ss vZ;sEq^=-2G>)CsD)=oBG+$qn<#_+-P#=KPyw_h +gamma_q(a,z)=Q(a,z)=Γ(a,z)Γ(a)=1Γ(a)∫z∞ta−1e−tdt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma4.mml b/doc/sf_and_dist/equations/igamma4.mml new file mode 100644 index 000000000..11a32394c --- /dev/null +++ b/doc/sf_and_dist/equations/igamma4.mml @@ -0,0 +1,85 @@ + + + gamma_p + + + a + , + z + + + + = + + P + + + a + , + z + + + + = + + + + γ + + + a + , + z + + + + + Γ + + + a + + + + + + = + + + 1 + + Γ + + + a + + + + + + + + 0 + + z + + + t + + a + + 1 + + + + e + + + t + + + d + t + + + diff --git a/doc/sf_and_dist/equations/igamma4.png b/doc/sf_and_dist/equations/igamma4.png new file mode 100644 index 0000000000000000000000000000000000000000..9689b6059861a3d087bb0e48136f11c637e8e293 GIT binary patch literal 878 zcmeAS@N?(olHy`uVBq!ia0y~yV0_KMz+lC}%)r2~+@f(U0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8cw_&}L@4jYUm0Z9rx5p6!JS^+(0j?>a%t=O2pS*>V5>`Af-vIjWmWXWN#q zsowZ?RZZPn8-JGh;WG`}t0R+nVy*sqXBPbvEJ)AXtoOI5EFtFj3ZM8{wVNWt=UE;5 z`c2g^(z$&8i+)k|H%s5W= zSM2-xNME7%o^tvciS +gamma_p(a,z)=P(a,z)=γ(a,z)Γ(a)=1Γ(a)∫0zta−1e−tdt \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma5.mml b/doc/sf_and_dist/equations/igamma5.mml new file mode 100644 index 000000000..6075fe042 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma5.mml @@ -0,0 +1,26 @@ + + + Q + + + a + , + x + + + + + P + + + a + , + x + + + + = + + 1 + + + diff --git a/doc/sf_and_dist/equations/igamma5.png b/doc/sf_and_dist/equations/igamma5.png new file mode 100644 index 0000000000000000000000000000000000000000..f424c7114b3b32094ef08a557b322e0368d66e33 GIT binary patch literal 1172 zcmeAS@N?(olHy`uVBq!ia0y~yVA#&Uz#z!M%)r2~;_KNs1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biU>!+&&ubwb~T9E9Zk# zXRXJqNB3Rh^uq7izk6^$-fWWW+9?ZW7}zy#d)t3ZxPNH&#fdNcev7@o8vAce^PTD6`oFKrzn@&s Z%&^3x)=1}8#uZTfd%F6$taD0e0s!o2qiO&E literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma5.svg b/doc/sf_and_dist/equations/igamma5.svg new file mode 100644 index 000000000..820f9eba4 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma5.svg @@ -0,0 +1,2 @@ + +Q(a,x)+P(a,x)=1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma6.mml b/doc/sf_and_dist/equations/igamma6.mml new file mode 100644 index 000000000..b617ec160 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma6.mml @@ -0,0 +1,31 @@ + + + Γ + + + a + , + z + + + + + γ + + + a + , + z + + + + = + + Γ + + + a + + + + + diff --git a/doc/sf_and_dist/equations/igamma6.png b/doc/sf_and_dist/equations/igamma6.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e746aa17e25110e9ed8c8a1c35f60bbb76aba7 GIT binary patch literal 1210 zcmeAS@N?(olHy`uVBq!ia0y~yV7S7-z#z!M%)r1fNwr9qfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JjQ_%`xVJP zOV3GubnxV!5i`@{(0d(Y|K$e_Ef1XJP}_cdt;(I`*_MCiDjnjPbV;n~`EmW=?LF${ zk`v{g+J9Z3wNrMfZp5{hCTtr8zUVeGy{~xj`|RYKR~NUw+!C|)l92gwb1@6$cIh83 zv)A}s_2CRVcl71Qh8ah>_dH;nT3`{CU$*UtzmD6^?9#OcNuRddzseH7(v2_5ulM${ zS;tS`V9}mswB5Cyvu)QyvAoCI`{JgqJSV^OpZ0>w{fdSvU+09e^UeQpWZxuPS)ad` z8+q?;+0`+j={f)Xe@xfcCR#7!u&H8+pZVaY<)aWGxh}6A7xtysurU-a>{rfrS=kCo NC7!N+F6*2UngF10v@QSu literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma6.svg b/doc/sf_and_dist/equations/igamma6.svg new file mode 100644 index 000000000..aed303bc8 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma6.svg @@ -0,0 +1,2 @@ + +Γ(a,z)+γ(a,z)=Γ(a) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma7.mml b/doc/sf_and_dist/equations/igamma7.mml new file mode 100644 index 000000000..e58ec2727 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma7.mml @@ -0,0 +1,70 @@ + + + Q + + + a + , + z + + + + = + + + + Γ + + + a + , + z + + + + + Γ + + + a + + + + + + , + + P + + + a + , + z + + + + = + + + + γ + + + a + , + z + + + + + Γ + + + a + + + + + + + diff --git a/doc/sf_and_dist/equations/igamma7.png b/doc/sf_and_dist/equations/igamma7.png new file mode 100644 index 0000000000000000000000000000000000000000..1b26536874372248421c2c2e9721ecd6e20cbe17 GIT binary patch literal 1470 zcmeAS@N?(olHy`uVBq!ia0y~yV9a7*U{L2^W?*0t-2Ul00|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKQiRu6U{|uvGGz3Oo2r#YZ-NnGbz+4jK7ySP} z!}U|VjtmS;lAbP(Ar-gY%)TvjNP)-YCEx%5Cs*>vMQJQd)OmSqqPXnbiME*@H-f~M z{Qn?%+WtzM^6v8*^UKe#*12_bnnz^9f*p#hS$n5H*tjjAAw0S1kHZr4uHR0w`#d{D zo=(^pwm8s7=+u!3Q-YXgcz5J&;8e zx^%B>>TjAIotOJ}-yEN=p4sl3elrRm4f3d}fAwOT>A`rPt?o137qx~j)zJU9`dY=V z)Q+fM1s@m9^hjEGU{1{5Lkp6fDwe-A3rLC0erp_`8drY$`~C2hk}Etm&EnX4-p2g2 z&Tm%BykZHDqV4VvlQ!#!UlT9>o1ox$Dc@YPGH;e#NTt8?Bx|l~2g?p;TWENcopaM- zoqC=pY1(X0AID7#az**=K0jW`d1up$%4~FGw`JfU&aTumjzGyxo+padHvN_Z$_TV z4#|=YJzX}xqh_!>xLFv@eC6RN_kZcg?<47-@0h!?iEc$*Npi-#)Q% z2)b?gu5!xW`XagIQ+NtD{K;PMdO>sk-xE%@DQB9GMD-l+zxVh9NA87%#ee>nJu#DG ZW=Ktxo49?2@()l>@pScbS?83{1OO2`E&Bif literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma7.svg b/doc/sf_and_dist/equations/igamma7.svg new file mode 100644 index 000000000..fd2f4ba78 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma7.svg @@ -0,0 +1,2 @@ + +Q(a,z)=Γ(a,z)Γ(a),P(a,z)=γ(a,z)Γ(a) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma8.mml b/doc/sf_and_dist/equations/igamma8.mml new file mode 100644 index 000000000..b3084311b --- /dev/null +++ b/doc/sf_and_dist/equations/igamma8.mml @@ -0,0 +1,108 @@ + + + γ + + + a + , + x + + + + = + + + x + a + + + e + + + x + + + + + + k + = + 0 + + + + + + + Γ + + + a + + + + + Γ + + + a + + + k + + + 1 + + + + + + + x + n + + + = + + + x + a + + + e + + + x + + + + + + k + = + 0 + + + + + + + x + n + + + + + a + + + k + + + 1 + + + + + + + + + diff --git a/doc/sf_and_dist/equations/igamma8.png b/doc/sf_and_dist/equations/igamma8.png new file mode 100644 index 0000000000000000000000000000000000000000..69f5ebce584f1d1b9ca5adcafcc5502e134d2698 GIT binary patch literal 1860 zcmeAS@N?(olHy`uVBq!ia0y~yVBE{Vz+lb6%)r2KBX0>i0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKIfq{vM>Hq)#45MH)1V&g0)G)g#f$~vFkY6w; z3pi-4{KCM%JkQg`F{I+wn>n|)Emjb4i9Y@R|6{4=iiUzu)tX*DJ8<}n=QPLduJ;+{ zDlDFvdpRI~#q~9TEVuW|Zg)E4YAqV)^Co7GksGXR-=n*_K1)TJYXs+rzvtMNu#B5!QO%hoX*MmnybQU2^-*r0ldi(~J)t zJO0G?SIMEfnJR)a4jgwAEzdSnGfl$thU$3%x->aaSkE*ph&Y#uLSYw)?x3k#WCvEnLhdbh) z*;u+C>X{NH{7h!oiozNkeCQ&mFF)QQC%YWdusynDly4)NR8)9#+X ztx=~J|C060y*s8adPF;?+fB(_?Yi{moNF_de7{_?)+TVrp{BOvXib%*ZOfO%7PP&) zXL$dCYVy=gMf-np^6&gQ&+p@-B`pWl6+Rj4?Yy3J<O)`N>#ldy6ErsHiN(J zy4#K7XWc)~QYyY%+FdY_{A&U^a(Sg%_+%l<1{AIT&fU(X-Uw(RT8n+#XC zEOPbyuKiVLM$3s``bD``x%y9@FN-+IR{dzHp(N|!H9>m{xZ~cRxjCnT^Gs>%#&r`{ zOTX{gaOYVecU#rsze_adWfzt^eEYTPK=cf^dC}?(cJUW0xr5hN{gM88Mc3zSVgDcL zUsIE_;uX7WOD|9SD4G;ivH7EX#)~uG;<}aY-o9t+vp0WcvHb3rTa$LQTc(}T+5VrI Yq3Fqi^Gox;=Yk3=Pgg&ebxsLQ0OgVdoB#j- literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/igamma8.svg b/doc/sf_and_dist/equations/igamma8.svg new file mode 100644 index 000000000..aab96f886 --- /dev/null +++ b/doc/sf_and_dist/equations/igamma8.svg @@ -0,0 +1,2 @@ + +γ(a,x)=xae−x∑k=0∞Γ(a)Γ(a+k+1)xn=xae−x∑k=0∞xnak+1− \ No newline at end of file diff --git a/doc/sf_and_dist/equations/igamma9.mml b/doc/sf_and_dist/equations/igamma9.mml new file mode 100644 index 000000000..bfa6dff3c --- /dev/null +++ b/doc/sf_and_dist/equations/igamma9.mml @@ -0,0 +1,110 @@ + + + Γ + + + a + , + z + + + + = + + + + + x + a + + + e + + + x + + + + + x + + a + + + 1 + + + + + + a + k + + + + + b + k + + + + + + + a + + k + + + 1 + + + + + + b + + k + + + 1 + + + + + + + + + + + + + ; + + + a + k + + = + k + + + a + - + k + + + + ; + + + b + k + + = + x + + a + + + 2 + k + + + 1 + + + diff --git a/doc/sf_and_dist/equations/igamma9.png b/doc/sf_and_dist/equations/igamma9.png new file mode 100644 index 0000000000000000000000000000000000000000..9edbfc3b0f5a27aecdb0a831ccbbd6b230da3587 GIT binary patch literal 1882 zcmeAS@N?(olHy`uVBq!ia0y~yU@~D~U~uGMW?*3WsCq7ofq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=J?++ zA2^v(yN$zSQ`~GmW0keaeO2?AeEB2|Y}t;^`hFwZ>`V$rn%6OrjD4Nbd-yxDSZ2-e zb6|h|!;Lq&PB1CNRyMKuaQZ_Rryb{m8Qos4jK3MMBd}^!gUUHqk*gZErPFUU9Q!n7 zp4QP|CYg?`e@<0Nr|i;l7cE-4_>wlu>G@_NXZc_3jMd-r{@vVIzO%}&){16DZO$|d z`S(B~>jUHT?X#uI`F9-Z2%j)($A_DBrnA;mAKKez(y}4qiP(xc$=$Da?n^KDn>t6b zDAcIjr@p>=TDv{d-l98`Hpoc({y*7~R5Yt}!?PyYZ@Jf&9;{5aHVd;gT$#Q2hi%yh_xR3KcB0tGvp3z3^}&pUa&z-k?_f<7XCeRcoddykjPSz?6~7*Ahwb7y91@a}Be zU=kL;^m1g!vbRpTe68y$uJ19=X^{Q<-TQKkV^z1N!(-{YPp}Mz4RwykxS5=Vx zbi?uuk%q-isas7q{yGwsa@r#8&h%{wI?TpClU3A3PX7NFmHjGXTT@!u#$CKRnVt8K znw>5>|LsAxf-dn- zy<`5BLsg|QEuwMt4519E>;HwmluqGrpSA4n@090TS~hhIsHru1JkQS^T)uilYab-TgmT36aO)3dtEGBuAZUV7q27*AIliA +Γ(a,z)=xae−xx−a+1+akbk+ak+1bk+1+…;ak=k(a−k);bk=x−a+2k+1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/laguerre_0.mml b/doc/sf_and_dist/equations/laguerre_0.mml new file mode 100644 index 000000000..f3b4dbaab --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_0.mml @@ -0,0 +1,70 @@ + + + laguerre + + + n + , + x + + + + = + + + L + n + + + + x + + + + = + + + + + e + x + + + + n + ! + + + + + + d + n + + + + d + + x + n + + + + + + + x + n + + + e + + + x + + + + + + + diff --git a/doc/sf_and_dist/equations/laguerre_0.png b/doc/sf_and_dist/equations/laguerre_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c44234f4e741aee4ffeb93a44fa46d7edbd946e5 GIT binary patch literal 685 zcmeAS@N?(olHy`uVBq!ia0y~yU<_qoU{K{?W?*1A+TNAPz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{ECF>6bwUye=RXGaf9x&P{{O$)02GVhOfES(hR=K8DMbj7*ktI{VOug+b?ex-oH zch$nHGpm-YFXnfy)e4n}$O?$v5bU>w{p$GzNshd$yq9GK_&Q#_&#)+JXZO_pvQ^FT zLcx>RCRS*gC{KapJ+N-M-_C9V?4q;z&c;VgcoUfB4-*ByXeRoe-zopr0QQ+VL;wH) literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/laguerre_0.svg b/doc/sf_and_dist/equations/laguerre_0.svg new file mode 100644 index 000000000..c8491b32d --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_0.svg @@ -0,0 +1,2 @@ + +laguerre(n,x)=Ln(x)=exn!dndxn(xne−x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/laguerre_1.mml b/doc/sf_and_dist/equations/laguerre_1.mml new file mode 100644 index 000000000..830db0603 --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_1.mml @@ -0,0 +1,70 @@ + + + laguerre + + + n + , + m + , + x + + + + = + + + L + + n + + m + + + + x + + + + = + + + + + + 1 + + + m + + + + + d + m + + + + d + + x + m + + + + + L + + n + + + m + + + + + x + + + + + diff --git a/doc/sf_and_dist/equations/laguerre_1.png b/doc/sf_and_dist/equations/laguerre_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a96f4dc93243bd15e1c81ab4f67b7f64e186f9 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0y~yVC-RFU{K{?W?*1QYu0?FQ}DE?$uVxyZ#?|Nn%QDMU$SjyciZ6z|K=LmV?`2WIx=lj4Pqo; z2X7A#{=MQ*V$R`15fXgKEv<)daJUsnSf}><_)76!-A=c}25k*y=A{=Um(F;uI|P+c-F$+hb7Jod;%6J|ZV^VH!GLwxB9otCQ^TPOU! z9(}N(!^~t=yx7^#4yWc$zOBjYGIs*YxmB7nk&Mt literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/laguerre_1.svg b/doc/sf_and_dist/equations/laguerre_1.svg new file mode 100644 index 000000000..37a836bf7 --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_1.svg @@ -0,0 +1,2 @@ + +laguerre(n,m,x)=Lnm(x)=(−1)mdmdxmLn+m(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/laguerre_2.mml b/doc/sf_and_dist/equations/laguerre_2.mml new file mode 100644 index 000000000..13dccc1bb --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_2.mml @@ -0,0 +1,66 @@ + + + + L + + n + + + 1 + + + + + x + + + + = + + + + + + 2 + n + + + 1 + + x + + + + L + n + + + + x + + + + n + + L + + n + + 1 + + + + + x + + + + + + n + + + 1 + + + + + + diff --git a/doc/sf_and_dist/equations/laguerre_2.png b/doc/sf_and_dist/equations/laguerre_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b57e167fc241575b8f742c60e30b30d1a89bad GIT binary patch literal 625 zcmeAS@N?(olHy`uVBq!ia0y~yV02($U{L2^W?*3OJdt>gfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B*aCb)Ty1P@{{R2a z;p;V(fq{XkB*-uLKf}}Q23`ydjE_BC978H@y_wlP>5u}CEC2uhmw&HVr{ch|G&+j+ zT;JlO4(IN%FfGXl?sX_|Z@9mh>GI@i+vQ1phVqiL1icwI^?F}dwolagC9`yCm#^5$ zdDkBB?7Skzbhyw=LU0Z1j6PP6S!^D=xE(~xH~i&g_`~_`xc>&0AFtdG` zK35pCW}jxT3l{X$Ipow+BJTg`%(UI@FVZ;z((a!*q8+*DS9ku$aHIB6eVKXw(US+GuM4y;MgE9eQ0fxNB(Z*7Tvj1k4~sjW)Pn_$K2PMv7nv%?`~VB z1$!sHn48Uh;GW-_;_c!LzZK^=HU4H?#$fTd>2aPuLmA_&^6HJfGruS@oU?S~YA}wQ g!1TcN_H+hjhC4~RH$r(7${0Xt$<@zgol`;+01CAMwg3PC literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/laguerre_2.svg b/doc/sf_and_dist/equations/laguerre_2.svg new file mode 100644 index 000000000..803154087 --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_2.svg @@ -0,0 +1,2 @@ + +Ln+1(x)=(2n+1−x)Ln(x)−nLn−1(x)(n+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/laguerre_3.mml b/doc/sf_and_dist/equations/laguerre_3.mml new file mode 100644 index 000000000..c4a35e054 --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_3.mml @@ -0,0 +1,78 @@ + + + + L + + n + + + 1 + + m + + + + x + + + + = + + + + m + + + 2 + n + + + 1 + + x + + + n + + + 1 + + + + L + + n + + m + + + + x + + + + + + m + + + n + + + n + + + 1 + + + + L + + n + + 1 + + m + + + + x + + + + + diff --git a/doc/sf_and_dist/equations/laguerre_3.png b/doc/sf_and_dist/equations/laguerre_3.png new file mode 100644 index 0000000000000000000000000000000000000000..146aa472820600c8787c0c7030a5da2a14e60d56 GIT binary patch literal 683 zcmeAS@N?(olHy`uVBq!ia0y~yU@T%_U{K*;W?*1g9OanGz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EBpW*3t11|;!CRtAx$B>F!Z)V@_JFLLt!vFvO<=PdOSh8k&`yR}V zSR0a>X=5xA@8G@b_;mK|EcJSpA3o_`4`-cMvq~ZDJ zjz(7&MU8uppKfNf(%7dVy6{Cz&8w+0;#Oh~K@KPVog!QpSsnG7uUDeeP_ah){q9rh z@53ce{{F@>>y^k}@ky&Y^PI#SCN+2VynXunYFp}mHGh>SUW?YvO!=7mc|mT#BH1F3 zmN}kROoVl(P1>#@=Thu*^zNg&&5x$PywoHZU(`9lxN}xo?xflI_SRX8pP#FmoXeM2 zO zvC57!Ho7oesEo&TyT<&DSGqi={mNT!GEXHyC&9J-)V>Nu7dwH76+a@Pj!kT7a{WoUC8yoLr@3`IH(=b;wUMk{}eC5v*ck5JGa#sB~6=5fN saM`5qci$d&D)=vc^!jn<21W+S3WMW|SN}WDz`(%Z>FVdQ&MBb@07D!u*8l(j literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/laguerre_3.svg b/doc/sf_and_dist/equations/laguerre_3.svg new file mode 100644 index 000000000..d7c5a7d26 --- /dev/null +++ b/doc/sf_and_dist/equations/laguerre_3.svg @@ -0,0 +1,2 @@ + +Ln+1m(x)=m+2n+1−xn+1Lnm(x)−m+nn+1Ln−1m(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos0.mml b/doc/sf_and_dist/equations/lanczos0.mml new file mode 100644 index 000000000..b35220cf9 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos0.mml @@ -0,0 +1,62 @@ + + + Γ + + + z + + + 1 + + + + = + + + + 2 + π + + + + + + z + + + g + + + 0.5 + + + + z + + + 0.5 + + + + e + + + + + z + + + g + + + 0.5 + + + + + + S + g + + + + z + + + + + diff --git a/doc/sf_and_dist/equations/lanczos0.png b/doc/sf_and_dist/equations/lanczos0.png new file mode 100644 index 0000000000000000000000000000000000000000..b6dfaa301f522af2b2755ad26a12facf3f313ee7 GIT binary patch literal 1485 zcmeAS@N?(olHy`uVBq!ia0y~yU@T`~U=ZhEW?*1AKKH*80|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e7j!ouSJ|Nji5U^E0qWC(1%c@30rm`Z~Dg8wr--EQE; zz`&&G>EaktaqCUw#Yrs+Jj&I7{_8)N6Itru?Rw>|WaW;?o4Gm89Y?!4-d7~l#Bs?< ze*7u2;>_buw-@~h`Oo2Q&=LR0)+VXcCFyFyYWM0!M*ENFfAf6&!nRo3)XLyM{H5P> zYZh<4duHkMz+{PO_jdNqkvi0vlulFbC zTsjoFO`LDn%-h-NI|PhBa^7d%sL58V>~!q3*wG8eJs8&-31wc)-~F3M?1to#aL%8b z1D9ela;IWZd_1ds8ms69&^&+(OIAUDsY;h^%vELlD1bCYz;UuH$XP#w3Au6 z@h0bdwsSwkJ_e~?tc!c9WwW4Wy6f|bt{>Hr0?IcfYcEV`=i)i~`<(CMqZNl-4tGD+ z<+0e!{$Q(ZtH$GGS%0bC7pgOLV&mp<{Eid|xPCa!J(P1sVD2>rLwo*HM*p_-F@DuK z_59z?y}eHHCrsJh#ZEmJHNVQK|8ujMz=n&>d!@XbS^Of-c>0&Nyta@0&av$7t4ZG- zFVu)g_S+G^|NDh|?=A*u8~pk7b6HZ!qrd65(lf-DZ}_xU{NDfdaVsTCkH+6y mKV|nm`NyZvhaL|3@}HqROt94R#gkK@yyNNW=d#Wzp$PzPYd_im literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lanczos0.svg b/doc/sf_and_dist/equations/lanczos0.svg new file mode 100644 index 000000000..9c3f6598b --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos0.svg @@ -0,0 +1,2 @@ + +Γ(z+1)=2Ï€(z+g+0.5)z+0.5e−(z+g+0.5)Sg(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos0a.mml b/doc/sf_and_dist/equations/lanczos0a.mml new file mode 100644 index 000000000..6ba9b4c0e --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos0a.mml @@ -0,0 +1,75 @@ + + + + S + g + + + + z + + + + = + + [ + + 1 + 2 + + + a + 0 + + + + + a + 1 + + + z + + z + + + 1 + + + + + + a + 2 + + + + z + + + z + + 1 + + + + + + + z + + + 1 + + + + + z + + + 2 + + + + + + + + ] + + + diff --git a/doc/sf_and_dist/equations/lanczos0a.png b/doc/sf_and_dist/equations/lanczos0a.png new file mode 100644 index 0000000000000000000000000000000000000000..0d895754a2c895238e3b9d828de207117582f15c GIT binary patch literal 1602 zcmeAS@N?(olHy`uVBq!ia0y~yU`$|OV9?@VW?*30#a(!Sfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=Jh|GE2@qRJ}1R*=GvJI+@I=zn!=Jmb{!2TlL>Pvb8S6>aP0+=bGorKY82w z4gPp-DExfhX!^@N677m93z!xE=rncyT9eln$n;l`MLV#t#dCc{oNe7~myFh1g3pSV z%AdG>di_E>o4y1m)#Y}FG#b-x$)8^SeP&_E%-U0yE*I`AX}Gt@uVlMyDbx6kdui&? zwM~-_G^}XgZ7*9_MF&au$x8rr-WFsI_GEqtMc>Z^nwr7er>#RTff7iX>Qa4zlrjv z{deX3@1A)3k>Is}hq^3DbKF!iqg{j&{^zy|F54EM#e9d^F6D5h;7#2lCu(-GORQV9 zdP&b)-3yD%&UZWtnKVhfyf){&_U)>-KHDQN&RWR9wsxI>K&kC)r=@c_A9*$Fb3J)z zvBA=KK|;jAIxp={QX@cxYw zx%WJoH>*10g@;3r+uXhvv2M-RGav6hu;}n(gOAa_$^>%U^R{2e;IxpQzTD@2Sa6zb z)wkd;A43CXXgz%L+wAwl@aNyBg!M6OeUS2N8~=XW_WLv4G+rLoY2v&dUz~mQwXVg? zeYSOHCUW%sF`0d1gX*GB7B<(mFWo1*wDG0=o#~cg6C^Gbb?6o69J0SNdG5~W*$cjS z@m&mMJ|3cUO*8Vs2K_6S%IDhrC~K2`w|b7zhv|Yfw}tgnp| Jvd$@?2>{G2bGZNj literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lanczos0a.svg b/doc/sf_and_dist/equations/lanczos0a.svg new file mode 100644 index 000000000..cace8cd62 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos0a.svg @@ -0,0 +1,2 @@ + +Sg(z)=[12a0+a1zz+1+a2z(z−1)(z+1)(z+2)+…] \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos0b.mml b/doc/sf_and_dist/equations/lanczos0b.mml new file mode 100644 index 000000000..8a1d2617f --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos0b.mml @@ -0,0 +1,105 @@ + + + + a + k + + + = + + + + + + 1 + + + k + + + + + 2 + π + + + + + e + g + + k + + + + j + = + 0 + + k + + + + + + 1 + + + j + + + + + + k + + + j + + 1 + + + ! + + + + + k + + j + + + ! + j + ! + + + + + + + e + + j + + + g + + + + 1 + 2 + + + + + + + j + + + + 1 + 2 + + + + + + diff --git a/doc/sf_and_dist/equations/lanczos0b.png b/doc/sf_and_dist/equations/lanczos0b.png new file mode 100644 index 0000000000000000000000000000000000000000..b86c9d2dfebd2eeaab909542e2931965c3a4f423 GIT binary patch literal 2051 zcmeAS@N?(olHy`uVBq!ia0y~yU|h?k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&fq_9zPR_!@;{X5u45MH)1V&g0T)bwu6_k%kg8YI( zS-?SSF!Z(`m~TB5+S#rFRHiQC_|8=tcf@=#FH2)i4)c6H5?$$r8G zAM>Tc&9B?|7+jE={@j&s%dedVN!bPuS)UkOc-1Mx7G--xj4i5}TYA?0xfhi3@~yHo%D4CegvbEk zYXcAdGOOUN+-J3_=i;yS4_ls%O&|{`6xg&VDy} z>Mo;3ajwJZF0!GaFAPMBKF?ojzQKt-0_G*gL2~C!5Wf5HgUs+9Kzdg=cq?+UuG1Zd$ZtDz(g`#U;ANa%;b1C=k z9@UMEM|XdCe8~BEn&A2A@rvDh7gp*0no>O1V1wsp&1*6nyZU-N_GlcGdmDdzx2H(Q zN`Y^8&OI+a*d>xJl2-j+?$(v1ukD3qonc&k&vd?YHpZxW;19BQ6_ zaF@MOaQMs~_k*imoa(yzDOGA!jihB9`=Jfi=Q9tTe|KbI@`Xuu2cq8u>fb-TJ<4us z5qA!|$D+N`%A(sHv#r+#zH6RUbT(_J@5jG;8V?t#rDS$;wfqa*7IInd``(q7Ez{H( zgKrvqsbGue5XsEw6!p1kv8XEO_lh3-BR`q?f*0j-$`&n5uNOS>J?;0?c;-K1nJrou zh3$|Nf ze8>DP$G*&m7V_@y|L4hW5@+XrS7B1S{-7yRc+RrSXQvr% zWq)(}uYF?chBXF>Jq540SZ4Y}pH#-p%PJFx;}Qie7lv0gJ;w3{LdFw&k$huTp`#d6j2{}hqYP8b&liY zugV6skCflCgdYtPd+Yh!^ncME*K(^qi#w+-JAPV}mlZGktnsO*0OyWnhx=TnY?%C% z=hSl1FV9aK{^QzY9@!Ck^2)@kCQ*;|4R&-@h`rgTT~Q`kwr*j*qokfQ*ZVn~H!t+n zKdZX)Poe= z^>?2|&3iD3d2RO6>m6(PlDTWdQoQ>oevNQ@lUsUb`LZ>77puN~t!G%}zEC( +ak=(−1)k2Ï€egk∑j=0k(−1)j(k+j−1)!(k−j)!j!(ej+g+12)j+12 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos1.mml b/doc/sf_and_dist/equations/lanczos1.mml new file mode 100644 index 000000000..68d1b3e64 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos1.mml @@ -0,0 +1,50 @@ + + + Γ + + + z + + + = + + + + + z + + + g + + 0.5 + + + + z + + 0.5 + + + + e + + z + + + g + + 0.5 + + + + + L + g + + + + z + + + ; + + + diff --git a/doc/sf_and_dist/equations/lanczos1.png b/doc/sf_and_dist/equations/lanczos1.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf4817bf5e93291197657ab46a9c96c1c2f1e1b GIT binary patch literal 1463 zcmeAS@N?(olHy`uVBq!ia0y~yV7SS^z@Wjw%)r3lvTpqk1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biU~ zPpJ9W{OQ=82&T;rs!VMsR0RZotvB>MdsjB{4^yIB-j5jn4_qol=h~Zu|Y3b@?u);JI=lS-V#HeL0lBK22SG*ZOVmnpWSLsIlCo z`TpFqx0U!8PApKLa(VLcn2jqf&i%@LdHm|N?VEx!S7l!|5A|O8Ue41id#T_0W19n( zw66Vd=Gvk#S4-ZlhG$$n=6&L6FdX8Yxw8E$ zk8_aHw;TU>7NuPAFwC2560Gj`^pFp4psZ{dH~;(x&mJ~yn4`Ff=i6)Lqtz2Qr>xa= zuZUGX`s}0m$`HYs)f=Kt`lKeOUoZRoW|d(= +Γ(z)=(z+g−0.5)z−0.5ez+g−0.5Lg(z); \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos2.mml b/doc/sf_and_dist/equations/lanczos2.mml new file mode 100644 index 000000000..3a1aa1482 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos2.mml @@ -0,0 +1,46 @@ + + + + L + g + + + + z + + + = + + C + 0 + + + + + + + k + = + 1 + + + N + + 1 + + + + + C + N + + + z + + + k + + 1 + + + + + diff --git a/doc/sf_and_dist/equations/lanczos2.png b/doc/sf_and_dist/equations/lanczos2.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc24245e29341ee3b5748218ba3507600adabae GIT binary patch literal 1483 zcmeAS@N?(olHy`uVBq!ia0y~yVA#vRz+lJ0%)r3lsr#ygfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=Job4{ST8G~`};C%Q-9x1WXSTHb_Ufratcl|M-p z*~s2IC{xjRU;F;&hdY*ZOpuYZef2N%-F?3s_7C|kFO9TcK0)5DV&!q4tFJ=miik!$ zU<`K=3Gcsfz$4c1=()*XHarP4PWt}+`?=01mstI?lkVGTK7X63{955aRJr%1o5u`Q zvJJl4ZCPOz?Q!++tcH2n`)qCA{(b6QW%)JwNA;sK3&h-c_%2G{RjNMlf33H6GwbC0 z#mp^pYU-sXJd=9UEpk$*@p{H_86`u7RWB~w%eeQo!`=OOMrPsUFZbHQ)>lq-fBM8N zJv(~CkvH4UpR8g|o$T_VGO_d5gPF=p8f#m2?=opvyM}Iw{Om7M&fG?i=oV^`$8H+1^RVTy|fHTKM34xr@(>*EN0i+}|Gfi#1z3%gwg3 z(yCy)9Ix=?hE#&iryxh^%7bs6Z*&VZ^_ +Lg(z)=C0+∑k=1N−1CNz+k−1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos3.mml b/doc/sf_and_dist/equations/lanczos3.mml new file mode 100644 index 000000000..1f29a2667 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos3.mml @@ -0,0 +1,110 @@ + + + + D + + i + j + + + = + { + + + + 0 + + + i + f + + + i + + j + + + + + 1 + + + i + f + + + i + = + j + = + 0 + + + + + + 1 + + + i + f + + + i + = + j + = + 1 + + + + + + + + D + + i + + 1, + i + + 1 + + + 2 + + + 2 + i + + 1 + + + + + i + + 1 + + + + + + + + o + t + h + e + r + w + i + s + e + + + + + + diff --git a/doc/sf_and_dist/equations/lanczos3.png b/doc/sf_and_dist/equations/lanczos3.png new file mode 100644 index 0000000000000000000000000000000000000000..c11a26fb7d59a352fe0f1699bb45981125496e87 GIT binary patch literal 1903 zcmeAS@N?(olHy`uVBq!ia0y~yV6k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e62O-=3p|Nji5U^E0qWC+Cgrrlv+U|=c<@(cdY@N~O@ z7Xt(HX-^l&kcwMx=0=viQQ&b|`d2^dXUE+$%`l+|753 z%9x(5ebcaRrtF2ryUcGI-X)efeSUYq=eG0)VYxT^rkN(TzAU*qY2xx5oc=PuyPr)F zzF9gW)YP_h?giVUoD-9_2`}IDSzgO;*7F~84VM{LU!5j>g8lh!zmkd5T&)w1ugq(V z&D~vaChv4!Nlm(wmF}+i+O@Z3H?K3eHswvn%i1@~)*i2zI(PGp-dP;4-pCy5JLbbu zS~j7%Dp8L0%>h0%#QNsmNxyrGS9aX4)_d-^_;>jFl^0HF2)*2+{MS$I&eV>x!Z&-( zYOJhVmpxi170l#fZ+ZW{i1e0IKi^f9eZJ5b8)3Tk-p^YzTJM)itiBeqWbytpU-v%R zz472ir{IZkB`UM?wym47UG8zH@4}TC`CPuP)xl2|+~U5`D2s~j8kGIt8N{|*Y=7{a zKIYvLyR~#2p7%#COTTe;hw$P3kDYfk#vTqVNY&5$b93jzDiI~QN9CIyO?#JS^t!w& zc3F8@iJkTD#NYpm4br}U**&vLgm?GW?WKPrA3mIYyRt02!6|3sbI-k^MR~6k%7QOG zz2UjU_)xaYd&9D;Ra26BgrpvrF8=nmZn^Vz<=rc*rc{+3(Z0#c)tCM{a7End$^B;* zx}V&1+KTy$hGm()?-GapPt%yn64?Dq>(ni#dnRQw=h{44 zbo(UxjhnS+_Z(LEX(Z0?+Hmgjx;ZEGu1%fgTjsf9Ls#zkB=MfW)k3N^mwqpF3o7EX z_O24sn%b=|Xw={NVE*Uly927ybd77uo+)p)bk_=SlqhoRnY3@3T;rj=+D|Uu_&HhX zqAh2Yyz63f(O%zsTTLwcjTS$v*qWStbmyCGK4Dw;p2*pIe{Rn^<2QAa*F+RHR$Onn zG3nRozuhaJUi;6syPo6UulHQatv5LCoK;<%_T_R)`Cq}0ca0gHk~bZ5OJCPrzU)cS zsRuJAGk+AWd%m0h=Dp&DtN_6pfI4C|X^xh~#k YxavAdS?FCt4XAYUboFyt=akR{0Dx&K>;M1& literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lanczos3.svg b/doc/sf_and_dist/equations/lanczos3.svg new file mode 100644 index 000000000..402d143ee --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos3.svg @@ -0,0 +1,2 @@ + +Dij={0ifi≠j1ifi=j=0−1ifi=j=1Di−1,i−12(2i−1)i−1otherwise \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos4.mml b/doc/sf_and_dist/equations/lanczos4.mml new file mode 100644 index 000000000..856aefc6d --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos4.mml @@ -0,0 +1,107 @@ + + + + B + + i + , + j + + + = + { + + + + 1 + + + i + f + + + i + = + 0 + + + + + + + 1 + + j + + i + + + X + + + i + f + + + i + > + 0 + + + j + + i + + + + + 0 + + + + + + o + t + h + e + r + w + i + s + e + + + + + + ; + + + X + = + + + + + + i + + + j + + 1 + + + + + j + + i + + + + + + + + diff --git a/doc/sf_and_dist/equations/lanczos4.png b/doc/sf_and_dist/equations/lanczos4.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d29b1c4340c9e003278417a77698669a47cdbc GIT binary patch literal 2005 zcmeAS@N?(olHy`uVBq!ia0y~yV7$k`z!1d2%)r2K*46bH0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#d!H3}RpujbLD~ zn$Ex=o_{?`egXpnGedw+h^v~Knuv(V|Ns9PM!{$ZjJyy?)l!+nz`(#<666>B|3Aa^ zQ@oB03@iqoE{-7;x8B6wp46(qlWhF&zk2%jMAwf^?pg&5hYz2dBm42vj4iBP_61pw zx5*#0F50}c17H@_`+!{R*&o^IXS+g%cl5v=| z>}=2{z8kZ3S%q&nAJUG9-o|rXM=f-=|7H1rO|dd@_vE)FJYX zx%2aaOY2H?)^47${f6$hzJ-_OTg$N9JgJ^N^?HiXBDw0ypTTF3-F#wsIg^>8Yftqj zM(d6Zo+X#8?!RSKY7uwYSGn(QY`}+iZ}?^}4cv2hYtx5WyH(~YuRncy-n8#u1LPvI z_sLl5?=aTc=`O@~?xDrKwABJg-@^MeAyPt zp;T5TQRJM{{vnW0lV#tkFGucjy9@==%;(W>_j@t{o z*9c#~teW|`#(;18w4(Ckshzj2H|==mZ+YXplXmgKJ>iTJ_hO`r7d>q}cJYn?)1%#8 zAv#->1{1qq%0uu9*W zcU#G!LuGIJ#rK@O`*_t^?r!s(xUNMKzC!nwzIxmJxzg8i+9r)%kKb@?j1G7&p5K0) z`(B#izIDacdjwmiznlK{QP8Wz&vl$RcP}@}?W +Bi,j={1ifi=0−1j−iXifi>0j≥i0otherwise;X=(i+j−1j−i) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos5.mml b/doc/sf_and_dist/equations/lanczos5.mml new file mode 100644 index 000000000..737c168a4 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos5.mml @@ -0,0 +1,134 @@ + + + + C + + i + , + j + + + = + { + + + + + 1 + 2 + + + + i + f + + + i + = + j + = + 0 + + + + + 0 + + + i + f + + + j + > + i + + + + + + + 1 + + i + + j + + + S + + + + + + o + t + h + e + r + w + i + s + e + + + + + + ; + + + S + = + + + + + k + = + 0 + + i + + + + + + + 2 + i + + + + + 2 + k + + + + + + + + + + + k + + + + + k + + + j + + i + + + + + + + + + diff --git a/doc/sf_and_dist/equations/lanczos5.png b/doc/sf_and_dist/equations/lanczos5.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1ce58f7795cbf0f9cd2c882e6a3e54aded68bc GIT binary patch literal 2358 zcmeAS@N?(olHy`uVBq!ia0y~yU}9!qU`Xcxk*of1WME)m;4JWnEM{QfI|9OtQ?>b| z85kH?(j9#r85lOsOZ0L4&cMK+kn9oU%fL{j%D~Xj%)s#TKLbO<3kHTD4hBZi2nGhL z=?o0w`PZZ5ConKDGX(gAxT>kCF)%Rv|NkFk#V8&Pfe{u0%eSirGcYhPmjw9*|NqZ$ z{S>bw0|V#I5zPwY8BD(<#CY8HDH=*Ou*-NAy%s(t ze2?Ad(yUp9Z)|jKEa{jhq)<|`tN!Slpx6$^Lo=7yI^KGtx%~+H#{;KlFG<}gcaxu` zEHm@?%9V0y%jWVqE@+)#(3hz0aOJ#-%G^`QuMUT<;B9m(Y!qwYt6|77YwzSZm#Xy4 z@BR+2gG~q4*DFcEc)i3<%?;Ab zny<~KA6S~O-EaZtj6)8|(-*9??)9GKwTivt_dAo*+m8zC&(Pk>rn!8f>4vxK*Bs@z zcDuFFI=OkywuA>SoZlXD{8}?3+=+d%1naXKNof4yOa2x4n~h zFHq$Ec)#hu#}kv*?`+B4wwpIvwR|_r^;=DMr#^{keg5A0_|Fc7W0F=YO1sR<6~f9OuP8(|8fd-*t*PA+<;78@r#>uIZ=NY3%p#ydeDf z>#nO+5&J)Lw~FlEzOweq#O1}aKFwaQeP%0nk3nr}2=}bpKkDS=r=J&!sJ!x3RP0)( zRMCXA(~8#TRBtE0IWjkuSE*vc_3qpQW=scTy10KB8=s!HAF&iT4CatnVi z`uox_(K^iG^U05k^9tGfzdt_K#87fj?ukgjZ{1$vH)d3=Di|f<2 zO{)(d0OUqrF z5Bz?w;InB~cjUpJ>ksMvbLf0|_-Xl_uPK$O`!+wBC)G4JYx2s!owm=X&v$;p3^r!FJmrghIua42%c0Hq6b^r9IA?YQSyK3VUi>sczljGYj7<*5R$Hld0WlYXp z4%Hb~+7?(mTzG!vol+K_)A^rEKOW$f%WvMZ?RcUX|CVwtGrli+KMUK6+Gh%|DJ|j1 z@mi|S|3ZF(!38eXl1;6Su2cDbO|!o+ful)|QI+S2wY&z%!?`(tdOW73j2PyHEmPo-I|TjqaOHMFvU z%|!Q`xA^qw&$IL=d|+~$@N`>>^Sgtk5)HxKegY}p+m3IaH>2m!qLA+RtG`}9n{@hb zWA@$dBiFacEb{W1A;|QOZ(fANy5g$e?y|*pg->4JnX}|cR;(YRMq+_2f5HC~qWk0f zzU)|3x?$%|j@@f^$wWH_I)<(LeYdzXr}4>kLk7vPj}0yo0)iaOOpOK##-EHo +Ci,j={12ifi=j=00ifj>i−1i−jSotherwise;S=∑k=0i(2i2k)(kk+j−i) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos6.mml b/doc/sf_and_dist/equations/lanczos6.mml new file mode 100644 index 000000000..8273fc411 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos6.mml @@ -0,0 +1,60 @@ + + + + F + i + + = + + + + + 2 + i + + + ! + + e + + i + + + g + + + 0.5 + + + + + i + ! + + 2 + + 2 + i + + 1 + + + + + + i + + + g + + + 0.5 + + + + i + + + 0.5 + + + + + + + diff --git a/doc/sf_and_dist/equations/lanczos6.png b/doc/sf_and_dist/equations/lanczos6.png new file mode 100644 index 0000000000000000000000000000000000000000..869d3f595f06a880b105287a9a7f4b82ee081957 GIT binary patch literal 1487 zcmeAS@N?(olHy`uVBq!ia0y~yU^v9Uz@Wpy%)r3FP&oY~0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e62O-=3p|NkIcM)7C}jJyzt@lCtKz`(#%666>BpW*3t z11|;!CT&j_$B>F!SE6oiYgQ1LUGd|8{JGkIZ%>(wLTX+FW~EL`kw{{+{JW#?yTh6G zoP`{hHuo|AZgjbF{Qdimer8VpIg?pT^tSJE5S+AAx2|JirAlNITm3U8#TMfRrJcGR z@7*Q8DBDT!PI+wCXn(e_$avcK;|e8Hw1uqhlUm7eu%Ez zN13~pF6}q}u&n6aS*JOCzd5^tq+(_tXZ@g~m;9>s$z#(uUtAsCi+gRxG^bcug&B;PuEFDO`h4b z^e&Hj(}h!q4reTzb}hv%JJP~aa~IF=DOnHyp3j_~dPKIwGuvqI#`H +Fi=(2i)!ei+g+0.5i!22i−1(i+g+0.5)i+0.5 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lanczos7.mml b/doc/sf_and_dist/equations/lanczos7.mml new file mode 100644 index 000000000..8300e9871 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos7.mml @@ -0,0 +1,47 @@ + + + Γ + + + z + + + = + + + + + + z + + + g + + 0.5 + + e + + + + + z + + 0.5 + + + + L + + g + , + e + + + + + z + + + ; + + + diff --git a/doc/sf_and_dist/equations/lanczos7.png b/doc/sf_and_dist/equations/lanczos7.png new file mode 100644 index 0000000000000000000000000000000000000000..43b65c40d29f405460e51ba5ed240e307e2ea4b1 GIT binary patch literal 1433 zcmeAS@N?(olHy`uVBq!ia0y~yV0g;Fz@W*&%)r3#*H-Q|0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e7j!ouSJ|Nji5U^E0qWC(1%c@30rm`Z~Dg8wr--EQE; zz`*#`)5S5Q;?|Q{ueUWR2(d6f3&CbQYL(``j|$XEF8XSnq9 z;M>W?ORD4BgIc~<|Nbhs`u)dodx}4= z@Km0WiEfHslkx5Pq1M@}cf9w1dhMyG0Bea?azlW9%c=#xqlMa18@wzMts`eJZ@PF( z>S@$*o}i~1s@4}eq_WOt>4h8In!>auOF}1jT`A00gUxxY>&@I@Yy2)jZ_PQ}$z9 z0+z>KuRUk*sm3zv|Lp4=a`BCuR_qn?{#AW0@pr|W`e&PZd`=zOl)E?Utg4iv(MqF- kW^7X4{B@81+to8O+*`T&U|~f-Bq$$vy85}Sb4q9e0DCDicmMzZ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lanczos7.svg b/doc/sf_and_dist/equations/lanczos7.svg new file mode 100644 index 000000000..c5c47eeb5 --- /dev/null +++ b/doc/sf_and_dist/equations/lanczos7.svg @@ -0,0 +1,2 @@ + +Γ(z)=(z+g−0.5e)z−0.5Lg,e(z); \ No newline at end of file diff --git a/doc/sf_and_dist/equations/legendre_0.mml b/doc/sf_and_dist/equations/legendre_0.mml new file mode 100644 index 000000000..d45a3a4bf --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_0.mml @@ -0,0 +1,75 @@ + + + legendre_p + + + l + , + x + + + + = + + + P + l + + + + x + + + + = + + + 1 + + + 2 + l + + l + ! + + + + + + d + l + + + + d + + x + l + + + + + + + + x + 2 + + + 1 + + + l + + + ; + + | + x + | + + 1 + + + diff --git a/doc/sf_and_dist/equations/legendre_0.png b/doc/sf_and_dist/equations/legendre_0.png new file mode 100644 index 0000000000000000000000000000000000000000..636221d605fe7aa7340a5660a35e48360c61ab71 GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0y~yU_8mdz@W>)%)r3#$vGjJfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9BI0Jk_Ton`)Y;0`) z|NlR$`0!^21_tJmAiv=M{~4~I;&o(TU|Qqp;uunK>&=|EWlaVGE;}p#x4-+?F=4%G zBahqLXYRU9j76I_Pd-}4d9QAd#-A`>S^Vn{!(S`6N?q@eI=9P zlhQMIS5E%J`7wpdLw#j<_*JDRDf)gvUP7r3RwpY}0>xN4{EEapmv9THTlT6vv-69% z|29G0a_W;yN;mtW)qirTyzXl+-gQ!Rf?rUCRK=e7yQPz!XkGq(T;+OtZvW-viW!?H zx?S0<)0QcF;)AD!UDnIE4VQdpE4W8``VC9791pS0KJ!c6P zzqNWR-CE`2V8%hS1v3Umn(wmr* zt#G{D%sjs{$yqT&#rJUIOY}IyatxGO5 zYC2Zgx~r{wxo4K=rq|Yri&ZkG{knAOz`L-Uaq;^)rLRcZx?UNC;U`o-1`mB+$o=4Wk{bzOG*#^Lf% z9uB`xx_nm@cG@QEX{GsnaxT2aeSD*-=&uy@N_EekSzi189rUc*aVRX?Bk@ +legendre_p(l,x)=Pl(x)=12ll!dldxl(x2−1)l;|x|≤1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/legendre_1.mml b/doc/sf_and_dist/equations/legendre_1.mml new file mode 100644 index 000000000..8f6208cf9 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_1.mml @@ -0,0 +1,84 @@ + + + legendre_p + + + l + , + m + , + x + + + + = + + + P + + l + + m + + + + x + + + + = + + + + + + 1 + + + m + + + + + 1 + + + x + 2 + + + + + + m + 2 + + + + + + + d + m + + + P + l + + + + x + + + + + d + + x + m + + + + + + diff --git a/doc/sf_and_dist/equations/legendre_1.png b/doc/sf_and_dist/equations/legendre_1.png new file mode 100644 index 0000000000000000000000000000000000000000..191efdc0eb379644df5fc2ecb5aeb6a81a7a58bb GIT binary patch literal 854 zcmeAS@N?(olHy`uVBq!ia0y~yU_8pez@W;(%)r3FqQlexqS76G9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfq^r?C&X1jLBYnx=Kufy zvx*OYW?*1oE(!7r{{Nrh`YB#V1_q`ho-U3d6}R5Z>h5bc;9;5h=fC@Wzt#!uzC1I; zCKONo^~fpV!>u^0r4r}mgXc6Yka*n0_*q%QPU2ycVf`ojRk^ps9Y5v;x_{J&P;@w> z-~33{;F^eZhpwxlPV=LDO|t{10+uj|ipVo>?DaMkIqBpRu!r-g(yNwJCgSE(Y^L)z zKl(c(YvB#|)TP@UFA6rUoa1%3{#Yr$}mt7^{@#E6uL^VIgmMcrG6kbbUK#-(``f zS+iP_b($hR-SG;%ctyifdzDzr>SOC>WE@)iM_r|(iR>dxRskYL|i-|M$0E0SV<>WNdtI zOHY55xqEWS`zgJim#05kHX)XEy+ z^H7!w+fnQE-wS>)bp_|$;ppN&*VVgFLPS2i^11ch$MH*8kDB+`GqN#ks;sY_Y{(YC Qz`(%Z>FVdQ&MBb@0Na9!a{vGU literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/legendre_1.svg b/doc/sf_and_dist/equations/legendre_1.svg new file mode 100644 index 000000000..0d7443961 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_1.svg @@ -0,0 +1,2 @@ + +legendre_p(l,m,x)=Plm(x)=(−1)m(1−x2)m2dmPl(x)dxm \ No newline at end of file diff --git a/doc/sf_and_dist/equations/legendre_2.mml b/doc/sf_and_dist/equations/legendre_2.mml new file mode 100644 index 000000000..16371083d --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_2.mml @@ -0,0 +1,103 @@ + + + + + + legendre_q + + + 0, + x + + + + = + + + Q + 0 + + + + x + + + + = + + + 1 + 2 + + ln + + + + + 1 + + + x + + + 1 + + x + + + + + + + + + legendre_q + + + 1, + x + + + + = + + + Q + 1 + + + + x + + + + = + + + x + 2 + + ln + + + + + 1 + + + x + + + 1 + + x + + + + + + 1 + + + + + + diff --git a/doc/sf_and_dist/equations/legendre_2.png b/doc/sf_and_dist/equations/legendre_2.png new file mode 100644 index 0000000000000000000000000000000000000000..86ee3b2d7912e9425c67edbf9997e6fc843bce90 GIT binary patch literal 1068 zcmeAS@N?(olHy`uVBq!ia0y~yV2oy9U zkir!1O>qzKY&e&w!aZ}_ z3|;ZP2DMBNGdWaQS=u?p>R0sYCcIq4nOo7yJOL>Pgov2oribJy6F;UoC2;f%>US7u!~(9`gETo2+h? z*S$Dm=I*G6FW2R7))ZOfSyI?ny)pF23USAvO)QylD{^v9KloxdqqO$yYQfqzE5QXG zp9QN;-`?MCo@bvEY~c0gpVe*N#idl}!YKcBLCg257L-(!>4hV__ja$Y;(WEtaH z*VhM(Ok8#!3JblRa(n&3lod-CdNFMBZOIF_`T9=b>Q%FwdaB(kbIyKSSD2_Ay-79N zY?EsArc^i+%Dru=QqZh?+ic>;Tx*5fPiO9Vs-&yzi;f|q4ZdwYwma}m@9p24 z_8xlqm}#4!pZwD=rPf6;55EXze7%?`{pd?z?1h&n3Og^mFSzR7pWAZT{cM=ijc4`m zrbjI2Uw@T-RpzCx=#N&lKAU9E#fBU`#J0TO;WW$KwdY?hj>~o`Vmg(jbLHh@scm)3 z`>jNO-&k~Jt@IqbZ<}~ae|Z!wzCUrXN4NDHJEgUDMjsh;XFXrH>E_GDKW{%!dbPGh z{d?BC*IzDrG5c9}RjlU!`yqF(-I9C1`0p;eA-~;z+hvb!*EfERs-3X*Qswfi>^HS) z^K%kRM2v3gmEKMN>bNcHd~KLKC~l5qes$c|dExCl)-{o}6LMLE?%n=#?VI`m2Ii{; WyYe&dTw-8gVDNPHb6Mw<&;$U5(fd09 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/legendre_2.svg b/doc/sf_and_dist/equations/legendre_2.svg new file mode 100644 index 000000000..cd5965421 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_2.svg @@ -0,0 +1,2 @@ + +legendre_q(0,x)=Q0(x)=12ln(1+x1−x)legendre_q(1,x)=Q1(x)=x2ln(1+x1−x)−1 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/legendre_3.mml b/doc/sf_and_dist/equations/legendre_3.mml new file mode 100644 index 000000000..4fffed844 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_3.mml @@ -0,0 +1,106 @@ + + + + + + + P + + l + + + + m + + + + + x + + + + = + + + + + + 1 + + + m + + + + + + l + + m + + + ! + + + + + l + + + m + + + ! + + + + P + + l + + m + + + + x + + + + + + + + P + + + l + + 1 + + m + + + + x + + + + = + + + P + + l + + m + + + + x + + + + + + + + diff --git a/doc/sf_and_dist/equations/legendre_3.png b/doc/sf_and_dist/equations/legendre_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4036537ce70b289b5cd9bbdc56083d6d5173e963 GIT binary patch literal 783 zcmeAS@N?(olHy`uVBq!ia0y~yVED$sz~Iio%)r3F9Ob3Oz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EBpW*3t11|;!rbbT}$B>F!Z)PQKKcv9nu>Svl|NZ50`MFw3ygJ)s zzAm(4e&^!Q`emv(ceUN+16g+E2al!5nIAruA!mL>tyXfI*^LeLZ}JK&-`t$|5{izcUq1gu>y>+7U(d2OMdXmPeT|Ty(Umjmk@MTP`0ade z^3nE2X^Pkyb5?}PL}o1ABoIU0JtZ{8-gS)Eabw&l)|YCbgQw%4PK-{yY$ zMG{l4E?|^iE^fuVdag~acv(^Y9KXI^gYC*@e(A^6wr(t(@}*e*HUH-NXKH-MX4;p& z=Q_M5Ue}ttI#K^k>)s9G-wwsyfN`E5zGs&Io4499-D8p6^o-+tGOo;X^<=+4c=D@e z(cBxZ+B4PWaJ*S=w>-mrv6k&CgB-{E$2Yt*yTH12v*$0LMeQvnn{)2G)!Y`h`Qi9;-~7yyKi%H-+W%QxJd5G{YSTNUZ^^IEXmwP$nYE6md&ZZHhs2l zf8n@y-jQkATYLPU#d^fHlMT}iD%3D pvft{?P2e#5Y literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/legendre_3.svg b/doc/sf_and_dist/equations/legendre_3.svg new file mode 100644 index 000000000..82ccc6c46 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_3.svg @@ -0,0 +1,2 @@ + +Pl−m(x)=(−1)m(l−m)!(l+m)!Plm(x)P−l−1m(x)=Plm(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/legendre_4.mml b/doc/sf_and_dist/equations/legendre_4.mml new file mode 100644 index 000000000..23a5fc294 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_4.mml @@ -0,0 +1,65 @@ + + + + P + + l + + + 1 + + + + + x + + + + = + + + + + + 2 + l + + + 1 + + + x + + P + l + + + + x + + + + l + + P + + l + + 1 + + + + + x + + + + + + l + + + 1 + + + + + + diff --git a/doc/sf_and_dist/equations/legendre_4.png b/doc/sf_and_dist/equations/legendre_4.png new file mode 100644 index 0000000000000000000000000000000000000000..71ebceac7421af0604c27611918b89b97b8128a5 GIT binary patch literal 592 zcmeAS@N?(olHy`uVBq!ia0y~yU{qpYU{L2^W?*2Lb8Ble0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxZ2p*{Qv)- z!`Evn0|Nt7NswRge}<>q4ZIi_7!P^6IEGZ*dNV7!@2~=oEC28NUqTkI^6c5@>(!|8 zAuyDe|98R})hS!Lf+IN6T)s#N+c7(z)cbp|J}_3}_ouuG+f5q`1O%BFwAvRHe&U?? z(=9){jpwj{qHkzq;1<6fo*BL_f`M5kX_@I_Edmq$6b?PM6IBXgUG#m+{%Nujj$1+( zI0~G+Cn4*?=+Zvr-^m^9YB!AgZkeT8x81sJ;G%Ku{Ws}99?mNld~ch6<7*(h@}Zj( zYFwtw{dDZisI-g2;4 z&QZRlm5`CW^ljSFxXmZ;X>eDE&;0-IgtN`t>tB4&nAg?{z1$|PTzt$Te+Eyh&OV(` zrxUmQda{z6(mD_Py2N@hG`@|c>BQBao-g+ARt)+s5j@jgrz?k5TzKO~pURa1~+HzdkhQ=44$rjF6*2UngBm8_S66X literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/legendre_4.svg b/doc/sf_and_dist/equations/legendre_4.svg new file mode 100644 index 000000000..f238ebbd3 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_4.svg @@ -0,0 +1,2 @@ + +Pl+1(x)=(2l+1)xPl(x)−lPl−1(x)(l+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/legendre_5.mml b/doc/sf_and_dist/equations/legendre_5.mml new file mode 100644 index 000000000..a37b8ec41 --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_5.mml @@ -0,0 +1,80 @@ + + + + P + + l + + + 1 + + m + + + + x + + + + = + + + + + + 2 + l + + + 1 + + + x + + P + + l + + m + + + + x + + + + + + l + + + m + + + 1 + + + + P + + l + + 1 + + m + + + + x + + + + + + l + + m + + + 1 + + + + + + diff --git a/doc/sf_and_dist/equations/legendre_5.png b/doc/sf_and_dist/equations/legendre_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9f180c5ef029d0008454fc3300a235a4192b9c1f GIT binary patch literal 747 zcmeAS@N?(olHy`uVBq!ia0y~yU`%6RV9?@VW?*30F3Q->z`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{EBpW*3t11|;!rdUrG$B>F!Z)SA{9Z}$MkpKVx^0_s;bWJ!tr#r1a zn0zJG`xD2`mPyHn6a-b$ybJ2=sGJo=|g*d9^Uz* zPV#ERg7553m7l-rN*+72B>Vy2Q=h_Qv+lQf-YGHCEsCEl6y=y*mmOQic3mi|)8NI2 zwI6JQua(Q$?p8fCH$>#q%BQbyZ&f^cU1+E5vvgjsk6T<~_Rd`E=etfTO}Kxx`Q*d5 zPj;3o9nyPyzxU&e%b7dY?p$Tr`6aEW;%vz8n^$L_ym+uCr}M#!_9s7fgq8of{j+V= zoGvb(3n#jNmL1(T>DGMDTD2D~IU?`vE{U#PtiAU>=hk$SdmED<74IoHqjo)c8DH;t zuBTbkkJs`iPrF=^b}DUF$`iR`F=zVE%*fFG)w}7toLiFJ+gZxr4TL^do;h02uWV?Y z#glXDGoI9h9sYJYD@< J);T3K0RY2?TdM#7 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/legendre_5.svg b/doc/sf_and_dist/equations/legendre_5.svg new file mode 100644 index 000000000..d31e4d13d --- /dev/null +++ b/doc/sf_and_dist/equations/legendre_5.svg @@ -0,0 +1,2 @@ + +Pl+1m(x)=(2l+1)xPlm(x)−(l+m+1)Pl−1m(x)(l−m+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lgamm1.mml b/doc/sf_and_dist/equations/lgamm1.mml new file mode 100644 index 000000000..54ccb6766 --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm1.mml @@ -0,0 +1,21 @@ + + + lgamma + + + z + + + = + ln + | + Γ + + + z + + + | + + + diff --git a/doc/sf_and_dist/equations/lgamm1.png b/doc/sf_and_dist/equations/lgamm1.png new file mode 100644 index 0000000000000000000000000000000000000000..6963a72590ad7fce3b924e8b504f2050cfa73852 GIT binary patch literal 381 zcmeAS@N?(olHy`uVBq!ia0y~yV3^3jz#ziG%)r2~t6IN`fq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9B*aCb)T%)3*{{R1f z?|#n%1_lPEk|4j}{|ryJ8+b7=FueD4aSW-r^<>&@z7_)x*7pDZU*7dyzvaTEFNwZ6 zNk=pc4z294$^96l#3xs+BPgDEBYBEW=}ko|r5%;|wvcGcXIe%%shQKM2XVZRLZ`+~Q`620L&fTeIvlC{j zW|sKww(`wZlv$MTHDBXyiAh#z?yA>+JO%naLhP?Uo1q-0Jb49w;uVc(Z6&^vC7lkB ztbR>hemm>rnlRJPhB +lgamma(z)=ln|Γ(z)| \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lgamm2.mml b/doc/sf_and_dist/equations/lgamm2.mml new file mode 100644 index 000000000..3f3c47cf0 --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm2.mml @@ -0,0 +1,137 @@ + + + ln + + + | + Γ + + + z + + + | + + + = + z + ln + + + l + + + + l + + + ln + + + + + + 0 + + + + + + + l + n + + + z + + + n + + + + + + + + + + 1 + + z + + + + c + 1 + + + + d + 1 + + + + + + c + 2 + + + + d + 2 + + + + + + c + 3 + + + + d + 3 + + + + + + + + + + + + + + + + ; + + + c + k + + = + + + + z + + + k + + 1 + + + + + + + d + k + + = + z + + + k + + + l + + + diff --git a/doc/sf_and_dist/equations/lgamm2.png b/doc/sf_and_dist/equations/lgamm2.png new file mode 100644 index 0000000000000000000000000000000000000000..059c5df01c174108c93d9e47050f396a69ea0121 GIT binary patch literal 2409 zcmeAS@N?(olHy`uVBq!ia0y~yVA{yQz);G;%)r2q_sDY!0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKIfq{vM>Hq)#45MH)1V&g0)G)g#f$~vFkY6w; z3pi-4{KCM%df3y&F{I+wo4GfO78{7TY+V2UfB*XmxrT^_uq_G)U#?oBb)>NuLBD5lt< zDw42Cpj!dVQs~&bkORtdVf)^KE;_E!i(M{m}#HdqGwaKB0{0-tkWBZg$)r7S`HjZf>kA2 z0r@@-0=Huuwr<^a<(k3bNH?t)OU^D;Y!02fq+-9gv#3Bcubig5ut>A_e#{j! zi&RW>$l=@c&y{=i4W%PxGO7I>$=w3C3#YXDb;#<7%Q!RcQs3B_=wIzPZNjgV{;LZ! z-fl8kA-Zv8dBDqKDYgq4W}Mt;tF+p;cumr)-mje3m%WqqdCJ1{n}2o1eEBUs|Bk=) zyYkU;Wl3v~lCS0U+gFR$eHFfJ5wrTt>HF6{Y}Z`mqokx%oiMrP>NfU|If`jf+=1IT zHpIo5MqG^gGfC|Ir}9r}z0T(SDh=yzmGL5`XbLi`lCk(;rTgNhx0Kc>Z}r zX2s3tcRF4?(u&{@&$+Yp)Sf?^Grhelm_NtwI>P#WsrIw`n{FS@H}&K>T)6QCUo-2y zDU3;_E=g(SZ%gd~rSFeq=oO|@+wCBktRga&WRzBKcVZZXG@p7f@3fm>_ z3fXgHF$C_pc8TlN!pdcr;{4)g`!&_Fc3zdaUngR`x$Cw|Npx88tgG*vx^>B{)!#JjoYtndmd`6ugaW<)ibD@?G0>t@2;!(l6Z($$q{z9F>u#+h=)w zGv9aqa#_jkC%s$BT~==Q*Nwf@;qOtkb}M^WSKP_`^B+AQ#B}ZER@&s`by)bR_tc8F zdylG5UlSF#y-Iqy^^H}9nW2u|=_jII#x7%95}t7V{~tAPBk97NyC;%E=REvmuAp(_ zp|9;XwF6?=Z{4=92}=e%3|^BC)q?Uv3ti&Fww zZhWnF`}cy+nmT^v#nO*Y|loMCko$+?)R{4IPzHZh2zQv z(`T&S@5V+_AFsp7g5y;vQ%9GY`8e zew!tBX{Bw(wbf4(WRs+i+(=Frec<@!Z%y>WS<|k2aOj_(cRA^Bvir-V2xoofgo-z& zg<+S&6~!NHeEj65>aj^_ie);7T0HSk`o-g8g;Fw3ydNsy$iHRx>yKc))gt^Z3x!$N0s%kC)BNHvhci=nqH! zZ#VRO&90anPMYtdlj|0Aut4p0`c?L4g_qN-gY?&xm`wS{&ma-VJm0EB1k_Ao@O1Ta JS?83{1OO&?^@acd literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lgamm2.svg b/doc/sf_and_dist/equations/lgamm2.svg new file mode 100644 index 000000000..33e5531b0 --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm2.svg @@ -0,0 +1,2 @@ + +ln(|Γ(z)|)=zln(l)−l+ln(∑0∞lnzn−+1z−c1d1+c2d2+c3d3+…);ck=−(z+k−1)∧dk=z+k+l \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lgamm3.mml b/doc/sf_and_dist/equations/lgamm3.mml new file mode 100644 index 000000000..644b2c39f --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm3.mml @@ -0,0 +1,52 @@ + + + ln + + + | + Γ + + + + z + + + | + + + = + ln + + + π + + + + ln + + + Γ + + + z + + + + + + ln + + + z + sin + + + π + z + + + + + + + diff --git a/doc/sf_and_dist/equations/lgamm3.png b/doc/sf_and_dist/equations/lgamm3.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc750adba04112ff7a70e047d7a56d9da03da0a GIT binary patch literal 1380 zcmeAS@N?(olHy`uVBq!ia0y~yV02<&U=ZhEW?*3Obl(=oz`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C2NbF>h<1 zA_D`5%|v#s{Iz>=>250tYOEIOu4FsZa3y+Nqvmi z^COVONrSC*QCHElyVu$#g=~Ac;>i|Q$2D9^S7fC8*4*wE;1V_H2{^YX&*#cE2bRv; zC*+Ql*hIblnKu9Y z(z4aUu>SGRc40{w`^mT1Oivw|EoBhGanjzopr06PQ-C;$Ke literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lgamm3.svg b/doc/sf_and_dist/equations/lgamm3.svg new file mode 100644 index 000000000..eb9cf4322 --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm3.svg @@ -0,0 +1,2 @@ + +ln(|Γ(−z)|)=ln(Ï€)−ln(Γ(z))−ln(zsin(Ï€z)) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lgamm4.mml b/doc/sf_and_dist/equations/lgamm4.mml new file mode 100644 index 000000000..a3dc8701a --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm4.mml @@ -0,0 +1,60 @@ + + + ln + + + | + Γ + + + z + + + | + + + = + + + z + + 0.5 + + + ln + + + + + z + + + g + + 0.5 + + e + + + + + + ln + + + + L + + e + , + g + + + + + z + + + + + + + diff --git a/doc/sf_and_dist/equations/lgamm4.png b/doc/sf_and_dist/equations/lgamm4.png new file mode 100644 index 0000000000000000000000000000000000000000..66a22a43f8bf92f22358d66339878823e2307be6 GIT binary patch literal 1579 zcmeAS@N?(olHy`uVBq!ia0y~yU<_qoU{K{?W?*1A+TNAPz`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@CCkU8z1m;wE`A|<;=-TDj=cdq@dmQjo*pZ7dm7V_9=*+G&Z?I>6B^g7XA=3+^6!5M zucWahzth)dHpNFy?7DICzH`^E`Tpn?pWJs<+hon;th$vy4UOF9oQhPOwOwA~pH4M@ zy*lFxORlJcb95NJ4|6~D@+^<~TgbIjm(GS{Z#X$#DJb!0$IE&kAo}AZF{h*i+$T9_u6dqIRL~^G6q~-rPF* ztH!@Ysj-`%E`BGv{8HiKA1xwsQ%r7z1-M;0Ra{*8n0a-?j}FaWbKS3LyWGgjUn-wZm1yfkBp#Lb4^TKcVWRU1CcJrq1Mg&&!;i_VGe+v*l?DaCzuzvz_Z@9b5k37&8`JNI{I(7TMuNxB{_ zN2M=LI#(;-_w~}Usf-@1sarTV&NNZ|aXH8JK*IFRYt-C$yBj#9=Ggb7Jv+?HS(h0v zb=hOZZdZ$tDH}NEe=A +ln(|Γ(z)|)=(z−0.5)ln(z+g−0.5e)+ln(Le,g(z)) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lgamm5.mml b/doc/sf_and_dist/equations/lgamm5.mml new file mode 100644 index 000000000..8c981a241 --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm5.mml @@ -0,0 +1,157 @@ + + + + + + ln + + + | + Γ + + + z + + + | + + + = + Δ + z + ln + + + + + Δ + z + + + g + + + 0.5 + + e + + + + + + + + 1 + 2 + + + ln + + + 1 + + + + + Δ + z + + + g + + + 0.5 + + + + + + + ln + + + 1 + + + + + + k + = + 0 + + + N + + 1 + + + + + Δ + z + + d + k + + + + k + + + Δ + z + + + k + + + + + + + + + + + Δ + z + = + 1 + + z + + + + + d + k + + = + + + + + g + + + 0.5 + + e + + + + + + + + + C + k + + + + e + g + + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/lgamm5.png b/doc/sf_and_dist/equations/lgamm5.png new file mode 100644 index 0000000000000000000000000000000000000000..40abdbeedbbc7a4194442c3d3a6d6c3e25938c6d GIT binary patch literal 2667 zcmeAS@N?(olHy`uVBq!ia0y~yV0L0)V6f+4W?*3Wb*1A70|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&g@uKIfq{vM>Hq)#45MH)1V&g0)G)g#f$~vFkY6w; z3pi-4{KCM%cGT0wF{I+wo7kJ%Rx9vqz5DOK{QKL#3$jF0xmXH3NO zv!Tu-cc1&3Os8kXe0==axWd(E%bz2XmpS8~bX+YEXwd&Hvg6%#{L4qv~%5@=?h-3e(07rdy+NJzA2q| z%I`7tFMOuC@XJqjwl1Z{d0pGIZ(mjQvRh~U$wFBrc~Na$wfAm&w(8dfEk@ff&EKoq z5b!>_=lANsMe%bPUVV7HKi{AweVHiN%nZd_B@6DZQM+9#yeX$zahm*x)%P!a*qA7? zWLHzuy&FkqIMROg%zAo?mE+W-IrnN)R`hfVJX&LU*7nXz`-R`%$DVfz*?Oq{{b}A0 zHrsw}lUzAXW~L`UUuc`+t-4j8Wi&qse{olAdUY&HVDUJaM--)@5+{%%;UUx-D|^%K1%G5W@dIAF*aK9;hCsT zDBHrv2fwX8wbsSMNL|C3!%vUNHzxLcigl`twQTE`lfkp6yGAJ83*kGc%&Kwa{(i2| zSLuCuZ!Nz0X_ZQ?j!3ecDp1MW6yXtITaa?m;ilhpgX5Zy9nPK>zVcy3P4n_@5oTlA z!Y2yF!V?pY1oZD-yD#9nezE1=CyNpkKLi_Tt7@&DVQuFZaAmI1$+LVsJJ+U`Y^|LV zd-zx5kHGhH^CLue%?{mor7z{P(5+wMYhJ$o6RtODjW>7L%nfIM?XXzDzwn~eRt?q} z|IS@7=u$LWpc%SAR5IqxTo$jBEcMYh$6d9BIxJ=0JGOr|RN#o% zJo~Gfuha#NZI|8e7-~rVTA98ld|v%}h5M{Ce!ZyFEDQ?vPEF_d+C9xldyN$1qw82;i} z_~V`++i(6ye`}v!Q#VL!X?duSTYBNUwc@{bXRJ=`y8Y1ff=73|M%SJfvrk;(c1cgW zG5^p`SC!3buj?j!3fg?*)%Oc_x|JJ~UtVnH{VZ_7)_H~6y!htJFD7k&@1t^GoBzw( z3I8tyil0rtAb8?=?X};9TXl>+@GQJiHSzh&!-CEh6?Og{@d4+;BBrtL2#MS!vUi&3 zr5iH@7OP!~UibUTnitkO$=7`Hj)cu&TKYWQBG|fKN|B>ADZOV(ex$hU|4YvcnDUh8 zNA&X4h9};)_S<;%d%>N*&Zl!?PH{DIO=Mp^$7`x_%M{fYUq9MSE@8{l`Us6 zHy3QRTX`~1!`Mm9slU5}$ESs7)7cB(XUs|qJJB +ln(|Γ(z)|)=Δzln(Δz+g+0.5e)+12ln(1+Δzg+0.5)+ln(1+∑k=0N−1Δzdkk(Δz+k))Δz=1−z∧dk=g+0.5e(Ckeg) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lgamm6.mml b/doc/sf_and_dist/equations/lgamm6.mml new file mode 100644 index 000000000..e43e06d3b --- /dev/null +++ b/doc/sf_and_dist/equations/lgamm6.mml @@ -0,0 +1,166 @@ + + + + + + ln + + + | + Γ + + + z + + + | + + + = + + + 3 + 2 + + + ln + + + 1 + + + + + + Δ + z + + + g + + + 1.5 + + + + + + + + Δ + z + ln + + + + + z + + + g + + 0.5 + + e + + + + + + ln + + + 1 + + + + + + k + = + 1 + + + N + + 1 + + + + + + + d + k + + Δ + z + + + z + + + k + z + + + + k + 2 + + + 1 + + + + + + + + + Δ + z + = + z + + 2 + + + + + d + k + + = + + + + + + g + + + 1.5 + + e + + + + + 1.5 + + + + + + + + C + k + + + + e + g + + + + + + + + + + + diff --git a/doc/sf_and_dist/equations/lgamm6.png b/doc/sf_and_dist/equations/lgamm6.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3e541e61e64a617ad6664f1ab7faf7e461c7f1 GIT binary patch literal 3005 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 l(dHXGtZw(up8n6s&~>u!k@+04U +ln(|Γ(z)|)=32ln(1+Δzg+1.5)+Δzln(z+g−0.5e)+ln(1+∑k=1N−1−dkΔzz+kz+k2−1)Δz=z−2∧dk=(g+1.5e)1.5(Ckeg) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/log1pseries.mml b/doc/sf_and_dist/equations/log1pseries.mml new file mode 100644 index 000000000..688d36d84 --- /dev/null +++ b/doc/sf_and_dist/equations/log1pseries.mml @@ -0,0 +1,47 @@ + + + log + + + 1 + + + x + + + + = + + + + + k + = + 1 + + + + + + + + + + 1 + + + + k + + 1 + + + + z + k + + + k + + + + diff --git a/doc/sf_and_dist/equations/log1pseries.png b/doc/sf_and_dist/equations/log1pseries.png new file mode 100644 index 0000000000000000000000000000000000000000..3c47f5e3ae8debca5839ce612cd9ba3f3f7db192 GIT binary patch literal 1500 zcmeAS@N?(olHy`uVBq!ia0y~yV0g;Fz+lb6%)r2~S$S_Y0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6&fq}uo!s7q`{|uvGGz3Oo2y}i9b75d$U@i&r3;zF~ z;rc0FM+OEab59q?kcwMxqHj-YR^UmA`1gN$x_r#qwGEy-RbG8NSlkt2Jk!(Tf>IlM zjU1zq3cs5H%bMf27o{9vnz;R$P@+ulyhoD~IF6isEW{||kzS;9W8yWM*8aWfQPAbL(@ND|X7iPVra%Snov=sFHuHtY~JHIm^v0lN_Gvoj&IKPL}<*9dAg` zi|0>-mPqUc%MiHGX$Y{e=T&y{hCB5R*| z1vOo+Uu_%NG$+hoa?zX!8N0`4FV;^9Zkqfw|GQ(S=E7H-`t~NqOnUtO;p4Sxd{ +log(1+x)=∑k=1∞(−1)k−1zkk \ No newline at end of file diff --git a/doc/sf_and_dist/equations/lognormal_ref.mml b/doc/sf_and_dist/equations/lognormal_ref.mml new file mode 100644 index 000000000..845bebc11 --- /dev/null +++ b/doc/sf_and_dist/equations/lognormal_ref.mml @@ -0,0 +1,55 @@ + + + f + + + x + + + + = + + + 1 + + x + s + + + 2 + π + + + + + + e + + + + + + + + ln + x + + m + + + 2 + + + + 2 + + s + 2 + + + + + + + + diff --git a/doc/sf_and_dist/equations/lognormal_ref.png b/doc/sf_and_dist/equations/lognormal_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3eca4d4de6bc07bb9130919e1f33ca9c19a97b GIT binary patch literal 543 zcmeAS@N?(olHy`uVBq!ia0y~yV7SY`z+l9|%)r3#os z#}8Ppz46VLOnK7YuO}nYURYfIs2H%Utrd9nHzvblr@j%j!E26Q> zcjum!{yN$6T(oS>)OD+k1uX?#UY~zkvZK%1|5bnLl%_2gA6lPzy0Lfbj83b?6*2Rh ztG`cqS~$!5gR%IQ)KeU5Ioahe{>*A*zRUlZ&H3`zd-rsoOy9o1yYhnRv-MA3eY+z% z*UYwlci95ziF1F*^yH=QIq3I^(`)$(jna1C6)T#|wm81Gw_4i1?x}}wxY&!z%{~h0 z>z4jdOPUmaXlvHAgp%crS5}^r$vC|6|NNio2N-HzY8sgQic4Z(U|{fc^>bP0l+XkK D+W_~f literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/lognormal_ref.svg b/doc/sf_and_dist/equations/lognormal_ref.svg new file mode 100644 index 000000000..8e418c9d2 --- /dev/null +++ b/doc/sf_and_dist/equations/lognormal_ref.svg @@ -0,0 +1,2 @@ + +f(x)=1xs2Ï€e−(lnx−m)22s2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel1.mml b/doc/sf_and_dist/equations/mbessel1.mml new file mode 100644 index 000000000..d7f732a06 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel1.mml @@ -0,0 +1 @@ + z2d2u dz2 + zdu dz (z2 + ν2)u = 0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel1.png b/doc/sf_and_dist/equations/mbessel1.png new file mode 100644 index 0000000000000000000000000000000000000000..79d80f39c01035006f479a8a9dadc76f4317a2e1 GIT binary patch literal 1556 zcmeAS@N?(olHy`uVBq!ia0y~yU}RumV9?=UW?*30yLH-H1_p-10X`wF|NsAIU|=|N z=1f39Kub%@iWMuqeEIU?#S04yi<+96h=_=Sf`S<{X6)Fpd8Tr>Cc9$&w`x9z1YyaVaS&F)=au@#Dvb43vq2M)Y>^XAT-J1HqC6DCYxVPWCn;W02UXlQ8Q;NV!WV8MnB8@6oOqM)E4 zARw@3&z^*Ygq)ll9UUDJ5fKdyjgXL#jEsz!m>3lm6&V>B4-XF;8=F4;^wSIstUR7B zjv*PWcO!YDZy5;q2^I=>i7_ru6`R>`?&|u^+b+-l{a+ttck9WdWj`}seu$js?pa*^ zey{KCJF!g@cD|ik^G-Ew>i;M!+x~!RvA@^9N7NOwZ_eKxFVNN0T_oGh;v8XeZ|e^0 z*JlKySWdsv*}eJIw%gn1ENwY_FqK!0XA#>0GvCS5fBszjvFVu50flXq!lgCm^FREu zw{x7k_mqanqD^1Tcpopmy<4Py|Krsb?;dhS^aL64?(ToLq^N^y**m{kmt^MYUij>J^GikIo}GpDbAf-$&e=%?`{a52QTA@g2v=Dgx%NoIPIg5b-?ImN zy(;h7bDW53cedbYFj??em4RpG4hIhZ%RJLI8}3Xr;tv&`apE`oli=fuHkLxa_`jEM zcF2Z1ay-mDRl{Z0{F{yx;QiGSB~kh|gC_vd@NBP-r@@hiyqx(D?!-nbD{bT#Ad z#+Oc&^<3*C?9cz6Y`0IXevzvR(iZArxO4h;Ctm%l+%KY;YH)sa#Ud$@8&j+w zuX28F@%N6}zqpT=^rGf{?-tBnKWFmQkid+1O=efKrRN%6GqIZdY^X z{kN(e&+n)Bl`hzq{_*Mow=%Q6%Ue%A-umUt{1e?v!t&Pc%+M{H{5gloBTxR(jf?gl z_E#n;7O!G7c5@4Ro{yL ztygc0UGQy%;P2`Ce-zp=MwvyWZ!w6BJ3Z0z=;{UDKUMt?Fr?YcV7$j{U{ba{%8%n| zKvi|xE|K%fvYQoSGSX!k53+lu&3@-w6Lihbh>_#w>Gg--2rnosuwdHvXVxr45(Q>PRNC^|i6X(KKzjXY#@}fb9 z%&GP6lQ_4<35(SBE%GcV%h;Qkdr`NrsO{3vq|OO~PDO2T*Ovz|q%6=8EYjRxb@y?> z{5xiv3!Y3hd9FS;`(=0D%wR#UrW1u*_eW~QvPK(ammu14FXbz5?W%;4j#M1(m8gDJ8SLuCIwOuy*kp0L(yyMiUZ51=sMqGVLPBV zC%f{>b4edYrUR>EE1g}Y?ux0->xfW%xX&W+TzB5;g#iJIEiRX(Z-yuJib|~7smeCt z!@u-0lVjPg|AU=)Tb?|MjsH-r8~C7c(e2J%Y==(1i`Dp8tQ)9(XwmJ~#cYR;zM1>t zL$U6uz1oC=iXvdc;hE^x#4+K+p9BA>X`-9ezc{2h&dfF zcV +z2d2udz2+zdudz−(z2+ν2)u=0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel10.mml b/doc/sf_and_dist/equations/mbessel10.mml new file mode 100644 index 000000000..50c699c16 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel10.mml @@ -0,0 +1 @@ + Kν(z) = Kν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel10.png b/doc/sf_and_dist/equations/mbessel10.png new file mode 100644 index 0000000000000000000000000000000000000000..c2a39401704ac02d527eaf07e4dbb1652bde9a95 GIT binary patch literal 786 zcmeAS@N?(olHy`uVBq!ia0y~yVCZ0AU=ZP8W?*1QJkT1!z`(FNz$e7@|Ns9C3=AzT zEeQz;d-m+<>FIg$ulT-Vyd>cN?TXzd-O#(eYd1L@`qg7)u<5{&YjM7Fv)-;r+Qgf; zraAOb(xt|C0qeP>civpADu129E<$PUwQow%-xFll2)UgvGErOT@GN+v_v_E8mfk-F z<(~SVx}NnU%0zBWGb=~;ugN7<=9eX=-B8Y$aiRWV#bYm}>&rW(n9pABE#1hF__unN z+{HWfFA60&?mmmrc2N-De6_c9qryXjvS|#KoFctkOEj(c7OelqoO7}HD$_)rmc*U< zaye73JbmBtccDp~jTHa2qlXp?KIN1B6p`0-|4pvz(vGyknF%(1HK(8HtF7+j-6U}A zw5&pPR1(9d&G#6#+%i$$@MPb<*Y+R39hv+j>1Wgpf$pjKg0_=IcfZVFoNV~|w*DKg zCC$^)Co%9uGIgqj{1H3asdLWeLV@$@B7q&BryRd-)*kWd(&oJZ_t#(Aba&P4s53WrwJ$isDE5at%`R=r z_MTg>vreYG$t(#op4v5%u7lQ$d*{>Z;0QGYMf@6MSF3=9mOu6{1-oD!M< D9l?PC literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel10.svg b/doc/sf_and_dist/equations/mbessel10.svg new file mode 100644 index 000000000..538f156da --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel10.svg @@ -0,0 +1,2 @@ + +K−ν(z)=Kν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel11.mml b/doc/sf_and_dist/equations/mbessel11.mml new file mode 100644 index 000000000..29f969d78 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel11.mml @@ -0,0 +1 @@ +  CF1 : fν = Iν+1 Iν = 1 2(ν+1) x + 1 2(ν+2) x + \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel11.png b/doc/sf_and_dist/equations/mbessel11.png new file mode 100644 index 0000000000000000000000000000000000000000..047077c51dbb605a086e89738112f633d14ab1e0 GIT binary patch literal 1674 zcmeAS@N?(olHy`uVBq!ia0y~yU<_nnU@+leW?*1odG=eEfq`LffKQ0)|Ns9P7#M#1 z_%UO~jF6C!l$4a3nwmFn-kdmbLPbTTqN3u%hYuYc9SRBxXU?4A;o(`ZV8Ne1e>5~S z92^{8ym+x<#fl|Mmc+!w+_`h-z<~oTEiDr!OyJ<)$jQlRXlUr^>DjPhLrF==l`B_n z+_rDO0A*nKLILA>qi8BU`p?(b3U)@Zf=oiOH8QUotW>SXfvJ3JNY< zxL{ylARr*{4-bzuYt~3eNbK3O$H&LVzFDu1fq}Kd)5S5Qg7Ixs zchw^;fq51Cw|>2LH_J9Od$&|{_Uf&>t8J?9{og3&bCvz?ft<#n9ewUH3&Ch#rqSiXU*vrejtfMWsGWuG#Z9c_X`^;~Cu0a;J z`gA|Hrd{F_ubOF9n@Onl-8i)IqB_g5)}?vwGd3M<(VfE~Uc4g8@~upOuR zh*tQjfJRB)qzzkAL==?SCVMf9{?6ESf9^VSqxbI^;%;kat?|>(PSSrI9AE04AAbKx zhxq@*TRv%XqV_sgWQRq4dAi|gKpNNS^h=2hIY%BOU%&bDHFs{C=U&D)r+oqoCQJ1U}>SEe9DNqrPj*ttm}lp@9RDZoz%$THq`5lKh*T-uHxCl zNwvOd40}6kOse`ec~txVje67a#84`K|CjJRZ;HL&l{@cm)^T6&T)*3erNl7l^NNU~ z!XCTD>J*VRf&|?`*f)eE#-@v*+9W zT|g8gzc8l zKb@nPypf-8*8RQq^Tb{{Z~WxMpJ@F?BSHG{nkDNQKON;z;GCSky7}~uxq{)IJNCy{ zJ86EKxIm}#jNSFjbJhlLChq^At)TZTKj258!%qE~U8k}dS|YebSm!NVXBOR`p~Cm% z2D{Mt7sYd5*E3l8@!B0(c5}PhDV>(D-Rwz^=3HbbG|Xsx#3OO7-%R-1Ij!S%6Cxfm z3%MLNt&ChZDf~I>%}tuC6B{mmUCidgeB|f?)=M`$weN{Y9}{l-Xj$BRM9O@B$Ldd6 z5(y&n1Ywq z%2k6CD`fUP3@lx`UP>XJM}g7xk;Vdb-5I`%x0-*tR?E6Ug?rH^sb4*x7B^Jq^L??F zINHM2(e23Ab;we)eO2M*%q#9c!(AV@YwszGcx+kZpQ6MXpwyT0-X!vJ=9KE)_dm<* zUj1;^RvVYelD>>3_j;uK7PCu5%eU8Pn1{s8oHX+Qv+CoPITl5(KZ<3iFn8Qo8lc!P z*~~Zgy;UF&hpvknr#qu84Gd{x`+e=XG;NTU4AsA9`6#cw51_ zsp{{p=LANci)U7>)%)`91V_6VN9W=j|M=RM| literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel11.svg b/doc/sf_and_dist/equations/mbessel11.svg new file mode 100644 index 000000000..20ca9bb4a --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel11.svg @@ -0,0 +1,2 @@ + +CF1:fν=Iν+1Iν=12(ν+1)x+12(ν+2)x+â‹…â‹…â‹… \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel12.mml b/doc/sf_and_dist/equations/mbessel12.mml new file mode 100644 index 000000000..293bf1554 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel12.mml @@ -0,0 +1 @@ +  CF2 : z1 z0 = 1 2(x + 1) + ν2 32 2 2(x + 2) + ν2 52 2 2(x + 3) + \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel12.png b/doc/sf_and_dist/equations/mbessel12.png new file mode 100644 index 0000000000000000000000000000000000000000..607df3e5c63b4c8bd79f1433e92cd0d1bc3ceba1 GIT binary patch literal 2551 zcmeAS@N?(olHy`uVBq!ia0y~yV4Taqz+lb6%)r1f-FW$R1_p-10X`wF|NsAIU|{(1 zH!Gi}TCMI9Le96ej2nYy}kdW~4 z@wsr}!k#^QJUl#PWMm2o3JeSk1Ox;uEG(Wpd9r5B8W$HA78Vu}5fPI$|BM(IINp1@ zIEGX(zMYd9{m4L|Avn)*;nM(?Cn1($N2+5*Z~p(k+U&dH7SCHHuJXSdm*sv+o0K{E zWQs_`eC0Llvzi0Vgufa5{5$32N!B~rPN`B2e##!+$EJMD?A)t==b9`-W4M?191!>K z|DElwE6-h;5VyvUQKKsNW#FDCc~%9j{pwe)Ylgl!wTW%|^GBQJh`*e%lEbQ?p0zjW;Lo~RuWY88I<>#qOaqU3b_(P8a>a{fIz*A5xy=G5_|g`50+esKZ2 z&xbkhyd9KxP5ED~)|+!pIm7(2a)pwz6vJQ3-QtC22a9*ve>~ok>XJTl|JTU$&3)N- zw5;`?-`KVM%k>SxCKZnF^&FNvEId}?thg`7Z0%XA)Nhhmk3NcqhNc~k|8ip4>knMD zTPu|ff~!)l&j0se@zQMl3HQ?WS}wlwOo72W-*NrAD7C4XALqpFYPIp+)yXn{+Hwmc z$v@kVR_{5vaHY!R)iZ9a5oh+2xEFe0(XqB|)n;6|AJ=}Ev#(*#$Na1%^pm^aBqz1?Tqv0C=ez3tgS`46U< z))sDf$$F0U(1K~V@8_Qg_o_0#CmOr*)LGZB+n61)pRyg(EZo}MKDqkn`<@wZ_gP%q zBeYKTh4=yXN}+{w?^cAD=*`&d@_B2)&pBtU9tQ^ayw$n5r8vV%tLW{DOYPamx$=F( zmlhP2^6j6seUtDMp3arBCi*4we@X?bz4N%=dETS0s!TKfWTy5W)7W(H4ZkCfNFO<Eu1%s6q*Jb6CBbMF(PuZdbNE91-SySeL- z!=&hK8vCaiK8NWMPm+@*}@MT_5HRnH<^XmkH_yn|HiAe7PiK$BwO>+kZFR;^dR_sP}f1h)utrlT@|U?d}%KC9?DN z@^2fQIp===Jm;4+(sKVcoAYmV;g$Sve_J4TuZE%AOy*2IFO2}Fs(|$QWx_M{eXJSQ z{e3^N?AW~3h8Bs|!P<4*Zrnd5cGeu7bTL|vyOcpgZBhoiRo=oDTbV_VEPtPQDtBXX z$w#NTsd6`kPIUI1d|@egym!t^7i(pm8%(_?a{13Xyf|U=`K@x%cU|X_hPb`RMV%6R4-RHtsXn0LQ$X2O?`+;ZOonh9$&axRSc0qiz%WwET{(SyK+MQ5~#S%w6xc>50U6BruJ*4ew z-5*?`emKW$#y0DHJ)sHL*ZiMd9U{M&OTFOl%B=K1EsG*f>F8|w*}lFfz|Z{nnPY)1 ztLCig7VZ_<_M_zGv_q4(&5e)oOIMay$+dR@dtB|gJ=^x5ymP$g;nVKLo*tjpp3^DY zd18^uj*GhPj~+zMEO}8-W*}O3{dSnm+Nh}0yEWRrtK83;eZKP6CYyrra5cWTDW1)I z%WCVtv}}(ksmL{7GS~6j+GmG!`OM}C6+Ss|*QQi!v3izXi8^1L-s5?EeHX1~s0UuT zSaGG{ysgUpSD$QSM4rulYFQz0!fDOagJF6%OS5~XyD+_b`G75VjnBzbs#52re`j)@ z+3twrg9%S=$*ZHkaj^F1Bg#|1tbbLHNLSst(pn*Jk9`wC+< z$J?XV?J6Qp7v+B4eZepO$Eoc_i7qlW<=>Y%)?1w2ce%AwOuxKou}R;R*wl2puGyF5 zk8IzyVuO?12dgx7F&!>%Z!0#VtTIqO5-p0G(y_t2@) z`tnHgGq2R+r((N3#1nr+KXZ_rR}zt|zkvrn+4uHI+WDXIB-vJnrLmeqt6ExW~3 nWvKIgn(oJ!m)4fA`_Gum_ +CF2:z1z0=12(x+1)+ν2−(32)22(x+2)+ν2−(52)22(x+3)+â‹…â‹…â‹… \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel13.mml b/doc/sf_and_dist/equations/mbessel13.mml new file mode 100644 index 000000000..2a874f20f --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel13.mml @@ -0,0 +1 @@ + Kμ = π 2xμexz0 Kμ+1 = Kμ x 12 + μ + x + μ2 1 4 z1 z0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel13.png b/doc/sf_and_dist/equations/mbessel13.png new file mode 100644 index 0000000000000000000000000000000000000000..4451cbad5f70facaecba9445a457874073060965 GIT binary patch literal 3200 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel13.svg b/doc/sf_and_dist/equations/mbessel13.svg new file mode 100644 index 000000000..d4cee6952 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel13.svg @@ -0,0 +1,2 @@ + +Kμ=Ï€(2x)μe−xz0Kμ+1=Kμx[12+μ+x+(μ2−14)z1z0] \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel14.mml b/doc/sf_and_dist/equations/mbessel14.mml new file mode 100644 index 000000000..9e17dd480 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel14.mml @@ -0,0 +1 @@ + z0 = 1 1 + S 12xμ+12 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel14.png b/doc/sf_and_dist/equations/mbessel14.png new file mode 100644 index 0000000000000000000000000000000000000000..238f8dba7551429604188bd218869676cc199feb GIT binary patch literal 1473 zcmeAS@N?(olHy`uVBq!ia0y~yU|7$FMcNvSi7F2M=6aTuMqxOiWA`ELd>j#EF!Y6b}y% z4GoP66DA}iBse%YY}l}&p`jrpB;?JTH##~xKYsjBQBm2mXHP~(#(@I|rc9ag;ll?O z78V{J9u5wUn3xzF8yg7;i92`h$jHbT7#QT_|m7qQjgV1D;Hhe78QM0_y7O!T&D(`)`-IL>T}PS)h6#W zo<6~6l3+uA@S3OF7j|`&eY>~)5%-+`HRnGZoF_ERvUsZ6|*_&~%6I>T`$cdF@-L`UFQz)q4Gl;n0c$fs44f zjq-0VIo~?5Y{QYwrVq0%ziI|rt~|DD+U!s4vD=!NUm71$TcH;=`)cY6`OjCq56s$} zf996;qN6*fDP^nrooUYN+SnvIgO{P8g26C;HQRx{Uu+vch1XSH7m~hf8TW39H$&)$ z2BwB(`9WNsyb{c5j1&5jvzxLnI&3_5n&rY%y`Vy|J$W~-Wn22PE9?;av$gKyVQt2< zGZq}XeIegrdNk9Xt}N@>?=Qz~P;L6mPXuI`Z=B zZMF||xjyIm{P~Z(CN`vL^Og5KyHZpdtTENpb@RcgT}cZ$zJDuh7oX@{vkmg=>w4F+ zxo*YERT)zfZ2kxCFFUf~+>Aaw)m8R})0Qb7JtdMn^T~Emzt8hn-@Q}aySzJN-^y!O zL~dU{;UPWO%@syA{_8$-gX$&Hu*0+u>AMb0+N7w_oOA&#!%P+Gn{` zC1QKrfo=TTRMHjVu5a=E940OCpr>Z8>HDt^)k`Kcx%_6CwKesNE?fDBiGiE=&;FbG z`rh_6vu|8*QZA3zFkb6ieK~u_q@;*n?@QPk?9X##Ff4gCaRd9`Z+x?g+&%4TRyjHb zg?&339ay#C!q((%%lh_K2(4%AoW0@D^NABSoLP0i^|sTbW3yszZo9I>^2G5p?cZMA z)18^m@8-C@OjWelDbe@C?C{-9f>ZuXOeu8a|M)g*lkmr>SuzhbmYNy=w3-;6<@5Rq zV-oLkS)cnS{kWX}g-q~r*=RiZy_5FG`CAuG^uO-5`Dv{4M2Gd)Pe0o#d_16juBoi3 zrcu_+nuBiDm7f=t1hLHRk(6GrzfJ!G&+{V>{#DAj_qR8Mo?1TjtoR*M?OW4&G`>XN zGdwqc`->k{tl}w0nb-aZ3JkGYYuqLxC32sgeQMy39`jEp4*hQTy>0aT%yPZ9xdzdX z*H2!+zGlxQ#VyGaYfpGh{M1|I=DVov17B_E_enQ5E@`?q^B@0`ACJTrJ`xl8As%t- z$*1L_la3S%#M;E#upFzNqL^Z^abfU$$(rc~{@mR=lf`9TynFOEd1KRGyB_|6$@30u zH$J79 +z0=11+S(12x)μ+12 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel15.mml b/doc/sf_and_dist/equations/mbessel15.mml new file mode 100644 index 000000000..0c0f1cc1e --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel15.mml @@ -0,0 +1 @@ + Kμ = k=0ckfk Kμ+1 = 2 x k=0ckhk \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel15.png b/doc/sf_and_dist/equations/mbessel15.png new file mode 100644 index 0000000000000000000000000000000000000000..f85d5049c553dcfe3af4bd704715ff02e94c7886 GIT binary patch literal 2049 zcmeAS@N?(olHy`uVBq!ia0y~yV3^Ioz)-=#%)r2KDZgM60|Ue10G|-o|Ns9pFfg>V zv?L@X?Af!Yr>E!1lP4E0T`SRewgNBBN4<9}#C@9RBF=NV< zDH$0VckbK?2ng7*W5=5}Z#XzO3JMBTR8#~61b+PZapue!6B82y1A`MMPVn&XL_|dV z`SZua!$U(uqo$_jz<~oLB_$3H4lyw?Ha0dlZrrG-s93XR&5PEZ|_<9EcI4arSIl7TY_Hy{{KHz-(cHD#>+3|9#_WwT)2^0 zrteN!gFnL(DXv?=huIR$r&BA=oiqKhLUlbe@AfL@uG3%L91m1a52)y_+5P9p&HbhZ z^ACMqb@S6?VV5mlo2zaM^|xhda+vxpXM5Np%vA9E7E40hmN~m*mpuDrAt%Jzc`0IP zbK9(IzDDa->Mdse7|`2xS9X$xm`07!wED>#C52p1e|%rDW1(!?p{u8^Zk}5(zlLE= zSm(8%Pf9QT-pwrwb16P*^WxRDz#-@y0(dH|km2qoxO%>c@aZ6d|0l!U@YXbB9tQjwq z4U>*-STI3*RsDnBy&7la>dZ{HT$;vq{a?YIo%4gjRJ5e@FJC;PJ+)@;r87?tM$BUS zlp^Cd>#FX8S?}sR^TJg0^}H`$xbv$2!M+o}$N9W{9%)+U3vk zGJbaAVwlR$Tv0KF*Se3&wyrL=+F285@jNlVV#iy4`?~?}Co;9lMjrVtZfDhA*Rgub zzW$uar}t(pX1!}zT5@%zh>pm9tsIR@xptOuzDwI4Pkj?{c*c$tO}l-Iyia;_$3#77 z5%YNUZGJ%LqeXje=Z8$U`v1{?jYTihoZI_N8+~K%n0%SPNcq(_eYuI-4lZmDSbk;C z_BF4+SuYbmz+EP&HYxUBT|bx@b!6LKxy)5=9#abQ_B(CcnP-1_`TidQ zoAbTvPFWtk@;3d~mv6E^cgTv02{zvTZ*%Tmi~rVhHzRUlnYPc5TefMZ-bb*DE-_6P z+p(o#mu|tquYIqiLknz=Kj9A*J@_^2@xx%{s`3?V>y{_m7ya_`E1vl-oay@Qq}$gF zj^A)yr1hXmcZ)rPLxr=X>GwD9xoh@@w4afEa?`hCy}@;^yQN3c?eepJnksHBbo(rI zFm-m;mblKw6QYa1mgLN`zc*#k*G&?<8~#+T5?Z^x?n>Z{-QwFSdbC|$U)0ulW@f+} z^^(lAVvktdqzTuG?O2x2ai3VRM{|#gOtmmjk_u3i4{vQ$OJ`;qGvj`-vZTY;lrwNCfW>x?;Yd}2jS z>qZ-)`LSNF8#UIYAIfCBmIbLQgw?emWmXDJo+ zY;FE4&KTC0C49Mxqtx+dL`*-=_CW4L<%4@;c{<$>CfF*^x|=BcB;P5@zu|T0hgW9D zwr-@Cf&V~^aOy>r9Wy&uiJmA7$A9Lx1$eioiT6CPFRbe1p5Wxr5WkrNnm zK3isD$Fhwoa$9}#oqKOC`{DJ?m2bh57O^6%e(qAa9qlhKSFum5SmSFF=f>{wH})rMRlIp?#@_5NvVX#v!sYB% z2(4{@5Zt|Vk?7*D9sG(f@ +Kμ=∑k=0∞ckfkKμ+1=2x∑k=0∞ckhk \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel16.mml b/doc/sf_and_dist/equations/mbessel16.mml new file mode 100644 index 000000000..b068e197c --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel16.mml @@ -0,0 +1 @@ + ck = 1 k! x2 4 k \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel16.png b/doc/sf_and_dist/equations/mbessel16.png new file mode 100644 index 0000000000000000000000000000000000000000..29676043c597bc3d3ccae7dffd68c08c58e770fd GIT binary patch literal 1344 zcmeAS@N?(olHy`uVBq!ia0y~yV5nwbU@+%kW?*2DZax~tz`$@gz$e7@|Ns9C3=Chs ze3>$3%A7fKjvP61O8XE50xwB=Vq)Uq;Zaaf(9_e?($W$W6SFFHgCqk3i-o6) zV@L$&(TLpmM+Q9p?96P=?8RLjHy&P*HJbTJVV?TE@Bc%tpWXV!^A7X=#rheOw*4&6 zykx>4vv}w8>&F{>4Ue1u$hh&K^7!Fn|1NHr+gU9Ag^y={jj(9n_RR-8U7k&n|FH4q z-hGc%uf8;Y!{xQiRNO9jX7|t7%J2M-ToOYy)4o)zth;@KLC@>4r^MmA5BN?k@^|g& zIlNHCti!wXLZue3p|r|zTPxN|Bk6nIC214$_T0PX>A%8%>+6yqzr-!}uZxCZ} zid6rc)E2#M@}{|b)-?-{wH6BG+^Lc{RN5m@wM^rkx8?UmulHBUmd*Yp;c zrAI<9T%Oxy^4vYF+14p`*PF%}+g=`ATf`Qta@0OHaLM%q_VhOfo*yjIt>%}XYf{qq zwNvVi>9gg(cF+BgwCCB*qAhIIMvp@)XB3?Ie&a;Wp%a%{y6!sdzO1U(#?H{&yQseN zR7~0;Dbec9m#tiSFSfW$US3zuz4Eu9>Hhl78{6*}YgXGId8?$X`|pI1?*H_KqT#~FF8!=utlPDe zadFuC*^}02bQdKl2No{A$+X({(#{KVe`Bjf+)B*(3 zQ{tuS4K}d|Zd}s%Lu>IeyS=>qH#;8nwEPXqd{-yfR4uB)f0*?@i}_8_qb9aKqHpw8 zP15hQN={ufpW~42|NnCYCp&p${A1O)aXZ3q`k_hkGYTHAi;+-^6y^52Go|T_LUrJV z=V#@wyqE1O=*_G3>nu6w&~-;wGIT@kKd&3zi=|^+?qyH=H}mq+&u8v3+dlkzVUv#V zOtJd*ZL8$Wc|L^iRGuO8;EVBH=WmbI_4_$$EB?ew&tLv$%AyjXy9aF}YARB#{H|!9 zp8jZeeUM21{P`~54@+e|$v##)sbNRjQLnYCiQAJ-hTM52^W<_{#f4u=ocYw1=GK~+`X1Y5}mZ#REnOD*#1nV+v&`D5Sq|C|0L)Sr-%ld{^j>`RIT zZ*;z%*+MD9oKF{ZUKP!D4lKyXbGv_gRg(V?e;3*HI)%^g=9l~^zN+${A%V*)+IGsi RWCjKX22WQ%mvv4FO#ovijW_@R literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel16.svg b/doc/sf_and_dist/equations/mbessel16.svg new file mode 100644 index 000000000..7a7038da7 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel16.svg @@ -0,0 +1,2 @@ + +ck=1k!(x24)k \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel2.mml b/doc/sf_and_dist/equations/mbessel2.mml new file mode 100644 index 000000000..64e811833 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel2.mml @@ -0,0 +1 @@ + Iν(z) = 12zνk=0 (14z2)kk!Γ(ν + k + 1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel2.png b/doc/sf_and_dist/equations/mbessel2.png new file mode 100644 index 0000000000000000000000000000000000000000..aecf733ec62f498bc6d250ce7bc6e52dae88c9c9 GIT binary patch literal 2593 zcmeAS@N?(olHy`uVBq!ia0y~yV3c8CU@+xiW?*1g@^8ru1_p-10X`wF|NsAIU|^`I zs7Odi*s^8Ig$oxtIyx3CSn%M%0|f;)RTi z%%4Ah8X6ihGBVbzS(B2IA|N0zW5$dlM~=*yGiT49Jvli!At50xEiDr!OnCF=&5av3 z&YU?D5D>6p#fmRqzF1gT)YQ~OL_`!66ztfsD=~=R5Nl8hGiHXUS zDN|HbR76BXczAdW3=B9pI8K~6At525qoc#Z!eV1%6B85T;o-4i!v^V7TY4E7I3+z@ z978f#pGIXzKe7_=Tj3SxvY~^COH@Eq|G=w9tk<9Z|G#ST$6Z`2o8CGb`dzmOf8XLVW$lvXvrJsRzPPQsY5r#Rtq;yO@GcDBv2u0b6UU7C-nrK; zoYT6zPw9xy<=N@=bj_yQHfNjnX5KxWIe|4&b4p~PLcH1aIeaHCMlKFb;8r-d>Xp9r zo`9n377F?W(H?UbXT5&+HgM(t-~Zzb=B7)v%NQJh5$}hh-=e~Xa>|K$2 zwN!th)bd3OgZrZO-!CjH-oC}J^;+MGSYL_d`yF;X5b^Kw_;9Vc{rvapZ?{kHz23$y zrIk77*bJVZUb!FbLf_Boe-eG>a@CZxYQ4@)ZE}o>ej5|l{`Q(JYBp=Jk+hrm`#sD2 z+}26IKGaeuRVZQBDs7#1;LOuI^1^@OO0MdrS6x5!Qt*+XU&)1_vzz72zF%qnQU7|| za$%=qpU+3HP0LQP2@Re4sDo`|z#INuEit_J?KGAeD_SL-`}wvZginoMG9g-P)t^hf zRXxsG#i9$gp7MRuQ(3O`&}`8M?%;nujI$fBuFKDJKf6qD!yVT%bvItGesb4KcZ$AU z&yC%aPNvHkNv?Qw_TT%qnKS zm!)$(BmCb8MZfG5FKJNQc;BL2|6bQ?uC0YS3u2G27W~wE?B?HGwZ8L;&gY+Vum1mM zq1#J$&*jM<-zmO{wEQ_uH1puU^yT?6Vd_?1sj;8V%NYI3E}w4St8w)7+f7$>gXMUu zO8zRnnQ%Pm_Oop-7r$t{`h@Rh|Ay4e)Mej-Gc=A`d>2_{qwcEzCAP;yd`rFhclp>E zXI`wGlY7;8-)mc&KJ~=M2g8`2$ZYE@@$T6ESUBzW1mqB~trLwtSJuP;6qBL4JndQ_Bp z&eVMUm%*p)6GpzO8 zTSI2tnDt|2eTq=gqS7B9UV2NkPW``CO>ZMm$_bEsi(g+P`>R#}Y>f4jKc`u>*8lQsduB&<1Fn*UX@4A!F9}bb9{IL$ zlgGt;$;IC^T_#kE%n8o@!?@IvV{%(#)xRbF8)G9%rhO58RLN;BnWA+lef|0J@;w1j zi!}4e}0$exnR#{huZrF=j_i^U7WkezD(&~`$6p>ZLM;%B?6^dk9BU`{!oz8`^s&p zlv}ny_|b|ZJxd?yJb5By^26%7<;9!VEmKzZYrLs6+xpNuLE_{^m3=dUyBD!bbrd_K z&XN25;mzX{tEAtZ;O)6|!hr8&!KPV{i)5beFE6F%dY8&9lZV0XoM|(R_!v(1e*LqAS#>I3+{tx?JUmyPoD4NIPPe=qCZYZJzV>;A zt;g3ts=2-@rt)a~L)XBTWxeNKy}u}Mp#5-#MZ?Vqw*76r%Fdhq%HI3&lgBtb{RxL# z`N_b8jcuH7wtTainbnj1e*bT~^Ey+0A6Vu6>1dFMdkSOU9MQkgrPw>h2vs)|dtd$jXdedMq# zblC1bufcPbgKX{tUh5RG?|VD$K6gADAML{`s?&4-tieM=PKHw^Cj=<^F2n-d_{y*RRWBpL26Qi~G4N zaXSmVH)wBPFDe{<>a#?w}Va zp7ZjlwmkDo>XVmcRM_;Mefp7sfq}u()z4*}Q$iB}gE#yL literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel2.svg b/doc/sf_and_dist/equations/mbessel2.svg new file mode 100644 index 000000000..feb9158c3 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel2.svg @@ -0,0 +1,2 @@ + +Iν(z)=(12z)ν∑k=0∞(14z2)kk!Γ(ν+k+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel3.mml b/doc/sf_and_dist/equations/mbessel3.mml new file mode 100644 index 000000000..824afc8e8 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel3.mml @@ -0,0 +1 @@ + Kν(z) = π 2 Iν(z) Iν(z) sin(νπ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel3.png b/doc/sf_and_dist/equations/mbessel3.png new file mode 100644 index 0000000000000000000000000000000000000000..603fee6a99255de1850ef24392fa0f8e642ea0c6 GIT binary patch literal 1677 zcmeAS@N?(olHy`uVBq!ia0y~yV0gyBz@X2;%)r2KAlU6I0|Ud}0G|-o|Ns9pFfg>V zv?L@X?Af!Yr>E!1lP4E0T`SRewgNBBN4<9}#C@9RBF=NV< zDH$0VckbK?2ng7*W5=5}Z#XzO3JMBTR8#~61b+PZapue!6B82y1A`MMPVn&XL_|dV z`SZua!$U(uqoShXz<~n}4i0P9tVu~pIdbI4oH=uHa&kgKLR?&2CQO)c!e3o0&2&yFCVGizP9js^wxDzx!ZS@mEZnezs6Xl#h^vt(b8`plp7iC6cXF=*_`%; zM3o(Rxg{&U8*VWox$0W!@^g3tLLuA!Q$(kU9EEkJehi? zwVZI9z~CR6v&47r22Z}ir|PL5O&3K3W^!T0n&6zYP~! zJ-`YD&sywn&GhBm>HWT8s%J*{_K1gU|B@vgGCrAjY>`{MQel&ThSximZI|LF_D#Ph zs6F|@x!!4Gwa+KC?ls!rV~#o)w2+ zqomID!}Sj@Bo?o&`gozI=H-!aAC4<0q&Qjxq}C*zSZ@(B>78&P_lL6Or)3tYTzVnF zv^p|jL)4AZejlc`PEo1T{vlCDr-ctm&a|maVQCc5n7$*=J-YpS@P*o>qEn=QWXztME%@}s$5IC&8%+eEHr|q3|?GD-4XV<*?*)rY3!?bERHr~DXuVsmlTUNnu zzvT(8jqZhZ?avNxaH@L0_%El+_p?nZ+*!x0rl|$ZHoJfGSY%$*k=WimkEMS@BrVov zZK$2eADCl*aW&ijm3|+1j~)Hfc}e%k(qgskys~jNkHXs?7=*U9G9Kw*`h2LS<5zS+ zDo3N*OEzV@GsS$BDW8AYcUsJPU}>W8%4nR}@%1Gg;vBZ`~8=9^=-e zmkGD7+|6Enb?Vc^?N|AmQXd+%Qc)#N`X5dx}}FUH$wdNWa77)1u5} zmt>>tGkz%K&TOm^Z&)ndb6V%}LgAC^XGdFPZI6{YF>RV;Zq)QuX{II*U$8w^n!U|q z?i+{W59TUcPWjza{b9m1$-7n;WcTcp4)&;NF60#6GWUY?u9w_%eb+tlS+H||bNe2j zvIRHFYENY->^r#QNMn)cG1gD*?Q{M +Kν(z)=Ï€2â‹…I−ν(z)−Iν(z)sin(νπ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel4.mml b/doc/sf_and_dist/equations/mbessel4.mml new file mode 100644 index 000000000..f9572d0d9 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel4.mml @@ -0,0 +1 @@ + Iν+1(z) = 2ν z Iν(z) + Iν1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel4.png b/doc/sf_and_dist/equations/mbessel4.png new file mode 100644 index 0000000000000000000000000000000000000000..47a004795f64a70e83c523b28dffae4366a30a74 GIT binary patch literal 1276 zcmeAS@N?(olHy`uVBq!ia0y~yVEDtpz@Wv!%)r2~Kl0|yQ`I5@m`@j^yM z=Fgu$4Gj$$85wKVtVu~p5fBiVF=NJ&BS%zJRK9%qa^}pLDO0ArdGn^FrKO;tV8Vn6 zbLPz1vu96EPEJTj$c-B}0s;b7tXN@TVNp|46A=-yW5d8Tr>Cc9$&w`{ zB_$>%CN?%UF)=X`5)vF796CBW9v&V%JUkmVY8tN(c z_P@AL_B-jc(}Rbms!R3>U(}wtf2(`?Xqj%HKn#ryP&ux}5O* zf6?-Zz+P{$1FZrw=|6kBGr4c{e)~|cdpT>r>XpQPy<2Qw1f=g(KVW2%Yc%k2KeU<8 z#`Sy5hBZevDo@)mHKjprqNARa)d2>kAJgwC`7Clwo>%%nbCr7TifR93r|pQ|{bdGE zQR!CkRS%U`#C`5I>}0zezbNIAS33nodC$C+Ml zDw=ZhMV8YE)BA6v)>vpBW!T%!Q=s^ffwB7OK^38r%p)@Mx%S+*qAwb57e~VIjmXuz_99M>Qex$Q5PI?{nAv%=NwVB>1S|iQbJa%U10CVrO*t z=*Ec^;*6hv8+5Y#HAvcI82>4xbNPnp!ZT+*<^J9&cRFLq${7d!I_0L{b6>Xeo@L79 z`1`!`x)Xk#EMl}s`ju2?BG^ej99x{lre|(Db9%z(9KR(N4^ACtu9Bbm>{B;8 z$FXh(MvJ5`i?}}iTB~??rkmONN9ys_4)2wXW9G>1`^Mn7+e6x$wWA~R`mBE~tv*{fX_M0Pme?Dade6IL z6su2da{KZ)D53etVI`eQEniC3weu8MJ`y~{TRcz7zRQ`l#QMnx4-3BVxU}{+g)8#? zt*mvFN-swE_McRku6!>ci{#&UM0?g z#KZqK2=piyJ)O=eVaEQex>aPpkMhS)0>KPkF;^0Qgk?v9QdGS|g5nB6ZO#kY>jO?4 zzt8k#!Y3)c$OFfF7_!7K|C_<6UTySc=AGw90zQj!_~|~qr>Na|`rsD3c`aVEYlGLOrY$#06EC!I@fN*0 s#PyPE;-hP=ipHx3=9kmp00i_>zopr00-h=zW@LL literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel4.svg b/doc/sf_and_dist/equations/mbessel4.svg new file mode 100644 index 000000000..7e51b8247 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel4.svg @@ -0,0 +1,2 @@ + +Iν+1(z)=−2νzIν(z)+Iν−1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel5.mml b/doc/sf_and_dist/equations/mbessel5.mml new file mode 100644 index 000000000..1e69fdc39 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel5.mml @@ -0,0 +1 @@ + Kν+1(z) = 2ν z Kν(z) + Kν1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel5.png b/doc/sf_and_dist/equations/mbessel5.png new file mode 100644 index 0000000000000000000000000000000000000000..86d8f09b825041e8b362a3cf199f2e7ea18d67a5 GIT binary patch literal 1342 zcmeAS@N?(olHy`uVBq!ia0y~yU}R-rV9?@VW?*3GJ-Y7;0|Ud}0G|-o|Ns9pFfg>V zv?L@X?Af!Yr>E!1lP4E0T`SRewgNBBN4<9}#C@9RBF=NV< zDH$0VckbK?2ng7*W5=5}Z#XzO3JMBTR8#~61b+PZapue!6B82y1A`MMPVn&XL_|dV z`SZua!$U(uqoShXz<~n}4i0P9tVu~pIdbI4gb5So%$bvulM@mW;^N|Rd;)?PX=xtKKV=+&K2{t=Mm& zZ3nf3tsI_Tu)nRjkafkWv(oFzt(Tln{}^Nz+_J*_D~I5&*1eP1y0fNBCAuWD>}s8z z_{UzRsdXNA`Rkurwy`Z+eB~LM7MSim74M)Lq!Q4wR6s}gQ(`#NtyLjQ+~!-Z%Wf>% zbad|@tCfxs(#$g7CQ@-9~;Y0%1vHnen@8RFSjYi_f;boHnv}9 z+N!2g!aqrsU2MuMjz}}+Kx6ZjyAN-1&%ZuHa@}p4Jz|_QbiPzAoz1SP+mbJNgYk6Q zDxJ+6#j}hr2302>{<(igjrn?CCbiQ`ck-G~(sVsMWog5qyv15~uk>zbELfIw{FmFS zRlBGEOuM^>PskubM|;P_oO?WPI$Ac|zg)Y2@0{~7NmF}rZB{VYED(-NYTOd{`Gb{* zkJx1{IhE>Y$s1pSzOpar5cT7;Ecko<@y`v1^DeBlk$XHd%S7pkIsf`*77^}d)3pyA zH*KHLD7%HhWy4UiuQqr@Ac};UQt20lP&Rv!@L*uEL`TA}a5pHMGwGZ4jnNMiF zYqv~K(c02u9o@hFgUW`T`>IPm@A7ciRFl9Z<`?l_@oI_k$@woEvL`h5 zPVc%`@`yvwmQN(iMI$uq#$92VqWVX7Yd*|5`C{gT_VC*)RZebfV)wk=bwPnS`pB)z z^0%}Mr~EhG-eePC5U+CR)tYrx$~JrSCe4w4=;*cW#5|v7o*cPsMHTzN8k4yf>>lj9 zw1G+GT&rZ_nJlKK+rz&0*~PJY_LYB8TxjR{`2S-0*+-*R{kv%yZMb;d@_P@a-`mo} zVd8&&>+}~{CsVHVPXVd+Tk=IwRqTNJ_9k{~KD`qx-WpQcCmAk3R9o9vt>_YwB%9nG z$#`5KGWd_waqpt4{s(Dxho5nk#NAUd^`1CGr>f_JvhAaHnaLaHWFOeP%qM5x&(o4I zvD~(2HY*4PZ0TNMd-l$@21XmDN!Qf^BiBW&jy~8n+2fc09WK@lHy2$zxnlBu}r7Yna9xmIDUCC8W<8f-PSZHaI9?YOu_>mC*H1Lsa2Kilov8HxcYDl^QwqL8542BnJ;+Y5KGn!t-ZkfY z_WoAQ*dUeozejz;A9Qb=$~JG}Dkoc})EU=ST`*el`eNW}CtD%anSQG-Oj_|eELgPT z-F +Kν+1(z)=2νzKν(z)+Kν−1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel6.mml b/doc/sf_and_dist/equations/mbessel6.mml new file mode 100644 index 000000000..5409d2aad --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel6.mml @@ -0,0 +1 @@ + Iν(z) = ν zIν(z) + Iν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel6.png b/doc/sf_and_dist/equations/mbessel6.png new file mode 100644 index 0000000000000000000000000000000000000000..789a703b5eb59a60c7340a8eb061132d06c00080 GIT binary patch literal 1153 zcmeAS@N?(olHy`uVBq!ia0y~yV7SP@z@W;(%)r3#`uU$r3=9mb1AIbU|NsBbz`#&Z zQIU|4uw~1Z3l}bQbaX6Ou;9Ui2MP)bA3l6=adFYm(71Ew&W;^BUc7k0!ot$i)3avH znv|53kdTl)d-mM8abwDqDHA44IB?*=j~_oA92{h1Wd8j5)6me6k&z)FATVRbj3Y;m z%$YMMCnu++rRB|=H)qbA2?z*Sv0}xSFJCMyENW_MA|fIR3JRV)d2;2-6(1j;B}BZYTg{~*2g_BkbG18cXC+W0-s-rSa(B$~KL zb;UCFt!JXnoMuhlyKm+exf!!|oEM9~o3?OQ;-Lij$OcIPhE#34D;FdC^^UG+`?$E* zPxQ{V6Ms$5nlLlDBp4_^?Bht-E_!CeTbFs?4^NZ4Eq;7|bXDp0&=u=u7??O1ovCTs zxT}d{$L#IQ8V1Rg_xjHyPBQ!W=IY1Wo06mgI#Om>nkJvUt1hv+n1A7c9FK#^lT-3~ zvdg~3p3Ba6pEWCKmRMs-hh)VQVV;vag#*s|C>P$lZ4~?R*SFJc8`U@Jnz$y_`Z)S9 zbBZ8@E(TR06lmmHo_yurQ0LC4i$ ztDne*$R+9VALF0zRFnQZS5fczww@ltJ->apPU-~v9hdvrQo!owXe!K_lV$U0%0o9* zv(IzZDsFOJ`_@=fh54Dgl9zX!y~8el2IKW-+>AOjRwO-YD0RE`)bgm}hF#uv0q#Cr znKPHTcPLzoTERNG*Ct1THPou`z@hag!?Klcxp{0{;q1dTQ@FH4p~Yd2M!&|2OOh;W zDjzR#j-FXBx7%3b*%CFrw=od1@O&p#{k z`TE}CEDmB98zXFRhm|4oYlEJW4?N@`t>*0bFTH&@mqF1yc}@rTU^7*XT@@V zA8k;cFyrOBQbtA5lV5i4=(rr{D$DxSFSlZzPr7*0x_`GBHg)ffyC8en@bx#B@QyR* zn^c52_O#wpW_tCy<$0wB^OV&h`+VN1d+&{A^GvN00vM7OF7NmiMqEmu9WJMU@DnzLnF*Qd<0 zYHOEPYiG1>+17N+^Q75Y)!nPpOD^4d)wx_`cc$*uc+1(-uZ8*9YToe7KKZXc?GHEW YOqcm_o5U6|FfcH9y85}Sb4q9e0Q}Y`z5oCK literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel6.svg b/doc/sf_and_dist/equations/mbessel6.svg new file mode 100644 index 000000000..432a651bb --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel6.svg @@ -0,0 +1,2 @@ + +Iν′(z)=νzIν(z)+Iν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel7.mml b/doc/sf_and_dist/equations/mbessel7.mml new file mode 100644 index 000000000..3633bb68d --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel7.mml @@ -0,0 +1 @@ + Kν(z) = ν zKν(z) Kν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel7.png b/doc/sf_and_dist/equations/mbessel7.png new file mode 100644 index 0000000000000000000000000000000000000000..b43b21fb4843f97340abbe23d825452c0ef735f4 GIT binary patch literal 1214 zcmeAS@N?(olHy`uVBq!ia0y~yV0g*Ez@W;(%)r1f;joV zv?L@X?Af!Yr>E!1lP4E0T`SRewgNBBN4<9}#C@9RBF=NV< zDH$0VckbK?2ng7*W5=5}Z#XzO3JMBTR8#~61b+PZapue!6B82y1A`MMPVn&XL_|dV z`SZua!$U(ugN21<&6+hSDJdZ#AvbQ^m@r|&fddCBDk>Zt9F810GH1@5oSYmN7nc<) zR#;eA)YQ~mxpKwF$7jisB_$;#TefV8iHV7N+)~28zij-_!Ewf0W`o+6{|Nn3GoP6d<4)g8f>?hb~s2Jy`-IAFs6jYq~EuFhd=Ikxg z=5oI4|Ad!bS^4a5#`Bofw-+us+);o3)w6eU`h6??n}0vP`*}@XzZIwIKKtvvcWvWN zO?#&i$~JtPG=X!H zc%9H(F|W0oTaI0t_>uRF^TjNNE%6s_E=XT=#!6$+1I2|*9%?+VJttnDV3MqP=TBhN znTTzRr@rhA<6W7NW3u7K)eL^lnF>E27EZiwvb#0Qe_rcLDW9bq?)>?2;l?EAoHEl} zzDz1ysvr2c7pSYfb$a%USJKGnMC60AW;H44S+Z}uw#;Vn5c%`L#Op+5{Oz=vH(v)y z^y^Et)aaKjHr>4-F*T?TOR<-8A z7tLOx;c@Zlj)wAeFNJ#ZdsJtf^3Y7YC-5^iY@@1c#E%0Ha~!q{=@c;r&X}!oIQf6& z`WdZy$1UgRGB_O*oIgKdmBgG6kEfM2S}zFG%Q?XIg+blBt#fJnk+%26@{`&ubUunU zK9Dq3Y&XZ19Z(!8tqzjW8H&<=?nKRnG)-_?k2zWyQ9{;t%r-nJw=^Q ztarMqIa_L_?tZ-!DW_)TerwB62%PcL&-vkpJDpQCCciSd)905ddADa*lJxc)vlog^ zl3n?BhjgDmx4!kE=+%y$N-i;WWvOaui_TQB`YAdtIcd;U$(4TSj8*$;fA9SlCN;b+ zYHjw~e(s;X$(gtV><70l-zp?6=-yJx6!?zWV3YTS8;Kd>ZQCp_z5DfGo?+(ZD)|rD zvQGU~@)j)>Udau=9adgrEOCmeW!N~SZNVLOudmQ=xFWx%kPbP0l+XkK0{K@m literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel7.svg b/doc/sf_and_dist/equations/mbessel7.svg new file mode 100644 index 000000000..dea9d5118 --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel7.svg @@ -0,0 +1,2 @@ + +Kν′(z)=νzKν(z)−Kν+1(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel8.mml b/doc/sf_and_dist/equations/mbessel8.mml new file mode 100644 index 000000000..d68f06ffd --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel8.mml @@ -0,0 +1 @@ + W = Iν(z)Kν(z) Kν(z)Iν(z) = Iν(z)Kν+1(z) + Kν(z)Iν+1(z) = 1z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel8.png b/doc/sf_and_dist/equations/mbessel8.png new file mode 100644 index 0000000000000000000000000000000000000000..e306f98be8e854eaeb55d80ec1631cd158035e46 GIT binary patch literal 2204 zcmeAS@N?(olHy`uVBq!ia0y~yU`k9~l%Z?p8o;-QtEakt z!T2^R*IC$7;M^{!rQ6s!*h6*ZxVm&LPPfSe1qZ{pbi5}`b-A&H zN%f@J+Jb}n#*rr*&uRyxZ91F%=YjGRmFf?g8!8#SCgsLGW|v>6a&oMU{Op7kuep)%lhq-r0@Qv4v zDy2MolXCezOPafW?Tg+w?-*0+Z-tX`S4(yG|I&@TVq~ed>4TA4Q{j@F?I#Xg<-R14 zwC}Uz?cb+DdhMn?y*^ofMqMWV7ani<&YoopdCn_3dP=O(^If`~twUJ%Z?&S8+uGFh z{Lr9=Rrk{$?mM?DdD7c!^XqEtuUG%Gp8Bme>g+SELvOanhNi6F`$|@}{!_=cl({7f zUVi(1GX3L2VF@AT%ZII)TyB1uaL3@YitMe_fBjFnlFIO*$EhQcJ(-Qvp^8`huO^J~?ih8Xr_ z#fD=ID%J*)#;en`&MDUN>^e}lHtxc=FKydO{+`<>Zn{iAY}M~KVmzDW5)N~9Jz?7% za4Iz-K%66cMvASe!;FZN?~lIBcw@NZ^ShN@%n7FFoEUl;JFfjI-SH9nIIi?yY%bcfI?c zbgQO*>aR-nf1Wa{-Iwhuk~`K^U*(Z!!M?PTkL%T=8&WmrYfU#;O!RsZ7vR1j>CL zRF9H3T^j`2K)zr1#HM(YdfX{%3)9y|9p$xe)@46YIGtemN${U$&i>l6x}BH!-9B=t z>1O_V66ZhlNccfRJrmAye+yZG*J?!W7zyoixm%uwKp;F`!uykV`E zJzhVVv}S7*N4=W5^wgNs_AM2y(L7ZJrp4D8XPv$j-?!$hJiFq)6P9nZZSvBmAKMpK z6Z!TZFK^3 z&X>hyNp~N4n4A&ot$1>zQ|AC9ghF_xYUg>r=06z|=YI=^j#rOLV53->jJN zD2|hP#VnQ28*g9WFbT*gTV(1fmVD#G4w*Gv%LS7e`!Qf-{kmj;3Tr{P-TG>a4tWviGKIS&?_e@=L#JonWz+3rnyp(s_EXPXBtshxy-M z&hP&}Yu=q1u9APgvR%IX{<)mTvBR5{dl^?+cZo6O&o{YbbJ1- zT9WA!!E^tRfVc5kpFb`O4o&*CYv0Peui9T`);MoiYK&E*08joBwuHs3gF5_D$ys|N?nzb@P+ z`cOC4W!jyz9Ij|4w+Ua`vQF5zDL>V&7kTq_;pC+&*`k-eekT4{?$W1-IW+;cALN`? zsv3L6KYT6l;@EuuYW{*0*Y*dGS+DAx@nLJRx^N(RgIMT+1A)HXUbpaC3sdxqme?7+-V5{)K23$(U5S zkkQ;B=ELo|F=1P8F5n5}xV?{Kjq8S)=@%S*Bzq5BnS1Bg|8%3O?v=rLSKO|hJimOY zJA**3nM1Ga6gA1GmmQjCCEd+SOmHuV*>H5B>ubp{s|$%HLHqWbojfAC=KI;T%g+6} zG~eI4KVVmeHNR=ug)bjphe=(qUhuwo;r-pyr}T*^M}D8M>G*of-WB=lA7A&ZN?o8~ zFp23&%sGz^)@2$Gv>nbr{h_=xR7Ap)u}Uvp(X1s;&?m1JMP zK!nwa^~BCO1uM36GcDF|IRCVVDZ-(Psgdd4&N&HdOuCtpH6F}AEy=tw0i^QH&N=@X ZOkA#}^gchE#=yY9;OXk;vd$@?2>{bZEO7t; literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel8.svg b/doc/sf_and_dist/equations/mbessel8.svg new file mode 100644 index 000000000..20203189f --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel8.svg @@ -0,0 +1,2 @@ + +W=Iν(z)Kν′(z)−Kν(z)Iν′(z)=−[Iν(z)Kν+1(z)+Kν(z)Iν+1(z)]=−1z \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel9.mml b/doc/sf_and_dist/equations/mbessel9.mml new file mode 100644 index 000000000..8f95395cf --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel9.mml @@ -0,0 +1 @@ + Iν(z) = Iν(z) + 2 π sin(νπ)Kν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/mbessel9.png b/doc/sf_and_dist/equations/mbessel9.png new file mode 100644 index 0000000000000000000000000000000000000000..d3bc0af04c0a0b608561d6c92f434bdca8b222e7 GIT binary patch literal 1597 zcmeAS@N?(olHy`uVBq!ia0y~yU=(3sV9?@VW?*1&T^XXpz`$@Iz$e7@|Ns9C3=9<& z6$uFmTefVuaN$BnN5_H%3m!apprD}e;ll?P7Z(i;jXQVl)YQ~Wm@whTj~@pP9B^=O zc=6(ejEu~mKYtn;8Zt66)~s2Rl9D1IATVRbj3Y;m%$YN1&z?OwIXNLAAuTN}Z{EDQ zapT6BGiL$<0#>Y8@#V`G3k!>gh=_uMf*m_{JbCiu%9SfVK0ZA?Jxi7>DJdy2F)^7k zWy*#P8*FTBVq#(>BqTUEICOM$JUl#jcz8~nIALI5z{0|!qM{O{{Pq9?1FMCni(^Oz z>)VKE=SMaIzAG;@Em{y1@o`tvI`NdqZ;LkV{`bHB>)9vsJhNWgO|hw|)bO2U`8;Ko zUs{6BC9_lc%AwnABVS+r*I!v*{m0NKeffe{&)3KG+}gJ6CFk5t9@C zNn&fR@8wMC6~8?-Mxwj}oHKeEgL5V)Fmw zuFp;9u3wOKss1&`^5nN)CoaZqf8228K*XN33sL5!A7pcmFJKc)UboXQbLoXL8JoM7 z*4MXJ7)ym;&$OGv9mM?D;$iNy0_W#tMvI*Fwtc>$wCj-Sqo8RYerKFjdN$3|`enrD zH@E+_-fgbVZ?HM8*Sgqji+qEIWR#llrzf#GuNPh_DVcL~{nc5D4QCyuO=;cY{r;f3 zkJ17$3kO6xM; zvUwbHdUi?0--!KW3E#$+<7Ttt4a*LHfA=ncXKI{g3`0voh*fIEgt@Y7BI^pjAGr1S z^tbmpcONFHeEa!BD3n*PI)~j^%S4bzR4{9otTnslD}ImUOD)G3Hs6_i{?We|r~lpk z8}eo^_ulF>=gVuFn+~x$@UR_UU*u)imTAr^y~TXPwr|f~nI|Xj%j&#)`(fb68si9i z(e-N|xd(Q9U(?|bTtBbEj}v6%5r)T;B*uK6lB~`yjkk6__V%w64UR55%lul|&_UvX zX}DkG@7LNhl|)h*J#Gr_5a>Aeqt7#H+wt}HMH{~V-Z681`Wp7fhcsVEzGLg1yJ*F~ zXM%jE53;^~9TFi}dS7AA5_J`stYQPT*NY7q(oUpFZY@jZ+>!q_744GF8TUL^50aFh4<#GPP|~^{o-MAoK>uRFJs!&s_KoGjcr$zsU$x< z-+rjofrqVq?XMcK4W443_4fsfl=UetRo?a?`<#{c(l8-U-~0bo6nvPMhY?vTnPb5c7d74z2#aMrXOm?&VLf*KE>m>auz&V0T4j&M}TgfgZ2r zdzdah;MBXK8I&;VThu0o9qk#n4*DLQtukpA+iYvQRa>X7SwH=qTJ;Xi8~ZHo2mdhO z<_JmdNmJS>xz=s*-6zs@moJpqsqA`p^+0Bi0LQ@9%giqz8e8(dZ}Jq+-B7O^xVS3dIo!wJ40L{f}++n8sr zycD$j;Ez9Zml-lCh%7#(dEmc>vD%>*&tF!!eQf5c*A(n?ynM@U!@h$j6SVkemvgB# z#+Pk1__N4YJoeJAGRGI2e=@zboZ?}#dCSjdiNYV=-wSzKw`|h1n0pOt5AND-uxG#Y ztE7m6rQ6>pO|{vwrP6p$qd@V``34JbswV4oe0BFb`KO;}_l>?(S*4`7<17~EQffp? zp1rqf-?!>AKC4`x%(`w==rQZ{j-`3Udkl>y2AQX=?9E)fG%xvxq432Z z^R%_TS;by=)jE@(6?xsA(Q3BhtZu2aO5e;=x~0isw-%Ufzmhw_B28=gmE4#Y^^$J! WwSKEUtz%$dVDNPHb6Mw<&;$TGwF%V# literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/mbessel9.svg b/doc/sf_and_dist/equations/mbessel9.svg new file mode 100644 index 000000000..8fc21946e --- /dev/null +++ b/doc/sf_and_dist/equations/mbessel9.svg @@ -0,0 +1,2 @@ + +I−ν(z)=Iν(z)+2Ï€sin(νπ)Kν(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/neg_binomial_ref.mml b/doc/sf_and_dist/equations/neg_binomial_ref.mml new file mode 100644 index 000000000..d29f5e814 --- /dev/null +++ b/doc/sf_and_dist/equations/neg_binomial_ref.mml @@ -0,0 +1,54 @@ + + + f + + + k + ; + r + , + p + + + + = + + + + Γ + + + r + + + k + + + + + k + ! + Γ + + + r + + + + + + p + r + + + + + 1 + + p + + + k + + + + diff --git a/doc/sf_and_dist/equations/neg_binomial_ref.png b/doc/sf_and_dist/equations/neg_binomial_ref.png new file mode 100644 index 0000000000000000000000000000000000000000..61863d9b157c18708d8c2f9e61461d595283e92b GIT binary patch literal 597 zcmeAS@N?(olHy`uVBq!ia0y~yU}RxnU{L2^W?*2rH}jYX0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxJE@q{r~^} z-u<2j3=9lRB|(0{{~4ZcH}GO$U_9>W;uunK>&>j!MJ)!$`vLECU=vbY4={(=IFDymg8E;eSIV8l4PNao(doVL4MsqMVhktNy zJ)!VNi@m(zgRf(Y!Lb*iwhK?lNH+gfQ266==YhwfyElJ+R)~4e+3n!aps<{qk1wW% z!N-l^i$j3K5~o|Nj=K_tR1DlhEVimn=iZa3(8`>d=oK-AiTC)i!nz27b5maY_h~FE zu-?n*nfxmz>*%T7;!dUa0vCH^hXlP|I zDeWL^WA#)kv!#5AriilSmF-vAE|^qz81wLbnfvwkR%SlwrXsaP*Ncz6Q2p0f2Y25~P3LgTPuR@(Wt+gNpSuhj?uk21R9buUb*|0BK7mt0cV!&%c^ggq zUogMu4PJ8p*l#BZ8J_u{&R%*@_w{GN>#h4(Bp9YwskU5*bXv#2z`)??>gTe~DWM4f DBW?Iu literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/neg_binomial_ref.svg b/doc/sf_and_dist/equations/neg_binomial_ref.svg new file mode 100644 index 000000000..4def4af81 --- /dev/null +++ b/doc/sf_and_dist/equations/neg_binomial_ref.svg @@ -0,0 +1,2 @@ + +f(k;r,p)=Γ(r+k)k!Γ(r)pr(1−p)k \ No newline at end of file diff --git a/doc/sf_and_dist/equations/normal_ref1.mml b/doc/sf_and_dist/equations/normal_ref1.mml new file mode 100644 index 000000000..bc4de02a5 --- /dev/null +++ b/doc/sf_and_dist/equations/normal_ref1.mml @@ -0,0 +1,57 @@ + + + f + + + x + ; + μ + , + σ + + + + = + + + 1 + + σ + + + 2 + π + + + + + + e + + + + + + + + x + + μ + + + 2 + + + + 2 + + σ + 2 + + + + + + + + diff --git a/doc/sf_and_dist/equations/normal_ref1.png b/doc/sf_and_dist/equations/normal_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5ee09c924e446ca032c027bb41daa6843133ba GIT binary patch literal 555 zcmeAS@N?(olHy`uVBq!ia0y~yVED$sz+l9|%)r19vGrO60|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxJE@q{r~^} z-u<2j3=9lRB|(0{{~4ZcH}GO$V4Ume;uunK>&*;rp%w)m*4e+~tIVt#TKbiwm~)nS z$u2#qT*+wuG$HYP1GjL}W?|#y`^2}s^>O`jTIC9RoZ5n8&y9GxYM7P!d81i3i@%jA zEjg@Z_WwW~-|T9aefkH?H+)Z+`z>L~`=0{eT6YHO-w@llw7%oYu?@Z^^SF0U`n@gW zu36X?@olbejxcK+vwI(|W#^`q{ZD$vq#o_7xxcImzPwiHzU$nu?Lg4H1mkTX?`l+C zRxVrmPWzpo^RBg-3*GK+Fm;;zA>o{N)Z0xbI6Jfs*8TKZr(vYDb@}Ughs*jCi|bO# z3+w`|%UNef8P&u*;h4npe(L;*8wHK;tG*FG)01zJF~Rvr`-W{Fy|*oUzLv}F{y8Bd zOO=2(*O^Lo&56Cf@BO!RBKjN~pLp&* +f(x;μ,σ)=1σ2Ï€e−(x−μ)22σ2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/poisson_ref1.mml b/doc/sf_and_dist/equations/poisson_ref1.mml new file mode 100644 index 000000000..3bd7d0910 --- /dev/null +++ b/doc/sf_and_dist/equations/poisson_ref1.mml @@ -0,0 +1,35 @@ + + + f + + + k + ; + λ + + + + = + + + + + e + + + λ + + + + λ + k + + + + k + ! + + + + + diff --git a/doc/sf_and_dist/equations/poisson_ref1.png b/doc/sf_and_dist/equations/poisson_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..10476b12739b69821e6b692cd31327f5fc14de90 GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0y~yV3^6kz@Wjw%)r2KOJqd^0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxJE@q{r~^} z-u<2j3=9lRB|(0{{~4ZcH}GO$U}W`laSW-r^=5`6-(dwFmiGVkyMma#G|U1*Z&Yh6 z*Kje2x}DA8TKYl#wz^X@kIlvte3Ee@6TQ_}^*LQ!BGl>fS#9y5C6hkNB{K#X`zy?{ zam`Md+PUVzR)$BG90zZn+tw_QBXA~d^9cjl`=+s%CgmtbZb|vqq89)F literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/poisson_ref1.svg b/doc/sf_and_dist/equations/poisson_ref1.svg new file mode 100644 index 000000000..0f09897ec --- /dev/null +++ b/doc/sf_and_dist/equations/poisson_ref1.svg @@ -0,0 +1,2 @@ + +f(k;λ)=e−λλkk! \ No newline at end of file diff --git a/doc/sf_and_dist/equations/roots1.mml b/doc/sf_and_dist/equations/roots1.mml new file mode 100644 index 000000000..b40b3b32a --- /dev/null +++ b/doc/sf_and_dist/equations/roots1.mml @@ -0,0 +1,40 @@ + + + + x + + N + + + 1 + + + + = + + + x + N + + + + + f + + + x + + + + + f + + + + x + + + + + + + diff --git a/doc/sf_and_dist/equations/roots1.png b/doc/sf_and_dist/equations/roots1.png new file mode 100644 index 0000000000000000000000000000000000000000..29dec75b528c8c36d3ff441ea639c3efdf909541 GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0y~yU|7Mxz@W~-#K6EHa(>D?1_lPs0*}aI1_r((Aj~*b zn@^g7fq^C6(btiIVdK0+AII+u3=9g%9znhg3{|QO3=Pc;3_t%fFf_biUYW=`Z;dEe{#&t68k&lM3hxeK1ZW7t3Y zoVHed!~Io1^5x8qv#k2Hg7v@SmSW zE6aBNd%k&5po-Tzw&hHMxnwu z*Vlg>zC>O5@hvXp=m+^j^S*dLs#90&Y=I_Ad5$}jTX-tlW% z-H9zNU2H|Q`8$%*XZRjEx@FU<=PnHy!VmoVl7A(>+S2s-TXopGf9tPn&VCv<-)qAf z{b^RSPPi1CeNxroSQj9^Z2s)C%hp_N{$=w@cy-kb;U^`2JNr6+O?&-FC|i!d`c74J zPIZ>n-Hh%I{ykj@CpR?yaHy58j`8cSW_Ke)(Sp28RFtnHjE{H|JgSJ)+9Mz`)??>gTe~DWM4f D+vO0X literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/roots1.svg b/doc/sf_and_dist/equations/roots1.svg new file mode 100644 index 000000000..9a5989c6d --- /dev/null +++ b/doc/sf_and_dist/equations/roots1.svg @@ -0,0 +1,2 @@ + +xN+1=xN−f(x)f′(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/roots2.mml b/doc/sf_and_dist/equations/roots2.mml new file mode 100644 index 000000000..75244af97 --- /dev/null +++ b/doc/sf_and_dist/equations/roots2.mml @@ -0,0 +1,70 @@ + + + + x + + N + + + 1 + + + + = + + + x + N + + + + + 2 + f + + + x + + + f + + + + x + + + + + 2 + + + + f + + + + x + + + + + 2 + + + f + + + x + + + f + + + + x + + + + + + + diff --git a/doc/sf_and_dist/equations/roots2.png b/doc/sf_and_dist/equations/roots2.png new file mode 100644 index 0000000000000000000000000000000000000000..3262b997a929849878b0e18f515be63d423769d1 GIT binary patch literal 920 zcmeAS@N?(olHy`uVBq!ia0y~yV3cNHV9?}XVqjqC>XJ%fU|`@Z@Q5sCVBk9f!i-b3 z`9LaI(j9#r85lOsOZ0L4&cMK+kn9oU%fL{j%D~Xj%)s#TKLbO<3kHTD4hBZi2nGhL z=?o0w`PZZ5ConKD^Le^BhE&{o6MJz|vjNARvS0uAzp<@&ZXqQo)}eB@c2ghci4BY< zm#%Npv1f5)dFU%Fz#{2-PQh3xNOyOHYid?(lupjw6C~*aYFsae^r)M z97;*7sgIq@6-~Z&+P%CLb4TRDI+qw^iA^%X9@#T{zYRZ{g)*Iv@~ z%F@eL%lA*(c~#d-K+<)|1<$&i1uAkrfv*p2S~%5TZQtCG%FS~nr9(T9aw#qDkZ9R) zcUJk@;J4~L-(Ti6&G;&~^Wp2Vlh;Lz&w74Qn$xuFR`2;rj+ue~xV&!gavYI#5Rh~g zSo}zNz0B)E-)pg|42`$?lDHO4h~{G4^3tLG^Qi;2Tdd8d9)IIdliV{&{I_%Ij(VoY zYc#bV*ECmIbC};t(KOsrJ!Ag7eEn4q&mUqt^=nSqhF6DwnC13d+I_m&Kitc(efQ%I z(fl)(Zs#BQlq{0vuyH&2+xko94VJ09j*AqpH#!rj`nw`--OOJVXP!)4YBtHX^l?nm zmdN>gED}BY(sRzb{<5BI8>BHQFj`&fz`o}jovTH2*j1BFZNHebW)+e9u2&=rb>b6|fhkIth`>h?@mrUW`r@!Xu0v~lBneX$a^R!cyw|CTouYVcl&XR943AS5qVU)#YRT(s^C(ffm z$KmI>*kx0bPp%H9Z_uZHIYiB=GD@+N=v~vCXHt3^4#$CHxYgtVU zCiJZG(0Z_*eXVQvpUrR9xlVr8-;pe98X>soPoA$_#LoM7AJ4KrYUsv$a@XP2Q}@)B zS2CVjVsmZf`7HV6JNAFR(`=qs)Uo#3uf4@9f69HBJGJ!s{LjI9Ig=G7T?HooU}a$V c|DTzG<-8teqUUjC1_lNOPgg&ebxsLQ0JL(L3IG5A literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/roots2.svg b/doc/sf_and_dist/equations/roots2.svg new file mode 100644 index 000000000..4c7157895 --- /dev/null +++ b/doc/sf_and_dist/equations/roots2.svg @@ -0,0 +1,2 @@ + +xN+1=xN−2f(x)f′(x)2(f′(x))2−f(x)f″(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/roots3.mml b/doc/sf_and_dist/equations/roots3.mml new file mode 100644 index 000000000..67dff5e98 --- /dev/null +++ b/doc/sf_and_dist/equations/roots3.mml @@ -0,0 +1,81 @@ + + + + x + + N + + + 1 + + + + = + + + x + N + + + + + f + + + x + + + + + f + + + + x + + + + + + + + f + + + + x + + + + + + f + + + x + + + + + 2 + + + + 2 + + + + f + + + + x + + + + + 3 + + + + + diff --git a/doc/sf_and_dist/equations/roots3.png b/doc/sf_and_dist/equations/roots3.png new file mode 100644 index 0000000000000000000000000000000000000000..a7631f6d7d492caa79098e4c2810e1d1943474bb GIT binary patch literal 955 zcmeAS@N?(olHy`uVBq!ia0y~yU=(6tV9@1YVqjo+%U8UEfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|>mi^mSxl*f=lI$MHJ@1A{`cN02WALzOB6LqjtI!_WT=3=JEaktaqG?8+eL>BI9%TP{Qp1wGW+?8D<_ng?mF21e&Y8? zB6)3uqR;v7ziSy7Oe!8SF>Lv9kd?vakUfaK80j}E}Nz!|9p;DykKt3>P@GXSJYSD`tm>H-eM=|#8*Yn zH*CAMheN=i73# zG2zqvx=Bkv`-aADyvJaasaWXQ_gd2a*`{v>rnc9o7I&D*J$75q)v)jL_EUS}mfd^a zSJvnEW8>YI6U<^;s>{zN8?2wc^3%Vx-=bUhHJLH2_^9l!RcY9C{^(PMLit0Y2?sw2 zFS-$^@x$`pG{suk^%vRiEdI-8-!OM^uT8Q2wCK~xs;A86oD!W{Cy*EO^{Hd|!&7@4 zk{#wY>@$yf`oXB`(p=?BQhyh0O|M&0loz)lBiK@{uXK0jy%!Jv9F@2ru78{3hC}() zVmA9X-y>T2Sf*uM4thUf-tL1!H;booy)Y8JrTw~Ox6M`k`%f#E&pj6NIBjO{fxEW@ z7&h0(-D*$g$bBYk>%MU2+bL&mikmE1bNNj1sR=hbJoEfgR)6_C>3HDIh0E`nU17W7 zsCi#;>70TznRKR^wT>_TreB^GE49G1i7Vr}meT^Sb1S|~;dEYJ$9J_%`p=9S`yk)9 zyccdA{B7nJm~}2l%H;Fx>pYXB7c;L}J45Q0OK8SzjVJ5xp4T$o;0jBa&5Sv zX3%}fv~bs-Si9r5HzhVQ>1_G9G%JKTsqVAX)xBH9rM`1*xI5QD?W}U~tN9!M=uJ4k zePPbs^L+kyA8N=kYq#Ecy#L6{O%Eik${nOP#7)UkKDL7`;{sbl;15;?hX4PW89IGi W79^}plVf0DVDNPHb6Mw<&;$T{!oV^B literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/roots3.svg b/doc/sf_and_dist/equations/roots3.svg new file mode 100644 index 000000000..84eaa5965 --- /dev/null +++ b/doc/sf_and_dist/equations/roots3.svg @@ -0,0 +1,2 @@ + +xN+1=xN−f(x)f′(x)−f″(x)(f(x))22(f′(x))3 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/roots4.mml b/doc/sf_and_dist/equations/roots4.mml new file mode 100644 index 000000000..ae9a4bd0e --- /dev/null +++ b/doc/sf_and_dist/equations/roots4.mml @@ -0,0 +1,67 @@ + + + + + + f + + + x + + + + + = + + + + x + 3 + + + a + + + + + f + + + + x + + + + + = + + + 3 + + x + 2 + + + + + + f + + + + x + + + + + = + + + 6 + x + + + + + + diff --git a/doc/sf_and_dist/equations/roots4.png b/doc/sf_and_dist/equations/roots4.png new file mode 100644 index 0000000000000000000000000000000000000000..da27c2ed8e9ae603b1c8a67ba5dfde73273c336a GIT binary patch literal 825 zcmeAS@N?(olHy`uVBq!ia0y~yU}$1sUFtDUM`Z_W&Y@CEaktaqG?8K>lV0o)-0o|Np0c-*80W0@qU4g8Q~RkK}A| zU%z1a?QgaJ8Kjj8be;!)30UIVy1Mj+(_!uX zTBqa64tf1%QxBAKxc!!=Pp)+PG>uCB-DyUw+IH7t-Fs!qZY|>d#=Bi*y8QE$75|DH z{_`)@wYtxAT|dJA{F*cG<8v)~$}b+jA}}dpvvXVXy>3a<)tNInEjHY7ZB}2+=)i2k zkkP=#z7Va(-h+27V=63O~8}c~QGA|Z&?md6~ zZ}$s_*FR?GS+kX1Tza@_>H6Kz_ocjE8^6^5<^7&dzL}zXR{ffKX|4U@d)M#2?5RFw zQ)%^VwL$&yvs}wQYu?p6y-w!UX-U&3z710a?PpDYvcc18hjWbTK@}gFyQkyM?9k;? zZ~l_=(u~LWi+XM8*XyjQ(rH`fPTe%ITDPsmUEu8BS7!dY4_=oEE|t$U z*OMMKclRw~nYRY&BPj+G2WCx}|G+$hMT%Q5Ph)?XdB}XtJRSS!!WDmhUfNZ4>R|VM zp}AJw^F@|kVV)^lbMN1@7tjCiZ~Q%-Ss;~3Yo^3wwYqCwIyXXp$Lqh%m{2)$_K$C0 zZ`f{o^k9|8`oPU=W}SU})XSze-{4~KVVSdY-kqyxZdclyQ#h6DVyO6=9`g$C<68Nh z>k^&neyw_*)c8*_`tHd$PODZeyy|jii*s8uTVT-ty +f(x)=x3−af′(x)=3x2f″(x)=6x \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel1.mml b/doc/sf_and_dist/equations/sbessel1.mml new file mode 100644 index 000000000..6550608ea --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel1.mml @@ -0,0 +1 @@ + z2d2u dz2 + 2zdu dz + [z2 n(n + 1)]u = 0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel1.png b/doc/sf_and_dist/equations/sbessel1.png new file mode 100644 index 0000000000000000000000000000000000000000..d675670f9bd008225c7556d8e0f0eaac165e7fdb GIT binary patch literal 1836 zcmeAS@N?(olHy`uVBq!ia0y~yV6FMcNvSi7F2M=6aTuMqxOiWCE{P^+V!-pwTrZ_k_ zNJvPWIC0{@fdg;eyt#AdPD)D3gb5Q^SXg*?cnk~-8X6inI5-w8Sg>KkhAmsRC@3fh z2ng)ivnL@TAtxtCM@L6QL_|YF!^XxYCML$i!$U?!CL|;zBO^maMa9OoBa4B7O~up2 zF(iZaZ4`I7l(oP)rKHe+a8@rt@o+git`(wtb8El+|G&z5@^Q7tY7=y-yQ*dt-#Y7O zbiYP&)5#Q`cf=J8jGIK{mK~gw-tlL~tOQpFqp-SX*RFWaPv$SoY(Ai4c`4*w z-p@(bdG8teY+zEDHTBsizU*Hz((|`JOc1;(b!_3cjf~On>epCurRFtNHvaJ`=aHT@ zRWT+c_s}hwkaGrX$!|1l^*2asc^|XfW|%*x*F5Ujk>u^xhkq&L&RKcyTl$@~Po;Pa z^aVCuF=`IwyQ!AJ=CY`kPhh{-xz7yG-*Uzta+sSu*;e4OeQZ+8GNrp3+39=V#!K&v zzsK;Iap5`Vl%rbd`uY;dCa=QXYJd?OrH~+iu zO#itJ8|Hj=irBj&oqubQ!F$_PHy%Eku=z__+;8ig+0FVT8La0vrYwoSSowB^bKvy- zf)hZhOa1R$TOs;ly4G{q?yl{h<5p!n<0>wl`$Rk=n_<^Av^P1pMPuD8#lITk0+`S-XZol!L- z?y!=g!lg>Ddd=02dk^2*{H$gDFU@ncKbH8+H1b&65Mup4rDN`eO1qui8!fhkXJaY0kP{DeH7;3}xlPVF z8n&Qp2`k9!@!y{GZ=AD-gK!W|S(A9GpTaAQX0tIbnqSurO4 z&Y7%Tcfh}%nQeLG$+{C~W`wsI?K+;S==jKSfk?~#pRc?3>o~6Z#_@=EV`4%OvxUb@ zDfX>QL2qsLCT=j_$$h)+;5?T(?2O*Ov!6$AFBRJNqA;i>@Hgl5#eWk5m<~BlWe7?- zxqHKN9c;)<< zi5t|fX(&HA(ak!gVP)MTPsa~u7x{;Ni9Y1dUc~XK!YyT$_SQv9eyAKbo_~jR^~cW* zofFs34p({8Y5K#Zwwu$fRHLJMLdfY~&*n-PY;_i9Ubb%cIdk2cGP5F1FPxRI)6IFq zq|YH$Cl5qNg<4e{(pdjwod=7`wIZFOgq?Ch8zy~@@GuII(3!$hI`MkZ=l*^TUe7g| zB9YbH(_SxNG2vamQLij>RZ`gh@JYPZjLWC)=l_u3)xYX|ky6n^1_lNOPgg&e IbxsLQ000Vj#sB~S literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/sbessel1.svg b/doc/sf_and_dist/equations/sbessel1.svg new file mode 100644 index 000000000..3c282a2dd --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel1.svg @@ -0,0 +1,2 @@ + +z2d2udz2+2zdudz+[z2−n(n+1)]u=0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel2.mml b/doc/sf_and_dist/equations/sbessel2.mml new file mode 100644 index 000000000..7d28c37cd --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel2.mml @@ -0,0 +1 @@ + jn(z) = π2zJn+12 (z) yn(z) = π2zY n+12 (z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel2.png b/doc/sf_and_dist/equations/sbessel2.png new file mode 100644 index 0000000000000000000000000000000000000000..2820fcb2e38aad47c693e99a49fd15e1bb546f3a GIT binary patch literal 2178 zcmeAS@N?(olHy`uVBq!ia0y~yVA#ySz>v zc%h)65EB!#XV0EDZ{EzAGpD1YoG&D#^NO*X79655t#>VE(ojV~RAvbQ^ICJJqKtRBX6)S3LY9b;cDk>^2T)5!l z^G5~-_9{;o z$B+ufx6yy2Kk10rUG|#2*(5ge=f1pnZl9?!KHJPj-O86vSNPwl%&)z`CYR5{TJiDeV!1s zqUT-p!oyFEZaixf_`H1Xl7%ZGFZtYgcz})nV}?}xk;2K>bzbMMpQ@DomdS@P>_9h5 ze#}h82K$!6GpA4guKwS!!PU2eZN;7?H}7gOnQ<-r)p5#u)?S^E zPOBEK&ieH}PB+@SdRCP2toC`;sWA-hH!dHu$j=Tv)^%**N5QHKUrdfJSgy01qfaWb zApP>~Kk*ljzs`BSrfBz^(A8IN7EI9!{Zx3mPww9n=RcBn=IP&P@ync+CSukq434 zn=XI3yjy;yz}8D=ze?|B}NngYH1=Vl+_Sl!m z?09@{s#w#6YT>9ynVaV7tjfqbsVuu$&|SHK>+?Cozza9UW=~^H67FOEwl`(h$Ho^A zetv6;XwvLl$(xz-%kO`Q;@1gl`WcV^b6j3s;S$}`v3Xa=jA>IQ^xIw5%6RHymE0z? zNY``nuKm5n#Z%OmPcymlbq)XQ2QR*r{XUsfbLyKa1b4&63;Nq}cV{J~H4{s)j*p@3OE2y{igS zzJ2AD2~vG`XPNusow8dzt(UJpeIvP#rL`kSWL{LBwBpPavR00+OWNGsvL7UL_x}3f zdDuoqN$S7}iI1;Td5d^-i`U#!o`3)18byZyaLVo=zdw9~?z#{C`o{Ekiw>7SQTyG;*w|eU7 zI4jRX7gO6;J}AyPFlF28Ls87xylYH1TsyEnBjIeQw#(b>by130ZKmOC1#H(_gs&Bl zeQMb8WYxh_A6~PB^MtM{jcwa2UP%zDC;>H4FTD?HcrN9l~!Y}$v`ACB4j=trqp z-;B$WS}|MepIp~;So7VA`>uHA`vnD8(|(rT{vtKO@Hz9O$}3i@MYRN^)BSeyUC|0T zX{_41`dHuokCGJ^zFnGpqJQFRoBFalH;trj6#VauirCDz?$%EC2tSq5Anla2t zPtNEb5}f?W_1wwO>h$T+2d`9KUCeBFZ})ABB&L~`kDshMdd4E_h1x|09cGTF<~gBB zx4yH*Uy8CwVteSdb@FPls+QZ9Gj{3*xh!erQTQUUS?tIZnN!UBvZh*F6wCYw!iZQ)NiCRDq0-- zXSX+Md5g+Kf%mWH@5pjmFio@a(X!xbw+Od63Da3yKAtbrY`u77{bccp_aCg9`Lne2 z-9lr5$y$DkoMx~Jv^|~@cVF|F&ax-%JF=dXT`LKnvWNNj9M+bb88a_*tguve5;m`` z5q$ZBP5i+s!I6tK%WjD{Js6#Wk zohla3a~GP`BV#DKG%BiL^)c&3D^)|8jO%^A%n-PDu~#E{_xh72wQnwNcWY78HDOH7 zQDQsMy*f>OwV}*YWewFBSC@=SPIhaZ9H!2cf3PYuWh;yOm6vynnpiJLMzF1unsG8~ z+l=`Fx2JF%+qL}RtaF{K*~B*8im|YmS6Ns5XqDr{l&ybuWCh4X>gunP67dK--MO00 zb<)*O4_7%ZOxbE0o+}qV)p@pQxGuZuImM*2p|hPmD@`Jcuku9wkzf01i~3YOmwOBh O3=E#GelF{r5}E)7L@$s4 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/sbessel2.svg b/doc/sf_and_dist/equations/sbessel2.svg new file mode 100644 index 000000000..f90d9ac73 --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel2.svg @@ -0,0 +1,2 @@ + +jn(z)=Ï€2zJn+12(z)yn(z)=Ï€2zYn+12(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel3.mml b/doc/sf_and_dist/equations/sbessel3.mml new file mode 100644 index 000000000..27960dd22 --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel3.mml @@ -0,0 +1 @@ + z2d2u dz2 + 2zdu dz [z2 + n(n + 1)]u = 0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel3.png b/doc/sf_and_dist/equations/sbessel3.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1c973dffed42f9344e43b60288c6aa6dd4f3ab GIT binary patch literal 1855 zcmeAS@N?(olHy`uVBq!ia0y~yV6FMcNvSi7F2M=6aTuMqxOiWCE{P^+V!-pwTrZ_k_ zNJvPWIC0{@fdg;eyt#AdPD)D3gb5Q^SXg*?cnk~-8X6inI5-w8Sg>KkhAmsRC@3fh z2ng)ivnL@TAtxtCM@L6QL_|YF!^XxYCML$i!$U?!CL|;zBO^maMa9OoBa4B7&D_() zF(iZaZ4`I-BP#(v!NSmh)l8?A#8x%*vtALs+ur~8|Nd9!o?J}1wPjiV=Dlxj&ROiM zJ~Mxx-|dt%jpUoT=>}QsH-rE6E~`ke`50;ZCD`qM=VjXhiMqS{63%?ryZqdupJB%5 zJNuI!)!mq7WcK-4Xw2EV2-Z{25?Z*QR8@p>CNqX{UQugc@ve9m@qX1LRsV+EL#g41 z3wO2DZZl6S^+xmv>#_@w)3#4{jMB z zd(BDdXZH+!HZUp7n)>XM{hOCI*Y>|~PI|c2$}Q;kokrd7*00ZfGBQ7S$DyvJ`c_BU z($txI_12u-d5b04;F#Z`Zl>J}H>Et;IJY$2=>987e!1QEXK&L#e9q>uu{J}>2aF3S;n$l>Y6gNz*?{mtbUuJqtPbuVSh?_%x3 z=e!2u0&a8KPjrPIiVHG0o^fUES+}C!!B+3iz1~y4%l}d1)oq`iZ@e8PsWda#;&-W` zSt{$V!skaL1!o)n+5TmD`zqPB?&r12c33^rICt)KeQWOLPr|0L3jM0$za-~g|IQ|2 z`d#wimXzxo3x(?|(&k;PbJ7htXDuq5{(P^g;7{|Mg}YYTgn8S&6LdSB9`ZqCdH>e8 z#vEx=Vqfnpi8;OS`X06APgE9)S@!S!6fYGs_xb%#?LVH%K9r7raPn=~l;c8^<>v^v zE&uW3ylouolm+rDqT5;1thAFR$8KX^v;URek5%%IHuJBaq8V(qLds+7=X1*}IOjeO z+C8ItPw8Lbk}|uu@7`{|y<*;eRf&xUg{IFnS|DT0+;HQ|>^Bd8^=(wIJH79tN7tz< zu7ai_SEQ^rQct!Ub#B8F40TwB&bTY)-FperTh_?9eSW$z;y)>6r!dg5Ne-y}!}Z z#weOqA<6sJX|r*Zi}p6At;(D{X4k)$UYu<7)P{Azkxa8n#>J)0Hz$er<12%UUyJGJ=|6`D7SUr6coI^oszuzU%fu-zMSCEmCmsTA1o#h!m3Pj&iFaa+GGgID_> zyef?l6EWNzAvk+eTJ_}*9~Vwv*cHLHwCD2?!>fVrZ*62(8BD)*R5?we_deri_kH!x z=E`dx`LcNH1~-YlU0>HuWWJKdXJ8yDI6LPm$<1Jm+AVgT-KQtz{vVe^aS_eoSGLYfm}&JgT=UAN94m1)AGS(v=4E+R z^Yf#MEb-O zzhQ`kP6$tE%;o-P{rwi&aS`6vxAYu2s1v-TW6HzJ%a`_)$bPe16y+&7Pr>MGr%Oo5 zMv-eP+>Xs;)k*$#jNf&>$BSPc6N~15XlBiMEIXx;@uIrWt`|Wo?i}}xIAG+H|1aQ6 zC(HgRDV56CMZ>tJoi5UyeAZt@V)GR9Pa9T===49F^=#IBj}DprEEByBdVTm2yy}^{ zkmOTdbE~OMJ7=ybo%XTQC9LvrZ}QTFJhj(zMQfENM&2uU5}`R`@!6>5uJb)orkck{ jhH*X1`oe$aH-F^PRp)J$)~7KrFfe$!`njxgN@xNA*==?9 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/sbessel3.svg b/doc/sf_and_dist/equations/sbessel3.svg new file mode 100644 index 000000000..49ddd3325 --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel3.svg @@ -0,0 +1,2 @@ + +z2d2udz2+2zdudz−[z2+n(n+1)]u=0 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel4.mml b/doc/sf_and_dist/equations/sbessel4.mml new file mode 100644 index 000000000..aed7dc2b9 --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel4.mml @@ -0,0 +1 @@ + in(z) = π2zIn+12 (z) kn(z) = π2zKn+12 (z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel4.png b/doc/sf_and_dist/equations/sbessel4.png new file mode 100644 index 0000000000000000000000000000000000000000..64e54148cf4111200651d6f3de5cffb2ca8e5933 GIT binary patch literal 2138 zcmeAS@N?(olHy`uVBq!ia0y~yVA#RHz>v*)6&vnV`HPCp)q5|j1wnLaBy&Z`0$~pr^my?W5I$2FJ8R3a^*@$NXVKsYgVjS zVPRpRprG*J!2I6ckLDFhN2>;>eLBd-m)J2ndLXh^VNjxNzZukB`ri zB}+<5N=!^lGBPq!Qc@BU5@cj#R8&+93=CpoVsvzLczAfWY}q0rA|fVXn9RVy9^~ob z7*fIbHaa`{k(I!_F7}Pu3QdbV4z9amz2kV@C?YV?Q zS1mYIz4BF8u-U%}oBsJczA_;{%<^%$VC>h6@9+O^-zWcI_SCvCb#r<-SL|<&1M$->?N(_% zxX$zC-cBuj%k8(-xK=R-6`a_{@40w=a>GaQpQ=mFP20NohEdanyM|LE>rGc>rh3^W z@C7WBJKt&lN%YQV+n4=X=}+EhZ2Nz4dhP8S&(0LJDb@Vl)x2}f^Je$y`EJ_5t0SM? zE&H<2Ciz{s_kX(#SMP@>3_j$1K45HmW?SRWKo{NMGk34lOb&im`z+*G=;eu9IdvKq z9sZW7y!WMZ(v??7=Z5c{6C`CRaj0+6rq{18eiq&J@YxdP50lrQxt7}Xt0(-tzoh7= z(kGTJF=ZmvrSb7S;JRTY_Kx&7SzJ(_Y0JBtDfYR}eY z$Oas>)z^G$9R0r|cJ{5`yY_kQ()X&m`sTBFdRKd|io$94gQZ)u?QM45b!a&d`7~^~ z-iII8JS7*c-~UIoieZWDnj@i=!8RTZyBEB;Fqco`1AEE#um^jiV~^8I>KkU6)>4dFg`z)0^npx_ct*Ec5!E9$4AE4E0+WmdjKAoh2wn zjH%rCNpDW~XT3jG!iN~1xVr?+t6kz-_|i$x;>jWbC+k`cHi58n)&>IH+J!EMk6&J{ zk<)o_!_LFCJG`zvajq9z`B5#m>#-D<{jbi|TNX>qYkl)WZB^`*2cNoLcf{8J-5Hl( zsUPjMx|X@>Tax-MU$Ninx}Mg zrp&fK7rGDcjepT@*;3WAuWkAlm$n(9XPC;}9vTPV&Fe0lWxprU{$jT|bCpkYt)0c3 zjCIozraQ}gRQNvk|H=j2qGw|Qzs$6^=4st~hT)Qq@K>#BZME`}b@y2AIM>}tJKB}i z5xF_CyLshRoyAIaE4I3H+O`~zdu6%v!O!_mK7X3XEbnE%a@H|Rqa$1uA|;Qv9=fH| zlw=+^c_Z6)|LuJ@>ZPr@?sseURhX~G3}9yNQg&bohL!;*Dd zC%^pYGTHXod=Jxip&koXZjI|Pm9dU3jMw#Ww(Mo`{Ex?@ zg||3N-WDbdOyIkXC z^@g}T&ZT-=()KvJ-cMd0@%o7Ml^4~ok617HVjH1;PjTt{sb{RW2tO~{v&!whc2oI` zwq>-v)D=!@RP#!_wDaD}Wrx@bmc4h~_p|$wO4%Mm?#o`S`A@%1aeXY!8c_d=%Z!(6qww<$sjn{g z?hCIxo1`w`WPD+RX57w|K1ZIKesjp<+Znpmuw{dGz179)FKttMmb_8<*&dnU7W{we2eut5mqPBX(sR0h`ibnZFMF3we;qO*WLjfe^+)Ei zVrTuiPaf#Z-1mLb@AZ>8Y?yh!Kf0^j!Q}P!&{K!J(A@4~!C!F?GN*Tc+)}voW1;>& z^Tw?Hpxtkd?3}rCCr9o2Z>=d|N`CLOG73H1Kc8GzyZGe%37fvhbQHUUPAXmc{_65t zxBJNxMTON>}vKAIY@Zo7eJNU)~sYVB(vN4$-YXX5t`RPeQ0skP{l)f=sMam*{$t@h zwfyytohJL7UQ`Q}cbe=|dQsi6J4EV!+rIWR{kJ<8zMq=*%H?9)zVK~F6P@pGp7qE6 ZWygW$*ZmC-7#J8BJYD@<);T3K0RUU6Eq4F_ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/sbessel4.svg b/doc/sf_and_dist/equations/sbessel4.svg new file mode 100644 index 000000000..5c5679341 --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel4.svg @@ -0,0 +1,2 @@ + +in(z)=Ï€2zIn+12(z)kn(z)=Ï€2zKn+12(z) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel5.mml b/doc/sf_and_dist/equations/sbessel5.mml new file mode 100644 index 000000000..bd5e097cc --- /dev/null +++ b/doc/sf_and_dist/equations/sbessel5.mml @@ -0,0 +1 @@ + jν(z) = π4 k=0 1 k(z2)2k+nk!Γ(n + k + 1 + 1 2) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/sbessel5.png b/doc/sf_and_dist/equations/sbessel5.png new file mode 100644 index 0000000000000000000000000000000000000000..8b068ec578c0183e3d907fd24bc4d462253a6346 GIT binary patch literal 2827 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 Lu6{1-oD!M +jν(z)=Ï€4∑k=0∞(−1)k(z2)2k+nk!Γ(n+k+1+12) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb1.mml b/doc/sf_and_dist/equations/special_functions_blurb1.mml new file mode 100644 index 000000000..3457bc2ce --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb1.mml @@ -0,0 +1,35 @@ + + + exp + + + x + + + + = + + + + + n + = + 0 + + + + + + + x + n + + + + n + ! + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb1.png b/doc/sf_and_dist/equations/special_functions_blurb1.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a8288ea4bc766749061a5532a856a54845baf6 GIT binary patch literal 2183 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 +exp(x)=∑n=0∞xnn! \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb15.mml b/doc/sf_and_dist/equations/special_functions_blurb15.mml new file mode 100644 index 000000000..569690eb5 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb15.mml @@ -0,0 +1,36 @@ + + + atanh + + + x + + + + = + + + + log + + + + + 1 + + + x + + + 1 + + x + + + + + + 2 + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb15.png b/doc/sf_and_dist/equations/special_functions_blurb15.png new file mode 100644 index 0000000000000000000000000000000000000000..9307b8fe5c8621ec4d8668ceb04ac03745944f0c GIT binary patch literal 2122 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 +atanh(x)=log(1+x1−x)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb17.mml b/doc/sf_and_dist/equations/special_functions_blurb17.mml new file mode 100644 index 000000000..d8910bc29 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb17.mml @@ -0,0 +1,31 @@ + + + asinh + + + x + + + + = + + log + + + x + + + + + + x + 2 + + + + 1 + + + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb17.png b/doc/sf_and_dist/equations/special_functions_blurb17.png new file mode 100644 index 0000000000000000000000000000000000000000..cb83472c18f97f9be7999941eac7e8b8587308fc GIT binary patch literal 2149 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 TaBF8^U|{fc^>bP0l+XkKUVZ0$ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/special_functions_blurb17.svg b/doc/sf_and_dist/equations/special_functions_blurb17.svg new file mode 100644 index 000000000..88e5dbfb3 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb17.svg @@ -0,0 +1,2 @@ + +asinh(x)=log(x+x2+1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb18.mml b/doc/sf_and_dist/equations/special_functions_blurb18.mml new file mode 100644 index 000000000..31b8862a2 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb18.mml @@ -0,0 +1,31 @@ + + + acosh + + + x + + + + = + + log + + + x + + + + + + x + 2 + + + 1 + + + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb18.png b/doc/sf_and_dist/equations/special_functions_blurb18.png new file mode 100644 index 0000000000000000000000000000000000000000..5de081aefec8a3b959740e4887ece3002fd7337a GIT binary patch literal 2171 zcmeAS@N?(olHy`uVBq!ia0y~yVB}$7V36WqV_;x#DoI+%z`&r8>=ES4z)+>ez|hdb z!0?NKfuZ3A14F3+1H-EX1_rAc3=HB0b9M#VFfcH%q&xaLGB9lHtN9%`nSp_Uu{g-x ziDBJ2nU@R<3~Wi>?k)`fL2$v|^CgsM4f%LXt^?O@r6naiiDXRbT(#%rCWiV_o)r@9{Uu`<|TM_wM#gbL0PK>d)o` zw=_1^&2X;Kad@k%UN>JQIo?U<*z=V~YJQ$BF*fHlIjr-jvtjGZsjmGhQ&?ZOYaZ$R z)*E7M&uijjpA`P+GhiVub2nVDyjtUUW&hh3@4Y#Wm$>jw`B4CpXWae#ZbD`=8=vR4Dvj*{ zzhYe1T-(uqTVeh(w?v5-4fl?iJetR_%~m$-#`;4#*LL*pR-7+qrPWh*$ZOM|7mNAy zH-1ppNEe8XbZO4p@lR^Q$A^Cozc*abet6Xq%T6`M*o&b1&g}$WyI3)h%6x<*R9~ z`124q$H+Ua1>yIc&ML@#k0_U1v!}P5DS_kC<)wZ8YWKWzoc>JS;TPfVT&^wkG1TUG zYUTYJlNhs~l6LiW0vm5~={Q*G7f61LeZnnvcvEqkjcaCt^Od7|R|1ptK6VStmGoNU z{^!)g-FkB>E5skvi% z1?!#TYbB1Ht5~Kfc1P?{>xC2AhJm+|FB;!d^HctIh+&`jqFQCco6{Eb8ejBNzti$s zto{9)lql~j#jCIAi|#JiYuU)9teWsyEz0t_;BxNQ0bzp2F8BTX-{2@<5U}u3run9B zaXGj9n?C$rU9f*+!M&Ro7oPp-;JfRIklchv88a8Mzsc< zKU8jO&oG(X(f?rQy#N*_t`1>eYZ)mE_O49Ue|gf&j4gMBwM0y?>=3^h<--%)pZj;$ zY!5}1MN>a-p46CN<1WMfKD2K4W})uYcCS8b?Jl?%wU*!Y?5RRVk^5d13rq!h8fKdv zKgHZT{o%&1NBqCFf7>yy|LE-Q{jWV+*|fxF1S-8stH>4i=1Ue!R^pwc7G$~QgN;V( zTt%zZTuU8i_?dPJ%>T%3C*N`6|MmrLo8&s3E;vofcp9U7cD2??snrXQm}&IzsO~A% z-W~8bSh~5eT8hg#p*Kh1VSmf+%+2qNw%Z;&`|=X+H<4qG9}XX#ng1a5!7Qn?z%;8n z+TnFq%07x6y47U6&h(-d^a%-TwZY z_xx~0{zLC>$yMktwX+Ugy2IZu%1C&j+g}Y4|E&fewA1Y_8%cLHY=8FS>et&H^DQHi zt<4{~mwjZbKBE3{r%6-$LhsqhjMcZRb5}h|YO{9uWVkMPDVN2R$hRMS@?XYj$B1j{ zC1tlL&zUaKb7X@2n!~2rN4`I9om!H-_P%*f(#GH0j=gB@C{~;_NB!`wZ-*AWRCv0$ zCCTBR*h1mvi>LGiUo^jFRr({zGxydT@wJNcP0Q4^7Vx$!*i?w{FH!vW*ZX8de)vZSt=-hX!gV8?Af6v!FKLkYj-)>sb4Bc7LQrZ{vgfoILkxU z+k*A)8&!Akh5Zot#Q%C}m%n1#+m23S#>vgL5ZZz?zc^gvJlumdKI;Vst0OTX-bN~PV literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/special_functions_blurb18.svg b/doc/sf_and_dist/equations/special_functions_blurb18.svg new file mode 100644 index 000000000..c8df28f5b --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb18.svg @@ -0,0 +1,2 @@ + +acosh(x)=log(x+x2−1) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb20.mml b/doc/sf_and_dist/equations/special_functions_blurb20.mml new file mode 100644 index 000000000..ff27b549f --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb20.mml @@ -0,0 +1,42 @@ + + + + sinc + a + + + + x + + + + = + + + + sin + + + + + π + x + + a + + + + + + + + π + x + + a + + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb20.png b/doc/sf_and_dist/equations/special_functions_blurb20.png new file mode 100644 index 0000000000000000000000000000000000000000..bad451ebeb43249f266c5224f67305792ea5ab9e GIT binary patch literal 1935 zcmeAS@N?(olHy`uVBq!ia0y~yVA#gMz@W>)#=yY995}Isfq_9G*(1o8fuTx`fuW&= zf#DYe14F|L28L1t28LG&3=CE?7#PG0=IjczVPIfjNq6*hWMJ6XSMxh?G6MqxV{wqX z6T`Z5GA|hz7}%1$-CY>|gW!U_%R$nd1s;*b3=BdgAk26#O}>JGf$f>6i(^Q|t+z4R zIU=DVcC`&xL!{PD%~<4cc}lxWeZzzmp*;y(gcgT1aSCxR6B6v<3~m0n@vEawQc{nU zd|>l30bRR}ps5^TuC5}63&cKfE(Yb$hRN#XM5%zxhk}SxTDrwfQOMzFUOJHSo_gH|qcV^1tb` ztnbH?_P*~jsgOT3mDj~!xsk7Xq3rTYaP3`=RM zKajJ5$!X{PvLFikzoZ*3U1mus6+-WiwMPjBhT^>96tj#!^|??BGC0K>8ei~@gut`JH7+w@Io z^FojJ^^T8K_PlzXaH6x|?batwUmm!gX+85e_O-h4`^Lf>zJ1Z}WLLlMpK&=s<=e3u zS)oA~IWXtwn$&frZ|kSC?YjA_8M9~P8_735ke<`F&7A#u z;;|K5*ZR3WbmG|_y>Sn}@y4~n^H131tnIe@V?OPu{ayZpata{_Jmwo7tu9ROD9$UZ zcF=gaRWtZt7)M<~Ub@|}nkhebdfUGJE~v1+RypSNQB4+W!SAgrKStchP*MM|vFGN= znDc9TB5Y4A?fJSgL7OFi;^gW=+n!@=U3!r(xwlsdFnkT@Z27E{?`}0E^3@csZIAZ5 zEZ!L4tY)x&$&%T6Iz1ESN`Cl0NqbY*9Ea|fN9)zpjU-vFW>|-A5M^6b=X3CrzllNm zVKa`Sj}xCKUs)iVoI5)~SK7Wb)!|^w$vq5Jb^0aWcp29poby~wG^h2T=$YLM=ih6J zyq&Oq>z>;|`YiDa|K7WGEmL><*s8 z)>Bb_h5DBA>^@$fcXRzQpJbtG_bz#1*cEn($0E-vpSU>wclT^l*NQi^vGp)tDU;v* zd$UFR`GU_;1-!Ld#g>f~rYcMJX`D?lVcPt=g5z7xi!Zll#4ne0R+=YtD&9CGe^QO= z$Jma?Pv35tZ?kV(z>%(`7yHf{e!0tHy5vgsg@p{2uAXc+J}dqb5Y3YPwKAykwB(b0 z@m_wHLat1(dFy@RakYE&rN?K!7`ffAeWEgd`XkM02M+Wz>LoD7h09mG5w?H%*1&9D zgPnR?%M+~~pT)N=l>a!>ZpLE!Zys#>W!K%Drc}{u_+|Hj{C3?Ng=tlx2P=e^|Fwu& z@nY|Kp-ViMAINO6w*8jtUafU(-b<<5$EIhTKf5p?JL`kO0kJn0#(QTOu0FpgWyTji zu6aDc?b}Yf7o_~ZUBP^3&La8Gv3Glz{@)iC(L1bn|6&ez*_@eiyz3+T3N&o1^iK*L< zKE1H{GiU3ft|i({!b=$ZbeeLF_KF=UR@l6zrYKncphf$M!d>2ehmJ?e{FnanGw9R0 zAIgENvsOqXnS5JX>A<&AOv+Mao5I7Nq6X)da`>^Uc0Uqv{2||dcI%Ws*{v;Z8(&Yg zoc8GCmnzA(SzfztJy9~>UH5$Ywi}JxjxGQH)PT)*%c=LwT*lwTrXD^axP-%R0+YqW z^EaBl7A!pBKJlf|-khn6*nX|GzMRcJP4$tv_`Qz#GwThjPn>*aG^2lcE#I%I&PhL+ zWCM)f*p(lYd(qgwOu9)of6nX^yT#f(7v5P_B*E=-(`dhvg(KGk7rSKPqtjoix;_3` zk-&F&_eKdet-xPfj+R=S`6Zh_jn7nNVoB6S~6D65VpUvX= zJ-_|tzOd8{1_6`Qp9`AgZfu{l@7p$>U-^#n*}v%P^JK_1D{-l4{8F;uYIRx|ARE1~ zgW(aw4UXL&O~tZLYVL_^Zz-FvU&RE>Ro!I?g zMS}JxA;(20wQh7Nwi~z>I63cC>e?Z&jKeSE5BDnWKCW37Y(E$n7#KWV{an^LB{Ts5 DKe>yS literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/special_functions_blurb20.svg b/doc/sf_and_dist/equations/special_functions_blurb20.svg new file mode 100644 index 000000000..e8e824e56 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb20.svg @@ -0,0 +1,2 @@ + +sinca(x)=sin(Ï€xa)Ï€xa \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb22.mml b/doc/sf_and_dist/equations/special_functions_blurb22.mml new file mode 100644 index 000000000..f5c4c91af --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb22.mml @@ -0,0 +1,43 @@ + + + + sinhc + a + + + + x + + + + = + + + + sinh + + + + + π + x + + a + + + + + + + + π + x + + a + + + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb22.png b/doc/sf_and_dist/equations/special_functions_blurb22.png new file mode 100644 index 0000000000000000000000000000000000000000..474c6a0fc3c1142530eac8725a3c87475f69b251 GIT binary patch literal 2044 zcmeAS@N?(olHy`uVBq!ia0y~yU^vCVz@W>)#=yYvUggUq1_lO&WRDU|>t~c6VX;4}uH!E(b|-7I;J!GcX91fH32|H2De!2KHc27srr_TW@1{ zJ48c8?B1>0c68Z{nJQ1uE4|7KYMdI7E4lKDT4JQcjI9zR#Eg>FCF7cM!&-&PaQhMG*KePhZTVSJ~5wh_Sin*nfgZVEOYKNKV_UU z{qe2z8Ox2^rJlb_SeG*I{GaIEQ5UCvEI5$y$*@?YSaaL_BtPCAVIr@bpYfjAr}%Y! zg5IX`X_@=AtvKI1b3Arv`R({@ec$u$1?Q9QrMZUQ}hkX0fjMw5*p3gL!?IhTmoVe-A!9+2|J8m~Gtp34%c_#0f#cSR+ zo~eG&@?K5fX1CgrnqBiPC-3a8Y%RTKFy&jvB_H>1B9k7x9^ZBgVZ(*Er9OyQaHwU5F9@4O#W{xxfR z-La^nnNuLC>Fxc5y*K+4|D{^K{QqG4nd%cyV!L%~#N;-glg^ZVFIp7aR+-Lt{+dfz z%jpkuwL$|$3O7vN+4$3frK&rzOz>~LSap40vaR#24d*x4c5IUAnxt9AzT)N5f`dGt z)LuL@*lrY`^v(N++_$L?Y1ScuB84CLDlG%AAL^X%bJWx8OzZjF;uDNt4MbamHKfmW zIW0|0TeV1Ijv{BPb3$3?`vS?-!&^NMir)&BJwH80zjM*aBMX=8i}Ad7W-s@uz`Rh` zz$2|Qq8ESst!`y8{Zz>XRg;{y_`e(8B_z*(zruZPy4?5Yp1&-)e$_nN`C<9DgXU51 zeysWTdCQ7L8jl_cJ-fT%cK)#ykCJD9tlpfc#<|b!XY zjr`8~ds>##iHlO+!nSJ5fsv2wUPM(YB4mC(PukF9CQGRI7qAd|zl0Ap?PEW5? zS*Ei_?fq}DQ{^t6O3qu16`X&oS6a+DT^PIdREk!iex-c0>)AEm57ujRPBA)Oq;h6O zRl8YV`aIt_vxD^-{gsP9h2FSqxIWV3Cg;LsELNMj7T-H$^X_YK$tNb8?DkV>s}usY zf4)npI^w-S-EF?$guR^`a;_Qg@62#EVpl0m^IW+|ja?|qd!OI$eGRWur`+{pjNhpl z)M)gB?`XwKvqNuIab$f7XyVyA$?}&IV`)d`PM)t{!gu<}KKVbfW<#Uvis*g8I~$nx zO*c1H=apQvPq5!K-;KbG7+qKM}b3)BSbe z`4ASRNm8Y;7Z=ag?&kQ^qjbeu_f5k}jk>lM6&!v6Z5j6` zBbYZh@X`duTP+teZBj4uzEk+VWV_Xrw~9>~$L}BIC=Kqb`tyG6@v`EdCjt^@?ri6p z<>Tt<-1Z{nb+2EC-3~W}Uo3ZKb4Jcsa8vQq!~5x>hZy^}^x8>!DHv~G-K&xG+0!GJ zPowVC)en}Foa~iPY_RWt9or;qG%J?HUe))-xn<#3n9B6Jud6Q8sB6n$R`p+^huDF-}O`KN^Rvzhm-x085?=L-H7Nh&Bnns@m944~9 zxuvmtK`g(A^pC#ke}oH2uQA@KRdGzOEv{ROii?99OUXeCX2h+W~ysE9>>< z6xUBPdvn-y|J$&s4_zK?YM6WaQE8_}*McjOi;R^2saIZHHvi=5Up2G$h)BrqytMo_ zQxnUjgPRNPM$MR{D`9!Pe(nPKI^BY^ZG&bC6Q@M6qGw!-uyM)lD6pmTh=!zW_3bq<{b;_*T_7cVr6l$ z(C!b%WzF*kYEGN~vzPumDNxdnMUVT&(a1f1jKQm?ZF+gx`@+hylstno+g2xCvu9m= zvEXf1Yv(7uvi<8`Uar=#R=*;%_#f+v;`Xk#LoLt5HNARyO8+sHakV-v3|P^>DBwsN zOJ>-i>r*&in0>PQ=qI!5+Xkhz6MVQ%{+-0b!+B+o)5q|ufv$lvmp&L9r10w3=dQEh zzENsb!f4|v75IXwY?Ve=9^-T#o=_3j?e2=)H$+*bz6LE3Y}H8!7x}~ee8*Y_ztm0I Q3=9kmp00i_>zopr0IB)Z>;M1& literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/special_functions_blurb22.svg b/doc/sf_and_dist/equations/special_functions_blurb22.svg new file mode 100644 index 000000000..b0068b889 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb22.svg @@ -0,0 +1,2 @@ + +sinhca(x)=sinh(Ï€xa)Ï€xa \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb5.mml b/doc/sf_and_dist/equations/special_functions_blurb5.mml new file mode 100644 index 000000000..b0f83628a --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb5.mml @@ -0,0 +1,35 @@ + + + cosh + + + x + + + + = + + + + exp + + + x + + + + + exp + + + + x + + + + + 2 + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb5.png b/doc/sf_and_dist/equations/special_functions_blurb5.png new file mode 100644 index 0000000000000000000000000000000000000000..68ca1262c307a0cf187eff5253920c5b7eae395d GIT binary patch literal 2043 zcmeAS@N?(olHy`uVBq!ia0y~yVB}z6U{K{?V_;y|x4C>V0|SFXvPY0F14ES>14Ba# z1H&%{28MqJ>Xdc;{&1urTnIob$_GIzKbEb5e6)KSrpF5-A)K@$_R;XDD?UWxoY0wRvA zu6lwtKN;Q3wK_Tua&xX=v259}Pyeg$wq@JWw=J(OE1O*x|7mI3s@9a^O2`l(abKh{y>6}RL=xrdJptxJNpE&Zg~+jL^$axD(m+6AiV$6gxV zKFBcZ*tV!uHA#!xY^1Z}LpiLt)wy?b{ui=)a3<#8q(3zeW7e;8y5VUNQK4$@FBqqA zM?>cA+r@?F_8mIUG;itZf}V|SJJVZaTa88FdMq0!li>B_Rw zE8VNhy82twi#mUH6!dWD{~_Zc`D$vCpnfL9L ze}Ucm2MRyBnjh$_|IGaVY36@lzJ@%%yN>5_L|an#5#n= zUG;lYbM5Bn*&L5ZzUy&rQsRWSKVHw>rOViS$kjNRxopFkT%k?;`Q8(27AdUpDSon& z%gM0+>E>m(7V&C-&stu8;A!dp4?OQ?)(h`@b7r009ljg0pGy1P6`J<;Q%rsPMmf$i z6@RlNH6p)1dn9sFo$CEZ|64T9Nb%xoy=QlUHP|6?)ctw!g@y6cJbGowJoczbNhSnkav&in!OXA|2+R} zvz_`MnPeX8^_t_GmT%OvmM^%e=<|b}&miK9x#jWYALI7U*;U_D`ugFX)HSm;-ze=_Ic@1* zJ-#glD?C=zEK=z5>7JVI$#^s%b%L}sXcH;LJyz1iTH>6_EPIo1ouNk6P(-cjS0a4Br6e-6tjW6d}o-*=fm z4#ZWdM@oK@dUM!6ak-AziExXn5&2E0)a{s_zLd&II8c2df?GXCVZ)I_mwxUp=lkaN zcV)~2qn&p{+S8fbC0;*z>DbJX_BQm~-c8jT{@%F8dx-bY>YmCfo|zD1@?K*6W$$W{8crt+S#z@*@3oPMn*ODrqAvCMWvt64Me?M)WXn6Vq)Fm| zM#tAVSLZJiT5-m>`Q5jD=DHsiJoS3#d09+3`AWoUj-5>wJx}de*%AZ(IGEM#nHgNZ zccY`&;S)1MqIOLD@_{avdk@5q1Z z8&uTqwDG!TN2HFRU3TYDz{`<3%eNSw` zbLHtw?-OmVMa;gXA=>Mzoc_CE?ZK0C66+WKO;}m1_vz7nGqVC_E=J4uAN&qfyi|)% z-Eqa;hxO3xhq8`6hr=e%-eEMy>v{h2ycL}1wnTfM?R$P^*?pzQJo+4SAFg4$7MS_) zMw?B&F_Y7TRP!St&wpuO;;eW$?}=Fj*Y;zwD-G0ERZMC%QTwj(O6*@*QhnaUt9DOw z4JS49Tzn$un)#6Z)Y}i+wyaVR`m!d|`(5A^dD~AKe6CFwy2{#<43EFyP8MlxyngCz zn4yLUm;8qb2ahd{+{e|ri0y&w>qSWc8X|Tdnr`lkixn2_c3SA5@>JouHP3gB1FJ(W zzNo(zv_!fho|ETZ#r2b`?`=G(CHMEZWmidZ +cosh(x)=exp(x)+exp(−x)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb6.mml b/doc/sf_and_dist/equations/special_functions_blurb6.mml new file mode 100644 index 000000000..b643f1ef1 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb6.mml @@ -0,0 +1,33 @@ + + + sinh + + + x + + + + = + + + + exp + + + x + + + + exp + + + + x + + + + 2 + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb6.png b/doc/sf_and_dist/equations/special_functions_blurb6.png new file mode 100644 index 0000000000000000000000000000000000000000..5cab2c36953ff2463c8af31cef8539da152a7eb9 GIT binary patch literal 1885 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 BiM;>- literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/special_functions_blurb6.svg b/doc/sf_and_dist/equations/special_functions_blurb6.svg new file mode 100644 index 000000000..fa50ed50d --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb6.svg @@ -0,0 +1,2 @@ + +sinh(x)=exp(x)−exp(−x)2 \ No newline at end of file diff --git a/doc/sf_and_dist/equations/special_functions_blurb7.mml b/doc/sf_and_dist/equations/special_functions_blurb7.mml new file mode 100644 index 000000000..c6972d777 --- /dev/null +++ b/doc/sf_and_dist/equations/special_functions_blurb7.mml @@ -0,0 +1,32 @@ + + + tanh + + + x + + + + = + + + + sinh + + + x + + + + + cosh + + + x + + + + + + + diff --git a/doc/sf_and_dist/equations/special_functions_blurb7.png b/doc/sf_and_dist/equations/special_functions_blurb7.png new file mode 100644 index 0000000000000000000000000000000000000000..3d47c9ac4e7c6cbcf2dbf7adecc16da1f48a9444 GIT binary patch literal 1857 zcmeAS@N?(olHy`uVBq!ia0y~yVA#vRz@Wv!#=yYvY)jN>1_lO&WRDU|>t~c6VX;4}uH!E(b|-7I;J!GcX91fH32|H2De!2DTZVE{-7;x8BB7 zc7%pX{9iU_=D!JtO1gTA9M7)3s)GP-pZQYAtt#vGyL+t^S`an%zPbt@9sUL@4pZBe}1?3`JM9T=iblz zp8H)uQ{-XA{GW+O43lS;8*f+p^Nx9@wo+du<71nR)Bo9vswSvQu)a53pTg($VQ=z` z`G)g5EZ({HNU!{F-rT{CW&qF^FA!BmU^DKiJ#}f@7dKdM{4F+PQ2MDS){!AT#<)mrxC$eoXY{;(e_!{}i9NOc*pxMX>t5Wi zm~6?ktjS`-S`k~xDP~npHGYLX?uT+RH5~8PuY4hDrc!AlQ?`AEdHO-iH7Z>h?muPr zv-Pb!^KChcjf`5z&uv|C58Gy#JpLFtCu;Y(V`Y9vD|5DO>(ywF{M|EI>e~99EEjL{ zy_YIl{b4O$yY;W=t+Utm zea$%hYc1~%IZv(J<@*As-!I6$TadykTM?1|d(Lx-InPge-MM0-^)6`rw%`y`m6=zk z79{;^+qojBFXvL1_1bNx<+;x6pIMyTx1Z;i-jB|I30?8L;aqJh6557gC->+sd9hWZ z-$*`fpO@U#vaVHaE-@ zOHHeFeYW)s@08l3vCFQONh){kj97k4PoC{T+xt&DeJt^?V?p0U z%V&n&PVLDOEmCYOzLD=D-@+I-P2 zY@u|R%WTiBa~J8X2r-L$Fms~$qW^a{Jq(XJ-pg#syZKeu9~}k~^1| zb+xQ((}JLz6~Yxam6h{d>XkpoKXX1)yvA|!jQf*6f7;NZur%teYLV9Ud5Y?B`4e1^ z#_nIS?X;!V%wF*;DQvw@lL!|;wGWpS~5v>-jiSMT5}@T3)|gd`H^0<-f!u>59=-F&sX?#sVSo)<#PI= zjemsy-VzKD*zXkg!w@0FiEMO7ASP0rdqCt0q=l09jPs9@gGecFm150Wfe_VGHlSf7aG zPTzM`Kj*DXv&QTDEUAw>h1S#ud#~qS7MDA{c*~;L^tY2QeBsEx-Ll3!;2AD?X&w^Uxg=)C@!YLV_0=E=GzPj0vQ<+JVE%q5HF>YPe?J4fkO zAY*M(>XXnfKaV=O7$1@R)B2PDGjEX>TTXg--(8-MrUx3QM%Hb7T~n9+e96pSbuUG* zfkzr`C;rs5Oib*Ybf!r-i=DquIeoA6&HbW&4>xW}m$;b!c8 +tanh(x)=sinh(x)cosh(x) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/spherical_0.mml b/doc/sf_and_dist/equations/spherical_0.mml new file mode 100644 index 000000000..72c54cecd --- /dev/null +++ b/doc/sf_and_dist/equations/spherical_0.mml @@ -0,0 +1,81 @@ + + + + Y + + n + + m + + + + θ + , + φ + + + + = + + + + + + 2 + n + + + 1 + + + 4 + π + + + + + + + n + + m + + + ! + + + + + n + + + m + + + ! + + + + + + P + + n + + m + + + + cos + θ + + + + e + + + m + φ + + + + + diff --git a/doc/sf_and_dist/equations/spherical_0.png b/doc/sf_and_dist/equations/spherical_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c16f1fd7591d1115353e85f83d0385a4dd043c28 GIT binary patch literal 874 zcmeAS@N?(olHy`uVBq!ia0y~yU`%9SU@+!jW?*0_6!2Wjz`($g?&#~tz_9*=IcwKT z1_lPn64!{5;QX|b^2DN42FH~Aq*MjZ+{E@$C6t0AF7M8trOMXwD=yd)jFx2mN-lHx>8TC z!dAxi@($r^k|8UKO8W22+hFnVG{^tTO&&K!f*^@_1AnAWuj|)BMtxCXI6^|B^|O+ z?amD-WXKFom=j;{YqyB_@6BnOl5*0gT6O)6+}{u^+xK1l=*e~S)p+hy&G~D#YS)xC zH_qG?wrO4ec6;cd(gSZb{Zwl9dKa{5?;aGyxA(!=k~(^HPF z7g8%sOp4^)_}@JF%AuTt7doANXGglP_L5Cfsa)4wX{V~qCHqzE(EF*joQ9n1-yT{N zIX}oi_~IQ$g|KbP?i{bL$@%|CF#o*PO=DWT@}&7$uAlC1{-en^Sf) zZ^%&E_}M)Dp7)Mdhvu&m`rC4K@147!Un#BWINSW8!KFSbpWQl4qhy9n-&>)R6H=~5 z{_-e`JEmGF5$HM7)k3c==!Juj_mN1ekP~0R^*2wMuwKhyeVnvpt zzuy;iUiLdGHeY&{NE#Nlg@zsqN&4VyY!@?emF}GD*SaDK1GCTau&oi;7bdiu!~D@c z!E4~4DXk?yfpf9;l8b2mr{elxKamEE`L>Ys}(+iUiD&e-+Z z|L?V1QZ1F29S&dKps##p#;ZH48tmt9*kJa6bzkVw?f+bkao%tLP|jR-$nOTH^~0x} n-NI#u=KK9Py +Ynm(θ,φ)=2n+14Ï€(n−m)!(n+m)!Pnm(cosθ)eimφ \ No newline at end of file diff --git a/doc/sf_and_dist/equations/spherical_1.mml b/doc/sf_and_dist/equations/spherical_1.mml new file mode 100644 index 000000000..ed28067c2 --- /dev/null +++ b/doc/sf_and_dist/equations/spherical_1.mml @@ -0,0 +1,85 @@ + + + Re + + + + Y + + n + + m + + + + θ + , + φ + + + + + + = + + + + + + 2 + n + + + 1 + + + 4 + π + + + + + + + n + + m + + + ! + + + + + n + + + m + + + ! + + + + + + P + + n + + m + + + + cos + θ + + + cos + + + m + φ + + + + + diff --git a/doc/sf_and_dist/equations/spherical_1.png b/doc/sf_and_dist/equations/spherical_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d3905091cabe9ad0124c88bad311638887958191 GIT binary patch literal 974 zcmeAS@N?(olHy`uVBq!ia0y~yV4TCiz+lY5%)r1fWszSC0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMa0d8fhuR?2Qu20jOkSt^(V6@A1JZVm{!SkXP(-F9xj=@dfo!A z(~s7zS zH_lJo{(O4V;R87)8GKO{dzL<%GEGZbZHhwGgFkKm|9+OVTBG{-X}E2X+2#NdZ(cq> z?Y*D(x*y!w@+s7y^3U#Cm)2|gvNjK&{W&e*b@=bqp6}m8xW3untopb}y&$qlo~>h@ z=lX3t^Dh_vDvjt2sm+)6P21ai_VpblpSX(`yq+&H^O{{~QPcw!-PJ!K z#h9sa^!c5cCe91;qR(z3a}aINSfmThaNHGa2V zIW75Eii`i8gF+GfHQKz+8`=AIKRuCBtTbn#u!_3N&5hcL(`$lloULWHoO&N?+SV&v z=ldyXQSp_a#L1TyJe%}Nd5iwGiDfIFwP(9Z%k0*aXMV1%ZToqB%cTi92Sl2-zBT{p z^?gls{<;kZnbUtfPQ9yAB4nA6cCWga(_+c3SuRB-4~p!jd71>j-@DUj&Yoir&cEob z%YL=jeEN;;VK=RVH#+(^7HLTo_%$`}ZFjz1*IbvkYyST~+!p$^C!3ScOj=!?&*aC- z$9{9)@|XX;EP5_()j$4B`hkkxsb@m_jUK$NTPa<@bZ$dt1}LqoKVX^D@L8`{0YnSC f-~On4fZ^fx`R)IMmuzHUU|{fc^>bP0l+XkK#>Bq2 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/spherical_1.svg b/doc/sf_and_dist/equations/spherical_1.svg new file mode 100644 index 000000000..bd67f5989 --- /dev/null +++ b/doc/sf_and_dist/equations/spherical_1.svg @@ -0,0 +1,2 @@ + +Re(Ynm(θ,φ))=2n+14Ï€(n−m)!(n+m)!Pnm(cosθ)cos(mφ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/spherical_2.mml b/doc/sf_and_dist/equations/spherical_2.mml new file mode 100644 index 000000000..4ce0d25e6 --- /dev/null +++ b/doc/sf_and_dist/equations/spherical_2.mml @@ -0,0 +1,85 @@ + + + Im + + + + Y + + n + + m + + + + θ + , + φ + + + + + + = + + + + + + 2 + n + + + 1 + + + 4 + π + + + + + + + n + + m + + + ! + + + + + n + + + m + + + ! + + + + + + P + + n + + m + + + + cos + θ + + + sin + + + m + φ + + + + + diff --git a/doc/sf_and_dist/equations/spherical_2.png b/doc/sf_and_dist/equations/spherical_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b6488853fdb8b8cbce9a6480fd688141156ea92 GIT binary patch literal 975 zcmeAS@N?(olHy`uVBq!ia0y~yV4TLlz+lY5%)r3V+;GpAfq{V~-O<;Pfnog#bJnhx z3=9mCC9V-A!TD(=<%vb942~)JNvR5+xryniL8*x;m4zo$Z5S9BI0Jk_Ton`)Y;0`) z|NlR$`0!^21_tJmAiv=M{~4~I;&o(TV7B#iaSW-r^=9_VrdJ9)Zq*h4+xHpwMKN(k z2R@v2?$h$_T)vz8jw%1x_MmJBr_AZCz2&)mOS!wNyORrb`cjj1?tJ!Ex360GIHGFf zg#>3+3mcjq;ullsyEyF&s)@)ZDP6Jk(!x)@wLLI4SG&@GW(4W-SKK$lkS?~ z)OnF_>H1d(7g?P?z2QrrXN=^=1+Sc1CM+v2nSSz&qU(G`ohwy&rz6wYHu^7}CZ^-q zoj6fud7|M;pTkL3r|&tgVeXc)QPR%3H)&>-n%I>k6=yEbu=}Pqz0FJev~FaY+wn=6 zPAf0+N&3pw2fedU?a-=o(|(vTMwV)6Z;W{3`S@n6Qsx0OhNsTWX;y$YW{E?=U zv2$<9H5o0|>B>CQ3QX>leXf#;?&iZ^UF{ig@9W^qxW!9^*ObdM;XLd}f znDgnnJ1drk&8@zf=(ombdyplY?SrS6+LCAXu~v6EN!L2w-+t+O`agCZ|I!sLM_-h$ zF4pfmy2Vy}<-X-p{u}9>xwxQw(I?gjrr&`#6O-oW|I%BXT&Qzh+UxkE2pLF +Im(Ynm(θ,φ))=2n+14Ï€(n−m)!(n+m)!Pnm(cosθ)sin(mφ) \ No newline at end of file diff --git a/doc/sf_and_dist/equations/students_t_dist.mml b/doc/sf_and_dist/equations/students_t_dist.mml new file mode 100644 index 000000000..c318843e2 --- /dev/null +++ b/doc/sf_and_dist/equations/students_t_dist.mml @@ -0,0 +1,24 @@ + + + t + + = + + + + μ + + M + + + + s + + N + + + + + + + diff --git a/doc/sf_and_dist/equations/students_t_dist.png b/doc/sf_and_dist/equations/students_t_dist.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0a239ae6d2cb6b241c882642729a27075e0270 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0y~yU?^f>V9@1Y1F=}`;~5wjSkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGficNr)*vI+~j@vlw9Q-M^7AF;MMr8POQgg!-5x4>I*8gIp^-p z+nTQ7rj-~fy*oXSFREEtRGFRm)`ZNf8?zFoHaaXnx0Ru9%m1kFzfIr0s5H35kjcYh zaPhjw=}fkum=2++#p{E5VxEMn&6Ca)6Oydd4)y7|$(^%zWjOzW>q%YvGG1Q|6AQXi z=W&@;WP{rzL#x!o%59=|o@&VUyy)@$qU9?wGsU`j;<2=z{eTgZ-`K)pMB-#g(VdmU^kKaQdgVo1YX{ zhPksuW`pm`sMTwh+zd1-{w6M(vZR=O_ut1{%FGGZe%(K{zuM5`{KD-F%nVxdq}3+g TN%_yfz`)??>gTe~DWM4fiM73n literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/equations/students_t_dist.svg b/doc/sf_and_dist/equations/students_t_dist.svg new file mode 100644 index 000000000..d5d07fecb --- /dev/null +++ b/doc/sf_and_dist/equations/students_t_dist.svg @@ -0,0 +1,2 @@ + +t=μ−MsN \ No newline at end of file diff --git a/doc/sf_and_dist/equations/students_t_ref1.mml b/doc/sf_and_dist/equations/students_t_ref1.mml new file mode 100644 index 000000000..d72b745ab --- /dev/null +++ b/doc/sf_and_dist/equations/students_t_ref1.mml @@ -0,0 +1,75 @@ + + + f + + + x + + + + = + + + + Γ + + + + + ν + + + 1 + + 2 + + + + + + + + ν + π + + + Γ + + + + ν + 2 + + + + + + + 1 + + + + + + x + 2 + + + ν + + + + + + + ν + + + 1 + + 2 + + + + + + + + diff --git a/doc/sf_and_dist/equations/students_t_ref1.png b/doc/sf_and_dist/equations/students_t_ref1.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e4efe10de701d07fadced2c0a93e4af7b49e14 GIT binary patch literal 701 zcmeAS@N?(olHy`uVBq!ia0y~yU}R)qU~uDLW?*3WEpc%@0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMum$*pxJE@q{r~^} z-u<2j3=9lRB|(0{{~4ZcH}GO$VAA(=aSW-r^=9_#q80@nH~#nkFU>udv)X}aQDLh~ zU1s@iXFmCz3zxiTo_=7LvAPiB7ki-&hTq)@EN0Q!Ow)BEx)~ZU^cxje1ls+Xmb{SS@NeK_{2bD6C>f+g?L^H9NOV<;IEzn>wVTG1uUN;K2+c3W957EEW(=U`=jYO zM>HEA-PjoV_dzftGs~Y-^F-!2lzotz=8(agQn~Kx&eyjJ3u2jO)Co>!knqTi71Ef$ z^HSGWS5AXZrq`}E%$jZdjrok@g3C*HHaCd9UUNQn?cD7P9u^;GHu+&I!0UOPqi4$M zDK};)$|oeup28Baou${pLHp@%JH}&w!#?sXb#N$Eyqo*4L4JpygHCe5Hrr;wdGZhcxK6)QWJEbz6 +f(x)=Γ(ν+12)νπΓ(ν2)(1+x2ν)ν+12 \ No newline at end of file diff --git a/doc/sf_and_dist/erf.qbk b/doc/sf_and_dist/erf.qbk new file mode 100644 index 000000000..046346336 --- /dev/null +++ b/doc/sf_and_dist/erf.qbk @@ -0,0 +1,213 @@ +[section:error_function Error Functions] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` erf(T z); + + template + ``__sf_result`` erf(T z, const ``__Policy``&); + + template + ``__sf_result`` erfc(T z); + + template + ``__sf_result`` erfc(T z, const ``__Policy``&); + + }} // namespaces + +The return type of these functions is computed using the __arg_pomotion_rules: +the return type is `double` if T is an integer type, and T otherwise. + +[optional_policy] + +[h4 Description] + + template + ``__sf_result`` erf(T z); + + template + ``__sf_result`` erf(T z, const ``__Policy``&); + +Returns the [@http://en.wikipedia.org/wiki/Error_function error function] +[@http://functions.wolfram.com/GammaBetaErf/Erf/ erf] of z: + +[equation erf1] + +[$../graphs/erf1.png] + + template + ``__sf_result`` erfc(T z); + + template + ``__sf_result`` erfc(T z, const ``__Policy``&); + +Returns the complement of the [@http://functions.wolfram.com/GammaBetaErf/Erfc/ error function] of z: + +[equation erf2] + +[$../graphs/erf2.png] + +[h4 Accuracy] + +The following table shows the peak errors (in units of epsilon) +found on various platforms with various floating point types, +along with comparisons to the __gsl, __glibc, __hpc and __cephes libraries. +Unless otherwise specified any floating point type that is narrower +than the one shown will have __zero_error. + +[table Errors In the Function erf(z) +[[Significand Size] [Platform and Compiler] [z < 0.5] [0.5 < z < 8] [z > 8]] +[[53] [Win32, Visual C++ 8] [Peak=0 Mean=0 + +GSL Peak=2.0 Mean=0.3 + +__cephes Peak=1.1 Mean=0.7] [Peak=0.9 Mean=0.09 + +GSL Peak=2.3 Mean=0.3 + +__cephes Peak=1.3 Mean=0.2] [Peak=0 Mean=0 + +GSL Peak=0 Mean=0 + +__cephes Peak=0 Mean=0]] +[[64] [RedHat Linux IA32, gcc-3.3] [Peak=0.7 Mean=0.07 + +__glibc Peak=0.9 Mean=0.2] [Peak=0.9 Mean=0.2 + +__glibc Peak=0.9 Mean=0.07] [Peak=0 Mean=0 + +__glibc Peak=0 Mean=0]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=0.7 Mean=0.07 + +__glibc Peak=0 Mean=0] [Peak=0.9 Mean=0.1 + +__glibc Peak=0.5 Mean=0.03] [Peak=0 Mean=0 + +__glibc Peak=0 Mean=0]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=0.8 Mean=0.1 + +__hpc Lib Peak=0.9 Mean=0.2] [Peak=0.9 Mean=0.1 + +__hpc Lib Peak=0.5 Mean=0.02] [Peak=0 Mean=0 + +__hpc Lib Peak=0 Mean=0]] +] + +[table Errors In the Function erfc(z) +[[Significand Size] [Platform and Compiler] [z < 0.5] [0.5 < z < 8] [z > 8]] +[[53] [Win32, Visual C++ 8] [Peak=0.7 Mean=0.06 + +GSL Peak=1.0 Mean=0.4 + +__cephes Peak=0.7 Mean=0.06] [Peak=0.99 Mean=0.3 + +GSL Peak=2.6 Mean=0.6 + +__cephes Peak=3.6 Mean=0.7] [Peak=1.0 Mean=0.2 + +GSL Peak=3.9 Mean=0.4 + +__cephes Peak=2.7 Mean=0.4]] +[[64] [RedHat Linux IA32, gcc-3.3] [Peak=0 Mean=0 + +__glibc Peak=0 Mean=0] [Peak=1.4 Mean=0.3 + +__glibc Peak=1.3 Mean=0.3] [Peak=1.6 Mean=0.4 + +__glibc Peak=1.3 Mean=0.4]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=0 Mean=0 + +__glibc Peak=0 Mean=0] [Peak=1.4 Mean=0.3 + +__glibc Peak=0 Mean=0] [Peak=1.5 Mean=0.4 + +__glibc Peak=0 Mean=0] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=0 Mean=0 + +__hpc Peak=0 Mean=0] [Peak=1.5 Mean=0.3 + +__hpc Peak=0.9 Mean=0.08] [Peak=1.6 Mean=0.4 + +__hpc Peak=0.9 Mean=0.1]] +] + +[h4 Testing] + +The tests for these functions come in two parts: +basic sanity checks use spot values calculated using +[@http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=Erf Mathworld's online evaluator], +while accuracy checks use high-precision test values calculated at 1000-bit precision with +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] and this implementation. +Note that the generic and type-specific +versions of these functions use differing implementations internally, so this +gives us reasonably independent test data. Using our test data to test other +"known good" implementations also provides an additional sanity check. + +[h4 Implementation] + +All versions of these functions first use the usual reflection formulas +to make their arguments positive: + + erf(-z) = 1 - erf(z); + + erfc(-z) = 2 - erfc(z); // preferred when -z < -0.5 + + erfc(-z) = 1 + erf(z); // preferred when -0.5 <= -z < 0 + +The generic versions of these functions are implemented in terms of +the incomplete gamma function. + +When the significand (mantissa) size is recognised +(currently for 53, 64 and 113-bit reals, plus single-precision 24-bit handled via promotion to double) +then a series of rational approximations [jm_rationals] are used. + +For `z <= 0.5` then a rational approximation to erf is used, based on the +observation that: + + erf(z)/z ~ 1.12.... + +Therefore erf is calculated using: + + erf(z) = z * (1.125F + R(z)); + +where the rational approximation R(z) is optimised for absolute error: +as long as its absolute error is small enough compared to 1.125, then any +round-off error incurred during the computation of R(z) will effectively +disappear from the result. As a result the error for erf and erfc in this +region is very low: the last bit is incorrect in only a very small number of +cases. + +For `z > 0.5` we observe that over a small interval [a, b) then: + + erfc(z) * exp(z*z) * z ~ c + +for some constant c. + +Therefore for `z > 0.5` we calculate erfc using: + + erfc(z) = exp(-z*z) * (c + R(z)) / z; + +Again R(z) is optimised for absolute error, and the constant `c` is +the average of `erfc(z) * exp(z*z) * z` taken at the endpoints of the range. +Once again, as long as the absolute error in R(z) is small +compared to `c` then `c + R(z)` will be correctly rounded, and the error +in the result will depend only on the accuracy of the exp function. In practice, +in all but a very small number of cases, the error is confined to the last bit +of the result. + +[endsect] +[/ :error_function The Error Functions] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/erf_inv.qbk b/doc/sf_and_dist/erf_inv.qbk new file mode 100644 index 000000000..fe79369e2 --- /dev/null +++ b/doc/sf_and_dist/erf_inv.qbk @@ -0,0 +1,132 @@ +[section:error_inv Error Function Inverses] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` erf_inv(T p); + + template + ``__sf_result`` erf_inv(T p, const ``__Policy``&); + + template + ``__sf_result`` erfc_inv(T p); + + template + ``__sf_result`` erfc_inv(T p, const ``__Policy``&); + + }} // namespaces + +The return type of these functions is computed using the __arg_pomotion_rules: +the return type is `double` if T is an integer type, and T otherwise. + +[optional_policy] + +[h4 Description] + + template + ``__sf_result`` erf_inv(T z); + + template + ``__sf_result`` erf_inv(T z, const ``__Policy``&); + +Returns the [@http://functions.wolfram.com/GammaBetaErf/InverseErf/ inverse error function] +of z, that is a value x such that: + + p = erf(x); + +[$../graphs/erf_inv.png] + + template + ``__sf_result`` erfc_inv(T z); + + template + ``__sf_result`` erfc_inv(T z, const ``__Policy``&); + +Returns the inverse of the complement of the error function of z, that is a +value x such that: + + p = erfc(x); + +[$../graphs/erfc_inv.png] + +[h4 Accuracy] + +For types up to and including 80-bit long doubles the approximations used +are accurate to less than ~ 2 epsilon. For higher precision types these +functions have the same accuracy as the +[link math_toolkit.special.sf_erf.error_function forward error functions]. + +[h4 Testing] + +There are two sets of tests: + +* Basic sanity checks attempt to "round-trip" from +/x/ to /p/ and back again. These tests have quite +generous tolerances: in general both the error functions and their +inverses change so rapidly in some places that round tripping to more than a couple +of significant digits isn't possible. This is especially true when +/p/ is very near one: in this case there isn't enough +"information content" in the input to the inverse function to get +back where you started. +* Accuracy checks using high-precision test values. These measure +the accuracy of the result, given /exact/ input values. + +[h4 Implementation] + +These functions use a rational approximation [jm_rationals] +to calculate an initial +approximation to the result that is accurate to ~10[super -19], +then only if that has insufficient accuracy compared to the epsilon for T, +do we clean up the result using +[@http://en.wikipedia.org/wiki/Simple_rational_approximation Halley iteration]. + +Constructing rational approximations to the erf/erfc functions is actually +surprisingly hard, especially at high precision. For this reason no attempt +has been made to achieve 10[super -34 ] accuracy suitable for use with 128-bit +reals. + +In the following discussion, /p/ is the value passed to erf_inv, and /q/ is +the value passed to erfc_inv, so that /p = 1 - q/ and /q = 1 - p/ and in both +cases we want to solve for the same result /x/. + +For /p < 0.5/ the inverse erf function is reasonably smooth and the approximation: + + x = p(p + 10)(Y + R(p)) + +Gives a good result for a constant Y, and R(p) optimised for low absolute error +compared to |Y|. + +For q < 0.5 things get trickier, over the interval /0.5 > q > 0.25/ +the following approximation works well: + + x = sqrt(-2log(q)) / (Y + R(q)) + +While for q < 0.25, let + + z = sqrt(-log(q)) + +Then the result is given by: + + x = z(Y + R(z - B)) + +As before Y is a constant and the rational function R is optimised for low +absolute error compared to |Y|. B is also a constant: it is the smallest value +of /z/ for which each approximation is valid. There are several approximations +of this form each of which reaches a little further into the tail of the erfc +function (at `long double` precision the extended exponent range compared to +`double` means that the tail goes on for a very long way indeed). + +[endsect][/ :error_inv The Error Function Inverses] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/error.qbk b/doc/sf_and_dist/error.qbk new file mode 100644 index 000000000..6bdc2d35a --- /dev/null +++ b/doc/sf_and_dist/error.qbk @@ -0,0 +1,71 @@ +[section:relative_error Relative Error] + +Given an actual value /a/ and a found value /v/ the relative error can be +calculated from: + +[equation error2] + +However the test programs in the library use the symmetrical form: + +[equation error1] + +which measures /relative difference/ and happens to be less error +prone in use since we don't have to worry which value is the "true" +result, and which is the experimental one. It guarantees to return a value +at least as large as the relative error. + +Special care needs to be taken when one value is zero: we could either take the +absolute error in this case (but that's cheating as the absolute error is likely +to be very small), or we could assign a value of either 1 or infinity to the +relative error in this special case. In the test cases for the special functions +in this library, everything below a threshold is regarded as "effectively zero", +otherwise the relative error is assigned the value of 1 if only one of the terms +is zero. The threshold is currently set at `std::numeric_limits<>::min()`: +in other words all denormalised numbers are regarded as a zero. + +All the test programs calculate /quantized relative error/, whereas the graphs +in this manual are produced with the /actual error/. The difference is as +follows: in the test programs, the test data is rounded to the target real type +under test when the program is compiled, +so the error observed will then be a whole number of /units in the last place/ +either rounded up from the actual error, or rounded down (possibly to zero). +In contrast the /true error/ is obtained by extending +the precision of the calculated value, and then comparing to the actual value: +in this case the calculated error may be some fraction of /units in the last place/. + +Note that throughout this manual and the test programs the relative error is +usually quoted in units of epsilon. However, remember that /units in the last place/ +more accurately reflect the number of contaminated digits, and that relative +error can /"wobble"/ by a factor of 2 compared to /units in the last place/. +In other words: two implementations of the same function, whose +maximum relative errors differ by a factor of 2, can actually be accurate +to the same number of binary digits. You have been warned! + +[#zero_error][h4 The Impossibility of Zero Error] + +For many of the functions in this library, it is assumed that the error is +"effectively zero" if the computation can be done with a number of guard +digits. However it should be remembered that if the result is a +/transcendental number/ +then as a point of principle we can never be sure that the result is accurate +to more than 1 ulp. This is an example of /the table makers dilemma/: consider what +happens if the first guard digit is a one, and the remaining guard digits are all zero. +Do we have a tie or not? Since the only thing we can tell about a transcendental number +is that its digits have no particular pattern, we can never tell if we have a tie, +no matter how many guard digits we have. Therefore, we can never be completely sure +that the result has been rounded in the right direction. Of course, transcendental +numbers that just happen to be a tie - for however many guard digits we have - are +extremely rare, and get rarer the more guard digits we have, but even so.... + +Refer to the classic text +[@http://docs.sun.com/source/806-3568/ncg_goldberg.html What Every Computer Scientist Should Know About Floating-Point Arithmetic] +for more information. + +[endsect][/section:relative_error Relative Error] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/error_handling.qbk b/doc/sf_and_dist/error_handling.qbk new file mode 100644 index 000000000..eca907b6b --- /dev/null +++ b/doc/sf_and_dist/error_handling.qbk @@ -0,0 +1,318 @@ +[section:error_handling Error Handling] + +[def __format [@../../../../format/index.html Boost.Format]] + +[heading Quick Reference] + +Handling of errors by this library is split into two orthogonal parts: + +* What kind of error has been raised? +* What should be done when the error is raised? + +The kinds of errors that can be raised are: + +[variablelist +[[Domain Error][Occurs when one or more arguments to a function + are out of range.]] +[[Pole Error][Occurs when the particular arguments cause the function to be + evaluated at a pole with no well defined residual value. For example if + __tgamma is evaluated at exactly -2, the function approaches different limiting + values depending upon whether you approach from just above or just below + -2. Hence the function has no well defined value at this point and a + Pole Error will be raised.]] +[[Overflow Error][Occurs when the result is either infinite, or too large + to represent in the numeric type being returned by the function.]] +[[Underflow Error][Occurs when the result is not zero, but is too small + to be represented by any other value in the type being returned by + the function.]] +[[Denormalisation Error][Occurs when the returned result would be a denormalised value.]] +[[Evaluation Error][Occurs when an internal error occured that prevented the + result from being evaluated: this should never occur, but if it does, then + it's likely to be due to an iterative method not converging fast enough.]] +] + +The action undertaken by each error condition is determined by the current +__Policy in effect. This can be changed program-wide by setting some +configuration macros, or at namespace scope, or at the call site (by +specifying a specific policy in the function call). + +The available actions are: + +[variablelist +[[throw_on_error][Throws the exception most appropriate to the error condition.]] +[[errno_on_error][Sets ::errno to an appropriate value, and then returns the most +appropriate result]] +[[ignore_error][Ignores the error and simply the returns the most appropriate result.]] +[[user_error][Calls a + [link math_toolkit.policy.pol_tutorial.user_def_err_pol user-supplied error handler].]] +] + +The following tables show all the permutations of errors and actions, +with the default action for each error shown in bold: + +[table Possible Actions for Domain Errors +[[Action] [Behaviour]] +[[throw_on_error][[*Throws `std::domain_error`]]] +[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits::quiet_NaN()`]] +[[ignore_error][Returns `std::numeric_limits::quiet_NaN()`]] +[[user_error][Returns the result of `boost::math::policies::user_domain_error`: + [link math_toolkit.policy.pol_tutorial.user_def_err_pol + this function must be defined by the user].]] +] + +[table Possible Actions for Pole Errors +[[Action] [Behaviour]] +[[throw_on_error] [[*Throws `std::domain_error`]]] +[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits::quiet_NaN()`]] +[[ignore_error][Returns `std::numeric_limits::quiet_NaN()`]] +[[user_error][Returns the result of `boost::math::policies::user_pole_error`: + [link math_toolkit.policy.pol_tutorial.user_def_err_pol + this function must be defined by the user].]] +] + +[table Possible Actions for Overflow Errors +[[Action] [Behaviour]] +[[throw_on_error][[*Throws `std::overflow_error`]]] +[[errno_on_error][Sets `::errno` to `ERANGE` and returns `std::numeric_limits::infinity()`]] +[[ignore_error][Returns `std::numeric_limits::infinity()`]] +[[user_error][Returns the result of `boost::math::policies::user_overflow_error`: + [link math_toolkit.policy.pol_tutorial.user_def_err_pol + this function must be defined by the user].]] +] + +[table Possible Actions for Underflow Errors +[[Action] [Behaviour]] +[[throw_on_error][Throws `std::underflow_error`]] +[[errno_on_error][Sets `::errno` to `ERANGE` and returns 0.]] +[[ignore_error][[*Returns 0]]] +[[user_error][Returns the result of `boost::math::policies::user_underflow_error`: + [link math_toolkit.policy.pol_tutorial.user_def_err_pol + this function must be defined by the user].]] +] + +[table Possible Actions for Denorm Errors +[[Action] [Behaviour]] +[[throw_on_error][Throws `std::underflow_error`]] +[[errno_on_error][Sets `::errno` to `ERANGE` and returns the denormalised value.]] +[[ignore_error][[*Returns the denormalised value.]]] +[[user_error][Returns the result of `boost::math::policies::user_denorm_error`: + [link math_toolkit.policy.pol_tutorial.user_def_err_pol + this function must be defined by the user].]] +] + +[table Possible Actions for Internal Evaluation Errors +[[Action] [Behaviour]] +[[throw_on_error][[*Throws `boost::math::evaluation_error`]]] +[[errno_on_error][Sets `::errno` to `EDOM` and returns `std::numeric_limits::infinity()`.]] +[[ignore_error][Returns `std::numeric_limits::infinity()`.]] +[[user_error][Returns the result of `boost::math::policies::user_evaluation_error`: + [link math_toolkit.policy.pol_tutorial.user_def_err_pol + this function must be defined by the user].]] +] + +[heading Rationale] + +The flexibility of the current implementation should be reasonably obvious, the +default behaviours were chosen based on feedback during the formal review of +this library. It was felt that: + +* Genuine errors should be flagged with exceptions +rather than following C-compatible behaviour and setting ::errno. +* Numeric underflow and denormalised results were not considered to be +fatal errors in most cases, so it was felt that these should be ignored. + +[heading Finding More Information] + +There are some pre-processor macro defines that can be used to +[link math_toolkit.policy.pol_ref.policy_defaults +change the policy defaults]. See also the [link math_toolkit.policy +policy section]. + +An example is at the Policy tutorial in +[link math_toolkit.policy.pol_tutorial.changing_policy_defaults +Changing the Policy Defaults]. + +Full source code of this typical example of passing a 'bad' argument +(negative degrees of freedom) to Student's t distribution +is [link math_toolkit.dist.stat_tut.weg.error_eg in the error handling example]. + +The various kind of errors are described in more detail below. + +[heading [#domain_error]Domain Errors] + +When a special function is passed an argument that is outside the range +of values for which that function is defined, then the function returns +the result of: + + boost::math::policies::raise_domain_error(FunctionName, Message, Val, __Policy); + +Where +`T` is the floating-point type passed to the function, `FunctionName` is the +name of the function, `Message` is an error message describing the problem, +Val is the value that was out of range, and __Policy is the current policy +in use for the function that was called. + +The default policy behaviour of this function is to throw a +std::domain_error C++ exception. But if the __Policy is to ignore +the error, or set global ::errno, then a NaN will be returned. + +This behaviour is chosen to assist compatibility with the behaviour of +['ISO/IEC 9899:1999 Programming languages - C] +and with the +[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Draft Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph 6]: + +[:['"Each of the functions declared above shall return a NaN (Not a Number) +if any argument value is a NaN, but it shall not report a domain error. +Otherwise, each of the functions declared above shall report a domain error +for just those argument values for which:]] + +[:['"the function description's Returns clause explicitly specifies a domain, and those arguments fall outside the specified domain; or] + +['"the corresponding mathematical function value has a non-zero imaginary component; or] + +['"the corresponding mathematical function is not mathematically defined.]] + +[:['"Note 2: A mathematical function is mathematically defined +for a given set of argument values if it is explicitly defined +for that set of argument values or +if its limiting value exists and does not depend on the direction of approach."]] + +Note that in order to support information-rich error messages when throwing +exceptions, `Message` must contain +a __format recognised format specifier: the argument `Val` is inserted into +the error message according to the specifier used. + +For example if `Message` contains a "%1%" then it is replaced by the value of +`Val` to the full precision of T, where as "%.3g" would contain the value of +`Val` to 3 digits. See the __format documentation for more details. + +[heading [#pole_error]Evaluation at a pole] + +When a special function is passed an argument that is at a pole +without a well defined residual value, then the function returns +the result of: + + boost::math::policies::raise_pole_error(FunctionName, Message, Val, __Policy); + +Where +`T` is the floating point type passed to the function, `FunctionName` is the +name of the function, `Message` is an error message describing the problem, +`Val` is the value of the argument that is at a pole, and __Policy is the +current policy in use for the function that was called. + +The default behaviour of this function is to throw a std::domain_error exception. +But __error_policy can be used to change this, for example to `ignore_error` +and return NaN. + +Note that in order to support information-rich error messages when throwing +exceptions, `Message` must contain +a __format recognised format specifier: the argument `val` is inserted into +the error message according to the specifier used. + +For example if `Message` contains a "%1%" then it is replaced by the value of +`val` to the full precision of T, where as "%.3g" would contain the value of +`val` to 3 digits. See the __format documentation for more details. + +[heading [#overflow_error]Numeric Overflow] + +When the result of a special function is too large to fit in the argument +floating-point type, then the function returns the result of: + + boost::math::policies::raise_overflow_error(FunctionName, Message, __Policy); + +Where +`T` is the floating-point type passed to the function, `FunctionName` is the +name of the function, `Message` is an error message describing the problem, +and __Policy is the current policy +in use for the function that was called. + +The default policy for this function is that `std::overflow_error` +C++ exception is thrown. But if, for example, an `ignore_error` policy +is used, then returns `std::numeric_limits::infinity()`. +In this situation if the type `T` doesn't support infinities, +the maximum value for the type is returned. + +[heading [#underflow_error]Numeric Underflow] + +If the result of a special function is known to be non-zero, but the +calculated result underflows to zero, then the function returns the result of: + + boost::math::policies::raise_underflow_error(FunctionName, Message, __Policy); + +Where +`T` is the floating point type passed to the function, `FunctionName` is the +name of the function, `Message` is an error message describing the problem, +and __Policy is the current policy +in use for the called function. + +The default version of this function returns zero. +But with another policy, like `throw_on_error`, +throws an `std::underflow_error` C++ exception. + +[heading [#denorm_error]Denormalisation Errors] + +If the result of a special function is a denormalised value /z/ then the function +returns the result of: + + boost::math::policies::raise_denorm_error(z, FunctionName, Message, __Policy); + +Where +`T` is the floating point type passed to the function, `FunctionName` is the +name of the function, `Message` is an error message describing the problem, +and __Policy is the current policy +in use for the called function. + +The default version of this function returns /z/. +But with another policy, like `throw_on_error` +throws an `std::underflow_error` C++ exception. + +[heading [#evaluation_error]Evaluation Errors] + +When a special function calculates a result that is known to be erroneous, +or where the result is incalculable then it calls: + + boost::math::policies::raise_evaluation_error(FunctionName, Message, Val, __Policy); + +Where +`T` is the floating point type passed to the function, `FunctionName` is the +name of the function, `Message` is an error message describing the problem, +`Val` is the erroneous value, +and __Policy is the current policy +in use for the called function. + +The default behaviour of this function is to throw a `boost::math::evaluation_error`. + +Note that in order to support information rich error messages when throwing +exceptions, `Message` must contain +a __format recognised format specifier: the argument `val` is inserted into +the error message according to the specifier used. + +For example if `Message` contains a "%1%" then it is replaced by the value of +`val` to the full precision of T, where as "%.3g" would contain the value of +`val` to 3 digits. See the __format documentation for more details. + +[heading [#checked_narrowing_cast]Errors from typecasts] + +Many special functions evaluate their results at a higher precision +than their arguments in order to ensure full machine precision in +the result: for example, a function passed a float argument may evaluate +its result using double precision internally. Many of the errors listed +above may therefore occur not during evaluation, but when converting +the result to the narrower result type. The function: + + template + T checked_narrowing_cast(U const& val, const char* function); + +Is used to perform these conversions, and will call the error handlers +listed above on [link overflow_error overflow], +[link underflow_error underflow] or [link denorm_error denormalisation]. + +[endsect][/section:error_handling Error Handling] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/factorials.qbk b/doc/sf_and_dist/factorials.qbk new file mode 100644 index 000000000..6827db461 --- /dev/null +++ b/doc/sf_and_dist/factorials.qbk @@ -0,0 +1,301 @@ +[section:factorials Factorials and Binomial Coefficients] + +[section:sf_factorial Factorial] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + T factorial(unsigned i); + + template + T factorial(unsigned i, const ``__Policy``&); + + template + T unchecked_factorial(unsigned i); + + template + struct max_factorial; + + }} // namespaces + +[h4 Description] + + template + T factorial(unsigned i); + + template + T factorial(unsigned i, const ``__Policy``&); + +Returns [^i!]. + +[optional_policy] + +For [^i <= max_factorial::value] this is implemented by table lookup, +for larger values of [^i], this function is implemented in terms of __tgamma. + +If [^i] is so large that the result can not be represented in type T, then +calls __overflow_error. + + template + T unchecked_factorial(unsigned i); + +Returns [^i!]. + +Internally this function performs table lookup of the result. Further it performs +no range checking on the value of i: it is up to the caller to ensure +that [^i <= max_factorial::value]. This function is intended to be used +inside inner loops that require fast table lookup of factorials, but requires +care to ensure that argument [^i] never grows too large. + + template + struct max_factorial + { + static const unsigned value = X; + }; + +This traits class defines the largest value that can be passed to +[^unchecked_factorial]. The member `value` can be used where integral +constant expressions are required: for example to define the size of +further tables that depend on the factorials. + +[h4 Accuracy] + +For arguments smaller than `max_factorial::value` +the result should be +correctly rounded. For larger arguments the accuracy will be the same +as for __tgamma. + +[h4 Testing] + +Basic sanity checks and spot values to verify the data tables: +the main tests for the __tgamma function handle those cases already. + +[h4 Implementation] + +The factorial function is table driven for small arguments, and is +implemented in terms of __tgamma for larger arguments. + +[endsect] + +[section:sf_double_factorial Double Factorial] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + T double_factorial(unsigned i); + + template + T double_factorial(unsigned i, const ``__Policy``&); + + }} // namespaces + +Returns [^i!!]. + +[optional_policy] + +May return the result of __overflow_error if the result is too large +to represent in type T. The implementation is designed to be optimised +for small /i/ where table lookup of i! is possible. + +[h4 Accuracy] + +The implementation uses a trivial adaptation of +the factorial function, so error rates should be no more than a couple +of epsilon higher. + +[h4 Testing] + +The spot tests for the double factorial use data +generated by functions.wolfram.com. + +[h4 Implementation] + +The double factorial is implemented in terms of the factorial and gamma +functions using the relations: + +(2n)!! = 2[super n ] * n! + +(2n+1)!! = (2n+1)! / (2[super n ] n!) + +and + +(2n-1)!! = [Gamma]((2n+1)/2) * 2[super n ] / sqrt(pi) + +[endsect] + +[section:sf_rising_factorial Rising Factorial] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` rising_factorial(T x, int i); + + template + ``__sf_result`` rising_factorial(T x, int i, const ``__Policy``&); + + }} // namespaces + +Returns the rising factorial of /x/ and /i/: + +rising_factorial(x, i) = [Gamma](x + i) / [Gamma](x); + +or + +rising_factorial(x, i) = x(x+1)(x+2)(x+3)...(x+i) + +Note that both /x/ and /i/ can be negative as well as positive. + +[optional_policy] + +May return the result of __overflow_error if the result is too large +to represent in type T. + +The return type of these functions is computed using the __arg_pomotion_rules: +the type of the result is `double` if T is an integer type, otherwise the type +of the result is T. + +[h4 Accuracy] + +The accuracy will be the same as +the __tgamma_delta_ratio function. + +[h4 Testing] + +The spot tests for the rising factorials use data generated +by functions.wolfram.com. + +[h4 Implementation] + +Rising and falling factorials are implemented as ratios of gamma functions +using __tgamma_delta_ratio. Optimisations for +small integer arguments are handled internally by that function. + +[endsect] + +[section:sf_falling_factorial Falling Factorial] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` falling_factorial(T x, unsigned i); + + template + ``__sf_result`` falling_factorial(T x, unsigned i, const ``__Policy``&); + + }} // namespaces + +Returns the falling factorial of /x/ and /i/: + +falling_factorial(x, i) = x(x-1)(x-2)(x-3)...(x-i+1) + +Note that this function is only defined for positive /i/, hence the +`unsigned` second argument. Argument /x/ can be either positive or +negative however. + +[optional_policy] + +May return the result of __overflow_error if the result is too large +to represent in type T. + +The return type of these functions is computed using the __arg_pomotion_rules: +the type of the result is `double` if T is an integer type, otherwise the type +of the result is T. + +[h4 Accuracy] + +The accuracy will be the same as +the __tgamma_delta_ratio function. + +[h4 Testing] + +The spot tests for the falling factorials use data generated by +functions.wolfram.com. + +[h4 Implementation] + +Rising and falling factorials are implemented as ratios of gamma functions +using __tgamma_delta_ratio. Optimisations for +small integer arguments are handled internally by that function. + +[endsect] + +[section:sf_binomial Binomial Coefficients] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + T binomial_coefficient(unsigned n, unsigned k); + + template + T binomial_coefficient(unsigned n, unsigned k, const ``__Policy``&); + + }} // namespaces + +Returns the binomial coefficient: [sub n]C[sub k]. + +Requires k <= n. + +[optional_policy] + +May return the result of __overflow_error if the result is too large +to represent in type T. + +[h4 Accuracy] + +The accuracy will be the same as for the +factorials for small arguments (i.e. no more than one or two epsilon), +and the __beta function for larger arguments. + +[h4 Testing] + +The spot tests for the binomial coefficients use data +generated by functions.wolfram.com. + +[h4 Implementation] + +Binomial coefficients are calculated using table lookup of factorials +where possible using: + +[sub n]C[sub k] = n! / (k!(n-k)!) + +Otherwise it is implemented in terms of the beta function using the relations: + +[sub n]C[sub k] = 1 / (k * __beta(k, n-k+1)) + +and + +[sub n]C[sub k] = 1 / ((n-k) * __beta(k+1, n-k)) + +[endsect] + + +[endsect][/section:factorials Factorials] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/fpclassify.qbk b/doc/sf_and_dist/fpclassify.qbk new file mode 100644 index 000000000..a663576f0 --- /dev/null +++ b/doc/sf_and_dist/fpclassify.qbk @@ -0,0 +1,99 @@ +[section:fpclass Floating Point Classification: Infinities and NaN's] + +[h4 Synopsis] + + #define FP_ZERO /* implementation specific value */ + #define FP_NORMAL /* implementation specific value */ + #define FP_INFINITE /* implementation specific value */ + #define FP_NAN /* implementation specific value */ + #define FP_SUBNORMAL /* implementation specific value */ + + template + int fpclassify(T t); + + template + bool isfinite(T z); + + template + bool isinf(T t); + + template + bool isnan(T t); + + template + bool isnormal(T t); + +[h4 Description] + +These functions provide the same functionality as the macros with the same +name in C99, indeed if the C99 macros are available, then these functions +are implemented in terms of them, otherwise they rely on std::numeric_limits<> +to function. + +Note that the definition of these functions ['does not suppress the definition +of these names as macros by math.h] on those platforms that already provide +these as macros. That mean that the following have differing meanings: + + using namespace boost::math; + + // This might call a global macro if defined, + // but might not work if the type of z is unsupported + // by the std lib macro: + isnan(z); + // + // This calls the Boost version + // (found via the "using namespace boost::math" declaration) + // it works for any type that has numeric_limits support for type z: + (isnan)(z); + // + // As above but with namespace qualification. + (boost::math::isnan)(z); + // + // This will cause a compiler error is isnan is a native macro: + boost::math::isnan(z); + // So always use (boost::math::isnan)(z); instead. + +Detailed descriptions for each of these functions follows: + + template + int fpclassify(T t); + +Returns an integer value that classifies the value /t/: + +[table +[[fpclassify value] [class of t.]] +[[FP_ZERO] [If /t/ is zero.]] +[[FP_NORMAL] [If /t/ is a non-zero, non-denormalised finite value.]] +[[FP_INFINITE] [If /t/ is plus or minus infinity.]] +[[FP_NAN] [If /t/ is a NaN.]] +[[FP_SUBNORMAL] [If /t/ is a denormalised number.]] +] + + template + bool isfinite(T z); + +Returns true only if /z/ is not an infinity or a NaN. + + template + bool isinf(T t); + +Returns true only if /z/ is plus or minus infinity. + + template + bool isnan(T t); + +Returns true only if /z/ is a NaN. + + template + bool isnormal(T t); + +Returns true only if /z/ is a normal number (not zero, infinite, NaN, or denormalised). + +[endsect] [/section:fpclass Floating Point Classification: Infinities and NaN's] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/fraction.qbk b/doc/sf_and_dist/fraction.qbk new file mode 100644 index 000000000..452e203ff --- /dev/null +++ b/doc/sf_and_dist/fraction.qbk @@ -0,0 +1,157 @@ +[section:cf Continued Fraction Evaluation] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ namespace tools{ + + template + typename detail::fraction_traits::result_type + continued_fraction_b(Gen& g, int bits); + + template + typename detail::fraction_traits::result_type + continued_fraction_b(Gen& g, int bits, boost::uintmax_t& max_terms); + + template + typename detail::fraction_traits::result_type + continued_fraction_a(Gen& g, int bits); + + template + typename detail::fraction_traits::result_type + continued_fraction_a(Gen& g, int bits, boost::uintmax_t& max_terms); + + }}} // namespaces + +[h4 Description] + +[@http://en.wikipedia.org/wiki/Continued_fraction Continued fractions are a common method of approximation. ] +These functions all evaluate the continued fraction described by the /generator/ +type argument. The functions with an "_a" suffix evaluate the fraction: + +[equation fraction2] + +and those with a "_b" suffix evaluate the fraction: + +[equation fraction1] + +This latter form is somewhat more natural in that it corresponds with the usual +definition of a continued fraction, but note that the first /a/ value returned by +the generator is discarded. Further, often the first /a/ and /b/ values in a +continued fraction have different defining equations to the remaining terms, which +may make the "_a" suffixed form more appropriate. + +The generator type should be a function object which supports the following +operations: + +[table +[[Expression] [Description]] +[[Gen::result_type] [The type that is the result of invoking operator(). + This can be either an arithmetic type, or a std::pair<> of arithmetic types.]] +[[g()] [Returns an object of type Gen::result_type. + +Each time this operator is called then the next pair of /a/ and /b/ + values is returned. Or, if result_type is an arithmetic type, + then the next /b/ value is returned and all the /a/ values + are assumed to 1.]] +] + +In all the continued fraction evaluation functions the /bits/ parameter is the +number of bits precision desired in the result, evaluation of the fraction will +continue until the last term evaluated leaves the first /bits/ bits in the result +unchanged. + +If the optional /max_terms/ parameter is specified then no more than /max_terms/ +calls to the generator will be made, and on output, +/max_terms/ will be set to actual number of +calls made. This facility is particularly useful when profiling a continued +fraction for convergence. + +[h4 Implementation] + +Internally these algorithms all use the modified Lentz algorithm: refer to +Numeric Recipes in C++, W. H. Press et all, chapter 5, +(especially 5.2 Evaluation of continued fractions, p 175 - 179) +for more information, also +Lentz, W.J. 1976, Applied Optics, vol. 15, pp. 668-671. + +[h4 Examples] + +The [@http://en.wikipedia.org/wiki/Golden_ratio golden ratio phi = 1.618033989...] +can be computed from the simplest continued fraction of all: + +[equation fraction3] + +We begin by defining a generator function: + + template + struct golden_ratio_fraction + { + typedef T result_type; + + result_type operator() + { + return 1; + } + }; + +The golden ratio can then be computed to double precision using: + + continued_fraction_a( + golden_ratio_fraction(), + std::numeric_limits::digits); + +It's more usual though to have to define both the /a/'s and the /b/'s +when evaluating special functions by continued fractions, for example +the tan function is defined by: + +[equation fraction4] + +So it's generator object would look like: + + template + struct tan_fraction + { + private: + T a, b; + public: + tan_fraction(T v) + : a(-v*v), b(-1) + {} + + typedef std::pair result_type; + + std::pair operator()() + { + b += 2; + return std::make_pair(a, b); + } + }; + +Notice that if the continuant is subtracted from the /b/ terms, +as is the case here, then all the /a/ terms returned by the generator +will be negative. The tangent function can now be evaluated using: + + template + T tan(T a) + { + tan_fraction fract(a); + return a / continued_fraction_b(fract, std::numeric_limits::digits); + } + +Notice that this time we're using the "_b" suffixed version to evaluate +the fraction: we're removing the leading /a/ term during fraction evaluation +as it's different from all the others. + +[endsect][/section:cf Continued Fraction Evaluation] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/gamma_derivatives.qbk b/doc/sf_and_dist/gamma_derivatives.qbk new file mode 100644 index 000000000..9bfb82e03 --- /dev/null +++ b/doc/sf_and_dist/gamma_derivatives.qbk @@ -0,0 +1,54 @@ +[section:gamma_derivatives Derivative of the Incomplete Gamma Function] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` gamma_p_derivative(T1 a, T2 x); + + template + ``__sf_result`` gamma_p_derivative(T1 a, T2 x, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +This function find some uses in statistical distributions: it +implements the partial derivative with respect to /x/ of the incomplete +gamma function. + +[equation derivative1] + +[optional_policy] + +Note that the derivative of the function __gamma_q can be obtained by negating +the result of this function. + +The return type of this function is computed using the __arg_pomotion_rules +when T1 and T2 are different types, otherwise the return type is simply T1. + +[h4 Accuracy] + +Almost identical to the incomplete gamma function __gamma_p: refer to +the documentation for that function for more information. + +[h4 Implementation] + +This function just expose some of the internals of the incomplete +gamma function __gamma_p: refer to the documentation for that function +for more information. + +[endsect][/section Derivative of the Incomplete Gamma Functions] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/gamma_ratios.qbk b/doc/sf_and_dist/gamma_ratios.qbk new file mode 100644 index 000000000..c459cee73 --- /dev/null +++ b/doc/sf_and_dist/gamma_ratios.qbk @@ -0,0 +1,112 @@ +[section:gamma_ratios Ratios of Gamma Functions] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` tgamma_ratio(T1 a, T2 b); + + template + ``__sf_result`` tgamma_ratio(T1 a, T2 b, const ``__Policy``&); + + template + ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta); + + template + ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + + template + ``__sf_result`` tgamma_ratio(T1 a, T2 b); + + template + ``__sf_result`` tgamma_ratio(T1 a, T2 b, const ``__Policy``&); + +Returns the ratio of gamma functions: + +[equation gamma_ratio0] + +[optional_policy] + +Internally this just calls `tgamma_delta_ratio(a, b-a)`. + + template + ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta); + + template + ``__sf_result`` tgamma_delta_ratio(T1 a, T2 delta, const ``__Policy``&); + +Returns the ratio of gamma functions: + +[equation gamma_ratio1] + +[optional_policy] + +Note that the result is calculated accurately even when /delta/ is +small compared to /a/: indeed even if /a+delta ~ a/. The function is +typically used when /a/ is large and /delta/ is very small. + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types, otherwise the result type is simple T1. + +[h4 Accuracy] + +The following table shows the peak errors (in units of epsilon) +found on various platforms with various floating point types. +Unless otherwise specified any floating point type that is narrower +than the one shown will have __zero_error. + +[table Errors In the Function tgamma_delta_ratio(a, delta) +[[Significand Size] [Platform and Compiler] [20 < a < 80 + +and + +delta < 1]] +[[53] [Win32, Visual C++ 8] [Peak=16.9 Mean=1.7] ] +[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=24 Mean=2.7]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=12.8 Mean=1.8]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=21.4 Mean=2.3] ] +] + +[table Errors In the Function tgamma_ratio(a, b) +[[Significand Size] [Platform and Compiler] [6 < a,b < 50]] +[[53] [Win32, Visual C++ 8] [Peak=34 Mean=9] ] +[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=91 Mean=23]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=35.6 Mean=9.3]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=43.9 Mean=13.2] ] +] + +[h4 Testing] + +Accuracy tests use data generated at very high precision +(with [@http://shoup.net/ntl/doc/RR.txt NTL RR class] +set at 1000-bit precision: about 300 decimal digits) +and a deliberately naive calculation of [Gamma](x)/[Gamma](y). + +[h4 Implementation] + +The implementation of these functions is very similar to that of +__beta, and is based on combining similar power terms +to improve accuracy and avoid spurious overflow/underflow. + +In addition there are optimisations for the situation where /delta/ +is a small integer: in which case this function is basically +the reciprocal of a rising factorial, or where both arguments +are smallish integers: in which case table lookup of factorials +can be used to calculate the ratio. + +[endsect][/section:gamma_ratios Ratios of Gamma Functions] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/graphs/bernoulli_cdf.png b/doc/sf_and_dist/graphs/bernoulli_cdf.png new file mode 100644 index 0000000000000000000000000000000000000000..8643e136db2e6f4057d945db393bdc91b06c1583 GIT binary patch literal 16479 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/bernoulli_pdf.png b/doc/sf_and_dist/graphs/bernoulli_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..cb7093eeb68c265f8b8eab664da151437b416541 GIT binary patch literal 14564 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/bessel_jn.png b/doc/sf_and_dist/graphs/bessel_jn.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0332b23c213df7d5bb851f96e250f228f918fd GIT binary patch literal 13223 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 M>FVdQ&MBb@0F(1@%m4rY literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/bessel_jv.png b/doc/sf_and_dist/graphs/bessel_jv.png new file mode 100644 index 0000000000000000000000000000000000000000..9d66262cd3661c57381a719592c48723c49930af GIT binary patch literal 8873 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/bessel_k.png b/doc/sf_and_dist/graphs/bessel_k.png new file mode 100644 index 0000000000000000000000000000000000000000..3378081b6b1890f6fd9b5396b5921af497af76ee GIT binary patch literal 4512 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 b4=`MP_cPtej60Ztfq}u()z4*}Q$iB}&BgI6 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/bessel_yv.png b/doc/sf_and_dist/graphs/bessel_yv.png new file mode 100644 index 0000000000000000000000000000000000000000..43b4541e9f62a446de69a3113dc900441a732d55 GIT binary patch literal 5202 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 nCOX!1$blnSp^}+N5rF1_lPs0*}aI1_r((Aj~*b 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 XE<7d_wiVqjnp6%kcuU|`@Z@Q5sCVBi)8VMc~o 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/binomial_pdf.png b/doc/sf_and_dist/graphs/binomial_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..4d136c985043c0b8196108b8e1ebc95acc120ccf GIT binary patch literal 5022 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 bm>Gmzm)=Wh;f!WrU|{fc^>bP0l+XkKDj1lC literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/binomial_pdf_1.png b/doc/sf_and_dist/graphs/binomial_pdf_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b031e4756461ed3cea5fa87c12a009e8d14e2b6 GIT binary patch literal 15775 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 Y-vWnZRQm-O7#J8lUHx3vIVCg!0PUgDJpcdz literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/binomial_pdf_2.png b/doc/sf_and_dist/graphs/binomial_pdf_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cca5b2a00afce2de74856087fb7cbd5d657f99 GIT binary patch literal 17896 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/binomial_pdf_3.png b/doc/sf_and_dist/graphs/binomial_pdf_3.png new file mode 100644 index 0000000000000000000000000000000000000000..338c5264481fe7cefd1a6df3250e62d4eef6410b GIT binary patch literal 5956 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/cdf.png b/doc/sf_and_dist/graphs/cdf.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd7814ccbb4f96ec909f89427b03d5fd3cdd65b GIT binary patch literal 3914 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 N;OXk;vd$@?2>|)&i?sj% literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/chi_square.png b/doc/sf_and_dist/graphs/chi_square.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4e7773199ef9deff9803c241dcf6c647e5cd4e GIT binary patch literal 4430 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/digamma.png b/doc/sf_and_dist/graphs/digamma.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b8138379f81630f717b4cc58f18a3ace32d1de GIT binary patch literal 6264 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


fvgMI8gJwN@(OhZK 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/ellint_3.png b/doc/sf_and_dist/graphs/ellint_3.png new file mode 100644 index 0000000000000000000000000000000000000000..30237df99fe8ca807062c0d6b569217d2710d27a GIT binary patch literal 5805 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/erf1.png b/doc/sf_and_dist/graphs/erf1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b03740f79b0cc8c404971ce2c5f1943c23f697c GIT binary patch literal 2856 zcmeAS@N?(olHy`uVBq!ia0y~yVDe{RV4T6h%)r2qbLv|d0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e7@|Ns9C3=F=$zBM&9%aief`WpgqN0+LlCrY0ii(P=s;Zirn!38WhK7cwrlyvbmbSLG zj*gD5uCAV*p1!`mfq{Xcp`nqHk+HF{iHV7+si~QnnYp>Sg@uKsrKOdXm9@3Cjg5`1 zt*xD%oxQ!igM)*kqob3Ple4q4i;Ih^tE-!vo4dQahlhu!r>B>fm$$dKkB^V9udkn< zpTEC*CP;hW?NJvO%XlPhiSa^7NL_|bnWMouSRCIK7OiWB{Y;0UyTzq_d zLPA1fVq#KKQgU)~N=iygCvu5quwd>ZcTfct&h7B7wZrr$O z)27XvH*eXpW$V_h+qP}nzJ2?S9XodJ+_`JluHCzL@7c3w@7}%p_U+rhfB%642M!)Q zc<9if!-o$aIdbIa(WA$X9Xo#f_=yuIPM$n@>eQ*zr%#_bbLQ;Xv**s8JAeNCg$oxh zUc7ke(xuCnFJHNGeZ{)uV24;^XBc_x9{G)d;k9Z zhYue0*e7|qIEGZ*dUH2A_;#2`!^OQ%r6nf)`!9cMrk}OsSH{^tnw;n6T#Y{U zOOB)PDCeBbIq?bUVdOMG{zUA_I20GBc(mNHlI?h&wPAxz2xJsfB(JI{rmm!J^Az9;nIHh>}5;#SeYc- zRKNIRF|Xp$$*+3)+t1Cub9dkR|8+M$8hw3Qt6h?8zpr-py`$;ZcTaBIGiif@|L>Sw zFYmXN-F{Ku+?MyJ`lm6xO{odUWK+ZXTQE?wb4BryvBTH{QCSG>ul!kpOnzxO@G~)#)7- z_ns8|ty1%c#bD;kz4e=8TwHQ|I_f$v-_*~pzqpLaZ~D3~#hX{0o+;UX**NOQX196o z1We}rd-rCptDxjOcX{iO8#&zG0AKb+6`pY!3qHPQZ;X8P~H(nigmf6x0Hd~})ox8nG9?mxFnzxki@ z{dIBDvu2x%TaE|^+P(VCo$=`8Nl#tdr;DBiq)#ra?Kb`RckXVh@8$C@WbJ%Z=4WGR zx$^m<$44e-&yA{D)Tut_O3~BU*A+!YLFbPi2XTvk7Cz!s|H{%J>~FDBopH_-iT^Om7}Z6y4tTc86a+0~pA*8tr2cWq zvUvqTikx#oGMLmw7aj0y)hZD3&w9nFF1qW0XR85>a|vz)v%2Uj80Q5u)PRKobB;`& zRdonv4+}&bYLeAKh&V(^>pZBTV7sA8U|Jzcz^;WbDOZhT4LUPup*pg=AvS_74|&0f z>;MUcsXG&p+DS{HdAr+iJ1)_b2u@ zjUHaO?E59w#>hCy{N(kSGX-CtbUU{)ta{$OYnORz)%z8bR=vLa`SqM@X~*WN&3UoA z(r3qX>7rfxW6!Q+o3nU1r+U??>Q%1K?}uI#dCoWQ$mCf?k34NwYOBvX65L#Q`Q(-! z`TgsAc6?`F_T)d~6B(16Ju~g*R6JVwx@YEo>t%;iYBx!5m)|bGzLu@(RHu6BU4;)S z^R9gT*9r=_ITb;w>hq3F-UT<35HsXtr~1bw>*iDl`M)~VsUC`|aVkt4tOU*MkXJ1b zJ0V)9Dn0bHS*Z!LeyLN1kbl;xPW7q39zeuHRyC`KK7w()njxBlG1>a42IekTo0sv(GuHH@i?IJL_RIfwAF?@kWO7u}BTlt>S44&V zyJxTI>G(LY{$IyQC!1888$$lxAFnhC`FDSq607miB;UXN{IcszpG?gC-_LhhKK1sW z!W&iU3MtSc`z2;?I+uL%(;`=#5b$U)xdCB{zW?*1g85ge4z`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@C%>CN3^6At50tDJdl- zB`qy2BO@a#D=Q}_CoeCrprD|rsHmi*q^zv0qN1Xzs;Z`@rmn88p`oFvsi~!4 zqobp%tE;D{r?0PXU|?WqXlP_)WNd6~Vq#)yYHDU?W^Qh7VPRouX=!C;Wo>P3V`F1$ zYinm`XK!!s;Nals=;-9+gwj^=I-w9;o;%w>FMR=+9#| z=kM(9qD>*x1z6 z)ZE)2+uPUI*WceiVZwxo6DLlZG->kW z$y26GnL2gqv}x0(PoF+x#*CRWXU>{6YxeBfbLPyMJ9qB9dGqGapTA(if`tngE?Tr` z@#4ixmMmGibm_8X%a$)+zGB6Sl`B`STD5BR>eXx3tXaEu?YedA)~{c`VZ(-v8#iv+ zv}yC^&0Dr?*}8S>wr$(CZ{NOS$BvylckbG?YxnNmd-m+vyLa!tef#$B-+$o1frAGR z9y)aB@ZrNpjvP69^ysl;$BrLAe&WQ5lP6D}I(6#w>C-O#2ckbM|d-v|Wd-v|&zyILD zgNF|vK6>=%@#Du&o;-Q_^y#x_&z?Vj{^G@pmoHzwdiCn{>(_7Iym|Zf?YnpH-oJnU z;lqcIA3uKj^y%~G&tJZL`TF(iw{PFRfB*jD$B&;sfByRQ>-X>9fByXW`}gm^fB*jf z|DULumB_%rxysYUF{I+wo4Yro9-k0$eaI2{iRbIT{+st-O6`)muyex4mX+HSSu_8v z=jO_>oa(3hmZNi_5(5@+z`MxX<(a%$%so@fpJf+M{5O2W`1$m*s*~2%+4rBH7kO`- zX_|9I=eS|!)cNU`v}T5!S$4SIe_h%3o*8;Z&!_iAzcc1+b$pGD&KJO z-i?`?L(OuJEECWRx9pj1nZM|zlG3u9b8UWoPTTae!eH*h#>wk=Cf|Hxm~_kR=3V>u z)i+Y|7rZU2@K#%E)PC6ZFew}{yvXauH^y}vzr)B z+dEGZ-n{u$Y2zw?@%u;Hcfae*cqZ5WIa9CnC^7%yx9Asd^bG6d3WEbUVdv?zrQ*wI)KmY zrgZi8!)N)@PJd1LKFjr-@+Qkt!*731-CX%nCa*5$uG#$3+rHap!iQsI8wR_Dh< z(US6jyYqq-zsDCP967frc(%;lvKzH#mb>IHu1T6%UbtzOY<*4P^@memeJi@W)^q(H z{i|ygYI9Cq)lq-^_UXHobM?PXjr}*{uUwbxx+_b}cI|ur+xNe~#bf;sCugovzBR-B zNbQ_A?(NHGeLjBgWBH%opO61Ly#MjXmzC%1r9SXqzG-M(clAv#v*Amn$#Us}-MRC> zWdFRNtDII|um8U*SEr)g6UhZUmc*!pF@%Ufxu{wdPK{&$szjSJmJ4?ycT%^39^V zCIR1XOZpn`-8{)^%9%as?^x6YiodhvDJ`>Yb*{yx%cuv^K~KiMql?%&PT5B7D& zod37I(o9)>x%7E5wqn>EU_cDsJ5eyUqH*ZAi3<-&r3{F8gWet)bH z?QT+TZ}!_RU!kUAkLaU+Pk8eTUIwY{+_KC^%izY0?=p8-cPQ#6uS{nI<+TUiF;DFO zvs~Gfd8c7d$w!@odAh%z*U!?c`!2@v-e#qdQkpjRr+q$JlLF%(l;p{8>sFj&w|>{t zsjsH}eRkMrzx;KZklX61wO*-Tnk{|z&la0}&gY~5?c(@_LA897KSZZqPYIgp^;Iuz z{f#BzQ-6sptkQ~&o?mkBj@|x8FDLKoc= zAJr3AI@!m(X5GS7%QXEv4y#=Jvh9bb+TPC9zYn+meKuPvA&7D2jwiR)-r4heV%Xz~ znCp4*`xCX+1@0=_eKz~frJW_eZr2)}tPDuAn7QPLXKu|TZ=;vT-ZAY^J+S0f>?vVc z^DXy&snlHica&{+7XJelS7V+5l2&7%(PAWIz?rI(Aap9@ zfXbAQ4W1gxOp^nSv8XNV;qq~k6rWKd*Q?54rxKPTbn3k}tWc&sVi@R)6qUh*MS8{DEDA57URN z<0?~9gaWRH&Iy?0>EJsP%nMcHRGrBZGS$<`Q;jh+brMJ_bf(IbfD807;RI>()u0G9nta84 ziczzdhRU(rRiM;!R^==2(k%;wxFQRiK}K{LgN#sL(c~YswDUsWH15uTSuNCGEA+K~==4(Mv;xX==a;X03%2*g~8XxmUC} z2?cOUhB*0h1$26bIK?tSsP_3@K3b*{(`Tqm3%I^;xzOYlExY(^rp|Cty;6E3_K=~c z&caQ}eyVCK3s&gZtT>{gwQ$|xwTBEly;rPdDeUx&amvj#oC?w$8CL-2+VV`Fab#)6 z${^v|6qhePPK?u)K1rn}1fx+EJI(Uep4}6V#ir=3%e%B#@9WRDGskw#$xhpR@!g(n$-Q@c z(|pv6cBx+9KVSAi4D-ZwJo^P1I#jfmK4t^UA`>eb|MN36UVr)5FL@qV*3;F`Wt~$( F695jZOU3{I literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/erf_inv.png b/doc/sf_and_dist/graphs/erf_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..a802b2834276b6303e35d7914786bf4ce39157cc GIT binary patch literal 6422 zcmeAS@N?(olHy`uVBq!ia0y~yV2WU1U|hk$#K6EHTF1lBz`(#+;1OBOz`%C|gc+x5 z^GP!>FtDUM`Z_W&Y@CZ;iSg1Kk zg3sg64_>wdt6#r<&B3tiRecE~Lz4gliy{Mu6N5ktg8~Pmg8);50ty-DY@jXV#VySw}8mrJLsP4=9YDw}!0 z>%}V8K*2-xzRNG$od5l|E>J}K_SuUWQ=V7Odw%)lm%gpuk<%W3+)?|kz#^yn=*tqT z*=O@=KTH=lm+N1>N{X+&a$dXJwA7pLzaM_RUZv{yiMsv!H|?)>kixgt=oV9 zef#&TCcZBY>^AxR?$D-btGD0Gxwda^!S33R7c;hODm%4_r#|cV@^!BbgsRKR#NyI_ zvgX&Gn!hff!sGgf8BUoMH8nM#&zbl>wm7#*r|+>w*SYiO566plyY5gwy=lW?9pB5V zSFetax3|%`V`pc_$L}{u<%(6IO#Po9AAkL-GLSe@xaZH2xb@RjPR`d`S9@@S`lmmC zY`PYG_@#Z;&eoRK`^+YtH=NQuY}>b4ZYj2#U%&8v*tFZ~1%TYo(->#|Ai_HxA)VQ~++9d8`-=U6Mi{IE^ z^(U!#Ry?_SHB{z!^T7qRDL3}rmom$>?*G4nw_)~aUfXMBfxngB1|NE4cm0jE*@HgE z9eeH^K73fCORU@VHs{{B^|5O`C$+>&Yp=h#FQMYpCw0X?HeCPz9^ztkJfX(&@KafR z<>?)BBHmsr+xg~4k$_$}&*^Ty+b^Ep;3&O1U3`1cjjvUEE&BZZ{li~P+Rz)vInTt` z`P#i%&gNV5pFAtd{}wSx<@C-SF^})n{F0R}_}=y5+NX_guYOxEZ(qk#`)Q}bo}W{W zCSBZjS$};%g@)Sc4>^Z^JnY&ayyE_Q`!}cC5;&|cJ+iQ~wB%H-PVB!jU3~kWCUHPEiZNi^ElaAcCeBJAV2^);uGb_s< zJpc9Z9q*4@a{Kn|;W@jbS~|~8^$y?n`yX8&%wth}onath^W#~5eSN*vTrt;)sga?f zr-jAe@7rO}VKw`#o}S*JiPGum=?gnJkDfa9`2N1y?A#`Wmi6n*{(alNzjdyE?$^() zmtOT9n$tab@??Y48?V2vJ^ZL^QODySA3$J3=B&w+CqI7tc$1FvgT3|t>vrx~x$4!& zzCQm+DXCnkp`raDHdjk)r-$>+-SB7K=}k7)*3ouF&-~{L-J2pWV58dZzoE==Mr!1Y zzxVSb%gf8(8%Nx-vasMVjo~<&A91I`Mvkvt(d)6rzt{2qrSe*8+uzP#q%rGk+V0)E zAAkJuvFq6)jcNT^8eK|De%rRnGm49gztz6~(c#Ah&eQBmdyYR|q_Iz6k@nwfCcYA7 zbrZ~)nkG!w;)!|(2G1(@?cObIdqMF=;^(N)s|ODr+^+lX#fuf|UcY_&_QQ#b872}u zhg^=IObH6T`uh6%!}Hq?C(c@SnmcOZ^Pj7w-^tBkXJ^lx#n*oL!lw;8^smIlhgvPq zw3_R8SiArDW9w^M7YcVR;`qCH@7~yHsV`0ntULU$;OU*}-2GeqSFU>X<;$0U%nSwP z|9|iNnfxIjZhzh0?c28piS4QTyUR8&r}DS7>&4mT`TPF=`+dLu|6bX{Hnz5RZ{FPb z^=SOws;%3%U(Z{)ef#$5>J2UXw{`bDw&;6Y|L3uM^TCAdZ0$QgpB`Pi=g_%xe$!GP z9?ZYD=jZkP|E|_GUov_7wd$dNbaXU3JNxCAUy7x_TsSxTR_a=v?`i$Hxw*C9@0RD^ z+p}}eo;^Ev%=X{Em2rOdz4H6D;`dIRJ9qBq&!3+Hn@?xIN;`bXB=`68ySvLLpH%tt zqvG>3-&xD{|M_%!{r-Pa&wl90w^h6jez(c#q2nGd<4KGQX7lti!Rw!fyg~ljTB{}dk8i%IBQrx#Xyf(QzG}kmhYortW{B*Io%cNd{=QfpvF@Wu zcJt3a|Gawj>b-mSJ}js>zIh{qmQ%&SLtAyG`A?NR7c6zW@W*65CQ-$lO#-D4W3nI4 z+q`*m!L3Wy%O0HS+?>dp`)7HGz@gfunNgvk`|szU-|;upbSYoTS%^6EmDbNcZ9FI0 zoPR6D;>aOuI@5=bkMGuNrGsf2r$2qvTfI|F#+~E4>HPDDdk-djX!W)_z`gaOe5R;k z&F;GW`;EkAsd(;CSQ}}uK&j=d`AnZfSFhf7+MsiK*E)ZHfAcyMP8LN0RZpY&=U?yA z>w0u~xxb>6s{)79i)oW5PyYM2_9wgkl-ibp`273(Wck`}-@d*0;)!*R0xcIT+uPe8 zmMkumd0rVeZK++O_>l`5cfvzM)6>&k1CJEel$50Oh_EP@oG!4qbN@cS`t*y^3LFcI z#kyTBvXo?kXDnNp{K`?lsr^aizM6}w?g0%7EqR%<(l$oCV6RwsMymC<*Q6t^>J9=< z<)W?|_wN1s>c6hMU0`VFyyunkc5AV&(RE&25P$vp_4&VpWsX08{`}#OLkANUtalJN z3|k#m}?rS`;4t!;rfsGICnvw6$}* z)O;@+bei-%-nH&NrE2f0RZBqW;NAK(^(l?wr!Hs^-8#Dw zqj!eeVR`ApLwlM88vKM?;7z?ocC*=MmtD>jUv{rifhEuL;OWz+E&AFIFTB_A^^15c zLw~w~giGKRle6vo@?Y5W{bH}jTGTiR9D1BJD-GQC+7P+&b=3S1O-%-;jT|{_9Jt!% zU-g`%;<@Qh!zP`tLa+ZYzB_b#OTU0zVC1yY*zdppUd&ixUQxKqKyQ^&%kitPzgF#? zSLfimLW#w}RfB^uK#?%rd!r!I!fi27g)S>gcQ*m15AnX2OJ2y^|7YVF)sK zdG2aCt0F^CfB=(#>*bdwzQLL|es$|Hyy#e#d1#`L?0i{e4#r(8R;^mKijSYa^eC6} zVusoIX0uIwFMoW@8rs4T8*;rgP^8V7Rnftn`=E*^Pdk@W!#U1smbs>G0!$@-mrWiT zI99W;DmsWO8}ua$YH%=GrJK#}ba3Rz&H}}Y@ZSTYg3lv&RO=b8_ZxU&- zabsy~yb!m3xjBpCn)N4BF1`PL`0cKBuXkNjzY`pLJvCB_L$u|CkxqZu-96u;Bd6`^ z*v-9ofl`0~Q;GL(WrNd3*Ds2;eE9U{{rlG}`+NgM9=6FgHVMQTERLvITc)2dE%jLw zms11Z)A-O(-^)ufUwxmf!1AK2Ogv%MvNi`+MThOL_7_C|<8*4sdpiG@Kgd*2syJRa zN2T+Ra0|m+fwF(CwcAAyzw&$7RNYdz(Evt5D3EatMw!!_3)?*H~pk)ttBHGap2-Fc1zOq2Lo6cv6t z2r%jU&3Jf8?uNooftCYp+5K4@57XPYn*?s8n73Q0$~Otz_|tSgK)p#I;6tMViy4`CB$du{jehKj5*)k!pMPcId;Q_{y=fV4uMfBLCrWu=Hp#!g zuXoXjs*63PdB>W!sLW}}&uuR7ZFiG@CH`?%k6NZ%`fNcz*S#@sWo2Y^=1<2};4P6E~QP3QXQ>*?LwUteEQvBKL?z^>I) za?+(9@#{UuEnK~0uZxR|fBtE6{`0|v4SA23+R4rOs1)_dL&nbW`rWEEznae%XrKOc zxSikK-Tm>$iv0Zby;r}^)M3_gdchJd%fzBMw{P$BS(hfI-pnw$b^Eq<*P{my4ywG9n@T4^WMJ8zRDxO}PGe}CSB1(~xR7R-45Q~0}2 zL`LMa)8%2IrnAq=ZM)sQNTW;X&Wcr9r#Ho|zyA8`q23K*%Pzkx%K!5FulkGLlPRAb z9&SIGvPrEv1|%Hr5@;gV|Jg>r>rv%?&BVPu#~-KvKh*Z#?}y^op7x0y3*3ps;XZpXDw`PZSCy#?b>x})0(}XU%k@uz5Mv`g?v92btBo zdi833n}3gw_b+5jjE#wpZ%^O)-G1-$Up4pMboI;I`>9Rd5H#=mY$3bt{(Ic=%obmN z9UB{~E7lEia{u?*eVX5Mf+ne4m(HEs?#AAHaJm2ddD$-?x}2=8u9ml}dGWO>P()Tn z=1Ha8@sBA+m8axqB&uxqTN^tqHTL@Ai!WZhcyV%8VP)k`P~(%6xBc+q#f#_H{d)QC z{nEKth5r7xv~<2-mz$pwc}=YQ;r9CLWy1H~bg6jq@$=7KR{1D6@$R2xJ;xva{rgva z9Y?;|;#I327DQbC`t#>cR%?}`nT@?>YyifXLm>%C%U|Q z^k~t#*U`#96Vtc$xGi3_3Y1V^Ygt=cSD%Vk&t9E5>te>2J+XnIp%Sxs_gByR_~db+ z%>4QD#a#=_%Dzq6FBRT%{PE|{pEqR9Q{~=WkhO%D=g`4~4?2PpEeCH17(di5DJZxQ z7rj8E%YVLIYp|~UwhKKkOQh!_+B=NoYs1`$bWMu=h+pjvTWqGAB_nO-5aOx zd-TW5c#?$j@fzQ^BY z2Ze@CQb|k|b^SPH_JgNsE$0&_skjEl#KgRL`_?wn_}>2d{hwNSV<)O~7Js#!_utme z?%td7A2IR^%HQAn`{Qwc{r}(h53}^HUAy-EzTfYT%h%WZ{`NNb*_U(Y&Yidazh~># zuYbSaH}?&`{x!ki$Is{U>wmx94$>1H9qoU)$2|YupKrJGLCy7x7XxLE+yD9CJT0{} z_W!Tf>-Ycv_xswlup3PKs=w=bPMQk_?x$YPojaFb-tN!m`Ty_Sy!rECyZj=Js;{rE zK7IN$fB)ZaI*vbjT+e%jA1VCv^78Wkf1cYTfsocDEtLpo^ zyPxY4Pj9+&^Je8Y{TvCY%2WDp*4lqGw@{M_IDa|!qciI@u^K-QS<3}-*BTykRO)Cu z&yBa<$m$^Q=~LJ2r#p2sXL;E<2wduX(#=!K)HFelWAWTc`~oc{dOv&0nC>rF_Zrl6 z+kd{oWtqYgZM&_fi>+1V3*;Zx*anL9x-Cw(v29X#;;-}mmGO4riW>?!{*MZ)s^AcX9-Tazv~k;QNyi%t&nH=*cfHAObMyQ=oAb{<|Gd@L&2@-(yUnxA zeEAPL(F;v{Z);1nP3B)Oy*%Q!hVSJT?fY#v^&+Q9evbKnwk3E?W7mXs&ixbWPuVdz z-k9p86tnawpFM-)4bjuWaXi&b9EbcOe@?D&J>hNo?QZydZKK zFB`M0(~nS*;~%Z!+t^qX`6HR6m{KDHMHXLt@#Ra1K$F6qC%SWmCY<-2wB&EXmD0QO zbj1W(W(zm&jXNLb5OyYQ^Xb#4|Ni}J;;XNxcPk)fCHL)OPR6DWs+qHvX>bWA{%A7s zoviZlBZK3Pje;2>Q|x&UefxHMd%mg?$01(rY{BP&TA`C59Zcm#utlzK{~guq#e5>Lx>p3CCP_wuW`=3x6(RC^6^ooy@pkx8sWsjto|^Euo=1?+7v6 z;yFnrQ$6=;Y3%i_d5n%Llu|zTf{H)2$(|yv>FMbY-A){R+CDXP z<@yJemJ8(Mj;0vRJpbHt(wE-e|`ts#tRI<;#_R430l+-Y7h|d9?7&6uu45 z%qlakWTrB_D8V%@jAPjNkoc+AN>KP5E6ibKzHk@Um@>S}k2K_bX!@D293Z{BC>nG{?$!VDU>;07<0XJl8T~WbZX=)?TWZIw}*jCGIwp?e%<73h0VE5Yci!S z&v10*xXX2@;PInJO6Nc8oW51f;K(6cR00A^@!QpXZwjw`rvjQ{7X`7h1zAj|itm29yg0|Nttr>mdKI;Vst E0MHz|UH||9 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/erfc_inv.png b/doc/sf_and_dist/graphs/erfc_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..99d5d3379d77ad4d0edf3f2ca16ff789062886fc GIT binary patch literal 7463 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 S6d4#87(8A5T-G@yGywqB+4Nrk literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/exp_on_r.png b/doc/sf_and_dist/graphs/exp_on_r.png new file mode 100644 index 0000000000000000000000000000000000000000..819de7c682f99980071e7ee75cfab670e173b7c2 GIT binary patch literal 3062 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/fisher_f.png b/doc/sf_and_dist/graphs/fisher_f.png new file mode 100644 index 0000000000000000000000000000000000000000..31b69a0636d4c58bac9a058ab8d11b3c142ddb16 GIT binary patch literal 6397 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/gamma.png b/doc/sf_and_dist/graphs/gamma.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a8c3a804b246274dea146b74b5173938aa4f84 GIT binary patch literal 4035 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/gamma_dist1.png b/doc/sf_and_dist/graphs/gamma_dist1.png new file mode 100644 index 0000000000000000000000000000000000000000..1239dbdc7d1c723cd41d92a9eb26e54ceea3334e GIT binary patch literal 4955 zcmeAS@N?(olHy`uVBq!ia0y~yU@~W5V4TRo%)r2~E;{KG0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMObhS{aoxXve?vpV z{`>D47#P;CU+>`H@c#Y#|NHl!KY#xI{rmIh&o3w_=utiEhKzSSqK^lrzyEGM-~Z?T`gh(;OSf!$xM1zu z3j6CFw=TH0-&wbHl8%E#%QNo+E`d7=I~)s|AFwGxsDr#s(k&0zKopBPN1i~FG?)UZ z;>e?1aUFZ!8i8M0{!0uBinj*MKBFCf#not!>FpB@v1;uq->faBKYxEO{Kw`gs^@}( zEyLF~WtOg~tXLsj`=I~znW)2OcZQ_&y1T6nFB3FBv^uJlZ_*==<6M0#0`tyjb^n-JP`pm!>et3N)9xKFcX_H=eX}saBTn9iw6S|bj*()Yj+h^S{#wS+GyL4>(_1zhqs&$$xoVKxbS&xvc;0T znipJcn|?@cUh^(y+SIjH%t@i8@@w)QJhQp=yZYXmsVg=gN@t(#v?e@pa_02)S%Imu zH)xjsep9&kkNmdxK0CE)W`ESL?)bDuaO3|^IcvK@?^(*tzh0rSl=o-viL8s;))YN; zPW^6p&DUh-%_0S3%|FxA_k6fN`$X?Y`BVFy%WwLu=1X6@U4G38lRI-<-|pm#?D}xC zB_m$&Vd(sXmfjC@U-{R)xl+3Cc6$G8hQ@l`?;BmOFUmb1etVC_=7sFO=Y4BTYu1~u z%jRqkxE-S=v*Yab@PjkD6}Oz+%l>-NJoEVHhC9NP8BK%>irw-a#b^I{<0`yUFmHS3 z-MzOjR(Z5A|zWX1}$oz8hRQT_|qy>@t`A=Y8*eeNdhEB+>hPZ{G4L zZ_+kDKCwJ9a$n}olV+6xl{$V0&;AT8({!@9tTlO8cd+`-m)~!`o>#NE_H4-Nvxa$F z`0a}S^u7$z*uT2tpIfx-=LdRzsfQK6ImYprKc60VRo9~Q+Ps{J&z9X!zhUe8;>m@- zzTa=znb+2B&Rbs7_r%;e@7ABR%YL_7zpshf?E1wycFrp0_gj_r|5TcJb(zqjJ3saX z)UiBCcAWXm{I1>YiGA0tdJ3J=r`0_OZizdWW&9vb^jL6dM_OIXmaaP*d+q1ldaTyB z{Lu`*rw_Mk&04!ve&y=YZF$Fo>n1FFH95jyp4I;2AOFtF^^$H5+h&&f_|YA&{hgQf z{-*8rzpbA;N$~&iyMKJ=^iRCGs@8qReob$F?+Q~B^Fz^FX0NfDvA^&xO-FhlOPw{9Wx*1$Cz(cd%%{r?78{UkOF3N zc>^}{0%lN20V*O2m@zmndhWc~q;qK7emA+i2Wed9Rv`frOLyw?emvZ1v5MlIqLf z9TPwLMPL0^7hS+?9-OjPdv5Sw1FpOWX|tS`&Yv=Am+p?4-MppI1;*mD-6YoLF4fx6 zI9u{g$ARA0t1mue%bO;dJeM(Vn#AGz2YA8W0GoRU!KwAmo6^JIYEqWnQ_8kOa(bwh zO-tByrg~=c%_3U)UaBi@H_f(ORl*S#+PJ@Q_RJd=+7H?d-C3@CZTVr|I|h92 z1oybki-ITN%eIp}|l z?~caVo(B#+Bw> zx;q+YyB>SMmN!izc_Cxo2UrwWKmV{tN&gxDPwlmj^B=I~L6E?m3F3#(9-kjAW)>6$ za@fH%*>oAUQc!#di!@v;RR#so&O0GhFY>pYZ*eP_{KzdkaAj5kPkZr7zLV~^y1!cW z1zoF*i;*p-rn5jLCgZ@EXlvU&ksdR z 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/gamma_p.png b/doc/sf_and_dist/graphs/gamma_p.png new file mode 100644 index 0000000000000000000000000000000000000000..7c289e760d53f250914d68f9543db817c78e7963 GIT binary patch literal 5042 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 XuF>KgDL9jXfq}u()z4*}Q$iB}-`Kh6 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/gamma_q.png b/doc/sf_and_dist/graphs/gamma_q.png new file mode 100644 index 0000000000000000000000000000000000000000..a0df88fa796945ddddf87d6f7e2902913521a130 GIT binary patch literal 5052 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/hyperbolic.png b/doc/sf_and_dist/graphs/hyperbolic.png new file mode 100644 index 0000000000000000000000000000000000000000..48ad0bf91e04bfdd374826f1d99b9e5d1693cade GIT binary patch literal 4244 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 L^>bP0l+XkKy$YZe literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/laguerre.png b/doc/sf_and_dist/graphs/laguerre.png new file mode 100644 index 0000000000000000000000000000000000000000..bae1fa45e9c3729d8367bdd600ddbc5a33f1704a GIT binary patch literal 7610 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/lgamma-errors.png b/doc/sf_and_dist/graphs/lgamma-errors.png new file mode 100644 index 0000000000000000000000000000000000000000..899ed28abca04fcacacfd31a1b5336d12e5326e2 GIT binary patch literal 5732 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/lgamma.png b/doc/sf_and_dist/graphs/lgamma.png new file mode 100644 index 0000000000000000000000000000000000000000..f053d7c90f231b3469cb001fb6ff21cb912095f1 GIT binary patch literal 4313 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/lognormal2.png b/doc/sf_and_dist/graphs/lognormal2.png new file mode 100644 index 0000000000000000000000000000000000000000..63522094ace7a5484b915b007734beb6270736c3 GIT binary patch literal 5147 zcmeAS@N?(olHy`uVBq!ia0y~yU@~W5V4TRo%)r2~E;{KG0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMYz*)TaoxXv|Ni^$ z8yXrI7#RNV-|yhyuzvme`}gn9pFjWo`}gP1pI?9d_5bzj3knJX0s{K``x_Q)FfcGk zNJtP65KvH1`2YU>`|rR1&!7MQ{{8#!zyCjf{`~XL|NHyrpMSo8!G`|hkM~blu>bu1 z{rk`FU%$U$#h&v81qBlpte>%F{fa&7kKbN@{{H#vkN5ZYzn?#U{r1!Ax9{FxP;mbG z?f&)q_cu)FpD^S6^34S^*3933etki~`uX$!|Nmch?rJClgU|<07srr_TW{ueCapR( ztJV9NQ=^!vq2Wo(=X|yK{N*op?!Nc`;4ZEJ$C=4Ot@&?dlUY`Ed`2`9DqHX2%&u&w7&ohcE9;SmIZk+h1>e-u8M=#EzZ(d7GG?-rAdYZS~ySaVxd_ zLizK4oibL}%y}D-$zwkM@iF~1(UsA+dG7?gT)%a%uh;A*jZNDx@haW!OUcSt+Wh_2 zw(a*s&39!wiN2I=TD$k6o089uRP1t0UU>22`W+L?lBA+;Ow-f7xOUIhPme$UNfQ=P zomKnQZe8xrH1D13_I&fXxUE1$Tl>6~y{CEOzj<=n8gCa)))CC%vM+oalbU}@ZoA-} znzq?T{yhA-t2OzuOXjs5hfMaD-b+b6o3Z=ZQ;Yj*Ns+##{;aQhcO~jX=leG&FK$0R zw>i1<=(=Z}H-lEKUSXU6Vn@bv->h?a#WjysX=rYHB0A-p!Sj_$yDgWc_HX1ipa1Y! zZ2Hedvv-zHW0-U6%a)g4ynZ@%9m##>cH_22$g4YRSj|5zI-+b|S}MCg{b=RSo2}nA z)-Q9?zcpv4<=ct!$)$ytcXP9uf4w7f|J0keVxoC{v$J+gv|`A4y@PY>(izPCKhLw8 zPgk9{W97=#hk8$RTg)wAa9O%M`q{D@i%mwnmvZ(7^&yIn@+(Rb(H@{&E9w9xuWo3wx2m*uDK#C%^a z^w;J4v?cEry$sl47hdqrf9s8tWwZN#Uz{(s^1|6rsr?^=%}whk9N#$g(~MIer(Slp zOORJTx-Gde(<~^a=YGoZDrxI8-#9lfR5Y%8{Cu%N-ip&7x0e+e))lXMZBdupwYu-V z%cYvzY>nFIMduvPpJFxl+S3o4SGsB)%g+ee0wK3s!UIogZ26 z95{R7aP8)@NqZ#n?5^^w>$lA|yz{`kfEiS>+)?Whc%Gzt_A|a;j#5 ztHjcWozgt)dAp`c z*}Jjz{(-X`nR$NSzc)+okUYR!$d%W|uJuUd&INvV`$Hfu$oDVS?MzG(&T}hhet3ZQ z&Vu~MZG5749)QBJkn5p2N8SUrypG@(^ZuxPvC)5UwtaTuotAlZ6FQ%~ZJ#YX9aT*amKht0J=Bcjlw!#H^{Y3$NKQ%g&X*_0#7h;q5BgTmS+(F% zqD8^w^Z9$yx&-PjclcgSZ1I;q;LE@Njk7(Am0NaRo#vw)xX=G~z|L|A z?@YzC!c~2ypJt~;A1rvV>}LLhXWr4*_nQ6qYW4aRTlV$8 zm3cv@eRWUEzcW8O)v(2QRix8o{U6T`#>704W8P=dyg`k-bZOLV@kJlxK0T^w^4V5c zTp{^Ft04HgPU7JwDI3F=ES+T0wIqA##Aj+9i?3{%kovU#`nprj&9isill^ko_B7Y+ z$02JUZsEPW;Z45F<|E4_uRUwZjAvQ5EJfEvCQLc}n6J{(*Z)n-rScRnZJ9g!X@LL1 zf;RJRpF0+(vz}O;+Hv!lo$#)xw)qjo$@|)0O_}sh#@x}&Yx=L|zst7jwf$=|?-un6 zKl;njMeDKKVWFwL(fOx8&EBe?T*>}db7|J@kog~_pGmcudrQ3DqS{lM(G{Z|H1X5< z$}@%S7kIX%{`Q$H&2;t2@%(FQHF-xbSg789trXxpXZEy1=eAraIbyv^DZqEG^y#fu zJ69UcS?AF5&}a5+hxCLvb@S5)?@V~$W3yk-D?)k4%T=fNAF}4P9oJ;Ksvd3rBKeWM z)%uycWIxX`ty8vMtrSqZu5|tL!=Xv{`ORyenPyL0R({=Ofz%D1n+5aczhXasm4Dr& zmDznZXN_5={Z9D%;kCon!@e9L;%7g-y7D^1U?0yE=~G+fHSeD>KJqZrZsE!1ck^aH z{V zA~#8&n|*ZAz6lGtvh{d4<@;tI?yj=_`{7#tuTF=rqGvxv+*z@7v%T&8yz~W}tt9yFe0lin{MFp^);k(!$4s31BE_t$$tv&PNKKad?emCD+=C_w<-naGLS+2X&d7gXEep(f0Ty*`SY|-TV%g=J{dGhFAo!jbD zKFyN*O5&=goRqoRkoI!Nx$FK@y$)A@o$aEv`dI#|J1J(Dju%9v#bix8yeQ7y`sJ>3 z;j!`0%k+QtzV|-;$!h1xS1(0Za)i7}yZ$q+yGnkw{nuUVV=hm)93aK15>UG@(rW$Z z(6BEVe+!IFx9(ZB+tBDFZ8x!t zB|Y!)(fe>Ua86wivcJs}0gpZ`2du@Duq;%)c*xU=Z-n^kv0R=t!v^6^31 zygMS|Mlw5h?l9X^oK*A8x&GetTD|O|`*p!J`pZ`6Wxq6%Stl}os$$%4-$aY)h0BeD z46ieomu@ZbHNUWUmb$s$?)xQv<_0as-g)1aANigc8SfpwL@D6x#Mzfl+}ou1ro=@n z?BSV-v#+w6mu}qyDhA(}>$kV%mAWrcIyiIt{T1JrdEHVLo%!+1&PcPWVuNYqS4zglzsMz4g!bXU@06R&Jh^bgxc%n(lFs)xq!0?^T~R%+=(3-J^cW zcjLd{Q)T-rBezVsxGh8E@Ju!Hl_%a!7VIwDADG*?O84kOcT>;2PrtXUR9R89xmfRY z#GVy_ntZVzIg5qWepQ#%@2_98Rr;}1uB2adm-B*IO6GM5I|ReBLjN4wxi0zVl`y~0 z8hqcE%}A-695L^``1Y+f#l;iF(!IY&@w%^#GnD!D(9c)&ZQJEJ(#aN|AEt#~*UU1X z^X$%yGZokBE~i@TRx5~TGY-$=I{w07&fhMcc8kzp*WVI-??ToZ$oyHR=KRuN&M{7Q zp7e7+dw*_d>^m%7^;qJZ&5o7pghC>h}3Q;k&nxCtdE2$<+^6IM3bYJ3Ld@eD$v{ z%iOc>u=qJypS_ts<(F$OQ@i8i%;L}YbMI;{o_^G#;6%YQ@#R{kI`M9e%@5D$`-Q5{ z*rgn*YawxN&F9&6wX32ER34ns@$2l)7UH|B*;iG!x2n@yI_;Tx_-ln}?eChh-1-dX zR2CM;9{e55U$8E$uWiY(%g>%A&03gtH?;rGjULRn`@J1WnH?nrYhvarZ>TNQnzt^-cE{aawdtwA%Cv*N*L5BF-|tNdJy|qk`78$W&ZUnh^enpc_wTC9 z!FP{-?+N`KeEihocU$_;`4-++QT6`r`)aP({G_YZ`%lezd^NP^k&Tu4(Z7E~e%j@p zd+=y}Rn$4nh>6nv&9g6PKQ(9G6|8#t<@Bd-ii=bp*i_U_?(#TgVAZ#(rz^N}+U51h zOXKGI&U##Iy!7}pw^w)Eel40g``%Iez52i2zK|$#IxsWJzQ%NkblkPm`ucxQE;P3@ z&71Rass6p+lb!QxPTk?*Rqsx{pRx5<{DGNybEM|A?fG(c!uR?=+-u$EXr-PwJ#X)) z|G%qmx6fNBd32@I=~Vs8oO`dHTF9w>@a(_Rl=4@nN~(C2+8b}#um85?(c|LBch(fl zeOXere$&L{^sP#9zFo7=_nniyw_8tbx~JL6ol$EuPPIQvEA`Ind0q0<%2AHHd_nX5 zm}gd}&29@G7j0mZWxDp}^K9+gm6`pat2iQ-oa~odek4~sLe|9k>*14*KetyLEt9*G zzc1m^ugsk*jOFZC#>qckGf(nHl#&kI`EWz>;5zMB=}E$sx1!wccSuR?sZui9vi9oY(<|^ZXT?B zH+8ms&Gx%74?o-2|M*_?VONQq>~@)=dAlE{ecXIUB4)z?EmGrd-6r+2fMWM z!tBrWuG}%Bx+3byj~D;L#lB=cV4QFLW%dX5e9J|?%cFiTdf@&)KIXyXzsePNd+-1G zuvF`zs+D`DxRzrG53?n!{gQL`@67G%4^O))#?>Hq8Rar?jDK7Rc8 zdcK_<*M==|51u`%D^CA@RETZf?37p5$6GeOdA+|!wf4`x1sR1uYfr`8oi_XPsxQ0$ z>{)R^_}Tql@4MElo@WMcZD;I^@S3Om<%Ng4V`nbZ3f!uHW#5#{^7D0{vjsVtIPavoqKUUw<~$agvO zx3Bj7HhIVfYI`p`(+*LGD=hDDmlf+Qk$HS?$NBOJ zw!Tps^x|k<=MqS|IuIKdS`8@uJTq Vnnp)fGB7YOc)I$ztaD0e0sw{&TO$Af literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/neg_binomial_pdf1.png b/doc/sf_and_dist/graphs/neg_binomial_pdf1.png new file mode 100644 index 0000000000000000000000000000000000000000..5955875b2ae50e107240e8c6e49c6f86bc5c20c2 GIT binary patch literal 3140 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/pdf.png b/doc/sf_and_dist/graphs/pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e92bb3893caa8d152b2750c21ce325e305edb2 GIT binary patch literal 4273 zcmeAS@N?(olHy`uVBq!ia0y~yVEn?sz?j6r%)r24Zhq?-0|NtRfk$L90|Va?5N4dJ z%_q&kz`&C3=k04(LhALGChK6PahM)f#7#dzMFa&WhFp5Sn zFj!4zU=Yv09wk44fq|JJz$e6Y|Ni~&-@jkKemw&NLqkKu{Q2|m-@kwU{Q3U=eg_AK zf`S4A0|Nm80R;txgoK2EfPnx1{|gEV3JD1b3k!>gh=_`ciiwGdi;GK0NJvUbN=Zpc zOH0eh$jHjd%E`&e%gZY$C@3l_Dk&)`D=Vw0sHm!{s;Q}|tE+2hXlQC`YH4X{YisN1 z=;-R|>gnm}>+2gB7#JEF8W|ZG8ylOLn3$THnwgoIo10r$SXf$GT3K0HTU*=M*x1_I z+S%FJ+uJ)hI5;{wIypHxJ3G6$xVXByy1BWzySsaMczAkxdU<(ydwcu%`1tzz`uX|! z`}+q31Ox^K1_cEL2M33QgoK8MhJ}TNhlfW*L_|hLMny$MM@PrR#KgwN#>K_O$Hylm zBqSy#CM6{$Cnu+*q@<>%rlqB&r>AFRWMpP$W@Tk%XJ_Z+( zlqplDPMtb!+O+A@r_Y!%W9H16vu4ejJ$v??IdkUDojY&dy!rFzFIcc(;lhQB7A;!5 zc=3`YOO`HOx@_69<;$0^Sg~T|%9X2Dty;Z$^_n$n)~;Q(_7CuwmoIjhi-Y z+Pr!5mMvShZr!?V+qUi7x9`}oW9QDDyLRo`y?ghbJ$v@<-Meq!zWw|6A2@K};K753 z4jnpt`0$Yjacw==N`9d z(~s63-u>?@$5*5Lb!%q6{JT(kO)1aXtvmibU$M8eG3s@qXB5ZZ$BX|Ih1k`8VK$Ec zdqY#{y4enm3oE1?n$4o7OF5`32iJs0)Xo3!Cv&!gcSmy9&R5r$vfaw~YiZdar&RZ)edTVQ5h#3Qe8}C%+-U#Kw1z(>3WWTnqMQ~%!uI`+_ z8|VGc7c1OS_Ha8D>>Ys?kRX~IG)&Kz0HR50Om zmdX^iFxJ+|5uzV9rp>Usx4>wpOh4!4-hBZ6<=68hc(5`WaSfPyXJ0>e2mG2X-(t zJW@$tdR%|%?WgnOBY4);p7E#`IysB!ho#4L_rwMZHUovfx}TR_-mblE(dp|BHQ7Gj zp8jS~h}!4U(ZQe)b#v3+wr%q-%zBc(+U%6_g|EVG7N^&r`)K(0*TI4iVTLb-%z|qV zJU^r(op6n{vQzPY;gM-qx2%oiUAn(5YR!cU5QFH7sz4!XAS`e^n zzNx_L$czO&=d}OY&5UN>z{bhz#Xn&|T~uzr{Pg<3DuX49B{y2#j@#_NzkO-eGnvH_ z{n`cpR<>T+tDkV}jKjJJZH9~)_nJFO3Uy`~xi)U#)ViddvSMPY&J&KM!d~iA{50kU zSS>7Zdf9S`6H_1I9 zY-euDu;pcp;ibLuHx|dseUEeOw>(~Qe(w2r`H%G$y;I(q{+*fKhd!^0v>ueu_ z+Cq=Cn=Uhd`Sqc7@{($A>HjNJW>-(0D-=FV)+Of2RU()Y?x!5y- zz+L^jqyGP&FYU#zwR66(&C=@dov-)LO^UDb`rfnR&ux)V1NCQ46Yb{xv-8~>v@3kZ zt!D`)Q{D;oZkVYxB}z}=<;J_(mt7?m${o|}JXf?uFU)P1xyEhnMbr8&)pCA0T6W4S zuqvZb&SQl)TUEtEJ;@gjTX&@_XcvDqsZlO&{k#1oyC)aUulhRU(%t)qA6=7V^D3Wn z@Q#)HzMx%?*L*#@`NgzLbC+G+em?luzvh;CAoin+qbA)8t>g*N#em>gplI-2>_fPFu$$abND*4Ylr+kk1_1=E=muw@2nQOhO=6hTApWpjG z?%3MOW~KR!*AA^%R-%7u$BLm`|9G}GKEwe-Q#Ir}Hp zJvCa%#F_P)b;iPkCA;H}-R;`Hbk6omNB8%in00Bc{^Pu3w>KB<^O8ThUw?7ZlHIL0 zmvCfj-c>b|?Duwj$#*d~xKi7zyfgP$vSH9J<2!ZwmrJ>vU!L1=rCN(uvona3FDh=BuYIl!^-PL}1_^?#g{;1OROYE0;e%}!K-Rl>#d))e{()mmJ z`PXdJcB_i;-BrGJm;WVst9QSytg2SoTm9zp0+FTfH}+J&+3`AX^}GHr2b03j`8U3E z&cFJ1;=X6~bC<+VW=y*F{pcF|{KsFO8!o){toq^t4a2j?tK0r>T3o_@8WcqaXP+P3 z&$(^NXZ5|&Qwr6lS6=okect-!-kylN(>?NYZ@oAjykN5R^@-nmzQiid`{+{V`|@|z zrTLc>N~Y{nKDK<0%36t+)rV}JtMbgdbNWU5mv5en*Q)DRe{kMaajko*$b_|p9=(#!s&m2O{J zzW&tau1n6ZuAkG9UAn*HS!(39x56fV-u>Ov*WP+5Y@+8aA0OdoS=)5%X|DNE?Qpw* zU)&OY>tlAGR?m=`w(pvL?BC1~d%r`H6({_y;QF%VB>vQBvHDzI|L<>%S@D%&y~f2g*1O-OhhLJ`^!nl6 zyYPCp>&xqIMQ?-S{u^yu{Cb1*``;7nbQ&xUqzO?*up_jZWJ$Ftz@0sty%HXV=xTNxKf|#x48b%N1%q5L01k{e+{C2~m*iORX z*OdqR75A2J>yMuBob&1P_z#nm84`9{E&ZxwKG$e=+>THB!N*=NZ!Y0H{_>dXt@^^e zj*{0(PhKU={BwCjmi<4wgj3Jg{+Zr9de3Qp)f}0{EvMf6P{pP_Y$*|2Zv2YS`n`Gew&bd5N2}~^`pBe5eo8Ez z?IiZSyKAjj<`$VZVSEvMx$h@#lV#3jKfT!Emg?h*ZM6%!-fm>k`MRNsUu53IF8D2%Q?*{HG-V0<_UA^NrPo8nUi58Gic5B@N_aW01mc`mwXDdvC788$RL Wnty1jL=FQ31B0ilpUXO@geCwlBZ8{{ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/poisson.png b/doc/sf_and_dist/graphs/poisson.png new file mode 100644 index 0000000000000000000000000000000000000000..abb5ab12079ace4dd546ca11d02ce3a20446de69 GIT binary patch literal 3206 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/quantile.png b/doc/sf_and_dist/graphs/quantile.png new file mode 100644 index 0000000000000000000000000000000000000000..0ecc897ea3f168206a930b4a2bf90bc32fd3cc2c GIT binary patch literal 4107 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 ZT$|5lh1=)_FfcGMc)I$ztaD0e0sv_hDMSDO literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/rayleigh_pdf.png b/doc/sf_and_dist/graphs/rayleigh_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..c0819e5abcb695d2af00230e17d3bcf91c2e95b2 GIT binary patch literal 22261 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/remez-4.png b/doc/sf_and_dist/graphs/remez-4.png new file mode 100644 index 0000000000000000000000000000000000000000..6733bac9b91a98eab6d72c4061bbed431a002841 GIT binary patch literal 5979 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/remez-5.png b/doc/sf_and_dist/graphs/remez-5.png new file mode 100644 index 0000000000000000000000000000000000000000..80727614f83a85994bc0ef1a047cec7165164e5d GIT binary patch literal 5658 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/sinc_pi_and_sinhc_pi_on_r.png b/doc/sf_and_dist/graphs/sinc_pi_and_sinhc_pi_on_r.png new file mode 100644 index 0000000000000000000000000000000000000000..fd6fae54d722cbf8336adebca2498ebd98b1f648 GIT binary patch literal 3403 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/sph_bessel_j.png b/doc/sf_and_dist/graphs/sph_bessel_j.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3cee0031ac6971ac2c13ce3ff8708d2f590246 GIT binary patch literal 6592 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 JtaD0e0sx4c2nPTF literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/sph_bessel_y.png b/doc/sf_and_dist/graphs/sph_bessel_y.png new file mode 100644 index 0000000000000000000000000000000000000000..744100fc9360b1f1dadab3a73a566b2de5034c1c GIT binary patch literal 5884 zcmeAS@N?(olHy`uVBq!ia0y~yU@~W5V4TRo%)r2~E;{KG0|Ns~x}&cn1H<|g=B!;W z85kHOOI#yLg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+AuIMHU#*DxaQ^Uygs#? znVETg!ut8m3Yqizro_wV1I zKY#xD^XDBL9102w`uqFee}Dh~{rms-@Bjb*{{8#^2?+`R&z}eJ{+~bp{QUXz|MxFw z*uTHw|NQv@0RaXE2LJ!xS5Q#+|9}4d_xBqb_RpXH|9^k~`t=3<{r~s&=k4ELuzp6t z{Q2+q?_b}4ynp@n{`Kqk@81tnw10j7{{8pYAD{pJ{rscz=dWM?zQ6zYtW8VypI^Uz z`}+R=_4n^j*}uR4{rdgy->?7wetkh~_5b}1?~m`VXz5?Se*XIN>(@7&pFh8U{{H#% z=STcM-#>r7!~XO4_qSM_FDQ6FfBygX^ZTdw&!4}3{`~#t=bvv#5O}|ReL%qa^%V{4 zCp3UW@2_9KK4Jg*f`)*ChJt|pih}<6_vg<)|NsC0SO4cWGBAiTdAc};RNQ(qmoxeH zv6*e6W__~9^B$|cogkv%#o*~6UfR7W>1JQQN&0NH+{?L}Z|~i;`|j@-_t^ja;&TX6 z(wsCylIcl9McmD0d;)3){rBF_VB8_5xMaPlA7hg=i#bQ0z#RoBwZpNXS>TQWhy^44ojo_FTsE^dQ@%a5NqaXgF(soBveEt_}i-q zpQ&~2{Ae}xRO^Iz6Mbz?#pdHD)`sXEmd>+s{F8sZb@rrU<<5`F?;jl!yxY~`a#VC3 zOXdfOQZ3(~oz-W31>CoWE#)*%J>Q+ocBo6d{_fOwO7<^J*2_nWPOLa*YVH}rJ?ZSj zWoIfkPUsUV)sJ0S=KAYQs=)Q|=HnZL{x48|Dfz@)e0pHXP1XI1`(MU*JRe??pHtkJ^GeRR zsZLwCsZe;;bG^$&&jUl3@=5Hx`s^6@)}Xk2Ez8|k-4;hptzTt*GW_Io-k%30)+w0B zt=OIazHG~_i4`WxEYJ9z2~M6qF-A4-%f_8kpNE_e)p@$WaIQ{>NnXzeNj3LN8y5dr z6T5TkwD)hWXGw33`agf3*{}NVipiaKT8`=xQw%4;ip5XV}@MYQl{Z+a*t>3)0S@(!<$_{V4ZT~;qE&u;0|9#zHl z&yE(-pL{*+_0fxQ8nQ16&)o7qckbWgH^J!}5=(+!=UUtdsk$${Tt9BE-Jd^Sz8wD= z{Y~P#ev*8RqT;0bYP~F{iEQR|#zj|me)Q4boj-^F@4v2{&(=Qb5H&VFQDkeH_Gse0 zHU6I>fBuoLdCp${Yi@l=9cR&+?TF3SabxXefeO+Js``Z7S-*>m)`=|YN!oAOjUUh%}{KQRewl;sTmdHykw@*H)dp}

9hOn@9%7W{hTt_zGCsm2YdDJF1Y!p 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/students_t.png b/doc/sf_and_dist/graphs/students_t.png new file mode 100644 index 0000000000000000000000000000000000000000..da5b698cf3a7ca361335e032bc49ad9e000b45f4 GIT binary patch literal 5766 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/survival.png b/doc/sf_and_dist/graphs/survival.png new file mode 100644 index 0000000000000000000000000000000000000000..be20ae786df1b9813d40e44031660ae2e3f16b4d GIT binary patch literal 4818 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 Srx+L*7(8A5T-G@yGywoqx(2}j literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/triangular_cdf.png b/doc/sf_and_dist/graphs/triangular_cdf.png new file mode 100644 index 0000000000000000000000000000000000000000..8d54955a3cb92ed0bcb7f631160a61f239f3fce6 GIT binary patch literal 25268 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 ch6FQ%M`N%^XZ&Rg1_lNOPgg&ebxsLQ0FiHq)$ literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/uniform_pdf.png b/doc/sf_and_dist/graphs/uniform_pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..7e99ab54aea32467d3be5e2e18e4fd154ac5b337 GIT binary patch literal 17265 zcmeAS@N?(olHy`uVBq!ia0y~yU@~W5V4TRo#=yWZvvtw|1_lPs0*}aI1_r((Aj~*b zn@^g7fy*+}**PE}BfliSI3vG6!PD7Up`a)~Ei)&TfuZ8o+-c<@A=ky)&+jd-T6org zDX8t$swc;}CeDyd&|u~>Hrc4Sh)K}ZWtNghz>$WF0V-iG8wEr{Hn6L3Xc$Vk zhUnzGUF%-AX3zIepMF1HlmB+}_np7r>^&bP&M;}Y{`Bc=-i#AY34ds|ne$R`VqnP| zh6YBtga%CppD?#w@f)f+1Wukl+d5CNh$)_h@k3R_9;SlJ7mOSH*#FO868W;G@x=@V z!P%QFC3OVFJ1kVaC+KZE-!(&Ox=xyeYT7;xN5RvbmWdO2?SAWQT0Gj(FjF}lkJafbgB081K1Pwdo zg`Oxqddl#?gEPMHPPop46z(I_i#)y0KP(m&Vl9!Krg!(styzxWpQJ1;U|~AUpr$?Z zWcuaUOF@@s?vY^-d;cfW=+Ui9uCCimwr<;EVq$FccU8du($D!`cW%2@N&eWGF0l50 z_uKVsm(_~suLc5Ufg)^plhVC(GT&$xDE+E`8hK7ZB^{=@&49Nj6_dFh8>KypvR zl~OH-y0`2aT!IQ0e;0_vw#3+7_*oM%gP4+O%8H5ShySw zZ*YEV$O>SWax~6hJ?^M(!FsOQ`+?LB#=Pd=2_ilX=?P+c*ti8)5*3YH8lNbNdI(=? zKcm2w!oSmTUx0uJ=TRq40e&H;$_r^LB($1WEv#B0`Ag1e}xe z8=T)7ogai2FzsPG*UJ4swm|g`gM6#?gU=sKf0)^D**8BIXb=#T zTGS<>#B+r8qx+%>6)pX1+`A@lEn&=b-8IqfiJDQ@8HM~n2@zITcgaOLf%8@bh;VOZ z+bS2@w8~A^t#m`Oo3Y*tbSp= zp#%@_;@*viDw328J!fp4A#}#hNBWsent*ZN%)?0=KSk88k-a8=`UuyC)*D)H0^dZw z5h!E&&E|e&<%2T??{;X&@K5hweL(i$+=ILi)e5;QH20|8V|(A9{Y;4i60t1O!81!CAhY;(M7LNdE=yto{E_kZZ+PM6kkq^ z@wlj>n92T9;HAtoLBW?ii?*h$OKE+=dGhrnGm~j%vyphpF-;EFxsRL@1I>b^G{rTALwG`GzjF0mBo@4XF<(G> zYHG^#lWix{PG37QZ<_2}HU9@NE?ux(V8w)`8{!`>I&>!JRnYCFYnHlt_v`On z&Y}HElTCA7sLhHS>n)ZqS@UG!lyxCXOB^%ZW-fcPV$PD7bv164QLT%T)*lMh47XhU zX^NhA`J&|)v|sN15*g|m>L0o=YwxRuS533FMXiY17d88qb7_;6vu)hon7!_`Va~3H z{gwR}yFQ+$7B_j}%oRJsH~SaIc}HuXCU#1sMdmCSNyea8n`o^n^jz4N%I#u=lrmID_ybfz!TXij~#W9t|z)NEK z+KboDU6WqpAGv?)#w~(3WVZi2d+mbR&2JrVuN1v~I_GKc>Emy&yqQtaojJmM``@Ki7B8&vS3jebzJ6dmVFbr_wsPb*}4} z^NjKq=3UL}zjO7D@SW&8>9#sH*Q(}xcB%eV@$Qq%$DmJ1m8R8atD-B{e}4B>@h8jg zkl!}nu6};{yX^PDx_foI|H`eo5OXm4;!FNNd;gUGw&%IP7a{y1SwYP}VT0NS&k30U zaRKoLsupTLJU+Y@cs}9Mgx?FT79P4V&*0>S7aN{!_*roM!=?`xIUaYE3SL(dRoXc* zHt@!Z4J($d*f}*%`}>+X9ostedgS7k?$xTkI`t~o>fo^XeG_{UkIm_DJ>GU)uCw<1 zmvl3O=a2S0%6gm@skdhDn)Dp^GRx{&$;UMx`y9J{box<$)f=jB{AT!-c&zc5^Ke(e z>Ye(NY$m^&^lb9q$^5GIUY!1!-ba@nTQ={>$q$n%_hz2TyqVej^4H7Omy5G=uDyvg zKK=cnd8&itYNK5&As5ew><@6?;c780bAIIHpK97VuU)p4nCb7fch^s^K9{nt`rY>I z!0gEE>Q5n`&7StIEshG`FBc`heP4R>ueK&$VQE`4xqB`*rtEpSyk_#BO@G2?A2u%+ z*AUIok+}b8y{%p+Njz59Omm$^UHl=foxgft znoqr7b4zf4@`5XyO8)zu@w<2KVJzQnzUiLRpHAz2|LykOKtFwbt@^F%Y3HYQrHYnT zb5^%jyKC2K?_OoHsw`~pdcQUMVjss`4qF|udv95teD(bcb;tj%E%horTKb-^fd9_Q z?mX}%2Ky_*B73LJ_l#|rx%|;H`m+Vyx8vH zp9+7U^MAPo#q++hedCMyva{mnq~A-qYyE1|^>4@8l^%U|>g4L4)pM`wtS|i%{bl?A zl#ju`8=g8GFJ1jQ)_hHV3BR7ajqwwMl7GuypY`6pCogvQ-bdda6ukH_cjAkQ7p>n| z2bTxG+qYwSW&Xo|$Jk%6yYerU3$qETx$d3O7K_UEMPzj+_i zf3MCpZ^HZ#pH)6){xf~&&MKR~?_j&x@sT)ldDm_1n&KpXKX{|E#SyODcQB z`v2(i``&S<_S<~Py19DZ&W4@t>x1L<&xr4xSYP}@_i^t1-5<&)b4R}4_+H!oMcs>k zFFt=fxcrL${C}*>Gd};Bcp&OF0|Ns~x}&cn1H;C?n%{ww85kH8l0AZa85pWm85kOx z85n;4XJBY}$-q!*z`*b-fq}tl1_Oh5{-pS$ZVU_-i#%N%Ln>~)ImpP%z`((*aNmB* ztjElo@);Ps<}f5l@iqk-aJe1SkYHV$Ai|^0AmFgLcQ&$+_NWjva7IG{mP|%NVlak; zAQzvE#eoASPH-%{=$M?W9MKoS5cK}V3y$ahGYlBl$WQyqgeR6kz(HrR zqXCx&>&K5DdH((TS5TLjsOaqM%-pI9x z?t%{or;1H@EIG|hlkr4Zqg367W8$`tIHId=>?l;;p%@S!@4u~bK@H=n%gn479=Fa* zwB%~zXW%%{xATqz&mo5?d_hbl4%(T9O9Py|7PORXsPc&G)tUTc({#~dFNXhY?AB|Z zr9Bk<;~E)g(Wjhyd)l{J|D{ttoR{3-#?5(DF!I4{xi5>mrMb9R+O=O_O*>cFV|-rs zSZVBIhQ68)NBwd?`V>1aRBKzYGB7^#)|-T*{%?%W8$X`-UeIUxb3VzE75!FXH@^h< z^{8(>ZSyUs_m~Ouo*!!OY|a;IyB86ZjH$@jsNrat&jAp@;j6M$l31Gd`tP& zOgne8*-g5>ar^VurwpH;=or<-FRK0Px=;U)ydBeq_&jr-Lk1#mPvjiZ=sCpEbAaQD z`lZf0CcdZr?W5L-2m|?}l zeNM^#e_MB+E$!`I|LJzz%dfX));x=OYW3W%wT*wLI^(ake|H;CGCW`WFtXYISAEGo zH`|%XSJbE1&O6_+>&x2KpArkp*WI$|e{`_yUE`Vj*PnXp_J5eYgZn_;&LsgnhYddb z+g_JpXwWhJNNh>4kcRHh6NPUgUWuBA-|0Ex+r`4F@?NB0!67nXNk-z8uJJ z+Um=}H0MitO=w5?zfwW-mrrjW5v&#{KOg&c?@?djnvPym^}^5RmwjwbE8)awXQvCtQ;87Dc0u8k#*wV(i<~9HRct03LQ#JKXdxTcJ-b|l7j1} zf9BIln!;nRQ21|}@A1p89{!Hic+_QaZrYWOy{yhk)(LUPb*E z{+CRCp4(_M!MR@|MtIZ1i30AoRwXZ=w`aNTC-t1=Q-ZebDw<|>oBK)BK8}sDf}ZzJ zsM}2t{<|gL{UOgoMX~cbHA~rU{$Kn5wWt5GxQ9BAz3T2rwyaveZnw*)Fqb;AwXF@PEHvafCqRqL53@g$vuAW@jj+@lQ_83)3xaysaZO z%UCh%oB6XfF3lq1Q(PY}5o9v`^g>}S!z|1HCvN*J`G5CE;T!YUGa8d*143=yNk8gz zyKz)Hk~=T;Xh-@T=QT1$CaYTcAQymQrqx{@9>en1OegeH-0Gmb}-3l;kYt+fBkX~KzRY)Sf+-i!ndy$rOj&D$$TZE+4K$@ z^8vB;4acrKEcqU2@Q1;Hq3oS1Ym!78_&DoiT02^5C8WmJhQoZ?Vy@?tKI8oF+bcKMN%V}c6^rHX}o)W`h>8q zQxi9y+hV)+==4`7r2aFqAOAjWTfx-HBH7PoWqQ^|&25UbuA1+@zj?F!dq>;e_xkgC zT^Y*GWw0g)v@H7n|N3JanH?^(k4mweUVd#04B>aftq(H5QSMIdD=h4q?u$`@UaKi6*?6n)+bXm6UvfX@)Gxhsg z3Epl0tG6oqCu=$1I;sEGeKC{v$t`^Ch3B@eJ=|zt>UaD|<;UK2AI{(6UwBLTwWajj zPYbThT<$N^x$2+uDdtFxvSp=L>VNu5_U=;+ewiY)GEDx{WcFjF@@op1CdogwbpCL( zY6bHdR>@uJ)kQZ0@AJR)ozC!P&S~Ce1D>{tRgJtmijrB}5?I_4dhR7KyD_*Wu$VRQ zCNS>^m7k=1-R73Jey(mPSBu5J+{Y@%UcL3J`|NK&d#_?e0h5Y@&*d$#n*)v%?y0^u zFXgN4+_vQmp<=n5ZHW?9vDbGl&{4lw{?qx7_d4FPaP^#d?Cl~Ym((^)OMUrsU;PPp zBQ}e

u?C}W=_3!qXwd|hF`Mk%WB1eV8Qc`v1 zTT7_dPFlObSN>B`?%VPZiQlUtu8F12dl`P4+4A7db+5O*&^f*7YRwCQ=DZCDE&ASF z=KsaO{rF<*mqLCW8|L*Yp7$;-pZ5BM*sWBm0b>-?|K{=i1LqVcg-HY#K@1KIy?)-kO@Rh1ZZ{nE244uUec=-SgsV&J z_Ct3i2H)QYw?*+U*W|k(BA+4BJH_=OsB^>)>Io^EFHR8YX%gg5xGv4JeWJk)ru-XK z+d&;BE(VST7muCQkYH_=IZ#&7$nZ(lPQmOG>jJQbKm#rX289MUX^?)Njd2!lrldW2 zdk`ik0FpbuQ<8OYLPx{FGKojfK1UebPM(Fwcr&WFw%Dz78j z9>{c1ulN89LblPtL@bO`ppUup?_;L^=G8;GZ10e7MW zBy69varVqBHs*3WxB+CWhu3*BjZ=*{nr}dK8E_deIxzG?e4~_bxQ&;G zonI~`Vt<{jMDvXsdH;^F^N5JJF$+m9xO>$U4{As#9k_pAe$Rp(`}WD5VUJy8xl6YOl9Z6$ zz)TQt{^FbUaCPzZ_iF!6v)0ehXzl3}g~kM&fEN-3@@CpK>1o?gJDn9&3r2CNx~Kqz9!I@2J=-+XS1%B5p9CG^u+IXjCe$$n5l;>PF*@)fv<;}K+-HH~R*(3=-8 zIK-u6Lu??yJp&Qkf({px9zimZgd>tLgVhtBzl+YG#x^X6eVI7>*s)_5C;Nb1vY3Gz z6z;4?LFqGa!TR;*HxxcTcCkT%b#X%*L)mm`4q+=>iL&drU(C&C=4W8a*is0}NCJ!t zGBqzGB}uUL-f3926dZnAn1$8-Smx`7MnrHtJDgEska&pY#}>n1Up{Iqum@R^3Ci$o z91^hsHe7B>482VkHf?0EN@Bb|H*CR0sk*wl4;{QKlo^BC-&(Lukai3{VqjTcU*E(?FxWg6L7aTitxSjuDtL_R0*16z7^~k)#^CkD;g0|Bya_>5GgQ8{@G@nSY zE@t3v@O5sKGGE}wmN8d4L(%??gKvof|E~2s91g)j3s$ZSG$;T$4U$td8B9|6bY{3S z3NeI5EKU%4z`VfJd_kM9qa$Ms&y^jH`wob)C1gL+i`!#irD}Qrq!Cgq7cpqLI66N% zarlve*~#`FiJBAK3%1LYL|n+Q=waH!urrXEx#ilPUO#Dm8&Ft6Yq_F8*PAGS zV_k5R61R0_tc&xbYUAQ1nbLIDozow9ap+OcY zc{^}-KR-YJe8Imzl?L)xPB123m>UdHX21omP$8ZZWU$I+zA}N)G{b?t`|J1b&E^PeA#aYX!dp`=`cFavJ@Od>@%VethaLAn~?<2jNd=mILRuF`8yvTOZGFcc0B9 zl-25W+l=4&U{5b$zR*~+pp9E&edD?Hj2|yDW^_rEL|eR>B{JiNh6K2tcn&TETeu=G zur_U&9O!84F+pO*0olDC#Ueb>3{fupITjaq7_8ZOEcgzw=sswV-QJ+z-}uBK_*m}+ zXGO>5!p&~^8)O+QxLzkO?pAtZ7VN1>D^;-41Fj;BUCg#y5+Jt<)facOL%*>yrhhH4e(Q z8@x^24<2A>V33LhS6&M23k0Pv2$-)pz#_V#udlDb=h7k91^+H)E4d%kP*_{Y9PQ35 zt;%|F!7<)##>*XE-*;dzIb>B;`0M~v1A~+-xMeee`9f0Sji$s&dMA%u+QBG#oNuvX z7sKN1P5n$vpc=`}_UQwLleQ;vz8n+KInUJ-7i7JFL7~A7lDLh&eqjI5i;qug zr{vv5(<679py{+xM#sYnK`gCS#Shm2y+T6h;mg;dQQqvgrm>iv`Ac8d1$qGY*S@ zGHVm43~b|Q$mMKjys$74mi|y`QWIWL35kwPGX%GMEh+f|D&hkTxB`%C1rt@)U0I1= z{`3SIaJ^u+Q;-#Bu)585-B06*vl(aXbpx&pQ1MrC7ShIQcsG^lE*q#>r?EhOhDD)L z#g;7sRr^B~r&X^@a5rhNQdrP-_J!WDMs@~p2Nl%*V_e`Qe5IIWZa%cB@?&}Rg%zs0 z*1QXfGdG-Wl+sxs+qoc6G9Zq*_g2E|ga)?|$DhJw$rc&rk6&mWW#)z_A_2w)Zf7!_ z(?ohq7^0HcvKlUMJ(z9FRH~M+yjhspfmd;YT)<+sl9a<4kJBC?T4+uTCEG<-h;!c3 zWR=omzqt7Lp8lqX_jX9WV6IOT&v?YNAy6vddGnIr_uLrIf^@9|Cz*~0PGPl%>vs>h zqhEM7%HZsqeCB+IZa!a0o z0$TBEw`jxtARi-%y(&V#H!x%b9)EFeT3`cn!?IZpytA8{n0834C~US#>Z;kP%h7P{ zUXPzAuMTn|s%lwKoaexBC7VTb!|(6!)z>P?v#wwWQ3SQs808x7tY~C(y1mDdyT|CYF1WOepuIYaWkY~TFf8{ zN}XV3&I<~ga~YLAdfvdx#~wuDLvBr%y^~;NkYGu8@V`Dbub@zW>4ZNAk7is75|mfC zww-(ByWFfympiS$mNqWWP8Q4c$$YrBMg0r=`v;ki%Vl8A=n2dL2dn=7`wOnd6BrnN zHP$S6nGn#-di(8z1+u*h+;~?gvSd9u;3p`b`{05+ygUb20t;Bh8#YW>I3exXappuO z=5NQ?S8Qymd&BgmMl+{;SK||h>?aPpr9XfE?0)?yuL3-pzya*Y&C^g|fA}BcMro6? zELleyq;$B&^;qN&Gh`iTcvs168n=NlpgHaDudfd#&b`=d#tv#KK?9tFVeL-GeQWYT z5#bQckhS7KnRe5%*$%y;0gG9Wv_Eyd5y-2+5S7fF^`jx5GB7v_d2SYF6D4{e!% zYg1>IhCEp|*(c?Q%B;zCk(9Z|cCmgY4TiPLEh-93WZW427_!bN%xB?~+S`~I(ag5j zv8BfO$BQdhz(qAA>A5hhXkax>ap0ZRe1L1`{{8Yb6V+Cvb4s0*WKC(fcyUdjgUfO! z27jxA>gKmLNP_DqXt#jD><@3&1qJaH3*IhM@eKr3DO_#`4M3#`tO0l71aFbP(3S;) zEsp6K3A^VdfyoY zTIaSNK}92^@$@EjcLT$@%3l|M{th%yk}`K*@|Q2`%zdgukOL{gd0 z!7|IZJr#u|F71Ax@LvvYo+~kwMXKfW@~#MAJ$qj`Hli<1sFTwn(Hvw;g@dCbV_ap> zwLMp_U+-trm<#e^AGpzUf^o%l4ymn-yt&QW7BsbObF2}NzP}FETwDnXp8c z$9+MM`@#jY9$QFPWif*=ylipgbLf^RSc-!EsQ%gXfm`FVL1WuQ=5oY28= zVW-&!ZjhrVrvQsHoWDNZoH^13h_GwsHTDCG>2?K z2ks8X=!1@zgBEPgbEpxRox!lnK68sAq$jQjijC{gXv@gu%~3SG$#7){W2}&6)eCtw z30v(9k)EbRP-h4dY~V2vhs9W3pNFJ>!3Xc(pPw*e2FHHIJsUR`LPur} zY8+rfZqi(ox=FKcfzlOY9Vm{$X@Sj>;jXTzfB?g>zkmPoNSo)$@J<0K zIjC^}(QoizSo~cbRPu1S34j6`5<-j&QN_%=vlvZ$S(BT^M1;4lsQB_vu85M7 z!f&8a1vaFtl)x)-Bb0l=OU)nRvJwfBeZX0NEo0YxjI$UvSDsu0z(XKtd+s#DReM2R=MF zz|6+V-g?o5k#F)v1yDJ$0~7&}{tqNBdzuni;i-mfp#pYsy`FosA^9c{7Gyt~nH_Qr zn*RQOcsS!Ro3ug0GTzz?WP&POFf&H{5@@(H2iy~q zFoU_|hj|{4TXUjF0wddoFNp?LyFlZm2DAt!Ea7`tx}ogHseZP@8V4BN%soMwO$VOn z*yI}{5=|uB82JpUlK+4*mJmE+K{BfZ>tQa+g&y)bOn1`K=xJltW4L8#3TceO4d%%& zXh{6>$S2^a?X4XL`5ZEtOJW)hyx0aFArl6b3!oV=x*ukQhoK;gl$3=FVG z+WFqq?l^HE!Cp#kac@0a8!NYj1Q(av;iMIyY93NbA8KemoFTEGp?|@}+1v*jBze06 z4Xid<#(>%-kX|V)sUu~o9nBZL6~PTuWge*AJn;;>1OgLHBqoHrYiUUIw6PlnG%OWn zJ@NMC;)E^w2Dii|#9&EQVtUZxUg@4)F^MJ89Bz-FF>fg}j#}MY!4TDNcI%idVyGWW zUcn|LU|{vy2%M)hVOEIr2rxu>8&rYfmUZ#mhKUSlC7Hv)7gxCt!|HsVcm}J?ka|#J zUAXR7h5*QxJD?x{mGlPh+j`j!YDoAhgK~fgEY`T(K>etR)8%>F0}Z%18ZVZbJ0m)H zf=qUGEptN6LC!kB>&E{{nnZ8?Xu4QgeBy^yiQcP&%@-dWm>uRO9tCn&4%}VqZZzIV zToQgu{(_V_yW3?}D~6?ljMZ#y-QwHEq~RCSf}`ITCuAT} z0mzl0Iv@g8`oQuhs3iuk(VY&wsJaP~`FzTQ5n4hoPH1Vk$jt~E7vpi`|A_FVMEQQV z<^&M|#vhG84npdqIWU)hU|p;%y0}3i!2nW}??70~#PFhL_C@gcwc9~tTTJqJc-#&r ziu5og9eC07Xd!5b2vie-s#j3^M4|Cw;5iIYlsc?{ZSmvRpg3$2gbfq6sWZ$CUT7f2 z^We0?+qaT@aw!QHuFLcCtznqrXQ$C4muJM~_M7!E2P~Ceo|L(zu$j;8y5NJ%I~*E4 z*U}a<@PT3%6wDEB%?Ur6m>n#Vw2L%q3@-5-Ol1ER-!T7SqYX2&{fFA?E~@`}hcoPNp9CBN|LSLU{U z2MewXO`KE0zBu;IZeHAI*u=QPxP51IS=8MjM+zx6eh@ChMN<^<9iRiFM42x5>f($6Udzu0rWEj?NXY9SFp?Me@#R(Nm7fyV7aqW4agN}sk3mI0P3B4SP6DmL>thsl1f*GPD%pV!Q%CI!$a=Uy= zLt*h78CF={kw_0XG3^*AmGu`$vMz3jSioSbkZp3FCl`_N7$j^Dx$ZaW@Afu{5kXb~fXA!3$XWf5_=}T8+b^ zpy6R-!@(C@u4K#t&HuST5+%>^UpyS{f0B|etk`roBZ{GsU7p2_|AR7%jD*|zyHczP z3;0_W1b4ZMi||8Tn8*ch^)~$3R9v#97@E^~j?c3a_{97WS~)OXI{0GNY*>=zIq0k) zV+)=V3pC*JU|(>$%)Q*3x0V66NV(0@qGCd$WBnJcE|3DY1>EWG2QNV9Y}**Fyl$Ag z$&$;Bk)vmwJZMg-0yL*3`vlbO+y#l3!zRgnKaQP!G3BR*0&Bzc6}@E~Zj4)u4R$Fe zpMZx&lvQt2po5Kp1f+g|=GityiP)F+ToV{GGHOervP62Af^O|%d+_;?+rbN z%A9Gja_nLT9*5maS$N!}&7CEoIUSOYKr3HiEr}V77jE(_o}LEnjHD)%Jb!rsYHnKs zsHeriyqNt5s0|d=*XIK9^Tm6|G$fw&&c4VD&Q8Yvd)6J4+648~URdXzHG`of?gn$? z#k0`Sa6lpdEh`IWO0ESMCV}+8-_y{CrWEbfLaT)(%cwX8{|18MdW(e zjtD@bBdvG##koO?86;&=3KA~J%N~_tUEGkupyw?r*Eg@!*ag;1(~x+UPy!ym6Dg5$ zmo|5XHqs)#Ug9@;(XVF)$_pYrOkIpWmX!a!$a)m!!W~~Pxr_5b!iljI6q3;g+o3~V z226|7?>HQ6zNo;^%*@{4sAzAcYdWh86#0cPFEr$_u+Kef5anoS(8I>8qaotP|4~`2 z;nJDI7ZW5{IT9XxXngqK;Kc%oE{G0r!3`=G7{v^%&f1qiJkTa6F?X62xIkjkGS7P= z4+;Wkrg)nQaUH1ptB`)T$1JZ+3D)3aJuFcpu{S6I&Rek>p9xyjMJkD4xB_}7}@X&Bq z)09L;0eu->euIww{Rb8-XpjioU+|Er`QQsDnI+%uGbjAea4;6wFn!;JL>GBggIVcr zhne{tj=KE6P-^GEu#xBK2KM_+d+#Tjupc_~n8CnC#_g~&V;6r<8$0v1;%K+SER1|I z77bEzjEhrGWc-rg?SBYrr-2I?aAO5I|H0a!ppFC=1B<|ENHcBEffi0-3A?&K9C7*= z?%xNG9)TM1ps^Q^{yPW6nfjV8evshhw_q^MdG-3W{qOF%`?r(Wp`VdvNvw@>YDW0y0ybf|g$ z{P_zvZk+h=!NKOm>9=~8@lHDQ=)enCuf-1yeHa`VcwZjlUBSTq)lXb6#v;nY&_Qfc z)1l-?M>-cjY`k(qTSrGGuue}ygJJzn$ygtoS!Nz9PdGl+Sn-Ep>gvT0KQhGhH63CO zS=ZOJ5bU}4)0jjbEO4p#_~_`x87*O11`YeJC8>x9EnY0XIKd?M0sDfjstZ1eu(+KL z_NZvEVwX0{k?@sq22JEmklD%jb;pGA#)h_s7t33Fw#aFm`M<#JtcU&<$3#YHKR*u- ziL*}^GiXcrO3z>jnfd$o?|wEGk%nt)ddPQ(U= zR2EPY2h~lQ{_gIZ6&6=5@DqCRs`a95FgSNjm^003-)m+w`#JOH+b1atipg!*z;N;7 z$B)Wp!HdMtefsoiv1P4D0_);T=D?ZxcXkNIq%~-LooKg;m5cpClytz17q4IUt4&Y@ zwcR}KgBN;%;{ud08bIwIP#FyB{zF80sIhT_(U&pfJ8zD<{EHn;7lRwYeV#4QLLXG< zTo7s4_N-aTbU|^5kg)K<;~=*faJez+g7RS=czKM-1(^mZ^R~9O2cK8C@y`S|o-Rni z=c^VsJYy*Fka>|{a$#Wxq>OXO22~#5l_@<;vzRWd@J&ciIQ;AD>x0*u8xFj90h$+G z+%OGMEHcevy0JHZ!)phJ>9dsL7ee|%tXGiS2`vc0eYjoEKy!tlk`zz&g09XPRRvq8 mG#V14ApvT?P&Q;G!4P$DYRUoWuvH8U3=E#GelF{r5}E*C6!v8R literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/weibull.png b/doc/sf_and_dist/graphs/weibull.png new file mode 100644 index 0000000000000000000000000000000000000000..0b32111d93c6cce724f96a174d2daf58fbd5ba42 GIT binary patch literal 5414 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/graphs/weibull2.png b/doc/sf_and_dist/graphs/weibull2.png new file mode 100644 index 0000000000000000000000000000000000000000..19cf040a0935b36a6364f4f2e958fe4c4a7ba68f GIT binary patch literal 5375 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 literal 0 HcmV?d00001 diff --git a/doc/sf_and_dist/hermite.qbk b/doc/sf_and_dist/hermite.qbk new file mode 100644 index 000000000..c19c1f2b3 --- /dev/null +++ b/doc/sf_and_dist/hermite.qbk @@ -0,0 +1,115 @@ +[section:hermite Hermite Polynomials] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` hermite(unsigned n, T x); + + template + ``__sf_result`` hermite(unsigned n, T x, const ``__Policy``&); + + template + ``__sf_result`` hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1); + + }} // namespaces + +[h4 Description] + +The return type of these functions is computed using the __arg_pomotion_rules: +note than when there is a single template argument the result is the same type +as that argument or `double` if the template argument is an integer type. + + template + ``__sf_result`` hermite(unsigned n, T x); + + template + ``__sf_result`` hermite(unsigned n, T x, const ``__Policy``&); + +Returns the value of the Hermite Polynomial of order /n/ at point /x/: + +[equation hermite_0] + +[optional_policy] + +The following graph illustrates the behaviour of the first few +Hermite Polynomials: + +[$../graphs/hermite.png] + + template + ``__sf_result`` hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1); + +Implements the three term recurrence relation for the Hermite +polynomials, this function can be used to create a sequence of +values evaluated at the same /x/, and for rising /n/. + +[equation hermite_1] + +For example we could produce a vector of the first 10 polynomial +values using: + + double x = 0.5; // Abscissa value + vector v; + v.push_back(hermite(0, x)).push_back(hermite(1, x)); + for(unsigned l = 1; l < 10; ++l) + v.push_back(hermite_next(l, x, v[l], v[l-1])); + +Formally the arguments are: + +[variablelist +[[n][The degree /n/ of the last polynomial calculated.]] +[[x][The abscissa value]] +[[Hn][The value of the polynomial evaluated at degree /n/.]] +[[Hnm1][The value of the polynomial evaluated at degree /n-1/.]] +] + +[h4 Accuracy] + +The following table shows peak errors (in units of epsilon) +for various domains of input arguments. +Note that only results for the widest floating point type on the system are +given as narrower types have __zero_error. + +[table Peak Errors In the Hermite Polynomial +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] ] +[[53] [Win32, Visual C++ 8] [Peak=4.5 Mean=1.5] ] +[[64] [Red Hat Linux IA32, g++ 4.1] [Peak=6 Mean=2]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=6 Mean=2] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=6 Mean=4]] +] + +Note that the worst errors occur when the degree increases, values greater than +~120 are very unlikely to produce sensible results, especially in the associated +polynomial case when the order is also large. Further the relative errors +are likely to grow arbitrarily large when the function is very close to a root. + +[h4 Testing] + +A mixture of spot tests of values calculated using functions.wolfram.com, +and randomly generated test data are +used: the test data was computed using +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision. + +[h4 Implementation] + +These functions are implemented using the stable three term +recurrence relations. These relations guarentee low absolute error +but cannot guarentee low relative error near one of the roots of the +polynomials. + +[endsect][/section:beta_function The Beta Function] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/html/index.html b/doc/sf_and_dist/html/index.html new file mode 100644 index 000000000..366c74497 --- /dev/null +++ b/doc/sf_and_dist/html/index.html @@ -0,0 +1,395 @@ + + + +Math Toolkit + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+


+
Next
+
+
+
+

+Math Toolkit

+
+

+John Maddock +

+

+Paul A. Bristow +

+

+Hubert Holin +

+

+Xiaogang Zhang +

+
+
+
+

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

+
+
+
+
+
+

Table of Contents

+
+
Overview
+
+
About the Math Toolkit
+
Navigation
+
Directory and + File Structure
+
Namespaces
+
Calculation + of the Type of the Result
+
Error Handling
+
Compilers
+
Configuration + and Policies
+
Thread Safety
+
Performance
+
History and What's + New
+
Contact Info and + Support
+
+
Statistical Distributions and Functions
+
+
Statistical Distributions + Tutorial
+
+
Overview
+
Worked Examples
+
+
+ Distribution Construction Example
+
Student's + t Distribution Examples
+
Chi Squared + Distribution Examples
+
F Distribution + Examples
+
Binomial + Distribution Examples
+
Negative + Binomial Distribution Examples
+
Normal + Distribution Examples
+
Error Handling + Example
+
Find Location + and Scale Examples
+
Comparison + with C, R, FORTRAN-style Free Functions
+
+
Random Variates + and Distribution Parameters
+
Discrete Probability + Distributions
+
+
Statistical Distributions + Reference
+
+
Non-Member Properties
+
Distributions
+
+
+ Bernoulli Distribution
+
Beta + Distribution
+
+ Binomial Distribution
+
Cauchy-Lorentz + Distribution
+
+ Chi Squared Distribution
+
Exponential + Distribution
+
Extreme + Value Distribution
+
F Distribution
+
Gamma + (and Erlang) Distribution
+
+ Log Normal Distribution
+
+ Negative Binomial Distribution
+
Normal + (Gaussian) Distribution
+
Pareto + Distribution
+
Poisson + Distribution
+
Rayleigh + Distribution
+
+ Students t Distribution
+
+ Triangular Distribution
+
Weibull + Distribution
+
Uniform + Distribution
+
+
Distribution + Algorithms
+
+
Extras/Future Directions
+
+
Special Functions
+
+
Gamma Functions
+
+
Gamma
+
Log Gamma
+
Digamma
+
Ratios + of Gamma Functions
+
Incomplete Gamma + Functions
+
Incomplete + Gamma Function Inverses
+
Derivative + of the Incomplete Gamma Function
+
+
Factorials and Binomial + Coefficients
+
+
Factorial
+
+ Double Factorial
+
+ Rising Factorial
+
+ Falling Factorial
+
Binomial + Coefficients
+
+
Beta Functions
+
+
Beta
+
Incomplete + Beta Functions
+
The + Incomplete Beta Function Inverses
+
Derivative + of the Incomplete Beta Function
+
+
Error Functions
+
+
Error + Functions
+
Error Function + Inverses
+
+
Polynomials
+
+
Legendre (and + Associated) Polynomials
+
Laguerre (and + Associated) Polynomials
+
Hermite Polynomials
+
Spherical Harmonics
+
+
Bessel Functions
+
+
Bessel Function + Overview
+
Bessel Functions + of the First and Second Kinds
+
Modified Bessel + Functions of the First and Second Kinds
+
Spherical + Bessel Functions of the First and Second Kinds
+
+
Elliptic Integrals
+
+
Elliptic + Integral Overview
+
Elliptic + Integrals - Carlson Form
+
Elliptic Integrals + of the First Kind - Legendre Form
+
Elliptic Integrals + of the Second Kind - Legendre Form
+
Elliptic Integrals + of the Third Kind - Legendre Form
+
+
Logs, Powers, Roots and + Exponentials
+
+
log1p
+
expm1
+
cbrt
+
sqrt1pm1
+
powm1
+
hypot
+
+
Sinus Cardinal and Hyperbolic + Sinus Cardinal Functions
+
+
Sinus Cardinal + and Hyperbolic Sinus Cardinal Functions Overview
+
sinc_pi
+
sinhc_pi
+
+
Inverse Hyperbolic Functions
+
+
Inverse + Hyperbolic Functions Overview
+
acosh
+
asinh
+
atanh
+
+
Floating Point Classification: + Infinities and NaN's
+
+
Internal Details and Tools (Experimental)
+
+
Overview
+
Reused Utilities
+
+
+ Series Evaluation
+
Continued Fraction + Evaluation
+
Polynomial + and Rational Function Evaluation
+
Root Finding + With Derivatives
+
Root Finding + Without Derivatives
+
Locating Function + Minima
+
+
Testing and Development
+
+
Polynomials
+
Minimax Approximations + and the Remez Algorithm
+
Relative + Error and Testing
+
Graphing, + Profiling, and Generating Test Data for Special Functions
+
+
+
Use with User Defined Floating-Point + Types
+
+
Using With NTL - a High-Precision + Floating-Point Library
+
Conceptual Requirements + for Real Number Types
+
Conceptual Requirements + for Distribution Types
+
Conceptual Archetypes + and Testing
+
+
Policies
+
+
Policy Overview
+
Policy Tutorial
+
+
+ So Just What is a Policy Anyway?
+
+ Policies Have Sensible Defaults
+
So + How are Policies Used Anyway?
+
+ Changing the Policy Defaults
+
+ Setting Policies for Distributions on an Ad Hoc Basis
+
+ Changing the Policy on an Ad Hoc Basis for the Special Functions
+
+ Setting Policies at Namespace or Translation Unit Scope
+
+ Calling User Defined Error Handlers
+
+ Understanding Quantiles of Discrete Distributions
+
+
Policy Reference
+
+
+ Error Handling Policies
+
Internal + Promotion Policies
+
Mathematically + Undefined Function Policies
+
Discrete + Quantile Policies
+
Precision + Policies
+
Iteration + Limits Policies
+
Using + macros to Change the Policy Defaults
+
Setting + Polices at Namespace Scope
+
Policy Class + Reference
+
+
+
Performance
+
+
Performance Overview
+
Interpreting these Results
+
Getting the Best Performance + from this Library
+
Comparing Compilers
+
Performance Tuning Macros
+
Comparisons to Other + Open Source Libraries
+
The Performance Test + Application
+
+
Backgrounders
+
+
Additional + Implementation Notes
+
Relative + Error
+
The Lanczos Approximation
+
The Remez Method
+
References
+
+
Library Status
+
+
History and What's New
+
Compilers
+
Known Issues, and Todo List
+
Credits and Acknowledgements
+
+
+
+

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

+
+ + + +

Last revised: November 13, 2007 at 17:03:47 GMT

+
+
Next
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders.html b/doc/sf_and_dist/html/math_toolkit/backgrounders.html new file mode 100644 index 000000000..e6421dc1b --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders.html @@ -0,0 +1,53 @@ + + + +Backgrounders + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html b/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html new file mode 100644 index 000000000..b8aafcc13 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders/implementation.html @@ -0,0 +1,752 @@ + + + +Additional Implementation Notes + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The majority of the implementation notes are included with the documentation + of each function or distribution. The notes here are of a more general nature, + and reflect more the general implementation philosophy used. +

+
+ + Implemention + philosophy +
+

+ "First be right, then be fast." +

+

+ There will always be potential compromises to be made between speed and accuracy. + It may be possible to find faster methods, particularly for certain limited + ranges of arguments, but for most applications of math functions and distributions, + we judge that speed is rarely as important as accuracy. +

+

+ So our priority is accuracy. +

+

+ To permit evaluation of accuracy of the special functions, production of + extremely accurate tables of test values has received considerable effort. +

+

+ (It also required much CPU effort - there was some danger of molten plastic + dripping from the bottom of JM's laptop, so instead, PAB's Dual-core desktop + was kept 50% busy for days calculating some + tables of test values!) +

+

+ For a specific RealType, say float or double, it may be possible to find + approximations for some functions that are simpler and thus faster, but less + accurate (perhaps because there are no refining iterations, for example, + when calculating inverse functions). +

+

+ If these prove accurate enough to be "fit for his purpose", then + a user may substitute his custom specialization. +

+

+ For example, there are approximations dating back from times when computation + was a lot more expensive: +

+

+ H Goldberg and H Levine, Approximate formulas for percentage points and normalisation + of t and chi squared, Ann. Math. Stat., 17(4), 216 - 225 (Dec 1946). +

+

+ A H Carter, Approximations to percentage points of the z-distribution, Biometrika + 34(2), 352 - 358 (Dec 1947). +

+

+ These could still provide sufficient accuracy for some speed-critical applications. +

+
+ + Accuracy + and Representation of Test Values +
+

+ In order to be accurate enough for as many as possible real types, constant + values are given to 50 decimal digits if available (though many sources proved + only accurate near to 64-bit double precision). Values are specified as long + double types by appending L, unless they are exactly representable, for example + integers, or binary fractions like 0.125. This avoids the risk of loss of + accuracy converting from double, the default type. Values are used after + static_cast<RealType>(1.2345L) to provide the appropriate RealType + for spot tests. +

+

+ Functions that return constants values, like kurtosis for example, are written + as +

+

+ static_cast<RealType>(-3) / + 5; +

+

+ to provide the most accurate value that the compiler can compute for the + real type. (The denominator is an integer and so will be promoted exactly). +

+

+ So tests for one third, not exactly representable + with radix two floating-point, (should) use, for example: +

+

+ static_cast<RealType>(1) / + 3; +

+

+ If a function is very sensitive to changes in input, specifying an inexact + value as input (such as 0.1) can throw the result off by a noticeable amount: + 0.1f is "wrong" by ~1e-7 for example (because 0.1 has no exact + binary representation). That is why exact binary values - halves, quarters, + and eighths etc - are used in test code along with the occasional fraction + a/b with b + a power of two (in order to ensure that the result is an exactly representable + binary value). +

+
+ + Tolerance + of Tests +
+

+ The tolerances need to be set to the maximum of: +

+
    +
  • + Some epsilon value. +
  • +
  • + The accuracy of the data (often only near 64-bit double). +
  • +
+

+ Otherwise when long double has more digits than the test data, then no amount + of tweaking an epsilon based tolerance will work. +

+

+ A common problem is when tolerances that are suitable for implementations + like Microsoft VS.NET where double and long double are the same size: tests + fail on other systems where long double is more accurate than double. Check + first that the suffix L is present, and then that the tolerance is big enough. +

+
+ + Handling + Unsuitable Arguments +
+

+ In Errors + in Mathematical Special Functions, J. Marraffino & M. Paterno + it is proposed that signalling a domain error is mandatory when the argument + would give an mathematically undefined result. +

+
  • + Guideline 1 +
+
+

+

+

+ A mathematical function is said to be defined at a point a = (a1, a2, + . . .) if the limits as x = (x1, x2, . . .) 'approaches a from all directions + agree'. The defined value may be any number, or +infinity, or -infinity. +

+

+

+
+

+ Put crudely, if the function goes to + infinity and then emerges 'round-the-back' + with - infinity, it is NOT defined. +

+
+

+

+

+ The library function which approximates a mathematical function shall + signal a domain error whenever evaluated with argument values for which + the mathematical function is undefined. +

+

+

+
+
  • + Guideline 2 +
+
+

+

+

+ The library function which approximates a mathematical function shall + signal a domain error whenever evaluated with argument values for which + the mathematical function obtains a non-real value. +

+

+

+
+

+ This implementation is believed to follow these proposals and to assist compatibility + with ISO/IEC 9899:1999 Programming languages - C and + with the Draft + Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph + 5. See + also domain_error. +

+

+ See policy reference for + details of the error handling policies that should allow a user to comply + with any of these recommendations, as well as other behaviour. +

+

+ See error handling + for a detailed explanation of the mechanism, and error_handling + example and error_handling_example.cpp +

+
+ + + + + +
[Caution]Caution

+ If you enable throw but do NOT have try & catch block, then the program + will terminate with an uncaught exception and probably abort. Therefore + to get the benefit of helpful error messages, enabling all + exceptions and using try&catch is + recommended for all applications. However, for simplicity, this is not + done for most examples. +

+
+ + 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. +

+

+ If the policy is to permit undefined functions, then calling them throws + a domain error, by default. But the error policy can be set to not throw, + and to return NaN instead. For example, +

+

+ #define BOOST_MATH_DOMAIN_ERROR_POLICY + ignore_error +

+

+ appears before the first Boost include, then if the un-implemented function + is called, mean(cauchy<>()) will return std::numeric_limits<T>::quiet_NaN(). +

+
+ + + + + +
[Warning]Warning

+ If std::numeric_limits<T>::has_quiet_NaN is false (for example T + is a User-defined type), then an exception will always be thrown when a + domain error occurs. Catching exceptions is therefore strongly recommended. +

+
+ + Median + of distributions +
+

+ There are many distributions for which we have been unable to find an analytic + formula, and this has deterred us from implementing median + functions, the mid-point in a list of values. +

+

+ However a useful median approximation for distribution dist + may be available from +

+

+ quantile(dist, 0.5). +

+

+ Mean, + Median, and Skew, Paul T von Hippel +

+

+ Descriptive + Statistics, +

+

+ and + +

+

+ Mathematica + Basic Statistics. give more detail, in particular for discrete distributions. +

+
+ + Handling + of Floating-Point Infinity +
+

+ Some functions and distributions are well defined with + or - infinity as + argument(s), but after some experiments with handling infinite arguments + as special cases, we concluded that it was generally more useful to forbid + this, and instead to return the result of domain_error. +

+

+ Handling infinity as special cases is additionally complicated because, unlike + built-in types on most - but not all - platforms, not all User-Defined Types + are specialized to provide std::numeric_limits<RealType>::infinity() and would return zero rather than any representation + of infinity. +

+

+ The rationale is that non-finiteness may happen because of error or overflow + in the users code, and it will be more helpful for this to be diagnosed promptly + rather than just continuing. The code also became much more complicated, + more error-prone, much more work to test, and much less readable. +

+

+ However in a few cases, for example normal, where we felt it obvious, we + have permitted argument(s) to be infinity, provided infinity is implemented + for the realType on that implementation. +

+

+ Overflow, underflow, denorm can be handled using error + handling policies. +

+

+ We have also tried to catch boundary cases where the mathematical specification + would result in divide by zero or overflow and signalling these similarly. + What happens at (and near), poles can be controlled through error + handling policies. +

+
+ + Scale, + Shape and Location +
+

+ We considered adding location and scale to the list of functions, for example: +

+
+template <class RealType>
+inline RealType scale(const triangular_distribution<RealType>& dist)
+{
+  RealType lower = dist.lower();
+  RealType mode = dist.mode();
+  RealType upper = dist.upper();
+  RealType result;  // of checks.
+  if(false == detail::check_triangular(BOOST_CURRENT_FUNCTION, lower, mode, upper, &result))
+  {
+    return result;
+  }
+  return (upper - lower);
+}
+
+

+ but found that these concepts are not defined (or their definition too contentious) + for too many distributions to be generally applicable. Because they are non-member + functions, they can be added if required. +

+
+ + Notes + on Implementation of Specific Functions & Distributions +
+
  • + Default parameters for the Triangular Distribution. We are uncertain about + the best default parameters. Some sources suggest that the Standard Triangular + Distribution has lower = 0, mode = half and upper = 1. However as a approximation + for the normal distribution, the most common usage, lower = -1, mode = + 0 and upper = 1 would be more suitable. +
+
+ + Rational + Approximations Used +
+

+ Some of the special functions in this library are implemented via rational + approximations. These are either taken from the literature, or devised by + John Maddock using our + Remez code. +

+

+ Rational rather than Polynomial approximations are used to ensure accuracy: + polynomial approximations are often wonderful up to a certain level of accuracy, + but then quite often fail to provide much greater accuracy no matter how + many more terms are added. +

+

+ Our own approximations were devised either for added accuracy (to support + 128-bit long doubles for example), or because literature methods were unavailable + or under non-BSL compatible license. Our Remez code is known to produce good + agreement with literature results in fairly simple "toy" cases. + All approximations were checked for convergence and to ensure that they were + not ill-conditioned (the coefficients can give a theoretically good solution, + but the resulting rational function may be un-computable at fixed precision). +

+

+ Recomputing using different Remez implementations may well produce differing + coefficients: the problem is well known to be ill conditioned in general, + and our Remez implementation often found a broad and ill-defined minima for + many of these approximations (of course for simple "toy" examples + like approximating exp the + minima is well defined, and the coeffiecents should agree no matter whose + Remez implementation is used). This should not in general effect the validity + of the approximations: there's good literature supporting the idea that coefficients + can be "in error" without necessarily adversely effecting the result. + Note that "in error" has a special meaning in this context, see + "Approximate construction + of rational approximations and the effect of error autocorrection.", + Grigori Litvinov, eprint arXiv:math/0101042. Therefore the coefficients + still need to be accurately calculated, even if they can be in error compared + to the "true" minimax solution. +

+
+ + Representation + of Mathematical Constants +
+

+ A macro BOOST_DEFINE_MATH_CONSTANT in constants.hpp is used to provide high + accuracy constants to mathematical functions and distributions, since it + is important to provide values uniformly for both built-in float, double + and long double types, and for User Defined types like NTL::quad_float and + NTL::RR. +

+

+ To permit calculations in this Math ToolKit and its tests, (and elsewhere) + at about 100 decimal digits with NTL::RR type, it is obviously necessary + to define constants to this accuracy. +

+

+ However, some compilers do not accept decimal digits strings as long as this. + So the constant is split into two parts, with the 1st containing at least + long double precision, and the 2nd zero if not needed or known. The 3rd part + permits an exponent to be provided if necessary (use zero if none) - the + other two parameters may only contain decimal digits (and sign and decimal + point), and may NOT include an exponent like 1.234E99 (nor a trailing F or + L). The second digit string is only used if T is a User-Defined Type, when + the constant is converted to a long string literal and lexical_casted to + type T. (This is necessary because you can't use a numeric constant since + even a long double might not have enough digits). +

+

+ For example, pi is defined: +

+
+BOOST_DEFINE_MATH_CONSTANT(pi,
+  3.141592653589793238462643383279502884197169399375105820974944,
+  5923078164062862089986280348253421170679821480865132823066470938446095505,
+  0)                                              
+
+

+ And used thus: +

+
+using namespace boost::math::constants;
+
+double diameter = 1.;
+double radius = diameter * pi<double>();
+
+or boost::math::constants::pi<NTL::RR>()
+
+

+ Note that it is necessary (if inconvenient) to specify the type explicitly. +

+

+ So you cannot write +

+
+double p = boost::math::constants::pi<>();  // could not deduce template argument for 'T'  
+
+

+ Neither can you write: +

+
+double p = boost::math::constants::pi; // Context does not allow for disambiguation of overloaded function     
+double p = boost::math::constants::pi(); // Context does not allow for disambiguation of overloaded function     
+
+
+ + Thread + safety +
+

+ Reporting of error by setting errno should be thread safe already (otherwise + none of the std lib math functions would be thread safe?). If you turn on + reporting of errors via exceptions, errno gets left unused anyway. +

+

+ Other than that, the code is intended to be thread safe for + built in real-number types : so float, double and long double + are all thread safe. +

+

+ For non-built-in types - NTL::RR for example - initialisation of the various + constants used in the implementation is potentially not + thread safe. This most undesiable, but it would be a signficant challenge + to fix it. Some compilers may offer the option of having static-constants + initialised in a thread safe manner (Commeau, and maybe others?), if that's + the case then the problem is solved. This is a topic of hot debate for the + next C++ std revision, so hopefully all compilers will be required to do + the right thing here at some point. +

+
+ + Sources + of Test Data +
+

+ We found a large number of sources of test data. We have assumed that these + are "known good" if they agree with the results + from our test and only consulted other sources for their 'vote' + in the case of serious disagreement. The accuracy, actual and claimed, vary + very widely. Only Wolfram Mathematica + functions provided a higher accuracy than C++ double (64-bit floating-point) + and was regarded as the most-trusted source by far. +

+

+ A useful index of sources is: Web-oriented + Teaching Resources in Probability and Statistics +

+

+ Statlet: + Is a Javascript application that calculates and plots probability distributions, + and provides the most complete range of distributions: +

+
+

+

+

+ Bernoulli, Binomial, discrete uniform, geometric, hypergeometric, negative + binomial, Poisson, beta, Cauchy-Lorentz, chi-sequared, Erlang, exponential, + extreme value, Fisher, gamma, Laplace, logistic, lognormal, normal, Parteo, + Student's t, triangular, uniform, and Weibull. +

+

+

+
+

+ It calculates pdf, cdf, survivor, log survivor, hazard, tail areas, & + critical values for 5 tail values. +

+

+ It is also the only independent source found for the Weibull distribution; + unfortunately it appears to suffer from very poor accuracy in areas where + the underlying special function is known to be difficult to implement. +

+
+ + Creating + and Managing the Equations +
+

+ The primary source for the equations is now MathML: + see the *.mml files in libs/math/doc/sf_and_dist/equations/. +

+

+ These are most easily edited by a GUI editor such as Mathcast, + please note that the equation editor supplied with Open Office currently + mangles these files and should not currently be used. +

+

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

+
$for file in *.mml; do 
+>/cygdrive/c/Python25/python.exe 'C:\download\open\SVGMath-0.3.1\math2svg.py' \
+>>$file > $(basename $file .mml).svg
+>done
+
+

+ Note that SVGMath requires that the mml files are not + wrapped in an XHTML XML wrapper - this is added by Mathcast by default - + one workaround is to copy an existing mml file and then edit it with Mathcast: + the existing format should then be preserved. This is a bug in the XML parser + used by SVGMath which the author is aware of. +

+

+ If neccessary the XHTML wrapper can be removed with: +

+
cat filename | tr -d "\r\n" | sed -e 's/.*\(<math[^>]*>.*</math>\).*/\1/' > newfile
+

+ Setting up fonts for SVGMath is currently rather tricky, on a Windows XP + system JM's font setup is the same as the sample config file provided with + SVGMath but with: +

+
<!-- Double-struck -->
+    <mathvariant name="double-struck" family="Mathematica7, Lucida Sans Unicode"/>
+
+

+ changed to: +

+
<!-- Double-struck -->
+    <mathvariant name="double-struck" family="Lucida Sans Unicode"/>
+
+

+ Note that unlike the sample config file supplied with SVGMath, this does + not make use of the Mathematica 7 font as this lacks sufficient Unicode information + for it to be used with either SVGMath or XEP "as is". +

+

+ Also note that the SVG files in the repository are almost certainly Windows-specific + since they reference various Windows Fonts. +

+

+ PNG files can be created from the SVG's using Batik + and a command such as: +

+
java -jar 'C:\download\open\batik-1.7\batik-rasterizer.jar' -dpi 120 *.svg
+

+ The PDF is generated into \pdf\math.pdf using a command from a shell or command + window with current directory \math_toolkit\libs\math\doc\sf_and_dist, typically: +

+
bjam -a pdf
+

+ Note that XEP will have to be configured to use and + embed whatever fonts are used by the SVG equations (if necessary + editing the sample xep.xml provided by the XEP installation). +

+

+ (html is generated at math_toolkit\libs\math\doc\sf_and_dist\html\index.html + using just bjam -a). +

+

+ JM's XEP config file has the following font configuration section added: +

+
<font-group xml:base="file:/C:/Windows/Fonts/" label="Windows TrueType" embed="true" subset="true"> 
+      <font-family name="Arial">
+        <font><font-data ttf="arial.ttf"/></font>
+        <font style="oblique"><font-data ttf="ariali.ttf"/></font>
+        <font weight="bold"><font-data ttf="arialbd.ttf"/></font>
+        <font weight="bold" style="oblique"><font-data ttf="arialbi.ttf"/></font>
+      </font-family>
+
+      <font-family name="Times New Roman" ligatures="&#xFB01; &#xFB02;">
+        <font><font-data ttf="times.ttf"/></font>
+        <font style="italic"><font-data ttf="timesi.ttf"/></font>
+        <font weight="bold"><font-data ttf="timesbd.ttf"/></font>
+        <font weight="bold" style="italic"><font-data ttf="timesbi.ttf"/></font>
+      </font-family>
+
+      <font-family name="Courier New">
+        <font><font-data ttf="cour.ttf"/></font>
+        <font style="oblique"><font-data ttf="couri.ttf"/></font>
+        <font weight="bold"><font-data ttf="courbd.ttf"/></font>
+        <font weight="bold" style="oblique"><font-data ttf="courbi.ttf"/></font>
+      </font-family>
+
+      <font-family name="Tahoma" embed="true">
+        <font><font-data ttf="tahoma.ttf"/></font>
+        <font weight="bold"><font-data ttf="tahomabd.ttf"/></font>
+      </font-family>
+
+      <font-family name="Verdana" embed="true">
+        <font><font-data ttf="verdana.ttf"/></font>
+        <font style="oblique"><font-data ttf="verdanai.ttf"/></font>
+        <font weight="bold"><font-data ttf="verdanab.ttf"/></font>
+        <font weight="bold" style="oblique"><font-data ttf="verdanaz.ttf"/></font>
+      </font-family>
+
+      <font-family name="Palatino" embed="true" ligatures="&#xFB00; &#xFB01; &#xFB02; &#xFB03; &#xFB04;">
+        <font><font-data ttf="pala.ttf"/></font>
+        <font style="italic"><font-data ttf="palai.ttf"/></font>
+        <font weight="bold"><font-data ttf="palab.ttf"/></font>
+        <font weight="bold" style="italic"><font-data ttf="palabi.ttf"/></font>
+      </font-family>
+      
+    <font-family name="Lucida Sans Unicode">
+         <font><font-data ttf="lsansuni.ttf"/></font>
+    </font-family>
+
+

+ PAB had to alter his because the Lucida Sans Unicode font had a different + name. Changes are very likely to be required if you are not using Windows. +

+

+ XZ authored his equations using the venerable Latex, JM converted these to + MathML using mxlatex. + This process is currently unreliable and required some manual intervention: + consequently Latex source is not considered a viable route for the automatic + production of SVG versions of equations. +

+

+ Equations are embedded in the quickbook source using the equation + template defined in math.qbk. This outputs Docbook XML that looks like: +

+
<inlinemediaobject>
+<imageobject role"html">
+<imagedata fileref"../equations/myfile.png"></imagedata>
+</imageobject>
+<imageobject role"print">
+<imagedata fileref"../equations/myfile.svg"></imagedata>
+</imageobject>
+</inlinemediaobject>
+
+

+ MathML is not currently present in the Docbook output, or in the generated + HTML: this needs further investigation. +

+
+ + Producing + Graphs +
+

+ Graphs were mostly produced by a very laborious process entailing output + of columns of values from C++ programs to a .csv file, use of RJS + Graph to arrange the display and axes, and output to a .ps file, + followed by conversion to .png using Adobe Photoshop, or similar utility. + This rigmarole is not recommended! +

+

+ We plan to carry out this process in a single step using the Google + Summer of Code 2007 project of Jacob Voytko (whose work so far is + at .\boost-sandbox\SOC\2007\visualization) that should, when completed, allow + output of annotated graphs as Scalable Vector Graphic .svg files directly + from C++ programs. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html b/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html new file mode 100644 index 000000000..b9f8d0ad0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders/lanczos.html @@ -0,0 +1,578 @@ + + + +The Lanczos Approximation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Motivation +
+

+ Why base gamma and gamma-like functions on the Lanczos approximation? +

+

+ First of all I should make clear that for the gamma function over real numbers + (as opposed to complex ones) the Lanczos approximation (See Wikipedia + or Mathworld) + appears to offer no clear advantage over more traditional methods such as + Stirling's + approximation. Pugh carried out an extensive + comparison of the various methods available and discovered that they were + all very similar in terms of complexity and relative error. However, the + Lanczos approximation does have a couple of properties that make it worthy + of further consideration: +

+
    +
  • + The approximation has an easy to compute truncation error that holds for + all z > 0. In practice that means we can use the + same approximation for all z > 0, and be certain + that no matter how large or small z is, the truncation + error will at worst be bounded by some finite value. +
  • +
  • + The approximation has a form that is particularly amenable to analytic + manipulation, in particular ratios of gamma or gamma-like functions are + particularly easy to compute without resorting to logarithms. +
  • +
+

+ It is the combination of these two properties that make the approximation + attractive: Stirling's approximation is highly accurate for large z, and + has some of the same analytic properties as the Lanczos approximation, but + can't easily be used across the whole range of z. +

+

+ As the simplest example, consider the ratio of two gamma functions: one could + compute the result via lgamma: +

+
+exp(lgamma(a) - lgamma(b));
+
+

+ However, even if lgamma is uniformly accurate to 0.5ulp, the worst case relative + error in the above can easily be shown to be: +

+
+Erel > a * log(a)/2 + b * log(b)/2
+
+

+ For small a and b that's not a + problem, but to put the relationship another way: each time a and + b increase in magnitude by a factor of 10, at least one decimal digit of + precision will be lost. +

+

+ In contrast, by analytically combining like power terms in a ratio of Lanczos + approximation's, these errors can be virtually eliminated for small a + and b, and kept under control for very large (or very + small for that matter) a and b. + Of course, computing large powers is itself a notoriously hard problem, but + even so, analytic combinations of Lanczos approximations can make the difference + between obtaining a valid result, or simply garbage. Refer to the implementation + notes for the beta + function for an example of this method in practice. The incomplete gamma_p gamma and + beta functions + use similar analytic combinations of power terms, to combine gamma and beta + functions divided by large powers into single (simpler) expressions. +

+
+ + The + Approximation +
+

+ The Lanczos Approximation to the Gamma Function is given by: +

+

+ +

+

+ Where Sg(z) is an infinite sum, that is convergent for all z > 0, and + g is an arbitrary parameter that controls the "shape" + of the terms in the sum which is given by: +

+

+ +

+

+ With individual coefficients defined in closed form by: +

+

+ +

+

+ However, evaluation of the sum in that form can lead to numerical instability + in the computation of the ratios of rising and falling factorials (effectively + we're multiplying by a series of numbers very close to 1, so roundoff errors + can accumulate quite rapidly). +

+

+ The Lanczos approximation is therefore often written in partial fraction + form with the leading constants absorbed by the coefficients in the sum: +

+

+ +

+

+ where: +

+

+ +

+

+ Again parameter g is an arbitrarily chosen constant, + and N is an arbitrarily chosen number of terms to evaluate + in the "Lanczos sum" part. +

+
+ + + + + +
[Note]Note

+ Some authors choose to define the sum from k=1 to N, and hence end up with + N+1 coefficients. This happens to confuse both the following discussion + and the code (since C++ deals with half open array ranges, rather than + the closed range of the sum). This convention is consistent with Godfrey, but not Pugh, + so take care when referring to the literature in this field. +

+
+ + Computing + the Coefficients +
+

+ The coefficients C0..CN-1 need to be computed from N + and g at high precision, and then stored as part of + the program. Calculation of the coefficients is performed via the method + of Godfrey; let the constants be contained + in a column vector P, then: +

+

+ P = B D C F +

+

+ where B is an NxN matrix: +

+

+ +

+

+ D is an NxN matrix: +

+

+ +

+

+ C is an NxN matrix: +

+

+ +

+

+ and F is an N element column vector: +

+

+ +

+

+ Note than the matrices B, D and C contain all integer terms and depend only + on N, this product should be computed first, and then + multiplied by F as the last step. +

+
+ + Choosing + the Right Parameters +
+

+ The trick is to choose N and g + to give the desired level of accuracy: choosing a small value for g + leads to a strictly convergent series, but one which converges only slowly. + Choosing a larger value of g causes the terms in the + series to be large and/or divergent for about the first g-1 + terms, and to then suddenly converge with a "crunch". +

+

+ Pugh has determined the optimal value of g + for N in the range 1 <= N <= 60: + unfortunately in practice choosing these values leads to cancellation errors + in the Lanczos sum as the largest term in the (alternating) series is approximately + 1000 times larger than the result. These optimal values appear not to be + useful in practice unless the evaluation can be done with a number of guard + digits and the coefficients are stored at higher precision + than that desired in the result. These values are best reserved for say, + computing to float precision with double precision arithmetic. +

+
+

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

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

+ Significand Size +

+
+

+ N +

+
+

+ g +

+
+

+ Max Error +

+
+

+ 24 +

+
+

+ 6 +

+
+

+ 5.581 +

+
+

+ 9.51e-12 +

+
+

+ 53 +

+
+

+ 13 +

+
+

+ 13.144565 +

+
+

+ 9.2213e-23 +

+
+
+

+ The alternative described by Godfrey is to + perform an exhaustive search of the N and g + parameter space to determine the optimal combination for a given p + digit floating-point type. Repeating this work found a good approximation + for double precision arithmetic (close to the one Godfrey + found), but failed to find really good approximations for 80 or 128-bit long + doubles. Further it was observed that the approximations obtained tended + to optimised for the small values of z (1 < z < 200) used to test the + implementation against the factorials. Computing ratios of gamma functions + with large arguments were observed to suffer from error resulting from the + truncation of the Lancozos series. +

+

+ Pugh identified all the locations where the theoretical + error of the approximation were at a minimum, but unfortunately has published + only the largest of these minima. However, he makes the observation that + the minima coincide closely with the location where the first neglected term + (aN) in the Lanczos series Sg(z) changes sign. These locations are quite + easy to locate, albeit with considerable computer time. These "sweet + spots" need only be computed once, tabulated, and then searched when + required for an approximation that delivers the required precision for some + fixed precision type. +

+

+ Unfortunately, following this path failed to find a really good approximation + for 128-bit long doubles, and those found for 64 and 80-bit reals required + an excessive number of terms. There are two competing issues here: high precision + requires a large value of g, but avoiding cancellation + errors in the evaluation requires a small g. +

+

+ At this point note that the Lanczos sum can be converted into rational form + (a ratio of two polynomials, obtained from the partial-fraction form using + polynomial arithmetic), and doing so changes the coefficients so that they + are all positive. That means that the sum in rational form can + be evaluated without cancellation error, albeit with double the number of + coefficients for a given N. Repeating the search of the "sweet spots", + this time evaluating the Lanczos sum in rational form, and testing only those + "sweet spots" whose theoretical error is less than the machine + epsilon for the type being tested, yielded good approximations for all the + types tested. The optimal values found were quite close to the best cases + reported by Pugh (just slightly larger N + and slightly smaller g for a given precision than Pugh reports), and even though converting to rational + form doubles the number of stored coefficients, it should be noted that half + of them are integers (and therefore require less storage space) and the approximations + require a smaller N than would otherwise be required, + so fewer floating point operations may be required overall. +

+

+ The following table shows the optimal values for N and + g when computing at fixed precision. These should be + taken as work in progress: there are no values for 106-bit significand machines + (Darwin long doubles & NTL quad_float), and further optimisation of the + values of g may be possible. Errors given in the table + are estimates of the error due to truncation of the Lanczos infinite series + to N terms. They are calculated from the sum of the + first five neglected terms - and are known to be rather pessimistic estimates + - although it is noticeable that the best combinations of N + and g occurred when the estimated truncation error almost + exactly matches the machine epsilon for the type in question. +

+
+

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

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

+ Significand Size +

+
+

+ Platform/Compiler Used +

+
+

+ N +

+
+

+ g +

+
+

+ Max Truncation Error +

+
+

+ 24 +

+
+

+ Win32, VC++ 7.1 +

+
+

+ 6 +

+
+

+ 1.428456135094165802001953125 +

+
+

+ 9.41e-007 +

+
+

+ 53 +

+
+

+ Win32, VC++ 7.1 +

+
+

+ 13 +

+
+

+ 6.024680040776729583740234375 +

+
+

+ 3.23e-016 +

+
+

+ 64 +

+
+

+ Suse Linux 9 IA64, gcc-3.3.3 +

+
+

+ 17 +

+
+

+ 12.2252227365970611572265625 +

+
+

+ 2.34e-024 +

+
+

+ 116 +

+
+

+ HP Tru64 Unix 5.1B / Alpha, Compaq C++ V7.1-006 +

+
+

+ 24 +

+
+

+ 20.3209821879863739013671875 +

+
+

+ 4.75e-035 +

+
+
+

+ Finally note that the Lanczos approximation can be written as follows by + removing a factor of exp(g) from the denominator, and then dividing all the + coefficients by exp(g): +

+

+ +

+

+ This form is more convenient for calculating lgamma, but for the gamma function + the division by e turns a possibly exact quality into + an inexact value: this reduces accuracy in the common case that the input + is exact, and so isn't used for the gamma function. +

+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html b/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html new file mode 100644 index 000000000..b8837d1da --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders/refs.html @@ -0,0 +1,170 @@ + + + +References + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + General + references +
+

+ (Specific detailed sources for individual functions and distributions are + given at the end of each individual section). +

+

+ DLMF (NIST Digital Library of Mathematical + Functions) is intended to be a replacement for the legendary Abramowitz + and Stegun's Handbook of Mathematical Functions, now scheduled to be completed + in 2007. +

+

+ M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical Functions + with Formulas, Graphs, and Mathematical Tables, National Bureau of Standards + Applied Mathematics Series, U.S. Government Printing Office, Washington, + D.C.. +

+

+ The Wolfram Functions Site + The Wolfram Functions Site - Providing the mathematical and scientific community + with the world's largest (and most authorititive) collection of formulas + and graphics about mathematical functions. +

+

+ NIST/SEMATECH + e-Handbook of Statistical Methods +

+

+ Mathematica + Documentation: DiscreteDistributions The Wolfram Research Documentation + Center is a collection of online reference materials about Mathematica, CalculationCenter, + and other Wolfram Research products. +

+

+ Mathematica + Documentation: ContinuousDistributions The Wolfram Research Documentation + Center is a collection of online reference materials about Mathematica, CalculationCenter, + and other Wolfram Research products. +

+

+ Statistical Distributions (Wiley Series in Probability & Statistics) + (Paperback) by N.A.J. Hastings, Brian Peacock, Merran Evans, ISBN: 0471371246, + Wiley 2000. +

+

+ pugh.pdf + (application/pdf Object) Pugh Msc Thesis on the Lanczzos approximation + to the gamma function. +

+

+ N1514, + 03-0097, A Proposal to Add Mathematical Special Functions to the C++ Standard + Library (version 2), Walter E. Brown +

+
+ + Calculators* + that we found (and used to cross-check - as far as their widely-varying accuracy + allowed). +
+

+ http://www.adsciengineering.combpdcalc + Binomial Probability Distribution Calculator. +

+
+ + Other Libraries +
+

+ Cephes library by Shephen + Moshier and his book: +

+

+ Methods and programs for mathematical functions, Stephen L B Moshier, Ellis + Horwood (1989) ISBN 0745802893 0470216093 provided inspiration. +

+

+ 100-decimal digit calculator + provided some spot values. +

+

+ C++ + version. +

+

+ CDFLIB Library of Fortran Routines + for Cumulative Distribution functions. +

+

+ DCDFLIB + C++ version DCDFLIB is a library of C++ routines, using double precision + arithmetic, for evaluating cumulative probability density functions. +

+

+ http://www.softintegration.com/docs/packagechnagstat +

+

+ NAG libraries. +

+

+ MathCAD +

+

+ JMSL + Numerical Library (Java). +

+

+ John F Hart, Computer Approximations, (1978) ISBN 0 088275 642-7. +

+

+ William J Cody, Software Manual for the Elementary Functions, Prentice-Hall + (1980) ISBN 0138220646. +

+

+ Nico Temme, Special Functions, An Introduction to the Classical Functions + of Mathematical Physics, Wiley, ISBN: 0471-11313-1 (1996) who also gave valueable + advice. +

+

+ Statistics + Glossary, Valerie Easton and John H. McColl. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html b/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html new file mode 100644 index 000000000..f939b2315 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders/relative_error.html @@ -0,0 +1,124 @@ + + + +Relative Error + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Given an actual value a and a found value v + the relative error can be calculated from: +

+

+ +

+

+ However the test programs in the library use the symmetrical form: +

+

+ +

+

+ which measures relative difference and happens to be + less error prone in use since we don't have to worry which value is the "true" + result, and which is the experimental one. It guarantees to return a value + at least as large as the relative error. +

+

+ Special care needs to be taken when one value is zero: we could either take + the absolute error in this case (but that's cheating as the absolute error + is likely to be very small), or we could assign a value of either 1 or infinity + to the relative error in this special case. In the test cases for the special + functions in this library, everything below a threshold is regarded as "effectively + zero", otherwise the relative error is assigned the value of 1 if only + one of the terms is zero. The threshold is currently set at std::numeric_limits<>::min(): in other words all denormalised numbers + are regarded as a zero. +

+

+ All the test programs calculate quantized relative error, + whereas the graphs in this manual are produced with the actual + error. The difference is as follows: in the test programs, the + test data is rounded to the target real type under test when the program + is compiled, so the error observed will then be a whole number of units + in the last place either rounded up from the actual error, or + rounded down (possibly to zero). In contrast the true error + is obtained by extending the precision of the calculated value, and then + comparing to the actual value: in this case the calculated error may be some + fraction of units in the last place. +

+

+ Note that throughout this manual and the test programs the relative error + is usually quoted in units of epsilon. However, remember that units + in the last place more accurately reflect the number of contaminated + digits, and that relative error can "wobble" + by a factor of 2 compared to units in the last place. + In other words: two implementations of the same function, whose maximum relative + errors differ by a factor of 2, can actually be accurate to the same number + of binary digits. You have been warned! +

+

+

+
+ + The + Impossibility of Zero Error +
+

+ For many of the functions in this library, it is assumed that the error is + "effectively zero" if the computation can be done with a number + of guard digits. However it should be remembered that if the result is a + transcendental number then as a point of principle we + can never be sure that the result is accurate to more than 1 ulp. This is + an example of the table makers dilemma: consider what + happens if the first guard digit is a one, and the remaining guard digits + are all zero. Do we have a tie or not? Since the only thing we can tell about + a transcendental number is that its digits have no particular pattern, we + can never tell if we have a tie, no matter how many guard digits we have. + Therefore, we can never be completely sure that the result has been rounded + in the right direction. Of course, transcendental numbers that just happen + to be a tie - for however many guard digits we have - are extremely rare, + and get rarer the more guard digits we have, but even so.... +

+

+ Refer to the classic text What + Every Computer Scientist Should Know About Floating-Point Arithmetic + for more information. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html b/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html new file mode 100644 index 000000000..5189a94e3 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/backgrounders/remez.html @@ -0,0 +1,542 @@ + + + +The Remez Method + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The Remez algorithm + is a methodology for locating the minimax rational approximation to a function. + This short article gives a brief overview of the method, but it should not + be regarded as a thorough theoretical treatment, for that you should consult + your favorite textbook. +

+

+ Imagine that you want to approximate some function f(x) by way of a rational + function R(x), where R(x) may be either a polynomial P(x) or a ratio of two + polynomials P(x)/Q(x) (a rational function). Initially we'll concentrate + on the polynomial case, as it's by far the easier to deal with, later we'll + extend to the full rational function case. +

+

+ We want to find the "best" rational approximation, where "best" + is defined to be the approximation that has the least deviation from f(x). + We can measure the deviation by way of an error function: +

+

+ Eabs(x) = f(x) - R(x) +

+

+ which is expressed in terms of absolute error, but we can equally use relative + error: +

+

+ Erel(x) = (f(x) - R(x)) / |f(x)| +

+

+ And indeed in general we can scale the error function in any way we want, + it makes no difference to the maths, although the two forms above cover almost + every practical case that you're likely to encounter. +

+

+ The minimax rational function R(x) is then defined to be the function that + yields the smallest maximal value of the error function. Chebyshev showed + that there is a unique minimax solution for R(x) that has the following properties: +

+
    +
  • + If R(x) is a polynomial of degree N, then there are N+2 unknowns: the N+1 + coefficients of the polynomial, and maximal value of the error function. +
  • +
  • + The error function has N+1 roots, and N+2 extrema (minima and maxima). +
  • +
  • + The extrema alternate in sign, and all have the same magnitude. +
  • +
+

+ That means that if we know the location of the extrema of the error function + then we can write N+2 simultaneous equations: +

+

+ R(xi) + (-1)iE = f(xi) +

+

+ where E is the maximal error term, and xi are the abscissa values of the N+2 + extrema of the error function. It is then trivial to solve the simultaneous + equations to obtain the polynomial coefficients and the error term. +

+

+ Unfortunately we don't know where the extrema of the error function + are located! +

+
+ + The Remez + Method +
+

+ The Remez method is an iterative technique which, given a broad range of + assumptions, will converge on the extrema of the error function, and therefore + the minimax solution. +

+

+ In the following discussion we'll use a concrete example to illustrate the + Remez method: an approximation to the function ex over the range [-1, 1]. +

+

+ Before we can begin the Remez method, we must obtain an initial value for + the location of the extrema of the error function. We could "guess" + these, but a much closer first approximation can be obtained by first constructing + an interpolated polynomial approximation to f(x). +

+

+ In order to obtain the N+1 coefficients of the interpolated polynomial we + need N+1 points (x0...xN): with our interpolated form passing through each + of those points that yields N+1 simultaneous equations: +

+

+ f(xi) = P(xi) = c0 + c1xi ... + cNxiN +

+

+ Which can be solved for the coefficients c0...cN in P(x). +

+

+ Obviously this is not a minimax solution, indeed our only guarantee is that + f(x) and P(x) touch at N+1 locations, away from those points the error may + be arbitrarily large. However, we would clearly like this initial approximation + to be as close to f(x) as possible, and it turns out that using the zeros + of an orthogonal polynomial as the initial interpolation points is a good + choice. In our example we'll use the zeros of a Chebyshev polynomial as these + are particularly easy to calculate, interpolating for a polynomial of degree + 4, and measuring relative error we get the following + error function: +

+

+ remez-2 +

+

+ Which has a peak relative error of 1.2x10-3. +

+

+ While this is a pretty good approximation already, judging by the shape of + the error function we can clearly do better. Before starting on the Remez + method propper, we have one more step to perform: locate all the extrema + of the error function, and store these locations as our initial Chebyshev + control points. +

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

+ In the simple case of a polynomial approximation, by interpolating through + the roots of a Chebyshev polynomial we have in fact created a Chebyshev + approximation to the function: in terms of absolute + error this is the best a priori choice for the interpolated + form we can achieve, and typically is very close to the minimax solution. +

+

+ However, if we want to optimise for relative error, + or if the approximation is a rational function, then the initial Chebyshev + solution can be quite far from the ideal minimax solution. +

+

+ A more technical discussion of the theory involved can be found in this + online + course. +

+
+
+ + Remez Step + 1 +
+

+ The first step in the Remez method, given our current set of N+2 Chebyshev + control points xi, is to solve the N+2 simultaneous equations: +

+

+ P(xi) + (-1)iE = f(xi) +

+

+ To obtain the error term E, and the coefficients of the polynomial P(x). +

+

+ This gives us a new approximation to f(x) that has the same error E + at each of the control points, and whose error function alternates + in sign at the control points. This is still not necessarily the + minimax solution though: since the control points may not be at the extrema + of the error function. After this first step here's what our approximation's + error function looks like: +

+

+ remez-3 +

+

+ Clearly this is still not the minimax solution since the control points are + not located at the extrema, but the maximum relative error has now dropped + to 5.6x10-4. +

+
+ + Remez Step + 2 +
+

+ The second step is to locate the extrema of the new approximation, which + we do in two stages: first, since the error function changes sign at each + control point, we must have N+1 roots of the error function located between + each pair of N+2 control points. Once these roots are found by standard root + finding techniques, we know that N extrema are bracketed between each pair + of roots, plus two more between the endpoints of the range and the first + and last roots. The N+2 extrema can then be found using standard function + minimisation techniques. +

+

+ We now have a choice: multi-point exchange, or single point exchange. +

+

+ In single point exchange, we move the control point nearest to the largest + extrema to the absissa value of the extrema. +

+

+ In multi-point exchange we swap all the current control points, for the locations + of the extrema. +

+

+ In our example we perform multi-point exchange. +

+
+ + Iteration +
+

+ The Remez method then performs steps 1 and 2 above iteratively until the + control points are located at the extrema of the error function: this is + then the minimax solution. +

+

+ For our current example, two more iterations converges on a minimax solution + with a peak relative error of 5x10-4 and an error function that looks like: +

+

+ remez-4 +

+
+ + Rational + Approximations +
+

+ If we wish to extend the Remez method to a rational approximation of the + form +

+

+ f(x) = R(x) = P(x) / Q(x) +

+

+ where P(x) and Q(x) are polynomials, then we proceed as before, except that + now we have N+M+2 unknowns if P(x) is of order N and Q(x) is of order M. + This assumes that Q(x) is normalised so that it's leading coefficient is + 1, giving N+M+1 polynomial coefficients in total, plus the error term E. +

+

+ The simultaneous equations to be solved are now: +

+

+ P(xi) / Q(xi) + (-1)iE = f(xi) +

+

+ Evaluated at the N+M+2 control points xi. +

+

+ Unfortunately these equations are non-linear in the error term E: we can + only solve them if we know E, and yet E is one of the unknowns! +

+

+ The method usually adopted to solve these equations is an iterative one: + we guess the value of E, solve the equations to obtain a new value for E + (as well as the polynomial coefficients), then use the new value of E as + the next guess. The method is repeated until E converges on a stable value. +

+

+ These complications extend the running time required for the development + of rational approximations quite considerably. It is often desirable to obtain + a rational rather than polynomial approximation none the less: rational approximations + will often match more difficult to approximate functions, to greater accuracy, + and with greater efficiency, than their polynomial alternatives. For example, + if we takes our previous example of an approximation to ex, we obtained 5x10-4 accuracy + with an order 4 polynomial. If we move two of the unknowns into the denominator + to give a pair of order 2 polynomials, and re-minimise, then the peak relative + error drops to 8.7x10-5. That's a 5 fold increase in accuracy, for the same + number of terms overall. +

+
+ + Practical + Considerations +
+

+ Most treatises on approximation theory stop at this point. However, from + a practical point of view, most of the work involves finding the right approximating + form, and then persuading the Remez method to converge on a solution. +

+

+ So far we have used a direct approximation: +

+

+ f(x) = R(x) +

+

+ But this will converge to a useful approximation only if f(x) is smooth. + In addition round-off errors when evaluating the rational form mean that + this will never get closer than within a few epsilon of machine precision. + Therefore this form of direct approximation is often reserved for situations + where we want efficiency, rather than accuracy. +

+

+ The first step in improving the situation is generally to split f(x) into + a dominant part that we can compute accurately by another method, and a slowly + changing remainder which can be approximated by a rational approximation. + We might be tempted to write: +

+

+ f(x) = g(x) + R(x) +

+

+ where g(x) is the dominant part of f(x), but if f(x)/g(x) is approximately + constant over the interval of interest then: +

+

+ f(x) = g(x)(c + R(x)) +

+

+ Will yield a much better solution: here c is a constant + that is the approximate value of f(x)/g(x) and R(x) is typically tiny compared + to c. In this situation if R(x) is optimised for absolute + error, then as long as its error is small compared to the constant c, + that error will effectively get wiped out when R(x) is added to c. +

+

+ The difficult part is obviously finding the right g(x) to extract from your + function: often the asymptotic behaviour of the function will give a clue, + so for example the function erfc + becomes proportional to e-x2/x as x becomes large. Therefore using: +

+

+ erfc(z) = (C + R(x)) e-x2/x +

+

+ as the approximating form seems like an obvious thing to try, and does indeed + yield a useful approximation. +

+

+ However, the difficulty then becomes one of converging the minimax solution. + Unfortunately, it is known that for some functions the Remez method can lead + to divergent behaviour, even when the initial starting approximation is quite + good. Furthermore, it is not uncommon for the solution obtained in the first + Remez step above to be a bad one: the equations to be solved are generally + "stiff", often very close to being singular, and assuming a solution + is found at all, round-off errors and a rapidly changing error function, + can lead to a situation where the error function does not in fact change + sign at each control point as required. If this occurs, it is fatal to the + Remez method. It is also possible to obtain solutions that are perfectly + valid mathematically, but which are quite useless computationally: either + because there is an unavoidable amount of roundoff error in the computation + of the rational function, or because the denominator has one or more roots + over the interval of the approximation. In the latter case while the approximation + may have the correct limiting value at the roots, the approximation is nonetheless + useless. +

+

+ Assuming that the approximation does not have any fatal errors, and that + the only issue is converging adequately on the minimax solution, the aim + is to get as close as possible to the minimax solution before beginning the + Remez method. Using the zeros of a Chebyshev polynomial for the initial interpolation + is a good start, but may not be ideal when dealing with relative errors and/or + rational (rather than polynomial) approximations. One approach is to skew + the initial interpolation points to one end: for example if we raise the + roots of the Chebyshev polynomial to a positive power greater than 1 then + the roots will be skewed towards the middle of the [-1,1] interval, while + a positive power less than one will skew them towards either end. More usefully, + if we initially rescale the points over [0,1] and then raise to a positive + power, we can skew them to the left or right. Returning to our example of + ex over [-1,1], the initial interpolated form was some way from the minimax + solution: +

+

+ remez-2 +

+

+ 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: +

+

+ remez-5 +

+

+ It's clearly still not ideal, but it is only a few percent away from our + desired minimax solution (5x10-4). +

+
+ + Remez + Method Checklist +
+

+ The following lists some of the things to check if the Remez method goes + wrong, it is by no means an exhaustive list, but is provided in the hopes + that it will prove useful. +

+
    +
  • + Is the function smooth enough? Can it be better separated into a rapidly + changing part, and an asymptotic part? +
  • +
  • + Does the function being approximated have any "blips" in it? + Check for problems as the function changes computation method, or if a + root, or an infinity has been divided out. The telltale sign is if there + is a narrow region where the Remez method will not converge. +
  • +
  • + Check you have enough accuracy in your calculations: remember that the + Remez method works on the difference between the approximation and the + function being approximated: so you must have more digits of precision + available than the precision of the approximation being constructed. So + for example at double precision, you shouldn't expect to be able to get + better than a float precision approximation. +
  • +
  • + Try skewing the initial interpolated approximation to minimise the error + before you begin the Remez steps. +
  • +
  • + If the approximation won't converge or is ill-conditioned from one starting + location, try starting from a different location. +
  • +
  • + If a rational function won't converge, one can minimise a polynomial (which + presents no problems), then rotate one term from the numerator to the denominator + and minimise again. In theory one can continue moving terms one at a time + from numerator to denominator, and then re-minimising, retaining the last + set of control points at each stage. +
  • +
  • + Try using a smaller interval. It may also be possible to optimise over + one (small) interval, rescale the control points over a larger interval, + and then re-minimise. +
  • +
  • + Keep absissa values small: use a change of variable to keep the abscissa + over, say [0, b], for some smallish value b. +
  • +
+
+ + References +
+

+ The original references for the Remez Method and it's extension to rational + functions are unfortunately in Russian: +

+

+ Remez, E.Ya., Fundamentals of numerical methods for Chebyshev approximations, + "Naukova Dumka", Kiev, 1969. +

+

+ Remez, E.Ya., Gavrilyuk, V.T., Computer development of certain + approaches to the approximate construction of solutions of Chebyshev problems + nonlinearly depending on parameters, Ukr. Mat. Zh. 12 (1960), + 324-338. +

+

+ Gavrilyuk, V.T., Generalization of the first polynomial algorithm + of E.Ya.Remez for the problem of constructing rational-fractional Chebyshev + approximations, Ukr. Mat. Zh. 16 (1961), 575-585. +

+

+ Some English language sources include: +

+

+ Fraser, W., Hart, J.F., On the computation of rational approximations + to continuous functions, Comm. of the ACM 5 (1962), 401-403, 414. +

+

+ Ralston, A., Rational Chebyshev approximation by Remes' algorithms, + Numer.Math. 7 (1965), no. 4, 322-330. +

+

+ A. Ralston, Rational Chebyshev approximation, Mathematical Methods + for Digital Computers v. 2 (Ralston A., Wilf H., eds.), Wiley, + New York, 1967, pp. 264-284. +

+

+ Hart, J.F. e.a., Computer approximations, Wiley, New + York a.o., 1968. +

+

+ Cody, W.J., Fraser, W., Hart, J.F., Rational Chebyshev approximation + using linear equations, Numer.Math. 12 (1968), 242-251. +

+

+ Cody, W.J., A survey of practical rational and polynomial approximation + of functions, SIAM Review 12 (1970), no. 3, 400-423. +

+

+ Barrar, R.B., Loeb, H.J., On the Remez algorithm for non-linear + families, Numer.Math. 15 (1970), 382-391. +

+

+ Dunham, Ch.B., Convergence of the Fraser-Hart algorithm for rational + Chebyshev approximation, Math. Comp. 29 (1975), no. 132, 1078-1082. +

+

+ G. L. Litvinov, Approximate construction of rational approximations + and the effect of error autocorrection, Russian Journal of Mathematical + Physics, vol.1, No. 3, 1994. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist.html b/doc/sf_and_dist/html/math_toolkit/dist.html new file mode 100644 index 000000000..cfc39beb7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist.html @@ -0,0 +1,180 @@ + + + +Statistical Distributions and Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+
Statistical Distributions + Tutorial
+
+
Overview
+
Worked Examples
+
+
+ Distribution Construction Example
+
Student's + t Distribution Examples
+
+
+ Calculating confidence intervals on the mean with the Students-t distribution
+
+ Testing a sample mean for difference from a "true" mean
+
+ Estimating how large a sample size would have to become in order to give + a significant Students-t test result with a single sample test
+
+ Comparing the means of two samples with the Students-t test
+
+ Comparing two paired samples with the Student's t distribution
+
+
Chi Squared + Distribution Examples
+
+
+ Confidence Intervals on the Standard Deviation
+
+ Chi-Square Test for the Standard Deviation
+
+ Estimating the Required Sample Sizes for a Chi-Square Test for the Standard + Deviation
+
+
F Distribution + Examples
+
Binomial + Distribution Examples
+
+
+ Binomial Coin-Flipping Example
+
+ Binomial Quiz Example
+
+ Calculating Confidence Limits on the Frequency of Occurrence for a Binomial + Distribution
+
+ Estimating Sample Sizes for a Binomial Distribution.
+
+
Negative + Binomial Distribution Examples
+
+
+ Calculating Confidence Limits on the Frequency of Occurrence for the + Negative Binomial Distribution
+
+ Estimating Sample Sizes for the Negative Binomial.
+
+ Negative Binomial Sales Quota Example.
+
+ Negative Binomial Table Printing Example.
+
+
Normal + Distribution Examples
+
+ Some Miscellaneous Examples of the Normal (Gaussian) Distribution
+
Error Handling + Example
+
Find Location + and Scale Examples
+
+
+ Find Location (Mean) Example
+
+ Find Scale (Standard Deviation) Example
+
+ Find mean and standard deviation example
+
+
Comparison + with C, R, FORTRAN-style Free Functions
+
+
Random Variates + and Distribution Parameters
+
Discrete Probability + Distributions
+
+
Statistical Distributions + Reference
+
+
Non-Member Properties
+
Distributions
+
+
+ Bernoulli Distribution
+
Beta + Distribution
+
+ Binomial Distribution
+
Cauchy-Lorentz + Distribution
+
+ Chi Squared Distribution
+
Exponential + Distribution
+
Extreme + Value Distribution
+
F Distribution
+
Gamma + (and Erlang) Distribution
+
+ Log Normal Distribution
+
+ Negative Binomial Distribution
+
Normal + (Gaussian) Distribution
+
Pareto + Distribution
+
Poisson + Distribution
+
Rayleigh + Distribution
+
+ Students t Distribution
+
+ Triangular Distribution
+
Weibull + Distribution
+
Uniform + Distribution
+
+
Distribution + Algorithms
+
+
Extras/Future Directions
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html new file mode 100644 index 000000000..bf4dd5f91 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref.html @@ -0,0 +1,90 @@ + + + +Statistical Distributions Reference + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html new file mode 100644 index 000000000..a8fe8283a --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dist_algorithms.html @@ -0,0 +1,150 @@ + + + +Distribution Algorithms + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Finding + the Location and Scale for Normal and similar distributions +
+

+ Two functions aid finding location and scale of random variable z to give + probability p (given a scale or location). Only applies to distributions + like normal, lognormal, extreme value, Cauchy, (and symmetrical triangular), + that have scale and location properties. +

+

+ These functions are useful to predict the mean and/or standard deviation + that will be needed to meet a specified minimum weight or maximum dose. +

+

+ Complement versions are also provided, both with explicit and implicit + (default) policy. +

+
+using boost::math::policies::policy; // May be needed by users defining their own policies.
+using boost::math::complement; // Will be needed by users who want to use complements.
+
+
+ + find_location + function +
+

+ +

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

+

+
+namespace boost{ namespace math{
+
+template <class Dist, class Policy> // explicit error handling policy
+  typename Dist::value_type find_location( // For example, normal mean.
+  typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
+  // For example, a nominal minimum acceptable z, so that p * 100 % are > z
+  typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
+  typename Dist::value_type scale, // scale parameter, for example, normal standard deviation.
+  const Policy& pol);
+
+template <class Dist>  // with default policy.
+  typename Dist::value_type find_location( // For example, normal mean.
+  typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
+  // For example, a nominal minimum acceptable z, so that p * 100 % are > z
+  typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
+  typename Dist::value_type scale); // scale parameter, for example, normal standard deviation.
+
+  }} // namespaces
+
+
+ + find_scale + function +
+

+ +

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

+

+
+namespace boost{ namespace math{ 
+
+template <class Dist, class Policy>
+  typename Dist::value_type find_scale( // For example, normal mean.
+  typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
+  // For example, a nominal minimum acceptable weight z, so that p * 100 % are > z
+  typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
+  typename Dist::value_type location, // location parameter, for example, normal distribution mean.
+  const Policy& pol);
+
+ template <class Dist> // with default policy.
+   typename Dist::value_type find_scale( // For example, normal mean.
+   typename Dist::value_type z, // location of random variable z to give probability, P(X > z) == p.
+   // For example, a nominal minimum acceptable z, so that p * 100 % are > z
+   typename Dist::value_type p, // probability value desired at x, say 0.95 for 95% > z.
+   typename Dist::value_type location) // location parameter, for example, normal distribution mean.
+}} // namespaces
+
+

+ All argument must be finite, otherwise domain_error + is called. +

+

+ Probability arguments must be [0, 1], otherwise domain_error + is called. +

+

+ If the choice of arguments would give a negative scale, domain_error + is called, unless the policy is to ignore, when the negative (impossible) + value of scale is returned. +

+

+ Find Mean and standard + deviation examples gives simple examples of use of both find_scale + and find_location, and a longer example finding means and standard deviations + of normally distributed weights to meet a specification. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html new file mode 100644 index 000000000..8f6e34ddc --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists.html @@ -0,0 +1,83 @@ + + + +Distributions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html new file mode 100644 index 000000000..dc1840cab --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/bernoulli_dist.html @@ -0,0 +1,358 @@ + + + +Bernoulli Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{
+ template <class RealType = double, 
+           class Policy   = policies::policy<> >
+ class bernoulli_distribution;
+   
+ typedef bernoulli_distribution<> bernoulli;
+
+ template <class RealType, class Policy>
+ class bernoulli_distribution
+ {
+ public:
+    typedef RealType  value_type;
+    typedef Policy    policy_type;
+
+    bernoulli_distribution(RealType p); // Constructor.
+    // Accessor function.
+    RealType success_fraction() const
+    // Probability of success (as a fraction).
+ }; 
+}} // namespaces
+
+

+ The Bernoulli distribution is a discrete distribution of the outcome + of a single trial with only two results, 0 (failure) or 1 (success), + with a probability of success p. +

+

+ The Bernoulli distribution is the simplest building block on which other + discrete distributions of sequences of independent Bernoulli trials can + be based. +

+

+ The Bernoulli is the binomial distribution (k = 1, p) with only one trial. +

+

+ probability + density function pdf f(0) = 1 - p, f(1) = p. Cumulative + distribution function D(k) = if (k == 0) 1 - p else 1. +

+

+ The following graph illustrates how the probability + density function pdf varies with the outcome of the single trial: +

+

+ bernoulli_pdf +

+

+ and the Cumulative + distribution function +

+

+ bernoulli_cdf +

+
+ + Member + Functions +
+
+bernoulli_distribution(RealType p);
+
+

+ Constructs a bernoulli + distribution with success_fraction p. +

+
+RealType success_fraction() const
+
+

+ Returns the success_fraction 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 variable is 0 and 1, and the useful supported + range is only 0 or 1. +

+

+ Outside this range, functions are undefined, or may throw domain_error + exception and make an error message available. +

+
+ + Accuracy +
+

+ The Bernoulli distribution is implemented with simple arithmetic operators + and so should have errors within an epsilon or two. +

+
+ + Implementation +
+

+ In the following table p is the probability of success + and q = 1-p. k is the random + variate, either 0 or 1. +

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

+ The Bernoulli distribution is implemented here as a strict + discrete distribution. If a generalised version, allowing + k to be any real, is required then the binomial distribution with a + single trial should be used, for example: +

+

+ binomial_distribution(1, + 0.25) +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ Supported range +

+
+

+ {0, 1} +

+
+

+ pdf +

+
+

+ Using the relation: pdf = 1 - p for k = 0, else p +

+
+

+ cdf +

+
+

+ Using the relation: cdf = 1 - p for k = 0, else 1 +

+
+

+ cdf complement +

+
+

+ q = 1 - p +

+
+

+ quantile +

+
+

+ if x <= (1-p) 0 else 1 +

+
+

+ quantile from the complement +

+
+

+ if x <= (1-p) 1 else 0 +

+
+

+ mean +

+
+

+ p +

+
+

+ variance +

+
+

+ p * (1 - p) +

+
+

+ mode +

+
+

+ if (p < 0.5) 0 else 1 +

+
+

+ skewness +

+
+

+ (1 - 2 * p) / sqrt(p * q) +

+
+

+ kurtosis +

+
+

+ 6 * p * p - 6 * p +1/ p * q +

+
+

+ kurtosis excess +

+
+

+ kurtosis -3 +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html new file mode 100644 index 000000000..8ddd465f1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/beta_dist.html @@ -0,0 +1,641 @@ + + + +Beta Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+
+ template <class RealType = double, 
+           class Policy   = policies::policy<> >
+class beta_distribution;
+
+// typedef beta_distribution<double> beta;
+// Note that this is deliberately NOT provided,
+// to avoid a clash with the function name beta.
+
+template <class RealType, class Policy>
+class beta_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+   // Constructor from two shape parameters, alpha & beta:
+   beta_distribution(RealType a, RealType b);
+   
+   // Parameter accessors:
+   RealType alpha() const;
+   RealType beta() const;
+   
+   // Parameter estimators of alpha or beta from mean and variance.
+   static RealType find_alpha(
+     RealType mean, // Expected value of mean.
+     RealType variance); // Expected value of variance.
+   
+   static RealType find_beta(
+     RealType mean, // Expected value of mean.
+     RealType variance); // Expected value of variance.
+
+   // Parameter estimators from from
+   // either alpha or beta, and x and probability.
+   
+   static RealType find_alpha(
+     RealType beta, // from beta.
+     RealType x, //  x.
+     RealType probability); // cdf
+   
+   static RealType find_beta(
+     RealType alpha, // alpha.
+     RealType x, // probability x.
+     RealType probability); // probability cdf.
+};
+
+}} // namespaces
+
+

+ The class type beta_distribution + represents a beta + probability + distribution function. +

+

+ The beta + distribution is used as a prior + distribution for binomial proportions in Bayesian + analysis. +

+

+ See also: beta + distribution and Bayesian + statistics. +

+

+ How the beta distribution is used for Bayesian + analysis of one parameter models is discussed by Jeff Grynaviski. +

+

+ The probability + density function PDF for the beta + distribution defined on the interval [0,1] is given by: +

+

+ f(x;α,β) = xα - 1 (1 - x)β -1 / B(α, β) +

+

+ where B(α, β) is the beta + function, implemented in this library as beta. + Division by the beta function ensures that the pdf is normalized to the + range zero to unity. +

+

+ The following graph illustrates examples of the pdf for various values + of the shape parameters. Note the α = β = 2 (blue line) is dome-shaped, and + might be approximated by a symmetrical triangular distribution. +

+

+ beta_dist +

+

+ If α = β = 1, then it is a ​ +uniform + distribution, equal to unity in the entire interval x = 0 to + 1. If α ​ and β ​ are < 1, then the pdf is U-shaped. If α != β, then the shape + is asymmetric and could be approximated by a triangle whose apex is away + from the centre (where x = half). +

+
+ + Member + Functions +
+
+ + Constructor +
+
+beta_distribution(RealType alpha, RealType beta);
+
+

+ Constructs a beta distribution with shape parameters alpha + and beta. +

+

+ Requires alpha,beta > 0,otherwise domain_error + is called. Note that technically the beta distribution is defined for + alpha,beta >= 0, but it's not clear whether any program can actually + make use of that latitude or how many of the non-member functions can + be usefully defined in that case. Therefore for now, we regard it as + an error if alpha or beta is zero. +

+

+ For example: +

+
+beta_distribution<> mybeta(2, 5);
+
+

+ Constructs a the beta distribution with alpha=2 and beta=5 (shown in + yellow in the graph above). +

+
+ + Parameter + Accessors +
+
+RealType alpha() const;
+
+

+ Returns the parameter alpha from which this distribution + was constructed. +

+
+RealType beta() const;
+
+

+ Returns the parameter beta from which this distribution + was constructed. +

+

+ So for example: +

+
+beta_distribution<> mybeta(2, 5);
+assert(mybeta.alpha() == 2.);  // mybeta.alpha() returns 2
+assert(mybeta.beta() == 5.);   // mybeta.beta()  returns 5
+
+
+ + Parameter + Estimators +
+

+ Two pairs of parameter estimators are provided. +

+

+ One estimates either α ​ or β ​ +from presumed-known mean and variance. +

+

+ The other pair estimates either α ​ or β ​ from the cdf and x. +

+

+ It is also possible to estimate α ​ and β ​ from 'known' mode & quantile. + For example, calculators are provided by the Pooled + Prevalence Calculator and Beta + Buster but this is not yet implemented here. +

+
+static RealType find_alpha(
+  RealType mean, // Expected value of mean.
+  RealType variance); // Expected value of variance.
+
+

+ Returns the unique value of α that corresponds to a beta distribution with + mean mean and variance variance. +

+
+static RealType find_beta(
+  RealType mean, // Expected value of mean.
+  RealType variance); // Expected value of variance.
+
+

+ Returns the unique value of β that corresponds to a beta distribution with + mean mean and variance variance. +

+
+static RealType find_alpha(
+  RealType beta, // from beta.
+  RealType x, //  x.
+  RealType probability); // probability cdf
+
+

+ Returns the value of α that gives: cdf(beta_distribution<RealType>(alpha, beta), x) == probability. +

+
+static RealType find_beta(
+  RealType alpha, // alpha.
+  RealType x, // probability x.
+  RealType probability); // probability cdf.
+
+

+ Returns the value of β that gives: cdf(beta_distribution<RealType>(alpha, beta), x) == probability. +

+
+ + Non-member + Accessor Functions +
+

+ 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 formulae for calculating these are shown in the table below, and + at Wolfram + Mathworld. +

+
+ + Applications +
+

+ The beta distribution can be used to model events constrained to take + place within an interval defined by a minimum and maximum value: so it + is used in project management systems. +

+

+ It is also widely used in Bayesian + statistical inference. +

+
+ + Related + distributions +
+

+ The beta distribution with both α ​ and β = 1 follows a uniform + distribution. +

+

+ The triangular + is used when less precise information is available. +

+

+ The binomial + distribution is closely related when α ​ and β ​ are integers. +

+

+ With integer values of α ​ and β ​ the distribution B(i, j) is that of the j-th + highest of a sample of i + j + 1 independent random variables uniformly + distributed between 0 and 1. The cumulative probability from 0 to x is + thus the probability that the j-th highest value is less than x. Or it + is the probability that that at least i of the random variables are less + than x, a probability given by summing over the Binomial + Distribution with its p parameter set to x. +

+
+ + Accuracy +
+

+ This distribution is implemented using the beta + functions beta + and incomplete + beta functions ibeta + and ibetac; + please refer to these functions for information on accuracy. +

+
+ + Implementation +
+

+ In the following table a and b + are the parameters α and β, x is the random variable, + p is the probability and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ f(x;α,β) = xα - 1 (1 - x)β -1 / B(α, β) +

+

+ Implemented using ibeta_derivative(a, + b, x). +

+
+

+ cdf +

+
+

+ Using the incomplete beta function ibeta(a, + b, x) +

+
+

+ cdf complement +

+
+

+ ibetac(a, + b, x) +

+
+

+ quantile +

+
+

+ Using the inverse incomplete beta function ibeta_inv(a, + b, p) +

+
+

+ quantile from the complement +

+
+

+ ibetac_inv(a, + b, q) +

+
+

+ mean +

+
+

+ a/(a+b) +

+
+

+ variance +

+
+

+ a * + b / + (a+b)^2 * (a + + b + + 1) +

+
+

+ mode +

+
+

+ (a-1) / + (a + + b + - 2) +

+
+

+ skewness +

+
+

+ 2 (b-a) + sqrt(a+b+1)/(a+b+2) * sqrt(a + * b) +

+
+

+ kurtosis excess +

+
+

+ +

+
+

+ kurtosis +

+
+

+ kurtosis + + 3 +

+
+

+ parameter estimation +

+
+

+

+
+

+ alpha +

+

+ from mean and variance +

+
+

+ mean * + (( (mean * + (1 + - mean)) / + variance)- + 1) +

+
+

+ beta +

+

+ from mean and variance +

+
+

+ (1 + - mean) * + (((mean + * (1 - mean)) + /variance)-1) +

+
+

+ The member functions find_alpha + and find_beta +

+

+ from cdf and probability x +

+

+ and either alpha + or beta +

+
+

+ Implemented in terms of the inverse incomplete beta functions +

+

+ ibeta_inva, + and ibeta_invb + respectively. +

+
+

+ find_alpha +

+
+

+ ibeta_inva(beta, + x, + probability) +

+
+

+ find_beta +

+
+

+ ibeta_invb(alpha, + x, + probability) +

+
+
+ + References +
+

+ Wikipedia + Beta distribution +

+

+ NIST + Exploratory Data Analysis +

+

+ Wolfram + MathWorld +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html new file mode 100644 index 000000000..3933a411e --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/binomial_dist.html @@ -0,0 +1,937 @@ + + + +Binomial Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class binomial_distribution;
+
+typedef binomial_distribution<> binomial;
+
+template <class RealType, class Policy>
+class binomial_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+   
+   static const unspecified-type cloppper_pearson_exact_interval;
+   static const unspecified-type jeffreys_prior_interval;
+   
+   // construct:
+   binomial_distribution(RealType n, RealType p);
+   
+   // parameter access::
+   RealType success_fraction() const;
+   RealType trials() const;
+   
+   // Bounds on success fraction:
+   static RealType find_lower_bound_on_p(
+      RealType trials, 
+      RealType successes,
+      RealType probability,
+      unspecified-type method = clopper_pearson_exact_interval);
+   static RealType find_upper_bound_on_p(
+      RealType trials, 
+      RealType successes,
+      RealType probability,
+      unspecified-type method = clopper_pearson_exact_interval);
+      
+   // estimate min/max number of trials:
+   static RealType find_minimum_number_of_trials(
+      RealType k,     // number of events
+      RealType p,     // success fraction
+      RealType alpha); // risk level
+      
+   static RealType find_maximum_number_of_trials(
+      RealType k,     // number of events
+      RealType p,     // success fraction
+      RealType alpha); // risk level
+};
+
+}} // namespaces
+
+

+ The class type binomial_distribution + represents a binomial + distribution: it is used when there are exactly two mutually + exclusive outcomes of a trial. These outcomes are labelled "success" + and "failure". The binomial distribution + is used to obtain the probability of observing k successes in N trials, + with the probability of success on a single trial denoted by p. The binomial + distribution assumes that p is fixed for all trials. +

+
+ + + + + +
[Note]Note

+ The random variable for the binomial distribution is the number of + successes, (the number of trials is a fixed property of the distribution) + whereas for the negative binomial, the random variable is the number + of trials, for a fixed number of successes. +

+

+ The PDF for the binomial distribution is given by: +

+

+ +

+

+ The following two graphs illustrate how the PDF changes depending upon + the distributions parameters, first we'll keep the success fraction + p fixed at 0.5, and vary the sample size: +

+

+ binomial_pdf_1 +

+

+ Alternatively, we can keep the sample size fixed at N=20 and vary the + success fraction p: +

+

+ binomial_pdf_2 +

+

+

+
+ + + + + +
[Caution]Caution
+

+ The Binomial distribution is a discrete distribution: internally + functions like the cdf + and pdf are treated + "as if" they are continuous functions, but in reality the + results returned from these functions only have meaning if an integer + value is provided for the random variate argument. +

+

+ The quantile function will by default return an integer result that + has been rounded outwards. That is to say lower + quantiles (where the probability is less than 0.5) are rounded downward, + and upper quantiles (where the probability is greater than 0.5) are + rounded upwards. This behaviour ensures that if an X% quantile is + requested, then at least the requested coverage + will be present in the central region, and no more than + the requested coverage will be present in the tails. +

+

+ This behaviour can be changed so that the quantile functions are + rounded differently, or even return a real-valued result using Policies. It is + strongly recommended that you read the tutorial Understanding + Quantiles of Discrete Distributions before using the quantile + function on the Binomial distribution. The reference + docs describe how to change the rounding policy for these + distributions. +

+
+

+

+
+ + Member + Functions +
+
+ + Construct +
+
+binomial_distribution(RealType n, RealType p);
+
+

+ Constructor: n is the total number of trials, p + is the probability of success of a single trial. +

+

+ Requires 0 <= + p <= + 1, and n + >= 0, + otherwise calls domain_error. +

+
+ + Accessors +
+
+RealType success_fraction() const;
+
+

+ Returns the parameter p from which this distribution + was constructed. +

+
+RealType trials() const;
+
+

+ Returns the parameter n from which this distribution + was constructed. +

+
+ + Lower + Bound on the Success Fraction +
+
+static RealType find_lower_bound_on_p(
+   RealType trials, 
+   RealType successes,
+   RealType alpha,
+   unspecified-type method = clopper_pearson_exact_interval);
+
+

+ Returns a lower bound on the success fraction: +

+
+

+
+
trials
+

+ The total number of trials conducted. +

+
successes
+

+ The number of successes that occurred. +

+
alpha
+

+ The largest acceptable probability that the true value of the success + fraction is less than the value + returned. +

+
method
+

+ An optional parameter that specifies the method to be used to compute + the interval (See below). +

+
+
+

+ For example, if you observe k successes from n + trials the best estimate for the success fraction is simply k/n, + but if you want to be 95% sure that the true value is greater + than some value, pmin, then: +

+
+pmin = binomial_distribution<RealType>::find_lower_bound_on_p(
+                    n, k, 0.05);
+
+

+ See + worked example. +

+

+ There are currently two possible values available for the method + optional parameter: clopper_pearson_exact_interval + or jeffreys_prior_interval. These constants are + both members of class template binomial_distribution, + so usage is for example: +

+
+p = binomial_distribution<RealType>::find_lower_bound_on_p(
+    n, k, 0.05, binomial_distribution<RealType>::jeffreys_prior_interval);
+
+

+ The default method if this parameter is not specified is the Clopper + Pearson "exact" interval. This produces an interval that guarantees + at least 100(1-alpha)% coverage, but which is known to be + overly conservative, sometimes producing intervals with much greater + than the requested coverage. +

+

+ The alternative calculation method produces a non-informative Jeffreys + Prior interval. It produces 100(1-alpha)% + coverage only in the average case, though is typically + very close to the requested coverage level. It is one of the main methods + of calculation recommended in the review by Brown, Cai and DasGupta. +

+

+ Please note that the "textbook" calculation method using a + normal approximation (the Wald interval) is deliberately not provided: + it is known to produce consistently poor results, even when the sample + size is surprisingly large. Refer to Brown, Cai and DasGupta for a full + explanation. Many other methods of calculation are available, and may + be more appropriate for specific situations. Unfortunately there appears + to be no consensus amongst statisticians as to which is "best": + refer to the discussion at the end of Brown, Cai and DasGupta for examples. +

+

+ The two methods provided here were chosen principally because they can + be used for both one and two sided intervals. See also: +

+

+ Lawrence D. Brown, T. Tony Cai and Anirban DasGupta (2001), Interval + Estimation for a Binomial Proportion, Statistical Science, Vol. 16, No. + 2, 101-133. +

+

+ T. Tony Cai (2005), One-sided confidence intervals in discrete distributions, + Journal of Statistical Planning and Inference 131, 63-88. +

+

+ Agresti, A. and Coull, B. A. (1998). Approximate is better than "exact" + for interval estimation of binomial proportions. Amer. Statist. 52 119-126. +

+

+ Clopper, C. J. and Pearson, E. S. (1934). The use of confidence or fiducial + limits illustrated in the case of the binomial. Biometrika 26 404-413. +

+
+ + Upper + Bound on the Success Fraction +
+
+static RealType find_upper_bound_on_p(
+   RealType trials, 
+   RealType successes,
+   RealType alpha,
+   unspecified-type method = clopper_pearson_exact_interval);
+
+

+ Returns an upper bound on the success fraction: +

+
+

+
+
trials
+

+ The total number of trials conducted. +

+
successes
+

+ The number of successes that occurred. +

+
alpha
+

+ The largest acceptable probability that the true value of the success + fraction is greater than the value + returned. +

+
method
+

+ An optional parameter that specifies the method to be used to compute + the interval. Refer to the documentation for find_upper_bound_on_p + above for the meaning of the method options. +

+
+
+

+ For example, if you observe k successes from n + trials the best estimate for the success fraction is simply k/n, + but if you want to be 95% sure that the true value is less + than some value, pmax, then: +

+
+pmax = binomial_distribution<RealType>::find_upper_bound_on_p(
+                    n, k, 0.05);
+
+

+ See + worked example. +

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

+ In order to obtain a two sided bound on the success fraction, you call + both find_lower_bound_on_p + and find_upper_bound_on_p + each with the same arguments. +

+

+ If the desired risk level that the true success fraction lies outside + the bounds is α, then you pass α/2 to these functions. +

+

+ So for example a two sided 95% confidence interval would be obtained + by passing α = 0.025 to each of the functions. +

+

+ See + worked example. +

+
+
+ + Estimating + the Number of Trials Required for a Certain Number of Successes +
+
+static RealType find_minimum_number_of_trials(
+   RealType k,     // number of events
+   RealType p,     // success fraction
+   RealType alpha); // probability threshold
+
+

+ This function estimates the minimum number of trials required to ensure + that more than k events is observed with a level of risk alpha + that k or fewer events occur. +

+
+

+
+
k
+

+ The number of success observed. +

+
p
+

+ The probability of success for each trial. +

+
alpha
+

+ The maximum acceptable probability that k events or fewer will be + observed. +

+
+
+

+ For example: +

+
+binomial_distribution<RealType>::find_number_of_trials(10, 0.5, 0.05);
+
+

+ Returns the smallest number of trials we must conduct to be 95% sure + 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 +
+
+static RealType find_maximum_number_of_trials(
+   RealType k,     // number of events
+   RealType p,     // success fraction
+   RealType alpha); // probability threshold
+
+

+ This function estimates the maximum number of trials we can conduct to + ensure that k successes or fewer are observed, with a risk alpha + that more than k occur. +

+
+

+
+
k
+

+ The number of success observed. +

+
p
+

+ The probability of success for each trial. +

+
alpha
+

+ The maximum acceptable probability that more than k events will be + observed. +

+
+
+

+ For example: +

+
+binomial_distribution<RealType>::find_maximum_number_of_trials(0, 1e-6, 0.05);
+
+

+ Returns the largest number of trials we can conduct and still be 95% + certain of not observing any events that occur with one in a million + frequency. This is typically used in failure analysis. +

+

+ See + Worked Example. +

+
+ + 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 for the random variable k is 0 <= k <= N, otherwise a domain_error + is returned. +

+

+ It's worth taking a moment to define what these accessors actually mean + in the context of this distribution: +

+
+

Table 9. Meaning of the non-member accessors

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

+ Function +

+
+

+ Meaning +

+
+

+ Probability Density Function +

+
+

+ The probability of obtaining exactly k successes + from n trials with success fraction p. For example: +

+

+ pdf(binomial(n, + p), + k) +

+
+

+ Cumulative Distribution Function +

+
+

+ The probability of obtaining k successes + or fewer from n trials with success fraction p. For + example: +

+

+ cdf(binomial(n, + p), + k) +

+
+

+ Complement of the Cumulative Distribution + Function +

+
+

+ The probability of obtaining more than k + successes from n trials with success fraction p. For + example: +

+

+ cdf(complement(binomial(n, + p), + k)) +

+
+

+ Quantile +

+
+

+ The greatest number of successes + that may be observed from n trials with success fraction p, at + probability P. Note that the value returned is a real-number, and + not an integer. Depending on the use case you may want to take + either the floor or ceiling of the result. For example: +

+

+ quantile(binomial(n, + p), + P) +

+
+

+ Quantile from the complement + of the probability +

+
+

+ The smallest number of successes + that may be observed from n trials with success fraction p, at + probability P. Note that the value returned is a real-number, and + not an integer. Depending on the use case you may want to take + either the floor or ceiling of the result. For example: +

+

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

+
+
+
+ + Examples +
+

+ Various worked + examples are available illustrating the use of the binomial distribution. +

+
+ + Accuracy +
+

+ This distribution is implemented using the incomplete beta functions + ibeta + and ibetac, + please refer to these functions for information on accuracy. +

+
+ + Implementation +
+

+ In the following table p is the probability that + one trial will be successful (the success fraction), n + is the number of trials, k is the number of successes, + p is the probability and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Implementation is in terms of ibeta_derivative: + if nCk is the binomial coefficient of a and b, then we have: +

+

+ +

+

+ Which can be evaluated as ibeta_derivative(k+1, n-k+1, p) / + (n+1) +

+

+ The function ibeta_derivative + is used here, since it has already been optimised for the lowest + possible error - indeed this is really just a thin wrapper around + part of the internals of the incomplete beta function. +

+

+ There are also various special cases: refer to the code for details. +

+
+

+ cdf +

+
+

+ Using the relation: +

+

+ +

+
+p = I[sub 1-p](n - k, k + 1)
+  = 1 - I[sub p](k + 1, n - k)
+  = ibetac(k + 1, n - k, p)
+

+

+

+ There are also various special cases: refer to the code for details. +

+
+

+ cdf complement +

+
+

+ Using the relation: q = ibeta(k + + 1, n - k, p) +

+

+ There are also various special cases: refer to the code for details. +

+
+

+ quantile +

+
+

+ Since the cdf is non-linear in variate k + none of the inverse incomplete beta functions can be used here. + Instead the quantile is found numerically using a derivative + free method (TOMS + Algorithm 748). +

+
+

+ quantile from the complement +

+
+

+ Found numerically as above. +

+
+

+ mean +

+
+

+ p * + n +

+
+

+ variance +

+
+

+ p * + n * + (1-p) +

+
+

+ mode +

+
+

+ floor(p * + (n + + 1)) +

+
+

+ skewness +

+
+

+ (1 + - 2 + * p) / + sqrt(n * + p * + (1 + - p)) +

+
+

+ kurtosis +

+
+

+ 3 - + (6 + / n) + + (1 + / (n * + p * + (1 + - p))) +

+
+

+ kurtosis excess +

+
+

+ (1 + - 6 + * p + * q) / + (n + * p + * q) +

+
+

+ parameter estimation +

+
+

+ The member functions find_upper_bound_on_p + find_lower_bound_on_p + and find_number_of_trials + are implemented in terms of the inverse incomplete beta functions + ibetac_inv, + ibeta_inv, + and ibetac_invb + respectively +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html new file mode 100644 index 000000000..ee9dc03db --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/cauchy_dist.html @@ -0,0 +1,311 @@ + + + +Cauchy-Lorentz Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class cauchy_distribution;
+
+typedef cauchy_distribution<> cauchy;
+
+template <class RealType, class Policy>
+class cauchy_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+
+   cauchy_distribution(RealType location = 0, RealType scale = 1);
+   
+   RealType location()const;
+   RealType scale()const;
+};
+
+

+ The Cauchy-Lorentz + distribution is named after Augustin Cauchy and Hendrik Lorentz. + It is a continuous + probability distribution with probability + distribution function PDF given by: +

+

+ +

+

+ The location parameter x0 is the location of the peak of the distribution + (the mode of the distribution), while the scale parameter γ specifies half + the width of the PDF at half the maximum height. If the location is zero, + and the scale 1, then the result is a standard Cauchy distribution. +

+

+ The distribution is important in physics as it is the solution to the + differential equation describing forced resonance, while in spectroscopy + it is the description of the line shape of spectral lines. +

+

+ The following graph shows how the distributions moves as the location + parameter changes: +

+

+ cauchy1 +

+

+ While the following graph shows how the shape (scale) parameter alters + the distribution: +

+

+ cauchy2 +

+
+ + Member + Functions +
+
+cauchy_distribution(RealType location = 0, RealType scale = 1);
+
+

+ Constructs a Cauchy distribution, with location parameter location + and scale parameter scale. When these parameters + take their default values (location = 0, scale = 1) then the result is + a Standard Cauchy Distribution. +

+

+ Requires scale > 0, otherwise calls domain_error. +

+
+RealType location()const;
+
+

+ Returns the location parameter of the distribution. +

+
+RealType scale()const;
+
+

+ Returns the scale parameter of the 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. +

+

+ Note however that the Cauchy distribution does not have a mean, standard + deviation, etc. See mathematically + undefined function +

+

+ to control whether these should fail to compile with a BOOST_STATIC_ASSERTION_FAILURE, + which is the default. +

+

+ Alternately, the functions mean, + standard deviation, variance, + skewness, kurtosis + and kurtosis_excess + will all return a domain_error if + called. +

+

+ The domain of the random variable is [-[max_value], +[min_value]]. +

+
+ + Accuracy +
+

+ The Cauchy distribution is implemented in terms of the standard library + tan and atan functions, and as such should + have very low error rates. +

+
+ + Implementation +
+

+ In the following table x0 is the location 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 = 1 / (π * γ * (1 + ((x - x0 ) / γ)2) +

+
+

+ cdf and its complement +

+
+

+ The cdf is normally given by: +

+

+ p = 0.5 + atan(x)/π +

+

+ But that suffers from cancellation error as x -> -∞. So recall + that for x < + 0: +

+

+ atan(x) = -π/2 - atan(1/x) +

+

+ Substituting into the above we get: +

+

+ p = -atan(1/x) ; x < 0 +

+

+ So the procedure is to calculate the cdf for -fabs(x) using the + above formula. Note that to factor in the location and scale + parameters you must substitute (x - x0 ) / γ for x in the above. +

+

+ This procedure yields the smaller of p and + q, so the result may need subtracting from + 1 depending on whether we want the complement or not, and whether + x is less than x0 or not. +

+
+

+ quantile +

+
+

+ The same procedure is used irrespective of whether we're starting + from the probability or it's complement. First the argument + p is reduced to the range [-0.5, 0.5], then + the relation +

+

+ x = x0 ± γ / tan(π * p) +

+

+ is used to obtain the result. Whether we're adding or subtracting + from x0 is determined by whether we're starting from the complement + or not. +

+
+

+ mode +

+
+

+ The location parameter. +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html new file mode 100644 index 000000000..8de41d8c9 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/chi_squared_dist.html @@ -0,0 +1,408 @@ + + + +Chi Squared Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class chi_squared_distribution;
+
+typedef chi_squared_distribution<> chi_squared;
+
+template <class RealType, class Policy>
+class chi_squared_distribution
+{
+public:
+   typedef RealType  value_type;
+   typedef Policy    policy_type;
+
+   // Constructor:
+   chi_squared_distribution(RealType i);
+
+   // Accessor to parameter:
+   RealType degrees_of_freedom()const;
+
+   // Parameter estimation:
+   static RealType find_degrees_of_freedom(
+      RealType difference_from_mean,
+      RealType alpha,
+      RealType beta,
+      RealType sd,
+      RealType hint = 100);
+};
+
+}} // namespaces
+
+

+ The Chi-Squared distribution is one of the most widely used distributions + in statistical tests. If χi are ν +independent, normally distributed random + variables with means μi and variances σi2, then the random variable: +

+

+ +

+

+ is distributed according to the Chi-Squared distribution. +

+

+ The Chi-Squared distribution is a special case of the gamma distribution + and has a single parameter ν that specifies the number of degrees of freedom. + The following graph illustrates how the distribution changes for different + values of ν: +

+

+ chi_square +

+
+ + Member + Functions +
+
+chi_squared_distribution(RealType v);
+
+

+ Constructs a Chi-Squared distribution with v degrees + of freedom. +

+

+ Requires v > 0, otherwise calls domain_error. +

+
+RealType degrees_of_freedom()const;
+
+

+ Returns the parameter v from which this object was + constructed. +

+
+static RealType find_degrees_of_freedom(
+   RealType difference_from_variance,
+   RealType alpha,
+   RealType beta,
+   RealType variance,
+   RealType hint = 100);
+
+

+ Estimates the sample size required to detect a difference from a nominal + variance in a Chi-Squared test for equal standard deviations. +

+
+

+
+
difference_from_variance
+

+ The difference from the assumed nominal variance that is to be detected: + Note that the sign of this value is critical, see below. +

+
alpha
+

+ The maximum acceptable risk of rejecting the null hypothesis when + it is in fact true. +

+
beta
+

+ The maximum acceptable risk of falsely failing to reject the null + hypothesis. +

+
variance
+

+ The nominal variance being tested against. +

+
hint
+

+ An optional hint on where to start looking for a result: the current + sample size would be a good choice. +

+
+
+

+ Note that this calculation works with variances + and not standard deviations. +

+

+ The sign of the parameter difference_from_variance + is important: the Chi Squared distribution is asymmetric, and the caller + must decide in advance whether they are testing for a variance greater + than a nominal value (positive difference_from_variance) + or testing for a variance less than a nominal value (negative difference_from_variance). + If the latter, then obviously it is a requirement that variance + + difference_from_variance > + 0, since no sample can have a negative + variance! +

+

+ This procedure uses the method in Diamond, W. J. (1989). Practical Experiment + Designs, Van-Nostrand Reinhold, New York. +

+

+ See also section on Sample sizes required in the + NIST Engineering Statistics Handbook, Section 7.2.3.2. +

+
+ + 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 variable is [0, +∞]. +

+
+ + Examples +
+

+ Various worked examples + are available illustrating the use of the Chi Squared Distribution. +

+
+ + Accuracy +
+

+ The Chi-Squared distribution is implemented in terms of the incomplete + gamma functions: please refer to the accuracy data for those functions. +

+
+ + Implementation +
+

+ In the following table v is the number of degrees + of freedom of the distribution, x is the random + variate, p is the probability, and q = + 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = gamma_p_derivative(v + / 2, x / 2) / 2 +

+
+

+ cdf +

+
+

+ Using the relation: p = gamma_p(v + / 2, x / 2) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = gamma_q(v + / 2, x / 2) +

+
+

+ quantile +

+
+

+ Using the relation: x = 2 * gamma_p_inv(v + / 2, p) +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = 2 * gamma_q_inv(v + / 2, p) +

+
+

+ mean +

+
+

+ v +

+
+

+ variance +

+
+

+ 2v +

+
+

+ mode +

+
+

+ v - 2 (if v >= 2) +

+
+

+ skewness +

+
+

+ 2 * sqrt(2 / v) == sqrt(8 / v) +

+
+

+ kurtosis +

+
+

+ 3 + 12 / v +

+
+

+ kurtosis excess +

+
+

+ 12 / v +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html new file mode 100644 index 000000000..a38019ee1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/exp_dist.html @@ -0,0 +1,319 @@ + + + +Exponential Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class exponential_distribution;
+
+typedef exponential_distribution<> exponential;
+
+template <class RealType, class Policy>
+class exponential_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+
+   exponential_distribution(RealType lambda = 1);
+
+   RealType lambda()const;
+};
+
+

+ The exponential + distribution is a continuous + probability distribution with PDF: +

+

+ +

+

+ It is often used to model the time between independent events that happen + at a constant average rate. +

+

+ The following graph shows how the distribution changes for different + values of the rate parameter lambda: +

+

+ exponential_dist +

+
+ + Member + Functions +
+
+exponential_distribution(RealType lambda = 1);
+
+

+ Constructs an Exponential + distribution with parameter lambda. Lambda + is defined as the reciprocal of the scale parameter. +

+

+ Requires lambda > 0, otherwise calls domain_error. +

+
+RealType lambda()const;
+
+

+ Accessor function returns the lambda parameter of the 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 variable is [0, +∞]. +

+
+ + Accuracy +
+

+ The exponential distribution is implemented in terms of the standard + library functions exp, + log, log1p + and expm1 and as such + should have very low error rates. +

+
+ + Implementation +
+

+ In the following table λ is the parameter lambda of the distribution, + x is the random variate, p + is the probability and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = λ * exp(-λ * x) +

+
+

+ cdf +

+
+

+ Using the relation: p = 1 - exp(-x * λ) = -expm1(-x * λ) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = exp(-x * λ) +

+
+

+ quantile +

+
+

+ Using the relation: x = -log(1-p) / λ = -log1p(-p) / λ +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = -log(q) / λ +

+
+

+ mean +

+
+

+ 1/λ +

+
+

+ standard deviation +

+
+

+ 1/λ +

+
+

+ mode +

+
+

+ 0 +

+
+

+ skewness +

+
+

+ 2 +

+
+

+ kurtosis +

+
+

+ 9 +

+
+

+ kurtosis excess +

+
+

+ 6 +

+
+
+ + references +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html new file mode 100644 index 000000000..6768671b8 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/extreme_dist.html @@ -0,0 +1,334 @@ + + + +Extreme Value Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class extreme_value_distribution;
+
+typedef extreme_value_distribution<> extreme_value;
+
+template <class RealType, class Policy>
+class extreme_value_distribution
+{
+public:
+   typedef RealType value_type;
+
+   extreme_value_distribution(RealType location = 0, RealType scale = 1);
+
+   RealType scale()const;
+   RealType location()const;
+};
+
+

+ There are various extreme + value distributions : this implementation represents the maximum + case, and is variously known as a Fisher-Tippett distribution, a log-Weibull + distribution or a Gumbel distribution. +

+

+ Extreme value theory is important for assessing risk for highly unusual + events, such as 100-year floods. +

+

+ More information can be found on the NIST, + Wikipedia, + Mathworld, + and Extreme + value theory websites. +

+

+ The distribution has a PDF given by: +

+

+ f(x) = (1/scale) e-(x-location)/scale e-e-(x-location)/scale +

+

+ Which in the standard case (scale = 1, location = 0) reduces to: +

+

+ f(x) = e-xe-e-x +

+

+ The following graph illustrates how the PDF varies with the location + parameter: +

+

+ extreme_val_dist +

+

+ And this graph illustrates how the PDF varies with the shape parameter: +

+

+ extreme_val_dist2 +

+
+ + Member + Functions +
+
+extreme_value_distribution(RealType location = 0, RealType scale = 1);
+
+

+ Constructs an Extreme Value distribution with the specified location + and scale parameters. +

+

+ Requires scale > + 0, otherwise calls domain_error. +

+
+RealType location()const;
+
+

+ Returns the location parameter of the distribution. +

+
+RealType scale()const;
+
+

+ Returns the scale parameter of the 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 parameter is [-∞, +∞]. +

+
+ + Accuracy +
+

+ The extreme value distribution is implemented in terms of the standard + library exp and log functions and as such should have + very low error rates. +

+
+ + Implementation +
+

+ In the following table: a is the location parameter, + b is the scale parameter, x + is the random variate, p is the probability and + q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = exp((a-x)/b) * exp(-exp((a-x)/b)) / + b +

+
+

+ cdf +

+
+

+ Using the relation: p = exp(-exp((a-x)/b)) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = -expm1(-exp((a-x)/b)) +

+
+

+ quantile +

+
+

+ Using the relation: a - log(-log(p)) * b +

+
+

+ quantile from the complement +

+
+

+ Using the relation: a - log(-log1p(-q)) * b +

+
+

+ mean +

+
+

+ a + Euler-Mascheroni-constant + * b +

+
+

+ standard deviation +

+
+

+ pi * b / sqrt(6) +

+
+

+ mode +

+
+

+ The same as the location parameter a. +

+
+

+ skewness +

+
+

+ 12 * sqrt(6) * zeta(3) / pi3 +

+
+

+ kurtosis +

+
+

+ 27 / 5 +

+
+

+ kurtosis excess +

+
+

+ kurtosis - 3 or 12 / 5 +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html new file mode 100644 index 000000000..9e012cc72 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/f_dist.html @@ -0,0 +1,443 @@ + + + +F Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class fisher_f_distribution;
+
+typedef fisher_f_distribution<> fisher_f;
+
+template <class RealType, class Policy>
+class fisher_f_distribution
+{
+public:
+   typedef RealType value_type;
+   
+   // Construct:
+   fisher_f_distribution(const RealType& i, const RealType& j);
+   
+   // Accessors:
+   RealType degrees_of_freedom1()const;
+   RealType degrees_of_freedom2()const;
+};
+
+}} //namespaces
+
+

+ The F distribution is a continuous distribution that arises when testing + whether two samples have the same variance. If χ2m and χ2n are independent + variates each distributed as Chi-Squared with m + and n degrees of freedom, then the test statistic: +

+

+ Fn,m = (χ2n / n) / (χ2m / m) +

+

+ Is distributed over the range [0, ∞] with an F distribution, and has the + PDF: +

+

+ +

+

+ The following graph illustrates how the PDF varies depending on the two + degrees of freedom parameters. +

+

+ fisher_f +

+
+ + Member + Functions +
+
+fisher_f_distribution(const RealType& df1, const RealType& df2);
+
+

+ Constructs an F-distribution with numerator degrees of freedom df1 + and denominator degrees of freedom df2. +

+

+ Requires that df1 and df2 are + both greater than zero, otherwise domain_error + is called. +

+
+RealType degrees_of_freedom1()const;
+
+

+ Returns the numerator degrees of freedom parameter of the distribution. +

+
+RealType degrees_of_freedom2()const;
+
+

+ Returns the denominator degrees of freedom parameter of the 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 variable is [0, +∞]. +

+
+ + Examples +
+

+ Various worked examples + are available illustrating the use of the F Distribution. +

+
+ + Accuracy +
+

+ The normal distribution is implemented in terms of the incomplete + beta function and it's inverses, + refer to those functions for accuracy data. +

+
+ + Implementation +
+

+ In the following table v1 and v2 + are the first and second degrees of freedom parameters of the distribution, + x is the random variate, p + is the probability, and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ The usual form of the PDF is given by: +

+

+ +

+

+ However, that form is hard to evaluate directly without incurring + problems with either accuracy or numeric overflow. +

+

+ Direct differentiation of the CDF expressed in terms of the incomplete + beta function +

+

+ led to the following two formulas: +

+

+ fv1,v2(x) = y * ibeta_derivative(v2 + / 2, v1 / 2, v2 / (v2 + v1 * x)) +

+

+ with y = (v2 * v1) / ((v2 + v1 * x) * (v2 + v1 * x)) +

+

+ and +

+

+ fv1,v2(x) = y * ibeta_derivative(v1 + / 2, v2 / 2, v1 * x / (v2 + v1 * x)) +

+

+ with y = (z * v1 - x * v1 * v1) / z2 +

+

+ and z = v2 + v1 * x +

+

+ The first of these is used for v1 * x > v2, otherwise the + second is used. +

+

+ The aim is to keep the x argument to ibeta_derivative + away from 1 to avoid rounding error. +

+
+

+ cdf +

+
+

+ Using the relations: +

+

+ p = ibeta(v1 + / 2, v2 / 2, v1 * x / (v2 + v1 * x)) +

+

+ and +

+

+ p = ibetac(v2 + / 2, v1 / 2, v2 / (v2 + v1 * x)) +

+

+ The first is used for v1 * x > v2, otherwise the second is + used. +

+

+ The aim is to keep the x argument to ibeta + well away from 1 to avoid rounding error. +

+
+

+ cdf complement +

+
+

+ Using the relations: +

+

+ p = ibetac(v1 + / 2, v2 / 2, v1 * x / (v2 + v1 * x)) +

+

+ and +

+

+ p = ibeta(v2 + / 2, v1 / 2, v2 / (v2 + v1 * x)) +

+

+ The first is used for v1 * x < v2, otherwise the second is + used. +

+

+ The aim is to keep the x argument to ibeta + well away from 1 to avoid rounding error. +

+
+

+ quantile +

+
+

+ Using the relation: +

+

+ x = v2 * a / (v1 * b) +

+

+ where: +

+

+ a = ibeta_inv(v1 + / 2, v2 / 2, p) +

+

+ and +

+

+ b = 1 - a +

+

+ Quantities a and b + are both computed by ibeta_inv + without the subtraction implied above. +

+
+

+ quantile +

+

+ from the complement +

+
+

+ Using the relation: +

+

+ x = v2 * a / (v1 * b) +

+

+ where +

+

+ a = ibetac_inv(v1 + / 2, v2 / 2, p) +

+

+ and +

+

+ b = 1 - a +

+

+ Quantities a and b + are both computed by ibetac_inv + without the subtraction implied above. +

+
+

+ mean +

+
+

+ v2 / (v2 - 2) +

+
+

+ variance +

+
+

+ 2 * v22 * (v1 + v2 - 2) / (v1 * (v2 - 2) * (v2 - 2) * (v2 - 4)) +

+
+

+ mode +

+
+

+ v2 * (v1 - 2) / (v1 * (v2 + 2)) +

+
+

+ skewness +

+
+

+ 2 * (v2 + 2 * v1 - 2) * sqrt((2 * v2 - 8) / (v1 * (v2 + v1 - + 2))) / (v2 - 6) +

+
+

+ kurtosis and kurtosis excess +

+
+

+ Refer to, Weisstein, + Eric W. "F-Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html new file mode 100644 index 000000000..38d3e699f --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/gamma_dist.html @@ -0,0 +1,385 @@ + + + +Gamma (and Erlang) Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

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

+ The gamma distribution is a continuous probability distribution. When + the shape parameter is an integer then it is known as the Erlang Distribution. + It is also closely related to the Poisson and Chi Squared Distributions. +

+

+ When the shape parameter has an integer value, the distribution is the + Erlang + distribution. Since this can be produced by ensuring that the + shape parameter has an integer value > 0, the Erlang distribution + is not separately implemented. +

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

+ To avoid potential confusion with the gamma functions, this distribution + does not provide the typedef: +

+

+ +

+
+typedef gamma_distibution<double> gamma;
+

+

+

+ Instead if you want a double precision gamma distribution you can use +

+

+ +

+
+boost::gamma_distribution<>
+

+

+
+

+ 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: +

+

+ +

+

+ In this form the inverse scale parameter is called a rate parameter. +

+

+ Both forms are in common usage: this library uses the first definition + throughout. Therefore to construct a Gamma Distribution from a rate + parameter, you should pass the reciprocal of the rate as the + scale parameter. +

+

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

+

+ gamma_dist1 +

+

+ gamma_dist2 +

+

+ The Erlang Distribution is the same + as the Gamma, but with the shape parameter an integer. It is often expressed + using a rate rather than a scale + as the second parameter (remember that the rate is the reciprocal of + the scale). +

+

+ Internally the functions used to implement the Gamma Distribution are + already optimised for small-integer arguments, so in general there should + be no great loss of performance from using a Gamma Distribution rather + than a dedicated Erlang Distribution. +

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

+ Constructs a gamma distribution with shape shape + and scale 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 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 variable is [0,+∞]. +

+
+ + Accuracy +
+

+ The lognormal 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. +

+
+ + Implementation +
+

+ In the following table k is the shape parameter + of the distribution, θ is it's 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(k, + x / θ) / θ +

+
+

+ cdf +

+
+

+ Using the relation: p = gamma_p(k, + x / θ) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = gamma_q(k, + x / θ) +

+
+

+ quantile +

+
+

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

+
+

+ quantile from the complement +

+
+

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

+
+

+ mean +

+
+

+ kθ +

+
+

+ variance +

+
+

+ kθ2 +

+
+

+ mode +

+
+

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

+
+

+ skewness +

+
+

+ 2 / sqrt(k) +

+
+

+ kurtosis +

+
+

+ 3 + 6 / k +

+
+

+ kurtosis excess +

+
+

+ 6 / k +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html new file mode 100644 index 000000000..66921d43b --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/lognormal_dist.html @@ -0,0 +1,338 @@ + + + +Log Normal Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class lognormal_distribution;
+
+typedef lognormal_distribution<> lognormal;
+
+template <class RealType, class Policy>
+class lognormal_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+   // Construct:
+   lognormal_distribution(RealType location = 0, RealType scale = 1);
+   // Accessors:
+   RealType location()const;
+   RealType scale()const;
+};
+
+}} // namespaces
+
+

+ The lognormal distribution is the distribution that arises when the logarithm + of the random variable is normally distributed. A lognormal distribution + results when the variable is the product of a large number of independent, + identically-distributed variables. +

+

+ For location and scale parameters m and s + it is defined by the probability density function: +

+

+ +

+

+ The location and scale parameters are equivalent to the mean and standard + deviation of the logarithm of the random variable. +

+

+ The following graph illustrates the effect of the location parameter + on the PDF, note that the range of the random variable remains [0,+∞] + irrespective of the value of the location parameter: +

+

+ lognormal1 +

+

+ The next graph illustrates the effect of the scale parameter on the PDF: +

+

+ lognormal2 +

+
+ + Member + Functions +
+
+lognormal_distribution(RealType location = 0, RealType scale = 1);
+
+

+ Constructs a lognormal distribution with location location + and scale scale. +

+

+ The location parameter is the same as the mean of the logarithm of the + random variate. +

+

+ The scale parameter is the same as the standard deviation of the logarithm + of the random variate. +

+

+ Requires that the scale parameter is greater than zero, otherwise calls + domain_error. +

+
+RealType location()const;
+
+

+ Returns the location 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 variable is [0,+∞]. +

+
+ + Accuracy +
+

+ The lognormal distribution is implemented in terms of the standard library + log and exp functions, plus the error + function, and as such should have very low error rates. +

+
+ + Implementation +
+

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

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = e-(ln(x) - m)2 / 2s2 / (x * s * sqrt(2pi)) +

+
+

+ cdf +

+
+

+ Using the relation: p = cdf(normal_distribtion<RealType>(m, + s), log(x)) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = cdf(complement(normal_distribtion<RealType>(m, + s), log(x))) +

+
+

+ quantile +

+
+

+ Using the relation: x = exp(quantile(normal_distribtion<RealType>(m, + s), p)) +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = exp(quantile(complement(normal_distribtion<RealType>(m, + s), q))) +

+
+

+ mean +

+
+

+ em + s2 / 2 +

+
+

+ variance +

+
+

+ (es2 - 1) * e2m + s2 +

+
+

+ mode +

+
+

+ em + s2 +

+
+

+ skewness +

+
+

+ sqrt(es2 - 1) * (2 + es2 ) +

+
+

+ kurtosis +

+
+

+ e4s2 + 2e3s2 + 3e2s2 - 3 +

+
+

+ kurtosis excess +

+
+

+ e4s2 + 2e3s2 + 3e2s2 - 6 +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html new file mode 100644 index 000000000..579dccac0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/negative_binomial_dist.html @@ -0,0 +1,927 @@ + + + +Negative Binomial Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class negative_binomial_distribution;
+
+typedef negative_binomial_distribution<> negative_binomial;
+
+template <class RealType, class Policy>
+class negative_binomial_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+   // Constructor from successes and success_fraction:
+   negative_binomial_distribution(RealType r, RealType p);
+   
+   // Parameter accessors:
+   RealType success_fraction() const;
+   RealType successes() const;
+   
+   // Bounds on success fraction:
+   static RealType find_lower_bound_on_p(
+      RealType trials, 
+      RealType successes,
+      RealType probability); // alpha
+   static RealType find_upper_bound_on_p(
+      RealType trials, 
+      RealType successes,
+      RealType probability); // alpha
+      
+   // Estimate min/max number of trials:
+   static RealType find_minimum_number_of_trials(
+      RealType k,     // Number of failures.
+      RealType p,     // Success fraction.
+      RealType probability); // Probability threshold alpha.
+   static RealType find_maximum_number_of_trials(
+      RealType k,     // Number of failures.
+      RealType p,     // Success fraction.
+      RealType probability); // Probability threshold alpha.
+};
+
+}} // namespaces
+
+

+ The class type negative_binomial_distribution + represents a negative_binomial + distribution: it is used when there are exactly two mutually + exclusive outcomes of a Bernoulli + trial: these outcomes are labelled "success" and "failure". +

+

+ For k + r Bernoulli trials each with success fraction p, the negative_binomial + distribution gives the probability of observing k failures and r successes + with success on the last trial. The negative_binomial distribution assumes + that success_fraction p is fixed for all (k + r) trials. +

+
+ + + + + +
[Note]Note

+ The random variable for the negative binomial distribution is the number + of trials, (the number of successes is a fixed property of the distribution) + whereas for the binomial, the random variable is the number of successes, + for a fixed number of trials. +

+

+ It has the PDF: +

+

+ +

+

+ The following graph illustrate how the PDF varies as the success fraction + p changes: +

+

+ neg_binomial_pdf1 +

+

+ Alternatively, this graph shows how the shape of the PDF varies as the + number of successes changes: +

+

+ neg_binomial_pdf2 +

+
+ + Related + Distributions +
+

+ The name negative binomial distribution is reserved by some to the case + where the successes parameter r is an integer. This integer version is + also called the Pascal + distribution. +

+

+ This implementation uses real numbers for the computation throughout + (because it uses the real-valued incomplete + beta function family of functions). This real-valued version is also + called the Polya Distribution. +

+

+ The Poisson distribution is a generalization of the Pascal distribution, + where the success parameter r is an integer: to obtain the Pascal distribution + you must ensure that an integer value is provided for r, and take integer + values (floor or ceiling) from functions that return a number of successes. +

+

+ For large values of r (successes), the negative binomial distribution + converges to the Poisson distribution. +

+

+ The geometric distribution is a special case where the successes parameter + r = 1, so only a first and only success is required. geometric(p) = negative_binomial(1, + p). +

+

+ The Poisson distribution is a special case for large successes +

+

+ poisson(λ) = lim r → ∞ negative_binomial(r, r / (λ + r))) +

+

+

+
+ + + + + +
[Caution]Caution
+

+ The Negative Binomial distribution is a discrete distribution: internally + functions like the cdf + and pdf are treated + "as if" they are continuous functions, but in reality the + results returned from these functions only have meaning if an integer + value is provided for the random variate argument. +

+

+ The quantile function will by default return an integer result that + has been rounded outwards. That is to say lower + quantiles (where the probability is less than 0.5) are rounded downward, + and upper quantiles (where the probability is greater than 0.5) are + rounded upwards. This behaviour ensures that if an X% quantile is + requested, then at least the requested coverage + will be present in the central region, and no more than + the requested coverage will be present in the tails. +

+

+ This behaviour can be changed so that the quantile functions are + rounded differently, or even return a real-valued result using Policies. It is + strongly recommended that you read the tutorial Understanding + Quantiles of Discrete Distributions before using the quantile + function on the Negative Binomial distribution. The reference + docs describe how to change the rounding policy for these + distributions. +

+
+

+

+
+ + Member + Functions +
+
+ + Construct +
+
+negative_binomial_distribution(RealType r, RealType p);
+
+

+ Constructor: r is the total number of successes, + p is the probability of success of a single trial. +

+

+ Requires: r > + 0 and 0 + <= p + <= 1. +

+
+ + Accessors +
+
+RealType success_fraction() const; // successes / trials (0 <= p <= 1)
+
+

+ Returns the parameter p from which this distribution + was constructed. +

+
+RealType successes() const; // required successes (r > 0)
+
+

+ Returns the parameter r from which this distribution + was constructed. +

+
+ + Lower + Bound on Parameter p +
+
+static RealType find_lower_bound_on_p(
+  RealType failures, 
+  RealType successes,
+  RealType probability) // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.
+
+

+ Returns a lower bound on the success + fraction: +

+
+

+
+
failures
+

+ The total number of failures before the r th success. +

+
successes
+

+ The number of successes required. +

+
alpha
+

+ The largest acceptable probability that the true value of the success + fraction is less than the value + returned. +

+
+
+

+ For example, if you observe k failures and r + successes from n = k + r trials the best estimate + for the success fraction is simply r/n, but if you + want to be 95% sure that the true value is greater + than some value, pmin, then: +

+
+pmin = negative_binomial_distribution<RealType>::find_lower_bound_on_p(
+                    failures, successes, 0.05);
+
+

+ See + negative binomial confidence interval example. +

+

+ This function uses the Clopper-Pearson method of computing the lower + bound on the success fraction, whilst many texts refer to this method + as giving an "exact" result in practice it produces an interval + that guarantees at least the coverage required, + and may produce pessimistic estimates for some combinations of failures + and successes. See: +

+

+ Yong + Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some + Discrete Distributions. Computational statistics and data analysis, 2005, + vol. 48, no3, 605-621. +

+
+ + Upper + Bound on Parameter p +
+
+static RealType find_upper_bound_on_p(
+   RealType trials, 
+   RealType successes,
+   RealType alpha); // (0 <= alpha <= 1), 0.05 equivalent to 95% confidence.
+
+

+ Returns an upper bound on the success + fraction: +

+
+

+
+
trials
+

+ The total number of trials conducted. +

+
successes
+

+ The number of successes that occurred. +

+
alpha
+

+ The largest acceptable probability that the true value of the success + fraction is greater than the value + returned. +

+
+
+

+ For example, if you observe k successes from n + trials the best estimate for the success fraction is simply k/n, + but if you want to be 95% sure that the true value is less + than some value, pmax, then: +

+
+pmax = negative_binomial_distribution<RealType>::find_upper_bound_on_p(
+                    r, k, 0.05);
+
+

+ See + negative binomial confidence interval example. +

+

+ This function uses the Clopper-Pearson method of computing the lower + bound on the success fraction, whilst many texts refer to this method + as giving an "exact" result in practice it produces an interval + that guarantees at least the coverage required, + and may produce pessimistic estimates for some combinations of failures + and successes. See: +

+

+ Yong + Cai and K. Krishnamoorthy, A Simple Improved Inferential Method for Some + Discrete Distributions. Computational statistics and data analysis, 2005, + vol. 48, no3, 605-621. +

+
+ + Estimating + Number of Trials to Ensure at Least a Certain Number of Failures +
+
+static RealType find_minimum_number_of_trials(
+   RealType k,     // number of failures.
+   RealType p,     // success fraction.
+   RealType alpha); // probability threshold (0.05 equivalent to 95%).
+
+

+ This functions estimates the number of trials required to achieve a certain + probability that more than k failures will be observed. +

+
+

+
+
k
+

+ The target number of failures to be observed. +

+
p
+

+ The probability of success for each trial. +

+
alpha
+

+ The maximum acceptable risk that only k failures or fewer will be + observed. +

+
+
+

+ For example: +

+
+negative_binomial_distribution<RealType>::find_minimum_number_of_trials(10, 0.5, 0.05);
+
+

+ Returns the smallest number of trials we must conduct to be 95% sure + of seeing 10 failures that occur with frequency one half. +

+

+ Worked + Example. +

+

+ This function uses numeric inversion of the negative binomial distribution + to obtain the result: another interpretation of the result, is that it + finds the number of trials (success+failures) that will lead to an alpha + probability of observing k failures or fewer. +

+
+ + Estimating + Number of Trials to Ensure a Maximum Number of Failures or Less +
+
+static RealType find_maximum_number_of_trials(
+   RealType k,     // number of failures.
+   RealType p,     // success fraction.
+   RealType alpha); // probability threshold (0.05 equivalent to 95%).
+
+

+ This functions estimates the maximum number of trials we can conduct + and achieve a certain probability that k failures + or fewer will be observed. +

+
+

+
+
k
+

+ The maximum number of failures to be observed. +

+
p
+

+ The probability of success for each trial. +

+
alpha
+

+ The maximum acceptable risk that more than k + failures will be observed. +

+
+
+

+ For example: +

+
+negative_binomial_distribution<RealType>::find_maximum_number_of_trials(0, 1.0-1.0/1000000, 0.05);
+
+

+ Returns the largest number of trials we can conduct and still be 95% + sure of seeing no failures that occur with frequency one in one million. +

+

+ This function uses numeric inversion of the negative binomial distribution + to obtain the result: another interpretation of the result, is that it + finds the number of trials (success+failures) that will lead to an alpha + probability of observing more than k failures. +

+
+ + 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. +

+

+ However it's worth taking a moment to define what these actually mean + in the context of this distribution: +

+
+

Table 10. Meaning of the non-member accessors.

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

+ Function +

+
+

+ Meaning +

+
+

+ Probability Density Function +

+
+

+ The probability of obtaining exactly k failures + from k+r trials with success fraction p. For example: +

+

+ +

+
+pdf(negative_binomial(r, p), k)
+

+

+
+

+ Cumulative Distribution Function +

+
+

+ The probability of obtaining k failures or + fewer from k+r trials with success fraction p and success + on the last trial. For example: +

+

+ +

+
+cdf(negative_binomial(r, p), k)
+

+

+
+

+ Complement of the Cumulative Distribution + Function +

+
+

+ The probability of obtaining more than k + failures from k+r trials with success fraction p and + success on the last trial. For example: +

+

+ +

+
+cdf(complement(negative_binomial(r, p), k))
+

+

+
+

+ Quantile +

+
+

+ The greatest number of failures + k expected to be observed from k+r trials with success fraction + p, at probability P. Note that the value returned is a real-number, + and not an integer. Depending on the use case you may want to take + either the floor or ceiling of the real result. For example: +

+

+ +

+
+quantile(negative_binomial(r, p), P)
+

+

+
+

+ Quantile from the complement + of the probability +

+
+

+ The smallest number of failures + k expected to be observed from k+r trials with success fraction + p, at probability P. Note that the value returned is a real-number, + and not an integer. Depending on the use case you may want to take + either the floor or ceiling of the real result. For example: +

+
+quantile(complement(negative_binomial(r, p), P))
+

+

+
+
+
+ + Accuracy +
+

+ This distribution is implemented using the incomplete beta functions + ibeta + and ibetac: + please refer to these functions for information on accuracy. +

+
+ + Implementation +
+

+ In the following table, p is the probability that + any one trial will be successful (the success fraction), r + is the number of successes, k is the number of failures, + p is the probability and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ pdf = exp(lgamma(r + k) - lgamma(r) - lgamma(k+1)) * pow(p, r) + * pow((1-p), k) +

+

+ Implementation is in terms of ibeta_derivative: +

+

+ (p/(r + k)) * ibeta_derivative(r, static_cast<RealType>(k+1), + p) The function ibeta_derivative + is used here, since it has already been optimised for the lowest + possible error - indeed this is really just a thin wrapper around + part of the internals of the incomplete beta function. +

+
+

+ cdf +

+
+

+ Using the relation: +

+

+ cdf = Ip(r, k+1) = ibeta(r, k+1, p) +

+

+ = ibeta(r, static_cast<RealType>(k+1), p) +

+
+

+ cdf complement +

+
+

+ Using the relation: +

+

+ 1 - cdf = Ip(k+1, r) +

+

+ = ibetac(r, static_cast<RealType>(k+1), p) +

+
+

+ quantile +

+
+

+ ibeta_invb(r, p, P) - 1 +

+
+

+ quantile from the complement +

+
+

+ ibetac_invb(r, p, Q) -1) +

+
+

+ mean +

+
+

+ r(1-p)/p +

+
+

+ variance +

+
+

+ r (1-p) + / p + * p +

+
+

+ mode +

+
+

+ floor((r-1) * (1 - p)/p) +

+
+

+ skewness +

+
+

+ (2 + - p) / + sqrt(r * + (1 + - p)) +

+
+

+ kurtosis +

+
+

+ 6 / + r + + (p + * p) / + r * + (1 + - p + ) +

+
+

+ kurtosis excess +

+
+

+ 6 / + r + + (p + * p) / + r * + (1 + - p + ) -3 +

+
+

+ parameter estimation member functions +

+
+

+

+
+

+ find_lower_bound_on_p +

+
+

+ ibeta_inv(successes, failures + 1, alpha) +

+
+

+ find_upper_bound_on_p +

+
+

+ ibetac_inv(successes, failures, alpha) plus see comments in code. +

+
+

+ find_minimum_number_of_trials +

+
+

+ ibeta_inva(k + 1, p, alpha) +

+
+

+ find_maximum_number_of_trials +

+
+

+ ibetac_inva(k + 1, p, alpha) +

+
+

+ Implementation notes: +

+
    +
  • + The real concept type (that deliberately lacks the Lanczos approximation), + was found to take several minutes to evaluate some extreme test values, + so the test has been disabled for this type. +
  • +
  • + Much greater speed, and perhaps greater accuracy, might be achieved + for extreme values by using a normal approximation. This is NOT been + tested or implemented. +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html new file mode 100644 index 000000000..d5a83fc45 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/normal_dist.html @@ -0,0 +1,309 @@ + + + +Normal (Gaussian) Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class normal_distribution;
+
+typedef normal_distribution<> normal;
+
+template <class RealType, class Policy>
+class normal_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+   // Construct:
+   normal_distribution(RealType mean = 0, RealType sd = 1);
+   // Accessors:
+   RealType mean()const; // location.
+   RealType standard_deviation()const; // scale.
+   // Synonyms, provided to allow generic use of find_location and find_scale.
+   RealType location()const;
+   RealType scale()const;
+};
+
+}} // namespaces
+
+

+ The normal distribution is probably the most well known statistical distribution: + it is also known as the Gaussian Distribution. A normal distribution + with mean zero and standard deviation one is known as the Standard + Normal Distribution. +

+

+ Given mean μ and standard deviation σ it has the PDF: +

+

+ +

+

+ The variation the PDF with its parameters is illustrated in the following + graph: +

+

+ normal +

+
+ + Member + Functions +
+
+normal_distribution(RealType mean = 0, RealType sd = 1);
+
+

+ Constructs a normal distribution with mean mean + and standard deviation sd. +

+

+ Requires sd > 0, otherwise domain_error + is called. +

+
+RealType mean()const;
+RealType location()const;   
+
+

+ both return the mean of this distribution. +

+
+RealType standard_deviation()const;
+RealType scale()const;
+
+

+ both return the standard deviation of this distribution. + (Redundant location and scale function are provided to match other similar + distributions, allowing the functions find_location and find_scale to + be used generically). +

+
+ + 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 variable is [-[max_value], +[min_value]]. However, + the pdf of +∞ and -∞ = 0 is also supported, and cdf at -∞ = 0, cdf at +∞ = 1, + and complement cdf -∞ = 1 and +∞ = 0, if RealType permits. +

+
+ + Accuracy +
+

+ The normal distribution is implemented in terms of the error + function, and as such should have very low error rates. +

+
+ + Implementation +
+

+ In the following table m is the mean of the distribution, + and s is its standard deviation. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = e-(x-m)2/(2s2) / (s * sqrt(2*pi)) +

+
+

+ cdf +

+
+

+ Using the relation: p = 0.5 * erfc(-(x-m)/(s*sqrt(2))) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = 0.5 * erfc((x-m)/(s*sqrt(2))) +

+
+

+ quantile +

+
+

+ Using the relation: x = m - s * sqrt(2) * erfc_inv(2*p) +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = m + s * sqrt(2) * erfc_inv(2*p) +

+
+

+ mean and standard deviation +

+
+

+ The same as dist.mean() and dist.standard_deviation() +

+
+

+ mode +

+
+

+ The same as the mean. +

+
+

+ skewness +

+
+

+ 0 +

+
+

+ kurtosis +

+
+

+ 3 +

+
+

+ kurtosis excess +

+
+

+ 0 +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html new file mode 100644 index 000000000..a7c9e9471 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/pareto.html @@ -0,0 +1,342 @@ + + + +Pareto Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class pareto_distribution;
+
+typedef pareto_distribution<> pareto;
+
+template <class RealType, class Policy>
+class pareto_distribution
+{
+public:
+   typedef RealType value_type;
+   // Constructor:
+   pareto_distribution(RealType location = 1, RealType shape = 1)
+   // Accessors:
+   RealType location()const;
+   RealType shape()const;
+};
+
+}} // namespaces
+
+

+ The Pareto + distribution is a continuous distribution with the probability + density function (pdf): +

+

+ f(x; α, β) = αβα / xα+ 1 +

+

+ For shape parameter α > 0, and location parameter β > 0, and α > 0. +

+

+ The Pareto + distribution often describes the larger compared to the smaller. + A classic example is that 80% of the wealth is owned by 20% of the population. +

+

+ The following graph illustrates how the PDF varies with the shape parameter + α: +

+

+ Pareto + pdf +

+
+ + Related + distributions +
+
+ + Member + Functions +
+
+pareto_distribution(RealType location = 1, RealType shape = 1);
+
+

+ Constructs a pareto + distribution with shape shape and scale + scale. +

+

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

+
+RealType location()const;
+
+

+ Returns the location parameter of this distribution. +

+
+RealType shape()const;
+
+

+ Returns the shape 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 supported domain of the random variable is [location, ∞]. +

+
+ + Accuracy +
+

+ The pareto distribution is implemented in terms of the standard library + exp functions plus expm1 and as such + should have very low error rates except when probability is very close + to unity. +

+
+ + Implementation +
+

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

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf p = αβα/xα +1 +

+
+

+ cdf +

+
+

+ Using the relation: cdf p = 1 - (β / x)α +

+
+

+ cdf complement +

+
+

+ Using the relation: q = 1 - p = -(β / x)α +

+
+

+ quantile +

+
+

+ Using the relation: x = α / (1 - p)1/β +

+
+

+ quantile from the complement +

+
+

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

+
+

+ mean +

+
+

+ αβ / (β - 1) +

+
+

+ variance +

+
+

+ βα2 / (β - 1)2 (β - 2) +

+
+

+ mode +

+
+

+ α +

+
+

+ skewness +

+
+

+ Refer to Weisstein, + Eric W. "Pareto Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+

+ kurtosis +

+
+

+ Refer to Weisstein, + Eric W. "Pareto Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+

+ kurtosis excess +

+
+

+ Refer to Weisstein, + Eric W. "pareto Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html new file mode 100644 index 000000000..2d6a1caf5 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/poisson_dist.html @@ -0,0 +1,345 @@ + + + +Poisson Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost { namespace math {
+
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class poisson_distribution;
+
+typedef poisson_distribution<> poisson;
+
+template <class RealType, class Policy>
+class poisson_distribution
+{ 
+public:
+  typedef RealType value_type;
+  typedef Policy   policy_type;
+  
+  poisson_distribution(RealType mean = 1); // Constructor.
+  RealType mean()const; // Accessor.
+}
+ 
+}} // namespaces boost::math
+
+

+ The Poisson + distribution is a well-known statistical discrete distribution. + It expresses the probability of a number of events (or failures, arrivals, + occurrences ...) occurring in a fixed period of time, provided these + events occur with a known mean rate λ +(events/time), and are independent + of the time since the last event. +

+

+ The distribution was discovered by Simé on-Denis Poisson (1781 to 1840). +

+

+ It has the Probability Mass Function: +

+

+ +

+

+ for k events, with an expected number of events λ. +

+

+ The following graph illustrates how the PDF varies with the parameter + λ: +

+

+ poisson +

+

+

+
+ + + + + +
[Caution]Caution
+

+ The Poisson distribution is a discrete distribution: internally functions + like the cdf and + pdf are treated "as + if" they are continuous functions, but in reality the results + returned from these functions only have meaning if an integer value + is provided for the random variate argument. +

+

+ The quantile function will by default return an integer result that + has been rounded outwards. That is to say lower + quantiles (where the probability is less than 0.5) are rounded downward, + and upper quantiles (where the probability is greater than 0.5) are + rounded upwards. This behaviour ensures that if an X% quantile is + requested, then at least the requested coverage + will be present in the central region, and no more than + the requested coverage will be present in the tails. +

+

+ This behaviour can be changed so that the quantile functions are + rounded differently, or even return a real-valued result using Policies. It is + strongly recommended that you read the tutorial Understanding + Quantiles of Discrete Distributions before using the quantile + function on the Poisson distribution. The reference + docs describe how to change the rounding policy for these + distributions. +

+
+

+

+
+ + Member + Functions +
+
+poisson_distribution(RealType mean = 1);
+
+

+ Constructs a poisson distribution with mean mean. +

+
+RealType mean()const;
+
+

+ Returns the mean 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 variable is [0, ∞]. +

+
+ + Accuracy +
+

+ The Poisson distribution is implemented in terms of the incomplete gamma + functions gamma_p + and gamma_q + and as such should have low error rates: but refer to the documentation + of those functions for more information. The quantile and its complement + use the inverse gamma functions and are therefore probably slightly less + accurate: this is because the inverse gamma functions are implemented + using an iterative method with a lower tolerance to avoid excessive computation. +

+
+ + Implementation +
+

+ In the following table λ is the mean of the distribution, k + is the random variable, p is the probability and + q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = e λk / k! +

+
+

+ cdf +

+
+

+ Using the relation: p = Γ(k+1, λ) / k! = gamma_q(k+1, + λ) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = gamma_p(k+1, + λ) +

+
+

+ quantile +

+
+

+ Using the relation: k = gamma_q_inva(λ, + p) - 1 +

+
+

+ quantile from the complement +

+
+

+ Using the relation: k = gamma_p_inva(λ, + q) - 1 +

+
+

+ mean +

+
+

+ λ +

+
+

+ mode +

+
+

+ floor (λ) or ⌊λ⌋ +

+
+

+ skewness +

+
+

+ 1/√λ +

+
+

+ kurtosis +

+
+

+ 3 + 1/λ +

+
+

+ kurtosis excess +

+
+

+ 1/λ +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html new file mode 100644 index 000000000..f212a3f3e --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/rayleigh.html @@ -0,0 +1,351 @@ + + + +Rayleigh Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class rayleigh_distribution;
+
+typedef rayleigh_distribution<> rayleigh;
+
+template <class RealType, class Policy>
+class rayleigh_distribution
+{
+public:
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+   // Construct:
+   rayleigh_distribution(RealType sigma = 1)
+   // Accessors:
+   RealType sigma()const;
+};
+
+}} // namespaces
+
+

+ The Rayleigh + distribution is a continuous distribution with the probability + density function: +

+

+ f(x; sigma) = x * exp(-x2/2 σ2) / σ2 +

+

+ For sigma parameter σ > 0, and x > 0. +

+

+ The Rayleigh distribution is often used where two orthogonal components + have an absolute value, for example, wind velocity and direction may + be combined to yield a wind speed, or real and imaginary components may + have absolute values that are Rayleigh distributed. +

+

+ The following graph illustrates how the Probability density Function(pdf) + varies with the shape parameter σ: +

+

+ rayleigh_pdf +

+

+ and the Cumulative Distribution Function (cdf) +

+

+ rayleigh_cdf +

+
+ + Related + distributions +
+

+ The absolute value of two independent normal distributions X and Y, √ (X2 + + Y2) is a Rayleigh distribution. +

+

+ The Chi, + Rice + and Weibull + distributions are generalizations of the Rayleigh + distribution. +

+
+ + Member + Functions +
+
+rayleigh_distribution(RealType sigma = 1);
+
+

+ Constructs a Rayleigh + distribution with σ sigma. +

+

+ Requires that the σ parameter is greater than zero, otherwise calls domain_error. +

+
+RealType sigma()const;
+
+

+ Returns the sigma 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 variable is [0, max_value]. +

+
+ + Accuracy +
+

+ The Rayleigh distribution is implemented in terms of the standard library + sqrt and exp and as such should have very low + error rates. Some constants such as skewness and kurtosis were calculated + using NTL RR type with 150-bit accuracy, about 50 decimal digits. +

+
+ + Implementation +
+

+ In the following table σ is the sigma parameter of the distribution, x + is the random variate, p is the probability and + q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = x * exp(-x2)/2 σ2 +

+
+

+ cdf +

+
+

+ Using the relation: p = 1 - exp(-x2/2) σ2 = -expm1(-x2/2) + σ2 +

+
+

+ cdf complement +

+
+

+ Using the relation: q = exp(-x2/ 2) * σ2 +

+
+

+ quantile +

+
+

+ Using the relation: x = sqrt(-2 * σ 2) * log(1 - p)) = sqrt(-2 + * σ 2) * log1p(-p)) +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = sqrt(-2 * σ 2) * log(q)) +

+
+

+ mean +

+
+

+ σ * sqrt(π/2) +

+
+

+ variance +

+
+

+ σ2 * (4 - π/2) +

+
+

+ mode +

+
+

+ σ +

+
+

+ skewness +

+
+

+ Constant from Weisstein, + Eric W. "Weibull Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+

+ kurtosis +

+
+

+ Constant from Weisstein, + Eric W. "Weibull Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+

+ kurtosis excess +

+
+

+ Constant from Weisstein, + Eric W. "Weibull Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html new file mode 100644 index 000000000..f6c111ea3 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/students_t_dist.html @@ -0,0 +1,428 @@ + + + +Students t Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{ 
+   
+template <class RealType = double, 
+          class Policy   = policies::policy<> >
+class students_t_distribution;
+
+typedef students_t_distribution<> students_t;
+
+template <class RealType, class Policy>
+class students_t_distribution
+{
+   typedef RealType value_type;
+   typedef Policy   policy_type;
+   
+   // Construct:
+   students_t_distribution(const RealType& v);
+   
+   // Accessor:
+   RealType degrees_of_freedom()const;
+   
+   // degrees of freedom estimation:
+   static RealType find_degrees_of_freedom(
+      RealType difference_from_mean,
+      RealType alpha,
+      RealType beta,
+      RealType sd,
+      RealType hint = 100);
+};
+
+}} // namespaces
+
+

+ A statistical distribution published by William Gosset in 1908. His employer, + Guinness Breweries, required him to publish under a pseudonym, so he + chose "Student". Given N independent measurements, let +

+

+ +

+

+ where M is the population mean,μ + is the sample mean, and s is the sample variance. +

+

+ Student's t-distribution is defined as the distribution of the random + variable t which is - very loosely - the "best" that we can + do not knowing the true standard deviation of the sample. It has the + PDF: +

+

+ +

+

+ The Student's t-distribution takes a single parameter: the number of + degrees of freedom of the sample. When the degrees of freedom is one + then this distribution is the same as the Cauchy-distribution. As the + number of degrees of freedom tends towards infinity, then this distribution + approaches the normal-distribution. The following graph illustrates how + the PDF varies with the degrees of freedom ν: +

+

+ students_t +

+
+ + Member + Functions +
+
+students_t_distribution(const RealType& v);
+
+

+ Constructs a Student's t-distribution with v degrees + of freedom. +

+

+ Requires v > 0, otherwise calls domain_error. + Note that non-integral degrees of freedom are supported, and meaningful + under certain circumstances. +

+
+RealType degrees_of_freedom()const;
+
+

+ Returns the number of degrees of freedom of this distribution. +

+
+static RealType find_degrees_of_freedom(
+   RealType difference_from_mean,
+   RealType alpha,
+   RealType beta,
+   RealType sd,
+   RealType hint = 100);
+
+

+ Returns the number of degrees of freedom required to observe a significant + result in the Student's t test when the mean differs from the "true" + mean by difference_from_mean. +

+
+

+
+
difference_from_mean
+

+ The difference between the true mean and the sample mean that we + wish to show is significant. +

+
alpha
+

+ The maximum acceptable probability of rejecting the null hypothesis + when it is in fact true. +

+
beta
+

+ The maximum acceptable probability of failing to reject the null + hypothesis when it is in fact false. +

+
sd
+

+ The sample standard deviation. +

+
hint
+

+ A hint for the location to start looking for the result, a good choice + for this would be the sample size of a previous borderline Student's + t test. +

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

+ Remember that for a two-sided test, you must divide alpha by two before + calling this function. +

+

+ For more information on this function see the NIST + Engineering Statistics Handbook. +

+
+ + 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 variable is [-∞, +∞]. +

+
+ + Examples +
+

+ Various worked examples + are available illustrating the use of the Student's t distribution. +

+
+ + Accuracy +
+

+ The normal distribution is implemented in terms of the incomplete + beta function and it's + inverses, refer to accuracy data on those functions for more information. +

+
+ + Implementation +
+

+ In the following table v is the degrees of freedom + of the distribution, t is the random variate, p + is the probability and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = (v / (v + t2))(1+v)/2 / (sqrt(v) * + beta(v/2, + 0.5)) +

+
+

+ cdf +

+
+

+ Using the relations: +

+

+ p = 1 - z iff t > 0 +

+

+ p = z otherwise +

+

+ where z is given by: +

+

+ ibeta(v + / 2, 0.5, v / (v + t2)) / 2 iff v < 2t2 +

+

+ ibetac(0.5, + v / 2, t2 / (v + t2) / 2 otherwise +

+
+

+ cdf complement +

+
+

+ Using the relation: q = cdf(-t) +

+
+

+ quantile +

+
+

+ Using the relation: t = sign(p - 0.5) * sqrt(v * y / x) +

+

+ where: +

+

+ x = ibeta_inv(v + / 2, 0.5, 2 * min(p, q)) +

+

+ y = 1 - x +

+

+ The quantities x and y + are both returned by ibeta_inv + without the subtraction implied above. +

+
+

+ quantile from the complement +

+
+

+ Using the relation: t = -quantile(q) +

+
+

+ mean +

+
+

+ 0 +

+
+

+ variance +

+
+

+ v / (v - 2) +

+
+

+ mode +

+
+

+ 0 +

+
+

+ skewness +

+
+

+ 0 +

+
+

+ kurtosis +

+
+

+ 3 * (v - 2) / (v - 4) +

+
+

+ kurtosis excess +

+
+

+ 6 / (df - 4) +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html new file mode 100644 index 000000000..c998ccc2b --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/triangular_dist.html @@ -0,0 +1,425 @@ + + + +Triangular Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{
+ template <class RealType = double, 
+           class Policy   = policies::policy<> >
+ class triangular_distribution;
+   
+ typedef triangular_distribution<> triangular;
+
+ template <class RealType, class Policy>
+ class triangular_distribution
+ {
+ public:
+    typedef RealType value_type;
+    typedef Policy   policy_type;
+
+    triangular_distribution(RealType lower = -1, RealType mode = 0) RealType upper = 1); // Constructor.
+       : m_lower(lower), m_mode(mode), m_upper(upper) // Default is -1, 0, +1 triangular distribution.
+    // Accessor functions.
+    RealType lower()const;
+    RealType mode()const;
+    RealType upper()const;
+ }; // class triangular_distribution
+
+}} // namespaces
+
+

+ The triangular + distribution is a continuous + probability + distribution with a lower limit a, mode + c, and upper limit b. +

+

+ The triangular distribution is often used where the distribution is only + vaguely known, but, like the uniform + distribution, upper and limits are 'known', but a 'best guess', + the mode or center point, is also added. It has been recommended as a + proxy + for the beta distribution. The distribution is used in business + decision making and project planning. +

+

+ The triangular + distribution is a distribution with the probability + density function: +

+

+ f(x) = +

+
    +
  • + 2(x-a)/(b-a) (c-a) for a <= x <= c +
  • +
  • + 2(b-x)/(b-a)(b-c) for c < x <= b +
  • +
+

+ Parameter a (lower) can be any finite value. Parameter b (upper) can + be any finite value > a (lower). Parameter c (mode) a <= c <= + b. This is the most probable value. +

+

+ The random variate + x must also be finite, and is supported lower <= x <= upper. +

+

+ The triangular distribution may be appropriate when an assumption of + a normal distribution is unjustified because uncertainty is caused by + rounding and quantization from analog to digital conversion. Upper and + lower limits are known, and the most probable value lies midway. +

+

+ The distribution simplifies when the 'best guess' is either the lower + or upper limit - a 90 degree angle triangle. The default chosen is the + 001 triangular distribution which expresses an estimate that the lowest + value is the most likely; for example, you believe that the next-day + quoted delivery date is most likely (knowing that a quicker delivery + is impossible - the postman only comes once a day), and that longer delays + are decreasingly likely, and delivery is assumed to never take more than + your upper limit. +

+

+ The following graph illustrates how the probability + density function PDF varies with the various parameters: +

+

+ triangular_pdf +

+

+ and cumulative distribution function +

+

+ triangular_cdf +

+
+ + Member + Functions +
+
+triangular_distribution(RealType lower = 0, RealType mode = 0 RealType upper = 1);
+
+

+ Constructs a triangular + distribution with lower lower (a) and upper + upper (b). +

+

+ Requires that the lower, mode + and upper parameters are all finite, otherwise calls + domain_error. +

+
+RealType lower()const;
+
+

+ Returns the lower parameter of this distribution + (default -1). +

+
+RealType mode()const;
+
+

+ Returns the mode parameter of this distribution + (default 0). +

+
+RealType upper()const;
+
+

+ Returns the upper parameter of this distribution + (default+1). +

+
+ + 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 variable is \lowerto \upper, and the supported + range is lower <= x <= upper. +

+
+ + Accuracy +
+

+ The triangular distribution is implemented with simple arithmetic operators + and so should have errors within an epsilon or two, except quantiles + with arguments nearing the extremes of zero and unity. +

+
+ + Implementation +
+

+ In the following table, a is the lower parameter + of the distribution, c is the mode parameter, b + is the upper parameter, x is + the random variate, p is the probability and q + = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = 0 for x < mode, 2(x-a)/(b-a)(c-a) + else 2*(b-x)/((b-a)(b-c)) +

+
+

+ cdf +

+
+

+ Using the relation: cdf = 0 for x < mode (x-a)2/((b-a)(c-a)) + else 1 - (b-x)2/((b-a)(b-c)) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = 1 - p +

+
+

+ quantile +

+
+

+ let p0 = (c-a)/(b-a) the point of inflection on the cdf, then + given probability p and q = 1-p: +

+

+ x = sqrt((b-a)(c-a)p) + a ; for p < p0 +

+

+ x = c ; for p == p0 +

+

+ x = b - sqrt((b-a)(b-c)q) ; for p > p0 +

+

+ (See /boost/math/distributions/triangular.hpp + for details.) +

+
+

+ quantile from the complement +

+
+

+ As quantile (See /boost/math/distributions/triangular.hpp + for details.) +

+
+

+ mean +

+
+

+ (a + b + 3) / 3 +

+
+

+ variance +

+
+

+ (a2+b2+c2 - ab - ac - bc)/18 +

+
+

+ mode +

+
+

+ c +

+
+

+ skewness +

+
+

+ (See /boost/math/distributions/triangular.hpp + for details). +

+
+

+ kurtosis +

+
+

+ 12/5 +

+
+

+ kurtosis excess +

+
+

+ -3/5 +

+
+

+ Some 'known good' test values were obtained from Statlet: + Calculate and plot probability distributions +

+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html new file mode 100644 index 000000000..bb0f465e7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/uniform_dist.html @@ -0,0 +1,371 @@ + + + +Uniform Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

+
+namespace boost{ namespace math{
+ template <class RealType = double, 
+           class Policy   = policies::policy<> >
+ class uniform_distribution;
+   
+ typedef uniform_distribution<> uniform;
+
+ template <class RealType, class Policy>
+ class uniform_distribution
+ {
+ public:
+    typedef RealType value_type;
+
+    uniform_distribution(RealType lower = 0, RealType upper = 1); // Constructor.
+       : m_lower(lower), m_upper(upper) // Default is standard uniform distribution.
+    // Accessor functions.
+    RealType lower()const;
+    RealType upper()const;
+ }; // class uniform_distribution
+
+}} // namespaces
+
+

+ The uniform distribution, also known as a rectangular distribution, is + a probability distribution that has constant probability. +

+

+ The continuous + uniform distribution is a distribution with the probability + density function: +

+

+ f(x) = +

+
    +
  • + 1 / (upper - lower) for lower < x < upper +
  • +
  • + zero for x < lower or x > upper +
  • +
+

+ and in this implementation: +

+
  • + 1 / (upper - lower) for x = lower or x = upper +
+

+ The choice of x = lower or x = upper is made because statistical use + of this distribution judged is most likely: the method of maximum likelihood + uses this definition. +

+

+ There is also a discrete uniform distribution. +

+

+ Parameters lower and upper can be any finite value. +

+

+ The random variate + x must also be finite, and is supported lower <= x <= upper. +

+

+ The lower parameter is also called the location + parameter, that + is where the origin of a plot will lie, and (upper - lower) is + also called the scale + parameter. +

+

+ The following graph illustrates how the probability + density function PDF varies with the shape parameter: +

+

+ uniform_pdf +

+

+ Likewise for the CDF: +

+

+ uniform_cdf +

+
+ + Member + Functions +
+
+uniform_distribution(RealType lower = 0, RealType upper = 1);
+
+

+ Constructs a uniform + distribution with lower lower (a) and upper + upper (b). +

+

+ Requires that the lower and upper + parameters are both finite; otherwise if infinity or NaN then calls + domain_error. +

+
+RealType lower()const;
+
+

+ Returns the lower parameter of this distribution. +

+
+RealType upper()const;
+
+

+ Returns the upper 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 variable is any finite value, but the supported + range is only lower <= x <= upper. +

+
+ + Accuracy +
+

+ The uniform distribution is implemented with simple arithmetic operators + and so should have errors within an epsilon or two. +

+
+ + Implementation +
+

+ In the following table a is the lower parameter + of the distribution, b is the upper parameter, + x is the random variate, p + is the probability and q = 1-p. +

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = 0 for x < a, 1 / (b - a) for a <= + x <= b, 0 for x > b +

+
+

+ cdf +

+
+

+ Using the relation: cdf = 0 for x < a, (x - a) / (b - a) for + a <= x <= b, 1 for x > b +

+
+

+ cdf complement +

+
+

+ Using the relation: q = 1 - p, (b - x) / (b - a) +

+
+

+ quantile +

+
+

+ Using the relation: x = p * (b - a) + a; +

+
+

+ quantile from the complement +

+
+

+ x = -q * (b - a) + b +

+
+

+ mean +

+
+

+ (a + b) / 2 +

+
+

+ variance +

+
+

+ (b - a) 2 / 12 +

+
+

+ mode +

+
+

+ any value in [a, b] but a is chosen. (Would NaN be better?) +

+
+

+ skewness +

+
+

+ 0 +

+
+

+ kurtosis excess +

+
+

+ -6/5 = -1.2 exactly. (kurtosis - 3) +

+
+

+ kurtosis +

+
+

+ 9/5 +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html new file mode 100644 index 000000000..1e462f269 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/dists/weibull.html @@ -0,0 +1,369 @@ + + + +Weibull Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

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

+

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

+ The Weibull + distribution is a continuous distribution with the probability + density function: +

+

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

+

+ For shape parameter α > 0, and scale parameter β > 0, and x > 0. +

+

+ The Weibull distribution is often used in the field of failure analysis; + in particular it can mimic distributions where the failure rate varies + over time. If the failure rate is: +

+
    +
  • + constant over time, then α = 1, suggests that items are failing from + random events. +
  • +
  • + decreases over time, then α < 1, suggesting "infant mortality". +
  • +
  • + increases over time, then α > 1, suggesting "wear out" - + more likely to fail as time goes by. +
  • +
+

+ The following graph illustrates how the PDF varies with the shape parameter + α: +

+

+ weibull +

+

+ While this graph illustrates how the PDF varies with the scale parameter + β: +

+

+ weibull2 +

+
+ + Related + distributions +
+

+ When α = 3, the Weibull + distribution appears similar to the normal + distribution. When α = 1, the Weibull distribution reduces to the + exponential + distribution. +

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

+ Constructs a Weibull + distribution with shape shape and scale + scale. +

+

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

+
+RealType shape()const;
+
+

+ Returns the shape 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 variable is [0, ∞]. +

+
+ + Accuracy +
+

+ The Weibull distribution is implemented in terms of the standard library + log and exp functions plus expm1 + and log1p and + as such should have very low error rates. +

+
+ + Implementation +
+

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

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

+ Function +

+
+

+ Implementation Notes +

+
+

+ pdf +

+
+

+ Using the relation: pdf = αβxα - 1 e-(x/beta)alpha +

+
+

+ cdf +

+
+

+ Using the relation: p = -expm1(-(x/β)α) +

+
+

+ cdf complement +

+
+

+ Using the relation: q = e-(x/β)α +

+
+

+ quantile +

+
+

+ Using the relation: x = β * (-log1p(-p))1/α +

+
+

+ quantile from the complement +

+
+

+ Using the relation: x = β * (-log(q))1/α +

+
+

+ mean +

+
+

+ β * Γ(1 + 1/α) +

+
+

+ variance +

+
+

+ β2(Γ(1 + 2/α) - Γ2(1 + 1/α)) +

+
+

+ mode +

+
+

+ β((α - 1) / α)1/α +

+
+

+ skewness +

+
+

+ Refer to Weisstein, + Eric W. "Weibull Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+

+ kurtosis +

+
+

+ Refer to Weisstein, + Eric W. "Weibull Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+

+ kurtosis excess +

+
+

+ Refer to Weisstein, + Eric W. "Weibull Distribution." From MathWorld--A Wolfram + Web Resource. +

+
+
+ + References +
+ +
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html new file mode 100644 index 000000000..15f1410cb --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/dist_ref/nmp.html @@ -0,0 +1,703 @@ + + + +Non-Member Properties + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ 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 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 concept index to find + the property you want by the name you are most familiar with. Or use the + function index to go straight to + the function you want if you already know its name. +

+
+ + Function + Index +
+
+
+ + Conceptual + Index +
+ +
+ + Cumulative + Distribution Function +
+
+template <class RealType, class Policy>
+RealType cdf(const Distribution-Type<RealType, Policy>& dist, const RealType& x);
+
+

+ The Cumulative Distribution Function + is the probability that the variable takes a value less than or equal to + x. It is equivalent to the integral from -infinity to x of the Probability + Density Function. +

+

+ 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 normal distribution: +

+

+ cdf +

+
+ + Complement + of the Cumulative Distribution Function +
+
+template <class Distribution, class RealType>
+RealType cdf(const Unspecified-Complement-Type<Distribution, RealType>& comp);
+
+

+ The complement of the Cumulative Distribution + Function is the probability that the variable takes a value greater + than x. It is equivalent to the integral from x to infinity of the Probability Density Function, or 1 minus + the Cumulative Distribution Function + of x. +

+

+ This is also known as the survival function. +

+

+ This function may return a domain_error + if the random variable is outside the defined range for the distribution. +

+

+ In this library, it is obtained by wrapping the arguments to the cdf function in a call to complement, for example: +

+
+// standard normal distribution object:
+boost::math::normal norm;
+// 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 + normal distribution: +

+

+ survival +

+

+ See why complements? for why the + complement is useful and when it should be used. +

+
+ + Hazard Function +
+
+template <class RealType, class Policy>
+RealType hazard(const Distribution-Type<RealType, Policy>& dist, const RealType& x);
+
+

+ Returns the Hazard Function of + x and distibution dist. +

+

+ This function may return a domain_error + if the random variable is outside the defined range for the distribution. +

+

+ +

+
+ + + + + +
[Caution]Caution

+ Some authors refer to this as the conditional failure density function + rather than the hazard function. +

+
+ + Cumulative + Hazard Function +
+
+template <class RealType, class Policy>
+RealType chf(const Distribution-Type<RealType, Policy>& dist, const RealType& x);
+
+

+ Returns the Cumulative Hazard Function + of x and distibution dist. +

+

+ This function may return a domain_error + if the random variable is outside the defined range for the distribution. +

+

+ +

+
+ + + + + +
[Caution]Caution

+ Some authors refer to this as simply the "Hazard Function". +

+
+ + mean +
+
+template<class RealType, class Policy>
+RealType mean(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the mean of the distribution dist. +

+

+ This function may return a domain_error + if the distribution does not have a defined mean (for example the Cauchy + distribution). +

+
+ + median +
+
+template<class RealType, class Policy>
+RealType median(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the median of the distribution dist. +

+
+ + mode +
+
+template<class RealType, Policy>
+RealType mode(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the mode of the distribution dist. +

+

+ This function may return a domain_error + if the distribution does not have a defined mode. +

+
+ + Probability + Density Function +
+
+template <class RealType, class Policy>
+RealType pdf(const Distribution-Type<RealType, Policy>& dist, const RealType& x);
+
+

+ For a continuous function, the probability density function (pdf) returns + the probability that the variate has the value x. Since for continuous + distributions the probability at a single point is actually zero, the probability + is better expressed as the integral of the pdf between two points: see + the Cumulative Distribution Function. +

+

+ For a discrete distribution, the pdf is the probability that the 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: +

+

+ pdf +

+
+ + range +
+
+template<class RealType, class Policy>
+std::pair<RealType, RealType> range(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the valid range of the random variable over distribution dist. +

+
+ + Quantile +
+
+template <class RealType, class Policy>
+RealType quantile(const Distribution-Type<RealType, Policy>& dist, const RealType& p);
+
+

+ The quantile is best viewed as the inverse of the Cumulative + Distribution Function, it returns a value x + such that cdf(dist, x) == + p. +

+

+ This is also known as the percent point function, + or a percentile, it is also the same as calculating + the lower critical value of a distribution. +

+

+ This function returns a domain_error + if the probability lies outside [0,1]. The function may return an overflow_error if there is no finite value + that has the specified probability. +

+

+ The following graph shows the quantile function for a standard normal distribution: +

+

+ quantile +

+
+ + Quantile + from the complement of the probability. +
+

+ complements +

+
+template <class Distribution, class RealType>
+RealType quantile(const Unspecified-Complement-Type<Distribution, RealType>& comp);
+
+

+ This is the inverse of the Complement of + the Cumulative Distribution Function. It is calculated by wrapping + the arguments in a call to the quantile function in a call to complement. + For example: +

+
+// define a standard normal distribution:
+boost::math::normal norm;
+// print the value of x for which the complement
+// of the probability is 0.05:
+std::cout << quantile(complement(norm, 0.05)) << std::endl;
+
+

+ The function computes a value x such that cdf(complement(dist, x)) == q + where q is complement of the probability. +

+

+ Why complements? +

+

+ This function is also called the inverse survival function, and is the + same as calculating the upper critical value of a + distribution. +

+

+ This function returns a domain_error + if the probablity lies outside [0,1]. The function may return an overflow_error if there is no finite value + that has the specified probability. +

+

+ The following graph show the inverse survival function for the normal distribution: +

+

+ survival_inv +

+
+ + Standard + Deviation +
+
+template <class RealType, class Policy>
+RealType standard_deviation(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the standard deviation of distribution dist. +

+

+ This function may return a domain_error + if the distribution does not have a defined standard deviation. +

+
+ + support +
+
+template<class RealType, class Policy>
+std::pair<RealType, RealType> support(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the supported range of random variable over the distribution dist. +

+

+ The distribution is said to be 'supported' over a range that is "the smallest + closed set whose complement has probability zero". Non-mathematicians + might say it means the 'interesting' smallest range of random variate x + that has the cdf going from zero to unity. Outside are uninteresting zones + where the pdf is zero, and the cdf zero or unity. +

+
+ + Variance +
+
+template <class RealType, class Policy>
+RealType variance(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the variance of the distribution dist. +

+

+ This function may return a domain_error + if the distribution does not have a defined variance. +

+
+ + Skewness +
+
+template <class RealType, class Policy>
+RealType skewness(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the skewness of the distribution dist. +

+

+ This function may return a domain_error + if the distribution does not have a defined skewness. +

+
+ + Kurtosis +
+
+template <class RealType, class Policy>
+RealType kurtosis(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the 'proper' kurtosis (normalized fourth moment) of the distribution + dist. +

+

+ kertosis = β2= μ4 / μ22 +

+

+ Where μi is the i'th central moment of the distribution, and in particular + μ2 is the variance of the distribution. +

+

+ The kurtosis is a measure of the "peakedness" of a distribution. +

+

+ Note that the literature definition of kurtosis is confusing. The definition + used here is that used by for example Wolfram + MathWorld (that includes a table of formulae for kurtosis excess + for various distributions) but NOT the definition of kurtosis + used by Wikipedia which treats "kurtosis" and "kurtosis + excess" as the same quantity. +

+
+kurtosis_excess = 'proper' kurtosis - 3
+
+

+ This subtraction of 3 is convenient so that the kurtosis excess + of a normal distribution is zero. +

+

+ This function may return a domain_error + if the distribution does not have a defined kurtosis. +

+

+ 'Proper' kurtosis can have a value from zero to + infinity. +

+
+ + Kurtosis + excess +
+
+template <class RealType, Policy>
+RealType kurtosis_excess(const Distribution-Type<RealType, Policy>& dist);
+
+

+ Returns the kurtosis excess of the distribution dist. +

+

+ kurtosis excess = γ2= μ4 / μ22- 3 = kurtosis - 3 +

+

+ Where μi is the i'th central moment of the distribution, and in particular + μ2 is the variance of the distribution. +

+

+ The kurtosis excess is a measure of the "peakedness" of a distribution, + and is more widely used than the "kurtosis proper". It is defined + so that the kurtosis excess of a normal distribution is zero. +

+

+ This function may return a domain_error + if the distribution does not have a defined kurtosis excess. +

+

+ Kurtosis excess can have a value from -2 to + infinity. +

+
+kurtosis = kurtosis_excess +3;
+
+

+ The kurtosis excess of a normal distribution is zero. +

+
+ + P and Q +
+

+ The terms P and Q are sometimes used to refer to the Cumulative + Distribution Function and its complement + respectively. Lowercase p and q are sometimes used to refer to the values + returned by these functions. +

+
+ + Percent + Point Function +
+

+ The percent point function, also known as the percentile, is the same as + the Quantile. +

+
+ + Inverse + CDF Function. +
+

+ The inverse of the cumulative distribution function, is the same as the + Quantile. +

+
+ + Inverse + Survival Function. +
+

+ The inverse of the survival function, is the same as computing the quantile from the complement of the probability. +

+
+ + Probability + Mass Function +
+

+ The Probability Mass Function is the same as the Probability + Density Function. +

+

+ The term Mass Function is usually applied to discrete distributions, while + the term Probability Density Function + applies to continuous distributions. +

+
+ + Lower + Critical Value. +
+

+ The lower critical value calculates the value of the random variable given + the area under the left tail of the distribution. It is equivalent to calculating + the Quantile. +

+
+ + Upper + Critical Value. +
+

+ The upper critical value calculates the value of the random variable given + the area under the right tail of the distribution. It is equivalent to + calculating the quantile from the + complement of the probability. +

+
+ + Survival + Function +
+

+ Refer to the Complement of the Cumulative + Distribution Function. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/future.html b/doc/sf_and_dist/html/math_toolkit/dist/future.html new file mode 100644 index 000000000..0eb9f6d13 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/future.html @@ -0,0 +1,145 @@ + + + +Extras/Future Directions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Adding + Additional Location and Scale Parameters +
+

+ In some modelling applications we require a distribution with a specific + location and scale: often this equates to a specific mean and standard deviation, + although for many distributions the relationship between these properties + and the location and scale parameters are non-trivial. See http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm + for more information. +

+

+ The obvious way to handle this is via an adapter template: +

+
+template <class Dist>
+class scaled_distribution
+{
+   scaled_distribution(
+     const Dist dist, 
+     typename Dist::value_type location,
+     typename Dist::value_type scale = 0);
+};
+
+

+ Which would then have its own set of overloads for the non-member accessor + functions. +

+
+ + An + "any_distribution" class +
+

+ It would be fairly trivial to add a distribution object that virtualises + the actual type of the distribution, and can therefore hold "any" + object that conforms to the conceptual requirements of a distribution: +

+
+template <class RealType>
+class any_distribution
+{
+public:
+   template <class Distribution>
+   any_distribution(const Distribution& d);
+};
+
+// Get the cdf of the underlying distribution:
+template <class RealType>
+RealType cdf(const any_distribution<RealType>& d, RealType x);
+// etc....
+
+

+ Such a class would facilitate the writing of non-template code that can function + with any distribution type. It's not clear yet whether there is a compelling + use case though. Possibly tests for goodness of fit might provide such a + use case: this needs more investigation. +

+
+ + Higher + Level Hypothesis Tests +
+

+ Higher-level tests roughly corresponding to the Mathematica + Hypothesis Tests package could be added reasonably easily, for example: +

+
+template <class InputIterator>
+typename std::iterator_traits<InputIterator>::value_type
+   test_equal_mean(
+     InputIterator a,
+     InputIterator b,
+     typename std::iterator_traits<InputIterator>::value_type expected_mean);
+
+

+ Returns the probability that the data in the sequence [a,b) has the mean + expected_mean. +

+
+ + Integration + With Statistical Accumulators +
+

+ Eric + Niebler's accumulator framework - also work in progress - provides + the means to calculate various statistical properties from experimental data. + There is an opportunity to integrate the statistical tests with this framework + at some later date: +

+
+// Define an accumulator, all required statistics to calculate the test
+// are calculated automatically:
+accumulator_set<double, features<tag::test_expected_mean> > acc(expected_mean=4);
+// Pass our data to the accumulator:
+acc = std::for_each(mydata.begin(), mydata.end(), acc);
+// Extract the result:
+double p = probability(acc);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html new file mode 100644 index 000000000..4cb9d5570 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut.html @@ -0,0 +1,134 @@ + + + +Statistical Distributions Tutorial + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+
Overview
+
Worked Examples
+
+
+ Distribution Construction Example
+
Student's + t Distribution Examples
+
+
+ Calculating confidence intervals on the mean with the Students-t distribution
+
+ Testing a sample mean for difference from a "true" mean
+
+ Estimating how large a sample size would have to become in order to give + a significant Students-t test result with a single sample test
+
+ Comparing the means of two samples with the Students-t test
+
+ Comparing two paired samples with the Student's t distribution
+
+
Chi Squared + Distribution Examples
+
+
+ Confidence Intervals on the Standard Deviation
+
+ Chi-Square Test for the Standard Deviation
+
+ Estimating the Required Sample Sizes for a Chi-Square Test for the Standard + Deviation
+
+
F Distribution + Examples
+
Binomial + Distribution Examples
+
+
+ Binomial Coin-Flipping Example
+
+ Binomial Quiz Example
+
+ Calculating Confidence Limits on the Frequency of Occurrence for a Binomial + Distribution
+
+ Estimating Sample Sizes for a Binomial Distribution.
+
+
Negative + Binomial Distribution Examples
+
+
+ Calculating Confidence Limits on the Frequency of Occurrence for the + Negative Binomial Distribution
+
+ Estimating Sample Sizes for the Negative Binomial.
+
+ Negative Binomial Sales Quota Example.
+
+ Negative Binomial Table Printing Example.
+
+
Normal + Distribution Examples
+
+ Some Miscellaneous Examples of the Normal (Gaussian) Distribution
+
Error Handling + Example
+
Find Location + and Scale Examples
+
+
+ Find Location (Mean) Example
+
+ Find Scale (Standard Deviation) Example
+
+ Find mean and standard deviation example
+
+
Comparison + with C, R, FORTRAN-style Free Functions
+
+
Random Variates + and Distribution Parameters
+
Discrete Probability + Distributions
+
+

+ This library is centred around statistical distributions, this tutorial will + give you an overview of what they are, how they can be used, and provides + a few worked examples of applying the library to statistical tests. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html new file mode 100644 index 000000000..a5ab02f83 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/dist_params.html @@ -0,0 +1,98 @@ + + + +Discrete Probability Distributions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Note that the discrete + distributions, including the binomial, negative binomial, Poisson + & Bernoulli, are all mathematically defined as discrete functions: + only integral values of the random variate are envisaged and the functions + are only defined at these integral values. However because the method of + calculation often uses continuous functions, it is convenient to treat + them as if they were continuous functions, and permit non-integral values + of their parameters. +

+

+ To enforce a strict mathematical model, users may use floor or ceil functions + on the random variate, prior to calling the distribution function, to enforce + integral values. +

+

+ For similar reasons, in continuous distributions, parameters like degrees + of freedom that might appear to be integral, are treated as real values + (and are promoted from integer to floating-point if necessary). In this + case however, that there are a small number of situations where non-integral + degrees of freedom do have a genuine meaning. +

+

+ Generally speaking there is no loss of performance from allowing real-values + parameters: the underlying special functions contain optimizations for + integer-valued arguments when applicable. +

+
+ + + + + +
[Caution]Caution
+

+ The quantile function of a discrete distribution will by default return + an integer result that has been rounded outwards. + That is to say lower quantiles (where the probability is less than 0.5) + are rounded downward, and upper quantiles (where the probability is greater + than 0.5) are rounded upwards. This behaviour ensures that if an X% quantile + is requested, then at least the requested coverage + will be present in the central region, and no more than + the requested coverage will be present in the tails. +

+

+ This behaviour can be changed so that the quantile functions are rounded + differently, or even return a real-valued result using Policies. + It is strongly recommended that you read the tutorial Understanding + Quantiles of Discrete Distributions before using the quantile + function on a discrete distribution. The reference + docs describe how to change the rounding policy for these distributions. +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html new file mode 100644 index 000000000..ebc337527 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/overview.html @@ -0,0 +1,531 @@ + + + +Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Headers + and Namespaces +
+

+ All the code in this library is inside namespace boost::math. +

+

+ In order to use a distribution my_distribution you + will need to include either the header <boost/math/distributions/my_distribution.hpp> + or the "include everything" header: <boost/math/distributions.hpp>. +

+

+ For example, to use the Students-t distribution include either <boost/math/distributions/students_t.hpp> + or <boost/math/distributions.hpp> +

+
+ + Distributions + are Objects +
+

+ Each kind of distribution in this library is a class type. +

+

+ Policies provide fine-grained + control of the behaviour of these classes, allowing the user to customise + behaviour such as how errors are handled, or how the quantiles of discrete + distribtions behave. +

+
+ + + + + +
[Tip]Tip

+ If you are familiar with statistics libraries using functions, and 'Distributions + as Objects' seem alien, see the + comparison to other statistics libraries. +

+

+ Making distributions class types does two things: +

+
    +
  • + It encapsulates the kind of distribution in the C++ type system; so, + for example, Students-t distributions are always a different C++ type + from Chi-Squared distributions. +
  • +
  • + The distribution objects store any parameters associated with the distribution: + for example, the Students-t distribution has a degrees of freedom + parameter that controls the shape of the distribution. This degrees + of freedom parameter has to be provided to the Students-t + object when it is constructed. +
  • +
+

+ Although the distribution classes in this library are templates, there + are typedefs on type double that mostly take the usual + name of the distribution (except where there is a clash with a function + of the same name: beta and gamma, in which case using the default template + arguments - RealType = + double - is nearly as convenient). + Probably 95% of uses are covered by these typedefs: +

+
+using namespace boost::math;
+
+// Construct a students_t distribution with 4 degrees of freedom:
+students_t d1(4);
+
+// Construct a double-precision beta distribution 
+// with parameters a = 10, b = 20
+beta_distribution<> d2(10, 20); // Note: _distribution<> suffix !
+
+

+ If you need to use the distributions with a type other than double, then you can instantiate the template + directly: the names of the templates are the same as the double typedef but with _distribution + appended, for example: Students + t Distribution or Binomial + Distribution: +

+
+// Construct a students_t distribution, of float type,
+// with 4 degrees of freedom:
+students_t_distribution<float> d3(4);
+
+// Construct a binomial distribution, of long double type,
+// with probability of success 0.3
+// and 20 trials in total:
+binomial_distribution<long double> d4(20, 0.3);
+
+

+ The parameters passed to the distributions can be accessed via getter member + functions: +

+
+d1.degrees_of_freedom();  // returns 4.0 
+
+

+ This is all well and good, but not very useful so far. What we often want + is to be able to calculate the cumulative distribution functions + and quantiles etc for these distributions. +

+
+ + Generic + operations common to all distributions are non-member functions +
+

+ Want to calculate the PDF (Probability Density Function) of a distribution? + No problem, just use: +

+
+pdf(my_dist, x);  // Returns PDF (density) at point x of distribution my_dist.
+
+

+ Or how about the CDF (Cumulative Distribution Function): +

+
+cdf(my_dist, x);  // Returns CDF (integral from -infinity to point x)
+                  // of distribution my_dist.
+
+

+ And quantiles are just the same: +

+
+quantile(my_dist, p);  // Returns the value of the random variable x
+                       // such that cdf(my_dist, x) == p.
+
+

+ If you're wondering why these aren't member functions, it's to make the + library more easily extensible: if you want to add additional generic operations + - let's say the n'th moment - then all you have to + do is add the appropriate non-member functions, overloaded for each implemented + distribution type. +

+
+ + + + + +
[Tip]Tip
+

+

+

+ Random numbers that approximate Quantiles of Distributions +

+

+ If you want random numbers that are distributed in a specific way, for + example in a uniform, normal or triangular, see Boost.Random. +

+

+ Whilst in principal there's nothing to prevent you from using the quantile + function to convert a uniformly distributed random number to another + distribution, in practice there are much more efficient algorithms available + that are specific to random number generation. +

+
+

+ For example, the binomial distribution has two parameters: n (the number + of trials) and p (the probability of success on one trial). +

+

+ The binomial_distribution + constructor therefore has two parameters: +

+

+ binomial_distribution(RealType n, RealType + p); +

+

+ For this distribution the random variate is k: the number of successes + observed. The probability density/mass function (pdf) is therefore written + as f(k; n, p). +

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

+

+

+ Random Variates and Distribution Parameters +

+

+ Random variates + and 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. +

+
+

+ As noted above the non-member function pdf + has one parameter for the distribution object, and a second for the random + variate. So taking our binomial distribution example, we would write: +

+

+ pdf(binomial_distribution<RealType>(n, p), k); +

+

+ The distribution (effectively the random variate) is said to be 'supported' + over a range that is "the + smallest closed set whose complement has probability zero". + MathWorld uses the word 'defined' for this range. Non-mathematicians might + say it means the 'interesting' smallest range of random variate x that + has the cdf going from zero to unity. Outside are uninteresting zones where + the pdf is zero, and the cdf zero or unity. Mathematically, the functions + may make sense with an (+ or -) infinite value, but except for a few special + cases (in the Normal and Cauchy distributions) this implementation limits + random variates to finite values from the max + to min for the RealType. (See Handling + of Floating-Point Infinity for rationale). +

+

+ The range of random variate values that is permitted and supported can + be tested by using two functions range + and support. +

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

+

+

+ Discrete Probability Distributions +

+

+ Note that the discrete + distributions, including the binomial, negative binomial, Poisson + & Bernoulli, are all mathematically defined as discrete functions: + that is to say the functions cdf + and pdf are only defined + for integral values of the random variate. +

+

+ However, because the method of calculation often uses continuous functions + it is convenient to treat them as if they were continuous functions, + and permit non-integral values of their parameters. +

+

+ Users wanting to enforce a strict mathematical model may use floor or ceil + functions on the random variate prior to calling the distribution function. +

+

+ The quantile functions for these distributions are hard to specify in + a manner that will satisfy everyone all of the time. The default behaviour + is to return an integer result, that has been rounded outwards: + that is to say, lower quantiles - where the probablity is less than 0.5 + are rounded down, while upper quantiles - where the probability is greater + than 0.5 - are rounded up. This behaviour ensures that if an X% quantile + is requested, then at least the requested coverage + will be present in the central region, and no more than + the requested coverage will be present in the tails. +

+

+ This behaviour can be changed so that the quantile functions are rounded + differently, or return a real-valued result using Policies. + It is strongly recommended that you read the tutorial Understanding + Quantiles of Discrete Distributions before using the quantile + function on a discrete distribtion. The reference + docs describe how to change the rounding policy for these distributions. +

+

+ For similar reasons continuous distributions with parameters like "degrees + of freedom" that might appear to be integral, are treated as real + values (and are promoted from integer to floating-point if necessary). + In this case however, there are a small number of situations where non-integral + degrees of freedom do have a genuine meaning. +

+
+

+

+
+ + Complements + are supported too +
+

+ Often you don't want the value of the CDF, but its complement, which is + to say 1-p rather than p. + You could calculate the CDF and subtract it from 1, + but if p is very close + to 1 then cancellation error + will cause you to lose significant digits. In extreme cases, p may actually be equal to 1, even though the true value of the complement + is non-zero. +

+

+ See also "Why complements?" +

+

+ In this library, whenever you want to receive a complement, just wrap all + the function arguments in a call to complement(...), for example: +

+
+students_t dist(5);
+cout << "CDF at t = 1 is " << cdf(dist, 1.0) << endl;
+cout << "Complement of CDF at t = 1 is " << cdf(complement(dist, 1.0)) << endl;
+
+

+ But wait, now that we have a complement, we have to be able to use it as + well. Any function that accepts a probability as an argument can also accept + a complement by wrapping all of its arguments in a call to complement(...), + for example: +

+
+students_t dist(5);
+
+for(double i = 10; i < 1e10; i *= 10)
+{
+   // Calculate the quantile for a 1 in i chance:
+   double t = quantile(complement(dist, 1/i));
+   // Print it out:
+   cout << "Quantile of students-t with 5 degrees of freedom\n"
+           "for a 1 in " << i << " chance is " << t << endl;
+}
+
+
+ + + + + +
[Tip]Tip
+

+

+

+ Critical values are just quantiles +

+

+ Some texts talk about quantiles, others about critical values, the basic + rule is: +

+

+ Lower critical values are the same as the quantile. +

+

+ Upper critical values are the same as the quantile + from the complement of the probability. +

+

+ For example, suppose we have a Bernoulli process, giving rise to a binomial + distribution with success ratio 0.1 and 100 trials in total. The lower + critical value for a probability of 0.05 is given by: +

+

+ quantile(binomial(100, 0.1), 0.05) +

+

+ and the upper critical value is given by: +

+

+ quantile(complement(binomial(100, 0.1), 0.05)) +

+

+ which return 4.82 and 14.63 respectively. +

+
+

+

+
+ + + + + +
[Tip]Tip
+

+

+

+ Why bother with complements anyway? +

+

+ It's very tempting to dispense with complements, and simply subtract + the probability from 1 when required. However, consider what happens + when the probability is very close to 1: let's say the probability expressed + at float precision is 0.999999940f, + then 1 - + 0.999999940f = + 5.96046448e-008, but the result + is actually accurate to just one single bit: the + only bit that didn't cancel out! +

+

+ Or to look at this another way: consider that we want the risk of falsely + rejecting the null-hypothesis in the Student's t test to be 1 in 1 billion, + for a sample size of 10,000. This gives a probability of 1 - 10-9, which + is exactly 1 when calculated at float precision. In this case calculating + the quantile from the complement neatly solves the problem, so for example: +

+

+ quantile(complement(students_t(10000), 1e-9)) +

+

+ returns the expected t-statistic 6.00336, + where as: +

+

+ quantile(students_t(10000), 1-1e-9f) +

+

+ raises an overflow error, since it is the same as: +

+

+ quantile(students_t(10000), 1) +

+

+ Which has no finite result. +

+
+
+ + Parameters + can be calculated +
+

+ Sometimes it's the parameters that define the distribution that you need + to find. Suppose, for example, you have conducted a Students-t test for + equal means and the result is borderline. Maybe your two samples differ + from each other, or maybe they don't; based on the result of the test you + can't be sure. A legitimate question to ask then is "How many more + measurements would I have to take before I would get an X% probability + that the difference is real?" Parameter finders can answer questions + like this, and are necessarily different for each distribution. They are + implemented as static member functions of the distributions, for example: +

+
+students_t::find_degrees_of_freedom(
+   1.3,        // difference from true mean to detect
+   0.05,       // maximum risk of falsely rejecting the null-hypothesis.
+   0.1,        // maximum risk of falsely failing to reject the null-hypothesis.
+   0.13);      // sample standard deviation
+
+

+ Returns the number of degrees of freedom required to obtain a 95% probability + that the observed differences in means is not down to chance alone. In + the case that a borderline Students-t test result was previously obtained, + this can be used to estimate how large the sample size would have to become + before the observed difference was considered significant. It assumes, + of course, that the sample mean and standard deviation are invariant with + sample size. +

+
+ + Summary +
+
    +
  • + Distributions are objects, which are constructed from whatever parameters + the distribution may have. +
  • +
  • + Member functions allow you to retrieve the parameters of a distribution. +
  • +
  • + Generic non-member functions provide access to the properties that are + common to all the distributions (PDF, CDF, quantile etc). +
  • +
  • + Complements of probabilities are calculated by wrapping the function's + arguments in a call to complement(...). +
  • +
  • + Functions that accept a probability can accept a complement of the probability + as well, by wrapping the function's arguments in a call to complement(...). +
  • +
  • + Static member functions allow the parameters of a distribution to be + found from other information. +
  • +
+

+ Now that you have the basics, the next section looks at some worked examples. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html new file mode 100644 index 000000000..65b72ddbd --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/variates.html @@ -0,0 +1,76 @@ + + + +Random Variates and Distribution Parameters + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Random variates + and distribution parameters + are conventionally distinguished (for example in Wikipedia and Wolfram + MathWorld by placing a semi-colon after the random variate (whose value + you 'choose'), to separate the variate from the parameter(s) that defines + the shape of the distribution. +

+

+ For example, the binomial distribution has two parameters: n (the number + of trials) and p (the probability of success on one trial). It also has + the random variate k: the number of successes observed. + This means the probability density/mass function (pdf) is written as f(k; + n, p). +

+

+ Translating this into code the binomial_distribution + constructor therefore has two parameters: +

+
+binomial_distribution(RealType n, RealType p);
+
+

+ While the function pdf + has one argument specifying the distribution type (which includes it's + parameters, if any), and a second argument for the random variate. So taking + our binomial distribution example, we would write: +

+
+pdf(binomial_distribution<RealType>(n, p), k);
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html new file mode 100644 index 000000000..e68359f8b --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg.html @@ -0,0 +1,124 @@ + + + +Worked Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+
+ Distribution Construction Example
+
Student's + t Distribution Examples
+
+
+ Calculating confidence intervals on the mean with the Students-t distribution
+
+ Testing a sample mean for difference from a "true" mean
+
+ Estimating how large a sample size would have to become in order to give + a significant Students-t test result with a single sample test
+
+ Comparing the means of two samples with the Students-t test
+
+ Comparing two paired samples with the Student's t distribution
+
+
Chi Squared + Distribution Examples
+
+
+ Confidence Intervals on the Standard Deviation
+
+ Chi-Square Test for the Standard Deviation
+
+ Estimating the Required Sample Sizes for a Chi-Square Test for the Standard + Deviation
+
+
F Distribution + Examples
+
Binomial + Distribution Examples
+
+
+ Binomial Coin-Flipping Example
+
+ Binomial Quiz Example
+
+ Calculating Confidence Limits on the Frequency of Occurrence for a Binomial + Distribution
+
+ Estimating Sample Sizes for a Binomial Distribution.
+
+
Negative + Binomial Distribution Examples
+
+
+ Calculating Confidence Limits on the Frequency of Occurrence for the + Negative Binomial Distribution
+
+ Estimating Sample Sizes for the Negative Binomial.
+
+ Negative Binomial Sales Quota Example.
+
+ Negative Binomial Table Printing Example.
+
+
Normal + Distribution Examples
+
+ Some Miscellaneous Examples of the Normal (Gaussian) Distribution
+
Error Handling + Example
+
Find Location + and Scale Examples
+
+
+ Find Location (Mean) Example
+
+ Find Scale (Standard Deviation) Example
+
+ Find mean and standard deviation example
+
+
Comparison + with C, R, FORTRAN-style Free Functions
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html new file mode 100644 index 000000000..cdddbac0d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg.html @@ -0,0 +1,60 @@ + + + +Binomial Distribution Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html new file mode 100644 index 000000000..37a91f07f --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_conf.html @@ -0,0 +1,246 @@ + + + +Calculating Confidence Limits on the Frequency of Occurrence for a Binomial Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine you have a process that follows a binomial distribution: for + each trial conducted, an event either occurs or does it does not, referred + to as "successes" and "failures". If, by experiment, + you want to measure the frequency with which successes occur, the best + estimate is given simply by k / N, + for k successes out of N + trials. However our confidence in that estimate will be shaped by how + many trials were conducted, and how many successes were observed. The + static member functions binomial_distribution<>::find_lower_bound_on_p + and binomial_distribution<>::find_upper_bound_on_p + allow you to calculate the confidence intervals for your estimate of + the occurrence frequency. +

+

+ The sample program binomial_confidence_limits.cpp + illustrates their use. It begins by defining a procedure that will + print a table of confidence limits for various degrees of certainty: +

+
+#include <iostream>
+#include <iomanip>
+#include <boost/math/distributions/binomial.hpp>
+
+void confidence_limits_on_frequency(unsigned trials, unsigned successes)
+{
+   //
+   // trials = Total number of trials.
+   // successes = Total number of observed successes.
+   //
+   // Calculate confidence limits for an observed
+   // frequency of occurrence that follows a binomial
+   // distribution.
+   //
+   using namespace std;
+   using namespace boost::math;
+
+   // Print out general info:
+   cout <<
+      "___________________________________________\n"
+      "2-Sided Confidence Limits For Success Ratio\n"
+      "___________________________________________\n\n";
+   cout << setprecision(7);
+   cout << setw(40) << left << "Number of Observations" << "=  " << trials << "\n";
+   cout << setw(40) << left << "Number of successes" << "=  " << successes << "\n";
+   cout << setw(40) << left << "Sample frequency of occurrence" << "=  " << double(successes) / trials << "\n";
+
+

+ The procedure now defines a table of significance levels: these are + the probabilities that the true occurrence frequency lies outside the + calculated interval: +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+
+

+ Some pretty printing of the table header follows: +

+
+cout << "\n\n"
+        "_______________________________________________________________________\n"
+        "Confidence        Lower CP       Upper CP       Lower JP       Upper JP\n"
+        " Value (%)        Limit          Limit          Limit          Limit\n"
+        "_______________________________________________________________________\n";
+
+

+ And now for the important part - the intervals themselves - for each + value of alpha, we call find_lower_bound_on_p + and find_lower_upper_on_p + to obtain lower and upper bounds respectively. Note that since we are + calculating a two-sided interval, we must divide the value of alpha + in two. +

+

+ Please note that calculating two separate single sided bounds, + each with risk level αis not the same thing as calculating a two sided + interval. Had we calculate two single-sided intervals each with a risk + that the true value is outside the interval of α, then: +

+
  • + The risk that it is less than the lower bound is α. +
+

+ and +

+
  • + The risk that it is greater than the upper bound is also α. +
+

+ So the risk it is outside upper or lower bound, + is twice alpha, and the probability + that it is inside the bounds is therefore not nearly as high as one + might have thought. This is why α/2 must be used in the calculations + below. +

+

+ In contrast, had we been calculating a single-sided interval, for example: + "Calculate a lower bound so that we are P% sure that + the true occurrence frequency is greater than some value" + then we would not have divided by + two. +

+

+ Finally note that binomial_distribution + provides a choice of two methods for the calculation, we print out + the results from both methods in this example: +

+
+   for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+   {
+      // Confidence value:
+      cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
+      // Calculate Clopper Pearson bounds:
+      double l = binomial_distribution<>::find_lower_bound_on_p(
+                     trials, successes, alpha[i]/2);
+      double u = binomial_distribution<>::find_upper_bound_on_p(
+                     trials, successes, alpha[i]/2);
+      // Print Clopper Pearson Limits:
+      cout << fixed << setprecision(5) << setw(15) << right << l;
+      cout << fixed << setprecision(5) << setw(15) << right << u;
+      // Calculate Jeffreys Prior Bounds:
+      l = binomial_distribution<>::find_lower_bound_on_p(
+            trials, successes, alpha[i]/2, 
+            binomial_distribution<>::jeffreys_prior_interval);
+      u = binomial_distribution<>::find_upper_bound_on_p(
+            trials, successes, alpha[i]/2, 
+            binomial_distribution<>::jeffreys_prior_interval);
+      // Print Jeffreys Prior Limits:
+      cout << fixed << setprecision(5) << setw(15) << right << l;
+      cout << fixed << setprecision(5) << setw(15) << right << u << std::endl;
+   }
+   cout << endl;
+}
+
+

+ And that's all there is to it. Let's see some sample output for a 2 + in 10 success ratio, first for 20 trials: +

+
___________________________________________
+2-Sided Confidence Limits For Success Ratio
+___________________________________________
+
+Number of Observations                  =  20
+Number of successes                     =  4
+Sample frequency of occurrence          =  0.2
+
+
+_______________________________________________________________________
+Confidence        Lower CP       Upper CP       Lower JP       Upper JP
+ Value (%)        Limit          Limit          Limit          Limit
+_______________________________________________________________________
+    50.000        0.12840        0.29588        0.14974        0.26916
+    75.000        0.09775        0.34633        0.11653        0.31861
+    90.000        0.07135        0.40103        0.08734        0.37274
+    95.000        0.05733        0.43661        0.07152        0.40823
+    99.000        0.03576        0.50661        0.04655        0.47859
+    99.900        0.01905        0.58632        0.02634        0.55960
+    99.990        0.01042        0.64997        0.01530        0.62495
+    99.999        0.00577        0.70216        0.00901        0.67897
+
+

+ As you can see, even at the 95% confidence level the bounds are really + quite wide (this example is chosen to be easily compared to the one + in the NIST/SEMATECH + e-Handbook of Statistical Methods. here). + Note also that the Clopper-Pearson calculation method (CP above) produces + quite noticeably more pessimistic estimates than the Jeffreys Prior + method (JP above). +

+

+ Compare that with the program output for 2000 trials: +

+
___________________________________________
+2-Sided Confidence Limits For Success Ratio
+___________________________________________
+
+Number of Observations                  =  2000
+Number of successes                     =  400
+Sample frequency of occurrence          =  0.2000000
+
+
+_______________________________________________________________________
+Confidence        Lower CP       Upper CP       Lower JP       Upper JP
+ Value (%)        Limit          Limit          Limit          Limit
+_______________________________________________________________________
+    50.000        0.19382        0.20638        0.19406        0.20613
+    75.000        0.18965        0.21072        0.18990        0.21047
+    90.000        0.18537        0.21528        0.18561        0.21503
+    95.000        0.18267        0.21821        0.18291        0.21796
+    99.000        0.17745        0.22400        0.17769        0.22374
+    99.900        0.17150        0.23079        0.17173        0.23053
+    99.990        0.16658        0.23657        0.16681        0.23631
+    99.999        0.16233        0.24169        0.16256        0.24143
+
+

+ Now even when the confidence level is very high, the limits are really + quite close to the experimentally calculated value of 0.2. Furthermore + the difference between the two calculation methods is now really quite + small. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html new file mode 100644 index 000000000..4050311a0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binom_size_eg.html @@ -0,0 +1,161 @@ + + + +Estimating Sample Sizes for a Binomial Distribution. + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine you have a critical component that you know will fail in 1 + in N "uses" (for some suitable definition of "use"). + You may want to schedule routine replacement of the component so that + its chance of failure between routine replacements is less than P%. + If the failures follow a binomial distribution (each time the component + is "used" it either fails or does not) then the static member + function binomial_distibution<>::find_maximum_number_of_trials + can be used to estimate the maximum number of "uses" of that + component for some acceptable risk level alpha. +

+

+ The example program binomial_sample_sizes.cpp + demonstrates its usage. It centres on a routine that prints out a table + of maximum sample sizes for various probability thresholds: +

+
+void find_max_sample_size(
+   double p,              // success ratio.
+   unsigned successes)    // Total number of observed successes permitted.
+{
+
+

+ The routine then declares a table of probability thresholds: these + are the maximum acceptable probability that successes + or fewer events will be observed. In our example, successes + will be always zero, since we want no component failures, but in other + situations non-zero values may well make sense. +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+
+

+ Much of the rest of the program is pretty-printing, the important part + is in the calculation of maximum number of permitted trials for each + value of alpha: +

+
+for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+{
+   // Confidence value:
+   cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
+   // calculate trials:
+   double t = binomial::find_maximum_number_of_trials(
+                  successes, p, alpha[i]);
+   t = floor(t);
+   // Print Trials:
+   cout << fixed << setprecision(5) << setw(15) << right << t << endl;
+}
+
+

+ Note that since we're calculating the maximum number of trials permitted, + we'll err on the safe side and take the floor of the result. Had we + been calculating the minimum number of trials + required to observe a certain number of successes + using find_minimum_number_of_trials + we would have taken the ceiling instead. +

+

+ We'll finish off by looking at some sample output, firstly for a 1 + in 1000 chance of component failure with each use: +

+
________________________
+Maximum Number of Trials
+________________________
+
+Success ratio                           =  0.001
+Maximum Number of "successes" permitted =  0
+
+
+____________________________
+Confidence        Max Number
+ Value (%)        Of Trials
+____________________________
+    50.000            692
+    75.000            287
+    90.000            105
+    95.000             51
+    99.000             10
+    99.900              0
+    99.990              0
+    99.999              0
+
+

+ So 51 "uses" of the component would yield a 95% chance that + no component failures would be observed. +

+

+ Compare that with a 1 in 1 million chance of component failure: +

+
________________________
+Maximum Number of Trials
+________________________
+
+Success ratio                           =  0.0000010
+Maximum Number of "successes" permitted =  0
+
+
+____________________________
+Confidence        Max Number
+ Value (%)        Of Trials
+____________________________
+    50.000         693146
+    75.000         287681
+    90.000         105360
+    95.000          51293
+    99.000          10050
+    99.900           1000
+    99.990            100
+    99.999             10
+
+

+ In this case, even 1000 uses of the component would still yield a less + than 1 in 1000 chance of observing a component failure (i.e. a 99.9% + chance of no failure). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html new file mode 100644 index 000000000..6ddc49d7d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_coinflip_example.html @@ -0,0 +1,420 @@ + + + +Binomial Coin-Flipping Example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ An example of a Bernoulli + process is coin flipping. A variable in such a sequence may + be called a Bernoulli variable. +

+

+

+

+ This example shows using the Binomial distribution to predict the + probability of heads and tails when throwing a coin. +

+

+

+

+ The number of correct answers (say heads), X, is distributed as a + binomial random variable with binomial distribution parameters number + of trials (flips) n = 10 and probability (success_fraction) of getting + a head p = 0.5 (a 'fair' coin). +

+

+

+

+ (Our coin is assumed fair, but we could easily change the success_fraction + parameter p from 0.5 to some other value to simulate an unfair coin, + say 0.6 for one with chewing gum on the tail, so it is more likely + to fall tails down and heads up). +

+

+

+

+ First we need some includes and using statements to be able to use + the binomial distribution, some std input and output, and get started: +

+

+

+

+ +

+
+#include <boost/math/distributions/binomial.hpp>
+  using boost::math::binomial;
+
+#include <iostream>
+  using std::cout;  using std::endl;  using std::left;
+#include <iomanip>
+  using std::setw;
+
+int main()
+{
+  cout << "Using Binomial distribution to predict how many heads and tails." << endl;
+  try
+  {
+

+

+

+

+

+ See note with the catch block + about why a try and catch block is always a good idea. +

+

+

+

+ First, construct a binomial distribution with parameters success_fraction + 1/2, and how many flips. +

+

+

+

+ +

+
+const double success_fraction = 0.5; // = 50% = 1/2 for a 'fair' coin.
+int flips = 10;
+binomial flip(flips, success_fraction);
+
+cout.precision(4);
+

+

+

+

+

+ Then some examples of using Binomial moments (and echoing the parameters). +

+

+

+

+ +

+
+cout << "From " << flips << " one can expect to get on average "
+  << mean(flip) << " heads (or tails)." << endl;
+cout << "Mode is " << mode(flip) << endl;
+cout << "Standard deviation is " << standard_deviation(flip) << endl;
+cout << "So about 2/3 will lie within 1 standard deviation and get between "
+  <<  ceil(mean(flip) - standard_deviation(flip))  << " and "
+  << floor(mean(flip) + standard_deviation(flip)) << " correct." << endl;
+cout << "Skewness is " << skewness(flip) << endl;
+// Skewness of binomial distributions is only zero (symmetrical)
+// if success_fraction is exactly one half,
+// for example, when flipping 'fair' coins.
+cout << "Skewness if success_fraction is " << flip.success_fraction()
+  << " is " << skewness(flip) << endl << endl; // Expect zero for a 'fair' coin.
+

+

+

+

+

+ Now we show a variety of predictions on the probability of heads: +

+

+

+

+ +

+
+cout << "For " << flip.trials() << " coin flips: " << endl;
+cout << "Probability of getting no heads is " << pdf(flip, 0) << endl;
+cout << "Probability of getting at least one head is " << 1. - pdf(flip, 0) << endl;
+

+

+

+

+

+ When we want to calculate the probability for a range or values we + can sum the PDF's: +

+

+

+

+ +

+
+cout << "Probability of getting 0 or 1 heads is "
+  << pdf(flip, 0) + pdf(flip, 1) << endl; // sum of exactly == probabilities
+

+

+

+

+

+ Or we can use the cdf. +

+

+

+

+ +

+
+cout << "Probability of getting 0 or 1 (<= 1) heads is " << cdf(flip, 1) << endl;
+cout << "Probability of getting 9 or 10 heads is " << pdf(flip, 9) + pdf(flip, 10) << endl;
+

+

+

+

+

+ Note that using +

+

+

+

+ +

+
+cout << "Probability of getting 9 or 10 heads is " << 1. - cdf(flip, 8) << endl;
+

+

+

+

+

+ is less accurate than using the complement +

+

+

+

+ +

+
+cout << "Probability of getting 9 or 10 heads is " << cdf(complement(flip, 8)) << endl;
+

+

+

+

+

+ Since the subtraction may involve cancellation + error, where as cdf(complement(flip, 8)) does not use such a subtraction + internally, and so does not exhibit the problem. +

+

+

+

+ To get the probability for a range of heads, we can either add the + pdfs for each number of heads +

+

+

+

+ +

+
+cout << "Probability of between 4 and 6 heads (4 or 5 or 6) is "
+  //  P(X == 4) + P(X == 5) + P(X == 6)
+  << pdf(flip, 4) + pdf(flip, 5) + pdf(flip, 6) << endl;
+

+

+

+

+

+ But this is probably less efficient than using the cdf +

+

+

+

+ +

+
+cout << "Probability of between 4 and 6 heads (4 or 5 or 6) is "
+  // P(X <= 6) - P(X <= 3) == P(X < 4)
+  << cdf(flip, 6) - cdf(flip, 3) << endl;
+

+

+

+

+

+ Certainly for a bigger range like, 3 to 7 +

+

+

+

+ +

+
+cout << "Probability of between 3 and 7 heads (3, 4, 5, 6 or 7) is "
+  // P(X <= 7) - P(X <= 2) == P(X < 3)
+  << cdf(flip, 7) - cdf(flip, 2) << endl;
+cout << endl;
+

+

+

+

+

+ Finally, print two tables of probability for the exactly + and at least a number of heads. +

+

+

+

+ +

+
+// Print a table of probability for the exactly a number of heads.
+cout << "Probability of getting exactly (==) heads" << endl;
+for (int successes = 0; successes <= flips; successes++)
+{ // Say success means getting a head (or equally success means getting a tail).
+  double probability = pdf(flip, successes);
+  cout << left << setw(2) << successes << "     " << setw(10)
+    << probability << " or 1 in " << 1. / probability
+    << ", or " << probability * 100. << "%" << endl;
+} // for i
+cout << endl;
+
+// Tabulate the probability of getting between zero heads and 0 upto 10 heads.
+cout << "Probability of getting upto (<=) heads" << endl;
+for (int successes = 0; successes <= flips; successes++)
+{ // Say success means getting a head
+  // (equally success could mean getting a tail).
+  double probability = cdf(flip, successes); // P(X <= heads)
+  cout << setw(2) << successes << "        " << setw(10) << left
+    << probability << " or 1 in " << 1. / probability << ", or "
+    << probability * 100. << "%"<< endl;
+} // for i
+

+

+

+

+

+ The last (0 to 10 heads) must, of course, be 100% probability. +

+

+

+

+ +

+
+}
+catch(const std::exception& e)
+{
+  //
+

+

+

+ +

+

+ It is always essential to include try & catch blocks because + default policies are to throw exceptions on arguments that are out + of domain or cause errors like numeric-overflow. +

+

+

+

+ Lacking try & catch blocks, the program will abort, whereas the + message below from the thrown exception will give some helpful clues + as to the cause of the problem. +

+

+

+

+ +

+
+  std::cout <<
+    "\n""Message from thrown exception was:\n   " << e.what() << std::endl;
+}
+
+

+

+

+

+

+ See binomial_coinflip_example.cpp + for full source code, the program output looks like this: +

+

+ +

+
Using Binomial distribution to predict how many heads and tails.
+From 10 one can expect to get on average 5 heads (or tails).
+Mode is 5
+Standard deviation is 1.581
+So about 2/3 will lie within 1 standard deviation and get between 4 and 6 correct.
+Skewness is 0
+Skewness if success_fraction is 0.5 is 0
+
+For 10 coin flips:
+Probability of getting no heads is 0.0009766
+Probability of getting at least one head is 0.999
+Probability of getting 0 or 1 heads is 0.01074
+Probability of getting 0 or 1 (<= 1) heads is 0.01074
+Probability of getting 9 or 10 heads is 0.01074
+Probability of getting 9 or 10 heads is 0.01074
+Probability of getting 9 or 10 heads is 0.01074
+Probability of between 4 and 6 heads (4 or 5 or 6) is 0.6562
+Probability of between 4 and 6 heads (4 or 5 or 6) is 0.6563
+Probability of between 3 and 7 heads (3, 4, 5, 6 or 7) is 0.8906
+
+Probability of getting exactly (=) heads
+0      0.0009766  or 1 in 1024, or 0.09766%
+1      0.009766   or 1 in 102.4, or 0.9766%
+2      0.04395    or 1 in 22.76, or 4.395%
+3      0.1172     or 1 in 8.533, or 11.72%
+4      0.2051     or 1 in 4.876, or 20.51%
+5      0.2461     or 1 in 4.063, or 24.61%
+6      0.2051     or 1 in 4.876, or 20.51%
+7      0.1172     or 1 in 8.533, or 11.72%
+8      0.04395    or 1 in 22.76, or 4.395%
+9      0.009766   or 1 in 102.4, or 0.9766%
+10     0.0009766  or 1 in 1024, or 0.09766%
+
+Probability of getting upto (<) heads
+0         0.0009766  or 1 in 1024, or 0.09766%
+1         0.01074    or 1 in 93.09, or 1.074%
+2         0.05469    or 1 in 18.29, or 5.469%
+3         0.1719     or 1 in 5.818, or 17.19%
+4         0.377      or 1 in 2.653, or 37.7%
+5         0.623      or 1 in 1.605, or 62.3%
+6         0.8281     or 1 in 1.208, or 82.81%
+7         0.9453     or 1 in 1.058, or 94.53%
+8         0.9893     or 1 in 1.011, or 98.93%
+9         0.999      or 1 in 1.001, or 99.9%
+10        1          or 1 in 1, or 100%
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html new file mode 100644 index 000000000..c61ed99ef --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/binom_eg/binomial_quiz_example.html @@ -0,0 +1,770 @@ + + + +Binomial Quiz Example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ A multiple choice test has four possible answers to each of 16 questions. + A student guesses the answer to each question, so the probability + of getting a correct answer on any given question is one in four, + a quarter, 1/4, 25% or fraction 0.25. The conditions of the binomial + experiment are assumed to be met: n = 16 questions constitute the + trials; each question results in one of two possible outcomes (correct + or incorrect); the probability of being correct is 0.25 and is constant + if no knowledge about the subject is assumed; the questions are answered + independently if the student's answer to a question in no way influences + his/her answer to another question. +

+

+

+

+ First, we need to be able to use the binomial distribution constructor + (and some std input/output, of course). +

+

+

+

+ +

+
+#include <boost/math/distributions/binomial.hpp>
+  using boost::math::binomial;
+
+#include <iostream>
+  using std::cout; using std::endl;
+  using std::ios; using std::flush; using std::left; using std::right; using std::fixed;
+#include <iomanip>
+  using std::setw; using std::setprecision;
+
+

+

+

+

+

+ The number of correct answers, X, is distributed as a binomial random + variable with binomial distribution parameters: questions n = 16 + and success fraction probability p = 0.25. So we construct a binomial + distribution: +

+

+

+

+ +

+
+int questions = 16; // All the questions in the quiz.
+int answers = 4; // Possible answers to each question.
+double success_fraction = (double)answers / (double)questions; // If a random guess.
+// Caution:  = answers / questions would be zero (because they are integers)!
+binomial quiz(questions, success_fraction);
+

+

+

+

+

+ and display the distribution parameters we used thus: +

+

+

+

+ +

+
+cout << "In a quiz with " << quiz.trials()
+  << " questions and with a probability of guessing right of "
+  << quiz.success_fraction() * 100 << " %" 
+  << " or 1 in " << static_cast<int>(1. / quiz.success_fraction()) << endl;
+

+

+

+

+

+ Show a few probabilities of just guessing: +

+

+

+

+ +

+
+cout << "Probability of getting none right is " << pdf(quiz, 0) << endl; // 0.010023
+cout << "Probability of getting exactly one right is " << pdf(quiz, 1) << endl;
+cout << "Probability of getting exactly two right is " << pdf(quiz, 2) << endl;
+int pass_score = 11;
+cout << "Probability of getting exactly " << pass_score << " answers right by chance is " 
+  << pdf(quiz, questions) << endl;
+

+

+

+ +

+
Probability of getting none right is 0.0100226
+Probability of getting exactly one right is 0.0534538
+Probability of getting exactly two right is 0.133635
+Probability of getting exactly 11 answers right by chance is 2.32831e-010
+
+

+

+

+ These don't give any encouragement to guessers! +

+

+

+

+ We can tabulate the 'getting exactly right' ( == ) probabilities + thus: +

+

+

+

+ +

+
+cout << "\n" "Guessed Probability" << right << endl;
+for (int successes = 0; successes <= questions; successes++)
+{
+  double probability = pdf(quiz, successes);
+  cout << setw(2) << successes << "      " << probability << endl;
+}
+cout << endl;
+

+

+

+ +

+
Guessed Probability
+ 0      0.0100226
+ 1      0.0534538
+ 2      0.133635
+ 3      0.207876
+ 4      0.225199
+ 5      0.180159
+ 6      0.110097
+ 7      0.0524273
+ 8      0.0196602
+ 9      0.00582526
+10      0.00135923
+11      0.000247132
+12      3.43239e-005
+13      3.5204e-006
+14      2.51457e-007
+15      1.11759e-008
+16      2.32831e-010
+
+

+

+

+ Then we can add the probabilities of some 'exactly right' like this: +

+

+

+

+ +

+
+cout << "Probability of getting none or one right is " << pdf(quiz, 0) + pdf(quiz, 1) << endl;
+

+

+

+ +

+
Probability of getting none or one right is 0.0634764
+
+

+

+

+ But if more than a couple of scores are involved, it is more convenient + (and may be more accurate) to use the Cumulative Distribution Function + (cdf) instead: +

+

+

+

+ +

+
+cout << "Probability of getting none or one right is " << cdf(quiz, 1) << endl;
+

+

+

+ +

+
Probability of getting none or one right is 0.0634764
+
+

+

+

+ Since the cdf is inclusive, we can get the probability of getting + up to 10 right ( <= ) +

+

+

+

+ +

+
+cout << "Probability of getting <= 10 right (to fail) is " << cdf(quiz, 10) << endl;
+

+

+

+ +

+
Probability of getting <= 10 right (to fail) is 0.999715
+
+

+

+

+ To get the probability of getting 11 or more right (to pass), it + is tempting to use +

+
+1 - cdf(quiz, 10)
+

+ to get the probability of > 10 +

+

+

+

+ +

+
+cout << "Probability of getting > 10 right (to pass) is " << 1 - cdf(quiz, 10) << endl;
+

+

+

+ +

+
Probability of getting > 10 right (to pass) is 0.000285239
+
+

+

+

+ But this should be resisted in favor of using the complement function. + Why complements? +

+

+

+

+ +

+
+cout << "Probability of getting > 10 right (to pass) is " << cdf(complement(quiz, 10)) << endl;
+

+

+

+ +

+
Probability of getting > 10 right (to pass) is 0.000285239
+
+

+

+

+ And we can check that these two, <= 10 and > 10, add up to + unity. +

+

+

+

+ +

+
+BOOST_ASSERT((cdf(quiz, 10) + cdf(complement(quiz, 10))) == 1.);
+

+

+

+

+

+ If we want a < rather than a <= test, because the CDF is inclusive, + we must subtract one from the score. +

+

+

+

+ +

+
+cout << "Probability of getting less than " << pass_score
+  << " (< " << pass_score << ") answers right by guessing is "
+  << cdf(quiz, pass_score -1) << endl;
+

+

+

+ +

+
Probability of getting less than 11 (< 11) answers right by guessing is 0.999715
+
+

+

+

+ and similarly to get a >= rather than a > test we also need + to subtract one from the score (and can again check the sum is unity). + This is because if the cdf is inclusive, then + its complement must be exclusive otherwise there + would be one possible outcome counted twice! +

+

+

+

+ +

+
+cout << "Probability of getting at least " << pass_score 
+  << "(>= " << pass_score << ") answers right by guessing is "
+  << cdf(complement(quiz, pass_score-1))
+  << ", only 1 in " << 1/cdf(complement(quiz, pass_score-1)) << endl;
+
+BOOST_ASSERT((cdf(quiz, pass_score -1) + cdf(complement(quiz, pass_score-1))) == 1);
+

+

+

+ +

+
Probability of getting at least 11 (>= 11) answers right by guessing is 0.000285239, only 1 in 3505.83
+
+

+

+

+ Finally we can tabulate some probabilities: +

+

+

+

+ +

+
+cout << "\n" "At most (<=)""\n""Guessed OK   Probability" << right << endl;
+for (int score = 0; score <= questions; score++)
+{
+  cout << setw(2) << score << "           " << setprecision(10)
+    << cdf(quiz, score) << endl;
+}
+cout << endl;
+

+

+

+ +

+
At most (<=)
+Guessed OK   Probability
+ 0           0.01002259576
+ 1           0.0634764398
+ 2           0.1971110499
+ 3           0.4049871101
+ 4           0.6301861752
+ 5           0.8103454274
+ 6           0.9204427481
+ 7           0.9728700437
+ 8           0.9925302796
+ 9           0.9983555346
+10           0.9997147608
+11           0.9999618928
+12           0.9999962167
+13           0.9999997371
+14           0.9999999886
+15           0.9999999998
+16           1
+
+

+

+

+ +

+
+cout << "\n" "At least (>)""\n""Guessed OK   Probability" << right << endl;
+for (int score = 0; score <= questions; score++)
+{
+  cout << setw(2) << score << "           "  << setprecision(10)
+    << cdf(complement(quiz, score)) << endl;
+}
+

+

+

+ +

+
At least (>)
+Guessed OK   Probability
+ 0           0.9899774042
+ 1           0.9365235602
+ 2           0.8028889501
+ 3           0.5950128899
+ 4           0.3698138248
+ 5           0.1896545726
+ 6           0.07955725188
+ 7           0.02712995629
+ 8           0.00746972044
+ 9           0.001644465374
+10           0.0002852391917
+11           3.810715862e-005
+12           3.783265129e-006
+13           2.628657967e-007
+14           1.140870154e-008
+15           2.328306437e-010
+16           0
+
+

+

+

+ We now consider the probabilities of ranges + of correct guesses. +

+

+

+

+ First, calculate the probability of getting a range of guesses right, + by adding the exact probabilities of each from low ... high. +

+

+

+

+ +

+
+int low = 3; // Getting at least 3 right.
+int high = 5; // Getting as most 5 right.
+double sum = 0.;
+for (int i = low; i <= high; i++)
+{
+  sum += pdf(quiz, i);
+}
+cout.precision(4);
+cout << "Probability of getting between "
+  << low << " and " << high << " answers right by guessing is "
+  << sum  << endl; // 0.61323
+

+

+

+ +

+
Probability of getting between 3 and 5 answers right by guessing is 0.6132
+
+

+

+

+ Or, usually better, we can use the difference of cdfs instead: +

+

+

+

+ +

+
+cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "
+  <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 0.61323
+

+

+

+ +

+
Probability of getting between 3 and 5 answers right by guessing is 0.6132
+
+

+

+

+ And we can also try a few more combinations of high and low choices: +

+

+

+

+ +

+
+low = 1; high = 6; 
+cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "
+  <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 1 and 6 P= 0.91042
+low = 1; high = 8; 
+cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "
+  <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 1 <= x 8 P = 0.9825
+low = 4; high = 4; 
+cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "
+  <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 4 <= x 4 P = 0.22520
+

+

+

+ +

+
Probability of getting between 1 and 6 answers right by guessing is 0.9104
+Probability of getting between 1 and 8 answers right by guessing is 0.9825
+Probability of getting between 4 and 4 answers right by guessing is 0.2252
+
+

+ +

+
+ + Using + Binomial distribution moments +
+

+

+

+ Using moments of the distribution, we can say more about the spread + of results from guessing. +

+

+

+

+ +

+
+cout << "By guessing, on average, one can expect to get " << mean(quiz) << " correct answers." << endl;
+cout << "Standard deviation is " << standard_deviation(quiz) << endl;
+cout << "So about 2/3 will lie within 1 standard deviation and get between "
+  <<  ceil(mean(quiz) - standard_deviation(quiz))  << " and "
+  << floor(mean(quiz) + standard_deviation(quiz)) << " correct." << endl; 
+cout << "Mode (the most frequent) is " << mode(quiz) << endl;
+cout << "Skewness is " << skewness(quiz) << endl;
+

+

+

+ +

+
By guessing, on average, one can expect to get 4 correct answers.
+Standard deviation is 1.732
+So about 2/3 will lie within 1 standard deviation and get between 3 and 5 correct.
+Mode (the most frequent) is 4
+Skewness is 0.2887
+
+

+ +

+
+ + Quantiles +
+

+

+

+ The quantiles (percentiles or percentage points) for a few probability + levels: +

+

+

+

+ +

+
+cout << "Quartiles " << quantile(quiz, 0.25) << " to "
+  << quantile(complement(quiz, 0.25)) << endl; // Quartiles 
+cout << "1 standard deviation " << quantile(quiz, 0.33) << " to " 
+  << quantile(quiz, 0.67) << endl; // 1 sd 
+cout << "Deciles " << quantile(quiz, 0.1)  << " to "
+  << quantile(complement(quiz, 0.1))<< endl; // Deciles 
+cout << "5 to 95% " << quantile(quiz, 0.05)  << " to "
+  << quantile(complement(quiz, 0.05))<< endl; // 5 to 95%
+cout << "2.5 to 97.5% " << quantile(quiz, 0.025) << " to "
+  <<  quantile(complement(quiz, 0.025)) << endl; // 2.5 to 97.5% 
+cout << "2 to 98% " << quantile(quiz, 0.02)  << " to "
+  << quantile(complement(quiz, 0.02)) << endl; //  2 to 98%
+
+cout << "If guessing then percentiles 1 to 99% will get " << quantile(quiz, 0.01) 
+  << " to " << quantile(complement(quiz, 0.01)) << " right." << endl;
+

+

+

+

+

+ Notice that these output integral values because the default policy + is integer_round_outwards. +

+

+ +

+
Quartiles 2 to 5
+1 standard deviation 2 to 5
+Deciles 1 to 6
+5 to 95% 0 to 7
+2.5 to 97.5% 0 to 8
+2 to 98% 0 to 8
+
+

+

+

+ Quantiles values are controlled by the discrete + quantile policy chosen. The default is integer_round_outwards, + so the lower quantile is rounded down, and the upper quantile is + rounded up. +

+

+

+

+ But we might believe that the real values tell us a little more - + see Understanding + Discrete Quantile Policy. +

+

+

+

+ We could control the policy for all + distributions by +

+

+ +

+
+#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real
+
+at the head of the program would make this policy apply
+
+

+

+

+ #define BOOST_MATH_DISCRETE_QUANTILE_POLICY real +

+

+ +

+
+at the head of the program would make this policy apply
+
+

+

+

+ at the head of the program would make this policy apply to this + one, and only, translation unit. +

+

+

+

+ Or we can now create a (typedef for) policy that has discrete quantiles + real (here avoiding any 'using namespaces ...' statements): +

+

+

+

+ +

+
+using boost::math::policies::policy;
+using boost::math::policies::discrete_quantile;
+using boost::math::policies::real;
+using boost::math::policies::integer_round_outwards; // Default.
+typedef boost::math::policies::policy<discrete_quantile<real> > real_quantile_policy;
+

+

+

+

+

+ Add a custom binomial distribution called +

+
+real_quantile_binomial
+

+ that uses +

+
+real_quantile_policy
+

+

+

+

+

+ +

+
+using boost::math::binomial_distribution;
+typedef binomial_distribution<double, real_quantile_policy> real_quantile_binomial;
+

+

+

+

+

+ Construct an object of this custom distribution: +

+

+

+

+ +

+
+real_quantile_binomial quiz_real(questions, success_fraction);
+

+

+

+

+

+ And use this to show some quantiles - that now have real rather than + integer values. +

+

+

+

+ +

+
+cout << "Quartiles " << quantile(quiz, 0.25) << " to "
+  << quantile(complement(quiz_real, 0.25)) << endl; // Quartiles 2 to 4.6212
+cout << "1 standard deviation " << quantile(quiz_real, 0.33) << " to " 
+  << quantile(quiz_real, 0.67) << endl; // 1 sd 2.6654 4.194
+cout << "Deciles " << quantile(quiz_real, 0.1)  << " to "
+  << quantile(complement(quiz_real, 0.1))<< endl; // Deciles 1.3487 5.7583
+cout << "5 to 95% " << quantile(quiz_real, 0.05)  << " to "
+  << quantile(complement(quiz_real, 0.05))<< endl; // 5 to 95% 0.83739 6.4559
+cout << "2.5 to 97.5% " << quantile(quiz_real, 0.025) << " to "
+  <<  quantile(complement(quiz_real, 0.025)) << endl; // 2.5 to 97.5% 0.42806 7.0688
+cout << "2 to 98% " << quantile(quiz_real, 0.02)  << " to "
+  << quantile(complement(quiz_real, 0.02)) << endl; //  2 to 98% 0.31311 7.7880
+
+cout << "If guessing, then percentiles 1 to 99% will get " << quantile(quiz_real, 0.01) 
+  << " to " << quantile(complement(quiz_real, 0.01)) << " right." << endl;
+

+

+

+ +

+
Real Quantiles
+Quartiles 2 to 4.621
+1 standard deviation 2.665 to 4.194
+Deciles 1.349 to 5.758
+5 to 95% 0.8374 to 6.456
+2.5 to 97.5% 0.4281 to 7.069
+2 to 98% 0.3131 to 7.252
+If guessing then percentiles 1 to 99% will get 0 to 7.788 right.
+
+

+

+

+ See binomial_quiz_example.cpp + for full source code and output. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html new file mode 100644 index 000000000..6f2e25e9e --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg.html @@ -0,0 +1,54 @@ + + + +Chi Squared Distribution Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html new file mode 100644 index 000000000..1067088c0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_intervals.html @@ -0,0 +1,241 @@ + + + +Confidence Intervals on the Standard Deviation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Once you have calculated the standard deviation for your data, a legitimate + question to ask is "How reliable is the calculated standard deviation?". + For this situation the Chi Squared distribution can be used to calculate + confidence intervals for the standard deviation. +

+

+ The full example code & sample output is in chi_square_std_deviation_test.cpp. +

+

+ We'll begin by defining the procedure that will calculate and print + out the confidence intervals: +

+
+void confidence_limits_on_std_deviation(
+     double Sd,    // Sample Standard Deviation
+     unsigned N)   // Sample size
+{
+
+

+ We'll begin by printing out some general information: +

+
+cout <<
+   "________________________________________________\n"
+   "2-Sided Confidence Limits For Standard Deviation\n"
+   "________________________________________________\n\n";
+cout << setprecision(7);
+cout << setw(40) << left << "Number of Observations" << "=  " << N << "\n";
+cout << setw(40) << left << "Standard Deviation" << "=  " << Sd << "\n";
+
+

+ and then define a table of significance levels for which we'll calculate + intervals: +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+
+

+ The distribution we'll need to calculate the confidence intervals is + a Chi Squared distribution, with N-1 degrees of freedom: +

+
+chi_squared dist(N - 1);
+
+

+ For each value of alpha, the formula for the confidence interval is + given by: +

+

+ +

+

+ Where is the upper critical value, and is + the lower critical value of the Chi Squared distribution. +

+

+ In code we begin by printing out a table header: +

+
+cout << "\n\n"
+        "_____________________________________________\n"
+        "Confidence          Lower          Upper\n"
+        " Value (%)          Limit          Limit\n"
+        "_____________________________________________\n";
+
+

+ and then loop over the values of alpha and calculate the intervals + for each: remember that the lower critical value is the same as the + quantile, and the upper critical value is the same as the quantile + from the complement of the probability: +

+
+for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+{
+   // Confidence value:
+   cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
+   // Calculate limits:
+   double lower_limit = sqrt((N - 1) * Sd * Sd / quantile(complement(dist, alpha[i] / 2)));
+   double upper_limit = sqrt((N - 1) * Sd * Sd / quantile(dist, alpha[i] / 2));
+   // Print Limits:
+   cout << fixed << setprecision(5) << setw(15) << right << lower_limit;
+   cout << fixed << setprecision(5) << setw(15) << right << upper_limit << endl;
+}
+cout << endl;
+
+

+ To see some example output we'll use the gear + data from the NIST/SEMATECH + e-Handbook of Statistical Methods.. The data represents measurements + of gear diameter from a manufacturing process. +

+
________________________________________________
+2-Sided Confidence Limits For Standard Deviation
+________________________________________________
+
+Number of Observations                  =  100
+Standard Deviation                      =  0.006278908
+
+
+_____________________________________________
+Confidence          Lower          Upper
+ Value (%)          Limit          Limit
+_____________________________________________
+    50.000        0.00601        0.00662
+    75.000        0.00582        0.00685
+    90.000        0.00563        0.00712
+    95.000        0.00551        0.00729
+    99.000        0.00530        0.00766
+    99.900        0.00507        0.00812
+    99.990        0.00489        0.00855
+    99.999        0.00474        0.00895
+
+

+ So at the 95% confidence level we conclude that the standard deviation + is between 0.00551 and 0.00729. +

+
+ + Confidence + intervals as a function of the number of observations +
+

+ Similarly, we can also list the confidence intervals for the standard + deviation for the common confidence levels 95%, for increasing numbers + of observations. +

+

+ The standard deviation used to compute these values is unity, so the + limits listed are multipliers for + any particular standard deviation. For example, given a standard deviation + of 0.0062789 as in the example above; for 100 observations the multiplier + is 0.8780 giving the lower confidence limit of 0.8780 * 0.006728 = + 0.00551. +

+
____________________________________________________
+Confidence level (two-sided)            =  0.0500000
+Standard Deviation                      =  1.0000000
+________________________________________
+Observations        Lower          Upper
+                    Limit          Limit
+________________________________________
+         2         0.4461        31.9102
+         3         0.5207         6.2847
+         4         0.5665         3.7285
+         5         0.5991         2.8736
+         6         0.6242         2.4526
+         7         0.6444         2.2021
+         8         0.6612         2.0353
+         9         0.6755         1.9158
+        10         0.6878         1.8256
+        15         0.7321         1.5771
+        20         0.7605         1.4606
+        30         0.7964         1.3443
+        40         0.8192         1.2840
+        50         0.8353         1.2461
+        60         0.8476         1.2197
+       100         0.8780         1.1617
+       120         0.8875         1.1454
+      1000         0.9580         1.0459
+     10000         0.9863         1.0141
+     50000         0.9938         1.0062
+    100000         0.9956         1.0044
+   1000000         0.9986         1.0014
+
+

+ With just 2 observations the limits are from 0.445 + up to to 31.9, so the standard deviation + might be about half the observed value + up to 30 times the observed value! +

+

+ Estimating a standard deviation with just a handful of values leaves + a very great uncertainty, especially the upper limit. Note especially + how far the upper limit is skewed from the most likely standard deviation. +

+

+ Even for 10 observations, normally considered a reasonable number, + the range is still from 0.69 to 1.8, about a range of 0.7 to 2, and + is still highly skewed with an upper limit twice + the median. +

+

+ When we have 1000 observations, the estimate of the standard deviation + is starting to look convincing, with a range from 0.95 to 1.05 - now + near symmetrical, but still about + or - 5%. +

+

+ Only when we have 10000 or more repeated observations can we start + to be reasonably confident (provided we are sure that other factors + like drift are not creeping in). +

+

+ For 10000 observations, the interval is 0.99 to 1.1 - finally a really + convincing + or -1% confidence. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html new file mode 100644 index 000000000..8523d0dc2 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_size.html @@ -0,0 +1,185 @@ + + + +Estimating the Required Sample Sizes for a Chi-Square Test for the Standard Deviation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Suppose we conduct a Chi Squared test for standard deviation and the + result is borderline, a legitimate question to ask is "How large + would the sample size have to be in order to produce a definitive result?" +

+

+ The class template chi_squared_distribution + has a static method find_degrees_of_freedom + that will calculate this value for some acceptable risk of type I failure + alpha, type II failure beta, + and difference from the standard deviation diff. + Please note that the method used works on variance, and not standard + deviation as is usual for the Chi Squared Test. +

+

+ The code for this example is located in chi_square_std_dev_test.cpp. +

+

+ We begin by defining a procedure to print out the sample sizes required + for various risk levels: +

+
+void chi_squared_sample_sized(
+     double diff,      // difference from variance to detect
+     double variance)  // true variance
+{
+
+

+ The procedure begins by printing out the input data: +

+
+using namespace std;
+using namespace boost::math;
+
+// Print out general info:
+cout <<
+   "_____________________________________________________________\n"
+   "Estimated sample sizes required for various confidence levels\n"
+   "_____________________________________________________________\n\n";
+cout << setprecision(5);
+cout << setw(40) << left << "True Variance" << "=  " << variance << "\n";
+cout << setw(40) << left << "Difference to detect" << "=  " << diff << "\n";
+
+

+ And defines a table of significance levels for which we'll calculate + sample sizes: +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+
+

+ For each value of alpha we can calculate two sample sizes: one where + the sample variance is less than the true value by diff + and one where it is greater than the true value by diff. + Thanks to the asymmetric nature of the Chi Squared distribution these + two values will not be the same, the difference in their calculation + differs only in the sign of diff that's passed + to find_degrees_of_freedom. + Finally in this example we'll simply things, and let risk level beta + be the same as alpha: +

+
+cout << "\n\n"
+        "_______________________________________________________________\n"
+        "Confidence       Estimated          Estimated\n"
+        " Value (%)      Sample Size        Sample Size\n"
+        "                (lower one         (upper one\n"
+        "                 sided test)        sided test)\n"
+        "_______________________________________________________________\n";
+//
+// Now print out the data for the table rows.
+//
+for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+{
+   // Confidence value:
+   cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
+   // calculate df for a lower single sided test:
+   double df = chi_squared::find_degrees_of_freedom(
+      -diff, alpha[i], alpha[i], variance);
+   // convert to sample size:
+   double size = ceil(df) + 1;
+   // Print size:
+   cout << fixed << setprecision(0) << setw(16) << right << size;
+   // calculate df for an upper single sided test:
+   df = chi_squared::find_degrees_of_freedom(
+      diff, alpha[i], alpha[i], variance);
+   // convert to sample size:
+   size = ceil(df) + 1;
+   // Print size:
+   cout << fixed << setprecision(0) << setw(16) << right << size << endl;
+}
+cout << endl;
+
+

+ For some example output, consider the silicon + wafer data from the NIST/SEMATECH + e-Handbook of Statistical Methods.. In this scenario a supplier + of 100 ohm.cm silicon wafers claims that his fabrication process can + produce wafers with sufficient consistency so that the standard deviation + of resistivity for the lot does not exceed 10 ohm.cm. A sample of N + = 10 wafers taken from the lot has a standard deviation of 13.97 ohm.cm, + and the question we ask ourselves is "How large would our sample + have to be to reliably detect this difference?". +

+

+ To use our procedure above, we have to convert the standard deviations + to variance (square them), after which the program output looks like + this: +

+
_____________________________________________________________
+Estimated sample sizes required for various confidence levels
+_____________________________________________________________
+
+True Variance                           =  100.00000
+Difference to detect                    =  95.16090
+
+
+_______________________________________________________________
+Confidence       Estimated          Estimated
+ Value (%)      Sample Size        Sample Size
+                (lower one         (upper one
+                 sided test)        sided test)
+_______________________________________________________________
+    50.000               2               2
+    75.000               2              10
+    90.000               4              32
+    95.000               5              51
+    99.000               7              99
+    99.900              11             174
+    99.990              15             251
+    99.999              20             330
+
+

+ In this case we are interested in a upper single sided test. So for + example, if the maximum acceptable risk of falsely rejecting the null-hypothesis + is 0.05 (Type I error), and the maximum acceptable risk of failing + to reject the null-hypothesis is also 0.05 (Type II error), we estimate + that we would need a sample size of 51. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html new file mode 100644 index 000000000..9afdb9cea --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/cs_eg/chi_sq_test.html @@ -0,0 +1,301 @@ + + + +Chi-Square Test for the Standard Deviation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ We use this test to determine whether the standard deviation of a sample + differs from a specified value. Typically this occurs in process change + situations where we wish to compare the standard deviation of a new + process to an established one. +

+

+ The code for this example is contained in chi_square_std_dev_test.cpp, + and we'll begin by defining the procedure that will print out the test + statistics: +

+
+void chi_squared_test(
+    double Sd,     // Sample std deviation
+    double D,      // True std deviation
+    unsigned N,    // Sample size
+    double alpha)  // Significance level
+{
+
+

+ The procedure begins by printing a summary of the input data: +

+
+using namespace std;
+using namespace boost::math;
+
+// Print header:
+cout <<
+   "______________________________________________\n"
+   "Chi Squared test for sample standard deviation\n"
+   "______________________________________________\n\n";
+cout << setprecision(5);
+cout << setw(55) << left << "Number of Observations" << "=  " << N << "\n";
+cout << setw(55) << left << "Sample Standard Deviation" << "=  " << Sd << "\n";
+cout << setw(55) << left << "Expected True Standard Deviation" << "=  " << D << "\n\n";
+
+

+ The test statistic (T) is simply the ratio of the sample and "true" + standard deviations squared, multiplied by the number of degrees of + freedom (the sample size less one): +

+
+double t_stat = (N - 1) * (Sd / D) * (Sd / D);
+cout << setw(55) << left << "Test Statistic" << "=  " << t_stat << "\n";
+
+

+ The distribution we need to use, is a Chi Squared distribution with + N-1 degrees of freedom: +

+
+chi_squared dist(N - 1);
+
+

+ The various hypothesis that can be tested are summarised in the following + table: +

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

+ Hypothesis +

+
+

+ Test +

+
+

+ The null-hypothesis: there is no difference in standard deviation + from the specified value +

+
+

+ Reject if T < χ2(1-alpha/2; N-1) or T > χ2(alpha/2; N-1) +

+
+

+ The alternative hypothesis: there is a difference in standard + deviation from the specified value +

+
+

+ Reject if χ2(1-alpha/2; N-1) >= T >= χ2(alpha/2; N-1) +

+
+

+ The alternative hypothesis: the standard deviation is less + than the specified value +

+
+

+ Reject if χ2(1-alpha; N-1) <= T +

+
+

+ The alternative hypothesis: the standard deviation is greater + than the specified value +

+
+

+ Reject if χ2(alpha; N-1) >= T +

+
+

+ Where χ2(alpha; N-1) is the upper critical value of the Chi Squared distribution, + and χ2(1-alpha; N-1) is the lower critical value. +

+

+ Recall that the lower critical value is the same as the quantile, and + the upper critical value is the same as the quantile from the complement + of the probability, that gives us the following code to calculate the + critical values: +

+
+double ucv = quantile(complement(dist, alpha));
+double ucv2 = quantile(complement(dist, alpha / 2));
+double lcv = quantile(dist, alpha);
+double lcv2 = quantile(dist, alpha / 2);
+cout << setw(55) << left << "Upper Critical Value at alpha: " << "=  "
+   << setprecision(3) << scientific << ucv << "\n";
+cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "=  "
+   << setprecision(3) << scientific << ucv2 << "\n";
+cout << setw(55) << left << "Lower Critical Value at alpha: " << "=  "
+   << setprecision(3) << scientific << lcv << "\n";
+cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "=  "
+   << setprecision(3) << scientific << lcv2 << "\n\n";
+
+

+ Now that we have the critical values, we can compare these to our test + statistic, and print out the result of each hypothesis and test: +

+
+cout << setw(55) << left <<
+   "Results for Alternative Hypothesis and alpha" << "=  "
+   << setprecision(4) << fixed << alpha << "\n\n";
+cout << "Alternative Hypothesis              Conclusion\n";
+
+cout << "Standard Deviation != " << setprecision(3) << fixed << D << "            ";
+if((ucv2 < t_stat) || (lcv2 > t_stat))
+   cout << "ACCEPTED\n";
+else
+   cout << "REJECTED\n";
+
+cout << "Standard Deviation  < " << setprecision(3) << fixed << D << "            ";
+if(lcv > t_stat)
+   cout << "ACCEPTED\n";
+else
+   cout << "REJECTED\n";
+
+cout << "Standard Deviation  > " << setprecision(3) << fixed << D << "            ";
+if(ucv < t_stat)
+   cout << "ACCEPTED\n";
+else
+   cout << "REJECTED\n";
+cout << endl << endl;
+
+

+ To see some example output we'll use the gear + data from the NIST/SEMATECH + e-Handbook of Statistical Methods.. The data represents measurements + of gear diameter from a manufacturing process. The program output is + deliberately designed to mirror the DATAPLOT output shown in the NIST + Handbook Example. +

+
______________________________________________
+Chi Squared test for sample standard deviation
+______________________________________________
+
+Number of Observations                                 =  100
+Sample Standard Deviation                              =  0.00628
+Expected True Standard Deviation                       =  0.10000
+
+Test Statistic                                         =  0.39030
+CDF of test statistic:                                 =  1.438e-099
+Upper Critical Value at alpha:                         =  1.232e+002
+Upper Critical Value at alpha/2:                       =  1.284e+002
+Lower Critical Value at alpha:                         =  7.705e+001
+Lower Critical Value at alpha/2:                       =  7.336e+001
+
+Results for Alternative Hypothesis and alpha           =  0.0500
+
+Alternative Hypothesis              Conclusion
+Standard Deviation != 0.100            ACCEPTED
+Standard Deviation  < 0.100            ACCEPTED
+Standard Deviation  > 0.100            REJECTED
+
+

+ In this case we are testing whether the sample standard deviation is + 0.1, and the null-hypothesis is rejected, so we conclude that the standard + deviation is not 0.1. +

+

+ For an alternative example, consider the silicon + wafer data again from the NIST/SEMATECH + e-Handbook of Statistical Methods.. In this scenario a supplier + of 100 ohm.cm silicon wafers claims that his fabrication process can + produce wafers with sufficient consistency so that the standard deviation + of resistivity for the lot does not exceed 10 ohm.cm. A sample of N + = 10 wafers taken from the lot has a standard deviation of 13.97 ohm.cm, + and the question we ask ourselves is "Is the suppliers claim correct?". +

+

+ The program output now looks like this: +

+
______________________________________________
+Chi Squared test for sample standard deviation
+______________________________________________
+
+Number of Observations                                 =  10
+Sample Standard Deviation                              =  13.97000
+Expected True Standard Deviation                       =  10.00000
+
+Test Statistic                                         =  17.56448
+CDF of test statistic:                                 =  9.594e-001
+Upper Critical Value at alpha:                         =  1.692e+001
+Upper Critical Value at alpha/2:                       =  1.902e+001
+Lower Critical Value at alpha:                         =  3.325e+000
+Lower Critical Value at alpha/2:                       =  2.700e+000
+
+Results for Alternative Hypothesis and alpha           =  0.0500
+
+Alternative Hypothesis              Conclusion
+Standard Deviation != 10.000            REJECTED
+Standard Deviation  < 10.000            REJECTED
+Standard Deviation  > 10.000            ACCEPTED
+
+

+ In this case, our null-hypothesis is that the standard deviation of + the sample is less than 10: this hypothesis is rejected in the analysis + above, and so we reject the manufacturers claim. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html new file mode 100644 index 000000000..705f14aaa --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/dist_construct_eg.html @@ -0,0 +1,431 @@ + + + +Distribution Construction Example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ See distribution_construction.cpp + for full source code. +

+

+

+

+ The structure of distributions is rather different from some other + statistical libraries, for example in less object-oriented language + like FORTRAN and C, that provide a few arguments to each free function. + This library provides each distribution as a template C++ class. A + distribution is constructed with a few arguments, and then member and + non-member functions are used to find values of the distribution, often + a function of a random variate. +

+

+

+

+ First we need some includes to access the negative binomial distribution + (and the binomial, beta and gamma too). +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp> // for negative_binomial_distribution
+  using boost::math::negative_binomial_distribution; // default type is double.
+  using boost::math::negative_binomial; // typedef provides default type is double.
+#include <boost/math/distributions/binomial.hpp> // for binomial_distribution.
+#include <boost/math/distributions/beta.hpp> // for beta_distribution.
+#include <boost/math/distributions/gamma.hpp> // for gamma_distribution.
+#include <boost/math/distributions/normal.hpp> // for normal_distribution.
+

+

+

+

+

+ Several examples of constructing distributions follow: +

+

+

+

+ First, a negative binomial distribution with 8 successes and a success + fraction 0.25, 25% or 1 in 4, is constructed like this: +

+

+

+

+ +

+
+boost::math::negative_binomial_distribution<double> mydist0(8., 0.25);
+

+

+

+

+

+ But this is inconveniently long, so by writing +

+

+

+

+ +

+
+using namespace boost::math;
+

+

+

+

+

+ or +

+

+

+

+ +

+
+using boost::math::negative_binomial_distribution;
+

+

+

+

+

+ we can reduce typing. +

+

+

+

+ Since the vast majority of applications use will be using double precision, + the template argument to the distribution (RealType) defaults to type + double, so we can also write: +

+

+

+

+ +

+
+negative_binomial_distribution<> mydist9(8., 0.25); // Uses default RealType = double.
+

+

+

+

+

+ But the name "negative_binomial_distribution" is still inconveniently + long, so for most distributions, a convenience typedef is provided, + for example: +

+

+ +

+
+typedef negative_binomial_distribution<double> negative_binomial; // Reserved name of type double.
+
+

+

+
+ + + + + +
[Caution]Caution

+ This convenience typedef is not provided if + a clash would occur with the name of a function: currently only "beta" + and "gamma" fall into this category. +

+

+

+

+ So, after a using statement, +

+

+

+

+ +

+
+using boost::math::negative_binomial;
+

+

+

+

+

+ we have a convenient typedef to negative_binomial_distribution<double>: +

+

+

+

+ +

+
+negative_binomial mydist(8., 0.25);
+

+

+

+

+

+ Some more examples using the convenience typedef: +

+

+

+

+ +

+
+negative_binomial mydist10(5., 0.4); // Both arguments double.
+

+

+

+

+

+ And automatic conversion takes place, so you can use integers and floats: +

+

+

+

+ +

+
+negative_binomial mydist11(5, 0.4); // Using provided typedef double, int and double arguments.
+

+

+

+

+

+ This is probably the most common usage. +

+

+

+

+ +

+
+negative_binomial mydist12(5., 0.4F); // Double and float arguments.
+negative_binomial mydist13(5, 1); // Both arguments integer.
+

+

+

+

+

+ Similarly for most other distributions like the binomial. +

+

+

+

+ +

+
+binomial mybinomial(1, 0.5); // is more concise than
+binomial_distribution<> mybinomd1(1, 0.5);
+

+

+

+

+

+ For cases when the typdef distribution name would clash with a math + special function (currently only beta and gamma) the typedef is deliberately + not provided, and the longer version of the name must be used. For + example do not use: +

+

+ +

+
+using boost::math::beta;
+beta mybetad0(1, 0.5); // Error beta is a math FUNCTION!
+
+

+

+

+ Which produces the error messages: +

+

+ +

+
error C2146: syntax error : missing ';' before identifier 'mybetad0'
+warning C4551: function call missing argument list
+error C3861: 'mybetad0': identifier not found
+
+

+

+

+ Instead you should use: +

+

+

+

+ +

+
+using boost::math::beta_distribution;
+beta_distribution<> mybetad1(1, 0.5);
+

+

+

+

+

+ or for the gamma distribution: +

+

+

+

+ +

+
+gamma_distribution<> mygammad1(1, 0.5);
+

+

+

+

+

+ We can, of course, still provide the type explicitly thus: +

+

+

+

+ +

+
+// Explicit double precision:
+negative_binomial_distribution<double>        mydist1(8., 0.25); 
+
+// Explicit float precision, double arguments are truncated to float:
+negative_binomial_distribution<float>         mydist2(8., 0.25);
+
+// Explicit float precision, integer & double arguments converted to float.
+negative_binomial_distribution<float>         mydist3(8, 0.25); 
+
+// Explicit float precision, float arguments, so no conversion:
+negative_binomial_distribution<float>         mydist4(8.F, 0.25F); 
+
+// Explicit float precision, integer arguments promoted to float.
+negative_binomial_distribution<float>         mydist5(8, 1); 
+
+// Explicit double precision:
+negative_binomial_distribution<double>        mydist6(8., 0.25); 
+
+// Explicit long double precision:
+negative_binomial_distribution<long double>   mydist7(8., 0.25);
+

+

+

+

+

+ And if you have your own RealType called MyFPType, for example NTL + RR (an arbitrary precision type), then we can write: +

+

+ +

+
+negative_binomial_distribution<MyFPType>  mydist6(8, 1); // Integer arguments -> MyFPType.
+
+

+ +

+
+ + Default + arguments to distribution constructors. +
+

+

+

+ Note that default constructor arguments are only provided for some + distributions. So if you wrongly assume a default argument you will + get an error message, for example: +

+

+ +

+
+negative_binomial_distribution<> mydist8;
+
+

+ +

+
error C2512 no appropriate default constructor available.
+

+

+

+ No default constructors are provided for the negative binomial, because + it is difficult to chose any sensible default values for this distribution. + For other distributions, like the normal distribution, it is obviously + very useful to provide 'standard' defaults for the mean and standard + deviation thus: +

+

+ +

+
+normal_distribution(RealType mean = 0, RealType sd = 1);
+
+

+

+

+ So in this case we can write: +

+

+

+

+ +

+
+  using boost::math::normal;
+  
+  normal norm1;       // Standard normal distribution.
+  normal norm2(2);    // Mean = 2, std deviation = 1.
+  normal norm3(2, 3); // Mean = 2, std deviation = 3.
+
+  return 0;
+}  // int main()
+

+

+

+

+

+ There is no useful output from this program, of course. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html new file mode 100644 index 000000000..172e08913 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/error_eg.html @@ -0,0 +1,271 @@ + + + +Error Handling Example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ See error handling + documentation for a detailed explanation of the mechanism of handling + errors, including the common "bad" arguments to distributions + and functions, and how to use Policies + to control it. +

+

+ But, by default, exceptions will be raised, + for domain errors, pole errors, numeric overflow, and internal evaluation + errors. To avoid the exceptions from getting thrown and instead get an + appropriate value returned, usually a NaN (domain errors pole errors + or internal errors), or infinity (from overflow), you need to change + the policy. +

+

+

+

+ The following example demonstrates the effect of setting the macro + BOOST_MATH_DOMAIN_ERROR_POLICY when an invalid argument is encountered. + For the purposes of this example, we'll pass a negative degrees of + freedom parameter to the student's t distribution. +

+

+

+

+ Since we know that this is a single file program we could just add: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error
+
+

+

+

+ to the top of the source file to change the default policy to one that + simply returns a NaN when a domain error occurs. Alternatively we could + use: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error
+
+

+

+

+ To ensure the ::errno + is set when a domain error occurs as well as returning a NaN. +

+

+

+

+ This is safe provided the program consists of a single translation + unit and we place the define before + any #includes. Note that should we add the define after the includes + then it will have no effect! A warning such as: +

+

+ +

+
warning C4005: 'BOOST_MATH_OVERFLOW_ERROR_POLICY' : macro redefinition
+

+

+

+ is a certain sign that it will not have the desired + effect. +

+

+

+

+ We'll begin our sample program with the needed includes: +

+

+

+

+ +

+
+// Boost
+#include <boost/math/distributions/students_t.hpp>
+   using boost::math::students_t;  // Probability of students_t(df, t).
+
+// std
+#include <iostream>
+   using std::cout;
+   using std::endl;
+
+#include <stdexcept>
+   using std::exception;
+

+

+

+

+

+ Next we'll define the program's main() to call the student's t distribution + with an invalid degrees of freedom parameter, the program is set up + to handle either an exception or a NaN: +

+

+

+

+ +

+
+int main()
+{
+   cout << "Example error handling using Student's t function. " << endl;
+   cout << "BOOST_MATH_DOMAIN_ERROR_POLICY is set to: "
+      << BOOST_STRINGIZE(BOOST_MATH_DOMAIN_ERROR_POLICY) << endl;
+
+   double degrees_of_freedom = -1; // A bad argument!
+   double t = 10;
+
+   try
+   {
+      errno = 0;
+      students_t dist(degrees_of_freedom); // exception is thrown here if enabled
+      double p = cdf(dist, t);
+      // test for error reported by other means:
+      if((boost::math::isnan)(p))
+      {
+         cout << "cdf returned a NaN!" << endl;
+         cout << "errno is set to: " << errno << endl;
+      }
+      else
+         cout << "Probability of Student's t is " << p << endl;
+   }
+   catch(const std::exception& e)
+   {
+      std::cout <<
+         "\n""Message from thrown exception was:\n   " << e.what() << std::endl;
+   }
+
+   return 0;
+} // int main()
+

+

+

+

+

+ Here's what the program output looks like with a default build (one + that does throw exceptions): +

+

+ +

+
Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: throw_on_error
+
+Message from thrown exception was:
+   Error in function boost::math::students_t_distribution<double>::students_t_distribution:
+   Degrees of freedom argument is -1, but must be > 0 !
+
+

+

+

+ Alternatively let's build with: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error
+
+

+

+

+ Now the program output is: +

+

+ +

+
Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: ignore_error
+cdf returned a NaN!
+errno is set to: 0
+
+

+

+

+ And finally let's build with: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error
+
+

+

+

+ Which gives the output: +

+

+ +

+
Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: errno_on_error
+cdf returned a NaN!
+errno is set to: 33
+
+

+

+
+ + + + + +
[Caution]Caution
+

+ If throwing of exceptions is enabled (the default) but you do not have try & catch block, then the program + will terminate with an uncaught exception and probably abort. +

+

+ Therefore to get the benefit of helpful error messages, enabling all exceptions and using try & catch is + recommended for most applications. +

+

+ However, for simplicity, the is not done for most examples. +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html new file mode 100644 index 000000000..50d025682 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/f_eg.html @@ -0,0 +1,335 @@ + + + +F Distribution Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine that you want to compare the standard deviations of two sample + to determine if they differ in any significant way, in this situation + you use the F distribution and perform an F-test. This situation commonly + occurs when conducting a process change comparison: "is a new process + more consistent that the old one?". +

+

+ In this example we'll be using the data for ceramic strength from http://www.itl.nist.gov/div898/handbook/eda/section4/eda42a1.htm. + The data for this case study were collected by Said Jahanmir of the NIST + Ceramics Division in 1996 in connection with a NIST/industry ceramics + consortium for strength optimization of ceramic strength. +

+

+ The example program is f_test.cpp, + program output has been deliberately made as similar as possible to the + DATAPLOT output in the corresponding NIST + EngineeringStatistics Handbook example. +

+

+ We'll begin by defining the procedure to conduct the test: +

+
+void f_test(
+    double sd1,     // Sample 1 std deviation
+    double sd2,     // Sample 2 std deviation
+    double N1,      // Sample 1 size
+    double N2,      // Sample 2 size
+    double alpha)  // Significance level
+{
+
+

+ The procedure begins by printing out a summary of our input data: +

+
+using namespace std;
+using namespace boost::math;
+
+// Print header:
+cout <<
+   "____________________________________\n"
+   "F test for equal standard deviations\n"
+   "____________________________________\n\n";
+cout << setprecision(5);
+cout << "Sample 1:\n";
+cout << setw(55) << left << "Number of Observations" << "=  " << N1 << "\n";
+cout << setw(55) << left << "Sample Standard Deviation" << "=  " << sd1 << "\n\n";
+cout << "Sample 2:\n";
+cout << setw(55) << left << "Number of Observations" << "=  " << N2 << "\n";
+cout << setw(55) << left << "Sample Standard Deviation" << "=  " << sd2 << "\n\n";
+
+

+ The test statistic for an F-test is simply the ratio of the square of + the two standard deviations: +

+

+ F = s12 / s22 +

+

+ where s1 is the standard deviation of the first sample and s2 +is the standard + deviation of the second sample. Or in code: +

+
+double F = (sd1 / sd2);
+F *= F;
+cout << setw(55) << left << "Test Statistic" << "=  " << F << "\n\n";
+
+

+ At this point a word of caution: the F distribution is asymmetric, so + we have to be careful how we compute the tests, the following table summarises + the options available: +

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

+ Hypothesis +

+
+

+ Test +

+
+

+ The null-hypothesis: there is no difference in standard deviations + (two sided test) +

+
+

+ Reject if F <= F(1-alpha/2; N1-1, N2-1) or F >= F(alpha/2; + N1-1, N2-1) +

+
+

+ The alternative hypothesis: there is a difference in means (two + sided test) +

+
+

+ Reject if F(1-alpha/2; N1-1, N2-1) <= F <= F(alpha/2; N1-1, + N2-1) +

+
+

+ The alternative hypothesis: Standard deviation of sample 1 is + greater than that of sample 2 +

+
+

+ Reject if F < F(alpha; N1-1, N2-1) +

+
+

+ The alternative hypothesis: Standard deviation of sample 1 is + less than that of sample 2 +

+
+

+ Reject if F > F(1-alpha; N1-1, N2-1) +

+
+

+ Where F(1-alpha; N1-1, N2-1) is the lower critical value of the F distribution + with degrees of freedom N1-1 and N2-1, and F(alpha; N1-1, N2-1) is the + upper critical value of the F distribution with degrees of freedom N1-1 + and N2-1. +

+

+ The upper and lower critical values can be computed using the quantile + function: +

+

+ F(1-alpha; N1-1, N2-1) = quantile(fisher_f(N1-1, + N2-1), alpha) +

+

+ F(alpha; N1-1, N2-1) = quantile(complement(fisher_f(N1-1, + N2-1), alpha)) +

+

+ In our example program we need both upper and lower critical values for + alpha and for alpha/2: +

+
+double ucv = quantile(complement(dist, alpha));
+double ucv2 = quantile(complement(dist, alpha / 2));
+double lcv = quantile(dist, alpha);
+double lcv2 = quantile(dist, alpha / 2);
+cout << setw(55) << left << "Upper Critical Value at alpha: " << "=  "
+   << setprecision(3) << scientific << ucv << "\n";
+cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "=  "
+   << setprecision(3) << scientific << ucv2 << "\n";
+cout << setw(55) << left << "Lower Critical Value at alpha: " << "=  "
+   << setprecision(3) << scientific << lcv << "\n";
+cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "=  "
+   << setprecision(3) << scientific << lcv2 << "\n\n";
+
+

+ The final step is to perform the comparisons given above, and print out + whether the hypothesis is rejected or not: +

+
+cout << setw(55) << left <<
+   "Results for Alternative Hypothesis and alpha" << "=  "
+   << setprecision(4) << fixed << alpha << "\n\n";
+cout << "Alternative Hypothesis                                    Conclusion\n";
+
+cout << "Standard deviations are unequal (two sided test)          ";
+if((ucv2 < F) || (lcv2 > F))
+   cout << "ACCEPTED\n";
+else
+   cout << "REJECTED\n";
+
+cout << "Standard deviation 1 is less than standard deviation 2    ";
+if(lcv > F)
+   cout << "ACCEPTED\n";
+else
+   cout << "REJECTED\n";
+
+cout << "Standard deviation 1 is greater than standard deviation 2 ";
+if(ucv < F)
+   cout << "ACCEPTED\n";
+else
+   cout << "REJECTED\n";
+cout << endl << endl;
+
+

+ Using the ceramic strength data as an example we get the following output: +

+
F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations                                 =  240
+Sample Standard Deviation                              =  65.549
+
+Sample 2:
+Number of Observations                                 =  240
+Sample Standard Deviation                              =  61.854
+
+Test Statistic                                         =  1.123
+
+CDF of test statistic:                                 =  8.148e-001
+Upper Critical Value at alpha:                         =  1.238e+000
+Upper Critical Value at alpha/2:                       =  1.289e+000
+Lower Critical Value at alpha:                         =  8.080e-001
+Lower Critical Value at alpha/2:                       =  7.756e-001
+
+Results for Alternative Hypothesis and alpha           =  0.0500
+
+Alternative Hypothesis                                    Conclusion
+Standard deviations are unequal (two sided test)          REJECTED
+Standard deviation 1 is less than standard deviation 2    REJECTED
+Standard deviation 1 is greater than standard deviation 2 REJECTED
+
+

+ In this case we are unable to reject the null-hypothesis, and must instead + reject the alternative hypothesis. +

+

+ By contrast let's see what happens when we use some different sample + data:, once again from the NIST Engineering Statistics Handbook: + A new procedure to assemble a device is introduced and tested for possible + improvement in time of assembly. The question being addressed is whether + the standard deviation of the new assembly process (sample 2) is better + (i.e., smaller) than the standard deviation for the old assembly process + (sample 1). +

+
____________________________________
+F test for equal standard deviations
+____________________________________
+
+Sample 1:
+Number of Observations                                 =  11.00000
+Sample Standard Deviation                              =  4.90820
+
+Sample 2:
+Number of Observations                                 =  9.00000
+Sample Standard Deviation                              =  2.58740
+
+Test Statistic                                         =  3.59847
+
+CDF of test statistic:                                 =  9.589e-001
+Upper Critical Value at alpha:                         =  3.347e+000
+Upper Critical Value at alpha/2:                       =  4.295e+000
+Lower Critical Value at alpha:                         =  3.256e-001
+Lower Critical Value at alpha/2:                       =  2.594e-001
+
+Results for Alternative Hypothesis and alpha           =  0.0500
+
+Alternative Hypothesis                                    Conclusion
+Standard deviations are unequal (two sided test)          REJECTED
+Standard deviation 1 is less than standard deviation 2    REJECTED
+Standard deviation 1 is greater than standard deviation 2 ACCEPTED
+
+

+ In this case we take our null hypothesis as "standard deviation + 1 is less than or equal to standard deviation 2", since this represents + the "no change" situation. So we want to compare the upper + critical value at alpha (a one sided test) with + the test statistic, and since 3.35 < 3.6 this hypothesis must be rejected. + We therefore conclude that there is a change for the better in our standard + deviation. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html new file mode 100644 index 000000000..1e0ab7e5c --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg.html @@ -0,0 +1,53 @@ + + + +Find Location and Scale Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html new file mode 100644 index 000000000..837f46238 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_location_eg.html @@ -0,0 +1,290 @@ + + + +Find Location (Mean) Example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ First we need some includes to access the normal distribution, the + algorithms to find location (and some std output of course). +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp> // for normal_distribution
+  using boost::math::normal; // typedef provides default type is double.
+#include <boost/math/distributions/cauchy.hpp> // for cauchy_distribution
+  using boost::math::cauchy; // typedef provides default type is double.
+#include <boost/math/distributions/find_location.hpp>
+  using boost::math::find_location;
+  using boost::math::complement; // Needed if you want to use the complement version.
+  using boost::math::policies::policy;
+
+#include <iostream>
+  using std::cout; using std::endl;
+#include <iomanip>
+  using std::setw; using std::setprecision;
+#include <limits>
+  using std::numeric_limits;
+
+

+

+

+

+

+ For this example, we will use the standard normal distribution, with + mean (location) zero and standard deviation (scale) unity. This is + also the default for this implementation. +

+

+

+

+ +

+
+normal N01;  // Default 'standard' normal distribution with zero mean and 
+double sd = 1.; // normal default standard deviation is 1.
+

+

+

+

+

+ Suppose we want to find a different normal distribution whose mean + is shifted so that only fraction p (here 0.001 or 0.1%) are below + a certain chosen limit (here -2, two standard deviations). +

+

+

+

+ +

+
+double z = -2.; // z to give prob p
+double p = 0.001; // only 0.1% below z
+
+cout << "Normal distribution with mean = " << N01.location()
+  << ", standard deviation " << N01.scale()
+  << ", has " << "fraction <= " << z 
+  << ", p = "  << cdf(N01, z) << endl;
+cout << "Normal distribution with mean = " << N01.location()
+  << ", standard deviation " << N01.scale()
+  << ", has " << "fraction > " << z
+  << ", p = "  << cdf(complement(N01, z)) << endl; // Note: uses complement.
+

+

+

+ +

+
Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725
+
+

+

+

+ We can now use ''find_location'' to give a new offset mean. +

+

+

+

+ +

+
+double l = find_location<normal>(z, p, sd);
+cout << "offset location (mean) = " << l << endl;
+

+

+

+

+

+ that outputs: +

+

+ +

+
offset location (mean) = 1.09023
+
+

+

+

+ showing that we need to shift the mean just over one standard deviation + from its previous value of zero. +

+

+

+

+ Then we can check that we have achieved our objective by constructing + a new distribution with the offset mean (but same standard deviation): +

+

+

+

+ +

+
+normal np001pc(l, sd); // Same standard_deviation (scale) but with mean (location) shifted.
+

+

+

+

+

+ And re-calculating the fraction below our chosen limit. +

+

+

+

+ +

+
+cout << "Normal distribution with mean = " << l 
+    << " has " << "fraction <= " << z 
+    << ", p = "  << cdf(np001pc, z) << endl;
+  cout << "Normal distribution with mean = " << l 
+    << " has " << "fraction > " << z 
+    << ", p = "  << cdf(complement(np001pc, z)) << endl;
+

+

+

+ +

+
Normal distribution with mean = 1.09023 has fraction <= -2, p = 0.001
+Normal distribution with mean = 1.09023 has fraction > -2, p = 0.999
+
+

+ +

+
+ + Controlling + Error Handling from find_location +
+

+

+

+ We can also control the policy for handling various errors. For example, + we can define a new (possibly unwise) policy to ignore domain errors + ('bad' arguments). +

+

+

+

+ Unless we are using the boost::math namespace, we will need: +

+

+

+

+ +

+
+using boost::math::policies::policy;
+using boost::math::policies::domain_error;
+using boost::math::policies::ignore_error;
+

+

+

+

+

+ Using a typedef is often convenient, especially if it is re-used, + although it is not required, as the various examples below show. +

+

+

+

+ +

+
+typedef policy<domain_error<ignore_error> > ignore_domain_policy;
+// find_location with new policy, using typedef.
+l = find_location<normal>(z, p, sd, ignore_domain_policy());
+// Default policy policy<>, needs "using boost::math::policies::policy;"
+l = find_location<normal>(z, p, sd, policy<>());
+// Default policy, fully specified.
+l = find_location<normal>(z, p, sd, boost::math::policies::policy<>());
+// A new policy, ignoring domain errors, without using a typedef.
+l = find_location<normal>(z, p, sd, policy<domain_error<ignore_error> >());
+

+

+

+

+

+ If we want to use a probability that is the complement + of our probability, we should not even think of writing find_location<normal>(z, 1 - p, sd), + but, to avoid loss of accuracy, + use the complement version. +

+

+

+

+ +

+
+z = 2.;
+double q = 0.95; // = 1 - p; // complement.
+l = find_location<normal>(complement(z, q, sd));
+
+normal np95pc(l, sd); // Same standard_deviation (scale) but with mean(location) shifted
+cout << "Normal distribution with mean = " << l << " has " 
+  << "fraction <= " << z << " = "  << cdf(np95pc, z) << endl;
+cout << "Normal distribution with mean = " << l << " has " 
+  << "fraction > " << z << " = "  << cdf(complement(np95pc, z)) << endl;
+
+

+

+

+ See find_location_example.cpp + for full source code: the program output looks like this: +

+
Example: Find location (mean).
+Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725
+offset location (mean) = 1.09023
+Normal distribution with mean = 1.09023 has fraction <= -2, p = 0.001
+Normal distribution with mean = 1.09023 has fraction > -2, p = 0.999
+Normal distribution with mean = 0.355146 has fraction <= 2 = 0.95
+Normal distribution with mean = 0.355146 has fraction > 2 = 0.05
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html new file mode 100644 index 000000000..980163d0c --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_mean_and_sd_eg.html @@ -0,0 +1,750 @@ + + + +Find mean and standard deviation example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ First we need some includes to access the normal distribution, the + algorithms to find location and scale (and some std output of course). +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp> // for normal_distribution
+  using boost::math::normal; // typedef provides default type is double.
+#include <boost/math/distributions/cauchy.hpp> // for cauchy_distribution
+  using boost::math::cauchy; // typedef provides default type is double.
+#include <boost/math/distributions/find_location.hpp>
+  using boost::math::find_location;
+#include <boost/math/distributions/find_scale.hpp>
+  using boost::math::find_scale;
+  using boost::math::complement;
+  using boost::math::policies::policy;
+
+#include <iostream>
+  using std::cout; using std::endl; using std::left; using std::showpoint; using std::noshowpoint;
+#include <iomanip>
+  using std::setw; using std::setprecision;
+#include <limits>
+  using std::numeric_limits;
+
+

+

+

+ +

+
+ + Using + find_location and find_scale to meet dispensing and measurement specifications +
+

+

+

+ Consider an example from K Krishnamoorthy, Handbook of Statistical + Distributions with Applications, ISBN 1-58488-635-8, (2006) p 126, + example 10.3.7. +

+

+

+

+ "A machine is set to pack 3 kg of ground beef per pack. Over + a long period of time it is found that the average packed was 3 kg + with a standard deviation of 0.1 kg. Assume the packing is normally + distributed." +

+

+

+

+ We start by constructing a normal distribution with the given parameters: +

+

+

+

+ +

+
+double mean = 3.; // kg
+double standard_deviation = 0.1; // kg
+normal packs(mean, standard_deviation);
+

+

+

+

+

+ We can then find the fraction (or %) of packages that weigh more + than 3.1 kg. +

+

+

+

+ +

+
+double max_weight = 3.1; // kg
+cout << "Percentage of packs > " << max_weight << " is "
+<< cdf(complement(packs, max_weight)) * 100. << endl; // P(X > 3.1)
+

+

+

+

+

+ We might want to ensure that 95% of packs are over a minimum weight + specification, then we want the value of the mean such that P(X < + 2.9) = 0.05. +

+

+

+

+ Using the mean of 3 kg, we can estimate the fraction of packs that + fail to meet the specification of 2.9 kg. +

+

+

+

+ +

+
+double minimum_weight = 2.9;
+cout <<"Fraction of packs <= " << minimum_weight << " with a mean of " << mean
+  << " is " << cdf(complement(packs, minimum_weight)) << endl;
+// fraction of packs <= 2.9 with a mean of 3 is 0.841345
+

+

+

+

+

+ This is 0.84 - more than the target fraction of 0.95. If we want + 95% to be over the minimum weight, what should we set the mean weight + to be? +

+

+

+

+ Using the KK StatCalc program supplied with the book and the method + given on page 126 gives 3.06449. +

+

+

+

+ We can confirm this by constructing a new distribution which we call + 'xpacks' with a safety margin mean of 3.06449 thus: +

+

+

+

+ +

+
+double over_mean = 3.06449;
+normal xpacks(over_mean, standard_deviation);
+cout << "Fraction of packs >= " << minimum_weight
+<< " with a mean of " << xpacks.mean()
+  << " is " << cdf(complement(xpacks, minimum_weight)) << endl;
+// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005
+

+

+

+

+

+ Using this Math Toolkit, we can calculate the required mean directly + thus: +

+

+

+

+ +

+
+double under_fraction = 0.05;  // so 95% are above the minimum weight mean - sd = 2.9
+double low_limit = standard_deviation;
+double offset = mean - low_limit - quantile(packs, under_fraction);
+double nominal_mean = mean + offset;
+// mean + (mean - low_limit - quantile(packs, under_fraction));
+
+normal nominal_packs(nominal_mean, standard_deviation);
+cout << "Setting the packer to " << nominal_mean << " will mean that "
+  << "fraction of packs >= " << minimum_weight
+  << " is " << cdf(complement(nominal_packs, minimum_weight)) << endl;
+// Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95
+

+

+

+

+

+ This calculation is generalized as the free function called find_location. +

+

+

+

+ To use this we will need to +

+

+

+

+ +

+
+#include <boost/math/distributions/find_location.hpp>
+  using boost::math::find_location;
+

+

+

+

+

+ and then use find_location function to find safe_mean, & construct + a new normal distribution called 'goodpacks'. +

+

+

+

+ +

+
+double safe_mean = find_location<normal>(minimum_weight, under_fraction, standard_deviation);
+normal good_packs(safe_mean, standard_deviation);
+

+

+

+

+

+ with the same confirmation as before: +

+

+

+

+ +

+
+cout << "Setting the packer to " << nominal_mean << " will mean that "
+  << "fraction of packs >= " << minimum_weight
+  << " is " << cdf(complement(good_packs, minimum_weight)) << endl;
+// Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95
+

+

+

+ +

+
+ + Using + Cauchy-Lorentz instead of normal distribution +
+

+

+

+ After examining the weight distribution of a large number of packs, + we might decide that, after all, the assumption of a normal distribution + is not really justified. We might find that the fit is better to + a Cauchy + Distribution. This distribution has wider 'wings', so that + whereas most of the values are closer to the mean than the normal, + there are also more values than 'normal' that lie further from the + mean than the normal. +

+

+

+

+ This might happen because a larger than normal lump of meat is either + included or excluded. +

+

+

+

+ We first create a Cauchy + Distribution with the original mean and standard deviation, + and estimate the fraction that lie below our minimum weight specification. +

+

+

+

+ +

+
+cauchy cpacks(mean, standard_deviation);
+cout << "Cauchy Setting the packer to " << mean << " will mean that "
+  << "fraction of packs >= " << minimum_weight
+  << " is " << cdf(complement(cpacks, minimum_weight)) << endl;
+// Cauchy Setting the packer to 3 will mean that fraction of packs >= 2.9 is 0.75
+

+

+

+

+

+ Note that far fewer of the packs meet the specification, only 75% + instead of 95%. Now we can repeat the find_location, using the cauchy + distribution as template parameter, in place of the normal used above. +

+

+

+

+ +

+
+double lc = find_location<cauchy>(minimum_weight, under_fraction, standard_deviation);
+cout << "find_location<cauchy>(minimum_weight, over fraction, standard_deviation); " << lc << endl;
+// find_location<cauchy>(minimum_weight, over fraction, packs.standard_deviation()); 3.53138
+

+

+

+

+

+ Note that the safe_mean setting needs to be much higher, 3.53138 + instead of 3.06449, so we will make rather less profit. +

+

+

+

+ And again confirm that the fraction meeting specification is as expected. +

+

+

+

+ +

+
+cauchy goodcpacks(lc, standard_deviation);
+cout << "Cauchy Setting the packer to " << lc << " will mean that "
+  << "fraction of packs >= " << minimum_weight
+  << " is " << cdf(complement(goodcpacks, minimum_weight)) << endl;
+// Cauchy Setting the packer to 3.53138 will mean that fraction of packs >= 2.9 is 0.95
+

+

+

+

+

+ Finally we could estimate the effect of a much tighter specification, + that 99% of packs met the specification. +

+

+

+

+ +

+
+cout << "Cauchy Setting the packer to "
+  << find_location<cauchy>(minimum_weight, 0.99, standard_deviation)
+  << " will mean that "
+  << "fraction of packs >= " << minimum_weight
+  << " is " << cdf(complement(goodcpacks, minimum_weight)) << endl;
+

+

+

+

+

+ Setting the packer to 3.13263 will mean that fraction of packs >= + 2.9 is 0.99, but will more than double the mean loss from 0.0644 + to 0.133 kg per pack. +

+

+

+

+ Of course, this calculation is not limited to packs of meat, it applies + to dispensing anything, and it also applies to a 'virtual' material + like any measurement. +

+

+

+

+ The only caveat is that the calculation assumes that the standard + deviation (scale) is known with a reasonably low uncertainty, something + that is not so easy to ensure in practice. And that the distribution + is well defined, Normal + Distribution or Cauchy + Distribution, or some other. +

+

+

+

+ If one is simply dispensing a very large number of packs, then it + may be feasible to measure the weight of hundreds or thousands of + packs. With a healthy 'degrees of freedom', the confidence intervals + for the standard deviation are not too wide, typically about + and + - 10% for hundreds of observations. +

+

+

+

+ For other applications, where it is more difficult or expensive to + make many observations, the confidence intervals are depressingly + wide. +

+

+

+

+ See Confidence + Intervals on the standard deviation for a worked example + chi_square_std_dev_test.cpp + of estimating these intervals. +

+

+ +

+
+ + Changing + the scale or standard deviation +
+

+

+

+ Alternatively, we could invest in a better (more precise) packer + (or measuring device) with a lower standard deviation, or scale. +

+

+

+

+ This might cost more, but would reduce the amount we have to 'give + away' in order to meet the specification. +

+

+

+

+ To estimate how much better (how much smaller standard deviation) + it would have to be, we need to get the 5% quantile to be located + at the under_weight limit, 2.9 +

+

+

+

+ +

+
+double p = 0.05; // wanted p th quantile.
+cout << "Quantile of " << p << " = " << quantile(packs, p)
+  << ", mean = " << packs.mean() << ", sd = " << packs.standard_deviation() << endl;
+

+

+

+

+

+ Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1 +

+

+

+

+ With the current packer (mean = 3, sd = 0.1), the 5% quantile is + at 2.8551 kg, a little below our target of 2.9 kg. So we know that + the standard deviation is going to have to be smaller. +

+

+

+

+ Let's start by guessing that it (now 0.1) needs to be halved, to + a standard deviation of 0.05 kg. +

+

+

+

+ +

+
+normal pack05(mean, 0.05);
+cout << "Quantile of " << p << " = " << quantile(pack05, p)
+  << ", mean = " << pack05.mean() << ", sd = " << pack05.standard_deviation() << endl;
+// Quantile of 0.05 = 2.91776, mean = 3, sd = 0.05
+
+cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean
+  << " and standard deviation of " << pack05.standard_deviation()
+  << " is " << cdf(complement(pack05, minimum_weight)) << endl;
+// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.05 is 0.97725
+

+

+

+

+

+ So 0.05 was quite a good guess, but we are a little over the 2.9 + target, so the standard deviation could be a tiny bit more. So we + could do some more guessing to get closer, say by increasing standard + deviation to 0.06 kg, constructing another new distribution called + pack06. +

+

+

+

+ +

+
+normal pack06(mean, 0.06);
+cout << "Quantile of " << p << " = " << quantile(pack06, p)
+  << ", mean = " << pack06.mean() << ", sd = " << pack06.standard_deviation() << endl;
+// Quantile of 0.05 = 2.90131, mean = 3, sd = 0.06
+
+cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean
+  << " and standard deviation of " << pack06.standard_deviation()
+  << " is " << cdf(complement(pack06, minimum_weight)) << endl;
+// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.06 is 0.95221
+

+

+

+

+

+ Now we are getting really close, but to do the job properly, we might + need to use root finding method, for example the tools provided, + and used elsewhere, in the Math Toolkit, see Root + Finding Without Derivatives. +

+

+

+

+ But in this (normal) distribution case, we can and should be even + smarter and make a direct calculation. +

+

+

+

+ Our required limit is minimum_weight = 2.9 kg, often called the random + variate z. For a standard normal distribution, then probability p + = N((minimum_weight - mean) / sd). +

+

+

+

+ We want to find the standard deviation that would be required to + meet this limit, so that the p th quantile is located at z (minimum_weight). + In this case, the 0.05 (5%) quantile is at 2.9 kg pack weight, when + the mean is 3 kg, ensuring that 0.95 (95%) of packs are above the + minimum weight. +

+

+

+

+ Rearranging, we can directly calculate the required standard deviation: +

+

+

+

+ +

+
+normal N01; // standard normal distribution with meamn zero and unit standard deviation.
+p = 0.05;
+double qp = quantile(N01, p);
+double sd95 = (minimum_weight - mean) / qp;
+
+cout << "For the "<< p << "th quantile to be located at "
+  << minimum_weight << ", would need a standard deviation of " << sd95 << endl;
+// For the 0.05th quantile to be located at 2.9, would need a standard deviation of 0.0607957
+

+

+

+

+

+ We can now construct a new (normal) distribution pack95 for the 'better' + packer, and check that our distribution will meet the specification. +

+

+

+

+ +

+
+normal pack95(mean, sd95);
+cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean
+  << " and standard deviation of " << pack95.standard_deviation()
+  << " is " << cdf(complement(pack95, minimum_weight)) << endl;
+// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95
+

+

+

+

+

+ This calculation is generalized in the free function find_scale, + as shown below, giving the same standard deviation. +

+

+

+

+ +

+
+double ss = find_scale<normal>(minimum_weight, under_fraction, packs.mean());
+cout << "find_scale<normal>(minimum_weight, under_fraction, packs.mean()); " << ss << endl;
+// find_scale<normal>(minimum_weight, under_fraction, packs.mean()); 0.0607957
+

+

+

+

+

+ If we had defined an over_fraction, or percentage that must pass + specification +

+

+

+

+ +

+
+double over_fraction = 0.95;
+

+

+

+

+

+ And (wrongly) written +

+

+ +

+
+double sso = find_scale<normal>(minimum_weight, over_fraction, packs.mean());
+
+

+

+

+ With the default policy, we would get a message like +

+

+ +

+
Message from thrown exception was:
+   Error in function boost::math::find_scale<Dist, Policy>(double, double, double, Policy):
+   Computed scale (-0.060795683191176959) is <= 0! Was the complement intended?
+
+

+

+

+ But this would return a negative + standard deviation - obviously impossible. The probability should + be 1 - over_fraction, not over_fraction, thus: +

+

+

+

+ +

+
+double ss1o = find_scale<normal>(minimum_weight, 1 - over_fraction, packs.mean());
+cout << "find_scale<normal>(minimum_weight, under_fraction, packs.mean()); " << ss1o << endl;
+// find_scale<normal>(minimum_weight, under_fraction, packs.mean()); 0.0607957
+

+

+

+

+

+ But notice that using '1 - over_fraction' - will lead to a loss of accuracy, especially if over_fraction + was close to unity. In this (very common) case, we should + instead use the complements, giving + the most accurate result. +

+

+

+

+ +

+
+double ssc = find_scale<normal>(complement(minimum_weight, over_fraction, packs.mean()));
+cout << "find_scale<normal>(complement(minimum_weight, over_fraction, packs.mean())); " << ssc << endl;
+// find_scale<normal>(complement(minimum_weight, over_fraction, packs.mean())); 0.0607957
+

+

+

+

+

+ Note that our guess of 0.06 was close to the accurate value of 0.060795683191176959. +

+

+

+

+ We can again confirm our prediction thus: +

+

+

+

+ +

+
+normal pack95c(mean, ssc);
+cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean
+  << " and standard deviation of " << pack95c.standard_deviation()
+  << " is " << cdf(complement(pack95c, minimum_weight)) << endl;
+// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95
+

+

+

+

+

+ Notice that these two deceptively simple questions: +

+

+

+
  • + Do we over-fill to make sure we meet a minimum specification (or + under-fill to avoid an overdose)? +
+

+

+

+ and/or +

+

+

+
  • + Do we measure better? +
+

+

+

+ are actually extremely common. +

+

+

+

+ The weight of beef might be replaced by a measurement of more or + less anything, from drug tablet content, Apollo landing rocket firing, + X-ray treatment doses... +

+

+

+

+ The scale can be variation in dispensing or uncertainty in measurement. +

+

+ See find_mean_and_sd_normal.cpp + for full source code & appended program output. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html new file mode 100644 index 000000000..5b679fa4d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/find_eg/find_scale_eg.html @@ -0,0 +1,315 @@ + + + +Find Scale (Standard Deviation) Example + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ First we need some includes to access the Normal + Distribution, the algorithms to find scale (and some std output + of course). +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp> // for normal_distribution
+  using boost::math::normal; // typedef provides default type is double.
+#include <boost/math/distributions/find_scale.hpp>
+  using boost::math::find_scale; 
+  using boost::math::complement; // Needed if you want to use the complement version.
+  using boost::math::policies::policy; // Needed to specify the error handling policy.
+
+#include <iostream>
+  using std::cout; using std::endl;
+#include <iomanip>
+  using std::setw; using std::setprecision;
+#include <limits>
+  using std::numeric_limits;
+
+

+

+

+

+

+ For this example, we will use the standard Normal + Distribution, with location (mean) zero and standard deviation + (scale) unity. Conveniently, this is also the default for this implementation's + constructor. +

+

+

+

+ +

+
+normal N01;  // Default 'standard' normal distribution with zero mean
+double sd = 1.; // and standard deviation is 1.
+

+

+

+

+

+ Suppose we want to find a different normal distribution with standard + deviation so that only fraction p (here 0.001 or 0.1%) are below + a certain chosen limit (here -2. standard deviations). +

+

+

+

+ +

+
+double z = -2.; // z to give prob p
+double p = 0.001; // only 0.1% below z = -2
+
+cout << "Normal distribution with mean = " << N01.location()  // aka N01.mean()
+  << ", standard deviation " << N01.scale() // aka N01.standard_deviation()
+  << ", has " << "fraction <= " << z 
+  << ", p = "  << cdf(N01, z) << endl;
+cout << "Normal distribution with mean = " << N01.location()
+  << ", standard deviation " << N01.scale()
+  << ", has " << "fraction > " << z
+  << ", p = "  << cdf(complement(N01, z)) << endl; // Note: uses complement.
+

+

+

+ +

+
Normal distribution with mean = 0 has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0 has fraction > -2, p = 0.97725
+
+

+

+

+ Noting that p = 0.02 instead of our target of 0.001, we can now use + find_scale to give + a new standard deviation. +

+

+

+

+ +

+
+double l = N01.location();
+double s = find_scale<normal>(z, p, l);
+cout << "scale (standard deviation) = " << s << endl;
+

+

+

+

+

+ that outputs: +

+

+ +

+
scale (standard deviation) = 0.647201
+
+

+

+

+ showing that we need to reduce the standard deviation from 1. to + 0.65. +

+

+

+

+ Then we can check that we have achieved our objective by constructing + a new distribution with the new standard deviation (but same zero + mean): +

+

+

+

+ +

+
+normal np001pc(N01.location(), s);
+

+

+

+

+

+ And re-calculating the fraction below (and above) our chosen limit. +

+

+

+

+ +

+
+cout << "Normal distribution with mean = " << l 
+  << " has " << "fraction <= " << z 
+  << ", p = "  << cdf(np001pc, z) << endl;
+cout << "Normal distribution with mean = " << l 
+  << " has " << "fraction > " << z 
+  << ", p = "  << cdf(complement(np001pc, z)) << endl;
+

+

+

+ +

+
Normal distribution with mean = 0 has fraction <= -2, p = 0.001
+Normal distribution with mean = 0 has fraction > -2, p = 0.999
+
+

+ +

+
+ + Controlling + how Errors from find_scale are handled +
+

+

+

+ We can also control the policy for handling various errors. For example, + we can define a new (possibly unwise) policy to ignore domain errors + ('bad' arguments). +

+

+

+

+ Unless we are using the boost::math namespace, we will need: +

+

+

+

+ +

+
+using boost::math::policies::policy;
+using boost::math::policies::domain_error;
+using boost::math::policies::ignore_error;
+

+

+

+

+

+ Using a typedef is convenient, especially if it is re-used, although + it is not required, as the various examples below show. +

+

+

+

+ +

+
+typedef policy<domain_error<ignore_error> > ignore_domain_policy;
+// find_scale with new policy, using typedef.
+l = find_scale<normal>(z, p, l, ignore_domain_policy());
+// Default policy policy<>, needs using boost::math::policies::policy;
+
+l = find_scale<normal>(z, p, l, policy<>());
+// Default policy, fully specified.
+l = find_scale<normal>(z, p, l, boost::math::policies::policy<>());
+// New policy, without typedef.
+l = find_scale<normal>(z, p, l, policy<domain_error<ignore_error> >());
+

+

+

+

+

+ If we want to express a probability, say 0.999, that is a complement, + 1 - + p we should not even think + of writing find_scale<normal>(z, 1 - p, l), but instead, + use the complements version. +

+

+

+

+ +

+
+z = -2.;
+double q = 0.999; // = 1 - p; // complement of 0.001.
+sd = find_scale<normal>(complement(z, q, l));
+
+normal np95pc(l, sd); // Same standard_deviation (scale) but with mean(scale) shifted
+cout << "Normal distribution with mean = " << l << " has " 
+  << "fraction <= " << z << " = "  << cdf(np95pc, z) << endl;
+cout << "Normal distribution with mean = " << l << " has " 
+  << "fraction > " << z << " = "  << cdf(complement(np95pc, z)) << endl;
+

+

+

+

+

+ Sadly, it is all too easy to get probabilities the wrong way round, + when you may get a warning like this: +

+

+ +

+
Message from thrown exception was:
+   Error in function boost::math::find_scale<Dist, Policy>(complement(double, double, double, Policy)):
+   Computed scale (-0.48043523852179076) is <= 0! Was the complement intended?
+
+

+

+

+ The default error handling policy is to throw an exception with this + message, but if you chose a policy to ignore the error, the (impossible) + negative scale is quietly returned. +

+

+ See find_scale_example.cpp + for full source code: the program output looks like this: +

+
Example: Find scale (standard deviation).
+Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501
+Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725
+scale (standard deviation) = 0.647201
+Normal distribution with mean = 0 has fraction <= -2, p = 0.001
+Normal distribution with mean = 0 has fraction > -2, p = 0.999
+Normal distribution with mean = 0.946339 has fraction <= -2 = 0.001
+Normal distribution with mean = 0.946339 has fraction > -2 = 0.999
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html new file mode 100644 index 000000000..24fed1d00 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/nag_library.html @@ -0,0 +1,118 @@ + + + +Comparison with C, R, FORTRAN-style Free Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ You are probably familiar with a statistics library that has free functions, + for example the classic NAG + C library and matching NAG + FORTRAN Library, Microsoft + Excel BINOMDIST(number_s,trials,probability_s,cumulative), R, MathCAD + pbinom and many others. +

+

+ If so, you may find 'Distributions as Objects' unfamiliar, if not alien. +

+

+ However, do not panic, both definition + and usage are not really very different. +

+

+ A very simple example of generating the same values as the NAG + C library for the binomial distribution follows. (If you find + slightly different values, the Boost C++ version, using double or better, + is very likely to be the more accurate. Of course, accuracy is not usually + a concern for most applications of this function). +

+

+ The NAG + function specification is +

+
+void nag_binomial_dist(Integer n, double p, Integer k,
+double *plek, double *pgtk, double *peqk, NagError *fail)
+
+

+ and is called +

+
+g01bjc(n, p, k, &plek, &pgtk, &peqk, NAGERR_DEFAULT);
+
+

+ The equivalent using this Boost C++ library is: +

+
+using namespace boost::math;  // Using declaration avoids very long names.
+binomial my_dist(4, 0.5); // c.f. NAG n = 4, p = 0.5
+
+

+ and values can be output thus: +

+
+cout
+  << my_dist.trials() << " "             // Echo the NAG input n = 4 trials.
+  << my_dist.success_fraction() << " "   // Echo the NAG input p = 0.5
+  << cdf(my_dist, 2) << "  "             // NAG plek with k = 2
+  << cdf(complement(my_dist, 2)) << "  " // NAG pgtk with k = 2
+  << pdf(my_dist, 2) << endl;            // NAG peqk with k = 2
+
+

+ cdf(dist, k) + is equivalent to NAG library plek, + lower tail probability of <= k +

+

+ cdf(complement(dist, k)) + is equivalent to NAG library pgtk, + upper tail probability of > k +

+

+ pdf(dist, k) + is equivalent to NAG library peqk, + point probability of == k +

+

+ See binomial_example_nag.cpp + for details. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html new file mode 100644 index 000000000..7d855f48d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg.html @@ -0,0 +1,60 @@ + + + +Negative Binomial Distribution Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html new file mode 100644 index 000000000..7c2523b1d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_conf.html @@ -0,0 +1,271 @@ + + + +Calculating Confidence Limits on the Frequency of Occurrence for the Negative Binomial Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine you have a process that follows a negative binomial distribution: + for each trial conducted, an event either occurs or does it does not, + referred to as "successes" and "failures". The + frequency with which successes occur is variously referred to as the + success fraction, success ratio, success percentage, occurrence frequency, + or probability of occurrence. +

+

+ If, by experiment, you want to measure the the best estimate of success + fraction is given simply by k / N, + for k successes out of N + trials. +

+

+ However our confidence in that estimate will be shaped by how many + trials were conducted, and how many successes were observed. The static + member functions negative_binomial_distribution<>::find_lower_bound_on_p + and negative_binomial_distribution<>::find_upper_bound_on_p + allow you to calculate the confidence intervals for your estimate of + the success fraction. +

+

+ The sample program neg_binom_confidence_limits.cpp + illustrates their use. +

+

+

+

+ First we need some includes to access the negative binomial distribution + (and some basic std output of course). +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp>
+using boost::math::negative_binomial;
+
+#include <iostream>
+using std::cout; using std::endl;
+#include <iomanip>
+using std::setprecision;
+using std::setw; using std::left; using std::fixed; using std::right;
+

+

+

+

+

+ First define a table of significance levels: these are the probabilities + that the true occurrence frequency lies outside the calculated interval: +

+

+

+

+ +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+

+

+

+

+

+ Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% + confidence that the true occurence frequency lies inside + the calculated interval. +

+

+

+

+ We need a function to calculate and print confidence limits for an + observed frequency of occurrence that follows a negative binomial + distribution. +

+

+

+

+ +

+
+void confidence_limits_on_frequency(unsigned trials, unsigned successes)
+{
+   // trials = Total number of trials.
+   // successes = Total number of observed successes.
+   // failures = trials - successes.
+   // success_fraction = successes /trials.
+   // Print out general info:
+   cout <<
+      "______________________________________________\n"
+      "2-Sided Confidence Limits For Success Fraction\n"
+      "______________________________________________\n\n";
+   cout << setprecision(7);
+   cout << setw(40) << left << "Number of trials" << " =  " << trials << "\n";
+   cout << setw(40) << left << "Number of successes" << " =  " << successes << "\n";
+   cout << setw(40) << left << "Number of failures" << " =  " << trials - successes << "\n";
+   cout << setw(40) << left << "Observed frequency of occurrence" << " =  " << double(successes) / trials << "\n";
+
+   // Print table header:
+   cout << "\n\n"
+           "___________________________________________\n"
+           "Confidence        Lower          Upper\n"
+           " Value (%)        Limit          Limit\n"
+           "___________________________________________\n";
+

+

+

+

+

+ And now for the important part - the bounds themselves. For each + value of alpha, we call find_lower_bound_on_p + and find_upper_bound_on_p + to obtain lower and upper bounds respectively. Note that since we + are calculating a two-sided interval, we must divide the value of + alpha in two. Had we been calculating a single-sided interval, for + example: "Calculate a lower bound so that we are P% + sure that the true occurrence frequency is greater than some value" + then we would not have divided by + two. +

+

+

+

+ +

+
+   // Now print out the upper and lower limits for the alpha table values.
+   for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+   {
+      // Confidence value:
+      cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
+      // Calculate bounds:
+      double lower = negative_binomial::find_lower_bound_on_p(trials, successes, alpha[i]/2);
+      double upper = negative_binomial::find_upper_bound_on_p(trials, successes, alpha[i]/2);
+      // Print limits:
+      cout << fixed << setprecision(5) << setw(15) << right << lower;
+      cout << fixed << setprecision(5) << setw(15) << right << upper << endl;
+   }
+   cout << endl;
+} // void confidence_limits_on_frequency(unsigned trials, unsigned successes)
+

+

+

+

+

+ And then call confidence_limits_on_frequency with increasing numbers + of trials, but always the same success fraction 0.1, or 1 in 10. +

+

+

+

+ +

+
+int main()
+{
+  confidence_limits_on_frequency(20, 2); // 20 trials, 2 successes, 2 in 20, = 1 in 10 = 0.1 success fraction.
+  confidence_limits_on_frequency(200, 20); // More trials, but same 0.1 success fraction.
+  confidence_limits_on_frequency(2000, 200); // Many more trials, but same 0.1 success fraction.
+
+  return 0;
+} // int main()
+
+
+

+

+

+ Let's see some sample output for a 1 in 10 success ratio, first for + a mere 20 trials: +

+
______________________________________________
+2-Sided Confidence Limits For Success Fraction
+______________________________________________
+Number of trials                         =  20
+Number of successes                      =  2
+Number of failures                       =  18
+Observed frequency of occurrence         =  0.1
+___________________________________________
+Confidence        Lower          Upper
+ Value (%)        Limit          Limit
+___________________________________________
+    50.000        0.04812        0.13554
+    75.000        0.03078        0.17727
+    90.000        0.01807        0.22637
+    95.000        0.01235        0.26028
+    99.000        0.00530        0.33111
+    99.900        0.00164        0.41802
+    99.990        0.00051        0.49202
+    99.999        0.00016        0.55574
+
+

+ As you can see, even at the 95% confidence level the bounds (0.012 + to 0.26) are really very wide, and very asymmetric about the observed + value 0.1. +

+

+ Compare that with the program output for a mass 2000 trials: +

+
______________________________________________
+2-Sided Confidence Limits For Success Fraction
+______________________________________________
+Number of trials                         =  2000
+Number of successes                      =  200
+Number of failures                       =  1800
+Observed frequency of occurrence         =  0.1
+___________________________________________
+Confidence        Lower          Upper
+ Value (%)        Limit          Limit
+___________________________________________
+    50.000        0.09536        0.10445
+    75.000        0.09228        0.10776
+    90.000        0.08916        0.11125
+    95.000        0.08720        0.11352
+    99.000        0.08344        0.11802
+    99.900        0.07921        0.12336
+    99.990        0.07577        0.12795
+    99.999        0.07282        0.13206
+
+

+ Now even when the confidence level is very high, the limits (at 99.999%, + 0.07 to 0.13) are really quite close and nearly symmetric to the observed + value of 0.1. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html new file mode 100644 index 000000000..cb8c5d512 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/neg_binom_size_eg.html @@ -0,0 +1,254 @@ + + + +Estimating Sample Sizes for the Negative Binomial. + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine you have an event (let's call it a "failure" - though + we could equally well call it a success if we felt it was a 'good' + event) that you know will occur in 1 in N trials. You may want to know + how many trials you need to conduct to be P% sure of observing at least + k such failures. If the failure events follow a negative binomial distribution + (each trial either succeeds or fails) then the static member function + negative_binomial_distibution<>::find_minimum_number_of_trials + can be used to estimate the minimum number of trials required to be + P% sure of observing the desired number of failures. +

+

+ The example program neg_binomial_sample_sizes.cpp + demonstrates its usage. +

+

+

+

+ It centres around a routine that prints out a table of minimum sample + sizes for various probability thresholds: +

+

+

+

+ +

+
+void find_number_of_trials(double failures, double p);
+

+

+

+

+

+ First define a table of significance levels: these are the maximum + acceptable probability that failure or fewer + events will be observed. +

+

+

+

+ +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+

+

+

+

+

+ Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% + confidence that the desired number of failures will be observed. +

+

+

+

+ Much of the rest of the program is pretty-printing, the important + part is in the calculation of minimum number of trials required for + each value of alpha using: +

+

+ +

+
+(int)ceil(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]);
+
+

+

+

+ find_minimum_number_of_trials returns a double, so ceil rounds this + up to ensure we have an integral minimum number of trials. +

+

+

+

+ +

+
+  
+void find_number_of_trials(double failures, double p)
+{
+   // trials = number of trials
+   // failures = number of failures before achieving required success(es).
+   // p        = success fraction (0 <= p <= 1.).
+   //
+   // Calculate how many trials we need to ensure the
+   // required number of failures DOES exceed "failures".
+
+  cout << "\n""Target number of failures = " << failures;
+  cout << ",   Success fraction = " << 100 * p << "%" << endl;
+   // Print table header:
+   cout << "\n\n"
+           "____________________________\n"
+           "Confidence        Min Number\n"
+           " Value (%)        Of Trials \n"
+           "____________________________\n";
+   // Now print out the data for the alpha table values.
+  for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+   { // Confidence values %:
+      cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]) << "      "
+      // find_minimum_number_of_trials
+      << setw(6) << right
+      << (int)ceil(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]))
+      << endl;
+   }
+   cout << endl;
+} // void find_number_of_trials(double failures, double p)
+

+

+

+

+

+ finally we can produce some tables of minimum trials for the chosen + confidence levels: +

+

+

+

+ +

+
+int main()
+{
+    find_number_of_trials(5, 0.5);
+    find_number_of_trials(50, 0.5);
+    find_number_of_trials(500, 0.5);
+    find_number_of_trials(50, 0.1);
+    find_number_of_trials(500, 0.1);
+    find_number_of_trials(5, 0.9);
+
+    return 0;
+} // int main()
+
+
+

+

+

+

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

+ Since we're calculating the minimum number of + trials required, we'll err on the safe side and take the ceiling + of the result. Had we been calculating the maximum + number of trials permitted to observe less than a certain number + of failures then we would have taken the floor + instead. We would also have called find_minimum_number_of_trials + like this: +

+
+floor(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]))
+
+

+ which would give us the largest number of trials we could conduct + and still be P% sure of observing failures or less + failure events, when the probability of success is p. +

+
+

+ We'll finish off by looking at some sample output, firstly suppose + we wish to observe at least 5 "failures" with a 50/50 (0.5) + chance of success or failure: +

+
Target number of failures = 5,   Success fraction = 50%
+
+____________________________
+Confidence        Min Number
+ Value (%)        Of Trials
+____________________________
+    50.000          11
+    75.000          14
+    90.000          17
+    95.000          18
+    99.000          22
+    99.900          27
+    99.990          31
+    99.999          36
+
+
+

+ So 18 trials or more would yield a 95% chance that at least our 5 required + failures would be observed. +

+

+ Compare that to what happens if the success ratio is 90%: +

+
Target number of failures = 5.000,   Success fraction = 90.000%
+
+____________________________
+Confidence        Min Number
+ Value (%)        Of Trials
+____________________________
+    50.000          57
+    75.000          73
+    90.000          91
+    95.000         103
+    99.000         127
+    99.900         159
+    99.990         189
+    99.999         217
+
+

+ So now 103 trials are required to observe at least 5 failures with + 95% certainty. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html new file mode 100644 index 000000000..3680eed66 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example1.html @@ -0,0 +1,834 @@ + + + +Negative Binomial Sales Quota Example. + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This example program negative_binomial_example1.cpp + (full source code) demonstrates a simple use to find the probability + of meeting a sales quota. +

+

+

+

+ Based on a + problem by Dr. Diane Evans, Professor of Mathematics at Rose-Hulman + Institute of Technology. +

+

+

+

+ Pat is required to sell candy bars to raise money for the 6th grade + field trip. There are thirty houses in the neighborhood, and Pat + is not supposed to return home until five candy bars have been sold. + So the child goes door to door, selling candy bars. At each house, + there is a 0.4 probability (40%) of selling one candy bar and a 0.6 + probability (60%) of selling nothing. +

+

+

+

+ What is the probability mass (density) function (pdf) for selling + the last (fifth) candy bar at the nth house? +

+

+

+

+ The Negative Binomial(r, p) distribution describes the probability + of k failures and r successes in k+r Bernoulli(p) trials with success + on the last trial. (A Bernoulli + trial is one with only two possible outcomes, success of + failure, and p is the probability of success). See also http://en.wikipedia.org/wiki/Bernoulli_distribution + Bernoulli distribution and Bernoulli + applications. +

+

+

+

+ In this example, we will deliberately produce a variety of calculations + and outputs to demonstrate the ways that the negative binomial distribution + can be implemented with this library: it is also deliberately over-commented. +

+

+

+

+ First we need to #define macros to control the error and discrete + handling policies. For this simple example, we want to avoid throwing + an exception (the default policy) and just return infinity. We want + to treat the distribution as if it was continuous, so we choose a + discrete_quantile policy of real, rather than the default policy + integer_round_outwards. +

+

+

+

+ +

+
+#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error
+#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real
+

+

+

+

+

+ After that we need some includes to provide easy access to the negative + binomial distribution, +

+

+

+
+ + + + + +
[Caution]Caution

+ It is vital to #include distributions etc after + the above #defines +

+

+

+

+ and we need some std library iostream, of course. +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp>
+  // for negative_binomial_distribution
+  using boost::math::negative_binomial; // typedef provides default type is double.
+  using  ::boost::math::pdf; // Probability mass function.
+  using  ::boost::math::cdf; // Cumulative density function.
+  using  ::boost::math::quantile;
+
+#include <iostream>
+  using std::cout; using std::endl;
+  using std::noshowpoint; using std::fixed; using std::right; using std::left;
+#include <iomanip>
+  using std::setprecision; using std::setw; 
+
+#include <limits>
+  using std::numeric_limits;
+
+

+

+

+

+

+ It is always sensible to use try and catch blocks because defaults + policies are to throw an exception if anything goes wrong. +

+

+

+

+ A simple catch block (see below) will ensure that you get a helpful + error message instead of an abrupt program abort. +

+

+

+

+ +

+
+try
+{
+

+

+

+

+

+ Selling five candy bars means getting five successes, so successes + r = 5. The total number of trials (n, in this case, houses visited) + this takes is therefore = sucesses + failures or k + r = k + 5. +

+

+

+

+ +

+
+double sales_quota = 5; // Pat's sales quota - successes (r).
+

+

+

+

+

+ At each house, there is a 0.4 probability (40%) of selling one candy + bar and a 0.6 probability (60%) of selling nothing. +

+

+

+

+ +

+
+double success_fraction = 0.4; // success_fraction (p) - so failure_fraction is 0.6.
+

+

+

+

+

+ The Negative Binomial(r, p) distribution describes the probability + of k failures and r successes in k+r Bernoulli(p) trials with success + on the last trial. (A Bernoulli + trial is one with only two possible outcomes, success of + failure, and p is the probability of success). +

+

+

+

+ We therefore start by constructing a negative binomial distribution + with parameters sales_quota (required successes) and probability + of success. +

+

+

+

+ +

+
+negative_binomial nb(sales_quota, success_fraction); // type double by default.
+

+

+

+

+

+ To confirm, display the success_fraction & successes parameters + of the distribution. +

+

+

+

+ +

+
+cout << "Pat has a sales per house success rate of " << success_fraction
+  << ".\nTherefore he would, on average, sell " << nb.success_fraction() * 100
+  << " bars after trying 100 houses." << endl;
+
+int all_houses = 30; // The number of houses on the estate.
+
+cout << "With a success rate of " << nb.success_fraction() 
+  << ", he might expect, on average,\n"
+    "to need to visit about " << success_fraction * all_houses
+    << " houses in order to sell all " << nb.successes() << " bars. " << endl;
+

+

+

+ +

+
Pat has a sales per house success rate of 0.4.
+Therefore he would, on average, sell 40 bars after trying 100 houses.
+With a success rate of 0.4, he might expect, on average,
+to need to visit about 12 houses in order to sell all 5 bars. 
+
+

+

+

+ The random variable of interest is the number of houses that must + be visited to sell five candy bars, so we substitute k = n - 5 into + a negative_binomial(5, 0.4) and obtain the probability + mass (density) function (pdf or pmf) of the distribution of + houses visited. Obviously, the best possible case is that Pat makes + sales on all the first five houses. +

+

+

+

+ We calculate this using the pdf function: +

+

+

+

+ +

+
+cout << "Probability that Pat finishes on the " << sales_quota << "th house is "
+  << pdf(nb, 5 - sales_quota) << endl; // == pdf(nb, 0)
+

+

+

+

+

+ Of course, he could not finish on fewer than 5 houses because he + must sell 5 candy bars. So the 5th house is the first that he could + possibly finish on. +

+

+

+

+ To finish on or before the 8th house, Pat must finish at the 5th, + 6th, 7th or 8th house. The probability that he will finish on exactly ( == ) on any house is the Probability + Density Function (pdf). +

+

+

+

+ +

+
+cout << "Probability that Pat finishes on the 6th house is "
+  << pdf(nb, 6 - sales_quota) << endl;
+cout << "Probability that Pat finishes on the 7th house is "
+  << pdf(nb, 7 - sales_quota) << endl;
+cout << "Probability that Pat finishes on the 8th house is "
+  << pdf(nb, 8 - sales_quota) << endl;
+

+

+

+ +

+
Probability that Pat finishes on the 6th house is 0.03072
+Probability that Pat finishes on the 7th house is 0.055296
+Probability that Pat finishes on the 8th house is 0.077414
+
+

+

+

+ The sum of the probabilities for these houses is the Cumulative Distribution + Function (cdf). We can calculate it by adding the individual probabilities. +

+

+

+

+ +

+
+cout << "Probability that Pat finishes on or before the 8th house is sum "
+  "\n" << "pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = "
+  // Sum each of the mass/density probabilities for houses sales_quota = 5, 6, 7, & 8.
+  << pdf(nb, 5 - sales_quota) // 0 failures.
+    + pdf(nb, 6 - sales_quota) // 1 failure.
+    + pdf(nb, 7 - sales_quota) // 2 failures.
+    + pdf(nb, 8 - sales_quota) // 3 failures.
+  << endl;
+

+

+

+ +

+
pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = 0.17367
+
+

+

+

+ Or, usually better, by using the negative binomial cumulative + distribution function. +

+

+

+

+ +

+
+cout << "\nProbability of selling his quota of " << sales_quota
+  << " bars\non or before the " << 8 << "th house is "
+  << cdf(nb, 8 - sales_quota) << endl;
+

+

+

+ +

+
Probability of selling his quota of 5 bars on or before the 8th house is 0.17367
+
+

+

+

+ +

+
+cout << "\nProbability that Pat finishes exactly on the 10th house is "
+  << pdf(nb, 10 - sales_quota) << endl;
+cout << "\nProbability of selling his quota of " << sales_quota
+  << " bars\non or before the " << 10 << "th house is "
+  << cdf(nb, 10 - sales_quota) << endl;
+

+

+

+ +

+
Probability that Pat finishes exactly on the 10th house is 0.10033
+Probability of selling his quota of 5 bars on or before the 10th house is 0.3669
+
+

+

+

+ +

+
+cout << "Probability that Pat finishes exactly on the 11th house is "
+  << pdf(nb, 11 - sales_quota) << endl;
+cout << "\nProbability of selling his quota of " << sales_quota
+  << " bars\non or before the " << 11 << "th house is "
+  << cdf(nb, 11 - sales_quota) << endl;
+

+

+

+ +

+
Probability that Pat finishes on the 11th house is 0.10033
+Probability of selling his quota of 5 candy bars
+on or before the 11th house is 0.46723
+
+

+

+

+ +

+
+cout << "Probability that Pat finishes exactly on the 12th house is "
+  << pdf(nb, 12 - sales_quota) << endl;
+
+cout << "\nProbability of selling his quota of " << sales_quota
+  << " bars\non or before the " << 12 << "th house is "
+  << cdf(nb, 12 - sales_quota) << endl;
+

+

+

+ +

+
Probability that Pat finishes on the 12th house is 0.094596
+Probability of selling his quota of 5 candy bars
+on or before the 12th house is 0.56182
+
+

+

+

+ Finally consider the risk of Pat not selling his quota of 5 bars + even after visiting all the houses. Calculate the probability that + he will sell on or before the last house: Calculate + the probability that he would sell all his quota on the very last + house. +

+

+

+

+ +

+
+cout << "Probability that Pat finishes on the " << all_houses
+  << " house is " << pdf(nb, all_houses - sales_quota) << endl;
+

+

+

+

+

+ Probability of selling his quota of 5 bars on the 30th house is +

+

+ +

+
Probability that Pat finishes on the 30 house is 0.00069145
+
+

+

+

+ when he'd be very unlucky indeed! +

+

+

+

+ What is the probability that Pat exhausts all 30 houses in the neighborhood, + and still doesn't sell the required + 5 candy bars? +

+

+

+

+ +

+
+cout << "\nProbability of selling his quota of " << sales_quota
+  << " bars\non or before the " << all_houses << "th house is "
+  << cdf(nb, all_houses - sales_quota) << endl;
+

+

+

+ +

+
Probability of selling his quota of 5 bars
+on or before the 30th house is 0.99849
+
+

+

+

+ /*So the + risk of + failing even + after visiting + all the + houses is + 1 - + this probability, 1 + - cdf(nb, all_houses + - sales_quota + But using + this expression + may cause + serious inaccuracy, so + it would + be much + better to + use the + complement of + the cdf: So + the risk + of failing + even at, or after, + the 31th (non-existent) + houses is + 1 - + this probability, 1 + - cdf(nb, all_houses + - sales_quota)` But using this expression may cause + serious inaccuracy. So it would be much better to use the complement + of the cdf. Why complements? +

+

+

+

+ +

+
+cout << "\nProbability of failing to sell his quota of " << sales_quota
+  << " bars\neven after visiting all " << all_houses << " houses is "
+  << cdf(complement(nb, all_houses - sales_quota)) << endl;
+

+

+

+ +

+
Probability of failing to sell his quota of 5 bars
+even after visiting all 30 houses is 0.0015101
+
+

+

+

+ We can also use the quantile (percentile), the inverse of the cdf, + to predict which house Pat will finish on. So for the 8th house: +

+

+

+

+ +

+
+double p = cdf(nb, (8 - sales_quota)); 
+cout << "Probability of meeting sales quota on or before 8th house is "<< p << endl;
+

+

+

+ +

+
Probability of meeting sales quota on or before 8th house is 0.174
+
+

+

+

+ +

+
+cout << "If the confidence of meeting sales quota is " << p
+    << ", then the finishing house is " << quantile(nb, p) + sales_quota << endl;
+
+cout<< " quantile(nb, p) = " << quantile(nb, p) << endl;
+

+

+

+ +

+
If the confidence of meeting sales quota is 0.17367, then the finishing house is 8
+
+

+

+

+ Demanding absolute certainty that all 5 will be sold, implies an + infinite number of trials. (Of course, there are only 30 houses on + the estate, so he can't ever be certain + of selling his quota). +

+

+

+

+ +

+
+cout << "If the confidence of meeting sales quota is " << 1.
+    << ", then the finishing house is " << quantile(nb, 1) + sales_quota << endl;
+//  1.#INF == infinity.
+

+

+

+ +

+
If the confidence of meeting sales quota is 1, then the finishing house is 1.#INF
+
+

+

+

+ And similarly for a few other probabilities: +

+

+

+

+ +

+
+cout << "If the confidence of meeting sales quota is " << 0.
+    << ", then the finishing house is " << quantile(nb, 0.) + sales_quota << endl;
+
+cout << "If the confidence of meeting sales quota is " << 0.5
+    << ", then the finishing house is " << quantile(nb, 0.5) + sales_quota << endl;
+
+cout << "If the confidence of meeting sales quota is " << 1 - 0.00151 // 30 th
+    << ", then the finishing house is " << quantile(nb, 1 - 0.00151) + sales_quota << endl;
+

+

+

+ +

+
If the confidence of meeting sales quota is 0, then the finishing house is 5
+If the confidence of meeting sales quota is 0.5, then the finishing house is 11.337
+If the confidence of meeting sales quota is 0.99849, then the finishing house is 30
+
+

+

+

+ Notice that because we chose a discrete quantile policy of real, + the result can be an 'unreal' fractional house. +

+

+

+

+ If the opposite is true, we don't want to assume any confidence, + then this is tantamount to assuming that all the first sales_quota + trials will be successful sales. +

+

+

+

+ +

+
+cout << "If confidence of meeting quota is zero\n(we assume all houses are successful sales)" 
+  ", then finishing house is " << sales_quota << endl;
+

+

+

+ +

+
If confidence of meeting quota is zero (we assume all houses are successful sales), then finishing house is 5
+If confidence of meeting quota is 0, then finishing house is 5
+
+

+

+

+ We can list quantiles for a few probabilities: +

+

+

+

+ +

+
+ double ps[] = {0., 0.001, 0.01, 0.05, 0.1, 0.5, 0.9, 0.95, 0.99, 0.999, 1.};
+ // Confidence as fraction = 1-alpha, as percent =  100 * (1-alpha[i]) %
+ cout.precision(3);
+ for (int i = 0; i < sizeof(ps)/sizeof(ps[0]); i++)
+ {
+   cout << "If confidence of meeting quota is " << ps[i]
+     << ", then finishing house is " << quantile(nb, ps[i]) + sales_quota
+     << endl;
+}
+

+

+

+ +

+
If confidence of meeting quota is 0, then finishing house is 5
+If confidence of meeting quota is 0.001, then finishing house is 5
+If confidence of meeting quota is 0.01, then finishing house is 5
+If confidence of meeting quota is 0.05, then finishing house is 6.2
+If confidence of meeting quota is 0.1, then finishing house is 7.06
+If confidence of meeting quota is 0.5, then finishing house is 11.3
+If confidence of meeting quota is 0.9, then finishing house is 17.8
+If confidence of meeting quota is 0.95, then finishing house is 20.1
+If confidence of meeting quota is 0.99, then finishing house is 24.8
+If confidence of meeting quota is 0.999, then finishing house is 31.1
+If confidence of meeting quota is 1, then finishing house is 1.#INF
+
+

+

+

+ We could have applied a ceil function to obtain a 'worst case' integer + value for house. +

+
+ceil(quantile(nb, ps[i]))
+

+

+

+

+

+ Or, if we had used the default discrete quantile policy, integer_outside, + by omitting +

+
+#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real
+

+ we would have achieved the same effect. +

+

+

+

+ The real result gives some suggestion which house is most likely. + For example, compare the real and integer_outside for 95% confidence. +

+

+ +

+
If confidence of meeting quota is 0.95, then finishing house is 20.1
+If confidence of meeting quota is 0.95, then finishing house is 21
+
+

+

+

+ The real value 20.1 is much closer to 20 than 21, so integer_outside + is pessimistic. We could also use integer_round_nearest policy to + suggest that 20 is more likely. +

+

+

+

+ Finally, we can tabulate the probability for the last sale being + exactly on each house. +

+

+

+

+ +

+
+cout << "\nHouse for " << sales_quota << "th (last) sale.  Probability (%)" << endl;
+cout.precision(5);
+for (int i = (int)sales_quota; i < all_houses+1; i++)
+{
+  cout << left << setw(3) << i << "                             " << setw(8) << cdf(nb, i - sales_quota)  << endl;
+}
+cout << endl;
+

+

+

+ +

+
House for 5 th (last) sale.  Probability (%)
+5                               0.01024 
+6                               0.04096 
+7                               0.096256
+8                               0.17367 
+9                               0.26657 
+10                              0.3669  
+11                              0.46723 
+12                              0.56182 
+13                              0.64696 
+14                              0.72074 
+15                              0.78272 
+16                              0.83343 
+17                              0.874   
+18                              0.90583 
+19                              0.93039 
+20                              0.94905 
+21                              0.96304 
+22                              0.97342 
+23                              0.98103 
+24                              0.98655 
+25                              0.99053 
+26                              0.99337 
+27                              0.99539 
+28                              0.99681 
+29                              0.9978  
+30                              0.99849
+
+

+

+

+ As noted above, using a catch block is always a good idea, even if + you do not expect to use it. +

+

+

+

+ +

+
+}
+catch(const std::exception& e)
+{ // Since we have set an overflow policy of ignore_error,
+  // an overflow exception should never be thrown.
+   std::cout << "\nMessage from thrown exception was:\n " << e.what() << std::endl;
+

+

+

+

+

+ For example, without a ignore domain error policy, if we asked for + +

+
+pdf(nb, -1)
+

+ for example, we would get: +

+

+ +

+
Message from thrown exception was:
+ Error in function boost::math::pdf(const negative_binomial_distribution<double>&, double):
+ Number of failures argument is -1, but must be >= 0 !
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html new file mode 100644 index 000000000..b0c7d6dcf --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/neg_binom_eg/negative_binomial_example2.html @@ -0,0 +1,152 @@ + + + +Negative Binomial Table Printing Example. + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Example program showing output of a table of values of cdf and pdf + for various k failures. +

+

+

+

+ +

+
+// Print a table of values that can be used to plot
+// using Excel, or some other superior graphical display tool.
+
+cout.precision(17); // Use max_digits10 precision, the maximum available for a reference table.
+cout << showpoint << endl; // include trailing zeros.
+// This is a maximum possible precision for the type (here double) to suit a reference table.
+int maxk = static_cast<int>(2. * mynbdist.successes() /  mynbdist.success_fraction());
+// This maxk shows most of the range of interest, probability about 0.0001 to 0.999.
+cout << "\n"" k            pdf                      cdf""\n" << endl;
+for (int k = 0; k < maxk; k++)
+{
+  cout << right << setprecision(17) << showpoint
+    << right << setw(3) << k  << ", "
+    << left << setw(25) << pdf(mynbdist, static_cast<double>(k))
+    << left << setw(25) << cdf(mynbdist, static_cast<double>(k))
+    << endl;
+}
+cout << endl;
+
+

+

+

+

+

+ +

+
+k            pdf                      cdf
+ 0, 1.5258789062500000e-005  1.5258789062500003e-005  
+ 1, 9.1552734375000000e-005  0.00010681152343750000   
+ 2, 0.00030899047851562522   0.00041580200195312500   
+ 3, 0.00077247619628906272   0.0011882781982421875    
+ 4, 0.0015932321548461918    0.0027815103530883789    
+ 5, 0.0028678178787231476    0.0056493282318115234    
+ 6, 0.0046602040529251142    0.010309532284736633     
+ 7, 0.0069903060793876605    0.017299838364124298     
+ 8, 0.0098301179241389001    0.027129956288263202     
+ 9, 0.013106823898851871     0.040236780187115073     
+10, 0.016711200471036140     0.056947980658151209     
+11, 0.020509200578089786     0.077457181236241013     
+12, 0.024354675686481652     0.10181185692272265      
+13, 0.028101548869017230     0.12991340579173993      
+14, 0.031614242477644432     0.16152764826938440      
+15, 0.034775666725408917     0.19630331499479325      
+16, 0.037492515688331451     0.23379583068312471      
+17, 0.039697957787645101     0.27349378847076977      
+18, 0.041352039362130305     0.31484582783290005      
+19, 0.042440250924291580     0.35728607875719176      
+20, 0.042970754060845245     0.40025683281803687      
+21, 0.042970754060845225     0.44322758687888220      
+22, 0.042482450037426581     0.48571003691630876      
+23, 0.041558918514873783     0.52726895543118257      
+24, 0.040260202311284021     0.56752915774246648      
+25, 0.038649794218832620     0.60617895196129912      
+26, 0.036791631035234917     0.64297058299653398      
+27, 0.034747651533277427     0.67771823452981139      
+28, 0.032575923312447595     0.71029415784225891      
+29, 0.030329307911589130     0.74062346575384819      
+30, 0.028054609818219924     0.76867807557206813      
+31, 0.025792141284492545     0.79447021685656061      
+32, 0.023575629142856460     0.81804584599941710      
+33, 0.021432390129869489     0.83947823612928651      
+34, 0.019383705779220189     0.85886194190850684      
+35, 0.017445335201298231     0.87630727710980494      
+36, 0.015628112784496322     0.89193538989430121      
+37, 0.013938587078064250     0.90587397697236549      
+38, 0.012379666154859701     0.91825364312722524      
+39, 0.010951243136991251     0.92920488626421649      
+40, 0.0096507830144735539    0.93885566927869002      
+41, 0.0084738582566109364    0.94732952753530097      
+42, 0.0074146259745345548    0.95474415350983555      
+43, 0.0064662435824429246    0.96121039709227851      
+44, 0.0056212231142827853    0.96683162020656122      
+45, 0.0048717266990450708    0.97170334690560634      
+46, 0.0042098073105878630    0.97591315421619418      
+47, 0.0036275999165703964    0.97954075413276465      
+48, 0.0031174686783026818    0.98265822281106729      
+49, 0.0026721160099737302    0.98533033882104104      
+50, 0.0022846591885275322    0.98761499800956853      
+51, 0.0019486798960970148    0.98956367790566557      
+52, 0.0016582516423517923    0.99122192954801736      
+53, 0.0014079495076571762    0.99262987905567457      
+54, 0.0011928461106539983    0.99382272516632852      
+55, 0.0010084971662802015    0.99483122233260868      
+56, 0.00085091948404891532   0.99568214181665760      
+57, 0.00071656377604119542   0.99639870559269883      
+58, 0.00060228420831048650   0.99700098980100937      
+59, 0.00050530624256557675   0.99750629604357488      
+60, 0.00042319397814867202   0.99792949002172360      
+61, 0.00035381791615708398   0.99828330793788067      
+62, 0.00029532382517950324   0.99857863176306016      
+63, 0.00024610318764958566   0.99882473495070978      
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html new file mode 100644 index 000000000..4d62e8b06 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example.html @@ -0,0 +1,51 @@ + + + +Normal Distribution Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html new file mode 100644 index 000000000..b72102993 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/normal_example/normal_misc.html @@ -0,0 +1,782 @@ + + + +Some Miscellaneous Examples of the Normal (Gaussian) Distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The sample program normal_misc_examples.cpp + illustrates their use. +

+
+ + Traditional + Tables +
+

+

+

+ First we need some includes to access the normal distribution (and + some std output of course). +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp> // for normal_distribution
+  using boost::math::normal; // typedef provides default type is double.
+
+#include <iostream>
+  using std::cout; using std::endl; using std::left; using std::showpoint; using std::noshowpoint;
+#include <iomanip>
+  using std::setw; using std::setprecision;
+#include <limits>
+  using std::numeric_limits;
+
+int main()
+{
+  cout << "Example: Normal distribution, Miscellaneous Applications.";
+
+  try
+  {
+    { // Traditional tables and values.
+

+

+

+

+

+ Let's start by printing some traditional tables. +

+

+

+

+ +

+
+double step = 1.; // in z 
+double range = 4; // min and max z = -range to +range.
+int precision = 17; // traditional tables are only computed to much lower precision.
+
+// Construct a standard normal distribution s
+  normal s; // (default mean = zero, and standard deviation = unity)
+  cout << "Standard normal distribution, mean = "<< s.mean()
+    << ", standard deviation = " << s.standard_deviation() << endl;
+

+

+

+

+

+ First the probability distribution function (pdf). +

+

+

+

+ +

+
+cout << "Probability distribution function values" << endl;
+cout << "  z " "      pdf " << endl;
+cout.precision(5);
+for (double z = -range; z < range + step; z += step)
+{
+  cout << left << setprecision(3) << setw(6) << z << " " 
+    << setprecision(precision) << setw(12) << pdf(s, z) << endl;
+}
+cout.precision(6); // default
+

+

+

+

+

+ And the area under the normal curve from -∞ up to z, the cumulative + distribution function (cdf). +

+

+

+

+ +

+
+// For a standard normal distribution 
+cout << "Standard normal mean = "<< s.mean()
+  << ", standard deviation = " << s.standard_deviation() << endl;
+cout << "Integral (area under the curve) from - infinity up to z " << endl;
+cout << "  z " "      cdf " << endl;
+for (double z = -range; z < range + step; z += step)
+{
+  cout << left << setprecision(3) << setw(6) << z << " " 
+    << setprecision(precision) << setw(12) << cdf(s, z) << endl;
+}
+cout.precision(6); // default
+

+

+

+

+

+ And all this you can do with a nanoscopic amount of work compared + to the team of human computers toiling + with Milton Abramovitz and Irene Stegen at the US National Bureau + of Standards (now NIST). + Starting in 1938, their "Handbook of Mathematical Functions + with Formulas, Graphs and Mathematical Tables", was eventually + published in 1964, and has been reprinted numerous times since. (A + major replacement is planned at Digital + Library of Mathematical Functions). +

+

+

+

+ Pretty-printing a traditional 2-dimensional table is left as an exercise + for the student, but why bother now that the Math Toolkit lets you + write +

+

+

+

+ +

+
+double z = 2.; 
+cout << "Area for z = " << z << " is " << cdf(s, z) << endl; // to get the area for z.
+

+

+

+

+

+ Correspondingly, we can obtain the traditional 'critical' values + for significance levels. For the 95% confidence level, the significance + level usually called alpha, is 0.05 = 1 - 0.95 (for a one-sided test), + so we can write +

+

+

+

+ +

+
+  cout << "95% of area has a z below " << quantile(s, 0.95) << endl;
+// 95% of area has a z below 1.64485
+

+

+

+

+

+ and a two-sided test (a comparison between two levels, rather than + a one-sided test) +

+

+

+

+ +

+
+  cout << "95% of area has a z between " << quantile(s, 0.975)
+    << " and " << -quantile(s, 0.975) << endl;
+// 95% of area has a z between 1.95996 and -1.95996
+

+

+

+

+

+ First, define a table of significance levels: these are the probabilities + that the true occurrence frequency lies outside the calculated interval. +

+

+

+

+ It is convenient to have an alpha level for the probability that + z lies outside just one standard deviation. This will not be some + nice neat number like 0.05, but we can easily calculate it, +

+

+

+

+ +

+
+double alpha1 = cdf(s, -1) * 2; // 0.3173105078629142
+cout << setprecision(17) << "Significance level for z == 1 is " << alpha1 << endl;
+

+

+

+

+

+ and place in our array of favorite alpha values. +

+

+

+

+ +

+
+double alpha[] = {0.3173105078629142, // z for 1 standard deviation.
+  0.20, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+

+

+

+

+

+ Confidence value as % is (1 - alpha) * 100 (so alpha 0.05 == 95% + confidence) that the true occurrence frequency lies inside + the calculated interval. +

+

+

+

+ +

+
+cout << "level of significance (alpha)" << setprecision(4) << endl;
+cout << "2-sided       1 -sided          z(alpha) " << endl;
+for (int i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+{
+  cout << setw(15) << alpha[i] << setw(15) << alpha[i] /2 << setw(10) << quantile(complement(s,  alpha[i]/2)) << endl;
+  // Use quantile(complement(s, alpha[i]/2)) to avoid potential loss of accuracy from quantile(s,  1 - alpha[i]/2) 
+}
+cout << endl;
+

+

+

+

+

+ Notice the distinction between one-sided (also called one-tailed) + where we are using a > or < + test (and not both) and considering the area of the tail (integral) + from z up to +∞, and a two-sided test where we are using two > + and < tests, and thus considering + two tails, from -∞ up to z low and z high up to +∞. +

+

+

+

+ So the 2-sided values alpha[i] are calculated using alpha[i]/2. +

+

+

+

+ If we consider a simple example of alpha = 0.05, then for a two-sided + test, the lower tail area from -∞ up to -1.96 is 0.025 (alpha/2) and + the upper tail area from +z up to +1.96 is also 0.025 (alpha/2), + and the area between -1.96 up to 12.96 is alpha = 0.95. and the sum + of the two tails is 0.025 + 0.025 = 0.05, +

+

+

+
+ + Standard + deviations either side of the Mean +
+

+

+

+ Armed with the cumulative distribution function, we can easily calculate + the easy to remember proportion of values that lie within 1, 2 and + 3 standard deviations from the mean. +

+

+

+

+ +

+
+cout.precision(3);
+cout << showpoint << "cdf(s, s.standard_deviation()) = "
+  << cdf(s, s.standard_deviation()) << endl;  // from -infinity to 1 sd
+cout << "cdf(complement(s, s.standard_deviation())) = "
+  << cdf(complement(s, s.standard_deviation())) << endl;
+cout << "Fraction 1 standard deviation within either side of mean is "
+  << 1 -  cdf(complement(s, s.standard_deviation())) * 2 << endl;
+cout << "Fraction 2 standard deviations within either side of mean is "
+  << 1 -  cdf(complement(s, 2 * s.standard_deviation())) * 2 << endl;
+cout << "Fraction 3 standard deviations within either side of mean is "
+  << 1 -  cdf(complement(s, 3 * s.standard_deviation())) * 2 << endl;
+

+

+

+

+

+ To a useful precision, the 1, 2 & 3 percentages are 68, 95 and + 99.7, and these are worth memorising as useful 'rules of thumb', + as, for example, in standard + deviation: +

+

+ +

+
Fraction 1 standard deviation within either side of mean is 0.683
+Fraction 2 standard deviations within either side of mean is 0.954
+Fraction 3 standard deviations within either side of mean is 0.997
+
+

+

+

+ We could of course get some really accurate values for these confidence + intervals by using cout.precision(15); +

+

+ +

+
Fraction 1 standard deviation within either side of mean is 0.682689492137086
+Fraction 2 standard deviations within either side of mean is 0.954499736103642
+Fraction 3 standard deviations within either side of mean is 0.997300203936740
+
+

+

+

+ But before you get too excited about this impressive precision, don't + forget that the confidence intervals of the + standard deviation are surprisingly wide, especially if + you have estimated the standard deviation from only a few measurements. +

+

+

+
+ + Some + simple examples +
+
+ + Life + of light bulbs +
+

+

+

+ Examples from K. Krishnamoorthy, Handbook of Statistical Distributions + with Applications, ISBN 1 58488 635 8, page 125... implemented using + the Math Toolkit library. +

+

+

+

+ A few very simple examples are shown here: +

+

+

+

+ +

+
+// K. Krishnamoorthy, Handbook of Statistical Distributions with Applications,
+ // ISBN 1 58488 635 8, page 125, example 10.3.5
+

+

+

+

+

+ Mean lifespan of 100 W bulbs is 1100 h with standard deviation of + 100 h. Assuming, perhaps with little evidence and much faith, that + the distribution is normal, we construct a normal distribution called + bulbs with these values: +

+

+

+

+ +

+
+double mean_life = 1100.;
+double life_standard_deviation = 100.;
+normal bulbs(mean_life, life_standard_deviation); 
+double expected_life = 1000.;
+

+

+

+

+

+ The we can use the Cumulative distribution function to predict fractions + (or percentages, if * 100) that will last various lifetimes. +

+

+

+

+ +

+
+cout << "Fraction of bulbs that will last at best (<=) " // P(X <= 1000)
+  << expected_life << " is "<< cdf(bulbs, expected_life) << endl;
+cout << "Fraction of bulbs that will last at least (>) " // P(X > 1000)
+  << expected_life << " is "<< cdf(complement(bulbs, expected_life)) << endl;
+double min_life = 900;
+double max_life = 1200;
+cout << "Fraction of bulbs that will last between "
+  << min_life << " and " << max_life << " is "
+  << cdf(bulbs, max_life)  // P(X <= 1200)
+   - cdf(bulbs, min_life) << endl; // P(X <= 900)
+

+

+

+

+
+ + + + + +
[Note]Note

+ Real-life failures are often very ab-normal, with a significant + number that 'dead-on-arrival' or suffer failure very early in their + life: the lifetime of the survivors of 'early mortality' may be + well described by the normal distribution. +

+

+

+
+ + How + many onions? +
+

+

+

+ Weekly demand for 5 lb sacks of onions at a store is normally distributed + with mean 140 sacks and standard deviation 10. +

+

+

+

+ +

+
+double mean = 140.; // sacks per week.
+double standard_deviation = 10; 
+normal sacks(mean, standard_deviation);
+
+double stock = 160.; // per week.
+cout << "Percentage of weeks overstocked "
+  << cdf(sacks, stock) * 100. << endl; // P(X <=160)
+// Percentage of weeks overstocked 97.7
+

+

+

+

+

+ So there will be lots of mouldy onions! So we should be able to say + what stock level will meet demand 95% of the weeks. +

+

+

+

+ +

+
+double stock_95 = quantile(sacks, 0.95);
+cout << "Store should stock " << int(stock_95) << " sacks to meet 95% of demands." << endl;
+

+

+

+

+

+ And it is easy to estimate how to meet 80% of demand, and waste even + less. +

+

+

+

+ +

+
+double stock_80 = quantile(sacks, 0.80);
+cout << "Store should stock " << int(stock_80) << " sacks to meet 8 out of 10 demands." << endl;
+
+

+

+

+

+
+ + Packing + beef +
+

+

+

+ A machine is set to pack 3 kg of ground beef per pack. Over a long + period of time it is found that the average packed was 3 kg with + a standard deviation of 0.1 kg. Assuming the packing is normally + distributed, we can find the fraction (or %) of packages that weigh + more than 3.1 kg. +

+

+

+

+ +

+
+double mean = 3.; // kg
+double standard_deviation = 0.1; // kg
+normal packs(mean, standard_deviation);
+
+double max_weight = 3.1; // kg
+cout << "Percentage of packs > " << max_weight << " is "
+<< cdf(complement(packs, max_weight)) << endl; // P(X > 3.1)
+
+double under_weight = 2.9;
+cout <<"fraction of packs <= " << under_weight << " with a mean of " << mean 
+  << " is " << cdf(complement(packs, under_weight)) << endl;
+// fraction of packs <= 2.9 with a mean of 3 is 0.841345
+// This is 0.84 - more than the target 0.95
+// Want 95% to be over this weight, so what should we set the mean weight to be?
+// KK StatCalc says:
+double over_mean = 3.0664;
+normal xpacks(over_mean, standard_deviation);
+cout << "fraction of packs >= " << under_weight
+<< " with a mean of " << xpacks.mean() 
+  << " is " << cdf(complement(xpacks, under_weight)) << endl;
+// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005
+double under_fraction = 0.05;  // so 95% are above the minimum weight mean - sd = 2.9
+double low_limit = standard_deviation;
+double offset = mean - low_limit - quantile(packs, under_fraction);
+double nominal_mean = mean + offset;
+
+normal nominal_packs(nominal_mean, standard_deviation);
+cout << "Setting the packer to " << nominal_mean << " will mean that "
+  << "fraction of packs >= " << under_weight 
+  << " is " << cdf(complement(nominal_packs, under_weight)) << endl;
+

+

+

+

+

+ Setting the packer to 3.06449 will mean that fraction of packs >= + 2.9 is 0.95. +

+

+

+

+ Setting the packer to 3.13263 will mean that fraction of packs >= + 2.9 is 0.99, but will more than double the mean loss from 0.0644 + to 0.133. +

+

+

+

+ Alternatively, we could invest in a better (more precise) packer + with a lower standard deviation. +

+

+

+

+ To estimate how much better (how much smaller standard deviation) + it would have to be, we need to get the 5% quantile to be located + at the under_weight limit, 2.9 +

+

+

+

+ +

+
+double p = 0.05; // wanted p th quantile.
+cout << "Quantile of " << p << " = " << quantile(packs, p)
+  << ", mean = " << packs.mean() << ", sd = " << packs.standard_deviation() << endl; //
+

+

+

+

+

+ Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1 +

+

+

+

+ With the current packer (mean = 3, sd = 0.1), the 5% quantile is + at 2.8551 kg, a little below our target of 2.9 kg. So we know that + the standard deviation is going to have to be smaller. +

+

+

+

+ Let's start by guessing that it (now 0.1) needs to be halved, to + a standard deviation of 0.05 +

+

+

+

+ +

+
+normal pack05(mean, 0.05); 
+cout << "Quantile of " << p << " = " << quantile(pack05, p) 
+  << ", mean = " << pack05.mean() << ", sd = " << pack05.standard_deviation() << endl;
+
+cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean 
+  << " and standard deviation of " << pack05.standard_deviation()
+  << " is " << cdf(complement(pack05, under_weight)) << endl;
+//
+

+

+

+

+

+ Fraction of packs >= 2.9 with a mean of 3 and standard deviation + of 0.05 is 0.9772 +

+

+

+

+ So 0.05 was quite a good guess, but we are a little over the 2.9 + target, so the standard deviation could be a tiny bit more. So we + could do some more guessing to get closer, say by increasing to 0.06 +

+

+

+

+ +

+
+normal pack06(mean, 0.06); 
+cout << "Quantile of " << p << " = " << quantile(pack06, p) 
+  << ", mean = " << pack06.mean() << ", sd = " << pack06.standard_deviation() << endl;
+
+cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean 
+  << " and standard deviation of " << pack06.standard_deviation()
+  << " is " << cdf(complement(pack06, under_weight)) << endl;
+

+

+

+

+

+ Fraction of packs >= 2.9 with a mean of 3 and standard deviation + of 0.06 is 0.9522 +

+

+

+

+ Now we are getting really close, but to do the job properly, we could + use root finding method, for example the tools provided, and used + elsewhere, in the Math Toolkit, see Root + Finding Without Derivatives. +

+

+

+

+ But in this normal distribution case, we could be even smarter and + make a direct calculation. +

+

+

+

+ +

+
+normal s; // For standard normal distribution, 
+double sd = 0.1;
+double x = 2.9; // Our required limit.
+// then probability p = N((x - mean) / sd)
+// So if we want to find the standard deviation that would be required to meet this limit,
+// so that the p th quantile is located at x,
+// in this case the 0.95 (95%) quantile at 2.9 kg pack weight, when the mean is 3 kg.
+
+double prob =  pdf(s, (x - mean) / sd);
+double qp = quantile(s, 0.95);
+cout << "prob = " << prob << ", quantile(p) " << qp << endl; // p = 0.241971, quantile(p) 1.64485
+// Rearranging, we can directly calculate the required standard deviation:
+double sd95 = abs((x - mean)) / qp;
+
+cout << "If we want the "<< p << " th quantile to be located at "  
+  << x << ", would need a standard deviation of " << sd95 << endl;
+
+normal pack95(mean, sd95);  // Distribution of the 'ideal better' packer.
+cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean 
+  << " and standard deviation of " << pack95.standard_deviation()
+  << " is " << cdf(complement(pack95, under_weight)) << endl;
+
+// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0608 is 0.95
+

+

+

+

+

+ Notice that these two deceptively simple questions (do we over-fill + or measure better) are actually very common. The weight of beef might + be replaced by a measurement of more or less anything. But the calculations + rely on the accuracy of the standard deviation - something that is + almost always less good than we might wish, especially if based on + a few measurements. +

+

+

+
+ + Length + of bolts +
+

+

+

+ A bolt is usable if between 3.9 and 4.1 long. From a large batch + of bolts, a sample of 50 show a mean length of 3.95 with standard + deviation 0.1. Assuming a normal distribution, what proportion is + usable? The true sample mean is unknown, but we can use the sample + mean and standard deviation to find approximate solutions. +

+

+

+

+ +

+
+    normal bolts(3.95, 0.1);
+    double top = 4.1;
+    double bottom = 3.9; 
+
+cout << "Fraction long enough [ P(X <= " << top << ") ] is " << cdf(bolts, top) << endl;
+cout << "Fraction too short [ P(X <= " << bottom << ") ] is " << cdf(bolts, bottom) << endl;
+cout << "Fraction OK  -between " << bottom << " and " << top
+  << "[ P(X <= " << top  << ") - P(X<= " << bottom << " ) ] is "
+  << cdf(bolts, top) - cdf(bolts, bottom) << endl;
+
+cout << "Fraction too long [ P(X > " << top << ") ] is "
+  << cdf(complement(bolts, top)) << endl;
+
+cout << "95% of bolts are shorter than " << quantile(bolts, 0.95) << endl;
+ 
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html new file mode 100644 index 000000000..7d4359c42 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg.html @@ -0,0 +1,58 @@ + + + +Student's t Distribution Examples + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html new file mode 100644 index 000000000..4fc5c4a19 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/paired_st.html @@ -0,0 +1,79 @@ + + + +Comparing two paired samples with the Student's t distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine that we have a before and after reading for each item in the + sample: for example we might have measured blood pressure before and + after administration of a new drug. We can't pool the results and compare + the means before and after the change, because each patient will have + a different baseline reading. Instead we calculate the difference between + before and after measurements in each patient, and calculate the mean + and standard deviation of the differences. To test whether a significant + change has taken place, we can then test the null-hypothesis that the + true mean is zero using the same procedure we used in the single sample + cases previously discussed. +

+

+ That means we can: +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html new file mode 100644 index 000000000..2a1f81b5e --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_intervals.html @@ -0,0 +1,273 @@ + + + +Calculating confidence intervals on the mean with the Students-t distribution + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Let's say you have a sample mean, you may wish to know what confidence + intervals you can place on that mean. Colloquially: "I want an + interval that I can be P% sure contains the true mean". (On a + technical point, note that the interval either contains the true mean + or it does not: the meaning of the confidence level is subtly different + from this colloquialism. More background information can be found on + the NIST + site). +

+

+ The formula for the interval can be expressed as: +

+

+ +

+

+ Where, Ys is the sample mean, s + is the sample standard deviation, N is the sample + size, [alpha] is the desired significance level + and t(α/2,N-1) is the upper critical value of the + Students-t distribution with N-1 degrees of freedom. +

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

+ The quantity α is the maximum acceptable risk of falsely rejecting + the null-hypothesis. The smaller the value of α the greater the strength + of the test. +

+

+ The confidence level of the test is defined as 1 - α, and often expressed + as a percentage. So for example a significance level of 0.05, is + equivalent to a 95% confidence level. Refer to "What + are confidence intervals?" in NIST/SEMATECH + e-Handbook of Statistical Methods. for more information. +

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

+ The usual assumptions of independent + and identically distributed (i.i.d.) variables and normal distribution + of course apply here, as they do in other examples. +

+

+ From the formula, it should be clear that: +

+
    +
  • + The width of the confidence interval decreases as the sample size + increases. +
  • +
  • + The width increases as the standard deviation increases. +
  • +
  • + The width increases as the confidence level increases + (0.5 towards 0.99999 - stronger). +
  • +
  • + The width increases as the significance level decreases + (0.5 towards 0.00000...01 - stronger). +
  • +
+

+ The following example code is taken from the example program students_t_single_sample.cpp. +

+

+ We'll begin by defining a procedure to calculate intervals for various + confidence levels; the procedure will print these out as a table: +

+
+// Needed includes:
+#include <boost/math/distributions/students_t.hpp>
+#include <iostream>
+#include <iomanip>
+// Bring everything into global namespace for ease of use:
+using namespace boost::math;
+using namespace std;   
+
+void confidence_limits_on_mean(
+   double Sm,           // Sm = Sample Mean.
+   double Sd,           // Sd = Sample Standard Deviation.
+   unsigned Sn)         // Sn = Sample Size.
+{
+   using namespace std;
+   using namespace boost::math;
+
+   // Print out general info:
+   cout << 
+      "__________________________________\n"
+      "2-Sided Confidence Limits For Mean\n"
+      "__________________________________\n\n";
+   cout << setprecision(7);
+   cout << setw(40) << left << "Number of Observations" << "=  " << Sn << "\n";
+   cout << setw(40) << left << "Mean" << "=  " << Sm << "\n";
+   cout << setw(40) << left << "Standard Deviation" << "=  " << Sd << "\n";
+
+

+ We'll define a table of significance/risk levels for which we'll compute + intervals: +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+
+

+ Note that these are the complements of the confidence/probability levels: + 0.5, 0.75, 0.9 .. 0.99999). +

+

+ Next we'll declare the distribution object we'll need, note that the + degrees of freedom parameter is the sample size + less one: +

+
+students_t dist(Sn - 1);
+
+

+ Most of what follows in the program is pretty printing, so let's focus + on the calculation of the interval. First we need the t-statistic, + computed using the quantile function and our significance + level. Note that since the significance levels are the complement of + the probability, we have to wrap the arguments in a call to complement(...): +

+
+double T = quantile(complement(dist, alpha[i] / 2));
+
+

+ Note that alpha was divided by two, since we'll be calculating both + the upper and lower bounds: had we been interested in a single sided + interval then we would have omitted this step. +

+

+ Now to complete the picture, we'll get the (one-sided) width of the + interval from the t-statistic by multiplying by the standard deviation, + and dividing by the square root of the sample size: +

+
+double w = T * Sd / sqrt(double(Sn));
+
+

+ The two-sided interval is then the sample mean plus and minus this + width. +

+

+ And apart from some more pretty-printing that completes the procedure. +

+

+ Let's take a look at some sample output, first using the Heat + flow data from the NIST site. The data set was collected by + Bob Zarr of NIST in January, 1990 from a heat flow meter calibration + and stability analysis. The corresponding dataplot output for this + test can be found in section + 3.5.2 of the NIST/SEMATECH + e-Handbook of Statistical Methods.. +

+
   __________________________________
+   2-Sided Confidence Limits For Mean
+   __________________________________
+
+   Number of Observations                  =  195
+   Mean                                    =  9.26146
+   Standard Deviation                      =  0.02278881
+
+
+   ___________________________________________________________________
+   Confidence       T           Interval          Lower          Upper
+    Value (%)     Value          Width            Limit          Limit
+   ___________________________________________________________________
+       50.000     0.676       1.103e-003        9.26036        9.26256
+       75.000     1.154       1.883e-003        9.25958        9.26334
+       90.000     1.653       2.697e-003        9.25876        9.26416
+       95.000     1.972       3.219e-003        9.25824        9.26468
+       99.000     2.601       4.245e-003        9.25721        9.26571
+       99.900     3.341       5.453e-003        9.25601        9.26691
+       99.990     3.973       6.484e-003        9.25498        9.26794
+       99.999     4.537       7.404e-003        9.25406        9.26886
+
+

+ As you can see the large sample size (195) and small standard deviation + (0.023) have combined to give very small intervals, indeed we can be + very confident that the true mean is 9.2. +

+

+ For comparison the next example data output is taken from P.K.Hou, + O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from + Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. + Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907. + The values result from the determination of mercury by cold-vapour + atomic absorption. +

+
   __________________________________
+   2-Sided Confidence Limits For Mean
+   __________________________________
+
+   Number of Observations                  =  3
+   Mean                                    =  37.8000000
+   Standard Deviation                      =  0.9643650
+
+
+   ___________________________________________________________________
+   Confidence       T           Interval          Lower          Upper
+    Value (%)     Value          Width            Limit          Limit
+   ___________________________________________________________________
+       50.000     0.816            0.455       37.34539       38.25461
+       75.000     1.604            0.893       36.90717       38.69283
+       90.000     2.920            1.626       36.17422       39.42578
+       95.000     4.303            2.396       35.40438       40.19562
+       99.000     9.925            5.526       32.27408       43.32592
+       99.900    31.599           17.594       20.20639       55.39361
+       99.990    99.992           55.673      -17.87346       93.47346
+       99.999   316.225          176.067     -138.26683      213.86683
+
+

+ This time the fact that there are only three measurements leads to + much wider intervals, indeed such large intervals that it's hard to + be very confident in the location of the mean. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html new file mode 100644 index 000000000..51a99f352 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_size.html @@ -0,0 +1,184 @@ + + + +Estimating how large a sample size would have to become in order to give a significant Students-t test result with a single sample test + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine you have conducted a Students-t test on a single sample in + order to check for systematic errors in your measurements. Imagine + that the result is borderline. At this point one might go off and collect + more data, but it might be prudent to first ask the question "How + much more?". The parameter estimators of the students_t_distribution + class can provide this information. +

+

+ This section is based on the example code in students_t_single_sample.cpp + and we begin by defining a procedure that will print out a table of + estimated sample sizes for various confidence levels: +

+
+// Needed includes:
+#include <boost/math/distributions/students_t.hpp>
+#include <iostream>
+#include <iomanip>
+// Bring everything into global namespace for ease of use:
+using namespace boost::math;
+using namespace std;   
+
+void single_sample_find_df(
+   double M,          // M = true mean.
+   double Sm,         // Sm = Sample Mean.
+   double Sd)         // Sd = Sample Standard Deviation.
+{
+
+

+ Next we define a table of significance levels: +

+
+double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
+
+

+ Printing out the table of sample sizes required for various confidence + levels begins with the table header: +

+
+cout << "\n\n"
+        "_______________________________________________________________\n"
+        "Confidence       Estimated          Estimated\n"
+        " Value (%)      Sample Size        Sample Size\n"
+        "              (one sided test)    (two sided test)\n"
+        "_______________________________________________________________\n";
+
+

+ And now the important part: the sample sizes required. Class students_t_distribution has a static + member function find_degrees_of_freedom + that will calculate how large a sample size needs to be in order to + give a definitive result. +

+

+ The first argument is the difference between the means that you wish + to be able to detect, here it's the absolute value of the difference + between the sample mean, and the true mean. +

+

+ Then come two probability values: alpha and beta. Alpha is the maximum + acceptable risk of rejecting the null-hypothesis when it is in fact + true. Beta is the maximum acceptable risk of failing to reject the + null-hypothesis when in fact it is false. Also note that for a two-sided + test, alpha must be divided by 2. +

+

+ The final parameter of the function is the standard deviation of the + sample. +

+

+ In this example, we assume that alpha and beta are the same, and call + find_degrees_of_freedom + twice: once with alpha for a one-sided test, and once with alpha/2 + for a two-sided test. +

+
+   for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
+   {
+      // Confidence value:
+      cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
+      // calculate df for single sided test:
+      double df = students_t::find_degrees_of_freedom(
+         fabs(M - Sm), alpha[i], alpha[i], Sd);
+      // convert to sample size:
+      double size = ceil(df) + 1;
+      // Print size:
+      cout << fixed << setprecision(0) << setw(16) << right << size;
+      // calculate df for two sided test:
+      df = students_t::find_degrees_of_freedom(
+         fabs(M - Sm), alpha[i]/2, alpha[i], Sd);
+      // convert to sample size:
+      size = ceil(df) + 1;
+      // Print size:
+      cout << fixed << setprecision(0) << setw(16) << right << size << endl;
+   }
+   cout << endl;
+}
+
+

+ Let's now look at some sample output using data taken from P.K.Hou, + O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from + Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. + Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907. + The values result from the determination of mercury by cold-vapour + atomic absorption. +

+

+ Only three measurements were made, and the Students-t test above gave + a borderline result, so this example will show us how many samples + would need to be collected: +

+
_____________________________________________________________
+Estimated sample sizes required for various confidence levels
+_____________________________________________________________
+
+True Mean                               =  38.90000
+Sample Mean                             =  37.80000
+Sample Standard Deviation               =  0.96437
+
+
+_______________________________________________________________
+Confidence       Estimated          Estimated
+ Value (%)      Sample Size        Sample Size
+              (one sided test)    (two sided test)
+_______________________________________________________________
+    50.000               2               3
+    75.000               4               5
+    90.000               8              10
+    95.000              12              14
+    99.000              21              23
+    99.900              36              38
+    99.990              51              54
+    99.999              67              69
+
+

+ So in this case, many more measurements would have had to be made, + for example at the 95% level, 14 measurements in total for a two-sided + test. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html new file mode 100644 index 000000000..08f166c8a --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/tut_mean_test.html @@ -0,0 +1,337 @@ + + + +Testing a sample mean for difference from a "true" mean + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ When calibrating or comparing a scientific instrument or measurement + method of some kind, we want to be answer the question "Does an + observed sample mean differ from the "true" mean in any significant + way?". If it does, then we have evidence of a systematic difference. + This question can be answered with a Students-t test: more information + can be found on + the NIST site. +

+

+ Of course, the assignment of "true" to one mean may be quite + arbitrary, often this is simply a "traditional" method of + measurement. +

+

+ The following example code is taken from the example program students_t_single_sample.cpp. +

+

+ We'll begin by defining a procedure to determine which of the possible + hypothesis are rejected or not-rejected at a given significance level: +

+
+ + + + + +
[Note]Note

+ Non-statisticians might say 'not-rejected' means 'accepted', (often + of the null-hypothesis) implying, wrongly, that there really IS no difference, but statisticans eschew + this to avoid implying that there is positive evidence of 'no difference'. + 'Not-rejected' here means there is no evidence + of difference, but there still might well be a difference. For example, + see argument + from ignorance and Absence + of evidence does not constitute evidence of absence. +

+
+// Needed includes:
+#include <boost/math/distributions/students_t.hpp>
+#include <iostream>
+#include <iomanip>
+// Bring everything into global namespace for ease of use:
+using namespace boost::math;
+using namespace std;   
+
+void single_sample_t_test(double M, double Sm, double Sd, unsigned Sn, double alpha)
+{
+   //
+   // M = true mean.
+   // Sm = Sample Mean.
+   // Sd = Sample Standard Deviation.
+   // Sn = Sample Size.
+   // alpha = Significance Level.
+
+

+ Most of the procedure is pretty-printing, so let's just focus on the + calculation, we begin by calculating the t-statistic: +

+
+// Difference in means:
+double diff = Sm - M;
+// Degrees of freedom:
+unsigned v = Sn - 1;
+// t-statistic:
+double t_stat = diff * sqrt(double(Sn)) / Sd;
+
+

+ Finally calculate the probability from the t-statistic. If we're interested + in simply whether there is a difference (either less or greater) or + not, we don't care about the sign of the t-statistic, and we take the + complement of the probability for comparison to the significance level: +

+
+students_t dist(v);
+double q = cdf(complement(dist, fabs(t_stat)));
+
+

+ The procedure then prints out the results of the various tests that + can be done, these can be summarised in the following table: +

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

+ Hypothesis +

+
+

+ Test +

+
+

+ The Null-hypothesis: there is no difference + in means +

+
+

+ Reject if complement of CDF for |t| < significance level + / 2: +

+

+ cdf(complement(dist, + fabs(t))) + < alpha + / 2 +

+
+

+ The Alternative-hypothesis: there is + difference in means +

+
+

+ Reject if complement of CDF for |t| > significance level + / 2: +

+

+ cdf(complement(dist, + fabs(t))) + > alpha + / 2 +

+
+

+ The Alternative-hypothesis: the sample mean is + less than the true mean. +

+
+

+ Reject if CDF of t > significance level: +

+

+ cdf(dist, + t) + > alpha +

+
+

+ The Alternative-hypothesis: the sample mean is + greater than the true mean. +

+
+

+ Reject if complement of CDF of t > significance level: +

+

+ cdf(complement(dist, + t)) + > alpha +

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

+ Notice that the comparisons are against alpha + / 2 + for a two-sided test and against alpha + for a one-sided test +

+

+ Now that we have all the parts in place, let's take a look at some + sample output, first using the Heat + flow data from the NIST site. The data set was collected by + Bob Zarr of NIST in January, 1990 from a heat flow meter calibration + and stability analysis. The corresponding dataplot output for this + test can be found in section + 3.5.2 of the NIST/SEMATECH + e-Handbook of Statistical Methods.. +

+
   __________________________________
+   Student t test for a single sample
+   __________________________________
+
+   Number of Observations                                 =  195
+   Sample Mean                                            =  9.26146
+   Sample Standard Deviation                              =  0.02279
+   Expected True Mean                                     =  5.00000
+
+   Sample Mean - Expected Test Mean                       =  4.26146
+   Degrees of Freedom                                     =  194
+   T Statistic                                            =  2611.28380
+   Probability that difference is due to chance           =  0.000e+000
+
+   Results for Alternative Hypothesis and alpha           =  0.0500
+
+   Alternative Hypothesis     Conclusion
+   Mean != 5.000              NOT REJECTED
+   Mean  < 5.000              REJECTED
+   Mean  > 5.000              NOT REJECTED
+
+

+ You will note the line that says the probability that the difference + is due to chance is zero. From a philosophical point of view, of course, + the probability can never reach zero. However, in this case the calculated + probability is smaller than the smallest representable double precision + number, hence the appearance of a zero here. Whatever its "true" + value is, we know it must be extraordinarily small, so the alternative + hypothesis - that there is a difference in means - is not rejected. +

+

+ For comparison the next example data output is taken from P.K.Hou, + O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. and from + Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 J. C. + Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907. + The values result from the determination of mercury by cold-vapour + atomic absorption. +

+
   __________________________________
+   Student t test for a single sample
+   __________________________________
+
+   Number of Observations                                 =  3
+   Sample Mean                                            =  37.80000
+   Sample Standard Deviation                              =  0.96437
+   Expected True Mean                                     =  38.90000
+
+   Sample Mean - Expected Test Mean                       =  -1.10000
+   Degrees of Freedom                                     =  2
+   T Statistic                                            =  -1.97566
+   Probability that difference is due to chance           =  1.869e-001
+
+   Results for Alternative Hypothesis and alpha           =  0.0500
+
+   Alternative Hypothesis     Conclusion
+   Mean != 38.900             REJECTED
+   Mean  < 38.900             REJECTED
+   Mean  > 38.900             REJECTED
+
+

+ As you can see the small number of measurements (3) has led to a large + uncertainty in the location of the true mean. So even though there + appears to be a difference between the sample mean and the expected + true mean, we conclude that there is no significant difference, and + are unable to reject the null hypothesis. However, if we were to lower + the bar for acceptance down to alpha = 0.1 (a 90% confidence level) + we see a different output: +

+
__________________________________
+Student t test for a single sample
+__________________________________
+
+Number of Observations                                 =  3
+Sample Mean                                            =  37.80000
+Sample Standard Deviation                              =  0.96437
+Expected True Mean                                     =  38.90000
+
+Sample Mean - Expected Test Mean                       =  -1.10000
+Degrees of Freedom                                     =  2
+T Statistic                                            =  -1.97566
+Probability that difference is due to chance           =  1.869e-001
+
+Results for Alternative Hypothesis and alpha           =  0.1000
+
+Alternative Hypothesis     Conclusion
+Mean != 38.900            REJECTED
+Mean  < 38.900            NOT REJECTED
+Mean  > 38.900            REJECTED
+
+

+ In this case, we really have a borderline result, and more data (and/or + more accurate data), is needed for a more convincing conclusion. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html new file mode 100644 index 000000000..0840674d1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/dist/stat_tut/weg/st_eg/two_sample_students_t.html @@ -0,0 +1,362 @@ + + + +Comparing the means of two samples with the Students-t test + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Imagine that we have two samples, and we wish to determine whether + their means are different or not. This situation often arises when + determining whether a new process or treatment is better than an old + one. +

+

+ In this example, we'll be using the Car + Mileage sample data from the NIST + website. The data compares miles per gallon of US cars with + miles per gallon of Japanese cars. +

+

+ The sample code is in students_t_two_samples.cpp. +

+

+ There are two ways in which this test can be conducted: we can assume + that the true standard deviations of the two samples are equal or not. + If the standard deviations are assumed to be equal, then the calculation + of the t-statistic is greatly simplified, so we'll examine that case + first. In real life we should verify whether this assumption is valid + with a Chi-Squared test for equal variances. +

+

+ We begin by defining a procedure that will conduct our test assuming + equal variances: +

+
+// Needed headers:
+#include <boost/math/distributions/students_t.hpp>
+#include <iostream>
+#include <iomanip>
+// Simplify usage:
+using namespace boost::math;
+using namespace std;
+
+void two_samples_t_test_equal_sd(
+        double Sm1,       // Sm1 = Sample 1 Mean.
+        double Sd1,       // Sd1 = Sample 1 Standard Deviation.
+        unsigned Sn1,     // Sn1 = Sample 1 Size.
+        double Sm2,       // Sm2 = Sample 2 Mean.
+        double Sd2,       // Sd2 = Sample 2 Standard Deviation.
+        unsigned Sn2,     // Sn2 = Sample 2 Size.
+        double alpha)     // alpha = Significance Level.
+{
+
+

+ Our procedure will begin by calculating the t-statistic, assuming equal + variances the needed formulae are: +

+

+ +

+

+ where Sp is the "pooled" standard deviation of the two samples, + and v is the number of degrees of freedom of the + two combined samples. We can now write the code to calculate the t-statistic: +

+
+// Degrees of freedom:
+double v = Sn1 + Sn2 - 2;
+cout << setw(55) << left << "Degrees of Freedom" << "=  " << v << "\n";
+// Pooled variance:
+double sp = sqrt(((Sn1-1) * Sd1 * Sd1 + (Sn2-1) * Sd2 * Sd2) / v);
+cout << setw(55) << left << "Pooled Standard Deviation" << "=  " << v << "\n";
+// t-statistic:
+double t_stat = (Sm1 - Sm2) / (sp * sqrt(1.0 / Sn1 + 1.0 / Sn2));
+cout << setw(55) << left << "T Statistic" << "=  " << t_stat << "\n";
+
+

+ The next step is to define our distribution object, and calculate the + complement of the probability: +

+
+students_t dist(v);
+double q = cdf(complement(dist, fabs(t_stat)));
+cout << setw(55) << left << "Probability that difference is due to chance" << "=  " 
+   << setprecision(3) << scientific << 2 * q << "\n\n";
+
+

+ Here we've used the absolute value of the t-statistic, because we initially + want to know simply whether there is a difference or not (a two-sided + test). However, we can also test whether the mean of the second sample + is greater or is less (one-sided test) than that of the first: all + the possible tests are summed up in the following table: +

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

+ Hypothesis +

+
+

+ Test +

+
+

+ The Null-hypothesis: there is no difference + in means +

+
+

+ Reject if complement of CDF for |t| < significance level + / 2: +

+

+ cdf(complement(dist, + fabs(t))) + < alpha + / 2 +

+
+

+ The Alternative-hypothesis: there is a difference + in means +

+
+

+ Reject if complement of CDF for |t| > significance level + / 2: +

+

+ cdf(complement(dist, + fabs(t))) + < alpha + / 2 +

+
+

+ The Alternative-hypothesis: Sample 1 Mean is less + than Sample 2 Mean. +

+
+

+ Reject if CDF of t > significance level: +

+

+ cdf(dist, + t) + > alpha +

+
+

+ The Alternative-hypothesis: Sample 1 Mean is greater + than Sample 2 Mean. +

+
+

+ Reject if complement of CDF of t > significance level: +

+

+ cdf(complement(dist, + t)) + > alpha +

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

+ For a two-sided test we must compare against alpha / 2 and not alpha. +

+

+ Most of the rest of the sample program is pretty-printing, so we'll + skip over that, and take a look at the sample output for alpha=0.05 + (a 95% probability level). For comparison the dataplot output for the + same data is in section + 1.3.5.3 of the NIST/SEMATECH + e-Handbook of Statistical Methods.. +

+
   ________________________________________________
+   Student t test for two samples (equal variances)
+   ________________________________________________
+
+   Number of Observations (Sample 1)                      =  249
+   Sample 1 Mean                                          =  20.14458
+   Sample 1 Standard Deviation                            =  6.41470
+   Number of Observations (Sample 2)                      =  79
+   Sample 2 Mean                                          =  30.48101
+   Sample 2 Standard Deviation                            =  6.10771
+   Degrees of Freedom                                     =  326.00000
+   Pooled Standard Deviation                              =  326.00000
+   T Statistic                                            =  -12.62059
+   Probability that difference is due to chance           =  5.273e-030
+
+   Results for Alternative Hypothesis and alpha           =  0.0500
+
+   Alternative Hypothesis              Conclusion
+   Sample 1 Mean != Sample 2 Mean       NOT REJECTED
+   Sample 1 Mean <  Sample 2 Mean       NOT REJECTED
+   Sample 1 Mean >  Sample 2 Mean       REJECTED
+
+

+ So with a probability that the difference is due to chance of just + 5.273e-030, we can safely conclude that there is indeed a difference. +

+

+ The tests on the alternative hypothesis show that we must also reject + the hypothesis that Sample 1 Mean is greater than that for Sample 2: + in this case Sample 1 represents the miles per gallon for Japanese + cars, and Sample 2 the miles per gallon for US cars, so we conclude + that Japanese cars are on average more fuel efficient. +

+

+ Now that we have the simple case out of the way, let's look for a moment + at the more complex one: that the standard deviations of the two samples + are not equal. In this case the formula for the t-statistic becomes: +

+

+ +

+

+ And for the combined degrees of freedom we use the Welch-Satterthwaite + approximation: +

+

+ +

+

+ Note that this is one of the rare situations where the degrees-of-freedom + parameter to the Student's t distribution is a real number, and not + an integer value. +

+
+ + + + + +
[Note]Note

+ Some statistical packages truncate the effective degrees of freedom + to an integer value: this may be necessary if you are relying on + lookup tables, but since our code fully supports non-integer degrees + of freedom there is no need to truncate in this case. Also note that + when the degrees of freedom is small then the Welch-Satterthwaite + approximation may be a significant source of error. +

+

+ Putting these formulae into code we get: +

+
+// Degrees of freedom:
+double v = Sd1 * Sd1 / Sn1 + Sd2 * Sd2 / Sn2;
+v *= v;
+double t1 = Sd1 * Sd1 / Sn1;
+t1 *= t1;
+t1 /=  (Sn1 - 1);
+double t2 = Sd2 * Sd2 / Sn2;
+t2 *= t2;
+t2 /= (Sn2 - 1);
+v /= (t1 + t2);
+cout << setw(55) << left << "Degrees of Freedom" << "=  " << v << "\n";
+// t-statistic:
+double t_stat = (Sm1 - Sm2) / sqrt(Sd1 * Sd1 / Sn1 + Sd2 * Sd2 / Sn2);
+cout << setw(55) << left << "T Statistic" << "=  " << t_stat << "\n";
+
+

+ Thereafter the code and the tests are performed the same as before. + Using are car mileage data again, here's what the output looks like: +

+
   __________________________________________________
+   Student t test for two samples (unequal variances)
+   __________________________________________________
+
+   Number of Observations (Sample 1)                      =  249
+   Sample 1 Mean                                          =  20.145
+   Sample 1 Standard Deviation                            =  6.4147
+   Number of Observations (Sample 2)                      =  79
+   Sample 2 Mean                                          =  30.481
+   Sample 2 Standard Deviation                            =  6.1077
+   Degrees of Freedom                                     =  136.87
+   T Statistic                                            =  -12.946
+   Probability that difference is due to chance           =  1.571e-025
+
+   Results for Alternative Hypothesis and alpha           =  0.0500
+
+   Alternative Hypothesis              Conclusion
+   Sample 1 Mean != Sample 2 Mean       NOT REJECTED
+   Sample 1 Mean <  Sample 2 Mean       NOT REJECTED
+   Sample 1 Mean >  Sample 2 Mean       REJECTED
+
+

+ This time allowing the variances in the two samples to differ has yielded + a higher likelihood that the observed difference is down to chance + alone (1.571e-025 compared to 5.273e-030 when equal variances were + assumed). However, the conclusion remains the same: US cars are less + fuel efficient than Japanese models. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview.html b/doc/sf_and_dist/html/math_toolkit/main_overview.html new file mode 100644 index 000000000..cc999d7bd --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview.html @@ -0,0 +1,67 @@ + + + +Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html b/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html new file mode 100644 index 000000000..0467b0ad8 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/contact.html @@ -0,0 +1,62 @@ + + + +Contact Info and Support + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The main support for this library is via the Boost mailing lists: +

+
+

+ You can also find JM at john - at - johnmaddock.co.uk and PAB at pbristow + - at - hetp.u-net.com. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html b/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html new file mode 100644 index 000000000..8c0318b2b --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/directories.html @@ -0,0 +1,124 @@ + + + +Directory and File Structure + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + boost/math +
+
+

+
+
/concepts/
+

+ Prototype defining the essential features + of a RealType class (see real_concept.hpp). Most applications will use + double as the RealType (and + short typedef names of distributions + are reserved for this type where possible), a few will use float or long + double, but it is also possible + to use higher precision types like NTL::RR + that conform to the requirements specified by real_concept. +

+
/constants/
+

+ Templated definition of some highly accurate math constants (in constants.hpp). +

+
/distributions/
+

+ Distributions used in mathematics and, especially, statistics: Gaussian, + Students-t, Fisher, Binomial etc +

+
/policies/
+

+ Policy framework, for handling user requested behaviour modifications. +

+
/special_functions/
+

+ Math functions generally regarded as 'special', like beta, cbrt, erf, + gamma, lgamma, tgamma ... (Some of these are specified in C++, and C99/TR1, + and perhaps TR2). +

+
/tools/
+

+ Tools used by functions, like evaluating polynomials, continued fractions, + root finding, precision and limits, and by tests. Some will find application + outside this package. +

+
+
+
+ + boost/libs +
+
+

+
+
/doc/
+

+ Documentation source files in Quickbook format processed into html and + pdf formats. +

+
/examples/
+

+ Examples and demos of using math functions and distributions. +

+
/performance/
+

+ Performance testing and tuning program. +

+
/test/
+

+ Test files, in various .cpp files, most using Boost.Test (some with test + data as .ipp files, usually generated using NTL RR type with ample precision + for the type, often for precisions suitable for up to 256-bit significand + real types). +

+
/tools/
+

+ Programs used to generate test data. Also changes to the NTL + released package to provide a few additional (and vital) extra features. +

+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html b/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html new file mode 100644 index 000000000..2f01ce2bb --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/error_handling.html @@ -0,0 +1,899 @@ + + + +Error Handling + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Quick + Reference +
+

+ Handling of errors by this library is split into two orthogonal parts: +

+
    +
  • + What kind of error has been raised? +
  • +
  • + What should be done when the error is raised? +
  • +
+

+ The kinds of errors that can be raised are: +

+
+

+
+
Domain Error
+

+ Occurs when one or more arguments to a function are out of range. +

+
Pole Error
+

+ Occurs when the particular arguments cause the function to be evaluated + at a pole with no well defined residual value. For example if tgamma + is evaluated at exactly -2, the function approaches different limiting + values depending upon whether you approach from just above or just below + -2. Hence the function has no well defined value at this point and a + Pole Error will be raised. +

+
Overflow Error
+

+ Occurs when the result is either infinite, or too large to represent + in the numeric type being returned by the function. +

+
Underflow Error
+

+ Occurs when the result is not zero, but is too small to be represented + by any other value in the type being returned by the function. +

+
Denormalisation Error
+

+ Occurs when the returned result would be a denormalised value. +

+
Evaluation Error
+

+ Occurs when an internal error occured that prevented the result from + being evaluated: this should never occur, but if it does, then it's likely + to be due to an iterative method not converging fast enough. +

+
+
+

+ The action undertaken by each error condition is determined by the current + Policy in effect. This can be + changed program-wide by setting some configuration macros, or at namespace + scope, or at the call site (by specifying a specific policy in the function + call). +

+

+ The available actions are: +

+
+

+
+
throw_on_error
+

+ Throws the exception most appropriate to the error condition. +

+
errno_on_error
+

+ Sets ::errno to an appropriate value, and then returns the most appropriate + result +

+
ignore_error
+

+ Ignores the error and simply the returns the most appropriate result. +

+
user_error
+

+ Calls a user-supplied + error handler. +

+
+
+

+ The following tables show all the permutations of errors and actions, with + the default action for each error shown in bold: +

+
+

Table 1. Possible Actions for Domain Errors

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

+ Action +

+
+

+ Behaviour +

+
+

+ throw_on_error +

+
+

+ Throws std::domain_error +

+
+

+ errno_on_error +

+
+

+ Sets ::errno + to EDOM and returns + std::numeric_limits<T>::quiet_NaN() +

+
+

+ ignore_error +

+
+

+ Returns std::numeric_limits<T>::quiet_NaN() +

+
+

+ user_error +

+
+

+ Returns the result of boost::math::policies::user_domain_error: + this + function must be defined by the user. +

+
+
+
+

Table 2. Possible Actions for Pole Errors

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

+ Action +

+
+

+ Behaviour +

+
+

+ throw_on_error +

+
+

+ Throws std::domain_error +

+
+

+ errno_on_error +

+
+

+ Sets ::errno + to EDOM and returns + std::numeric_limits<T>::quiet_NaN() +

+
+

+ ignore_error +

+
+

+ Returns std::numeric_limits<T>::quiet_NaN() +

+
+

+ user_error +

+
+

+ Returns the result of boost::math::policies::user_pole_error: + this + function must be defined by the user. +

+
+
+
+

Table 3. Possible Actions for Overflow Errors

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

+ Action +

+
+

+ Behaviour +

+
+

+ throw_on_error +

+
+

+ Throws std::overflow_error +

+
+

+ errno_on_error +

+
+

+ Sets ::errno + to ERANGE and returns + std::numeric_limits<T>::infinity() +

+
+

+ ignore_error +

+
+

+ Returns std::numeric_limits<T>::infinity() +

+
+

+ user_error +

+
+

+ Returns the result of boost::math::policies::user_overflow_error: + this + function must be defined by the user. +

+
+
+
+

Table 4. Possible Actions for Underflow Errors

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

+ Action +

+
+

+ Behaviour +

+
+

+ throw_on_error +

+
+

+ Throws std::underflow_error +

+
+

+ errno_on_error +

+
+

+ Sets ::errno + to ERANGE and returns + 0. +

+
+

+ ignore_error +

+
+

+ Returns 0 +

+
+

+ user_error +

+
+

+ Returns the result of boost::math::policies::user_underflow_error: + this + function must be defined by the user. +

+
+
+
+

Table 5. Possible Actions for Denorm Errors

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

+ Action +

+
+

+ Behaviour +

+
+

+ throw_on_error +

+
+

+ Throws std::underflow_error +

+
+

+ errno_on_error +

+
+

+ Sets ::errno + to ERANGE and returns + the denormalised value. +

+
+

+ ignore_error +

+
+

+ Returns the denormalised value. +

+
+

+ user_error +

+
+

+ Returns the result of boost::math::policies::user_denorm_error: + this + function must be defined by the user. +

+
+
+
+

Table 6. Possible Actions for Internal Evaluation + Errors

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

+ Action +

+
+

+ Behaviour +

+
+

+ throw_on_error +

+
+

+ Throws boost::math::evaluation_error +

+
+

+ errno_on_error +

+
+

+ Sets ::errno + to EDOM and returns + std::numeric_limits<T>::infinity(). +

+
+

+ ignore_error +

+
+

+ Returns std::numeric_limits<T>::infinity(). +

+
+

+ user_error +

+
+

+ Returns the result of boost::math::policies::user_evaluation_error: + this + function must be defined by the user. +

+
+
+
+ + Rationale +
+

+ The flexibility of the current implementation should be reasonably obvious, + the default behaviours were chosen based on feedback during the formal review + of this library. It was felt that: +

+
    +
  • + Genuine errors should be flagged with exceptions rather than following + C-compatible behaviour and setting ::errno. +
  • +
  • + Numeric underflow and denormalised results were not considered to be fatal + errors in most cases, so it was felt that these should be ignored. +
  • +
+
+ + Finding + More Information +
+

+ There are some pre-processor macro defines that can be used to change + the policy defaults. See also the policy + section. +

+

+ An example is at the Policy tutorial in Changing + the Policy Defaults. +

+

+ Full source code of this typical example of passing a 'bad' argument (negative + degrees of freedom) to Student's t distribution is in + the error handling example. +

+

+ The various kind of errors are described in more detail below. +

+
+ + Domain + Errors +
+

+ When a special function is passed an argument that is outside the range of + values for which that function is defined, then the function returns the + result of: +

+
+boost::math::policies::raise_domain_error<T>(FunctionName, Message, Val, Policy);
+
+

+ Where T is the floating-point + type passed to the function, FunctionName + is the name of the function, Message + is an error message describing the problem, Val is the value that was out + of range, and Policy is the current + policy in use for the function that was called. +

+

+ The default policy behaviour of this function is to throw a std::domain_error + C++ exception. But if the Policy + is to ignore the error, or set global ::errno, then a NaN will be returned. +

+

+ This behaviour is chosen to assist compatibility with the behaviour of ISO/IEC + 9899:1999 Programming languages - C and with the Draft + Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph + 6: +

+
+

+

+

+ "Each of the functions declared above shall return a NaN + (Not a Number) if any argument value is a NaN, but it shall not report + a domain error. Otherwise, each of the functions declared above shall + report a domain error for just those argument values for which: +

+

+

+
+
+

+

+

+ "the function description's Returns clause explicitly + specifies a domain, and those arguments fall outside the specified domain; + or +

+

+

+

+ "the corresponding mathematical function value has a non-zero + imaginary component; or +

+

+

+

+ "the corresponding mathematical function is not mathematically + defined. +

+

+

+
+
+

+

+

+ "Note 2: A mathematical function is mathematically defined + for a given set of argument values if it is explicitly defined for that + set of argument values or if its limiting value exists and does not depend + on the direction of approach." +

+

+

+
+

+ Note that in order to support information-rich error messages when throwing + exceptions, Message must + contain a Boost.Format + recognised format specifier: the argument Val + is inserted into the error message according to the specifier used. +

+

+ For example if Message contains + a "%1%" then it is replaced by the value of Val + to the full precision of T, where as "%.3g" would contain the value + of Val to 3 digits. See the + Boost.Format documentation + for more details. +

+
+ + Evaluation + at a pole +
+

+ When a special function is passed an argument that is at a pole without a + well defined residual value, then the function returns the result of: +

+
+boost::math::policies::raise_pole_error<T>(FunctionName, Message, Val, Policy);
+
+

+ Where T is the floating point + type passed to the function, FunctionName + is the name of the function, Message + is an error message describing the problem, Val + is the value of the argument that is at a pole, and Policy + is the current policy in use for the function that was called. +

+

+ The default behaviour of this function is to throw a std::domain_error exception. + But error + handling policies can be used to change this, for example to ignore_error and return NaN. +

+

+ Note that in order to support information-rich error messages when throwing + exceptions, Message must + contain a Boost.Format + recognised format specifier: the argument val + is inserted into the error message according to the specifier used. +

+

+ For example if Message contains + a "%1%" then it is replaced by the value of val + to the full precision of T, where as "%.3g" would contain the value + of val to 3 digits. See the + Boost.Format documentation + for more details. +

+
+ + Numeric + Overflow +
+

+ When the result of a special function is too large to fit in the argument + floating-point type, then the function returns the result of: +

+
+boost::math::policies::raise_overflow_error<T>(FunctionName, Message, Policy);
+
+

+ Where T is the floating-point + type passed to the function, FunctionName + is the name of the function, Message + is an error message describing the problem, and Policy + is the current policy in use for the function that was called. +

+

+ The default policy for this function is that std::overflow_error + C++ exception is thrown. But if, for example, an ignore_error + policy is used, then returns std::numeric_limits<T>::infinity(). + In this situation if the type T + doesn't support infinities, the maximum value for the type is returned. +

+
+ + Numeric + Underflow +
+

+ If the result of a special function is known to be non-zero, but the calculated + result underflows to zero, then the function returns the result of: +

+
+boost::math::policies::raise_underflow_error<T>(FunctionName, Message, Policy);
+
+

+ Where T is the floating point + type passed to the function, FunctionName + is the name of the function, Message + is an error message describing the problem, and Policy + is the current policy in use for the called function. +

+

+ The default version of this function returns zero. But with another policy, + like throw_on_error, throws + an std::underflow_error C++ exception. +

+
+ + Denormalisation + Errors +
+

+ If the result of a special function is a denormalised value z + then the function returns the result of: +

+
+boost::math::policies::raise_denorm_error<T>(z, FunctionName, Message, Policy);
+
+

+ Where T is the floating point + type passed to the function, FunctionName + is the name of the function, Message + is an error message describing the problem, and Policy + is the current policy in use for the called function. +

+

+ The default version of this function returns z. But + with another policy, like throw_on_error + throws an std::underflow_error C++ exception. +

+
+ + Evaluation + Errors +
+

+ When a special function calculates a result that is known to be erroneous, + or where the result is incalculable then it calls: +

+
+boost::math::policies::raise_evaluation_error<T>(FunctionName, Message, Val, Policy);
+
+

+ Where T is the floating point + type passed to the function, FunctionName + is the name of the function, Message + is an error message describing the problem, Val + is the erroneous value, and Policy + is the current policy in use for the called function. +

+

+ The default behaviour of this function is to throw a boost::math::evaluation_error. +

+

+ Note that in order to support information rich error messages when throwing + exceptions, Message must + contain a Boost.Format + recognised format specifier: the argument val + is inserted into the error message according to the specifier used. +

+

+ For example if Message contains + a "%1%" then it is replaced by the value of val + to the full precision of T, where as "%.3g" would contain the value + of val to 3 digits. See the + Boost.Format documentation + for more details. +

+
+ + Errors + from typecasts +
+

+ Many special functions evaluate their results at a higher precision than + their arguments in order to ensure full machine precision in the result: + for example, a function passed a float argument may evaluate its result using + double precision internally. Many of the errors listed above may therefore + occur not during evaluation, but when converting the result to the narrower + result type. The function: +

+
+template <class T, class Policy, class U>
+T checked_narrowing_cast(U const& val, const char* function);
+
+

+ Is used to perform these conversions, and will call the error handlers listed + above on overflow, underflow + or denormalisation. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html b/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html new file mode 100644 index 000000000..6ab8de5c7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/history1.html @@ -0,0 +1,218 @@ + + + +History and What's New + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+ + Milestone + 5: Post Review First Official Release +
+

+

+
    +
  • + Added Policy based framework that allows fine grained control over function + behaviour. +
  • +
  • +Breaking change: Changed default behaviour + for domain, pole and overflow errors to throw an exception (based on + review feedback), this behaviour can be customised using Policy's. +
  • +
  • +Breaking change: Changed exception thrown + when an internal evaluation error occurs to boost::math::evaluation_error. +
  • +
  • +Breaking change: Changed discrete quantiles + to return an integer result: this is anything up to 20 times faster than + finding the true root, this behaviour can be customised using Policy's. +
  • +
  • + Polynomial/rational function evaluation is now customisable and hopefully + faster than before. +
  • +
  • + Added performance test program. +
  • +
+

+ +

+
+ + Milestone + 4: Second Review Candidate (1st March 2007) +
+

+

+
    +
  • + Moved Xiaogang Zhang's Bessel Functions code into the library, and brought + them into line with the rest of the code. +
  • +
  • + Added C# "Distribution Explorer" demo application. +
  • +
+

+ +

+
+ + Milestone + 3: First Review Candidate (31st Dec 2006) +
+

+

+
    +
  • + Implemented the main probability distribution and density functions. +
  • +
  • + Implemented digamma. +
  • +
  • + Added more factorial functions. +
  • +
  • + Implemented the Hermite, Legendre and Laguerre polynomials plus the spherical + harmonic functions from TR1. +
  • +
  • + Moved Xiaogang Zhang's elliptic integral code into the library, and brought + them into line with the rest of the code. +
  • +
  • + Moved Hubert Holin's existing Boost.Math special functions into this + library and brought them into line with the rest of the code. +
  • +
+

+ +

+
+ + Milestone + 2: Released September 10th 2006 +
+

+

+
    +
  • + Implement preview release of the statistical distributions. +
  • +
  • + Added statistical distributions tutorial. +
  • +
  • + Implemented root finding algorithms. +
  • +
  • + Implemented the inverses of the incomplete gamma and beta functions. +
  • +
  • + Rewrite erf/erfc as rational approximations (valid to 128-bit precision). +
  • +
  • + Integrated the statistical results generated from the test data with + Boost.Test: uses a database of expected results, indexed by test, floating + point type, platform, and compiler. +
  • +
  • + Improved lgamma near 1 and 2 (rational approximations). +
  • +
  • + Improved erf/erfc inverses (rational approximations). +
  • +
  • + Implemented Rational function generation (the Remez method). +
  • +
+

+ +

+
+ + Milestone + 1: Released March 31st 2006 +
+

+

+
    +
  • + Implement gamma/beta/erf functions along with their incomplete counterparts. +
  • +
  • + Generate high quality test data, against which future improvements can + be judged. +
  • +
  • + Provide tools for the evaluation of infinite series, continued fractions, + and rational functions. +
  • +
  • + Provide tools for testing against tabulated test data, and collecting + statistics on error rates. +
  • +
  • + Provide sufficient docs for people to be able to find their way around + the library. +
  • +
+

+

+

+ SVN Revisions: +

+

+

+

+ Sandbox and trunk last synchonised at revision: 40161. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html b/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html new file mode 100644 index 000000000..8377d8275 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/intro.html @@ -0,0 +1,134 @@ + + + +About the Math Toolkit + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This library is divided into three interconnected parts: +

+
+ + Statistical + Distributions +
+

+ Provides a reasonably comprehensive set of statistical + distributions, upon which higher level statistical tests can be built. +

+

+ The initial focus is on the central univariate + distributions. + Both continuous + (like normal + & Fisher) + and discrete + (like binomial + & Poisson) + distributions are provided. +

+

+ A comprehensive tutorial is provided, + along with a series of worked + examples illustrating how the library is used to conduct statistical + tests. +

+
+ + Mathematical + Special Functions +
+

+ Provides a small number of high quality special + functions, initially these were concentrated on functions used in + statistical applications along with those in the Technical + Report on C++ Library Extensions. +

+

+ The function families currently implemented are the gamma, beta & erf + functions along with the incomplete gamma and beta functions (four variants + of each) and all the possible inverses of these, plus digamma, various factorial + functions, Bessel functions, elliptic integrals, sinus cardinals (along with + their hyperbolic variants), inverse hyperbolic functions, Legrendre/Laguerre/Hermite + polynomials and various special power and logarithmic functions. +

+

+ All the implementations are fully generic and support the use of arbitrary + "real-number" types, although they are optimised for use with types + with known-about significand + (or mantissa) sizes: typically float, + double or long + double. +

+
+ + Implementation + Toolkit +
+

+ Provides many of the tools required + to implement mathematical special functions: hopefully the presence of these + will encourage other authors to contribute more special function implementations + in the future. These tools are currently considered experimental: they are + "exposed implementation details" whose interfaces and/or implementations + may change. +

+

+ There are helpers for the evaluation + of infinite series, continued + fractions and rational + approximations. +

+

+ There is a fairly comprehensive set of root finding and function + minimisation algorithms: the root finding algorithms are both with and without + derivative support. +

+

+ A Remez algorithm + implementation allows for the locating of minimax rational approximations. +

+

+ There are also (experimental) classes for the manipulation + of polynomials, for testing + a special function against tabulated test data, and for the rapid generation of test + data and/or data for output to an external graphing application. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html b/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html new file mode 100644 index 000000000..ece07a4fd --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/namespaces.html @@ -0,0 +1,76 @@ + + + +Namespaces + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ All math functions and distributions are in namespace + boost::math +

+

+ So, for example, the Students-t distribution template in namespace + boost::math is +

+
+template <class RealType> class students_t_distribution
+
+

+ and can be instantiated with the help of the reserved name students_t(for RealType + double) +

+
+typedef students_t_distribution<double> students_t;
+
+student_t mydist(10);
+
+

+ Functions not intended for use by applications are in boost::math::detail. +

+

+ Functions that may have more general use, like digits + (significand), max_value, + min_value and epsilon are in boost::math::tools. +

+

+ Policy and configuration information + is in namespace boost::math::policies. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html b/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html new file mode 100644 index 000000000..576cac5da --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/navigation.html @@ -0,0 +1,154 @@ + + + +Navigation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Used in combination with the configured browser key, the following keys act + as handy shortcuts for common navigation tasks. +

+
+ + Shortcuts +
+
+

+

+

+ p - Previous page +

+

+

+

+ n - Next page +

+

+

+

+ h - home +

+

+

+

+ u - Up +

+

+

+
+

+ The following table shows how to access these from common browsers: +

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

+ Browser +

+
+

+ Access Method +

+
+

+ Internet Explorer +

+
+

+ Alt+Key highlights the link only, so for example to move to the next + topic you would need "Alt+n" followed by "Enter". +

+
+

+ Firefox 2.0 and later +

+
+

+ Alt+Shift+Key follows the link, so for example "Alt+Shift+n" + will take you to the next topic. +

+
+

+ Opera +

+
+

+ Press Shift+Esc followed by the access key. +

+
+

+ Konqueror +

+
+

+ Press and release the Ctrl key, followed by the access key +

+
+

+ Some browsers also make these links available in their site-navigation toolbars: + in Opera for example you can use Ctrl plus the left and right arrow keys + to move between "next" and "previous" topics. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html b/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html new file mode 100644 index 000000000..19d6aafb5 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/perf_over.html @@ -0,0 +1,93 @@ + + + +Performance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ By and large the performance of this library should be acceptable for most + needs. However, you should note that the library's primary emphasis is + on accuracy and numerical stability, and not speed. +

+

+

+

+ In terms of the algorithms used, this library aims to use the same "best + of breed" algorithms as many other libraries: the principle difference + is that this library is implemented in C++ - taking advantage of all the + abstraction mechanisms that C++ offers - where as most traditional numeric + libraries are implemented in C or FORTRAN. Traditionally languages such + as C or FORTAN are perceived as easier to optimise than more complex languages + like C++, so in a sense this library provides a good test of current compiler + technology, and the "abstraction penalty" - if any - of C++ compared + to other languages. +

+

+

+

+ The two most important things you can do to ensure the best performance + from this library are: +

+

+

+
    +
  1. + Turn on your compilers optimisations: the difference between "release" + and "debug" builds can easily be a factor + of 20. +
  2. +
  3. + Pick your compiler carefully: performance + differences of up to 8 fold have been found between some windows + compilers for example. +
  4. +
+

+

+

+ The performance section contains + more information on the performance of this library, what you can do to + fine tune it, and how this library compares to some other open source alternatives. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html b/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html new file mode 100644 index 000000000..dbbeb45a2 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/pol_overview.html @@ -0,0 +1,136 @@ + + + +Configuration and Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ Policies are a powerful fine-grain mechanism that allow you to customise + the behaviour of this library according to your needs. There is more information + available in the policy + tutorial and the policy + reference. +

+

+

+

+ Generally speaking unless you find that the default + policy behaviour when encountering 'bad' argument values does not + meet your needs, you should not need to worry about policies. +

+

+

+

+ Policies are a compile-time mechanism that allow you to change error-handling + or calculation precision either program wide, or at the call site. +

+

+

+

+ Although the policy mechanism itself is rather complicated, in practice + it is easy to use, and very flexible. +

+

+

+

+ Using policies you can control: +

+

+

+
+

+

+

+ You can control policies: +

+

+

+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html b/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html new file mode 100644 index 000000000..ffed2febe --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/result_type.html @@ -0,0 +1,154 @@ + + + +Calculation of the Type of the Result + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The functions in this library are all overloaded to accept mixed floating + point (or mixed integer and floating point type) arguments. So for example: +

+
+foo(1.0, 2.0);
+foo(1.0f, 2);
+foo(1.0, 2L);
+
+

+ etc, are all valid calls, as long as "foo" is a function taking + two floating-point arguments. But that leaves the question: +

+ +

+ If all the arguments are of the same (floating point) + type then the result is the same type as the arguments. +

+

+ Otherwise, the type of the result is computed using the following logic: +

+
    +
  1. + Any arguments that are not template arguments are disregarded from further + analysis. +
  2. +
  3. + For each type in the argument list, if that type is an integer type then + it is treated as if it were of type double for the purposes of further + analysis. +
  4. +
  5. + If any of the arguments is a user-defined class type, then the result type + is the first such class type that is constructible from all of the other + argument types. +
  6. +
  7. + If any of the arguments is of type long + double, then the result is of type + long double. +
  8. +
  9. + If any of the arguments is of type double, + then the result is of type double. +
  10. +
  11. + Otherwise the result is of type float. +
  12. +
+

+ For example: +

+
+cyl_bessel(2, 3.0);
+
+

+ Returns a double result, as + does: +

+
+cyl_bessel(2, 3.0f);
+
+

+ as in this case the integer first argument is treated as a double and takes precedence over the float second argument. To get a float result we would need all the arguments + to be of type float: +

+
+cyl_bessel_j(2.0f, 3.0f);
+
+

+ When one or more of the arguments is not a template argument then it doesn't + effect the return type at all, for example: +

+
+sph_bessel(2, 3.0f);
+
+

+ returns a float, since the first + argument is not a template argument and so doesn't effect the result: without + this rule functions that take explicitly integer arguments could never return + float. +

+

+ And for user defined types, all of the following return an NTL::RR result: +

+
+cyl_bessel_j(0, NTL::RR(2));
+
+cyl_bessel_j(NTL::RR(2), 3);
+
+cyl_bessel_j(NTL::quad_float(2), NTL::RR(3));
+
+

+ In the last case, quad_float is convertible to RR, but not vice-versa, so + the result will be an NTL::RR. Note that this assumes that you are using + a patched NTL library. +

+

+ These rules are chosen to be compatible with the behaviour of ISO/IEC + 9899:1999 Programming languages - C and with the Draft + Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph + 5. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html b/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html new file mode 100644 index 000000000..6aba11951 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/main_overview/threads.html @@ -0,0 +1,70 @@ + + + +Thread Safety + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The library is fully thread safe and re-entrant provided the function and + class templates in the library are instantiated with built-in floating point + types: i.e. the types float, + double and long + double. +

+

+ However, the library is not thread safe + when used with user-defined (i.e. class type) numeric types. +

+

+ The reason for the latter limitation is the need to initialise symbolic constants + using constructs such as: +

+
+static const T coefficient_array = { ... list of values ... };
+
+

+ Which is always thread safe when T is a built-in floating point type, but + not when T is a user defined type: as in this case there is a need for T's + constructors to be run, leading to potential race conditions. +

+

+ This limitation may be addressed in a future release. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf.html b/doc/sf_and_dist/html/math_toolkit/perf.html new file mode 100644 index 000000000..440960f3a --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf.html @@ -0,0 +1,56 @@ + + + +Performance + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html b/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html new file mode 100644 index 000000000..8404313e5 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/comp_compilers.html @@ -0,0 +1,377 @@ + + + +Comparing Compilers + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ After a good choice of build settings the next most important thing you can + do, is choose your compiler - and the standard C library it sits on top of + - very carefully. GCC-3.x in particular has been found to be particularly + bad at inlining code, and performing the kinds of high level transformations + that good C++ performance demands (thankfully GCC-4.x is somewhat better + in this respect). +

+
+

Table 40. Performance Comparison of Various Windows Compilers

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

+ Function +

+
+

+ Intel C++ 10.0 +

+

+ ( /Ox /Qipo /QxN ) +

+
+

+ Microsoft Visual C++ 8.0 +

+

+ ( /Ox /arch:SSE2 ) +

+
+

+ Cygwin G++ 3.4 +

+

+ ( /O3 ) +

+
+

+ erf +

+
+

+

+

1.00

+

+

(4.118e-008s)

+

+

+
+

+

+

1.50

+

+

(6.173e-008s)

+

+

+
+

+

+

3.24

+

+

(1.336e-007s)

+

+

+
+

+ erf_inv +

+
+

+

+

1.00

+

+

(4.439e-008s)

+

+

+
+

+

+

1.42

+

+

(6.302e-008s)

+

+

+
+

+

+

7.88

+

+

(3.500e-007s)

+

+

+
+

+ ibeta + and ibetac +

+
+

+

+

1.00

+

+

(1.631e-006s)

+

+

+
+

+

+

1.14

+

+

(1.852e-006s)

+

+

+
+

+

+

3.05

+

+

(4.975e-006s)

+

+

+
+

+ ibeta_inv + and ibetac_inv +

+
+

+

+

1.00

+

+

(6.133e-006s)

+

+

+
+

+

+

1.19

+

+

(7.311e-006s)

+

+

+
+

+

+

2.60

+

+

(1.597e-005s)

+

+

+
+

+ ibeta_inva, + ibetac_inva, + ibeta_invb + and ibetac_invb +

+
+

+

+

1.00

+

+

(2.453e-005s)

+

+

+
+

+

+

1.16

+

+

(2.847e-005s)

+

+

+
+

+

+

2.83

+

+

(6.947e-005s)

+

+

+
+

+ gamma_p + and gamma_q +

+
+

+

+

1.00

+

+

(6.735e-007s)

+

+

+
+

+

+

1.41

+

+

(9.504e-007s)

+

+

+
+

+

+

2.78

+

+

(1.872e-006s)

+

+

+
+

+ gamma_p_inv + and gamma_q_inv +

+
+

+

+

1.00

+

+

(2.637e-006s)

+

+

+
+

+

+

1.38

+

+

(3.631e-006s)

+

+

+
+

+

+

3.31

+

+

(8.736e-006s)

+

+

+
+

+ gamma_p_inva + and gamma_q_inva +

+
+

+

+

1.00

+

+

(7.716e-006s)

+

+

+
+

+

+

1.29

+

+

(9.982e-006s)

+

+

+
+

+

+

2.56

+

+

(1.974e-005s)

+

+

+
+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html b/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html new file mode 100644 index 000000000..c3b7d544e --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/comparisons.html @@ -0,0 +1,1772 @@ + + + +Comparisons to Other Open Source Libraries + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ We've run our performance tests both for our own code, and against other + open source implementations of the same functions. The results are presented + below to give you a rough idea of how they all compare. +

+
+ + + + + +
[Caution]Caution

+ You should exercise extreme caution when interpreting these results, relative + performance may vary by platform, the tests use data that gives good code + coverage of our code, but which may skew the results + towards the corner cases. Finally, remember that different libraries make + different choices with regard to performance verses numerical stability. +

+
+ + Comparison + to GSL-1.9 and Cephes +
+

+ All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Windows + XP machine, with all the libraries compiled with Microsoft Visual C++ 2005 + using the /Ox + /arch:SSE2 options. +

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

+ Function +

+
+

+ Boost +

+
+

+ GSL-1.9 +

+
+

+ Cephes +

+
+

+ tgamma +

+
+

+

+

1.50

+

+

(2.566e-007s)

+

+

+
+

+

+

1.54

+

+

(2.627e-007s)

+

+

+
+

+

+

1.00

+

+

(1.709e-007s)

+

+

+
+

+ lgamma +

+
+

+

+

1.73

+

+

(2.688e-007s)

+

+

+
+

+

+

3.61

+

+

(5.621e-007s)

+

+

+
+

+

+

1.00

+

+

(1.556e-007s)

+

+

+
+

+ gamma_p + and gamma_q +

+
+

+

+

1.00

+

+

(9.504e-007s)

+

+

+
+

+

+

2.15

+

+

(2.042e-006s)

+

+

+
+

+

+

2.57

+

+

(2.439e-006s)

+

+

+
+

+ gamma_p_inv + and gamma_q_inv +

+
+

+

+

1.00

+

+

(3.631e-006s)

+

+

+
+

+ N/A +

+
+

+ +INF + [1] +

+
+

+ ibeta + and ibetac +

+
+

+

+

1.00

+

+

(1.852e-006s)

+

+

+
+

+

+

1.07

+

+

(1.974e-006s)

+

+

+
+

+

+

1.07

+

+

(1.974e-006s)

+

+

+
+

+ ibeta_inv + and ibetac_inv +

+
+

+

+

1.00

+

+

(7.311e-006s)

+

+

+
+

+ N/A +

+
+

+

+

2.24

+

+

(1.637e-005s)

+

+

+

[1] + Cephes gets stuck in an infinite loop while trying to execute + our test cases. +

+
+ + Comparison + to the R Statistical Library on Windows +
+

+ All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Windows + XP machine, with the test program compiled with Microsoft Visual C++ 2005, + and R-2.5.0 compiled in "standalone mode" with MinGW-3.4 (R-2.5.0 + appears not to be buildable with Visual C++). +

+
+

Table 43. A Comparison to the R Statistical Library on Windows + XP

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

+ Statistical Function +

+
+

+ Boost +

+
+

+ R +

+
+

+ Beta Distribution + CDF +

+
+

+

+

1.20

+

+

(1.916e-006s)

+

+

+
+

+

+

1.00

+

+

(1.597e-006s)

+

+

+
+

+ Beta Distribution + Quantile +

+
+

+

+

1.00

+

+

(6.570e-006s)

+

+

+
+

+

+

74.66 + [1] +

+

+

(4.905e-004s)

+

+

+
+

+ Binomial + Distribution CDF +

+
+

+

+

1.00

+

+

(5.276e-007s)

+

+

+
+

+

+

2.45

+

+

(1.293e-006s)

+

+

+
+

+ Binomial + Distribution Quantile +

+
+

+

+

1.00

+

+

(4.013e-006s)

+

+

+
+

+

+

1.32

+

+

(5.280e-006s)

+

+

+
+

+ Cauchy + Distribution CDF +

+
+

+

+

1.00

+

+

(1.231e-007s)

+

+

+
+

+

+

1.28

+

+

(1.576e-007s)

+

+

+
+

+ Cauchy + Distribution Quantile +

+
+

+

+

1.00

+

+

(1.498e-007s)

+

+

+
+

+

+

1.00

+

+

(1.498e-007s)

+

+

+
+

+ Chi + Squared Distribution CDF +

+
+

+

+

1.00

+

+

(7.889e-007s)

+

+

+
+

+

+

2.48

+

+

(1.955e-006s)

+

+

+
+

+ Chi + Squared Distribution Quantile +

+
+

+

+

1.00

+

+

(4.303e-006s)

+

+

+
+

+

+

1.61

+

+

(6.925e-006s)

+

+

+
+

+ Exponential + Distribution CDF +

+
+

+

+

1.00

+

+

(1.955e-007s)

+

+

+
+

+

+

1.97

+

+

(3.844e-007s)

+

+

+
+

+ Exponential + Distribution Quantile +

+
+

+

+

1.07

+

+

(1.206e-007s)

+

+

+
+

+

+

1.00

+

+

(1.126e-007s)

+

+

+
+

+ Fisher F Distribution + CDF +

+
+

+

+

1.00

+

+

(1.309e-006s)

+

+

+
+

+

+

2.12

+

+

(2.780e-006s)

+

+

+
+

+ Fisher F Distribution + Quantile +

+
+

+

+

1.00

+

+

(7.204e-006s)

+

+

+
+

+

+

1.78

+

+

(1.280e-005s)

+

+

+
+

+ Gamma Distribution + CDF +

+
+

+

+

1.00

+

+

(1.076e-006s)

+

+

+
+

+

+

2.07

+

+

(2.227e-006s)

+

+

+
+

+ Gamma Distribution + Quantile +

+
+

+

+

1.00

+

+

(5.189e-006s)

+

+

+
+

+

+

1.14

+

+

(5.937e-006s)

+

+

+
+

+ Log-normal + Distribution CDF +

+
+

+

+

1.00

+

+

(2.078e-007s)

+

+

+
+

+

+

1.41

+

+

(2.930e-007s)

+

+

+
+

+ Log-normal + Distribution Quantile +

+
+

+

+

1.00

+

+

(6.692e-007s)

+

+

+
+

+

+

1.63

+

+

(1.090e-006s)

+

+

+
+

+ Negative + Binomial Distribution CDF +

+
+

+

+

1.00

+

+

(9.005e-007s)

+

+

+
+

+

+

2.42

+

+

(2.178e-006s)

+

+

+
+

+ Negative + Binomial Distribution Quantile +

+
+

+

+

1.00

+

+

(9.601e-006s)

+

+

+
+

+

+

53.59 + [2] +

+

+

(5.145e-004s)

+

+

+
+

+ Normal + Distribution CDF +

+
+

+

+

1.00

+

+

(5.926e-008s)

+

+

+
+

+

+

3.01

+

+

(1.785e-007s)

+

+

+
+

+ Normal + Distribution Quantile +

+
+

+

+

1.00

+

+

(1.248e-007s)

+

+

+
+

+

+

1.05

+

+

(1.311e-007s)

+

+

+
+

+ Poisson + Distribution CDF +

+
+

+

+

1.00

+

+

(8.999e-007s)

+

+

+
+

+

+

2.42

+

+

(2.175e-006s)

+

+

+
+

+ Poisson + Distribution +

+
+

+

+

1.00

+

+

(1.853e-006s)

+

+

+
+

+

+

2.17

+

+

(4.014e-006s)

+

+

+
+

+ Students + t Distribution CDF +

+
+

+

+

1.00

+

+

(1.223e-006s)

+

+

+
+

+

+

1.13

+

+

(1.376e-006s)

+

+

+
+

+ Students + t Distribution Quantile +

+
+

+

+

1.00

+

+

(2.570e-006s)

+

+

+
+

+

+

1.04

+

+

(2.668e-006s)

+

+

+
+

+ Weibull Distribution + CDF +

+
+

+

+

1.00

+

+

(4.741e-007s)

+

+

+
+

+

+

1.46

+

+

(6.943e-007s)

+

+

+
+

+ Weibull Distribution + Quantile +

+
+

+

+

1.00

+

+

(7.926e-007s)

+

+

+
+

+

+

1.08

+

+

(8.542e-007s)

+

+

+
+

[1] + There are a small number of our test cases where the R library + fails to converge on a result: these tend to dominate the performance + result. +

+

[2] + The R library appears to use a linear-search strategy, that can + perform very badly in a small number of pathological cases, but + may or may not be more efficient in "typical" cases +

+
+
+
+ + Comparison + to the R Statistical Library on Linux +
+

+ All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Mandriva + Linux machine, with the test program and R-2.5.0 compiled with GNU G++ 4.2.0. +

+
+

Table 44. A Comparison to the R Statistical Library on Linux

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

+ Statistical Function +

+
+

+ Boost +

+
+

+ R +

+
+

+ Beta Distribution + CDF +

+
+

+

+

1.71

+

+

(3.508e-006s)

+

+

+
+

+

+

1.00

+

+

(2.050e-006s)

+

+

+
+

+ Beta Distribution + Quantile +

+
+

+

+

1.00

+

+

(1.294e-005s)

+

+

+
+

+

+

44.06 + [1] +

+

+

(5.701e-004s)

+

+

+
+

+ Binomial + Distribution CDF +

+
+

+

+

1.22

+

+

(1.342e-006s)

+

+

+
+

+

+

1.00

+

+

(1.104e-006s)

+

+

+
+

+ Binomial + Distribution Quantile +

+
+

+

+

1.36

+

+

(7.083e-006s)

+

+

+
+

+

+

1.00

+

+

(5.194e-006s)

+

+

+
+

+ Cauchy + Distribution CDF +

+
+

+

+

1.00

+

+

(1.372e-007s)

+

+

+
+

+

+

1.47

+

+

(2.017e-007s)

+

+

+
+

+ Cauchy + Distribution Quantile +

+
+

+

+

1.00

+

+

(1.542e-007s)

+

+

+
+

+

+

1.14

+

+

(1.752e-007s)

+

+

+
+

+ Chi + Squared Distribution CDF +

+
+

+

+

1.04

+

+

(1.820e-006s)

+

+

+
+

+

+

1.00

+

+

(1.753e-006s)

+

+

+
+

+ Chi + Squared Distribution Quantile +

+
+

+

+

1.39

+

+

(9.345e-006s)

+

+

+
+

+

+

1.00

+

+

(6.728e-006s)

+

+

+
+

+ Exponential + Distribution CDF +

+
+

+

+

1.00

+

+

(2.195e-007s)

+

+

+
+

+

+

1.17

+

+

(2.561e-007s)

+

+

+
+

+ Exponential + Distribution Quantile +

+
+

+

+

1.00

+

+

(1.123e-007s)

+

+

+
+

+

+

1.03

+

+

(1.155e-007s)

+

+

+
+

+ Fisher F Distribution + CDF +

+
+

+

+

1.00

+

+

(2.744e-006s)

+

+

+
+

+

+

1.08

+

+

(2.970e-006s)

+

+

+
+

+ Fisher F Distribution + Quantile +

+
+

+

+

1.14

+

+

(1.550e-005s)

+

+

+
+

+

+

1.00

+

+

(1.359e-005s)

+

+

+
+

+ Gamma Distribution + CDF +

+
+

+

+

1.29

+

+

(2.578e-006s)

+

+

+
+

+

+

1.00

+

+

(1.992e-006s)

+

+

+
+

+ Gamma Distribution + Quantile +

+
+

+

+

1.77

+

+

(1.020e-005s)

+

+

+
+

+

+

1.00

+

+

(5.757e-006s)

+

+

+
+

+ Log-normal + Distribution CDF +

+
+

+

+

1.00

+

+

(1.782e-007s)

+

+

+
+

+

+

2.00

+

+

(3.564e-007s)

+

+

+
+

+ Log-normal + Distribution Quantile +

+
+

+

+

1.00

+

+

(7.093e-007s)

+

+

+
+

+

+

1.07

+

+

(7.607e-007s)

+

+

+
+

+ Negative + Binomial Distribution CDF +

+
+

+

+

1.03

+

+

(2.209e-006s)

+

+

+
+

+

+

1.00

+

+

(2.141e-006s)

+

+

+
+

+ Negative + Binomial Distribution Quantile +

+
+

+

+

1.00

+

+

(1.826e-005s)

+

+

+
+

+

+

30.07 + [2] +

+

+

(5.490e-004s)

+

+

+
+

+ Normal + Distribution CDF +

+
+

+

+

1.00

+

+

(8.542e-008s)

+

+

+
+

+

+

2.09

+

+

(1.782e-007s)

+

+

+
+

+ Normal + Distribution Quantile +

+
+

+

+

1.00

+

+

(1.362e-007s)

+

+

+
+

+

+

1.26

+

+

(1.722e-007s)

+

+

+
+

+ Poisson + Distribution CDF +

+
+

+

+

1.10

+

+

(1.953e-006s)

+

+

+
+

+

+

1.00

+

+

(1.775e-006s)

+

+

+
+

+ Poisson + Distribution +

+
+

+

+

1.12

+

+

(4.214e-006s)

+

+

+
+

+

+

1.00

+

+

(3.752e-006s)

+

+

+
+

+ Students + t Distribution CDF +

+
+

+

+

1.55

+

+

(2.441e-006s)

+

+

+
+

+

+

1.00

+

+

(1.576e-006s)

+

+

+
+

+ Students + t Distribution Quantile +

+
+

+

+

1.33

+

+

(3.972e-006s)

+

+

+
+

+

+

1.00

+

+

(2.990e-006s)

+

+

+
+

+ Weibull Distribution + CDF +

+
+

+

+

1.00

+

+

(6.640e-007s)

+

+

+
+

+

+

1.06

+

+

(7.031e-007s)

+

+

+
+

+ Weibull Distribution + Quantile +

+
+

+

+

1.00

+

+

(7.504e-007s)

+

+

+
+

+

+

1.03

+

+

(7.710e-007s)

+

+

+
+

[1] + There are a small number of our test cases where the R library + fails to converge on a result: these tend to dominate the performance + result. +

+

[2] + The R library appears to use a linear-search strategy, that can + perform very badly in a small number of pathological cases, but + may or may not be more efficient in "typical" cases +

+
+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html b/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html new file mode 100644 index 000000000..80e1f9978 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/getting_best.html @@ -0,0 +1,294 @@ + + + +Getting the Best Performance from this Library + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ By far the most important thing you can do when using this library is turn + on your compiler's optimisation options. As the following table shows the + penalty for using the library in debug mode can be quite large. +

+
+

Table 39. Performance Comparison of Release and Debug Settings

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

+ Function +

+
+

+ Microsoft Visual C++ 8.0 +

+

+ Debug Settings: /Od /ZI +

+
+

+ Microsoft Visual C++ 8.0 +

+

+ Release settings: /Ox /arch:SSE2 +

+
+

+ erf +

+
+

+

+

16.65

+

+

(1.028e-006s)

+

+

+
+

+

+

1.00

+

+

(6.173e-008s)

+

+

+
+

+ erf_inv +

+
+

+

+

19.28

+

+

(1.215e-006s)

+

+

+
+

+

+

1.00

+

+

(6.302e-008s)

+

+

+
+

+ ibeta + and ibetac +

+
+

+

+

8.32

+

+

(1.540e-005s)

+

+

+
+

+

+

1.00

+

+

(1.852e-006s)

+

+

+
+

+ ibeta_inv + and ibetac_inv +

+
+

+

+

10.25

+

+

(7.492e-005s)

+

+

+
+

+

+

1.00

+

+

(7.311e-006s)

+

+

+
+

+ ibeta_inva, + ibetac_inva, + ibeta_invb + and ibetac_invb +

+
+

+

+

8.57

+

+

(2.441e-004s)

+

+

+
+

+

+

1.00

+

+

(2.847e-005s)

+

+

+
+

+ gamma_p + and gamma_q +

+
+

+

+

10.98

+

+

(1.044e-005s)

+

+

+
+

+

+

1.00

+

+

(9.504e-007s)

+

+

+
+

+ gamma_p_inv + and gamma_q_inv +

+
+

+

+

10.25

+

+

(3.721e-005s)

+

+

+
+

+

+

1.00

+

+

(3.631e-006s)

+

+

+
+

+ gamma_p_inva + and gamma_q_inva +

+
+

+

+

11.26

+

+

(1.124e-004s)

+

+

+
+

+

+

1.00

+

+

(9.982e-006s)

+

+

+
+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/interp.html b/doc/sf_and_dist/html/math_toolkit/perf/interp.html new file mode 100644 index 000000000..dc8debb71 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/interp.html @@ -0,0 +1,70 @@ + + + +Interpreting these Results + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ In all of the following tables, the best performing result in each row, is + assigned a relative value of "1" and shown in bold, so a score + of "2" means "twice as slow as the best performing + result". Actual timings in seconds per function call are + also shown in parenthesis. +

+

+ Result were obtained on a system with an Intel 2.8GHz Pentium 4 processor + with 2Gb of RAM and running either Windows XP or Mandriva Linux. +

+
+ + + + + +
[Caution]Caution

+ As usual with performance results these should be taken with a large pinch + of salt: relative performance is known to shift quite a bit depending upon + the architecture of the particular test system used. Further more, our + performance results were obtained using our own test data: these test values + are designed to provide good coverage of our code and test all the appropriate + corner cases. They do not necessarily represent "typical" usage: + whatever that may be! +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html b/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html new file mode 100644 index 000000000..7d7046fa4 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/perf_over.html @@ -0,0 +1,93 @@ + + + +Performance Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ By and large the performance of this library should be acceptable for most + needs. However, you should note that the library's primary emphasis is + on accuracy and numerical stability, and not speed. +

+

+

+

+ In terms of the algorithms used, this library aims to use the same "best + of breed" algorithms as many other libraries: the principle difference + is that this library is implemented in C++ - taking advantage of all the + abstraction mechanisms that C++ offers - where as most traditional numeric + libraries are implemented in C or FORTRAN. Traditionally languages such + as C or FORTAN are perceived as easier to optimise than more complex languages + like C++, so in a sense this library provides a good test of current compiler + technology, and the "abstraction penalty" - if any - of C++ compared + to other languages. +

+

+

+

+ The two most important things you can do to ensure the best performance + from this library are: +

+

+

+
    +
  1. + Turn on your compilers optimisations: the difference between "release" + and "debug" builds can easily be a factor + of 20. +
  2. +
  3. + Pick your compiler carefully: performance + differences of up to 8 fold have been found between some windows + compilers for example. +
  4. +
+

+

+

+ The performance section contains + more information on the performance of this library, what you can do to + fine tune it, and how this library compares to some other open source alternatives. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html b/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html new file mode 100644 index 000000000..16d0b8466 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/perf_test_app.html @@ -0,0 +1,63 @@ + + + +The Performance Test Application + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Under boost-path/libs/math/performance you will find + a (fairly rudimentary) performance test application for this library. +

+

+ To run this application yourself, build the all the .cpp files in boost-path/libs/math/performance + into an application using your usual release-build settings. Run the application + with --help to see a full list of options, or with --all to test everything + (which takes quite a while), or with --tune to test the available + performance tuning options. +

+

+ If you want to use this application to test the effect of changing any of + the Policies, then you will need + to build and run it twice: once with the default Policies, + and then a second time with the Policies + you want to test set as the default. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/perf/tuning.html b/doc/sf_and_dist/html/math_toolkit/perf/tuning.html new file mode 100644 index 000000000..5b23d4f81 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/perf/tuning.html @@ -0,0 +1,897 @@ + + + +Performance Tuning Macros + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There are a small number of performance tuning options that are determined + by configuration macros. These should be set in boost/math/tools/user.hpp; + or else reported to the Boost-development mailing list so that the appropriate + option for a given compiler and OS platform can be set automatically in our + configuration setup. +

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

+ Macro +

+
+

+ Meaning +

+
+

+ BOOST_MATH_POLY_METHOD +

+
+

+ Determines how polynomials and most rational functions are evaluated. + Define to one of the values 0, 1, 2 or 3: see below for the meaning + of these values. +

+
+

+ BOOST_MATH_RATIONAL_METHOD +

+
+

+ Determines how symmetrical rational functions are evaluated: mostly + this only effects how the Lanczos approximation is evaluated, and + how the evaluate_rational + function behaves. Define to one of the values 0, 1, 2 or 3: see below + for the meaning of these values. +

+
+

+ BOOST_MATH_MAX_POLY_ORDER +

+
+

+ The maximum order of polynomial or rational function that will be + evaluated by a method other than 0 (a simple "for" loop). +

+
+

+ BOOST_MATH_INT_TABLE_TYPE(RT, IT) +

+
+

+ Many of the coefficients to the polynomials and rational functions + used by this library are integers. Normally these are stored as tables + as integers, but if mixed integer / floating point arithmetic is + much slower than regular floating point arithmetic then they can + be stored as tables of floating point values instead. If mixed arithmetic + is slow then add: +

+

+ #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT +

+

+ to boost/math/tools/user.hpp, otherwise the default of: +

+

+ #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT +

+

+ Set in boost/math/config.hpp is fine, and may well result in smaller + code. +

+
+

+ The values to which BOOST_MATH_POLY_METHOD + and BOOST_MATH_RATIONAL_METHOD + may be set are as follows: +

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

+ Value +

+
+

+ Effect +

+
+

+ 0 +

+
+

+ The polynomial or rational function is evaluated using Horner's method, + and a simple for-loop. +

+

+ Note that if the order of the polynomial or rational function is + a runtime parameter, or the order is greater than the value of BOOST_MATH_MAX_POLY_ORDER, then + this method is always used, irrespective of the value of BOOST_MATH_POLY_METHOD or BOOST_MATH_RATIONAL_METHOD. +

+
+

+ 1 +

+
+

+ The polynomial or rational function is evaluated without the use + of a loop, and using Horner's method. This only occurs if the order + of the polynomial is known at compile time and is less than or equal + to BOOST_MATH_MAX_POLY_ORDER. +

+
+

+ 2 +

+
+

+ The polynomial or rational function is evaluated without the use + of a loop, and using a second order Horner's method. In theory this + permits two operations to occur in parallel for polynomials, and + four in parallel for rational functions. This only occurs if the + order of the polynomial is known at compile time and is less than + or equal to BOOST_MATH_MAX_POLY_ORDER. +

+
+

+ 3 +

+
+

+ The polynomial or rational function is evaluated without the use + of a loop, and using a second order Horner's method. In theory this + permits two operations to occur in parallel for polynomials, and + four in parallel for rational functions. This differs from method + "2" in that the code is carefully ordered to make the parallelisation + more obvious to the compiler: rather than relying on the compiler's + optimiser to spot the parallelisation opportunities. This only occurs + if the order of the polynomial is known at compile time and is less + than or equal to BOOST_MATH_MAX_POLY_ORDER. +

+
+

+ To determine which of these options is best for your particular compiler/platform + build the performance test application with your usual release settings, + and run the program with the --tune command line option. +

+

+ In practice the difference between methods is rather small at present, as + the following table shows. However, parallelisation /vectorisation is likely + to become more important in the future: quite likely the methods currently + supported will need to be supplemented or replaced by ones more suited to + highly vectorisable processors in the future. +

+
+

Table 41. A Comparison of Polynomial Evaluation Methods

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

+ Compiler/platform +

+
+

+ Method 0 +

+
+

+ Method 1 +

+
+

+ Method 2 +

+
+

+ Method 3 +

+
+

+ Microsoft C++ 8.0, Polynomial evaluation +

+
+

+

+

1.34

+

+

(1.161e-007s)

+

+

+
+

+

+

1.13

+

+

(9.777e-008s)

+

+

+
+

+

+

1.07

+

+

(9.289e-008s)

+

+

+
+

+

+

1.00

+

+

(8.678e-008s)

+

+

+
+

+ Microsoft C++ 8.0, Rational evaluation +

+
+

+

+

1.00

+

+

(1.443e-007s)

+

+

+
+

+

+

1.03

+

+

(1.492e-007s)

+

+

+
+

+

+

1.20

+

+

(1.736e-007s)

+

+

+
+

+

+

1.07

+

+

(1.540e-007s)

+

+

+
+

+ Intel C++ 10.0 (Windows), Polynomial evaluation +

+
+

+

+

1.03

+

+

(7.702e-008s)

+

+

+
+

+

+

1.03

+

+

(7.702e-008s)

+

+

+
+

+

+

1.00

+

+

(7.446e-008s)

+

+

+
+

+

+

1.03

+

+

(7.690e-008s)

+

+

+
+

+ Intel C++ 10.0 (Windows), Rational evaluation +

+
+

+

+

1.00

+

+

(1.245e-007s)

+

+

+
+

+

+

1.00

+

+

(1.245e-007s)

+

+

+
+

+

+

1.18

+

+

(1.465e-007s)

+

+

+
+

+

+

1.06

+

+

(1.318e-007s)

+

+

+
+

+ GNU G++ 4.2 (Linux), Polynomial evaluation +

+
+

+

+

1.61

+

+

(1.220e-007s)

+

+

+
+

+

+

1.68

+

+

(1.269e-007s)

+

+

+
+

+

+

1.23

+

+

(9.275e-008s)

+

+

+
+

+

+

1.00

+

+

(7.566e-008s)

+

+

+
+

+ GNU G++ 4.2 (Linux), Rational evaluation +

+
+

+

+

1.26

+

+

(1.660e-007s)

+

+

+
+

+

+

1.33

+

+

(1.758e-007s)

+

+

+
+

+

+

1.00

+

+

(1.318e-007s)

+

+

+
+

+

+

1.15

+

+

(1.513e-007s)

+

+

+
+

+ Intel C++ 10.0 (Linux), Polynomial evaluation +

+
+

+

+

1.15

+

+

(9.154e-008s)

+

+

+
+

+

+

1.15

+

+

(9.154e-008s)

+

+

+
+

+

+

1.00

+

+

(7.934e-008s)

+

+

+
+

+

+

1.00

+

+

(7.934e-008s)

+

+

+
+

+ Intel C++ 10.0 (Linux), Rational evaluation +

+
+

+

+

1.00

+

+

(1.245e-007s)

+

+

+
+

+

+

1.00

+

+

(1.245e-007s)

+

+

+
+

+

+

1.35

+

+

(1.684e-007s)

+

+

+
+

+

+

1.04

+

+

(1.294e-007s)

+

+

+
+
+

+ There is one final performance tuning option that is available as a compile + time policy. Normally when evaluating + functions at double precision, + these are actually evaluated at long + double precision internally: this + helps to ensure that as close to full double + precision as possible is achieved, but may slow down execution in some environments. + The defaults for this policy can be changed by defining + the macro BOOST_MATH_PROMOTE_DOUBLE_POLICY + to false, or by + specifying a specific policy when calling the special functions or + distributions. See also the policy + tutorial. +

+
+

Table 42. Performance Comparison with and Without Internal + Promotion to long double

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

+ Function +

+
+

+ GCC 4.2 , Linux +

+

+ (with internal promotion of double to long double). +

+
+

+ GCC 4.2, Linux +

+

+ (without promotion of double). +

+
+

+ erf +

+
+

+

+

1.48

+

+

(1.387e-007s)

+

+

+
+

+

+

1.00

+

+

(9.377e-008s)

+

+

+
+

+ erf_inv +

+
+

+

+

1.11

+

+

(4.009e-007s)

+

+

+
+

+

+

1.00

+

+

(3.598e-007s)

+

+

+
+

+ ibeta + and ibetac +

+
+

+

+

1.29

+

+

(5.354e-006s)

+

+

+
+

+

+

1.00

+

+

(4.137e-006s)

+

+

+
+

+ ibeta_inv + and ibetac_inv +

+
+

+

+

1.44

+

+

(2.220e-005s)

+

+

+
+

+

+

1.00

+

+

(1.538e-005s)

+

+

+
+

+ ibeta_inva, + ibetac_inva, + ibeta_invb + and ibetac_invb +

+
+

+

+

1.25

+

+

(7.009e-005s)

+

+

+
+

+

+

1.00

+

+

(5.607e-005s)

+

+

+
+

+ gamma_p + and gamma_q +

+
+

+

+

1.26

+

+

(3.116e-006s)

+

+

+
+

+

+

1.00

+

+

(2.464e-006s)

+

+

+
+

+ gamma_p_inv + and gamma_q_inv +

+
+

+

+

1.27

+

+

(1.178e-005s)

+

+

+
+

+

+

1.00

+

+

(9.291e-006s)

+

+

+
+

+ gamma_p_inva + and gamma_q_inva +

+
+

+

+

1.20

+

+

(2.765e-005s)

+

+

+
+

+

+

1.00

+

+

(2.311e-005s)

+

+

+
+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy.html b/doc/sf_and_dist/html/math_toolkit/policy.html new file mode 100644 index 000000000..06246e462 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy.html @@ -0,0 +1,91 @@ + + + +Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html new file mode 100644 index 000000000..1a579b095 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_overview.html @@ -0,0 +1,135 @@ + + + +Policy Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ Policies are a powerful fine-grain mechanism that allow you to customise + the behaviour of this library according to your needs. There is more information + available in the policy + tutorial and the policy + reference. +

+

+

+

+ Generally speaking unless you find that the default + policy behaviour when encountering 'bad' argument values does not + meet your needs, you should not need to worry about policies. +

+

+

+

+ Policies are a compile-time mechanism that allow you to change error-handling + or calculation precision either program wide, or at the call site. +

+

+

+

+ Although the policy mechanism itself is rather complicated, in practice + it is easy to use, and very flexible. +

+

+

+

+ Using policies you can control: +

+

+

+
+

+

+

+ You can control policies: +

+

+

+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html new file mode 100644 index 000000000..92249cc9d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref.html @@ -0,0 +1,64 @@ + + + +Policy Reference + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html new file mode 100644 index 000000000..918ff03ae --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/assert_undefined.html @@ -0,0 +1,92 @@ + + + +Mathematically Undefined Function Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There are some functions that are generic (they are present for all the + statistical distributions supported) but which may be mathematically undefined + for certain distributions, but defined for others. +

+

+ For example, the Cauchy distribution does not have a mean, so what should +

+
+mean(cauchy<>());
+
+

+ return, and should such an expression even compile at all? +

+

+ The default behaviour is for all such functions to not compile at all - + in fact they will raise a static + assertion - but by changing the policy we can have them return + the result of a domain error instead (which may well throw an exception, + depending on the error handling policy). +

+

+ This behaviour is controlled by the assert_undefined<> policy: +

+
+namespace boost{ namespace math{ namespace policies {
+
+template <bool b>
+class assert_undefined;
+
+}}} //namespaces
+
+

+ For example: +

+
+#include <boost/math/distributions/cauchy.hpp>
+
+using namespace boost::math::policies;
+using namespace boost::math;
+
+// This will not compile, cauchy has no mean!
+double m1 = mean(cauchy()); 
+
+// This will compile, but raises a domain error!
+double m2 = mean(cauchy_distribution<double, policy<assert_undefined<false> > >());
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html new file mode 100644 index 000000000..a7df2779a --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/discrete_quant_ref.html @@ -0,0 +1,297 @@ + + + +Discrete Quantile Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ If a statistical distribution is discrete then the + random variable can only have integer values - this leaves us with a problem + when calculating quantiles - we can either ignore the discreteness of the + distribution and return a real value, or we can round to an integer. As + it happens, computing integer values can be substantially faster than calculating + a real value, so there are definite advantages to returning an integer, + but we do then need to decide how best to round the result. The discrete_quantile policy defines how + discrete quantiles work, and how integer results are rounded: +

+
+enum discrete_quantile_policy_type
+{
+   real,
+   integer_round_outwards, // default
+   integer_round_inwards,
+   integer_round_down,
+   integer_round_up,
+   integer_round_nearest
+};
+
+template <discrete_quantile_policy_type>
+struct discrete_quantile;
+
+

+ The values that discrete_quantile + can take have the following meanings: +

+
+ + real +
+

+ Ignores the discreteness of the distribution, and returns a real-valued + result. For example: +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp>
+
+using namespace boost::math;
+using namespace boost::math::policies;
+
+typedef negative_binomial_distribution<
+      double, 
+      policy<discrete_quantile<integer_round_inwards> > 
+   > dist_type;
+   
+// Lower quantile:
+double x = quantile(dist_type(20, 0.3), 0.05);
+// Upper quantile:
+double y = quantile(complement(dist_type(20, 0.3), 0.05));
+
+
+

+

+

+

+

+ Results in x = + 27.3898 and y + = 68.1584. +

+
+ + integer_round_outwards +
+

+ This is the default policy: an integer value is returned so that: +

+
    +
  • + Lower quantiles (where the probability is less than 0.5) are rounded + down. +
  • +
  • + Upper quantiles (where the probability is greater than 0.5) are rounded + up. +
  • +
+

+ This is normally the safest rounding policy, since it ensures that both + one and two sided intervals are guaranteed to have at least + the requested coverage. For example: +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp>
+
+using namespace boost::math;
+
+// Lower quantile rounded down:
+double x = quantile(negative_binomial(20, 0.3), 0.05);
+// Upper quantile rounded up:
+double y = quantile(complement(negative_binomial(20, 0.3), 0.05));
+
+
+

+

+

+

+

+ Results in x = + 27 (rounded down from 27.3898) and + y = + 69 (rounded up from 68.1584). +

+

+ The variables x and y are now defined so that: +

+
+cdf(negative_binomial(20), x) <= 0.05
+cdf(negative_binomial(20), y) >= 0.95
+
+

+ In other words we guarantee at least 90% coverage in the central + region overall, and also no more than 5% coverage + in each tail. +

+
+ + integer_round_inwards +
+

+ This is the opposite of integer_round_outwards: an + integer value is returned so that: +

+
    +
  • + Lower quantiles (where the probability is less than 0.5) are rounded + up. +
  • +
  • + Upper quantiles (where the probability is greater than 0.5) are rounded + down. +
  • +
+

+ For example: +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp>
+
+using namespace boost::math;
+using namespace boost::math::policies;
+
+typedef negative_binomial_distribution<
+      double, 
+      policy<discrete_quantile<integer_round_inwards> > 
+   > dist_type;
+   
+// Lower quantile rounded up:
+double x = quantile(dist_type(20, 0.3), 0.05);
+// Upper quantile rounded down:
+double y = quantile(complement(dist_type(20, 0.3), 0.05));
+
+
+

+

+

+

+

+ Results in x = + 28 (rounded up from 27.3898) and + y = + 68 (rounded down from 68.1584). +

+

+ The variables x and y are now defined so that: +

+
+cdf(negative_binomial(20), x) >= 0.05
+cdf(negative_binomial(20), y) <= 0.95
+
+

+ In other words we guarantee at no more than 90% coverage in the + central region overall, and also at least 5% coverage + in each tail. +

+
+ + integer_round_down +
+

+ Always rounds down to an integer value, no matter whether it's an upper + or a lower quantile. +

+
+ + integer_round_up +
+

+ Always rounds up to an integer value, no matter whether it's an upper or + a lower quantile. +

+
+ + integer_round_nearest +
+

+ Always rounds to the nearest integer value, no matter whether it's an upper + or a lower quantile. This will produce the requested coverage in + the average case, but for any specific example may results in + either significantly more or less coverage than the requested amount. For + example: +

+

+ For example: +

+

+

+

+ +

+
+#include <boost/math/distributions/negative_binomial.hpp>
+
+using namespace boost::math;
+using namespace boost::math::policies;
+
+typedef negative_binomial_distribution<
+      double, 
+      policy<discrete_quantile<integer_round_nearest> > 
+   > dist_type;
+   
+// Lower quantile rounded up:
+double x = quantile(dist_type(20, 0.3), 0.05);
+// Upper quantile rounded down:
+double y = quantile(complement(dist_type(20, 0.3), 0.05));
+
+
+

+

+

+

+

+ Results in x = + 27 (rounded from 27.3898) and y = 68 (rounded from 68.1584). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html new file mode 100644 index 000000000..493685374 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/error_handling_policies.html @@ -0,0 +1,687 @@ + + + +Error Handling Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There are two orthogonal aspects to error handling: +

+
    +
  • + What to do (if anything) with the error. +
  • +
  • + What kind of error is being raised. +
  • +
+
+ + Available + Actions When an Error is Raised +
+

+ What to do with the error is encapsulated by an enumerated type: +

+
+namespace boost { namespace math { namespace policies {
+
+enum error_policy_type
+{
+   throw_on_error = 0, // throw an exception.
+   errno_on_error = 1, // set ::errno & return 0, NaN, infinity or best guess.
+   ignore_error = 2, // return 0, NaN, infinity or best guess.
+   user_error = 3  // call a user-defined error handler.
+};
+
+}}} // namespaces
+
+

+ The various enumerated values have the following meanings: +

+
+ + throw_on_error +
+

+ Will throw one of the following exceptions, depending upon the type of + the error: +

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

+ Error Type +

+
+

+ Exception +

+
+

+ Domain Error +

+
+

+ std::domain_error +

+
+

+ Pole Error +

+
+

+ std::domain_error +

+
+

+ Overflow Error +

+
+

+ std::overflow_error +

+
+

+ Underflow Error +

+
+

+ std::underflow_error +

+
+

+ Denorm Error +

+
+

+ std::underflow_error +

+
+

+ Evaluation Error +

+
+

+ boost::math::evaluation_error +

+
+
+ + errno_on_error +
+

+ Will set global ::errno + to one of the following values depending upon the error type, and then + return the same value as if the error had been ignored: +

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

+ Error Type +

+
+

+ errno value +

+
+

+ Domain Error +

+
+

+ EDOM +

+
+

+ Pole Error +

+
+

+ EDOM +

+
+

+ Overflow Error +

+
+

+ ERANGE +

+
+

+ Underflow Error +

+
+

+ ERANGE +

+
+

+ Denorm Error +

+
+

+ ERANGE +

+
+

+ Evaluation Error +

+
+

+ EDOM +

+
+
+ + ignore_error +
+

+ Will return a one of the values below depending on the error type (::errno + is NOT changed):: +

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

+ Error Type +

+
+

+ Returned Value +

+
+

+ Domain Error +

+
+

+ std::numeric_limits<T>::quiet_NaN() +

+
+

+ Pole Error +

+
+

+ std::numeric_limits<T>::quiet_NaN() +

+
+

+ Overflow Error +

+
+

+ std::numeric_limits<T>::infinity() +

+
+

+ Underflow Error +

+
+

+ 0 +

+
+

+ Denorm Error +

+
+

+ The denormalised value. +

+
+

+ Evaluation Error +

+
+

+ The best guess as to the result: which may be significantly in + error. +

+
+
+ + user_error +
+

+ Will call a user defined error handler: these are forward declared in boost/math/policies/error_handling.hpp, + but the actual definitions must be provided by the user: +

+
+namespace boost{ namespace math{ namespace policies{
+
+template <class T>
+T user_domain_error(const char* function, const char* message, const T& val);
+
+template <class T>
+T user_pole_error(const char* function, const char* message, const T& val);
+
+template <class T>
+T user_overflow_error(const char* function, const char* message, const T& val);
+
+template <class T>
+T user_underflow_error(const char* function, const char* message, const T& val);
+
+template <class T>
+T user_denorm_error(const char* function, const char* message, const T& val);
+
+template <class T>
+T user_evaluation_error(const char* function, const char* message, const T& val);
+
+}}} // namespaces
+
+

+ Note that the strings function and message + may contain "%1%" format specifiers designed to be used in conjunction + with Boost.Format. If these strings are to be presented to the program's + end-user then the "%1%" format specifier should be replaced with + the name of type T in the function string, and if + there is a %1% specifier in the message string then + it should be replaced with the value of val. +

+

+ There is more information on user-defined error handlers in the tutorial + here. +

+
+ + Kinds + of Error Raised +
+

+ There are five kinds of error reported by this library, which are summarised + in the following table: +

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

+ Error Type +

+
+

+ Policy Class +

+
+

+ Description +

+
+

+ Domain Error +

+
+

+ boost::math::policies::domain_error<action> +

+
+

+ Raised when more or more arguments are outside the defined range + of the function. +

+

+ Defaults to boost::math::policies::domain_error<throw_on_error> +

+

+ When the action is set to throw_on_error then + throws std::domain_error +

+
+

+ Pole Error +

+
+

+ boost::math::policies::pole_error<action> +

+
+

+ Raised when more or more arguments would cause the function to + be evaluated at a pole. +

+

+ Defaults to boost::math::policies::pole_error<throw_on_error> +

+

+ When the action is throw_on_error then throw + a std::domain_error +

+
+

+ Overflow Error +

+
+

+ boost::math::policies::overflow_error<action> +

+
+

+ Raised when the result of the function is outside the representable + range of the floating point type used. +

+

+ Defaults to boost::math::policies::overflow_error<throw_on_error>. +

+

+ When the action is throw_on_error then throws + a std::overflow_error. +

+
+

+ Underflow Error +

+
+

+ boost::math::policies::underflow_error<action> +

+
+

+ Raised when the result of the function is too small to be represented + in the floating point type used. +

+

+ Defaults to boost::math::policies::underflow_error<ignore_error> +

+

+ When the specified action is throw_on_error + then throws a std::underflow_error +

+
+

+ Denorm Error +

+
+

+ boost::math::policies::denorm_error<action> +

+
+

+ Raised when the result of the function is a denormalised value. +

+

+ Defaults to boost::math::policies::denorm_error<ignore_error> +

+

+ When the action is throw_on_error then throws + a std::underflow_error +

+
+

+ Evaluation Error +

+
+

+ boost::math::policies::evaluation_error<action> +

+
+

+ Raised when the result of the function is well defined and finite, + but we were unable to compute it. Typically this occurs when an + iterative method fails to converge. Of course ideally this error + should never be raised: feel free to report it as a bug if it is! +

+

+ Defaults to boost::math::policies::evaluation_error<throw_on_error> +

+

+ When the action is throw_on_error then throws + boost::math::evaluation_error +

+
+
+ + Examples +
+

+ Suppose we want a call to tgamma + to behave in a C-compatible way and set global ::errno rather than throw an exception, + we can achieve this at the call site using: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+using namespace boost::math::policies;
+using namespace boost::math;
+
+// Define a policy:
+typedef policy<
+      domain_error<errno_on_error>, 
+      pole_error<errno_on_error>,
+      overflow_error<errno_on_error>,
+      policies::evaluation_error<errno_on_error> 
+      > my_policy;
+      
+// call the function:
+double t1 = tgamma(some_value, my_policy());
+
+// Alternatively we could use make_policy and define everything at the call site:
+double t2 = tgamma(some_value, make_policy(
+         domain_error<errno_on_error>(), 
+         pole_error<errno_on_error>(),
+         overflow_error<errno_on_error>(),
+         policies::evaluation_error<errno_on_error>() 
+      ));
+
+
+

+

+

+

+

+ Suppose we want a statistical distribution to return infinities, rather + than throw exceptions, then we can use: +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp>
+
+using namespace boost::math::policies;
+using namespace boost::math;
+
+// Define a policy:
+typedef policy<
+      overflow_error<ignore_error>
+      > my_policy;
+      
+// Define the distribution:
+typedef normal_distribution<double, my_policy> my_norm;
+
+// Get a quantile:
+double q = quantile(my_norm(), 0.05);
+
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html new file mode 100644 index 000000000..f0f536daf --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/internal_promotion.html @@ -0,0 +1,168 @@ + + + +Internal Promotion Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Normally when evaluating a function at say float + precision, maximal accuracy is assured by conducting the calculation at + double precision internally, + and then rounding the result. There are two policies that effect whether + internal promotion takes place or not: +

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

+ Policy +

+
+

+ Meaning +

+
+

+ boost::math::policies::promote_float<B> +

+
+

+ Indicates whether float + arguments should be promoted to double + precision internally: defaults to boost::math::policies::promote_float<true> +

+
+

+ boost::math::policies::promote_double<B> +

+
+

+ Indicates whether double + arguments should be promoted to long + double precision internally: + defaults to boost::math::policies::promote_double<true> +

+
+
+ + Examples +
+

+ Suppose we want tgamma + to be evaluated without internal promotion to long + double, then we could use: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+using namespace boost::math::policies;
+using namespace boost::math;
+
+// Define a policy:
+typedef policy<
+      promote_double<false> 
+      > my_policy;
+      
+// Call the function:
+double t1 = tgamma(some_value, my_policy());
+
+// Alternatively we could use make_policy and define everything at the call site:
+double t2 = tgamma(some_value, make_policy(promote_double<false>()));
+
+
+

+

+

+

+

+ Alternatively, suppose we want a distribution to perform calculations without + promoting float to double, then we could use: +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp>
+
+using namespace boost::math::policies;
+using namespace boost::math;
+
+// Define a policy:
+typedef policy<
+      promote_float<false>
+      > my_policy;
+
+// Define the distribution:
+typedef normal_distribution<float, my_policy> my_norm;
+
+// Get a quantile:
+float q = quantile(my_norm(), 0.05f);
+
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html new file mode 100644 index 000000000..5766917ca --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/iteration_pol.html @@ -0,0 +1,67 @@ + + + +Iteration Limits Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There are two policies that effect the iterative algorithms used to implement + the special functions in this library: +

+
+template <unsigned long limit = BOOST_MATH_MAX_SERIES_ITERATION_POLICY>
+class max_series_iterations;
+
+template <unsigned long limit = BOOST_MATH_MAX_ROOT_ITERATION_POLICY>
+class max_root_iterations;
+
+

+ The class max_series_iterations + determines the maximum number of iterations permitted in a series evaluation, + before the special function gives up and returns the result of evaluation_error. +

+

+ The class max_root_iterations + determines the maximum number of iterations permitted in a root-finding + algorithm before the special function gives up and returns the result of + evaluation_error. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html new file mode 100644 index 000000000..126f29020 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/namespace_pol.html @@ -0,0 +1,172 @@ + + + +Setting Polices at Namespace Scope + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Sometimes what you really want to do is bring all the special functions, + or all the distributions into a specific namespace-scope, along with a + specific policy to use with them. There are two macros defined to assist + with that: +

+
+BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy)
+
+

+ and: +

+
+BOOST_MATH_DECLARE_DISTRIBUTIONS(Type, Policy)
+
+

+ You can use either of these macros after including any special function + or distribution header. For example: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+namespace myspace{
+
+using namespace boost::math::policies;
+
+// Define a policy that does not throw on overflow:
+typedef policy<overflow_error<errno_on_error> > my_policy;
+
+// Define the special functions in this scope to use the policy:   
+BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(my_policy)
+
+}
+
+//
+// Now we can use myspace::tgamma etc.
+// They will automatically use "my_policy":
+//
+double t = myspace::tgamma(30.0); // will not throw on overflow
+
+
+

+

+

+

+

+ In this example, using BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS results in + a set of thin inline forwarding functions being defined: +

+
+template <class T>
+inline T tgamma(T a){ return ::boost::math::tgamma(a, mypolicy()); }
+
+template <class T>
+inline T lgamma(T a) ( return ::boost::math::lgamma(a, mypolicy()); }
+
+

+ and so on. Note that while a forwarding function is defined for all the + special functions, however, unless you include the specific header for + the special function you use (or boost/math/special_functions.hpp to include + everything), you will get linker errors from functions that are forward + declared, but not defined. +

+

+ We can do the same thing with the distributions, but this time we need + to specify the floating-point type to use: +

+

+

+

+ +

+
+#include <boost/math/distributions/cauchy.hpp>
+
+namespace myspace{
+
+using namespace boost::math::policies;
+
+// Define a policy to use, in this case we want all the distribution
+// accessor functions to compile, even if they are mathematically
+// undefined:
+typedef policy<assert_undefined<false> > my_policy;
+
+BOOST_MATH_DECLARE_DISTRIBUTIONS(double, my_policy)
+
+}
+
+// Now we can use myspace::cauchy etc, which will use policy
+// myspace::mypolicy:
+//
+// This compiles but raises a domain error at runtime:
+//
+void test_cauchy()
+{
+   try
+   {
+      double d = mean(myspace::cauchy());
+   }
+   catch(const std::domain_error& e)
+   {
+      std::cout << e.what() << std::endl;
+   }
+}
+
+
+

+

+

+

+

+ In this example the result of BOOST_MATH_DECLARE_DISTRIBUTIONS is to declare + a typedef for each distribution like this: +

+
+typedef boost::math::cauchy_distribution<double, my_policy> cauchy;
+tyepdef boost::math::gamma_distribution<double, my_policy> gamma;
+
+

+ and so on. The name given to each typedef is the name of the distribution + with the "_distribution" suffix removed. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html new file mode 100644 index 000000000..62bd058b0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/pol_ref_ref.html @@ -0,0 +1,250 @@ + + + +Policy Class Reference + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There's very little to say here, the policy + class is just a rag-bag compile-time container for a collection of policies: +

+

+ +

+
+#include <boost/math/policies/policy.hpp>
+

+

+
+namespace boost{
+namespace math{
+namespace policies
+
+template <class A1 = default_policy, 
+          class A2 = default_policy, 
+          class A3 = default_policy,
+          class A4 = default_policy,
+          class A5 = default_policy,
+          class A6 = default_policy,
+          class A7 = default_policy,
+          class A8 = default_policy,
+          class A9 = default_policy,
+          class A10 = default_policy,
+          class A11 = default_policy>
+struct policy
+{
+public:
+   typedef computed-from-template-arguments domain_error_type;
+   typedef computed-from-template-arguments pole_error_type;
+   typedef computed-from-template-arguments overflow_error_type;
+   typedef computed-from-template-arguments underflow_error_type;
+   typedef computed-from-template-arguments denorm_error_type;
+   typedef computed-from-template-arguments evaluation_error_type;
+   typedef computed-from-template-arguments precision_type;
+   typedef computed-from-template-arguments promote_float_type;
+   typedef computed-from-template-arguments promote_double_type;
+   typedef computed-from-template-arguments discrete_quantile_type;
+   typedef computed-from-template-arguments assert_undefined_type;
+};
+
+template <...argument list...>
+typename normalise<policy<>, A1>::type make_policy(...argument list..);
+
+template <class Policy, 
+          class A1 = default_policy, 
+          class A2 = default_policy, 
+          class A3 = default_policy,
+          class A4 = default_policy,
+          class A5 = default_policy,
+          class A6 = default_policy,
+          class A7 = default_policy,
+          class A8 = default_policy,
+          class A9 = default_policy,
+          class A10 = default_policy,
+          class A11 = default_policy>
+struct normalise
+{
+   typedef computed-from-template-arguments type;
+};
+
+

+ The member typedefs of class policy + are intended for internal use but are documented briefly here for the sake + of completeness. +

+
+policy<...>::domain_error_type
+
+

+ Specifies how domain errors are handled, will be an instance of boost::math::policies::domain_error<> + with the template argument to domain_error + one of the error_policy_type + enumerated values. +

+
+policy<...>::pole_error_type
+
+

+ Specifies how pole-errors are handled, will be an instance of boost::math::policies::pole_error<> + with the template argument to pole_error + one of the error_policy_type + enumerated values. +

+
+policy<...>::overflow_error_type
+
+

+ Specifies how overflow errors are handled, will be an instance of boost::math::policies::overflow_error<> + with the template argument to overflow_error + one of the error_policy_type + enumerated values. +

+
+policy<...>::underflow_error_type
+
+

+ Specifies how underflow errors are handled, will be an instance of boost::math::policies::underflow_error<> + with the template argument to underflow_error + one of the error_policy_type + enumerated values. +

+
+policy<...>::denorm_error_type
+
+

+ Specifies how denorm errors are handled, will be an instance of boost::math::policies::denorm_error<> + with the template argument to denorm_error + one of the error_policy_type + enumerated values. +

+
+policy<...>::evaluation_error_type
+
+

+ Specifies how evaluation errors are handled, will be an instance of boost::math::policies::evaluation_error<> + with the template argument to evaluation_error + one of the error_policy_type + enumerated values. +

+
+policy<...>::precision_type
+
+

+ Specifies the internal precision to use in binary digits (uses zero to + represent whatever the default precision is). Will be an instance of boost::math::policies::digits2<N> + which in turn inherits from boost::mpl::int_<N>. +

+
+policy<...>::promote_float_type
+
+

+ Specifies whether or not to promote float + arguments to double precision + internally. Will be an instance of boost::math::policies::promote_float<B> which in turn inherits from boost::mpl::bool_<B>. +

+
+policy<...>::promote_double_type
+
+

+ Specifies whether or not to promote double + arguments to long double + precision internally. Will be an instance of boost::math::policies::promote_float<B> which in turn inherits from boost::mpl::bool_<B>. +

+
+policy<...>::discrete_quantile_type
+
+

+ Specifies how discrete quantiles are evaluated, will be an instance of + boost::math::policies::discrete_quantile<> + instantiated with one of the discrete_quantile_policy_type + enumerated type. +

+
+policy<...>::assert_undefined_type
+
+

+ Specifies whether mathematically-undefined properties are asserted as compile-time + errors, or treated as runtime errors instead. Will be an instance of boost::math::policies::assert_undefined<B> + which in turn inherits from boost::math::mpl::bool_<B>. +

+
+template <...argument list...>
+typename normalise<policy<>, A1>::type make_policy(...argument list..);
+
+

+ make_policy is a helper + function that converts a list of policies into a normalised policy class. +

+
+template <class Policy, 
+          class A1 = default_policy, 
+          class A2 = default_policy, 
+          class A3 = default_policy,
+          class A4 = default_policy,
+          class A5 = default_policy,
+          class A6 = default_policy,
+          class A7 = default_policy,
+          class A8 = default_policy,
+          class A9 = default_policy,
+          class A10 = default_policy,
+          class A11 = default_policy>
+struct normalise
+{
+   typedef computed-from-template-arguments type;
+};
+
+

+ The normalise class template + converts one instantiation of the policy + class into a normalised form. This is used internally to reduce code bloat: + so that instantiating a special function on policy<A,B> + or policy<B,A> actually both generate the same code + internally. +

+

+ Further more, normalise + can be used to combine a policy with one or more policies: for example + many of the special functions will use this to set policies which they + don't make use of to their default values, before forwarding to the actual + implementation. In this way code bloat is reduced, since the actual implementation + depends only on the policy types that they actually use. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html new file mode 100644 index 000000000..9907638dd --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/policy_defaults.html @@ -0,0 +1,240 @@ + + + +Using macros to Change the Policy Defaults + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ You can use the various macros below to change any (or all) of the policies. +

+

+ You can make a local change by placing a macro definition before + a function or distribution #include. +

+
+ + + + + +
[Caution]Caution

+ There is a danger of One-Definition-Rule violations if you add ad-hock + macros to more than one source files: these must be set the same in + every translation unit. +

+
+ + + + + +
[Caution]Caution

+ If you place it after the #include it will have no effect, (and it will + affect only any other following #includes). This is probably not what + you intend! +

+

+ If you want to alter the defaults for any or all of the policies for all functions and distributions, installation-wide, + then you can do so by defining various macros in boost/math/tools/user.hpp. +

+
+ + BOOST_MATH_DOMAIN_ERROR_POLICY +
+

+ Defines what happens when a domain error occurs, if not defined then defaults + to throw_on_error, but + can be set to any of the enumerated actions for error handing: throw_on_error, errno_on_error, + ignore_error or user_error. +

+
+ + BOOST_MATH_POLE_ERROR_POLICY +
+

+ Defines what happens when a pole error occurs, if not defined then defaults + to throw_on_error, but + can be set to any of the enumerated actions for error handing: throw_on_error, errno_on_error, + ignore_error or user_error. +

+
+ + BOOST_MATH_OVERFLOW_ERROR_POLICY +
+

+ Defines what happens when an overflow error occurs, if not defined then + defaults to throw_on_error, + but can be set to any of the enumerated actions for error handing: throw_on_error, errno_on_error, + ignore_error or user_error. +

+
+ + BOOST_MATH_EVALUATION_ERROR_POLICY +
+

+ Defines what happens when an internal evaluation error occurs, if not defined + then defaults to throw_on_error, + but can be set to any of the enumerated actions for error handing: throw_on_error, errno_on_error, + ignore_error or user_error. +

+
+ + BOOST_MATH_UNDERFLOW_ERROR_POLICY +
+

+ Defines what happens when an overflow error occurs, if not defined then + defaults to ignore_error, + but can be set to any of the enumerated actions for error handing: throw_on_error, errno_on_error, + ignore_error or user_error. +

+
+ + BOOST_MATH_DENORM_ERROR_POLICY +
+

+ Defines what happens when a denormalisation error occurs, if not defined + then defaults to ignore_error, + but can be set to any of the enumerated actions for error handing: throw_on_error, errno_on_error, + ignore_error or user_error. +

+
+ + BOOST_MATH_DIGITS10_POLICY +
+

+ Defines how many decimal digits to use in internal computations: defaults + to 0 - meaning use all available + digits - but can be set to some other decimal value. Since setting this + is likely to have a substantial impact on accuracy, it's not generally + recommended that you change this from the default. +

+
+ + BOOST_MATH_PROMOTE_FLOAT_POLICY +
+

+ Determines whether float types + get promoted to double internally + to ensure maximum precision in the result, defaults to true, + but can be set to false to + turn promotion of float's + off. +

+
+ + BOOST_MATH_PROMOTE_DOUBLE_POLICY +
+

+ Determines whether double + types get promoted to long double internally to ensure maximum precision + in the result, defaults to true, + but can be set to false to + turn promotion of double's + off. +

+
+ + BOOST_MATH_DISCRETE_QUANTILE_POLICY +
+

+ Determines how discrete quantiles return their results: either as an integer, + or as a real value, can be set to one of the enumerated values: real, integer_round_outwards, + integer_round_inwards, + integer_round_down, integer_round_up, integer_round_nearest. + Defaults to integer_round_outwards. +

+
+ + BOOST_MATH_ASSERT_UNDEFINED_POLICY +
+

+ Determines whether functions that are mathematically undefined for a specific + distribution compile or raise a static (i.e. compile-time) assertion. Defaults + to true: meaning that any + mathematically undefined function will not compile. When set to false then the function will compile but + return the result of a domain error: this can be useful for some generic + code, that needs to work with all distributions and determine at runtime + whether or not a particular property is well defined. +

+
+ + BOOST_MATH_MAX_SERIES_ITERATION_POLICY +
+

+ Determines how many series iterations a special function is permitted to + perform before it gives up and returns an evaluation_error: + Defaults to 1000000. +

+
+ + BOOST_MATH_MAX_ROOT_ITERATION_POLICY +
+

+ Determines how many root-finding iterations a special function is permitted + to perform before it gives up and returns an evaluation_error: + Defaults to 200. +

+
+ + Example +
+

+ Suppose we want overflow errors to set ::errno and return an infinity, discrete + quantiles to return a real-valued result (rather than round to integer), + and for mathematically undefined functions to compile, but return a domain + error. Then we could add the following to boost/math/tools/user.hpp: +

+
+#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error
+#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real
+#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
+
+

+ or we could place these definitions before +

+
+#include <boost/math/distributions/normal.hpp>
+  using boost::math::normal_distribution;
+
+

+ in a source .cpp file. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html new file mode 100644 index 000000000..280200dc4 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_ref/precision_pol.html @@ -0,0 +1,141 @@ + + + +Precision Policies + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There are two equivalent policies that effect the working precision + used to calculate results, these policies both default to 0 - meaning calculate + to the maximum precision available in the type being used - but can be + set to other values to cause lower levels of precision to be used. +

+
+namespace boost{ namespace math{ namespace policies{
+
+template <int N>
+digits10;
+
+template <int N>
+digits2;
+
+}}} // namespaces
+
+

+ As you would expect, digits10 specifies the number + of decimal digits to use, and digits2 the number of + binary digits. Internally, whichever is used, the precision is always converted + to binary digits. +

+

+ These policies are specified at compile-time, because many of the special + functions use compile-time-dispatch to select which approximation to use + based on the precision requested and the numeric type being used. +

+

+ For example we could calculate tgamma + to approximately 5 decimal digits using: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+using namespace boost::math;
+using namespace boost::math::policies;
+
+typedef policy<digits10<5> > pol;
+
+double t = tgamma(12, pol());
+
+
+

+

+

+

+

+ Or again using make_policy: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+using namespace boost::math;
+using namespace boost::math::policies;
+
+double t = tgamma(12, policy<digits10<5> >());
+
+
+

+

+

+

+

+ And for a quantile of a distribution to approximately 25-bit precision: +

+

+

+

+ +

+
+#include <boost/math/distributions/normal.hpp>
+
+using namespace boost::math;
+using namespace boost::math::policies;
+
+double q = quantile(
+      normal_distribution<double, policy<digits2<25> > >(), 
+      0.05);
+
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html new file mode 100644 index 000000000..f7593b3cb --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial.html @@ -0,0 +1,64 @@ + + + +Policy Tutorial + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html new file mode 100644 index 000000000..27b1b0784 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_dist_policies.html @@ -0,0 +1,110 @@ + + + +Setting Policies for Distributions on an Ad Hoc Basis + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ All of the statistical distributions in this library are class templates + that accept two template parameters, both with sensible defaults, for example: +

+
+namespace boost{ namespace math{
+
+template <class RealType = double, class Policy = policies::policy<> >
+class fisher_f_distribution;
+
+typedef fisher_f_distribution<> fisher_f;
+
+}}
+
+

+ This policy gets used by all the accessor functions that accept a distribution + as an argument, and forwarded to all the functions called by these. So + if you use the shorthand-typedef for the distribution, then you get double precision arithmetic and all the + default policies. +

+

+ However, say for example we wanted to evaluate the quantile of the binomial + distribution at float precision, without internal promotion to double, + and with the result rounded to the nearest integer, + then here's how it can be done: +

+

+

+

+ +

+
+#include <boost/math/distributions/binomial.hpp>
+
+//
+// Begin by defining a policy type, that gives the
+// behaviour we want:
+//
+using namespace boost::math::policies;
+typedef policy<
+   promote_float<false>,
+   discrete_quantile<integer_round_nearest>
+> mypolicy;
+//
+// Then define a distribution that uses it:
+//
+typedef boost::math::binomial_distribution<float, mypolicy> mybinom;
+//
+//  And now use it to get the quantile:
+//
+int main()
+{
+   std::cout << "quantile is: " <<
+      quantile(mybinom(200, 0.25), 0.05) << std::endl;
+}
+
+
+

+

+

+

+

+ Which outputs: +

+
quantile is: 40
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html new file mode 100644 index 000000000..2af712b53 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/ad_hoc_sf_policies.html @@ -0,0 +1,171 @@ + + + +Changing the Policy on an Ad Hoc Basis for the Special Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ All of the special functions in this library come in two overloaded forms, + one with a final "policy" parameter, and one without. For example: +

+
+namespace boost{ namespace math{
+
+template <class RealType, class Policy>
+RealType tgamma(RealType, const Policy&);
+
+template <class RealType>
+RealType tgamma(RealType);
+
+}} // namespaces
+
+

+ Normally, the second version is just a forwarding wrapper to the first + like this: +

+
+template <class RealType>
+inline RealType tgamma(RealType x)
+{
+   return tgamma(x, policies::policy<>());
+}
+
+

+ So calling a special function with a specific policy is just a matter of + defining the policy type to use and passing it as the final parameter. + For example, suppose we want tgamma + to behave in a C-compatible fashion and set ::errno when an error occurs, and never + throw an exception: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+//
+// Define the policy to use:
+//
+using namespace boost::math::policies;
+typedef policy<
+   domain_error<errno_on_error>,
+   pole_error<errno_on_error>,
+   overflow_error<errno_on_error>,
+   evaluation_error<errno_on_error> 
+> c_policy;
+//
+// Now use the policy when calling tgamma:
+//
+int main()
+{
+   errno = 0;
+   std::cout << "Result of tgamma(30000) is: " 
+      << boost::math::tgamma(30000, c_policy()) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   std::cout << "Result of tgamma(-10) is: " 
+      << boost::math::tgamma(-10, c_policy()) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+}
+
+
+

+

+

+

+

+ which outputs: +

+
Result of tgamma(30000) is: 1.#INF
+errno = 34
+Result of tgamma(-10) is: 1.#QNAN
+errno = 33
+
+

+ Alternatively, for ad hoc use, we can use the make_policy + helper function to create a policy for us: this usage is more verbose, + so is probably only preferred when a policy is going to be used once only: +

+

+

+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+int main()
+{
+   using namespace boost::math::policies;
+   errno = 0;
+   std::cout << "Result of tgamma(30000) is: " 
+      << boost::math::tgamma(
+         30000, 
+         make_policy(
+            domain_error<errno_on_error>(),
+            pole_error<errno_on_error>(),
+            overflow_error<errno_on_error>(),
+            evaluation_error<errno_on_error>() 
+         )
+      ) << std::endl;
+   // Check errno was set:
+   std::cout << "errno = " << errno << std::endl;
+   // and again with evaluation at a pole:
+   std::cout << "Result of tgamma(-10) is: " 
+      << boost::math::tgamma(
+         -10, 
+         make_policy(
+            domain_error<errno_on_error>(),
+            pole_error<errno_on_error>(),
+            overflow_error<errno_on_error>(),
+            evaluation_error<errno_on_error>() 
+         )
+      ) << std::endl;
+   // Check errno was set:
+   std::cout << "errno = " << errno << std::endl;
+}
+
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html new file mode 100644 index 000000000..3a5270d59 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/changing_policy_defaults.html @@ -0,0 +1,340 @@ + + + +Changing the Policy Defaults + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The default policies used by the library are changed by the usual configuration + macro method. +

+

+ For example, passing -DBOOST_MATH_DOMAIN_ERROR_POLICY=errno_on_error + to your compiler will cause domain errors to set ::errno and return a NaN rather than the + usual default behaviour of throwing a std::domain_error + exception. +

+
+ + + + + +
[Tip]Tip
+

+ For Microsoft Visual Studio,you can add to the Project Property Page, + C/C++, Preprocessor, Preprocessor definitions like: +

+

+ +

+
+BOOST_MATH_ASSERT_UNDEFINED_POLICY=0
+BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error
+

+

+

+ This may be helpful to avoid complications with pre-compiled headers + that may mean that the equivalent definitions in source code: +

+

+ +

+
+#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false
+#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error
+

+

+

+ may be ignored. +

+

+ The compiler command line shows: +

+

+ +

+
+/D "BOOST_MATH_ASSERT_UNDEFINED_POLICY=0"
+/D "BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error"
+

+

+
+

+ There is however a very important caveat to this: +

+
+ + + + + +
[Important]Important
+

+ Default policies changed by setting configuration + macros must be changed uniformly in every translation unit in the program. +

+

+ Failure to follow this rule may result in violations of the "One + Definition Rule (ODR)" and result in unpredictable program behaviour. +

+
+

+ That means there are only two safe ways to use these macros: +

+
    +
  • + Edit them in boost/math/tools/user.hpp, + so that the defaults are set on an installation-wide basis. Unfortunately + this may not be convenient if you are using a pre-installed Boost distribution + (on Linux for example). +
  • +
  • + Set the defines in your project's Makefile or build environment, so that + they are set uniformly across all translation units. +
  • +
+

+ What you should not do is: +

+
  • + Set the defines in the source file using #define + as doing so almost certainly will break your program, unless you're absolutely + certain that the program is restricted to a single translation unit. +
+

+ And, yes, you will find examples in our test programs where we break this + rule: but only because we know there will always be a single translation + unit only: don't say that you weren't warned! +

+

+

+

+ The following example demonstrates the effect of setting the macro BOOST_MATH_DOMAIN_ERROR_POLICY + when an invalid argument is encountered. For the purposes of this example, + we'll pass a negative degrees of freedom parameter to the student's t + distribution. +

+

+

+

+ Since we know that this is a single file program we could just add: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error
+
+

+

+

+ to the top of the source file to change the default policy to one that + simply returns a NaN when a domain error occurs. Alternatively we could + use: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error
+
+

+

+

+ To ensure the ::errno + is set when a domain error occurs as well as returning a NaN. +

+

+

+

+ This is safe provided the program consists of a single translation unit + and we place the define before + any #includes. Note that should we add the define after the includes + then it will have no effect! A warning such as: +

+

+ +

+
warning C4005: 'BOOST_MATH_OVERFLOW_ERROR_POLICY' : macro redefinition
+

+

+

+ is a certain sign that it will not have the desired + effect. +

+

+

+

+ We'll begin our sample program with the needed includes: +

+

+

+

+ +

+
+// Boost
+#include <boost/math/distributions/students_t.hpp>
+   using boost::math::students_t;  // Probability of students_t(df, t).
+
+// std
+#include <iostream>
+   using std::cout;
+   using std::endl;
+
+#include <stdexcept>
+   using std::exception;
+

+

+

+

+

+ Next we'll define the program's main() to call the student's t distribution + with an invalid degrees of freedom parameter, the program is set up to + handle either an exception or a NaN: +

+

+

+

+ +

+
+int main()
+{
+   cout << "Example error handling using Student's t function. " << endl;
+   cout << "BOOST_MATH_DOMAIN_ERROR_POLICY is set to: "
+      << BOOST_STRINGIZE(BOOST_MATH_DOMAIN_ERROR_POLICY) << endl;
+
+   double degrees_of_freedom = -1; // A bad argument!
+   double t = 10;
+
+   try
+   {
+      errno = 0;
+      students_t dist(degrees_of_freedom); // exception is thrown here if enabled
+      double p = cdf(dist, t);
+      // test for error reported by other means:
+      if((boost::math::isnan)(p))
+      {
+         cout << "cdf returned a NaN!" << endl;
+         cout << "errno is set to: " << errno << endl;
+      }
+      else
+         cout << "Probability of Student's t is " << p << endl;
+   }
+   catch(const std::exception& e)
+   {
+      std::cout <<
+         "\n""Message from thrown exception was:\n   " << e.what() << std::endl;
+   }
+
+   return 0;
+} // int main()
+

+

+

+

+

+ Here's what the program output looks like with a default build (one that + does throw exceptions): +

+

+ +

+
Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: throw_on_error
+
+Message from thrown exception was:
+   Error in function boost::math::students_t_distribution<double>::students_t_distribution:
+   Degrees of freedom argument is -1, but must be > 0 !
+
+

+

+

+ Alternatively let's build with: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error
+
+

+

+

+ Now the program output is: +

+

+ +

+
Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: ignore_error
+cdf returned a NaN!
+errno is set to: 0
+
+

+

+

+ And finally let's build with: +

+

+ +

+
+#define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error
+
+

+

+

+ Which gives the output: +

+

+ +

+
Example error handling using Student's t function.
+BOOST_MATH_DOMAIN_ERROR_POLICY is set to: errno_on_error
+cdf returned a NaN!
+errno is set to: 33
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html new file mode 100644 index 000000000..bc96296d5 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/namespace_policies.html @@ -0,0 +1,477 @@ + + + +Setting Policies at Namespace or Translation Unit Scope + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Sometimes what you want to do is just change a set of policies within the + current scope: the one thing you should not do in this situation is use + the configuration macros, as this can lead to "One Definition Rule" + violations. Instead this library provides a pair of macros especially for + this purpose. +

+

+ Let's consider the special functions first: we can declare a set of forwarding + functions that all use a specific policy using the macro BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy). + This macro should be used either inside a unique namespace set aside for + the purpose, or an unnamed namespace if you just want the functions visible + in global scope for the current file only. +

+

+

+

+ Suppose we want C::foo() + to behave in a C-compatible way and set ::errno on error rather than throwing + any exceptions. +

+

+

+

+ We'll begin by including the needed header: +

+

+

+

+ +

+
+#include <boost/math/special_functions.hpp>
+

+

+

+

+

+ Open up the "C" namespace that we'll use for our functions, + and define the policy type we want: in this case one that sets ::errno + rather than throwing exceptions. Any policies we don't specify here will + inherit the defaults: +

+

+

+

+ +

+
+namespace C{
+
+using namespace boost::math::policies;
+
+typedef policy<
+   domain_error<errno_on_error>,
+   pole_error<errno_on_error>,
+   overflow_error<errno_on_error>,
+   evaluation_error<errno_on_error>
+> c_policy;
+

+

+

+

+

+ All we need do now is invoke the BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS + macro passing our policy type as the single argument: +

+

+

+

+ +

+
+BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy)
+
+} // close namespace C
+

+

+

+

+

+ We now have a set of forwarding functions defined in namespace C that + all look something like this: +

+

+

+

+ +

+
+template <class RealType>
+inline typename boost::math::tools::promote_args<RT>::type
+   tgamma(RT z)
+{
+   return boost::math::tgamma(z, c_policy());
+}
+
+

+

+

+

+

+ So that when we call C::tgamma(z) we really end up calling boost::math::tgamma(z, C::c_policy()): +

+

+

+

+ +

+
+int main()
+{
+   errno = 0;
+   std::cout << "Result of tgamma(30000) is: "
+      << C::tgamma(30000) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   std::cout << "Result of tgamma(-10) is: "
+      << C::tgamma(-10) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+}
+

+

+

+

+

+ Which outputs: +

+

+ +

+
Result of C::tgamma(30000) is: 1.#INF
+errno = 34
+Result of C::tgamma(-10) is: 1.#QNAN
+errno = 33
+
+

+

+

+ This mechanism is particularly useful when we want to define a project-wide + policy, and don't want to modify the Boost source or set - possibly fragile + and easy to forget - project wide build macros. +

+

+

+

+ The same mechanism works well at file scope as well, by using an unnamed + namespace, we can ensure that these declarations don't conflict with any + alternate policies present in other translation units: +

+

+

+

+ +

+
+#include <boost/math/special_functions.hpp>
+
+namespace {
+
+using namespace boost::math::policies;
+
+typedef policy<
+   domain_error<errno_on_error>,
+   pole_error<errno_on_error>,
+   overflow_error<errno_on_error>,
+   evaluation_error<errno_on_error> 
+> c_policy;
+
+BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy)
+
+} // close unnamed namespace
+
+int main()
+{
+   errno = 0;
+   std::cout << "Result of tgamma(30000) is: " 
+      << tgamma(30000) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   std::cout << "Result of tgamma(-10) is: " 
+      << tgamma(-10) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+}
+
+
+

+

+

+

+

+ Handling the statistical distributions is very similar except that now + the macro BOOST_MATH_DECLARE_DISTRIBUTIONS accepts two parameters: the + floating point type to use, and the policy type to apply. For example: +

+
+BOOST_MATH_DECLARE_DISTRIBUTIONS(double, mypolicy)
+
+

+ Results a set of typedefs being defined like this: +

+
+typedef boost::math::normal_distribution<double, mypolicy> normal;
+
+

+ The name of each typedef is the same as the name of the distribution class + template, but without the "_distribution" suffix. +

+

+

+

+ Suppose we want a set of distributions to behave as follows: +

+

+

+
    +
  • + Return infinity on overflow, rather than throwing an exception. +
  • +
  • + Don't perform any promotion from double to long double internally. +
  • +
  • + Return the closest integer result from the quantiles of discrete distributions. +
  • +
+

+

+

+ We'll begin by including the needed header: +

+

+

+

+ +

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

+

+

+

+

+ Open up an appropriate namespace for our distributions, and define the + policy type we want. Any policies we don't specify here will inherit + the defaults: +

+

+

+

+ +

+
+namespace my_distributions{
+
+using namespace boost::math::policies;
+
+typedef policy<
+   // return infinity and set errno rather than throw:
+   overflow_error<errno_on_error>,
+   // Don't promote double -> long double internally:
+   promote_double<false>,
+   // Return the closest integer result for discrete quantiles:
+   discrete_quantile<integer_round_nearest>
+> my_policy;
+

+

+

+

+

+ All we need do now is invoke the BOOST_MATH_DECLARE_DISTRIBUTIONS macro + passing the floating point and policy types as arguments: +

+

+

+

+ +

+
+BOOST_MATH_DECLARE_DISTRIBUTIONS(double, my_policy)
+
+} // close namespace my_namespace
+

+

+

+

+

+ We now have a set of typedefs defined in namespace my_namespace that + all look something like this: +

+

+

+

+ +

+
+typedef boost::math::normal_distribution<double, my_policy> normal;
+typedef boost::math::cauchy_distribution<double, my_policy> cauchy;
+typedef boost::math::gamma_distribution<double, my_policy> gamma;
+// etc
+
+

+

+

+

+

+ So that when we use my_namespace::normal we really end up using boost::math::normal_distribution<double, my_policy>: +

+

+

+

+ +

+
+int main()
+{
+   //
+   // Start with something we know will overflow:
+   //
+   my_distributions::normal norm(10, 2);
+   errno = 0;
+   std::cout << "Result of quantile(norm, 0) is: " 
+      << quantile(norm, 0) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   errno = 0;
+   std::cout << "Result of quantile(norm, 1) is: " 
+      << quantile(norm, 1) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   //
+   // Now try a discrete distribution:
+   //
+   my_distributions::binomial binom(20, 0.25);
+   std::cout << "Result of quantile(binom, 0.05) is: " 
+      << quantile(binom, 0.05) << std::endl;
+   std::cout << "Result of quantile(complement(binom, 0.05)) is: " 
+      << quantile(complement(binom, 0.05)) << std::endl;
+}
+

+

+

+

+

+ Which outputs: +

+

+ +

+
Result of quantile(norm, 0) is: -1.#INF
+errno = 34
+Result of quantile(norm, 1) is: 1.#INF
+errno = 34
+Result of quantile(binom, 0.05) is: 1
+Result of quantile(complement(binom, 0.05)) is: 8
+
+

+

+

+ This mechanism is particularly useful when we want to define a project-wide + policy, and don't want to modify the Boost source or set - possibly fragile + and easy to forget - project wide build macros. +

+

+

+
+ + + + + +
[Note]Note

+ There is an important limitation to note: you can not use the macros + BOOST_MATH_DECLARE_DISTRIBUTIONS and BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS + in the same namespace, as doing so creates ambiguities + between functions and distributions of the same name. +

+

+ As before, the same mechanism works well at file scope as well: by using + an unnamed namespace, we can ensure that these declarations don't conflict + with any alternate policies present in other translation units: +

+

+

+

+ +

+
+#include <boost/math/distributions.hpp>
+
+namespace {
+
+using namespace boost::math::policies;
+
+typedef policy<
+   // return infinity and set errno rather than throw:
+   overflow_error<errno_on_error>,
+   // Don't promote double -> long double internally:
+   promote_double<false>,
+   // Return the closest integer result for discrete quantiles:
+   discrete_quantile<integer_round_nearest>
+> my_policy;
+
+BOOST_MATH_DECLARE_DISTRIBUTIONS(double, my_policy)
+
+} // close namespace my_namespace
+
+int main()
+{
+   //
+   // Start with something we know will overflow:
+   //
+   normal norm(10, 2);
+   errno = 0;
+   std::cout << "Result of quantile(norm, 0) is: " 
+      << quantile(norm, 0) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   errno = 0;
+   std::cout << "Result of quantile(norm, 1) is: " 
+      << quantile(norm, 1) << std::endl;
+   std::cout << "errno = " << errno << std::endl;
+   //
+   // Now try a discrete distribution:
+   //
+   binomial binom(20, 0.25);
+   std::cout << "Result of quantile(binom, 0.05) is: " 
+      << quantile(binom, 0.05) << std::endl;
+   std::cout << "Result of quantile(complement(binom, 0.05)) is: " 
+      << quantile(complement(binom, 0.05)) << std::endl;
+}
+
+
+

+

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html new file mode 100644 index 000000000..0f1eb1a46 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_tut_defaults.html @@ -0,0 +1,130 @@ + + + +Policies Have Sensible Defaults + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Most of the time you can just ignore the policy framework, the defaults + for the various policies are as follows, if these work OK for you then + you can stop reading now! +

+
+

+
+
Domain Error
+

+ Throws a std::domain_error exception. +

+
Pole Error
+

+ Occurs when a function is evaluated at a pole: throws a std::domain_error exception. +

+
Overflow Error
+

+ Throws a std::overflow_error exception. +

+
Underflow
+

+ Ignores the underflow, and returns zero. +

+
Denormalised Result
+

+ Ignores the fact that the result is denormalised, and returns it. +

+
Internal Evaluation Error
+

+ Throws a boost::math::evaluation_error exception. +

+
Promotion of float to double
+

+ Does occur by default - gives full float precision results. +

+
Promotion of double to long double
+

+ Does occur by default if long double offers more precision than double. +

+
Precision of Approximation Used
+

+ By default uses an approximation that will result in the lowest level + of error for the type of the result. +

+
Behaviour of Discrete Quantiles
+
+

+ The quantile function will by default return an integer result that + has been rounded outwards. That is to say lower + quantiles (where the probability is less than 0.5) are rounded downward, + and upper quantiles (where the probability is greater than 0.5) are + rounded upwards. This behaviour ensures that if an X% quantile is requested, + then at least the requested coverage will be present + in the central region, and no more than the requested + coverage will be present in the tails. +

+

+ This behaviour can be changed so that the quantile functions are rounded + differently, or even return a real-valued result using Policies. + It is strongly recommended that you read the tutorial Understanding + Quantiles of Discrete Distributions before using the quantile + function on a discrete distribution. The reference + docs describe how to change the rounding policy for these distributions. +

+
+
+
+

+ What's more, if you define your own policy type, then it automatically + inherits the defaults for any policies not explicitly set, so given: +

+
+using namespace boost::math::policies;
+//
+// Define a policy that sets ::errno on overflow, and does
+// not promote double to long double internally:
+//
+typedef policy<domain_error<errno_on_error>, promote_double<false> > mypolicy;
+
+

+ then mypolicy defines a + policy where only the overflow error handling and double-promotion + policies differ from the defaults. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html new file mode 100644 index 000000000..afc754361 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/policy_usage.html @@ -0,0 +1,71 @@ + + + +So How are Policies Used Anyway? + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The details follow later, but basically policies can be set by either: +

+
    +
  • + Defining some macros that change the default behaviour: this + is the recommended method for setting installation-wide policies. +
  • +
  • + By instantiating a distribution object with an explicit policy: this + is mainly reserved for ad hoc policy changes. +
  • +
  • + By passing a policy to a special function as an optional final argument: + this is mainly reserved for ad hoc policy changes. +
  • +
  • + By using some helper macros to define a set of functions or distributions + in the current namespace that use a specific policy: this + is the recommended method for setting policies on a project- or translation-unit-wide + basis. +
  • +
+

+ The following sections introduce these methods in more detail. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html new file mode 100644 index 000000000..1a05c9788 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/understand_dis_quant.html @@ -0,0 +1,442 @@ + + + +Understanding Quantiles of Discrete Distributions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ Discrete distributions present us with a problem when calculating the quantile: + we are starting from a continuous real-valued variable - the probability + - but the result (the value of the random variable) should really be discrete. +

+

+ Consider for example a Binomial distribution, with a sample size of 50, + and a success fraction of 0.5. There are a variety of ways we can plot + a discrete distribution, but if we plot the PDF as a step-function then + it looks something like this: +

+

+ binomial_pdf +

+

+ Now lets suppose that the user asks for a the quantile that corresponds + to a probability of 0.05, if we zoom in on the CDF for that region here's + what we see: +

+

+ binomial_quantile_1 +

+

+ As can be seen there is no random variable that corresponds to a probability + of exactly 0.05, so we're left with two choices as shown in the figure: +

+
    +
  • + We could round the result down to 18. +
  • +
  • + We could round the result up to 19. +
  • +
+

+ In fact there's actually a third choice as well: we could "pretend" + that the distribution was continuous and return a real valued result: in + this case we would calculate a result of approximately 18.701 (this accurately + reflects the fact that the result is nearer to 19 than 18). +

+

+ By using policies we can offer any of the above as options, but that still + leaves the question: What is actually the right thing to do? +

+

+ And in particular: What policy should we use by default? +

+

+ In coming to an answer we should realise that: +

+
    +
  • + Calculating an integer result is often much faster than calculating a + real-valued result: in fact in our tests it was up to 20 times faster. +
  • +
  • + Normally people calculate quantiles so that they can perform a test of + some kind: "If the random variable is less than N then + we can reject our null-hypothesis with 90% confidence." +
  • +
+

+ So there is a genuine benefit to calculating an integer result as well + as it being "the right thing to do" from a philosophical point + of view. What's more if someone asks for a quantile at 0.05, then we can + normally assume that they are asking for at + least 95% of the probability to the right of the value chosen, + and no more than 5% of the probability + to the left of the value chosen. +

+

+ In the above binomial example we would therefore round the result down + to 18. +

+

+ The converse applies to upper-quantiles: If the probability is greater + than 0.5 we would want to round the quantile up, so that at least the requested probability is to the left + of the value returned, and no more than + 1 - the requested probability is to the right of the value returned. +

+

+ Likewise for two-sided intervals, we would round lower quantiles down, + and upper quantiles up. This ensures that we have at least the + requested probability in the central region and no + more than 1 minus the requested probability in the tail areas. +

+

+ For example, taking our 50 sample binomial distribution with a success + fraction of 0.5, if we wanted a two sided 90% confidence interval, then + we would ask for the 0.05 and 0.95 quantiles with the results rounded + outwards so that at least 90% of the probability + is in the central area: +

+

+ binomial_pdf_3 +

+

+ So far so good, but there is in fact a trap waiting for the unwary here: +

+
+quantile(binomial(50, 0.5), 0.05);
+
+

+ returns 18 as the result, which is what we would expect from the graph + above, and indeed there is no x greater than 18 for which: +

+
+cdf(binomial(50, 0.5), x) <= 0.05;
+
+

+ However: +

+
+quantile(binomial(50, 0.5), 0.95);
+
+

+ returns 31, and indeed while there is no x less than 31 for which: +

+
+cdf(binomial(50, 0.5), x) >= 0.95;
+
+

+ We might naively expect that for this symmetrical distribution the result + would be 32 (since 32 = 50 - 18), but we need to remember that the cdf + of the binomial is inclusive of the random variable. + So while the left tail area includes the quantile + returned, the right tail area always excludes an upper quantile value: + since that "belongs" to the central area. +

+

+ Look at the graph above to see what's going on here: the lower quantile + of 18 belongs to the left tail, so any value <= 18 is in the left tail. + The upper quantile of 31 on the other hand belongs to the central area, + so the tail area actually starts at 32, so any value > 31 is in the + right tail. +

+

+ Therefore if U and L are the upper and lower quantiles respectively, then + a random variable X is in the tail area - where we would reject the null + hypothesis if: +

+
+X <= L || X > U
+
+

+ And the a variable X is inside the central region if: +

+
+L < X <= U
+
+

+ The moral here is to always be very careful with your comparisons + when dealing with a discrete distribution, and if in doubt, + base your comparisons on CDF's instead. +

+
+ + Other + Rounding Policies are Available +
+

+ As you would expect from a section on policies, you won't be surprised + to know that other rounding options are available: +

+
+

+
+
integer_round_outwards
+
+

+ This is the default policy as described above: lower quantiles are + rounded down (probability < 0.5), and upper quantiles (probability + > 0.5) are rounded up. +

+

+ This gives no more than the requested probability + in the tails, and at least the requested probability + in the central area. +

+
+
integer_round_inwards
+
+

+ This is the exact opposite of the default policy: lower quantiles are + rounded up (probability < 0.5), and upper quantiles (probability + > 0.5) are rounded down. +

+

+ This gives at least the requested probability + in the tails, and no more than the requested probability + in the central area. +

+
+
integer_round_down
+

+ This policy will always round the result down no matter whether it + is an upper or lower quantile +

+
integer_round_up
+

+ This policy will always round the result up no matter whether it is + an upper or lower quantile +

+
integer_round_nearest
+

+ This policy will always round the result to the nearest integer no + matter whether it is an upper or lower quantile +

+
real
+

+ This policy will return a real valued result for the quantile of a + discrete distribution: this is generally much slower than finding an + integer result but does allow for more sophisticated rounding policies. +

+
+
+

+

+

+ To understand how the rounding policies for the discrete distributions + can be used, we'll use the 50-sample binomial distribution with a success + fraction of 0.5 once again, and calculate all the possible quantiles + at 0.05 and 0.95. +

+

+

+

+ Begin by including the needed headers: +

+

+

+

+ +

+
+#include <iostream>
+#include <boost/math/distributions/binomial.hpp>
+

+

+

+

+

+ Next we'll bring the needed declarations into scope, and define distribution + types for all the available rounding policies: +

+

+

+

+ +

+
+using namespace boost::math::policies;
+using namespace boost::math;
+
+typedef binomial_distribution<
+            double, 
+            policy<discrete_quantile<integer_round_outwards> > > 
+        binom_round_outwards;
+
+typedef binomial_distribution<
+            double, 
+            policy<discrete_quantile<integer_round_inwards> > > 
+        binom_round_inwards;
+
+typedef binomial_distribution<
+            double, 
+            policy<discrete_quantile<integer_round_down> > > 
+        binom_round_down;
+
+typedef binomial_distribution<
+            double, 
+            policy<discrete_quantile<integer_round_up> > > 
+        binom_round_up;
+
+typedef binomial_distribution<
+            double, 
+            policy<discrete_quantile<integer_round_nearest> > > 
+        binom_round_nearest;
+
+typedef binomial_distribution<
+            double, 
+            policy<discrete_quantile<real> > > 
+        binom_real_quantile;
+

+

+

+

+

+ Now let's set to work calling those quantiles: +

+

+

+

+ +

+
+int main()
+{
+   std::cout << 
+      "Testing rounding policies for a 50 sample binomial distribution,\n"
+      "with a success fraction of 0.5.\n\n"
+      "Lower quantiles are calculated at p = 0.05\n\n"
+      "Upper quantiles at p = 0.95.\n\n";
+
+   std::cout << std::setw(25) << std::right
+      << "Policy"<< std::setw(18) << std::right 
+      << "Lower Quantile" << std::setw(18) << std::right 
+      << "Upper Quantile" << std::endl;
+   
+   // Test integer_round_outwards:
+   std::cout << std::setw(25) << std::right
+      << "integer_round_outwards"
+      << std::setw(18) << std::right
+      << quantile(binom_round_outwards(50, 0.5), 0.05)
+      << std::setw(18) << std::right
+      << quantile(binom_round_outwards(50, 0.5), 0.95) 
+      << std::endl;
+   
+   // Test integer_round_inwards:
+   std::cout << std::setw(25) << std::right
+      << "integer_round_inwards"
+      << std::setw(18) << std::right
+      << quantile(binom_round_inwards(50, 0.5), 0.05)
+      << std::setw(18) << std::right
+      << quantile(binom_round_inwards(50, 0.5), 0.95) 
+      << std::endl;
+   
+   // Test integer_round_down:
+   std::cout << std::setw(25) << std::right
+      << "integer_round_down"
+      << std::setw(18) << std::right
+      << quantile(binom_round_down(50, 0.5), 0.05)
+      << std::setw(18) << std::right
+      << quantile(binom_round_down(50, 0.5), 0.95) 
+      << std::endl;
+   
+   // Test integer_round_up:
+   std::cout << std::setw(25) << std::right
+      << "integer_round_up"
+      << std::setw(18) << std::right
+      << quantile(binom_round_up(50, 0.5), 0.05)
+      << std::setw(18) << std::right
+      << quantile(binom_round_up(50, 0.5), 0.95) 
+      << std::endl;
+   
+   // Test integer_round_nearest:
+   std::cout << std::setw(25) << std::right
+      << "integer_round_nearest"
+      << std::setw(18) << std::right
+      << quantile(binom_round_nearest(50, 0.5), 0.05)
+      << std::setw(18) << std::right
+      << quantile(binom_round_nearest(50, 0.5), 0.95) 
+      << std::endl;
+   
+   // Test real:
+   std::cout << std::setw(25) << std::right
+      << "real"
+      << std::setw(18) << std::right
+      << quantile(binom_real_quantile(50, 0.5), 0.05)
+      << std::setw(18) << std::right
+      << quantile(binom_real_quantile(50, 0.5), 0.95) 
+      << std::endl;
+}
+

+

+

+

+

+ Which produces the program output: +

+

+ +

+
Testing rounding policies for a 50 sample binomial distribution,
+with a success fraction of 0.5.
+
+Lower quantiles are calculated at p = 0.05
+
+Upper quantiles at p = 0.95.
+
+Testing rounding policies for a 50 sample binomial distribution,
+with a success fraction of 0.5.
+
+Lower quantiles are calculated at p = 0.05
+
+Upper quantiles at p = 0.95.
+
+                   Policy    Lower Quantile    Upper Quantile
+   integer_round_outwards                18                31
+    integer_round_inwards                19                30
+       integer_round_down                18                30
+         integer_round_up                19                31
+    integer_round_nearest                19                30
+                     real            18.701            30.299
+
+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html new file mode 100644 index 000000000..aca1a8dd7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/user_def_err_pol.html @@ -0,0 +1,647 @@ + + + +Calling User Defined Error Handlers + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ Suppose we want our own user-defined error handlers rather than the any + of the default ones supplied by the library to be used. If we set the + policy for a specific type of error to user_error + then the library will call a user-supplied error handler. These are forward + declared, but not defined in boost/math/policies/error_handling.hpp like + this: +

+

+ +

+
+namespace boost{ namespace math{ namespace policy{
+
+template <class T>
+T user_domain_error(const char* function, const char* message, const T& val);
+template <class T>
+T user_pole_error(const char* function, const char* message, const T& val);
+template <class T>
+T user_overflow_error(const char* function, const char* message, const T& val);
+template <class T>
+T user_underflow_error(const char* function, const char* message, const T& val);
+template <class T>
+T user_denorm_error(const char* function, const char* message, const T& val);
+template <class T>
+T user_evaluation_error(const char* function, const char* message, const T& val);
+
+}}} // namespaces
+
+

+

+

+ So out first job is to include the header we want to use, and then provide + definitions for the user-defined error handlers we want to use: +

+

+

+

+ +

+
+#include <iostream>
+#include <boost/math/special_functions.hpp>
+
+namespace boost{ namespace math{ namespace policies{
+
+template <class T>
+T user_domain_error(const char* function, const char* message, const T& val)
+{
+   std::cerr << "Domain Error." << std::endl;
+   return std::numeric_limits<T>::quiet_NaN();
+}
+
+template <class T>
+T user_pole_error(const char* function, const char* message, const T& val)
+{
+   std::cerr << "Pole Error." << std::endl;
+   return std::numeric_limits<T>::quiet_NaN();
+}
+
+
+}}} // namespaces
+

+

+

+

+

+ Now we'll need to define a suitable policy that will call these handlers, + and define some forwarding functions that make use of the policy: +

+

+

+

+ +

+
+namespace{
+
+using namespace boost::math::policies;
+
+typedef policy<
+   domain_error<user_error>,
+   pole_error<user_error>
+> user_error_policy;
+
+BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(user_error_policy)
+
+} // close unnamed namespace
+

+

+

+

+

+ We now have a set of forwarding functions defined in an unnamed namespace + that all look something like this: +

+

+

+

+ +

+
+template <class RealType>
+inline typename boost::math::tools::promote_args<RT>::type
+   tgamma(RT z)
+{
+   return boost::math::tgamma(z, user_error_policy());
+}
+
+

+

+

+

+

+ So that when we call tgamma(z) we really end up calling boost::math::tgamma(z, user_error_policy()), + and any errors will get directed to our own error handlers: +

+

+

+

+ +

+
+int main()
+{
+   std::cout << "Result of erf_inv(-10) is: "
+      << erf_inv(-10) << std::endl;
+   std::cout << "Result of tgamma(-10) is: "
+      << tgamma(-10) << std::endl;
+}
+

+

+

+

+

+ Which outputs: +

+

+ +

+
Domain Error.
+Result of erf_inv(-10) is: 1.#QNAN
+Pole Error.
+Result of tgamma(-10) is: 1.#QNAN
+
+

+

+

+

+

+ The previous example was all well and good, but the custom error handlers + didn't really do much of any use. In this example we'll implement all + the custom handlers and show how the information provided to them can + be used to generate nice formatted error messages. +

+

+

+

+ Each error handler has the general form: +

+

+ +

+
+template <class T>
+T user_error_type(
+   const char* function, 
+   const char* message, 
+   const T& val);
+
+

+

+

+ and accepts three arguments: +

+

+

+
+

+
+
const char* function
+

+ The name of the function that raised the error, this string contains + one or more %1% format specifiers that should be replaced by the + name of type T. +

+
const char* message
+

+ A message associated with the error, normally this contains a %1% + format specifier that should be replaced with the value of value: + however note that overflow and underflow messages do not contain + this %1% specifier (since the value of value + is immaterial in these cases). +

+
const T& value
+

+ The value that caused the error: either an argument to the function + if this is a domain or pole error, the tentative result if this is + a denorm or evaluation error, or zero or infinity for underflow or + overflow errors. +

+
+
+

+

+

+ As before we'll include the headers we need first: +

+

+

+

+ +

+
+#include <iostream>
+#include <boost/math/special_functions.hpp>
+

+

+

+

+

+ Next we'll implement the error handlers for each type of error, starting + with domain errors: +

+

+

+

+ +

+
+namespace boost{ namespace math{ namespace policies{
+
+template <class T>
+T user_domain_error(const char* function, const char* message, const T& val)
+{
+

+

+

+

+

+ We'll begin with a bit of defensive programming: +

+

+

+

+ +

+
+if(function == 0)
+    function = "Unknown function with arguments of type %1%";
+if(message == 0)
+    message = "Cause unknown with bad argument %1%";
+

+

+

+

+

+ Next we'll format the name of the function with the name of type T: +

+

+

+

+ +

+
+std::string msg("Error in function ");
+msg += (boost::format(function) % typeid(T).name()).str();
+

+

+

+

+

+ Then likewise format the error message with the value of parameter val, + making sure we output all the digits of val: +

+

+

+

+ +

+
+msg += ": \n";
+int prec = 2 + (std::numeric_limits<T>::digits * 30103UL) / 100000UL;
+msg += (boost::format(message) % boost::io::group(std::setprecision(prec), val)).str();
+

+

+

+

+

+ Now we just have to do something with the message, we could throw an + exception, but for the purposes of this example we'll just dump the message + to std::cerr: +

+

+

+

+ +

+
+std::cerr << msg << std::endl;
+

+

+

+

+

+ Finally the only sensible value we can return from a domain error is + a NaN: +

+

+

+

+ +

+
+   return std::numeric_limits<T>::quiet_NaN();
+}
+

+

+

+

+

+ Pole errors are essentially a special case of domain errors, so in this + example we'll just return the result of a domain error: +

+

+

+

+ +

+
+template <class T>
+T user_pole_error(const char* function, const char* message, const T& val)
+{
+   return user_domain_error(function, message, val);
+}
+

+

+

+

+

+ Overflow errors are very similar to domain errors, except that there's + no %1% format specifier in the message parameter: +

+

+

+

+ +

+
+template <class T>
+T user_overflow_error(const char* function, const char* message, const T& val)
+{
+   if(function == 0)
+       function = "Unknown function with arguments of type %1%";
+   if(message == 0)
+       message = "Result of function is too large to represent";
+
+   std::string msg("Error in function ");
+   msg += (boost::format(function) % typeid(T).name()).str();
+
+   msg += ": \n";
+   msg += message;
+
+   std::cerr << msg << std::endl;
+   
+   // Value passed to the function is an infinity, just return it:
+   return val; 
+}
+

+

+

+

+

+ Underflow errors are much the same as overflow: +

+

+

+

+ +

+
+template <class T>
+T user_underflow_error(const char* function, const char* message, const T& val)
+{
+   if(function == 0)
+       function = "Unknown function with arguments of type %1%";
+   if(message == 0)
+       message = "Result of function is too small to represent";
+
+   std::string msg("Error in function ");
+   msg += (boost::format(function) % typeid(T).name()).str();
+
+   msg += ": \n";
+   msg += message;
+
+   std::cerr << msg << std::endl;
+   
+   // Value passed to the function is zero, just return it:
+   return val; 
+}
+

+

+

+

+

+ Denormalised results are much the same as underflow: +

+

+

+

+ +

+
+template <class T>
+T user_denorm_error(const char* function, const char* message, const T& val)
+{
+   if(function == 0)
+       function = "Unknown function with arguments of type %1%";
+   if(message == 0)
+       message = "Result of function is denormalised";
+
+   std::string msg("Error in function ");
+   msg += (boost::format(function) % typeid(T).name()).str();
+
+   msg += ": \n";
+   msg += message;
+
+   std::cerr << msg << std::endl;
+   
+   // Value passed to the function is denormalised, just return it:
+   return val; 
+}
+

+

+

+

+

+ Which leaves us with evaluation errors, these occur when an internal + error occurs that prevents the function being fully evaluated. The parameter + val contains the closest approximation to the result + found so far: +

+

+

+

+ +

+
+template <class T>
+T user_evaluation_error(const char* function, const char* message, const T& val)
+{
+   if(function == 0)
+       function = "Unknown function with arguments of type %1%";
+   if(message == 0)
+       message = "An internal evaluation error occured with "
+                  "the best value calculated so far of %1%";
+
+   std::string msg("Error in function ");
+   msg += (boost::format(function) % typeid(T).name()).str();
+
+   msg += ": \n";
+   int prec = 2 + (std::numeric_limits<T>::digits * 30103UL) / 100000UL;
+   msg += (boost::format(message) % boost::io::group(std::setprecision(prec), val)).str();
+
+   std::cerr << msg << std::endl;
+
+   // What do we return here?  This is generally a fatal error,
+   // that should never occur, just return a NaN for the purposes
+   // of the example:
+   return std::numeric_limits<T>::quiet_NaN();
+}
+
+}}} // namespaces
+

+

+

+

+

+ Now we'll need to define a suitable policy that will call these handlers, + and define some forwarding functions that make use of the policy: +

+

+

+

+ +

+
+namespace{
+
+using namespace boost::math::policies;
+
+typedef policy<
+   domain_error<user_error>,
+   pole_error<user_error>,
+   overflow_error<user_error>,
+   underflow_error<user_error>,
+   denorm_error<user_error>,
+   evaluation_error<user_error>
+> user_error_policy;
+
+BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(user_error_policy)
+
+} // close unnamed namespace
+

+

+

+

+

+ We now have a set of forwarding functions defined in an unnamed namespace + that all look something like this: +

+

+

+

+ +

+
+template <class RealType>
+inline typename boost::math::tools::promote_args<RT>::type
+   tgamma(RT z)
+{
+   return boost::math::tgamma(z, user_error_policy());
+}
+
+

+

+

+

+

+ So that when we call tgamma(z) we really end up calling boost::math::tgamma(z, user_error_policy()), + and any errors will get directed to our own error handlers: +

+

+

+

+ +

+
+int main()
+{
+   // Raise a domain error:
+   std::cout << "Result of erf_inv(-10) is: "
+      << erf_inv(-10) << std::endl << std::endl;
+   // Raise a pole error:
+   std::cout << "Result of tgamma(-10) is: "
+      << tgamma(-10) << std::endl << std::endl;
+   // Raise an overflow error:
+   std::cout << "Result of tgamma(3000) is: "
+      << tgamma(3000) << std::endl << std::endl;
+   // Raise an underflow error:
+   std::cout << "Result of tgamma(-190.5) is: "
+      << tgamma(-190.5) << std::endl << std::endl;
+   // Unfortunately we can't predicably raise a denormalised
+   // result, nor can we raise an evaluation error in this example
+   // since these should never really occur!
+}
+

+

+

+

+

+ Which outputs: +

+

+ +

+
Error in function boost::math::erf_inv<double>(double, double):
+Argument outside range [-1, 1] in inverse erf function (got p=-10).
+Result of erf_inv(-10) is: 1.#QNAN
+
+Error in function boost::math::tgamma<long double>(long double):
+Evaluation of tgamma at a negative integer -10.
+Result of tgamma(-10) is: 1.#QNAN
+
+Error in function boost::math::tgamma<long double>(long double):
+Result of tgamma is too large to represent.
+Error in function boost::math::tgamma<double>(double):
+Result of function is too large to represent
+Result of tgamma(3000) is: 1.#INF
+
+Error in function boost::math::tgamma<long double>(long double):
+Result of tgamma is too large to represent.
+Error in function boost::math::tgamma<long double>(long double):
+Result of tgamma is too small to represent.
+Result of tgamma(-190.5) is: 0
+
+

+

+

+ Notice how some of the calls result in an error handler being called + more than once, or for more than one handler to be called: this is an + artefact of the fact that many functions are implemented in terms of + one or more sub-routines each of which may have it's own error handling. + For example tgamma(-190.5) + is implemented in terms of tgamma(190.5) - which overflows - the reflection formula + for tgamma then notices + that it's dividing by infinity and underflows. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html new file mode 100644 index 000000000..aa0461c77 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/policy/pol_tutorial/what_is_a_policy.html @@ -0,0 +1,88 @@ + + + +So Just What is a Policy Anyway? + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ A policy is a compile-time mechanism for customising the behaviour of a + special function, or a statistical distribution. With Policies you can + control: +

+
    +
  • + What action to take when an error occurs. +
  • +
  • + What happens when you call a function that is mathematically undefined + (for example if you ask for the mean of a Cauchy distribution). +
  • +
  • + What happens when you ask for a quantile of a discrete distribution. +
  • +
  • + Whether the library is allowed to internally promote float + to double and double to long + double in order to improve precision. +
  • +
  • + What precision to use when calculating the result. +
  • +
+

+ Some of these policies could arguably be runtime variables, but then we + couldn't use compile-time dispatch internally to select the best evaluation + method for the given policies. +

+

+ For this reason a Policy is a type: in fact it's an + instance of the class template boost::math::policies::policy<>. This class is just a compile-time-container + of user-selected policies (sometimes called a type-list): +

+
+using namespace boost::math::policies;
+//
+// Define a policy that sets ::errno on overflow, and does
+// not promote double to long double internally:
+//
+typedef policy<domain_error<errno_on_error>, promote_double<false> > mypolicy;
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special.html b/doc/sf_and_dist/html/math_toolkit/special.html new file mode 100644 index 000000000..996556103 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special.html @@ -0,0 +1,151 @@ + + + +Special Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+
Gamma Functions
+
+
Gamma
+
Log Gamma
+
Digamma
+
Ratios + of Gamma Functions
+
Incomplete Gamma + Functions
+
Incomplete + Gamma Function Inverses
+
Derivative + of the Incomplete Gamma Function
+
+
Factorials and Binomial + Coefficients
+
+
Factorial
+
+ Double Factorial
+
+ Rising Factorial
+
+ Falling Factorial
+
Binomial + Coefficients
+
+
Beta Functions
+
+
Beta
+
Incomplete + Beta Functions
+
The + Incomplete Beta Function Inverses
+
Derivative + of the Incomplete Beta Function
+
+
Error Functions
+
+
Error + Functions
+
Error Function + Inverses
+
+
Polynomials
+
+
Legendre (and + Associated) Polynomials
+
Laguerre (and + Associated) Polynomials
+
Hermite Polynomials
+
Spherical Harmonics
+
+
Bessel Functions
+
+
Bessel Function + Overview
+
Bessel Functions + of the First and Second Kinds
+
Modified Bessel + Functions of the First and Second Kinds
+
Spherical + Bessel Functions of the First and Second Kinds
+
+
Elliptic Integrals
+
+
Elliptic + Integral Overview
+
Elliptic + Integrals - Carlson Form
+
Elliptic Integrals + of the First Kind - Legendre Form
+
Elliptic Integrals + of the Second Kind - Legendre Form
+
Elliptic Integrals + of the Third Kind - Legendre Form
+
+
Logs, Powers, Roots and + Exponentials
+
+
log1p
+
expm1
+
cbrt
+
sqrt1pm1
+
powm1
+
hypot
+
+
Sinus Cardinal and Hyperbolic + Sinus Cardinal Functions
+
+
Sinus Cardinal + and Hyperbolic Sinus Cardinal Functions Overview
+
sinc_pi
+
sinhc_pi
+
+
Inverse Hyperbolic Functions
+
+
Inverse + Hyperbolic Functions Overview
+
acosh
+
asinh
+
atanh
+
+
Floating Point Classification: + Infinities and NaN's
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/bessel.html b/doc/sf_and_dist/html/math_toolkit/special/bessel.html new file mode 100644 index 000000000..161e474ce --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/bessel.html @@ -0,0 +1,62 @@ + + + +Bessel Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html b/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html new file mode 100644 index 000000000..0a743918d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel.html @@ -0,0 +1,673 @@ + + + +Bessel Functions of the First and Second Kinds + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
+template <class T1, class T2>
+calculated-result-type cyl_bessel_j(T1 v, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type cyl_bessel_j(T1 v, T2 x, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type cyl_neumann(T1 v, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type cyl_neumann(T1 v, T2 x, const Policy&);
+
+
+ + Description +
+

+ The functions cyl_bessel_j + and cyl_neumann + return the result of the Bessel functions of the first and second kinds + respectively: +

+

+ cyl_bessel_j(v, x) = Jv(x) +

+

+ cyl_neumann(v, x) = Yv(x) = Nv(x) +

+

+ where: +

+

+ +

+

+ +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types. + The functions are also optimised for the relatively common case that T1 + is an integer. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ The functions return the result of domain_error + whenever the result is undefined or complex. For cyl_bessel_j + this occurs when x < + 0 and v is not an integer, or when + x == + 0 and v + != 0. + For cyl_neumann + this occurs when x <= + 0. +

+

+ The following graph illustrates the cyclic nature of Jv: +

+

+ bessel_jn +

+

+ The following graph shows the behaviour of Yv: this is also cyclic for + large x, but tends to -∞ for small x: +

+

+ bessel_yv +

+
+ + Testing +
+

+ There are two sets of test values: spot values calculated using functions.wolfram.com, and a + much larger set of tests computed using a simplified version of this implementation + (with all the special case handling removed). +

+
+ + Accuracy +
+

+ The following tables show how the accuracy of these functions varies on + various platforms, along with comparisons to the GSL-1.9 + and Cephes libraries. + Note that the cyclic nature of these functions means that they have an + infinite number of irrational roots: in general these functions have arbitrarily + large relative errors when the arguments are sufficiently + close to a root. Of course the absolute error in such cases is always small. + Note that only results for the widest floating-point type on the system + are given as narrower types have effectively + zero error. All values are relative errors in units of epsilon. +

+
+

Table 31. Errors Rates in cyl_bessel_j

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ J0 and J1 +

+
+

+ Jv +

+
+

+ Jv (large values of x > 1000) +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=2.5 Mean=1.1 +

+

+ GSL Peak=6.6 +

+

+ Cephes Peak=2.5 + Mean=1.1 +

+
+

+ Peak=11 Mean=2.2 +

+

+ GSL Peak=11 +

+

+ Cephes Peak=17 + Mean=2.5 +

+
+

+ Peak=413 Mean=110 +

+

+ GSL Peak=6x1011 +

+

+ Cephes Peak=2x105 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64 / G++ 3.4 +

+
+

+ Peak=7 Mean=3 +

+
+

+ Peak=117 Mean=10 +

+
+

+ Peak=2x104 Mean=6x103 +

+
+

+ 64 +

+
+

+ SUSE Linux AMD64 / G++ 4.1 +

+
+

+ Peak=7 Mean=3 +

+
+

+ Peak=400 Mean=40 +

+
+

+ Peak=2x104 Mean=1x104 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=14 Mean=6 +

+
+

+ Peak=29 Mean=3 +

+
+

+ Peak=2700 Mean=450 +

+
+
+
+

Table 32. Errors Rates in cyl_neumann

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ J0 and J1 +

+
+

+ Jn (integer orders) +

+
+

+ Jv (fractional orders) +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=330 Mean=54 +

+

+ GSL Peak=34 Mean=9 +

+

+ Cephes Peak=330 + Mean=54 +

+
+

+ Peak=923 Mean=83 +

+

+ GSL Peak=500 Mean=54 +

+

+ Cephes Peak=923 + Mean=83 +

+
+

+ Peak=561 Mean=36 +

+

+ GSL Peak=1.4x106 Mean=7x104 +

+

+ Cephes Peak=+INF +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64 / G++ 3.4 +

+
+

+ Peak=470 Mean=56 +

+
+

+ Peak=843 Mean=51 +

+
+

+ Peak=741 Mean=51 +

+
+

+ 64 +

+
+

+ SUSE Linux AMD64 / G++ 4.1 +

+
+

+ Peak=1300 Mean=424 +

+
+

+ Peak=2x104 Mean=8x103 +

+
+

+ Peak=1x105 Mean=6x103 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=180 Mean=63 +

+
+

+ Peak=340 Mean=150 +

+
+

+ Peak=2x104 Mean=1200 +

+
+
+

+ Note that for large x these functions are largely + dependent on the accuracy of the std::sin + and std::cos functions. +

+

+ Comparison to GSL and Cephes + is interesting: both Cephes + and this library optimise the integer order case - leading to identical + results - simply using the general case is for the most part slightly more + accurate though, as noted by the better accuracy of GSL in the integer + argument cases. This implementation tends to perform much better when the + arguments become large, Cephes + in particular produces some remarkably inaccurate results with some of + the test data (no significant figures correct), and even GSL performs badly + with some inputs to Jv. Note that by way of double-checking these results, + the worst performing Cephes + and GSL cases were recomputed using functions.wolfram.com, + and the result checked against our test data: no errors in the test data + were found. +

+
+ + Implementation +
+

+ The implementation is mostly about filtering off various special cases: +

+

+ When x is negative, then the order v + must be an integer or the result is a domain error. If the order is an + integer then the function is odd for odd orders and even for even orders, + so we reflect to x > 0. +

+

+ When the order v is negative then the reflection formulae + can be used to move to v > 0: +

+

+ +

+

+ +

+

+ Note that if the order is an integer, then these formulae reduce to: +

+

+ J-n = (-1)nJn +

+

+ Y-n = (-1)nYn +

+

+ However, in general, a negative order implies that we will need to compute + both J and Y. +

+

+ When x is large compared to the order v + then the asymptotic expansions for large x in M. Abramowitz + and I.A. Stegun, Handbook of Mathematical Functions + 9.2.19 are used (these were found to be more reliable than those in A&S + 9.2.5). +

+

+ When the order v is an integer the method first relates + the result to J0, J1, Y0 and Y1 using either forwards or backwards recurrence + (Miller's algorithm) depending upon which is stable. The values for J0, + J1, Y0 and Y1 are calculated using the rational minimax approximations on + root-bracketing intervals for small |x| and Hankel + asymptotic expansion for large |x|. The coefficients + are from: +

+

+ W.J. Cody, ALGORITHM 715: SPECFUN - A Portable FORTRAN Package + of Special Function Routines and Test Drivers, ACM Transactions + on Mathematical Software, vol 19, 22 (1993). +

+

+ and +

+

+ J.F. Hart et al, Computer Approximations, John Wiley + & Sons, New York, 1968. +

+

+ These approximations are accurate to around 19 decimal digits: therefore + these methods are not used when type T has more than 64 binary digits. +

+

+ When x is small, Jx is best computed directly from + the series: +

+

+ +

+

+ In the general case we compute Jv and Yv simultaneously. +

+

+ To get the initial values, let μ = ν - floor(ν + 1/2), then μ is the fractional + part of ν such that |μ| <= 1/2 (we need this for convergence later). The + idea is to calculate Jμ(x), Jμ+1(x), Yμ(x), Yμ+1(x) and use them to obtain + Jν(x), Yν(x). +

+

+ The algorithm is called Steed's method, which needs two continued fractions + as well as the Wronskian: +

+

+ +

+

+ +

+

+ +

+

+ See: F.S. Acton, Numerical Methods that Work, The + Mathematical Association of America, Washington, 1997. +

+

+ The continued fractions are computed using the modified Lentz's method + (W.J. Lentz, Generating Bessel functions in Mie scattering calculations + using continued fractions, Applied Optics, vol 15, 668 (1976)). + Their convergence rates depend on x, therefore we + need different strategies for large x and small x. +

+

+ x > v, CF1 needs O(x) iterations + to converge, CF2 converges rapidly +

+

+ x <= v, CF1 converges rapidly, CF2 fails to converge + when x -> 0 +

+

+ When x is large (x > 2), both + continued fractions converge (CF1 may be slow for really large x). + Jμ, Jμ+1, Yμ, Yμ+1 can be calculated by +

+

+ +

+

+ where +

+

+ +

+

+ Jν and Yμ are then calculated using backward (Miller's algorithm) and forward + recurrence respectively. +

+

+ When x is small (x <= 2), + CF2 convergence may fail (but CF1 works very well). The solution here is + Temme's series: +

+

+ +

+

+ where +

+

+ +

+

+ gk and hk +are also computed by recursions (involving gamma functions), but + the formulas are a little complicated, readers are refered to N.M. Temme, + On the numerical evaluation of the ordinary Bessel function of + the second kind, Journal of Computational Physics, vol 21, 343 + (1976). Note Temme's series converge only for |μ| <= 1/2. +

+

+ As the previous case, Yν is calculated from the forward recurrence, so is + Yν+1. With these two values and fν, the Wronskian yields Jν(x) directly without + backward recurrence. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html b/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html new file mode 100644 index 000000000..d0261e604 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/bessel/bessel_over.html @@ -0,0 +1,213 @@ + + + +Bessel Function Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Ordinary + Bessel Functions +
+

+ Bessel Functions are solutions to Bessel's ordinary differential equation: +

+

+ +

+

+ where ν is the order of the equation, and may be an + arbitrary real or complex number, although integer orders are the most + common occurrence. +

+

+ This library supports either integer or real orders. +

+

+ Since this is a second order differential equation, there must be two linearly + independent solutions, the first of these is denoted Jv +and known as a Bessel + function of the first kind: +

+

+ +

+

+ This function is implemented in this library as cyl_bessel_j. +

+

+ The second solution is denoted either Yv or Nv +and is known as either a Bessel + Function of the second kind, or as a Neumann function: +

+

+ +

+

+ This function is implemented in this library as cyl_neumann. +

+

+ The Bessel functions satisfy the recurrence relations: +

+

+ +

+

+ +

+

+ Have the derivatives: +

+

+ +

+

+ +

+

+ Have the Wronskian relation: +

+

+ +

+

+ and the reflection formulae: +

+

+ +

+

+ +

+
+ + Modified + Bessel Functions +
+

+ The Bessel functions are valid for complex argument x, + and an important special case is the situation where x + is purely imaginary: giving a real valued result. In this case the functions + are the two linearly independent solutions to the modified Bessel equation: +

+

+ +

+

+ The solutions are known as the modified Bessel functions of the first and + second kind (or occasionally as the hyperbolic Bessel functions of the + first and second kind). They are denoted Iv and Kv +respectively: +

+

+ +

+

+ +

+

+ These functions are implemented in this library as cyl_bessel_i + and cyl_bessel_k + respectively. +

+

+ The modified Bessel functions satisfy the recurrence relations: +

+

+ +

+

+ +

+

+ Have the derivatives: +

+

+ +

+

+ +

+

+ Have the Wronskian relation: +

+

+ +

+

+ and the reflection formulae: +

+

+ +

+

+ +

+
+ + Spherical + Bessel Functions +
+

+ When solving the Helmholtz equation in spherical coordinates by separation + of variables, the radial equation has the form: +

+

+ +

+

+ The two linearly independent solutions to this equation are called the + spherical Bessel functions jn and yn, and are related to the ordinary Bessel + functions Jn and Yn by: +

+

+ +

+

+ The spherical Bessel function of the second kind yn +is also known as the + spherical Neumann function nn. +

+

+ These functions are implemented in this library as sph_bessel + and sph_neumann. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html b/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html new file mode 100644 index 000000000..b8bb64edd --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/bessel/mbessel.html @@ -0,0 +1,485 @@ + + + +Modified Bessel Functions of the First and Second Kinds + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
+template <class T1, class T2>
+calculated-result-type cyl_bessel_i(T1 v, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type cyl_bessel_i(T1 v, T2 x, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type cyl_bessel_k(T1 v, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type cyl_bessel_k(T1 v, T2 x, const Policy&);
+
+
+ + Description +
+

+ The functions cyl_bessel_i + and cyl_bessel_k + return the result of the modified Bessel functions of the first and second + kind respectively: +

+

+ cyl_bessel_i(v, x) = Iv(x) +

+

+ cyl_bessel_k(v, x) = Kv(x) +

+

+ where: +

+

+ +

+

+ +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types. + The functions are also optimised for the relatively common case that T1 + is an integer. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ The functions return the result of domain_error + whenever the result is undefined or complex. For cyl_bessel_j + this occurs when x < + 0 and v is not an integer, or when + x == + 0 and v + != 0. + For cyl_neumann + this occurs when x <= + 0. +

+

+ The following graph illustrates the exponential behaviour of Iv. +

+

+ bessel_i +

+

+ The following graph illustrates the exponential decay of Kv. +

+

+ bessel_k +

+
+ + Testing +
+

+ There are two sets of test values: spot values calculated using functions.wolfram.com, and a + much larger set of tests computed using a simplified version of this implementation + (with all the special case handling removed). +

+
+ + Accuracy +
+

+ The following tables show how the accuracy of these functions varies on + various platforms, along with a comparison to the GSL-1.9 + library. Note that only results for the widest floating-point type on the + system are given, as narrower types have effectively + zero error. All values are relative errors in units of epsilon. +

+
+

Table 33. Errors Rates in cyl_bessel_i

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Iv +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=10 Mean=3.4 GSL Peak=6000 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64 / G++ 3.4 +

+
+

+ Peak=11 Mean=3 +

+
+

+ 64 +

+
+

+ SUSE Linux AMD64 / G++ 4.1 +

+
+

+ Peak=11 Mean=4 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=15 Mean=4 +

+
+
+
+

Table 34. Errors Rates in cyl_bessel_k

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Kv +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=9 Mean=2 +

+

+ GSL Peak=9 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64 / G++ 3.4 +

+
+

+ Peak=10 Mean=2 +

+
+

+ 64 +

+
+

+ SUSE Linux AMD64 / G++ 4.1 +

+
+

+ Peak=10 Mean=2 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=12 Mean=5 +

+
+
+
+ + Implementation +
+

+ The following are handled as special cases first: +

+

+ When computing Iv for x < 0, then ν must be an integer + or a domain error occurs. If ν is an integer, then the function is odd if + ν is odd and even if ν is even, and we can reflect to x > 0. +

+

+ For Iv with v equal to 0, 1 or 0.5 are handled as special cases. +

+

+ The 0 and 1 cases use minimax rational approximations on finite and infinite + intervals. The coefficients are from: +

+
    +
  • + J.M. Blair and C.A. Edwards, Stable rational minimax approximations + to the modified Bessel functions I_0(x) and I_1(x), Atomic + Energy of Canada Limited Report 4928, Chalk River, 1974. +
  • +
  • + S. Moshier, Methods and Programs for Mathematical Functions, + Ellis Horwood Ltd, Chichester, 1989. +
  • +
+

+ While the 0.5 case is a simple trigonometric function: +

+

+ I0.5(x) = sqrt(2 / πx) * sinh(x) +

+

+ For Kv with v an integer, the result is calculated + using the recurrence relation: +

+

+ +

+

+ starting from K0 and K1 which are calculated using rational the approximations + above. These rational approximations are accurate to around 19 digits, + and are therefore only used when T has no more than 64 binary digits of + precision. +

+

+ In the general case, we first normalize ν to [0, [inf]) + with the help of the reflection formulae: +

+

+ +

+

+ +

+

+ Let μ = ν - floor(ν + 1/2), then μ is the fractional part of ν such that |μ| <= + 1/2 (we need this for convergence later). The idea is to calculate Kμ(x) + and Kμ+1(x), and use them to obtain Iν(x) and Kν(x). +

+

+ The algorithm is proposed by Temme in N.M. Temme, On the numerical + evaluation of the modified bessel function of the third kind, + Journal of Computational Physics, vol 19, 324 (1975), which needs two continued + fractions as well as the Wronskian: +

+

+ +

+

+ +

+

+ +

+

+ The continued fractions are computed using the modified Lentz's method + (W.J. Lentz, Generating Bessel functions in Mie scattering calculations + using continued fractions, Applied Optics, vol 15, 668 (1976)). + Their convergence rates depend on x, therefore we + need different strategies for large x and small x. +

+

+ x > v, CF1 needs O(x) iterations + to converge, CF2 converges rapidly. +

+

+ x <= v, CF1 converges rapidly, CF2 fails to converge + when x -> 0. +

+

+ When x is large (x > 2), both + continued fractions converge (CF1 may be slow for really large x). + Kμ and Kμ+1 +can be calculated by +

+

+ +

+

+ where +

+

+ +

+

+ S is also a series that is summed along with CF2, + see I.J. Thompson and A.R. Barnett, Modified Bessel functions + I_v and K_v of real order and complex argument to selected accuracy, + Computer Physics Communications, vol 47, 245 (1987). +

+

+ When x is small (x <= 2), + CF2 convergence may fail (but CF1 works very well). The solution here is + Temme's series: +

+

+ +

+

+ where +

+

+ +

+

+ fk and hk +are also computed by recursions (involving gamma functions), but + the formulas are a little complicated, readers are referred to N.M. Temme, + On the numerical evaluation of the modified Bessel function of + the third kind, Journal of Computational Physics, vol 19, 324 + (1975). Note: Temme's series converge only for |μ| <= 1/2. +

+

+ Kν(x) is then calculated from the forward recurrence, as is Kν+1(x). With + these two values and fν, the Wronskian yields Iν(x) directly. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html b/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html new file mode 100644 index 000000000..cef8e3bbb --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/bessel/sph_bessel.html @@ -0,0 +1,162 @@ + + + +Spherical Bessel Functions of the First and Second Kinds + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
+template <class T1, class T2>
+calculated-result-type sph_bessel(unsigned v, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type sph_bessel(unsigned v, T2 x, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type sph_neumann(unsigned v, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type sph_neumann(unsigned v, T2 x, const Policy&);
+
+
+ + Description +
+

+ The functions sph_bessel + and sph_neumann + return the result of the Spherical Bessel functions of the first and second + kinds respectively: +

+

+ sph_bessel(v, x) = jv(x) +

+

+ sph_neumann(v, x) = yv(x) = nv(x) +

+

+ where: +

+

+ +

+

+ The return type of these functions is computed using the result + type calculation rules for the single argument type T. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ The functions return the result of domain_error + whenever the result is undefined or complex: this occurs when x < 0. +

+

+ The jv function is cyclic like Jv but differs in its behaviour at the origin: +

+

+ sph_bessel_j +

+

+ Likewise yv is also cyclic for large x, but tends to -∞ +for small x: +

+

+ sph_bessel_y +

+
+ + Testing +
+

+ There are two sets of test values: spot values calculated using functions.wolfram.com, and + a much larger set of tests computed using a simplified version of this + implementation (with all the special case handling removed). +

+
+ + Accuracy +
+

+ Other than for some special cases, these functions are computed in terms + of cyl_bessel_j + and cyl_neumann: + refer to these functions for accuracy data. +

+
+ + Implementation +
+

+ Other than error handling and a couple of special cases these functions + are implemented directly in terms of their definitions: +

+

+ +

+

+ The special cases occur for: +

+

+ j0= sinc_pi(x) + = sin(x) / x +

+

+ and for small x < 1, we can use the series: +

+

+ +

+

+ which neatly avoids the problem of calculating 0/0 that can occur with + the main definition as x → 0. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/ellint.html b/doc/sf_and_dist/html/math_toolkit/special/ellint.html new file mode 100644 index 000000000..c4feb9705 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/ellint.html @@ -0,0 +1,56 @@ + + + +Elliptic Integrals + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html new file mode 100644 index 000000000..d2beb00e1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_1.html @@ -0,0 +1,285 @@ + + + +Elliptic Integrals of the First Kind - Legendre Form + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/ellint_1.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2>
+calculated-result-type ellint_1(T1 k, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_1(T1 k, T2 phi, const Policy&);
+
+template <class T>
+calculated-result-type ellint_1(T k);
+
+template <class T, class Policy>
+calculated-result-type ellint_1(T k, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ These two functions evaluate the incomplete elliptic integral of the first + kind F(φ, k) and its complete counterpart K(k) + = F(π/2, k). +

+

+ ellint_1 +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types: + when they are the same type then the result is the same type as the arguments. +

+
+template <class T1, class T2>
+calculated-result-type ellint_1(T1 k, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_1(T1 k, T2 phi, const Policy&);
+
+

+ Returns the incomplete elliptic integral of the first kind F(φ, + k): +

+

+ +

+

+ Requires -1 <= k <= 1, otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T>
+calculated-result-type ellint_1(T k);
+
+template <class T>
+calculated-result-type ellint_1(T k, const Policy&);
+
+

+ Returns the complete elliptic integral of the first kind K(k): +

+

+ +

+

+ Requires -1 <= k <= 1, otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Accuracy +
+

+ These functions are computed using only basic arithmetic operations, so + there isn't much variation in accuracy over differing platforms. Note that + only results for the widest floating point type on the system are given + as narrower types have effectively zero error. + All values are relative errors in units of epsilon. +

+
+

Table 36. Errors Rates in the Elliptic Integrals of the + First Kind

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ F(φ, k) +

+
+

+ K(k) +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=3 Mean=0.8 +

+
+

+ Peak=1.8 Mean=0.7 +

+
+

+ 64 +

+
+

+ Red Hat Linux / G++ 3.4 +

+
+

+ Peak=2.6 Mean=1.7 +

+
+

+ Peak=2.2 Mean=1.8 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=4.6 Mean=1.5 +

+
+

+ Peak=3.7 Mean=1.5 +

+
+
+
+ + Testing +
+

+ The tests use a mixture of spot test values calculated using the online + calculator at functions.wolfram.com, + and random test data generated using NTL::RR at 1000-bit precision and + this implementation. +

+
+ + Implementation +
+

+ These functions are implemented in terms of Carlson's integrals using the + relations: +

+

+ +

+

+ and +

+

+ +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html new file mode 100644 index 000000000..b9dcb93f9 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_2.html @@ -0,0 +1,285 @@ + + + +Elliptic Integrals of the Second Kind - Legendre Form + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/ellint_2.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2>
+calculated-result-type ellint_2(T1 k, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
+
+template <class T>
+calculated-result-type ellint_2(T k);
+
+template <class T, class Policy>
+calculated-result-type ellint_2(T k, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ These two functions evaluate the incomplete elliptic integral of the second + kind E(φ, k) and its complete counterpart E(k) + = E(π/2, k). +

+

+ ellint_2 +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types: + when they are the same type then the result is the same type as the arguments. +

+
+template <class T1, class T2>
+calculated-result-type ellint_2(T1 k, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_2(T1 k, T2 phi, const Policy&);
+
+

+ Returns the incomplete elliptic integral of the second kind E(φ, + k): +

+

+ +

+

+ Requires -1 <= k <= 1, otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T>
+calculated-result-type ellint_2(T k);
+
+template <class T>
+calculated-result-type ellint_2(T k, const Policy&);
+
+

+ Returns the complete elliptic integral of the first kind E(k): +

+

+ +

+

+ Requires -1 <= k <= 1, otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Accuracy +
+

+ These functions are computed using only basic arithmetic operations, so + there isn't much variation in accuracy over differing platforms. Note that + only results for the widest floating point type on the system are given + as narrower types have effectively zero error. + All values are relative errors in units of epsilon. +

+
+

Table 37. Errors Rates in the Elliptic Integrals of the + Second Kind

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ F(φ, k) +

+
+

+ K(k) +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=4.6 Mean=1.2 +

+
+

+ Peak=3.5 Mean=1.0 +

+
+

+ 64 +

+
+

+ Red Hat Linux / G++ 3.4 +

+
+

+ Peak=4.3 Mean=1.1 +

+
+

+ Peak=4.6 Mean=1.2 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=5.8 Mean=2.2 +

+
+

+ Peak=10.8 Mean=2.3 +

+
+
+
+ + Testing +
+

+ The tests use a mixture of spot test values calculated using the online + calculator at [http://@functions.wolfram.com functions.wolfram.com], and + random test data generated using NTL::RR at 1000-bit precision and this + implementation. +

+
+ + Implementation +
+

+ These functions are implemented in terms of Carlson's integrals using the + relations: +

+

+ +

+

+ and +

+

+ +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html new file mode 100644 index 000000000..fb333e004 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_3.html @@ -0,0 +1,339 @@ + + + +Elliptic Integrals of the Third Kind - Legendre Form + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/ellint_3.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2, class T3>
+calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type ellint_3(T1 k, T2 n);
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ These two functions evaluate the incomplete elliptic integral of the third + kind Π(n, φ, k) and its complete counterpart Π(n, + k) = E(n, π/2, k). +

+

+ ellint_3 +

+

+ The return type of these functions is computed using the result + type calculation rules when the arguments are of different + types: when they are the same type then the result is the same type as + the arguments. +

+
+template <class T1, class T2, class T3>
+calculated-result-type ellint_3(T1 k, T2 n, T3 phi);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ellint_3(T1 k, T2 n, T3 phi, const Policy&);
+
+

+ Returns the incomplete elliptic integral of the third kind Π(n, + φ, k): +

+

+ +

+

+ Requires -1 <= k <= 1 and n < 1/sin2(φ), + otherwise returns the result of domain_error + (outside this range the result would be complex). +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + + + +
[Caution]Caution

+ In addition, the region where n > 1 and φ is + not in the range [0, π/2] is currently unsupported and returns + the result of domain_error. For this + reason it is recomended that you keep φ inside its "natural" + range of [0, π/2]. +

+
+template <class T1, class T2>
+calculated-result-type ellint_3(T1 k, T2 n);
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_3(T1 k, T2 n, const Policy&);
+
+

+ Returns the complete elliptic integral of the first kind Π(n, + k): +

+

+ +

+

+ Requires -1 <= k <= 1 and n < 1, + otherwise returns the result of domain_error + (outside this range the result would be complex). +

+

+ [opitonal_policy] +

+
+ + Accuracy +
+

+ These functions are computed using only basic arithmetic operations, so + there isn't much variation in accuracy over differing platforms. Note that + only results for the widest floating point type on the system are given + as narrower types have effectively zero error. + All values are relative errors in units of epsilon. +

+
+

Table 38. Errors Rates in the Elliptic Integrals of the + Third Kind

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Π(n, φ, k) +

+
+

+ Π(n, k) +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=29 Mean=2.2 +

+
+

+ Peak=3 Mean=0.8 +

+
+

+ 64 +

+
+

+ Red Hat Linux / G++ 3.4 +

+
+

+ Peak=14 Mean=1.3 +

+
+

+ Peak=2.3 Mean=0.8 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=10 Mean=1.4 +

+
+

+ Peak=4.2 Mean=1.1 +

+
+
+
+ + Testing +
+

+ The tests use a mixture of spot test values calculated using the online + calculator at functions.wolfram.com, + and random test data generated using NTL::RR at 1000-bit precision and + this implementation. +

+
+ + Implementation +
+

+ The implementation for Π(n, φ, k) first siphons off the special cases: +

+

+ Π(0, φ, k) = F(φ, k) +

+

+ Π(n, π/2, k) = Π(n, k) +

+

+ and +

+

+ +

+

+ Then if n < 0 the relations (A&S 17.7.15/16): +

+

+ +

+

+ are used to shift n to the range [0, 1]. +

+

+ Then the relations: +

+

+ Π(n, -φ, k) = -Π(n, φ, k) +

+

+ Π(n, φ+mπ, k) = Π(n, φ, k) + 2mΠ(n, k) +

+

+ are used to move φ to the range [0, π/2]. +

+

+ The functions are then implemented in terms of Carlson's integrals using + the relations: +

+

+ +

+

+ and +

+

+ +

+

+ The remaining problem area occurs when n > 1 and φ is outside the range + [0, π/2]. In this range the reduction formula for large φ can no longer be + applied. Likewise the identities 17.7.7/8 in A&S for reducing n to + the range [0,1] appear to be no longer applicable. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html new file mode 100644 index 000000000..b9b95118f --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_carlson.html @@ -0,0 +1,484 @@ + + + +Elliptic Integrals - Carlson Form + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/ellint_rf.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2, class T3>
+calculated-result-type ellint_rf(T1 x, T2 y, T3 z)
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ellint_rf(T1 x, T2 y, T3 z, const Policy&)
+
+}} // namespaces
+
+

+ +

+
+#include <boost/math/special_functions/ellint_rd.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2, class T3>
+calculated-result-type ellint_rd(T1 x, T2 y, T3 z)
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ellint_rd(T1 x, T2 y, T3 z, const Policy&)
+
+}} // namespaces
+
+

+ +

+
+#include <boost/math/special_functions/ellint_rj.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2, class T3, class T4>
+calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p)
+
+template <class T1, class T2, class T3, class T4, class Policy>
+calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy&)
+
+}} // namespaces
+
+

+ +

+
+#include <boost/math/special_functions/ellint_rc.hpp>
+
+

+

+
+namespace boost { namespace math {
+
+template <class T1, class T2>
+calculated-result-type ellint_rc(T1 x, T2 y)
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_rc(T1 x, T2 y, const Policy&)
+
+}} // namespaces
+
+
+ + Description +
+

+ These functions return Carlson's symmetrical elliptic integrals, the functions + have complicated behavior over all their possible domains, but the following + graph gives an idea of their behavior: +

+

+ ellint_c +

+

+ The return type of these functions is computed using the result + type calculation rules when the arguments are of different + types: otherwise the return is the same type as the arguments. +

+
+template <class T1, class T2, class T3>
+calculated-result-type ellint_rf(T1 x, T2 y, T3 z)
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ellint_rf(T1 x, T2 y, T3 z, const Policy&)
+
+

+ Returns Carlson's Elliptic Integral RF: +

+

+ +

+

+ Requires that all of the arguments are non-negative, and at most one may + be zero. Otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ellint_rd(T1 x, T2 y, T3 z)
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ellint_rd(T1 x, T2 y, T3 z, const Policy&)
+
+

+ Returns Carlson's elliptic integral RD: +

+

+ +

+

+ Requires that x and y are non-negative, with at most one of them zero, + and that z >= 0. Otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3, class T4>
+calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p)
+
+template <class T1, class T2, class T3, class T4, class Policy>
+calculated-result-type ellint_rj(T1 x, T2 y, T3 z, T4 p, const Policy&)
+
+

+ Returns Carlson's elliptic integral RJ: +

+

+ +

+

+ Requires that x, y and z are non-negative, with at most one of them zero, + and that p != 0. Otherwise returns the result of + domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ When p < 0 the function returns the Cauchy + principal value using the relation: +

+

+ +

+
+template <class T1, class T2>
+calculated-result-type ellint_rc(T1 x, T2 y)
+
+template <class T1, class T2, class Policy>
+calculated-result-type ellint_rc(T1 x, T2 y, const Policy&)
+
+

+ Returns Carlson's elliptic integral RC: +

+

+ +

+

+ Requires that x > 0 and that y != 0. + Otherwise returns the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ When y < 0 the function returns the Cauchy + principal value using the relation: +

+

+ +

+
+ + Testing +
+

+ There are two sets of tests. +

+

+ Spot tests compare selected values with test data given in: +

+
+

+

+

+ B. C. Carlson, Numerical + computation of real or complex elliptic integrals. + Numerical Algorithms, Volume 10, Number 1 / March, 1995, pp 13-26. +

+

+

+
+

+ Random test data generated using NTL::RR at 1000-bit precision and our + implementation checks for rounding-errors and/or regressions. +

+

+ There are also sanity checks that use the inter-relations between the integrals + to verify their correctness: see the above Carlson paper for details. +

+
+ + Accuracy +
+

+ These functions are computed using only basic arithmetic operations, so + there isn't much variation in accuracy over differing platforms. Note that + only results for the widest floating-point type on the system are given + as narrower types have effectively zero error. + All values are relative errors in units of epsilon. +

+
+

Table 35. Errors Rates in the Carlson Elliptic Integrals

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ RF +

+
+

+ RD +

+
+

+ RJ +

+
+

+ RC +

+
+

+ 53 +

+
+

+ Win32 / Visual C++ 8.0 +

+
+

+ Peak=2.9 Mean=0.75 +

+
+

+ Peak=2.6 Mean=0.9 +

+
+

+ Peak=108 Mean=6.9 +

+
+

+ Peak=2.4 Mean=0.6 +

+
+

+ 64 +

+
+

+ Red Hat Linux / G++ 3.4 +

+
+

+ Peak=2.5 Mean=0.75 +

+
+

+ Peak=2.7 Mean=0.9 +

+
+

+ Peak=105 Mean=8 +

+
+

+ Peak=1.9 Mean=0.7 +

+
+

+ 113 +

+
+

+ HP-UX / HP aCC 6 +

+
+

+ Peak=5.3 Mean=1.6 +

+
+

+ Peak=2.9 Mean=0.99 +

+
+

+ Peak=180 Mean=12 +

+
+

+ Peak=1.8 Mean=0.7 +

+
+
+
+ + Implementation +
+

+ The key of Carlson's algorithm [Carlson79] + is the duplication theorem: +

+

+ +

+

+ By applying it repeatedly, x, y, + z get closer and closer. When they are nearly equal, + the special case equation +

+

+ +

+

+ is used. More specifically, [R F] is evaluated from + a Taylor series expansion to the fifth order. The calculations of the other + three integrals are analogous. +

+

+ For p < 0 in RJ(x, y, z, p) + and y < 0 in RC(x, y), the + integrals are singular and their Cauchy + principal values are returned via the relations: +

+

+ +

+

+ +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html new file mode 100644 index 000000000..4e04eddb0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/ellint/ellint_intro.html @@ -0,0 +1,423 @@ + + + +Elliptic Integral Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The main reference for the elliptic integrals is: +

+
+

+

+

+ M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical + Functions with Formulas, Graphs, and Mathematical Tables, National + Bureau of Standards Applied Mathematics Series, U.S. Government Printing + Office, Washington, D.C. +

+

+

+
+

+ Mathworld also contain a lot of useful background information: +

+ +

+ As does Wikipedia + Elliptic integral. +

+
+ + Notation +
+

+ All variables are real numbers unless otherwise noted. +

+
+ + Definition +
+

+ +

+

+ is called elliptic integral if R(t, s) is a rational + function of t and s, and s2 + is a cubic or quartic polynomial in t. +

+

+ Elliptic integrals generally can not be expressed in terms of elementary + functions. However, Legendre showed that all elliptic integrals can be + reduced to the following three canonical forms: +

+

+ Elliptic Integral of the First Kind (Legendre form) +

+

+ +

+

+ Elliptic Integral of the Second Kind (Legendre form) +

+

+ +

+

+ Elliptic Integral of the Third Kind (Legendre form) +

+

+ +

+

+ where +

+

+ +

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

+ φ is called the amplitude. +

+

+ k is called the modulus. +

+

+ α is called the modular angle. +

+

+ n is called the characteristic. +

+
+
+ + + + + +
[Caution]Caution
+

+ Perhaps more than any other special functions the elliptic integrals + are expressed in a variety of different ways. In particular, the final + parameter k (the modulus) may be expressed using + a modular angle α, or a parameter m. These are related + by: +

+

+ k = sinα +

+

+ m = k2 = sin2α +

+

+ So that the integral of the third kind (for example) may be expressed + as either: +

+

+ Π(n, φ, k) +

+

+ Π(n, φ \ α) +

+

+ Π(n, φ| m) +

+

+ To further complicate matters, some texts refer to the complement + of the parameter m, or 1 - m, where: +

+

+ 1 - m = 1 - k2 = cos2α +

+

+ This implementation uses k throughout: this matches + the requirements of the Technical + Report on C++ Library Extensions. However, you should be extra + careful when using these functions! +

+
+

+ When φ = π / 2, the elliptic integrals + are called complete. +

+

+ Complete Elliptic Integral of the First Kind (Legendre form) +

+

+ +

+

+ Complete Elliptic Integral of the Second Kind (Legendre form) +

+

+ +

+

+ Complete Elliptic Integral of the Third Kind (Legendre form) +

+

+ +

+

+ Carlson [Carlson77] [Carlson78] gives an alternative definition + of elliptic integral's canonical forms: +

+

+ Carlson's Elliptic Integral of the First Kind +

+

+ +

+

+ where x, y, z + are nonnegative and at most one of them may be zero. +

+

+ Carlson's Elliptic Integral of the Second Kind +

+

+ +

+

+ where x, y are nonnegative, at + most one of them may be zero, and z must be positive. +

+

+ Carlson's Elliptic Integral of the Third Kind +

+

+ +

+

+ where x, y, z + are nonnegative, at most one of them may be zero, and p + must be nonzero. +

+

+ Carlson's Degenerate Elliptic Integral +

+

+ +

+

+ where x is nonnegative and y + is nonzero. +

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

+ RC(x, y) = RF(x, y, y) +

+

+ RD(x, y, z) = RJ(x, y, z, z) +

+
+
+ + Duplication + Theorem +
+

+ Carlson proved in [Carlson78] + that +

+

+ +

+
+ + Carlson's + Formulas +
+

+ The Legendre form and Carlson form of elliptic integrals are related by + equations: +

+

+ +

+

+ In particular, +

+

+ +

+
+ + Numerical + Algorithms +
+

+ The conventional methods for computing elliptic integrals are Gauss and + Landen transformations, which converge quadratically and work well for + elliptic integrals of the first and second kinds. Unfortunately they suffer + from loss of significant digits for the third kind. Carlson's algorithm + [Carlson79] [Carlson78], + by contrast, provides a unified method for all three kinds of elliptic + integrals with satisfactory precisions. +

+
+ + References +
+

+ Special mention goes to: +

+
+

+

+

+ A. M. Legendre, Traitd des Fonctions Elliptiques et des Integrales + Euleriennes, Vol. 1. Paris (1825). +

+

+

+
+

+ However the main references are: +

+
    +
  1. + M. Abramowitz and I. A. Stegun (Eds.) (1964) Handbook of Mathematical + Functions with Formulas, Graphs, and Mathematical Tables, National Bureau + of Standards Applied Mathematics Series, U.S. Government Printing Office, + Washington, D.C. +
  2. +
  3. + B.C. Carlson, Computing elliptic integrals by duplication, + Numerische Mathematik, vol 33, 1 (1979). +
  4. +
  5. + B.C. Carlson, Elliptic Integrals of the First Kind, + SIAM Journal on Mathematical Analysis, vol 8, 231 (1977). +
  6. +
  7. + B.C. Carlson, Short Proofs of Three Theorems on Elliptic Integrals, + SIAM Journal on Mathematical Analysis, vol 9, 524 (1978). +
  8. +
  9. + B.C. Carlson and E.M. Notis, ALGORITHM 577: Algorithms for + Incomplete Elliptic Integrals, ACM Transactions on Mathematmal + Software, vol 7, 398 (1981). +
  10. +
  11. + B. C. Carlson, On computing elliptic integrals and functions. + J. Math. and Phys., 44 (1965), pp. 36-51. +
  12. +
  13. + B. C. Carlson, A table of elliptic integrals of the second + kind. Math. Comp., 49 (1987), pp. 595-606. (Supplement, ibid., + pp. S13-S17.) +
  14. +
  15. + B. C. Carlson, A table of elliptic integrals of the third kind. + Math. Comp., 51 (1988), pp. 267-280. (Supplement, ibid., pp. S1-S5.) +
  16. +
  17. + B. C. Carlson, A table of elliptic integrals: cubic cases. + Math. Comp., 53 (1989), pp. 327-333. +
  18. +
  19. + B. C. Carlson, A table of elliptic integrals: one quadratic + factor. Math. Comp., 56 (1991), pp. 267-280. +
  20. +
  21. + B. C. Carlson, A table of elliptic integrals: two quadratic + factors. Math. Comp., 59 (1992), pp. 165-180. +
  22. +
  23. + B. C. Carlson, Numerical + computation of real or complex elliptic integrals. + Numerical Algorithms, Volume 10, Number 1 / March, 1995, p13-26. +
  24. +
  25. + B. C. Carlson and John L. Gustafson, Asymptotic + Approximations for Symmetric Elliptic Integrals, SIAM + Journal on Mathematical Analysis, Volume 25, Issue 2 (March 1994), 288-303. +
  26. +
+

+ The following references, while not directly relevent to our implementation, + may also be of interest: +

+
    +
  1. + R. Burlisch, Numerical Compuation of Elliptic Integrals and + Elliptic Functions. Numerical Mathematik 7, 78-90. +
  2. +
  3. + R. Burlisch, An extension of the Bartky Transformation to Incomplete + Elliptic Integrals of the Third Kind. Numerical Mathematik + 13, 266-284. +
  4. +
  5. + R. Burlisch, Numerical Compuation of Elliptic Integrals and + Elliptic Functions. III. Numerical Mathematik 13, 305-315. +
  6. +
  7. + T. Fukushima and H. Ishizaki, Numerical + Computation of Incomplete Elliptic Integrals of a General Form. + Celestial Mechanics and Dynamical Astronomy, Volume 59, Number 3 / July, + 1994, 237-251. +
  8. +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/factorials.html b/doc/sf_and_dist/html/math_toolkit/special/factorials.html new file mode 100644 index 000000000..8c2c0697c --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/factorials.html @@ -0,0 +1,56 @@ + + + +Factorials and Binomial Coefficients + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html new file mode 100644 index 000000000..35522c7a6 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_binomial.html @@ -0,0 +1,125 @@ + + + +Binomial Coefficients + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/binomial.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+T binomial_coefficient(unsigned n, unsigned k);
+
+template <class T, class Policy>
+T binomial_coefficient(unsigned n, unsigned k, const Policy&);
+
+}} // namespaces
+
+

+ Returns the binomial coefficient: nCk. +

+

+ Requires k <= n. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ May return the result of overflow_error + if the result is too large to represent in type T. +

+
+ + Accuracy +
+

+ The accuracy will be the same as for the factorials for small arguments + (i.e. no more than one or two epsilon), and the beta + function for larger arguments. +

+
+ + Testing +
+

+ The spot tests for the binomial coefficients use data generated by functions.wolfram.com. +

+
+ + Implementation +
+

+ Binomial coefficients are calculated using table lookup of factorials where + possible using: +

+

+ nCk = n! / (k!(n-k)!) +

+

+ Otherwise it is implemented in terms of the beta function using the relations: +

+

+ nCk = 1 / (k * beta(k, + n-k+1)) +

+

+ and +

+

+ nCk = 1 / ((n-k) * beta(k+1, + n-k)) +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html new file mode 100644 index 000000000..3cf95f1c6 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_double_factorial.html @@ -0,0 +1,118 @@ + + + +Double Factorial + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/factorials.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+T double_factorial(unsigned i);
+
+template <class T, class Policy>
+T double_factorial(unsigned i, const Policy&);
+
+}} // namespaces
+
+

+ Returns i!!. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ May return the result of overflow_error + if the result is too large to represent in type T. The implementation is + designed to be optimised for small i where table lookup + of i! is possible. +

+
+ + Accuracy +
+

+ The implementation uses a trivial adaptation of the factorial function, + so error rates should be no more than a couple of epsilon higher. +

+
+ + Testing +
+

+ The spot tests for the double factorial use data generated by functions.wolfram.com. +

+
+ + Implementation +
+

+ The double factorial is implemented in terms of the factorial and gamma + functions using the relations: +

+

+ (2n)!! = 2n * n! +

+

+ (2n+1)!! = (2n+1)! / (2n n!) +

+

+ and +

+

+ (2n-1)!! = Γ((2n+1)/2) * 2n / sqrt(pi) +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html new file mode 100644 index 000000000..50bb6676c --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_factorial.html @@ -0,0 +1,161 @@ + + + +Factorial + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/factorials.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+T factorial(unsigned i);
+
+template <class T, class Policy>
+T factorial(unsigned i, const Policy&);
+
+template <class T>
+T unchecked_factorial(unsigned i);
+
+template <class T>
+struct max_factorial;
+
+}} // namespaces
+
+
+ + Description +
+
+template <class T>
+T factorial(unsigned i);
+
+template <class T, class Policy>
+T factorial(unsigned i, const Policy&);
+
+

+ Returns i!. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ For i <= max_factorial<T>::value this is implemented + by table lookup, for larger values of i, this function + is implemented in terms of tgamma. +

+

+ If i is so large that the result can not be represented + in type T, then calls overflow_error. +

+
+template <class T>
+T unchecked_factorial(unsigned i);
+
+

+ Returns i!. +

+

+ Internally this function performs table lookup of the result. Further it + performs no range checking on the value of i: it is up to the caller to + ensure that i <= max_factorial<T>::value. This + function is intended to be used inside inner loops that require fast table + lookup of factorials, but requires care to ensure that argument i + never grows too large. +

+
+template <class T>
+struct max_factorial
+{
+   static const unsigned value = X;
+};
+
+

+ This traits class defines the largest value that can be passed to unchecked_factorial. + The member value can be + used where integral constant expressions are required: for example to define + the size of further tables that depend on the factorials. +

+
+ + Accuracy +
+

+ For arguments smaller than max_factorial<T>::value + the result should be correctly rounded. For larger arguments the accuracy + will be the same as for tgamma. +

+
+ + Testing +
+

+ Basic sanity checks and spot values to verify the data tables: the main + tests for the tgamma + function handle those cases already. +

+
+ + Implementation +
+

+ The factorial function is table driven for small arguments, and is implemented + in terms of tgamma + for larger arguments. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html new file mode 100644 index 000000000..806197054 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_falling_factorial.html @@ -0,0 +1,120 @@ + + + +Falling Factorial + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/factorials.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type falling_factorial(T x, unsigned i);
+
+template <class T, class Policy>
+calculated-result-type falling_factorial(T x, unsigned i, const Policy&);
+
+}} // namespaces
+
+

+ Returns the falling factorial of x and i: +

+

+ falling_factorial(x, i) = x(x-1)(x-2)(x-3)...(x-i+1) +

+

+ Note that this function is only defined for positive i, + hence the unsigned second + argument. Argument x can be either positive or negative + however. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ May return the result of overflow_error + if the result is too large to represent in type T. +

+

+ The return type of these functions is computed using the result + type calculation rules: the type of the result is double if T is an integer type, otherwise + the type of the result is T. +

+
+ + Accuracy +
+

+ The accuracy will be the same as the tgamma_delta_ratio + function. +

+
+ + Testing +
+

+ The spot tests for the falling factorials use data generated by functions.wolfram.com. +

+
+ + Implementation +
+

+ Rising and falling factorials are implemented as ratios of gamma functions + using tgamma_delta_ratio. + Optimisations for small integer arguments are handled internally by that + function. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html new file mode 100644 index 000000000..5e456f262 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/factorials/sf_rising_factorial.html @@ -0,0 +1,124 @@ + + + +Rising Factorial + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/factorials.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type rising_factorial(T x, int i);
+
+template <class T, class Policy>
+calculated-result-type rising_factorial(T x, int i, const Policy&);
+
+}} // namespaces
+
+

+ Returns the rising factorial of x and i: +

+

+ rising_factorial(x, i) = Γ(x + i) / Γ(x); +

+

+ or +

+

+ rising_factorial(x, i) = x(x+1)(x+2)(x+3)...(x+i) +

+

+ Note that both x and i can be + negative as well as positive. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ May return the result of overflow_error + if the result is too large to represent in type T. +

+

+ The return type of these functions is computed using the result + type calculation rules: the type of the result is double if T is an integer type, otherwise + the type of the result is T. +

+
+ + Accuracy +
+

+ The accuracy will be the same as the tgamma_delta_ratio + function. +

+
+ + Testing +
+

+ The spot tests for the rising factorials use data generated by functions.wolfram.com. +

+
+ + Implementation +
+

+ Rising and falling factorials are implemented as ratios of gamma functions + using tgamma_delta_ratio. + Optimisations for small integer arguments are handled internally by that + function. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/fpclass.html b/doc/sf_and_dist/html/math_toolkit/special/fpclass.html new file mode 100644 index 000000000..a57f05a60 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/fpclass.html @@ -0,0 +1,227 @@ + + + +Floating Point Classification: Infinities and NaN's + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+
+#define FP_ZERO        /* implementation specific value */
+#define FP_NORMAL      /* implementation specific value */
+#define FP_INFINITE    /* implementation specific value */
+#define FP_NAN         /* implementation specific value */
+#define FP_SUBNORMAL   /* implementation specific value */
+
+template <class T>
+int fpclassify(T t);
+
+template <class T>
+bool isfinite(T z);
+
+template <class T>
+bool isinf(T t);
+
+template <class T>
+bool isnan(T t);
+
+template <class T>
+bool isnormal(T t);
+
+
+ + Description +
+

+ These functions provide the same functionality as the macros with the same + name in C99, indeed if the C99 macros are available, then these functions + are implemented in terms of them, otherwise they rely on std::numeric_limits<> + to function. +

+

+ Note that the definition of these functions does not suppress the + definition of these names as macros by math.h on those platforms + that already provide these as macros. That mean that the following have differing + meanings: +

+
+using namespace boost::math;
+
+// This might call a global macro if defined,
+// but might not work if the type of z is unsupported 
+// by the std lib macro:
+isnan(z);
+//
+// This calls the Boost version
+// (found via the "using namespace boost::math" declaration)
+// it works for any type that has numeric_limits support for type z:
+(isnan)(z); 
+//
+// As above but with namespace qualification.
+(boost::math::isnan)(z); 
+//
+// This will cause a compiler error is isnan is a native macro:
+boost::math::isnan(z);
+// So always use (boost::math::isnan)(z); instead. 
+
+

+ Detailed descriptions for each of these functions follows: +

+
+template <class T>
+int fpclassify(T t);
+
+

+ Returns an integer value that classifies the value t: +

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

+ fpclassify value +

+
+

+ class of t. +

+
+

+ FP_ZERO +

+
+

+ If t is zero. +

+
+

+ FP_NORMAL +

+
+

+ If t is a non-zero, non-denormalised finite + value. +

+
+

+ FP_INFINITE +

+
+

+ If t is plus or minus infinity. +

+
+

+ FP_NAN +

+
+

+ If t is a NaN. +

+
+

+ FP_SUBNORMAL +

+
+

+ If t is a denormalised number. +

+
+
+template <class T>
+bool isfinite(T z);
+
+

+ Returns true only if z is not an infinity or a NaN. +

+
+template <class T>
+bool isinf(T t);
+
+

+ Returns true only if z is plus or minus infinity. +

+
+template <class T>
+bool isnan(T t);
+
+

+ Returns true only if z is a NaN. +

+
+template <class T>
+bool isnormal(T t);
+
+

+ Returns true only if z is a normal number (not zero, + infinite, NaN, or denormalised). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html new file mode 100644 index 000000000..a115aa188 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper.html @@ -0,0 +1,51 @@ + + + +Inverse Hyperbolic Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html new file mode 100644 index 000000000..89a0295f8 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/acosh.html @@ -0,0 +1,85 @@ + + + +acosh + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ acosh +

+

+ +

+
+#include <boost/math/special_functions/acosh.hpp>
+
+

+

+
+template<class T> 
+calculated-result-type acosh(const T x);
+
+template<class T, class Policy> 
+calculated-result-type acosh(const T x, const Policy&);
+
+

+ Computes the reciprocal of (the restriction to the range of [0;+∞[) + the hyperbolic + cosine function, at x. Values returned are positive. Generalised + Taylor series are used near 1 and Laurent series are used near the infinity + to ensure accuracy. +

+

+ If x is in the range ]-∞;+1[ then returns the result + of domain_error. +

+

+ The return type of this function is computed using the result + type calculation rules: the return type is double when T is an integer type, and T + otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html new file mode 100644 index 000000000..f4700a148 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/asinh.html @@ -0,0 +1,79 @@ + + + +asinh + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ asinh +

+

+ +

+
+#include <boost/math/special_functions/asinh.hpp>
+
+

+

+
+template<class T> 
+calculated-result-type asinh(const T x);
+
+template<class T, class Policy> 
+calculated-result-type asinh(const T x, const Policy&);
+
+

+ Computes the reciprocal of the + hyperbolic sine function. Taylor series are used at the origin and + Laurent series are used near the infinity to ensure accuracy. +

+

+ The return type of this function is computed using the result + type calculation rules: the return type is double when T is an integer type, and T + otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html new file mode 100644 index 000000000..c5829c5b0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/atanh.html @@ -0,0 +1,93 @@ + + + +atanh + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ atanh +

+

+ +

+
+#include <boost/math/special_functions/atanh.hpp>
+
+

+

+
+template<class T> 
+calculated-result-type atanh(const T x);
+
+template<class T, class Policy> 
+calculated-result-type atanh(const T x, const Policy&);
+
+

+ Computes the reciprocal of the + hyperbolic tangent function, at x. Taylor series are used at the + origin to ensure accuracy. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ If x is in the range ]-∞;-1[ or in the range ]+1;+∞[ + then returns the result of domain_error. +

+

+ If x is in the range [-1;-1+ε[, then the result of -overflow_error is returned, with ε +denoting + numeric_limits<T>::epsilon(). +

+

+ If x is in the range ]+1-ε;+1], then the result of overflow_error is returned, with ε +denoting + numeric_limits<T>::epsilon(). +

+

+ The return type of this function is computed using the result + type calculation rules: the return type is double when T is an integer type, and T + otherwise. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html new file mode 100644 index 000000000..7c7c6dfb1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/inv_hyper/inv_hyper_over.html @@ -0,0 +1,163 @@ + + + +Inverse Hyperbolic Functions Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The exponential funtion is defined, for all objects for which this makes + sense, as the power series , + with n! = 1x2x3x4x5...xn (and + 0! = 1 by definition) being the + factorial of n. In particular, + the exponential function is well defined for real numbers, complex number, + quaternions, octonions, and matrices of complex numbers, among others. +

+
+

+

+

+ Graph of exp on R +

+

+

+
+
+

+

+

+ exp_on_r +

+

+

+
+
+

+

+

+ Real and Imaginary parts of exp on + C +

+

+

+
+
+

+

+

+ im_exp_on_c +

+

+

+
+

+ The hyperbolic functions are defined as power series which can be computed + (for reals, complex, quaternions and octonions) as: +

+

+ Hyperbolic cosine: +

+

+ Hyperbolic sine: +

+

+ Hyperbolic tangent: +

+
+

+

+

+ Trigonometric functions on R (cos: + purple; sin: red; tan: blue) +

+

+

+
+
+

+

+

+ trigonometric +

+

+

+
+
+

+

+

+ Hyperbolic functions on r (cosh: purple; + sinh: red; tanh: blue) +

+

+

+
+
+

+

+

+ hyperbolic +

+

+

+
+

+ The hyperbolic sine is one to one on the set of real numbers, with range + the full set of reals, while the hyperbolic tangent is also one to one + on the set of real numbers but with range [0;+∞[, and + therefore both have inverses. The hyperbolic cosine is one to one from + ]-∞;+1[ onto ]-∞;-1[ (and from ]+1;+∞[ + onto ]-∞;-1[); the inverse function we use here is defined + on ]-∞;-1[ with range ]-∞;+1[. +

+

+ The inverse of the hyperbolic tangent is called the Argument hyperbolic + tangent, and can be computed as . +

+

+ The inverse of the hyperbolic sine is called the Argument hyperbolic sine, + and can be computed (for [-1;-1+ε[) as . +

+

+ The inverse of the hyperbolic cosine is called the Argument hyperbolic + cosine, and can be computed as . +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers.html b/doc/sf_and_dist/html/math_toolkit/special/powers.html new file mode 100644 index 000000000..082245155 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers.html @@ -0,0 +1,53 @@ + + + +Logs, Powers, Roots and Exponentials + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html b/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html new file mode 100644 index 000000000..071714ff9 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers/cbrt.html @@ -0,0 +1,100 @@ + + + +cbrt + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ cbrt +

+

+ +

+
+#include <boost/math/special_functions/cbrt.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type cbrt(T x);
+
+template <class T, class Policy>
+calculated-result-type cbrt(T x, const Policy&);
+
+}} // namespaces
+
+

+ Returns the cubed root of x: x1/3. +

+

+ The return type of this function is computed using the result + type calculation rules: the return is double + when x is an integer type and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Implemented using Halley iteration. +

+
+ + Accuracy +
+

+ For built in floating-point types cbrt + should have approximately 2 epsilon accuracy. +

+
+ + Testing +
+

+ A mixture of spot test sanity checks, and random high precision test values + calculated using NTL::RR at 1000-bit precision. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html b/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html new file mode 100644 index 000000000..95254aa9d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers/expm1.html @@ -0,0 +1,109 @@ + + + +expm1 + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ expm1 +

+

+ +

+
+#include <boost/math/special_functions/expm1.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type expm1(T x);
+
+template <class T, class Policy>
+calculated-result-type expm1(T x, const Policy&);
+
+}} // namespaces
+
+

+ Returns ex - 1. +

+

+ The return type of this function is computed using the result + type calculation rules: the return is double + when x is an integer type and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ For small x, then ex is very close to 1, as a result calculating ex - 1 results in + catastrophic cancellation errors when x is small. expm1 + calculates ex - 1 using rational approximations (for up to 128-bit long doubles), + otherwise via a series expansion when x is small (giving an accuracy of + less than 2ɛ). +

+

+ Finally when BOOST_HAS_EXPM1 is defined then the float/double/long double + specializations of this template simply forward to the platform's native + (POSIX) implementation of this function. +

+
+ + Accuracy +
+

+ For built in floating point types expm1 + should have approximately 1 epsilon accuracy. +

+
+ + Testing +
+

+ A mixture of spot test sanity checks, and random high precision test values + calculated using NTL::RR at 1000-bit precision. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html b/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html new file mode 100644 index 000000000..8062456d8 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers/hypot.html @@ -0,0 +1,94 @@ + + + +hypot + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ hypot +

+
+template <class T1, class T2>
+calculated-result-type hypot(T1 x, T2 y);
+
+template <class T1, class T2, class Policy>
+calculated-result-type hypot(T1 x, T2 y, const Policy&);
+
+

+ Effects: computes +in such a + way as to avoid undue underflow and overflow. +

+

+ The return type of this function is computed using the result + type calculation rules when T1 and T2 are of different + types. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ When calculating it's quite easy for the intermediate terms to + either overflow or underflow, even though the result is in fact perfectly + representable. +

+
+ + Implementation +
+

+ The function is even and symmetric in x and y, so first take assume x,y + > 0 and x > y (we can permute the + arguments if this is not the case). +

+

+ Then if x * ε >= y we can simply return x. +

+

+ Otherwise the result is given by: +

+

+ +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html b/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html new file mode 100644 index 000000000..77d8ff6b3 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers/log1p.html @@ -0,0 +1,123 @@ + + + +log1p + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ log1p +

+

+ +

+
+#include <boost/math/special_functions/log1p.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type log1p(T x);
+
+template <class T, class Policy>
+calculated-result-type log1p(T x, const Policy&);
+
+}} // namespaces
+
+

+ Returns the natural logarithm of x+1. +

+

+ The return type of this function is computed using the result + type calculation rules: the return is double + when x is an integer type and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ There are many situations where it is desirable to compute log(x+1). However, for small x + then x+1 suffers from catastrophic cancellation + errors so that x+1 == 1 + and log(x+1) == 0, + when in fact for very small x, the best approximation to log(x+1) would be x. + log1p calculates the best + approximation to log(1+x) using a Taylor series expansion for accuracy + (less than 2ɛ). Alternatively note that there are faster methods available, + for example using the equivalence: +

+
+log(1+x) == (log(1+x) * x) / ((1-x) - 1)
+
+

+ However, experience has shown that these methods tend to fail quite spectacularly + once the compiler's optimizations are turned on, consequently they are + used only when known not to break with a particular compiler. In contrast, + the series expansion method seems to be reasonably immune to optimizer-induced + errors. +

+

+ Finally when BOOST_HAS_LOG1P is defined then the float/double/long double + specializations of this template simply forward to the platform's native + (POSIX) implementation of this function. +

+
+ + Accuracy +
+

+ For built in floating point types log1p + should have approximately 1 epsilon accuracy. +

+
+ + Testing +
+

+ A mixture of spot test sanity checks, and random high precision test values + calculated using NTL::RR at 1000-bit precision. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html b/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html new file mode 100644 index 000000000..34812b656 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers/powm1.html @@ -0,0 +1,102 @@ + + + +powm1 + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ powm1 +

+

+ +

+
+#include <boost/math/special_functions/powm1.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2>
+calculated-result-type powm1(T1 x, T2 y);
+
+template <class T1, class T2, class Policy>
+calculated-result-type powm1(T1 x, T2 y, const Policy&);
+
+}} // namespaces
+
+

+ Returns xy - 1. +

+

+ The return type of this function is computed using the result + type calculation rules when T1 and T2 are dufferent types. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ There are two domains where this is useful: when y is very small, or when + x is close to 1. +

+

+ Implemented in terms of expm1. +

+
+ + Accuracy +
+

+ Should have approximately 2-3 epsilon accuracy. +

+
+ + Testing +
+

+ A selection of random high precision test values calculated using NTL::RR + at 1000-bit precision. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html b/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html new file mode 100644 index 000000000..a5463112f --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/powers/sqrt1pm1.html @@ -0,0 +1,105 @@ + + + +sqrt1pm1 + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/sqrt1pm1.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type sqrt1pm1(T x);
+
+template <class T, class Policy>
+calculated-result-type sqrt1pm1(T x, const Policy&);
+
+}} // namespaces
+
+

+ Returns sqrt(1+x) - 1. +

+

+ The return type of this function is computed using the result + type calculation rules: the return is double + when x is an integer type and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ This function is useful when you need the difference between sqrt(x) and + 1, when x is itself close to 1. +

+

+ Implemented in terms of log1p + and expm1. +

+
+ + Accuracy +
+

+ For built in floating-point types sqrt1pm1 + should have approximately 3 epsilon accuracy. +

+
+ + Testing +
+

+ A selection of random high precision test values calculated using NTL::RR + at 1000-bit precision. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html b/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html new file mode 100644 index 000000000..c4111370a --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_beta.html @@ -0,0 +1,53 @@ + + + +Beta Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html new file mode 100644 index 000000000..b367aea74 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_derivative.html @@ -0,0 +1,111 @@ + + + +Derivative of the Incomplete Beta Function + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/beta.hpp>
+
+

+

+
+namespace boost{ namespace math{ 
+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_derivative(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_derivative(T1 a, T2 b, T3 x, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ This function finds some uses in statistical distributions: it computes + the partial derivative with respect to x of the incomplete + beta function ibeta. +

+

+ +

+

+ The return type of this function is computed using the result + type calculation rules when T1, T2 and T3 are different + types. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Accuracy +
+

+ Almost identical to the incomplete beta function ibeta. +

+
+ + Implementation +
+

+ This function just expose some of the internals of the incomplete beta + function ibeta: + refer to the documentation for that function for more information. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html new file mode 100644 index 000000000..99dbb77bd --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/beta_function.html @@ -0,0 +1,336 @@ + + + +Beta + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ Beta +

+
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/beta.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2>
+calculated-result-type beta(T1 a, T2 b);
+
+template <class T1, class T2, class Policy>
+calculated-result-type beta(T1 a, T2 b, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ The beta function is defined by: +

+

+ +

+

+ beta +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ There are effectively two versions of this function internally: a fully + generic version that is slow, but reasonably accurate, and a much more + efficient approximation that is used where the number of digits in the + significand of T correspond to a certain Lanczos + approximation. In practice any built-in floating-point type you + will encounter has an appropriate Lanczos + approximation defined for it. It is also possible, given enough + machine time, to generate further Lanczos + approximation's using the program libs/math/tools/lanczos_generator.cpp. +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types. +

+
+ + Accuracy +
+

+ The following table shows peak errors for various domains of input arguments, + along with comparisons to the GSL-1.9 + and Cephes libraries. + Note that only results for the widest floating point type on the system + are given as narrower types have effectively + zero error. +

+
+

Table 17. Peak Errors In the Beta Function

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0.4 < a,b < 100 +

+
+

+ Errors in range +

+

+ 1e-6 < a,b < 36 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=99 Mean=22 +

+

+ (GSL Peak=1178 Mean=238) +

+

+ (Cephes=1612) +

+
+

+ Peak=10.7 Mean=2.6 +

+

+ (GSL Peak=12 Mean=2.0) +

+

+ (Cephes=174) +

+
+

+ 64 +

+
+

+ Red Hat Linux IA32, g++ 3.4.4 +

+
+

+ Peak=112.1 Mean=26.9 +

+
+

+ Peak=15.8 Mean=3.6 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=61.4 Mean=19.5 +

+
+

+ Peak=12.2 Mean=3.6 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=42.03 Mean=13.94 +

+
+

+ Peak=9.8 Mean=3.1 +

+
+
+

+ Note that the worst errors occur when a or b are large, and that when this + is the case the result is very close to zero, so absolute errors will be + very small. +

+
+ + Testing +
+

+ A mixture of spot tests of exact values, and randomly generated test data + are used: the test data was computed using NTL::RR + at 1000-bit precision. +

+
+ + Implementation +
+

+ Traditional methods of evaluating the beta function either involve evaluating + the gamma functions directly, or taking logarithms and then exponentiating + the result. However, the former is prone to overflows for even very modest + arguments, while the latter is prone to cancellation errors. As an alternative, + if we regard the gamma function as a white-box containing the Lanczos + approximation, then we can combine the power terms: +

+

+ +

+

+ which is almost the ideal solution, however almost all of the error occurs + in evaluating the power terms when a or b + are large. If we assume that a > b then the larger + of the two power terms can be reduced by a factor of b, + which immediately cuts the maximum error in half: +

+

+ +

+

+ This may not be the final solution, but it is very competitive compared + to other implementation methods. +

+

+ The generic implementation - where no Lanczos + approximation approximation is available - is implemented in a very + similar way to the generic version of the gamma function. Again in order + to avoid numerical overflow the power terms that prefix the series and + continued fraction parts are collected together into: +

+

+ +

+

+ where la, lb and lc are the integration limits used for a, b, and a+b. +

+

+ There are a few special cases worth mentioning: +

+

+ When a or b are less than one, + we can use the recurrence relations: +

+

+ +

+

+ +

+

+ to move to a more favorable region where they are both greater than 1. +

+

+ In addition: +

+

+ +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html new file mode 100644 index 000000000..e5b847e6d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_function.html @@ -0,0 +1,982 @@ + + + +Incomplete Beta Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta(T1 a, T2 b, T3 x, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac(T1 a, T2 b, T3 x, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type beta(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type beta(T1 a, T2 b, T3 x, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type betac(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type betac(T1 a, T2 b, T3 x, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ There are four incomplete + beta functions : two are normalised versions (also known as regularized + beta functions) that return values in the range [0, 1], and two are non-normalised + and return values in the range [0, beta(a, + b)]. Users interested in statistical applications should use the normalised + (or regularized + ) versions (ibeta and ibetac). +

+

+ All of these functions require a > 0, b + > 0 and 0 <= x <= 1. +

+

+ The return type of these functions is computed using the result + type calculation rules when T1, T2 and T3 are different + types. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta(T1 a, T2 b, T3 x, const Policy&);
+
+

+ Returns the normalised incomplete beta function of a, b and x: +

+

+ +

+

+ ibeta +

+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac(T1 a, T2 b, T3 x, const Policy&);
+
+

+ Returns the normalised complement of the incomplete beta function of a, + b and x: +

+

+ +

+
+template <class T1, class T2, class T3>
+calculated-result-type beta(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type beta(T1 a, T2 b, T3 x, const Policy&);
+
+

+ Returns the full (non-normalised) incomplete beta function of a, b and + x: +

+

+ +

+
+template <class T1, class T2, class T3>
+calculated-result-type betac(T1 a, T2 b, T3 x);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type betac(T1 a, T2 b, T3 x, const Policy&);
+
+

+ Returns the full (non-normalised) complement of the incomplete beta function + of a, b and x: +

+

+ +

+
+ + Accuracy +
+

+ The following tables give peak and mean relative errors in over various + domains of a, b and x, along with comparisons to the GSL-1.9 + and Cephes libraries. + Note that only results for the widest floating-point type on the system + are given as narrower types have effectively + zero error. +

+

+ Note that the results for 80 and 128-bit long doubles are noticeably higher + than for doubles: this is because the wider exponent range of these types + allow more extreme test cases to be tested. For example expected results + that are zero at double precision, may be finite but exceptionally small + with the wider exponent range of the long double types. +

+
+

Table 18. Errors In the Function ibeta(a,b,x)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0 < a,b < 10 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 0 < a,b < 100 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 1x10-5 < a,b < 1x105 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=42.3 Mean=2.9 +

+

+ (GSL Peak=682 Mean=32.5) +

+

+ (Cephes Peak=42.7 + Mean=7.0) +

+
+

+ Peak=108 Mean=16.6 +

+

+ (GSL Peak=690 Mean=151) +

+

+ (Cephes Peak=1545 + Mean=218) +

+
+

+ Peak=4x103 Mean=203 +

+

+ (GSL Peak~3x105 Mean~2x104) +

+

+ (Cephes Peak~5x105 Mean~2x104) +

+
+

+ 64 +

+
+

+ Redhat Linux IA32, gcc-3.4.4 +

+
+

+ Peak=21.9 Mean=3.1 +

+
+

+ Peak=270.7 Mean=26.8 +

+
+

+ Peak~5x104 Mean=3x103 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=15.4 Mean=3.0 +

+
+

+ Peak=112.9 Mean=14.3 +

+
+

+ Peak~5x104 Mean=3x103 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=20.9 Mean=2.6 +

+
+

+ Peak=88.1 Mean=14.3 +

+
+

+ Peak~2x104 Mean=1x103 +

+
+
+
+

Table 19. Errors In the Function ibetac(a,b,x)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0 < a,b < 10 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 0 < a,b < 100 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 1x10-5 < a,b < 1x105 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=13.9 Mean=2.0 +

+
+

+ Peak=56.2 Mean=14 +

+
+

+ Peak=3x103 Mean=159 +

+
+

+ 64 +

+
+

+ Redhat Linux IA32, gcc-3.4.4 +

+
+

+ Peak=21.1 Mean=3.6 +

+
+

+ Peak=221.7 Mean=25.8 +

+
+

+ Peak~9x104 Mean=3x103 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=10.6 Mean=2.2 +

+
+

+ Peak=73.9 Mean=11.9 +

+
+

+ Peak~9x104 Mean=3x103 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=9.9 Mean=2.6 +

+
+

+ Peak=117.7 Mean=15.1 +

+
+

+ Peak~3x104 Mean=1x103 +

+
+
+
+

Table 20. Errors In the Function beta(a, b, x)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0 < a,b < 10 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 0 < a,b < 100 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 1x10-5 < a,b < 1x105 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=39 Mean=2.9 +

+
+

+ Peak=91 Mean=12.7 +

+
+

+ Peak=635 Mean=25 +

+
+

+ 64 +

+
+

+ Redhat Linux IA32, gcc-3.4.4 +

+
+

+ Peak=26 Mean=3.6 +

+
+

+ Peak=180.7 Mean=30.1 +

+
+

+ Peak~7x104 Mean=3x103 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=13 Mean=2.4 +

+
+

+ Peak=67.1 Mean=13.4 +

+
+

+ Peak~7x104 Mean=3x103 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=27.3 Mean=3.6 +

+
+

+ Peak=49.8 Mean=9.1 +

+
+

+ Peak~6x104 Mean=3x103 +

+
+
+
+

Table 21. Errors In the Function betac(a,b,x)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0 < a,b < 10 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 0 < a,b < 100 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 1x10-5 < a,b < 1x105 +

+

+ and +

+

+ 0 < x < 1 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=12.0 Mean=2.4 +

+
+

+ Peak=91 Mean=15 +

+
+

+ Peak=4x103 Mean=113 +

+
+

+ 64 +

+
+

+ Redhat Linux IA32, gcc-3.4.4 +

+
+

+ Peak=19.8 Mean=3.8 +

+
+

+ Peak=295.1 Mean=33.9 +

+
+

+ Peak~1x105 Mean=5x103 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=11.2 Mean=2.4 +

+
+

+ Peak=63.5 Mean=13.6 +

+
+

+ Peak~1x105 Mean=5x103 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=15.6 Mean=3.5 +

+
+

+ Peak=39.8 Mean=8.9 +

+
+

+ Peak~9x104 Mean=5x103 +

+
+
+
+ + Testing +
+

+ There are two sets of tests: spot tests compare values taken from Mathworld's + online function evaluator with this implementation: they provide + a basic "sanity check" for the implementation, with one spot-test + in each implementation-domain (see implementation notes below). +

+

+ Accuracy tests use data generated at very high precision (with NTL + RR class set at 1000-bit precision), using the "textbook" + continued fraction representation (refer to the first continued fraction + in the implementation discussion below). Note that this continued fraction + is not used in the implementation, and therefore we + have test data that is fully independent of the code. +

+
+ + Implementation +
+

+ This implementation is closely based upon "Algorithm + 708; Significant digit computation of the incomplete beta function ratios", + DiDonato and Morris, ACM, 1992. +

+

+ All four of these functions share a common implementation: this is passed + both x and y, and can return either p or q where these are related by: +

+

+ +

+

+ so at any point we can swap a for b, x for y and p for q if this results + in a more favourable position. Generally such swaps are performed so that + we always compute a value less than 0.9: when required this can then be + subtracted from 1 without undue cancellation error. +

+

+ The following continued fraction representation is found in many textbooks + but is not used in this implementation - it's both slower and less accurate + than the alternatives - however it is used to generate test data: +

+

+ +

+

+ The following continued fraction is due to Didonato + and Morris, and is used in this implementation when a and b are + both greater than 1: +

+

+ +

+

+ For smallish b and x then a series representation can be used: +

+

+ +

+

+ When b << a then the transition from 0 to 1 occurs very close to + x = 1 and some care has to be taken over the method of computation, in + that case the following series representation is used: +

+

+ +

+

+ Where Q(a,x) is an incomplete + gamma function. Note that this method relies on keeping a table + of all the pn previously computed, which does limit the precision of the + method, depending upon the size of the table used. +

+

+ When a and b are both small integers, + then we can relate the incomplete beta to the binomial distribution and + use the following finite sum: +

+

+ +

+

+ Finally we can sidestep difficult areas, or move to an area with a more + efficient means of computation, by using the duplication formulae: +

+

+ +

+

+ +

+

+ The domains of a, b and x for which the various methods are used are identical + to those described in the Didonato + and Morris TOMS 708 paper. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html new file mode 100644 index 000000000..3cca643e4 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_beta/ibeta_inv_function.html @@ -0,0 +1,577 @@ + + + +The Incomplete Beta Function Inverses + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/beta.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, const Policy&);
+
+template <class T1, class T2, class T3, class T4>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py);
+
+template <class T1, class T2, class T3, class T4, class Policy>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, const Policy&);
+
+template <class T1, class T2, class T3, class T4>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py);
+
+template <class T1, class T2, class T3, class T4, class Policy>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_inva(T1 b, T2 x, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_inva(T1 b, T2 x, T3 p, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac_inva(T1 b, T2 x, T3 q);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac_inva(T1 b, T2 x, T3 q, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_invb(T1 a, T2 x, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_invb(T1 a, T2 x, T3 p, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac_invb(T1 a, T2 x, T3 q);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac_invb(T1 a, T2 x, T3 q, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ There are six incomplete + beta function inverses which allow you solve for any of the three + parameters to the incomplete beta, starting from either the result of the + incomplete beta (p) or its complement (q). +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + + + +
[Tip]Tip
+

+ When people normally talk about the inverse of the incomplete beta function, + they are talking about inverting on parameter x. + These are implemented here as ibeta_inv and ibeta_inv, and are by far + the most efficient of the inverses presented here. +

+

+ The inverses on the a and b + parameters find use in some statistical applications, but have to be + computed by rather brute force numerical techniques and are consequently + several times slower. These are implemented here as ibeta_inva and ibeta_invb, + and complement versions ibetac_inva and ibetac_invb. +

+
+

+ The return type of these functions is computed using the result + type calculation rules when called with arguments T1...TN + of different types. +

+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, const Policy&);
+
+template <class T1, class T2, class T3, class T4>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py);
+
+template <class T1, class T2, class T3, class T4, class Policy>
+calculated-result-type ibeta_inv(T1 a, T2 b, T3 p, T4* py, const Policy&);
+
+

+ Returns a value x such that: p + = ibeta(a, + b, + x); + and sets *py + = 1 - x when + the py parameter is provided + and is non-null. Note that internally this function computes whichever + is the smaller of x and + 1-x, and therefore the value assigned to + *py + is free from cancellation errors. That means that even if the function + returns 1, the value stored + in *py + may be non-zero, albeit very small. +

+

+ Requires: a,b > 0 and 0 <= p <= + 1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, const Policy&);
+
+template <class T1, class T2, class T3, class T4>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py);
+
+template <class T1, class T2, class T3, class T4, class Policy>
+calculated-result-type ibetac_inv(T1 a, T2 b, T3 q, T4* py, const Policy&);
+
+

+ Returns a value x such that: q + = ibetac(a, + b, + x); + and sets *py + = 1 - x when + the py parameter is provided + and is non-null. Note that internally this function computes whichever + is the smaller of x and + 1-x, and therefore the value assigned to + *py + is free from cancellation errors. That means that even if the function + returns 1, the value stored + in *py + may be non-zero, albeit very small. +

+

+ Requires: a,b > 0 and 0 <= q <= + 1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_inva(T1 b, T2 x, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_inva(T1 b, T2 x, T3 p, const Policy&);
+
+

+ Returns a value a such that: p + = ibeta(a, + b, + x); +

+

+ Requires: b > 0, 0 < x < 1 + and 0 <= p <= 1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac_inva(T1 b, T2 x, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac_inva(T1 b, T2 x, T3 p, const Policy&);
+
+

+ Returns a value a such that: q + = ibetac(a, + b, + x); +

+

+ Requires: b > 0, 0 < x < 1 + and 0 <= q <= 1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ibeta_invb(T1 b, T2 x, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibeta_invb(T1 b, T2 x, T3 p, const Policy&);
+
+

+ Returns a value b such that: p + = ibeta(a, + b, + x); +

+

+ Requires: a > 0, 0 < x < 1 + and 0 <= p <= 1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2, class T3>
+calculated-result-type ibetac_invb(T1 b, T2 x, T3 p);
+
+template <class T1, class T2, class T3, class Policy>
+calculated-result-type ibetac_invb(T1 b, T2 x, T3 p, const Policy&);
+
+

+ Returns a value b such that: q + = ibetac(a, + b, + x); +

+

+ Requires: a > 0, 0 < x < 1 + and 0 <= q <= 1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Accuracy +
+

+ The accuracy of these functions should closely follow that of the regular + forward incomplete beta functions. However, note that in some parts of + their domain, these functions can be extremely sensitive to changes in + input, particularly when the argument p (or it's complement + q) is very close to 0 + or 1. +

+
+ + Testing +
+

+ There are two sets of tests: +

+
    +
  • + Basic sanity checks attempt to "round-trip" from a, + b and x to p or + q and back again. These tests have quite generous + tolerances: in general both the incomplete beta and its inverses change + so rapidly, that round tripping to more than a couple of significant + digits isn't possible. This is especially true when p + or q is very near one: in this case there isn't + enough "information content" in the input to the inverse function + to get back where you started. +
  • +
  • + Accuracy checks using high precision test values. These measure the accuracy + of the result, given exact input values. +
  • +
+
+ + Implementation + of ibeta_inv and ibetac_inv +
+

+ These two functions share a common implementation. +

+

+ First an initial approximation to x is computed then the last few bits + are cleaned up using Halley + iteration. The iteration limit is set to 12 of the number + of bits in T, which by experiment is sufficient to ensure that the inverses + are at least as accurate as the normal incomplete beta functions. Up to + 5 iterations may be required in extreme cases, although normally only one + or two are required. Further, the number of iterations required decreases + with increasing /a and b (which generally + form the more important use cases). +

+

+ The initial guesses used for iteration are obtained as follows: +

+

+ Firstly recall that: +

+

+ +

+

+ We may wish to start from either p or q, and to calculate either x or y. + In addition at any stage we can exchange a for b, p for q, and x for y + if it results in a more manageable problem. +

+

+ For a+b >= 5 the initial guess is computed using the + methods described in: +

+

+ Asymptotic Inversion of the Incomplete Beta Function, by N. M. Temme. + Journal of Computational and Applied Mathematics 41 (1992) 145-157. +

+

+ The nearly symmetrical case (section 2 of the paper) is used for +

+

+ +

+

+ and involves solving the inverse error function first. The method is accurate + to at least 2 decimal digits when a = 5 rising to at + least 8 digits when a = 105. +

+

+ The general error function case (section 3 of the paper) is used for +

+

+ +

+

+ and again expresses the inverse incomplete beta in terms of the inverse + of the error function. The method is accurate to at least 2 decimal digits + when a+b = 5 rising to 11 digits when a+b = + 105. However, when the result is expected to be very small, and + when a+b is also small, then its accuracy tails off, in this case when + p1/a < 0.0025 then it is better to use the following as an initial estimate: +

+

+ +

+

+ Finally the for all other cases where a+b > + 5 the method of section 4 of the + paper is used. This expresses the inverse incomplete beta in terms of the + inverse of the incomplete gamma function, and is therefore significantly + more expensive to compute than the other cases. However the method is accurate + to at least 3 decimal digits when a = 5 rising to at + least 10 digits when a = 105. This method is limited + to a > b, and therefore we need to perform an exchange a for b, p for + q and x for y when this is not the case. In addition when p is close to + 1 the method is inaccurate should we actually want y rather than x as output. + Therefore when q is small (q1/p < 10-3) we use: +

+

+ +

+

+ which is both cheaper to compute than the full method, and a more accurate + estimate on q. +

+

+ When a and b are both small there is a distinct lack of information in + the literature on how to proceed. I am extremely grateful to Prof Nico + Temme who provided the following information with a great deal of patience + and explanation on his part. Any errors that follow are entirely my own, + and not Prof Temme's. +

+

+ When a and b are both less than 1, then there is a point of inflection + in the incomplete beta at point xs + = (1 - a) / (2 - a + - b). Therefore if p > Ix(a,b) + we swap a for b, p for q and x for y, so that now we always look for a + point x below the point of inflection xs, + and on a convex curve. An initial estimate for x is made with: +

+

+ +

+

+ which is provably below the true value for x: Newton + iteration will therefore smoothly converge on x without problems + caused by overshooting etc. +

+

+ When a and b are both greater than 1, but a+b is too small to use the other + methods mentioned above, we proceed as follows. Observe that there is a + point of inflection in the incomplete beta at xs + = (1 - a) / (2 - a + - b). Therefore if p > Ix(a,b) + we swap a for b, p for q and x for y, so that now we always look for a + point x below the point of inflection xs, + and on a concave curve. An initial estimate for x is made with: +

+

+ +

+

+ which can be improved somewhat to: +

+

+ +

+

+ when b and x are both small (I've used b < a and x < 0.2). This actually + under-estimates x, which drops us on the wrong side of x for Newton iteration + to converge monotonically. However, use of higher derivatives and Halley + iteration keeps everything under control. +

+

+ The final case to be considered if when one of a and b is less than or + equal to 1, and the other greater that 1. Here, if b < a we swap a for + b, p for q and x for y. Now the curve of the incomplete beta is convex + with no points of inflection in [0,1]. For small p, x can be estimated + using +

+

+ +

+

+ which under-estimates x, and drops us on the right side of the true value + for Newton iteration to converge monotonically. However, when p is large + this can quite badly underestimate x. This is especially an issue when + we really want to find y, in which case this method can be an arbitrary + number of order of magnitudes out, leading to very poor convergence during + iteration. +

+

+ Things can be improved by considering the incomplete beta as a distorted + quarter circle, and estimating y from: +

+

+ +

+

+ This doesn't guarantee that we will drop in on the right side of x for + monotonic convergence, but it does get us close enough that Halley iteration + rapidly converges on the true value. +

+
+ + Implementation + of inverses on the a and b parameters +
+

+ These four functions share a common implementation. +

+

+ First an initial approximation is computed for a or + b: where possible this uses a Cornish-Fisher expansion + for the negative binomial distribution to get within around 1 of the result. + However, when a or b are very + small the Cornish Fisher expansion is not usable, in this case the initial + approximation is chosen so that Ix(a, b) is near the middle of the range + [0,1]. +

+

+ This initial guess is then used as a starting value for a generic root + finding algorithm. The algorithm converges rapidly on the root once it + has been bracketed, but bracketing the root may take several iterations. + A better initial approximation for a or b + would improve these functions quite substantially: currently 10-20 incomplete + beta function invocations are required to find the root. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html b/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html new file mode 100644 index 000000000..3e670b6e1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_erf.html @@ -0,0 +1,50 @@ + + + +Error Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html b/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html new file mode 100644 index 000000000..3b74e3568 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_function.html @@ -0,0 +1,642 @@ + + + +Error Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/erf.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type erf(T z);
+
+template <class T, class Policy>
+calculated-result-type erf(T z, const Policy&);
+
+template <class T>
+calculated-result-type erfc(T z);
+
+template <class T, class Policy>
+calculated-result-type erfc(T z, const Policy&);
+
+}} // namespaces
+
+

+ The return type of these functions is computed using the result + type calculation rules: the return type is double if T is an integer type, and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Description +
+
+template <class T>
+calculated-result-type erf(T z);
+
+template <class T, class Policy>
+calculated-result-type erf(T z, const Policy&);
+
+

+ Returns the error + function erf + of z: +

+

+ +

+

+ erf1 +

+
+template <class T>
+calculated-result-type erfc(T z);
+
+template <class T, class Policy>
+calculated-result-type erfc(T z, const Policy&);
+
+

+ Returns the complement of the error + function of z: +

+

+ +

+

+ erf2 +

+
+ + Accuracy +
+

+ The following table shows the peak errors (in units of epsilon) found on + various platforms with various floating point types, along with comparisons + to the GSL-1.9, + GNU C Lib, HP-UX C Library + and Cephes libraries. + Unless otherwise specified any floating point type that is narrower than + the one shown will have effectively zero error. +

+
+

Table 22. Errors In the Function erf(z)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ z < 0.5 +

+
+

+ 0.5 < z < 8 +

+
+

+ z > 8 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=0 Mean=0 +

+

+ GSL Peak=2.0 Mean=0.3 +

+

+ Cephes Peak=1.1 + Mean=0.7 +

+
+

+ Peak=0.9 Mean=0.09 +

+

+ GSL Peak=2.3 Mean=0.3 +

+

+ Cephes Peak=1.3 + Mean=0.2 +

+
+

+ Peak=0 Mean=0 +

+

+ GSL Peak=0 Mean=0 +

+

+ Cephes Peak=0 + Mean=0 +

+
+

+ 64 +

+
+

+ RedHat Linux IA32, gcc-3.3 +

+
+

+ Peak=0.7 Mean=0.07 +

+

+ GNU C Lib + Peak=0.9 Mean=0.2 +

+
+

+ Peak=0.9 Mean=0.2 +

+

+ GNU C Lib + Peak=0.9 Mean=0.07 +

+
+

+ Peak=0 Mean=0 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=0.7 Mean=0.07 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ Peak=0.9 Mean=0.1 +

+

+ GNU C Lib + Peak=0.5 Mean=0.03 +

+
+

+ Peak=0 Mean=0 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=0.8 Mean=0.1 +

+

+ HP-UX C + Library Lib Peak=0.9 Mean=0.2 +

+
+

+ Peak=0.9 Mean=0.1 +

+

+ HP-UX C + Library Lib Peak=0.5 Mean=0.02 +

+
+

+ Peak=0 Mean=0 +

+

+ HP-UX C + Library Lib Peak=0 Mean=0 +

+
+
+
+

Table 23. Errors In the Function erfc(z)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ z < 0.5 +

+
+

+ 0.5 < z < 8 +

+
+

+ z > 8 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=0.7 Mean=0.06 +

+

+ GSL Peak=1.0 Mean=0.4 +

+

+ Cephes Peak=0.7 + Mean=0.06 +

+
+

+ Peak=0.99 Mean=0.3 +

+

+ GSL Peak=2.6 Mean=0.6 +

+

+ Cephes Peak=3.6 + Mean=0.7 +

+
+

+ Peak=1.0 Mean=0.2 +

+

+ GSL Peak=3.9 Mean=0.4 +

+

+ Cephes Peak=2.7 + Mean=0.4 +

+
+

+ 64 +

+
+

+ RedHat Linux IA32, gcc-3.3 +

+
+

+ Peak=0 Mean=0 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ Peak=1.4 Mean=0.3 +

+

+ GNU C Lib + Peak=1.3 Mean=0.3 +

+
+

+ Peak=1.6 Mean=0.4 +

+

+ GNU C Lib + Peak=1.3 Mean=0.4 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=0 Mean=0 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ Peak=1.4 Mean=0.3 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ Peak=1.5 Mean=0.4 +

+

+ GNU C Lib + Peak=0 Mean=0 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=0 Mean=0 +

+

+ HP-UX C + Library Peak=0 Mean=0 +

+
+

+ Peak=1.5 Mean=0.3 +

+

+ HP-UX C + Library Peak=0.9 Mean=0.08 +

+
+

+ Peak=1.6 Mean=0.4 +

+

+ HP-UX C + Library Peak=0.9 Mean=0.1 +

+
+
+
+ + Testing +
+

+ The tests for these functions come in two parts: basic sanity checks use + spot values calculated using Mathworld's + online evaluator, while accuracy checks use high-precision test + values calculated at 1000-bit precision with NTL::RR + and this implementation. Note that the generic and type-specific versions + of these functions use differing implementations internally, so this gives + us reasonably independent test data. Using our test data to test other + "known good" implementations also provides an additional sanity + check. +

+
+ + Implementation +
+

+ All versions of these functions first use the usual reflection formulas + to make their arguments positive: +

+
+erf(-z) = 1 - erf(z);
+
+erfc(-z) = 2 - erfc(z);  // preferred when -z < -0.5
+
+erfc(-z) = 1 + erf(z);   // preferred when -0.5 <= -z < 0
+
+

+ The generic versions of these functions are implemented in terms of the + incomplete gamma function. +

+

+ When the significand (mantissa) size is recognised (currently for 53, 64 + and 113-bit reals, plus single-precision 24-bit handled via promotion to + double) then a series of rational approximations devised + by JM are used. +

+

+ For z <= + 0.5 then a rational approximation + to erf is used, based on the observation that: +

+
+erf(z)/z ~ 1.12....
+
+

+ Therefore erf is calculated using: +

+
+erf(z) = z * (1.125F + R(z));
+
+

+ where the rational approximation R(z) is optimised for absolute error: + as long as its absolute error is small enough compared to 1.125, then any + round-off error incurred during the computation of R(z) will effectively + disappear from the result. As a result the error for erf and erfc in this + region is very low: the last bit is incorrect in only a very small number + of cases. +

+

+ For z > + 0.5 we observe that over a small + interval [a, b) then: +

+
+erfc(z) * exp(z*z) * z ~ c
+
+

+ for some constant c. +

+

+ Therefore for z > + 0.5 we calculate erfc using: +

+
+erfc(z) = exp(-z*z) * (c + R(z)) / z;
+
+

+ Again R(z) is optimised for absolute error, and the constant c is the average of erfc(z) + * exp(z*z) * + z taken at the endpoints of the + range. Once again, as long as the absolute error in R(z) is small compared + to c then c + R(z) will be correctly rounded, and the error + in the result will depend only on the accuracy of the exp function. In + practice, in all but a very small number of cases, the error is confined + to the last bit of the result. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html b/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html new file mode 100644 index 000000000..b333b9c87 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_erf/error_inv.html @@ -0,0 +1,220 @@ + + + +Error Function Inverses + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/erf.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type erf_inv(T p);
+
+template <class T, class Policy>
+calculated-result-type erf_inv(T p, const Policy&);
+
+template <class T>
+calculated-result-type erfc_inv(T p);
+
+template <class T, class Policy>
+calculated-result-type erfc_inv(T p, const Policy&);
+
+}} // namespaces
+
+

+ The return type of these functions is computed using the result + type calculation rules: the return type is double if T is an integer type, and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Description +
+
+template <class T>
+calculated-result-type erf_inv(T z);
+
+template <class T, class Policy>
+calculated-result-type erf_inv(T z, const Policy&);
+
+

+ Returns the inverse + error function of z, that is a value x such that: +

+
+p = erf(x);
+
+

+ erf_inv +

+
+template <class T>
+calculated-result-type erfc_inv(T z);
+
+template <class T, class Policy>
+calculated-result-type erfc_inv(T z, const Policy&);
+
+

+ Returns the inverse of the complement of the error function of z, that + is a value x such that: +

+
+p = erfc(x);
+
+

+ erfc_inv +

+
+ + Accuracy +
+

+ For types up to and including 80-bit long doubles the approximations used + are accurate to less than ~ 2 epsilon. For higher precision types these + functions have the same accuracy as the forward + error functions. +

+
+ + Testing +
+

+ There are two sets of tests: +

+
    +
  • + Basic sanity checks attempt to "round-trip" from x + to p and back again. These tests have quite generous + tolerances: in general both the error functions and their inverses change + so rapidly in some places that round tripping to more than a couple of + significant digits isn't possible. This is especially true when p + is very near one: in this case there isn't enough "information content" + in the input to the inverse function to get back where you started. +
  • +
  • + Accuracy checks using high-precision test values. These measure the accuracy + of the result, given exact input values. +
  • +
+
+ + Implementation +
+

+ These functions use a rational approximation devised + by JM to calculate an initial approximation to the result that is + accurate to ~10-19, then only if that has insufficient accuracy compared + to the epsilon for T, do we clean up the result using Halley + iteration. +

+

+ Constructing rational approximations to the erf/erfc functions is actually + surprisingly hard, especially at high precision. For this reason no attempt + has been made to achieve 10-34 accuracy suitable for use with 128-bit reals. +

+

+ In the following discussion, p is the value passed + to erf_inv, and q is the value passed to erfc_inv, + so that p = 1 - q and q = 1 - p + and in both cases we want to solve for the same result x. +

+

+ For p < 0.5 the inverse erf function is reasonably + smooth and the approximation: +

+
+x = p(p + 10)(Y + R(p))
+
+

+ Gives a good result for a constant Y, and R(p) optimised for low absolute + error compared to |Y|. +

+

+ For q < 0.5 things get trickier, over the interval 0.5 > + q > 0.25 the following approximation works well: +

+
+x = sqrt(-2log(q)) / (Y + R(q))
+
+

+ While for q < 0.25, let +

+
+z = sqrt(-log(q))
+
+

+ Then the result is given by: +

+
+x = z(Y + R(z - B))
+
+

+ As before Y is a constant and the rational function R is optimised for + low absolute error compared to |Y|. B is also a constant: it is the smallest + value of z for which each approximation is valid. + There are several approximations of this form each of which reaches a little + further into the tail of the erfc function (at long + double precision the extended exponent + range compared to double means + that the tail goes on for a very long way indeed). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html new file mode 100644 index 000000000..760b3a1f6 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma.html @@ -0,0 +1,57 @@ + + + +Gamma Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html new file mode 100644 index 000000000..f3a614dc7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/digamma.html @@ -0,0 +1,400 @@ + + + +Digamma + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/digamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type digamma(T z);
+
+template <class T, class Policy>
+calculated-result-type digamma(T z, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ Returns the digamma or psi function of x. Digamma + is defined as the logarithmic derivative of the gamma function: +

+

+ +

+

+ digamma +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ There is no fully generic version of this function: all the implementations + are tuned to specific accuracy levels, the most precise of which delivers + 34-digits of precision. +

+

+ The return type of this function is computed using the result + type calculation rules: the result is of type double when T is an integer type, and type + T otherwise. +

+
+ + Accuracy +
+

+ The following table shows the peak errors (in units of epsilon) found on + various platforms with various floating point types. Unless otherwise specified + any floating point type that is narrower than the one shown will have + effectively zero error. +

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Random Positive Values +

+
+

+ Values Near The Positive Root +

+
+

+ Values Near Zero +

+
+

+ Negative Values +

+
+

+ 53 +

+
+

+ Win32 Visual C++ 8 +

+
+

+ Peak=0.98 Mean=0.36 +

+
+

+ Peak=0.99 Mean=0.5 +

+
+

+ Peak=0.95 Mean=0.5 +

+
+

+ Peak=214 Mean=16 +

+
+

+ 64 +

+
+

+ Linux IA32 / GCC +

+
+

+ Peak=1.4 Mean=0.4 +

+
+

+ Peak=1.3 Mean=0.45 +

+
+

+ Peak=0.98 Mean=0.35 +

+
+

+ Peak=180 Mean=13 +

+
+

+ 64 +

+
+

+ Linux IA64 / GCC +

+
+

+ Peak=0.92 Mean=0.4 +

+
+

+ Peak=1.3 Mean=0.45 +

+
+

+ Peak=0.98 Mean=0.4 +

+
+

+ Peak=180 Mean=13 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=0.9 Mean=0.4 +

+
+

+ Peak=1.1 Mean=0.5 +

+
+

+ Peak=0.99 Mean=0.4 +

+
+

+ Peak=64 Mean=6 +

+
+

+ As shown above, error rates for positive arguments are generally very low. + For negative arguments there are an infinite number of irrational roots: + relative errors very close to these can be arbitrarily large, although + absolute error will remain very low. +

+
+ + Testing +
+

+ There are two sets of tests: spot values are computed using the online + calculator at functions.wolfram.com, while random test values are generated + using the high-precision reference implementation (a differentiated Lanczos approximation + see below). +

+
+ + Implementation +
+

+ The implementation is divided up into the following domains: +

+

+ For Negative arguments the reflection formula: +

+
+digamma(1-x) = digamma(x) + pi/tan(pi*x);
+
+

+ is used to make x positive. +

+

+ For arguments in the range [0,1] the recurrence relation: +

+
+digamma(x) = digamma(x+1) - 1/x
+
+

+ is used to shift the evaluation to [1,2]. +

+

+ For arguments in the range [1,2] a rational approximation devised + by JM is used (see below). +

+

+ For arguments in the range [2,BIG] the recurrence relation: +

+
+digamma(x+1) = digamma(x) + 1/x;
+
+

+ is used to shift the evaluation to the range [1,2]. +

+

+ For arguments > BIG the asymptotic expansion: +

+

+ +

+

+ can be used. However, this expansion is divergent after a few terms: exactly + how many terms depends on the size of x. Therefore + the value of BIG must be chosen so that the series + can be truncated at a term that is too small to have any effect on the + result when evaluated at BIG. Choosing BIG=10 for + up to 80-bit reals, and BIG=20 for 128-bit reals allows the series to truncated + after a suitably small number of terms and evaluated as a polynomial in + 1/(x*x). +

+

+ The rational approximation devised + by JM in the range [1,2] is derived as follows. +

+

+ First a high precision approximation to digamma was constructed using a + 60-term differentiated Lanczos + approximation, the form used is: +

+

+ +

+

+ Where P(x) and Q(x) are the polynomials from the rational form of the Lanczos + sum, and P'(x) and Q'(x) are their first derivatives. The Lanzos part of + this approximation has a theoretical precision of ~100 decimal digits. + However, cancellation in the above sum will reduce that to around 99-(1/y) + digits if y is the result. This approximation was + used to calculate the positive root of digamma, and was found to agree + with the value used by Cody to 25 digits (See Math. Comp. 27, 123-127 (1973) + by Cody, Strecok and Thacher) and with the value used by Morris to 35 digits + (See TOMS Algorithm 708). +

+

+ Likewise a few spot tests agreed with values calculated using functions.wolfram.com + to >40 digits. That's sufficiently precise to insure that the approximation + below is accurate to double precision. Achieving 128-bit long double precision + requires that the location of the root is known to ~70 digits, and it's + not clear whether the value calculated by this method meets that requirement: + the difficulty lies in independently verifying the value obtained. +

+

+ The rational approximation devised + by JM was optimised for absolute error using the form: +

+
+digamma(x) = (x - X0)(Y + R(x - 1));
+
+

+ Where X0 is the positive root of digamma, Y is a constant, and R(x - 1) + is the rational approximation. Note that since X0 is irrational, we need + twice as many digits in X0 as in x in order to avoid cancellation error + during the subtraction (this assumes that x is an + exact value, if it's not then all bets are off). That means that even when + x is the value of the root rounded to the nearest representable value, + the result of digamma(x) will not be zero. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html new file mode 100644 index 000000000..50d215d59 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_derivatives.html @@ -0,0 +1,116 @@ + + + +Derivative of the Incomplete Gamma Function + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{ 
+
+template <class T1, class T2>
+calculated-result-type gamma_p_derivative(T1 a, T2 x);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p_derivative(T1 a, T2 x, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ This function find some uses in statistical distributions: it implements + the partial derivative with respect to x of the incomplete + gamma function. +

+

+ +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Note that the derivative of the function gamma_q + can be obtained by negating the result of this function. +

+

+ The return type of this function is computed using the result + type calculation rules when T1 and T2 are different types, + otherwise the return type is simply T1. +

+
+ + Accuracy +
+

+ Almost identical to the incomplete gamma function gamma_p: + refer to the documentation for that function for more information. +

+
+ + Implementation +
+

+ This function just expose some of the internals of the incomplete gamma + function gamma_p: + refer to the documentation for that function for more information. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html new file mode 100644 index 000000000..638e45784 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/gamma_ratios.html @@ -0,0 +1,371 @@ + + + +Ratios of Gamma Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2>
+calculated-result-type tgamma_ratio(T1 a, T2 b);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+
+template <class T1, class T2> 
+calculated-result-type tgamma_ratio(T1 a, T2 b);
+
+template <class T1, class T2, class Policy> 
+calculated-result-type tgamma_ratio(T1 a, T2 b, const Policy&);
+
+

+ Returns the ratio of gamma functions: +

+

+ +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Internally this just calls tgamma_delta_ratio(a, + b-a). +

+
+template <class T1, class T2>
+calculated-result-type tgamma_delta_ratio(T1 a, T2 delta);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma_delta_ratio(T1 a, T2 delta, const Policy&);
+
+

+ Returns the ratio of gamma functions: +

+

+ +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Note that the result is calculated accurately even when delta + is small compared to a: indeed even if a+delta + ~ a. The function is typically used when a + is large and delta is very small. +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types, + otherwise the result type is simple T1. +

+
+ + Accuracy +
+

+ The following table shows the peak errors (in units of epsilon) found on + various platforms with various floating point types. Unless otherwise specified + any floating point type that is narrower than the one shown will have + effectively zero error. +

+
+

Table 11. Errors In the Function tgamma_delta_ratio(a, delta)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 20 < a < 80 +

+

+ and +

+

+ delta < 1 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=16.9 Mean=1.7 +

+
+

+ 64 +

+
+

+ Redhat Linux IA32, gcc-3.4.4 +

+
+

+ Peak=24 Mean=2.7 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=12.8 Mean=1.8 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=21.4 Mean=2.3 +

+
+
+
+

Table 12. Errors In the Function tgamma_ratio(a, + b)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 6 < a,b < 50 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=34 Mean=9 +

+
+

+ 64 +

+
+

+ Redhat Linux IA32, gcc-3.4.4 +

+
+

+ Peak=91 Mean=23 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=35.6 Mean=9.3 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=43.9 Mean=13.2 +

+
+
+
+ + Testing +
+

+ Accuracy tests use data generated at very high precision (with NTL + RR class set at 1000-bit precision: about 300 decimal digits) and + a deliberately naive calculation of Γ(x)/Γ(y). +

+
+ + Implementation +
+

+ The implementation of these functions is very similar to that of beta, and is + based on combining similar power terms to improve accuracy and avoid spurious + overflow/underflow. +

+

+ In addition there are optimisations for the situation where delta + is a small integer: in which case this function is basically the reciprocal + of a rising factorial, or where both arguments are smallish integers: in + which case table lookup of factorials can be used to calculate the ratio. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html new file mode 100644 index 000000000..c61161737 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma.html @@ -0,0 +1,1062 @@ + + + +Incomplete Gamma Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2>
+calculated-result-type gamma_p(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p(T1 a, T2 z, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type gamma_q(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_q(T1 a, T2 z, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type tgamma_lower(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma_lower(T1 a, T2 z, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type tgamma(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma(T1 a, T2 z, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ There are four incomplete + gamma functions: two are normalised versions (also known as regularized + incomplete gamma functions) that return values in the range [0, 1], and + two are non-normalised and return values in the range [0, Γ(a)]. Users interested + in statistical applications should use the normalised + versions (gamma_p and gamma_q). +

+

+ All of these functions require a > 0 and z + >= 0, otherwise they return the result of domain_error. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types, + otherwise the return type is simply T1. +

+
+template <class T1, class T2>
+calculated-result-type gamma_p(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p(T1 a, T2 z, const Policy&);
+
+

+ Returns the normalised lower incomplete gamma function of a and z: +

+

+ +

+

+ This function changes rapidly from 0 to 1 around the point z == a: +

+

+ gamma_p +

+
+template <class T1, class T2>
+calculated-result-type gamma_q(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_q(T1 a, T2 z, const Policy&);
+
+

+ Returns the normalised upper incomplete gamma function of a and z: +

+

+ +

+

+ This function changes rapidly from 1 to 0 around the point z == a: +

+

+ gamma_q +

+
+template <class T1, class T2>
+calculated-result-type tgamma_lower(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma_lower(T1 a, T2 z, const Policy&);
+
+

+ Returns the full (non-normalised) lower incomplete gamma function of a + and z: +

+

+ +

+
+template <class T1, class T2>
+calculated-result-type tgamma(T1 a, T2 z);
+
+template <class T1, class T2, class Policy>
+calculated-result-type tgamma(T1 a, T2 z, const Policy&);
+
+

+ Returns the full (non-normalised) upper incomplete gamma function of a + and z: +

+

+ +

+
+ + Accuracy +
+

+ The following tables give peak and mean relative errors in over various + domains of a and z, along with comparisons to the GSL-1.9 + and Cephes libraries. + Note that only results for the widest floating point type on the system + are given as narrower types have effectively + zero error. +

+

+ Note that errors grow as a grows larger. +

+

+ Note also that the higher error rates for the 80 and 128 bit long double + results are somewhat misleading: expected results that are zero at 64-bit + double precision may be non-zero - but exceptionally small - with the larger + exponent range of a long double. These results therefore reflect the more + extreme nature of the tests conducted for these types. +

+

+ All values are in units of epsilon. +

+
+

Table 13. Errors In the Function gamma_p(a,z)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0.5 < a < 100 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 1x10-12 < a < 5x10-2 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 1e-6 < a < 1.7x106 +

+

+ and +

+

+ 1 < z < 100*a +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=36 Mean=9.1 +

+

+ (GSL Peak=342 Mean=46) +

+

+ (Cephes Peak=491 + Mean=102) +

+
+

+ Peak=4.5 Mean=1.4 +

+

+ (GSL Peak=4.8 Mean=0.76) +

+

+ (Cephes Peak=21 + Mean=5.6) +

+
+

+ Peak=244 Mean=21 +

+

+ (GSL Peak=1022 Mean=1054) +

+

+ (Cephes Peak~8x106 Mean~7x104) +

+
+

+ 64 +

+
+

+ RedHat Linux IA32, gcc-3.3 +

+
+

+ Peak=241 Mean=36 +

+
+

+ Peak=4.7 Mean=1.5 +

+
+

+ Peak~30,220 Mean=1929 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4 +

+
+

+ Peak=41 Mean=10 +

+
+

+ Peak=4.7 Mean=1.4 +

+
+

+ Peak~30,790 Mean=1864 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=40.2 Mean=10.2 +

+
+

+ Peak=5 Mean=1.6 +

+
+

+ Peak=5,476 Mean=440 +

+
+
+
+

Table 14. Errors In the Function gamma_q(a,z)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0.5 < a < 100 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 1x10-12 < a < 5x10-2 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 1x10-6 < a < 1.7x106 +

+

+ and +

+

+ 1 < z < 100*a +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=28.3 Mean=7.2 +

+

+ (GSL Peak=201 Mean=13) +

+

+ (Cephes Peak=556 + Mean=97) +

+
+

+ Peak=4.8 Mean=1.6 +

+

+ (GSL Peak~1.3x1010 Mean=1x10+9) +

+

+ (Cephes Peak~3x1011 Mean=4x1010) +

+
+

+ Peak=469 Mean=33 +

+

+ (GSL Peak=27,050 Mean=2159) +

+

+ (Cephes Peak~8x106 Mean~7x105) +

+
+

+ 64 +

+
+

+ RedHat Linux IA32, gcc-3.3 +

+
+

+ Peak=280 Mean=33 +

+
+

+ Peak=4.1 Mean=1.6 +

+
+

+ Peak=11,490 Mean=732 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4 +

+
+

+ Peak=32 Mean=9.4 +

+
+

+ Peak=4.7 Mean=1.5 +

+
+

+ Peak=6815 Mean=414 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=37 Mean=10 +

+
+

+ Peak=11.2 Mean=2.0 +

+
+

+ Peak=4,999 Mean=298 +

+
+
+
+

Table 15. Errors In the Function tgamma_lower(a,z)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0.5 < a < 100 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 1x10-12 < a < 5x10-2 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=5.5 Mean=1.4 +

+
+

+ Peak=3.6 Mean=0.78 +

+
+

+ 64 +

+
+

+ RedHat Linux IA32, gcc-3.3 +

+
+

+ Peak=402 Mean=79 +

+
+

+ Peak=3.4 Mean=0.8 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4 +

+
+

+ Peak=6.8 Mean=1.4 +

+
+

+ Peak=3.4 Mean=0.78 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=6.1 Mean=1.8 +

+
+

+ Peak=3.7 Mean=0.89 +

+
+
+
+

Table 16. Errors In the Function tgamma(a,z)

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ 0.5 < a < 100 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 1x10-12 < a < 5x10-2 +

+

+ and +

+

+ 0.01*a < z < 100*a +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=5.9 Mean=1.5 +

+
+

+ Peak=1.8 Mean=0.6 +

+
+

+ 64 +

+
+

+ RedHat Linux IA32, gcc-3.3 +

+
+

+ Peak=596 Mean=116 +

+
+

+ Peak=3.2 Mean=0.84 +

+
+

+ 64 +

+
+

+ Redhat Linux IA64, gcc-3.4.4 +

+
+

+ Peak=40.2 Mean=2.5 +

+
+

+ Peak=3.2 Mean=0.8 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=364 Mean=17.6 +

+
+

+ Peak=12.7 Mean=1.8 +

+
+
+
+ + Testing +
+

+ There are two sets of tests: spot tests compare values taken from Mathworld's online evaluator + with this implementation to perform a basic "sanity check". Accuracy + tests use data generated at very high precision (using NTL's RR class set + at 1000-bit precision) using this implementation with a very high precision + 60-term Lanczos approximation, + and some but not all of the special case handling disabled. This is less + than satisfactory: an independent method should really be used, but apparently + a complete lack of such methods are available. We can't even use a deliberately + naive implementation without special case handling since Legendre's continued + fraction (see below) is unstable for small a and z. +

+
+ + Implementation +
+

+ These four functions share a common implementation since they are all related + via: +

+

+ 1) +

+

+ 2) +

+

+ 3) +

+

+ The lower incomplete gamma is computed from its series representation: +

+

+ 4) +

+

+ Or by subtraction of the upper integral from either Γ(a) or 1 when x + > a and x > 1.1. +

+

+ The upper integral is computed from Legendre's continued fraction representation: +

+

+ 5) +

+

+ When x > 1.1 or by subtraction of the lower integral + from either Γ(a) or 1 when x < a. +

+

+ For x < 1.1 computation of the upper integral is + more complex as the continued fraction representation is unstable in this + area. However there is another series representation for the lower integral: +

+

+ 6) +

+

+ That lends itself to calculation of the upper integral via rearrangement + to: +

+

+ 7) +

+

+ Refer to the documentation for powm1 + and tgamma1pm1 + for details of their implementation. Note however that the precision of + tgamma1pm1 + is capped to either around 35 digits, or to that of the Lanczos + approximation associated with type T - if there is one - whichever + of the two is the greater. That therefore imposes a similar limit on the + precision of this function in this region. +

+

+ For x < 1.1 the crossover point where the result + is ~0.5 no longer occurs for x ~ y. Using x + * 1.1 < a as the crossover criterion for 0.5 < + x <= 1.1 keeps the maximum value computed (whether it's the + upper or lower interval) to around 0.6. Likewise for x <= + 0.5 then using -0.4 / log(x) < a as + the crossover criterion keeps the maximum value computed to around 0.7 + (whether it's the upper or lower interval). +

+

+ There are two special cases used when a is an integer or half integer, + and the crossover conditions listed above indicate that we should compute + the upper integral Q. If a is an integer in the range 1 <= + a < 30 then the following finite sum is used: +

+

+ 9) +

+

+ While for half integers in the range 0.5 <= a < 30 + then the following finite sum is used: +

+

+ 10) +

+

+ These are both more stable and more efficient than the continued fraction + alternative. +

+

+ When the argument a is large, and x ~ a + then the series (4) and continued fraction (5) above are very slow to converge. + In this area an expansion due to Temme is used: +

+

+ 11) +

+

+ 12) +

+

+ 13) +

+

+ 14) +

+

+ The double sum is truncated to a fixed number of terms - to give a specific + target precision - and evaluated as a polynomial-of-polynomials. There + are versions for up to 128-bit long double precision: types requiring greater + precision than that do not use these expansions. The coefficients Ckn are + computed in advance using the recurrence relations given by Temme. The + zone where these expansions are used is +

+
+(a > 20) && (a < 200) && fabs(x-a)/a < 0.4
+
+

+ And: +

+
+(a > 200) && (fabs(x-a)/a < 4.5/sqrt(a))
+
+

+ The latter range is valid for all types up to 128-bit long doubles, and + is designed to ensure that the result is larger than 10-6, the first range + is used only for types up to 80-bit long doubles. These domains are narrower + than the ones recommended by either Temme or Didonato and Morris. However, + using a wider range results in large and inexact (i.e. computed) values + being passed to the exp + and erfc functions resulting + in significantly larger error rates. In other words there is a fine trade + off here between efficiency and error. The current limits should keep the + number of terms required by (4) and (5) to no more than ~20 at double precision. +

+

+ For the normalised incomplete gamma functions, calculation of the leading + power terms is central to the accuracy of the function. For smallish a + and x combining the power terms with the Lanczos + approximation gives the greatest accuracy: +

+

+ 15) +

+

+ In the event that this causes underflowoverflow then the exponent + can be reduced by a factor of /a and brought inside the power + term. +

+

+ When a and x are large, we end up with a very large exponent with a base + near one: this will not be computed accurately via the pow function, and + taking logs simply leads to cancellation errors. The worst of the errors + can be avoided by using: +

+

+ 16) +

+

+ when a-x is small and a and x are large. There is + still a subtraction and therefore some cancellation errors - but the terms + are small so the absolute error will be small - and it is absolute rather + than relative error that counts in the argument to the exp + function. Note that for sufficiently large a and x the errors will still + get you eventually, although this does delay the inevitable much longer + than other methods. Use of log(1+x)-x here is inspired + by Temme (see references below). +

+
+ + References +
+
    +
  • + N. M. Temme, A Set of Algorithms for the Incomplete Gamma Functions, + Probability in the Engineering and Informational Sciences, 8, 1994. +
  • +
  • + N. M. Temme, The Asymptotic Expansion of the Incomplete Gamma Functions, + Siam J. Math Anal. Vol 10 No 4, July 1979, p757. +
  • +
  • + A. R. Didonato and A. H. Morris, Computation of the Incomplete Gamma + Function Ratios and their Inverse. ACM TOMS, Vol 12, No 4, Dec 1986, + p377. +
  • +
  • + W. Gautschi, The Incomplete Gamma Functions Since Tricomi, In Tricomi's + Ideas and Contemporary Applied Mathematics, Atti dei Convegni Lincei, + n. 147, Accademia Nazionale dei Lincei, Roma, 1998, pp. 203--237. http://citeseer.ist.psu.edu/gautschi98incomplete.html +
  • +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html new file mode 100644 index 000000000..c998c98c4 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/igamma_inv.html @@ -0,0 +1,270 @@ + + + +Incomplete Gamma Function Inverses + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2>
+calculated-result-type gamma_q_inv(T1 a, T2 q);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type gamma_p_inv(T1 a, T2 p);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type gamma_q_inva(T1 x, T2 q);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type gamma_p_inva(T1 x, T2 p);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ There are four incomplete + gamma function inverses which either compute x + given a and p or q, + or else compute a given x and + either p or q. +

+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types, + otherwise the return type is simply T1. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + + + +
[Tip]Tip
+

+ When people normally talk about the inverse of the incomplete gamma function, + they are talking about inverting on parameter x. + These are implemented here as gamma_p_inv and gamma_q_inv, and are by + far the most efficient of the inverses presented here. +

+

+ The inverse on the a parameter finds use in some + statistical applications but has to be computed by rather brute force + numerical techniques and is consequently several times slower. These + are implemented here as gamma_p_inva and gamma_q_inva. +

+
+
+template <class T1, class T2>
+calculated-result-type gamma_q_inv(T1 a, T2 q);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_q_inv(T1 a, T2 q, const Policy&);
+
+

+ Returns a value x such that: q + = gamma_q(a, + x); +

+

+ Requires: a > 0 and 1 >= p,q >= + 0. +

+
+template <class T1, class T2>
+calculated-result-type gamma_p_inv(T1 a, T2 p);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p_inv(T1 a, T2 p, const Policy&);
+
+

+ Returns a value x such that: p + = gamma_p(a, + x); +

+

+ Requires: a > 0 and 1 >= p,q >= + 0. +

+
+template <class T1, class T2>
+calculated-result-type gamma_q_inva(T1 x, T2 q);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_q_inva(T1 x, T2 q, const Policy&);
+
+

+ Returns a value a such that: q + = gamma_q(a, + x); +

+

+ Requires: x > 0 and 1 >= p,q >= + 0. +

+
+template <class T1, class T2>
+calculated-result-type gamma_p_inva(T1 x, T2 p);
+
+template <class T1, class T2, class Policy>
+calculated-result-type gamma_p_inva(T1 x, T2 p, const Policy&);
+
+

+ Returns a value a such that: p + = gamma_p(a, + x); +

+

+ Requires: x > 0 and 1 >= p,q >= + 0. +

+
+ + Accuracy +
+

+ The accuracy of these functions doesn't vary much by platform or by the + type T. Given that these functions are computed by iterative methods, they + are deliberately "detuned" so as not to be too accurate: it is + in any case impossible for these function to be more accurate than the + regular forward incomplete gamma functions. In practice, the accuracy of + these functions is very similar to that of gamma_p + and gamma_q + functions. +

+
+ + Testing +
+

+ There are two sets of tests: +

+
    +
  • + Basic sanity checks attempt to "round-trip" from a + and x to p or q + and back again. These tests have quite generous tolerances: in general + both the incomplete gamma, and its inverses, change so rapidly that round + tripping to more than a couple of significant digits isn't possible. + This is especially true when p or q + is very near one: in this case there isn't enough "information content" + in the input to the inverse function to get back where you started. +
  • +
  • + Accuracy checks using high precision test values. These measure the accuracy + of the result, given exact input values. +
  • +
+
+ + Implementation +
+

+ The functions gamma_p_inv and gamma_q_inv + share a common implementation. +

+

+ First an initial approximation is computed using the methodology described + in: +

+

+ A. + R. Didonato and A. H. Morris, Computation of the Incomplete Gamma Function + Ratios and their Inverse, ACM Trans. Math. Software 12 (1986), 377-393. +

+

+ Finally, the last few bits are cleaned up using Halley iteration, the iteration + limit is set to 2/3 of the number of bits in T, which by experiment is + sufficient to ensure that the inverses are at least as accurate as the + normal incomplete gamma functions. In testing, no more than 3 iterations + are required to produce a result as accurate as the forward incomplete + gamma function, and in many cases only one iteration is required. +

+

+ The functions gamma_p_inva and gamma_q_inva also share a common implementation + but are handled separately from gamma_p_inv and gamma_q_inv. +

+

+ An initial approximation for a is computed very crudely + so that gamma_p(a, x) ~ 0.5, this value is then used + as a starting point for a generic derivative-free root finding algorithm. + As a consequence, these two functions are rather more expensive to compute + than the gamma_p_inv or gamma_q_inv functions. Even so, the root is usually + found in fewer than 10 iterations. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html new file mode 100644 index 000000000..9efa34ae7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/lgamma.html @@ -0,0 +1,494 @@ + + + +Log Gamma + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type lgamma(T z);
+
+template <class T, class Policy>
+calculated-result-type lgamma(T z, const Policy&);
+
+template <class T>
+calculated-result-type lgamma(T z, int* sign);
+
+template <class T, class Policy>
+calculated-result-type lgamma(T z, int* sign, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+

+ The lgamma function + is defined by: +

+

+ +

+

+ The second form of the function takes a pointer to an integer, which if + non-null is set on output to the sign of tgamma(z). +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ lgamma +

+

+ There are effectively two versions of this function internally: a fully + generic version that is slow, but reasonably accurate, and a much more + efficient approximation that is used where the number of digits in the + significand of T correspond to a certain Lanczos + approximation. In practice, any built-in floating-point type you + will encounter has an appropriate Lanczos + approximation defined for it. It is also possible, given enough + machine time, to generate further Lanczos + approximation's using the program libs/math/tools/lanczos_generator.cpp. +

+

+ The return type of these functions is computed using the result + type calculation rules: the result is of type double if T is an integer type, or type + T otherwise. +

+
+ + Accuracy +
+

+ The following table shows the peak errors (in units of epsilon) found on + various platforms with various floating point types, along with comparisons + to the GSL-1.9, + GNU C Lib, HP-UX C Library + and Cephes libraries. + Unless otherwise specified any floating point type that is narrower than + the one shown will have effectively zero error. +

+

+ Note that while the relative errors near the positive roots of lgamma are + very low, the lgamma function has an infinite number of irrational roots + for negative arguments: very close to these negative roots only a low absolute + error can be guaranteed. +

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Factorials and Half factorials +

+
+

+ Values Near Zero +

+
+

+ Values Near 1 or 2 +

+
+

+ Values Near a Negative Pole +

+
+

+ 53 +

+
+

+ Win32 Visual C++ 8 +

+
+

+ Peak=0.88 Mean=0.14 +

+

+ (GSL=33) (Cephes=1.5) +

+
+

+ Peak=0.96 Mean=0.46 +

+

+ (GSL=5.2) (Cephes=1.1) +

+
+

+ Peak=0.86 Mean=0.46 +

+

+ (GSL=1168) (Cephes~500000) +

+
+

+ Peak=4.2 Mean=1.3 +

+

+ (GSL=25) (Cephes=1.6) +

+
+

+ 64 +

+
+

+ Linux IA32 / GCC +

+
+

+ Peak=1.9 Mean=0.43 +

+

+ (GNU C Lib + Peak=1.7 Mean=0.49) +

+
+

+ Peak=1.4 Mean=0.57 +

+

+ (GNU C Lib + Peak= 0.96 Mean=0.54) +

+
+

+ Peak=0.86 Mean=0.35 +

+

+ (GNU C Lib + Peak=0.74 Mean=0.26) +

+
+

+ Peak=6.0 Mean=1.8 +

+

+ (GNU C Lib + Peak=3.0 Mean=0.86) +

+
+

+ 64 +

+
+

+ Linux IA64 / GCC +

+
+

+ Peak=0.99 Mean=0.12 +

+

+ (GNU C Lib + Peak 0) +

+
+

+ Pek=1.2 Mean=0.6 +

+

+ (GNU C Lib + Peak 0) +

+
+

+ Peak=0.86 Mean=0.16 +

+

+ (GNU C Lib + Peak 0) +

+
+

+ Peak=2.3 Mean=0.69 +

+

+ (GNU C Lib + Peak 0) +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=0.96 Mean=0.13 +

+

+ (HP-UX + C Library Peak 0) +

+
+

+ Peak=0.99 Mean=0.53 +

+

+ (HP-UX + C Library Peak 0) +

+
+

+ Peak=0.9 Mean=0.4 +

+

+ (HP-UX + C Library Peak 0) +

+
+

+ Peak=3.0 Mean=0.9 +

+

+ (HP-UX + C Library Peak 0) +

+
+
+ + Testing +
+

+ The main tests for this function involve comparisons against the logs of + the factorials which can be independently calculated to very high accuracy. +

+

+ Random tests in key problem areas are also used. +

+
+ + Implementation +
+

+ The generic version of this function is implemented by combining the series + and continued fraction representations for the incomplete gamma function: +

+

+ +

+

+ where l is an arbitrary integration limit: choosing + l = max(10, a) seems to work fairly well. For negative + z the logarithm version of the reflection formula + is used: +

+

+ +

+

+ For types of known precision, the Lanczos + approximation is used, a traits class boost::math::lanczos::lanczos_traits + maps type T to an appropriate approximation. The logarithmic version of + the Lanczos approximation + is: +

+

+ +

+

+ Where Le,g is the Lanczos sum, scaled by eg. +

+

+ As before the reflection formula is used for z < 0. +

+

+ When z is very near 1 or 2, then the logarithmic version of the Lanczos + approximation suffers very badly from cancellation error: indeed + for values sufficiently close to 1 or 2, arbitrarily large relative errors + can be obtained (even though the absolute error is tiny). +

+

+ For types with up to 113 bits of precision (up to and including 128-bit + long doubles), root-preserving rational approximations devised + by JM are used over the intervals [1,2] and [2,3]. Over the interval + [2,3] the approximation form used is: +

+
+lgamma(z) = (z-2)(z+1)(Y + R(z-2));
+
+

+ Where Y is a constant, and R(z-2) is the rational approximation: optimised + so that it's absolute error is tiny compared to Y. In addition small values + of z greater than 3 can handled by argument reduction using the recurrence + relation: +

+
+lgamma(z+1) = log(z) + lgamma(z);
+
+

+ Over the interval [1,2] two approximations have to be used, one for small + z uses: +

+
+lgamma(z) = (z-1)(z-2)(Y + R(z-1));
+
+

+ Once again Y is a constant, and R(z-1) is optimised for low absolute error + compared to Y. For z > 1.5 the above form wouldn't converge to a minimax + solution but this similar form does: +

+
+lgamma(z) = (2-z)(1-z)(Y + R(2-z));
+
+

+ Finally for z < 1 the recurrence relation can be used to move to z > + 1: +

+
+lgamma(z) = lgamma(z+1) - log(z);
+
+

+ Note that while this involves a subtraction, it appears not to suffer from + cancellation error: as z decreases from 1 the -log(z) term + grows positive much more rapidly than the lgamma(z+1) term becomes + negative. So in this specific case, significant digits are preserved, rather + than cancelled. +

+

+ For other types which do have a Lanczos + approximation defined for them the current solution is as follows: + imagine we balance the two terms in the Lanczos + approximation by dividing the power term by its value at z + = 1, and then multiplying the Lanczos coefficients by the same + value. Now each term will take the value 1 at z = 1 + and we can rearrange the power terms in terms of log1p. Likewise if we + subtract 1 from the Lanczos sum part (algebraically, by subtracting the + value of each term at z = 1), we obtain a new summation + that can be also be fed into log1p. Crucially, all of the terms tend to + zero, as z -> 1: +

+

+ +

+

+ The Ck terms in the above are the same as in the Lanczos + approximation. +

+

+ A similar rearrangement can be performed at z = 2: +

+

+ +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html new file mode 100644 index 000000000..0b3a0eb65 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_gamma/tgamma.html @@ -0,0 +1,483 @@ + + + +Gamma + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+

+ Gamma +

+
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/gamma.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type tgamma(T z);
+
+template <class T, class Policy>
+calculated-result-type tgamma(T z, const Policy&);
+
+template <class T>
+calculated-result-type tgamma1pm1(T dz);
+
+template <class T, class Policy>
+calculated-result-type tgamma1pm1(T dz, const Policy&);
+
+}} // namespaces
+
+
+ + Description +
+
+template <class T>
+calculated-result-type tgamma(T z);
+
+template <class T, class Policy>
+calculated-result-type tgamma(T z, const Policy&);
+
+

+ Returns the "true gamma" (hence name tgamma) of value z: +

+

+ +

+

+ gamma +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ There are effectively two versions of the tgamma + function internally: a fully generic version that is slow, but reasonably + accurate, and a much more efficient approximation that is used where the + number of digits in the significand of T correspond to a certain Lanczos approximation. + In practice any built in floating point type you will encounter has an + appropriate Lanczos + approximation defined for it. It is also possible, given enough + machine time, to generate further Lanczos + approximation's using the program libs/math/tools/lanczos_generator.cpp. +

+

+ The return type of this function is computed using the result + type calculation rules: the result is double + when T is an integer type, and T otherwise. +

+
+template <class T>
+calculated-result-type tgamma1pm1(T dz);
+
+template <class T, class Policy>
+calculated-result-type tgamma1pm1(T dz, const Policy&);
+
+

+ Returns tgamma(dz + 1) - + 1. Internally the implementation + does not make use of the addition and subtraction implied by the definition, + leading to accurate results even for very small dz. + However, the implementation is capped to either 35 digit accuracy, or to + the precision of the Lanczos + approximation associated with type T, whichever is more accurate. +

+

+ The return type of this function is computed using the result + type calculation rules: the result is double + when T is an integer type, and T otherwise. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Accuracy +
+

+ The following table shows the peak errors (in units of epsilon) found on + various platforms with various floating point types, along with comparisons + to the GSL-1.9, + GNU C Lib, HP-UX C Library + and Cephes libraries. + Unless otherwise specified any floating point type that is narrower than + the one shown will have effectively zero error. +

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Factorials and Half factorials +

+
+

+ Values Near Zero +

+
+

+ Values Near 1 or 2 +

+
+

+ Values Near a Negative Pole +

+
+

+ 53 +

+
+

+ Win32 Visual C++ 8 +

+
+

+ Peak=1.9 Mean=0.7 +

+

+ (GSL=3.9) +

+

+ (Cephes=3.0) +

+
+

+ Peak=2.0 Mean=1.1 +

+

+ (GSL=4.5) +

+

+ (Cephes=1) +

+
+

+ Peak=2.0 Mean=1.1 +

+

+ (GSL=7.9) +

+

+ (Cephes=1.0) +

+
+

+ Peak=2.6 Mean=1.3 +

+

+ (GSL=2.5) +

+

+ (Cephes=2.7) +

+
+

+ 64 +

+
+

+ Linux IA32 / GCC +

+
+

+ Peak=300 Mean=49.5 +

+

+ (GNU C Lib + Peak=395 Mean=89) +

+
+

+ Peak=3.0 Mean=1.4 +

+

+ (GNU C Lib + Peak=11 Mean=3.3) +

+
+

+ Peak=5.0 Mean=1.8 +

+

+ (GNU C Lib + Peak=0.92 Mean=0.2) +

+
+

+ Peak=157 Mean=65 +

+

+ (GNU C Lib + Peak=205 Mean=108) +

+
+

+ 64 +

+
+

+ Linux IA64 / GCC +

+
+

+ GNU C Lib + Peak 2.8 Mean=0.9 +

+

+ (GNU C Lib + Peak 0.7) +

+
+

+ Peak=4.8 Mean=1.5 +

+

+ (GNU C Lib + Peak 0) +

+
+

+ Peak=4.8 Mean=1.5 +

+

+ (GNU C Lib + Peak 0) +

+
+

+ Peak=5.0 Mean=1.7 (GNU + C Lib Peak 0) +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=2.5 Mean=1.1 +

+

+ (HP-UX + C Library Peak 0) +

+
+

+ Peak=3.5 Mean=1.7 +

+

+ (HP-UX + C Library Peak 0) +

+
+

+ Peak=3.5 Mean=1.6 +

+

+ (HP-UX + C Library Peak 0) +

+
+

+ Peak=5.2 Mean=1.92 +

+

+ (HP-UX + C Library Peak 0) +

+
+
+ + Testing +
+

+ The gamma is relatively easy to test: factorials and half-integer factorials + can be calculated exactly by other means and compared with the gamma function. + In addition, some accuracy tests in known tricky areas were computed at + high precision using the generic version of this function. +

+

+ The function tgamma1pm1 + is tested against values calculated very naively using the formula tgamma(1+dz)-1 with + a lanczos approximation accurate to around 100 decimal digits. +

+
+ + Implementation +
+

+ The generic version of the tgamma + function is implemented by combining the series and continued fraction + representations for the incomplete gamma function: +

+

+ +

+

+ where l is an arbitrary integration limit: choosing + l = max(10, a) seems to work fairly well. +

+

+ For types of known precision the Lanczos + approximation is used, a traits class boost::math::lanczos::lanczos_traits + maps type T to an appropriate approximation. +

+

+ For z in the range -20 < z < 1 then recursion is used to shift to + z > 1 via: +

+

+ +

+

+ For very small z, this helps to preserve the identity: +

+

+ +

+

+ For z < -20 the reflection formula: +

+

+ +

+

+ is used. Particular care has to be taken to evaluate the z * sin([pi][space] * z) + part: a special routine is used to reduce z prior to multiplying by π to + ensure that the result in is the range [0, π/2]. Without this an excessive + amount of error occurs in this region (which is hard enough already, as + the rate of change near a negative pole is exceptionally + high). +

+

+ Finally if the argument is a small integer then table lookup of the factorial + is used. +

+

+ The function tgamma1pm1 + is implemented using rational approximations devised + by JM in the region -0.5 < dz < 2. These are the same approximations (and + internal routines) that are used for lgamma, + and so aren't detailed further here. The result of the approximation is + log(tgamma(dz+1)) which can fed into expm1 + to give the desired result. Outside the range -0.5 < dz < 2 then the naive formula tgamma1pm1(dz) + = tgamma(dz+1)-1 + can be used directly. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html b/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html new file mode 100644 index 000000000..5a2812038 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_poly.html @@ -0,0 +1,52 @@ + + + +Polynomials + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html new file mode 100644 index 000000000..295636f28 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/hermite.html @@ -0,0 +1,294 @@ + + + +Hermite Polynomials + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/hermite.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type hermite(unsigned n, T x);
+
+template <class T, class Policy>
+calculated-result-type hermite(unsigned n, T x, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
+   
+}} // namespaces
+
+
+ + Description +
+

+ The return type of these functions is computed using the result + type calculation rules: note than when there is a single + template argument the result is the same type as that argument or double if the template argument is an integer + type. +

+
+template <class T>
+calculated-result-type hermite(unsigned n, T x);
+
+template <class T, class Policy>
+calculated-result-type hermite(unsigned n, T x, const Policy&);
+
+

+ Returns the value of the Hermite Polynomial of order n + at point x: +

+

+ +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ The following graph illustrates the behaviour of the first few Hermite + Polynomials: +

+

+ hermite +

+
+template <class T1, class T2, class T3>
+calculated-result-type hermite_next(unsigned n, T1 x, T2 Hn, T3 Hnm1);
+
+

+ Implements the three term recurrence relation for the Hermite polynomials, + this function can be used to create a sequence of values evaluated at the + same x, and for rising n. +

+

+ +

+

+ For example we could produce a vector of the first 10 polynomial values + using: +

+
+double x = 0.5;  // Abscissa value
+vector<double> v;
+v.push_back(hermite(0, x)).push_back(hermite(1, x));
+for(unsigned l = 1; l < 10; ++l)
+   v.push_back(hermite_next(l, x, v[l], v[l-1]));
+
+

+ Formally the arguments are: +

+
+

+
+
n
+

+ The degree n of the last polynomial calculated. +

+
x
+

+ The abscissa value +

+
Hn
+

+ The value of the polynomial evaluated at degree n. +

+
Hnm1
+

+ The value of the polynomial evaluated at degree n-1. +

+
+
+
+ + Accuracy +
+

+ The following table shows peak errors (in units of epsilon) for various + domains of input arguments. Note that only results for the widest floating + point type on the system are given as narrower types have effectively + zero error. +

+
+

Table 29. Peak Errors In the Hermite Polynomial

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=4.5 Mean=1.5 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA32, g++ 4.1 +

+
+

+ Peak=6 Mean=2 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=6 Mean=2 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=6 Mean=4 +

+
+
+

+ Note that the worst errors occur when the degree increases, values greater + than ~120 are very unlikely to produce sensible results, especially in + the associated polynomial case when the order is also large. Further the + relative errors are likely to grow arbitrarily large when the function + is very close to a root. +

+
+ + Testing +
+

+ A mixture of spot tests of values calculated using functions.wolfram.com, + and randomly generated test data are used: the test data was computed using + NTL::RR at 1000-bit + precision. +

+
+ + Implementation +
+

+ These functions are implemented using the stable three term recurrence + relations. These relations guarentee low absolute error but cannot guarentee + low relative error near one of the roots of the polynomials. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html new file mode 100644 index 000000000..5f97426b3 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/laguerre.html @@ -0,0 +1,473 @@ + + + +Laguerre (and Associated) Polynomials + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/laguerre.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type laguerre(unsigned n, T x);
+
+template <class T, class Policy>
+calculated-result-type laguerre(unsigned n, T x, const Policy&);
+
+template <class T>
+calculated-result-type laguerre(unsigned n, unsigned m, T x);
+
+template <class T, class Policy>
+calculated-result-type laguerre(unsigned n, unsigned m, T x, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
+
+template <class T1, class T2, class T3>
+calculated-result-type laguerre_next(unsigned n, unsigned m, T1 x, T2 Ln, T3 Lnm1);
+
+
+}} // namespaces
+
+
+ + Description +
+

+ The return type of these functions is computed using the result + type calculation rules: note than when there is a single + template argument the result is the same type as that argument or double if the template argument is an integer + type. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T>
+calculated-result-type laguerre(unsigned n, T x);
+
+template <class T, class Policy>
+calculated-result-type laguerre(unsigned n, T x, const Policy&);
+
+

+ Returns the value of the Laguerre Polynomial of order n + at point x: +

+

+ +

+

+ The following graph illustrates the behaviour of the first few Laguerre + Polynomials: +

+

+ laguerre +

+
+template <class T>
+calculated-result-type laguerre(unsigned n, unsigned m, T x);
+
+template <class T, class Policy>
+calculated-result-type laguerre(unsigned n, unsigned m, T x, const Policy&);
+
+

+ Returns the Associated Laguerre polynomial of degree n + and order m at point x: +

+

+ +

+
+template <class T1, class T2, class T3>
+calculated-result-type laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1);
+
+

+ Implements the three term recurrence relation for the Laguerre polynomials, + this function can be used to create a sequence of values evaluated at the + same x, and for rising n. +

+

+ +

+

+ For example we could produce a vector of the first 10 polynomial values + using: +

+
+double x = 0.5;  // Abscissa value
+vector<double> v;
+v.push_back(laguerre(0, x)).push_back(laguerre(1, x));
+for(unsigned l = 1; l < 10; ++l)
+   v.push_back(laguerre_next(l, x, v[l], v[l-1]));
+
+

+ Formally the arguments are: +

+
+

+
+
n
+

+ The degree n of the last polynomial calculated. +

+
x
+

+ The abscissa value +

+
Ln
+

+ The value of the polynomial evaluated at degree n. +

+
Lnm1
+

+ The value of the polynomial evaluated at degree n-1. +

+
+
+
+template <class T1, class T2, class T3>
+calculated-result-type laguerre_next(unsigned n, unsigned m, T1 x, T2 Ln, T3 Lnm1);
+
+

+ Implements the three term recurrence relation for the Associated Laguerre + polynomials, this function can be used to create a sequence of values evaluated + at the same x, and for rising degree n. +

+

+ +

+

+ For example we could produce a vector of the first 10 polynomial values + using: +

+
+double x = 0.5;  // Abscissa value
+int m = 10;      // order
+vector<double> v;
+v.push_back(laguerre(0, m, x)).push_back(laguerre(1, m, x));
+for(unsigned l = 1; l < 10; ++l)
+   v.push_back(laguerre_next(l, m, x, v[l], v[l-1]));
+
+

+ Formally the arguments are: +

+
+

+
+
n
+

+ The degree of the last polynomial calculated. +

+
m
+

+ The order of the Associated Polynomial. +

+
x
+

+ The abscissa value. +

+
Ln
+

+ The value of the polynomial evaluated at degree n. +

+
Lnm1
+

+ The value of the polynomial evaluated at degree n-1. +

+
+
+
+ + Accuracy +
+

+ The following table shows peak errors (in units of epsilon) for various + domains of input arguments. Note that only results for the widest floating + point type on the system are given as narrower types have effectively + zero error. +

+
+

Table 27. Peak Errors In the Laguerre Polynomial

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=3000 Mean=185 +

+
+

+ 64 +

+
+

+ SUSE Linux IA32, g++ 4.1 +

+
+

+ Peak=1x104 Mean=828 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=1x104 Mean=828 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=680 Mean=40 +

+
+
+
+

Table 28. Peak Errors In the Associated Laguerre + Polynomial

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=433 Mean=11 +

+
+

+ 64 +

+
+

+ SUSE Linux IA32, g++ 4.1 +

+
+

+ Peak=61.4 Mean=19.5 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=61.4 Mean=19.5 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=540 Mean=13.94 +

+
+
+

+ Note that the worst errors occur when the degree increases, values greater + than ~120 are very unlikely to produce sensible results, especially in + the associated polynomial case when the order is also large. Further the + relative errors are likely to grow arbitrarily large when the function + is very close to a root. +

+
+ + Testing +
+

+ A mixture of spot tests of values calculated using functions.wolfram.com, + and randomly generated test data are used: the test data was computed using + NTL::RR at 1000-bit + precision. +

+
+ + Implementation +
+

+ These functions are implemented using the stable three term recurrence + relations. These relations guarentee low absolute error but cannot guarentee + low relative error near one of the roots of the polynomials. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html new file mode 100644 index 000000000..e988186f6 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/legendre.html @@ -0,0 +1,720 @@ + + + +Legendre (and Associated) Polynomials + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/legendre.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T>
+calculated-result-type legendre_p(int n, T x);
+
+template <class T, class Policy>
+calculated-result-type legendre_p(int n, T x, const Policy&);
+
+template <class T>
+calculated-result-type legendre_p(int n, int m, T x);
+
+template <class T, class Policy>
+calculated-result-type legendre_p(int n, int m, T x, const Policy&);
+
+template <class T>
+calculated-result-type legendre_q(unsigned n, T x);
+
+template <class T, class Policy>
+calculated-result-type legendre_q(unsigned n, T x, const Policy&);
+
+template <class T1, class T2, class T3>
+calculated-result-type legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
+
+template <class T1, class T2, class T3>
+calculated-result-type legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
+
+
+}} // namespaces
+
+

+ The return type of these functions is computed using the result + type calculation rules: note than when there is a single + template argument the result is the same type as that argument or double if the template argument is an integer + type. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + Description +
+
+template <class T>
+calculated-result-type legendre_p(int l, T x);
+
+template <class T, class Policy>
+calculated-result-type legendre_p(int l, T x, const Policy&);
+
+

+ Returns the Legendre Polynomial of the first kind: +

+

+ +

+

+ Requires -1 <= x <= 1, otherwise returns the result of domain_error. +

+

+ Negative orders are handled via the reflection formula: +

+

+ P-l-1(x) = Pl(x) +

+

+ The following graph illustrates the behaviour of the first few Legendre + Polynomials: +

+

+ legendre_p1 +

+
+template <class T>
+calculated-result-type legendre_p(int l, int m, T x);
+
+template <class T, class Policy>
+calculated-result-type legendre_p(int l, int m, T x, const Policy&);
+
+

+ Returns the associated Legendre polynomial of the first kind: +

+

+ +

+

+ Requires -1 <= x <= 1, otherwise returns the result of domain_error. +

+

+ Negative values of l and m are + handled via the identity relations: +

+

+ +

+
+ + + + + +
[Caution]Caution
+

+ The definition of the associated Legendre polynomial used here includes + a leading Condon-Shortley phase term of (-1)m. This matches the definition + given by Abramowitz and Stegun (8.6.6) and that used by Mathworld + and Mathematica's + LegendreP function. However, uses in the literature do not always + include this phase term, and strangely the specification for the associated + Legendre function in the C++ TR1 (assoc_legendre) also omits it, in spite + of stating that it uses Abramowitz and Stegun as the final arbiter on + these matters. +

+

+ See: +

+

+ Weisstein, + Eric W. "Legendre Polynomial." From MathWorld--A Wolfram Web + Resource. +

+

+ Abramowitz, M. and Stegun, I. A. (Eds.). "Legendre Functions" + and "Orthogonal Polynomials." Ch. 22 in Chs. 8 and 22 in Handbook + of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, + 9th printing. New York: Dover, pp. 331-339 and 771-802, 1972. +

+
+
+template <class T>
+calculated-result-type legendre_q(unsigned n, T x);
+
+template <class T, class Policy>
+calculated-result-type legendre_q(unsigned n, T x, const Policy&);
+
+

+ Returns the value of the Legendre polynomial that is the second solution + to the Legendre differential equation, for example: +

+

+ +

+

+ Requires -1 <= x <= 1, otherwise domain_error + is called. +

+

+ The following graph illustrates the first few Legendre functions of the + second kind: +

+

+ legendre_q +

+
+template <class T1, class T2, class T3>
+calculated-result-type legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1);
+
+

+ Implements the three term recurrence relation for the Legendre polynomials, + this function can be used to create a sequence of values evaluated at the + same x, and for rising l. This + recurrence relation holds for Legendre Polynomials of both the first and + second kinds. +

+

+ +

+

+ For example we could produce a vector of the first 10 polynomial values + using: +

+
+double x = 0.5;  // Abscissa value
+vector<double> v;
+v.push_back(legendre_p(0, x)).push_back(legendre_p(1, x));
+for(unsigned l = 1; l < 10; ++l)
+   v.push_back(legendre_next(l, x, v[l], v[l-1]));
+
+

+ Formally the arguments are: +

+
+

+
+
l
+

+ The degree of the last polynomial calculated. +

+
x
+

+ The abscissa value +

+
Pl
+

+ The value of the polynomial evaluated at degree l. +

+
Plm1
+

+ The value of the polynomial evaluated at degree l-1. +

+
+
+
+template <class T1, class T2, class T3>
+calculated-result-type legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1);
+
+

+ Implements the three term recurrence relation for the Associated Legendre + polynomials, this function can be used to create a sequence of values evaluated + at the same x, and for rising l. +

+

+ +

+

+ For example we could produce a vector of the first m+10 polynomial values + using: +

+
+double x = 0.5;  // Abscissa value
+int m = 10;      // order
+vector<double> v;
+v.push_back(legendre_p(m, m, x)).push_back(legendre_p(1 + m, m, x));
+for(unsigned l = 1 + m; l < m + 10; ++l)
+   v.push_back(legendre_next(l, m, x, v[l], v[l-1]));
+
+

+ Formally the arguments are: +

+
+

+
+
l
+

+ The degree of the last polynomial calculated. +

+
m
+

+ The order of the Associated Polynomial. +

+
x
+

+ The abscissa value +

+
Pl
+

+ The value of the polynomial evaluated at degree l. +

+
Plm1
+

+ The value of the polynomial evaluated at degree l-1. +

+
+
+
+ + Accuracy +
+

+ The following table shows peak errors (in units of epsilon) for various + domains of input arguments. Note that only results for the widest floating + point type on the system are given as narrower types have effectively + zero error. +

+
+

Table 24. Peak Errors In the Legendre P Function

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ Errors in range +

+

+ 20 < l < 120 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=211 Mean=20 +

+
+

+ Peak=300 Mean=33 +

+
+

+ 64 +

+
+

+ SUSE Linux IA32, g++ 4.1 +

+
+

+ Peak=70 Mean=10 +

+
+

+ Peak=700 Mean=60 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=70 Mean=10 +

+
+

+ Peak=700 Mean=60 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=35 Mean=6 +

+
+

+ Peak=292 Mean=41 +

+
+
+
+

Table 25. Peak Errors In the Associated Legendre + P Function

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=1200 Mean=7 +

+
+

+ 64 +

+
+

+ SUSE Linux IA32, g++ 4.1 +

+
+

+ Peak=80 Mean=5 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=80 Mean=5 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=42 Mean=4 +

+
+
+
+

Table 26. Peak Errors In the Legendre Q Function

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ Errors in range +

+

+ 20 < l < 120 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=50 Mean=7 +

+
+

+ Peak=4600 Mean=370 +

+
+

+ 64 +

+
+

+ SUSE Linux IA32, g++ 4.1 +

+
+

+ Peak=51 Mean=8 +

+
+

+ Peak=6000 Mean=480 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=51 Mean=8 +

+
+

+ Peak=6000 Mean=480 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=90 Mean=10 +

+
+

+ Peak=1700 Mean=140 +

+
+
+

+ Note that the worst errors occur when the order increases, values greater + than ~120 are very unlikely to produce sensible results, especially in + the associated polynomial case when the degree is also large. Further the + relative errors are likely to grow arbitrarily large when the function + is very close to a root. +

+

+ No comparisons to other libraries are shown here: there appears to be only + one viable implementation method for these functions, the comparisons to + other libraries that have been run show identical error rates to those + given here. +

+
+ + Testing +
+

+ A mixture of spot tests of values calculated using functions.wolfram.com, + and randomly generated test data are used: the test data was computed using + NTL::RR at 1000-bit + precision. +

+
+ + Implementation +
+

+ These functions are implemented using the stable three term recurrence + relations. These relations guarentee low absolute error but cannot guarentee + low relative error near one of the roots of the polynomials. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html new file mode 100644 index 000000000..2695a31b5 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sf_poly/sph_harm.html @@ -0,0 +1,321 @@ + + + +Spherical Harmonics + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/special_functions/spheric_harmonic.hpp>
+
+

+

+
+namespace boost{ namespace math{
+
+template <class T1, class T2>
+std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
+
+template <class T1, class T2, class Policy>
+std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy&);
+
+template <class T1, class T2>
+calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
+   
+template <class T1, class T2, class Policy>
+calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy&);
+   
+}} // namespaces
+
+
+ + Description +
+

+ The return type of these functions is computed using the result + type calculation rules when T1 and T2 are different types. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+template <class T1, class T2>
+std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi);
+
+template <class T1, class T2, class Policy>
+std::complex<calculated-result-type> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const Policy&);
+
+

+ Returns the value of the Spherical Harmonic Ynm(theta, phi): +

+

+ +

+

+ The spherical harmonics Ynm(theta, phi) are the angular portion of the + solution to Laplace's equation in spherical coordinates where azimuthal + symmetry is not present. +

+
+ + + + + +
[Caution]Caution
+

+ Care must be taken in correctly identifying the arguments to this function: + θ is taken as the polar (colatitudinal) coordinate with θ in [0, π], and φ as + the azimuthal (longitudinal) coordinate with φ in [0,2π). This is the convention + used in Physics, and matches the definition used by Mathematica + in the function SpericalHarmonicY, but is opposite to the usual + mathematical conventions. +

+

+ Some other sources include an additional Condon-Shortley phase term of + (-1)m in the definition of this function: note however that our definition + of the associated Legendre polynomial already includes this term. +

+

+ This implementation returns zero for m > n +

+

+ For θ outside [0, π] and φ outside [0, 2π] this implementation follows the + convention used by Mathematica: the function is periodic with period + π in θ and 2π in φ. Please note that this is not the behaviour one would get + from a casual application of the function's definition. Cautious users + should keep θ and φ to the range [0, π] and [0, 2π] respectively. +

+

+ See: Weisstein, + Eric W. "Spherical Harmonic." From MathWorld--A Wolfram Web + Resource. +

+
+
+template <class T1, class T2>
+calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const Policy&);
+
+

+ Returns the real part of Ynm(theta, phi): +

+

+ +

+
+template <class T1, class T2>
+calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi);
+
+template <class T1, class T2, class Policy>
+calculated-result-type spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const Policy&);
+
+

+ Returns the imaginary part of Ynm(theta, phi): +

+

+ +

+
+ + Accuracy +
+

+ The following table shows peak errors for various domains of input arguments. + Note that only results for the widest floating point type on the system + are given as narrower types have effectively + zero error. Peak errors are the same for both the real and imaginary + parts, as the error is dominated by calculation of the associated Legendre + polynomials: especially near the roots of the associated Legendre function. +

+

+ All values are in units of epsilon. +

+
+

Table 30. Peak Errors In the Sperical Harmonic Functions

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

+ Significand Size +

+
+

+ Platform and Compiler +

+
+

+ Errors in range +

+

+ 0 < l < 20 +

+
+

+ 53 +

+
+

+ Win32, Visual C++ 8 +

+
+

+ Peak=2x104 Mean=700 +

+
+

+ 64 +

+
+

+ SUSE Linux IA32, g++ 4.1 +

+
+

+ Peak=2900 Mean=100 +

+
+

+ 64 +

+
+

+ Red Hat Linux IA64, g++ 3.4.4 +

+
+

+ Peak=2900 Mean=100 +

+
+

+ 113 +

+
+

+ HPUX IA64, aCC A.06.06 +

+
+

+ Peak=6700 Mean=230 +

+
+
+

+ Note that the worst errors occur when the degree increases, values greater + than ~120 are very unlikely to produce sensible results, especially when + the order is also large. Further the relative errors are likely to grow + arbitrarily large when the function is very close to a root. +

+
+ + Testing +
+

+ A mixture of spot tests of values calculated using functions.wolfram.com, + and randomly generated test data are used: the test data was computed using + NTL::RR at 1000-bit + precision. +

+
+ + Implementation +
+

+ These functions are implemented fairly naively using the formulae given + above. Some extra care is taken to prevent roundoff error when converting + from polar coordinates (so for example the 1-x2 term + used by the associated Legendre functions is calculated without roundoff + error using x = cos(theta), and 1-x2 = sin2(theta)). + The limiting factor in the error rates for these functions is the need + to calculate values near the roots of the associated Legendre functions. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sinc.html b/doc/sf_and_dist/html/math_toolkit/special/sinc.html new file mode 100644 index 000000000..812bc00d0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sinc.html @@ -0,0 +1,51 @@ + + + +Sinus Cardinal and Hyperbolic Sinus Cardinal Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html b/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html new file mode 100644 index 000000000..6dacc9ef9 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_overview.html @@ -0,0 +1,85 @@ + + + +Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The Sinus Cardinal + family of functions (indexed by the family of indices a + > 0) is defined by ; + it sees heavy use in signal processing tasks. +

+

+ By analogy, the Hyperbolic + Sinus Cardinal family of functions (also indexed by the family + of indices a > 0) is defined by . +

+

+ These two families of functions are composed of entire functions. +

+

+ These functions (sinc_pi + and sinhc_pi) + are needed by our + implementation of quaternions + and octonions. +

+
+

+

+

+ Sinus Cardinal of index pi (purple) + and Hyperbolic Sinus Cardinal of index pi (red) on R +

+

+

+
+
+

+

+

+ sinc_pi_and_sinhc_pi_on_r +

+

+

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html b/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html new file mode 100644 index 000000000..90a6a3c2c --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sinc/sinc_pi.html @@ -0,0 +1,86 @@ + + + +sinc_pi + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/sinc.hpp>
+
+

+

+
+template<class T> 
+calculated-result-type sinc_pi(const T x);
+
+template<class T, class Policy> 
+calculated-result-type sinc_pi(const T x, const Policy&);
+
+template<class T, template<typename> class U> 
+U<T> sinc_pi(const U<T> x);
+
+template<class T, template<typename> class U, class Policy> 
+U<T> sinc_pi(const U<T> x, const Policy&);
+
+

+ Computes the Sinus + Cardinal of x: +

+
+sinc_pi(x) = sin(x) / x
+
+

+ The second form is for complex numbers, quaternions, octonions etc. Taylor + series are used at the origin to ensure accuracy. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html b/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html new file mode 100644 index 000000000..5a45ead0d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/special/sinc/sinhc_pi.html @@ -0,0 +1,90 @@ + + + +sinhc_pi + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+#include <boost/math/special_functions/sinhc.hpp>
+
+

+

+
+template<class T> 
+calculated-result-type sinhc_pi(const T x);
+
+template<class T, class Policy> 
+calculated-result-type sinhc_pi(const T x, const Policy&);
+
+template<typename T, template<typename> class U> 
+U<T> sinhc_pi(const U<T> x);
+
+template<class T, template<typename> class U, class Policy> 
+U<T> sinhc_pi(const U<T> x, const Policy&);
+
+

+ Computes http://mathworld.wolfram.com/SinhcFunction.html the + Hyperbolic Sinus Cardinal of x: +

+
+sinhc_pi(x) = sinh(x) / x
+
+

+ The second form is for complex numbers, quaternions, octonions etc. Taylor + series are used at the origin to ensure accuracy. +

+

+ The return type of the first form is computed using the result + type calculation rules when T is an integer type. +

+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/status.html b/doc/sf_and_dist/html/math_toolkit/status.html new file mode 100644 index 000000000..8e13db276 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/status.html @@ -0,0 +1,50 @@ + + + +Library Status + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/status/compilers.html b/doc/sf_and_dist/html/math_toolkit/status/compilers.html new file mode 100644 index 000000000..a9e167efb --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/status/compilers.html @@ -0,0 +1,629 @@ + + + +Compilers + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+

+

+ This section contains some information about how various compilers work + with this library. It is not comprehensive and updated experiences are + always welcome. Some effort has been made to suppress unhelpful warnings + but it is difficult to achieve this on all systems. +

+

+

+
+

Table 47. Supported/Tested Compilers

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

+ Platform +

+
+

+ Compiler +

+
+

+ Has long double support +

+
+

+ Notes +

+
+

+ Windows +

+
+

+ MSVC 7.1 and later +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free at level 4 with this compiler. +

+
+

+ Windows +

+
+

+ Intel 8.1 and later +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free at level 4 with this compiler. + However, The tests cases tend to generate a lot of warnings relating + to numeric underflow of the test data: these are harmless. +

+
+

+ Windows +

+
+

+ GNU Mingw32 C++ +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free with -Wall with this compiler. +

+
+

+ Windows +

+
+

+ GNU Cygwin C++ +

+
+

+ No +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free with -Wall with this compiler. +

+

+ Long double support has been disabled because there are no native + long double C std library functions available. +

+
+

+ Windows +

+
+

+ Borland C++ 5.8.2 (Developer studio 2006) +

+
+

+ No +

+
+

+ We have only partial compatability with this compiler: +

+

+ Long double support has been disabled because the native long double + C standard library functions really only forward to the double versions. + This can result in unpredictable behaviour when using the long double + overloads: for example sqrtl + applied to a finite value, can result in an infinite result. +

+

+ Some functions still fail to compile, there are no known workarounds + at present. +

+
+

+ Linux +

+
+

+ GNU C++ 3.4 and later +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free with -Wall with this compiler. +

+
+

+ Linux +

+
+

+ Intel C++ 10.0 and later +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free with -Wall with this compiler. + However, The tests cases tend to generate a lot of warnings relating + to numeric underflow of the test data: these are harmless. +

+
+

+ Linux +

+
+

+ Intel C++ 8.1 and 9.1 +

+
+

+ No +

+
+

+ All tests OK. +

+

+ Long double support has been disabled with these compiler releases + because calling the standard library long double math functions can + result in a segfault. The issue is Linux distribution and glibc version + specific and is Intel bug report #409291. Fully up to date releases + of Intel 9.1 (post version l_cc_c_9.1.046) shouldn't have this problem. + If you need long double support with this compiler, then comment + out the define of BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS at line + 55 of boost/math/tools/config.hpp. +

+

+ We aim to keep our headers warning free with -Wall with this compiler. + However, The tests cases tend to generate a lot of warnings relating + to numeric underflow of the test data: these are harmless. +

+
+

+ Linux +

+
+

+ QLogic PathScale 3.0 +

+
+

+ Yes +

+
+

+ Some tests involving conceptual checks fail to build, otherwise there + appear to be no issues. +

+
+

+ Linux +

+
+

+ Sun Studio 12 +

+
+

+ Yes +

+
+

+ Some tests involving function overload resolution fail to build, + these issues should be rairly encountered in practice. +

+
+

+ Solaris +

+
+

+ Sun Studio 12 +

+
+

+ Yes +

+
+

+ Some tests involving function overload resolution fail to build, + these issues should be rairly encountered in practice. +

+
+

+ Solaris +

+
+

+ GNU C++ 4.x +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ We aim to keep our headers warning free with -Wall with this compiler. +

+
+

+ HP Tru64 +

+
+

+ Compaq C++ 7.1 +

+
+

+ Yes +

+
+

+ All tests OK. +

+
+

+ HP-UX Itanium +

+
+

+ HP aCC 6.x +

+
+

+ Yes +

+
+

+ All tests OK. +

+

+ Unfortunately this compiler emits quite a few warnings from libraries + upon which we depend (TR1, Array etc). +

+
+

+ HP-UX PA-RISC +

+
+

+ GNU C++ 3.4 +

+
+

+ No +

+
+

+ All tests OK. +

+
+

+ Apple Mac OS X, Intel +

+
+

+ Darwin/GNU C++ 4.x +

+
+

+ Yes +

+
+

+ All tests OK. +

+
+

+ Apple Mac OS X, PowerPC +

+
+

+ Darwin/GNU C++ 4.x +

+
+

+ No +

+
+

+ All tests OK. +

+

+ Long double support has been disabled on this platform due to the + rather strange nature of Darwin's 106-bit long double implementation. + It should be possible to make this work if someone is prepared to + offer assistance. +

+
+

+ IMB AIX +

+
+

+ IBM xlc 5.3 +

+
+

+ Yes +

+
+

+ Currently our accuracy tests are unable to be run on this platform + due to compiler errors in our test code. The + IBM compiler group are aware of the problem. +

+
+
+


+
+

Table 48. Unsupported Compilers

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

+ Platform +

+
+

+ Compiler +

+
+

+ Windows +

+
+

+ Borland C++ 5.9.2 (Borland Developer Studio 2007) +

+
+

+ Windows +

+
+

+ MSVC 6 and 7 +

+
+
+


+

+

+ If you're compiler or platform is not listed above, please try running + the regression tests: cd into boost-root/libs/math/test and do a: +

+

+ +

+
+bjam mytoolset
+
+

+

+

+ where "mytoolset" is the name of the Boost.Build + toolset used for your compiler. The chances are that many + of the accuracy tests will fail at this stage - don't panic + - the default acceptable error tolerances are quite tight, especially for + long double types with an extended exponent range (these cause more extreme + test cases to be executed for some functions). You will need to cast an + eye over the output from the failing tests and make a judgement as to whether + the error rates are acceptable or not. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/status/credits.html b/doc/sf_and_dist/html/math_toolkit/status/credits.html new file mode 100644 index 000000000..44b814d99 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/status/credits.html @@ -0,0 +1,84 @@ + + + +Credits and Acknowledgements + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHome +
+
+ +

+ Hubert Holin started the Boost.Math library. The inverse hyperbolic functions, + and the sinus cardinal functions are his. +

+

+ John Maddock started this library, the beta, gamma, erf, polynomial, and + factorial functions are his, as is the "Toolkit" section, and many + of the statistical distributions. +

+

+ Paul A. Bristow threw down the challenge in A + Proposal to add Mathematical Functions for Statistics to the C++ Standard + Library to add the key math functions, especially those essential + for statistics. After JM accepted and solved the difficult problems, not + only numerically, but in full C++ template style, PAB implemented a few of + the statistical distributions. PAB also tirelessly proof-read everything + that JM threw at him (so that all remaining editorial mistakes are his fault). +

+

+ Xiaogang Zhang worked on the Bessel functions and elliptic integrals for + his Google Summer of Code project 2006. +

+

+ Professor Nico Temme for advice on the inverse incomplete beta function. +

+

+ Victor Shoup for NTL, without which + it would have much difficult to produce high accuracy constants, and especially + the tables of accurate values for testing. +

+

+ We are grateful to Joel Guzman for helping us stress-test his Boost.Quickbook + program used to generate the html and pdf versions of this document, adding + several new features en route. +

+

+ We are also indebted to Matthias Schabel for managing the formal Boost-review + of this library, and to all the reviewers - including Guillaume Melquiond, + Arnaldur Gylfason, John Phillips, Stephan Tolksdorf and Jeff Garland - for + their many helpful comments. +

+
+ + + +
+
+
+PrevUpHome +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/status/history1.html b/doc/sf_and_dist/html/math_toolkit/status/history1.html new file mode 100644 index 000000000..de34a25f3 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/status/history1.html @@ -0,0 +1,217 @@ + + + +History and What's New + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ +

+
+ + Milestone + 5: Post Review First Official Release +
+

+

+
    +
  • + Added Policy based framework that allows fine grained control over function + behaviour. +
  • +
  • +Breaking change: Changed default behaviour + for domain, pole and overflow errors to throw an exception (based on + review feedback), this behaviour can be customised using Policy's. +
  • +
  • +Breaking change: Changed exception thrown + when an internal evaluation error occurs to boost::math::evaluation_error. +
  • +
  • +Breaking change: Changed discrete quantiles + to return an integer result: this is anything up to 20 times faster than + finding the true root, this behaviour can be customised using Policy's. +
  • +
  • + Polynomial/rational function evaluation is now customisable and hopefully + faster than before. +
  • +
  • + Added performance test program. +
  • +
+

+ +

+
+ + Milestone + 4: Second Review Candidate (1st March 2007) +
+

+

+
    +
  • + Moved Xiaogang Zhang's Bessel Functions code into the library, and brought + them into line with the rest of the code. +
  • +
  • + Added C# "Distribution Explorer" demo application. +
  • +
+

+ +

+
+ + Milestone + 3: First Review Candidate (31st Dec 2006) +
+

+

+
    +
  • + Implemented the main probability distribution and density functions. +
  • +
  • + Implemented digamma. +
  • +
  • + Added more factorial functions. +
  • +
  • + Implemented the Hermite, Legendre and Laguerre polynomials plus the spherical + harmonic functions from TR1. +
  • +
  • + Moved Xiaogang Zhang's elliptic integral code into the library, and brought + them into line with the rest of the code. +
  • +
  • + Moved Hubert Holin's existing Boost.Math special functions into this + library and brought them into line with the rest of the code. +
  • +
+

+ +

+
+ + Milestone + 2: Released September 10th 2006 +
+

+

+
    +
  • + Implement preview release of the statistical distributions. +
  • +
  • + Added statistical distributions tutorial. +
  • +
  • + Implemented root finding algorithms. +
  • +
  • + Implemented the inverses of the incomplete gamma and beta functions. +
  • +
  • + Rewrite erf/erfc as rational approximations (valid to 128-bit precision). +
  • +
  • + Integrated the statistical results generated from the test data with + Boost.Test: uses a database of expected results, indexed by test, floating + point type, platform, and compiler. +
  • +
  • + Improved lgamma near 1 and 2 (rational approximations). +
  • +
  • + Improved erf/erfc inverses (rational approximations). +
  • +
  • + Implemented Rational function generation (the Remez method). +
  • +
+

+ +

+
+ + Milestone + 1: Released March 31st 2006 +
+

+

+
    +
  • + Implement gamma/beta/erf functions along with their incomplete counterparts. +
  • +
  • + Generate high quality test data, against which future improvements can + be judged. +
  • +
  • + Provide tools for the evaluation of infinite series, continued fractions, + and rational functions. +
  • +
  • + Provide tools for testing against tabulated test data, and collecting + statistics on error rates. +
  • +
  • + Provide sufficient docs for people to be able to find their way around + the library. +
  • +
+

+

+

+ SVN Revisions: +

+

+

+

+ Sandbox and trunk last synchonised at revision: 40161. +

+

+

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/status/issues.html b/doc/sf_and_dist/html/math_toolkit/status/issues.html new file mode 100644 index 000000000..c4458a215 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/status/issues.html @@ -0,0 +1,163 @@ + + + +Known Issues, and Todo List + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This section lists those issues that are known about. +

+

+ Predominantly this is a TODO list, or a list of possible future enhancements. + Items labled "High Priority" effect the proper functioning of the + component, and should be fixed as soon as possible. Items labled "Medium + Priority" are desirable enhancements, often pertaining to the performance + of the component, but do not effect it's accuracy or functionality. Items + labled "Low Priority" should probably be investigated at some point. + Such classifications are obviously highly subjective. +

+

+ If you don't see a component listed here, then we don't have any known issues + with it. +

+
+ + tgamma +
+
+
+ + Incomplete Beta +
+
  • + Investigate Didonato and Morris' asymptotic expansion for large a and b + (medium priority). +
+
+ + Inverse Gamma +
+
  • + Investigate whether we can skip iteration altogether if the first approximation + is good enough (Medium Priority). +
+
+ + Polynomials +
+
  • + The Legendre and Laguerre Polynomials have surprisingly different error + rates on different platforms, considering they are evaluated with only + basic arithmetic operations. Maybe this is telling us something, or maybe + not (Low Priority). +
+
+ + Elliptic Integrals +
+
    +
  • + Carlson's algorithms are essentially unchanged from Xiaogang Zhang's Google + Summer of Code student project, and are based on Carlson's original papers. + However, Carlson has revised his algorithms since then (refer to the references + in the elliptic integral docs for a list), to improve performance and accuracy, + we may be able to take advantage of these improvements too (Low Priority). +
  • +
  • +

    Carlson's algorithms (mainly RJ) are somewhat prone to internal overflow/underflow + when the arguments are very large or small. The homogeneity relations:

    +

    RF(ka, + kb, kc) = k-1/2 RF(a, b, c)

    +

    and

    +

    RJ(ka, kb, kc, kr) = k-3/2 RJ(a, b, c, r)

    +

    could + be used to sidestep trouble here: provided the problem domains can be accurately + identified. (Medium Priority).

    +
  • +
  • + Carlson's RC can be reduced to elementary funtions (asin and log), would + it be more efficient evaluated this way, rather than by Carlson's algorithms? + (Low Priority). +
  • +
  • + Should we add an implementation of Carlson's RG? It's not required for + the Legendre form integrals, but some people may find it useful (Low Priority). +
  • +
  • + There are a several other integrals: D(φ, k), Z(β, k), Λ0(β, k) and Bulirsch's + el functions that could be implemented using Carlson's + integrals (Low Priority). +
  • +
  • + The integrals K(k) and E(k) could be implemented using rational approximations + (both for efficiency and accuracy), assuming we can find them. (Medium + Priority). +
  • +
  • + There is a sub-domain of ellint_3 + that is unimplemented (see the docs for details), currently it's not clear + how to solve this issue, or if it's ever likely to be an real problem in + practice - especially as most other implementations don't support this + domain either (Medium Priority). +
  • +
+
+ + Inverse + Hyperbolic Functions +
+
  • + These functions are inherited from previous Boost versions, before log1p became widely + available. Would they be better expressed in terms of this function? This + is probably only an issue for very high precision types (Low Priority). +
+
+ + Statistical + distributions +
+
  • + Student's t Perhaps switch to normal distribution as a better approximation + for very large degrees of freedom? +
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit.html b/doc/sf_and_dist/html/math_toolkit/toolkit.html new file mode 100644 index 000000000..a7f42013a --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit.html @@ -0,0 +1,72 @@ + + + +Internal Details and Tools (Experimental) + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html new file mode 100644 index 000000000..6d36ab455 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1.html @@ -0,0 +1,58 @@ + + + +Reused Utilities + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html new file mode 100644 index 000000000..7fae8759d --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/cf.html @@ -0,0 +1,271 @@ + + + +Continued Fraction Evaluation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/tools/fraction.hpp>
+
+

+

+
+namespace boost{ namespace math{ namespace tools{
+
+template <class Gen>
+typename detail::fraction_traits<Gen>::result_type 
+   continued_fraction_b(Gen& g, int bits);
+
+template <class Gen>
+typename detail::fraction_traits<Gen>::result_type 
+   continued_fraction_b(Gen& g, int bits, boost::uintmax_t& max_terms);
+
+template <class Gen>
+typename detail::fraction_traits<Gen>::result_type 
+   continued_fraction_a(Gen& g, int bits);
+   
+template <class Gen>
+typename detail::fraction_traits<Gen>::result_type 
+   continued_fraction_a(Gen& g, int bits, boost::uintmax_t& max_terms);
+   
+}}} // namespaces
+
+
+ + Description +
+

+ Continued + fractions are a common method of approximation. These functions + all evaluate the continued fraction described by the generator + type argument. The functions with an "_a" suffix evaluate the + fraction: +

+

+ +

+

+ and those with a "_b" suffix evaluate the fraction: +

+

+ +

+

+ This latter form is somewhat more natural in that it corresponds with the + usual definition of a continued fraction, but note that the first a + value returned by the generator is discarded. Further, often the first + a and b values in a continued + fraction have different defining equations to the remaining terms, which + may make the "_a" suffixed form more appropriate. +

+

+ The generator type should be a function object which supports the following + operations: +

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

+ Expression +

+
+

+ Description +

+
+

+ Gen::result_type +

+
+

+ The type that is the result of invoking operator(). This can be + either an arithmetic type, or a std::pair<> of arithmetic + types. +

+
+

+ g() +

+
+

+ Returns an object of type Gen::result_type. +

+

+ Each time this operator is called then the next pair of a + and b values is returned. Or, if result_type + is an arithmetic type, then the next b value + is returned and all the a values are assumed + to 1. +

+
+

+ In all the continued fraction evaluation functions the bits + parameter is the number of bits precision desired in the result, evaluation + of the fraction will continue until the last term evaluated leaves the + first bits bits in the result unchanged. +

+

+ If the optional max_terms parameter is specified then + no more than max_terms calls to the generator will + be made, and on output, max_terms will be set to actual + number of calls made. This facility is particularly useful when profiling + a continued fraction for convergence. +

+
+ + Implementation +
+

+ Internally these algorithms all use the modified Lentz algorithm: refer + to Numeric Recipes in C++, W. H. Press et all, chapter 5, (especially 5.2 + Evaluation of continued fractions, p 175 - 179) for more information, also + Lentz, W.J. 1976, Applied Optics, vol. 15, pp. 668-671. +

+
+ + Examples +
+

+ The golden ratio + phi = 1.618033989... can be computed from the simplest continued + fraction of all: +

+

+ +

+

+ We begin by defining a generator function: +

+
+template <class T>
+struct golden_ratio_fraction
+{
+   typedef T result_type;
+   
+   result_type operator()
+   {
+      return 1;
+   }
+};
+
+

+ The golden ratio can then be computed to double precision using: +

+
+continued_fraction_a(
+   golden_ratio_fraction<double>(),
+   std::numeric_limits<double>::digits);
+
+

+ It's more usual though to have to define both the a's + and the b's when evaluating special functions by continued + fractions, for example the tan function is defined by: +

+

+ +

+

+ So it's generator object would look like: +

+
+template <class T>
+struct tan_fraction
+{
+private:
+   T a, b;
+public:
+   tan_fraction(T v)
+      : a(-v*v), b(-1)
+   {}
+
+   typedef std::pair<T,T> result_type;
+
+   std::pair<T,T> operator()()
+   {
+      b += 2;
+      return std::make_pair(a, b);
+   }
+};
+
+

+ Notice that if the continuant is subtracted from the b + terms, as is the case here, then all the a terms returned + by the generator will be negative. The tangent function can now be evaluated + using: +

+
+template <class T>
+T tan(T a)
+{
+   tan_fraction<T> fract(a);
+   return a / continued_fraction_b(fract, std::numeric_limits<T>::digits);
+}
+
+

+ Notice that this time we're using the "_b" suffixed version to + evaluate the fraction: we're removing the leading a + term during fraction evaluation as it's different from all the others. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html new file mode 100644 index 000000000..431c18742 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/minima.html @@ -0,0 +1,128 @@ + + + +Locating Function Minima + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + synopsis +
+

+ +

+
+#include <boost/math/tools/minima.hpp>
+
+

+

+
+template <class F, class T>
+std::pair<T, T> brent_find_minima(F f, T min, T max, int bits);
+
+template <class F, class T>
+std::pair<T, T> brent_find_minima(F f, T min, T max, int bits, boost::uintmax_t& max_iter);
+
+
+ + Description +
+

+ These two functions locate the minima of the continuous function f + using Brent's algorithm. Parameters are: +

+
+

+
+
f
+

+ The function to minimise. The function should be smooth over the range + [min,max], with no maxima occurring in that interval. +

+
min
+

+ The lower endpoint of the range in which to search for the minima. +

+
max
+

+ The upper endpoint of the range in which to search for the minima. +

+
bits
+

+ The number of bits precision to which the minima should be found. Note + that in principle, the minima can not be located to greater accuracy + than the square root of machine epsilon, therefore if bits + is set to a value greater than one half of the bits in type T, then + the value will be ignored. +

+
max_iter
+

+ The maximum number of iterations to use in the algorithm, if not provided + the algorithm will just keep on going until the minima is found. +

+
+
+

+ Returns: a pair containing the value of + the abscissa at the minima and the value of f(x) at the minima. +

+
+ + Implementation +
+

+ This is a reasonably faithful implementation of Brent's algorithm, refer + to: +

+

+ Brent, R.P. 1973, Algorithms for Minimization without Derivatives (Englewood + Cliffs, NJ: Prentice-Hall), Chapter 5. +

+

+ Numerical Recipes in C, The Art of Scientific Computing, Second Edition, + William H. Press, Saul A. Teukolsky, William T. Vetterling, and Brian P. + Flannery. Cambridge University Press. 1988, 1992. +

+

+ An algorithm with guaranteed convergence for finding a zero of a function, + R. P. Brent, The Computer Journal, Vol 44, 1971. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html new file mode 100644 index 000000000..74f9638ae --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/rational.html @@ -0,0 +1,243 @@ + + + +Polynomial and Rational Function Evaluation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + synopsis +
+

+ +

+
+#include <boost/math/tools/rational.hpp>
+
+

+

+
+// Polynomials:
+template <std::size_t N, class T, class V>
+V evaluate_polynomial(const T(&poly)[N], const V& val);
+
+template <std::size_t N, class T, class V>
+V evaluate_polynomial(const boost::array<T,N>& poly, const V& val);
+
+template <class T, class U>
+U evaluate_polynomial(const T* poly, U z, std::size_t count);
+
+// Even polynomials:
+template <std::size_t N, class T, class V>
+V evaluate_even_polynomial(const T(&poly)[N], const V& z);
+
+template <std::size_t N, class T, class V>
+V evaluate_even_polynomial(const boost::array<T,N>& poly, const V& z);
+
+template <class T, class U>
+U evaluate_even_polynomial(const T* poly, U z, std::size_t count);
+
+// Odd polynomials   
+template <std::size_t N, class T, class V>
+V evaluate_odd_polynomial(const T(&a)[N], const V& z);
+
+template <std::size_t N, class T, class V>
+V evaluate_odd_polynomial(const boost::array<T,N>& a, const V& z);
+
+template <class T, class U>
+U evaluate_odd_polynomial(const T* poly, U z, std::size_t count);
+
+// Rational Functions:
+template <std::size_t N, class T, class V>
+V evaluate_rational(const T(&a)[N], const T(&b)[N], const V& z);
+
+template <std::size_t N, class T, class V>
+V evaluate_rational(const boost::array<T,N>& a, const boost::array<T,N>& b, const V& z);
+
+template <class T, class U, class V>
+V evaluate_rational(const T* num, const U* denom, V z, unsigned count);
+
+
+ + Description +
+

+ Each of the functions come in three variants: a pair of overloaded functions + where the order of the polynomial or rational function is evaluated at + compile time, and an overload that accepts a runtime variable for the size + of the coefficient array. Generally speaking, compile time evaluation of + the array size results in better type safety, is less prone to programmer + errors, and may result in better optimised code. The polynomial evaluation + functions in particular, are specialised for various array sizes, allowing + for loop unrolling, and one hopes, optimal inline expansion. +

+
+template <std::size_t N, class T, class V>
+V evaluate_polynomial(const T(&poly)[N], const V& val);
+
+template <std::size_t N, class T, class V>
+V evaluate_polynomial(const boost::array<T,N>& poly, const V& val);
+
+template <class T, class U>
+U evaluate_polynomial(const T* poly, U z, std::size_t count);
+
+

+ Evaluates the polynomial + described by the coefficients stored in poly. +

+

+ If the size of the array is specified at runtime, then the polynomial most + have order count-1 with count + coefficients. Otherwise it has order N-1 with N + coefficients. +

+

+ Coefficients should be stored such that the coefficients for the xi terms + are in poly[i]. +

+

+ The types of the coefficients and of variable z may + differ as long as *poly is convertible to type U. + This allows, for example, for the coefficient table to be a table of integers + if this is appropriate. +

+
+template <std::size_t N, class T, class V>
+V evaluate_even_polynomial(const T(&poly)[N], const V& z);
+
+template <std::size_t N, class T, class V>
+V evaluate_even_polynomial(const boost::array<T,N>& poly, const V& z);
+
+template <class T, class U>
+U evaluate_even_polynomial(const T* poly, U z, std::size_t count);
+
+

+ As above, but evaluates an even polynomial: one where all the powers of + z are even numbers. Equivalent to calling evaluate_polynomial(poly, z*z, count). +

+
+template <std::size_t N, class T, class V>
+V evaluate_odd_polynomial(const T(&a)[N], const V& z);
+
+template <std::size_t N, class T, class V>
+V evaluate_odd_polynomial(const boost::array<T,N>& a, const V& z);
+
+template <class T, class U>
+U evaluate_odd_polynomial(const T* poly, U z, std::size_t count);
+
+

+ As above but evaluates a polynomial where all the powers are odd numbers. + Equivalent to evaluate_polynomial(poly+1, + z*z, count-1) + * z + + poly[0]. +

+
+template <std::size_t N, class T, class U, class V>
+V evaluate_rational(const T(&num)[N], const U(&denom)[N], const V& z);
+
+template <std::size_t N, class T, class U, class V>
+V evaluate_rational(const boost::array<T,N>& num, const boost::array<U,N>& denom, const V& z);
+
+template <class T, class U, class V>
+V evaluate_rational(const T* num, const U* denom, V z, unsigned count);
+
+

+ Evaluates the rational function (the ratio of two polynomials) described + by the coefficients stored in num and demom. +

+

+ If the size of the array is specified at runtime then both polynomials + most have order count-1 with count + coefficients. Otherwise both polynomials have order N-1 + with N coefficients. +

+

+ Array num describes the numerator, and demon + the denominator. +

+

+ Coefficients should be stored such that the coefficients for the xi terms + are in num[i] and denom[i]. +

+

+ The types of the coefficients and of variable v may + differ as long as *num and *denom + are convertible to type V. This allows, for example, + for one or both of the coefficient tables to be a table of integers if + this is appropriate. +

+

+ These functions are designed to safely evaluate the result, even when the + value z is very large. As such they do not take advantage + of compile time array sizes to make any optimisations. These functions + are best reserved for situations where z may be large: + if you can be sure that numerical overflow will not occur then polynomial + evaluation with compile-time array sizes may offer slightly better performance. +

+
+ + Implementation +
+

+ Polynomials are evaluated by Horners + method. If the array size is known at compile time then the functions + dispatch to size-specific implementations that unroll the evaluation loop. +

+

+ Rational evaluation is by Horners + method: with the two polynomials being evaluated in parallel to + make the most of the processors floating-point pipeline. If v + is greater than one, then the polynomials are evaluated in reverse order + as polynomials in 1/v: this avoids unnecessary numerical + overflow when the coefficients are large. +

+

+ Both the polynomial and rational function evaluation algorithms can be + tuned using various configuration macros to provide optimal performance + for a particular combination of compiler and platform. This includes support + for second-order Horner's methods. The various options are documented + here. However, the performance benefits to be gained from these + are marginal on most current hardware, consequently it's best to run the + performance test application + before changing the default settings. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html new file mode 100644 index 000000000..3bce987f7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots.html @@ -0,0 +1,390 @@ + + + +Root Finding With Derivatives + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/tools/roots.hpp>
+
+

+

+
+namespace boost{ namespace math{ namespace tools{
+
+template <class F, class T>
+T newton_raphson_iterate(F f, T guess, T min, T max, int digits);
+
+template <class F, class T>
+T newton_raphson_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter);
+
+template <class F, class T>
+T halley_iterate(F f, T guess, T min, T max, int digits);
+
+template <class F, class T>
+T halley_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter);
+
+template <class F, class T>
+T schroeder_iterate(F f, T guess, T min, T max, int digits);
+
+template <class F, class T>
+T schroeder_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter);
+
+}}} // namespaces
+
+
+ + Description +
+

+ These functions all perform iterative root finding: newton_raphson_iterate + performs second order Newton Raphson iteration, + while halley_iterate and + schroeder_iterate perform + third order Halley and Schroeder + iteration respectively. +

+

+ The functions all take the same parameters: +

+
+

Parameters of the root finding functions

+
+
F + f
+
+

+ Type F must be a callable function object that accepts one parameter + and returns a tuple: +

+

+ For the second order iterative methods (Newton Raphson) the tuple should + have two elements containing the evaluation of the function and it's + first derivative. +

+

+ For the third order methods (Halley and Schroeder) the tuple should + have three elements containing the evaluation of the function and its + first and second derivatives. +

+
+
T guess
+

+ The initial starting value. +

+
T min
+

+ The minimum possible value for the result, this is used as an initial + lower bracket. +

+
T max
+

+ The maximum possible value for the result, this is used as an initial + upper bracket. +

+
int digits
+

+ The desired number of binary digits. +

+
uintmax_t max_iter
+

+ An optional maximum number of iterations to perform. +

+
+
+

+ When using these functions you should note that: +

+
    +
  • + They may be very sensitive to the initial guess, typically they converge + very rapidly if the initial guess has two or three decimal digits correct. + However convergence can be no better than bisection, or in some rare + cases even worse than bisection if the initial guess is a long way from + the correct value and the derivatives are close to zero. +
  • +
  • + These functions include special cases to handle zero first (and second + where appropriate) derivatives, and fall back to bisection in this case. + However, it is helpful if F is defined to return an arbitrarily small + value of the correct sign rather than zero. +
  • +
  • + If the derivative at the current best guess for the result is infinite + (or very close to being infinite) then these functions may terminate + prematurely. A large first derivative leads to a very small next step, + triggering the termination condition. Derivative based iteration may + not be appropriate in such cases. +
  • +
  • + These functions fall back to bisection if the next computed step would + take the next value out of bounds. The bounds are updated after each + step to ensure this leads to convergence. However, a good initial guess + backed up by asymptotically-tight bounds will improve performance no + end rather than relying on bisection. +
  • +
  • + The value of digits is crucial to good performance + of these functions, if it is set too high then at best you will get one + extra (unnecessary) iteration, and at worst the last few steps will proceed + by bisection. Remember that the returned value can never be more accurate + than f(x) can be evaluated, and that if f(x) suffers from cancellation + errors as it tends to zero then the computed steps will be effectively + random. The value of digits should be set so that + iteration terminates before this point: remember that for second and + third order methods the number of correct digits in the result is increasing + quite substantially with each iteration, digits + should be set by experiment so that the final iteration just takes the + next value into the zone where f(x) becomes inaccurate. +
  • +
  • + Finally: you may well be able to do better than these functions by hand-coding + the heuristics used so that they are tailored to a specific function. + You may also be able to compute the ratio of derivatives used by these + methods more efficiently than computing the derivatives themselves. As + ever, algebraic simplification can be a big win. +
  • +
+

+

+
+ + Newton + Raphson Method +
+

+ Given an initial guess x0 the subsequent values are computed using: +

+

+ +

+

+ Out of bounds steps revert to bisection of the current bounds. +

+

+ Under ideal conditions, the number of correct digits doubles with each + iteration. +

+

+

+
+ + Halley's + Method +
+

+ Given an initial guess x0 the subsequent values are computed using: +

+

+ +

+

+ Over-compensation by the second derivative (one which would proceed in + the wrong direction) causes the method to revert to a Newton-Raphson step. +

+

+ Out of bounds steps revert to bisection of the current bounds. +

+

+ Under ideal conditions, the number of correct digits trebles with each + iteration. +

+

+

+
+ + Schroeder's + Method +
+

+ Given an initial guess x0 the subsequent values are computed using: +

+

+ +

+

+ Over-compensation by the second derivative (one which would proceed in + the wrong direction) causes the method to revert to a Newton-Raphson step. + Likewise a Newton step is used whenever that Newton step would change the + next value by more than 10%. +

+

+ Out of bounds steps revert to bisection of the current bounds. +

+

+ Under ideal conditions, the number of correct digits trebles with each + iteration. +

+
+ + Example +
+

+ Lets suppose we want to find the cube root of a number, the equation we + want to solve along with its derivatives are: +

+

+ +

+

+ To begin with lets solve the problem using Newton Raphson iterations, we'll + begin be defining a function object that returns the evaluation of the + function to solve, along with its first derivative: +

+
+template <class T>
+struct cbrt_functor
+{
+   cbrt_functor(T const& target) : a(target){}
+   std::tr1::tuple<T, T> operator()(T const& z)
+   {
+      T sqr = z * z;
+      return std::tr1::make_tuple(sqr * z - a, 3 * sqr);
+   }
+private:
+   T a;
+};
+
+

+ Implementing the cube root is fairly trivial now, the hardest part is finding + a good approximation to begin with: in this case we'll just divide the + exponent by three: +

+
+template <class T>
+T cbrt(T z)
+{
+   using namespace std;
+   int exp;
+   frexp(z, &exp);
+   T min = ldexp(0.5, exp/3);
+   T max = ldexp(2.0, exp/3);
+   T guess = ldexp(1.0, exp/3);
+   int digits = std::numeric_limits<T>::digits;
+   return tools::newton_raphson_iterate(detail::cbrt_functor<T>(z), guess, min, max, digits);
+}
+
+

+ Using the test data in libs/math/test/cbrt_test.cpp this found the cube + root exact to the last digit in every case, and in no more than 6 iterations + at double precision. However, you will note that a high precision was used + in this example, exactly what was warned against earlier on in these docs! + In this particular case its possible to compute f(x) exactly and without + undue cancellation error, so a high limit is not too much of an issue. + However, reducing the limit to std::numeric_limits<T>::digits + * 2 / 3 gave + full precision in all but one of the test cases (and that one was out by + just one bit). The maximum number of iterations remained 6, but in most + cases was reduced by one. +

+

+ Note also that the above code omits error handling, and does not handle + negative values of z correctly. That will be left as an exercise for the + reader! +

+

+ Now lets adapt the functor slightly to return the second derivative as + well: +

+
+template <class T>
+struct cbrt_functor
+{
+   cbrt_functor(T const& target) : a(target){}
+   std::tr1::tuple<T, T, T> operator()(T const& z)
+   {
+      T sqr = z * z;
+      return std::tr1::make_tuple(sqr * z - a, 3 * sqr, 6 * z);
+   }
+private:
+   T a;
+};
+
+

+ And then adapt the cbrt + function to use Halley iterations: +

+
+template <class T>
+T cbrt(T z)
+{
+   using namespace std;
+   int exp;
+   frexp(z, &exp);
+   T min = ldexp(0.5, exp/3);
+   T max = ldexp(2.0, exp/3);
+   T guess = ldexp(1.0, exp/3);
+   int digits = std::numeric_limits<T>::digits / 2;
+   return tools::halley_iterate(detail::cbrt_functor<T>(z), guess, min, max, digits);
+}
+
+

+ Note that the iterations are set to stop at just one-half of full precision, + and yet even so not one of the test cases had a single bit wrong. What's + more, the maximum number of iterations was now just 4. +

+

+ Just to complete the picture, we could have called schroeder_iterate + in the last example: and in fact it makes no difference to the accuracy + or number of iterations in this particular case. However, the relative + performance of these two methods may vary depending upon the nature of + f(x), and the accuracy to which the initial guess can be computed. There + appear to be no generalisations that can be made except "try them + and see". +

+

+ Finally, had we called cbrt with NTL::RR + set to 1000 bit precision, then full precision can be obtained with just + 7 iterations. To put that in perspective an increase in precision by a + factor of 20, has less than doubled the number of iterations. That just + goes to emphasise that most of the iterations are used up getting the first + few digits correct: after that these methods can churn out further digits + with remarkable efficiency. Or to put it another way: nothing + beats a really good initial guess! +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html new file mode 100644 index 000000000..127fad3b7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/roots2.html @@ -0,0 +1,610 @@ + + + +Root Finding Without Derivatives + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/tools/roots.hpp>
+
+

+

+
+namespace boost{ namespace math{ namespace tools{
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   bisect(
+      F f, 
+      T min, 
+      T max, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   bisect(
+      F f, 
+      T min, 
+      T max, 
+      Tol tol);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   bisect(
+      F f, 
+      T min, 
+      T max, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   bracket_and_solve_root(
+      F f, 
+      const T& guess, 
+      const T& factor, 
+      bool rising, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   bracket_and_solve_root(
+      F f, 
+      const T& guess, 
+      const T& factor, 
+      bool rising, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      const T& fa, 
+      const T& fb, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      const T& fa, 
+      const T& fb, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+// Termination conditions:
+template <class T>
+struct eps_tolerance;
+
+struct equal_floor;
+struct equal_ceil;
+struct equal_nearest_integer;
+
+}}} // namespaces
+
+
+ + Description +
+

+ These functions solve the root of some function f(x) + without the need for the derivatives of f(x). The + functions here that use TOMS Algorithm 748 are asymptotically the most + efficient known, and have been shown to be optimal for a certain classes + of smooth functions. +

+

+ Alternatively, there is a simple bisection routine which can be useful + in its own right in some situations, or alternatively for narrowing down + the range containing the root, prior to calling a more advanced algorithm. +

+

+ All the algorithms in this section reduce the diameter of the enclosing + interval with the same asymptotic efficiency with which they locate the + root. This is in contrast to the derivative based methods which may never + significantly reduce the enclosing interval, even though they rapidly approach + the root. This is also in contrast to some other derivative-free methods + (for example the methods of Brent + or Dekker) which only reduce the enclosing interval on the final + step. Therefore these methods return a std::pair containing the enclosing + interval found, and accept a function object specifying the termination + condition. Three function objects are provided for ready-made termination + conditions: eps_tolerance causes termination when + the relative error in the enclosing interval is below a certain threshold, + while equal_floor and equal_ceil + are useful for certain statistical applications where the result is known + to be an integer. Other user-defined termination conditions are likely + to be used only rarely, but may be useful in some specific circumstances. +

+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   bisect(
+      F f, 
+      T min, 
+      T max, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   bisect(
+      F f, 
+      T min, 
+      T max, 
+      Tol tol);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   bisect(
+      F f, 
+      T min, 
+      T max, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+

+ These functions locate the root using bisection, function arguments are: +

+
+

+
+
f
+

+ A unary functor which is the function whose root is to be found. +

+
min
+

+ The left bracket of the interval known to contain the root. +

+
max
+

+ The right bracket of the interval known to contain the root. It is + a precondition that min < max and f(min)*f(max) + <= 0, the function signals evaluation error if these + preconditions are violated. The action taken is controlled by the evaluation + error policy. A best guess may be returned, perhaps significantly wrong. +

+
tol
+

+ A binary functor that specifies the termination condition: the function + will return the current brackets enclosing the root when tol(min,max) + becomes true. +

+
max_iter
+

+ The maximum number of invocations of f(x) to make + while searching for the root. +

+
+
+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Returns: a pair of values r that bracket the root + so that: +

+
+f(r.first) * f(r.second) <= 0
+
+

+ and either +

+
+tol(r.first, r.second) == true
+
+

+ or +

+
+max_iter >= m
+
+

+ where m is the initial value of max_iter + passed to the function. +

+

+ In other words, it's up to the caller to verify whether termination occurred + as a result of exceeding max_iter function invocations + (easily done by checking the value of max_iter when + the function returns), rather than because the termination condition tol + was satisfied. +

+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   bracket_and_solve_root(
+      F f, 
+      const T& guess, 
+      const T& factor, 
+      bool rising, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   bracket_and_solve_root(
+      F f, 
+      const T& guess, 
+      const T& factor, 
+      bool rising, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+

+ This is a convenience function that calls toms748_solve + internally to find the root of f(x). It's usable only + when f(x) is a monotonic function, and the location + of the root is known approximately, and in particular it is known whether + the root is occurs for positive or negative x. The + parameters are: +

+
+

+
+
f
+

+ A unary functor that is the function whose root is to be solved. f(x) + must be uniformly increasing or decreasing on x. +

+
guess
+

+ An initial approximation to the root +

+
factor
+

+ A scaling factor that is used to bracket the root: the value guess + is multiplied (or divided as appropriate) by factor + until two values are found that bracket the root. A value such as 2 + is a typical choice for factor. +

+
rising
+

+ Set to true if f(x) is rising + on x and false if f(x) + is falling on x. This value is used along with + the result of f(guess) to determine if guess + is above or below the root. +

+
tol
+

+ A binary functor that determines the termination condition for the + search for the root. tol is passed the current + brackets at each step, when it returns true then the current brackets + are returned as the result. +

+
max_iter
+

+ The maximum number of function invocations to perform in the search + for the root. +

+
+
+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Returns: a pair of values r that bracket the root + so that: +

+
+f(r.first) * f(r.second) <= 0
+
+

+ and either +

+
+tol(r.first, r.second) == true
+
+

+ or +

+
+max_iter >= m
+
+

+ where m is the initial value of max_iter + passed to the function. +

+

+ In other words, it's up to the caller to verify whether termination occurred + as a result of exceeding max_iter function invocations + (easily done by checking the value of max_iter when + the function returns), rather than because the termination condition tol + was satisfied. +

+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+template <class F, class T, class Tol>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      const T& fa, 
+      const T& fb, 
+      Tol tol, 
+      boost::uintmax_t& max_iter);
+      
+template <class F, class T, class Tol, class Policy>
+std::pair<T, T> 
+   toms748_solve(
+      F f, 
+      const T& a, 
+      const T& b, 
+      const T& fa, 
+      const T& fb, 
+      Tol tol, 
+      boost::uintmax_t& max_iter,
+      const Policy&);
+
+

+ These two functions implement TOMS Algorithm 748: it uses a mixture of + cubic, quadratic and linear (secant) interpolation to locate the root of + f(x). The two functions differ only by whether values + for f(a) and f(b) are already + available. The parameters are: +

+
+

+
+
f
+

+ A unary functor that is the function whose root is to be solved. f(x) + need not be uniformly increasing or decreasing on x + and may have multiple roots. +

+
a
+

+ The lower bound for the initial bracket of the root. +

+
b
+

+ The upper bound for the initial bracket of the root. It is a precondition + that a < b and that a + and b bracket the root to find so that f(a)*f(b) + < 0. +

+
fa
+

+ Optional: the value of f(a). +

+
fb
+

+ Optional: the value of f(b). +

+
tol
+

+ A binary functor that determines the termination condition for the + search for the root. tol is passed the current + brackets at each step, when it returns true then the current brackets + are returned as the result. +

+
max_iter
+

+ The maximum number of function invocations to perform in the search + for the root. On exit max_iter is set to actual + number of function invocations used. +

+
+
+

+

+

+ The final Policy argument + is optional and can be used to control the behaviour of the function: + how it handles errors, what level of precision to use etc. Refer to the + policy documentation for more details. +

+

+

+

+ Returns: a pair of values r that bracket the root + so that: +

+
+f(r.first) * f(r.second) <= 0
+
+

+ and either +

+
+tol(r.first, r.second) == true
+
+

+ or +

+
+max_iter >= m
+
+

+ where m is the initial value of max_iter + passed to the function. +

+

+ In other words, it's up to the caller to verify whether termination occurred + as a result of exceeding max_iter function invocations + (easily done by checking the value of max_iter), rather + than because the termination condition tol was satisfied. +

+
+template <class T>
+struct eps_tolerance
+{
+   eps_tolerance(int bits);
+   bool operator()(const T& a, const T& b)const;
+};
+
+

+ This is the usual termination condition used with these root finding functions. + Its operator() will return true when the relative distance between a + and b is less than twice the machine epsilon for T, + or 21-bits, whichever is the larger. In other words you set bits + to the number of bits of precision you want in the result. The minimal + tolerance of twice the machine epsilon of T is required to ensure that + we get back a bracketing interval: since this must clearly be at least + 1 epsilon in size. +

+
+struct equal_floor
+{
+   equal_floor();
+   template <class T> bool operator()(const T& a, const T& b)const;
+};
+
+

+ This termination condition is used when you want to find an integer result + that is the floor of the true root. It will terminate + as soon as both ends of the interval have the same floor. +

+
+struct equal_ceil
+{
+   equal_ceil();
+   template <class T> bool operator()(const T& a, const T& b)const;
+};
+
+

+ This termination condition is used when you want to find an integer result + that is the ceil of the true root. It will terminate + as soon as both ends of the interval have the same ceil. +

+
+struct equal_nearest_integer
+{
+   equal_nearest_integer();
+   template <class T> bool operator()(const T& a, const T& b)const;
+};
+
+

+ This termination condition is used when you want to find an integer result + that is the closest to the true root. It will terminate + as soon as both ends of the interval round to the same nearest integer. +

+
+ + Implementation +
+

+ The implementation of the bisection algorithm is extremely straightforward + and not detailed here. TOMS algorithm 748 is described in detail in: +

+

+ Algorithm 748: Enclosing Zeros of Continuous Functions, G. E. + Alefeld, F. A. Potra and Yixun Shi, ACM Transactions on Mathematica1 Software, + Vol. 21. No. 3. September 1995. Pages 327-344. +

+

+ The implementation here is a faithful translation of this paper into C++. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html new file mode 100644 index 000000000..f68096d5e --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals1/series_evaluation.html @@ -0,0 +1,194 @@ + + + +Series Evaluation + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/tools/series.hpp>
+
+

+

+
+namespace boost{ namespace math{ namespace tools{
+
+template <class Functor>
+typename Functor::result_type sum_series(Functor& func, int bits);
+
+template <class Functor>
+typename Functor::result_type sum_series(Functor& func, int bits, boost::uintmax_t& max_terms);
+
+template <class Functor, class U>
+typename Functor::result_type sum_series(Functor& func, int bits, U init_value);
+
+template <class Functor, class U>
+typename Functor::result_type sum_series(Functor& func, int bits, boost::uintmax_t& max_terms, U init_value);
+
+template <class Functor>
+typename Functor::result_type kahan_sum_series(Functor& func, int bits);
+
+template <class Functor>
+typename Functor::result_type kahan_sum_series(Functor& func, int bits, boost::uintmax_t& max_terms);
+
+}}} // namespaces
+
+
+ + Description +
+

+ These algorithms are intended for the summation + of infinite series. +

+

+ Each of the algorithms takes a nullary-function object as the first argument: + the function object will be repeatedly invoked to pull successive terms + from the series being summed. +

+

+ The second argument is the number of binary bits of precision required, + summation will stop when the next term is too small to have any effect + on the first bits bits of the result. +

+

+ The optional third argument max_terms sets an upper + limit on the number of terms of the series to evaluate. In addition, on + exit the function will set max_terms to the actual + number of terms of the series that were evaluated: this is particularly + useful for profiling the convergence properties of a new series. +

+

+ The final optional argument init_value is the initial + value of the sum to which the terms of the series should be added. This + is useful in two situations: +

+
    +
  • + Where the first value of the series has a different formula to successive + terms. In this case the first value in the series can be passed as the + last argument and the logic of the function object can then be simplified + to return subsequent terms. +
  • +
  • + Where the series is being added (or subtracted) from some other value: + termination of the series will likely occur much more rapidly if that + other value is passed as the last argument. For example, there are several + functions that can be expressed as 1 - S(z) where + S(z) is an infinite series. In this case, pass -1 as the last argument + and then negate the result of the summation to get the result of 1 + - S(z). +
  • +
+

+ The two kahan_sum_series variants of these algorithms + maintain a carry term that corrects for roundoff error during summation. + They are inspired by the Kahan + Summation Formula that appears in What + Every Computer Scientist Should Know About Floating-Point Arithmetic. + However, it should be pointed out that there are very few series that require + summation in this way. +

+
+ + Example +
+

+ Let's suppose we want to implement log(1+x) via its + infinite series, +

+

+ +

+

+ We begin by writing a small function object to return successive terms + of the series: +

+
+template <class T>
+struct log1p_series
+{
+   // we must define a result_type typedef:
+   typedef T result_type;
+
+   log1p_series(T x)
+      : k(0), m_mult(-x), m_prod(-1){}
+
+   T operator()()
+   {
+      // This is the function operator invoked by the summation
+      // algorithm, the first call to this operator should return
+      // the first term of the series, the second call the second 
+      // term and so on.
+      m_prod *= m_mult;
+      return m_prod / ++k; 
+   }
+
+private:
+   int k;
+   const T m_mult;
+   T m_prod;
+};
+
+

+ Implementing log(1+x) is now fairly trivial: +

+
+template <class T>
+T log1p(T x)
+{
+   // We really should add some error checking on x here!
+   assert(std::fabs(x) < 1);
+   
+   // construct the series functor:
+   log1p_series<T> s(x);
+   // and add it up, with enough digits for full machine precision
+   // plus a couple more for luck.... !
+   return tools::sum_series(s, tools::digits(x) + 2);
+}
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html new file mode 100644 index 000000000..2523f2900 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2.html @@ -0,0 +1,53 @@ + + + +Testing and Development + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html new file mode 100644 index 000000000..b505d3cfe --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/error_test.html @@ -0,0 +1,241 @@ + + + +Relative Error and Testing + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/tools/test.hpp>
+
+

+

+
+template <class T>
+T relative_error(T a, T b);
+
+template <class A, class F1, class F2>
+test_result<see-below> test(const A& a, F1 test_func, F2 expect_func);
+
+
+ + Description +
+
+template <class T>
+T relative_error(T a, T v);
+
+

+ Returns the relative error between a and v + using the usual formula: +

+

+ +

+

+ In addition the value returned is zero if: +

+
    +
  • + Both a and v are infinite. +
  • +
  • + Both a and v are denormalised + numbers or zero. +
  • +
+

+ Otherwise if only one of a and v + is zero then the value returned is 1. +

+
+template <class A, class F1, class F2>
+test_result<see-below> test(const A& a, F1 test_func, F2 expect_func);
+
+

+ This function is used for testing a function against tabulated test data. +

+

+ The return type contains statistical data on the relative errors (max, + mean, variance, and the number of test cases etc), as well as the row of + test data that caused the largest relative error. Public members of type + test_result are: +

+
+

+
+
unsigned + worst()const;
+

+ Returns the row at which the worst error occurred. +

+
T + min()const;
+

+ Returns the smallest relative error found. +

+
T + max()const;
+

+ Returns the largest relative error found. +

+
T + mean()const;
+

+ Returns the mean error found. +

+
boost::uintmax_t + count()const;
+

+ Returns the number of test cases. +

+
T + variance()const;
+

+ Returns the variance of the errors found. +

+
T + variance1()const;
+

+ Returns the unbiased variance of the errors found. +

+
T + rms()const
+

+ Returns the Root Mean Square, or quadratic mean of the errors. +

+
test_result& operator+=(const test_result& + t)
+

+ Combines two test_result's into a single result. +

+
+
+

+ The template parameter of test_result, is the same type as the values in + the two dimensional array passed to function test, + roughly that's A::value_type::value_type. +

+

+ Parameter a is a matrix of test data: and must be + a standard library Sequence type, that contains another Sequence type: + typically it will be a two dimensional instance of boost::array. + Each row of a should contain all the parameters that + are passed to the function under test as well as the expected result. +

+

+ Parameter test_func is the function under test, it + is invoked with each row of test data in a. Typically + type F1 is created with Boost.Lambda: see the example below. +

+

+ Parameter expect_func is a functor that extracts the + expected result from a row of test data in a. Typically + type F2 is created with Boost.Lambda: see the example below. +

+

+ If the function under test returns a non-finite value when a finite result + is expected, or if a gross error is found, then a message is sent to std::cerr, and a call to BOOST_ERROR() made + (which means that including this header requires you use Boost.Test). This + is mainly a debugging/development aid (and a good place for a breakpoint). +

+
+ + Example +
+

+ Suppose we want to test the tgamma and lgamma functions, we can create + a two dimensional matrix of test data, each row is one test case, and contains + three elements: the input value, and the expected results for the tgamma + and lgamma functions respectively. +

+
+static const boost::array<boost::array<TestType, 3>, NumberOfTests> 
+   factorials = {
+      /* big array of test data goes here */
+   };
+
+

+ Now we can invoke the test function to test tgamma: +

+
+using namespace boost::math::tools;
+using namespace boost::lambda;
+
+// get a pointer to the function under test:
+TestType (*funcp)(TestType) = boost::math::tgamma;
+
+// declare something to hold the result:
+test_result<TestType> result;
+//
+// and test tgamma against data:
+//
+result = test(
+   factorials, 
+   bind(funcp, ret<TestType>(_1[0])), // calls tgamma with factorials[row][0]
+   ret<TestType>(_1[1])               // extracts the expected result from factorials[row][1]
+);
+//
+// Print out some results:
+//
+std::cout << "The Mean was " << result.mean() << std::endl;
+std::cout << "The worst error was " << (result.max)() << std::endl;
+std::cout << "The worst error was at row " << result.worst_case() << std::endl;
+//
+// same again with lgamma this time:
+//
+funcp = boost::math::lgamma;
+result = test(
+   factorials, 
+   bind(funcp, ret<TestType>(_1[0])), // calls tgamma with factorials[row][0]
+   ret<TestType>(_1[2])               // extracts the expected result from factorials[row][2]
+);
+//
+// etc ...
+//
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html new file mode 100644 index 000000000..6f0609275 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html @@ -0,0 +1,273 @@ + + + +Minimax Approximations and the Remez Algorithm + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The directory libs/math/minimax contains a command line driven program + for the generation of minimax approximations using the Remez algorithm. + Both polynomial and rational approximations are supported, although the + latter are tricky to converge: it is not uncommon for convergence of rational + forms to fail. No such limitations are present for polynomial approximations + which should always converge smoothly. +

+

+ It's worth stressing that developing rational approximations to functions + is often not an easy task, and one to which many books have been devoted. + To use this tool, you will need to have a reasonable grasp of what the + Remez algorithm is, and the general form of the approximation you want + to achieve. +

+

+ Unless you already familar with the Remez method you should first read + the brief background article + explaining the principals behind the Remez algorithm. +

+

+ The program consists of two parts: +

+
+

+
+
main.cpp
+

+ Contains the command line parser, and all the calls to the Remez code. +

+
f.cpp
+

+ Contains the function to approximate. +

+
+
+

+ Therefore to use this tool, you must modify f.cpp to return the function + to approximate. The tools supports multiple function approximations within + the same compiled program: each as a separate variant: +

+
+NTL::RR f(const NTL::RR& x, int variant);
+
+

+ Returns the value of the function variant at point + x. So if you wish you can just add the function to + approximate as a new variant after the existing examples. +

+

+ In addition to those two files, the program needs to be linked to a patched NTL library to compile. +

+

+ Note that the function f must return the rational + part of the approximation: for example if you are approximating a function + f(x) then it is quite common to use: +

+
+f(x) = g(x)(Y + R(x))
+
+

+ where g(x) is the dominant part of f(x), + Y is some constant, and R(x) + is the rational approximation part, usually optimised for a low absolute + error compared to |Y|. +

+

+ In this case you would define f to return f(x)/g(x) + and then set the y-offset of the approximation to Y + (see command line options below). +

+

+ Many other forms are possible, but in all cases the objective is to split + f(x) into a dominant part that you can evaluate easily + using standard math functions, and a smooth and slowly changing rational + approximation part. Refer to your favourite textbook for more examples. +

+

+ Command line options for the program are as follows: +

+
+

+
+
variant N
+

+ Sets the current function variant to N. This allows multiple functions + that are to be approximated to be compiled into the same executable. + Defaults to 0. +

+
range a b
+

+ Sets the domain for the approximation to the range [a,b], defaults + to [0,1]. +

+
relative
+

+ Sets the Remez code to optimise for relative error. This is the default + at program startup. Note that relative error can only be used if f(x) + has no roots over the range being optimised. +

+
absolute
+

+ Sets the Remez code to optimise for absolute error. +

+
pin [true|false]
+

+ "Pins" the code so that the rational approximation passes + through the origin. Obviously only set this to true + if R(0) must be zero. This is typically used when trying to preserve + a root at [0,0] while also optimising for relative error. +

+
order N D
+

+ Sets the order of the approximation to N in the + numerator and D in the denominator. If D + is zero then the result will be a polynomial approximation. There will + be N+D+2 coefficients in total, the first coefficient of the numerator + is zero if pin was set to true, and the first + coefficient of the denominator is always one. +

+
working-precision N
+

+ Sets the working precision of NTL::RR to N binary + digits. Defaults to 250. +

+
target-precision N
+

+ Sets the precision of printed output to N binary + digits: set to the same number of digits as the type that will be used + to evaluate the approximation. Defaults to 53 (for double precision). +

+
skew val
+

+ "Skews" the initial interpolated control points towards one + end or the other of the range. Positive values skew the initial control + points towards the left hand side of the range, and negative values + towards the right hand side. If an approximation won't converge (a + common situation) try adjusting the skew parameter until the first + step yields the smallest possible error. val should + be in the range [-100,+100], the default is zero. +

+
brake val
+

+ Sets a brake on each step so that the change in the control points + is braked by val%. Defaults to 50, try a higher + value if an approximation won't converge, or a lower value to get speedier + convergence. +

+
x-offset val
+

+ Sets the x-offset to val: the approximation will + be generated for f(x + X) + Y where X is + the x-offset and Y is the y-offset. Defaults to + zero. To avoid rounding errors, take care to specify a value that can + be exactly represented as a floating point number. +

+
y-offset val
+

+ Sets the y-offset to val: the approximation will + be generated for f(x + X) + Y where X is + the x-offset and Y is the y-offset. Defaults to + zero. To avoid rounding errors, take care to specify a value that can + be exactly represented as a floating point number. +

+
y-offset auto
+

+ Sets the y-offset to the average value of f(x) evaluated at the two + endpoints of the range plus the midpoint of the range. The calculated + value is deliberately truncated to float precision + (and should be stored as a float in your code). + The approximation will be generated for f(x + X) + Y where X is + the x-offset and Y is the y-offset. Defaults to + zero. +

+
graph N
+

+ Prints N evaluations of f(x) at evenly spaced points over the range + being optimised. If unspecified then N defaults + to 3. Use to check that f(x) is indeed smooth over the range of interest. +

+
step N
+

+ Performs N steps, or one step if N + is unspecified. After each step prints: the peek error at the extrema + of the error function of the approximation, the theoretical error term + solved for on the last step, and the maximum relative change in the + location of the Chebyshev control points. The approximation is converged + on the minimax solution when the two error terms are (approximately) + equal, and the change in the control points has decreased to a suitably + small value. +

+
test [float|double|long]
+

+ Tests the current approximation at float, double, or long double precision. + Useful to check for rounding errors in evaluating the approximation + at fixed precision. Tests are conducted at the extrema of the error + function of the approximation, and at the zeros of the error function. +

+
test [float|double|long] N
+

+ Tests the current approximation at float, double, or long double precision. + Useful to check for rounding errors in evaluating the approximation + at fixed precision. Tests are conducted at N evenly spaced points over + the range of the approximation. If none of [float|double|long] are + specified then tests using NTL::RR, this can be used to obtain the + error function of the approximation. +

+
rescale a b
+

+ Takes the current Chebeshev control points, and rescales them over + a new interval [a,b]. Sometimes this can be used to obtain starting + control points for an approximation that can not otherwise be converged. +

+
rotate
+

+ Moves one term from the numerator to the denominator, but keeps the + Chebyshev control points the same. Sometimes this can be used to obtain + starting control points for an approximation that can not otherwise + be converged. +

+
info
+

+ Prints out the current approximation: the location of the zeros of + the error function, the location of the Chebyshev control points, the + x and y offsets, and of course the coefficients of the polynomials. +

+
+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html new file mode 100644 index 000000000..8c063b194 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/polynomials.html @@ -0,0 +1,139 @@ + + + +Polynomials + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +
+ + Synopsis +
+

+ +

+
+#include <boost/math/tools/polynomial.hpp>
+
+

+

+
+namespace boost{ namespace math{ namespace tools{
+
+template <class T>
+class polynomial
+{
+public:
+   // typedefs:
+   typedef typename std::vector<T>::value_type value_type;
+   typedef typename std::vector<T>::size_type  size_type;
+
+   // construct:
+   polynomial(){}
+   template <class U>
+   polynomial(const U* data, unsigned order);
+   template <class U>
+   polynomial(const U& point);
+   
+   // access:
+   size_type size()const;
+   size_type degree()const;
+   value_type& operator[](size_type i);
+   const value_type& operator[](size_type i)const;
+
+   // operators:
+   template <class U>
+   polynomial& operator +=(const U& value);
+   template <class U>
+   polynomial& operator -=(const U& value);
+   template <class U>
+   polynomial& operator *=(const U& value);
+   template <class U>
+   polynomial& operator +=(const polynomial<U>& value);
+   template <class U>
+   polynomial& operator -=(const polynomial<U>& value);
+   template <class U>
+   polynomial& operator *=(const polynomial<U>& value);
+};
+
+template <class T>
+polynomial<T> operator + (const polynomial<T>& a, const polynomial<T>& b);
+template <class T>
+polynomial<T> operator - (const polynomial<T>& a, const polynomial<T>& b);
+template <class T>
+polynomial<T> operator * (const polynomial<T>& a, const polynomial<T>& b);
+
+template <class T, class U>
+polynomial<T> operator + (const polynomial<T>& a, const U& b);
+template <class T, class U>
+polynomial<T> operator - (const polynomial<T>& a, const U& b);
+template <class T, class U>
+polynomial<T> operator * (const polynomial<T>& a, const U& b);
+
+template <class U, class T>
+polynomial<T> operator + (const U& a, const polynomial<T>& b);
+template <class U, class T>
+polynomial<T> operator - (const U& a, const polynomial<T>& b);
+template <class U, class T>
+polynomial<T> operator * (const U& a, const polynomial<T>& b);
+
+template <class charT, class traits, class T>
+std::basic_ostream<charT, traits>& operator << 
+   (std::basic_ostream<charT, traits>& os, const polynomial<T>& poly);
+
+}}} // namespaces
+
+
+ + Description +
+

+ This is a fairly trivial class for polynomial manipulation. +

+

+ Implementation is currently of the "naive" variety, with O(N^2) + multiplication for example. This class should not be used in high-performance + computing environments: it is intended for the simple manipulation of small + polynomials, typically generated for special function approximation. +

+

+ Advanced manipulations: the FFT, division, GCD, factorisation etc are not + currently provided. Submissions for these are of course welcome :-) +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html new file mode 100644 index 000000000..0cef156ad --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/test_data.html @@ -0,0 +1,564 @@ + + + +Graphing, Profiling, and Generating Test Data for Special Functions + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The class test_data and + associated helper functions are designed so that in just a few lines of + code you should be able to: +

+
    +
  • + Profile a continued fraction, or infinite series for convergence and + accuracy. +
  • +
  • + Generate csv data from a special function that can be imported into your + favorite graphing program (or spreadsheet) for further analysis. +
  • +
  • + Generate high precision test data. +
  • +
+
+ + Synopsis +
+
+namespace boost{ namespace math{ namespace tools{
+
+enum parameter_type
+{
+   random_in_range = 0,
+   periodic_in_range = 1,
+   power_series = 2,
+   dummy_param = 0x80,
+};
+
+template <class T>
+struct parameter_info;
+
+template <class T>
+parameter_info<T> make_random_param(T start_range, T end_range, int n_points);
+
+template <class T>
+parameter_info<T> make_periodic_param(T start_range, T end_range, int n_points);
+
+template <class T>
+parameter_info<T> make_power_param(T basis, int start_exponent, int end_exponent);
+
+template <class T>
+bool get_user_parameter_info(parameter_info<T>& info, const char* param_name);
+
+template <class T>
+class test_data
+{
+public:
+   typedef std::vector<T> row_type;
+   typedef row_type value_type;
+private:
+   typedef std::set<row_type> container_type;
+public:
+   typedef typename container_type::reference reference;
+   typedef typename container_type::const_reference const_reference;
+   typedef typename container_type::iterator iterator;
+   typedef typename container_type::const_iterator const_iterator;
+   typedef typename container_type::difference_type difference_type;
+   typedef typename container_type::size_type size_type;
+
+   // creation:
+   test_data(){}
+   template <class F>
+   test_data(F func, const parameter_info<T>& arg1);
+
+   // insertion:
+   template <class F>
+   test_data& insert(F func, const parameter_info<T>& arg1);
+
+   template <class F>
+   test_data& insert(F func, const parameter_info<T>& arg1, 
+                     const parameter_info<T>& arg2);
+
+   template <class F>
+   test_data& insert(F func, const parameter_info<T>& arg1, 
+                     const parameter_info<T>& arg2, 
+                     const parameter_info<T>& arg3);
+
+   void clear();
+
+   // access:
+   iterator begin();
+   iterator end();
+   const_iterator begin()const;
+   const_iterator end()const;
+   bool operator==(const test_data& d)const;
+   bool operator!=(const test_data& d)const;
+   void swap(test_data& other);
+   size_type size()const;
+   size_type max_size()const;
+   bool empty()const;
+
+   bool operator < (const test_data& dat)const;
+   bool operator <= (const test_data& dat)const;
+   bool operator > (const test_data& dat)const;
+   bool operator >= (const test_data& dat)const;
+};
+
+template <class charT, class traits, class T>
+std::basic_ostream<charT, traits>& write_csv(
+            std::basic_ostream<charT, traits>& os,
+            const test_data<T>& data);
+
+template <class charT, class traits, class T>
+std::basic_ostream<charT, traits>& write_csv(
+            std::basic_ostream<charT, traits>& os,
+            const test_data<T>& data,
+            const charT* separator);
+
+template <class T>
+std::ostream& write_code(std::ostream& os,
+                         const test_data<T>& data, 
+                         const char* name);
+                         
+}}} // namespaces
+
+
+ + Description +
+

+ This tool is best illustrated with the following series of examples. +

+

+ The functionality of test_data is split into the following parts: +

+
    +
  • + A functor that implements the function for which data is being generated: + this is the bit you have to write. +
  • +
  • + One of more parameters that are to be passed to the functor, these are + described in fairly abstract terms: give me N points distributed like + this etc. +
  • +
  • + The class test_data, that takes the functor and descriptions of the parameters + and computes how ever many output points have been requested, these are + stored in a sorted container. +
  • +
  • + Routines to iterate over the test_data container and output the data + in either csv format, or as C++ source code (as a table using Boost.Array). +
  • +
+
+ + Example + 1: Output Data for Graph Plotting +
+

+ For example, lets say we want to graph the lgamma function between -3 and + 100, one could do this like so: +

+
+#include <boost/math/tools/test_data.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+
+int main()
+{
+   using namespace boost::math::tools;
+   
+   // create an object to hold the data:
+   test_data<double> data;
+   
+   // insert 500 points at uniform intervals between just after -3 and 100:
+   double (*pf)(double) = boost::math::lgamma;
+   data.insert(pf, make_periodic_param(-3.0 + 0.00001, 100.0, 500));
+   
+   // print out in csv format:
+   write_csv(std::cout, data, ", ");
+   return 0;
+}
+
+

+ Which, when plotted, results in: +

+

+ lgamma +

+
+ + Example + 2: Creating Test Data +
+

+ As a second example, let's suppose we want to create highly accurate test + data for a special function. Since many special functions have two or more + independent parameters, it's very hard to effectively cover all of the + possible parameter space without generating gigabytes of data at great + computational expense. A second best approach is to provide the tools by + which a user (or the library maintainer) can quickly generate more data + on demand to probe the function over a particular domain of interest. +

+

+ In this example we'll generate test data for the beta function using NTL::RR at 1000 bit precision. + Rather than call our generic version of the beta function, we'll implement + a deliberately naive version of the beta function using lgamma, and rely + on the high precision of the data type used to get results accurate to + at least 128-bit precision. In this way our test data is independent of + whatever clever tricks we may wish to use inside the our beta function. +

+

+ To start with then, here's the function object that creates the test data: +

+
+#include <boost/math/tools/ntl.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/tools/test_data.hpp>
+#include <fstream>
+
+#include <boost/math/tools/test_data.hpp>
+
+using namespace boost::math::tools;
+
+struct beta_data_generator
+{
+   NTL::RR operator()(NTL::RR a, NTL::RR b)
+   {
+      //
+      // If we throw a domain error then test_data will
+      // ignore this input point. We'll use this to filter
+      // out all cases where a < b since the beta function
+      // is symmetrical in a and b:
+      //
+      if(a < b)
+         throw std::domain_error("");
+         
+      // very naively calculate spots with lgamma:
+      NTL::RR g1, g2, g3;
+      int s1, s2, s3;
+      g1 = boost::math::lgamma(a, &s1);
+      g2 = boost::math::lgamma(b, &s2);
+      g3 = boost::math::lgamma(a+b, &s3);
+      g1 += g2 - g3;
+      g1 = exp(g1);
+      g1 *= s1 * s2 * s3;
+      return g1;
+   }
+};
+
+

+ To create the data, we'll need to input the domains for a and b for which + the function will be tested: the function get_user_parameter_info + is designed for just that purpose. The start of main will look something + like: +

+
+// Set the precision on RR:
+NTL::RR::SetPrecision(1000); // bits.
+NTL::RR::SetOutputPrecision(40); // decimal digits.
+
+parameter_info<NTL::RR> arg1, arg2;
+test_data<NTL::RR> data;
+
+std::cout << "Welcome.\n"
+   "This program will generate spot tests for the beta function:\n"
+   "  beta(a, b)\n\n";
+
+bool cont;
+std::string line;
+
+do{
+   // prompt the user for the domain of a and b to test:
+   get_user_parameter_info(arg1, "a");
+   get_user_parameter_info(arg2, "b");
+   
+   // create the data:
+   data.insert(beta_data_generator(), arg1, arg2);
+   
+   // see if the user want's any more domains tested:
+   std::cout << "Any more data [y/n]?";
+   std::getline(std::cin, line);
+   boost::algorithm::trim(line);
+   cont = (line == "y");
+}while(cont);
+
+
+ + + + + +
[Caution]Caution

+ At this point one potential stumbling block should be mentioned: test_data<>::insert + will create a matrix of test data when there are two or more parameters, + so if we have two parameters and we're asked for a thousand points on + each, that's a million test points in total. Don't + say you weren't warned! +

+

+ There's just one final step now, and that's to write the test data to file: +

+
+std::cout << "Enter name of test data file [default=beta_data.ipp]";
+std::getline(std::cin, line);
+boost::algorithm::trim(line);
+if(line == "")
+   line = "beta_data.ipp";
+std::ofstream ofs(line.c_str());
+write_code(ofs, data, "beta_data");
+
+

+ The format of the test data looks something like: +

+
+#define SC_(x) static_cast<T>(BOOST_JOIN(x, L))
+   static const boost::array<boost::array<T, 3>, 1830>
+   beta_med_data = {
+      SC_(0.4883005917072296142578125),
+      SC_(0.4883005917072296142578125),
+      SC_(3.245912809500479157065104747353807392371), 
+      SC_(3.5808107852935791015625),
+      SC_(0.4883005917072296142578125),
+      SC_(1.007653173802923954909901438393379243537), 
+      /* ... lots of rows skipped */
+};
+
+

+ The first two values in each row are the input parameters that were passed + to our functor and the last value is the return value from the functor. + Had our functor returned a tuple rather than a value, then we would have + had one entry for each element in the tuple in addition to the input parameters. +

+

+ The first #define serves two purposes: +

+
    +
  • + It reduces the file sizes considerably: all those static_cast's + add up to a lot of bytes otherwise (they are needed to suppress compiler + warnings when T is narrower + than a long double). +
  • +
  • + It provides a useful customisation point: for example if we were testing + a user-defined type that has more precision than a long + double we could change it to: +
  • +
+

+ #define SC_(x) lexical_cast<T>(BOOST_STRINGIZE(x)) +

+

+ in order to ensure that no truncation of the values occurs prior to conversion + to T. Note that this isn't + used by default as it's rather hard on the compiler when the table is large. +

+
+ + Example + 3: Profiling a Continued Fraction for Convergence and Accuracy +
+

+ Alternatively, lets say we want to profile a continued fraction for convergence + and error. As an example, we'll use the continued fraction for the upper + incomplete gamma function, the following function object returns the next + aN and bN of the continued fraction each time it's invoked: +

+
+template <class T>
+struct upper_incomplete_gamma_fract
+{
+private:
+   T z, a;
+   int k;
+public:
+   typedef std::pair<T,T> result_type;
+
+   upper_incomplete_gamma_fract(T a1, T z1)
+      : z(z1-a1+1), a(a1), k(0)
+   {
+   }
+
+   result_type operator()()
+   {
+      ++k;
+      z += 2;
+      return result_type(k * (a - k), z);
+   }
+};
+
+

+ We want to measure both the relative error, and the rate of convergence + of this fraction, so we'll write a functor that returns both as a tuple: + class test_data will unpack the tuple for us, and create one column of + data for each element in the tuple (in addition to the input parameters): +

+
+#include <boost/math/tools/test_data.hpp>
+#include <boost/math/tools/test.hpp>
+#include <boost/math/special_functions/gamma.hpp>
+#include <boost/math/tools/ntl.hpp>
+#include <boost/tr1/tuple.hpp>
+
+template <class T>
+struct profile_gamma_fraction
+{
+   typedef std::tr1::tuple<T, T> result_type;
+
+   result_type operator()(T val)
+   {
+      using namespace boost::math::tools;
+      // estimate the true value, using arbitary precision
+      // arithmetic and NTL::RR:
+      NTL::RR rval(val);
+      upper_incomplete_gamma_fract<NTL::RR> f1(rval, rval);
+      NTL::RR true_val = continued_fraction_a(f1, 1000);
+      //
+      // Now get the aproximation at double precision, along with the number of
+      // iterations required:
+      boost::uintmax_t iters = std::numeric_limits<boost::uintmax_t>::max();
+      upper_incomplete_gamma_fract<T> f2(val, val);
+      T found_val = continued_fraction_a(f2, std::numeric_limits<T>::digits, iters);
+      //
+      // Work out the relative error, as measured in units of epsilon:
+      T err = real_cast<T>(relative_error(true_val, NTL::RR(found_val)) / std::numeric_limits<T>::epsilon());
+      //
+      // now just return the results as a tuple:
+      return std::tr1::make_tuple(err, iters);
+   }
+};
+
+

+ Feeding that functor into test_data allows rapid output of csv data, for + whatever type T we may + be interested in: +

+
+int main()
+{
+   using namespace boost::math::tools;
+   // create an object to hold the data:
+   test_data<double> data;
+   // insert 500 points at uniform intervals between just after 0 and 100:
+   data.insert(profile_gamma_fraction<double>(), make_periodic_param(0.01, 100.0, 100));
+   // print out in csv format:
+   write_csv(std::cout, data, ", ");
+   return 0;
+}
+
+

+ This time there's no need to plot a graph, the first few rows are: +

+
+a and z,  Error/epsilon,  Iterations required
+
+0.01,     9723.14,        4726
+1.0099,   9.54818,        87
+2.0098,   3.84777,        40
+3.0097,   0.728358,       25
+4.0096,   2.39712,        21
+5.0095,   0.233263,       16
+
+

+ So it's pretty clear that this fraction shouldn't be used for small values + of a and z. +

+
+ + reference +
+

+

+

+ Most of this tool has been described already in the examples above, we'll + just add the following notes on the non-member functions: +

+
+template <class T>
+parameter_info<T> make_random_param(T start_range, T end_range, int n_points);
+
+

+ Tells class test_data to test n_points random values + in the range [start_range,end_range]. +

+
+template <class T>
+parameter_info<T> make_periodic_param(T start_range, T end_range, int n_points);
+
+

+ Tells class test_data to test n_points evenly spaced + values in the range [start_range,end_range]. +

+
+template <class T>
+parameter_info<T> make_power_param(T basis, int start_exponent, int end_exponent);
+
+

+ Tells class test_data to test points of the form basis + R * + 2expon for each expon in the range [start_exponent, + end_exponent], and R a random number in [0.5, 1]. +

+
+template <class T>
+bool get_user_parameter_info(parameter_info<T>& info, const char* param_name);
+
+

+ Prompts the user for the parameter range and form to use. +

+

+ Finally, if we don't want the parameter to be included in the output, we + can tell test_data by setting it a "dummy parameter": +

+
+parameter_info<double> p = make_random_param(2.0, 5.0, 10);
+p.type |= dummy_param;
+
+

+ This is useful when the functor used transforms the parameter in some way + before passing it to the function under test, usually the functor will + then return both the transformed input and the result in a tuple, so there's + no need for the original pseudo-parameter to be included in program output. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html b/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html new file mode 100644 index 000000000..dc941ea29 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/toolkit/internals_overview.html @@ -0,0 +1,58 @@ + + + +Overview + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ This section contains internal utilities used by the library's implementation + along with tools used in development and testing. These tools have only minimal + documentation, and crucially do not have stable interfaces. +

+

+ There is no doubt that these components can be improved, but they are also + largely incidental to the main purpose of this library. +

+

+ These tools are designed to "just get the job done", and receive + minimal documentation here, in the hopes that they will help stimulate further + submissions to this library. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/using_udt.html b/doc/sf_and_dist/html/math_toolkit/using_udt.html new file mode 100644 index 000000000..43cbf60f7 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/using_udt.html @@ -0,0 +1,55 @@ + + + +Use with User Defined Floating-Point Types + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+ + + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html b/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html new file mode 100644 index 000000000..50986efd0 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/using_udt/archetypes.html @@ -0,0 +1,184 @@ + + + +Conceptual Archetypes and Testing + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ There are several concept archetypes available: +

+

+ +

+
+#include <boost/concepts/std_real_concept.hpp>
+

+

+
+namespace boost{
+namespace math{
+namespace concepts{
+
+class std_real_concept;
+
+}}} // namespaces
+
+

+ std_real_concept is an archetype + for the built-in Real types. +

+

+ The main purpose in providing this type is to verify that standard library + functions are found via a using declaration - bringing those functions into + the current scope - and not just because they happen to be in global scope. +

+

+ In order to ensure that a call to say pow + can be found either via argument dependent lookup, or failing that then in + the std namespace: all calls to standard library functions are unqualified, + with the std:: versions found via a using declaration to make them visible + in the current scope. Unfortunately it's all to easy to forget the using + declaration, and call the double version of the function that happens to + be in the global scope by mistake. +

+

+ For example if the code calls ::pow rather than std::pow, the code will cleanly + compile, but truncation of long doubles to double will cause a significant + loss of precision. In contrast a template instantiated with std_real_concept + will only compile if the all the standard + library functions used have been brought into the current scope with a using + declaration. +

+

+ There is a test program libs/math/test/std_real_concept_check.cpp + that instantiates every template in this library with type std_real_concept to verify it's usage of + standard library functions. +

+

+ +

+
+#include <boost/math/concepts/real_concept.hpp>
+

+

+
+namespace boost{ 
+namespace math{ 
+namespace concepts{
+
+class real_concept;
+
+}}} // namespaces
+
+

+ real_concept is an archetype + for user defined real types, + it declares it's standard library functions in it's own namespace: these + will only be found if they are called unqualified allowing argument dependent + lookup to locate them. In addition this type is useable at runtime: this + allows code that would not otherwise be exercised by the built-in floating + point types to be tested. There is no std::numeric_limits<> support + for this type, since this is not a conceptual requirement for RealType's. +

+

+ NTL RR is an example of a type meeting the requirements that this type models, + but note that use of a thin wrapper class is required: refer to "Using + With NTL - a High-Precision Floating-Point Library". +

+

+ There is no specific test case for type real_concept, + instead, since this type is usable at runtime, each individual test case + as well as testing float, double and long + double, also tests real_concept. +

+

+ +

+
+#include <boost/math/concepts/distribution.hpp>
+

+

+
+namespace boost{
+namespace math{
+namespace concepts{
+
+template <class RealType>
+class distribution_archetype;
+
+template <class Distribution>
+struct DistributionConcept;
+
+}}} // namespaces
+
+

+ The class template distribution_archetype + is a model of the Distribution + concept. +

+

+ The class template DistributionConcept + is a concept checking + class for distribution types. +

+

+ The test program distribution_concept_check.cpp + is responsible for using DistributionConcept + to verify that all the distributions in this library conform to the Distribution concept. +

+

+ The class template DistributionConcept + verifies the existence (but not proper function) of the non-member accessors + required by the Distribution + concept. These are checked by calls like +

+

+ v = pdf(dist, x); // (Result v is ignored). +

+

+ And in addition, those that accept two arguments do the right thing when + the arguments are of different types (the result type is always the same + as the distribution's value_type). (This is implemented by some additional + forwarding-functions in derived_accessors.hpp, so that there is no need for + any code changes. Likewise boilerplate versions of the hazard/chf/coefficient_of_variation + functions are implemented in there too.) +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html b/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html new file mode 100644 index 000000000..a59180ec4 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/using_udt/concepts.html @@ -0,0 +1,1296 @@ + + + +Conceptual Requirements for Real Number Types + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The functions, and statistical distributions in this library can be used + with any type RealType that meets the conceptual requirements + given below. All the built in floating point types will meet these requirements. + User defined types that meet the requirements can also be used. For example, + with a thin wrapper class + one of the types provided with NTL (RR) + can be used. Submissions of binding to other extended precision types would + also be most welcome! +

+

+ The guiding principal behind these requirements, is that a RealType + behaves just like a built in floating point type. +

+
+ + Basic + Arithmetic Requirements +
+

+ These requirements are common to all of the functions in this library. +

+

+ In the following table r is an object of type RealType, cr and + cr2 are objects of type const + RealType, and ca + is an object of type const arithmetic-type (arithmetic types include all the + built in integers and floating point types). +

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

+ Expression +

+
+

+ Result Type +

+
+

+ Notes +

+
+

+ RealType(cr) +

+
+

+ RealType +

+
+

+ RealType is copy constructible. +

+
+

+ RealType(ca) +

+
+

+ RealType +

+
+

+ RealType is copy constructible from the arithmetic types. +

+
+

+ r = + cr +

+
+

+ RealType& +

+
+

+ Assignment operator. +

+
+

+ r = + ca +

+
+

+ RealType& +

+
+

+ Assignment operator from the arithmetic types. +

+
+

+ r += + cr +

+
+

+ RealType& +

+
+

+ Adds cr to r. +

+
+

+ r += + ca +

+
+

+ RealType& +

+
+

+ Adds ar to r. +

+
+

+ r -= + cr +

+
+

+ RealType& +

+
+

+ Subtracts cr from r. +

+
+

+ r -= + ca +

+
+

+ RealType& +

+
+

+ Subtracts ca from r. +

+
+

+ r *= + cr +

+
+

+ RealType& +

+
+

+ Multiplies r by cr. +

+
+

+ r *= + ca +

+
+

+ RealType& +

+
+

+ Multiplies r by ca. +

+
+

+ r /= + cr +

+
+

+ RealType& +

+
+

+ Divides r by cr. +

+
+

+ r /= + ca +

+
+

+ RealType& +

+
+

+ Divides r by ca. +

+
+

+ -r +

+
+

+ RealType +

+
+

+ Unary Negation. +

+
+

+ +r +

+
+

+ RealType& +

+
+

+ Identity Operation. +

+
+

+ cr + + cr2 +

+
+

+ RealType +

+
+

+ Binary Addition +

+
+

+ cr + + ca +

+
+

+ RealType +

+
+

+ Binary Addition +

+
+

+ ca + + cr +

+
+

+ RealType +

+
+

+ Binary Addition +

+
+

+ cr - + cr2 +

+
+

+ RealType +

+
+

+ Binary Subtraction +

+
+

+ cr - + ca +

+
+

+ RealType +

+
+

+ Binary Subtraction +

+
+

+ ca - + cr +

+
+

+ RealType +

+
+

+ Binary Subtraction +

+
+

+ cr * + cr2 +

+
+

+ RealType +

+
+

+ Binary Multiplication +

+
+

+ cr * + ca +

+
+

+ RealType +

+
+

+ Binary Multiplication +

+
+

+ ca * + cr +

+
+

+ RealType +

+
+

+ Binary Multiplication +

+
+

+ cr / + cr2 +

+
+

+ RealType +

+
+

+ Binary Subtraction +

+
+

+ cr / + ca +

+
+

+ RealType +

+
+

+ Binary Subtraction +

+
+

+ ca / + cr +

+
+

+ RealType +

+
+

+ Binary Subtraction +

+
+

+ cr == + cr2 +

+
+

+ bool +

+
+

+ Equality Comparison +

+
+

+ cr == + ca +

+
+

+ bool +

+
+

+ Equality Comparison +

+
+

+ ca == + cr +

+
+

+ bool +

+
+

+ Equality Comparison +

+
+

+ cr != + cr2 +

+
+

+ bool +

+
+

+ Inequality Comparison +

+
+

+ cr != + ca +

+
+

+ bool +

+
+

+ Inequality Comparison +

+
+

+ ca != + cr +

+
+

+ bool +

+
+

+ Inequality Comparison +

+
+

+ cr <= + cr2 +

+
+

+ bool +

+
+

+ Less than equal to. +

+
+

+ cr <= + ca +

+
+

+ bool +

+
+

+ Less than equal to. +

+
+

+ ca <= + cr +

+
+

+ bool +

+
+

+ Less than equal to. +

+
+

+ cr >= + cr2 +

+
+

+ bool +

+
+

+ Greater than equal to. +

+
+

+ cr >= + ca +

+
+

+ bool +

+
+

+ Greater than equal to. +

+
+

+ ca >= + cr +

+
+

+ bool +

+
+

+ Greater than equal to. +

+
+

+ cr < + cr2 +

+
+

+ bool +

+
+

+ Less than comparison. +

+
+

+ cr < + ca +

+
+

+ bool +

+
+

+ Less than comparison. +

+
+

+ ca < + cr +

+
+

+ bool +

+
+

+ Less than comparison. +

+
+

+ cr > + cr2 +

+
+

+ bool +

+
+

+ Greater than comparison. +

+
+

+ cr > + ca +

+
+

+ bool +

+
+

+ Greater than comparison. +

+
+

+ ca > + cr +

+
+

+ bool +

+
+

+ Greater than comparison. +

+
+

+ boost::math::tools::digits<RealType>() +

+
+

+ int +

+
+

+ The number of digits in the significand of RealType. +

+
+

+ boost::math::tools::max_value<RealType>() +

+
+

+ RealType +

+
+

+ The largest representable number by type RealType. +

+
+

+ boost::math::tools::min_value<RealType>() +

+
+

+ RealType +

+
+

+ The smallest representable number by type RealType. +

+
+

+ boost::math::tools::log_max_value<RealType>() +

+
+

+ RealType +

+
+

+ The natural logarithm of the largest representable number by type + RealType. +

+
+

+ boost::math::tools::log_min_value<RealType>() +

+
+

+ RealType +

+
+

+ The natural logarithm of the smallest representable number by type + RealType. +

+
+

+ boost::math::tools::epsilon<RealType>() +

+
+

+ RealType +

+
+

+ The machine epsilon of RealType. +

+
+

+ Note that: +

+
    +
  1. + The functions log_max_value + and log_min_value can be + synthesised from the others, and so no explicit specialisation is required. +
  2. +
  3. + The function epsilon can + be synthesised from the others, so no explicit specialisation is required + provided the precision of RealType does not vary at runtime (see the header + boost/math/bindings/rr.hpp + for an example where the precision does vary at runtime). +
  4. +
  5. + The functions digits, + max_value and min_value, all get synthesised automatically + from std::numeric_limits. However, if numeric_limits is not specialised for + type RealType, then you will get a compiler error when code tries to use + these functions, unless you explicitly specialise + them. For example if the precision of RealType varies at runtime, then + numeric_limits support + may not be appropriate, see boost/math/tools/ntl.hpp + for examples. +
  6. +
+
+ + + + + +
[Warning]Warning
+

+ If std::numeric_limits<> + is not specialized for type RealType + then the default float precision of 6 decimal digits will be used by other + Boost programs including: +

+

+ Boost.Test: giving misleading error messages like +

+

+ "difference between {9.79796} and {9.79796} exceeds 5.42101e-19%". +

+

+ Boost.LexicalCast and Boost.Serialization when converting the number to + a string, causing potentially serious loss of accuracy on output. +

+

+ Although it might seem obvious that RealType should require std::numeric_limits to be specialized, this + is not sensible for NTL::RR + and similar classes where the number of digits is a runtime parameter (where + as for numeric_limits it + has to be fixed at compile time). +

+
+
+ + Standard + Library Support Requirements +
+

+ Many (though not all) of the functions in this library make calls to standard + library functions, the following table summarises the requirements. Note + that most of the functions in this library will only call a small subset + of the functions listed here, so if in doubt whether a user defined type + has enough standard library support to be useable the best advise is to try + it and see! +

+

+ In the following table r is an object of type RealType, cr1 and + cr2 are objects of type const + RealType, and i + is an object of type int. +

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

+ Expression +

+
+

+ Result Type +

+
+

+ fabs(cr1) +

+
+

+ RealType +

+
+

+ abs(cr1) +

+
+

+ RealType +

+
+

+ ceil(cr1) +

+
+

+ RealType +

+
+

+ floor(cr1) +

+
+

+ RealType +

+
+

+ exp(cr1) +

+
+

+ RealType +

+
+

+ pow(cr1, + cr2) +

+
+

+ RealType +

+
+

+ sqrt(cr1) +

+
+

+ RealType +

+
+

+ log(cr1) +

+
+

+ RealType +

+
+

+ frexp(cr1, + &i) +

+
+

+ RealType +

+
+

+ ldexp(cr1, + i) +

+
+

+ RealType +

+
+

+ cos(cr1) +

+
+

+ RealType +

+
+

+ sin(cr1) +

+
+

+ RealType +

+
+

+ asin(cr1) +

+
+

+ RealType +

+
+

+ tan(cr1) +

+
+

+ RealType +

+
+

+ atan(cr1) +

+
+

+ RealType +

+
+

+ Note that the table above lists only those standard library functions known + to be used (or likely to be used in the near future) by this library. The + following functions: acos, + atan2, fmod, + cosh, sinh, + tanh, modf + and log10 are not currently + used, but may be if further special functions are added. +

+

+ In addition, for efficient and accurate results, a Lanczos + approximation is highly desirable. You may be able to adapt an existing + approximation from boost/math/special_functions/lanczos.hpp + or libs/math/tools/ntl_rr_lanczos.hpp: + you will need change static_cast's to lexical_cast's, and the constants to + strings (in order to ensure the coefficients aren't + truncated to long double) and then specialise lanczos_traits + for type T. Otherwise you may have to hack libs/math/tools/lanczos_generator.cpp + to find a suitable approximation for your RealType. The code will still compile + if you don't do this, but both accuracy and efficiency will be greatly compromised + in any function that makes use of the gamma/beta/erf family of functions. +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html b/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html new file mode 100644 index 000000000..fec1930a1 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/using_udt/dist_concept.html @@ -0,0 +1,396 @@ + + + +Conceptual Requirements for Distribution Types + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ A DistributionType is a type that implements the following + conceptual requirements, and encapsulates a statistical distribution. +

+

+ Please note that this documentation should not be used as a substitute for + the reference documentation, + and tutorial of the statistical + distributions. +

+

+ In the following table, d is an object of type DistributionType, cd + is an object of type const DistributionType and cr + is an object of a type convertible to RealType. +

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

+ Expression +

+
+

+ Result Type +

+
+

+ Notes +

+
+

+ DistributionType::value_type +

+
+

+ RealType +

+
+

+ The real-number type RealType upon which the + distribution operates. +

+
+

+ DistributionType::policy_type +

+
+

+ RealType +

+
+

+ The Policy to use when + evaluating functions that depend on this distribution. +

+
+

+ d = cd +

+
+

+ Distribution& +

+
+

+ Distribution types are assignable. +

+
+

+ Distribution(cd) +

+
+

+ Distribution +

+
+

+ Distribution types are copy constructible. +

+
+

+ pdf(cd, cr) +

+
+

+ RealType +

+
+

+ Returns the PDF of the distribution. +

+
+

+ cdf(cd, cr) +

+
+

+ RealType +

+
+

+ Returns the CDF of the distribution. +

+
+

+ cdf(complement(cd, cr)) +

+
+

+ RealType +

+
+

+ Returns the complement of the CDF of the distribution, the same as: + 1-cdf(cd, cr) +

+
+

+ quantile(cd, cr) +

+
+

+ RealType +

+
+

+ Returns the quantile of the distribution. +

+
+

+ quantile(complement(cd, cr)) +

+
+

+ RealType +

+
+

+ Returns the quantile of the distribution, starting from the complement + of the probability, the same as: quantile(cd, 1-cr) +

+
+

+ chf(cd, cr) +

+
+

+ RealType +

+
+

+ Returns the cumulative hazard function of the distribution. +

+
+

+ hazard(cd, cr) +

+
+

+ RealType +

+
+

+ Returns the hazard function of the distribution. +

+
+

+ kurtosis(cd) +

+
+

+ RealType +

+
+

+ Returns the kurtosis of the distribution. +

+
+

+ kurtosis_excess(cd) +

+
+

+ RealType +

+
+

+ Returns the kurtosis excess of the distribution. +

+
+

+ mean(cd) +

+
+

+ RealType +

+
+

+ Returns the mean of the distribution. +

+
+

+ mode(cd) +

+
+

+ RealType +

+
+

+ Returns the mode of the distribution. +

+
+

+ skewness(cd) +

+
+

+ RealType +

+
+

+ Returns the skewness of the distribution. +

+
+

+ standard_deviation(cd) +

+
+

+ RealType +

+
+

+ Returns the standard deviation of the distribution. +

+
+

+ variance(cd) +

+
+

+ RealType +

+
+

+ Returns the variance of the distribution. +

+
+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html b/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html new file mode 100644 index 000000000..de4391029 --- /dev/null +++ b/doc/sf_and_dist/html/math_toolkit/using_udt/use_ntl.html @@ -0,0 +1,68 @@ + + + +Using With NTL - a High-Precision Floating-Point Library + + + + + + + + + + + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMore
+
+
+PrevUpHomeNext +
+
+ +

+ The special functions and tools in this library can be used with NTL::RR + (an arbitrary precision number type), via the bindings in boost/math/bindings/rr.hpp. + See also NTL: A Library for doing Number + Theory by Victor Shoup +

+

+ Unfortunately NTL::RR doesn't quite satisfy our conceptual + requirements, so there is a very thin wrapper class boost::math::ntl::RR defined in boost/math/bindings/rr.hpp + that you should use in place of NTL::RR. The + class is intended to be a drop-in replacement for the "real" NTL::RR + that adds some syntactic sugar to keep this library happy, plus some of the + standard library functions not implemented in NTL. +

+

+ Finally there is a high precision Lanczos + approximation suitable for use with boost::math::ntl::RR, used at 1000-bit precision in libs/math/tools/ntl_rr_lanczos.hpp. + The approximation has a theoretical precision of > 90 decimal digits, + and an experimental precision of > 100 decimal digits. To use that approximation, + just include that header before any of the special function headers (if you + don't use it, you'll get a slower, but fully generic implementation for all + of the gamma-like functions). +

+
+ + + +
+
+
+PrevUpHomeNext +
+ + diff --git a/doc/sf_and_dist/html4_symbols.qbk b/doc/sf_and_dist/html4_symbols.qbk new file mode 100644 index 000000000..43b472863 --- /dev/null +++ b/doc/sf_and_dist/html4_symbols.qbk @@ -0,0 +1,149 @@ +[/ Symbols and Greek letters (about 120) from HTML4 ] +[/ File HTML4_symbols.qbk] +[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html] +[/ http://www.alanwood.net/demos/ent4_frame.html] +[/ All (except 2 angle brackets) show OK on Firefox 2.0] + +[/ See also Latin-1 aka Western (ISO-8859-1) in latin1_symbols.qbk] +[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html] + +[/ Also some miscellaneous math charaters added to this list - see the end.] + +[/ To use, enclose the template name in square brackets.] + +[template fnof[]'''ƒ'''] [/ ƒ Latin small f with hook = function = florin] +[template Alpha[]'''Α'''] [/ ? Greek capital letter alpha] +[template Beta[]'''Β'''] [/ ? Greek capital letter beta] +[template Gamma[]'''Γ'''] [/ G Greek capital letter gamma] +[template Delta[]'''Δ'''] [/ ? Greek capital letter delta] +[template Epsilon[]'''Ε'''] [/ ? Greek capital letter epsilon] +[template Zeta[]'''Ζ'''] [/ ? Greek capital letter zeta] +[template Eta[]'''Η'''] [/ ? Greek capital letter eta] +[template Theta[]'''Θ'''] [/ T Greek capital letter theta] +[template Iota[]'''Ι'''] [/ ? Greek capital letter iota] +[template Kappa[]'''Κ'''] [/ ? Greek capital letter kappa] +[template Lambda[]'''Λ'''] [/ ? Greek capital letter lambda] +[template Mu[]'''Μ'''] [/ ? Greek capital letter mu] +[template Nu[]'''Ν'''] [/ ? Greek capital letter nu] +[template Xi[]'''Ξ'''] [/ ? Greek capital letter xi] +[template Omicron[]'''Ο'''] [/ ? Greek capital letter omicron] +[template Pi[]'''Π'''] [/ ? Greek capital letter pi] +[template Rho[]'''Ρ'''] [/ ? Greek capital letter rho] +[template Sigma[]'''Σ'''] [/ S Greek capital letter sigma] +[template Tau[]'''Τ'''] [/ ? Greek capital letter tau] +[template Upsilon[]'''Υ'''] [/ ? Greek capital letter upsilon] +[template Phi[]'''Φ'''] [/ F Greek capital letter phi] +[template Chi[]'''Χ'''] [/ ? Greek capital letter chi] +[template Psi[]'''Ψ'''] [/ ? Greek capital letter psi] +[template Omega[]'''Ω'''] [/ O Greek capital letter omega] +[template alpha[]'''α'''] [/ a Greek small letter alpha] +[template beta[]'''β'''] [/ ß Greek small letter beta] +[template gamma[]'''γ'''] [/ ? Greek small letter gamma] +[template delta[]'''δ'''] [/ d Greek small letter delta] +[template epsilon[]'''ε'''] [/ e Greek small letter epsilon] +[template zeta[]'''ζ'''] [/ ? Greek small letter zeta] +[template eta[]'''η'''] [/ ? Greek small letter eta] +[template theta[]'''θ'''] [/ ? Greek small letter theta] +[template iota[]'''ι'''] [/ ? Greek small letter iota] +[template kappa[]'''κ'''] [/ ? Greek small letter kappa] +[template lambda[]'''λ'''] [/ ? Greek small letter lambda] +[template mu[]'''μ'''] [/ µ Greek small letter mu] +[template nu[]'''ν'''] [/ ? Greek small letter nu] +[template xi[]'''ξ'''] [/ ? Greek small letter xi] +[template omicron[]'''ο'''] [/ ? Greek small letter omicron] +[template pi[]'''π'''] [/ p Greek small letter pi] +[template rho[]'''ρ'''] [/ ? Greek small letter rho] +[template sigmaf[]'''ς'''] [/ ? Greek small letter final sigma] +[template sigma[]'''σ'''] [/ s Greek small letter sigma] +[template tau[]'''τ'''] [/ t Greek small letter tau] +[template upsilon[]'''υ'''] [/ ? Greek small letter upsilon] +[template phi[]'''φ'''] [/ f Greek small letter phi] +[template chi[]'''χ'''] [/ ? Greek small letter chi] +[template psi[]'''ψ'''] [/ ? Greek small letter psi] +[template omega[]'''ω'''] [/ ? Greek small letter omega] +[template thetasym[]'''ϑ'''] [/ ? Greek small letter theta symbol] +[template upsih[]'''ϒ'''] [/ ? Greek upsilon with hook symbol] +[template piv[]'''ϖ'''] [/ ? Greek pi symbol] +[template bull[]'''•'''] [/ • bullet = black small circle] +[template hellip[]'''…'''] [/ … horizontal ellipsis = three dot leader] +[template prime[]'''′'''] [/ ' prime = minutes = feet] +[template Prime[]'''″'''] [/ ? double prime = seconds = inches] +[template oline[]'''‾'''] [/ ? overline = spacing overscore] +[template frasl[]'''⁄'''] [/ / fraction slash] +[template weierp[]'''℘'''] [/ P script capital P = power set = Weierstrass p] +[template image[]'''ℑ'''] [/ I blackletter capital I = imaginary part] +[template real[]'''ℜ'''] [/ R blackletter capital R = real part symbol] +[template trade[]'''™'''] [/ ™ trade mark sign] +[template alefsym[]'''ℵ'''] [/ ? alef symbol = first transfinite cardinal] +[template larr[]'''←'''] [/ ? leftwards arrow] +[template uarr[]'''↑'''] [/ ? upwards arrow] +[template rarr[]'''→'''] [/ ? rightwards arrow] +[template darr[]'''↓'''] [/ ? downwards arrow] +[template harr[]'''↔'''] [/ ? left right arrow] +[template crarr[]'''↵'''] [/ ? downwards arrow with corner leftwards = CR] +[template lArr[]'''⇐'''] [/ ? leftwards double arrow] +[template uArr[]'''⇑'''] [/ ? upwards double arrow] +[template rArr[]'''⇒'''] [/ ? rightwards double arrow] +[template dArr[]'''⇓'''] [/ ? downwards double arrow] +[template hArr[]'''⇔'''] [/ ? left right double arrow] +[template forall[]'''∀'''] [/ ? for all] +[template part[]'''∂'''] [/ ? partial differential] +[template exist[]'''∃'''] [/ ? there exists] +[template empty[]'''∅'''] [/ Ø empty set = null set = diameter] +[template nabla[]'''∇'''] [/ ? nabla = backward difference] +[template isin[]'''∈'''] [/ ? element of] +[template notin[]'''∉'''] [/ ? not an element of] +[template ni[]'''∋'''] [/ ? contains as member] +[template prod[]'''∏'''] [/ ? n-ary product = product sign] +[template sum[]'''∑'''] [/ ? n-ary sumation] +[template minus[]'''−'''] [/ - minus sign] +[template lowast[]'''∗'''] [/ * asterisk operator] +[template radic[]'''√'''] [/ v square root = radical sign] +[template prop[]'''∝'''] [/ ? proportional to] +[template infin[]'''∞'''] [/ 8 infinity] +[template ang[]'''∠'''] [/ ? angle] +[template and[]'''∧'''] [/ ? logical and = wedge] +[template or[]'''∨'''] [/ ? logical or = vee] +[template cap[]'''∩'''] [/ n intersection = cap] +[template cup[]'''∪'''] [/ ? union = cup] +[template int[]'''∫'''] [/ ? integral] +[template there4[]'''∴'''] [/ ? therefore] +[template sim[]'''∼'''] [/ ~ tilde operator = varies with = similar to] +[template cong[]'''≅'''] [/ ? approximately equal to] +[template asymp[]'''≈'''] [/ ˜ almost equal to = asymptotic to] +[template ne[]'''≠'''] [/ ? not equal to] +[template equiv[]'''≡'''] [/ = identical to] +[template le[]'''≤'''] [/ = less-than or equal to] +[template ge[]'''≥'''] [/ = greater-than or equal to] +[template subset[]'''⊂'''] [/ ? subset of] +[template superset[]'''⊃'''] [/ ? superset of] +[template nsubset[]'''⊄'''] [/ ? not a subset of] +[template sube[]'''⊆'''] [/ ? subset of or equal to] +[template supe[]'''⊇'''] [/ ? superset of or equal to] +[template oplus[]'''⊕'''] [/ ? circled plus = direct sum] +[template otimes[]'''⊗'''] [/ ? circled times = vector product] +[template perp[]'''⊥'''] [/ ? up tack = orthogonal to = perpendicular] +[template sdot[]'''⋅'''] [/ · dot operator] +[template lceil[]'''⌈'''] [/ ? left ceiling = APL upstile] +[template rceil[]'''⌉'''] [/ ? right ceiling] +[template lfloor[]'''⌊'''] [/ ? left floor = APL downstile] +[template rfloor[]'''⌋'''] [/ ? right floor] +[template lang[]'''〈'''] [/ < left-pointing angle bracket = bra (Firefox shows ?)] +[template rang[]'''〉'''] [/ > right-pointing angle bracket = ket (Firefox shows ?)] +[template loz[]'''◊'''] [/ ? lozenge] +[template spades[]'''♠'''] [/ ? black spade suit] +[template clubs[]'''♣'''] [/ ? black club suit = shamrock] +[template hearts[]'''♥'''] [/ ? black heart suit = valentine] +[template diams[]'''♦'''] [/ ? black diamond suit] + +[/ Other symbols, not in the HTML4 list:] +[template space[]''' '''] +[template plusminus[]'''±'''] [/ ? plus or minus sign] + +[/ +Copyright 2007 Paul A. Bristow. +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/ibeta.qbk b/doc/sf_and_dist/ibeta.qbk new file mode 100644 index 000000000..73a1eb330 --- /dev/null +++ b/doc/sf_and_dist/ibeta.qbk @@ -0,0 +1,294 @@ +[section:ibeta_function Incomplete Beta Functions] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` ibeta(T1 a, T2 b, T3 x); + + template + ``__sf_result`` ibeta(T1 a, T2 b, T3 x, const ``__Policy``&); + + template + ``__sf_result`` ibetac(T1 a, T2 b, T3 x); + + template + ``__sf_result`` ibetac(T1 a, T2 b, T3 x, const ``__Policy``&); + + template + ``__sf_result`` beta(T1 a, T2 b, T3 x); + + template + ``__sf_result`` beta(T1 a, T2 b, T3 x, const ``__Policy``&); + + template + ``__sf_result`` betac(T1 a, T2 b, T3 x); + + template + ``__sf_result`` betac(T1 a, T2 b, T3 x, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +There are four [@http://en.wikipedia.org/wiki/Incomplete_beta_function incomplete beta functions] +: two are normalised versions (also known as ['regularized] beta functions) +that return values in the range [0, 1], and two are non-normalised and +return values in the range [0, __beta(a, b)]. Users interested in statistical +applications should use the normalised (or +[@http://mathworld.wolfram.com/RegularizedBetaFunction.html regularized] +) versions (ibeta and ibetac). + +All of these functions require /a > 0/, /b > 0/ and /0 <= x <= 1/. + +The return type of these functions is computed using the __arg_pomotion_rules +when T1, T2 and T3 are different types. + +[optional_policy] + + template + ``__sf_result`` ibeta(T1 a, T2 b, T3 x); + + template + ``__sf_result`` ibeta(T1 a, T2 b, T3 x, const ``__Policy``&); + +Returns the normalised incomplete beta function of a, b and x: + +[equation ibeta3] + +[$../graphs/ibeta.png] + + template + ``__sf_result`` ibetac(T1 a, T2 b, T3 x); + + template + ``__sf_result`` ibetac(T1 a, T2 b, T3 x, const ``__Policy``&); + +Returns the normalised complement of the incomplete beta function of a, b and x: + +[equation ibeta4] + + template + ``__sf_result`` beta(T1 a, T2 b, T3 x); + + template + ``__sf_result`` beta(T1 a, T2 b, T3 x, const ``__Policy``&); + +Returns the full (non-normalised) incomplete beta function of a, b and x: + +[equation ibeta1] + + template + ``__sf_result`` betac(T1 a, T2 b, T3 x); + + template + ``__sf_result`` betac(T1 a, T2 b, T3 x, const ``__Policy``&); + +Returns the full (non-normalised) complement of the incomplete beta function of a, b and x: + +[equation ibeta2] + +[h4 Accuracy] + +The following tables give peak and mean relative errors in over various domains of +a, b and x, along with comparisons to the __gsl and __cephes libraries. +Note that only results for the widest floating-point type on the system are given as +narrower types have __zero_error. + +Note that the results for 80 and 128-bit long doubles are noticeably higher than +for doubles: this is because the wider exponent range of these types allow +more extreme test cases to be tested. For example expected results that +are zero at double precision, may be finite but exceptionally small with +the wider exponent range of the long double types. + +[table Errors In the Function ibeta(a,b,x) +[[Significand Size] [Platform and Compiler] [0 < a,b < 10 + +and + +0 < x < 1] [0 < a,b < 100 + +and + +0 < x < 1][1x10[super -5] < a,b < 1x10[super 5] + +and + +0 < x < 1]] +[[53] [Win32, Visual C++ 8] + [Peak=42.3 Mean=2.9 + +(GSL Peak=682 Mean=32.5) + +(__cephes Peak=42.7 Mean=7.0)] + [Peak=108 Mean=16.6 + +(GSL Peak=690 Mean=151) + +(__cephes Peak=1545 Mean=218)] + [Peak=4x10[super 3][space] Mean=203 + +(GSL Peak~3x10[super 5][space] Mean~2x10[super 4][space]) + +(__cephes Peak~5x10[super 5][space] Mean~2x10[super 4][space])]] +[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=21.9 Mean=3.1] + [Peak=270.7 Mean=26.8] [Peak~5x10[super 4][space] Mean=3x10[super 3][space] ]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=15.4 Mean=3.0] [Peak=112.9 Mean=14.3] + [Peak~5x10[super 4][space] Mean=3x10[super 3][space]]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=20.9 Mean=2.6] [Peak=88.1 Mean=14.3] + [Peak~2x10[super 4][space] Mean=1x10[super 3][space] ]] +] + +[table Errors In the Function ibetac(a,b,x) +[[Significand Size] [Platform and Compiler] [0 < a,b < 10 + +and + +0 < x < 1] [0 < a,b < 100 + +and + +0 < x < 1][1x10[super -5] < a,b < 1x10[super 5] + +and + +0 < x < 1]] +[[53] [Win32, Visual C++ 8] [Peak=13.9 Mean=2.0] + [Peak=56.2 Mean=14] [Peak=3x10[super 3][space] Mean=159]] +[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=21.1 Mean=3.6] + [Peak=221.7 Mean=25.8] + [Peak~9x10[super 4][space] Mean=3x10[super 3][space] ]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=10.6 Mean=2.2] + [Peak=73.9 Mean=11.9] + [Peak~9x10[super 4][space] Mean=3x10[super 3][space] ]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=9.9 Mean=2.6] + [Peak=117.7 Mean=15.1] + [Peak~3x10[super 4][space] Mean=1x10[super 3][space] ]] +] + +[table Errors In the Function beta(a, b, x) +[[Significand Size] [Platform and Compiler] [0 < a,b < 10 + +and + +0 < x < 1] [0 < a,b < 100 + +and + +0 < x < 1][1x10[super -5] < a,b < 1x10[super 5] + +and + +0 < x < 1]] +[[53] [Win32, Visual C++ 8] [Peak=39 Mean=2.9] [Peak=91 Mean=12.7] [Peak=635 Mean=25]] +[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=26 Mean=3.6] [Peak=180.7 Mean=30.1] [Peak~7x10[super 4][space] Mean=3x10[super 3][space] ]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=13 Mean=2.4] [Peak=67.1 Mean=13.4] [Peak~7x10[super 4][space] Mean=3x10[super 3][space] ]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=27.3 Mean=3.6] [Peak=49.8 Mean=9.1] [Peak~6x10[super 4][space] Mean=3x10[super 3][space] ]] +] + +[table Errors In the Function betac(a,b,x) +[[Significand Size] [Platform and Compiler] [0 < a,b < 10 + +and + +0 < x < 1] [0 < a,b < 100 + +and + +0 < x < 1][1x10[super -5] < a,b < 1x10[super 5] + +and + +0 < x < 1]] +[[53] [Win32, Visual C++ 8] [Peak=12.0 Mean=2.4] [Peak=91 Mean=15] [Peak=4x10[super 3][space] Mean=113]] +[[64] [Redhat Linux IA32, gcc-3.4.4] [Peak=19.8 Mean=3.8] [Peak=295.1 Mean=33.9] [Peak~1x10[super 5][space] Mean=5x10[super 3][space] ]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=11.2 Mean=2.4] [Peak=63.5 Mean=13.6] [Peak~1x10[super 5][space] Mean=5x10[super 3][space] ]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=15.6 Mean=3.5] [Peak=39.8 Mean=8.9] [Peak~9x10[super 4][space] Mean=5x10[super 3][space] ]] +] + +[h4 Testing] + +There are two sets of tests: spot tests compare values taken from +[@http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=BetaRegularized Mathworld's online function evaluator] +with this implementation: they provide a basic "sanity check" +for the implementation, with one spot-test in each implementation-domain +(see implementation notes below). + +Accuracy tests use data generated at very high precision +(with [@http://shoup.net/ntl/doc/RR.txt NTL RR class] set at 1000-bit precision), +using the "textbook" continued fraction representation (refer to the first continued +fraction in the implementation discussion below). +Note that this continued fraction is /not/ used in the implementation, +and therefore we have test data that is fully independent of the code. + +[h4 Implementation] + +This implementation is closely based upon +[@http://portal.acm.org/citation.cfm?doid=131766.131776 "Algorithm 708; Significant digit computation of the incomplete beta function ratios", DiDonato and Morris, ACM, 1992.] + +All four of these functions share a common implementation: this is passed both +x and y, and can return either p or q where these are related by: + +[equation ibeta_inv5] + +so at any point we can swap a for b, x for y and p for q if this results in +a more favourable position. Generally such swaps are performed so that we always +compute a value less than 0.9: when required this can then be subtracted from 1 +without undue cancellation error. + +The following continued fraction representation is found in many textbooks +but is not used in this implementation - it's both slower and less accurate than +the alternatives - however it is used to generate test data: + +[equation ibeta5] + +The following continued fraction is due to [@http://portal.acm.org/citation.cfm?doid=131766.131776 Didonato and Morris], +and is used in this implementation when a and b are both greater than 1: + +[equation ibeta6] + +For smallish b and x then a series representation can be used: + +[equation ibeta7] + +When b << a then the transition from 0 to 1 occurs very close to x = 1 +and some care has to be taken over the method of computation, in that case +the following series representation is used: + +[equation ibeta8] +[/[equation ibeta9]] + +Where Q(a,x) is an [@http://functions.wolfram.com/GammaBetaErf/Gamma2/ incomplete gamma function]. +Note that this method relies +on keeping a table of all the p[sub n ] previously computed, which does limit +the precision of the method, depending upon the size of the table used. + +When /a/ and /b/ are both small integers, then we can relate the incomplete +beta to the binomial distribution and use the following finite sum: + +[equation ibeta12] + +Finally we can sidestep difficult areas, or move to an area with a more +efficient means of computation, by using the duplication formulae: + +[equation ibeta10] + +[equation ibeta11] + +The domains of a, b and x for which the various methods are used are identical +to those described in the +[@http://portal.acm.org/citation.cfm?doid=131766.131776 Didonato and Morris TOMS 708 paper]. + +[endsect][/section:ibeta_function The Incomplete Beta Function] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/ibeta_inv.qbk b/doc/sf_and_dist/ibeta_inv.qbk new file mode 100644 index 000000000..09d8b5fc1 --- /dev/null +++ b/doc/sf_and_dist/ibeta_inv.qbk @@ -0,0 +1,352 @@ +[section:ibeta_inv_function The Incomplete Beta Function Inverses] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p); + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, const ``__Policy``&); + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py); + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py, const ``__Policy``&); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, const ``__Policy``&); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py, const ``__Policy``&); + + template + ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p); + + template + ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p, const ``__Policy``&); + + template + ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 q); + + template + ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 q, const ``__Policy``&); + + template + ``__sf_result`` ibeta_invb(T1 a, T2 x, T3 p); + + template + ``__sf_result`` ibeta_invb(T1 a, T2 x, T3 p, const ``__Policy``&); + + template + ``__sf_result`` ibetac_invb(T1 a, T2 x, T3 q); + + template + ``__sf_result`` ibetac_invb(T1 a, T2 x, T3 q, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + + +There are six [@http://functions.wolfram.com/GammaBetaErf/ incomplete beta function inverses] +which allow you solve for +any of the three parameters to the incomplete beta, starting from either +the result of the incomplete beta (p) or its complement (q). + +[optional_policy] + +[tip When people normally talk about the inverse of the incomplete +beta function, they are talking about inverting on parameter /x/. +These are implemented here as ibeta_inv and ibeta_inv, and are by +far the most efficient of the inverses presented here. + +The inverses on the /a/ and /b/ parameters find use in some statistical +applications, but have to be computed by rather brute force numerical +techniques and are consequently several times slower. +These are implemented here as ibeta_inva and ibeta_invb, +and complement versions ibetac_inva and ibetac_invb.] + +The return type of these functions is computed using the __arg_pomotion_rules +when called with arguments T1...TN of different types. + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p); + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, const ``__Policy``&); + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py); + + template + ``__sf_result`` ibeta_inv(T1 a, T2 b, T3 p, T4* py, const ``__Policy``&); + +Returns a value /x/ such that: `p = ibeta(a, b, x);` +and sets `*py = 1 - x` when the `py` parameter is provided and is non-null. +Note that internally this function computes whichever is the smaller of +`x` and `1-x`, and therefore the value assigned to `*py` is free from +cancellation errors. That means that even if the function returns `1`, the +value stored in `*py` may be non-zero, albeit very small. + +Requires: /a,b > 0/ and /0 <= p <= 1/. + +[optional_policy] + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, const ``__Policy``&); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py); + + template + ``__sf_result`` ibetac_inv(T1 a, T2 b, T3 q, T4* py, const ``__Policy``&); + +Returns a value /x/ such that: `q = ibetac(a, b, x);` +and sets `*py = 1 - x` when the `py` parameter is provided and is non-null. +Note that internally this function computes whichever is the smaller of +`x` and `1-x`, and therefore the value assigned to `*py` is free from +cancellation errors. That means that even if the function returns `1`, the +value stored in `*py` may be non-zero, albeit very small. + +Requires: /a,b > 0/ and /0 <= q <= 1/. + +[optional_policy] + + template + ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p); + + template + ``__sf_result`` ibeta_inva(T1 b, T2 x, T3 p, const ``__Policy``&); + +Returns a value /a/ such that: `p = ibeta(a, b, x);` + +Requires: /b > 0/, /0 < x < 1/ and /0 <= p <= 1/. + +[optional_policy] + + template + ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 p); + + template + ``__sf_result`` ibetac_inva(T1 b, T2 x, T3 p, const ``__Policy``&); + +Returns a value /a/ such that: `q = ibetac(a, b, x);` + +Requires: /b > 0/, /0 < x < 1/ and /0 <= q <= 1/. + +[optional_policy] + + template + ``__sf_result`` ibeta_invb(T1 b, T2 x, T3 p); + + template + ``__sf_result`` ibeta_invb(T1 b, T2 x, T3 p, const ``__Policy``&); + +Returns a value /b/ such that: `p = ibeta(a, b, x);` + +Requires: /a > 0/, /0 < x < 1/ and /0 <= p <= 1/. + +[optional_policy] + + template + ``__sf_result`` ibetac_invb(T1 b, T2 x, T3 p); + + template + ``__sf_result`` ibetac_invb(T1 b, T2 x, T3 p, const ``__Policy``&); + +Returns a value /b/ such that: `q = ibetac(a, b, x);` + +Requires: /a > 0/, /0 < x < 1/ and /0 <= q <= 1/. + +[optional_policy] + +[h4 Accuracy] + +The accuracy of these functions should closely follow that +of the regular forward incomplete beta functions. However, +note that in some parts of their domain, these functions can +be extremely sensitive to changes in input, particularly when +the argument /p/ (or it's complement /q/) is very close to `0` or `1`. + +[h4 Testing] + +There are two sets of tests: + +* Basic sanity checks attempt to "round-trip" from +/a, b/ and /x/ to /p/ or /q/ and back again. These tests have quite +generous tolerances: in general both the incomplete beta and its +inverses change so rapidly, that round tripping to more than a couple +of significant digits isn't possible. This is especially true when +/p/ or /q/ is very near one: in this case there isn't enough +"information content" in the input to the inverse function to get +back where you started. +* Accuracy checks using high precision test values. These measure +the accuracy of the result, given exact input values. + +[h4 Implementation of ibeta_inv and ibetac_inv] + +These two functions share a common implementation. + +First an initial approximation to x is computed then the +last few bits are cleaned up using +[@http://en.wikipedia.org/wiki/Simple_rational_approximation Halley iteration]. +The iteration limit is set to 1/2 of the number of bits in T, which by experiment is +sufficient to ensure that the inverses are at least as accurate as the normal +incomplete beta functions. Up to 5 iterations may be +required in extreme cases, although normally only one or two are required. +Further, the number of iterations required decreases with increasing /a/ and +/b/ (which generally form the more important use cases). + +The initial guesses used for iteration are obtained as follows: + +Firstly recall that: + +[equation ibeta_inv5] + +We may wish to start from either p or q, and to calculate either x or y. +In addition at +any stage we can exchange a for b, p for q, and x for y if it results in a +more manageable problem. + +For `a+b >= 5` the initial guess is computed using the methods described in: + +Asymptotic Inversion of the Incomplete Beta Function, +by N. M. [@http://homepages.cwi.nl/~nicot/ Temme]. +Journal of Computational and Applied Mathematics 41 (1992) 145-157. + +The nearly symmetrical case (section 2 of the paper) is used for + +[equation ibeta_inv2] + +and involves solving the inverse error function first. The method is accurate +to at least 2 decimal digits when [^a = 5] rising to at least 8 digits when +[^a = 10[super 5]]. + +The general error function case (section 3 of the paper) is used for + +[equation ibeta_inv3] + +and again expresses the inverse incomplete beta in terms of the +inverse of the error function. The method is accurate to at least +2 decimal digits when [^a+b = 5] rising to 11 digits when [^a+b = 10[super 5]]. +However, when the result is expected to be very small, and when a+b is +also small, then its accuracy tails off, in this case when p[super 1/a] < 0.0025 +then it is better to use the following as an initial estimate: + +[equation ibeta_inv4] + +Finally the for all other cases where `a+b > 5` the method of section +4 of the paper is used. This expresses the inverse incomplete beta in terms +of the inverse of the incomplete gamma function, and is therefore significantly +more expensive to compute than the other cases. However the method is accurate +to at least 3 decimal digits when [^a = 5] rising to at least 10 digits when +[^a = 10[super 5]]. This method is limited to a > b, and therefore we need to perform +an exchange a for b, p for q and x for y when this is not the case. In addition +when p is close to 1 the method is inaccurate should we actually want y rather +than x as output. Therefore when q is small ([^q[super 1/p] < 10[super -3]]) we use: + +[equation ibeta_inv6] + +which is both cheaper to compute than the full method, and a more accurate +estimate on q. + +When a and b are both small there is a distinct lack of information in the +literature on how to proceed. I am extremely grateful to Prof Nico Temme +who provided the following information with a great deal of patience and +explanation on his part. Any errors that follow are entirely my own, and not +Prof Temme's. + +When a and b are both less than 1, then there is a point of inflection in +the incomplete beta at point `xs = (1 - a) / (2 - a - b)`. Therefore if +[^p > I[sub x](a,b)] we swap a for b, p for q and x for y, so that now we always +look for a point x below the point of inflection `xs`, and on a convex curve. +An initial estimate for x is made with: + +[equation ibeta_inv7] + +which is provably below the true value for x: +[@http://en.wikipedia.org/wiki/Newton%27s_method Newton iteration] will +therefore smoothly converge on x without problems caused by overshooting etc. + +When a and b are both greater than 1, but a+b is too small to use the other +methods mentioned above, we proceed as follows. Observe that there is a point +of inflection in the incomplete beta at `xs = (1 - a) / (2 - a - b)`. Therefore +if [^p > I[sub x](a,b)] we swap a for b, p for q and x for y, so that now we always +look for a point x below the point of inflection `xs`, and on a concave curve. +An initial estimate for x is made with: + +[equation ibeta_inv4] + +which can be improved somewhat to: + +[equation ibeta_inv1] + +when b and x are both small (I've used b < a and x < 0.2). This +actually under-estimates x, which drops us on the wrong side of x for Newton +iteration to converge monotonically. However, use of higher derivatives +and Halley iteration keeps everything under control. + +The final case to be considered if when one of a and b is less than or equal +to 1, and the other greater that 1. Here, if b < a we swap a for b, p for q +and x for y. Now the curve of the incomplete beta is convex with no points +of inflection in [0,1]. For small p, x can be estimated using + +[equation ibeta_inv4] + +which under-estimates x, and drops us on the right side of the true value +for Newton iteration to converge monotonically. However, when p is large +this can quite badly underestimate x. This is especially an issue when we +really want to find y, in which case this method can be an arbitrary number +of order of magnitudes out, leading to very poor convergence during iteration. + +Things can be improved by considering the incomplete beta as a distorted +quarter circle, and estimating y from: + +[equation ibeta_inv8] + +This doesn't guarantee that we will drop in on the right side of x for +monotonic convergence, but it does get us close enough that Halley iteration +rapidly converges on the true value. + +[h4 Implementation of inverses on the a and b parameters] + +These four functions share a common implementation. + +First an initial approximation is computed for /a/ or /b/: +where possible this uses a Cornish-Fisher expansion for the +negative binomial distribution to get within around 1 of the +result. However, when /a/ or /b/ are very small the Cornish Fisher +expansion is not usable, in this case the initial approximation +is chosen so that +I[sub x](a, b) is near the middle of the range [0,1]. + +This initial guess is then +used as a starting value for a generic root finding algorithm. The +algorithm converges rapidly on the root once it has been +bracketed, but bracketing the root may take several iterations. +A better initial approximation for /a/ or /b/ would improve these +functions quite substantially: currently 10-20 incomplete beta +function invocations are required to find the root. + +[endsect][/section:ibeta_inv_function The Incomplete Beta Function Inverses] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/igamma.qbk b/doc/sf_and_dist/igamma.qbk new file mode 100644 index 000000000..9e0eac33b --- /dev/null +++ b/doc/sf_and_dist/igamma.qbk @@ -0,0 +1,386 @@ +[section:igamma Incomplete Gamma Functions] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` gamma_p(T1 a, T2 z); + + template + ``__sf_result`` gamma_p(T1 a, T2 z, const ``__Policy``&); + + template + ``__sf_result`` gamma_q(T1 a, T2 z); + + template + ``__sf_result`` gamma_q(T1 a, T2 z, const ``__Policy``&); + + template + ``__sf_result`` tgamma_lower(T1 a, T2 z); + + template + ``__sf_result`` tgamma_lower(T1 a, T2 z, const ``__Policy``&); + + template + ``__sf_result`` tgamma(T1 a, T2 z); + + template + ``__sf_result`` tgamma(T1 a, T2 z, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +There are four [@http://mathworld.wolfram.com/IncompleteGammaFunction.html +incomplete gamma functions]: +two are normalised versions (also known as /regularized/ incomplete gamma functions) +that return values in the range [0, 1], and two are non-normalised and +return values in the range [0, [Gamma](a)]. Users interested in statistical +applications should use the +[@http://mathworld.wolfram.com/RegularizedGammaFunction.html normalised versions (gamma_p and gamma_q)]. + +All of these functions require /a > 0/ and /z >= 0/, otherwise they return +the result of __domain_error. + +[optional_policy] + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types, otherwise the return type is simply T1. + + template + ``__sf_result`` gamma_p(T1 a, T2 z); + + template + ``__sf_result`` gamma_p(T1 a, T2 z, const ``__Policy``&); + +Returns the normalised lower incomplete gamma function of a and z: + +[equation igamma4] + +This function changes rapidly from 0 to 1 around the point z == a: + +[$../graphs/gamma_p.png] + + template + ``__sf_result`` gamma_q(T1 a, T2 z); + + template + ``__sf_result`` gamma_q(T1 a, T2 z, const ``__Policy``&); + +Returns the normalised upper incomplete gamma function of a and z: + +[equation igamma3] + +This function changes rapidly from 1 to 0 around the point z == a: + +[$../graphs/gamma_q.png] + + template + ``__sf_result`` tgamma_lower(T1 a, T2 z); + + template + ``__sf_result`` tgamma_lower(T1 a, T2 z, const ``__Policy``&); + +Returns the full (non-normalised) lower incomplete gamma function of a and z: + +[equation igamma2] + + template + ``__sf_result`` tgamma(T1 a, T2 z); + + template + ``__sf_result`` tgamma(T1 a, T2 z, const ``__Policy``&); + +Returns the full (non-normalised) upper incomplete gamma function of a and z: + +[equation igamma1] + +[h4 Accuracy] + +The following tables give peak and mean relative errors in over various domains of +a and z, along with comparisons to the __gsl and __cephes libraries. +Note that only results for the widest floating point type on the system are given as +narrower types have __zero_error. + +Note that errors grow as /a/ grows larger. + +Note also that the higher error rates for the 80 and 128 bit +long double results are somewhat misleading: expected results that are +zero at 64-bit double precision may be non-zero - but exceptionally small - +with the larger exponent range of a long double. These results therefore +reflect the more extreme nature of the tests conducted for these types. + +All values are in units of epsilon. + +[table Errors In the Function gamma_p(a,z) +[[Significand Size] [Platform and Compiler] + [0.5 < a < 100 + + and + + 0.01*a < z < 100*a] + [1x10[super -12] < a < 5x10[super -2] + + and + + 0.01*a < z < 100*a] + [1e-6 < a < 1.7x10[super 6] + + and + + 1 < z < 100*a]] +[[53] [Win32, Visual C++ 8] + [Peak=36 Mean=9.1 + + (GSL Peak=342 Mean=46) + + (__cephes Peak=491 Mean=102)] + [Peak=4.5 Mean=1.4 + + (GSL Peak=4.8 Mean=0.76) + + (__cephes Peak=21 Mean=5.6)] + [Peak=244 Mean=21 + + (GSL Peak=1022 Mean=1054) + + (__cephes Peak~8x10[super 6] Mean~7x10[super 4])]] +[[64] [RedHat Linux IA32, gcc-3.3] [Peak=241 Mean=36] [Peak=4.7 Mean=1.5] [Peak~30,220 Mean=1929]] +[[64] [Redhat Linux IA64, gcc-3.4] [Peak=41 Mean=10] [Peak=4.7 Mean=1.4] [Peak~30,790 Mean=1864]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=40.2 Mean=10.2] [Peak=5 Mean=1.6] [Peak=5,476 Mean=440]] +] + +[table Errors In the Function gamma_q(a,z) +[[Significand Size] [Platform and Compiler] +[0.5 < a < 100 + +and + +0.01*a < z < 100*a] +[1x10[super -12] < a < 5x10[super -2] + +and + +0.01*a < z < 100*a] [1x10[super -6] < a < 1.7x10[super 6] + +and + +1 < z < 100*a]] +[[53] [Win32, Visual C++ 8] [Peak=28.3 Mean=7.2 + +(GSL Peak=201 Mean=13) + +(__cephes Peak=556 Mean=97)] [Peak=4.8 Mean=1.6 + +(GSL Peak~1.3x10[super 10] Mean=1x10[super +9]) + +(__cephes Peak~3x10[super 11] Mean=4x10[super 10])] [Peak=469 Mean=33 + +(GSL Peak=27,050 Mean=2159) + +(__cephes Peak~8x10[super 6] Mean~7x10[super 5])]] +[[64] [RedHat Linux IA32, gcc-3.3] [Peak=280 Mean=33] [Peak=4.1 Mean=1.6] [Peak=11,490 Mean=732]] +[[64] [Redhat Linux IA64, gcc-3.4] [Peak=32 Mean=9.4] [Peak=4.7 Mean=1.5] [Peak=6815 Mean=414]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=37 Mean=10] [Peak=11.2 Mean=2.0] [Peak=4,999 Mean=298]] +] + +[table Errors In the Function tgamma_lower(a,z) +[[Significand Size] [Platform and Compiler] [0.5 < a < 100 + +and + +0.01*a < z < 100*a] [1x10[super -12] < a < 5x10[super -2] + +and + +0.01*a < z < 100*a]] +[[53] [Win32, Visual C++ 8] [Peak=5.5 Mean=1.4] [Peak=3.6 Mean=0.78]] +[[64] [RedHat Linux IA32, gcc-3.3] [Peak=402 Mean=79] [Peak=3.4 Mean=0.8]] +[[64] [Redhat Linux IA64, gcc-3.4] [Peak=6.8 Mean=1.4] [Peak=3.4 Mean=0.78]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=6.1 Mean=1.8] [Peak=3.7 Mean=0.89]] +] + +[table Errors In the Function tgamma(a,z) +[[Significand Size] [Platform and Compiler] [0.5 < a < 100 + +and + +0.01*a < z < 100*a] [1x10[super -12] < a < 5x10[super -2] + +and + +0.01*a < z < 100*a]] +[[53] [Win32, Visual C++ 8] [Peak=5.9 Mean=1.5] [Peak=1.8 Mean=0.6]] +[[64] [RedHat Linux IA32, gcc-3.3] [Peak=596 Mean=116] [Peak=3.2 Mean=0.84]] +[[64] [Redhat Linux IA64, gcc-3.4.4] [Peak=40.2 Mean=2.5] [Peak=3.2 Mean=0.8]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=364 Mean=17.6] [Peak=12.7 Mean=1.8]] +] + +[h4 Testing] + +There are two sets of tests: spot tests compare values taken from +[@http://functions.wolfram.com/GammaBetaErf/ Mathworld's online evaluator] +with this implementation to perform a basic "sanity check". +Accuracy tests use data generated at very high precision +(using NTL's RR class set at 1000-bit precision) using this implementation +with a very high precision 60-term __lanczos, and some but not all of the special +case handling disabled. +This is less than satisfactory: an independent method should really be used, +but apparently a complete lack of such methods are available. We can't even use a deliberately +naive implementation without special case handling since Legendre's continued fraction +(see below) is unstable for small a and z. + +[h4 Implementation] + +These four functions share a common implementation since +they are all related via: + +1) [equation igamma5] + +2) [equation igamma6] + +3) [equation igamma7] + +The lower incomplete gamma is computed from its series representation: + +4) [equation igamma8] + +Or by subtraction of the upper integral from either [Gamma](a) or 1 +when /x > a and x > 1.1/. + +The upper integral is computed from Legendre's continued fraction representation: + +5) [equation igamma9] + +When /x > 1.1/ or by subtraction of the lower integral from either [Gamma](a) or 1 +when /x < a/. + +For /x < 1.1/ computation of the upper integral is more complex as the continued +fraction representation is unstable in this area. However there is another +series representation for the lower integral: + +6) [equation igamma10] + +That lends itself to calculation of the upper integral via rearrangement +to: + +7) [equation igamma11] + +Refer to the documentation for __powm1 and __tgamma1pm1 for details +of their implementation. Note however that the precision of __tgamma1pm1 +is capped to either around 35 digits, or to that of the __lanczos associated with +type T - if there is one - whichever of the two is the greater. +That therefore imposes a similar limit on the precision of this +function in this region. + +For /x < 1.1/ the crossover point where the result is ~0.5 no longer +occurs for /x ~ y/. Using /x * 1.1 < a/ as the crossover criterion +for /0.5 < x <= 1.1/ keeps the maximum value computed (whether +it's the upper or lower interval) to around 0.6. Likewise for +/x <= 0.5/ then using /-0.4 / log(x) < a/ as the crossover criterion +keeps the maximum value computed to around 0.7 +(whether it's the upper or lower interval). + +There are two special cases used when a is an integer or half integer, +and the crossover conditions listed above indicate that we should compute +the upper integral Q. +If a is an integer in the range /1 <= a < 30/ then the following +finite sum is used: + +9) [equation igamma1f] + +While for half integers in the range /0.5 <= a < 30/ then the +following finite sum is used: + +10) [equation igamma2f] + +These are both more stable and more efficient than the continued fraction +alternative. + +When the argument /a/ is large, and /x ~ a/ then the series (4) and continued +fraction (5) above are very slow to converge. In this area an expansion due to +Temme is used: + +11) [equation igamma16] + +12) [equation igamma17] + +13) [equation igamma18] + +14) [equation igamma19] + +The double sum is truncated to a fixed number of terms - to give a specific +target precision - and evaluated as a polynomial-of-polynomials. There are +versions for up to 128-bit long double precision: types requiring +greater precision than that do not use these expansions. The +coefficients C[sub k][super n] are computed in advance using the recurrence +relations given by Temme. The zone where these expansions are used is + + (a > 20) && (a < 200) && fabs(x-a)/a < 0.4 + +And: + + (a > 200) && (fabs(x-a)/a < 4.5/sqrt(a)) + +The latter range is valid for all types up to 128-bit long doubles, and +is designed to ensure that the result is larger than 10[super -6], the +first range is used only for types up to 80-bit long doubles. These +domains are narrower than the ones recommended by either Temme or Didonato +and Morris. However, using a wider range results in large and inexact +(i.e. computed) values being passed to the `exp` and `erfc` functions +resulting in significantly larger error rates. In other words there is a +fine trade off here between efficiency and error. The current limits should +keep the number of terms required by (4) and (5) to no more than ~20 +at double precision. + +For the normalised incomplete gamma functions, calculation of the +leading power terms is central to the accuracy of the function. +For smallish a and x combining +the power terms with the __lanczos gives the greatest accuracy: + +15) [equation igamma12] + +In the event that this causes underflow/overflow then the exponent can +be reduced by a factor of /a/ and brought inside the power term. + +When a and x are large, we end up with a very large exponent with a base +near one: this will not be computed accurately via the pow function, +and taking logs simply leads to cancellation errors. The worst of the +errors can be avoided by using: + +16) [equation igamma13] + +when /a-x/ is small and a and x are large. There is still a subtraction +and therefore some cancellation errors - but the terms are small so the absolute +error will be small - and it is absolute rather than relative error that +counts in the argument to the /exp/ function. Note that for sufficiently +large a and x the errors will still get you eventually, although this does +delay the inevitable much longer than other methods. Use of /log(1+x)-x/ here +is inspired by Temme (see references below). + +[h4 References] + +* N. M. Temme, A Set of Algorithms for the Incomplete Gamma Functions, +Probability in the Engineering and Informational Sciences, 8, 1994. +* N. M. Temme, The Asymptotic Expansion of the Incomplete Gamma Functions, +Siam J. Math Anal. Vol 10 No 4, July 1979, p757. +* A. R. Didonato and A. H. Morris, Computation of the Incomplete Gamma +Function Ratios and their Inverse. ACM TOMS, Vol 12, No 4, Dec 1986, p377. +* W. Gautschi, The Incomplete Gamma Functions Since Tricomi, In Tricomi's Ideas +and Contemporary Applied Mathematics, Atti dei Convegni Lincei, n. 147, +Accademia Nazionale dei Lincei, Roma, 1998, pp. 203--237. +[@http://citeseer.ist.psu.edu/gautschi98incomplete.html http://citeseer.ist.psu.edu/gautschi98incomplete.html] + +[endsect][/section:igamma The Incomplete Gamma Function] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/igamma_inv.qbk b/doc/sf_and_dist/igamma_inv.qbk new file mode 100644 index 000000000..24102c952 --- /dev/null +++ b/doc/sf_and_dist/igamma_inv.qbk @@ -0,0 +1,161 @@ +[section:igamma_inv Incomplete Gamma Function Inverses] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` gamma_q_inv(T1 a, T2 q); + + template + ``__sf_result`` gamma_q_inv(T1 a, T2 q, const ``__Policy``&); + + template + ``__sf_result`` gamma_p_inv(T1 a, T2 p); + + template + ``__sf_result`` gamma_p_inv(T1 a, T2 p, const ``__Policy``&); + + template + ``__sf_result`` gamma_q_inva(T1 x, T2 q); + + template + ``__sf_result`` gamma_q_inva(T1 x, T2 q, const ``__Policy``&); + + template + ``__sf_result`` gamma_p_inva(T1 x, T2 p); + + template + ``__sf_result`` gamma_p_inva(T1 x, T2 p, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +There are four [@http://mathworld.wolfram.com/IncompleteGammaFunction.html incomplete gamma function] +inverses which either compute +/x/ given /a/ and /p/ or /q/, +or else compute /a/ given /x/ and either /p/ or /q/. + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types, otherwise the return type is simply T1. + +[optional_policy] + +[tip When people normally talk about the inverse of the incomplete +gamma function, they are talking about inverting on parameter /x/. +These are implemented here as gamma_p_inv and gamma_q_inv, and are by +far the most efficient of the inverses presented here. + +The inverse on the /a/ parameter finds use in some statistical +applications but has to be computed by rather brute force numerical +techniques and is consequently several times slower. +These are implemented here as gamma_p_inva and gamma_q_inva.] + + + template + ``__sf_result`` gamma_q_inv(T1 a, T2 q); + + template + ``__sf_result`` gamma_q_inv(T1 a, T2 q, const ``__Policy``&); + +Returns a value x such that: `q = gamma_q(a, x);` + +Requires: /a > 0/ and /1 >= p,q >= 0/. + + template + ``__sf_result`` gamma_p_inv(T1 a, T2 p); + + template + ``__sf_result`` gamma_p_inv(T1 a, T2 p, const ``__Policy``&); + +Returns a value x such that: `p = gamma_p(a, x);` + +Requires: /a > 0/ and /1 >= p,q >= 0/. + + template + ``__sf_result`` gamma_q_inva(T1 x, T2 q); + + template + ``__sf_result`` gamma_q_inva(T1 x, T2 q, const ``__Policy``&); + +Returns a value a such that: `q = gamma_q(a, x);` + +Requires: /x > 0/ and /1 >= p,q >= 0/. + + template + ``__sf_result`` gamma_p_inva(T1 x, T2 p); + + template + ``__sf_result`` gamma_p_inva(T1 x, T2 p, const ``__Policy``&); + +Returns a value a such that: `p = gamma_p(a, x);` + +Requires: /x > 0/ and /1 >= p,q >= 0/. + +[h4 Accuracy] + +The accuracy of these functions doesn't vary much by platform or by +the type T. Given that these functions are computed by iterative methods, +they are deliberately "detuned" so as not to be too accurate: it is in +any case impossible for these function to be more accurate than the +regular forward incomplete gamma functions. In practice, the accuracy +of these functions is very similar to that of __gamma_p and __gamma_q +functions. + +[h4 Testing] + +There are two sets of tests: + +* Basic sanity checks attempt to "round-trip" from +/a/ and /x/ to /p/ or /q/ and back again. These tests have quite +generous tolerances: in general both the incomplete gamma, and its +inverses, change so rapidly that round tripping to more than a couple +of significant digits isn't possible. This is especially true when +/p/ or /q/ is very near one: in this case there isn't enough +"information content" in the input to the inverse function to get +back where you started. +* Accuracy checks using high precision test values. These measure +the accuracy of the result, given exact input values. + +[h4 Implementation] + +The functions gamma_p_inv and [@http://functions.wolfram.com/GammaBetaErf/InverseGammaRegularized/ gamma_q_inv] +share a common implementation. + +First an initial approximation is computed using the methodology described +in: + +[@http://portal.acm.org/citation.cfm?id=23109&coll=portal&dl=ACM +A. R. Didonato and A. H. Morris, Computation of the Incomplete Gamma +Function Ratios and their Inverse, ACM Trans. Math. Software 12 (1986), 377-393.] + +Finally, the last few bits are cleaned up using Halley iteration, the iteration +limit is set to 2/3 of the number of bits in T, which by experiment is +sufficient to ensure that the inverses are at least as accurate as the normal +incomplete gamma functions. In testing, no more than 3 iterations are required +to produce a result as accurate as the forward incomplete gamma function, and +in many cases only one iteration is required. + +The functions gamma_p_inva and gamma_q_inva also share a common implementation +but are handled separately from gamma_p_inv and gamma_q_inv. + +An initial approximation for /a/ is computed very crudely so that +/gamma_p(a, x) ~ 0.5/, this value is then used as a starting point +for a generic derivative-free root finding algorithm. As a consequence, +these two functions are rather more expensive to compute than the +gamma_p_inv or gamma_q_inv functions. Even so, the root is usually found +in fewer than 10 iterations. + +[endsect][/section The Incomplete Gamma Function Inverses] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/implementation.qbk b/doc/sf_and_dist/implementation.qbk new file mode 100644 index 000000000..d3e8701c3 --- /dev/null +++ b/doc/sf_and_dist/implementation.qbk @@ -0,0 +1,559 @@ +[section:implementation Additional Implementation Notes] + +The majority of the implementation notes are included with the documentation +of each function or distribution. The notes here are of a more general nature, +and reflect more the general implementation philosophy used. + +[h4 Implemention philosophy] + +"First be right, then be fast." + +There will always be potential compromises +to be made between speed and accuracy. +It may be possible to find faster methods, +particularly for certain limited ranges of arguments, +but for most applications of math functions and distributions, +we judge that speed is rarely as important as accuracy. + +So our priority is accuracy. + +To permit evaluation of accuracy of the special functions, +production of extremely accurate tables of test values +has received considerable effort. + +(It also required much CPU effort - +there was some danger of molten plastic dripping from the bottom of JM's laptop, +so instead, PAB's Dual-core desktop was kept 50% busy for *days* +calculating some tables of test values!) + +For a specific RealType, say float or double, +it may be possible to find approximations for some functions +that are simpler and thus faster, but less accurate +(perhaps because there are no refining iterations, +for example, when calculating inverse functions). + +If these prove accurate enough to be "fit for his purpose", +then a user may substitute his custom specialization. + +For example, there are approximations dating back from times +when computation was a *lot* more expensive: + +H Goldberg and H Levine, Approximate formulas for +percentage points and normalisation of t and chi squared, +Ann. Math. Stat., 17(4), 216 - 225 (Dec 1946). + +A H Carter, Approximations to percentage points of the z-distribution, +Biometrika 34(2), 352 - 358 (Dec 1947). + +These could still provide sufficient accuracy for some speed-critical applications. + +[h4 Accuracy and Representation of Test Values] + +In order to be accurate enough for as many as possible real types, +constant values are given to 50 decimal digits if available +(though many sources proved only accurate near to 64-bit double precision). +Values are specified as long double types by appending L, +unless they are exactly representable, for example integers, or binary fractions like 0.125. +This avoids the risk of loss of accuracy converting from double, the default type. +Values are used after static_cast(1.2345L) +to provide the appropriate RealType for spot tests. + +Functions that return constants values, like kurtosis for example, are written as + +`static_cast(-3) / 5;` + +to provide the most accurate value +that the compiler can compute for the real type. +(The denominator is an integer and so will be promoted exactly). + +So tests for one third, *not* exactly representable with radix two floating-point, +(should) use, for example: + +`static_cast(1) / 3;` + +If a function is very sensitive to changes in input, +specifying an inexact value as input (such as 0.1) can throw +the result off by a noticeable amount: 0.1f is "wrong" +by ~1e-7 for example (because 0.1 has no exact binary representation). +That is why exact binary values - halves, quarters, and eighths etc - +are used in test code along with the occasional fraction `a/b` with `b` +a power of two (in order to ensure that the result is an exactly +representable binary value). + +[h4 Tolerance of Tests] + +The tolerances need to be set to the maximum of: + +* Some epsilon value. +* The accuracy of the data (often only near 64-bit double). + +Otherwise when long double has more digits than the test data, then no +amount of tweaking an epsilon based tolerance will work. + +A common problem is when tolerances that are suitable for implementations +like Microsoft VS.NET where double and long double are the same size: +tests fail on other systems where long double is more accurate than double. +Check first that the suffix L is present, and then that the tolerance is big enough. + +[h4 Handling Unsuitable Arguments] + +In +[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1665.pdf Errors in Mathematical Special Functions], J. Marraffino & M. Paterno +it is proposed that signalling a domain error is mandatory +when the argument would give an mathematically undefined result. + +*Guideline 1 + +[:A mathematical function is said to be defined at a point a = (a1, a2, . . .) +if the limits as x = (x1, x2, . . .) 'approaches a from all directions agree'. +The defined value may be any number, or +infinity, or -infinity.] + +Put crudely, if the function goes to + infinity +and then emerges 'round-the-back' with - infinity, +it is NOT defined. + +[:The library function which approximates a mathematical function shall signal a domain error +whenever evaluated with argument values for which the mathematical function is undefined.] + +*Guideline 2 + +[:The library function which approximates a mathematical function +shall signal a domain error whenever evaluated with argument values +for which the mathematical function obtains a non-real value.] + +This implementation is believed to follow these proposals and to assist compatibility with +['ISO/IEC 9899:1999 Programming languages - C] +and with the +[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Draft Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph 5]. +[link math_toolkit.main_overview.error_handling See also domain_error]. + +See __policy_ref for details of the error handling policies that should allow +a user to comply with any of these recommendations, as well as other behaviour. + +See [link math_toolkit.main_overview.error_handling error handling] +for a detailed explanation of the mechanism, and +[link math_toolkit.dist.stat_tut.weg.error_eg error_handling example] +and +[@../../../example/error_handling_example.cpp error_handling_example.cpp] + +[caution If you enable throw but do NOT have try & catch block, +then the program will terminate with an uncaught exception and probably abort. +Therefore to get the benefit of helpful error messages, enabling *all* exceptions +*and* using try&catch is recommended for all applications. +However, for simplicity, this is not done for most examples.] + +[h4 Handling of Functions that are Not Mathematically defined] + +Functions that are not mathematically defined, +like the Cauchy mean, fail to compile by default. +[link math_toolkit.policy.pol_ref.assert_undefined A policy] +allows control of this. + +If the policy is to permit undefined functions, then calling them +throws a domain error, by default. But the error policy can be set +to not throw, and to return NaN instead. For example, + +`#define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error` + +appears before the first Boost include, +then if the un-implemented function is called, +mean(cauchy<>()) will return std::numeric_limits::quiet_NaN(). + +[warning If `std::numeric_limits::has_quiet_NaN` is false +(for example T is a User-defined type), +then an exception will always be thrown when a domain error occurs. +Catching exceptions is therefore strongly recommended.] + +[h4 Median of distributions] + +There are many distributions for which we have been unable to find an analytic formula, +and this has deterred us from implementing +[@http://en.wikipedia.org/wiki/Median median functions], the mid-point in a list of values. + +However a useful median approximation for distribution `dist` may be available from + +`quantile(dist, 0.5)`. + +[@http://www.amstat.org/publications/jse/v13n2/vonhippel.html Mean, Median, and Skew, Paul T von Hippel] + +[@http://documents.wolfram.co.jp/teachersedition/MathematicaBook/24.5.html Descriptive Statistics,] + +[@http://documents.wolfram.co.jp/v5/Add-onsLinks/StandardPackages/Statistics/DescriptiveStatistics.html and ] + +[@http://documents.wolfram.com/v5/TheMathematicaBook/AdvancedMathematicsInMathematica/NumericalOperationsOnData/3.8.1.html +Mathematica Basic Statistics.] give more detail, in particular for discrete distributions. + + +[h4 Handling of Floating-Point Infinity] + +Some functions and distributions are well defined with + or - infinity as +argument(s), but after some experiments with handling infinite arguments +as special cases, we concluded that it was generally more useful to forbid this, +and instead to return the result of __domain_error. + +Handling infinity as special cases is additionally complicated +because, unlike built-in types on most - but not all - platforms, +not all User-Defined Types are +specialized to provide `std::numeric_limits::infinity()` +and would return zero rather than any representation of infinity. + +The rationale is that non-finiteness may happen because of error +or overflow in the users code, and it will be more helpful for this +to be diagnosed promptly rather than just continuing. +The code also became much more complicated, more error-prone, +much more work to test, and much less readable. + +However in a few cases, for example normal, where we felt it obvious, +we have permitted argument(s) to be infinity, +provided infinity is implemented for the realType on that implementation. + +Overflow, underflow, denorm can be handled using __error_policy. + +We have also tried to catch boundary cases where the mathematical specification +would result in divide by zero or overflow and signalling these similarly. +What happens at (and near), poles can be controlled through __error_policy. + +[h4 Scale, Shape and Location] + +We considered adding location and scale to the list of functions, for example: + + template + inline RealType scale(const triangular_distribution& dist) + { + RealType lower = dist.lower(); + RealType mode = dist.mode(); + RealType upper = dist.upper(); + RealType result; // of checks. + if(false == detail::check_triangular(BOOST_CURRENT_FUNCTION, lower, mode, upper, &result)) + { + return result; + } + return (upper - lower); + } + +but found that these concepts are not defined (or their definition too contentious) +for too many distributions to be generally applicable. +Because they are non-member functions, they can be added if required. + +[h4 Notes on Implementation of Specific Functions & Distributions] + +* Default parameters for the Triangular Distribution. +We are uncertain about the best default parameters. +Some sources suggest that the Standard Triangular Distribution has +lower = 0, mode = half and upper = 1. +However as a approximation for the normal distribution, +the most common usage, lower = -1, mode = 0 and upper = 1 would be more suitable. + +[h4 Rational Approximations Used] + +Some of the special functions in this library are implemented via +rational approximations. These are either taken from the literature, +or devised by John Maddock using +[link math_toolkit.toolkit.internals2.minimax our Remez code]. + +Rational rather than Polynomial approximations are used to ensure +accuracy: polynomial approximations are often wonderful up to +a certain level of accuracy, but then quite often fail to provide much greater +accuracy no matter how many more terms are added. + +Our own approximations were devised either for added accuracy +(to support 128-bit long doubles for example), or because +literature methods were unavailable or under non-BSL +compatible license. Our Remez code is known to produce good +agreement with literature results in fairly simple "toy" cases. +All approximations were checked +for convergence and to ensure that +they were not ill-conditioned (the coefficients can give a +theoretically good solution, but the resulting rational function +may be un-computable at fixed precision). + +Recomputing using different +Remez implementations may well produce differing coefficients: the +problem is well known to be ill conditioned in general, and our Remez implementation +often found a broad and ill-defined minima for many of these approximations +(of course for simple "toy" examples like approximating `exp` the minima +is well defined, and the coeffiecents should agree no matter whose Remez +implementation is used). This should not in general effect the validity +of the approximations: there's good literature supporting the idea that +coefficients can be "in error" without necessarily adversely effecting +the result. Note that "in error" has a special meaning in this context, +see [@http://front.math.ucdavis.edu/0101.5042 +"Approximate construction of rational approximations and the effect +of error autocorrection.", Grigori Litvinov, eprint arXiv:math/0101042]. +Therefore the coefficients still need to be accurately calculated, even if they can +be in error compared to the "true" minimax solution. + +[h4 Representation of Mathematical Constants] + +A macro BOOST_DEFINE_MATH_CONSTANT in constants.hpp is used +to provide high accuracy constants to mathematical functions and distributions, +since it is important to provide values uniformly for both built-in +float, double and long double types, +and for User Defined types like NTL::quad_float and NTL::RR. + +To permit calculations in this Math ToolKit and its tests, (and elsewhere) +at about 100 decimal digits with NTL::RR type, +it is obviously necessary to define constants to this accuracy. + +However, some compilers do not accept decimal digits strings as long as this. +So the constant is split into two parts, with the 1st containing at least +long double precision, and the 2nd zero if not needed or known. +The 3rd part permits an exponent to be provided if necessary (use zero if none) - +the other two parameters may only contain decimal digits (and sign and decimal point), +and may NOT include an exponent like 1.234E99 (nor a trailing F or L). +The second digit string is only used if T is a User-Defined Type, +when the constant is converted to a long string literal and lexical_casted to type T. +(This is necessary because you can't use a numeric constant +since even a long double might not have enough digits). + +For example, pi is defined: + + BOOST_DEFINE_MATH_CONSTANT(pi, + 3.141592653589793238462643383279502884197169399375105820974944, + 5923078164062862089986280348253421170679821480865132823066470938446095505, + 0) + +And used thus: + + using namespace boost::math::constants; + + double diameter = 1.; + double radius = diameter * pi(); + + or boost::math::constants::pi() + +Note that it is necessary (if inconvenient) to specify the type explicitly. + +So you cannot write + + double p = boost::math::constants::pi<>(); // could not deduce template argument for 'T' + +Neither can you write: + + double p = boost::math::constants::pi; // Context does not allow for disambiguation of overloaded function + double p = boost::math::constants::pi(); // Context does not allow for disambiguation of overloaded function + +[h4 Thread safety] + +Reporting of error by setting errno should be thread safe already +(otherwise none of the std lib math functions would be thread safe?). +If you turn on reporting of errors via exceptions, errno gets left unused anyway. + +Other than that, the code is intended to be thread safe *for built in +real-number types* : so float, double and long double are all thread safe. + +For non-built-in types - NTL::RR for example - initialisation of the various +constants used in the implementation is potentially *not* thread safe. +This most undesiable, but it would be a signficant challenge to fix it. +Some compilers may offer the option of having +static-constants initialised in a thread safe manner (Commeau, and maybe +others?), if that's the case then the problem is solved. This is a topic of +hot debate for the next C++ std revision, so hopefully all compilers +will be required to do the right thing here at some point. + +[h4 Sources of Test Data] + +We found a large number of sources of test data. +We have assumed that these are /"known good"/ +if they agree with the results from our test +and only consulted other sources for their /'vote'/ +in the case of serious disagreement. +The accuracy, actual and claimed, vary very widely. +Only [@http://functions.wolfram.com/ Wolfram Mathematica functions] +provided a higher accuracy than +C++ double (64-bit floating-point) and was regarded as +the most-trusted source by far. + +A useful index of sources is: +[@http://www.sal.hut.fi/Teaching/Resources/ProbStat/table.html +Web-oriented Teaching Resources in Probability and Statistics] + +[@http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm Statlet]: +Is a Javascript application that calculates and plots probability distributions, +and provides the most complete range of distributions: + +[:Bernoulli, Binomial, discrete uniform, geometric, hypergeometric, +negative binomial, Poisson, beta, Cauchy-Lorentz, chi-sequared, Erlang, +exponential, extreme value, Fisher, gamma, Laplace, logistic, +lognormal, normal, Parteo, Student's t, triangular, uniform, and Weibull.] + +It calculates pdf, cdf, survivor, log survivor, hazard, tail areas, +& critical values for 5 tail values. + +It is also the only independent source found for the Weibull distribution; +unfortunately it appears to suffer from very poor accuracy in areas where +the underlying special function is known to be difficult to implement. + +[h4 Creating and Managing the Equations] + +The primary source for the equations is now +[@http://www.w3.org/Math/ MathML]: see the +*.mml files in libs\/math\/doc\/sf_and_dist\/equations\/. + +These are most easily edited by a GUI editor such as +[@http://mathcast.sourceforge.net/home.html Mathcast], +please note that the equation editor supplied with Open Office +currently mangles these files and should not currently be used. + +Convertion to SVG was achieved using +[@http://www.grigoriev.ru/svgmath/ SVGMath] and a command line +such as: + +[pre +$for file in *.mml; do +>/cygdrive/c/Python25/python.exe 'C:\download\open\SVGMath-0.3.1\math2svg.py' \\ +>>$file > $(basename $file .mml).svg +>done +] + +Note that SVGMath requires that the mml files are *not* wrapped in an XHTML +XML wrapper - this is added by Mathcast by default - one workaround is to +copy an existing mml file and then edit it with Mathcast: the existing +format should then be preserved. This is a bug in the XML parser used by +SVGMath which the author is aware of. + +If neccessary the XHTML wrapper can be removed with: + +[pre cat filename | tr -d "\\r\\n" \| sed -e 's\/.*\\(\]\*>.\*<\/math>\\).\*\/\\1\/' > newfile] + +Setting up fonts for SVGMath is currently rather tricky, on a Windows XP system +JM's font setup is the same as the sample config file provided with SVGMath +but with: + +[pre + + +] + +changed to: + +[pre + + +] + +Note that unlike the sample config file supplied with SVGMath, this does not +make use of the Mathematica 7 font as this lacks sufficient Unicode information +for it to be used with either SVGMath or XEP "as is". + +Also note that the SVG files in the repository are almost certainly +Windows-specific since they reference various Windows Fonts. + +PNG files can be created from the SVG's using +[@http://xmlgraphics.apache.org/batik/tools/rasterizer.html Batik] +and a command such as: + +[pre java -jar 'C:\download\open\batik-1.7\batik-rasterizer.jar' -dpi 120 *.svg] + +The PDF is generated into \pdf\math.pdf +using a command from a shell or command window with current directory +\math_toolkit\libs\math\doc\sf_and_dist, typically: + +[pre bjam -a pdf] + +Note that XEP will have to be configured to *use and embed* +whatever fonts are used by the SVG equations +(if necessary editing the sample xep.xml provided by the XEP installation). + +(html is generated at math_toolkit\libs\math\doc\sf_and_dist\html\index.html +using just bjam -a). + +JM's XEP config file has the following font configuration section added: + +[pre + + + <\/font> + <\/font> + <\/font> + <\/font> + <\/font\-family> + + + <\/font> + <\/font> + <\/font> + <\/font> + <\/font\-family> + + + <\/font> + <\/font> + <\/font> + <\/font> + <\/font\-family> + + + <\/font> + <\/font> + <\/font\-family> + + + <\/font> + <\/font> + <\/font> + <\/font> + <\/font\-family> + + + <\/font> + <\/font> + <\/font> + <\/font> + <\/font\-family> + + + <\/font> + <\/font\-family> +] + +PAB had to alter his because the Lucida Sans Unicode font had a different name. +Changes are very likely to be required if you are not using Windows. + +XZ authored his equations using the venerable Latex, JM converted these to +MathML using [@http://gentoo-wiki.com/HOWTO_Convert_LaTeX_to_HTML_with_MathML mxlatex]. +This process is currently unreliable and required some manual intervention: +consequently Latex source is not considered a viable route for the automatic +production of SVG versions of equations. + +Equations are embedded in the quickbook source using the /equation/ +template defined in math.qbk. This outputs Docbook XML that looks like: + +[pre + + + + + + + + +] + +MathML is not currently present in the Docbook output, or in the +generated HTML: this needs further investigation. + +[h4 Producing Graphs] + +Graphs were mostly produced by a very laborious process entailing output +of columns of values from C++ programs to a .csv file, +use of [@http://www.rjsweb.fsnet.co.uk/graph/ RJS Graph] to arrange the display and axes, +and output to a .ps file, followed by conversion to .png using Adobe Photoshop, +or similar utility. This rigmarole is *not* recommended! + +We plan to carry out this process in a single step using the +[@http://code.google.com/soc/2007/boost/about.html Google Summer of Code 2007] +project of Jacob Voytko (whose work so far is at .\boost-sandbox\SOC\2007\visualization) +that should, when completed, allow output of annotated graphs as +Scalable Vector Graphic .svg files directly from C++ programs. + +[endsect] [/section:implementation Implementation Notes] + +[/ + Copyright 2006, 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/internals_overview.qbk b/doc/sf_and_dist/internals_overview.qbk new file mode 100644 index 000000000..41b7af6ac --- /dev/null +++ b/doc/sf_and_dist/internals_overview.qbk @@ -0,0 +1,22 @@ +[section:internals_overview Overview] + +This section contains internal utilities used by the library's implementation +along with tools used in development and testing. These tools have +only minimal documentation, and crucially +['do not have stable interfaces]. + +There is no doubt that these components can be improved, but they are also +largely incidental to the main purpose of this library. + +These tools are designed to "just get the job done", and receive minimal +documentation here, in the hopes that they will help stimulate further +submissions to this library. + +[endsect][/section:internals_overview Overview] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/inv_hyper.qbk b/doc/sf_and_dist/inv_hyper.qbk new file mode 100644 index 000000000..d353bb06a --- /dev/null +++ b/doc/sf_and_dist/inv_hyper.qbk @@ -0,0 +1,169 @@ +[/ math.qbk + Copyright 2006 Hubert Holin and John Maddock. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + +[def __form1 [^\[0;+'''∞'''\[]] +[def __form2 [^\]-'''∞''';+1\[]] +[def __form3 [^\]-'''∞''';-1\[]] +[def __form4 [^\]+1;+'''∞'''\[]] +[def __form5 [^\[-1;-1+'''ε'''\[]] +[def __form6 '''ε'''] +[def __form7 [^\]+1-'''ε''';+1\]]] + +[def __effects [*Effects: ]] +[def __formula [*Formula: ]] +[def __exm1 '''ex - 1'''[space]] +[def __ex '''ex'''] +[def __te '''2ε'''] + +[section:inv_hyper Inverse Hyperbolic Functions] + +[section:inv_hyper_over Inverse Hyperbolic Functions Overview] + +The exponential funtion is defined, for all objects for which this makes sense, +as the power series +[equation special_functions_blurb1], +with ['[^n! = 1x2x3x4x5...xn]] (and ['[^0! = 1]] by definition) being the factorial of ['[^n]]. +In particular, the exponential function is well defined for real numbers, +complex number, quaternions, octonions, and matrices of complex numbers, +among others. + +[: ['[*Graph of exp on R]] ] + +[: [$../graphs/exp_on_r.png] ] + +[: ['[*Real and Imaginary parts of exp on C]]] +[: [$../graphs/im_exp_on_c.png]] + +The hyperbolic functions are defined as power series which +can be computed (for reals, complex, quaternions and octonions) as: + +Hyperbolic cosine: [equation special_functions_blurb5] + +Hyperbolic sine: [equation special_functions_blurb6] + +Hyperbolic tangent: [equation special_functions_blurb7] + +[: ['[*Trigonometric functions on R (cos: purple; sin: red; tan: blue)]]] +[: [$../graphs/trigonometric.png]] + +[: ['[*Hyperbolic functions on r (cosh: purple; sinh: red; tanh: blue)]]] +[: [$../graphs/hyperbolic.png]] + +The hyperbolic sine is one to one on the set of real numbers, +with range the full set of reals, while the hyperbolic tangent is +also one to one on the set of real numbers but with range __form1, and +therefore both have inverses. The hyperbolic cosine is one to one from __form2 +onto __form3 (and from __form4 onto __form3); the inverse function we use +here is defined on __form3 with range __form2. + +The inverse of the hyperbolic tangent is called the Argument hyperbolic tangent, +and can be computed as [equation special_functions_blurb15]. + +The inverse of the hyperbolic sine is called the Argument hyperbolic sine, +and can be computed (for __form5) as [equation special_functions_blurb17]. + +The inverse of the hyperbolic cosine is called the Argument hyperbolic cosine, +and can be computed as [equation special_functions_blurb18]. + +[endsect] + +[section:acosh acosh] + +`` +#include +`` + + template + ``__sf_result`` acosh(const T x); + + template + ``__sf_result`` acosh(const T x, const ``__Policy``&); + +Computes the reciprocal of (the restriction to the range of __form1) +[link math_toolkit.special.inv_hyper.inv_hyper_over +the hyperbolic cosine function], at x. Values returned are positive. Generalised +Taylor series are used near 1 and Laurent series are used near the +infinity to ensure accuracy. + +If x is in the range __form2 then returns the result of __domain_error. + +The return type of this function is computed using the __arg_pomotion_rules: +the return type is `double` when T is an integer type, and T otherwise. + +[optional_policy] + +[endsect] + +[section:asinh asinh] + +`` +#include +`` + + template + ``__sf_result`` asinh(const T x); + + template + ``__sf_result`` asinh(const T x, const ``__Policy``&); + +Computes the reciprocal of +[link math_toolkit.special.inv_hyper.inv_hyper_over +the hyperbolic sine function]. +Taylor series are used at the origin and Laurent series are used near the +infinity to ensure accuracy. + +The return type of this function is computed using the __arg_pomotion_rules: +the return type is `double` when T is an integer type, and T otherwise. + +[optional_policy] + +[endsect] + +[section:atanh atanh] + +`` +#include +`` + + template + ``__sf_result`` atanh(const T x); + + template + ``__sf_result`` atanh(const T x, const ``__Policy``&); + +Computes the reciprocal of +[link math_toolkit.special.inv_hyper.inv_hyper_over +the hyperbolic tangent function], at x. +Taylor series are used at the origin to ensure accuracy. + +[optional_policy] + +If x is in the range +__form3 +or in the range +__form4 +then returns the result of __domain_error. + +If x is in the range +__form5, +then the result of -__overflow_error is returned, with +__form6[space] +denoting numeric_limits::epsilon(). + +If x is in the range +__form7, +then the result of __overflow_error is returned, with +__form6[space] +denoting +numeric_limits::epsilon(). + +The return type of this function is computed using the __arg_pomotion_rules: +the return type is `double` when T is an integer type, and T otherwise. + +[endsect] + +[endsect] diff --git a/doc/sf_and_dist/issues.qbk b/doc/sf_and_dist/issues.qbk new file mode 100644 index 000000000..5ff84c47f --- /dev/null +++ b/doc/sf_and_dist/issues.qbk @@ -0,0 +1,90 @@ +[section:issues Known Issues, and Todo List] + +This section lists those issues that are known about. + +Predominantly this is a TODO list, or a list of possible +future enhancements. Items labled "High Priority" effect +the proper functioning of the component, and should be fixed +as soon as possible. Items labled "Medium Priority" are +desirable enhancements, often pertaining to the performance +of the component, but do not effect it's accuracy or functionality. +Items labled "Low Priority" should probably be investigated at +some point. Such classifications are obviously highly subjective. + +If you don't see a component listed here, then we don't have any known +issues with it. + +[h4 tgamma] + +* Can the __lanczos be optimized any further? (low priority) + +[h4 Incomplete Beta] + +* Investigate Didonato and Morris' asymptotic expansion for large a and b +(medium priority). + +[h4 Inverse Gamma] + +* Investigate whether we can skip iteration altogether if the first approximation +is good enough (Medium Priority). + +[h4 Polynomials] + +* The Legendre and Laguerre Polynomials have surprisingly different error +rates on different platforms, considering they are evaluated with only +basic arithmetic operations. Maybe this is telling us something, or maybe not +(Low Priority). + +[h4 Elliptic Integrals] + +* Carlson's algorithms are essentially unchanged from Xiaogang Zhang's +Google Summer of Code student project, and are based on Carlson's +original papers. However, Carlson has revised his algorithms since then +(refer to the references in the elliptic integral docs for a list), to +improve performance and accuracy, we may be able to take advantage +of these improvements too (Low Priority). +* [para Carlson's algorithms (mainly R[sub J]) are somewhat prone to +internal overflow/underflow when the arguments are very large or small. +The homogeneity relations:] +[para R[sub F](ka, kb, kc) = k[super -1/2] R[sub F](a, b, c)] +[para and] +[para R[sub J](ka, kb, kc, kr) = k[super -3/2] R[sub J](a, b, c, r)] +[para could be used to sidestep trouble here: provided the problem domains +can be accurately identified. (Medium Priority).] +* Carlson's R[sub C] can be reduced to elementary funtions (asin and log), +would it be more efficient evaluated this way, rather than by Carlson's +algorithms? (Low Priority). +* Should we add an implementation of Carlson's R[sub G]? It's not +required for the Legendre form integrals, but some people may find it +useful (Low Priority). +* There are a several other integrals: D([phi], k), Z([beta], k), +[Lambda][sub 0]([beta], k) and Bulirsch's ['el] functions that could +be implemented using Carlson's integrals (Low Priority). +* The integrals K(k) and E(k) could be implemented using rational +approximations (both for efficiency and accuracy), +assuming we can find them. (Medium Priority). +* There is a sub-domain of __ellint_3 that is unimplemented (see the docs +for details), currently +it's not clear how to solve this issue, or if it's ever likely +to be an real problem in practice - especially as most other implementations +don't support this domain either (Medium Priority). + +[h4 Inverse Hyperbolic Functions] + +* These functions are inherited from previous Boost versions, +before __log1p became widely available. Would they be better expressed +in terms of this function? This is probably only an issue +for very high precision types (Low Priority). + +[h4 Statistical distributions] + +* Student's t Perhaps switch to normal distribution as a better approximation for very large degrees of freedom? + +[endsect][/section:issues Known Issues, and Todo List] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/laguerre.qbk b/doc/sf_and_dist/laguerre.qbk new file mode 100644 index 000000000..6afc4af88 --- /dev/null +++ b/doc/sf_and_dist/laguerre.qbk @@ -0,0 +1,175 @@ +[section:laguerre Laguerre (and Associated) Polynomials] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` laguerre(unsigned n, T x); + + template + ``__sf_result`` laguerre(unsigned n, T x, const ``__Policy``&); + + template + ``__sf_result`` laguerre(unsigned n, unsigned m, T x); + + template + ``__sf_result`` laguerre(unsigned n, unsigned m, T x, const ``__Policy``&); + + template + ``__sf_result`` laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1); + + template + ``__sf_result`` laguerre_next(unsigned n, unsigned m, T1 x, T2 Ln, T3 Lnm1); + + + }} // namespaces + +[h4 Description] + +The return type of these functions is computed using the __arg_pomotion_rules: +note than when there is a single template argument the result is the same type +as that argument or `double` if the template argument is an integer type. + +[optional_policy] + + template + ``__sf_result`` laguerre(unsigned n, T x); + + template + ``__sf_result`` laguerre(unsigned n, T x, const ``__Policy``&); + +Returns the value of the Laguerre Polynomial of order /n/ at point /x/: + +[equation laguerre_0] + +The following graph illustrates the behaviour of the first few +Laguerre Polynomials: + +[$../graphs/laguerre.png] + + template + ``__sf_result`` laguerre(unsigned n, unsigned m, T x); + + template + ``__sf_result`` laguerre(unsigned n, unsigned m, T x, const ``__Policy``&); + +Returns the Associated Laguerre polynomial of degree /n/ +and order /m/ at point /x/: + +[equation laguerre_1] + + template + ``__sf_result`` laguerre_next(unsigned n, T1 x, T2 Ln, T3 Lnm1); + +Implements the three term recurrence relation for the Laguerre +polynomials, this function can be used to create a sequence of +values evaluated at the same /x/, and for rising /n/. + +[equation laguerre_2] + +For example we could produce a vector of the first 10 polynomial +values using: + + double x = 0.5; // Abscissa value + vector v; + v.push_back(laguerre(0, x)).push_back(laguerre(1, x)); + for(unsigned l = 1; l < 10; ++l) + v.push_back(laguerre_next(l, x, v[l], v[l-1])); + +Formally the arguments are: + +[variablelist +[[n][The degree /n/ of the last polynomial calculated.]] +[[x][The abscissa value]] +[[Ln][The value of the polynomial evaluated at degree /n/.]] +[[Lnm1][The value of the polynomial evaluated at degree /n-1/.]] +] + + template + ``__sf_result`` laguerre_next(unsigned n, unsigned m, T1 x, T2 Ln, T3 Lnm1); + +Implements the three term recurrence relation for the Associated Laguerre +polynomials, this function can be used to create a sequence of +values evaluated at the same /x/, and for rising degree /n/. + +[equation laguerre_3] + +For example we could produce a vector of the first 10 polynomial +values using: + + double x = 0.5; // Abscissa value + int m = 10; // order + vector v; + v.push_back(laguerre(0, m, x)).push_back(laguerre(1, m, x)); + for(unsigned l = 1; l < 10; ++l) + v.push_back(laguerre_next(l, m, x, v[l], v[l-1])); + +Formally the arguments are: + +[variablelist +[[n][The degree of the last polynomial calculated.]] +[[m][The order of the Associated Polynomial.]] +[[x][The abscissa value.]] +[[Ln][The value of the polynomial evaluated at degree /n/.]] +[[Lnm1][The value of the polynomial evaluated at degree /n-1/.]] +] + +[h4 Accuracy] + +The following table shows peak errors (in units of epsilon) +for various domains of input arguments. +Note that only results for the widest floating point type on the system are +given as narrower types have __zero_error. + +[table Peak Errors In the Laguerre Polynomial +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] ] +[[53] [Win32, Visual C++ 8] [Peak=3000 Mean=185] ] +[[64] [SUSE Linux IA32, g++ 4.1] [Peak=1x10[super 4] Mean=828]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=1x10[super 4] Mean=828] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=680 Mean=40]] +] + +[table Peak Errors In the Associated Laguerre Polynomial +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] ] +[[53] [Win32, Visual C++ 8] [Peak=433 Mean=11]] +[[64] [SUSE Linux IA32, g++ 4.1] [Peak=61.4 Mean=19.5]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=61.4 Mean=19.5] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=540 Mean=13.94] ] +] + +Note that the worst errors occur when the degree increases, values greater than +~120 are very unlikely to produce sensible results, especially in the associated +polynomial case when the order is also large. Further the relative errors +are likely to grow arbitrarily large when the function is very close to a root. + +[h4 Testing] + +A mixture of spot tests of values calculated using functions.wolfram.com, +and randomly generated test data are +used: the test data was computed using +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision. + +[h4 Implementation] + +These functions are implemented using the stable three term +recurrence relations. These relations guarentee low absolute error +but cannot guarentee low relative error near one of the roots of the +polynomials. + +[endsect][/section:beta_function The Beta Function] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/lanczos.qbk b/doc/sf_and_dist/lanczos.qbk new file mode 100644 index 000000000..3fd253d84 --- /dev/null +++ b/doc/sf_and_dist/lanczos.qbk @@ -0,0 +1,246 @@ +[section:lanczos The Lanczos Approximation] + +[h4 Motivation] + +['Why base gamma and gamma-like functions on the Lanczos approximation?] + +First of all I should make clear that for the gamma function +over real numbers (as opposed to complex ones) +the Lanczos approximation (See [@http://en.wikipedia.org/wiki/Lanczos_approximation Wikipedia or ] +[@http://mathworld.wolfram.com/LanczosApproximation.html Mathworld]) +appears to offer no clear advantage over more traditional methods such as +[@http://en.wikipedia.org/wiki/Stirling_approximation Stirling's approximation]. +__pugh carried out an extensive comparison of the various methods available +and discovered that they were all very similar in terms of complexity +and relative error. However, the Lanczos approximation does have a couple of +properties that make it worthy of further consideration: + +* The approximation has an easy to compute truncation error that holds for +all /z > 0/. In practice that means we can use the same approximation for all +/z > 0/, and be certain that no matter how large or small /z/ is, the truncation +error will /at worst/ be bounded by some finite value. +* The approximation has a form that is particularly amenable to analytic +manipulation, in particular ratios of gamma or gamma-like functions +are particularly easy to compute without resorting to logarithms. + +It is the combination of these two properties that make the approximation +attractive: Stirling's approximation is highly accurate for large z, and +has some of the same analytic properties as the Lanczos approximation, but +can't easily be used across the whole range of z. + +As the simplest example, consider the ratio of two gamma functions: one could +compute the result via lgamma: + + exp(lgamma(a) - lgamma(b)); + +However, even if lgamma is uniformly accurate to 0.5ulp, the worst case +relative error in the above can easily be shown to be: + + Erel > a * log(a)/2 + b * log(b)/2 + +For small /a/ and /b/ that's not a problem, but to put the relationship another +way: ['each time a and b increase in magnitude by a factor of 10, at least one +decimal digit of precision will be lost.] + +In contrast, by analytically combining like power +terms in a ratio of Lanczos approximation's, these errors can be virtually eliminated +for small /a/ and /b/, and kept under control for very large (or very small +for that matter) /a/ and /b/. Of course, computing large powers is itself a +notoriously hard problem, but even so, analytic combinations of Lanczos +approximations can make the difference between obtaining a valid result, or +simply garbage. Refer to the implementation notes for the __beta function for +an example of this method in practice. The incomplete +[link math_toolkit.special.sf_gamma.igamma gamma_p gamma] and +[link math_toolkit.special.sf_beta.ibeta_function beta] functions +use similar analytic combinations of power terms, to combine gamma and beta +functions divided by large powers into single (simpler) expressions. + +[h4 The Approximation] + +The Lanczos Approximation to the Gamma Function is given by: + +[equation lanczos0] + +Where S[sub g](z) is an infinite sum, that is convergent for all z > 0, +and /g/ is an arbitrary parameter that controls the "shape" of the +terms in the sum which is given by: + +[equation lanczos0a] + +With individual coefficients defined in closed form by: + +[equation lanczos0b] + +However, evaluation of the sum in that form can lead to numerical instability +in the computation of the ratios of rising and falling factorials (effectively +we're multiplying by a series of numbers very close to 1, so roundoff errors +can accumulate quite rapidly). + +The Lanczos approximation is therefore often written in partial fraction form +with the leading constants absorbed by the coefficients in the sum: + +[equation lanczos1] + +where: + +[equation lanczos2] + +Again parameter /g/ is an arbitrarily chosen constant, and /N/ is an arbitrarily chosen +number of terms to evaluate in the "Lanczos sum" part. + +[note +Some authors +choose to define the sum from k=1 to N, and hence end up with N+1 coefficients. +This happens to confuse both the following discussion and the code (since C++ +deals with half open array ranges, rather than the closed range of the sum). +This convention is consistent with __godfrey, but not __pugh, so take care +when referring to the literature in this field.] + +[h4 Computing the Coefficients] + +The coefficients C0..CN-1 need to be computed from /N/ and /g/ +at high precision, and then stored as part of the program. +Calculation of the coefficients is performed via the method of __godfrey; +let the constants be contained in a column vector P, then: + +P = B D C F + +where B is an NxN matrix: + +[equation lanczos4] + +D is an NxN matrix: + +[equation lanczos3] + +C is an NxN matrix: + +[equation lanczos5] + +and F is an N element column vector: + +[equation lanczos6] + +Note than the matrices B, D and C contain all integer terms and depend +only on /N/, this product should be computed first, and then multiplied +by /F/ as the last step. + +[h4 Choosing the Right Parameters] + +The trick is to choose +/N/ and /g/ to give the desired level of accuracy: choosing a small value for +/g/ leads to a strictly convergent series, but one which converges only slowly. +Choosing a larger value of /g/ causes the terms in the series to be large +and\/or divergent for about the first /g-1/ terms, and to then suddenly converge +with a "crunch". + +__pugh has determined the optimal +value of /g/ for /N/ in the range /1 <= N <= 60/: unfortunately in practice choosing +these values leads to cancellation errors in the Lanczos sum as the largest +term in the (alternating) series is approximately 1000 times larger than the result. +These optimal values appear not to be useful in practice unless the evaluation +can be done with a number of guard digits /and/ the coefficients are stored +at higher precision than that desired in the result. These values are best +reserved for say, computing to float precision with double precision arithmetic. + +[table Optimal choices for N and g when computing with guard digits (source: Pugh) +[[Significand Size] [N] [g][Max Error]] +[[24] [6] [5.581][9.51e-12]] +[[53][13][13.144565][9.2213e-23]] +] + +The alternative described by __godfrey is to perform an exhaustive +search of the /N/ and /g/ parameter space to determine the optimal combination for +a given /p/ digit floating-point type. Repeating this work found a good +approximation for double precision arithmetic (close to the one __godfrey found), +but failed to find really +good approximations for 80 or 128-bit long doubles. Further it was observed +that the approximations obtained tended to optimised for the small values +of z (1 < z < 200) used to test the implementation against the factorials. +Computing ratios of gamma functions with large arguments were observed to +suffer from error resulting from the truncation of the Lancozos series. + +__pugh identified all the locations where the theoretical error of the +approximation were at a minimum, but unfortunately has published only the largest +of these minima. However, he makes the observation that the minima +coincide closely with the location where the first neglected term (a[sub N]) in the +Lanczos series S[sub g](z) changes sign. These locations are quite easy to +locate, albeit with considerable computer time. These "sweet spots" need +only be computed once, tabulated, and then searched when required for an +approximation that delivers the required precision for some fixed precision +type. + +Unfortunately, following this path failed to find a really good approximation +for 128-bit long doubles, and those found for 64 and 80-bit reals required an +excessive number of terms. There are two competing issues here: high precision +requires a large value of /g/, but avoiding cancellation errors in the evaluation +requires a small /g/. + +At this point note that the Lanczos sum can be converted into rational form +(a ratio of two polynomials, obtained from the partial-fraction form using +polynomial arithmetic), +and doing so changes the coefficients so that /they are all positive/. That +means that the sum in rational form can be evaluated without cancellation +error, albeit with double the number of coefficients for a given N. Repeating +the search of the "sweet spots", this time evaluating the Lanczos sum in +rational form, and testing only those "sweet spots" whose theoretical error +is less than the machine epsilon for the type being tested, yielded good +approximations for all the types tested. The optimal values found were quite +close to the best cases reported by __pugh (just slightly larger /N/ and slightly +smaller /g/ for a given precision than __pugh reports), and even though converting +to rational form doubles the number of stored coefficients, it should be +noted that half of them are integers (and therefore require less storage space) +and the approximations require a smaller /N/ than would otherwise be required, +so fewer floating point operations may be required overall. + +The following table shows the optimal values for /N/ and /g/ when computing +at fixed precision. These should be taken as work in progress: there are no +values for 106-bit significand machines (Darwin long doubles & NTL quad_float), +and further optimisation of the values of /g/ may be possible. +Errors given in the table +are estimates of the error due to truncation of the Lanczos infinite series +to /N/ terms. They are calculated from the sum of the first five neglected +terms - and are known to be rather pessimistic estimates - although it is noticeable +that the best combinations of /N/ and /g/ occurred when the estimated truncation error +almost exactly matches the machine epsilon for the type in question. + +[table Optimum value for N and g when computing at fixed precision +[[Significand Size][Platform/Compiler Used][N][g][Max Truncation Error]] +[[24][Win32, VC++ 7.1] [6] [1.428456135094165802001953125][9.41e-007]] +[[53][Win32, VC++ 7.1] [13] [6.024680040776729583740234375][3.23e-016]] +[[64][Suse Linux 9 IA64, gcc-3.3.3] [17] [12.2252227365970611572265625][2.34e-024]] +[[116][HP Tru64 Unix 5.1B \/ Alpha, Compaq C++ V7.1-006] [24] [20.3209821879863739013671875][4.75e-035]] +] + +Finally note that the Lanczos approximation can be written as follows +by removing a factor of exp(g) from the denominator, and then dividing +all the coefficients by exp(g): + +[equation lanczos7] + +This form is more convenient for calculating lgamma, but for the gamma +function the division by /e/ turns a possibly exact quality into an +inexact value: this reduces accuracy in the common case that +the input is exact, and so isn't used for the gamma function. + +[h4 References] + +# [#godfrey]Paul Godfrey, [@http://my.fit.edu/~gabdo/gamma.txt "A note on the computation of the convergent +Lanczos complex Gamma approximation"]. +# [#pugh]Glendon Ralph Pugh, +[@http://bh0.physics.ubc.ca/People/matt/Doc/ThesesOthers/Phd/pugh.pdf +"An Analysis of the Lanczos Gamma Approximation"], +PhD Thesis November 2004. +# Viktor T. Toth, +[@http://www.rskey.org/gamma.htm "Calculators and the Gamma Function"]. +# Mathworld, [@http://mathworld.wolfram.com/LanczosApproximation.html +The Lanczos Approximation]. + +[endsect][/section:lanczos The Lanczos Approximation] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/latin1_symbols.qbk b/doc/sf_and_dist/latin1_symbols.qbk new file mode 100644 index 000000000..e5f0f427d --- /dev/null +++ b/doc/sf_and_dist/latin1_symbols.qbk @@ -0,0 +1,111 @@ +[/ Symbols and accented letters from Latin-1] +[/ File Latin1_symbols.qbk] +[/ http://www.htmlhelp.com/reference/html40/entities/latin1.html ] +[/ based on table Copyright 1998-2006 Liam Quinn.] +[/ Glyphs of the characters ] +[/ are available at the Unicode Consortium . ] + +[template nbsp[]''' '''] [/ no-break space = non-breaking space] +[template iexcl[]'''¡'''] [/ inverted exclamation mark ] +[template cent[]'''¢'''] [/ cent sign ] +[template pound[]'''£'''] [/ pound sign ] +[template curren[]'''¤'''] [/ currency sign ] +[template yen[]'''¥'''] [/ yen sign = yuan sign ] +[template brvbar[]'''¦'''] [/ broken vertical bar ] +[template sectsign[]'''§'''] [/ section sign ] +[template uml[]'''¨'''] [/ diaeresis ] +[template copy[]'''©'''] [/ copyright ] +[template ordf[]'''ª'''] [/ feminine ordinal indicator ] +[template laquo[]'''«'''] [/ left-pointing double angle quotation mark = left pointing guillemet ] +[template not[]'''¬'''] [/ not sign ] +[template shy[]'''­'''] [/ soft hyphen = discretionary hyphen ] +[template reg[]'''®'''] [/ registered sign = registered trade mark sign ] +[template macron[]'''¯'''] [/ macron = spacing macron = overline = APL overbar ] +[template deg[]'''°'''] [/ degree sign ] +[template plusmn[]'''±'''] [/ plus-minus sign = plus-or-minus sign ] +[template sup2[]'''²'''] [/ superscript two = superscript digit two = squared ] +[template cubed[]'''³'''] [/ superscript three = superscript digit three = cubed ] +[template acute[]'''´'''] [/ acute accent = spacing acute ] +[template micro[]'''µ'''] [/ micro sign ] +[template para[]'''¶'''] [/ pilcrow sign = paragraph sign ] +[template middot[]'''·'''] [/ middle dot = Georgian comma = Greek middle dot ] +[template cedil[]'''¸'''] [/ cedilla = spacing cedilla ] +[template sup1[]'''¹'''] [/ superscript one = superscript digit one ] +[template ordm[]'''º'''] [/ masculine ordinal indicator ] +[template raquo[]'''»'''] [/ right-pointing double angle quotation mark = right pointing guillemet ] +[template frac14[]'''¼'''] [/ vulgar fraction one quarter = fraction one quarter ] +[template frac12[]'''½'''] [/ vulgar fraction one half = fraction one half ] +[template frac34[]'''¾'''] [/vulgar fraction three quarters = fraction three quarters ] +[template iquest[]'''¿'''] [/ inverted question mark = turned question mark ] +[template Agrave[]'''À'''] [/ Latin capital letter A with grave = Latin capital letter A grave ] +[template Aacute[]'''Á'''] [/ Latin capital letter A with acute = Latin capital letter A acute ] +[template Acirc[]'''Â'''] [/ Latin capital letter A with circumflex ] +[template Atilde[]'''Ã'''] [/Latin capital letter A with tilde ] +[template Auml[]'''Ä'''] [/ Latin capital letter A with diaeresis ] +[template Aring[]'''Å'''] [/ Latin capital letter A with ring above = Latin capital letter A ring ] +[template AElig[]'''Æ'''] [/ Latin capital letter AE = Latin capital ligature AE ] +[template Ccedil[]'''Ç'''] [/ Latin capital letter C with cedilla ] +[template Egrave[]'''È'''] [/ Latin capital letter E with grave ] +[template Eacute[]'''É'''] [/ Latin capital letter E with acute ] +[template Ecirc[]'''Ê'''] [/ Latin capital letter E with circumflex ] +[template Euml[]'''Ë'''] [/ Latin capital letter E with diaeresis ] +[template Igrave[]'''Ì'''] [/ Latin capital letter I with grave ] +[template Iacute[]'''Í'''] [/ Latin capital letter I with acute ] +[template Icirc[]'''Î'''] [/ Latin capital letter I with circumflex ] +[template Iuml[]'''Ï'''] [/ Latin capital letter I with diaeresis ] +[template ETH[]'''Ð'''] [/ Latin capital letter ETH ] +[template Ntilde[]'''Ñ'''] [/ Latin capital letter N with tilde ] +[template Ograve[]'''Ò'''] [/ Latin capital letter O with grave] +[template Oacute[]'''Ó'''] [/ Latin capital letter O with acute ] +[template Ocirc[]'''Ô'''] [/ Latin capital letter O with circumflex ] +[template Otilde[]'''Õ'''] [/ Latin capital letter O with tilde ] +[template Ouml[]'''Ö'''] [/ Latin capital letter O with diaeresis ] +[template times[]'''×'''] [/ multiplication sign ] +[template Oslash[]'''Ø'''] [/ Latin capital letter O with stroke = Latin capital letter O slash ] +[template Ugrave[]'''Ù'''] [/ Latin capital letter U with grave ] +[template Uacute[]'''Ú'''] [/ Latin capital letter U with acute ] +[template Ucirc[]'''Û'''] [/ Latin capital letter U with circumflex ] +[template Uuml[]'''Ü'''] [/ Latin capital letter U with diaeresis ] +[template Yacute[]'''Ý'''] [/ Latin capital letter Y with acute ] +[template THORN[]'''Þ'''] [/ Latin capital letter THORN ] +[template szlig[]'''ß'''] [/ Latin small letter sharp s = ess-zed ] +[template agrave[]'''à'''] [/ Latin small letter a with grave = Latin small letter a grave ] +[template aacute[]'''á'''] [/ Latin small letter a with acute ] +[template acirc[]'''â'''] [/ Latin small letter a with circumflex ] +[template atilde[]'''ã'''] [/ Latin small letter a with tilde ] +[template auml[]'''ä'''] [/ Latin small letter a with diaeresis ] +[template aring[]'''å'''] [/ Latin small letter a with ring above = Latin small letter a ring ] +[template aelig[]'''æ'''] [/ Latin small letter ae = Latin small ligature ae ] +[template ccedil[]'''ç'''] [/ Latin small letter c with cedilla ] +[template egrave[]'''è'''] [/ Latin small letter e with grave ] +[template eacute[]'''é'''] [/ Latin small letter e with acute ] +[template ecirc[]'''ê'''] [/ Latin small letter e with circumflex ] +[template euml[]'''ë'''] [/ Latin small letter e with diaeresis ] +[template igrave[]'''ì'''] [/ Latin small letter i with grave ] +[template iacute[]'''í'''] [/ Latin small letter i with acute ] +[template icirc[]'''î'''] [/ Latin small letter i with circumflex ] +[template iuml[]'''ï'''] [/ Latin small letter i with diaeresis ] +[template eth[]'''ð'''] [/ Latin small letter eth ] +[template ntilde[]'''ñ'''] [/ Latin small letter n with tilde ] +[template ograve[]'''ò'''] [/Latin small letter o with grave ] +[template oacute[]'''ó'''] [/ Latin small letter o with acute ] +[template ocirc[]'''ô'''] [/ Latin small letter o with circumflex ] +[template otilde[]'''õ'''] [/ Latin small letter o with tilde ] +[template ouml[]'''ö'''] [/ Latin small letter o with diaeresis ] +[template divide[]'''÷'''] [/ division sign ] +[template oslash[]'''ø'''] [/ Latin small letter o with stroke = Latin small letter o slash ] +[template ugrave[]'''ù'''] [/ Latin small letter u with grave ] +[template uacute[]'''ú'''] [/ Latin small letter u with acute ] +[template ucirc[]'''û'''] [/ Latin small letter u with circumflex ] +[template uuml[]'''ü'''] [/ Latin small letter u with diaeresis ] +[template yacute[]'''ý'''] [/ Latin small letter y with acute ] +[template thorn[]'''þ'''] [/ Latin small letter thorn ] +[template yuml[]'''ÿ'''] [/ Latin small letter y with diaeresis ] + +[/ File Latin1_symbols.qbk +Copyright 2007 Paul A. Bristow. +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/legendre.qbk b/doc/sf_and_dist/legendre.qbk new file mode 100644 index 000000000..c7935689f --- /dev/null +++ b/doc/sf_and_dist/legendre.qbk @@ -0,0 +1,252 @@ +[section:legendre Legendre (and Associated) Polynomials] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` legendre_p(int n, T x); + + template + ``__sf_result`` legendre_p(int n, T x, const ``__Policy``&); + + template + ``__sf_result`` legendre_p(int n, int m, T x); + + template + ``__sf_result`` legendre_p(int n, int m, T x, const ``__Policy``&); + + template + ``__sf_result`` legendre_q(unsigned n, T x); + + template + ``__sf_result`` legendre_q(unsigned n, T x, const ``__Policy``&); + + template + ``__sf_result`` legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1); + + template + ``__sf_result`` legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1); + + + }} // namespaces + +The return type of these functions is computed using the __arg_pomotion_rules: +note than when there is a single template argument the result is the same type +as that argument or `double` if the template argument is an integer type. + +[optional_policy] + +[h4 Description] + + template + ``__sf_result`` legendre_p(int l, T x); + + template + ``__sf_result`` legendre_p(int l, T x, const ``__Policy``&); + +Returns the Legendre Polynomial of the first kind: + +[equation legendre_0] + +Requires -1 <= x <= 1, otherwise returns the result of __domain_error. + +Negative orders are handled via the reflection formula: + +P[sub -l-1](x) = P[sub l](x) + +The following graph illustrates the behaviour of the first few +Legendre Polynomials: + +[$../graphs/legendre_p1.png] + + template + ``__sf_result`` legendre_p(int l, int m, T x); + + template + ``__sf_result`` legendre_p(int l, int m, T x, const ``__Policy``&); + +Returns the associated Legendre polynomial of the first kind: + +[equation legendre_1] + +Requires -1 <= x <= 1, otherwise returns the result of __domain_error. + +Negative values of /l/ and /m/ are handled via the identity relations: + +[equation legendre_3] + +[caution The definition of the associated Legendre polynomial used here +includes a leading Condon-Shortley phase term of (-1)[super m]. This +matches the definition given by Abramowitz and Stegun (8.6.6) and that +used by [@http://mathworld.wolfram.com/LegendrePolynomial.html Mathworld] +and [@http://documents.wolfram.com/mathematica/functions/LegendreP +Mathematica's LegendreP function]. However, uses in the literature +do not always include this phase term, and strangely the specification +for the associated Legendre function in the C++ TR1 (assoc_legendre) +also omits it, in spite of stating that it uses Abramowitz and Stegun +as the final arbiter on these matters. + +See: + +[@http://mathworld.wolfram.com/LegendrePolynomial.html +Weisstein, Eric W. "Legendre Polynomial." +From MathWorld--A Wolfram Web Resource]. + +Abramowitz, M. and Stegun, I. A. (Eds.). "Legendre Functions" and +"Orthogonal Polynomials." Ch. 22 in Chs. 8 and 22 in Handbook of +Mathematical Functions with Formulas, Graphs, and Mathematical Tables, +9th printing. New York: Dover, pp. 331-339 and 771-802, 1972. + ] + + template + ``__sf_result`` legendre_q(unsigned n, T x); + + template + ``__sf_result`` legendre_q(unsigned n, T x, const ``__Policy``&); + +Returns the value of the Legendre polynomial that is the second solution +to the Legendre differential equation, for example: + +[equation legendre_2] + +Requires -1 <= x <= 1, otherwise __domain_error is called. + +The following graph illustrates the first few Legendre functions of the +second kind: + +[$../graphs/legendre_q.png] + + template + ``__sf_result`` legendre_next(unsigned l, T1 x, T2 Pl, T3 Plm1); + +Implements the three term recurrence relation for the Legendre +polynomials, this function can be used to create a sequence of +values evaluated at the same /x/, and for rising /l/. This recurrence +relation holds for Legendre Polynomials of both the first and second kinds. + +[equation legendre_4] + +For example we could produce a vector of the first 10 polynomial +values using: + + double x = 0.5; // Abscissa value + vector v; + v.push_back(legendre_p(0, x)).push_back(legendre_p(1, x)); + for(unsigned l = 1; l < 10; ++l) + v.push_back(legendre_next(l, x, v[l], v[l-1])); + +Formally the arguments are: + +[variablelist +[[l][The degree of the last polynomial calculated.]] +[[x][The abscissa value]] +[[Pl][The value of the polynomial evaluated at degree /l/.]] +[[Plm1][The value of the polynomial evaluated at degree /l-1/.]] +] + + template + ``__sf_result`` legendre_next(unsigned l, unsigned m, T1 x, T2 Pl, T3 Plm1); + +Implements the three term recurrence relation for the Associated Legendre +polynomials, this function can be used to create a sequence of +values evaluated at the same /x/, and for rising /l/. + +[equation legendre_5] + +For example we could produce a vector of the first m+10 polynomial +values using: + + double x = 0.5; // Abscissa value + int m = 10; // order + vector v; + v.push_back(legendre_p(m, m, x)).push_back(legendre_p(1 + m, m, x)); + for(unsigned l = 1 + m; l < m + 10; ++l) + v.push_back(legendre_next(l, m, x, v[l], v[l-1])); + +Formally the arguments are: + +[variablelist +[[l][The degree of the last polynomial calculated.]] +[[m][The order of the Associated Polynomial.]] +[[x][The abscissa value]] +[[Pl][The value of the polynomial evaluated at degree /l/.]] +[[Plm1][The value of the polynomial evaluated at degree /l-1/.]] +] + +[h4 Accuracy] + +The following table shows peak errors (in units of epsilon) +for various domains of input arguments. +Note that only results for the widest floating point type on the system are +given as narrower types have __zero_error. + +[table Peak Errors In the Legendre P Function +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] [Errors in range + +20 < l < 120]] +[[53] [Win32, Visual C++ 8] [Peak=211 Mean=20] [Peak=300 Mean=33]] +[[64] [SUSE Linux IA32, g++ 4.1] [Peak=70 Mean=10] [Peak=700 Mean=60]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=70 Mean=10] [Peak=700 Mean=60]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=35 Mean=6] [Peak=292 Mean=41]] +] + +[table Peak Errors In the Associated Legendre P Function +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] ] +[[53] [Win32, Visual C++ 8] [Peak=1200 Mean=7]] +[[64] [SUSE Linux IA32, g++ 4.1] [Peak=80 Mean=5]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=80 Mean=5] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=42 Mean=4] ] +] + +[table Peak Errors In the Legendre Q Function +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] [Errors in range + +20 < l < 120]] +[[53] [Win32, Visual C++ 8] [Peak=50 Mean=7] [Peak=4600 Mean=370]] +[[64] [SUSE Linux IA32, g++ 4.1] [Peak=51 Mean=8] [Peak=6000 Mean=480]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=51 Mean=8] [Peak=6000 Mean=480]] +[[113] [HPUX IA64, aCC A.06.06] [Peak=90 Mean=10] [Peak=1700 Mean=140]] +] + +Note that the worst errors occur when the order increases, values greater than +~120 are very unlikely to produce sensible results, especially in the associated +polynomial case when the degree is also large. Further the relative errors +are likely to grow arbitrarily large when the function is very close to a root. + +No comparisons to other libraries are shown here: there appears to be only one +viable implementation method for these functions, the comparisons to other +libraries that have been run show identical error rates to those given here. + +[h4 Testing] + +A mixture of spot tests of values calculated using functions.wolfram.com, +and randomly generated test data are +used: the test data was computed using +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision. + +[h4 Implementation] + +These functions are implemented using the stable three term +recurrence relations. These relations guarentee low absolute error +but cannot guarentee low relative error near one of the roots of the +polynomials. + +[endsect][/section:beta_function The Beta Function] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/lgamma.qbk b/doc/sf_and_dist/lgamma.qbk new file mode 100644 index 000000000..b961d50b0 --- /dev/null +++ b/doc/sf_and_dist/lgamma.qbk @@ -0,0 +1,217 @@ +[section:lgamma Log Gamma] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` lgamma(T z); + + template + ``__sf_result`` lgamma(T z, const ``__Policy``&); + + template + ``__sf_result`` lgamma(T z, int* sign); + + template + ``__sf_result`` lgamma(T z, int* sign, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +The [@http://en.wikipedia.org/wiki/Gamma_function lgamma function] is defined by: + +[equation lgamm1] + +The second form of the function takes a pointer to an integer, +which if non-null is set on output to the sign of tgamma(z). + +[optional_policy] + +[$../graphs/lgamma.png] + +There are effectively two versions of this function internally: a fully +generic version that is slow, but reasonably accurate, and a much more +efficient approximation that is used where the number of digits in the significand +of T correspond to a certain __lanczos. In practice, any built-in +floating-point type you will encounter has an appropriate __lanczos +defined for it. It is also possible, given enough machine time, to generate +further __lanczos's using the program libs/math/tools/lanczos_generator.cpp. + +The return type of these functions is computed using the __arg_pomotion_rules: +the result is of type `double` if T is an integer type, or type T otherwise. + +[h4 Accuracy] + +The following table shows the peak errors (in units of epsilon) +found on various platforms +with various floating point types, along with comparisons to the +__gsl, __glibc, __hpc and +__cephes libraries. Unless otherwise specified any +floating point type that is narrower than the one shown will have +__zero_error. + +Note that while the relative errors near the positive roots of lgamma +are very low, the lgamma function has an infinite number of irrational +roots for negative arguments: very close to these negative roots only +a low absolute error can be guaranteed. + +[table +[[Significand Size] [Platform and Compiler] [Factorials and Half factorials] [Values Near Zero] [Values Near 1 or 2] [Values Near a Negative Pole]] +[[53] [Win32 Visual C++ 8] +[Peak=0.88 Mean=0.14 + +(GSL=33) (__cephes=1.5)] +[Peak=0.96 Mean=0.46 + +(GSL=5.2) (__cephes=1.1)] +[Peak=0.86 Mean=0.46 + +(GSL=1168) (__cephes~500000)] +[Peak=4.2 Mean=1.3 + +(GSL=25) (__cephes=1.6)] ] +[[64] [Linux IA32 / GCC] +[Peak=1.9 Mean=0.43 + +(__glibc Peak=1.7 Mean=0.49)] +[Peak=1.4 Mean=0.57 + +(__glibc Peak= 0.96 Mean=0.54)] +[Peak=0.86 Mean=0.35 + +(__glibc Peak=0.74 Mean=0.26)] + +[Peak=6.0 Mean=1.8 + +(__glibc Peak=3.0 Mean=0.86)] ] +[[64] [Linux IA64 / GCC] +[Peak=0.99 Mean=0.12 + +(__glibc Peak 0)] + +[Pek=1.2 Mean=0.6 + +(__glibc Peak 0)] +[Peak=0.86 Mean=0.16 + +(__glibc Peak 0)] +[Peak=2.3 Mean=0.69 + +(__glibc Peak 0)] ] +[[113] [HPUX IA64, aCC A.06.06] +[Peak=0.96 Mean=0.13 + +(__hpc Peak 0)] +[Peak=0.99 Mean=0.53 + +(__hpc Peak 0)] +[Peak=0.9 Mean=0.4 + +(__hpc Peak 0)] +[Peak=3.0 Mean=0.9 + +(__hpc Peak 0)] ] +] + +[h4 Testing] + +The main tests for this function involve comparisons against the logs of +the factorials which can be independently calculated to very high accuracy. + +Random tests in key problem areas are also used. + +[h4 Implementation] + +The generic version of this function is implemented by combining the series and +continued fraction representations for the incomplete gamma function: + +[equation lgamm2] + +where /l/ is an arbitrary integration limit: choosing [^l = max(10, a)] +seems to work fairly well. For negative /z/ the logarithm version of the +reflection formula is used: + +[equation lgamm3] + +For types of known precision, the __lanczos is used, a traits class +`boost::math::lanczos::lanczos_traits` maps type T to an appropriate +approximation. The logarithmic version of the __lanczos is: + +[equation lgamm4] + +Where L[sub e,g][space] is the Lanczos sum, scaled by e[super g]. + +As before the reflection formula is used for /z < 0/. + +When z is very near 1 or 2, then the logarithmic version of the __lanczos +suffers very badly from cancellation error: indeed for values sufficiently +close to 1 or 2, arbitrarily large relative errors can be obtained (even though +the absolute error is tiny). + +For types with up to 113 bits of precision +(up to and including 128-bit long doubles), root-preserving +rational approximations [jm_rationals] are used +over the intervals [1,2] and [2,3]. Over the interval [2,3] the approximation +form used is: + + lgamma(z) = (z-2)(z+1)(Y + R(z-2)); + +Where Y is a constant, and R(z-2) is the rational approximation: optimised +so that it's absolute error is tiny compared to Y. In addition +small values of z greater +than 3 can handled by argument reduction using the recurrence relation: + + lgamma(z+1) = log(z) + lgamma(z); + +Over the interval [1,2] two approximations have to be used, one for small z uses: + + lgamma(z) = (z-1)(z-2)(Y + R(z-1)); + +Once again Y is a constant, and R(z-1) is optimised for low absolute error +compared to Y. For z > 1.5 the above form wouldn't converge to a +minimax solution but this similar form does: + + lgamma(z) = (2-z)(1-z)(Y + R(2-z)); + +Finally for z < 1 the recurrence relation can be used to move to z > 1: + + lgamma(z) = lgamma(z+1) - log(z); + +Note that while this involves a subtraction, it appears not +to suffer from cancellation error: as z decreases from 1 +the `-log(z)` term grows positive much more +rapidly than the `lgamma(z+1)` term becomes negative. So in this +specific case, significant digits are preserved, rather than cancelled. + +For other types which do have a __lanczos defined for them +the current solution is as follows: imagine we +balance the two terms in the __lanczos by dividing the power term by its value +at /z = 1/, and then multiplying the Lanczos coefficients by the same value. +Now each term will take the value 1 at /z = 1/ and we can rearrange the power terms +in terms of log1p. Likewise if we subtract 1 from the Lanczos sum part +(algebraically, by subtracting the value of each term at /z = 1/), we obtain +a new summation that can be also be fed into log1p. Crucially, all of the +terms tend to zero, as /z -> 1/: + +[equation lgamm5] + +The C[sub k][space] terms in the above are the same as in the __lanczos. + +A similar rearrangement can be performed at /z = 2/: + +[equation lgamm6] + +[endsect][/section:lgamma The Log Gamma Function] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/license.qbk b/doc/sf_and_dist/license.qbk new file mode 100644 index 000000000..16860aa87 --- /dev/null +++ b/doc/sf_and_dist/license.qbk @@ -0,0 +1,6 @@ +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/math.qbk b/doc/sf_and_dist/math.qbk new file mode 100644 index 000000000..ad672056f --- /dev/null +++ b/doc/sf_and_dist/math.qbk @@ -0,0 +1,409 @@ +[article Math Toolkit + [quickbook 1.4] + [copyright 2006-2007 John Maddock, Paul A. Bristow, Hubert Holin and Xiaogang Zhang] + [purpose ISBN 0-9504833-2-X 978-0-9504833-2-0, Classification 519.2-dc22] + [license + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + [@http://www.boost.org/LICENSE_1_0.txt]) + ] + [authors [Maddock, John], [Bristow, Paul A.], [Holin, Hubert], [Zhang, Xiaogang]] + [category math] + [purpose mathematics] + [/last-revision $Date$] +] + +[template equation[name] ''' + + + + + + +'''] + +[include html4_symbols.qbk] [/ just for testing] +[/include latin1_symbols.qbk] [/ just for testing] +[include common_overviews.qbk][/ overviews that appear in more than one place!] +[include roadmap.qbk] [/ for history] + +[def __effects [*Effects: ]] +[def __formula [*Formula: ]] +[def __exm1 '''ex - 1'''] +[def __ex '''ex'''] +[def __te '''2ɛ'''] [/small Latin letter open e] + +[def __ceilR '''⌉'''] +[def __ceilL '''ऄ'''] +[def __floorR '''⌋'''] +[def __floorL '''⌊'''] +[def __infin '''∞'''] +[def __integral '''∫'''] +[def __aacute '''á'''] +[def __eacute '''é'''] +[def __quarter '''¼'''] +[def __nearequal '''≊'''] +[def __quarter '''¼'''] +[def __space '''​'''] + +[def __NTL_RR [@http://shoup.net/ntl/doc/RR.txt NTL::RR]] +[def __NTL_quad_float [@http://shoup.net/ntl/doc/quad_float.txt NTL::quad_float]] + +[def __godfrey [link godfrey Godfrey]] +[def __pugh [link pugh Pugh]] + +[def __caution This is now an official Boost library, but remains a library under + construction, the code is fully functional and robust, but + interfaces, library structure, and function and distribution names + may still be changed without notice.] + +[template tr1[] [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Technical Report on C++ Library Extensions]] +[template jm_rationals[] [link math_toolkit.backgrounders.implementation.rational_approximations_used devised by JM]] +[def __domain_error [link domain_error domain_error]] +[def __pole_error [link pole_error pole_error]] +[def __overflow_error [link overflow_error overflow_error]] +[def __underflow_error [link underflow_error underflow_error]] +[def __denorm_error [link denorm_error denorm_error]] +[def __evaluation_error [link evaluation_error evaluation_error]] +[def __checked_narrowing_cast [link checked_narrowing_cast checked_narrowing_cast]] + +[def __arg_pomotion_rules [link math_toolkit.main_overview.result_type ['result type calculation rules]]] +[def __sf_result [link math_toolkit.main_overview.result_type ['calculated-result-type]]] + +[/ The following macros expand to links to the various special functions +and use the function's name as the link text] + +[/Misc] +[def __lanczos [link math_toolkit.backgrounders.lanczos Lanczos approximation]] +[def __zero_error [link zero_error effectively zero error]] +[def __relative_error [link math_toolkit.backgrounders.relative_error relative zero error]] + +[/gammas] +[def __lgamma [link math_toolkit.special.sf_gamma.lgamma lgamma]] +[def __digamma [link math_toolkit.special.sf_gamma.digamma digamma]] +[def __tgamma_ratio [link math_toolkit.special.sf_gamma.gamma_ratios tgamma_ratio]] +[def __tgamma_delta_ratio [link math_toolkit.special.sf_gamma.gamma_ratios tgamma_delta_ratio]] +[def __tgamma [link math_toolkit.special.sf_gamma.tgamma tgamma]] +[def __tgamma1pm1 [link math_toolkit.special.sf_gamma.tgamma tgamma1pm1]] +[def __tgamma_lower [link math_toolkit.special.sf_gamma.igamma tgamma_lower]] +[def __gamma_p [link math_toolkit.special.sf_gamma.igamma gamma_p]] +[def __gamma_q [link math_toolkit.special.sf_gamma.igamma gamma_q]] +[def __gamma_q_inv [link math_toolkit.special.sf_gamma.igamma_inv gamma_q_inv]] +[def __gamma_p_inv [link math_toolkit.special.sf_gamma.igamma_inv gamma_p_inv]] +[def __gamma_q_inva [link math_toolkit.special.sf_gamma.igamma_inv gamma_q_inva]] +[def __gamma_p_inva [link math_toolkit.special.sf_gamma.igamma_inv gamma_p_inva]] +[def __gamma_p_derivative [link math_toolkit.special.sf_gamma.gamma_derivatives gamma_p_derivative]] + +[/factorials] +[def __factorial [link math_toolkit.special.factorials.sf_factorial factorial]] +[def __unchecked_factorial [link math_toolkit.special.factorials.sf_factorial unchecked_factorial]] +[def __max_factorial [link math_toolkit.special.factorials.sf_factorial max_factorial]] +[def __double_factorial [link math_toolkit.special.factorials.sf_double_factorial double_factorial]] +[def __rising_factorial [link math_toolkit.special.factorials.sf_rising_factorial rising_factorial]] +[def __falling_factorial [link math_toolkit.special.factorials.sf_falling_factorial falling_factorial]] + +[/error functions] +[def __erf [link math_toolkit.special.sf_erf.error_function erf]] +[def __erfc [link math_toolkit.special.sf_erf.error_function erfc]] +[def __erf_inv [link math_toolkit.special.sf_erf.error_inv erf_inv]] +[def __erfc_inv [link math_toolkit.special.sf_erf.error_inv erfc_inv]] + +[/beta functions] +[def __beta [link math_toolkit.special.sf_beta.beta_function beta]] +[def __beta3 [link math_toolkit.special.sf_beta.ibeta_function beta]] +[def __betac [link math_toolkit.special.sf_beta.ibeta_function betac]] +[def __ibeta [link math_toolkit.special.sf_beta.ibeta_function ibeta]] +[def __ibetac [link math_toolkit.special.sf_beta.ibeta_function ibetac]] +[def __ibeta_inv [link math_toolkit.special.sf_beta.ibeta_inv_function ibeta_inv]] +[def __ibetac_inv [link math_toolkit.special.sf_beta.ibeta_inv_function ibetac_inv]] +[def __ibeta_inva [link math_toolkit.special.sf_beta.ibeta_inv_function ibeta_inva]] +[def __ibetac_inva [link math_toolkit.special.sf_beta.ibeta_inv_function ibetac_inva]] +[def __ibeta_invb [link math_toolkit.special.sf_beta.ibeta_inv_function ibeta_invb]] +[def __ibetac_invb [link math_toolkit.special.sf_beta.ibeta_inv_function ibetac_invb]] +[def __ibeta_derivative [link math_toolkit.special.sf_beta.beta_derivative ibeta_derivative]] + +[/elliptic integrals] +[def __ellint_rj [link math_toolkit.special.ellint.ellint_carlson ellint_rj]] +[def __ellint_rf [link math_toolkit.special.ellint.ellint_carlson ellint_rf]] +[def __ellint_rc [link math_toolkit.special.ellint.ellint_carlson ellint_rc]] +[def __ellint_rd [link math_toolkit.special.ellint.ellint_carlson ellint_rd]] +[def __ellint_1 [link math_toolkit.special.ellint.ellint_1 ellint_1]] +[def __ellint_2 [link math_toolkit.special.ellint.ellint_2 ellint_2]] +[def __ellint_3 [link math_toolkit.special.ellint.ellint_3 ellint_3]] + +[/Bessel functions] +[def __cyl_bessel_j [link math_toolkit.special.bessel.bessel cyl_bessel_j]] +[def __cyl_neumann [link math_toolkit.special.bessel.bessel cyl_neumann]] +[def __cyl_bessel_i [link math_toolkit.special.bessel.mbessel cyl_bessel_i]] +[def __cyl_bessel_k [link math_toolkit.special.bessel.mbessel cyl_bessel_k]] +[def __sph_bessel [link math_toolkit.special.bessel.sph_bessel sph_bessel]] +[def __sph_neumann [link math_toolkit.special.bessel.sph_bessel sph_neumann]] + +[/sinus cardinals] +[def __sinc_pi [link math_toolkit.special.sinc.sinc_pi sinc_pi]] +[def __sinhc_pi [link math_toolkit.special.sinc.sinhc_pi sinhc_pi]] + +[/Inverse hyperbolics] +[def __acosh [link math_toolkit.special.inv_hyper.acosh acosh]] +[def __asinh [link math_toolkit.special.inv_hyper.asinh asinh]] +[def __atanh [link math_toolkit.special.inv_hyper.atanh atanh]] + +[/classify] +[def __fpclassify [link math_toolkit.special.fpclass fpclassify]] +[def __isfinite [link math_toolkit.special.fpclass isfinite]] +[def __isnan [link math_toolkit.special.fpclass isnan]] +[def __isinf [link math_toolkit.special.fpclass isinf]] +[def __isnormal [link math_toolkit.special.fpclass isnormal]] + +[/powers etc] +[def __expm1 [link math_toolkit.special.powers.expm1 expm1]] +[def __log1p [link math_toolkit.special.powers.log1p log1p]] +[def __cbrt [link math_toolkit.special.powers.cbrt cbrt]] +[def __sqrt1pm1 [link math_toolkit.special.powers.sqrt1pm1 sqrt1pm1]] +[def __powm1 [link math_toolkit.special.powers.powm1 powm1]] +[def __hypot [link math_toolkit.special.powers.hypot hypot]] + +[/ distribution non-members] +[def __cdf [link math.dist.cdf Cumulative Distribution Function]] +[def __pdf [link math.dist.pdf Probability Density Function]] +[def __ccdf [link math.dist.ccdf Complement of the Cumulative Distribution Function]] +[def __quantile [link math.dist.quantile Quantile]] +[def __quantile_c [link math.dist.quantile_c Quantile from the complement of the probability]] +[def __mean [link math.dist.mean mean]] +[def __median [link math.dist.median median]] +[def __mode [link math.dist.mode mode]] +[def __skewness [link math.dist.skewness skewness]] +[def __kurtosis [link math.dist.kurtosis kurtosis]] +[def __kurtosis_excess [link math.dist.kurtosis_excess kurtosis_excess]] +[def __variance [link math.dist.variance variance]] +[def __sd [link math.dist.sd standard deviation]] +[def __hazard [link math.dist.hazard Hazard Function]] +[def __chf [link math.dist.chf Cumulative Hazard Function]] +[def __range [link math.dist.range range]] +[def __support [link math.dist.support support]] + +[/ distribution def names end in distrib to avoid clashes] +[def __beta_distrib [link math_toolkit.dist.dist_ref.dists.beta_dist Beta Distribution]] +[def __binomial_distrib [link math_toolkit.dist.dist_ref.dists.binomial_dist Binomial Distribution]] +[def __cauchy_distrib [link math_toolkit.dist.dist_ref.dists.cauchy_dist Cauchy Distribution]] +[def __chi_squared_distrib [link math_toolkit.dist.dist_ref.dists.chi_squared_dist Chi Squared Distribution]] +[def __exp_distrib [link math_toolkit.dist.dist_ref.dists.exp_dist Exponential Distribution]] +[def __F_distrib [link math_toolkit.dist.dist_ref.dists.f_dist Fisher F Distribution]] +[def __gamma_distrib [link math_toolkit.dist.dist_ref.dists.gamma_dist Gamma Distribution]] +[def __lognormal_distrib [link math_toolkit.dist.dist_ref.dists.lognormal_dist Log-normal Distribution]] +[def __negative_binomial_distrib [link math_toolkit.dist.dist_ref.dists.negative_binomial_dist Negative Binomial Distribution]] +[def __normal_distrib [link math_toolkit.dist.dist_ref.dists.normal_dist Normal Distribution]] +[def __poisson_distrib [link math_toolkit.dist.dist_ref.dists.poisson_dist Poisson Distribution]] +[def __students_t_distrib [link math_toolkit.dist.dist_ref.dists.students_t_dist Students t Distribution]] +[def __weibull_distrib [link math_toolkit.dist.dist_ref.dists.weibull Weibull Distribution]] + +[/links to policy] +[def __Policy [link math_toolkit.policy Policy]] [/ Used in distribution template specifications] +[def __policy_section [link math_toolkit.policy Policies]] [/ Used in text to refer too.] +[def __policy_class [link math_toolkit.policy.pol_ref.pol_ref_ref policies::policy<>]] +[def __math_undefined [link math_toolkit.policy.pol_ref.assert_undefined mathematically undefined function]] +[def __policy_ref [link math_toolkit.policy.pol_ref policy reference]] +[def __math_discrete [link math_toolkit.policy.pol_ref.discrete_quant_ref discrete functions]] +[def __error_policy [link math_toolkit.policy.pol_ref.error_handling_policies error handling policies]] +[def __changing_policy_defaults [link math_toolkit.policy.pol_ref.policy_defaults changing policies defaults]] +[def __user_error_handling [link math_toolkit.policy.pol_tutorial.user_def_err_pol user error handling]] + +[def __usual_accessors __cdf, __pdf, __quantile, __hazard, + __chf, __mean, __median, __mode, __variance, __sd, __skewness, + __kurtosis, __kurtosis_excess, __range and __support] + +[def __gsl [@http://www.gnu.org/software/gsl/ GSL-1.9]] +[def __glibc [@http://www.gnu.org/software/libc/ GNU C Lib]] +[def __hpc [@http://docs.hp.com/en/B9106-90010/index.html HP-UX C Library]] +[def __cephes [@http://www.netlib.org/cephes/ Cephes]] + + +[def __why_complements [link why_complements why complements?]] +[def __complements [link complements complements]] + +[/ Some composite templates] +[template super[x]''''''[x]''''''] +[template sub[x]''''''[x]''''''] +[template floor[x]'''⌊'''[x]'''⌋'''] +[template floorlr[x][lfloor][x][rfloor]] +[template ceil[x] '''⌈'''[x]'''⌉'''] + +[template header_file[file] [@../../../../../[file] [file]]] + +[template optional_policy[] +The final __Policy argument is optional and can be used to +control the behaviour of the function: how it handles errors, +what level of precision to use etc. Refer to the +[link math_toolkit.policy policy documentation for more details].] + +[template discrete_quantile_warning[NAME] +[caution +The [NAME] distribution is a discrete distribution: internally +functions like the `cdf` and `pdf` are treated "as if" they are continuous +functions, but in reality the results returned from these functions +only have meaning if an integer value is provided for the random variate +argument. + +The quantile function will by default return an integer result that has been +/rounded outwards/. That is to say lower quantiles (where the probability is +less than 0.5) are rounded downward, and upper quantiles (where the probability +is greater than 0.5) are rounded upwards. This behaviour +ensures that if an X% quantile is requested, then /at least/ the requested +coverage will be present in the central region, and /no more than/ +the requested coverage will be present in the tails. + +This behaviour can be changed so that the quantile functions are rounded +differently, or even return a real-valued result using +[link math_toolkit.policy.pol_overview Policies]. It is strongly +recommended that you read the tutorial +[link math_toolkit.policy.pol_tutorial.understand_dis_quant +Understanding Quantiles of Discrete Distributions] before +using the quantile function on the [NAME] distribution. The +[link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs] +describe how to change the rounding policy +for these distributions. +] [/ caution] +] [/ template discrete_quantile_warning] + +[section:main_overview Overview] + +[include overview.qbk] +[include structure.qbk] [/getting about] + +[include result_type_calc.qbk] +[include error_handling.qbk] + +[section:compilers_overview Compilers] +[compilers_overview] +[endsect] +[section:pol_overview Configuration and Policies] +[policy_overview] +[endsect] + +[include thread_safety.qbk] + +[section:perf_over Performance] +[performance_overview] +[endsect] +[section:history1 History and What's New] +[history] +[endsect] +[include contact_info.qbk] + +[endsect] [/section:main_overview Overview] + +[section:dist Statistical Distributions and Functions] +[include dist_tutorial.qbk] +[include dist_reference.qbk] +[endsect] [/section:dist Statistical Distributions and Functions] + +[section:special Special Functions] + +[section:sf_gamma Gamma Functions] +[include tgamma.qbk] +[include lgamma.qbk] +[include digamma.qbk] +[include gamma_ratios.qbk] +[include igamma.qbk] +[include igamma_inv.qbk] +[include gamma_derivatives.qbk] +[endsect] [/section:sf_gamma Gamma Functions] + +[include factorials.qbk] + +[section:sf_beta Beta Functions] +[include beta.qbk] +[include ibeta.qbk] +[include ibeta_inv.qbk] +[include beta_derivative.qbk] +[endsect] [/section:sf_beta Beta Functions] + +[section:sf_erf Error Functions] +[include erf.qbk] +[include erf_inv.qbk] +[endsect] [/section:sf_erf Error Functions] + +[section:sf_poly Polynomials] +[include legendre.qbk] +[include laguerre.qbk] +[include hermite.qbk] +[include spherical_harmonic.qbk] +[endsect] [/section:sf_poly Polynomials] + +[section:bessel Bessel Functions] +[include bessel_introduction.qbk] +[include bessel_jy.qbk] +[include bessel_ik.qbk] +[include bessel_spherical.qbk] +[endsect] [/section:bessel Bessel Functions] + +[section:ellint Elliptic Integrals] +[include ellint_introduction.qbk] +[include ellint_carlson.qbk] +[include ellint_legendre.qbk] +[endsect] [/section:ellint Elliptic Integrals] + +[include powers.qbk] +[include sinc.qbk] +[include inv_hyper.qbk] +[include fpclassify.qbk] +[endsect] [/section:special Special Functions] + +[section:toolkit Internal Details and Tools (Experimental)] + +[include internals_overview.qbk] + +[section:internals1 Reused Utilities] +[include series.qbk] +[include fraction.qbk] +[include rational.qbk] +[include roots.qbk] +[include roots_without_derivatives.qbk] +[include minima.qbk] +[endsect] [/section:internals1 Reused Utilities] + +[section:internals2 Testing and Development] +[include polynomial.qbk] +[include minimax.qbk] +[include relative_error.qbk] +[include test_data.qbk] +[endsect] [/section:internals2 Testing and Development] + +[endsect] [/section:toolkit Toolkit] + +[section:using_udt Use with User Defined Floating-Point Types] +[include concepts.qbk] +[endsect] [/section:using_udt Use with User Defined Floating-Point Types] + +[include policy.qbk] + +[include performance.qbk] + +[section:backgrounders Backgrounders] +[include implementation.qbk] +[include error.qbk] [/relative error NOT handling] +[include lanczos.qbk] +[include remez.qbk] +[include references.qbk] +[endsect] [/section:backgrounds Backgrounders] + +[section:status Library Status] +[section:history1 History and What's New] +[history] +[endsect] +[section:compilers Compilers] +[compilers_overview] +[endsect] +[include issues.qbk] +[include credits.qbk] +[/include test_HTML4_symbols.qbk] +[/include test_Latin1_symbols.qbk] + +[endsect] [/section:status Status and Roadmap] + +[/ math.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/minima.qbk b/doc/sf_and_dist/minima.qbk new file mode 100644 index 000000000..18e21940c --- /dev/null +++ b/doc/sf_and_dist/minima.qbk @@ -0,0 +1,64 @@ +[section:minima Locating Function Minima] + +[h4 synopsis] + +`` +#include +`` + + template + std::pair brent_find_minima(F f, T min, T max, int bits); + + template + std::pair brent_find_minima(F f, T min, T max, int bits, boost::uintmax_t& max_iter); + +[h4 Description] + +These two functions locate the minima of the continuous function /f/ using Brent's +algorithm. Parameters are: + +[variablelist +[[f] [The function to minimise. The function should be smooth over the + range \[min,max\], with no maxima occurring in that interval.]] +[[min] [The lower endpoint of the range in which to search + for the minima.]] +[[max] [The upper endpoint of the range in which to search + for the minima.]] +[[bits] [The number of bits precision to which the minima should be found. + Note that in principle, the minima can not be located to greater + accuracy than the square root of machine epsilon, therefore if /bits/ + is set to a value greater than one half of the bits in type T, then + the value will be ignored.]] +[[max_iter] [The maximum number of iterations to use + in the algorithm, if not provided the algorithm will just + keep on going until the minima is found.]] +] + +[*Returns:] a pair containing the value of the abscissa at the minima and the value +of f(x) at the minima. + +[h4 Implementation] + +This is a reasonably faithful implementation of Brent's algorithm, refer +to: + +Brent, R.P. 1973, Algorithms for Minimization without Derivatives +(Englewood Cliffs, NJ: Prentice-Hall), Chapter 5. + +Numerical Recipes in C, The Art of Scientific Computing, +Second Edition, William H. Press, Saul A. Teukolsky, +William T. Vetterling, and Brian P. Flannery. +Cambridge University Press. 1988, 1992. + +An algorithm with guaranteed convergence for finding a zero +of a function, R. P. Brent, The Computer Journal, Vol 44, 1971. + +[endsect][/section:minima Locating Function Minima] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/minimax.qbk b/doc/sf_and_dist/minimax.qbk new file mode 100644 index 000000000..59b9a078d --- /dev/null +++ b/doc/sf_and_dist/minimax.qbk @@ -0,0 +1,159 @@ +[section:minimax Minimax Approximations and the Remez Algorithm] + +The directory libs/math/minimax contains a command line driven +program for the generation of minimax approximations using the Remez +algorithm. Both polynomial and rational approximations are supported, +although the latter are tricky to converge: it is not uncommon for +convergence of rational forms to fail. No such limitations are present +for polynomial approximations which should always converge smoothly. + +It's worth stressing that developing rational approximations to functions +is often not an easy task, and one to which many books have been devoted. +To use this tool, you will need to have a reasonable grasp of what the Remez +algorithm is, and the general form of the approximation you want to achieve. + +Unless you already familar with the Remez method +you should first read the [link math_toolkit.backgrounders.remez +brief background article explaining the principals behind the +Remez algorithm]. + +The program consists of two parts: + +[variablelist +[[main.cpp][Contains the command line parser, and all the calls to the Remez code.]] +[[f.cpp][Contains the function to approximate.]] +] + +Therefore to use this tool, you must modify f.cpp to return the function to +approximate. The tools supports multiple function approximations within +the same compiled program: each as a separate variant: + + NTL::RR f(const NTL::RR& x, int variant); + +Returns the value of the function /variant/ at point /x/. So if you +wish you can just add the function to approximate as a new variant +after the existing examples. + +In addition to those two files, the program needs to be linked to +a [link math_toolkit.using_udt.use_ntl patched NTL library to compile]. + +Note that the function /f/ must return the rational part of the +approximation: for example if you are approximating a function +/f(x)/ then it is quite common to use: + + f(x) = g(x)(Y + R(x)) + +where /g(x)/ is the dominant part of /f(x)/, /Y/ is some constant, and +/R(x)/ is the rational approximation part, usually optimised for a low +absolute error compared to |Y|. + +In this case you would define /f/ to return ['f(x)/g(x)] and then set the +y-offset of the approximation to /Y/ (see command line options below). + +Many other forms are possible, but in all cases the objective is to +split /f(x)/ into a dominant part that you can evaluate easily using +standard math functions, and a smooth and slowly changing rational approximation +part. Refer to your favourite textbook for more examples. + +Command line options for the program are as follows: + +[variablelist +[[variant N][Sets the current function variant to N. This allows multiple functions + that are to be approximated to be compiled into the same executable. + Defaults to 0.]] +[[range a b][Sets the domain for the approximation to the range \[a,b\], defaults + to \[0,1\].]] +[[relative][Sets the Remez code to optimise for relative error. This is the default + at program startup. Note that relative error can only be used + if f(x) has no roots over the range being optimised.]] +[[absolute][Sets the Remez code to optimise for absolute error.]] +[[pin \[true|false\]]["Pins" the code so that the rational approximation + passes through the origin. Obviously only set this to + /true/ if R(0) must be zero. This is typically used when + trying to preserve a root at \[0,0\] while also optimising + for relative error.]] +[[order N D][Sets the order of the approximation to /N/ in the numerator and /D/ + in the denominator. If /D/ is zero then the result will be a polynomial + approximation. There will be N+D+2 coefficients in total, the first + coefficient of the numerator is zero if /pin/ was set to true, and the + first coefficient of the denominator is always one.]] +[[working-precision N][Sets the working precision of NTL::RR to /N/ binary digits. Defaults to 250.]] +[[target-precision N][Sets the precision of printed output to /N/ binary digits: + set to the same number of digits as the type that will be used to + evaluate the approximation. Defaults to 53 (for double precision).]] +[[skew val]["Skews" the initial interpolated control points towards one + end or the other of the range. Positive values skew the + initial control points towards the left hand side of the + range, and negative values towards the right hand side. + If an approximation won't converge (a common situation) + try adjusting the skew parameter until the first step yields + the smallest possible error. /val/ should be in the range + \[-100,+100\], the default is zero.]] +[[brake val][Sets a brake on each step so that the change in the + control points is braked by /val%/. Defaults to 50, + try a higher value if an approximation won't converge, + or a lower value to get speedier convergence.]] +[[x-offset val][Sets the x-offset to /val/: the approximation will + be generated for `f(x + X) + Y` where /X/ is the x-offset + and /Y/ is the y-offset. Defaults to zero. To avoid + rounding errors, take care to specify a value that can + be exactly represented as a floating point number.]] +[[y-offset val][Sets the y-offset to /val/: the approximation will + be generated for `f(x + X) + Y` where /X/ is the x-offset + and /Y/ is the y-offset. Defaults to zero. To avoid + rounding errors, take care to specify a value that can + be exactly represented as a floating point number.]] +[[y-offset auto][Sets the y-offset to the average value of f(x) + evaluated at the two endpoints of the range plus the midpoint + of the range. The calculated value is deliberately truncated + to /float/ precision (and should be stored as a /float/ + in your code). The approximation will + be generated for `f(x + X) + Y` where /X/ is the x-offset + and /Y/ is the y-offset. Defaults to zero.]] +[[graph N][Prints N evaluations of f(x) at evenly spaced points over the + range being optimised. If unspecified then /N/ defaults + to 3. Use to check that f(x) is indeed smooth over the range + of interest.]] +[[step N][Performs /N/ steps, or one step if /N/ is unspecified. + After each step prints: the peek error at the extrema of + the error function of the approximation, + the theoretical error term solved for on the last step, + and the maximum relative change in the location of the + Chebyshev control points. The approximation is converged on the + minimax solution when the two error terms are (approximately) + equal, and the change in the control points has decreased to + a suitably small value.]] +[[test \[float|double|long\]][Tests the current approximation at float, + double, or long double precision. Useful to check for rounding + errors in evaluating the approximation at fixed precision. + Tests are conducted at the extrema of the error function of the + approximation, and at the zeros of the error function.]] +[[test \[float|double|long\] N] [Tests the current approximation at float, + double, or long double precision. Useful to check for rounding + errors in evaluating the approximation at fixed precision. + Tests are conducted at N evenly spaced points over the range + of the approximation. If none of \[float|double|long\] are specified + then tests using NTL::RR, this can be used to obtain the error + function of the approximation.]] +[[rescale a b][Takes the current Chebeshev control points, and rescales them + over a new interval \[a,b\]. Sometimes this can be used to obtain + starting control points for an approximation that can not otherwise be + converged.]] +[[rotate][Moves one term from the numerator to the denominator, but keeps the + Chebyshev control points the same. Sometimes this can be used to obtain + starting control points for an approximation that can not otherwise be + converged.]] +[[info][Prints out the current approximation: the location of the zeros of the + error function, the location of the Chebyshev control points, the + x and y offsets, and of course the coefficients of the polynomials.]] +] + + +[endsect][/section:minimax Minimax Approximations and the Remez Algorithm] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/overview.qbk b/doc/sf_and_dist/overview.qbk new file mode 100644 index 000000000..69982aeb4 --- /dev/null +++ b/doc/sf_and_dist/overview.qbk @@ -0,0 +1,90 @@ +[section:intro About the Math Toolkit] + +This library is divided into three interconnected parts: + +[h4 Statistical Distributions] + +Provides a reasonably comprehensive set of +[link math_toolkit.dist statistical distributions], +upon which higher level statistical tests can be built. + +The initial focus is on the central +[@http://en.wikipedia.org/wiki/Univariate univariate ] +[@http://mathworld.wolfram.com/StatisticalDistribution.html distributions]. +Both [@http://mathworld.wolfram.com/ContinuousDistribution.html continuous] +(like [link math_toolkit.dist.dist_ref.dists.normal_dist normal] +& [link math_toolkit.dist.dist_ref.dists.f_dist Fisher]) +and [@http://mathworld.wolfram.com/DiscreteDistribution.html discrete] +(like [link math_toolkit.dist.dist_ref.dists.binomial_dist binomial] +& [link math_toolkit.dist.dist_ref.dists.poisson_dist Poisson]) +distributions are provided. + +A [link math_toolkit.dist.stat_tut comprehensive tutorial is provided], +along with a series of +[link math_toolkit.dist.stat_tut.weg worked examples] illustrating +how the library is used to conduct statistical tests. + +[h4 Mathematical Special Functions] + +Provides a small number of high quality +[link math_toolkit.special special functions], +initially these were concentrated on functions used in statistical applications +along with those in the [tr1]. + +The function families currently implemented are the gamma, beta & erf functions +along with the incomplete gamma and beta functions (four variants +of each) and all the possible inverses of these, plus digamma, +various factorial functions, +Bessel functions, elliptic integrals, sinus cardinals (along with their +hyperbolic variants), inverse hyperbolic functions, Legrendre/Laguerre/Hermite +polynomials and various +special power and logarithmic functions. + +All the implementations +are fully generic and support the use of arbitrary "real-number" types, +although they are optimised for use with types with known-about +[@http://en.wikipedia.org/wiki/Significand significand (or mantissa)] +sizes: typically `float`, `double` or `long double`. + +[h4 Implementation Toolkit] + +Provides [link math_toolkit.toolkit many of the tools] required to implement +mathematical special functions: hopefully the presence of +these will encourage other authors to contribute more special +function implementations in the future. These tools are currently +considered experimental: they are "exposed implementation details" +whose interfaces and\/or implementations may change. + +There are helpers for the +[link math_toolkit.toolkit.internals1.series_evaluation +evaluation of infinite series], +[link math_toolkit.toolkit.internals1.cf continued +fractions] and [link math_toolkit.toolkit.internals1.rational +rational approximations]. + +There is a fairly comprehensive set of root finding and +[link math_toolkit.toolkit.internals1.minima function minimisation +algorithms]: the root finding algorithms are both +[link math_toolkit.toolkit.internals1.roots with] and +[link math_toolkit.toolkit.internals1.roots2 without] derivative support. + +A [link math_toolkit.toolkit.internals2.minimax +Remez algorithm implementation] allows for the locating of minimax rational +approximations. + +There are also (experimental) classes for the +[link math_toolkit.toolkit.internals2.polynomials manipulation of polynomials], for +[link math_toolkit.toolkit.internals2.error_test +testing a special function against tabulated test data], and for +the [link math_toolkit.toolkit.internals2.test_data +rapid generation of test data] and/or data for output to an +external graphing application. + +[endsect] [/section:intro Introduction] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/performance.qbk b/doc/sf_and_dist/performance.qbk new file mode 100644 index 000000000..66b1000f0 --- /dev/null +++ b/doc/sf_and_dist/performance.qbk @@ -0,0 +1,369 @@ +[template perf[name value] [value]] +[template para[text] ''''''[text]''''''] + +[section:perf Performance] + +[section:perf_over Performance Overview] +[performance_overview] +[endsect] + +[section:interp Interpreting these Results] + +In all of the following tables, the best performing +result in each row, is assigned a relative value of "1" and shown +in bold, so a score of "2" means ['"twice as slow as the best +performing result".] Actual timings in seconds per function call +are also shown in parenthesis. + +Result were obtained on a system +with an Intel 2.8GHz Pentium 4 processor with 2Gb of RAM and running +either Windows XP or Mandriva Linux. + +[caution As usual +with performance results these should be taken with a large pinch +of salt: relative performance is known to shift quite a bit depending +upon the architecture of the particular test system used. Further +more, our performance results were obtained using our own test data: +these test values are designed to provide good coverage of our code and test +all the appropriate corner cases. They do not necessarily represent +"typical" usage: whatever that may be! +] + +[endsect] + +[section:getting_best Getting the Best Performance from this Library] + +By far the most important thing you can do when using this library +is turn on your compiler's optimisation options. As the following +table shows the penalty for using the library in debug mode can be +quite large. + +[table Performance Comparison of Release and Debug Settings +[[Function] + [Microsoft Visual C++ 8.0 + + Debug Settings: /Od /ZI + ] + [Microsoft Visual C++ 8.0 + + Release settings: /Ox /arch:SSE2 + ]] + +[[__erf][[perf msvc-debug-erf..[para 16.65][para (1.028e-006s)]]][[perf msvc-erf..[para *1.00*][para (6.173e-008s)]]]] +[[__erf_inv][[perf msvc-debug-erf_inv..[para 19.28][para (1.215e-006s)]]][[perf msvc-erf_inv..[para *1.00*][para (6.302e-008s)]]]] +[[__ibeta and __ibetac][[perf msvc-debug-ibeta..[para 8.32][para (1.540e-005s)]]][[perf msvc-ibeta..[para *1.00*][para (1.852e-006s)]]]] +[[__ibeta_inv and __ibetac_inv][[perf msvc-debug-ibeta_inv..[para 10.25][para (7.492e-005s)]]][[perf msvc-ibeta_inv..[para *1.00*][para (7.311e-006s)]]]] +[[__ibeta_inva, __ibetac_inva, __ibeta_invb and __ibetac_invb][[perf msvc-debug-ibeta_invab..[para 8.57][para (2.441e-004s)]]][[perf msvc-ibeta_invab..[para *1.00*][para (2.847e-005s)]]]] +[[__gamma_p and __gamma_q][[perf msvc-debug-igamma..[para 10.98][para (1.044e-005s)]]][[perf msvc-igamma..[para *1.00*][para (9.504e-007s)]]]] +[[__gamma_p_inv and __gamma_q_inv][[perf msvc-debug-igamma_inv..[para 10.25][para (3.721e-005s)]]][[perf msvc-igamma_inv..[para *1.00*][para (3.631e-006s)]]]] +[[__gamma_p_inva and __gamma_q_inva][[perf msvc-debug-igamma_inva..[para 11.26][para (1.124e-004s)]]][[perf msvc-igamma_inva..[para *1.00*][para (9.982e-006s)]]]] +] + +[endsect] + +[section:comp_compilers Comparing Compilers] + +After a good choice of build settings the next most important thing +you can do, is choose your compiler +- and the standard C library it sits on top of - very carefully. GCC-3.x +in particular has been found to be particularly bad at inlining code, +and performing the kinds of high level transformations that good C++ performance +demands (thankfully GCC-4.x is somewhat better in this respect). + +[table Performance Comparison of Various Windows Compilers +[[Function] + [Intel C++ 10.0 + + ( /Ox /Qipo /QxN ) + ] + [Microsoft Visual C++ 8.0 + + ( /Ox /arch:SSE2 ) + ] + [Cygwin G++ 3.4 + + ( /O3 ) + ]] +[[__erf][[perf intel-erf..[para *1.00*][para (4.118e-008s)]]][[perf msvc-erf..[para 1.50][para (6.173e-008s)]]][[perf gcc-erf..[para 3.24][para (1.336e-007s)]]]] +[[__erf_inv][[perf intel-erf_inv..[para *1.00*][para (4.439e-008s)]]][[perf msvc-erf_inv..[para 1.42][para (6.302e-008s)]]][[perf gcc-erf_inv..[para 7.88][para (3.500e-007s)]]]] +[[__ibeta and __ibetac][[perf intel-ibeta..[para *1.00*][para (1.631e-006s)]]][[perf msvc-ibeta..[para 1.14][para (1.852e-006s)]]][[perf gcc-ibeta..[para 3.05][para (4.975e-006s)]]]] +[[__ibeta_inv and __ibetac_inv][[perf intel-ibeta_inv..[para *1.00*][para (6.133e-006s)]]][[perf msvc-ibeta_inv..[para 1.19][para (7.311e-006s)]]][[perf gcc-ibeta_inv..[para 2.60][para (1.597e-005s)]]]] +[[__ibeta_inva, __ibetac_inva, __ibeta_invb and __ibetac_invb][[perf intel-ibeta_invab..[para *1.00*][para (2.453e-005s)]]][[perf msvc-ibeta_invab..[para 1.16][para (2.847e-005s)]]][[perf gcc-ibeta_invab..[para 2.83][para (6.947e-005s)]]]] +[[__gamma_p and __gamma_q][[perf intel-igamma..[para *1.00*][para (6.735e-007s)]]][[perf msvc-igamma..[para 1.41][para (9.504e-007s)]]][[perf gcc-igamma..[para 2.78][para (1.872e-006s)]]]] +[[__gamma_p_inv and __gamma_q_inv][[perf intel-igamma_inv..[para *1.00*][para (2.637e-006s)]]][[perf msvc-igamma_inv..[para 1.38][para (3.631e-006s)]]][[perf gcc-igamma_inv..[para 3.31][para (8.736e-006s)]]]] +[[__gamma_p_inva and __gamma_q_inva][[perf intel-igamma_inva..[para *1.00*][para (7.716e-006s)]]][[perf msvc-igamma_inva..[para 1.29][para (9.982e-006s)]]][[perf gcc-igamma_inva..[para 2.56][para (1.974e-005s)]]]] +] + +[endsect] + +[section:tuning Performance Tuning Macros] + +There are a small number of performance tuning options +that are determined by configuration macros. These should be set +in boost/math/tools/user.hpp; or else reported to the Boost-development +mailing list so that the appropriate option for a given compiler and +OS platform can be set automatically in our configuration setup. + +[table +[[Macro][Meaning]] +[[BOOST_MATH_POLY_METHOD] + [Determines how polynomials and most rational functions + are evaluated. Define to one + of the values 0, 1, 2 or 3: see below for the meaning of these values.]] +[[BOOST_MATH_RATIONAL_METHOD] + [Determines how symmetrical rational functions are evaluated: mostly + this only effects how the Lanczos approximation is evaluated, and how + the `evaluate_rational` function behaves. Define to one + of the values 0, 1, 2 or 3: see below for the meaning of these values. + ]] +[[BOOST_MATH_MAX_POLY_ORDER] + [The maximum order of polynomial or rational function that will + be evaluated by a method other than 0 (a simple "for" loop). + ]] +[[BOOST_MATH_INT_TABLE_TYPE(RT, IT)] + [Many of the coefficients to the polynomials and rational functions + used by this library are integers. Normally these are stored as tables + as integers, but if mixed integer / floating point arithmetic is much + slower than regular floating point arithmetic then they can be stored + as tables of floating point values instead. If mixed arithmetic is slow + then add: + + #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) RT + + to boost/math/tools/user.hpp, otherwise the default of: + + #define BOOST_MATH_INT_TABLE_TYPE(RT, IT) IT + + Set in boost/math/config.hpp is fine, and may well result in smaller + code. + ]] +] + +The values to which `BOOST_MATH_POLY_METHOD` and `BOOST_MATH_RATIONAL_METHOD` +may be set are as follows: + +[table +[[Value][Effect]] +[[0][The polynomial or rational function is evaluated using Horner's + method, and a simple for-loop. + + Note that if the order of the polynomial + or rational function is a runtime parameter, or the order is + greater than the value of `BOOST_MATH_MAX_POLY_ORDER`, then + this method is always used, irrespective of the value + of `BOOST_MATH_POLY_METHOD` or `BOOST_MATH_RATIONAL_METHOD`.]] +[[1][The polynomial or rational function is evaluated without + the use of a loop, and using Horner's method. This only occurs + if the order of the polynomial is known at compile time and is less + than or equal to `BOOST_MATH_MAX_POLY_ORDER`. ]] +[[2][The polynomial or rational function is evaluated without + the use of a loop, and using a second order Horner's method. + In theory this permits two operations to occur in parallel + for polynomials, and four in parallel for rational functions. + This only occurs + if the order of the polynomial is known at compile time and is less + than or equal to `BOOST_MATH_MAX_POLY_ORDER`.]] +[[3][The polynomial or rational function is evaluated without + the use of a loop, and using a second order Horner's method. + In theory this permits two operations to occur in parallel + for polynomials, and four in parallel for rational functions. + This differs from method "2" in that the code is carefully ordered + to make the parallelisation more obvious to the compiler: rather than + relying on the compiler's optimiser to spot the parallelisation + opportunities. + This only occurs + if the order of the polynomial is known at compile time and is less + than or equal to `BOOST_MATH_MAX_POLY_ORDER`.]] +] + +To determine which +of these options is best for your particular compiler/platform build +the performance test application with your usual release settings, +and run the program with the --tune command line option. + +In practice the difference between methods is rather small at present, +as the following table shows. However, parallelisation /vectorisation +is likely to become more important in the future: quite likely the methods +currently supported will need to be supplemented or replaced by ones more +suited to highly vectorisable processors in the future. + +[table A Comparison of Polynomial Evaluation Methods +[[Compiler/platform][Method 0][Method 1][Method 2][Method 3]] +[[Microsoft C++ 8.0, Polynomial evaluation] [[perf msvc-Polynomial-method-0..[para 1.34][para (1.161e-007s)]]][[perf msvc-Polynomial-method-1..[para 1.13][para (9.777e-008s)]]][[perf msvc-Polynomial-method-2..[para 1.07][para (9.289e-008s)]]][[perf msvc-Polynomial-method-3..[para *1.00*][para (8.678e-008s)]]]] +[[Microsoft C++ 8.0, Rational evaluation] [[perf msvc-Rational-method-0..[para *1.00*][para (1.443e-007s)]]][[perf msvc-Rational-method-1..[para 1.03][para (1.492e-007s)]]][[perf msvc-Rational-method-2..[para 1.20][para (1.736e-007s)]]][[perf msvc-Rational-method-3..[para 1.07][para (1.540e-007s)]]]] +[[Intel C++ 10.0 (Windows), Polynomial evaluation] [[perf intel-Polynomial-method-0..[para 1.03][para (7.702e-008s)]]][[perf intel-Polynomial-method-1..[para 1.03][para (7.702e-008s)]]][[perf intel-Polynomial-method-2..[para *1.00*][para (7.446e-008s)]]][[perf intel-Polynomial-method-3..[para 1.03][para (7.690e-008s)]]]] +[[Intel C++ 10.0 (Windows), Rational evaluation] [[perf intel-Rational-method-0..[para *1.00*][para (1.245e-007s)]]][[perf intel-Rational-method-1..[para *1.00*][para (1.245e-007s)]]][[perf intel-Rational-method-2..[para 1.18][para (1.465e-007s)]]][[perf intel-Rational-method-3..[para 1.06][para (1.318e-007s)]]]] +[[GNU G++ 4.2 (Linux), Polynomial evaluation] [[perf gcc-4_2-ld-Polynomial-method-0..[para 1.61][para (1.220e-007s)]]][[perf gcc-4_2-ld-Polynomial-method-1..[para 1.68][para (1.269e-007s)]]][[perf gcc-4_2-ld-Polynomial-method-2..[para 1.23][para (9.275e-008s)]]][[perf gcc-4_2-ld-Polynomial-method-3..[para *1.00*][para (7.566e-008s)]]]] +[[GNU G++ 4.2 (Linux), Rational evaluation] [[perf gcc-4_2-ld-Rational-method-0..[para 1.26][para (1.660e-007s)]]][[perf gcc-4_2-ld-Rational-method-1..[para 1.33][para (1.758e-007s)]]][[perf gcc-4_2-ld-Rational-method-2..[para *1.00*][para (1.318e-007s)]]][[perf gcc-4_2-ld-Rational-method-3..[para 1.15][para (1.513e-007s)]]]] +[[Intel C++ 10.0 (Linux), Polynomial evaluation] [[perf intel-linux-Polynomial-method-0..[para 1.15][para (9.154e-008s)]]][[perf intel-linux-Polynomial-method-1..[para 1.15][para (9.154e-008s)]]][[perf intel-linux-Polynomial-method-2..[para *1.00*][para (7.934e-008s)]]][[perf intel-linux-Polynomial-method-3..[para *1.00*][para (7.934e-008s)]]]] +[[Intel C++ 10.0 (Linux), Rational evaluation] [[perf intel-linux-Rational-method-0..[para *1.00*][para (1.245e-007s)]]][[perf intel-linux-Rational-method-1..[para *1.00*][para (1.245e-007s)]]][[perf intel-linux-Rational-method-2..[para 1.35][para (1.684e-007s)]]][[perf intel-linux-Rational-method-3..[para 1.04][para (1.294e-007s)]]]] +] + +There is one final performance tuning option that is available as a compile time +[link math_toolkit.policy policy]. Normally when evaluating functions at `double` +precision, these are actually evaluated at `long double` precision internally: +this helps to ensure that as close to full `double` precision as possible is +achieved, but may slow down execution in some environments. The defaults for +this policy can be changed by +[link math_toolkit.policy.pol_ref.policy_defaults +defining the macro `BOOST_MATH_PROMOTE_DOUBLE_POLICY`] +to `false`, or +[link math_toolkit.policy.pol_ref.internal_promotion +by specifying a specific policy] when calling the special +functions or distributions. See also the +[link math_toolkit.policy.pol_tutorial policy tutorial]. + +[table Performance Comparison with and Without Internal Promotion to long double +[[Function] + [GCC 4.2 , Linux + + (with internal promotion of double to long double). + ] + [GCC 4.2, Linux + + (without promotion of double). + ] +] +[[__erf][[perf gcc-4_2-ld-erf..[para 1.48][para (1.387e-007s)]]][[perf gcc-4_2-erf..[para *1.00*][para (9.377e-008s)]]]] +[[__erf_inv][[perf gcc-4_2-ld-erf_inv..[para 1.11][para (4.009e-007s)]]][[perf gcc-4_2-erf_inv..[para *1.00*][para (3.598e-007s)]]]] +[[__ibeta and __ibetac][[perf gcc-4_2-ld-ibeta..[para 1.29][para (5.354e-006s)]]][[perf gcc-4_2-ibeta..[para *1.00*][para (4.137e-006s)]]]] +[[__ibeta_inv and __ibetac_inv][[perf gcc-4_2-ld-ibeta_inv..[para 1.44][para (2.220e-005s)]]][[perf gcc-4_2-ibeta_inv..[para *1.00*][para (1.538e-005s)]]]] +[[__ibeta_inva, __ibetac_inva, __ibeta_invb and __ibetac_invb][[perf gcc-4_2-ld-ibeta_invab..[para 1.25][para (7.009e-005s)]]][[perf gcc-4_2-ibeta_invab..[para *1.00*][para (5.607e-005s)]]]] +[[__gamma_p and __gamma_q][[perf gcc-4_2-ld-igamma..[para 1.26][para (3.116e-006s)]]][[perf gcc-4_2-igamma..[para *1.00*][para (2.464e-006s)]]]] +[[__gamma_p_inv and __gamma_q_inv][[perf gcc-4_2-ld-igamma_inv..[para 1.27][para (1.178e-005s)]]][[perf gcc-4_2-igamma_inv..[para *1.00*][para (9.291e-006s)]]]] +[[__gamma_p_inva and __gamma_q_inva][[perf gcc-4_2-ld-igamma_inva..[para 1.20][para (2.765e-005s)]]][[perf gcc-4_2-igamma_inva..[para *1.00*][para (2.311e-005s)]]]] +] + +[endsect] +[section:comparisons Comparisons to Other Open Source Libraries] + +We've run our performance tests both for our own code, and against other +open source implementations of the same functions. The results are +presented below to give you a rough idea of how they all compare. + +[caution +You should exercise extreme caution when interpreting +these results, relative performance may vary by platform, the tests use +data that gives good code coverage of /our/ code, but which may skew the +results towards the corner cases. Finally, remember that different +libraries make different choices with regard to performance verses +numerical stability. +] + +[heading Comparison to GSL-1.9 and Cephes] + +All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Windows XP +machine, with all the libraries compiled with Microsoft Visual C++ 2005 using +the `/Ox /arch:SSE2` options. + +[table +[[Function][Boost][GSL-1.9][Cephes]] +[[__tgamma][[perf msvc-gamma..[para 1.50][para (2.566e-007s)]]][[perf msvc-gamma-gsl..[para 1.54][para (2.627e-007s)]]][[perf msvc-gamma-cephes..[para *1.00*][para (1.709e-007s)]]]] +[[__lgamma][[perf msvc-lgamma..[para 1.73][para (2.688e-007s)]]][[perf msvc-lgamma-gsl..[para 3.61][para (5.621e-007s)]]][[perf msvc-lgamma-cephes..[para *1.00*][para (1.556e-007s)]]]] +[[__gamma_p and __gamma_q][[perf msvc-igamma..[para *1.00*][para (9.504e-007s)]]][[perf msvc-igamma-gsl..[para 2.15][para (2.042e-006s)]]][[perf msvc-igamma-cephes..[para 2.57][para (2.439e-006s)]]]] +[[__gamma_p_inv and __gamma_q_inv][[perf msvc-igamma_inv..[para *1.00*][para (3.631e-006s)]]][N\/A][+INF [footnote Cephes gets stuck in an infinite loop while trying to execute our test cases.]]] +[[__ibeta and __ibetac][[perf msvc-ibeta..[para *1.00*][para (1.852e-006s)]]][[perf msvc-ibeta-cephes..[para 1.07][para (1.974e-006s)]]][[perf msvc-ibeta-cephes..[para 1.07][para (1.974e-006s)]]]] +[[__ibeta_inv and __ibetac_inv][[perf msvc-ibeta_inv..[para *1.00*][para (7.311e-006s)]]][N\/A][[perf msvc-ibeta_inv-cephes..[para 2.24][para (1.637e-005s)]]]] +] + +[heading Comparison to the R Statistical Library on Windows] + +All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Windows XP +machine, with the test program compiled with Microsoft Visual C++ 2005, and +R-2.5.0 compiled in "standalone mode" with MinGW-3.4 +(R-2.5.0 appears not to be buildable with Visual C++). + +[table A Comparison to the R Statistical Library on Windows XP +[[Statistical Function][Boost][R]] +[[__beta_distrib CDF][[perf msvc-dist-beta-cdf..[para 1.20][para (1.916e-006s)]]][[perf msvc-dist-beta-R-cdf..[para *1.00*][para (1.597e-006s)]]]] +[[__beta_distrib Quantile][[perf msvc-dist-beta-quantile..[para *1.00*][para (6.570e-006s)]]][[perf msvc-dist-beta-R-quantile..[para 74.66[footnote There are a small number of our test cases where the R library fails to converge on a result: these tend to dominate the performance result.]][para (4.905e-004s)]]]] +[[__binomial_distrib CDF][[perf msvc-dist-binomial-cdf..[para *1.00*][para (5.276e-007s)]]][[perf msvc-dist-binom-R-cdf..[para 2.45][para (1.293e-006s)]]]] +[[__binomial_distrib Quantile][[perf msvc-dist-binomial-quantile..[para *1.00*][para (4.013e-006s)]]][[perf msvc-dist-binom-R-quantile..[para 1.32][para (5.280e-006s)]]]] +[[__cauchy_distrib CDF][[perf msvc-dist-cauchy-cdf..[para *1.00*][para (1.231e-007s)]]][[perf msvc-dist-cauchy-R-cdf..[para 1.28][para (1.576e-007s)]]]] +[[__cauchy_distrib Quantile][[perf msvc-dist-cauchy-quantile..[para *1.00*][para (1.498e-007s)]]][[perf msvc-dist-cauchy-R-quantile..[para *1.00*][para (1.498e-007s)]]]] +[[__chi_squared_distrib CDF][[perf msvc-dist-chi_squared-cdf..[para *1.00*][para (7.889e-007s)]]][[perf msvc-dist-chisq-R-cdf..[para 2.48][para (1.955e-006s)]]]] +[[__chi_squared_distrib Quantile][[perf msvc-dist-chi_squared-quantile..[para *1.00*][para (4.303e-006s)]]][[perf msvc-dist-chisq-R-quantile..[para 1.61][para (6.925e-006s)]]]] +[[__exp_distrib CDF][[perf msvc-dist-exponential-cdf..[para *1.00*][para (1.955e-007s)]]][[perf msvc-dist-exp-R-cdf..[para 1.97][para (3.844e-007s)]]]] +[[__exp_distrib Quantile][[perf msvc-dist-exponential-quantile..[para 1.07][para (1.206e-007s)]]][[perf msvc-dist-exp-R-quantile..[para *1.00*][para (1.126e-007s)]]]] +[[__F_distrib CDF][[perf msvc-dist-fisher_f-cdf..[para *1.00*][para (1.309e-006s)]]][[perf msvc-dist-f-R-cdf..[para 2.12][para (2.780e-006s)]]]] +[[__F_distrib Quantile][[perf msvc-dist-fisher_f-quantile..[para *1.00*][para (7.204e-006s)]]][[perf msvc-dist-f-R-quantile..[para 1.78][para (1.280e-005s)]]]] +[[__gamma_distrib CDF][[perf msvc-dist-gamma-cdf..[para *1.00*][para (1.076e-006s)]]][[perf msvc-dist-gamma-R-cdf..[para 2.07][para (2.227e-006s)]]]] +[[__gamma_distrib Quantile][[perf msvc-dist-gamma-quantile..[para *1.00*][para (5.189e-006s)]]][[perf msvc-dist-gamma-R-quantile..[para 1.14][para (5.937e-006s)]]]] +[[__lognormal_distrib CDF][[perf msvc-dist-lognormal-cdf..[para *1.00*][para (2.078e-007s)]]][[perf msvc-dist-lnorm-R-cdf..[para 1.41][para (2.930e-007s)]]]] +[[__lognormal_distrib Quantile][[perf msvc-dist-lognormal-quantile..[para *1.00*][para (6.692e-007s)]]][[perf msvc-dist-lnorm-R-quantile..[para 1.63][para (1.090e-006s)]]]] +[[__negative_binomial_distrib CDF][[perf msvc-dist-negative_binomial-cdf..[para *1.00*][para (9.005e-007s)]]][[perf msvc-dist-nbinom-R-cdf..[para 2.42][para (2.178e-006s)]]]] +[[__negative_binomial_distrib Quantile][[perf msvc-dist-negative_binomial-quantile..[para *1.00*][para (9.601e-006s)]]][[perf msvc-dist-nbinom-R-quantile..[para 53.59[footnote The R library appears to use a linear-search strategy, that can perform very badly in a small number of pathological cases, but may or may not be more efficient in "typical" cases]][para (5.145e-004s)]]]] +[[__normal_distrib CDF][[perf msvc-dist-normal-cdf..[para *1.00*][para (5.926e-008s)]]][[perf msvc-dist-norm-R-cdf..[para 3.01][para (1.785e-007s)]]]] +[[__normal_distrib Quantile][[perf msvc-dist-normal-quantile..[para *1.00*][para (1.248e-007s)]]][[perf msvc-dist-norm-R-quantile..[para 1.05][para (1.311e-007s)]]]] +[[__poisson_distrib CDF][[perf msvc-dist-poisson-cdf..[para *1.00*][para (8.999e-007s)]]][[perf msvc-dist-pois-R-cdf..[para 2.42][para (2.175e-006s)]]]] +[[__poisson_distrib][[perf msvc-dist-poisson-quantile..[para *1.00*][para (1.853e-006s)]]][[perf msvc-dist-pois-R-quantile..[para 2.17][para (4.014e-006s)]]]] +[[__students_t_distrib CDF][[perf msvc-dist-students_t-cdf..[para *1.00*][para (1.223e-006s)]]][[perf msvc-dist-t-R-cdf..[para 1.13][para (1.376e-006s)]]]] +[[__students_t_distrib Quantile][[perf msvc-dist-students_t-quantile..[para *1.00*][para (2.570e-006s)]]][[perf msvc-dist-t-R-quantile..[para 1.04][para (2.668e-006s)]]]] +[[__weibull_distrib CDF][[perf msvc-dist-weibull-cdf..[para *1.00*][para (4.741e-007s)]]][[perf msvc-dist-weibull-R-cdf..[para 1.46][para (6.943e-007s)]]]] +[[__weibull_distrib Quantile][[perf msvc-dist-weibull-quantile..[para *1.00*][para (7.926e-007s)]]][[perf msvc-dist-weibull-R-quantile..[para 1.08][para (8.542e-007s)]]]] +] + +[heading Comparison to the R Statistical Library on Linux] + +All the results were measured on a 2.8GHz Intel Pentium 4, 2Gb RAM, Mandriva Linux +machine, with the test program and R-2.5.0 compiled with GNU G++ 4.2.0. + +[table A Comparison to the R Statistical Library on Linux +[[Statistical Function][Boost][R]] +[[__beta_distrib CDF][[perf gcc-4_2-dist-beta-cdf..[para 1.71][para (3.508e-006s)]]][[perf gcc-4_2-dist-beta-R-cdf..[para *1.00*][para (2.050e-006s)]]]] +[[__beta_distrib Quantile][[perf gcc-4_2-dist-beta-quantile..[para *1.00*][para (1.294e-005s)]]][[perf gcc-4_2-dist-beta-R-quantile..[para 44.06[footnote There are a small number of our test cases where the R library fails to converge on a result: these tend to dominate the performance result.]][para (5.701e-004s)]]]] +[[__binomial_distrib CDF][[perf gcc-4_2-dist-binomial-cdf..[para 1.22][para (1.342e-006s)]]][[perf gcc-4_2-dist-binom-R-cdf..[para *1.00*][para (1.104e-006s)]]]] +[[__binomial_distrib Quantile][[perf gcc-4_2-dist-binomial-quantile..[para 1.36][para (7.083e-006s)]]][[perf gcc-4_2-dist-binom-R-quantile..[para *1.00*][para (5.194e-006s)]]]] +[[__cauchy_distrib CDF][[perf gcc-4_2-dist-cauchy-cdf..[para *1.00*][para (1.372e-007s)]]][[perf gcc-4_2-dist-cauchy-R-cdf..[para 1.47][para (2.017e-007s)]]]] +[[__cauchy_distrib Quantile][[perf gcc-4_2-dist-cauchy-quantile..[para *1.00*][para (1.542e-007s)]]][[perf gcc-4_2-dist-cauchy-R-quantile..[para 1.14][para (1.752e-007s)]]]] +[[__chi_squared_distrib CDF][[perf gcc-4_2-dist-chi_squared-cdf..[para 1.04][para (1.820e-006s)]]][[perf gcc-4_2-dist-chisq-R-cdf..[para *1.00*][para (1.753e-006s)]]]] +[[__chi_squared_distrib Quantile][[perf gcc-4_2-dist-chi_squared-quantile..[para 1.39][para (9.345e-006s)]]][[perf gcc-4_2-dist-chisq-R-quantile..[para *1.00*][para (6.728e-006s)]]]] +[[__exp_distrib CDF][[perf gcc-4_2-dist-exponential-cdf..[para *1.00*][para (2.195e-007s)]]][[perf gcc-4_2-dist-exp-R-cdf..[para 1.17][para (2.561e-007s)]]]] +[[__exp_distrib Quantile][[perf gcc-4_2-dist-exponential-quantile..[para *1.00*][para (1.123e-007s)]]][[perf gcc-4_2-dist-exp-R-quantile..[para 1.03][para (1.155e-007s)]]]] +[[__F_distrib CDF][[perf gcc-4_2-dist-fisher_f-cdf..[para *1.00*][para (2.744e-006s)]]][[perf gcc-4_2-dist-f-R-cdf..[para 1.08][para (2.970e-006s)]]]] +[[__F_distrib Quantile][[perf gcc-4_2-dist-fisher_f-quantile..[para 1.14][para (1.550e-005s)]]][[perf gcc-4_2-dist-f-R-quantile..[para *1.00*][para (1.359e-005s)]]]] +[[__gamma_distrib CDF][[perf gcc-4_2-dist-gamma-cdf..[para 1.29][para (2.578e-006s)]]][[perf gcc-4_2-dist-gamma-R-cdf..[para *1.00*][para (1.992e-006s)]]]] +[[__gamma_distrib Quantile][[perf gcc-4_2-dist-gamma-quantile..[para 1.77][para (1.020e-005s)]]][[perf gcc-4_2-dist-gamma-R-quantile..[para *1.00*][para (5.757e-006s)]]]] +[[__lognormal_distrib CDF][[perf gcc-4_2-dist-lognormal-cdf..[para *1.00*][para (1.782e-007s)]]][[perf gcc-4_2-dist-lnorm-R-cdf..[para 2.00][para (3.564e-007s)]]]] +[[__lognormal_distrib Quantile][[perf gcc-4_2-dist-lognormal-quantile..[para *1.00*][para (7.093e-007s)]]][[perf gcc-4_2-dist-lnorm-R-quantile..[para 1.07][para (7.607e-007s)]]]] +[[__negative_binomial_distrib CDF][[perf gcc-4_2-dist-negative_binomial-cdf..[para 1.03][para (2.209e-006s)]]][[perf gcc-4_2-dist-nbinom-R-cdf..[para *1.00*][para (2.141e-006s)]]]] +[[__negative_binomial_distrib Quantile][[perf gcc-4_2-dist-negative_binomial-quantile..[para *1.00*][para (1.826e-005s)]]][[perf gcc-4_2-dist-nbinom-R-quantile..[para 30.07[footnote The R library appears to use a linear-search strategy, that can perform very badly in a small number of pathological cases, but may or may not be more efficient in "typical" cases]][para (5.490e-004s)]]]] +[[__normal_distrib CDF][[perf gcc-4_2-dist-normal-cdf..[para *1.00*][para (8.542e-008s)]]][[perf gcc-4_2-dist-norm-R-cdf..[para 2.09][para (1.782e-007s)]]]] +[[__normal_distrib Quantile][[perf gcc-4_2-dist-normal-quantile..[para *1.00*][para (1.362e-007s)]]][[perf gcc-4_2-dist-norm-R-quantile..[para 1.26][para (1.722e-007s)]]]] +[[__poisson_distrib CDF][[perf gcc-4_2-dist-poisson-cdf..[para 1.10][para (1.953e-006s)]]][[perf gcc-4_2-dist-pois-R-cdf..[para *1.00*][para (1.775e-006s)]]]] +[[__poisson_distrib][[perf gcc-4_2-dist-poisson-quantile..[para 1.12][para (4.214e-006s)]]][[perf gcc-4_2-dist-pois-R-quantile..[para *1.00*][para (3.752e-006s)]]]] +[[__students_t_distrib CDF][[perf gcc-4_2-dist-students_t-cdf..[para 1.55][para (2.441e-006s)]]][[perf gcc-4_2-dist-t-R-cdf..[para *1.00*][para (1.576e-006s)]]]] +[[__students_t_distrib Quantile][[perf gcc-4_2-dist-students_t-quantile..[para 1.33][para (3.972e-006s)]]][[perf gcc-4_2-dist-t-R-quantile..[para *1.00*][para (2.990e-006s)]]]] +[[__weibull_distrib CDF][[perf gcc-4_2-dist-weibull-cdf..[para *1.00*][para (6.640e-007s)]]][[perf gcc-4_2-dist-weibull-R-cdf..[para 1.06][para (7.031e-007s)]]]] +[[__weibull_distrib Quantile][[perf gcc-4_2-dist-weibull-quantile..[para *1.00*][para (7.504e-007s)]]][[perf gcc-4_2-dist-weibull-R-quantile..[para 1.03][para (7.710e-007s)]]]] +] + +[endsect] + +[section:perf_test_app The Performance Test Application] + +Under ['boost-path]\/libs\/math\/performance you will find a +(fairly rudimentary) performance test application for this library. + +To run this application yourself, build the all the .cpp files in +['boost-path]\/libs\/math\/performance into an application using +your usual release-build settings. Run the application with --help +to see a full list of options, or with --all to test everything +(which takes quite a while), or with --tune to test the +[link math_toolkit.perf.tuning available performance tuning options]. + +If you want to use this application to test the effect of changing +any of the __policy_section, then you will need to build and run it twice: +once with the default __policy_section, and then a second time with the +__policy_section you want to test set as the default. + +[endsect] + +[endsect] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/poisson_optimisation.qbk b/doc/sf_and_dist/poisson_optimisation.qbk new file mode 100644 index 000000000..dc02cd5e3 --- /dev/null +++ b/doc/sf_and_dist/poisson_optimisation.qbk @@ -0,0 +1,121 @@ +[sect:optim Optimisation Examples} + +[h4 Poisson Distribution - Optimization and Accuracy is quite complicated. + +The general formula for calculating the CDF uses the incomplete gamma thus: + + return gamma_q(k+1, mean); + +But the case of small integral k is *very* common, so it is worth considering optimisation. + +The first obvious step is to use a finite sum of each pdf (Probability *density* function) +for each value of k to build up the cdf (*cumulative* distribution function). + +This could be done using the pdf function for the distribution, +for which there are two equivalent formulae: + + return exp(-mean + log(mean) * k - lgamma(k+1)); + + return gamma_p_derivative(k+1, mean); + +The pdf would probably be more accurate using gamma_p_derivative. + +The reason is that the expression: + + -mean + log(mean) * k - lgamma(k+1) + +Will produce a value much smaller than the largest of the terms, so you get +cancellation error: and then when you pass the result to exp() which +converts the absolute error in it's argument to a relative error in the +result (explanation available if required), you effectively amplify the +error further still. + +gamma_p_derivative is just a thin wrapper around some of the internals of +the incomplete gamma, it does its utmost to avoid issues like this, because +this function is responsible for virtually all of the error in the result. +Hopefully further advances in the future might improve things even further +(what is really needed is an 'accurate' pow(1+x) function, but that's a whole +other story!). + +But calling pdf function makes repeated, redundant, checks on the value of mean and k, + + result += pdf(dist, i); + +so it may be faster to substitute the formula for the pdf in a summation loop + + result += exp(-mean) * pow(mean, i) / unchecked_factorial(i); + +(simplified by removing casting from RealType). + +Of course, mean is unchanged during this summation, +so exp(mean) should only be calculated once, outside the loop. + +Optimising compilers 'might' do this, but one can easily ensure this. + +Obviously too, k must be small enough that unchecked_factorial is OK: +34 is an obvious choice as the limit for 32-bit float. +For larger k, the number of iterations is like to be uneconomic. +Only experiment can determine the optimum value of k +for any particular RealType (float, double...) + +But also note that + +The incomplete gamma already optimises this case +(argument "a" is a small int), +although only when the result q (1-p) would be < 0.5. + +And moreover, in the above series, each term can be calculated +from the previous one much more efficiently: + +cdf = sum from 0 to k of C[k] + +with: + +C[0] = exp(-mean) + +C[N+1] = C[N] * mean / (N+1) + +So hopefully that's: + + { + RealType result = exp(-mean); + RealType term = result; + for(int i = 1; i <= k; ++i) + { // cdf is sum of pdfs. + term *= mean / i; + result += term; + } + return result; + } + +This is exactly the same finite sum as used by gamma_p/gamma_q internally. + +As explained previously it's only used when the result + +p > 0.5 or 1-p = q < 0.5. + +The slight danger when using the sum directly like this, is that if +the mean is small and k is large then you're calculating a value ~1, so +conceivably you might overshoot slightly. For this and other reasons in the +case when p < 0.5 and q > 0.5 gamma_p/gamma_q use a different (infinite but +rapidly converging) sum, so that danger isn't present since you always +calculate the smaller of p and q. + +So... it's tempting to suggest that you just call gamma_p/gamma_q as +required. However, there is a slight benefit for the k = 0 case because you +avoid all the internal logic inside gamma_p/gamma_q trying to figure out +which method to use etc. + +For the incomplete beta function, there are no simple finite sums +available (that I know of yet anyway), so when there's a choice between a +finite sum of the PDF and an incomplete beta call, the finite sum may indeed +win out in that case. + +[endsect][/sect:optim Optimisation Examples} + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/policy.qbk b/doc/sf_and_dist/policy.qbk new file mode 100644 index 000000000..88b9f5d52 --- /dev/null +++ b/doc/sf_and_dist/policy.qbk @@ -0,0 +1,826 @@ +[section:policy Policies] + +[section:pol_overview Policy Overview] +[policy_overview] +[endsect][/section:pol_overview Policy Overview] + +[include policy_tutorial.qbk] + +[section:pol_ref Policy Reference] + +[section:error_handling_policies Error Handling Policies] + +There are two orthogonal aspects to error handling: + +* What to do (if anything) with the error. +* What kind of error is being raised. + +[h4 Available Actions When an Error is Raised] + +What to do with the error is encapsulated by an enumerated type: + + namespace boost { namespace math { namespace policies { + + enum error_policy_type + { + throw_on_error = 0, // throw an exception. + errno_on_error = 1, // set ::errno & return 0, NaN, infinity or best guess. + ignore_error = 2, // return 0, NaN, infinity or best guess. + user_error = 3 // call a user-defined error handler. + }; + + }}} // namespaces + +The various enumerated values have the following meanings: + +[h5 throw_on_error] + +Will throw one of the following exceptions, depending upon the + type of the error: + [table + [[Error Type][Exception]] + [[Domain Error][std::domain_error]] + [[Pole Error][std::domain_error]] + [[Overflow Error][std::overflow_error]] + [[Underflow Error][std::underflow_error]] + [[Denorm Error][std::underflow_error]] + [[Evaluation Error][boost::math::evaluation_error]] + ] + +[h5 errno_on_error] + +Will set global `::errno` to one of the following values depending +upon the error type, and then return the same value as if the error +had been ignored: + [table + [[Error Type][errno value]] + [[Domain Error][EDOM]] + [[Pole Error][EDOM]] + [[Overflow Error][ERANGE]] + [[Underflow Error][ERANGE]] + [[Denorm Error][ERANGE]] + [[Evaluation Error][EDOM]] + ] + +[h5 ignore_error] + +Will return a one of the values below depending on the error type (`::errno` is NOT changed):: + [table + [[Error Type][Returned Value]] + [[Domain Error][std::numeric_limits::quiet_NaN()]] + [[Pole Error][std::numeric_limits::quiet_NaN()]] + [[Overflow Error][std::numeric_limits::infinity()]] + [[Underflow Error][0]] + [[Denorm Error][The denormalised value.]] + [[Evaluation Error][The best guess as to the result: which + may be significantly in error.]] + ] + +[h5 user_error] + +Will call a user defined error handler: these are forward declared +in boost/math/policies/error_handling.hpp, but the actual definitions +must be provided by the user: + + namespace boost{ namespace math{ namespace policies{ + + template + T user_domain_error(const char* function, const char* message, const T& val); + + template + T user_pole_error(const char* function, const char* message, const T& val); + + template + T user_overflow_error(const char* function, const char* message, const T& val); + + template + T user_underflow_error(const char* function, const char* message, const T& val); + + template + T user_denorm_error(const char* function, const char* message, const T& val); + + template + T user_evaluation_error(const char* function, const char* message, const T& val); + + }}} // namespaces + +Note that the strings ['function] and ['message] may contain "%1%" format specifiers +designed to be used in conjunction with Boost.Format. +If these strings are to be presented to the program's end-user then +the "%1%" format specifier +should be replaced with the name of type T in the ['function] string, and +if there is a %1% specifier in the ['message] string then it +should be replaced with the value of ['val]. + +There is more information on user-defined error handlers in +the [link math_toolkit.policy.pol_tutorial.user_def_err_pol +tutorial here]. + +[h4 Kinds of Error Raised] + +There are five kinds of error reported by this library, +which are summarised in the following table: + +[table +[[Error Type] + [Policy Class] + [Description]] +[[Domain Error] + [boost::math::policies::domain_error<['action]>] + [Raised when more or more arguments are outside the + defined range of the function. + + Defaults to `boost::math::policies::domain_error` + + When the action is set to ['throw_on_error] + then throws `std::domain_error`]] +[[Pole Error] + [boost::math::policies::pole_error<['action]>] + [Raised when more or more arguments would cause the function + to be evaluated at a pole. + + Defaults to `boost::math::policies::pole_error` + + When the action is ['throw_on_error] then + throw a `std::domain_error`]] +[[Overflow Error] + [boost::math::policies::overflow_error<['action]>] + [Raised when the result of the function is outside + the representable range of the floating point type used. + + Defaults to `boost::math::policies::overflow_error`. + + When the action is ['throw_on_error] then throws a `std::overflow_error`.]] +[[Underflow Error] + [boost::math::policies::underflow_error<['action]>] + [Raised when the result of the function is too small + to be represented in the floating point type used. + + Defaults to `boost::math::policies::underflow_error` + + When the specified action is ['throw_on_error] then + throws a `std::underflow_error`]] +[[Denorm Error] + [boost::math::policies::denorm_error<['action]>] + [Raised when the result of the function is a + denormalised value. + + Defaults to `boost::math::policies::denorm_error` + + When the action is ['throw_on_error] then throws a `std::underflow_error`]] +[[Evaluation Error] + [boost::math::policies::evaluation_error<['action]>] + [Raised when the result of the function is well defined and + finite, but we were unable to compute it. Typically + this occurs when an iterative method fails to converge. + Of course ideally this error should never be raised: feel free + to report it as a bug if it is! + + Defaults to `boost::math::policies::evaluation_error` + + When the action is ['throw_on_error] then throws `boost::math::evaluation_error`]] +] + +[h4 Examples] + +Suppose we want a call to `tgamma` to behave in a C-compatible way and set global +`::errno` rather than throw an exception, we can achieve this at the call site +using: + +[import ../../example/policy_ref_snip1.cpp] + +[policy_ref_snip1] + +Suppose we want a statistical distribution to return infinities, +rather than throw exceptions, then we can use: + +[import ../../example/policy_ref_snip2.cpp] + +[policy_ref_snip2] + +[endsect] [/section:error_handling_policies Error Handling Policies] + +[section:internal_promotion Internal Promotion Policies] + +Normally when evaluating a function at say `float` precision, maximal +accuracy is assured by conducting the calculation at `double` precision +internally, and then rounding the result. There are two policies that +effect whether internal promotion takes place or not: + +[table +[[Policy][Meaning]] +[[`boost::math::policies::promote_float`] + [Indicates whether `float` arguments should be promoted to `double` + precision internally: defaults to `boost::math::policies::promote_float`]] +[[`boost::math::policies::promote_double`] + [Indicates whether `double` arguments should be promoted to `long double` + precision internally: defaults to `boost::math::policies::promote_double`]] +] + +[h4 Examples] + +Suppose we want `tgamma` to be evaluated without internal promotion to +`long double`, then we could use: + +[import ../../example/policy_ref_snip3.cpp] +[policy_ref_snip3] + +Alternatively, suppose we want a distribution to perform calculations +without promoting `float` to `double`, then we could use: + +[import ../../example/policy_ref_snip4.cpp] +[policy_ref_snip4] + +[endsect] [/section:internal_promotion Internal Promotion Policies] + +[section:assert_undefined Mathematically Undefined Function Policies] + +There are some functions that are generic +(they are present for all the statistical distributions supported) +but which may be mathematically undefined for certain distributions, but defined for others. + +For example, the Cauchy distribution does not have a mean, so what should + + mean(cauchy<>()); + +return, and should such an expression even compile at all? + +The default behaviour is for all such functions to not compile at all + - in fact they will raise a +[@http://www.boost.org/libs/static_assert/index.html static assertion] + - but by changing the policy +we can have them return the result of a domain error instead +(which may well throw an exception, depending on the error handling policy). + +This behaviour is controlled by the `assert_undefined<>` policy: + + namespace boost{ namespace math{ namespace policies { + + template + class assert_undefined; + + }}} //namespaces + +For example: + + #include + + using namespace boost::math::policies; + using namespace boost::math; + + // This will not compile, cauchy has no mean! + double m1 = mean(cauchy()); + + // This will compile, but raises a domain error! + double m2 = mean(cauchy_distribution > >()); + +[endsect][/section:assert_undefined Mathematically Undefined Function Policies] + +[section:discrete_quant_ref Discrete Quantile Policies] + +If a statistical distribution is ['discrete] then the random variable +can only have integer values - this leaves us with a problem when calculating +quantiles - we can either ignore the discreteness of the distribution and return +a real value, or we can round to an integer. As it happens, computing integer +values can be substantially faster than calculating a real value, so there are +definite advantages to returning an integer, but we do then need to decide +how best to round the result. The `discrete_quantile` policy defines how +discrete quantiles work, and how integer results are rounded: + + enum discrete_quantile_policy_type + { + real, + integer_round_outwards, // default + integer_round_inwards, + integer_round_down, + integer_round_up, + integer_round_nearest + }; + + template + struct discrete_quantile; + +The values that `discrete_quantile` can take have the following meanings: + +[h5 real] + +Ignores the discreteness of the distribution, and returns a real-valued +result. For example: + +[import ../../example/policy_ref_snip5.cpp] +[policy_ref_snip5] + +Results in `x = 27.3898` and `y = 68.1584`. + +[h5 integer_round_outwards] + +This is the default policy: an integer value is returned so that: + +* Lower quantiles (where the probability is less than 0.5) are rounded +down. +* Upper quantiles (where the probability is greater than 0.5) are rounded up. + +This is normally the safest rounding policy, since it ensures that both +one and two sided intervals are guaranteed to have ['at least] +the requested coverage. For example: + +[import ../../example/policy_ref_snip6.cpp] +[policy_ref_snip6] + +Results in `x = 27` (rounded down from 27.3898) and `y = 69` (rounded up from 68.1584). + +The variables x and y are now defined so that: + + cdf(negative_binomial(20), x) <= 0.05 + cdf(negative_binomial(20), y) >= 0.95 + +In other words we guarantee ['at least 90% coverage in the central region overall], +and also ['no more than 5% coverage in each tail]. + +[h5 integer_round_inwards] + +This is the opposite of ['integer_round_outwards]: an integer value is returned so that: + +* Lower quantiles (where the probability is less than 0.5) are rounded +['up]. +* Upper quantiles (where the probability is greater than 0.5) are rounded ['down]. + +For example: + +[import ../../example/policy_ref_snip7.cpp] + +[policy_ref_snip7] + +Results in `x = 28` (rounded up from 27.3898) and `y = 68` (rounded down from 68.1584). + +The variables x and y are now defined so that: + + cdf(negative_binomial(20), x) >= 0.05 + cdf(negative_binomial(20), y) <= 0.95 + +In other words we guarantee ['at no more than 90% coverage in the central region overall], +and also ['at least 5% coverage in each tail]. + +[h5 integer_round_down] + +Always rounds down to an integer value, no matter whether it's an upper +or a lower quantile. + +[h5 integer_round_up] + +Always rounds up to an integer value, no matter whether it's an upper +or a lower quantile. + +[h5 integer_round_nearest] + +Always rounds to the nearest integer value, no matter whether it's an upper +or a lower quantile. This will produce the requested coverage +['in the average case], but for any specific example may results in +either significantly more or less coverage than the requested amount. +For example: + +For example: + +[import ../../example/policy_ref_snip8.cpp] + +[policy_ref_snip8] + +Results in `x = 27` (rounded from 27.3898) and `y = 68` (rounded from 68.1584). + +[endsect][/section:discrete_quant_ref Discrete Quantile Policies] + +[section:precision_pol Precision Policies] + +There are two equivalent policies that effect the ['working precision] +used to calculate results, these policies both default to 0 - meaning +calculate to the maximum precision available in the type being used + - but can be set to other values to cause lower levels of precision +to be used. + + namespace boost{ namespace math{ namespace policies{ + + template + digits10; + + template + digits2; + + }}} // namespaces + +As you would expect, ['digits10] specifies the number of decimal digits +to use, and ['digits2] the number of binary digits. Internally, whichever +is used, the precision is always converted to ['binary digits]. + +These policies are specified at compile-time, because many of the special +functions use compile-time-dispatch to select which approximation to use +based on the precision requested and the numeric type being used. + +For example we could calculate `tgamma` to approximately 5 decimal digits using: + +[import ../../example/policy_ref_snip9.cpp] + +[policy_ref_snip9] + +Or again using ['make_policy]: + +[import ../../example/policy_ref_snip10.cpp] + +[policy_ref_snip10] + +And for a quantile of a distribution to approximately 25-bit precision: + +[import ../../example/policy_ref_snip11.cpp] + +[policy_ref_snip11] + +[endsect][/section:precision_pol Precision Policies] + +[section:iteration_pol Iteration Limits Policies] + +There are two policies that effect the iterative algorithms +used to implement the special functions in this library: + + template + class max_series_iterations; + + template + class max_root_iterations; + +The class `max_series_iterations` determines the maximum number of +iterations permitted in a series evaluation, before the special +function gives up and returns the result of __evaluation_error. + +The class `max_root_iterations` determines the maximum number +of iterations permitted in a root-finding algorithm before the special +function gives up and returns the result of __evaluation_error. + +[endsect][/section:iteration_pol Iteration Limits Policies] + +[section:policy_defaults Using macros to Change the Policy Defaults] + +You can use the various macros below to change any (or all) of the policies. + +You can make a local change by placing a macro definition *before* +a function or distribution #include. + +[caution There is a danger of One-Definition-Rule violations if you +add ad-hock macros to more than one source files: these must be set the same in *every +translation unit*.] + +[caution If you place it after the #include it will have no effect, +(and it will affect only any other following #includes). +This is probably not what you intend!] + +If you want to alter the defaults for any or all of +the policies for *all* functions and distributions, installation-wide, +then you can do so by defining various macros in +[@../../../../../boost/math/tools/user.hpp boost/math/tools/user.hpp]. + +[h5 BOOST_MATH_DOMAIN_ERROR_POLICY] + +Defines what happens when a domain error occurs, if not defined then +defaults to `throw_on_error`, but can be set to any of the enumerated +actions for error handing: `throw_on_error`, `errno_on_error`, +`ignore_error` or `user_error`. + +[h5 BOOST_MATH_POLE_ERROR_POLICY] + +Defines what happens when a pole error occurs, if not defined then +defaults to `throw_on_error`, but can be set to any of the enumerated +actions for error handing: `throw_on_error`, `errno_on_error`, +`ignore_error` or `user_error`. + +[h5 BOOST_MATH_OVERFLOW_ERROR_POLICY] + +Defines what happens when an overflow error occurs, if not defined then +defaults to `throw_on_error`, but can be set to any of the enumerated +actions for error handing: `throw_on_error`, `errno_on_error`, +`ignore_error` or `user_error`. + +[h5 BOOST_MATH_EVALUATION_ERROR_POLICY] + +Defines what happens when an internal evaluation error occurs, if not defined then +defaults to `throw_on_error`, but can be set to any of the enumerated +actions for error handing: `throw_on_error`, `errno_on_error`, +`ignore_error` or `user_error`. + +[h5 BOOST_MATH_UNDERFLOW_ERROR_POLICY] + +Defines what happens when an overflow error occurs, if not defined then +defaults to `ignore_error`, but can be set to any of the enumerated +actions for error handing: `throw_on_error`, `errno_on_error`, +`ignore_error` or `user_error`. + +[h5 BOOST_MATH_DENORM_ERROR_POLICY] + +Defines what happens when a denormalisation error occurs, if not defined then +defaults to `ignore_error`, but can be set to any of the enumerated +actions for error handing: `throw_on_error`, `errno_on_error`, +`ignore_error` or `user_error`. + +[h5 BOOST_MATH_DIGITS10_POLICY] + +Defines how many decimal digits to use in internal computations: +defaults to `0` - meaning use all available digits - but can be set +to some other decimal value. Since setting this is likely to have +a substantial impact on accuracy, it's not generally recommended +that you change this from the default. + +[h5 BOOST_MATH_PROMOTE_FLOAT_POLICY] + +Determines whether `float` types get promoted to `double` +internally to ensure maximum precision in the result, defaults +to `true`, but can be set to `false` to turn promotion of +`float`'s off. + +[h5 BOOST_MATH_PROMOTE_DOUBLE_POLICY] + +Determines whether `double` types get promoted to `long double` +internally to ensure maximum precision in the result, defaults +to `true`, but can be set to `false` to turn promotion of +`double`'s off. + +[h5 BOOST_MATH_DISCRETE_QUANTILE_POLICY] + +Determines how discrete quantiles return their results: either +as an integer, or as a real value, can be set to one of the +enumerated values: `real`, `integer_round_outwards`, `integer_round_inwards`, +`integer_round_down`, `integer_round_up`, `integer_round_nearest`. Defaults to +`integer_round_outwards`. + +[h5 BOOST_MATH_ASSERT_UNDEFINED_POLICY] + +Determines whether functions that are mathematically undefined +for a specific distribution compile or raise a static (i.e. compile-time) +assertion. Defaults to `true`: meaning that any mathematically +undefined function will not compile. When set to `false` then the function +will compile but return the result of a domain error: this can be useful +for some generic code, that needs to work with all distributions and determine +at runtime whether or not a particular property is well defined. + +[h5 BOOST_MATH_MAX_SERIES_ITERATION_POLICY] + +Determines how many series iterations a special function is permitted +to perform before it gives up and returns an __evaluation_error: +Defaults to 1000000. + +[h5 BOOST_MATH_MAX_ROOT_ITERATION_POLICY] + +Determines how many root-finding iterations a special function is permitted +to perform before it gives up and returns an __evaluation_error: +Defaults to 200. + +[h5 Example] + +Suppose we want overflow errors to set `::errno` and return an infinity, +discrete quantiles to return a real-valued result (rather than round to +integer), and for mathematically undefined functions to compile, but return +a domain error. Then we could add the following to boost/math/tools/user.hpp: + + #define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error + #define BOOST_MATH_DISCRETE_QUANTILE_POLICY real + #define BOOST_MATH_ASSERT_UNDEFINED_POLICY false + +or we could place these definitions *before* + + #include + using boost::math::normal_distribution; + +in a source .cpp file. + +[endsect][/section:policy_defaults Changing the Policy Defaults] + +[section:namespace_pol Setting Polices at Namespace Scope] + +Sometimes what you really want to do is bring all the special functions, +or all the distributions into a specific namespace-scope, along with +a specific policy to use with them. There are two macros defined to +assist with that: + + BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(Policy) + +and: + + BOOST_MATH_DECLARE_DISTRIBUTIONS(Type, Policy) + +You can use either of these macros after including any special function +or distribution header. For example: + +[import ../../example/policy_ref_snip12.cpp] + +[policy_ref_snip12] + +In this example, using BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS results in +a set of thin inline forwarding functions being defined: + + template + inline T tgamma(T a){ return ::boost::math::tgamma(a, mypolicy()); } + + template + inline T lgamma(T a) ( return ::boost::math::lgamma(a, mypolicy()); } + +and so on. Note that while a forwarding function is defined for all the special +functions, however, unless you include the specific header for the special +function you use (or boost/math/special_functions.hpp to include everything), +you will get linker errors from functions that are forward declared, but not +defined. + +We can do the same thing with the distributions, but this time we need to +specify the floating-point type to use: + +[import ../../example/policy_ref_snip13.cpp] + +[policy_ref_snip13] + +In this example the result of BOOST_MATH_DECLARE_DISTRIBUTIONS is to +declare a typedef for each distribution like this: + + typedef boost::math::cauchy_distribution cauchy; + tyepdef boost::math::gamma_distribution gamma; + +and so on. The name given to each typedef is the name of the distribution +with the "_distribution" suffix removed. + +[endsect][/section Changing the Policy Defaults] + +[section:pol_ref_ref Policy Class Reference] + +There's very little to say here, the `policy` class is just a rag-bag +compile-time container for a collection of policies: + +```#include ``` + + + namespace boost{ + namespace math{ + namespace policies + + template + struct policy + { + public: + typedef ``['computed-from-template-arguments]`` domain_error_type; + typedef ``['computed-from-template-arguments]`` pole_error_type; + typedef ``['computed-from-template-arguments]`` overflow_error_type; + typedef ``['computed-from-template-arguments]`` underflow_error_type; + typedef ``['computed-from-template-arguments]`` denorm_error_type; + typedef ``['computed-from-template-arguments]`` evaluation_error_type; + typedef ``['computed-from-template-arguments]`` precision_type; + typedef ``['computed-from-template-arguments]`` promote_float_type; + typedef ``['computed-from-template-arguments]`` promote_double_type; + typedef ``['computed-from-template-arguments]`` discrete_quantile_type; + typedef ``['computed-from-template-arguments]`` assert_undefined_type; + }; + + template <...argument list...> + typename normalise, A1>::type make_policy(...argument list..); + + template + struct normalise + { + typedef ``computed-from-template-arguments`` type; + }; + +The member typedefs of class `policy` are intended for internal use +but are documented briefly here for the sake of completeness. + + policy<...>::domain_error_type + +Specifies how domain errors are handled, will be an instance of +`boost::math::policies::domain_error<>` with the template argument to +`domain_error` one of the `error_policy_type` enumerated values. + + policy<...>::pole_error_type + +Specifies how pole-errors are handled, will be an instance of +`boost::math::policies::pole_error<>` with the template argument to +`pole_error` one of the `error_policy_type` enumerated values. + + policy<...>::overflow_error_type + +Specifies how overflow errors are handled, will be an instance of +`boost::math::policies::overflow_error<>` with the template argument to +`overflow_error` one of the `error_policy_type` enumerated values. + + policy<...>::underflow_error_type + +Specifies how underflow errors are handled, will be an instance of +`boost::math::policies::underflow_error<>` with the template argument to +`underflow_error` one of the `error_policy_type` enumerated values. + + policy<...>::denorm_error_type + +Specifies how denorm errors are handled, will be an instance of +`boost::math::policies::denorm_error<>` with the template argument to +`denorm_error` one of the `error_policy_type` enumerated values. + + policy<...>::evaluation_error_type + +Specifies how evaluation errors are handled, will be an instance of +`boost::math::policies::evaluation_error<>` with the template argument to +`evaluation_error` one of the `error_policy_type` enumerated values. + + policy<...>::precision_type + +Specifies the internal precision to use in binary digits (uses zero +to represent whatever the default precision is). Will be an instance +of `boost::math::policies::digits2` which in turn inherits from +`boost::mpl::int_`. + + policy<...>::promote_float_type + +Specifies whether or not to promote `float` arguments to `double` precision +internally. Will be an instance of `boost::math::policies::promote_float` +which in turn inherits from `boost::mpl::bool_`. + + policy<...>::promote_double_type + +Specifies whether or not to promote `double` arguments to `long double` precision +internally. Will be an instance of `boost::math::policies::promote_float` +which in turn inherits from `boost::mpl::bool_`. + + policy<...>::discrete_quantile_type + +Specifies how discrete quantiles are evaluated, will be an instance +of `boost::math::policies::discrete_quantile<>` instantiated with one of +the `discrete_quantile_policy_type` enumerated type. + + policy<...>::assert_undefined_type + +Specifies whether mathematically-undefined properties are +asserted as compile-time errors, or treated as runtime errors +instead. Will be an instance of `boost::math::policies::assert_undefined` +which in turn inherits from `boost::math::mpl::bool_`. + + + template <...argument list...> + typename normalise, A1>::type make_policy(...argument list..); + +`make_policy` is a helper function that converts a list of policies into +a normalised `policy` class. + + template + struct normalise + { + typedef ``computed-from-template-arguments`` type; + }; + +The `normalise` class template converts one instantiation of the +`policy` class into a normalised form. This is used internally +to reduce code bloat: so that instantiating a special function +on `policy` or `policy` actually both generate the same +code internally. + +Further more, `normalise` can be used to combine +a policy with one or more policies: for example many of the +special functions will use this to set policies which they don't +make use of to their default values, before forwarding to the actual +implementation. In this way code bloat is reduced, since the +actual implementation depends only on the policy types that they +actually use. + +[endsect][/section:pol_ref_ref Policy Class Reference] + +[endsect][/section:pol_ref Policy Reference] +[endsect][/section:policy Policies] + +[/ math.qbk + Copyright 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/policy_tutorial.qbk b/doc/sf_and_dist/policy_tutorial.qbk new file mode 100644 index 000000000..e0b4668a5 --- /dev/null +++ b/doc/sf_and_dist/policy_tutorial.qbk @@ -0,0 +1,504 @@ + +[section:pol_tutorial Policy Tutorial] + +[section:what_is_a_policy So Just What is a Policy Anyway?] + +A policy is a compile-time mechanism for customising the behaviour of a +special function, or a statistical distribution. With Policies you can +control: + +* What action to take when an error occurs. +* What happens when you call a function that is mathematically undefined +(for example if you ask for the mean of a Cauchy distribution). +* What happens when you ask for a quantile of a discrete distribution. +* Whether the library is allowed to internally promote `float` to `double` +and `double` to `long double` in order to improve precision. +* What precision to use when calculating the result. + +Some of these policies could arguably be runtime variables, but then we couldn't +use compile-time dispatch internally to select the best evaluation method +for the given policies. + +For this reason a Policy is a /type/: in fact it's an instance of the +class template `boost::math::policies::policy<>`. This class is just a +compile-time-container of user-selected policies (sometimes called a type-list): + + using namespace boost::math::policies; + // + // Define a policy that sets ::errno on overflow, and does + // not promote double to long double internally: + // + typedef policy, promote_double > mypolicy; + +[endsect][/section:what_is_a_policy So Just What is a Policy Anyway?] + +[section:policy_tut_defaults Policies Have Sensible Defaults] + +Most of the time you can just ignore the policy framework, the defaults for +the various policies are as follows, if these work OK for you then you can +stop reading now! + +[variablelist +[[Domain Error][Throws a `std::domain_error` exception.]] +[[Pole Error][Occurs when a function is evaluated at a pole: throws a `std::domain_error` exception.]] +[[Overflow Error][Throws a `std::overflow_error` exception.]] +[[Underflow][Ignores the underflow, and returns zero.]] +[[Denormalised Result][Ignores the fact that the result is denormalised, and returns it.]] +[[Internal Evaluation Error][Throws a `boost::math::evaluation_error` exception.]] +[[Promotion of float to double][Does occur by default - gives full float precision results.]] +[[Promotion of double to long double][Does occur by default if long double offers + more precision than double.]] +[[Precision of Approximation Used][By default uses an approximation that + will result in the lowest level of error for the type of the result.]] +[[Behaviour of Discrete Quantiles] + [ + The quantile function will by default return an integer result that has been + /rounded outwards/. That is to say lower quantiles (where the probability is + less than 0.5) are rounded downward, and upper quantiles (where the probability + is greater than 0.5) are rounded upwards. This behaviour + ensures that if an X% quantile is requested, then /at least/ the requested + coverage will be present in the central region, and /no more than/ + the requested coverage will be present in the tails. + +This behaviour can be changed so that the quantile functions are rounded + differently, or even return a real-valued result using + [link math_toolkit.policy.pol_overview Policies]. It is strongly + recommended that you read the tutorial + [link math_toolkit.policy.pol_tutorial.understand_dis_quant + Understanding Quantiles of Discrete Distributions] before + using the quantile function on a discrete distribution. The + [link math_toolkit.policy.pol_ref.discrete_quant_ref reference docs] + describe how to change the rounding policy + for these distributions. +]] +] + +What's more, if you define your own policy type, then it automatically +inherits the defaults for any policies not explicitly set, so given: + + using namespace boost::math::policies; + // + // Define a policy that sets ::errno on overflow, and does + // not promote double to long double internally: + // + typedef policy, promote_double > mypolicy; + +then `mypolicy` defines a policy where only the overflow error handling and +`double`-promotion policies differ from the defaults. + +[endsect][/section:policy_tut_defaults Policies Have Sensible Defaults] + +[section:policy_usage So How are Policies Used Anyway?] + +The details follow later, but basically policies can be set by either: + +* Defining some macros that change the default behaviour: [*this is the + recommended method for setting installation-wide policies]. +* By instantiating a distribution object with an explicit policy: + this is mainly reserved for ad hoc policy changes. +* By passing a policy to a special function as an optional final argument: + this is mainly reserved for ad hoc policy changes. +* By using some helper macros to define a set of functions or distributions +in the current namespace that use a specific policy: [*this is the +recommended method for setting policies on a project- or translation-unit-wide +basis]. + +The following sections introduce these methods in more detail. + +[endsect][/section:policy_usage So How are Policies Used Anyway?] + +[section:changing_policy_defaults Changing the Policy Defaults] + +The default policies used by the library are changed by the usual +configuration macro method. + +For example, passing `-DBOOST_MATH_DOMAIN_ERROR_POLICY=errno_on_error` to +your compiler will cause domain errors to set `::errno` and return a NaN +rather than the usual default behaviour of throwing a `std::domain_error` +exception. + +[tip For Microsoft Visual Studio,you can add to the Project Property Page, +C/C++, Preprocessor, Preprocessor definitions like: + +``BOOST_MATH_ASSERT_UNDEFINED_POLICY=0 +BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error`` + +This may be helpful to avoid complications with pre-compiled headers +that may mean that the equivalent definitions in source code: + +``#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false +#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error`` + +may be ignored. + +The compiler command line shows: + +``/D "BOOST_MATH_ASSERT_UNDEFINED_POLICY=0" +/D "BOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error"`` +] [/MSVC tip] + +There is however a very important caveat to this: + +[important +[*['Default policies changed by setting configuration macros must be changed +uniformly in every translation unit in the program.]] + +Failure to follow this rule may result in violations of the "One +Definition Rule (ODR)" and result in unpredictable program behaviour.] + +That means there are only two safe ways to use these macros: + +* Edit them in [@../../../../../boost/math/tools/user.hpp boost/math/tools/user.hpp], +so that the defaults are set on an installation-wide basis. +Unfortunately this may not be convenient if +you are using a pre-installed Boost distribution (on Linux for example). +* Set the defines in your project's Makefile or build environment, so that they +are set uniformly across all translation units. + +What you should *not* do is: + +* Set the defines in the source file using `#define` as doing so +almost certainly will break your program, unless you're absolutely +certain that the program is restricted to a single translation unit. + +And, yes, you will find examples in our test programs where we break this +rule: but only because we know there will always be a single +translation unit only: ['don't say that you weren't warned!] + +[error_handling_example] + +[endsect][/section:changing_policy_defaults Changing the Policy Defaults] + +[section:ad_hoc_dist_policies Setting Policies for Distributions on an Ad Hoc Basis] + +All of the statistical distributions in this library are class templates +that accept two template parameters, both with sensible defaults, for +example: + + namespace boost{ namespace math{ + + template > + class fisher_f_distribution; + + typedef fisher_f_distribution<> fisher_f; + + }} + +This policy gets used by all the accessor functions that accept +a distribution as an argument, and forwarded to all the functions called +by these. So if you use the shorthand-typedef for the distribution, then you get +`double` precision arithmetic and all the default policies. + +However, say for example we wanted to evaluate the quantile +of the binomial distribution at float precision, without internal +promotion to double, and with the result rounded to the /nearest/ +integer, then here's how it can be done: + +[import ../../example/policy_eg_3.cpp] + +[policy_eg_3] + +Which outputs: + +[pre quantile is: 40] + +[endsect][/section:ad_hoc_dist_policies Setting Policies for Distributions on an Ad Hoc Basis] + +[section:ad_hoc_sf_policies Changing the Policy on an Ad Hoc Basis for the Special Functions] + +All of the special functions in this library come in two overloaded forms, +one with a final "policy" parameter, and one without. For example: + + namespace boost{ namespace math{ + + template + RealType tgamma(RealType, const Policy&); + + template + RealType tgamma(RealType); + + }} // namespaces + +Normally, the second version is just a forwarding wrapper to the first +like this: + + template + inline RealType tgamma(RealType x) + { + return tgamma(x, policies::policy<>()); + } + +So calling a special function with a specific policy +is just a matter of defining the policy type to use +and passing it as the final parameter. For example, +suppose we want `tgamma` to behave in a C-compatible +fashion and set `::errno` when an error occurs, and never +throw an exception: + +[import ../../example/policy_eg_1.cpp] + +[policy_eg_1] + +which outputs: + +[pre +Result of tgamma(30000) is: 1.#INF +errno = 34 +Result of tgamma(-10) is: 1.#QNAN +errno = 33 +] + +Alternatively, for ad hoc use, we can use the `make_policy` +helper function to create a policy for us: this usage is more +verbose, so is probably only preferred when a policy is going +to be used once only: + +[import ../../example/policy_eg_2.cpp] + +[policy_eg_2] + +[endsect][/section:ad_hoc_sf_policies Changing the Policy on an Ad Hoc Basis for the Special Functions] + +[section:namespace_policies Setting Policies at Namespace or Translation Unit Scope] + +Sometimes what you want to do is just change a set of policies within +the current scope: the one thing you should not do in this situation +is use the configuration macros, as this can lead to "One Definition +Rule" violations. Instead this library provides a pair of macros +especially for this purpose. + +Let's consider the special functions first: we can declare a set of +forwarding functions that all use a specific policy using the +macro BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(['Policy]). This +macro should be used either inside a unique namespace set aside for the +purpose, or an unnamed namespace if you just want the functions +visible in global scope for the current file only. + +[import ../../example/policy_eg_4.cpp] + +[policy_eg_4] + +The same mechanism works well at file scope as well, by using an unnamed +namespace, we can ensure that these declarations don't conflict with any +alternate policies present in other translation units: + +[import ../../example/policy_eg_5.cpp] + +[policy_eg_5] + +Handling the statistical distributions is very similar except that now +the macro BOOST_MATH_DECLARE_DISTRIBUTIONS accepts two parameters: the +floating point type to use, and the policy type to apply. For example: + + BOOST_MATH_DECLARE_DISTRIBUTIONS(double, mypolicy) + +Results a set of typedefs being defined like this: + + typedef boost::math::normal_distribution normal; + +The name of each typedef is the same as the name of the distribution +class template, but without the "_distribution" suffix. + +[import ../../example/policy_eg_6.cpp] + +[policy_eg_6] + +[note +There is an important limitation to note: you can not use the macros +BOOST_MATH_DECLARE_DISTRIBUTIONS and BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS +['in the same namespace], as doing so creates ambiguities between functions +and distributions of the same name. +] + +As before, the same mechanism works well at file scope as well: by using an unnamed +namespace, we can ensure that these declarations don't conflict with any +alternate policies present in other translation units: + +[import ../../example/policy_eg_7.cpp] + +[policy_eg_7] + +[endsect][/section:namespace_policies Setting Policies at Namespace or Translation Unit Scope] + +[section:user_def_err_pol Calling User Defined Error Handlers] + +[import ../../example/policy_eg_8.cpp] + +[policy_eg_8] + +[import ../../example/policy_eg_9.cpp] + +[policy_eg_9] + +[endsect][/section:user_def_err_pol Calling User Defined Error Handlers] + +[section:understand_dis_quant Understanding Quantiles of Discrete Distributions] + +Discrete distributions present us with a problem when calculating the +quantile: we are starting from a continuous real-valued variable - the +probability - but the result (the value of the random variable) +should really be discrete. + +Consider for example a Binomial distribution, with a sample size of +50, and a success fraction of 0.5. There are a variety of ways +we can plot a discrete distribution, but if we plot the PDF +as a step-function then it looks something like this: + +[$../graphs/binomial_pdf.png] + +Now lets suppose that the user asks for a the quantile that corresponds +to a probability of 0.05, if we zoom in on the CDF for that region here's +what we see: + +[$../graphs/binomial_quantile_1.png] + +As can be seen there is no random variable that corresponds to +a probability of exactly 0.05, so we're left with two choices as +shown in the figure: + +* We could round the result down to 18. +* We could round the result up to 19. + +In fact there's actually a third choice as well: we could "pretend" that the +distribution was continuous and return a real valued result: in this case we +would calculate a result of approximately 18.701 (this accurately +reflects the fact that the result is nearer to 19 than 18). + +By using policies we can offer any of the above as options, but that +still leaves the question: ['What is actually the right thing to do?] + +And in particular: ['What policy should we use by default?] + +In coming to an answer we should realise that: + +* Calculating an integer result is often much faster than +calculating a real-valued result: in fact in our tests it +was up to 20 times faster. +* Normally people calculate quantiles so that they can perform +a test of some kind: ['"If the random variable is less than N +then we can reject our null-hypothesis with 90% confidence."] + +So there is a genuine benefit to calculating an integer result +as well as it being "the right thing to do" from a philosophical +point of view. What's more if someone asks for a quantile at 0.05, +then we can normally assume that they are asking for +['[*at least] 95% of the probability to the right of the value chosen, +and [*no more than] 5% of the probability to the left of the value chosen.] + +In the above binomial example we would therefore round the result down to 18. + +The converse applies to upper-quantiles: If the probability is greater than +0.5 we would want to round the quantile up, ['so that [*at least] the requested +probability is to the left of the value returned, and [*no more than] 1 - the +requested probability is to the right of the value returned.] + +Likewise for two-sided intervals, we would round lower quantiles down, +and upper quantiles up. This ensures that we have ['at least the requested +probability in the central region] and ['no more than 1 minus the requested +probability in the tail areas.] + +For example, taking our 50 sample binomial distribution with a success fraction +of 0.5, if we wanted a two sided 90% confidence interval, then we would ask +for the 0.05 and 0.95 quantiles with the results ['rounded outwards] so that +['at least 90% of the probability] is in the central area: + +[$../graphs/binomial_pdf_3.png] + +So far so good, but there is in fact a trap waiting for the unwary here: + + quantile(binomial(50, 0.5), 0.05); + +returns 18 as the result, which is what we would expect from the graph above, +and indeed there is no x greater than 18 for which: + + cdf(binomial(50, 0.5), x) <= 0.05; + +However: + + quantile(binomial(50, 0.5), 0.95); + +returns 31, and indeed while there is no x less than 31 for which: + + cdf(binomial(50, 0.5), x) >= 0.95; + +We might naively expect that for this symmetrical distribution the result +would be 32 (since 32 = 50 - 18), but we need to remember that the cdf of +the binomial is /inclusive/ of the random variable. So while the left tail +area /includes/ the quantile returned, the right tail area always excludes +an upper quantile value: since that "belongs" to the central area. + +Look at the graph above to see what's going on here: the lower quantile +of 18 belongs to the left tail, so any value <= 18 is in the left tail. +The upper quantile of 31 on the other hand belongs to the central area, +so the tail area actually starts at 32, so any value > 31 is in the +right tail. + +Therefore if U and L are the upper and lower quantiles respectively, then +a random variable X is in the tail area - where we would reject the null +hypothesis if: + + X <= L || X > U + +And the a variable X is inside the central region if: + + L < X <= U + +The moral here is to ['always be very careful with your comparisons +when dealing with a discrete distribution], and if in doubt, +['base your comparisons on CDF's instead]. + +[heading Other Rounding Policies are Available] + +As you would expect from a section on policies, you won't be surprised +to know that other rounding options are available: + +[variablelist + +[[integer_round_outwards] + [This is the default policy as described above: lower quantiles + are rounded down (probability < 0.5), and upper quantiles + (probability > 0.5) are rounded up. + + This gives /no more than/ the requested probability + in the tails, and /at least/ the requested probability + in the central area.]] +[[integer_round_inwards] + [This is the exact opposite of the default policy: + lower quantiles + are rounded up (probability < 0.5), + and upper quantiles (probability > 0.5) are rounded down. + + This gives /at least/ the requested probability + in the tails, and /no more than/ the requested probability + in the central area.]] +[[integer_round_down][This policy will always round the result down + no matter whether it is an upper or lower quantile]] +[[integer_round_up][This policy will always round the result up + no matter whether it is an upper or lower quantile]] +[[integer_round_nearest][This policy will always round the result + to the nearest integer + no matter whether it is an upper or lower quantile]] +[[real][This policy will return a real valued result + for the quantile of a discrete distribution: this is + generally much slower than finding an integer result + but does allow for more sophisticated rounding policies.]] + +] + +[import ../../example/policy_eg_10.cpp] + +[policy_eg_10] + +[endsect] + +[endsect][/section:pol_Tutorial Policy Tutorial] + + +[/ math.qbk + Copyright 2007 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/polynomial.qbk b/doc/sf_and_dist/polynomial.qbk new file mode 100644 index 000000000..fc451f370 --- /dev/null +++ b/doc/sf_and_dist/polynomial.qbk @@ -0,0 +1,94 @@ +[section:polynomials Polynomials] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ namespace tools{ + + template + class polynomial + { + public: + // typedefs: + typedef typename std::vector::value_type value_type; + typedef typename std::vector::size_type size_type; + + // construct: + polynomial(){} + template + polynomial(const U* data, unsigned order); + template + polynomial(const U& point); + + // access: + size_type size()const; + size_type degree()const; + value_type& operator[](size_type i); + const value_type& operator[](size_type i)const; + + // operators: + template + polynomial& operator +=(const U& value); + template + polynomial& operator -=(const U& value); + template + polynomial& operator *=(const U& value); + template + polynomial& operator +=(const polynomial& value); + template + polynomial& operator -=(const polynomial& value); + template + polynomial& operator *=(const polynomial& value); + }; + + template + polynomial operator + (const polynomial& a, const polynomial& b); + template + polynomial operator - (const polynomial& a, const polynomial& b); + template + polynomial operator * (const polynomial& a, const polynomial& b); + + template + polynomial operator + (const polynomial& a, const U& b); + template + polynomial operator - (const polynomial& a, const U& b); + template + polynomial operator * (const polynomial& a, const U& b); + + template + polynomial operator + (const U& a, const polynomial& b); + template + polynomial operator - (const U& a, const polynomial& b); + template + polynomial operator * (const U& a, const polynomial& b); + + template + std::basic_ostream& operator << + (std::basic_ostream& os, const polynomial& poly); + + }}} // namespaces + +[h4 Description] + +This is a fairly trivial class for polynomial manipulation. + +Implementation is currently of the "naive" variety, with O(N^2) +multiplication for example. This class should not be used in +high-performance computing environments: it is intended for the +simple manipulation of small polynomials, typically generated +for special function approximation. + +Advanced manipulations: the FFT, division, GCD, factorisation etc are +not currently provided. Submissions for these are of course welcome :-) + +[endsect][/section:polynomials Polynomials] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/powers.qbk b/doc/sf_and_dist/powers.qbk new file mode 100644 index 000000000..ea6cf7854 --- /dev/null +++ b/doc/sf_and_dist/powers.qbk @@ -0,0 +1,260 @@ +[section:powers Logs, Powers, Roots and Exponentials] + +[section:log1p log1p] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` log1p(T x); + + template + ``__sf_result`` log1p(T x, const ``__Policy``&); + + }} // namespaces + +Returns the natural logarithm of `x+1`. + +The return type of this function is computed using the __arg_pomotion_rules: +the return is `double` when /x/ is an integer type and T otherwise. + +[optional_policy] + +There are many situations where it is desirable to compute `log(x+1)`. +However, for small `x` then `x+1` suffers from catastrophic cancellation errors +so that `x+1 == 1` and `log(x+1) == 0`, when in fact for very small x, the +best approximation to `log(x+1)` would be `x`. `log1p` calculates the best +approximation to `log(1+x)` using a Taylor series expansion for accuracy +(less than __te). +Alternatively note that there are faster methods available, +for example using the equivalence: + + log(1+x) == (log(1+x) * x) / ((1-x) - 1) + +However, experience has shown that these methods tend to fail quite spectacularly +once the compiler's optimizations are turned on, consequently they are +used only when known not to break with a particular compiler. +In contrast, the series expansion method seems to be reasonably +immune to optimizer-induced errors. + +Finally when BOOST_HAS_LOG1P is defined then the `float/double/long double` +specializations of this template simply forward to the platform's +native (POSIX) implementation of this function. + +[h4 Accuracy] + +For built in floating point types `log1p` +should have approximately 1 epsilon accuracy. + +[h4 Testing] + +A mixture of spot test sanity checks, and random high precision test values +calculated using NTL::RR at 1000-bit precision. + +[endsect] + +[section:expm1 expm1] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` expm1(T x); + + template + ``__sf_result`` expm1(T x, const ``__Policy``&); + + }} // namespaces + +Returns e[super x] - 1. + +The return type of this function is computed using the __arg_pomotion_rules: +the return is `double` when /x/ is an integer type and T otherwise. + +[optional_policy] + +For small x, then __ex is very close to 1, as a result calculating __exm1 results +in catastrophic cancellation errors when x is small. `expm1` calculates __exm1 using +rational approximations (for up to 128-bit long doubles), otherwise via +a series expansion when x is small (giving an accuracy of less than __te). + +Finally when BOOST_HAS_EXPM1 is defined then the `float/double/long double` +specializations of this template simply forward to the platform's +native (POSIX) implementation of this function. + +[h4 Accuracy] + +For built in floating point types `expm1` +should have approximately 1 epsilon accuracy. + +[h4 Testing] + +A mixture of spot test sanity checks, and random high precision test values +calculated using NTL::RR at 1000-bit precision. + +[endsect] + +[section:cbrt cbrt] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` cbrt(T x); + + template + ``__sf_result`` cbrt(T x, const ``__Policy``&); + + }} // namespaces + +Returns the cubed root of x: x[super 1/3]. + +The return type of this function is computed using the __arg_pomotion_rules: +the return is `double` when /x/ is an integer type and T otherwise. + +[optional_policy] + +Implemented using Halley iteration. + +[h4 Accuracy] + +For built in floating-point types `cbrt` +should have approximately 2 epsilon accuracy. + +[h4 Testing] + +A mixture of spot test sanity checks, and random high precision test values +calculated using NTL::RR at 1000-bit precision. + +[endsect] + +[section:sqrt1pm1 sqrt1pm1] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` sqrt1pm1(T x); + + template + ``__sf_result`` sqrt1pm1(T x, const ``__Policy``&); + + }} // namespaces + +Returns `sqrt(1+x) - 1`. + +The return type of this function is computed using the __arg_pomotion_rules: +the return is `double` when /x/ is an integer type and T otherwise. + +[optional_policy] + +This function is useful when you need the difference between sqrt(x) and 1, when +x is itself close to 1. + +Implemented in terms of `log1p` and `expm1`. + +[h4 Accuracy] + +For built in floating-point types `sqrt1pm1` +should have approximately 3 epsilon accuracy. + +[h4 Testing] + +A selection of random high precision test values +calculated using NTL::RR at 1000-bit precision. + +[endsect] + +[section:powm1 powm1] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` powm1(T1 x, T2 y); + + template + ``__sf_result`` powm1(T1 x, T2 y, const ``__Policy``&); + + }} // namespaces + +Returns x[super y ] - 1. + +The return type of this function is computed using the __arg_pomotion_rules +when T1 and T2 are dufferent types. + +[optional_policy] + +There are two domains where this is useful: when y is very small, or when +x is close to 1. + +Implemented in terms of `expm1`. + +[h4 Accuracy] + +Should have approximately 2-3 epsilon accuracy. + +[h4 Testing] + +A selection of random high precision test values +calculated using NTL::RR at 1000-bit precision. + +[endsect] + +[section:hypot hypot] + + template + ``__sf_result`` hypot(T1 x, T2 y); + + template + ``__sf_result`` hypot(T1 x, T2 y, const ``__Policy``&); + +__effects computes [equation hypot] +in such a way as to avoid undue underflow and overflow. + +The return type of this function is computed using the __arg_pomotion_rules +when T1 and T2 are of different types. + +[optional_policy] + +When calculating [equation hypot] it's quite easy for the intermediate terms to either +overflow or underflow, even though the result is in fact perfectly representable. + +[h4 Implementation] + +The function is even and symmetric in x and y, so first take assume +['x,y > 0] and ['x > y] (we can permute the arguments if this is not the case). + +Then if ['x * [epsilon][space] >= y] we can simply return /x/. + +Otherwise the result is given by: + +[equation hypot2] + +[endsect] + + +[endsect][/section:powers Logs, Powers, Roots and Exponentials] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/rational.qbk b/doc/sf_and_dist/rational.qbk new file mode 100644 index 000000000..61c82392e --- /dev/null +++ b/doc/sf_and_dist/rational.qbk @@ -0,0 +1,176 @@ +[section:rational Polynomial and Rational Function Evaluation] + +[h4 synopsis] + +`` +#include +`` + + // Polynomials: + template + V evaluate_polynomial(const T(&poly)[N], const V& val); + + template + V evaluate_polynomial(const boost::array& poly, const V& val); + + template + U evaluate_polynomial(const T* poly, U z, std::size_t count); + + // Even polynomials: + template + V evaluate_even_polynomial(const T(&poly)[N], const V& z); + + template + V evaluate_even_polynomial(const boost::array& poly, const V& z); + + template + U evaluate_even_polynomial(const T* poly, U z, std::size_t count); + + // Odd polynomials + template + V evaluate_odd_polynomial(const T(&a)[N], const V& z); + + template + V evaluate_odd_polynomial(const boost::array& a, const V& z); + + template + U evaluate_odd_polynomial(const T* poly, U z, std::size_t count); + + // Rational Functions: + template + V evaluate_rational(const T(&a)[N], const T(&b)[N], const V& z); + + template + V evaluate_rational(const boost::array& a, const boost::array& b, const V& z); + + template + V evaluate_rational(const T* num, const U* denom, V z, unsigned count); + +[h4 Description] + +Each of the functions come in three variants: a pair of overloaded functions +where the order of the polynomial or rational function is evaluated at +compile time, and an overload that accepts a runtime variable for the size +of the coefficient array. Generally speaking, compile time evaluation of the +array size results in better type safety, is less prone to programmer errors, +and may result in better optimised code. The polynomial evaluation functions +in particular, are specialised for various array sizes, allowing for +loop unrolling, and one hopes, optimal inline expansion. + + template + V evaluate_polynomial(const T(&poly)[N], const V& val); + + template + V evaluate_polynomial(const boost::array& poly, const V& val); + + template + U evaluate_polynomial(const T* poly, U z, std::size_t count); + +Evaluates the [@http://en.wikipedia.org/wiki/Polynomial polynomial] described by +the coefficients stored in /poly/. + +If the size of the array is specified at runtime, then the polynomial +most have order /count-1/ with /count/ coefficients. Otherwise it has +order /N-1/ with /N/ coefficients. + +Coefficients should be stored such that the coefficients for the x[super i ] terms +are in poly[i]. + +The types of the coefficients and of variable +/z/ may differ as long as /*poly/ is convertible to type /U/. +This allows, for example, for the coefficient table +to be a table of integers if this is appropriate. + + template + V evaluate_even_polynomial(const T(&poly)[N], const V& z); + + template + V evaluate_even_polynomial(const boost::array& poly, const V& z); + + template + U evaluate_even_polynomial(const T* poly, U z, std::size_t count); + +As above, but evaluates an even polynomial: one where all the powers +of /z/ are even numbers. Equivalent to calling +`evaluate_polynomial(poly, z*z, count)`. + + template + V evaluate_odd_polynomial(const T(&a)[N], const V& z); + + template + V evaluate_odd_polynomial(const boost::array& a, const V& z); + + template + U evaluate_odd_polynomial(const T* poly, U z, std::size_t count); + +As above but evaluates a polynomial where all the powers are odd numbers. +Equivalent to `evaluate_polynomial(poly+1, z*z, count-1) * z + poly[0]`. + + template + V evaluate_rational(const T(&num)[N], const U(&denom)[N], const V& z); + + template + V evaluate_rational(const boost::array& num, const boost::array& denom, const V& z); + + template + V evaluate_rational(const T* num, const U* denom, V z, unsigned count); + +Evaluates the rational function (the ratio of two polynomials) described by +the coefficients stored in /num/ and /demom/. + +If the size of the array is specified at runtime then both +polynomials most have order /count-1/ with /count/ coefficients. +Otherwise both polynomials have order /N-1/ with /N/ coefficients. + +Array /num/ describes the numerator, and /demon/ the denominator. + +Coefficients should be stored such that the coefficients for the x[super i ] terms +are in num[i] and denom[i]. + +The types of the coefficients and of variable +/v/ may differ as long as /*num/ and /*denom/ are convertible to type /V/. +This allows, for example, for one or both of the coefficient tables +to be a table of integers if this is appropriate. + +These functions are designed to safely evaluate the result, even when the value +/z/ is very large. As such they do not take advantage of compile time array +sizes to make any optimisations. These functions are best reserved for situations +where /z/ may be large: if you can be sure that numerical overflow will not occur +then polynomial evaluation with compile-time array sizes may offer slightly +better performance. + +[h4 Implementation] + +Polynomials are evaluated by +[@http://en.wikipedia.org/wiki/Horner_algorithm Horners method]. +If the array size is known at +compile time then the functions dispatch to size-specific implementations +that unroll the evaluation loop. + +Rational evaluation is by +[@http://en.wikipedia.org/wiki/Horner_algorithm Horners method]: +with the two polynomials being evaluated +in parallel to make the most of the processors floating-point pipeline. +If /v/ is greater than one, then the polynomials are evaluated in reverse +order as polynomials in ['1\/v]: this avoids unnecessary numerical overflow when the +coefficients are large. + +Both the polynomial and rational function evaluation algorithms can be +tuned using various configuration macros to provide optimal performance +for a particular combination of compiler and platform. This includes +support for second-order Horner's methods. The various options are +[link math_toolkit.perf.tuning documented here]. However, the performance +benefits to be gained from these are marginal on most current hardware, +consequently it's best to run the +[link math_toolkit.perf.perf_test_app performance test application] before +changing the default settings. + +[endsect][/section:rational Polynomial and Rational Function Evaluation] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/references.qbk b/doc/sf_and_dist/references.qbk new file mode 100644 index 000000000..af16d0d7e --- /dev/null +++ b/doc/sf_and_dist/references.qbk @@ -0,0 +1,81 @@ +[section:refs References] + +[h4 General references] + +(Specific detailed sources for individual functions and distributions +are given at the end of each individual section). + +[@http://dlmf.nist.gov/about/ DLMF (NIST Digital Library of Mathematical Functions)] +is intended to be a replacement for the legendary +Abramowitz and Stegun's Handbook of Mathematical Functions, +now scheduled to be completed in 2007. + +M. Abramowitz and I. A. Stegun (Eds.) (1964) +Handbook of Mathematical Functions with Formulas, Graphs, and +Mathematical Tables, +National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.. + +[@http://functions.wolfram.com/ The Wolfram Functions Site] +The Wolfram Functions Site - Providing +the mathematical and scientific community with the world's largest +(and most authorititive) collection of formulas and graphics about mathematical functions. + +[@http://www.itl.nist.gov/div898/handbook/index.htm NIST/SEMATECH e-Handbook of Statistical Methods] + +[@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/DiscreteDistributions.html Mathematica Documentation: DiscreteDistributions] +The Wolfram Research Documentation Center is a collection of online reference materials about Mathematica, CalculationCenter, and other Wolfram Research products. + +[@http://documents.wolfram.com/mathematica/Add-onsLinks/StandardPackages/Statistics/ContinuousDistributions.html Mathematica Documentation: ContinuousDistributions] +The Wolfram Research Documentation Center is a collection of online reference materials about Mathematica, CalculationCenter, and other Wolfram Research products. + +Statistical Distributions (Wiley Series in Probability & Statistics) (Paperback) +by N.A.J. Hastings, Brian Peacock, Merran Evans, ISBN: 0471371246, Wiley 2000. + +[@http://bh0.physics.ubc.ca/People/matt/Doc/ThesesOthers/Phd/pugh.pdf pugh.pdf (application/pdf Object)] +Pugh Msc Thesis on the Lanczzos approximation to the gamma function. + +[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003 N1514, 03-0097, A Proposal to Add Mathematical Special Functions to the C++ Standard Library (version 2), Walter E. Brown] + +[h4 Calculators* that we found (and used to cross-check - as far as their widely-varying accuracy allowed).] + +[@http://www.adsciengineering.com/bpdcalc/ http://www.adsciengineering.com/bpdcalc/] Binomial Probability Distribution Calculator. + +[h4 Other Libraries] + +[@http://www.moshier.net/#Cephes Cephes library] by Shephen Moshier and his book: + +Methods and programs for mathematical functions, Stephen L B Moshier, Ellis Horwood (1989) ISBN 0745802893 0470216093 provided inspiration. + +[@http://www.moshier.net/cephes28.zip 100-decimal digit calculator] provided some spot values. + +[@http://www.csit.fsu.edu/~burkardt/cpp_src/dcdflib/dcdflib.html C++ version]. + +[@lib.stat.cmu.edu/general/cdflib CDFLIB Library of Fortran Routines for Cumulative Distribution functions.] + +[@http://www.csit.fsu.edu/~burkardt/f_src/dcdflib/dcdflib.html DCDFLIB C++ version] +DCDFLIB is a library of C++ routines, using double precision arithmetic, for evaluating cumulative probability density functions. + +[@http://www.softintegration.com/docs/package/chnagstat/ http://www.softintegration.com/docs/package/chnagstat/] + +[@http://www.nag.com/numeric/numerical_libraries.asp NAG ]libraries. + +[@http://www.mathcad.com MathCAD] + +[@http://www.vni.com/products/imsl/jmsl/v30/api/com/imsl/stat/Cdf.html JMSL Numerical Library] (Java). + +John F Hart, Computer Approximations, (1978) ISBN 0 088275 642-7. + +William J Cody, Software Manual for the Elementary Functions, Prentice-Hall (1980) ISBN 0138220646. + +Nico Temme, Special Functions, An Introduction to the Classical Functions of Mathematical Physics, Wiley, ISBN: 0471-11313-1 (1996) who also gave valueable advice. + +[@http://www.cas.lancs.ac.uk/glossary_v1.1/prob.html#probdistn Statistics Glossary], Valerie Easton and John H. McColl. + +[endsect] [/section:references References] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/relative_error.qbk b/doc/sf_and_dist/relative_error.qbk new file mode 100644 index 000000000..4c669222a --- /dev/null +++ b/doc/sf_and_dist/relative_error.qbk @@ -0,0 +1,134 @@ +[section:error_test Relative Error and Testing] + +[h4 Synopsis] + +`` +#include +`` + + template + T relative_error(T a, T b); + + template + test_result test(const A& a, F1 test_func, F2 expect_func); + +[h4 Description] + + template + T relative_error(T a, T v); + +Returns the relative error between /a/ and /v/ using the usual formula: + +[equation error1] + +In addition the value returned is zero if: + +* Both /a/ and /v/ are infinite. +* Both /a/ and /v/ are denormalised numbers or zero. + +Otherwise if only one of /a/ and /v/ is zero then the value returned is 1. + + template + test_result test(const A& a, F1 test_func, F2 expect_func); + +This function is used for testing a function against tabulated test data. + +The return type contains statistical data on the relative errors (max, mean, +variance, and the number of test cases etc), as well as the row of test data that +caused the largest relative error. Public members of type test_result are: + +[variablelist +[[`unsigned worst()const;`][Returns the row at which the worst error occurred.]] +[[`T min()const;`][Returns the smallest relative error found.]] +[[`T max()const;`][Returns the largest relative error found.]] +[[`T mean()const;`][Returns the mean error found.]] +[[`boost::uintmax_t count()const;`][Returns the number of test cases.]] +[[`T variance()const;`][Returns the variance of the errors found.]] +[[`T variance1()const;`][Returns the unbiased variance of the errors found.]] +[[`T rms()const`][Returns the Root Mean Square, or quadratic mean of the errors.]] +[[`test_result& operator+=(const test_result& t)`][Combines two test_result's into +a single result.]] +] + +The template parameter of test_result, is the same type as the values in the two +dimensional array passed to function /test/, roughly that's +`A::value_type::value_type`. + +Parameter /a/ is a matrix of test data: and must be a standard library Sequence type, +that contains another Sequence type: +typically it will be a two dimensional instance of +[^boost::array]. Each row +of /a/ should contain all the parameters that are passed to the function +under test as well as the expected result. + +Parameter /test_func/ is the function under test, it is invoked with each row +of test data in /a/. Typically type F1 is created with Boost.Lambda: see +the example below. + +Parameter /expect_func/ is a functor that extracts the expected result +from a row of test data in /a/. Typically type F2 is created with Boost.Lambda: see +the example below. + +If the function under test returns a non-finite value when a finite result is +expected, or if a gross error is found, then a message is sent to `std::cerr`, +and a call to BOOST_ERROR() made (which means that including this header requires +you use Boost.Test). This is mainly a debugging/development aid +(and a good place for a breakpoint). + +[h4 Example] + +Suppose we want to test the tgamma and lgamma functions, we can create a +two dimensional matrix of test data, each row is one test case, and contains +three elements: the input value, and the expected results for the tgamma and +lgamma functions respectively. + + static const boost::array, NumberOfTests> + factorials = { + /* big array of test data goes here */ + }; + +Now we can invoke the test function to test tgamma: + + using namespace boost::math::tools; + using namespace boost::lambda; + + // get a pointer to the function under test: + TestType (*funcp)(TestType) = boost::math::tgamma; + + // declare something to hold the result: + test_result result; + // + // and test tgamma against data: + // + result = test( + factorials, + bind(funcp, ret(_1[0])), // calls tgamma with factorials[row][0] + ret(_1[1]) // extracts the expected result from factorials[row][1] + ); + // + // Print out some results: + // + std::cout << "The Mean was " << result.mean() << std::endl; + std::cout << "The worst error was " << (result.max)() << std::endl; + std::cout << "The worst error was at row " << result.worst_case() << std::endl; + // + // same again with lgamma this time: + // + funcp = boost::math::lgamma; + result = test( + factorials, + bind(funcp, ret(_1[0])), // calls tgamma with factorials[row][0] + ret(_1[2]) // extracts the expected result from factorials[row][2] + ); + // + // etc ... + // + +[endsect][/section:error_test Relative Error and Testing] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/remez.qbk b/doc/sf_and_dist/remez.qbk new file mode 100644 index 000000000..46d62e2f7 --- /dev/null +++ b/doc/sf_and_dist/remez.qbk @@ -0,0 +1,377 @@ +[section:remez The Remez Method] + +The [@http://en.wikipedia.org/wiki/Remez_algorithm Remez algorithm] +is a methodology for locating the minimax rational approximation +to a function. This short article gives a brief overview of the method, but +it should not be regarded as a thorough theoretical treatment, for that you +should consult your favorite textbook. + +Imagine that you want to approximate some function f(x) by way of a rational +function R(x), where R(x) may be either a polynomial P(x) or a ratio of two +polynomials P(x)/Q(x) (a rational function). Initially we'll concentrate on the +polynomial case, as it's by far the easier to deal with, later we'll extend +to the full rational function case. + +We want to find the "best" rational approximation, where +"best" is defined to be the approximation that has the least deviation +from f(x). We can measure the deviation by way of an error function: + +E[sub abs](x) = f(x) - R(x) + +which is expressed in terms of absolute error, but we can equally use +relative error: + +E[sub rel](x) = (f(x) - R(x)) / |f(x)| + +And indeed in general we can scale the error function in any way we want, it +makes no difference to the maths, although the two forms above cover almost +every practical case that you're likely to encounter. + +The minimax rational function R(x) is then defined to be the function that +yields the smallest maximal value of the error function. Chebyshev showed +that there is a unique minimax solution for R(x) that has the following +properties: + +* If R(x) is a polynomial of degree N, then there are N+2 unknowns: +the N+1 coefficients of the polynomial, and maximal value of the error +function. +* The error function has N+1 roots, and N+2 extrema (minima and maxima). +* The extrema alternate in sign, and all have the same magnitude. + +That means that if we know the location of the extrema of the error function +then we can write N+2 simultaneous equations: + +R(x[sub i]) + (-1)[super i]E = f(x[sub i]) + +where E is the maximal error term, and x[sub i] are the abscissa values of the +N+2 extrema of the error function. It is then trivial to solve the simultaneous +equations to obtain the polynomial coefficients and the error term. + +['Unfortunately we don't know where the extrema of the error function are located!] + +[h4 The Remez Method] + +The Remez method is an iterative technique which, given a broad range of +assumptions, will converge on the extrema of the error function, and therefore +the minimax solution. + +In the following discussion we'll use a concrete example to illustrate +the Remez method: an approximation to the function e[super x][space] over +the range \[-1, 1\]. + +Before we can begin the Remez method, we must obtain an initial value +for the location of the extrema of the error function. We could "guess" +these, but a much closer first approximation can be obtained by first +constructing an interpolated polynomial approximation to f(x). + +In order to obtain the N+1 coefficients of the interpolated polynomial +we need N+1 points (x[sub 0]...x[sub N]): with our interpolated form +passing through each of those points +that yields N+1 simultaneous equations: + +f(x[sub i]) = P(x[sub i]) = c[sub 0] + c[sub 1]x[sub i] ... + c[sub N]x[sub i][super N] + +Which can be solved for the coefficients c[sub 0]...c[sub N] in P(x). + +Obviously this is not a minimax solution, indeed our only guarantee is that f(x) and +P(x) touch at N+1 locations, away from those points the error may be arbitrarily +large. However, we would clearly like this initial approximation to be as close to +f(x) as possible, and it turns out that using the zeros of an orthogonal polynomial +as the initial interpolation points is a good choice. In our example we'll use the +zeros of a Chebyshev polynomial as these are particularly easy to calculate, +interpolating for a polynomial of degree 4, and measuring /relative error/ +we get the following error function: + +[$../graphs/remez-2.png] + +Which has a peak relative error of 1.2x10[super -3]. + +While this is a pretty good approximation already, judging by the +shape of the error function we can clearly do better. Before starting +on the Remez method propper, we have one more step to perform: locate +all the extrema of the error function, and store +these locations as our initial ['Chebyshev control points]. + +[note +In the simple case of a polynomial approximation, by interpolating through +the roots of a Chebyshev polynomial we have in fact created a ['Chebyshev +approximation] to the function: in terms of /absolute error/ +this is the best a priori choice for the interpolated form we can +achieve, and typically is very close to the minimax solution. + +However, if we want to optimise for /relative error/, or if the approximation +is a rational function, then the initial Chebyshev solution can be quite far +from the ideal minimax solution. + +A more technical discussion of the theory involved can be found in this +[@http://math.fullerton.edu/mathews/n2003/ChebyshevPolyMod.html online course].] + +[h4 Remez Step 1] + +The first step in the Remez method, given our current set of +N+2 Chebyshev control points x[sub i], is to solve the N+2 simultaneous +equations: + +P(x[sub i]) + (-1)[super i]E = f(x[sub i]) + +To obtain the error term E, and the coefficients of the polynomial P(x). + +This gives us a new approximation to f(x) that has the same error /E/ at +each of the control points, and whose error function ['alternates in sign] +at the control points. This is still not necessarily the minimax +solution though: since the control points may not be at the extrema of the error +function. After this first step here's what our approximation's error +function looks like: + +[$../graphs/remez-3.png] + +Clearly this is still not the minimax solution since the control points +are not located at the extrema, but the maximum relative error has now +dropped to 5.6x10[super -4]. + +[h4 Remez Step 2] + +The second step is to locate the extrema of the new approximation, which we do +in two stages: first, since the error function changes sign at each +control point, we must have N+1 roots of the error function located between +each pair of N+2 control points. Once these roots are found by standard root finding +techniques, we know that N extrema are bracketed between each pair of +roots, plus two more between the endpoints of the range and the first and last roots. +The N+2 extrema can then be found using standard function minimisation techniques. + +We now have a choice: multi-point exchange, or single point exchange. + +In single point exchange, we move the control point nearest to the largest extrema to +the absissa value of the extrema. + +In multi-point exchange we swap all the current control points, for the locations +of the extrema. + +In our example we perform multi-point exchange. + +[h4 Iteration] + +The Remez method then performs steps 1 and 2 above iteratively until the control +points are located at the extrema of the error function: this is then +the minimax solution. + +For our current example, two more iterations converges on a minimax +solution with a peak relative error of +5x10[super -4] and an error function that looks like: + +[$../graphs/remez-4.png] + +[h4 Rational Approximations] + +If we wish to extend the Remez method to a rational approximation of the form + +f(x) = R(x) = P(x) / Q(x) + +where P(x) and Q(x) are polynomials, then we proceed as before, except that now +we have N+M+2 unknowns if P(x) is of order N and Q(x) is of order M. This assumes +that Q(x) is normalised so that it's leading coefficient is 1, giving +N+M+1 polynomial coefficients in total, plus the error term E. + +The simultaneous equations to be solved are now: + +P(x[sub i]) / Q(x[sub i]) + (-1)[super i]E = f(x[sub i]) + +Evaluated at the N+M+2 control points x[sub i]. + +Unfortunately these equations are non-linear in the error term E: we can only +solve them if we know E, and yet E is one of the unknowns! + +The method usually adopted to solve these equations is an iterative one: we guess the +value of E, solve the equations to obtain a new value for E (as well as the polynomial +coefficients), then use the new value of E as the next guess. The method is +repeated until E converges on a stable value. + +These complications extend the running time required for the development +of rational approximations quite considerably. It is often desirable +to obtain a rational rather than polynomial approximation none the less: +rational approximations will often match more difficult to approximate +functions, to greater accuracy, and with greater efficiency, than their +polynomial alternatives. For example, if we takes our previous example +of an approximation to e[super x], we obtained 5x10[super -4] accuracy +with an order 4 polynomial. If we move two of the unknowns into the denominator +to give a pair of order 2 polynomials, and re-minimise, then the peak relative error drops +to 8.7x10[super -5]. That's a 5 fold increase in accuracy, for the same number +of terms overall. + +[h4 Practical Considerations] + +Most treatises on approximation theory stop at this point. However, from +a practical point of view, most of the work involves finding the right +approximating form, and then persuading the Remez method to converge +on a solution. + +So far we have used a direct approximation: + +f(x) = R(x) + +But this will converge to a useful approximation only if f(x) is smooth. In +addition round-off errors when evaluating the rational form mean that this +will never get closer than within a few epsilon of machine precision. +Therefore this form of direct approximation is often reserved for situations +where we want efficiency, rather than accuracy. + +The first step in improving the situation is generally to split f(x) into +a dominant part that we can compute accurately by another method, and a +slowly changing remainder which can be approximated by a rational approximation. +We might be tempted to write: + +f(x) = g(x) + R(x) + +where g(x) is the dominant part of f(x), but if f(x)\/g(x) is approximately +constant over the interval of interest then: + +f(x) = g(x)(c + R(x)) + +Will yield a much better solution: here /c/ is a constant that is the approximate +value of f(x)\/g(x) and R(x) is typically tiny compared to /c/. In this situation +if R(x) is optimised for absolute error, then as long as its error is small compared +to the constant /c/, that error will effectively get wiped out when R(x) is added to +/c/. + +The difficult part is obviously finding the right g(x) to extract from your +function: often the asymptotic behaviour of the function will give a clue, so +for example the function __erfc becomes proportional to +e[super -x[super 2]]\/x as x becomes large. Therefore using: + +erfc(z) = (C + R(x)) e[super -x[super 2]]/x + +as the approximating form seems like an obvious thing to try, and does indeed +yield a useful approximation. + +However, the difficulty then becomes one of converging the minimax solution. +Unfortunately, it is known that for some functions the Remez method can lead +to divergent behaviour, even when the initial starting approximation is quite good. +Furthermore, it is not uncommon for the solution obtained in the first Remez step +above to be a bad one: the equations to be solved are generally "stiff", often +very close to being singular, and assuming a solution is found at all, round-off +errors and a rapidly changing error function, can lead to a situation where the +error function does not in fact change sign at each control point as required. +If this occurs, it is fatal to the Remez method. It is also possible to +obtain solutions that are perfectly valid mathematically, but which are +quite useless computationally: either because there is an unavoidable amount +of roundoff error in the computation of the rational function, or because +the denominator has one or more roots over the interval of the approximation. +In the latter case while the approximation may have the correct limiting value at +the roots, the approximation is nonetheless useless. + +Assuming that the approximation does not have any fatal errors, and that the only +issue is converging adequately on the minimax solution, the aim is to +get as close as possible to the minimax solution before beginning the Remez method. +Using the zeros of a Chebyshev polynomial for the initial interpolation is a +good start, but may not be ideal when dealing with relative errors and\/or +rational (rather than polynomial) approximations. One approach is to skew +the initial interpolation points to one end: for example if we raise the +roots of the Chebyshev polynomial to a positive power greater than 1 +then the roots will be skewed towards the middle of the \[-1,1\] interval, +while a positive power less than one +will skew them towards either end. More usefully, if we initially rescale the +points over \[0,1\] and then raise to a positive power, we can skew them to the left +or right. Returning to our example of e[super x][space] over \[-1,1\], the initial +interpolated form was some way from the minimax solution: + +[$../graphs/remez-2.png] + +However, if we first skew the interpolation points to the left (rescale them +to \[0, 1\], raise to the power 1.3, and then rescale back to \[-1,1\]) we +reduce the error from 1.3x10[super -3][space]to 6x10[super -4]: + +[$../graphs/remez-5.png] + +It's clearly still not ideal, but it is only a few percent away from +our desired minimax solution (5x10[super -4]). + +[h4 Remez Method Checklist] + +The following lists some of the things to check if the Remez method goes wrong, +it is by no means an exhaustive list, but is provided in the hopes that it will +prove useful. + +* Is the function smooth enough? Can it be better separated into +a rapidly changing part, and an asymptotic part? +* Does the function being approximated have any "blips" in it? Check +for problems as the function changes computation method, or +if a root, or an infinity has been divided out. The telltale +sign is if there is a narrow region where the Remez method will +not converge. +* Check you have enough accuracy in your calculations: remember that +the Remez method works on the difference between the approximation +and the function being approximated: so you must have more digits of +precision available than the precision of the approximation +being constructed. So for example at double precision, you +shouldn't expect to be able to get better than a float precision +approximation. +* Try skewing the initial interpolated approximation to minimise the +error before you begin the Remez steps. +* If the approximation won't converge or is ill-conditioned from one starting +location, try starting from a different location. +* If a rational function won't converge, one can minimise a polynomial +(which presents no problems), then rotate one term from the numerator to +the denominator and minimise again. In theory one can continue moving +terms one at a time from numerator to denominator, and then re-minimising, +retaining the last set of control points at each stage. +* Try using a smaller interval. It may also be possible to optimise over +one (small) interval, rescale the control points over a larger interval, +and then re-minimise. +* Keep absissa values small: use a change of variable to keep the abscissa +over, say \[0, b\], for some smallish value /b/. + +[h4 References] + +The original references for the Remez Method and it's extension +to rational functions are unfortunately in Russian: + +Remez, E.Ya., ['Fundamentals of numerical methods for Chebyshev approximations], +"Naukova Dumka", Kiev, 1969. + +Remez, E.Ya., Gavrilyuk, V.T., ['Computer development of certain approaches +to the approximate construction of solutions of Chebyshev problems +nonlinearly depending on parameters], Ukr. Mat. Zh. 12 (1960), 324-338. + +Gavrilyuk, V.T., ['Generalization of the first polynomial algorithm of +E.Ya.Remez for the problem of constructing rational-fractional +Chebyshev approximations], Ukr. Mat. Zh. 16 (1961), 575-585. + +Some English language sources include: + +Fraser, W., Hart, J.F., ['On the computation of rational approximations +to continuous functions], Comm. of the ACM 5 (1962), 401-403, 414. + +Ralston, A., ['Rational Chebyshev approximation by Remes' algorithms], +Numer.Math. 7 (1965), no. 4, 322-330. + +A. Ralston, ['Rational Chebyshev approximation, Mathematical +Methods for Digital Computers v. 2] (Ralston A., Wilf H., eds.), +Wiley, New York, 1967, pp. 264-284. + +Hart, J.F. e.a., ['Computer approximations], Wiley, New York a.o., 1968. + +Cody, W.J., Fraser, W., Hart, J.F., ['Rational Chebyshev approximation +using linear equations], Numer.Math. 12 (1968), 242-251. + +Cody, W.J., ['A survey of practical rational and polynomial +approximation of functions], SIAM Review 12 (1970), no. 3, 400-423. + +Barrar, R.B., Loeb, H.J., ['On the Remez algorithm for non-linear +families], Numer.Math. 15 (1970), 382-391. + +Dunham, Ch.B., ['Convergence of the Fraser-Hart algorithm for rational +Chebyshev approximation], Math. Comp. 29 (1975), no. 132, 1078-1082. + +G. L. Litvinov, ['Approximate construction of rational +approximations and the effect of error autocorrection], +Russian Journal of Mathematical Physics, vol.1, No. 3, 1994. + +[endsect][/section:remez The Remez Method] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/result_type_calc.qbk b/doc/sf_and_dist/result_type_calc.qbk new file mode 100644 index 000000000..dd128106e --- /dev/null +++ b/doc/sf_and_dist/result_type_calc.qbk @@ -0,0 +1,85 @@ + +[section:result_type Calculation of the Type of the Result] + +The functions in this library are all overloaded to accept +mixed floating point (or mixed integer and floating point type) +arguments. So for example: + + foo(1.0, 2.0); + foo(1.0f, 2); + foo(1.0, 2L); + +etc, are all valid calls, as long as "foo" is a function taking two +floating-point arguments. But that leaves the question: + +[blurb ['"Given a special function with N arguments of +types T1, T2, T3 ... TN, then what type is the result?"]] + +[*If all the arguments are of the same (floating point) type then the +result is the same type as the arguments.] + +Otherwise, the type of the result +is computed using the following logic: + +# Any arguments that are not template arguments are disregarded from +further analysis. +# For each type in the argument list, if that type is an integer type +then it is treated as if it were of type double for the purposes of +further analysis. +# If any of the arguments is a user-defined class type, then the result type +is the first such class type that is constructible from all of the other +argument types. +# If any of the arguments is of type `long double`, then the result is of type +`long double`. +# If any of the arguments is of type `double`, then the result is of type +`double`. +# Otherwise the result is of type `float`. + +For example: + + cyl_bessel(2, 3.0); + +Returns a `double` result, as does: + + cyl_bessel(2, 3.0f); + +as in this case the integer first argument is treated as a `double` and takes +precedence over the `float` second argument. To get a `float` result we would need +all the arguments to be of type float: + + cyl_bessel_j(2.0f, 3.0f); + +When one or more of the arguments is not a template argument then it +doesn't effect the return type at all, for example: + + sph_bessel(2, 3.0f); + +returns a `float`, since the first argument is not a template argument and +so doesn't effect the result: without this rule functions that take +explicitly integer arguments could never return `float`. + +And for user defined types, all of the following return an NTL::RR result: + + cyl_bessel_j(0, NTL::RR(2)); + + cyl_bessel_j(NTL::RR(2), 3); + + cyl_bessel_j(NTL::quad_float(2), NTL::RR(3)); + +In the last case, quad_float is convertible to RR, but not vice-versa, so +the result will be an NTL::RR. Note that this assumes that you are using +a [link math_toolkit.using_udt.use_ntl patched NTL library]. + +These rules are chosen to be compatible with the behaviour of +['ISO/IEC 9899:1999 Programming languages - C] +and with the +[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf Draft Technical Report on C++ Library Extensions, 2005-06-24, section 5.2.1, paragraph 5]. + +[endsect] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/roadmap.qbk b/doc/sf_and_dist/roadmap.qbk new file mode 100644 index 000000000..0344f2c4c --- /dev/null +++ b/doc/sf_and_dist/roadmap.qbk @@ -0,0 +1,71 @@ +[template history[] +[h4 Milestone 5: Post Review First Official Release] + +* Added Policy based framework that allows fine grained control +over function behaviour. +* [*Breaking change:] Changed default behaviour for domain, pole and overflow errors +to throw an exception (based on review feedback), this +behaviour can be customised using __Policy's. +* [*Breaking change:] Changed exception thrown when an internal evaluation error +occurs to boost::math::evaluation_error. +* [*Breaking change:] Changed discrete quantiles to return an integer result: +this is anything up to 20 times faster than finding the true root, this +behaviour can be customised using __Policy's. +* Polynomial/rational function evaluation is now customisable and hopefully +faster than before. +* Added performance test program. + +[h4 Milestone 4: Second Review Candidate (1st March 2007)] + +* Moved Xiaogang Zhang's Bessel Functions code into the library, +and brought them into line with the rest of the code. +* Added C# "Distribution Explorer" demo application. + +[h4 Milestone 3: First Review Candidate (31st Dec 2006)] + +* Implemented the main probability distribution and density functions. +* Implemented digamma. +* Added more factorial functions. +* Implemented the Hermite, Legendre and Laguerre polynomials plus the +spherical harmonic functions from TR1. +* Moved Xiaogang Zhang's elliptic integral code into the library, +and brought them into line with the rest of the code. +* Moved Hubert Holin's existing Boost.Math special functions +into this library and brought them into line with the rest of the code. + +[h4 Milestone 2: Released September 10th 2006] + +* Implement preview release of the statistical distributions. +* Added statistical distributions tutorial. +* Implemented root finding algorithms. +* Implemented the inverses of the incomplete gamma and beta functions. +* Rewrite erf/erfc as rational approximations (valid to 128-bit precision). +* Integrated the statistical results generated from +the test data with Boost.Test: uses a database of expected +results, indexed by test, floating point type, platform, and compiler. +* Improved lgamma near 1 and 2 (rational approximations). +* Improved erf/erfc inverses (rational approximations). +* Implemented Rational function generation (the Remez method). + +[h4 Milestone 1: Released March 31st 2006] + +* Implement gamma/beta/erf functions along with their incomplete counterparts. +* Generate high quality test data, against which future improvements can be judged. +* Provide tools for the evaluation of infinite series, continued fractions, and +rational functions. +* Provide tools for testing against tabulated test data, and collecting statistics +on error rates. +* Provide sufficient docs for people to be able to find their way around the library. + +SVN Revisions: + +Sandbox and trunk last synchonised at revision: 41065. + +] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/roots.qbk b/doc/sf_and_dist/roots.qbk new file mode 100644 index 000000000..3ec65ed1f --- /dev/null +++ b/doc/sf_and_dist/roots.qbk @@ -0,0 +1,245 @@ +[section:roots Root Finding With Derivatives] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ namespace tools{ + + template + T newton_raphson_iterate(F f, T guess, T min, T max, int digits); + + template + T newton_raphson_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter); + + template + T halley_iterate(F f, T guess, T min, T max, int digits); + + template + T halley_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter); + + template + T schroeder_iterate(F f, T guess, T min, T max, int digits); + + template + T schroeder_iterate(F f, T guess, T min, T max, int digits, boost::uintmax_t& max_iter); + + }}} // namespaces + +[h4 Description] + +These functions all perform iterative root finding: `newton_raphson_iterate` +performs second order [link newton Newton Raphson iteration], while `halley_iterate` and +`schroeder_iterate` perform third order [link halley Halley] and +[link schroeder Schroeder] iteration respectively. + +The functions all take the same parameters: + +[variablelist Parameters of the root finding functions +[[F f] [Type F must be a callable function object that accepts one parameter and + returns a tuple: + +For the second order iterative methods (Newton Raphson) + the tuple should have two elements containing the evaluation + of the function and it's first derivative. + +For the third order methods (Halley and Schroeder) the tuple + should have three elements containing the evaluation of + the function and its first and second derivatives.]] +[[T guess] [The initial starting value.]] +[[T min] [The minimum possible value for the result, this is used as an initial lower bracket.]] +[[T max] [The maximum possible value for the result, this is used as an initial upper bracket.]] +[[int digits] [The desired number of binary digits.]] +[[uintmax_t max_iter] [An optional maximum number of iterations to perform.]] +] + +When using these functions you should note that: + +* They may be very sensitive to the initial guess, typically they converge very rapidly +if the initial guess has two or three decimal digits correct. However convergence +can be no better than bisection, or in some rare cases even worse than bisection if the +initial guess is a long way from the correct value and the derivatives are close to zero. +* These functions include special cases to handle zero first (and second where appropriate) +derivatives, and fall back to bisection in this case. However, it is helpful +if F is defined to return an arbitrarily small value ['of the correct sign] rather +than zero. +* If the derivative at the current best guess for the result is infinite (or +very close to being infinite) then these functions may terminate prematurely. +A large first derivative leads to a very small next step, triggering the termination +condition. Derivative based iteration may not be appropriate in such cases. +* These functions fall back to bisection if the next computed step would take the +next value out of bounds. The bounds are updated after each step to ensure this leads +to convergence. However, a good initial guess backed up by asymptotically-tight +bounds will improve performance no end rather than relying on bisection. +* The value of /digits/ is crucial to good performance of these functions, +if it is set too high then at best you will get one extra (unnecessary) +iteration, and at worst the last few steps will proceed by bisection. +Remember that the returned value can never be more accurate than f(x) can be +evaluated, and that if f(x) suffers from cancellation errors as it +tends to zero then the computed steps will be effectively random. The +value of /digits/ should be set so that iteration terminates before this point: +remember that for second and third order methods the number of correct +digits in the result is increasing quite +substantially with each iteration, /digits/ should be set by experiment so that the final +iteration just takes the next value into the zone where f(x) becomes inaccurate. +* Finally: you may well be able to do better than these functions by hand-coding +the heuristics used so that they are tailored to a specific function. You may also +be able to compute the ratio of derivatives used by these methods more efficiently +than computing the derivatives themselves. As ever, algebraic simplification can +be a big win. + +[#newton] +[h4 Newton Raphson Method] +Given an initial guess x0 the subsequent values are computed using: + +[equation roots1] + +Out of bounds steps revert to bisection of the current bounds. + +Under ideal conditions, the number of correct digits doubles with each iteration. + +[#halley] +[h4 Halley's Method] + +Given an initial guess x0 the subsequent values are computed using: + +[equation roots2] + +Over-compensation by the second derivative (one which would proceed +in the wrong direction) causes the method to +revert to a Newton-Raphson step. + +Out of bounds steps revert to bisection of the current bounds. + +Under ideal conditions, the number of correct digits trebles with each iteration. + +[#schroeder] +[h4 Schroeder's Method] + +Given an initial guess x0 the subsequent values are computed using: + +[equation roots3] + +Over-compensation by the second derivative (one which would proceed +in the wrong direction) causes the method to +revert to a Newton-Raphson step. Likewise a Newton step is used +whenever that Newton step would change the next value by more than 10%. + +Out of bounds steps revert to bisection of the current bounds. + +Under ideal conditions, the number of correct digits trebles with each iteration. + +[h4 Example] + +Lets suppose we want to find the cube root of a number, the equation we want to +solve along with its derivatives are: + +[equation roots4] + +To begin with lets solve the problem using Newton Raphson iterations, we'll +begin be defining a function object that returns the evaluation of the function +to solve, along with its first derivative: + + template + struct cbrt_functor + { + cbrt_functor(T const& target) : a(target){} + std::tr1::tuple operator()(T const& z) + { + T sqr = z * z; + return std::tr1::make_tuple(sqr * z - a, 3 * sqr); + } + private: + T a; + }; + +Implementing the cube root is fairly trivial now, the hardest part is finding +a good approximation to begin with: in this case we'll just divide the exponent +by three: + + template + T cbrt(T z) + { + using namespace std; + int exp; + frexp(z, &exp); + T min = ldexp(0.5, exp/3); + T max = ldexp(2.0, exp/3); + T guess = ldexp(1.0, exp/3); + int digits = std::numeric_limits::digits; + return tools::newton_raphson_iterate(detail::cbrt_functor(z), guess, min, max, digits); + } + +Using the test data in libs/math/test/cbrt_test.cpp this found the cube root +exact to the last digit in every case, and in no more than 6 iterations at double +precision. However, you will note that a high precision was used in this +example, exactly what was warned against earlier on in these docs! In this +particular case its possible to compute f(x) exactly and without undue +cancellation error, so a high limit is not too much of an issue. However, +reducing the limit to `std::numeric_limits::digits * 2 / 3` gave full +precision in all but one of the test cases (and that one was out by just one bit). +The maximum number of iterations remained 6, but in most cases was reduced by one. + +Note also that the above code omits error handling, and does not handle +negative values of z correctly. That will be left as an exercise for the reader! + +Now lets adapt the functor slightly to return the second derivative as well: + + template + struct cbrt_functor + { + cbrt_functor(T const& target) : a(target){} + std::tr1::tuple operator()(T const& z) + { + T sqr = z * z; + return std::tr1::make_tuple(sqr * z - a, 3 * sqr, 6 * z); + } + private: + T a; + }; + +And then adapt the `cbrt` function to use Halley iterations: + + template + T cbrt(T z) + { + using namespace std; + int exp; + frexp(z, &exp); + T min = ldexp(0.5, exp/3); + T max = ldexp(2.0, exp/3); + T guess = ldexp(1.0, exp/3); + int digits = std::numeric_limits::digits / 2; + return tools::halley_iterate(detail::cbrt_functor(z), guess, min, max, digits); + } + +Note that the iterations are set to stop at just one-half of full precision, +and yet even so not one of the test cases had a single bit wrong. +What's more, the maximum number of iterations was now just 4. + +Just to complete the picture, we could have called `schroeder_iterate` in the last +example: and in fact it makes no difference to the accuracy or number of iterations +in this particular case. However, the relative performance of these two methods +may vary depending upon the nature of f(x), and the accuracy to which the initial +guess can be computed. There appear to be no generalisations that can be made +except "try them and see". + +Finally, had we called cbrt with [@http://shoup.net/ntl/doc/RR.txt NTL::RR] +set to 1000 bit precision, then full precision can be obtained with just 7 iterations. +To put that in perspective +an increase in precision by a factor of 20, has less than doubled the number of +iterations. That just goes to emphasise that most of the iterations are used +up getting the first few digits correct: after that these methods can churn out +further digits with remarkable efficiency. Or to put it another way: ['nothing beats +a really good initial guess!] + +[endsect][/section:roots Root Finding With Derivatives] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/roots_without_derivatives.qbk b/doc/sf_and_dist/roots_without_derivatives.qbk new file mode 100644 index 000000000..6f32ebdb0 --- /dev/null +++ b/doc/sf_and_dist/roots_without_derivatives.qbk @@ -0,0 +1,419 @@ +[section:roots2 Root Finding Without Derivatives] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ namespace tools{ + + template + std::pair + bisect( + F f, + T min, + T max, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + bisect( + F f, + T min, + T max, + Tol tol); + + template + std::pair + bisect( + F f, + T min, + T max, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + + template + std::pair + bracket_and_solve_root( + F f, + const T& guess, + const T& factor, + bool rising, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + bracket_and_solve_root( + F f, + const T& guess, + const T& factor, + bool rising, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + const T& fa, + const T& fb, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + const T& fa, + const T& fb, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + + // Termination conditions: + template + struct eps_tolerance; + + struct equal_floor; + struct equal_ceil; + struct equal_nearest_integer; + + }}} // namespaces + +[h4 Description] + +These functions solve the root of some function /f(x)/ without the +need for the derivatives of /f(x)/. The functions here that use TOMS +Algorithm 748 are asymptotically the most efficient known, and have +been shown to be optimal for a certain classes of smooth functions. + +Alternatively, there is a simple bisection routine which can be useful +in its own right in some situations, or alternatively for narrowing +down the range containing the root, prior to calling a more advanced +algorithm. + +All the algorithms in this section reduce the diameter of the enclosing +interval with the same asymptotic efficiency with which they locate the +root. This is in contrast to the derivative based methods which may /never/ +significantly reduce the enclosing interval, even though they rapidly approach +the root. This is also in contrast to some other derivative-free methods +(for example the methods of [@http://en.wikipedia.org/wiki/Brent%27s_method Brent or Dekker)] +which only reduce the enclosing interval on the final step. +Therefore these methods return a std::pair containing the enclosing interval found, +and accept a function object specifying the termination condition. +Three function objects are provided for ready-made termination conditions: +/eps_tolerance/ causes termination when the relative error in the enclosing +interval is below a certain threshold, while /equal_floor/ and /equal_ceil/ are +useful for certain statistical applications where the result is known to be +an integer. Other user-defined termination conditions are likely to be used +only rarely, but may be useful in some specific circumstances. + + template + std::pair + bisect( + F f, + T min, + T max, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + bisect( + F f, + T min, + T max, + Tol tol); + + template + std::pair + bisect( + F f, + T min, + T max, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + +These functions locate the root using bisection, function arguments are: + +[variablelist +[[f] [A unary functor which is the function whose root is to be found.]] +[[min] [The left bracket of the interval known to contain the root.]] +[[max] [The right bracket of the interval known to contain the root. + It is a precondition that /min < max/ and /f(min)*f(max) <= 0/, + the function signals evaluation error if these preconditions are violated. + The action taken is controlled by the evaluation error policy. + A best guess may be returned, perhaps significantly wrong.]] +[[tol] [A binary functor that specifies the termination condition: the function + will return the current brackets enclosing the root when /tol(min,max)/ becomes true.]] +[[max_iter][The maximum number of invocations of /f(x)/ to make while searching for the root.]] +] + +[optional_policy] + +Returns: a pair of values /r/ that bracket the root so that: + + f(r.first) * f(r.second) <= 0 + +and either + + tol(r.first, r.second) == true + +or + + max_iter >= m + +where /m/ is the initial value of /max_iter/ passed to the function. + +In other words, it's up to the caller to verify whether termination occurred +as a result of exceeding /max_iter/ function invocations (easily done by +checking the value of /max_iter/ when the function returns), rather than +because the termination condition /tol/ was satisfied. + + template + std::pair + bracket_and_solve_root( + F f, + const T& guess, + const T& factor, + bool rising, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + bracket_and_solve_root( + F f, + const T& guess, + const T& factor, + bool rising, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + +This is a convenience function that calls /toms748_solve/ internally +to find the root of /f(x)/. It's usable only when /f(x)/ is a monotonic +function, and the location of the root is known approximately, and in +particular it is known whether the root is occurs for positive or negative +/x/. The parameters are: + +[variablelist +[[f][A unary functor that is the function whose root is to be solved. + f(x) must be uniformly increasing or decreasing on /x/.]] +[[guess][An initial approximation to the root]] +[[factor][A scaling factor that is used to bracket the root: the value + /guess/ is multiplied (or divided as appropriate) by /factor/ + until two values are found that bracket the root. A value + such as 2 is a typical choice for /factor/.]] +[[rising][Set to /true/ if /f(x)/ is rising on /x/ and /false/ if /f(x)/ + is falling on /x/. This value is used along with the result + of /f(guess)/ to determine if /guess/ is + above or below the root.]] +[[tol] [A binary functor that determines the termination condition for the search + for the root. /tol/ is passed the current brackets at each step, + when it returns true then the current brackets are returned as the result.]] +[[max_iter] [The maximum number of function invocations to perform in the search + for the root.]] +] + +[optional_policy] + +Returns: a pair of values /r/ that bracket the root so that: + + f(r.first) * f(r.second) <= 0 + +and either + + tol(r.first, r.second) == true + +or + + max_iter >= m + +where /m/ is the initial value of /max_iter/ passed to the function. + +In other words, it's up to the caller to verify whether termination occurred +as a result of exceeding /max_iter/ function invocations (easily done by +checking the value of /max_iter/ when the function returns), rather than +because the termination condition /tol/ was satisfied. + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + const T& fa, + const T& fb, + Tol tol, + boost::uintmax_t& max_iter); + + template + std::pair + toms748_solve( + F f, + const T& a, + const T& b, + const T& fa, + const T& fb, + Tol tol, + boost::uintmax_t& max_iter, + const ``__Policy``&); + +These two functions implement TOMS Algorithm 748: it uses a mixture of +cubic, quadratic and linear (secant) interpolation to locate the root of +/f(x)/. The two functions differ only by whether values for /f(a)/ and +/f(b)/ are already available. The parameters are: + +[variablelist +[[f] [A unary functor that is the function whose root is to be solved. + f(x) need not be uniformly increasing or decreasing on /x/ and + may have multiple roots.]] +[[a] [ The lower bound for the initial bracket of the root.]] +[[b] [The upper bound for the initial bracket of the root. + It is a precondition that /a < b/ and that /a/ and /b/ + bracket the root to find so that /f(a)*f(b) < 0/.]] +[[fa] [Optional: the value of /f(a)/.]] +[[fb] [Optional: the value of /f(b)/.]] +[[tol] [A binary functor that determines the termination condition for the search + for the root. /tol/ is passed the current brackets at each step, + when it returns true then the current brackets are returned as the result.]] +[[max_iter] [The maximum number of function invocations to perform in the search + for the root. On exit /max_iter/ is set to actual number of function + invocations used.]] +] + +[optional_policy] + +Returns: a pair of values /r/ that bracket the root so that: + + f(r.first) * f(r.second) <= 0 + +and either + + tol(r.first, r.second) == true + +or + + max_iter >= m + +where /m/ is the initial value of /max_iter/ passed to the function. + +In other words, it's up to the caller to verify whether termination occurred +as a result of exceeding /max_iter/ function invocations (easily done by +checking the value of /max_iter/), rather than because the termination +condition /tol/ was satisfied. + + template + struct eps_tolerance + { + eps_tolerance(int bits); + bool operator()(const T& a, const T& b)const; + }; + +This is the usual termination condition used with these root finding functions. +Its operator() will return true when the relative distance between /a/ and /b/ +is less than twice the machine epsilon for T, or 2[super 1-bits], whichever is +the larger. In other words you set /bits/ to the number of bits of precision you +want in the result. The minimal tolerance of twice the machine epsilon of T is +required to ensure that we get back a bracketing interval: since this must clearly +be at least 1 epsilon in size. + + struct equal_floor + { + equal_floor(); + template bool operator()(const T& a, const T& b)const; + }; + +This termination condition is used when you want to find an integer result +that is the /floor/ of the true root. It will terminate as soon as both ends +of the interval have the same /floor/. + + struct equal_ceil + { + equal_ceil(); + template bool operator()(const T& a, const T& b)const; + }; + +This termination condition is used when you want to find an integer result +that is the /ceil/ of the true root. It will terminate as soon as both ends +of the interval have the same /ceil/. + + struct equal_nearest_integer + { + equal_nearest_integer(); + template bool operator()(const T& a, const T& b)const; + }; + +This termination condition is used when you want to find an integer result +that is the /closest/ to the true root. It will terminate as soon as both ends +of the interval round to the same nearest integer. + +[h4 Implementation] + +The implementation of the bisection algorithm is extremely straightforward +and not detailed here. TOMS algorithm 748 is described in detail in: + +['Algorithm 748: Enclosing Zeros of Continuous Functions, +G. E. Alefeld, F. A. Potra and Yixun Shi, +ACM Transactions on Mathematica1 Software, Vol. 21. No. 3. September 1995. +Pages 327-344.] + +The implementation here is a faithful translation of this paper into C++. + +[endsect][/section:roots2 Root Finding Without Derivatives] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/series.qbk b/doc/sf_and_dist/series.qbk new file mode 100644 index 000000000..04b02a7a6 --- /dev/null +++ b/doc/sf_and_dist/series.qbk @@ -0,0 +1,129 @@ +[section:series_evaluation Series Evaluation] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ namespace tools{ + + template + typename Functor::result_type sum_series(Functor& func, int bits); + + template + typename Functor::result_type sum_series(Functor& func, int bits, boost::uintmax_t& max_terms); + + template + typename Functor::result_type sum_series(Functor& func, int bits, U init_value); + + template + typename Functor::result_type sum_series(Functor& func, int bits, boost::uintmax_t& max_terms, U init_value); + + template + typename Functor::result_type kahan_sum_series(Functor& func, int bits); + + template + typename Functor::result_type kahan_sum_series(Functor& func, int bits, boost::uintmax_t& max_terms); + + }}} // namespaces + +[h4 Description] + +These algorithms are intended for the +[@http://en.wikipedia.org/wiki/Series_%28mathematics%29 summation of infinite series]. + +Each of the algorithms takes a nullary-function object as the first argument: +the function object will be repeatedly invoked to pull successive terms from +the series being summed. + +The second argument is the number of binary bits of +precision required, summation will stop when the next term is too small to +have any effect on the first /bits/ bits of the result. + +The optional third argument /max_terms/ sets an upper limit on the number +of terms of the series to evaluate. In addition, on exit the function will +set /max_terms/ to the actual number of terms of the series that were +evaluated: this is particularly useful for profiling the convergence +properties of a new series. + +The final optional argument /init_value/ is the initial value of the sum +to which the terms of the series should be added. This is useful in two situations: + +* Where the first value of the series has a different formula to successive +terms. In this case the first value in the series can be passed as the +last argument and the logic of the function object can then be simplified +to return subsequent terms. +* Where the series is being added (or subtracted) from some other value: +termination of the series will likely occur much more rapidly if that other +value is passed as the last argument. For example, there are several functions +that can be expressed as /1 - S(z)/ where S(z) is an infinite series. In this +case, pass -1 as the last argument and then negate the result of the summation +to get the result of /1 - S(z)/. + +The two /kahan_sum_series/ variants of these algorithms maintain a carry term +that corrects for roundoff error during summation. +They are inspired by the +[@http://en.wikipedia.org/wiki/Kahan_Summation_Algorithm /Kahan Summation Formula/] +that appears in +[@http://docs.sun.com/source/806-3568/ncg_goldberg.html What Every Computer Scientist Should Know About Floating-Point Arithmetic]. +However, it should be pointed out that there are very few series that require +summation in this way. + +[h4 Example] + +Let's suppose we want to implement /log(1+x)/ via its infinite series, + +[equation log1pseries] + +We begin by writing a small function object to return successive terms +of the series: + + template + struct log1p_series + { + // we must define a result_type typedef: + typedef T result_type; + + log1p_series(T x) + : k(0), m_mult(-x), m_prod(-1){} + + T operator()() + { + // This is the function operator invoked by the summation + // algorithm, the first call to this operator should return + // the first term of the series, the second call the second + // term and so on. + m_prod *= m_mult; + return m_prod / ++k; + } + + private: + int k; + const T m_mult; + T m_prod; + }; + +Implementing log(1+x) is now fairly trivial: + + template + T log1p(T x) + { + // We really should add some error checking on x here! + assert(std::fabs(x) < 1); + + // construct the series functor: + log1p_series s(x); + // and add it up, with enough digits for full machine precision + // plus a couple more for luck.... ! + return tools::sum_series(s, tools::digits(x) + 2); + } + +[endsect][/section Series Evaluation] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/sinc.qbk b/doc/sf_and_dist/sinc.qbk new file mode 100644 index 000000000..3d7cfbf16 --- /dev/null +++ b/doc/sf_and_dist/sinc.qbk @@ -0,0 +1,103 @@ +[/ math.qbk + Copyright 2006 Hubert Holin and John Maddock. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + +[section:sinc Sinus Cardinal and Hyperbolic Sinus Cardinal Functions] + +[section:sinc_overview Sinus Cardinal and Hyperbolic Sinus Cardinal Functions Overview] + +The [@http://mathworld.wolfram.com/SincFunction.html Sinus Cardinal family of functions] +(indexed by the family of indices [^a > 0]) +is defined by +[equation special_functions_blurb20]; +it sees heavy use in signal processing tasks. + +By analogy, the +[@http://mathworld.wolfram.com/SinhcFunction.htm Hyperbolic Sinus Cardinal] +family of functions +(also indexed by the family of indices [^a > 0]) is defined by +[equation special_functions_blurb22]. + +These two families of functions are composed of entire functions. + +These functions (__sinc_pi and __sinhc_pi) are needed by +[@http://www.boost.org/libs/math/quaternion/quaternion.html our implementation] +of [@http://mathworld.wolfram.com/Quaternion.html quaternions] +and [@http://mathworld.wolfram.com/Octonion.html octonions]. + +[: ['[*Sinus Cardinal of index pi (purple) and Hyperbolic Sinus Cardinal of index pi (red) on R]]] +[: [$../graphs/sinc_pi_and_sinhc_pi_on_r.png]] + +[endsect] + +[section sinc_pi] + +`` +#include +`` + + template + ``__sf_result`` sinc_pi(const T x); + + template + ``__sf_result`` sinc_pi(const T x, const ``__Policy``&); + + template class U> + U sinc_pi(const U x); + + template class U, class ``__Policy``> + U sinc_pi(const U x, const ``__Policy``&); + +Computes +[link math_toolkit.special.sinc.sinc_overview +the Sinus Cardinal] of x: + + sinc_pi(x) = sin(x) / x + +The second form is for complex numbers, +quaternions, octonions etc. Taylor series are used at the origin +to ensure accuracy. + +[optional_policy] + +[endsect] + +[section sinhc_pi] + +`` +#include +`` + + template + ``__sf_result`` sinhc_pi(const T x); + + template + ``__sf_result`` sinhc_pi(const T x, const ``__Policy``&); + + template class U> + U sinhc_pi(const U x); + + template class U, class ``__Policy``> + U sinhc_pi(const U x, const ``__Policy``&); + +Computes http://mathworld.wolfram.com/SinhcFunction.html +[link math_toolkit.special.sinc.sinc_overview +the Hyperbolic Sinus Cardinal] of x: + + sinhc_pi(x) = sinh(x) / x + +The second form is for +complex numbers, quaternions, octonions etc. Taylor series are used at the origin +to ensure accuracy. + +The return type of the first form is computed using the __arg_pomotion_rules +when T is an integer type. + +[optional_policy] + +[endsect] + +[endsect] diff --git a/doc/sf_and_dist/spherical_harmonic.qbk b/doc/sf_and_dist/spherical_harmonic.qbk new file mode 100644 index 000000000..3cfc6946c --- /dev/null +++ b/doc/sf_and_dist/spherical_harmonic.qbk @@ -0,0 +1,150 @@ +[section:sph_harm Spherical Harmonics] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi); + + template + std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&); + + template + ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi); + + template + ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&); + + template + ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi); + + template + ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + +The return type of these functions is computed using the __arg_pomotion_rules +when T1 and T2 are different types. + +[optional_policy] + + template + std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi); + + template + std::complex<``__sf_result``> spherical_harmonic(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&); + +Returns the value of the Spherical Harmonic Y[sub n][super m](theta, phi): + +[equation spherical_0] + +The spherical harmonics Y[sub n][super m](theta, phi) are the angular +portion of the solution to Laplace's equation in spherical coordinates +where azimuthal symmetry is not present. + +[caution Care must be taken in correctly identifying the arguments to this +function: [theta][space] is taken as the polar (colatitudinal) coordinate +with [theta][space] in \[0, [pi]\], and [phi][space] as the azimuthal (longitudinal) +coordinate with [phi][space] in \[0,2[pi]). This is the convention used in Physics, +and matches the definition used by +[@http://documents.wolfram.com/mathematica/functions/SphericalHarmonicY +Mathematica in the function SpericalHarmonicY], +but is opposite to the usual mathematical conventions. + +Some other sources include an additional Condon-Shortley phase term of +(-1)[super m] in the definition of this function: note however that our +definition of the associated Legendre polynomial already includes this term. + +This implementation returns zero for m > n + +For [theta][space] outside \[0, [pi]\] and [phi][space] outside \[0, 2[pi]\] this +implementation follows the convention used by Mathematica: +the function is periodic with period [pi][space] in [theta][space] and 2[pi][space] in +[phi]. Please note that this is not the behaviour one would get +from a casual application of the function's definition. Cautious users +should keep [theta][space] and [phi][space] to the range \[0, [pi]\] and +\[0, 2[pi]\] respectively. + +See: [@http://mathworld.wolfram.com/SphericalHarmonic.html +Weisstein, Eric W. "Spherical Harmonic." +From MathWorld--A Wolfram Web Resource]. ] + + template + ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi); + + template + ``__sf_result`` spherical_harmonic_r(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&); + +Returns the real part of Y[sub n][super m](theta, phi): + +[equation spherical_1] + + template + ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi); + + template + ``__sf_result`` spherical_harmonic_i(unsigned n, int m, T1 theta, T2 phi, const ``__Policy``&); + +Returns the imaginary part of Y[sub n][super m](theta, phi): + +[equation spherical_2] + +[h4 Accuracy] + +The following table shows peak errors for various domains of input arguments. +Note that only results for the widest floating point type on the system are +given as narrower types have __zero_error. Peak errors are the same +for both the real and imaginary parts, as the error is dominated by +calculation of the associated Legendre polynomials: especially near the +roots of the associated Legendre function. + +All values are in units of epsilon. + +[table Peak Errors In the Sperical Harmonic Functions +[[Significand Size] [Platform and Compiler] [Errors in range + +0 < l < 20] ] +[[53] [Win32, Visual C++ 8] [Peak=2x10[super 4] Mean=700] ] +[[64] [SUSE Linux IA32, g++ 4.1] [Peak=2900 Mean=100]] +[[64] [Red Hat Linux IA64, g++ 3.4.4] [Peak=2900 Mean=100] ] +[[113] [HPUX IA64, aCC A.06.06] [Peak=6700 Mean=230]] +] + +Note that the worst errors occur when the degree increases, values greater than +~120 are very unlikely to produce sensible results, especially +when the order is also large. Further the relative errors +are likely to grow arbitrarily large when the function is very close to a root. + +[h4 Testing] + +A mixture of spot tests of values calculated using functions.wolfram.com, +and randomly generated test data are +used: the test data was computed using +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000-bit precision. + +[h4 Implementation] + +These functions are implemented fairly naively using the formulae +given above. Some extra care is taken to prevent roundoff error +when converting from polar coordinates (so for example the +['1-x[super 2]] term used by the associated Legendre functions is calculated +without roundoff error using ['x = cos(theta)], and +['1-x[super 2] = sin[super 2](theta)]). The limiting factor in the error +rates for these functions is the need to calculate values near the roots +of the associated Legendre functions. + +[endsect][/section:beta_function The Beta Function] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/structure.qbk b/doc/sf_and_dist/structure.qbk new file mode 100644 index 000000000..785b340b5 --- /dev/null +++ b/doc/sf_and_dist/structure.qbk @@ -0,0 +1,127 @@ +[section:navigation Navigation] + +Used in combination with the configured browser key, the +following keys act as handy shortcuts for common navigation tasks. + +[h5 Shortcuts] +[: +[^[*p]] - Previous page + +[^[*n]] - Next page + +[^[*h]] - home + +[^[*u]] - Up +] + +The following table shows how to access these from common browsers: + +[table +[[Browser][Access Method]] +[[Internet Explorer] + [Alt+Key highlights the link only, so for example to move to the next topic + you would need "Alt+n" followed by "Enter".]] +[[Firefox 2.0 and later][Alt+Shift+Key follows the link, so for example + "Alt+Shift+n" will take you to the next topic.]] +[[Opera][Press Shift+Esc followed by the access key.]] +[[Konqueror][Press and release the Ctrl key, followed by the access key]] +] + +Some browsers also make these links available in their site-navigation +toolbars: in Opera for example you can use Ctrl plus the left and right +arrow keys to move between "next" and "previous" topics. + +[endsect] + +[section:directories Directory and File Structure] + +[h4 boost\/math] + +[variablelist +[[\/concepts\/] + [Prototype defining the *essential* features of a RealType + class (see real_concept.hpp). Most applications will use `double` + as the RealType (and short `typedef` names of distributions are + reserved for this type where possible), a few will use `float` or + `long double`, but it is also possible to use higher precision types + like __NTL_RR that conform to the requirements specified by real_concept.]] + +[[\/constants\/] + [Templated definition of some highly accurate math + constants (in constants.hpp).]] + +[[\/distributions\/] + [Distributions used in mathematics and, especially, statistics: + Gaussian, Students-t, Fisher, Binomial etc]] + +[[\/policies\/] + [Policy framework, for handling user requested behaviour modifications.]] + +[[\/special_functions\/] + [Math functions generally regarded as 'special', like beta, + cbrt, erf, gamma, lgamma, tgamma ... (Some of these are specified in + C++, and C99\/TR1, and perhaps TR2).]] + +[[\/tools\/] + [Tools used by functions, like evaluating polynomials, continued fractions, + root finding, precision and limits, and by tests. Some will + find application outside this package.]] +] + +[h4 boost\/libs] + +[variablelist +[[\/doc\/] + [Documentation source files in Quickbook format processed into + html and pdf formats.]] + +[[\/examples\/] + [Examples and demos of using math functions and distributions.]] + +[[\/performance\/] + [Performance testing and tuning program.]] + +[[\/test\/] + [Test files, in various .cpp files, most using Boost.Test + (some with test data as .ipp files, usually generated using NTL RR + type with ample precision for the type, often for precisions + suitable for up to 256-bit significand real types).]] + +[[\/tools\/] + [Programs used to generate test data. Also changes to the + [@http://shoup.net/ntl/ NTL] released package to provide a few additional + (and vital) extra features.]] +] + +[endsect] + +[section:namespaces Namespaces] + +All math functions and distributions are in `namespace boost::math` + +So, for example, the Students-t distribution template in `namespace boost::math` is + + template class students_t_distribution + +and can be instantiated with the help of the reserved name `students_t`(for `RealType double`) + + typedef students_t_distribution students_t; + + student_t mydist(10); + +Functions not intended for use by applications are in `boost::math::detail`. + +Functions that may have more general use, like `digits` +(significand), `max_value`, `min_value` and `epsilon` are in +`boost::math::tools`. + +__Policy and configuration information is in namespace `boost::math::policies`. + +[endsect] + +[/ structure.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/test_data.qbk b/doc/sf_and_dist/test_data.qbk new file mode 100644 index 000000000..dcc0480fd --- /dev/null +++ b/doc/sf_and_dist/test_data.qbk @@ -0,0 +1,438 @@ +[section:test_data Graphing, Profiling, and Generating Test Data for Special Functions] + +The class `test_data` and associated helper functions are designed so that in just +a few lines of code you should be able to: + +* Profile a continued fraction, or infinite series for convergence and accuracy. +* Generate csv data from a special function that can be imported into your favorite +graphing program (or spreadsheet) for further analysis. +* Generate high precision test data. + +[h4 Synopsis] + + namespace boost{ namespace math{ namespace tools{ + + enum parameter_type + { + random_in_range = 0, + periodic_in_range = 1, + power_series = 2, + dummy_param = 0x80, + }; + + template + struct parameter_info; + + template + parameter_info make_random_param(T start_range, T end_range, int n_points); + + template + parameter_info make_periodic_param(T start_range, T end_range, int n_points); + + template + parameter_info make_power_param(T basis, int start_exponent, int end_exponent); + + template + bool get_user_parameter_info(parameter_info& info, const char* param_name); + + template + class test_data + { + public: + typedef std::vector row_type; + typedef row_type value_type; + private: + typedef std::set container_type; + public: + typedef typename container_type::reference reference; + typedef typename container_type::const_reference const_reference; + typedef typename container_type::iterator iterator; + typedef typename container_type::const_iterator const_iterator; + typedef typename container_type::difference_type difference_type; + typedef typename container_type::size_type size_type; + + // creation: + test_data(){} + template + test_data(F func, const parameter_info& arg1); + + // insertion: + template + test_data& insert(F func, const parameter_info& arg1); + + template + test_data& insert(F func, const parameter_info& arg1, + const parameter_info& arg2); + + template + test_data& insert(F func, const parameter_info& arg1, + const parameter_info& arg2, + const parameter_info& arg3); + + void clear(); + + // access: + iterator begin(); + iterator end(); + const_iterator begin()const; + const_iterator end()const; + bool operator==(const test_data& d)const; + bool operator!=(const test_data& d)const; + void swap(test_data& other); + size_type size()const; + size_type max_size()const; + bool empty()const; + + bool operator < (const test_data& dat)const; + bool operator <= (const test_data& dat)const; + bool operator > (const test_data& dat)const; + bool operator >= (const test_data& dat)const; + }; + + template + std::basic_ostream& write_csv( + std::basic_ostream& os, + const test_data& data); + + template + std::basic_ostream& write_csv( + std::basic_ostream& os, + const test_data& data, + const charT* separator); + + template + std::ostream& write_code(std::ostream& os, + const test_data& data, + const char* name); + + }}} // namespaces + +[h4 Description] + +This tool is best illustrated with the following series of examples. + +The functionality of test_data is split into the following parts: + +* A functor that implements the function for which data is being generated: +this is the bit you have to write. +* One of more parameters that are to be passed to the functor, these are +described in fairly abstract terms: give me N points distributed like /this/ etc. +* The class test_data, that takes the functor and descriptions of the parameters +and computes how ever many output points have been requested, these are stored +in a sorted container. +* Routines to iterate over the test_data container and output the data in either +csv format, or as C++ source code (as a table using Boost.Array). + +[h5 Example 1: Output Data for Graph Plotting] + +For example, lets say we want to graph the lgamma function between -3 and 100, +one could do this like so: + + #include + #include + + int main() + { + using namespace boost::math::tools; + + // create an object to hold the data: + test_data data; + + // insert 500 points at uniform intervals between just after -3 and 100: + double (*pf)(double) = boost::math::lgamma; + data.insert(pf, make_periodic_param(-3.0 + 0.00001, 100.0, 500)); + + // print out in csv format: + write_csv(std::cout, data, ", "); + return 0; + } + +Which, when plotted, results in: + +[$../graphs/lgamma.png] + +[h5 Example 2: Creating Test Data] + +As a second example, let's suppose we want to create highly accurate test +data for a special function. Since many special functions have two or +more independent parameters, it's very hard to effectively cover all of +the possible parameter space without generating gigabytes of data at +great computational expense. A second best approach is to provide the tools +by which a user (or the library maintainer) can quickly generate more data +on demand to probe the function over a particular domain of interest. + +In this example we'll generate test data for the beta function using +[@http://shoup.net/ntl/doc/RR.txt NTL::RR] at 1000 bit precision. +Rather than call our generic +version of the beta function, we'll implement a deliberately naive version +of the beta function using lgamma, and rely on the high precision of the +data type used to get results accurate to at least 128-bit precision. In this +way our test data is independent of whatever clever tricks we may wish to +use inside the our beta function. + +To start with then, here's the function object that creates the test data: + + #include + #include + #include + #include + + #include + + using namespace boost::math::tools; + + struct beta_data_generator + { + NTL::RR operator()(NTL::RR a, NTL::RR b) + { + // + // If we throw a domain error then test_data will + // ignore this input point. We'll use this to filter + // out all cases where a < b since the beta function + // is symmetrical in a and b: + // + if(a < b) + throw std::domain_error(""); + + // very naively calculate spots with lgamma: + NTL::RR g1, g2, g3; + int s1, s2, s3; + g1 = boost::math::lgamma(a, &s1); + g2 = boost::math::lgamma(b, &s2); + g3 = boost::math::lgamma(a+b, &s3); + g1 += g2 - g3; + g1 = exp(g1); + g1 *= s1 * s2 * s3; + return g1; + } + }; + +To create the data, we'll need to input the domains for a and b +for which the function will be tested: the function `get_user_parameter_info` +is designed for just that purpose. The start of main will look something like: + + // Set the precision on RR: + NTL::RR::SetPrecision(1000); // bits. + NTL::RR::SetOutputPrecision(40); // decimal digits. + + parameter_info arg1, arg2; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the beta function:\n" + " beta(a, b)\n\n"; + + bool cont; + std::string line; + + do{ + // prompt the user for the domain of a and b to test: + get_user_parameter_info(arg1, "a"); + get_user_parameter_info(arg2, "b"); + + // create the data: + data.insert(beta_data_generator(), arg1, arg2); + + // see if the user want's any more domains tested: + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + +[caution At this point one potential stumbling block should be mentioned: +test_data<>::insert will create a matrix of test data when there are two +or more parameters, so if we have two parameters and we're asked for +a thousand points on each, that's a ['million test points in total]. +Don't say you weren't warned!] + +There's just one final step now, and that's to write the test data to file: + + std::cout << "Enter name of test data file [default=beta_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "beta_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "beta_data"); + +The format of the test data looks something like: + + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1830> + beta_med_data = { + SC_(0.4883005917072296142578125), + SC_(0.4883005917072296142578125), + SC_(3.245912809500479157065104747353807392371), + SC_(3.5808107852935791015625), + SC_(0.4883005917072296142578125), + SC_(1.007653173802923954909901438393379243537), + /* ... lots of rows skipped */ + }; + +The first two values in each row are the input parameters that were passed +to our functor and the last value is the return value from the functor. +Had our functor returned a tuple rather than a value, then we would have had +one entry for each element in the tuple in addition to the input parameters. + +The first #define serves two purposes: + +* It reduces the file sizes considerably: all those `static_cast`'s add up to a lot +of bytes otherwise (they are needed to suppress compiler warnings when `T` is +narrower than a `long double`). +* It provides a useful customisation point: for example if we were testing +a user-defined type that has more precision than a `long double` we could change +it to: + +[^#define SC_(x) lexical_cast(BOOST_STRINGIZE(x))] + +in order to ensure that no truncation of the values occurs prior to conversion +to `T`. Note that this isn't used by default as it's rather hard on the compiler +when the table is large. + +[h5 Example 3: Profiling a Continued Fraction for Convergence and Accuracy] + +Alternatively, lets say we want to profile a continued fraction for +convergence and error. As an example, we'll use the continued fraction +for the upper incomplete gamma function, the following function object +returns the next a[sub N ] and b[sub N ] of the continued fraction +each time it's invoked: + + template + struct upper_incomplete_gamma_fract + { + private: + T z, a; + int k; + public: + typedef std::pair result_type; + + upper_incomplete_gamma_fract(T a1, T z1) + : z(z1-a1+1), a(a1), k(0) + { + } + + result_type operator()() + { + ++k; + z += 2; + return result_type(k * (a - k), z); + } + }; + +We want to measure both the relative error, and the rate of convergence +of this fraction, so we'll write a functor that returns both as a tuple: +class test_data will unpack the tuple for us, and create one column of data +for each element in the tuple (in addition to the input parameters): + + #include + #include + #include + #include + #include + + template + struct profile_gamma_fraction + { + typedef std::tr1::tuple result_type; + + result_type operator()(T val) + { + using namespace boost::math::tools; + // estimate the true value, using arbitary precision + // arithmetic and NTL::RR: + NTL::RR rval(val); + upper_incomplete_gamma_fract f1(rval, rval); + NTL::RR true_val = continued_fraction_a(f1, 1000); + // + // Now get the aproximation at double precision, along with the number of + // iterations required: + boost::uintmax_t iters = std::numeric_limits::max(); + upper_incomplete_gamma_fract f2(val, val); + T found_val = continued_fraction_a(f2, std::numeric_limits::digits, iters); + // + // Work out the relative error, as measured in units of epsilon: + T err = real_cast(relative_error(true_val, NTL::RR(found_val)) / std::numeric_limits::epsilon()); + // + // now just return the results as a tuple: + return std::tr1::make_tuple(err, iters); + } + }; + +Feeding that functor into test_data allows rapid output of csv data, +for whatever type `T` we may be interested in: + + int main() + { + using namespace boost::math::tools; + // create an object to hold the data: + test_data data; + // insert 500 points at uniform intervals between just after 0 and 100: + data.insert(profile_gamma_fraction(), make_periodic_param(0.01, 100.0, 100)); + // print out in csv format: + write_csv(std::cout, data, ", "); + return 0; + } + +This time there's no need to plot a graph, the first few rows are: + + a and z, Error/epsilon, Iterations required + + 0.01, 9723.14, 4726 + 1.0099, 9.54818, 87 + 2.0098, 3.84777, 40 + 3.0097, 0.728358, 25 + 4.0096, 2.39712, 21 + 5.0095, 0.233263, 16 + +So it's pretty clear that this fraction shouldn't be used for small values +of a and z. + +[h4 reference] +[#test_data_reference] + +Most of this tool has been described already in the examples above, we'll +just add the following notes on the non-member functions: + + template + parameter_info make_random_param(T start_range, T end_range, int n_points); + +Tells class test_data to test /n_points/ random values in the range +[start_range,end_range]. + + template + parameter_info make_periodic_param(T start_range, T end_range, int n_points); + +Tells class test_data to test /n_points/ evenly spaced values in the range +[start_range,end_range]. + + template + parameter_info make_power_param(T basis, int start_exponent, int end_exponent); + +Tells class test_data to test points of the form ['basis + R * 2[super expon]] for each +/expon/ in the range [start_exponent, end_exponent], and /R/ a random number in \[0.5, 1\]. + + template + bool get_user_parameter_info(parameter_info& info, const char* param_name); + +Prompts the user for the parameter range and form to use. + +Finally, if we don't want the parameter to be included in the output, we can tell +test_data by setting it a "dummy parameter": + + parameter_info p = make_random_param(2.0, 5.0, 10); + p.type |= dummy_param; + +This is useful when the functor used transforms the parameter in some way +before passing it to the function under test, usually the functor will then +return both the transformed input and the result in a tuple, so there's no +need for the original pseudo-parameter to be included in program output. + +[endsect][/section:test_data Graphing, Profiling, and Generating Test Data for Special Functions] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/test_html4_symbols.qbk b/doc/sf_and_dist/test_html4_symbols.qbk new file mode 100644 index 000000000..f19684d10 --- /dev/null +++ b/doc/sf_and_dist/test_html4_symbols.qbk @@ -0,0 +1,144 @@ +[section:test_HTML_4_Symbols test HTML4 symbols] +[/ Examples of using all the Greek and Math symbols defined in HTML4_symbols.qbk] +[/ See http://www.htmlhelp.com/reference/html40/entities/symbols.html] + +[/ Also some miscellaneous math charaters added to this list - see the end.] + +[/ To use, enclose the template name in square brackets.] + + +[fnof], +[Alpha], +[Beta], +[Gamma], +[Delta], +[Epsilon], +[Zeta], +[Eta], +[Theta], +[Iota], +[Kappa], +[Lambda], +[Mu], +[Nu], +[Xi], +[Omicron], +[Pi], +[Rho], +[Sigma], +[Tau], +[Upsilon], +[Phi], +[Chi], +[Psi], +[Omega], +[alpha], +[beta], +[gamma], +[delta], +[epsilon], +[zeta], +[eta], +[theta], +[iota], +[kappa], +[lambda], +[mu], +[nu], +[xi], +[omicron], +[pi], +[rho], +[sigmaf], +[sigma], +[tau], +[upsilon], +[phi], +[chi], +[psi], +[omega], +[thetasym], +[upsih], +[piv], +[bull], +[hellip], +[prime], +[Prime], +[oline], +[frasl], +[weierp], +[image], +[real], +[trade], +[alefsym], +[larr], +[uarr], +[rarr], +[darr], +[harr], +[crarr], +[lArr], +[uArr], +[rArr], +[dArr], +[hArr], +[forall], +[part], +[exist], +[empty], +[nabla], +[isin], +[notin], +[ni], +[prod], +[sum], +[minus], +[lowast], +[radic], +[prop], +[infin], +[ang], +[and], +[or], +[cap], +[cup], +[int], +[there4], +[sim], +[cong], +[asymp], +[ne], +[equiv], +[le], +[ge], +[subset], +[superset], +[nsubset], +[sube], +[supe], +[oplus], +[otimes], +[perp], +[sdot], +[lceil], +[rceil], +[lfloor], +[rfloor], +[lang], +[rang], +[loz], +[spades], +[clubs], +[hearts], +[diams], + +[endsect] + +[/ test_MTML4_symbols.qbk + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + + diff --git a/doc/sf_and_dist/tgamma.qbk b/doc/sf_and_dist/tgamma.qbk new file mode 100644 index 000000000..a660eaf0a --- /dev/null +++ b/doc/sf_and_dist/tgamma.qbk @@ -0,0 +1,202 @@ +[section:tgamma Gamma] + +[h4 Synopsis] + +`` +#include +`` + + namespace boost{ namespace math{ + + template + ``__sf_result`` tgamma(T z); + + template + ``__sf_result`` tgamma(T z, const ``__Policy``&); + + template + ``__sf_result`` tgamma1pm1(T dz); + + template + ``__sf_result`` tgamma1pm1(T dz, const ``__Policy``&); + + }} // namespaces + +[h4 Description] + + template + ``__sf_result`` tgamma(T z); + + template + ``__sf_result`` tgamma(T z, const ``__Policy``&); + +Returns the "true gamma" (hence name tgamma) of value z: + +[equation gamm1] + +[$../graphs/gamma.png] + +[optional_policy] + +There are effectively two versions of the [@http://en.wikipedia.org/wiki/Gamma_function tgamma] +function internally: a fully +generic version that is slow, but reasonably accurate, and a much more +efficient approximation that is used where the number of digits in the significand +of T correspond to a certain __lanczos. In practice any built in +floating point type you will encounter has an appropriate __lanczos +defined for it. It is also possible, given enough machine time, to generate +further __lanczos's using the program libs/math/tools/lanczos_generator.cpp. + +The return type of this function is computed using the __arg_pomotion_rules: +the result is `double` when T is an integer type, and T otherwise. + + template + ``__sf_result`` tgamma1pm1(T dz); + + template + ``__sf_result`` tgamma1pm1(T dz, const ``__Policy``&); + +Returns `tgamma(dz + 1) - 1`. Internally the implementation does not make +use of the addition and subtraction implied by the definition, leading to +accurate results even for very small `dz`. However, the implementation is +capped to either 35 digit accuracy, or to the precision of the __lanczos +associated with type T, whichever is more accurate. + +The return type of this function is computed using the __arg_pomotion_rules: +the result is `double` when T is an integer type, and T otherwise. + +[optional_policy] + +[h4 Accuracy] + +The following table shows the peak errors (in units of epsilon) +found on various platforms with various floating point types, +along with comparisons to the __gsl, __glibc, __hpc and __cephes libraries. +Unless otherwise specified any floating point type that is narrower +than the one shown will have __zero_error. + +[table +[[Significand Size] [Platform and Compiler] [Factorials and Half factorials] [Values Near Zero] [Values Near 1 or 2] [Values Near a Negative Pole]] +[[53] [Win32 Visual C++ 8] +[Peak=1.9 Mean=0.7 + +(GSL=3.9) + +(__cephes=3.0)] +[Peak=2.0 Mean=1.1 + +(GSL=4.5) + +(__cephes=1)] +[Peak=2.0 Mean=1.1 + +(GSL=7.9) + +(__cephes=1.0)] +[Peak=2.6 Mean=1.3 + +(GSL=2.5) + +(__cephes=2.7)] ] +[[64] [Linux IA32 / GCC] +[Peak=300 Mean=49.5 + +(__glibc Peak=395 Mean=89)] +[Peak=3.0 Mean=1.4 + +(__glibc Peak=11 Mean=3.3)] +[Peak=5.0 Mean=1.8 + +(__glibc Peak=0.92 Mean=0.2)] +[Peak=157 Mean=65 + +(__glibc Peak=205 Mean=108)] ] +[[64] [Linux IA64 / GCC] +[__glibc Peak 2.8 Mean=0.9 + +(__glibc Peak 0.7)] +[Peak=4.8 Mean=1.5 + +(__glibc Peak 0)] +[Peak=4.8 Mean=1.5 + +(__glibc Peak 0)] + +[Peak=5.0 Mean=1.7 +(__glibc Peak 0)] ] +[[113] [HPUX IA64, aCC A.06.06] +[Peak=2.5 Mean=1.1 + +(__hpc Peak 0)] +[Peak=3.5 Mean=1.7 + +(__hpc Peak 0)] +[Peak=3.5 Mean=1.6 + +(__hpc Peak 0)] +[Peak=5.2 Mean=1.92 + +(__hpc Peak 0)] ] +] + +[h4 Testing] + +The gamma is relatively easy to test: factorials and half-integer factorials +can be calculated exactly by other means and compared with the gamma function. +In addition, some accuracy tests in known tricky areas were computed at high precision +using the generic version of this function. + +The function `tgamma1pm1` is tested against values calculated very naively +using the formula `tgamma(1+dz)-1` with a lanczos approximation accurate +to around 100 decimal digits. + +[h4 Implementation] + +The generic version of the `tgamma` function is implemented by combining the series and +continued fraction representations for the incomplete gamma function: + +[equation gamm2] + +where /l/ is an arbitrary integration limit: choosing [^l = max(10, a)] +seems to work fairly well. + +For types of known precision the __lanczos is used, a traits class +`boost::math::lanczos::lanczos_traits` maps type T to an appropriate +approximation. + +For z in the range -20 < z < 1 then recursion is used to shift to z > 1 via: + +[equation gamm3] + +For very small z, this helps to preserve the identity: + +[equation gamm4] + +For z < -20 the reflection formula: + +[equation gamm5] + +is used. Particular care has to be taken to evaluate the `z * sin([pi][space] * z)` part: +a special routine is used to reduce z prior to multiplying by [pi][space] to ensure that the +result in is the range [0, [pi]/2]. Without this an excessive amount of error occurs +in this region (which is hard enough already, as the rate of change near a negative pole +is /exceptionally/ high). + +Finally if the argument is a small integer then table lookup of the factorial +is used. + +The function `tgamma1pm1` is implemented using rational approximations [jm_rationals] in the +region `-0.5 < dz < 2`. These are the same approximations (and internal routines) +that are used for __lgamma, and so aren't detailed further here. The result of +the approximation is `log(tgamma(dz+1))` which can fed into __expm1 to give +the desired result. Outside the range `-0.5 < dz < 2` then the naive formula +`tgamma1pm1(dz) = tgamma(dz+1)-1` can be used directly. + +[endsect][/section:tgamma The Gamma Function] +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] + diff --git a/doc/sf_and_dist/thread_safety.qbk b/doc/sf_and_dist/thread_safety.qbk new file mode 100644 index 000000000..ef825854d --- /dev/null +++ b/doc/sf_and_dist/thread_safety.qbk @@ -0,0 +1,30 @@ +[section:threads Thread Safety] + +The library is fully thread safe and re-entrant provided the function +and class templates in the library are instantiated with +built-in floating point types: i.e. the types `float`, `double` +and `long double`. + +However, the library [*is not thread safe] when +used with user-defined (i.e. class type) numeric types. + +The reason for the latter limitation is the need to +initialise symbolic constants using constructs such as: + + static const T coefficient_array = { ... list of values ... }; + +Which is always thread safe when T is a built-in floating point type, +but not when T is a user defined type: as in this case there +is a need for T's constructors to be run, leading to potential +race conditions. + +This limitation may be addressed in a future release. + +[endsect] [/section:threads Thread Safety] + +[/ + Copyright 2006 John Maddock and Paul A. Bristow. + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt). +] diff --git a/doc/sf_and_dist/win32_nmake.mak b/doc/sf_and_dist/win32_nmake.mak new file mode 100644 index 000000000..be932f32d --- /dev/null +++ b/doc/sf_and_dist/win32_nmake.mak @@ -0,0 +1,73 @@ +# Copyright 2006 John Maddock, Paul A. Bristow and Xiaogang Zhang. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt). +# +# Example makefile that builds the docs. +# Note that all the following paths will have to be changed to match +# your actual installation paths. +# + +# Path to quickbook executable: +QB="C:/download/open/xml/bin/quickbook.exe" + +# Path to xsltproc: +XSLTPROC="C:/download/open/xml/bin/xsltproc-win32/xsltproc.exe" + +# Path to Boost Trunc: +BOOST=c:/data/boost/boost/trunk + +# Path to FO processor (XEP): +FO=C:/Progra~1/xep/xep.bat + +# Configuration options: +COMMON_XSL_PARAM=--stringparam admon.graphics "1" --stringparam body.start.indent "0pt" --stringparam chunk.first.sections "1" --stringparam chunk.section.depth "10" --stringparam fop.extensions "0" --stringparam generate.section.toc.level "10" --stringparam html.stylesheet "../../../../../../trunk/doc/html/boostbook.css" --stringparam navig.graphics "1" --stringparam page.margin.inner "0.5in" --stringparam page.margin.outer "0.5in" --stringparam paper.type "A4" --stringparam toc.max.depth "4" --stringparam toc.section.depth "10" --stringparam xep.extensions "1" +PDF_XSL_PARAM=--stringparam admon.graphics.extension ".svg" --stringparam use.role.for.mediaobject 1 --stringparam preferred.mediaobject.role print --stringparam admon.graphics.path "../html/images/" +HTML_XSL_PARAM= +PROJECT_NAME=math + +all : pdf html + +pdf : pdf/$(PROJECT_NAME).pdf +html : html/index.html + +xml/$(PROJECT_NAME).xml : + -mkdir xml + $(QB) --output-file=xml\$(PROJECT_NAME).xml $(PROJECT_NAME).qbk + +xml/$(PROJECT_NAME).docbook : xml\$(PROJECT_NAME).xml xml/catalog.xml + set XML_CATALOG_FILES=xml/catalog.xml + $(XSLTPROC) $(COMMON_XSL_PARAM) --xinclude -o "xml\$(PROJECT_NAME).docbook" "$(BOOST)\tools\boostbook\xsl\docbook.xsl" "xml\$(PROJECT_NAME).xml" + +xml/$(PROJECT_NAME).fo : xml\$(PROJECT_NAME).docbook xml/catalog.xml + set XML_CATALOG_FILES=xml/catalog.xml + $(XSLTPROC) $(COMMON_XSL_PARAM) $(PDF_XSL_PARAM) --xinclude -o "xml\$(PROJECT_NAME).fo" "$(BOOST)\tools\boostbook\xsl\fo.xsl" "xml\$(PROJECT_NAME).docbook" + +pdf/$(PROJECT_NAME).pdf : xml\$(PROJECT_NAME).fo + -mkdir pdf + set JAVA_HOME=C:/PROGRA~1/Java/j2re1.4.2_12 + call $(FO) xml\$(PROJECT_NAME).fo pdf\$(PROJECT_NAME).pdf + +html/index.html : xml\$(PROJECT_NAME).fo + -mkdir html + set XML_CATALOG_FILES=xml/catalog.xml + $(XSLTPROC) $(COMMON_XSL_PARAM) $(HTML_XSL_PARAM) --xinclude -o "html/" "$(BOOST)\tools\boostbook\xsl\html.xsl" "xml\$(PROJECT_NAME).docbook" + +xml/catalog.xml : + @echo < + + + + + + +<< + + + + + + diff --git a/doc/svg-admon/caution.svg b/doc/svg-admon/caution.svg new file mode 100644 index 000000000..4bd586a08 --- /dev/null +++ b/doc/svg-admon/caution.svg @@ -0,0 +1,68 @@ + + + + + + Attenzione + + + + pulsante + + + + + Open Clip Art Library + + + + + Architetto Francesco Rollandin + + + + + Architetto Francesco Rollandin + + + + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/svg-admon/home.svg b/doc/svg-admon/home.svg new file mode 100644 index 000000000..e803a3178 --- /dev/null +++ b/doc/svg-admon/home.svg @@ -0,0 +1,26 @@ + + + + + + + + +]> + + + + + + + + + + + + + + diff --git a/doc/svg-admon/important.svg b/doc/svg-admon/important.svg new file mode 100644 index 000000000..dd84f3fe3 --- /dev/null +++ b/doc/svg-admon/important.svg @@ -0,0 +1,25 @@ + + + + + + + + +]> + + + + + + + + + + + + + + + diff --git a/doc/svg-admon/next.svg b/doc/svg-admon/next.svg new file mode 100644 index 000000000..75fa83ed8 --- /dev/null +++ b/doc/svg-admon/next.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/doc/svg-admon/note.svg b/doc/svg-admon/note.svg new file mode 100644 index 000000000..648299d26 --- /dev/null +++ b/doc/svg-admon/note.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + diff --git a/doc/svg-admon/prev.svg b/doc/svg-admon/prev.svg new file mode 100644 index 000000000..6d88ffdd0 --- /dev/null +++ b/doc/svg-admon/prev.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/doc/svg-admon/tip.svg b/doc/svg-admon/tip.svg new file mode 100644 index 000000000..cd437a5e8 --- /dev/null +++ b/doc/svg-admon/tip.svg @@ -0,0 +1,84 @@ + + + + + + lamp + + + + office + + lamp + + + + + Open Clip Art Library + + + + + Sergio Luiz Araujo Silva + + + + + Public Domain + + + set 2005 + image/svg+xml + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/svg-admon/up.svg b/doc/svg-admon/up.svg new file mode 100644 index 000000000..d31aa9c80 --- /dev/null +++ b/doc/svg-admon/up.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/doc/svg-admon/warning.svg b/doc/svg-admon/warning.svg new file mode 100644 index 000000000..fc8d7484c --- /dev/null +++ b/doc/svg-admon/warning.svg @@ -0,0 +1,23 @@ + + + + + + + + +]> + + + + + + + + + + + + + diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 new file mode 100644 index 000000000..2d4917225 --- /dev/null +++ b/example/Jamfile.v2 @@ -0,0 +1,79 @@ +# \math_toolkit\libs\math\example\jamfile.v2 +# Runs statistics examples +# Copyright 2007 John Maddock and Paul A. Bristow. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +# bring in the rules for testing +import testing ; + +project + : requirements + gcc:-Wno-missing-braces + darwin:-Wno-missing-braces + acc:+W2068,2461,2236,4070 + intel:-Qwd264,239 + msvc:all + msvc:on + msvc:/wd4996 + msvc:/wd4512 + msvc:/wd4610 + msvc:/wd4510 + msvc:/wd4127 + msvc:/wd4701 + msvc:/wd4127 + msvc:/wd4305 + ../../.. + ; + +run binomial_confidence_limits.cpp ; +run binomial_example3.cpp ; +run binomial_sample_sizes.cpp ; +run binomial_example_nag.cpp ; +run c_error_policy_example.cpp ; +run chi_square_std_dev_test.cpp ; +run distribution_construction.cpp ; +run error_handling_example.cpp ; +run error_policies_example.cpp ; +run error_policy_example.cpp ; +run f_test.cpp ; +run neg_binom_confidence_limits.cpp ; +run neg_binomial_sample_sizes.cpp ; +# run negative_binomial_construction_examples.cpp ; delete for now +run negative_binomial_example1.cpp ; +run negative_binomial_example2.cpp ; +# run negative_binomial_example3.cpp ; +run policy_eg_1.cpp ; +run policy_eg_2.cpp ; +run policy_eg_3.cpp ; +run policy_eg_4.cpp ; +run policy_eg_5.cpp ; +run policy_eg_6.cpp ; +run policy_eg_7.cpp ; +run policy_eg_8.cpp ; +run policy_eg_9.cpp ; +run policy_eg_10.cpp ; +run policy_ref_snip1.cpp ; +run policy_ref_snip10.cpp ; +run policy_ref_snip11.cpp ; +run policy_ref_snip12.cpp ; +run policy_ref_snip13.cpp ; +run policy_ref_snip2.cpp ; +run policy_ref_snip3.cpp ; +run policy_ref_snip4.cpp ; +run policy_ref_snip5.cpp ; +run policy_ref_snip6.cpp ; +run policy_ref_snip7.cpp ; +run policy_ref_snip8.cpp ; +run policy_ref_snip9.cpp ; +#run statistics_functions_example1.cpp ; +run students_t_example1.cpp ; +run students_t_example2.cpp ; +run students_t_example3.cpp ; +run students_t_single_sample.cpp ; +run students_t_two_samples.cpp ; + + + + + diff --git a/example/binomial_coinflip_example.cpp b/example/binomial_coinflip_example.cpp new file mode 100644 index 000000000..939b44624 --- /dev/null +++ b/example/binomial_coinflip_example.cpp @@ -0,0 +1,237 @@ +// Copyright Paul A. 2007 +// Copyright John Maddock 2006 + +// 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) + +// Simple example of computing probabilities and quantiles for +// a Bernoulli random variable representing the flipping of a coin. + +// http://mathworld.wolfram.com/CoinTossing.html +// http://en.wikipedia.org/wiki/Bernoulli_trial +// Weisstein, Eric W. "Dice." From MathWorld--A Wolfram Web Resource. +// http://mathworld.wolfram.com/Dice.html +// http://en.wikipedia.org/wiki/Bernoulli_distribution +// http://mathworld.wolfram.com/BernoulliDistribution.html +// +// An idealized coin consists of a circular disk of zero thickness which, +// when thrown in the air and allowed to fall, will rest with either side face up +// ("heads" H or "tails" T) with equal probability. A coin is therefore a two-sided die. +// Despite slight differences between the sides and nonzero thickness of actual coins, +// the distribution of their tosses makes a good approximation to a p==1/2 Bernoulli distribution. + +//[binomial_coinflip_example1 + +/*`An example of a [@http://en.wikipedia.org/wiki/Bernoulli_process Bernoulli process] +is coin flipping. +A variable in such a sequence may be called a Bernoulli variable. + +This example shows using the Binomial distribution to predict the probability +of heads and tails when throwing a coin. + +The number of correct answers (say heads), +X, is distributed as a binomial random variable +with binomial distribution parameters number of trials (flips) n = 10 and probability (success_fraction) of getting a head p = 0.5 (a 'fair' coin). + +(Our coin is assumed fair, but we could easily change the success_fraction parameter p +from 0.5 to some other value to simulate an unfair coin, +say 0.6 for one with chewing gum on the tail, +so it is more likely to fall tails down and heads up). + +First we need some includes and using statements to be able to use the binomial distribution, some std input and output, and get started: +*/ + +#include + using boost::math::binomial; + +#include + using std::cout; using std::endl; using std::left; +#include + using std::setw; + +int main() +{ + cout << "Using Binomial distribution to predict how many heads and tails." << endl; + try + { +/*` +See note [link coinflip_eg_catch with the catch block] +about why a try and catch block is always a good idea. + +First, construct a binomial distribution with parameters success_fraction +1/2, and how many flips. +*/ + const double success_fraction = 0.5; // = 50% = 1/2 for a 'fair' coin. + int flips = 10; + binomial flip(flips, success_fraction); + + cout.precision(4); +/*` + Then some examples of using Binomial moments (and echoing the parameters). +*/ + cout << "From " << flips << " one can expect to get on average " + << mean(flip) << " heads (or tails)." << endl; + cout << "Mode is " << mode(flip) << endl; + cout << "Standard deviation is " << standard_deviation(flip) << endl; + cout << "So about 2/3 will lie within 1 standard deviation and get between " + << ceil(mean(flip) - standard_deviation(flip)) << " and " + << floor(mean(flip) + standard_deviation(flip)) << " correct." << endl; + cout << "Skewness is " << skewness(flip) << endl; + // Skewness of binomial distributions is only zero (symmetrical) + // if success_fraction is exactly one half, + // for example, when flipping 'fair' coins. + cout << "Skewness if success_fraction is " << flip.success_fraction() + << " is " << skewness(flip) << endl << endl; // Expect zero for a 'fair' coin. +/*` +Now we show a variety of predictions on the probability of heads: +*/ + cout << "For " << flip.trials() << " coin flips: " << endl; + cout << "Probability of getting no heads is " << pdf(flip, 0) << endl; + cout << "Probability of getting at least one head is " << 1. - pdf(flip, 0) << endl; +/*` +When we want to calculate the probability for a range or values we can sum the PDF's: +*/ + cout << "Probability of getting 0 or 1 heads is " + << pdf(flip, 0) + pdf(flip, 1) << endl; // sum of exactly == probabilities +/*` +Or we can use the cdf. +*/ + cout << "Probability of getting 0 or 1 (<= 1) heads is " << cdf(flip, 1) << endl; + cout << "Probability of getting 9 or 10 heads is " << pdf(flip, 9) + pdf(flip, 10) << endl; +/*` +Note that using +*/ + cout << "Probability of getting 9 or 10 heads is " << 1. - cdf(flip, 8) << endl; +/*` +is less accurate than using the complement +*/ + cout << "Probability of getting 9 or 10 heads is " << cdf(complement(flip, 8)) << endl; +/*` +Since the subtraction may involve +[@http://docs.sun.com/source/806-3568/ncg_goldberg.html cancellation error], +where as `cdf(complement(flip, 8))` +does not use such a subtraction internally, and so does not exhibit the problem. + +To get the probability for a range of heads, we can either add the pdfs for each number of heads +*/ + cout << "Probability of between 4 and 6 heads (4 or 5 or 6) is " + // P(X == 4) + P(X == 5) + P(X == 6) + << pdf(flip, 4) + pdf(flip, 5) + pdf(flip, 6) << endl; +/*` +But this is probably less efficient than using the cdf +*/ + cout << "Probability of between 4 and 6 heads (4 or 5 or 6) is " + // P(X <= 6) - P(X <= 3) == P(X < 4) + << cdf(flip, 6) - cdf(flip, 3) << endl; +/*` +Certainly for a bigger range like, 3 to 7 +*/ + cout << "Probability of between 3 and 7 heads (3, 4, 5, 6 or 7) is " + // P(X <= 7) - P(X <= 2) == P(X < 3) + << cdf(flip, 7) - cdf(flip, 2) << endl; + cout << endl; + +/*` +Finally, print two tables of probability for the /exactly/ and /at least/ a number of heads. +*/ + // Print a table of probability for the exactly a number of heads. + cout << "Probability of getting exactly (==) heads" << endl; + for (int successes = 0; successes <= flips; successes++) + { // Say success means getting a head (or equally success means getting a tail). + double probability = pdf(flip, successes); + cout << left << setw(2) << successes << " " << setw(10) + << probability << " or 1 in " << 1. / probability + << ", or " << probability * 100. << "%" << endl; + } // for i + cout << endl; + + // Tabulate the probability of getting between zero heads and 0 upto 10 heads. + cout << "Probability of getting upto (<=) heads" << endl; + for (int successes = 0; successes <= flips; successes++) + { // Say success means getting a head + // (equally success could mean getting a tail). + double probability = cdf(flip, successes); // P(X <= heads) + cout << setw(2) << successes << " " << setw(10) << left + << probability << " or 1 in " << 1. / probability << ", or " + << probability * 100. << "%"<< endl; + } // for i +/*` +The last (0 to 10 heads) must, of course, be 100% probability. +*/ + } + catch(const std::exception& e) + { + // + /*` + [#coinflip_eg_catch] + It is always essential to include try & catch blocks because + default policies are to throw exceptions on arguments that + are out of domain or cause errors like numeric-overflow. + + Lacking try & catch blocks, the program will abort, whereas the + message below from the thrown exception will give some helpful + clues as to the cause of the problem. + */ + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } +//] [binomial_coinflip_example1] + return 0; +} // int main() + +// Output: + +//[binomial_coinflip_example_output +/*` + +[pre +Using Binomial distribution to predict how many heads and tails. +From 10 one can expect to get on average 5 heads (or tails). +Mode is 5 +Standard deviation is 1.581 +So about 2/3 will lie within 1 standard deviation and get between 4 and 6 correct. +Skewness is 0 +Skewness if success_fraction is 0.5 is 0 + +For 10 coin flips: +Probability of getting no heads is 0.0009766 +Probability of getting at least one head is 0.999 +Probability of getting 0 or 1 heads is 0.01074 +Probability of getting 0 or 1 (<= 1) heads is 0.01074 +Probability of getting 9 or 10 heads is 0.01074 +Probability of getting 9 or 10 heads is 0.01074 +Probability of getting 9 or 10 heads is 0.01074 +Probability of between 4 and 6 heads (4 or 5 or 6) is 0.6562 +Probability of between 4 and 6 heads (4 or 5 or 6) is 0.6563 +Probability of between 3 and 7 heads (3, 4, 5, 6 or 7) is 0.8906 + +Probability of getting exactly (==) heads +0 0.0009766 or 1 in 1024, or 0.09766% +1 0.009766 or 1 in 102.4, or 0.9766% +2 0.04395 or 1 in 22.76, or 4.395% +3 0.1172 or 1 in 8.533, or 11.72% +4 0.2051 or 1 in 4.876, or 20.51% +5 0.2461 or 1 in 4.063, or 24.61% +6 0.2051 or 1 in 4.876, or 20.51% +7 0.1172 or 1 in 8.533, or 11.72% +8 0.04395 or 1 in 22.76, or 4.395% +9 0.009766 or 1 in 102.4, or 0.9766% +10 0.0009766 or 1 in 1024, or 0.09766% + +Probability of getting upto (<=) heads +0 0.0009766 or 1 in 1024, or 0.09766% +1 0.01074 or 1 in 93.09, or 1.074% +2 0.05469 or 1 in 18.29, or 5.469% +3 0.1719 or 1 in 5.818, or 17.19% +4 0.377 or 1 in 2.653, or 37.7% +5 0.623 or 1 in 1.605, or 62.3% +6 0.8281 or 1 in 1.208, or 82.81% +7 0.9453 or 1 in 1.058, or 94.53% +8 0.9893 or 1 in 1.011, or 98.93% +9 0.999 or 1 in 1.001, or 99.9% +10 1 or 1 in 1, or 100% +] +*/ +//][/binomial_coinflip_example_output] diff --git a/example/binomial_confidence_limits.cpp b/example/binomial_confidence_limits.cpp new file mode 100644 index 000000000..3e6f46fb8 --- /dev/null +++ b/example/binomial_confidence_limits.cpp @@ -0,0 +1,159 @@ +// Copyright John Maddock 2006 +// 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) + +#ifdef _MSC_VER +# pragma warning(disable: 4512) // assignment operator could not be generated. +# pragma warning(disable: 4510) // default constructor could not be generated. +# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required. +#endif + +#include +#include +#include + +void confidence_limits_on_frequency(unsigned trials, unsigned successes) +{ + // + // trials = Total number of trials. + // successes = Total number of observed successes. + // + // Calculate confidence limits for an observed + // frequency of occurrence that follows a binomial + // distribution. + // + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "___________________________________________\n" + "2-Sided Confidence Limits For Success Ratio\n" + "___________________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of Observations" << "= " << trials << "\n"; + cout << setw(40) << left << "Number of successes" << "= " << successes << "\n"; + cout << setw(40) << left << "Sample frequency of occurrence" << "= " << double(successes) / trials << "\n"; + // + // Define a table of significance levels: + // + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + // + // Print table header: + // + cout << "\n\n" + "_______________________________________________________________________\n" + "Confidence Lower CP Upper CP Lower JP Upper JP\n" + " Value (%) Limit Limit Limit Limit\n" + "_______________________________________________________________________\n"; + // + // Now print out the data for the table rows. + // + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // Calculate Clopper Pearson bounds: + double l = binomial_distribution<>::find_lower_bound_on_p(trials, successes, alpha[i]/2); + double u = binomial_distribution<>::find_upper_bound_on_p(trials, successes, alpha[i]/2); + // Print Clopper Pearson Limits: + cout << fixed << setprecision(5) << setw(15) << right << l; + cout << fixed << setprecision(5) << setw(15) << right << u; + // Calculate Jeffreys Prior Bounds: + l = binomial_distribution<>::find_lower_bound_on_p(trials, successes, alpha[i]/2, binomial_distribution<>::jeffreys_prior_interval); + u = binomial_distribution<>::find_upper_bound_on_p(trials, successes, alpha[i]/2, binomial_distribution<>::jeffreys_prior_interval); + // Print Jeffreys Prior Limits: + cout << fixed << setprecision(5) << setw(15) << right << l; + cout << fixed << setprecision(5) << setw(15) << right << u << std::endl; + } + cout << endl; +} // void confidence_limits_on_frequency() + +int main() +{ + confidence_limits_on_frequency(20, 4); + confidence_limits_on_frequency(200, 40); + confidence_limits_on_frequency(2000, 400); + + return 0; +} // int main() + +/* + +------ Build started: Project: binomial_confidence_limits, Configuration: Debug Win32 ------ +Compiling... +binomial_confidence_limits.cpp +Linking... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\binomial_confidence_limits.exe" +___________________________________________ +2-Sided Confidence Limits For Success Ratio +___________________________________________ + +Number of Observations = 20 +Number of successes = 4 +Sample frequency of occurrence = 0.2 + + +_______________________________________________________________________ +Confidence Lower CP Upper CP Lower JP Upper JP + Value (%) Limit Limit Limit Limit +_______________________________________________________________________ + 50.000 0.12840 0.29588 0.14974 0.26916 + 75.000 0.09775 0.34633 0.11653 0.31861 + 90.000 0.07135 0.40103 0.08734 0.37274 + 95.000 0.05733 0.43661 0.07152 0.40823 + 99.000 0.03576 0.50661 0.04655 0.47859 + 99.900 0.01905 0.58632 0.02634 0.55960 + 99.990 0.01042 0.64997 0.01530 0.62495 + 99.999 0.00577 0.70216 0.00901 0.67897 + +___________________________________________ +2-Sided Confidence Limits For Success Ratio +___________________________________________ + +Number of Observations = 200 +Number of successes = 40 +Sample frequency of occurrence = 0.2000000 + + +_______________________________________________________________________ +Confidence Lower CP Upper CP Lower JP Upper JP + Value (%) Limit Limit Limit Limit +_______________________________________________________________________ + 50.000 0.17949 0.22259 0.18190 0.22001 + 75.000 0.16701 0.23693 0.16934 0.23429 + 90.000 0.15455 0.25225 0.15681 0.24956 + 95.000 0.14689 0.26223 0.14910 0.25951 + 99.000 0.13257 0.28218 0.13468 0.27940 + 99.900 0.11703 0.30601 0.11902 0.30318 + 99.990 0.10489 0.32652 0.10677 0.32366 + 99.999 0.09492 0.34485 0.09670 0.34197 + +___________________________________________ +2-Sided Confidence Limits For Success Ratio +___________________________________________ + +Number of Observations = 2000 +Number of successes = 400 +Sample frequency of occurrence = 0.2000000 + + +_______________________________________________________________________ +Confidence Lower CP Upper CP Lower JP Upper JP + Value (%) Limit Limit Limit Limit +_______________________________________________________________________ + 50.000 0.19382 0.20638 0.19406 0.20613 + 75.000 0.18965 0.21072 0.18990 0.21047 + 90.000 0.18537 0.21528 0.18561 0.21503 + 95.000 0.18267 0.21821 0.18291 0.21796 + 99.000 0.17745 0.22400 0.17769 0.22374 + 99.900 0.17150 0.23079 0.17173 0.23053 + 99.990 0.16658 0.23657 0.16681 0.23631 + 99.999 0.16233 0.24169 0.16256 0.24143 + +*/ + + + diff --git a/example/binomial_example3.cpp b/example/binomial_example3.cpp new file mode 100644 index 000000000..2b0509070 --- /dev/null +++ b/example/binomial_example3.cpp @@ -0,0 +1,91 @@ +// Copyright Paul A. 2006 +// Copyright John Maddock 2006 +// 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) + +// Simple example of computing probabilities for a binomial random variable. +// Replication of source nag_binomial_dist (g01bjc). + +// Shows how to replace NAG C library calls by Boost Math Toolkit C++ calls. + +#ifdef _MSC_VER +# pragma warning(disable: 4512) // assignment operator could not be generated. +# pragma warning(disable: 4510) // default constructor could not be generated. +# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required. +#endif + +#include +using std::cout; +using std::endl; +using std::ios; +using std::showpoint; +#include +using std::fixed; +using std::setw; +#include + +int main() +{ + cout << "Example 3 of using the binomial distribution to replicate a NAG library call." << endl; + using boost::math::binomial_distribution; + + // This replicates the computation of the examples of using nag-binomial_dist + // using g01bjc in section g01 Sample Calculations on Statistical Data. + // http://www.nag.co.uk/numeric/cl/manual/pdf/G01/g01bjc.pdf + // Program results section 8.3 page 3.g01bjc.3 + //8.2. Program Data + //g01bjc Example Program Data + //4 0.50 2 : n, p, k + //19 0.44 13 + //100 0.75 67 + //2000 0.33 700 + //8.3. Program Results + //g01bjc Example Program Results + //n p k plek pgtk peqk + //4 0.500 2 0.68750 0.31250 0.37500 + //19 0.440 13 0.99138 0.00862 0.01939 + //100 0.750 67 0.04460 0.95540 0.01700 + //2000 0.330 700 0.97251 0.02749 0.00312 + + cout.setf(ios::showpoint); // Trailing zeros to show significant decimal digits. + cout.precision(5); // Should be able to calculate this? + cout << fixed; + // Binomial distribution. + + // Note that cdf(dist, k) is equivalent to NAG library plek probability of <= k + // cdf(complement(dist, k)) is equivalent to NAG library pgtk probability of > k + // pdf(dist, k) is equivalent to NAG library peqk probability of == k + + cout << " n p k plek pgtk peqk " << endl; + binomial_distribution<>my_dist(4, 0.5); + cout << setw(4) << (int)my_dist.trials() << " " << my_dist.success_fraction() << " "<< 2 << " " + << cdf(my_dist, 2) << " " << cdf(complement(my_dist, 2)) << " " << pdf(my_dist, 2) << endl; + binomial_distribution<>two(19, 0.440); + cout << setw(4) << (int)two.trials() << " " << two.success_fraction() << " " << 13 << " " + << cdf(two, 13) << " " << cdf(complement(two, 13)) << " " << pdf(two, 13) << endl; + binomial_distribution<>three(100, 0.750); + cout << setw(4) << (int)three.trials() << " " << three.success_fraction() << " " << 67 << " " + << cdf(three, 67) << " " << cdf(complement(three, 67)) << " " << pdf(three, 67) << endl; + binomial_distribution<>four(2000, 0.330); + cout << setw(4) << (int)four.trials() << " " << four.success_fraction() << " " << 700 << " " + << cdf(four, 700) << " " << cdf(complement(four, 700)) << " " << pdf(four, 700) << endl; + + return 0; +} // int main() + +/* + +Autorun "i:\boost-sandbox\math_toolkit\libs\math\test\msvc80\debug\binomial_example3.exe" +Example 3 of using the binomial distribution. + n p k plek pgtk peqk + 4 0.50000 2 0.68750 0.31250 0.37500 + 19 0.44000 13 0.99138 0.00862 0.01939 + 100 0.75000 67 0.04460 0.95540 0.01700 +2000 0.33000 700 0.97251 0.02749 0.00312 + + + + */ + diff --git a/example/binomial_example_nag.cpp b/example/binomial_example_nag.cpp new file mode 100644 index 000000000..1020a8cf5 --- /dev/null +++ b/example/binomial_example_nag.cpp @@ -0,0 +1,91 @@ +// Copyright Paul A. 2007 +// Copyright John Maddock 2007 +// 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) + +// Simple example of computing probabilities for a binomial random variable. +// Replication of source nag_binomial_dist (g01bjc). + +// Shows how to replace NAG C library calls by Boost Math Toolkit C++ calls. +// Note that the default policy does not replicate the way that NAG +// library calls handle 'bad' arguments, but you can define policies that do, +// as well as other policies that may suit your application even better. +// See the examples of changing default policies for details. + +#include + +#include + using std::cout; using std::endl; using std::ios; using std::showpoint; +#include + using std::fixed; using std::setw; + +int main() +{ + cout << "Using the binomial distribution to replicate a NAG library call." << endl; + using boost::math::binomial_distribution; + + // This replicates the computation of the examples of using nag-binomial_dist + // using g01bjc in section g01 Somple Calculations on Statistical Data. + // http://www.nag.co.uk/numeric/cl/manual/pdf/G01/g01bjc.pdf + // Program results section 8.3 page 3.g01bjc.3 + //8.2. Program Data + //g01bjc Example Program Data + //4 0.50 2 : n, p, k + //19 0.44 13 + //100 0.75 67 + //2000 0.33 700 + //8.3. Program Results + //g01bjc Example Program Results + //n p k plek pgtk peqk + //4 0.500 2 0.68750 0.31250 0.37500 + //19 0.440 13 0.99138 0.00862 0.01939 + //100 0.750 67 0.04460 0.95540 0.01700 + //2000 0.330 700 0.97251 0.02749 0.00312 + + cout.setf(ios::showpoint); // Trailing zeros to show significant decimal digits. + cout.precision(5); // Might calculate this from trials in distribution? + cout << fixed; + // Binomial distribution. + + // Note that cdf(dist, k) is equivalent to NAG library plek probability of <= k + // cdf(complement(dist, k)) is equivalent to NAG library pgtk probability of > k + // pdf(dist, k) is equivalent to NAG library peqk probability of == k + + cout << " n p k plek pgtk peqk " << endl; + binomial_distribution<>my_dist(4, 0.5); + cout << setw(4) << (int)my_dist.trials() << " " << my_dist.success_fraction() + << " " << 2 << " " << cdf(my_dist, 2) << " " + << cdf(complement(my_dist, 2)) << " " << pdf(my_dist, 2) << endl; + + binomial_distribution<>two(19, 0.440); + cout << setw(4) << (int)two.trials() << " " << two.success_fraction() + << " " << 13 << " " << cdf(two, 13) << " " + << cdf(complement(two, 13)) << " " << pdf(two, 13) << endl; + + binomial_distribution<>three(100, 0.750); + cout << setw(4) << (int)three.trials() << " " << three.success_fraction() + << " " << 67 << " " << cdf(three, 67) << " " << cdf(complement(three, 67)) + << " " << pdf(three, 67) << endl; + binomial_distribution<>four(2000, 0.330); + cout << setw(4) << (int)four.trials() << " " << four.success_fraction() + << " " << 700 << " " + << cdf(four, 700) << " " << cdf(complement(four, 700)) + << " " << pdf(four, 700) << endl; + + return 0; +} // int main() + +/* + +Example of using the binomial distribution to replicate a NAG library call. + n p k plek pgtk peqk + 4 0.50000 2 0.68750 0.31250 0.37500 + 19 0.44000 13 0.99138 0.00862 0.01939 + 100 0.75000 67 0.04460 0.95540 0.01700 +2000 0.33000 700 0.97251 0.02749 0.00312 + + + */ + diff --git a/example/binomial_quiz_example.cpp b/example/binomial_quiz_example.cpp new file mode 100644 index 000000000..a4be2dcdb --- /dev/null +++ b/example/binomial_quiz_example.cpp @@ -0,0 +1,520 @@ +// Copyright Paul A. Bristow 2007 +// Copyright John Maddock 2006 + +// 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) + +// binomial_examples_quiz.cpp + +// Simple example of computing probabilities and quantiles for a binomial random variable +// representing the correct guesses on a multiple-choice test. + +// source http://www.stat.wvu.edu/SRS/Modules/Binomial/test.html + +//[binomial_quiz_example1 +/*` +A multiple choice test has four possible answers to each of 16 questions. +A student guesses the answer to each question, +so the probability of getting a correct answer on any given question is +one in four, a quarter, 1/4, 25% or fraction 0.25. +The conditions of the binomial experiment are assumed to be met: +n = 16 questions constitute the trials; +each question results in one of two possible outcomes (correct or incorrect); +the probability of being correct is 0.25 and is constant if no knowledge about the subject is assumed; +the questions are answered independently if the student's answer to a question +in no way influences his/her answer to another question. + +First, we need to be able to use the binomial distribution constructor +(and some std input/output, of course). +*/ + +#include + using boost::math::binomial; + +#include + using std::cout; using std::endl; + using std::ios; using std::flush; using std::left; using std::right; using std::fixed; +#include + using std::setw; using std::setprecision; +//][/binomial_quiz_example1] + +int main() +{ + try + { + cout << "Binomial distribution example - guessing in a quiz." << endl; +//[binomial_quiz_example2 +/*` +The number of correct answers, X, is distributed as a binomial random variable +with binomial distribution parameters: questions n = 16 and success fraction probability p = 0.25. +So we construct a binomial distribution: +*/ + int questions = 16; // All the questions in the quiz. + int answers = 4; // Possible answers to each question. + double success_fraction = (double)answers / (double)questions; // If a random guess. + // Caution: = answers / questions would be zero (because they are integers)! + binomial quiz(questions, success_fraction); +/*` +and display the distribution parameters we used thus: +*/ + cout << "In a quiz with " << quiz.trials() + << " questions and with a probability of guessing right of " + << quiz.success_fraction() * 100 << " %" + << " or 1 in " << static_cast(1. / quiz.success_fraction()) << endl; +/*` +Show a few probabilities of just guessing: +*/ + cout << "Probability of getting none right is " << pdf(quiz, 0) << endl; // 0.010023 + cout << "Probability of getting exactly one right is " << pdf(quiz, 1) << endl; + cout << "Probability of getting exactly two right is " << pdf(quiz, 2) << endl; + int pass_score = 11; + cout << "Probability of getting exactly " << pass_score << " answers right by chance is " + << pdf(quiz, questions) << endl; +/*` +[pre +Probability of getting none right is 0.0100226 +Probability of getting exactly one right is 0.0534538 +Probability of getting exactly two right is 0.133635 +Probability of getting exactly 11 answers right by chance is 2.32831e-010 +] +These don't give any encouragement to guessers! + +We can tabulate the 'getting exactly right' ( == ) probabilities thus: +*/ + cout << "\n" "Guessed Probability" << right << endl; + for (int successes = 0; successes <= questions; successes++) + { + double probability = pdf(quiz, successes); + cout << setw(2) << successes << " " << probability << endl; + } + cout << endl; +/*` +[pre +Guessed Probability + 0 0.0100226 + 1 0.0534538 + 2 0.133635 + 3 0.207876 + 4 0.225199 + 5 0.180159 + 6 0.110097 + 7 0.0524273 + 8 0.0196602 + 9 0.00582526 +10 0.00135923 +11 0.000247132 +12 3.43239e-005 +13 3.5204e-006 +14 2.51457e-007 +15 1.11759e-008 +16 2.32831e-010 +] +Then we can add the probabilities of some 'exactly right' like this: +*/ + cout << "Probability of getting none or one right is " << pdf(quiz, 0) + pdf(quiz, 1) << endl; + +/*` +[pre +Probability of getting none or one right is 0.0634764 +] +But if more than a couple of scores are involved, it is more convenient (and may be more accurate) +to use the Cumulative Distribution Function (cdf) instead: +*/ + cout << "Probability of getting none or one right is " << cdf(quiz, 1) << endl; +/*` +[pre +Probability of getting none or one right is 0.0634764 +] +Since the cdf is inclusive, we can get the probability of getting up to 10 right ( <= ) +*/ + cout << "Probability of getting <= 10 right (to fail) is " << cdf(quiz, 10) << endl; +/*` +[pre +Probability of getting <= 10 right (to fail) is 0.999715 +] +To get the probability of getting 11 or more right (to pass), +it is tempting to use ``1 - cdf(quiz, 10)`` to get the probability of > 10 +*/ + cout << "Probability of getting > 10 right (to pass) is " << 1 - cdf(quiz, 10) << endl; +/*` +[pre +Probability of getting > 10 right (to pass) is 0.000285239 +] +But this should be resisted in favor of using the complement function. [link why_complements Why complements?] +*/ + cout << "Probability of getting > 10 right (to pass) is " << cdf(complement(quiz, 10)) << endl; +/*` +[pre +Probability of getting > 10 right (to pass) is 0.000285239 +] +And we can check that these two, <= 10 and > 10, add up to unity. +*/ +BOOST_ASSERT((cdf(quiz, 10) + cdf(complement(quiz, 10))) == 1.); +/*` +If we want a < rather than a <= test, because the CDF is inclusive, we must subtract one from the score. +*/ + cout << "Probability of getting less than " << pass_score + << " (< " << pass_score << ") answers right by guessing is " + << cdf(quiz, pass_score -1) << endl; +/*` +[pre +Probability of getting less than 11 (< 11) answers right by guessing is 0.999715 +] +and similarly to get a >= rather than a > test +we also need to subtract one from the score (and can again check the sum is unity). +This is because if the cdf is /inclusive/, +then its complement must be /exclusive/ otherwise there would be one possible +outcome counted twice! +*/ + cout << "Probability of getting at least " << pass_score + << "(>= " << pass_score << ") answers right by guessing is " + << cdf(complement(quiz, pass_score-1)) + << ", only 1 in " << 1/cdf(complement(quiz, pass_score-1)) << endl; + + BOOST_ASSERT((cdf(quiz, pass_score -1) + cdf(complement(quiz, pass_score-1))) == 1); + +/*` +[pre +Probability of getting at least 11 (>= 11) answers right by guessing is 0.000285239, only 1 in 3505.83 +] +Finally we can tabulate some probabilities: +*/ + cout << "\n" "At most (<=)""\n""Guessed OK Probability" << right << endl; + for (int score = 0; score <= questions; score++) + { + cout << setw(2) << score << " " << setprecision(10) + << cdf(quiz, score) << endl; + } + cout << endl; +/*` +[pre +At most (<=) +Guessed OK Probability + 0 0.01002259576 + 1 0.0634764398 + 2 0.1971110499 + 3 0.4049871101 + 4 0.6301861752 + 5 0.8103454274 + 6 0.9204427481 + 7 0.9728700437 + 8 0.9925302796 + 9 0.9983555346 +10 0.9997147608 +11 0.9999618928 +12 0.9999962167 +13 0.9999997371 +14 0.9999999886 +15 0.9999999998 +16 1 +] +*/ + cout << "\n" "At least (>)""\n""Guessed OK Probability" << right << endl; + for (int score = 0; score <= questions; score++) + { + cout << setw(2) << score << " " << setprecision(10) + << cdf(complement(quiz, score)) << endl; + } +/*` +[pre +At least (>) +Guessed OK Probability + 0 0.9899774042 + 1 0.9365235602 + 2 0.8028889501 + 3 0.5950128899 + 4 0.3698138248 + 5 0.1896545726 + 6 0.07955725188 + 7 0.02712995629 + 8 0.00746972044 + 9 0.001644465374 +10 0.0002852391917 +11 3.810715862e-005 +12 3.783265129e-006 +13 2.628657967e-007 +14 1.140870154e-008 +15 2.328306437e-010 +16 0 +] +We now consider the probabilities of *ranges* of correct guesses. + +First, calculate the probability of getting a range of guesses right, +by adding the exact probabilities of each from low ... high. +*/ + int low = 3; // Getting at least 3 right. + int high = 5; // Getting as most 5 right. + double sum = 0.; + for (int i = low; i <= high; i++) + { + sum += pdf(quiz, i); + } + cout.precision(4); + cout << "Probability of getting between " + << low << " and " << high << " answers right by guessing is " + << sum << endl; // 0.61323 +/*` +[pre +Probability of getting between 3 and 5 answers right by guessing is 0.6132 +] +Or, usually better, we can use the difference of cdfs instead: +*/ + cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is " + << cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 0.61323 +/*` +[pre +Probability of getting between 3 and 5 answers right by guessing is 0.6132 +] +And we can also try a few more combinations of high and low choices: +*/ + low = 1; high = 6; + cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is " + << cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 1 and 6 P= 0.91042 + low = 1; high = 8; + cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is " + << cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 1 <= x 8 P = 0.9825 + low = 4; high = 4; + cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is " + << cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 4 <= x 4 P = 0.22520 + +/*` +[pre +Probability of getting between 1 and 6 answers right by guessing is 0.9104 +Probability of getting between 1 and 8 answers right by guessing is 0.9825 +Probability of getting between 4 and 4 answers right by guessing is 0.2252 +] +[h4 Using Binomial distribution moments] +Using moments of the distribution, we can say more about the spread of results from guessing. +*/ + cout << "By guessing, on average, one can expect to get " << mean(quiz) << " correct answers." << endl; + cout << "Standard deviation is " << standard_deviation(quiz) << endl; + cout << "So about 2/3 will lie within 1 standard deviation and get between " + << ceil(mean(quiz) - standard_deviation(quiz)) << " and " + << floor(mean(quiz) + standard_deviation(quiz)) << " correct." << endl; + cout << "Mode (the most frequent) is " << mode(quiz) << endl; + cout << "Skewness is " << skewness(quiz) << endl; + +/*` +[pre +By guessing, on average, one can expect to get 4 correct answers. +Standard deviation is 1.732 +So about 2/3 will lie within 1 standard deviation and get between 3 and 5 correct. +Mode (the most frequent) is 4 +Skewness is 0.2887 +] +[h4 Quantiles] +The quantiles (percentiles or percentage points) for a few probability levels: +*/ + cout << "Quartiles " << quantile(quiz, 0.25) << " to " + << quantile(complement(quiz, 0.25)) << endl; // Quartiles + cout << "1 standard deviation " << quantile(quiz, 0.33) << " to " + << quantile(quiz, 0.67) << endl; // 1 sd + cout << "Deciles " << quantile(quiz, 0.1) << " to " + << quantile(complement(quiz, 0.1))<< endl; // Deciles + cout << "5 to 95% " << quantile(quiz, 0.05) << " to " + << quantile(complement(quiz, 0.05))<< endl; // 5 to 95% + cout << "2.5 to 97.5% " << quantile(quiz, 0.025) << " to " + << quantile(complement(quiz, 0.025)) << endl; // 2.5 to 97.5% + cout << "2 to 98% " << quantile(quiz, 0.02) << " to " + << quantile(complement(quiz, 0.02)) << endl; // 2 to 98% + + cout << "If guessing then percentiles 1 to 99% will get " << quantile(quiz, 0.01) + << " to " << quantile(complement(quiz, 0.01)) << " right." << endl; +/*` +Notice that these output integral values because the default policy is `integer_round_outwards`. +[pre +Quartiles 2 to 5 +1 standard deviation 2 to 5 +Deciles 1 to 6 +5 to 95% 0 to 7 +2.5 to 97.5% 0 to 8 +2 to 98% 0 to 8 +] +*/ + +//] [/binomial_quiz_example2] + +//[discrete_quantile_real +/*` +Quantiles values are controlled by the +[link math_toolkit.policy.pol_ref.discrete_quant_ref discrete quantile policy] +chosen. +The default is `integer_round_outwards`, +so the lower quantile is rounded down, and the upper quantile is rounded up. + +But we might believe that the real values tell us a little more - see +[link math_toolkit.policy.pol_tutorial.understand_dis_quant Understanding Discrete Quantile Policy]. + +We could control the policy for *all* distributions by + + #define BOOST_MATH_DISCRETE_QUANTILE_POLICY real + + at the head of the program would make this policy apply +to this *one, and only*, translation unit. + +Or we can now create a (typedef for) policy that has discrete quantiles real +(here avoiding any 'using namespaces ...' statements): +*/ + using boost::math::policies::policy; + using boost::math::policies::discrete_quantile; + using boost::math::policies::real; + using boost::math::policies::integer_round_outwards; // Default. + typedef boost::math::policies::policy > real_quantile_policy; +/*` +Add a custom binomial distribution called ``real_quantile_binomial`` that uses ``real_quantile_policy`` +*/ + using boost::math::binomial_distribution; + typedef binomial_distribution real_quantile_binomial; +/*` +Construct an object of this custom distribution: +*/ + real_quantile_binomial quiz_real(questions, success_fraction); +/*` +And use this to show some quantiles - that now have real rather than integer values. +*/ + cout << "Quartiles " << quantile(quiz, 0.25) << " to " + << quantile(complement(quiz_real, 0.25)) << endl; // Quartiles 2 to 4.6212 + cout << "1 standard deviation " << quantile(quiz_real, 0.33) << " to " + << quantile(quiz_real, 0.67) << endl; // 1 sd 2.6654 4.194 + cout << "Deciles " << quantile(quiz_real, 0.1) << " to " + << quantile(complement(quiz_real, 0.1))<< endl; // Deciles 1.3487 5.7583 + cout << "5 to 95% " << quantile(quiz_real, 0.05) << " to " + << quantile(complement(quiz_real, 0.05))<< endl; // 5 to 95% 0.83739 6.4559 + cout << "2.5 to 97.5% " << quantile(quiz_real, 0.025) << " to " + << quantile(complement(quiz_real, 0.025)) << endl; // 2.5 to 97.5% 0.42806 7.0688 + cout << "2 to 98% " << quantile(quiz_real, 0.02) << " to " + << quantile(complement(quiz_real, 0.02)) << endl; // 2 to 98% 0.31311 7.7880 + + cout << "If guessing, then percentiles 1 to 99% will get " << quantile(quiz_real, 0.01) + << " to " << quantile(complement(quiz_real, 0.01)) << " right." << endl; +/*` +[pre +Real Quantiles +Quartiles 2 to 4.621 +1 standard deviation 2.665 to 4.194 +Deciles 1.349 to 5.758 +5 to 95% 0.8374 to 6.456 +2.5 to 97.5% 0.4281 to 7.069 +2 to 98% 0.3131 to 7.252 +If guessing then percentiles 1 to 99% will get 0 to 7.788 right. +] +*/ + +//] [/discrete_quantile_real] + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because + // default policies are to throw exceptions on arguments that cause + // errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + return 0; +} // int main() + + + +/* + +Output is: + +Binomial distribution example - guessing in a quiz. +In a quiz with 16 questions and with a probability of guessing right of 25 % or 1 in 4 +Probability of getting none right is 0.0100226 +Probability of getting exactly one right is 0.0534538 +Probability of getting exactly two right is 0.133635 +Probability of getting exactly 11 answers right by chance is 2.32831e-010 +Guessed Probability + 0 0.0100226 + 1 0.0534538 + 2 0.133635 + 3 0.207876 + 4 0.225199 + 5 0.180159 + 6 0.110097 + 7 0.0524273 + 8 0.0196602 + 9 0.00582526 +10 0.00135923 +11 0.000247132 +12 3.43239e-005 +13 3.5204e-006 +14 2.51457e-007 +15 1.11759e-008 +16 2.32831e-010 +Probability of getting none or one right is 0.0634764 +Probability of getting none or one right is 0.0634764 +Probability of getting <= 10 right (to fail) is 0.999715 +Probability of getting > 10 right (to pass) is 0.000285239 +Probability of getting > 10 right (to pass) is 0.000285239 +Probability of getting less than 11 (< 11) answers right by guessing is 0.999715 +Probability of getting at least 11(>= 11) answers right by guessing is 0.000285239, only 1 in 3505.83 +At most (<=) +Guessed OK Probability + 0 0.01002259576 + 1 0.0634764398 + 2 0.1971110499 + 3 0.4049871101 + 4 0.6301861752 + 5 0.8103454274 + 6 0.9204427481 + 7 0.9728700437 + 8 0.9925302796 + 9 0.9983555346 +10 0.9997147608 +11 0.9999618928 +12 0.9999962167 +13 0.9999997371 +14 0.9999999886 +15 0.9999999998 +16 1 +At least (>=) +Guessed OK Probability + 0 0.9899774042 + 1 0.9365235602 + 2 0.8028889501 + 3 0.5950128899 + 4 0.3698138248 + 5 0.1896545726 + 6 0.07955725188 + 7 0.02712995629 + 8 0.00746972044 + 9 0.001644465374 +10 0.0002852391917 +11 3.810715862e-005 +12 3.783265129e-006 +13 2.628657967e-007 +14 1.140870154e-008 +15 2.328306437e-010 +16 0 +Probability of getting between 3 and 5 answers right by guessing is 0.6132 +Probability of getting between 3 and 5 answers right by guessing is 0.6132 +Probability of getting between 1 and 6 answers right by guessing is 0.9104 +Probability of getting between 1 and 8 answers right by guessing is 0.9825 +Probability of getting between 4 and 4 answers right by guessing is 0.2252 +By guessing, on average, one can expect to get 4 correct answers. +Standard deviation is 1.732 +So about 2/3 will lie within 1 standard deviation and get between 3 and 5 correct. +Mode (the most frequent) is 4 +Skewness is 0.2887 +Quartiles 2 to 5 +1 standard deviation 2 to 5 +Deciles 1 to 6 +5 to 95% 0 to 7 +2.5 to 97.5% 0 to 8 +2 to 98% 0 to 8 +If guessing then percentiles 1 to 99% will get 0 to 8 right. +Quartiles 2 to 4.621 +1 standard deviation 2.665 to 4.194 +Deciles 1.349 to 5.758 +5 to 95% 0.8374 to 6.456 +2.5 to 97.5% 0.4281 to 7.069 +2 to 98% 0.3131 to 7.252 +If guessing, then percentiles 1 to 99% will get 0 to 7.788 right. + +*/ + diff --git a/example/binomial_sample_sizes.cpp b/example/binomial_sample_sizes.cpp new file mode 100644 index 000000000..8d3a16069 --- /dev/null +++ b/example/binomial_sample_sizes.cpp @@ -0,0 +1,76 @@ +// (C) Copyright John Maddock 2006 +// 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) + +#ifdef _MSC_VER +# pragma warning(disable: 4512) // assignment operator could not be generated. +# pragma warning(disable: 4510) // default constructor could not be generated. +# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required. +#endif + +#include +#include +#include + +void find_max_sample_size(double p, unsigned successes) +{ + // + // p = success ratio. + // successes = Total number of observed successes. + // + // Calculate how many trials we can have to ensure the + // maximum number of successes does not exceed "successes". + // A typical use would be failure analysis, where you want + // zero or fewer "successes" with some probability. + // + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "________________________\n" + "Maximum Number of Trials\n" + "________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Success ratio" << "= " << p << "\n"; + cout << setw(40) << left << "Maximum Number of \"successes\" permitted" << "= " << successes << "\n"; + // + // Define a table of confidence intervals: + // + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + // + // Print table header: + // + cout << "\n\n" + "____________________________\n" + "Confidence Max Number\n" + " Value (%) Of Trials \n" + "____________________________\n"; + // + // Now print out the data for the table rows. + // + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate trials: + double t = binomial_distribution<>::find_maximum_number_of_trials(successes, p, alpha[i]); + t = floor(t); + // Print Trials: + cout << fixed << setprecision(0) << setw(15) << right << t << endl; + } + cout << endl; +} + +int main() +{ + find_max_sample_size(1.0/1000, 0); + find_max_sample_size(1.0/10000, 0); + find_max_sample_size(1.0/100000, 0); + find_max_sample_size(1.0/1000000, 0); + + return 0; +} + diff --git a/example/c_error_policy_example.cpp b/example/c_error_policy_example.cpp new file mode 100644 index 000000000..f05c9ddef --- /dev/null +++ b/example/c_error_policy_example.cpp @@ -0,0 +1,74 @@ +// C_error_policy_example.cpp + +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2007. + +// 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) + +// Suppose we want a call to tgamma to behave in a C-compatible way +// and set global ::errno rather than throw an exception. + +#include +using boost::math::tgamma; + +using boost::math::policies::policy; +// Possible errors +using boost::math::policies::overflow_error; +using boost::math::policies::underflow_error; +using boost::math::policies::domain_error; +using boost::math::policies::pole_error; +using boost::math::policies::denorm_error; +using boost::math::policies::evaluation_error; + +using boost::math::policies::errno_on_error; +//using boost::math::policies::ignore_error; + +//using namespace boost::math::policies; +//using namespace boost::math; + +// Define a policy: +typedef policy< + domain_error, // 'bad' arguments. + pole_error, // argument is pole value. + overflow_error, // argument value causes overflow. + evaluation_error // evaluation does not converge and may be inaccurate, or worse. + > C_error_policy; + +// std +#include + using std::cout; + using std::endl; + +int main() +{ + // We can achieve this at the function call site + // with the previously defined policy C_error_policy. + double t = tgamma(4., C_error_policy()); + cout << "tgamma(4., C_error_policy() = " << t << endl; // 6 + + // Alternatively we could use the function make_policy, + // provided for convenience, + // and define everything at the call site: + t = tgamma(4., make_policy( + domain_error(), + pole_error(), + overflow_error(), + evaluation_error() + )); + cout << "tgamma(4., make_policy( ...) = " << t << endl; // 6 + + return 0; +} // int main() + +/* + +Output + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\c_error_policy_example.exe" +tgamma(4., C_error_policy() = 6 +tgamma(4., make_policy( ...) = 6 + +*/ diff --git a/example/chi_square_std_dev_test.cpp b/example/chi_square_std_dev_test.cpp new file mode 100644 index 000000000..005c861a0 --- /dev/null +++ b/example/chi_square_std_dev_test.cpp @@ -0,0 +1,552 @@ +// Copyright John Maddock 2006, 2007 +// Copyright Paul A. Bristow 2007 + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +using std::cout; using std::endl; +using std::left; using std::fixed; using std::right; using std::scientific; +#include +using std::setw; +using std::setprecision; +#include + + +void confidence_limits_on_std_deviation( + double Sd, // Sample Standard Deviation + unsigned N) // Sample size +{ + // Calculate confidence intervals for the standard deviation. + // For example if we set the confidence limit to + // 0.95, we know that if we repeat the sampling + // 100 times, then we expect that the true standard deviation + // will be between out limits on 95 occations. + // Note: this is not the same as saying a 95% + // confidence interval means that there is a 95% + // probability that the interval contains the true standard deviation. + // The interval computed from a given sample either + // contains the true standard deviation or it does not. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda358.htm + + // using namespace boost::math; + using boost::math::chi_squared; + using boost::math::quantile; + using boost::math::complement; + + // Print out general info: + cout << + "________________________________________________\n" + "2-Sided Confidence Limits For Standard Deviation\n" + "________________________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of Observations" << "= " << N << "\n"; + cout << setw(40) << left << "Standard Deviation" << "= " << Sd << "\n"; + // + // Define a table of significance/risk levels: + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + // + // Start by declaring the distribution we'll need: + chi_squared dist(N - 1); + // + // Print table header: + // + cout << "\n\n" + "_____________________________________________\n" + "Confidence Lower Upper\n" + " Value (%) Limit Limit\n" + "_____________________________________________\n"; + // + // Now print out the data for the table rows. + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // Calculate limits: + double lower_limit = sqrt((N - 1) * Sd * Sd / quantile(complement(dist, alpha[i] / 2))); + double upper_limit = sqrt((N - 1) * Sd * Sd / quantile(dist, alpha[i] / 2)); + // Print Limits: + cout << fixed << setprecision(5) << setw(15) << right << lower_limit; + cout << fixed << setprecision(5) << setw(15) << right << upper_limit << endl; + } + cout << endl; +} // void confidence_limits_on_std_deviation + +void confidence_limits_on_std_deviation_alpha( + double Sd, // Sample Standard Deviation + double alpha // confidence + ) +{ // Calculate confidence intervals for the standard deviation. + // for the alpha parameter, for a range number of observations, + // from a mere 2 up to a million. + // O. L. Davies, Statistical Methods in Research and Production, ISBN 0 05 002437 X, + // 4.33 Page 68, Table H, pp 452 459. + + // using namespace std; + // using namespace boost::math; + using boost::math::chi_squared; + using boost::math::quantile; + using boost::math::complement; + + // Define a table of numbers of observations: + unsigned int obs[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 30, 40 , 50, 60, 100, 120, 1000, 10000, 50000, 100000, 1000000}; + + cout << // Print out heading: + "________________________________________________\n" + "2-Sided Confidence Limits For Standard Deviation\n" + "________________________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Confidence level (two-sided) " << "= " << alpha << "\n"; + cout << setw(40) << left << "Standard Deviation" << "= " << Sd << "\n"; + + cout << "\n\n" // Print table header: + "_____________________________________________\n" + "Observations Lower Upper\n" + " Limit Limit\n" + "_____________________________________________\n"; + for(unsigned i = 0; i < sizeof(obs)/sizeof(obs[0]); ++i) + { + unsigned int N = obs[i]; // Observations + // Start by declaring the distribution with the appropriate : + chi_squared dist(N - 1); + + // Now print out the data for the table row. + cout << fixed << setprecision(3) << setw(10) << right << N; + // Calculate limits: (alpha /2 because it is a two-sided (upper and lower limit) test. + double lower_limit = sqrt((N - 1) * Sd * Sd / quantile(complement(dist, alpha / 2))); + double upper_limit = sqrt((N - 1) * Sd * Sd / quantile(dist, alpha / 2)); + // Print Limits: + cout << fixed << setprecision(4) << setw(15) << right << lower_limit; + cout << fixed << setprecision(4) << setw(15) << right << upper_limit << endl; + } + cout << endl; +}// void confidence_limits_on_std_deviation_alpha + +void chi_squared_test( + double Sd, // Sample std deviation + double D, // True std deviation + unsigned N, // Sample size + double alpha) // Significance level +{ + // + // A Chi Squared test applied to a single set of data. + // We are testing the null hypothesis that the true + // standard deviation of the sample is D, and that any variation is down + // to chance. We can also test the alternative hypothesis + // that any difference is not down to chance. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda358.htm + // + // using namespace boost::math; + using boost::math::chi_squared; + using boost::math::quantile; + using boost::math::complement; + using boost::math::cdf; + + // Print header: + cout << + "______________________________________________\n" + "Chi Squared test for sample standard deviation\n" + "______________________________________________\n\n"; + cout << setprecision(5); + cout << setw(55) << left << "Number of Observations" << "= " << N << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << Sd << "\n"; + cout << setw(55) << left << "Expected True Standard Deviation" << "= " << D << "\n\n"; + // + // Now we can calculate and output some stats: + // + // test-statistic: + double t_stat = (N - 1) * (Sd / D) * (Sd / D); + cout << setw(55) << left << "Test Statistic" << "= " << t_stat << "\n"; + // + // Finally define our distribution, and get the probability: + // + chi_squared dist(N - 1); + double p = cdf(dist, t_stat); + cout << setw(55) << left << "CDF of test statistic: " << "= " + << setprecision(3) << scientific << p << "\n"; + double ucv = quantile(complement(dist, alpha)); + double ucv2 = quantile(complement(dist, alpha / 2)); + double lcv = quantile(dist, alpha); + double lcv2 = quantile(dist, alpha / 2); + cout << setw(55) << left << "Upper Critical Value at alpha: " << "= " + << setprecision(3) << scientific << ucv << "\n"; + cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << ucv2 << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha: " << "= " + << setprecision(3) << scientific << lcv << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << lcv2 << "\n\n"; + // + // Finally print out results of alternative hypothesis: + // + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + cout << "Standard Deviation != " << setprecision(3) << fixed << D << " "; + if((ucv2 < t_stat) || (lcv2 > t_stat)) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Standard Deviation < " << setprecision(3) << fixed << D << " "; + if(lcv > t_stat) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Standard Deviation > " << setprecision(3) << fixed << D << " "; + if(ucv < t_stat) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; +} // void chi_squared_test + +void chi_squared_sample_sized( + double diff, // difference from variance to detect + double variance) // true variance +{ + using namespace std; + // using boost::math; + using boost::math::chi_squared; + using boost::math::quantile; + using boost::math::complement; + using boost::math::cdf; + + try + { + cout << // Print out general info: + "_____________________________________________________________\n" + "Estimated sample sizes required for various confidence levels\n" + "_____________________________________________________________\n\n"; + cout << setprecision(5); + cout << setw(40) << left << "True Variance" << "= " << variance << "\n"; + cout << setw(40) << left << "Difference to detect" << "= " << diff << "\n"; + // + // Define a table of significance levels: + // + double alpha[] = { 0.5, 0.33333333333333333333333, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + // + // Print table header: + // + cout << "\n\n" + "_______________________________________________________________\n" + "Confidence Estimated Estimated\n" + " Value (%) Sample Size Sample Size\n" + " (lower one- (upper one-\n" + " sided test) sided test)\n" + "_______________________________________________________________\n"; + // + // Now print out the data for the table rows. + // + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate df for a lower single-sided test: + double df = chi_squared::find_degrees_of_freedom( + -diff, alpha[i], alpha[i], variance); + // convert to sample size: + double size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size; + // calculate df for an upper single-sided test: + df = chi_squared::find_degrees_of_freedom( + diff, alpha[i], alpha[i], variance); + // convert to sample size: + size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size << endl; + } + cout << endl; + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because default policies + // are to throw exceptions on arguments that cause errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } +} // chi_squared_sample_sized + +int main() +{ + // Run tests for Gear data + // see http://www.itl.nist.gov/div898/handbook/eda/section3/eda3581.htm + // Tests measurements of gear diameter. + // + confidence_limits_on_std_deviation(0.6278908E-02, 100); + chi_squared_test(0.6278908E-02, 0.1, 100, 0.05); + chi_squared_sample_sized(0.1 - 0.6278908E-02, 0.1); + // + // Run tests for silicon wafer fabrication data. + // see http://www.itl.nist.gov/div898/handbook/prc/section2/prc23.htm + // A supplier of 100 ohm.cm silicon wafers claims that his fabrication + // process can produce wafers with sufficient consistency so that the + // standard deviation of resistivity for the lot does not exceed + // 10 ohm.cm. A sample of N = 10 wafers taken from the lot has a + // standard deviation of 13.97 ohm.cm + // + confidence_limits_on_std_deviation(13.97, 10); + chi_squared_test(13.97, 10.0, 10, 0.05); + chi_squared_sample_sized(13.97 * 13.97 - 100, 100); + chi_squared_sample_sized(55, 100); + chi_squared_sample_sized(1, 100); + + // List confidence interval multipliers for standard deviation + // for a range of numbers of observations from 2 to a million, + // and for a few alpha values, 0.1, 0.05, 0.01 for condfidences 90, 95, 99 % + confidence_limits_on_std_deviation_alpha(1., 0.1); + confidence_limits_on_std_deviation_alpha(1., 0.05); + confidence_limits_on_std_deviation_alpha(1., 0.01); + + return 0; +} + +/* + +________________________________________________ +2-Sided Confidence Limits For Standard Deviation +________________________________________________ +Number of Observations = 100 +Standard Deviation = 0.006278908 +_____________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +_____________________________________________ + 50.000 0.00601 0.00662 + 75.000 0.00582 0.00685 + 90.000 0.00563 0.00712 + 95.000 0.00551 0.00729 + 99.000 0.00530 0.00766 + 99.900 0.00507 0.00812 + 99.990 0.00489 0.00855 + 99.999 0.00474 0.00895 +______________________________________________ +Chi Squared test for sample standard deviation +______________________________________________ +Number of Observations = 100 +Sample Standard Deviation = 0.00628 +Expected True Standard Deviation = 0.10000 +Test Statistic = 0.39030 +CDF of test statistic: = 1.438e-099 +Upper Critical Value at alpha: = 1.232e+002 +Upper Critical Value at alpha/2: = 1.284e+002 +Lower Critical Value at alpha: = 7.705e+001 +Lower Critical Value at alpha/2: = 7.336e+001 +Results for Alternative Hypothesis and alpha = 0.0500 +Alternative Hypothesis Conclusion +Standard Deviation != 0.100 NOT REJECTED +Standard Deviation < 0.100 NOT REJECTED +Standard Deviation > 0.100 REJECTED +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ +True Variance = 0.10000 +Difference to detect = 0.09372 +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (lower one- (upper one- + sided test) sided test) +_______________________________________________________________ + 50.000 2 2 + 66.667 2 5 + 75.000 2 10 + 90.000 4 32 + 95.000 5 52 + 99.000 8 102 + 99.900 13 178 + 99.990 18 257 + 99.999 23 337 +________________________________________________ +2-Sided Confidence Limits For Standard Deviation +________________________________________________ +Number of Observations = 10 +Standard Deviation = 13.9700000 +_____________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +_____________________________________________ + 50.000 12.41880 17.25579 + 75.000 11.23084 19.74131 + 90.000 10.18898 22.98341 + 95.000 9.60906 25.50377 + 99.000 8.62898 31.81825 + 99.900 7.69466 42.51593 + 99.990 7.04085 55.93352 + 99.999 6.54517 73.00132 +______________________________________________ +Chi Squared test for sample standard deviation +______________________________________________ +Number of Observations = 10 +Sample Standard Deviation = 13.97000 +Expected True Standard Deviation = 10.00000 +Test Statistic = 17.56448 +CDF of test statistic: = 9.594e-001 +Upper Critical Value at alpha: = 1.692e+001 +Upper Critical Value at alpha/2: = 1.902e+001 +Lower Critical Value at alpha: = 3.325e+000 +Lower Critical Value at alpha/2: = 2.700e+000 +Results for Alternative Hypothesis and alpha = 0.0500 +Alternative Hypothesis Conclusion +Standard Deviation != 10.000 REJECTED +Standard Deviation < 10.000 REJECTED +Standard Deviation > 10.000 NOT REJECTED +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ +True Variance = 100.00000 +Difference to detect = 95.16090 +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (lower one- (upper one- + sided test) sided test) +_______________________________________________________________ + 50.000 2 2 + 66.667 2 5 + 75.000 2 10 + 90.000 4 32 + 95.000 5 51 + 99.000 7 99 + 99.900 11 174 + 99.990 15 251 + 99.999 20 330 +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ +True Variance = 100.00000 +Difference to detect = 55.00000 +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (lower one- (upper one- + sided test) sided test) +_______________________________________________________________ + 50.000 2 2 + 66.667 4 10 + 75.000 8 21 + 90.000 23 71 + 95.000 36 115 + 99.000 71 228 + 99.900 123 401 + 99.990 177 580 + 99.999 232 762 +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ +True Variance = 100.00000 +Difference to detect = 1.00000 +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (lower one- (upper one- + sided test) sided test) +_______________________________________________________________ + 50.000 2 2 + 66.667 14696 14993 + 75.000 36033 36761 + 90.000 130079 132707 + 95.000 214283 218612 + 99.000 428628 437287 + 99.900 756333 771612 + 99.990 1095435 1117564 + 99.999 1440608 1469711 +________________________________________________ +2-Sided Confidence Limits For Standard Deviation +________________________________________________ +Confidence level (two-sided) = 0.1000000 +Standard Deviation = 1.0000000 +_____________________________________________ +Observations Lower Upper + Limit Limit +_____________________________________________ + 2 0.5102 15.9472 + 3 0.5778 4.4154 + 4 0.6196 2.9200 + 5 0.6493 2.3724 + 6 0.6720 2.0893 + 7 0.6903 1.9154 + 8 0.7054 1.7972 + 9 0.7183 1.7110 + 10 0.7293 1.6452 + 15 0.7688 1.4597 + 20 0.7939 1.3704 + 30 0.8255 1.2797 + 40 0.8454 1.2320 + 50 0.8594 1.2017 + 60 0.8701 1.1805 + 100 0.8963 1.1336 + 120 0.9045 1.1203 + 1000 0.9646 1.0383 + 10000 0.9885 1.0118 + 50000 0.9948 1.0052 + 100000 0.9963 1.0037 + 1000000 0.9988 1.0012 +________________________________________________ +2-Sided Confidence Limits For Standard Deviation +________________________________________________ +Confidence level (two-sided) = 0.0500000 +Standard Deviation = 1.0000000 +_____________________________________________ +Observations Lower Upper + Limit Limit +_____________________________________________ + 2 0.4461 31.9102 + 3 0.5207 6.2847 + 4 0.5665 3.7285 + 5 0.5991 2.8736 + 6 0.6242 2.4526 + 7 0.6444 2.2021 + 8 0.6612 2.0353 + 9 0.6755 1.9158 + 10 0.6878 1.8256 + 15 0.7321 1.5771 + 20 0.7605 1.4606 + 30 0.7964 1.3443 + 40 0.8192 1.2840 + 50 0.8353 1.2461 + 60 0.8476 1.2197 + 100 0.8780 1.1617 + 120 0.8875 1.1454 + 1000 0.9580 1.0459 + 10000 0.9863 1.0141 + 50000 0.9938 1.0062 + 100000 0.9956 1.0044 + 1000000 0.9986 1.0014 +________________________________________________ +2-Sided Confidence Limits For Standard Deviation +________________________________________________ +Confidence level (two-sided) = 0.0100000 +Standard Deviation = 1.0000000 +_____________________________________________ +Observations Lower Upper + Limit Limit +_____________________________________________ + 2 0.3562 159.5759 + 3 0.4344 14.1244 + 4 0.4834 6.4675 + 5 0.5188 4.3960 + 6 0.5464 3.4848 + 7 0.5688 2.9798 + 8 0.5875 2.6601 + 9 0.6036 2.4394 + 10 0.6177 2.2776 + 15 0.6686 1.8536 + 20 0.7018 1.6662 + 30 0.7444 1.4867 + 40 0.7718 1.3966 + 50 0.7914 1.3410 + 60 0.8065 1.3026 + 100 0.8440 1.2200 + 120 0.8558 1.1973 + 1000 0.9453 1.0609 + 10000 0.9821 1.0185 + 50000 0.9919 1.0082 + 100000 0.9943 1.0058 + 1000000 0.9982 1.0018 +*/ + diff --git a/example/distribution_construction.cpp b/example/distribution_construction.cpp new file mode 100644 index 000000000..fb7b54aac --- /dev/null +++ b/example/distribution_construction.cpp @@ -0,0 +1,201 @@ +// distribution_construction.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Caution: this file contains Quickbook markup as well as code +// and comments, don't change any of the special comment markups! + +//[distribution_construction1 + +/*` + +The structure of distributions is rather different from some other statistical libraries, +for example in less object-oriented language like FORTRAN and C, +that provide a few arguments to each free function. +This library provides each distribution as a template C++ class. +A distribution is constructed with a few arguments, and then +member and non-member functions are used to find values of the +distribution, often a function of a random variate. + +First we need some includes to access the negative binomial distribution +(and the binomial, beta and gamma too). + +*/ + +#include // for negative_binomial_distribution + using boost::math::negative_binomial_distribution; // default type is double. + using boost::math::negative_binomial; // typedef provides default type is double. +#include // for binomial_distribution. +#include // for beta_distribution. +#include // for gamma_distribution. +#include // for normal_distribution. +/*` +Several examples of constructing distributions follow: +*/ +//] [/distribution_construction1 end of Quickbook in C++ markup] + + + + +int main() +{ +//[distribution_construction2 +/*` +First, a negative binomial distribution with 8 successes +and a success fraction 0.25, 25% or 1 in 4, is constructed like this: +*/ + boost::math::negative_binomial_distribution mydist0(8., 0.25); + /*` + But this is inconveniently long, so by writing + */ + using namespace boost::math; + /*` + or + */ + using boost::math::negative_binomial_distribution; + /*` + we can reduce typing. + + Since the vast majority of applications use will be using double precision, + the template argument to the distribution (RealType) defaults + to type double, so we can also write: + */ + + negative_binomial_distribution<> mydist9(8., 0.25); // Uses default RealType = double. + + /*` + But the name "negative_binomial_distribution" is still inconveniently long, + so for most distributions, a convenience typedef is provided, for example: + + typedef negative_binomial_distribution negative_binomial; // Reserved name of type double. + + [caution + This convenience typedef is /not/ provided if a clash would occur + with the name of a function: currently only "beta" and "gamma" + fall into this category. + ] + + So, after a using statement, + */ + + using boost::math::negative_binomial; + + /*` + we have a convenient typedef to `negative_binomial_distribution`: + */ + negative_binomial mydist(8., 0.25); + + /*` + Some more examples using the convenience typedef: + */ + negative_binomial mydist10(5., 0.4); // Both arguments double. + /*` + And automatic conversion takes place, so you can use integers and floats: + */ + negative_binomial mydist11(5, 0.4); // Using provided typedef double, int and double arguments. + /*` + This is probably the most common usage. + */ + negative_binomial mydist12(5., 0.4F); // Double and float arguments. + negative_binomial mydist13(5, 1); // Both arguments integer. + + /*` + Similarly for most other distributions like the binomial. + */ + binomial mybinomial(1, 0.5); // is more concise than + binomial_distribution<> mybinomd1(1, 0.5); + + /*` + For cases when the typdef distribution name would clash with a math special function + (currently only beta and gamma) + the typedef is deliberately not provided, and the longer version of the name + must be used. For example do not use: + + using boost::math::beta; + beta mybetad0(1, 0.5); // Error beta is a math FUNCTION! + + Which produces the error messages: + + [pre + error C2146: syntax error : missing ';' before identifier 'mybetad0' + warning C4551: function call missing argument list + error C3861: 'mybetad0': identifier not found + ] + + Instead you should use: + */ + using boost::math::beta_distribution; + beta_distribution<> mybetad1(1, 0.5); + /*` + or for the gamma distribution: + */ + gamma_distribution<> mygammad1(1, 0.5); + + /*` + We can, of course, still provide the type explicitly thus: + */ + + // Explicit double precision: + negative_binomial_distribution mydist1(8., 0.25); + + // Explicit float precision, double arguments are truncated to float: + negative_binomial_distribution mydist2(8., 0.25); + + // Explicit float precision, integer & double arguments converted to float. + negative_binomial_distribution mydist3(8, 0.25); + + // Explicit float precision, float arguments, so no conversion: + negative_binomial_distribution mydist4(8.F, 0.25F); + + // Explicit float precision, integer arguments promoted to float. + negative_binomial_distribution mydist5(8, 1); + + // Explicit double precision: + negative_binomial_distribution mydist6(8., 0.25); + + // Explicit long double precision: + negative_binomial_distribution mydist7(8., 0.25); + + /*` + And if you have your own RealType called MyFPType, + for example NTL RR (an arbitrary precision type), then we can write: + + negative_binomial_distribution mydist6(8, 1); // Integer arguments -> MyFPType. + + [heading Default arguments to distribution constructors.] + + Note that default constructor arguments are only provided for some distributions. + So if you wrongly assume a default argument you will get an error message, for example: + + negative_binomial_distribution<> mydist8; + + [pre error C2512 no appropriate default constructor available.] + + No default constructors are provided for the negative binomial, + because it is difficult to chose any sensible default values for this distribution. + For other distributions, like the normal distribution, + it is obviously very useful to provide 'standard' + defaults for the mean and standard deviation thus: + + normal_distribution(RealType mean = 0, RealType sd = 1); + + So in this case we can write: + */ + using boost::math::normal; + + normal norm1; // Standard normal distribution. + normal norm2(2); // Mean = 2, std deviation = 1. + normal norm3(2, 3); // Mean = 2, std deviation = 3. + + return 0; +} // int main() + +/*`There is no useful output from this program, of course. */ + +//] [/end of distribution_construction2] + diff --git a/example/error_handling_example.cpp b/example/error_handling_example.cpp new file mode 100644 index 000000000..5b06a407e --- /dev/null +++ b/example/error_handling_example.cpp @@ -0,0 +1,143 @@ +// example_error_handling.cpp + +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2007. + +// 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) + +// Note that this file contains quickbook markup as well as code +// and comments, don't change any of the special comment markups! + +//[error_handling_example +/*` +The following example demonstrates the effect of +setting the macro BOOST_MATH_DOMAIN_ERROR_POLICY +when an invalid argument is encountered. For the +purposes of this example, we'll pass a negative +degrees of freedom parameter to the student's t +distribution. + +Since we know that this is a single file program we could +just add: + + #define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error + +to the top of the source file to change the default policy +to one that simply returns a NaN when a domain error occurs. +Alternatively we could use: + + #define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error + +To ensure the `::errno` is set when a domain error occurs +as well as returning a NaN. + +This is safe provided the program consists of a single +translation unit /and/ we place the define /before/ any +#includes. Note that should we add the define after the includes +then it will have no effect! A warning such as: + +[pre warning C4005: 'BOOST_MATH_OVERFLOW_ERROR_POLICY' : macro redefinition] + +is a certain sign that it will /not/ have the desired effect. + +We'll begin our sample program with the needed includes: +*/ + +// Boost +#include + using boost::math::students_t; // Probability of students_t(df, t). + +// std +#include + using std::cout; + using std::endl; + +#include + using std::exception; + +/*` + +Next we'll define the program's main() to call the student's t +distribution with an invalid degrees of freedom parameter, the program +is set up to handle either an exception or a NaN: + +*/ + +int main() +{ + cout << "Example error handling using Student's t function. " << endl; + cout << "BOOST_MATH_DOMAIN_ERROR_POLICY is set to: " + << BOOST_STRINGIZE(BOOST_MATH_DOMAIN_ERROR_POLICY) << endl; + + double degrees_of_freedom = -1; // A bad argument! + double t = 10; + + try + { + errno = 0; + students_t dist(degrees_of_freedom); // exception is thrown here if enabled + double p = cdf(dist, t); + // test for error reported by other means: + if((boost::math::isnan)(p)) + { + cout << "cdf returned a NaN!" << endl; + cout << "errno is set to: " << errno << endl; + } + else + cout << "Probability of Student's t is " << p << endl; + } + catch(const std::exception& e) + { + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + + return 0; +} // int main() + +/*` + +Here's what the program output looks like with a default build +(one that does throw exceptions): + +[pre +Example error handling using Student's t function. +BOOST_MATH_DOMAIN_ERROR_POLICY is set to: throw_on_error + +Message from thrown exception was: + Error in function boost::math::students_t_distribution::students_t_distribution: + Degrees of freedom argument is -1, but must be > 0 ! +] + +Alternatively let's build with: + + #define BOOST_MATH_DOMAIN_ERROR_POLICY ignore_error + +Now the program output is: + +[pre +Example error handling using Student's t function. +BOOST_MATH_DOMAIN_ERROR_POLICY is set to: ignore_error +cdf returned a NaN! +errno is set to: 0 +] + +And finally let's build with: + + #define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error + +Which gives the output: + +[pre +Example error handling using Student's t function. +BOOST_MATH_DOMAIN_ERROR_POLICY is set to: errno_on_error +cdf returned a NaN! +errno is set to: 33 +] + +*/ + +//] [error_handling_eg end quickbook markup] diff --git a/example/error_policies_example.cpp b/example/error_policies_example.cpp new file mode 100644 index 000000000..c726b5417 --- /dev/null +++ b/example/error_policies_example.cpp @@ -0,0 +1,97 @@ +// error_policies_example.cpp + +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + using boost::math::normal_distribution; + +#include + using boost::math::students_t; // Probability of students_t(df, t). + using boost::math::students_t_distribution; + +// using namespace boost::math; +//.\error_policy_normal.cpp(30) : error C2872: 'policy' : ambiguous symbol +// could be 'I:\Boost-sandbox\math_toolkit\boost/math/policies/policy.hpp(392) : boost::math::policies::policy' +// or 'boost::math::policies' + + // So can't use this using namespace command. +// Suppose we want a statistical distribution to return infinities, +// rather than throw exceptions (the default policy), then we can use: + +// std +#include + using std::cout; + using std::endl; + +using boost::math::policies::policy; +// Possible errors +using boost::math::policies::overflow_error; +using boost::math::policies::underflow_error; +using boost::math::policies::domain_error; +using boost::math::policies::pole_error; +using boost::math::policies::denorm_error; +using boost::math::policies::evaluation_error; + +using boost::math::policies::ignore_error; + +// Define a custom policy to ignore just overflow: +typedef policy< +overflow_error + > my_policy; + +// Define another custom policy (perhaps ill-advised?) +// to ignore all errors: domain, pole, overflow, underflow, denorm & evaluation: +typedef policy< +domain_error, +pole_error, +overflow_error, +underflow_error, +denorm_error, +evaluation_error + > my_ignoreall_policy; + +// Define a new distribution with a custom policy to ignore_error +// (& thus perhaps return infinity for some arguments): +typedef boost::math::normal_distribution my_normal; +// Note: uses default parameters zero mean and unit standard deviation. + +// We could also do the same for another distribution, for example: +using boost::math::students_t_distribution; +typedef students_t_distribution my_students_t; + +int main() +{ + cout << "quantile(my_normal(), 0.05); = " << quantile(my_normal(), 0.05) << endl; // 0.05 is argument within normal range. + cout << "quantile(my_normal(), 0.); = " << quantile(my_normal(), 0.) << endl; // argument zero, so expect infinity. + cout << "quantile(my_normal(), 0.); = " << quantile(my_normal(), 0.F) << endl; // argument zero, so expect infinity. + + cout << "quantile(my_students_t(), 0.); = " << quantile(my_students_t(-1), 0.F) << endl; // 'bad' argument negative, so expect NaN. + + // Construct a (0, 1) normal distribution that ignores all errors, + // returning NaN, infinity, zero, or best guess, + // and NOT setting errno. + normal_distribution my_normal2(0.L, 1.L); // explicit parameters for distribution. + cout << "quantile(my_normal2(), 0.); = " << quantile(my_normal2, 0.01) << endl; // argument 0.01, so result finite. + cout << "quantile(my_normal2(), 0.); = " << quantile(my_normal2, 0.) << endl; // argument zero, so expect infinity. + + return 0; +} + +/* + +Output: + +quantile(my_normal(), 0.05); = -1.64485 +quantile(my_normal(), 0.); = -1.#INF +quantile(my_normal(), 0.); = -1.#INF +quantile(my_students_t(), 0.); = 1.#QNAN +quantile(my_normal2(), 0.); = -2.32635 +quantile(my_normal2(), 0.); = -1.#INF + +*/ diff --git a/example/error_policy_example.cpp b/example/error_policy_example.cpp new file mode 100644 index 000000000..cbe875481 --- /dev/null +++ b/example/error_policy_example.cpp @@ -0,0 +1,88 @@ +// example_policy_handling.cpp + +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2007. + +// 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) + +// See error_handling_example.cpp for use of +// macro definition to change policy for +// domain_error - negative degrees of freedom argument +// for student's t distribution CDF, +// and catching the exception. + +// See error_handling_policies for more examples. + +// Boost +#include +using boost::math::students_t_distribution; // Probability of students_t(df, t). +using boost::math::students_t; // Probability of students_t(df, t) convenience typedef for double. + +// std +#include + using std::cout; + using std::endl; + +#include + using std::exception; + +using boost::math::policies::policy; +using boost::math::policies::domain_error; +using boost::math::policies::ignore_error; + +// Define a (bad?) policy to ignore domain errors ('bad' arguments): +typedef policy< + domain_error + > my_policy; + +// Define my distribution with this different domain error policy: +typedef students_t_distribution my_students_t; + +int main() +{ // Example of error handling of bad argument(s) to a distribution. + cout << "Example error handling using Student's t function. " << endl; + + double degrees_of_freedom = -1; double t = -1.; // Two 'bad' arguments! + + try + { + cout << "Probability of ignore_error Student's t is " << cdf(my_students_t(degrees_of_freedom), t) << endl; + cout << "Probability of default error policy Student's t is " << endl; + // BY contrast the students_t distribution default domain error policy is to throw, + cout << cdf(students_t(-1), -1) << endl; // so this will throw. + /*` + Message from thrown exception was: + Error in function boost::math::students_t_distribution::students_t_distribution: + Degrees of freedom argument is -1, but must be > 0 ! + */ + + // We could also define a 'custom' distribution + // with an "ignore overflow error policy" in a single statement: + using boost::math::policies::overflow_error; + students_t_distribution > > students_t_no_throw(-1); + + } + catch(const std::exception& e) + { + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + + return 0; +} // int main() + +/* + +Output: + +Example error handling using Student's t function. +Probability of ignore_error Student's t is 1.#QNAN +Probability of default error policy Student's t is +Message from thrown exception was: + Error in function boost::math::students_t_distribution::students_t_distribution: + Degrees of freedom argument is -1, but must be > 0 ! + +*/ diff --git a/example/f_test.cpp b/example/f_test.cpp new file mode 100644 index 000000000..186741c3e --- /dev/null +++ b/example/f_test.cpp @@ -0,0 +1,184 @@ +// Copyright John Maddock 2006 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable: 4512) // assignment operator could not be generated. +# pragma warning(disable: 4510) // default constructor could not be generated. +# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required. +#endif + +#include +#include +#include + +void f_test( + double sd1, // Sample 1 std deviation + double sd2, // Sample 2 std deviation + double N1, // Sample 1 size + double N2, // Sample 2 size + double alpha) // Significance level +{ + // + // An F test applied to two sets of data. + // We are testing the null hypothesis that the + // standard deviation of the samples is equal, and + // that any variation is down to chance. We can + // also test the alternative hypothesis that any + // difference is not down to chance. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda359.htm + // + using namespace std; + using namespace boost::math; + + // Print header: + cout << + "____________________________________\n" + "F test for equal standard deviations\n" + "____________________________________\n\n"; + cout << setprecision(5); + cout << "Sample 1:\n"; + cout << setw(55) << left << "Number of Observations" << "= " << N1 << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << sd1 << "\n\n"; + cout << "Sample 2:\n"; + cout << setw(55) << left << "Number of Observations" << "= " << N2 << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << sd2 << "\n\n"; + // + // Now we can calculate and output some stats: + // + // F-statistic: + double F = (sd1 / sd2); + F *= F; + cout << setw(55) << left << "Test Statistic" << "= " << F << "\n\n"; + // + // Finally define our distribution, and get the probability: + // + fisher_f dist(N1 - 1, N2 - 1); + double p = cdf(dist, F); + cout << setw(55) << left << "CDF of test statistic: " << "= " + << setprecision(3) << scientific << p << "\n"; + double ucv = quantile(complement(dist, alpha)); + double ucv2 = quantile(complement(dist, alpha / 2)); + double lcv = quantile(dist, alpha); + double lcv2 = quantile(dist, alpha / 2); + cout << setw(55) << left << "Upper Critical Value at alpha: " << "= " + << setprecision(3) << scientific << ucv << "\n"; + cout << setw(55) << left << "Upper Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << ucv2 << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha: " << "= " + << setprecision(3) << scientific << lcv << "\n"; + cout << setw(55) << left << "Lower Critical Value at alpha/2: " << "= " + << setprecision(3) << scientific << lcv2 << "\n\n"; + // + // Finally print out results of null and alternative hypothesis: + // + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + cout << "Standard deviations are unequal (two sided test) "; + if((ucv2 < F) || (lcv2 > F)) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Standard deviation 1 is less than standard deviation 2 "; + if(lcv > F) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Standard deviation 1 is greater than standard deviation 2 "; + if(ucv < F) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; +} + +int main() +{ + // + // Run tests for ceramic strength data: + // see http://www.itl.nist.gov/div898/handbook/eda/section4/eda42a1.htm + // The data for this case study were collected by Said Jahanmir of the + // NIST Ceramics Division in 1996 in connection with a NIST/industry + // ceramics consortium for strength optimization of ceramic strength. + // + f_test(65.54909, 61.85425, 240, 240, 0.05); + // + // And again for the process change comparison: + // see http://www.itl.nist.gov/div898/handbook/prc/section3/prc32.htm + // A new procedure to assemble a device is introduced and tested for + // possible improvement in time of assembly. The question being addressed + // is whether the standard deviation of the new assembly process (sample 2) is + // better (i.e., smaller) than the standard deviation for the old assembly + // process (sample 1). + // + f_test(4.9082, 2.5874, 11, 9, 0.05); + return 0; +} + +/* + +Output: + +____________________________________ +F test for equal standard deviations +____________________________________ + +Sample 1: +Number of Observations = 240 +Sample Standard Deviation = 65.549 + +Sample 2: +Number of Observations = 240 +Sample Standard Deviation = 61.854 + +Test Statistic = 1.123 + +CDF of test statistic: = 8.148e-001 +Upper Critical Value at alpha: = 1.238e+000 +Upper Critical Value at alpha/2: = 1.289e+000 +Lower Critical Value at alpha: = 8.080e-001 +Lower Critical Value at alpha/2: = 7.756e-001 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Standard deviations are unequal (two sided test) REJECTED +Standard deviation 1 is less than standard deviation 2 REJECTED +Standard deviation 1 is greater than standard deviation 2 REJECTED + + +____________________________________ +F test for equal standard deviations +____________________________________ + +Sample 1: +Number of Observations = 11.00000 +Sample Standard Deviation = 4.90820 + +Sample 2: +Number of Observations = 9.00000 +Sample Standard Deviation = 2.58740 + +Test Statistic = 3.59847 + +CDF of test statistic: = 9.589e-001 +Upper Critical Value at alpha: = 3.347e+000 +Upper Critical Value at alpha/2: = 4.295e+000 +Lower Critical Value at alpha: = 3.256e-001 +Lower Critical Value at alpha/2: = 2.594e-001 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Standard deviations are unequal (two sided test) REJECTED +Standard deviation 1 is less than standard deviation 2 REJECTED +Standard deviation 1 is greater than standard deviation 2 NOT REJECTED + +*/ + diff --git a/example/find_location_example.cpp b/example/find_location_example.cpp new file mode 100644 index 000000000..ab47dc6ea --- /dev/null +++ b/example/find_location_example.cpp @@ -0,0 +1,170 @@ +// find_location.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Example of finding location (mean) +// for normal (Gaussian) & Cauchy distribution. + +// Note that this file contains Quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[find_location1 +/*` +First we need some includes to access the normal distribution, +the algorithms to find location (and some std output of course). +*/ + +#include // for normal_distribution + using boost::math::normal; // typedef provides default type is double. +#include // for cauchy_distribution + using boost::math::cauchy; // typedef provides default type is double. +#include + using boost::math::find_location; + using boost::math::complement; // Needed if you want to use the complement version. + using boost::math::policies::policy; + +#include + using std::cout; using std::endl; +#include + using std::setw; using std::setprecision; +#include + using std::numeric_limits; +//] [/find_location1] + +int main() +{ + cout << "Example: Find location (mean)." << endl; + try + { +//[find_location2 +/*` +For this example, we will use the standard normal distribution, +with mean (location) zero and standard deviation (scale) unity. +This is also the default for this implementation. +*/ + normal N01; // Default 'standard' normal distribution with zero mean and + double sd = 1.; // normal default standard deviation is 1. +/*`Suppose we want to find a different normal distribution whose mean is shifted +so that only fraction p (here 0.001 or 0.1%) are below a certain chosen limit +(here -2, two standard deviations). +*/ + double z = -2.; // z to give prob p + double p = 0.001; // only 0.1% below z + + cout << "Normal distribution with mean = " << N01.location() + << ", standard deviation " << N01.scale() + << ", has " << "fraction <= " << z + << ", p = " << cdf(N01, z) << endl; + cout << "Normal distribution with mean = " << N01.location() + << ", standard deviation " << N01.scale() + << ", has " << "fraction > " << z + << ", p = " << cdf(complement(N01, z)) << endl; // Note: uses complement. +/*` +[pre +Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501 +Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725 +] +We can now use ''find_location'' to give a new offset mean. +*/ + double l = find_location(z, p, sd); + cout << "offset location (mean) = " << l << endl; +/*` +that outputs: +[pre +offset location (mean) = 1.09023 +] +showing that we need to shift the mean just over one standard deviation from its previous value of zero. + +Then we can check that we have achieved our objective +by constructing a new distribution +with the offset mean (but same standard deviation): +*/ + normal np001pc(l, sd); // Same standard_deviation (scale) but with mean (location) shifted. +/*` +And re-calculating the fraction below our chosen limit. +*/ +cout << "Normal distribution with mean = " << l + << " has " << "fraction <= " << z + << ", p = " << cdf(np001pc, z) << endl; + cout << "Normal distribution with mean = " << l + << " has " << "fraction > " << z + << ", p = " << cdf(complement(np001pc, z)) << endl; +/*` +[pre +Normal distribution with mean = 1.09023 has fraction <= -2, p = 0.001 +Normal distribution with mean = 1.09023 has fraction > -2, p = 0.999 +] + +[h4 Controlling Error Handling from find_location] +We can also control the policy for handling various errors. +For example, we can define a new (possibly unwise) +policy to ignore domain errors ('bad' arguments). + +Unless we are using the boost::math namespace, we will need: +*/ + using boost::math::policies::policy; + using boost::math::policies::domain_error; + using boost::math::policies::ignore_error; + +/*` +Using a typedef is often convenient, especially if it is re-used, +although it is not required, as the various examples below show. +*/ + typedef policy > ignore_domain_policy; + // find_location with new policy, using typedef. + l = find_location(z, p, sd, ignore_domain_policy()); + // Default policy policy<>, needs "using boost::math::policies::policy;" + l = find_location(z, p, sd, policy<>()); + // Default policy, fully specified. + l = find_location(z, p, sd, boost::math::policies::policy<>()); + // A new policy, ignoring domain errors, without using a typedef. + l = find_location(z, p, sd, policy >()); +/*` +If we want to use a probability that is the +[link complements complement of our probability], +we should not even think of writing `find_location(z, 1 - p, sd)`, +but, [link why_complements to avoid loss of accuracy], use the complement version. +*/ + z = 2.; + double q = 0.95; // = 1 - p; // complement. + l = find_location(complement(z, q, sd)); + + normal np95pc(l, sd); // Same standard_deviation (scale) but with mean(location) shifted + cout << "Normal distribution with mean = " << l << " has " + << "fraction <= " << z << " = " << cdf(np95pc, z) << endl; + cout << "Normal distribution with mean = " << l << " has " + << "fraction > " << z << " = " << cdf(complement(np95pc, z)) << endl; + //] [/find_location2] + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because default policies + // are to throw exceptions on arguments that cause errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + return 0; +} // int main() + + + +//[find_location_example_output +/*` +[pre +Example: Find location (mean). +Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501 +Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725 +offset location (mean) = 1.09023 +Normal distribution with mean = 1.09023 has fraction <= -2, p = 0.001 +Normal distribution with mean = 1.09023 has fraction > -2, p = 0.999 +Normal distribution with mean = 0.355146 has fraction <= 2 = 0.95 +Normal distribution with mean = 0.355146 has fraction > 2 = 0.05 +] +*/ +//] [/find_location_example_output] diff --git a/example/find_mean_and_sd_normal.cpp b/example/find_mean_and_sd_normal.cpp new file mode 100644 index 000000000..adef44697 --- /dev/null +++ b/example/find_mean_and_sd_normal.cpp @@ -0,0 +1,408 @@ +// find_mean_and_sd_normal.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Example of finding mean or sd for normal distribution. + +// Note that this file contains Quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[normal_std +/*` +First we need some includes to access the normal distribution, +the algorithms to find location and scale +(and some std output of course). +*/ + +#include // for normal_distribution + using boost::math::normal; // typedef provides default type is double. +#include // for cauchy_distribution + using boost::math::cauchy; // typedef provides default type is double. +#include + using boost::math::find_location; +#include + using boost::math::find_scale; + using boost::math::complement; + using boost::math::policies::policy; + +#include + using std::cout; using std::endl; using std::left; using std::showpoint; using std::noshowpoint; +#include + using std::setw; using std::setprecision; +#include + using std::numeric_limits; +//] [/normal_std Quickbook] + +int main() +{ + cout << "Find_location (mean) and find_scale (standard deviation) examples." << endl; + try + { + +//[normal_find_location_and_scale_eg + +/*` +[h4 Using find_location and find_scale to meet dispensing and measurement specifications] + +Consider an example from K Krishnamoorthy, +Handbook of Statistical Distributions with Applications, +ISBN 1-58488-635-8, (2006) p 126, example 10.3.7. + +"A machine is set to pack 3 kg of ground beef per pack. +Over a long period of time it is found that the average packed was 3 kg +with a standard deviation of 0.1 kg. +Assume the packing is normally distributed." + +We start by constructing a normal distribution with the given parameters: +*/ + +double mean = 3.; // kg +double standard_deviation = 0.1; // kg +normal packs(mean, standard_deviation); +/*`We can then find the fraction (or %) of packages that weigh more than 3.1 kg. +*/ + +double max_weight = 3.1; // kg +cout << "Percentage of packs > " << max_weight << " is " +<< cdf(complement(packs, max_weight)) * 100. << endl; // P(X > 3.1) + +/*`We might want to ensure that 95% of packs are over a minimum weight specification, +then we want the value of the mean such that P(X < 2.9) = 0.05. + +Using the mean of 3 kg, we can estimate +the fraction of packs that fail to meet the specification of 2.9 kg. +*/ + +double minimum_weight = 2.9; +cout <<"Fraction of packs <= " << minimum_weight << " with a mean of " << mean + << " is " << cdf(complement(packs, minimum_weight)) << endl; +// fraction of packs <= 2.9 with a mean of 3 is 0.841345 + +/*`This is 0.84 - more than the target fraction of 0.95. +If we want 95% to be over the minimum weight, +what should we set the mean weight to be? + +Using the KK StatCalc program supplied with the book and the method given on page 126 gives 3.06449. + +We can confirm this by constructing a new distribution which we call 'xpacks' +with a safety margin mean of 3.06449 thus: +*/ +double over_mean = 3.06449; +normal xpacks(over_mean, standard_deviation); +cout << "Fraction of packs >= " << minimum_weight +<< " with a mean of " << xpacks.mean() + << " is " << cdf(complement(xpacks, minimum_weight)) << endl; +// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005 + +/*`Using this Math Toolkit, we can calculate the required mean directly thus: +*/ +double under_fraction = 0.05; // so 95% are above the minimum weight mean - sd = 2.9 +double low_limit = standard_deviation; +double offset = mean - low_limit - quantile(packs, under_fraction); +double nominal_mean = mean + offset; +// mean + (mean - low_limit - quantile(packs, under_fraction)); + +normal nominal_packs(nominal_mean, standard_deviation); +cout << "Setting the packer to " << nominal_mean << " will mean that " + << "fraction of packs >= " << minimum_weight + << " is " << cdf(complement(nominal_packs, minimum_weight)) << endl; +// Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95 + +/*` +This calculation is generalized as the free function called +[link math_toolkit.dist.dist_ref.dist_algorithms find_location]. + +To use this we will need to +*/ + +#include + using boost::math::find_location; +/*`and then use find_location function to find safe_mean, +& construct a new normal distribution called 'goodpacks'. +*/ +double safe_mean = find_location(minimum_weight, under_fraction, standard_deviation); +normal good_packs(safe_mean, standard_deviation); +/*`with the same confirmation as before: +*/ +cout << "Setting the packer to " << nominal_mean << " will mean that " + << "fraction of packs >= " << minimum_weight + << " is " << cdf(complement(good_packs, minimum_weight)) << endl; +// Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95 + +/*` +[h4 Using Cauchy-Lorentz instead of normal distribution] + +After examining the weight distribution of a large number of packs, we might decide that, +after all, the assumption of a normal distribution is not really justified. +We might find that the fit is better to a __cauchy_distrib. +This distribution has wider 'wings', so that whereas most of the values +are closer to the mean than the normal, there are also more values than 'normal' +that lie further from the mean than the normal. + +This might happen because a larger than normal lump of meat is either included or excluded. + +We first create a __cauchy_distrib with the original mean and standard deviation, +and estimate the fraction that lie below our minimum weight specification. +*/ + +cauchy cpacks(mean, standard_deviation); +cout << "Cauchy Setting the packer to " << mean << " will mean that " + << "fraction of packs >= " << minimum_weight + << " is " << cdf(complement(cpacks, minimum_weight)) << endl; +// Cauchy Setting the packer to 3 will mean that fraction of packs >= 2.9 is 0.75 + +/*`Note that far fewer of the packs meet the specification, only 75% instead of 95%. +Now we can repeat the find_location, using the cauchy distribution as template parameter, +in place of the normal used above. +*/ + +double lc = find_location(minimum_weight, under_fraction, standard_deviation); +cout << "find_location(minimum_weight, over fraction, standard_deviation); " << lc << endl; +// find_location(minimum_weight, over fraction, packs.standard_deviation()); 3.53138 +/*`Note that the safe_mean setting needs to be much higher, 3.53138 instead of 3.06449, +so we will make rather less profit. + +And again confirm that the fraction meeting specification is as expected. +*/ +cauchy goodcpacks(lc, standard_deviation); +cout << "Cauchy Setting the packer to " << lc << " will mean that " + << "fraction of packs >= " << minimum_weight + << " is " << cdf(complement(goodcpacks, minimum_weight)) << endl; +// Cauchy Setting the packer to 3.53138 will mean that fraction of packs >= 2.9 is 0.95 + +/*`Finally we could estimate the effect of a much tighter specification, +that 99% of packs met the specification. +*/ + +cout << "Cauchy Setting the packer to " + << find_location(minimum_weight, 0.99, standard_deviation) + << " will mean that " + << "fraction of packs >= " << minimum_weight + << " is " << cdf(complement(goodcpacks, minimum_weight)) << endl; + +/*`Setting the packer to 3.13263 will mean that fraction of packs >= 2.9 is 0.99, +but will more than double the mean loss from 0.0644 to 0.133 kg per pack. + +Of course, this calculation is not limited to packs of meat, it applies to dispensing anything, +and it also applies to a 'virtual' material like any measurement. + +The only caveat is that the calculation assumes that the standard deviation (scale) is known with +a reasonably low uncertainty, something that is not so easy to ensure in practice. +And that the distribution is well defined, __normal_distrib or __cauchy_distrib, or some other. + +If one is simply dispensing a very large number of packs, +then it may be feasible to measure the weight of hundreds or thousands of packs. +With a healthy 'degrees of freedom', the confidence intervals for the standard deviation +are not too wide, typically about + and - 10% for hundreds of observations. + +For other applications, where it is more difficult or expensive to make many observations, +the confidence intervals are depressingly wide. + +See [link math_toolkit.dist.stat_tut.weg.cs_eg.chi_sq_intervals Confidence Intervals on the standard deviation] +for a worked example +[@../../example/chi_square_std_dev_test.cpp chi_square_std_dev_test.cpp] +of estimating these intervals. + + +[h4 Changing the scale or standard deviation] + +Alternatively, we could invest in a better (more precise) packer +(or measuring device) with a lower standard deviation, or scale. + +This might cost more, but would reduce the amount we have to 'give away' +in order to meet the specification. + +To estimate how much better (how much smaller standard deviation) it would have to be, +we need to get the 5% quantile to be located at the under_weight limit, 2.9 +*/ +double p = 0.05; // wanted p th quantile. +cout << "Quantile of " << p << " = " << quantile(packs, p) + << ", mean = " << packs.mean() << ", sd = " << packs.standard_deviation() << endl; +/*` +Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1 + +With the current packer (mean = 3, sd = 0.1), the 5% quantile is at 2.8551 kg, +a little below our target of 2.9 kg. +So we know that the standard deviation is going to have to be smaller. + +Let's start by guessing that it (now 0.1) needs to be halved, to a standard deviation of 0.05 kg. +*/ +normal pack05(mean, 0.05); +cout << "Quantile of " << p << " = " << quantile(pack05, p) + << ", mean = " << pack05.mean() << ", sd = " << pack05.standard_deviation() << endl; +// Quantile of 0.05 = 2.91776, mean = 3, sd = 0.05 + +cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean + << " and standard deviation of " << pack05.standard_deviation() + << " is " << cdf(complement(pack05, minimum_weight)) << endl; +// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.05 is 0.97725 +/*` +So 0.05 was quite a good guess, but we are a little over the 2.9 target, +so the standard deviation could be a tiny bit more. So we could do some +more guessing to get closer, say by increasing standard deviation to 0.06 kg, +constructing another new distribution called pack06. +*/ +normal pack06(mean, 0.06); +cout << "Quantile of " << p << " = " << quantile(pack06, p) + << ", mean = " << pack06.mean() << ", sd = " << pack06.standard_deviation() << endl; +// Quantile of 0.05 = 2.90131, mean = 3, sd = 0.06 + +cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean + << " and standard deviation of " << pack06.standard_deviation() + << " is " << cdf(complement(pack06, minimum_weight)) << endl; +// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.06 is 0.95221 +/*` +Now we are getting really close, but to do the job properly, +we might need to use root finding method, for example the tools provided, +and used elsewhere, in the Math Toolkit, see +[link math_toolkit.toolkit.internals1.roots2 Root Finding Without Derivatives]. + +But in this (normal) distribution case, we can and should be even smarter +and make a direct calculation. +*/ + +/*`Our required limit is minimum_weight = 2.9 kg, often called the random variate z. +For a standard normal distribution, then probability p = N((minimum_weight - mean) / sd). + +We want to find the standard deviation that would be required to meet this limit, +so that the p th quantile is located at z (minimum_weight). +In this case, the 0.05 (5%) quantile is at 2.9 kg pack weight, when the mean is 3 kg, +ensuring that 0.95 (95%) of packs are above the minimum weight. + +Rearranging, we can directly calculate the required standard deviation: +*/ +normal N01; // standard normal distribution with meamn zero and unit standard deviation. +p = 0.05; +double qp = quantile(N01, p); +double sd95 = (minimum_weight - mean) / qp; + +cout << "For the "<< p << "th quantile to be located at " + << minimum_weight << ", would need a standard deviation of " << sd95 << endl; +// For the 0.05th quantile to be located at 2.9, would need a standard deviation of 0.0607957 + +/*`We can now construct a new (normal) distribution pack95 for the 'better' packer, +and check that our distribution will meet the specification. +*/ + +normal pack95(mean, sd95); +cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean + << " and standard deviation of " << pack95.standard_deviation() + << " is " << cdf(complement(pack95, minimum_weight)) << endl; +// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95 + +/*`This calculation is generalized in the free function find_scale, +as shown below, giving the same standard deviation. +*/ +double ss = find_scale(minimum_weight, under_fraction, packs.mean()); +cout << "find_scale(minimum_weight, under_fraction, packs.mean()); " << ss << endl; +// find_scale(minimum_weight, under_fraction, packs.mean()); 0.0607957 + +/*`If we had defined an over_fraction, or percentage that must pass specification +*/ +double over_fraction = 0.95; +/*`And (wrongly) written + + double sso = find_scale(minimum_weight, over_fraction, packs.mean()); + +With the default policy, we would get a message like + +[pre +Message from thrown exception was: + Error in function boost::math::find_scale(double, double, double, Policy): + Computed scale (-0.060795683191176959) is <= 0! Was the complement intended? +] + +But this would return a *negative* standard deviation - obviously impossible. +The probability should be 1 - over_fraction, not over_fraction, thus: +*/ + +double ss1o = find_scale(minimum_weight, 1 - over_fraction, packs.mean()); +cout << "find_scale(minimum_weight, under_fraction, packs.mean()); " << ss1o << endl; +// find_scale(minimum_weight, under_fraction, packs.mean()); 0.0607957 + +/*`But notice that using '1 - over_fraction' - will lead to a +[link why_complements loss of accuracy, especially if over_fraction was close to unity.] +In this (very common) case, we should instead use the __complements, +giving the most accurate result. +*/ + +double ssc = find_scale(complement(minimum_weight, over_fraction, packs.mean())); +cout << "find_scale(complement(minimum_weight, over_fraction, packs.mean())); " << ssc << endl; +// find_scale(complement(minimum_weight, over_fraction, packs.mean())); 0.0607957 + +/*`Note that our guess of 0.06 was close to the accurate value of 0.060795683191176959. + +We can again confirm our prediction thus: +*/ + +normal pack95c(mean, ssc); +cout <<"Fraction of packs >= " << minimum_weight << " with a mean of " << mean + << " and standard deviation of " << pack95c.standard_deviation() + << " is " << cdf(complement(pack95c, minimum_weight)) << endl; +// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95 + +/*`Notice that these two deceptively simple questions: + +* Do we over-fill to make sure we meet a minimum specification (or under-fill to avoid an overdose)? + +and/or + +* Do we measure better? + +are actually extremely common. + +The weight of beef might be replaced by a measurement of more or less anything, +from drug tablet content, Apollo landing rocket firing, X-ray treatment doses... + +The scale can be variation in dispensing or uncertainty in measurement. +*/ +//] [/normal_find_location_and_scale_eg Quickbook end] + + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because default policies + // are to throw exceptions on arguments that cause errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + return 0; +} // int main() + + +/* + +Output is: + +Find_location and find_scale examples. +Percentage of packs > 3.1 is 15.8655 +Fraction of packs <= 2.9 with a mean of 3 is 0.841345 +Fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005 +Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95 +Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95 +Cauchy Setting the packer to 3 will mean that fraction of packs >= 2.9 is 0.75 +find_location(minimum_weight, over fraction, standard_deviation); 3.53138 +Cauchy Setting the packer to 3.53138 will mean that fraction of packs >= 2.9 is 0.95 +Cauchy Setting the packer to -0.282052 will mean that fraction of packs >= 2.9 is 0.95 +Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1 +Quantile of 0.05 = 2.91776, mean = 3, sd = 0.05 +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.05 is 0.97725 +Quantile of 0.05 = 2.90131, mean = 3, sd = 0.06 +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.06 is 0.95221 +For the 0.05th quantile to be located at 2.9, would need a standard deviation of 0.0607957 +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95 +find_scale(minimum_weight, under_fraction, packs.mean()); 0.0607957 +find_scale(minimum_weight, under_fraction, packs.mean()); 0.0607957 +find_scale(complement(minimum_weight, over_fraction, packs.mean())); 0.0607957 +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0607957 is 0.95 + +*/ + + + diff --git a/example/find_root_example.cpp b/example/find_root_example.cpp new file mode 100644 index 000000000..abcb936cb --- /dev/null +++ b/example/find_root_example.cpp @@ -0,0 +1,239 @@ +// find_root_example.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Example of using root finding. + +// Note that this file contains Quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[root_find1 +/*` +First we need some includes to access the normal distribution +(and some std output of course). +*/ + +#include // root finding. + +#include // for normal_distribution + using boost::math::normal; // typedef provides default type is double. + +#include + using std::cout; using std::endl; using std::left; using std::showpoint; using std::noshowpoint; +#include + using std::setw; using std::setprecision; +#include + using std::numeric_limits; +//] //[/root_find1] + +namespace boost{ namespace math { namespace tools +{ + +template +inline std::pair bracket_and_solve_root(F f, // functor + const T& guess, + const T& factor, + bool rising, + Tol tol, // binary functor specifying termination when tol(min, max) becomes true. + // eps_tolerance most suitable for this continuous function + boost::uintmax_t& max_iter); // explicit (rather than default) max iterations. +// return interval as a pair containing result. + +namespace detail +{ + + // Functor for finding standard deviation: + template + struct standard_deviation_functor + { + standard_deviation_functor(RealType m, RealType s, RealType d) + : mean(m), standard_deviation(s) + { + } + RealType operator()(const RealType& sd) + { // Unary functor - the function whose root is to be found. + if(sd <= tools::min_value()) + { // + return 1; + } + normal_distribution t(mean, sd); + RealType qa = quantile(complement(t, alpha)); + RealType qb = quantile(complement(t, beta)); + qa += qb; + qa *= qa; + qa *= ratio; + qa -= (df + 1); + return qa; + } // operator() + RealType mean; + RealType standard_deviation; + }; // struct standard_deviation_functor +} // namespace detail + +template +RealType normal_distribution::find_standard_deviation( + RealType difference_from_mean, + RealType mean, + RealType sd, + RealType hint) // Best guess available - current sd if none better? +{ + static const char* function = "boost::math::normal_distribution<%1%>::find_standard_deviation"; + + // Check for domain errors: + RealType error_result; + if(false == detail::check_probability( + function, sd, &error_result, Policy()) + ) + return error_result; + + if(hint <= 0) + { // standard deviation can never be negative. + hint = 1; + } + + detail::standard_deviation_functor f(mean, sd, difference_from_mean); + tools::eps_tolerance tol(policies::digits()); + boost::uintmax_t max_iter = 100; + std::pair r = tools::bracket_and_solve_root(f, hint, RealType(2), false, tol, max_iter, Policy()); + RealType result = r.first + (r.second - r.first) / 2; + if(max_iter == 100) + { + policies::raise_evaluation_error(function, "Unable to locate solution in a reasonable time:" + " either there is no answer to how many degrees of freedom are required" + " or the answer is infinite. Current best guess is %1%", result, Policy()); + } + return result; +} // find_standard_deviation +} // namespace tools +} // namespace math +} // namespace boost + + +int main() +{ + cout << "Example: Normal distribution, root finding."; + try + { + +//[root_find2 + +/*`A machine is set to pack 3 kg of ground beef per pack. +Over a long period of time it is found that the average packed was 3 kg +with a standard deviation of 0.1 kg. +Assuming the packing is normally distributed, +we can find the fraction (or %) of packages that weigh more than 3.1 kg. +*/ + +double mean = 3.; // kg +double standard_deviation = 0.1; // kg +normal packs(mean, standard_deviation); + +double max_weight = 3.1; // kg +cout << "Percentage of packs > " << max_weight << " is " +<< cdf(complement(packs, max_weight)) << endl; // P(X > 3.1) + +double under_weight = 2.9; +cout <<"fraction of packs <= " << under_weight << " with a mean of " << mean + << " is " << cdf(complement(packs, under_weight)) << endl; +// fraction of packs <= 2.9 with a mean of 3 is 0.841345 +// This is 0.84 - more than the target 0.95 +// Want 95% to be over this weight, so what should we set the mean weight to be? +// KK StatCalc says: +double over_mean = 3.0664; +normal xpacks(over_mean, standard_deviation); +cout << "fraction of packs >= " << under_weight +<< " with a mean of " << xpacks.mean() + << " is " << cdf(complement(xpacks, under_weight)) << endl; +// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005 +double under_fraction = 0.05; // so 95% are above the minimum weight mean - sd = 2.9 +double low_limit = standard_deviation; +double offset = mean - low_limit - quantile(packs, under_fraction); +double nominal_mean = mean + offset; + +normal nominal_packs(nominal_mean, standard_deviation); +cout << "Setting the packer to " << nominal_mean << " will mean that " + << "fraction of packs >= " << under_weight + << " is " << cdf(complement(nominal_packs, under_weight)) << endl; + +/*` +Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95. + +Setting the packer to 3.13263 will mean that fraction of packs >= 2.9 is 0.99, +but will more than double the mean loss from 0.0644 to 0.133. + +Alternatively, we could invest in a better (more precise) packer with a lower standard deviation. + +To estimate how much better (how much smaller standard deviation) it would have to be, +we need to get the 5% quantile to be located at the under_weight limit, 2.9 +*/ +double p = 0.05; // wanted p th quantile. +cout << "Quantile of " << p << " = " << quantile(packs, p) + << ", mean = " << packs.mean() << ", sd = " << packs.standard_deviation() << endl; // +/*` +Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1 + +With the current packer (mean = 3, sd = 0.1), the 5% quantile is at 2.8551 kg, +a little below our target of 2.9 kg. +So we know that the standard deviation is going to have to be smaller. + +Let's start by guessing that it (now 0.1) needs to be halved, to a standard deviation of 0.05 +*/ +normal pack05(mean, 0.05); +cout << "Quantile of " << p << " = " << quantile(pack05, p) + << ", mean = " << pack05.mean() << ", sd = " << pack05.standard_deviation() << endl; + +cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean + << " and standard deviation of " << pack05.standard_deviation() + << " is " << cdf(complement(pack05, under_weight)) << endl; +// +/*` +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.05 is 0.9772 + +So 0.05 was quite a good guess, but we are a little over the 2.9 target, +so the standard deviation could be a tiny bit more. So we could do some +more guessing to get closer, say by increasing to 0.06 +*/ + +normal pack06(mean, 0.06); +cout << "Quantile of " << p << " = " << quantile(pack06, p) + << ", mean = " << pack06.mean() << ", sd = " << pack06.standard_deviation() << endl; + +cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean + << " and standard deviation of " << pack06.standard_deviation() + << " is " << cdf(complement(pack06, under_weight)) << endl; +/*` +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.06 is 0.9522 + +Now we are getting really close, but to do the job properly, +we could use root finding method, for example the tools provided, and used elsewhere, +in the Math Toolkit, see +[link math_toolkit.toolkit.internals1.roots2 Root Finding Without Derivatives]. + +But in this normal distribution case, we could be even smarter and make a direct calculation. +*/ +//] [/root_find2] + + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because default policies + // are to throw exceptions on arguments that cause errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + return 0; +} // int main() + +/* + +Output is: + + + +*/ diff --git a/example/find_scale_example.cpp b/example/find_scale_example.cpp new file mode 100644 index 000000000..83d12fd08 --- /dev/null +++ b/example/find_scale_example.cpp @@ -0,0 +1,180 @@ +// find_scale.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Example of finding scale (standard deviation) for normal (Gaussian). + +// Note that this file contains Quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[find_scale1 +/*` +First we need some includes to access the __normal_distrib, +the algorithms to find scale (and some std output of course). +*/ + +#include // for normal_distribution + using boost::math::normal; // typedef provides default type is double. +#include + using boost::math::find_scale; + using boost::math::complement; // Needed if you want to use the complement version. + using boost::math::policies::policy; // Needed to specify the error handling policy. + +#include + using std::cout; using std::endl; +#include + using std::setw; using std::setprecision; +#include + using std::numeric_limits; +//] [/find_scale1] + +int main() +{ + cout << "Example: Find scale (standard deviation)." << endl; + try + { +//[find_scale2 +/*` +For this example, we will use the standard __normal_distrib, +with location (mean) zero and standard deviation (scale) unity. +Conveniently, this is also the default for this implementation's constructor. +*/ + normal N01; // Default 'standard' normal distribution with zero mean + double sd = 1.; // and standard deviation is 1. +/*`Suppose we want to find a different normal distribution with standard deviation +so that only fraction p (here 0.001 or 0.1%) are below a certain chosen limit +(here -2. standard deviations). +*/ + double z = -2.; // z to give prob p + double p = 0.001; // only 0.1% below z = -2 + + cout << "Normal distribution with mean = " << N01.location() // aka N01.mean() + << ", standard deviation " << N01.scale() // aka N01.standard_deviation() + << ", has " << "fraction <= " << z + << ", p = " << cdf(N01, z) << endl; + cout << "Normal distribution with mean = " << N01.location() + << ", standard deviation " << N01.scale() + << ", has " << "fraction > " << z + << ", p = " << cdf(complement(N01, z)) << endl; // Note: uses complement. +/*` +[pre +Normal distribution with mean = 0 has fraction <= -2, p = 0.0227501 +Normal distribution with mean = 0 has fraction > -2, p = 0.97725 +] +Noting that p = 0.02 instead of our target of 0.001, +we can now use `find_scale` to give a new standard deviation. +*/ + double l = N01.location(); + double s = find_scale(z, p, l); + cout << "scale (standard deviation) = " << s << endl; +/*` +that outputs: +[pre +scale (standard deviation) = 0.647201 +] +showing that we need to reduce the standard deviation from 1. to 0.65. + +Then we can check that we have achieved our objective +by constructing a new distribution +with the new standard deviation (but same zero mean): +*/ + normal np001pc(N01.location(), s); +/*` +And re-calculating the fraction below (and above) our chosen limit. +*/ + cout << "Normal distribution with mean = " << l + << " has " << "fraction <= " << z + << ", p = " << cdf(np001pc, z) << endl; + cout << "Normal distribution with mean = " << l + << " has " << "fraction > " << z + << ", p = " << cdf(complement(np001pc, z)) << endl; +/*` +[pre +Normal distribution with mean = 0 has fraction <= -2, p = 0.001 +Normal distribution with mean = 0 has fraction > -2, p = 0.999 +] + +[h4 Controlling how Errors from find_scale are handled] +We can also control the policy for handling various errors. +For example, we can define a new (possibly unwise) +policy to ignore domain errors ('bad' arguments). + +Unless we are using the boost::math namespace, we will need: +*/ + using boost::math::policies::policy; + using boost::math::policies::domain_error; + using boost::math::policies::ignore_error; + +/*` +Using a typedef is convenient, especially if it is re-used, +although it is not required, as the various examples below show. +*/ + typedef policy > ignore_domain_policy; + // find_scale with new policy, using typedef. + l = find_scale(z, p, l, ignore_domain_policy()); + // Default policy policy<>, needs using boost::math::policies::policy; + + l = find_scale(z, p, l, policy<>()); + // Default policy, fully specified. + l = find_scale(z, p, l, boost::math::policies::policy<>()); + // New policy, without typedef. + l = find_scale(z, p, l, policy >()); +/*` +If we want to express a probability, say 0.999, that is a complement, `1 - p` +we should not even think of writing `find_scale(z, 1 - p, l)`, +but [link why_complements instead], use the __complements version. +*/ + z = -2.; + double q = 0.999; // = 1 - p; // complement of 0.001. + sd = find_scale(complement(z, q, l)); + + normal np95pc(l, sd); // Same standard_deviation (scale) but with mean(scale) shifted + cout << "Normal distribution with mean = " << l << " has " + << "fraction <= " << z << " = " << cdf(np95pc, z) << endl; + cout << "Normal distribution with mean = " << l << " has " + << "fraction > " << z << " = " << cdf(complement(np95pc, z)) << endl; + +/*` +Sadly, it is all too easy to get probabilities the wrong way round, +when you may get a warning like this: +[pre +Message from thrown exception was: + Error in function boost::math::find_scale(complement(double, double, double, Policy)): + Computed scale (-0.48043523852179076) is <= 0! Was the complement intended? +] +The default error handling policy is to throw an exception with this message, +but if you chose a policy to ignore the error, +the (impossible) negative scale is quietly returned. +*/ +//] [/find_scale2] + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because default policies + // are to throw exceptions on arguments that cause errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + return 0; +} // int main() + +//[find_scale_example_output +/*` +[pre +Example: Find scale (standard deviation). +Normal distribution with mean = 0, standard deviation 1, has fraction <= -2, p = 0.0227501 +Normal distribution with mean = 0, standard deviation 1, has fraction > -2, p = 0.97725 +scale (standard deviation) = 0.647201 +Normal distribution with mean = 0 has fraction <= -2, p = 0.001 +Normal distribution with mean = 0 has fraction > -2, p = 0.999 +Normal distribution with mean = 0.946339 has fraction <= -2 = 0.001 +Normal distribution with mean = 0.946339 has fraction > -2 = 0.999 +] +*/ +//] [/find_scale_example_output] diff --git a/example/neg_binom_confidence_limits.cpp b/example/neg_binom_confidence_limits.cpp new file mode 100644 index 000000000..3908a323c --- /dev/null +++ b/example/neg_binom_confidence_limits.cpp @@ -0,0 +1,179 @@ +// neg_binomial_confidence_limits.cpp + +// Copyright John Maddock 2006 +// Copyright Paul A. Bristow 2007 +// 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) + +// Caution: this file contains quickbook markup as well as code +// and comments, don't change any of the special comment markups! + +//[neg_binomial_confidence_limits + +/*` + +First we need some includes to access the negative binomial distribution +(and some basic std output of course). + +*/ + +#include +using boost::math::negative_binomial; + +#include +using std::cout; using std::endl; +#include +using std::setprecision; +using std::setw; using std::left; using std::fixed; using std::right; + +/*` +First define a table of significance levels: these are the +probabilities that the true occurrence frequency lies outside the calculated +interval: +*/ + + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + +/*` + +Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% confidence +that the true occurence frequency lies *inside* the calculated interval. + +We need a function to calculate and print confidence limits +for an observed frequency of occurrence +that follows a negative binomial distribution. + +*/ + +void confidence_limits_on_frequency(unsigned trials, unsigned successes) +{ + // trials = Total number of trials. + // successes = Total number of observed successes. + // failures = trials - successes. + // success_fraction = successes /trials. + // Print out general info: + cout << + "______________________________________________\n" + "2-Sided Confidence Limits For Success Fraction\n" + "______________________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of trials" << " = " << trials << "\n"; + cout << setw(40) << left << "Number of successes" << " = " << successes << "\n"; + cout << setw(40) << left << "Number of failures" << " = " << trials - successes << "\n"; + cout << setw(40) << left << "Observed frequency of occurrence" << " = " << double(successes) / trials << "\n"; + + // Print table header: + cout << "\n\n" + "___________________________________________\n" + "Confidence Lower Upper\n" + " Value (%) Limit Limit\n" + "___________________________________________\n"; + + +/*` +And now for the important part - the bounds themselves. +For each value of /alpha/, we call `find_lower_bound_on_p` and +`find_upper_bound_on_p` to obtain lower and upper bounds respectively. +Note that since we are calculating a two-sided interval, +we must divide the value of alpha in two. Had we been calculating a +single-sided interval, for example: ['"Calculate a lower bound so that we are P% +sure that the true occurrence frequency is greater than some value"] +then we would *not* have divided by two. + +*/ + + // Now print out the upper and lower limits for the alpha table values. + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // Calculate bounds: + double lower = negative_binomial::find_lower_bound_on_p(trials, successes, alpha[i]/2); + double upper = negative_binomial::find_upper_bound_on_p(trials, successes, alpha[i]/2); + // Print limits: + cout << fixed << setprecision(5) << setw(15) << right << lower; + cout << fixed << setprecision(5) << setw(15) << right << upper << endl; + } + cout << endl; +} // void confidence_limits_on_frequency(unsigned trials, unsigned successes) + +/*` + +And then call confidence_limits_on_frequency with increasing numbers of trials, +but always the same success fraction 0.1, or 1 in 10. + +*/ + +int main() +{ + confidence_limits_on_frequency(20, 2); // 20 trials, 2 successes, 2 in 20, = 1 in 10 = 0.1 success fraction. + confidence_limits_on_frequency(200, 20); // More trials, but same 0.1 success fraction. + confidence_limits_on_frequency(2000, 200); // Many more trials, but same 0.1 success fraction. + + return 0; +} // int main() + +//] [/negative_binomial_confidence_limits_eg end of Quickbook in C++ markup] + +/* + +______________________________________________ +2-Sided Confidence Limits For Success Fraction +______________________________________________ +Number of trials = 20 +Number of successes = 2 +Number of failures = 18 +Observed frequency of occurrence = 0.1 +___________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +___________________________________________ + 50.000 0.04812 0.13554 + 75.000 0.03078 0.17727 + 90.000 0.01807 0.22637 + 95.000 0.01235 0.26028 + 99.000 0.00530 0.33111 + 99.900 0.00164 0.41802 + 99.990 0.00051 0.49202 + 99.999 0.00016 0.55574 +______________________________________________ +2-Sided Confidence Limits For Success Fraction +______________________________________________ +Number of trials = 200 +Number of successes = 20 +Number of failures = 180 +Observed frequency of occurrence = 0.1000000 +___________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +___________________________________________ + 50.000 0.08462 0.11350 + 75.000 0.07580 0.12469 + 90.000 0.06726 0.13695 + 95.000 0.06216 0.14508 + 99.000 0.05293 0.16170 + 99.900 0.04343 0.18212 + 99.990 0.03641 0.20017 + 99.999 0.03095 0.21664 +______________________________________________ +2-Sided Confidence Limits For Success Fraction +______________________________________________ +Number of trials = 2000 +Number of successes = 200 +Number of failures = 1800 +Observed frequency of occurrence = 0.1000000 +___________________________________________ +Confidence Lower Upper + Value (%) Limit Limit +___________________________________________ + 50.000 0.09536 0.10445 + 75.000 0.09228 0.10776 + 90.000 0.08916 0.11125 + 95.000 0.08720 0.11352 + 99.000 0.08344 0.11802 + 99.900 0.07921 0.12336 + 99.990 0.07577 0.12795 + 99.999 0.07282 0.13206 +*/ \ No newline at end of file diff --git a/example/neg_binomial_sample_sizes.cpp b/example/neg_binomial_sample_sizes.cpp new file mode 100644 index 000000000..def7b1553 --- /dev/null +++ b/example/neg_binomial_sample_sizes.cpp @@ -0,0 +1,202 @@ +// neg_binomial_sample_sizes.cpp + +// Copyright Paul A. Bristow 2007 +// Copyright John Maddock 2006 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +using boost::math::negative_binomial; + +// Default RealType is double so this permits use of: +double find_minimum_number_of_trials( +double k, // number of failures (events), k >= 0. +double p, // fraction of trails for which event occurs, 0 <= p <= 1. +double probability); // probability threshold, 0 <= probability <= 1. + +#include +using std::cout; +using std::endl; +using std::fixed; +using std::right; +#include +using std::setprecision; +using std::setw; + +//[neg_binomial_sample_sizes + +/*` +It centres around a routine that prints out +a table of minimum sample sizes for various probability thresholds: +*/ + void find_number_of_trials(double failures, double p); +/*` +First define a table of significance levels: these are the maximum +acceptable probability that /failure/ or fewer events will be observed. +*/ + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; +/*` +Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% confidence +that the desired number of failures will be observed. + +Much of the rest of the program is pretty-printing, the important part +is in the calculation of minimum number of trials required for each +value of alpha using: + + (int)ceil(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]); + +*/ + +/*` + +find_minimum_number_of_trials returns a double, +so ceil rounds this up to ensure we have an integral minimum number of trials. + +*/ + +void find_number_of_trials(double failures, double p) +{ + // trials = number of trials + // failures = number of failures before achieving required success(es). + // p = success fraction (0 <= p <= 1.). + // + // Calculate how many trials we need to ensure the + // required number of failures DOES exceed "failures". + + cout << "\n""Target number of failures = " << failures; + cout << ", Success fraction = " << 100 * p << "%" << endl; + // Print table header: + cout << "\n\n" + "____________________________\n" + "Confidence Min Number\n" + " Value (%) Of Trials \n" + "____________________________\n"; + // Now print out the data for the alpha table values. + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { // Confidence values %: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]) << " " + // find_minimum_number_of_trials + << setw(6) << right + << (int)ceil(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i])) + << endl; + } + cout << endl; +} // void find_number_of_trials(double failures, double p) + +/*` finally we can produce some tables of minimum trials for the chosen confidence levels: +*/ + +int main() +{ + find_number_of_trials(5, 0.5); + find_number_of_trials(50, 0.5); + find_number_of_trials(500, 0.5); + find_number_of_trials(50, 0.1); + find_number_of_trials(500, 0.1); + find_number_of_trials(5, 0.9); + + return 0; +} // int main() + +//] [/neg_binomial_sample_sizes.cpp end of Quickbook in C++ markup] + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\neg_binomial_sample_sizes.exe" +Target number of failures = 5, Success fraction = 50% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 11 + 75.000 14 + 90.000 17 + 95.000 18 + 99.000 22 + 99.900 27 + 99.990 31 + 99.999 36 +Target number of failures = 50.000, Success fraction = 50.000% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 101 + 75.000 109 + 90.000 115 + 95.000 119 + 99.000 128 + 99.900 137 + 99.990 146 + 99.999 154 +Target number of failures = 500.000, Success fraction = 50.000% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 1001 + 75.000 1023 + 90.000 1043 + 95.000 1055 + 99.000 1078 + 99.900 1104 + 99.990 1126 + 99.999 1146 +Target number of failures = 50.000, Success fraction = 10.000% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 56 + 75.000 58 + 90.000 60 + 95.000 61 + 99.000 63 + 99.900 66 + 99.990 68 + 99.999 71 +Target number of failures = 500.000, Success fraction = 10.000% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 556 + 75.000 562 + 90.000 567 + 95.000 570 + 99.000 576 + 99.900 583 + 99.990 588 + 99.999 594 +Target number of failures = 5.000, Success fraction = 90.000% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 57 + 75.000 73 + 90.000 91 + 95.000 103 + 99.000 127 + 99.900 159 + 99.990 189 + 99.999 217 +Target number of failures = 5.000, Success fraction = 40.000% +____________________________ +Confidence Min Number + Value (%) Of Trials +____________________________ + 50.000 10 + 75.000 11 + 90.000 13 + 95.000 15 + 99.000 18 + 99.900 21 + 99.990 25 + 99.999 28 + +*/ diff --git a/example/negative_binomial_example1.cpp b/example/negative_binomial_example1.cpp new file mode 100644 index 000000000..ce5c50999 --- /dev/null +++ b/example/negative_binomial_example1.cpp @@ -0,0 +1,521 @@ +// negative_binomial_example1.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Example 1 of using negative_binomial distribution. + +//[negative_binomial_eg1_1 + +/*` +Based on [@http://en.wikipedia.org/wiki/Negative_binomial_distribution +a problem by Dr. Diane Evans, +Professor of Mathematics at Rose-Hulman Institute of Technology]. + +Pat is required to sell candy bars to raise money for the 6th grade field trip. +There are thirty houses in the neighborhood, +and Pat is not supposed to return home until five candy bars have been sold. +So the child goes door to door, selling candy bars. +At each house, there is a 0.4 probability (40%) of selling one candy bar +and a 0.6 probability (60%) of selling nothing. + +What is the probability mass (density) function (pdf) for selling the last (fifth) +candy bar at the nth house? + +The Negative Binomial(r, p) distribution describes the probability of k failures +and r successes in k+r Bernoulli(p) trials with success on the last trial. +(A [@http://en.wikipedia.org/wiki/Bernoulli_distribution Bernoulli trial] +is one with only two possible outcomes, success of failure, +and p is the probability of success). +See also [@ http://en.wikipedia.org/wiki/Bernoulli_distribution Bernoulli distribution] +and [@http://www.math.uah.edu/stat/bernoulli/Introduction.xhtml Bernoulli applications]. + +In this example, we will deliberately produce a variety of calculations +and outputs to demonstrate the ways that the negative binomial distribution +can be implemented with this library: it is also deliberately over-commented. + +First we need to #define macros to control the error and discrete handling policies. +For this simple example, we want to avoid throwing +an exception (the default policy) and just return infinity. +We want to treat the distribution as if it was continuous, +so we choose a discrete_quantile policy of real, +rather than the default policy integer_round_outwards. +*/ +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real +/*` +After that we need some includes to provide easy access to the negative binomial distribution, +[caution It is vital to #include distributions etc *after* the above #defines] +and we need some std library iostream, of course. +*/ +#include + // for negative_binomial_distribution + using boost::math::negative_binomial; // typedef provides default type is double. + using ::boost::math::pdf; // Probability mass function. + using ::boost::math::cdf; // Cumulative density function. + using ::boost::math::quantile; + +#include + using std::cout; using std::endl; + using std::noshowpoint; using std::fixed; using std::right; using std::left; +#include + using std::setprecision; using std::setw; + +#include + using std::numeric_limits; +//] [negative_binomial_eg1_1] + +int main() +{ + cout <<"Selling candy bars - using the negative binomial distribution." + << "\nby Dr. Diane Evans," + "\nProfessor of Mathematics at Rose-Hulman Institute of Technology," + << "\nsee http://en.wikipedia.org/wiki/Negative_binomial_distribution\n" + << endl; + cout << endl; + cout.precision(5); + // None of the values calculated have a useful accuracy as great this, but + // INF shows wrongly with < 5 ! + // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=240227 +//[negative_binomial_eg1_2 +/*` +It is always sensible to use try and catch blocks because defaults policies are to +throw an exception if anything goes wrong. + +A simple catch block (see below) will ensure that you get a +helpful error message instead of an abrupt program abort. +*/ + try + { +/*` +Selling five candy bars means getting five successes, so successes r = 5. +The total number of trials (n, in this case, houses visited) this takes is therefore + = sucesses + failures or k + r = k + 5. +*/ + double sales_quota = 5; // Pat's sales quota - successes (r). +/*` +At each house, there is a 0.4 probability (40%) of selling one candy bar +and a 0.6 probability (60%) of selling nothing. +*/ + double success_fraction = 0.4; // success_fraction (p) - so failure_fraction is 0.6. +/*` +The Negative Binomial(r, p) distribution describes the probability of k failures +and r successes in k+r Bernoulli(p) trials with success on the last trial. +(A [@http://en.wikipedia.org/wiki/Bernoulli_distribution Bernoulli trial] +is one with only two possible outcomes, success of failure, +and p is the probability of success). + +We therefore start by constructing a negative binomial distribution +with parameters sales_quota (required successes) and probability of success. +*/ + negative_binomial nb(sales_quota, success_fraction); // type double by default. +/*` +To confirm, display the success_fraction & successes parameters of the distribution. +*/ + cout << "Pat has a sales per house success rate of " << success_fraction + << ".\nTherefore he would, on average, sell " << nb.success_fraction() * 100 + << " bars after trying 100 houses." << endl; + + int all_houses = 30; // The number of houses on the estate. + + cout << "With a success rate of " << nb.success_fraction() + << ", he might expect, on average,\n" + "to need to visit about " << success_fraction * all_houses + << " houses in order to sell all " << nb.successes() << " bars. " << endl; +/*` +[pre +Pat has a sales per house success rate of 0.4. +Therefore he would, on average, sell 40 bars after trying 100 houses. +With a success rate of 0.4, he might expect, on average, +to need to visit about 12 houses in order to sell all 5 bars. +] + +The random variable of interest is the number of houses +that must be visited to sell five candy bars, +so we substitute k = n - 5 into a negative_binomial(5, 0.4) +and obtain the [link math.dist.pdf probability mass (density) function (pdf or pmf)] +of the distribution of houses visited. +Obviously, the best possible case is that Pat makes sales on all the first five houses. + +We calculate this using the pdf function: +*/ + cout << "Probability that Pat finishes on the " << sales_quota << "th house is " + << pdf(nb, 5 - sales_quota) << endl; // == pdf(nb, 0) +/*` +Of course, he could not finish on fewer than 5 houses because he must sell 5 candy bars. +So the 5th house is the first that he could possibly finish on. + +To finish on or before the 8th house, Pat must finish at the 5th, 6th, 7th or 8th house. +The probability that he will finish on *exactly* ( == ) on any house +is the Probability Density Function (pdf). +*/ + cout << "Probability that Pat finishes on the 6th house is " + << pdf(nb, 6 - sales_quota) << endl; + cout << "Probability that Pat finishes on the 7th house is " + << pdf(nb, 7 - sales_quota) << endl; + cout << "Probability that Pat finishes on the 8th house is " + << pdf(nb, 8 - sales_quota) << endl; +/*` +[pre +Probability that Pat finishes on the 6th house is 0.03072 +Probability that Pat finishes on the 7th house is 0.055296 +Probability that Pat finishes on the 8th house is 0.077414 +] + +The sum of the probabilities for these houses is the Cumulative Distribution Function (cdf). +We can calculate it by adding the individual probabilities. +*/ + cout << "Probability that Pat finishes on or before the 8th house is sum " + "\n" << "pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = " + // Sum each of the mass/density probabilities for houses sales_quota = 5, 6, 7, & 8. + << pdf(nb, 5 - sales_quota) // 0 failures. + + pdf(nb, 6 - sales_quota) // 1 failure. + + pdf(nb, 7 - sales_quota) // 2 failures. + + pdf(nb, 8 - sales_quota) // 3 failures. + << endl; +/*`[pre +pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = 0.17367 +] + +Or, usually better, by using the negative binomial *cumulative* distribution function. +*/ + cout << "\nProbability of selling his quota of " << sales_quota + << " bars\non or before the " << 8 << "th house is " + << cdf(nb, 8 - sales_quota) << endl; +/*`[pre +Probability of selling his quota of 5 bars on or before the 8th house is 0.17367 +]*/ + cout << "\nProbability that Pat finishes exactly on the 10th house is " + << pdf(nb, 10 - sales_quota) << endl; + cout << "\nProbability of selling his quota of " << sales_quota + << " bars\non or before the " << 10 << "th house is " + << cdf(nb, 10 - sales_quota) << endl; +/*` +[pre +Probability that Pat finishes exactly on the 10th house is 0.10033 +Probability of selling his quota of 5 bars on or before the 10th house is 0.3669 +]*/ + cout << "Probability that Pat finishes exactly on the 11th house is " + << pdf(nb, 11 - sales_quota) << endl; + cout << "\nProbability of selling his quota of " << sales_quota + << " bars\non or before the " << 11 << "th house is " + << cdf(nb, 11 - sales_quota) << endl; +/*`[pre +Probability that Pat finishes on the 11th house is 0.10033 +Probability of selling his quota of 5 candy bars +on or before the 11th house is 0.46723 +]*/ + cout << "Probability that Pat finishes exactly on the 12th house is " + << pdf(nb, 12 - sales_quota) << endl; + + cout << "\nProbability of selling his quota of " << sales_quota + << " bars\non or before the " << 12 << "th house is " + << cdf(nb, 12 - sales_quota) << endl; +/*`[pre +Probability that Pat finishes on the 12th house is 0.094596 +Probability of selling his quota of 5 candy bars +on or before the 12th house is 0.56182 +] +Finally consider the risk of Pat not selling his quota of 5 bars +even after visiting all the houses. +Calculate the probability that he /will/ sell on +or before the last house: +Calculate the probability that he would sell all his quota on the very last house. +*/ + cout << "Probability that Pat finishes on the " << all_houses + << " house is " << pdf(nb, all_houses - sales_quota) << endl; +/*` +Probability of selling his quota of 5 bars on the 30th house is +[pre +Probability that Pat finishes on the 30 house is 0.00069145 +] +when he'd be very unlucky indeed! + +What is the probability that Pat exhausts all 30 houses in the neighborhood, +and *still* doesn't sell the required 5 candy bars? +*/ + cout << "\nProbability of selling his quota of " << sales_quota + << " bars\non or before the " << all_houses << "th house is " + << cdf(nb, all_houses - sales_quota) << endl; +/*` +[pre +Probability of selling his quota of 5 bars +on or before the 30th house is 0.99849 +] + +/*`So the risk of failing even after visiting all the houses is 1 - this probability, + ``1 - cdf(nb, all_houses - sales_quota`` +But using this expression may cause serious inaccuracy, +so it would be much better to use the complement of the cdf: +So the risk of failing even at, or after, the 31th (non-existent) houses is 1 - this probability, + ``1 - cdf(nb, all_houses - sales_quota)`` +But using this expression may cause serious inaccuracy. +So it would be much better to use the complement of the cdf. +[link why_complements Why complements?] +*/ + cout << "\nProbability of failing to sell his quota of " << sales_quota + << " bars\neven after visiting all " << all_houses << " houses is " + << cdf(complement(nb, all_houses - sales_quota)) << endl; +/*` +[pre +Probability of failing to sell his quota of 5 bars +even after visiting all 30 houses is 0.0015101 +] +We can also use the quantile (percentile), the inverse of the cdf, to +predict which house Pat will finish on. So for the 8th house: +*/ + double p = cdf(nb, (8 - sales_quota)); + cout << "Probability of meeting sales quota on or before 8th house is "<< p << endl; +/*` +[pre +Probability of meeting sales quota on or before 8th house is 0.174 +] +*/ + cout << "If the confidence of meeting sales quota is " << p + << ", then the finishing house is " << quantile(nb, p) + sales_quota << endl; + + cout<< " quantile(nb, p) = " << quantile(nb, p) << endl; +/*` +[pre +If the confidence of meeting sales quota is 0.17367, then the finishing house is 8 +] +Demanding absolute certainty that all 5 will be sold, +implies an infinite number of trials. +(Of course, there are only 30 houses on the estate, +so he can't ever be *certain* of selling his quota). +*/ + cout << "If the confidence of meeting sales quota is " << 1. + << ", then the finishing house is " << quantile(nb, 1) + sales_quota << endl; + // 1.#INF == infinity. +/*`[pre +If the confidence of meeting sales quota is 1, then the finishing house is 1.#INF +] +And similarly for a few other probabilities: +*/ + cout << "If the confidence of meeting sales quota is " << 0. + << ", then the finishing house is " << quantile(nb, 0.) + sales_quota << endl; + + cout << "If the confidence of meeting sales quota is " << 0.5 + << ", then the finishing house is " << quantile(nb, 0.5) + sales_quota << endl; + + cout << "If the confidence of meeting sales quota is " << 1 - 0.00151 // 30 th + << ", then the finishing house is " << quantile(nb, 1 - 0.00151) + sales_quota << endl; +/*` +[pre +If the confidence of meeting sales quota is 0, then the finishing house is 5 +If the confidence of meeting sales quota is 0.5, then the finishing house is 11.337 +If the confidence of meeting sales quota is 0.99849, then the finishing house is 30 +] + +Notice that because we chose a discrete quantile policy of real, +the result can be an 'unreal' fractional house. + +If the opposite is true, we don't want to assume any confidence, then this is tantamount +to assuming that all the first sales_quota trials will be successful sales. +*/ + cout << "If confidence of meeting quota is zero\n(we assume all houses are successful sales)" + ", then finishing house is " << sales_quota << endl; +/*` +[pre +If confidence of meeting quota is zero (we assume all houses are successful sales), then finishing house is 5 +If confidence of meeting quota is 0, then finishing house is 5 +] +We can list quantiles for a few probabilities: +*/ + + double ps[] = {0., 0.001, 0.01, 0.05, 0.1, 0.5, 0.9, 0.95, 0.99, 0.999, 1.}; + // Confidence as fraction = 1-alpha, as percent = 100 * (1-alpha[i]) % + cout.precision(3); + for (int i = 0; i < sizeof(ps)/sizeof(ps[0]); i++) + { + cout << "If confidence of meeting quota is " << ps[i] + << ", then finishing house is " << quantile(nb, ps[i]) + sales_quota + << endl; + } + +/*` +[pre +If confidence of meeting quota is 0, then finishing house is 5 +If confidence of meeting quota is 0.001, then finishing house is 5 +If confidence of meeting quota is 0.01, then finishing house is 5 +If confidence of meeting quota is 0.05, then finishing house is 6.2 +If confidence of meeting quota is 0.1, then finishing house is 7.06 +If confidence of meeting quota is 0.5, then finishing house is 11.3 +If confidence of meeting quota is 0.9, then finishing house is 17.8 +If confidence of meeting quota is 0.95, then finishing house is 20.1 +If confidence of meeting quota is 0.99, then finishing house is 24.8 +If confidence of meeting quota is 0.999, then finishing house is 31.1 +If confidence of meeting quota is 1, then finishing house is 1.#INF +] + +We could have applied a ceil function to obtain a 'worst case' integer value for house. +``ceil(quantile(nb, ps[i]))`` + +Or, if we had used the default discrete quantile policy, integer_outside, by omitting +``#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real`` +we would have achieved the same effect. + +The real result gives some suggestion which house is most likely. +For example, compare the real and integer_outside for 95% confidence. + +[pre +If confidence of meeting quota is 0.95, then finishing house is 20.1 +If confidence of meeting quota is 0.95, then finishing house is 21 +] +The real value 20.1 is much closer to 20 than 21, so integer_outside is pessimistic. +We could also use integer_round_nearest policy to suggest that 20 is more likely. + +Finally, we can tabulate the probability for the last sale being exactly on each house. +*/ + cout << "\nHouse for " << sales_quota << "th (last) sale. Probability (%)" << endl; + cout.precision(5); + for (int i = (int)sales_quota; i < all_houses+1; i++) + { + cout << left << setw(3) << i << " " << setw(8) << cdf(nb, i - sales_quota) << endl; + } + cout << endl; +/*` +[pre +House for 5 th (last) sale. Probability (%) +5 0.01024 +6 0.04096 +7 0.096256 +8 0.17367 +9 0.26657 +10 0.3669 +11 0.46723 +12 0.56182 +13 0.64696 +14 0.72074 +15 0.78272 +16 0.83343 +17 0.874 +18 0.90583 +19 0.93039 +20 0.94905 +21 0.96304 +22 0.97342 +23 0.98103 +24 0.98655 +25 0.99053 +26 0.99337 +27 0.99539 +28 0.99681 +29 0.9978 +30 0.99849 +] + +As noted above, using a catch block is always a good idea, even if you do not expect to use it. +*/ + } + catch(const std::exception& e) + { // Since we have set an overflow policy of ignore_error, + // an overflow exception should never be thrown. + std::cout << "\nMessage from thrown exception was:\n " << e.what() << std::endl; +/*` +For example, without a ignore domain error policy, if we asked for ``pdf(nb, -1)`` for example, we would get: +[pre +Message from thrown exception was: + Error in function boost::math::pdf(const negative_binomial_distribution&, double): + Number of failures argument is -1, but must be >= 0 ! +] +*/ +//] [/ negative_binomial_eg1_2] + } + return 0; +} // int main() + + +/* + +Output is: + +Selling candy bars - using the negative binomial distribution. +by Dr. Diane Evans, +Professor of Mathematics at Rose-Hulman Institute of Technology, +see http://en.wikipedia.org/wiki/Negative_binomial_distribution +Pat has a sales per house success rate of 0.4. +Therefore he would, on average, sell 40 bars after trying 100 houses. +With a success rate of 0.4, he might expect, on average, +to need to visit about 12 houses in order to sell all 5 bars. +Probability that Pat finishes on the 5th house is 0.01024 +Probability that Pat finishes on the 6th house is 0.03072 +Probability that Pat finishes on the 7th house is 0.055296 +Probability that Pat finishes on the 8th house is 0.077414 +Probability that Pat finishes on or before the 8th house is sum +pdf(sales_quota) + pdf(6) + pdf(7) + pdf(8) = 0.17367 +Probability of selling his quota of 5 bars +on or before the 8th house is 0.17367 +Probability that Pat finishes exactly on the 10th house is 0.10033 +Probability of selling his quota of 5 bars +on or before the 10th house is 0.3669 +Probability that Pat finishes exactly on the 11th house is 0.10033 +Probability of selling his quota of 5 bars +on or before the 11th house is 0.46723 +Probability that Pat finishes exactly on the 12th house is 0.094596 +Probability of selling his quota of 5 bars +on or before the 12th house is 0.56182 +Probability that Pat finishes on the 30 house is 0.00069145 +Probability of selling his quota of 5 bars +on or before the 30th house is 0.99849 +Probability of failing to sell his quota of 5 bars +even after visiting all 30 houses is 0.0015101 +Probability of meeting sales quota on or before 8th house is 0.17367 +If the confidence of meeting sales quota is 0.17367, then the finishing house is 8 + quantile(nb, p) = 3 +If the confidence of meeting sales quota is 1, then the finishing house is 1.#INF +If the confidence of meeting sales quota is 0, then the finishing house is 5 +If the confidence of meeting sales quota is 0.5, then the finishing house is 11.337 +If the confidence of meeting sales quota is 0.99849, then the finishing house is 30 +If confidence of meeting quota is zero +(we assume all houses are successful sales), then finishing house is 5 +If confidence of meeting quota is 0, then finishing house is 5 +If confidence of meeting quota is 0.001, then finishing house is 5 +If confidence of meeting quota is 0.01, then finishing house is 5 +If confidence of meeting quota is 0.05, then finishing house is 6.2 +If confidence of meeting quota is 0.1, then finishing house is 7.06 +If confidence of meeting quota is 0.5, then finishing house is 11.3 +If confidence of meeting quota is 0.9, then finishing house is 17.8 +If confidence of meeting quota is 0.95, then finishing house is 20.1 +If confidence of meeting quota is 0.99, then finishing house is 24.8 +If confidence of meeting quota is 0.999, then finishing house is 31.1 +If confidence of meeting quota is 1, then finishing house is 1.#J +House for 5th (last) sale. Probability (%) +5 0.01024 +6 0.04096 +7 0.096256 +8 0.17367 +9 0.26657 +10 0.3669 +11 0.46723 +12 0.56182 +13 0.64696 +14 0.72074 +15 0.78272 +16 0.83343 +17 0.874 +18 0.90583 +19 0.93039 +20 0.94905 +21 0.96304 +22 0.97342 +23 0.98103 +24 0.98655 +25 0.99053 +26 0.99337 +27 0.99539 +28 0.99681 +29 0.9978 +30 0.99849 + +*/ + + + + + + diff --git a/example/negative_binomial_example2.cpp b/example/negative_binomial_example2.cpp new file mode 100644 index 000000000..aba8350c3 --- /dev/null +++ b/example/negative_binomial_example2.cpp @@ -0,0 +1,182 @@ +// negative_binomial_example2.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Simple example demonstrating use of the Negative Binomial Distribution. + +#include + using boost::math::negative_binomial_distribution; + using boost::math::negative_binomial; // typedef + +// In a sequence of trials or events +// (Bernoulli, independent, yes or no, succeed or fail) +// with success_fraction probability p, +// negative_binomial is the probability that k or fewer failures +// preceed the r th trial's success. + +#include +using std::cout; +using std::endl; +using std::setprecision; +using std::showpoint; +using std::setw; +using std::left; +using std::right; +#include +using std::numeric_limits; + +int main() +{ + cout << "Negative_binomial distribution - simple example 2" << endl; + // Construct a negative binomial distribution with: + // 8 successes (r), success fraction (p) 0.25 = 25% or 1 in 4 successes. + negative_binomial mynbdist(8, 0.25); // Shorter method using typedef. + + // Display (to check) properties of the distribution just constructed. + cout << "mean(mynbdist) = " << mean(mynbdist) << endl; // 24 + cout << "mynbdist.successes() = " << mynbdist.successes() << endl; // 8 + // r th successful trial, after k failures, is r + k th trial. + cout << "mynbdist.success_fraction() = " << mynbdist.success_fraction() << endl; + // success_fraction = failures/successes or k/r = 0.25 or 25%. + cout << "mynbdist.percent success = " << mynbdist.success_fraction() * 100 << "%" << endl; + // Show as % too. + // Show some cumulative distribution function values for failures k = 2 and 8 + cout << "cdf(mynbdist, 2.) = " << cdf(mynbdist, 2.) << endl; // 0.000415802001953125 + cout << "cdf(mynbdist, 8.) = " << cdf(mynbdist, 8.) << endl; // 0.027129956288263202 + cout << "cdf(complement(mynbdist, 8.)) = " << cdf(complement(mynbdist, 8.)) << endl; // 0.9728700437117368 + // Check that cdf plus its complement is unity. + cout << "cdf + complement = " << cdf(mynbdist, 8.) + cdf(complement(mynbdist, 8.)) << endl; // 1 + // Note: No complement for pdf! + + // Compare cdf with sum of pdfs. + double sum = 0.; // Calculate the sum of all the pdfs, + int k = 20; // for 20 failures + for(signed i = 0; i <= k; ++i) + { + sum += pdf(mynbdist, double(i)); + } + // Compare with the cdf + double cdf8 = cdf(mynbdist, static_cast(k)); + double diff = sum - cdf8; // Expect the diference to be very small. + cout << setprecision(17) << "Sum pdfs = " << sum << ' ' // sum = 0.40025683281803698 + << ", cdf = " << cdf(mynbdist, static_cast(k)) // cdf = 0.40025683281803687 + << ", difference = " // difference = 0.50000000000000000 + << setprecision(1) << diff/ (std::numeric_limits::epsilon() * sum) + << " in epsilon units." << endl; + + // Note: Use boost::math::tools::epsilon rather than std::numeric_limits + // to cover RealTypes that do not specialize numeric_limits. + +//[neg_binomial_example2 + + // Print a table of values that can be used to plot + // using Excel, or some other superior graphical display tool. + + cout.precision(17); // Use max_digits10 precision, the maximum available for a reference table. + cout << showpoint << endl; // include trailing zeros. + // This is a maximum possible precision for the type (here double) to suit a reference table. + int maxk = static_cast(2. * mynbdist.successes() / mynbdist.success_fraction()); + // This maxk shows most of the range of interest, probability about 0.0001 to 0.999. + cout << "\n"" k pdf cdf""\n" << endl; + for (int k = 0; k < maxk; k++) + { + cout << right << setprecision(17) << showpoint + << right << setw(3) << k << ", " + << left << setw(25) << pdf(mynbdist, static_cast(k)) + << left << setw(25) << cdf(mynbdist, static_cast(k)) + << endl; + } + cout << endl; +//] [/ neg_binomial_example2] + return 0; +} // int main() + +/* + +Output is: + +negative_binomial distribution - simple example 2 +mean(mynbdist) = 24 +mynbdist.successes() = 8 +mynbdist.success_fraction() = 0.25 +mynbdist.percent success = 25% +cdf(mynbdist, 2.) = 0.000415802001953125 +cdf(mynbdist, 8.) = 0.027129956288263202 +cdf(complement(mynbdist, 8.)) = 0.9728700437117368 +cdf + complement = 1 +Sum pdfs = 0.40025683281803692 , cdf = 0.40025683281803687, difference = 0.25 in epsilon units. + +//[neg_binomial_example2_1 + k pdf cdf + 0, 1.5258789062500000e-005 1.5258789062500003e-005 + 1, 9.1552734375000000e-005 0.00010681152343750000 + 2, 0.00030899047851562522 0.00041580200195312500 + 3, 0.00077247619628906272 0.0011882781982421875 + 4, 0.0015932321548461918 0.0027815103530883789 + 5, 0.0028678178787231476 0.0056493282318115234 + 6, 0.0046602040529251142 0.010309532284736633 + 7, 0.0069903060793876605 0.017299838364124298 + 8, 0.0098301179241389001 0.027129956288263202 + 9, 0.013106823898851871 0.040236780187115073 + 10, 0.016711200471036140 0.056947980658151209 + 11, 0.020509200578089786 0.077457181236241013 + 12, 0.024354675686481652 0.10181185692272265 + 13, 0.028101548869017230 0.12991340579173993 + 14, 0.031614242477644432 0.16152764826938440 + 15, 0.034775666725408917 0.19630331499479325 + 16, 0.037492515688331451 0.23379583068312471 + 17, 0.039697957787645101 0.27349378847076977 + 18, 0.041352039362130305 0.31484582783290005 + 19, 0.042440250924291580 0.35728607875719176 + 20, 0.042970754060845245 0.40025683281803687 + 21, 0.042970754060845225 0.44322758687888220 + 22, 0.042482450037426581 0.48571003691630876 + 23, 0.041558918514873783 0.52726895543118257 + 24, 0.040260202311284021 0.56752915774246648 + 25, 0.038649794218832620 0.60617895196129912 + 26, 0.036791631035234917 0.64297058299653398 + 27, 0.034747651533277427 0.67771823452981139 + 28, 0.032575923312447595 0.71029415784225891 + 29, 0.030329307911589130 0.74062346575384819 + 30, 0.028054609818219924 0.76867807557206813 + 31, 0.025792141284492545 0.79447021685656061 + 32, 0.023575629142856460 0.81804584599941710 + 33, 0.021432390129869489 0.83947823612928651 + 34, 0.019383705779220189 0.85886194190850684 + 35, 0.017445335201298231 0.87630727710980494 + 36, 0.015628112784496322 0.89193538989430121 + 37, 0.013938587078064250 0.90587397697236549 + 38, 0.012379666154859701 0.91825364312722524 + 39, 0.010951243136991251 0.92920488626421649 + 40, 0.0096507830144735539 0.93885566927869002 + 41, 0.0084738582566109364 0.94732952753530097 + 42, 0.0074146259745345548 0.95474415350983555 + 43, 0.0064662435824429246 0.96121039709227851 + 44, 0.0056212231142827853 0.96683162020656122 + 45, 0.0048717266990450708 0.97170334690560634 + 46, 0.0042098073105878630 0.97591315421619418 + 47, 0.0036275999165703964 0.97954075413276465 + 48, 0.0031174686783026818 0.98265822281106729 + 49, 0.0026721160099737302 0.98533033882104104 + 50, 0.0022846591885275322 0.98761499800956853 + 51, 0.0019486798960970148 0.98956367790566557 + 52, 0.0016582516423517923 0.99122192954801736 + 53, 0.0014079495076571762 0.99262987905567457 + 54, 0.0011928461106539983 0.99382272516632852 + 55, 0.0010084971662802015 0.99483122233260868 + 56, 0.00085091948404891532 0.99568214181665760 + 57, 0.00071656377604119542 0.99639870559269883 + 58, 0.00060228420831048650 0.99700098980100937 + 59, 0.00050530624256557675 0.99750629604357488 + 60, 0.00042319397814867202 0.99792949002172360 + 61, 0.00035381791615708398 0.99828330793788067 + 62, 0.00029532382517950324 0.99857863176306016 + 63, 0.00024610318764958566 0.99882473495070978 +//] [neg_binomial_example2_1 end of Quickbook] + +*/ diff --git a/example/normal_misc_examples.cpp b/example/normal_misc_examples.cpp new file mode 100644 index 000000000..04be5b08c --- /dev/null +++ b/example/normal_misc_examples.cpp @@ -0,0 +1,509 @@ +// negative_binomial_example3.cpp + +// Copyright Paul A. Bristow 2007. + +// 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) + +// Example of using normal distribution. + +// Note that this file contains Quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[normal_basic1 +/*` +First we need some includes to access the normal distribution +(and some std output of course). +*/ + +#include // for normal_distribution + using boost::math::normal; // typedef provides default type is double. + +#include + using std::cout; using std::endl; using std::left; using std::showpoint; using std::noshowpoint; +#include + using std::setw; using std::setprecision; +#include + using std::numeric_limits; + +int main() +{ + cout << "Example: Normal distribution, Miscellaneous Applications."; + + try + { + { // Traditional tables and values. +/*`Let's start by printing some traditional tables. +*/ + double step = 1.; // in z + double range = 4; // min and max z = -range to +range. + int precision = 17; // traditional tables are only computed to much lower precision. + + // Construct a standard normal distribution s + normal s; // (default mean = zero, and standard deviation = unity) + cout << "Standard normal distribution, mean = "<< s.mean() + << ", standard deviation = " << s.standard_deviation() << endl; + +/*` First the probability distribution function (pdf). +*/ + cout << "Probability distribution function values" << endl; + cout << " z " " pdf " << endl; + cout.precision(5); + for (double z = -range; z < range + step; z += step) + { + cout << left << setprecision(3) << setw(6) << z << " " + << setprecision(precision) << setw(12) << pdf(s, z) << endl; + } + cout.precision(6); // default + /*`And the area under the normal curve from -[infin] up to z, + the cumulative distribution function (cdf). +*/ + // For a standard normal distribution + cout << "Standard normal mean = "<< s.mean() + << ", standard deviation = " << s.standard_deviation() << endl; + cout << "Integral (area under the curve) from - infinity up to z " << endl; + cout << " z " " cdf " << endl; + for (double z = -range; z < range + step; z += step) + { + cout << left << setprecision(3) << setw(6) << z << " " + << setprecision(precision) << setw(12) << cdf(s, z) << endl; + } + cout.precision(6); // default + +/*`And all this you can do with a nanoscopic amount of work compared to +the team of *human computers* toiling with Milton Abramovitz and Irene Stegen +at the US National Bureau of Standards (now [@http://www.nist.gov NIST]). +Starting in 1938, their "Handbook of Mathematical Functions with Formulas, Graphs and Mathematical Tables", +was eventually published in 1964, and has been reprinted numerous times since. +(A major replacement is planned at [@http://dlmf.nist.gov Digital Library of Mathematical Functions]). + +Pretty-printing a traditional 2-dimensional table is left as an exercise for the student, +but why bother now that the Math Toolkit lets you write +*/ + double z = 2.; + cout << "Area for z = " << z << " is " << cdf(s, z) << endl; // to get the area for z. +/*` +Correspondingly, we can obtain the traditional 'critical' values for significance levels. +For the 95% confidence level, the significance level usually called alpha, +is 0.05 = 1 - 0.95 (for a one-sided test), so we can write +*/ + cout << "95% of area has a z below " << quantile(s, 0.95) << endl; + // 95% of area has a z below 1.64485 +/*`and a two-sided test (a comparison between two levels, rather than a one-sided test) + +*/ + cout << "95% of area has a z between " << quantile(s, 0.975) + << " and " << -quantile(s, 0.975) << endl; + // 95% of area has a z between 1.95996 and -1.95996 +/*` + +First, define a table of significance levels: these are the probabilities +that the true occurrence frequency lies outside the calculated interval. + +It is convenient to have an alpha level for the probability that z lies outside just one standard deviation. +This will not be some nice neat number like 0.05, but we can easily calculate it, +*/ + double alpha1 = cdf(s, -1) * 2; // 0.3173105078629142 + cout << setprecision(17) << "Significance level for z == 1 is " << alpha1 << endl; +/*` + and place in our array of favorite alpha values. +*/ + double alpha[] = {0.3173105078629142, // z for 1 standard deviation. + 0.20, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; +/*` + +Confidence value as % is (1 - alpha) * 100 (so alpha 0.05 == 95% confidence) +that the true occurrence frequency lies *inside* the calculated interval. + +*/ + cout << "level of significance (alpha)" << setprecision(4) << endl; + cout << "2-sided 1 -sided z(alpha) " << endl; + for (int i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + cout << setw(15) << alpha[i] << setw(15) << alpha[i] /2 << setw(10) << quantile(complement(s, alpha[i]/2)) << endl; + // Use quantile(complement(s, alpha[i]/2)) to avoid potential loss of accuracy from quantile(s, 1 - alpha[i]/2) + } + cout << endl; + +/*`Notice the distinction between one-sided (also called one-tailed) +where we are using a > *or* < test (and not both) +and considering the area of the tail (integral) from z up to +[infin], +and a two-sided test where we are using two > *and* < tests, and thus considering two tails, +from -[infin] up to z low and z high up to +[infin]. + +So the 2-sided values alpha[i] are calculated using alpha[i]/2. + +If we consider a simple example of alpha = 0.05, then for a two-sided test, +the lower tail area from -[infin] up to -1.96 is 0.025 (alpha/2) +and the upper tail area from +z up to +1.96 is also 0.025 (alpha/2), +and the area between -1.96 up to 12.96 is alpha = 0.95. +and the sum of the two tails is 0.025 + 0.025 = 0.05, + +*/ +//] [/[normal_basic1] + +//[normal_basic2 + +/*`Armed with the cumulative distribution function, we can easily calculate the +easy to remember proportion of values that lie within 1, 2 and 3 standard deviations from the mean. + +*/ + cout.precision(3); + cout << showpoint << "cdf(s, s.standard_deviation()) = " + << cdf(s, s.standard_deviation()) << endl; // from -infinity to 1 sd + cout << "cdf(complement(s, s.standard_deviation())) = " + << cdf(complement(s, s.standard_deviation())) << endl; + cout << "Fraction 1 standard deviation within either side of mean is " + << 1 - cdf(complement(s, s.standard_deviation())) * 2 << endl; + cout << "Fraction 2 standard deviations within either side of mean is " + << 1 - cdf(complement(s, 2 * s.standard_deviation())) * 2 << endl; + cout << "Fraction 3 standard deviations within either side of mean is " + << 1 - cdf(complement(s, 3 * s.standard_deviation())) * 2 << endl; + +/*` +To a useful precision, the 1, 2 & 3 percentages are 68, 95 and 99.7, +and these are worth memorising as useful 'rules of thumb', as, for example, in +[@http://en.wikipedia.org/wiki/Standard_deviation standard deviation]: + +[pre +Fraction 1 standard deviation within either side of mean is 0.683 +Fraction 2 standard deviations within either side of mean is 0.954 +Fraction 3 standard deviations within either side of mean is 0.997 +] + +We could of course get some really accurate values for these +[@http://en.wikipedia.org/wiki/Confidence_interval confidence intervals] +by using cout.precision(15); + +[pre +Fraction 1 standard deviation within either side of mean is 0.682689492137086 +Fraction 2 standard deviations within either side of mean is 0.954499736103642 +Fraction 3 standard deviations within either side of mean is 0.997300203936740 +] + +But before you get too excited about this impressive precision, +don't forget that the *confidence intervals of the standard deviation* are surprisingly wide, +especially if you have estimated the standard deviation from only a few measurements. +*/ +//] [/[normal_basic2] + + +//[normal_bulbs_example1 +/*` +Examples from K. Krishnamoorthy, Handbook of Statistical Distributions with Applications, +ISBN 1 58488 635 8, page 125... implemented using the Math Toolkit library. + +A few very simple examples are shown here: +*/ +// K. Krishnamoorthy, Handbook of Statistical Distributions with Applications, + // ISBN 1 58488 635 8, page 125, example 10.3.5 +/*`Mean lifespan of 100 W bulbs is 1100 h with standard deviation of 100 h. +Assuming, perhaps with little evidence and much faith, that the distribution is normal, +we construct a normal distribution called /bulbs/ with these values: +*/ + double mean_life = 1100.; + double life_standard_deviation = 100.; + normal bulbs(mean_life, life_standard_deviation); + double expected_life = 1000.; + +/*`The we can use the Cumulative distribution function to predict fractions +(or percentages, if * 100) that will last various lifetimes. +*/ + cout << "Fraction of bulbs that will last at best (<=) " // P(X <= 1000) + << expected_life << " is "<< cdf(bulbs, expected_life) << endl; + cout << "Fraction of bulbs that will last at least (>) " // P(X > 1000) + << expected_life << " is "<< cdf(complement(bulbs, expected_life)) << endl; + double min_life = 900; + double max_life = 1200; + cout << "Fraction of bulbs that will last between " + << min_life << " and " << max_life << " is " + << cdf(bulbs, max_life) // P(X <= 1200) + - cdf(bulbs, min_life) << endl; // P(X <= 900) +/*` +[note Real-life failures are often very ab-normal, +with a significant number that 'dead-on-arrival' or suffer failure very early in their life: +the lifetime of the survivors of 'early mortality' may be well described by the normal distribution.] +*/ +//] [/normal_bulbs_example1 Quickbook end] + } + { + // K. Krishnamoorthy, Handbook of Statistical Distributions with Applications, + // ISBN 1 58488 635 8, page 125, Example 10.3.6 + +//[normal_bulbs_example3 +/*`Weekly demand for 5 lb sacks of onions at a store is normally distributed with mean 140 sacks and standard deviation 10. +*/ + double mean = 140.; // sacks per week. + double standard_deviation = 10; + normal sacks(mean, standard_deviation); + + double stock = 160.; // per week. + cout << "Percentage of weeks overstocked " + << cdf(sacks, stock) * 100. << endl; // P(X <=160) + // Percentage of weeks overstocked 97.7 + +/*`So there will be lots of mouldy onions! +So we should be able to say what stock level will meet demand 95% of the weeks. +*/ + double stock_95 = quantile(sacks, 0.95); + cout << "Store should stock " << int(stock_95) << " sacks to meet 95% of demands." << endl; +/*`And it is easy to estimate how to meet 80% of demand, and waste even less. +*/ + double stock_80 = quantile(sacks, 0.80); + cout << "Store should stock " << int(stock_80) << " sacks to meet 8 out of 10 demands." << endl; +//] [/normal_bulbs_example3 Quickbook end] + } + { // K. Krishnamoorthy, Handbook of Statistical Distributions with Applications, + // ISBN 1 58488 635 8, page 125, Example 10.3.7 + +//[normal_bulbs_example4 + +/*`A machine is set to pack 3 kg of ground beef per pack. +Over a long period of time it is found that the average packed was 3 kg +with a standard deviation of 0.1 kg. +Assuming the packing is normally distributed, +we can find the fraction (or %) of packages that weigh more than 3.1 kg. +*/ + +double mean = 3.; // kg +double standard_deviation = 0.1; // kg +normal packs(mean, standard_deviation); + +double max_weight = 3.1; // kg +cout << "Percentage of packs > " << max_weight << " is " +<< cdf(complement(packs, max_weight)) << endl; // P(X > 3.1) + +double under_weight = 2.9; +cout <<"fraction of packs <= " << under_weight << " with a mean of " << mean + << " is " << cdf(complement(packs, under_weight)) << endl; +// fraction of packs <= 2.9 with a mean of 3 is 0.841345 +// This is 0.84 - more than the target 0.95 +// Want 95% to be over this weight, so what should we set the mean weight to be? +// KK StatCalc says: +double over_mean = 3.0664; +normal xpacks(over_mean, standard_deviation); +cout << "fraction of packs >= " << under_weight +<< " with a mean of " << xpacks.mean() + << " is " << cdf(complement(xpacks, under_weight)) << endl; +// fraction of packs >= 2.9 with a mean of 3.06449 is 0.950005 +double under_fraction = 0.05; // so 95% are above the minimum weight mean - sd = 2.9 +double low_limit = standard_deviation; +double offset = mean - low_limit - quantile(packs, under_fraction); +double nominal_mean = mean + offset; + +normal nominal_packs(nominal_mean, standard_deviation); +cout << "Setting the packer to " << nominal_mean << " will mean that " + << "fraction of packs >= " << under_weight + << " is " << cdf(complement(nominal_packs, under_weight)) << endl; + +/*` +Setting the packer to 3.06449 will mean that fraction of packs >= 2.9 is 0.95. + +Setting the packer to 3.13263 will mean that fraction of packs >= 2.9 is 0.99, +but will more than double the mean loss from 0.0644 to 0.133. + +Alternatively, we could invest in a better (more precise) packer with a lower standard deviation. + +To estimate how much better (how much smaller standard deviation) it would have to be, +we need to get the 5% quantile to be located at the under_weight limit, 2.9 +*/ +double p = 0.05; // wanted p th quantile. +cout << "Quantile of " << p << " = " << quantile(packs, p) + << ", mean = " << packs.mean() << ", sd = " << packs.standard_deviation() << endl; // +/*` +Quantile of 0.05 = 2.83551, mean = 3, sd = 0.1 + +With the current packer (mean = 3, sd = 0.1), the 5% quantile is at 2.8551 kg, +a little below our target of 2.9 kg. +So we know that the standard deviation is going to have to be smaller. + +Let's start by guessing that it (now 0.1) needs to be halved, to a standard deviation of 0.05 +*/ +normal pack05(mean, 0.05); +cout << "Quantile of " << p << " = " << quantile(pack05, p) + << ", mean = " << pack05.mean() << ", sd = " << pack05.standard_deviation() << endl; + +cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean + << " and standard deviation of " << pack05.standard_deviation() + << " is " << cdf(complement(pack05, under_weight)) << endl; +// +/*` +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.05 is 0.9772 + +So 0.05 was quite a good guess, but we are a little over the 2.9 target, +so the standard deviation could be a tiny bit more. So we could do some +more guessing to get closer, say by increasing to 0.06 +*/ + +normal pack06(mean, 0.06); +cout << "Quantile of " << p << " = " << quantile(pack06, p) + << ", mean = " << pack06.mean() << ", sd = " << pack06.standard_deviation() << endl; + +cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean + << " and standard deviation of " << pack06.standard_deviation() + << " is " << cdf(complement(pack06, under_weight)) << endl; +/*` +Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.06 is 0.9522 + +Now we are getting really close, but to do the job properly, +we could use root finding method, for example the tools provided, and used elsewhere, +in the Math Toolkit, see +[link math_toolkit.toolkit.internals1.roots2 Root Finding Without Derivatives]. + +But in this normal distribution case, we could be even smarter and make a direct calculation. +*/ + +normal s; // For standard normal distribution, +double sd = 0.1; +double x = 2.9; // Our required limit. +// then probability p = N((x - mean) / sd) +// So if we want to find the standard deviation that would be required to meet this limit, +// so that the p th quantile is located at x, +// in this case the 0.95 (95%) quantile at 2.9 kg pack weight, when the mean is 3 kg. + +double prob = pdf(s, (x - mean) / sd); +double qp = quantile(s, 0.95); +cout << "prob = " << prob << ", quantile(p) " << qp << endl; // p = 0.241971, quantile(p) 1.64485 +// Rearranging, we can directly calculate the required standard deviation: +double sd95 = abs((x - mean)) / qp; + +cout << "If we want the "<< p << " th quantile to be located at " + << x << ", would need a standard deviation of " << sd95 << endl; + +normal pack95(mean, sd95); // Distribution of the 'ideal better' packer. +cout <<"Fraction of packs >= " << under_weight << " with a mean of " << mean + << " and standard deviation of " << pack95.standard_deviation() + << " is " << cdf(complement(pack95, under_weight)) << endl; + +// Fraction of packs >= 2.9 with a mean of 3 and standard deviation of 0.0608 is 0.95 + +/*`Notice that these two deceptively simple questions +(do we over-fill or measure better) are actually very common. +The weight of beef might be replaced by a measurement of more or less anything. +But the calculations rely on the accuracy of the standard deviation - something +that is almost always less good than we might wish, +especially if based on a few measurements. +*/ + +//] [/normal_bulbs_example4 Quickbook end] + } + + { // K. Krishnamoorthy, Handbook of Statistical Distributions with Applications, + // ISBN 1 58488 635 8, page 125, example 10.3.8 +//[normal_bulbs_example5 +/*`A bolt is usable if between 3.9 and 4.1 long. +From a large batch of bolts, a sample of 50 show a +mean length of 3.95 with standard deviation 0.1. +Assuming a normal distribution, what proportion is usable? +The true sample mean is unknown, +but we can use the sample mean and standard deviation to find approximate solutions. +*/ + + normal bolts(3.95, 0.1); + double top = 4.1; + double bottom = 3.9; + +cout << "Fraction long enough [ P(X <= " << top << ") ] is " << cdf(bolts, top) << endl; +cout << "Fraction too short [ P(X <= " << bottom << ") ] is " << cdf(bolts, bottom) << endl; +cout << "Fraction OK -between " << bottom << " and " << top + << "[ P(X <= " << top << ") - P(X<= " << bottom << " ) ] is " + << cdf(bolts, top) - cdf(bolts, bottom) << endl; + +cout << "Fraction too long [ P(X > " << top << ") ] is " + << cdf(complement(bolts, top)) << endl; + +cout << "95% of bolts are shorter than " << quantile(bolts, 0.95) << endl; + +//] [/normal_bulbs_example5 Quickbook end] + } + } + catch(const std::exception& e) + { // Always useful to include try & catch blocks because default policies + // are to throw exceptions on arguments that cause errors like underflow, overflow. + // Lacking try & catch blocks, the program will abort without a message below, + // which may give some helpful clues as to the cause of the exception. + std::cout << + "\n""Message from thrown exception was:\n " << e.what() << std::endl; + } + return 0; +} // int main() + + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\normal_misc_examples.exe" +Example: Normal distribution, Miscellaneous Applications.Standard normal distribution, mean = 0, standard deviation = 1 +Probability distribution function values + z pdf +-4 0.00013383022576488537 +-3 0.0044318484119380075 +-2 0.053990966513188063 +-1 0.24197072451914337 +0 0.3989422804014327 +1 0.24197072451914337 +2 0.053990966513188063 +3 0.0044318484119380075 +4 0.00013383022576488537 +Standard normal mean = 0, standard deviation = 1 +Integral (area under the curve) from - infinity up to z + z cdf +-4 3.1671241833119979e-005 +-3 0.0013498980316300959 +-2 0.022750131948179219 +-1 0.1586552539314571 +0 0.5 +1 0.84134474606854293 +2 0.97724986805182079 +3 0.9986501019683699 +4 0.99996832875816688 +Area for z = 2 is 0.97725 +95% of area has a z below 1.64485 +95% of area has a z between 1.95996 and -1.95996 +Significance level for z == 1 is 0.3173105078629142 +level of significance (alpha) +2-sided 1 -sided z(alpha) +0.3173 0.1587 1 +0.2 0.1 1.282 +0.1 0.05 1.645 +0.05 0.025 1.96 +0.01 0.005 2.576 +0.001 0.0005 3.291 +0.0001 5e-005 3.891 +1e-005 5e-006 4.417 +cdf(s, s.standard_deviation()) = 0.841 +cdf(complement(s, s.standard_deviation())) = 0.159 +Fraction 1 standard deviation within either side of mean is 0.683 +Fraction 2 standard deviations within either side of mean is 0.954 +Fraction 3 standard deviations within either side of mean is 0.997 +Fraction of bulbs that will last at best (<=) 1.00e+003 is 0.159 +Fraction of bulbs that will last at least (>) 1.00e+003 is 0.841 +Fraction of bulbs that will last between 900. and 1.20e+003 is 0.819 +Percentage of weeks overstocked 97.7 +Store should stock 156 sacks to meet 95% of demands. +Store should stock 148 sacks to meet 8 out of 10 demands. +Percentage of packs > 3.10 is 0.159 +fraction of packs <= 2.90 with a mean of 3.00 is 0.841 +fraction of packs >= 2.90 with a mean of 3.07 is 0.952 +Setting the packer to 3.06 will mean that fraction of packs >= 2.90 is 0.950 +Quantile of 0.0500 = 2.84, mean = 3.00, sd = 0.100 +Quantile of 0.0500 = 2.92, mean = 3.00, sd = 0.0500 +Fraction of packs >= 2.90 with a mean of 3.00 and standard deviation of 0.0500 is 0.977 +Quantile of 0.0500 = 2.90, mean = 3.00, sd = 0.0600 +Fraction of packs >= 2.90 with a mean of 3.00 and standard deviation of 0.0600 is 0.952 +prob = 0.242, quantile(p) 1.64 +If we want the 0.0500 th quantile to be located at 2.90, would need a standard deviation of 0.0608 +Fraction of packs >= 2.90 with a mean of 3.00 and standard deviation of 0.0608 is 0.950 +Fraction long enough [ P(X <= 4.10) ] is 0.933 +Fraction too short [ P(X <= 3.90) ] is 0.309 +Fraction OK -between 3.90 and 4.10[ P(X <= 4.10) - P(X<= 3.90 ) ] is 0.625 +Fraction too long [ P(X > 4.10) ] is 0.0668 +95% of bolts are shorter than 4.11 + +*/ + + + diff --git a/example/policy_eg_1.cpp b/example/policy_eg_1.cpp new file mode 100644 index 000000000..4950517c9 --- /dev/null +++ b/example/policy_eg_1.cpp @@ -0,0 +1,35 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +//[policy_eg_1 + +#include +// +// Define the policy to use: +// +using namespace boost::math::policies; +typedef policy< + domain_error, + pole_error, + overflow_error, + evaluation_error +> c_policy; +// +// Now use the policy when calling tgamma: +// +int main() +{ + errno = 0; + std::cout << "Result of tgamma(30000) is: " + << boost::math::tgamma(30000, c_policy()) << std::endl; + std::cout << "errno = " << errno << std::endl; + std::cout << "Result of tgamma(-10) is: " + << boost::math::tgamma(-10, c_policy()) << std::endl; + std::cout << "errno = " << errno << std::endl; +} + +//] \ No newline at end of file diff --git a/example/policy_eg_10.cpp b/example/policy_eg_10.cpp new file mode 100644 index 000000000..0a352020c --- /dev/null +++ b/example/policy_eg_10.cpp @@ -0,0 +1,171 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_eg_10 + +/*` + +To understand how the rounding policies for +the discrete distributions can be used, we'll +use the 50-sample binomial distribution with a +success fraction of 0.5 once again, and calculate +all the possible quantiles at 0.05 and 0.95. + +Begin by including the needed headers: + +*/ + +#include +#include + +/*` + +Next we'll bring the needed declarations into scope, and +define distribution types for all the available rounding policies: + +*/ + +using namespace boost::math::policies; +using namespace boost::math; + +typedef binomial_distribution< + double, + policy > > + binom_round_outwards; + +typedef binomial_distribution< + double, + policy > > + binom_round_inwards; + +typedef binomial_distribution< + double, + policy > > + binom_round_down; + +typedef binomial_distribution< + double, + policy > > + binom_round_up; + +typedef binomial_distribution< + double, + policy > > + binom_round_nearest; + +typedef binomial_distribution< + double, + policy > > + binom_real_quantile; + +/*` + +Now let's set to work calling those quantiles: + +*/ + +int main() +{ + std::cout << + "Testing rounding policies for a 50 sample binomial distribution,\n" + "with a success fraction of 0.5.\n\n" + "Lower quantiles are calculated at p = 0.05\n\n" + "Upper quantiles at p = 0.95.\n\n"; + + std::cout << std::setw(25) << std::right + << "Policy"<< std::setw(18) << std::right + << "Lower Quantile" << std::setw(18) << std::right + << "Upper Quantile" << std::endl; + + // Test integer_round_outwards: + std::cout << std::setw(25) << std::right + << "integer_round_outwards" + << std::setw(18) << std::right + << quantile(binom_round_outwards(50, 0.5), 0.05) + << std::setw(18) << std::right + << quantile(binom_round_outwards(50, 0.5), 0.95) + << std::endl; + + // Test integer_round_inwards: + std::cout << std::setw(25) << std::right + << "integer_round_inwards" + << std::setw(18) << std::right + << quantile(binom_round_inwards(50, 0.5), 0.05) + << std::setw(18) << std::right + << quantile(binom_round_inwards(50, 0.5), 0.95) + << std::endl; + + // Test integer_round_down: + std::cout << std::setw(25) << std::right + << "integer_round_down" + << std::setw(18) << std::right + << quantile(binom_round_down(50, 0.5), 0.05) + << std::setw(18) << std::right + << quantile(binom_round_down(50, 0.5), 0.95) + << std::endl; + + // Test integer_round_up: + std::cout << std::setw(25) << std::right + << "integer_round_up" + << std::setw(18) << std::right + << quantile(binom_round_up(50, 0.5), 0.05) + << std::setw(18) << std::right + << quantile(binom_round_up(50, 0.5), 0.95) + << std::endl; + + // Test integer_round_nearest: + std::cout << std::setw(25) << std::right + << "integer_round_nearest" + << std::setw(18) << std::right + << quantile(binom_round_nearest(50, 0.5), 0.05) + << std::setw(18) << std::right + << quantile(binom_round_nearest(50, 0.5), 0.95) + << std::endl; + + // Test real: + std::cout << std::setw(25) << std::right + << "real" + << std::setw(18) << std::right + << quantile(binom_real_quantile(50, 0.5), 0.05) + << std::setw(18) << std::right + << quantile(binom_real_quantile(50, 0.5), 0.95) + << std::endl; +} + +/*` + +Which produces the program output: + +[pre +Testing rounding policies for a 50 sample binomial distribution, +with a success fraction of 0.5. + +Lower quantiles are calculated at p = 0.05 + +Upper quantiles at p = 0.95. + +Testing rounding policies for a 50 sample binomial distribution, +with a success fraction of 0.5. + +Lower quantiles are calculated at p = 0.05 + +Upper quantiles at p = 0.95. + + Policy Lower Quantile Upper Quantile + integer_round_outwards 18 31 + integer_round_inwards 19 30 + integer_round_down 18 30 + integer_round_up 19 31 + integer_round_nearest 19 30 + real 18.701 30.299 +] + +*/ + +//] ends quickbook import + diff --git a/example/policy_eg_2.cpp b/example/policy_eg_2.cpp new file mode 100644 index 000000000..1f9988656 --- /dev/null +++ b/example/policy_eg_2.cpp @@ -0,0 +1,44 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include + +//[policy_eg_2 + +#include + +int main() +{ + using namespace boost::math::policies; + errno = 0; + std::cout << "Result of tgamma(30000) is: " + << boost::math::tgamma( + 30000, + make_policy( + domain_error(), + pole_error(), + overflow_error(), + evaluation_error() + ) + ) << std::endl; + // Check errno was set: + std::cout << "errno = " << errno << std::endl; + // and again with evaluation at a pole: + std::cout << "Result of tgamma(-10) is: " + << boost::math::tgamma( + -10, + make_policy( + domain_error(), + pole_error(), + overflow_error(), + evaluation_error() + ) + ) << std::endl; + // Check errno was set: + std::cout << "errno = " << errno << std::endl; +} + +//] + diff --git a/example/policy_eg_3.cpp b/example/policy_eg_3.cpp new file mode 100644 index 000000000..946f6a848 --- /dev/null +++ b/example/policy_eg_3.cpp @@ -0,0 +1,42 @@ +// Copyright John Maddock 2007. +// Copyright Paul A. Bristow 2007. + +// 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) + +#ifdef _MSC_VER +# pragma warning (disable : 4305) // 'initializing' : truncation from 'long double' to 'const eval_type' +# pragma warning (disable : 4244) // conversion from 'long double' to 'const eval_type' +#endif + +#include + +//[policy_eg_3 + +#include + +// +// Begin by defining a policy type, that gives the +// behaviour we want: +// +using namespace boost::math::policies; +typedef policy< + promote_float, + discrete_quantile +> mypolicy; +// +// Then define a distribution that uses it: +// +typedef boost::math::binomial_distribution mybinom; +// +// And now use it to get the quantile: +// +int main() +{ + std::cout << "quantile is: " << + quantile(mybinom(200, 0.25), 0.05) << std::endl; +} + +//] + diff --git a/example/policy_eg_4.cpp b/example/policy_eg_4.cpp new file mode 100644 index 000000000..fbb90fb4a --- /dev/null +++ b/example/policy_eg_4.cpp @@ -0,0 +1,102 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#include + +//[policy_eg_4 + +/*` +Suppose we want `C::foo()` to behave in a C-compatible way and set +`::errno` on error rather than throwing any exceptions. + +We'll begin by including the needed header: +*/ + +#include + +/*` + +Open up the "C" namespace that we'll use for our functions, and +define the policy type we want: in this case one that sets +::errno rather than throwing exceptions. Any policies we don't +specify here will inherit the defaults: + +*/ + +namespace C{ + +using namespace boost::math::policies; + +typedef policy< + domain_error, + pole_error, + overflow_error, + evaluation_error +> c_policy; + +/*` + +All we need do now is invoke the BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS +macro passing our policy type as the single argument: + +*/ + +BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy) + +} // close namespace C + +/*` + +We now have a set of forwarding functions defined in namespace C +that all look something like this: + +`` +template +inline typename boost::math::tools::promote_args::type + tgamma(RT z) +{ + return boost::math::tgamma(z, c_policy()); +} +`` + +So that when we call `C::tgamma(z)` we really end up calling +`boost::math::tgamma(z, C::c_policy())`: + +*/ + + +int main() +{ + errno = 0; + std::cout << "Result of tgamma(30000) is: " + << C::tgamma(30000) << std::endl; + std::cout << "errno = " << errno << std::endl; + std::cout << "Result of tgamma(-10) is: " + << C::tgamma(-10) << std::endl; + std::cout << "errno = " << errno << std::endl; +} + +/*` + +Which outputs: + +[pre +Result of C::tgamma(30000) is: 1.#INF +errno = 34 +Result of C::tgamma(-10) is: 1.#QNAN +errno = 33 +] + +This mechanism is particularly useful when we want to define a +project-wide policy, and don't want to modify the Boost source +or set - possibly fragile and easy to forget - project wide +build macros. + +*/ +//] + diff --git a/example/policy_eg_5.cpp b/example/policy_eg_5.cpp new file mode 100644 index 000000000..5cdbf2203 --- /dev/null +++ b/example/policy_eg_5.cpp @@ -0,0 +1,41 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#include + +//[policy_eg_5 + +#include + +namespace { + +using namespace boost::math::policies; + +typedef policy< + domain_error, + pole_error, + overflow_error, + evaluation_error +> c_policy; + +BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(c_policy) + +} // close unnamed namespace + +int main() +{ + errno = 0; + std::cout << "Result of tgamma(30000) is: " + << tgamma(30000) << std::endl; + std::cout << "errno = " << errno << std::endl; + std::cout << "Result of tgamma(-10) is: " + << tgamma(-10) << std::endl; + std::cout << "errno = " << errno << std::endl; +} + +//] diff --git a/example/policy_eg_6.cpp b/example/policy_eg_6.cpp new file mode 100644 index 000000000..d5acfae64 --- /dev/null +++ b/example/policy_eg_6.cpp @@ -0,0 +1,119 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#include + +//[policy_eg_6 + +/*` +Suppose we want a set of distributions to behave as follows: + +* Return infinity on overflow, rather than throwing an exception. +* Don't perform any promotion from double to long double internally. +* Return the closest integer result from the quantiles of discrete +distributions. + +We'll begin by including the needed header: +*/ + +#include + +/*` + +Open up an appropriate namespace for our distributions, and +define the policy type we want. Any policies we don't +specify here will inherit the defaults: + +*/ + +namespace my_distributions{ + +using namespace boost::math::policies; + +typedef policy< + // return infinity and set errno rather than throw: + overflow_error, + // Don't promote double -> long double internally: + promote_double, + // Return the closest integer result for discrete quantiles: + discrete_quantile +> my_policy; + +/*` + +All we need do now is invoke the BOOST_MATH_DECLARE_DISTRIBUTIONS +macro passing the floating point and policy types as arguments: + +*/ + +BOOST_MATH_DECLARE_DISTRIBUTIONS(double, my_policy) + +} // close namespace my_namespace + +/*` + +We now have a set of typedefs defined in namespace my_namespace +that all look something like this: + +`` +typedef boost::math::normal_distribution normal; +typedef boost::math::cauchy_distribution cauchy; +typedef boost::math::gamma_distribution gamma; +// etc +`` + +So that when we use my_namespace::normal we really end up using +`boost::math::normal_distribution`: + +*/ + + +int main() +{ + // + // Start with something we know will overflow: + // + my_distributions::normal norm(10, 2); + errno = 0; + std::cout << "Result of quantile(norm, 0) is: " + << quantile(norm, 0) << std::endl; + std::cout << "errno = " << errno << std::endl; + errno = 0; + std::cout << "Result of quantile(norm, 1) is: " + << quantile(norm, 1) << std::endl; + std::cout << "errno = " << errno << std::endl; + // + // Now try a discrete distribution: + // + my_distributions::binomial binom(20, 0.25); + std::cout << "Result of quantile(binom, 0.05) is: " + << quantile(binom, 0.05) << std::endl; + std::cout << "Result of quantile(complement(binom, 0.05)) is: " + << quantile(complement(binom, 0.05)) << std::endl; +} + +/*` + +Which outputs: + +[pre +Result of quantile(norm, 0) is: -1.#INF +errno = 34 +Result of quantile(norm, 1) is: 1.#INF +errno = 34 +Result of quantile(binom, 0.05) is: 1 +Result of quantile(complement(binom, 0.05)) is: 8 +] + +This mechanism is particularly useful when we want to define a +project-wide policy, and don't want to modify the Boost source +or set - possibly fragile and easy to forget - project wide +build macros. + +*/ //] ends quickbook imported section + diff --git a/example/policy_eg_7.cpp b/example/policy_eg_7.cpp new file mode 100644 index 000000000..9f0cbd3e9 --- /dev/null +++ b/example/policy_eg_7.cpp @@ -0,0 +1,57 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#include + +//[policy_eg_7 + +#include + +namespace { + +using namespace boost::math::policies; + +typedef policy< + // return infinity and set errno rather than throw: + overflow_error, + // Don't promote double -> long double internally: + promote_double, + // Return the closest integer result for discrete quantiles: + discrete_quantile +> my_policy; + +BOOST_MATH_DECLARE_DISTRIBUTIONS(double, my_policy) + +} // close namespace my_namespace + +int main() +{ + // + // Start with something we know will overflow: + // + normal norm(10, 2); + errno = 0; + std::cout << "Result of quantile(norm, 0) is: " + << quantile(norm, 0) << std::endl; + std::cout << "errno = " << errno << std::endl; + errno = 0; + std::cout << "Result of quantile(norm, 1) is: " + << quantile(norm, 1) << std::endl; + std::cout << "errno = " << errno << std::endl; + // + // Now try a discrete distribution: + // + binomial binom(20, 0.25); + std::cout << "Result of quantile(binom, 0.05) is: " + << quantile(binom, 0.05) << std::endl; + std::cout << "Result of quantile(complement(binom, 0.05)) is: " + << quantile(complement(binom, 0.05)) << std::endl; +} + +//] ends quickbook imported section + diff --git a/example/policy_eg_8.cpp b/example/policy_eg_8.cpp new file mode 100644 index 000000000..6b9bc5d6e --- /dev/null +++ b/example/policy_eg_8.cpp @@ -0,0 +1,135 @@ +// Copyright John Maddock 2007. +// Copyright Paul a. Bristow 2007 +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#ifdef _MSC_VER +# pragma warning (disable : 4100) // 'unreferenced formal parameter +#endif + + +#include + +//[policy_eg_8 + +/*` + +Suppose we want our own user-defined error handlers rather than the +any of the default ones supplied by the library to be used. If +we set the policy for a specific type of error to `user_error` +then the library will call a user-supplied error handler. +These are forward declared, but not defined in +boost/math/policies/error_handling.hpp like this: + + namespace boost{ namespace math{ namespace policy{ + + template + T user_domain_error(const char* function, const char* message, const T& val); + template + T user_pole_error(const char* function, const char* message, const T& val); + template + T user_overflow_error(const char* function, const char* message, const T& val); + template + T user_underflow_error(const char* function, const char* message, const T& val); + template + T user_denorm_error(const char* function, const char* message, const T& val); + template + T user_evaluation_error(const char* function, const char* message, const T& val); + + }}} // namespaces + +So out first job is to include the header we want to use, and then +provide definitions for the user-defined error handlers we want to use: + +*/ + +#include +#include + +namespace boost{ namespace math{ namespace policies{ + +template +T user_domain_error(const char* function, const char* message, const T& val) +{ + std::cerr << "Domain Error." << std::endl; + return std::numeric_limits::quiet_NaN(); +} + +template +T user_pole_error(const char* function, const char* message, const T& val) +{ + std::cerr << "Pole Error." << std::endl; + return std::numeric_limits::quiet_NaN(); +} + + +}}} // namespaces + + +/*` + +Now we'll need to define a suitable policy that will call these handlers, +and define some forwarding functions that make use of the policy: + +*/ + +namespace{ + +using namespace boost::math::policies; + +typedef policy< + domain_error, + pole_error +> user_error_policy; + +BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(user_error_policy) + +} // close unnamed namespace + +/*` + +We now have a set of forwarding functions defined in an unnamed namespace +that all look something like this: + +`` +template +inline typename boost::math::tools::promote_args::type + tgamma(RT z) +{ + return boost::math::tgamma(z, user_error_policy()); +} +`` + +So that when we call `tgamma(z)` we really end up calling +`boost::math::tgamma(z, user_error_policy())`, and any +errors will get directed to our own error handlers: + +*/ + + +int main() +{ + std::cout << "Result of erf_inv(-10) is: " + << erf_inv(-10) << std::endl; + std::cout << "Result of tgamma(-10) is: " + << tgamma(-10) << std::endl; +} + +/*` + +Which outputs: + +[pre +Domain Error. +Result of erf_inv(-10) is: 1.#QNAN +Pole Error. +Result of tgamma(-10) is: 1.#QNAN +] +*/ + +//] + diff --git a/example/policy_eg_9.cpp b/example/policy_eg_9.cpp new file mode 100644 index 000000000..2ac39c497 --- /dev/null +++ b/example/policy_eg_9.cpp @@ -0,0 +1,316 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#include + +//[policy_eg_9 + +/*` + +The previous example was all well and good, but the custom error handlers +didn't really do much of any use. In this example we'll implement all +the custom handlers and show how the information provided to them can be +used to generate nice formatted error messages. + +Each error handler has the general form: + + template + T user_``['error_type]``( + const char* function, + const char* message, + const T& val); + +and accepts three arguments: + +[variablelist +[[const char* function] + [The name of the function that raised the error, this string + contains one or more %1% format specifiers that should be + replaced by the name of type T.]] +[[const char* message] + [A message associated with the error, normally this + contains a %1% format specifier that should be replaced with + the value of ['value]: however note that overflow and underflow messages + do not contain this %1% specifier (since the value of ['value] is + immaterial in these cases).]] +[[const T& value] + [The value that caused the error: either an argument to the function + if this is a domain or pole error, the tentative result + if this is a denorm or evaluation error, or zero or infinity for + underflow or overflow errors.]] +] + +As before we'll include the headers we need first: + +*/ + +#include +#include + +/*` + +Next we'll implement the error handlers for each type of error, +starting with domain errors: + +*/ + +namespace boost{ namespace math{ namespace policies{ + +template +T user_domain_error(const char* function, const char* message, const T& val) +{ + /*` + We'll begin with a bit of defensive programming: + */ + if(function == 0) + function = "Unknown function with arguments of type %1%"; + if(message == 0) + message = "Cause unknown with bad argument %1%"; + /*` + Next we'll format the name of the function with the name of type T: + */ + std::string msg("Error in function "); + msg += (boost::format(function) % typeid(T).name()).str(); + /*` + Then likewise format the error message with the value of parameter /val/, + making sure we output all the digits of /val/: + */ + msg += ": \n"; + int prec = 2 + (std::numeric_limits::digits * 30103UL) / 100000UL; + msg += (boost::format(message) % boost::io::group(std::setprecision(prec), val)).str(); + /*` + Now we just have to do something with the message, we could throw an + exception, but for the purposes of this example we'll just dump the message + to std::cerr: + */ + std::cerr << msg << std::endl; + /*` + Finally the only sensible value we can return from a domain error is a NaN: + */ + return std::numeric_limits::quiet_NaN(); +} + +/*` +Pole errors are essentially a special case of domain errors, +so in this example we'll just return the result of a domain error: +*/ + +template +T user_pole_error(const char* function, const char* message, const T& val) +{ + return user_domain_error(function, message, val); +} + +/*` +Overflow errors are very similar to domain errors, except that there's +no %1% format specifier in the /message/ parameter: +*/ +template +T user_overflow_error(const char* function, const char* message, const T& val) +{ + if(function == 0) + function = "Unknown function with arguments of type %1%"; + if(message == 0) + message = "Result of function is too large to represent"; + + std::string msg("Error in function "); + msg += (boost::format(function) % typeid(T).name()).str(); + + msg += ": \n"; + msg += message; + + std::cerr << msg << std::endl; + + // Value passed to the function is an infinity, just return it: + return val; +} + +/*` +Underflow errors are much the same as overflow: +*/ + +template +T user_underflow_error(const char* function, const char* message, const T& val) +{ + if(function == 0) + function = "Unknown function with arguments of type %1%"; + if(message == 0) + message = "Result of function is too small to represent"; + + std::string msg("Error in function "); + msg += (boost::format(function) % typeid(T).name()).str(); + + msg += ": \n"; + msg += message; + + std::cerr << msg << std::endl; + + // Value passed to the function is zero, just return it: + return val; +} + +/*` +Denormalised results are much the same as underflow: +*/ + +template +T user_denorm_error(const char* function, const char* message, const T& val) +{ + if(function == 0) + function = "Unknown function with arguments of type %1%"; + if(message == 0) + message = "Result of function is denormalised"; + + std::string msg("Error in function "); + msg += (boost::format(function) % typeid(T).name()).str(); + + msg += ": \n"; + msg += message; + + std::cerr << msg << std::endl; + + // Value passed to the function is denormalised, just return it: + return val; +} + +/*` +Which leaves us with evaluation errors, these occur when an internal +error occurs that prevents the function being fully evaluated. +The parameter /val/ contains the closest approximation to the result +found so far: +*/ + +template +T user_evaluation_error(const char* function, const char* message, const T& val) +{ + if(function == 0) + function = "Unknown function with arguments of type %1%"; + if(message == 0) + message = "An internal evaluation error occured with " + "the best value calculated so far of %1%"; + + std::string msg("Error in function "); + msg += (boost::format(function) % typeid(T).name()).str(); + + msg += ": \n"; + int prec = 2 + (std::numeric_limits::digits * 30103UL) / 100000UL; + msg += (boost::format(message) % boost::io::group(std::setprecision(prec), val)).str(); + + std::cerr << msg << std::endl; + + // What do we return here? This is generally a fatal error, + // that should never occur, just return a NaN for the purposes + // of the example: + return std::numeric_limits::quiet_NaN(); +} + +}}} // namespaces + + +/*` + +Now we'll need to define a suitable policy that will call these handlers, +and define some forwarding functions that make use of the policy: + +*/ + +namespace{ + +using namespace boost::math::policies; + +typedef policy< + domain_error, + pole_error, + overflow_error, + underflow_error, + denorm_error, + evaluation_error +> user_error_policy; + +BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(user_error_policy) + +} // close unnamed namespace + +/*` + +We now have a set of forwarding functions defined in an unnamed namespace +that all look something like this: + +`` +template +inline typename boost::math::tools::promote_args::type + tgamma(RT z) +{ + return boost::math::tgamma(z, user_error_policy()); +} +`` + +So that when we call `tgamma(z)` we really end up calling +`boost::math::tgamma(z, user_error_policy())`, and any +errors will get directed to our own error handlers: + +*/ + + +int main() +{ + // Raise a domain error: + std::cout << "Result of erf_inv(-10) is: " + << erf_inv(-10) << std::endl << std::endl; + // Raise a pole error: + std::cout << "Result of tgamma(-10) is: " + << tgamma(-10) << std::endl << std::endl; + // Raise an overflow error: + std::cout << "Result of tgamma(3000) is: " + << tgamma(3000) << std::endl << std::endl; + // Raise an underflow error: + std::cout << "Result of tgamma(-190.5) is: " + << tgamma(-190.5) << std::endl << std::endl; + // Unfortunately we can't predicably raise a denormalised + // result, nor can we raise an evaluation error in this example + // since these should never really occur! +} + +/*` + +Which outputs: + +[pre +Error in function boost::math::erf_inv(double, double): +Argument outside range \[-1, 1\] in inverse erf function (got p=-10). +Result of erf_inv(-10) is: 1.#QNAN + +Error in function boost::math::tgamma(long double): +Evaluation of tgamma at a negative integer -10. +Result of tgamma(-10) is: 1.#QNAN + +Error in function boost::math::tgamma(long double): +Result of tgamma is too large to represent. +Error in function boost::math::tgamma(double): +Result of function is too large to represent +Result of tgamma(3000) is: 1.#INF + +Error in function boost::math::tgamma(long double): +Result of tgamma is too large to represent. +Error in function boost::math::tgamma(long double): +Result of tgamma is too small to represent. +Result of tgamma(-190.5) is: 0 +] + +Notice how some of the calls result in an error handler being called more +than once, or for more than one handler to be called: this is an artefact +of the fact that many functions are implemented in terms of one or more +sub-routines each of which may have it's own error handling. For example +`tgamma(-190.5)` is implemented in terms of `tgamma(190.5)` - which overflows - +the reflection formula for `tgamma` then notices that it's dividing by +infinity and underflows. + +*/ + +//] + diff --git a/example/policy_ref_snip1.cpp b/example/policy_ref_snip1.cpp new file mode 100644 index 000000000..89542dd09 --- /dev/null +++ b/example/policy_ref_snip1.cpp @@ -0,0 +1,44 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +double some_value = 0; + +//[policy_ref_snip1 + +#include + +using namespace boost::math::policies; +using namespace boost::math; + +// Define a policy: +typedef policy< + domain_error, + pole_error, + overflow_error, + policies::evaluation_error + > my_policy; + +// call the function: +double t1 = tgamma(some_value, my_policy()); + +// Alternatively we could use make_policy and define everything at the call site: +double t2 = tgamma(some_value, make_policy( + domain_error(), + pole_error(), + overflow_error(), + policies::evaluation_error() + )); + +//] + +#include + +int main() +{ + std::cout << t1 << " " << t2 << std::endl; +} diff --git a/example/policy_ref_snip10.cpp b/example/policy_ref_snip10.cpp new file mode 100644 index 000000000..18c5a6152 --- /dev/null +++ b/example/policy_ref_snip10.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip10 + +#include + +using namespace boost::math; +using namespace boost::math::policies; + +double t = tgamma(12, policy >()); + +//] + +#include + +int main() +{ + std::cout << t << std::endl; +} diff --git a/example/policy_ref_snip11.cpp b/example/policy_ref_snip11.cpp new file mode 100644 index 000000000..5a4b4e665 --- /dev/null +++ b/example/policy_ref_snip11.cpp @@ -0,0 +1,27 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip11 + +#include + +using namespace boost::math; +using namespace boost::math::policies; + +double q = quantile( + normal_distribution > >(), + 0.05); + +//] + +#include + +int main() +{ + std::cout << q << std::endl; +} diff --git a/example/policy_ref_snip12.cpp b/example/policy_ref_snip12.cpp new file mode 100644 index 000000000..7b764db75 --- /dev/null +++ b/example/policy_ref_snip12.cpp @@ -0,0 +1,38 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip12 + +#include + +namespace myspace{ + +using namespace boost::math::policies; + +// Define a policy that does not throw on overflow: +typedef policy > my_policy; + +// Define the special functions in this scope to use the policy: +BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(my_policy) + +} + +// +// Now we can use myspace::tgamma etc. +// They will automatically use "my_policy": +// +double t = myspace::tgamma(30.0); // will not throw on overflow + +//] + +#include + +int main() +{ + std::cout << t << std::endl; +} diff --git a/example/policy_ref_snip13.cpp b/example/policy_ref_snip13.cpp new file mode 100644 index 000000000..de294a799 --- /dev/null +++ b/example/policy_ref_snip13.cpp @@ -0,0 +1,54 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#ifdef _MSC_VER +#pragma warning (disable : 4189) // 'd' : local variable is initialized but not referenced +#endif + +//[policy_ref_snip13 + +#include + +namespace myspace{ + +using namespace boost::math::policies; + +// Define a policy to use, in this case we want all the distribution +// accessor functions to compile, even if they are mathematically +// undefined: +typedef policy > my_policy; + +BOOST_MATH_DECLARE_DISTRIBUTIONS(double, my_policy) + +} + +// Now we can use myspace::cauchy etc, which will use policy +// myspace::mypolicy: +// +// This compiles but raises a domain error at runtime: +// +void test_cauchy() +{ + try + { + double d = mean(myspace::cauchy()); + } + catch(const std::domain_error& e) + { + std::cout << e.what() << std::endl; + } +} + +//] + +#include + +int main() +{ + test_cauchy(); +} diff --git a/example/policy_ref_snip2.cpp b/example/policy_ref_snip2.cpp new file mode 100644 index 000000000..39892475f --- /dev/null +++ b/example/policy_ref_snip2.cpp @@ -0,0 +1,34 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip2 + +#include + +using namespace boost::math::policies; +using namespace boost::math; + +// Define a policy: +typedef policy< + overflow_error + > my_policy; + +// Define the distribution: +typedef normal_distribution my_norm; + +// Get a quantile: +double q = quantile(my_norm(), 0.05); + +//] + +#include + +int main() +{ + std::cout << q << std::endl; +} diff --git a/example/policy_ref_snip3.cpp b/example/policy_ref_snip3.cpp new file mode 100644 index 000000000..a9edf8608 --- /dev/null +++ b/example/policy_ref_snip3.cpp @@ -0,0 +1,36 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +double some_value = 2; + +//[policy_ref_snip3 + +#include + +using namespace boost::math::policies; +using namespace boost::math; + +// Define a policy: +typedef policy< + promote_double + > my_policy; + +// Call the function: +double t1 = tgamma(some_value, my_policy()); + +// Alternatively we could use make_policy and define everything at the call site: +double t2 = tgamma(some_value, make_policy(promote_double())); + +//] + +#include + +int main() +{ + std::cout << t1 << " " << t2 << std::endl; +} diff --git a/example/policy_ref_snip4.cpp b/example/policy_ref_snip4.cpp new file mode 100644 index 000000000..8ce529e05 --- /dev/null +++ b/example/policy_ref_snip4.cpp @@ -0,0 +1,40 @@ +// Copyright John Maddock 2007. +// Copyright Paul A. Bristow 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +#ifdef _MSC_VER +# pragma warning (disable : 4305) // 'initializing' : truncation from 'long double' to 'const eval_type' +# pragma warning (disable : 4244) // 'conversion' : truncation from 'long double' to 'const eval_type' +#endif + +//[policy_ref_snip4 + +#include + +using namespace boost::math::policies; +using namespace boost::math; + +// Define a policy: +typedef policy< + promote_float + > my_policy; + +// Define the distribution: +typedef normal_distribution my_norm; + +// Get a quantile: +float q = quantile(my_norm(), 0.05f); + +//] [policy_ref_snip4] + +#include + +int main() +{ + std::cout << q << std::endl; +} diff --git a/example/policy_ref_snip5.cpp b/example/policy_ref_snip5.cpp new file mode 100644 index 000000000..5cf9c0a87 --- /dev/null +++ b/example/policy_ref_snip5.cpp @@ -0,0 +1,33 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip5 + +#include + +using namespace boost::math; +using namespace boost::math::policies; + +typedef negative_binomial_distribution< + double, + policy > + > dist_type; + +// Lower quantile: +double x = quantile(dist_type(20, 0.3), 0.05); +// Upper quantile: +double y = quantile(complement(dist_type(20, 0.3), 0.05)); + +//] + +#include + +int main() +{ + std::cout << x << " " << y << std::endl; +} diff --git a/example/policy_ref_snip6.cpp b/example/policy_ref_snip6.cpp new file mode 100644 index 000000000..4ca04e79f --- /dev/null +++ b/example/policy_ref_snip6.cpp @@ -0,0 +1,27 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip6 + +#include + +using namespace boost::math; + +// Lower quantile rounded down: +double x = quantile(negative_binomial(20, 0.3), 0.05); +// Upper quantile rounded up: +double y = quantile(complement(negative_binomial(20, 0.3), 0.05)); + +//] + +#include + +int main() +{ + std::cout << x << " " << y << std::endl; +} diff --git a/example/policy_ref_snip7.cpp b/example/policy_ref_snip7.cpp new file mode 100644 index 000000000..e7ae56dd0 --- /dev/null +++ b/example/policy_ref_snip7.cpp @@ -0,0 +1,33 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip7 + +#include + +using namespace boost::math; +using namespace boost::math::policies; + +typedef negative_binomial_distribution< + double, + policy > + > dist_type; + +// Lower quantile rounded up: +double x = quantile(dist_type(20, 0.3), 0.05); +// Upper quantile rounded down: +double y = quantile(complement(dist_type(20, 0.3), 0.05)); + +//] + +#include + +int main() +{ + std::cout << x << " " << y << std::endl; +} diff --git a/example/policy_ref_snip8.cpp b/example/policy_ref_snip8.cpp new file mode 100644 index 000000000..00be08afa --- /dev/null +++ b/example/policy_ref_snip8.cpp @@ -0,0 +1,33 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip8 + +#include + +using namespace boost::math; +using namespace boost::math::policies; + +typedef negative_binomial_distribution< + double, + policy > + > dist_type; + +// Lower quantile rounded up: +double x = quantile(dist_type(20, 0.3), 0.05); +// Upper quantile rounded down: +double y = quantile(complement(dist_type(20, 0.3), 0.05)); + +//] + +#include + +int main() +{ + std::cout << x << " " << y << std::endl; +} diff --git a/example/policy_ref_snip9.cpp b/example/policy_ref_snip9.cpp new file mode 100644 index 000000000..a27b176a3 --- /dev/null +++ b/example/policy_ref_snip9.cpp @@ -0,0 +1,27 @@ +// Copyright John Maddock 2007. +// 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) + +// Note that this file contains quickbook mark-up as well as code +// and comments, don't change any of the special comment mark-ups! + +//[policy_ref_snip9 + +#include + +using namespace boost::math; +using namespace boost::math::policies; + +typedef policy > pol; + +double t = tgamma(12, pol()); + +//] + +#include + +int main() +{ + std::cout << t << std::endl; +} diff --git a/example/students_t_example1.cpp b/example/students_t_example1.cpp new file mode 100644 index 000000000..c86b89d5d --- /dev/null +++ b/example/students_t_example1.cpp @@ -0,0 +1,101 @@ +// students_t_example1.cpp + +// Copyright Paul A. Bristow 2006, 2007. + +// 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) + +// Example 1 of using Student's t + +// http://en.wikipedia.org/wiki/Student's_t-test says: +// The t statistic was invented by William Sealy Gosset +// for cheaply monitoring the quality of beer brews. +// "Student" was his pen name. +// WS Gosset was statistician for Guinness brewery in Dublin, Ireland, +// hired due to Claude Guinness's innovative policy of recruiting the +// best graduates from Oxford and Cambridge for applying biochemistry +// and statistics to Guinness's industrial processes. +// Gosset published the t test in Biometrika in 1908, +// but was forced to use a pen name by his employer who regarded the fact +// that they were using statistics as a trade secret. +// In fact, Gosset's identity was unknown not only to fellow statisticians +// but to his employer - the company insisted on the pseudonym +// so that it could turn a blind eye to the breach of its rules. + +// Data for this example from: +// P.K.Hou, O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. +// from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 +// J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907 + +// Determination of mercury by cold-vapour atomic absorption, +// the following values were obtained fusing a trusted +// Standard Reference Material containing 38.9% mercury, +// which we assume is correct or 'true'. +double standard = 38.9; + +const int values = 3; +double value[values] = {38.9, 37.4, 37.1}; + +// Is there any evidence for systematic error? + +// The Students't distribution function is described at +// http://en.wikipedia.org/wiki/Student%27s_t_distribution +#include + using boost::math::students_t; // Probability of students_t(df, t). + +#include + using std::cout; using std::endl; +#include + using std::setprecision; +#include + using std::sqrt; + +int main() +{ + cout << "Example 1 using Student's t function. " << endl; + + // Example/test using tabulated value + // (deliberately coded as naively as possible). + + // Null hypothesis is that there is no difference (greater or less) + // between measured and standard. + + double degrees_of_freedom = values-1; // 3-1 = 2 + cout << "Measurement 1 = " << value[0] << ", measurement 2 = " << value[1] << ", measurement 3 = " << value[2] << endl; + double mean = (value[0] + value[1] + value[2]) / static_cast(values); + cout << "Standard = " << standard << ", mean = " << mean << ", (mean - standard) = " << mean - standard << endl; + double sd = sqrt(((value[0] - mean) * (value[0] - mean) + (value[1] - mean) * (value[1] - mean) + (value[2] - mean) * (value[2] - mean))/ static_cast(values-1)); + cout << "Standard deviation = " << sd << endl; + if (sd == 0.) + { + cout << "Measured mean is identical to SRM value," << endl; + cout << "so probability of no difference between measured and standard (the 'null hypothesis') is unity." << endl; + return 0; + } + + double t = (mean - standard) * std::sqrt(static_cast(values)) / sd; + cout << "Student's t = " << t << endl; + cout.precision(2); // Useful accuracy is only a few decimal digits. + cout << "Probability of Student's t is " << cdf(students_t(degrees_of_freedom), std::abs(t)) << endl; + // 0.91, is 1 tailed. + // So there is insufficient evidence of a difference to meet a 95% (1 in 20) criterion. + + return 0; +} // int main() + +/* + +Output is: + +Example 1 using Student's t function. +Measurement 1 = 38.9, measurement 2 = 37.4, measurement 3 = 37.1 +Standard = 38.9, mean = 37.8, (mean - standard) = -1.1 +Standard deviation = 0.964365 +Student's t = -1.97566 +Probability of Student's t is 0.91 + +*/ + + diff --git a/example/students_t_example2.cpp b/example/students_t_example2.cpp new file mode 100644 index 000000000..4ae727a4e --- /dev/null +++ b/example/students_t_example2.cpp @@ -0,0 +1,125 @@ +// students_t_example2.cpp + +// Copyright Paul A. Bristow 2006. +// 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) + +// Example 2 of using Student's t + +// A general guide to Student's t is at +// http://en.wikipedia.org/wiki/Student's_t-test +// (and many other elementary and advanced statistics texts). +// It says: +// The t statistic was invented by William Sealy Gosset +// for cheaply monitoring the quality of beer brews. +// "Student" was his pen name. +// Gosset was statistician for Guinness brewery in Dublin, Ireland, +// hired due to Claude Guinness's innovative policy of recruiting the +// best graduates from Oxford and Cambridge for applying biochemistry +// and statistics to Guinness's industrial processes. +// Gosset published the t test in Biometrika in 1908, +// but was forced to use a pen name by his employer who regarded the fact +// that they were using statistics as a trade secret. +// In fact, Gosset's identity was unknown not only to fellow statisticians +// but to his employer - the company insisted on the pseudonym +// so that it could turn a blind eye to the breach of its rules. + +// The Students't distribution function is described at +// http://en.wikipedia.org/wiki/Student%27s_t_distribution + +#include + using boost::math::students_t; // Probability of students_t(df, t). + +#include + using std::cout; + using std::endl; +#include + using std::setprecision; + using std::setw; +#include + using std::sqrt; + +// This example of a one-sided test is from: +// +// from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 59-60 +// J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907. + +// An acid-base titrimetric method has a significant indicator error and +// thus tends to give results with a positive systematic error (+bias). +// To test this an exactly 0.1 M solution of acid is used to titrate +// 25.00 ml of exactly 0.1 M solution of alkali, +// with the following results (ml): + +double reference = 25.00; // 'True' result. +const int values = 6; // titrations. +double data [values] = {25.06, 25.18, 24.87, 25.51, 25.34, 25.41}; + +int main() +{ + cout << "Example2 using Student's t function. "; +#if defined(__FILE__) && defined(__TIMESTAMP__) + cout << " " << __FILE__ << ' ' << __TIMESTAMP__ << ' '<< _MSC_FULL_VER; +#endif + cout << endl; + + double sum = 0.; + for (int value = 0; value < values; value++) + { // Echo data and calculate mean. + sum += data[value]; + cout << setw(4) << value << ' ' << setw(14) << data[value] << endl; + } + double mean = sum /static_cast(values); + cout << "Mean = " << mean << endl; // 25.2283 + + double sd = 0.; + for (int value = 0; value < values; value++) + { // Calculate standard deviation. + sd +=(data[value] - mean) * (data[value] - mean); + } + int degrees_of_freedom = values - 1; // Use the n-1 formula. + sd /= degrees_of_freedom; // == variance. + sd= sqrt(sd); + cout << "Standard deviation = " << sd<< endl; // = 0.238279 + + double t = (mean - reference) * sqrt(static_cast(values))/ sd; // + cout << "Student's t = " << t << ", with " << degrees_of_freedom << " degrees of freedom." << endl; // = 2.34725 + + cout << "Probability of positive bias is " << cdf(students_t(degrees_of_freedom), t) << "."<< endl; // = 0.967108. + // A 1-sided test because only testing for a positive bias. + // If > 0.95 then greater than 1 in 20 conventional (arbitrary) requirement. + + return 0; +} // int main() + +/* + +Output is: + +------ Build started: Project: students_t_example2, Configuration: Debug Win32 ------ +Compiling... +students_t_example2.cpp +Linking... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\students_t_example2.exe" +Example2 using Student's t function. ..\..\..\..\..\..\boost-sandbox\libs\math_functions\example\students_t_example2.cpp Sat Aug 12 16:55:59 2006 140050727 + 0 25.06 + 1 25.18 + 2 24.87 + 3 25.51 + 4 25.34 + 5 25.41 +Mean = 25.2283 +Standard deviation = 0.238279 +Student's t = 2.34725, with 5 degrees of freedom. +Probability of positive bias is 0.967108. +Build Time 0:03 +Build log was saved at "file://i:\boost-06-05-03-1300\libs\math\test\Math_test\students_t_example2\Debug\BuildLog.htm" +students_t_example2 - 0 error(s), 0 warning(s) +========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + +*/ + + + + diff --git a/example/students_t_example3.cpp b/example/students_t_example3.cpp new file mode 100644 index 000000000..289daec09 --- /dev/null +++ b/example/students_t_example3.cpp @@ -0,0 +1,120 @@ +// students_t_example3.cpp +// Copyright Paul A. Bristow 2006, 2007. + +// 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) + +// Example 3 of using Student's t. + +// A general guide to Student's t is at +// http://en.wikipedia.org/wiki/Student's_t-test +// (and many other elementary and advanced statistics texts). +// It says: +// The t statistic was invented by William Sealy Gosset +// for cheaply monitoring the quality of beer brews. +// "Student" was his pen name. +// Gosset was statistician for Guinness brewery in Dublin, Ireland, +// hired due to Claude Guinness's innovative policy of recruiting the +// best graduates from Oxford and Cambridge for applying biochemistry +// and statistics to Guinness's industrial processes. +// Gosset published the t test in Biometrika in 1908, +// but was forced to use a pen name by his employer who regarded the fact +// that they were using statistics as a trade secret. +// In fact, Gosset's identity was unknown not only to fellow statisticians +// but to his employer - the company insisted on the pseudonym +// so that it could turn a blind eye to the breach of its rules. + +// The Students't distribution function is described at +// http://en.wikipedia.org/wiki/Student%27s_t_distribution + +#include + using boost::math::students_t; // Probability of students_t(df, t). + +#include + using std::cout; using std::endl; +#include + using std::setprecision; using std::setw; +#include + using std::sqrt; + +// This example of a two-sided test is from: +// B. M. Smith & M. B. Griffiths, Analyst, 1982, 107, 253, +// from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 58-59 +// J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907 + +// Concentrations of lead (ug/l) determined by two different methods +// for each of four test portions, +// the concentration of each portion is significantly different, +// the values may NOT be pooled. +// (Called a 'paired test' by Miller and Miller +// because each portion analysed has a different concentration.) + +// Portion Wet oxidation Direct Extraction +// 1 71 76 +// 2 61 68 +// 3 50 48 +// 4 60 57 + +const int portions = 4; +const int methods = 2; +float data [portions][methods] = {{71, 76}, {61,68}, {50, 48}, {60, 57}}; +float diffs[portions]; + +int main() +{ + cout << "Example3 using Student's t function. " << endl; + float mean_diff = 0.f; + cout << "\n""Portion wet_oxidation Direct_extraction difference" << endl; + for (int portion = 0; portion < portions; portion++) + { // Echo data and differences. + diffs[portion] = data[portion][0] - data[portion][1]; + mean_diff += diffs[portion]; + cout << setw(4) << portion << ' ' << setw(14) << data[portion][0] << ' ' << setw(18)<< data[portion][1] << ' ' << setw(9) << diffs[portion] << endl; + } + mean_diff /= portions; + cout << "Mean difference = " << mean_diff << endl; // -1.75 + + float sd_diffs = 0.f; + for (int portion = 0; portion < portions; portion++) + { // Calculate standard deviation of differences. + sd_diffs +=(diffs[portion] - mean_diff) * (diffs[portion] - mean_diff); + } + int degrees_of_freedom = portions-1; // Use the n-1 formula. + sd_diffs /= degrees_of_freedom; + sd_diffs = sqrt(sd_diffs); + cout << "Standard deviation of differences = " << sd_diffs << endl; // 4.99166 + // Standard deviation of differences = 4.99166 + double t = mean_diff * sqrt(static_cast(portions))/ sd_diffs; // -0.70117 + cout << "Student's t = " << t << ", if " << degrees_of_freedom << " degrees of freedom." << endl; + // Student's t = -0.70117, if 3 degrees of freedom. + cout << "Probability of the means being different is " + << 2.F * cdf(students_t(degrees_of_freedom), t) << "."<< endl; // 0.266846 * 2 = 0.533692 + // Double the probability because using a 'two-sided test' because + // mean for 'Wet oxidation' could be either + // greater OR LESS THAN for 'Direct extraction'. + + return 0; +} // int main() + +/* + +Output is: + +Example3 using Student's t function. +Portion wet_oxidation Direct_extraction difference + 0 71 76 -5 + 1 61 68 -7 + 2 50 48 2 + 3 60 57 3 +Mean difference = -1.75 +Standard deviation of differences = 4.99166 +Student's t = -0.70117, if 3 degrees of freedom. +Probability of the means being different is 0.533692. + +*/ + + + + diff --git a/example/students_t_single_sample.cpp b/example/students_t_single_sample.cpp new file mode 100644 index 000000000..101835ae4 --- /dev/null +++ b/example/students_t_single_sample.cpp @@ -0,0 +1,427 @@ +// Copyright John Maddock 2006 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable: 4512) // assignment operator could not be generated. +# pragma warning(disable: 4510) // default constructor could not be generated. +# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required. +#endif + +#include +#include +#include + +void confidence_limits_on_mean(double Sm, double Sd, unsigned Sn) +{ + // + // Sm = Sample Mean. + // Sd = Sample Standard Deviation. + // Sn = Sample Size. + // + // Calculate confidence intervals for the mean. + // For example if we set the confidence limit to + // 0.95, we know that if we repeat the sampling + // 100 times, then we expect that the true mean + // will be between out limits on 95 occations. + // Note: this is not the same as saying a 95% + // confidence interval means that there is a 95% + // probability that the interval contains the true mean. + // The interval computed from a given sample either + // contains the true mean or it does not. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm + + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "__________________________________\n" + "2-Sided Confidence Limits For Mean\n" + "__________________________________\n\n"; + cout << setprecision(7); + cout << setw(40) << left << "Number of Observations" << "= " << Sn << "\n"; + cout << setw(40) << left << "Mean" << "= " << Sm << "\n"; + cout << setw(40) << left << "Standard Deviation" << "= " << Sd << "\n"; + // + // Define a table of significance/risk levels: + // + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + // + // Start by declaring the distribution we'll need: + // + students_t dist(Sn - 1); + // + // Print table header: + // + cout << "\n\n" + "_______________________________________________________________\n" + "Confidence T Interval Lower Upper\n" + " Value (%) Value Width Limit Limit\n" + "_______________________________________________________________\n"; + // + // Now print out the data for the table rows. + // + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate T: + double T = quantile(complement(dist, alpha[i] / 2)); + // Print T: + cout << fixed << setprecision(3) << setw(10) << right << T; + // Calculate width of interval (one sided): + double w = T * Sd / sqrt(double(Sn)); + // Print width: + if(w < 0.01) + cout << scientific << setprecision(3) << setw(17) << right << w; + else + cout << fixed << setprecision(3) << setw(17) << right << w; + // Print Limits: + cout << fixed << setprecision(5) << setw(15) << right << Sm - w; + cout << fixed << setprecision(5) << setw(15) << right << Sm + w << endl; + } + cout << endl; +} + +void single_sample_t_test(double M, double Sm, double Sd, unsigned Sn, double alpha) +{ + // + // M = true mean. + // Sm = Sample Mean. + // Sd = Sample Standard Deviation. + // Sn = Sample Size. + // alpha = Significance Level. + // + // A Students t test applied to a single set of data. + // We are testing the null hypothesis that the true + // mean of the sample is M, and that any variation is down + // to chance. We can also test the alternative hypothesis + // that any difference is not down to chance. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda352.htm + // + using namespace std; + using namespace boost::math; + + // Print header: + cout << + "__________________________________\n" + "Student t test for a single sample\n" + "__________________________________\n\n"; + cout << setprecision(5); + cout << setw(55) << left << "Number of Observations" << "= " << Sn << "\n"; + cout << setw(55) << left << "Sample Mean" << "= " << Sm << "\n"; + cout << setw(55) << left << "Sample Standard Deviation" << "= " << Sd << "\n"; + cout << setw(55) << left << "Expected True Mean" << "= " << M << "\n\n"; + // + // Now we can calculate and output some stats: + // + // Difference in means: + double diff = Sm - M; + cout << setw(55) << left << "Sample Mean - Expected Test Mean" << "= " << diff << "\n"; + // Degrees of freedom: + unsigned v = Sn - 1; + cout << setw(55) << left << "Degrees of Freedom" << "= " << v << "\n"; + // t-statistic: + double t_stat = diff * sqrt(double(Sn)) / Sd; + cout << setw(55) << left << "T Statistic" << "= " << t_stat << "\n"; + // + // Finally define our distribution, and get the probability: + // + students_t dist(v); + double q = cdf(complement(dist, fabs(t_stat))); + cout << setw(55) << left << "Probability that difference is due to chance" << "= " + << setprecision(3) << scientific << 2 * q << "\n\n"; + // + // Finally print out results of alternative hypothesis: + // + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + cout << "Mean != " << setprecision(3) << fixed << M << " "; + if(q < alpha / 2) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Mean < " << setprecision(3) << fixed << M << " "; + if(cdf(dist, t_stat) < alpha) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Mean > " << setprecision(3) << fixed << M << " "; + if(cdf(complement(dist, t_stat)) < alpha) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; +} + +void single_sample_find_df(double M, double Sm, double Sd) +{ + // + // M = true mean. + // Sm = Sample Mean. + // Sd = Sample Standard Deviation. + // + using namespace std; + using namespace boost::math; + + // Print out general info: + cout << + "_____________________________________________________________\n" + "Estimated sample sizes required for various confidence levels\n" + "_____________________________________________________________\n\n"; + cout << setprecision(5); + cout << setw(40) << left << "True Mean" << "= " << M << "\n"; + cout << setw(40) << left << "Sample Mean" << "= " << Sm << "\n"; + cout << setw(40) << left << "Sample Standard Deviation" << "= " << Sd << "\n"; + // + // Define a table of significance intervals: + // + double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 }; + // + // Print table header: + // + cout << "\n\n" + "_______________________________________________________________\n" + "Confidence Estimated Estimated\n" + " Value (%) Sample Size Sample Size\n" + " (one sided test) (two sided test)\n" + "_______________________________________________________________\n"; + // + // Now print out the data for the table rows. + // + for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i) + { + // Confidence value: + cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]); + // calculate df for single sided test: + double df = students_t::find_degrees_of_freedom( + fabs(M - Sm), alpha[i], alpha[i], Sd); + // convert to sample size: + double size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size; + // calculate df for two sided test: + df = students_t::find_degrees_of_freedom( + fabs(M - Sm), alpha[i]/2, alpha[i], Sd); + // convert to sample size: + size = ceil(df) + 1; + // Print size: + cout << fixed << setprecision(0) << setw(16) << right << size << endl; + } + cout << endl; +} + +int main() +{ + // + // Run tests for Heat Flow Meter data + // see http://www.itl.nist.gov/div898/handbook/eda/section4/eda428.htm + // The data was collected while calibrating a heat flow meter + // against a known value. + // + confidence_limits_on_mean(9.261460, 0.2278881e-01, 195); + single_sample_t_test(5, 9.261460, 0.2278881e-01, 195, 0.05); + single_sample_find_df(5, 9.261460, 0.2278881e-01); + + // + // Data for this example from: + // P.K.Hou, O. W. Lau & M.C. Wong, Analyst (1983) vol. 108, p 64. + // from Statistics for Analytical Chemistry, 3rd ed. (1994), pp 54-55 + // J. C. Miller and J. N. Miller, Ellis Horwood ISBN 0 13 0309907 + // + // Determination of mercury by cold-vapour atomic absorption, + // the following values were obtained fusing a trusted + // Standard Reference Material containing 38.9% mercury, + // which we assume is correct or 'true'. + // + confidence_limits_on_mean(37.8, 0.964365, 3); + // 95% test: + single_sample_t_test(38.9, 37.8, 0.964365, 3, 0.05); + // 90% test: + single_sample_t_test(38.9, 37.8, 0.964365, 3, 0.1); + // parameter estimate: + single_sample_find_df(38.9, 37.8, 0.964365); + + return 0; +} + +/* + +Output: + +------ Build started: Project: students_t_single_sample, Configuration: Debug Win32 ------ +Compiling... +students_t_single_sample.cpp +Linking... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\students_t_single_sample.exe" +__________________________________ +2-Sided Confidence Limits For Mean +__________________________________ + +Number of Observations = 195 +Mean = 9.26146 +Standard Deviation = 0.02278881 + + +_______________________________________________________________ +Confidence T Interval Lower Upper + Value (%) Value Width Limit Limit +_______________________________________________________________ + 50.000 0.676 1.103e-003 9.26036 9.26256 + 75.000 1.154 1.883e-003 9.25958 9.26334 + 90.000 1.653 2.697e-003 9.25876 9.26416 + 95.000 1.972 3.219e-003 9.25824 9.26468 + 99.000 2.601 4.245e-003 9.25721 9.26571 + 99.900 3.341 5.453e-003 9.25601 9.26691 + 99.990 3.973 6.484e-003 9.25498 9.26794 + 99.999 4.537 7.404e-003 9.25406 9.26886 + +__________________________________ +Student t test for a single sample +__________________________________ + +Number of Observations = 195 +Sample Mean = 9.26146 +Sample Standard Deviation = 0.02279 +Expected True Mean = 5.00000 + +Sample Mean - Expected Test Mean = 4.26146 +Degrees of Freedom = 194 +T Statistic = 2611.28380 +Probability that difference is due to chance = 0.000e+000 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Mean != 5.000 NOT REJECTED +Mean < 5.000 REJECTED +Mean > 5.000 NOT REJECTED + + +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ + +True Mean = 5.00000 +Sample Mean = 9.26146 +Sample Standard Deviation = 0.02279 + + +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (one sided test) (two sided test) +_______________________________________________________________ + 50.000 2 2 + 75.000 2 2 + 90.000 2 2 + 95.000 2 2 + 99.000 2 2 + 99.900 3 3 + 99.990 3 3 + 99.999 4 4 + +__________________________________ +2-Sided Confidence Limits For Mean +__________________________________ + +Number of Observations = 3 +Mean = 37.8000000 +Standard Deviation = 0.9643650 + + +_______________________________________________________________ +Confidence T Interval Lower Upper + Value (%) Value Width Limit Limit +_______________________________________________________________ + 50.000 0.816 0.455 37.34539 38.25461 + 75.000 1.604 0.893 36.90717 38.69283 + 90.000 2.920 1.626 36.17422 39.42578 + 95.000 4.303 2.396 35.40438 40.19562 + 99.000 9.925 5.526 32.27408 43.32592 + 99.900 31.599 17.594 20.20639 55.39361 + 99.990 99.992 55.673 -17.87346 93.47346 + 99.999 316.225 176.067 -138.26683 213.86683 + +__________________________________ +Student t test for a single sample +__________________________________ + +Number of Observations = 3 +Sample Mean = 37.80000 +Sample Standard Deviation = 0.96437 +Expected True Mean = 38.90000 + +Sample Mean - Expected Test Mean = -1.10000 +Degrees of Freedom = 2 +T Statistic = -1.97566 +Probability that difference is due to chance = 1.869e-001 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Mean != 38.900 REJECTED +Mean < 38.900 REJECTED +Mean > 38.900 REJECTED + + +__________________________________ +Student t test for a single sample +__________________________________ + +Number of Observations = 3 +Sample Mean = 37.80000 +Sample Standard Deviation = 0.96437 +Expected True Mean = 38.90000 + +Sample Mean - Expected Test Mean = -1.10000 +Degrees of Freedom = 2 +T Statistic = -1.97566 +Probability that difference is due to chance = 1.869e-001 + +Results for Alternative Hypothesis and alpha = 0.1000 + +Alternative Hypothesis Conclusion +Mean != 38.900 REJECTED +Mean < 38.900 NOT REJECTED +Mean > 38.900 REJECTED + + +_____________________________________________________________ +Estimated sample sizes required for various confidence levels +_____________________________________________________________ + +True Mean = 38.90000 +Sample Mean = 37.80000 +Sample Standard Deviation = 0.96437 + + +_______________________________________________________________ +Confidence Estimated Estimated + Value (%) Sample Size Sample Size + (one sided test) (two sided test) +_______________________________________________________________ + 50.000 2 2 + 75.000 3 4 + 90.000 7 9 + 95.000 11 13 + 99.000 20 22 + 99.900 35 37 + 99.990 50 53 + 99.999 66 68 + +Build Time 0:03 +Build log was saved at "file://i:\boost-06-05-03-1300\libs\math\test\Math_test\students_t_single_sample\Debug\BuildLog.htm" +students_t_single_sample - 0 error(s), 0 warning(s) +========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + + +*/ + diff --git a/example/students_t_two_samples.cpp b/example/students_t_two_samples.cpp new file mode 100644 index 000000000..e3a4fa742 --- /dev/null +++ b/example/students_t_two_samples.cpp @@ -0,0 +1,261 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. +// 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) + +#ifdef _MSC_VER +# pragma warning(disable: 4512) // assignment operator could not be generated. +# pragma warning(disable: 4510) // default constructor could not be generated. +# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required. +#endif + +#include +#include +#include + +void two_samples_t_test_equal_sd( + double Sm1, + double Sd1, + unsigned Sn1, + double Sm2, + double Sd2, + unsigned Sn2, + double alpha) +{ + // + // Sm1 = Sample Mean 1. + // Sd1 = Sample Standard Deviation 1. + // Sn1 = Sample Size 1. + // Sm2 = Sample Mean 2. + // Sd2 = Sample Standard Deviation 2. + // Sn2 = Sample Size 2. + // alpha = Significance Level. + // + // A Students t test applied to two sets of data. + // We are testing the null hypothesis that the two + // samples have the same mean and that any difference + // if due to chance. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm + // + using namespace std; + using namespace boost::math; + + // Print header: + cout << + "_______________________________________________\n" + "Student t test for two samples (equal variances)\n" + "_______________________________________________\n\n"; + cout << setprecision(5); + cout << setw(55) << left << "Number of Observations (Sample 1)" << "= " << Sn1 << "\n"; + cout << setw(55) << left << "Sample 1 Mean" << "= " << Sm1 << "\n"; + cout << setw(55) << left << "Sample 1 Standard Deviation" << "= " << Sd1 << "\n"; + cout << setw(55) << left << "Number of Observations (Sample 2)" << "= " << Sn2 << "\n"; + cout << setw(55) << left << "Sample 2 Mean" << "= " << Sm2 << "\n"; + cout << setw(55) << left << "Sample 2 Standard Deviation" << "= " << Sd2 << "\n"; + // + // Now we can calculate and output some stats: + // + // Degrees of freedom: + double v = Sn1 + Sn2 - 2; + cout << setw(55) << left << "Degrees of Freedom" << "= " << v << "\n"; + // Pooled variance: + double sp = sqrt(((Sn1-1) * Sd1 * Sd1 + (Sn2-1) * Sd2 * Sd2) / v); + cout << setw(55) << left << "Pooled Standard Deviation" << "= " << v << "\n"; + // t-statistic: + double t_stat = (Sm1 - Sm2) / (sp * sqrt(1.0 / Sn1 + 1.0 / Sn2)); + cout << setw(55) << left << "T Statistic" << "= " << t_stat << "\n"; + // + // Define our distribution, and get the probability: + // + students_t dist(v); + double q = cdf(complement(dist, fabs(t_stat))); + cout << setw(55) << left << "Probability that difference is due to chance" << "= " + << setprecision(3) << scientific << 2 * q << "\n\n"; + // + // Finally print out results of alternative hypothesis: + // + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + cout << "Sample 1 Mean != Sample 2 Mean " ; + if(q < alpha / 2) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Sample 1 Mean < Sample 2 Mean "; + if(cdf(dist, t_stat) < alpha) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Sample 1 Mean > Sample 2 Mean "; + if(cdf(complement(dist, t_stat)) < alpha) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; +} + +void two_samples_t_test_unequal_sd( + double Sm1, + double Sd1, + unsigned Sn1, + double Sm2, + double Sd2, + unsigned Sn2, + double alpha) +{ + // + // Sm1 = Sample Mean 1. + // Sd1 = Sample Standard Deviation 1. + // Sn1 = Sample Size 1. + // Sm2 = Sample Mean 2. + // Sd2 = Sample Standard Deviation 2. + // Sn2 = Sample Size 2. + // alpha = Significance Level. + // + // A Students t test applied to two sets of data. + // We are testing the null hypothesis that the two + // samples have the same mean and that any difference + // if due to chance. + // See http://www.itl.nist.gov/div898/handbook/eda/section3/eda353.htm + // + using namespace std; + using namespace boost::math; + + // Print header: + cout << + "_________________________________________________\n" + "Student t test for two samples (unequal variances)\n" + "_________________________________________________\n\n"; + cout << setprecision(5); + cout << setw(55) << left << "Number of Observations (Sample 1)" << "= " << Sn1 << "\n"; + cout << setw(55) << left << "Sample 1 Mean" << "= " << Sm1 << "\n"; + cout << setw(55) << left << "Sample 1 Standard Deviation" << "= " << Sd1 << "\n"; + cout << setw(55) << left << "Number of Observations (Sample 2)" << "= " << Sn2 << "\n"; + cout << setw(55) << left << "Sample 2 Mean" << "= " << Sm2 << "\n"; + cout << setw(55) << left << "Sample 2 Standard Deviation" << "= " << Sd2 << "\n"; + // + // Now we can calculate and output some stats: + // + // Degrees of freedom: + double v = Sd1 * Sd1 / Sn1 + Sd2 * Sd2 / Sn2; + v *= v; + double t1 = Sd1 * Sd1 / Sn1; + t1 *= t1; + t1 /= (Sn1 - 1); + double t2 = Sd2 * Sd2 / Sn2; + t2 *= t2; + t2 /= (Sn2 - 1); + v /= (t1 + t2); + cout << setw(55) << left << "Degrees of Freedom" << "= " << v << "\n"; + // t-statistic: + double t_stat = (Sm1 - Sm2) / sqrt(Sd1 * Sd1 / Sn1 + Sd2 * Sd2 / Sn2); + cout << setw(55) << left << "T Statistic" << "= " << t_stat << "\n"; + // + // Define our distribution, and get the probability: + // + students_t dist(v); + double q = cdf(complement(dist, fabs(t_stat))); + cout << setw(55) << left << "Probability that difference is due to chance" << "= " + << setprecision(3) << scientific << 2 * q << "\n\n"; + // + // Finally print out results of alternative hypothesis: + // + cout << setw(55) << left << + "Results for Alternative Hypothesis and alpha" << "= " + << setprecision(4) << fixed << alpha << "\n\n"; + cout << "Alternative Hypothesis Conclusion\n"; + cout << "Sample 1 Mean != Sample 2 Mean " ; + if(q < alpha / 2) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Sample 1 Mean < Sample 2 Mean "; + if(cdf(dist, t_stat) < alpha) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << "Sample 1 Mean > Sample 2 Mean "; + if(cdf(complement(dist, t_stat)) < alpha) + cout << "NOT REJECTED\n"; + else + cout << "REJECTED\n"; + cout << endl << endl; +} + +int main() +{ + // + // Run tests for Car Mileage sample data + // http://www.itl.nist.gov/div898/handbook/eda/section3/eda3531.htm + // from the NIST website http://www.itl.nist.gov. The data compares + // miles per gallon of US cars with miles per gallon of Japanese cars. + // + two_samples_t_test_equal_sd(20.14458, 6.414700, 249, 30.48101, 6.107710, 79, 0.05); + two_samples_t_test_unequal_sd(20.14458, 6.414700, 249, 30.48101, 6.107710, 79, 0.05); + + return 0; +} // int main() + +/* +Output is + +------ Build started: Project: students_t_two_samples, Configuration: Debug Win32 ------ +Compiling... +students_t_two_samples.cpp +Linking... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\students_t_two_samples.exe" +_______________________________________________ +Student t test for two samples (equal variances) +_______________________________________________ + +Number of Observations (Sample 1) = 249 +Sample 1 Mean = 20.145 +Sample 1 Standard Deviation = 6.4147 +Number of Observations (Sample 2) = 79 +Sample 2 Mean = 30.481 +Sample 2 Standard Deviation = 6.1077 +Degrees of Freedom = 326 +Pooled Standard Deviation = 326 +T Statistic = -12.621 +Probability that difference is due to chance = 5.273e-030 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Sample 1 Mean != Sample 2 Mean NOT REJECTED +Sample 1 Mean < Sample 2 Mean NOT REJECTED +Sample 1 Mean > Sample 2 Mean REJECTED + + +_________________________________________________ +Student t test for two samples (unequal variances) +_________________________________________________ + +Number of Observations (Sample 1) = 249 +Sample 1 Mean = 20.14458 +Sample 1 Standard Deviation = 6.41470 +Number of Observations (Sample 2) = 79 +Sample 2 Mean = 30.48101 +Sample 2 Standard Deviation = 6.10771 +Degrees of Freedom = 136.87499 +T Statistic = -12.94627 +Probability that difference is due to chance = 1.571e-025 + +Results for Alternative Hypothesis and alpha = 0.0500 + +Alternative Hypothesis Conclusion +Sample 1 Mean != Sample 2 Mean NOT REJECTED +Sample 1 Mean < Sample 2 Mean NOT REJECTED +Sample 1 Mean > Sample 2 Mean REJECTED + +Build Time 0:03 +Build log was saved at "file://i:\boost-06-05-03-1300\libs\math\test\Math_test\students_t_two_samples\Debug\BuildLog.htm" +students_t_two_samples - 0 error(s), 0 warning(s) +========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== + +*/ + diff --git a/index.html b/index.html index 002cf0762..bc4416553 100644 --- a/index.html +++ b/index.html @@ -1,13 +1,14 @@ - + Automatic redirection failed, please go to -../../doc/html/boost_math.html. +doc/html/index.html.

Copyright Daryle Walker, Hubert Holin and John Maddock 2006

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

+ diff --git a/minimax/f.cpp b/minimax/f.cpp new file mode 100644 index 000000000..86f55b87e --- /dev/null +++ b/minimax/f.cpp @@ -0,0 +1,246 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define L22 +#include "../tools/ntl_rr_lanczos.hpp" +#include "../tools/ntl_rr_digamma.hpp" +#include +#include +#include + +#include + + +boost::math::ntl::RR f(const boost::math::ntl::RR& x, int variant) +{ + static const boost::math::ntl::RR tiny = boost::math::tools::min_value() * 64; + switch(variant) + { + case 0: + return boost::math::erfc(x) * x / exp(-x * x); + case 1: + return boost::math::erf(x); + case 2: + { + boost::math::ntl::RR x_ = x == 0 ? 1e-80 : x; + return boost::math::erf(x_) / x_; + } + case 3: + { + boost::math::ntl::RR y(x); + if(y == 0) + y += tiny; + return boost::math::lgamma(y+2) / y - 0.5; + } + case 4: + // + // lgamma in the range [2,3], use: + // + // lgamma(x) = (x-2) * (x + 1) * (c + R(x - 2)) + // + // Works well at 80-bit long double precision, but doesn't + // stretch to 128-bit precision. + // + if(x == 0) + { + return boost::lexical_cast("0.42278433509846713939348790991759756895784066406008") / 3; + } + return boost::math::lgamma(x+2) / (x * (x+3)); + case 5: + { + // + // lgamma in the range [1,2], use: + // + // lgamma(x) = (x - 1) * (x - 2) * (c + R(x - 1)) + // + // works well over [1, 1.5] but not near 2 :-( + // + boost::math::ntl::RR r1 = boost::lexical_cast("0.57721566490153286060651209008240243104215933593992"); + boost::math::ntl::RR r2 = boost::lexical_cast("0.42278433509846713939348790991759756895784066406008"); + if(x == 0) + { + return r1; + } + if(x == 1) + { + return r2; + } + return boost::math::lgamma(x+1) / (x * (x - 1)); + } + case 6: + { + // + // lgamma in the range [1.5,2], use: + // + // lgamma(x) = (2 - x) * (1 - x) * (c + R(2 - x)) + // + // works well over [1.5, 2] but not near 1 :-( + // + boost::math::ntl::RR r1 = boost::lexical_cast("0.57721566490153286060651209008240243104215933593992"); + boost::math::ntl::RR r2 = boost::lexical_cast("0.42278433509846713939348790991759756895784066406008"); + if(x == 0) + { + return r2; + } + if(x == 1) + { + return r1; + } + return boost::math::lgamma(2-x) / (x * (x - 1)); + } + case 7: + { + // + // erf_inv in range [0, 0.5] + // + boost::math::ntl::RR y = x; + if(y == 0) + y = boost::math::tools::epsilon() / 64; + return boost::math::erf_inv(y) / (y * (y+10)); + } + case 8: + { + // + // erfc_inv in range [0.25, 0.5] + // Use an y-offset of 0.25, and range [0, 0.25] + // abs error, auto y-offset. + // + boost::math::ntl::RR y = x; + if(y == 0) + y = boost::lexical_cast("1e-5000"); + return sqrt(-2 * log(y)) / boost::math::erfc_inv(y); + } + case 9: + { + boost::math::ntl::RR x2 = x; + if(x2 == 0) + x2 = boost::lexical_cast("1e-5000"); + boost::math::ntl::RR y = exp(-x2*x2); // sqrt(-log(x2)) - 5; + return boost::math::erfc_inv(y) / x2; + } + case 10: + { + // + // Digamma over the interval [1,2], set x-offset to 1 + // and optimise for absolute error over [0,1]. + // + int current_precision = boost::math::ntl::RR::precision(); + if(current_precision < 1000) + boost::math::ntl::RR::SetPrecision(1000); + // + // This value for the root of digamma is calculated using our + // differentiated lanczos approximation. It agrees with Cody + // to ~ 25 digits and to Morris to 35 digits. See: + // TOMS ALGORITHM 708 (Didonato and Morris). + // and Math. Comp. 27, 123-127 (1973) by Cody, Strecok and Thacher. + // + //boost::math::ntl::RR root = boost::lexical_cast("1.4616321449683623412626595423257213234331845807102825466429633351908372838889871"); + // + // Actually better to calculate the root on the fly, it appears to be more + // accurate: convergence is easier with the 1000-bit value, the approximation + // produced agrees with functions.mathworld.com values to 35 digits even quite + // near the root. + // + static boost::math::tools::eps_tolerance tol(1000); + static boost::uintmax_t max_iter = 1000; + static const boost::math::ntl::RR root = boost::math::tools::bracket_and_solve_root(&boost::math::digamma, boost::math::ntl::RR(1.4), boost::math::ntl::RR(1.5), true, tol, max_iter).first; + + boost::math::ntl::RR x2 = x; + double lim = 1e-65; + if(fabs(x2 - root) < lim) + { + // + // This is a problem area: + // x2-root suffers cancellation error, so does digamma. + // That gets compounded again when Remez calculates the error + // function. This cludge seems to stop the worst of the problems: + // + static const boost::math::ntl::RR a = boost::math::digamma(root - lim) / -lim; + static const boost::math::ntl::RR b = boost::math::digamma(root + lim) / lim; + boost::math::ntl::RR fract = (x2 - root + lim) / (2*lim); + boost::math::ntl::RR r = (1-fract) * a + fract * b; + std::cout << "In root area: " << r; + return r; + } + boost::math::ntl::RR result = boost::math::digamma(x2) / (x2 - root); + if(current_precision < 1000) + boost::math::ntl::RR::SetPrecision(current_precision); + return result; + } + case 11: + // expm1: + if(x == 0) + { + static boost::math::ntl::RR lim = 1e-80; + static boost::math::ntl::RR a = boost::math::expm1(-lim); + static boost::math::ntl::RR b = boost::math::expm1(lim); + static boost::math::ntl::RR l = (b-a) / (2 * lim); + return l; + } + return boost::math::expm1(x) / x; + case 12: + // demo, and test case: + return exp(x); + case 13: + // K(k): + { + // x = k^2 + boost::math::ntl::RR k2 = x; + if(k2 > boost::math::ntl::RR(1) - 1e-40) + k2 = boost::math::ntl::RR(1) - 1e-40; + /*if(k < 1e-40) + k = 1e-40;*/ + boost::math::ntl::RR p2 = boost::math::constants::pi() / 2; + return (boost::math::ellint_1(sqrt(k2))) / (p2 - boost::math::log1p(-k2)); + } + case 14: + // K(k) + { + // x = 1 - k^2 + boost::math::ntl::RR mp = x; + if(mp < 1e-20) + mp = 1e-20; + boost::math::ntl::RR k = sqrt(1 - mp); + static const boost::math::ntl::RR l4 = log(boost::math::ntl::RR(4)); + boost::math::ntl::RR p2 = boost::math::constants::pi() / 2; + return (boost::math::ellint_1(k) + 1) / (1 + l4 - log(mp)); + } + case 15: + // E(k) + { + // x = 1-k^2 + boost::math::ntl::RR z = 1 - x * log(x); + return boost::math::ellint_2(sqrt(1-x)) / z; + } + case 16: + // Bessel I0(x) over [0,16]: + { + return boost::math::cyl_bessel_i(0, sqrt(x)); + } + case 17: + // Bessel I0(x) over [16,INF] + { + boost::math::ntl::RR z = 1 / (boost::math::ntl::RR(1)/16 - x); + return boost::math::cyl_bessel_i(0, z) * sqrt(z) / exp(z); + } + } + return 0; +} + +void show_extra( + const boost::math::tools::polynomial& n, + const boost::math::tools::polynomial& d, + const boost::math::ntl::RR& x_offset, + const boost::math::ntl::RR& y_offset, + int variant) +{ + switch(variant) + { + default: + // do nothing here... + ; + } +} + diff --git a/minimax/main.cpp b/minimax/main.cpp new file mode 100644 index 000000000..16551df86 --- /dev/null +++ b/minimax/main.cpp @@ -0,0 +1,520 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define BOOST_UBLAS_TYPE_CHECK_EPSILON (type_traits::type_sqrt (boost::math::tools::epsilon ())) +#define BOOST_UBLAS_TYPE_CHECK_MIN (type_traits::type_sqrt ( boost::math::tools::min_value())) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for test_main + +extern boost::math::ntl::RR f(const boost::math::ntl::RR& x, int variant); +extern void show_extra( + const boost::math::tools::polynomial& n, + const boost::math::tools::polynomial& d, + const boost::math::ntl::RR& x_offset, + const boost::math::ntl::RR& y_offset, + int variant); + +using namespace boost::spirit; + +boost::math::ntl::RR a(0), b(1); // range to optimise over +bool rel_error(true); +bool pin(false); +int orderN(3); +int orderD(1); +int target_precision(53); +int working_precision(250); +bool started(false); +int variant(0); +int skew(0); +int brake(50); +boost::math::ntl::RR x_offset(0), y_offset(0); +bool auto_offset_y; + +boost::shared_ptr > p_remez; + +boost::math::ntl::RR the_function(const boost::math::ntl::RR& val) +{ + return f(val + x_offset, variant) + y_offset; +} + +void step_some(unsigned count) +{ + try{ + NTL::RR::SetPrecision(working_precision); + if(!started) + { + // + // If we have an automatic y-offset calculate it now: + // + if(auto_offset_y) + { + boost::math::ntl::RR fa, fb, fm; + fa = f(a + x_offset, variant); + fb = f(b + x_offset, variant); + fm = f((a+b)/2 + x_offset, variant); + y_offset = -(fa + fb + fm) / 3; + NTL::RR::SetOutputPrecision(5); + std::cout << "Setting auto-y-offset to " << y_offset << std::endl; + } + // + // Truncate offsets to float precision: + // + x_offset = NTL::RoundToPrecision(x_offset.value(), 20); + y_offset = NTL::RoundToPrecision(y_offset.value(), 20); + // + // Construct new Remez state machine: + // + p_remez.reset(new boost::math::tools::remez_minimax( + &the_function, + orderN, orderD, + a, b, + pin, + rel_error, + skew, + working_precision)); + std::cout << "Max error in interpolated form: " << std::setprecision(3) << std::scientific << boost::math::tools::real_cast(p_remez->max_error()) << std::endl; + // + // Signal that we've started: + // + started = true; + } + unsigned i; + for(i = 0; i < count; ++i) + { + std::cout << "Stepping..." << std::endl; + p_remez->set_brake(brake); + boost::math::ntl::RR r = p_remez->iterate(); + NTL::RR::SetOutputPrecision(3); + std::cout + << "Maximum Deviation Found: " << std::setprecision(3) << std::scientific << boost::math::tools::real_cast(p_remez->max_error()) << std::endl + << "Expected Error Term: " << std::setprecision(3) << std::scientific << boost::math::tools::real_cast(p_remez->error_term()) << std::endl + << "Maximum Relative Change in Control Points: " << std::setprecision(3) << std::scientific << boost::math::tools::real_cast(r) << std::endl; + } + } + catch(const std::exception& e) + { + std::cout << "Step failed with exception: " << e.what() << std::endl; + } +} + +void step(const char*, const char*) +{ + step_some(1); +} + +void show(const char*, const char*) +{ + NTL::RR::SetPrecision(working_precision); + if(started) + { + boost::math::tools::polynomial n = p_remez->numerator(); + boost::math::tools::polynomial d = p_remez->denominator(); + int prec = 2 + (target_precision * 3010LL)/10000; + std::cout << std::scientific << std::setprecision(prec); + NTL::RR::SetOutputPrecision(prec); + boost::numeric::ublas::vector v = p_remez->zero_points(); + + std::cout << " Zeros = {\n"; + unsigned i; + for(i = 0; i < v.size(); ++i) + { + std::cout << " " << v[i] << std::endl; + } + std::cout << " }\n"; + + v = p_remez->chebyshev_points(); + std::cout << " Chebeshev Control Points = {\n"; + for(i = 0; i < v.size(); ++i) + { + std::cout << " " << v[i] << std::endl; + } + std::cout << " }\n"; + + std::cout << "X offset: " << x_offset << std::endl; + std::cout << "Y offset: " << y_offset << std::endl; + + std::cout << "P = {"; + for(i = 0; i < n.size(); ++i) + { + std::cout << " " << n[i] << std::endl; + } + std::cout << " }\n"; + + std::cout << "Q = {"; + for(i = 0; i < d.size(); ++i) + { + std::cout << " " << d[i] << std::endl; + } + std::cout << " }\n"; + + show_extra(n, d, x_offset, y_offset, variant); + } + else + { + std::cerr << "Nothing to display" << std::endl; + } +} + +void do_graph(unsigned points) +{ + NTL::RR::SetPrecision(working_precision); + boost::math::ntl::RR step = (b - a) / (points - 1); + boost::math::ntl::RR x = a; + while(points > 1) + { + NTL::RR::SetOutputPrecision(10); + std::cout << std::setprecision(10) << std::setw(30) << std::left + << boost::lexical_cast(x) << the_function(x) << std::endl; + --points; + x += step; + } + std::cout << std::setprecision(10) << std::setw(30) << std::left + << boost::lexical_cast(b) << the_function(b) << std::endl; +} + +void graph(const char*, const char*) +{ + do_graph(3); +} + +template +void do_test(T, const char* name) +{ + boost::math::ntl::RR::SetPrecision(working_precision); + if(started) + { + // + // We want to test the approximation at fixed precision: + // either float, double or long double. Begin by getting the + // polynomials: + // + boost::math::tools::polynomial n, d; + n = p_remez->numerator(); + d = p_remez->denominator(); + // + // We'll test at the Chebeshev control points which is where + // (in theory) the largest deviation should occur. For good + // measure we'll test at the zeros as well: + // + boost::numeric::ublas::vector + zeros(p_remez->zero_points()), + cheb(p_remez->chebyshev_points()); + + boost::math::ntl::RR max_error(0); + + // + // Do the tests at the zeros: + // + std::cout << "Starting tests at " << name << " precision...\n"; + std::cout << "Absissa Error\n"; + unsigned i; + for(i = 0; i < zeros.size(); ++i) + { + boost::math::ntl::RR true_result = the_function(zeros[i]); + T absissa = boost::math::tools::real_cast(zeros[i]); + boost::math::ntl::RR test_result = n.evaluate(absissa) / d.evaluate(absissa); + boost::math::ntl::RR err; + if(rel_error) + { + err = boost::math::tools::relative_error(test_result, true_result); + } + else + { + err = fabs(test_result - true_result); + } + if(err > max_error) + max_error = err; + std::cout << std::setprecision(6) << std::setw(15) << std::left << absissa + << boost::math::tools::real_cast(err) << std::endl; + } + // + // Do the tests at the Chebeshev control points: + // + for(i = 0; i < cheb.size(); ++i) + { + boost::math::ntl::RR true_result = the_function(cheb[i]); + T absissa = boost::math::tools::real_cast(cheb[i]); + boost::math::ntl::RR test_result = n.evaluate(absissa) / d.evaluate(absissa); + boost::math::ntl::RR err; + if(rel_error) + { + err = boost::math::tools::relative_error(test_result, true_result); + } + else + { + err = fabs(test_result - true_result); + } + if(err > max_error) + max_error = err; + std::cout << std::setprecision(6) << std::setw(15) << std::left << absissa + << boost::math::tools::real_cast(err) << std::endl; + } + std::cout << "Max error found: " << std::setprecision(6) << boost::math::tools::real_cast(max_error) << std::endl; + } + else + { + std::cout << "Nothing to test: try converging an approximation first!!!" << std::endl; + } +} + +void test_float(const char*, const char*) +{ + do_test(float(0), "float"); +} + +void test_double(const char*, const char*) +{ + do_test(double(0), "double"); +} + +void test_long(const char*, const char*) +{ + do_test((long double)(0), "long double"); +} + +void test_all(const char*, const char*) +{ + do_test(float(0), "float"); + do_test(double(0), "double"); + do_test((long double)(0), "long double"); +} + +template +void do_test_n(T, const char* name, unsigned count) +{ + boost::math::ntl::RR::SetPrecision(working_precision); + if(started) + { + // + // We want to test the approximation at fixed precision: + // either float, double or long double. Begin by getting the + // polynomials: + // + boost::math::tools::polynomial n, d; + n = p_remez->numerator(); + d = p_remez->denominator(); + + boost::math::ntl::RR max_error(0); + boost::math::ntl::RR step = (b - a) / count; + + // + // Do the tests at the zeros: + // + std::cout << "Starting tests at " << name << " precision...\n"; + std::cout << "Absissa Error\n"; + for(boost::math::ntl::RR x = a; x <= b; x += step) + { + boost::math::ntl::RR true_result = the_function(x); + T absissa = boost::math::tools::real_cast(x); + boost::math::ntl::RR test_result = n.evaluate(absissa) / d.evaluate(absissa); + boost::math::ntl::RR err; + if(rel_error) + { + err = boost::math::tools::relative_error(test_result, true_result); + } + else + { + err = fabs(test_result - true_result); + } + if(err > max_error) + max_error = err; + std::cout << std::setprecision(6) << std::setw(15) << std::left << boost::math::tools::real_cast(absissa) + << (test_result < true_result ? "-" : "") << boost::math::tools::real_cast(err) << std::endl; + } + std::cout << "Max error found: " << std::setprecision(6) << boost::math::tools::real_cast(max_error) << std::endl; + } + else + { + std::cout << "Nothing to test: try converging an approximation first!!!" << std::endl; + } +} + +void test_n(unsigned n) +{ + do_test_n(boost::math::ntl::RR(), "boost::math::ntl::RR", n); +} + +void test_float_n(unsigned n) +{ + do_test_n(float(0), "float", n); +} + +void test_double_n(unsigned n) +{ + do_test_n(double(0), "double", n); +} + +void test_long_n(unsigned n) +{ + do_test_n((long double)(0), "long double", n); +} + +void rotate(const char*, const char*) +{ + if(p_remez) + { + p_remez->rotate(); + } + else + { + std::cerr << "Nothing to rotate" << std::endl; + } +} + +void rescale(const char*, const char*) +{ + if(p_remez) + { + p_remez->rescale(a, b); + } + else + { + std::cerr << "Nothing to rescale" << std::endl; + } +} + +void graph_poly(const char*, const char*) +{ + int i = 50; + boost::math::ntl::RR::SetPrecision(working_precision); + if(started) + { + // + // We want to test the approximation at fixed precision: + // either float, double or long double. Begin by getting the + // polynomials: + // + boost::math::tools::polynomial n, d; + n = p_remez->numerator(); + d = p_remez->denominator(); + + boost::math::ntl::RR max_error(0); + boost::math::ntl::RR step = (b - a) / i; + + std::cout << "Evaluating Numerator...\n"; + boost::math::ntl::RR val; + for(val = a; val <= b; val += step) + std::cout << n.evaluate(val) << std::endl; + std::cout << "Evaluating Denominator...\n"; + for(val = a; val <= b; val += step) + std::cout << d.evaluate(val) << std::endl; + } + else + { + std::cout << "Nothing to test: try converging an approximation first!!!" << std::endl; + } +} + +int test_main(int, char* []) +{ + std::string line; + while(std::getline(std::cin, line)) + { + if(parse(line.c_str(), str_p("quit"), space_p).full) + return 0; + if(false == parse(line.c_str(), + ( + + str_p("range")[assign_a(started, false)] && real_p[assign_a(a)] && real_p[assign_a(b)] + || + str_p("relative")[assign_a(started, false)][assign_a(rel_error, true)] + || + str_p("absolute")[assign_a(started, false)][assign_a(rel_error, false)] + || + str_p("pin")[assign_a(started, false)] && str_p("true")[assign_a(pin, true)] + || + str_p("pin")[assign_a(started, false)] && str_p("false")[assign_a(pin, false)] + || + str_p("pin")[assign_a(started, false)] && str_p("1")[assign_a(pin, true)] + || + str_p("pin")[assign_a(started, false)] && str_p("0")[assign_a(pin, false)] + || + str_p("pin")[assign_a(started, false)][assign_a(pin, true)] + || + str_p("order")[assign_a(started, false)] && uint_p[assign_a(orderN)] && uint_p[assign_a(orderD)] + || + str_p("order")[assign_a(started, false)] && uint_p[assign_a(orderN)] + || + str_p("target-precision") && uint_p[assign_a(target_precision)] + || + str_p("working-precision")[assign_a(started, false)] && uint_p[assign_a(working_precision)] + || + str_p("variant")[assign_a(started, false)] && int_p[assign_a(variant)] + || + str_p("skew")[assign_a(started, false)] && int_p[assign_a(skew)] + || + str_p("brake") && int_p[assign_a(brake)] + || + str_p("step") && int_p[&step_some] + || + str_p("step")[&step] + || + str_p("poly")[&graph_poly] + || + str_p("info")[&show] + || + str_p("graph") && uint_p[&do_graph] + || + str_p("graph")[&graph] + || + str_p("x-offset") && real_p[assign_a(x_offset)] + || + str_p("y-offset") && str_p("auto")[assign_a(auto_offset_y, true)] + || + str_p("y-offset") && real_p[assign_a(y_offset)][assign_a(auto_offset_y, false)] + || + str_p("test") && str_p("float") && uint_p[&test_float_n] + || + str_p("test") && str_p("float")[&test_float] + || + str_p("test") && str_p("double") && uint_p[&test_double_n] + || + str_p("test") && str_p("double")[&test_double] + || + str_p("test") && str_p("long") && uint_p[&test_long_n] + || + str_p("test") && str_p("long")[&test_long] + || + str_p("test") && str_p("all")[&test_all] + || + str_p("test") && uint_p[&test_n] + || + str_p("rotate")[&rotate] + || + str_p("rescale") && real_p[assign_a(a)] && real_p[assign_a(b)] && epsilon_p[&rescale] + + ), space_p).full) + { + std::cout << "Unable to parse directive: \"" << line << "\"" << std::endl; + } + else + { + std::cout << "a = " << a << std::endl; + std::cout << "b = " << b << std::endl; + std::cout << "Relative Error = " << rel_error << std::endl; + std::cout << "Pin to Origin = " << pin << std::endl; + std::cout << "Order (Numerator) = " << orderN << std::endl; + std::cout << "Order (Denominator) = " << orderD << std::endl; + std::cout << "Target Precision = " << target_precision << std::endl; + std::cout << "Working Precision = " << working_precision << std::endl; + std::cout << "Variant = " << variant << std::endl; + std::cout << "Skew = " << skew << std::endl; + std::cout << "Brake = " << brake << std::endl; + std::cout << "X Offset = " << x_offset << std::endl; + std::cout << "Y Offset = " << y_offset << std::endl; + std::cout << "Automatic Y Offset = " << auto_offset_y << std::endl; + } + } + return 0; +} diff --git a/octonion/octonion_test.cpp b/octonion/octonion_test.cpp index d49d8a476..848e4de38 100644 --- a/octonion/octonion_test.cpp +++ b/octonion/octonion_test.cpp @@ -33,15 +33,20 @@ template<> struct string_type_name \ DEFINE_TYPE_NAME(float); DEFINE_TYPE_NAME(double); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS DEFINE_TYPE_NAME(long double); +#endif - +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS typedef boost::mpl::list test_types; +#else +typedef boost::mpl::list test_types; +#endif // Apple GCC 4.0 uses the "double double" format for its long double, // which means that epsilon is VERY small but useless for // comparisons. So, don't do those comparisons. -#if defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4 +#if (defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) typedef boost::mpl::list near_eps_test_types; #else typedef boost::mpl::list near_eps_test_types; diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 new file mode 100644 index 000000000..b20c97be2 --- /dev/null +++ b/performance/Jamfile.v2 @@ -0,0 +1,27 @@ +# Copyright 2006 John Maddock, Paul A. Bristow and Xiaogang Zhang. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt). + + +exe math_performance : +distributions.cpp +main.cpp +test_erf.cpp +test_gamma.cpp +test_ibeta.cpp +test_igamma.cpp +test_polynomial.cpp +test_reference.cpp ; + +install dist-bin + : + math_performance + : + EXE + ./bin + : + release + ; + + diff --git a/performance/distributions.cpp b/performance/distributions.cpp new file mode 100644 index 000000000..1c483749f --- /dev/null +++ b/performance/distributions.cpp @@ -0,0 +1,452 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include "performance_measure.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +double probabilities[] = { + 1e-5, + 1e-4, + 1e-3, + 1e-2, + 0.05, + 0.1, + 0.2, + 0.3, + 0.4, + 0.5, + 0.6, + 0.7, + 0.8, + 0.9, + 0.95, + 1-1e-5, + 1-1e-4, + 1-1e-3, + 1-1e-2 +}; + +int int_values[] = { + 1, + 2, + 3, + 5, + 10, + 20, + 50, + 100, + 1000, + 10000, + 100000 +}; + +double real_values[] = { + 1e-5, + 1e-4, + 1e-2, + 1e-1, + 1, + 10, + 100, + 1000, + 10000, + 100000 +}; + +#define BOOST_MATH_DISTRIBUTION2_TEST(name, param1_table, param2_table, random_variable_table, probability_table) \ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist, name), "dist-" BOOST_STRINGIZE(name) "-cdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += cdf(boost::math:: BOOST_JOIN(name, _distribution) <>(param1_table[i], param2_table[j]), random_variable_table[k]);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_pdf_, name), "dist-" BOOST_STRINGIZE(name) "-pdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += pdf(boost::math:: BOOST_JOIN(name, _distribution) <>(param1_table[i], param2_table[j]), random_variable_table[k]);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_quant, name), "dist-" BOOST_STRINGIZE(name) "-quantile")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(probability_table)/sizeof(probability_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += quantile(boost::math:: BOOST_JOIN(name, _distribution) <>(param1_table[i], param2_table[j]), probability_table[k]);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + } + +#define BOOST_MATH_DISTRIBUTION1_TEST(name, param1_table, random_variable_table, probability_table) \ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist, name), "dist-" BOOST_STRINGIZE(name) "-cdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += cdf(boost::math:: BOOST_JOIN(name, _distribution) <>(param1_table[i]), random_variable_table[k]);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_pdf_, name), "dist-" BOOST_STRINGIZE(name) "-pdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += pdf(boost::math:: BOOST_JOIN(name, _distribution) <>(param1_table[i]), random_variable_table[k]);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_quant, name), "dist-" BOOST_STRINGIZE(name) "-quantile")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(probability_table)/sizeof(probability_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += quantile(boost::math:: BOOST_JOIN(name, _distribution) <>(param1_table[i]), probability_table[k]);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + } + +BOOST_MATH_DISTRIBUTION2_TEST(beta, probabilities, probabilities, probabilities, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(binomial, int_values, probabilities, int_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(cauchy, int_values, real_values, int_values, probabilities) +BOOST_MATH_DISTRIBUTION1_TEST(chi_squared, int_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION1_TEST(exponential, real_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(fisher_f, int_values, int_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(gamma, real_values, real_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(lognormal, real_values, real_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(negative_binomial, int_values, probabilities, int_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(normal, real_values, real_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION1_TEST(poisson, real_values, int_values, probabilities) +BOOST_MATH_DISTRIBUTION1_TEST(students_t, int_values, real_values, probabilities) +BOOST_MATH_DISTRIBUTION2_TEST(weibull, real_values, real_values, real_values, probabilities) + +#ifdef TEST_R + +#define MATHLIB_STANDALONE 1 + +extern "C" { +#include "Rmath.h" +} + +#define BOOST_MATH_R_DISTRIBUTION2_TEST(name, param1_table, param2_table, random_variable_table, probability_table) \ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist, name), "dist-" #name "-R-cdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += p##name (random_variable_table[k], param1_table[i], param2_table[j], 1, 0);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_pdf_, name), "dist-" #name "-R-pdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += d##name (random_variable_table[k], param1_table[i], param2_table[j], 0);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_quant, name), "dist-" #name "-R-quantile")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(probability_table)/sizeof(probability_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += q##name (probability_table[k], param1_table[i], param2_table[j], 1, 0);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + } + +#define BOOST_MATH_R_DISTRIBUTION1_TEST(name, param1_table, random_variable_table, probability_table) \ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist, name), "dist-" #name "-R-cdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += p##name (random_variable_table[k], param1_table[i], 1, 0);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_pdf_, name), "dist-" #name "-R-pdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += d##name (random_variable_table[k], param1_table[i], 0);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_quant, name), "dist-" #name "-R-quantile")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(probability_table)/sizeof(probability_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += q##name (probability_table[k], param1_table[i], 1, 0);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + } + +BOOST_MATH_R_DISTRIBUTION2_TEST(beta, probabilities, probabilities, probabilities, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(binom, int_values, probabilities, int_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(cauchy, int_values, real_values, int_values, probabilities) +BOOST_MATH_R_DISTRIBUTION1_TEST(chisq, int_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION1_TEST(exp, real_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(f, int_values, int_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(gamma, real_values, real_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(lnorm, real_values, real_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(nbinom, int_values, probabilities, int_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(norm, real_values, real_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION1_TEST(pois, real_values, int_values, probabilities) +BOOST_MATH_R_DISTRIBUTION1_TEST(t, int_values, real_values, probabilities) +BOOST_MATH_R_DISTRIBUTION2_TEST(weibull, real_values, real_values, real_values, probabilities) + +#endif + +#ifdef TEST_CEPHES + +extern "C"{ + +double bdtr(int k, int n, double p); +double bdtri(int k, int n, double p); + +double chdtr(double df, double x); +double chdtri(double df, double p); + +double fdtr(int k, int n, double p); +double fdtri(int k, int n, double p); + +double nbdtr(int k, int n, double p); +double nbdtri(int k, int n, double p); + +} + +#define BOOST_MATH_CEPHES_DISTRIBUTION2_TEST(name, param1_table, param2_table, random_variable_table, probability_table) \ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist, name), "dist-" #name "-cephes-cdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += name##dtr (param1_table[i], param2_table[j], random_variable_table[k]);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_quant, name), "dist-" #name "-cephes-quantile")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned b_size = sizeof(param2_table)/sizeof(param2_table[0]);\ + unsigned c_size = sizeof(probability_table)/sizeof(probability_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned j = 0; j < b_size; ++j)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += name##dtri (param1_table[i], param2_table[j], probability_table[k]);\ + }\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * b_size * c_size);\ + } + +#define BOOST_MATH_CEPHES_DISTRIBUTION1_TEST(name, param1_table, random_variable_table, probability_table) \ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist, name), "dist-" #name "-cephes-cdf")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(random_variable_table)/sizeof(random_variable_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += name##dtr (param1_table[i], random_variable_table[k]);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + }\ + BOOST_MATH_PERFORMANCE_TEST(BOOST_JOIN(dist_quant, name), "dist-" #name "-cephes-quantile")\ + {\ + double result = 0;\ + unsigned a_size = sizeof(param1_table)/sizeof(param1_table[0]);\ + unsigned c_size = sizeof(probability_table)/sizeof(probability_table[0]);\ + \ + for(unsigned i = 0; i < a_size; ++i)\ + {\ + for(unsigned k = 0; k < c_size; ++k)\ + {\ + result += name##dtri (param1_table[i], probability_table[k]);\ + }\ + }\ + \ + consume_result(result);\ + set_call_count(a_size * c_size);\ + } +// Cephes inverse doesn't actually calculate the quantile!!! +// BOOST_MATH_CEPHES_DISTRIBUTION2_TEST(b, int_values, int_values, probabilities, probabilities) +BOOST_MATH_CEPHES_DISTRIBUTION1_TEST(ch, int_values, real_values, probabilities) +BOOST_MATH_CEPHES_DISTRIBUTION2_TEST(f, int_values, int_values, real_values, probabilities) +// Cephes inverse doesn't calculate the quantile!!! +// BOOST_MATH_CEPHES_DISTRIBUTION2_TEST(nb, int_values, int_values, probabilities, probabilities) + +#endif + diff --git a/performance/main.cpp b/performance/main.cpp new file mode 100644 index 000000000..c70f1182a --- /dev/null +++ b/performance/main.cpp @@ -0,0 +1,212 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include "performance_measure.hpp" +#include + +#ifdef TEST_GSL +#include +#include +#endif + + +extern void reference_evaluate(); + +std::map times; +std::set tests; +double total = 0; +int call_count = 0; + +std::set& all_tests() +{ + static std::set i; + return i; +} + +void add_new_test(test_info i) +{ + all_tests().insert(i); +} + +void set_call_count(int i) +{ + call_count = i; +} + +void show_help() +{ + std::cout << "Specify on the command line which functions to test.\n" + "Available options are:\n"; + std::set::const_iterator i(all_tests().begin()), j(all_tests().end()); + while(i != j) + { + std::cout << " --" << (*i).name << std::endl; + ++i; + } + std::cout << "Or use --all to test everything." << std::endl; +} + +void run_tests() +{ + // Get time for empty proceedure: + double reference_time = performance_measure(reference_evaluate); + + std::set::const_iterator i, j; + for(i = tests.begin(), j = tests.end(); i != j; ++i) + { + set_call_count(1); + std::cout << "Testing " << std::left << std::setw(40) << i->name << std::flush; + double time = performance_measure(i->proc) - reference_time; + time /= call_count; + std::cout << std::setprecision(3) << std::scientific << time << std::endl; + } +} + +bool add_named_test(const char* name) +{ + bool found = false; + std::set::const_iterator a(all_tests().begin()), b(all_tests().end()); + while(a != b) + { + if(std::strcmp(name, (*a).name) == 0) + { + found = true; + tests.insert(*a); + break; + } + ++a; + } + return found; +} + +void print_current_config() +{ + std::cout << "Currently, polynomial evaluation uses method " << BOOST_MATH_POLY_METHOD << std::endl; + std::cout << "Currently, rational function evaluation uses method " << BOOST_MATH_RATIONAL_METHOD << std::endl; + if(BOOST_MATH_POLY_METHOD + BOOST_MATH_RATIONAL_METHOD > 0) + std::cout << "Currently, the largest order of polynomial or rational function" + " that uses a method other than 0, is " << BOOST_MATH_MAX_POLY_ORDER << std::endl; + bool uses_mixed_tables = boost::is_same::value; + if(uses_mixed_tables) + std::cout << "Currently, rational functions with integer coefficients are evaluated using mixed integer/real arithmetic" << std::endl; + else + std::cout << "Currently, rational functions with integer coefficients are evaluated using all real arithmetic (integer coefficients are actually stored as reals)" << std::endl << std::endl; + std::cout << "Policies are currently set as follows:\n\n"; + std::cout << "Policy Value\n"; + std::cout << "BOOST_MATH_DOMAIN_ERROR_POLICY " << BOOST_STRINGIZE(BOOST_MATH_DOMAIN_ERROR_POLICY) << std::endl; + std::cout << "BOOST_MATH_POLE_ERROR_POLICY " << BOOST_STRINGIZE(BOOST_MATH_POLE_ERROR_POLICY) << std::endl; + std::cout << "BOOST_MATH_OVERFLOW_ERROR_POLICY " << BOOST_STRINGIZE(BOOST_MATH_OVERFLOW_ERROR_POLICY) << std::endl; + std::cout << "BOOST_MATH_UNDERFLOW_ERROR_POLICY " << BOOST_STRINGIZE(BOOST_MATH_UNDERFLOW_ERROR_POLICY) << std::endl; + std::cout << "BOOST_MATH_DENORM_ERROR_POLICY " << BOOST_STRINGIZE(BOOST_MATH_DENORM_ERROR_POLICY) << std::endl; + std::cout << "BOOST_MATH_EVALUATION_ERROR_POLICY " << BOOST_STRINGIZE(BOOST_MATH_EVALUATION_ERROR_POLICY) << std::endl; + std::cout << "BOOST_MATH_DIGITS10_POLICY " << BOOST_STRINGIZE(BOOST_MATH_DIGITS10_POLICY) << std::endl; + std::cout << "BOOST_MATH_PROMOTE_FLOAT_POLICY " << BOOST_STRINGIZE(BOOST_MATH_PROMOTE_FLOAT_POLICY) << std::endl; + std::cout << "BOOST_MATH_PROMOTE_DOUBLE_POLICY " << BOOST_STRINGIZE(BOOST_MATH_PROMOTE_DOUBLE_POLICY) << std::endl; + std::cout << "BOOST_MATH_DISCRETE_QUANTILE_POLICY " << BOOST_STRINGIZE(BOOST_MATH_DISCRETE_QUANTILE_POLICY) << std::endl; + std::cout << "BOOST_MATH_ASSERT_UNDEFINED_POLICY " << BOOST_STRINGIZE(BOOST_MATH_ASSERT_UNDEFINED_POLICY) << std::endl; + std::cout << "BOOST_MATH_MAX_SERIES_ITERATION_POLICY " << BOOST_STRINGIZE(BOOST_MATH_MAX_SERIES_ITERATION_POLICY) << std::endl; + std::cout << "BOOST_MATH_MAX_ROOT_ITERATION_POLICY " << BOOST_STRINGIZE(BOOST_MATH_MAX_ROOT_ITERATION_POLICY) << std::endl; +} + +int main(int argc, const char** argv) +{ + try{ + +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif + + if(argc >= 2) + { + for(int i = 1; i < argc; ++i) + { + if(std::strcmp(argv[i], "--help") == 0) + { + show_help(); + } + else if(std::strcmp(argv[i], "--tune") == 0) + { + print_current_config(); + add_named_test("Polynomial-method-0"); + add_named_test("Polynomial-method-1"); + add_named_test("Polynomial-method-2"); + add_named_test("Polynomial-method-3"); + add_named_test("Polynomial-mixed-method-0"); + add_named_test("Polynomial-mixed-method-1"); + add_named_test("Polynomial-mixed-method-2"); + add_named_test("Polynomial-mixed-method-3"); + add_named_test("Rational-method-0"); + add_named_test("Rational-method-1"); + add_named_test("Rational-method-2"); + add_named_test("Rational-method-3"); + add_named_test("Rational-mixed-method-0"); + add_named_test("Rational-mixed-method-1"); + add_named_test("Rational-mixed-method-2"); + add_named_test("Rational-mixed-method-3"); + } + else if(std::strcmp(argv[i], "--all") == 0) + { + print_current_config(); + std::set::const_iterator a(all_tests().begin()), b(all_tests().end()); + while(a != b) + { + tests.insert(*a); + ++a; + } + } + else + { + bool found = false; + if((argv[i][0] == '-') && (argv[i][1] == '-')) + { + found = add_named_test(argv[i] + 2); + } + if(!found) + { + std::cerr << "Unknown option: " << argv[i] << std::endl; + show_help(); + return 1; + } + } + } + run_tests(); + } + else + { + show_help(); + } + // + // This is just to confuse the optimisers: + // + if(argc == 100000) + { + std::cerr << total << std::endl; + } + + } + catch(const std::exception& e) + { + std::cerr << e.what() << std::endl; + } + + return 0; +} + +void consume_result(double x) +{ + // Do nothing proceedure, don't let whole program optimisation + // optimise this away - doing so may cause false readings.... + total += x; +} diff --git a/performance/performance_measure.hpp b/performance/performance_measure.hpp new file mode 100644 index 000000000..894426798 --- /dev/null +++ b/performance/performance_measure.hpp @@ -0,0 +1,86 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_PERFORMANCE_MEASURE_HPP +#define BOOST_MATH_PERFORMANCE_MEASURE_HPP + +#include +#include +#include + +template +double performance_measure(F f) +{ + unsigned count = 1; + double time, result; + // + // Begin by figuring out how many times to repeat + // the function call in order to get a measureable time: + // + do + { + boost::timer t; + for(unsigned i = 0; i < count; ++i) + f(); + time = t.elapsed(); + count *= 2; + t.restart(); + }while(time < 0.5); + + count /= 2; + result = time; + // + // Now repeat the measurement over and over + // and take the shortest measured time as the + // result, generally speaking this gives us + // consistent results: + // + for(unsigned i = 0; i < 10u;++i) + { + boost::timer t; + for(unsigned i = 0; i < count; ++i) + f(); + time = t.elapsed(); + if(time < result) + result = time; + t.restart(); + } + return result / count; +} + +struct test_info +{ + test_info(const char* n, void (*p)()); + const char* name; + void (*proc)(); +}; + +inline bool operator < (const test_info& a, const test_info& b) +{ + return std::strcmp(a.name, b.name) < 0; +} + +extern void consume_result(double); +extern void set_call_count(int i); +extern void add_new_test(test_info i); + +inline test_info::test_info(const char* n, void (*p)()) +{ + name = n; + proc = p; + add_new_test(*this); +} + +#define BOOST_MATH_PERFORMANCE_TEST(name, string) \ + void BOOST_JOIN(name, __LINE__) ();\ + namespace{\ + test_info BOOST_JOIN(BOOST_JOIN(name, _init), __LINE__)(string, BOOST_JOIN(name, __LINE__));\ + }\ + void BOOST_JOIN(name, __LINE__) () + + + +#endif // BOOST_MATH_PERFORMANCE_MEASURE_HPP + diff --git a/performance/required_defines.hpp b/performance/required_defines.hpp new file mode 100644 index 000000000..ba0e72a56 --- /dev/null +++ b/performance/required_defines.hpp @@ -0,0 +1,9 @@ +// Copyright John Maddock 2007. +// 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) + +#define BOOST_MATH_DOMAIN_ERROR_POLICY errno_on_error +#define BOOST_MATH_POLE_ERROR_POLICY errno_on_error +#define BOOST_MATH_OVERFLOW_ERROR_POLICY errno_on_error + diff --git a/performance/test_erf.cpp b/performance/test_erf.cpp new file mode 100644 index 000000000..1052c1a05 --- /dev/null +++ b/performance/test_erf.cpp @@ -0,0 +1,109 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" +#include "performance_measure.hpp" + +#include +#include + +#define T double +#include "../test/erf_data.ipp" +#include "../test/erf_large_data.ipp" +#include "../test/erf_small_data.ipp" + +template +double erf_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += boost::math::erf(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(erf_test, "erf") +{ + double result = erf_evaluate2(erf_data); + result += erf_evaluate2(erf_large_data); + result += erf_evaluate2(erf_small_data); + + consume_result(result); + set_call_count((sizeof(erf_data) + sizeof(erf_large_data) + sizeof(erf_small_data)) / sizeof(erf_data[0])); +} + +template +double erf_inv_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += boost::math::erf_inv(data[i][1]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(erf_inv_test, "erf_inv") +{ + double result = erf_inv_evaluate2(erf_data); + result += erf_inv_evaluate2(erf_large_data); + result += erf_inv_evaluate2(erf_small_data); + + consume_result(result); + set_call_count((sizeof(erf_data) + sizeof(erf_large_data) + sizeof(erf_small_data)) / sizeof(erf_data[0])); +} + +#ifdef TEST_CEPHES + +extern "C" { + +double erf(double); + +} + +template +double erf_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += erf(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(erf_test, "erf-cephes") +{ + double result = erf_evaluate_cephes(erf_data); + result += erf_evaluate_cephes(erf_large_data); + result += erf_evaluate_cephes(erf_small_data); + + consume_result(result); + set_call_count((sizeof(erf_data) + sizeof(erf_large_data) + sizeof(erf_small_data)) / sizeof(erf_data[0])); +} + +#endif + +#ifdef TEST_GSL + +#include + +template +double erf_evaluate_gsl(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += gsl_sf_erf (data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(erf_test, "erf-gsl") +{ + double result = erf_evaluate_gsl(erf_data); + result += erf_evaluate_gsl(erf_large_data); + result += erf_evaluate_gsl(erf_small_data); + + consume_result(result); + set_call_count((sizeof(erf_data) + sizeof(erf_large_data) + sizeof(erf_small_data)) / sizeof(erf_data[0])); +} + +#endif + + diff --git a/performance/test_gamma.cpp b/performance/test_gamma.cpp new file mode 100644 index 000000000..2d17fd514 --- /dev/null +++ b/performance/test_gamma.cpp @@ -0,0 +1,200 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include "performance_measure.hpp" + +#include +#include + +#define T double +#include "../test/test_gamma_data.ipp" + +template +double gamma_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += boost::math::tgamma(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(gamma_test, "gamma") +{ + double result = gamma_evaluate2(factorials); + result += gamma_evaluate2(near_1); + result += gamma_evaluate2(near_2); + result += gamma_evaluate2(near_0); + result += gamma_evaluate2(near_m10); + result += gamma_evaluate2(near_m55); + + consume_result(result); + set_call_count( + (sizeof(factorials) + + sizeof(near_1) + + sizeof(near_2) + + sizeof(near_0) + + sizeof(near_m10) + + sizeof(near_m55)) / sizeof(factorials[0])); +} + +template +double lgamma_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += boost::math::lgamma(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(lgamma_test, "lgamma") +{ + double result = lgamma_evaluate2(factorials); + result += lgamma_evaluate2(near_1); + result += lgamma_evaluate2(near_2); + result += lgamma_evaluate2(near_0); + result += lgamma_evaluate2(near_m10); + result += lgamma_evaluate2(near_m55); + + consume_result(result); + set_call_count( + (sizeof(factorials) + + sizeof(near_1) + + sizeof(near_2) + + sizeof(near_0) + + sizeof(near_m10) + + sizeof(near_m55)) / sizeof(factorials[0])); +} + +#ifdef TEST_CEPHES + +extern "C" { + +double gamma(double); +double lgam(double); + +} + +template +double gamma_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += gamma(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(gamma_test, "gamma-cephes") +{ + double result = gamma_evaluate_cephes(factorials); + result += gamma_evaluate_cephes(near_1); + result += gamma_evaluate_cephes(near_2); + result += gamma_evaluate_cephes(near_0); + result += gamma_evaluate_cephes(near_m10); + result += gamma_evaluate_cephes(near_m55); + + consume_result(result); + set_call_count( + (sizeof(factorials) + + sizeof(near_1) + + sizeof(near_2) + + sizeof(near_0) + + sizeof(near_m10) + + sizeof(near_m55)) / sizeof(factorials[0])); +} + +template +double lgamma_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += lgam(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(lgamma_test, "lgamma-cephes") +{ + double result = lgamma_evaluate_cephes(factorials); + result += lgamma_evaluate_cephes(near_1); + result += lgamma_evaluate_cephes(near_2); + result += lgamma_evaluate_cephes(near_0); + result += lgamma_evaluate_cephes(near_m10); + result += lgamma_evaluate_cephes(near_m55); + + consume_result(result); + set_call_count( + (sizeof(factorials) + + sizeof(near_1) + + sizeof(near_2) + + sizeof(near_0) + + sizeof(near_m10) + + sizeof(near_m55)) / sizeof(factorials[0])); +} + +#endif + +#ifdef TEST_GSL + +#include + +template +double gamma_evaluate_gsl(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += gsl_sf_gamma(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(gamma_test, "gamma-gsl") +{ + double result = gamma_evaluate_gsl(factorials); + result += gamma_evaluate_gsl(near_1); + result += gamma_evaluate_gsl(near_2); + result += gamma_evaluate_gsl(near_0); + result += gamma_evaluate_gsl(near_m10); + result += gamma_evaluate_gsl(near_m55); + + consume_result(result); + set_call_count( + (sizeof(factorials) + + sizeof(near_1) + + sizeof(near_2) + + sizeof(near_0) + + sizeof(near_m10) + + sizeof(near_m55)) / sizeof(factorials[0])); +} + +template +double lgamma_evaluate_gsl(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += gsl_sf_lngamma(data[i][0]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(lgamma_test, "lgamma-gsl") +{ + double result = lgamma_evaluate_gsl(factorials); + result += lgamma_evaluate_gsl(near_1); + result += lgamma_evaluate_gsl(near_2); + result += lgamma_evaluate_gsl(near_0); + result += lgamma_evaluate_gsl(near_m10); + result += lgamma_evaluate_gsl(near_m55); + + consume_result(result); + set_call_count( + (sizeof(factorials) + + sizeof(near_1) + + sizeof(near_2) + + sizeof(near_0) + + sizeof(near_m10) + + sizeof(near_m55)) / sizeof(factorials[0])); +} + +#endif + diff --git a/performance/test_ibeta.cpp b/performance/test_ibeta.cpp new file mode 100644 index 000000000..a9a33e1de --- /dev/null +++ b/performance/test_ibeta.cpp @@ -0,0 +1,191 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include "performance_measure.hpp" + +#include +#include + +#define T double +#include "../test/ibeta_data.ipp" +#include "../test/ibeta_int_data.ipp" +#include "../test/ibeta_large_data.ipp" +#include "../test/ibeta_small_data.ipp" + +template +double ibeta_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += boost::math::ibeta(data[i][0], data[i][1], data[i][2]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(ibeta_test, "ibeta") +{ + double result = ibeta_evaluate2(ibeta_data); + result += ibeta_evaluate2(ibeta_int_data); + result += ibeta_evaluate2(ibeta_large_data); + result += ibeta_evaluate2(ibeta_small_data); + + consume_result(result); + set_call_count( + (sizeof(ibeta_data) + + sizeof(ibeta_int_data) + + sizeof(ibeta_large_data) + + sizeof(ibeta_small_data)) / sizeof(ibeta_data[0])); +} + +template +double ibeta_inv_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += boost::math::ibeta_inv(data[i][0], data[i][1], data[i][5]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(ibeta_inv_test, "ibeta_inv") +{ + double result = ibeta_inv_evaluate2(ibeta_data); + result += ibeta_inv_evaluate2(ibeta_int_data); + result += ibeta_inv_evaluate2(ibeta_large_data); + result += ibeta_inv_evaluate2(ibeta_small_data); + + consume_result(result); + set_call_count( + (sizeof(ibeta_data) + + sizeof(ibeta_int_data) + + sizeof(ibeta_large_data) + + sizeof(ibeta_small_data)) / sizeof(ibeta_data[0])); +} + +template +double ibeta_invab_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + { + //std::cout << "ibeta_inva(" << data[i][1] << "," << data[i][2] << "," << data[i][5] << ");" << std::endl; + result += boost::math::ibeta_inva(data[i][1], data[i][2], data[i][5]); + //std::cout << "ibeta_invb(" << data[i][0] << "," << data[i][2] << "," << data[i][5] << ");" << std::endl; + result += boost::math::ibeta_invb(data[i][0], data[i][2], data[i][5]); + //std::cout << "ibetac_inva(" << data[i][1] << "," << data[i][2] << "," << data[i][6] << ");" << std::endl; + result += boost::math::ibetac_inva(data[i][1], data[i][2], data[i][6]); + //std::cout << "ibetac_invb(" << data[i][0] << "," << data[i][2] << "," << data[i][6] << ");" << std::endl; + result += boost::math::ibetac_invb(data[i][0], data[i][2], data[i][6]); + } + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(ibeta_test, "ibeta_invab") +{ + double result = ibeta_invab_evaluate2(ibeta_data); + result += ibeta_invab_evaluate2(ibeta_int_data); + result += ibeta_invab_evaluate2(ibeta_large_data); + result += ibeta_invab_evaluate2(ibeta_small_data); + + consume_result(result); + set_call_count( + 4 * (sizeof(ibeta_data) + + sizeof(ibeta_int_data) + + sizeof(ibeta_large_data) + + sizeof(ibeta_small_data)) / sizeof(ibeta_data[0])); +} + +#ifdef TEST_CEPHES + +extern "C" { + +double incbet(double a, double b, double x); +double incbi(double a, double b, double y); + +} + +template +double ibeta_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += incbet(data[i][0], data[i][1], data[i][2]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(ibeta_test, "ibeta-cephes") +{ + double result = ibeta_evaluate_cephes(ibeta_data); + result += ibeta_evaluate_cephes(ibeta_int_data); + result += ibeta_evaluate_cephes(ibeta_large_data); + result += ibeta_evaluate_cephes(ibeta_small_data); + + consume_result(result); + set_call_count( + (sizeof(ibeta_data) + + sizeof(ibeta_int_data) + + sizeof(ibeta_large_data) + + sizeof(ibeta_small_data)) / sizeof(ibeta_data[0])); +} + +template +double ibeta_inv_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += incbi(data[i][0], data[i][1], data[i][5]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(ibeta_inv_test, "ibeta_inv-cephes") +{ + double result = ibeta_inv_evaluate_cephes(ibeta_data); + result += ibeta_inv_evaluate_cephes(ibeta_int_data); + result += ibeta_inv_evaluate_cephes(ibeta_large_data); + result += ibeta_inv_evaluate_cephes(ibeta_small_data); + + consume_result(result); + set_call_count( + (sizeof(ibeta_data) + + sizeof(ibeta_int_data) + + sizeof(ibeta_large_data) + + sizeof(ibeta_small_data)) / sizeof(ibeta_data[0])); +} + +#endif + +#ifdef TEST_GSL +// +// This test segfaults inside GSL.... +// + +#include + +template +double ibeta_evaluate_gsl(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += gsl_sf_beta_inc(data[i][0], data[i][1], data[i][2]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(ibeta_test, "ibeta-gsl") +{ + double result = ibeta_evaluate_gsl(ibeta_data); + result += ibeta_evaluate_gsl(ibeta_int_data); + result += ibeta_evaluate_gsl(ibeta_large_data); + result += ibeta_evaluate_gsl(ibeta_small_data); + + consume_result(result); + set_call_count( + (sizeof(ibeta_data) + + sizeof(ibeta_int_data) + + sizeof(ibeta_large_data) + + sizeof(ibeta_small_data)) / sizeof(ibeta_data[0])); +} + +#endif + diff --git a/performance/test_igamma.cpp b/performance/test_igamma.cpp new file mode 100644 index 000000000..b81de2bfa --- /dev/null +++ b/performance/test_igamma.cpp @@ -0,0 +1,190 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include "performance_measure.hpp" + +#include +#include + +#define T double +#include "../test/igamma_big_data.ipp" +#include "../test/igamma_int_data.ipp" +#include "../test/igamma_med_data.ipp" +#include "../test/igamma_small_data.ipp" + +template +double igamma_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + { + result += boost::math::gamma_p(data[i][0], data[i][1]); + result += boost::math::gamma_q(data[i][0], data[i][1]); + } + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(igamma_test, "igamma") +{ + double result = igamma_evaluate2(igamma_big_data); + result += igamma_evaluate2(igamma_int_data); + result += igamma_evaluate2(igamma_med_data); + result += igamma_evaluate2(igamma_small_data); + + consume_result(result); + set_call_count( + 2 * (sizeof(igamma_big_data) + + sizeof(igamma_int_data) + + sizeof(igamma_med_data) + + sizeof(igamma_small_data)) / sizeof(igamma_big_data[0])); +} + +template +double igamma_inv_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + { + result += boost::math::gamma_p_inv(data[i][0], data[i][5]); + result += boost::math::gamma_q_inv(data[i][0], data[i][3]); + } + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(igamma_inv_test, "igamma_inv") +{ + double result = igamma_inv_evaluate2(igamma_big_data); + result += igamma_inv_evaluate2(igamma_int_data); + result += igamma_inv_evaluate2(igamma_med_data); + result += igamma_inv_evaluate2(igamma_small_data); + + consume_result(result); + set_call_count( + 2 * (sizeof(igamma_big_data) + + sizeof(igamma_int_data) + + sizeof(igamma_med_data) + + sizeof(igamma_small_data)) / sizeof(igamma_big_data[0])); +} + +template +double igamma_inva_evaluate2(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + { + result += boost::math::gamma_p_inva(data[i][1], data[i][5]); + result += boost::math::gamma_q_inva(data[i][1], data[i][3]); + } + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(igamma_inva_test, "igamma_inva") +{ + double result = igamma_inva_evaluate2(igamma_big_data); + result += igamma_inva_evaluate2(igamma_int_data); + result += igamma_inva_evaluate2(igamma_med_data); + result += igamma_inva_evaluate2(igamma_small_data); + + consume_result(result); + set_call_count( + 2 * (sizeof(igamma_big_data) + + sizeof(igamma_int_data) + + sizeof(igamma_med_data) + + sizeof(igamma_small_data)) / sizeof(igamma_big_data[0])); +} + +#ifdef TEST_CEPHES + +extern "C" { + +double igam(double, double); +double igami(double, double); + +} + +template +double igamma_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += igam(data[i][0], data[i][1]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(igamma_test, "igamma-cephes") +{ + double result = igamma_evaluate_cephes(igamma_big_data); + result += igamma_evaluate_cephes(igamma_int_data); + result += igamma_evaluate_cephes(igamma_med_data); + result += igamma_evaluate_cephes(igamma_small_data); + + consume_result(result); + set_call_count( + (sizeof(igamma_big_data) + + sizeof(igamma_int_data) + + sizeof(igamma_med_data) + + sizeof(igamma_small_data)) / sizeof(igamma_big_data[0])); +} + +template +double igamma_inv_evaluate_cephes(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += igami(data[i][0], data[i][3]); // note needs complement of probability!! + return result; +} + +// +// This test does not run to completion, gets stuck +// in infinite loop inside cephes.... +// +BOOST_MATH_PERFORMANCE_TEST(igamma_inv_test, "igamma_inv-cephes") +{ + double result = igamma_inv_evaluate_cephes(igamma_big_data); + result += igamma_inv_evaluate_cephes(igamma_int_data); + result += igamma_inv_evaluate_cephes(igamma_med_data); + result += igamma_inv_evaluate_cephes(igamma_small_data); + + consume_result(result); + set_call_count( + (sizeof(igamma_big_data) + + sizeof(igamma_int_data) + + sizeof(igamma_med_data) + + sizeof(igamma_small_data)) / sizeof(igamma_big_data[0])); +} +#endif + +#ifdef TEST_GSL + +#include + +template +double igamma_evaluate_gsl(const boost::array, N>& data) +{ + double result = 0; + for(unsigned i = 0; i < N; ++i) + result += gsl_sf_gamma_inc_P(data[i][0], data[i][1]); + return result; +} + +BOOST_MATH_PERFORMANCE_TEST(igamma_test, "igamma-gsl") +{ + double result = igamma_evaluate_gsl(igamma_big_data); + result += igamma_evaluate_gsl(igamma_int_data); + result += igamma_evaluate_gsl(igamma_med_data); + result += igamma_evaluate_gsl(igamma_small_data); + + consume_result(result); + set_call_count( + (sizeof(igamma_big_data) + + sizeof(igamma_int_data) + + sizeof(igamma_med_data) + + sizeof(igamma_small_data)) / sizeof(igamma_big_data[0])); +} + +#endif diff --git a/performance/test_polynomial.cpp b/performance/test_polynomial.cpp new file mode 100644 index 000000000..3104b7a8c --- /dev/null +++ b/performance/test_polynomial.cpp @@ -0,0 +1,422 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include "performance_measure.hpp" + +#include +#include + +static const double num[13] = { + static_cast(56906521.91347156388090791033559122686859L), + static_cast(103794043.1163445451906271053616070238554L), + static_cast(86363131.28813859145546927288977868422342L), + static_cast(43338889.32467613834773723740590533316085L), + static_cast(14605578.08768506808414169982791359218571L), + static_cast(3481712.15498064590882071018964774556468L), + static_cast(601859.6171681098786670226533699352302507L), + static_cast(75999.29304014542649875303443598909137092L), + static_cast(6955.999602515376140356310115515198987526L), + static_cast(449.9445569063168119446858607650988409623L), + static_cast(19.51992788247617482847860966235652136208L), + static_cast(0.5098416655656676188125178644804694509993L), + static_cast(0.006061842346248906525783753964555936883222L) +}; +static const double denom[13] = { + static_cast(0u), + static_cast(39916800u), + static_cast(120543840u), + static_cast(150917976u), + static_cast(105258076u), + static_cast(45995730u), + static_cast(13339535u), + static_cast(2637558u), + static_cast(357423u), + static_cast(32670u), + static_cast(1925u), + static_cast(66u), + static_cast(1u) +}; +static const boost::uint32_t denom_int[13] = { + static_cast(0u), + static_cast(39916800u), + static_cast(120543840u), + static_cast(150917976u), + static_cast(105258076u), + static_cast(45995730u), + static_cast(13339535u), + static_cast(2637558u), + static_cast(357423u), + static_cast(32670u), + static_cast(1925u), + static_cast(66u), + static_cast(1u) +}; + +template +U evaluate_polynomial_0(const T* poly, U const& z, std::size_t count) +{ + U sum = static_cast(poly[count - 1]); + for(int i = static_cast(count) - 2; i >= 0; --i) + { + sum *= z; + sum += static_cast(poly[i]); + } + return sum; +} + +template +inline V evaluate_polynomial_1(const T* a, const V& x) +{ + return static_cast((((((((((((a[12] * x + a[11]) * x + a[10]) * x + a[9]) * x + a[8]) * x + a[7]) * x + a[6]) * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]); +} + +template +inline V evaluate_polynomial_2(const T* a, const V& x) +{ + V x2 = x * x; + return static_cast((((((a[12] * x2 + a[10]) * x2 + a[8]) * x2 + a[6]) * x2 + a[4]) * x2 + a[2]) * x2 + a[0] + (((((a[11] * x2 + a[9]) * x2 + a[7]) * x2 + a[5]) * x2 + a[3]) * x2 + a[1]) * x); +} + +template +inline V evaluate_polynomial_3(const T* a, const V& x) +{ + V x2 = x * x; + V t[2]; + t[0] = static_cast(a[12] * x2 + a[10]); + t[1] = static_cast(a[11] * x2 + a[9]); + t[0] *= x2; + t[1] *= x2; + t[0] += a[8]; + t[1] += a[7]; + t[0] *= x2; + t[1] *= x2; + t[0] += a[6]; + t[1] += a[5]; + t[0] *= x2; + t[1] *= x2; + t[0] += a[4]; + t[1] += a[3]; + t[0] *= x2; + t[1] *= x2; + t[0] += a[2]; + t[1] += a[1]; + t[0] *= x2; + t[0] += a[0]; + t[1] *= x; + return t[0] + t[1]; +} + +template +V evaluate_rational_0(const T* num, const U* denom, const V& z_, std::size_t count) +{ + V z(z_); + V s1, s2; + if(z <= 1) + { + s1 = static_cast(num[count-1]); + s2 = static_cast(denom[count-1]); + for(int i = (int)count - 2; i >= 0; --i) + { + s1 *= z; + s2 *= z; + s1 += num[i]; + s2 += denom[i]; + } + } + else + { + z = 1 / z; + s1 = static_cast(num[0]); + s2 = static_cast(denom[0]); + for(unsigned i = 1; i < count; ++i) + { + s1 *= z; + s2 *= z; + s1 += num[i]; + s2 += denom[i]; + } + } + return s1 / s2; +} + +template +inline V evaluate_rational_1(const T* a, const U* b, const V& x) +{ + if(x <= 1) + return static_cast(((((((((((((a[12] * x + a[11]) * x + a[10]) * x + a[9]) * x + a[8]) * x + a[7]) * x + a[6]) * x + a[5]) * x + a[4]) * x + a[3]) * x + a[2]) * x + a[1]) * x + a[0]) / ((((((((((((b[12] * x + b[11]) * x + b[10]) * x + b[9]) * x + b[8]) * x + b[7]) * x + b[6]) * x + b[5]) * x + b[4]) * x + b[3]) * x + b[2]) * x + b[1]) * x + b[0])); + else + { + V z = 1 / x; + return static_cast(((((((((((((a[0] * z + a[1]) * z + a[2]) * z + a[3]) * z + a[4]) * z + a[5]) * z + a[6]) * z + a[7]) * z + a[8]) * z + a[9]) * z + a[10]) * z + a[11]) * z + a[12]) / ((((((((((((b[0] * z + b[1]) * z + b[2]) * z + b[3]) * z + b[4]) * z + b[5]) * z + b[6]) * z + b[7]) * z + b[8]) * z + b[9]) * z + b[10]) * z + b[11]) * z + b[12])); + } +} + +template +inline V evaluate_rational_2(const T* a, const U* b, const V& x) +{ + if(x <= 1) + { + V x2 = x * x; + return static_cast(((((((a[12] * x2 + a[10]) * x2 + a[8]) * x2 + a[6]) * x2 + a[4]) * x2 + a[2]) * x2 + a[0] + (((((a[11] * x2 + a[9]) * x2 + a[7]) * x2 + a[5]) * x2 + a[3]) * x2 + a[1]) * x) / ((((((b[12] * x2 + b[10]) * x2 + b[8]) * x2 + b[6]) * x2 + b[4]) * x2 + b[2]) * x2 + b[0] + (((((b[11] * x2 + b[9]) * x2 + b[7]) * x2 + b[5]) * x2 + b[3]) * x2 + b[1]) * x)); + } + else + { + V z = 1 / x; + V z2 = 1 / (x * x); + return static_cast(((((((a[0] * z2 + a[2]) * z2 + a[4]) * z2 + a[6]) * z2 + a[8]) * z2 + a[10]) * z2 + a[12] + (((((a[1] * z2 + a[3]) * z2 + a[5]) * z2 + a[7]) * z2 + a[9]) * z2 + a[11]) * z) / ((((((b[0] * z2 + b[2]) * z2 + b[4]) * z2 + b[6]) * z2 + b[8]) * z2 + b[10]) * z2 + b[12] + (((((b[1] * z2 + b[3]) * z2 + b[5]) * z2 + b[7]) * z2 + b[9]) * z2 + b[11]) * z)); + } +} + +template +inline V evaluate_rational_3(const T* a, const U* b, const V& x) +{ + if(x <= 1) + { + V x2 = x * x; + V t[4]; + t[0] = a[12] * x2 + a[10]; + t[1] = a[11] * x2 + a[9]; + t[2] = b[12] * x2 + b[10]; + t[3] = b[11] * x2 + b[9]; + t[0] *= x2; + t[1] *= x2; + t[2] *= x2; + t[3] *= x2; + t[0] += a[8]; + t[1] += a[7]; + t[2] += b[8]; + t[3] += b[7]; + t[0] *= x2; + t[1] *= x2; + t[2] *= x2; + t[3] *= x2; + t[0] += a[6]; + t[1] += a[5]; + t[2] += b[6]; + t[3] += b[5]; + t[0] *= x2; + t[1] *= x2; + t[2] *= x2; + t[3] *= x2; + t[0] += a[4]; + t[1] += a[3]; + t[2] += b[4]; + t[3] += b[3]; + t[0] *= x2; + t[1] *= x2; + t[2] *= x2; + t[3] *= x2; + t[0] += a[2]; + t[1] += a[1]; + t[2] += b[2]; + t[3] += b[1]; + t[0] *= x2; + t[2] *= x2; + t[0] += a[0]; + t[2] += b[0]; + t[1] *= x; + t[3] *= x; + return (t[0] + t[1]) / (t[2] + t[3]); + } + else + { + V z = 1 / x; + V z2 = 1 / (x * x); + V t[4]; + t[0] = a[0] * z2 + a[2]; + t[1] = a[1] * z2 + a[3]; + t[2] = b[0] * z2 + b[2]; + t[3] = b[1] * z2 + b[3]; + t[0] *= z2; + t[1] *= z2; + t[2] *= z2; + t[3] *= z2; + t[0] += a[4]; + t[1] += a[5]; + t[2] += b[4]; + t[3] += b[5]; + t[0] *= z2; + t[1] *= z2; + t[2] *= z2; + t[3] *= z2; + t[0] += a[6]; + t[1] += a[7]; + t[2] += b[6]; + t[3] += b[7]; + t[0] *= z2; + t[1] *= z2; + t[2] *= z2; + t[3] *= z2; + t[0] += a[8]; + t[1] += a[9]; + t[2] += b[8]; + t[3] += b[9]; + t[0] *= z2; + t[1] *= z2; + t[2] *= z2; + t[3] *= z2; + t[0] += a[10]; + t[1] += a[11]; + t[2] += b[10]; + t[3] += b[11]; + t[0] *= z2; + t[2] *= z2; + t[0] += a[12]; + t[2] += b[12]; + t[1] *= z; + t[3] *= z; + return (t[0] + t[1]) / (t[2] + t[3]); + } +} + + + +BOOST_MATH_PERFORMANCE_TEST(polynomial_evaluate_0, "Polynomial-method-0") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_0(num, i, 13) / evaluate_polynomial_0(denom, i, 13); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_evaluate_1, "Polynomial-method-1") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_1(num, i) / evaluate_polynomial_1(denom, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_evaluate_2, "Polynomial-method-2") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_2(num, i) / evaluate_polynomial_2(denom, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_evaluate_3, "Polynomial-method-3") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_3(num, i) / evaluate_polynomial_3(denom, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_m_evaluate_0, "Polynomial-mixed-method-0") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_0(num, i, 13) / evaluate_polynomial_0(denom_int, i, 13); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_m_evaluate_1, "Polynomial-mixed-method-1") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_1(num, i) / evaluate_polynomial_1(denom_int, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_m_evaluate_2, "Polynomial-mixed-method-2") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_2(num, i) / evaluate_polynomial_2(denom_int, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(polynomial_m_evaluate_3, "Polynomial-mixed-method-3") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_polynomial_3(num, i) / evaluate_polynomial_3(denom_int, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_evaluate_0, "Rational-method-0") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_0(num, denom, i, 13); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_evaluate_1, "Rational-method-1") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_1(num, denom, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_evaluate_2, "Rational-method-2") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_2(num, denom, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_evaluate_3, "Rational-method-3") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_3(num, denom, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_m_evaluate_0, "Rational-mixed-method-0") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_0(num, denom_int, i, 13); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_m_evaluate_1, "Rational-mixed-method-1") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_1(num, denom_int, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_m_evaluate_2, "Rational-mixed-method-2") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_2(num, denom_int, i); + consume_result(result); + set_call_count(1000); +} + +BOOST_MATH_PERFORMANCE_TEST(rational_m_evaluate_3, "Rational-mixed-method-3") +{ + double result = 0; + for(double i = 1; i < 1000; i += 0.5) + result += evaluate_rational_3(num, denom_int, i); + consume_result(result); + set_call_count(1000); +} + + diff --git a/performance/test_reference.cpp b/performance/test_reference.cpp new file mode 100644 index 000000000..6e6a784e1 --- /dev/null +++ b/performance/test_reference.cpp @@ -0,0 +1,16 @@ +// Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "required_defines.hpp" + +#include "performance_measure.hpp" + +void reference_evaluate() +{ + consume_result(2.0); + set_call_count(1); +} + + diff --git a/quaternion/quaternion_test.cpp b/quaternion/quaternion_test.cpp index 362b05196..6da75db40 100644 --- a/quaternion/quaternion_test.cpp +++ b/quaternion/quaternion_test.cpp @@ -35,12 +35,16 @@ DEFINE_TYPE_NAME(double); DEFINE_TYPE_NAME(long double); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS typedef boost::mpl::list test_types; +#else +typedef boost::mpl::list test_types; +#endif // Apple GCC 4.0 uses the "double double" format for its long double, // which means that epsilon is VERY small but useless for // comparisons. So, don't do those comparisons. -#if defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4 +#if (defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) typedef boost::mpl::list near_eps_test_types; #else typedef boost::mpl::list near_eps_test_types; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 541410dab..95fb0a168 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1,12 +1,384 @@ -# Copyright Daryle Walker, Hubert Holin and John Maddock 2006 +# Copyright Daryle Walker, Hubert Holin, John Maddock and Paul A. Bristow 2006 - 2007 # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt. - +# \math_toolkit\libs\math\test\jamfile.v2 +# Runs all math toolkit tests, functions & distributions. # bring in the rules for testing import testing ; +project + : requirements + gcc:-Wno-missing-braces + darwin:-Wno-missing-braces + acc:+W2068,2461,2236,4070,4069 + intel:-Qwd264,239 + intel:/nologo + intel-linux:-wd239 + intel:/nologo + msvc:all + msvc:on + msvc:/wd4996 + msvc:/wd4512 + msvc:/wd4610 + msvc:/wd4510 + msvc:/wd4127 + msvc:/wd4701 # needed for lexical cast - temporary. + msvc-7.1:../vc71_fix//vc_fix + borland:static + borland:static + # msvc:/wd4506 has no effect? + # suppress xstring(237) : warning C4506: no definition for inline function + ../../.. + ../../regex/build//boost_regex + shared:BOOST_REGEX_DYN_LINK=1 + # Sunpro has problems building regex as a shared lib: + sun:static + BOOST_ALL_NO_LIB=1 + ; + +run hypot_test.cpp ; +run log1p_expm1_test.cpp ; +run powm1_sqrtp1m1_test.cpp ; +run special_functions_test.cpp ../../test/build//boost_unit_test_framework/static ; +run test_bernoulli.cpp ; +run test_constants.cpp ; +run test_beta.cpp ; +run test_beta_dist.cpp ; +run test_binomial.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_binomial_float ; +run test_binomial.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_binomial_double ; +run test_binomial.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_binomial_long_double ; +run test_binomial.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_binomial_real_concept ; +run test_binomial_coeff.cpp ; +run test_carlson.cpp ; +run test_cauchy.cpp ; +run test_cbrt.cpp ; +run test_chi_squared.cpp ; +run test_classify.cpp ; +run test_digamma.cpp ; +run test_dist_overloads.cpp ; +run test_ellint_1.cpp ; +run test_ellint_2.cpp ; +run test_ellint_3.cpp ; +run test_erf.cpp ; +run test_error_handling.cpp ; +run test_exponential_dist.cpp ; +run test_extreme_value.cpp ; +run test_factorials.cpp ; +run test_find_location.cpp ; +run test_find_scale.cpp ; +run test_fisher_f.cpp ; +run test_gamma.cpp ; +run test_gamma_dist.cpp ; +run test_hermite.cpp ; +run test_ibeta.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_ibeta_float ; +run test_ibeta.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_ibeta_double ; +run test_ibeta.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_ibeta_long_double ; +run test_ibeta.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_ibeta_real_concept ; +run test_ibeta_inv.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_ibeta_inv_float ; +run test_ibeta_inv.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_ibeta_inv_double ; +run test_ibeta_inv.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_ibeta_inv_long_double ; +run test_ibeta_inv.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_ibeta_inv_real_concept ; +run test_ibeta_inv_ab.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_ibeta_inv_ab_float ; +run test_ibeta_inv_ab.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_ibeta_inv_ab_double ; +run test_ibeta_inv_ab.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_ibeta_inv_ab_long_double ; +run test_ibeta_inv_ab.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_ibeta_inv_ab_real_concept ; +run test_igamma.cpp ; +run test_igamma_inv.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_igamma_inv_float ; +run test_igamma_inv.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_igamma_inv_double ; +run test_igamma_inv.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_igamma_inv_long_double ; +run test_igamma_inv.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_igamma_inv_real_concept ; +run test_igamma_inva.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_igamma_inva_float ; +run test_igamma_inva.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_igamma_inva_double ; +run test_igamma_inva.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_igamma_inva_long_double ; +run test_igamma_inva.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_igamma_inva_real_concept ; +run test_instantiate1.cpp test_instantiate2.cpp ; +run test_laguerre.cpp ; +run test_legendre.cpp ; +run test_lognormal.cpp ; +run test_minima.cpp ; +run test_negative_binomial.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_negative_binomial_float ; +run test_negative_binomial.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_negative_binomial_double ; +run test_negative_binomial.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_negative_binomial_long_double ; +run test_negative_binomial.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_negative_binomial_real_concept ; +run test_normal.cpp ; +run test_pareto.cpp ; +run test_poisson.cpp + : # command line + : # input files + : # requirements + TEST_FLOAT + : test_poisson_float ; +run test_poisson.cpp + : # command line + : # input files + : # requirements + TEST_DOUBLE + : test_poisson_double ; +run test_poisson.cpp + : # command line + : # input files + : # requirements + TEST_LDOUBLE + : test_poisson_long_double ; +run test_poisson.cpp + : # command line + : # input files + : # requirements + TEST_REAL_CONCEPT + : test_poisson_real_concept ; +run test_rayleigh.cpp ; + +run test_rationals.cpp +test_rational_instances/test_rational_double1.cpp +test_rational_instances/test_rational_double2.cpp +test_rational_instances/test_rational_double3.cpp +test_rational_instances/test_rational_double4.cpp +test_rational_instances/test_rational_double5.cpp +test_rational_instances/test_rational_float1.cpp +test_rational_instances/test_rational_float2.cpp +test_rational_instances/test_rational_float3.cpp +test_rational_instances/test_rational_float4.cpp +test_rational_instances/test_rational_ldouble1.cpp +test_rational_instances/test_rational_ldouble2.cpp +test_rational_instances/test_rational_ldouble3.cpp +test_rational_instances/test_rational_ldouble4.cpp +test_rational_instances/test_rational_ldouble5.cpp +test_rational_instances/test_rational_real_concept1.cpp +test_rational_instances/test_rational_real_concept2.cpp +test_rational_instances/test_rational_real_concept3.cpp +test_rational_instances/test_rational_real_concept4.cpp +test_rational_instances/test_rational_real_concept5.cpp +; + +run test_remez.cpp ; +run test_roots.cpp ; +run test_spherical_harmonic.cpp ; +run test_students_t.cpp ; +run test_tgamma_ratio.cpp ; +run test_toms748_solve.cpp ; +run test_triangular.cpp ; +run test_uniform.cpp ; +run test_weibull.cpp ; +run test_policy.cpp ; +run test_policy_2.cpp ; +run test_policy_sf.cpp ; + +run test_bessel_j.cpp ; +run test_bessel_y.cpp ; +run test_bessel_i.cpp ; +run test_bessel_k.cpp ; + +compile compile_test/dist_bernoulli_incl_test.cpp ; +compile compile_test/dist_beta_incl_test.cpp ; +compile compile_test/dist_binomial_incl_test.cpp ; +compile compile_test/dist_cauchy_incl_test.cpp ; +compile compile_test/dist_chi_squared_incl_test.cpp ; +compile compile_test/dist_complement_incl_test.cpp ; +compile compile_test/dist_exponential_incl_test.cpp ; +compile compile_test/dist_extreme_val_incl_test.cpp ; +compile compile_test/dist_fisher_f_incl_test.cpp ; +compile compile_test/dist_gamma_incl_test.cpp ; +compile compile_test/dist_lognormal_incl_test.cpp ; +compile compile_test/dist_neg_binom_incl_test.cpp ; +compile compile_test/dist_normal_incl_test.cpp ; +compile compile_test/dist_poisson_incl_test.cpp ; +compile compile_test/dist_students_t_incl_test.cpp ; +compile compile_test/dist_triangular_incl_test.cpp ; +compile compile_test/dist_uniform_incl_test.cpp ; +compile compile_test/dist_weibull_incl_test.cpp ; +compile compile_test/distribution_concept_check.cpp ; +compile compile_test/sf_beta_incl_test.cpp ; +compile compile_test/sf_bessel_incl_test.cpp ; +compile compile_test/sf_binomial_incl_test.cpp ; +compile compile_test/sf_cbrt_incl_test.cpp ; +compile compile_test/sf_cos_pi_incl_test.cpp ; +compile compile_test/sf_digamma_incl_test.cpp ; +compile compile_test/sf_ellint_1_incl_test.cpp ; +compile compile_test/sf_ellint_2_incl_test.cpp ; +compile compile_test/sf_ellint_3_incl_test.cpp ; +compile compile_test/sf_ellint_rc_incl_test.cpp ; +compile compile_test/sf_ellint_rd_incl_test.cpp ; +compile compile_test/sf_ellint_rf_incl_test.cpp ; +compile compile_test/sf_ellint_rj_incl_test.cpp ; +compile compile_test/sf_erf_incl_test.cpp ; +compile compile_test/sf_expm1_incl_test.cpp ; +compile compile_test/sf_factorials_incl_test.cpp ; +compile compile_test/sf_fpclassify_incl_test.cpp ; +compile compile_test/sf_gamma_incl_test.cpp ; +compile compile_test/sf_hermite_incl_test.cpp ; +compile compile_test/sf_hypot_incl_test.cpp ; +compile compile_test/sf_laguerre_incl_test.cpp ; +compile compile_test/sf_lanczos_incl_test.cpp ; +compile compile_test/sf_legendre_incl_test.cpp ; +compile compile_test/sf_log1p_incl_test.cpp ; +compile compile_test/sf_math_fwd_incl_test.cpp ; +compile compile_test/sf_powm1_incl_test.cpp ; +compile compile_test/sf_sign_incl_test.cpp ; +compile compile_test/sf_sin_pi_incl_test.cpp ; +compile compile_test/sf_sinc_incl_test.cpp ; +compile compile_test/sf_sinhc_incl_test.cpp ; +compile compile_test/sf_sph_harm_incl_test.cpp ; +compile compile_test/sf_sqrt1pm1_incl_test.cpp ; +compile compile_test/std_real_concept_check.cpp ; +compile compile_test/test_traits.cpp ; +compile compile_test/tools_config_inc_test.cpp ; +compile compile_test/tools_fraction_inc_test.cpp ; +compile compile_test/tools_minima_inc_test.cpp ; +compile compile_test/tools_polynomial_inc_test.cpp ; +compile compile_test/tools_precision_inc_test.cpp ; +compile compile_test/tools_rational_inc_test.cpp ; +compile compile_test/tools_real_cast_inc_test.cpp ; +compile compile_test/tools_remez_inc_test.cpp ; +compile compile_test/tools_roots_inc_test.cpp ; +compile compile_test/tools_series_inc_test.cpp ; +compile compile_test/tools_solve_inc_test.cpp ; +compile compile_test/tools_stats_inc_test.cpp ; +compile compile_test/tools_test_data_inc_test.cpp ; +compile compile_test/tools_test_inc_test.cpp ; +compile compile_test/tools_toms748_inc_test.cpp ; + run ../test/common_factor_test.cpp ../../test/build//boost_unit_test_framework/static ; @@ -16,17 +388,16 @@ run ../octonion/octonion_test.cpp run ../quaternion/quaternion_test.cpp ../../test/build//boost_unit_test_framework/static ; -run ../special_functions/special_functions_test.cpp - ../../test/build//boost_unit_test_framework/static ; - run ../quaternion/quaternion_mult_incl_test.cpp ../quaternion/quaternion_mi1.cpp ../quaternion/quaternion_mi2.cpp ../../test/build//boost_unit_test_framework/static ; run complex_test.cpp ; -run hypot_test.cpp ; -run log1p_expm1_test.cpp ; + + + + diff --git a/test/acosh_test.hpp b/test/acosh_test.hpp new file mode 100644 index 000000000..fa3f8c6ae --- /dev/null +++ b/test/acosh_test.hpp @@ -0,0 +1,90 @@ +// unit test file acosh.hpp for the special functions test suite + +// (C) Copyright Hubert Holin 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#include +#include +#include + + +#include + + +#include + + +template +T acosh_error_evaluator(T x) +{ + using ::std::abs; + using ::std::sinh; + using ::std::cosh; + + using ::std::numeric_limits; + + using ::boost::math::acosh; + + + static T const epsilon = numeric_limits::epsilon(); + + T y = cosh(x); + T z = acosh(y); + + T absolute_error = abs(z-abs(x)); + T relative_error = absolute_error*abs(sinh(x)); + T scaled_error = relative_error/epsilon; + + return(scaled_error); +} + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(acosh_test, T) +{ + BOOST_MESSAGE("Testing acosh in the real domain for " + << string_type_name::_() << "."); + + for (int i = 0; i <= 100; i++) + { + T x = static_cast(i-50)/static_cast(5); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (acosh_error_evaluator(x)) + (static_cast(4))); + } +} + + +void acosh_manual_check() +{ + BOOST_MESSAGE(" "); + BOOST_MESSAGE("acosh"); + + for (int i = 0; i <= 100; i++) + { + float xf = static_cast(i-50)/static_cast(5); + double xd = static_cast(i-50)/static_cast(5); + long double xl = + static_cast(i-50)/static_cast(5); + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_MESSAGE( ::std::setw(15) + << acosh_error_evaluator(xf) + << ::std::setw(15) + << acosh_error_evaluator(xd) + << ::std::setw(15) + << acosh_error_evaluator(xl)); +#else + BOOST_MESSAGE( ::std::setw(15) + << acosh_error_evaluator(xf) + << ::std::setw(15) + << acosh_error_evaluator(xd)); +#endif + } + + BOOST_MESSAGE(" "); +} + diff --git a/test/asinh_test.hpp b/test/asinh_test.hpp new file mode 100644 index 000000000..0cb4b2315 --- /dev/null +++ b/test/asinh_test.hpp @@ -0,0 +1,90 @@ +// unit test file asinh.hpp for the special functions test suite + +// (C) Copyright Hubert Holin 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#include +#include +#include + + +#include + + +#include + + +template +T asinh_error_evaluator(T x) +{ + using ::std::abs; + using ::std::sinh; + using ::std::cosh; + + using ::std::numeric_limits; + + using ::boost::math::asinh; + + + static T const epsilon = numeric_limits::epsilon(); + + T y = sinh(x); + T z = asinh(y); + + T absolute_error = abs(z-x); + T relative_error = absolute_error*cosh(x); + T scaled_error = relative_error/epsilon; + + return(scaled_error); +} + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(asinh_test, T) +{ + BOOST_MESSAGE("Testing asinh in the real domain for " + << string_type_name::_() << "."); + + for (int i = 0; i <= 80; i++) + { + T x = static_cast(i-40)/static_cast(4); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (asinh_error_evaluator(x)) + (static_cast(4))); + } +} + + +void asinh_manual_check() +{ + BOOST_MESSAGE(" "); + BOOST_MESSAGE("asinh"); + + for (int i = 0; i <= 80; i++) + { + float xf = static_cast(i-40)/static_cast(4); + double xd = static_cast(i-40)/static_cast(4); + long double xl = + static_cast(i-40)/static_cast(4); + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_MESSAGE( ::std::setw(15) + << asinh_error_evaluator(xf) + << ::std::setw(15) + << asinh_error_evaluator(xd) + << ::std::setw(15) + << asinh_error_evaluator(xl)); +#else + BOOST_MESSAGE( ::std::setw(15) + << asinh_error_evaluator(xf) + << ::std::setw(15) + << asinh_error_evaluator(xd)); +#endif + } + + BOOST_MESSAGE(" "); +} + diff --git a/test/assoc_legendre_p.ipp b/test/assoc_legendre_p.ipp new file mode 100644 index 000000000..456ba6d49 --- /dev/null +++ b/test/assoc_legendre_p.ipp @@ -0,0 +1,410 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 400> assoc_legendre_p = { + SC_(3.755727291107177734375), SC_(-3), SC_(0.264718532562255859375), SC_(0.018682285998021253444483874168352748715136623066073), + SC_(3.755727291107177734375), SC_(-3), SC_(0.67001712322235107421875), SC_(0.0085227010576716344744906184676725516467064196759033), + SC_(3.755727291107177734375), SC_(-3), SC_(0.91501367092132568359375), SC_(0.0013678553914178941694232605088191864494205442141689), + SC_(3.755727291107177734375), SC_(-3), SC_(0.93538987636566162109375), SC_(0.00092121779437596438014780141399846622556782069609554), + SC_(3.755727291107177734375), SC_(-2), SC_(-0.804919183254241943359375), SC_(-0.035427019537072229468317544697039851719910785732282), + SC_(3.755727291107177734375), SC_(-2), SC_(-0.62323606014251708984375), SC_(-0.047644590452413896385001513687947050090798484234256), + SC_(3.755727291107177734375), SC_(-2), SC_(0.62944734096527099609375), SC_(0.047507226872528274797147731134568104938153965122183), + SC_(3.755727291107177734375), SC_(-2), SC_(0.92977702617645263671875), SC_(0.015749804707019642230489140711548190498803023729124), + SC_(3.755727291107177734375), SC_(-2), SC_(0.98576259613037109375), SC_(0.0034836978383022116191949923980075709550874307751656), + SC_(3.755727291107177734375), SC_(-1), SC_(0.09376299381256103515625), SC_(-0.11897883801786023759113449248494493928619190467444), + SC_(3.755727291107177734375), SC_(0), SC_(-0.72904598712921142578125), SC_(0.12483445078630286253952851342405305778981983166886), + SC_(3.755727291107177734375), SC_(0), SC_(0.0944411754608154296875), SC_(-0.13955592906053357908142302859499928047171124489978), + SC_(3.755727291107177734375), SC_(0), SC_(0.826751708984375), SC_(0.1726224256643575927228084765374660491943359375), + SC_(3.755727291107177734375), SC_(0), SC_(0.99292266368865966796875), SC_(0.95791076106518834501582130387317692843396343960194), + SC_(3.755727291107177734375), SC_(1), SC_(-0.5579319000244140625), SC_(-0.69267329476836900305232758748436796165065650726706), + SC_(3.755727291107177734375), SC_(1), SC_(-0.38366591930389404296875), SC_(0.36569809882896106974883774476288881583212189972924), + SC_(3.755727291107177734375), SC_(2), SC_(-0.74602639675140380859375), SC_(-4.9623208282269009166469230084559050020232007227605), + SC_(3.755727291107177734375), SC_(2), SC_(-0.44300353527069091796875), SC_(-5.340947203111010720410977109344485835862315070699), + SC_(3.755727291107177734375), SC_(2), SC_(0.81158387660980224609375), SC_(4.1552884837362426955817673026802316904593226354336), + SC_(3.755727291107177734375), SC_(2), SC_(0.93773555755615234375), SC_(1.6970953962729668417983019956807311245938763022423), + SC_(4.285762786865234375), SC_(-4), SC_(0.0944411754608154296875), SC_(0.0025579199993109637443137263005669146428545187165902), + SC_(4.285762786865234375), SC_(-4), SC_(0.67001712322235107421875), SC_(0.00079084875024561627663099583678188315474519799498067), + SC_(4.285762786865234375), SC_(-3), SC_(-0.74602639675140380859375), SC_(-0.0045895703969571628891682136050294568676142831603226), + SC_(4.285762786865234375), SC_(-2), SC_(-0.62323606014251708984375), SC_(0.021901614369568242657323933337327101674854041794065), + SC_(4.285762786865234375), SC_(-2), SC_(0.62944734096527099609375), SC_(0.022308096300309799048219090710479861660073888191704), + SC_(4.285762786865234375), SC_(-2), SC_(0.93538987636566162109375), SC_(0.013350407227053037260147784930747976172856146131701), + SC_(4.285762786865234375), SC_(-1), SC_(0.91501367092132568359375), SC_(0.13200123550282267507521242420636682233158093275439), + SC_(4.285762786865234375), SC_(-1), SC_(0.98576259613037109375), SC_(0.07877427388685735435597041845896354141179322010808), + SC_(4.285762786865234375), SC_(0), SC_(-0.38366591930389404296875), SC_(-0.082202061657178565574671344721658600769778582062621), + SC_(4.285762786865234375), SC_(1), SC_(0.09376299381256103515625), SC_(0.68576243868873072515243076289551241703397054367008), + SC_(4.285762786865234375), SC_(1), SC_(0.264718532562255859375), SC_(1.6015108598580622790613880161520031562290080195803), + SC_(4.285762786865234375), SC_(1), SC_(0.826751708984375), SC_(-2.075091388628511047552411495370343087881224878243), + SC_(4.285762786865234375), SC_(1), SC_(0.92977702617645263671875), SC_(-2.6110232658679238686101145865940662146504977908866), + SC_(4.285762786865234375), SC_(1), SC_(0.99292266368865966796875), SC_(-1.1501152124516827856720730990547167000673318754544), + SC_(4.285762786865234375), SC_(3), SC_(-0.804919183254241943359375), SC_(17.658347776050435476592152301745513462355419797644), + SC_(4.285762786865234375), SC_(3), SC_(-0.72904598712921142578125), SC_(24.546943351788936569134344357322020563417724549234), + SC_(4.285762786865234375), SC_(3), SC_(-0.5579319000244140625), SC_(33.483200432942805434592337100676821594014587089232), + SC_(4.285762786865234375), SC_(4), SC_(-0.44300353527069091796875), SC_(67.831116663749312786686560206270714301013197988912), + SC_(4.285762786865234375), SC_(4), SC_(0.81158387660980224609375), SC_(12.23326322639646526677027003435192961976317891902), + SC_(4.285762786865234375), SC_(4), SC_(0.93773555755615234375), SC_(1.5284756464094009019523190775027909687425881068989), + SC_(4.43858623504638671875), SC_(-4), SC_(0.09376299381256103515625), SC_(0.0025585788865558103020054987182935328386974024573462), + SC_(4.43858623504638671875), SC_(-4), SC_(0.81158387660980224609375), SC_(0.00030340434589276947586235788775674428620444392160269), + SC_(4.43858623504638671875), SC_(-4), SC_(0.826751708984375), SC_(0.00026083492327811402025075290800337768359895562753081), + SC_(4.43858623504638671875), SC_(-4), SC_(0.92977702617645263671875), SC_(0.47823512832424889615550406883421003863012687163716e-4), + SC_(4.43858623504638671875), SC_(-3), SC_(-0.804919183254241943359375), SC_(-0.0035036404317560387850381254566955383853879801185802), + SC_(4.43858623504638671875), SC_(-3), SC_(-0.72904598712921142578125), SC_(-0.0048704252682120905891139572137543691594082786804035), + SC_(4.43858623504638671875), SC_(-3), SC_(-0.62323606014251708984375), SC_(-0.0062099464278749790063643151908339184429802189273533), + SC_(4.43858623504638671875), SC_(-3), SC_(0.93538987636566162109375), SC_(0.00086169779878718081099879281321850193219169946462828), + SC_(4.43858623504638671875), SC_(-2), SC_(-0.5579319000244140625), SC_(0.016916718454958990171262790356133102641009169353481), + SC_(4.43858623504638671875), SC_(-2), SC_(-0.44300353527069091796875), SC_(0.0062585992120013346073049856968548291009012658140108), + SC_(4.43858623504638671875), SC_(-2), SC_(0.91501367092132568359375), SC_(0.016480979075286992096829450389735978618066029926915), + SC_(4.43858623504638671875), SC_(-1), SC_(0.62944734096527099609375), SC_(-0.013852284088400384102197697049644481796357180917995), + SC_(4.43858623504638671875), SC_(0), SC_(-0.38366591930389404296875), SC_(-0.082202061657178565574671344721658600769778582062621), + SC_(4.43858623504638671875), SC_(0), SC_(0.0944411754608154296875), SC_(0.3419012769545217228869883142677928817338726938716), + SC_(4.43858623504638671875), SC_(0), SC_(0.67001712322235107421875), SC_(-0.42675937253158873957266351661277594541380955593248), + SC_(4.43858623504638671875), SC_(1), SC_(-0.74602639675140380859375), SC_(1.1126727867403958433914301847632907446425470781145), + SC_(4.43858623504638671875), SC_(1), SC_(0.93773555755615234375), SC_(-2.5694907092758592654019226620729417580286717814693), + SC_(4.43858623504638671875), SC_(2), SC_(0.264718532562255859375), SC_(-3.5532540894315570371583179746027713002035183960381), + SC_(4.43858623504638671875), SC_(2), SC_(0.99292266368865966796875), SC_(0.62426196438718111041026481024591411942721351148618), + SC_(4.43858623504638671875), SC_(4), SC_(0.98576259613037109375), SC_(0.083927746199061397527375080044175506771911288161903), + SC_(5.390875339508056640625), SC_(-5), SC_(0.0944411754608154296875), SC_(0.0002546487231919752178607492517299512129462633725364), + SC_(5.390875339508056640625), SC_(-5), SC_(0.264718532562255859375), SC_(0.00021716384956208715694799696662224323122616129459559), + SC_(5.390875339508056640625), SC_(-5), SC_(0.67001712322235107421875), SC_(0.58708312450036459613075249881849855560840725857318e-4), + SC_(5.390875339508056640625), SC_(-5), SC_(0.91501367092132568359375), SC_(0.27827305046113328781834314319875323548924440626817e-5), + SC_(5.390875339508056640625), SC_(-3), SC_(0.92977702617645263671875), SC_(0.00088084918348099199582932467310763476850348538284308), + SC_(5.390875339508056640625), SC_(-2), SC_(0.62944734096527099609375), SC_(0.0044802133341411818740038475673044511324305084281699), + SC_(5.390875339508056640625), SC_(-2), SC_(0.826751708984375), SC_(0.017179972428025654957727173029455910568258358850358), + SC_(5.390875339508056640625), SC_(-2), SC_(0.93773555755615234375), SC_(0.011582986702578200018657376926081178305253584288072), + SC_(5.390875339508056640625), SC_(-1), SC_(-0.804919183254241943359375), SC_(0.027614447937383812923403611365941023696827330290191), + SC_(5.390875339508056640625), SC_(-1), SC_(-0.74602639675140380859375), SC_(-0.011942526133146833219086796223309547055717483576189), + SC_(5.390875339508056640625), SC_(-1), SC_(-0.44300353527069091796875), SC_(-0.052598650339880048670991840817375710928478745804392), + SC_(5.390875339508056640625), SC_(-1), SC_(0.81158387660980224609375), SC_(0.032475028650926011657602131247192442876513897830463), + SC_(5.390875339508056640625), SC_(-1), SC_(0.98576259613037109375), SC_(0.075928872430285790876424723398166177311286253675933), + SC_(5.390875339508056640625), SC_(1), SC_(-0.5579319000244140625), SC_(2.0588360348849268576901634118752070496134490686058), + SC_(5.390875339508056640625), SC_(1), SC_(-0.38366591930389404296875), SC_(1.0488997903645254423314161051388628455007799361763), + SC_(5.390875339508056640625), SC_(1), SC_(0.99292266368865966796875), SC_(-1.694428428045302980695459253870012855657911579182), + SC_(5.390875339508056640625), SC_(3), SC_(0.09376299381256103515625), SC_(47.709869098409296824126378544766494005231382182091), + SC_(5.390875339508056640625), SC_(5), SC_(-0.72904598712921142578125), SC_(-141.96691257606284385923672899667345613424951478332), + SC_(5.390875339508056640625), SC_(5), SC_(-0.62323606014251708984375), SC_(-276.41355575741464167724815651046032240942755898478), + SC_(5.390875339508056640625), SC_(5), SC_(0.93538987636566162109375), SC_(-5.2252178435591148637339332297779102344828532461685), + SC_(5.9786128997802734375), SC_(-5), SC_(-0.72904598712921142578125), SC_(0.39122275291022609088193543043615921553750417433674e-4), + SC_(5.9786128997802734375), SC_(-5), SC_(-0.38366591930389404296875), SC_(0.00017489900689655423627775194820998979395800601640731), + SC_(5.9786128997802734375), SC_(-5), SC_(0.93538987636566162109375), SC_(0.14399299612982569620078078785763641519187756961443e-5), + SC_(5.9786128997802734375), SC_(-4), SC_(-0.62323606014251708984375), SC_(-0.00060704847503506154620171592993567892964928692547447), + SC_(5.9786128997802734375), SC_(-4), SC_(0.264718532562255859375), SC_(0.00059613981311034434030663336977459595577939813266618), + SC_(5.9786128997802734375), SC_(-3), SC_(0.62944734096527099609375), SC_(0.0031349671707415505384457022694976904859365129000026), + SC_(5.9786128997802734375), SC_(-3), SC_(0.67001712322235107421875), SC_(0.0032389529371683531093138459783060646462307543487447), + SC_(5.9786128997802734375), SC_(-2), SC_(0.91501367092132568359375), SC_(0.014070467978894087845837622000095287182388864142753), + SC_(5.9786128997802734375), SC_(-2), SC_(0.99292266368865966796875), SC_(0.0017135580072319634875733505499327690870804859765117), + SC_(5.9786128997802734375), SC_(-1), SC_(-0.74602639675140380859375), SC_(-0.011942526133146833219086796223309547055717483576189), + SC_(5.9786128997802734375), SC_(-1), SC_(0.93773555755615234375), SC_(0.10697160990790480346676465130193776610937898528547), + SC_(5.9786128997802734375), SC_(0), SC_(-0.5579319000244140625), SC_(0.047804048918209109846499488120279081448233535491368), + SC_(5.9786128997802734375), SC_(0), SC_(-0.44300353527069091796875), SC_(-0.20426834340719068505951661242682923196540890996203), + SC_(5.9786128997802734375), SC_(0), SC_(0.98576259613037109375), SC_(0.79688047965898906667942422168075865228912496237335), + SC_(5.9786128997802734375), SC_(2), SC_(-0.804919183254241943359375), SC_(-14.041412871300637007325237563186908954938502617465), + SC_(5.9786128997802734375), SC_(3), SC_(0.09376299381256103515625), SC_(47.709869098409296824126378544766494005231382182091), + SC_(5.9786128997802734375), SC_(3), SC_(0.0944411754608154296875), SC_(47.641150834624152676066344832804794889226504703822), + SC_(5.9786128997802734375), SC_(3), SC_(0.826751708984375), SC_(-48.15370209637736090987750799064280741291078069631), + SC_(5.9786128997802734375), SC_(4), SC_(0.92977702617645263671875), SC_(16.135533061554449755055362055976172128279602633683), + SC_(5.9786128997802734375), SC_(5), SC_(0.81158387660980224609375), SC_(-64.324006256133565068416408251533490438742435471623), + SC_(7.0129680633544921875), SC_(-6), SC_(-0.44300353527069091796875), SC_(-0.49917660497843442012283615070189075267419679644049e-5), + SC_(7.0129680633544921875), SC_(-6), SC_(0.62944734096527099609375), SC_(0.3006891273213370799141727869232359504461493153624e-5), + SC_(7.0129680633544921875), SC_(-6), SC_(0.81158387660980224609375), SC_(0.70040699133541810527562096226330143819869790187691e-6), + SC_(7.0129680633544921875), SC_(-6), SC_(0.98576259613037109375), SC_(0.48343073413896634965208304544121619980890063725753e-9), + SC_(7.0129680633544921875), SC_(-3), SC_(0.67001712322235107421875), SC_(0.000233323277056834438037424623276038206336990557194), + SC_(7.0129680633544921875), SC_(-2), SC_(-0.804919183254241943359375), SC_(-0.0027739031343697825991513090446807124968690478954398), + SC_(7.0129680633544921875), SC_(-1), SC_(-0.38366591930389404296875), SC_(0.039786558334548825835304799167391994654559424625062), + SC_(7.0129680633544921875), SC_(-1), SC_(0.92977702617645263671875), SC_(0.054454932483310305073733979576928070746123404332102), + SC_(7.0129680633544921875), SC_(0), SC_(0.0944411754608154296875), SC_(-0.19033023284194947443250862014615331274337558869229), + SC_(7.0129680633544921875), SC_(0), SC_(0.264718532562255859375), SC_(-0.26772197626528608005754891383945733780088489487847), + SC_(7.0129680633544921875), SC_(2), SC_(-0.72904598712921142578125), SC_(8.2527975846199234989599916055568828159236433321317), + SC_(7.0129680633544921875), SC_(3), SC_(-0.74602639675140380859375), SC_(-122.8095242453750885154728218467647225016581694455), + SC_(7.0129680633544921875), SC_(3), SC_(0.826751708984375), SC_(-173.13613361264811344425400070610320025380148250632), + SC_(7.0129680633544921875), SC_(3), SC_(0.93773555755615234375), SC_(-91.646151026938230226355468598656579455999111879645), + SC_(7.0129680633544921875), SC_(4), SC_(-0.62323606014251708984375), SC_(-827.70592695642797610122284647665024797997991160461), + SC_(7.0129680633544921875), SC_(5), SC_(0.09376299381256103515625), SC_(4502.9678134547254406291563962805504284132872177258), + SC_(7.0129680633544921875), SC_(5), SC_(0.93538987636566162109375), SC_(-298.14688995091627351489747457308624963260602452294), + SC_(7.0129680633544921875), SC_(5), SC_(0.99292266368865966796875), SC_(-1.4510728508951063559765139003152953353215769586589), + SC_(7.0129680633544921875), SC_(6), SC_(-0.5579319000244140625), SC_(-24629.862077522287552037887727378221479137335921999), + SC_(7.0129680633544921875), SC_(7), SC_(0.91501367092132568359375), SC_(-235.01261148836072843323648254407718400683198946966), + SC_(7.5470066070556640625), SC_(-7), SC_(0.92977702617645263671875), SC_(0.14200764177428564541660357501288113217936324682596e-8), + SC_(7.5470066070556640625), SC_(-6), SC_(0.99292266368865966796875), SC_(0.60462178621145526495587961093028377048346906917799e-10), + SC_(7.5470066070556640625), SC_(-5), SC_(-0.804919183254241943359375), SC_(0.11850218745680660327856845487252042020489012451249e-4), + SC_(7.5470066070556640625), SC_(-5), SC_(-0.62323606014251708984375), SC_(0.25704941219612768652057044997952103565531823264833e-4), + SC_(7.5470066070556640625), SC_(-5), SC_(-0.5579319000244140625), SC_(0.26026610986949895591456820667931397644373911708617e-4), + SC_(7.5470066070556640625), SC_(-5), SC_(0.826751708984375), SC_(0.96427550556555556215914278478645893071540865408665e-5), + SC_(7.5470066070556640625), SC_(-4), SC_(-0.74602639675140380859375), SC_(-0.00016179970162846142544637619599296898839695649488055), + SC_(7.5470066070556640625), SC_(-3), SC_(0.0944411754608154296875), SC_(0.00062249282910339912813465170017929282035995863532522), + SC_(7.5470066070556640625), SC_(-3), SC_(0.98576259613037109375), SC_(0.91478224428475023051355182182258959654080836058826e-4), + SC_(7.5470066070556640625), SC_(-1), SC_(0.81158387660980224609375), SC_(-0.037618428130799583340460729445204508575236956259112), + SC_(7.5470066070556640625), SC_(1), SC_(0.264718532562255859375), SC_(-0.91850641031589001426851910351654966807086201315901), + SC_(7.5470066070556640625), SC_(2), SC_(-0.72904598712921142578125), SC_(8.2527975846199234989599916055568828159236433321317), + SC_(7.5470066070556640625), SC_(2), SC_(0.67001712322235107421875), SC_(-16.173978727715922835573941646676954402245624210885), + SC_(7.5470066070556640625), SC_(3), SC_(-0.44300353527069091796875), SC_(126.11683720173836113693183279288501512543793837078), + SC_(7.5470066070556640625), SC_(3), SC_(0.09376299381256103515625), SC_(-94.453868860737087182332484196906419229893511255424), + SC_(7.5470066070556640625), SC_(4), SC_(0.93538987636566162109375), SC_(212.20613541117306294339745645140997922163474736004), + SC_(7.5470066070556640625), SC_(5), SC_(0.91501367092132568359375), SC_(-548.9598762946375491746161334341209970192082722327), + SC_(7.5470066070556640625), SC_(5), SC_(0.93773555755615234375), SC_(-274.14402002956226658985353133565183129456133307216), + SC_(7.5470066070556640625), SC_(6), SC_(-0.38366591930389404296875), SC_(-32156.098501462924236706288755730053796038774016275), + SC_(7.5470066070556640625), SC_(7), SC_(0.62944734096527099609375), SC_(-23114.460949600096071941383702301168401607047211818), + SC_(11.84386730194091796875), SC_(-10), SC_(-0.5579319000244140625), SC_(-0.23265181140053135802487825748454722380866646014593e-10), + SC_(11.84386730194091796875), SC_(-10), SC_(0.81158387660980224609375), SC_(0.10119358336421199432244908899725952448132738655445e-11), + SC_(11.84386730194091796875), SC_(-8), SC_(-0.74602639675140380859375), SC_(-0.13489060836825107052053300247017803661743299618615e-8), + SC_(11.84386730194091796875), SC_(-8), SC_(-0.72904598712921142578125), SC_(-0.1542799319087398107549162488097441554465286352303e-8), + SC_(11.84386730194091796875), SC_(-8), SC_(0.98576259613037109375), SC_(0.59003527302236484992801818528316725899144008941385e-13), + SC_(11.84386730194091796875), SC_(-4), SC_(0.62944734096527099609375), SC_(-0.14472251039785768408474263876593046823350434589546e-4), + SC_(11.84386730194091796875), SC_(-4), SC_(0.92977702617645263671875), SC_(0.19881213267841126683103644232724033001739468923731e-4), + SC_(11.84386730194091796875), SC_(-3), SC_(0.67001712322235107421875), SC_(-0.45829620024586356030414844243050192126649872258431e-4), + SC_(11.84386730194091796875), SC_(-2), SC_(0.826751708984375), SC_(-0.0024475865536336790697122592507802550191969717760944), + SC_(11.84386730194091796875), SC_(-2), SC_(0.99292266368865966796875), SC_(0.001514584725634246672093061231008807294812673049418), + SC_(11.84386730194091796875), SC_(-1), SC_(-0.38366591930389404296875), SC_(0.0041910765987207082014873224726632429468869952557846), + SC_(11.84386730194091796875), SC_(2), SC_(-0.44300353527069091796875), SC_(29.060140543929646372953199229138943547599341368473), + SC_(11.84386730194091796875), SC_(3), SC_(0.09376299381256103515625), SC_(-177.48133935035592847836648194577534007151999415785), + SC_(11.84386730194091796875), SC_(6), SC_(0.264718532562255859375), SC_(222813.62228852691558610355161450613259901923040526), + SC_(11.84386730194091796875), SC_(7), SC_(-0.62323606014251708984375), SC_(-4859018.4455751267400897075639214816266256959868333), + SC_(11.84386730194091796875), SC_(8), SC_(0.91501367092132568359375), SC_(1021518.66801184216282417981301458120258320370794), + SC_(11.84386730194091796875), SC_(8), SC_(0.93538987636566162109375), SC_(383678.2307827682389868079425774985048635406198118), + SC_(11.84386730194091796875), SC_(8), SC_(0.93773555755615234375), SC_(335363.54374210707806874319418081514539985485964623), + SC_(11.84386730194091796875), SC_(9), SC_(-0.804919183254241943359375), SC_(-37638062.605176743043545621659726706224449118828276), + SC_(11.84386730194091796875), SC_(11), SC_(0.0944411754608154296875), SC_(-13088230119.354593487821768373557740001331594792884), + SC_(11.84997081756591796875), SC_(-11), SC_(0.09376299381256103515625), SC_(0.11652575593644221485023460761015831090267033800858e-10), + SC_(11.84997081756591796875), SC_(-11), SC_(0.92977702617645263671875), SC_(0.20579709935439231465251633890295859136590924726116e-15), + SC_(11.84997081756591796875), SC_(-11), SC_(0.93538987636566162109375), SC_(0.13224949845586789337687366145892296658666301182813e-15), + SC_(11.84997081756591796875), SC_(-8), SC_(-0.74602639675140380859375), SC_(-0.13489060836825107052053300247017803661743299618615e-8), + SC_(11.84997081756591796875), SC_(-7), SC_(0.93773555755615234375), SC_(0.69374698116005068370241223092303295509213455690462e-9), + SC_(11.84997081756591796875), SC_(-6), SC_(0.264718532562255859375), SC_(0.75171716970009817274765988454793518932645912441686e-7), + SC_(11.84997081756591796875), SC_(-5), SC_(0.67001712322235107421875), SC_(-0.74962894159760082832011679326967274680513990227673e-6), + SC_(11.84997081756591796875), SC_(-4), SC_(-0.62323606014251708984375), SC_(0.13562168617539220725057252182518517591360727530937e-4), + SC_(11.84997081756591796875), SC_(-3), SC_(0.0944411754608154296875), SC_(0.81018496059627083036058461166125860043982866987277e-4), + SC_(11.84997081756591796875), SC_(-3), SC_(0.81158387660980224609375), SC_(-0.00013226110423271619374803791001430283951730245350595), + SC_(11.84997081756591796875), SC_(-1), SC_(0.826751708984375), SC_(-0.0040979297572913890790531337178784142062844908280042), + SC_(11.84997081756591796875), SC_(0), SC_(-0.804919183254241943359375), SC_(-0.29753322859260680967406878028841522576050347782121), + SC_(11.84997081756591796875), SC_(0), SC_(-0.44300353527069091796875), SC_(-0.20897102536739270748155301914422564587637993175572), + SC_(11.84997081756591796875), SC_(0), SC_(0.98576259613037109375), SC_(0.25718519997355322934845056525480032969786078351821), + SC_(11.84997081756591796875), SC_(2), SC_(-0.38366591930389404296875), SC_(31.321494899202229629503730871768387574032327364668), + SC_(11.84997081756591796875), SC_(3), SC_(0.62944734096527099609375), SC_(-133.45273880919003222397159296712531292386296841578), + SC_(11.84997081756591796875), SC_(4), SC_(0.99292266368865966796875), SC_(124.0791430575599930695018428639543182491862135452), + SC_(11.84997081756591796875), SC_(8), SC_(-0.72904598712921142578125), SC_(-31278996.346844030458961294814400214328489738408282), + SC_(11.84997081756591796875), SC_(9), SC_(-0.5579319000244140625), SC_(-338438171.1910644879479672790426918021710482022825), + SC_(11.84997081756591796875), SC_(10), SC_(0.91501367092132568359375), SC_(1436525.2077063817917494317507659803096843830478934), + SC_(13.3824672698974609375), SC_(-13), SC_(-0.804919183254241943359375), SC_(0.22166639523051638106418604328947911924875738037195e-16), + SC_(13.3824672698974609375), SC_(-13), SC_(0.92977702617645263671875), SC_(0.44693154474481435928082063045813863131262403955661e-19), + SC_(13.3824672698974609375), SC_(-12), SC_(-0.62323606014251708984375), SC_(-0.16621175359968221829687634726523126274572535451776e-13), + SC_(13.3824672698974609375), SC_(-11), SC_(-0.5579319000244140625), SC_(0.44450919253842863629215666338932968470668430070296e-12), + SC_(13.3824672698974609375), SC_(-10), SC_(0.93773555755615234375), SC_(0.55673512583170756101841118590153351963256527278471e-14), + SC_(13.3824672698974609375), SC_(-9), SC_(0.81158387660980224609375), SC_(0.15673048027086770934389940776395437140646071715598e-10), + SC_(13.3824672698974609375), SC_(-7), SC_(0.09376299381256103515625), SC_(-0.18900830818056138997299707029920201032855688227972e-8), + SC_(13.3824672698974609375), SC_(-7), SC_(0.93538987636566162109375), SC_(0.62398829036318924421682890093652108111426929160992e-9), + SC_(13.3824672698974609375), SC_(-6), SC_(-0.74602639675140380859375), SC_(-0.21723575516243262421798797023094100622452296975193e-7), + SC_(13.3824672698974609375), SC_(2), SC_(0.264718532562255859375), SC_(17.034455941674013494369196837130404278802967075785), + SC_(13.3824672698974609375), SC_(2), SC_(0.98576259613037109375), SC_(74.199869740310278546928044799483142489006719811421), + SC_(13.3824672698974609375), SC_(4), SC_(0.826751708984375), SC_(-2970.4202769206060544252953563327031335250923271111), + SC_(13.3824672698974609375), SC_(6), SC_(-0.72904598712921142578125), SC_(-142653.18426864739894657986914209617064658696817064), + SC_(13.3824672698974609375), SC_(6), SC_(-0.44300353527069091796875), SC_(-847125.49020389136626193373354682614784551391911727), + SC_(13.3824672698974609375), SC_(6), SC_(0.67001712322235107421875), SC_(-973179.19295459124004349072652615957844656182701482), + SC_(13.3824672698974609375), SC_(7), SC_(0.0944411754608154296875), SC_(6291587.8396040891190619719705059087867165445493), + SC_(13.3824672698974609375), SC_(8), SC_(-0.38366591930389404296875), SC_(148736140.90353794537277725465559178875001451292523), + SC_(13.3824672698974609375), SC_(8), SC_(0.99292266368865966796875), SC_(1562.9986080941304055581037380248889804054119356879), + SC_(13.3824672698974609375), SC_(9), SC_(0.62944734096527099609375), SC_(-2282996099.0744102550139909067331966860804173216966), + SC_(13.3824672698974609375), SC_(9), SC_(0.91501367092132568359375), SC_(-47108686.442640842883533859076465535279340150282202), + SC_(16.6650257110595703125), SC_(-16), SC_(-0.5579319000244140625), SC_(0.36914896153983860669619753805966665027048352841086e-19), + SC_(16.6650257110595703125), SC_(-15), SC_(-0.804919183254241943359375), SC_(-0.74790282995655983775531645052438536118228838933368e-20), + SC_(16.6650257110595703125), SC_(-15), SC_(-0.62323606014251708984375), SC_(-0.36398678387957337085009611234034932395493463191661e-18), + SC_(16.6650257110595703125), SC_(-14), SC_(0.93773555755615234375), SC_(0.22807828690216376785976940239028828932632169446174e-21), + SC_(16.6650257110595703125), SC_(-13), SC_(0.92977702617645263671875), SC_(0.35320050515977865959614707894521274040624190465647e-19), + SC_(16.6650257110595703125), SC_(-12), SC_(0.81158387660980224609375), SC_(0.3082671873049785091792439153346921827065397800962e-15), + SC_(16.6650257110595703125), SC_(-4), SC_(0.93538987636566162109375), SC_(0.52291298347581562621901072563414165417626206009583e-5), + SC_(16.6650257110595703125), SC_(-2), SC_(0.99292266368865966796875), SC_(0.0012698575294388484883534762618017745047909786068378), + SC_(16.6650257110595703125), SC_(-1), SC_(0.0944411754608154296875), SC_(-0.011944140876262027507943894873016233264464123175583), + SC_(16.6650257110595703125), SC_(-1), SC_(0.91501367092132568359375), SC_(-0.0031076083789904422712562161725068777570567479833285), + SC_(16.6650257110595703125), SC_(4), SC_(-0.44300353527069091796875), SC_(7489.7232452416344466185434844943197669989737666647), + SC_(16.6650257110595703125), SC_(5), SC_(0.67001712322235107421875), SC_(-245785.37315952021732160039445469928096897296200858), + SC_(16.6650257110595703125), SC_(7), SC_(-0.72904598712921142578125), SC_(-49207050.468316885335102250704228071597639131505993), + SC_(16.6650257110595703125), SC_(7), SC_(0.264718532562255859375), SC_(42453247.952851458881163464731595954318082047470875), + SC_(16.6650257110595703125), SC_(8), SC_(0.62944734096527099609375), SC_(-979230421.06039761780739880450853659640100219735369), + SC_(16.6650257110595703125), SC_(10), SC_(-0.38366591930389404296875), SC_(-65484300474.651994691389202076648539080316522513276), + SC_(16.6650257110595703125), SC_(11), SC_(0.826751708984375), SC_(-621994593400.85818284286708477331063639042478826259), + SC_(16.6650257110595703125), SC_(13), SC_(0.98576259613037109375), SC_(-2368679.116056950972031807234328493387762603085367), + SC_(16.6650257110595703125), SC_(16), SC_(-0.74602639675140380859375), SC_(286937498915109.72391794972691070626807358288824491), + SC_(16.6650257110595703125), SC_(16), SC_(0.09376299381256103515625), SC_(178810232213386344.75148306627111836848013903472344), + SC_(17.0301532745361328125), SC_(-17), SC_(0.81158387660980224609375), SC_(0.23089891934552557492903571788866976069269398034636e-23), + SC_(17.0301532745361328125), SC_(-16), SC_(0.92977702617645263671875), SC_(0.77120542993546838080187693618711944669104877784798e-25), + SC_(17.0301532745361328125), SC_(-14), SC_(-0.38366591930389404296875), SC_(-0.54561248812503755335991908931944825672149594319331e-17), + SC_(17.0301532745361328125), SC_(-14), SC_(0.264718532562255859375), SC_(-0.25540948412416548331728930347103911513122873387648e-17), + SC_(17.0301532745361328125), SC_(-12), SC_(0.62944734096527099609375), SC_(0.11267232505246190944593673014733244504856527347217e-14), + SC_(17.0301532745361328125), SC_(-11), SC_(0.93538987636566162109375), SC_(0.8080068473692047289701190290402825999134033774326e-16), + SC_(17.0301532745361328125), SC_(-8), SC_(-0.44300353527069091796875), SC_(-0.23668950399843099002326915537352916668711085164683e-10), + SC_(17.0301532745361328125), SC_(-4), SC_(-0.62323606014251708984375), SC_(0.22257178074585895343804673994496661297003034593049e-5), + SC_(17.0301532745361328125), SC_(-4), SC_(-0.5579319000244140625), SC_(0.13825468678287818487268474508564732013727903072802e-5), + SC_(17.0301532745361328125), SC_(-2), SC_(0.98576259613037109375), SC_(0.0015940113463464718894604985317013703396900221174161), + SC_(17.0301532745361328125), SC_(-1), SC_(-0.72904598712921142578125), SC_(-0.00179298507080800413716717496074397930291963387428), + SC_(17.0301532745361328125), SC_(2), SC_(-0.74602639675140380859375), SC_(63.703534657883034459738823553326354020852528298334), + SC_(17.0301532745361328125), SC_(4), SC_(0.91501367092132568359375), SC_(9578.4486235254777894217041455902077880056968913822), + SC_(17.0301532745361328125), SC_(6), SC_(0.09376299381256103515625), SC_(-5017339.216196783919233944407631270205095529788784), + SC_(17.0301532745361328125), SC_(6), SC_(0.0944411754608154296875), SC_(-5018698.5341072323277278971254008046714224679259579), + SC_(17.0301532745361328125), SC_(7), SC_(0.99292266368865966796875), SC_(-78992.039209423422657071913321786385052597355213482), + SC_(17.0301532745361328125), SC_(8), SC_(0.826751708984375), SC_(2125458172.4081600001165033646972051069773553913414), + SC_(17.0301532745361328125), SC_(11), SC_(-0.804919183254241943359375), SC_(-3083182177646.0814083741337604451869998939540761478), + SC_(17.0301532745361328125), SC_(16), SC_(0.93773555755615234375), SC_(266651139531.32384929509372467284346479362567522913), + SC_(17.0301532745361328125), SC_(17), SC_(0.67001712322235107421875), SC_(-39984434200097046.063642477455323422467024142361322), + SC_(18.3042545318603515625), SC_(-16), SC_(0.91501367092132568359375), SC_(0.29883615646300452729116273431746068354341463393245e-24), + SC_(18.3042545318603515625), SC_(-15), SC_(-0.5579319000244140625), SC_(-0.19593885482631020055319069838825786355264001980923e-18), + SC_(18.3042545318603515625), SC_(-13), SC_(0.93538987636566162109375), SC_(0.18015893170629159643302327598927935673211915247379e-19), + SC_(18.3042545318603515625), SC_(-9), SC_(0.09376299381256103515625), SC_(0.11469696889070244336893177339905362355047054202956e-11), + SC_(18.3042545318603515625), SC_(-8), SC_(-0.38366591930389404296875), SC_(-0.1887440538785176364549309437756617748819077392573e-10), + SC_(18.3042545318603515625), SC_(-6), SC_(0.62944734096527099609375), SC_(0.43674982083323422168372530118149718931490233301677e-8), + SC_(18.3042545318603515625), SC_(-4), SC_(-0.44300353527069091796875), SC_(0.7202196497255920924428859123626553791826086042503e-6), + SC_(18.3042545318603515625), SC_(-2), SC_(-0.804919183254241943359375), SC_(-0.77283649068875750938251183253775363894689287493389e-4), + SC_(18.3042545318603515625), SC_(1), SC_(-0.74602639675140380859375), SC_(0.63828710585725175676940885969260056847792325179648), + SC_(18.3042545318603515625), SC_(2), SC_(0.98576259613037109375), SC_(166.08676681462310504060036212332710646394263847909), + SC_(18.3042545318603515625), SC_(4), SC_(0.99292266368865966796875), SC_(5290.5406072371351692027633069511734187279679177777), + SC_(18.3042545318603515625), SC_(5), SC_(0.264718532562255859375), SC_(392113.36345354167041874035916897478682871001810603), + SC_(18.3042545318603515625), SC_(5), SC_(0.826751708984375), SC_(515813.36159934241989083840875835833434313742166124), + SC_(18.3042545318603515625), SC_(10), SC_(0.81158387660980224609375), SC_(786203092993.54293624662825003360911583842842889743), + SC_(18.3042545318603515625), SC_(11), SC_(0.67001712322235107421875), SC_(-8261729884863.6657373747045319640816334012239447799), + SC_(18.3042545318603515625), SC_(12), SC_(0.0944411754608154296875), SC_(-30579050031328.838999922313096299251374259570555362), + SC_(18.3042545318603515625), SC_(13), SC_(-0.62323606014251708984375), SC_(2490927774952003.541834741685697258166307532119113), + SC_(18.3042545318603515625), SC_(14), SC_(-0.72904598712921142578125), SC_(8874022800651066.6502918671748924861977690946025867), + SC_(18.3042545318603515625), SC_(15), SC_(0.93773555755615234375), SC_(-3553964025785.9966811637710283958451213589141162289), + SC_(18.3042545318603515625), SC_(18), SC_(0.92977702617645263671875), SC_(3416106077482.7264856872784871760461910378746573151), + SC_(18.440765380859375), SC_(-17), SC_(-0.5579319000244140625), SC_(-0.50271604952920343300607472787502048319360871188692e-21), + SC_(18.440765380859375), SC_(-16), SC_(-0.804919183254241943359375), SC_(0.10984637871249881776444510537426108537817137259055e-21), + SC_(18.440765380859375), SC_(-12), SC_(-0.74602639675140380859375), SC_(0.38699810971215052589513068420573917306170228310572e-15), + SC_(18.440765380859375), SC_(-12), SC_(0.93773555755615234375), SC_(0.98565761862632574513933033426583440815341731508199e-18), + SC_(18.440765380859375), SC_(-6), SC_(0.264718532562255859375), SC_(-0.15283288108259116456399654021918348895173752216729e-9), + SC_(18.440765380859375), SC_(-5), SC_(0.67001712322235107421875), SC_(0.42663862212707289150211045881623824679654531468886e-7), + SC_(18.440765380859375), SC_(-5), SC_(0.98576259613037109375), SC_(0.23861087627268731000356265059002054846394077572679e-7), + SC_(18.440765380859375), SC_(-4), SC_(0.91501367092132568359375), SC_(-0.80543753849626232167758105932861113884499338011562e-7), + SC_(18.440765380859375), SC_(-2), SC_(0.09376299381256103515625), SC_(-0.85382295357652349741567303582030854482898935914125e-4), + SC_(18.440765380859375), SC_(-1), SC_(0.99292266368865966796875), SC_(0.030086983815468676149299012036109061540059539271355), + SC_(18.440765380859375), SC_(0), SC_(-0.72904598712921142578125), SC_(0.18653718888369370131458265584018026946159296567964), + SC_(18.440765380859375), SC_(0), SC_(0.62944734096527099609375), SC_(-0.21025192720175270695719746239016794207250758550671), + SC_(18.440765380859375), SC_(5), SC_(-0.38366591930389404296875), SC_(264699.84731638138429900882287246208183148022742781), + SC_(18.440765380859375), SC_(5), SC_(0.92977702617645263671875), SC_(-736319.88814289375666669784796756264581839709032387), + SC_(18.440765380859375), SC_(7), SC_(0.826751708984375), SC_(-42543004.889913803417064413390657862883996054044383), + SC_(18.440765380859375), SC_(11), SC_(-0.62323606014251708984375), SC_(838990229190.95540426631634358776581787814066606189), + SC_(18.440765380859375), SC_(13), SC_(0.81158387660980224609375), SC_(-358219758017025.29646048607070742930527995349756931), + SC_(18.440765380859375), SC_(15), SC_(0.0944411754608154296875), SC_(250504952280779402.4459453389974592578734995999658), + SC_(18.440765380859375), SC_(17), SC_(0.93538987636566162109375), SC_(-4382618700190.530435650666874966527218631896635012), + SC_(18.440765380859375), SC_(18), SC_(-0.44300353527069091796875), SC_(31026494575738330367.158321747018911852847647134982), + SC_(19.2351226806640625), SC_(-19), SC_(0.826751708984375), SC_(0.28096099754174757639142988313052093117069710820259e-27), + SC_(19.2351226806640625), SC_(-15), SC_(0.93773555755615234375), SC_(0.22729284127735589054255258668317884253291919419305e-23), + SC_(19.2351226806640625), SC_(-13), SC_(0.99292266368865966796875), SC_(0.1743121215871876802557328668088468943943263194911e-25), + SC_(19.2351226806640625), SC_(-10), SC_(-0.38366591930389404296875), SC_(-0.10293684623854104934250449760096572176156444372122e-13), + SC_(19.2351226806640625), SC_(-10), SC_(0.264718532562255859375), SC_(-0.39291909511632775673453848171264487384306556380656e-13), + SC_(19.2351226806640625), SC_(1), SC_(0.92977702617645263671875), SC_(-1.8928597921982751461985041697534535744382441623969), + SC_(19.2351226806640625), SC_(1), SC_(0.93538987636566162109375), SC_(-0.17753066615543550750253798142286628228408488271265), + SC_(19.2351226806640625), SC_(3), SC_(-0.62323606014251708984375), SC_(-1406.8551161661961787833668743464163883272950430824), + SC_(19.2351226806640625), SC_(3), SC_(0.81158387660980224609375), SC_(-1349.1692552830459195981604712085505043997296160725), + SC_(19.2351226806640625), SC_(4), SC_(-0.74602639675140380859375), SC_(-8037.6658264469123963393087477071904706108915347975), + SC_(19.2351226806640625), SC_(4), SC_(0.0944411754608154296875), SC_(-25028.145293006716172962519105923296460758908547618), + SC_(19.2351226806640625), SC_(4), SC_(0.67001712322235107421875), SC_(-29534.257011785190165176788825355970943316250224702), + SC_(19.2351226806640625), SC_(4), SC_(0.91501367092132568359375), SC_(-16392.232356669543132626194808379585805064546084349), + SC_(19.2351226806640625), SC_(4), SC_(0.98576259613037109375), SC_(23971.132007029558069016801023045608495969275263064), + SC_(19.2351226806640625), SC_(6), SC_(-0.72904598712921142578125), SC_(-8140834.1324089639935519173978872996653658919863967), + SC_(19.2351226806640625), SC_(6), SC_(-0.44300353527069091796875), SC_(-7930928.2397986661163007545526813521615562150281197), + SC_(19.2351226806640625), SC_(9), SC_(-0.804919183254241943359375), SC_(-72379113476.352796377305937996940747985952066128593), + SC_(19.2351226806640625), SC_(13), SC_(0.62944734096527099609375), SC_(-5134369678377531.0833016268690600215514053304023389), + SC_(19.2351226806640625), SC_(15), SC_(-0.5579319000244140625), SC_(-1015762016510443869.6327233053169209347494734043869), + SC_(19.2351226806640625), SC_(18), SC_(0.09376299381256103515625), SC_(710186740012925626467.73942195603474203745449828018), + SC_(19.367992401123046875), SC_(-17), SC_(0.62944734096527099609375), SC_(0.11171785200806076601510755896553721227874614231315e-21), + SC_(19.367992401123046875), SC_(-15), SC_(0.67001712322235107421875), SC_(0.41708170484402827993195327851962176229050519214935e-19), + SC_(19.367992401123046875), SC_(-11), SC_(0.91501367092132568359375), SC_(0.21756446987184863754567940655540650014788217090708e-15), + SC_(19.367992401123046875), SC_(-10), SC_(0.264718532562255859375), SC_(-0.39291909511632775673453848171264487384306556380656e-13), + SC_(19.367992401123046875), SC_(-10), SC_(0.93538987636566162109375), SC_(0.35203386148632068895108168682763476328178687031646e-14), + SC_(19.367992401123046875), SC_(-8), SC_(0.09376299381256103515625), SC_(-0.11426052789780942300532608169075547762937997222756e-10), + SC_(19.367992401123046875), SC_(-3), SC_(0.0944411754608154296875), SC_(-0.62009805308781525829391269462790209708034571751975e-5), + SC_(19.367992401123046875), SC_(-3), SC_(0.98576259613037109375), SC_(0.48683625637537837402773720121195220847472881885636e-4), + SC_(19.367992401123046875), SC_(-1), SC_(-0.5579319000244140625), SC_(-0.0051771830750291213227283927254523671758223103225019), + SC_(19.367992401123046875), SC_(4), SC_(-0.804919183254241943359375), SC_(-31206.872941793395251553296530119153550183252786295), + SC_(19.367992401123046875), SC_(4), SC_(-0.44300353527069091796875), SC_(17028.045702509925174397449943279294145247295355527), + SC_(19.367992401123046875), SC_(9), SC_(-0.72904598712921142578125), SC_(40963049161.840563921749109759131967640623017931928), + SC_(19.367992401123046875), SC_(10), SC_(0.81158387660980224609375), SC_(1539232549071.2403439978796189170963046987864230162), + SC_(19.367992401123046875), SC_(12), SC_(-0.38366591930389404296875), SC_(-88775931893030.570776909560322117125028614222504249), + SC_(19.367992401123046875), SC_(13), SC_(0.99292266368865966796875), SC_(-6370402.0056839501875375385352467787059666973045593), + SC_(19.367992401123046875), SC_(14), SC_(-0.74602639675140380859375), SC_(-29382493955027210.900261178223964994850616622296376), + SC_(19.367992401123046875), SC_(14), SC_(-0.62323606014251708984375), SC_(-78338179480735275.385980722705110901752445891864321), + SC_(19.367992401123046875), SC_(15), SC_(0.826751708984375), SC_(-21925888030419983.923456036187293901038296511900498), + SC_(19.367992401123046875), SC_(15), SC_(0.92977702617645263671875), SC_(-64341448614367.513605394800667731791476692010324668), + SC_(19.367992401123046875), SC_(18), SC_(0.93773555755615234375), SC_(41662739626590.703682551951618167157234877634542544), + SC_(19.4185085296630859375), SC_(-18), SC_(0.0944411754608154296875), SC_(0.51911342450084606006498960540691516909936454811191e-22), + SC_(19.4185085296630859375), SC_(-17), SC_(-0.5579319000244140625), SC_(0.26324372445835333986291229819511043236130501244613e-21), + SC_(19.4185085296630859375), SC_(-13), SC_(-0.74602639675140380859375), SC_(0.1038530509609787824487836468215661897944095895319e-16), + SC_(19.4185085296630859375), SC_(-13), SC_(-0.44300353527069091796875), SC_(-0.11954326307657381817424475791045577141774274614215e-16), + SC_(19.4185085296630859375), SC_(-11), SC_(0.98576259613037109375), SC_(0.32010533648064664252568315383909193374387441919969e-19), + SC_(19.4185085296630859375), SC_(-8), SC_(0.93538987636566162109375), SC_(0.70096078678514191093666708376458847827858161562235e-11), + SC_(19.4185085296630859375), SC_(-6), SC_(0.826751708984375), SC_(-0.50239978245173340481994943923797004708278735544008e-8), + SC_(19.4185085296630859375), SC_(-6), SC_(0.91501367092132568359375), SC_(0.69080326024780067300862626196534340743493983872007e-8), + SC_(19.4185085296630859375), SC_(-5), SC_(-0.38366591930389404296875), SC_(-0.30848661309469795756336369771506539897303178512343e-7), + SC_(19.4185085296630859375), SC_(-2), SC_(-0.72904598712921142578125), SC_(0.6914266105284580609485581648675886651787722622556e-4), + SC_(19.4185085296630859375), SC_(-2), SC_(0.93773555755615234375), SC_(-0.00082097977947824531306568828914325965998735309386971), + SC_(19.4185085296630859375), SC_(1), SC_(0.81158387660980224609375), SC_(4.2277096876026264281609013898703823312548839649606), + SC_(19.4185085296630859375), SC_(3), SC_(-0.804919183254241943359375), SC_(-1069.4488089252507695912869014570583577070805013318), + SC_(19.4185085296630859375), SC_(8), SC_(-0.62323606014251708984375), SC_(-2666091237.1634788661326592401910351174873913360323), + SC_(19.4185085296630859375), SC_(8), SC_(0.99292266368865966796875), SC_(925591.97999902651810095119605577620595541436584718), + SC_(19.4185085296630859375), SC_(9), SC_(0.264718532562255859375), SC_(-5122686380.6946779314572422174331586519139555025857), + SC_(19.4185085296630859375), SC_(10), SC_(0.09376299381256103515625), SC_(965104740093.56545540804916275928148739799548313534), + SC_(19.4185085296630859375), SC_(11), SC_(0.92977702617645263671875), SC_(-624047483227.59396674703988209346984924810845031782), + SC_(19.4185085296630859375), SC_(15), SC_(0.62944734096527099609375), SC_(-738329845534139238.31589929078368480078587395312756), + SC_(19.4185085296630859375), SC_(18), SC_(0.67001712322235107421875), SC_(25754480226319677835.76098992722595983871287263485), + SC_(19.4396209716796875), SC_(-19), SC_(0.826751708984375), SC_(0.28096099754174757639142988313052093117069710820259e-27), + SC_(19.4396209716796875), SC_(-19), SC_(0.99292266368865966796875), SC_(0.41139415501798503182620662065024377889890717413858e-40), + SC_(19.4396209716796875), SC_(-16), SC_(0.92977702617645263671875), SC_(0.65747433121722074118768922518726326206091216387016e-25), + SC_(19.4396209716796875), SC_(-14), SC_(0.0944411754608154296875), SC_(0.7750508585662675010738068913765041007697196976154e-18), + SC_(19.4396209716796875), SC_(-10), SC_(0.93538987636566162109375), SC_(0.35203386148632068895108168682763476328178687031646e-14), + SC_(19.4396209716796875), SC_(-9), SC_(-0.804919183254241943359375), SC_(0.861460700695142273465894246225707493326360379112e-12), + SC_(19.4396209716796875), SC_(-9), SC_(0.09376299381256103515625), SC_(0.35797340830762850114741224311803714456251087097646e-13), + SC_(19.4396209716796875), SC_(-9), SC_(0.264718532562255859375), SC_(0.60970531234766811023858960941339345617424038691191e-13), + SC_(19.4396209716796875), SC_(-4), SC_(0.81158387660980224609375), SC_(0.14162438520800722165613785588526894318263591840579e-5), + SC_(19.4396209716796875), SC_(0), SC_(0.93773555755615234375), SC_(0.30185089350015097041813236342216465473811492066808), + SC_(19.4396209716796875), SC_(1), SC_(-0.74602639675140380859375), SC_(-3.3298125144104874439554986012917200328078041284076), + SC_(19.4396209716796875), SC_(6), SC_(-0.62323606014251708984375), SC_(2070223.0689771828593384049574788254082161424782151), + SC_(19.4396209716796875), SC_(9), SC_(-0.72904598712921142578125), SC_(40963049161.840563921749109759131967640623017931928), + SC_(19.4396209716796875), SC_(12), SC_(0.91501367092132568359375), SC_(7040751124453.4488884066354472049044671577945030141), + SC_(19.4396209716796875), SC_(13), SC_(0.67001712322235107421875), SC_(-5687940021302887.6451945681691475411327830115702795), + SC_(19.4396209716796875), SC_(14), SC_(0.98576259613037109375), SC_(674245566.99025968816472030671195432637133872627082), + SC_(19.4396209716796875), SC_(17), SC_(-0.38366591930389404296875), SC_(-127301699165359197878.79551348556848810793872324273), + SC_(19.4396209716796875), SC_(18), SC_(-0.5579319000244140625), SC_(-159505604178383717077.46533923481855803222244671133), + SC_(19.4396209716796875), SC_(19), SC_(-0.44300353527069091796875), SC_(-1029187142567780884281.5753644645077933758833454754), + SC_(19.4396209716796875), SC_(19), SC_(0.62944734096527099609375), SC_(-67969400336711244635.100926182757403393151023891505), + SC_(19.87186431884765625), SC_(-18), SC_(0.0944411754608154296875), SC_(0.51911342450084606006498960540691516909936454811191e-22), + SC_(19.87186431884765625), SC_(-17), SC_(0.67001712322235107421875), SC_(0.58726064536889576863720153513076020150678343992132e-22), + SC_(19.87186431884765625), SC_(-14), SC_(0.09376299381256103515625), SC_(0.77286264421078668095197950811355859649633390890055e-18), + SC_(19.87186431884765625), SC_(-13), SC_(0.98576259613037109375), SC_(0.15205096913859731930591097244177400726284058187231e-23), + SC_(19.87186431884765625), SC_(-12), SC_(0.62944734096527099609375), SC_(0.84179594974630947109160535195453410788993007175736e-16), + SC_(19.87186431884765625), SC_(-6), SC_(0.93773555755615234375), SC_(0.66088259609398732039730419153668689085254808488491e-8), + SC_(19.87186431884765625), SC_(-3), SC_(0.92977702617645263671875), SC_(-0.3202584859446750447001544695075271493418238924369e-4), + SC_(19.87186431884765625), SC_(2), SC_(0.93538987636566162109375), SC_(-114.29504330922803764479417554506839061453574689078), + SC_(19.87186431884765625), SC_(3), SC_(0.264718532562255859375), SC_(-590.31121404357419718511991159003397861067922712095), + SC_(19.87186431884765625), SC_(4), SC_(-0.804919183254241943359375), SC_(-31206.872941793395251553296530119153550183252786295), + SC_(19.87186431884765625), SC_(4), SC_(0.81158387660980224609375), SC_(27998.376863739953480856174913557597864204862111517), + SC_(19.87186431884765625), SC_(6), SC_(-0.74602639675140380859375), SC_(-3988947.6757273109841392288902418535673497942678044), + SC_(19.87186431884765625), SC_(6), SC_(0.91501367092132568359375), SC_(17207577.76868430351907141387711761936487111245407), + SC_(19.87186431884765625), SC_(8), SC_(-0.5579319000244140625), SC_(-2880999408.1753053515439782739761895146097466930431), + SC_(19.87186431884765625), SC_(10), SC_(-0.38366591930389404296875), SC_(-250811038036.64016980933046385373956183195852302589), + SC_(19.87186431884765625), SC_(11), SC_(0.99292266368865966796875), SC_(-4956548.0008289171017772512361059049573500136580832), + SC_(19.87186431884765625), SC_(12), SC_(-0.62323606014251708984375), SC_(-106590833899905.54371031227921841065877625515491286), + SC_(19.87186431884765625), SC_(12), SC_(-0.44300353527069091796875), SC_(164377317484172.780269767864581766622776515649156), + SC_(19.87186431884765625), SC_(18), SC_(-0.72904598712921142578125), SC_(-6500249695425848422.6994934374150447524907522260626), + SC_(19.87186431884765625), SC_(18), SC_(0.826751708984375), SC_(215957040146103710.43752878136972484271174243226819), + SC_(19.9363040924072265625), SC_(-19), SC_(-0.5579319000244140625), SC_(0.4536209533748046856223356436528310434693264815516e-24), + SC_(19.9363040924072265625), SC_(-19), SC_(0.264718532562255859375), SC_(0.78629720841879126459468443827603688509992408472136e-23), + SC_(19.9363040924072265625), SC_(-17), SC_(-0.44300353527069091796875), SC_(0.58251104165678394898744857711146365095314417691743e-21), + SC_(19.9363040924072265625), SC_(-16), SC_(-0.62323606014251708984375), SC_(-0.29751304424052425636113962115386812591456175870573e-20), + SC_(19.9363040924072265625), SC_(-14), SC_(0.91501367092132568359375), SC_(0.12709748787166211089363084338252308414817659872819e-20), + SC_(19.9363040924072265625), SC_(-14), SC_(0.92977702617645263671875), SC_(0.3871138758064428596131493508699859591733838577277e-21), + SC_(19.9363040924072265625), SC_(-12), SC_(0.93773555755615234375), SC_(0.89408958662499196674261505271428146255253342324884e-18), + SC_(19.9363040924072265625), SC_(-11), SC_(-0.38366591930389404296875), SC_(0.26026063256932547239295328669255586707226242612148e-14), + SC_(19.9363040924072265625), SC_(-10), SC_(-0.74602639675140380859375), SC_(-0.34765506905243672613499520824866410956137457719745e-13), + SC_(19.9363040924072265625), SC_(-10), SC_(0.81158387660980224609375), SC_(0.63172556307492864748930303721096827403984649074523e-13), + SC_(19.9363040924072265625), SC_(-4), SC_(0.0944411754608154296875), SC_(-0.12660004211205826580535251463738122438007427377005e-5), + SC_(19.9363040924072265625), SC_(-4), SC_(0.62944734096527099609375), SC_(-0.54962149013781842129875877015678395599272910286725e-6), + SC_(19.9363040924072265625), SC_(2), SC_(0.09376299381256103515625), SC_(66.642893417106666543810431512449143935500286088633), + SC_(19.9363040924072265625), SC_(3), SC_(0.99292266368865966796875), SC_(-1337.0443049910513329145515282976202263100750256813), + SC_(19.9363040924072265625), SC_(8), SC_(0.826751708984375), SC_(3010989900.8893375803525358367041329372033717978545), + SC_(19.9363040924072265625), SC_(10), SC_(-0.72904598712921142578125), SC_(-451944141173.12209414901560544187498153708108846852), + SC_(19.9363040924072265625), SC_(11), SC_(0.67001712322235107421875), SC_(-3818836562168.0063397346459855637481748033411304683), + SC_(19.9363040924072265625), SC_(13), SC_(0.98576259613037109375), SC_(-555684705.08358775884287423663622045616768375133224), + SC_(19.9363040924072265625), SC_(15), SC_(-0.804919183254241943359375), SC_(-43129486142739936.248977475359797313525493031517393), + SC_(19.9363040924072265625), SC_(19), SC_(0.93538987636566162109375), SC_(-21677629202869.188161110548407561929925083445523615) + }; +#undef SC_ + diff --git a/test/atanh_test.hpp b/test/atanh_test.hpp new file mode 100644 index 000000000..32a628e2f --- /dev/null +++ b/test/atanh_test.hpp @@ -0,0 +1,173 @@ +// unit test file atanh.hpp for the special functions test suite + +// (C) Copyright Hubert Holin 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#include +#include +//#include + + +#include + + +#include +#include + +template +T atanh_error_evaluator(T x) +{ + using ::std::abs; + using ::std::tanh; + using ::std::cosh; + + using ::std::numeric_limits; + + using ::boost::math::atanh; + + + static T const epsilon = numeric_limits::epsilon(); + + T y = tanh(x); + T z = atanh(y); + + T absolute_error = abs(z-x); + T relative_error = absolute_error/(cosh(x)*cosh(x)); + T scaled_error = relative_error/epsilon; + + return(scaled_error); +} + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(atanh_test, T) +{ + using ::std::abs; + using ::std::tanh; + using ::std::log; + + using ::std::numeric_limits; + + using ::boost::math::atanh; + + + BOOST_MESSAGE("Testing atanh in the real domain for " + << string_type_name::_() << "."); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(atanh(static_cast(0)))) + (numeric_limits::epsilon())); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(atanh(static_cast(3)/5) - log(static_cast(2)))) + (numeric_limits::epsilon())); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(atanh(static_cast(-3)/5) + log(static_cast(2)))) + (numeric_limits::epsilon())); + + for (int i = 0; i <= 100; i++) + { + T x = static_cast(i-50)/static_cast(5); + T y = tanh(x); + + if ( + (abs(y-static_cast(1)) >= numeric_limits::epsilon())&& + (abs(y+static_cast(1)) >= numeric_limits::epsilon()) + ) + { + BOOST_CHECK_PREDICATE(::std::less_equal(), + (atanh_error_evaluator(x)) + (static_cast(4))); + } + } +} + + +void atanh_manual_check() +{ + using ::std::abs; + using ::std::tanh; + + using ::std::numeric_limits; + + + BOOST_MESSAGE(" "); + BOOST_MESSAGE("atanh"); + + for (int i = 0; i <= 100; i++) + { + float xf = static_cast(i-50)/static_cast(5); + double xd = static_cast(i-50)/static_cast(5); + long double xl = + static_cast(i-50)/static_cast(5); + + float yf = tanh(xf); + double yd = tanh(xd); + (void) &yd; // avoid "unused variable" warning + long double yl = tanh(xl); + (void) &yl; // avoid "unused variable" warning + + if ( + std::numeric_limits::has_infinity && + std::numeric_limits::has_infinity && + std::numeric_limits::has_infinity + ) + { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_MESSAGE( ::std::setw(15) + << atanh_error_evaluator(xf) + << ::std::setw(15) + << atanh_error_evaluator(xd) + << ::std::setw(15) + << atanh_error_evaluator(xl)); +#else + BOOST_MESSAGE( ::std::setw(15) + << atanh_error_evaluator(xf) + << ::std::setw(15) + << atanh_error_evaluator(xd)); +#endif + } + else + { + if ( + (abs(yf-static_cast(1)) < + numeric_limits::epsilon())|| + (abs(yf+static_cast(1)) < + numeric_limits::epsilon())|| + (abs(yf-static_cast(1)) < + numeric_limits::epsilon())|| + (abs(yf+static_cast(1)) < + numeric_limits::epsilon())|| + (abs(yf-static_cast(1)) < + numeric_limits::epsilon())|| + (abs(yf+static_cast(1)) < + numeric_limits::epsilon()) + ) + { + BOOST_MESSAGE("Platform's numerics may lack precision."); + } + else + { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_MESSAGE( ::std::setw(15) + << atanh_error_evaluator(xf) + << ::std::setw(15) + << atanh_error_evaluator(xd) + << ::std::setw(15) + << atanh_error_evaluator(xl)); +#else + BOOST_MESSAGE( ::std::setw(15) + << atanh_error_evaluator(xf) + << ::std::setw(15) + << atanh_error_evaluator(xd)); +#endif + } + } + } + + BOOST_MESSAGE(" "); +} + diff --git a/test/bessel_i_data.ipp b/test/bessel_i_data.ipp new file mode 100644 index 000000000..0d9ea06b2 --- /dev/null +++ b/test/bessel_i_data.ipp @@ -0,0 +1,236 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 225> bessel_i_data = { + SC_(-0.8049192047119140625e2), SC_(0.24750102996826171875e2), SC_(0.4186983670927603951456761016615805321694e29), + SC_(-0.8049192047119140625e2), SC_(0.637722015380859375e2), SC_(0.2032477564839492547710163141114983376107e7), + SC_(-0.7460263824462890625e2), SC_(0.24750102996826171875e2), SC_(0.7209773983625557491285409746913864781653e24), + SC_(-0.7460263824462890625e2), SC_(0.637722015380859375e2), SC_(0.8754902581281478276585360070503782597115e9), + SC_(-0.7290460205078125e2), SC_(0.24750102996826171875e2), SC_(0.1045354686776007657866756333678839303562e23), + SC_(-0.7290460205078125e2), SC_(0.637722015380859375e2), SC_(0.4716204450814114467834563893626508706616e10), + SC_(-0.62323604583740234375e2), SC_(0.24750102996826171875e2), SC_(0.3651466017937929635806605426551713742921e15), + SC_(-0.62323604583740234375e2), SC_(0.637722015380859375e2), SC_(0.8566833579732135640262696128535710188301e14), + SC_(-0.5579319000244140625e2), SC_(0.24750102996826171875e2), SC_(-0.7703641421675666973721209829630518563931e10), + SC_(-0.5579319000244140625e2), SC_(0.637722015380859375e2), SC_(0.1959694422054590004110877333169097220352e17), + SC_(-0.4430035400390625e2), SC_(0.95070552825927734375e1), SC_(0.2934779151682606205400047286649505699432e23), + SC_(-0.4430035400390625e2), SC_(0.24750102996826171875e2), SC_(0.6405675645065933411553551945741721563518e3), + SC_(-0.4430035400390625e2), SC_(0.637722015380859375e2), SC_(0.805557170418531409978537810934369410633e20), + SC_(-0.383665924072265625e2), SC_(0.51139926910400390625e1), SC_(0.289105444853831500904637353663660192819e28), + SC_(-0.383665924072265625e2), SC_(0.95070552825927734375e1), SC_(0.8806324212322684518238175986513600832194e17), + SC_(-0.383665924072265625e2), SC_(0.24750102996826171875e2), SC_(0.3890036496141556574166698709019531196928e0), + SC_(-0.383665924072265625e2), SC_(0.637722015380859375e2), SC_(0.3063025493893607419003502570490592505508e22), + SC_(0.93762989044189453125e1), SC_(0.177219114266335964202880859375e-2), SC_(0.2803618162597370401397229001288041823179e-34), + SC_(0.93762989044189453125e1), SC_(0.22177286446094512939453125e-2), SC_(0.229588528336937186404069781250920318956e-33), + SC_(0.93762989044189453125e1), SC_(0.7444499991834163665771484375e-2), SC_(0.1959749964125288689721223617361145955449e-28), + SC_(0.93762989044189453125e1), SC_(0.1433600485324859619140625e-1), SC_(0.9133296812900414557505943321740418454784e-26), + SC_(0.93762989044189453125e1), SC_(0.1760916970670223236083984375e-1), SC_(0.6281058749227662133654486730221725796013e-25), + SC_(0.93762989044189453125e1), SC_(0.6152711808681488037109375e-1), SC_(0.7806782632836478900912324974768292604178e-20), + SC_(0.93762989044189453125e1), SC_(0.11958599090576171875e0), SC_(0.3969270921873940596846801055093851364249e-17), + SC_(0.93762989044189453125e1), SC_(0.15262925624847412109375e0), SC_(0.3911054564312661834266087273264220427648e-16), + SC_(0.93762989044189453125e1), SC_(0.408089816570281982421875e0), SC_(0.3968059264413538749627636752562708954912e-12), + SC_(0.93762989044189453125e1), SC_(0.6540834903717041015625e0), SC_(0.3328913174482554006724623549002084389481e-10), + SC_(0.93762989044189453125e1), SC_(0.1097540378570556640625e1), SC_(0.4345996628731497806117301412025701409681e-8), + SC_(0.93762989044189453125e1), SC_(0.30944411754608154296875e1), SC_(0.8821763783526972687094781579187606888861e-4), + SC_(0.93762989044189453125e1), SC_(0.51139926910400390625e1), SC_(0.1440790625360570911757430559538249450382e-1), + SC_(0.93762989044189453125e1), SC_(0.95070552825927734375e1), SC_(0.1943226931700462962154856194109129706652e2), + SC_(0.93762989044189453125e1), SC_(0.24750102996826171875e2), SC_(0.7543097629536504483214121556669228286985e9), + SC_(0.93762989044189453125e1), SC_(0.637722015380859375e2), SC_(0.1242187462089386651190442543425398784833e27), + SC_(0.944411754608154296875e1), SC_(0.177219114266335964202880859375e-2), SC_(0.148982667418264205724082321914073417083e-34), + SC_(0.944411754608154296875e1), SC_(0.22177286446094512939453125e-2), SC_(0.1238718017352724275257612770297545398575e-33), + SC_(0.944411754608154296875e1), SC_(0.7444499991834163665771484375e-2), SC_(0.1147864422785975785379486658863341965539e-28), + SC_(0.944411754608154296875e1), SC_(0.1433600485324859619140625e-1), SC_(0.559265688248480010364759849989645260096e-26), + SC_(0.944411754608154296875e1), SC_(0.1760916970670223236083984375e-1), SC_(0.3900141694706919558831468837845481277321e-25), + SC_(0.944411754608154296875e1), SC_(0.6152711808681488037109375e-1), SC_(0.5276757393757080096863772555264582929817e-20), + SC_(0.944411754608154296875e1), SC_(0.11958599090576171875e0), SC_(0.2806586679017851973719099727210813946663e-17), + SC_(0.944411754608154296875e1), SC_(0.15262925624847412109375e0), SC_(0.2811556875187931972313758314199441466104e-16), + SC_(0.944411754608154296875e1), SC_(0.408089816570281982421875e0), SC_(0.3049214538640230343488562864541510399665e-12), + SC_(0.944411754608154296875e1), SC_(0.6540834903717041015625e0), SC_(0.2641125801178791553193637198564322320001e-10), + SC_(0.944411754608154296875e1), SC_(0.1097540378570556640625e1), SC_(0.3570822482377035574485486720053965916982e-8), + SC_(0.944411754608154296875e1), SC_(0.30944411754608154296875e1), SC_(0.7766278241102208401170874203781603111746e-4), + SC_(0.944411754608154296875e1), SC_(0.51139926910400390625e1), SC_(0.1309298511678054464902027194534409538646e-1), + SC_(0.944411754608154296875e1), SC_(0.95070552825927734375e1), SC_(0.1827999074103902886609783889480769570524e2), + SC_(0.944411754608154296875e1), SC_(0.24750102996826171875e2), SC_(0.7351908192175552948778255155781258947671e9), + SC_(0.944411754608154296875e1), SC_(0.637722015380859375e2), SC_(0.1229766721665510769829680551623499922036e27), + SC_(0.264718532562255859375e2), SC_(0.177219114266335964202880859375e-2), SC_(0.8225184464794312214427441884602794315635e-108), + SC_(0.264718532562255859375e2), SC_(0.22177286446094512939453125e-2), SC_(0.3114921421876925970246827842503222114267e-105), + SC_(0.264718532562255859375e2), SC_(0.7444499991834163665771484375e-2), SC_(0.2604432142391172275446430144882881083067e-91), + SC_(0.264718532562255859375e2), SC_(0.1433600485324859619140625e-1), SC_(0.8900355057385521217383601748827962581012e-84), + SC_(0.264718532562255859375e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2058868164797190179746749314402013402828e-81), + SC_(0.264718532562255859375e2), SC_(0.6152711808681488037109375e-1), SC_(0.4972024613715337297288025064797981454153e-67), + SC_(0.264718532562255859375e2), SC_(0.11958599090576171875e0), SC_(0.2171276940537634328598470815758727598254e-59), + SC_(0.264718532562255859375e2), SC_(0.15262925624847412109375e0), SC_(0.1385612106461115669282812891998412819968e-56), + SC_(0.264718532562255859375e2), SC_(0.408089816570281982421875e0), SC_(0.2810683753661952718697857543641460074915e-45), + SC_(0.264718532562255859375e2), SC_(0.6540834903717041015625e0), SC_(0.747015815779669898566479492042761278802e-40), + SC_(0.264718532562255859375e2), SC_(0.1097540378570556640625e1), SC_(0.6713297080381936017489524806125579632058e-34), + SC_(0.264718532562255859375e2), SC_(0.30944411754608154296875e1), SC_(0.5978300815170794201799690600452619195433e-22), + SC_(0.264718532562255859375e2), SC_(0.51139926910400390625e1), SC_(0.4142831554257851122039738437459914404627e-16), + SC_(0.264718532562255859375e2), SC_(0.95070552825927734375e1), SC_(0.9887760983557707673914821600211506775333e-9), + SC_(0.264718532562255859375e2), SC_(0.24750102996826171875e2), SC_(0.7441331815372677577709813948668342499614e4), + SC_(0.264718532562255859375e2), SC_(0.637722015380859375e2), SC_(0.1057653975611580297025968384966638534004e25), + SC_(0.62944732666015625e2), SC_(0.177219114266335964202880859375e-2), SC_(0.45958690635023871062575909063334378893e-279), + SC_(0.62944732666015625e2), SC_(0.22177286446094512939453125e-2), SC_(0.6209389773028073837297210778242506483306e-273), + SC_(0.62944732666015625e2), SC_(0.7444499991834163665771484375e-2), SC_(0.7895715130491294720616738632774975243308e-240), + SC_(0.62944732666015625e2), SC_(0.1433600485324859619140625e-1), SC_(0.647138446378151590819632213606225850758e-222), + SC_(0.62944732666015625e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2707933582567150643813770648402680542879e-216), + SC_(0.62944732666015625e2), SC_(0.6152711808681488037109375e-1), SC_(0.4288055347469163240604226404771653090957e-182), + SC_(0.62944732666015625e2), SC_(0.11958599090576171875e0), SC_(0.6294953330027617350864498223470068886243e-164), + SC_(0.62944732666015625e2), SC_(0.15262925624847412109375e0), SC_(0.2940851738608356257417673881327738650612e-157), + SC_(0.62944732666015625e2), SC_(0.408089816570281982421875e0), SC_(0.2257058202165688627695231239206115145716e-130), + SC_(0.62944732666015625e2), SC_(0.6540834903717041015625e0), SC_(0.1778039654840661639266356774235366667095e-117), + SC_(0.62944732666015625e2), SC_(0.1097540378570556640625e1), SC_(0.2514421131363998555318888464942258689787e-103), + SC_(0.62944732666015625e2), SC_(0.30944411754608154296875e1), SC_(0.5622845117457223453327449156803858773151e-75), + SC_(0.62944732666015625e2), SC_(0.51139926910400390625e1), SC_(0.3245046327192357619087066004032484720756e-61), + SC_(0.62944732666015625e2), SC_(0.95070552825927734375e1), SC_(0.3715619462888415165782020457969122705518e-44), + SC_(0.62944732666015625e2), SC_(0.24750102996826171875e2), SC_(0.3928772045743820848686674725450534320585e-17), + SC_(0.62944732666015625e2), SC_(0.637722015380859375e2), SC_(0.4982235303443094180348113374739658467202e14), + SC_(0.67001708984375e2), SC_(0.177219114266335964202880859375e-2), SC_(0.8145278863081702046160838798060574146498e-299), + SC_(0.67001708984375e2), SC_(0.22177286446094512939453125e-2), SC_(0.273355602940560423241491733212069399811e-292), + SC_(0.67001708984375e2), SC_(0.7444499991834163665771484375e-2), SC_(0.4728729011489722531816755757616996909541e-257), + SC_(0.67001708984375e2), SC_(0.1433600485324859619140625e-1), SC_(0.5532680654837973551675604470108479729368e-238), + SC_(0.67001708984375e2), SC_(0.1760916970670223236083984375e-1), SC_(0.5332218714319018365471934122528911265283e-232), + SC_(0.67001708984375e2), SC_(0.6152711808681488037109375e-1), SC_(0.1351442480084734517888404330190286676976e-195), + SC_(0.67001708984375e2), SC_(0.11958599090576171875e0), SC_(0.2940544214028786728558702402226682606314e-176), + SC_(0.67001708984375e2), SC_(0.15262925624847412109375e0), SC_(0.3696361271707945402277810208698541211588e-169), + SC_(0.67001708984375e2), SC_(0.408089816570281982421875e0), SC_(0.1533334887876358917747817075186949290711e-140), + SC_(0.67001708984375e2), SC_(0.6540834903717041015625e0), SC_(0.8188269262461989880045159642061071185302e-127), + SC_(0.67001708984375e2), SC_(0.1097540378570556640625e1), SC_(0.9452938851334173462198792853676699061061e-112), + SC_(0.67001708984375e2), SC_(0.30944411754608154296875e1), SC_(0.1414272882631812261170943199679860524587e-81), + SC_(0.67001708984375e2), SC_(0.51139926910400390625e1), SC_(0.6241173489976673359483605543696831737147e-67), + SC_(0.67001708984375e2), SC_(0.95070552825927734375e1), SC_(0.8712044333057202529728660569277365273428e-49), + SC_(0.67001708984375e2), SC_(0.24750102996826171875e2), SC_(0.3982650966436440948794776219727856433598e-20), + SC_(0.67001708984375e2), SC_(0.637722015380859375e2), SC_(0.1301141472635952354311394258582077376009e13), + SC_(0.8115838623046875e2), SC_(0.177219114266335964202880859375e-2), SC_(0.157205517364431479471034227738737225277e-368), + SC_(0.8115838623046875e2), SC_(0.22177286446094512939453125e-2), SC_(0.1262175228652731751157584599767837335561e-360), + SC_(0.8115838623046875e2), SC_(0.7444499991834163665771484375e-2), SC_(0.6088589424107921962360080561386431972983e-318), + SC_(0.8115838623046875e2), SC_(0.1433600485324859619140625e-1), SC_(0.7613660164036552097738930614744948905917e-295), + SC_(0.8115838623046875e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1348680647746932169852488432888512948313e-287), + SC_(0.8115838623046875e2), SC_(0.6152711808681488037109375e-1), SC_(0.168078664707541881282539369926315796139e-243), + SC_(0.8115838623046875e2), SC_(0.11958599090576171875e0), SC_(0.445606290877694806972008257759791099908e-220), + SC_(0.8115838623046875e2), SC_(0.15262925624847412109375e0), SC_(0.177133785007840856017566661252834588383e-211), + SC_(0.8115838623046875e2), SC_(0.408089816570281982421875e0), SC_(0.8178917798786483491031838984820411058629e-177), + SC_(0.8115838623046875e2), SC_(0.6540834903717041015625e0), SC_(0.3471864027747748292078702537013542433812e-160), + SC_(0.8115838623046875e2), SC_(0.1097540378570556640625e1), SC_(0.6094881924219064798913334042624617538195e-142), + SC_(0.8115838623046875e2), SC_(0.30944411754608154296875e1), SC_(0.2140053247322928924398536295193120629168e-105), + SC_(0.8115838623046875e2), SC_(0.51139926910400390625e1), SC_(0.1146255672421987406264738996157910945912e-87), + SC_(0.8115838623046875e2), SC_(0.95070552825927734375e1), SC_(0.9972275825053200207362404131650025897604e-66), + SC_(0.8115838623046875e2), SC_(0.24750102996826171875e2), SC_(0.2535562170383504453377114640733105094874e-31), + SC_(0.8115838623046875e2), SC_(0.637722015380859375e2), SC_(0.1001308383053194662448933928171633925979e7), + SC_(0.826751708984375e2), SC_(0.177219114266335964202880859375e-2), SC_(0.4573779508720004298227675414192260046546e-376), + SC_(0.826751708984375e2), SC_(0.22177286446094512939453125e-2), SC_(0.5160106315490947386154953682976395046894e-368), + SC_(0.826751708984375e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1562334017115491895886977996073373942207e-324), + SC_(0.826751708984375e2), SC_(0.1433600485324859619140625e-1), SC_(0.5278571215785182326959702265688351134291e-301), + SC_(0.826751708984375e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1277312554796787408420744978149513517013e-293), + SC_(0.826751708984375e2), SC_(0.6152711808681488037109375e-1), SC_(0.1061724104938018469582055527280255336585e-248), + SC_(0.826751708984375e2), SC_(0.11958599090576171875e0), SC_(0.7712852664056808115770779559640598043755e-225), + SC_(0.826751708984375e2), SC_(0.15262925624847412109375e0), SC_(0.443894324669192984876181444773703726768e-216), + SC_(0.826751708984375e2), SC_(0.408089816570281982421875e0), SC_(0.9109962504912653219532484696574201283998e-181), + SC_(0.826751708984375e2), SC_(0.6540834903717041015625e0), SC_(0.7909192383073503255406403850089126662329e-164), + SC_(0.826751708984375e2), SC_(0.1097540378570556640625e1), SC_(0.3044178271260621699107515249421754701285e-145), + SC_(0.826751708984375e2), SC_(0.30944411754608154296875e1), SC_(0.5146682221656082575738779097493053972109e-108), + SC_(0.826751708984375e2), SC_(0.51139926910400390625e1), SC_(0.5900879815805989068497603852413696132032e-90), + SC_(0.826751708984375e2), SC_(0.95070552825927734375e1), SC_(0.1310234972644560474404628143543963280019e-67), + SC_(0.826751708984375e2), SC_(0.24750102996826171875e2), SC_(0.1383061073737088351248401358144891014898e-32), + SC_(0.826751708984375e2), SC_(0.637722015380859375e2), SC_(0.196739835131236386225438031886273533704e6), + SC_(0.9150136566162109375e2), SC_(0.177219114266335964202880859375e-2), SC_(0.3761319106186226394224478209899958029636e-420), + SC_(0.9150136566162109375e2), SC_(0.22177286446094512939453125e-2), SC_(0.3071679846975924485501758655009110183713e-411), + SC_(0.9150136566162109375e2), SC_(0.7444499991834163665771484375e-2), SC_(0.4077804894761263349335542048955151964019e-363), + SC_(0.9150136566162109375e2), SC_(0.1433600485324859619140625e-1), SC_(0.4477531867242442419409019021372276068979e-337), + SC_(0.9150136566162109375e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6654163234660172683086930623269130983519e-329), + SC_(0.9150136566162109375e2), SC_(0.6152711808681488037109375e-1), SC_(0.3454009816975760188415259509498042816599e-279), + SC_(0.9150136566162109375e2), SC_(0.11958599090576171875e0), SC_(0.8848846138473239243942795648392755926646e-253), + SC_(0.9150136566162109375e2), SC_(0.15262925624847412109375e0), SC_(0.4386836568767226593594614824285031640733e-243), + SC_(0.9150136566162109375e2), SC_(0.408089816570281982421875e0), SC_(0.5299038860970871277654859065759816903279e-204), + SC_(0.9150136566162109375e2), SC_(0.6540834903717041015625e0), SC_(0.2958478400504149733673117483321464747667e-185), + SC_(0.9150136566162109375e2), SC_(0.1097540378570556640625e1), SC_(0.1097303702759080431399205144048861500121e-164), + SC_(0.9150136566162109375e2), SC_(0.30944411754608154296875e1), SC_(0.1740056306666555055152972181106078242165e-123), + SC_(0.9150136566162109375e2), SC_(0.51139926910400390625e1), SC_(0.1673339953325846421819964823098296151575e-103), + SC_(0.9150136566162109375e2), SC_(0.95070552825927734375e1), SC_(0.8687167720001720556010737170485049371093e-79), + SC_(0.9150136566162109375e2), SC_(0.24750102996826171875e2), SC_(0.3692850810905946301005088439612740799387e-40), + SC_(0.9150136566162109375e2), SC_(0.637722015380859375e2), SC_(0.9898224333593177462666087597942281055572e1), + SC_(0.9297769927978515625e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1460385366381817590912628374886577400311e-427), + SC_(0.9297769927978515625e2), SC_(0.22177286446094512939453125e-2), SC_(0.1660714404677314430822348585030702868811e-418), + SC_(0.9297769927978515625e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1317617473983366568805362269070678473134e-369), + SC_(0.9297769927978515625e2), SC_(0.1433600485324859619140625e-1), SC_(0.3806757540516858660331314163681152866391e-343), + SC_(0.9297769927978515625e2), SC_(0.1760916970670223236083984375e-1), SC_(0.7664122312038401503266516484382792372918e-335), + SC_(0.9297769927978515625e2), SC_(0.6152711808681488037109375e-1), SC_(0.2522466580033992529245827351960305858762e-284), + SC_(0.9297769927978515625e2), SC_(0.11958599090576171875e0), SC_(0.1723766595067289930333944605397907165126e-257), + SC_(0.9297769927978515625e2), SC_(0.15262925624847412109375e0), SC_(0.122510044516191287194986636228510714723e-247), + SC_(0.9297769927978515625e2), SC_(0.408089816570281982421875e0), SC_(0.6320964093687359992246531587046119933564e-208), + SC_(0.9297769927978515625e2), SC_(0.6540834903717041015625e0), SC_(0.708136925567413515490484772994252837671e-189), + SC_(0.9297769927978515625e2), SC_(0.1097540378570556640625e1), SC_(0.5639264150692756756490904133823758806629e-168), + SC_(0.9297769927978515625e2), SC_(0.30944411754608154296875e1), SC_(0.4129462260289034923014177214131118720683e-126), + SC_(0.9297769927978515625e2), SC_(0.51139926910400390625e1), SC_(0.8331294791988632108059294677700546991875e-106), + SC_(0.9297769927978515625e2), SC_(0.95070552825927734375e1), SC_(0.1077417088255643021856220960456095439197e-80), + SC_(0.9297769927978515625e2), SC_(0.24750102996826171875e2), SC_(0.1840680550009863574908112564805789739098e-41), + SC_(0.9297769927978515625e2), SC_(0.637722015380859375e2), SC_(0.1763888932233277016362256890048367262299e1), + SC_(0.935389862060546875e2), SC_(0.177219114266335964202880859375e-2), SC_(0.2209347565974788696639264391539707087396e-430), + SC_(0.935389862060546875e2), SC_(0.22177286446094512939453125e-2), SC_(0.2849440938204890850545105749510669521059e-421), + SC_(0.935389862060546875e2), SC_(0.7444499991834163665771484375e-2), SC_(0.4461183356669528089654614389899558337017e-372), + SC_(0.935389862060546875e2), SC_(0.1433600485324859619140625e-1), SC_(0.186189013996132586006620768843737617781e-345), + SC_(0.935389862060546875e2), SC_(0.1760916970670223236083984375e-1), SC_(0.4207171464903321221478332968276379145208e-337), + SC_(0.935389862060546875e2), SC_(0.6152711808681488037109375e-1), SC_(0.2794575928537638790359932072281685834465e-286), + SC_(0.935389862060546875e2), SC_(0.11958599090576171875e0), SC_(0.2773090200667294626835386467499350751345e-259), + SC_(0.935389862060546875e2), SC_(0.15262925624847412109375e0), SC_(0.2260110749901556545475713942742165650873e-249), + SC_(0.935389862060546875e2), SC_(0.408089816570281982421875e0), SC_(0.2025238134586584688844397962030031731834e-209), + SC_(0.935389862060546875e2), SC_(0.6540834903717041015625e0), SC_(0.295667265580285638161837806809758856674e-190), + SC_(0.935389862060546875e2), SC_(0.1097540378570556640625e1), SC_(0.3148279617989718500918216329373129544483e-169), + SC_(0.935389862060546875e2), SC_(0.30944411754608154296875e1), SC_(0.4124362783425667441395995380976040300139e-127), + SC_(0.935389862060546875e2), SC_(0.51139926910400390625e1), SC_(0.1102865897947875580711254657268148779102e-106), + SC_(0.935389862060546875e2), SC_(0.95070552825927734375e1), SC_(0.2017912263774429544180145434725268888799e-81), + SC_(0.935389862060546875e2), SC_(0.24750102996826171875e2), SC_(0.585124331702042518682450228001579959011e-42), + SC_(0.935389862060546875e2), SC_(0.637722015380859375e2), SC_(0.9109033452242380425874783541414924137194e0), + SC_(0.937735595703125e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1462889005744077883101401150674179145163e-431), + SC_(0.937735595703125e2), SC_(0.22177286446094512939453125e-2), SC_(0.1988629752815125148136418579179711319716e-422), + SC_(0.937735595703125e2), SC_(0.7444499991834163665771484375e-2), SC_(0.4136307735057499861306799147357744410527e-373), + SC_(0.937735595703125e2), SC_(0.1433600485324859619140625e-1), SC_(0.2013143185707044815928416824270942612755e-346), + SC_(0.937735595703125e2), SC_(0.1760916970670223236083984375e-1), SC_(0.4773761811204046357428111998379256257516e-338), + SC_(0.937735595703125e2), SC_(0.6152711808681488037109375e-1), SC_(0.425242480570104524943002347341364243555e-287), + SC_(0.937735595703125e2), SC_(0.11958599090576171875e0), SC_(0.4931576672624963195999096534426325149741e-260), + SC_(0.937735595703125e2), SC_(0.15262925624847412109375e0), SC_(0.4256045789264947383412434711022341543066e-250), + SC_(0.937735595703125e2), SC_(0.408089816570281982421875e0), SC_(0.4803333698331891418314823264599934301891e-210), + SC_(0.937735595703125e2), SC_(0.6540834903717041015625e0), SC_(0.7832996865729431858502081794565744300833e-191), + SC_(0.937735595703125e2), SC_(0.1097540378570556640625e1), SC_(0.9417267690858043031227540308585633026951e-170), + SC_(0.937735595703125e2), SC_(0.30944411754608154296875e1), SC_(0.157318806580738139722298745038219284193e-127), + SC_(0.937735595703125e2), SC_(0.51139926910400390625e1), SC_(0.4732364164074862900105799445314181870355e-107), + SC_(0.937735595703125e2), SC_(0.95070552825927734375e1), SC_(0.1001021317453180716256526810273777626779e-81), + SC_(0.937735595703125e2), SC_(0.24750102996826171875e2), SC_(0.3620919659244281764247766012640646618795e-42), + SC_(0.937735595703125e2), SC_(0.637722015380859375e2), SC_(0.6905128242941598516051984956052879129643e0), + SC_(0.98576263427734375e2), SC_(0.177219114266335964202880859375e-2), SC_(0.9336746634488322706414234865292535693528e-456), + SC_(0.98576263427734375e2), SC_(0.22177286446094512939453125e-2), SC_(0.3726585870845834794923875248455908817372e-446), + SC_(0.98576263427734375e2), SC_(0.7444499991834163665771484375e-2), SC_(0.2601610550455548941598264605766950216075e-394), + SC_(0.98576263427734375e2), SC_(0.1433600485324859619140625e-1), SC_(0.2946579103606572296568332778405704339447e-366), + SC_(0.98576263427734375e2), SC_(0.1760916970670223236083984375e-1), SC_(0.187601891562751902089087302157938087049e-357), + SC_(0.98576263427734375e2), SC_(0.6152711808681488037109375e-1), SC_(0.6799154838478458841616493729745617835238e-304), + SC_(0.98576263427734375e2), SC_(0.11958599090576171875e0), SC_(0.1918358571470383749967177500137981440808e-275), + SC_(0.98576263427734375e2), SC_(0.15262925624847412109375e0), SC_(0.5343578537582739461840941918655264976087e-265), + SC_(0.98576263427734375e2), SC_(0.408089816570281982421875e0), SC_(0.6787062833732678279692755114282109142003e-223), + SC_(0.98576263427734375e2), SC_(0.6540834903717041015625e0), SC_(0.1066640939494771247816497353023791644911e-202), + SC_(0.98576263427734375e2), SC_(0.1097540378570556640625e1), SC_(0.1540136528087774369513263265420126735826e-180), + SC_(0.98576263427734375e2), SC_(0.30944411754608154296875e1), SC_(0.3732038034481165129234044502070414699443e-136), + SC_(0.98576263427734375e2), SC_(0.51139926910400390625e1), SC_(0.1250755987062674994392330438153044634978e-114), + SC_(0.98576263427734375e2), SC_(0.95070552825927734375e1), SC_(0.5155910228741865630530748597345526561019e-88), + SC_(0.98576263427734375e2), SC_(0.24750102996826171875e2), SC_(0.173088587965140287251789752425440165731e-46), + SC_(0.98576263427734375e2), SC_(0.637722015380859375e2), SC_(0.2139803586023867005821680732168695726563e-2), + SC_(0.99292266845703125e2), SC_(0.177219114266335964202880859375e-2), SC_(0.2261194572892689144464257783997217591003e-459), + SC_(0.99292266845703125e2), SC_(0.22177286446094512939453125e-2), SC_(0.1059718907506904441739516643053360474766e-449), + SC_(0.99292266845703125e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1760708480112020640215899721963204640613e-397), + SC_(0.99292266845703125e2), SC_(0.1433600485324859619140625e-1), SC_(0.3188104531258877486126505505288677161449e-369), + SC_(0.99292266845703125e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2351789542752206704101133488009018496105e-360), + SC_(0.99292266845703125e2), SC_(0.6152711808681488037109375e-1), SC_(0.2087568008199554926652533137918586792421e-306), + SC_(0.99292266845703125e2), SC_(0.11958599090576171875e0), SC_(0.9479028425669903092514832066160512980969e-278), + SC_(0.99292266845703125e2), SC_(0.15262925624847412109375e0), SC_(0.3144358707762065981613586172661430942717e-267), + SC_(0.99292266845703125e2), SC_(0.408089816570281982421875e0), SC_(0.8076041994016289659837261163786154124696e-225), + SC_(0.99292266845703125e2), SC_(0.6540834903717041015625e0), SC_(0.1779204438764558957337121273226739006915e-204), + SC_(0.99292266845703125e2), SC_(0.1097540378570556640625e1), SC_(0.3721424984805355820747068117876586135294e-182), + SC_(0.99292266845703125e2), SC_(0.30944411754608154296875e1), SC_(0.1893861897195351427223854481637771374334e-137), + SC_(0.99292266845703125e2), SC_(0.51139926910400390625e1), SC_(0.9092055250182067057531632044074461256826e-116), + SC_(0.99292266845703125e2), SC_(0.95070552825927734375e1), SC_(0.5835883537392851212536191805017949717878e-89), + SC_(0.99292266845703125e2), SC_(0.24750102996826171875e2), SC_(0.3851491419574571630736597349656750764496e-47), + SC_(0.99292266845703125e2), SC_(0.637722015380859375e2), SC_(0.8891727416380076726409331943293544170762e-3) + }; +#undef SC_ + + diff --git a/test/bessel_i_int_data.ipp b/test/bessel_i_int_data.ipp new file mode 100644 index 000000000..31bd6d477 --- /dev/null +++ b/test/bessel_i_int_data.ipp @@ -0,0 +1,506 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 495> bessel_i_int_data = { + SC_(0), SC_(0.177219114266335964202880859375e-2), SC_(0.1000000785165515654790765567976560128368e1), + SC_(0), SC_(0.22177286446094512939453125e-2), SC_(0.1000001229580463247166647265657459686513e1), + SC_(0), SC_(0.7444499991834163665771484375e-2), SC_(0.1000013855193023439561602999309818071557e1), + SC_(0), SC_(0.1433600485324859619140625e-1), SC_(0.100005138091877460790808253311381371617e1), + SC_(0), SC_(0.1760916970670223236083984375e-1), SC_(0.1000077522216818092267597684468025144708e1), + SC_(0), SC_(0.6152711808681488037109375e-1), SC_(0.1000946620505179168127565717529250425225e1), + SC_(0), SC_(0.11958599090576171875e0), SC_(0.1003578399092795290959506558979668000986e1), + SC_(0), SC_(0.15262925624847412109375e0), SC_(0.1005832407473077490942708958509537944332e1), + SC_(0), SC_(0.408089816570281982421875e0), SC_(0.1042069688780878266908906813963061201236e1), + SC_(0), SC_(0.6540834903717041015625e0), SC_(0.1109850431257999241542412962070021625239e1), + SC_(0), SC_(0.1097540378570556640625e1), SC_(0.1324594459649893673687924138468203300537e1), + SC_(0), SC_(0.30944411754608154296875e1), SC_(0.5270503008520823311035815313268274322688e1), + SC_(0), SC_(0.51139926910400390625e1), SC_(0.3016460113324413124385977969424656719006e2), + SC_(0), SC_(0.95070552825927734375e1), SC_(0.1765221230864037183559483071058505259281e4), + SC_(0), SC_(0.24750102996826171875e2), SC_(0.4520582716299093122418957895745838047526e10), + SC_(0), SC_(0.637722015380859375e2), SC_(0.248523599457696979135532431768725854655e27), + SC_(0.1e1), SC_(0.177219114266335964202880859375e-2), SC_(0.8860959191975001520307655146348128981208e-3), + SC_(0.1e1), SC_(0.22177286446094512939453125e-2), SC_(0.1108865004023609343492425973877677708278e-2), + SC_(0.1e1), SC_(0.7444499991834163665771484375e-2), SC_(0.3722275782133396649790935284938128705517e-2), + SC_(0.1e1), SC_(0.1433600485324859619140625e-1), SC_(0.7168186575111060974651037851905127311172e-2), + SC_(0.1e1), SC_(0.1760916970670223236083984375e-1), SC_(0.8804926126614467969087386987026758424778e-2), + SC_(0.1e1), SC_(0.6152711808681488037109375e-1), SC_(0.307781186030490619563031243121873491391e-1), + SC_(0.1e1), SC_(0.11958599090576171875e0), SC_(0.5989994518931145664339323232552863277613e-1), + SC_(0.1e1), SC_(0.15262925624847412109375e0), SC_(0.7653706917131299515526663760316122678536e-1), + SC_(0.1e1), SC_(0.408089816570281982421875e0), SC_(0.2083221213089251435227012018452735830071e0), + SC_(0.1e1), SC_(0.6540834903717041015625e0), SC_(0.3448458972066057120326871217765728528051e0), + SC_(0.1e1), SC_(0.1097540378570556640625e1), SC_(0.6356539293968716593197570138590683019623e0), + SC_(0.1e1), SC_(0.30944411754608154296875e1), SC_(0.4304586767845429639244166020309162877221e1), + SC_(0.1e1), SC_(0.51139926910400390625e1), SC_(0.2702631060982870150322284389310299253322e2), + SC_(0.1e1), SC_(0.95070552825927734375e1), SC_(0.1669630395093490324472744646621461529409e4), + SC_(0.1e1), SC_(0.24750102996826171875e2), SC_(0.4428295881367777978681563662886643036499e10), + SC_(0.1e1), SC_(0.637722015380859375e2), SC_(0.2465673119157042745018873572402000151201e27), + SC_(0.4e1), SC_(0.177219114266335964202880859375e-2), SC_(0.2568686424002909205919386454789887238475e-13), + SC_(0.4e1), SC_(0.22177286446094512939453125e-2), SC_(0.629944815795979203946014830217428242984e-13), + SC_(0.4e1), SC_(0.7444499991834163665771484375e-2), SC_(0.7998565658415621562337103146472082554028e-11), + SC_(0.4e1), SC_(0.1433600485324859619140625e-1), SC_(0.1099982550547901452676110099180043770797e-9), + SC_(0.4e1), SC_(0.1760916970670223236083984375e-1), SC_(0.250398097475533981445277556832601328223e-9), + SC_(0.4e1), SC_(0.6152711808681488037109375e-1), SC_(0.3732650011579987791541719677211396374467e-7), + SC_(0.4e1), SC_(0.11958599090576171875e0), SC_(0.5329672477129410019119113447394893295596e-6), + SC_(0.4e1), SC_(0.15262925624847412109375e0), SC_(0.141489997131418627857066995095369938696e-5), + SC_(0.4e1), SC_(0.408089816570281982421875e0), SC_(0.7282921216911263304294810852632628068137e-4), + SC_(0.4e1), SC_(0.6540834903717041015625e0), SC_(0.4869396484162391070562181449261259775595e-3), + SC_(0.4e1), SC_(0.1097540378570556640625e1), SC_(0.4012161862208555247000124967949382739361e-2), + SC_(0.4e1), SC_(0.30944411754608154296875e1), SC_(0.3787138783037547310647400896688635049979e0), + SC_(0.4e1), SC_(0.51139926910400390625e1), SC_(0.5868359078308841151534796428362771527491e1), + SC_(0.4e1), SC_(0.95070552825927734375e1), SC_(0.7357193068805439491961808818463893925223e3), + SC_(0.4e1), SC_(0.24750102996826171875e2), SC_(0.3252313835173492963089917060960028522653e10), + SC_(0.4e1), SC_(0.637722015380859375e2), SC_(0.2190135725660260903026664293135379072029e27), + SC_(0.7e1), SC_(0.177219114266335964202880859375e-2), SC_(0.8510076576264637138875125872170131898096e-25), + SC_(0.7e1), SC_(0.22177286446094512939453125e-2), SC_(0.4089953800055587124509461216692582736447e-24), + SC_(0.7e1), SC_(0.7444499991834163665771484375e-2), SC_(0.1964305273103342680910343954984308619768e-20), + SC_(0.7e1), SC_(0.1433600485324859619140625e-1), SC_(0.1929120066647206188436854652387114727807e-18), + SC_(0.7e1), SC_(0.1760916970670223236083984375e-1), SC_(0.8138340472907783210251698976282644477818e-18), + SC_(0.7e1), SC_(0.6152711808681488037109375e-1), SC_(0.5174601186268260520938521328073083909595e-14), + SC_(0.7e1), SC_(0.11958599090576171875e0), SC_(0.542395054389276152812978441225258183457e-12), + SC_(0.7e1), SC_(0.15262925624847412109375e0), SC_(0.299323047925904744170833613652767758086e-11), + SC_(0.7e1), SC_(0.408089816570281982421875e0), SC_(0.2937036464827401981806966262136490086826e-8), + SC_(0.7e1), SC_(0.6540834903717041015625e0), SC_(0.8046255455349868199127611214199975918109e-7), + SC_(0.7e1), SC_(0.1097540378570556640625e1), SC_(0.3087574366778968153326883525133715811508e-5), + SC_(0.7e1), SC_(0.30944411754608154296875e1), SC_(0.5653447566166178294962968673241498039082e-2), + SC_(0.7e1), SC_(0.51139926910400390625e1), SC_(0.3104877913933256744262177732064662628008e0), + SC_(0.7e1), SC_(0.95070552825927734375e1), SC_(0.1318882152673454326811262619237084813807e3), + SC_(0.7e1), SC_(0.24750102996826171875e2), SC_(0.1657171203518438763471041373689390646813e10), + SC_(0.7e1), SC_(0.637722015380859375e2), SC_(0.1687969369952926235916289436609130146855e27), + SC_(0.1e2), SC_(0.177219114266335964202880859375e-2), SC_(0.8223234174016769910080935836038629086129e-37), + SC_(0.1e2), SC_(0.22177286446094512939453125e-2), SC_(0.7744994585234402998026715482431864809177e-36), + SC_(0.1e2), SC_(0.7444499991834163665771484375e-2), SC_(0.140699610530434722230776594136166384761e-30), + SC_(0.1e2), SC_(0.1433600485324859619140625e-1), SC_(0.9867802131594229578497672216212381206342e-28), + SC_(0.1e2), SC_(0.1760916970670223236083984375e-1), SC_(0.7714874409767011750174102200723123371757e-27), + SC_(0.1e2), SC_(0.6152711808681488037109375e-1), SC_(0.2092377824573518684672948738047686808098e-21), + SC_(0.1e2), SC_(0.11958599090576171875e0), SC_(0.161020520917686222303614853893004305517e-18), + SC_(0.1e2), SC_(0.15262925624847412109375e0), SC_(0.1847331437121988828659943855683029847574e-17), + SC_(0.1e2), SC_(0.408089816570281982421875e0), SC_(0.3460494035292646148422797589423437304445e-13), + SC_(0.1e2), SC_(0.6540834903717041015625e0), SC_(0.3894842946330373264656841132859435813454e-11), + SC_(0.1e2), SC_(0.1097540378570556640625e1), SC_(0.7014848610606988360553920593019620983893e-9), + SC_(0.1e2), SC_(0.30944411754608154296875e1), SC_(0.2688034653083270014812653556923722759657e-4), + SC_(0.1e2), SC_(0.51139926910400390625e1), SC_(0.5883608669420951460953858890820260901642e-2), + SC_(0.1e2), SC_(0.95070552825927734375e1), SC_(0.1093507510277669423960436015414354945337e2), + SC_(0.1e2), SC_(0.24750102996826171875e2), SC_(0.5917457915288690964012606008596472223686e9), + SC_(0.1e2), SC_(0.637722015380859375e2), SC_(0.1129466336865796349694848290694042226462e27), + SC_(0.13e2), SC_(0.177219114266335964202880859375e-2), SC_(0.3334011286277694028669539285669885563166e-49), + SC_(0.13e2), SC_(0.22177286446094512939453125e-2), SC_(0.6153738758043090277122480232744400184223e-48), + SC_(0.13e2), SC_(0.7444499991834163665771484375e-2), SC_(0.4228556218314688954181791384498131827781e-41), + SC_(0.13e2), SC_(0.1433600485324859619140625e-1), SC_(0.2117859499568276103587689359158579219165e-37), + SC_(0.13e2), SC_(0.1760916970670223236083984375e-1), SC_(0.3068580854652108160425423230103324526003e-36), + SC_(0.13e2), SC_(0.6152711808681488037109375e-1), SC_(0.354996892487294926273047608799400251176e-29), + SC_(0.13e2), SC_(0.11958599090576171875e0), SC_(0.2005786158653338640126467535312809972599e-25), + SC_(0.13e2), SC_(0.15262925624847412109375e0), SC_(0.4784115376425512596092514679649054496976e-24), + SC_(0.13e2), SC_(0.408089816570281982421875e0), SC_(0.1711772323228039445264854631251211491723e-18), + SC_(0.13e2), SC_(0.6540834903717041015625e0), SC_(0.7922791477017998377388657609963942307393e-16), + SC_(0.13e2), SC_(0.1097540378570556640625e1), SC_(0.6716323224025831832505193136394393092916e-13), + SC_(0.13e2), SC_(0.30944411754608154296875e1), SC_(0.5542968221483836259279888714065628022048e-7), + SC_(0.13e2), SC_(0.51139926910400390625e1), SC_(0.5081514739534627446729224579266224585244e-4), + SC_(0.13e2), SC_(0.95070552825927734375e1), SC_(0.4725865925391415011344735823410723955919e0), + SC_(0.13e2), SC_(0.24750102996826171875e2), SC_(0.1501669323697961007131150053219059261996e9), + SC_(0.13e2), SC_(0.637722015380859375e2), SC_(0.6567322402823646295136471316076539442991e26), + SC_(0.16e2), SC_(0.177219114266335964202880859375e-2), SC_(0.6903502427645376124200283458900439421873e-62), + SC_(0.16e2), SC_(0.22177286446094512939453125e-2), SC_(0.2497094638075881780026744754511410943168e-60), + SC_(0.16e2), SC_(0.7444499991834163665771484375e-2), SC_(0.6490368720925649184380212530671130650415e-52), + SC_(0.16e2), SC_(0.1433600485324859619140625e-1), SC_(0.2321410891263873863049860997755010357737e-47), + SC_(0.16e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6233393146806615669318454471770676678158e-46), + SC_(0.16e2), SC_(0.6152711808681488037109375e-1), SC_(0.3076024754804947155076702423770846087509e-37), + SC_(0.16e2), SC_(0.11958599090576171875e0), SC_(0.1276076508818807870968154682834703381456e-32), + SC_(0.16e2), SC_(0.15262925624847412109375e0), SC_(0.6327816308187779042063522476542118283704e-31), + SC_(0.16e2), SC_(0.408089816570281982421875e0), SC_(0.4325697498499225494703474366594855227627e-24), + SC_(0.16e2), SC_(0.6540834903717041015625e0), SC_(0.8236892146966727882912257976976559721749e-21), + SC_(0.16e2), SC_(0.1097540378570556640625e1), SC_(0.3290926416109688284429353953191341282434e-17), + SC_(0.16e2), SC_(0.30944411754608154296875e1), SC_(0.5931102132514253462239519305387392076225e-10), + SC_(0.16e2), SC_(0.51139926910400390625e1), SC_(0.2335364004878958117535587002359693990812e-6), + SC_(0.16e2), SC_(0.95070552825927734375e1), SC_(0.1173133225194457116974463544330816733028e-1), + SC_(0.16e2), SC_(0.24750102996826171875e2), SC_(0.2753215704715969881848773041250943304642e8), + SC_(0.16e2), SC_(0.637722015380859375e2), SC_(0.3322209023506974925844424554221373040616e26), + SC_(0.19e2), SC_(0.177219114266335964202880859375e-2), SC_(0.8261067094087423730034263973301115684581e-75), + SC_(0.19e2), SC_(0.22177286446094512939453125e-2), SC_(0.5855920886925015157162632673778154535237e-73), + SC_(0.19e2), SC_(0.7444499991834163665771484375e-2), SC_(0.5757194525974008514948245262795334604372e-63), + SC_(0.19e2), SC_(0.1433600485324859619140625e-1), SC_(0.1470520977940377483699491133689696047926e-57), + SC_(0.19e2), SC_(0.1760916970670223236083984375e-1), SC_(0.7317720953687948002108959608625870212987e-56), + SC_(0.19e2), SC_(0.6152711808681488037109375e-1), SC_(0.1540355292754922109447449922297173905408e-45), + SC_(0.19e2), SC_(0.11958599090576171875e0), SC_(0.4691793820588578982561969754887040800778e-40), + SC_(0.19e2), SC_(0.15262925624847412109375e0), SC_(0.4837042419325611244448782705711809839607e-38), + SC_(0.19e2), SC_(0.408089816570281982421875e0), SC_(0.6318280290179167224369069743316603013159e-30), + SC_(0.19e2), SC_(0.6540834903717041015625e0), SC_(0.4950946700479993216127819599385331607622e-26), + SC_(0.19e2), SC_(0.1097540378570556640625e1), SC_(0.9329580403370556328699496223117906495753e-22), + SC_(0.19e2), SC_(0.30944411754608154296875e1), SC_(0.3700270472942945791439257341299072941617e-13), + SC_(0.19e2), SC_(0.51139926910400390625e1), SC_(0.6348476619313232628895742730906837256601e-9), + SC_(0.19e2), SC_(0.95070552825927734375e1), SC_(0.1805116332675287586594293794465309848752e-3), + SC_(0.19e2), SC_(0.24750102996826171875e2), SC_(0.3711929598597669984804253906197792841378e7), + SC_(0.19e2), SC_(0.637722015380859375e2), SC_(0.1464275015800479716846297120573863475382e26), + SC_(0.22e2), SC_(0.177219114266335964202880859375e-2), SC_(0.6220221841381686345463747703974457948264e-88), + SC_(0.22e2), SC_(0.22177286446094512939453125e-2), SC_(0.8640889610254804338796688442629163492749e-86), + SC_(0.22e2), SC_(0.7444499991834163665771484375e-2), SC_(0.3213331324358774094325533898046632109449e-74), + SC_(0.22e2), SC_(0.1433600485324859619140625e-1), SC_(0.5861294441529658310051672533774294341365e-68), + SC_(0.22e2), SC_(0.1760916970670223236083984375e-1), SC_(0.5405430696633071789361672467258939698443e-66), + SC_(0.22e2), SC_(0.6152711808681488037109375e-1), SC_(0.4853510644495870330522539016072351182167e-54), + SC_(0.22e2), SC_(0.11958599090576171875e0), SC_(0.1085444829164009254414251462765173076655e-47), + SC_(0.22e2), SC_(0.15262925624847412109375e0), SC_(0.232656294329765330942559881117341522294e-45), + SC_(0.22e2), SC_(0.408089816570281982421875e0), SC_(0.5807460900437154044099671936908947080489e-36), + SC_(0.22e2), SC_(0.6540834903717041015625e0), SC_(0.1872936340884406560723582461622465615788e-31), + SC_(0.22e2), SC_(0.1097540378570556640625e1), SC_(0.1665365281344345408053410521428205724532e-26), + SC_(0.22e2), SC_(0.30944411754608154296875e1), SC_(0.1460452573305232893475147990189032216074e-16), + SC_(0.22e2), SC_(0.51139926910400390625e1), SC_(0.110162238891447155055650375984211287254e-11), + SC_(0.22e2), SC_(0.95070552825927734375e1), SC_(0.182787721514439346096490105048682573838e-5), + SC_(0.22e2), SC_(0.24750102996826171875e2), SC_(0.3746253298470363618744415470120906650113e6), + SC_(0.22e2), SC_(0.637722015380859375e2), SC_(0.5632662484294745602939078591361038707213e25), + SC_(0.25e2), SC_(0.177219114266335964202880859375e-2), SC_(0.3135945335960727893592699884132940922271e-101), + SC_(0.25e2), SC_(0.22177286446094512939453125e-2), SC_(0.8537183153244993100786485237255246993327e-99), + SC_(0.25e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1200861732220382730023275257555184414901e-85), + SC_(0.25e2), SC_(0.1433600485324859619140625e-1), SC_(0.1564259392522354667305534790602444834818e-78), + SC_(0.25e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2673484669989116998164825655979889586695e-76), + SC_(0.25e2), SC_(0.6152711808681488037109375e-1), SC_(0.1023963723875913940543782106825105562595e-62), + SC_(0.25e2), SC_(0.11958599090576171875e0), SC_(0.1681402972499189157506694463680089409952e-55), + SC_(0.25e2), SC_(0.15262925624847412109375e0), SC_(0.7492839127770565255129726672130867658204e-53), + SC_(0.25e2), SC_(0.408089816570281982421875e0), SC_(0.3574322975225735467692728527590428448863e-42), + SC_(0.25e2), SC_(0.6540834903717041015625e0), SC_(0.4744828668382638092936552938776145589611e-37), + SC_(0.25e2), SC_(0.1097540378570556640625e1), SC_(0.1991344057173244990078283873078078723997e-31), + SC_(0.25e2), SC_(0.30944411754608154296875e1), SC_(0.3873281106566788487579113427178813795979e-20), + SC_(0.25e2), SC_(0.51139926910400390625e1), SC_(0.1292160962597325779256280725821274270157e-14), + SC_(0.25e2), SC_(0.95070552825927734375e1), SC_(0.1277480310920568694024638558844125852046e-7), + SC_(0.25e2), SC_(0.24750102996826171875e2), SC_(0.2879797259274591258177294682787289679677e5), + SC_(0.25e2), SC_(0.637722015380859375e2), SC_(0.1894657556839703532754378542183363508864e25), + SC_(0.28e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1109979701510657324409936064780530816436e-114), + SC_(0.28e2), SC_(0.22177286446094512939453125e-2), SC_(0.5921812930388885221901501790031275724875e-112), + SC_(0.28e2), SC_(0.7444499991834163665771484375e-2), SC_(0.3150753681177232602195191694326830735903e-97), + SC_(0.28e2), SC_(0.1433600485324859619140625e-1), SC_(0.2930947033264324636241925247309918315621e-89), + SC_(0.28e2), SC_(0.1760916970670223236083984375e-1), SC_(0.928344290130601916111191342129716233572e-87), + SC_(0.28e2), SC_(0.6152711808681488037109375e-1), SC_(0.1516692451422192280031325885356319403396e-71), + SC_(0.28e2), SC_(0.11958599090576171875e0), SC_(0.1828611396607332850526050100536554426156e-63), + SC_(0.28e2), SC_(0.15262925624847412109375e0), SC_(0.1694199613349620948688358748400128595992e-60), + SC_(0.28e2), SC_(0.408089816570281982421875e0), SC_(0.1544557206594990195590747820842381228636e-48), + SC_(0.28e2), SC_(0.6540834903717041015625e0), SC_(0.8440150439835583222917158485081145254802e-43), + SC_(0.28e2), SC_(0.1097540378570556640625e1), SC_(0.167225543922741375797615313493339729248e-36), + SC_(0.28e2), SC_(0.30944411754608154296875e1), SC_(0.7229741356347695815271417352613489011386e-24), + SC_(0.28e2), SC_(0.51139926910400390625e1), SC_(0.1071154635862208253018553734939741687232e-17), + SC_(0.28e2), SC_(0.95070552825927734375e1), SC_(0.6403905624258943728927767408796427923806e-10), + SC_(0.28e2), SC_(0.24750102996826171875e2), SC_(0.1714093029633072106704730462439541786694e4), + SC_(0.28e2), SC_(0.637722015380859375e2), SC_(0.5584488054748810510523872279701284113872e24), + SC_(0.31e2), SC_(0.177219114266335964202880859375e-2), SC_(0.2863358901803292925306306945061963869388e-128), + SC_(0.31e2), SC_(0.22177286446094512939453125e-2), SC_(0.2993704751214452165393173467229226989817e-125), + SC_(0.31e2), SC_(0.7444499991834163665771484375e-2), SC_(0.6024903576282872782013491962307115105296e-109), + SC_(0.31e2), SC_(0.1433600485324859619140625e-1), SC_(0.4002408227087383286146279911225738698901e-100), + SC_(0.31e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2349387561715709924891542659732908290704e-97), + SC_(0.31e2), SC_(0.6152711808681488037109375e-1), SC_(0.1637287639286449704309407433798147518595e-80), + SC_(0.31e2), SC_(0.11958599090576171875e0), SC_(0.1449393765029909620233823815723216878733e-71), + SC_(0.31e2), SC_(0.15262925624847412109375e0), SC_(0.2791893400549024586300562047044427723662e-68), + SC_(0.31e2), SC_(0.408089816570281982421875e0), SC_(0.4864541221147515577402253306801741241212e-55), + SC_(0.31e2), SC_(0.6540834903717041015625e0), SC_(0.1094280544222704547184559884703922698029e-48), + SC_(0.31e2), SC_(0.1097540378570556640625e1), SC_(0.1023695039072156662184036868355322523886e-41), + SC_(0.31e2), SC_(0.30944411754608154296875e1), SC_(0.9852580714919682750791412525269523041103e-28), + SC_(0.31e2), SC_(0.51139926910400390625e1), SC_(0.6502404032231234525897694922239945174238e-21), + SC_(0.31e2), SC_(0.95070552825927734375e1), SC_(0.2376555996134722482517673913552026409674e-12), + SC_(0.31e2), SC_(0.24750102996826171875e2), SC_(0.8021910179370802808093108588936020297325e2), + SC_(0.31e2), SC_(0.637722015380859375e2), SC_(0.144559757502471000356773666766249439466e24), + SC_(0.34e2), SC_(0.177219114266335964202880859375e-2), SC_(0.554848797257781034477910770666738393437e-142), + SC_(0.34e2), SC_(0.22177286446094512939453125e-2), SC_(0.1136845274152627033376025226298304218956e-138), + SC_(0.34e2), SC_(0.7444499991834163665771484375e-2), SC_(0.8654138946859088878293887011745214993209e-121), + SC_(0.34e2), SC_(0.1433600485324859619140625e-1), SC_(0.410556487014915840216809384796759450665e-111), + SC_(0.34e2), SC_(0.1760916970670223236083984375e-1), SC_(0.4466202286730993255330187442167251739945e-108), + SC_(0.34e2), SC_(0.6152711808681488037109375e-1), SC_(0.1327671950103163073519226507877580260439e-89), + SC_(0.34e2), SC_(0.11958599090576171875e0), SC_(0.86295932704287933357857246832402054593e-80), + SC_(0.34e2), SC_(0.15262925624847412109375e0), SC_(0.3455990968477486779164741360883518309538e-76), + SC_(0.34e2), SC_(0.408089816570281982421875e0), SC_(0.1150874342931716017287294604949997878891e-61), + SC_(0.34e2), SC_(0.6540834903717041015625e0), SC_(0.1065788460010113098181503088093171140974e-54), + SC_(0.34e2), SC_(0.1097540378570556640625e1), SC_(0.4708137202898137691876298170399356746151e-47), + SC_(0.34e2), SC_(0.30944411754608154296875e1), SC_(0.1009921586705894229463842919739328565867e-31), + SC_(0.34e2), SC_(0.51139926910400390625e1), SC_(0.2975630653433816790749983787198736104047e-24), + SC_(0.34e2), SC_(0.95070552825927734375e1), SC_(0.6703531083479191738129933338411606672808e-15), + SC_(0.34e2), SC_(0.24750102996826171875e2), SC_(0.299397039157890670910784206640756450785e1), + SC_(0.34e2), SC_(0.637722015380859375e2), SC_(0.3294214489878754746998468591882500221478e23), + SC_(0.37e2), SC_(0.177219114266335964202880859375e-2), SC_(0.828026196559747866852471375648158776984e-156), + SC_(0.37e2), SC_(0.22177286446094512939453125e-2), SC_(0.3324790777601664254426532880563918902327e-152), + SC_(0.37e2), SC_(0.7444499991834163665771484375e-2), SC_(0.9573443870243893719540856527993316924774e-133), + SC_(0.37e2), SC_(0.1433600485324859619140625e-1), SC_(0.324335905771151418363167696952253012629e-122), + SC_(0.37e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6538719305050459748524952741536544241271e-119), + SC_(0.37e2), SC_(0.6152711808681488037109375e-1), SC_(0.8291389489281667073640088741137813836748e-99), + SC_(0.37e2), SC_(0.11958599090576171875e0), SC_(0.3956994877808749184390880157839542596607e-88), + SC_(0.37e2), SC_(0.15262925624847412109375e0), SC_(0.3294716124513790394110234837959967322394e-84), + SC_(0.37e2), SC_(0.408089816570281982421875e0), SC_(0.2096969632013223981693082123484952922989e-68), + SC_(0.37e2), SC_(0.6540834903717041015625e0), SC_(0.7994725483079514493600080319267216543682e-61), + SC_(0.37e2), SC_(0.1097540378570556640625e1), SC_(0.1667836458023600048037827216363539361428e-52), + SC_(0.37e2), SC_(0.30944411754608154296875e1), SC_(0.7980555217598790316673309477891295418541e-36), + SC_(0.37e2), SC_(0.51139926910400390625e1), SC_(0.1051567957305034458555054192290336871139e-27), + SC_(0.37e2), SC_(0.95070552825927734375e1), SC_(0.1469503949790717100538026315514505362737e-17), + SC_(0.37e2), SC_(0.24750102996826171875e2), SC_(0.9028078838424508873820387824156803526994e-1), + SC_(0.37e2), SC_(0.637722015380859375e2), SC_(0.6624710227786465723665406844092603419808e22), + SC_(0.4e2), SC_(0.177219114266335964202880859375e-2), SC_(0.9718015316899897222991156478421723178211e-170), + SC_(0.4e2), SC_(0.22177286446094512939453125e-2), SC_(0.7647004681430521445000193582848602001013e-166), + SC_(0.4e2), SC_(0.7444499991834163665771484375e-2), SC_(0.8328688187483865411440918435294595300438e-145), + SC_(0.4e2), SC_(0.1433600485324859619140625e-1), SC_(0.2015028639944073105137969713222741554632e-133), + SC_(0.4e2), SC_(0.1760916970670223236083984375e-1), SC_(0.7528545584869245581219369999622839047295e-130), + SC_(0.4e2), SC_(0.6152711808681488037109375e-1), SC_(0.4072190283066936123541628438950294644046e-108), + SC_(0.4e2), SC_(0.11958599090576171875e0), SC_(0.1426938434685287976193639876529707406679e-96), + SC_(0.4e2), SC_(0.15262925624847412109375e0), SC_(0.2470178361216737927254580766310265925757e-92), + SC_(0.4e2), SC_(0.408089816570281982421875e0), SC_(0.3004875040784737651802258750750770567386e-75), + SC_(0.4e2), SC_(0.6540834903717041015625e0), SC_(0.4716452903523047367590099016132882234692e-67), + SC_(0.4e2), SC_(0.1097540378570556640625e1), SC_(0.4646918287704963886177475667694632919708e-58), + SC_(0.4e2), SC_(0.30944411754608154296875e1), SC_(0.4963455979870243017181524846243289457927e-40), + SC_(0.4e2), SC_(0.51139926910400390625e1), SC_(0.2928767603579078980226642224030836807816e-31), + SC_(0.4e2), SC_(0.95070552825927734375e1), SC_(0.2551533159075245563126487234918392198585e-20), + SC_(0.4e2), SC_(0.24750102996826171875e2), SC_(0.2225839075061771588535698246714714443425e-2), + SC_(0.4e2), SC_(0.637722015380859375e2), SC_(0.1178670663121533017236202220352711569291e22), + SC_(0.43e2), SC_(0.177219114266335964202880859375e-2), SC_(0.9130985936863463046546928953779730917377e-184), + SC_(0.43e2), SC_(0.22177286446094512939453125e-2), SC_(0.1408072391774102692929369293535359288371e-179), + SC_(0.43e2), SC_(0.7444499991834163665771484375e-2), SC_(0.5800849589151800346459897273792621658819e-157), + SC_(0.43e2), SC_(0.1433600485324859619140625e-1), SC_(0.1002245268004915958866825941402152815883e-144), + SC_(0.43e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6939626160739405567413386511279574703658e-141), + SC_(0.43e2), SC_(0.6152711808681488037109375e-1), SC_(0.1601162868348926363724149071999208219269e-117), + SC_(0.43e2), SC_(0.11958599090576171875e0), SC_(0.411957091818736604416055444734691767854e-105), + SC_(0.43e2), SC_(0.15262925624847412109375e0), SC_(0.1482674713827075151052028716968653639318e-100), + SC_(0.43e2), SC_(0.408089816570281982421875e0), SC_(0.3447244054889731161807594240462186574805e-82), + SC_(0.43e2), SC_(0.6540834903717041015625e0), SC_(0.2227646296476468683363124051704462003365e-73), + SC_(0.43e2), SC_(0.1097540378570556640625e1), SC_(0.1036615084804202732881289594829753840317e-63), + SC_(0.43e2), SC_(0.30944411754608154296875e1), SC_(0.2472940668271158777166795791968979108208e-44), + SC_(0.43e2), SC_(0.51139926910400390625e1), SC_(0.6541484773312980997922339761025247990602e-35), + SC_(0.43e2), SC_(0.95070552825927734375e1), SC_(0.3567126305847535292621986818143391582414e-23), + SC_(0.43e2), SC_(0.24750102996826171875e2), SC_(0.4535966725472100733636605024987920402377e-4), + SC_(0.43e2), SC_(0.637722015380859375e2), SC_(0.1860151703327425260186251584987331618812e21), + SC_(0.46e2), SC_(0.177219114266335964202880859375e-2), SC_(0.6974873724372059592930761837399120333106e-198), + SC_(0.46e2), SC_(0.22177286446094512939453125e-2), SC_(0.2107837814355866769403485866165808969005e-193), + SC_(0.46e2), SC_(0.7444499991834163665771484375e-2), SC_(0.3284620419327957441948066479751725605749e-169), + SC_(0.46e2), SC_(0.1433600485324859619140625e-1), SC_(0.4052708722996356969318056893316822025292e-156), + SC_(0.46e2), SC_(0.1760916970670223236083984375e-1), SC_(0.5200434785576270732987275645545463116496e-152), + SC_(0.46e2), SC_(0.6152711808681488037109375e-1), SC_(0.5118251529472963283938044760365471618008e-127), + SC_(0.46e2), SC_(0.11958599090576171875e0), SC_(0.9668912760296019239868775094892305863e-114), + SC_(0.46e2), SC_(0.15262925624847412109375e0), SC_(0.7235067157390354503265134994764081996292e-109), + SC_(0.46e2), SC_(0.408089816570281982421875e0), SC_(0.3215141308513781839332579253698819620894e-89), + SC_(0.46e2), SC_(0.6540834903717041015625e0), SC_(0.8553924416611084411392664332953550662675e-80), + SC_(0.46e2), SC_(0.1097540378570556640625e1), SC_(0.1880080073747634557570248431362280832048e-69), + SC_(0.46e2), SC_(0.30944411754608154296875e1), SC_(0.1002170745653581381543207309249480407833e-48), + SC_(0.46e2), SC_(0.51139926910400390625e1), SC_(0.1189442056793568082999926596751649195134e-38), + SC_(0.46e2), SC_(0.95070552825927734375e1), SC_(0.407314083263769347886637462837801107032e-26), + SC_(0.46e2), SC_(0.24750102996826171875e2), SC_(0.7716907058748037857050749829725239421774e-6), + SC_(0.46e2), SC_(0.637722015380859375e2), SC_(0.2610747871384482066580499361911905438827e20), + SC_(0.49e2), SC_(0.177219114266335964202880859375e-2), SC_(0.4389781172911308808815577157269368864389e-212), + SC_(0.49e2), SC_(0.22177286446094512939453125e-2), SC_(0.2599783878067930431219495087775225652146e-207), + SC_(0.49e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1532380510263907001575821410116222341594e-181), + SC_(0.49e2), SC_(0.1433600485324859619140625e-1), SC_(0.1350220254120915730693084808074002561553e-167), + SC_(0.49e2), SC_(0.1760916970670223236083984375e-1), SC_(0.3210931836020126014385900607920124735381e-163), + SC_(0.49e2), SC_(0.6152711808681488037109375e-1), SC_(0.1348017896021742606349975060443415586932e-136), + SC_(0.49e2), SC_(0.11958599090576171875e0), SC_(0.18697839036512037857308426784665430863e-122), + SC_(0.49e2), SC_(0.15262925624847412109375e0), SC_(0.2908891611748361074664875341061049836806e-117), + SC_(0.49e2), SC_(0.408089816570281982421875e0), SC_(0.2470694756126763784322536696126913805842e-96), + SC_(0.49e2), SC_(0.6540834903717041015625e0), SC_(0.2706328514816814662599134806037929561628e-86), + SC_(0.49e2), SC_(0.1097540378570556640625e1), SC_(0.2809608278103321561471733562784717228981e-75), + SC_(0.49e2), SC_(0.30944411754608154296875e1), SC_(0.3347634282264346680708924196132233927821e-53), + SC_(0.49e2), SC_(0.51139926910400390625e1), SC_(0.1783972581821037133190101569680872836095e-42), + SC_(0.49e2), SC_(0.95070552825927734375e1), SC_(0.3846690190107807695787373874628655622738e-29), + SC_(0.49e2), SC_(0.24750102996826171875e2), SC_(0.1106023327591450517690020973888073917934e-7), + SC_(0.49e2), SC_(0.637722015380859375e2), SC_(0.3267196777655734800789149604345611112574e19), + SC_(0.52e2), SC_(0.177219114266335964202880859375e-2), SC_(0.2303249815383634412855968687640340608717e-226), + SC_(0.52e2), SC_(0.22177286446094512939453125e-2), SC_(0.2673184611673846548599437220617809024879e-221), + SC_(0.52e2), SC_(0.7444499991834163665771484375e-2), SC_(0.595991002240545806910967260032753150706e-194), + SC_(0.52e2), SC_(0.1433600485324859619140625e-1), SC_(0.3750209244842119299118224108095384884535e-179), + SC_(0.52e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1652776669790150330561340539746081774673e-174), + SC_(0.52e2), SC_(0.6152711808681488037109375e-1), SC_(0.2959793427663782135045312208347209503631e-146), + SC_(0.52e2), SC_(0.11958599090576171875e0), SC_(0.3014373529833589353306526172424915916571e-131), + SC_(0.52e2), SC_(0.15262925624847412109375e0), SC_(0.9749998047082604735078310612636901479602e-126), + SC_(0.52e2), SC_(0.408089816570281982421875e0), SC_(0.1582823122214012619499236499242366330843e-103), + SC_(0.52e2), SC_(0.6540834903717041015625e0), SC_(0.7138286618658376348114479100682439242919e-93), + SC_(0.52e2), SC_(0.1097540378570556640625e1), SC_(0.350046506043463784991137871177415470362e-81), + SC_(0.52e2), SC_(0.30944411754608154296875e1), SC_(0.9325578367853379452460418857475890341489e-58), + SC_(0.52e2), SC_(0.51139926910400390625e1), SC_(0.2232708230274459700606757413151961565263e-46), + SC_(0.52e2), SC_(0.95070552825927734375e1), SC_(0.3038215047045795583103231039540070449898e-32), + SC_(0.52e2), SC_(0.24750102996826171875e2), SC_(0.1346636232458805792435862254498088945776e-9), + SC_(0.52e2), SC_(0.637722015380859375e2), SC_(0.3655177757144173521181223750805400851081e18), + SC_(0.55e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1018006201602452906655354903811548381167e-240), + SC_(0.55e2), SC_(0.22177286446094512939453125e-2), SC_(0.2315431108142814819247954796685586778109e-235), + SC_(0.55e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1952648142025852610182556700189629588985e-206), + SC_(0.55e2), SC_(0.1433600485324859619140625e-1), SC_(0.8774403250287790806080348894635684082545e-191), + SC_(0.55e2), SC_(0.1760916970670223236083984375e-1), SC_(0.716652253310640352860349232619717567446e-186), + SC_(0.55e2), SC_(0.6152711808681488037109375e-1), SC_(0.5474423611339555255078088754703018574174e-156), + SC_(0.55e2), SC_(0.11958599090576171875e0), SC_(0.4093682078016060762342589273538134574926e-140), + SC_(0.55e2), SC_(0.15262925624847412109375e0), SC_(0.2752916444579352513354305312923153109258e-134), + SC_(0.55e2), SC_(0.408089816570281982421875e0), SC_(0.8541990352219993146878387175620874300916e-111), + SC_(0.55e2), SC_(0.6540834903717041015625e0), SC_(0.158607707905854303487414564050288615317e-99), + SC_(0.55e2), SC_(0.1097540378570556640625e1), SC_(0.3673946132076884229805538775186106732424e-87), + SC_(0.55e2), SC_(0.30944411754608154296875e1), SC_(0.2189024089902699086841898845933915976698e-62), + SC_(0.55e2), SC_(0.51139926910400390625e1), SC_(0.2355749280211012739763356422162726826943e-50), + SC_(0.55e2), SC_(0.95070552825927734375e1), SC_(0.2026861324159946447258206491024438702174e-35), + SC_(0.55e2), SC_(0.24750102996826171875e2), SC_(0.1403522940552612452403976593875550756503e-11), + SC_(0.55e2), SC_(0.637722015380859375e2), SC_(0.3665083221494400948950976597954993776716e17), + SC_(0.58e2), SC_(0.177219114266335964202880859375e-2), SC_(0.3825614854251193014643148182442112314422e-255), + SC_(0.58e2), SC_(0.22177286446094512939453125e-2), SC_(0.1705203509939234696277159749563672565672e-249), + SC_(0.58e2), SC_(0.7444499991834163665771484375e-2), SC_(0.5439384071460261246604890034143549092382e-219), + SC_(0.58e2), SC_(0.1433600485324859619140625e-1), SC_(0.1745505108484575279377648347854510213424e-202), + SC_(0.58e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2642069354990837019592459762587245355314e-197), + SC_(0.58e2), SC_(0.6152711808681488037109375e-1), SC_(0.8609082778299358326554204561754269587854e-166), + SC_(0.58e2), SC_(0.11958599090576171875e0), SC_(0.472686020135453860719433000549657722504e-149), + SC_(0.58e2), SC_(0.15262925624847412109375e0), SC_(0.6608809509650562213406358665129864437131e-143), + SC_(0.58e2), SC_(0.408089816570281982421875e0), SC_(0.3919485557299515146422086935702232352484e-118), + SC_(0.58e2), SC_(0.6540834903717041015625e0), SC_(0.2996407069786035814282993151068654804437e-106), + SC_(0.58e2), SC_(0.1097540378570556640625e1), SC_(0.3278647331691108241950605165181408237355e-93), + SC_(0.58e2), SC_(0.30944411754608154296875e1), SC_(0.43699189078229521520626760453212752386e-67), + SC_(0.58e2), SC_(0.51139926910400390625e1), SC_(0.2114743569497515441487851296959306271934e-54), + SC_(0.58e2), SC_(0.95070552825927734375e1), SC_(0.115228244838142813047281874480449127547e-38), + SC_(0.58e2), SC_(0.24750102996826171875e2), SC_(0.1261019181054019830219112686580088955875e-13), + SC_(0.58e2), SC_(0.637722015380859375e2), SC_(0.3302220383111896270864858001851557409682e16), + SC_(0.61e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1232565040787181306716880234355575159688e-269), + SC_(0.61e2), SC_(0.22177286446094512939453125e-2), SC_(0.1076659436763981915175390828995986822434e-263), + SC_(0.61e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1299072045965767599011230964683207236757e-231), + SC_(0.61e2), SC_(0.1433600485324859619140625e-1), SC_(0.2977024713229769823554142462666492545543e-214), + SC_(0.61e2), SC_(0.1760916970670223236083984375e-1), SC_(0.8350985680074320512382864475853870571052e-209), + SC_(0.61e2), SC_(0.6152711808681488037109375e-1), SC_(0.1160735273973088870681548746063213229074e-175), + SC_(0.61e2), SC_(0.11958599090576171875e0), SC_(0.4679390835427500595982169037089408013153e-158), + SC_(0.61e2), SC_(0.15262925624847412109375e0), SC_(0.1360227151484704343606225139366640450974e-151), + SC_(0.61e2), SC_(0.408089816570281982421875e0), SC_(0.1541907881518304382028330079213762969566e-125), + SC_(0.61e2), SC_(0.6540834903717041015625e0), SC_(0.4853323022258957491856078733397637957488e-113), + SC_(0.61e2), SC_(0.1097540378570556640625e1), SC_(0.2508568084833358319857564156287903222335e-99), + SC_(0.61e2), SC_(0.30944411754608154296875e1), SC_(0.748075040682448072563688302916057106236e-72), + SC_(0.61e2), SC_(0.51139926910400390625e1), SC_(0.1628516947362121576297154167081137581681e-58), + SC_(0.61e2), SC_(0.95070552825927734375e1), SC_(0.5627271604271077200487733611431219863609e-42), + SC_(0.61e2), SC_(0.24750102996826171875e2), SC_(0.9830275153111534414683337549340620199722e-16), + SC_(0.61e2), SC_(0.637722015380859375e2), SC_(0.2680164800522684112302023590484676688526e15), + SC_(0.64e2), SC_(0.177219114266335964202880859375e-2), SC_(0.3430357084175735278555854255147470817249e-284), + SC_(0.64e2), SC_(0.22177286446094512939453125e-2), SC_(0.5872207167386025213208526154375803763796e-278), + SC_(0.64e2), SC_(0.7444499991834163665771484375e-2), SC_(0.268001752806320143243799671821308474476e-244), + SC_(0.64e2), SC_(0.1433600485324859619140625e-1), SC_(0.438595974527149040242523230840645299492e-226), + SC_(0.64e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2280090845086226890824090050294482285799e-220), + SC_(0.64e2), SC_(0.6152711808681488037109375e-1), SC_(0.13518558871192707219559554892043526652e-185), + SC_(0.64e2), SC_(0.11958599090576171875e0), SC_(0.4001537432733981854270522579460299551195e-167), + SC_(0.64e2), SC_(0.15262925624847412109375e0), SC_(0.2418358717309696982129974343687543076697e-160), + SC_(0.64e2), SC_(0.408089816570281982421875e0), SC_(0.5239743663416479097363838023466875937012e-133), + SC_(0.64e2), SC_(0.6540834903717041015625e0), SC_(0.6790503577584169527731717114683795828784e-120), + SC_(0.64e2), SC_(0.1097540378570556640625e1), SC_(0.1658012742661589928281409681622254785962e-105), + SC_(0.64e2), SC_(0.30944411754608154296875e1), SC_(0.11064107783749177287523543835604870967e-76), + SC_(0.64e2), SC_(0.51139926910400390625e1), SC_(0.1083831156071722097307453857622259500324e-62), + SC_(0.64e2), SC_(0.95070552825927734375e1), SC_(0.2377869577116586340246748039246972489746e-45), + SC_(0.64e2), SC_(0.24750102996826171875e2), SC_(0.6688735376176144378801375956705003179075e-18), + SC_(0.64e2), SC_(0.637722015380859375e2), SC_(0.196433282094407750436026386061406870489e14), + SC_(0.67e2), SC_(0.177219114266335964202880859375e-2), SC_(0.8303265659968393923976721769339237467243e-299), + SC_(0.67e2), SC_(0.22177286446094512939453125e-2), SC_(0.2785508604717382969707899955984153109995e-292), + SC_(0.67e2), SC_(0.7444499991834163665771484375e-2), SC_(0.480863872762121076920266217690470663122e-257), + SC_(0.67e2), SC_(0.1433600485324859619140625e-1), SC_(0.5619878965970541271629312269439113669091e-238), + SC_(0.67e2), SC_(0.1760916970670223236083984375e-1), SC_(0.5414354444420529082761372605957493468984e-232), + SC_(0.67e2), SC_(0.6152711808681488037109375e-1), SC_(0.1369328842205035435791819270137405216132e-195), + SC_(0.67e2), SC_(0.11958599090576171875e0), SC_(0.2976080454780070131652687845254578786778e-176), + SC_(0.67e2), SC_(0.15262925624847412109375e0), SC_(0.3739472000953063909501613448588687457119e-169), + SC_(0.67e2), SC_(0.408089816570281982421875e0), SC_(0.1548613210047140776105471826780937390242e-140), + SC_(0.67e2), SC_(0.6540834903717041015625e0), SC_(0.8263193751493687283195945930118436171448e-127), + SC_(0.67e2), SC_(0.1097540378570556640625e1), SC_(0.9531001594119617180115060699004781472022e-112), + SC_(0.67e2), SC_(0.30944411754608154296875e1), SC_(0.1423429375392353585102712760378566415253e-81), + SC_(0.67e2), SC_(0.51139926910400390625e1), SC_(0.6276199872704888189953779431744609272855e-67), + SC_(0.67e2), SC_(0.95070552825927734375e1), SC_(0.8751710351217371349774248758780557808399e-49), + SC_(0.67e2), SC_(0.24750102996826171875e2), SC_(0.399443014585480721312551749526965287716e-20), + SC_(0.67e2), SC_(0.637722015380859375e2), SC_(0.1303190285326414512188004605064925401042e13), + SC_(0.7e2), SC_(0.177219114266335964202880859375e-2), SC_(0.175887342640394106189151976112543057962e-313), + SC_(0.7e2), SC_(0.7444499991834163665771484375e-2), SC_(0.7550621788530834428425404682332589500832e-270), + SC_(0.7e2), SC_(0.1433600485324859619140625e-1), SC_(0.6301810450616594782432087551850756373668e-250), + SC_(0.7e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1125167731015917733561916583817457784138e-243), + SC_(0.7e2), SC_(0.6152711808681488037109375e-1), SC_(0.1213839287680701613177842094136722210551e-205), + SC_(0.7e2), SC_(0.11958599090576171875e0), SC_(0.1937040012939367633269395257833394549994e-185), + SC_(0.7e2), SC_(0.15262925624847412109375e0), SC_(0.5060297469126818749198761907151271684388e-178), + SC_(0.7e2), SC_(0.408089816570281982421875e0), SC_(0.4005465233840990833504194622177985321517e-148), + SC_(0.7e2), SC_(0.6540834903717041015625e0), SC_(0.8799796018332889235436642767544430577921e-134), + SC_(0.7e2), SC_(0.1097540378570556640625e1), SC_(0.4794825121102189651189070515356607000206e-118), + SC_(0.7e2), SC_(0.30944411754608154296875e1), SC_(0.1602843216269687242254187608050533636733e-86), + SC_(0.7e2), SC_(0.51139926910400390625e1), SC_(0.3181779993739836562974728016162666336895e-71), + SC_(0.7e2), SC_(0.95070552825927734375e1), SC_(0.2822466596594199323749265377605991268801e-52), + SC_(0.7e2), SC_(0.24750102996826171875e2), SC_(0.2104365489296975788813919994670728216215e-22), + SC_(0.7e2), SC_(0.637722015380859375e2), SC_(0.7844318561221098998292957969567564923615e11), + SC_(0.73e2), SC_(0.177219114266335964202880859375e-2), SC_(0.3279159790515129976232600411030994939645e-328), + SC_(0.73e2), SC_(0.22177286446094512939453125e-2), SC_(0.4224790877225924823386404075215067890494e-321), + SC_(0.73e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1043483587404467322105724165693680432988e-282), + SC_(0.73e2), SC_(0.1433600485324859619140625e-1), SC_(0.6219365054628790184510838867649950741467e-262), + SC_(0.73e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2057928083398578974258661409116904762983e-255), + SC_(0.73e2), SC_(0.6152711808681488037109375e-1), SC_(0.9470152726761824765032042182394011675392e-216), + SC_(0.73e2), SC_(0.11958599090576171875e0), SC_(0.1109621677740774224342517916855017900658e-194), + SC_(0.73e2), SC_(0.15262925624847412109375e0), SC_(0.6026765241850857913163429093708050618843e-187), + SC_(0.73e2), SC_(0.408089816570281982421875e0), SC_(0.9118139298541229295297403648253683737698e-156), + SC_(0.73e2), SC_(0.6540834903717041015625e0), SC_(0.8247872764458903831476787586065099347135e-141), + SC_(0.73e2), SC_(0.1097540378570556640625e1), SC_(0.2123029007982407474621311100276015417167e-124), + SC_(0.73e2), SC_(0.30944411754608154296875e1), SC_(0.1588696020280731697227952432556978774771e-91), + SC_(0.73e2), SC_(0.51139926910400390625e1), SC_(0.1420130918879929727408563849006120293294e-75), + SC_(0.73e2), SC_(0.95070552825927734375e1), SC_(0.8020381326448500037051674847470025971321e-56), + SC_(0.73e2), SC_(0.24750102996826171875e2), SC_(0.9826710538792853844402410449812254638335e-25), + SC_(0.73e2), SC_(0.637722015380859375e2), SC_(0.4293839369539487481259198718773671804064e10), + SC_(0.76e2), SC_(0.177219114266335964202880859375e-2), SC_(0.5408759889893148190520203529735474973187e-343), + SC_(0.76e2), SC_(0.22177286446094512939453125e-2), SC_(0.1365632588234360977374366339815548997377e-335), + SC_(0.76e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1275838367710964746430025849813881543957e-295), + SC_(0.76e2), SC_(0.1433600485324859619140625e-1), SC_(0.5430425912637421039353201453109713889038e-274), + SC_(0.76e2), SC_(0.1760916970670223236083984375e-1), SC_(0.3330046136342914006909942281157109406199e-267), + SC_(0.76e2), SC_(0.6152711808681488037109375e-1), SC_(0.6536720629329230577091818914690091163553e-226), + SC_(0.76e2), SC_(0.11958599090576171875e0), SC_(0.5623652442375975181466641168529807893221e-204), + SC_(0.76e2), SC_(0.15262925624847412109375e0), SC_(0.6350380451255890749856575267278817991626e-196), + SC_(0.76e2), SC_(0.408089816570281982421875e0), SC_(0.183640054565323298205707300952041465441e-163), + SC_(0.76e2), SC_(0.6540834903717041015625e0), SC_(0.6839439254682699613485852891479608181366e-148), + SC_(0.76e2), SC_(0.1097540378570556640625e1), SC_(0.8316719082770017371804750065668802553579e-131), + SC_(0.76e2), SC_(0.30944411754608154296875e1), SC_(0.1393297633857098951754512416010366098401e-96), + SC_(0.76e2), SC_(0.51139926910400390625e1), SC_(0.5609441790373577387000154824729897241791e-80), + SC_(0.76e2), SC_(0.95070552825927734375e1), SC_(0.2018365197172710168614503238313291896062e-59), + SC_(0.76e2), SC_(0.24750102996826171875e2), SC_(0.4085433998985207824201599332796010854695e-27), + SC_(0.76e2), SC_(0.637722015380859375e2), SC_(0.2142103160400899021062036922016113667452e9), + SC_(0.79e2), SC_(0.177219114266335964202880859375e-2), SC_(0.7930982305179989580158425245351456663586e-358), + SC_(0.79e2), SC_(0.22177286446094512939453125e-2), SC_(0.3924250147523408219992167518859050391414e-350), + SC_(0.79e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1386755351840733324704199171711908798229e-308), + SC_(0.79e2), SC_(0.1433600485324859619140625e-1), SC_(0.4215177758474358774763535279898355939459e-286), + SC_(0.79e2), SC_(0.1760916970670223236083984375e-1), SC_(0.4790319326701827605381983744427272324794e-279), + SC_(0.79e2), SC_(0.6152711808681488037109375e-1), SC_(0.4011040414527164043809376106988478947351e-236), + SC_(0.79e2), SC_(0.11958599090576171875e0), SC_(0.253370605560492432574321731615139964047e-213), + SC_(0.79e2), SC_(0.15262925624847412109375e0), SC_(0.5948527457011269418607542342494814436562e-205), + SC_(0.79e2), SC_(0.408089816570281982421875e0), SC_(0.3287936896920888923522197582153467750847e-171), + SC_(0.79e2), SC_(0.6540834903717041015625e0), SC_(0.5041909325640412505781517484471102307831e-155), + SC_(0.79e2), SC_(0.1097540378570556640625e1), SC_(0.2896326090972206182393839086729167150143e-137), + SC_(0.79e2), SC_(0.30944411754608154296875e1), SC_(0.1086380977296709087208790251658448356189e-101), + SC_(0.79e2), SC_(0.51139926910400390625e1), SC_(0.1970229546359244151730974118220967814952e-84), + SC_(0.79e2), SC_(0.95070552825927734375e1), SC_(0.4519411101705219203865562848704682354613e-63), + SC_(0.79e2), SC_(0.24750102996826171875e2), SC_(0.1518463586382666158992394326311743396678e-29), + SC_(0.79e2), SC_(0.637722015380859375e2), SC_(0.9760490072697396207873117894195488769342e7), + SC_(0.82e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1038436202803785426388133600179459730169e-372), + SC_(0.82e2), SC_(0.22177286446094512939453125e-2), SC_(0.1006938753460328462474122574448053771171e-364), + SC_(0.82e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1345945900323246361787623818357538331624e-321), + SC_(0.82e2), SC_(0.1433600485324859619140625e-1), SC_(0.292160471475819054556258294299816966923e-298), + SC_(0.82e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6153217141248195324459719214887728749464e-291), + SC_(0.82e2), SC_(0.6152711808681488037109375e-1), SC_(0.2197747157001515487720136860444751064868e-246), + SC_(0.82e2), SC_(0.11958599090576171875e0), SC_(0.1019336562451156029299163377789061540366e-222), + SC_(0.82e2), SC_(0.15262925624847412109375e0), SC_(0.4975570065935101711688291197874212937039e-214), + SC_(0.82e2), SC_(0.408089816570281982421875e0), SC_(0.5256585491004637978784987888275707136183e-179), + SC_(0.82e2), SC_(0.6540834903717041015625e0), SC_(0.3318904542226912390049207214862611260169e-162), + SC_(0.82e2), SC_(0.1097540378570556640625e1), SC_(0.9006810914088316982393635835954853735918e-144), + SC_(0.82e2), SC_(0.30944411754608154296875e1), SC_(0.7564505234377340524197089618341840082876e-107), + SC_(0.82e2), SC_(0.51139926910400390625e1), SC_(0.6180693935663269590148206442946860331756e-89), + SC_(0.82e2), SC_(0.95070552825927734375e1), SC_(0.9043352144198374855605316967339611243444e-67), + SC_(0.82e2), SC_(0.24750102996826171875e2), SC_(0.5065035140645080960031365557479815802671e-32), + SC_(0.82e2), SC_(0.637722015380859375e2), SC_(0.4070462729680846577801828424629699736782e6), + SC_(0.85e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1219116513647314073579445140073826698962e-387), + SC_(0.85e2), SC_(0.22177286446094512939453125e-2), SC_(0.2316658303570511364023325655883461576972e-379), + SC_(0.85e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1171299375215890527495299558278169129332e-334), + SC_(0.85e2), SC_(0.1433600485324859619140625e-1), SC_(0.1815681105495951303009870770747843010446e-310), + SC_(0.85e2), SC_(0.1760916970670223236083984375e-1), SC_(0.708683910208375847232135348016178171053e-303), + SC_(0.85e2), SC_(0.6152711808681488037109375e-1), SC_(0.1079719594775910837503589945246873551394e-256), + SC_(0.85e2), SC_(0.11958599090576171875e0), SC_(0.3676982627128526557346333692497334159336e-232), + SC_(0.85e2), SC_(0.15262925624847412109375e0), SC_(0.3731546483902763830031124428268564725393e-223), + SC_(0.85e2), SC_(0.408089816570281982421875e0), SC_(0.7535240432188811873875509550682990477762e-187), + SC_(0.85e2), SC_(0.6540834903717041015625e0), SC_(0.1958883058289393975902194279609190904406e-169), + SC_(0.85e2), SC_(0.1097540378570556640625e1), SC_(0.2511373518429964095251580585112467258299e-150), + SC_(0.85e2), SC_(0.30944411754608154296875e1), SC_(0.4723067963574572650298919057601100049465e-112), + SC_(0.85e2), SC_(0.51139926910400390625e1), SC_(0.1738839346363387627371195241710367004536e-93), + SC_(0.85e2), SC_(0.95070552825927734375e1), SC_(0.1623663257276872998800059443147901760439e-70), + SC_(0.85e2), SC_(0.24750102996826171875e2), SC_(0.1521743437932867300705177236196212703582e-34), + SC_(0.85e2), SC_(0.637722015380859375e2), SC_(0.1556799959129105832955966318088587426661e5), + SC_(0.88e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1288209613593357571142720689583005763762e-402), + SC_(0.88e2), SC_(0.22177286446094512939453125e-2), SC_(0.4797299543775689080036441106208914106219e-394), + SC_(0.88e2), SC_(0.7444499991834163665771484375e-2), SC_(0.9174536812416633326341915508185869175459e-348), + SC_(0.88e2), SC_(0.1433600485324859619140625e-1), SC_(0.1015625556161420986205394396723116662882e-322), + SC_(0.88e2), SC_(0.1760916970670223236083984375e-1), SC_(0.7346472096657986490100705296779319049912e-315), + SC_(0.88e2), SC_(0.6152711808681488037109375e-1), SC_(0.4774415143129565154141226398131338281536e-267), + SC_(0.88e2), SC_(0.11958599090576171875e0), SC_(0.119382735471855848143552750474098416176e-241), + SC_(0.88e2), SC_(0.15262925624847412109375e0), SC_(0.2518899646481384301970914279883481939291e-232), + SC_(0.88e2), SC_(0.408089816570281982421875e0), SC_(0.9722253412784373652536121925492657625805e-195), + SC_(0.88e2), SC_(0.6540834903717041015625e0), SC_(0.1040637574745703228070355356117916659304e-176), + SC_(0.88e2), SC_(0.1097540378570556640625e1), SC_(0.6302766367711271660992485559308335862541e-157), + SC_(0.88e2), SC_(0.30944411754608154296875e1), SC_(0.2654441873858763831864401113742713122992e-117), + SC_(0.88e2), SC_(0.51139926910400390625e1), SC_(0.4403904099603861384280491749834790369519e-98), + SC_(0.88e2), SC_(0.95070552825927734375e1), SC_(0.262551184129831686961964273106436690334e-74), + SC_(0.88e2), SC_(0.24750102996826171875e2), SC_(0.4131930234604820436302932418803598894853e-37), + SC_(0.88e2), SC_(0.637722015380859375e2), SC_(0.5471250742874498784335752261273680101442e3) + }; +#undef SC_ + + diff --git a/test/bessel_j_data.ipp b/test/bessel_j_data.ipp new file mode 100644 index 000000000..4200c23b5 --- /dev/null +++ b/test/bessel_j_data.ipp @@ -0,0 +1,371 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 360> bessel_j_data = { + SC_(0.4430477856658399105072021484375e-3), SC_(0.553809732082299888134002685546875e-4), SC_(0.9956156809860747445801192500664050062602e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.69304020144045352935791015625e-4), SC_(0.9957146107589140226790508756099801328105e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.23264062474481761455535888671875e-3), SC_(0.9962489699005580621378590557841736186861e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.4480001516640186309814453125e-3), SC_(0.9965382149919219697926696508657333563376e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.5502865533344447612762451171875e-3), SC_(0.9966289891095531217170976766456612311928e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.19227224402129650115966796875e-2), SC_(0.9971807065952682162692966068389032708599e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.37370622158050537109375e-2), SC_(0.9974717909688313208758556750808530574188e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.47696642577648162841796875e-2), SC_(0.997577426859888822291081757361344556863e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.1275280676782131195068359375e-1), SC_(0.9979773067040365116413896458097958587041e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.20440109074115753173828125e-1), SC_(0.9981222651757299264986454464589469235334e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.3429813683032989501953125e-1), SC_(0.9981619333713874456307490264513905997672e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.96701286733150482177734375e-1), SC_(0.9965812006107194383507063599312965181976e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.159812271595001220703125e0), SC_(0.9927699251072058869431015490774723070186e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.297095477581024169921875e0), SC_(0.9774885373571948238761430963137133013962e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.77344071865081787109375e0), SC_(0.8558678749290511288516105356098172615967e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.1992881298065185546875e1), SC_(0.2283524941992771533363988837045423832888e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.3915013790130615234375e1), SC_(-0.401360440349915932533731778088781472183e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.79858455657958984375e1), SC_(0.1751115157942275375093377805999900633628e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.1571910858154296875e2), SC_(-0.1426234585704966197380052262204215409713e0), + SC_(0.4430477856658399105072021484375e-3), SC_(0.31483119964599609375e2), SC_(0.1066310031567526427476684436417433539043e0), + SC_(0.554432161152362823486328125e-3), SC_(0.553809732082299888134002685546875e-4), SC_(0.9945164185569587230213539870667972875692e0), + SC_(0.554432161152362823486328125e-3), SC_(0.69304020144045352935791015625e-4), SC_(0.9946400847213057054537534776624837878946e0), + SC_(0.554432161152362823486328125e-3), SC_(0.23264062474481761455535888671875e-3), SC_(0.9953081108718330939070656828660938331342e0), + SC_(0.554432161152362823486328125e-3), SC_(0.4480001516640186309814453125e-3), SC_(0.9956697541222540255647650289685550550287e0), + SC_(0.554432161152362823486328125e-3), SC_(0.5502865533344447612762451171875e-3), SC_(0.9957832579906576456563607224027456916251e0), + SC_(0.554432161152362823486328125e-3), SC_(0.19227224402129650115966796875e-2), SC_(0.9964733546229106923992847311503904080801e0), + SC_(0.554432161152362823486328125e-3), SC_(0.37370622158050537109375e-2), SC_(0.9968380173570457415468434756113694340878e0), + SC_(0.554432161152362823486328125e-3), SC_(0.47696642577648162841796875e-2), SC_(0.9969706788099270079524162776507030382138e0), + SC_(0.554432161152362823486328125e-3), SC_(0.1275280676782131195068359375e-1), SC_(0.9974795810399399980819372250486803819028e0), + SC_(0.554432161152362823486328125e-3), SC_(0.20440109074115753173828125e-1), SC_(0.99767689617703742799168249521337668749e0), + SC_(0.554432161152362823486328125e-3), SC_(0.3429813683032989501953125e-1), SC_(0.997774089399990647214931657780519793888e0), + SC_(0.554432161152362823486328125e-3), SC_(0.96701286733150482177734375e-1), SC_(0.9963092188861358436843828984354699213759e0), + SC_(0.554432161152362823486328125e-3), SC_(0.159812271595001220703125e0), SC_(0.9925549713148663125876374807339340488473e0), + SC_(0.554432161152362823486328125e-3), SC_(0.297095477581024169921875e0), SC_(0.9773461257455259400626571167158074279339e0), + SC_(0.554432161152362823486328125e-3), SC_(0.77344071865081787109375e0), SC_(0.8558479783471517562239377557029974866496e0), + SC_(0.554432161152362823486328125e-3), SC_(0.1992881298065185546875e1), SC_(0.2284416118095148413691988171034857034998e0), + SC_(0.554432161152362823486328125e-3), SC_(0.3915013790130615234375e1), SC_(-0.4013573659865744373419228392808844392131e0), + SC_(0.554432161152362823486328125e-3), SC_(0.79858455657958984375e1), SC_(0.1751502024658724728242948804818811752031e0), + SC_(0.554432161152362823486328125e-3), SC_(0.1571910858154296875e2), SC_(-0.1425986283388769556266104448492207320811e0), + SC_(0.554432161152362823486328125e-3), SC_(0.31483119964599609375e2), SC_(0.1066145438340245056954574795725125118984e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.553809732082299888134002685546875e-4), SC_(0.9817093353081942469816526285068995358612e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.69304020144045352935791015625e-4), SC_(0.9821191746862947666429796292865148899257e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.23264062474481761455535888671875e-3), SC_(0.9843351663379732777023812441892374028968e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.4480001516640186309814453125e-3), SC_(0.9855363506977195696759812664468424040665e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.5502865533344447612762451171875e-3), SC_(0.9859135941901516415721117055805978018756e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.19227224402129650115966796875e-2), SC_(0.9882110091337713422555556649984351858334e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.37370622158050537109375e-2), SC_(0.9894314739398718125445096933051219189052e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.47696642577648162841796875e-2), SC_(0.9898786773968001423681957632107335237307e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.1275280676782131195068359375e-1), SC_(0.9916575656584680781858750626325680648059e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.20440109074115753173828125e-1), SC_(0.9924654079000974647945374252001453718364e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.3429813683032989501953125e-1), SC_(0.9932338692418333674513222303931472051914e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.96701286733150482177734375e-1), SC_(0.9931225190063597669143919008613986546829e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.159812271595001220703125e0), SC_(0.9900352203814238880722659452483734427322e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.297095477581024169921875e0), SC_(0.9756754635104943903830166510741270074568e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.77344071865081787109375e0), SC_(0.8556130162510752278666332268905263436046e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.1992881298065185546875e1), SC_(0.2294863665034258649591045326467545257489e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.3915013790130615234375e1), SC_(-0.4013203973956146567802727002608565844354e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.79858455657958984375e1), SC_(0.1756036258093201067742480797203249679677e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.1571910858154296875e2), SC_(-0.1423070182265885360371078443389686783143e0), + SC_(0.186112499795854091644287109375e-2), SC_(0.31483119964599609375e2), SC_(0.1064212124432705753393290287137815754319e0), + SC_(0.35840012133121490478515625e-2), SC_(0.553809732082299888134002685546875e-4), SC_(0.9650707876272019770134952457282249740739e0), + SC_(0.35840012133121490478515625e-2), SC_(0.69304020144045352935791015625e-4), SC_(0.9658467964630894046501757076218342927801e0), + SC_(0.35840012133121490478515625e-2), SC_(0.23264062474481761455535888671875e-3), SC_(0.9700478597469915082824318140123835180869e0), + SC_(0.35840012133121490478515625e-2), SC_(0.4480001516640186309814453125e-3), SC_(0.9723287476406665086749967542371269571234e0), + SC_(0.35840012133121490478515625e-2), SC_(0.5502865533344447612762451171875e-3), SC_(0.9730456263943909567987631022793046602603e0), + SC_(0.35840012133121490478515625e-2), SC_(0.19227224402129650115966796875e-2), SC_(0.9774175323141709829066403138557060923786e0), + SC_(0.35840012133121490478515625e-2), SC_(0.37370622158050537109375e-2), SC_(0.9797457898312132593210429697126849835518e0), + SC_(0.35840012133121490478515625e-2), SC_(0.47696642577648162841796875e-2), SC_(0.9806007189648424616267897116538953898626e0), + SC_(0.35840012133121490478515625e-2), SC_(0.1275280676782131195068359375e-1), SC_(0.9840289261106419257463048917206926912931e0), + SC_(0.35840012133121490478515625e-2), SC_(0.20440109074115753173828125e-1), SC_(0.9856314206424828761679016945348314437259e0), + SC_(0.35840012133121490478515625e-2), SC_(0.3429813683032989501953125e-1), SC_(0.9872749179206597028494401845390763149145e0), + SC_(0.35840012133121490478515625e-2), SC_(0.96701286733150482177734375e-1), SC_(0.988932179910175424589294675055202246355e0), + SC_(0.35840012133121490478515625e-2), SC_(0.159812271595001220703125e0), SC_(0.9867184436488505284336133268536754401756e0), + SC_(0.35840012133121490478515625e-2), SC_(0.297095477581024169921875e0), SC_(0.9734727764095169166354550030712991853188e0), + SC_(0.35840012133121490478515625e-2), SC_(0.77344071865081787109375e0), SC_(0.8552988701003771721146721734619235915706e0), + SC_(0.35840012133121490478515625e-2), SC_(0.1992881298065185546875e1), SC_(0.2308618505494366249905008758109493850602e0), + SC_(0.35840012133121490478515625e-2), SC_(0.3915013790130615234375e1), SC_(-0.4012691147847807908816435949894823168188e0), + SC_(0.35840012133121490478515625e-2), SC_(0.79858455657958984375e1), SC_(0.1762002663351808150861701687808126150305e0), + SC_(0.35840012133121490478515625e-2), SC_(0.1571910858154296875e2), SC_(-0.1419216381983571259124926406653600173921e0), + SC_(0.35840012133121490478515625e-2), SC_(0.31483119964599609375e2), SC_(0.1061656276058522622372436370913678330655e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.553809732082299888134002685546875e-4), SC_(0.9572656431203538165112750398451169576976e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.69304020144045352935791015625e-4), SC_(0.9582112064201335261630997112342307287719e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.23264062474481761455535888671875e-3), SC_(0.9633331943281124926230864636692210997818e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.4480001516640186309814453125e-3), SC_(0.9661162109066795212283435150515623357621e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.5502865533344447612762451171875e-3), SC_(0.9669912189279992303843912808888387671473e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.19227224402129650115966796875e-2), SC_(0.9723308178532373593917839240834483621504e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.37370622158050537109375e-2), SC_(0.9751771194142703096718649204073811795873e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.47696642577648162841796875e-2), SC_(0.9762229407760513009389469194046638514027e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.1275280676782131195068359375e-1), SC_(0.9804245691270382739486838438029335140198e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.20440109074115753173828125e-1), SC_(0.9824004047135082246753499791797478879785e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.3429813683032989501953125e-1), SC_(0.984455534869400551529392629224463906169e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.96701286733150482177734375e-1), SC_(0.9869464641414984822321264268443877210374e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.159812271595001220703125e0), SC_(0.9851453236176178426246334004315599658192e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.297095477581024169921875e0), SC_(0.9724266380293597530681971818509394699107e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.77344071865081787109375e0), SC_(0.8551479374909868558451585757714077368885e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.1992881298065185546875e1), SC_(0.2315143366636852187122636336456783890548e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.3915013790130615234375e1), SC_(-0.4012437467987236172826231041979925126909e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.79858455657958984375e1), SC_(0.1764831660585815769139232327821739009943e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.1571910858154296875e2), SC_(-0.141738245001420054185073262290736677654e0), + SC_(0.44022924266755580902099609375e-2), SC_(0.31483119964599609375e2), SC_(0.1060439666746798582094286827426883845277e0), + SC_(0.153817795217037200927734375e-1), SC_(0.553809732082299888134002685546875e-4), SC_(0.8583550718928807401873869793432711772123e0), + SC_(0.153817795217037200927734375e-1), SC_(0.69304020144045352935791015625e-4), SC_(0.8613211858377698265154743164108225752525e0), + SC_(0.153817795217037200927734375e-1), SC_(0.23264062474481761455535888671875e-3), SC_(0.8775155467383213075302534757015686484876e0), + SC_(0.153817795217037200927734375e-1), SC_(0.4480001516640186309814453125e-3), SC_(0.8864053008371523114095454773126426698364e0), + SC_(0.153817795217037200927734375e-1), SC_(0.5502865533344447612762451171875e-3), SC_(0.8892135905171034893591713316993284208759e0), + SC_(0.153817795217037200927734375e-1), SC_(0.19227224402129650115966796875e-2), SC_(0.9064901212601688965759347721137705112888e0), + SC_(0.153817795217037200927734375e-1), SC_(0.37370622158050537109375e-2), SC_(0.9158015418805685482235588249392599592902e0), + SC_(0.153817795217037200927734375e-1), SC_(0.47696642577648162841796875e-2), SC_(0.9192428186392203993848388684430042172008e0), + SC_(0.153817795217037200927734375e-1), SC_(0.1275280676782131195068359375e-1), SC_(0.9332223307473034116584470457618562398406e0), + SC_(0.153817795217037200927734375e-1), SC_(0.20440109074115753173828125e-1), SC_(0.9399596619873951705188067685798880880034e0), + SC_(0.153817795217037200927734375e-1), SC_(0.3429813683032989501953125e-1), SC_(0.9472960471681579227807169947416445529388e0), + SC_(0.153817795217037200927734375e-1), SC_(0.96701286733150482177734375e-1), SC_(0.9605839617426718586595605703751608602502e0), + SC_(0.153817795217037200927734375e-1), SC_(0.159812271595001220703125e0), SC_(0.9641764996837634701730700137586435692646e0), + SC_(0.153817795217037200927734375e-1), SC_(0.297095477581024169921875e0), SC_(0.9583945505286128951225013946649214254347e0), + SC_(0.153817795217037200927734375e-1), SC_(0.77344071865081787109375e0), SC_(0.8530164071194849300470063837901880488803e0), + SC_(0.153817795217037200927734375e-1), SC_(0.1992881298065185546875e1), SC_(0.240218372332627080573838868778527182005e0), + SC_(0.153817795217037200927734375e-1), SC_(0.3915013790130615234375e1), SC_(-0.4008405522603801038591381630933706393324e0), + SC_(0.153817795217037200927734375e-1), SC_(0.79858455657958984375e1), SC_(0.1802489691416901537345121978807193189784e0), + SC_(0.153817795217037200927734375e-1), SC_(0.1571910858154296875e2), SC_(-0.1392556457999181096425233280329944929325e0), + SC_(0.153817795217037200927734375e-1), SC_(0.31483119964599609375e2), SC_(0.1043949105890340963995171034261672283363e0), + SC_(0.298964977264404296875e-1), SC_(0.553809732082299888134002685546875e-4), SC_(0.742884755887697115977351911781125907627e0), + SC_(0.298964977264404296875e-1), SC_(0.69304020144045352935791015625e-4), SC_(0.7478823790829247834932307935127306054769e0), + SC_(0.298964977264404296875e-1), SC_(0.23264062474481761455535888671875e-3), SC_(0.7754551326679408121223091135554781991498e0), + SC_(0.298964977264404296875e-1), SC_(0.4480001516640186309814453125e-3), SC_(0.7907969426857135091277230622821305711136e0), + SC_(0.298964977264404296875e-1), SC_(0.5502865533344447612762451171875e-3), SC_(0.7956737841544445768430498354850849698267e0), + SC_(0.298964977264404296875e-1), SC_(0.19227224402129650115966796875e-2), SC_(0.8259966511221832755858705775881757660762e0), + SC_(0.298964977264404296875e-1), SC_(0.37370622158050537109375e-2), SC_(0.8425695187557287349775070878883918917836e0), + SC_(0.298964977264404296875e-1), SC_(0.47696642577648162841796875e-2), SC_(0.8487359057359733335063723107462504359251e0), + SC_(0.298964977264404296875e-1), SC_(0.1275280676782131195068359375e-1), SC_(0.8740316507444012343914751545412959743395e0), + SC_(0.298964977264404296875e-1), SC_(0.20440109074115753173828125e-1), SC_(0.886391079139498777007192966317958160095e0), + SC_(0.298964977264404296875e-1), SC_(0.3429813683032989501953125e-1), SC_(0.9000481701003951036457086504770705772399e0), + SC_(0.298964977264404296875e-1), SC_(0.96701286733150482177734375e-1), SC_(0.9265346574320327852130484364760647803115e0), + SC_(0.298964977264404296875e-1), SC_(0.159812271595001220703125e0), SC_(0.9368589195346616414310636250516773534604e0), + SC_(0.298964977264404296875e-1), SC_(0.297095477581024169921875e0), SC_(0.9398678208615801421745490322757890186537e0), + SC_(0.298964977264404296875e-1), SC_(0.77344071865081787109375e0), SC_(0.8499012519470720593166607729886371802792e0), + SC_(0.298964977264404296875e-1), SC_(0.1992881298065185546875e1), SC_(0.2515780672390681588351321732986617026347e0), + SC_(0.298964977264404296875e-1), SC_(0.3915013790130615234375e1), SC_(-0.4001289935988788691267947472714059973845e0), + SC_(0.298964977264404296875e-1), SC_(0.79858455657958984375e1), SC_(0.1851403466337968000141195478049479374839e0), + SC_(0.298964977264404296875e-1), SC_(0.1571910858154296875e2), SC_(-0.1359120805184338686368388592303485950658e0), + SC_(0.298964977264404296875e-1), SC_(0.31483119964599609375e2), SC_(0.1021679170423707311154153818173894031606e0), + SC_(0.381573140621185302734375e-1), SC_(0.553809732082299888134002685546875e-4), SC_(0.6841420299325285630130897536364936747643e0), + SC_(0.381573140621185302734375e-1), SC_(0.69304020144045352935791015625e-4), SC_(0.6900216413679779551556201528526453387394e0), + SC_(0.381573140621185302734375e-1), SC_(0.23264062474481761455535888671875e-3), SC_(0.7226544366131223950228834783456152605754e0), + SC_(0.381573140621185302734375e-1), SC_(0.4480001516640186309814453125e-3), SC_(0.7409517829280971667458533848115659780144e0), + SC_(0.381573140621185302734375e-1), SC_(0.5502865533344447612762451171875e-3), SC_(0.7467887977417584608136463615613360082868e0), + SC_(0.381573140621185302734375e-1), SC_(0.19227224402129650115966796875e-2), SC_(0.7833022340177641505811477263523586590019e0), + SC_(0.381573140621185302734375e-1), SC_(0.37370622158050537109375e-2), SC_(0.8034169983227660471989683377181643874041e0), + SC_(0.381573140621185302734375e-1), SC_(0.47696642577648162841796875e-2), SC_(0.8109295949487911713922913635940285964383e0), + SC_(0.381573140621185302734375e-1), SC_(0.1275280676782131195068359375e-1), SC_(0.8419110219154533706755463279080150807209e0), + SC_(0.381573140621185302734375e-1), SC_(0.20440109074115753173828125e-1), SC_(0.8571504961090591474324139612398431475369e0), + SC_(0.381573140621185302734375e-1), SC_(0.3429813683032989501953125e-1), SC_(0.8740877238077575501391719499843064674293e0), + SC_(0.381573140621185302734375e-1), SC_(0.96701286733150482177734375e-1), SC_(0.9075624274998725403726052596212149221215e0), + SC_(0.381573140621185302734375e-1), SC_(0.159812271595001220703125e0), SC_(0.9215205268089440982144689663486354608066e0), + SC_(0.381573140621185302734375e-1), SC_(0.297095477581024169921875e0), SC_(0.9293421706048407737874025281709292937407e0), + SC_(0.381573140621185302734375e-1), SC_(0.77344071865081787109375e0), SC_(0.8479814260052627324635659368076800003767e0), + SC_(0.381573140621185302734375e-1), SC_(0.1992881298065185546875e1), SC_(0.2579673330760711478868236151210265224189e0), + SC_(0.381573140621185302734375e-1), SC_(0.3915013790130615234375e1), SC_(-0.3996338564915260965885550628131890788051e0), + SC_(0.381573140621185302734375e-1), SC_(0.79858455657958984375e1), SC_(0.1878792246069015970888990916599081627329e0), + SC_(0.381573140621185302734375e-1), SC_(0.1571910858154296875e2), SC_(-0.1339784634600578760332134085441073471374e0), + SC_(0.381573140621185302734375e-1), SC_(0.31483119964599609375e2), SC_(0.100876996327549944249344479925538884532e0), + SC_(0.10202245414257049560546875e0), SC_(0.553809732082299888134002685546875e-4), SC_(0.3606165352044069393831350891047765483003e0), + SC_(0.10202245414257049560546875e0), SC_(0.69304020144045352935791015625e-4), SC_(0.3689626486805358814480741299029355981601e0), + SC_(0.10202245414257049560546875e0), SC_(0.23264062474481761455535888671875e-3), SC_(0.4174829799241447295048315790401886916946e0), + SC_(0.10202245414257049560546875e0), SC_(0.4480001516640186309814453125e-3), SC_(0.4463480033025776786832515229187416030614e0), + SC_(0.10202245414257049560546875e0), SC_(0.5502865533344447612762451171875e-3), SC_(0.4558115094446283324562214840153242542871e0), + SC_(0.10202245414257049560546875e0), SC_(0.19227224402129650115966796875e-2), SC_(0.5178650207127426471775316254220911383178e0), + SC_(0.10202245414257049560546875e0), SC_(0.37370622158050537109375e-2), SC_(0.5541925039216886380975838806332594009211e0), + SC_(0.10202245414257049560546875e0), SC_(0.47696642577648162841796875e-2), SC_(0.5681589129485432012257678833259897519727e0), + SC_(0.10202245414257049560546875e0), SC_(0.1275280676782131195068359375e-1), SC_(0.6281041540102595477794290368911151843408e0), + SC_(0.10202245414257049560546875e0), SC_(0.20440109074115753173828125e-1), SC_(0.6590352185809360608371672991603233118586e0), + SC_(0.10202245414257049560546875e0), SC_(0.3429813683032989501953125e-1), SC_(0.6946519128324876690915696733589771202802e0), + SC_(0.10202245414257049560546875e0), SC_(0.96701286733150482177734375e-1), SC_(0.7707046606989733770250126276311699296637e0), + SC_(0.10202245414257049560546875e0), SC_(0.159812271595001220703125e0), SC_(0.8082562254820549527428553025014375386755e0), + SC_(0.10202245414257049560546875e0), SC_(0.297095477581024169921875e0), SC_(0.8487974946765730744564092334654307469559e0), + SC_(0.10202245414257049560546875e0), SC_(0.77344071865081787109375e0), SC_(0.8298066178791086006349441593017042218955e0), + SC_(0.10202245414257049560546875e0), SC_(0.1992881298065185546875e1), SC_(0.3054343300062091738974399358601827644068e0), + SC_(0.10202245414257049560546875e0), SC_(0.3915013790130615234375e1), SC_(-0.3936401467474671244724786149362722727073e0), + SC_(0.10202245414257049560546875e0), SC_(0.79858455657958984375e1), SC_(0.2079075751648681425192154503326445363098e0), + SC_(0.10202245414257049560546875e0), SC_(0.1571910858154296875e2), SC_(-0.1183197505805322445014652724968664131902e0), + SC_(0.10202245414257049560546875e0), SC_(0.31483119964599609375e2), SC_(0.9034937163020660492669231458325337256655e-1), + SC_(0.163520872592926025390625e0), SC_(0.553809732082299888134002685546875e-4), SC_(0.1935765400863987429813801338918793416835e0), + SC_(0.163520872592926025390625e0), SC_(0.69304020144045352935791015625e-4), SC_(0.2008072106338149495223798543091882605684e0), + SC_(0.163520872592926025390625e0), SC_(0.23264062474481761455535888671875e-3), SC_(0.2447819339896590712661783460825717003235e0), + SC_(0.163520872592926025390625e0), SC_(0.4480001516640186309814453125e-3), SC_(0.2724684237231234324363787603307965238357e0), + SC_(0.163520872592926025390625e0), SC_(0.5502865533344447612762451171875e-3), SC_(0.2817866018678791425942242567578780018964e0), + SC_(0.163520872592926025390625e0), SC_(0.19227224402129650115966796875e-2), SC_(0.3457525898001358494852590808597670355534e0), + SC_(0.163520872592926025390625e0), SC_(0.37370622158050537109375e-2), SC_(0.3854418375100269152289095951487202696446e0), + SC_(0.163520872592926025390625e0), SC_(0.47696642577648162841796875e-2), SC_(0.4011292146115097022811728131521138974364e0), + SC_(0.163520872592926025390625e0), SC_(0.1275280676782131195068359375e-1), SC_(0.4711009097421660901146172076469919302745e0), + SC_(0.163520872592926025390625e0), SC_(0.20440109074115753173828125e-1), SC_(0.5088524475025423064259545555342309369868e0), + SC_(0.163520872592926025390625e0), SC_(0.3429813683032989501953125e-1), SC_(0.5537050642023393215162737912683735722478e0), + SC_(0.163520872592926025390625e0), SC_(0.96701286733150482177734375e-1), SC_(0.654826290486799846435084426005197154546e0), + SC_(0.163520872592926025390625e0), SC_(0.159812271595001220703125e0), SC_(0.708417798536071944638243041597473973128e0), + SC_(0.163520872592926025390625e0), SC_(0.297095477581024169921875e0), SC_(0.7734579959585943711276462664242659276933e0), + SC_(0.163520872592926025390625e0), SC_(0.77344071865081787109375e0), SC_(0.8073868060584113423014122796250092474989e0), + SC_(0.163520872592926025390625e0), SC_(0.1992881298065185546875e1), SC_(0.3477579001706517006791481727902424569584e0), + SC_(0.163520872592926025390625e0), SC_(0.3915013790130615234375e1), SC_(-0.3843633305258631298586157270838438240094e0), + SC_(0.163520872592926025390625e0), SC_(0.79858455657958984375e1), SC_(0.2251683658539084282442650061831272437155e0), + SC_(0.163520872592926025390625e0), SC_(0.1571910858154296875e2), SC_(-0.102164231881092586707016718170101606631e0), + SC_(0.163520872592926025390625e0), SC_(0.31483119964599609375e2), SC_(0.7936891271499253168434546053762560949488e-1), + SC_(0.27438509464263916015625e0), SC_(0.553809732082299888134002685546875e-4), SC_(0.6228420712447870814285199552872701596776e-1), + SC_(0.27438509464263916015625e0), SC_(0.69304020144045352935791015625e-4), SC_(0.6623727493409701153735818363331462769764e-1), + SC_(0.27438509464263916015625e0), SC_(0.23264062474481761455535888671875e-3), SC_(0.9234407117578245720954148716726511312456e-1), + SC_(0.27438509464263916015625e0), SC_(0.4480001516640186309814453125e-3), SC_(0.1105342767528907252128512094065852917468e0), + SC_(0.27438509464263916015625e0), SC_(0.5502865533344447612762451171875e-3), SC_(0.1169506125790863061630031566039819079126e0), + SC_(0.27438509464263916015625e0), SC_(0.19227224402129650115966796875e-2), SC_(0.164847829249976942985975327390198531889e0), + SC_(0.27438509464263916015625e0), SC_(0.37370622158050537109375e-2), SC_(0.1978215790949422197428770971627606477192e0), + SC_(0.27438509464263916015625e0), SC_(0.47696642577648162841796875e-2), SC_(0.2115173854011710893803581877981094936686e0), + SC_(0.27438509464263916015625e0), SC_(0.1275280676782131195068359375e-1), SC_(0.2770313741041427777559243253878892289249e0), + SC_(0.27438509464263916015625e0), SC_(0.20440109074115753173828125e-1), SC_(0.3152989535782268394242187238779405447919e0), + SC_(0.27438509464263916015625e0), SC_(0.3429813683032989501953125e-1), SC_(0.3633592225389310683611636886724262055726e0), + SC_(0.27438509464263916015625e0), SC_(0.96701286733150482177734375e-1), SC_(0.4821221372847714604352567046948535165623e0), + SC_(0.27438509464263916015625e0), SC_(0.159812271595001220703125e0), SC_(0.5516206453467267319728144901434690238286e0), + SC_(0.27438509464263916015625e0), SC_(0.297095477581024169921875e0), SC_(0.6458892967673327408733141872284902076157e0), + SC_(0.27438509464263916015625e0), SC_(0.77344071865081787109375e0), SC_(0.7574871943872145834141576741841520880101e0), + SC_(0.27438509464263916015625e0), SC_(0.1992881298065185546875e1), SC_(0.4151603630848462540526709866685185049035e0), + SC_(0.27438509464263916015625e0), SC_(0.3915013790130615234375e1), SC_(-0.3595525462795827708789543875034136996309e0), + SC_(0.27438509464263916015625e0), SC_(0.79858455657958984375e1), SC_(0.2508669266659111537260665836716160218675e0), + SC_(0.27438509464263916015625e0), SC_(0.1571910858154296875e2), SC_(-0.7088009880511567432681382070126536719863e-1), + SC_(0.27438509464263916015625e0), SC_(0.31483119964599609375e2), SC_(0.5782732937293368719231009402701038060308e-1), + SC_(0.773610293865203857421875e0), SC_(0.553809732082299888134002685546875e-4), SC_(0.3222296261070960267506583626328336605603e-3), + SC_(0.773610293865203857421875e0), SC_(0.69304020144045352935791015625e-4), SC_(0.3832776033740372365543338166881198158245e-3), + SC_(0.773610293865203857421875e0), SC_(0.23264062474481761455535888671875e-3), SC_(0.9780838301186048514554659570989124966569e-3), + SC_(0.773610293865203857421875e0), SC_(0.4480001516640186309814453125e-3), SC_(0.162382730307963675651648352167036650681e-2), + SC_(0.773610293865203857421875e0), SC_(0.5502865533344447612762451171875e-3), SC_(0.1903844793429706661570830196435423250832e-2), + SC_(0.773610293865203857421875e0), SC_(0.19227224402129650115966796875e-2), SC_(0.501135570740291264003109085072842029352e-2), + SC_(0.773610293865203857421875e0), SC_(0.37370622158050537109375e-2), SC_(0.8379713230161554466309376293974021298272e-2), + SC_(0.773610293865203857421875e0), SC_(0.47696642577648162841796875e-2), SC_(0.1012041722486074483696280603462161354426e-1), + SC_(0.773610293865203857421875e0), SC_(0.1275280676782131195068359375e-1), SC_(0.216577188640219307250185271553412447577e-1), + SC_(0.773610293865203857421875e0), SC_(0.20440109074115753173828125e-1), SC_(0.311955308334793282568797636287326993782e-1), + SC_(0.773610293865203857421875e0), SC_(0.3429813683032989501953125e-1), SC_(0.4655257690662710372539264892660562067193e-1), + SC_(0.773610293865203857421875e0), SC_(0.96701286733150482177734375e-1), SC_(0.1036795032424837724132280968505410966204e0), + SC_(0.773610293865203857421875e0), SC_(0.159812271595001220703125e0), SC_(0.1525758006523497861594698948383510302805e0), + SC_(0.773610293865203857421875e0), SC_(0.297095477581024169921875e0), SC_(0.2443188793148582054843189696741113031701e0), + SC_(0.773610293865203857421875e0), SC_(0.77344071865081787109375e0), SC_(0.4760335268988334891374071772729661423144e0), + SC_(0.773610293865203857421875e0), SC_(0.1992881298065185546875e1), SC_(0.5738140731345578470194054669386198530524e0), + SC_(0.773610293865203857421875e0), SC_(0.3915013790130615234375e1), SC_(-0.152977982927187208229664701583316444495e0), + SC_(0.773610293865203857421875e0), SC_(0.79858455657958984375e1), SC_(0.2720029809232263356561781252102629824753e0), + SC_(0.773610293865203857421875e0), SC_(0.1571910858154296875e2), SC_(0.7979891128478667330490354169806520568541e-1), + SC_(0.773610293865203857421875e0), SC_(0.31483119964599609375e2), SC_(-0.4970658304875028592254320548176144098148e-1), + SC_(0.1278498172760009765625e1), SC_(0.553809732082299888134002685546875e-4), SC_(0.1293042877451174959752415317453290989549e-5), + SC_(0.1278498172760009765625e1), SC_(0.69304020144045352935791015625e-4), SC_(0.1722407437992625778019526669549314786717e-5), + SC_(0.1278498172760009765625e1), SC_(0.23264062474481761455535888671875e-3), SC_(0.8100890500258348601835497121888057691765e-5), + SC_(0.1278498172760009765625e1), SC_(0.4480001516640186309814453125e-3), SC_(0.1872336402519189482379901626968705848331e-4), + SC_(0.1278498172760009765625e1), SC_(0.5502865533344447612762451171875e-3), SC_(0.2435384252982741484249166134205283819448e-4), + SC_(0.1278498172760009765625e1), SC_(0.19227224402129650115966796875e-2), SC_(0.1205620978482445248571933261980048308611e-3), + SC_(0.1278498172760009765625e1), SC_(0.37370622158050537109375e-2), SC_(0.2819696969201040501731691258249980108852e-3), + SC_(0.1278498172760009765625e1), SC_(0.47696642577648162841796875e-2), SC_(0.3851842008874816937945807840767328664892e-3), + SC_(0.1278498172760009765625e1), SC_(0.1275280676782131195068359375e-1), SC_(0.1354351344969989133582417432988553465356e-2), + SC_(0.1278498172760009765625e1), SC_(0.20440109074115753173828125e-1), SC_(0.2475452537371515965476163695361837528907e-2), + SC_(0.1278498172760009765625e1), SC_(0.3429813683032989501953125e-1), SC_(0.4797429857204974956432283042366526858553e-2), + SC_(0.1278498172760009765625e1), SC_(0.96701286733150482177734375e-1), SC_(0.1803640453854063494252322440013642039371e-1), + SC_(0.1278498172760009765625e1), SC_(0.159812271595001220703125e0), SC_(0.3422300234134881051695002634665810825229e-1), + SC_(0.1278498172760009765625e1), SC_(0.297095477581024169921875e0), SC_(0.7509395505166360503639976232203552453175e-1), + SC_(0.1278498172760009765625e1), SC_(0.77344071865081787109375e0), SC_(0.2411436940173849956429561964466706747216e0), + SC_(0.1278498172760009765625e1), SC_(0.1992881298065185546875e1), SC_(0.5404138641444118039922709928024339259041e0), + SC_(0.1278498172760009765625e1), SC_(0.3915013790130615234375e1), SC_(0.1125617657254339590832781377108694478819e0), + SC_(0.1278498172760009765625e1), SC_(0.79858455657958984375e1), SC_(0.1522182099368662078139588491031563608345e0), + SC_(0.1278498172760009765625e1), SC_(0.1571910858154296875e2), SC_(0.1853779722844880544471765776954848178162e0), + SC_(0.1278498172760009765625e1), SC_(0.31483119964599609375e2), SC_(-0.1288757401823690223291744655835744635071e0), + SC_(0.2376763820648193359375e1), SC_(0.553809732082299888134002685546875e-4), SC_(0.5056586192203856045910471595498124462596e-11), + SC_(0.2376763820648193359375e1), SC_(0.69304020144045352935791015625e-4), SC_(0.8616860991796920863644006764866027042152e-11), + SC_(0.2376763820648193359375e1), SC_(0.23264062474481761455535888671875e-3), SC_(0.1532334765930977771102515339639802324861e-9), + SC_(0.2376763820648193359375e1), SC_(0.4480001516640186309814453125e-3), SC_(0.7273828528370972876878238428839518376154e-9), + SC_(0.2376763820648193359375e1), SC_(0.5502865533344447612762451171875e-3), SC_(0.1185860464394239101691199317159293833879e-8), + SC_(0.2376763820648193359375e1), SC_(0.19227224402129650115966796875e-2), SC_(0.2319503797697066104304367743047597833322e-7), + SC_(0.2376763820648193359375e1), SC_(0.37370622158050537109375e-2), SC_(0.1125541303882382369653700619816305958189e-6), + SC_(0.2376763820648193359375e1), SC_(0.47696642577648162841796875e-2), SC_(0.2010004653396484530098091684494825339958e-6), + SC_(0.2376763820648193359375e1), SC_(0.1275280676782131195068359375e-1), SC_(0.2081378683926122164460443936660037148164e-5), + SC_(0.2376763820648193359375e1), SC_(0.20440109074115753173828125e-1), SC_(0.6386871239519502743466959676485268954914e-5), + SC_(0.2376763820648193359375e1), SC_(0.3429813683032989501953125e-1), SC_(0.2185395974871662899753176702325896507127e-4), + SC_(0.2376763820648193359375e1), SC_(0.96701286733150482177734375e-1), SC_(0.25656379472828044772240144209934575006e-3), + SC_(0.2376763820648193359375e1), SC_(0.159812271595001220703125e0), SC_(0.845730449100299183956699628010590519736e-3), + SC_(0.2376763820648193359375e1), SC_(0.297095477581024169921875e0), SC_(0.3674871979280675321301756071429237649275e-2), + SC_(0.2376763820648193359375e1), SC_(0.77344071865081787109375e0), SC_(0.3438496811568474491355241340053475579032e-1), + SC_(0.2376763820648193359375e1), SC_(0.1992881298065185546875e1), SC_(0.2513901336569734693859406681568671211021e0), + SC_(0.2376763820648193359375e1), SC_(0.3915013790130615234375e1), SC_(0.4411924952040898535595925619755816956809e0), + SC_(0.2376763820648193359375e1), SC_(0.79858455657958984375e1), SC_(-0.2273576855576674689369594664643423033118e0), + SC_(0.2376763820648193359375e1), SC_(0.1571910858154296875e2), SC_(0.7438347444997647796963367146274908500004e-1), + SC_(0.2376763820648193359375e1), SC_(0.31483119964599609375e2), SC_(-0.4835996250612980219088832147311470184396e-1), + SC_(0.618752574920654296875e1), SC_(0.553809732082299888134002685546875e-4), SC_(0.6141678216085436111176451400063635126985e-31), + SC_(0.618752574920654296875e1), SC_(0.69304020144045352935791015625e-4), SC_(0.246002051024745363814461774049739325662e-30), + SC_(0.618752574920654296875e1), SC_(0.23264062474481761455535888671875e-3), SC_(0.4416989561874068641789782319112059701685e-27), + SC_(0.618752574920654296875e1), SC_(0.4480001516640186309814453125e-3), SC_(0.2547126098161636865969703324599457436971e-25), + SC_(0.618752574920654296875e1), SC_(0.5502865533344447612762451171875e-3), SC_(0.9092073652119249745125219238269278791216e-25), + SC_(0.618752574920654296875e1), SC_(0.19227224402129650115966796875e-2), SC_(0.2091784753137493653036354140039919926587e-21), + SC_(0.618752574920654296875e1), SC_(0.37370622158050537109375e-2), SC_(0.1277384798655490775905658138944681765305e-19), + SC_(0.618752574920654296875e1), SC_(0.47696642577648162841796875e-2), SC_(0.5780112025030309280393501135304190431747e-19), + SC_(0.618752574920654296875e1), SC_(0.1275280676782131195068359375e-1), SC_(0.2539437786678802679382159611357475659317e-16), + SC_(0.618752574920654296875e1), SC_(0.20440109074115753173828125e-1), SC_(0.4703466931802969431139418828811047045971e-15), + SC_(0.618752574920654296875e1), SC_(0.3429813683032989501953125e-1), SC_(0.1156868416120739652892078422418971652898e-13), + SC_(0.618752574920654296875e1), SC_(0.96701286733150482177734375e-1), SC_(0.7055823940609916725367183770341485771641e-11), + SC_(0.618752574920654296875e1), SC_(0.159812271595001220703125e0), SC_(0.157864460888642548494771779237446860121e-9), + SC_(0.618752574920654296875e1), SC_(0.297095477581024169921875e0), SC_(0.7303821609272158309492823142947445732176e-8), + SC_(0.618752574920654296875e1), SC_(0.77344071865081787109375e0), SC_(0.2672664548632283509874594371971735667516e-5), + SC_(0.618752574920654296875e1), SC_(0.1992881298065185546875e1), SC_(0.8296436579220156802866858143435702375141e-3), + SC_(0.618752574920654296875e1), SC_(0.3915013790130615234375e1), SC_(0.3582497898452286859296846783634361347323e-1), + SC_(0.618752574920654296875e1), SC_(0.79858455657958984375e1), SC_(0.3457617746872806174549271704484687317651e0), + SC_(0.618752574920654296875e1), SC_(0.1571910858154296875e2), SC_(0.2072660158578431354057405902818480142787e0), + SC_(0.618752574920654296875e1), SC_(0.31483119964599609375e2), SC_(-0.1318618402231476532997477360412655763119e0), + SC_(0.15943050384521484375e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.121765325971199235226950916196533478569e-85), + SC_(0.15943050384521484375e2), SC_(0.69304020144045352935791015625e-4), SC_(0.4348529040889526305872634896082273962461e-84), + SC_(0.15943050384521484375e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.1054933471529069744215328306932288735002e-75), + SC_(0.15943050384521484375e2), SC_(0.4480001516640186309814453125e-3), SC_(0.3634957360230243469527303257192252467733e-71), + SC_(0.15943050384521484375e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.9646837024091091333308495040848415220353e-70), + SC_(0.15943050384521484375e2), SC_(0.19227224402129650115966796875e-2), SC_(0.4432877465512047439464155651452389042106e-61), + SC_(0.15943050384521484375e2), SC_(0.37370622158050537109375e-2), SC_(0.1770390010617740019194413844748485420908e-56), + SC_(0.15943050384521484375e2), SC_(0.47696642577648162841796875e-2), SC_(0.8656739708490917931260774639401847905445e-55), + SC_(0.15943050384521484375e2), SC_(0.1275280676782131195068359375e-1), SC_(0.5583631811182531205165895051362489723946e-48), + SC_(0.15943050384521484375e2), SC_(0.20440109074115753173828125e-1), SC_(0.103106565969855434312386168894543598243e-44), + SC_(0.15943050384521484375e2), SC_(0.3429813683032989501953125e-1), SC_(0.3954367464083906354438402796246817522015e-41), + SC_(0.15943050384521484375e2), SC_(0.96701286733150482177734375e-1), SC_(0.5942588953071692102183170727631542245108e-34), + SC_(0.15943050384521484375e2), SC_(0.159812271595001220703125e0), SC_(0.1787692223274770382718402566108351637629e-30), + SC_(0.15943050384521484375e2), SC_(0.297095477581024169921875e0), SC_(0.3508566459949628001757525016826509424779e-26), + SC_(0.15943050384521484375e2), SC_(0.77344071865081787109375e0), SC_(0.1467886618883000652209178210120183048119e-19), + SC_(0.15943050384521484375e2), SC_(0.1992881298065185546875e1), SC_(0.4994542214744224454151505315307238073221e-13), + SC_(0.15943050384521484375e2), SC_(0.3915013790130615234375e1), SC_(0.1997414520429768177432880178694168079225e-8), + SC_(0.15943050384521484375e2), SC_(0.79858455657958984375e1), SC_(0.8220903046865285045445582707996957424813e-4), + SC_(0.15943050384521484375e2), SC_(0.1571910858154296875e2), SC_(0.1635793592300323171799133620913882844268e0), + SC_(0.15943050384521484375e2), SC_(0.31483119964599609375e2), SC_(-0.1436476010691620533772737806011732529468e0), + SC_(0.31320110321044921875e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.720999514635082944998486378462042065548e-177), + SC_(0.31320110321044921875e2), SC_(0.69304020144045352935791015625e-4), SC_(0.8099276041615658852408040879405710425224e-174), + SC_(0.31320110321044921875e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.2401827789365385723264959328048209544024e-157), + SC_(0.31320110321044921875e2), SC_(0.4480001516640186309814453125e-3), SC_(0.1967948222206320595051933567795148903452e-148), + SC_(0.31320110321044921875e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.1233774769381781535909728004063264007336e-145), + SC_(0.31320110321044921875e2), SC_(0.19227224402129650115966796875e-2), SC_(0.1283273428485489536447676425815813056886e-128), + SC_(0.31320110321044921875e2), SC_(0.37370622158050537109375e-2), SC_(0.1405183787621580648869621961084314778533e-119), + SC_(0.31320110321044921875e2), SC_(0.47696642577648162841796875e-2), SC_(0.2926396097007299560785500719585898203219e-116), + SC_(0.31320110321044921875e2), SC_(0.1275280676782131195068359375e-1), SC_(0.6977736543795536782997046101038445558663e-103), + SC_(0.31320110321044921875e2), SC_(0.20440109074115753173828125e-1), SC_(0.1821786218163979826416197870670171130133e-96), + SC_(0.31320110321044921875e2), SC_(0.3429813683032989501953125e-1), SC_(0.1999210450604504410914425432107629502991e-89), + SC_(0.31320110321044921875e2), SC_(0.96701286733150482177734375e-1), SC_(0.251157366530045646437718994576632141369e-75), + SC_(0.31320110321044921875e2), SC_(0.159812271595001220703125e0), SC_(0.1710986365304126142935808274616325811609e-68), + SC_(0.31320110321044921875e2), SC_(0.297095477581024169921875e0), SC_(0.4646227131059059595427604644829875800615e-60), + SC_(0.31320110321044921875e2), SC_(0.77344071865081787109375e0), SC_(0.4784799239708328602598193913379505621018e-47), + SC_(0.31320110321044921875e2), SC_(0.1992881298065185546875e1), SC_(0.3489752451870321457103722660567152768057e-34), + SC_(0.31320110321044921875e2), SC_(0.3915013790130615234375e1), SC_(0.4889245759333297227698619173071154698185e-25), + SC_(0.31320110321044921875e2), SC_(0.79858455657958984375e1), SC_(0.1664515950791679187310431924442476923109e-15), + SC_(0.31320110321044921875e2), SC_(0.1571910858154296875e2), SC_(0.6205404214654629687787121851824504334876e-7), + SC_(0.31320110321044921875e2), SC_(0.31483119964599609375e2), SC_(0.1484545929446900561639094358967123117739e0), + SC_(0.638867645263671875e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.8446839048780569280474710663682619972041e-380), + SC_(0.638867645263671875e2), SC_(0.69304020144045352935791015625e-4), SC_(0.1409702153899462689202357620502522957131e-373), + SC_(0.638867645263671875e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.5609316393869461530695885033806074145071e-340), + SC_(0.638867645263671875e2), SC_(0.4480001516640186309814453125e-3), SC_(0.8523357694224079855215503041727333034429e-322), + SC_(0.638867645263671875e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.4328973281194721121716411716842618698591e-316), + SC_(0.638867645263671875e2), SC_(0.19227224402129650115966796875e-2), SC_(0.2227580314514104775209901151215137968262e-281), + SC_(0.638867645263671875e2), SC_(0.37370622158050537109375e-2), SC_(0.6115485831827422144019763064445038756912e-263), + SC_(0.638867645263671875e2), SC_(0.47696642577648162841796875e-2), SC_(0.3595105306082387449978056548902672235759e-256), + SC_(0.638867645263671875e2), SC_(0.1275280676782131195068359375e-1), SC_(0.6964605680269546994812846826702862289074e-229), + SC_(0.638867645263671875e2), SC_(0.20440109074115753173828125e-1), SC_(0.8547757957801666890816087207766370541757e-216), + SC_(0.638867645263671875e2), SC_(0.3429813683032989501953125e-1), SC_(0.1962390821047959905705920637771295517402e-201), + SC_(0.638867645263671875e2), SC_(0.96701286733150482177734375e-1), SC_(0.1127581411317236750982950580839608146603e-172), + SC_(0.638867645263671875e2), SC_(0.159812271595001220703125e0), SC_(0.9790370659506770228693171342289984428576e-159), + SC_(0.638867645263671875e2), SC_(0.297095477581024169921875e0), SC_(0.1564948684865165000775450621480811627558e-141), + SC_(0.638867645263671875e2), SC_(0.77344071865081787109375e0), SC_(0.5502719787681308363007881451048037707171e-115), + SC_(0.638867645263671875e2), SC_(0.1992881298065185546875e1), SC_(0.9905301122130665466055237290421121475096e-89), + SC_(0.638867645263671875e2), SC_(0.3915013790130615234375e1), SC_(0.5149539828266276213224902637532044041335e-70), + SC_(0.638867645263671875e2), SC_(0.79858455657958984375e1), SC_(0.2564876610067021281696593047029893911603e-50), + SC_(0.638867645263671875e2), SC_(0.1571910858154296875e2), SC_(0.7745090555307013050588237027600011961354e-32), + SC_(0.638867645263671875e2), SC_(0.31483119964599609375e2), SC_(0.7349468722273911955644415269211426919788e-14) + }; +#undef SC_ + + diff --git a/test/bessel_j_int_data.ipp b/test/bessel_j_int_data.ipp new file mode 100644 index 000000000..2646fc4e7 --- /dev/null +++ b/test/bessel_j_int_data.ipp @@ -0,0 +1,235 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 224> bessel_j_int_data = { + SC_(0), SC_(0.1730655412757187150418758392333984375e-5), SC_(0.999999999999251207960573702716351702855e0), + SC_(0), SC_(0.216575062950141727924346923828125e-5), SC_(0.9999999999988273810527038974545295287162e0), + SC_(0), SC_(0.72700195232755504548549652099609375e-5), SC_(0.9999999999867867040328417323221266089012e0), + SC_(0), SC_(0.14000004739500582218170166015625e-4), SC_(0.9999999999509999668240905595691881208684e0), + SC_(0), SC_(0.17196454791701398789882659912109375e-4), SC_(0.9999999999260704856506088935623108659333e0), + SC_(0), SC_(0.60085076256655156612396240234375e-4), SC_(0.9999999990974459030116346626772683432438e0), + SC_(0), SC_(0.116783194243907928466796875e-3), SC_(0.9999999965904213884537241019212664253672e0), + SC_(0), SC_(0.149052008055150508880615234375e-3), SC_(0.9999999944458747313939138453006009257493e0), + SC_(0), SC_(0.3985252114944159984588623046875e-3), SC_(0.9999999602944143449661387732367591439684e0), + SC_(0), SC_(0.63875340856611728668212890625e-3), SC_(0.999999897998523362367123063793585129913e0), + SC_(0), SC_(0.10718167759478092193603515625e-2), SC_(0.999999712802220319854399500739679836503e0), + SC_(0), SC_(0.302191521041095256805419921875e-2), SC_(0.9999977170084182855294667634808613841995e0), + SC_(0), SC_(0.499413348734378814697265625e-2), SC_(0.9999937646673975145784086810883184951737e0), + SC_(0), SC_(0.928423367440700531005859375e-2), SC_(0.9999784508673620039917059777810212577274e0), + SC_(0), SC_(0.241700224578380584716796875e-1), SC_(0.9998539578359781705487991537766139314417e0), + SC_(0), SC_(0.6227754056453704833984375e-1), SC_(0.9990306120021848197073447709696842002313e0), + SC_(0), SC_(0.12234418094158172607421875e0), SC_(0.9962614745793813396644750956695984663693e0), + SC_(0), SC_(0.249557673931121826171875e0), SC_(0.9844907414458467656383892255940207494775e0), + SC_(0), SC_(0.4912221431732177734375e0), SC_(0.9405788968099850208754506401326367253837e0), + SC_(0), SC_(0.98384749889373779296875e0), SC_(0.7722629604360946893704391598535972411534e0), + SC_(0), SC_(0.11576130390167236328125e1), SC_(0.69201921296869073470763460902488953195e0), + SC_(0), SC_(0.3451677799224853515625e1), SC_(-0.3729999217923199419780408144861949608561e0), + SC_(0), SC_(0.788237094879150390625e1), SC_(0.1981996630505566917360863478152806154613e0), + SC_(0), SC_(0.15848876953125e2), SC_(-0.1592255309532503835966920565319209366427e0), + SC_(0.1e1), SC_(0.553809732082299888134002685546875e-4), SC_(0.276904865934989734483098712606972348472e-4), + SC_(0.1e1), SC_(0.69304020144045352935791015625e-4), SC_(0.3465201005121827144301015458593023209872e-4), + SC_(0.1e1), SC_(0.23264062474481761455535888671875e-3), SC_(0.1163203115854777552927670265943683111663e-3), + SC_(0.1e1), SC_(0.4480001516640186309814453125e-3), SC_(0.224000070212291655064298940047799298227e-3), + SC_(0.1e1), SC_(0.5502865533344447612762451171875e-3), SC_(0.2751432662525235957510064043924201271744e-3), + SC_(0.1e1), SC_(0.19227224402129650115966796875e-2), SC_(0.9613607758541307952398436842542503763082e-3), + SC_(0.1e1), SC_(0.37370622158050537109375e-2), SC_(0.1868527846001727517468459203726183793639e-2), + SC_(0.1e1), SC_(0.47696642577648162841796875e-2), SC_(0.2384825347112756329700145763683641710414e-2), + SC_(0.1e1), SC_(0.1275280676782131195068359375e-1), SC_(0.6376273757226442847790070686813990559145e-2), + SC_(0.1e1), SC_(0.20440109074115753173828125e-1), SC_(0.102195208064807658405217565669384689625e-1), + SC_(0.1e1), SC_(0.3429813683032989501953125e-1), SC_(0.1714654684930302330423492169172745899688e-1), + SC_(0.1e1), SC_(0.96701286733150482177734375e-1), SC_(0.4829414868544472860291893155827576361067e-1), + SC_(0.1e1), SC_(0.159812271595001220703125e0), SC_(0.7965130716107429048780909632824084802407e-1), + SC_(0.1e1), SC_(0.297095477581024169921875e0), SC_(0.1469147961900711346572957228234698754028e0), + SC_(0.1e1), SC_(0.77344071865081787109375e0), SC_(0.3585147006385292414727602076757818503575e0), + SC_(0.1e1), SC_(0.1992881298065185546875e1), SC_(0.5771736137851551766101983376499833110574e0), + SC_(0.1e1), SC_(0.3915013790130615234375e1), SC_(-0.3315763536880066424018546732060494035118e-1), + SC_(0.1e1), SC_(0.79858455657958984375e1), SC_(0.2325970018905132078980792992006627584192e0), + SC_(0.1e1), SC_(0.1571910858154296875e2), SC_(0.1373449658609949106151643744232618350175e0), + SC_(0.1e1), SC_(0.31483119964599609375e2), SC_(-0.9230877498012981860222086238303332873573e-1), + SC_(0.4e1), SC_(0.553809732082299888134002685546875e-4), SC_(0.2449689884414968964700618717685524683171e-19), + SC_(0.4e1), SC_(0.69304020144045352935791015625e-4), SC_(0.6007620436965929637530930219443973179641e-19), + SC_(0.4e1), SC_(0.23264062474481761455535888671875e-3), SC_(0.7628005478429104492672012434718507350272e-17), + SC_(0.4e1), SC_(0.4480001516640186309814453125e-3), SC_(0.1049014316653821463646665194851778246401e-15), + SC_(0.4e1), SC_(0.5502865533344447612762451171875e-3), SC_(0.2387945284954097519631184175866877863264e-15), + SC_(0.4e1), SC_(0.19227224402129650115966796875e-2), SC_(0.3559058080985751663501872629042355217152e-13), + SC_(0.4e1), SC_(0.37370622158050537109375e-2), SC_(0.5079135337601192358742525894357081341335e-12), + SC_(0.4e1), SC_(0.47696642577648162841796875e-2), SC_(0.1347781590846459623440987284254345472313e-11), + SC_(0.4e1), SC_(0.1275280676782131195068359375e-1), SC_(0.6887924230376394398803439333202892325557e-10), + SC_(0.4e1), SC_(0.20440109074115753173828125e-1), SC_(0.4545613845374467200233204286239376175147e-9), + SC_(0.4e1), SC_(0.3429813683032989501953125e-1), SC_(0.3603506796835261381553751482886494436605e-8), + SC_(0.4e1), SC_(0.96701286733150482177734375e-1), SC_(0.2276117732048184291309579825404846223101e-6), + SC_(0.4e1), SC_(0.159812271595001220703125e0), SC_(0.1696502961325871806891524286212542749233e-5), + SC_(0.4e1), SC_(0.297095477581024169921875e0), SC_(0.2019926506375704595965844529208340579256e-4), + SC_(0.4e1), SC_(0.77344071865081787109375e0), SC_(0.9043871099795724296870802463629379435165e-3), + SC_(0.4e1), SC_(0.1992881298065185546875e1), SC_(0.3356363239882888737614531598548044804195e-1), + SC_(0.4e1), SC_(0.3915013790130615234375e1), SC_(0.2683403769106168710689421055914199402732e0), + SC_(0.4e1), SC_(0.79858455657958984375e1), SC_(-0.1019714387996719292888771314960256244029e0), + SC_(0.4e1), SC_(0.1571910858154296875e2), SC_(-0.1970617873757679766451608652880933303855e0), + SC_(0.4e1), SC_(0.31483119964599609375e2), SC_(0.1274270375173584709656744808050405443416e0), + SC_(0.7e1), SC_(0.553809732082299888134002685546875e-4), SC_(0.2476758015173796525820991581584477984471e-35), + SC_(0.7e1), SC_(0.69304020144045352935791015625e-4), SC_(0.1190333036597015037788087962950721904204e-34), + SC_(0.7e1), SC_(0.23264062474481761455535888671875e-3), SC_(0.5716870852680826502230510205353692076762e-31), + SC_(0.7e1), SC_(0.4480001516640186309814453125e-3), SC_(0.561444224078444008798450658023844580616e-29), + SC_(0.7e1), SC_(0.5502865533344447612762451171875e-3), SC_(0.2368545839293556062239215049355950751334e-28), + SC_(0.7e1), SC_(0.19227224402129650115966796875e-2), SC_(0.1505828833808392807660517316033033280684e-24), + SC_(0.7e1), SC_(0.37370622158050537109375e-2), SC_(0.1577871390165051118291058054008029867733e-22), + SC_(0.7e1), SC_(0.47696642577648162841796875e-2), SC_(0.8705101764884624738964439520067718158933e-22), + SC_(0.7e1), SC_(0.1275280676782131195068359375e-1), SC_(0.8503500497157549233110373576875716028951e-19), + SC_(0.7e1), SC_(0.20440109074115753173828125e-1), SC_(0.2310661278306557800428208671429361931635e-17), + SC_(0.7e1), SC_(0.3429813683032989501953125e-1), SC_(0.8654405276396266715021848331684138021568e-16), + SC_(0.7e1), SC_(0.96701286733150482177734375e-1), SC_(0.1225344911694889641798963820236998213373e-12), + SC_(0.7e1), SC_(0.159812271595001220703125e0), SC_(0.4123668359663111441088023707096475138751e-11), + SC_(0.7e1), SC_(0.297095477581024169921875e0), SC_(0.3158156744651217917953769670307028606449e-9), + SC_(0.7e1), SC_(0.77344071865081787109375e0), SC_(0.251896150858704683595843840399835306166e-6), + SC_(0.7e1), SC_(0.1992881298065185546875e1), SC_(0.1707853166377511336641576065559156632457e-3), + SC_(0.7e1), SC_(0.3915013790130615234375e1), SC_(0.1335220837033977061080155342538527713965e-1), + SC_(0.7e1), SC_(0.79858455657958984375e1), SC_(0.3197732082032941630469007231253521918143e0), + SC_(0.7e1), SC_(0.1571910858154296875e2), SC_(0.1523464020656448663148336960516768275145e0), + SC_(0.7e1), SC_(0.31483119964599609375e2), SC_(-0.8465752063992111585817831175823765390968e-2), + SC_(0.1e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.7303698611664865207490004658067936181905e-52), + SC_(0.1e2), SC_(0.69304020144045352935791015625e-4), SC_(0.6878936281621022752851314176441951633029e-51), + SC_(0.1e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.1249662001772833555544044498679159797243e-45), + SC_(0.1e2), SC_(0.4480001516640186309814453125e-3), SC_(0.87643279255017773967807642045361302034e-43), + SC_(0.1e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.6852136624817352900940351580328586337538e-42), + SC_(0.1e2), SC_(0.19227224402129650115966796875e-2), SC_(0.185824479115402751843849340758426235854e-36), + SC_(0.1e2), SC_(0.37370622158050537109375e-2), SC_(0.1429684321223564675360504319868530544464e-33), + SC_(0.1e2), SC_(0.47696642577648162841796875e-2), SC_(0.1639890621444124727733839773586431172039e-32), + SC_(0.1e2), SC_(0.1275280676782131195068359375e-1), SC_(0.306191547516836368220168038780704053939e-28), + SC_(0.1e2), SC_(0.20440109074115753173828125e-1), SC_(0.3425823439848955129914050150766420797628e-26), + SC_(0.1e2), SC_(0.3429813683032989501953125e-1), SC_(0.6062205935674056071761047413439550035471e-24), + SC_(0.1e2), SC_(0.96701286733150482177734375e-1), SC_(0.1923832425983654541213096146081906580397e-19), + SC_(0.1e2), SC_(0.159812271595001220703125e0), SC_(0.2922712946223807891584380230043171121063e-17), + SC_(0.1e2), SC_(0.297095477581024169921875e0), SC_(0.143888516723819817784418267406968074987e-14), + SC_(0.1e2), SC_(0.77344071865081787109375e0), SC_(0.2033758816108020473655970022244540004408e-10), + SC_(0.1e2), SC_(0.1992881298065185546875e1), SC_(0.242885590788180736747780657352089100395e-6), + SC_(0.1e2), SC_(0.3915013790130615234375e1), SC_(0.1598475267744058553357687546625030272909e-3), + SC_(0.1e2), SC_(0.79858455657958984375e1), SC_(0.60056972136838046146179075502942356573e-1), + SC_(0.1e2), SC_(0.1571910858154296875e2), SC_(-0.1842232590397531945311647766302288337231e0), + SC_(0.1e2), SC_(0.31483119964599609375e2), SC_(-0.9317261959891319658027121347121001915601e-1), + SC_(0.13e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.90368551918725968389007265700993262299e-69), + SC_(0.13e2), SC_(0.69304020144045352935791015625e-4), SC_(0.1667974085958167624378345556115399941477e-67), + SC_(0.13e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.1146151324192891686284768890985563371943e-60), + SC_(0.13e2), SC_(0.4480001516640186309814453125e-3), SC_(0.5740448587965102107018898696167719687858e-57), + SC_(0.13e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.8317358972729155842535186608238358987262e-56), + SC_(0.13e2), SC_(0.19227224402129650115966796875e-2), SC_(0.9621558980749171469364024498494388216795e-49), + SC_(0.13e2), SC_(0.37370622158050537109375e-2), SC_(0.5435304733189136019244042387714022185558e-45), + SC_(0.13e2), SC_(0.47696642577648162841796875e-2), SC_(0.1296197228784403471129989731886036646855e-43), + SC_(0.13e2), SC_(0.1275280676782131195068359375e-1), SC_(0.4625978489147388510480567448018715189249e-38), + SC_(0.13e2), SC_(0.20440109074115753173828125e-1), SC_(0.2131121530101465666113363379817102327031e-35), + SC_(0.13e2), SC_(0.3429813683032989501953125e-1), SC_(0.1781711933682478816925141204995206372152e-32), + SC_(0.13e2), SC_(0.96701286733150482177734375e-1), SC_(0.1267291457925455878167599468504869327715e-26), + SC_(0.13e2), SC_(0.159812271595001220703125e0), SC_(0.8690870700737698910678361841372229152816e-24), + SC_(0.13e2), SC_(0.297095477581024169921875e0), SC_(0.2749753181518427631420704990495067851464e-20), + SC_(0.13e2), SC_(0.77344071865081787109375e0), SC_(0.6874485945761929731188960123719668004339e-15), + SC_(0.13e2), SC_(0.1992881298065185546875e1), SC_(0.1427954947280088715244535777966915467592e-9), + SC_(0.13e2), SC_(0.3915013790130615234375e1), SC_(0.7548925903672885635112989058254310604162e-6), + SC_(0.13e2), SC_(0.79858455657958984375e1), SC_(0.3214379121675310487741347594390187230881e-2), + SC_(0.13e2), SC_(0.1571910858154296875e2), SC_(0.2562871752817527993867029711304921017067e0), + SC_(0.13e2), SC_(0.31483119964599609375e2), SC_(0.135452434319841135048770973964056570279e0), + SC_(0.16e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.5710443102859793594686693457798971291695e-86), + SC_(0.16e2), SC_(0.69304020144045352935791015625e-4), SC_(0.2065548122783126765855808525012370612477e-84), + SC_(0.16e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.5368702794457035352466622003877382747158e-76), + SC_(0.16e2), SC_(0.4480001516640186309814453125e-3), SC_(0.1920220273734407205690092457873836811378e-71), + SC_(0.16e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.5156118426330840464377189920132922032504e-70), + SC_(0.16e2), SC_(0.19227224402129650115966796875e-2), SC_(0.2544286257456308178600141145465753228241e-61), + SC_(0.16e2), SC_(0.37370622158050537109375e-2), SC_(0.1055323568504563665150514946643052879562e-56), + SC_(0.16e2), SC_(0.47696642577648162841796875e-2), SC_(0.5232452376007528048513570920264122109991e-55), + SC_(0.16e2), SC_(0.1275280676782131195068359375e-1), SC_(0.3569372759580808303489639154371020886878e-48), + SC_(0.16e2), SC_(0.20440109074115753173828125e-1), SC_(0.6770631088264124985080490485409279874034e-45), + SC_(0.16e2), SC_(0.3429813683032989501953125e-1), SC_(0.2674369558860517619389933396711866115561e-41), + SC_(0.16e2), SC_(0.96701286733150482177734375e-1), SC_(0.4263407059281994448315250268426546365419e-34), + SC_(0.16e2), SC_(0.159812271595001220703125e0), SC_(0.1319773345595717550011326018119444329018e-30), + SC_(0.16e2), SC_(0.297095477581024169921875e0), SC_(0.2683325671969811781305622600203263139886e-26), + SC_(0.16e2), SC_(0.77344071865081787109375e0), SC_(0.1185527072917230718908112159994283095826e-19), + SC_(0.16e2), SC_(0.1992881298065185546875e1), SC_(0.4257913764415272936226850400127709560274e-13), + SC_(0.16e2), SC_(0.3915013790130615234375e1), SC_(0.1770596374018406424364588196143722326332e-8), + SC_(0.16e2), SC_(0.79858455657958984375e1), SC_(0.7609462131466514170142031981046135155552e-4), + SC_(0.16e2), SC_(0.1571910858154296875e2), SC_(0.1598242323049512757290685523586043599273e0), + SC_(0.16e2), SC_(0.31483119964599609375e2), SC_(-0.146616929844240669724265072627562678578e0), + SC_(0.19e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.2085386435150050836259354457009000018077e-103), + SC_(0.19e2), SC_(0.69304020144045352935791015625e-4), SC_(0.1478242165594325382694493377958682108845e-101), + SC_(0.19e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.1453319211512903213205953436626128066329e-91), + SC_(0.19e2), SC_(0.4480001516640186309814453125e-3), SC_(0.3712107285598227397108662690263089748287e-86), + SC_(0.19e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.1847245305223723518947855245367191928343e-84), + SC_(0.19e2), SC_(0.19227224402129650115966796875e-2), SC_(0.3888219252235519964245528947552171853277e-74), + SC_(0.19e2), SC_(0.37370622158050537109375e-2), SC_(0.1184163364577840228862020640686836979404e-68), + SC_(0.19e2), SC_(0.47696642577648162841796875e-2), SC_(0.1220685316325757321764623390231984663671e-66), + SC_(0.19e2), SC_(0.1275280676782131195068359375e-1), SC_(0.1591638310631743076506768378115511870553e-58), + SC_(0.19e2), SC_(0.20440109074115753173828125e-1), SC_(0.1243123177590827411934225161624922624915e-54), + SC_(0.19e2), SC_(0.3429813683032989501953125e-1), SC_(0.2319899218435133188992825576466373416419e-50), + SC_(0.19e2), SC_(0.96701286733150482177734375e-1), SC_(0.8288911503438383816925041924523248045712e-42), + SC_(0.19e2), SC_(0.159812271595001220703125e0), SC_(0.115821498784548972023307498969902449394e-37), + SC_(0.19e2), SC_(0.297095477581024169921875e0), SC_(0.1513146789392266259407994247748973151373e-32), + SC_(0.19e2), SC_(0.77344071865081787109375e0), SC_(0.1180867041363348335303085045154147913528e-24), + SC_(0.19e2), SC_(0.1992881298065185546875e1), SC_(0.7309651660473666120687072805302589654808e-17), + SC_(0.19e2), SC_(0.3915013790130615234375e1), SC_(0.2364159870071755910484486348587559990813e-11), + SC_(0.19e2), SC_(0.79858455657958984375e1), SC_(0.9689789089192189055495551850283928885267e-6), + SC_(0.19e2), SC_(0.1571910858154296875e2), SC_(0.28988183636629975718412063879767316272e-1), + SC_(0.19e2), SC_(0.31483119964599609375e2), SC_(0.1404351655526923900119491455044344208598e0), + SC_(0.22e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.4791884438276096956171867526066745487233e-121), + SC_(0.22e2), SC_(0.69304020144045352935791015625e-4), SC_(0.6656698862399030252104289006319409158079e-119), + SC_(0.22e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.2475458914860796896424360165211198402136e-107), + SC_(0.22e2), SC_(0.4480001516640186309814453125e-3), SC_(0.4515366894275771826117281426200239790956e-101), + SC_(0.22e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.4164178287432561100733955741346219769583e-99), + SC_(0.22e2), SC_(0.19227224402129650115966796875e-2), SC_(0.3738854595795469765521076338466195179729e-87), + SC_(0.22e2), SC_(0.37370622158050537109375e-2), SC_(0.8360661820524098792008512761880716972576e-81), + SC_(0.22e2), SC_(0.47696642577648162841796875e-2), SC_(0.1791864672483119204014438872980421431477e-78), + SC_(0.22e2), SC_(0.1275280676782131195068359375e-1), SC_(0.4465806266019354303051149660509529893234e-69), + SC_(0.22e2), SC_(0.20440109074115753173828125e-1), SC_(0.1436157691171859834871864549854120137171e-64), + SC_(0.22e2), SC_(0.3429813683032989501953125e-1), SC_(0.1266250352189026976463935184908537726894e-59), + SC_(0.22e2), SC_(0.96701286733150482177734375e-1), SC_(0.1014002264944669915985752126502534659735e-49), + SC_(0.22e2), SC_(0.159812271595001220703125e0), SC_(0.6395517348407679453466968468982951315152e-45), + SC_(0.22e2), SC_(0.297095477581024169921875e0), SC_(0.5368707332343228506070497601994580522396e-39), + SC_(0.22e2), SC_(0.77344071865081787109375e0), SC_(0.7398504152815100288293238816236231544857e-30), + SC_(0.22e2), SC_(0.1992881298065185546875e1), SC_(0.7877708523407809449378036883914301743673e-21), + SC_(0.22e2), SC_(0.3915013790130615234375e1), SC_(0.1968332845994952491334209201789498977283e-14), + SC_(0.22e2), SC_(0.79858455657958984375e1), SC_(0.7448464245775065475039475038584227288619e-8), + SC_(0.22e2), SC_(0.1571910858154296875e2), SC_(0.253851170309502550500960913045849958251e-2), + SC_(0.22e2), SC_(0.31483119964599609375e2), SC_(-0.8447893849187497539115391467530479019211e-1), + SC_(0.25e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.7372571830959398154087818458405571713543e-139), + SC_(0.25e2), SC_(0.69304020144045352935791015625e-4), SC_(0.2007082018704239928877827931765826257223e-136), + SC_(0.25e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.282321085875648461583736420544653624557e-123), + SC_(0.25e2), SC_(0.4480001516640186309814453125e-3), SC_(0.3677548883718449906250285120192357358526e-116), + SC_(0.25e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.6285313494759937735919237336354498066612e-114), + SC_(0.25e2), SC_(0.19227224402129650115966796875e-2), SC_(0.240723943542042702532722602099509196343e-100), + SC_(0.25e2), SC_(0.37370622158050537109375e-2), SC_(0.3952415336587423864493642493686435620558e-93), + SC_(0.25e2), SC_(0.47696642577648162841796875e-2), SC_(0.1761163090097583722535523692248334183587e-90), + SC_(0.25e2), SC_(0.1275280676782131195068359375e-1), SC_(0.838973477506519849649546640592049467827e-80), + SC_(0.25e2), SC_(0.20440109074115753173828125e-1), SC_(0.1110920317250862811627432685131862921107e-74), + SC_(0.25e2), SC_(0.3429813683032989501953125e-1), SC_(0.4627673735504195531564801614260252853823e-69), + SC_(0.25e2), SC_(0.96701286733150482177734375e-1), SC_(0.830561324288197807079744142399604541678e-58), + SC_(0.25e2), SC_(0.159812271595001220703125e0), SC_(0.236456302063194497551168460901108346276e-52), + SC_(0.25e2), SC_(0.297095477581024169921875e0), SC_(0.1275371942824651350612111302983155850293e-45), + SC_(0.25e2), SC_(0.77344071865081787109375e0), SC_(0.3103000869941400473392593242837244578633e-35), + SC_(0.25e2), SC_(0.1992881298065185546875e1), SC_(0.5676014969386446596753686198525691279888e-25), + SC_(0.25e2), SC_(0.3915013790130615234375e1), SC_(0.1090825721430814617531511126945649824391e-17), + SC_(0.25e2), SC_(0.79858455657958984375e1), SC_(0.3734200809691738263209576777640843925841e-10), + SC_(0.25e2), SC_(0.1571910858154296875e2), SC_(0.1291120784936711314245621877597952164143e-3), + SC_(0.25e2), SC_(0.31483119964599609375e2), SC_(-0.7461962297933840624621930608252220218503e-1), + SC_(0.28e2), SC_(0.553809732082299888134002685546875e-4), SC_(0.7963713582106584412097140308116466491608e-157), + SC_(0.28e2), SC_(0.69304020144045352935791015625e-4), SC_(0.4248692230753312125913578638497606609336e-154), + SC_(0.28e2), SC_(0.23264062474481761455535888671875e-3), SC_(0.2260553821923174448109780057299133388939e-139), + SC_(0.28e2), SC_(0.4480001516640186309814453125e-3), SC_(0.2102847637959861796417097898716140319015e-131), + SC_(0.28e2), SC_(0.5502865533344447612762451171875e-3), SC_(0.6660525810149796134788024971104638208402e-129), + SC_(0.28e2), SC_(0.19227224402129650115966796875e-2), SC_(0.108813792122284445419802118573486294617e-113), + SC_(0.28e2), SC_(0.37370622158050537109375e-2), SC_(0.1311802444742152354234077144037248874522e-105), + SC_(0.28e2), SC_(0.47696642577648162841796875e-2), SC_(0.1215284288581256977996490020569407519253e-102), + SC_(0.28e2), SC_(0.1275280676782131195068359375e-1), SC_(0.1106574120737639697400622354620027455407e-90), + SC_(0.28e2), SC_(0.20440109074115753173828125e-1), SC_(0.6033198112217245150379653252026122716124e-85), + SC_(0.28e2), SC_(0.3429813683032989501953125e-1), SC_(0.1187379908091547229246861752037218903857e-78), + SC_(0.28e2), SC_(0.96701286733150482177734375e-1), SC_(0.4776253533970672888906190995310047058597e-66), + SC_(0.28e2), SC_(0.159812271595001220703125e0), SC_(0.6137721383009946630525985606230109474371e-60), + SC_(0.28e2), SC_(0.297095477581024169921875e0), SC_(0.2127051389870186274825552068510907743209e-52), + SC_(0.28e2), SC_(0.77344071865081787109375e0), SC_(0.9135584911756594671676404048881870523782e-41), + SC_(0.28e2), SC_(0.1992881298065185546875e1), SC_(0.2868280579406050057547310818758384973257e-29), + SC_(0.28e2), SC_(0.3915013790130615234375e1), SC_(0.4227077578718476642466348871890940509389e-21), + SC_(0.28e2), SC_(0.79858455657958984375e1), SC_(0.1291218836633488658985438527652338235293e-12), + SC_(0.28e2), SC_(0.1571910858154296875e2), SC_(0.4222984862431763788622725393431592171924e-5), + SC_(0.28e2), SC_(0.31483119964599609375e2), SC_(0.1996895117755311022877682593279374977116e0) + }; +#undef SC_ + + diff --git a/test/bessel_j_large_data.ipp b/test/bessel_j_large_data.ipp new file mode 100644 index 000000000..28867761e --- /dev/null +++ b/test/bessel_j_large_data.ipp @@ -0,0 +1,81 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 70> bessel_j_large_data = { + SC_(0.725889492034912109375e1), SC_(0.725889492034912109375e1), SC_(0.2307850131230964328215158373258970201933e0), + SC_(0.725889492034912109375e1), SC_(0.90838165283203125e1), SC_(0.331270090805281544869225081474258975783e0), + SC_(0.725889492034912109375e1), SC_(0.30492671966552734375e2), SC_(0.1392044369140870127137144436194280008198e0), + SC_(0.725889492034912109375e1), SC_(0.5872027587890625e2), SC_(-0.1034372792561996393994604565745500159306e0), + SC_(0.725889492034912109375e1), SC_(0.7212715911865234375e2), SC_(-0.7703453431004507456085858477671512851731e-1), + SC_(0.725889492034912109375e1), SC_(0.25201507568359375e3), SC_(0.1959284506006571693892495807977692143684e-1), + SC_(0.725889492034912109375e1), SC_(0.48982421875e3), SC_(0.3554545809249573170321495025893136154241e-1), + SC_(0.725889492034912109375e1), SC_(0.62516943359375e3), SC_(-0.2922687275543058917680294015955588486854e-1), + SC_(0.725889492034912109375e1), SC_(0.1671535888671875e4), SC_(0.1607375857460556311523938125070882107754e-1), + SC_(0.725889492034912109375e1), SC_(0.26791259765625e4), SC_(-0.1488078416329900906439423002725322373542e-1), + SC_(0.725889492034912109375e1), SC_(0.4495525390625e4), SC_(-0.1140024419570086978904733358200459324628e-1), + SC_(0.725889492034912109375e1), SC_(0.126748310546875e5), SC_(-0.3122722904155054704789731376588374939888e-2), + SC_(0.725889492034912109375e1), SC_(0.209469140625e5), SC_(0.3655895534999378610724150587348023983602e-2), + SC_(0.725889492034912109375e1), SC_(0.389408984375e5), SC_(-0.1325113645945403697015197310014126427368e-2), + SC_(0.90838165283203125e1), SC_(0.725889492034912109375e1), SC_(0.6868013625729672215673766261089739717914e-1), + SC_(0.90838165283203125e1), SC_(0.90838165283203125e1), SC_(0.2142196934269988501665220845763503388042e0), + SC_(0.90838165283203125e1), SC_(0.30492671966552734375e2), SC_(-0.6854165161240333873733646364329358362341e-1), + SC_(0.90838165283203125e1), SC_(0.5872027587890625e2), SC_(0.9706365272921634392020123576878096972323e-1), + SC_(0.90838165283203125e1), SC_(0.7212715911865234375e2), SC_(0.4318373430471325672009672522183904089517e-1), + SC_(0.90838165283203125e1), SC_(0.25201507568359375e3), SC_(-0.3323948817558893756314993595448795803537e-2), + SC_(0.90838165283203125e1), SC_(0.48982421875e3), SC_(-0.3208784009186279824559250801925804018465e-1), + SC_(0.90838165283203125e1), SC_(0.62516943359375e3), SC_(0.2415910850536018880522735141575176512777e-1), + SC_(0.90838165283203125e1), SC_(0.1671535888671875e4), SC_(-0.1232973481208096922064985021712946282434e-1), + SC_(0.90838165283203125e1), SC_(0.26791259765625e4), SC_(0.1541293552432680038181584370193664107473e-1), + SC_(0.90838165283203125e1), SC_(0.4495525390625e4), SC_(0.1002388002178436742775036807597412212988e-1), + SC_(0.90838165283203125e1), SC_(0.126748310546875e5), SC_(0.4739251557631330719337662497765662043458e-2), + SC_(0.90838165283203125e1), SC_(0.209469140625e5), SC_(-0.4641170982395964367850932352617365960394e-2), + SC_(0.90838165283203125e1), SC_(0.389408984375e5), SC_(0.2364161829230146293999578445914286938024e-3), + SC_(0.30492671966552734375e2), SC_(0.725889492034912109375e1), SC_(0.5389197635915806233390841938474448086338e-16), + SC_(0.30492671966552734375e2), SC_(0.90838165283203125e1), SC_(0.3952459558161787055937696735475346378253e-13), + SC_(0.30492671966552734375e2), SC_(0.30492671966552734375e2), SC_(0.1431568992863962918440953734528390055733e0), + SC_(0.30492671966552734375e2), SC_(0.5872027587890625e2), SC_(0.8578089143574435265609743500241838450074e-1), + SC_(0.30492671966552734375e2), SC_(0.7212715911865234375e2), SC_(0.1410641386118672963443531500494113618346e-1), + SC_(0.30492671966552734375e2), SC_(0.25201507568359375e3), SC_(-0.2831444492336412069372220459848882424058e-1), + SC_(0.30492671966552734375e2), SC_(0.48982421875e3), SC_(-0.2314909531023927534092551249336846514091e-1), + SC_(0.30492671966552734375e2), SC_(0.62516943359375e3), SC_(0.2170848675622913630936132875332654675284e-1), + SC_(0.30492671966552734375e2), SC_(0.1671535888671875e4), SC_(-0.9325685551001457451901386831696429723505e-2), + SC_(0.30492671966552734375e2), SC_(0.26791259765625e4), SC_(-0.6947960924639771467867037818061032165711e-2), + SC_(0.30492671966552734375e2), SC_(0.4495525390625e4), SC_(0.2522782171073615304290664333918949926448e-3), + SC_(0.30492671966552734375e2), SC_(0.126748310546875e5), SC_(-0.7032986459719800448169085872312178500116e-2), + SC_(0.30492671966552734375e2), SC_(0.209469140625e5), SC_(0.5122201654532113914038286303179605549787e-2), + SC_(0.30492671966552734375e2), SC_(0.389408984375e5), SC_(0.3118763746002366768916876665037341197225e-2), + SC_(0.5872027587890625e2), SC_(0.725889492034912109375e1), SC_(0.1355459268067898658151384249990581267605e-46), + SC_(0.5872027587890625e2), SC_(0.90838165283203125e1), SC_(0.6263805301401313877353888242546513061021e-41), + SC_(0.5872027587890625e2), SC_(0.30492671966552734375e2), SC_(0.1202543691751492070742433226952612421088e-11), + SC_(0.5872027587890625e2), SC_(0.5872027587890625e2), SC_(0.1150759176943336800292116211528794948354e0), + SC_(0.5872027587890625e2), SC_(0.7212715911865234375e2), SC_(-0.1047430440042659670890981946453377232975e-2), + SC_(0.5872027587890625e2), SC_(0.25201507568359375e3), SC_(-0.4086747435836167042364362710950743904056e-1), + SC_(0.5872027587890625e2), SC_(0.48982421875e3), SC_(-0.8183965550065315841115618961272005737216e-2), + SC_(0.5872027587890625e2), SC_(0.62516943359375e3), SC_(0.2146006391006581305906226294562488601133e-1), + SC_(0.5872027587890625e2), SC_(0.1671535888671875e4), SC_(-0.1521907719127834149642973426124244709606e-1), + SC_(0.5872027587890625e2), SC_(0.26791259765625e4), SC_(-0.5359901862639028443437495673595828567149e-2), + SC_(0.5872027587890625e2), SC_(0.4495525390625e4), SC_(-0.6687847432133282099926443966258547872974e-3), + SC_(0.5872027587890625e2), SC_(0.126748310546875e5), SC_(-0.7023133406228636526878960014610930229604e-2), + SC_(0.5872027587890625e2), SC_(0.209469140625e5), SC_(0.5494684780269989275230320303506992388372e-2), + SC_(0.5872027587890625e2), SC_(0.389408984375e5), SC_(0.2133199464416083487500787075862183481877e-2), + SC_(0.7212715911865234375e2), SC_(0.725889492034912109375e1), SC_(0.18957209567263693085259721077483394587e-63), + SC_(0.7212715911865234375e2), SC_(0.90838165283203125e1), SC_(0.18129450849783963899751662717930347867e-56), + SC_(0.7212715911865234375e2), SC_(0.30492671966552734375e2), SC_(0.799552979179394942566748705329500029705e-20), + SC_(0.7212715911865234375e2), SC_(0.5872027587890625e2), SC_(0.1552366431895120369074625091623203198931e-3), + SC_(0.7212715911865234375e2), SC_(0.7212715911865234375e2), SC_(0.1074534531973475595081469483471348487375e0), + SC_(0.7212715911865234375e2), SC_(0.25201507568359375e3), SC_(-0.4021841759432511100331858349923571437074e-1), + SC_(0.7212715911865234375e2), SC_(0.48982421875e3), SC_(-0.2170518020212747257681494905588835722404e-1), + SC_(0.7212715911865234375e2), SC_(0.62516943359375e3), SC_(0.3200282452240180595697263016953209545847e-1), + SC_(0.7212715911865234375e2), SC_(0.1671535888671875e4), SC_(0.1388345457492732160509267345077835744377e-1), + SC_(0.7212715911865234375e2), SC_(0.26791259765625e4), SC_(-0.1211552634023650615661641900044154973817e-1), + SC_(0.7212715911865234375e2), SC_(0.4495525390625e4), SC_(-0.1044260623905249384981833094590727496255e-1), + SC_(0.7212715911865234375e2), SC_(0.126748310546875e5), SC_(0.4589655631278176598474380175755836047107e-2), + SC_(0.7212715911865234375e2), SC_(0.209469140625e5), SC_(-0.2719723241223086004132685612975137005354e-2), + SC_(0.7212715911865234375e2), SC_(0.389408984375e5), SC_(-0.4035830877477336799210808243472842844322e-2) + }; +#undef SC_ + + diff --git a/test/bessel_k_data.ipp b/test/bessel_k_data.ipp new file mode 100644 index 000000000..9c465cfed --- /dev/null +++ b/test/bessel_k_data.ipp @@ -0,0 +1,274 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 263> bessel_k_data = { + SC_(-0.8049192047119140625e2), SC_(0.24750102996826171875e2), SC_(0.6579017807810652710369517871806355927214e29), + SC_(-0.8049192047119140625e2), SC_(0.637722015380859375e2), SC_(0.2395518238062557960566710371847643552469e-8), + SC_(-0.8049192047119140625e2), SC_(0.1252804412841796875e3), SC_(0.3069043255911758700865294859650240330974e-44), + SC_(-0.8049192047119140625e2), SC_(0.25554705810546875e3), SC_(0.2303430936664631154413247069375132759954e-106), + SC_(-0.8049192047119140625e2), SC_(0.503011474609375e3), SC_(0.1203148508747254149682895744594491240807e-216), + SC_(-0.8049192047119140625e2), SC_(0.10074598388671875e4), SC_(0.2865368119939400701179862849573503322931e-437), + SC_(-0.8049192047119140625e2), SC_(0.1185395751953125e4), SC_(0.8632633219300624004437758135158135952472e-515), + SC_(-0.8049192047119140625e2), SC_(0.353451806640625e4), SC_(0.5013665804582944405266048580134316878986e-1536), + SC_(-0.8049192047119140625e2), SC_(0.80715478515625e4), SC_(0.7765547631230743133384730763696548377855e-3507), + SC_(-0.8049192047119140625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.639546878366615050472401588575857541732e-7050)), + SC_(-0.8049192047119140625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5074028894875745794984647078151040612894e-13928)), + SC_(-0.8049192047119140625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2862328185162412476566225413964872968853e-15796)), + SC_(-0.7460263824462890625e2), SC_(0.24750102996826171875e2), SC_(0.1194046640827563151857444163209777353211e25), + SC_(-0.7460263824462890625e2), SC_(0.637722015380859375e2), SC_(0.5818966684329205041972653154218173748165e-11), + SC_(-0.7460263824462890625e2), SC_(0.1252804412841796875e3), SC_(0.9892143938422535628101195141323126645363e-46), + SC_(-0.7460263824462890625e2), SC_(0.25554705810546875e3), SC_(0.3972603961730133195379956336197334288476e-107), + SC_(-0.7460263824462890625e2), SC_(0.503011474609375e3), SC_(0.4874624060193139320406839502988832481089e-217), + SC_(-0.7460263824462890625e2), SC_(0.10074598388671875e4), SC_(0.1822212069789909176095875838528811873338e-437), + SC_(-0.7460263824462890625e2), SC_(0.1185395751953125e4), SC_(0.5875055967970574458131259176159286617499e-515), + SC_(-0.7460263824462890625e2), SC_(0.353451806640625e4), SC_(0.4406079158432466047722722836894011978239e-1536), + SC_(-0.7460263824462890625e2), SC_(0.80715478515625e4), SC_(0.7338395057162425548486505792810413989371e-3507), + SC_(-0.7460263824462890625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6218012346099611746045494400088987852165e-7050)), + SC_(-0.7460263824462890625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5002276251033884106325883264873018499132e-13928)), + SC_(-0.7460263824462890625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2826609186886966995318007844162294906315e-15796)), + SC_(-0.7290460205078125e2), SC_(0.24750102996826171875e2), SC_(0.5561803915497248563365929946842781443078e23), + SC_(-0.7290460205078125e2), SC_(0.637722015380859375e2), SC_(0.1094524924593545154904194423989731358977e-11), + SC_(-0.7290460205078125e2), SC_(0.1252804412841796875e3), SC_(0.3839300658689373815830761148374331937154e-46), + SC_(-0.7290460205078125e2), SC_(0.25554705810546875e3), SC_(0.2451728941031062427272665484306743376086e-107), + SC_(-0.7290460205078125e2), SC_(0.503011474609375e3), SC_(0.3804541047790449891831659262615119819112e-217), + SC_(-0.7290460205078125e2), SC_(0.10074598388671875e4), SC_(0.1609485041764832205733383613676089003386e-437), + SC_(-0.7290460205078125e2), SC_(0.1185395751953125e4), SC_(0.5286617461619307606407976695028744909355e-515), + SC_(-0.7290460205078125e2), SC_(0.353451806640625e4), SC_(0.4252727041870810007272294050962600690759e-1536), + SC_(-0.7290460205078125e2), SC_(0.80715478515625e4), SC_(0.7225421446583687935214716001980501582795e-3507), + SC_(-0.7290460205078125e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.617021607511078284203431245617539588877e-7050)), + SC_(-0.7290460205078125e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4982778020141303245214047263053056397026e-13928)), + SC_(-0.7290460205078125e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.281689238316161921546343371679087454574e-15796)), + SC_(-0.62323604583740234375e2), SC_(0.24750102996826171875e2), SC_(0.6745183967776568226882524708487938056875e15), + SC_(-0.62323604583740234375e2), SC_(0.637722015380859375e2), SC_(0.6545311734942178902723924532558287624952e-16), + SC_(-0.62323604583740234375e2), SC_(0.1252804412841796875e3), SC_(0.1656532226161521639805764466363495194113e-48), + SC_(-0.62323604583740234375e2), SC_(0.25554705810546875e3), SC_(0.1547673376370412380297419400250693508513e-108), + SC_(-0.62323604583740234375e2), SC_(0.503011474609375e3), SC_(0.9227214789189674273358185346965399203582e-218), + SC_(-0.62323604583740234375e2), SC_(0.10074598388671875e4), SC_(0.7918944121135532385395798829085145544592e-438), + SC_(-0.62323604583740234375e2), SC_(0.1185395751953125e4), SC_(0.2892810675468518815348991889357281331268e-515), + SC_(-0.62323604583740234375e2), SC_(0.353451806640625e4), SC_(0.3473597010045323910900283230401929551928e-1536), + SC_(-0.62323604583740234375e2), SC_(0.80715478515625e4), SC_(0.6612598699249681198531835080793951126635e-3507), + SC_(-0.62323604583740234375e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5904134813790360951037473338098849774904e-7050)), + SC_(-0.62323604583740234375e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4872840764596854116092324404256445242957e-13928)), + SC_(-0.62323604583740234375e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2762021177708928645685587252784589095343e-15796)), + SC_(-0.5579319000244140625e2), SC_(0.24750102996826171875e2), SC_(0.2000280553692923364816391845858003081304e11), + SC_(-0.5579319000244140625e2), SC_(0.637722015380859375e2), SC_(0.3011072877774196098095590001850230113398e-18), + SC_(-0.5579319000244140625e2), SC_(0.1252804412841796875e3), SC_(0.8546927999408637677019436633377190577324e-50), + SC_(-0.5579319000244140625e2), SC_(0.25554705810546875e3), SC_(0.3476662826409067664561159567913234387987e-109), + SC_(-0.5579319000244140625e2), SC_(0.503011474609375e3), SC_(0.4297054501709256270968786489029298481091e-218), + SC_(-0.5579319000244140625e2), SC_(0.10074598388671875e4), SC_(0.5402417605668363705190262971682628012869e-438), + SC_(-0.5579319000244140625e2), SC_(0.1185395751953125e4), SC_(0.2089958153703015756026346516755670166549e-515), + SC_(-0.5579319000244140625e2), SC_(0.353451806640625e4), SC_(0.3114579751849795632507912984614279046035e-1536), + SC_(-0.5579319000244140625e2), SC_(0.80715478515625e4), SC_(0.6304085854717380067005364169553964460527e-3507), + SC_(-0.5579319000244140625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5765486071511390988466247681614919123209e-7050)), + SC_(-0.5579319000244140625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4814584754866145181310357527683878612407e-13928)), + SC_(-0.5579319000244140625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2732885595625837213661882188978422888301e-15796)), + SC_(-0.4430035400390625e2), SC_(0.95070552825927734375e1), SC_(0.5693602607646284460254541471864922205948e23), + SC_(-0.4430035400390625e2), SC_(0.24750102996826171875e2), SC_(0.1242729664484783369574386233140179346878e4), + SC_(-0.4430035400390625e2), SC_(0.637722015380859375e2), SC_(0.7993412663367930219134100562570886747324e-22), + SC_(-0.4430035400390625e2), SC_(0.1252804412841796875e3), SC_(0.9881485422320279470670535583393602847552e-52), + SC_(-0.4430035400390625e2), SC_(0.25554705810546875e3), SC_(0.3730073474257981229404066713919938526343e-110), + SC_(-0.4430035400390625e2), SC_(0.503011474609375e3), SC_(0.1373667058825755035108658858704836181807e-218), + SC_(-0.4430035400390625e2), SC_(0.10074598388671875e4), SC_(0.3053981542547827391176412965629715685693e-438), + SC_(-0.4430035400390625e2), SC_(0.1185395751953125e4), SC_(0.1286946967513954764039399072385367798007e-515), + SC_(-0.4430035400390625e2), SC_(0.353451806640625e4), SC_(0.2646904138441718084112297837143320157831e-1536), + SC_(-0.4430035400390625e2), SC_(0.80715478515625e4), SC_(0.5870517224916429591472211129863301372511e-3507), + SC_(-0.4430035400390625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.556473689966344568142116011084377141557e-7050)), + SC_(-0.4430035400390625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4728995700926201307193816855831797459788e-13928)), + SC_(-0.4430035400390625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2690004084585417033992798959421396256472e-15796)), + SC_(-0.383665924072265625e2), SC_(0.51139926910400390625e1), SC_(0.4971541960447850485036217351908812317262e28), + SC_(-0.383665924072265625e2), SC_(0.95070552825927734375e1), SC_(0.1514361321039985388396503732421720671137e18), + SC_(-0.383665924072265625e2), SC_(0.24750102996826171875e2), SC_(0.6394950974987836910026204697203193967018e0), + SC_(-0.383665924072265625e2), SC_(0.637722015380859375e2), SC_(0.2193338639829460198350749734782436371427e-23), + SC_(-0.383665924072265625e2), SC_(0.1252804412841796875e3), SC_(0.1453511701396794997715829292555274995485e-52), + SC_(-0.383665924072265625e2), SC_(0.25554705810546875e3), SC_(0.143713375904389446480817449936644081692e-110), + SC_(-0.383665924072265625e2), SC_(0.503011474609375e3), SC_(0.8444454506176474868328821803019802033188e-219), + SC_(-0.383665924072265625e2), SC_(0.10074598388671875e4), SC_(0.2394533298546757062831171384270888559283e-438), + SC_(-0.383665924072265625e2), SC_(0.1185395751953125e4), SC_(0.1046548965046943506923715763697928376188e-515), + SC_(-0.383665924072265625e2), SC_(0.353451806640625e4), SC_(0.2469489195756011361369232839149459989988e-1536), + SC_(-0.383665924072265625e2), SC_(0.80715478515625e4), SC_(0.5694829422897774445672362912138934152265e-3507), + SC_(-0.383665924072265625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5481275253120409890933948754020554435422e-7050)), + SC_(-0.383665924072265625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4692963862579519130682539614682894698339e-13928)), + SC_(-0.383665924072265625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2671924165871110012794803086242495185922e-15796)), + SC_(0.93762989044189453125e1), SC_(0.7444499991834163665771484375e-2), SC_(0.2721057737406919258362851434733030661109e28), + SC_(0.93762989044189453125e1), SC_(0.1433600485324859619140625e-1), SC_(0.5838623563730079614571930542897504652141e25), + SC_(0.93762989044189453125e1), SC_(0.1760916970670223236083984375e-1), SC_(0.8489946048751590475608166482859224225092e24), + SC_(0.93762989044189453125e1), SC_(0.6152711808681488037109375e-1), SC_(0.6830571091090551343461028048390799816461e19), + SC_(0.93762989044189453125e1), SC_(0.11958599090576171875e0), SC_(0.1343359009110053824259990283998636373658e17), + SC_(0.93762989044189453125e1), SC_(0.15262925624847412109375e0), SC_(0.1363284485271480815886779689298289259733e16), + SC_(0.93762989044189453125e1), SC_(0.408089816570281982421875e0), SC_(0.134259416566970599290007837647461336503e12), + SC_(0.93762989044189453125e1), SC_(0.6540834903717041015625e0), SC_(0.1597975002045160572672179531598793911004e10), + SC_(0.93762989044189453125e1), SC_(0.1097540378570556640625e1), SC_(0.1218600558373790598620257006463817375794e8), + SC_(0.93762989044189453125e1), SC_(0.30944411754608154296875e1), SC_(0.5737745231574650911405694300067785689295e3), + SC_(0.93762989044189453125e1), SC_(0.51139926910400390625e1), SC_(0.3246966656549353778987348015527776300809e1), + SC_(0.93762989044189453125e1), SC_(0.95070552825927734375e1), SC_(0.19259552888384324744815873080876780038e-2), + SC_(0.93762989044189453125e1), SC_(0.24750102996826171875e2), SC_(0.2504648183075237600300430416689758405566e-10), + SC_(0.93762989044189453125e1), SC_(0.637722015380859375e2), SC_(0.6244803648310629601249155899182438184287e-28), + SC_(0.93762989044189453125e1), SC_(0.1252804412841796875e3), SC_(0.6191446466751584500204805922395171337903e-55), + SC_(0.93762989044189453125e1), SC_(0.25554705810546875e3), SC_(0.9682463471616540956204871299762767140143e-112), + SC_(0.93762989044189453125e1), SC_(0.503011474609375e3), SC_(0.2137809921466214788678904652498781109907e-219), + SC_(0.93762989044189453125e1), SC_(0.10074598388671875e4), SC_(0.1205266421458943045615585394077333566019e-438), + SC_(0.93762989044189453125e1), SC_(0.1185395751953125e4), SC_(0.5839106645002418157495951205762502056769e-516), + SC_(0.93762989044189453125e1), SC_(0.353451806640625e4), SC_(0.2030427297652053795158460484630149203489e-1536), + SC_(0.93762989044189453125e1), SC_(0.80715478515625e4), SC_(0.5226939353263804188411440085354658326468e-3507), + SC_(0.93762989044189453125e1), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5252465465326302525711470608778783375618e-7050)), + SC_(0.93762989044189453125e1), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4592768866982000517622013128091807640282e-13928)), + SC_(0.93762989044189453125e1), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2621561909115651489224577641835193518283e-15796)), + SC_(0.944411754608154296875e1), SC_(0.7444499991834163665771484375e-2), SC_(0.4612303621288630783177800069821634006522e28), + SC_(0.944411754608154296875e1), SC_(0.1433600485324859619140625e-1), SC_(0.9466510890632728074237180634479345051875e25), + SC_(0.944411754608154296875e1), SC_(0.1760916970670223236083984375e-1), SC_(0.1357461344862089559034023564527191961687e25), + SC_(0.944411754608154296875e1), SC_(0.6152711808681488037109375e-1), SC_(0.1003303142080314424800411457172597807663e20), + SC_(0.944411754608154296875e1), SC_(0.11958599090576171875e0), SC_(0.1886231320842499600375267715822147672472e17), + SC_(0.944411754608154296875e1), SC_(0.15262925624847412109375e0), SC_(0.188280089386461382126468384112433440471e16), + SC_(0.944411754608154296875e1), SC_(0.408089816570281982421875e0), SC_(0.1734646534584651712744606645408188786047e12), + SC_(0.944411754608154296875e1), SC_(0.6540834903717041015625e0), SC_(0.199971824633020007858878828667253874034e10), + SC_(0.944411754608154296875e1), SC_(0.1097540378570556640625e1), SC_(0.1472636215284163281676380655271707289138e8), + SC_(0.944411754608154296875e1), SC_(0.30944411754608154296875e1), SC_(0.647535838284923144345128491044954961457e3), + SC_(0.944411754608154296875e1), SC_(0.51139926910400390625e1), SC_(0.3553277729257552005521728768120656012587e1), + SC_(0.944411754608154296875e1), SC_(0.95070552825927734375e1), SC_(0.2040071094456773692563150515108671359582e-2), + SC_(0.944411754608154296875e1), SC_(0.24750102996826171875e2), SC_(0.2567440825871508188288207680932556974655e-10), + SC_(0.944411754608154296875e1), SC_(0.637722015380859375e2), SC_(0.6306907593710430642478969958415511608599e-28), + SC_(0.944411754608154296875e1), SC_(0.1252804412841796875e3), SC_(0.6222912130499996900925885235524244670356e-55), + SC_(0.944411754608154296875e1), SC_(0.25554705810546875e3), SC_(0.9706621439129537561340645836040221175143e-112), + SC_(0.944411754608154296875e1), SC_(0.503011474609375e3), SC_(0.2140521102843204219804606886329697019218e-219), + SC_(0.944411754608154296875e1), SC_(0.10074598388671875e4), SC_(0.1206029763999953146275755740805060498224e-438), + SC_(0.944411754608154296875e1), SC_(0.1185395751953125e4), SC_(0.5842249762482709543785194262081511657188e-516), + SC_(0.944411754608154296875e1), SC_(0.353451806640625e4), SC_(0.2030793889519787363418582358670409448464e-1536), + SC_(0.944411754608154296875e1), SC_(0.80715478515625e4), SC_(0.5227352618739306325665664939206185443367e-3507), + SC_(0.944411754608154296875e1), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5252672007246779268718011077113001418501e-7050)), + SC_(0.944411754608154296875e1), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.459286027254970380991295408755149756266e-13928)), + SC_(0.944411754608154296875e1), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2621607912254129949405484094002130635557e-15796)), + SC_(0.264718532562255859375e2), SC_(0.30944411754608154296875e1), SC_(0.3138027209961995689508888198752860190762e21), + SC_(0.264718532562255859375e2), SC_(0.51139926910400390625e1), SC_(0.4476324433882455541710673350842360857005e15), + SC_(0.264718532562255859375e2), SC_(0.95070552825927734375e1), SC_(0.1797701745980331951453531906793951728351e8), + SC_(0.264718532562255859375e2), SC_(0.24750102996826171875e2), SC_(0.1853961961302356637784495895011492126184e-5), + SC_(0.264718532562255859375e2), SC_(0.637722015380859375e2), SC_(0.6846626929866392127688041786664525681184e-26), + SC_(0.264718532562255859375e2), SC_(0.1252804412841796875e3), SC_(0.7007081484985308886329921570722300664339e-54), + SC_(0.264718532562255859375e2), SC_(0.25554705810546875e3), SC_(0.3200441114843926372066668842735553862582e-111), + SC_(0.264718532562255859375e2), SC_(0.503011474609375e3), SC_(0.3928255814072251732422205624746319957713e-219), + SC_(0.264718532562255859375e2), SC_(0.10074598388671875e4), SC_(0.1633431966531690433140682468944903891714e-438), + SC_(0.264718532562255859375e2), SC_(0.1185395751953125e4), SC_(0.7560629628467314221548665586213495324071e-516), + SC_(0.264718532562255859375e2), SC_(0.353451806640625e4), SC_(0.2214280876600389182130706966921584688308e-1536), + SC_(0.264718532562255859375e2), SC_(0.80715478515625e4), SC_(0.5429172542806217828545213979048536079656e-3507), + SC_(0.264718532562255859375e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5352575470018113610063179994677083114284e-7050)), + SC_(0.264718532562255859375e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4636866635489855424809660555450541152793e-13928)), + SC_(0.264718532562255859375e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2643743165267396396035797763057882346377e-15796)), + SC_(0.62944732666015625e2), SC_(0.24750102996826171875e2), SC_(0.1881615957650121835951151459881112433642e16), + SC_(0.62944732666015625e2), SC_(0.637722015380859375e2), SC_(0.1119984019082018571198103341652740655437e-15), + SC_(0.62944732666015625e2), SC_(0.1252804412841796875e3), SC_(0.2231352378794206033018221030703217338878e-48), + SC_(0.62944732666015625e2), SC_(0.25554705810546875e3), SC_(0.1798990817823353758503389738709281233441e-108), + SC_(0.62944732666015625e2), SC_(0.503011474609375e3), SC_(0.996645616647744895755158621634872080052e-218), + SC_(0.62944732666015625e2), SC_(0.10074598388671875e4), SC_(0.8230359935387643787461157397598595672318e-438), + SC_(0.62944732666015625e2), SC_(0.1185395751953125e4), SC_(0.2989238946471756510957437745632191274437e-515), + SC_(0.62944732666015625e2), SC_(0.353451806640625e4), SC_(0.3512034003208095136837320409364102048508e-1536), + SC_(0.62944732666015625e2), SC_(0.80715478515625e4), SC_(0.6644545217571422485174738283493212729231e-3507), + SC_(0.62944732666015625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5918304376897943519364581212285760132986e-7050)), + SC_(0.62944732666015625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4878756153781530982084716360839760780792e-13928)), + SC_(0.62944732666015625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2764977329940568590368972098475304997089e-15796)), + SC_(0.67001708984375e2), SC_(0.24750102996826171875e2), SC_(0.1757647753992712633411465211149383976276e19), + SC_(0.67001708984375e2), SC_(0.637722015380859375e2), SC_(0.4154340476824965842042958242696691352995e-14), + SC_(0.67001708984375e2), SC_(0.1252804412841796875e3), SC_(0.1670237943823919787558085338623229345138e-47), + SC_(0.67001708984375e2), SC_(0.25554705810546875e3), SC_(0.498292972015574678613637170399151819008e-108), + SC_(0.67001708984375e2), SC_(0.503011474609375e3), SC_(0.16798665586593853126389607640525271824e-217), + SC_(0.67001708984375e2), SC_(0.10074598388671875e4), SC_(0.1068843553462207539802876852120126159371e-437), + SC_(0.67001708984375e2), SC_(0.1185395751953125e4), SC_(0.3732889925210086644082342106707283321478e-515), + SC_(0.67001708984375e2), SC_(0.353451806640625e4), SC_(0.3783910172802151361859098458404374020052e-1536), + SC_(0.67001708984375e2), SC_(0.80715478515625e4), SC_(0.6865103783696347817927096681584785305085e-3507), + SC_(0.67001708984375e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6015210836405717718928078795712448330673e-7050)), + SC_(0.67001708984375e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4919025754419690182073132779957366712633e-13928)), + SC_(0.67001708984375e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2785090394166165242891428442540272849689e-15796)), + SC_(0.8115838623046875e2), SC_(0.24750102996826171875e2), SC_(0.2324073088339678621147409396324732999963e30), + SC_(0.8115838623046875e2), SC_(0.637722015380859375e2), SC_(0.4837827210750428522126700812080085686173e-8), + SC_(0.8115838623046875e2), SC_(0.1252804412841796875e3), SC_(0.4594264686055687077550409988148757821966e-44), + SC_(0.8115838623046875e2), SC_(0.25554705810546875e3), SC_(0.2833330148811881793898662192076717416668e-106), + SC_(0.8115838623046875e2), SC_(0.503011474609375e3), SC_(0.1338396381867003597313054226031862608662e-216), + SC_(0.8115838623046875e2), SC_(0.10074598388671875e4), SC_(0.3022491925648536051406776884375450576521e-437), + SC_(0.8115838623046875e2), SC_(0.1185395751953125e4), SC_(0.9033480738287476948124079020084554369235e-515), + SC_(0.8115838623046875e2), SC_(0.353451806640625e4), SC_(0.509064318997321343171662382751489914207e-1536), + SC_(0.8115838623046875e2), SC_(0.80715478515625e4), SC_(0.7817541885759932491771910816986777412753e-3507), + SC_(0.8115838623046875e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.641673078077478782785017874716473833835e-7050)), + SC_(0.8115838623046875e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5082559642711766692197944021073471381169e-13928)), + SC_(0.8115838623046875e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2866570865715865919392615432142045181677e-15796)), + SC_(0.826751708984375e2), SC_(0.637722015380859375e2), SC_(0.2433991751428157267576270898319088542731e-7), + SC_(0.826751708984375e2), SC_(0.1252804412841796875e3), SC_(0.1163543281808651892214225743779071494397e-43), + SC_(0.826751708984375e2), SC_(0.25554705810546875e3), SC_(0.4566929184599502585539208159658295553088e-106), + SC_(0.826751708984375e2), SC_(0.503011474609375e3), SC_(0.1711152047141484938876244759615327721674e-216), + SC_(0.826751708984375e2), SC_(0.10074598388671875e4), SC_(0.3418546552853844882451811321181419188818e-437), + SC_(0.826751708984375e2), SC_(0.1185395751953125e4), SC_(0.1003047492936821319442367382054853866129e-514), + SC_(0.826751708984375e2), SC_(0.353451806640625e4), SC_(0.5272736092096344411527859246178125271135e-1536), + SC_(0.826751708984375e2), SC_(0.80715478515625e4), SC_(0.7938803272826403099037784228659554176949e-3507), + SC_(0.826751708984375e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6466043665396298360019348958169487245916e-7050)), + SC_(0.826751708984375e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5102291405695378889093263053607260918263e-13928)), + SC_(0.826751708984375e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2876381032836693648306723630952201558894e-15796)), + SC_(0.9150136566162109375e2), SC_(0.637722015380859375e2), SC_(0.4529077292464217597597948585815203283964e-3), + SC_(0.9150136566162109375e2), SC_(0.1252804412841796875e3), SC_(0.350642591754902750250314160055299520222e-41), + SC_(0.9150136566162109375e2), SC_(0.25554705810546875e3), SC_(0.8700616972854344814927244483121769950875e-105), + SC_(0.9150136566162109375e2), SC_(0.503011474609375e3), SC_(0.7816646797077293163816105964438544637339e-216), + SC_(0.9150136566162109375e2), SC_(0.10074598388671875e4), SC_(0.7321805895040821980280295179421030138686e-437), + SC_(0.9150136566162109375e2), SC_(0.1185395751953125e4), SC_(0.1916743519112958612938166592106183128909e-514), + SC_(0.9150136566162109375e2), SC_(0.353451806640625e4), SC_(0.6553297924375392696631080233904592409428e-1536), + SC_(0.9150136566162109375e2), SC_(0.80715478515625e4), SC_(0.8731920655533864492797505716863887075778e-3507), + SC_(0.9150136566162109375e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6779648490610206356859880361410662474219e-7050)), + SC_(0.9150136566162109375e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5226073790697475866503341992543667357366e-13928)), + SC_(0.9150136566162109375e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2937821135047504313538653046960400698576e-15796)), + SC_(0.9297769927978515625e2), SC_(0.637722015380859375e2), SC_(0.2514159824708407029519182952938261461039e-2), + SC_(0.9297769927978515625e2), SC_(0.1252804412841796875e3), SC_(0.9571910315928452948496436653664936091399e-41), + SC_(0.9297769927978515625e2), SC_(0.25554705810546875e3), SC_(0.1464962376552961548773813405449012101125e-104), + SC_(0.9297769927978515625e2), SC_(0.503011474609375e3), SC_(0.102289622788229900557470609045948505245e-215), + SC_(0.9297769927978515625e2), SC_(0.10074598388671875e4), SC_(0.8379350403930188404501970121630099171596e-437), + SC_(0.9297769927978515625e2), SC_(0.1185395751953125e4), SC_(0.2149730062284109979164130574050367445585e-514), + SC_(0.9297769927978515625e2), SC_(0.353451806640625e4), SC_(0.6810640416069074949832134642840700061677e-1536), + SC_(0.9297769927978515625e2), SC_(0.80715478515625e4), SC_(0.8880475416546418613925474382495752636196e-3507), + SC_(0.9297769927978515625e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6836772391670514269657537156841197891453e-7050)), + SC_(0.9297769927978515625e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5248314285242353145777820274280636896797e-13928)), + SC_(0.9297769927978515625e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2948841983584072578394887812793739973464e-15796)), + SC_(0.935389862060546875e2), SC_(0.637722015380859375e2), SC_(0.4848538332206214872114685461457208526682e-2), + SC_(0.935389862060546875e2), SC_(0.1252804412841796875e3), SC_(0.1407357631531569552447817697356939114967e-40), + SC_(0.935389862060546875e2), SC_(0.25554705810546875e3), SC_(0.1789644517979726575647466756527040582949e-104), + SC_(0.935389862060546875e2), SC_(0.503011474609375e3), SC_(0.1134297740334902791076613679075967354327e-215), + SC_(0.935389862060546875e2), SC_(0.10074598388671875e4), SC_(0.8825347981316688657305249314794392766025e-437), + SC_(0.935389862060546875e2), SC_(0.1185395751953125e4), SC_(0.2246641303550294973758291904185796545436e-514), + SC_(0.935389862060546875e2), SC_(0.353451806640625e4), SC_(0.6912227290322635031334137954308461354241e-1536), + SC_(0.935389862060546875e2), SC_(0.80715478515625e4), SC_(0.893824833574208599253272536219631346374e-3507), + SC_(0.935389862060546875e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6858858035128739755837136827347333728619e-7050)), + SC_(0.935389862060546875e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5256888449089264657997112108384303458607e-13928)), + SC_(0.935389862060546875e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2953089268910496653492909777451085521704e-15796)), + SC_(0.937735595703125e2), SC_(0.637722015380859375e2), SC_(0.6385107666034147877046020721409920794724e-2), + SC_(0.937735595703125e2), SC_(0.1252804412841796875e3), SC_(0.1654344599410448916584423239120073465608e-40), + SC_(0.937735595703125e2), SC_(0.25554705810546875e3), SC_(0.1946478889917254423807361997687268337342e-104), + SC_(0.937735595703125e2), SC_(0.503011474609375e3), SC_(0.1184592506913226623646749833739806823329e-215), + SC_(0.937735595703125e2), SC_(0.10074598388671875e4), SC_(0.901953355688788108549058088701948794206e-437), + SC_(0.937735595703125e2), SC_(0.1185395751953125e4), SC_(0.2288605393501964892215062020117435573162e-514), + SC_(0.937735595703125e2), SC_(0.353451806640625e4), SC_(0.6955313792142442148137724010444647419301e-1536), + SC_(0.937735595703125e2), SC_(0.80715478515625e4), SC_(0.8962607682372740535877231935882633914515e-3507), + SC_(0.937735595703125e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6868148706801060740839033435132304040165e-7050)), + SC_(0.937735595703125e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.526049123050695967902464958981106803334e-13928)), + SC_(0.937735595703125e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.295487369292694824273684043549849890813e-15796)), + SC_(0.98576263427734375e2), SC_(0.637722015380859375e2), SC_(0.1990227834888151454373307286008775674612e1), + SC_(0.98576263427734375e2), SC_(0.1252804412841796875e3), SC_(0.4894424029224796393682491693146694616972e-39), + SC_(0.98576263427734375e2), SC_(0.25554705810546875e3), SC_(0.1136170375675789312265821779116321329958e-103), + SC_(0.98576263427734375e2), SC_(0.503011474609375e3), SC_(0.2948452830082071500214646231076147090724e-215), + SC_(0.98576263427734375e2), SC_(0.10074598388671875e4), SC_(0.1425279255280814495079497699158457698546e-436), + SC_(0.98576263427734375e2), SC_(0.1185395751953125e4), SC_(0.3377080491094056336148164895290399079231e-514), + SC_(0.98576263427734375e2), SC_(0.353451806640625e4), SC_(0.7926042309665472483589245698365986058321e-1536), + SC_(0.98576263427734375e2), SC_(0.80715478515625e4), SC_(0.9490411542227230445519501560068255751126e-3507), + SC_(0.98576263427734375e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.706642352671901713112325219552778166628e-7050)), + SC_(0.98576263427734375e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5336813326314223870941968492332354768707e-13928)), + SC_(0.98576263427734375e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2992641523816122158711374925214774085881e-15796)), + SC_(0.99292266845703125e2), SC_(0.637722015380859375e2), SC_(0.4765079470941391660151554471287672030993e1), + SC_(0.99292266845703125e2), SC_(0.1252804412841796875e3), SC_(0.8211475782164329588746473557436288828796e-39), + SC_(0.99292266845703125e2), SC_(0.25554705810546875e3), SC_(0.1488689678947819908654123225405437300755e-103), + SC_(0.99292266845703125e2), SC_(0.503011474609375e3), SC_(0.3390847523037554808868465852319867472935e-215), + SC_(0.99292266845703125e2), SC_(0.10074598388671875e4), SC_(0.1528876974454391292968555182897209684705e-436), + SC_(0.99292266845703125e2), SC_(0.1185395751953125e4), SC_(0.3584703400837929375694495921804618033184e-514), + SC_(0.99292266845703125e2), SC_(0.353451806640625e4), SC_(0.8086451033245101399967163404205099861285e-1536), + SC_(0.99292266845703125e2), SC_(0.80715478515625e4), SC_(0.9574060247932829286311891259694070669118e-3507), + SC_(0.99292266845703125e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.7097333247638353953239893327006028051669e-7050)), + SC_(0.99292266845703125e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5348615672629262632704311334792898428533e-13928)), + SC_(0.99292266845703125e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.299847616599843593158654409241939580736e-15796)) + }; +#undef SC_ + + diff --git a/test/bessel_k_int_data.ipp b/test/bessel_k_int_data.ipp new file mode 100644 index 000000000..3aa34db4e --- /dev/null +++ b/test/bessel_k_int_data.ipp @@ -0,0 +1,492 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 481> bessel_k_int_data = { + SC_(0), SC_(0.177219114266335964202880859375e-2), SC_(0.6451475930592273598846015135698055330078e1), + SC_(0), SC_(0.22177286446094512939453125e-2), SC_(0.6227212142001190939808570915268231760654e1), + SC_(0), SC_(0.7444499991834163665771484375e-2), SC_(0.5016294646816679195434588077252051358532e1), + SC_(0), SC_(0.1433600485324859619140625e-1), SC_(0.4361188048817122598222684820956136285199e1), + SC_(0), SC_(0.1760916970670223236083984375e-1), SC_(0.4155666670689396106825982497779831275659e1), + SC_(0), SC_(0.6152711808681488037109375e-1), SC_(0.2907904688572973437220285912023264651352e1), + SC_(0), SC_(0.11958599090576171875e0), SC_(0.2251245456228397094716239150833833783688e1), + SC_(0), SC_(0.15262925624847412109375e0), SC_(0.2013151217079277922721039040650374928823e1), + SC_(0), SC_(0.408089816570281982421875e0), SC_(0.1097070466164341232251948278975330916289e1), + SC_(0), SC_(0.6540834903717041015625e0), SC_(0.7111296101768869724219672824880816154124e0), + SC_(0), SC_(0.1097540378570556640625e1), SC_(0.3668587200933656003255821289886727335553e0), + SC_(0), SC_(0.30944411754608154296875e1), SC_(0.3115344887529544812621292520040581803004e-1), + SC_(0), SC_(0.51139926910400390625e1), SC_(0.325805941096065330441380826151925706171e-2), + SC_(0), SC_(0.95070552825927734375e1), SC_(0.2983575249299677934623174911041338567643e-4), + SC_(0), SC_(0.24750102996826171875e2), SC_(0.4469793219985647671692938809730755521561e-11), + SC_(0), SC_(0.637722015380859375e2), SC_(0.3154890666025357981487513910165521100024e-28), + SC_(0), SC_(0.1252804412841796875e3), SC_(0.4365986153732310357450484955539750321993e-55), + SC_(0), SC_(0.25554705810546875e3), SC_(0.8155212353606568575514680314443449984517e-112), + SC_(0), SC_(0.503011474609375e3), SC_(0.1959094651632950581341362431434333187503e-219), + SC_(0), SC_(0.10074598388671875e4), SC_(0.1153834312978712202246739136605238163053e-438), + SC_(0), SC_(0.1185395751953125e4), SC_(0.5626632279469502957817365401058836530616e-516), + SC_(0), SC_(0.353451806640625e4), SC_(0.2005335541692877275070776095045572408221e-1536), + SC_(0), SC_(0.80715478515625e4), SC_(0.5198552672839385593247348234265735246569e-3507), + SC_(0), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5238258665687646932029547633274667132227e-7050)), + SC_(0), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4586477351514513511787402593637142120047e-13928)), + SC_(0), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.261839521735852199886433084148333502408e-15796)), + SC_(0.1e1), SC_(0.177219114266335964202880859375e-2), SC_(0.5642670589050394493876757991354791444425e3), + SC_(0.1e1), SC_(0.22177286446094512939453125e-2), SC_(0.4509043336519153776882032141395071321111e3), + SC_(0.1e1), SC_(0.7444499991834163665771484375e-2), SC_(0.134306823034307382114643500755390513023e3), + SC_(0.1e1), SC_(0.1433600485324859619140625e-1), SC_(0.6971959660478877278042038844910522107511e2), + SC_(0.1e1), SC_(0.1760916970670223236083984375e-1), SC_(0.5674760507791176149484792894248541539452e2), + SC_(0.1e1), SC_(0.6152711808681488037109375e-1), SC_(0.1614820987046735392831380358603921129883e2), + SC_(0.1e1), SC_(0.11958599090576171875e0), SC_(0.8197998310985025401124448473235927713019e1), + SC_(0.1e1), SC_(0.15262925624847412109375e0), SC_(0.6360645272530455596559051797225101283072e1), + SC_(0.1e1), SC_(0.408089816570281982421875e0), SC_(0.2132196083017461631334167216825680193136e1), + SC_(0.1e1), SC_(0.6540834903717041015625e0), SC_(0.1156576280544243110905012085298289192381e1), + SC_(0.1e1), SC_(0.1097540378570556640625e1), SC_(0.5118042111815067840711185047380239515098e0), + SC_(0.1e1), SC_(0.30944411754608154296875e1), SC_(0.3587084607310022256777513946093825420136e-1), + SC_(0.1e1), SC_(0.51139926910400390625e1), SC_(0.3563402139499414445927612094054750431128e-2), + SC_(0.1e1), SC_(0.95070552825927734375e1), SC_(0.3136737811772098452264479387949931309609e-4), + SC_(0.1e1), SC_(0.24750102996826171875e2), SC_(0.4559214298385623744840433425339909113277e-11), + SC_(0.1e1), SC_(0.637722015380859375e2), SC_(0.3179530807904064450989433716351000642288e-28), + SC_(0.1e1), SC_(0.1252804412841796875e3), SC_(0.4383376507619551733740470932900485417799e-55), + SC_(0.1e1), SC_(0.25554705810546875e3), SC_(0.8171153185119733731907215700781324087313e-112), + SC_(0.1e1), SC_(0.503011474609375e3), SC_(0.1961041051464076987061687841817509806692e-219), + SC_(0.1e1), SC_(0.10074598388671875e4), SC_(0.1154406816332980455168031108997781743075e-438), + SC_(0.1e1), SC_(0.1185395751953125e4), SC_(0.5629005093195648507075346585433996324305e-516), + SC_(0.1e1), SC_(0.353451806640625e4), SC_(0.2005619200413067947685927551685795058075e-1536), + SC_(0.1e1), SC_(0.80715478515625e4), SC_(0.5198874692343800657182245260803672831532e-3507), + SC_(0.1e1), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5238420046465533380647381293479454296805e-7050)), + SC_(0.1e1), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4586548866666827230215894859840049327748e-13928)), + SC_(0.1e1), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2618431215775737825097728016673681678693e-15796)), + SC_(0.4e1), SC_(0.177219114266335964202880859375e-2), SC_(0.4866299979081122714121229096210700191518e13), + SC_(0.4e1), SC_(0.22177286446094512939453125e-2), SC_(0.1984300471606527742059001282352526315267e13), + SC_(0.4e1), SC_(0.7444499991834163665771484375e-2), SC_(0.1562777308081462787649352118638441640974e11), + SC_(0.4e1), SC_(0.1433600485324859619140625e-1), SC_(0.1136373878031891372753785993664350977306e10), + SC_(0.4e1), SC_(0.1760916970670223236083984375e-1), SC_(0.4991999111548545244274999181282075933079e9), + SC_(0.4e1), SC_(0.6152711808681488037109375e-1), SC_(0.3348404754435542940391088463548015493779e7), + SC_(0.4e1), SC_(0.11958599090576171875e0), SC_(0.2344242859197388683851101586642876973144e6), + SC_(0.4e1), SC_(0.15262925624847412109375e0), SC_(0.882769652248796999251835414827424137219e5), + SC_(0.4e1), SC_(0.408089816570281982421875e0), SC_(0.1706913744135878990186254129470637633145e4), + SC_(0.4e1), SC_(0.6540834903717041015625e0), SC_(0.2531380187689981167427802188655172652219e3), + SC_(0.4e1), SC_(0.1097540378570556640625e1), SC_(0.2998821965908379171336639130797038553785e2), + SC_(0.4e1), SC_(0.30944411754608154296875e1), SC_(0.2600800540545786927103321191355308119242e0), + SC_(0.4e1), SC_(0.51139926910400390625e1), SC_(0.1310113816036379606520481730426498313864e-1), + SC_(0.4e1), SC_(0.95070552825927734375e1), SC_(0.6590536459344845745057389826071914812742e-4), + SC_(0.4e1), SC_(0.24750102996826171875e2), SC_(0.6133030556661369892325048452149519811279e-11), + SC_(0.4e1), SC_(0.637722015380859375e2), SC_(0.3572958141609371155661279310848429937317e-28), + SC_(0.4e1), SC_(0.1252804412841796875e3), SC_(0.4652677436708263229732006683514849916063e-55), + SC_(0.4e1), SC_(0.25554705810546875e3), SC_(0.8414034107282798661333568860302936388064e-112), + SC_(0.4e1), SC_(0.503011474609375e3), SC_(0.1990470027325467302112278177698801722237e-219), + SC_(0.4e1), SC_(0.10074598388671875e4), SC_(0.1163028521762409349244231951145594725638e-438), + SC_(0.4e1), SC_(0.1185395751953125e4), SC_(0.5664717578847921482243142747309256970705e-516), + SC_(0.4e1), SC_(0.353451806640625e4), SC_(0.2009878898832100717589398352424725806132e-1536), + SC_(0.4e1), SC_(0.80715478515625e4), SC_(0.5203707379166988887861124229263216602351e-3507), + SC_(0.4e1), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5240841354827504548639257799260351864794e-7050)), + SC_(0.4e1), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4587621727772824151475167382626737854669e-13928)), + SC_(0.4e1), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2618971251427177592957235690575280827847e-15796)), + SC_(0.7e1), SC_(0.177219114266335964202880859375e-2), SC_(0.8393410852610954393527641216972580532522e24), + SC_(0.7e1), SC_(0.22177286446094512939453125e-2), SC_(0.1746439477339240202017380879835593298264e24), + SC_(0.7e1), SC_(0.7444499991834163665771484375e-2), SC_(0.3636325329423526419455515218262149164257e20), + SC_(0.7e1), SC_(0.1433600485324859619140625e-1), SC_(0.3702642450648513536507007355077838785335e18), + SC_(0.7e1), SC_(0.1760916970670223236083984375e-1), SC_(0.8776769778941284214793226696145517599417e17), + SC_(0.7e1), SC_(0.6152711808681488037109375e-1), SC_(0.1380314199659804887833132363429985792775e14), + SC_(0.7e1), SC_(0.11958599090576171875e0), SC_(0.1316714319257667815497187929741473396631e12), + SC_(0.7e1), SC_(0.15262925624847412109375e0), SC_(0.2385758315216153945368410974902013750543e11), + SC_(0.7e1), SC_(0.408089816570281982421875e0), SC_(0.2427787443092239173513776098900037902893e8), + SC_(0.7e1), SC_(0.6540834903717041015625e0), SC_(0.8837961864361020779649458889083260267903e6), + SC_(0.7e1), SC_(0.1097540378570556640625e1), SC_(0.2284960408772201116356019420915711713484e5), + SC_(0.7e1), SC_(0.30944411754608154296875e1), SC_(0.115430121001405235617754789786436933495e2), + SC_(0.7e1), SC_(0.51139926910400390625e1), SC_(0.1855200551723818627257578663296940991293e0), + SC_(0.7e1), SC_(0.95070552825927734375e1), SC_(0.3209697242000963916775210833432692821492e-3), + SC_(0.7e1), SC_(0.24750102996826171875e2), SC_(0.117317638217852819641984018466983384411e-10), + SC_(0.7e1), SC_(0.637722015380859375e2), SC_(0.4617273805283495366784436206553361766215e-28), + SC_(0.7e1), SC_(0.1252804412841796875e3), SC_(0.530463977506128210095346164740795780716e-55), + SC_(0.7e1), SC_(0.25554705810546875e3), SC_(0.8974052085234798283338593957917220800683e-112), + SC_(0.7e1), SC_(0.503011474609375e3), SC_(0.2056776608251995281157685677374180807283e-219), + SC_(0.7e1), SC_(0.10074598388671875e4), SC_(0.1182223532524629470705848948269762593562e-438), + SC_(0.7e1), SC_(0.1185395751953125e4), SC_(0.5744084382473215145583083888149374566061e-516), + SC_(0.7e1), SC_(0.353451806640625e4), SC_(0.2019282105175847423689110847031244713335e-1536), + SC_(0.7e1), SC_(0.80715478515625e4), SC_(0.5214355108270690028322792158847712991209e-3507), + SC_(0.7e1), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5246172173384328966498809821165883204056e-7050)), + SC_(0.7e1), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4589982905651508483373540209643329865296e-13928)), + SC_(0.7e1), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.262015972194351617452666405333559675244e-15796)), + SC_(0.1e2), SC_(0.7444499991834163665771484375e-2), SC_(0.3553669112260589679559369394169552207558e30), + SC_(0.1e2), SC_(0.1433600485324859619140625e-1), SC_(0.5066979194966296085342168261220876180382e27), + SC_(0.1e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6480976752277127998631768393896823291736e26), + SC_(0.1e2), SC_(0.6152711808681488037109375e-1), SC_(0.2389580098055959485819366060615251558358e21), + SC_(0.1e2), SC_(0.11958599090576171875e0), SC_(0.3104970025126176531421165865660207446979e18), + SC_(0.1e2), SC_(0.15262925624847412109375e0), SC_(0.2706288504370378982033987546887060486023e17), + SC_(0.1e2), SC_(0.408089816570281982421875e0), SC_(0.1443666691816396300812633872636237266303e13), + SC_(0.1e2), SC_(0.6540834903717041015625e0), SC_(0.1280984206792023020920423547804293082128e11), + SC_(0.1e2), SC_(0.1097540378570556640625e1), SC_(0.7084777398701569213628979833632335112045e8), + SC_(0.1e2), SC_(0.30944411754608154296875e1), SC_(0.1776330561989790884945591902602612974108e4), + SC_(0.1e2), SC_(0.51139926910400390625e1), SC_(0.7561612211922255925715297223843141543753e1), + SC_(0.1e2), SC_(0.95070552825927734375e1), SC_(0.3312175747188703924731868316016670207045e-2), + SC_(0.1e2), SC_(0.24750102996826171875e2), SC_(0.316549186060196510142326275566270329916e-10), + SC_(0.1e2), SC_(0.637722015380859375e2), SC_(0.6858066547220214894850727219918188844372e-28), + SC_(0.1e2), SC_(0.1252804412841796875e3), SC_(0.6495845884366965264198113958373840112253e-55), + SC_(0.1e2), SC_(0.25554705810546875e3), SC_(0.991362504515590864892065541409133961701e-112), + SC_(0.1e2), SC_(0.503011474609375e3), SC_(0.2163618208760250177914928622296114388901e-219), + SC_(0.1e2), SC_(0.10074598388671875e4), SC_(0.1212513333490346230839551955991649038227e-438), + SC_(0.1e2), SC_(0.1185395751953125e4), SC_(0.586893431857951347227749283812742380563e-516), + SC_(0.1e2), SC_(0.353451806640625e4), SC_(0.2033900929893989288120221591878316666532e-1536), + SC_(0.1e2), SC_(0.80715478515625e4), SC_(0.5230853557909669671253778230080315788384e-3507), + SC_(0.1e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5254421378336957273402254351232818867248e-7050)), + SC_(0.1e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4593634389285012411677313330998673022044e-13928)), + SC_(0.1e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2621997509993104596265028007664067440518e-15796)), + SC_(0.13e2), SC_(0.6152711808681488037109375e-1), SC_(0.1083420896102934209934115685271226154021e29), + SC_(0.13e2), SC_(0.11958599090576171875e0), SC_(0.1917447750081714212558490604491870597354e25), + SC_(0.13e2), SC_(0.15262925624847412109375e0), SC_(0.8038868021916654814587066747745710652867e23), + SC_(0.13e2), SC_(0.408089816570281982421875e0), SC_(0.2245771182455599861571897956512030500912e18), + SC_(0.13e2), SC_(0.6540834903717041015625e0), SC_(0.4848374582394250306716955498456616638777e15), + SC_(0.13e2), SC_(0.1097540378570556640625e1), SC_(0.5706157799443050405365640850248281332472e12), + SC_(0.13e2), SC_(0.30944411754608154296875e1), SC_(0.6749251426431234386462977211680293326467e6), + SC_(0.13e2), SC_(0.51139926910400390625e1), SC_(0.7041501258795245542680641070543745293868e3), + SC_(0.13e2), SC_(0.95070552825927734375e1), SC_(0.6566785551862389851044830988879804923294e-1), + SC_(0.13e2), SC_(0.24750102996826171875e2), SC_(0.1190989352639552376096560578530599056113e-9), + SC_(0.13e2), SC_(0.637722015380859375e2), SC_(0.1169819866439623248151687788769924240322e-27), + SC_(0.13e2), SC_(0.1252804412841796875e3), SC_(0.8542662489314492939710880476555839775162e-55), + SC_(0.13e2), SC_(0.25554705810546875e3), SC_(0.113430562248402032364671459657614723877e-111), + SC_(0.13e2), SC_(0.503011474609375e3), SC_(0.2317049832439488682536591053688556015713e-219), + SC_(0.13e2), SC_(0.10074598388671875e4), SC_(0.1254732183778027411039488001953049164743e-438), + SC_(0.13e2), SC_(0.1185395751953125e4), SC_(0.6042178020632144064714108224311774903492e-516), + SC_(0.13e2), SC_(0.353451806640625e4), SC_(0.2053847923636589340983297552611107216238e-1536), + SC_(0.13e2), SC_(0.80715478515625e4), SC_(0.5253258106648653014772606538228525344948e-3507), + SC_(0.13e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5265602717055656306785745402150322892879e-7050)), + SC_(0.13e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4598579255911157275391585056728721716762e-13928)), + SC_(0.13e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.262448598101299579741117867864106374998e-15796)), + SC_(0.16e2), SC_(0.15262925624847412109375e0), SC_(0.4938286945300390946800057834907625530461e30), + SC_(0.16e2), SC_(0.408089816570281982421875e0), SC_(0.7221910587714053614294800190891382604706e23), + SC_(0.16e2), SC_(0.6540834903717041015625e0), SC_(0.3790728103951616879677403904143882209845e20), + SC_(0.16e2), SC_(0.1097540378570556640625e1), SC_(0.9473457818948219028509498171217174515021e16), + SC_(0.16e2), SC_(0.30944411754608154296875e1), SC_(0.5172640843147067612769370153863372484149e9), + SC_(0.16e2), SC_(0.51139926910400390625e1), SC_(0.1274412574247354368298601805160688986152e6), + SC_(0.16e2), SC_(0.95070552825927734375e1), SC_(0.2289463448540324555979280240558825397975e1), + SC_(0.16e2), SC_(0.24750102996826171875e2), SC_(0.6161791433620408296199842329094112252448e-9), + SC_(0.16e2), SC_(0.637722015380859375e2), SC_(0.2289096435959505507418524279471155402989e-27), + SC_(0.16e2), SC_(0.1252804412841796875e3), SC_(0.1206319601397505331696773539636227844309e-54), + SC_(0.16e2), SC_(0.25554705810546875e3), SC_(0.1344229468593505419384958353266236768613e-111), + SC_(0.16e2), SC_(0.503011474609375e3), SC_(0.2526098676772882819533563375360814766944e-219), + SC_(0.16e2), SC_(0.10074598388671875e4), SC_(0.1310065508080730748782756145393107519213e-438), + SC_(0.16e2), SC_(0.1185395751953125e4), SC_(0.6267921275265713176373898233864223423493e-516), + SC_(0.16e2), SC_(0.353451806640625e4), SC_(0.2079277522540840435616081751154561226651e-1536), + SC_(0.16e2), SC_(0.80715478515625e4), SC_(0.5281644143269290804699816737306754893525e-3507), + SC_(0.16e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5279734846269774507137982122183578716906e-7050)), + SC_(0.16e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4604821675345979003854650884049215110996e-13928)), + SC_(0.16e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2627626984899885735887234170335932793558e-15796)), + SC_(0.19e2), SC_(0.408089816570281982421875e0), SC_(0.4164061026825297491148153141912721107722e29), + SC_(0.19e2), SC_(0.6540834903717041015625e0), SC_(0.5312149012796560969562933465014179856392e25), + SC_(0.19e2), SC_(0.1097540378570556640625e1), SC_(0.2815975836985008873103308168929822944327e21), + SC_(0.19e2), SC_(0.30944411754608154296875e1), SC_(0.7019132853172097465901622753543655264903e12), + SC_(0.19e2), SC_(0.51139926910400390625e1), SC_(0.4002436863438981174830416893548050617807e8), + SC_(0.19e2), SC_(0.95070552825927734375e1), SC_(0.1303525556148337020714921569926174097018e3), + SC_(0.19e2), SC_(0.24750102996826171875e2), SC_(0.4316753221562253270243758390652133294371e-8), + SC_(0.19e2), SC_(0.637722015380859375e2), SC_(0.5131631099458169754688000422673163599127e-27), + SC_(0.19e2), SC_(0.1252804412841796875e3), SC_(0.1828775305637346345086844497495530048761e-54), + SC_(0.19e2), SC_(0.25554705810546875e3), SC_(0.1649880347502512941415042788463907897061e-111), + SC_(0.19e2), SC_(0.503011474609375e3), SC_(0.2803652042513646742863659290040036426993e-219), + SC_(0.19e2), SC_(0.10074598388671875e4), SC_(0.138010548403557210998749298167785814513e-438), + SC_(0.19e2), SC_(0.1185395751953125e4), SC_(0.6551627490387305422139410554400797766277e-516), + SC_(0.19e2), SC_(0.353451806640625e4), SC_(0.2110388042455500963599125331602819247229e-1536), + SC_(0.19e2), SC_(0.80715478515625e4), SC_(0.5316107489696805817894855741449691118523e-3507), + SC_(0.19e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5296841383959242087228030140304235898501e-7050)), + SC_(0.19e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4612366915844621095505284507922443014777e-13928)), + SC_(0.19e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.263142285830226183225076299008451154768e-15796)), + SC_(0.22e2), SC_(0.1097540378570556640625e1), SC_(0.1363003388493700601216340546122016964692e26), + SC_(0.22e2), SC_(0.30944411754608154296875e1), SC_(0.154098133448113782071643725924230801023e16), + SC_(0.22e2), SC_(0.51139926910400390625e1), SC_(0.2009401025366327094151993104161788468592e11), + SC_(0.22e2), SC_(0.95070552825927734375e1), SC_(0.1141232205288225451172879420440562665501e5), + SC_(0.22e2), SC_(0.24750102996826171875e2), SC_(0.4030155296337857773583486982855348750892e-7), + SC_(0.22e2), SC_(0.637722015380859375e2), SC_(0.1315869800422107059860094317990248408429e-26), + SC_(0.22e2), SC_(0.1252804412841796875e3), SC_(0.2975692932403139304961913614199800178338e-54), + SC_(0.22e2), SC_(0.25554705810546875e3), SC_(0.2097273790995842218764900522553748654456e-111), + SC_(0.22e2), SC_(0.503011474609375e3), SC_(0.3167781215041084943465273722089298618238e-219), + SC_(0.22e2), SC_(0.10074598388671875e4), SC_(0.1466927482471510400596019243484849490977e-438), + SC_(0.22e2), SC_(0.1185395751953125e4), SC_(0.690033831413657158885992262195107209443e-516), + SC_(0.22e2), SC_(0.353451806640625e4), SC_(0.2147424258180187733063949241373893460545e-1536), + SC_(0.22e2), SC_(0.80715478515625e4), SC_(0.5356764940269015086023336440354606728087e-3507), + SC_(0.22e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5316950975149900813875721833489941300947e-7050)), + SC_(0.22e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4621221351512128995193460546474354537115e-13928)), + SC_(0.22e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2635876427517735221275210029856471898722e-15796)), + SC_(0.25e2), SC_(0.30944411754608154296875e1), SC_(0.5124414377836332997128321016932385071037e19), + SC_(0.25e2), SC_(0.51139926910400390625e1), SC_(0.1516348961613243378986004924208793378214e14), + SC_(0.25e2), SC_(0.95070552825927734375e1), SC_(0.1463234253390806624112966887873959971233e7), + SC_(0.25e2), SC_(0.24750102996826171875e2), SC_(0.4935038240665646924300882380857360493806e-6), + SC_(0.25e2), SC_(0.637722015380859375e2), SC_(0.3852729718366625645598579815228162625593e-26), + SC_(0.25e2), SC_(0.1252804412841796875e3), SC_(0.519554212251102929292422924272513966618e-54), + SC_(0.25e2), SC_(0.25554705810546875e3), SC_(0.2761006009486831921593422030279766463146e-111), + SC_(0.25e2), SC_(0.503011474609375e3), SC_(0.3643691815233768363329960382590151294279e-219), + SC_(0.25e2), SC_(0.10074598388671875e4), SC_(0.1573192504592971211195262229110325635597e-438), + SC_(0.25e2), SC_(0.1185395751953125e4), SC_(0.7322964891826955653271546226503782002346e-516), + SC_(0.25e2), SC_(0.353451806640625e4), SC_(0.2190680614711407877661687663478874228865e-1536), + SC_(0.25e2), SC_(0.80715478515625e4), SC_(0.540375492159789413152113464539956894375e-3507), + SC_(0.25e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5340097371869314934260450597251845025579e-7050)), + SC_(0.25e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4631392471278741610272692105394268251102e-13928)), + SC_(0.25e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2640991012000586747759705721429447267374e-15796)), + SC_(0.28e2), SC_(0.30944411754608154296875e1), SC_(0.2454990660613704575310526628033402392743e23), + SC_(0.28e2), SC_(0.51139926910400390625e1), SC_(0.1639932683217203236875473578868075473357e17), + SC_(0.28e2), SC_(0.95070552825927734375e1), SC_(0.2640289814156717285146398752180020136988e9), + SC_(0.28e2), SC_(0.24750102996826171875e2), SC_(0.7805016810416181144084572579288151877848e-5), + SC_(0.28e2), SC_(0.637722015380859375e2), SC_(0.1285516209168801948450375975409166892794e-25), + SC_(0.28e2), SC_(0.1252804412841796875e3), SC_(0.9731024469683355973357810021133052733266e-54), + SC_(0.28e2), SC_(0.25554705810546875e3), SC_(0.3764202686030341596545979787444019030802e-111), + SC_(0.28e2), SC_(0.503011474609375e3), SC_(0.4266594228984071730839482411557788914727e-219), + SC_(0.28e2), SC_(0.10074598388671875e4), SC_(0.1702282693037324565511443632781369578599e-438), + SC_(0.28e2), SC_(0.1185395751953125e4), SC_(0.7830666627994873419887796221376303084348e-516), + SC_(0.28e2), SC_(0.353451806640625e4), SC_(0.2240505129503384289100743163081097090796e-1536), + SC_(0.28e2), SC_(0.80715478515625e4), SC_(0.545723827824440126457849797127688848512e-3507), + SC_(0.28e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5366319527575558839162183821505900036109e-7050)), + SC_(0.28e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4642888889457374552089218805904169520701e-13928)), + SC_(0.28e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2646770428485621338192274145251868595147e-15796)), + SC_(0.31e2), SC_(0.30944411754608154296875e1), SC_(0.1628932708409575730419267561000492140589e27), + SC_(0.31e2), SC_(0.51139926910400390625e1), SC_(0.2447361910481591579571497585668547323946e20), + SC_(0.31e2), SC_(0.95070552825927734375e1), SC_(0.6488217504914699872909898484402174229942e11), + SC_(0.31e2), SC_(0.24750102996826171875e2), SC_(0.157116552966095225600444096328289206147e-3), + SC_(0.31e2), SC_(0.637722015380859375e2), SC_(0.4877866771594043520068734807669071874982e-25), + SC_(0.31e2), SC_(0.1252804412841796875e3), SC_(0.1954458676609050367778051217834443619249e-53), + SC_(0.31e2), SC_(0.25554705810546875e3), SC_(0.5314396609201908102183228568905552439644e-111), + SC_(0.31e2), SC_(0.503011474609375e3), SC_(0.5085947534007667967665404997759185910698e-219), + SC_(0.31e2), SC_(0.10074598388671875e4), SC_(0.1858479555248526512442867243821889852739e-438), + SC_(0.31e2), SC_(0.1185395751953125e4), SC_(0.8437339956894185946885168627747104414597e-516), + SC_(0.31e2), SC_(0.353451806640625e4), SC_(0.2297304058162664000801774532441891487107e-1536), + SC_(0.31e2), SC_(0.80715478515625e4), SC_(0.5517399190450953326108602755590633200343e-3507), + SC_(0.31e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5395661706428891649746508777630616770672e-7050)), + SC_(0.31e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4655720357904133390898485411309960205861e-13928)), + SC_(0.31e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.265321899573550369144774901462370895652e-15796)), + SC_(0.34e2), SC_(0.51139926910400390625e1), SC_(0.4887088419644645368260815870435027797406e23), + SC_(0.34e2), SC_(0.95070552825927734375e1), SC_(0.2112656718901935346201941347252542378941e14), + SC_(0.34e2), SC_(0.24750102996826171875e2), SC_(0.3970887365216683380607479457956643717073e-2), + SC_(0.34e2), SC_(0.637722015380859375e2), SC_(0.2100204922933819026203193295871305047884e-24), + SC_(0.34e2), SC_(0.1252804412841796875e3), SC_(0.4208002081332910915619620807159408811519e-53), + SC_(0.34e2), SC_(0.25554705810546875e3), SC_(0.7769447760252936043840779866630634408625e-111), + SC_(0.34e2), SC_(0.503011474609375e3), SC_(0.6171781631735790945543097961138060180266e-219), + SC_(0.34e2), SC_(0.10074598388671875e4), SC_(0.2047197978967706994212554896264914383123e-438), + SC_(0.34e2), SC_(0.1185395751953125e4), SC_(0.9160246977951776790315282650922051285968e-516), + SC_(0.34e2), SC_(0.353451806640625e4), SC_(0.2361547411134811710896829034902271115585e-1536), + SC_(0.34e2), SC_(0.80715478515625e4), SC_(0.5584446231263440827429886485888847485203e-3507), + SC_(0.34e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5428173607835506848491134855123714452313e-7050)), + SC_(0.34e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4669897779805891799705998126652967732775e-13928)), + SC_(0.34e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2660341539919842585511498286326720170637e-15796)), + SC_(0.37e2), SC_(0.51139926910400390625e1), SC_(0.1272972151896897826158274128583844120665e27), + SC_(0.37e2), SC_(0.95070552825927734375e1), SC_(0.8906476725223650919563577369009773338755e16), + SC_(0.37e2), SC_(0.24750102996826171875e2), SC_(0.1244083237827760336698682724048883714384e0), + SC_(0.37e2), SC_(0.637722015380859375e2), SC_(0.1023683495413380075273932600948216233739e-23), + SC_(0.37e2), SC_(0.1252804412841796875e3), SC_(0.9708114816265931540367065686128969752967e-53), + SC_(0.37e2), SC_(0.25554705810546875e3), SC_(0.1176141374265724392875749694044997803833e-110), + SC_(0.37e2), SC_(0.503011474609375e3), SC_(0.7624202295820387263571569786711706654334e-219), + SC_(0.37e2), SC_(0.10074598388671875e4), SC_(0.2275293790124175097179388212619385996485e-438), + SC_(0.37e2), SC_(0.1185395751953125e4), SC_(0.1002082350358535312449713140689845232144e-515), + SC_(0.37e2), SC_(0.353451806640625e4), SC_(0.24337754261932268167781383948202245203e-1536), + SC_(0.37e2), SC_(0.80715478515625e4), SC_(0.5658613571537489375270717392106841872519e-3507), + SC_(0.37e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5463910506753990628094528712757348439213e-7050)), + SC_(0.37e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4685433225122227131121313342266088755841e-13928)), + SC_(0.37e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2668143400635403962854802667482407460168e-15796)), + SC_(0.4e2), SC_(0.51139926910400390625e1), SC_(0.4233526621241393414692668844551104005827e30), + SC_(0.4e2), SC_(0.95070552825927734375e1), SC_(0.4766171624124769142545027018778135740885e19), + SC_(0.4e2), SC_(0.24750102996826171875e2), SC_(0.4775404961093391264918951179312101480207e1), + SC_(0.4e2), SC_(0.637722015380859375e2), SC_(0.5635106976075199703636541975335502909796e-23), + SC_(0.4e2), SC_(0.1252804412841796875e3), SC_(0.239893653947530928983971886240185066878e-52), + SC_(0.4e2), SC_(0.25554705810546875e3), SC_(0.1843478723100513534021193173428902541989e-110), + SC_(0.4e2), SC_(0.503011474609375e3), SC_(0.9587827836263030915116628042123831013541e-219), + SC_(0.4e2), SC_(0.10074598388671875e4), SC_(0.2551468993000374444638108825618092702334e-438), + SC_(0.4e2), SC_(0.1185395751953125e4), SC_(0.1104571893928413137785528611522740784998e-515), + SC_(0.4e2), SC_(0.353451806640625e4), SC_(0.2514606121350613728401996284399725441789e-1536), + SC_(0.4e2), SC_(0.80715478515625e4), SC_(0.5740162342574260629793695263133161311679e-3507), + SC_(0.4e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.550293341031905346615098885552944484108e-7050)), + SC_(0.4e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4702339947712333105841647963051289505599e-13928)), + SC_(0.4e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.267663043757796685478543436488906145159e-15796)), + SC_(0.43e2), SC_(0.95070552825927734375e1), SC_(0.3182839111836206795432282087846430344793e22), + SC_(0.43e2), SC_(0.24750102996826171875e2), SC_(0.222166790779622513904265491366185119783e3), + SC_(0.43e2), SC_(0.637722015380859375e2), SC_(0.3494683971717078896526073657684663026344e-22), + SC_(0.43e2), SC_(0.1252804412841796875e3), SC_(0.6346453085860538378657641408876460992447e-52), + SC_(0.43e2), SC_(0.25554705810546875e3), SC_(0.2991576375167378499626120269819404711331e-110), + SC_(0.43e2), SC_(0.503011474609375e3), SC_(0.1227395435880538406117125957292272846558e-218), + SC_(0.43e2), SC_(0.10074598388671875e4), SC_(0.288680763360153435580734280826972880231e-438), + SC_(0.43e2), SC_(0.1185395751953125e4), SC_(0.1226813762536213360641692402203393421902e-515), + SC_(0.43e2), SC_(0.353451806640625e4), SC_(0.2604744075705526360896827212663194081844e-1536), + SC_(0.43e2), SC_(0.80715478515625e4), SC_(0.5829382167482993254759548308025590017295e-3507), + SC_(0.43e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5545309231403848597473015547909532316757e-7050)), + SC_(0.43e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4720632404180934492767700130411170770692e-13928)), + SC_(0.43e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2685809037877493712736261189745151268036e-15796)), + SC_(0.46e2), SC_(0.95070552825927734375e1), SC_(0.2613341661852173290163593295155286429179e25), + SC_(0.46e2), SC_(0.24750102996826171875e2), SC_(0.1240356498190349854695380927506887128504e5), + SC_(0.46e2), SC_(0.637722015380859375e2), SC_(0.2435594999948560729028252282438959684734e-21), + SC_(0.46e2), SC_(0.1252804412841796875e3), SC_(0.1796653611261388450475612390490618546895e-51), + SC_(0.46e2), SC_(0.25554705810546875e3), SC_(0.5025944581419636885378338102879757870666e-110), + SC_(0.46e2), SC_(0.503011474609375e3), SC_(0.1599497182965866519989916521857648397981e-218), + SC_(0.46e2), SC_(0.10074598388671875e4), SC_(0.3295487424117437084008553230775859427088e-438), + SC_(0.46e2), SC_(0.1185395751953125e4), SC_(0.1372957440742858143071942753527722395892e-515), + SC_(0.46e2), SC_(0.353451806640625e4), SC_(0.2704990612325371082658423752252872015539e-1536), + SC_(0.46e2), SC_(0.80715478515625e4), SC_(0.5926592873835553214540488168663074957806e-3507), + SC_(0.46e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5591110979812109106321381410172006791395e-7050)), + SC_(0.46e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4740326274480720773200693383939904110369e-13928)), + SC_(0.46e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.269568612410947047471656632057047862977e-15796)), + SC_(0.49e2), SC_(0.95070552825927734375e1), SC_(0.2604110632578045074747155850476866625948e28), + SC_(0.49e2), SC_(0.24750102996826171875e2), SC_(0.8234824069434699773771302493843594365029e6), + SC_(0.49e2), SC_(0.637722015380859375e2), SC_(0.1902868412813550491062018165813668118658e-20), + SC_(0.49e2), SC_(0.1252804412841796875e3), SC_(0.5440024350673983390536795347083271518201e-51), + SC_(0.49e2), SC_(0.25554705810546875e3), SC_(0.8741004963899605307945501563203272368013e-110), + SC_(0.49e2), SC_(0.503011474609375e3), SC_(0.2121842408391232802265664912252713360049e-218), + SC_(0.49e2), SC_(0.10074598388671875e4), SC_(0.3795729266960021463783148801906243269524e-438), + SC_(0.49e2), SC_(0.1185395751953125e4), SC_(0.1548206847091165496863608044251602051314e-515), + SC_(0.49e2), SC_(0.353451806640625e4), SC_(0.2816255588282019933434542273145935388214e-1536), + SC_(0.49e2), SC_(0.80715478515625e4), SC_(0.6032146401778819934332757713494281444621e-3507), + SC_(0.49e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5640417971864792607466646129595328587678e-7050)), + SC_(0.49e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4761438484312403920622455773313824083129e-13928)), + SC_(0.49e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2706269162996484422890605196489233046553e-15796)), + SC_(0.52e2), SC_(0.24750102996826171875e2), SC_(0.6447123396076953125856501527046675224103e8), + SC_(0.52e2), SC_(0.637722015380859375e2), SC_(0.1662393009289908212041057469690821898544e-19), + SC_(0.52e2), SC_(0.1252804412841796875e3), SC_(0.176081332172933452583858832905441988789e-50), + SC_(0.52e2), SC_(0.25554705810546875e3), SC_(0.1573619547602125217418649562613363854933e-109), + SC_(0.52e2), SC_(0.503011474609375e3), SC_(0.2865293720586253316237854479684756666504e-218), + SC_(0.52e2), SC_(0.10074598388671875e4), SC_(0.4411070645207772522347055077622564971444e-438), + SC_(0.52e2), SC_(0.1185395751953125e4), SC_(0.1759114193755329124346838916667484326051e-515), + SC_(0.52e2), SC_(0.353451806640625e4), SC_(0.2939571033262660416184655688725890023946e-1536), + SC_(0.52e2), SC_(0.80715478515625e4), SC_(0.6146428923521813401837376358389093626766e-3507), + SC_(0.52e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5693316059223311384546703599902546300788e-7050)), + SC_(0.52e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4783987229367199009175316527221338478209e-13928)), + SC_(0.52e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2717566174815352378101961453286298212542e-15796)), + SC_(0.55e2), SC_(0.24750102996826171875e2), SC_(0.5906592594836486211372993494032070575815e10), + SC_(0.55e2), SC_(0.637722015380859375e2), SC_(0.1619944303887765571629298426907679553596e-18), + SC_(0.55e2), SC_(0.1252804412841796875e3), SC_(0.608927899095778107216501890100327844068e-50), + SC_(0.55e2), SC_(0.25554705810546875e3), SC_(0.2932241159906496106934751711750456582902e-109), + SC_(0.55e2), SC_(0.503011474609375e3), SC_(0.3938646387584288196973181886064586393011e-218), + SC_(0.55e2), SC_(0.10074598388671875e4), SC_(0.5172082428396249892924776411237396813495e-438), + SC_(0.55e2), SC_(0.1185395751953125e4), SC_(0.20139647659877449929188123350177500281e-515), + SC_(0.55e2), SC_(0.353451806640625e4), SC_(0.3076106920808888200634769834560394968754e-1536), + SC_(0.55e2), SC_(0.80715478515625e4), SC_(0.6269863192036053706431959465256415089858e-3507), + SC_(0.55e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.574989787787316356628191218017765776562e-7050)), + SC_(0.55e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4807992001460335134677650774814753867241e-13928)), + SC_(0.55e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2729585743526390911413799190493994340307e-15796)), + SC_(0.58e2), SC_(0.24750102996826171875e2), SC_(0.6287635183148587835682696418458586125518e12), + SC_(0.58e2), SC_(0.637722015380859375e2), SC_(0.1756460447184133594481790032905120322521e-17), + SC_(0.58e2), SC_(0.1252804412841796875e3), SC_(0.2248613108673335230509488256563758753961e-49), + SC_(0.58e2), SC_(0.25554705810546875e3), SC_(0.5654918276102973107457654592757896708566e-109), + SC_(0.58e2), SC_(0.503011474609375e3), SC_(0.551114499819172534127087841978064034342e-218), + SC_(0.58e2), SC_(0.10074598388671875e4), SC_(0.6118696230867968231394790791959663245605e-438), + SC_(0.58e2), SC_(0.1185395751953125e4), SC_(0.2323283007326067132383472547365484174206e-515), + SC_(0.58e2), SC_(0.353451806640625e4), SC_(0.3227189406425111978444678851933447583123e-1536), + SC_(0.58e2), SC_(0.80715478515625e4), SC_(0.6402911138921955267414762206159896491641e-3507), + SC_(0.58e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5810263118278312048425620492975372174571e-7050)), + SC_(0.58e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4833473616608138200363301333135367985947e-13928)), + SC_(0.58e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2742337027642737009466482947735690427217e-15796)), + SC_(0.61e2), SC_(0.24750102996826171875e2), SC_(0.7726373728796904279575416594682658176479e14), + SC_(0.61e2), SC_(0.637722015380859375e2), SC_(0.2113943823625618827883205381971301797016e-16), + SC_(0.61e2), SC_(0.1252804412841796875e3), SC_(0.8861536583313896744581182392356177857871e-49), + SC_(0.61e2), SC_(0.25554705810546875e3), SC_(0.1128608002403298136517199269445226426889e-108), + SC_(0.61e2), SC_(0.503011474609375e3), SC_(0.7849619531087268590088157170928524002912e-218), + SC_(0.61e2), SC_(0.10074598388671875e4), SC_(0.7303377267545843918467287421006799350243e-438), + SC_(0.61e2), SC_(0.1185395751953125e4), SC_(0.270050123497330419186945911647084594198e-515), + SC_(0.61e2), SC_(0.353451806640625e4), SC_(0.3394321926021289374115139121770929447286e-1536), + SC_(0.61e2), SC_(0.80715478515625e4), SC_(0.6546076743725850744311026044349057058217e-3507), + SC_(0.61e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5874518817808457402027581610496686283433e-7050)), + SC_(0.61e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4860454245105296988781115294196285058127e-13928)), + SC_(0.61e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2755829771858985092011731285441871079278e-15796)), + SC_(0.64e2), SC_(0.24750102996826171875e2), SC_(0.1089372884592778724010939074780808093656e17), + SC_(0.64e2), SC_(0.637722015380859375e2), SC_(0.2817266049671112872402662968245886024951e-15), + SC_(0.64e2), SC_(0.1252804412841796875e3), SC_(0.3724702135364801690887458310736954249975e-48), + SC_(0.64e2), SC_(0.25554705810546875e3), SC_(0.2330836717388845789360360409398297964075e-108), + SC_(0.64e2), SC_(0.503011474609375e3), SC_(0.1138051624148028381793628292491566002443e-217), + SC_(0.64e2), SC_(0.10074598388671875e4), SC_(0.8795474806187293519539998949550401264589e-438), + SC_(0.64e2), SC_(0.1185395751953125e4), SC_(0.3162847444927986736836816083125075670015e-515), + SC_(0.64e2), SC_(0.353451806640625e4), SC_(0.357920961818962588991163894939852397169e-1536), + SC_(0.64e2), SC_(0.80715478515625e4), SC_(0.669990919956916384927021910729947711597e-3507), + SC_(0.64e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5942779676638927496437891727345757504507e-7050)), + SC_(0.64e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4888957443663140543644871361643761747612e-13928)), + SC_(0.64e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2770074319459807641783655781741093857784e-15796)), + SC_(0.67e2), SC_(0.24750102996826171875e2), SC_(0.1752503956367793335591698780066945162812e19), + SC_(0.67e2), SC_(0.637722015380859375e2), SC_(0.4147864732836980467101348321415022034012e-14), + SC_(0.67e2), SC_(0.1252804412841796875e3), SC_(0.1668781473640989763113617951611659640503e-47), + SC_(0.67e2), SC_(0.25554705810546875e3), SC_(0.4980726389162882741712033067856828293759e-108), + SC_(0.67e2), SC_(0.503011474609375e3), SC_(0.167948569861795538522970935654345076463e-217), + SC_(0.67e2), SC_(0.10074598388671875e4), SC_(0.1068722229666081091973101721647873584696e-437), + SC_(0.67e2), SC_(0.1185395751953125e4), SC_(0.3732529706926917583477299343548737282551e-515), + SC_(0.67e2), SC_(0.353451806640625e4), SC_(0.3783787616795079157142852699862298530265e-1536), + SC_(0.67e2), SC_(0.80715478515625e4), SC_(0.6865006402804243398070353234801672966588e-3507), + SC_(0.67e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6015168398426805542472282512313488150136e-7050)), + SC_(0.67e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4919008189674129617858770677394899509167e-13928)), + SC_(0.67e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2785081625530675286577295403413443334166e-15796)), + SC_(0.7e2), SC_(0.24750102996826171875e2), SC_(0.3200133529232737321115234201266326454559e21), + SC_(0.7e2), SC_(0.637722015380859375e2), SC_(0.6731146076014642148395421819876868378567e-13), + SC_(0.7e2), SC_(0.1252804412841796875e3), SC_(0.7964621054909191295512910144858209516278e-47), + SC_(0.7e2), SC_(0.25554705810546875e3), SC_(0.1101144291182637778358682346270185127938e-107), + SC_(0.7e2), SC_(0.503011474609375e3), SC_(0.2522817286419656696577388487800399007574e-217), + SC_(0.7e2), SC_(0.10074598388671875e4), SC_(0.1310206208699986118807886315832315681721e-437), + SC_(0.7e2), SC_(0.1185395751953125e4), SC_(0.4438324037790869017660048341591393207415e-515), + SC_(0.7e2), SC_(0.353451806640625e4), SC_(0.4010253858858078283335826255416157967798e-1536), + SC_(0.7e2), SC_(0.80715478515625e4), SC_(0.7042018797575106309572625922749346299401e-3507), + SC_(0.7e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6091816057177725949783663850061790717355e-7050)), + SC_(0.7e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4950632917672309705754397226621067105838e-13928)), + SC_(0.7e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2800863270994291420518570661218980325799e-15796)), + SC_(0.73e2), SC_(0.24750102996826171875e2), SC_(0.6600974229573307442059086118768767449093e23), + SC_(0.73e2), SC_(0.637722015380859375e2), SC_(0.1201297498924823083105718685052381246325e-11), + SC_(0.73e2), SC_(0.1252804412841796875e3), SC_(0.4046845520756788077228347262642337964193e-46), + SC_(0.73e2), SC_(0.25554705810546875e3), SC_(0.2518393365952522637287348252737396942553e-107), + SC_(0.73e2), SC_(0.503011474609375e3), SC_(0.3857308045703755765391334346735015990041e-217), + SC_(0.73e2), SC_(0.10074598388671875e4), SC_(0.1620626521068011080509491031666896383943e-437), + SC_(0.73e2), SC_(0.1185395751953125e4), SC_(0.5317713886826713534838432572251814525015e-515), + SC_(0.73e2), SC_(0.353451806640625e4), SC_(0.4261107169830410931379086346743264316689e-1536), + SC_(0.73e2), SC_(0.80715478515625e4), SC_(0.7231653609674731879282356274318541000741e-3507), + SC_(0.73e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6172862491836114717204373678657121117295e-7050)), + SC_(0.73e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.4983859558064200409817902804417896457076e-13928)), + SC_(0.73e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2817431477497909957363236959638032643128e-15796)), + SC_(0.76e2), SC_(0.24750102996826171875e2), SC_(0.1531183321100941817299267523275491292448e26), + SC_(0.76e2), SC_(0.637722015380859375e2), SC_(0.2352685186849495712347188367635010810633e-10), + SC_(0.76e2), SC_(0.1252804412841796875e3), SC_(0.2187653883215974720282435704263980509287e-45), + SC_(0.76e2), SC_(0.25554705810546875e3), SC_(0.5957804953158544567415337939041815553818e-107), + SC_(0.76e2), SC_(0.503011474609375e3), SC_(0.6002961099601760044656616805251101448532e-217), + SC_(0.76e2), SC_(0.10074598388671875e4), SC_(0.2022524994842388381712489452722204489107e-437), + SC_(0.76e2), SC_(0.1185395751953125e4), SC_(0.6419787531456505117374325893361016267861e-515), + SC_(0.76e2), SC_(0.353451806640625e4), SC_(0.4539191527866687375064734054902878636098e-1536), + SC_(0.76e2), SC_(0.80715478515625e4), SC_(0.7434679507997340046976676659450109196349e-3507), + SC_(0.76e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.625845673025821801704758202141407507098e-7050)), + SC_(0.76e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5018717578209518619159368787008041682897e-13928)), + SC_(0.76e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2834799123178316316921082908434236819708e-15796)), + SC_(0.79e2), SC_(0.24750102996826171875e2), SC_(0.3977450254611439907015094861072686143365e28), + SC_(0.79e2), SC_(0.637722015380859375e2), SC_(0.5045557998916834451345285819041530054045e-9), + SC_(0.79e2), SC_(0.1252804412841796875e3), SC_(0.1257398100175037281002031105345426585638e-44), + SC_(0.79e2), SC_(0.25554705810546875e3), SC_(0.1457761666527355876308418609616580684983e-106), + SC_(0.79e2), SC_(0.503011474609375e3), SC_(0.9508736439729252372797046089858665696247e-217), + SC_(0.79e2), SC_(0.10074598388671875e4), SC_(0.2546664153931547063082509241536182642882e-437), + SC_(0.79e2), SC_(0.1185395751953125e4), SC_(0.7809182105858958259760323416560481270815e-515), + SC_(0.79e2), SC_(0.353451806640625e4), SC_(0.4847747575121366789595217747585489900848e-1536), + SC_(0.79e2), SC_(0.80715478515625e4), SC_(0.7651931736233482793339884190747843802592e-3507), + SC_(0.79e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.634875744436278296417277623731115109911e-7050)), + SC_(0.79e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5055238025936264849903127242851811532009e-13928)), + SC_(0.79e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2852979759332925163346706705764848988845e-15796)), + SC_(0.82e2), SC_(0.637722015380859375e2), SC_(0.1182479183003843898967122682220895379283e-7), + SC_(0.82e2), SC_(0.1252804412841796875e3), SC_(0.7679246824874028855732984729868233341459e-44), + SC_(0.82e2), SC_(0.25554705810546875e3), SC_(0.3688731597877386657104803215785579078246e-106), + SC_(0.82e2), SC_(0.503011474609375e3), SC_(0.1533025263190811001855129953690241988217e-216), + SC_(0.82e2), SC_(0.10074598388671875e4), SC_(0.3235306253457630283328305165089298636569e-437), + SC_(0.82e2), SC_(0.1185395751953125e4), SC_(0.95714803641107768131549467236444623187e-515), + SC_(0.82e2), SC_(0.353451806640625e4), SC_(0.5190472642970221025902053308995793605448e-1536), + SC_(0.82e2), SC_(0.80715478515625e4), SC_(0.7884317762303207970574981219562166816935e-3507), + SC_(0.82e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6443933438399520983914837847908697932304e-7050)), + SC_(0.82e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5093453575580057440764704712908558993787e-13928)), + SC_(0.82e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2871987628027187822900488209818201448873e-15796)), + SC_(0.85e2), SC_(0.637722015380859375e2), SC_(0.3022386458998828808890958658069437125556e-6), + SC_(0.85e2), SC_(0.1252804412841796875e3), SC_(0.4980051147455231361906632503761840466974e-43), + SC_(0.85e2), SC_(0.25554705810546875e3), SC_(0.9651821409596944246819658023453058852567e-106), + SC_(0.85e2), SC_(0.503011474609375e3), SC_(0.2515578850121789395121409417066593310199e-216), + SC_(0.85e2), SC_(0.10074598388671875e4), SC_(0.4146905619633520795687290702797802077516e-437), + SC_(0.85e2), SC_(0.1185395751953125e4), SC_(0.1182063426653318577358697854155415902088e-514), + SC_(0.85e2), SC_(0.353451806640625e4), SC_(0.5571590796064834896786127413958385484532e-1536), + SC_(0.85e2), SC_(0.80715478515625e4), SC_(0.8132823498430510533405211338608503625054e-3507), + SC_(0.85e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.6544164172431353956246831844735505709742e-7050)), + SC_(0.85e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5133398576643193156132512241768029727037e-13928)), + SC_(0.85e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2891837680670311977658996166762631480513e-15796)), + SC_(0.88e2), SC_(0.637722015380859375e2), SC_(0.8408884745537773166223428345981835442608e-5), + SC_(0.88e2), SC_(0.1252804412841796875e3), SC_(0.3427163660301187722220573043617848517407e-42), + SC_(0.88e2), SC_(0.25554705810546875e3), SC_(0.2611158848229128475717621937789423053511e-105), + SC_(0.88e2), SC_(0.503011474609375e3), SC_(0.4201277178177965425183058418537562017403e-216), + SC_(0.88e2), SC_(0.10074598388671875e4), SC_(0.5362866581825708379523263981965145477407e-437), + SC_(0.88e2), SC_(0.1185395751953125e4), SC_(0.1470923110114575284128795225669870357461e-514), + SC_(0.88e2), SC_(0.353451806640625e4), SC_(0.5995934685429881061512313674772217021537e-1536), + SC_(0.88e2), SC_(0.80715478515625e4), SC_(0.839852015080128730529999326058629197173e-3507), + SC_(0.88e2), SC_(0.1622925e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.664964032329384431282211022073156371507e-7050)), + SC_(0.88e2), SC_(0.3206622265625e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.5175109105174760942763088943597648303892e-13928)), + SC_(0.88e2), SC_(0.3636794921875e5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2912545597593180629046239733714231938561e-15796)) + }; +#undef SC_ + + diff --git a/test/bessel_y01_data.ipp b/test/bessel_y01_data.ipp new file mode 100644 index 000000000..29f446187 --- /dev/null +++ b/test/bessel_y01_data.ipp @@ -0,0 +1,111 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 100> bessel_y01_data = { + SC_(0), SC_(0.23917420208454132080078125e0), SC_(-0.96144387845032600014206252125473909797e0), + SC_(0), SC_(0.1785583972930908203125e1), SC_(0.4741447443427281185149710186267060231689e0), + SC_(0), SC_(0.48770198822021484375e1), SC_(-0.2878028614684715596290259912770720755831e0), + SC_(0), SC_(0.54930877685546875e1), SC_(-0.3396368039207613416368370236707080035826e0), + SC_(0), SC_(0.5623225688934326171875e1), SC_(-0.3340373324911775573542553376291358673245e0), + SC_(0), SC_(0.6349340915679931640625e1), SC_(-0.2128871385683908276739449505491816562456e0), + SC_(0), SC_(0.677385044097900390625e1), SC_(-0.9426827045132919826659947856922431474509e-1), + SC_(0), SC_(0.7094316959381103515625e1), SC_(0.2479102692009034386110116691802019548306e-2), + SC_(0), SC_(0.788065433502197265625e1), SC_(0.2029626650223921424547972824606518098619e0), + SC_(0), SC_(0.941909885406494140625e1), SC_(0.1871389209333241942443487293304042083944e0), + SC_(0), SC_(0.105962162017822265625e2), SC_(-0.895681903138232043513826049370887073897e-1), + SC_(0), SC_(0.110517024993896484375e2), SC_(-0.1770624440732838746367860550588287464321e0), + SC_(0), SC_(0.139249114990234375e2), SC_(0.1142985183059252859759404038734709330922e0), + SC_(0), SC_(0.1485147190093994140625e2), SC_(0.2063286797703167877532498353892868456477e0), + SC_(0), SC_(0.15408351898193359375e2), SC_(0.1804637317868620678845766162727475608308e0), + SC_(0), SC_(0.180646991729736328125e2), SC_(-0.1876865372622732192971339060928812967449e0), + SC_(0), SC_(0.199369258880615234375e2), SC_(0.5206684116941857702281164878715312044063e-1), + SC_(0), SC_(0.210880641937255859375e2), SC_(0.1723989782023412731879808822208131224943e0), + SC_(0), SC_(0.242687816619873046875e2), SC_(-0.1613789161670016087114250427765172807239e0), + SC_(0), SC_(0.25183135986328125e2), SC_(-0.1071939400958389283049694534626391030773e0), + SC_(0), SC_(0.27344074249267578125e2), SC_(0.1508708516504150084978629879232740523815e0), + SC_(0), SC_(0.273610286712646484375e2), SC_(0.1511874592773052558132847555838893071071e0), + SC_(0), SC_(0.316179637908935546875e2), SC_(-0.7862384849343525606244284493490404212792e-1), + SC_(0), SC_(0.3198816680908203125e2), SC_(-0.3038016447495889126879755326091231324441e-1), + SC_(0), SC_(0.327870330810546875e2), SC_(0.7658058565089261314120406134639008633495e-1), + SC_(0), SC_(0.33936756134033203125e2), SC_(0.135185927745980170738744171379455779367e0), + SC_(0), SC_(0.340679779052734375e2), SC_(0.1308985104522637565167036775360209675704e0), + SC_(0), SC_(0.362919464111328125e2), SC_(-0.1073864718556727242939230205939491695933e0), + SC_(0), SC_(0.396103668212890625e2), SC_(0.1142550468868382394556084602403207743216e0), + SC_(0), SC_(0.3989643096923828125e2), SC_(0.124661273461738151669837813759338802014e0), + SC_(0), SC_(0.39905292510986328125e2), SC_(0.1248230809391841736060855994886626203322e0), + SC_(0), SC_(0.400140228271484375e2), SC_(0.1260052610908056072451525745074524623778e0), + SC_(0), SC_(0.4073618316650390625e2), SC_(0.9737382379702960925368875830625442357192e-1), + SC_(0), SC_(0.4175042724609375e2), SC_(-0.1494519243198415326119337512087694723669e-1), + SC_(0), SC_(0.424564666748046875e2), SC_(-0.9014506163034071267518605768672279547304e-1), + SC_(0), SC_(0.4392153167724609375e2), SC_(-0.9036719621072680503961718730174281767038e-1), + SC_(0), SC_(0.452895965576171875e2), SC_(0.5882036891280847548975142664645827422984e-1), + SC_(0), SC_(0.45668792724609375e2), SC_(0.9236225506165839536204051297244550413125e-1), + SC_(0), SC_(0.45786777496337890625e2), SC_(0.1002478087601361079531531328106555493414e0), + SC_(0), SC_(0.466996612548828125e2), SC_(0.1093312781568777333543706682350852686496e0), + SC_(0), SC_(0.47858348846435546875e2), SC_(0.6173117074433275797673442689748870252433e-2), + SC_(0), SC_(0.4787534332275390625e2), SC_(0.4214269749343140372639153683731024716149e-2), + SC_(0), SC_(0.47974620819091796875e2), SC_(-0.7221017162650168684644534187509493067458e-2), + SC_(0), SC_(0.48244426727294921875e2), SC_(-0.3749948283323452728759672710131060037256e-1), + SC_(0), SC_(0.48384746551513671875e2), SC_(-0.5224122081317449129185406414204132435727e-1), + SC_(0), SC_(0.48443389892578125e2), SC_(-0.5810149952964139807372900859379505792103e-1), + SC_(0), SC_(0.4852964019775390625e2), SC_(-0.6633946207791363484342690704116317279187e-1), + SC_(0), SC_(0.49055484771728515625e2), SC_(-0.1036808657798402644495161610234081710331e0), + SC_(0), SC_(0.4964406585693359375e2), SC_(-0.1117659301811653699040137406534766658576e0), + SC_(0), SC_(0.4982306671142578125e2), SC_(-0.1065466287843043964466710578381452573432e0), + SC_(0.1e1), SC_(0.23917420208454132080078125e0), SC_(-0.2816025505957848702890230692737435583999e1), + SC_(0.1e1), SC_(0.1785583972930908203125e1), SC_(-0.2323574880952473756698741233078133158232e0), + SC_(0.1e1), SC_(0.48770198822021484375e1), SC_(0.1887793753606189589996790522700420589945e0), + SC_(0.1e1), SC_(0.54930877685546875e1), SC_(-0.2143954097552594432326297820690591750424e-1), + SC_(0.1e1), SC_(0.5623225688934326171875e1), SC_(-0.6432984460938437015021689712475734307787e-1), + SC_(0.1e1), SC_(0.6349340915679931640625e1), SC_(-0.2511307972102585372917123452584402539094e0), + SC_(0.1e1), SC_(0.677385044097900390625e1), SC_(-0.2989785036869612052873436440028846450436e0), + SC_(0.1e1), SC_(0.7094316959381103515625e1), SC_(-0.2997377139745232636871782332312475969025e0), + SC_(0.1e1), SC_(0.788065433502197265625e1), SC_(-0.186133051469056393893281692679499181405e0), + SC_(0.1e1), SC_(0.941909885406494140625e1), SC_(0.190361227136102466719822742808004416221e0), + SC_(0.1e1), SC_(0.105962162017822265625e2), SC_(0.2240497166044468367366329478931466799755e0), + SC_(0.1e1), SC_(0.110517024993896484375e2), SC_(0.1540160818741671628552636923084057652304e0), + SC_(0.1e1), SC_(0.139249114990234375e2), SC_(-0.1766396467501490164858936378782126340342e0), + SC_(0.1e1), SC_(0.1485147190093994140625e2), SC_(-0.9506363681079245319129321117867079275859e-2), + SC_(0.1e1), SC_(0.15408351898193359375e2), SC_(0.99321403407708436538763939792420633861e-1), + SC_(0.1e1), SC_(0.180646991729736328125e2), SC_(-0.3995388258078618389192173389771024944513e-2), + SC_(0.1e1), SC_(0.199369258880615234375e2), SC_(-0.1696600513329557121425560056217261449047e0), + SC_(0.1e1), SC_(0.210880641937255859375e2), SC_(-0.1733957455990071497842225993373989557431e-1), + SC_(0.1e1), SC_(0.242687816619873046875e2), SC_(0.1021971395701211404109265949334393638881e-1), + SC_(0.1e1), SC_(0.25183135986328125e2), SC_(-0.119556229137516783528551234301878875503e0), + SC_(0.1e1), SC_(0.27344074249267578125e2), SC_(-0.1995985480706287524814653648262685912676e-1), + SC_(0.1e1), SC_(0.273610286712646484375e2), SC_(-0.173876060044410140856275457334661052251e-1), + SC_(0.1e1), SC_(0.316179637908935546875e2), SC_(-0.1193701231934014102558224854153342610094e0), + SC_(0.1e1), SC_(0.3198816680908203125e2), SC_(-0.1382462102065444071353719726581548003019e0), + SC_(0.1e1), SC_(0.327870330810546875e2), SC_(-0.1152502985662088783214562688328306893687e0), + SC_(0.1e1), SC_(0.33936756134033203125e2), SC_(0.2394218295328153690551974191920973663242e-1), + SC_(0.1e1), SC_(0.340679779052734375e2), SC_(0.4129906123027152853078275121624211732661e-1), + SC_(0.1e1), SC_(0.362919464111328125e2), SC_(0.7604014342236898104501488355770421840119e-1), + SC_(0.1e1), SC_(0.396103668212890625e2), SC_(-0.5348553383812884892017999878337862380908e-1), + SC_(0.1e1), SC_(0.3989643096923828125e2), SC_(-0.1881415396910400076456852195968705619502e-1), + SC_(0.1e1), SC_(0.39905292510986328125e2), SC_(-0.1770468345557173172933692614949148322983e-1), + SC_(0.1e1), SC_(0.400140228271484375e2), SC_(-0.4025288726928248087599225614592773179551e-2), + SC_(0.1e1), SC_(0.4073618316650390625e2), SC_(0.7959115261091509104088861641763392149822e-1), + SC_(0.1e1), SC_(0.4175042724609375e2), SC_(0.1224013166060462132230567141290330120648e0), + SC_(0.1e1), SC_(0.424564666748046875e2), SC_(0.8181451309209186481544883864207065020545e-1), + SC_(0.1e1), SC_(0.4392153167724609375e2), SC_(-0.8057815233036708376163307599491467159994e-1), + SC_(0.1e1), SC_(0.452895965576171875e2), SC_(-0.1022936127451748973670400377224684952561e0), + SC_(0.1e1), SC_(0.45668792724609375e2), SC_(-0.725345130575250866364960202825599272059e-1), + SC_(0.1e1), SC_(0.45786777496337890625e2), SC_(-0.6098613412165902384405909899253497503886e-1), + SC_(0.1e1), SC_(0.466996612548828125e2), SC_(0.4213746852981118912882681387493786761666e-1), + SC_(0.1e1), SC_(0.47858348846435546875e2), SC_(0.1152373194909642455028362253859850179066e0), + SC_(0.1e1), SC_(0.4787534332275390625e2), SC_(0.1152846618892812588531426336829335209133e0), + SC_(0.1e1), SC_(0.47974620819091796875e2), SC_(0.1148964835202570220707248379081032143507e0), + SC_(0.1e1), SC_(0.48244426727294921875e2), SC_(0.1081934550363820741605791245861795859361e0), + SC_(0.1e1), SC_(0.48384746551513671875e2), SC_(0.1015812774603423801064358240911218545139e0), + SC_(0.1e1), SC_(0.48443389892578125e2), SC_(0.9822383693317642997910135239495267124437e-1), + SC_(0.1e1), SC_(0.4852964019775390625e2), SC_(0.9268396308064766041470606107371977547449e-1), + SC_(0.1e1), SC_(0.49055484771728515625e2), SC_(0.4613847461932302214343079992899045052011e-1), + SC_(0.1e1), SC_(0.4964406585693359375e2), SC_(-0.1933115283084264304511911708126688592758e-1), + SC_(0.1e1), SC_(0.4982306671142578125e2), SC_(-0.3881735371825568460631754621811251910549e-1) + }; +#undef SC_ + + diff --git a/test/bessel_yn_data.ipp b/test/bessel_yn_data.ipp new file mode 100644 index 000000000..e8d964adf --- /dev/null +++ b/test/bessel_yn_data.ipp @@ -0,0 +1,311 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 300> bessel_yn_data = { + SC_(0.3e1), SC_(0.48770198822021484375e1), SC_(0.110763167474753768460862899966350902213e0), + SC_(0.3e1), SC_(0.6349340915679931640625e1), SC_(0.3354120577583840086404698897976135110485e0), + SC_(0.3e1), SC_(0.677385044097900390625e1), SC_(0.3025179709577162581120705977708622170952e0), + SC_(0.3e1), SC_(0.941909885406494140625e1), SC_(-0.2526681038602083570260072993947985762425e0), + SC_(0.3e1), SC_(0.110517024993896484375e2), SC_(-0.7984312482740648942854070462466960846308e-1), + SC_(0.3e1), SC_(0.139249114990234375e2), SC_(0.1365190825919215541308802073699101624338e0), + SC_(0.3e1), SC_(0.15408351898193359375e2), SC_(-0.1428229643813645478620540882069209010424e0), + SC_(0.3e1), SC_(0.27344074249267578125e2), SC_(-0.2323694273239485669670827936469439230487e-2), + SC_(0.3e1), SC_(0.273610286712646484375e2), SC_(-0.4900800934361467422069755250398652540081e-2), + SC_(0.3e1), SC_(0.316179637908935546875e2), SC_(0.1283616028850886874076400480565553924498e0), + SC_(0.3e1), SC_(0.4073618316650390625e2), SC_(-0.8876885924474539097667043483672377859036e-1), + SC_(0.3e1), SC_(0.4175042724609375e2), SC_(-0.1204076921163476847306821484924527347889e0), + SC_(0.3e1), SC_(0.452895965576171875e2), SC_(0.9669959686067408105414856540894770457144e-1), + SC_(0.3e1), SC_(0.45668792724609375e2), SC_(0.6416654049008983918193469604019080196524e-1), + SC_(0.3e1), SC_(0.48443389892578125e2), SC_(-0.9309152059642734958018227116834056340071e-1), + SC_(0.6e1), SC_(0.48770198822021484375e1), SC_(-0.7682201721816641589208505594820750775031e0), + SC_(0.6e1), SC_(0.6349340915679931640625e1), SC_(-0.3479423535919170112541557568046971845486e0), + SC_(0.6e1), SC_(0.677385044097900390625e1), SC_(-0.2518297913144822384948024722074769783391e0), + SC_(0.6e1), SC_(0.941909885406494140625e1), SC_(0.2696495425502131298219276073956952657041e0), + SC_(0.6e1), SC_(0.110517024993896484375e2), SC_(0.1579058061166539049950139801492495632319e0), + SC_(0.6e1), SC_(0.139249114990234375e2), SC_(-0.214638507088782708332760891144120271447e0), + SC_(0.6e1), SC_(0.15408351898193359375e2), SC_(0.1846008639272405573148078141757591445936e-1), + SC_(0.6e1), SC_(0.27344074249267578125e2), SC_(-0.1347270014641035443110406257337437495382e0), + SC_(0.6e1), SC_(0.273610286712646484375e2), SC_(-0.1334153397469278773891149524770013367273e0), + SC_(0.6e1), SC_(0.316179637908935546875e2), SC_(0.2378484491732698166359206052246509293721e-2), + SC_(0.6e1), SC_(0.4073618316650390625e2), SC_(-0.5472472826251697058558978710700928656814e-1), + SC_(0.6e1), SC_(0.4175042724609375e2), SC_(0.6520327308993981465264074827650561383002e-1), + SC_(0.6e1), SC_(0.452895965576171875e2), SC_(-0.9452992234494168858802163379037878510028e-1), + SC_(0.6e1), SC_(0.45668792724609375e2), SC_(-0.1140314635876510494905774064172128035215e0), + SC_(0.6e1), SC_(0.48443389892578125e2), SC_(0.9039125064888635209873025550900765793581e-1), + SC_(0.9e1), SC_(0.48770198822021484375e1), SC_(-0.9297117648579269026592450591820736286048e1), + SC_(0.9e1), SC_(0.6349340915679931640625e1), SC_(-0.1642785653883350207327509679573278148917e1), + SC_(0.9e1), SC_(0.677385044097900390625e1), SC_(-0.1163556464540991454316123708406235280022e1), + SC_(0.9e1), SC_(0.941909885406494140625e1), SC_(-0.3010601044539710017331500982549858067088e0), + SC_(0.9e1), SC_(0.110517024993896484375e2), SC_(-0.2324009087284838473547366749630392221952e-2), + SC_(0.9e1), SC_(0.139249114990234375e2), SC_(0.2214037020748939190117162404706773042894e0), + SC_(0.9e1), SC_(0.15408351898193359375e2), SC_(-0.8624940937284109551983786643262863800438e-2), + SC_(0.9e1), SC_(0.27344074249267578125e2), SC_(0.1529842094320696329428609651300091107366e0), + SC_(0.9e1), SC_(0.273610286712646484375e2), SC_(0.1534759546343323314550340680130494112099e0), + SC_(0.9e1), SC_(0.316179637908935546875e2), SC_(-0.1106752036561379100843137124587521895002e0), + SC_(0.9e1), SC_(0.4073618316650390625e2), SC_(0.1258819156633191815287890960535453440772e0), + SC_(0.9e1), SC_(0.4175042724609375e2), SC_(0.5724965886188775547845432977443031893556e-1), + SC_(0.9e1), SC_(0.452895965576171875e2), SC_(-0.1845007406807998875290607621548958463304e-1), + SC_(0.9e1), SC_(0.45668792724609375e2), SC_(0.2567744007868617975728678932906613386029e-1), + SC_(0.9e1), SC_(0.48443389892578125e2), SC_(0.230902957959941886085023895904914286182e-1), + SC_(0.12e2), SC_(0.48770198822021484375e1), SC_(-0.5014302199056606705943012073033758819751e3), + SC_(0.12e2), SC_(0.6349340915679931640625e1), SC_(-0.3184181647223721856874057494272981331161e2), + SC_(0.12e2), SC_(0.677385044097900390625e1), SC_(-0.1689950411904265377863222612787794563465e2), + SC_(0.12e2), SC_(0.941909885406494140625e1), SC_(-0.1113045406792556884051547016253472888446e1), + SC_(0.12e2), SC_(0.110517024993896484375e2), SC_(-0.4887919143673445189746680356694993315599e0), + SC_(0.12e2), SC_(0.139249114990234375e2), SC_(-0.5164270636697790648727679099312164508566e-1), + SC_(0.12e2), SC_(0.15408351898193359375e2), SC_(0.1641171463260105309258962095572986351808e0), + SC_(0.12e2), SC_(0.27344074249267578125e2), SC_(-0.1313908322913451851763761649507472357274e0), + SC_(0.12e2), SC_(0.273610286712646484375e2), SC_(-0.1327409819989311784031204560420443662466e0), + SC_(0.12e2), SC_(0.316179637908935546875e2), SC_(0.1459273101591621646487444827617739570529e0), + SC_(0.12e2), SC_(0.4073618316650390625e2), SC_(-0.9912101628665068614729233884578138310206e-1), + SC_(0.12e2), SC_(0.4175042724609375e2), SC_(-0.1210187021716223197235412947902227468745e0), + SC_(0.12e2), SC_(0.452895965576171875e2), SC_(0.1031061645767935052995708616490540524693e0), + SC_(0.12e2), SC_(0.45668792724609375e2), SC_(0.7348747656449140685461449731713104253185e-1), + SC_(0.12e2), SC_(0.48443389892578125e2), SC_(-0.104644764861527467660104682568902187136e0), + SC_(0.15e2), SC_(0.48770198822021484375e1), SC_(-0.666835354744947947091675381536305560756e5), + SC_(0.15e2), SC_(0.6349340915679931640625e1), SC_(-0.173729680482248942219130294732963316738e4), + SC_(0.15e2), SC_(0.677385044097900390625e1), SC_(-0.7318674423901733450279878419863714169138e3), + SC_(0.15e2), SC_(0.941909885406494140625e1), SC_(-0.1227797563147048810430867118311815267114e2), + SC_(0.15e2), SC_(0.110517024993896484375e2), SC_(-0.2336439631002320795333551729067096369295e1), + SC_(0.15e2), SC_(0.139249114990234375e2), SC_(-0.4608554067953761333240509889177356652562e0), + SC_(0.15e2), SC_(0.15408351898193359375e2), SC_(-0.2650007170730137552006350126116876981542e0), + SC_(0.15e2), SC_(0.27344074249267578125e2), SC_(0.1339393015080547697867316027047186886737e0), + SC_(0.15e2), SC_(0.273610286712646484375e2), SC_(0.1352764957654073478496974616598867736456e0), + SC_(0.15e2), SC_(0.316179637908935546875e2), SC_(-0.1504167696767632660980135636348239887166e0), + SC_(0.15e2), SC_(0.4073618316650390625e2), SC_(0.4192895741965062819366359688077289580721e-1), + SC_(0.15e2), SC_(0.4175042724609375e2), SC_(0.1222369456557319980687974057240153639664e0), + SC_(0.15e2), SC_(0.452895965576171875e2), SC_(-0.1212314948571698710841160352735037017439e0), + SC_(0.15e2), SC_(0.45668792724609375e2), SC_(-0.117929273832001751151211995799064238057e0), + SC_(0.15e2), SC_(0.48443389892578125e2), SC_(0.1133197238546128580729495578555993628308e0), + SC_(0.18e2), SC_(0.48770198822021484375e1), SC_(-0.1735006375409931866095877212397092601486e8), + SC_(0.18e2), SC_(0.6349340915679931640625e1), SC_(-0.1931345446044047628299354348757244520564e6), + SC_(0.18e2), SC_(0.677385044097900390625e1), SC_(-0.6562338168138688104175526311745778766709e5), + SC_(0.18e2), SC_(0.941909885406494140625e1), SC_(-0.3414245342500632489013066595244217862939e3), + SC_(0.18e2), SC_(0.110517024993896484375e2), SC_(-0.3342370864484154776921067730649931623749e2), + SC_(0.18e2), SC_(0.139249114990234375e2), SC_(-0.1925986338761310029583252021688787248734e1), + SC_(0.18e2), SC_(0.15408351898193359375e2), SC_(-0.7729891320320143670131205933282193832589e0), + SC_(0.18e2), SC_(0.27344074249267578125e2), SC_(-0.1693713632672311004500375437482770352724e0), + SC_(0.18e2), SC_(0.273610286712646484375e2), SC_(-0.169861300144376471128043717084906663622e0), + SC_(0.18e2), SC_(0.316179637908935546875e2), SC_(0.1563695685362752509428656687488096674676e0), + SC_(0.18e2), SC_(0.4073618316650390625e2), SC_(-0.123598598293883990094119772796947997619e-2), + SC_(0.18e2), SC_(0.4175042724609375e2), SC_(-0.1035816216055041714196396538346417208839e0), + SC_(0.18e2), SC_(0.452895965576171875e2), SC_(0.1043274265755935855106359131946658832855e0), + SC_(0.18e2), SC_(0.45668792724609375e2), SC_(0.1201881752927240427353419474405213705808e0), + SC_(0.18e2), SC_(0.48443389892578125e2), SC_(-0.8309624755011994592399503020642724269056e-1), + SC_(0.21e2), SC_(0.48770198822021484375e1), SC_(-0.7753821734416440873812393125485540325052e10), + SC_(0.21e2), SC_(0.6349340915679931640625e1), SC_(-0.3759868228594510202039725582719047882076e8), + SC_(0.21e2), SC_(0.677385044097900390625e1), SC_(-0.1037725906923191533052745601541569584266e8), + SC_(0.21e2), SC_(0.941909885406494140625e1), SC_(-0.1792312356947587111357560321883440343677e5), + SC_(0.21e2), SC_(0.110517024993896484375e2), SC_(-0.9816264308635109952262612473147845726117e3), + SC_(0.21e2), SC_(0.139249114990234375e2), SC_(-0.2127234712177029865639640613243979901087e2), + SC_(0.21e2), SC_(0.15408351898193359375e2), SC_(-0.4929530434109934804775310785854955847031e1), + SC_(0.21e2), SC_(0.27344074249267578125e2), SC_(0.1633000115931048781050122700079249067998e0), + SC_(0.21e2), SC_(0.273610286712646484375e2), SC_(0.1621093772190383209869937458074600220423e0), + SC_(0.21e2), SC_(0.316179637908935546875e2), SC_(-0.1513673625278760171223693576020059281231e0), + SC_(0.21e2), SC_(0.4073618316650390625e2), SC_(-0.8688767252744713843809375160645039487404e-2), + SC_(0.21e2), SC_(0.4175042724609375e2), SC_(0.9607878571353470463741773008046900188416e-1), + SC_(0.21e2), SC_(0.452895965576171875e2), SC_(-0.8741240150691469640654788323619280887104e-1), + SC_(0.21e2), SC_(0.45668792724609375e2), SC_(-0.1118492488032765870829767925254453767725e0), + SC_(0.21e2), SC_(0.48443389892578125e2), SC_(0.5199149092587105686782906210189564424145e-1), + SC_(0.24e2), SC_(0.48770198822021484375e1), SC_(-0.5461443876290786061809351447005645823262e13), + SC_(0.24e2), SC_(0.6349340915679931640625e1), SC_(-0.1166363089113358135443687855049318526504e11), + SC_(0.24e2), SC_(0.677385044097900390625e1), SC_(-0.2625133599502869464265375659393314730809e10), + SC_(0.24e2), SC_(0.941909885406494140625e1), SC_(-0.1557563982037263340582977212038997882649e7), + SC_(0.24e2), SC_(0.110517024993896484375e2), SC_(-0.4936461096398447103587648423487124265789e5), + SC_(0.24e2), SC_(0.139249114990234375e2), SC_(-0.4525227622995130407205035914097509628284e3), + SC_(0.24e2), SC_(0.15408351898193359375e2), SC_(-0.6838579391319029823184512700439766716529e2), + SC_(0.24e2), SC_(0.27344074249267578125e2), SC_(0.5830535937469980667664835132960579367079e-1), + SC_(0.24e2), SC_(0.273610286712646484375e2), SC_(0.5998908727772662300265268904568615954016e-1), + SC_(0.24e2), SC_(0.316179637908935546875e2), SC_(0.6450139374267427248002925668160089583638e-1), + SC_(0.24e2), SC_(0.4073618316650390625e2), SC_(-0.1657940235883360981964182195730278115219e-1), + SC_(0.24e2), SC_(0.4175042724609375e2), SC_(-0.1105961304327233662670573989206262285811e0), + SC_(0.24e2), SC_(0.452895965576171875e2), SC_(0.8827277758648920696119545891866298767649e-1), + SC_(0.24e2), SC_(0.45668792724609375e2), SC_(0.1127450351424643915561539984192859049149e0), + SC_(0.24e2), SC_(0.48443389892578125e2), SC_(-0.3904998353413187566910152336494460572733e-1), + SC_(0.27e2), SC_(0.48770198822021484375e1), SC_(-0.5700229879022840457171635396240656193837e16), + SC_(0.27e2), SC_(0.6349340915679931640625e1), SC_(-0.5398683696415433161973740320342388130399e13), + SC_(0.27e2), SC_(0.677385044097900390625e1), SC_(-0.9932607825446184225983016261896537934062e12), + SC_(0.27e2), SC_(0.941909885406494140625e1), SC_(-0.2066111827233993913234737443579213592631e9), + SC_(0.27e2), SC_(0.110517024993896484375e2), SC_(-0.3859963517479935508952474073070085480419e7), + SC_(0.27e2), SC_(0.139249114990234375e2), SC_(-0.1575833003576965837138680244394865501962e5), + SC_(0.27e2), SC_(0.15408351898193359375e2), SC_(-0.1624401453813190226441561523350858287342e4), + SC_(0.27e2), SC_(0.27344074249267578125e2), SC_(-0.2304841560742319228562155146496514571912e0), + SC_(0.27e2), SC_(0.273610286712646484375e2), SC_(-0.2291104911920783871735474862332852318047e0), + SC_(0.27e2), SC_(0.316179637908935546875e2), SC_(0.146919681225764025208625464704925761097e0), + SC_(0.27e2), SC_(0.4073618316650390625e2), SC_(0.7870921593406705963080756994997274488282e-1), + SC_(0.27e2), SC_(0.4175042724609375e2), SC_(0.1377040623482925264077068216102224276994e0), + SC_(0.27e2), SC_(0.452895965576171875e2), SC_(-0.1097401858162375653284138113096804910789e0), + SC_(0.27e2), SC_(0.45668792724609375e2), SC_(-0.1260546859890806748764811329954061199216e0), + SC_(0.27e2), SC_(0.48443389892578125e2), SC_(0.5070577955058294270091859102131542430449e-1), + SC_(0.3e2), SC_(0.48770198822021484375e1), SC_(-0.8414585813815509264321238704154870420876e19), + SC_(0.3e2), SC_(0.6349340915679931640625e1), SC_(-0.355071160398021375797759541062133043762e16), + SC_(0.3e2), SC_(0.677385044097900390625e1), SC_(-0.5348702219490385774762362570840178448138e15), + SC_(0.3e2), SC_(0.941909885406494140625e1), SC_(-0.3952612900726184411209755573928998613679e11), + SC_(0.3e2), SC_(0.110517024993896484375e2), SC_(-0.4403298489517262739803601147531589885686e9), + SC_(0.3e2), SC_(0.139249114990234375e2), SC_(-0.8244863139099880895869870989454459989284e6), + SC_(0.3e2), SC_(0.15408351898193359375e2), SC_(-0.5927005358620390584889377499137602702052e5), + SC_(0.3e2), SC_(0.27344074249267578125e2), SC_(-0.5430085500226865192070534427655894031679e0), + SC_(0.3e2), SC_(0.273610286712646484375e2), SC_(-0.5397316653133181707330098871066578788555e0), + SC_(0.3e2), SC_(0.316179637908935546875e2), SC_(-0.1222206355136707773132399071091600011167e0), + SC_(0.3e2), SC_(0.4073618316650390625e2), SC_(-0.1473498529357165481092716822399322989769e0), + SC_(0.3e2), SC_(0.4175042724609375e2), SC_(-0.1329241150408283257931718001988734097587e0), + SC_(0.3e2), SC_(0.452895965576171875e2), SC_(0.1358912030639459939366319242804738135725e0), + SC_(0.3e2), SC_(0.45668792724609375e2), SC_(0.1341162547276849864669792140789503354908e0), + SC_(0.3e2), SC_(0.48443389892578125e2), SC_(-0.8628212563334357261211700506810224122887e-1), + SC_(0.33e2), SC_(0.48770198822021484375e1), SC_(-0.1693784284782744786165845355775974452761e23), + SC_(0.33e2), SC_(0.6349340915679931640625e1), SC_(-0.3194876101799053930195847096244427709109e19), + SC_(0.33e2), SC_(0.677385044097900390625e1), SC_(-0.3944901861540354328204900072177867423959e18), + SC_(0.33e2), SC_(0.941909885406494140625e1), SC_(-0.1045189818626325264118989008475901683727e14), + SC_(0.33e2), SC_(0.110517024993896484375e2), SC_(-0.6997251523653067084112138177574188638729e11), + SC_(0.33e2), SC_(0.139249114990234375e2), SC_(-0.6124024653828636752373676028415269079948e8), + SC_(0.33e2), SC_(0.15408351898193359375e2), SC_(-0.311143445577558554120437367987717666667e7), + SC_(0.33e2), SC_(0.27344074249267578125e2), SC_(-0.2131645568741100052609901708893666980648e1), + SC_(0.33e2), SC_(0.273610286712646484375e2), SC_(-0.2109339341477468335326929799639456480986e1), + SC_(0.33e2), SC_(0.316179637908935546875e2), SC_(-0.3494376433920678648399134899158871555997e0), + SC_(0.33e2), SC_(0.4073618316650390625e2), SC_(0.1095596495191871690624590338016882218436e0), + SC_(0.33e2), SC_(0.4175042724609375e2), SC_(0.1994018773601119665794680584215570776157e-1), + SC_(0.33e2), SC_(0.452895965576171875e2), SC_(-0.117141110298028054083962112086783615652e0), + SC_(0.33e2), SC_(0.45668792724609375e2), SC_(-0.9110882944580968804355001551429252507732e-1), + SC_(0.33e2), SC_(0.48443389892578125e2), SC_(0.1283726343387552512019823161796983521583e0), + SC_(0.36e2), SC_(0.48770198822021484375e1), SC_(-0.4514086098138169973226030174034617738601e26), + SC_(0.36e2), SC_(0.6349340915679931640625e1), SC_(-0.381527462358309928073555380802117838104e22), + SC_(0.36e2), SC_(0.677385044097900390625e1), SC_(-0.3864705277024927518681134460914641631118e21), + SC_(0.36e2), SC_(0.941909885406494140625e1), SC_(-0.3695521231167434412849111458028999950705e16), + SC_(0.36e2), SC_(0.110517024993896484375e2), SC_(-0.1495013134817261901719756533597851889758e14), + SC_(0.36e2), SC_(0.139249114990234375e2), SC_(-0.6196420279439685191659884689826287903961e10), + SC_(0.36e2), SC_(0.15408351898193359375e2), SC_(-0.2244917516984348627389323607107640171731e9), + SC_(0.36e2), SC_(0.27344074249267578125e2), SC_(-0.1545427238791694297400129988367380768401e2), + SC_(0.36e2), SC_(0.273610286712646484375e2), SC_(-0.1523915770558155873570691291184852714414e2), + SC_(0.36e2), SC_(0.316179637908935546875e2), SC_(-0.9471823176252754612212600210916028343601e0), + SC_(0.36e2), SC_(0.4073618316650390625e2), SC_(0.1173425902348136586318833789495612852355e0), + SC_(0.36e2), SC_(0.4175042724609375e2), SC_(0.161213752895956137670111737354907566266e0), + SC_(0.36e2), SC_(0.452895965576171875e2), SC_(-0.9809890796436754979940541980047075943712e-2), + SC_(0.36e2), SC_(0.45668792724609375e2), SC_(-0.4400083682264260689426444674935174217496e-1), + SC_(0.36e2), SC_(0.48443389892578125e2), SC_(-0.1217719085278386136058589800678093840029e0), + SC_(0.39e2), SC_(0.48770198822021484375e1), SC_(-0.1554597256004980110812710730381202390693e30), + SC_(0.39e2), SC_(0.6349340915679931640625e1), SC_(-0.5898284655302538808806988321276025813845e25), + SC_(0.39e2), SC_(0.677385044097900390625e1), SC_(-0.4904509402336609269919728103147054195654e24), + SC_(0.39e2), SC_(0.941909885406494140625e1), SC_(-0.1701017598526523993821571611323638754576e19), + SC_(0.39e2), SC_(0.110517024993896484375e2), SC_(-0.417530693969750949899048280358754304865e16), + SC_(0.39e2), SC_(0.139249114990234375e2), SC_(-0.82735284556625303260320668828414334725e12), + SC_(0.39e2), SC_(0.15408351898193359375e2), SC_(-0.2150905699012014456845831243381060537536e11), + SC_(0.39e2), SC_(0.27344074249267578125e2), SC_(-0.173136202360576514562595059683668653722e3), + SC_(0.39e2), SC_(0.273610286712646484375e2), SC_(-0.170234226215207199774450660598470420203e3), + SC_(0.39e2), SC_(0.316179637908935546875e2), SC_(-0.476564200718666827425515092297538626754e1), + SC_(0.39e2), SC_(0.4073618316650390625e2), SC_(-0.1139728443291009808277788472915789866764e0), + SC_(0.39e2), SC_(0.4175042724609375e2), SC_(-0.3789392025172586855842365357167594570805e-1), + SC_(0.39e2), SC_(0.452895965576171875e2), SC_(0.1632271611911285678989399827341146194315e0), + SC_(0.39e2), SC_(0.45668792724609375e2), SC_(0.1627608022568010137669993716629446289949e0), + SC_(0.39e2), SC_(0.48443389892578125e2), SC_(-0.3909325122429817340070823484524675983864e-2), + SC_(0.42e2), SC_(0.48770198822021484375e1), SC_(-0.6778761113696976108831204681937591870923e33), + SC_(0.42e2), SC_(0.6349340915679931640625e1), SC_(-0.1156175851690544099284032996632355510762e29), + SC_(0.42e2), SC_(0.677385044097900390625e1), SC_(-0.7895552037472749766365607521724398751657e27), + SC_(0.42e2), SC_(0.941909885406494140625e1), SC_(-0.9970250213779731769482155702312393531646e21), + SC_(0.42e2), SC_(0.110517024993896484375e2), SC_(-0.1489524208745775017256038034837378483054e19), + SC_(0.42e2), SC_(0.139249114990234375e2), SC_(-0.1421193372601400943383360047532395451619e15), + SC_(0.42e2), SC_(0.15408351898193359375e2), SC_(-0.266364645856547563022563347741616424841e13), + SC_(0.42e2), SC_(0.27344074249267578125e2), SC_(-0.2743088520517812194850488183554456816175e4), + SC_(0.42e2), SC_(0.273610286712646484375e2), SC_(-0.2690083634003523361552911979208904087728e4), + SC_(0.42e2), SC_(0.316179637908935546875e2), SC_(-0.384805041736847573781666237608273412272e2), + SC_(0.42e2), SC_(0.4073618316650390625e2), SC_(-0.3041722094268398285198996796280539333307e0), + SC_(0.42e2), SC_(0.4175042724609375e2), SC_(-0.237942599990390419264117350357852632925e0), + SC_(0.42e2), SC_(0.452895965576171875e2), SC_(-0.1769165908357241638186400615615275561375e-2), + SC_(0.42e2), SC_(0.45668792724609375e2), SC_(0.2627264307139144752250072910959109882562e-1), + SC_(0.42e2), SC_(0.48443389892578125e2), SC_(0.1595445273747734203624873579243265164658e0), + SC_(0.45e2), SC_(0.48770198822021484375e1), SC_(-0.3678158809277406631158967826248579712809e37), + SC_(0.45e2), SC_(0.6349340915679931640625e1), SC_(-0.2823290277495845250473189621249822637552e32), + SC_(0.45e2), SC_(0.677385044097900390625e1), SC_(-0.1584048114824233231915994262683772557843e31), + SC_(0.45e2), SC_(0.941909885406494140625e1), SC_(-0.7304744289889455012949611900475401935963e24), + SC_(0.45e2), SC_(0.110517024993896484375e2), SC_(-0.6658312289631602826704537808573997071741e21), + SC_(0.45e2), SC_(0.139249114990234375e2), SC_(-0.3075861182582574432943275662208173510923e17), + SC_(0.45e2), SC_(0.15408351898193359375e2), SC_(-0.4170869187140386729800751855187493963783e15), + SC_(0.45e2), SC_(0.27344074249267578125e2), SC_(-0.5841747054602714111411632231058985786773e5), + SC_(0.45e2), SC_(0.273610286712646484375e2), SC_(-0.5714873510732163760028674196101817926392e5), + SC_(0.45e2), SC_(0.316179637908935546875e2), SC_(-0.4439504087675916287818144789832290059488e3), + SC_(0.45e2), SC_(0.4073618316650390625e2), SC_(-0.7185408908955997967519881533646995655741e0), + SC_(0.45e2), SC_(0.4175042724609375e2), SC_(-0.5010756124409158401140594717316266404372e0), + SC_(0.45e2), SC_(0.452895965576171875e2), SC_(-0.2012825578255357825420510083651093929494e0), + SC_(0.45e2), SC_(0.45668792724609375e2), SC_(-0.1794186322536855399767456087221221709347e0), + SC_(0.45e2), SC_(0.48443389892578125e2), SC_(0.4019015729778697779336545231834378773906e-2), + SC_(0.48e2), SC_(0.48770198822021484375e1), SC_(-0.2446594481694463075060840320557933670105e41), + SC_(0.48e2), SC_(0.6349340915679931640625e1), SC_(-0.8459207003255131733462304451406482680612e35), + SC_(0.48e2), SC_(0.677385044097900390625e1), SC_(-0.3900585059507033418338520667611796016876e34), + SC_(0.48e2), SC_(0.941909885406494140625e1), SC_(-0.6584509350557438141050929296978384665502e27), + SC_(0.48e2), SC_(0.110517024993896484375e2), SC_(-0.3668948448136800346846820718406706247001e24), + SC_(0.48e2), SC_(0.139249114990234375e2), SC_(-0.8242020060037745753714812787166372607277e19), + SC_(0.48e2), SC_(0.15408351898193359375e2), SC_(-0.8108471636196350279814807195501067088811e17), + SC_(0.48e2), SC_(0.27344074249267578125e2), SC_(-0.161478450826312060240470478671833452801e7), + SC_(0.48e2), SC_(0.273610286712646484375e2), SC_(-0.1576027872751121787147362803310570448531e7), + SC_(0.48e2), SC_(0.316179637908935546875e2), SC_(-0.6897332324403501516059328674303313990342e4), + SC_(0.48e2), SC_(0.4073618316650390625e2), SC_(-0.2873562437345553411051362683296702801187e1), + SC_(0.48e2), SC_(0.4175042724609375e2), SC_(-0.1645050914310854634110662323482130128629e1), + SC_(0.48e2), SC_(0.452895965576171875e2), SC_(-0.4095205157936721724910226616684093867583e0), + SC_(0.48e2), SC_(0.45668792724609375e2), SC_(-0.3702549409277610055202576821426084296534e0), + SC_(0.48e2), SC_(0.48443389892578125e2), SC_(-0.1889064785963676989110283778976852771445e0), + SC_(0.51e2), SC_(0.48770198822021484375e1), SC_(-0.1969182678091137840672922747889170648771e45), + SC_(0.51e2), SC_(0.6349340915679931640625e1), SC_(-0.3069134439111231226532450141215242288989e39), + SC_(0.51e2), SC_(0.677385044097900390625e1), SC_(-0.1163353956243705422475270788219762868015e38), + SC_(0.51e2), SC_(0.941909885406494140625e1), SC_(-0.7202983789334716962996909315059777818759e30), + SC_(0.51e2), SC_(0.110517024993896484375e2), SC_(-0.245737676689172511133503788575172294214e27), + SC_(0.51e2), SC_(0.139249114990234375e2), SC_(-0.2693876853731198001028217985845998477702e22), + SC_(0.51e2), SC_(0.15408351898193359375e2), SC_(-0.1927060716887504354505080102215582890868e20), + SC_(0.51e2), SC_(0.27344074249267578125e2), SC_(-0.5643892233771978378997816826534156972962e8), + SC_(0.51e2), SC_(0.273610286712646484375e2), SC_(-0.5496011251862539066107336526262783112098e8), + SC_(0.51e2), SC_(0.316179637908935546875e2), SC_(-0.1389344839181512847834347831384757681674e6), + SC_(0.51e2), SC_(0.4073618316650390625e2), SC_(-0.1776984353347768195784367735005036727279e2), + SC_(0.51e2), SC_(0.4175042724609375e2), SC_(-0.872915584752688114103030525708943114106e1), + SC_(0.51e2), SC_(0.452895965576171875e2), SC_(-0.1161540076556705952629084092382499590939e1), + SC_(0.51e2), SC_(0.45668792724609375e2), SC_(-0.9803416521580276513923752432914532429705e0), + SC_(0.51e2), SC_(0.48443389892578125e2), SC_(-0.3793943440135667994381484637963819220083e0), + SC_(0.54e2), SC_(0.48770198822021484375e1), SC_(-0.1895955328653395662512658715131596618242e49), + SC_(0.54e2), SC_(0.6349340915679931640625e1), SC_(-0.1332861075842053738784438239373281251896e43), + SC_(0.54e2), SC_(0.677385044097900390625e1), SC_(-0.415400028628792112351061646920744162805e41), + SC_(0.54e2), SC_(0.941909885406494140625e1), SC_(-0.9448773063492740921951882034107555889314e33), + SC_(0.54e2), SC_(0.110517024993896484375e2), SC_(-0.1976226953367884232990383015948873832395e30), + SC_(0.54e2), SC_(0.139249114990234375e2), SC_(-0.1060239929445304895052402195312333832751e25), + SC_(0.54e2), SC_(0.15408351898193359375e2), SC_(-0.5524852310470588596167631811840899911653e22), + SC_(0.54e2), SC_(0.27344074249267578125e2), SC_(-0.2443271932118273203257306735627770090503e10), + SC_(0.54e2), SC_(0.273610286712646484375e2), SC_(-0.2374028629035348856642105835047755802793e10), + SC_(0.54e2), SC_(0.316179637908935546875e2), SC_(-0.3530147161153490224199678627355098967203e7), + SC_(0.54e2), SC_(0.4073618316650390625e2), SC_(-0.1523687692433405507809303644341462788826e3), + SC_(0.54e2), SC_(0.4175042724609375e2), SC_(-0.6588811991238001972711661692129876612553e2), + SC_(0.54e2), SC_(0.452895965576171875e2), SC_(-0.5340581063654305505018449302519149157836e1), + SC_(0.54e2), SC_(0.45668792724609375e2), SC_(-0.4241843123154779988294497423588841413993e1), + SC_(0.54e2), SC_(0.48443389892578125e2), SC_(-0.101007717644958422192422706197265435244e1), + SC_(0.57e2), SC_(0.48770198822021484375e1), SC_(-0.2161626205739229156929028218866774547264e53), + SC_(0.57e2), SC_(0.6349340915679931640625e1), SC_(-0.6857816478363427954638793152049033022474e46), + SC_(0.57e2), SC_(0.677385044097900390625e1), SC_(-0.1757633522876923346308719323318346692964e45), + SC_(0.57e2), SC_(0.941909885406494140625e1), SC_(-0.1470724735456049669352892370483504273101e37), + SC_(0.57e2), SC_(0.110517024993896484375e2), SC_(-0.1887826470413712223495666019943375481003e33), + SC_(0.57e2), SC_(0.139249114990234375e2), SC_(-0.4968500213339560352225854720671631559582e27), + SC_(0.57e2), SC_(0.15408351898193359375e2), SC_(-0.1888817184319266555840067091337856309212e25), + SC_(0.57e2), SC_(0.27344074249267578125e2), SC_(-0.1288212844049340614131327714502525981742e12), + SC_(0.57e2), SC_(0.273610286712646484375e2), SC_(-0.1249013008694464348198848991016934457599e12), + SC_(0.57e2), SC_(0.316179637908935546875e2), SC_(-0.1107695891983348156343774480706314333398e9), + SC_(0.57e2), SC_(0.4073618316650390625e2), SC_(-0.1713142312580323786184747142248961806243e4), + SC_(0.57e2), SC_(0.4175042724609375e2), SC_(-0.6604590530228345805227426149899214659609e3), + SC_(0.57e2), SC_(0.452895965576171875e2), SC_(-0.3518710444917558080090981427376821716428e2), + SC_(0.57e2), SC_(0.45668792724609375e2), SC_(-0.2663864616630346108683365093711526997299e2), + SC_(0.57e2), SC_(0.48443389892578125e2), SC_(-0.4306298772312023516324511417973550342892e1), + SC_(0.6e2), SC_(0.48770198822021484375e1), SC_(-0.2892081353968073031088937298478587490074e57), + SC_(0.6e2), SC_(0.6349340915679931640625e1), SC_(-0.4142396646874563143741981167064851524547e50), + SC_(0.6e2), SC_(0.677385044097900390625e1), SC_(-0.8732096096999191430049139445386679139699e48), + SC_(0.6e2), SC_(0.941909885406494140625e1), SC_(-0.2690978379323628746253084206502905589883e40), + SC_(0.6e2), SC_(0.110517024993896484375e2), SC_(-0.2121795509181260451828069876653538790412e36), + SC_(0.6e2), SC_(0.139249114990234375e2), SC_(-0.2744926792364829807723799177062944239004e30), + SC_(0.6e2), SC_(0.15408351898193359375e2), SC_(-0.76223015502590825948030726266442383048e27), + SC_(0.6e2), SC_(0.27344074249267578125e2), SC_(-0.8156824115957781369979544049155027772995e13), + SC_(0.6e2), SC_(0.273610286712646484375e2), SC_(-0.7891899080153060843746196671232001179968e13), + SC_(0.6e2), SC_(0.316179637908935546875e2), SC_(-0.4219761955150242610522454447404911542549e10), + SC_(0.6e2), SC_(0.4073618316650390625e2), SC_(-0.2439731391973693955896903470108472114229e5), + SC_(0.6e2), SC_(0.4175042724609375e2), SC_(-0.8451812456206044962273070236632882957476e4), + SC_(0.6e2), SC_(0.452895965576171875e2), SC_(-0.3079126889383895719027479423955437627905e3), + SC_(0.6e2), SC_(0.45668792724609375e2), SC_(-0.2235394837400507231196792387743951216596e3), + SC_(0.6e2), SC_(0.48443389892578125e2), SC_(-0.2621645109951344510244589118146666833865e2) + }; +#undef SC_ + + diff --git a/test/bessel_yv_data.ipp b/test/bessel_yv_data.ipp new file mode 100644 index 000000000..73d3cf462 --- /dev/null +++ b/test/bessel_yv_data.ipp @@ -0,0 +1,443 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 432> bessel_yv_data = { + SC_(0.177219114266335964202880859375e-2), SC_(0.177219114266335964202880859375e-2), SC_(-0.4109981080896677237358777348659577384814e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.22177286446094512939453125e-2), SC_(-0.3967198166482792888587309535339999462266e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.7444499991834163665771484375e-2), SC_(-0.3196174808457488271204616814902805588745e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.1433600485324859619140625e-1), SC_(-0.277886401743182085883175930163269197664e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.1760916970670223236083984375e-1), SC_(-0.2647863781670063492437517931273354439201e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.6152711808681488037109375e-1), SC_(-0.1849304044017019356004789772749790770502e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.11958599090576171875e0), SC_(-0.1421209575863162389893134075657579819718e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.15262925624847412109375e0), SC_(-0.1262161021028632624881669027784829995884e1), + SC_(0.177219114266335964202880859375e-2), SC_(0.408089816570281982421875e0), SC_(-0.5944072046497630295250342068284430797962e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.6540834903717041015625e0), SC_(-0.2453277969150709954915717817184428440924e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.1097540378570556640625e1), SC_(0.1584374949163769422822208482661516201397e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.30944411754608154296875e1), SC_(0.3458497563774182491234075001630772667854e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.51139926910400390625e1), SC_(-0.3227704013798722509157489558679982720248e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.95070552825927734375e1), SC_(0.1703157314350648605712543095319781057303e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.24750102996826171875e2), SC_(-0.1480199026826370992952794039024870144586e0), + SC_(0.177219114266335964202880859375e-2), SC_(0.637722015380859375e2), SC_(0.1495108590261458231741268546248788758226e-1), + SC_(0.177219114266335964202880859375e-2), SC_(0.1252804412841796875e3), SC_(-0.6570327554025865783732578959902760519929e-1), + SC_(0.177219114266335964202880859375e-2), SC_(0.25554705810546875e3), SC_(-0.1424286729418854798832322396053032304441e-1), + SC_(0.177219114266335964202880859375e-2), SC_(0.503011474609375e3), SC_(-0.1488793551072535726513345519376745937703e-1), + SC_(0.177219114266335964202880859375e-2), SC_(0.10074598388671875e4), SC_(0.2459116676878273669207049701272585713077e-1), + SC_(0.177219114266335964202880859375e-2), SC_(0.1185395751953125e4), SC_(-0.5216296486026963890192536381882756251574e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.353451806640625e4), SC_(0.7150321510933910509861478052167676486744e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.80715478515625e4), SC_(-0.7217584852080900819222715241239866307669e-4), + SC_(0.177219114266335964202880859375e-2), SC_(0.1622925e5), SC_(-0.5289900963274037297853946955886625205773e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.3206622265625e5), SC_(0.3201736535368103742253839832309804984043e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.3636794921875e5), SC_(0.3530160743525716867126510667470988391367e-3), + SC_(0.22177286446094512939453125e-2), SC_(0.177219114266335964202880859375e-2), SC_(-0.4110719287432131383209663091223613660449e1), + SC_(0.22177286446094512939453125e-2), SC_(0.22177286446094512939453125e-2), SC_(-0.3967931677865958623227899442296989234961e1), + SC_(0.22177286446094512939453125e-2), SC_(0.7444499991834163665771484375e-2), SC_(-0.3196888768021427112833222816547069531807e1), + SC_(0.22177286446094512939453125e-2), SC_(0.1433600485324859619140625e-1), SC_(-0.2779570979763027030915138623734707116309e1), + SC_(0.22177286446094512939453125e-2), SC_(0.1760916970670223236083984375e-1), SC_(-0.2648568990595505812071805953119049709201e1), + SC_(0.22177286446094512939453125e-2), SC_(0.6152711808681488037109375e-1), SC_(-0.185000202041826350471111738892195254951e1), + SC_(0.22177286446094512939453125e-2), SC_(0.11958599090576171875e0), SC_(-0.1421904434134942202214431845401629010964e1), + SC_(0.22177286446094512939453125e-2), SC_(0.15262925624847412109375e0), SC_(-0.1262854140408887233259773811621052871948e1), + SC_(0.22177286446094512939453125e-2), SC_(0.408089816570281982421875e0), SC_(-0.5950761265617472237995217111777038762135e0), + SC_(0.22177286446094512939453125e-2), SC_(0.6540834903717041015625e0), SC_(-0.2459534859171060177043599079460653627876e0), + SC_(0.22177286446094512939453125e-2), SC_(0.1097540378570556640625e1), SC_(0.1579332201794321120135728809601595120035e0), + SC_(0.22177286446094512939453125e-2), SC_(0.30944411754608154296875e1), SC_(0.3460521593933925495064774929401352783066e0), + SC_(0.22177286446094512939453125e-2), SC_(0.51139926910400390625e1), SC_(-0.3226720162699480428923607985495542415611e0), + SC_(0.22177286446094512939453125e-2), SC_(0.95070552825927734375e1), SC_(0.1704518545616096824583473906088353974798e0), + SC_(0.22177286446094512939453125e-2), SC_(0.24750102996826171875e2), SC_(-0.1480630443547165728353407967940434766385e0), + SC_(0.22177286446094512939453125e-2), SC_(0.637722015380859375e2), SC_(0.1488194766429228836377915641199018452658e-1), + SC_(0.22177286446094512939453125e-2), SC_(0.1252804412841796875e3), SC_(-0.6572261100873119967302664606455129430061e-1), + SC_(0.22177286446094512939453125e-2), SC_(0.25554705810546875e3), SC_(-0.142093855992607823112630880080107228544e-1), + SC_(0.22177286446094512939453125e-2), SC_(0.503011474609375e3), SC_(-0.1491054423538811528779378781658535282739e-1), + SC_(0.22177286446094512939453125e-2), SC_(0.10074598388671875e4), SC_(0.2458751210966411371396701227739563430579e-1), + SC_(0.22177286446094512939453125e-2), SC_(0.1185395751953125e4), SC_(-0.5200492855806017431912763481277953331404e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.353451806640625e4), SC_(0.7158268136941132273892772334045520934666e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.80715478515625e4), SC_(-0.6596068471414521611228855010215014704418e-4), + SC_(0.22177286446094512939453125e-2), SC_(0.1622925e5), SC_(-0.5292246367479866864908050314944924753669e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.3206622265625e5), SC_(0.320390439737211080762980520435506250823e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.3636794921875e5), SC_(0.3500983370716348944297898811549471925567e-3), + SC_(0.7444499991834163665771484375e-2), SC_(0.177219114266335964202880859375e-2), SC_(-0.4120027412731051041206450410057429639349e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.22177286446094512939453125e-2), SC_(-0.3977105851156557119151823261612798218773e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.7444499991834163665771484375e-2), SC_(-0.3205504928732404892476271281075272444522e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.1433600485324859619140625e-1), SC_(-0.2787987583373352069958752481599007631499e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.1760916970670223236083984375e-1), SC_(-0.2656935742898321978445839607405640033284e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.6152711808681488037109375e-1), SC_(-0.1858171712468613875843642326777393322995e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.11958599090576171875e0), SC_(-0.1430015519366236809172334709693214910441e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.15262925624847412109375e0), SC_(-0.1270941805522165919290496753078963837638e1), + SC_(0.7444499991834163665771484375e-2), SC_(0.408089816570281982421875e0), SC_(-0.6028887952741650472210391450598434501064e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.6540834903717041015625e0), SC_(-0.253272254375116720240110301955438274904e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.1097540378570556640625e1), SC_(0.1520201824220985075413827678589759450294e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.30944411754608154296875e1), SC_(0.3484128787584500743767953634177680046837e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.51139926910400390625e1), SC_(-0.3215065328791237601271218312483710525199e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.95070552825927734375e1), SC_(0.1720422311734142500970235815393168124624e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.24750102996826171875e2), SC_(-0.1485637008291705383805876287336390101122e0), + SC_(0.7444499991834163665771484375e-2), SC_(0.637722015380859375e2), SC_(0.1407034822297315991341655297564501076178e-1), + SC_(0.7444499991834163665771484375e-2), SC_(0.1252804412841796875e3), SC_(-0.6594703326047541907061713679421759907013e-1), + SC_(0.7444499991834163665771484375e-2), SC_(0.25554705810546875e3), SC_(-0.1381608643410309470753787566141410262816e-1), + SC_(0.7444499991834163665771484375e-2), SC_(0.503011474609375e3), SC_(-0.151752265807192360259537475829210125324e-1), + SC_(0.7444499991834163665771484375e-2), SC_(0.10074598388671875e4), SC_(0.2454373914040585157738066701355246448403e-1), + SC_(0.7444499991834163665771484375e-2), SC_(0.1185395751953125e4), SC_(-0.5014906543268439324794963661123810184093e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.353451806640625e4), SC_(0.7251230144724707071573863762664925369871e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.80715478515625e4), SC_(0.6953369197393758981781818649242121542468e-5), + SC_(0.7444499991834163665771484375e-2), SC_(0.1622925e5), SC_(-0.5319567322960577952508664100308821679854e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.3206622265625e5), SC_(0.3229218945935765810090443669915499659257e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.3636794921875e5), SC_(0.3158568198916460292543522938944683153232e-3), + SC_(0.1433600485324859619140625e-1), SC_(0.177219114266335964202880859375e-2), SC_(-0.4134159952672901498743626308790551330992e1), + SC_(0.1433600485324859619140625e-1), SC_(0.22177286446094512939453125e-2), SC_(-0.3990837132176071416552743859631846467869e1), + SC_(0.1433600485324859619140625e-1), SC_(0.7444499991834163665771484375e-2), SC_(-0.3217563179354922543332500792794151411069e1), + SC_(0.1433600485324859619140625e-1), SC_(0.1433600485324859619140625e-1), SC_(-0.2799446740519488969651219625146622998737e1), + SC_(0.1433600485324859619140625e-1), SC_(0.1760916970670223236083984375e-1), SC_(-0.2668245252505030375352857746281865483493e1), + SC_(0.1433600485324859619140625e-1), SC_(0.6152711808681488037109375e-1), SC_(-0.186889810951487968438608309966422611667e1), + SC_(0.1433600485324859619140625e-1), SC_(0.11958599090576171875e0), SC_(-0.1440599803781774335574526240384283073629e1), + SC_(0.1433600485324859619140625e-1), SC_(0.15262925624847412109375e0), SC_(-0.1281485849537878284125998432302154093319e1), + SC_(0.1433600485324859619140625e-1), SC_(0.408089816570281982421875e0), SC_(-0.6130927188528948957629699386553428087544e0), + SC_(0.1433600485324859619140625e-1), SC_(0.6540834903717041015625e0), SC_(-0.2628616657161443753490102972580233083382e0), + SC_(0.1433600485324859619140625e-1), SC_(0.1097540378570556640625e1), SC_(0.1442321647711284365164473485125952896532e0), + SC_(0.1433600485324859619140625e-1), SC_(0.30944411754608154296875e1), SC_(0.3514866696796145177802316946038001144499e0), + SC_(0.1433600485324859619140625e-1), SC_(0.51139926910400390625e1), SC_(-0.3199381849177278131427345797992957474537e0), + SC_(0.1433600485324859619140625e-1), SC_(0.95070552825927734375e1), SC_(0.1741206187508240360674576027852156076872e0), + SC_(0.1433600485324859619140625e-1), SC_(0.24750102996826171875e2), SC_(-0.1492084150385547414276112923072727245566e0), + SC_(0.1433600485324859619140625e-1), SC_(0.637722015380859375e2), SC_(0.1299887757401767858160759862904849183224e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.1252804412841796875e3), SC_(-0.6623612901898277817530531932876652691197e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.25554705810546875e3), SC_(-0.1329610971315120839879080119446416949079e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.503011474609375e3), SC_(-0.1552264157837515558947215728593300366424e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.10074598388671875e4), SC_(0.2448349643616932259319127554623091231607e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.1185395751953125e4), SC_(-0.47696968979306790828599052079788410586e-2), + SC_(0.1433600485324859619140625e-1), SC_(0.353451806640625e4), SC_(0.7373052438334910802888978807399790026358e-2), + SC_(0.1433600485324859619140625e-1), SC_(0.80715478515625e4), SC_(0.103089084794957453201580199017916172336e-3), + SC_(0.1433600485324859619140625e-1), SC_(0.1622925e5), SC_(-0.5355041661602504411571715046096891970658e-2), + SC_(0.1433600485324859619140625e-1), SC_(0.3206622265625e5), SC_(0.3262263227226572779950829863684658963946e-2), + SC_(0.1433600485324859619140625e-1), SC_(0.3636794921875e5), SC_(0.2706771716021933545864407071325455578847e-3), + SC_(0.1760916970670223236083984375e-1), SC_(0.177219114266335964202880859375e-2), SC_(-0.414163021695610839626594818544969888135e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.22177286446094512939453125e-2), SC_(-0.3998026070140048622843715154177888482864e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.7444499991834163665771484375e-2), SC_(-0.3223578342484987127570834604684301589064e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.1433600485324859619140625e-1), SC_(-0.2805041020636338065368011730266984060386e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.1760916970670223236083984375e-1), SC_(-0.267373432386994086040320847241502745921e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.6152711808681488037109375e-1), SC_(-0.1873977940712246327248229129947691547029e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.11958599090576171875e0), SC_(-0.1445584955936751054756344852413175332245e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.15262925624847412109375e0), SC_(-0.1286447747582521750173263376465901265201e1), + SC_(0.1760916970670223236083984375e-1), SC_(0.408089816570281982421875e0), SC_(-0.6179007959306159994943227076029876848904e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.6540834903717041015625e0), SC_(-0.2673921464115963617566602706386145183268e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.1097540378570556640625e1), SC_(0.1405367244577930779444752573642221194523e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.30944411754608154296875e1), SC_(0.3529310757485741487989834078847461593602e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.51139926910400390625e1), SC_(-0.3191807476807918423425983840614851867899e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.95070552825927734375e1), SC_(0.1751003260410698666912982862559683670239e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.24750102996826171875e2), SC_(-0.1495084729585684921291461478816209223886e0), + SC_(0.1760916970670223236083984375e-1), SC_(0.637722015380859375e2), SC_(0.1248946039223008205510939332494376913451e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.1252804412841796875e3), SC_(-0.6637071714440504131055759573477771115416e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.25554705810546875e3), SC_(-0.1304859708108673820507099372068032506799e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.503011474609375e3), SC_(-0.1568701289437447707813809641531635445578e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.10074598388671875e4), SC_(0.2445387849848271978523841180571972475043e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.1185395751953125e4), SC_(-0.4653035771077139081514171654686800186401e-2), + SC_(0.1760916970670223236083984375e-1), SC_(0.353451806640625e4), SC_(0.7430610913917337789479410806889488764298e-2), + SC_(0.1760916970670223236083984375e-1), SC_(0.80715478515625e4), SC_(0.1487458062664166412984226358595502470712e-3), + SC_(0.1760916970670223236083984375e-1), SC_(0.1622925e5), SC_(-0.537167087642907956691133964558344518225e-2), + SC_(0.1760916970670223236083984375e-1), SC_(0.3206622265625e5), SC_(0.3277824155177529590726952113577543721695e-2), + SC_(0.1760916970670223236083984375e-1), SC_(0.3636794921875e5), SC_(0.2492073722350484842676832902730326078634e-3), + SC_(0.6152711808681488037109375e-1), SC_(0.177219114266335964202880859375e-2), SC_(-0.4292940726473448880897730442688338370774e1), + SC_(0.6152711808681488037109375e-1), SC_(0.22177286446094512939453125e-2), SC_(-0.4139594451768182343149316176689693506539e1), + SC_(0.6152711808681488037109375e-1), SC_(0.7444499991834163665771484375e-2), SC_(-0.3324405228509003301543600431690304669101e1), + SC_(0.6152711808681488037109375e-1), SC_(0.1433600485324859619140625e-1), SC_(-0.289116825843158298380019838740552456809e1), + SC_(0.6152711808681488037109375e-1), SC_(0.1760916970670223236083984375e-1), SC_(-0.2756169643209375330425426300012166738459e1), + SC_(0.6152711808681488037109375e-1), SC_(0.6152711808681488037109375e-1), SC_(-0.1941930359957125953844375392293686969652e1), + SC_(0.6152711808681488037109375e-1), SC_(0.11958599090576171875e0), SC_(-0.1510287703059554968070346992508222455085e1), + SC_(0.6152711808681488037109375e-1), SC_(0.15262925624847412109375e0), SC_(-0.1350493103600317134372967104624432827604e1), + SC_(0.6152711808681488037109375e-1), SC_(0.408089816570281982421875e0), SC_(-0.6801012727910123129970618031395633644183e0), + SC_(0.6152711808681488037109375e-1), SC_(0.6540834903717041015625e0), SC_(-0.3266809716404727789897521564028191305653e0), + SC_(0.6152711808681488037109375e-1), SC_(0.1097540378570556640625e1), SC_(0.9121684833092535114160250332060007321553e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.30944411754608154296875e1), SC_(0.3713362444001405892085606575647550468814e0), + SC_(0.6152711808681488037109375e-1), SC_(0.51139926910400390625e1), SC_(-0.3082526106141768675991166438651428774512e0), + SC_(0.6152711808681488037109375e-1), SC_(0.95070552825927734375e1), SC_(0.1877705518067313565933947201563061550321e0), + SC_(0.6152711808681488037109375e-1), SC_(0.24750102996826171875e2), SC_(-0.1531476921994101085162285120136628348174e0), + SC_(0.6152711808681488037109375e-1), SC_(0.637722015380859375e2), SC_(0.562941381137391192098245372472229515696e-2), + SC_(0.6152711808681488037109375e-1), SC_(0.1252804412841796875e3), SC_(-0.6800536247115209633596242822932234847679e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.25554705810546875e3), SC_(-0.969704704114331942524684275330572200605e-2), + SC_(0.6152711808681488037109375e-1), SC_(0.503011474609375e3), SC_(-0.1785058419366988685366579487841757752913e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.10074598388671875e4), SC_(0.2399430046803155251471264438876628392554e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.1185395751953125e4), SC_(-0.3077088266217558875050653104550633805392e-2), + SC_(0.6152711808681488037109375e-1), SC_(0.353451806640625e4), SC_(0.8183303082876395286226387629959940568145e-2), + SC_(0.6152711808681488037109375e-1), SC_(0.80715478515625e4), SC_(0.7604840868773285601052369065861898040009e-3), + SC_(0.6152711808681488037109375e-1), SC_(0.1622925e5), SC_(-0.5580889615501464409500720865934539802095e-2), + SC_(0.6152711808681488037109375e-1), SC_(0.3206622265625e5), SC_(0.3478071919776372267448776161533522487954e-2), + SC_(0.6152711808681488037109375e-1), SC_(0.3636794921875e5), SC_(-0.3927499423390955993421945019764612132227e-4), + SC_(0.11958599090576171875e0), SC_(0.177219114266335964202880859375e-2), SC_(-0.4662711968954806460973605174258521521312e1), + SC_(0.11958599090576171875e0), SC_(0.22177286446094512939453125e-2), SC_(-0.4477138680645578160407689953232324493123e1), + SC_(0.11958599090576171875e0), SC_(0.7444499991834163665771484375e-2), SC_(-0.3527410314260739933949251023527368148888e1), + SC_(0.11958599090576171875e0), SC_(0.1433600485324859619140625e-1), SC_(-0.304548646714993151965168331417548646789e1), + SC_(0.11958599090576171875e0), SC_(0.1760916970670223236083984375e-1), SC_(-0.2898198451540783987616093707567689094637e1), + SC_(0.11958599090576171875e0), SC_(0.6152711808681488037109375e-1), SC_(-0.2034979311731508160444434046301755475242e1), + SC_(0.11958599090576171875e0), SC_(0.11958599090576171875e0), SC_(-0.15918750699490726131708020923177891458e1), + SC_(0.11958599090576171875e0), SC_(0.15262925624847412109375e0), SC_(-0.1429765382269563230335025550811110014582e1), + SC_(0.11958599090576171875e0), SC_(0.408089816570281982421875e0), SC_(-0.7561699826982982853865900164457810379908e0), + SC_(0.11958599090576171875e0), SC_(0.6540834903717041015625e0), SC_(-0.4008071252759831719003923041747667000953e0), + SC_(0.11958599090576171875e0), SC_(0.1097540378570556640625e1), SC_(0.2699659858995017289859369975377052124758e-1), + SC_(0.11958599090576171875e0), SC_(0.30944411754608154296875e1), SC_(0.3928399183339494061316907063772373011542e0), + SC_(0.11958599090576171875e0), SC_(0.51139926910400390625e1), SC_(-0.2917127033288249961640070553378430506292e0), + SC_(0.11958599090576171875e0), SC_(0.95070552825927734375e1), SC_(0.203101380189260169721113461634311026839e0), + SC_(0.11958599090576171875e0), SC_(0.24750102996826171875e2), SC_(-0.1568367813900324087800336277325469365214e0), + SC_(0.11958599090576171875e0), SC_(0.637722015380859375e2), SC_(-0.3470515067358225145580914808778240166558e-2), + SC_(0.11958599090576171875e0), SC_(0.1252804412841796875e3), SC_(-0.6966858229467119310444675564577822624705e-1), + SC_(0.11958599090576171875e0), SC_(0.25554705810546875e3), SC_(-0.5198791947942985790298010613645897099016e-2), + SC_(0.11958599090576171875e0), SC_(0.503011474609375e3), SC_(-0.2057865996304334428779427497609371309674e-1), + SC_(0.11958599090576171875e0), SC_(0.10074598388671875e4), SC_(0.2321202437961357464166797283210694166823e-1), + SC_(0.11958599090576171875e0), SC_(0.1185395751953125e4), SC_(-0.9725459466549755834711551459782215342604e-3), + SC_(0.11958599090576171875e0), SC_(0.353451806640625e4), SC_(0.9118028934660826183794375366147794026503e-2), + SC_(0.11958599090576171875e0), SC_(0.80715478515625e4), SC_(0.1563159895391056065771030244390579936308e-2), + SC_(0.11958599090576171875e0), SC_(0.1622925e5), SC_(-0.581657817365252067424386050405171969457e-2), + SC_(0.11958599090576171875e0), SC_(0.3206622265625e5), SC_(0.3717255178024793681304263460516998303412e-2), + SC_(0.11958599090576171875e0), SC_(0.3636794921875e5), SC_(-0.4201312103560340489144435860837908700008e-3), + SC_(0.15262925624847412109375e0), SC_(0.177219114266335964202880859375e-2), SC_(-0.4977779926926542353059228031796835350788e1), + SC_(0.15262925624847412109375e0), SC_(0.22177286446094512939453125e-2), SC_(-0.4761951939449421937239087770423139052337e1), + SC_(0.15262925624847412109375e0), SC_(0.7444499991834163665771484375e-2), SC_(-0.3686787737785302200866289598549495681873e1), + SC_(0.15262925624847412109375e0), SC_(0.1433600485324859619140625e-1), SC_(-0.3159705800712971675724552443868565994786e1), + SC_(0.15262925624847412109375e0), SC_(0.1760916970670223236083984375e-1), SC_(-0.3001012009718572425169932224958217077494e1), + SC_(0.15262925624847412109375e0), SC_(0.6152711808681488037109375e-1), SC_(-0.2091962433667603814016989316893596007293e1), + SC_(0.15262925624847412109375e0), SC_(0.11958599090576171875e0), SC_(-0.1637749035585494860187579257700026991347e1), + SC_(0.15262925624847412109375e0), SC_(0.15262925624847412109375e0), SC_(-0.1473304151879824689672720779139176901547e1), + SC_(0.15262925624847412109375e0), SC_(0.408089816570281982421875e0), SC_(-0.7966381066202503486734451752671339500326e0), + SC_(0.15262925624847412109375e0), SC_(0.6540834903717041015625e0), SC_(-0.440873515389695194835449285430733903282e0), + SC_(0.15262925624847412109375e0), SC_(0.1097540378570556640625e1), SC_(-0.8923352021521999638822908128425671499494e-2), + SC_(0.15262925624847412109375e0), SC_(0.30944411754608154296875e1), SC_(0.4036203010724160516638173918058901177518e0), + SC_(0.15262925624847412109375e0), SC_(0.51139926910400390625e1), SC_(-0.2812984058336528420208693453784041163462e0), + SC_(0.15262925624847412109375e0), SC_(0.95070552825927734375e1), SC_(0.2110680699300315249471142060227263210602e0), + SC_(0.15262925624847412109375e0), SC_(0.24750102996826171875e2), SC_(-0.15835719700285027084519186294293673336e0), + SC_(0.15262925624847412109375e0), SC_(0.637722015380859375e2), SC_(-0.8639232294195542233654095360600952238844e-2), + SC_(0.15262925624847412109375e0), SC_(0.1252804412841796875e3), SC_(-0.7035741186537872253630312300513228309485e-1), + SC_(0.15262925624847412109375e0), SC_(0.25554705810546875e3), SC_(-0.2617276139618803722044774270264881470449e-2), + SC_(0.15262925624847412109375e0), SC_(0.503011474609375e3), SC_(-0.2205625891108253596616165323866152758295e-1), + SC_(0.15262925624847412109375e0), SC_(0.10074598388671875e4), SC_(0.2268020138273471069010046643229342437598e-1), + SC_(0.15262925624847412109375e0), SC_(0.1185395751953125e4), SC_(0.2299258899992207644349423243212142391736e-3), + SC_(0.15262925624847412109375e0), SC_(0.353451806640625e4), SC_(0.9616643806149397704892154882547852379076e-2), + SC_(0.15262925624847412109375e0), SC_(0.80715478515625e4), SC_(0.2014611033785550148345812820922668156027e-2), + SC_(0.15262925624847412109375e0), SC_(0.1622925e5), SC_(-0.5929238923887145592582884102467331977891e-2), + SC_(0.15262925624847412109375e0), SC_(0.3206622265625e5), SC_(0.3839703818458927177622338508760594616066e-2), + SC_(0.15262925624847412109375e0), SC_(0.3636794921875e5), SC_(-0.6355320831805601377685830225903198089416e-3), + SC_(0.408089816570281982421875e0), SC_(0.177219114266335964202880859375e-2), SC_(-0.1216098415624359085164389233777320527868e2), + SC_(0.408089816570281982421875e0), SC_(0.22177286446094512939453125e-2), SC_(-0.1109391544566476201283336993445300189393e2), + SC_(0.408089816570281982421875e0), SC_(0.7444499991834163665771484375e-2), SC_(-0.6746387454790833823372321439626960991484e1), + SC_(0.408089816570281982421875e0), SC_(0.1433600485324859619140625e-1), SC_(-0.5144532755624635131909083437025686838187e1), + SC_(0.408089816570281982421875e0), SC_(0.1760916970670223236083984375e-1), SC_(-0.4722701913808450630507018141629091248201e1), + SC_(0.408089816570281982421875e0), SC_(0.6152711808681488037109375e-1), SC_(-0.2778508627713558438432466459028242731355e1), + SC_(0.408089816570281982421875e0), SC_(0.11958599090576171875e0), SC_(-0.2064637308329725656569048416302141462205e1), + SC_(0.408089816570281982421875e0), SC_(0.15262925624847412109375e0), SC_(-0.1840565039923489634062350723294869352596e1), + SC_(0.408089816570281982421875e0), SC_(0.408089816570281982421875e0), SC_(-0.1061414954055097358496216696738429007774e1), + SC_(0.408089816570281982421875e0), SC_(0.6540834903717041015625e0), SC_(-0.7043211203945329497445521867480185882863e0), + SC_(0.408089816570281982421875e0), SC_(0.1097540378570556640625e1), SC_(-0.2654807124956544972666615206250416353835e0), + SC_(0.408089816570281982421875e0), SC_(0.30944411754608154296875e1), SC_(0.4510925137262370905119744573953322651961e0), + SC_(0.408089816570281982421875e0), SC_(0.51139926910400390625e1), SC_(-0.1806453558424950468290509585718018205779e0), + SC_(0.408089816570281982421875e0), SC_(0.95070552825927734375e1), SC_(0.2523478512134588121378318026348829617079e0), + SC_(0.408089816570281982421875e0), SC_(0.24750102996826171875e2), SC_(-0.1557802509536818484670749210763092314144e0), + SC_(0.408089816570281982421875e0), SC_(0.637722015380859375e2), SC_(-0.4673313403019925980595538368472289250023e-1), + SC_(0.408089816570281982421875e0), SC_(0.1252804412841796875e3), SC_(-0.6925487680958300152270088587171786594633e-1), + SC_(0.408089816570281982421875e0), SC_(0.25554705810546875e3), SC_(0.1704595616453665777348485900557460695511e-1), + SC_(0.408089816570281982421875e0), SC_(0.503011474609375e3), SC_(-0.3120440979510162589525679041599582225325e-1), + SC_(0.408089816570281982421875e0), SC_(0.10074598388671875e4), SC_(0.1664570501102325321061766743633311666484e-1), + SC_(0.408089816570281982421875e0), SC_(0.1185395751953125e4), SC_(0.9261705869616819234196249409310454386594e-2), + SC_(0.408089816570281982421875e0), SC_(0.353451806640625e4), SC_(0.1250912065937196121162392317905712302737e-1), + SC_(0.408089816570281982421875e0), SC_(0.80715478515625e4), SC_(0.5232944152586024935229752731300531520259e-2), + SC_(0.408089816570281982421875e0), SC_(0.1622925e5), SC_(-0.6246313199015065699789717747783425338237e-2), + SC_(0.408089816570281982421875e0), SC_(0.3206622265625e5), SC_(0.4417634100219461434933361800590186275505e-2), + SC_(0.408089816570281982421875e0), SC_(0.3636794921875e5), SC_(-0.2200279839615866962514594908603977011034e-2), + SC_(0.6540834903717041015625e0), SC_(0.177219114266335964202880859375e-2), SC_(-0.4349879798431813885270146043838577474953e2), + SC_(0.6540834903717041015625e0), SC_(0.22177286446094512939453125e-2), SC_(-0.3756560628900433767907947644692121542971e2), + SC_(0.6540834903717041015625e0), SC_(0.7444499991834163665771484375e-2), SC_(-0.1702469833048694656862594262713469086195e2), + SC_(0.6540834903717041015625e0), SC_(0.1433600485324859619140625e-1), SC_(-0.1110210496063627097302725792319534087708e2), + SC_(0.6540834903717041015625e0), SC_(0.1760916970670223236083984375e-1), SC_(-0.9710344449255787788726730246591808854836e1), + SC_(0.6540834903717041015625e0), SC_(0.6152711808681488037109375e-1), SC_(-0.4321493892524488658140071270019414546539e1), + SC_(0.6540834903717041015625e0), SC_(0.11958599090576171875e0), SC_(-0.2830596316531304630715793221391732617852e1), + SC_(0.6540834903717041015625e0), SC_(0.15262925624847412109375e0), SC_(-0.2427236051275184660442288958966263583903e1), + SC_(0.6540834903717041015625e0), SC_(0.408089816570281982421875e0), SC_(-0.1294026530188776863448644979748701600671e1), + SC_(0.6540834903717041015625e0), SC_(0.6540834903717041015625e0), SC_(-0.9032365416837750371813872501986670530392e0), + SC_(0.6540834903717041015625e0), SC_(0.1097540378570556640625e1), SC_(-0.4709883371100438159125891040177907441467e0), + SC_(0.6540834903717041015625e0), SC_(0.30944411754608154296875e1), SC_(0.4399601938767528154337206958454694029373e0), + SC_(0.6540834903717041015625e0), SC_(0.51139926910400390625e1), SC_(-0.6210765541767245873285586927426405803337e-1), + SC_(0.6540834903717041015625e0), SC_(0.95070552825927734375e1), SC_(0.2559725937405908531227695407471959354216e0), + SC_(0.6540834903717041015625e0), SC_(0.24750102996826171875e2), SC_(-0.1304387315263791799134860712690027242388e0), + SC_(0.6540834903717041015625e0), SC_(0.637722015380859375e2), SC_(-0.7643767142230910518516204444934557743577e-1), + SC_(0.6540834903717041015625e0), SC_(0.1252804412841796875e3), SC_(-0.5782684506129610765914930518457064018588e-1), + SC_(0.6540834903717041015625e0), SC_(0.25554705810546875e3), SC_(0.3344919472494898162179043734842784587399e-1), + SC_(0.6540834903717041015625e0), SC_(0.503011474609375e3), SC_(-0.353413749118978213698043097774766209977e-1), + SC_(0.6540834903717041015625e0), SC_(0.10074598388671875e4), SC_(0.8322601848796904104734267068262526005141e-2), + SC_(0.6540834903717041015625e0), SC_(0.1185395751953125e4), SC_(0.1658280094075792117004847330465534984654e-1), + SC_(0.6540834903717041015625e0), SC_(0.353451806640625e4), SC_(0.1341904429754271101456338504436987175932e-1), + SC_(0.6540834903717041015625e0), SC_(0.80715478515625e4), SC_(0.755122789888742761887900787792369887595e-2), + SC_(0.6540834903717041015625e0), SC_(0.1622925e5), SC_(-0.5612984169534578815279553115671623471181e-2), + SC_(0.6540834903717041015625e0), SC_(0.3206622265625e5), SC_(0.4310955691751761321112661781026772677854e-2), + SC_(0.6540834903717041015625e0), SC_(0.3636794921875e5), SC_(-0.3379149073109385331605592547147643941766e-2), + SC_(0.1097540378570556640625e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.6790649408247469800621233123801444861572e3), + SC_(0.1097540378570556640625e1), SC_(0.22177286446094512939453125e-2), SC_(-0.5309023793691736869911977507548321067639e3), + SC_(0.1097540378570556640625e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.1405483920259913723302804659455822251842e3), + SC_(0.1097540378570556640625e1), SC_(0.1433600485324859619140625e-1), SC_(-0.6848197458237380840871520195951737963797e2), + SC_(0.1097540378570556640625e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.5465400933711216326384613891227551789831e2), + SC_(0.1097540378570556640625e1), SC_(0.6152711808681488037109375e-1), SC_(-0.1390640161809635303531467450464926130497e2), + SC_(0.1097540378570556640625e1), SC_(0.11958599090576171875e0), SC_(-0.6779972795805360700268883407251376360584e1), + SC_(0.1097540378570556640625e1), SC_(0.15262925624847412109375e0), SC_(-0.5230188106089836894095574814579061778079e1), + SC_(0.1097540378570556640625e1), SC_(0.408089816570281982421875e0), SC_(-0.1940364677406695435536141888301340367828e1), + SC_(0.1097540378570556640625e1), SC_(0.6540834903717041015625e0), SC_(-0.1258913339933174576125833815144747662275e1), + SC_(0.1097540378570556640625e1), SC_(0.1097540378570556640625e1), SC_(-0.7568137990423140729799498646313529955195e0), + SC_(0.1097540378570556640625e1), SC_(0.30944411754608154296875e1), SC_(0.3106721800512397648066075975669929520773e0), + SC_(0.1097540378570556640625e1), SC_(0.51139926910400390625e1), SC_(0.1532463012254471428679272534101317828655e0), + SC_(0.1097540378570556640625e1), SC_(0.95070552825927734375e1), SC_(0.1795720198794879018589729311892687868592e0), + SC_(0.1097540378570556640625e1), SC_(0.24750102996826171875e2), SC_(-0.426119470995069389375610251435217015414e-1), + SC_(0.1097540378570556640625e1), SC_(0.637722015380859375e2), SC_(-0.9991515899339130877855875009015505027048e-1), + SC_(0.1097540378570556640625e1), SC_(0.1252804412841796875e3), SC_(-0.1782475610742370713823213199156428105309e-1), + SC_(0.1097540378570556640625e1), SC_(0.25554705810546875e3), SC_(0.4941465813153273008691987625508488252334e-1), + SC_(0.1097540378570556640625e1), SC_(0.503011474609375e3), SC_(-0.2973780187175982193061632773071794284645e-1), + SC_(0.1097540378570556640625e1), SC_(0.10074598388671875e4), SC_(-0.8825895728540824863141772678377750524939e-2), + SC_(0.1097540378570556640625e1), SC_(0.1185395751953125e4), SC_(0.2310553476437098618936053438922380947456e-1), + SC_(0.1097540378570556640625e1), SC_(0.353451806640625e4), SC_(0.101589275443841919149919344121094613628e-1), + SC_(0.1097540378570556640625e1), SC_(0.80715478515625e4), SC_(0.8791317582224321865732618338075563697595e-2), + SC_(0.1097540378570556640625e1), SC_(0.1622925e5), SC_(-0.2522722964557820040273711186006517007107e-2), + SC_(0.1097540378570556640625e1), SC_(0.3206622265625e5), SC_(0.258397824447906229553670008476611944394e-2), + SC_(0.1097540378570556640625e1), SC_(0.3636794921875e5), SC_(-0.417480108075693992475205704357140995532e-2), + SC_(0.30944411754608154296875e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.1942343499528155920524126715070782690541e10), + SC_(0.30944411754608154296875e1), SC_(0.22177286446094512939453125e-2), SC_(-0.9703630006865635475903879247242241398295e9), + SC_(0.30944411754608154296875e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.2288159461744037678366460719341675062862e8), + SC_(0.30944411754608154296875e1), SC_(0.1433600485324859619140625e-1), SC_(-0.3011889201464639074119983111525408485189e7), + SC_(0.30944411754608154296875e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.1593960598953953050750765471935635161763e7), + SC_(0.30944411754608154296875e1), SC_(0.6152711808681488037109375e-1), SC_(-0.3321713713175172190228472797552520740135e5), + SC_(0.30944411754608154296875e1), SC_(0.11958599090576171875e0), SC_(-0.4254118871135070233664553244962818903364e4), + SC_(0.30944411754608154296875e1), SC_(0.15262925624847412109375e0), SC_(-0.2001693995214501846884416354395053174427e4), + SC_(0.30944411754608154296875e1), SC_(0.408089816570281982421875e0), SC_(-0.970988777161180438797807686924524874125e2), + SC_(0.30944411754608154296875e1), SC_(0.6540834903717041015625e0), SC_(-0.2329573990954411858075170530446160362372e2), + SC_(0.30944411754608154296875e1), SC_(0.1097540378570556640625e1), SC_(-0.5200632977809169336766800729820978507611e1), + SC_(0.30944411754608154296875e1), SC_(0.30944411754608154296875e1), SC_(-0.5329576094022020505058136690762536306046e0), + SC_(0.30944411754608154296875e1), SC_(0.51139926910400390625e1), SC_(0.14640809909396319606747593991896372233e0), + SC_(0.30944411754608154296875e1), SC_(0.95070552825927734375e1), SC_(-0.2487626271286555126242091608007328960055e0), + SC_(0.30944411754608154296875e1), SC_(0.24750102996826171875e2), SC_(0.6899494167370661487160613334588061312001e-1), + SC_(0.30944411754608154296875e1), SC_(0.637722015380859375e2), SC_(0.9965334753843372266399348590241564763384e-1), + SC_(0.30944411754608154296875e1), SC_(0.1252804412841796875e3), SC_(0.2045578697008089530731276399864479675129e-1), + SC_(0.30944411754608154296875e1), SC_(0.25554705810546875e3), SC_(-0.4925574069959335047220096940241247271523e-1), + SC_(0.30944411754608154296875e1), SC_(0.503011474609375e3), SC_(0.2999299205597144062860765336888378011112e-1), + SC_(0.30944411754608154296875e1), SC_(0.10074598388671875e4), SC_(0.8613185832793205965055983599907862919609e-2), + SC_(0.30944411754608154296875e1), SC_(0.1185395751953125e4), SC_(-0.2308976022780410326076549817488441794247e-1), + SC_(0.30944411754608154296875e1), SC_(0.353451806640625e4), SC_(-0.1021182175239869770949352937441151990552e-1), + SC_(0.30944411754608154296875e1), SC_(0.80715478515625e4), SC_(-0.879797165324950027712579648155227851932e-2), + SC_(0.30944411754608154296875e1), SC_(0.1622925e5), SC_(0.2552075611539902756755038024290602747726e-2), + SC_(0.30944411754608154296875e1), SC_(0.3206622265625e5), SC_(-0.2602090942073823160504180862039818453534e-2), + SC_(0.30944411754608154296875e1), SC_(0.3636794921875e5), SC_(0.4176123078746405140111266085626400865273e-2), + SC_(0.51139926910400390625e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.3705145969568337941802650403899252403029e17), + SC_(0.51139926910400390625e1), SC_(0.22177286446094512939453125e-2), SC_(-0.1176829388540461248581697597808143424237e17), + SC_(0.51139926910400390625e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.2405067947035033705202967079723549756935e14), + SC_(0.51139926910400390625e1), SC_(0.1433600485324859619140625e-1), SC_(-0.8428044246884604619367392293775778936658e12), + SC_(0.51139926910400390625e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.2944388392231566982919496064045544428695e12), + SC_(0.51139926910400390625e1), SC_(0.6152711808681488037109375e-1), SC_(-0.4903576620639020509957069042240674115486e9), + SC_(0.51139926910400390625e1), SC_(0.11958599090576171875e0), SC_(-0.1639917510636321068978029106448535649587e8), + SC_(0.51139926910400390625e1), SC_(0.15262925624847412109375e0), SC_(-0.4711874247908616757347296653130355246512e7), + SC_(0.51139926910400390625e1), SC_(0.408089816570281982421875e0), SC_(-0.3109588326325974161334123952358850162935e5), + SC_(0.51139926910400390625e1), SC_(0.6540834903717041015625e0), SC_(-0.2830725124947216537321801451310484294036e4), + SC_(0.51139926910400390625e1), SC_(0.1097540378570556640625e1), SC_(-0.2104661612886298655726260945388582131597e3), + SC_(0.51139926910400390625e1), SC_(0.30944411754608154296875e1), SC_(-0.1888124889886336116656831326611227465732e1), + SC_(0.51139926910400390625e1), SC_(0.51139926910400390625e1), SC_(-0.4502816651263076317047550255894504871467e0), + SC_(0.51139926910400390625e1), SC_(0.95070552825927734375e1), SC_(0.2458061701377387431698520597090428728893e0), + SC_(0.51139926910400390625e1), SC_(0.24750102996826171875e2), SC_(-0.1103164195769582870346249817695790724681e0), + SC_(0.51139926910400390625e1), SC_(0.637722015380859375e2), SC_(-0.9847313739997287331303984148500219822959e-1), + SC_(0.51139926910400390625e1), SC_(0.1252804412841796875e3), SC_(-0.2287030143290536321415817389012637378489e-1), + SC_(0.51139926910400390625e1), SC_(0.25554705810546875e3), SC_(0.4924486044820256040353500126548862785902e-1), + SC_(0.51139926910400390625e1), SC_(0.503011474609375e3), SC_(-0.2971813072556458947611283801910740933706e-1), + SC_(0.51139926910400390625e1), SC_(0.10074598388671875e4), SC_(-0.914198951137015567743407321630724763347e-2), + SC_(0.51139926910400390625e1), SC_(0.1185395751953125e4), SC_(0.2313027433919596748247622964935823817085e-1), + SC_(0.51139926910400390625e1), SC_(0.353451806640625e4), SC_(0.9960728167292770124952691895945517711526e-2), + SC_(0.51139926910400390625e1), SC_(0.80715478515625e4), SC_(0.8758138084274607832414759797461488744105e-2), + SC_(0.51139926910400390625e1), SC_(0.1622925e5), SC_(-0.2378202666327817646745494184799241735663e-2), + SC_(0.51139926910400390625e1), SC_(0.3206622265625e5), SC_(0.2490754331055981326771399550006089117352e-2), + SC_(0.51139926910400390625e1), SC_(0.3636794921875e5), SC_(-0.4166414486312467926799625817046850354171e-2), + SC_(0.95070552825927734375e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.4793857282393980268990021769884499235171e28), + SC_(0.95070552825927734375e1), SC_(0.1433600485324859619140625e-1), SC_(-0.9441682282520009526127009065586945348002e25), + SC_(0.95070552825927734375e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.1336498814425001834295979079796689529041e25), + SC_(0.95070552825927734375e1), SC_(0.6152711808681488037109375e-1), SC_(-0.9132012729534820690893688725973611118483e19), + SC_(0.95070552825927734375e1), SC_(0.11958599090576171875e0), SC_(-0.1647532535413444379836824559687942115102e17), + SC_(0.95070552825927734375e1), SC_(0.15262925624847412109375e0), SC_(-0.1620336347472352716237502536254711872759e16), + SC_(0.95070552825927734375e1), SC_(0.408089816570281982421875e0), SC_(-0.1415141492890980600322201015154802594311e12), + SC_(0.95070552825927734375e1), SC_(0.6540834903717041015625e0), SC_(-0.1608264454762084375698364907160097100812e10), + SC_(0.95070552825927734375e1), SC_(0.1097540378570556640625e1), SC_(-0.120015587287511759584346665646808106427e8), + SC_(0.95070552825927734375e1), SC_(0.30944411754608154296875e1), SC_(-0.8105176056335026839128696211510720272233e3), + SC_(0.95070552825927734375e1), SC_(0.51139926910400390625e1), SC_(-0.1160352724450753224556363614108562877848e2), + SC_(0.95070552825927734375e1), SC_(0.95070552825927734375e1), SC_(-0.3659422723460527740106062454828972103671e0), + SC_(0.95070552825927734375e1), SC_(0.24750102996826171875e2), SC_(-0.1656253122409641484804602706609470522898e0), + SC_(0.95070552825927734375e1), SC_(0.637722015380859375e2), SC_(-0.1002534211044969996921076214999199932342e0), + SC_(0.95070552825927734375e1), SC_(0.1252804412841796875e3), SC_(0.2459323267268387590656935772173305995007e-2), + SC_(0.95070552825927734375e1), SC_(0.25554705810546875e3), SC_(0.4727621388677414365424200901932102781138e-1), + SC_(0.95070552825927734375e1), SC_(0.503011474609375e3), SC_(-0.1499853482621027133664160846069426563295e-1), + SC_(0.95070552825927734375e1), SC_(0.10074598388671875e4), SC_(-0.2056061337856806920336623108105325621513e-1), + SC_(0.95070552825927734375e1), SC_(0.1185395751953125e4), SC_(0.200124531064386856030146552792672982826e-1), + SC_(0.95070552825927734375e1), SC_(0.353451806640625e4), SC_(0.3033471650974938272104310339983302036505e-2), + SC_(0.95070552825927734375e1), SC_(0.80715478515625e4), SC_(0.6313804457726326168433814890910007150901e-2), + SC_(0.95070552825927734375e1), SC_(0.1622925e5), SC_(0.1403165866529678983739736802708333117488e-2), + SC_(0.95070552825927734375e1), SC_(0.3206622265625e5), SC_(-0.1035230096656936586615653548264063815176e-3), + SC_(0.95070552825927734375e1), SC_(0.3636794921875e5), SC_(-0.3178411510645339458375062818266053238935e-2), + SC_(0.24750102996826171875e2), SC_(0.1097540378570556640625e1), SC_(-0.2538488265063196712152114613748075086351e30), + SC_(0.24750102996826171875e2), SC_(0.30944411754608154296875e1), SC_(-0.2001658856691900027586107047291395903374e19), + SC_(0.24750102996826171875e2), SC_(0.51139926910400390625e1), SC_(-0.9503574259305993133759318213869719739108e13), + SC_(0.24750102996826171875e2), SC_(0.95070552825927734375e1), SC_(-0.4122129578428727018796511082180354925791e7), + SC_(0.24750102996826171875e2), SC_(0.24750102996826171875e2), SC_(-0.2658990584952737858668063924548287218421e0), + SC_(0.24750102996826171875e2), SC_(0.637722015380859375e2), SC_(-0.6691180036576346233956293507614315544893e-1), + SC_(0.24750102996826171875e2), SC_(0.1252804412841796875e3), SC_(0.7533197321533906425069813365786808047345e-2), + SC_(0.24750102996826171875e2), SC_(0.25554705810546875e3), SC_(-0.1542283080029640948900332378050454496484e-1), + SC_(0.24750102996826171875e2), SC_(0.503011474609375e3), SC_(-0.2991988069469062154012100511573471727669e-1), + SC_(0.24750102996826171875e2), SC_(0.10074598388671875e4), SC_(0.1184200276216747266219053634744663039601e-1), + SC_(0.24750102996826171875e2), SC_(0.1185395751953125e4), SC_(0.147538779157775165689894252998980132164e-1), + SC_(0.24750102996826171875e2), SC_(0.353451806640625e4), SC_(0.1337803088680303126911599983254711741179e-1), + SC_(0.24750102996826171875e2), SC_(0.80715478515625e4), SC_(0.8029832288031143409523993739201196219101e-2), + SC_(0.24750102996826171875e2), SC_(0.1622925e5), SC_(-0.5198547432330736842863301364433701996388e-2), + SC_(0.24750102996826171875e2), SC_(0.3206622265625e5), SC_(0.4109381361370256630410240644020816524515e-2), + SC_(0.24750102996826171875e2), SC_(0.3636794921875e5), SC_(-0.3695089835104638523036034542189491664868e-2), + SC_(0.637722015380859375e2), SC_(0.24750102996826171875e2), SC_(-0.6267975543587496709349337927794592271998e18), + SC_(0.637722015380859375e2), SC_(0.637722015380859375e2), SC_(-0.1939298752945934292999130903839341072815e0), + SC_(0.637722015380859375e2), SC_(0.1252804412841796875e3), SC_(-0.7053508497894543897551296718023593343408e-2), + SC_(0.637722015380859375e2), SC_(0.25554705810546875e3), SC_(-0.3550962870822991127395561395887028412934e-1), + SC_(0.637722015380859375e2), SC_(0.503011474609375e3), SC_(-0.2648416216528672574838824635772159441549e-1), + SC_(0.637722015380859375e2), SC_(0.10074598388671875e4), SC_(-0.1420732900757196265534805768438896498951e-1), + SC_(0.637722015380859375e2), SC_(0.1185395751953125e4), SC_(-0.1724003388206597138922485614964423834268e-1), + SC_(0.637722015380859375e2), SC_(0.353451806640625e4), SC_(-0.4904153149047725659903093785508227452329e-2), + SC_(0.637722015380859375e2), SC_(0.80715478515625e4), SC_(-0.5165055881176750174649276537848635493731e-2), + SC_(0.637722015380859375e2), SC_(0.1622925e5), SC_(-0.3111673836710409913488025509896936578918e-2), + SC_(0.637722015380859375e2), SC_(0.3206622265625e5), SC_(0.1643282532322944952844854407146135350371e-2), + SC_(0.637722015380859375e2), SC_(0.3636794921875e5), SC_(0.2009528090577840712976850241949224122986e-2), + SC_(0.1252804412841796875e3), SC_(0.637722015380859375e2), SC_(-0.3797174624982978861579399751499143354312e23), + SC_(0.1252804412841796875e3), SC_(0.1252804412841796875e3), SC_(-0.154839290844967491628030470782884890493e0), + SC_(0.1252804412841796875e3), SC_(0.25554705810546875e3), SC_(0.5249253389690028543295568223911202330116e-1), + SC_(0.1252804412841796875e3), SC_(0.503011474609375e3), SC_(0.2263770495318548220431423611155582287596e-1), + SC_(0.1252804412841796875e3), SC_(0.10074598388671875e4), SC_(0.1928421153706604388682313816599232350549e-1), + SC_(0.1252804412841796875e3), SC_(0.1185395751953125e4), SC_(0.2303577167941297280388538081309628427215e-1), + SC_(0.1252804412841796875e3), SC_(0.353451806640625e4), SC_(0.4602232701140352366182281154234657598423e-2), + SC_(0.1252804412841796875e3), SC_(0.80715478515625e4), SC_(0.7605554856039814835669547074154003071661e-2), + SC_(0.1252804412841796875e3), SC_(0.1622925e5), SC_(-0.3591967493051195246860689634970817279493e-2), + SC_(0.1252804412841796875e3), SC_(0.3206622265625e5), SC_(0.2427101323753481633835014493220406978017e-2), + SC_(0.1252804412841796875e3), SC_(0.3636794921875e5), SC_(-0.4144432737996561571547765270607343786669e-2), + SC_(0.25554705810546875e3), SC_(0.25554705810546875e3), SC_(-0.1220899231301180796588329975642599451792e0), + SC_(0.25554705810546875e3), SC_(0.503011474609375e3), SC_(-0.2587460388550158251245313556927425626503e-1), + SC_(0.25554705810546875e3), SC_(0.10074598388671875e4), SC_(-0.2709588740650161660564368137667279157517e-2), + SC_(0.25554705810546875e3), SC_(0.1185395751953125e4), SC_(0.7388450600504248491679263004388188205535e-2), + SC_(0.25554705810546875e3), SC_(0.353451806640625e4), SC_(-0.4070364240355399016905231104224278184321e-3), + SC_(0.25554705810546875e3), SC_(0.80715478515625e4), SC_(0.8869456474018290057215067339235844280777e-2), + SC_(0.25554705810546875e3), SC_(0.1622925e5), SC_(0.6193548860770801980645313593061881324053e-2), + SC_(0.25554705810546875e3), SC_(0.3206622265625e5), SC_(-0.3573956395914134221575915050921377055356e-2), + SC_(0.25554705810546875e3), SC_(0.3636794921875e5), SC_(0.4150896139122617211447974747314758032795e-2), + SC_(0.503011474609375e3), SC_(0.503011474609375e3), SC_(-0.9741864482364844408259833924093581326514e-1), + SC_(0.503011474609375e3), SC_(0.10074598388671875e4), SC_(-0.1584672339561671902535695362033324616336e-1), + SC_(0.503011474609375e3), SC_(0.1185395751953125e4), SC_(0.5943568069873248119538400255697357733917e-2), + SC_(0.503011474609375e3), SC_(0.353451806640625e4), SC_(0.1015104946539387860338179999806441182473e-1), + SC_(0.503011474609375e3), SC_(0.80715478515625e4), SC_(0.8883753528547744135823658482106607009966e-2), + SC_(0.503011474609375e3), SC_(0.1622925e5), SC_(0.5522874844418632574706826538336184699582e-2), + SC_(0.503011474609375e3), SC_(0.3206622265625e5), SC_(0.4455587256750903432452764772837804809816e-2), + SC_(0.503011474609375e3), SC_(0.3636794921875e5), SC_(-0.3843435197254867050137588280055312232508e-2), + SC_(0.10074598388671875e4), SC_(0.10074598388671875e4), SC_(-0.7728430027806412142852417589285707550701e-1), + SC_(0.10074598388671875e4), SC_(0.1185395751953125e4), SC_(0.3043120394295723532238172036669867077737e-1), + SC_(0.10074598388671875e4), SC_(0.353451806640625e4), SC_(-0.4742168167846528568912593945029413563666e-2), + SC_(0.10074598388671875e4), SC_(0.80715478515625e4), SC_(-0.7420503792165366240145846571768477365506e-2), + SC_(0.10074598388671875e4), SC_(0.1622925e5), SC_(-0.1795717524473915811452628563407404683787e-2), + SC_(0.10074598388671875e4), SC_(0.3206622265625e5), SC_(0.7500534979641494608228235889183901707366e-3), + SC_(0.10074598388671875e4), SC_(0.3636794921875e5), SC_(0.3051253358553692403837737104117441878866e-2), + SC_(0.1185395751953125e4), SC_(0.10074598388671875e4), SC_(-0.7251757054382535422878260094266093685031e29), + SC_(0.1185395751953125e4), SC_(0.1185395751953125e4), SC_(-0.7320587935179758776740758943706909907242e-1), + SC_(0.1185395751953125e4), SC_(0.353451806640625e4), SC_(0.4795852538068195975343600795948509285902e-3), + SC_(0.1185395751953125e4), SC_(0.80715478515625e4), SC_(0.1749093092873678394701882014413670671251e-2), + SC_(0.1185395751953125e4), SC_(0.1622925e5), SC_(0.4162877531169379039027191426399181611799e-2), + SC_(0.1185395751953125e4), SC_(0.3206622265625e5), SC_(-0.3200560495047506921416083730251596135541e-3), + SC_(0.1185395751953125e4), SC_(0.3636794921875e5), SC_(-0.4176563093033758974497368789398642132897e-2) + }; +#undef SC_ + + diff --git a/test/beta_exp_data.ipp b/test/beta_exp_data.ipp new file mode 100644 index 000000000..2c787afc6 --- /dev/null +++ b/test/beta_exp_data.ipp @@ -0,0 +1,364 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 351> beta_exp_data = { { + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(1155631.551635027016649268884796909927277) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(1039549.452063747329381617654200841254652) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.216575062950141727924346923828125e-5), SC_(923467.3524924676425690820378921903570447) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(715366.9882608199489156088500706918884474) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.216575062950141727924346923828125e-5), SC_(599284.8886895402674421924477675861806454) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.72700195232755504548549652099609375e-5), SC_(275102.4248866129549503632384850636365051) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.1730655412757187150418758392333984375e-5), SC_(649244.3230419389091055494874477610228104) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.216575062950141727924346923828125e-5), SC_(533162.2234706592346717218748633348329255) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.72700195232755504548549652099609375e-5), SC_(208979.7596677320047637517666971035319141) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.14000004739500582218170166015625e-4), SC_(142857.0944488511634633414470885024340382) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.1730655412757187150418758392333984375e-5), SC_(635967.2966761120408405544283252854891051) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.216575062950141727924346923828125e-5), SC_(519885.1971048323697502064131013612391462) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.72700195232755504548549652099609375e-5), SC_(195702.7333019051790657557774869592595619) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.14000004739500582218170166015625e-4), SC_(129580.0680830243894812627999923649303964) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.17196454791701398789882659912109375e-4), SC_(116303.0417171976400618567245671670493297) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.1730655412757187150418758392333984375e-5), SC_(594458.8435535046961781833034439822035691) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.216575062950141727924346923828125e-5), SC_(478376.7439822250699480739314338811953296) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.72700195232755504548549652099609375e-5), SC_(154194.2801792984055346510144704788292969) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.14000004739500582218170166015625e-4), SC_(88071.61496041830983457563965247905141874) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.17196454791701398789882659912109375e-4), SC_(74794.58859459188997822531683455967562115) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.60085076256655156612396240234375e-4), SC_(33286.13547199056171829186221434157408122) }, + { SC_(0.000116783194243907928466796875), SC_(0.1730655412757187150418758392333984375e-5), SC_(586378.651529572636659503110266369369984) }, + { SC_(0.000116783194243907928466796875), SC_(0.216575062950141727924346923828125e-5), SC_(470296.5519582930697306370777452683761698) }, + { SC_(0.000116783194243907928466796875), SC_(0.72700195232755504548549652099609375e-5), SC_(146114.0881553671010006794541334417041727) }, + { SC_(0.000116783194243907928466796875), SC_(0.14000004739500582218170166015625e-4), SC_(79991.42293648792255405447160736354988824) }, + { SC_(0.000116783194243907928466796875), SC_(0.17196454791701398789882659912109375e-4), SC_(66714.39657066193835073550620286643916615) }, + { SC_(0.000116783194243907928466796875), SC_(0.60085076256655156612396240234375e-4), SC_(25205.94344806645534821918725567217595504) }, + { SC_(0.000116783194243907928466796875), SC_(0.000116783194243907928466796875), SC_(17125.75142415007588824659456664464078893) }, + { SC_(0.000149052008055150508880615234375), SC_(0.1730655412757187150418758392333984375e-5), SC_(584524.843186061699046596661105506295866) }, + { SC_(0.000149052008055150508880615234375), SC_(0.216575062950141727924346923828125e-5), SC_(468442.7436147821658663815479488360288728) }, + { SC_(0.000149052008055150508880615234375), SC_(0.72700195232755504548549652099609375e-5), SC_(144260.2798118565930535598166654066443804) }, + { SC_(0.000149052008055150508880615234375), SC_(0.14000004739500582218170166015625e-4), SC_(78137.6145929779366207198292645775242312) }, + { SC_(0.000149052008055150508880615234375), SC_(0.17196454791701398789882659912109375e-4), SC_(64860.58822715220034984276283119323639683) }, + { SC_(0.000149052008055150508880615234375), SC_(0.60085076256655156612396240234375e-4), SC_(23352.13510456004391420247071206624241613) }, + { SC_(0.000149052008055150508880615234375), SC_(0.000116783194243907928466796875), SC_(15271.94308064806187957915306088879145787) }, + { SC_(0.000149052008055150508880615234375), SC_(0.000149052008055150508880615234375), SC_(13418.13473714855046889923959457185167481) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.1730655412757187150418758392333984375e-5), SC_(580325.0267004741284777720102301507805905) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.216575062950141727924346923828125e-5), SC_(464242.9271291948561701678823852769833447) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.72700195232755504548549652099609375e-5), SC_(140060.4633262723437444763727887594791223) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.14000004739500582218170166015625e-4), SC_(73937.79810739772240919420653098643931922) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.17196454791701398789882659912109375e-4), SC_(60660.77174157390262331984812205981539232) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.60085076256655156612396240234375e-4), SC_(19152.31861900746010982713873615733036615) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.000116783194243907928466796875), SC_(11072.12659512946959154647142760990796737) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.000149052008055150508880615234375), SC_(9218.318251649302932199820676778504299719) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.0003985252114944159984588623046875), SC_(5018.501766299587761063198864612299262498) }, + { SC_(0.00063875340856611728668212890625), SC_(0.1730655412757187150418758392333984375e-5), SC_(579381.3241429882314787600400195790681276) }, + { SC_(0.00063875340856611728668212890625), SC_(0.216575062950141727924346923828125e-5), SC_(463299.2245717092103071408953485735740662) }, + { SC_(0.00063875340856611728668212890625), SC_(0.72700195232755504548549652099609375e-5), SC_(139116.7607687896440448391818012150422867) }, + { SC_(0.00063875340856611728668212890625), SC_(0.14000004739500582218170166015625e-4), SC_(72994.09554991890720396147618053871852464) }, + { SC_(0.00063875340856611728668212890625), SC_(0.17196454791701398789882659912109375e-4), SC_(59717.06918409693237354458168673772104752) }, + { SC_(0.00063875340856611728668212890625), SC_(0.60085076256655156612396240234375e-4), SC_(18208.61606155524405362968798342261554923) }, + { SC_(0.00063875340856611728668212890625), SC_(0.000116783194243907928466796875), SC_(10128.42403770997637556860033296324003096) }, + { SC_(0.00063875340856611728668212890625), SC_(0.000149052008055150508880615234375), SC_(8274.615694248432457086724782473929150854) }, + { SC_(0.00063875340856611728668212890625), SC_(0.0003985252114944159984588623046875), SC_(4074.799209042668601531129156089963301482) }, + { SC_(0.00063875340856611728668212890625), SC_(0.00063875340856611728668212890625), SC_(3131.096651924328003273873888262194585402) }, + { SC_(0.0010718167759478092193603515625), SC_(0.1730655412757187150418758392333984375e-5), SC_(578748.7693423753941389854751026834812459) }, + { SC_(0.0010718167759478092193603515625), SC_(0.216575062950141727924346923828125e-5), SC_(462666.6697710968255230523836363548096488) }, + { SC_(0.0010718167759478092193603515625), SC_(0.72700195232755504548549652099609375e-5), SC_(138484.2059681825683485463067171057570855) }, + { SC_(0.0010718167759478092193603515625), SC_(0.14000004739500582218170166015625e-4), SC_(72361.5407493188315002241913837983386211) }, + { SC_(0.0010718167759478092193603515625), SC_(0.17196454791701398789882659912109375e-4), SC_(59084.51438350018134300863405362995980529) }, + { SC_(0.0010718167759478092193603515625), SC_(0.60085076256655156612396240234375e-4), SC_(17576.0612610031009311452486029621355864) }, + { SC_(0.0010718167759478092193603515625), SC_(0.000116783194243907928466796875), SC_(9495.869237216800935468654175518891346132) }, + { SC_(0.0010718167759478092193603515625), SC_(0.000149052008055150508880615234375), SC_(7642.060893788815835400370107084726389137) }, + { SC_(0.0010718167759478092193603515625), SC_(0.0003985252114944159984588623046875), SC_(3442.244408842457181186564692494576592715) }, + { SC_(0.0010718167759478092193603515625), SC_(0.00063875340856611728668212890625), SC_(2498.541851973839877538873278485733894526) }, + { SC_(0.0010718167759478092193603515625), SC_(0.0010718167759478092193603515625), SC_(1865.987052473361599093122986045939836842) }, + { SC_(0.00302191521041095256805419921875), SC_(0.1730655412757187150418758392333984375e-5), SC_(578146.6868265927030609172756375022129408) }, + { SC_(0.00302191521041095256805419921875), SC_(0.216575062950141727924346923828125e-5), SC_(462064.5872553161695931215518112441517803) }, + { SC_(0.00302191521041095256805419921875), SC_(0.72700195232755504548549652099609375e-5), SC_(137882.1234524257874475626971925335633952) }, + { SC_(0.00302191521041095256805419921875), SC_(0.14000004739500582218170166015625e-4), SC_(71759.45823359352964615332870940784891666) }, + { SC_(0.00302191521041095256805419921875), SC_(0.17196454791701398789882659912109375e-4), SC_(58482.4318677898305824223777438873245987) }, + { SC_(0.00302191521041095256805419921875), SC_(0.60085076256655156612396240234375e-4), SC_(16973.97874549335243903972140214316734591) }, + { SC_(0.00302191521041095256805419921875), SC_(0.000116783194243907928466796875), SC_(8893.78672197223076504620210425011585704) }, + { SC_(0.00302191521041095256805419921875), SC_(0.000149052008055150508880615234375), SC_(7039.978378695160036028218013910220966586) }, + { SC_(0.00302191521041095256805419921875), SC_(0.0003985252114944159984588623046875), SC_(2840.161894915349206097759718325761099235) }, + { SC_(0.00302191521041095256805419921875), SC_(0.00063875340856611728668212890625), SC_(1896.459339169739784663132403554328985513) }, + { SC_(0.00302191521041095256805419921875), SC_(0.0010718167759478092193603515625), SC_(1263.904541692959035604171522556797270816) }, + { SC_(0.00302191521041095256805419921875), SC_(0.00302191521041095256805419921875), SC_(661.8220400131266810689999131402027641628) }, + { SC_(0.00499413348734378814697265625), SC_(0.1730655412757187150418758392333984375e-5), SC_(578016.0025685181268331499857959484326202) }, + { SC_(0.00499413348734378814697265625), SC_(0.216575062950141727924346923828125e-5), SC_(461933.9029972436470789739437915137396688) }, + { SC_(0.00499413348734378814697265625), SC_(0.72700195232755504548549652099609375e-5), SC_(137751.439194377357760353694453171044616) }, + { SC_(0.00499413348734378814697265625), SC_(0.14000004739500582218170166015625e-4), SC_(71628.77397557686617053038110269144726432) }, + { SC_(0.00499413348734378814697265625), SC_(0.17196454791701398789882659912109375e-4), SC_(58351.74760978825459010321008902984708703) }, + { SC_(0.00499413348734378814697265625), SC_(0.60085076256655156612396240234375e-4), SC_(16843.29448769420868022449621523696852871) }, + { SC_(0.00499413348734378814697265625), SC_(0.000116783194243907928466796875), SC_(8763.102464440684353948165105364959875751) }, + { SC_(0.00499413348734378814697265625), SC_(0.000149052008055150508880615234375), SC_(6909.294121315904663830790758036541933092) }, + { SC_(0.00499413348734378814697265625), SC_(0.0003985252114944159984588623046875), SC_(2709.477638713282809157753147679535152997) }, + { SC_(0.00499413348734378814697265625), SC_(0.00063875340856611728668212890625), SC_(1765.775084100924740163477142206238117531) }, + { SC_(0.00499413348734378814697265625), SC_(0.0010718167759478092193603515625), SC_(1133.220288666299323493943722045599765605) }, + { SC_(0.00499413348734378814697265625), SC_(0.00302191521041095256805419921875), SC_(531.1377961700217313330611029023504470134) }, + { SC_(0.00499413348734378814697265625), SC_(0.00499413348734378814697265625), SC_(400.4535615941792674028465567198380146162) }, + { SC_(0.00928423367440700531005859375), SC_(0.1730655412757187150418758392333984375e-5), SC_(577923.47013037237161592264071987940112) }, + { SC_(0.00928423367440700531005859375), SC_(0.216575062950141727924346923828125e-5), SC_(461841.3705591023436482349752076392806884) }, + { SC_(0.00928423367440700531005859375), SC_(0.72700195232755504548549652099609375e-5), SC_(137658.9067562882797808798128822121083532) }, + { SC_(0.00928423367440700531005859375), SC_(0.14000004739500582218170166015625e-4), SC_(71536.24153755664705557992165457096028908) }, + { SC_(0.00928423367440700531005859375), SC_(0.17196454791701398789882659912109375e-4), SC_(58259.21517180074025490948339426147291131) }, + { SC_(0.00928423367440700531005859375), SC_(0.60085076256655156612396240234375e-4), SC_(16750.76205014550186712119560464394227822) }, + { SC_(0.00928423367440700531005859375), SC_(0.000116783194243907928466796875), SC_(8670.570027472041840968150073639899293803) }, + { SC_(0.00928423367440700531005859375), SC_(0.000149052008055150508880615234375), SC_(6816.76168467737971022006025785329645956) }, + { SC_(0.00928423367440700531005859375), SC_(0.0003985252114944159984588623046875), SC_(2616.945204626520539896177454918314408481) }, + { SC_(0.00928423367440700531005859375), SC_(0.00063875340856611728668212890625), SC_(1673.242652470680913702400448013496185857) }, + { SC_(0.00928423367440700531005859375), SC_(0.0010718167759478092193603515625), SC_(1040.687861462776237528634664836456293894) }, + { SC_(0.00928423367440700531005859375), SC_(0.00302191521041095256805419921875), SC_(438.6053888733535460854940339961810385184) }, + { SC_(0.00928423367440700531005859375), SC_(0.00499413348734378814697265625), SC_(307.9211743857003955201164649559975265798) }, + { SC_(0.00928423367440700531005859375), SC_(0.00928423367440700531005859375), SC_(215.3888307210024293021479414172947349225) }, + { SC_(0.0241700224578380584716796875), SC_(0.1730655412757187150418758392333984375e-5), SC_(577857.1103120105462918088152584701146253) }, + { SC_(0.0241700224578380584716796875), SC_(0.216575062950141727924346923828125e-5), SC_(461775.0107407558023784962240363151107329) }, + { SC_(0.0241700224578380584716796875), SC_(0.72700195232755504548549652099609375e-5), SC_(137592.5469381210410493887492747575088313) }, + { SC_(0.0241700224578380584716796875), SC_(0.14000004739500582218170166015625e-4), SC_(71469.88171962581735908379641667814792516) }, + { SC_(0.0241700224578380584716796875), SC_(0.17196454791701398789882659912109375e-4), SC_(58192.85535398219392427946944369798754863) }, + { SC_(0.0241700224578380584716796875), SC_(0.60085076256655156612396240234375e-4), SC_(16684.40223383348686765090202995849409919) }, + { SC_(0.0241700224578380584716796875), SC_(0.000116783194243907928466796875), SC_(8604.210213151525639091522040650477022996) }, + { SC_(0.0241700224578380584716796875), SC_(0.000149052008055150508880615234375), SC_(6750.401871490235206222723780976773951041) }, + { SC_(0.0241700224578380584716796875), SC_(0.0003985252114944159984588623046875), SC_(2550.585400200170113186519606656658358302) }, + { SC_(0.0241700224578380584716796875), SC_(0.00063875340856611728668212890625), SC_(1606.882856478110472950889537142578379733) }, + { SC_(0.0241700224578380584716796875), SC_(0.0010718167759478092193603515625), SC_(974.3280806680873447466411004722025696667) }, + { SC_(0.0241700224578380584716796875), SC_(0.00302191521041095256805419921875), SC_(372.245676422438191418917536518742556246) }, + { SC_(0.0241700224578380584716796875), SC_(0.00499413348734378814697265625), SC_(241.5615308999037408315571689087370381133) }, + { SC_(0.0241700224578380584716796875), SC_(0.00928423367440700531005859375), SC_(149.029336721961539129458808771551576089) }, + { SC_(0.0241700224578380584716796875), SC_(0.0241700224578380584716796875), SC_(82.67035587071256040030513689693888763264) }, + { SC_(0.06227754056453704833984375), SC_(0.1730655412757187150418758392333984375e-5), SC_(577831.7349438002624232944051827557830252) }, + { SC_(0.06227754056453704833984375), SC_(0.216575062950141727924346923828125e-5), SC_(461749.6353725835462070601985223555464535) }, + { SC_(0.06227754056453704833984375), SC_(0.72700195232755504548549652099609375e-5), SC_(137567.1715703949009400464606771149773659) }, + { SC_(0.06227754056453704833984375), SC_(0.14000004739500582218170166015625e-4), SC_(71444.50635248787780501901847153485408293) }, + { SC_(0.06227754056453704833984375), SC_(0.17196454791701398789882659912109375e-4), SC_(58167.47998712362241628438081568357619627) }, + { SC_(0.06227754056453704833984375), SC_(0.60085076256655156612396240234375e-4), SC_(16659.02687072325755849373023638872634394) }, + { SC_(0.06227754056453704833984375), SC_(0.000116783194243907928466796875), SC_(8578.834854996261281055218405025808451748) }, + { SC_(0.06227754056453704833984375), SC_(0.000149052008055150508880615234375), SC_(6725.026516154862565962788369017435647322) }, + { SC_(0.06227754056453704833984375), SC_(0.0003985252114944159984588623046875), SC_(2525.2100666620649499877847633658027656) }, + { SC_(0.06227754056453704833984375), SC_(0.00063875340856611728668212890625), SC_(1581.507543923521454928529218471285388102) }, + { SC_(0.06227754056453704833984375), SC_(0.0010718167759478092193603515625), SC_(948.9528059260075736779903957068543695902) }, + { SC_(0.06227754056453704833984375), SC_(0.00302191521041095256805419921875), SC_(346.870571715556714754611455020570779354) }, + { SC_(0.06227754056453704833984375), SC_(0.00499413348734378814697265625), SC_(216.1865977659268719722138946273676254668) }, + { SC_(0.06227754056453704833984375), SC_(0.00928423367440700531005859375), SC_(123.6547754561733595527133266024579014923) }, + { SC_(0.06227754056453704833984375), SC_(0.0241700224578380584716796875), SC_(57.29707083428338757550378575032845681207) }, + { SC_(0.06227754056453704833984375), SC_(0.06227754056453704833984375), SC_(31.92695787102591550783893228017388163082) }, + { SC_(0.12234418094158172607421875), SC_(0.1730655412757187150418758392333984375e-5), SC_(577823.7644499583542983884816685815344076) }, + { SC_(0.12234418094158172607421875), SC_(0.216575062950141727924346923828125e-5), SC_(461741.6648787986392875920059137822769241) }, + { SC_(0.12234418094158172607421875), SC_(0.72700195232755504548549652099609375e-5), SC_(137559.201077278694788089421441003518399) }, + { SC_(0.12234418094158172607421875), SC_(0.14000004739500582218170166015625e-4), SC_(71436.5358602533481815671518777609814378) }, + { SC_(0.12234418094158172607421875), SC_(0.17196454791701398789882659912109375e-4), SC_(58159.50949530784825529761674961815682685) }, + { SC_(0.12234418094158172607421875), SC_(0.60085076256655156612396240234375e-4), SC_(16651.05638452601139538458222365047429789) }, + { SC_(0.12234418094158172607421875), SC_(0.000116783194243907928466796875), SC_(8570.86437622617816293160489058232377841) }, + { SC_(0.12234418094158172607421875), SC_(0.000149052008055150508880615234375), SC_(6717.056041611601434503816667176115175983) }, + { SC_(0.12234418094158172607421875), SC_(0.0003985252114944159984588623046875), SC_(2517.239624791193721935651001445721386388) }, + { SC_(0.12234418094158172607421875), SC_(0.00063875340856611728668212890625), SC_(1573.537133504954031944400284911837457022) }, + { SC_(0.12234418094158172607421875), SC_(0.0010718167759478092193603515625), SC_(940.9824521839767872273567252676025131813) }, + { SC_(0.12234418094158172607421875), SC_(0.00302191521041095256805419921875), SC_(338.9004728231691527607551677909299852596) }, + { SC_(0.12234418094158172607421875), SC_(0.00499413348734378814697265625), SC_(208.2167560058912570801594364459221673704) }, + { SC_(0.12234418094158172607421875), SC_(0.00928423367440700531005859375), SC_(115.6854909304322058992427948879497648697) }, + { SC_(0.12234418094158172607421875), SC_(0.0241700224578380584716796875), SC_(49.32969791056048917020484750450806898952) }, + { SC_(0.12234418094158172607421875), SC_(0.06227754056453704833984375), SC_(23.96433089039785878385398026154716224145) }, + { SC_(0.12234418094158172607421875), SC_(0.12234418094158172607421875), SC_(16.00879021155347361860225152368293681476) }, + { SC_(0.249557673931121826171875), SC_(0.1730655412757187150418758392333984375e-5), SC_(577819.4336758001309487960254412103050995) }, + { SC_(0.249557673931121826171875), SC_(0.216575062950141727924346923828125e-5), SC_(461737.3341047510499754357080790383820031) }, + { SC_(0.249557673931121826171875), SC_(0.72700195232755504548549652099609375e-5), SC_(137554.8703045289911809439807624151938961) }, + { SC_(0.249557673931121826171875), SC_(0.14000004739500582218170166015625e-4), SC_(71432.20508921489553798101101747421928658) }, + { SC_(0.249557673931121826171875), SC_(0.17196454791701398789882659912109375e-4), SC_(58155.17872508216014275133336930487316425) }, + { SC_(0.249557673931121826171875), SC_(0.60085076256655156612396240234375e-4), SC_(16646.72562520533216181580066063068368562) }, + { SC_(0.249557673931121826171875), SC_(0.000116783194243907928466796875), SC_(8566.533631320833922604939737241144459694) }, + { SC_(0.249557673931121826171875), SC_(0.000149052008055150508880615234375), SC_(6712.725304910041379547463769414719226049) }, + { SC_(0.249557673931121826171875), SC_(0.0003985252114944159984588623046875), SC_(2512.908951502353954899931722742258795843) }, + { SC_(0.249557673931121826171875), SC_(0.00063875340856611728668212890625), SC_(1569.206521259641573204771063342667522364) }, + { SC_(0.249557673931121826171875), SC_(0.0010718167759478092193603515625), SC_(936.6519499352040807786002507165791527979) }, + { SC_(0.249557673931121826171875), SC_(0.00302191521041095256805419921875), SC_(334.5704651347481129696285348965946449717) }, + { SC_(0.249557673931121826171875), SC_(0.00499413348734378814697265625), SC_(203.8872472312016457396325552558634401533) }, + { SC_(0.249557673931121826171875), SC_(0.00928423367440700531005859375), SC_(111.3570630932922956404588337137553755089) }, + { SC_(0.249557673931121826171875), SC_(0.0241700224578380584716796875), SC_(45.00497549746720864960484505977101941205) }, + { SC_(0.249557673931121826171875), SC_(0.06227754056453704833984375), SC_(19.64878939634529829482671747157749238241) }, + { SC_(0.249557673931121826171875), SC_(0.12234418094158172607421875), SC_(11.70690712490308572160798596818445924781) }, + { SC_(0.249557673931121826171875), SC_(0.249557673931121826171875), SC_(7.43117764194363534766326007127396596558) }, + { SC_(0.4912221431732177734375), SC_(0.1730655412757187150418758392333984375e-5), SC_(577817.2060900112343156227742783722242477) }, + { SC_(0.4912221431732177734375), SC_(0.216575062950141727924346923828125e-5), SC_(461735.1065191436037880774913212617052424) }, + { SC_(0.4912221431732177734375), SC_(0.72700195232755504548549652099609375e-5), SC_(137552.6427210502013719330760830235066265) }, + { SC_(0.4912221431732177734375), SC_(0.14000004739500582218170166015625e-4), SC_(71429.97750854271826748417926689981137106) }, + { SC_(0.4912221431732177734375), SC_(0.17196454791701398789882659912109375e-4), SC_(58152.95114574299223451554307458631053944) }, + { SC_(0.4912221431732177734375), SC_(0.60085076256655156612396240234375e-4), SC_(16644.49806375133515468300027499878555891) }, + { SC_(0.4912221431732177734375), SC_(0.000116783194243907928466796875), SC_(8564.30609350908744706175299411555016727) }, + { SC_(0.4912221431732177734375), SC_(0.000149052008055150508880615234375), SC_(6710.497780553044738565348466209402848711) }, + { SC_(0.4912221431732177734375), SC_(0.0003985252114944159984588623046875), SC_(2510.681531144392994425176618709216867447) }, + { SC_(0.4912221431732177734375), SC_(0.00063875340856611728668212890625), SC_(1566.979201011764353073771832954929489243) }, + { SC_(0.4912221431732177734375), SC_(0.0010718167759478092193603515625), SC_(934.424810070900872096317300784806140845) }, + { SC_(0.4912221431732177734375), SC_(0.00302191521041095256805419921875), SC_(332.3441361674208545920338936890520219368) }, + { SC_(0.4912221431732177734375), SC_(0.00499413348734378814697265625), SC_(201.661736077042279104131587974361267686) }, + { SC_(0.4912221431732177734375), SC_(0.00928423367440700531005859375), SC_(109.1333230334003841978154414034929309558) }, + { SC_(0.4912221431732177734375), SC_(0.0241700224578380584716796875), SC_(42.78729872557591865541089375762901990334) }, + { SC_(0.4912221431732177734375), SC_(0.06227754056453704833984375), SC_(17.4460819316241158060196349843707386278) }, + { SC_(0.4912221431732177734375), SC_(0.12234418094158172607421875), SC_(9.526325503205847116031906435161417490588) }, + { SC_(0.4912221431732177734375), SC_(0.249557673931121826171875), SC_(5.29246960141209501761625821192793399267) }, + { SC_(0.4912221431732177734375), SC_(0.4912221431732177734375), SC_(3.219402118875910610609405938089991233448) }, + { SC_(0.98384749889373779296875), SC_(0.1730655412757187150418758392333984375e-5), SC_(577815.8027083794188612080128409845969464) }, + { SC_(0.98384749889373779296875), SC_(0.216575062950141727924346923828125e-5), SC_(461733.7031378069519186395663902905333779) }, + { SC_(0.98384749889373779296875), SC_(0.72700195232755504548549652099609375e-5), SC_(137551.2393431762108897557348038998382483) }, + { SC_(0.98384749889373779296875), SC_(0.14000004739500582218170166015625e-4), SC_(71428.57413523420669457796654195811935814) }, + { SC_(0.98384749889373779296875), SC_(0.17196454791701398789882659912109375e-4), SC_(58151.54777460286663680012700676534401016) }, + { SC_(0.98384749889373779296875), SC_(0.60085076256655156612396240234375e-4), SC_(16643.0947217045916480034221544627958719) }, + { SC_(0.98384749889373779296875), SC_(0.000116783194243907928466796875), SC_(8562.902789920195444129742529158545021282) }, + { SC_(0.98384749889373779296875), SC_(0.000149052008055150508880615234375), SC_(6709.094498850205456474844856071691922634) }, + { SC_(0.98384749889373779296875), SC_(0.0003985252114944159984588623046875), SC_(2509.278418605274018068298560942907018612) }, + { SC_(0.98384749889373779296875), SC_(0.00063875340856611728668212890625), SC_(1565.576251301580865950004135795195775444) }, + { SC_(0.98384749889373779296875), SC_(0.0010718167759478092193603515625), SC_(933.0221537319602153754215436787494718852) }, + { SC_(0.98384749889373779296875), SC_(0.00302191521041095256805419921875), SC_(330.94279829404303569958136432588517172) }, + { SC_(0.98384749889373779296875), SC_(0.00499413348734378814697265625), SC_(200.2617273230187333085558792165477777705) }, + { SC_(0.98384749889373779296875), SC_(0.00928423367440700531005859375), SC_(107.7361906421497149255109757675877579688) }, + { SC_(0.98384749889373779296875), SC_(0.0241700224578380584716796875), SC_(41.39999224071125263346840515441953038723) }, + { SC_(0.98384749889373779296875), SC_(0.06227754056453704833984375), SC_(16.08289156666177645326150319535659473659) }, + { SC_(0.98384749889373779296875), SC_(0.12234418094158172607421875), SC_(8.198400692520445676182225309146007699082) }, + { SC_(0.98384749889373779296875), SC_(0.249557673931121826171875), SC_(4.02999561966720298968320014949698099934) }, + { SC_(0.98384749889373779296875), SC_(0.4912221431732177734375), SC_(2.055936454338069847305712686754828341873) }, + { SC_(0.98384749889373779296875), SC_(0.98384749889373779296875), SC_(1.032929315290172610887789380564667043814) }, + { SC_(1.1576130390167236328125), SC_(0.1730655412757187150418758392333984375e-5), SC_(577815.5427355465330915369348887400795881) }, + { SC_(1.1576130390167236328125), SC_(0.216575062950141727924346923828125e-5), SC_(461733.4431650622074324438967975281817502) }, + { SC_(1.1576130390167236328125), SC_(0.72700195232755504548549652099609375e-5), SC_(137550.9793714654803594510193138363286492) }, + { SC_(1.1576130390167236328125), SC_(0.14000004739500582218170166015625e-4), SC_(71428.31416488681012363291524217606772926) }, + { SC_(1.1576130390167236328125), SC_(0.17196454791701398789882659912109375e-4), SC_(58151.28780490298846292292924692819082452) }, + { SC_(1.1576130390167236328125), SC_(0.60085076256655156612396240234375e-4), SC_(16642.83476069247566223083782889998522446) }, + { SC_(1.1576130390167236328125), SC_(0.000116783194243907928466796875), SC_(8562.642840392122818351324568387557108215) }, + { SC_(1.1576130390167236328125), SC_(0.000149052008055150508880615234375), SC_(6708.834555857556625073381977740604849335) }, + { SC_(1.1576130390167236328125), SC_(0.0003985252114944159984588623046875), SC_(2509.018526125546521001310180066162018485) }, + { SC_(1.1576130390167236328125), SC_(0.00063875340856611728668212890625), SC_(1565.31640744103289671756170868901482807) }, + { SC_(1.1576130390167236328125), SC_(0.0010718167759478092193603515625), SC_(932.762397463961604068383352380008707687) }, + { SC_(1.1576130390167236328125), SC_(0.00302191521041095256805419921875), SC_(330.683435598755846538735187753113103072) }, + { SC_(1.1576130390167236328125), SC_(0.00499413348734378814697265625), SC_(200.0027612402289005219777498221840778645) }, + { SC_(1.1576130390167236328125), SC_(0.00928423367440700531005859375), SC_(107.4780823888026835210510576747111862097) }, + { SC_(1.1576130390167236328125), SC_(0.0241700224578380584716796875), SC_(41.14480937139578889465846396482000171393) }, + { SC_(1.1576130390167236328125), SC_(0.06227754056453704833984375), SC_(15.83485487407192992497766195076157117598) }, + { SC_(1.1576130390167236328125), SC_(0.12234418094158172607421875), SC_(7.960724407358708826099312543374012404891) }, + { SC_(1.1576130390167236328125), SC_(0.249557673931121826171875), SC_(3.811245606947061220014698222754841790021) }, + { SC_(1.1576130390167236328125), SC_(0.4912221431732177734375), SC_(1.864985985433908578407382661632190748347) }, + { SC_(1.1576130390167236328125), SC_(0.98384749889373779296875), SC_(0.8794113894526297066913746532758752650854) }, + { SC_(1.1576130390167236328125), SC_(1.1576130390167236328125), SC_(0.7354166217091777980353479508271062498694) }, + { SC_(3.451677799224853515625), SC_(0.1730655412757187150418758392333984375e-5), SC_(577814.1115428662525250588276510514518625) }, + { SC_(3.451677799224853515625), SC_(0.216575062950141727924346923828125e-5), SC_(461732.0119731896580478075110675971130346) }, + { SC_(3.451677799224853515625), SC_(0.72700195232755504548549652099609375e-5), SC_(137549.5481890686767487197748703286316759) }, + { SC_(3.451677799224853515625), SC_(0.14000004739500582218170166015625e-4), SC_(71426.88299498362472887101957257955998093) }, + { SC_(3.451677799224853515625), SC_(0.17196454791701398789882659912109375e-4), SC_(58149.85664093366220262799673637038534166) }, + { SC_(3.451677799224853515625), SC_(0.60085076256655156612396240234375e-4), SC_(16641.40367633707961597297946229365750965) }, + { SC_(3.451677799224853515625), SC_(0.000116783194243907928466796875), SC_(8561.21186127346057231030592776995438185) }, + { SC_(3.451677799224853515625), SC_(0.000149052008055150508880615234375), SC_(6707.403636626728503799366352647557445894) }, + { SC_(3.451677799224853515625), SC_(0.0003985252114944159984588623046875), SC_(2507.588069747633700223421192377319476019) }, + { SC_(3.451677799224853515625), SC_(0.00063875340856611728668212890625), SC_(1563.886396520179848712892080358485069201) }, + { SC_(3.451677799224853515625), SC_(0.0010718167759478092193603515625), SC_(931.3331889732664829172067120712796382419) }, + { SC_(3.451677799224853515625), SC_(0.00302191521041095256805419921875), SC_(329.2578308974055353737435199710138357799) }, + { SC_(3.451677799224853515625), SC_(0.00499413348734378814697265625), SC_(198.5807853328874673841146331473466734076) }, + { SC_(3.451677799224853515625), SC_(0.00928423367440700531005859375), SC_(106.0639454209989242636167523256705443384) }, + { SC_(3.451677799224853515625), SC_(0.0241700224578380584716796875), SC_(39.7573038840965945540156405590665655751) }, + { SC_(3.451677799224853515625), SC_(0.06227754056453704833984375), SC_(14.51173499786859531896732896410575858912) }, + { SC_(3.451677799224853515625), SC_(0.12234418094158172607421875), SC_(6.729195913158595075950019443099100171292) }, + { SC_(3.451677799224853515625), SC_(0.249557673931121826171875), SC_(2.741304677698721344294365319525317222167) }, + { SC_(3.451677799224853515625), SC_(0.4912221431732177734375), SC_(1.017497836883268981227414728898846256669) }, + { SC_(3.451677799224853515625), SC_(0.98384749889373779296875), SC_(0.2990587867064133290738023100895227166341) }, + { SC_(3.451677799224853515625), SC_(1.1576130390167236328125), SC_(0.2163386847733147106857844677090817253937) }, + { SC_(3.451677799224853515625), SC_(3.451677799224853515625), SC_(0.01652519763303650081335292786607962178339) }, + { SC_(7.88237094879150390625), SC_(0.1730655412757187150418758392333984375e-5), SC_(577813.198754792140261330701291638647824) }, + { SC_(7.88237094879150390625), SC_(0.216575062950141727924346923828125e-5), SC_(461731.0991860013706484306714826322844342) }, + { SC_(7.88237094879150390625), SC_(0.72700195232755504548549652099609375e-5), SC_(137548.6354122722570766622771847951442809) }, + { SC_(7.88237094879150390625), SC_(0.14000004739500582218170166015625e-4), SC_(71425.97023188866086605860479363423699013) }, + { SC_(7.88237094879150390625), SC_(0.17196454791701398789882659912109375e-4), SC_(58148.94388434619971311205149730394800817) }, + { SC_(7.88237094879150390625), SC_(0.60085076256655156612396240234375e-4), SC_(16640.49100705869051291353363757612255783) }, + { SC_(7.88237094879150390625), SC_(0.000116783194243907928466796875), SC_(8560.299307399680047010183807714288865753) }, + { SC_(7.88237094879150390625), SC_(0.000149052008055150508880615234375), SC_(6706.491148425126574230225684369287728173) }, + { SC_(7.88237094879150390625), SC_(0.0003985252114944159984588623046875), SC_(2506.676089056185727260916043452878904278) }, + { SC_(7.88237094879150390625), SC_(0.00063875340856611728668212890625), SC_(1562.97490418432113091213819441692776976) }, + { SC_(7.88237094879150390625), SC_(0.0010718167759478092193603515625), SC_(930.4225761445689384094548311853658027148) }, + { SC_(7.88237094879150390625), SC_(0.00302191521041095256805419921875), SC_(328.3511648607457177397481676726530367527) }, + { SC_(7.88237094879150390625), SC_(0.00499413348734378814697265625), SC_(197.6780882430004280958306091311600158314) }, + { SC_(7.88237094879150390625), SC_(0.00928423367440700531005859375), SC_(105.1698040852280070001916999885796092379) }, + { SC_(7.88237094879150390625), SC_(0.0241700224578380584716796875), SC_(38.89204373537342329818544125873862680698) }, + { SC_(7.88237094879150390625), SC_(0.06227754056453704833984375), SC_(13.71508274837784947531246616075179768398) }, + { SC_(7.88237094879150390625), SC_(0.12234418094158172607421875), SC_(6.027021665253566247206937588837870045568) }, + { SC_(7.88237094879150390625), SC_(0.249557673931121826171875), SC_(2.196025911549003286622100093306905004255) }, + { SC_(7.88237094879150390625), SC_(0.4912221431732177734375), SC_(0.6646129822482021273307209187266122443084) }, + { SC_(7.88237094879150390625), SC_(0.98384749889373779296875), SC_(0.1325556606373684570310603701407924055613) }, + { SC_(7.88237094879150390625), SC_(1.1576130390167236328125), SC_(0.08430925565819839284942640666812918054188) }, + { SC_(7.88237094879150390625), SC_(3.451677799224853515625), SC_(0.001567578372048954697546190363817432566287) }, + { SC_(7.88237094879150390625), SC_(7.88237094879150390625), SC_(0.2304086783008952665744998296791021930007e-4) }, + { SC_(15.848876953125), SC_(0.1730655412757187150418758392333984375e-5), SC_(577812.467396494064942097256551467225537) }, + { SC_(15.848876953125), SC_(0.216575062950141727924346923828125e-5), SC_(461730.3678286549639904324126292681940118) }, + { SC_(15.848876953125), SC_(0.72700195232755504548549652099609375e-5), SC_(137547.9040660901316000472092040840673884) }, + { SC_(15.848876953125), SC_(0.14000004739500582218170166015625e-4), SC_(71425.23890042634784384697230625424169406) }, + { SC_(15.848876953125), SC_(0.17196454791701398789882659912109375e-4), SC_(58148.21255987503466037789783804288733992) }, + { SC_(15.848876953125), SC_(0.60085076256655156612396240234375e-4), SC_(16639.75977638419101692348021851942073003) }, + { SC_(15.848876953125), SC_(0.000116783194243907928466796875), SC_(8559.568200701221551218767963648849246027) }, + { SC_(15.848876953125), SC_(0.000149052008055150508880615234375), SC_(6705.760112274562377109693147086107759687) }, + { SC_(15.848876953125), SC_(0.0003985252114944159984588623046875), SC_(2505.945598047360836406987017984692903213) }, + { SC_(15.848876953125), SC_(0.00063875340856611728668212890625), SC_(1562.244937662732265726871770794485810834) }, + { SC_(15.848876953125), SC_(0.0010718167759478092193603515625), SC_(929.6935540045242455486443804204735207793) }, + { SC_(15.848876953125), SC_(0.00302191521041095256805419921875), SC_(327.6263775091254046984727283245152516425) }, + { SC_(15.848876953125), SC_(0.00499413348734378814697265625), SC_(196.9575542754211734070057984061189034343) }, + { SC_(15.848876953125), SC_(0.00928423367440700531005859375), SC_(104.4584212615345465801581259971762769937) }, + { SC_(15.848876953125), SC_(0.0241700224578380584716796875), SC_(38.21136981001168010710740679190694930632) }, + { SC_(15.848876953125), SC_(0.06227754056453704833984375), SC_(13.10618362350255476392166743793259749139) }, + { SC_(15.848876953125), SC_(0.12234418094158172607421875), SC_(5.514029391894522673178885977576812901954) }, + { SC_(15.848876953125), SC_(0.249557673931121826171875), SC_(1.833598229039232723593123386645917772312) }, + { SC_(15.848876953125), SC_(0.4912221431732177734375), SC_(0.467845046165576115379722912718972755625) }, + { SC_(15.848876953125), SC_(0.98384749889373779296875), SC_(0.06664123970861700317203157698863069745986) }, + { SC_(15.848876953125), SC_(1.1576130390167236328125), SC_(0.03776996613323409917542405876735205164805) }, + { SC_(15.848876953125), SC_(3.451677799224853515625), SC_(0.0001767056825017873997922509336879545386291) }, + { SC_(15.848876953125), SC_(7.88237094879150390625), SC_(0.310532280359287823834522315221229918373e-6) }, + { SC_(15.848876953125), SC_(15.848876953125), SC_(0.2576651451920685510042001174792567650789e-9) }, + { SC_(31.314670562744140625), SC_(0.1730655412757187150418758392333984375e-5), SC_(577811.7705852061307949254353294671322771) }, + { SC_(31.314670562744140625), SC_(0.216575062950141727924346923828125e-5), SC_(461729.6710184828160166319994100531668849) }, + { SC_(31.314670562744140625), SC_(0.72700195232755504548549652099609375e-5), SC_(137547.2072690075496939939676230577664587) }, + { SC_(31.314670562744140625), SC_(0.14000004739500582218170166015625e-4), SC_(71424.54212060195465862284514291276978183) }, + { SC_(31.314670562744140625), SC_(0.17196454791701398789882659912109375e-4), SC_(58147.51578824736212268726758935041995717) }, + { SC_(31.314670562744140625), SC_(0.60085076256655156612396240234375e-4), SC_(16639.06311472621275702017697078807585708) }, + { SC_(31.314670562744140625), SC_(0.000116783194243907928466796875), SC_(8558.871684391681177902610046087055681713) }, + { SC_(31.314670562744140625), SC_(0.000149052008055150508880615234375), SC_(6705.063678672548887519293397395332516276) }, + { SC_(31.314670562744140625), SC_(0.0003985252114944159984588623046875), SC_(2505.24980349352938047593785567583576373) }, + { SC_(31.314670562744140625), SC_(0.00063875340856611728668212890625), SC_(1561.549757854035533455898102964904417179) }, + { SC_(31.314670562744140625), SC_(0.0010718167759478092193603515625), SC_(928.999480869800191174333706227134595703) }, + { SC_(31.314670562744140625), SC_(0.00302191521041095256805419921875), SC_(326.9372633593889344749789623402894509337) }, + { SC_(31.314670562744140625), SC_(0.00499413348734378814697265625), SC_(196.2734150111948032449933491989589331273) }, + { SC_(31.314670562744140625), SC_(0.00928423367440700531005859375), SC_(103.7849653265487425512027398001941283229) }, + { SC_(31.314670562744140625), SC_(0.0241700224578380584716796875), SC_(37.57355943415404987582558557137728471079) }, + { SC_(31.314670562744140625), SC_(0.06227754056453704833984375), SC_(12.55038605336216829222092298247150246565) }, + { SC_(31.314670562744140625), SC_(0.12234418094158172607421875), SC_(5.06466450422007092993671829951452526177) }, + { SC_(31.314670562744140625), SC_(0.249557673931121826171875), SC_(1.542483843415710154392732807527862496098) }, + { SC_(31.314670562744140625), SC_(0.4912221431732177734375), SC_(0.3335279709424437595711652140518853567302) }, + { SC_(31.314670562744140625), SC_(0.98384749889373779296875), SC_(0.03409297661295516414885174102503442819277) }, + { SC_(31.314670562744140625), SC_(1.1576130390167236328125), SC_(0.01721838700844971854228152401760085523744) }, + { SC_(31.314670562744140625), SC_(3.451677799224853515625), SC_(0.1900362128922583001056640211044473004449e-4) }, + { SC_(31.314670562744140625), SC_(7.88237094879150390625), SC_(0.2885050414250820990910991383845819731228e-8) }, + { SC_(31.314670562744140625), SC_(15.848876953125), SC_(0.6530600415427592338710565326600917620279e-13) }, + { SC_(31.314670562744140625), SC_(31.314670562744140625), SC_(0.8915675179813854663775491877023168025702e-19) }, + { SC_(35.515575408935546875), SC_(0.1730655412757187150418758392333984375e-5), SC_(577811.6427939229375161086906177400275569) }, + { SC_(35.515575408935546875), SC_(0.216575062950141727924346923828125e-5), SC_(461729.5432274267192940591041545317110485) }, + { SC_(35.515575408935546875), SC_(0.72700195232755504548549652099609375e-5), SC_(137547.0794806155767312939551779369164394) }, + { SC_(35.515575408935546875), SC_(0.14000004739500582218170166015625e-4), SC_(71424.41433572253924394173477030901070617) }, + { SC_(35.515575408935546875), SC_(0.17196454791701398789882659912109375e-4), SC_(58147.38800503622156242701682984885441441) }, + { SC_(35.515575408935546875), SC_(0.60085076256655156612396240234375e-4), SC_(16638.93535389697145567616644195839808463) }, + { SC_(35.515575408935546875), SC_(0.000116783194243907928466796875), SC_(8558.7439531443773341365422276985698545) }, + { SC_(35.515575408935546875), SC_(0.000149052008055150508880615234375), SC_(6704.935964257969942256683796604190388483) }, + { SC_(35.515575408935546875), SC_(0.0003985252114944159984588623046875), SC_(2505.122219132224374561111132130667265447) }, + { SC_(35.515575408935546875), SC_(0.00063875340856611728668212890625), SC_(1561.422298589200014741982262412434636973) }, + { SC_(35.515575408935546875), SC_(0.0010718167759478092193603515625), SC_(928.8722467787222242808854452351889563633) }, + { SC_(35.515575408935546875), SC_(0.00302191521041095256805419921875), SC_(326.8110378414911903385288649321631400664) }, + { SC_(35.515575408935546875), SC_(0.00499413348734378814697265625), SC_(196.1482005962757034094399257872899036696) }, + { SC_(35.515575408935546875), SC_(0.00928423367440700531005859375), SC_(103.6619197982581616421872226071400592126) }, + { SC_(35.515575408935546875), SC_(0.0241700224578380584716796875), SC_(37.45772609209636964536574943912854380171) }, + { SC_(35.515575408935546875), SC_(0.06227754056453704833984375), SC_(12.450993041772750669407167680667607419) }, + { SC_(35.515575408935546875), SC_(0.12234418094158172607421875), SC_(4.986241033913772097760869076957541032543) }, + { SC_(35.515575408935546875), SC_(0.249557673931121826171875), SC_(1.494248013206312554952038234048230712297) }, + { SC_(35.515575408935546875), SC_(0.4912221431732177734375), SC_(0.3133802674518380533642801450941624241265) }, + { SC_(35.515575408935546875), SC_(0.98384749889373779296875), SC_(0.03012063183422189552497230190183310697765) }, + { SC_(35.515575408935546875), SC_(1.1576130390167236328125), SC_(0.01488854601694810064869001826934615844448) }, + { SC_(35.515575408935546875), SC_(3.451677799224853515625), SC_(0.1249353030883651639444207203869412646859e-4) }, + { SC_(35.515575408935546875), SC_(7.88237094879150390625), SC_(0.1169663515742618634451758579426537250388e-8) }, + { SC_(35.515575408935546875), SC_(15.848876953125), SC_(0.1250851178791656557811931908536049655477e-13) }, + { SC_(35.515575408935546875), SC_(31.314670562744140625), SC_(0.5365332615381537353158263927841062696094e-20) }, + { SC_(35.515575408935546875), SC_(35.515575408935546875), SC_(0.2474098388705327630350038282012894724267e-21) } + } }; +#undef SC_ + + + + diff --git a/test/beta_med_data.ipp b/test/beta_med_data.ipp new file mode 100644 index 000000000..60e869fb0 --- /dev/null +++ b/test/beta_med_data.ipp @@ -0,0 +1,1842 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1830> beta_med_data = { { + { SC_(0.4883005917072296142578125), SC_(0.4883005917072296142578125), SC_(3.245912809500479157065104747353807392371) }, + { SC_(3.5808107852935791015625), SC_(0.4883005917072296142578125), SC_(1.007653173802923954909901438393379243537) }, + { SC_(3.5808107852935791015625), SC_(3.5808107852935791015625), SC_(0.01354763979296020361276499134253466025558) }, + { SC_(9.76306438446044921875), SC_(0.4883005917072296142578125), SC_(0.6040068168955603700205507368871869179054) }, + { SC_(9.76306438446044921875), SC_(3.5808107852935791015625), SC_(0.0006768556385450819292424677664459339662542) }, + { SC_(9.76306438446044921875), SC_(9.76306438446044921875), SC_(0.1522016641487441392375569251478701938958e-5) }, + { SC_(10.9950771331787109375), SC_(0.4883005917072296142578125), SC_(0.5691374355039684505283786467923310741394) }, + { SC_(10.9950771331787109375), SC_(3.5808107852935791015625), SC_(0.0004623291188878679140702882645611609028529) }, + { SC_(10.9950771331787109375), SC_(9.76306438446044921875), SC_(0.6525428759744388549684590935535556520911e-6) }, + { SC_(10.9950771331787109375), SC_(10.9950771331787109375), SC_(0.2595645778453125149921775190075494972069e-6) }, + { SC_(11.2553272247314453125), SC_(0.4883005917072296142578125), SC_(0.5625252582720929656922435362566677067416) }, + { SC_(11.2553272247314453125), SC_(3.5808107852935791015625), SC_(0.0004286883639355158965650882249453525366545) }, + { SC_(11.2553272247314453125), SC_(9.76306438446044921875), SC_(0.5507764130648082456092816216454348231704e-6) }, + { SC_(11.2553272247314453125), SC_(10.9950771331787109375), SC_(0.215765220969841623426272969427339892725e-6) }, + { SC_(11.2553272247314453125), SC_(11.2553272247314453125), SC_(0.1787990823319435797792105752447442768941e-6) }, + { SC_(12.70741176605224609375), SC_(0.4883005917072296142578125), SC_(0.5294907274516666109456973690863173323156) }, + { SC_(12.70741176605224609375), SC_(3.5808107852935791015625), SC_(0.0002889727352835592358365667915148162805071) }, + { SC_(12.70741176605224609375), SC_(9.76306438446044921875), SC_(0.2252927431029049671249995618445578512183e-6) }, + { SC_(12.70741176605224609375), SC_(10.9950771331787109375), SC_(0.8131970313223237520922385412367530078239e-7) }, + { SC_(12.70741176605224609375), SC_(11.2553272247314453125), SC_(0.6627020372930043647557276756580896208093e-7) }, + { SC_(12.70741176605224609375), SC_(12.70741176605224609375), SC_(0.2245035027874900533178284692921746500427e-7) }, + { SC_(13.55634593963623046875), SC_(0.4883005917072296142578125), SC_(0.5127159488422374707026291329594215821195) }, + { SC_(13.55634593963623046875), SC_(3.5808107852935791015625), SC_(0.0002338050540339516890899323768977469084643) }, + { SC_(13.55634593963623046875), SC_(9.76306438446044921875), SC_(0.1385641428853223512568009007531028899044e-6) }, + { SC_(13.55634593963623046875), SC_(10.9950771331787109375), SC_(0.4779208342424526648121034774140947601376e-7) }, + { SC_(13.55634593963623046875), SC_(11.2553272247314453125), SC_(0.3858688985561532847951616400183530491078e-7) }, + { SC_(13.55634593963623046875), SC_(12.70741176605224609375), SC_(0.1243334579233090577547671408856256594842e-7) }, + { SC_(13.55634593963623046875), SC_(13.55634593963623046875), SC_(0.6695819170364036861651031065079190250677e-8) }, + { SC_(14.19721508026123046875), SC_(0.4883005917072296142578125), SC_(0.5010725503977163404563348242929462964601) }, + { SC_(14.19721508026123046875), SC_(3.5808107852935791015625), SC_(0.0002008402390975031689923237986077084533841) }, + { SC_(14.19721508026123046875), SC_(9.76306438446044921875), SC_(0.9753123839573875998586188687154385562149e-7) }, + { SC_(14.19721508026123046875), SC_(10.9950771331787109375), SC_(0.325396200950697967725364011405694079166e-7) }, + { SC_(14.19721508026123046875), SC_(11.2553272247314453125), SC_(0.2609397484154104517486373559610576982077e-7) }, + { SC_(14.19721508026123046875), SC_(12.70741176605224609375), SC_(0.8104897951369500255523549462354045969225e-8) }, + { SC_(14.19721508026123046875), SC_(13.55634593963623046875), SC_(0.4276119047726022319466243593050360444817e-8) }, + { SC_(14.19721508026123046875), SC_(14.19721508026123046875), SC_(0.2689992929599026714275097270923824879089e-8) }, + { SC_(15.76973247528076171875), SC_(0.4883005917072296142578125), SC_(0.475600932703444822636860975438244705831) }, + { SC_(15.76973247528076171875), SC_(3.5808107852935791015625), SC_(0.0001418728926781729275649568751766718949223) }, + { SC_(15.76973247528076171875), SC_(9.76306438446044921875), SC_(0.4336326752543966160912379066984549678452e-7) }, + { SC_(15.76973247528076171875), SC_(10.9950771331787109375), SC_(0.1338244910537290013872585434554199633933e-7) }, + { SC_(15.76973247528076171875), SC_(11.2553272247314453125), SC_(0.1056140308679468515555449880362724923627e-7) }, + { SC_(15.76973247528076171875), SC_(12.70741176605224609375), SC_(0.3009132692253922032267871346669237418265e-8) }, + { SC_(15.76973247528076171875), SC_(13.55634593963623046875), SC_(0.1512669863598730427313876780451595800786e-8) }, + { SC_(15.76973247528076171875), SC_(14.19721508026123046875), SC_(0.918353523266471209411262276890588115837e-9) }, + { SC_(15.76973247528076171875), SC_(15.76973247528076171875), SC_(0.2882767813027467848960413793272553398391e-9) }, + { SC_(17.126956939697265625), SC_(0.4883005917072296142578125), SC_(0.4565218812244720449676057777369567274854) }, + { SC_(17.126956939697265625), SC_(3.5808107852935791015625), SC_(0.0001077656194412027230279434065555746466143) }, + { SC_(17.126956939697265625), SC_(9.76306438446044921875), SC_(0.2267616977041493737061190673358616637022e-7) }, + { SC_(17.126956939697265625), SC_(10.9950771331787109375), SC_(0.6567383488365389895737498469534509899371e-8) }, + { SC_(17.126956939697265625), SC_(11.2553272247314453125), SC_(0.5115778604579878982282382763211068891719e-8) }, + { SC_(17.126956939697265625), SC_(12.70741176605224609375), SC_(0.1358240483817446693334902305742392032884e-8) }, + { SC_(17.126956939697265625), SC_(13.55634593963623046875), SC_(0.6562503597342494326172080038282840625689e-9) }, + { SC_(17.126956939697265625), SC_(14.19721508026123046875), SC_(0.3869619725572160229261125982995702539806e-9) }, + { SC_(17.126956939697265625), SC_(15.76973247528076171875), SC_(0.113368810788831205921628103707632404292e-9) }, + { SC_(17.126956939697265625), SC_(17.126956939697265625), SC_(0.4211904380955363652677610570193848736124e-10) }, + { SC_(17.394779205322265625), SC_(0.4883005917072296142578125), SC_(0.4530251392082678136392746003508150955157) }, + { SC_(17.394779205322265625), SC_(3.5808107852935791015625), SC_(0.0001023208443499526530037973037899364285962) }, + { SC_(17.394779205322265625), SC_(9.76306438446044921875), SC_(0.2005354902961112804072043023442896551258e-7) }, + { SC_(17.394779205322265625), SC_(10.9950771331787109375), SC_(0.5737643064679879701819734148551932728972e-8) }, + { SC_(17.394779205322265625), SC_(11.2553272247314453125), SC_(0.4458281433716227719378477553190576945752e-8) }, + { SC_(17.394779205322265625), SC_(12.70741176605224609375), SC_(0.1167764940936604548122803636068842045715e-8) }, + { SC_(17.394779205322265625), SC_(13.55634593963623046875), SC_(0.5599447115103713063560079265124538962881e-9) }, + { SC_(17.394779205322265625), SC_(14.19721508026123046875), SC_(0.3283303102000759769499915328513568628178e-9) }, + { SC_(17.394779205322265625), SC_(15.76973247528076171875), SC_(0.9492349452847812246661303626609556094242e-10) }, + { SC_(17.394779205322265625), SC_(17.126956939697265625), SC_(0.348822657233525373086455562928279206484e-10) }, + { SC_(17.394779205322265625), SC_(17.394779205322265625), SC_(0.2882805174446943738297455251918170211958e-10) }, + { SC_(18.8463134765625), SC_(0.4883005917072296142578125), SC_(0.4353971044081953663699145675473451692464) }, + { SC_(18.8463134765625), SC_(3.5808107852935791015625), SC_(0.7821907282155094140409267653485080042403e-4) }, + { SC_(18.8463134765625), SC_(9.76306438446044921875), SC_(0.1057326607413087663065202876489554338397e-7) }, + { SC_(18.8463134765625), SC_(10.9950771331787109375), SC_(0.2837956463158533935066785198610085243411e-8) }, + { SC_(18.8463134765625), SC_(11.2553272247314453125), SC_(0.2176364981562781990024053280982715425444e-8) }, + { SC_(18.8463134765625), SC_(12.70741176605224609375), SC_(0.5308686415267842780183531434236061793759e-9) }, + { SC_(18.8463134765625), SC_(13.55634593963623046875), SC_(0.2445522707205327599339640190943446349336e-9) }, + { SC_(18.8463134765625), SC_(14.19721508026123046875), SC_(0.1392224976008039575865521517870553781522e-9) }, + { SC_(18.8463134765625), SC_(15.76973247528076171875), SC_(0.3752833192186647967829389243731752462616e-10) }, + { SC_(18.8463134765625), SC_(17.126956939697265625), SC_(0.1301581966373817837525897476236998994169e-10) }, + { SC_(18.8463134765625), SC_(17.394779205322265625), SC_(0.1063754790511525096235331936144872215005e-10) }, + { SC_(18.8463134765625), SC_(18.8463134765625), SC_(0.3700501299436030344449165267036021201616e-11) }, + { SC_(21.200313568115234375), SC_(0.4883005917072296142578125), SC_(0.4107768271075117698432781871115142016384) }, + { SC_(21.200313568115234375), SC_(3.5808107852935791015625), SC_(0.5260236463693837724043412635292001143626e-4) }, + { SC_(21.200313568115234375), SC_(9.76306438446044921875), SC_(0.4067793964122211133967440637695915061844e-8) }, + { SC_(21.200313568115234375), SC_(10.9950771331787109375), SC_(0.9908560320269199376579063422647299651256e-9) }, + { SC_(21.200313568115234375), SC_(11.2553272247314453125), SC_(0.7448210759033639250158262503146533595815e-9) }, + { SC_(21.200313568115234375), SC_(12.70741176605224609375), SC_(0.1629899073274693321102642373894998473147e-9) }, + { SC_(21.200313568115234375), SC_(13.55634593963623046875), SC_(0.7062476240846740692309115737284750125444e-10) }, + { SC_(21.200313568115234375), SC_(14.19721508026123046875), SC_(0.384300871793649706080030568271428258228e-10) }, + { SC_(21.200313568115234375), SC_(15.76973247528076171875), SC_(0.9304852552665854497602936949670054979977e-11) }, + { SC_(21.200313568115234375), SC_(17.126956939697265625), SC_(0.2952793062809893052321087076875734485069e-11) }, + { SC_(21.200313568115234375), SC_(17.394779205322265625), SC_(0.2372233401671316914090788027243717002591e-11) }, + { SC_(21.200313568115234375), SC_(18.8463134765625), SC_(0.7535990812597486150774793755987502519808e-12) }, + { SC_(21.200313568115234375), SC_(21.200313568115234375), SC_(0.1333931751865168047637607803118636066591e-12) }, + { SC_(22.111194610595703125), SC_(0.4883005917072296142578125), SC_(0.4023270958353859331729421916196641590548) }, + { SC_(22.111194610595703125), SC_(3.5808107852935791015625), SC_(0.4561925811955480712455554825531898862552e-4) }, + { SC_(22.111194610595703125), SC_(9.76306438446044921875), SC_(0.287908313625114133096593363609925166202e-8) }, + { SC_(22.111194610595703125), SC_(10.9950771331787109375), SC_(0.6767823250623074424823331153095665925939e-9) }, + { SC_(22.111194610595703125), SC_(11.2553272247314453125), SC_(0.5050113859948054818979152159757318523478e-9) }, + { SC_(22.111194610595703125), SC_(12.70741176605224609375), SC_(0.106187257870437467688220317658808233483e-9) }, + { SC_(22.111194610595703125), SC_(13.55634593963623046875), SC_(0.4498562989250545729115126848216409483232e-10) }, + { SC_(22.111194610595703125), SC_(14.19721508026123046875), SC_(0.2407416895832622515950068935401606902031e-10) }, + { SC_(22.111194610595703125), SC_(15.76973247528076171875), SC_(0.5602394190379196690399208864904077977739e-11) }, + { SC_(22.111194610595703125), SC_(17.126956939697265625), SC_(0.1720354444466919736653692109072577024587e-11) }, + { SC_(22.111194610595703125), SC_(17.394779205322265625), SC_(0.1373360289966783082259797534114759219797e-11) }, + { SC_(22.111194610595703125), SC_(18.8463134765625), SC_(0.4218383476849226492456016936929687944407e-12) }, + { SC_(22.111194610595703125), SC_(21.200313568115234375), SC_(0.7087929852797230934618898349820935323437e-13) }, + { SC_(22.111194610595703125), SC_(22.111194610595703125), SC_(0.3693925710507406432157100681789297325451e-13) }, + { SC_(27.8570384979248046875), SC_(0.4883005917072296142578125), SC_(0.3589925561728178171282792250365645685032) }, + { SC_(27.8570384979248046875), SC_(3.5808107852935791015625), SC_(0.2075878651836665669368884218199488520905e-4) }, + { SC_(27.8570384979248046875), SC_(9.76306438446044921875), SC_(0.4160276268827202943707235932915324992161e-9) }, + { SC_(27.8570384979248046875), SC_(10.9950771331787109375), SC_(0.7978662510892932981553386691907405552849e-10) }, + { SC_(27.8570384979248046875), SC_(11.2553272247314453125), SC_(0.5708291745000159059346791406903873267777e-10) }, + { SC_(27.8570384979248046875), SC_(12.70741176605224609375), SC_(0.9543236927793619864929009493191799701852e-11) }, + { SC_(27.8570384979248046875), SC_(13.55634593963623046875), SC_(0.3550349817469550561652985297458703305561e-11) }, + { SC_(27.8570384979248046875), SC_(14.19721508026123046875), SC_(0.1725770772772756923387339566809606981332e-11) }, + { SC_(27.8570384979248046875), SC_(15.76973247528076171875), SC_(0.3192985780728106116659210115707091179214e-12) }, + { SC_(27.8570384979248046875), SC_(17.126956939697265625), SC_(0.8101403435735166773598922330519112016599e-13) }, + { SC_(27.8570384979248046875), SC_(17.394779205322265625), SC_(0.6232934753512174026087857689531889837758e-13) }, + { SC_(27.8570384979248046875), SC_(18.8463134765625), SC_(0.1573631663879034136111832580852290090108e-13) }, + { SC_(27.8570384979248046875), SC_(21.200313568115234375), SC_(0.1950230919229435853575398999229375068184e-14) }, + { SC_(27.8570384979248046875), SC_(22.111194610595703125), SC_(0.9072521588158641532437385761751929266303e-15) }, + { SC_(27.8570384979248046875), SC_(27.8570384979248046875), SC_(0.1141504856002585090268307606502603721469e-16) }, + { SC_(29.709972381591796875), SC_(0.4883005917072296142578125), SC_(0.3477823238382238883492832030740254852447) }, + { SC_(29.709972381591796875), SC_(3.5808107852935791015625), SC_(0.1664375828074216424794696189071743228252e-4) }, + { SC_(29.709972381591796875), SC_(9.76306438446044921875), SC_(0.2401328069062330362257577205189189698453e-9) }, + { SC_(29.709972381591796875), SC_(10.9950771331787109375), SC_(0.434120986268510816320746332427440448327e-10) }, + { SC_(29.709972381591796875), SC_(11.2553272247314453125), SC_(0.3068116683086284682703342936513064233322e-10) }, + { SC_(29.709972381591796875), SC_(12.70741176605224609375), SC_(0.4797707993418339299819157037059152237173e-11) }, + { SC_(29.709972381591796875), SC_(13.55634593963623046875), SC_(0.1718349744861700519228863467434376863524e-11) }, + { SC_(29.709972381591796875), SC_(14.19721508026123046875), SC_(0.8120626583858156108633468035076044268179e-12) }, + { SC_(29.709972381591796875), SC_(15.76973247528076171875), SC_(0.14045910738410688596830694772482946574e-12) }, + { SC_(29.709972381591796875), SC_(17.126956939697265625), SC_(0.3368934561619762455788537387337498499453e-13) }, + { SC_(29.709972381591796875), SC_(17.394779205322265625), SC_(0.2563848124688640641926355522231510029685e-13) }, + { SC_(29.709972381591796875), SC_(18.8463134765625), SC_(0.6108386338217542915860203809066788463706e-14) }, + { SC_(29.709972381591796875), SC_(21.200313568115234375), SC_(0.6916464828117485928473564392736692069469e-15) }, + { SC_(29.709972381591796875), SC_(22.111194610595703125), SC_(0.3110617773143125784958517674263778654425e-15) }, + { SC_(29.709972381591796875), SC_(27.8570384979248046875), SC_(0.3204076279803594566520583048746356407535e-17) }, + { SC_(29.709972381591796875), SC_(29.709972381591796875), SC_(0.8468280452126064468102013972207112224933e-18) }, + { SC_(30.198291778564453125), SC_(0.4883005917072296142578125), SC_(0.3450013063214092278003826913821258941045) }, + { SC_(30.198291778564453125), SC_(3.5808107852935791015625), SC_(0.1573697801226074230066588930749332779094e-4) }, + { SC_(30.198291778564453125), SC_(9.76306438446044921875), SC_(0.2088055191857087580983675686557261010954e-9) }, + { SC_(30.198291778564453125), SC_(10.9950771331787109375), SC_(0.371827653025922326467289331226061429822e-10) }, + { SC_(30.198291778564453125), SC_(11.2553272247314453125), SC_(0.2619646637570789783565132121976479109927e-10) }, + { SC_(30.198291778564453125), SC_(12.70741176605224609375), SC_(0.4026911960271420608734537576577676738583e-11) }, + { SC_(30.198291778564453125), SC_(13.55634593963623046875), SC_(0.1428309351736255086662593847133380376219e-11) }, + { SC_(30.198291778564453125), SC_(14.19721508026123046875), SC_(0.6701371609456016629091365622514231011834e-12) }, + { SC_(30.198291778564453125), SC_(15.76973247528076171875), SC_(0.1139249449218762673403156318786858897811e-12) }, + { SC_(30.198291778564453125), SC_(17.126956939697265625), SC_(0.2693337055779074131530543029634858402834e-13) }, + { SC_(30.198291778564453125), SC_(17.394779205322265625), SC_(0.2043970446464189222078352000840576189797e-13) }, + { SC_(30.198291778564453125), SC_(18.8463134765625), SC_(0.4797753882261282258724368987530909083129e-14) }, + { SC_(30.198291778564453125), SC_(21.200313568115234375), SC_(0.5307672093385089421213408000836785568336e-15) }, + { SC_(30.198291778564453125), SC_(22.111194610595703125), SC_(0.2366393476936763343772464625352951224657e-15) }, + { SC_(30.198291778564453125), SC_(27.8570384979248046875), SC_(0.2314935047813294274091306749347318922913e-17) }, + { SC_(30.198291778564453125), SC_(29.709972381591796875), SC_(0.6023975938318825302439217152851583640171e-18) }, + { SC_(30.198291778564453125), SC_(30.198291778564453125), SC_(0.4268035796694760359657836153803397231152e-18) }, + { SC_(30.8236217498779296875), SC_(0.4883005917072296142578125), SC_(0.3415370161731917691566899725280512519679) }, + { SC_(30.8236217498779296875), SC_(3.5808107852935791015625), SC_(0.1466598019474246105507229329256584240525e-4) }, + { SC_(30.8236217498779296875), SC_(9.76306438446044921875), SC_(0.175087490904824232203191069336132852882e-9) }, + { SC_(30.8236217498779296875), SC_(10.9950771331787109375), SC_(0.3058937126403997631314430144439050519783e-10) }, + { SC_(30.8236217498779296875), SC_(11.2553272247314453125), SC_(0.2146611620334437353611750862997576312888e-10) }, + { SC_(30.8236217498779296875), SC_(12.70741176605224609375), SC_(0.3229171806247949403811118409019311917146e-11) }, + { SC_(30.8236217498779296875), SC_(13.55634593963623046875), SC_(0.1131350995325191928798445072940000126076e-11) }, + { SC_(30.8236217498779296875), SC_(14.19721508026123046875), SC_(0.5259847105941987055908511900331127282425e-12) }, + { SC_(30.8236217498779296875), SC_(15.76973247528076171875), SC_(0.8748550806510654668845077488296515273968e-13) }, + { SC_(30.8236217498779296875), SC_(17.126956939697265625), SC_(0.2030831907930987827774184348426026958613e-13) }, + { SC_(30.8236217498779296875), SC_(17.394779205322265625), SC_(0.1535745572474280969795621395537797920974e-13) }, + { SC_(30.8236217498779296875), SC_(18.8463134765625), SC_(0.3537464108348072467226117430167178910802e-14) }, + { SC_(30.8236217498779296875), SC_(21.200313568115234375), SC_(0.3799959410989879063822147360588729843187e-15) }, + { SC_(30.8236217498779296875), SC_(22.111194610595703125), SC_(0.1675613717948109160515726874355133028335e-15) }, + { SC_(30.8236217498779296875), SC_(27.8570384979248046875), SC_(0.1535416436711429645299008269919627668533e-17) }, + { SC_(30.8236217498779296875), SC_(29.709972381591796875), SC_(0.3917519244869553910770981031029616397246e-18) }, + { SC_(30.8236217498779296875), SC_(30.198291778564453125), SC_(0.2761496014336707442900398003078930000949e-18) }, + { SC_(30.8236217498779296875), SC_(30.8236217498779296875), SC_(0.1775230644081684989691212698699062847369e-18) }, + { SC_(36.1357879638671875), SC_(0.4883005917072296142578125), SC_(0.3158347709194840953101947700693893109055) }, + { SC_(36.1357879638671875), SC_(3.5808107852935791015625), SC_(0.8473434256663350925540467446632333188641e-5) }, + { SC_(36.1357879638671875), SC_(9.76306438446044921875), SC_(0.4406000695826393580630973647364522783868e-10) }, + { SC_(36.1357879638671875), SC_(10.9950771331787109375), SC_(0.6617943489398380006288038689501672324193e-11) }, + { SC_(36.1357879638671875), SC_(11.2553272247314453125), SC_(0.4500666608563011064425012806441440004453e-11) }, + { SC_(36.1357879638671875), SC_(12.70741176605224609375), SC_(0.570183717807489190474290799973417813279e-12) }, + { SC_(36.1357879638671875), SC_(13.55634593963623046875), SC_(0.1811343167226481089963168690694354800242e-12) }, + { SC_(36.1357879638671875), SC_(14.19721508026123046875), SC_(0.7830495695520927222177163952520348611194e-13) }, + { SC_(36.1357879638671875), SC_(15.76973247528076171875), SC_(0.1094037310376717569087750954841807465454e-13) }, + { SC_(36.1357879638671875), SC_(17.126956939697265625), SC_(0.2194617804663193877023347868146138863657e-14) }, + { SC_(36.1357879638671875), SC_(17.394779205322265625), SC_(0.1613224130033110500134412374053207852378e-14) }, + { SC_(36.1357879638671875), SC_(18.8463134765625), SC_(0.319501581887909436556287396296516012325e-15) }, + { SC_(36.1357879638671875), SC_(21.200313568115234375), SC_(0.2710181585698125469457383941466936123385e-16) }, + { SC_(36.1357879638671875), SC_(22.111194610595703125), SC_(0.1093704980962708065836111981869625690682e-16) }, + { SC_(36.1357879638671875), SC_(27.8570384979248046875), SC_(0.5914480920346583839934369076677450781523e-19) }, + { SC_(36.1357879638671875), SC_(29.709972381591796875), SC_(0.1286596730795343640816877240595923084855e-19) }, + { SC_(36.1357879638671875), SC_(30.198291778564453125), SC_(0.8702908911151389466421368002762407850618e-20) }, + { SC_(36.1357879638671875), SC_(30.8236217498779296875), SC_(0.5309325607626812172379308121961469227959e-20) }, + { SC_(36.1357879638671875), SC_(36.1357879638671875), SC_(0.103806902371243974533462551979044234971e-21) }, + { SC_(39.228778839111328125), SC_(0.4883005917072296142578125), SC_(0.30333686819585904372455030757983289496) }, + { SC_(39.228778839111328125), SC_(3.5808107852935791015625), SC_(0.6375212784955872629756252516989740190794e-5) }, + { SC_(39.228778839111328125), SC_(9.76306438446044921875), SC_(0.2141557731961807029434488757171491466231e-10) }, + { SC_(39.228778839111328125), SC_(10.9950771331787109375), SC_(0.2968928747531977988081764619391254485551e-11) }, + { SC_(39.228778839111328125), SC_(11.2553272247314453125), SC_(0.1985704640946010990280998218814978289764e-11) }, + { SC_(39.228778839111328125), SC_(12.70741176605224609375), SC_(0.2295956074174538146640535268244211735879e-12) }, + { SC_(39.228778839111328125), SC_(13.55634593963623046875), SC_(0.6922740269206517721708177687000388712989e-13) }, + { SC_(39.228778839111328125), SC_(14.19721508026123046875), SC_(0.2878734694701671044273382456592953359473e-13) }, + { SC_(39.228778839111328125), SC_(15.76973247528076171875), SC_(0.3663856705785220884575315246580919177572e-14) }, + { SC_(39.228778839111328125), SC_(17.126956939697265625), SC_(0.679611984072940273209701631913000590868e-15) }, + { SC_(39.228778839111328125), SC_(17.394779205322265625), SC_(0.4920251358356779395075021142726724948406e-15) }, + { SC_(39.228778839111328125), SC_(18.8463134765625), SC_(0.898459559401296775580195561856558297733e-16) }, + { SC_(39.228778839111328125), SC_(21.200313568115234375), SC_(0.6710096455925774876300734719822314942751e-17) }, + { SC_(39.228778839111328125), SC_(22.111194610595703125), SC_(0.2581252549168628254891576356004134668777e-17) }, + { SC_(39.228778839111328125), SC_(27.8570384979248046875), SC_(0.1048531084411464779728676220324350650949e-19) }, + { SC_(39.228778839111328125), SC_(29.709972381591796875), SC_(0.2091062142725260247475822269564546508485e-20) }, + { SC_(39.228778839111328125), SC_(30.198291778564453125), SC_(0.1382983578323585227482044187413862101986e-20) }, + { SC_(39.228778839111328125), SC_(30.8236217498779296875), SC_(0.8199383627003633946789866864167571697415e-21) }, + { SC_(39.228778839111328125), SC_(36.1357879638671875), SC_(0.1270348512285235527381988856107557170849e-22) }, + { SC_(39.228778839111328125), SC_(39.228778839111328125), SC_(0.1368069321094820251564059673801202152548e-23) }, + { SC_(39.8798675537109375), SC_(0.4883005917072296142578125), SC_(0.3008927989458504919638559250782677159573) }, + { SC_(39.8798675537109375), SC_(3.5808107852935791015625), SC_(0.6021294747877571714623403769106265532513e-5) }, + { SC_(39.8798675537109375), SC_(9.76306438446044921875), SC_(0.1851984568622941060268170543104726846943e-10) }, + { SC_(39.8798675537109375), SC_(10.9950771331787109375), SC_(0.2526154349050988428616536270793928832542e-11) }, + { SC_(39.8798675537109375), SC_(11.2553272247314453125), SC_(0.1683868839936644378371034128368037252754e-11) }, + { SC_(39.8798675537109375), SC_(12.70741176605224609375), SC_(0.1911223548190955885708405084626384029108e-12) }, + { SC_(39.8798675537109375), SC_(13.55634593963623046875), SC_(0.5701985248426277845065171972992570739541e-13) }, + { SC_(39.8798675537109375), SC_(14.19721508026123046875), SC_(0.2352480929043682549362489115734553713878e-13) }, + { SC_(39.8798675537109375), SC_(15.76973247528076171875), SC_(0.2937879461511760696570192705570951477098e-14) }, + { SC_(39.8798675537109375), SC_(17.126956939697265625), SC_(0.536341942587811583423803483964038371143e-15) }, + { SC_(39.8798675537109375), SC_(17.394779205322265625), SC_(0.387100094534483092885369450887027718902e-15) }, + { SC_(39.8798675537109375), SC_(18.8463134765625), SC_(0.6952732620309946176439160861732238222783e-16) }, + { SC_(39.8798675537109375), SC_(21.200313568115234375), SC_(0.5059614554322456241919274945625221622497e-17) }, + { SC_(39.8798675537109375), SC_(22.111194610595703125), SC_(0.1927421101792266573921623792171043532271e-17) }, + { SC_(39.8798675537109375), SC_(27.8570384979248046875), SC_(0.7384816013417736467653880813077589749019e-20) }, + { SC_(39.8798675537109375), SC_(29.709972381591796875), SC_(0.1446776479011922746832062836458675796645e-20) }, + { SC_(39.8798675537109375), SC_(30.198291778564453125), SC_(0.9524685221148346079076316125123157421138e-21) }, + { SC_(39.8798675537109375), SC_(30.8236217498779296875), SC_(0.5614007958634850509893426760234495759597e-21) }, + { SC_(39.8798675537109375), SC_(36.1357879638671875), SC_(0.8292717198034629269427331676995352321156e-23) }, + { SC_(39.8798675537109375), SC_(39.228778839111328125), SC_(0.8699281081008409730954308874626570638008e-24) }, + { SC_(39.8798675537109375), SC_(39.8798675537109375), SC_(0.5501949345790070950531893816765166711427e-24) }, + { SC_(42.181911468505859375), SC_(0.4883005917072296142578125), SC_(0.29270922295033648973498443143552319566) }, + { SC_(42.181911468505859375), SC_(3.5808107852935791015625), SC_(0.4954868418554579614902377281234378303941e-5) }, + { SC_(42.181911468505859375), SC_(9.76306438446044921875), SC_(0.1126754701032130460408312605011152307876e-10) }, + { SC_(42.181911468505859375), SC_(10.9950771331787109375), SC_(0.1453627804001095972018434940334508584247e-11) }, + { SC_(42.181911468505859375), SC_(11.2553272247314453125), SC_(0.9577760354220355513780654997215961177785e-12) }, + { SC_(42.181911468505859375), SC_(12.70741176605224609375), SC_(0.1020037271367558689252458410606080480744e-12) }, + { SC_(42.181911468505859375), SC_(13.55634593963623046875), SC_(0.2934352366511902244146001216989161865574e-13) }, + { SC_(42.181911468505859375), SC_(14.19721508026123046875), SC_(0.1178241921566626361032370621611553199537e-13) }, + { SC_(42.181911468505859375), SC_(15.76973247528076171875), SC_(0.137853401319462828829501822151129038409e-14) }, + { SC_(42.181911468505859375), SC_(17.126956939697265625), SC_(0.2382360520557812540616282851894511952784e-15) }, + { SC_(42.181911468505859375), SC_(17.394779205322265625), SC_(0.1701199788329326428519964343406771295214e-15) }, + { SC_(42.181911468505859375), SC_(18.8463134765625), SC_(0.2886297277633052277705212536639736873641e-16) }, + { SC_(42.181911468505859375), SC_(21.200313568115234375), SC_(0.1920565577807371529765828107214475325464e-17) }, + { SC_(42.181911468505859375), SC_(22.111194610595703125), SC_(0.7073634336261050818749278862613837185469e-18) }, + { SC_(42.181911468505859375), SC_(27.8570384979248046875), SC_(0.2214419812966321463566352872957509656363e-20) }, + { SC_(42.181911468505859375), SC_(29.709972381591796875), SC_(0.4079360682841026486122654205949598483916e-21) }, + { SC_(42.181911468505859375), SC_(30.198291778564453125), SC_(0.2643104966514400941185556423652124663089e-21) }, + { SC_(42.181911468505859375), SC_(30.8236217498779296875), SC_(0.1526637456582568239449297873711030889121e-21) }, + { SC_(42.181911468505859375), SC_(36.1357879638671875), SC_(0.1911460480311827842028517915549662133361e-23) }, + { SC_(42.181911468505859375), SC_(39.228778839111328125), SC_(0.1830661311690613081498808097673629635774e-24) }, + { SC_(42.181911468505859375), SC_(39.8798675537109375), SC_(0.1136351502069705760511187733886782179268e-24) }, + { SC_(42.181911468505859375), SC_(42.181911468505859375), SC_(0.219931527203170103702765313679281728368e-25) }, + { SC_(42.21454620361328125), SC_(0.4883005917072296142578125), SC_(0.2925980363254571370997447936490488871998) }, + { SC_(42.21454620361328125), SC_(3.5808107852935791015625), SC_(0.4941565083496142545720103329221508184152e-5) }, + { SC_(42.21454620361328125), SC_(9.76306438446044921875), SC_(0.1119045860481315592468009535304089540742e-10) }, + { SC_(42.21454620361328125), SC_(10.9950771331787109375), SC_(0.1442568431716373500237887150250277562548e-11) }, + { SC_(42.21454620361328125), SC_(11.2553272247314453125), SC_(0.950336354587828485165308053356454659405e-12) }, + { SC_(42.21454620361328125), SC_(12.70741176605224609375), SC_(0.1011220836845328788800806144608691131573e-12) }, + { SC_(42.21454620361328125), SC_(13.55634593963623046875), SC_(0.2907520551281226656316291986826984751204e-13) }, + { SC_(42.21454620361328125), SC_(14.19721508026123046875), SC_(0.1167028773714678774625174774618410312097e-13) }, + { SC_(42.21454620361328125), SC_(15.76973247528076171875), SC_(0.1364179004231638089068639120551823673111e-14) }, + { SC_(42.21454620361328125), SC_(17.126956939697265625), SC_(0.2355757223645919840150475642985381676492e-15) }, + { SC_(42.21454620361328125), SC_(17.394779205322265625), SC_(0.1681953511991729477812257796430041478844e-15) }, + { SC_(42.21454620361328125), SC_(18.8463134765625), SC_(0.2851384611623529898946940712804937631326e-16) }, + { SC_(42.21454620361328125), SC_(21.200313568115234375), SC_(0.1894974110663713495016836521760613437805e-17) }, + { SC_(42.21454620361328125), SC_(22.111194610595703125), SC_(0.6976104394730015664581483357168432103017e-18) }, + { SC_(42.21454620361328125), SC_(27.8570384979248046875), SC_(0.2177751555030783440248953105316351279098e-20) }, + { SC_(42.21454620361328125), SC_(29.709972381591796875), SC_(0.4008370529076714811283504491738529012717e-21) }, + { SC_(42.21454620361328125), SC_(30.198291778564453125), SC_(0.2596531378113144643175496786198713226171e-21) }, + { SC_(42.21454620361328125), SC_(30.8236217498779296875), SC_(0.1499313118064500828242458333529671237116e-21) }, + { SC_(42.21454620361328125), SC_(36.1357879638671875), SC_(0.1872922730201633643827650699668726555938e-23) }, + { SC_(42.21454620361328125), SC_(39.228778839111328125), SC_(0.179147287272084248374546562148412805355e-24) }, + { SC_(42.21454620361328125), SC_(39.8798675537109375), SC_(0.1111735190649655360126048635402218824383e-24) }, + { SC_(42.21454620361328125), SC_(42.181911468505859375), SC_(0.214971926086820094982442575473127999685e-25) }, + { SC_(42.21454620361328125), SC_(42.21454620361328125), SC_(0.2101214998708081750048159896524761791519e-25) }, + { SC_(47.481121063232421875), SC_(0.4883005917072296142578125), SC_(0.2761828891544583472158480445796105146107) }, + { SC_(47.481121063232421875), SC_(3.5808107852935791015625), SC_(0.3281515885646574491306643310484822819799e-5) }, + { SC_(47.481121063232421875), SC_(9.76306438446044921875), SC_(0.3920349983176418070164202314132614207687e-11) }, + { SC_(47.481121063232421875), SC_(10.9950771331787109375), SC_(0.4488305051558699682275570566058669160011e-12) }, + { SC_(47.481121063232421875), SC_(11.2553272247314453125), SC_(0.2884595674895656533246188066741588099996e-12) }, + { SC_(47.481121063232421875), SC_(12.70741176605224609375), SC_(0.2679458681081906832278732940525181492116e-13) }, + { SC_(47.481121063232421875), SC_(13.55634593963623046875), SC_(0.7127208478999648088640733493182611376515e-14) }, + { SC_(47.481121063232421875), SC_(14.19721508026123046875), SC_(0.2699517054260450765363450546746782373673e-14) }, + { SC_(47.481121063232421875), SC_(15.76973247528076171875), SC_(0.2744181026412455569425812827793400827001e-15) }, + { SC_(47.481121063232421875), SC_(17.126956939697265625), SC_(0.4212870851902525932673607559940789517e-16) }, + { SC_(47.481121063232421875), SC_(17.394779205322265625), SC_(0.2939765911606948742973605530851764348687e-16) }, + { SC_(47.481121063232421875), SC_(18.8463134765625), SC_(0.4409351109693265079068227709742001616962e-17) }, + { SC_(47.481121063232421875), SC_(21.200313568115234375), SC_(0.2416713337259074197373394518088195178924e-18) }, + { SC_(47.481121063232421875), SC_(22.111194610595703125), SC_(0.8272811012819471975583144449586746466787e-19) }, + { SC_(47.481121063232421875), SC_(27.8570384979248046875), SC_(0.1668390151581751867097808042689133620055e-21) }, + { SC_(47.481121063232421875), SC_(29.709972381591796875), SC_(0.2687062726234940174453866151474735416855e-22) }, + { SC_(47.481121063232421875), SC_(30.198291778564453125), SC_(0.1681378201173124129404788219685200125347e-22) }, + { SC_(47.481121063232421875), SC_(30.8236217498779296875), SC_(0.9290734692804867581615366701709154004388e-23) }, + { SC_(47.481121063232421875), SC_(36.1357879638671875), SC_(0.8099198886676213488246824913223248983533e-25) }, + { SC_(47.481121063232421875), SC_(39.228778839111328125), SC_(0.6351141865977380222588279782159744103968e-26) }, + { SC_(47.481121063232421875), SC_(39.8798675537109375), SC_(0.378344989032072825388447224133621621928e-26) }, + { SC_(47.481121063232421875), SC_(42.181911468505859375), SC_(0.63471010500281310486736447126108919436e-27) }, + { SC_(47.481121063232421875), SC_(42.21454620361328125), SC_(0.6191579131479598491248801612912254995141e-27) }, + { SC_(47.481121063232421875), SC_(47.481121063232421875), SC_(0.1336609143548338972411059105624054988188e-28) }, + { SC_(48.5427093505859375), SC_(0.4883005917072296142578125), SC_(0.273201199452447707964644275202994406681) }, + { SC_(48.5427093505859375), SC_(3.5808107852935791015625), SC_(0.3037905879402605979671708142818409231384e-5) }, + { SC_(48.5427093505859375), SC_(9.76306438446044921875), SC_(0.3214870201904012487768673965062109203056e-11) }, + { SC_(48.5427093505859375), SC_(10.9950771331787109375), SC_(0.359839520277748410924229609642611271652e-12) }, + { SC_(48.5427093505859375), SC_(11.2553272247314453125), SC_(0.230178725439523030232556545152554810336e-12) }, + { SC_(48.5427093505859375), SC_(12.70741176605224609375), SC_(0.2083405502687179689470059793422413050835e-13) }, + { SC_(48.5427093505859375), SC_(13.55634593963623046875), SC_(0.5459993104628675903344127805089653297869e-14) }, + { SC_(48.5427093505859375), SC_(14.19721508026123046875), SC_(0.2045246173071152484463513419646107514646e-14) }, + { SC_(48.5427093505859375), SC_(15.76973247528076171875), SC_(0.202428113433042674329864861200550362739e-15) }, + { SC_(48.5427093505859375), SC_(17.126956939697265625), SC_(0.3038453554661761580920424361439418618882e-16) }, + { SC_(48.5427093505859375), SC_(17.394779205322265625), SC_(0.2110964277430317584170017302607861782238e-16) }, + { SC_(48.5427093505859375), SC_(18.8463134765625), SC_(0.3092757902152288380442685210535362190218e-17) }, + { SC_(48.5427093505859375), SC_(21.200313568115234375), SC_(0.1633520890631378429496234779266890074224e-18) }, + { SC_(48.5427093505859375), SC_(22.111194610595703125), SC_(0.5514180966816847931881672927246188879877e-19) }, + { SC_(48.5427093505859375), SC_(27.8570384979248046875), SC_(0.102226935888343190171793341412538355313e-21) }, + { SC_(48.5427093505859375), SC_(29.709972381591796875), SC_(0.1604530418045641468734169003158724272244e-22) }, + { SC_(48.5427093505859375), SC_(30.198291778564453125), SC_(0.997307988100461903780754197365733938688e-23) }, + { SC_(48.5427093505859375), SC_(30.8236217498779296875), SC_(0.5464102079837585473830769317851213141323e-23) }, + { SC_(48.5427093505859375), SC_(36.1357879638671875), SC_(0.4442839194413902337002433410758267692865e-25) }, + { SC_(48.5427093505859375), SC_(39.228778839111328125), SC_(0.3352202687086762954220688944117791884835e-26) }, + { SC_(48.5427093505859375), SC_(39.8798675537109375), SC_(0.1981156168208554772397064466337326288366e-26) }, + { SC_(48.5427093505859375), SC_(42.181911468505859375), SC_(0.3233096852249809521416891665429979735375e-27) }, + { SC_(48.5427093505859375), SC_(42.21454620361328125), SC_(0.315265909532437976491281701094019073529e-27) }, + { SC_(48.5427093505859375), SC_(47.481121063232421875), SC_(0.6405943929426246525908621288985631498741e-29) }, + { SC_(48.5427093505859375), SC_(48.5427093505859375), SC_(0.3034157119255865825423203853374009844382e-29) }, + { SC_(50.371234893798828125), SC_(0.4883005917072296142578125), SC_(0.2682876035223208972017237866979445632999) }, + { SC_(50.371234893798828125), SC_(3.5808107852935791015625), SC_(0.2670008205499965646927482679804192307012e-5) }, + { SC_(50.371234893798828125), SC_(9.76306438446044921875), SC_(0.230542864828471534336533601357657837158e-11) }, + { SC_(50.371234893798828125), SC_(10.9950771331787109375), SC_(0.2484317297291542795524665740850601186067e-12) }, + { SC_(50.371234893798828125), SC_(11.2553272247314453125), SC_(0.1576606868064739242473829521032240963124e-12) }, + { SC_(50.371234893798828125), SC_(12.70741176605224609375), SC_(0.1366178027522347847585891050721398710566e-13) }, + { SC_(50.371234893798828125), SC_(13.55634593963623046875), SC_(0.349194155950821659086219355035482096917e-14) }, + { SC_(50.371234893798828125), SC_(14.19721508026123046875), SC_(0.1283868150396959169549871983496572539353e-14) }, + { SC_(50.371234893798828125), SC_(15.76973247528076171875), SC_(0.1214824707511758192409133836566015820774e-15) }, + { SC_(50.371234893798828125), SC_(17.126956939697265625), SC_(0.1755558508925752117417517310652493305819e-16) }, + { SC_(50.371234893798828125), SC_(17.394779205322265625), SC_(0.1210686165037674240405612528415466095526e-16) }, + { SC_(50.371234893798828125), SC_(18.8463134765625), SC_(0.1704946491528088952308941763379159533492e-17) }, + { SC_(50.371234893798828125), SC_(21.200313568115234375), SC_(0.8460303276208296173903214987261330358475e-19) }, + { SC_(50.371234893798828125), SC_(22.111194610595703125), SC_(0.2789316788730571540302962936796628614069e-19) }, + { SC_(50.371234893798828125), SC_(27.8570384979248046875), SC_(0.4485792627414052440449203737819849356275e-22) }, + { SC_(50.371234893798828125), SC_(29.709972381591796875), SC_(0.6740507347558201803603101424509963962012e-23) }, + { SC_(50.371234893798828125), SC_(30.198291778564453125), SC_(0.4142471965561676383569958163259391226987e-23) }, + { SC_(50.371234893798828125), SC_(30.8236217498779296875), SC_(0.223717507337772649924434146748035006641e-23) }, + { SC_(50.371234893798828125), SC_(36.1357879638671875), SC_(0.1616776854579435867274821538327919108256e-25) }, + { SC_(50.371234893798828125), SC_(39.228778839111328125), SC_(0.1142789540304283074332449693071124420525e-26) }, + { SC_(50.371234893798828125), SC_(39.8798675537109375), SC_(0.6663662503327259213866896462118502380984e-27) }, + { SC_(50.371234893798828125), SC_(42.181911468505859375), SC_(0.1037758940423319911265642447056325023687e-27) }, + { SC_(50.371234893798828125), SC_(42.21454620361328125), SC_(0.101127779049073595389770457333766692264e-27) }, + { SC_(50.371234893798828125), SC_(47.481121063232421875), SC_(0.1854295346832213089938428186262965055869e-29) }, + { SC_(50.371234893798828125), SC_(48.5427093505859375), SC_(0.8608743861775456576751339451347220770573e-30) }, + { SC_(50.371234893798828125), SC_(50.371234893798828125), SC_(0.236094628462614479567016959537485041032e-30) }, + { SC_(54.69268035888671875), SC_(0.4883005917072296142578125), SC_(0.2576679475559749315482807753137541569616) }, + { SC_(54.69268035888671875), SC_(3.5808107852935791015625), SC_(0.2002351635898888965906049100121353815862e-5) }, + { SC_(54.69268035888671875), SC_(9.76306438446044921875), SC_(0.109613256096870114348838540151052613221e-11) }, + { SC_(54.69268035888671875), SC_(10.9950771331787109375), SC_(0.1084563598131486902277991639721084381841e-12) }, + { SC_(54.69268035888671875), SC_(11.2553272247314453125), SC_(0.6761373192684783210072343328585871969482e-13) }, + { SC_(54.69268035888671875), SC_(12.70741176605224609375), SC_(0.5311639472556391927154923047358314333092e-14) }, + { SC_(54.69268035888671875), SC_(13.55634593963623046875), SC_(0.1283303336493021801231855652337308851352e-14) }, + { SC_(54.69268035888671875), SC_(14.19721508026123046875), SC_(0.4524050244994762286342348667414185658279e-15) }, + { SC_(54.69268035888671875), SC_(15.76973247528076171875), SC_(0.3867813150626739802418057625598512003662e-16) }, + { SC_(54.69268035888671875), SC_(17.126956939697265625), SC_(0.5130480032873638471424885799185284244547e-17) }, + { SC_(54.69268035888671875), SC_(17.394779205322265625), SC_(0.3479510365570306879557421105505161145915e-17) }, + { SC_(54.69268035888671875), SC_(18.8463134765625), SC_(0.4480759183274931197972077792545566802957e-18) }, + { SC_(54.69268035888671875), SC_(21.200313568115234375), SC_(0.1930592897378892692085482789424631745059e-19) }, + { SC_(54.69268035888671875), SC_(22.111194610595703125), SC_(0.6033876977996761760663934657570240885776e-20) }, + { SC_(54.69268035888671875), SC_(27.8570384979248046875), SC_(0.7027798524150010478161394226386903736457e-23) }, + { SC_(54.69268035888671875), SC_(29.709972381591796875), SC_(0.9563797264303690212916279636495454597628e-24) }, + { SC_(54.69268035888671875), SC_(30.198291778564453125), SC_(0.5728178377484786238428608912755025417124e-24) }, + { SC_(54.69268035888671875), SC_(30.8236217498779296875), SC_(0.2993888652858858730490875875657557964716e-24) }, + { SC_(54.69268035888671875), SC_(36.1357879638671875), SC_(0.1653998624023309691228933462846266569205e-26) }, + { SC_(54.69268035888671875), SC_(39.228778839111328125), SC_(0.100723111829346542717453774831736096682e-27) }, + { SC_(54.69268035888671875), SC_(39.8798675537109375), SC_(0.5695494085129737761848906303553918311344e-28) }, + { SC_(54.69268035888671875), SC_(42.181911468505859375), SC_(0.7970393563478830000807575618105070366865e-29) }, + { SC_(54.69268035888671875), SC_(42.21454620361328125), SC_(0.7755390307202226101152290199798322877905e-29) }, + { SC_(54.69268035888671875), SC_(47.481121063232421875), SC_(0.1124204960565559696882940226229377140737e-30) }, + { SC_(54.69268035888671875), SC_(48.5427093505859375), SC_(0.4985265794391790168175697617212938711532e-31) }, + { SC_(54.69268035888671875), SC_(50.371234893798828125), SC_(0.1264779889353951068923309969448596200075e-31) }, + { SC_(54.69268035888671875), SC_(54.69268035888671875), SC_(0.566706548197695749494226693710525602691e-33) }, + { SC_(54.72658538818359375), SC_(0.4883005917072296142578125), SC_(0.2575896211106345123642907020034705532287) }, + { SC_(54.72658538818359375), SC_(3.5808107852935791015625), SC_(0.1998013899274308465480884577080252884946e-5) }, + { SC_(54.72658538818359375), SC_(9.76306438446044921875), SC_(0.1089995610595511126167535637942402096918e-11) }, + { SC_(54.72658538818359375), SC_(10.9950771331787109375), SC_(0.1077794145172839490303177861052614555854e-12) }, + { SC_(54.72658538818359375), SC_(11.2553272247314453125), SC_(0.6718263772432490668974808990222466977873e-13) }, + { SC_(54.72658538818359375), SC_(12.70741176605224609375), SC_(0.5273849080577504681807806949734068194326e-14) }, + { SC_(54.72658538818359375), SC_(13.55634593963623046875), SC_(0.1273628609361219729868828067011775200846e-14) }, + { SC_(54.72658538818359375), SC_(14.19721508026123046875), SC_(0.4488511121381869148182827259848717980153e-15) }, + { SC_(54.72658538818359375), SC_(15.76973247528076171875), SC_(0.3834473322138813295582139453990897850036e-16) }, + { SC_(54.72658538818359375), SC_(17.126956939697265625), SC_(0.5082944806270710839490276131636038887241e-17) }, + { SC_(54.72658538818359375), SC_(17.394779205322265625), SC_(0.3446833849810362754699713038849663235271e-17) }, + { SC_(54.72658538818359375), SC_(18.8463134765625), SC_(0.4435660658566421136561761919623114456014e-18) }, + { SC_(54.72658538818359375), SC_(21.200313568115234375), SC_(0.1909107771120758432993957358735115585626e-19) }, + { SC_(54.72658538818359375), SC_(22.111194610595703125), SC_(0.5964298894630077373020402884084102197403e-20) }, + { SC_(54.72658538818359375), SC_(27.8570384979248046875), SC_(0.6929684326873427109918339727584238617371e-23) }, + { SC_(54.72658538818359375), SC_(29.709972381591796875), SC_(0.9423142313441542126275310516700925045278e-24) }, + { SC_(54.72658538818359375), SC_(30.198291778564453125), SC_(0.5642823806266383501805017527064275474943e-24) }, + { SC_(54.72658538818359375), SC_(30.8236217498779296875), SC_(0.2948539271825563148586224591554275829464e-24) }, + { SC_(54.72658538818359375), SC_(36.1357879638671875), SC_(0.1625601665659946991217463907583061752405e-26) }, + { SC_(54.72658538818359375), SC_(39.228778839111328125), SC_(0.9888091202774742887254773387733904107796e-28) }, + { SC_(54.72658538818359375), SC_(39.8798675537109375), SC_(0.5590008740214531306707916456604594552415e-28) }, + { SC_(54.72658538818359375), SC_(42.181911468505859375), SC_(0.7816366670702083020882028373828206340099e-29) }, + { SC_(54.72658538818359375), SC_(42.21454620361328125), SC_(0.7605431038448081566114288558437973276538e-29) }, + { SC_(54.72658538818359375), SC_(47.481121063232421875), SC_(0.1100481188031621356998958231394543561795e-30) }, + { SC_(54.72658538818359375), SC_(48.5427093505859375), SC_(0.487834515436851731976491291712527343302e-31) }, + { SC_(54.72658538818359375), SC_(50.371234893798828125), SC_(0.1236913785967064249515490621992786433519e-31) }, + { SC_(54.72658538818359375), SC_(54.69268035888671875), SC_(0.5534603308789986901769912589995572371906e-33) }, + { SC_(54.72658538818359375), SC_(54.72658538818359375), SC_(0.5405180263732793434939336375850768332634e-33) }, + { SC_(63.23960113525390625), SC_(0.4883005917072296142578125), SC_(0.2399573828860835412213635199878677557774) }, + { SC_(63.23960113525390625), SC_(3.5808107852935791015625), SC_(0.120372249104758308826619842462022804941e-5) }, + { SC_(63.23960113525390625), SC_(9.76306438446044921875), SC_(0.2922723642075968716805083006369598046662e-12) }, + { SC_(63.23960113525390625), SC_(10.9950771331787109375), SC_(0.2481235466565479485144145562008525547336e-13) }, + { SC_(63.23960113525390625), SC_(11.2553272247314453125), SC_(0.149812936028653380748158194756380316575e-13) }, + { SC_(63.23960113525390625), SC_(12.70741176605224609375), SC_(0.9865909950274118075016932399864296626574e-15) }, + { SC_(63.23960113525390625), SC_(13.55634593963623046875), SC_(0.2153645026497329912966070256749262958917e-15) }, + { SC_(63.23960113525390625), SC_(14.19721508026123046875), SC_(0.7038036471561062383679336262329275792923e-16) }, + { SC_(63.23960113525390625), SC_(15.76973247528076171875), SC_(0.5009893630662182218683925287195866125993e-17) }, + { SC_(63.23960113525390625), SC_(17.126956939697265625), SC_(0.5691136627858757840798035294572453915167e-18) }, + { SC_(63.23960113525390625), SC_(17.394779205322265625), SC_(0.3744705113155457395062489192245983657173e-18) }, + { SC_(63.23960113525390625), SC_(18.8463134765625), SC_(0.4100399748814880617238354760515525505409e-19) }, + { SC_(63.23960113525390625), SC_(21.200313568115234375), SC_(0.1366860298720774494057904850870319739213e-20) }, + { SC_(63.23960113525390625), SC_(22.111194610595703125), SC_(0.3876061538907142175976510532819111795054e-21) }, + { SC_(63.23960113525390625), SC_(27.8570384979248046875), SC_(0.2504466476093011466548026165690050757931e-24) }, + { SC_(63.23960113525390625), SC_(29.709972381591796875), SC_(0.2842047137047389489995990175632838112701e-25) }, + { SC_(63.23960113525390625), SC_(30.198291778564453125), SC_(0.1623685819137505506784770433048192129945e-25) }, + { SC_(63.23960113525390625), SC_(30.8236217498779296875), SC_(0.7991239336252573505495098734375950277334e-26) }, + { SC_(63.23960113525390625), SC_(36.1357879638671875), SC_(0.2693069153427592657556733771428329123086e-28) }, + { SC_(63.23960113525390625), SC_(39.228778839111328125), SC_(0.1245507453557338872616448781910898916755e-29) }, + { SC_(63.23960113525390625), SC_(39.8798675537109375), SC_(0.6653917039301461181104889518175423498183e-30) }, + { SC_(63.23960113525390625), SC_(42.181911468505859375), SC_(0.7639917683561769064678016579149259412371e-31) }, + { SC_(63.23960113525390625), SC_(42.21454620361328125), SC_(0.7413247347817890645692495924529751481356e-31) }, + { SC_(63.23960113525390625), SC_(47.481121063232421875), SC_(0.6948392368509928713774152819016865227523e-33) }, + { SC_(63.23960113525390625), SC_(48.5427093505859375), SC_(0.2829434926024515663433974055353949064655e-33) }, + { SC_(63.23960113525390625), SC_(50.371234893798828125), SC_(0.6210156368089279948674204033298150320607e-34) }, + { SC_(63.23960113525390625), SC_(54.69268035888671875), SC_(0.1994544946912071350289083784926111644812e-35) }, + { SC_(63.23960113525390625), SC_(54.72658538818359375), SC_(0.1942940824976731231458348690517871556504e-35) }, + { SC_(63.23960113525390625), SC_(63.23960113525390625), SC_(0.3766474934325014387516250879875270596689e-38) }, + { SC_(63.979938507080078125), SC_(0.4883005917072296142578125), SC_(0.2385920544294226314124089527462407317349) }, + { SC_(63.979938507080078125), SC_(3.5808107852935791015625), SC_(0.1155532594613033157088141346644174885787e-5) }, + { SC_(63.979938507080078125), SC_(9.76306438446044921875), SC_(0.2627483210557979498198358541858085745958e-12) }, + { SC_(63.979938507080078125), SC_(10.9950771331787109375), SC_(0.2203077892841634373358303449894453386253e-13) }, + { SC_(63.979938507080078125), SC_(11.2553272247314453125), SC_(0.1326734450091220324152955036582893943651e-13) }, + { SC_(63.979938507080078125), SC_(12.70741176605224609375), SC_(0.8612994417910206058482623330700671528863e-15) }, + { SC_(63.979938507080078125), SC_(13.55634593963623046875), SC_(0.1864708809618678451197954011117556164584e-15) }, + { SC_(63.979938507080078125), SC_(14.19721508026123046875), SC_(0.6056363133000266842953190085668259067259e-16) }, + { SC_(63.979938507080078125), SC_(15.76973247528076171875), SC_(0.424731403962627574620118436174226557077e-17) }, + { SC_(63.979938507080078125), SC_(17.126956939697265625), SC_(0.4764306820270495945882185018875288085195e-18) }, + { SC_(63.979938507080078125), SC_(17.394779205322265625), SC_(0.3127137017858395550562098807497583466566e-18) }, + { SC_(63.979938507080078125), SC_(18.8463134765625), SC_(0.3379169114893558838613461356343487020615e-19) }, + { SC_(63.979938507080078125), SC_(21.200313568115234375), SC_(0.11030698118866848664771886946862695411e-20) }, + { SC_(63.979938507080078125), SC_(22.111194610595703125), SC_(0.310323347889164700902628360803482994323e-21) }, + { SC_(63.979938507080078125), SC_(27.8570384979248046875), SC_(0.1910559352951270487511556437542042061633e-24) }, + { SC_(63.979938507080078125), SC_(29.709972381591796875), SC_(0.2135960346055811183538795616235643481621e-25) }, + { SC_(63.979938507080078125), SC_(30.198291778564453125), SC_(0.1215561191765926215433409189423269888897e-25) }, + { SC_(63.979938507080078125), SC_(30.8236217498779296875), SC_(0.5953075334801477539569667061361111041081e-26) }, + { SC_(63.979938507080078125), SC_(36.1357879638671875), SC_(0.1926137838404845323817639718559279514317e-28) }, + { SC_(63.979938507080078125), SC_(39.228778839111328125), SC_(0.8708009166794523399163822593726973503175e-30) }, + { SC_(63.979938507080078125), SC_(39.8798675537109375), SC_(0.4630318259729214677869808223016556332314e-30) }, + { SC_(63.979938507080078125), SC_(42.181911468505859375), SC_(0.5230154674157516963781420577773297537695e-31) }, + { SC_(63.979938507080078125), SC_(42.21454620361328125), SC_(0.5073815897121420709723480565621825042975e-31) }, + { SC_(63.979938507080078125), SC_(47.481121063232421875), SC_(0.458693224878541149292203715821935617567e-33) }, + { SC_(63.979938507080078125), SC_(48.5427093505859375), SC_(0.1854667407340465927028151634761268166335e-33) }, + { SC_(63.979938507080078125), SC_(50.371234893798828125), SC_(0.4022035948053152747304171105860738051286e-34) }, + { SC_(63.979938507080078125), SC_(54.69268035888671875), SC_(0.1256523877580158082621999247789850082674e-35) }, + { SC_(63.979938507080078125), SC_(54.72658538818359375), SC_(0.122375355612320001776037791094295366234e-35) }, + { SC_(63.979938507080078125), SC_(63.23960113525390625), SC_(0.2252899982323711249507171673098530972554e-38) }, + { SC_(63.979938507080078125), SC_(63.979938507080078125), SC_(0.1341745936989931397425458546981814383408e-38) }, + { SC_(65.55123138427734375), SC_(0.4883005917072296142578125), SC_(0.2357710112523495242082914872291554106082) }, + { SC_(65.55123138427734375), SC_(3.5808107852935791015625), SC_(0.106115752780539302285662368259669996401e-5) }, + { SC_(65.55123138427734375), SC_(9.76306438446044921875), SC_(0.2103906867687488821101011937707351848754e-12) }, + { SC_(65.55123138427734375), SC_(10.9950771331787109375), SC_(0.1718908705506516715386520139223794318867e-13) }, + { SC_(65.55123138427734375), SC_(11.2553272247314453125), SC_(0.1029559010512839819875424803471898629304e-13) }, + { SC_(65.55123138427734375), SC_(12.70741176605224609375), SC_(0.6486713285058401285908560158099091203738e-15) }, + { SC_(65.55123138427734375), SC_(13.55634593963623046875), SC_(0.1380372771566672520373438720831631251319e-15) }, + { SC_(65.55123138427734375), SC_(14.19721508026123046875), SC_(0.442588907492864351136580687420561769894e-16) }, + { SC_(65.55123138427734375), SC_(15.76973247528076171875), SC_(0.3008579766727263132271364807602663788808e-17) }, + { SC_(65.55123138427734375), SC_(17.126956939697265625), SC_(0.3286787345216018288482868032364403621299e-18) }, + { SC_(65.55123138427734375), SC_(17.394779205322265625), SC_(0.2146233596396258678622355229704319539206e-18) }, + { SC_(65.55123138427734375), SC_(18.8463134765625), SC_(0.2255882254526822848559395818261938373346e-19) }, + { SC_(65.55123138427734375), SC_(21.200313568115234375), SC_(0.7047740790260384098064214355455627678822e-21) }, + { SC_(65.55123138427734375), SC_(22.111194610595703125), SC_(0.1949964904521089459578769570399230789168e-21) }, + { SC_(65.55123138427734375), SC_(27.8570384979248046875), SC_(0.1084986302386453787887219384028946920892e-24) }, + { SC_(65.55123138427734375), SC_(29.709972381591796875), SC_(0.1175620664756004445498529913493145297657e-25) }, + { SC_(65.55123138427734375), SC_(30.198291778564453125), SC_(0.6636117255692099193820592591902138608561e-26) }, + { SC_(65.55123138427734375), SC_(30.8236217498779296875), SC_(0.3216444528611381542689387786511719810246e-26) }, + { SC_(65.55123138427734375), SC_(36.1357879638671875), SC_(0.9554892841895194312951569143816639422968e-29) }, + { SC_(65.55123138427734375), SC_(39.228778839111328125), SC_(0.4118623473606086699793085401307021705933e-30) }, + { SC_(65.55123138427734375), SC_(39.8798675537109375), SC_(0.2168524906829906642799773118487792786273e-30) }, + { SC_(65.55123138427734375), SC_(42.181911468505859375), SC_(0.2366727698753438899916383179822556380948e-31) }, + { SC_(65.55123138427734375), SC_(42.21454620361328125), SC_(0.2294876315176622468084084879860780432466e-31) }, + { SC_(65.55123138427734375), SC_(47.481121063232421875), SC_(0.1923103236393059156894460757534997475418e-33) }, + { SC_(65.55123138427734375), SC_(48.5427093505859375), SC_(0.7661151434924130192096456122476090961402e-34) }, + { SC_(65.55123138427734375), SC_(50.371234893798828125), SC_(0.1619949067368807468032442555231303114272e-34) }, + { SC_(65.55123138427734375), SC_(54.69268035888671875), SC_(0.477501214493737004360170801946492778757e-36) }, + { SC_(65.55123138427734375), SC_(54.72658538818359375), SC_(0.4648397205269735278280955048611310790241e-36) }, + { SC_(65.55123138427734375), SC_(63.23960113525390625), SC_(0.7677098964219079625189466585005762336105e-39) }, + { SC_(65.55123138427734375), SC_(63.979938507080078125), SC_(0.453079781813968621339899252476743990668e-39) }, + { SC_(65.55123138427734375), SC_(65.55123138427734375), SC_(0.1500959094306209063861763587835421140881e-39) }, + { SC_(65.57750701904296875), SC_(0.4883005917072296142578125), SC_(0.2357246972919707898665696429589455630265) }, + { SC_(65.57750701904296875), SC_(3.5808107852935791015625), SC_(0.1059664829147497446237801559548108779185e-5) }, + { SC_(65.57750701904296875), SC_(9.76306438446044921875), SC_(0.2096192411600699735013183323026128699975e-12) }, + { SC_(65.57750701904296875), SC_(10.9950771331787109375), SC_(0.1711871225749376113145838955707535466048e-13) }, + { SC_(65.57750701904296875), SC_(11.2553272247314453125), SC_(0.1025251813450801529473364458935447099404e-13) }, + { SC_(65.57750701904296875), SC_(12.70741176605224609375), SC_(0.6456377730646946919228372728261973803496e-15) }, + { SC_(65.57750701904296875), SC_(13.55634593963623046875), SC_(0.1373525498043714515772238459814372593514e-15) }, + { SC_(65.57750701904296875), SC_(14.19721508026123046875), SC_(0.4402995349699933002531884145818948243581e-16) }, + { SC_(65.57750701904296875), SC_(15.76973247528076171875), SC_(0.2991472775526352228360282990861484588914e-17) }, + { SC_(65.57750701904296875), SC_(17.126956939697265625), SC_(0.326666894627152168038225557561902352282e-18) }, + { SC_(65.57750701904296875), SC_(17.394779205322265625), SC_(0.2132914189566580261696420943974422761697e-18) }, + { SC_(65.57750701904296875), SC_(18.8463134765625), SC_(0.2240854701100695308474681440203307716057e-19) }, + { SC_(65.57750701904296875), SC_(21.200313568115234375), SC_(0.6995704777112619698201393987244017053183e-21) }, + { SC_(65.57750701904296875), SC_(22.111194610595703125), SC_(0.1935033485448309710815021120824736173836e-21) }, + { SC_(65.57750701904296875), SC_(27.8570384979248046875), SC_(0.1074874018569208497721508934716420953459e-24) }, + { SC_(65.57750701904296875), SC_(29.709972381591796875), SC_(0.116405958198541131072467305505817819336e-25) }, + { SC_(65.57750701904296875), SC_(30.198291778564453125), SC_(0.6569970278977550524025572971803073784927e-26) }, + { SC_(65.57750701904296875), SC_(30.8236217498779296875), SC_(0.3183836504495567260438053178006166127313e-26) }, + { SC_(65.57750701904296875), SC_(36.1357879638671875), SC_(0.9444635949738306510019322117074954873331e-29) }, + { SC_(65.57750701904296875), SC_(39.228778839111328125), SC_(0.4067878300057872178429130451707324501301e-30) }, + { SC_(65.57750701904296875), SC_(39.8798675537109375), SC_(0.2141456506105793048917828300297552995969e-30) }, + { SC_(65.57750701904296875), SC_(42.181911468505859375), SC_(0.2335853098306767436535004767028440773465e-31) }, + { SC_(65.57750701904296875), SC_(42.21454620361328125), SC_(0.2264920928797347321532375573633816545928e-31) }, + { SC_(65.57750701904296875), SC_(47.481121063232421875), SC_(0.1895612089679339462016569466559682002241e-33) }, + { SC_(65.57750701904296875), SC_(48.5427093505859375), SC_(0.7549771112244981597437635556985099663467e-34) }, + { SC_(65.57750701904296875), SC_(50.371234893798828125), SC_(0.1595728104905575825793547318336129006079e-34) }, + { SC_(65.57750701904296875), SC_(54.69268035888671875), SC_(0.4699077671298965972959242255220906310319e-36) }, + { SC_(65.57750701904296875), SC_(54.72658538818359375), SC_(0.4574442197025398246880041595120812268771e-36) }, + { SC_(65.57750701904296875), SC_(63.23960113525390625), SC_(0.7541341712276521453074751284451590221409e-39) }, + { SC_(65.57750701904296875), SC_(63.979938507080078125), SC_(0.4450005087446714976161105508442474052963e-39) }, + { SC_(65.57750701904296875), SC_(65.55123138427734375), SC_(0.1473725411193716148388634901386722500581e-39) }, + { SC_(65.57750701904296875), SC_(65.57750701904296875), SC_(0.1446978213469022794906297480415906717469e-39) }, + { SC_(67.8767242431640625), SC_(0.4883005917072296142578125), SC_(0.2317763744201423505085211744758669267659) }, + { SC_(67.8767242431640625), SC_(3.5808107852935791015625), SC_(0.9388233728682653448117582628688182307343e-6) }, + { SC_(67.8767242431640625), SC_(9.76306438446044921875), SC_(0.15279472478434143153446668837990369541e-12) }, + { SC_(67.8767242431640625), SC_(10.9950771331787109375), SC_(0.1202508316910657107998759662185702999868e-13) }, + { SC_(67.8767242431640625), SC_(11.2553272247314453125), SC_(0.7146407604986751231898746296889042451165e-14) }, + { SC_(67.8767242431640625), SC_(12.70741176605224609375), SC_(0.4312259301305506459682629050177146121415e-15) }, + { SC_(67.8767242431640625), SC_(13.55634593963623046875), SC_(0.8950972250622175893263337130934514135913e-16) }, + { SC_(67.8767242431640625), SC_(14.19721508026123046875), SC_(0.2817036356118345830828664567548681356098e-16) }, + { SC_(67.8767242431640625), SC_(15.76973247528076171875), SC_(0.1830595952045129837745776297308525045136e-17) }, + { SC_(67.8767242431640625), SC_(17.126956939697265625), SC_(0.1924948263709894356951713957646199014928e-18) }, + { SC_(67.8767242431640625), SC_(17.394779205322265625), SC_(0.1247624608225611058388702863710015035809e-18) }, + { SC_(67.8767242431640625), SC_(18.8463134765625), SC_(0.1259909019007397751398534429154627374046e-19) }, + { SC_(67.8767242431640625), SC_(21.200313568115234375), SC_(0.3694037166629513659618743479267116609432e-21) }, + { SC_(67.8767242431640625), SC_(22.111194610595703125), SC_(0.9977187724151853814968287449803879855041e-22) }, + { SC_(67.8767242431640625), SC_(27.8570384979248046875), SC_(0.479458395249386474725533747942660903975e-25) }, + { SC_(67.8767242431640625), SC_(29.709972381591796875), SC_(0.4964703563492183811437583140189619273022e-26) }, + { SC_(67.8767242431640625), SC_(30.198291778564453125), SC_(0.2769565634046090021878076725126447453076e-26) }, + { SC_(67.8767242431640625), SC_(30.8236217498779296875), SC_(0.1322342769047780059437983858725561666391e-26) }, + { SC_(67.8767242431640625), SC_(36.1357879638671875), SC_(0.347027642754864004906338454298524502073e-29) }, + { SC_(67.8767242431640625), SC_(39.228778839111328125), SC_(0.1395792723860837931106055959315901659674e-30) }, + { SC_(67.8767242431640625), SC_(39.8798675537109375), SC_(0.7244626268578899961943476715395125530608e-31) }, + { SC_(67.8767242431640625), SC_(42.181911468505859375), SC_(0.7521760166504703673704783827543357416828e-32) }, + { SC_(67.8767242431640625), SC_(42.21454620361328125), SC_(0.7288303395814481438795329074428627411869e-32) }, + { SC_(67.8767242431640625), SC_(47.481121063232421875), SC_(0.5469748633946799971324425594907627414221e-34) }, + { SC_(67.8767242431640625), SC_(48.5427093505859375), SC_(0.2132417616313492159824704341984043972548e-34) }, + { SC_(67.8767242431640625), SC_(50.371234893798828125), SC_(0.4346238374002794265359415870281188140784e-35) }, + { SC_(67.8767242431640625), SC_(54.69268035888671875), SC_(0.1177137578738324354113341262360350523079e-36) }, + { SC_(67.8767242431640625), SC_(54.72658538818359375), SC_(0.1145177468690874921495779041279964790577e-36) }, + { SC_(67.8767242431640625), SC_(63.23960113525390625), SC_(0.1614600954323401370525909854255173075629e-39) }, + { SC_(67.8767242431640625), SC_(63.979938507080078125), SC_(0.9403363810592697717990719003560148785367e-40) }, + { SC_(67.8767242431640625), SC_(65.55123138427734375), SC_(0.3029431835224354749142683809681513287366e-40) }, + { SC_(67.8767242431640625), SC_(65.57750701904296875), SC_(0.2973086328293085154871179554885478347806e-40) }, + { SC_(67.8767242431640625), SC_(67.8767242431640625), SC_(0.5870623969691600370604812449624017576567e-41) }, + { SC_(68.13913726806640625), SC_(0.4883005917072296142578125), SC_(0.2313384460389024543325211868359060076449) }, + { SC_(68.13913726806640625), SC_(3.5808107852935791015625), SC_(0.9261767143454543244580881399267338882475e-6) }, + { SC_(68.13913726806640625), SC_(9.76306438446044921875), SC_(0.1474738416614242558299117318589195667791e-12) }, + { SC_(68.13913726806640625), SC_(10.9950771331787109375), SC_(0.1155824835626115854443470892150967551462e-13) }, + { SC_(68.13913726806640625), SC_(11.2553272247314453125), SC_(0.6863008476993137802218463129322040468644e-14) }, + { SC_(68.13913726806640625), SC_(12.70741176605224609375), SC_(0.4121447012698900177431853121010928033938e-15) }, + { SC_(68.13913726806640625), SC_(13.55634593963623046875), SC_(0.8531301836698176089723493730359495944973e-16) }, + { SC_(68.13913726806640625), SC_(14.19721508026123046875), SC_(0.2679415920877300341171906548378451371275e-16) }, + { SC_(68.13913726806640625), SC_(15.76973247528076171875), SC_(0.1732477707000448817571581638267137948041e-17) }, + { SC_(68.13913726806640625), SC_(17.126956939697265625), SC_(0.1814060912359003312610762675834702078835e-18) }, + { SC_(68.13913726806640625), SC_(17.394779205322265625), SC_(0.1174780354534611085823603689428194980006e-18) }, + { SC_(68.13913726806640625), SC_(18.8463134765625), SC_(0.118108193866452974066468311484451224879e-19) }, + { SC_(68.13913726806640625), SC_(21.200313568115234375), SC_(0.3438563692949522558727104811704129393584e-21) }, + { SC_(68.13913726806640625), SC_(22.111194610595703125), SC_(0.9262318594156431631746193017192499366637e-22) }, + { SC_(68.13913726806640625), SC_(27.8570384979248046875), SC_(0.4379056166133199728675900903209050874571e-25) }, + { SC_(68.13913726806640625), SC_(29.709972381591796875), SC_(0.4511592274832363975698389556384011878794e-26) }, + { SC_(68.13913726806640625), SC_(30.198291778564453125), SC_(0.2513490131770296661452445421251686867562e-26) }, + { SC_(68.13913726806640625), SC_(30.8236217498779296875), SC_(0.1198070880859845298386958186796995457417e-26) }, + { SC_(68.13913726806640625), SC_(36.1357879638671875), SC_(0.3101033247072303758735679152910226969853e-29) }, + { SC_(68.13913726806640625), SC_(39.228778839111328125), SC_(0.1237690550928844614619715518826657071164e-30) }, + { SC_(68.13913726806640625), SC_(39.8798675537109375), SC_(0.6413780160103368982863880820844562443015e-31) }, + { SC_(68.13913726806640625), SC_(42.181911468505859375), SC_(0.6622170689037663026681579404853140432854e-32) }, + { SC_(68.13913726806640625), SC_(42.21454620361328125), SC_(0.6416134076864073780256582697646722190957e-32) }, + { SC_(68.13913726806640625), SC_(47.481121063232421875), SC_(0.4756323949333167276661154863946565935536e-34) }, + { SC_(68.13913726806640625), SC_(48.5427093505859375), SC_(0.1849818092513566711374068564869703679731e-34) }, + { SC_(68.13913726806640625), SC_(50.371234893798828125), SC_(0.3754815972374447778433741330789423710929e-35) }, + { SC_(68.13913726806640625), SC_(54.69268035888671875), SC_(0.1007393596172715773670381782789185404597e-36) }, + { SC_(68.13913726806640625), SC_(54.72658538818359375), SC_(0.9799708126291399019756412431812675649236e-37) }, + { SC_(68.13913726806640625), SC_(63.23960113525390625), SC_(0.1357477767303137747479610122247644099051e-39) }, + { SC_(68.13913726806640625), SC_(63.979938507080078125), SC_(0.7894184573900450565015654762264242505226e-40) }, + { SC_(68.13913726806640625), SC_(65.55123138427734375), SC_(0.2535312012694207687316284478591717297818e-40) }, + { SC_(68.13913726806640625), SC_(65.57750701904296875), SC_(0.2488027901861766838549452973027145432947e-40) }, + { SC_(68.13913726806640625), SC_(67.8767242431640625), SC_(0.4890800330558963599530733448628733269555e-41) }, + { SC_(68.13913726806640625), SC_(68.13913726806640625), SC_(0.4072442135014986995708651607081348543266e-41) }, + { SC_(72.586639404296875), SC_(0.4883005917072296142578125), SC_(0.2242798504267125516276320828344749531455) }, + { SC_(72.586639404296875), SC_(3.5808107852935791015625), SC_(0.7415116508690485952684742945451909238915e-6) }, + { SC_(72.586639404296875), SC_(9.76306438446044921875), SC_(0.8241182066669356476869410786538480980988e-13) }, + { SC_(72.586639404296875), SC_(10.9950771331787109375), SC_(0.6032573673739516483606364770249325587745e-14) }, + { SC_(72.586639404296875), SC_(11.2553272247314453125), SC_(0.3531155360919782646861925003734715298409e-14) }, + { SC_(72.586639404296875), SC_(12.70741176605224609375), SC_(0.1959629125020286471511574689839649208161e-15) }, + { SC_(72.586639404296875), SC_(13.55634593963623046875), SC_(0.387594568633778035099957527035447769673e-16) }, + { SC_(72.586639404296875), SC_(14.19721508026123046875), SC_(0.1176567783158499367440816742268181863311e-16) }, + { SC_(72.586639404296875), SC_(15.76973247528076171875), SC_(0.7005470959979854708892188705397875283301e-18) }, + { SC_(72.586639404296875), SC_(17.126956939697265625), SC_(0.6839773777567533909245434431578437956643e-19) }, + { SC_(72.586639404296875), SC_(17.394779205322265625), SC_(0.4369258334335793004166763747298646428339e-19) }, + { SC_(72.586639404296875), SC_(18.8463134765625), SC_(0.4081858624665071137671119476786498380355e-20) }, + { SC_(72.586639404296875), SC_(21.200313568115234375), SC_(0.105768956550645620065106279800346620959e-21) }, + { SC_(72.586639404296875), SC_(22.111194610595703125), SC_(0.2725666519899547005874447407131252054621e-22) }, + { SC_(72.586639404296875), SC_(27.8570384979248046875), SC_(0.9841589366133063775642866189034913957849e-26) }, + { SC_(72.586639404296875), SC_(29.709972381591796875), SC_(0.9326671277035659749669804411283388740891e-27) }, + { SC_(72.586639404296875), SC_(30.198291778564453125), SC_(0.5084206740734688519524037490109196000429e-27) }, + { SC_(72.586639404296875), SC_(30.8236217498779296875), SC_(0.2357182451949389268085973270770491743825e-27) }, + { SC_(72.586639404296875), SC_(36.1357879638671875), SC_(0.485393075748295569115397498665372750987e-30) }, + { SC_(72.586639404296875), SC_(39.228778839111328125), SC_(0.170465834862271660727391875933902857679e-31) }, + { SC_(72.586639404296875), SC_(39.8798675537109375), SC_(0.860288735000452086401579113057854645327e-32) }, + { SC_(72.586639404296875), SC_(42.181911468505859375), SC_(0.8098926385124187523282487055280020551786e-33) }, + { SC_(72.586639404296875), SC_(42.21454620361328125), SC_(0.7836785094678893183499874770791526113328e-33) }, + { SC_(72.586639404296875), SC_(47.481121063232421875), SC_(0.473619948561160364931267827911419539405e-35) }, + { SC_(72.586639404296875), SC_(48.5427093505859375), SC_(0.1769660908677596184582489108068759331187e-35) }, + { SC_(72.586639404296875), SC_(50.371234893798828125), SC_(0.3355413578411585853264940566342363381831e-36) }, + { SC_(72.586639404296875), SC_(54.69268035888671875), SC_(0.7693876233949182349279070438268757964247e-38) }, + { SC_(72.586639404296875), SC_(54.72658538818359375), SC_(0.7475382036788296278807360540412212045103e-38) }, + { SC_(72.586639404296875), SC_(63.23960113525390625), SC_(0.7717491127009479573336058193969930211372e-41) }, + { SC_(72.586639404296875), SC_(63.979938507080078125), SC_(0.4378607952224704949067676388673649636555e-41) }, + { SC_(72.586639404296875), SC_(65.55123138427734375), SC_(0.1335102256381666761066458348862390905934e-41) }, + { SC_(72.586639404296875), SC_(65.57750701904296875), SC_(0.1309072124291790164314796260450277901561e-41) }, + { SC_(72.586639404296875), SC_(67.8767242431640625), SC_(0.2387654191033650396874944386294906328449e-42) }, + { SC_(72.586639404296875), SC_(68.13913726806640625), SC_(0.1971377479463755904351233529477446484974e-42) }, + { SC_(72.586639404296875), SC_(72.586639404296875), SC_(0.8287298474831835974439695180215197093133e-44) }, + { SC_(74.06732177734375), SC_(0.4883005917072296142578125), SC_(0.2220715589408879267948382609448658964888) }, + { SC_(74.06732177734375), SC_(3.5808107852935791015625), SC_(0.6906405879905813546962542680887977379655e-6) }, + { SC_(74.06732177734375), SC_(9.76306438446044921875), SC_(0.6840541749046429716496770306648428307889e-13) }, + { SC_(74.06732177734375), SC_(10.9950771331787109375), SC_(0.4898710650540621271963882207771014366892e-14) }, + { SC_(74.06732177734375), SC_(11.2553272247314453125), SC_(0.2854318948179177183094353306699051034064e-14) }, + { SC_(74.06732177734375), SC_(12.70741176605224609375), SC_(0.1544361016064273858399663939433125818375e-15) }, + { SC_(74.06732177734375), SC_(13.55634593963623046875), SC_(0.3010243820291749263171261936215878802503e-16) }, + { SC_(74.06732177734375), SC_(14.19721508026123046875), SC_(0.9038320786848034957081721340010678446918e-17) }, + { SC_(74.06732177734375), SC_(15.76973247528076171875), SC_(0.5240730707870591035015741193545714036781e-18) }, + { SC_(74.06732177734375), SC_(17.126956939697265625), SC_(0.5002876894724511017191755613289368619887e-19) }, + { SC_(74.06732177734375), SC_(17.394779205322265625), SC_(0.3181808564261491196577779780174723905661e-19) }, + { SC_(74.06732177734375), SC_(18.8463134765625), SC_(0.2903091638554295278677887115778450889544e-20) }, + { SC_(74.06732177734375), SC_(21.200313568115234375), SC_(0.7245308365646628211128992711724800705669e-22) }, + { SC_(74.06732177734375), SC_(22.111194610595703125), SC_(0.1840652370544731581714317773850076127601e-22) }, + { SC_(74.06732177734375), SC_(27.8570384979248046875), SC_(0.6092245368580938197316722448378114393095e-26) }, + { SC_(74.06732177734375), SC_(29.709972381591796875), SC_(0.5619684055915292448597628083169370251786e-27) }, + { SC_(74.06732177734375), SC_(30.198291778564453125), SC_(0.3041958022832567837483899094029711903997e-27) }, + { SC_(74.06732177734375), SC_(30.8236217498779296875), SC_(0.1397757583884755236544882820559661906545e-27) }, + { SC_(74.06732177734375), SC_(36.1357879638671875), SC_(0.2672956045968249561365749287995084940578e-30) }, + { SC_(74.06732177734375), SC_(39.228778839111328125), SC_(0.9006088060639174293097361241954923751233e-32) }, + { SC_(74.06732177734375), SC_(39.8798675537109375), SC_(0.4506272693930286317838745898663775210061e-32) }, + { SC_(74.06732177734375), SC_(42.181911468505859375), SC_(0.411716756738874185277750103225039383711e-33) }, + { SC_(74.06732177734375), SC_(42.21454620361328125), SC_(0.3982232221277457771822786132639748999901e-33) }, + { SC_(74.06732177734375), SC_(47.481121063232421875), SC_(0.2252338226009308951014595973975821947937e-35) }, + { SC_(74.06732177734375), SC_(48.5427093505859375), SC_(0.8307001554337504788998245484836967080572e-36) }, + { SC_(74.06732177734375), SC_(50.371234893798828125), SC_(0.1540580576259956655527473862776989161203e-36) }, + { SC_(74.06732177734375), SC_(54.69268035888671875), SC_(0.3356707935154343771169336072419916592287e-38) }, + { SC_(74.06732177734375), SC_(54.72658538818359375), SC_(0.3260099074281014000149443967324814212126e-38) }, + { SC_(74.06732177734375), SC_(63.23960113525390625), SC_(0.3058630623607431279444947681606815553145e-41) }, + { SC_(74.06732177734375), SC_(63.979938507080078125), SC_(0.1721462545297327599492648539444883575515e-41) }, + { SC_(74.06732177734375), SC_(65.55123138427734375), SC_(0.5160981930828702994473254801148910245772e-42) }, + { SC_(74.06732177734375), SC_(65.57750701904296875), SC_(0.5058937221595457021904806277544412411526e-42) }, + { SC_(74.06732177734375), SC_(67.8767242431640625), SC_(0.9004762676797520649931657569243760657711e-43) }, + { SC_(74.06732177734375), SC_(68.13913726806640625), SC_(0.7414339202352494421549023821913771213315e-43) }, + { SC_(74.06732177734375), SC_(72.586639404296875), SC_(0.2976738095717437346615872347916674053799e-44) }, + { SC_(74.06732177734375), SC_(74.06732177734375), SC_(0.1053303282621186671545659779654287154508e-44) }, + { SC_(74.31581878662109375), SC_(0.4883005917072296142578125), SC_(0.2217074040963917512517946307107209662455) }, + { SC_(74.31581878662109375), SC_(3.5808107852935791015625), SC_(0.6825453595923100038041817373670495344238e-6) }, + { SC_(74.31581878662109375), SC_(9.76306438446044921875), SC_(0.6632293199285926614144395092812079333807e-13) }, + { SC_(74.31581878662109375), SC_(10.9950771331787109375), SC_(0.4732313098166866001486837647510523960311e-14) }, + { SC_(74.31581878662109375), SC_(11.2553272247314453125), SC_(0.2755262898889812311753878228014866867274e-14) }, + { SC_(74.31581878662109375), SC_(12.70741176605224609375), SC_(0.1484499929100436429052993865497576260518e-15) }, + { SC_(74.31581878662109375), SC_(13.55634593963623046875), SC_(0.2886541516773817228314362117148876891358e-16) }, + { SC_(74.31581878662109375), SC_(14.19721508026123046875), SC_(0.8651154564290248241405939811058742528043e-17) }, + { SC_(74.31581878662109375), SC_(15.76973247528076171875), SC_(0.499418148443017106676175685102017385196e-18) }, + { SC_(74.31581878662109375), SC_(17.126956939697265625), SC_(0.4749712550377736494688825729653687808442e-19) }, + { SC_(74.31581878662109375), SC_(17.394779205322265625), SC_(0.3018587517565119392870416706317873212756e-19) }, + { SC_(74.31581878662109375), SC_(18.8463134765625), SC_(0.2743369079714178173269944850428152856231e-20) }, + { SC_(74.31581878662109375), SC_(21.200313568115234375), SC_(0.6804080032632934877173294579078833161975e-22) }, + { SC_(74.31581878662109375), SC_(22.111194610595703125), SC_(0.1724460753508208970917336440405839325689e-22) }, + { SC_(74.31581878662109375), SC_(27.8570384979248046875), SC_(0.5625653940378111094592475372141965178969e-26) }, + { SC_(74.31581878662109375), SC_(29.709972381591796875), SC_(0.5166020010565802289914886886344189270484e-27) }, + { SC_(74.31581878662109375), SC_(30.198291778564453125), SC_(0.2793115804398771737870910779340785239889e-27) }, + { SC_(74.31581878662109375), SC_(30.8236217498779296875), SC_(0.1281503926799169376722817650548978839953e-27) }, + { SC_(74.31581878662109375), SC_(36.1357879638671875), SC_(0.2420636179962350104958641485370727791282e-30) }, + { SC_(74.31581878662109375), SC_(39.228778839111328125), SC_(0.8099843369211089724707239487020564210257e-32) }, + { SC_(74.31581878662109375), SC_(39.8798675537109375), SC_(0.4047039372234982265520298917031565580079e-32) }, + { SC_(74.31581878662109375), SC_(42.181911468505859375), SC_(0.3679195636168533085621745391864292077455e-33) }, + { SC_(74.31581878662109375), SC_(42.21454620361328125), SC_(0.3558365295858712053151475303460930849968e-33) }, + { SC_(74.31581878662109375), SC_(47.481121063232421875), SC_(0.1990499110111267666780976908073613078742e-35) }, + { SC_(74.31581878662109375), SC_(48.5427093505859375), SC_(0.7325399335542194119366200765725615762214e-36) }, + { SC_(74.31581878662109375), SC_(50.371234893798828125), SC_(0.1353533429843718550821822646536203875445e-36) }, + { SC_(74.31581878662109375), SC_(54.69268035888671875), SC_(0.2924172262217025925067113627717513869547e-38) }, + { SC_(74.31581878662109375), SC_(54.72658538818359375), SC_(0.2839825793642599241463326718397553586149e-38) }, + { SC_(74.31581878662109375), SC_(63.23960113525390625), SC_(0.2622170261876785340679139469124752725706e-41) }, + { SC_(74.31581878662109375), SC_(63.979938507080078125), SC_(0.1473837214065112297897847074128340053888e-41) }, + { SC_(74.31581878662109375), SC_(65.55123138427734375), SC_(0.4406152468929643908337518819144186605844e-42) }, + { SC_(74.31581878662109375), SC_(65.57750701904296875), SC_(0.4318830002607879052004565479253714886309e-42) }, + { SC_(74.31581878662109375), SC_(67.8767242431640625), SC_(0.7656176921832174553220621828310227774921e-43) }, + { SC_(74.31581878662109375), SC_(68.13913726806640625), SC_(0.630104066666635584613471095436306114111e-43) }, + { SC_(74.31581878662109375), SC_(72.586639404296875), SC_(0.2510430959527032017834521412419966006073e-44) }, + { SC_(74.31581878662109375), SC_(74.06732177734375), SC_(0.8860825316221771069127106596265010796077e-45) }, + { SC_(74.31581878662109375), SC_(74.31581878662109375), SC_(0.7450982900388003148745726685912573989796e-45) }, + { SC_(75.77643585205078125), SC_(0.4883005917072296142578125), SC_(0.2196031490484263650102248144420212796575) }, + { SC_(75.77643585205078125), SC_(3.5808107852935791015625), SC_(0.6373381494959148389522792595097888323734e-6) }, + { SC_(75.77643585205078125), SC_(9.76306438446044921875), SC_(0.5541059251294731091798312881571033835243e-13) }, + { SC_(75.77643585205078125), SC_(10.9950771331787109375), SC_(0.3870792613318259060581429193983371501545e-14) }, + { SC_(75.77643585205078125), SC_(11.2553272247314453125), SC_(0.2243688055998301809951947141678683955244e-14) }, + { SC_(75.77643585205078125), SC_(12.70741176605224609375), SC_(0.1179597696033906582729794001561595284594e-15) }, + { SC_(75.77643585205078125), SC_(13.55634593963623046875), SC_(0.226146307495119863217400289730497425042e-16) }, + { SC_(75.77643585205078125), SC_(14.19721508026123046875), SC_(0.6706379895483372044862699639057574327875e-17) }, + { SC_(75.77643585205078125), SC_(15.76973247528076171875), SC_(0.3773430303802151539734725134072384870292e-18) }, + { SC_(75.77643585205078125), SC_(17.126956939697265625), SC_(0.3511378244686601426624505801405445404141e-19) }, + { SC_(75.77643585205078125), SC_(17.394779205322265625), SC_(0.2222099624620956191706840204900308790443e-19) }, + { SC_(75.77643585205078125), SC_(18.8463134765625), SC_(0.1973819284835125832760169282882125151502e-20) }, + { SC_(75.77643585205078125), SC_(21.200313568115234375), SC_(0.4720649872096953185819101391066711693003e-22) }, + { SC_(75.77643585205078125), SC_(22.111194610595703125), SC_(0.117999291460917781506966757000642013127e-22) }, + { SC_(75.77643585205078125), SC_(27.8570384979248046875), SC_(0.353808677636149861646086775723788095391e-26) }, + { SC_(75.77643585205078125), SC_(29.709972381591796875), SC_(0.3165016895881230559581192867087273359724e-27) }, + { SC_(75.77643585205078125), SC_(30.198291778564453125), SC_(0.1699591933966898556101616977276721448302e-27) }, + { SC_(75.77643585205078125), SC_(30.8236217498779296875), SC_(0.7730362418362180063011631778062945431094e-28) }, + { SC_(75.77643585205078125), SC_(36.1357879638671875), SC_(0.1358968371850744562533311053633649461857e-30) }, + { SC_(75.77643585205078125), SC_(39.228778839111328125), SC_(0.4367903098230805651708872744138880114854e-32) }, + { SC_(75.77643585205078125), SC_(39.8798675537109375), SC_(0.2164283059147938377359285973817117795156e-32) }, + { SC_(75.77643585205078125), SC_(42.181911468505859375), SC_(0.1911148204889464251506276975356945936871e-33) }, + { SC_(75.77643585205078125), SC_(42.21454620361328125), SC_(0.1847628663878064679449113509366760437108e-33) }, + { SC_(75.77643585205078125), SC_(47.481121063232421875), SC_(0.9690366638757610634778347337014240518162e-36) }, + { SC_(75.77643585205078125), SC_(48.5427093505859375), SC_(0.3521396035909800529321080602702141166877e-36) }, + { SC_(75.77643585205078125), SC_(50.371234893798828125), SC_(0.6367933248871712452585062949244991148753e-37) }, + { SC_(75.77643585205078125), SC_(54.69268035888671875), SC_(0.1309057814477283656878245433139862153223e-38) }, + { SC_(75.77643585205078125), SC_(54.72658538818359375), SC_(0.1270811627916376450753107919295422542759e-38) }, + { SC_(75.77643585205078125), SC_(63.23960113525390625), SC_(0.1069042315193717553887814710209469982381e-41) }, + { SC_(75.77643585205078125), SC_(63.979938507080078125), SC_(0.5961894250966384889460641709525299166768e-42) }, + { SC_(75.77643585205078125), SC_(65.55123138427734375), SC_(0.1753232373112067265031034276498232011671e-42) }, + { SC_(75.77643585205078125), SC_(65.57750701904296875), SC_(0.1718015621733160814086519963409823395683e-42) }, + { SC_(75.77643585205078125), SC_(67.8767242431640625), SC_(0.2974054032451859987154919983453169763312e-43) }, + { SC_(75.77643585205078125), SC_(68.13913726806640625), SC_(0.2441077026249290187108793692146004130045e-43) }, + { SC_(75.77643585205078125), SC_(72.586639404296875), SC_(0.929922949514846139627194600676024718971e-45) }, + { SC_(75.77643585205078125), SC_(74.06732177734375), SC_(0.3234603321179447982917137352742662149966e-45) }, + { SC_(75.77643585205078125), SC_(74.31581878662109375), SC_(0.2713317543215284967098589238005665804414e-45) }, + { SC_(75.77643585205078125), SC_(75.77643585205078125), SC_(0.9740784497255667072932062550617287248302e-46) }, + { SC_(79.222808837890625), SC_(0.4883005917072296142578125), SC_(0.214869794396221995033479007956324140548) }, + { SC_(79.222808837890625), SC_(3.5808107852935791015625), SC_(0.5449104200741113666181903934995591873141e-6) }, + { SC_(79.222808837890625), SC_(9.76306438446044921875), SC_(0.3671921253262996983222003772638589600955e-13) }, + { SC_(79.222808837890625), SC_(10.9950771331787109375), SC_(0.2443396948362424712491910363963474395785e-14) }, + { SC_(79.222808837890625), SC_(11.2553272247314453125), SC_(0.1401960920410325351636169066225584992664e-14) }, + { SC_(79.222808837890625), SC_(12.70741176605224609375), SC_(0.6967526556039550534219431790952458658475e-16) }, + { SC_(79.222808837890625), SC_(13.55634593963623046875), SC_(0.1293108536853696964820351374882655355596e-16) }, + { SC_(79.222808837890625), SC_(14.19721508026123046875), SC_(0.3742633206613606482600292754592274230559e-17) }, + { SC_(79.222808837890625), SC_(15.76973247528076171875), SC_(0.1985336922013833157359312100688380059908e-18) }, + { SC_(79.222808837890625), SC_(17.126956939697265625), SC_(0.1757253510369770273020886709410759679355e-19) }, + { SC_(79.222808837890625), SC_(17.394779205322265625), SC_(0.1101202544419110973465041119318782648427e-19) }, + { SC_(79.222808837890625), SC_(18.8463134765625), SC_(0.9280429244148952839584184826065670887007e-21) }, + { SC_(79.222808837890625), SC_(21.200313568115234375), SC_(0.2041469072173301209359497838952372051362e-22) }, + { SC_(79.222808837890625), SC_(22.111194610595703125), SC_(0.4943103256748105835653771829100600172492e-23) }, + { SC_(79.222808837890625), SC_(27.8570384979248046875), SC_(0.1220482437285732540878199930472140045423e-26) }, + { SC_(79.222808837890625), SC_(29.709972381591796875), SC_(0.1027824256006526642368869255615329717119e-27) }, + { SC_(79.222808837890625), SC_(30.198291778564453125), SC_(0.5433169566361305765354138832137549545564e-28) }, + { SC_(79.222808837890625), SC_(30.8236217498779296875), SC_(0.2422155534167518661490058992420681684459e-28) }, + { SC_(79.222808837890625), SC_(36.1357879638671875), SC_(0.360765222804930219722166524465698906337e-31) }, + { SC_(79.222808837890625), SC_(39.228778839111328125), SC_(0.1056612447628186535827712420406804624382e-32) }, + { SC_(79.222808837890625), SC_(39.8798675537109375), SC_(0.5135647157888009712506724407079618358643e-33) }, + { SC_(79.222808837890625), SC_(42.181911468505859375), SC_(0.4240143175720784268996305730268671974527e-34) }, + { SC_(79.222808837890625), SC_(42.21454620361328125), SC_(0.4095350084841392303203405538885156867338e-34) }, + { SC_(79.222808837890625), SC_(47.481121063232421875), SC_(0.1850586370839991029436126408630975458752e-36) }, + { SC_(79.222808837890625), SC_(48.5427093505859375), SC_(0.6530899504106708711542652246553395375934e-37) }, + { SC_(79.222808837890625), SC_(50.371234893798828125), SC_(0.1123602229685120740425489052288195672809e-37) }, + { SC_(79.222808837890625), SC_(54.69268035888671875), SC_(0.2058880646582792994479531186818387289345e-39) }, + { SC_(79.222808837890625), SC_(54.72658538818359375), SC_(0.199695467421661647767260415133998562376e-39) }, + { SC_(79.222808837890625), SC_(63.23960113525390625), SC_(0.1353771132206814124191474352469503361898e-42) }, + { SC_(79.222808837890625), SC_(63.979938507080078125), SC_(0.7414017280345036828186894289650341208576e-43) }, + { SC_(79.222808837890625), SC_(65.55123138427734375), SC_(0.209854535000618558383076148878660019217e-43) }, + { SC_(79.222808837890625), SC_(65.57750701904296875), SC_(0.2055086531674631580360511057684661301757e-43) }, + { SC_(79.222808837890625), SC_(67.8767242431640625), SC_(0.336671784505587284046240850861790498836e-44) }, + { SC_(79.222808837890625), SC_(68.13913726806640625), SC_(0.2746190461487345303816255421474940762313e-44) }, + { SC_(79.222808837890625), SC_(72.586639404296875), SC_(0.9427969149017194581029153236969575354426e-46) }, + { SC_(79.222808837890625), SC_(74.06732177734375), SC_(0.3169924752132577107121553540003080538764e-46) }, + { SC_(79.222808837890625), SC_(74.31581878662109375), SC_(0.2644042396900268844889932793120686304455e-46) }, + { SC_(79.222808837890625), SC_(75.77643585205078125), SC_(0.9182960478009521517466787891002035420945e-47) }, + { SC_(79.222808837890625), SC_(79.222808837890625), SC_(0.8016438213750442697271185038403515024662e-48) }, + { SC_(79.79488372802734375), SC_(0.4883005917072296142578125), SC_(0.2141137763596806247567826326052293905591) }, + { SC_(79.79488372802734375), SC_(3.5808107852935791015625), SC_(0.5312669490068168498230362523280936852686e-6) }, + { SC_(79.79488372802734375), SC_(9.76306438446044921875), SC_(0.3435157774288883676881267537294056762403e-13) }, + { SC_(79.79488372802734375), SC_(10.9950771331787109375), SC_(0.2267895361376559872189489737151070101194e-14) }, + { SC_(79.79488372802734375), SC_(11.2553272247314453125), SC_(0.1299114812184910156370498910421986196187e-14) }, + { SC_(79.79488372802734375), SC_(12.70741176605224609375), SC_(0.6397720784137125865806760250432000987673e-16) }, + { SC_(79.79488372802734375), SC_(13.55634593963623046875), SC_(0.1181116005206667271295868032075980978015e-16) }, + { SC_(79.79488372802734375), SC_(14.19721508026123046875), SC_(0.3405027786615056146145332344314845042077e-17) }, + { SC_(79.79488372802734375), SC_(15.76973247528076171875), SC_(0.1789043592648183543724247279666403464573e-18) }, + { SC_(79.79488372802734375), SC_(17.126956939697265625), SC_(0.1570683209265593998216064930247850930034e-19) }, + { SC_(79.79488372802734375), SC_(17.394779205322265625), SC_(0.9827209320609267610582808597708906282352e-20) }, + { SC_(79.79488372802734375), SC_(18.8463134765625), SC_(0.8211417096281762024069332011241523380855e-21) }, + { SC_(79.79488372802734375), SC_(21.200313568115234375), SC_(0.1781914914908856698241643052639639455087e-22) }, + { SC_(79.79488372802734375), SC_(22.111194610595703125), SC_(0.4292355703188203073519904584693536399714e-23) }, + { SC_(79.79488372802734375), SC_(27.8570384979248046875), SC_(0.102682579973678098360982962022055706138e-26) }, + { SC_(79.79488372802734375), SC_(29.709972381591796875), SC_(0.8562749052134783589252358100132021962962e-28) }, + { SC_(79.79488372802734375), SC_(30.198291778564453125), SC_(0.4514755007762690712376221268420195797233e-28) }, + { SC_(79.79488372802734375), SC_(30.8236217498779296875), SC_(0.2006154512815874782542356783124133752574e-28) }, + { SC_(79.79488372802734375), SC_(36.1357879638671875), SC_(0.2908386493790171462851785297143690247371e-31) }, + { SC_(79.79488372802734375), SC_(39.228778839111328125), SC_(0.8389913455531126767962000920161218417086e-33) }, + { SC_(79.79488372802734375), SC_(39.8798675537109375), SC_(0.4065112629831007855404745127704839932994e-33) }, + { SC_(79.79488372802734375), SC_(42.181911468505859375), SC_(0.3319656948106804207447601208626524417242e-34) }, + { SC_(79.79488372802734375), SC_(42.21454620361328125), SC_(0.3205802943294716584181176778997802782278e-34) }, + { SC_(79.79488372802734375), SC_(47.481121063232421875), SC_(0.1413803874480987084109250000963116947278e-36) }, + { SC_(79.79488372802734375), SC_(48.5427093505859375), SC_(0.4965653002703301874701595069054836584964e-37) }, + { SC_(79.79488372802734375), SC_(50.371234893798828125), SC_(0.8473827114012730373800267100233184787618e-38) }, + { SC_(79.79488372802734375), SC_(54.69268035888671875), SC_(0.1523825715497653353000378435519501638598e-39) }, + { SC_(79.79488372802734375), SC_(54.72658538818359375), SC_(0.1477778484630307894220339614507037605248e-39) }, + { SC_(79.79488372802734375), SC_(63.23960113525390625), SC_(0.967061775407793290022964590977672389307e-43) }, + { SC_(79.79488372802734375), SC_(63.979938507080078125), SC_(0.5280473376452259963777941666402731659577e-43) }, + { SC_(79.79488372802734375), SC_(65.55123138427734375), SC_(0.1485327885903199304022446486533340704239e-43) }, + { SC_(79.79488372802734375), SC_(65.57750701904296875), SC_(0.1454416973759840075274821573657181119841e-43) }, + { SC_(79.79488372802734375), SC_(67.8767242431640625), SC_(0.236127077828313602684474802072399209589e-44) }, + { SC_(79.79488372802734375), SC_(68.13913726806640625), SC_(0.1924093913352202937507273578132348241837e-44) }, + { SC_(79.79488372802734375), SC_(72.586639404296875), SC_(0.6494051624689720937448159517838537082308e-46) }, + { SC_(79.79488372802734375), SC_(74.06732177734375), SC_(0.2171359012119282450577239727651740598034e-46) }, + { SC_(79.79488372802734375), SC_(74.31581878662109375), SC_(0.180945632216678166089100169456785624499e-46) }, + { SC_(79.79488372802734375), SC_(75.77643585205078125), SC_(0.625038562869409893605055414962750731174e-47) }, + { SC_(79.79488372802734375), SC_(79.222808837890625), SC_(0.5388084557038940737662620824382490210966e-48) }, + { SC_(79.79488372802734375), SC_(79.79488372802734375), SC_(0.3614021472671941669066334939045705822267e-48) }, + { SC_(79.81259918212890625), SC_(0.4883005917072296142578125), SC_(0.2140904939723538289629714013771890224538) }, + { SC_(79.81259918212890625), SC_(3.5808107852935791015625), SC_(0.5308514670695821926518345172609011070266e-6) }, + { SC_(79.81259918212890625), SC_(9.76306438446044921875), SC_(0.3428099723438518300672279762129112172588e-13) }, + { SC_(79.81259918212890625), SC_(10.9950771331787109375), SC_(0.2262684899105177457371760724496281353472e-14) }, + { SC_(79.81259918212890625), SC_(11.2553272247314453125), SC_(0.129606403169237743220314651121864666029e-14) }, + { SC_(79.81259918212890625), SC_(12.70741176605224609375), SC_(0.6380898251801910859590722194104188604365e-16) }, + { SC_(79.81259918212890625), SC_(13.55634593963623046875), SC_(0.117781866544437696839986402620928478984e-16) }, + { SC_(79.81259918212890625), SC_(14.19721508026123046875), SC_(0.339510822888894305019149163801721731392e-17) }, + { SC_(79.81259918212890625), SC_(15.76973247528076171875), SC_(0.178330475889225098248977793309259000606e-18) }, + { SC_(79.81259918212890625), SC_(17.126956939697265625), SC_(0.1565251729364031525873724745544137980812e-19) }, + { SC_(79.81259918212890625), SC_(17.394779205322265625), SC_(0.9792745308559041651461933297360402013458e-20) }, + { SC_(79.81259918212890625), SC_(18.8463134765625), SC_(0.8180460173661393856057430354441895582117e-21) }, + { SC_(79.81259918212890625), SC_(21.200313568115234375), SC_(0.1774451938094217155579051274039385207425e-22) }, + { SC_(79.81259918212890625), SC_(22.111194610595703125), SC_(0.4273695421814254899216246011398031378165e-23) }, + { SC_(79.81259918212890625), SC_(27.8570384979248046875), SC_(0.1021364215625217279823106569529405391531e-26) }, + { SC_(79.81259918212890625), SC_(29.709972381591796875), SC_(0.8514618357848156492797350822611818789514e-28) }, + { SC_(79.81259918212890625), SC_(30.198291778564453125), SC_(0.4489022399879188130970090392100773033883e-28) }, + { SC_(79.81259918212890625), SC_(30.8236217498779296875), SC_(0.1994518882188751441325549947652391904746e-28) }, + { SC_(79.81259918212890625), SC_(36.1357879638671875), SC_(0.2889105817053952004072263379813471203896e-31) }, + { SC_(79.81259918212890625), SC_(39.228778839111328125), SC_(0.8330390990987851028866505755149627734595e-33) }, + { SC_(79.81259918212890625), SC_(39.8798675537109375), SC_(0.403588090867774111021374825843924542832e-33) }, + { SC_(79.81259918212890625), SC_(42.181911468505859375), SC_(0.3294668916721891739373445418375148241575e-34) }, + { SC_(79.81259918212890625), SC_(42.21454620361328125), SC_(0.3181656785261356656109998665891502809393e-34) }, + { SC_(79.81259918212890625), SC_(47.481121063232421875), SC_(0.1402100855875423715991092729876647246127e-36) }, + { SC_(79.81259918212890625), SC_(48.5427093505859375), SC_(0.4923821527366144607843456818735002322142e-37) }, + { SC_(79.81259918212890625), SC_(50.371234893798828125), SC_(0.840032858915435004106862260680496391369e-38) }, + { SC_(79.81259918212890625), SC_(54.69268035888671875), SC_(0.1509731648926226733576068540198674331418e-39) }, + { SC_(79.81259918212890625), SC_(54.72658538818359375), SC_(0.1464103752974016912219967873790125297251e-39) }, + { SC_(79.81259918212890625), SC_(63.23960113525390625), SC_(0.9570683500765454872294321179718212655606e-43) }, + { SC_(79.81259918212890625), SC_(63.979938507080078125), SC_(0.5225426440533395435887121115798419538295e-43) }, + { SC_(79.81259918212890625), SC_(65.55123138427734375), SC_(0.1469559936781281512127734241718711709837e-43) }, + { SC_(79.81259918212890625), SC_(65.57750701904296875), SC_(0.1438972545168489714698537961279070650773e-43) }, + { SC_(79.81259918212890625), SC_(67.8767242431640625), SC_(0.2335544940912308032347942498535500127017e-44) }, + { SC_(79.81259918212890625), SC_(68.13913726806640625), SC_(0.1903071022849409705522197570110277714214e-44) }, + { SC_(79.81259918212890625), SC_(72.586639404296875), SC_(0.6419716125960063248005816832135176968687e-46) }, + { SC_(79.81259918212890625), SC_(74.06732177734375), SC_(0.2146135238322310547737310988294847703447e-46) }, + { SC_(79.81259918212890625), SC_(74.31581878662109375), SC_(0.178838532991255373877550205177228704002e-46) }, + { SC_(79.81259918212890625), SC_(75.77643585205078125), SC_(0.6176564783888625007888060380994310591834e-47) }, + { SC_(79.81259918212890625), SC_(79.222808837890625), SC_(0.5322375173391044054578979189785143959503e-48) }, + { SC_(79.81259918212890625), SC_(79.79488372802734375), SC_(0.3569719538504048335672574257399777840113e-48) }, + { SC_(79.81259918212890625), SC_(79.81259918212890625), SC_(0.3525953717998882037964699924370373866144e-48) }, + { SC_(80.0300445556640625), SC_(0.4883005917072296142578125), SC_(0.2138053453887789205940931192084337061746) }, + { SC_(80.0300445556640625), SC_(3.5808107852935791015625), SC_(0.5257854064821062064161843866913891436872e-6) }, + { SC_(80.0300445556640625), SC_(9.76306438446044921875), SC_(0.3342757117347089666018504848768264963298e-13) }, + { SC_(80.0300445556640625), SC_(10.9950771331787109375), SC_(0.2199783015048906851047628864627349798478e-14) }, + { SC_(80.0300445556640625), SC_(11.2553272247314453125), SC_(0.1259246636135595234843824569237688087972e-14) }, + { SC_(80.0300445556640625), SC_(12.70741176605224609375), SC_(0.6178255725916644219372597889250200286783e-16) }, + { SC_(80.0300445556640625), SC_(13.55634593963623046875), SC_(0.1138141600174793141997722152161869743706e-16) }, + { SC_(80.0300445556640625), SC_(14.19721508026123046875), SC_(0.3275840974647539094986790073131820798377e-17) }, + { SC_(80.0300445556640625), SC_(15.76973247528076171875), SC_(0.1714437698668653150260771630466928764985e-18) }, + { SC_(80.0300445556640625), SC_(17.126956939697265625), SC_(0.1500180107055308967473904767278681688331e-19) }, + { SC_(80.0300445556640625), SC_(17.394779205322265625), SC_(0.9379983475935899999695287414577640536963e-20) }, + { SC_(80.0300445556640625), SC_(18.8463134765625), SC_(0.7810341598851938674817030573694536935498e-21) }, + { SC_(80.0300445556640625), SC_(21.200313568115234375), SC_(0.1685469997547989421063906423106980440457e-22) }, + { SC_(80.0300445556640625), SC_(22.111194610595703125), SC_(0.4051439207283867281539131583283345745725e-23) }, + { SC_(80.0300445556640625), SC_(27.8570384979248046875), SC_(0.9567268741369397825241345204542824546409e-27) }, + { SC_(80.0300445556640625), SC_(29.709972381591796875), SC_(0.7946124276570229976220610037876471435975e-28) }, + { SC_(80.0300445556640625), SC_(30.198291778564453125), SC_(0.4185239576449661556248181392801779511525e-28) }, + { SC_(80.0300445556640625), SC_(30.8236217498779296875), SC_(0.1857246406906501206215959018513043590257e-28) }, + { SC_(80.0300445556640625), SC_(36.1357879638671875), SC_(0.2662874533941058577340890488987452279326e-31) }, + { SC_(80.0300445556640625), SC_(39.228778839111328125), SC_(0.7634107027019134740302660746304342161545e-33) }, + { SC_(80.0300445556640625), SC_(39.8798675537109375), SC_(0.3694149012336405541562378933933554456122e-33) }, + { SC_(80.0300445556640625), SC_(42.181911468505859375), SC_(0.3003191203506022989636975968602495774112e-34) }, + { SC_(80.0300445556640625), SC_(42.21454620361328125), SC_(0.290000798481685754243969450767402283993e-34) }, + { SC_(80.0300445556640625), SC_(47.481121063232421875), SC_(0.1266258386292479011294828645776213929787e-36) }, + { SC_(80.0300445556640625), SC_(48.5427093505859375), SC_(0.4438729551694057382237520964709770666599e-37) }, + { SC_(80.0300445556640625), SC_(50.371234893798828125), SC_(0.7549406165870604955837452644345645595266e-38) }, + { SC_(80.0300445556640625), SC_(54.69268035888671875), SC_(0.1347172704068964402746088512340735377258e-39) }, + { SC_(80.0300445556640625), SC_(54.72658538818359375), SC_(0.1306385942183558440746836900839308202057e-39) }, + { SC_(80.0300445556640625), SC_(63.23960113525390625), SC_(0.8426209205219921278227763053140629762865e-43) }, + { SC_(80.0300445556640625), SC_(63.979938507080078125), SC_(0.4595388356283999460471313970515041693863e-43) }, + { SC_(80.0300445556640625), SC_(65.55123138427734375), SC_(0.1289313882834848733546569259842591992959e-43) }, + { SC_(80.0300445556640625), SC_(65.57750701904296875), SC_(0.1262428379177165085929032380825398669434e-43) }, + { SC_(80.0300445556640625), SC_(67.8767242431640625), SC_(0.2042004906496657752927076380774493975098e-44) }, + { SC_(80.0300445556640625), SC_(68.13913726806640625), SC_(0.1663242072244701393762652745647637985849e-44) }, + { SC_(80.0300445556640625), SC_(72.586639404296875), SC_(0.5574578701615155890161730414768108158366e-46) }, + { SC_(80.0300445556640625), SC_(74.06732177734375), SC_(0.185967858097097374670253691599947726834e-46) }, + { SC_(80.0300445556640625), SC_(74.31581878662109375), SC_(0.1549134536812450958071655437943100300743e-46) }, + { SC_(80.0300445556640625), SC_(75.77643585205078125), SC_(0.5339272310184026694396429087243895199303e-47) }, + { SC_(80.0300445556640625), SC_(79.222808837890625), SC_(0.4578955724026876526601803992559911754185e-48) }, + { SC_(80.0300445556640625), SC_(79.79488372802734375), SC_(0.3068704945000431269127136262093813053217e-48) }, + { SC_(80.0300445556640625), SC_(79.81259918212890625), SC_(0.3031008381974762495988624765975267133824e-48) }, + { SC_(80.0300445556640625), SC_(80.0300445556640625), SC_(0.2604766498242055527830327255195709326272e-48) }, + { SC_(81.47422027587890625), SC_(0.4883005917072296142578125), SC_(0.2119404415380430806235563863025656050429) }, + { SC_(81.47422027587890625), SC_(3.5808107852935791015625), SC_(0.4936615299100981782423637899242610764967e-6) }, + { SC_(81.47422027587890625), SC_(9.76306438446044921875), SC_(0.2832033550179533752504501764166518946771e-13) }, + { SC_(81.47422027587890625), SC_(10.9950771331787109375), SC_(0.1827457392929161693983120483996944541781e-14) }, + { SC_(81.47422027587890625), SC_(11.2553272247314453125), SC_(0.1041818067628830791966233287511946416717e-14) }, + { SC_(81.47422027587890625), SC_(12.70741176605224609375), SC_(0.4996574057125647673754018102965101349387e-16) }, + { SC_(81.47422027587890625), SC_(13.55634593963623046875), SC_(0.9084497883184642944138011010195511408869e-17) }, + { SC_(81.47422027587890625), SC_(14.19721508026123046875), SC_(0.258914967540286245207259384792539934844e-17) }, + { SC_(81.47422027587890625), SC_(15.76973247528076171875), SC_(0.1323120855022102774567670426336604728156e-18) }, + { SC_(81.47422027587890625), SC_(17.126956939697265625), SC_(0.113453538663346908256764391660366167576e-19) }, + { SC_(81.47422027587890625), SC_(17.394779205322265625), SC_(0.7065681937273403174728792933343961299021e-20) }, + { SC_(81.47422027587890625), SC_(18.8463134765625), SC_(0.5759266770835190877434060901637809014804e-21) }, + { SC_(81.47422027587890625), SC_(21.200313568115234375), SC_(0.1201416823599495222795087238882909197695e-22) }, + { SC_(81.47422027587890625), SC_(22.111194610595703125), SC_(0.2850859781461282852954602359812579086902e-23) }, + { SC_(81.47422027587890625), SC_(27.8570384979248046875), SC_(0.6221585249746395432011305229129617186393e-27) }, + { SC_(81.47422027587890625), SC_(29.709972381591796875), SC_(0.5042078529223527775140656689543368644978e-28) }, + { SC_(81.47422027587890625), SC_(30.198291778564453125), SC_(0.2638733095823104852284708421121497908888e-28) }, + { SC_(81.47422027587890625), SC_(30.8236217498779296875), SC_(0.1161458488293804414669691632734332294918e-28) }, + { SC_(81.47422027587890625), SC_(36.1357879638671875), SC_(0.1556626095771245755053784239798663776148e-31) }, + { SC_(81.47422027587890625), SC_(39.228778839111328125), SC_(0.4296765831922434085605375805106507360011e-33) }, + { SC_(81.47422027587890625), SC_(39.8798675537109375), SC_(0.2062952905006321665866638920194381804789e-33) }, + { SC_(81.47422027587890625), SC_(42.181911468505859375), SC_(0.1631746802654300842197019929080861147305e-34) }, + { SC_(81.47422027587890625), SC_(42.21454620361328125), SC_(0.1575077120183233492226847834753714799953e-34) }, + { SC_(81.47422027587890625), SC_(47.481121063232421875), SC_(0.6471672982856957898422848145691769437082e-37) }, + { SC_(81.47422027587890625), SC_(48.5427093505859375), SC_(0.2241619015314656068442327258071288904459e-37) }, + { SC_(81.47422027587890625), SC_(50.371234893798828125), SC_(0.3735717546816144680801088581259963942179e-38) }, + { SC_(81.47422027587890625), SC_(54.69268035888671875), SC_(0.6360196373518562692477058198523076722167e-40) }, + { SC_(81.47422027587890625), SC_(54.72658538818359375), SC_(0.6165398940733784330413154994126815495936e-40) }, + { SC_(81.47422027587890625), SC_(63.23960113525390625), SC_(0.3640509331244213214391250701298533724674e-43) }, + { SC_(81.47422027587890625), SC_(63.979938507080078125), SC_(0.1970717830459011033453509453508490257566e-43) }, + { SC_(81.47422027587890625), SC_(65.55123138427734375), SC_(0.5443334113705847033082626983900057896521e-44) }, + { SC_(81.47422027587890625), SC_(65.57750701904296875), SC_(0.532843979070112864341639537082094992888e-44) }, + { SC_(81.47422027587890625), SC_(67.8767242431640625), SC_(0.8426330979379909050705096751252764695628e-45) }, + { SC_(81.47422027587890625), SC_(68.13913726806640625), SC_(0.6845845301618073229826597427850238063593e-45) }, + { SC_(81.47422027587890625), SC_(72.586639404296875), SC_(0.2198678707416460328019208507426940440682e-46) }, + { SC_(81.47422027587890625), SC_(74.06732177734375), SC_(0.7233368992859873501043571968246521765844e-47) }, + { SC_(81.47422027587890625), SC_(74.31581878662109375), SC_(0.6011498101854898325545584562651264659725e-47) }, + { SC_(81.47422027587890625), SC_(75.77643585205078125), SC_(0.2043979996917061833917473386165630517264e-47) }, + { SC_(81.47422027587890625), SC_(79.222808837890625), SC_(0.16984710643358088230098302014630726261e-48) }, + { SC_(81.47422027587890625), SC_(79.79488372802734375), SC_(0.113240284360607848617999750823442759555e-48) }, + { SC_(81.47422027587890625), SC_(79.81259918212890625), SC_(0.1118313416400252320370661649809129012866e-48) }, + { SC_(81.47422027587890625), SC_(80.0300445556640625), SC_(0.9591659048785999931305781532011422348572e-49) }, + { SC_(81.47422027587890625), SC_(81.47422027587890625), SC_(0.3486524932508483597273736512922858462439e-49) }, + { SC_(83.50250244140625), SC_(0.4883005917072296142578125), SC_(0.2094030292878306425949235672336314500191) }, + { SC_(83.50250244140625), SC_(3.5808107852935791015625), SC_(0.4526604825989648658211346795755583348586e-6) }, + { SC_(83.50250244140625), SC_(9.76306438446044921875), SC_(0.2254196930439857925437167040399392334492e-13) }, + { SC_(83.50250244140625), SC_(10.9950771331787109375), SC_(0.1415764340113832757474833298785356047124e-14) }, + { SC_(83.50250244140625), SC_(11.2553272247314453125), SC_(0.8025525962294130388972113892549461303885e-15) }, + { SC_(83.50250244140625), SC_(12.70741176605224609375), SC_(0.3730280107004440285251026425877093560696e-16) }, + { SC_(83.50250244140625), SC_(13.55634593963623046875), SC_(0.6660519664985124323620930118666117757453e-17) }, + { SC_(83.50250244140625), SC_(14.19721508026123046875), SC_(0.1872731131560643953876515894079531038177e-17) }, + { SC_(83.50250244140625), SC_(15.76973247528076171875), SC_(0.9260462197887635411629726257184929404494e-19) }, + { SC_(83.50250244140625), SC_(17.126956939697265625), SC_(0.7721566280867822338710440065787811344614e-20) }, + { SC_(83.50250244140625), SC_(17.394779205322265625), SC_(0.4782603314376349382002489228945373162146e-20) }, + { SC_(83.50250244140625), SC_(18.8463134765625), SC_(0.3785338069099449794241558849283192846936e-21) }, + { SC_(83.50250244140625), SC_(21.200313568115234375), SC_(0.7535341937136395544610423788599113175991e-23) }, + { SC_(83.50250244140625), SC_(22.111194610595703125), SC_(0.1756480343429018894668731945592217804682e-23) }, + { SC_(83.50250244140625), SC_(27.8570384979248046875), SC_(0.3437490580827970642406274160871341721497e-27) }, + { SC_(83.50250244140625), SC_(29.709972381591796875), SC_(0.2692865414031240635911062580504843634068e-28) }, + { SC_(83.50250244140625), SC_(30.198291778564453125), SC_(0.1396875989536270254235608535690243285996e-28) }, + { SC_(83.50250244140625), SC_(30.8236217498779296875), SC_(0.6079524630398162982026029770440735570659e-29) }, + { SC_(83.50250244140625), SC_(36.1357879638671875), SC_(0.7421938498284319216092816336557246019189e-32) }, + { SC_(83.50250244140625), SC_(39.228778839111328125), SC_(0.1944044317231233764012679576115712399996e-33) }, + { SC_(83.50250244140625), SC_(39.8798675537109375), SC_(0.9232832922113607903481871556049254985519e-34) }, + { SC_(83.50250244140625), SC_(42.181911468505859375), SC_(0.7030950272095216104323641459656874280086e-35) }, + { SC_(83.50250244140625), SC_(42.21454620361328125), SC_(0.6783152678582834438567689567687197206164e-35) }, + { SC_(83.50250244140625), SC_(47.481121063232421875), SC_(0.2561912882926787277899882954255331859004e-37) }, + { SC_(83.50250244140625), SC_(48.5427093505859375), SC_(0.8728029502530870441197755007961409934118e-38) }, + { SC_(83.50250244140625), SC_(50.371234893798828125), SC_(0.1414081099532630385990889804681636921952e-38) }, + { SC_(83.50250244140625), SC_(54.69268035888671875), SC_(0.2255641595228799840753494409731704590899e-40) }, + { SC_(83.50250244140625), SC_(54.72658538818359375), SC_(0.2185457013802613264457152970282587966695e-40) }, + { SC_(83.50250244140625), SC_(63.23960113525390625), SC_(0.1141647639660313286251950244945803901379e-43) }, + { SC_(83.50250244140625), SC_(63.979938507080078125), SC_(0.6116672941310892220299113851913871900329e-44) }, + { SC_(83.50250244140625), SC_(65.55123138427734375), SC_(0.1653195132220110315634570875075039823867e-44) }, + { SC_(83.50250244140625), SC_(65.57750701904296875), SC_(0.1617716161121191991990858840729267239882e-44) }, + { SC_(83.50250244140625), SC_(67.8767242431640625), SC_(0.2479257393185896198640744805446280158494e-45) }, + { SC_(83.50250244140625), SC_(68.13913726806640625), SC_(0.2007100471861246077761232969918198559844e-45) }, + { SC_(83.50250244140625), SC_(72.586639404296875), SC_(0.6075568304601379845385923483065619351682e-47) }, + { SC_(83.50250244140625), SC_(74.06732177734375), SC_(0.1960504781141750077139772133800998449296e-47) }, + { SC_(83.50250244140625), SC_(74.31581878662109375), SC_(0.1624083801098619956788798285348898991333e-47) }, + { SC_(83.50250244140625), SC_(75.77643585205078125), SC_(0.541887343778697416272049134975634269928e-48) }, + { SC_(83.50250244140625), SC_(79.222808837890625), SC_(0.4309777426427424127408979408591395332264e-49) }, + { SC_(83.50250244140625), SC_(79.79488372802734375), SC_(0.2852839088255602374025496727275015603209e-49) }, + { SC_(83.50250244140625), SC_(79.81259918212890625), SC_(0.2816718252913140921628197315719598725495e-49) }, + { SC_(83.50250244140625), SC_(80.0300445556640625), SC_(0.2409298328433455207722643891020469723293e-49) }, + { SC_(83.50250244140625), SC_(81.47422027587890625), SC_(0.8601467412996951804159714675919521886411e-50) }, + { SC_(83.50250244140625), SC_(83.50250244140625), SC_(0.2069614264077967066388845439094775894361e-50) }, + { SC_(84.9144439697265625), SC_(0.4883005917072296142578125), SC_(0.2076903467383462986425286117350131785307) }, + { SC_(84.9144439697265625), SC_(3.5808107852935791015625), SC_(0.4266649248610102168639002836172964963755e-6) }, + { SC_(84.9144439697265625), SC_(9.76306438446044921875), SC_(0.1929057024921263890392907422053265617198e-13) }, + { SC_(84.9144439697265625), SC_(10.9950771331787109375), SC_(0.1189363408104418217197379783496876241498e-14) }, + { SC_(84.9144439697265625), SC_(11.2553272247314453125), SC_(0.6716055917572708886283156674760046462093e-15) }, + { SC_(84.9144439697265625), SC_(12.70741176605224609375), SC_(0.3055461047478060325988066107934777190775e-16) }, + { SC_(84.9144439697265625), SC_(13.55634593963623046875), SC_(0.5388499446125292521068692408625931079451e-17) }, + { SC_(84.9144439697265625), SC_(14.19721508026123046875), SC_(0.1501094611664259784621191741938869551744e-17) }, + { SC_(84.9144439697265625), SC_(15.76973247528076171875), SC_(0.7257625507812777425365521405013829737841e-19) }, + { SC_(84.9144439697265625), SC_(17.126956939697265625), SC_(0.5936871533778175994232456429409153284149e-20) }, + { SC_(84.9144439697265625), SC_(17.394779205322265625), SC_(0.3663448398407083508954046258839988275369e-20) }, + { SC_(84.9144439697265625), SC_(18.8463134765625), SC_(0.2841772195286897367348720545110638874729e-21) }, + { SC_(84.9144439697265625), SC_(21.200313568115234375), SC_(0.5478623424508985002031345034736976547247e-23) }, + { SC_(84.9144439697265625), SC_(22.111194610595703125), SC_(0.1261567709091945163948048992417557382678e-23) }, + { SC_(84.9144439697265625), SC_(27.8570384979248046875), SC_(0.2291317882658178382635826434264204575344e-27) }, + { SC_(84.9144439697265625), SC_(29.709972381591796875), SC_(0.1753709936746602098321885383348038410909e-28) }, + { SC_(84.9144439697265625), SC_(30.198291778564453125), SC_(0.9042041820937548410749953981810626876226e-29) }, + { SC_(84.9144439697265625), SC_(30.8236217498779296875), SC_(0.390500060168648341020011680472329530931e-29) }, + { SC_(84.9144439697265625), SC_(36.1357879638671875), SC_(0.447164671362351685734462754088562960396e-32) }, + { SC_(84.9144439697265625), SC_(39.228778839111328125), SC_(0.112987733210531389551922343979290331934e-33) }, + { SC_(84.9144439697265625), SC_(39.8798675537109375), SC_(0.5326244507989394466462211853084846145564e-34) }, + { SC_(84.9144439697265625), SC_(42.181911468505859375), SC_(0.3951693879114653846148466531456465955006e-35) }, + { SC_(84.9144439697265625), SC_(42.21454620361328125), SC_(0.3811026072853050782949963987492163896403e-35) }, + { SC_(84.9144439697265625), SC_(47.481121063232421875), SC_(0.1358470163220692895920389371609181301651e-37) }, + { SC_(84.9144439697265625), SC_(48.5427093505859375), SC_(0.4575724688044458770139269693390745107578e-38) }, + { SC_(84.9144439697265625), SC_(50.371234893798828125), SC_(0.7271062153095000819760870828035457958939e-39) }, + { SC_(84.9144439697265625), SC_(54.69268035888671875), SC_(0.1109025972571192167602178439376918073622e-40) }, + { SC_(84.9144439697265625), SC_(54.72658538818359375), SC_(0.1074146925581138357043143152081141135059e-40) }, + { SC_(84.9144439697265625), SC_(63.23960113525390625), SC_(0.5157733783355597740787530426535066824338e-44) }, + { SC_(84.9144439697265625), SC_(63.979938507080078125), SC_(0.2743850817488204544542463061331686735447e-44) }, + { SC_(84.9144439697265625), SC_(65.55123138427734375), SC_(0.7306002614016870396617194293438562371374e-45) }, + { SC_(84.9144439697265625), SC_(65.57750701904296875), SC_(0.7147432974083628210979645595255654997088e-45) }, + { SC_(84.9144439697265625), SC_(67.8767242431640625), SC_(0.1072005978169144237708433927178805797429e-45) }, + { SC_(84.9144439697265625), SC_(68.13913726806640625), SC_(0.8657332421644124362359600339964854274348e-46) }, + { SC_(84.9144439697265625), SC_(72.586639404296875), SC_(0.2515936644856856666491240462721560926862e-47) }, + { SC_(84.9144439697265625), SC_(74.06732177734375), SC_(0.8011222758310217328429166337228541443934e-48) }, + { SC_(84.9144439697265625), SC_(74.31581878662109375), SC_(0.6621773252083506421095025523968165080399e-48) }, + { SC_(84.9144439697265625), SC_(75.77643585205078125), SC_(0.2180886709982387895916697139869299418622e-48) }, + { SC_(84.9144439697265625), SC_(79.222808837890625), SC_(0.1682942163644745208825742208150050886084e-49) }, + { SC_(84.9144439697265625), SC_(79.79488372802734375), SC_(0.1108517013243020324173807483456213701808e-49) }, + { SC_(84.9144439697265625), SC_(79.81259918212890625), SC_(0.1094314259960089216091213584505644852527e-49) }, + { SC_(84.9144439697265625), SC_(80.0300445556640625), SC_(0.9342742005089813916961213394866887008975e-50) }, + { SC_(84.9144439697265625), SC_(81.47422027587890625), SC_(0.3294364149056769962331661266789314558257e-50) }, + { SC_(84.9144439697265625), SC_(83.50250244140625), SC_(0.779120830746541451967666767286342604541e-51) }, + { SC_(84.9144439697265625), SC_(84.9144439697265625), SC_(0.2898438268160504848852402569727419838398e-51) }, + { SC_(87.8442840576171875), SC_(0.4883005917072296142578125), SC_(0.2042684930309848799771251033279237896267) }, + { SC_(87.8442840576171875), SC_(3.5808107852935791015625), SC_(0.3785337415906789829929533314845265018476e-6) }, + { SC_(87.8442840576171875), SC_(9.76306438446044921875), SC_(0.1407116254937751962491495730103261109316e-13) }, + { SC_(87.8442840576171875), SC_(10.9950771331787109375), SC_(0.8356271093162788615143087900889296648958e-15) }, + { SC_(87.8442840576171875), SC_(11.2553272247314453125), SC_(0.4681643152676866108758621970055562075433e-15) }, + { SC_(87.8442840576171875), SC_(12.70741176605224609375), SC_(0.2039288839325664794374602397135074190175e-16) }, + { SC_(87.8442840576171875), SC_(13.55634593963623046875), SC_(0.3507189558647290847784390116566908437556e-17) }, + { SC_(87.8442840576171875), SC_(14.19721508026123046875), SC_(0.9587921665258967802391555624754956694323e-18) }, + { SC_(87.8442840576171875), SC_(15.76973247528076171875), SC_(0.4428652227394017894346946471823679093127e-19) }, + { SC_(87.8442840576171875), SC_(17.126956939697265625), SC_(0.3484630564620865569901998922344965936983e-20) }, + { SC_(87.8442840576171875), SC_(17.394779205322265625), SC_(0.2133953340294520269485046929636139249705e-20) }, + { SC_(87.8442840576171875), SC_(18.8463134765625), SC_(0.1588998946944908082904031276638988763086e-21) }, + { SC_(87.8442840576171875), SC_(21.200313568115234375), SC_(0.2870251091278066679592785276996285568941e-23) }, + { SC_(87.8442840576171875), SC_(22.111194610595703125), SC_(0.6447336192071314019414120377089272603906e-24) }, + { SC_(87.8442840576171875), SC_(27.8570384979248046875), SC_(0.100598188770143817489104965053740674464e-27) }, + { SC_(87.8442840576171875), SC_(29.709972381591796875), SC_(0.7343433121852953554909379603380862353314e-29) }, + { SC_(87.8442840576171875), SC_(30.198291778564453125), SC_(0.3739758151874473087789888010433869832711e-29) }, + { SC_(87.8442840576171875), SC_(30.8236217498779296875), SC_(0.158986952151594508770191561330301565029e-29) }, + { SC_(87.8442840576171875), SC_(36.1357879638671875), SC_(0.1597961353854710790455002446181230319008e-32) }, + { SC_(87.8442840576171875), SC_(39.228778839111328125), SC_(0.3752114589490056568903118160593874640487e-34) }, + { SC_(87.8442840576171875), SC_(39.8798675537109375), SC_(0.174205113880831068744236695850898958601e-34) }, + { SC_(87.8442840576171875), SC_(42.181911468505859375), SC_(0.1225578294514335744961691060602039659336e-35) }, + { SC_(87.8442840576171875), SC_(42.21454620361328125), SC_(0.1181069508386030070712375919508301694575e-35) }, + { SC_(87.8442840576171875), SC_(47.481121063232421875), SC_(0.3741221320003581485477381786052920854167e-38) }, + { SC_(87.8442840576171875), SC_(48.5427093505859375), SC_(0.1231215706189523816929631399599760506927e-38) }, + { SC_(87.8442840576171875), SC_(50.371234893798828125), SC_(0.1880527638641322348052982246291694758455e-39) }, + { SC_(87.8442840576171875), SC_(54.69268035888671875), SC_(0.2617532321212419185659576362230701392663e-41) }, + { SC_(87.8442840576171875), SC_(54.72658538818359375), SC_(0.2533419770025973428847982371120522994055e-41) }, + { SC_(87.8442840576171875), SC_(63.23960113525390625), SC_(0.1024008839096460065485913833542228911829e-44) }, + { SC_(87.8442840576171875), SC_(63.979938507080078125), SC_(0.5369125115604066434395437106133005733956e-45) }, + { SC_(87.8442840576171875), SC_(65.55123138427734375), SC_(0.138659788334548408879648681930344161511e-45) }, + { SC_(87.8442840576171875), SC_(65.57750701904296875), SC_(0.1355813737534164534783586642955085302098e-45) }, + { SC_(87.8442840576171875), SC_(67.8767242431640625), SC_(0.194569912071397608206916290540185019863e-46) }, + { SC_(87.8442840576171875), SC_(68.13913726806640625), SC_(0.1563481529286028345548542873201451687876e-46) }, + { SC_(87.8442840576171875), SC_(72.586639404296875), SC_(0.4180085739910890456222985347846708159433e-48) }, + { SC_(87.8442840576171875), SC_(74.06732177734375), SC_(0.1295239158128540296659361219161044607014e-48) }, + { SC_(87.8442840576171875), SC_(74.31581878662109375), SC_(0.1065737129324437874483959462224627359916e-48) }, + { SC_(87.8442840576171875), SC_(75.77643585205078125), SC_(0.3417902416075090371265328988847250993637e-49) }, + { SC_(87.8442840576171875), SC_(79.222808837890625), SC_(0.2479438749437685248140341716180866738455e-50) }, + { SC_(87.8442840576171875), SC_(79.79488372802734375), SC_(0.1616684202252779100698714719590539751098e-50) }, + { SC_(87.8442840576171875), SC_(79.81259918212890625), SC_(0.159547071034108472444378692390249756784e-50) }, + { SC_(87.8442840576171875), SC_(80.0300445556640625), SC_(0.1356914057745549545935320110684439057282e-50) }, + { SC_(87.8442840576171875), SC_(81.47422027587890625), SC_(0.4664675211955216959211662725276707492529e-51) }, + { SC_(87.8442840576171875), SC_(83.50250244140625), SC_(0.1064941283595409200069659965156051708435e-51) }, + { SC_(87.8442840576171875), SC_(84.9144439697265625), SC_(0.3866535397096399384996989846284949631992e-52) }, + { SC_(87.8442840576171875), SC_(87.8442840576171875), SC_(0.4907239630942649422257339389581108345244e-53) }, + { SC_(90.58013916015625), SC_(0.4883005917072296142578125), SC_(0.201223556351949094145567979157347035349) }, + { SC_(90.58013916015625), SC_(3.5808107852935791015625), SC_(0.3396914056917493263207967706232631656352e-6) }, + { SC_(90.58013916015625), SC_(9.76306438446044921875), SC_(0.1057470410534565890871994162342729098464e-13) }, + { SC_(90.58013916015625), SC_(10.9950771331787109375), SC_(0.6069838752394419732845332111199413304148e-15) }, + { SC_(90.58013916015625), SC_(11.2553272247314453125), SC_(0.3376490484961753760245424650533210278966e-15) }, + { SC_(90.58013916015625), SC_(12.70741176605224609375), SC_(0.1413873026698225939006024980390452809576e-16) }, + { SC_(90.58013916015625), SC_(13.55634593963623046875), SC_(0.2376764871309227069418073248639464742025e-17) }, + { SC_(90.58013916015625), SC_(14.19721508026123046875), SC_(0.6387466334015813499065832987743146049606e-18) }, + { SC_(90.58013916015625), SC_(15.76973247528076171875), SC_(0.2830454913342885924506119617045260081401e-19) }, + { SC_(90.58013916015625), SC_(17.126956939697265625), SC_(0.2149837878669417417275331743384021905566e-20) }, + { SC_(90.58013916015625), SC_(17.394779205322265625), SC_(0.1307467575442697699217631437523828769539e-20) }, + { SC_(90.58013916015625), SC_(18.8463134765625), SC_(0.9380478871387522088246684909857760582048e-22) }, + { SC_(90.58013916015625), SC_(21.200313568115234375), SC_(0.15969696214510315912744662931723135085e-23) }, + { SC_(90.58013916015625), SC_(22.111194610595703125), SC_(0.35071189551952920525372350866224051552e-24) }, + { SC_(90.58013916015625), SC_(27.8570384979248046875), SC_(0.4765395449491946978760709599466252887758e-28) }, + { SC_(90.58013916015625), SC_(29.709972381591796875), SC_(0.3331725011044347379504930280864883768562e-29) }, + { SC_(90.58013916015625), SC_(30.198291778564453125), SC_(0.1677737252510642699805347058234361464318e-29) }, + { SC_(90.58013916015625), SC_(30.8236217498779296875), SC_(0.7030879967825964606108892096454033961857e-30) }, + { SC_(90.58013916015625), SC_(36.1357879638671875), SC_(0.6274081419719997780595611380958144005806e-33) }, + { SC_(90.58013916015625), SC_(39.228778839111328125), SC_(0.1377786707447903437206610603268101575369e-34) }, + { SC_(90.58013916015625), SC_(39.8798675537109375), SC_(0.6308634683699449092234193037272557623629e-35) }, + { SC_(90.58013916015625), SC_(42.181911468505859375), SC_(0.4227976421299610801389414581795864173754e-36) }, + { SC_(90.58013916015625), SC_(42.21454620361328125), SC_(0.4071652872253668983110779633400999630334e-36) }, + { SC_(90.58013916015625), SC_(47.481121063232421875), SC_(0.1157841443384937219673136981726910840906e-38) }, + { SC_(90.58013916015625), SC_(48.5427093505859375), SC_(0.3730302546877001584175376368834706059434e-39) }, + { SC_(90.58013916015625), SC_(50.371234893798828125), SC_(0.5494963392543147069747081477327983601755e-40) }, + { SC_(90.58013916015625), SC_(54.69268035888671875), SC_(0.70342966279128737451956357942089118456e-42) }, + { SC_(90.58013916015625), SC_(54.72658538818359375), SC_(0.680385249119814108968564078329059444627e-42) }, + { SC_(90.58013916015625), SC_(63.23960113525390625), SC_(0.2348799667289427163763456315769677918578e-45) }, + { SC_(90.58013916015625), SC_(63.979938507080078125), SC_(0.12152643259788830078074130034096749147e-45) }, + { SC_(90.58013916015625), SC_(65.55123138427734375), SC_(0.3051778578905277823316907302962857347504e-46) }, + { SC_(90.58013916015625), SC_(65.57750701904296875), SC_(0.2982635276085547310351499604538749049005e-46) }, + { SC_(90.58013916015625), SC_(67.8767242431640625), SC_(0.4110551008892385167494783199839966368215e-47) }, + { SC_(90.58013916015625), SC_(68.13913726806640625), SC_(0.3287968114383387558321892095538921146538e-47) }, + { SC_(90.58013916015625), SC_(72.586639404296875), SC_(0.8143250421782267461219847012497135031077e-49) }, + { SC_(90.58013916015625), SC_(74.06732177734375), SC_(0.2460962704823954359736375856063657742159e-49) }, + { SC_(90.58013916015625), SC_(74.31581878662109375), SC_(0.2016474200950186732056762737525037913485e-49) }, + { SC_(90.58013916015625), SC_(75.77643585205078125), SC_(0.631108863766004582747690971034083119848e-50) }, + { SC_(90.58013916015625), SC_(79.222808837890625), SC_(0.4325738004790176452084548084213857051993e-51) }, + { SC_(90.58013916015625), SC_(79.79488372802734375), SC_(0.2794417571839340401372130641356816023258e-51) }, + { SC_(90.58013916015625), SC_(79.81259918212890625), SC_(0.2756957269260821869147664804049758652928e-51) }, + { SC_(90.58013916015625), SC_(80.0300445556640625), SC_(0.2336476535272350135053927583115278421146e-51) }, + { SC_(90.58013916015625), SC_(81.47422027587890625), SC_(0.7847018551298599614441055190293000786371e-52) }, + { SC_(90.58013916015625), SC_(83.50250244140625), SC_(0.1734330323262062901186320246658991946737e-52) }, + { SC_(90.58013916015625), SC_(84.9144439697265625), SC_(0.6157809230837258097025214134534377035305e-53) }, + { SC_(90.58013916015625), SC_(87.8442840576171875), SC_(0.7465499566933508545787661936143145704038e-54) }, + { SC_(90.58013916015625), SC_(90.58013916015625), SC_(0.1088955075601350404439675092370678016857e-54) }, + { SC_(91.3384552001953125), SC_(0.4883005917072296142578125), SC_(0.2004037608638731424929018894086980884232) }, + { SC_(91.3384552001953125), SC_(3.5808107852935791015625), SC_(0.3298370764269846499983760089242270119603e-6) }, + { SC_(91.3384552001953125), SC_(9.76306438446044921875), SC_(0.9783959139951309635457989748936440198131e-14) }, + { SC_(91.3384552001953125), SC_(10.9950771331787109375), SC_(0.5564162942267308261860099351764280171771e-15) }, + { SC_(91.3384552001953125), SC_(11.2553272247314453125), SC_(0.308918913540798248586585027998397806904e-15) }, + { SC_(91.3384552001953125), SC_(12.70741176605224609375), SC_(0.1279738000041079940234674607710615490636e-16) }, + { SC_(91.3384552001953125), SC_(13.55634593963623046875), SC_(0.2137952128326623990644493912344880239236e-17) }, + { SC_(91.3384552001953125), SC_(14.19721508026123046875), SC_(0.5718965863728901382680891626417042601804e-18) }, + { SC_(91.3384552001953125), SC_(15.76973247528076171875), SC_(0.2505725869844229332367706337303571497196e-19) }, + { SC_(91.3384552001953125), SC_(17.126956939697265625), SC_(0.1884959435907360934065760424277204785286e-20) }, + { SC_(91.3384552001953125), SC_(17.394779205322265625), SC_(0.1144217051573891469080945958061757625469e-20) }, + { SC_(91.3384552001953125), SC_(18.8463134765625), SC_(0.8126430225844264214402512769066589772479e-22) }, + { SC_(91.3384552001953125), SC_(21.200313568115234375), SC_(0.1361301370110248429338910985320653019451e-23) }, + { SC_(91.3384552001953125), SC_(22.111194610595703125), SC_(0.2971203840958967009114345544955198741495e-24) }, + { SC_(91.3384552001953125), SC_(27.8570384979248046875), SC_(0.3887639946670195410869971769449474447697e-28) }, + { SC_(91.3384552001953125), SC_(29.709972381591796875), SC_(0.2686201557618516400455818166605051081183e-29) }, + { SC_(91.3384552001953125), SC_(30.198291778564453125), SC_(0.134852137920877870741272618879654750686e-29) }, + { SC_(91.3384552001953125), SC_(30.8236217498779296875), SC_(0.5629128442093872271785208845697356750801e-30) }, + { SC_(91.3384552001953125), SC_(36.1357879638671875), SC_(0.4862548349031326968683953335328295817413e-33) }, + { SC_(91.3384552001953125), SC_(39.228778839111328125), SC_(0.1048446343913304837055586664772173619154e-34) }, + { SC_(91.3384552001953125), SC_(39.8798675537109375), SC_(0.4782449037155715139096980404048970106792e-35) }, + { SC_(91.3384552001953125), SC_(42.181911468505859375), SC_(0.3162872286073456379112549412706395486511e-36) }, + { SC_(91.3384552001953125), SC_(42.21454620361328125), SC_(0.3045361313190930458882373174757147052851e-36) }, + { SC_(91.3384552001953125), SC_(47.481121063232421875), SC_(0.8408081881977777915701705655133788752785e-39) }, + { SC_(91.3384552001953125), SC_(48.5427093505859375), SC_(0.2693190454894018490663873355843486287101e-39) }, + { SC_(91.3384552001953125), SC_(50.371234893798828125), SC_(0.3928111513984043976756878296077813599198e-40) }, + { SC_(91.3384552001953125), SC_(54.69268035888671875), SC_(0.4914574693136678343030197079130972681211e-42) }, + { SC_(91.3384552001953125), SC_(54.72658538818359375), SC_(0.4752730996853391680956304657669096278755e-42) }, + { SC_(91.3384552001953125), SC_(63.23960113525390625), SC_(0.1571335003672292821499342440643834553036e-45) }, + { SC_(91.3384552001953125), SC_(63.979938507080078125), SC_(0.8100485308695994697190382022939272984634e-46) }, + { SC_(91.3384552001953125), SC_(65.55123138427734375), SC_(0.2018643169300683229413723079763508230786e-46) }, + { SC_(91.3384552001953125), SC_(65.57750701904296875), SC_(0.1972655392959138551130152164875327890157e-46) }, + { SC_(91.3384552001953125), SC_(67.8767242431640625), SC_(0.2688646979170853101532625078061722382414e-47) }, + { SC_(91.3384552001953125), SC_(68.13913726806640625), SC_(0.2147909517648537142780836908995090818522e-47) }, + { SC_(91.3384552001953125), SC_(72.586639404296875), SC_(0.5209283467622263238955351640096417299335e-49) }, + { SC_(91.3384552001953125), SC_(74.06732177734375), SC_(0.1563536200700957367833457708333779651659e-49) }, + { SC_(91.3384552001953125), SC_(74.31581878662109375), SC_(0.1279671621331889745438224961868473778974e-49) }, + { SC_(91.3384552001953125), SC_(75.77643585205078125), SC_(0.3978356627268881751615160319019795674107e-50) }, + { SC_(91.3384552001953125), SC_(79.222808837890625), SC_(0.2684737292107745532358553086383359038641e-51) }, + { SC_(91.3384552001953125), SC_(79.79488372802734375), SC_(0.1729913657438333009202720564672032931692e-51) }, + { SC_(91.3384552001953125), SC_(79.81259918212890625), SC_(0.1706588805608491085756123941508105142896e-51) }, + { SC_(91.3384552001953125), SC_(80.0300445556640625), SC_(0.1444907272469312406767997891153754059711e-51) }, + { SC_(91.3384552001953125), SC_(81.47422027587890625), SC_(0.4821756624894345469848246314386452714614e-52) }, + { SC_(91.3384552001953125), SC_(83.50250244140625), SC_(0.1056258129138996123328304721294824669664e-52) }, + { SC_(91.3384552001953125), SC_(84.9144439697265625), SC_(0.3727368058995518790022023789844007689645e-53) }, + { SC_(91.3384552001953125), SC_(87.8442840576171875), SC_(0.4462502445334160731694274328059926758195e-54) }, + { SC_(91.3384552001953125), SC_(90.58013916015625), SC_(0.6434498803625257436516819891001770761941e-55) }, + { SC_(91.3384552001953125), SC_(91.3384552001953125), SC_(0.379003220259738988669470090002313725235e-55) }, + { SC_(91.57439422607421875), SC_(0.4883005917072296142578125), SC_(0.2001507623491522566259576106255282034321) }, + { SC_(91.57439422607421875), SC_(3.5808107852935791015625), SC_(0.3268458123146182767734407502749010931811e-6) }, + { SC_(91.57439422607421875), SC_(9.76306438446044921875), SC_(0.9551406061037660137268250655053901771752e-14) }, + { SC_(91.57439422607421875), SC_(10.9950771331787109375), SC_(0.541635027736627241158523046987038726162e-15) }, + { SC_(91.57439422607421875), SC_(11.2553272247314453125), SC_(0.3005316190679258771774465775513704148755e-15) }, + { SC_(91.57439422607421875), SC_(12.70741176605224609375), SC_(0.1240855703989391149933453815659066572791e-16) }, + { SC_(91.57439422607421875), SC_(13.55634593963623046875), SC_(0.2069009488541485565991294231698498778547e-17) }, + { SC_(91.57439422607421875), SC_(14.19721508026123046875), SC_(0.5526569151568888773079665221198575998953e-18) }, + { SC_(91.57439422607421875), SC_(15.76973247528076171875), SC_(0.2412963075060115439329396613875523226697e-19) }, + { SC_(91.57439422607421875), SC_(17.126956939697265625), SC_(0.1809773777180454703927657845308526095314e-20) }, + { SC_(91.57439422607421875), SC_(17.394779205322265625), SC_(0.1097936210141710591487083582884264857673e-20) }, + { SC_(91.57439422607421875), SC_(18.8463134765625), SC_(0.7773290886795863200883848087220821327428e-22) }, + { SC_(91.57439422607421875), SC_(21.200313568115234375), SC_(0.1295644593057152931935694416594908036769e-23) }, + { SC_(91.57439422607421875), SC_(22.111194610595703125), SC_(0.2822508337576429555032053463394404171888e-24) }, + { SC_(91.57439422607421875), SC_(27.8570384979248046875), SC_(0.3650141462242194115514372571827862868963e-28) }, + { SC_(91.57439422607421875), SC_(29.709972381591796875), SC_(0.2512908018367460284218602179496400089872e-29) }, + { SC_(91.57439422607421875), SC_(30.198291778564453125), SC_(0.1260323405025225629725179433780506538911e-29) }, + { SC_(91.57439422607421875), SC_(30.8236217498779296875), SC_(0.5254577618945544311777802365848207153537e-30) }, + { SC_(91.57439422607421875), SC_(36.1357879638671875), SC_(0.4493509217024291896310668755873388380995e-33) }, + { SC_(91.57439422607421875), SC_(39.228778839111328125), SC_(0.9633943355357923098328920954070864956911e-35) }, + { SC_(91.57439422607421875), SC_(39.8798675537109375), SC_(0.4389318000915128834895507220215839737616e-35) }, + { SC_(91.57439422607421875), SC_(42.181911468505859375), SC_(0.2890953760761297773378381780404253144942e-36) }, + { SC_(91.57439422607421875), SC_(42.21454620361328125), SC_(0.2783384487738209862795217197037540509547e-36) }, + { SC_(91.57439422607421875), SC_(47.481121063232421875), SC_(0.7614775287367129874958710602199698072684e-39) }, + { SC_(91.57439422607421875), SC_(48.5427093505859375), SC_(0.2434694491043605610144347719943110932891e-39) }, + { SC_(91.57439422607421875), SC_(50.371234893798828125), SC_(0.3540192114189173860443332934892982562048e-40) }, + { SC_(91.57439422607421875), SC_(54.69268035888671875), SC_(0.4397873540185968456806946696282678771915e-42) }, + { SC_(91.57439422607421875), SC_(54.72658538818359375), SC_(0.4252811966170535630563152219271161563122e-42) }, + { SC_(91.57439422607421875), SC_(63.23960113525390625), SC_(0.1387338657508184049289363195729591914547e-45) }, + { SC_(91.57439422607421875), SC_(63.979938507080078125), SC_(0.7143876664953313208522223512969477953641e-46) }, + { SC_(91.57439422607421875), SC_(65.55123138427734375), SC_(0.1776022773281507621803221289719351993831e-46) }, + { SC_(91.57439422607421875), SC_(65.57750701904296875), SC_(0.1735493520082022484985983592235061050473e-46) }, + { SC_(91.57439422607421875), SC_(67.8767242431640625), SC_(0.2357281457853577058963436617172984809275e-47) }, + { SC_(91.57439422607421875), SC_(68.13913726806640625), SC_(0.1882454513763627804901433352969232008561e-47) }, + { SC_(91.57439422607421875), SC_(72.586639404296875), SC_(0.4535877931679929792432487287008404385743e-49) }, + { SC_(91.57439422607421875), SC_(74.06732177734375), SC_(0.1358525430545754354609525893472542656506e-49) }, + { SC_(91.57439422607421875), SC_(74.31581878662109375), SC_(0.1111486493088466696790884396692810846827e-49) }, + { SC_(91.57439422607421875), SC_(75.77643585205078125), SC_(0.3448321705588470234434606033967803277229e-50) }, + { SC_(91.57439422607421875), SC_(79.222808837890625), SC_(0.2315844857331795329047057215785847247846e-51) }, + { SC_(91.57439422607421875), SC_(79.79488372802734375), SC_(0.1491036308295621094996325590322112800078e-51) }, + { SC_(91.57439422607421875), SC_(79.81259918212890625), SC_(0.1470896294508687934742891272432906104365e-51) }, + { SC_(91.57439422607421875), SC_(80.0300445556640625), SC_(0.1244981067933576559086432673332602776521e-51) }, + { SC_(91.57439422607421875), SC_(81.47422027587890625), SC_(0.4146352704752541684091438354561835506983e-52) }, + { SC_(91.57439422607421875), SC_(83.50250244140625), SC_(0.9058009037610395963133512692893437119735e-53) }, + { SC_(91.57439422607421875), SC_(84.9144439697265625), SC_(0.3190355009823034603531416361565286345613e-53) }, + { SC_(91.57439422607421875), SC_(87.8442840576171875), SC_(0.3804716173919904305857357262299375491977e-54) }, + { SC_(91.57439422607421875), SC_(90.58013916015625), SC_(0.5466414219116905824420172246002674823816e-55) }, + { SC_(91.57439422607421875), SC_(91.3384552001953125), SC_(0.3216648303977114232987860336497608448275e-55) }, + { SC_(91.57439422607421875), SC_(91.57439422607421875), SC_(0.2729177138775994163169868885602168903127e-55) }, + { SC_(93.3999786376953125), SC_(0.4883005917072296142578125), SC_(0.1982255363359006198333654943182370545281) }, + { SC_(93.3999786376953125), SC_(3.5808107852935791015625), SC_(0.3048348847123697654791773331800935358893e-6) }, + { SC_(93.3999786376953125), SC_(9.76306438446044921875), SC_(0.7944931620255308744712225111901409993675e-14) }, + { SC_(93.3999786376953125), SC_(10.9950771331787109375), SC_(0.4407447940120500671113596338614725202588e-15) }, + { SC_(93.3999786376953125), SC_(11.2553272247314453125), SC_(0.243427418582804473173835221835278199753e-15) }, + { SC_(93.3999786376953125), SC_(12.70741176605224609375), SC_(0.9797763427234779194448404344077480942564e-17) }, + { SC_(93.3999786376953125), SC_(13.55634593963623046875), SC_(0.1609774606931157029626834547792379834103e-17) }, + { SC_(93.3999786376953125), SC_(14.19721508026123046875), SC_(0.4252638575755846015185315383963448631463e-18) }, + { SC_(93.3999786376953125), SC_(15.76973247528076171875), SC_(0.1807581995684504016683613902070310397356e-19) }, + { SC_(93.3999786376953125), SC_(17.126956939697265625), SC_(0.1325097381754107220929911438356673225001e-20) }, + { SC_(93.3999786376953125), SC_(17.394779205322265625), SC_(0.8003075710059091979211159297351548524552e-21) }, + { SC_(93.3999786376953125), SC_(18.8463134765625), SC_(0.5531367413457038231423809551111320202114e-22) }, + { SC_(93.3999786376953125), SC_(21.200313568115234375), SC_(0.887258850166359765292386218064515380851e-24) }, + { SC_(93.3999786376953125), SC_(22.111194610595703125), SC_(0.1904779485049161591555924988881399120058e-24) }, + { SC_(93.3999786376953125), SC_(27.8570384979248046875), SC_(0.2251982290248516805787439222684205214001e-28) }, + { SC_(93.3999786376953125), SC_(29.709972381591796875), SC_(0.1507534420627041778642131667603474984716e-29) }, + { SC_(93.3999786376953125), SC_(30.198291778564453125), SC_(0.7505811143177190665397075240071208343859e-30) }, + { SC_(93.3999786376953125), SC_(30.8236217498779296875), SC_(0.3100316819689687052644593400086679666327e-30) }, + { SC_(93.3999786376953125), SC_(36.1357879638671875), SC_(0.245403197526189430120556645378886238566e-33) }, + { SC_(93.3999786376953125), SC_(39.228778839111328125), SC_(0.5037162980632426328263254807767759119959e-35) }, + { SC_(93.3999786376953125), SC_(39.8798675537109375), SC_(0.2274335844452889215296285006999497012039e-35) }, + { SC_(93.3999786376953125), SC_(42.181911468505859375), SC_(0.145136649947963535423367411976802524035e-36) }, + { SC_(93.3999786376953125), SC_(42.21454620361328125), SC_(0.1396742427519591055091740678791220667922e-36) }, + { SC_(93.3999786376953125), SC_(47.481121063232421875), SC_(0.3561892916494657690694956573027102175902e-39) }, + { SC_(93.3999786376953125), SC_(48.5427093505859375), SC_(0.1123197627939331047542737493605024755364e-39) }, + { SC_(93.3999786376953125), SC_(50.371234893798828125), SC_(0.1595103260620832406796421157207072024258e-40) }, + { SC_(93.3999786376953125), SC_(54.69268035888671875), SC_(0.1876268540666487453131985285653947295439e-42) }, + { SC_(93.3999786376953125), SC_(54.72658538818359375), SC_(0.18136154017497838542391223743190117282e-42) }, + { SC_(93.3999786376953125), SC_(63.23960113525390625), SC_(0.5337427541469670450160851367352551854997e-46) }, + { SC_(93.3999786376953125), SC_(63.979938507080078125), SC_(0.2724651998134454323150298144738154485133e-46) }, + { SC_(93.3999786376953125), SC_(65.55123138427734375), SC_(0.6650863538289886368886061186330234822397e-47) }, + { SC_(93.3999786376953125), SC_(65.57750701904296875), SC_(0.6497110846783437254635265110483248912834e-47) }, + { SC_(93.3999786376953125), SC_(67.8767242431640625), SC_(0.8594545664711613682852510543932503931504e-48) }, + { SC_(93.3999786376953125), SC_(68.13913726806640625), SC_(0.6842827630540105361300376079936899010011e-48) }, + { SC_(93.3999786376953125), SC_(72.586639404296875), SC_(0.1568380540042083567154412624754148075202e-49) }, + { SC_(93.3999786376953125), SC_(74.06732177734375), SC_(0.4621218016408790142797423480469096525401e-50) }, + { SC_(93.3999786376953125), SC_(74.31581878662109375), SC_(0.3770572393102964961333036196847228171358e-50) }, + { SC_(93.3999786376953125), SC_(75.77643585205078125), SC_(0.1151271634353041124545953774592457969677e-50) }, + { SC_(93.3999786376953125), SC_(79.222808837890625), SC_(0.7450013505993534718861545831896531824095e-52) }, + { SC_(93.3999786376953125), SC_(79.79488372802734375), SC_(0.4767503767147541332059049390422105014464e-52) }, + { SC_(93.3999786376953125), SC_(79.81259918212890625), SC_(0.4702221897718696492668207462066215052959e-52) }, + { SC_(93.3999786376953125), SC_(80.0300445556640625), SC_(0.3970826844566220651671196009133615706364e-52) }, + { SC_(93.3999786376953125), SC_(81.47422027587890625), SC_(0.130243442067394722976530022184815587328e-52) }, + { SC_(93.3999786376953125), SC_(83.50250244140625), SC_(0.2785514432032841415297808275883416127784e-53) }, + { SC_(93.3999786376953125), SC_(84.9144439697265625), SC_(0.9668479467354073342720682477999123544985e-54) }, + { SC_(93.3999786376953125), SC_(87.8442840576171875), SC_(0.111896857096814607185282315659919085558e-54) }, + { SC_(93.3999786376953125), SC_(90.58013916015625), SC_(0.1563965179393764724403381222401276579183e-55) }, + { SC_(93.3999786376953125), SC_(91.3384552001953125), SC_(0.9133595171077484562797806011631253444486e-56) }, + { SC_(93.3999786376953125), SC_(91.57439422607421875), SC_(0.7731258098273230390732833311307760117268e-56) }, + { SC_(93.3999786376953125), SC_(93.3999786376953125), SC_(0.2150911004484340968624628497669455352955e-56) }, + { SC_(95.71712493896484375), SC_(0.4883005917072296142578125), SC_(0.1958612937462853866670505872376444758037) }, + { SC_(95.71712493896484375), SC_(3.5808107852935791015625), SC_(0.2795526781459300034794789491461573239832e-6) }, + { SC_(95.71712493896484375), SC_(9.76306438446044921875), SC_(0.6319827314025988520125025131195752492111e-14) }, + { SC_(95.71712493896484375), SC_(10.9950771331787109375), SC_(0.3411382895765660760326869040945937458253e-15) }, + { SC_(95.71712493896484375), SC_(11.2553272247314453125), SC_(0.187336670719184623224031540478995760149e-15) }, + { SC_(95.71712493896484375), SC_(12.70741176605224609375), SC_(0.7304647125154958107285198014353028149697e-17) }, + { SC_(95.71712493896484375), SC_(13.55634593963623046875), SC_(0.1178330493832334201752203845616691778314e-17) }, + { SC_(95.71712493896484375), SC_(14.19721508026123046875), SC_(0.3070331283817424157745533395225338625223e-18) }, + { SC_(95.71712493896484375), SC_(15.76973247528076171875), SC_(0.1262152034764366886405102114047031664505e-19) }, + { SC_(95.71712493896484375), SC_(17.126956939697265625), SC_(0.8992935129848626346440775242957429248005e-21) }, + { SC_(95.71712493896484375), SC_(17.394779205322265625), SC_(0.5401189485084217227591118906782029665203e-21) }, + { SC_(95.71712493896484375), SC_(18.8463134765625), SC_(0.3622790108636507470012759967003173826008e-22) }, + { SC_(95.71712493896484375), SC_(21.200313568115234375), SC_(0.5539810314389977561486358910845018288565e-24) }, + { SC_(95.71712493896484375), SC_(22.111194610595703125), SC_(0.1167797155038925238257262537165612966613e-24) }, + { SC_(95.71712493896484375), SC_(27.8570384979248046875), SC_(0.1234538579417963149455519808138014224178e-28) }, + { SC_(95.71712493896484375), SC_(29.709972381591796875), SC_(0.798044332739638163697860703236619286346e-30) }, + { SC_(95.71712493896484375), SC_(30.198291778564453125), SC_(0.3937266001538524262031189639275704113025e-30) }, + { SC_(95.71712493896484375), SC_(30.8236217498779296875), SC_(0.1607501540837465858124885598680391075788e-30) }, + { SC_(95.71712493896484375), SC_(36.1357879638671875), SC_(0.1155323451236517074469775900984519894451e-33) }, + { SC_(95.71712493896484375), SC_(39.228778839111328125), SC_(0.2245853785350168020368903295596264981656e-35) }, + { SC_(95.71712493896484375), SC_(39.8798675537109375), SC_(0.1002642702123102029581631910712813469347e-35) }, + { SC_(95.71712493896484375), SC_(42.181911468505859375), SC_(0.6150625537910516680329468631264573753664e-37) }, + { SC_(95.71712493896484375), SC_(42.21454620361328125), SC_(0.5915854578222953012630113938059855885844e-37) }, + { SC_(95.71712493896484375), SC_(47.481121063232421875), SC_(0.1381727502929324101622481704385440420016e-39) }, + { SC_(95.71712493896484375), SC_(48.5427093505859375), SC_(0.4282309290135856744959446153099799801001e-40) }, + { SC_(95.71712493896484375), SC_(50.371234893798828125), SC_(0.5904576098699108462396587936852580372203e-41) }, + { SC_(95.71712493896484375), SC_(54.69268035888671875), SC_(0.6486734652082330797633828138967459191133e-43) }, + { SC_(95.71712493896484375), SC_(54.72658538818359375), SC_(0.6266816544220370709600319317263502145554e-43) }, + { SC_(95.71712493896484375), SC_(63.23960113525390625), SC_(0.1621217241796618005573311807843795670849e-46) }, + { SC_(95.71712493896484375), SC_(63.979938507080078125), SC_(0.8186437561844769226113467307751166378783e-47) }, + { SC_(95.71712493896484375), SC_(65.55123138427734375), SC_(0.1953016327354509801016332734517790360394e-47) }, + { SC_(95.71712493896484375), SC_(65.57750701904296875), SC_(0.1907139491285531983255952523783208874711e-47) }, + { SC_(95.71712493896484375), SC_(67.8767242431640625), SC_(0.2440587254167407261861523823804438539835e-48) }, + { SC_(95.71712493896484375), SC_(68.13913726806640625), SC_(0.1935876217283318573285750447503848038377e-48) }, + { SC_(95.71712493896484375), SC_(72.586639404296875), SC_(0.4167455211150315214012871020390066862114e-50) }, + { SC_(95.71712493896484375), SC_(74.06732177734375), SC_(0.1203022914599727808981124467085639117685e-50) }, + { SC_(95.71712493896484375), SC_(74.31581878662109375), SC_(0.9782242302139421480958009769037852231712e-51) }, + { SC_(95.71712493896484375), SC_(75.77643585205078125), SC_(0.2927634095124153206407215888311007236938e-51) }, + { SC_(95.71712493896484375), SC_(79.222808837890625), SC_(0.1808337253028244320747757824403505974525e-52) }, + { SC_(95.71712493896484375), SC_(79.79488372802734375), SC_(0.1148408891482121788386520874800054343549e-52) }, + { SC_(95.71712493896484375), SC_(79.81259918212890625), SC_(0.1132416221522481879206782975456833362105e-52) }, + { SC_(95.71712493896484375), SC_(80.0300445556640625), SC_(0.9535119973809504999283650011787364540847e-53) }, + { SC_(95.71712493896484375), SC_(81.47422027587890625), SC_(0.3068225802929165875533023723044203778732e-53) }, + { SC_(95.71712493896484375), SC_(83.50250244140625), SC_(0.6389624269281943833658990615177800255416e-54) }, + { SC_(95.71712493896484375), SC_(84.9144439697265625), SC_(0.2177496637051547788277773911322947434509e-54) }, + { SC_(95.71712493896484375), SC_(87.8442840576171875), SC_(0.2427038086127861758713800848298227068534e-55) }, + { SC_(95.71712493896484375), SC_(90.58013916015625), SC_(0.327689856295295283590810921484958377767e-56) }, + { SC_(95.71712493896484375), SC_(91.3384552001953125), SC_(0.1895627925754003898454001540597248499817e-56) }, + { SC_(95.71712493896484375), SC_(91.57439422607421875), SC_(0.1599858780429672377073913285714056263668e-56) }, + { SC_(95.71712493896484375), SC_(93.3999786376953125), SC_(0.4351165416176258271640505879699685991516e-57) }, + { SC_(95.71712493896484375), SC_(95.71712493896484375), SC_(0.8555115061676188872360066699400472474249e-58) }, + { SC_(95.75110626220703125), SC_(0.4883005917072296142578125), SC_(0.1958272583448433022567243257607910510125) }, + { SC_(95.75110626220703125), SC_(3.5808107852935791015625), SC_(0.2792022677841334872320311878809976322667e-6) }, + { SC_(95.75110626220703125), SC_(9.76306438446044921875), SC_(0.6298903028047241987593842609904837630376e-14) }, + { SC_(95.75110626220703125), SC_(10.9950771331787109375), SC_(0.3398740619934898100111567805034035940667e-15) }, + { SC_(95.75110626220703125), SC_(11.2553272247314453125), SC_(0.1866268996673116857863444788279807786467e-15) }, + { SC_(95.75110626220703125), SC_(12.70741176605224609375), SC_(0.7273623337854934229120080452157587296511e-17) }, + { SC_(95.75110626220703125), SC_(13.55634593963623046875), SC_(0.1173013664121982581449851371123114994817e-17) }, + { SC_(95.75110626220703125), SC_(14.19721508026123046875), SC_(0.30558674385622086666633850536858115058e-18) }, + { SC_(95.75110626220703125), SC_(15.76973247528076171875), SC_(0.1255597337585482682724852571324672254394e-19) }, + { SC_(95.75110626220703125), SC_(17.126956939697265625), SC_(0.8942538697593621138847359747015862835584e-21) }, + { SC_(95.75110626220703125), SC_(17.394779205322265625), SC_(0.537048671233575264678315147672266065692e-21) }, + { SC_(95.75110626220703125), SC_(18.8463134765625), SC_(0.3600629424874982730347916096502153004189e-22) }, + { SC_(95.75110626220703125), SC_(21.200313568115234375), SC_(0.5502103122119598946056513971754344919386e-24) }, + { SC_(95.75110626220703125), SC_(22.111194610595703125), SC_(0.1159541352010232229787539147175765740433e-24) }, + { SC_(95.75110626220703125), SC_(27.8570384979248046875), SC_(0.1223821303217470749245148990082631867556e-28) }, + { SC_(95.75110626220703125), SC_(29.709972381591796875), SC_(0.7907147883076017902600445973645466900695e-30) }, + { SC_(95.75110626220703125), SC_(30.198291778564453125), SC_(0.3900587588221324833412406456696173554691e-30) }, + { SC_(95.75110626220703125), SC_(30.8236217498779296875), SC_(0.1592257432820653696248351376832443223182e-30) }, + { SC_(95.75110626220703125), SC_(36.1357879638671875), SC_(0.1142763385771067218774826138892134908781e-33) }, + { SC_(95.75110626220703125), SC_(39.228778839111328125), SC_(0.2219682067493198976723001964413772811634e-35) }, + { SC_(95.75110626220703125), SC_(39.8798675537109375), SC_(0.9907959096691913552327790809802600302056e-36) }, + { SC_(95.75110626220703125), SC_(42.181911468505859375), SC_(0.6074464133261211503598257336743745677665e-37) }, + { SC_(95.75110626220703125), SC_(42.21454620361328125), SC_(0.584255312917498326591618516099175030264e-37) }, + { SC_(95.75110626220703125), SC_(47.481121063232421875), SC_(0.1362864490213430044081197746769450477229e-39) }, + { SC_(95.75110626220703125), SC_(48.5427093505859375), SC_(0.4222784656174528520922864528346843018813e-40) }, + { SC_(95.75110626220703125), SC_(50.371234893798828125), SC_(0.5820001868844469616948900822991346978747e-41) }, + { SC_(95.75110626220703125), SC_(54.69268035888671875), SC_(0.6387470483054856355222749836785450682175e-43) }, + { SC_(95.75110626220703125), SC_(54.72658538818359375), SC_(0.617087028721888520739571877553640087954e-43) }, + { SC_(95.75110626220703125), SC_(63.23960113525390625), SC_(0.1593403578862215779348633288808025679493e-46) }, + { SC_(95.75110626220703125), SC_(63.979938507080078125), SC_(0.8044716517769496846287445212691748700436e-47) }, + { SC_(95.75110626220703125), SC_(65.55123138427734375), SC_(0.191856595226569630389126054800064417525e-47) }, + { SC_(95.75110626220703125), SC_(65.57750701904296875), SC_(0.1873487960931490153645373512786993915205e-47) }, + { SC_(95.75110626220703125), SC_(67.8767242431640625), SC_(0.2396366715874924434309004992750252418144e-48) }, + { SC_(95.75110626220703125), SC_(68.13913726806640625), SC_(0.1900696614081896485479296505604555437459e-48) }, + { SC_(95.75110626220703125), SC_(72.586639404296875), SC_(0.4087989545023262098103047887403514114359e-50) }, + { SC_(95.75110626220703125), SC_(74.06732177734375), SC_(0.1179731287755021227523794940710135841589e-50) }, + { SC_(95.75110626220703125), SC_(74.31581878662109375), SC_(0.9592371021507416046883861475148171557577e-51) }, + { SC_(95.75110626220703125), SC_(75.77643585205078125), SC_(0.2869972657312287673843707877655235853597e-51) }, + { SC_(95.75110626220703125), SC_(79.222808837890625), SC_(0.1771519488377668590029585845348777299518e-52) }, + { SC_(95.75110626220703125), SC_(79.79488372802734375), SC_(0.1124902124698094260727811091952427459392e-52) }, + { SC_(95.75110626220703125), SC_(79.81259918212890625), SC_(0.1109232993595504682983943957884088683366e-52) }, + { SC_(95.75110626220703125), SC_(80.0300445556640625), SC_(0.933951960115410238051392757339143936315e-53) }, + { SC_(95.75110626220703125), SC_(81.47422027587890625), SC_(0.3004447278895212499476127335329335526898e-53) }, + { SC_(95.75110626220703125), SC_(83.50250244140625), SC_(0.6254378536008273694332309410347235210185e-54) }, + { SC_(95.75110626220703125), SC_(84.9144439697265625), SC_(0.2130836915110804063388540835777654599681e-54) }, + { SC_(95.75110626220703125), SC_(87.8442840576171875), SC_(0.2373729501390924817514946220850705204791e-55) }, + { SC_(95.75110626220703125), SC_(90.58013916015625), SC_(0.3203308228406139112780836134273155569651e-56) }, + { SC_(95.75110626220703125), SC_(91.3384552001953125), SC_(0.1852800778056486892736702296739917053461e-56) }, + { SC_(95.75110626220703125), SC_(91.57439422607421875), SC_(0.1563646671370120390104209684590361948119e-56) }, + { SC_(95.75110626220703125), SC_(93.3999786376953125), SC_(0.4251273528343500183972668460562201885033e-57) }, + { SC_(95.75110626220703125), SC_(95.71712493896484375), SC_(0.8355243879886803003872320358065697696464e-58) }, + { SC_(95.75110626220703125), SC_(95.75110626220703125), SC_(0.8159992901278045745070547063076515433519e-58) }, + { SC_(95.94964599609375), SC_(0.4883005917072296142578125), SC_(0.1956287623518351323492135668546498527241) }, + { SC_(95.94964599609375), SC_(3.5808107852935791015625), SC_(0.2771661483603026361950747150849950463058e-6) }, + { SC_(95.94964599609375), SC_(9.76306438446044921875), SC_(0.6178166995421319736490193041468134389232e-14) }, + { SC_(95.94964599609375), SC_(10.9950771331787109375), SC_(0.3325890945133611343988856418429368014602e-15) }, + { SC_(95.94964599609375), SC_(11.2553272247314453125), SC_(0.1825380778734475582234740813204697730925e-15) }, + { SC_(95.94964599609375), SC_(12.70741176605224609375), SC_(0.7095181356395849007082935810455332594699e-17) }, + { SC_(95.94964599609375), SC_(13.55634593963623046875), SC_(0.1142460014718883470977619774317584805582e-17) }, + { SC_(95.94964599609375), SC_(14.19721508026123046875), SC_(0.2972805829840956201549449665531738801012e-18) }, + { SC_(95.94964599609375), SC_(15.76973247528076171875), SC_(0.1218017424361435752042051220908665533679e-19) }, + { SC_(95.94964599609375), SC_(17.126956939697265625), SC_(0.8654005727702989143440349780457900494793e-21) }, + { SC_(95.94964599609375), SC_(17.394779205322265625), SC_(0.5194753331750895776935947696462583115774e-21) }, + { SC_(95.94964599609375), SC_(18.8463134765625), SC_(0.3473975127265553244380557067930288557088e-22) }, + { SC_(95.94964599609375), SC_(21.200313568115234375), SC_(0.528710198841786260366635508039554387254e-24) }, + { SC_(95.94964599609375), SC_(22.111194610595703125), SC_(0.1112510076396339455474891428848165687739e-24) }, + { SC_(95.94964599609375), SC_(27.8570384979248046875), SC_(0.1163102054587280521710906382266666068115e-28) }, + { SC_(95.94964599609375), SC_(29.709972381591796875), SC_(0.7492600736417034935662242397317080045565e-30) }, + { SC_(95.94964599609375), SC_(30.198291778564453125), SC_(0.3693233295312367167100282677865279127116e-30) }, + { SC_(95.94964599609375), SC_(30.8236217498779296875), SC_(0.1506127001910603959504283235384807591879e-30) }, + { SC_(95.94964599609375), SC_(36.1357879638671875), SC_(0.1072133236111718244504306661833643499337e-33) }, + { SC_(95.94964599609375), SC_(39.228778839111328125), SC_(0.2072900335739180529569977989018368824415e-35) }, + { SC_(95.94964599609375), SC_(39.8798675537109375), SC_(0.9243910017823532739416872815370477540041e-36) }, + { SC_(95.94964599609375), SC_(42.181911468505859375), SC_(0.5648381480549202558195863255880944204906e-37) }, + { SC_(95.94964599609375), SC_(42.21454620361328125), SC_(0.5432481563322187004743862759449975955294e-37) }, + { SC_(95.94964599609375), SC_(47.481121063232421875), SC_(0.1257792062865732453457349058320428815352e-39) }, + { SC_(95.94964599609375), SC_(48.5427093505859375), SC_(0.3891496282818875004982394169244937305909e-40) }, + { SC_(95.94964599609375), SC_(50.371234893798828125), SC_(0.5349978217317094498180349683420255620598e-41) }, + { SC_(95.94964599609375), SC_(54.69268035888671875), SC_(0.5837648629046510862777016090573506555719e-43) }, + { SC_(95.94964599609375), SC_(54.72658538818359375), SC_(0.5639440001865373534902328956312922704335e-43) }, + { SC_(95.94964599609375), SC_(63.23960113525390625), SC_(0.144031676571824685923689883901931442239e-46) }, + { SC_(95.94964599609375), SC_(63.979938507080078125), SC_(0.7265096582408809706522200863069595065583e-47) }, + { SC_(95.94964599609375), SC_(65.55123138427734375), SC_(0.1729263650924296011134754329482182955303e-47) }, + { SC_(95.94964599609375), SC_(65.57750701904296875), SC_(0.168857870047283378931727225723613968134e-47) }, + { SC_(95.94964599609375), SC_(67.8767242431640625), SC_(0.2153775765846799160265886514150423072571e-48) }, + { SC_(95.94964599609375), SC_(68.13913726806640625), SC_(0.1707739014287547879329887929035055119614e-48) }, + { SC_(95.94964599609375), SC_(72.586639404296875), SC_(0.365345866434913486578106909086474792752e-50) }, + { SC_(95.94964599609375), SC_(74.06732177734375), SC_(0.1052496400604499862279628679704094829987e-50) }, + { SC_(95.94964599609375), SC_(74.31581878662109375), SC_(0.8555336801156311473367828974179613702843e-51) }, + { SC_(95.94964599609375), SC_(75.77643585205078125), SC_(0.2555346466773751458707202568410965857949e-51) }, + { SC_(95.94964599609375), SC_(79.222808837890625), SC_(0.1571081526774239920994596738362843385499e-52) }, + { SC_(95.94964599609375), SC_(79.79488372802734375), SC_(0.9969776668379085980276570162739459961729e-53) }, + { SC_(95.94964599609375), SC_(79.81259918212890625), SC_(0.9830706965997595510761344359908188852005e-53) }, + { SC_(95.94964599609375), SC_(80.0300445556640625), SC_(0.8275219800588859306702772500149502427977e-53) }, + { SC_(95.94964599609375), SC_(81.47422027587890625), SC_(0.2657739901962015394485821679563405637604e-53) }, + { SC_(95.94964599609375), SC_(83.50250244140625), SC_(0.552012148493075403235294778464947205256e-54) }, + { SC_(95.94964599609375), SC_(84.9144439697265625), SC_(0.1877745217364519113138135373525694078061e-54) }, + { SC_(95.94964599609375), SC_(87.8442840576171875), SC_(0.2085103136451957567994201880163763030064e-55) }, + { SC_(95.94964599609375), SC_(90.58013916015625), SC_(0.2805542648593705808276806445675831150818e-56) }, + { SC_(95.94964599609375), SC_(91.3384552001953125), SC_(0.1621421469904344703921678104489355493962e-56) }, + { SC_(95.94964599609375), SC_(91.57439422607421875), SC_(0.1368034081933572383401454767131919269565e-56) }, + { SC_(95.94964599609375), SC_(93.3999786376953125), SC_(0.3712268005537924780220732885949633378334e-57) }, + { SC_(95.94964599609375), SC_(95.71712493896484375), SC_(0.7278256145893249061605674981848996894648e-58) }, + { SC_(95.94964599609375), SC_(95.75110626220703125), SC_(0.7107921979470294786117459955455319672693e-58) }, + { SC_(95.94964599609375), SC_(95.94964599609375), SC_(0.619021864627238598688787335593359432459e-58) }, + { SC_(96.48920440673828125), SC_(0.4883005917072296142578125), SC_(0.1950924051466989449017000667486992184465) }, + { SC_(96.48920440673828125), SC_(3.5808107852935791015625), SC_(0.2717278649333543352827457812348240500274e-6) }, + { SC_(96.48920440673828125), SC_(9.76306438446044921875), SC_(0.5862745560923609209753751072263020922623e-14) }, + { SC_(96.48920440673828125), SC_(10.9950771331787109375), SC_(0.3136377940185626181785200569467695104378e-15) }, + { SC_(96.48920440673828125), SC_(11.2553272247314453125), SC_(0.1719107724711344988399966026527563615884e-15) }, + { SC_(96.48920440673828125), SC_(12.70741176605224609375), SC_(0.6633668300925680470087610654114675040246e-17) }, + { SC_(96.48920440673828125), SC_(13.55634593963623046875), SC_(0.1063662224723418168876613101119000670713e-17) }, + { SC_(96.48920440673828125), SC_(14.19721508026123046875), SC_(0.2759046587179900583255824698188138965625e-18) }, + { SC_(96.48920440673828125), SC_(15.76973247528076171875), SC_(0.1121804994071281383729680488286057092949e-19) }, + { SC_(96.48920440673828125), SC_(17.126956939697265625), SC_(0.7918550248284054679250844733554605590736e-21) }, + { SC_(96.48920440673828125), SC_(17.394779205322265625), SC_(0.4747204639095093040592575894153598924135e-21) }, + { SC_(96.48920440673828125), SC_(18.8463134765625), SC_(0.3152912185258925028133314875118861884239e-22) }, + { SC_(96.48920440673828125), SC_(21.200313568115234375), SC_(0.4746100371223025142044196195261219362044e-24) }, + { SC_(96.48920440673828125), SC_(22.111194610595703125), SC_(0.9944998085342510397881705922990446686934e-25) }, + { SC_(96.48920440673828125), SC_(27.8570384979248046875), SC_(0.1013355538003887346252555463081357969011e-28) }, + { SC_(96.48920440673828125), SC_(29.709972381591796875), SC_(0.6475736233771152874484198212062568530559e-30) }, + { SC_(96.48920440673828125), SC_(30.198291778564453125), SC_(0.3185318021395004625020217772053012283981e-30) }, + { SC_(96.48920440673828125), SC_(30.8236217498779296875), SC_(0.129552806169342354164380396461491954498e-30) }, + { SC_(96.48920440673828125), SC_(36.1357879638671875), SC_(0.9019823513059575144520907679958667761669e-34) }, + { SC_(96.48920440673828125), SC_(39.228778839111328125), SC_(0.1722243178046887845030102822383146681675e-35) }, + { SC_(96.48920440673828125), SC_(39.8798675537109375), SC_(0.7660267171581016219954645276369696381744e-36) }, + { SC_(96.48920440673828125), SC_(42.181911468505859375), SC_(0.4638392559345469702960643784702962483204e-37) }, + { SC_(96.48920440673828125), SC_(42.21454620361328125), SC_(0.4460528253082247131191304690209954378875e-37) }, + { SC_(96.48920440673828125), SC_(47.481121063232421875), SC_(0.1012083725442225098053209142688444369529e-39) }, + { SC_(96.48920440673828125), SC_(48.5427093505859375), SC_(0.3118842804893383730475696101938463224699e-40) }, + { SC_(96.48920440673828125), SC_(50.371234893798828125), SC_(0.4258703955653264325239315625338259232966e-41) }, + { SC_(96.48920440673828125), SC_(54.69268035888671875), SC_(0.4574381842156284065886813919564595981417e-43) }, + { SC_(96.48920440673828125), SC_(54.72658538818359375), SC_(0.441852817869262947770711420494853413956e-43) }, + { SC_(96.48920440673828125), SC_(63.23960113525390625), SC_(0.1095473339532342418688355122405838149491e-46) }, + { SC_(96.48920440673828125), SC_(63.979938507080078125), SC_(0.551183701313686606826919431409971888349e-47) }, + { SC_(96.48920440673828125), SC_(65.55123138427734375), SC_(0.1305034219278945596347485069477257938514e-47) }, + { SC_(96.48920440673828125), SC_(65.57750701904296875), SC_(0.1274218241593238341008539199280682256581e-47) }, + { SC_(96.48920440673828125), SC_(67.8767242431640625), SC_(0.161289596451586020661699998936618910045e-48) }, + { SC_(96.48920440673828125), SC_(68.13913726806640625), SC_(0.1277767400182368506711726654082634422372e-48) }, + { SC_(96.48920440673828125), SC_(72.586639404296875), SC_(0.2694381659143886691505551743531114944943e-50) }, + { SC_(96.48920440673828125), SC_(74.06732177734375), SC_(0.7725436849689200324990350073197606708829e-51) }, + { SC_(96.48920440673828125), SC_(74.31581878662109375), SC_(0.6274755859902839624072325180824456706466e-51) }, + { SC_(96.48920440673828125), SC_(75.77643585205078125), SC_(0.1865542826721842099358623992065835429075e-51) }, + { SC_(96.48920440673828125), SC_(79.222808837890625), SC_(0.1134728139000098361482834208476411139645e-52) }, + { SC_(96.48920440673828125), SC_(79.79488372802734375), SC_(0.7188090154434496912891935763228735977602e-53) }, + { SC_(96.48920440673828125), SC_(79.81259918212890625), SC_(0.7087436583889044764943466519572370963901e-53) }, + { SC_(96.48920440673828125), SC_(80.0300445556640625), SC_(0.5962026111329111937165893839991327457121e-53) }, + { SC_(96.48920440673828125), SC_(81.47422027587890625), SC_(0.1906378629314120102222764469040039857255e-53) }, + { SC_(96.48920440673828125), SC_(83.50250244140625), SC_(0.3935304000108475308725126966554664396391e-54) }, + { SC_(96.48920440673828125), SC_(84.9144439697265625), SC_(0.1332991813789727337453621616402576883895e-54) }, + { SC_(96.48920440673828125), SC_(87.8442840576171875), SC_(0.1467398686569315925645114968524029348753e-55) }, + { SC_(96.48920440673828125), SC_(90.58013916015625), SC_(0.1958712950971776864670292626490330915968e-56) }, + { SC_(96.48920440673828125), SC_(91.3384552001953125), SC_(0.1129530515376272199914865535148109576072e-56) }, + { SC_(96.48920440673828125), SC_(91.57439422607421875), SC_(0.9523653634528990401319507668092925465881e-57) }, + { SC_(96.48920440673828125), SC_(93.3999786376953125), SC_(0.2570828073174600335465236408181392786201e-57) }, + { SC_(96.48920440673828125), SC_(95.71712493896484375), SC_(0.5007344274996466730364241359844582212556e-58) }, + { SC_(96.48920440673828125), SC_(95.75110626220703125), SC_(0.4889688322232414461118943712053370887259e-58) }, + { SC_(96.48920440673828125), SC_(95.94964599609375), SC_(0.4256000416916986069945761898236959246732e-58) }, + { SC_(96.48920440673828125), SC_(96.48920440673828125), SC_(0.2921720171675582966029341121120490471678e-58) }, + { SC_(96.76981353759765625), SC_(0.4883005917072296142578125), SC_(0.1948152265407357521987541585324521800118) }, + { SC_(96.76981353759765625), SC_(3.5808107852935791015625), SC_(0.2689534931382992992467562806456999671489e-6) }, + { SC_(96.76981353759765625), SC_(9.76306438446044921875), SC_(0.5705754595593429903103923701596418185315e-14) }, + { SC_(96.76981353759765625), SC_(10.9950771331787109375), SC_(0.3042501205657791740340774703137409953871e-15) }, + { SC_(96.76981353759765625), SC_(11.2553272247314453125), SC_(0.1666517028809878140149045956149340202053e-15) }, + { SC_(96.76981353759765625), SC_(12.70741176605224609375), SC_(0.6406540162176856543728443077483221157266e-17) }, + { SC_(96.76981353759765625), SC_(13.55634593963623046875), SC_(0.1025006599410194744929480325291486723003e-17) }, + { SC_(96.76981353759765625), SC_(14.19721508026123046875), SC_(0.265443438993853520941153154267265928806e-18) }, + { SC_(96.76981353759765625), SC_(15.76973247528076171875), SC_(0.107499290992587464801207510292538228812e-19) }, + { SC_(96.76981353759765625), SC_(17.126956939697265625), SC_(0.7562487775645747876591042152588598283551e-21) }, + { SC_(96.76981353759765625), SC_(17.394779205322265625), SC_(0.4530739786002132647291117885082776622207e-21) }, + { SC_(96.76981353759765625), SC_(18.8463134765625), SC_(0.2998435584153063931852652517077214742904e-22) }, + { SC_(96.76981353759765625), SC_(21.200313568115234375), SC_(0.4487969434133427272343054697058086258366e-24) }, + { SC_(96.76981353759765625), SC_(22.111194610595703125), SC_(0.9383724086711775125073842725085899088368e-25) }, + { SC_(96.76981353759765625), SC_(27.8570384979248046875), SC_(0.9435170038992475552161709410768063619769e-29) }, + { SC_(96.76981353759765625), SC_(29.709972381591796875), SC_(0.6004395114686521950938179838026100576564e-30) }, + { SC_(96.76981353759765625), SC_(30.198291778564453125), SC_(0.2950264298832113364581648248640622627246e-30) }, + { SC_(96.76981353759765625), SC_(30.8236217498779296875), SC_(0.1198265876557946651806500371614249164659e-30) }, + { SC_(96.76981353759765625), SC_(36.1357879638671875), SC_(0.8247244830976768430414639129102106515875e-34) }, + { SC_(96.76981353759765625), SC_(39.228778839111328125), SC_(0.1564545919216356796086641889515977642985e-35) }, + { SC_(96.76981353759765625), SC_(39.8798675537109375), SC_(0.69494905984786191514705793808924952979e-36) }, + { SC_(96.76981353759765625), SC_(42.181911468505859375), SC_(0.4188236049929081999552370287785787688156e-37) }, + { SC_(96.76981353759765625), SC_(42.21454620361328125), SC_(0.4027366865781063779778175031636715303012e-37) }, + { SC_(96.76981353759765625), SC_(47.481121063232421875), SC_(0.9042700963963893733032291838856111848815e-40) }, + { SC_(96.76981353759765625), SC_(48.5427093505859375), SC_(0.278085070806628059347145823222796605952e-40) }, + { SC_(96.76981353759765625), SC_(50.371234893798828125), SC_(0.3783824710231699022731671319375085987846e-41) }, + { SC_(96.76981353759765625), SC_(54.69268035888671875), SC_(0.4031281994473910342627096051190889631828e-43) }, + { SC_(96.76981353759765625), SC_(54.72658538818359375), SC_(0.3893686675857686610726772831560656961034e-43) }, + { SC_(96.76981353759765625), SC_(63.23960113525390625), SC_(0.9505941185367640085468096232452779834557e-47) }, + { SC_(96.76981353759765625), SC_(63.979938507080078125), SC_(0.4776665896444099804111132324739729214095e-47) }, + { SC_(96.76981353759765625), SC_(65.55123138427734375), SC_(0.1127873118108161915984406632320311886721e-47) }, + { SC_(96.76981353759765625), SC_(65.57750701904296875), SC_(0.1101190258408598579892100468189857502085e-47) }, + { SC_(96.76981353759765625), SC_(67.8767242431640625), SC_(0.1388367217940971976879096519843027414117e-48) }, + { SC_(96.76981353759765625), SC_(68.13913726806640625), SC_(0.1099398059134604832546239468169522498224e-48) }, + { SC_(96.76981353759765625), SC_(72.586639404296875), SC_(0.230094726284999357160962727972417028497e-50) }, + { SC_(96.76981353759765625), SC_(74.06732177734375), SC_(0.6581209876898357602565743596661422979145e-51) }, + { SC_(96.76981353759765625), SC_(74.31581878662109375), SC_(0.5343203615802812468189260149520673059494e-51) }, + { SC_(96.76981353759765625), SC_(75.77643585205078125), SC_(0.1584784583677569045392084462734519832871e-51) }, + { SC_(96.76981353759765625), SC_(79.222808837890625), SC_(0.9586008767743154530863954102625661517725e-53) }, + { SC_(96.76981353759765625), SC_(79.79488372802734375), SC_(0.6066840511800520719796372083573016544246e-53) }, + { SC_(96.76981353759765625), SC_(79.81259918212890625), SC_(0.5981718584448866230204687793669631519113e-53) }, + { SC_(96.76981353759765625), SC_(80.0300445556640625), SC_(0.5030140828107257499986763883964924736401e-53) }, + { SC_(96.76981353759765625), SC_(81.47422027587890625), SC_(0.1604724293943023019325635189547019534451e-53) }, + { SC_(96.76981353759765625), SC_(83.50250244140625), SC_(0.3302065549833145888583116505431130238776e-54) }, + { SC_(96.76981353759765625), SC_(84.9144439697265625), SC_(0.1116042505030367865250276449331785108149e-54) }, + { SC_(96.76981353759765625), SC_(87.8442840576171875), SC_(0.1223052201576829506345429100054871290255e-55) }, + { SC_(96.76981353759765625), SC_(90.58013916015625), SC_(0.162580606049382121654964373954744268549e-56) }, + { SC_(96.76981353759765625), SC_(91.3384552001953125), SC_(0.9364874369235504131275953258315803490491e-57) }, + { SC_(96.76981353759765625), SC_(91.57439422607421875), SC_(0.7893221674693384674243649239135480401164e-57) }, + { SC_(96.76981353759765625), SC_(93.3999786376953125), SC_(0.2124927943298933256033964255478814862369e-57) }, + { SC_(96.76981353759765625), SC_(95.71712493896484375), SC_(0.4124751068423772574824723272616699983396e-58) }, + { SC_(96.76981353759765625), SC_(95.75110626220703125), SC_(0.4027632948745520155210130577529313527919e-58) }, + { SC_(96.76981353759765625), SC_(95.94964599609375), SC_(0.3504647466578476749462484712620530770882e-58) }, + { SC_(96.76981353759765625), SC_(96.48920440673828125), SC_(0.2404027586450571740959779288466599279291e-58) }, + { SC_(96.76981353759765625), SC_(96.76981353759765625), SC_(0.1977255841377283879559877528514752974431e-58) }, + { SC_(96.88709259033203125), SC_(0.4883005917072296142578125), SC_(0.1946997363772370318946756889387610001458) }, + { SC_(96.88709259033203125), SC_(3.5808107852935791015625), SC_(0.2678046999334050596779900046684472967237e-6) }, + { SC_(96.88709259033203125), SC_(9.76306438446044921875), SC_(0.5641519296223731547288078117598813626315e-14) }, + { SC_(96.88709259033203125), SC_(10.9950771331787109375), SC_(0.3004178138953949345139564032577230888365e-15) }, + { SC_(96.88709259033203125), SC_(11.2553272247314453125), SC_(0.1645058395743123639766267363513768584305e-15) }, + { SC_(96.88709259033203125), SC_(12.70741176605224609375), SC_(0.631411162511050517100048245254655227968e-17) }, + { SC_(96.88709259033203125), SC_(13.55634593963623046875), SC_(0.1009300159646692270287488126742336828037e-17) }, + { SC_(96.88709259033203125), SC_(14.19721508026123046875), SC_(0.2611977826417062169247842302151840602745e-18) }, + { SC_(96.88709259033203125), SC_(15.76973247528076171875), SC_(0.1056047705489019709223537244376357511159e-19) }, + { SC_(96.88709259033203125), SC_(17.126956939697265625), SC_(0.7418731498132733136423739972483474942302e-21) }, + { SC_(96.88709259033203125), SC_(17.394779205322265625), SC_(0.4443385529515990574224354108141956760427e-21) }, + { SC_(96.88709259033203125), SC_(18.8463134765625), SC_(0.2936253946400793475855598908908068253858e-22) }, + { SC_(96.88709259033203125), SC_(21.200313568115234375), SC_(0.4384481832633096917042205312181662728843e-24) }, + { SC_(96.88709259033203125), SC_(22.111194610595703125), SC_(0.9159049118867499261113276934594868336961e-25) }, + { SC_(96.88709259033203125), SC_(27.8570384979248046875), SC_(0.9158240265167760695803353044671510546425e-29) }, + { SC_(96.88709259033203125), SC_(29.709972381591796875), SC_(0.5818046888475434166220892965713853835248e-30) }, + { SC_(96.88709259033203125), SC_(30.198291778564453125), SC_(0.2857405816877092702390708125357612593469e-30) }, + { SC_(96.88709259033203125), SC_(30.8236217498779296875), SC_(0.1159880069042924026398646408321803195933e-30) }, + { SC_(96.88709259033203125), SC_(36.1357879638671875), SC_(0.7944821282214607948124485834063946494151e-34) }, + { SC_(96.88709259033203125), SC_(39.228778839111328125), SC_(0.1503100277221035538854521190210304151139e-35) }, + { SC_(96.88709259033203125), SC_(39.8798675537109375), SC_(0.6672806974778201629932650616214467818927e-36) }, + { SC_(96.88709259033203125), SC_(42.181911468505859375), SC_(0.4013590993497824439137117575258656638588e-37) }, + { SC_(96.88709259033203125), SC_(42.21454620361328125), SC_(0.3859323255094660788001218125783392428361e-37) }, + { SC_(96.88709259033203125), SC_(47.481121063232421875), SC_(0.8627557116494787615651036338846119467097e-40) }, + { SC_(96.88709259033203125), SC_(48.5427093505859375), SC_(0.2650896325583714552057937112670209193348e-40) }, + { SC_(96.88709259033203125), SC_(50.371234893798828125), SC_(0.3601697486754099740757731103711776248588e-41) }, + { SC_(96.88709259033203125), SC_(54.69268035888671875), SC_(0.3824200826228540698283609939035529033419e-43) }, + { SC_(96.88709259033203125), SC_(54.72658538818359375), SC_(0.3693576340599127123847712559587695438369e-43) }, + { SC_(96.88709259033203125), SC_(63.23960113525390625), SC_(0.8959601851692969915269449006581388577563e-47) }, + { SC_(96.88709259033203125), SC_(63.979938507080078125), SC_(0.4499690960262540130401150246036833285692e-47) }, + { SC_(96.88709259033203125), SC_(65.55123138427734375), SC_(0.1061258701437910805410892869682476852227e-47) }, + { SC_(96.88709259033203125), SC_(65.57750701904296875), SC_(0.1036132061605808367758023854579595861897e-47) }, + { SC_(96.88709259033203125), SC_(67.8767242431640625), SC_(0.1304184055801628097151332540342105022823e-48) }, + { SC_(96.88709259033203125), SC_(68.13913726806640625), SC_(0.1032543057541976393918252233792078840445e-48) }, + { SC_(96.88709259033203125), SC_(72.586639404296875), SC_(0.2154273452186172248158844914622043970775e-50) }, + { SC_(96.88709259033203125), SC_(74.06732177734375), SC_(0.6155387186770676025123674407465797486882e-51) }, + { SC_(96.88709259033203125), SC_(74.31581878662109375), SC_(0.4996629351922480176509558398119080223368e-51) }, + { SC_(96.88709259033203125), SC_(75.77643585205078125), SC_(0.1480510671064668928440557932355192480909e-51) }, + { SC_(96.88709259033203125), SC_(79.222808837890625), SC_(0.8934479740108119020531008688620274748918e-53) }, + { SC_(96.88709259033203125), SC_(79.79488372802734375), SC_(0.565234049494744250254026964279929304894e-53) }, + { SC_(96.88709259033203125), SC_(79.81259918212890625), SC_(0.5572968547875253755164105545806434125242e-53) }, + { SC_(96.88709259033203125), SC_(80.0300445556640625), SC_(0.4685737122721820659491807662758913225917e-53) }, + { SC_(96.88709259033203125), SC_(81.47422027587890625), SC_(0.1493422927823523661392302027976517876334e-53) }, + { SC_(96.88709259033203125), SC_(83.50250244140625), SC_(0.3068953745111537742467831762826661288266e-54) }, + { SC_(96.88709259033203125), SC_(84.9144439697265625), SC_(0.1036303692026751496769577773639079697846e-54) }, + { SC_(96.88709259033203125), SC_(87.8442840576171875), SC_(0.1133533954850796006727406529099472350876e-55) }, + { SC_(96.88709259033203125), SC_(90.58013916015625), SC_(0.1504205713524074504711478814653597688767e-56) }, + { SC_(96.88709259033203125), SC_(91.3384552001953125), SC_(0.8660325684476023758955999247971847796836e-57) }, + { SC_(96.88709259033203125), SC_(91.57439422607421875), SC_(0.7298314501623853921738767959937079189304e-57) }, + { SC_(96.88709259033203125), SC_(93.3999786376953125), SC_(0.1962546799667820811325452751986273540234e-57) }, + { SC_(96.88709259033203125), SC_(95.71712493896484375), SC_(0.3804129358012369305518456268972677958305e-58) }, + { SC_(96.88709259033203125), SC_(95.75110626220703125), SC_(0.3714483266887392374154898736730053265301e-58) }, + { SC_(96.88709259033203125), SC_(95.94964599609375), SC_(0.3231768477658633471491904319468159978868e-58) }, + { SC_(96.88709259033203125), SC_(96.48920440673828125), SC_(0.2216116680068728328632206240070749707243e-58) }, + { SC_(96.88709259033203125), SC_(96.76981353759765625), SC_(0.1822392723890200150482909001881257465767e-58) }, + { SC_(96.88709259033203125), SC_(96.88709259033203125), SC_(0.1679539232371512048342514926334331701695e-58) }, + { SC_(97.0595703125), SC_(0.4883005917072296142578125), SC_(0.1945302679749215384194630747846990765057) }, + { SC_(97.0595703125), SC_(3.5808107852935791015625), SC_(0.2661265935754641409720107618255580905001e-6) }, + { SC_(97.0595703125), SC_(9.76306438446044921875), SC_(0.5548494675744855847150263642653869980827e-14) }, + { SC_(97.0595703125), SC_(10.9950771331787109375), SC_(0.2948771381265398501117067789117023824132e-15) }, + { SC_(97.0595703125), SC_(11.2553272247314453125), SC_(0.1614044726215787857881843571885220606182e-15) }, + { SC_(97.0595703125), SC_(12.70741176605224609375), SC_(0.6180784276767677012555656747456898319198e-17) }, + { SC_(97.0595703125), SC_(13.55634593963623046875), SC_(0.9866690311129039635109220471284820179288e-18) }, + { SC_(97.0595703125), SC_(14.19721508026123046875), SC_(0.255085409259551654596414892166862167584e-18) }, + { SC_(97.0595703125), SC_(15.76973247528076171875), SC_(0.1028828120659628573974172310812571898691e-19) }, + { SC_(97.0595703125), SC_(17.126956939697265625), SC_(0.7212546527588553473314327815777149351713e-21) }, + { SC_(97.0595703125), SC_(17.394779205322265625), SC_(0.4318138645062201094865854086704918299115e-21) }, + { SC_(97.0595703125), SC_(18.8463134765625), SC_(0.2847261620099861699881441020910348086442e-22) }, + { SC_(97.0595703125), SC_(21.200313568115234375), SC_(0.4236804215674618685432277626412195411086e-24) }, + { SC_(97.0595703125), SC_(22.111194610595703125), SC_(0.883879204107044376661905438787180216807e-25) }, + { SC_(97.0595703125), SC_(27.8570384979248046875), SC_(0.8766178313975159825257617917430479639004e-29) }, + { SC_(97.0595703125), SC_(29.709972381591796875), SC_(0.5554786584612312859935175562207904458628e-30) }, + { SC_(97.0595703125), SC_(30.198291778564453125), SC_(0.2726294488902353488600107325256056924079e-30) }, + { SC_(97.0595703125), SC_(30.8236217498779296875), SC_(0.1105719720382308488256040202923002606665e-30) }, + { SC_(97.0595703125), SC_(36.1357879638671875), SC_(0.7520621095793649822688619573583341171207e-34) }, + { SC_(97.0595703125), SC_(39.228778839111328125), SC_(0.1417197845108653542342161161577456266378e-35) }, + { SC_(97.0595703125), SC_(39.8798675537109375), SC_(0.6286263155287511541005357714245051412262e-36) }, + { SC_(97.0595703125), SC_(42.181911468505859375), SC_(0.3770188242810758713455450512942317628902e-37) }, + { SC_(97.0595703125), SC_(42.21454620361328125), SC_(0.3625128866104095996082486142570132304926e-37) }, + { SC_(97.0595703125), SC_(47.481121063232421875), SC_(0.805208442226389434959030776394075219652e-40) }, + { SC_(97.0595703125), SC_(48.5427093505859375), SC_(0.2470943729762974033445008842024873081415e-40) }, + { SC_(97.0595703125), SC_(50.371234893798828125), SC_(0.3349953301360302182024766452367383037216e-41) }, + { SC_(97.0595703125), SC_(54.69268035888671875), SC_(0.3539155481281801059297911173642986017435e-43) }, + { SC_(97.0595703125), SC_(54.72658538818359375), SC_(0.3418135165332345571089448684610331459916e-43) }, + { SC_(97.0595703125), SC_(63.23960113525390625), SC_(0.8213492888211688316277945585227816897769e-47) }, + { SC_(97.0595703125), SC_(63.979938507080078125), SC_(0.4121691129582407263737960165945556398754e-47) }, + { SC_(97.0595703125), SC_(65.55123138427734375), SC_(0.9704743192616243392639828266677757600011e-48) }, + { SC_(97.0595703125), SC_(65.57750701904296875), SC_(0.9474706146324829269259042891904457314699e-48) }, + { SC_(97.0595703125), SC_(67.8767242431640625), SC_(0.1189691089946195489847092903729925775947e-48) }, + { SC_(97.0595703125), SC_(68.13913726806640625), SC_(0.9416380272439421836130869497291522660107e-49) }, + { SC_(97.0595703125), SC_(72.586639404296875), SC_(0.1955598499834221034279377832239746779025e-50) }, + { SC_(97.0595703125), SC_(74.06732177734375), SC_(0.5579317135171404597204215115437109830459e-51) }, + { SC_(97.0595703125), SC_(74.31581878662109375), SC_(0.4527867814460037544812027240454480869504e-51) }, + { SC_(97.0595703125), SC_(75.77643585205078125), SC_(0.1339646651264966039826426126232256464256e-51) }, + { SC_(97.0595703125), SC_(79.222808837890625), SC_(0.8056827545258672918145339042770012334236e-53) }, + { SC_(97.0595703125), SC_(79.79488372802734375), SC_(0.5094242492502008710138005322840927382763e-53) }, + { SC_(97.0595703125), SC_(79.81259918212890625), SC_(0.5022620472752897038133257722278453724462e-53) }, + { SC_(97.0595703125), SC_(80.0300445556640625), SC_(0.4222108141173476935204816418632552688127e-53) }, + { SC_(97.0595703125), SC_(81.47422027587890625), SC_(0.1343766623192771161748928552681250688836e-53) }, + { SC_(97.0595703125), SC_(83.50250244140625), SC_(0.2756020313625997223793292592204483514254e-54) }, + { SC_(97.0595703125), SC_(84.9144439697265625), SC_(0.9293809364255564613588384628221594344024e-55) }, + { SC_(97.0595703125), SC_(87.8442840576171875), SC_(0.1013773672206444582282899466788725233266e-55) }, + { SC_(97.0595703125), SC_(90.58013916015625), SC_(0.1341868748943388448197588714127283141563e-56) }, + { SC_(97.0595703125), SC_(91.3384552001953125), SC_(0.772029639508145961376362796743006466135e-57) }, + { SC_(97.0595703125), SC_(91.57439422607421875), SC_(0.6504715132285477524731968923617274435609e-57) }, + { SC_(97.0595703125), SC_(93.3999786376953125), SC_(0.1746232403568640058922529353675414319456e-57) }, + { SC_(97.0595703125), SC_(95.71712493896484375), SC_(0.3377759349071231435408999360121563035879e-58) }, + { SC_(97.0595703125), SC_(95.75110626220703125), SC_(0.3298060297280345739739220834902783955583e-58) }, + { SC_(97.0595703125), SC_(95.94964599609375), SC_(0.2868950788262073423201587777831136785454e-58) }, + { SC_(97.0595703125), SC_(96.48920440673828125), SC_(0.1966372249840139513109325972873233816657e-58) }, + { SC_(97.0595703125), SC_(96.76981353759765625), SC_(0.16166136317761358066773921981210102242e-58) }, + { SC_(97.0595703125), SC_(96.88709259033203125), SC_(0.1489734825029423975026686957148379282877e-58) }, + { SC_(97.0595703125), SC_(97.0595703125), SC_(0.1321176989354913573623736701716802564625e-58) }, + { SC_(98.1111602783203125), SC_(0.4883005917072296142578125), SC_(0.1935066627474120472558320758914813374767) }, + { SC_(98.1111602783203125), SC_(3.5808107852935791015625), SC_(0.256181024072965929054173876677475918417e-6) }, + { SC_(98.1111602783203125), SC_(9.76306438446044921875), SC_(0.5016650866470711765903767669849032059033e-14) }, + { SC_(98.1111602783203125), SC_(10.9950771331787109375), SC_(0.2634171021893949187475518042578765877667e-15) }, + { SC_(98.1111602783203125), SC_(11.2553272247314453125), SC_(0.1438202536398864916519510935371594016485e-15) }, + { SC_(98.1111602783203125), SC_(12.70741176605224609375), SC_(0.5430847430777976582254316431872037278572e-17) }, + { SC_(98.1111602783203125), SC_(13.55634593963623046875), SC_(0.8599591513889749151762468300930755743703e-18) }, + { SC_(98.1111602783203125), SC_(14.19721508026123046875), SC_(0.22098064402509215472650653733613220324e-18) }, + { SC_(98.1111602783203125), SC_(15.76973247528076171875), SC_(0.8782194591742406421961903660512287714724e-20) }, + { SC_(98.1111602783203125), SC_(17.126956939697265625), SC_(0.6079799106552150593693258366394740603428e-21) }, + { SC_(98.1111602783203125), SC_(17.394779205322265625), SC_(0.3631010447035833430362007102753368585097e-21) }, + { SC_(98.1111602783203125), SC_(18.8463134765625), SC_(0.2362675252804932437130805104038067216904e-22) }, + { SC_(98.1111602783203125), SC_(21.200313568115234375), SC_(0.3442188295548572420322625530087819931016e-24) }, + { SC_(98.1111602783203125), SC_(22.111194610595703125), SC_(0.7123373431016690672217369384276128178593e-25) }, + { SC_(98.1111602783203125), SC_(27.8570384979248046875), SC_(0.6723604091715872573825658501430091246649e-29) }, + { SC_(98.1111602783203125), SC_(29.709972381591796875), SC_(0.4195038417872352388510781822193348027339e-30) }, + { SC_(98.1111602783203125), SC_(30.198291778564453125), SC_(0.2050623106536450166259869474314697906491e-30) }, + { SC_(98.1111602783203125), SC_(30.8236217498779296875), SC_(0.8274083806524569588179478423707132956362e-31) }, + { SC_(98.1111602783203125), SC_(36.1357879638671875), SC_(0.5391935958812577314326313595883836247141e-34) }, + { SC_(98.1111602783203125), SC_(39.228778839111328125), SC_(0.9918352240641253508489548819795498335466e-36) }, + { SC_(98.1111602783203125), SC_(39.8798675537109375), SC_(0.4377492600448805675756522603329027228272e-36) }, + { SC_(98.1111602783203125), SC_(42.181911468505859375), SC_(0.2579786136514120426740886734813945789918e-37) }, + { SC_(98.1111602783203125), SC_(42.21454620361328125), SC_(0.2479916810686126079236747491267918385238e-37) }, + { SC_(98.1111602783203125), SC_(47.481121063232421875), SC_(0.5297533669289502292498457818289769686709e-40) }, + { SC_(98.1111602783203125), SC_(48.5427093505859375), SC_(0.1613194942845270175890566359227296983256e-40) }, + { SC_(98.1111602783203125), SC_(50.371234893798828125), SC_(0.2158559710754402864258190710636483723561e-41) }, + { SC_(98.1111602783203125), SC_(54.69268035888671875), SC_(0.2212244012127210206032818463522958714767e-43) }, + { SC_(98.1111602783203125), SC_(54.72658538818359375), SC_(0.2136095225976588166546203905877947187857e-43) }, + { SC_(98.1111602783203125), SC_(63.23960113525390625), SC_(0.4846649596113343207436364604838991821481e-47) }, + { SC_(98.1111602783203125), SC_(63.979938507080078125), SC_(0.2420388707159532154724313888111839713547e-47) }, + { SC_(98.1111602783203125), SC_(65.55123138427734375), SC_(0.5641049634300151190013630184914628391489e-48) }, + { SC_(98.1111602783203125), SC_(65.57750701904296875), SC_(0.5506401111259409548132702669278221924024e-48) }, + { SC_(98.1111602783203125), SC_(67.8767242431640625), SC_(0.6812807405665682446762869153798683814086e-49) }, + { SC_(98.1111602783203125), SC_(68.13913726806640625), SC_(0.5383317253399370773418708638388918059846e-49) }, + { SC_(98.1111602783203125), SC_(72.586639404296875), SC_(0.1087213436623985587050017363623344369816e-50) }, + { SC_(98.1111602783203125), SC_(74.06732177734375), SC_(0.3073604301500408298256035890836723953163e-51) }, + { SC_(98.1111602783203125), SC_(74.31581878662109375), SC_(0.2490565938468363787196723573386575948028e-51) }, + { SC_(98.1111602783203125), SC_(75.77643585205078125), SC_(0.7303301503522218084130611537450635698103e-52) }, + { SC_(98.1111602783203125), SC_(79.222808837890625), SC_(0.4302068451250132306975710664761369878869e-53) }, + { SC_(98.1111602783203125), SC_(79.79488372802734375), SC_(0.2710899312796346326555942985714830343475e-53) }, + { SC_(98.1111602783203125), SC_(79.81259918212890625), SC_(0.2672504206231152257504208970243144122536e-53) }, + { SC_(98.1111602783203125), SC_(80.0300445556640625), SC_(0.2243656411037248846765225625306543917543e-53) }, + { SC_(98.1111602783203125), SC_(81.47422027587890625), SC_(0.7080143781537090666061777787505207786484e-54) }, + { SC_(98.1111602783203125), SC_(83.50250244140625), SC_(0.1434967847030488688832099447052693868917e-54) }, + { SC_(98.1111602783203125), SC_(84.9144439697265625), SC_(0.4799507294776988583397629285547262074929e-55) }, + { SC_(98.1111602783203125), SC_(87.8442840576171875), SC_(0.5148141570573856486284567960280041186368e-56) }, + { SC_(98.1111602783203125), SC_(90.58013916015625), SC_(0.6709846261246534971965389215393570488439e-57) }, + { SC_(98.1111602783203125), SC_(91.3384552001953125), SC_(0.3844101066203601893016977142655166560642e-57) }, + { SC_(98.1111602783203125), SC_(91.57439422607421875), SC_(0.3234577760139000419255394164365207003724e-57) }, + { SC_(98.1111602783203125), SC_(93.3999786376953125), SC_(0.859593854756204184646801841438165796618e-58) }, + { SC_(98.1111602783203125), SC_(95.71712493896484375), SC_(0.1641715835912447394230581374626904638775e-58) }, + { SC_(98.1111602783203125), SC_(95.75110626220703125), SC_(0.1602682106349217545029406784582903131698e-58) }, + { SC_(98.1111602783203125), SC_(95.94964599609375), SC_(0.1392649829534419471333702423040122803017e-58) }, + { SC_(98.1111602783203125), SC_(96.48920440673828125), SC_(0.9517213511531468002288195501658142038161e-59) }, + { SC_(98.1111602783203125), SC_(96.76981353759765625), SC_(0.7812476997078492053953923205042573837174e-59) }, + { SC_(98.1111602783203125), SC_(96.88709259033203125), SC_(0.7194742800486816107437516780353896346481e-59) }, + { SC_(98.1111602783203125), SC_(97.0595703125), SC_(0.637472410063552390013598808869318155059e-59) }, + { SC_(98.1111602783203125), SC_(98.1111602783203125), SC_(0.3058403181628040477705206656631460856795e-59) }, + { SC_(99.28820037841796875), SC_(0.4883005917072296142578125), SC_(0.1923801889698148564555113133181529465821) }, + { SC_(99.28820037841796875), SC_(3.5808107852935791015625), SC_(0.2456058267957174777784219379881498914239e-6) }, + { SC_(99.28820037841796875), SC_(9.76306438446044921875), SC_(0.4487063715912299987507631134717296332553e-14) }, + { SC_(99.28820037841796875), SC_(10.9950771331787109375), SC_(0.2324834326367966805728012621297649345672e-15) }, + { SC_(99.28820037841796875), SC_(11.2553272247314453125), SC_(0.1265759538782907580038284319841988342359e-15) }, + { SC_(99.28820037841796875), SC_(12.70741176605224609375), SC_(0.4706106361473389697972241486949299093979e-17) }, + { SC_(99.28820037841796875), SC_(13.55634593963623046875), SC_(0.7385400034640671358405378286945050157311e-18) }, + { SC_(99.28820037841796875), SC_(14.19721508026123046875), SC_(0.1885069686503451012000261467725021956534e-18) }, + { SC_(99.28820037841796875), SC_(15.76973247528076171875), SC_(0.7370109804769921726609676575407061224464e-20) }, + { SC_(99.28820037841796875), SC_(17.126956939697265625), SC_(0.5031628626150798715252350782948676310521e-21) }, + { SC_(99.28820037841796875), SC_(17.394779205322265625), SC_(0.2996823098234333070527581002091534813784e-21) }, + { SC_(99.28820037841796875), SC_(18.8463134765625), SC_(0.1921580648893461338294279877065559296991e-22) }, + { SC_(99.28820037841796875), SC_(21.200313568115234375), SC_(0.2734704683537269414427349238862154757344e-24) }, + { SC_(99.28820037841796875), SC_(22.111194610595703125), SC_(0.5608885813308113303238467949339443160041e-25) }, + { SC_(99.28820037841796875), SC_(27.8570384979248046875), SC_(0.5011235652947363206175620265387344160432e-29) }, + { SC_(99.28820037841796875), SC_(29.709972381591796875), SC_(0.3073401786713354783422887725101416154095e-30) }, + { SC_(99.28820037841796875), SC_(30.198291778564453125), SC_(0.1495620540966926716617150536398488282812e-30) }, + { SC_(99.28820037841796875), SC_(30.8236217498779296875), SC_(0.6000285909162521699145513938451272999869e-31) }, + { SC_(99.28820037841796875), SC_(36.1357879638671875), SC_(0.3728824838482918677081119334911335216199e-34) }, + { SC_(99.28820037841796875), SC_(39.228778839111328125), SC_(0.6677756301738910225632461391573321797407e-36) }, + { SC_(99.28820037841796875), SC_(39.8798675537109375), SC_(0.2930895735675009086333913631060316137677e-36) }, + { SC_(99.28820037841796875), SC_(42.181911468505859375), SC_(0.1693973226844383599343026700112298201101e-37) }, + { SC_(99.28820037841796875), SC_(42.21454620361328125), SC_(0.1627950248485107925341558091512505607137e-37) }, + { SC_(99.28820037841796875), SC_(47.481121063232421875), SC_(0.3330085748682566850832198233207190211534e-40) }, + { SC_(99.28820037841796875), SC_(48.5427093505859375), SC_(0.100544198747613052926826741785686040162e-40) }, + { SC_(99.28820037841796875), SC_(50.371234893798828125), SC_(0.13258788791152725425218388226321118472e-41) }, + { SC_(99.28820037841796875), SC_(54.69268035888671875), SC_(0.1313760815993720840074630127792678156268e-43) }, + { SC_(99.28820037841796875), SC_(54.72658538818359375), SC_(0.1268208149460242841570615298503569083989e-43) }, + { SC_(99.28820037841796875), SC_(63.23960113525390625), SC_(0.2699722575831307817738548548359756379651e-47) }, + { SC_(99.28820037841796875), SC_(63.979938507080078125), SC_(0.1340984575713132311018870497125866057476e-47) }, + { SC_(99.28820037841796875), SC_(65.55123138427734375), SC_(0.3090080415155883193340417037150280680446e-48) }, + { SC_(99.28820037841796875), SC_(65.57750701904296875), SC_(0.3015752429709854578886269646270253935988e-48) }, + { SC_(99.28820037841796875), SC_(67.8767242431640625), SC_(0.3670519419246049233823338020503401373984e-49) }, + { SC_(99.28820037841796875), SC_(68.13913726806640625), SC_(0.2894971682607291091939431947060909981003e-49) }, + { SC_(99.28820037841796875), SC_(72.586639404296875), SC_(0.5667883113650373201088271187179010685353e-51) }, + { SC_(99.28820037841796875), SC_(74.06732177734375), SC_(0.1586139142640112616833834090314449809671e-51) }, + { SC_(99.28820037841796875), SC_(74.31581878662109375), SC_(0.1283082308040487773071414199515968726889e-51) }, + { SC_(99.28820037841796875), SC_(75.77643585205078125), SC_(0.3725340302295850045660575298828474528915e-52) }, + { SC_(99.28820037841796875), SC_(79.222808837890625), SC_(0.2144355465309677392489605124634968707566e-53) }, + { SC_(99.28820037841796875), SC_(79.79488372802734375), SC_(0.1346130804601772321623396289758276611402e-53) }, + { SC_(99.28820037841796875), SC_(79.81259918212890625), SC_(0.1326909789369857461142602313715542831516e-53) }, + { SC_(99.28820037841796875), SC_(80.0300445556640625), SC_(0.1112385485022018184399973070181174192449e-53) }, + { SC_(99.28820037841796875), SC_(81.47422027587890625), SC_(0.3477087948041939844954947529993146996271e-54) }, + { SC_(99.28820037841796875), SC_(83.50250244140625), SC_(0.6954685857403899872345122255939827059672e-55) }, + { SC_(99.28820037841796875), SC_(84.9144439697265625), SC_(0.2305022368963792918374045440255573944972e-55) }, + { SC_(99.28820037841796875), SC_(87.8442840576171875), SC_(0.2426692524995680338063025963049576159969e-56) }, + { SC_(99.28820037841796875), SC_(90.58013916015625), SC_(0.3108954898182860056996723129347479880307e-57) }, + { SC_(99.28820037841796875), SC_(91.3384552001953125), SC_(0.177274951998617876622882773084236592574e-57) }, + { SC_(99.28820037841796875), SC_(91.57439422607421875), SC_(0.1489478524316917189142423131246550263379e-57) }, + { SC_(99.28820037841796875), SC_(93.3999786376953125), SC_(0.391395647520547062879698857559018774153e-58) }, + { SC_(99.28820037841796875), SC_(95.71712493896484375), SC_(0.7370139019861423249354768312525385658739e-59) }, + { SC_(99.28820037841796875), SC_(95.75110626220703125), SC_(0.7193421532242703379994350770733633272194e-59) }, + { SC_(99.28820037841796875), SC_(95.94964599609375), SC_(0.6243197059873241510274500477065543790757e-59) }, + { SC_(99.28820037841796875), SC_(96.48920440673828125), SC_(0.4252617027499467811810299417544006679444e-59) }, + { SC_(99.28820037841796875), SC_(96.76981353759765625), SC_(0.3484969370967557871486154959308680473194e-59) }, + { SC_(99.28820037841796875), SC_(96.88709259033203125), SC_(0.3207141270593581779254023249982845071696e-59) }, + { SC_(99.28820037841796875), SC_(97.0595703125), SC_(0.2838654062329006203358352082138793616487e-59) }, + { SC_(99.28820037841796875), SC_(98.1111602783203125), SC_(0.135331897584667014131258701945417599616e-59) }, + { SC_(99.28820037841796875), SC_(99.28820037841796875), SC_(0.5946341007968227163535653640336744451921e-60) }, + { SC_(99.64617156982421875), SC_(0.4883005917072296142578125), SC_(0.1920415401866252505960149155087364700429) }, + { SC_(99.64617156982421875), SC_(3.5808107852935791015625), SC_(0.2425007447493048943965527355796496259445e-6) }, + { SC_(99.64617156982421875), SC_(9.76306438446044921875), SC_(0.4338463329689989369521219399698331619339e-14) }, + { SC_(99.64617156982421875), SC_(10.9950771331787109375), SC_(0.2238793620730317918365780183630913591486e-15) }, + { SC_(99.64617156982421875), SC_(11.2553272247314453125), SC_(0.1217883523395548244503225558455778824065e-15) }, + { SC_(99.64617156982421875), SC_(12.70741176605224609375), SC_(0.4506937720795369966253108234128095796053e-17) }, + { SC_(99.64617156982421875), SC_(13.55634593963623046875), SC_(0.7053692076383500412728910873848177350615e-18) }, + { SC_(99.64617156982421875), SC_(14.19721508026123046875), SC_(0.1796747134889476173979330386276389059013e-18) }, + { SC_(99.64617156982421875), SC_(15.76973247528076171875), SC_(0.6990175412575383911153375435413556806998e-20) }, + { SC_(99.64617156982421875), SC_(17.126956939697265625), SC_(0.475219770637311911218530901770424242484e-21) }, + { SC_(99.64617156982421875), SC_(17.394779205322265625), SC_(0.2828061146103015181288433756774729344582e-21) }, + { SC_(99.64617156982421875), SC_(18.8463134765625), SC_(0.1805339957483893466812493111272198920639e-22) }, + { SC_(99.64617156982421875), SC_(21.200313568115234375), SC_(0.2551145044678329055180101519714681369991e-24) }, + { SC_(99.64617156982421875), SC_(22.111194610595703125), SC_(0.521827937109776436392706852004371656104e-25) }, + { SC_(99.64617156982421875), SC_(27.8570384979248046875), SC_(0.4585509723284941456360070341222362036382e-29) }, + { SC_(99.64617156982421875), SC_(29.709972381591796875), SC_(0.2797738978507146557808496231858841269347e-30) }, + { SC_(99.64617156982421875), SC_(30.198291778564453125), SC_(0.1359628995333712367120268567405627842371e-30) }, + { SC_(99.64617156982421875), SC_(30.8236217498779296875), SC_(0.5445278627462667801264942137517994423527e-31) }, + { SC_(99.64617156982421875), SC_(36.1357879638671875), SC_(0.3335676798398169433467181047773937919425e-34) }, + { SC_(99.64617156982421875), SC_(39.228778839111328125), SC_(0.5925480070878764501178860688204541780342e-36) }, + { SC_(99.64617156982421875), SC_(39.8798675537109375), SC_(0.2596346306023602973051248853685030558771e-36) }, + { SC_(99.64617156982421875), SC_(42.181911468505859375), SC_(0.1491806079618579894544070083102953058676e-37) }, + { SC_(99.64617156982421875), SC_(42.21454620361328125), SC_(0.1433543971257228329446310718021257196428e-37) }, + { SC_(99.64617156982421875), SC_(47.481121063232421875), SC_(0.2894219671371863633901114678428523677553e-40) }, + { SC_(99.64617156982421875), SC_(48.5427093505859375), SC_(0.8715859321707892083793914056580348529658e-41) }, + { SC_(99.64617156982421875), SC_(50.371234893798828125), SC_(0.1144304917248501740653089888841788532933e-41) }, + { SC_(99.64617156982421875), SC_(54.69268035888671875), SC_(0.1122326874270186317133861668699838855083e-43) }, + { SC_(99.64617156982421875), SC_(54.72658538818359375), SC_(0.108332632811810033121283078371423493224e-43) }, + { SC_(99.64617156982421875), SC_(63.23960113525390625), SC_(0.2262074110898120193155243766072235368719e-47) }, + { SC_(99.64617156982421875), SC_(63.979938507080078125), SC_(0.1121769230946183388130951853048359732083e-47) }, + { SC_(99.64617156982421875), SC_(65.55123138427734375), SC_(0.2576069444251818757386717313878324944765e-48) }, + { SC_(99.64617156982421875), SC_(65.57750701904296875), SC_(0.2513961622572047306221104339881351344355e-48) }, + { SC_(99.64617156982421875), SC_(67.8767242431640625), SC_(0.3044620609127321948461303153395712705542e-49) }, + { SC_(99.64617156982421875), SC_(68.13913726806640625), SC_(0.2399969117830299809884620846041547199087e-49) }, + { SC_(99.64617156982421875), SC_(72.586639404296875), SC_(0.4654774693873818497215598980564748298819e-51) }, + { SC_(99.64617156982421875), SC_(74.06732177734375), SC_(0.1298622741166349753386447918518841478102e-51) }, + { SC_(99.64617156982421875), SC_(74.31581878662109375), SC_(0.1049960916780689406311743991678991020359e-51) }, + { SC_(99.64617156982421875), SC_(75.77643585205078125), SC_(0.3039342449834348309579161767378331641473e-52) }, + { SC_(99.64617156982421875), SC_(79.222808837890625), SC_(0.1737297384572845553919699070496733332975e-53) }, + { SC_(99.64617156982421875), SC_(79.79488372802734375), SC_(0.1089347230301574574227379586143568671545e-53) }, + { SC_(99.64617156982421875), SC_(79.81259918212890625), SC_(0.1073754663619106685903160281830989629804e-53) }, + { SC_(99.64617156982421875), SC_(80.0300445556640625), SC_(0.8997668853899322225061748437651655966981e-54) }, + { SC_(99.64617156982421875), SC_(81.47422027587890625), SC_(0.2804407307548493204640087364124890413703e-54) }, + { SC_(99.64617156982421875), SC_(83.50250244140625), SC_(0.5586826121117789439615638077672711001932e-55) }, + { SC_(99.64617156982421875), SC_(84.9144439697265625), SC_(0.1846564298928271058587078878704235002733e-55) }, + { SC_(99.64617156982421875), SC_(87.8442840576171875), SC_(0.1933065218129760647098319832562443180994e-56) }, + { SC_(99.64617156982421875), SC_(90.58013916015625), SC_(0.246368912661760433645524568855257596525e-57) }, + { SC_(99.64617156982421875), SC_(91.3384552001953125), SC_(0.1402807696431983675171416011032570303907e-57) }, + { SC_(99.64617156982421875), SC_(91.57439422607421875), SC_(0.1178127749000117009577583032714136533809e-57) }, + { SC_(99.64617156982421875), SC_(93.3999786376953125), SC_(0.3085259587898341188615347001733307622013e-58) }, + { SC_(99.64617156982421875), SC_(95.71712493896484375), SC_(0.5784821309052389104753898006604136073638e-59) }, + { SC_(99.64617156982421875), SC_(95.75110626220703125), SC_(0.5645763032239863667263699872521759670044e-59) }, + { SC_(99.64617156982421875), SC_(95.94964599609375), SC_(0.489819130902001275392106966836686313721e-59) }, + { SC_(99.64617156982421875), SC_(96.48920440673828125), SC_(0.3333152772138028099176546108963123743121e-59) }, + { SC_(99.64617156982421875), SC_(96.76981353759765625), SC_(0.2730076878660219712815291918211112895904e-59) }, + { SC_(99.64617156982421875), SC_(96.88709259033203125), SC_(0.2511891524767099195545978116145973727058e-59) }, + { SC_(99.64617156982421875), SC_(97.0595703125), SC_(0.222258516470169272817490714164593170175e-59) }, + { SC_(99.64617156982421875), SC_(98.1111602783203125), SC_(0.1057582725557246879085406508118398211083e-59) }, + { SC_(99.64617156982421875), SC_(99.28820037841796875), SC_(0.4637012277372110272033377955412817752539e-60) }, + { SC_(99.64617156982421875), SC_(99.64617156982421875), SC_(0.3613651154665954292095783593077701467444e-60) } + } }; +#undef SC_ + + + diff --git a/test/beta_small_data.ipp b/test/beta_small_data.ipp new file mode 100644 index 000000000..e904ae2d7 --- /dev/null +++ b/test/beta_small_data.ipp @@ -0,0 +1,35 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 21> beta_small_data = { { + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(1155631.551635027016649268884796909927277) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(1039549.452063747329381617654200841254652) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.216575062950141727924346923828125e-5), SC_(923467.3524924676425690820378921903570447) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(715366.9882608199489156088500706918884474) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.216575062950141727924346923828125e-5), SC_(599284.8886895402674421924477675861806454) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.72700195232755504548549652099609375e-5), SC_(275102.4248866129549503632384850636365051) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.1730655412757187150418758392333984375e-5), SC_(649244.3230419389091055494874477610228104) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.216575062950141727924346923828125e-5), SC_(533162.2234706592346717218748633348329255) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.72700195232755504548549652099609375e-5), SC_(208979.7596677320047637517666971035319141) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.14000004739500582218170166015625e-4), SC_(142857.0944488511634633414470885024340382) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.1730655412757187150418758392333984375e-5), SC_(635967.2966761120408405544283252854891051) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.216575062950141727924346923828125e-5), SC_(519885.1971048323697502064131013612391462) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.72700195232755504548549652099609375e-5), SC_(195702.7333019051790657557774869592595619) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.14000004739500582218170166015625e-4), SC_(129580.0680830243894812627999923649303964) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.17196454791701398789882659912109375e-4), SC_(116303.0417171976400618567245671670493297) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.1730655412757187150418758392333984375e-5), SC_(594458.8435535046961781833034439822035691) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.216575062950141727924346923828125e-5), SC_(478376.7439822250699480739314338811953296) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.72700195232755504548549652099609375e-5), SC_(154194.2801792984055346510144704788292969) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.14000004739500582218170166015625e-4), SC_(88071.61496041830983457563965247905141874) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.17196454791701398789882659912109375e-4), SC_(74794.58859459188997822531683455967562115) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.60085076256655156612396240234375e-4), SC_(33286.13547199056171829186221434157408122) } + } }; +#undef SC_ + + +// static_cast(BOOST_JOIN(x, L)) // changes type to T and adds suffix L to decimal digit string. + + diff --git a/test/binomial_data.ipp b/test/binomial_data.ipp new file mode 100644 index 000000000..2ad131388 --- /dev/null +++ b/test/binomial_data.ipp @@ -0,0 +1,169 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 159> binomial_data = { { + { SC_(0.15e2), SC_(0.15e2), SC_(0.1e1) }, + { SC_(0.19e2), SC_(0.15e2), SC_(0.3876e4) }, + { SC_(0.19e2), SC_(0.19e2), SC_(0.1e1) }, + { SC_(0.21e2), SC_(0.15e2), SC_(0.54264e5) }, + { SC_(0.21e2), SC_(0.19e2), SC_(0.21e3) }, + { SC_(0.21e2), SC_(0.21e2), SC_(0.1e1) }, + { SC_(0.29e2), SC_(0.15e2), SC_(0.7755876e8) }, + { SC_(0.29e2), SC_(0.19e2), SC_(0.2003001e8) }, + { SC_(0.29e2), SC_(0.21e2), SC_(0.4292145e7) }, + { SC_(0.29e2), SC_(0.29e2), SC_(0.1e1) }, + { SC_(0.33e2), SC_(0.15e2), SC_(0.103715832e10) }, + { SC_(0.33e2), SC_(0.19e2), SC_(0.8188092e9) }, + { SC_(0.33e2), SC_(0.21e2), SC_(0.35481732e9) }, + { SC_(0.33e2), SC_(0.29e2), SC_(0.4092e5) }, + { SC_(0.33e2), SC_(0.33e2), SC_(0.1e1) }, + { SC_(0.42e2), SC_(0.15e2), SC_(0.98672427616e11) }, + { SC_(0.42e2), SC_(0.19e2), SC_(0.4467753108e12) }, + { SC_(0.42e2), SC_(0.21e2), SC_(0.53825787444e12) }, + { SC_(0.42e2), SC_(0.29e2), SC_(0.2551873128e11) }, + { SC_(0.42e2), SC_(0.33e2), SC_(0.44589181e9) }, + { SC_(0.42e2), SC_(0.42e2), SC_(0.1e1) }, + { SC_(0.46e2), SC_(0.15e2), SC_(0.511738760544e12) }, + { SC_(0.46e2), SC_(0.19e2), SC_(0.415424667196e13) }, + { SC_(0.46e2), SC_(0.21e2), SC_(0.6943526580276e13) }, + { SC_(0.46e2), SC_(0.29e2), SC_(0.174969502686e13) }, + { SC_(0.46e2), SC_(0.33e2), SC_(0.10176623079e12) }, + { SC_(0.46e2), SC_(0.42e2), SC_(0.163185e6) }, + { SC_(0.46e2), SC_(0.46e2), SC_(0.1e1) }, + { SC_(0.82e2), SC_(0.15e2), SC_(0.996731056598616e16) }, + { SC_(0.82e2), SC_(0.19e2), SC_(0.19710382359693168e19) }, + { SC_(0.82e2), SC_(0.21e2), SC_(0.1833065559451464624e20) }, + { SC_(0.82e2), SC_(0.29e2), SC_(0.1257660762751009389168e23) }, + { SC_(0.82e2), SC_(0.33e2), SC_(0.899986590548788671513e23) }, + { SC_(0.82e2), SC_(0.42e2), SC_(0.41467066225715382349482e24) }, + { SC_(0.82e2), SC_(0.46e2), SC_(0.23223183395337370425708e24) }, + { SC_(0.82e2), SC_(0.82e2), SC_(0.1e1) }, + { SC_(0.95e2), SC_(0.15e2), SC_(0.110375347398090219e18) }, + { SC_(0.95e2), SC_(0.19e2), SC_(0.45038039715653129145e20) }, + { SC_(0.95e2), SC_(0.21e2), SC_(0.611230538998149609825e21) }, + { SC_(0.95e2), SC_(0.29e2), SC_(0.2146280142106099437545685e25) }, + { SC_(0.95e2), SC_(0.33e2), SC_(0.3780222443838484815806271e26) }, + { SC_(0.95e2), SC_(0.42e2), SC_(0.171987522327068244097964157e28) }, + { SC_(0.95e2), SC_(0.46e2), SC_(0.308620560869098008873280965e28) }, + { SC_(0.95e2), SC_(0.82e2), SC_(0.3489735464257595e16) }, + { SC_(0.95e2), SC_(0.95e2), SC_(0.1e1) }, + { SC_(0.122e3), SC_(0.15e2), SC_(0.6156937298378625264e19) }, + { SC_(0.122e3), SC_(0.19e2), SC_(0.819751088529043274604e22) }, + { SC_(0.122e3), SC_(0.21e2), SC_(0.205054879430622110547372e24) }, + { SC_(0.122e3), SC_(0.29e2), SC_(0.965499981454662046766678536e28) }, + { SC_(0.122e3), SC_(0.33e2), SC_(0.68890617994929806723272437813e30) }, + { SC_(0.122e3), SC_(0.42e2), SC_(0.982048893026815201335532502524191e33) }, + { SC_(0.122e3), SC_(0.46e2), SC_(0.9517963588769497111427223674615988e34) }, + { SC_(0.122e3), SC_(0.82e2), SC_(0.254605268562507644790693611765531e33) }, + { SC_(0.122e3), SC_(0.95e2), SC_(0.877923835320476575559398624e27) }, + { SC_(0.122e3), SC_(0.122e3), SC_(0.1e1) }, + { SC_(0.125e3), SC_(0.15e2), SC_(0.90648078331934398e19) }, + { SC_(0.125e3), SC_(0.19e2), SC_(0.1350175763944140060675e23) }, + { SC_(0.125e3), SC_(0.21e2), SC_(0.357796577445197116078875e24) }, + { SC_(0.125e3), SC_(0.29e2), SC_(0.21471697865846785089593512375e29) }, + { SC_(0.125e3), SC_(0.33e2), SC_(0.1743111472200107189546091504625e31) }, + { SC_(0.125e3), SC_(0.42e2), SC_(0.339619764433637564049548277312025e34) }, + { SC_(0.125e3), SC_(0.46e2), SC_(0.38244450869782214079034893241053e35) }, + { SC_(0.125e3), SC_(0.82e2), SC_(0.655545126697486460839825744579025e34) }, + { SC_(0.125e3), SC_(0.95e2), SC_(0.687094331707097122866992396e29) }, + { SC_(0.125e3), SC_(0.122e3), SC_(0.31775e6) }, + { SC_(0.125e3), SC_(0.125e3), SC_(0.1e1) }, + { SC_(0.135e3), SC_(0.15e2), SC_(0.307563739414613748e20) }, + { SC_(0.135e3), SC_(0.19e2), SC_(0.65183278299357679461e23) }, + { SC_(0.135e3), SC_(0.21e2), SC_(0.2070345077412932009547e25) }, + { SC_(0.135e3), SC_(0.29e2), SC_(0.2654598483954587033449048188e30) }, + { SC_(0.135e3), SC_(0.33e2), SC_(0.322268385697858320141605625441e32) }, + { SC_(0.135e3), SC_(0.42e2), SC_(0.165539796634100865734488051471458e36) }, + { SC_(0.135e3), SC_(0.46e2), SC_(0.2961867439565318449706072684149998e37) }, + { SC_(0.135e3), SC_(0.82e2), SC_(0.1323968752490674447090425029339391282e39) }, + { SC_(0.135e3), SC_(0.95e2), SC_(0.319215598884570762368184126129732e35) }, + { SC_(0.135e3), SC_(0.122e3), SC_(0.437531400061434e18) }, + { SC_(0.135e3), SC_(0.125e3), SC_(0.393812684240976e15) }, + { SC_(0.135e3), SC_(0.135e3), SC_(0.1e1) }, + { SC_(0.137e3), SC_(0.15e2), SC_(0.388194525997363728e20) }, + { SC_(0.137e3), SC_(0.19e2), SC_(0.87968625327656981292e23) }, + { SC_(0.137e3), SC_(0.21e2), SC_(0.28916543839848387707556e25) }, + { SC_(0.137e3), SC_(0.29e2), SC_(0.4280069137507949602563401336e30) }, + { SC_(0.137e3), SC_(0.33e2), SC_(0.560540007685072462740701644251e32) }, + { SC_(0.137e3), SC_(0.42e2), SC_(0.3453905364934565879468064249738192e36) }, + { SC_(0.137e3), SC_(0.46e2), SC_(0.67381580139170956477318127290699344e37) }, + { SC_(0.137e3), SC_(0.95e2), SC_(0.3453905364934565879468064249738192e36) }, + { SC_(0.137e3), SC_(0.122e3), SC_(0.388194525997363728e20) }, + { SC_(0.137e3), SC_(0.125e3), SC_(0.55587257066498976e17) }, + { SC_(0.137e3), SC_(0.135e3), SC_(0.9316e4) }, + { SC_(0.137e3), SC_(0.137e3), SC_(0.1e1) }, + { SC_(0.143e3), SC_(0.15e2), SC_(0.76435265515004093841e20) }, + { SC_(0.143e3), SC_(0.19e2), SC_(0.210374461432936964163e24) }, + { SC_(0.143e3), SC_(0.21e2), SC_(0.76395982994646537557478e25) }, + { SC_(0.143e3), SC_(0.29e2), SC_(0.17138496567725350060390313738e31) }, + { SC_(0.143e3), SC_(0.33e2), SC_(0.27947962468928852152878073112114e33) }, + { SC_(0.143e3), SC_(0.42e2), SC_(0.291038363317011408088847346619471914e37) }, + { SC_(0.143e3), SC_(0.46e2), SC_(0.728184459077800535203086713053471437e38) }, + { SC_(0.143e3), SC_(0.95e2), SC_(0.3005697554491346889987208985795179974e39) }, + { SC_(0.143e3), SC_(0.122e3), SC_(0.76395982994646537557478e25) }, + { SC_(0.143e3), SC_(0.125e3), SC_(0.31976918137806418552776e23) }, + { SC_(0.143e3), SC_(0.135e3), SC_(0.3553074951283e13) }, + { SC_(0.143e3), SC_(0.137e3), SC_(0.10679057389e11) }, + { SC_(0.143e3), SC_(0.143e3), SC_(0.1e1) }, + { SC_(0.144e3), SC_(0.15e2), SC_(0.85323087086516197776e20) }, + { SC_(0.144e3), SC_(0.19e2), SC_(0.242351379570743382715776e24) }, + { SC_(0.144e3), SC_(0.21e2), SC_(0.89439199603488629335584e25) }, + { SC_(0.144e3), SC_(0.29e2), SC_(0.214603783108908731190974363328e31) }, + { SC_(0.144e3), SC_(0.33e2), SC_(0.36256816175907700090220202956256e33) }, + { SC_(0.144e3), SC_(0.42e2), SC_(0.410877689388721987890137430521607408e37) }, + { SC_(0.144e3), SC_(0.46e2), SC_(0.1069985327624523235400453945711223336e39) }, + { SC_(0.144e3), SC_(0.122e3), SC_(0.500046434146777336739856e26) }, + { SC_(0.144e3), SC_(0.125e3), SC_(0.242351379570743382715776e24) }, + { SC_(0.144e3), SC_(0.135e3), SC_(0.56849199220528e14) }, + { SC_(0.144e3), SC_(0.137e3), SC_(0.219683466288e12) }, + { SC_(0.144e3), SC_(0.143e3), SC_(0.144e3) }, + { SC_(0.144e3), SC_(0.144e3), SC_(0.1e1) }, + { SC_(0.145e3), SC_(0.15e2), SC_(0.95168058673421912904e20) }, + { SC_(0.145e3), SC_(0.19e2), SC_(0.27889642887109357534752e24) }, + { SC_(0.145e3), SC_(0.21e2), SC_(0.10458616082666009075532e26) }, + { SC_(0.145e3), SC_(0.29e2), SC_(0.26825472888613591398871795416e31) }, + { SC_(0.145e3), SC_(0.33e2), SC_(0.4693962808488050458108865561301e33) }, + { SC_(0.145e3), SC_(0.42e2), SC_(0.57842004816858920625310609151100072e37) }, + { SC_(0.145e3), SC_(0.46e2), SC_(0.156715022732884716296026082957704428e39) }, + { SC_(0.145e3), SC_(0.122e3), SC_(0.315246665005577016640344e27) }, + { SC_(0.145e3), SC_(0.125e3), SC_(0.1757047501887889524689376e25) }, + { SC_(0.145e3), SC_(0.135e3), SC_(0.824313388697656e15) }, + { SC_(0.145e3), SC_(0.137e3), SC_(0.398176282647e13) }, + { SC_(0.145e3), SC_(0.143e3), SC_(0.1044e5) }, + { SC_(0.145e3), SC_(0.144e3), SC_(0.145e3) }, + { SC_(0.145e3), SC_(0.145e3), SC_(0.1e1) }, + { SC_(0.148e3), SC_(0.15e2), SC_(0.131439605927052712464e21) }, + { SC_(0.148e3), SC_(0.19e2), SC_(0.42244624913775365779698e24) }, + { SC_(0.148e3), SC_(0.21e2), SC_(0.16608172537529972375104128e26) }, + { SC_(0.148e3), SC_(0.29e2), SC_(0.51863815313548295889610045344e31) }, + { SC_(0.148e3), SC_(0.33e2), SC_(0.100644585365316213131406856592232e34) }, + { SC_(0.148e3), SC_(0.42e2), SC_(0.1587255130729102485141868921944628536e38) }, + { SC_(0.148e3), SC_(0.122e3), SC_(0.6418858594895863473128136624e29) }, + { SC_(0.148e3), SC_(0.125e3), SC_(0.525225250880542723214261376e27) }, + { SC_(0.148e3), SC_(0.135e3), SC_(0.1525832904625819216e19) }, + { SC_(0.148e3), SC_(0.137e3), SC_(0.12775329171405528e17) }, + { SC_(0.148e3), SC_(0.143e3), SC_(0.552689424e9) }, + { SC_(0.148e3), SC_(0.144e3), SC_(0.19190605e8) }, + { SC_(0.148e3), SC_(0.145e3), SC_(0.529396e6) }, + { SC_(0.148e3), SC_(0.148e3), SC_(0.1e1) }, + { SC_(0.149e3), SC_(0.15e2), SC_(0.146152994650230254904e21) }, + { SC_(0.149e3), SC_(0.19e2), SC_(0.484188393242502269321154e24) }, + { SC_(0.149e3), SC_(0.21e2), SC_(0.19332950844468483467894649e26) }, + { SC_(0.149e3), SC_(0.29e2), SC_(0.643975706809891340629324729688e31) }, + { SC_(0.149e3), SC_(0.33e2), SC_(0.129276234650276859970513979588298e34) }, + { SC_(0.149e3), SC_(0.42e2), SC_(0.2210289854940525890524658592240650952e38) }, + { SC_(0.149e3), SC_(0.122e3), SC_(0.35422590023684579907262679888e30) }, + { SC_(0.149e3), SC_(0.125e3), SC_(0.3260773432550036073288539376e28) }, + { SC_(0.149e3), SC_(0.135e3), SC_(0.16239221627803361656e20) }, + { SC_(0.149e3), SC_(0.137e3), SC_(0.158627003878285306e18) }, + { SC_(0.149e3), SC_(0.143e3), SC_(0.13725120696e11) }, + { SC_(0.149e3), SC_(0.144e3), SC_(0.571880029e9) }, + { SC_(0.149e3), SC_(0.145e3), SC_(0.19720001e8) }, + { SC_(0.149e3), SC_(0.148e3), SC_(0.149e3) }, + { SC_(0.149e3), SC_(0.149e3), SC_(0.1e1) } + } }; +#undef SC_ + diff --git a/test/binomial_large_data.ipp b/test/binomial_large_data.ipp new file mode 100644 index 000000000..7441d393d --- /dev/null +++ b/test/binomial_large_data.ipp @@ -0,0 +1,240 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 230> binomial_large_data = { { + { SC_(0.174e3), SC_(0.4e1), SC_(0.36890001e8) }, + { SC_(0.174e3), SC_(0.5e1), SC_(0.1254260034e10) }, + { SC_(0.174e3), SC_(0.6e1), SC_(0.35328324291e11) }, + { SC_(0.174e3), SC_(0.8e1), SC_(0.17699490469791e14) }, + { SC_(0.174e3), SC_(0.9e1), SC_(0.326457268665034e15) }, + { SC_(0.174e3), SC_(0.11e2), SC_(0.80308488091598364e17) }, + { SC_(0.174e3), SC_(0.13e2), SC_(0.13593756003504784614e20) }, + { SC_(0.174e3), SC_(0.22e2), SC_(0.4359346248249975839021623926e28) }, + { SC_(0.174e3), SC_(0.25e2), SC_(0.1087562120541667885404612090756e31) }, + { SC_(0.174e3), SC_(0.32e2), SC_(0.90596769259248050560796925567405729e35) }, + { SC_(0.174e3), SC_(0.33e2), SC_(0.389840643479188581201004952441564046e36) }, + { SC_(0.174e3), SC_(0.36e2), SC_(0.24968911018132735303785934846085665809e38) }, + { SC_(0.174e3), SC_(0.38e2), SC_(0.335748386706129085101975024324392317059e39) }, + { SC_(0.181e3), SC_(0.4e1), SC_(0.43252665e8) }, + { SC_(0.181e3), SC_(0.5e1), SC_(0.1531144341e10) }, + { SC_(0.181e3), SC_(0.6e1), SC_(0.44913567336e11) }, + { SC_(0.181e3), SC_(0.8e1), SC_(0.2442175223895e14) }, + { SC_(0.181e3), SC_(0.9e1), SC_(0.46944034859315e15) }, + { SC_(0.181e3), SC_(0.11e2), SC_(0.12551981393474298e18) }, + { SC_(0.181e3), SC_(0.13e2), SC_(0.2311656573298183215e20) }, + { SC_(0.181e3), SC_(0.22e2), SC_(0.109786047308135746805973924e29) }, + { SC_(0.181e3), SC_(0.25e2), SC_(0.3137775924888208973244704900292e31) }, + { SC_(0.181e3), SC_(0.32e2), SC_(0.362807370049633357494117222655465275e36) }, + { SC_(0.181e3), SC_(0.33e2), SC_(0.1638130246587738492927983823504979575e37) }, + { SC_(0.181e3), SC_(0.36e2), SC_(0.121459327734252437983487804513759407155e39) }, + { SC_(0.183e3), SC_(0.4e1), SC_(0.45212895e8) }, + { SC_(0.183e3), SC_(0.5e1), SC_(0.1618621641e10) }, + { SC_(0.183e3), SC_(0.6e1), SC_(0.48019108683e11) }, + { SC_(0.183e3), SC_(0.8e1), SC_(0.26712344173086e14) }, + { SC_(0.183e3), SC_(0.9e1), SC_(0.51940669225445e15) }, + { SC_(0.183e3), SC_(0.11e2), SC_(0.14213800227494049e18) }, + { SC_(0.183e3), SC_(0.13e2), SC_(0.2679848027506762623e20) }, + { SC_(0.183e3), SC_(0.22e2), SC_(0.14194619920981246828881085065e29) }, + { SC_(0.183e3), SC_(0.25e2), SC_(0.4212963192547234058811906047292e31) }, + { SC_(0.183e3), SC_(0.32e2), SC_(0.533495022820003911907243629923308011e36) }, + { SC_(0.183e3), SC_(0.33e2), SC_(0.2441143892297593657514963276315742717e37) }, + { SC_(0.183e3), SC_(0.36e2), SC_(0.188487763000513078905882248491998453765e39) }, + { SC_(0.197e3), SC_(0.4e1), SC_(0.60862165e8) }, + { SC_(0.197e3), SC_(0.5e1), SC_(0.2349279569e10) }, + { SC_(0.197e3), SC_(0.6e1), SC_(0.75176946208e11) }, + { SC_(0.197e3), SC_(0.8e1), SC_(0.4871734603372e14) }, + { SC_(0.197e3), SC_(0.9e1), SC_(0.102306426670812e16) }, + { SC_(0.197e3), SC_(0.11e2), SC_(0.326971339639915152e18) }, + { SC_(0.197e3), SC_(0.13e2), SC_(0.7212233203211205372e20) }, + { SC_(0.197e3), SC_(0.22e2), SC_(0.79183342998439646916544716576e29) }, + { SC_(0.197e3), SC_(0.25e2), SC_(0.30226519812632630000675368493832e32) }, + { SC_(0.197e3), SC_(0.32e2), SC_(0.7012229196864814144578953941342321778e37) }, + { SC_(0.197e3), SC_(0.33e2), SC_(0.3506114598432407072289476970671160889e38) }, + { SC_(0.205e3), SC_(0.4e1), SC_(0.71452955e8) }, + { SC_(0.205e3), SC_(0.5e1), SC_(0.2872408791e10) }, + { SC_(0.205e3), SC_(0.6e1), SC_(0.957469597e11) }, + { SC_(0.205e3), SC_(0.8e1), SC_(0.67368244751775e14) }, + { SC_(0.205e3), SC_(0.9e1), SC_(0.1474616024011075e16) }, + { SC_(0.205e3), SC_(0.11e2), SC_(0.51236204034275715e18) }, + { SC_(0.205e3), SC_(0.13e2), SC_(0.122973458426368674425e21) }, + { SC_(0.205e3), SC_(0.22e2), SC_(0.1996995395393768863820790084e30) }, + { SC_(0.205e3), SC_(0.25e2), SC_(0.87236660026494642796327227908148e32) }, + { SC_(0.205e3), SC_(0.32e2), SC_(0.2797639369858790056445408204110589505e38) }, + { SC_(0.205e3), SC_(0.33e2), SC_(0.14666412454108202417122897554882787405e39) }, + { SC_(0.219e3), SC_(0.4e1), SC_(0.93240126e8) }, + { SC_(0.219e3), SC_(0.5e1), SC_(0.4009325418e10) }, + { SC_(0.219e3), SC_(0.6e1), SC_(0.142999273242e12) }, + { SC_(0.219e3), SC_(0.8e1), SC_(0.115308485402067e15) }, + { SC_(0.219e3), SC_(0.9e1), SC_(0.2703343379981793e16) }, + { SC_(0.219e3), SC_(0.11e2), SC_(0.1078634008612735407e19) }, + { SC_(0.219e3), SC_(0.13e2), SC_(0.297702986377114972332e21) }, + { SC_(0.219e3), SC_(0.22e2), SC_(0.92286864572641294222383786261e30) }, + { SC_(0.219e3), SC_(0.25e2), SC_(0.503521145580703624811857345830723e33) }, + { SC_(0.219e3), SC_(0.32e2), SC_(0.275143042079930237307916608031577699934e39) }, + { SC_(0.227e3), SC_(0.4e1), SC_(0.1077342e9) }, + { SC_(0.227e3), SC_(0.5e1), SC_(0.480494532e10) }, + { SC_(0.227e3), SC_(0.6e1), SC_(0.17778297684e12) }, + { SC_(0.227e3), SC_(0.8e1), SC_(0.1543537202493e15) }, + { SC_(0.227e3), SC_(0.9e1), SC_(0.37559405260663e16) }, + { SC_(0.227e3), SC_(0.11e2), SC_(0.161525929569174898e19) }, + { SC_(0.227e3), SC_(0.13e2), SC_(0.4808502672559283502e21) }, + { SC_(0.227e3), SC_(0.22e2), SC_(0.211447113241809535208273441052e31) }, + { SC_(0.227e3), SC_(0.25e2), SC_(0.1300776673899864041137122497734284e34) }, + { SC_(0.286e3), SC_(0.4e1), SC_(0.272963405e9) }, + { SC_(0.286e3), SC_(0.5e1), SC_(0.15395136042e11) }, + { SC_(0.286e3), SC_(0.6e1), SC_(0.721005537967e12) }, + { SC_(0.286e3), SC_(0.8e1), SC_(0.1005802725463965e16) }, + { SC_(0.286e3), SC_(0.9e1), SC_(0.3106812863099803e17) }, + { SC_(0.286e3), SC_(0.11e2), SC_(0.21592914273609648996e20) }, + { SC_(0.286e3), SC_(0.13e2), SC_(0.1042965442638773751185e23) }, + { SC_(0.286e3), SC_(0.22e2), SC_(0.425965175292651465971486597897325e33) }, + { SC_(0.286e3), SC_(0.25e2), SC_(0.561508034879773671402684888107554506e36) }, + { SC_(0.308e3), SC_(0.4e1), SC_(0.367704645e9) }, + { SC_(0.308e3), SC_(0.5e1), SC_(0.22356442416e11) }, + { SC_(0.308e3), SC_(0.6e1), SC_(0.1129000342008e13) }, + { SC_(0.308e3), SC_(0.8e1), SC_(0.1832649805164486e16) }, + { SC_(0.308e3), SC_(0.9e1), SC_(0.610883268388162e17) }, + { SC_(0.308e3), SC_(0.11e2), SC_(0.4948265543629273684e20) }, + { SC_(0.308e3), SC_(0.13e2), SC_(0.2788537951740619923768e23) }, + { SC_(0.308e3), SC_(0.22e2), SC_(0.231085830083090590416670728502104e34) }, + { SC_(0.308e3), SC_(0.25e2), SC_(0.3876354280333804915261626106361337072e37) }, + { SC_(0.353e3), SC_(0.4e1), SC_(0.6360354e9) }, + { SC_(0.353e3), SC_(0.5e1), SC_(0.4439527092e11) }, + { SC_(0.353e3), SC_(0.6e1), SC_(0.257492571336e13) }, + { SC_(0.353e3), SC_(0.8e1), SC_(0.552054876781122e16) }, + { SC_(0.353e3), SC_(0.9e1), SC_(0.2116210360994301e18) }, + { SC_(0.353e3), SC_(0.11e2), SC_(0.22699626628585414872e21) }, + { SC_(0.353e3), SC_(0.13e2), SC_(0.16969717029992873417964e24) }, + { SC_(0.353e3), SC_(0.22e2), SC_(0.5130106833626650018875548966208696e35) }, + { SC_(0.353e3), SC_(0.25e2), SC_(0.133593446626656394879582879903973231364e39) }, + { SC_(0.358e3), SC_(0.4e1), SC_(0.673005095e9) }, + { SC_(0.358e3), SC_(0.5e1), SC_(0.47648760726e11) }, + { SC_(0.358e3), SC_(0.6e1), SC_(0.2803335422713e13) }, + { SC_(0.358e3), SC_(0.8e1), SC_(0.6184958895482796e16) }, + { SC_(0.358e3), SC_(0.9e1), SC_(0.2405261792687754e18) }, + { SC_(0.358e3), SC_(0.11e2), SC_(0.26556714113228463528e21) }, + { SC_(0.358e3), SC_(0.13e2), SC_(0.20438796217066896077556e24) }, + { SC_(0.358e3), SC_(0.22e2), SC_(0.7057427033366990358417620413368873e35) }, + { SC_(0.358e3), SC_(0.25e2), SC_(0.192263950446748795075597663873492257384e39) }, + { SC_(0.376e3), SC_(0.4e1), SC_(0.81957425e9) }, + { SC_(0.376e3), SC_(0.5e1), SC_(0.609763242e11) }, + { SC_(0.376e3), SC_(0.6e1), SC_(0.37703693797e13) }, + { SC_(0.376e3), SC_(0.8e1), SC_(0.9192295203757875e16) }, + { SC_(0.376e3), SC_(0.9e1), SC_(0.375862737220322e18) }, + { SC_(0.376e3), SC_(0.11e2), SC_(0.4589694053537099244e21) }, + { SC_(0.376e3), SC_(0.13e2), SC_(0.390888943559576285614e24) }, + { SC_(0.376e3), SC_(0.22e2), SC_(0.2144450623649450847150905469935555e36) }, + { SC_(0.376e3), SC_(0.372e3), SC_(0.81957425e9) }, + { SC_(0.376e3), SC_(0.373e3), SC_(0.8789e7) }, + { SC_(0.376e3), SC_(0.374e3), SC_(0.705e5) }, + { SC_(0.376e3), SC_(0.375e3), SC_(0.376e3) }, + { SC_(0.376e3), SC_(0.376e3), SC_(0.1e1) }, + { SC_(0.378e3), SC_(0.4e1), SC_(0.83722275e9) }, + { SC_(0.378e3), SC_(0.5e1), SC_(0.626242617e11) }, + { SC_(0.378e3), SC_(0.6e1), SC_(0.389314160235e13) }, + { SC_(0.378e3), SC_(0.8e1), SC_(0.9594647478991575e16) }, + { SC_(0.378e3), SC_(0.9e1), SC_(0.39444661858076475e18) }, + { SC_(0.378e3), SC_(0.11e2), SC_(0.4869335930029018812e21) }, + { SC_(0.378e3), SC_(0.13e2), SC_(0.4192685517906140159394e24) }, + { SC_(0.378e3), SC_(0.22e2), SC_(0.24180810300189004781143134586060785e36) }, + { SC_(0.378e3), SC_(0.372e3), SC_(0.389314160235e13) }, + { SC_(0.378e3), SC_(0.373e3), SC_(0.626242617e11) }, + { SC_(0.378e3), SC_(0.374e3), SC_(0.83722275e9) }, + { SC_(0.378e3), SC_(0.375e3), SC_(0.8930376e7) }, + { SC_(0.378e3), SC_(0.376e3), SC_(0.71253e5) }, + { SC_(0.378e3), SC_(0.378e3), SC_(0.1e1) }, + { SC_(0.389e3), SC_(0.4e1), SC_(0.939438501e9) }, + { SC_(0.389e3), SC_(0.5e1), SC_(0.72336764577e11) }, + { SC_(0.389e3), SC_(0.6e1), SC_(0.4629552932928e13) }, + { SC_(0.389e3), SC_(0.8e1), SC_(0.12095203060802928e17) }, + { SC_(0.389e3), SC_(0.9e1), SC_(0.512030262907323952e18) }, + { SC_(0.389e3), SC_(0.11e2), SC_(0.670387258762843596064e21) }, + { SC_(0.389e3), SC_(0.13e2), SC_(0.612398760879857625004464e24) }, + { SC_(0.389e3), SC_(0.22e2), SC_(0.4627435055579525047225070723215824e36) }, + { SC_(0.389e3), SC_(0.372e3), SC_(0.2108849811550582576133675754e30) }, + { SC_(0.389e3), SC_(0.373e3), SC_(0.96113798381661940467218466e28) }, + { SC_(0.389e3), SC_(0.374e3), SC_(0.4111820251621901196458544e27) }, + { SC_(0.389e3), SC_(0.375e3), SC_(0.16447281006487604785834176e26) }, + { SC_(0.389e3), SC_(0.376e3), SC_(0.612398760879857625004464e24) }, + { SC_(0.389e3), SC_(0.378e3), SC_(0.670387258762843596064e21) }, + { SC_(0.389e3), SC_(0.379e3), SC_(0.19457149990478310176e20) }, + { SC_(0.389e3), SC_(0.386e3), SC_(0.9735114e7) }, + { SC_(0.389e3), SC_(0.388e3), SC_(0.389e3) }, + { SC_(0.391e3), SC_(0.4e1), SC_(0.958984195e9) }, + { SC_(0.391e3), SC_(0.5e1), SC_(0.74225376693e11) }, + { SC_(0.391e3), SC_(0.6e1), SC_(0.4775165900583e13) }, + { SC_(0.391e3), SC_(0.8e1), SC_(0.1260643797753912e17) }, + { SC_(0.391e3), SC_(0.9e1), SC_(0.53647397171083144e18) }, + { SC_(0.391e3), SC_(0.11e2), SC_(0.709813589006707540368e21) }, + { SC_(0.391e3), SC_(0.13e2), SC_(0.65530354544067961515256e24) }, + { SC_(0.391e3), SC_(0.22e2), SC_(0.519645908172294225323547068003403e36) }, + { SC_(0.391e3), SC_(0.372e3), SC_(0.94028803439575537144626963663e32) }, + { SC_(0.391e3), SC_(0.373e3), SC_(0.4789670952686153366616386889e31) }, + { SC_(0.391e3), SC_(0.374e3), SC_(0.230518922856552835826457123e30) }, + { SC_(0.391e3), SC_(0.375e3), SC_(0.10450191169497061890799389576e29) }, + { SC_(0.391e3), SC_(0.376e3), SC_(0.444688985936045186842527216e27) }, + { SC_(0.391e3), SC_(0.378e3), SC_(0.65530354544067961515256e24) }, + { SC_(0.391e3), SC_(0.379e3), SC_(0.2247743031854573877832e23) }, + { SC_(0.391e3), SC_(0.386e3), SC_(0.74225376693e11) }, + { SC_(0.391e3), SC_(0.388e3), SC_(0.9886435e7) }, + { SC_(0.392e3), SC_(0.4e1), SC_(0.96887063e9) }, + { SC_(0.392e3), SC_(0.5e1), SC_(0.75184360888e11) }, + { SC_(0.392e3), SC_(0.6e1), SC_(0.4849391277276e13) }, + { SC_(0.392e3), SC_(0.8e1), SC_(0.12869072102071185e17) }, + { SC_(0.392e3), SC_(0.9e1), SC_(0.54908040968837056e18) }, + { SC_(0.392e3), SC_(0.11e2), SC_(0.730306894726061301376e21) }, + { SC_(0.392e3), SC_(0.13e2), SC_(0.67778097575922535393088e24) }, + { SC_(0.392e3), SC_(0.22e2), SC_(0.5505437729825387468292714882630648e36) }, + { SC_(0.392e3), SC_(0.372e3), SC_(0.18429645474156805280346884877948e34) }, + { SC_(0.392e3), SC_(0.373e3), SC_(0.98818474392261690511243350552e32) }, + { SC_(0.392e3), SC_(0.374e3), SC_(0.5020189875542706202442844012e31) }, + { SC_(0.392e3), SC_(0.375e3), SC_(0.240969114026049897717256512576e30) }, + { SC_(0.392e3), SC_(0.376e3), SC_(0.10894880155433107077641916792e29) }, + { SC_(0.392e3), SC_(0.378e3), SC_(0.1834849927233902922427168e26) }, + { SC_(0.392e3), SC_(0.379e3), SC_(0.67778097575922535393088e24) }, + { SC_(0.392e3), SC_(0.386e3), SC_(0.4849391277276e13) }, + { SC_(0.392e3), SC_(0.388e3), SC_(0.96887063e9) }, + { SC_(0.398e3), SC_(0.4e1), SC_(0.1029804105e10) }, + { SC_(0.398e3), SC_(0.5e1), SC_(0.81148563474e11) }, + { SC_(0.398e3), SC_(0.6e1), SC_(0.5315230907547e13) }, + { SC_(0.398e3), SC_(0.8e1), SC_(0.14547786993956139e17) }, + { SC_(0.398e3), SC_(0.9e1), SC_(0.63040410307143269e18) }, + { SC_(0.398e3), SC_(0.11e2), SC_(0.864983200770704352428e21) }, + { SC_(0.398e3), SC_(0.13e2), SC_(0.828287951907239471630766e24) }, + { SC_(0.398e3), SC_(0.22e2), SC_(0.776122173564640399865233597134960648e36) }, + { SC_(0.398e3), SC_(0.374e3), SC_(0.198248598682272276052532494920343209e39) }, + { SC_(0.398e3), SC_(0.375e3), SC_(0.12687910315665425667362079674901965376e38) }, + { SC_(0.398e3), SC_(0.376e3), SC_(0.776122173564640399865233597134960648e36) }, + { SC_(0.398e3), SC_(0.378e3), SC_(0.2516163840026833008699548944439896e34) }, + { SC_(0.398e3), SC_(0.379e3), SC_(0.13277909446051889227965957490448e33) }, + { SC_(0.398e3), SC_(0.386e3), SC_(0.27895708224855215365803e23) }, + { SC_(0.398e3), SC_(0.388e3), SC_(0.24522719609478731641e20) }, + { SC_(0.398e3), SC_(0.394e3), SC_(0.1029804105e10) }, + { SC_(0.398e3), SC_(0.395e3), SC_(0.10428396e8) }, + { SC_(0.398e3), SC_(0.397e3), SC_(0.398e3) }, + { SC_(0.398e3), SC_(0.398e3), SC_(0.1e1) }, + { SC_(0.399e3), SC_(0.4e1), SC_(0.1040232501e10) }, + { SC_(0.399e3), SC_(0.5e1), SC_(0.82178367579e11) }, + { SC_(0.399e3), SC_(0.6e1), SC_(0.5396379471021e13) }, + { SC_(0.399e3), SC_(0.8e1), SC_(0.14845439924778771e17) }, + { SC_(0.399e3), SC_(0.9e1), SC_(0.644951890065388829e18) }, + { SC_(0.399e3), SC_(0.11e2), SC_(0.889505920380183084069e21) }, + { SC_(0.399e3), SC_(0.13e2), SC_(0.856183660132094686996569e24) }, + { SC_(0.399e3), SC_(0.22e2), SC_(0.821413122685123394021825478134878776e36) }, + { SC_(0.399e3), SC_(0.375e3), SC_(0.210936508997937701719894574595245174376e39) }, + { SC_(0.399e3), SC_(0.376e3), SC_(0.13464032489230066067227313272036926024e38) }, + { SC_(0.399e3), SC_(0.378e3), SC_(0.47807112960509827165291429944358024e35) }, + { SC_(0.399e3), SC_(0.379e3), SC_(0.2648942934487351900979208519344376e34) }, + { SC_(0.399e3), SC_(0.386e3), SC_(0.856183660132094686996569e24) }, + { SC_(0.399e3), SC_(0.388e3), SC_(0.889505920380183084069e21) }, + { SC_(0.399e3), SC_(0.394e3), SC_(0.82178367579e11) }, + { SC_(0.399e3), SC_(0.395e3), SC_(0.1040232501e10) }, + { SC_(0.399e3), SC_(0.397e3), SC_(0.79401e5) }, + { SC_(0.399e3), SC_(0.398e3), SC_(0.399e3) }, + { SC_(0.399e3), SC_(0.399e3), SC_(0.1e1) } + } }; +#undef SC_ + diff --git a/test/binomial_quantile.ipp b/test/binomial_quantile.ipp new file mode 100644 index 000000000..b2a1c55ab --- /dev/null +++ b/test/binomial_quantile.ipp @@ -0,0 +1,4042 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 4032> binomial_quantile_data = {{ + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0), SC_(0.28467385230321224203411154382440248724380832183117) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0), SC_(0.25727865882740919932840773421531232758964168093055) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0), SC_(0.035694410305790976496105074803969225386555435216338) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(0.11873939407970113038114981488058971337236924303007), SC_(0) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(0.17128223695871555977493584741313475336874139582588), SC_(0) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(0.40618092349808500975883593147831009145063213747834), SC_(0) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(0.43899397179953045991755739555886582435275603281127), SC_(0) }, + { SC_(2), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(0.799870552103486022724664124290614736962329408812), SC_(0) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0), SC_(0.31872738789970909485536768848150766202976148899251) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0), SC_(0.29102994230646182726533783572628827290811626372966) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0), SC_(0.066564891771854913273348344758795546234545331752506) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(0.15078204185386621729912132630692143434650445884609), SC_(0) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(0.20400864316514337235281173322687950297863712869268), SC_(0) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(0.44143516661223776441613153671576118711196945856282), SC_(0) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(0.47453330316861439745293287393350226948540566881404), SC_(0) }, + { SC_(2), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(0.83739716340650425258932397703845268032687863038399), SC_(0) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.62037836131298603609519052823209625564881710064378) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(0), SC_(0.59093627733744182629509254823619511720015775666619) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(0), SC_(0.34807449373182945948809948184050473370388203786438) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(0.44009477935063047177182669621147331809907557267519), SC_(0) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(0.49769020155560349641877333505982794296467077593034), SC_(0) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(0.74944500698304949182235362474586290610889103220154), SC_(0) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(0.78387321971706370473245717801953625642542459567953), SC_(0) }, + { SC_(2), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(1.1498981366557770839693825192073836593340168170678), SC_(0) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(0.49788422454509726888212532584283407165868239438731), SC_(1.7926192943764322245525372122405254834085320140091) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(0.52684446645645143763351083479730514213286478982046), SC_(1.7800376961833357223696231469588443580528305056426) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(0.76404470698225093423433928273194254681576983826729), SC_(1.6575789550348265198775169987571194771809264616601) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(1.7079778135930259197017395920782252633535682554395), SC_(0.67451997209260747234500120079260379985847433758707) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(1.7370140616146297876215882640682879489503844226303), SC_(0.61826978524366906854726038797379514512007309468525) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(1.8422676954366467819691658272374144020837995309592), SC_(0.37038562663058272269915604803279695742811766811068) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(1.8540370189939540680880864847938744361486513005951), SC_(0.33622087984946386620856678308455255506401496039699) }, + { SC_(2), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(1.9445446166763026262975190991518462099527425413065), SC_(0) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(0.56958071116299011326336908222173795424895818167301), SC_(1.8137304876186701320041037003716921955178542458777) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(0.5981209280634265150735741168005063416283431515107), SC_(1.8021715458778761995268427585444094026357861343759) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(0.83090525438122511558400411768603959990549654637303), SC_(1.6886385783899505992169862804407221877862974299577) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(1.7355710512108993168349123864726150726576737171558), SC_(0.74325147999645043591309459835699081406440836189148) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(1.7624843207443737418084928974357752849439279812566), SC_(0.68804994566426817141775845555990924647720468985401) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(1.8591104224011548582974193339913952604895234253212), SC_(0.44361740870722582924969757610991167298608216875062) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(1.8698085272287528501704175046677138004183965889567), SC_(0.40977531663720771089918606908851370822175913476053) }, + { SC_(2), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(1.9511576367649285600816205566246603680285988358087), SC_(0.04270968378107433525053371598152689901997251726038) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0.85726514749037069310481801247489294724056715593457), SC_(1.8804012228077026734797789762290784583931682768768) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0.88317282091352864079844947551166117006159739583613), SC_(1.8724468451410620279960951785191670507195296736355) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(1.0910330409403430891037561412815026317636099593003), SC_(1.7917361917429781245858890856792542281128619769022) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(1.8256368040155375748945733586742605410385625353702), SC_(1.0134903208545149583207088570984469685131364451052) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(1.8447459049829273901888950923074855808716795544247), SC_(0.96420439216641466386114172651122642007725184484882) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(1.9110961325206285706348172771253849974988114040724), SC_(0.74181276998520831022621554064240699221049217515329) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(1.9182016049508608107144693813859479953781777592049), SC_(0.71048287939882036081575390191907931744136876928891) }, + { SC_(2), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(1.9704054870490370002358180573372532707004531569272), SC_(0.36148284689566546008465068509644207578794848416303) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(0.89304497468867083816771394620213863419351236317246), SC_(1.8870232605851419470398115356711266643254699771051) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(0.91851945191911824076604443011738717499646726916982), SC_(1.8794600719495634932055235107252033034069412489192) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(1.1224843497731917039711130632336027140465423975867), SC_(1.8024497787541843720192470688348029663403440451005) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(1.83485221156906006833275716665342524466131493622), SC_(1.0464844000705148022237920054031962146037112159275) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(1.8530821242970069710452437452965833721890011728762), SC_(0.99812279051607284064880069674044726059897838816945) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(1.916157535857756708867513265885680286333674160506), SC_(0.77938820736848709904568261768475993485626028602912) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(1.9228895086526470247831260416402280392514808687008), SC_(0.74850804304125107192927556102838634718019846833922) }, + { SC_(2), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(1.9721908607758403884646499241470186512990610404954), SC_(0.40343052762669687946310568011982924189671555341509) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(1.219201450126183079318676263646153854601579006327), SC_(1.9350373809079666836999431876137104944574428624569) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(1.2396148960321004151359986179895006135495084676892), SC_(1.9304973628928072264207215026173314973900010140732) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(1.3999337004234246540631799267105791681544589227942), SC_(1.8830751425475383580386501751033238159943302559557) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(1.9032845197351552805024834424312366828109880544359), SC_(1.3408612705720849488466007423034897969311893922241) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(1.914493646816680323502341300602515574175713346603), SC_(1.3028550425520181746307970074911468699561794578722) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.9523148075028214318426363845910557072771253778725), SC_(1.1271112472563136150093623218081584509971585071423) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(1.9562579226009881088210671421944586716867895152512), SC_(1.1018080012426695411192973371485245069943322457214) }, + { SC_(2), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(1.9845388981027882440443564122236200930250308142901), SC_(0.81086993731498529375959228825686023902845921423536) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0), SC_(0.98623278039249983055367190826649550767964102350066) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0), SC_(0.94751865114509654788699818254669665586168646980629) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0), SC_(0.63435737469237153077636493055394066544839817811588) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(0.75180331636922892930414680942120817288497273719322), SC_(0) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(0.82603778851222148995690317375710549667980365212588), SC_(0) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(1.1581874398122557751430288786976914445338371286637), SC_(0) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(1.2047260115460347237384722365368913393827499369116), SC_(0) }, + { SC_(5), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(1.7222813467832163936085179872509517305850813908258), SC_(0) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0), SC_(1.0536616398767741175571384251069263904563260329049) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0), SC_(1.0143389872728294158583141289706818563116343122007) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0), SC_(0.69577346685700638510895765169789898304376204545473) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(0.81535057424234387885782011768010296348911856823941), SC_(0) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(0.89086613998938100916999942884599995479582130021435), SC_(0) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(1.2281721288812144259762950861100933862618489601052), SC_(0) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(1.2753623411342921726673104381269474406910664386496), SC_(0) }, + { SC_(5), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(1.7990792422175226600058902129912553099189026754717), SC_(0) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(0), SC_(1.6737020653136916733596535716772165435972364026522) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(0), SC_(1.6302225326949068773517679248673352546636487857346) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(0), SC_(1.2734396958135111632456063081488867212152513694408) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(1.4083427555959507760323069657632090054953299158666), SC_(0) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(1.4929184159486549300658050325819542597029682441315), SC_(0) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(1.8652684829895896142301301374343453327236973177773), SC_(0) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(1.9166900525395859117627209244874086517873551236022), SC_(0) }, + { SC_(5), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(2.4769502658559700824910454784337557865674903125797), SC_(0) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(2.5741856282073034243711111657354159830645262015128), SC_(4.5404265626726682569056456058173398759286382982096) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(2.6163044543069225202108978658768233024577446398884), SC_(4.5174577854840975571410642764433662010758684503628) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(2.9602177913445011813031990964422715814336701247719), SC_(4.3053568577198347044655448882395390812536479732569) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(4.3905110151745908495245171369794076021787756679816), SC_(2.8305436189022256370458631241850156178139813371657) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(4.440820069796997547533217965681006138984877464339), SC_(2.7490190948039197423087254188472495182835999407204) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(4.6341603090209127259800035098032060876283583950576), SC_(2.3880903942830551911363883321918117854955849877003) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(4.6572446041289735983771860808386715691144481042782), SC_(2.3379927950467602900042453073297720581194520484723) }, + { SC_(5), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(4.8521008099817356648945522422798471650284026510536), SC_(1.788149283390753729480066232949550043470007754391) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(2.7214692732902412004647184520865471768713003597818), SC_(4.5993883390222681391842648419683250330582439348776) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(2.7625924470914592531940464793248074993813372803375), SC_(4.5783969721600147952263738046249821710506935993863) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(3.0973598631889430232199102357597886480722482634636), SC_(4.38243770549209103069310850646870524266077941434) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(4.4615202634300571913664164445385680817832594176107), SC_(2.9713519540128339986214249698086124078674548184213) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(4.5079991918736531832982253515602563475953309607201), SC_(2.8919956157030106119887355412833718286458385435879) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(4.6844465404381571363429843649150042758592537039919), SC_(2.5394618325928391038622378119588663842313983169556) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(4.705224337239825715849222693910693807982507385177), SC_(2.4903791454847839836607264358416491157260943893531) }, + { SC_(5), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(4.8768716224445600566144129727770335512623625205651), SC_(1.9493259057013485489941468651424998021768381722148) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(3.288896188753107916003236812593202033315263069661), SC_(4.7781320742368641623491821013507015838490065932549) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(3.3247778739532023861541155005202171536199642696319), SC_(4.7645494104028939023889893329377380313059694585465) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(3.6131234933748300078026229443021331328847299175568), SC_(4.6315847149335902853219842635809473991627432397347) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(4.68647642654934697432587249248703530748247288726), SC_(3.5053967376875327940705022402844353038428106181243) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(4.7179932606655530431793452435751963305817615612615), SC_(3.4370448887447143657898238957347297377498576937279) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(4.8315913815647421585782680255898847463362635666137), SC_(3.1289418047403285906503500608110552996134190895118) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(4.844231776769781265530007264967536282095006368052), SC_(3.0854929087361223332218389196992004940822397662546) }, + { SC_(5), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(4.9410329299017523606402076486889743131307881945812), SC_(2.5980289585199945355528762055842005652318640154982) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(3.3566851670651562300349575508402922386254229343659), SC_(4.7947436493679075941524820281553657831545093599892) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(3.3917779574246194181463664768742590461818171191463), SC_(4.7819860049494286612680406498686207009565492733493) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(3.6732931033241433023814772022460671492147372198727), SC_(4.6563535563542660736695591730664814320724792323311) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(4.7083668628099697388551053546026483593056461066898), SC_(3.5682252451747414036861820160207362061168904108598) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(4.7381411484867750038148457133615587347206059462478), SC_(3.5014925963614948287850115474496736022827992487478) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(4.8447860474039482557850267608230319633134593934586), SC_(3.2000978170144359702426975061454921368597494161867) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(4.8565750034423192206018517154557900566383427348099), SC_(3.1575228887096100066774234625804497438731261019467) }, + { SC_(5), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(4.9461735910047342259536968202780463655535155879112), SC_(2.6787735674644576253280338824250960695991786068366) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(3.9417441318134440068639737954707590106273970994648), SC_(4.9034550028495157018952660861524549939018535313155) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(3.9682777978457445671463403009270804168929068500662), SC_(4.8968459001177439612764580191231241519804564120832) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(4.1773311144889962105148439220139248854054191869056), SC_(4.8286626872317981007578504099952023568545574222152) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(4.8575406614715527295442824855688190683518971566965), SC_(4.1001333608565885781849995761834203943832602573318) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(4.8736689212362325896464494044156522671529652158244), SC_(4.0505794955178143393506701893962226896308135585351) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(4.9287551601147010779251770426419014221764368895729), SC_(3.8221788418881979840458926247871600795297548461914) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(4.9345640142121638432673482051990823751695143830321), SC_(3.7893519709627674998117560496476928437617806084273) }, + { SC_(5), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(4.9766468528929433819013699320785773056336491818983), SC_(3.4116609888589226636096463658891010915964074035119) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0), SC_(1.5975531934145445499455782867998060380210313828206) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0), SC_(1.5507297314587392322761076321241930437692005091896) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0), SC_(1.1711261637391554525393520822022506137212275866884) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(1.3137031393373713665054776539258027781663471544691), SC_(0) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(1.4036781891639000341666269461063191708099172541838), SC_(0) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(1.8053655594676505704912918683002626466710318438464), SC_(0) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(1.8615777865101521331034987019774736777396700940198), SC_(0) }, + { SC_(8), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(2.4868666027155862362050560423624063463014865906812), SC_(0) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0), SC_(1.6963681537663636705765968396918410359210872170443) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0), SC_(1.6487162227285730697711412421866392982139140843155) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0), SC_(1.2618816992631851605706428173218226127029115948379) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(1.4072864495415986595533264529638945519683373141731), SC_(0) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(1.4989752203054474683906501795011740931935967391184), SC_(0) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(1.9077027074065342461326253142268113678510061592396), SC_(0) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(1.9648257563712275683291714097605187886945093232466), SC_(0) }, + { SC_(8), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(2.5991353820476662798634366989417415648106068539833), SC_(0) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(0), SC_(2.6195481235084993788398181848243481751008884343148) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(0), SC_(2.5660100458940575035140582094694199436474017870783) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(0.31927338814426921612088172937139434659602078657372), SC_(2.1266336167208010966030725174336651366542234336692) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(2.2928192572454368268007745314533653580109264518292), SC_(0.19349725370092510891521905819340656406697805621155) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(2.3969606281325348415417008951503940015641568511585), SC_(0.11770443802296133827343843128307786622554272114691) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(2.8555491327933046098182332178570282640746448048787), SC_(0) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(2.9189485476766768304499848550432809032647723736638), SC_(0) }, + { SC_(8), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(3.6125038915778185887521626133324931600575562656131), SC_(0) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(4.7525119434223879243476545676940161406902978347835), SC_(7.233872055484985337460772313366441801546561189233) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(4.8040595442554609748323062366077467206259058255082), SC_(7.2019154796589379900485129569989311015676936123214) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(5.2253584594777590975685975841884682542903750272508), SC_(6.9152320724856987085830621802327105417821783708115) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(7.0287745882544993036728906628573074470488910049102), SC_(5.0663832055191576273043401827286434568962286398231) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(7.0967587787935989073375399975198384619389441153446), SC_(4.9665263662398979969595317807385097132037314035064) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(7.3669430942184369984665847270615491124088688704993), SC_(4.5247568727171159056793721687975985317211578695586) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(7.4005030778110887673952187244993302751046286061549), SC_(4.463427977888737276267793104328120275143192290071) }, + { SC_(8), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(7.7047360581904019590779778430225352217268667728579), SC_(3.7886134642666439271698262578298213370744299537035) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(4.9717399387145089823745733586305970794561632513591), SC_(7.3389763547088901787175571278072890101450877023296) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(5.0218793876895695694227024303013218501549611626848), SC_(7.3096053430250263713177464091327882064313814781227) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(5.4306152874819620374094473379469431934433760614437), SC_(7.0436292685781529807460094586896251675279872406167) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(7.1494473625067568262543333217309637656575051855187), SC_(5.2766075652516322046976256398858371795352885878478) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(7.2125242928928775241498480642518513285899834879926), SC_(5.179728190165988017953634562466143743196252501051) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(7.4604981754240830803968214300115902233069214287243), SC_(4.7498879940697838929284499274461046264561550369018) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(7.4909169046977613730178923869632591982242728286438), SC_(4.6900617750217993232053908538995650497164997755709) }, + { SC_(8), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(7.7604331494561252714067089794881487385224509950281), SC_(4.0294508268691586463561787876518991332056620224694) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(5.8019199602371492796780881885063681433728457184511), SC_(7.6591859456615026358589894659614821495426646061683) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(5.8449431612958809083394798420363083089098751790438), SC_(7.6401692703801432771467720865321486779235493362185) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(6.1916832891126894384324803755499691267841811975543), SC_(7.459425116240171610751252020768764096585791833574) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(7.5330063979744472572265958910504295868919017481301), SC_(6.061896583635478331279488867702283313260726668871) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(7.5758665730834609677927170712395304160225290105655), SC_(5.9797101285429970468470070178855785217760498666524) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(7.7353980321732618101998645015615573445437221692406), SC_(5.6103570369256105070440630084687932138336329643772) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(7.7537865902447360441037949819237710156464322633006), SC_(5.5583732490459623606342598995454919109909116162738) }, + { SC_(8), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(7.9012332736463500230032331951517918017163934074985), SC_(4.9757081321700624819239729947490627705513103288791) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(5.8993483081081915064182366551975441271234987770393), SC_(7.6886100071836491570746123758042558240309917416985) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(5.9413260212486446867432470889123650805375437312681), SC_(7.6708132252538400247320737568646468908552822040221) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(6.2790996977994015166585194816878277399803495170146), SC_(7.5004714758607326828836650571695943960412472692886) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(7.5700496094795420407947636293073503010736363463405), SC_(6.1527874893333878428659274802999707844153020666101) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(7.6104398190649244046085181099357217722459770601892), SC_(6.0727260967752193932475101482813820195635327916802) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(7.7596217162714820703867200949227468306453119657072), SC_(5.7122782794936941388159708441785316985470657786938) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(7.7766711688987982087407433360342835087871234997089), SC_(5.6614699854699088597902484576935737692115251681702) }, + { SC_(8), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(7.9117883023237024464191195389352805294365346427165), SC_(5.0908310840611668671280905255392622638748091629196) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(6.71909840851420181048979468711141614532428668071), SC_(7.8726338289849308371080610776664758884585969171513) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(6.74997516914698986078551147967929842463260454969), SC_(7.8641139321645272968832734923455728676746579643248) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(6.9941142543782601833249640769596707386395498022376), SC_(7.7773122429334014474115355028856625150049616498483) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(7.8138499443528439115043170733450889340753369166048), SC_(6.903759181002902018866000264286197269534324170773) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(7.8343951456580714540346628108258716866535433660742), SC_(6.8458910419763555040941626924311513683230460068565) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(7.9054532285921767656418757805725653104974772316907), SC_(6.5801977143451748564398084228416743640426150600365) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(7.9130374770177925483375400405539140515791387453992), SC_(6.5421211598756069105959732597770536383353317537145) }, + { SC_(8), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(7.9686104117514492077813408006371039408801242570413), SC_(6.1052374390100729183128842557533199710523441301264) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0), SC_(2.167473095716121587731912883993309388774621070307) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0), SC_(2.1140003140541254692852677000749783222128092841047) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0), SC_(1.6796511744437743466272656783964388535643512641642) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(1.8429896217811417056077917670666851833478110787552), SC_(0) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(1.9459349180377605520107044071204383531965557278175), SC_(0) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(2.4045986048537162973723228230184529748819236423455), SC_(0) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(2.4686934746983498400459708934696735009686353055374), SC_(0) }, + { SC_(11), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(3.1809794822340814910131986930441837178690253826), SC_(0) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0), SC_(2.2967057003832552392345736088704448354439437682067) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0), SC_(2.2422240413382618385312996400166563310948740511457) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0.061172663227154448551277153329608133145431739969472), SC_(1.7991429654197614996243714623588269194862029747509) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(1.9658819030125753396386010837663205217046080865987), SC_(0) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(2.0708964788635606255121883903578042793883854484496), SC_(0) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(2.538144492820851667891584582871661149802027195456), SC_(0) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(2.6033618338307157605427520208990728975056998613894), SC_(0) }, + { SC_(11), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(3.326981093737861931485193395899460423573839284439), SC_(0) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(0.39795209151837785099505939564944467278986253303265), SC_(3.5154478693089854251837537995037558480226752329358) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(0.44237631689868162460349212361541565896005707920621), SC_(3.4536635077649702609500285005027127485221105137315) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(0.83026699182511012881996417984042106504381744133163), SC_(2.9462776625844107475209735945369590582762640980146) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(3.1382809107304237610347780200159660128565317179166), SC_(0.67863656725250929559747648904312933346920881573102) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(3.2585345496280253227805471623004224463100986346677), SC_(0.5866788846723945869272092416460956807137173725655) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(3.7877719104944048676024390817889721037533277103148), SC_(0.20944020436057653728808253528268721275356105428726) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(3.8609314549465213784804415609873418803745721373583), SC_(0.16083721984971719291281634097924946649179118127989) }, + { SC_(11), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(4.6620663844468865494204912492300197399831560157716), SC_(0) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(6.9780361515718149029642816170573436643012615054465), SC_(9.8906100650430231825488782232326453954726163711522) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(7.0373145888980355809987208776061223202361768588052), SC_(9.8509272827210241723847959350730352454886483505518) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(7.5223477781105675894146935837629468361544432506579), SC_(9.500702274301093218663642282409486075005648291668) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(9.6383351196047628642737872084460980698881314835466), SC_(7.3391833440008872653156323195291205030455569715582) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(9.7213707932923883352310658033244933494139164782174), SC_(7.2242269558192156271663409058559327877300384224048) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(10.057782800034991131115598228225451396821512733967), SC_(6.7162225891342822425602910218271800283956798858923) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(10.100524912422443076945989347777427173413324231103), SC_(6.6457406679654394132515621179013359380389597714948) }, + { SC_(11), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(10.505846154809183115185866487621501807662586819916), SC_(5.8700224147579674955234767490240539804763050578597) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(7.2673999093734025547290629423931321872971083701177), SC_(10.045669525736338568928219144116985236967058594375) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(7.3249322795850745531107392350979118796196528832441), SC_(10.008984794784043643219880742318298305521033721178) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(7.7945964706202709364263308472608885335941575466297), SC_(9.6827083054064633576237166898436296654871646274692) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(9.811413653636669730526745045564138449150852578001), SC_(7.6174690567844474439670459695997166220237703627556) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(9.8887761121954549878823221267610685182642417306365), SC_(7.5061548353312469659451490362796542176496302246578) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(10.199397124500628041006587786172029951501180610828), SC_(7.0129729203538491851449984997166462528477532826883) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(10.238460960766546530237803157812882303042475574801), SC_(6.9443910364819257411107445068134408276887511456379) }, + { SC_(11), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(10.601670072785220161703250211390576415899216643615), SC_(6.1872337092154794882930876239851478277032785468704) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(8.3520760015746565962394572211465738905250900664255), SC_(10.524491170028298844782221926315893980529824338888) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(8.4009541010537980643968059730524682441762114664587), SC_(10.500336569262119716286441086351963504320603429095) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(8.7958232186488404380383265622585272582362468476075), SC_(10.27585020268324218956008588733390495078926797175) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(10.366281553012760412986387992021846217933576366618), SC_(8.6478012551228897365062142266601263196035674768941) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(10.419518153797230760665228051628617586347655178774), SC_(8.5542118823780913860248839686044235049823831927752) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(10.622730590579734640877084302705931136592220817217), SC_(8.1346815356468310382676586845306821776869647430531) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(10.646839478435421791904193985927588776876694292037), SC_(8.0757460350057218621653575759387310317619569445758) }, + { SC_(11), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(10.848854798261799032568186105530591943264763391147), SC_(7.4162390831519878306438294294535916105367629630198) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(8.4780099404798621534818595739210022147320182995527), SC_(10.568787703608691238872807007114528057489260505398) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(8.5256317539929159210587279312084536501478786408961), SC_(10.546179759333481252712140004165791807094776775403) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(8.9097768376352311196233262988426787410428557133795), SC_(10.334567666760573839364348016100468108315128772381) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(10.420100173769723127255423003306520049332447702813), SC_(8.7659008468686277071103319690499471263712237818374) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(10.470282755246597545933770254174219774798879414106), SC_(8.6748528590099234515502704290551284395531007224226) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(10.660307028788603161579041627045976503265633144615), SC_(8.2660317058416281892447356875399886731882840462915) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(10.682645730839116547148308961551732405965676370236), SC_(8.208518452918906669770648231119970279356656419746) }, + { SC_(11), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(10.86714845511359374364733182116233674397199120302), SC_(7.5637257952320644205324591578841982942030348755878) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(9.5210674897471645978357242509712851517584303199635), SC_(10.840773969006494307480215488162849961310861729028) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(9.5554934750471391222568135456089414346922636896698), SC_(10.830386857839104365397679126065112123059993586184) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(9.8285069914019465398408571500570865205073540427657), SC_(10.725852514539509075011983804408972974493214963925) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(10.7695924816026877611378179259886016466317205309), SC_(9.7272798172748387950451486302833649522985295748122) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(10.794347415698217181312076216414481916769508547765), SC_(9.6625694011762836703817950015273732007774021894685) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(10.88104385163569629053560688941109986304830619697), SC_(9.3664269691510811059708615487871052027934879050869) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(10.890413070484709140785336522882921452598174579773), SC_(9.3240936718798667687807818118935865446829726770234) }, + { SC_(11), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(10.959927507437739108924762009895355126804391020586), SC_(8.8396763598709593261309091020867886900750477284118) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0), SC_(2.712400632124789779551613897864424284445095897895) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0), SC_(2.65315950199915039740317082554810414160948144961) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0.26558322243320311449786107587522467208197588227562), SC_(2.1711952521528709946492249708876661108406979676679) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(2.3526161133228662965515720308297389717394004483467), SC_(0.13798255002468249326746163899466147417427544940488) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(2.4668426580062830301798730200744948723136068806668), SC_(0.061482969087541275222883522254161623036137330397865) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(2.9749146083872193340067257336655298417940224473351), SC_(0) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(3.0458249942417791477076384072896256097549023968441), SC_(0) }, + { SC_(14), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(3.8329718186425153457294672506857618564521343935726), SC_(0) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0), SC_(2.8714472333765571808649462139783127204697421407159) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0.022997481996621754978701346286085774277532252172362), SC_(2.811040572865369404433005658530487632481597872277) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0.3592177307105504485025885171160718948877219664573), SC_(2.319040300869333530392131272148606214545187682321) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(2.5043592933339455439020386277688336180191652620832), SC_(0.22652559060355558821928869529119456488681792000873) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(2.6209640690774752417654958859549989430546814788873), SC_(0.14680874260378736281867774092959680870697478214698) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(3.1389608668833618575499479400654572692572811403025), SC_(0) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(3.2111771611923774939402409932448052718890946804705), SC_(0) }, + { SC_(14), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(4.0116529001298310151592917460228802827086988631932), SC_(0) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(0.8604643264982837573907779859918270605275596174925), SC_(4.3810069365429508095223141272957431475989809639035) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(0.91213616611646503957451603499362808304359695261111), SC_(4.3120681186696479199585820461044826437055727110176) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(1.3596156715145882260479072164593338420793234269071), SC_(3.7455432191409963447554806561495990329879364233152) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(3.9600232281104855215800444689206220997274394675627), SC_(1.1853933726475352501322205288519746735055136487368) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(4.0942882836788902152941524718467514435311644455275), SC_(1.0793213621949821125460809164614107851528087414732) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(4.6847972274725244803460104298476352684477742898129), SC_(0.63993416104843326129186452885226359993309779160584) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(4.7663979040184663589255919837989716048654106826266), SC_(0.5826957664620422700134497715436169641588190211746) }, + { SC_(14), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(5.6601202935847808939551766357983248755370628462259), SC_(0.012631425510332257629147033221764456411391975236853) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(9.2321751158967468720299266245486199484050218968146), SC_(12.52202042213423058719477457477292761492012976371) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(9.2981608091877277479491057174088533263545434796984), SC_(12.475553528581657734294875978437448563677598612833) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(9.8386189149449152284634561528122765100949442958505), SC_(12.06956900459963607397201496871612961141295791243) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(12.228338235228003011414322773366293094085281000672), SC_(9.6343932038269175305471017308801976371056361931982) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(12.324581086769619427953584846643567604038466374621), SC_(9.5063053253736498291506217586791508997196837406835) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(12.71916830070540501467199288253137899321225303309), SC_(8.9408574136874291596499177488769894969029304373659) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(12.769995304234111910713076661107672042098461927792), SC_(8.8624595207995110844313678574452412750333006241654) }, + { SC_(14), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(13.265574113841458766673693178720740223863748439708), SC_(7.9998923613975086662750206972033504731320963696505) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(9.5905422256936737543946545028598075754262839333933), SC_(12.728985795962073389887147603334047419730838533607) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(9.6544885556086003405058068391558611381831367665573), SC_(12.685835538266285056921891040879209900282370800983) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(10.177139671966946326043852027666662119213013365815), SC_(12.306394053405266230432524053579427052475442384597) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(12.455256060826934797239074083691981299231411536666), SC_(9.9798805425853216442255795757828648550836584432603) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(12.545211501610648354008260572107527493016166127527), SC_(9.8560124247286671524415360854082001439947923821433) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(12.911266157376058853837170796457610265310061120676), SC_(9.3078972513714531563710267305076143719673211780216) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(12.958025395879006984351602704090508443204326743064), SC_(9.2317434314987183347266214623686316960094030808682) }, + { SC_(14), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(13.40666556158407406568555218720533971940179232107), SC_(8.391489522023476545900136272052011344010151762742) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(10.924571090733759111139368686815066348696604560166), SC_(13.37647688373602934841616689662352413151292941703) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(10.978527611226199219998476168340384096816204792687), SC_(13.347534151760587994989222381307115396575798320029) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(11.415263295046869011568123017176988450501087687055), SC_(13.082992592817664846529067629206749380290826277173) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(13.188728869765856802538411746032041746948092278941), SC_(11.251353731372739871693183345901103303968353023812) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(13.251460881444985961870998414921999749083073942118), SC_(11.147844970102549252056353596161489439503683132973) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(13.495538807341318868145144916423822677847335174208), SC_(10.684809703141976816893934585336406351015315542357) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(13.525150013755001840948121796327325836477235503703), SC_(10.619865846941921800690934769302397400955515678411) }, + { SC_(14), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(13.782965806151883705612096996050018884097593088656), SC_(9.8942693945689589520032049573640436380150194924384) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(11.078307913549649115189339800474350120478553105796), SC_(13.437063411560137647118839057844491165251430575052) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(11.1308250432840828439057823327330083595535451321), SC_(13.409931133476240865719799180205243471591614261363) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(11.555309587162449138436945724144935112840609617566), SC_(13.160265827907934226385946278406255444263887883982) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(13.2603745421437147914681019662258068281146239516), SC_(11.396129387551758728521168790043692068759289710526) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(13.319579940051631521701139398781880357525824119321), SC_(11.295523779841010092031236110729828602722635893919) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(13.548169980320285938363354658104539047079102868964), SC_(10.844764297307601642574901515001679305760057524415) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(13.575656031726235667410425542879015330224675924201), SC_(10.781456712180302221277888387584135831237714912411) }, + { SC_(14), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(13.811293222095159790481290114682618950215499633651), SC_(10.072897867935478593556664868569368918705156518369) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(12.3376799884847119942429915678326394905222640955), SC_(13.807340446850373936514853606817111070107270940968) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(12.375179390117606904175894056635750073432887956798), SC_(13.795103934940870434232213595950420398479841386127) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(12.673304949198538860614626482744348973604199470001), SC_(13.673400762377738407539699762319608810879847296015) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(13.72403596367771746940488462987098400619642947658), SC_(12.562598571399290144702727666030581618252957880163) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(13.752868126267133972249249797053273220642579319459), SC_(12.491937571874878338986669517487093162384935715533) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(13.855087057485530555087011953314488902101690962355), SC_(12.169441884435690828477698880668481642848444488126) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(13.866272824984795888676034616199145581916429420222), SC_(12.123439915028952637672168437400916462230111375412) }, + { SC_(14), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(13.950384113585257550058783137400617159156712021496), SC_(11.598290717892468144208760568350897004106790749988) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0.14437183813444952995046264009219710507250009179279), SC_(3.2401679013560077309418420449048382205452389718558) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0.18565330947377194350189781345113841664728051567543), SC_(3.1757635495374392921701019214791832206664838609604) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0.55105005335820856520027183656266777712398307643896), SC_(2.6511108197807158958273833393904911309219761341415) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(2.848757026543820744283929777893728970508105520657), SC_(0.40722789149347153214474663459817058871109536524596) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(2.9730977826943974023699300135993479878108694167746), SC_(0.32060015530190816031101507520220302583193816789909) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(3.5253840637290069748258666265498863323246175637229), SC_(0) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(3.6023822633820690530122710250418753683081356239672), SC_(0) }, + { SC_(17), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(4.4561970118575053691487702886584238048305213389735), SC_(0) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0.24387525962812971282871262494272953501408096553407), SC_(3.4286049343625006443158982676532168966157003976657) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0.28699681480516373029170333089207848274918196669284), SC_(3.3628946662817724128208224064701981736686486482492) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0.66724223661495793307148481951275665984659556478335), SC_(2.8270369571556529839048642191352500189569177775111) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(3.029027377583354374670622854651461607065934743591), SC_(0.51785143912338237878280093132721802085029846239833) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(3.1560233206299228043711180008659812817640418725618), SC_(0.42770627217861634777279096852618948926450904736722) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(3.7194355959229359529759669218222938283661335531862), SC_(0.062029296910114800596443260464116103522490321920603) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(3.7979039312927213588929712156162654626080943410825), SC_(0.015470025462353473781884048826593946436774224686907) }, + { SC_(17), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(4.6668301120804469081922394623852400965531412702746), SC_(0) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(1.3430265865673867854915520685656993942967834307375), SC_(5.2256478461777866139467389922440518004557526598227) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(1.4011851331584713318286379280106387164858686633294), SC_(5.1503038238835517561370647803464172296173359928207) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(1.9021019858374156286157513830005845919437112662229), SC_(4.5307592670455697772849909010438551434193052902878) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(4.7654048190055001702014318917185741094899964730528), SC_(1.7076005168588866975563951629870223756053089584583) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(4.9122318247573589077674578775160755867224884961273), SC_(1.5888703554844460739668212150059743338203456293896) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(5.557582948498653707451854839430948580317946675781), SC_(1.0938808024344078199000738052308118438968556958118) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(5.6467260818793587630038668621943491212321922963808), SC_(1.0289372102314034351698515282443267951858648996698) }, + { SC_(17), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(6.6229325017109936233803989963888938538337079534983), SC_(0.37306885157970940382241750995455814076013264170327) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(11.506018233116187488177504955328327666326865924581), SC_(15.135022784030456936607830884362860734432602102679) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(11.578008508844123908971868624004442394838015812444), SC_(15.08246841117147789813438904916221699624805812075) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(12.168156428350027861196691043632506968227878942401), SC_(14.626386112283399141143998500400296346506134963189) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(14.804157994481700865564970651061674034812578267578), SC_(11.945034584860458985309712863139265723901132783274) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(14.912267418790559146295157660942134582544798002848), SC_(11.80517368749314938782682092134852903803706320954) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(15.359046075748550428176045567674581751319074788497), SC_(11.188312170893584054392764322818221273987573090765) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(15.417116180354180722121982907854950332115959739874), SC_(11.102841508094886995085031419505518320845192168269) }, + { SC_(17), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(15.993557843256097494239004590508129287775886193623), SC_(10.16290500367311056621296201751065910823435646512) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(11.93259289206639824292981819385571390066189191893), SC_(15.395051705433618129044439490506579542045957198206) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(12.002280999637291534487659824993559714989056301744), SC_(15.346083283606347256695754318130406595273500998551) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(12.572436163162333089853760747877678292872280074224), SC_(14.918778613890250933246981028561121075046489949182) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(15.085792240937927667061726565803548544042167250062), SC_(12.357114455411609091427563841619687721868041349227) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(15.187084790323376004640709262880052578986122121054), SC_(12.221991188567526862876745306181430409514969230653) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(15.603024847859272971682527952589593104129456806449), SC_(11.6247113056721413741909679953305010048518650533) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(15.656710098756545197288132524481082518058790694152), SC_(11.541792563601282491396321143083454158040488867549) }, + { SC_(17), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(16.182644762381018807376652255833514447914986375335), SC_(10.627517028638517025423710724513546912130868779626) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(13.512366690897172871431436339709987228311262039843), SC_(16.217477884719730918119621220440608739841545595096) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(13.570868156839957641812731755271610973722519787925), SC_(16.184089808456311350694985038690044694905905629825) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(14.045140284808616046098268442525154718358037461436), SC_(15.882690703004829109561677951519003320600867462986) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(16.002453395895476185204551498536858820568822684718), SC_(13.866972293591558024503887992575715363096627617541) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(16.0739191867988760849651527591192323406687724469), SC_(13.754569947462424994034541611565226050325069776374) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(16.356023649524715672250137224385689456206750284336), SC_(13.252609949387298541509089105510269939895837368046) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(16.390834815330655643457996047050500283392626584963), SC_(13.182301021679397480065638937846564537169520219761) }, + { SC_(17), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(16.703628792074241541319349087759791223520765543245), SC_(12.39787426952464589317898242965882960048045162636) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(13.69341451867880905010070797700898170868917813122), SC_(16.295322255016774902831790045515039512988620447648) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(13.750312509257044436023642521525693464568371903329), SC_(16.263960667948387442526909216813239438849513551655) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(14.210965067432562864625275905206769874288653019325), SC_(15.979106465481747982713004635848684035964131033474) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(16.092627785622583029241506074814999710079471887176), SC_(14.038049133823958206307671240416939084876963858646) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(16.160172911671799517823421123344434943433085535588), SC_(13.928874142972266982968653870903073281869304178505) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(16.424908805173163792782447075361817930612251327764), SC_(13.44059363327360055688968621108691869661725101291) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(16.457307619842182818725385622456676169687520873429), SC_(13.372112637376386620758718753227331801393998380904) }, + { SC_(17), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(16.744009566208498479682121183599526546240989763072), SC_(12.606800141930339172606814789316829854205311669265) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(15.164232098588991332185826002393043709764925490785), SC_(16.772141622145132480200592023310122221466597727453) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(15.204479110282743331126436210011358550890943780679), SC_(16.758069532057392943438477536967613751702480461392) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(15.525121339790853202305908496206288395808054986842), SC_(16.6196619509124564757779966215506663445174123869) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(16.676940640568211183614753364127913366087936984488), SC_(15.405900847988278000216485596351743089787905281905) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(16.709740030629665765592634012952047294856994142534), SC_(15.329904370028489853394362679680084636068590211648) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(16.827400025396642632417002643904182702471594158181), SC_(14.983857442569853937553209857963785772861198912686) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(16.840435273462159332414553386289590545770065458501), SC_(14.934586284155619483278065105898927993745009725485) }, + { SC_(17), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(16.939843434774604652148548927067963332918391744563), SC_(14.3732814897329682167467320699655189571314510654) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0.39326542142841477848937602291297185140804535124815), SC_(3.7552241240199550124461182716019052727043149614565) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0.439318276781494020252379301799905693872112886522), SC_(3.6861049317768231312050359781849773876446844920648) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(0.84398973934914948313963075697865408742313915422869), SC_(3.1224281271187152844806554421466835029469385966283) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(3.3349155072027394287822776516206428703536642221277), SC_(0.68526886696904600298816796741630112866648051736665) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(3.4685024063998838303219876468203639349504130587851), SC_(0.58933813970995139795288785552025892875495494085375) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(4.0611566091060913566900635431132447404318669825094), SC_(0.1985687320651031269425224438323549606439370886598) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(4.1437059643025156534083422409451394924939856780198), SC_(0.14857089363212682631852305280182924867360335219458) }, + { SC_(20), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(5.0581862989073316902141877041473678338328389749028), SC_(0) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0.51437946158629074988546386854254020011649935336401), SC_(3.9727328294787529246467849784513342030128317217425) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0.56240809568134511290648443375496838773622854328404), SC_(3.9021793684988641431828464642951160997591039441116) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(0.98304386982521418669541426666228794504439392588054), SC_(3.3262286846534587418269002771590834576998326857193) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(3.543468176661473404314804350618454865456618112365), SC_(0.81833121837805283281693922524285356853238995192934) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(3.6799635226164913041799280134548397894610159857029), SC_(0.71861884385978104260417443271838717956976770063884) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(4.2848418125490394120574079381043288304649528553072), SC_(0.3108728101002758570020193971425389758490602379338) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(4.3690113646539952047674830827091869962329551928836), SC_(0.2584772384539115486486422118856055471810050849312) }, + { SC_(20), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(5.300229554766274355217193954905262844253812304779), SC_(0) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(1.8407297464381653751331151830476934096902624901838), SC_(6.0547483258962203382383225498733656254652957565561) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(1.904805038233385253574884649463753482882996132164), SC_(5.9735540035195808740560162237539791771831792261849) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(2.4545448825581795697603216362768253973570129985834), SC_(5.3055371832911269723138659354455450016992781519897) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(5.558627731276124518348026535236940944527093336422), SC_(2.241500400432410599118761114695227191822642762066) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(5.7169394996279094985645913879929378451932651422418), SC_(2.1112044332128742321969759017749406644068523374493) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(6.4123737616601798289175116607552745181763672215216), SC_(1.5655154139693905686005846090249789739046269239886) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(6.5083968323739291231955722532052471052937161510047), SC_(1.4935626601807575487042367052391416079021134632756) }, + { SC_(20), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(7.5596904746640969229177922477438222494684346147364), SC_(0.76002573875546282312965326544804848314451841058235) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(13.794487397105652852797123356966058423864433198804), SC_(17.734001089201369543296955625989098798166804515843) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(13.871961750135913560927288893709412749975560003598), SC_(17.675889411042579793354043832710304874689809578026) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(14.507536518440891374443772711135639438059001311826), SC_(17.174003815907302292452866312089692267661713806225) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(17.369162170780163399957287728385204575098770326706), SC_(14.267130886637463528344108361323791606990358688178) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(17.488121524809304471713561490974552685660347146533), SC_(14.116506795983038553856058647356411704442951484053) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(17.982532046204292281128497391301417510164288087482), SC_(13.452695896525244826908749002637690293291222882502) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(18.047198881038573479562840271820926690237508338649), SC_(13.360774212089305778370870886256564928772273081334) }, + { SC_(20), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(18.697024164745455756567339793043238786906089951389), SC_(12.350411225017006772362370782984608122580054663478) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(14.288670396367583796474618302845022475814690894451), SC_(18.047869226551438807933657512325839428541664047861) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(14.36360231141961215104420289234124440424994072539), SC_(17.993583143010443189873015456831794593933495350151) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(14.977185274595666665207651683503722339001312258175), SC_(17.52248018348390369101020006641809212293102478475) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(17.706113805631898282526610356833534647093393963285), SC_(14.745342220891248621160606221032275221033783324881) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(17.817781041330786455464031449585047829363967450284), SC_(14.599929409601692550246908252875874493674411361203) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(18.279305572165771187584300769223451934497196545549), SC_(13.957755964212609321496089801796860333022449275676) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(18.339310255499037445849747206590245063180203188304), SC_(13.868667411753943219363187876657477619104214537412) }, + { SC_(20), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(18.93567007191491838824034836358475598842110777933), SC_(12.887017864166223068967487278153581050043147850347) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(16.111474381324530750013351754586479993593134954942), SC_(19.049425228498573826111009013003902324712037402563) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(16.174125443277864579115569483841252501548138377523), SC_(19.011901092847265752797150598848266806350563397524) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(16.682711460125123615814444026615425469235043298676), SC_(18.676352707949193147933273618356044007564333328218) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(18.809087036609358877045768933882418763489968953087), SC_(16.491500389887885949368868733023641426183939538233) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(18.888643090585384232164365736040548575190919244229), SC_(16.37096789270299898245838647495418536809282302285) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(19.20617110328123938940938041849439095285416998646), SC_(15.833475501911211879275663037806038018366105570638) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(19.245864942948530300500601994979396576648264010597), SC_(15.75827585605826081957277536429229716304989169495) }, + { SC_(20), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(19.611620685420950946563170092187674250838750466454), SC_(14.920336368550502561853254548295455223566432544093) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(16.319463441732062715749540306863082232744792449716), SC_(19.145202084420413204464868818351688199755205349298) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(16.380361031149278181902485617436402852063567536033), SC_(19.109886683924476500074661170876029696951841355699) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(16.874076663418440736289710293718980551097693680552), SC_(18.792320433386626922620046588326483481620396260131) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(18.918278923713994764220865399737419731464568908505), SC_(16.688595349160096288201592031826734891281026519378) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(18.993574621530615244626812007722234818361630894733), SC_(16.571586558474345871480918527152331123162044461135) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(19.292153527605479002052398186977579244936152779246), SC_(16.049056762890889418459826482908383681921205433372) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(19.329199289842474649186876482857328997918610272942), SC_(15.975860190738055928045809123565923541074385628906) }, + { SC_(20), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(19.665681844984031525518468446299714932304468162053), SC_(15.158930468825449602625100700162762393569876479539) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(17.998078109909625436070584364366376465602169896743), SC_(19.735124737342476882330959136827018518281502624452) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(18.040831709649030353876081070274622980715392552264), SC_(19.719233779411409593669857581694149426877726934238) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(18.382059926698191764937446311547293506852341641095), SC_(19.564556706589202088045724182321672683106769027168) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(19.628251957386054058589582615565260180225585192616), SC_(18.25504563731335217664329721003512253116018127357) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(19.664914905072526358612061962029190942225318490273), SC_(18.174171240926689254168542776322218646584475720669) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(19.797909812233646316693429097841395712218259353623), SC_(17.80664455002251803320237553153157781011609735534) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(19.812821257414415375227618619522737064595277157105), SC_(17.754398004789837205183898744078319959839640177997) }, + { SC_(20), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(19.92820144624215533248395787343029854871095947766), SC_(17.160280219711473848689605391618629018197120013196) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(0.65134208936734105473157175300444225921388167937448), SC_(4.260380069239661594734583756651302556714814873294) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(0.70182203996257925254745640880576955124212590582596), SC_(4.186895330313698758691560765494396166677762654539) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(1.1429538396105367090684146265711462255307354060596), SC_(3.5870566902911733413040736034137847987121491324146) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(3.8133025008848662870114826319810611719538078070261), SC_(0.9703978999080680214869166670676918023873300225357) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(3.9554574823668804061882834624362284085313944232184), SC_(0.86583072893231422352414239276608325016438188165846) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(4.5854843920651918871558891418464788149304795877835), SC_(0.4371104568291518402691694967369144382892286923525) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(4.6731682397612850513715371037759046983537357838624), SC_(0.38185094616014899162517214463987422845554336439839) }, + { SC_(23), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(5.6436756349601955690678790248260647751931798168977), SC_(0) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(0.79440819746086359697314827538721843813088400695882), SC_(4.5067091439727555152492908914490481412472583104652) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(0.84698562769729355420026928511480537571929786116967), SC_(4.4316711514756227310604978416389154149018916253683) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(1.3050927864563752492099522321597363016700916831259), SC_(3.8185676632248368134988121278594709431277801358443) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(4.0499437429521374022916773497148032208131092101136), SC_(1.1261597817755367982426784618642785311015130261824) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(4.1952419727965399115243688489725342010382758152132), SC_(1.0175713972163468626973565599016442746245367325678) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(4.8385108610246303904832934249997475110936326449977), SC_(0.57083273189100287077887289561613394902922816117026) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(4.9279539603589206233168502594378607656815847766845), SC_(0.51303253692964735526098246251742973353537986633354) }, + { SC_(23), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(5.9167048953056902791822692041954306078129153843426), SC_(0) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(2.3503550520259767444245488505086783007766929441478), SC_(6.8717176474036257647113405756892906754874590111734) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(2.4199022226209881964297833833800017472242694223443), SC_(6.7851052106982070553272895276142514469493215732358) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(3.0148534596459355104648780855771723991224893840923), SC_(6.0721661630729554911139331676698664659629692894741) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(6.3423568665564953520033965462667108070960756975811), SC_(2.7846266988432163448744396901837993887249582721018) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(6.5113124244901102861107182286523297358987634536302), SC_(2.6436199845176953180650428571457175536784706039355) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(7.2531246891536845085558500564849823155647862203362), SC_(2.0510561796460974202481434061601360935528820894927) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(7.3555133464018964074033985523247741071507657159932), SC_(1.972635214459745612726118875776614184433005746067) }, + { SC_(23), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(8.4761793467003926683370484506375012487886905396724), SC_(1.1677154189059859463982243023844250479749323671972) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(16.094366690694536501121385830651937098378884919635), SC_(20.32188458010038418672786136664669289011926131075) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(16.176919692065378047433813927383000076159302274197), SC_(20.258632479999189624224617839195224556306862500332) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(16.854592829930279897954810063401236041085831408202), SC_(19.71432299078445068429768831974264359866701878407) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(19.925595455651351199981341662147924034748970447041), SC_(16.598163918853664398938060767319902601368538510634) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(20.054604715729192853169745564132912578741350097409), SC_(16.437565129437350951209466415694886701832260809459) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(20.593061839611990055436109870800147882554514865974), SC_(15.730280760362499145447164313482714089612208761666) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(20.663817240219356293560742334589288430848455963211), SC_(15.632390791958285558507487736323166180821874767135) }, + { SC_(23), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(21.381106454565069138331281553935965081345386589057), SC_(14.556966500716078209803255344004054637855995366666) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(16.655685568874268409804781277751008721727921600129), SC_(20.690158473967913604964566625171532909151159595664) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(16.735473398336749906715557037252342540084365005503), SC_(20.630951449227138616102553558300037564661529731793) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(17.389301132439845258177931842274760519991723486042), SC_(20.119266974590389626674765643183056249771438047104) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(20.318309325723166680323233014176519918349867677494), SC_(17.142141827642308552637422321245579269289846108192) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(20.439589715847882617891914279086194216452931846709), SC_(16.987193514449976177871372972525960647753106408325) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(20.943287300615749600783435929898421183188768595507), SC_(16.303452230265165321955527369288486771841372509717) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(21.009128277828751353877963170838928660163222368754), SC_(16.208655932084701001774220671425535967639060077319) }, + { SC_(23), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(21.670319616353066050123469680259714579534620121108), SC_(15.164769685742017252114091980357681953788300295348) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(18.719379616645862847013527970591236471987599987546), SC_(21.873844530406026129849606947390235764242925337019) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(18.785872271521334373013073698384899426573646500237), SC_(21.832454113628122359947425386630891471499579309482) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(19.326254061596554144234204868211147473860719691), SC_(21.465039221652094421618854782911348926859797066341) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(21.609869132414596837136768105913665344953867828996), SC_(19.12295118286093883093631609001667279632228073658) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(21.696973879105915470618065499147512439480143468525), SC_(18.994885092404044154032834592212640295811546314776) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(22.047633754178267663223840941972132678749588154583), SC_(18.424502073224930807138890623519730051290445875146) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(22.091911166639428196905448228255439989503480402285), SC_(18.344779943326535754575375068932919780970331666011) }, + { SC_(23), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(22.508098317349331977010249318529558836454775360232), SC_(17.457436123299601083059307229255784289526074683825) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(18.954018515049052056671706648141811447779866205133), SC_(21.988040347938265772647057422896660069837199365149) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(19.018618671368630546252344814574891058157886575805), SC_(21.949017294492218755733676163974128497855478936416) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(19.542970874164947635238689439972443261488919460253), SC_(21.600858699169314801276423397208328913232982699861) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(21.738434676942093453374116826053599592475321040821), SC_(19.34584040804548262159226926999010986223694867041) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(21.820977657420710139516856327441789932595756916225), SC_(19.221572679242199282451630662662730250895267155192) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(22.151318453911100624536122624730402276107280092704), SC_(18.667341464191570358053720051888612975310071862043) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(22.192748716369740568674364251408605901667842063115), SC_(18.589784704644156934494928338334132124529497439145) }, + { SC_(23), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(22.577077761028710404064696340429578305893888553114), SC_(17.725205825292092409942070647393020826756724540386) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(20.837560991887821805417784672045946478721273663636), SC_(22.696305051176980244291732989824712232321053194115) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(20.882633596288395984893512001209616996832753592712), SC_(22.678616742520000592243973497806049667817884919412) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(21.242938625239289640499957264151161561602305736825), SC_(22.508097640246702951532550350840163806535177126056) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(22.577996739207148335024288466081573515320131641119), SC_(21.108695064822106441366681319841688741627819540614) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(22.618420977659289384592065866142617254380258384727), SC_(21.023300403168780745634634052187666365098291679048) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(22.766602381445384780523190566337483630162412931546), SC_(20.635905330591112714765315652507702484900754160756) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(22.78340770400166649758447388138292542629065000453), SC_(20.580911027297111069908884104728072486416570955041) }, + { SC_(23), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(22.915373322882104730687705155906575322633341345937), SC_(19.956556471194319977091937100370003020528697308289) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(1.2809413750287839345400894101729317198082013475557), SC_(5.4103054384754350956339668179975489810618717029562) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(1.3407208767717036012116737827716813773978744943398), SC_(5.3276495634238617439807164302117582203267838709465) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(1.8585480902402196911319752912701926096501467756557), SC_(4.6517730423149269025491809149050064490452397369055) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(4.9069626840916963270886399602875263693015308385403), SC_(1.6568697195174546661257423825008343090484850248149) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(5.0671341265366823604504297912034006596892923696265), SC_(1.5341346356656720458061504699435750087528845807416) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(5.7756624518283548743255998169211442252718919789167), SC_(1.0257158186205398923570324794978454153250020395511) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(5.8741197770919641317057027746064671732687171040449), SC_(0.9594269514531636689426928691713712144500047611942) }, + { SC_(30), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(6.9619807572207523689998761835888371510418225950583), SC_(0.29634286801447458509765833581280673246849243480359) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(1.4761433804596787010760098387920807554788718635972), SC_(5.7231424709461610582670341922985469636581822251321) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(1.5382700946358177706110210000978851389238252470966), SC_(5.6386829373707895188444693585375364404397326532567) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(2.0751628066050520680864082410592017207870345244593), SC_(4.9474558904480181082466720988520461573023296633608) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(5.2085716978433131830461811487976802595628034580062), SC_(1.8663081883603402257708328081150637246577799514845) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(5.3723805854013396988050371577470009477364272333255), SC_(1.7390564724592752645040860880941502789568421392294) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(6.0962929263455705656598837919022130923783885826991), SC_(1.2104857925860809757950622352339960503730301793476) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(6.196802028236874482679323084804358459282440529282), SC_(1.1413674163318195291510892710471210924345922722428) }, + { SC_(30), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(7.3060708580738297226441443302194660557207167579451), SC_(0.44627728594865453047045059927408436035261899580019) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(3.5744263339569324617716209181263839862399544528552), SC_(8.742642787385538708062844934215003344468126839995) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(3.6554506239304317755753296037001145226467080101069), SC_(8.6446440950599196486694680852798537364950540441641) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(4.3453783949333354088164110114296605931731287836252), SC_(7.8372266523473088375983493938656770663055567677098) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(8.143396046337660474532407807862872009363943017475), SC_(4.0790292342263685807373289968677786357363987790281) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(8.3347375120167043716668788560229381126669131659388), SC_(3.9155210198792658213734672893008542312148164596529) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(9.1740012764047894392224627352650247003589223980687), SC_(3.2246696564883235824809504193502534451338839020415) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(9.2897527460843413876581678532111720326549314126477), SC_(3.1327159765466285050456069878747263306973031955805) }, + { SC_(30), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(10.555806136716738174234942686890223514182353698305), SC_(2.1791611013067461496691567413642371926534858310221) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(21.493966684687755624000320330161037972180030966262), SC_(26.327652188020278909819917952704645189314391848305) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(21.587191583043692166616538940981112079762368447721), SC_(26.253620140605703609186193666141120595759112163597) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(22.353398585132500992946755732796662114892757305752), SC_(25.620193572138611814781504526465552611688798261616) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(25.86534357036138175489955898994202171802227813274), SC_(22.063258262632057345911271152008550540367378361643) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(26.015465295403022627999135869967553463267246511072), SC_(21.881682109570240015548808243505192601119762449264) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(26.646259897952880173376195597702776042402638723852), SC_(21.083057843775455541919229912246602919471265689993) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(26.729748090750893817377664946466924070817213960308), SC_(20.972640525274920203935098652484353913162652363082) }, + { SC_(30), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(27.587378104892656204029347261172756707619303075516), SC_(19.76088086649487670637476292640825147237956466989) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(22.210545676757907813962547962674897543647228547441), SC_(26.824438564336552107637753145460002374145727822432) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(22.300536649603156584486081984389044670913298350778), SC_(26.754910757380058227120221382431008143594912306117) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(23.038996261333414653652442448179604435991429069444), SC_(26.15796741129302286658178612017336782453613957888) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(26.389409360070716413029396729562645178458601262734), SC_(22.759614041810829945869006044088213929505923224489) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(26.530887584681499790818228538465546277824381005494), SC_(22.584612935023644706321802965583075151851022254245) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(27.123003834515636919094103468704367963827154443093), SC_(21.813541918847709759773509556233755312275977332787) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(27.201050696842917314315885885307274985765606571448), SC_(21.706766258498699330665856445063838126333053279957) }, + { SC_(30), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(27.99711835725381140873602997899611553878010442063), SC_(20.532478060046639923699248600870576810857908358169) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(24.830018373857992223257187552758752227817480924981), SC_(28.441106218410795042466575332139040678360956368925) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(24.904579609555599783292584177237065420149870241396), SC_(28.391545335114980789426750720945396449310025269973) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(25.511812027937538382541020796928370126726186653768), SC_(27.95681217126836912380739560851550909267081429468) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(28.127191495379380729311265443402588986724334351323), SC_(25.283072037713694572368100743206416481701594626802) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(28.230242319612840955124189785465679809930251339811), SC_(25.139166368688789826791210154500550247746238269604) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(28.650934607671230157592309360792520284181833596086), SC_(24.49971310321466513413424980953126292742385728678) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(28.704914054325054830275626441454796498135093440632), SC_(24.410504960918238058848221977913546205202594982446) }, + { SC_(30), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(29.228780535928886317743380488000295008212626666923), SC_(23.419727455237458220152912523784645603663408035819) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(25.125982737481238866053202502584909962839441289395), SC_(28.599558649102854862123324595582235486566433939574) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(25.198358965496960099550418778456316280631856717258), SC_(28.552677557261490844326504687345722117780103592894) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(25.787123203553865655588229112370446413192024345916), SC_(28.139762151355790624859647549942094354987767174418) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(28.301917214513661829299455840192907897012561635012), SC_(25.5654866971394918267284773738652809372380779342) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(28.399799736941914163841032944840862497782871424094), SC_(25.425957197268121301260565990428746154596655382603) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(28.797488840086123866696241210278965860700324722089), SC_(24.805157718652066386991979460055934988189639496718) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(28.84824396049385979817953022057193008777109376996), SC_(24.71845635074659740937279228008149011679705883508) }, + { SC_(30), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(29.335725989503924871062136837768424629226318037932), SC_(23.754133129743331266996340930043438600159970191146) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(27.479259630709795696076028168952651085762439204754), SC_(29.599040828430097812733707746737742632111030575387) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(27.529198504784168790394200451964586608654387338266), SC_(29.577267782718139791456136192893519271375895039141) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(27.929613226041841280636944764726648680383252284382), SC_(29.371428281824468186658750556429431515069886459015) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(29.455033927653193169872173783193809567954148668755), SC_(27.78015285726955058799609046112152841773178771) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(29.503840487193348360214926674629498866884796952723), SC_(27.685254280838887280112131837973692327788015446352) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(29.686648314190153252982149509287482178337965219959), SC_(27.256176643661173502128088745477752483937050300376) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(29.707888137372531953986967280091807332524991142265), SC_(27.195428802162108183842001035436316572586931526967) }, + { SC_(30), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(29.880456835568680592854533499452725300326797961638), SC_(26.507927150055082960896648088969452275232660703944) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(2.0349855077013239315047689027290594101062466665781), SC_(6.6889950007333271908103967936284764672275399442648) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(2.1041041671302701503709581007277305012963573666982), SC_(6.5971105172496137960491196741517587603075193178525) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(2.6991044713256757929701422417189775842008697308093), SC_(5.8446495965825396811749414836881630673271094688588) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(6.1290050440886587751526088916747398607835472505805), SC_(2.4680945401859258104532499418920170001503379468976) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(6.3073227232170202791418954072009225519609556904403), SC_(2.327077050362333960212872745747398180875237541372) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(7.0948330321604410508751274169968267563097023555363), SC_(1.7386528159389415095989348885665976211611107245911) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(7.2041180377728764023880012862820739685930559532304), SC_(1.6613232650055025139459733367765916954651711613534) }, + { SC_(38), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(8.4097130107844996004103566813359446908902957440845), SC_(0.8762981056915440024950375362038206942320495802741) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(2.2908276254682393649789194688854810240620188756194), SC_(7.0769167218869948907314283178472983666005876912863) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(2.362542142510559307570810534776661295370169693902), SC_(6.9829760336226128781831302789527317410141375634441) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(2.978695181027272745501976546380675682577963601855), SC_(6.2130609194792881734720933187138336942528077767069) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(6.5041452905052547087525009339071543031287195558301), SC_(2.739709812456994142898015447695292306858629880826) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(6.6865988857699514720005229764383151583687547543401), SC_(2.5936809101908994536944265290965700456096826141074) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(7.4916534516799088741352845061812452576375892476201), SC_(1.9829821906832547823152197015511649299337674104783) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(7.603285155682404893749757291709875054887407717413), SC_(1.9025372453959923963872207828580565245361443936964) }, + { SC_(38), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(8.8334753715421190756501914756020936397623743665758), SC_(1.0825257178417367658372975626892738719212523945451) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(5.0167840156902493452073218513944042116163711078462), SC_(10.837128778291767542344604909553073711561725972951) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(5.1093384827752225091889627132005172725359760723097), SC_(10.727667433100014823281380053055009500769067436319) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(5.8948298574654020063367012612255011506627402123763), SC_(9.8250635065850258596159258004526575927778496837593) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(10.167495750033284280375297737656348052990752848211), SC_(5.5921074475227452627887270335363072103132233189244) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(10.381391277523660544017602837264644775140073476311), SC_(5.405957482068671620886730362060436422036599724167) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(11.31874767384887941874088521470854084141445123621), SC_(4.6163948179261560656919174745045196683180563866572) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(11.447936930477999746256051929142622041202756925044), SC_(4.5108797352264860574087274401529810074336130995546) }, + { SC_(38), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(12.859951307055069323963369861055600985160191906649), SC_(3.4090647749619811690532023324978136673566340636067) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(27.706001577758691998996212985148495194927177264627), SC_(33.150763129716643475548229523434472212189786309787) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(27.809968710972636922569004625731807934675962449166), SC_(33.065906396829113683871030176836165343335179456189) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(28.66536528117117319263099886869703370109555112591), SC_(32.34283507097116604042519893144403792009313993809) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(32.622092395883378738619465753024747047603126515187), SC_(28.34124968558703508633083536792393680580592801617) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(32.793452903998894551229677161382023033334791195257), SC_(28.138540457185196611024678471013798719914123167832) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(33.51693466753256070701070355532411854588092330531), SC_(27.247986478006115493652040394328448252799259273433) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(33.613171615471376981459660819270346375180385206763), SC_(27.124973371631713269752349616116010676952033165261) }, + { SC_(38), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(34.610547226458577289787651318182250094588656036188), SC_(25.776363459194280854378454852434453355363031543927) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(28.598283518219063679322684389459161938528052140846), SC_(33.796287437761495448203747011870632585753650737091) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(28.698543955633637873993229905497739538248645560873), SC_(33.716398128886711755759116616253031368261594179044) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(29.522256779691196836043773352315422042749733060365), SC_(33.033698099159910081830746376550865270375254764802) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(33.29775856920522178225564683731974627304265395459), SC_(29.210401029611445725710021716289490256215762994163) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(33.459553937768456069442138747097737443725187231799), SC_(29.015199580628196182516016780992289091276431820169) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(34.140402929855522985147539749782796479766720884029), SC_(28.156243088171581758165458648576515643414173540562) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(34.230665700725558880661979536125385815057500843436), SC_(28.03742402721758004219286023349501711279799379097) }, + { SC_(38), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(35.160916681937146926095138974882885962711753818563), SC_(26.732259794429895338631092167110544510342730804193) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(31.845059365491349651747165862371541781974244605595), SC_(35.916983778841631276962414416403368142177978093092) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(31.927737347783917669098317250852423416033869196494), SC_(35.859190082700876066625276701338267557802274534589) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(32.602289680995895898660208748320141307532709088842), SC_(35.356549049009171940709099059101498933899360459022) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(35.552716218645839962621484608487837310266175864635), SC_(32.34791983609088187532968046537679753566074032078) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(35.671853318081509658694111156381389410582095702686), SC_(32.18806317115972249848881766183641160970668301071) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(36.163100795138306585347091242821332121007775938796), SC_(31.47913829363736197469118645995766056507657956767) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(36.22684282708097816458070259715014649969146727617), SC_(31.380400473584191714107620820771932377066166841524) }, + { SC_(38), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(36.859115352111387832211497962049870810634539688287), SC_(30.285911911155636637124869817776297719222354026762) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(32.210037892459790915142054230748749831992869133554), SC_(36.12743359950456395240734443970990748730781317385) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(32.290235938203446170881361282270702288773607776082), SC_(36.072619066997739511684882588734706802237382815648) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(32.943861711210958471725491834825466890167294943013), SC_(35.594289326964362511981336892239744424554431786567) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(35.781280859359715958887841234014479911474290585856), SC_(32.697533838585586493249647630058468099962724472914) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(35.894658757955744912486003607934856331491149018797), SC_(32.54263585709051461890846846011468316283278554269) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(36.360342110533889176487788673372738945901558278549), SC_(31.854887363641681388556776509451867894168467800542) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(36.420509995567639882071528704308202789951047059266), SC_(31.759000495366248174959219893478139399136179943208) }, + { SC_(38), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(37.01255646319800443038407788854841269974803843482), SC_(30.694683049338236793318495404756366329123791534348) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(35.08962352327392036754166706611251787414279473438), SC_(37.477486313180612493335725472915067167068518584305) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(35.144452142442706043669974410610771591853543201279), SC_(37.451271083441356461656097451187957475122219546008) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(35.585251864299932856750374703441749739342649352879), SC_(37.207782760836999161732769869996364723245916268086) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(37.305861979777708040858952341275726638014299574435), SC_(35.420452598891250007247719209138678833627661259243) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(37.363597775016296045469906891439566931680465450358), SC_(35.315984957618570457987329581447932220464259054697) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(37.584211866542346242324285275041868703271705966472), SC_(34.845034119056458963902149338968022406086697272789) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(37.610440392671859955493869566384558930251886476664), SC_(34.778518110297069146727446786654007551996042622893) }, + { SC_(38), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(37.831414261647376512421270897438097409043899699), SC_(34.027885133158543103977025405250437468788239678432) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(2.8153718033919262460169840834175583807937540251853), SC_(7.940911246138560307031718945384040409134762235448) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(2.8928556590665030464708120752458148384112292392358), SC_(7.840742237589943661041118297452257074532453685457) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(3.5570886489429032262496374127672937554831850101629), SC_(7.019488160408201576475389735334627842164749742999) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(7.3300508428053864781252219363931257200739696812611), SC_(3.2997453193314752887563449709315890010020918789913) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(7.5246688539922665579913324317285325818385664250685), SC_(3.1423255747221397832929912314292018896519065903793) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(8.3830742181721961213875086466676997638392469679452), SC_(2.4822630004471717685947522939140502464889220623357) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(8.5020709478087721868551542403230895097552229779152), SC_(2.3950698658113346907604860257780012645891864220882) }, + { SC_(46), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(9.813134427788980014989761353947814489895418160992), SC_(1.5016496966986951016707799378457144496034992750199) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(3.1326151997751767905676437041175516041072998830075), SC_(8.4032123469811837609252442533994329881199608353051) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(3.212918129876971584824200753051198158605762922815), SC_(8.3007599821575608623670509352764637880253256497274) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(3.900177038333401249237399340885337867712173172932), SC_(7.4601594951773803179892041015935119623166753924687) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(7.7781731681647456175489819950208935487531485911292), SC_(3.6341411034368286093442038012251188086615286014527) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(7.9773754682936147294416449739597764346445057156239), SC_(3.4712659252595253175711009339012372654426359468155) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(8.855268048033564479607332624053073847023719369587), SC_(2.7870230528193881566587825573848315629751385571337) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(8.9768766865207941072145582775467889003660481346459), SC_(2.6964576170637407877695909976582258833376365488672) }, + { SC_(46), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(10.3154001642945854241348647423784792221633208608), SC_(1.7653669275584959833896403062573392528342368110626) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(6.4920418337984944446938668754784468533613951873289), SC_(12.898584841094025461171715929106055172931294249274) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(6.5949360850268775602682708991155626604308748054564), SC_(12.778829598674748003558994460359033214803303264761) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(7.4662135535435236436527044387990238841651259530309), SC_(11.790698985382207149546397482710336307907800606836) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(12.165722929486369109219047352801563078163075243479), SC_(7.1308227935302160490078161773220126074313684767679) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(12.399883902603716952375614274285704297184864407262), SC_(6.9243469844202633119568024015509985662771058771263) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(13.425323374835975086474418851111148691483137009037), SC_(6.0462820161254143693441306203710842333059393604949) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(13.566571242601187459333066990993365871607741299096), SC_(5.9286255158778596513312663550195809883745121389492) }, + { SC_(46), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(15.109417413326052496893260875121706547589671779009), SC_(4.6944681753865057013320948527811951717041383349395) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(33.949045272495228659936786374526344470528478924626), SC_(39.943056448538904107569506588907743503408591576209) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(34.062658365718651713468683867168731690070751668667), SC_(39.848496959419424091692874196954317695231514129168) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(34.998186972903557248265960239650193937530076610444), SC_(39.044975429925746348188507391418614781993768636113) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(39.354859801394092624273484084588765576179485017169), SC_(34.643537690916236769571199897862636626963180216603) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(39.545281467527410866075078055558959736793562256853), SC_(34.421841310175522726371251536858702472742863505609) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(40.351823731930096105601732346030102653606039197428), SC_(33.44874684323085680563691181274765754167303460362) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(40.459465914174041858030323844489735619789838527704), SC_(33.314432113949018662313729564880268128147902866777) }, + { SC_(46), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(41.581407244578115436718226221150759064715180099696), SC_(31.843174746141786498857887366560024023696897669643) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(35.01570532303158096667331376362166509604932671465), SC_(40.738698011348322335334668112488740483050791468589) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(35.125186489263032088901498997538878536824809658691), SC_(40.649523778355886234513532702748167048516623623968) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(36.025490297630184263877149526528987003575060462115), SC_(39.889875724924837983387273343500327622787564922334) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(40.183223057451274409392010962083305715509604247591), SC_(35.684451869688898217913451518382454403225310627259) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(40.363249485827064628345850323595524833020070364236), SC_(35.471102343000827982826779156133255394134989646038) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(41.123590292976770231676304543191037345433480886185), SC_(34.533242778243763854376151506341471519849431725552) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(41.224776101389687471244221221228532908669820495749), SC_(34.403618776680014852543421679347151171470996936741) }, + { SC_(46), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(42.274517574971951037592626802232841146618636025889), SC_(32.981175151099873853658820798814495777716668247278) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(38.883777349864326559518722878976673143918226191935), SC_(43.369997781095898300503880906765064635944679936079) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(38.973739868571597849133570394892317594856128794513), SC_(43.304824925023996262102190037497281918873243468147) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(39.708753261647238378820885077627534973308841571961), SC_(42.741224695434154809830335181339498447391351533792) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(42.960557987781320133394669478740489653628985461755), SC_(39.431356132002312053132494606014297396080929206223) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(43.094136161053107109898919103582896625742315925242), SC_(39.257173474272500477833895424078224893678436244626) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(43.648603320085177416228915690068934145377503880407), SC_(38.485906790677929940858296771928350602510755044313) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(43.721074068898877702177703125752180328806006652327), SC_(38.378624479321222444590750345897508504928613558048) }, + { SC_(46), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(44.449878839949522005919632841646683611955180696927), SC_(37.191271762240952250692655262815297700181372977144) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(39.316951606871539943051468991638113740460412683283), SC_(43.633419164994267259104213678913296202649344010092) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(39.404168965643826569109111016196173036799490632026), SC_(43.571489158735551274306863438883039939690524347727) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(40.116045267617724120315730973386701689794021673087), SC_(43.034409278650744034491281055244992694269812247813) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(43.243721882668813743177627746791085922674650792791), SC_(39.847533902427283695943808106973261178982872246765) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(43.3710172379880870052026471744071040653571881415), SC_(39.67883372405075423841295144807432892553527526337) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(43.897668107389772229297797852243474198395518184893), SC_(38.931011903229992072388434921808139691827101844566) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(43.966260305890444980483354590100471486446088809272), SC_(38.826890032956211226244175399731040366133540194678) }, + { SC_(46), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(44.651624260119531355855586062230424009263686196644), SC_(37.673049357944067417344736583310625622323483798785) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(42.714808706222770842707210138820384387620947361268), SC_(45.346374642372622513525920006890452859993123152191) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(42.774021283668064684201829865465011426219427632196), SC_(45.315977348945514467987654067540745108145473667086) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(43.251080309736671670891007645829565841739266542809), SC_(45.037496678067520174056198439486584108175646865193) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(45.148949073469681529861487542232585473172627192155), SC_(43.07249811724529963424244550451773489280929838019) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(45.21497978568861528121374856386751275645608202265), SC_(42.959439004145295059206156206965415551593952495549) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(45.471291193822887518879621338115453317560681726071), SC_(42.450953003650035894089955599957721058186654994) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(45.502329126563130627235552811295265528463610551298), SC_(42.379273894994276601446240236094528372106775741894) }, + { SC_(46), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(45.77226977795264094337184898061934906479582214343), SC_(41.572246447505940611032662850967609720477889092755) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(3.6155167596791913443325132103477974564529087196639), SC_(9.1728696267435834667293673603564788169867541076611) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(3.7006421455436361310470423643009244097343471305712), SC_(9.0651195062065392247688241616310394027245148084489) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(4.4281886474590755608762232660960501195025084846239), SC_(8.1808859449862395093199054403586009356770717982984) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(8.5154465041042511899876254077969445690377542579215), SC_(4.1467504279759677044074039999555907249031116041748) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(8.7249874372988440189879209998134617812156134300046), SC_(3.9743301785583635142182973911770489522266203745221) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(9.648263867962717856146157425567082672156260787697), SC_(3.2488416714241500240273296032342655001791501347337) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(9.7761424721702624463692047041784689689971272598304), SC_(3.152654747847702727836391189949593136318563376756) }, + { SC_(54), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(11.183578884289778959218420316204230804594578553663), SC_(2.1607473441261247103454732331391839274071460370867) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(3.9947170801253353576074896674889511307683169817795), SC_(9.7090197533046085134136457025794670628177244825842) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(4.0828663688779576499443123347349240613474421625289), SC_(9.5987780877508455252326675651075895948782003397773) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(4.8351559841228395983037550375857964990799707135661), SC_(8.6934638204756291958956017871062084842346816263748) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(9.0361371744410021510940419167566567234465545156393), SC_(4.5443679832531620642323516809432921819956337538419) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(9.2506733522981006783018149555931701544226047495842), SC_(4.3660852788330277731257445811295666632665570388506) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(10.195217725260203137591150685311699425858479057316), SC_(3.6146671673243123295405243507522453185399356960601) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(10.3259512788641353918188072187447236504285318779), SC_(3.5148716886291135163261137015319153165336644897897) }, + { SC_(54), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(11.763472122178697172472200106972496381071868455631), SC_(2.4828112330364986137542674660272528372028661842914) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(7.9918984449719823011639870833800330230149892499052), SC_(14.935380120408154170641764491498813917264450319688) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(8.1042484965826161918241157058752578189275498629894), SC_(14.806202173869944987238851326488791980740302534848) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(9.0540315844078781238538502329898236030156929655725), SC_(13.739754546378151417165427067704841322156696420527) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(14.14462838217597201123718664804194674412370002204), SC_(8.6887348663635081485633460792074719532577769667332) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(14.397346625810038755819469024703225325844472248014), SC_(8.463657835747400640254163998530824561332677548165) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(15.503409611760172352552222416773989513191648718895), SC_(7.5046675548271301841960332677396093540433959662782) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(15.65568987747946301537382112832714272014735900999), SC_(7.3759195056884952380544956967663290776150830201093) }, + { SC_(54), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(17.318140601857309844711475681156306331286381571554), SC_(6.0210926877521489511098768820595810787074905113576) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(40.215230912612345022196786091790865891069376425178), SC_(46.712298067781324122336839651742953304816760887924) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(40.337672897177433480227218453836259932823372802999), SC_(46.608868416912627541377610149920598774226255303639) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(41.346573897660239773328510351677444089472593937644), SC_(45.731741071086698187569835033555601572734225945474) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(46.069657899606369548630330530010780978846373501002), SC_(40.963961156236726419284071274298509620683140258156) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(46.277519522495944727229636008545793711179700890732), SC_(40.724879169664925768262092070899375145033392045369) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(47.159982872055397607112491533228635063634796071162), SC_(39.676240628284387570797338154606485829731096767896) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(47.278038298309396495512722012468700833107269008578), SC_(39.531587089717116918547311610739191698090759623335) }, + { SC_(54), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(48.51344595692305033825969931629589022913179318058), SC_(37.948220398532086483049511223180084546121515869851) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(41.455273299252481246695213577970795799134551205459), SC_(47.659077522893443364836369776955399731901975585726) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(41.573193628988920988445764005363434217895779918998), SC_(47.561417165922917871571982928522808838488719202508) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(42.543624140441561090698101659781260158853072787593), SC_(46.731378372749730818859956520092996211330745566006) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(47.051528497677196497528129279707977885674424747795), SC_(42.175860615946570336091734236569122350280427318378) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(47.248232879514873440402429670155792478063847999235), SC_(41.945894575373010803880754985478598686645140507049) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(48.081213717475791222647380883564534305662613226717), SC_(40.935824570706743791049799400681272189683283466436) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(48.192368509480668139295076066864824106533974335027), SC_(40.796316884654138722693211431277794787272350244871) }, + { SC_(54), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(49.35087262867433908660947162250633413454758842486), SC_(39.266680795469132621630911890622912145325910289629) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(45.940124254817372973499912621889983564450730126383), SC_(50.805756289882833875980079017565898325690184594334) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(46.036751412393916041494344749616474849750934602126), SC_(50.733844016541198989989004133208085966095013149368) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(46.827108207035754306809774984219165666100175653245), SC_(50.114498039760479053224335381788661453052751899715) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(50.355029264998817187774176591939817189755397922088), SC_(46.528627436045353930077393183788004389998866309164) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(50.501814101879828424324227609139260698185097357752), SC_(46.34133128663790493344223344537594977760548829367) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(51.114004345418056071449408271148010023527923831148), SC_(45.513032338363689074822935115987619365721732650733) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(51.19442991619270600681757440368222399132278059331), SC_(45.397937815345116149147710044304913889082997015948) }, + { SC_(54), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(52.010847959346875187631934609533598433835432975174), SC_(44.125759726695970021394295697380752809277499308476) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(46.440878457925530086064266577980142001617126133713), SC_(51.122837044806745782775026826662020022707128754966) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(46.534517399808307968380976479607985408346156834109), SC_(51.054407561550589596887490404560289113122432459225) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(47.299711477769036549611068701409485417983101511556), SC_(50.463594895876803065430043692916527850548771957637) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(50.693334876583298744494229644742640547932282006531), SC_(47.010889635676143255035249190183432721264853290911) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(50.833359738417781673283186974825735104470022724524), SC_(46.82955595238454843486966354308510870794474165368) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(51.41568503650769508548273929504309111803818126801), SC_(46.026780723901481306418744109121360257375910135202) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(51.491955820938562823374324454697504685756633645615), SC_(45.915130254283638803865368024751504351227970252009) }, + { SC_(54), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(52.26204360747039325426841762061119789357551157435), SC_(44.679525090214650432298317108879653771798580389676) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(50.350957961592687926729640928371646841739509460738), SC_(53.207162093626282871444418054229820375669176701772) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(50.41417798732421788929718090882653004499554527997), SC_(53.172834922085528085319980442043724349830737161415) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(50.924415098877445196978506882239479848196492687838), SC_(52.861707551596498818331072637507934824072483681493) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(52.985596189242422132628626633848290950664389269402), SC_(50.733214255160025082360512125210082792855533123719) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(53.059363223350931520810854527920706548673216294033), SC_(50.612293749161121077471254373228160770610580510012) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(53.349281201492652524826185295601246798359046913912), SC_(50.06950063479177584103791840982680182945949351675) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(53.384903923303137854434991361834712015504704947412), SC_(49.993107293301100251512674896997280976214751061993) }, + { SC_(54), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(53.70314565442408398077733337305109495811943438013), SC_(49.134663172899560420005056840875626384799520769226) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(4.4311754968725160937094728786808725652665311656989), SC_(10.389208728301550261858042993952457246953970257047) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(4.5233783685435650597499045126545412416967645490101), SC_(10.274427731549105699699555455326544784959296442921) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(5.3096122775667176922342891758110280336533643112236), SC_(9.3317671047442602353293527054155903849709752521588) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(9.6885945447217846289462399147968694396499764836569), SC_(5.0058309560742976201438926498242105204541511595723) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(9.9119797947259126793690393018155765609458792081226), SC_(4.8195058537292921892720587141805892069652847888478) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(10.895415872898765038779199384985111262393256570441), SC_(4.0334306573794032108468304003924048155744986861651) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(11.031528112810402917728339763267479623168559730601), SC_(3.9289247743559923343593042855593341200097342875344) }, + { SC_(62), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(12.528246522566498300418014912457584326627455926484), SC_(2.8461480780533958750451182477773098890375625287655) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(4.8727635283096545792277138353721360021408646678537), SC_(10.998790189457709033916657720372802568232330886369) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(4.9681808479176742624239749083642675745205213656735), SC_(10.881324323519001883911844918373750904634674658188) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(5.7807538077502399933234606115516447163812218907539), SC_(9.9159724992624861537809656281690258274213355191446) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(10.281527293719762119221396004781568020129548513501), SC_(5.4670121866586237700212408177167623584620795898709) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(10.510289409316423175308771015762573793897392130318), SC_(5.2744463678711692481674804715771494518222358167714) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(11.516646994499075026762575799118249544092553567545), SC_(4.4608138355555194467392677201130780412670809081887) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(11.655839853906329860098797416584998129025578525931), SC_(4.3524791861650840633702057383499521770256833110734) }, + { SC_(62), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(13.185079047486325946674017495638882592665983671922), SC_(3.227223855086371429772822226737251519099181104479) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(9.5110432278045633711581213491989646802476223619145), SC_(16.952853377209111428909963256829875968775883619085) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(9.6321591798185624607965482231297316986871037128346), SC_(16.814934489720402936375566627109356809599451430791) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(10.654755230170457646338117466854794866218970458816), SC_(15.675816948112138298003804815530107778553918176366) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(16.108392110174057727279412229264922142728000161803), SC_(10.261714481242831206580019730848943740627989326759) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(16.378329640854057623635387384064997742135843415007), SC_(10.019384808544636347074745750490566417087763410487) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(17.559179436856106863476677926864244519945454064312), SC_(8.9853804236667915889162700490456049129819588366318) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(17.721690029431195864112070082395035372614411957279), SC_(8.8463577468800510835472822653771978497507196454228) }, + { SC_(62), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(19.494986776999701109281636553086590968865986876696), SC_(7.3798948751771766120703234759061142088873309672626) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(46.499543005014436215649565681084517418598497136455), SC_(53.463462022978638619187704072946545506455095544122) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(46.63017454610242888650966572285638416997003134841), SC_(53.351811548371387601495107787243741272600775986763) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(47.707153769995999773732047579956502418430818930596), SC_(52.406427925072096263505824108195636656027396337044) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(52.770347135414321809410687263367961403465541521731), SC_(47.298591548436668495883293342585291042928045593019) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(52.994381494160210893124025303157333878753973323191), SC_(47.04337831502496265510894081746086730348140809163) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(53.947200409884780354035139069489739947495738230548), SC_(45.924669377974112775763179457168669355569276730769) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(54.07489816449697644382177756399679895591674297964), SC_(45.770429443374082231608164621437283053487703062159) }, + { SC_(62), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(55.415203780329043227051071487031053146542543490529), SC_(44.083173107965332485064656145373574978342701722692) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(47.912183772387661071901561681293663793270872083257), SC_(54.562176356830858787231496724089117049238408188929) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(48.037931764109422072720325384749479226847956987692), SC_(54.456652614311206756305379174940471915872477532545) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(49.073426435413121601606900927492857898332843780113), SC_(53.561347253067897365765690920071026668950063612159) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(53.906356754489995529781478157433651134114092212251), SC_(48.680863444638464010848352500452937791238240154865) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(54.11852531216811633856945142753466332248718371615), SC_(48.435480366525368017775628563456144859920137329804) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(55.018807246726532375831454807749899025263233928914), SC_(47.35843546974380841698737457144987914157387810097) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(55.139190162035141428940759054688651367114202899019), SC_(47.209763955438293927559275283619907483853258597529) }, + { SC_(62), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(56.3981888946403620650316818848528467481140046208), SC_(45.580802108258766683405506535830277601240998535088) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(53.010255761964292471676883982361460631272222823008), SC_(58.227925758278434830001042538584319030372854152947) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(53.113062775909546295042857686169070872317329091645), SC_(58.149774144021722331208702705104385122143074722516) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(53.954756023941235507468450245433791670445997068666), SC_(57.478766920481970035595511490006192508370246921702) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(57.738952409628841833709403124831953379884805253058), SC_(53.636714381798976211931145893069240057506906446217) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(57.897976711972467427617411473244964747775315059237), SC_(53.437254101445785008820342600198062659360890274743) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(58.563595517256306521011811501036636969278609344349), SC_(52.556074408230447259930353546200107413278409289788) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(58.651373218926170178343207578603537969393897548816), SC_(52.433739470685448838458549555581839965190261977098) }, + { SC_(62), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(59.548499786932758461405989589485771610064575756759), SC_(51.082999822812179375389477722928189416979653055991) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(53.578104677666686473190003999645584164948428400606), SC_(58.599188489728580543441684743319143609641071817244) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(53.67769778855561474746275121473412302413606110964), SC_(58.524742027027521013070159361677149327904752033989) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(54.492347540875255070876389473164844357196858609753), SC_(57.884133480300813895619499833264034913155392667024) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(58.132813664229621612473743997930407138385571898685), SC_(54.184682675500257737386583076402944583252736299298) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(58.284635829642874912230462348599310854782572832377), SC_(53.991630528484730027022533445874902439824272663229) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(58.918491027635648686254736855077572108380829995265), SC_(53.137904849530374723780136127722008745539050014019) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(59.001857856915908252375922375437682526276276371089), SC_(53.019277307206639845086035912513359017718333350018) }, + { SC_(62), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(59.849974341360241521762472946823865127903032432676), SC_(51.707952287461765965101496530748540778866548388712) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(57.995637539029368007929782161528805196085489694703), SC_(61.061075569281977247798523468673159598569388465074) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(58.062570760336362937537264350411940335012410635548), SC_(61.023049714589638381647479096090513569374663764154) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(58.603572227051180219077515369624704288017635140924), SC_(60.681314166572362156366368370885628804202877015829) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(60.81684258148642138915796329584486919172713124401), SC_(58.400666036139388226478494488139725318065250869296) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(60.89786146977766455201309105630915200591186578333), SC_(58.272456047489341018885847412206164813618061601969) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(61.219442975800148759490644092870949599664442127882), SC_(57.697877931530137913179259501933959223925135863278) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(61.259416362397637519899387829710861949244662639847), SC_(57.617120274073598852787727824112987857089139696069) }, + { SC_(62), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(61.624536339631523014295673586439700289155516999634), SC_(56.711128459422124003675347500768411217810546538379) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(5.2594283194243214687967514325258847595470300896035), SC_(11.592892182341811916170339986868691915289161281067) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(5.3582533541895972585795922429224045656710604952913), SC_(11.471525943263190039125286177938127876676713188884) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(6.1994322715529475526566751779614915178748322927921), SC_(10.474128108874874731631067587116232697293784410968) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(10.851818838867625631857013231594376689877824387622), SC_(5.8747264640612888653720088382885566720104528710787) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(11.088174155050454475035867884332920579115383172296), SC_(5.6753829363673199811191910241848919572756204043223) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(12.127954587891984984576233941578799949462975667226), SC_(4.8326257157866384216045595225735284316355148331742) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(12.271776004257178230361701112003831653216015757661), SC_(4.7203436725421964243148485708622536017159169445862) }, + { SC_(70), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(13.852048064804644290348021887686427064153181772295), SC_(3.5527821301022003509728795254287115561589125065319) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(5.7637516046350795765967807830913234205451615105133), SC_(12.275564910738648806292850628749707869055636680631) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(5.8659700530079189502322148920826842312018309088368), SC_(12.151332540177755711750440738209915238751473362106) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(6.7349857855370206075011994211239210911123367033135), SC_(11.129733486975750769062372139349907732916307118125) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(11.516727790807320727726178970729457156558145216384), SC_(6.3997469183132979546808230943943619878170526561979) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(11.75881778730994162229184365353719948880279024517), SC_(6.193807694961816683648357131250738917483283498114) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(12.823070110950957989528076072347553737607645547777), SC_(5.321964015014415628597123183963199879630531671138) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(12.97018372621976890900587392573945691330751481544), SC_(5.205646049128182643100360134817505386008289332111) }, + { SC_(70), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(14.585260474570617608581932429771247614016900593357), SC_(3.9934096632554368182719533066577041256441795683561) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(11.045837213058683079807212474558014799079161819383), SC_(18.954657133731191948267827210451962844237653378188) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(11.175161218945875708985244647829536989613219765804), SC_(18.808549671066463499419616637245562806336897518497) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(12.265960943405496188200469225766057671732692568793), SC_(17.601340568505792019215429061047236243033998931466) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(18.059874520203844296091609614634873268662640890163), SC_(11.846927829837111523671792609917975556965388388515) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(18.345946559977976916396247633118759035161223074361), SC_(11.588437494530519223458822014877867790993762575457) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(19.596854783119652849034580461596205991945467242751), SC_(10.484197478075992726426344499169522671672563209061) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(19.768946468982515665629110865646775944710636746886), SC_(10.335559314445701105253787973242194057350722350855) }, + { SC_(70), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(21.64600961288080084391238773152912550364554218051), SC_(8.7647210634422761515995786655666240330051424839756) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(52.798551634327957236487050935675820804750438182038), SC_(60.199958445987507168621864187919705454837520881291) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(52.93685479502045850128272754999634711682629042087), SC_(60.080611875220534272249926619018072667902404194063) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(54.077620362993234480878771752274407285264176566473), SC_(59.071301813252549093358115246865718426404452120502) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(59.45957900682568968000641389616221959382179169583), SC_(53.644741939959641690950945618189471163214916523677) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(59.69876037535772044371232877682551278221215564585), SC_(53.374414358406102003506174827479038958833129083886) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(60.71743882953332504913538331032617402328159533618), SC_(52.190068850703154315387051461972218146899688794707) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(60.854157534033873445459995883695282718622809111335), SC_(52.026851481431291463064861785711872301824330601587) }, + { SC_(70), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(62.292487509014418260949077063108558539584341828167), SC_(50.24234862182834764616551429793875894282391355813) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(54.383152712380557279905294033197245382517113680468), SC_(61.451253263539387042582198858186114168199074250467) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(54.516233016043379153437169762216859887529295815587), SC_(61.338369168330458387376557825106234318637427456496) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(55.612687976230319025398270195924849026929149545699), SC_(60.381943725958906857385218666122336194811414368436) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(60.750238634086725638476773791161322798246123418499), SC_(55.196887079633364235925552542208823096695864782043) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(60.97688911541758937047196460101699207505659810813), SC_(54.937059314387670934321115317871701914589853285854) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(61.940161051709214218714938756611042556069717849615), SC_(53.797280118129510360572644705466273733920947865941) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(62.069175360536165273788694585751902252851021984687), SC_(53.640027329338201611356492199896800776198465740841) }, + { SC_(70), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(63.422045278924663254565590955704780267107872818315), SC_(51.918096824599726596740606367023600229576185719406) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(60.091548868837825897042069691312222113573428676492), SC_(65.639046350692635343224059755806444601542114306638) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(60.200143209607034103902749319316605153113518728611), SC_(65.55505936858786908352538264270449706359971408992) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(61.089925604577041968841694173997000078899931219286), SC_(64.835697858383602736417865034799820909836109659426) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(65.114286457258091644397924142979649348693758654672), SC_(60.75355775278230296991778813059178316604548606093) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(65.284767071779023953365584123843621413732090921887), SC_(60.542702731014498214964775230904758791585949142632) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(66.000346948116392527706660658494604292294076802827), SC_(59.612003338885605031411003094523643102501812260029) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(66.094991773268135365626980958744614837595190740949), SC_(59.482890441022222734433043268949344029460282648994) }, + { SC_(70), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(67.06731081358747279226516522842166144100925542794), SC_(58.058647131288000067825722040255335793663797624218) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(60.726097255293009438124376728970526840333012688405), SC_(66.06490750541990181316746156404383529480793499348) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(60.831266094139563692896942331930883154055673693702), SC_(65.984834160807117084389861540714857261932520817258) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(61.692241692321650863159939116284707019367632730049), SC_(65.297619380886845612843324608459601058680297938845) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(65.56403366217419884421724272203961421690318515314), SC_(61.366923606135200016472224521358207925461236361839) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(65.726897799800530671157506436644256771060786035901), SC_(61.162894549270587502316439917675754596142408328112) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(66.408933602578734562184685925205038007726546971082), SC_(60.261458961876333241932898960622017388694367375183) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(66.498927158849768965016573309494497904763336945658), SC_(60.136300360744310879885354631674976399016351203735) }, + { SC_(70), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(67.419712562837952438691565021892965623317159332388), SC_(58.754135724346901543620359763556390719442665982486) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(65.647196727879673126774462428933200450991646266224), SC_(68.909118423247655108084313816361350550022605886326) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(65.717605044799948747887302187019209647921133602577), SC_(68.867600425671782901569162172125006695601576732349) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(66.287414283534301186444926912228843629038564629184), SC_(68.497021140829673506995321056872889647713465439186) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(68.643509205676085629636916314366734798807976404117), SC_(66.073543830999807181963380893100518885826945148837) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(68.731361204040920277656964628692790127851903494345), SC_(65.938507948197145030699851629593771809022699730939) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(69.082855563633155168671162193888126970497192365232), SC_(65.334185211722462728560149116066162024599473565016) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(69.126954776332843416832331263562970372275138180149), SC_(65.249345832427216388833975960111325904406792668174) }, + { SC_(70), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(69.537151811827442842265602305241617814854528179369), SC_(64.298923739399983068176360162871436075763705084709) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(6.0981674585201265748651390379014065000632978696527), SC_(12.786050706104797419087851434451927359249995972656) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(6.2032371913245289457585059007212338937411561355801), SC_(12.658469680458110665431863830797790388814271395415) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(7.0962534227258885680819210401928814946342151036238), SC_(11.609403876698271303790026343215348295669708838874) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(12.006790015590923136971520252904890413295281422669), SC_(6.7518021118373485422019789125671986834907832368642) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(12.255388184857853097745174341972876212511503388023), SC_(6.5401762962180433876514105190743274357814276355386) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(13.348341620866503576633590247343608640835528611055), SC_(5.643972887988872536126909106595720983906488906285) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(13.49943658540682252133646378061246527216822375891), SC_(5.5243634098253764919539972735322876323163213119556) }, + { SC_(78), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(15.158509787231291514297478255255390728517477679996), SC_(4.2770196974734968938104098616080055113458811537689) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(6.6655144749460166080669969765381840123063195241354), SC_(13.541530817104923294911098281364023652376401970164) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(6.7741469256580988219720303159543448295299524171099), SC_(13.410912442029829230241409936429053993303262259082) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(7.6964159697266406006799927231847296877565828391254), SC_(12.33621906836703282960419143795735161529723564764) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(12.743453070833783406174399874791333822693721192039), SC_(7.3408902646856894149920910373389894468019223339227) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(12.998123909359296156433958146519668965678687339548), SC_(7.1223331634013146582666057834278115232399510514779) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(14.117013700440518538599640271520165013249676522082), SC_(6.1955964924796214060234817753913948942721828651027) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(14.271600712224044880495470085069973662730019460937), SC_(6.0717548746582339575631535104184359340882562020413) }, + { SC_(78), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(15.967635658481667354950541472827510985299215510102), SC_(4.7776499518964909342479778210614703340966553442217) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(12.593658478929117307375150288231907763924261476882), SC_(20.943420568849494732095148368298286760450177937713) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(12.730727340314328999140552138536196906331485096827), SC_(20.789583867900446728382766255618653365979787985111) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(13.885899565468189104240595946976322600462739641012), SC_(19.518092449705623627052199797032305898299973354791) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(20.001134993215327628363922568877797305942053661922), SC_(13.442330786254114879394865487782704490471232438411) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(20.302438983500465030303461588696105520298026664079), SC_(13.168587454975444001810615286364832117320627948146) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(21.619473938877647402206972474919408295945475219701), SC_(11.998078742175478870198422341670522910479586607565) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(21.800607218307497015146066001169682106971606411755), SC_(11.84037152111815035059537617137869557081285860011) }, + { SC_(78), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(23.775560134568438938358816336637101843878636284043), SC_(10.17115991365124603225753385330502295679829428556) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(59.109788660829604193837210424941554832650250000357), SC_(66.924244968987694268863165874938454456108510648603) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(59.255332774180660505476142372380727502124388974604), SC_(66.79763777832188139755960894776987723878108365708) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(60.456314048141400995921255794541734297959198563523), SC_(65.727998997828659495057567318431595018789528256335) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(66.139267009377777886113198945270824453362033043951), SC_(60.000478610577498216146317652574852177097818535033) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(66.392743064266774599467884183311511753740305595559), SC_(59.715882701399618308284463773985459180674558691182) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(67.473550658502085904014894582403192643764770933443), SC_(58.469587043806073658977941853877826195280981073541) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(67.618775617088088386484629627180591391800202404172), SC_(58.297898217569266177955162890290575060065745572195) }, + { SC_(78), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(69.149456426035708019820004333069223664604587002723), SC_(56.42166241462038363086676260227061587139426722999) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(60.865817532077809305399522591237833903933591254638), SC_(68.328657475272288835516395231114470305009190675914) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(61.005818290397950321727955774332909657441420867643), SC_(68.208830351385742862929272074206114090074372705436) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(62.159819494659174189534376476818337723298304171366), SC_(67.194729451885809593008272582401789416803651264591) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(67.585001355682629221497711175362414781078945190708), SC_(61.722080140680660434480545900678652286758748995903) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(67.825317733502907955107108718224006376545939353007), SC_(61.448616603844617077855436324809623076172321655726) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(68.848004093644857113972882129576235637255830908299), SC_(60.249628618132825301987955428298278426321424333934) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(68.985155813524848074393627859799455138519492593226), SC_(60.084278548696019305644923246601400368454940846312) }, + { SC_(78), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(70.426436044750656374763727198158387783441011117362), SC_(58.274655031334242890864641063452258136748048237601) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(67.182119456881668590209547212549397042260000171737), SC_(73.040959319316628591872463346923870223791854677862) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(67.296174885852741545471913364662312666618785212899), SC_(72.951471814372329894998713946622146344875785446864) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(68.23134567569884170429561233132889872860353512977), SC_(72.18650247067321052307576699132990441408903730218) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(72.482454109208514802673589944549141560056853395719), SC_(67.877678842801839129897095245619305863504871673204) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(72.663740569040805992302722492053286398199708740694), SC_(67.656068979822551725958381777326725687648239417322) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(73.426408630030840427266872729925877106098726489048), SC_(66.678643023714659593711276540095160152949326791053) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(73.527519913354658591440335235356903691312930266763), SC_(66.543136174255799400032395335397862901664550419367) }, + { SC_(78), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(74.570504776286308401704132808392995969181452965507), SC_(65.049583837780643600222073473983157275695251228261) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(67.883037237702601564500530021515735282672672117905), SC_(73.521761879351762644155794825735598660115347701041) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(67.99346729470455738850814359125371087350703425732), SC_(73.436385091821375813700091217059011563811674946564) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(68.898165779135716665224028391079053412479669461582), SC_(72.705213871130125938741802533345688987919443778894) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(72.988359341310321099493793077646856107160503177601), SC_(68.556184361850217330245651452722572288039742057575) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(73.161637909519561878061161640348306894823546208348), SC_(68.341795123605742350149254629147905718530412190201) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(73.889078546202701769627647801447872225917887417616), SC_(67.39534244395318347647339561926799267015896265829) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(73.985311011431170402415399599919268621105858694263), SC_(67.264023107309542706723983737823887125227842591784) }, + { SC_(78), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(74.974365210633849051984655526774583794183022650949), SC_(65.815065664541557284152329819709461662892952483868) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(73.304455618647976580595912915407191946980786399481), SC_(76.75210412549802484504593944827597388703023676926) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(73.378141271343760371851626266935034943054281758235), SC_(76.70727661577521950577797844930735722123098076257) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(73.975130942847286595749256665438825485449131952239), SC_(76.309384336290618724908928011289984656716411339919) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(76.466246878733272007361857504198625387360193515533), SC_(73.750913095201008034940013271134681612882558921592) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(76.56056903809157532829272303700967246231520071603), SC_(73.609436894051951047164797953026345311340958375796) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(76.940419963376266468475540516877416578452763961885), SC_(72.977063940692095634899830362289227200545631708748) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(76.988437509185908405311540071145851719108698486292), SC_(72.88837719555197816057352844344073011307243397166) }, + { SC_(78), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(77.441786368881892206369964333416131459357599622617), SC_(71.896105336218724141993111624777836475748285880146) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(6.9458132392291489038850907267913626444433705044728), SC_(13.970276980700601735255642515781733873282679171085) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(7.0568081747540961299601050665915132531984583276886), SC_(13.836795449517586242133827166462858011783176518516) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(7.9990277643957790986709272365019071939676940174165), SC_(12.738666768626891005012980367294980473347414092904) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(13.154756797885136157840075800706545967828992011944), SC_(7.6358308598828143020477308378805458575063014015422) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(13.414980574444300651451796881632537346539199660968), SC_(7.4125467070027878211667338596391762819324180197558) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(14.558416763512127082677278042429029999750948228059), SC_(6.4656352341305925470552786755572145029608559525464) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(14.716415947591449736745075772937811774443205706144), SC_(6.3390772942918271949564010568991186545623342940776) }, + { SC_(86), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(16.450264905533239567169625148580918110962585928866), SC_(5.016158600014299201442148395655238195137643395186) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(7.5764286379509488731473121094088807228976594207663), SC_(14.798322811147296981833771936641668602193613526893) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(7.6911473632162838516441154663505786535397369750429), SC_(14.661641247015487750409083780460230526658042449484) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(8.6639662095933011530322507766098077076434353472979), SC_(13.536529741061104909108680309505137017335077373812) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(13.962984792313887405218337942726135186356522392457), SC_(8.2891802888203541513825007736369038496769715908772) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(14.229602380631387259343785759213898606735197232224), SC_(8.0586457517182070075888382942427270061330055586897) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(15.400366387267729234352262663622146219751489655335), SC_(7.0798243926246533758050205613749749920790841697973) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(15.56204750108214768212598688379792897401422319702), SC_(6.9488474536893650045343905015643735938507773743244) }, + { SC_(86), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(17.334907545900045541789199694328819501724917030953), SC_(5.5771761930851915577002965364439080327093883829855) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(14.152544052341125297690598968059413956743114015101), SC_(22.921110862370147433426190115630440823412194553027) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(14.296965147159144952240444953941918720161797722386), SC_(22.759934724724060249246699444149272428353753767342) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(15.513259847605159079635664024437711070410090357229), SC_(21.427394923979231644312102480320665965682159188654) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(21.933714623831016921002090587331003699617457875962), SC_(15.046391626132485873187641096213960562768478204004) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(22.249484312992175781101073472591190497513724631678), SC_(14.758165301042908525239911451603033331518432505515) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(23.629309722939979789825855497122309418803702250998), SC_(13.524749880931188279515365121491234301059717294689) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(23.81902703167861416381282547451529469025941281084), SC_(13.358436199543591127434796603661807762423546422622) }, + { SC_(86), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(25.886889937109894601641651313701144692765062771253), SC_(11.595921392605201251396507384571311655994866904914) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(65.431407873129473866187907222098304378724475336987), SC_(73.638161755825974774794504484074929308268702792113) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(65.583827497225122270072680729159245572409473391), SC_(73.504662912900637122203408295870761092400605276157) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(66.841993311893388067741365610557157602897067430734), SC_(72.377746546528227937594422835123641134871274313077) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(72.810845379145839214622217853006470719787899918954), SC_(66.36435494887230954770509248099492672155561208993) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(73.077893265133970868140692841687714030591484820658), SC_(66.066208917378633799427911066047212373537458212798) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(74.217669915889290904025349679730309526863621647581), SC_(64.761090996505632093466336881570837299668209147732) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(74.370965689829175068477708884263996557746047555922), SC_(64.581359804083116806418562592965647970102615924518) }, + { SC_(86), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(75.989210331825244956501620559492242257802421361584), SC_(62.618062663278157974115412221599622246935980424473) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(67.358411318767441717974677592541107425870655318786), SC_(75.196148255238443992248450366597358272429691829128) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(67.504983072277283780566850134910883988177308309477), SC_(75.069731582973801652105850918075813677730068288321) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(68.713632427999510219067731875276829239875538597997), SC_(74.000875956704331650693968328532006514136943513147) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(74.412014867228942289261902287031488007619846418845), SC_(68.255057937475010259989054255465463629239581549417) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(74.665305199778665960987573613233515304853133004433), SC_(67.968645302350124562516193790695585961327917663391) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(75.744378047998858796911342508821850605894936715196), SC_(66.713439693628400894160222915163162307211335394297) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(75.889249472340800294187941076943531699376976604995), SC_(66.540402759581842369008537079166646220366352347298) }, + { SC_(86), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(77.414336615857410234961033114589209364399614395911), SC_(64.647555822782736824879937440166805990064367140666) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(74.280560204105565792899264034941182265359096407063), SC_(80.435047933607831810092574201084355331362964951028) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(74.399800007466737671323101205941505677065932486287), SC_(80.340343187766454429179547301091221007366112847022) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(75.378067167159335651078460344512550525277358998206), SC_(79.532093387918790049535461537988165124915705988028) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(79.844525996046821761737382523809814252546147966756), SC_(75.007973375625704690509687280588088002200094652958) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(80.036067051164637687101559240873306625217186275649), SC_(74.776151735053241165423718387231750856226274234337) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(80.843393689062794969455400044263577214972748247745), SC_(73.754368135853644899205000776174001008875078731575) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(80.95063341889224311140374152455392944207675412221), SC_(73.612792812538500966689432592282213237409532906646) }, + { SC_(86), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(82.06048665719460702646117824531393731997649069726), SC_(72.053483096160489860318184259123714632206395794888) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(75.047566296710508804105560701167719801433603935752), SC_(80.97108128787527023700521915894815220037159658513) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(75.16299082171825432268168581080614380934140329328), SC_(80.880674702052207535592675813988885437325118488437) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(76.10920323648607769851161797032383244777845114023), SC_(80.107792723772017158208205001731122378911129706279) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(80.406818727521015247335978320605109324719290615003), SC_(75.751398795393786414008452023445252478320086386397) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(80.589979851162393740346564954463845877040720685435), SC_(75.527172756055502599196437318837980672891311228387) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(81.360477775810018967177402666075734364204224577624), SC_(74.53798668528137535964062028956141380311380992585) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(81.462621997260557582582058859924324277535107237729), SC_(74.400820465858676410379603253738268856477127254579) }, + { SC_(86), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(82.516254731942869631602283336588073825361574684681), SC_(72.888496334789514474812560818277562819692781872347) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(80.966536513901647711514244142772321612050712884101), SC_(84.590693106881046778018451889656228247314980354581) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(81.043331870604669812047307540229224661248016855006), SC_(84.542717240518969757775101266596586800567881067784) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(81.666121025181775428962263371059795485118224599435), SC_(84.11884721018919645391414608198100415918128614085) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(84.285576378552851242722368138890277457976363736459), SC_(81.432079580377667728196621951521533389073870560388) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(84.386052288054460594734587967694516337096019774512), SC_(81.284490257052186219273745394348992507528725454014) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(84.792881919346504539283037797094027062695963309625), SC_(80.625503155944509629076817576397666278275689177907) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(84.844629925046726608261790369371208575327290009901), SC_(80.533167450157378773318434492827003614740884164349) }, + { SC_(86), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(85.339230370096032070734739222487868334586639845669), SC_(79.501227165620096745252089669392865748677099936068) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(7.801145985023555209786634390060878302823223057646), SC_(15.146798540032044618618696769667582084529973896819) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(7.9177911480702794932896409338309681366992069464133), SC_(15.007687503555726510687831747237410012104978527306) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(8.9069447068384104776001009780017419598880066728379), SC_(13.862743176080042879294985239287374474663386295711) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(14.29668160507190083031258913481029068138600446676), SC_(8.5258641767433119729022228379674560721325609618188) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(14.567998530184756618935149917585416621451806495576), SC_(8.2914592966772296215773118275518341022515183376968) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(15.759597854090727025980919437324539086842588419625), SC_(7.296195812169845466519979794257352785981092155484) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(15.924182962796968034385378591474222611875282780888), SC_(7.1630149980545438505539909616418923184971391180644) }, + { SC_(94), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(17.729341239978339411641471919427342555773712488765), SC_(5.7681237441254984639386594724929362300361626477156) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(8.4952407790762502884294148171732734560738663745865), SC_(16.047201111583644038586704558955395786168140016462) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(8.6157636738504986670494881939769236355928003927831), SC_(15.904734727947326766648557097206925850697300060355) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(9.6368027883972775528501267735691476648690268123343), SC_(14.731513712479967275265369118174985389101090967119) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(15.176310893498349139114865139250984421919596124124), SC_(9.2436417036093322655286955857078670351824812796869) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(15.45432822565433449771111325757287675312840831257), SC_(9.0016816002789885881864899940758956889751053654136) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(16.674583795222815490635985746609821006524241746618), SC_(7.9731924117520267945871041558651972670887244641673) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(16.843032111986809985282402780087360511711595353484), SC_(7.8354138701669740669119816753469280782725608850446) }, + { SC_(94), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(18.689157852228469202095100036990933593253128212869), SC_(6.3898619968033505802105382948018166943063833501692) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(15.720979149202354985761381883477340231363198612585), SC_(24.889245392034195107580996649610247431035153794221) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(15.872414145087270586233178462247983262369189844388), SC_(24.72106602837218133736745001682764210423807370415) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(17.147028900686247366200323905188333565666862338536), SC_(23.330268114052149251223476965824028254350423277965) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(23.858802291030027259184177219111845868399368618215), SC_(16.657927541685284238553016760867961026392682256377) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(24.188376544786041456147519061526636476043992418103), SC_(16.355882190191059398083782786339730856654296335723) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(25.628114973724624737918831251073553550435749118405), SC_(15.062456822309169971727080308044419856974412605654) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(25.82602184170651971444194179315222305939058132684), SC_(14.887934919287318948010659827834075151488187794679) }, + { SC_(94), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(27.98250468682738835427953108981114702493060162993), SC_(13.03647421539277724699880442503362385008332999302) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(71.761985502401641809400119600606177916530080831367), SC_(80.343128870284935880693974650974323187993949463676) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(71.920965460109548257549729822061655651186412406752), SC_(80.203056211656777005692075471209842644029125282814) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(73.233700649897853023155070449245731017031748873341), SC_(79.02149255490542621813962817144899129475008636669) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(79.475421834891954830923674185428950014058290542962), SC_(72.735255243192664813730346858503408331313229838377) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(79.755418384011661063264584559051656756651955502721), SC_(72.424178732212054550608230668517194050174101900775) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(80.951442327283864476766669065735610415695384401698), SC_(71.062936052258651628007457863363019012979911268912) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(81.11243426424981550187601841942582846483697130024), SC_(70.875532383897045834838463069899574597626592141408) }, + { SC_(94), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(82.814132672637175323508906585298746650176297034011), SC_(68.82919804537338968246782623664700123409119111382) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(73.859571674283745724554637528866921244637466799877), SC_(82.055083335237835056219535792222543304497331360309) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(74.012413046512243823687100619117024117574124143577), SC_(81.922381531234332095742681405387251933597827315226) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(75.273210305725007473799076347462365102531700182684), SC_(80.801288631449308233332584723812452401217534599683) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(81.232337422702411951957034608628868006503845846844), SC_(74.794752716760790853658068429232948646409937638766) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(81.498005291024239777685438826771409607773040241406), SC_(74.495983395892053218205804355115518037866354912646) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(82.630857408797728335168743694450949586186578808368), SC_(73.187139615103532318949671652429480674068742471319) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(82.78308929112105577651228821213984079013112432343), SC_(73.006769584441544477241413720682517351707777699476) }, + { SC_(94), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(84.388033822784174069063020299774251856369061976038), SC_(71.034549039245372247644063845378791168907922456769) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(81.385787095760532631011995482097952344188577707495), SC_(87.822381821250148525729959265990999781425597362135) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(81.509972709964573561429312033744742617473466472875), SC_(87.722703495401044191591531000464516106170584650936) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(82.529359319863293187539717395874296614096317127913), SC_(86.873177882369364592844829548683225816210702324421) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(87.201331196694772835156800875842650807814831544276), SC_(82.143590885962568466362006245838003206817602556038) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(87.402652012492616445307573869941310874183544444923), SC_(81.902025875071559906645072234171695750105619998421) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(88.252548061972664616559086960448901809300266332327), SC_(80.837926809684677600188127197906059300099614989901) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(88.36562618412177227082099175636694832918551995174), SC_(80.690563448783234592418390476284028064275585357359) }, + { SC_(94), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(89.539104223137902726734580837733215808281797389115), SC_(79.06855390482842967148959365105655443034268812811) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(82.218638360397974654987981446773330285286070885862), SC_(88.413894703795294146860560230620021711899341227924) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(82.33882739198524054548183237665709810226639243846), SC_(88.318693674453272967421104809217091136334070854107) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(83.324648531227060153902371392918520532337137377448), SC_(87.506035216540946925939414351913968001432763456468) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(87.820208543212136470865057850441553586277109362077), SC_(82.951746004152344877184293697040893873356677956287) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(88.012794074606636510527490308420541394849102724923), SC_(82.718134578156719734399077338962566250474653525059) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(88.824330867726189930373030685822202331436244582328), SC_(81.688183719576963479853887755445243804310741190373) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(88.932106169193255994075375686470609054114880154469), SC_(81.545441017708913025177764516335363992725069723706) }, + { SC_(94), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(90.047167090419334392854830288848246875570486534409), SC_(79.97269940747037984619521668755044595799405937608) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(88.632765718787040523843959438237494824369514964228), SC_(92.425424902037059080837210507087498486262820595011) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(88.712526347851097058558336647577679095926533544603), SC_(92.374443196406595580034075735690993663845828818575) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(89.359924077241611916690390754525883296187928158695), SC_(91.92576805605481448245153114216349157130107944978) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(92.101919213323680221941518266232699521409470464954), SC_(89.116510980974737484440893820327115971331048122069) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(92.208271093986097477185447060480540232398613850555), SC_(88.963090703759665136095723572285963397235559035967) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(92.640858425361466174354215186087483105177743302958), SC_(88.278726631158769897593283615099380848459302677143) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(92.69616813943873924626530921117852777654310510982), SC_(88.182912734031051207705053480143478087906660497225) }, + { SC_(94), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(93.230221341776895913396226034296597926358134334975), SC_(87.113179136552973727414101965553584412690168084971) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(8.6632008807861670752536305990337881574438371700273), SC_(16.316585195700711779871008047730587123595797220946) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(8.7852563585694291252402185560061984423806519982759), SC_(16.172081471581745732760251311015062940512785910346) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(9.819362102388435677255928187976591487107044010712), SC_(14.982285928856556977811893349360540028861053730497) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(15.433324795444787584614892373536575205308669028909), SC_(9.4211510038091679975133718560077800598843464529262) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(15.715269413805476311308603410136373979976228317508), SC_(9.1760948884866244174979570140899400756472719549933) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(16.95300494759159880476040498131170219356987758859), SC_(8.1345346496650686442854582992128352759617456805367) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(17.123897960346715813987984637467359876541541227861), SC_(7.9950146222368598165601064681039837339962619558096) }, + { SC_(102), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(18.99733973275075548730128990694324660459335558577), SC_(6.5312808696524098555214921095493123682045122358726) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(9.4209595691616734830883638570009026989480144752921), SC_(17.289161447518906001659460668938982789231536576334) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(9.547040464693301163395722572143016761179515224155), SC_(17.141153509822953812097311780912807356686838102209) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(10.614265360304164091812956245551206469605527681406), SC_(15.921841133006061032616141611290556434797873836836) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(16.384211982231084429237394366668961678432071190898), SC_(10.203502384260964062506122581960011636245150485445) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(16.673150874364595004012861111794967533335003144776), SC_(9.9505987009254690210168754714620386636682786958316) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(17.940815930625829228051316046074799847941398420616), SC_(8.8745503119417025876364737483462775311429433794048) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(18.115745902300849413171947190638486439850333338302), SC_(8.7302609828513173210279317735874859850733271430827) }, + { SC_(102), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(20.032030202198952813933839506850730804261873949311), SC_(7.2140323813947691966883213835794825665411698748935) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(17.297765851595619577058752177646007501473097739413), SC_(26.84902375570066638547065701032647157974168485542) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(17.455919239712267057987430915516604234815671464676), SC_(26.674135039297925547538088013756627462993846717269) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(18.78640506120763614787615562107495358758759491314), SC_(25.227518604550054405191519397941397844278788856597) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(25.777338000341389521938811679312747001341356043072), SC_(18.276002632933612657435599267649235016212247914564) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(26.120138770955741398178993776840152758438684041957), SC_(17.960718494252922672721950595213394921473655838701) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(27.617275243377743021780493527081324004076945720931), SC_(16.609813039647759813735958547138523357579275902558) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(27.823027010767748786472664380524856722292710281138), SC_(16.427430469068922284500094321060190604781619117239) }, + { SC_(102), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(30.06438369134110681557300962776995822948471260358), SC_(14.490821357849230338638528087736993502585288537978) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(78.10039615300577322405286750591958236053874954583), SC_(87.040269321734090024029409561738589564060961411331) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(78.26566097382456539361830804734952120518897514739), SC_(86.893900372269900934920267566210440333416447190304) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(79.630679162951877565933087210749806441736167223186), SC_(85.659987532129803616670826985761789364620519483603) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(86.133872959620059545026532759506843992973821836018), SC_(79.11229751982733938869129551358658514180720684378) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(86.426273695437994238010658108993777627476052706659), SC_(78.788832271436964907540910944878944548619202219092) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(87.676168654511358384674558350407202513595465685562), SC_(77.373822385245469155081121210563135575641940288225) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(87.844529934033355799975384393720058454803905486953), SC_(77.17906939928371896959490624410935820213959972999) }, + { SC_(102), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(89.626102849127154070917764861650899081988970160995), SC_(75.053211446557898553293301313237746467799228780495) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(80.368221855363800275965452345572746319737795377984), SC_(88.906536464729878563341780511692887143269671639171) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(80.527069450737181489058959815673974300461542066985), SC_(88.767815277331774836358084340609235267634988029848) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(81.837828792598123861543181425071304778505862769015), SC_(87.596684296316734349520167906029366526883423676846) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(88.046806559417840350104581495898989986520215337937), SC_(81.340320547297557910355696237728029137085331610689) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(88.324330933449083898594589749913687220667400378953), SC_(81.029712455665641980104328855593562698901043591536) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(89.508686589093729073095346208857175041023836204476), SC_(79.669484766715716833161768480619456437287552993308) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(89.667965656784124129044041494648656957301348071564), SC_(79.482090693741057056615544414926317346718710125836) }, + { SC_(102), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(91.349330200248507759373895765505184814675364584523), SC_(77.433857666854521496278142280242603271645046332251) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(88.496944143689839974064880142399399122421418798751), SC_(95.203807908491592754921368028304619187026556668376) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(88.62586713045748479785387297790611141522368402543), SC_(95.099368462266850366769747094419820067003444417935) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(89.684645257649711258721241906909193080856329278709), SC_(94.210317023019982926624846578026130905600785966562) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(94.553526984142053895234741208388602857234125363621), SC_(89.283859876238198013154529891020569871694347928421) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(94.764213027344307199573875291465347838679818198277), SC_(89.032960910555609738122814260563654903615281776267) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(95.654857298507168065316776638358173384871516169874), SC_(87.928330569057151162483148144946461774439825879857) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(95.773521395496859758674227300977180608010015717548), SC_(87.775424070431993782714155785106323195971078701168) }, + { SC_(102), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(97.007812345898782857165691620029024523601422332773), SC_(86.093382889551883942072273258481831603525464338284) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(89.395427538492976862303554768900632532721806503029), SC_(95.851017272542885795257570181708402025736451036344) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(89.520180163966281655564824584317287299335181108512), SC_(95.75122699160862670132697173474282858991364755106) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(90.543944831011421478385217143000909280233831587416), SC_(94.900480534155618955090706058448722084861138465369) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(95.229160762391208043913872496958433622056134440103), SC_(90.156577962677356115108678581663003821751109090593) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(95.430770753461278770804453920308206143415336067028), SC_(89.913975699861523868827071299305388222957731219112) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(96.28158714716449816069448899331779475256808258825), SC_(88.844979878071455830584996471642292301632396001996) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(96.394749337786047118544038419758416132005743090617), SC_(88.696896813985452715473993989025330181119786304891) }, + { SC_(102), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(97.568509006405942907421906549118839395958802357751), SC_(87.066311152560258360005769540860086519286534578454) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(96.302612858518283709246934368506433942499259910698), SC_(100.25674401782485230570540263931807103408593637078) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(96.385212641033269959086011893082429190894248710337), SC_(100.20288305186671121306217580304109156049220220515) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(97.056178246072585545448744295093487819877895554447), SC_(99.730440044935050677374566021854396718364421462783) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(99.915620606945997082825044830771434239963476923664), SC_(96.803788607648547633731025849877009625629843362907) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(100.02760280613057254423425393587351724682083382942), SC_(96.644783955039517995515369932585560488422334349434) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(100.48486204043269995352945994473162591927761682462), SC_(95.936123118466509565122023291719833223677795994635) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(100.54358218677394102916984114271044167233384726745), SC_(95.836980016962354943183597806948441580975322885464) }, + { SC_(102), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(101.11542285588358068003997590845367290788097669958), SC_(94.731087264830922630899778436819099173707655975884) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(9.5311992295056841462628434239846898249452970051196), SC_(17.480418958328505207260538231638427453951331258138) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(9.6584533041508528619969444531802888379257874721588), SC_(17.330731809622492416863120459176405836205473307874) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(10.735761049939511999177430337333042074329584380849), SC_(16.097821406636012344517927002712726638397045351302) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(16.565299492183664773996318158323627932567769426795), SC_(10.321084676314554239255625432489933480208823724416) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(16.857460386951702723034998692995951182028584417416), SC_(10.065791960949573590646309581770577560927767636161) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(18.139541127452114554913425450588176959391602210312), SC_(8.979748417015074101220364683626286051258205885204) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(18.316496467444591789224251152041275464141671740938), SC_(8.8341392015703380303470453311944536570066600821417) }, + { SC_(110), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(20.255550519206839043668944319526734618212855652425), SC_(7.3043157564650578152771580085891623372020131841304) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(10.352784957695106415384161662722173698759841475183), SC_(18.525006793352553594391943383795848970326679739823) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(10.484206587558023630306074730542777959234859321959), SC_(18.37167226861510913165720573060813802702174526073) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(11.595820390961819270439100184871235739716557277055), SC_(17.108052406435486520718512179244152127120867942847) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(17.587317570190287728608547891729978050981432786118), SC_(11.168138717341224366472186597008840737948212047627) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(17.886755345001343380288732866080327327512632241142), SC_(10.904717157439616652245000363036567093007185564766) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(19.19999009644968147169669237617423114964817342146), SC_(9.7829703674417416447601191973279139105401365579394) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(19.381149487689537484752879539375268680964631170468), SC_(9.6324266359464271487155559676217879711661768897294) }, + { SC_(110), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(21.364849220523239504830418459055294239392716287481), SC_(8.0483401198573268889581949104829694557915698010208) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(18.88193744861250885407727000922396593115457303044), SC_(28.801413797178619584075281359169255681798807837557) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(19.046548205788864576436301751563902251246270216112), SC_(28.620075464100981748779043570084250219002722135071) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(20.430740960559105594550271105332990851877554732411), SC_(27.119797228136994546970497011228178005608058541436) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(27.69008023226574878169283616456290493155748131413), SC_(19.899861294734220892819896545780896217097418279213) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(28.04559649468282024176106651348578921854475971442), SC_(19.571851123442908728509388752516043864164971733774) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(29.597908270950176889218065013990342729413992018948), SC_(18.165700028813246859764645137002658515267245113205) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(29.81120041693909230812631468254644674091953158368), SC_(17.975763581953372960805913848879708480128263452345) }, + { SC_(110), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(32.134122774595544213972101074336850438105758703031), SC_(15.957354360004545078336007663886168868210267885587) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(84.445731982734573228514115285672497857063836680566), SC_(93.730489351315609549554036910315394383223308268403) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(84.617038209823759124007800202453407117172816957677), SC_(93.578069187195003302460148504530958306117146094544) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(86.032318226881423394473463982235356780299269343234), SC_(92.293837610839661238221835143223693504601729501887) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(92.786906519476999772050453176275702830807230582404), SC_(85.494770245738821129984768859211851462623005459924) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(93.091230373089260591595694835435533440560578888559), SC_(85.159395166099199524011066537053412218186642566661) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(94.39289811472596815107740575037423278981834055352), SC_(83.692701558751675278649968230278392016719008106057) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(94.568340357738521297631142403886491455369613685215), SC_(83.490884758444170268245624538028169446073515867682) }, + { SC_(110), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(96.426633907825001942092980466101610565821706022826), SC_(81.288605752396751908652355598623044612606306990051) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(86.883493364703087667890541611753138841329973369939), SC_(95.751374139356056580938832283449403606407300189918) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(87.048114408257289533864831333469452350304726018651), SC_(95.606868200728318119866305559679066410346455278925) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(88.4069036207752576128908842277112264287421047613), SC_(94.387641942629699353156760407026847366263489384696) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(94.856098570513961897229749444675951748994394581185), SC_(87.891080675637989621508437680801646110839924005376) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(95.145019155112401475914331554375023336892150100475), SC_(87.56909163985267423709405610182955322612335514176) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(96.378869302946612315216721396889334141102332223091), SC_(86.159472156520441183060129479254309198128574424277) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(96.544919212415243505129221767441377688346510206447), SC_(85.965327069125056999966892559752702478005688762392) }, + { SC_(110), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(98.299676434654431821130035470603843501334645947136), SC_(83.844049304667358475111017410878023021934387426832) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(95.613341419350033545992164658934422339977914941371), SC_(102.58001016800569317930686656211982320999058022544) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(95.746817620324770699900424946019780004668689606918), SC_(102.47099698095642986175139170887421259190109884851) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(96.843460118127644940785917756029322604791833238296), SC_(101.54396464890553009117648492564268216904035410906) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(101.90164472746385878017346583007791798411635010629), SC_(96.428239157637359601598826053621780942117848804625) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(102.12133002404691705111750580384244923317413954869), SC_(96.16836808055239594081995983838857754028761968561) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(103.05111664638367532524388715469442488532276982095), SC_(95.024782742177757682528412151413819962433803238977) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(103.17514446343391510399479696269359385850998195512), SC_(94.866549385346926568834636264333042060733933490013) }, + { SC_(110), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(104.46778032848804609991839734905078280228134895151), SC_(93.126831491287759242155830626631905077683204869898) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(96.577268255645872260217124892956649447979952522736), SC_(103.28310752388057060861258211136239465162366842163) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(96.706406973493689176394357091778058623212457609772), SC_(103.17890893525577072689399763090115222196698167628) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(97.766643513745322888043623580687139481148256363294), SC_(102.2915650063524215924844656733913255655443644485) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(102.6341865062394079045880502557367683126898061993), SC_(97.365372488632961487569633614272722940298851007608) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(102.84446788327680091928533131189466619090743442466), SC_(97.114128083162065404633450614152965732379951020718) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(103.73301285820780601854038503195990199217206265326), SC_(96.007606642528597306650663825503412595498193217587) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(103.85134698698012056956239072423837436298150837409), SC_(95.854391729828185327631572914798186390827310015072) }, + { SC_(110), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(105.08141118285361256949969877297338048103034428707), SC_(94.168233132529090081436684716915122962817931114362) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(103.97565157381340246914904601541398189457031869727), SC_(108.08502007846483371724543358606478969673259944166) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(104.06097914419886624979278717246735467064606814919), SC_(108.02839286711820890696390854754148299501074663144) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(104.75459307606926636092702397206406620458067603031), SC_(107.53310596229390629678529754771993683603328826059) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(107.72696657343394690656973274374203280742551497175), SC_(104.49357613388784551183399097283639554755036942631) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(107.84436029241709455399960575448125211159580778636), SC_(104.329204979801841124202299920179642338448355729) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(108.32532128823860819514357963868981683768366936785), SC_(103.59720114487939654393782321262591848160447059253) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(108.38731607810520439284454618069018524759691977947), SC_(103.49486029911472453877454432565460982330324622811) }, + { SC_(110), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(108.99541996323565737934372266821034303079456117103), SC_(102.35424895521932015307681694777176335089517201142) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(10.404501822180385700715329671490535462630986873634), SC_(18.638941312877205514365907274862319688175417653472) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(10.536765848606679942303482203691810453563129513277), SC_(18.484257406209677342088827220163401105367779168761) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(11.655715166903718791230785778321405230385252251589), SC_(17.209781383196939029398373261113014637613906663332) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(17.693108649339633904780556983925842663286232694063), SC_(11.225166863786548246823738433355908965051053272772) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(17.995118737395024896601759117583489732424163602795), SC_(10.960007236823616293030063800755114157200700200648) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(19.319947138671172887213278184134339524908392023266), SC_(9.8310960070495122263777473954746299894746472540517) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(19.502745819914267349231266496720412950894976684918), SC_(9.6796201577950928915639679355404161490180214919567) }, + { SC_(118), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(21.505031334616551708215451533553627793607494157515), SC_(8.0861528610157949697291459816373044363089825950917) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(11.290060229086740993600074469850161298532583842386), SC_(19.75539587669619285074112582447291810107620147674) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(11.426628982317421122542578951235289221479887389598), SC_(19.596926524754548682206919025850304542334728452549) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(12.581029517659022550051490169576050178074078636458), SC_(18.290590850875332123078143444122104031048623960171) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(18.786144097236733234020941932804021906497188858402), SC_(12.137038489909107314374033231920620418954749459132) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(19.09570361665091250594247179237693747499603973208), SC_(11.86347863770244820723468354569350842965401812574) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(20.452866953416694083098789103489286923299305422463), SC_(10.697691454120541570842437245934478088498598946257) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(20.640030833046467922146960501700284163176079993796), SC_(10.541121577332541157735657557605726265300940662967) }, + { SC_(118), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(22.688700986191269352955390042166422508447653676008), SC_(8.891682455729345206656431975091274946818185167209) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(20.472700422244131074441467612913645720014152640566), SC_(30.747209824566426787929759373244556083970373500121) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(20.643535782941428117416802894626612379287750408983), SC_(30.559653609449400412440246668638297005716880023987) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(22.079504915033133265125184944045933803025485746634), SC_(29.007638177464812930088288539398026771358542546304) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(29.597651526913630927095933501178999191487379791693), SC_(21.528883060551029329325136664163091043655789109376) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(29.965427252399173451487056306274131048893296224246), SC_(21.188604273990333212517389290053489306004734324417) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(31.570931288316848106432929757652463897502103039966), SC_(19.729199955423354569369429749012240947930875354495) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(31.791492200064023216783769047971045739189137450471), SC_(19.531983058789152495905903663320335639789020293151) }, + { SC_(118), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(34.193030856019682819754802482772208848939143743906), SC_(17.434755051070521739274216035818712407458037151877) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(90.797248021471103618264083483493637293116464626711), SC_(100.41453281768142901195422247191773745981608247276) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(90.974378455795622071247116507700159314179736748532), SC_(100.2562799366581161148453857152259630339437499764) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(92.438116732889332978895579938763830836429044401402), SC_(98.923540650745538007584468314059980491562319053542) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(99.435103724984032846794406201240865035557215406819), SC_(91.88208949918755465831091531489242648980288150125) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(99.750921608720062264007968050283574636962636463589), SC_(91.535231936396850534984075833245299081280171979469) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(101.10249160539694448556532591472481321373765212021), SC_(90.018713314645521576884828359124586661691168920011) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(101.28475787858887608269666419734618452942268726978), SC_(89.810087334240168693849810476834797191893361611305) }, + { SC_(118), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(103.21696535239064121075578887781803739517044162466), SC_(87.53415314393764710493553127385326824565189696659) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(93.404673587163035131593981396699191769568964798265), SC_(102.59030758911368759256890854971815018735212916476) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(93.574860417883339060008971120928792123311032167247), SC_(102.44022605145739860082028361870842126203028049647) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(94.979955370212930566917859006048472550072649652805), SC_(101.17463717710367982294708054459058768121906433434) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(101.66076885078961354189138396003247954028425496839), SC_(94.44647450140145073212726982869152313010031906655) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(101.96067513250970868842463316011127168828291763115), SC_(94.113513046342276929524519788669073542555664180503) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(103.24222906619147843735461955731802972380439362952), SC_(92.656278889527315627661004693822844358701131846015) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(103.41480366886864742875214578262973937925111097375), SC_(92.455626283608250528748650430950016252448791168784) }, + { SC_(118), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(105.24026060384639529306131125289380903325347388253), SC_(90.263949307875257237406270601468463429622175104081) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(102.73441318553958687286478882128168154020299460939), SC_(109.9515502806333607118067657994402479082935970167) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(102.87227835022307980232344301148186227526107533675), SC_(109.83813021950417612279795935674072464784440540613) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(104.00542278092588518196000578864986371681613388236), SC_(108.87449396132728777449159443693478629283840436512) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(109.24612118209186814047626238211895432913494446203), SC_(103.57628498200538145138215961411046650472947351606) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(109.47447953712416375306922539803808753432248563691), SC_(103.30776461223548096513176825856144634968549320143) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(110.44197868931555836014307009564906587344466170321), SC_(102.12663009610856071860265691497815161571096908951) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(110.57117257773396737429866496207213267843743538218), SC_(101.96326270849367583745362768440114193797899237003) }, + { SC_(118), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(111.91996445899388029255441375864341567734381212661), SC_(100.16796655171222793394095819705115976401659742693) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(103.76361481107101912465786205561847419200840619299), SC_(110.71070637081783873621309107090531887636287074222) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(103.89698131447571311636996483906208450772478165244), SC_(110.60226058639410474056509416899278614589467719402) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(104.99237683579703410209745850416038339740773021813), SC_(109.67964755544061844611624682788566829503053165786) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(110.03570601158909794455598052088322962373930911656), SC_(104.57770148115575685270386967116524105122899806124) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(110.25434410208696010831280455112255944011819415401), SC_(104.31812601153604625465767153633418289853659535545) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(111.1792369010053383922590890341987846380442189101), SC_(103.17543393614332262433481443861492100031429779215) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(111.30255186638157567490432690321752458872548468631), SC_(103.01727306845828104879011315638072306547541818495) }, + { SC_(118), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(112.58679829137816265038713437272686581616892401284), SC_(101.27756516651305774583863629117905356591364328281) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(111.65153306079136030472464361383372064044999486834), SC_(115.91056332571942716785269851004123774319607026549) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(111.73948914503923842143528709198838532647260731306), SC_(115.85127133526785874463436195198998548291911131404) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(112.45493124343788925928275194367636669204419208247), SC_(115.33396912205325572344372937446839188763779296631) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(115.53619664900614513226627323943613692533239055446), SC_(112.18559858389987209196120172516843378557017168327) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(115.65880568752398040093231572702132539092403823872), SC_(112.01605525387694196326991028449752882969348966202) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(116.16259710230660219192291858263010407108967382139), SC_(111.26155856881104039153434436032797437014621967278) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(116.22774427454560352129688250375626876727996096302), SC_(111.15613708951556156153910218993127409333210950939) }, + { SC_(118), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(116.87072316105687490671015767594797396298978146706), SC_(109.98208942093409763814941812150282789971778776213) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(11.282576314514349103677126147919154466117952175614), SC_(19.792686213986515693786581259393884486607316406882) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(11.419680812441834156668679887817997007868316065536), SC_(19.633173412522187082865638075490664648753938635243) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(12.578869048847407323677948837636965502126203219348), SC_(18.318525247029505770328824186448433529256441217135) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(18.817170920232743182670258117612298902761819161798), SC_(12.132982309151151670306478098616638215169428375153) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(19.128700024080038265001276324914078301555329253541), SC_(11.858288085629509255540035838405656900789724415391) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(20.494839514971836083902461052350331090539258289101), SC_(10.687960501768540234723303881874187633743038548371) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(20.683284668007751745196836496439100455921836594109), SC_(10.530817792791598546835518328233099618800810529165) }, + { SC_(126), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(22.746662193828527941660552936662158462346081873275), SC_(8.8758987344722695298715416048005252992874590060943) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(12.232238469081499955790374060700653944359601134655), SC_(20.980877037854394085065393040378733001462910557322) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(12.373780386452849237823605680971287565262568091813), SC_(20.817445306260873917814533714819967966287725451764) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(13.569527377923134706918282761927211506472326474751), SC_(19.46982549296054554732364934998508682331487266992) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(19.981121472390240749262775387335041635046789621686), SC_(13.109774900654669333520423880089194255019602559786) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(20.30046350832794554724505190946476343660422737746), SC_(12.826417988850775960305454535789716124465876495081) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(21.700079647756784419354467632935738096089107104022), SC_(11.618079982983610900768583958322363279525777864638) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(21.893045795347720910361514476588633725817845138827), SC_(11.455688887033655065512459812648808787749068095054) }, + { SC_(126), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(24.004489144985436133467624179125947746100484683357), SC_(9.7431431818018571975491185700580332728587613132146) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(22.069393901322386328476935543432477872311354297695), SC_(32.687073275916743253960594439426726570782118042714) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(22.246244599021445956386599961913553114434743352505), SC_(32.493507606912343497118947481969047579011490056875) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(23.73225391065656341477241324855948721498498921739), SC_(30.891486328216096829691724509066577244156601035624) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(31.50057032894149954451996483428980298420323571362), SC_(23.162551018640173468341426180948624821359363546933) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(31.880195278477987430070835135502677444437476315292), SC_(22.810414987437459631004500878064082431544593813483) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(33.537108025722101457988519109605297246169464991662), SC_(21.299548611439443146608866042394898569047753716988) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(33.764693468867402084464052672758683276841975902104), SC_(21.095296970941503519056843208910117289912566610319) }, + { SC_(126), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(36.242197344446458740905510710265450122095646392107), SC_(18.921927095193265845345086659391837358175160558313) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(97.154323984373696265154412101133906923833884615106), SC_(107.09301921153370105254661555056023564614888081212) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(97.33708328075317954483589824805895909272332607675), SC_(106.92913001609833456882728226334834344204249828167) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(98.847657415538995652069655801907106088036540103353), SC_(105.54951150896702490101080354617765636912538960541) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(106.07894879795899129021673435810095307433112472289), SC_(98.273769057451193332306390300510408405147452042085) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(106.40587486887334402968038264694092212199027815955), SC_(97.915813434710968321342089969311434063952075855082) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(107.80566586411666804509597065861258346783823108798), SC_(96.351141436638236687929585990609985720861490752272) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(107.99452534686144868774204067514569396617554823605), SC_(96.135935230182048384187120156367855131362815817807) }, + { SC_(126), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(109.998127751333590824154261691293251131849652443), SC_(93.788831813285187838868776010989958091903496368812) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(99.931169227341946702520282339489708751858167037339), SC_(109.42392912260114452872595635211672199989158984468) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(100.10673508508494155297684672864242369546589799879), SC_(109.26845996119357596099969446062881417947167336009) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(101.55658487777646067136139327017990838490094446923), SC_(107.9580663386451183616584520308989074194673531331) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(108.46128013109920726217545535154511975630332742707), SC_(101.00603693102101868316615501602274109543649218665) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(108.77180300493578439743201199661075128700131340323), SC_(100.66247053668645026611294374800739585657110662279) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(110.09945145606157494170304372549291724732597914146), SC_(99.159219910983229333797992960016039475572783756255) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(110.27832966763881936919431115915692440650127714509), SC_(98.952278715925681604840625946585433955873243971751) }, + { SC_(126), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(112.17207027320375668496677898573600672739274037584), SC_(96.692580195315388623264031756780549837614127981026) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(109.8596886924119212603971363664420391521833579918), SC_(117.31889614879852038418961991952710034870300330525) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(110.00179513403159423295604639084085845161419864806), SC_(117.20121905199894747326643795635195862722905260824) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(111.17021615726072424416709670371323617125244947302), SC_(116.20221621491884089791674974157198832178668867318) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(116.58732046474589977721124123395016628312950843912), SC_(110.72762812036017210042136750562575831549850721472) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(116.82405875072542078464502491075466195314143849196), SC_(110.45074879378766299384163341024104354109157843107) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(117.82798671337136673566852387198285546329587220182), SC_(109.23332910187369887583627727870458413973433985956) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(117.96216940504418422659305482435396225373017446561), SC_(109.06500100884928839752441087801106430683302134663) }, + { SC_(126), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(119.36515855294228625329158503898947282999580912119), SC_(107.21601192674668705731437757934902155865947473937) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(110.95401317596261808263574905798021341180582420505), SC_(118.13426448851367332444286670524786121062666384247) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(111.09146512778697548390067975266778167084028079518), SC_(118.02171615832703461429648640355241481879153890266) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(112.22083888233413132518590553231688750899132179388), SC_(117.06502760362601474622601489053655359798128499597) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(117.43406970147550859668027897255547575371674770271), SC_(111.79320877634766771879149579559035959967979740767) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(117.6607817549785791085401692223912722817863512441), SC_(111.52558201187455966659002997163101004480604795891) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(118.62078290546241610357739644418798837938629372588), SC_(110.34793754956977423300949994479301195651592073966) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(118.74890735512541530140491776176471133379840587094), SC_(110.1849978115774059117046635772758133297651493946) }, + { SC_(126), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(120.08543780834901958650753984883961829897824255622), SC_(108.3935586086277906742475464547905609163984682111) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(119.32996767423927810254632032210432875148831487115), SC_(123.73363652444767179828936999195759463333486167797) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(119.42046305445129755014720157643333632756225021377), SC_(123.67177135581530255522101080556469573327931151991) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(120.15699588553256673359642070352360809466728644663), SC_(123.13320153426021900670120466141123950224526428985) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(123.34351346463359047700086477108916124576489719325), SC_(119.87962774043454997690173775134994014275739910067) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(123.47116078057844177139606626940039347240976503115), SC_(119.70508695946898822175765857231074130399626997453) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(123.99699585256225784950683574309476593078726737969), SC_(118.92886140656770446731835240466413429015556057235) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(124.06518489225471329964063319278234002616137641504), SC_(118.82046448170754762933210389098080206569412137714) }, + { SC_(126), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(124.74177600985142969515653753524211323430250474787), SC_(117.61413137674664647430428869322814194914254850327) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(12.164973793479179055838591076757301598446237179049), SC_(20.942103743437730006224316187647871075790002199686) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(12.306765407217627789092947349271005159213199176447), SC_(20.777914064596120148747915355600001193009427892992) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(13.50492277074412647982037799845184139922045258231), SC_(19.424355930760879916599378543825950177092348045224) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(19.937839204252561131072238257348163265847413097561), SC_(13.044180663342977448639702370856465139889346258921) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(20.258588256951454780129873074456155071690054567523), SC_(12.760252684939217283508240344352930072297585044559) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(21.664737913463933292206929775917790595349907612192), SC_(11.549821877864571628127206783261101748629833723475) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(21.858651298510372290360371520193358669543384711849), SC_(11.387192944205093453654678628915644658961741548596) }, + { SC_(134), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(23.981184568737368619437080977280700612221952488777), SC_(9.6728015890602524782674199585996387427420420479061) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(13.178858481859951488915907865820239149870591801921), SC_(22.201912509296400983747438576161533135535857773455) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(13.325216140733304316719571043150832234157758880944), SC_(22.033674570605443518026151843187672293451052755595) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(14.561005661202695855695530654551488370630968624221), SC_(20.646067410792168164361331294777082378780692225829) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(21.172612105170135100637077372995842886930104631039), SC_(14.085987875599015550688989868298865689606035208424) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(21.501429387445227133161093131306204142828039600692), SC_(13.793142837148418780435666836090845001119429391587) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(22.942161865778646740007785126241805465240215739942), SC_(12.543601867939642901052203892742089303132292080874) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(23.140747191812499679029649437166549967717287060248), SC_(12.375574872437885521117651832873486345113624083352) }, + { SC_(134), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(25.31297511671939868624703913000220666140685395202), SC_(10.601951243900023506133865158724124005265682572253) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(23.671460557071470136411510801851150686353157815111), SC_(34.621561896755696764091388426507677903650637782346) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(23.854137117305881938904950115881024499072786614015), SC_(34.422175557424840322376377621526235653181495247339) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(25.388614192816636239743116710894975764590105822812), SC_(32.771716845500194041733317767837402412259148316247) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(33.399273838766922738633252613646971016957581077497), SC_(24.80042912619042845314064094012879859748216042177) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(33.790376379299730351383564777068721506432027450583), SC_(24.436808417649488898004140645685421342210459638286) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(35.497082433247449945694307625435519018104899843602), SC_(22.876101664641943736689916586543086332959586486582) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(35.731471241498740358190365799076468967496080481851), SC_(22.665037656869067067291360162942566219521191018217) }, + { SC_(134), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(38.282540451562628725288414424091173491771301836487), SC_(20.41794699216846987575950781773694454403444863894) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(103.51643687806312053300603438234993262919863049639), SC_(113.76647094466222369290379918057565494655358447561) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(103.70464811045967852123508404668450557228279159632), SC_(113.59712323297982176183217896745365904874052790075) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(105.26058843585345237853011085968676594550748227771), SC_(112.17210020157806590218002044321176995024607769718) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(112.71885021286830058979080945915053471833055578593), SC_(104.66939893728892398296806830559414248706811113392) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(113.05653506306349381326663688526441684189767171776), SC_(104.30069348888752321743428971443084105001681594686) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(114.5030251489528990894257580889470196237232631515), SC_(102.68938209229292626513463441034135993330316793505) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(114.69826898687911147613486903141407014873767100302), SC_(102.46780297816678414529270054433203534594739138392) }, + { SC_(134), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(116.77098895783546051134123705852799808277957961592), SC_(100.05178060261864140338932850882087173565907021177) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(106.46248008473228756043679937024191884139744342702), SC_(116.25273821956778736366837686930927198973349457211) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(106.64325582453186914057809228762395321149495234283), SC_(116.09205158245960321311558706949693495264494585162) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(108.13645559936848440030409516658339549027317340719), SC_(114.7382638351776232086332233225454083655623902437) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(115.25802276638601150332776916988123675009993502773), SC_(107.56937582997085787106137296359572423659091801208) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(115.57882801037387183187707007864632615096613181232), SC_(107.21553737361888421316737561198829200345926715344) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(116.95111442886327284069264070316430397981377280895), SC_(105.66771770076939782951272732123358576604223023792) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(117.13609624213453341206011426080705668671787372844), SC_(105.45468614967999360842741982478647538797186753159) }, + { SC_(134), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(119.09593690150308349161415891280758621781651595869), SC_(103.12911822278080876770633125928983087812629206318) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(116.98877124943269649500704069322397388246221261435), SC_(124.68244241169938565689006019077068839790183212799) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(117.1349852375836192689356964644714035664082730024), SC_(124.56064379919947925342031700879737950874591996734) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(118.33757307076942355580039952793973481198311794848), SC_(123.52739419387184082523541152400758865382439529485) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(123.9255498857492744756672359342270987565691603662), SC_(117.88195743966152071432893658085665625507479621556) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(124.1704028137552979665789870356007477821411951818), SC_(117.59698211258788054403431023425851371010134540885) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(125.20959868801516376092982957287237522824843028325), SC_(116.34442176030631494253059206636460548742221912158) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(125.34861001869974986697317961543404317750164587136), SC_(116.17128986289294967877620647793897532302807804299) }, + { SC_(134), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(126.80403009501984340283114198668443370391032243787), SC_(114.27031383229093680053634801297401341127846331405) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(118.14808078648710633999023280040133689903874847088), SC_(125.5541620296957555647865676312078478137616519852) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(118.28948930488464196771593540401522077005686546952), SC_(125.43764196328861561700174822237859536520114870599) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(119.45177192488764490099937017194749575462799821165), SC_(124.44795799571301415952065069242583222387922272413) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(124.82957337891704348158898362026531141240538937072), SC_(119.01159428411239698568182960197205421247172338741) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(125.06410351835422765556120215967623882348916175929), SC_(118.73616960442182199437256023711726521364350775132) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(126.05809230270001837643353632368389867741028810364), SC_(117.52467580221916362549441319753874471771057760513) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(126.19087145390693346727059500803176342103152956183), SC_(117.35710843884018855772999695555813223818525177658) }, + { SC_(134), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(127.57797497037001166895897816061520095964573740393), SC_(115.51558289033520680083317010292724665924207426321) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(127.01071178257072634947245148293064635859502935035), SC_(131.55446414066887224550652711288484651595616080401) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(127.10366571036574603591153740233558230541692508227), SC_(131.49010892684449462236541745470395613282046136687) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(127.86062156511444338094827427503359000966961199519), SC_(130.93095008947311222672088836102200824329120179699) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(131.14909001692501036831198211963395002056480332785), SC_(127.57547172865108381096640752124576970679290478098) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(131.28161493190187081195636599904069640190922498682), SC_(127.39609170171313630690463721296956091996937312637) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(131.82877960084093564100603572279190766812865818756), SC_(126.59882869869713603581904268864670534578961118623) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(131.89991018137578984494109489185270830573155414953), SC_(126.4875514827833493769465357150649957500399321071) }, + { SC_(134), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(132.60896374121318090743343829459226612264081427425), SC_(125.24997337963903660789206665220185538496106337751) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(13.051311557942732330100992894414079516115140246443), SC_(22.087577469526451109510918414920898740083265098605) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(13.19765065108550155588579574934561682783279090778), SC_(21.918849429942628028390444536789279409363793687465) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(14.433620481489611762311246505581780093141132930276), SC_(20.527531598353096307610225185043541433033617879493) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(21.055414255807215608171599765741975617262078390726), SC_(13.958463124006131095158101367806055401156282782225) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(21.385110704583394323307726689081546392462374964229), SC_(13.665575432701713202572764889119755525251576250857) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(22.830085170722179660564927484074763525194829482865), SC_(12.416236966064568715580776019387958350485272932902) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(23.029304414696760054329901292750945609954289167621), SC_(12.248286178766206629905277192945503372783229963226) }, + { SC_(142), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(25.209230117936614074173897090141905670769153830255), SC_(10.476221718481629350464317199382694439665784414003) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(14.129527095720859029705475912537865984198255348789), SC_(23.418896233014534313195864097862733966165858344731) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(14.280557145087258830518366351226867087004546441819), SC_(23.245994392898230116951993332355571229502138891508) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(15.555201375110275521064980460861869915471737098506), SC_(21.819581726000994004961225177137395119233681954087) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(22.360924871573638540784777395319385804932727868424), SC_(15.065370327686753991293633864933642730879268136534) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(22.698937366862419508306371766408354652222963011165), SC_(14.763318590023063467942746964355523316768735042506) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(24.179568419819397037150775845084221744665709553222), SC_(13.473801945169107054408304962879313952309600894719) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(24.383606128926857063460886022132347888875440578528), SC_(13.300307704913772715883232859048352099027594199944) }, + { SC_(142), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(26.614807582122391740428923677579586880422250318544), SC_(11.467450452285168793190997629438427766905275914377) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(25.2784252262898104289554838033379519728955415253), SC_(36.551151163183073355291998216394551136478462361247) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(25.466755030144293186977538445749252741701415789731), SC_(36.34611619636798190812364738622402462628026398619) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(27.048266997966301787442104958957686759673094716433), SC_(34.648649581011075081154131741111737527725699653697) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(35.294134792381194394311843035725743300216672655181), SC_(26.442145537700519403723880742530746188547480275515) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(35.696376198084717339577669122799626249707828359283), SC_(26.067379657847349923814705284129734246254490321989) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(37.451403437054149762125155603122341947931536384532), SC_(24.458309880478471885326825846061774640388186038211) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(37.692394095701388164369318419081106130685073041892), SC_(24.240636027512329967986667724085386175137935805717) }, + { SC_(142), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(40.31484263856055765083913484670862592125345189095), SC_(21.922028173945326689371665427267923568730344447273) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(109.88314089048533942609869123161959621882652055866), SC_(120.43533339399250626974577090916531603672750878716) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(110.07664282844477638953144450836489873959266906719), SC_(120.26068912424855662695184662243473300055358000493) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(111.6766098606362707307093626626479479792835521567), SC_(118.79160525664365852841733714608172056611548251676) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(119.35515630916678070615119767343868051138081520648), SC_(111.0686296401439251298237098127032006034544677326) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(119.70328156884278954456073747669464223102882786169), SC_(110.6894917547346761339168204217664958473967024385) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(121.19508449534440278299951987965562105030098217151), SC_(109.03292059516642021127603853224448838436744244914) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(121.39652252121291376815199122104595958575423229571), SC_(108.80515746160491659948371023780830763486987005541) }, + { SC_(142), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(123.53628795955367035840093650095590477414737183676), SC_(106.32226572796995008340525646479337344627330074214) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(112.99817980412189530634144638383078803769824573598), SC_(123.07716069730196913392899216638112685357722276795) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(113.18401129090979188808239118146006910821433285422), SC_(122.91141155711348821988574246847208367393289724669) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(114.71928066335988360032140338068560241546758442313), SC_(121.5155148927729899473648938852527363009965476277) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(122.05132964953459707674631073071448056708467729652), SC_(114.13615693958655977941491191602259652896374878039) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(122.3821127539419767945131428711915763318355694487), SC_(113.77234980575271430360763247977709131671936760473) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(123.79771057631245145947545320829985091156881798644), SC_(112.18128003076504184818949505118552753548763083484) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(123.98861390939744069280170597338045520961474774053), SC_(111.9623387276786037978944163967586920275336008951) }, + { SC_(142), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(126.01256835065359401530512358801575385779863480223), SC_(109.5728615289155123752059741420219590267337464438) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(124.12132287597211607838221673144251443563062946529), SC_(132.04252553849817820089941864059890647999057825812) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(124.27152256970497544520107584135026407222202125627), SC_(131.91672875484289561450654860229459692344439358384) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(125.50726590538281001804172473515306619560100322924), SC_(130.85025214496150197335604602066233460647695160476) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(131.26107161117820071470287943972554089684163502213), SC_(125.03900785897227099699319632068383181224735648831) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(131.51379758937221174610796262187321983424240558374), SC_(124.74617615546517292849171432173311454310269759817) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(132.58720489197725599190598408848032574786852668875), SC_(123.45951787243960117716357691526013161957120205939) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(132.73089921669508933496622740223884178496726992195), SC_(123.28172508560526594832095978535183324760793216569) }, + { SC_(142), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(134.2371466804899999693432412616887946338301816292), SC_(121.33031544090402321140235096703233591170008719561) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(125.34549172543396937919889009709493204819026445694), SC_(132.9707231384538013892085128108247697724730987633) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(125.49073939070800138960077421556273466196694235629), SC_(132.85035037793922912449343043127669697912751418209) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(126.68495642095345751662844821136499275462676603373), SC_(131.82865453081584743954955158952311284950352469038) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(132.22246942613369722791205622500310423325232266205), SC_(126.23260235721122588559124901273288711227431045051) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(132.4645846486369924258969790353743781498358285075), SC_(125.94961065386364567722375498909202357981726407554) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(133.49154129259556196756834507438186770755490909533), SC_(124.70527242770003862101699316244620227855364236017) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(133.62883442439568322557629873094770535724764044766), SC_(124.53321519631309817681409990285223812816725642785) }, + { SC_(142), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(135.06495836153030420697478274944593959639437147597), SC_(122.64310099717586895152396342354109672529262744365) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(134.69355815210337705361630811791401138996869884729), SC_(139.37323946311086748997900731702510451576301232358) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(134.78889709124908781215101061366593574686299021999), SC_(139.30647002850775496387223481099351162147613019178) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(135.56566767205304074706886822151501010760371884752), SC_(138.72734129787412779087236225796632496186205776078) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(138.95307525149357629795143675208160795205964708643), SC_(135.27296740330045743234805238506688740185492797429) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(139.09033116664477808472507757518679991184179341544), SC_(135.08889225891946980446386346154406356842069364429) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(139.65817417581237918738475977933085466095100846903), SC_(134.27122143670113381576055287484629175224834223619) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(139.73215482209550223096717917082886029977273834826), SC_(134.15715054653188339529316848231416300308777063842) }, + { SC_(142), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(140.47262155736106117958742912808823973048581745725), SC_(132.8892739823397270295416842380254090111853956217) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(13.941260212382988427562319433276446825247465465584), SC_(23.229437443696521126911088190939308502892330771878) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(14.092018936571034281876823116039967094870287418383), SC_(23.056297945526348513913702353963967125063014164092) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(15.364741844342962807083964346852363154789902217487), SC_(21.628274394214026597931700307335106757408801244277) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(22.170154872947448640808698620101499020265225694639), SC_(14.875572412414013601850526353014668334599934130334) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(22.508548980471349565056225746322929102384765579019), SC_(14.573976007070542700270424614728102213277710059357) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(23.991262317318698105098006000983762330055604711618), SC_(13.286824440605141291731804911141338839735599686408) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(24.195638692349604187332533186971120004213206240471), SC_(13.11370221117862598563103415183685162882754065639) }, + { SC_(150), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(26.431342183979266542925017949821371744031355456057), SC_(11.285609412716587944740513533466493775260817735342) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(15.083905902039569687241298607781916380238725415024), SC_(24.632167201087605807851987450002363861184971855249) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(15.239477083104520601934575135156367129963601601243), SC_(24.454731835495431325731597061104734282603253622983) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(16.551888041026700644667470046050508212563398769837), SC_(22.990596582055164831585962645935866605412001641516) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(23.546325570983470951761625552522658745226019203307), SC_(16.047657850806700731122210781055657310919730475304) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(23.89327668373196984275431382153286623248731403494), SC_(15.736657189635296666724103321175038969247265574025) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(25.412690660562331802824258581910414570560096089671), SC_(14.408288558930987269959611369521657398202134770523) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(25.622027970627328522494619377070946052748253489625), SC_(14.22948142240874135636954476449398748345302372235) }, + { SC_(150), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(27.910544548114196146948552535907145087367177278829), SC_(12.339076863232828126008054317306490480283019706454) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(26.889878893743561196782046466242249539196003790068), SC_(38.476250329722642815021251526266013365479394486742) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(27.083703817396490368981472108964719755433421913135), SC_(38.265724373917406351361722861543781529103125875767) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(28.710937854893079501133967225177271670516038666034), SC_(36.522559858852308147151612493575983261430322922879) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(37.185474032110076285173004450994346898024699751145), SC_(28.087380107035552881803645779646899295623355926027) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(37.598543897908252031433365951914829495153038909875), SC_(27.701780119161602084319459568111582009812458001626) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(39.40054348194375912423140528831412410251959059751), SC_(26.045700563041058798039405616383108675433841931414) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(39.647951380235735409231441563524693180322577142242), SC_(25.82160232300497420435150447582754254744846835872) }, + { SC_(150), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(42.339777151249013811498664957545610820200325869451), SC_(23.433494157277334710420843672778756186210502811448) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(116.25405232877980283477824218063982146188867548012), SC_(127.09998992069567931352016938677596055903106792813) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(116.45269724625782203203429656662502673376159923492), SC_(126.92019743243202393891262234254421480286563580359) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(118.09546353524966560275286270509416430307016854153), SC_(125.40828372827369525204371610123572752002302261582) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(125.98816699642069378674242082829807592774145574957), SC_(117.47116035131636964651843200815972208014148759064) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(126.3464409938376470254461450316412243694304750439), SC_(117.0818808721273965884642083698074387093668162162) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(127.88228713446369555119954696480552311826019250306), SC_(115.38131400186140629905296808378199312583628500856) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(128.08974523615398988666248411873815363417398568375), SC_(115.14753988473909803820824694682042458692632232978) }, + { SC_(150), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(130.29466017890473967979788319721655525932981929512), SC_(112.59965587177014763294123753129577592680658191952) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(119.53790145957088920034512811549294190881082769855), SC_(129.89756307262890251520754064985194427505747933592) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(119.72864747224908992476479192232055644509667952585), SC_(129.72689335692993453776168692264100791617680641056) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(121.30481317482152331903557014881367476181786413188), SC_(128.29006511825764901075685808976927485457572316114) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(128.84148739406649198491898815957482970790253748508), SC_(120.70609258077200971053500689879657724095743809299) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(129.18196940384201358121315930958455784175311610786), SC_(120.33259477362205886719246329349858863108941434939) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(130.63966379410665781923068741883789831019595823826), SC_(118.69948330891348402022585811745257796437857045686) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(130.83632196164729206495493413738298434915996192371), SC_(118.47479769522403274005105678498509782328998216876) }, + { SC_(150), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(132.92257317648028519740161039350246493356568996629), SC_(116.02320629435435915684592951800126166747666808962) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(131.25705281427876576849082221768151419698464686467), SC_(139.39943515109906479702007329500737484767036884441) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(131.41112659967210579031037661150230119832100132296), SC_(139.26975308516013283384787826579597296242794430336) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(132.67909886021512032469493148874826606103615336571), SC_(138.17098324155347320884747070026242995636204862534) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(138.59411142122310148786620250765951859757566962916), SC_(132.19855133716757499404651192815290935520237015746) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(138.8544892266869995925513601100276729229022806447), SC_(131.89808280570207291764963182452995060482116317836) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(139.96114112445202225923202191604987183398865382435), SC_(130.57828177168034202249023935519667789184174083847) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(140.10938524808575231085452284668561537735034878315), SC_(130.39595898443911590454543775824728349902520402564) }, + { SC_(150), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(141.66499575182095959427922368583031361579470604795), SC_(128.39553787986754551569729305193107469384663398951) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(132.54596563410654925626290854776184296006604013973), SC_(140.38422684344707569753185015820019564990099029679) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(132.69494488567408121679586898664259167740148373106), SC_(140.26011032706232017913974568879322424673693952087) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(133.92020353348486551716840167404814537803039986312), SC_(139.20730312880017474344642492997728161954746214936) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(139.61297521961324037120076294767652120627917602396), SC_(133.45601308938283398150684975087572272148430818497) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(139.86246218260223453682278430553085866859260471362), SC_(133.16566590515785773584211794088148462167848380997) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(140.92145356706156038889594021652400774995959349363), SC_(131.88940376781887187922981010550651535280676567379) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(141.06313201278141278943348113689142816941329657276), SC_(131.71298282905685190152291021999403444039326214833) }, + { SC_(150), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(142.54685901759121485441661609599204373636276928668), SC_(129.77565112706231531890304028330436322960682183018) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(142.37832876812224264424802779992995642243792240753), SC_(147.19013017304003622559708887321459787496476175261) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(142.47598538353214997827771104797614412715883744352), SC_(147.1210159976750839539440758823140903245358155233) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(143.27201350466220984238793866688686011810287571453), SC_(146.5224849637359251853865345897086259008705517263) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(146.75559839791572035114597389089392772486482280383), SC_(142.97197466951559747666964829069534442912421386375) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(146.89745091365054020707042082509540394427880270923), SC_(142.78333642619553576189898211626370726573588592912) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(147.48537555408611955069698836532872253600429401351), SC_(141.94583429402499269535267626644285154488346507301) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(147.56212250564996154384697247922161265018349498648), SC_(141.82904901026404666828270081671114220500055353926) }, + { SC_(150), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(148.33304207784629990988446925937037947255540662181), SC_(140.53173990115956638215866295702074713605680994262) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(14.834533823431491865711115241925781613990976203301), SC_(24.367970103960765056319007713155923123713170364061) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(14.98959454747595162118309766448177587365409613686), SC_(24.190535971768004367780561656179425653767588613535) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(16.298095501364366471615766898813571052627489189173), SC_(22.726777109490819514174180139940817304307101958426) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(23.282285661039498179074401114138516325616914105347), SC_(15.795285123302576470575468377937404158220678722603) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(23.629147490873518765107649872796720950929728887106), SC_(15.485211018190073313333995451015580465832505428705) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(25.148600018120659629138547794480367841655347320238), SC_(14.161253377838318645502485357098610517058952780429) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(25.35799663234395198803591994635869763560034683012), SC_(13.983098029922665887921070633109463257121873250058) }, + { SC_(158), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(27.647992165942754767016647029776944976257281186257), SC_(12.100488170484327477382310596861328427334646675016) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(16.041701141914654837400131816542584299335555265932), SC_(25.842019621887887185171240344500221318347304261435) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(16.201692677812049768127593987452594666167727632818), SC_(25.660170755408478825415314352986805893390690861906) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(17.550868972529664610384099633753314784285418713836), SC_(24.159309985843692351124118748247439409160019035404) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(24.72904489493932509226986081985176308602236098841), SC_(17.032620854594497974725163203753923818129291050044) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(25.084698370948136578361743118669488423971907972934), SC_(16.712908531812175427850910660778446855600022010694) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(26.641868221186012240675867803780790693823858794749), SC_(15.346721812809736187220742166276354388336017213264) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(26.856364505699981174026625924372268291833741483808), SC_(15.162743738201952527407886627899015999210623083268) }, + { SC_(158), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(29.200670153952847251036971174127990864718456716178), SC_(13.216341583254394959663990540854822427815578115169) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(28.50546647805453821024892864447773628644460370511), SC_(40.397214663743407017149578521906668518083374907361) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(28.704640970739660503406033737717881610704607405116), SC_(40.181342857040268489085560666658761221457361661556) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(30.376388421479308680082008295102274949058320664464), SC_(38.39368669908482689787445303471270761946218316699) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(39.07357009100674126275457921350836931059378354277), SC_(29.735854853269802581017634474411935699526563031705) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(39.497182593927828257710628347095483692071259290978), SC_(29.339707140720808770324940154990018972820036255363) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(41.344912666228434809043454799448566519464030893166), SC_(27.637863407788572281300745215406525452378427947379) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(41.598567859146961202721158728069929407998226368722), SC_(27.407511445227720641775789487708285974902772634914) }, + { SC_(158), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(44.357928237675322587749128811630301413746318734508), SC_(24.951758107800774735235513729259407447788767426528) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(122.62883813782892274398646553006144035880836288856), SC_(133.76077332285194284979381507286876856223333290313) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(122.83249002766157260855653773197347682519547091691), SC_(133.57596914518499149235712533715079118672781638431) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(124.51692536354013627696810930357447595847489286512), SC_(132.02235883841770310614194564819853943503672130557) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(132.61814268438890247180978943756913152979348688193), SC_(123.87672994396628312836960638592341366600378339462) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(132.98629691067073799441866729061169271689024607013), SC_(123.47757667394708741356488781835166994730325690662) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(134.5650177699972942872853718005346789490853382259), SC_(121.73417784746839634865939938049204056996255699424) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(134.7783357501060175963950501468598043892268928226), SC_(121.49455203004307762315959871300757085015752622283) }, + { SC_(158), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(137.04665672363441752398621558987944289427381315352), SC_(118.8834032073747953014628927088473749600508954401) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(126.08132656654698219220112182237380465943604183903), SC_(136.71426351371404403198646948904505918630645175836) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(126.27685709013900787614539146216584968631907076752), SC_(136.53880383882205539671002342590184252041081892321) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(127.89283882531637004731368726509631125291499543777), SC_(135.06212779738517859552654610031404368266394106077) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(135.62874486638494390055817176560300633753514114813), SC_(127.27893304361169587941335254689342402184092198446) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(135.9786689950755282944821135440863705025739879845), SC_(126.89600053886126082159389701659503814700498474935) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(137.47734198675517845781157821978343108967508753737), SC_(125.22195988519229874127939012777943130545443458892) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(137.67960164416949714878377274324093681414211056958), SC_(124.99168224859376998966367231143575665926833592368) }, + { SC_(158), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(139.82647910572930702377782155146430258754073079778), SC_(122.4796285802973410465029394403325620182449673363) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(138.39570877964928385049286948040792126420948546363), SC_(146.75342266565785649196873956963072045846509828994) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(138.55355391549506116225487251122571497797168662793), SC_(146.61995914872623359459417934997478980873936681563) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(139.85290205134192877561909276085934743904249282406), SC_(145.48975528851425019283553916592813906847747686165) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(145.92486540104352167871723503445761398488415934604), SC_(139.36039000873175404053520857689199105517664320038) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(146.19269147073299390681831540303548680523836356842), SC_(139.05248677622128321990365785838630848875385290771) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(147.33169877992221176121173505249763663795192601303), SC_(137.70042221787558773459424187214258283987653587558) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(147.48437027827726836888682900721441570001374864084), SC_(137.5136898893455658858156979784683622923847846595) }, + { SC_(158), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(149.08799959399724789659381189353409192976883113554), SC_(135.46556576350227002780853751983142064500857525061) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(139.74925926737315332448089493287836331394325222077), SC_(147.79491537453148669397216836294015706050065263723) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(139.90187109787960751420543752284203539513511394638), SC_(147.66715528893402191781770624997219533599186480444) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(141.15734943516110619279039114091034532039683947927), SC_(146.58406531022406869173675281217653683135789388306) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(147.00127956136524090567586779485957138187898435171), SC_(140.68163568854854250952465427100955008071106009383) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(147.25794196649899342101013097132812433753048295096), SC_(140.38412777579205088288673679109379586489435777461) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(148.34811001585345075505915939561947716376318216555), SC_(139.07678901948762859250816818055091557374703377444) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(148.49405553474518451818972806133052592512729363593), SC_(138.89612047678813563284835080687616824125597020467) }, + { SC_(158), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(150.02408494228068205716090887099564643441187675718), SC_(136.91283272663169062873896808602340765556423318092) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(150.06486937848522813267903680265720239055168701747), SC_(155.00528273792471111879056111446404310095730601385) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(150.16478171285077304707635544625380678664994080614), SC_(154.9338877625925938276944232260643450021941365284) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(150.97955453629495644821784889587131006951039740395), SC_(154.31647706662629438772068827623407153930023132681) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(154.55677237171981294091269376587353631151103617094), SC_(150.67237216924645350292822176816688035952660140891) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(154.70309772860293023886598616338728007426306651632), SC_(150.47929233810345842857860869005666192634252903097) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(155.31055493103053741380383121532167236240345858341), SC_(149.6224893398907771522457861128862006671059298441) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(155.38999117821742710874682342633685036893159123101), SC_(149.50306258484484550078827980277180429325913146142) }, + { SC_(158), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(156.19048177701124237444176200343243064946124956017), SC_(148.17711702201635801025732027820980268560194347369) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(15.730882295682088284271923162208775002199165109287), SC_(25.503425939887356094602618222010976022350750223727) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(15.890136312973695587325398662144026112251234190607), SC_(25.321805187148401735526518365369286905110161301634) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(17.233514006342752197640725520375226705077764035964), SC_(23.823208341291552685984652682477035863499801639427) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(24.392003041640273181592314185101684223538451022765), SC_(16.717405795582698161358767364088443714359774568845) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(24.747119973306019956302917122278223593824323807026), SC_(16.399067539202474859607646012047964563044064226605) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(26.302387426231451115880158964190187338683438808552), SC_(15.039234399106404669456623689947035495557139246717) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(26.516677733456366772694943689309674576495776622943), SC_(14.856173706526874566755760565629669231733790002225) }, + { SC_(166), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(28.859592185504946251869286052375467518306200367751), SC_(12.920441734872845910571838848364470485887287094783) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(17.002655873301028624482778702125311234170130108104), SC_(27.048710788953605795110812312671313143704245308729) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(17.166956143905516964110547684290297073585122891804), SC_(26.862559395529206826971158969996462606565503587325) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(18.55197206469475006476706923075580245175034881728), SC_(25.325895103012567508544085456814818978970803322086) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(25.909284595216595130199881491145317111616095140463), SC_(18.020058469034275957706402694388681615578126260689) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(26.273421969182514087712053859556937695531702195319), SC_(17.691853817127678021309406088048817024461817232649) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(27.867398106995537331734269140399483951049242245141), SC_(16.288804474768928862693883761569943972335485314062) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(28.086923364769654195430745064965230216734679021019), SC_(16.099786604796217246342763030159638238254367159465) }, + { SC_(166), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(30.485607673427880596074246571332749537098722628625), SC_(14.098817487276691196810806347484595845426921549721) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(30.124877372391700438733358280910721388358803131123), SC_(42.314354918737223388868822731783280063663684862909) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(30.329266873326189949059026247455632666588125510383), SC_(42.093271468097469281828074541976379124285263210118) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(32.044410159222698816331480741994793149833418457182), SC_(40.262239185869658857092946263162567432715716883031) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(40.958666614749094247859930145470238856980638223969), SC_(31.387326574209787502559321537072947003776754217016) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(41.39255743168416633522565166452098149821285847712), SC_(30.980895941085321898911175777495689212378513439713) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(43.28486968554132075661728403539714480429230333112), SC_(29.234439548326688047624167282788784346743481879173) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(43.544615049643608335163120147616080139430505092733), SC_(28.997991602834847507259069947528006238399120687387) }, + { SC_(166), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(46.369806794579899634567726970785022554568736880013), SC_(26.476307037853065883773316924982760522542304747516) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(129.00720701104822137903935575669184563773650311133), SC_(140.4179747049256498670310941182983151630052304315) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(129.21574011335512495207237911150470471070212796756), SC_(140.2282850454724782611458306663436962985188329072) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(130.94079933048737663315673846828596091755958756951), SC_(138.6340258988920435593011595083869510766953058245) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(139.24531120192948183367593060054542658967304897567), SC_(130.28511001379967746322816463402115357597668365469) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(139.62309739842742704999825605103658883056349708538), SC_(129.87633060524473487138534605960705955573486092925) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(141.2436128566279469915746338986442275675188787977), SC_(128.09117587669867106131656107835923278599329695929) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(141.46264267155059989119174648257867712520874076656), SC_(127.84584561956520968516784282686627623378663027039) }, + { SC_(166), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(143.79275926705993344572344357297193472002266149644), SC_(125.17302871532754043961710175594992239655801557604) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(132.62817657560860470127723917173447022011402122719), SC_(143.52754032171499157136250446446004116231405132608) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(132.82837139373789246289187769660981281225443457574), SC_(143.34741142005838784704919023774646370847829129202) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(134.48317017161538481927020541722477144389437873273), SC_(141.83188955112182042389286891271987712802264654488) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(142.41331979688369398903061071345205067985663621245), SC_(133.85445992130809944634052960952931025979639616882) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(142.77244863720980263513074938337114515110113145613), SC_(133.46232942944628023947576164226859554656758126487) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(144.3110669028824732150262074167104678083977375201), SC_(131.74838822523012682829158278899038848751649070061) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(144.51878635562618726286827548256161530392894719302), SC_(131.51265935478332609733612584848817756024664700609) }, + { SC_(166), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(146.72474731454226090247579643629738419273676442648), SC_(128.94167027574993129538001198025981936906367792671) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(145.53707019057480655707518578948835089252275002145), SC_(154.10470798918816823280775451080418335474756271499) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(145.69859169245739606525151904410547688437797055885), SC_(153.96755894475658641638499699367848062043500494598) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(147.02852694914147783488521809655154882144159017426), SC_(152.80671514897015861799163451378631955192018461079) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(153.25350513025910125641169246679674436106383089039), SC_(146.52435087320730821023226811872323611853327828692) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(153.52859133060717227923878126548065897843608927827), SC_(146.20919983257910752509104910550622716298065072045) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(154.69913264998332394279543402859498303156196674342), SC_(144.8256845784993434375344657000559511659402719044) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(154.85611849153327842844710922986737130104003099131), SC_(144.6346540524523711448513169222899293177851049167) }, + { SC_(166), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(156.50652690825195375163221915207275884260724368196), SC_(142.54003600386456802166348177623266705595898002204) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(146.95515996041869353091137065611524514286096386595), SC_(155.20300060937613004060620562198955840444891094575) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(147.11131283975725910247025266816354729721811724535), SC_(155.07168950164541216368938354142468971444730421218) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(148.39625090305109068871066359407593048533555774228), SC_(153.95908245009520424497966375100560787809972520164) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(154.38754766872212188983401207823037002207656785202), SC_(147.90930335061941601171044390886333960987789650629) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(154.65120410813000541554276686429925975595085082243), SC_(147.60481477990897461353020610064924261125601927622) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(155.77175624437535425366815454959346398993528140617), SC_(146.26718268965240882133056604294499670171853562487) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(155.92185968522567250479638460964140087032410865771), SC_(146.08237385720712049453248440987537157568822077304) }, + { SC_(166), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(157.49699231129951442777710637230055535464484183198), SC_(144.05429569272145332460180742447706091793910944019) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(157.75304528035762381208853699667032737301474093451), SC_(162.81882590765961847350855404059746408387499854387) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(157.85515607592923469048809046876821290616001349651), SC_(162.74520920972856971633734143532033548046536055244) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(158.6881995359903949514095927114661651288902453154), SC_(162.10940204475966683814575982217766599478996797817) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(162.35669647176027748170333609419427081261435351347), SC_(158.37405395247993883660487162134502671236623160269) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(162.50738024828618700965733869325949029045947367824), SC_(158.17664485822295167562174500074993253841176738141) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(163.13386277712994236614854540614093107634752182334), SC_(157.30103118445213143609081518815099109090425015974) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(163.2159172438669384868837994776886416864226550342), SC_(157.17903032688767865785391814832225547999720053904) }, + { SC_(166), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(164.04516643912107651239826221923537717206274104321), SC_(155.82518345504587379475105858887658134116581066294) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(16.630085384586891122921950577607564518209157352179), SC_(26.636025508073967963036438832479929411646265010237) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(16.793431838461065091638576941457877419142930158672), SC_(26.450318391530995789712909443474269674016081471376) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(18.170849842258363683136437275603959079140203440751), SC_(24.917716541446471951033247008314276694763653414505) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(25.499479968274895925903407603177150186679233226914), SC_(17.641762253487237550187356591794630630974713344985) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(25.862654628024120627541220791900380823607202987051), SC_(17.315358024248090101068229336109288617567603728987) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(27.452879131154461311186462435552293524845476618144), SC_(15.920512718744036830631554172438109921268730269429) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(27.67194569060892981032590643057240623011767525665), SC_(15.732665182726350782769394720639120884069400201297) }, + { SC_(174), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(30.06650502306751443943828942702851446233993366378), SC_(13.745103939206292075017090023528561820509322563591) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(17.966543820244285168761079414676636711225901250151), SC_(28.252467256825567541013583291647090586068603913599) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(18.135049260303834921722236657760785914990714320961), SC_(28.062116342609402642288160931347354843751926224352) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(19.555045699051514394039733483290765029773591932542), SC_(26.490504413862228427176798464319633794241531422998) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(27.087222324874055740418021652985746350904026356876), SC_(19.009793755432447572584990895149008842750375383683) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(27.459640794895286154384811804956656903827252513459), SC_(18.673300327867764981466170386744971038854683406917) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(29.089541828924231411312149333829269080519483507739), SC_(17.234274838501216260085401776808145825794718597404) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(29.31397541054841260185225754793896184045913002473), SC_(17.040338808449044155845628483662229175535933043975) }, + { SC_(174), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(31.765729715154371500591319185328480572171210596184), SC_(14.986128814246495293842606941747731542630884661401) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(31.747838016716784907134432528304712558212121410056), SC_(44.227944771888194825144697161550340544574369625399) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(31.957317637800345859515106193688775856581323010658), SC_(44.001774259767988600589196929093905537749405292521) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(33.714819363905521609474352742975147314885638761739), SC_(42.128401467559344580208520301359521842272184108196) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(42.84097818906319480068459585169733724434035396392), SC_(33.04158104443330035339614946331439931238175610804) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(43.284901929810143060713868547657527209960455260523), SC_(32.625113296848073423779955982803311090927136944577) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(45.220730424216647648693977413589411741491944157457), SC_(30.83511295783610956486883271141568884999422417034) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(45.486420122605335100515560084209198990454532163482), SC_(30.592715397971676634680299034710356546137932802327) }, + { SC_(174), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(48.375862645694255733700964785039165186027176307681), SC_(28.006689415066868088553355980157619415096380851604) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(135.38890241210559563184959370511073141872378925692), SC_(147.0718504422228850005997665658219563315644407245) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(135.60219998904780064702761039663668203331378954178), SC_(146.87739242576211523908499111211677328396547956159) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(137.36691280959160413559517529432453491657334804886), SC_(145.24345696413794523715361352790681935688258984742) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(145.86987323194821192683189966206797697157614255695), SC_(136.69609941080434651942380503610132732241532626744) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(146.25706096592990551219344186465496140946994925397), SC_(136.27792377180190908617170610584045533303932138635) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(147.91836866831922816366084008941301360444015468311), SC_(134.45201198315479262026288765910838306542980157755) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(148.1429729644461600551202895221256850981062820034), SC_(134.20111396413409282475687216039398099396344304764) }, + { SC_(174), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(150.53339171275292375293063572638838743696824886683), SC_(131.46811066156084124523664820276883588208093154504) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(139.17820619523557475968496851118072092921754375034), SC_(150.33763859071138611498470063248928065440761199578) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(139.38295371827289805550659416365647029605850274302), SC_(150.15295249806070869141915315997068365858212488391) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(141.07564214458065778335534384507240407121049769901), SC_(148.59951477996985144689232662077844334002737950603) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(149.19540397338312123904068652335113869127617382201), SC_(140.43248087733430418774047756901610144644412233845) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(149.56351717575566821337085193312204630548300917305), SC_(140.03137214474417393476628863401048932126993882076) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(151.14112185530190410198511203548235156288378741087), SC_(138.27848519748547275036795602156169547138790836558) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(151.35416965380214867099605298703133458257844599197), SC_(138.03743576111731164442746753318699275668136255488) }, + { SC_(174), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(153.61778361869456865893958213271146800962303653969), SC_(135.40892807158012420877303935132573291090752651223) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(152.68094285739213056166008149975134867662539082553), SC_(161.45348478026549757146556801923679499239698355776) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(152.84605256879867753996619587584742077584060867063), SC_(161.31273917941911868776523093764865460337116590171) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(154.20584279919699905369851960480905623911472652655), SC_(160.12199222597726188594615753832107764541022494943) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(160.58018176288518512795899077227999151371034160926), SC_(153.69028162899111115436870946055289368833090886125) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(160.86235353463054577967401877259632114543033814289), SC_(153.36805626066039221089197077477025657043861337973) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(162.06366704839458279449320176938271980464060622958), SC_(151.95384469454449010086535015459883676711016067832) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(162.22486245089691493533886503244290204176988035578), SC_(151.75861929321033226830872269742981891699148070485) }, + { SC_(174), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(163.92090187144752276295197651447901549789625754851), SC_(149.61862903535704793060419918729867542762736154823) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(154.16348050353633326276191699341757843118791393661), SC_(162.60866913886633326670536586025108228653507208925) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(154.32308948323334889397590997181912413795245137133), SC_(162.47389284038981595003893068252364844388721099218) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(155.63678186340716314681793119508647064846455173002), SC_(161.33247912449068816296481263807682471341792298124) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(161.77192509834208986830232716380034182770332940046), SC_(155.13886923840990455190899423811038950982951130931) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(162.04240726326897269503467861442751334896084293375), SC_(154.8275671542890381782662617219645023942027904776) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(163.19260847676049465171388143937765824975010832402), SC_(153.46036867648449593334202194384907579348287058534) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(163.34676866952292124474121806349827378441185732832), SC_(153.27151913422131882828995594468092992295745740099) }, + { SC_(174), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(164.96589424172364661776042235336773557485429381716), SC_(151.19973190414667901036433016779710543290653219033) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(165.44273802071368676886246253636451040777756854428), SC_(170.63087352072307225875793596896190928660648614969) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(165.54699415493413402787816683296220919155730765042), SC_(170.55508988446952069398496297555199487329754760358) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(166.39786831601900240998308010937415796626550674918), SC_(169.90133462271773762512407312222876036655797182992) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(170.15545853982742078810499731394323640999728693652), SC_(166.07692687181743258960632247791434556772299695211) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(170.31039455704450657539648516917516791313861093353), SC_(165.87529275262642585007975099058278879314430840872) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(170.95543210598052194607939364837135806908442896555), SC_(164.98132317626948012012032161787655836131307029407) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(171.04003895536038071176020216192653610841250334205), SC_(164.8568107006794802544986238921394461388145170229) }, + { SC_(174), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(171.89729573360168516885036545341273269598403274596), SC_(163.47574409522903401186530988442444244948490869974) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(17.531947936479945686311006376470981911456604808202), SC_(27.765964212244578454910971052697504569143678430791) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(17.699292918455615732522701268972042194128163478101), SC_(27.576264117709964686936800245819951712787295829006) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(19.109972252542561262033790758621656450348653925074), SC_(26.01043323367203782340543483109946004077864813777) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(26.604869673777457572054690762090245373931881916146), SC_(18.56820190067482250375651658295547416610487581835) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(26.975918195732704609902325464900925649419919397513), SC_(18.233916266628436735575817353590624704891757292688) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(28.600300679738085824725976098488414550716474556778), SC_(16.804862619314673714886054863580566488674681480708) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(28.824034114413504494481014290316831224419725095736), SC_(16.61233853911649922084111025046696686309133459836) }, + { SC_(182), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(31.269052010266191919638746359361208758143570422323), SC_(14.574150652776932179809408889604486602176697837208) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(18.93316448290132121994067404613374787372423392856), SC_(29.453489748828425019769228919269319168742967889207) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(19.105778657321147019524158527977444014076987226637), SC_(29.259035261956559971819996946429584795331083739483) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(20.559955485576092466176598855338206860798578807421), SC_(27.65327301587099401981144304721394054006287655241) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(28.263015485374154425075978859880144600730561223897), SC_(20.001669897197003609010398893878116875964307252617) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(28.643526126779100230645988284699130253836330957402), SC_(19.657077274221290314217961374008084142714268571093) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(30.308531072021507174278065968675446273345606788123), SC_(18.182901050302782936032049703976493846265986575654) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(30.537760610222960882816927778001229472077263528021), SC_(17.984160084683656258967758125968662449495067956078) }, + { SC_(182), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(33.041366325284998388520798456019298728927077311434), SC_(15.877942913141048070734540883972397774119689225645) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(33.374105992542268930509315598970957629176141675216), SC_(46.138226736343407093873235551895499237138662986177) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(33.588559412070109828045689303672449492397191938745), SC_(45.90708521861951526867044089524482730740581062763) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(35.387453213187700634047492958764414271869801213615), SC_(43.992336731664407724511122577960950273761478110297) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(44.720694972361650962620379233715660723788215725647), SC_(34.698428401274693037430365170486146775869264306501) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(45.17442302223162743704221895533718878215588796546), SC_(34.272152515976586229546640578597942253321532287099) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(47.152774784225454556684008922966632152191664339053), SC_(32.439603614594136126074396219508272770839361545224) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(47.424272977062733026629751143895870241140565189108), SC_(32.191392742129978147350875793109324522820932756262) }, + { SC_(182), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(50.376494297748644153459556557893935665091121258751), SC_(29.542505322869550158869869269269559011195536227731) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(141.77369702827492297164632692214968170924868690348), SC_(153.72262771766762024060797645870003186907947370279) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(141.99165033455911283699993498614423002629774039668), SC_(153.52351042615542720784900708878453730441896113087) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(143.79511283280314142429133242532180871632720389366), SC_(151.85080453208572944710854036002363153144481568064) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(152.49200663370082541213993457375007128886950244824), SC_(143.10951989260964435573176721642440993659893338795) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(152.88838126189354328771902693664270536179608139588), SC_(142.68216220946493771756884773458109250966786342056) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(154.58954771083762164367947749700215074158078522074), SC_(140.81642380275876958234731100187882007285744836227) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(154.81959859634846061787693184338588523426780719407), SC_(140.5600853263975302259232118709689493092894266696) }, + { SC_(182), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(157.26892945427488378176463295111084732994249048734), SC_(137.76827544323004394231565849319450873705805644771) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(145.73119808490140826173633443989531824230557681816), SC_(157.14477550234785535927186381030566622015153420777) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(145.94039436536157953659561367850056973189187591552), SC_(156.95563655448568346422428979553742509980461668409) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(147.67010847959374534584725518348584393559304181322), SC_(155.36514919926854447033372250101965664994491123028) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(155.97516737153016605909957185919836398897935652734), SC_(147.01282548626975408283021709958623713436638974406) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(156.35205969418208055497816752592470900945624040421), SC_(146.60294322908089291369813333049616428706948897789) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(157.96775785651759192058371260956750640437114633035), SC_(144.81199994360290047831119381348749323851266044372) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(158.18601161755381924333279509365860020883421476471), SC_(144.56575164515219606323013213909278387779250955431) }, + { SC_(182), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(160.50594735474549135119110768976011712937496292326), SC_(141.88104470086455474110364061565774970640637690125) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(159.82715476288571868477496831944614077256957411775), SC_(168.79992463270461608609249848545812664801842631018) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(159.99577057489197125865574658573498989899965277884), SC_(168.65566529540172164190031605076114415811417324354) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(161.38473377940867819812512504420154136648099801438), SC_(167.43570123432817008901795793272018633093800718043) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(167.90502927426609827146251116787848949737920566583), SC_(160.85804736380628541058763611408533046792803518287) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(168.19412407511900693215061705740180018683929068731), SC_(160.52890926622038895685527799628515735075727852434) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(169.42550067935955231665410909596974576162253341162), SC_(159.08470400767947523226055182129300717363588043501) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(169.59080815229801252390096445425947190998970245547), SC_(158.88537995027260866971898643085693139677308192603) }, + { SC_(182), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(171.33141131748400208882425889613059985005775297921), SC_(156.70106184587052489034072752890683886952144350208) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(161.37405507097154294750468584431379674049438604175), SC_(170.01208629614148563560399650411043036135380833597) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(161.53704103184829200359465563560696457946571960776), SC_(169.87392469737355236389616452168567137042117275288) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(162.87883064753156797907380189629382339958917969443), SC_(168.70436577552381333308980437837055317744321482419) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(169.15454086974119366471270776523791996960145163243), SC_(162.37020328773798853868880745832597809148196205689) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(169.43169204686889496386293982052820734137407704868), SC_(162.05224338399064247803814760506269968523308438178) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(170.61085824831404494689858331391281172846457794809), SC_(160.6561555679604216810653180438133474816549034962) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(170.76898107611593843519722586069976738520064813659), SC_(160.46335804743188743522443750235125050960044630628) }, + { SC_(182), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(172.43106774281435451404789848772600368293538174334), SC_(158.34886849728211839100610233562162891631644147279) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(173.13384277960575484367110309094829749066664763194), SC_(178.44152677534984757224253267877467573847396276997) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(173.24019479116596260076490237515851906309010041749), SC_(178.36362717602176303760714965677644473052771286432) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(174.10848994725716822141891491031704666286722543391), SC_(177.69234128819508439275175261608723371595040110568) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(177.95313670561872607972977888034289563747497277845), SC_(173.78090851720079435265502861864315165116011692231) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(178.11222609947689904315450957995779692020590337629), SC_(173.57514644887766672308599278581186174945095205679) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(178.77538112632532783930522431179396951967312692685), SC_(172.66324438622814959196517129401554383606307597773) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(178.86247916857828730222586362494431394013049586469), SC_(172.536278454528364738173049149446956672694996604) }, + { SC_(182), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(179.74704703467261995968167776506816209608662998539), SC_(171.12862630843595903535560113760182853816619375608) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(18.436296061781527310579523443856549834112992557371), SC_(28.893416144568906163840177851767664934710392538595) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(18.607551848486962887595158742872924637163080685588), SC_(28.699810337309075355078399274117735435016293692494) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(20.05076469177813369222893711923597270126489411777), SC_(27.101475598835186528568739294851688493344241488876) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(27.708308681708907387316464620021892170636857022053), SC_(19.496588739471796882326076554979361305326801009524) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(28.087059234516159300252198590915502767618241550098), SC_(19.154594148311887683540243419772501101260558765235) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(29.74485301262129322811709469497077800370747537314), SC_(17.692083011648465483902066675831863918318238279397) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(29.973151127121419586813424029894984709497489131701), SC_(17.494985389682336325824846850723694648118363213297) }, + { SC_(190), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(32.467519370176190170315964190054362162821004424932), SC_(15.407293318953194912770553639322739453418140006652) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(19.90233920629008185569957632590428546643677606566), SC_(30.651957101185571378580412789281000622159688286459) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(20.07897202755269449380403779223374229315632893376), SC_(30.453488702480085297538120086348554526645100847872) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(21.566581641742210470239824917440804374198252127865), SC_(28.814321277719219804468269555976156241713603573322) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(29.436804318356865886690933950415871369394566177401), SC_(20.995547136117881675025181435834045455025169375557) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(29.825230570245213810033096818153337712394393045045), SC_(20.643032453861564924954727292100625552117395079677) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(31.524572250661608956989387208791751101467771504005), SC_(19.134476549834168529058930630621839012870369837996) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(31.758492754429074989249706165810825101560375328712), SC_(18.931036389674743989708474730373603612739854714649) }, + { SC_(190), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(34.312811496845506580525890528844524397789897128325), SC_(16.773963619930701835081901384466643197091875514966) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(35.003465275347463797307859741831619184289860017443), SC_(48.045416913916987707477926334766358896522099158464) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(35.222783801168269566147829390346011828039049540104), SC_(47.809412850104870502578141781841586913612866355221) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(37.062166587823679378600122248902965372848945542277), SC_(45.854190400437091902273896851962418204343156288286) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(46.597986420015180293075236922960983249618295652851), SC_(36.357699434388851955033114372215220579081422694997) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(47.061305111637762074377983141397903565269114459513), SC_(35.921829395860089372548770300866830817026191453204) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(49.081252174375847466571466378993568838224365420936), SC_(34.047662008466007591965702721781936105122976523721) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(49.358431926645590789641019632818086139561077383404), SC_(33.793765162303110136710885726637272221215374933183) }, + { SC_(190), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(52.372056779927097977013239076860222620023271862253), SC_(31.083398558488133316817852271416012518989634215536) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(148.1613883120325286729720577603601930978469339151), SC_(160.3705089730347621226641125672114871748266042249) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(148.38389572270640024718722474846181143803387534231), SC_(160.16683432615065789175624792461200568041160538019) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(150.22526309214907113849670542886892822374414262856), SC_(158.45620452079313752737125856066386176562388634274) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(159.11186991873718287138838274486814431524488288909), SC_(149.52521263048173557323639160397928305208062044512) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(159.51723086241806822611587404942250571241369316394), SC_(149.08887308147859707399697939742547421515968538083) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(161.25738387573671567021296284817690287766902303957), SC_(147.18417756447412921565318512064741819177822632248) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(161.49276188136430586898075066394266906100823889638), SC_(146.92251758648068781178306255311645301998424356815) }, + { SC_(190), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(163.99970680960334984914200542062583186218025059468), SC_(144.07319023342505795978707574444801931690936098352) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(152.28695858963604649828892095741199479434387797985), SC_(163.94914458236368421821114477763124479991386615174) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(152.50050648803291956261931865487154784993993184887), SC_(163.75565025880370218265361244011550308861765315649) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(154.26643884743974172864654110476006570395889265052), SC_(162.12892268281995691957383563350703729826592973122) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(162.75276147652235017498097762986125364348443273787), SC_(153.59534189074900450664839812681738292809315478647) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(163.13824113410559427668965206023457185959336607243), SC_(153.17687743350519494748279078272640280930866035005) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(164.79119854984090786560144646435288130747468030528), SC_(151.34870895202077584075804086754656008516546948604) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(165.01454395949805585405306796424131284453692608246), SC_(151.09737551120859792755923003323152697218659311457) }, + { SC_(190), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(167.38955850907513620440962259327592094764934547108), SC_(148.35770190099554233977533845521040617279658475443) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(166.97555267241552362047532253920449640696376775213), SC_(176.14418043978230809281523090094258690721943545972) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(167.14759786273235368981985139764847595689423937608), SC_(175.99648471256244950676586525838184929438139768614) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(168.56509671627899694321253105980325685443681365318), SC_(174.7479444315833488532873547629775308634589339169) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(175.22816707369492083525539396094402788023100604167), SC_(168.02752789592155902521149036612750978270463525599) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(175.52403306009119626920079771030693118893926781333), SC_(167.69162808230476546027799122186149632925750165642) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(176.78481055023549609868629292118236032582303973867), SC_(166.21808564552557866231669086643521675353139333556) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(176.95413908599582751994792714752359021138476693063), SC_(166.01475282601866571980717482809033553951515194422) }, + { SC_(190), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(178.73831049532571989036396451989316994846634994576), SC_(163.78708237979528324069246359444144671894881235317) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(168.58673595042033994507422298584680001578790869161), SC_(177.4133993968974312787674021168164659288953519731) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(168.75302496535511405983586476648030562972987626096), SC_(177.27192710255056372480924030961509805526141003049) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(170.1222977876457420051221555163175699104496797722), SC_(176.07484085683687925381131362092992972177793929294) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(176.53550997908254895034971848574916465227438075229), SC_(169.60318964179395080376717970585113901741360346785) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(176.81918377778164605773765187870285046435976045175), SC_(169.27871741133736188499927994467389405350279264984) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(178.02667617724398934789994379921622116573611329931), SC_(167.85437286514698995088542327117671776502631836395) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(178.18867379273184543312603705300664332447450781881), SC_(167.65771399963666680869779243101786213507134318092) }, + { SC_(190), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(179.89275928843532635565204363137572236066007206791), SC_(165.50146246577198561530696529813984463719278040532) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(180.82626627116482539598224128166248568797351440021), SC_(186.25087608247759172273975412527002844490219625801) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(180.93466795868491637128049759222612730029167893702), SC_(186.17090809946156840646841549832872662249832073336) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(181.82000132890499181062890584653230934379388219914), SC_(185.48248149562441428040989615128864176407338478377) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(185.7498008088529565509730776758412533223157454911), SC_(181.4859255599879402076629026643004514597415869146) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(185.91295123950621862856838067896036893399516955656), SC_(181.27612623887545010638732660420366707068488666455) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(186.59381540978530057173982322787894949960224257601), SC_(180.34668718790423683274215713913260626751991201254) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(186.68334759552856218103972243465816167362181070498), SC_(180.21732211479331186051514945861516570211313117257) }, + { SC_(190), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(187.59457860671264035133583266119903046910685225399), SC_(178.78367647092988617778484441256188436661469909422) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(19.342974027158486932473431746522856929871710298385), SC_(30.01853720415440482436955577429322789164066629107) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(19.518058429672246658567025607599480912354646155903), SC_(29.821107469356046262811479559190126447030386073221) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(20.993122754042093907926719362319205810230863022454), SC_(28.190948573700989476445176959486147395165882319152) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(28.809919251139046420075242492657666881425265623104), SC_(20.42680094910156695888706397275706007114420827814) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(29.196210780186694926978614713977266614189104474439), SC_(20.077258999355331891804484450944614495474494097677) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(30.886716065694442866665900913462050128822200770423), SC_(18.581993830267420718879229370141028455384626109883) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(31.119483093504960332802087183351578434345198394208), SC_(18.380419143229209773210313065860110416205158573383) }, + { SC_(198), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(33.6621633627640806304767680168243201610121133358), SC_(16.244273717023501328724252655101706696607262709023) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(20.873907987651403277327272993912303573576159292108), SC_(31.848029465102922482927502747559189284968428746056) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(21.054475048460918460317805200483193886866939886457), SC_(31.645631185893996464534804676202477640908612227471) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(22.574816862753450535394807094204021169732983625802), SC_(29.973756993980005433219614643280003844866616116931) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(30.608714415784902460367345678822686550732379444905), SC_(21.991300283289165012898945693696602503477294091823) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(31.004890788984229419450800532466950248874222934327), SC_(21.631029538397776421842934497783193194192760292905) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(32.737850206566602442538247100138032199364587804663), SC_(20.088816368660448732607635277353171558984140708862) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(32.976363288156684182042422633123150377648035490801), SC_(19.880776061636489452942523824188535522482879820488) }, + { SC_(198), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(35.580328452649676026463691843367186354509414733371), SC_(17.673925888106871875701467279232803144845594274524) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(36.635722378824839324259747322039001297971732522718), SC_(49.94970885463168918958398922325708095898207926175) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(36.859804148965987757350200459885029596751396595716), SC_(49.708943901958049260926789029187615727505191828762) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(38.73882948913239468866549605297511813152889798076), SC_(47.714092726088035166966948544131716428518543595769) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(48.473004308903722439974001174243448815662663551708), SC_(38.019242571624382435026547447881697186755727586036) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(48.945713361337111030316849246324617296938389435606), SC_(37.573978940110835236991962659990125134055218113951) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(51.006385967655982988985964160962564396002157438002), SC_(35.659064680184657817531089561771833808014872754113) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(51.289128317002886165116392084610491223495611629582), SC_(35.399601177844205354768063943089943809839824315797) }, + { SC_(198), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(54.362868007755877679664114378678344729556978375222), SC_(32.629050221589082388127147299927443950618890734889) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(154.55179486079551400908974907168775826234197465455), SC_(167.01567552392070956222765808940809019994592809549) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(154.77876112672710117516049512600663468916442090633), SC_(166.80753903026991667481953734987048827592938616438) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(156.65724150492076708350737201721298526395280666615), SC_(165.05977868685570963880484285226236801091829085667) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(165.72960507459808559363556374474621331783281428432), SC_(155.94303537203302039038459253858514519744042492687) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(166.1437643475072450213850589977706405097494459633), SC_(155.49790159057507093379090279421715326600188839423) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(167.92208662510538605295123531016085392863105576667), SC_(153.55506390929983022173923443501958373918045961089) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(168.16267981804798359388072629530735668808033811404), SC_(153.28819391079877000530366101763415840680211693349) }, + { SC_(198), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(170.72602305167669158015910296169100914823218665514), SC_(150.38255701073586332068266010439148117028178018157) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(158.84531427666256996529468940790405779783170794294), SC_(170.75091915739496235017282742674793916371301204571) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(159.06312274949735363002228892956551356984637309286), SC_(170.55316080106777874310772013859230993787618429305) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(160.8645165246363626491313370689954259278090693715), SC_(168.89095157333355931870697618724042185451258904013) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(169.52832198159022913533093139395802626206166211806), SC_(160.17989408693920543128651318357339499464532794123) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(169.92220923595183344555444422166281142357641783845), SC_(159.75302676159423635862617153821637196311584446055) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(171.61164421300958690613714659797237016654433863798), SC_(157.88841205816680346274497523683460835337964971394) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(171.83997417674223656516147625252599536264993557659), SC_(157.63210004687400987993156006125300607964013211823) }, + { SC_(198), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(174.26890349964832540142374008818339483038217267433), SC_(154.83861470119032558506455797903091089573940433914) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(174.12599938256832194670600237012627852592760455259), SC_(183.48638912686766776434832568008483389014312105826) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(174.30140205146075852828586109314856069573190108097), SC_(183.3353294604459270939051995723159993949969635633) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(175.74683923154893972970123157593558813936086903282), SC_(182.05881343182666751361099215623688066407292787809) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(182.54970212776968039928403459188542445202050881041), SC_(175.19861561625049174899061898558303212767168292138) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(182.85219703052325676898900273656490913160173348563), SC_(174.85609562154234920924457278948046066556288274324) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(184.14175514818880931803902531903448796761102725543), SC_(173.35383124442109455659528289543932153499312709564) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(184.31501953353370807942897331749426088039327798332), SC_(173.14657389512751016541954992336084145151889276259) }, + { SC_(198), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(186.14182773377281892266317500695832597845425492734), SC_(170.87646499666006831317729474448537786906334806723) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(175.80139088876971640454458767230025866849737594527), SC_(184.81274037163795522594824960978433149014902742764) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(175.97091367887202611270560688562288369058307379299), SC_(184.66802725901383680203785406933598927970888746697) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(177.36709422830142837432736422365471553856012888179), SC_(183.44399257813184360915829323623369280881567334436) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(183.91493544252435967529487260489039435537825625173), SC_(176.83772456903188105314181670627993054489495191085) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(184.20499470938435293912506551369096236830629203564), SC_(176.50687637083981326014273233967785743218256746634) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(185.44021502706079791875538530330822920726128423834), SC_(175.05486791719180519374486105656628403636269456709) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(185.60600518546287820961807587569129998395593867928), SC_(174.8544288816673554299512299374901148074915954718) }, + { SC_(198), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(187.35118933081629895752794483350664191404285970376), SC_(172.65729627905434626520533992354239835019669345568) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(188.51992504244490340080005528655826495419566257943), SC_(194.05900258903283005099803149062650237406013488164) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(188.6303331220830676580310543497658251423341666146), SC_(193.97701076046074516032975847123326724221760969929) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(189.53234603021285039139496576514929954318973421181), SC_(193.27180865521372522598112398729681330254903875139) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(193.5455135676301538321769773838846777062911229731), SC_(189.19191241142306786263661185511699911534583298413) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(193.71263854134416872645838036650533552054987276184), SC_(188.97816082266079820649321194472033610771495252754) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(194.41082967521906462956969084961627525090833363564), SC_(188.03155529633252210917254869748952300151807587156) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(194.50274265981510427273894463739203909382968250275), SC_(187.89984195464530485392340805060940086699896060402) }, + { SC_(198), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(195.44003226368224219560317142136588685554998859647), SC_(186.4407571647469219519801521530859281798093586033) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(20.251841708195420720323760739457621920949366565161), SC_(31.141467652301973907517725437297093821976912463803) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(20.430677513367510366086458808684337785609024930391), SC_(30.940290845489304392384594741871198901786247845292) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(21.936952473911317759599153651349418764088924822163), SC_(29.278946570596372572955132269631807456988720583039) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(29.909811379897521429358684336091130290594923275773), SC_(21.35872889993246488712989992070181168891240019865) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(30.303492526178536444904940784391582521615224330747), SC_(21.001791432994304695362478961859197175582301008566) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(32.026051720961699121027340984614199113457148489815), SC_(19.474433079823571135647608013640752098632021506149) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(32.263197677712535562820350195717072058716979143137), SC_(19.268471940303398440530664492910595537490121345569) }, + { SC_(206), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(34.853214499712072016490770094230796015908332051299), SC_(17.084859675924401540916036763329531434102347995325) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(21.847726859629994238089786893499406134823761741646), SC_(33.041850930624025842535593558608871159898254682041) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(22.032148859845508432969000390420892699087244168859), SC_(32.835601738093441761047261757092800118543251664037) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(23.584564574970978794509391944398898763920430674589), SC_(31.131677150713404841469549431606925761858638813098) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(31.778858776848783333489726672402304277622904587009), SC_(22.988816678232830277321729576147916333944178032187) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(32.182629743310094596132507819028568051992211944937), SC_(22.620945848692134355446276175134308168121479935629) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(33.948531238901754807266706334480216118368311194164), SC_(21.0457540972546015026397054921509217226594176993) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(34.19154444967564540788744663150729827745269105159), SC_(20.833206675706616008047285447006199287101249227127) }, + { SC_(206), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(36.844153972880140130453574561225789815865206625277), SC_(18.577591394433303703765991943674961995227038983586) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(38.270703194383361517478530256309730399620491553468), SC_(51.851276720057441272520319422801271523748857909429) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(38.499452490246258409846582804201209194198992800193), SC_(51.605846415980201205788394197321703436961821665769) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(40.41732492148896418616423906361847507808928480781), SC_(49.572160917996366912830022433416999297475388002694) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(50.345885216515379956062975530380324826032971926131), SC_(39.68292140788005403164530997850380200818182106274) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(50.827796393421846152635552586310609652507583058246), SC_(39.228452666992746477673535229671813856415300497042) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(52.928377154322410676379639500218318709130381378386), SC_(37.273610565593290408935306157099397266609266226615) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(53.21657031001507918717159561142731320570673825101), SC_(37.008692511783125947898866920743550661131647171404) }, + { SC_(206), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(56.349213997294072600231850382599820481539780930253), SC_(34.179173463614422501383941710896186112564143631091) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(160.94475344991623381776651278517572463662076075189), SC_(173.65829052278883411089297198473671883284747243571) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(161.1760890578884061942882788069986772532009107712), SC_(173.44578192521071477875207801977361646482490496438) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(163.09093821812428636126543441129002208391598356884), SC_(171.66163660842081450277777713295539978472522372773) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(172.34533987986791678718774687119226890100508458381), SC_(162.36286011580501901408924791591105001718710753867) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(172.76812082320704178237887758009228309418560786813), SC_(161.90910844817194473329400115323380006686201652921) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(174.58384442093617361072480309111940938274608928082), SC_(159.92889446389467387910232780590226333120951285214) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(174.82954764406288283273681172559387821831630517281), SC_(159.65691920266945721328381175613082019560638785996) }, + { SC_(206), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(177.44814734610283093929917089062770660714375181941), SC_(156.69610766775371566738606006236197596281252506355) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(165.40610909713538728246297681782391071465705567897), SC_(177.55025518833416256353213154429794434175919318554) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(165.62809258494926449271044682583128573807033687275), SC_(177.34831862374357028350299161588085919773015814441) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(167.46423648419104188035777491689984516305151381582), SC_(175.65134057698183291619500924250503361398075362755) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(176.30197100043386594483943641769109638037038566495), SC_(166.76635969988270336880107060853537140818451938023) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(176.70409694973774055554047056590260876873413400751), SC_(166.33125804838845358229279488859047271390046861163) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(178.42927503898412114572159650296299321368113922819), SC_(164.43092916675078871998711838195037990553852155791) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(178.66248895200305675859574602324700456478973595731), SC_(164.16973872760264058773496138679088300149637470891) }, + { SC_(206), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(181.14423990923147341876372377130710504182588150387), SC_(161.32352674255657071169240196803313803210207085352) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(181.27837146722263928461999072330310649392948984854), SC_(190.8266738914945100021307767779253281429869831161) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(181.45706405278310198215387967081583618598833891446), SC_(190.67231833648095469573261179561123203678547647573) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(182.92987822403260991030637064375984069399471838877), SC_(189.36839069366406323041484906495485479883035360539) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(189.8697307019271111906608789961879905392794722574), SC_(182.37121372061945566194158975783198724534184341684) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(190.17872086060439847746565081638488407744904769251), SC_(182.02220655288877281051160233055162790669293576745) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(191.49647704314669097086664432165686292169363356145), SC_(180.49179834667541441615036090680973610038463579386) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(191.67359726892557600568418800857288908961188993376), SC_(180.2806956083239202463901753355523264273952766459) }, + { SC_(206), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(193.54216825633241342583637003073385015846001310725), SC_(177.96900675184739194298596553708038177822617950743) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(183.01790091785300223664217243026030826749984957406), SC_(192.21022792364225165289976682114859106933118294644) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(183.19059238515529342907210039309173078950797077534), SC_(192.06233962175761762442321888303795289597572227629) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(184.61313986141623829707905287926306589273882769765), SC_(190.81190033659776960330328627642137638745079204585) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(191.29290997234942188954837038777447833432560738774), SC_(184.07371475766980593460751673829269153750836496391) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(191.58922585900585266172091289782105098961026723479), SC_(183.73661873377596180671158971974835158149991172514) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(192.85161221602488490310892082493780649060085086064), SC_(182.25750341067665243464070091340611578036262028993) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(193.02111770350110172753890340460396815076356493668), SC_(182.05336047154478674430541339163188244107298658575) }, + { SC_(206), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(194.80655599138416607090786997661750569819771437938), SC_(179.81617429423748876293856820092078411716784070019) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(196.21474408169899481824031507204467754421988742367), SC_(201.86597943926896950432969198677811617458017504025) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(196.32711789301964964447097170211781478741374368466), SC_(201.78200556799246252571137677498037571502157211452) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(197.24547334356955819817442899044336209459209313923), SC_(201.06037095184991861900975038179886961877017395415) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(201.34033154557400218217685481891586753299188613004), SC_(196.89881012551786094227415493887195514414588407336) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(201.51134982984021674937774239503122803835256397578), SC_(196.68118611734334341451313000590110917904087162119) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(202.22650926749720787234898407602125397263107971752), SC_(195.71776216335552573509230943947840878406499090193) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(202.32075303485910378036418896320280375156824080936), SC_(195.58374833211862847782652069568636188550861099113) }, + { SC_(206), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(203.28353559504967870996823283034846986825451617518), SC_(194.09974488322564080707852326205473484714216083982) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(21.162772483801590939634327062225761138047886761269), SC_(32.262334224076235388729137432394297584198538833092) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(21.345286971483899596111911802498515554202957833984), SC_(32.05748274712800795638823706835317996945702084137) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(22.882168921365392980900676956928006340321047134935), SC_(30.365554898463236972054667684997231005032499762766) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(31.008084460010103684476025149187057042437196083442), SC_(22.292273511508589243603997434711709276401811430474) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(31.409012624962784662627644226518243995238206641557), SC_(21.928083555724738961164937613572927901015368275005) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(33.163006244923160043187492604474114985825097433932), SC_(20.369254394404405068290756686702494309810709163351) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(33.404446369198324532489265886403533294332608112834), SC_(20.158992122204350651189744610446328768645098783305) }, + { SC_(214), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(36.040881026395751411345039997508300229596730541803), SC_(17.928841536607540467535260316965637897355830516943) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(22.823665727246410556657808450553935850320027862843), SC_(34.233551694968751740094247645614473546469180432654) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(23.011867978638173850702635805689299716621815872972), SC_(34.023525981084251718918941768114658635265537263819) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(24.595737491524441110950227265255026131981152482465), SC_(32.288169384544267112599296172326433384202910043362) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(32.947339507814114666022661911423365583166007721542), SC_(23.987994501393103884241980897364297533207865385969) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(33.358558539951323667167434455232444061892391157883), SC_(23.6126705155565846945314986398937700879790793061) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(35.156765608217871268500983534303005099321294371656), SC_(22.005139378618196077522283553201152115096579573302) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(35.404191864371638959982954355743248738298649148893), SC_(21.788172445112823896320202794833836755137898494671) }, + { SC_(214), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(38.104501970337270739994269302341027258797016504087), SC_(19.484744911793079189584238326898891727203007040646) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(39.908250378572563369854160853705385890517146088533), SC_(53.750277898046865485103011228045920327972589623692) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(40.141577031100097586978980333225902127568922263595), SC_(53.500272250595017991878901533622672956260401082599) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(42.0975471414295548954958677744434556766833051154), SC_(51.428500901110090050589579484523592483883485005672) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(52.216752570208216912434709577419342128530699960915), SC_(41.348612661985652418452829480248415352352575078075) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(52.70768851908606377707046116572148179328495052415), SC_(40.885116384183585653492232169570389126544253625779) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(54.847407361283995948366943746727880447146461316974), SC_(38.891117974135438194177233114818313705491411108554) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(55.14094601150247400697589993484735665499587617425), SC_(38.62085095959215785863715417869817072375420704544) }, + { SC_(214), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(58.331353173717457866503064018041520000187602275046), SC_(35.733509150862200575503530167729603411530270888988) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(167.34011658039491928646495096671923511580427823297), SC_(180.29850140825448071605570628860670621868878974237) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(167.57573719964400020135739617130942957906233041911), SC_(180.08170524169071604788329562526083277544671606847) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(169.52625395905171120249911448126010309116456309496), SC_(178.26187732492418490762362126334129744311938242681) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(178.95918981825907003902558371045737209253472474435), SC_(168.78457118918805709989665631266976131830819325216) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(179.39042600676166617454866139155938494061104051992), SC_(168.32236778254751478443008406142977008993626322296) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(181.24282755935193322312853276284307997045565522627), SC_(166.30549900875863624870943679018853016663979652376) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(181.49354177379977018697295890403427836007147276447), SC_(166.02851716887605093525127762717275809101348742694) }, + { SC_(214), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(184.16632282876844188484729219714746180615915804129), SC_(163.01359996937959110647838619736313559069863281295) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(171.96920204038152121948117684728834392398183564629), SC_(184.34729361237812049894010121584006615282395361836) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(172.19527993848955461361272224786544098196342156065), SC_(184.14125967993385906840589793722506951725434103921) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(174.06550381761056661755512862755830915396840307688), SC_(182.41018433003964651089353674826655420127006704443) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(183.0738188964916743666227709602094034230327587355), SC_(173.35462814480632107687884608954140246779110961333) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(183.4840244281756621909574339268135576775616317557), SC_(172.91145095937959419726702769005977864601883152016) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(185.24425384727550029999727789945951204601800947261), SC_(170.97609754294822218275204695644340334467000470885) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(185.4822569642000188169988604629282276480015888045), SC_(170.71012301067829495180466242757854204482176971863) }, + { SC_(214), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(188.01580039352860113027294492132434638278858817591), SC_(167.81220641139037720249957261238702341320968650437) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(188.4325574153516192424059904638152493280210755505), SC_(198.16514605515319099091399546135565909705098618028) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(188.61447627433107925901280232325584165881967634559), SC_(198.00755869023522753004209537534177502822680027585) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(190.11413861540468675410497759596508678146789254736), SC_(196.67675075118672718153277228384936039633538764468) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(197.18833980079893427505526347558781322962473255645), SC_(189.54523474929987201135413021443974587645237503422) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(197.50369932913223119232065883254099148494319193216), SC_(189.1898657126411840402789662333083270884151933103) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(198.84910503873211260109023307139545481736736378761), SC_(187.63185825024948912813081498766658281313004477674) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(199.0300057905118862974084433281352760077138577808), SC_(187.41698466483315938521604508282055478205811672832) }, + { SC_(214), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(200.9395173280453902556214027545910465637333795313), SC_(185.06452432453978257074875698763558735461169378492) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(190.23615855821068410480835366710755890400759548994), SC_(199.60596931300219702245327722823819349658100222722) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(190.41195738157278320754678939189990781450032674917), SC_(199.45496761638711103723186914810241317441426467009) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(191.86036231611967858793372311089409391196018127444), SC_(198.178635901231620210071042307844889617567427561) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(198.66951736337970294678784288138597481705704281954), SC_(191.31107590674657581199990825238336399622297316728) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(198.97196852089573033396045648477945238464165534807), SC_(190.96785277536385337464583053127922075262454622392) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(200.26099189088078309284913138591517632546991831337), SC_(189.46215529551464422978604935487100669649972026972) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(200.43414003134692188790140699103760662080913587563), SC_(189.25438028588651793302841895396545992642714397619) }, + { SC_(214), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(202.25903810481684720100819434864150708628716184592), SC_(186.9779197925510405185079114422646844639712912107) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(203.91065566998727328985635292785745314865108450243), SC_(209.67187282633954047782498755993481636616964149598) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(204.02495692168816984983313657888728273128571552443), SC_(209.58595624529602077363000376590374775394561635762) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(204.95933750365910578974838829789629813866951137533), SC_(208.84821202796014949833074313608127576992235484317) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(209.13430595807359314799398970103330681241404313442), SC_(204.60656549405027759469432672256418270194461865896) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(209.30914107437193740781301200822407809434886096884), SC_(204.38514427446105271483944622138793518402770495779) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(210.04093139100107920513143703460290161124985420256), SC_(203.40522965341719001424309703031084742431242769643) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(210.13745892726619524853779004358088411095059305544), SC_(203.26896031860690231167451218338259828425241387316) }, + { SC_(214), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(211.12520383520358422457098218860339209090229234977), SC_(201.76052813772729760013454384486072757565066780675) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(22.075651482215534448710792571338339949994817923514), SC_(33.381251886862847036303689961626205441228796210201) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(22.261776005634421050754474315356119259580799414978), SC_(33.172794102077707312834820952454574443956347003926) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(23.828695030763343855167009343632980089492120984676), SC_(31.450850946332090003617417416841144588484139413079) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(32.104828656398436175709433784069325422612378949035), SC_(23.227344884328609559496981395970937502645250614143) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(32.512869188325678897797215742433452454065017191252), SC_(22.856037475944557447979434236071344166228838196675) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(34.297712319226353031868985349867867274511813342081), SC_(21.266325004913108280689643127996564869828101238486) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(34.543366586252992292173113299482725758612218478527), SC_(21.051842123325704632666509580241825857310897059858) }, + { SC_(222), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(37.225351820966099885707303025641035620828754445719), SC_(18.776029209175093625518071571341247894210774081767) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(23.801606566056829151478074105339465806040033431397), SC_(35.423249868430489106590798507802132429254399284638) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(23.993518561802574052693087487984455346049467366657), SC_(35.209517875254548295495455292340892241144783395963) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(25.608256408582075171562583672761166278343182841585), SC_(33.44331319785693297263767492932823914431026465904) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(34.114249237764037760530216251821320050509379068056), SC_(24.988741368001083954384265548220276431750227526737) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(34.532777972676251308994183746645413799448731716569), SC_(24.606102947269530485877627150471614633079157063277) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(36.362689621768336325873812327786672215953359614533), SC_(22.96683582092123205718497805386476542219564810546) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(36.614446704897159025712005224154904272053927065978), SC_(22.745532056965049867342397342546226170422254157051) }, + { SC_(222), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(39.361566467271892762855102429064878378488787210289), SC_(20.395191291543288653217839347617976731121609042622) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(41.548221176624897683908435128073611748553759433777), SC_(55.646855180853351384158739006044882876217366393396) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(41.786040049858636736116000391598151311678779743108), SC_(55.392359182199731401830505115468659732629898890394) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(43.779400198661862376051190981715048482625755481169), SC_(53.283208780803369700025410712313908434208030433289) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(54.085718354358538863255197804125310324034113860802), SC_(43.016204474347803007626872769034306434594953404473) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(54.585511596583482507678474973531144692971122322702), SC_(42.543848334775107281393560204612012938304804030677) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(56.76364136717006010725146453405188594454304015312), SC_(40.511422072080642874051771701590126121798217940467) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(57.062426076483591962340584377822425592790685393801), SC_(40.235905781122549452800450814738011647050693438258) }, + { SC_(222), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(60.309519959411178581073420898153492183058169404249), SC_(37.291822254154429239042123394283443134569401683765) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(173.7377504362100797907865614244066797804400391504), SC_(186.93644194545116349020007355206134682112349740152) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(173.97757643695194657617829748496838730450953128173), SC_(186.71543802204271861044032677516883944041333564452) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(175.96309866130980754913383544072434704139570256322), SC_(184.8605907034876006077609664694002391484064402758) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(185.57125967346380308236924708923751392897806476803), SC_(175.20806364733391500106963727044115453844303332693) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(186.01079396389421406079125367888113635410170122722), SC_(174.73756539637066161116620534318604447677720530453) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(187.89919053124675676715975553584277419418885596567), SC_(172.68472311954115664459852306779963814556353330698) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(188.15482224501327984549718539362012368944773189588), SC_(172.40282787637289641820784290928263311300702827005) }, + { SC_(222), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(190.88076999968029416412383286809828494738588388347), SC_(169.33481418718505003342746464718201635257399760663) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(178.53446518005775467603537054437092121594731025745), SC_(191.14216229402838794789553070001720559364050939287) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(178.76456137813479944818878637626633908625016453228), SC_(190.93210731462766361469838934002989823560429283962) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(180.66823242051517550815479847309366990559537711552), SC_(189.16756870440367922611938460197603345053455702718) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(189.84396580713980084815119941885821805207334213221), SC_(179.94459909557891563744332338077444471613308555909) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(190.26210068726390380415424140251509410807813939504), SC_(179.49349632377135172307379572670379814799109234257) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(192.05672834213438406447509778803661898749254273734), SC_(177.52376955626169742075994847109989752253748731068) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(192.29943122919016031624472300081570877491909743368), SC_(177.2530999981368544011608171387591712919477882288) }, + { SC_(222), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(194.88379593350740124574824270251716692443346751333), SC_(174.30444361939690809426679181149520160810098380679) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(195.58845608043654531418756328396519012855935571351), SC_(205.50190660597022816930089634921394101277791077458) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(195.77354112365960540355547311046731257549478820506), SC_(205.34114790994292353434134347261773097281154965779) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(197.29955230592833119577959102951928636687090714166), SC_(203.98396124012956597516936793524774400688509468436) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(204.50560836866116324860398103185232167846066368545), SC_(196.72059937094716703916617775121960755457371254159) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(204.82721842899695696369379757138887525135207809702), SC_(196.35898678134797198240462638387131070103834615641) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(206.19975596351423177028427508907861999728623496896), SC_(194.77389421831184312690258313302735805133813143958) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(206.38436617940528236114276985243063824369797410233), SC_(194.55532015765775346615072450925364379542157253532) }, + { SC_(222), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(208.33404287187629769269999841105595532615205646124), SC_(192.16285146036441661341297000390510632928558660957) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(197.45606632351597401947877413963079704978249081671), SC_(207.00006184293618967276312344593518326750696224036) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(197.63491460715946598904233792727435327355631941446), SC_(206.846005071123720098247452525462245341220099781) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(199.1086959512471880596687907884884171666885215703), SC_(205.54426440022745003933681492381458807922912492255) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(206.04483364857600390926171490214300981821651228151), SC_(198.54973155304732552883768498387321402754023595899) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(206.35330552712174963622566369342982052777144119602), SC_(198.20049529851824456865758830202774466374416226223) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(207.6684666538516359467964496648984563401499414707), SC_(196.66871105806562131385207139712897184246028426197) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(207.84518888095197186262431937397506037451307721103), SC_(196.45737179102267276237407825714439192670120674814) }, + { SC_(222), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(209.70879774960982647931920552976821339654521926436), SC_(194.1423725124478282173836138168924173005708759884) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(211.60759842607732799593023523928257989265859720924), SC_(217.47674287464110737147857199585747972110101301072) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(211.72379097489494726338684547793767775332626491374), SC_(217.38892067812664578211836652266604987876975448284) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(212.67389703843098741754532637353660730487978852501), SC_(216.63537155671649499714296278932620239374930738911) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(216.92748334884253879787903315424519148793445853664), SC_(212.31513029411234732068059133801849671156577232915) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(217.10606313049154264453403678916557952510909467838), SC_(212.08998286287217825714757472579220822424703608171) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(217.85416614490925201306213062780973270905954528841), SC_(211.09388694215416336689356118034100273959460827161) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(217.95293315411079944675369856869647581289913405481), SC_(210.95540455810456764540795701501508864617976770428) }, + { SC_(222), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(218.96514143959665680037293283822877762956122238473), SC_(209.42300588305336358953465670911266182210853024906) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(22.990374109425856771198081930864891864605488975338), SC_(34.498325315468400592483184263868955479312471844936) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(23.180043728459829088029951881143001575722551245874), SC_(34.286325907672760594461400628691768985872193079046) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(24.776460617945565616070794247602094149835896344904), SC_(32.534905176031495184927574501962163469553261044207) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(33.200126063367838617456716599272417679378389873731), SC_(24.163861151593770861011108332085599316255719150547) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(33.615151545841053629300654598081316061951224708875), SC_(23.785564052473325570967715375051794904627587316237) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(35.430290743937693739445314668784456063815630235439), SC_(22.16552403412696261217577575762827699246822998332) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(35.680083440381837508353482596108807793493820543552), SC_(21.946896703392142944568960381748307533418221153806) }, + { SC_(230), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(38.406798825524904439197068019200645908508499155283), SC_(19.626249706946440622273701158347826169749054396174) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(24.781441910429272788461972957923115260752241015309), SC_(36.61105298923368575529444868523436828094660153038) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(24.976996948859544618307842089539294251083120351326), SC_(36.393681180869966331953181770346976208824196502124) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(26.622049195028980632678579204198589638734075359602), SC_(34.597180978154094014329530308115465356549581338217) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(35.279672306202712327784613513486686985020436413306), SC_(25.990973148025214150214934215709906768973308252895) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(35.70537981465433775465490203520503909256321919759), SC_(25.601151543600326763729213095289149934154901655509) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(37.56642738268604359638212943551058546368832785706), SC_(23.93071924661222583336123847164066747008704486751) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(37.822437503095514451306136409188346871920943385776), SC_(23.705156857020421970971168509339389076403036542447) }, + { SC_(230), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(40.615524091836104743830937279523859453724791589108), SC_(21.30875293467714080937057105436059276169549161005) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(43.190485596312487497231477415189383369924577405755), SC_(57.541138592564768196823728657393994128055740644123) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(43.432716135835219976748821844487205427387774384781), SC_(57.2822326682075756486957476403299166099795260793) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(45.462796711623259593085335000902812710186155520157), SC_(55.136372071950822811395060263276357928471108663952) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(55.952884542714955889568437306551600269487088260305), SC_(44.685594978374621535571499663868728958638997639717) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(56.461376590099193483225761565129531659269596155496), SC_(44.204537641515569983588377942599673102324619049742) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(58.677229212363375748921972098688242467043654003687), SC_(42.134372771112420085069064936440330058762852335364) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(58.981165894841698931088190268990910764220181618059), SC_(41.853701512688181579205850281025992278661113385921) }, + { SC_(230), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(62.283927783565249242153208562398093751355737739969), SC_(38.853898821621932943909588681961160155717822448157) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(180.13753317062401619927121874828773979410475167843), SC_(193.57223393793857420738459494011696629915960214828) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(180.38148920296023843594975401813304987086646163641), SC_(193.34709777112030423926417936955468707580250665135) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(182.40139031208442415759442886685213740087739603782), SC_(191.45785858567811553553504484771009597340520525443) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(192.18164486752191027342178453893014323255508491128), SC_(181.63324192987697845096630751795293228434310210772) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(192.62932856661223485684334655580171443687339939125), SC_(181.15459730481600096653310993086443832720409423491) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(194.5530740026044331183144232587497934366137110168), SC_(179.06642618830997306244641623469741409985143645477) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(194.81353477118928769662220675786434334771615122096), SC_(178.77970570260928216455218637114431427198908792729) }, + { SC_(230), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(197.5916895681743394598225732769270882138005407265), SC_(175.65955027655541629760389577611389754133053614254) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(185.10178203504889908318351535554007369062976397489), SC_(197.93497766199157337471513780148273701233044723363) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(185.33582451446410770055804493439849958197609495775), SC_(197.72097384313754530325815329560555658242730630759) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(187.2723438899539214661120837377714177766584526016), SC_(195.92357190328304837332514304562571701415318462662) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(196.61250292278072684244667437723361031705821679337), SC_(186.53618119984253950013956393356509627726885391901) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(197.03842499974012113532246823916369859811888062744), SC_(186.07729473619626229057592048954011979678921691903) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(198.86683300685238213184277812237422057494114210937), SC_(184.07381078790187517881801138947706363370073053287) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(199.11415106321359445750839345577032099661771555785), SC_(183.79853047627696423600938613225568123130106713202) }, + { SC_(230), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(201.74841856161343312768616829655745639568010163451), SC_(180.80004710328085321424617689453006122007139091329) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(202.74597538004017960479006978088598777012242110478), SC_(212.83704749305832905819481918507949244046005242521) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(202.9341697535945235277569202379035374700196212431), SC_(212.67317466982744810501133797731551287545699924554) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(204.48605729870651082112375114674999526352540340844), SC_(211.29008375936594005552230632205903781070438279983) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(211.82160829704885965588072792758965043858889533452), SC_(203.89723536274256339547394888216412941363036583463) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(212.14935646617892613497224527371392799823134304926), SC_(203.5294911741759841501027192225378419728760862684) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(213.54853617342538331097907556015836527983318604919), SC_(201.91779997769331697450634953323622662621290620303) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(213.73678865811870092476798293638319283351479473906), SC_(201.69559201814242163355292317921402046134725592952) }, + { SC_(230), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(215.72589765999348742823625160562144598752204955114), SC_(199.26383682712513874361492564625952871143632574633) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(204.67753546635619085187418584931787235058967636215), SC_(214.39259410689922923829519395568447638800061232233) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(204.85937843253343821796463070021080802396403476608), SC_(214.23553741843709030526282401532871901527327826276) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(206.35808101048831266145978251966973040457887010009), SC_(212.90884515000529623195188951717649504323885656266) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(213.41892806908458491930557708219932376712044183127), SC_(205.78961208736188135254587854312631416219493278092) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(213.73331230586213200308852919753806823875917450473), SC_(205.43447056357392468306493084023609276108940314922) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(215.07413901117804188272860040784160738351384645738), SC_(203.87706827297154877137276832160928578320122407254) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(215.25437049474444194814448169211873091690799754513), SC_(203.66222890285450964789441221341795006099965941888) }, + { SC_(230), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(217.15598236717119081356889902519754641977961889954), SC_(201.30938658128525235849488443807182274988387464487) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(219.30551650631683486463874450767869863111356190895), SC_(225.28064438465584511690803186412539698039786909943) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(219.42356616374812279018614679461905567310980045576), SC_(225.19095163082239418561768723202065677533843107596) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(220.38911422567610607460269330206140060268047866406), SC_(224.42188572618435364847317253094558005572034211413) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(224.7199061611748966458545840959825018252831642775), SC_(220.02446065792007296710852790377202439157339319117) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(224.90216236606136993533143221928970849086188561731), SC_(219.79565418433534197696933767243875292242508350475) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(225.66627739724161771773759933232020162387854155179), SC_(218.7836695936338792316843454312325618311912957045) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(225.76724205249889985919818917474656334042439971764), SC_(218.64301431147040190271965044544802396881519186816) }, + { SC_(230), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(226.80344341921146672695936402356412933895820615256), SC_(217.0870861983845640535308816947899070278742188759) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(23.906844806356379286625728829766000823339815711318), SC_(35.613650137680403064308039015767459690711145648916) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(24.099997965439939416049001938986046869259708457861), SC_(35.398170432470690796916563974448520198574478126096) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(25.725401549802624082471011105494889880394313165184), SC_(33.617781960421874540705720590601452012065352797248) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(34.294051681149170598914574665214218030180303552516), SC_(25.101747509199610769922975914644956909225693167106) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(34.715941307529035563220878806942403285048454457722), SC_(24.716581837426727616169219627714383526083392265612) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(36.560851875716716465983791306870530228771968304666), SC_(23.066741057107332107263804392066018474322921476846) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(36.814711226056765948534366643535140631238666070371), SC_(22.844041454918597176017068615102700017917541684175) }, + { SC_(238), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(39.585379098501335445529916462375421310248283217756), SC_(20.47934506625371427696056845434282105699584194346) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(25.763073576820120954911122152411841655776629709405), SC_(37.797059302702842337114571847794603860455210029311) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(25.962208430927336121372176503047868141491551894219), SC_(37.576110692190211444744430183287839924810052058002) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(27.6370499388870429406162300952902731199194466984), SC_(35.749838858825513555294954585405504985363975529802) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(36.443685765905320124026390097891748926386348806012), SC_(26.994612969316237683725729712392540574530747872189) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(36.876447909765846951570510632934194117941950210199), SC_(26.597732609555537844242224744002185735061078572325) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(38.768092266960217551757226862326461907429226276656), SC_(24.896676214003366977607935204449109044169536262032) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(39.028281679941112047838034363590847891843849200876), SC_(24.66692931702584623123135287793660799241407865529) }, + { SC_(238), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(41.866536185623124078047235474311487721083603027847), SC_(22.225267658363547828618478411399921892801522040514) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(44.834924865577598008748296585605084670855554510111), SC_(59.433246932485926977038326268225377386521996878706) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(45.0814907017210739123609349548391539672117504359), SC_(59.170007336060511265090955157920435552113887439629) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(47.147656833089453957708069987585249162695118442833), SC_(56.988070737009081898490901632752314119343030572902) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(57.818344308160911837620806215013395852632313842042), SC_(46.35669109371882107128732566148019489495694313364) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(58.335384886355549663007820695155553453994694208333), SC_(45.867082992677039975641379672032326810200821735837) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(60.588307980976013199172576602999008241717644909412), SC_(43.759832945230228737341473319893966412535689951224) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(60.897307437149733030904913872012004167797348054788), SC_(43.474096119422445102299003541555234402081547802692) }, + { SC_(238), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(64.254771623335710094404996130371149432631935941901), SC_(40.41954342346156612463171283694212008097416058715) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(186.53935345893756168917971261934397287266777104317), SC_(200.20598867354831499618563976758521484272649594187) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(186.78736808274261805193378721179688231839856202385), SC_(199.97679185066410945405177068070323845863593378252) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(188.84105397859871423568375931754673331880552893408), SC_(198.05375575629111577943822453020075652930281782395) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(198.79043259137910889835086248612540758425862589588), SC_(188.0600187264721346424185601382668810125956412072) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(199.2461247245925018019046213281132347793543271145), SC_(187.57336850094257666145101526892733016253909297769) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(201.20460648680106122774223018237237689972979127786), SC_(185.45047975254863276268104505021210747158043169902) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(201.46981247461881436839136318889503606307450227781), SC_(185.15901760463837865013399125026624510673613073571) }, + { SC_(238), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(204.2992648541538761824254134688991108922891679573), SC_(181.98762549332147876839486356611645189289118254715) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(191.67104618527377479162564324817250431907286281925), SC_(204.7258460916511777824509383055697562455012690111) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(191.90896666518310897696390334449738231084384940894), SC_(204.50796188424098676038891962305132859175591604151) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(193.87776659318019462069219215129817671902043860738), SC_(202.67826538685664048069789303646550885401776451336) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(203.37951356733375496101262647159894418747520088317), SC_(193.1292909939298746328210730082336470195928934424) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(203.81308807210764556485956675219791309739681245124), SC_(192.66275537586016354737530334330050324473015463468) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(205.67469070336870015840742158928144903296071707052), SC_(190.62609843256753891539616808536596263652232408315) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(205.92654374081040862221476403369870735178069775886), SC_(190.34628726014879675076195056570210980643892673368) }, + { SC_(238), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(208.60984366230350000187008318072645536083715271716), SC_(187.29884214484937643631836154379428025536299650953) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(209.90503119791610653368270501062687484616224398615), SC_(220.17065271968803267678290304697121578132814651326) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(210.09628100298419958357674146411763860614622476349), SC_(220.00371998362186211949004799905023233599845847165) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(211.67359696036298672304051239096529947917023515061), SC_(218.59517459890618842724576991997070785900681960386) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(219.13640527607439148076986860222887763847696702233), SC_(211.07507674938184180922940329073747821826544207066) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(219.47018498816813496337669484949237517896835066932), SC_(210.70130710409736304182572905469284465013497668135) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(220.89554282027906439051521622233997158961478618391), SC_(209.06347845123556765881616440386292824592200666599) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(221.08737390642770056152174195305250495751556909285), SC_(208.83769970284123740362691172450856962434707626852) }, + { SC_(238), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(223.11522116141590765942558864546550744298046102157), SC_(206.36734220489646183876648241034341624556452771149) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(211.90048491940958611768566572605343020148504258822), SC_(221.78364704189204024293930345117763374550638049273) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(212.08527063832985362525408803015784342208923502013), SC_(221.62364271001377434241613413730174157472608908433) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(213.60846290920137692648458338007972959858279733227), SC_(220.27243235583536051335425054629427860393701389585) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(220.79186389387056084335334162698185394351216545564), SC_(213.03065392401640963017777058563591567806169430264) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(221.11205777548888400226436211919693548783549216597), SC_(212.66970938475193302744093027266984604629769887065) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(222.47810259615147814358493694462020816032775917175), SC_(211.08713338063144312478305606891204670851326294038) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(222.66178191454419468742241573805890872572213466458), SC_(210.86885472046394165905895297130461698488751150586) }, + { SC_(238), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(224.60072654835301175517214072404278294496330747028), SC_(208.47882876960797804030418809845117517043989598443) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(227.00435892982268321097831779428430665675568517216), SC_(233.08362746531821679925838613901691903568277710517) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(227.12423329232302164021532925318751780991148857485), SC_(232.99209735425762794002055224849888052929181925604) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(228.10495463494254871890689034606855155416158157137), SC_(232.20778765063144303968598832132013726971903920752) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(232.51161322309181010680650477077498373949457388364), SC_(227.7345165414559973222062548023804471799101412904) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(232.69748119293212311185277645173754200932898380079), SC_(227.50211469636557995735888175583511798992190201922) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(233.47732352689595314759772470577961202317067589899), SC_(226.47451878206648282379076459424955092347681519405) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(233.5804462517740876833936268335969273470596937519), SC_(226.33172865032231758939346705264400439781074880008) }, + { SC_(238), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(234.6401964753038481673555208066266268464628259214), SC_(224.75268517484635502868694763021283753295593434901) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(24.824975992805908699769320355760625637270966665235), SC_(36.727313992488324192699393100987859248831802654318) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(25.021554236710992549874110275376724923448734677051), SC_(36.508412237210762579018239730815087596732310269897) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(26.67545903837284788979493125844810279847408591774), SC_(34.699540295555641502420622243186267311128816863671) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(35.386674245576286624642488509292037375527406607215), SC_(26.040935391286501531742082828490338266474767475603) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(35.815313266699152589900692474879848141663650235575), SC_(25.649016177790667227295601653762520126493339595147) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(37.689496849639530288360343366126042227263615184492), SC_(23.969874878175576684985720842595664042527434500116) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(37.947354686343750049877377841176881987049641708974), SC_(23.743171535274102719986649050458142434730719579569) }, + { SC_(246), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(40.761236557952940071619813234867960159430641567032), SC_(21.335170580685224926328381491733185414540812109475) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(26.746411578895360933357362713830400320040043483272), SC_(38.981358848067790320342558768699634369334308858501) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(26.949066204689153479366193565298313752939390540612), SC_(38.756893286003084514495651980973399189113822486838) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(28.653198221750296810779717147542478387527179936595), SC_(36.901347450479323381489955546670718314198990006217) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(37.606360234973974803691615171437774902869139386214), SC_(27.999590370350015841126056743242126167117777371354) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(38.046059099814852020607911065528773058795420852325), SC_(27.595769432204075219961951619129267217138589538745) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(39.967788178258506935884324350269508194184446319284), SC_(25.864602761238729443126385280939005246057126946639) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(40.23208684534334141199149310283410315015829645349), SC_(25.630741732672471254277613906172942155962648304289) }, + { SC_(246), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(43.114750593870975201587937060070572853629041828021), SC_(23.144586884833444868790810625093826221403156549256) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(46.481430121835658051233473294707762858904164122795), SC_(61.323289086637985024136144883829512487793020920876) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(46.732258719398276441284912384308539508402989377474), SC_(61.055788248537728729000315509420028901635291065305) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(48.83390737098082241521098072672368414144436468986), SC_(58.83837806817470214182338577368358088366561330001) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(59.682183050758127324761905396532140735841452765659), SC_(48.029407500645241522664142554433617805982288044642) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(60.207629413439358831310446535501435734413309423554), SC_(47.53139152520913212865827324262279224998292121874) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(62.497003315031813781217177672492976354708039626675), SC_(45.38767691564795850599306702066432665794019928113) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(62.810980823086555642446557551360301394612002578105), SC_(45.096959425382113876460063102437814536671691632413) }, + { SC_(246), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(66.222230162712111146987398311687849935536377455498), SC_(41.98857698172342258089683296211857804207957121275) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(192.94310926874513120035871151756314653390555111067), SC_(206.83780815302224185941630967557338456670762464566) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(193.19511462686421702629379473792586143306964236789), SC_(206.60461866422727823969840748233333845691622487742) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(195.28202098085115083697649187888540968617308461941), SC_(204.64835076679132854526902199080493407571110298176) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(205.39770276575815765786859385697513605668321531469), SC_(194.48831401279429896327974391489750012096079742852) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(205.8612694316934239923004074926171926097598450646), SC_(193.99379190659136861137693119252843239872990892003) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(207.85390576549401042617645786114610826990450665913), SC_(191.83676607533845414029271401674278218217710515145) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(208.12377735886619719540533625365669961557574850684), SC_(191.54064164843148528921850122890514470349600811985) }, + { SC_(246), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(211.00366382720873561960736577246122319781684108006), SC_(188.31887236904197436486078836824287221066200997439) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(198.24216009556045821647960715414811407769998699764), SC_(211.51486507983241115369120753984811627152383548972) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(198.48389372042018684822302775260736558731771791723), SC_(211.29316549306192069101551332346033496811571934239) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(200.48443487638553091630607435917966442158337988682), SC_(209.43171465907060955255651472184406775112304800983) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(210.14507411655711489776401838291359806486696454507), SC_(199.7238519808627685424119739854394475408312549012) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(210.58617304494818454626723630235677713507703049534), SC_(199.24979500316714787812476457252006981879357018883) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(212.48041403134527252007298687415821017169536985284), SC_(197.18051994051905020882407511275640569366348825842) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(212.73672590337753719022256330084334965801420110556), SC_(196.89625378696730083453769700424684130574164532749) }, + { SC_(246), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(215.46823192542799148314418817835727493601103166185), SC_(193.80066863426554290229212494564632817202394778901) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(217.06554645138728560254746552815753310805445432838), SC_(227.50279927220891030535464067312893706477306683505) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(217.25980049690082135513788526215302564701604470346), SC_(227.33285809984883802231277606421538241136716142561) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(218.86211939304162449463407311603751715275469869243), SC_(225.89928535883055564622647591447113860685982640886) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(226.45005951808129371050647633206267215678736064958), SC_(218.25406307168033533726760271431603299065360013396) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(226.78976957307348642152259616432851183065046544441), SC_(217.87436878609633333906241226390518772411499470497) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(228.24086492939276715393847058245453042102534065361), SC_(216.21084068099166831292824910644387577759648138316) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(228.4362141791223365697907213444869345145057004753), SC_(215.98155107809579203240709042638620435409118485789) }, + { SC_(246), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(230.50214110967217215330556682466224559888738470755), SC_(213.47324094889139092282950404636304067397130783722) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(219.12484039605505991182968076190487019247846339001), SC_(229.17329482353248286706908111438731107683033995226) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(219.31251954745609912727348750987687022171006935376), SC_(229.01039247930323394529309041736598672263524983765) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(220.85979162865119392044354857560985610138662123401), SC_(227.63507570754285688644246515192494500254344593867) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(228.16369911647929427548448650363406678169348895124), SC_(220.27279879546424120985001247742547452634561459606) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(228.48960510452990005557175688052593898446868441305), SC_(219.90614836267799629428410922335604025928406894962) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(229.88044320809674730334952495618967694752769306539), SC_(218.29882064878281640559616828394408698546796980339) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(230.0675120594263056773546970352681882185681235698), SC_(218.07716045044595155554665599215358039904485075246) }, + { SC_(246), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(232.04315354905174152825386667453305361604822441189), SC_(215.65057700859644610801061313435954042202281853472) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(234.7040790058105402541115503616414026812435350852), SC_(240.88573807378439490899818859579548592690840287485) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(234.82574730492734434769432552719506797350630794619), SC_(240.79240210479703040721294039598337060024914019499) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(235.82138673896588577928800089213233635815252769304), SC_(239.99310772186341579969056815454269660303646902588) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(240.30264016160680690479150097672582581736866851446), SC_(235.44526127364156136726323178573667789969998172762) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(240.49205852087116544724675456874861453956108977447), SC_(235.20932452251130427599553668981157630239825912368) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(241.28735805694711229439056103677862692125135228068), SC_(234.166380631281583054845799063395455174390637234) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(241.39260133255451158478961639514863423369964262898), SC_(234.02149177290220242800378128896411751671850412471) }, + { SC_(246), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(242.47547996852577862602168348851387362602473234066), SC_(232.41972597148787353209323211020382380864419013157) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(25.744687164954596333916048741745906406742499953787), SC_(37.839397434293153854695726593153941026894992364464) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(25.944634886907930921037055358368620069494363949534), SC_(37.61712904718871969857351763265265037847756847771) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(27.626579037384759196138699086182793629805647465308), SC_(35.780234409193016771862131515559266572714433623898) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(36.478056937024752037652382381756913435469581357192), SC_(26.981361765517804765292282781115607841297291409499) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(36.913336171407073371233534243036617982106821875261), SC_(26.582798447519651449042719020639194248575867308965) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(38.816318623166587191895975919175367362365470868811), SC_(24.874832485925791011711588230267169037610014556973) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(39.078110094286376020789736581798448102569441915942), SC_(24.644190583377951516448833396213082068209511781096) }, + { SC_(254), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(41.934503470838077928989231404555236235929318716134), SC_(22.193593293559103093462886668541835556844833590642) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(27.731373200403794949938639817880139617383125458151), SC_(40.164034387121539972642575506579017543487138023962) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(27.937490478431790982863784180008386172798774824967), SC_(39.936108817585154896816706787270911887429654058286) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(29.670438498529986497056682555977283907312638752466), SC_(38.051762465859280581556139543011217068470205867709) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(38.767760624919679624431452705156279970636852913706), SC_(29.005840576017498714081716641557797874164106750814) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(39.214284016831626329158472430367023708823748989645), SC_(28.595191491626297079162021181046851059479011330868) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(41.165610620116605071869744769341764267628282753559), SC_(26.834403333084402079593313770645476595897998172747) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(41.433951908758752670582070885219066577109154705263), SC_(26.596495111124536482321984135492102879923512866143) }, + { SC_(254), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(44.360303194840736132935389667531362557682580377853), SC_(24.06657409500868887534073882710136734473314827147) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(48.129901291790268702570269489442077339363773796654), SC_(63.211365148584540787755871680063637075943791798829) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(48.384923639481329376621989316820417720385703427638), SC_(62.939671985114495202331983217541731356491052745051) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(50.521481036823770853249122579267609243841608403884), SC_(60.687361441322391948030445984364206388775579232855) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(61.544479276359301525230617881107224729919235640981), SC_(49.70366576336732085848722793567374313111349418452) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(62.078195596993887516309729142166357130123106296431), SC_(49.197377870146290817940172110042440185323067194481) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(64.403430708457601630238887352998616895971853085407), SC_(47.01778915604546690192366355442804763055635622752) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(64.72230566175917728134678099290270260069165953006), SC_(46.722171772012546344446333592730068888333286314344) }, + { SC_(254), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(68.186467637115617901592832076875087554246300095826), SC_(43.560834916503068474076725688135013997276103347367) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(199.34870680902605588527926031388755724785876004501), SC_(213.46778614003857222507540812687443411919678679434) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(199.60463833747794400394724277190441429031837596441), SC_(213.23066866986937222481833343820067764445801805743) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(201.72422818463413354479743696676766938525693524123), SC_(211.24170663920226820462994708186759120798893849951) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(212.00352886246653789110147355408000352413815825523), SC_(200.91805422670229921309900568478940668106487478807) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(212.4748426604239182201383206127714736268833209475), SC_(200.41578747582705938953683605620915090441861541698) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(214.50108010280356317516174534236742252641273500468), SC_(198.22517693206380879097346499297200485953066089656) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(214.77554156698234680462031924358572679112664890044), SC_(197.92446575212949059292816943458265768215569943874) }, + { SC_(254), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(217.7050408482085888109009574548584245795050023845), SC_(194.65313698110404826072610150464952202456741915983) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(204.81503411059575677981341421815540522384025621132), SC_(218.30212424876948625540128084382323744691000647395) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(205.06051917306568077699079279028031057534433267997), SC_(218.07667112927220227316777608109927677101552331067) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(207.09228838850968461757778977378191958575348731411), SC_(216.18397994021328134303161964336206548444557458368) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(216.90925478298905902672836738448265627711075986898), SC_(206.31979384243968489683183482332459729120656775205) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(217.35775634790032768483017707623429182067676945537), SC_(205.83833710227226333314942758442262652618406251891) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(219.28410648948874558595679136047469725548532459113), SC_(203.73697185721225406759541685251085112344007486608) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(219.54480476272492679455580427805240528607134861453), SC_(203.44832291417923826862164055266688140107009962431) }, + { SC_(254), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(222.32373101442347310633746939233908574755467561244), SC_(200.30537941536681958569887221725221869242654189032) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(224.22745029456907687872379161447087536488586999287), SC_(234.83355791389902750052874804230110162173080473323) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(224.42465987790304277621878312269804990914638129569), SC_(234.66065726696192931798217529472730597828260488355) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(226.05157689789885167772474471207178173508274855076), SC_(233.20246347847565717333948344108196292905088166774) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(233.76262637626929703958021482259294780286689829128), SC_(225.4341387617152262626151036661518190037841333947) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(234.10817050413706643518001194029980734906933493472), SC_(225.04861575728817766990470653278100553463859527532) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(235.58458432028079338650483482505404348099097631522), SC_(223.35980490829524993248170204491280599318808853847) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(235.78339426091365438320615541142412428624104199209), SC_(223.12706146711774407950374350622678873393631638703) }, + { SC_(254), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(237.88677484064148904506686509882945823700636690578), SC_(220.58141667648720359630926519824805178173485762272) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(226.3505336220217139477527560604919829516643243133), SC_(236.56160563099268480960194962715590510673943223819) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(226.54105928377462729100020978275783177571592054446), SC_(236.39585247870211897653138500593482387899032680542) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(228.11202119853159665606730935491530294083099929157), SC_(234.99682088886846810595120027286343062871517439718) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(235.53448705070226517555157118108783488933130334094), SC_(227.5159931496614430909935059224138692778297292562) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(235.86601236129559619734604280456220297162004684199), SC_(227.14372922872285902918544475005409999259323194363) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(237.28123970004723624732289815478164245711158883275), SC_(225.51205128539924130233456218513774097284545288788) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(237.47164264653930940743102869769496635475733654187), SC_(225.28706448799352225001087543697234918489332723811) }, + { SC_(254), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(239.48337658345481511677742469522699913049232877719), SC_(222.82451912376717580781258966601013058049483694214) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(242.4046338447884840414896350679928573719319070802), SC_(248.68701847850488365135938930900043525776153610362) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(242.52806681432096320544771698241687254757056340213), SC_(248.59190658953540893136958020394726578978792353865) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(243.53838158214320815779796431080979688968366411981), SC_(247.77787391086914981881709345341327767658894513255) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(248.0930197582795662982406750434149071126643283927), SC_(243.15666117161100269560153855591366564219229791724) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(248.28593014709477974609192556703451539425913785984), SC_(242.91724703439795606730929165075480581999806679339) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(249.09643019785026967231554935592818984520033687521), SC_(241.85920565090519310133054315803581556455268909432) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(249.20375839198807927460791612351711797169079620161), SC_(241.71225242009488194351406919061699378842213781521) }, + { SC_(254), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(250.30936675017848197735786392336286581349026595229), SC_(240.08813800953897377374813896243209421286152011118) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(26.665904120000194764031734467398902087952426090245), SC_(38.94997470964496766731468341816085956061568045044) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(26.869168337554735043614302239797570553344958933206), SC_(38.724392501651233605257131194061004389966709164777) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(28.578711723643544481919649083674046357426799177028), SC_(36.859914283534214598381653638124581118394649196547) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(37.568257989416499969624132556784615665755055966284), SC_(27.922968527501911041495224201325113723596518898285) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(38.010073387164163101850685972064752514624199371017), SC_(27.517865387710260011889880223691032854545820618386) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(39.941402872908228792465277104475546877980926016452), SC_(25.781528155591931285950963749858055831838898234675) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(40.207066181801793286484450614982843533420240811692), SC_(25.547009789199048512552620569470369328571464974875) }, + { SC_(262), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(43.105301732083421053738639646696213027184384260861), SC_(23.054490703915225741895604362928339336370956257477) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(28.717882198645070640820735416360817864067898675948), SC_(41.345162201978978455144643000850760290306792635774) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(28.927407703981769653612636193761963474763549014821), SC_(41.113830890376238062320284141201485139115091679457) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(30.688719564413805996818162753833696134123145475184), SC_(39.201135256682570900869257937643637822638189941044) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(39.927946766128936758306067569108912380162520736979), SC_(30.013303875305502034423144252858946871622837829445) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(40.381187763707219004023976595426721230688463636236), SC_(29.59593378291733629550719167637228674694192784789) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(42.36164761696784669450132433705475462304967086945), SC_(27.805989859035923180294612097621830825767184152728) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(42.633968033216237509056609673278396952631277121614), SC_(27.564098215444831371081794135720322898211411651186) }, + { SC_(262), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(45.603319213359629116527998055918763654647098349822), SC_(24.991103501053958215427391454368911084578699633255) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(49.780246128972208246568367827192099210850145355417), SC_(65.097567382408917552060840298355662770493628876441) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(50.039396462970766226051650556832680723965468544415), SC_(64.821747571037067845611655493108038250463059073458) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(52.210315799920734301759926961953880385453299634661), SC_(62.535082963791568471332376452225243165267970830484) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(63.405305351509647688666224870967927064744054093736), SC_(51.379393576732924301481161143480899815214406421366) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(63.947162181769262042339298272363211451943975792187), SC_(50.86496333235811939569121924879232380226554499859) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(66.307696618797302278744949588210564391587026504149), SC_(48.650063180226918459213519227858571528911822254469) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(66.631392203208488850626552528692172135994185613491), SC_(48.349622865642156367314832275042686069952174212797) }, + { SC_(262), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(70.147635417894465199338012062312432565649053614496), SC_(45.1361655539174649027288032675378077969211508662) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(205.75605962727743674903128192501220074120814723036), SC_(220.09600906336950320123269566789803091856652603124) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(206.01585579724373803813164871619244301037992549042), SC_(219.85502525025972330461376993300688509082421095843) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(208.16761739412487632475399800842550973846829254688), SC_(217.83388147099516411476956524918116386675111050212) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(218.60797861014203167843267357465025367257484945823), SC_(207.34917156043535455382395494869019365698566191529) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(219.08691813052341213255738871448558982470509931044), SC_(206.83928142466001539245991697484857147227333184995) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(221.14622928839223874530311264756867630552688864157), SC_(204.615612568071172331500130320377173120235858262) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(221.42520846237575907681519986528910177093261532096), SC_(204.31038660638273293244536576040476508930479491509) }, + { SC_(262), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(224.40353816477229060203911899859165135331996817615), SC_(200.99027746681546700696962999607699396718892030733) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(211.38958559148489914754343216700563857579626112447), SC_(225.08770620867611840237604161313626912779075336217) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(211.6387632857297718680341816118616177799003065951), SC_(224.85855848895584895744662525833328257047902808528) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(213.70127150030974812064281638674861923289285120298), SC_(222.93511674490030898168030870568600782205650591415) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(223.67212029044496335317081927798609247567361187773), SC_(212.91705176232112140481156667103865844796705330037) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(224.12790843430411701575893128393889638332549006738), SC_(212.42831114443173688146641838281722963638407007835) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(226.08586347318764627428419226562247305817922239076), SC_(210.29535882646053224061441324233878941201540166934) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(226.35087913495618518456471715459188983744596861436), SC_(210.00239588692758129049829119318864002180593670664) }, + { SC_(262), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(229.17647699861555349566051088895997342250171977459), SC_(206.81283886441212979613067421253296745652277845391) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(231.39067743400956881093598135907069935317036918522), SC_(242.16299386698908957217759955231278431677069002623) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(231.59079614575791460538949145610386065116501732436), SC_(241.98718039073846407792543609420399477028728095007) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(233.24192551430640110342511500765673660565040487686), SC_(240.50475269127713730517888852440816294450551560615) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(241.07415687633285298638958783959797671256245329889), SC_(232.6152526061308676755133602315319208693557191899) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(241.42544334935045993465926274316082305160062441011), SC_(232.22399229296047784137344586996308486557858034273) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(242.92677639746609537265950532689898810870957188136), SC_(230.51029578364206015671367760200062420918509056018) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(243.12899228657582256840984152062968537717113547096), SC_(230.27415283154619686152089594704191894471227776435) }, + { SC_(262), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(245.26923044045781174312606763451692858750257513816), SC_(227.69176213971185059041641862421462656661038611654) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(233.57750167547388601469847895714993272524239081666), SC_(243.94864230419370719770400205195110197619484680246) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(233.77082913540479647100684260490888308059445244562), SC_(243.78008331293995590347655890100738895835856784442) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(235.36510925253814285639965087850617153932509130261), SC_(242.35771001529604925195413204593591307779374823386) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(242.90427684250729691819303608214673968300634243393), SC_(234.76018763249470081368549289529508077717187939675) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(243.2413330721286021524694116442081668432510831224), SC_(234.38239828187452399613152675254445047487700960303) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(244.68056474119088390044415207644511071101556552948), SC_(232.72675267679936004431105583603769055096100206731) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(244.87424898195809774731521613011079748793139761915), SC_(232.49849162769128437516076498751931633376698017803) }, + { SC_(262), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(246.92149993354424074827891169801902109852917741111), SC_(230.00055174758411036747935768942132415769395090971) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(250.10598393908064371165001997407407395928090290293), SC_(256.48750765840307603950500059502260257884053701892) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(250.23115369685866936834842468089367294441337714992), SC_(256.390648350128595137873650027117126918348386059) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(251.25591249614023568760095604540442277360631003697), SC_(255.56211202805182023662954938844041631682628724154) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(255.88278225585136751222060808993172930665687025295), SC_(250.8686852106167381019666138995627279940040757379) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(256.07912909215121395588387201117031181627109788472), SC_(250.62584849309191378025714369334571680884424374691) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(256.90458531557472519678946760292450818058714436093), SC_(249.55294825248387224381705954150109676230874564476) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(257.0139645308602948075704626329682839398343330452), SC_(249.40396337425050119916099347482714560957148733551) }, + { SC_(262), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(258.14192387822955308436868047479951940866391337114), SC_(247.75785628097992793552009958552979433104575676153) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(27.58855828670240714967769848194095432876408742804), SC_(40.059114427806938084332966491364919550893900668427) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(27.795088441550366695966392217970220732865032672487), SC_(39.830268800757490951495522379643136576510620983935) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(29.531811049125759310919454106348511359215064371263), SC_(37.93862610650128240092664672740586084548738413964) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(38.657331215986699341554284042681712617655852392358), SC_(28.865701977829353499716341928572447335017117655276) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(39.10558346906843937235178734480831960980988157677), SC_(28.454158536824739496863167004366857869105756914699) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(41.064828768787095669163198552612252609143665939098), SC_(26.68988267414584137253958416603859051684781531305) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(41.334304941572845720496302772891059778111327569175), SC_(26.451547090516741039980349782175174374019577526729) }, + { SC_(270), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(44.273743968606877954925679418101287944532023475853), SC_(23.917749650184824346663756138906316306105750839545) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(29.705868116732547953161568652341756027867329262458), SC_(42.524812783804400092819115236557268398128687769323) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(29.918749913527413397817729365284295132068638684667), SC_(42.290127520464436161550040146227957724334340753196) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(31.707994094506784904526973781714654950669666296375), SC_(40.349513277112396980697492454218534724802611169513) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(41.08697394785648676509222181963245275163290227927), SC_(31.021925083880163105146348214876753398995260558081) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(41.546830501813903855891338779789057275244021210037), SC_(30.597936230721867038556791346471054535528515250076) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(43.555980509269886228119491090246508611793413840012), SC_(28.779280957459410053525371102620527621929032599169) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(43.8322194589206268460159015267198145230315214746), SC_(28.533466739693544406933017246931541095729028493528) }, + { SC_(270), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(46.843914354626413330704892000368867961989604524359), SC_(25.918058901119449674989115314133976418976612122148) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(51.432379382681436004229527189416673633953445393587), SC_(66.981981054191016727257545333973436254010500127786) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(51.695594939637392318506123422052425133075839677011), SC_(66.702097279532137517864538253743019192988580976569) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(53.900354329606418525192240677391552835318029195559), SC_(64.381600033736213748870527962012540023727904506158) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(65.264728155283383859973923386784764733602787507758), SC_(53.05652411568940277914205125899993214212238976132) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(65.814601941002600918160893376898905890873085089039), SC_(52.534075182234470769531864153482275589958707222588) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(68.209899427081345740933427563721171647715885728753), SC_(50.284400581728489188279769546770752501506901275091) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(68.538342332624714461913906212329751856525451522918), SC_(49.979210782437724633024219607450571964855479691578) }, + { SC_(270), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(72.105873380184472347707780757089005585057743498244), SC_(46.714428752049557709521283348024128967930846806093) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(212.16508782997092122370651941952698314739639168016), SC_(226.72255679584973958906340139365969582321687384785) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(212.42868991722528755470995965955439652335385127331), SC_(226.47776546398527326141578703858035940662304220845) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(214.6121348274263776395422100531176471918129649049), SC_(224.42492895747991350526630214416343082315887353215) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(225.21111460370731198370429417056373331174334311122), SC_(213.78160334947198107497025499178229521824382762711) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(225.69756397265165315115328347209955321766723682104), SC_(213.26420556596690492801205393950121724033283762973) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(227.78944553801854109145340422151672089146566149213), SC_(211.00798079873315413533950346180106347241231827312) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(228.07287356196606664083946654578945084300226746293), SC_(210.69830874220414881371984077016428121945305610343) }, + { SC_(270), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(231.09928720183810232448141473215950886066277043584), SC_(207.33016274070374760603197388900323821915464076801) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(217.96573817027307725452169225972723957062797562623), SC_(231.8716873025202764259853371373780162319940325577) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(218.21855237150502296825514277453006033156076591473), SC_(231.63890122288883106200807489105575554183881151933) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(220.31133280278232959443413233523926053174307017124), SC_(229.68517638123584020423301399232812654955302007884) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(230.43373045648733259302882624775050539185054371664), SC_(219.51556584157925865666467343924846137896984468666) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(230.8966944155837087924937312788809512364562588427), SC_(219.01965195198025137640560167584332815431520914328) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(232.88577313580720622154279825714685150916517023982), SC_(216.85559272981123576886407867005867021373885873547) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(233.15504033302327298894580504063610280194692178608), SC_(216.55838144661744460540743672519591282092304107254) }, + { SC_(270), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(236.02659558916548803804855525460968430216255327072), SC_(213.32292166323133335610398938776790265758184116481) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(238.55516753794986866008523091441137831175462457675), SC_(249.49116740152436901702236098853782619137103207595) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(238.75815108748678603034582241506746806758426576506), SC_(249.31248560190123079968433633844228880867931634277) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(240.43312462210159865997888096042370125158230426604), SC_(247.80619341764275915318091496302376669996137068332) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(248.38469817560476146203067045897504689462711680764), SC_(239.79735728286446719651897802042992968633367691976) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(248.74163946199154228777039823399506220165760338376), SC_(239.40044690249735943467849964950747402203237424314) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(250.26751083311915288373788431979462779380701259264), SC_(237.66224368467533763400084337017814960976927531248) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(250.47308044885768766379356563324944171273023376883), SC_(237.42275306499050159390586761170974608751927799874) }, + { SC_(270), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(252.64960773542990707121547250508668007883922460233), SC_(234.80417825214835170560517124044924407639904849074) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(240.80568641739560109204654981951664235297662932307), SC_(251.33446291123611594014347140806822162761860518491) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(241.00177300514607215806970088797728724064735036893), SC_(251.16314098598072286423920197277591887626465722787) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(242.61901664476908063398520662445179962379454512656), SC_(249.71778201224865102344055496427957420428448915247) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(250.27311391217822988909140604797222274185532132291), SC_(242.005336641034839945461253969513639447573328972) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(250.61561670350345560211710676177095239021499930882), SC_(241.62210590266577177491337377676339833467103715165) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(252.07848547501641662540889796901493437560462960447), SC_(239.94285773002327552844619891909015952865835296409) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(252.27540064330269644182504884836206791338322553507), SC_(239.7113723823205636494617396407393894232300967265) }, + { SC_(270), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(254.35761990578799423871917515999291714299208844311), SC_(237.17857938102811099944226322978545887785784794395) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(257.80809280103207305184069569476813047198271898352), SC_(264.2872416485335151274383722923446070280556418678) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(257.93497274331013297140812145356249918769405775193), SC_(264.18866209518500442242440829074672036513979513587) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(258.9739548546931820518660852055010159363846308897), SC_(263.34584594875064905150634342714310067963348891445) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(263.67195562389468354000986058428191488006575201765), SC_(258.58130473937605184933485458990578346684980965391) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(263.8716858908595303028720889172377314165025522505), SC_(258.33509773981085665168678082212930354380235566699) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(264.71186533685377025683164723249122027569483743347), SC_(257.24756633212769362394468626448633447150598767941) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(264.82326327523712534339606243201155347089083361307), SC_(257.09658102690269725141523127884925870403034047083) }, + { SC_(270), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(265.97321323660996407153519493412071287572848871176), SC_(255.42882075221560976111830813204718727533911903377) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(28.512586144676532901012301904874896673657373624664), SC_(41.166880142362286715335431505282335952662758727322) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(28.722333923212716931206955490584691599543647036853), SC_(40.934819266717423870348243889171242547246985773336) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(30.485834352347615849313977574300715808639613515688), SC_(39.016412663155677466877819477534394946338716035549) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(39.745326465309305463111237091375409052524722115763), SC_(29.809512368356627673394349412492716777994424543927) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(40.199920658043600051543440463961110158087918144042), SC_(29.391623736387655725584930597472854037765477768544) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(42.186669645481270092920441488075150184273154678322), SC_(27.599822668221879834647724783865631662242078820893) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(42.459902322535117655299715699181149378226492029977), SC_(27.357726476298051076891860599769689760491661588619) }, + { SC_(278), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(45.439934496710840701844476064085389747271804679758), SC_(24.783265342597506113141895453195801339608875682979) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(30.695265687024793437469790630080000032955984807392), SC_(43.703051430185312141495493685474640002049109613888) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(30.91145414433730365597071434274888839785657442835), SC_(43.465061712935845730198924228621847938688528671067) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(32.728218244398676889328994594923664986455298661963), SC_(41.496940485759865870284694684175921461397436933753) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(42.244893386601044042389016463848683174435311517748), SC_(32.031653077833565545068455675230307889576613114625) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(42.711267960690833411949033123777427566686307709497), SC_(31.601143181320921849130567042088383815915983511904) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(44.748684643144824789376262194062390370978239666022), SC_(29.754201245328212922084935472929623662756396874511) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(45.028784217585029209292044206599398315322393563901), SC_(29.504522593504206780701928746285580472448484242594) }, + { SC_(278), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(48.082195787452113678144723003360707926133299325017), SC_(26.847332686611313466690931484736783736312265677892) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(53.086222077049593485209277698515538125833167621615), SC_(68.864685153286984013297050243683647198804376907255) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(53.353442872613802624636005557170531942348675368706), SC_(68.580797327702369060354987522302510694388870059113) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(55.591543511337761071579385726343067776027462742741), SC_(66.22696582536166329369945554559797656294156504282) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(67.122809644748709315654761143745476438865006663805), SC_(54.734995470892634757294526064035268370776769718862) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(67.680582291797019180842210288562532081840262342578), SC_(54.204646041184438096198170279889874412938295656088) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(70.110130270455450511612054505880331787759110107538), SC_(51.920710200751631652567287883197104250734113349253) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(70.443250432760664265709304914210922694618400207596), SC_(51.610841105299541870169375417962461880899801039887) }, + { SC_(278), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(74.061311089269961159899583141851785438200600866447), SC_(48.295494709458516229700316972124426782287886379722) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(218.57571740634983016199362304506218470083064824968), SC_(233.34750333011062283038500996968204976481366333875) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(218.84306928448564000879360227739131899166981894465), SC_(233.098960697303203237615007534113147925374249348) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(221.0577306616193925330527620891902596828673610609), SC_(231.01489884504526967886292260254665170764127563756) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(231.81299483311845288691124931369973784750635131556), SC_(220.21529154239049654598588858019319386678985750169) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(232.30684330416929316889426386992935525746219419114), SC_(219.69049673256555611843261338315705121970674860091) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(234.4308142746672914858405583411662540225216815788), SC_(217.40219622883751354270122155108255365136781807618) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(234.71862534556842576163135839704050740194531940908), SC_(217.08814372242632767256851295461103651587340242318) }, + { SC_(278), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(237.79240968063911198592116050856395761333474708028), SC_(213.67267138205713296608369136826198362692410755602) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(224.54342110331054889470598193307962642725940817119), SC_(238.6541382520857426860592793145910062128686428275) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(224.79981817008965956051061445350351654560702965729), SC_(238.41776755963182979102926227171381124359460432811) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(226.92242467207947840705728607893778018053273354525), SC_(236.43420638390137600717416184616630789709761846676) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(237.19414069776302894048639830942426601398353726792), SC_(226.11528059172801655059771273486001532253746045185) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(237.66417461159986064365037719191810530619043835606), SC_(225.61229914662827967603719996355452667842511638568) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(239.68391713574544132191930233052337866182956729698), SC_(223.41759194005585581871740331227062358532855373689) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(239.95737294087174064342277058990599870845911048772), SC_(223.11619505770931675830028605641403399492263259237) }, + { SC_(278), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(242.87420321059414817281647742603004160919381983263), SC_(219.83551173523480364184935732168776709558195088703) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(245.72086472401219751188370127979006640318229794997), SC_(256.81813434615585357645846776367391515631530968664) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(245.92667078307805099604982626037428015522042597924), SC_(256.63662674850678172871050680208228380979990337806) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(247.62513659665179695200299462190629208995968064097), SC_(255.10682310586837900450150057686201609350995727458) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(255.69429396142810541247711684451112498702239272332), SC_(246.98040895937725476935345010847480075344422993981) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(256.05680641487663459268212760862439912317746501636), SC_(246.5779318922237583170475527805178465966588188552) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(257.60685215907150894728159058020615031983559811937), SC_(244.81558412473034721196260906614700740735194950981) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(257.81572561237705424130343320667284065552446925061), SC_(244.57279538038298146124219572749027906841459525779) }, + { SC_(278), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(260.027999149765955947393013936304575044188856345), SC_(241.91857324517375436432529915830873031185787393297) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(248.03503399761754465195105318468965111689143416735), SC_(258.71912124060515521494574550360823438323653006201) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(248.23383893388163853132141143981657854311461399123), SC_(258.5450773754432291434495189786343955841272204848) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(249.87370711707818542407136353722427267947414429535), SC_(257.07707294328364338800564311214737766929857437554) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(257.64104033794629485840533149567116566473051003615), SC_(249.25139793611889269145411778069592188812209937706) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(257.98890908029387216201361989443973099293695023585), SC_(248.86280613164947634113091102340106543761935932154) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(259.47506409007879396212695188900483663875986575629), SC_(247.16030430255043512013790569485159518496943046957) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(259.67516207168798133405753298458159885415155978153), SC_(246.92564239214136117833352512369192259753442841217) }, + { SC_(278), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(261.79182565997991146159480858574342496944298891801), SC_(244.35851357992284681684078443070548587145134619478) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(265.5109266494901604696081585461534103381080113386), SC_(272.08625384067624544341964055799780938897031862525) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(265.63949135627804781767803769351012635295715482169), SC_(271.98597998934413096142292447698947200814936414283) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(266.692485861200015300522890305463838419625154218), SC_(271.12909780951929319897782582785435000680377323918) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(271.4605657899421589191159996819808152919651088133), SC_(266.29449323344149446234508241409250328244965911559) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(271.66362884539897261681364677508512514295776092409), SC_(266.04496592792952211708157367954397438207603451591) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(272.51830910148948057748082789574742738305077719207), SC_(264.94302090882969697932710776491505550525282094553) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(272.6316949429893641674684576593095241439304346311), SC_(264.79006500415315074672414403810293509879219828901) }, + { SC_(278), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(273.80329207299076092920023365373478660516985494262), SC_(263.10097584734615935467808781696962749155248430596) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(29.437928718468820504689811387345446286029387721513), SC_(42.273330857875620521396608723997438647545931612621) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(29.650847890417980026701812293157945301471811139354), SC_(42.038100832624098431009751270237619463468335372583) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(31.440742019694880348950988472523514822807117765856), SC_(40.093313676680675912184742510887846858213809434932) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(40.832290018565340878258681141008573036691278627352), SC_(30.754353506851523626857561162492849715871794001943) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(41.293135313138844655586148361528692324163117823131), SC_(30.330210700287269436800392288645609739372359225277) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(43.306993587329870179233888406882857296046826397157), SC_(28.511280018669389428342121637015639823938141025724) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(43.583928835722179859446114501649197367558307622614), SC_(28.265477379890812781936681824928263102988135252748) }, + { SC_(286), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(46.603970155965620792513779639069605769128120003184), SC_(25.650940520796802328772808300865703025986917790598) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(31.686014311377661726434244146164612639159673761446), SC_(44.879938765539524179763650526875183826388640310508) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(31.90546193754469049924264997573348021207541547404), SC_(44.638691963968703662398115822567794579680969576278) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(33.7493513020851893437755945791663336558628916494), SC_(42.643457695895655966139437166759294439258111210081) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(43.401752634141770449659605724281567643953750172584), SC_(33.042440387406382416142418028645351609833365901186) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(43.874551882067585063675902232764536556941185260274), SC_(32.605502960075055644284963550773324683697354717704) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(45.939829971148322120759084290199908434381960719387), SC_(30.730680736921621582111343086849761980066547188468) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(46.223734754704558719293023702998324526184967640323), SC_(30.477193278887336837516430601400671351907726020134) }, + { SC_(286), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(49.318263000673442478329269541253736817200774946289), SC_(27.778824977871109158477888429851504794842901264864) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(54.741700882897899898661659839498383144908395239873), SC_(70.745753020752646831607109992169106335834800744655) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(55.012869512485616684099539536408552928402896502429), SC_(70.457918482837266968737492788439480673352559143291) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(57.283834025012646230304930792475933053095639746805), SC_(68.071229711708378025993953517297700150127488076999) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(68.979607347650427058458904421239274775252344838578), SC_(56.414750156915978011267616084180923781070851931172) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(69.54516583128973017602132156100231544010920958816), SC_(55.876613346196312411874019028303354250552543058937) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(72.008473767595776896245286189065661180140230618769), SC_(53.558907398379311570161111733390646905777928902551) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(72.346204135289026841917599771827800689692925648031), SC_(53.2444261719242676482469940024851951400886163238) }, + { SC_(286), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(76.014068834038340389475495825553686692927857705254), SC_(49.879242927454350453166416919123953235269116019617) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(224.98787963930077382903112077548527903534621008765), SC_(239.97091736732368239381526070933910494672570814802) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(225.25892759368956430747107277371672725810527957374), SC_(239.71867723200113912968706369044366071529297883888) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(227.50435863638616188069275823021548789714061236093), SC_(237.60383732611637236933287981465493060827162493249) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(238.41367314409638849998698119090825124043351735768), SC_(226.65018223898340503913830216113198252466282325378) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(238.91481473083413969525508401236480363560939978829), SC_(226.11809627457021377405505963672222438886363227748) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(241.0704148090596754175716034060611155825374667902), SC_(223.79817957251571055252251682980117660349928543215) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(241.36254596099969452210416716493916346084571705199), SC_(223.47980943730221458734130474398132818009483184816) }, + { SC_(286), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(244.48301859317335883965374296861830703090757346681), SC_(220.01769066588162335631875985242688078140494663376) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(231.12256870790038349829675194849447579235379844257), SC_(245.43512472085416323589778215677498370532203107653) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(231.38249730425946670872794728427729234055943691273), SC_(245.19522084841246593298050676322247961770983263077) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(233.5345028904515833372279499918601757156859600909), SC_(243.18225089155578035858459254772375043398450101126) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(243.95340247033464190848938163522903390102161454576), SC_(232.71614449303744243732959253219936298702408157249) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(244.43040503018721751008677835904737233811525677454), SC_(232.20619666880645611559431554659224441862166507965) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(246.48037128724028508110125155605420182508086562479), SC_(229.98128067090258046789495357914528118751556619621) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(246.75795548782699048557874823432845395100253117871), SC_(229.67575823412257302822197826347130126062505857051) }, + { SC_(286), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(249.71940793385469548756546870406811649378122664394), SC_(226.35050131861603961130839986090145050069002057019) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(252.88771711295381731734807299155850459439356017949), SC_(264.14394653314629751663580793770599568990118613723) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(253.09630517494010689162781440384337733013548929738), SC_(263.95965382493614427857600936103106541117924228705) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(254.8179265084064939756541645120136443460717817319), SC_(262.40667652925258988848296918185169456700230530561) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(263.00298479830390678725048971689665161680576485445), SC_(254.1643669426960895363829975567676762645000577737) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(263.37098837874694680532197013464925446109177628801), SC_(253.75640298462168112300177668680070230309868705492) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(264.9448602824846231094453967353429122956863013833), SC_(251.97025723766218422589922404971425603235725680282) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(265.15698984831870614545209834468304057729746752303), SC_(251.72421777635251361839636608152003373684488499786) }, + { SC_(286), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(267.40449045205963341193993440155484509946197294517), SC_(249.03486193312631843938476824390992111157628371165) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(255.26549442456076088562242981549221053290625570271), SC_(266.10266722998687751479441134937501492625531668217) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(255.46697868545642302205120086338245668031447030504), SC_(265.92594064594129642715468992132956811370105785715) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(257.12914700934406518517413950538074981010190540596), SC_(264.43561629613269032592113737789668195765290506285) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(265.00809519030232097037900498398296415245419748532), SC_(256.4983323049061987067721017685387012741320446645) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(265.3612527502386323432777163477072534258260766565), SC_(256.1044563022449259295439166218743567094053852265) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(266.87035831715324189614469647744412675038804189971), SC_(254.37903470558726985826380545370630703019622572245) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(267.0735930872980858125650883598087090694232756886), SC_(254.14124191038449010445416661194860712149310893444) }, + { SC_(286), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(269.22419993050965037567254136077585790935130738659), SC_(251.54027224632891047347852355379701011966923486686) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(273.21445413691757415293621405510325905887164890102), SC_(279.88457524580031890600428699030806258864556062464) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(273.34467928683440020192013253873656834109948597023), SC_(279.78263190570411205975493004026869178610285169038) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(274.41148436389703538537729868583823451872930161975), SC_(278.91188817964322634465779130572365722570196775583) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(279.24863684139545311278728785286466250125815138988), SC_(274.00822608056691125886595720953930240194269346029) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(279.45498424636506881891135916725933919426625585479), SC_(273.75542628973722641562881119513734853738066626985) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(280.32395266986395645872908087835795472486993262608), SC_(272.63927580964752023283641950878649132759447010976) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(280.43929696368562981544594461359812557065601181273), SC_(272.48437784059345807876395664483595318769795497096) }, + { SC_(286), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(281.63221346756413471946120146373684506553362546227), SC_(270.77426999842773285011093662839855308764286705821) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(30.364531134971434212927461454234482950692103046068), SC_(43.378521473084369621864382391597322043784448092551) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(30.58057740780655922179882755214433894651643280213), SC_(43.140166470051492942792263759873172934957861573399) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(32.396497189083098667572624961391737729278844952092), SC_(41.169366106651211491044713966694576854825056189523) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(41.918264937050202273873107735032555181061154339662), SC_(31.70018241108058143968026671197754921895898291706) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(42.385274289679183028703881479964151258149509069038), SC_(31.269872637957451484948300834327049092249013513541) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(44.425863939953900906474428781835979908743051330192), SC_(29.424191348466009802640102496408895881980786155987) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(44.706450084197990772924974230081026161599477959097), SC_(29.174734148273742039786616963597963577323232569704) }, + { SC_(294), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(47.76594103851471663015596336905161994199008902288), SC_(26.520684717411754954120662133716991520599560202365) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(32.678057606463216704612777502162130428040384200261), SC_(46.055531196339167903037495576039182887660250257762) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(32.900718899667661839021239621353175106448105591614), SC_(45.811072700040226571405200077839392140747390163654) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(34.771355383398359369273096949000944699166852556749), SC_(43.789102881800238411872955149905317701943843703848) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(44.557595934472628490100134142941768097949520425702), SC_(34.054242841519899105008829995575883746728547096241) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(45.036730408277664881321340642349597508082677718388), SC_(33.610967484231580337885622359405303669193935243258) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(47.129481577776157047403364425262697936399606681592), SC_(31.708654317862392966557941981600934925433378591851) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(47.41713847386880283182945552710677422446954281384), SC_(31.451411345134916028105035310444095124116442408589) }, + { SC_(294), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(50.552208552176680594199029580903954182071583311981), SC_(28.712442868527467632819372574330282989382021904773) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(56.39874756819723797982248569778031923844093250395), SC_(72.625252899116151684366713652781917261644479536191) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(56.673809027194794866061004963344938470056262394308), SC_(72.333526592843784842981923329931982150125972326496) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(58.977179976008243032160525095204517534007697174456), SC_(69.914437634534842211548794405249150868730856604371) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(70.835174793442646296786215476123627727840679440023), SC_(58.095734681961855712997367637155497276424761238917) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(71.408410805725500770524610488543224741634894369701), SC_(57.549918881371290880983202389288111306836687012932) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(73.905008653315545626638233159228101861014488624808), SC_(55.198913421657694002436368551967793156527245903777) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(74.247284978097751822793627700533888841204738177334), SC_(54.879884417020979920651884901554113425537846262692) }, + { SC_(294), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(77.964258530945998669777062029750729732879193346578), SC_(51.465561302556372491502545319090127378478517153863) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(231.40151058997570787414316905402030051963964169881), SC_(246.59286283226069355112442973459081311953377666307) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(231.67620314985848621894199822957669702786016126836), SC_(246.33697674219641091040269343799482937195373772635) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(233.95197570724482567222818440532334970809701057748), SC_(244.19178738473516884580780495633591781069143479939) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(245.01319964123809339350711772416817554851305343516), SC_(233.0862252861831499238500353352632693329858405248) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(245.52153278573991023039283578553774227255202751012), SC_(232.54694961966227189609906838993904243140419399355) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(247.70832093494452408061848786696357225894449062643), SC_(230.19585705832364349320802804883196479494633772691) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(248.00471184087066507020375909577260178331693431084), SC_(229.8732294883095713025775447358118199854026781072) }, + { SC_(294), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(251.17121905434433076438863817684833110502462706645), SC_(226.36511571530497867458949115290989398197839635893) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(237.70311986948274449661420643408991879114773590827), SC_(252.21470780643275390870884946647783422732858013515) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(237.96653080439163686291591646536811913138654439696), SC_(251.97132003406614170971397603918960433361132300203) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(240.14752631464362055004186539895397662567991157867), SC_(249.92935097705505402652294708830824977872474084045) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(250.71156365494231173316456727331456294435278148652), SC_(239.31810960814224705745457824332142239409005483587) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(251.19543778670355897670473248205100804306825657815), SC_(238.80129235718468660542982611395178506901885361429) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(253.27520612966263154862271045622318299478165559609), SC_(236.54658840809126860606971791875842111857956158546) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(253.55686103849685409381898552078061929752087754612), SC_(236.2369979500006343726359717346417422104091777941) }, + { SC_(294), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(256.56231029221178464977848855817458316700147697309), SC_(232.86779015572791525430505441892367506050900545628) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(260.05567643836356706610879542426409251662922970661), SC_(271.46865218765609636341029842600307789789773997896) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(260.26700769132778598178429607578410595381316014523), SC_(271.28161334718490085382730216765005506902419914678) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(262.0114618601189869333050919070441865539874652778), SC_(269.70578604609526997495704515330560492007709939489) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(270.31080843163900242489653222553930951493918978635), SC_(261.34919337332635715256791442806344971230580835434) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(270.68422645332707010462863992709384025289623450877), SC_(260.93581898528070414505575930027801665326540708728) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(272.28159093686983404391677266090598507009362673097), SC_(259.12620732726657637221928809828592610328605672822) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(272.49693090207344819314550414594692432090817104149), SC_(258.87696257050858462607360824232376512959835304645) }, + { SC_(294), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(274.77916140767813821971786914466892809474182908027), SC_(256.15296507069349055239359705780606702477372592506) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(262.49702118893152319601303284074794553575663365076), SC_(273.48514734139249228965092688470227758295742229153) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(262.70114738360773252302223819694798949066005879353), SC_(273.30577561068496648772539199011050432701425031437) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(264.38530500607656152757173095845253898961943183081), SC_(271.79344323301831168458943933549931115441201141453) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(272.37431482452125731149039804437258097542943465071), SC_(263.74610326574870339824442646537370596536042132287) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(272.7326873028265697961197596475156483584731580489), SC_(263.3470167196218603085664468876767508143003115558) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(274.26442186405513728787980385268005475111112273841), SC_(261.59899526964768245559050774347373775905677618183) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(274.47074934029110836459857695820331743681313599044), SC_(261.35811535327170405581004303298084145250638388421) }, + { SC_(294), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(276.65481965664873383719959080373623287609661287849), SC_(258.72377900888740330124444721517626653968572559929) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(280.91864611088221790415858614360296460307467169965), SC_(287.68223472411177895546697162615684185444420400502) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(281.05050840433724852870392210866432261231453382017), SC_(287.57864564709024626975256849304965486132567490164) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(282.13093069436533926742226475022722728965608420679), SC_(286.6942362115925027927261506326129185840425194209) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(287.03619120258383410347399750697471857133002556587), SC_(281.72248039313864773049637971031717974541086587604) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(287.24577656658714603071836161315550096082279805048), SC_(281.46645393259444747973011218651949041771493176892) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(288.12882959237824730752192773802215547452628276779), SC_(280.33629739453555843273773851681047859063933375348) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(288.24610415885267553789528374876231568149748160188), SC_(280.17948469429508866405120913440033527272657198047) }, + { SC_(294), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(289.46002674318988088392120011833307089412185955354), SC_(278.44865525240979829149806811945810074734530411151) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(31.292342234747843456190454977173947286290382866553), SC_(44.482503170075512836709258561044920150729559180716) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(31.511473121966436973456741232739118598809593520023), SC_(44.241065564539626208602482051510117267757260273742) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(33.353065489657043872092200177971252352094399252153), SC_(42.24460441095398394217548817228807559429863993581) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(43.003291367332386881497899864433829958356656169104), SC_(32.646959004986568797194513986422501336458749965545) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(43.4763812713323501886891828319727708044066148467), SC_(32.210565923425271264829554358751229433339439224976) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(45.543339759511410317017000113490640633802855912558), SC_(30.338497573060964213882313142082084812612460450806) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(45.827527228387683147855595707519902026219955509897), SC_(30.085435576027884982243607008901305128295633778647) }, + { SC_(302), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(48.925931129397044024840848120799109418174722706508), SC_(27.392413611735936911785939888042177084932337593133) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(33.671343004469466437130326850592388489877411107669), SC_(47.22988131086080387806068636857080920202071931145) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(33.897174317527715217828830443100602231161649566257), SC_(46.982254663613084973129343455516594584398691316157) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(35.794195164479201228308225926647102820681136493033), SC_(44.93391144778559126001075572910026486354583163779) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(45.712464537245682571778940031958686777518108293405), SC_(35.067019255561636589052216209350020244820658209391) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(46.197848423344506712109827209195135485085021218003), SC_(34.617491922860128766830933819444702049682042687907) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(48.317700140920595635321590886076499934351619742815), SC_(32.688061283268559105528169102602551705547652752281) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(48.60905821472806864980166672519117312313200502406), SC_(32.427113910186825418776509124576882042553814059568) }, + { SC_(302), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(51.784118726544460684269758384467019937965942467431), SC_(29.648099762271335147864169961046958818809001159165) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(58.0572985154335089748148038572708853533854154552), SC_(74.5032484152062239885056494257678843244091196993) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(58.336200036474502653484068137003645324915416334958), SC_(74.207683052090313170869662548150911518590873190181) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(60.67153857110073132411961111973350101628963139325), SC_(71.756632429171658182785172546591736041700381657529) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(72.689561891845918813641687512375296819979313186345), SC_(59.777899169929246209391540331841793755552760748683) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(73.270371522420506655501602700801882934553339244817), SC_(59.224508366468674955408593192560505321802769879678) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(75.799808335881713441527234006411817254443047561274), SC_(56.840654846014731339719114285610193540886963647557) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(76.146568982527270379299401284395799943742870964458), SC_(56.517139794660362279298950733468855370786900841832) }, + { SC_(302), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(79.911984517789259221595761817865603053763281916454), SC_(53.054345329713257097986585754784264508112656135661) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(237.81655064518486241552900573562634174932783242277), SC_(253.21339932563664332577492581901698654696838791079) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(238.09483843168554944714761604857794684349708542695), SC_(252.95391673064911502400539275422890456178085819654) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(240.40054174101000148877597992151905127478621699176), SC_(250.77878910010458143139522720886105812420502112006) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(251.61162104207688373352587195995198014229410321942), SC_(239.52337392319392053220914935334673903378245197141) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(252.12704831483301474653106066676491671415998445233), SC_(238.97700588691109546577504102762955471049554908349) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(254.34460145186159018312664363341258700321597825077), SC_(236.59515990679523661953859093378244439626826909928) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(254.64519424421830439494381157738425414947331940339), SC_(236.26833264702471323242559230797885471493976811698) }, + { SC_(302), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(257.85710905003433329198295139722721956217168147537), SC_(232.71484875732819534696159015685501733739005187597) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(244.28501760885277386939391861154227148157985983523), SC_(258.99294447301436438191720374524623953622675118147) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(244.55186369090791553014585616553214930301740815475), SC_(258.74612007414671320110746009596626269921387859109) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(246.76145658467984117127414433722949093161738392499), SC_(256.67554493750567473608908755942748128629189815697) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(257.46866889538594922811338154772763726300427218462), SC_(245.92113124271226227725728301415369518060251721501) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(257.95932147251472045909788792903119310340112004991), SC_(245.39753757940691700991882860331357096634780157485) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(260.06848742743634363803033206556301345601654418956), SC_(243.11344940982185359609728888137545289209194749885) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(260.35415771077629636203493314397717527572252836985), SC_(242.79984612227331808503655851605834835944734817771) }, + { SC_(302), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(263.40300399743197525690265065940927189412191868648), SC_(239.38728478131606442366749454437839792668756042103) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(267.22469770396138259385114023049642030040746240446), SC_(278.79229626960368029923613905020757118177991739019) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(267.43873491569629429666761294105773506186507609981), SC_(278.60254868244455998156550041828215881303830104518) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(269.20571235612098215553021876962742806723539911379), SC_(277.00418182809231838235869211455539775267851096277) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(277.61780005454468200267214948259675723027754669551), SC_(268.53485295649588595006946171613467364351758356937) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(277.99655895809332392385421000661282091728963076765), SC_(268.11614149046684485579308142399181310865724485711) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(279.61709607809546533564801696348618727126111106059), SC_(266.28338247166331496241810535849178415491793478642) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(279.83560260381711966068713062326900771164421249491), SC_(266.03097598965945505355268272782797978661316904552) }, + { SC_(302), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(282.15208635115622908687851759200919555661298655155), SC_(263.27280878875950734688889770749211328263933252366) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(269.72957093332278384778839822540361664920407245552), SC_(280.86660489058294656818429946885261075035167993189) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(269.93630319318707463802060515694146075321642972689), SC_(280.68462404904181542368726915991365026523514054785) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(271.64215191394071003552105886131753093459548980085), SC_(279.15058281055076168397247087351254758021979286304) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(279.73973313760842693466200440513305439794032074809), SC_(270.99467680906563186691614397477764937780131730959) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(280.10324964937734475330700748646575569437175973503), SC_(270.59045037875754075316420079663438195577479866405) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(281.65730479741707434048337373809036296310908815628), SC_(268.8201359631369514205971263715023843581471331736) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(281.86668270667749796433412897727547934609713215041), SC_(268.57621090494063184787930488863785461965000812104) }, + { SC_(302), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(284.08375653549881679861963857371318325522942790502), SC_(265.90896267883724206025410732240965693988980440092) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(288.62347540477632844174316594053655416944978700901), SC_(295.47925918742221465837913418000787633477001641752) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(288.75695249445879720525593165603742789970821812958), SC_(295.374047140715413090351230426807516288610777144) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(289.85080652586632429223246775482997575032141710919), SC_(294.47615977347437638610253300048165883538321852089) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(294.82324979059433730114032708658926753431587690972), SC_(289.43723484361480869452791076645844985337234676731) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(295.03602863168074420713641143332219020295526615264), SC_(289.17802566008345096219698304535963692891226675259) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(295.93297114638916082266012272267617209155590929384), SC_(288.03405431489162718862079299168289907307616601638) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(296.05214898840347028401051470872046839680681580646), SC_(287.87535309671933759009925849215510250869867140358) }, + { SC_(302), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(297.28677782551279538572719627585853837331884707516), SC_(286.12408692626032435405609503706507505255412315564) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(32.221314229454548819199058429410764648033753635825), SC_(45.585323757281930352125437203094641006114813118707) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(32.443488931061489562814623263074576602848645822316), SC_(45.340844246525305986633214783475287899874607137444) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(34.310414812314064248309066330835332887947949587832), SC_(43.319060776629910586207027871668452489079703039538) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(44.087406810205434887676950819450058547925331202456), SC_(33.594645850861792626418855714030457715232015514585) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(44.566497062775799769700637679713208923201665228107), SC_(33.152249803581177893258865009978267902836686634697) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(46.659476208633945809881126848182331514896372517073), SC_(31.254143504091473293040744316307133643149414482493) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(46.947217396178578639384702847140660803658301787129), SC_(30.997524494637807060611942196661450464011350288266) }, + { SC_(310), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(50.084018870805342061488187673561259030249454112081), SC_(28.266048460393099899367923957296449106515819217182) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(34.665821401153968997810677863198221720278333301459), SC_(48.403038231506591379849291504200857149416747878265) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(34.894780818828451722007605455230058136871393012549), SC_(48.152285253062968197692617116012440608599213183967) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(36.817837645931713735316937424403740470819728614729), SC_(46.07791646530159408824759168121942661617919929161) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(46.866396974029946542427414222113483724335537359154), SC_(36.080731156161647951601541706198325744680337558393) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(47.357947853602948767597703197739275800772492484553), SC_(35.625034397090460343545554607450680333889934411178) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(49.504542338566807304410060193149157660701608597523), SC_(33.668844930719205480585374707104644111668637133796) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(49.799552674237196870291753549588018381385631995542), SC_(33.404242238816119497403361748095963132099344240784) }, + { SC_(310), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(53.014074114590676784740721588343271038951154457707), SC_(30.585714788601785386349350835527871070810191439578) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(59.717294296184354259735159885673200619213403098572), SC_(76.379799005737393810434634083803188764404089969577) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(59.999985201466501407920622357068843345324166104551), SC_(76.080445212023370337479254887937302084655032805304) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(62.366869832769215744575097987017458384256057676308), SC_(73.597854110870842815571943834819586473085186896359) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(74.542815266532036769640971290981226663036134538142), SC_(61.461197027255706397179498638167146967230815456675) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(75.131098712891607434722557020760758209385115585335), SC_(60.900331094205546098314098948632977215658318635379) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(77.69294138824440869074933787859055159468932359341), SC_(58.484063083804927598472967054377172202858906527311) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(78.044127162154165324219095615925222516970079388524), SC_(58.156121269139351353929155740845572856834603425995) }, + { SC_(310), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(81.857344253266152008834143052466878573634880646829), SC_(54.645497400196892822029003002135974115938040987514) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(244.23294411846197401819509908469568641619118216876), SC_(259.83258252282388035702474192450730302238360046257) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(244.51477970663297409158742070787838076842647631011), SC_(259.5695509133529074483759604865096894316288586392) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(246.85001924735992855398158041870832287861917978351), SC_(257.36487991418144294161214526727597306301474969655) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(258.20898098919470816492320923268687527004166638258), SC_(245.96158446869824003972156404715796987618800570962) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(258.7314088167448871082349430659445912981927511513), SC_(245.40821754638382897692832632352540471651449709945) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(260.97932062589283726561048305369676671159077964298), SC_(242.99602386996211150123189286642259266453497629126) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(261.28405973387745345210476892512263915375594547296), SC_(242.66505237818172121677054591090191011738781532982) }, + { SC_(310), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(264.54078009623585804147698611834970308682516921652), SC_(239.06679846692882580787886982985486575247421094015) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(250.86820870070878661910799700037808119986733307046), SC_(265.76988793256051306861471243091871414301890485394) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(251.13844460624053719115162447410997044556773589112), SC_(265.51967230658668057293162306647859538693628072939) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(253.37625786718241363142834193546646638727312232336), SC_(263.42086854996552535552445676659822289766801634651) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(264.22475989681625179957874414006939064494518423278), SC_(252.52516764636299558362771353974490789602197984734) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(264.72210147981139343985956435676409370599434958318), SC_(251.99488690661743997547688265841727781632074974739) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(266.86027661064543927226087492045802049749562534527), SC_(249.68180226644579139006580530123591690402154421018) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(267.14990913238256546386895693938147754954775567502), SC_(249.36423915460527005254767632896422410821655694463) }, + { SC_(310), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(270.24157657078133707153400816758856672165918818708), SC_(245.90889789526294848498837673605936614495051334776) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(274.394738881591729871100309807683813929143643206), SC_(286.11492077497459808681738749002641151332904555598) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(274.61144629531686166085816438261771633457823706972), SC_(285.9225003395988361166274008409362840573255170443) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(276.40064969899725013846669455255992643469639691621), SC_(284.30189206169706196955592936797628117750971606197) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(284.92399254303365888722459866969856975765096858828), SC_(275.7213127253115721067021752607471074803826932825) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(285.30802168858579075780175652858968637267813806041), SC_(275.29733462941458217392065043101820871242940128041) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(286.95142423336477789018067560921897314932320848155), SC_(273.44173417466408270810719761741508198006154381234) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(287.17305523031333350454519436713790111147238553759), SC_(273.18620780869963362515682198332769826409102784725) }, + { SC_(310), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(289.52333469026808651004074838848116738647201528383), SC_(270.39432409731409192671929404073492832965564718623) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(276.96310316105785450029946915160677725817412668535), SC_(288.24708033741728198174801738828637988798924989781) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(277.17240703924339189522848349252663802677033895934), SC_(288.06252498643953021837421538473132767349504616787) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(278.89966046570885326910518325700072626514777421263), SC_(286.50706217360313724056067586621103664012076418473) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(287.10438179481551740281985765382445937930035439126), SC_(278.24402116899542186958160375758449707020101089888) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(287.47297426993568779195731330455736103406785077063), SC_(277.83472271598000571963837842928512536745208277541) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(289.04905387912128170142293944189813933214195171714), SC_(276.04241005624358650037933437171507066781661297329) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(289.26144163716129455031596135845856514122209720647), SC_(275.79548016930263429181382164631275244477691547078) }, + { SC_(310), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(291.51107750889369608165707935000741483124371530004), SC_(273.09575677071015437318624565322340248000058914295) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(296.32891665350358820979811152313778408355389292104), SC_(303.27567377778206904566758481080461145749439422135) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(296.46398708131161127629112521946474036548506239841), SC_(303.16886061002246261287084173452998127650451008848) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(297.57109474860968713682409081537346747169912950598), SC_(302.25767556603920762990813555373950320289736307582) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(302.60983215289045225062084825268469750173484791863), SC_(297.1524695196150422595588408414939758900738274933) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(302.82576177064444905219662766274734134915004118684), SC_(296.89011981450718240949139756303016966524769828114) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(303.73640654528278809562680487790480356042866800229), SC_(295.73251730090432445484965422136640473032385965352) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(303.8574617680637570290200197277712991871975659161), SC_(295.57195273245788561416307203366016221229610320151) }, + { SC_(310), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(305.11250956022734467521927908718826935931277679485), SC_(293.80052330325248124516153356079771798853898630681) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(33.151402398849168978038569113702195927287614461581), SC_(46.687027972824254606149343743626349202315839282971) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(33.376581692629111645023908335422540336524856175802), SC_(46.439545684014435354791333444444921438981587165759) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(35.268515106704995564770272543101558653797730020413), SC_(44.392765324030457802717986336235670574142335185491) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(45.170646358549155890628483970181152239815713802067), SC_(34.543207912439025713824811847187329616865460785316) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(45.655659848531061212680533636443598727745535168932), SC_(34.094886140136541571335337008452525505933633473591) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(47.77432490658009037602035029757858071418735807555), SC_(32.171077498928293475317015200043643815216134482032) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(48.065574045597719181309687077236179879559165847424), SC_(31.910947409300051884903027411413224487015852279211) }, + { SC_(318), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(51.240277661040220644432512400177140892024238262472), SC_(29.141515594068631749134977118216328517751347833887) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(35.66144684456398295857808776565376099191507981064), SC_(49.575047926398009628285739988530976591948008349628) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(35.89349407194733008869176264849999219352198110449), SC_(49.321208823312585942536477327701643617680354630078) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(37.842251944190671397695777486225124292025878277939), SC_(47.221148882636322593510116254629410054885202529155) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(48.019429302639267877193276381146856100728976924592), SC_(37.095342537740726422576279393941156179646354136281) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(48.517067933573151712355321022546366027145885601635), SC_(36.633555714964832770983573037821099781275911013916) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(50.690061208467898169747260292333477153575335463348), SC_(34.650952200287305147879201517573223806786387488371) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(50.988676779193271956843683971278365956642387059523), SC_(34.382741369601049435864537735795861344402194888602) }, + { SC_(318), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(54.242150125831397687650507481883919439153250410507), SC_(31.525212286344255880016942866673394999671937298332) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(61.378679294830728918340167819636576488836878382729), SC_(78.25496029373457112629282044217909714753136667253) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(61.66511086173173093194201261711478553326361557885), SC_(77.95186674435449118491894627723807231019916900575) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(64.063136346469712258991895233494731630411886528107), SC_(75.438140128085816877303285991379904088834602919559) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(76.394978550271099830173782659429421643487308010175), SC_(63.145584648216731833528102897232182189497938394649) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(76.990639854045296775066878467905380328728039786859), SC_(62.5773396094309909892654293565278748206310144275) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(79.584471982511990145720651006557899176903244869196), SC_(60.129073949640916505211779077342037448617226934057) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(79.940025972788873821665982131790860755196262068163), SC_(59.79676236468313000335815574238088151902518188939) }, + { SC_(318), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(83.80042893564440237659733349576277980091708858593), SC_(56.238926180773045704776690541560209529984466206401) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(250.65063889722194579671356217088807244689581481503), SC_(266.4504645265092156004602163201108830547265679654) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(250.93597669049899727378591695105672156604188642036), SC_(266.18392955970524764278904775995883479083998533414) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(253.30037314141188868951609202020866573585137748616), SC_(263.95009486838892303715866520397707928007915401179) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(264.80532032630492728878611981929158290276815690828), SC_(252.40081604419722197390276653623004553211066662955) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(265.33465874338690752176812495293386922277135493188), SC_(251.84054011807840034706429247149879483357840964978) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(267.61253859716199906049336184947858584309899910002), SC_(249.398388824086618063984042072708955566201968705) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(267.9213705986713498548760913944960510272252329623), SC_(249.06332641785040945967194341875533913998282067018) }, + { SC_(318), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(271.22231782183466425595307752737152217413605660773), SC_(245.42087938702596768119072234012757162969257981644) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(257.45264333628043804468380508366063837900798274), SC_(272.54558798194775402552345802293370949153082179211) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(257.72622548932614315479073085288752218905310741991), SC_(272.29202477488841194334928796403393558347290211231) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(259.99189662834680026585333735111194522025505892214), SC_(270.165355297637381512694631877478886451584031398) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(270.97987568959101387658225821512029817195989506031), SC_(259.13017974812318154025527871450004185812136915838) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(271.48382028892045450160855172238145460275121401896), SC_(258.59329782559390788575530282088257273158786403135) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(273.65063116470876308375939646427139912273143051449), SC_(256.25158951104828245441257301979784568955312665117) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(273.94417484460740464373855791923917297367285100215), SC_(255.93011753405780404970379987706700401991519025119) }, + { SC_(318), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(277.0781099008989277718253158175153775845378906419), SC_(252.43254780789351492318022922409554617148049789101) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(281.56576064415655966884153886271056503265704744554), SC_(293.43656500230637587779842461853341173215556898082) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(281.78510388360231648542437802786738534376539095049), SC_(293.24150622615346437134678868944512586518362439304) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(283.59624740978519452868492953111673585584540974572), SC_(291.59894312625787997504579355603105867723509313036) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(292.22941666407195342542725240265782933752141332088), SC_(282.90854183131598247238746304735769555927184661687) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(292.61864814312540301382372463152822385255369486596), SC_(282.47936483643204219076554507930088458124132580078) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(294.2846208098146001517136420462728146219580933595), SC_(280.60121705747994507037644624426230376924851727491) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(294.50933582483919494231137215896930427016096803713), SC_(280.34261103128331642690667580205664159874998691184) }, + { SC_(318), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(296.89297135148804072357339267076715324050017138363), SC_(277.51744644593034434726676095364854783945271321448) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(284.19757997872598455120220311764714908092490144258), SC_(295.62661154264319971121548139628713701402543782128) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(284.40942235861273430871802138721151360774493859914), SC_(295.43951494192653444102325712286553276770288909933) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(286.15780514690216097655055853184868143953183009517), SC_(293.86290672683068752636694774148775191056632735846) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(294.4682904300168149669944810603853899825101128702), SC_(285.49410662147164110374134452391043183297074391871) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(294.84189343166058371203587273653006025567049986226), SC_(285.07980138926130367909111414113912409217500913711) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(296.43971286379941683398162924829728710455419765612), SC_(283.26577382373016309017317316061516549723500878561) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(296.65507146559811363132515029488595423275445736305), SC_(283.0158778621944543428928787057946796590176723377) }, + { SC_(318), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(298.93684519364859432580859139793249670934244613929), SC_(280.28409907854698211482852420083663100245879838179) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(304.03494613058820138170574279352940689326899775823), SC_(311.07150202567899020050187091492199281573777834552) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(304.17158927025013278844140743446301047277089831475), SC_(310.96310872688000623684625359364676798423257835243) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(305.29177935954444497366166167826478549015577997366), SC_(310.0387992263774993353124383326118415422477050891) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(310.39595658924452619429022801473849186774649727295), SC_(304.86816579586733198046622965905183347847690237144) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(310.6149959492708543877210010850169529866209086706), SC_(304.60271613770281525384618215342036480974244320851) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(311.53916312356598936905422762487161750930179345706), SC_(303.43165897361166323902421245649906938456685620214) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(311.6620708618388586696750052085897799953440288872), SC_(303.26925524456838855290611256670809246727460787621) }, + { SC_(318), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(312.93726199349806698247677127878190307995402796761), SC_(301.47792536456566980526273368669562188483859095386) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(34.08256482193419371953558009797764141340195748617), SC_(47.787657753661476029988734823531701627190598988969) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(34.310710964292482007823902875824092385849648034692), SC_(47.537210342266662870430443214635983288162025646698) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(36.227338201072411370238728172610143469805319280409), SC_(45.465746287964306786320600261052898674462866770004) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(46.253042908383200667026546889828227061751752155593), SC_(35.492612344647270553326698333867099256731799577968) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(46.743905422626274076538448298077323381360206297547), SC_(35.038439180633342433102434546424622997842728884118) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(48.887934239914628356475214117199997911812917649245), SC_(33.089251149734955403997364883331518051955108498502) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(49.182647286600859407308310194232649727227570680007), SC_(32.82565417669064110216197408858141265102013250205) }, + { SC_(326), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(52.394776297165727290317385067048981632132780221844), SC_(30.018745971171026406251297629511934874185354443225) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(36.658176258823955714585156385879681853039107175696), SC_(50.745953485852535944894147135988659966966176012538) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(36.893272519542268537101860454821427341503965542709), SC_(50.489066952584841334829458234946546247525226083187) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(38.86740910636149852195907859482860981692720162678), SC_(48.363637710985326938552997889551616563772795326838) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(49.17159532392747088843531919023032794771745082174), SC_(38.110819646460097036108329240110281356675679411057) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(49.675245441873197504714045095398193526601385105505), SC_(37.643019136142101847097629360024540484578818883113) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(51.874306467277015766210631086346786350246220377615), SC_(35.634333355154219145843259023517417012786385604006) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(52.17648201677814908807005940664673887128388907441), SC_(35.36255978396001110589406506797908706229378659846) }, + { SC_(326), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(55.468417443139261968941539432247055570667478971733), SC_(32.466521345572764763893098587867239284740522473975) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(63.041401374640609709065764162008611021280827265079), SC_(80.128784422564348512212806746103519909181422767727) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(63.331526713131705780782291300904768730047609227963), SC_(79.821997963346195766183017187033943433299501584017) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(65.760303036345054434820775426333399219711891940954), SC_(77.277525587233393270367805783894487947407104606846) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(78.246092646844982952444141796823283220097798789371), SC_(64.831021153392279137888468170113602665367451190869) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(78.849039453199022393810251136710756900066528914391), SC_(64.25548942441365339664400327247973866743748811116) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(81.474460275485867512311142910097957684971725654095), SC_(61.775627274692422180928404291593984253882207056301) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(81.834327711781727746828727971656602336902467250377), SC_(61.439000765881625366158705968609347807865114691969) }, + { SC_(326), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(85.741324051682505140053571922586542092830089703026), SC_(57.834546062936354301356189245243657526193903101051) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(257.06958612966456759236598617571466410816880426816), SC_(273.06709417963391278893282918822180303267516292989) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(257.35838224533167491468414903312278808850340993212), SC_(272.79709979437105985170587641678605836202504924977) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(259.75157053303716268622362909804845960783612311211), SC_(270.5344668136950734864518772625048721799749376854) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(271.40067734326188311428110459902400823737264693844), SC_(258.84103032851007536187101245770766991744892550092) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(271.93683976670660992978660102532742481701528906639), SC_(258.27393190476602343859030986111034922046850964596) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(274.24431174141668729954383234771537906597497684168), SC_(255.8021984082801076694628672596775933092639297007) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(274.55718522802217807532052632939630586450921432785), SC_(255.46309639914212110793641382237383547625999519423) }, + { SC_(326), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(277.90180248558350606303871437068122891054046099846), SC_(251.7770114138512835680613188388622869404659090552) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(264.03827482396659528729528905223446949870138887333), SC_(279.32009130213974181716674582105902066706766345092) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(264.31516128677131930268676394252570187683860600572), SC_(279.06322251669218816534567337962576622893719439903) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(266.60834143249038197534530294613614870756903337115), SC_(276.9090365706125803989723442861582875277673863892) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(277.73405286343364863451162760475188835841578759775), SC_(265.73613092170110755366737391397841722546726871186) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(278.24451772327136355920773412132677336160994606755), SC_(265.19273048330877032752521602866318691750898038195) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(280.43960497613812304918523513465692395599113100076), SC_(262.8227572739118893705889162247246738382059681579) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(280.73701066055848623041603666726565917041688501378), SC_(262.49742547320334009052429180440741562722873115355) }, + { SC_(326), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(283.91268073864476688781849254676478545122987439507), SC_(258.95815794784004453348965835262737993152178052078) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(288.7377261286709785996502671860652181695295706354), SC_(300.75726578914443781413398364763856634415265929768) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(288.95967211149536523308909661407112908086990953553), SC_(300.55960187622052098303561269628307485880695922717) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(290.79248066845571764197328021037473995067337453626), SC_(298.89535975212314799016167224720848078474659321669) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(299.53410126021824906575954678218794009702523909489), SC_(290.09651135866651231426969354978478468856325689923) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(299.92846972400730411425846565007868872607529969741), SC_(289.66220064870936847518354189946333694394010962986) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(301.61672836830124871159291437704355396203631187776), SC_(287.76178858520653910608648025875862190553823615134) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(301.84448848100901358190446004876992108000256381776), SC_(287.50014160652214232471002586367912418115766928173) }, + { SC_(326), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(304.26105717496093050973528218046835429362607153479), SC_(284.64211533386781292280789947999015339435152388083) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(291.43296586776403135782531595886047890751730515351), SC_(303.00523399575052220686195296950722876968415622229) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(291.64731487953208019596133252275776849994817338989), SC_(302.81562814784274944285994284741382767954314992204) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(293.41656204199226819305429996443160513244368130072), SC_(301.21814028690535910743068652372692885549535225535) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(301.83148682353933289178394317273598882550874411097), SC_(292.74490530507911397608493440930319639378736023136) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(302.21003738263012740862702567655933663604811600807), SC_(292.32565608329636039689046019633960597891444183692) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(303.82932276276728563520078312385734562890978454456), SC_(290.49018628125871621937984956567492958494497227849) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(304.04761468263947239206666789577485181547119054664), SC_(290.2373615382666388082065749071224981318137393437) }, + { SC_(326), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(306.36111826301108006791102678587924681140176744933), SC_(287.47393129997235773898278078057854623930871906627) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(311.74154160373999806536232452643426813981570410466), SC_(318.86676599057524513451049242928846294345746940837) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(311.87973760848467685843727210626876018606134323499), SC_(318.75681274679742791398815494157372746696096030531) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(313.01284536465846214215045495994868076370176358635), SC_(317.81954542010613146300059413212859307093958211557) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(318.18164026010711995288939529738260933999076264618), SC_(312.58430622067573715623856697477487253565985027971) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(318.40374988870017691297528914083354033578874001294), SC_(312.31579564763290813583373322211569888357682294553) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(319.34126650123773956983229223700491253273074436938), SC_(311.13145367825038538378599364172392324474565133354) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(319.46600285291745679005243316947223239346014999468), SC_(310.96723406196223962771194260917058938558688423832) }, + { SC_(326), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(320.76107262058619731365441129351301419683008369718), SC_(309.15625655131034733118125526786620420452875143574) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(35.014762137650976103405234770181358063739227121271), SC_(48.887252475145722741675208717904890278456886246456) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(35.245838772966806038930160458808833670866325342107), SC_(48.633876214925917116149324267617938833754417925302) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(37.186857641862971142938259478342507172718645652324), SC_(46.538030178926804568089728007014007681222417005245) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(47.334627346715716694244702845466978562924748571043), SC_(36.442828306453999473334795275955445112419612084187) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(47.831267393007389075359688304949930005344206977941), SC_(35.982875354606090698109435830507595906323443537643) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(50.000349639019639317873030085660739186041879172489), SC_(34.008619006728642941135674452503498816810283736922) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(50.298484167469596532125317365021744734713537597772), SC_(33.74159771818398751401514627611851051629009264775) }, + { SC_(334), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(53.547579368940430137431825358355075146812946702371), SC_(30.89767478074416294806402886196193714573878641046) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(37.655969198279967292589762671190854344484684106933), SC_(51.915795368462576347614638351212856647544617584033) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(37.894077141431661123514589595770375471973259623623), SC_(51.655898679828217038344696389273301029462703739793) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(39.893281945383647520678074013029242885481271348594), SC_(49.505410190065393837136865122935137032246845548217) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(50.322926774750457344665613472275129009428595834273), SC_(39.127130787895273183052535592123059171946265131438) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(50.832514911196456004196664473303029287364751342587), SC_(38.653390162446274716878157223573799021823364701519) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(53.057324794585847640174337132152008774690273280153), SC_(36.618941697350760468498314579224969468712248194548) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(53.363016728750607020936098676935939507625831672311), SC_(36.343649111593995565185118713491466841864647057845) }, + { SC_(334), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(56.692942427358695648822284810364125957976831751468), SC_(33.409575400060830453949316878806032150712581640819) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(64.705411580535335110321850717009119484235286119396), SC_(82.001320353266257801973322639846768465499253906886) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(64.99918552109332236676653226032062337615695179271), SC_(81.690886112689658837101414160752611313896143210471) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(67.458336965555527261529256018284302047761804414), SC_(79.116043452766802745291953777190095631716046894854) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(80.096195964189571995943248756932990132709593777353), SC_(66.517468156849338480966273300723188189153221613626) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(80.706339301791410092107519900777865784216982981603), SC_(65.934738765395319723884482907579037794863974371291) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(83.36296275182871076361044929244193098393674022451), SC_(63.423666563374643909354497901399416180552053083624) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(83.727090873446580431618752064522164691778446765019), SC_(63.082777962044307818466824347098819358138433336351) }, + { SC_(334), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(87.680109865179777489091988431757443326644853826957), SC_(59.432276672780686159972467362662100208320135985517) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(263.48973994608546205016500892777948232014620910307), SC_(279.68251734395027206270989054162411312872181024047) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(263.78195211053882247945051070773671194328518483386), SC_(279.40910586598351949926766583628781964004984991347) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(266.20358053932437725513983877722216718022149790496), SC_(277.11802659763079200959961390686437579962127331831) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(277.99508799416745380213409379979523557499161220468), SC_(265.2821913392480589642142174144029757620861019877) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(278.53799101614741881343452882641235697625538680028), SC_(264.70835375418887681086840818409243280053774051817) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(280.87469299186264316999882254865066606274483379616), SC_(262.20739970284191502254100905960014804340894831461) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(281.1915584453755906932012595098682315990162757222), SC_(261.86430751905779940878096335373039716701487165877) }, + { SC_(334), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(284.57930943612806087953010426196391283552116577508), SC_(258.13511933893188895368954329142914193407439917611) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(270.62505932287649673696728995140923220419647058504), SC_(286.09344172448511012443303523716020544588473330236) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(270.9052096957632530498289646877719231851900026826), SC_(285.83330782063910330403973154011472043191149058474) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(273.22556276273916026437881634043193066279459900252), SC_(283.65194184457917405972144494341014378395839733599) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(284.48732577587954174504925756785938717553365816703), SC_(272.34298677654692610282509586452700224840247435593) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(285.00423117635949488341158447434890487034462049985), SC_(271.79314745956299688643204424270526216491074830233) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(287.22724864028157338955900831771318045812534005392), SC_(269.39525497496531333433270215775878297945200072727) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(287.52846898400703724681255190728086368065274242969), SC_(269.06611059158476230594568652668300821625507658109) }, + { SC_(334), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(290.74536113741288566916692691274306283651102877571), SC_(265.48565642405347447929135651692126801575768604514) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(295.91060072539045546660737686578186086925311461507), SC_(308.07705772250320112130810438089819920078705275747) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(296.13511758401101705954160955295975954084685622078), SC_(307.87682065344489508033933134034522669066313673965) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(297.98932617194742614482543505873083368500320633994), SC_(306.19116516139915229778633275194878245133844057904) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(306.83807341399164443187822646645185916924391594243), SC_(297.28519415876011199019251304833494008706311298423) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(307.23751591659610199152155390747998638543656308989), SC_(296.84581252637356781315938013912183341908872166401) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(308.9477868670557198645980297675931536332597656234), SC_(294.92340882340915256586544098526377833657954406543) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(309.17855459535296266450426648377283904704842552028), SC_(294.65875817686155510670358608027699801392477816358) }, + { SC_(334), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(311.62764926580569306991945103573023289043306568365), SC_(291.76827396312049772389587667245090318873994081586) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(298.66922748117701112872425361183223344728710411931), SC_(310.3829810177748558379488685862210077589656342342) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(298.88605242550760906541340044546393923383921908343), SC_(310.19089674534614214946289626788275919116453823136) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(300.67590869753136190229801457069360906943742615886), SC_(308.57278521805033131224689768055942583341998043188) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(309.19399706047100287683702228184646493676766573773), SC_(299.99639106162581434748781002136226768729969220157) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(309.57743452436116684701030339467036813158307375444), SC_(299.57225833603340259474433208561186640275217280691) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(311.21792207890902823869922268743240471003432134686), SC_(297.71560895073919388267837566426266615757777266375) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(311.43911117924760909790610506735195593603543617357), SC_(297.45989134793528649844901138452910670618321719097) }, + { SC_(334), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(313.78395178591265206378894579254915551184313148584), SC_(294.66519870168408920490543370928678844370154266198) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(319.44868220638294709724710530837659142209178508638), SC_(326.66148638612594871417808499280532128156280675967) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(319.58841196110199028777763310091577166050130572678), SC_(326.54999262940963724140856504062159745860839986198) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(320.73427869209406491399084673078435841922512619886), SC_(325.5999279235626784997469544823825373027595385931) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(325.96689928320635221712939424391402272760173051115), SC_(320.30087441494617428597215802739189282683999255544) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(326.19204117108264802376434302560207890893955873398), SC_(320.0293405286222171930292557312289086511737998973) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(327.1427407301934424604948740958144614829289806877), SC_(318.83187733602110224359212907145054463719225685149) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(327.26928269587912949289413709879748959142024321834), SC_(318.66586424586687624285782001540473052842373771702) }, + { SC_(334), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(328.58397660694419229789807000989924537059974732008), SC_(316.83548255286664937669445100332261344247173595561) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(35.947957331249102208838976018083922493472169809344), SC_(49.985849164864073166831196274439649211425432931599) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(36.181929408823787877607674219652827688796075397595), SC_(49.729579030342921809737117759879728134829087009509) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(38.147048550524609694357068555738421935039291282155), SC_(47.609641927025143208765135001745739063186813152884) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(48.415428719231224405901744477655903982766348030646), SC_(37.393826793769470250529715689689987593638943733335) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(48.917777364010657204616890837860002091082461018238), SC_(36.92816309159998653668689041185766056597019335675) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(51.111613824920917379125717182257777272796453476216), SC_(34.92913833115447706132843297388910847052362348201) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(51.413128930460849199270749639990203344824629671629), SC_(34.658733763869945169914719794359874464417130971747) }, + { SC_(342), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(54.698747610422548916071590366399851397859395192733), SC_(31.778241088146206313477988406069061844013895876809) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(38.65478762802065807930376489294399763000519347653), SC_(53.084611620764258041453061049978366651466860145144) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(38.895871242909995346161224832629496941780041656188), SC_(52.821740716661522756376255144046661712526020925279) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(40.919844892856130485349213183783201335768660661808), SC_(50.64649193595597652857790158572388067340585899396) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(51.473453500221400964864802254579914966596155673945), SC_(40.144246155326064797032687426904230577453265944271) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(51.988908815755641011420809719815001884918447109139), SC_(39.664636350872806178797143730419997564485917430576) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(54.2391600864738454645800549677820467346099597795), SC_(37.604733314015658089566986468802157615438490893337) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(54.548326374057590690328918862804282763096504873242), SC_(37.325963867558311920006368081730937961175939332131) }, + { SC_(342), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(57.915787478452396648584273328893615337612038491092), SC_(34.354311863610928558490247769679540226966747085846) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(66.370663873730449583674445777932984970503535155277), SC_(83.872614129995102696870249597218268013629285789057) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(66.668042864619661473643607304218851177716927404868), SC_(83.55857562161570540621942390122477131317780561416) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(69.157207158005585919920612878677726976592104083268), SC_(80.953724725795639520173509153385769503688280095959) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(81.945324622536846495642331140043743950220244832187), SC_(68.204889558278604359467339955625050660254968577786) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(82.562578701885546896981925161336088099265599146585), SC_(67.615048346313869985445156949863809905296276182463) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(85.250032530420990372112266993878966915282157085552), SC_(65.073138686867561424435117995577743666563921851142) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(85.618370466356015590292899930053975503620093022694), SC_(64.728038929713599173106407465889895343129100016556) }, + { SC_(342), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(89.616861853077229249440206662514485089614259344807), SC_(61.032042433539845344743259761849176302021388545659) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(269.91105721008278428096563782592212407193380054837), SC_(286.29677714870215955232684079663510007118748114431) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(270.20664466284155873449035114541027941646348045444), SC_(286.01998938702884696649026325662047851923283986425) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(272.65637411715653838180015653910821562975828401818), SC_(283.70080323126742706775716617515337318359577306464) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(284.58858609209912090286960730414632692397689565879), SC_(271.72426523772651888119399457101384783300183055789) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(285.13814929065074686791361320646884596041798117988), SC_(271.14376884676434811369486848973021799563645331915) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(287.50373212646336835376288043251952457898232668887), SC_(268.61394294210999044162663906723136664035816958797) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(287.82454180584185742402405560952730872209864711211), SC_(268.26690824108256411902114275166078529365713494398) }, + { SC_(342), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(291.25490952256995072111402401847937757267525767367), SC_(264.49513244025504312131288053780223605094041335896) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(277.21295560495924838381747359058390327812167184386), SC_(292.86568046845106087577506561684963484560993314888) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(277.49633093456256717193934617055113339582465561583), SC_(292.60232045568494502440830383112936125171742737952) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(279.84353286094973908303224148101895183058877920668), SC_(290.39409884038043396667737268733716763640387347199) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(291.23972673837877605274739131825135776752503988335), SC_(278.95071497132850319361602491182516324114699097863) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(291.76299581437587358689825489018282965711414008422), SC_(278.39451356401105935503294231606440535171858145655) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(294.01360973603856430213935690092132432353144203498), SC_(275.96903504923511774811677584055208094813138074548) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(294.31859909401012455591580882705705009831446440317), SC_(275.63612363135886629528165818107419914640839096184) }, + { SC_(342), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(297.57621884608040405533344123911707197444540188228), SC_(272.01497563485360437614780686347874857560965042813) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(303.08435188958693572809367096503669973547558465018), SC_(315.39597332674134910059314473706531122901173233859) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(303.31140889863101289677952343253123409182215175275), SC_(315.19319393215828681329770458720679766633620090196) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(305.1867620074495426367096085583627267744791191675), SC_(313.48638119363133408118425623285173270968328337545) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(314.14135859462269531713061065017180217375373447834), SC_(304.47456470261953061624723620996363180263791406384) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(314.54581444921832147978974109655209816785772053373), SC_(304.03017269186943725939567156110855314964391340601) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(316.27783387916381752966349426884743226253770086279), SC_(302.08604022085573936534503678158963063048910809445) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(316.51157309275393339621141672449659607169662358317), SC_(301.81842185304200051214481412437034944841870402323) }, + { SC_(342), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(318.99280130751197360280787405870458303238178079292), SC_(298.89586892876687372247055041328068362985915592976) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(305.90633346209665732526277349744064285967402190025), SC_(317.75988394233645050825671198621288057881523889827) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(306.12560474025272385534529973967203923792967390673), SC_(317.56535095896050155113554862174582162205241941348) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(307.93582399998753524172944542642326471317157630305), SC_(315.92686255305972446565120872813683380678158838608) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(316.55584567200324038410660499426093298156573955657), SC_(307.24853929384166425238817825400423253077307549149) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(316.94411156583221235218726036468369757566376459972), SC_(306.81958138383926254568186326424736725820511067445) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(318.60554701632495472208431099305540829404072922057), SC_(304.94200565088964894467844861066187654369013683099) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(318.82959846403801580097863847521149239107589922008), SC_(304.68342982044901911243738872482822142890833090092) }, + { SC_(342), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(321.20539752959062580672792943426999399864268198469), SC_(301.85784982091436666227196269038738272364310485278) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(327.15634832304271906173703666736954405827270029263), SC_(334.45568269206311343913011962643853295792906449412) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(327.29759340046124698393681687893177039209848039607), SC_(334.34266714613934099574672262500098530575008034944) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(328.45606611465143390791353875164725909085947320214), SC_(333.37995969729617706009652876216567293347371565581) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(333.75174881989770564748418921554260554389225084672), SC_(328.01785498211336583678783612041339051034368027195) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(333.97988633401669590847593034631895762079889184499), SC_(327.74333403344046619331132651051154281821838373295) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(334.94360842499540249325930976707902163056810211247), SC_(326.53290731184210168932229373500838232015209793387) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(335.0719338526350435656099261267831914534792585115), SC_(326.36512235284868988736936886468373154762694939744) }, + { SC_(342), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(336.40600698538778266860308214615155040789608067844), SC_(324.51557111806707616583722639401022326879056305701) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(36.882115543042755745185184491151570775622105820887), SC_(51.083482694062222774521942015205283108385971840774) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(37.118949240843915411761551101467194868031961182466), SC_(50.824352436268474245647636546044848901770477508343) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(39.107887495290645611892945004518696435108195144722), SC_(48.680605010816499368300606300355126209377874007138) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(49.49547438040086288894653705298212434546337056341), SC_(38.345580489846034220855424427264878367823167449225) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(50.00346509970738176884210579516879043690225157793), SC_(37.874272658247861200146937390851674975737247933683) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(52.221767030234034775842706201302375940593309948304), SC_(35.850768874164812036989115143214925061602698863456) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(52.526623240649428028526134204581849571976988358145), SC_(35.57702062342072095039448326782901026386031960836) }, + { SC_(350), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(55.848338214677788492473662608616068588372833851211), SC_(32.660387517996378715403591516068843905849708980764) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(39.654595727396615846570815167213138280540105409226), SC_(54.25243807387985810017272915144245079603891004622) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(39.89862026524202439499348306226239893424400393087), SC_(53.986627637102600722882500904542059199491114367507) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(41.947073867266113945652073172295177018897100560016), SC_(51.786907073445184696498139504446448160321093175715) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(52.62320360791182541617970291589472771866328917655), SC_(41.162137676004704738395315341021313818554492464395) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(53.144457739080368807244193557646943002932942449894), SC_(40.676727146178192285735111504222105474896697199665) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(55.419853682475183875575121926364682387500574622446), SC_(38.591666850260360588708030076675437000301360522249) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(55.732453763911641845147111567628840264716076845817), SC_(38.309461216909213535005368735294732572365945832846) }, + { SC_(350), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(59.137011358753698182322068061375903808357721108321), SC_(35.300671804622644817936220838452254366809318129847) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(68.037114894170418935068539036161668108839012414192), SC_(85.742709117657421380383610754461035209185339713757) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(68.338056907110972335345854636580906049742365492161), SC_(85.425108334178362088331235569874726629319080365668) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(70.856884438729544359308073111838045148271366784838), SC_(82.790598603999014549591281408562898784901780889905) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(83.793512640757299024353486310661319794203386189923), SC_(69.893251356892197267497787783759314994974311271493) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(84.417794668948468177633563522799213068393462942458), SC_(69.296381166218547728445385192776645680502302158496) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(87.135719638620020817094247798382888331605606078842), SC_(66.723993608749046651728940202213354931656170131791) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(87.508218297391192378927335097905455840007424450508), SC_(66.374731848449149169462402005430331920721146807721) }, + { SC_(350), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(91.551651095831174620610424326872457945978467438966), SC_(62.633772174041408041945852634196898630997513492053) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(276.33349729583105936773606995546608001815775058239), SC_(292.90991421325477196796010116226959705937956270564) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(276.63242070137769711562576702420362338138746365566), SC_(292.62978954860428158474081640283419429132602578637) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(279.10992391332631297770298050662285052298293718226), SC_(290.28282403871764654367483721934488895137708705618) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(291.18120348345107306636726426740424179424047829788), SC_(278.16722015431383720832708612450558239884487945839) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(291.73734924845863767051057063223156366549570054397), SC_(277.58014250552969897835047706806322895758047549929) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(294.13147602512908793674865096313539282681211164724), SC_(275.02178125740269232152640295585503512515309107214) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(294.45618386263821576239754390276740117711747843877), SC_(274.67085002894789695197777432862283820319304741569) }, + { SC_(350), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(297.92866946191611984743260133710683737012556900869), SC_(270.85698411631021533354814640731152862365541160967) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(283.80192484205991556230145041003981674433256853496), SC_(299.6368463544503276850526804500517781445079713527) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(284.08848753704556866787967907533001730828098908023), SC_(299.37029787639229449636668931184756838945840672666) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(286.4622255844031732948618323149237712140930270653), SC_(297.1355336668733097015115394672183732154243100786) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(297.99128618291435768227375223805932129489537043341), SC_(285.55928504695033848726563739503869171897403420646) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(298.52084475761775036337980603590152726472435104183), SC_(284.99679565445333934090898344987593192758088208041) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(300.7987330717785822007922914778026720840324420943), SC_(282.5440527010725237367845820212766124486661881938) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(301.10744739969331897225129780248260497262048074584), SC_(282.20741820274448459090903799776154526032942650258) }, + { SC_(350), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(304.40531766067510953647908947377572389601658200488), SC_(278.54605191798753126314950599430036591993474412516) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(310.25894897306988490675838507233226878379954901347), SC_(322.71404323174432212828268434624684521937934779482) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(310.48851648274850242049339328524699096588164168511), SC_(322.50875125954896973841333792328390091916761297882) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(312.38476753897817600341793337711986675589578482257), SC_(320.78102841833629153864782355874255480215286599775) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(321.44398078944135579801717761931060800729639796793), SC_(311.66459894876376239052940676293322218356946539166) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(321.85339143630955588920813060338243080279327992961), SC_(311.21525498618871538625076450356483893730280857073) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(323.60690478722752737489299293600432289268985563353), SC_(309.24964741504484039852581517834513024479497484226) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(323.84358062822391750959490037423812392120654919435), SC_(308.97909601267162721799160527755098147369308762253) }, + { SC_(350), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(326.35656384231262314136190403274249440228509150926), SC_(306.02484994183483374322140746675636157576900748799) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(313.14425428137740992572723676439891807643538625165), SC_(325.13597227770209425908121261627248172659874267128) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(313.36594333099380504494635080750862529901225390264), SC_(324.93901925283094275484694053695811619071703622926) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(315.19628806639925752675527728874450884416528724941), SC_(323.28039210165868884193549022326082370466267633585) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(323.91705576197789035730552670279468581929625849625), SC_(314.50132683800778086875814274536875263141872785001) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(324.31009366137650820446861663819062105059517669857), SC_(314.06760002290980056807388577772643734923516667734) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(325.99223166797927547084365552051342926728779490064), SC_(312.16934230977456562393657803236810480195822975703) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(326.21911185780708182365302014954800319253004484461), SC_(311.90794166972154462431621109228314270289397287898) }, + { SC_(350), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(328.62550423030150764275394060888122569118186028523), SC_(309.05183619824552652607189488303830309322763558953) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(334.86452148680906296609948911303772091007557469941), SC_(342.24937325443476551030868799169808446337736387495) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(335.00726410724336394288274181130910083342788466744), SC_(342.134853976660451368556365039614073031847275849) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(336.17819518046913340654381333902224487529055396044), SC_(341.15965295195150453649254683401749031317679841853) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(341.53620315255874512540896286298441637484349750873), SC_(335.73523342756435671940367534567141584539152146771) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(341.76730095518191987503440266416234981421226033497), SC_(335.45776039570529246414873075822865685569336708041) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(342.74389087999451835019849235023539521061825603679), SC_(334.23452229603380466964069252571013876503116289297) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(342.87397841416858292348684975864517262038812477764), SC_(334.06498631226493149524792842081281318030571263219) }, + { SC_(350), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(344.22719483241411554797762972493763170811728612132), SC_(332.19649188628141225713069984756417822374164520141) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(37.817203896752085733190204005160717404732815860485), SC_(52.180185949457209016295444528418656882792130550537) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(38.056866551255008709133402114804012249339748318531), SC_(51.918228165625836116140321038419826526361275751119) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(40.069352376077532490745685756508964641141197874708), SC_(49.750941572948233208181129702071163639955157693132) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(50.574790128215885901091266462500471108569303547007), SC_(39.29806363098470162808649889586098624514447497265) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(51.088358670515924585787185274627815332884049548005), SC_(38.821176012021951634803770972814777148072957279893) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(53.330847197471272174957352494467343095164473166282), SC_(36.773472678358882524829224130305118809737534126359) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(53.639006391321124919372470985411177203373417149481), SC_(36.496418980443936978263136677574602848973973574922) }, + { SC_(358), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(56.996405116214417251261738612494316765307803463309), SC_(33.54405996970741527005078041567232004658468808156) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(40.655359713659832562940569102917560045392844604914), SC_(55.419308520016915023190247380678195024023286531927) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(40.902291615560117405810815539077147135951136878073), SC_(55.150592047862505263675271956684201633122745901) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(42.974946155695190877812100851887163547446346959144), SC_(52.926678354820309413030268358354660440700723679608) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(53.772203606258829668138481496913449061553125589648), SC_(42.180778873153906354073862442511787871314292218183) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(54.299190524627875407682495788583646256636996751886), SC_(41.689633730603312712329604058896035642878924839781) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(56.599444569292227053871977727422076241646598035558), SC_(39.579703305307999352231567019055684434612007093934) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(56.915439272782618931726840476801213349547473319843), SC_(39.294100763471271993097016115369474760292123407793) }, + { SC_(358), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(60.356669483073775562336257024289335668920013640916), SC_(36.248599654096926547329840679681105366452380902403) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(69.704723747279955110255220723775641365736385150414), SC_(87.61164621522130891065282917361451960144858599551) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(70.009188190641931357149740604777791179863358542681), SC_(87.290523715067657535232942235315532674961593483178) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(72.557341290603529831547689368010005786905152103021), SC_(84.626692625172143765902232961431460104385603241219) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(85.640792103629946958300932041296960443158915183331), SC_(71.58252148436127921731344626312661871939515321716) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(86.272022113874946281671767640226424554832827177311), SC_(70.978702327414444372545724037589032762968713512533) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(89.020071258438408662822748712077335215281575946383), SC_(68.3761841387224403160371514453160966628069377362) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(89.396683226707094182602677312035117536006741558181), SC_(68.022807845718338138353369433820178385466812433349) }, + { SC_(358), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(93.484544627786538707904887006202698054326562123048), SC_(64.237398777317728146922477084649103361401545729623) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(282.75702188815984796600668682373352830517041083662), SC_(299.52196684693324479903316003222074227185075886141) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(283.05924325480757166957519738255495056942799006894), SC_(299.23854331319291460554871846966257324645855457712) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(285.56420412999500870859526897311528288052346075703), SC_(296.86411479134443196515920854445670539686975643874) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(297.77297020443775782680830824418627661702514791182), SC_(284.61102603165997646113064664960862166103197109327) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(298.33562357749352484897075201664236988096237469254), SC_(284.01744202554406440737954429411298043666342801063) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(300.75796890056446164301684793753888947685674057037), SC_(281.43087044628520429294896000322332264977359680606) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(301.08653040623859938371017425515562262786832892305), SC_(281.07608710765996179429450487469977787481822435559) }, + { SC_(358), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(304.60065216882249690238959935010966873283759312268), SC_(277.22061155763744495321852187854942884235557153784) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(290.39193041478217137516395363986533865802824350271), SC_(306.40697599487824418025978180686582114254850653125) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(290.68164416828575868535171138328759038648422354446), SC_(306.13727540720650308700634799550829673823244017762) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(293.08161627717165636323342887461962329939696392525), SC_(303.87627094917454684102590232065948727251162220608) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(304.74203281157253072681656512335584048342164904076), SC_(292.16866827666968824314311933095998989997750028047) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(305.27780924333407460320826932752714229178877973492), SC_(291.59996247373421134512786136610806380058565932118) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(307.58266090606873521645763472655074156420857195293), SC_(289.12026568355295116421291243075561065968150445525) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(307.89505766893038107886119778028951829567550530608), SC_(288.77995055554387982519763377134257439649278004358) }, + { SC_(358), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(311.23271773994184321056744047344749245084807783207), SC_(285.07882523655860141955325941769258271838968816333) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(317.43436307297830835811313101980955401423293339788), SC_(330.03129632387914623345070010469199608504218610602) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(317.66641244777609654364105798723603851439395874778), SC_(329.8235205012232289138006137867014316524789799813) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(319.58332330558019651596885514412162720933029541888), SC_(328.07512623602743487535853538037430458179971151489) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(328.74596262182252470981834086219160172624706706409), SC_(318.85527422462261638200861060740096395849829248886) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(329.16027150691064848963009407150587958385989016936), SC_(318.4010347398365210459483506681531271850142559364) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(330.93503295806697597627590381098471922362204413837), SC_(316.4141970576719542877478737090218499942100616819) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(331.17461176798560858293563828972020329306185357715), SC_(316.1407461194515735277982191952441471794234669587) }, + { SC_(358), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(333.71898452268856500599435143106391850528169049502), SC_(313.15516958060391955045028194402552969794202772861) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(320.38296209184405367297700055753678545329857809893), SC_(332.51127385224554626789619614490131785869704264083) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(320.60704132784187282270310823361182623084443109602), SC_(332.31192847097638921430660241999120247895489331964) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(322.45728214624222406622762635985178266668533601599), SC_(330.63339254778528129713753226995960411567720164305) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(331.27764912048806784044333482082611090075466524771), SC_(321.75473184964504860549431682418882318102031479909) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(331.67540453446243500518699135206222710531156349953), SC_(321.31629048488963286522087782818022537759817787882) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(333.37800818410475638060127678303007512148975003684), SC_(319.39758679656669263773709928893105397928416657928) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(333.60768466810492158675166582656128834794053912096), SC_(319.13339362007636456432418813407620308436755620534) }, + { SC_(358), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(336.0443178361443098314658698875447242391321513056), SC_(316.24711213784752592960158187939982940510751538318) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(342.57318428735398379138050569732613677303556906723), SC_(350.04257537564210324168137183302044219313344973329) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(342.71740728168753369962572484033541306565808228586), SC_(349.92656979554963299083751083118525468649041334713) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(343.90065415085141022323151127098682496080843117226), SC_(348.93901920748522962260416789391080845255042939721) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(349.32027575413494325912078483191598184720259295079), SC_(343.45299608636297094567276449336376748460497386495) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(349.55429972837931408944803440948667737785226649281), SC_(343.17260475130650317213767375995887269830457617832) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(350.54360817449841522246492490345916431385701986029), SC_(341.93670219818170898756027022468860038184112824312) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(350.67543720984078844334549853021005110231692947575), SC_(341.76543531632978930544496937167550202404235518823) }, + { SC_(358), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(352.04756942628387338440479922793003906287879259336), SC_(339.87821623589941430114785662607536823021464255422) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(38.753191345032815323931723810221701694801621584332), SC_(53.275989987840198392809644684895374157374637964223) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(38.995651386546125442255676415789589745173679796848), SC_(53.011236185678698388363296883453253976110488345671) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(41.031422320893526953288509704645372145506750045093), SC_(50.820672524215900863881151720246476198856701975441) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(51.653400325426845006600138600125059058562535141543), SC_(40.251251885677336667864006992881628198088091722323) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(52.172484585129426803063888486725634772434722257959), SC_(39.768846669621116198398160858802471941546991722891) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(54.43889015748157313361893085486389164342335175949), SC_(37.697213899207733633587912683283398730093906974517) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(54.750315488787844184900880619232008343703962920752), SC_(37.416891707445059773386763358653911359352402786041) }, + { SC_(366), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(58.142999245100391208543187039341826211444090017491), SC_(34.429207361601277950823679693914264080088333947987) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(41.657047683261106788008572380343142886841538304041), SC_(56.585254871289939554865055035364473122031315440768) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(41.906854513790720935299085217587052361999902550009), SC_(56.313664741584241426680166710770640915327615312901) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(44.003440307356038326425274354608026095875078522097), SC_(54.065827266762188939538806658297553303275283010606) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(54.920478529111727438074684235065908463650796172759), SC_(43.200144741771518040376754101304946776265202677692) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(55.453134411310702076693326965243236384913463551313), SC_(42.703328888635014372875608257208216352290323140621) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(57.777969564102589744355507943501944079079157293095), SC_(40.568805849056550846610751302796371322624200146892) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(58.097321028252831016093085582533457289558054613611), SC_(40.279844359771313088044206588907860521658025814977) }, + { SC_(366), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(61.57481417972496969474686240528682022011878981338), SC_(37.198042942970854716899401296270610470480264317988) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(71.373451812057405115873037416239611107118109736757), SC_(89.479464047675752947243689152790352968915101769035) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(71.681399450826109669091648316230615453968987386633), SC_(89.154859034823022059653532377620879147514175125106) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(74.258551725387997375121686640482508600817759655041), SC_(86.462032796408277858021510239462143687905283706263) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(87.487193312372906660617278244832127402238384284817), SC_(73.272669654465615320470649346056275654894244791801) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(88.125294006794557310587074581557119893370126017013), SC_(72.661978871801329379299204490314962534688821434996) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(90.903131948077893098940224092474755376892489385468), SC_(70.029665711000572758805916123607513571058798519726) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(91.28381139717220023591069792391735593735430610841), SC_(69.67222076733076981082744348380501280241831333971) }, + { SC_(366), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(95.415605752447995578475565599259236339784390764975), SC_(65.842858864452030525686812682142131508933913138907) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(289.18159480264673046859209482222563784455219533721), SC_(306.13297122885840900696281856316684609267071417704) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(289.48707740773005513995876473165580239735003778644), SC_(305.84628558814456507439684232508178472959918715058) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(292.01919040361803489122371083362501592552891299855), SC_(303.44469982854743244762477036559489179168695663934) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(304.36391462194089617880261364967734026315510660813), SC_(291.05565448361709900475983166656497991740268001419) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(304.93300314869038343126415208441575275754322167163), SC_(290.45563652036715394752315051728564303332724836433) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(307.38325250599917969281732474257447842734457498186), SC_(287.84116876493884754025002005234459778225067901029) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(307.7156246795717778143685263400840429533742112601), SC_(287.48257624845693659441557953356781061249583256324) }, + { SC_(366), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(311.27091705225599089514789845485957858029405343871), SC_(283.58595545128837026752111022892663570281395160598) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(296.98293774048875310252054315501956773393185692533), SC_(313.1761039660259681212277064093599215623096949702) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(297.2757674585998338045271191109073244435186834118), SC_(312.90328640828663518546790833174289053078409515641) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(299.70168165436259348053074839319795987027977952766), SC_(310.6163339440805903973066732817575239631063132864) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(311.49199373114967541307914200745014114765793925436), SC_(298.77883753121775801994828830316093188267875698304) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(312.03391877227632833764625573697343825509766036749), SC_(298.20398450296901784350288932693907606317080210455) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(314.36543314629410383920270078990578570816426173109), SC_(295.69763409996710566400499117110345228851246748663) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(314.68147123411591087386504906099338876781694529112), SC_(295.35367937354582151568221126328777225182908034797) }, + { SC_(366), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(318.0584758892367981830001607331786355148425507549), SC_(291.61323889643194739319498213633473830475697368265) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(324.61056689572797998501627954568396746907926344503), SC_(337.34775988183019594045032565310690043697932423066) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(324.84507045787599619976095116271195537401419316908), SC_(337.13752797219084007487901501040738972520855747932) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(326.78241092974016594251462692539021086983154835206), SC_(335.36869296914003618662034095359102598974129357225) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(336.04732545733247192476242565743777869181954256173), SC_(326.04656911983622406105616666640880047578543705243) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(336.46647792030460423378401827385886293616778840492), SC_(325.5874886567297646487077368456399685753957371527) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(338.26224989990834971661765928054928610205994807419), SC_(323.57965765759151148517203791874622406065249674944) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(338.50469915239542234620498465448305884238650240821), SC_(323.30333956052338406093069493479450829958356749388) }, + { SC_(366), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(341.08010833755802316032242740370945124266041971898), SC_(320.28678306685806213311434295365878246028526234439) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(327.62243059715070866725163415428549351434899900883), SC_(339.88581494533846675365895021844901945672925382269) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(327.84887335726165771832192763402203832106632945631), SC_(339.68410396349729204128580017863300287308222562958) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(329.71878853313456571358792391985364633897440131949), SC_(337.98588153714731483221551683499385676109577665788) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(338.63764632611530654736511816713125963975695451733), SC_(329.0087337006618625170319233486906298529616529284) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(339.04006658908697074451674883610996676767772173835), SC_(328.56563032496015864077049392177486375899178881155) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(340.76290692372215528655110018677883376564203085463), SC_(326.6267087701766910526872817158644757927632657179) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(340.99534834629923035947333594144545845753134698569), SC_(326.3597542494634400844298783556351482682931054) }, + { SC_(366), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(343.4618817254275200177661148765317900989775855418), SC_(323.44363449177425215089343443322433524481751419074) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(350.2823202882074640200596400124127221807030627224), SC_(357.83530539551175694931033730654388711991102386702) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(350.42800706376195391767799774777291213557845400477), SC_(357.71783035031513766094461075248145405034593306398) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(351.62343194436188973974135475036278652907314486132), SC_(356.71806934651751907402283291130540638778585209906) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(357.10397935078534960944111144684715492387629649983), SC_(351.17113005825348539233083946979762298026637813581) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(357.34089653201846326238742697870825909647804165442), SC_(350.88785306774162860358385312230486794544253562562) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(358.3427792674389111006029469764923705478149626814), SC_(349.63942805168024431691401302105745375435368729769) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(358.47632990577308676743077015506120804303326889943), SC_(349.46644972124350213124912049451010029282586910012) }, + { SC_(366), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(359.86715838910847340702536707774786416148071964809), SC_(347.56071714807083415766688535329598620105770339926) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(39.690048530136412516503650386789479278683929762948), SC_(54.370924175530484606856312429465396771014351092686) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(39.935275423072803711029570238964310878276822183213), SC_(54.103404832583300791034740693464055171957698426123) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(41.994077592381995020274672932973089989607349976548), SC_(51.889817637426135880469396000049717852332550284688) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(52.731328008904461778706458390637136439015824999613), SC_(41.205122245577410089614612003412051787470570597214) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(53.255867909517770228580819034881646942983237892278), SC_(40.717259588242446909276225115043507850029543751899) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(55.545929790403237327674875850650790002056192431402), SC_(38.621958643982249483327870780775449399561475941881) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(55.860585619089770922314714026160436543294790258876), SC_(38.338403698929780137964665086944529729003758848176) }, + { SC_(374), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(59.288168756157060876427440098213599877830614854105), SC_(35.31578140017406869225474137502557537418450933024) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(42.659629468691585437530967698205628334180856943808), SC_(57.750307302981634347675240070842698947387912683829) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(42.912279854571678127052935937374285060234457201929), SC_(57.475874835068438130294684099054926470012185738841) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(45.03253603754492723510739284068131078253131364183), SC_(55.204374126767888246292764757783714530361902499277) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(56.068052048077770281409403434821871997976675152621), SC_(44.22021163659031249725234143970414748323335541094) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(56.606315155747423345679418814518545628954988463619), SC_(43.717786885006713267896917730983780782340648353174) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(58.955463479903869491301770874979026447874915165695), SC_(41.558939656619689935720713723026942497095280553759) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(59.278135082267238086190875913417865733381584094299), SC_(41.266655935603016333338895545436986650217651916187) }, + { SC_(374), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(62.791494925946210364762225582491133645226407041414), SC_(38.148952065260191834530481566983011903865342987736) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(73.043262567956336771538963018952556649595698423167), SC_(91.346199139194670752517639258382658453547431827354) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(73.354655449804310321089619435921735730324499516532), SC_(91.018149536912507362253633391741756636361014403998) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(75.960491167387141749761881439856608725991637993227), SC_(88.296643710634769792821286014343950325805170442064) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(89.332744920437559426905665105752695736816853455196), SC_(74.963667227456206924734269766985170448482603281228) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(89.97764152484191413596581596523260691581226307972), SC_(74.346179633230333813836736524952033016702804727898) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(92.784943841768482831142694639731136213809460328083), SC_(71.6843961843946250396048401232619347364614609662) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(93.169646441338085860289073059891217791779211037493), SC_(71.322926970358566359817061359772625217136811462362) }, + { SC_(374), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(97.344894326853649706114974792575855162914660022166), SC_(67.450092509435022277965737312483147623449511402961) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(295.60718182332888050303212797271899094443013698389), SC_(312.74296157017361711923947322876869981017491854201) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(295.9158901440973941742930672475126666451520937012), SC_(312.45304938217155648472424954871943404349323416741) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(298.47485969572516330286646276459342066256942472937), SC_(310.0246021667317516315134003444195402882964927776) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(310.95406356057266642173013846323998918686077646249), SC_(297.50107866797417458601705470541135005891895949542) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(311.52951715432072006047819276133651622851585684983), SC_(296.89469678357078209076451300746742516704192370383) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(314.00736632256933583926900329593933037178495002632), SC_(294.25263674086741392826265396059063024888716750174) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(314.34350757213609087090125133972045411736377602683), SC_(293.8902765748304388644278660827279291547331662408) }, + { SC_(374), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(317.93952028304324733309118409373169672377318475856), SC_(289.95295971425673343719652445268689629709148459897) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(303.57491411814858594902515033147575240893398816761), SC_(319.94426296315879092981270404108465330070856283181) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(303.87082585384770995896149394875118612929817728509), SC_(319.66836242509881899778044675573893536408880722212) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(306.32239969769862028477499942894278056226084636578), SC_(317.35574464419499426076142551225925459888614744252) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(318.24119457458562056821038975048343318133649439105), SC_(305.38976715712981941141090130620529630180751531741) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(318.7892012409041658278771745820671665671680417347), SC_(304.80883382914527124760383696141981241010049088693) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(321.14708752781822807848036138085218553503596887275), SC_(302.27612022475844307403099320583697157239125238793) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(321.46672717777451674254634672262668784522130283794), SC_(301.92856558907043524757157121787980661555089916152) }, + { SC_(374), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(324.88264581655059529960153055380147872976002378655), SC_(298.14923929134492168857375610106995979287430073259) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(331.78753463429776252931123814630561957130644771137), SC_(344.66345969912615773028970124381017951211621090951) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(332.02446561155999777413774155001717692819732251759), SC_(344.45079855501947135567730860969067216712566406384) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(333.98201303476755271992106650160346126833996628097), SC_(342.6617459440628976498531813656961202674526845839) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(343.34808949948721221411964508172467123397565628229), SC_(333.2384633900152867077368249241998611699604568878) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(343.77203267033265413681658026335591110689748925961), SC_(332.77459470947789364445875165684666380594589278008) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(345.58858540415682231377608581861179244694263072528), SC_(330.74599943917761525895207304849435348144399953197) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(345.83387364288484229701513623250534801282115120237), SC_(330.46684549976653440640289813047299488893696822591) }, + { SC_(374), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(348.43997781619684186647477882121908356179310148037), SC_(327.41964806409627454299742664694837216137342016613) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(334.86263493349989197957807740507024985758870824893), SC_(347.25962040541632634449419340171431911322766202209) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(335.09141542794842243333568509105046539890209444537), SC_(347.05556970041986079455645436120284362028645030014) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(336.98079048520106779660413048692179782076020533768), SC_(345.33787575621631340301746065325651269308394395871) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(345.99706683816185856487184582779366950575897740821), SC_(336.26331288658756543886719586894507771166603167432) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(346.40410101026401704686522675016234346046796410297), SC_(335.81559832090149969457616343055743956066726839179) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(348.14695659129834438931540312760986958264528649638), SC_(333.8566795427286291484807774027873950035816631516) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(348.38213262922948631869984057384396671339436878299), SC_(333.58699384805333914720566665162185734851043498475) }, + { SC_(374), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(350.87823690352472997775658672728137061485912669623), SC_(330.64136246543253282470333175505146313508772284805) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(357.99191395217702419519241531693989360874370306685), SC_(365.62757876446734330103297032504858918569244910482) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(358.13904846119387059839155002181850997082221749552), SC_(365.50865053182597148027999457238896185569292455283) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(359.34651808642865025774543499064499058133458596495), SC_(364.49681366251273154393045976452529466565741838104) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(364.8873259784446092087032384638212162133275470528), SC_(358.88962314906715724856759905848158359728399191379) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(365.12710449094639214131807144112902641532611020258), SC_(358.60349208041062427594462975125114752209543850782) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(366.14142208278831940755034550689283699753077913932), SC_(357.34268192767280616896421654187429549946039285914) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(366.27667509360794417144690674174816188306103153474), SC_(357.16801095805382321594098151459482751170329739532) }, + { SC_(374), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(367.68598781486729857981866917746281746239027376726), SC_(355.24396908386667151710720476039361489117132733059) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(40.627747657928055050396455604008807357500386189854), SC_(55.465016314456317201248489629519480203674844195996) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(40.875711845544294663278714052793561990061899152284), SC_(55.194760933037815740889916693223919331899178490032) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(42.957299503313397171956399028949746118085530196105), SC_(52.958395632259313315817938747045995743014913075577) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(53.808594988514343204520037603292697620320217513961), SC_(42.159652926914565343490154979027386660149861123509) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(54.338532374518713713042786597093378848444780848445), SC_(41.666391058228543869869945662334964589947650670312) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(56.651998171179363500559666113416908253027752532717), SC_(39.547674826132167845835954097476997257710168596209) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(56.969849998708037863833408941750515770564227504354), SC_(39.260921720519155214299574284789481748315584505902) }, + { SC_(382), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(60.431959236153362478104705682520918038678773941828), SC_(36.203736371553302938046649860861698392428561964965) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(43.663076509047311243511504941679106521512305568765), SC_(58.91449438306730797830446259152632718343552206648) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(43.918540082404325118632945009658215893313708650053), SC_(58.637249894245437844969548607001048125686760513254) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(46.062214140791170903167073518003636806397580749164), SC_(56.342338170328865085041177864103073728786028381278) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(57.214946574096753589521241842805217865633591421041), SC_(45.240957170769923278750303282019989108892897922555) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(57.758757142792341393308789858622150767981986417085), SC_(44.732983354387770182997467331721609898359009144246) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(60.13195927500153925082387042888967393851230742463), SC_(42.550071758737782220746015874067795877981399064935) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(60.45791556595963461345390154121483787302210862645), SC_(42.25450134303768577609845293617459547458199442703) }, + { SC_(382), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(64.006758560733255953075874131494365305571729711652), SC_(39.101280063976356173320084126086882613572127610388) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(74.714121438354943902022867546578639188096473780912), SC_(93.211886069707114412743011905649006203695714417781) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(75.028922825234367797692279897413016803459570437026), SC_(92.88042858880179086730096735760064106339204603228) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(77.663136348248573783732822775741251175322255949203), SC_(90.130548651984182122049875321817107987691857502774) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(91.177474056292094949031154938699811217371450920039), SC_(76.655487087408662964603601876422102433469256565505) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(91.829094185768219669477311769474074253279468869972), SC_(76.031275104003152591356846903849997443682214348024) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(94.66554683045436741686778373633438826406973975212), SC_(73.340335661564925024885096511719855645915729348424) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(95.054229668571390257926105485144549372475162841003), SC_(72.974885135907781535880840418073968320604262454609) }, + { SC_(382), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(99.272467018673407111423230410239143913823029954039), SC_(69.059042981393337109594162807582454885291523514017) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(302.0337505559692056963159782916111456691019319913), SC_(319.35197026072517054378585267780002408770374509918) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(302.34565020563750533954588745598047660094305848546), SC_(319.05886594684866935347733655424153415387543556367) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(304.93119019416702503128221209576175300772681477877), SC_(316.60384359784223782678723821191792446757861451589) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(317.54344241756867278333639131032925165650841548196), SC_(303.94727317138749121926712397253819998791281669909) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(318.12519323306563998954343118865847070318711446507), SC_(303.33459516352231709319083590531384399038223473285) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(320.63034772873413660706935638025067428405542244311), SC_(300.6652370035576594452816353636585051410778300182) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(320.97021779550168566813453508128981026121526433767), SC_(300.29914938714287450283413543547753131670621634129) }, + { SC_(382), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(324.60651503572394656388533871782919962090841014757), SC_(296.32157125248159803095128441377107076976942738244) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(310.16782858805670370763231078750041682254293491213), SC_(326.71148394073158237518594577109884911514385661777) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(310.46678948008219119628702488486537186073013423222), SC_(326.4325333236738821254806696247719579287546479391) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(312.943749561105556330853937715950099321117645641), SC_(324.09452387208493081007481081548760417241587046974) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(324.9896596107655756228747069261529716883534568896), SC_(312.0014328667368015340713736993600213149286624357) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(325.54368306092554186759774239495259731353340532543), SC_(311.41448402541406908127903007600834266209121423301) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(327.9276597759644097186997596861306244696375035833), SC_(308.85568834162819078623632377161088506696986591322) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(328.25086250036998685578054740087337567010518006412), SC_(308.50457221529540019216319833340110977187672521227) }, + { SC_(382), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(331.70527836393339605595109999069879267274106851706), SC_(304.68677567247347262672829403411150467614963455178) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(338.96524185729062743981130364706035547577485074791), SC_(351.97842019491778869229203064874403661164714066073) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(339.20457433465003829375931709716086383129779701081), SC_(351.76335580666132114881011704892035489459557051646) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(341.18211317011096522185152211982241871373908489256), SC_(349.95430156531699705696153795148352696769496404009) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(350.64827387633873678571657949226246574229572653393), SC_(340.43093786973526866464154007157141464946819180516) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(351.0769565797150434017254017258705242204958234544), SC_(339.96233204471111901237770298018143207921714627463) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(352.91406767356259578379825469177001510077551082324), SC_(337.91319421427737884554910105907407782468805845798) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(353.16216445479517546087678078339337986840977952209), SC_(337.63123474517514177948863401619836443120348981483) }, + { SC_(382), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(355.79863321251252160296886544887100837589604209531), SC_(334.55372449512386046787740371314996456878984214074) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(342.10355156271315222041758747687998893895536603987), SC_(354.63271375672222227972487273170530188295905442937) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(342.33464482765711546254208257523485028276741064613), SC_(354.42634837462533017383760296295360642691734458286) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(344.24327215308057095748348550476385795255260174592), SC_(352.68939100366010696023896643550487451031723760265) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(353.35592908004908214761178996263443421955251039195), SC_(343.51845094270851519440182427331746683104861152439) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(353.76752785488440229898910745796183911941876104088), SC_(343.06617438184113425274475542197426627325055244544) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(355.53018436028647572380507227378811844043629282608), SC_(341.08747195613969268451634754622157299643978385087) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(355.76806566725972469844995850865871794062466083052), SC_(340.81508429040478752021452290674717621383820017128) }, + { SC_(382), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(358.29342218075376040435224495097260662083103222987), SC_(337.84025744173813733910244895013452672694405618538) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(365.70195057395234999198355307474947571095854999756), SC_(373.41941010971882932035632193051109946653979220321) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(365.85051728443359498048278065081091165720019066116), SC_(373.29904443802445270454888567909721702100478406231) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(367.06990266381085816044621935522639407938603686758), SC_(372.27526190338692439528591479968848678934585446067) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(372.6703270340063621254504588450768427622353625819), SC_(366.60846381777725252360670521304919838008948280138) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(372.91293603239049403036962829465367016757660714261), SC_(366.31950923505009036302276650136748895169489682266) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(373.93955358680272160364224403489740798805541656347), SC_(365.04644685728192744563836344029778189701766450299) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(374.0764903707696037178583469368982578316199178397), SC_(364.87010145210422930412610303367961318139353896471) }, + { SC_(382), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(375.50408238501368990052035510090212237614994900445), SC_(362.92794787328103011356061247662339290852235027919) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(41.56626238372996535767159982496078526333443401216), SC_(56.55829275639733925248189163338689331435609209594) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(41.816935236915149511066868356621614225332280630691), SC_(56.2853299145097493975973914404999671047585119383) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(43.921070340000578663660491360142672473493038930275), SC_(54.02642425216484075588464229809026258090082342218) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(54.885221936708879518218029193082947252232424888428), SC_(43.114823281155834328904395753633968079917158256185) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(55.420500473327670578070826084967621675477978459881), SC_(42.616218605786146472564446123733419287616311342049) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(57.757125701407958111151486768743112972472388063493), SC_(40.47433203334237218668593179660633925339731367636) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(58.078140111123280510165061892588508825416532983381), SC_(40.18441427223896964166012855803763628583129184787) }, + { SC_(390), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(61.574413891527477287867334961193022211280556037967), SC_(37.09302895259299928677458519571912713637250781972) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(44.667361732742533872417747165924507580646382020475), SC_(60.077843189578833254607242804680987735271295168294) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(44.92560907852232486767786322175415799476322322024), SC_(59.79781604741466227047812127566900429817490787707) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(47.092456412149655467285416808125011903782904984155), SC_(57.479737629925371161163975814796042081961695883691) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(58.361183349480405892702242732454322347666375176812), SC_(46.262360124090706038962993558628528211439628914376) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(58.91048348568906541642693221067247928917295591908), SC_(45.748895201421450012249697202796065858293706806011) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(61.307488188459896263086363681836263212747964196586), SC_(43.542170906237364210564896431265494014639837284941) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(61.636694829939895743811687008872649993846597107128), SC_(43.243348215993091890535673577600421177893719293659) }, + { SC_(390), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(65.220649477668888852245330158360099842306975649897), SC_(40.054982437197053603192455095267739501125192964324) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(76.385995648711103790688627469059481599617063963282), SC_(95.07655761677671437352529039254863075239544032363) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(76.704169953447622908245194552476445915307020650055), SC_(94.741727818849045860498581489814585884138359018113) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(79.36646521162661608876563175691640210197743737931), SC_(91.963769691280643894104537178229584828646413637168) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(93.021406434686331129387040884827293267898295464032), SC_(78.348103531078291507440666780968689611556959585053) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(93.679679969017748503868446541448633657095019326827), SC_(77.717237313892507995368929956765909303985586358433) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(96.544978725523545089978139816282665007792698332916), SC_(74.997446325235533874314175230761613131640491239667) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(96.937600234623706990832855961951457110533569683435), SC_(74.628056099463490108768862109375183031439721852737) }, + { SC_(390), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(101.19837753916280843774163671898367702338141984377), SC_(70.669656511045209909955197280895466848290361224683) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(308.46127029509285061406415240245502502771690395946), SC_(325.96002800197931954923548769141424905246162847953) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(308.77632796356233392770511494886796197233817667489), SC_(325.66376490483693945672064034259408050690989255362) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(311.38816122362749814930579429690925920534089216436), SC_(323.18244477865903614532352005188168103248894100238) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(324.13207526690572172787654009529090441851333109484), SC_(310.39421390510831848206856608448545916304689116096) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(324.72005758335713961518373767559860117255943075684), SC_(309.77530544991783843733659724115759023312571160188) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(327.25223215378915259875989819015960917144249658103), SC_(307.07893413103418658902846508684801602917916894402) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(327.59579204233605848125648736683063160074507349392), SC_(306.70915800370721117828847028770445946888939658294) }, + { SC_(390), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(331.27195170766210708322461671608948739443905720495), SC_(302.69173974248739548696429535419030409061457629594) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(316.76165180472072770226736777143989367797693926839), SC_(333.47779623944610301888184631138089097411260800407) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(317.06363002090210818449695427134005803364972882404), SC_(333.19582741317337142409147523874234698197301462145) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(319.56571148516032274969254146414329951029015274906), SC_(330.83269136560941511194629789114848180329918078135) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(331.73741184402396756962954937948250812467266769978), SC_(318.61381163848069862036924938893103958584896435425) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(332.29738926762342434420452854044246402749853916616), SC_(318.02091004261601894231614360758496303402165606412) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(334.70718375278919930429538324641534836174189094584), SC_(315.43630459683812894923775085497244242586148796269) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(335.03391227235736030900128253133357121473343550319), SC_(315.08166419432317484040743093519294518347531329045) }, + { SC_(390), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(338.52642171715045326017557327474281567193211245647), SC_(311.22579993964639202409359439879811844607001502746) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(346.14366540841728869210248110851069444922682383869), SC_(359.29266451435460415891706853180700165240099357783) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(346.38537428329477547026689999330311341592070185282), SC_(359.07522205525151691180656542275971277971207297736) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(348.38269574368909190554605924404721293316403140304), SC_(357.24637538278065929883095231846375953574267307589) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(357.94789671894034507728070228162272059301417415544), SC_(347.62397439370423294387364848619644811942552115493) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(358.38126938552253013154312216094669561805765865812), SC_(347.15068089730242060625842216506622138563106877349) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(360.23872343834277087808072188754739378439205118025), SC_(345.08121526619583274003959019461193242227346121089) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(360.48959927772625367490978351521859065645725695213), SC_(344.79647962869688292178773116519051878596639133299) }, + { SC_(390), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(363.15611267193718584885652603048175903727270309905), SC_(341.68897437679676785368068738577157191001409558872) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(349.34515817534953688163013595194239244964633964254), SC_(362.00511729602775590174701778437765650759829194832) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(349.57854002972598822449180494212682707056198140796), SC_(361.79646149511643379138093129951455031784560359622) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(351.50621851469863274325675367303476011963401506024), SC_(360.04044225508007344417763122658501200635641531823) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(360.71425051489429998315258290677921542058471574613), SC_(350.7741303680843073890494330056280428774237329357) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(361.13036613405141283396168747550707489602274291243), SC_(350.31733946557672770801943669111452789266801979095) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(362.91261598505492766040381990545449739013859259952), SC_(348.31906027029890446757676875557180057028368336126) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(363.15317414029261141622150725918286424314241646844), SC_(348.04399891964645805747172156150151090953697405839) }, + { SC_(390), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(365.70747433346848576573492464371401483628922682963), SC_(345.04028282181072377701070929401681144330541914113) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(373.41241621906680035613319656622833829346210469829), SC_(381.21081329526500297386847767973273639364634130282) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(373.56240008775319726482178593478002696528725774635), SC_(381.08902543168680789508248594217505026450746952805) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(374.79357628336578998920084537847645961165649595563), SC_(380.05342331106059796483171257431270711917459944344) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(380.45299332173873293872675908261251676659628521871), SC_(374.32764112855104604129275134059603788033142402023) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(380.69840293668453069987999196153034102370997215737), SC_(374.03589263559906089499446070110246431431325610659) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(381.73718985802542781990489486901452754818083143704), SC_(372.75070676117416436313221715023858796651692520287) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(381.87579241319614562005071509160670516936592242191), SC_(372.57270455007927320418548748100365517553032657224) }, + { SC_(390), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(383.32146547310347967919955866002097157680950172929), SC_(370.61263061470828261122356281219043241461159092673) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(42.505567708661206658521846120151879640801691394701), SC_(57.650778506719495473359071503806118675488319141253) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(42.758921478399737066277359291166701752075650977213), SC_(57.375135905325377678356841032966216233880861599494) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(44.885373292748001875210968669820082477676965819165), SC_(55.093920334184697821775450318847435068607595756077) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(55.961228469879794604200947659292106246664626866172), SC_(44.070613713875199786968420760688115524199114485018) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(56.501793550021623430306842368919319475124928511828), SC_(43.566720904644938084690931866587428443067270385808) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(58.861341229063170863600828731195954118483622921933), SC_(41.401901407728466648247549883639320869683955767918) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(59.185485830811570558041659039183448931030277372778), SC_(41.108851464389149534775995208509011461550520388989) }, + { SC_(398), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(62.715573718826924028494060041174886545396563920728), SC_(37.983618039392469135786665613981101206357459591357) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(45.672459451006603465243401162714094312608047474918), SC_(61.240379417175079842052464329200170046485522962943) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(45.933462058160769489703461556243455170202151764406), SC_(60.957598088070070153647057079916420095287779023261) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(48.12324557572239092305645137609572253498960554283), SC_(58.616589806756924002772842663999120134805503320641) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(59.506782531488284957430390873706979143666101104193), SC_(47.284400359582552759451486790968071830864858250256) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(60.061516117014233709638113766084552029683704012255), SC_(46.765500509949159772968609997939828234825588109801) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(62.482079863094155631032373430148162225252269569435), SC_(44.535207446959525066587624154289384284062290209845) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(62.814503571676886286923175570990548557888288874915), SC_(44.233165842723223524895501137184782451307695758446) }, + { SC_(398), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(66.433209800003157269400953329141774761520403726797), SC_(41.010016962018949621447225446260903570571093137267) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(78.058854097753447815401084316450433004267142148379), SC_(96.940244884440751808490451664482301050763252632355) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(78.380366825180850105052199009774705381053322061742), SC_(96.602077240617980576421268148399999266380821123053) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(81.070456826601946219828332770731897782392336390357), SC_(93.796327772751717687625027221879724715510343133832) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(94.864566457691651030757396759425880559679506596931), SC_(80.041492166965484227050120890360149199084838919854) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(95.529425425677314050839030411839260793930502478109), SC_(79.404039720277785274944868964271462028505768260615) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(98.423275407486366986359322386003114689921513552462), SC_(76.655692289466406192650055922924100652023383188983) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(98.819795295612756892192269921109135085921088351728), SC_(76.282402696833602661749846308161650395719220755463) }, + { SC_(398), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(103.12267685468706602351994186205415455189131433792), SC_(72.281882078657027997923546693649234215006147455355) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(314.88971190324679567337508268256680403127533293827), SC_(332.56716392772207649098800102757772410809017794001) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(315.20789530206946952060479977243181394708695905394), SC_(332.2677743663226664977718668046386906308565002082) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(317.84575316436102142607737057111046374255135836485), SC_(329.7604253118915230666832416917609368710130120029) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(330.71998495385430674059347840255959756555396410009), SC_(316.84187801029470011741179002561253842898388537836) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(331.31413506630514614326415395345543501507045763284), SC_(316.216802770744919889760163392716969398059452864) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(333.87305321726352552749291122257132382176934406977), SC_(313.4936945105225176186430834301719985619030827042) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(334.22026513080496715098427214342953130239250126597), SC_(313.12026761647905589527356787954725711687064496352) }, + { SC_(398), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(337.93587811797583738774650068940575353036803923178), SC_(309.06341743311511696077159717656513981819713152532) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(323.35635592143428087064879881566206471054441658856), SC_(340.24322770162855641085541948066330342085539919006) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(323.66132060608138381057884737600623342189635436834), SC_(339.95827155718976995217020322796456274256714180936) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(326.18826671940330417680082082957479399370240641265), SC_(337.57026585541027481953258903986455337977638396577) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(338.48447310450653762683205078429249490727598138074), SC_(325.22688162639377719865288228871872325745384797015) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(339.05034361822845332873017783217091717331176022324), SC_(324.62808811077929291442922007164764790799159809742) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(341.48569159035754288159953190769088353931251669578), SC_(322.01793686600299171398277723041590471827078822179) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(341.81590977224935973117500338394346849529493733233), SC_(321.65980825921996810860674664759425276950618589809) }, + { SC_(398), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(345.34612159601997911281139223445358933906522184731), SC_(317.76626645177262668207360741198102094331984433739) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(353.32278331523010528043885647786264462890609884838), SC_(366.60621461972956988619667698544998316466621902706) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(353.56684425591111047509793261011415611431781026496), SC_(366.38641848800523156987964750429585605638376798849) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(355.58374596044906163694854417810603735663318974756), SC_(364.53798215274153030815498195652243597416561136569) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(365.24697523260285429302805367156329609105084701146), SC_(354.81755572518496743297479849242891412826221334372) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(365.68498981679249277164923794532232310301951807043), SC_(354.33962251248299345536585866425222837457008878342) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(367.56257806161401172388874858050401622180700950845), SC_(352.25003724435891415926469509897554910289227108817) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(367.8162043848041197458821638110095724508274218141), SC_(351.96255389713212592216024231701862709690029116713) }, + { SC_(398), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(370.51245238290233405653306374869710034883254012312), SC_(348.82536166998804656481339566195757354683826751911) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(356.58743360274149656991981230450871767843325892013), SC_(369.37685218045757560073868006093008612562684612168) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(356.82308060820405082205643658299233561863413448046), SC_(369.16592947170698200609980333495216231806690803023) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(358.76961531604427371170148989872436812152504056321), SC_(367.39104372180423158919962664294670808929655324751) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(368.0720477141442182273549324382564160070746892712), SC_(358.03033455655762994851564684841273132437202028508) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(368.49263388784922047809486710736615964397476433063), SC_(357.56907550350857830968130891842997347628257191338) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(370.29427590251144501746531296691129173407191605501), SC_(355.55142006153979767741406252898335754842256945027) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(370.53748336309971237063124032271600363093475093286), SC_(355.27371244232116626364389318636286075116186144407) }, + { SC_(398), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(373.12042825026019448447146235106525170362981440853), SC_(352.24140388034550901478782581193333314687459402474) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(381.12329766849809916297012734434079365016721020709), SC_(389.00180147639975690866929749121353807144937853333) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(381.274684115787222018882551208408246835697793388), SC_(388.87860619289593862079516061318041290485374952276) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(382.51753003463004605506166508748065907616307827578), SC_(387.83130665740713585164064504608225997263010242411) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(388.23533509546252493616079986420657277758489435546), SC_(382.04714470723424802493128588766144068295259161849) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(388.4835163833588781139612085950600444411779257197), SC_(381.75263099688290172939088033442839106968545447556) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(389.53434615086086617374270306263642688427680066642), SC_(380.45544638563171410434956820458727956755043978031) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(389.67459704138604790016120435648682266787731469231), SC_(380.27580445378947593671187390241130931100846211628) }, + { SC_(398), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(391.13815923968912971986083940995430123587146290429), SC_(378.29799558371243402064769364263239010555108056238) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(43.445639885317985562070111219830278520143146162479), SC_(58.742497318759991194669404453799812452225690808461) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(43.701647658495019431168869055237464590098126908865), SC_(58.464201825738056904324721308459625895917730348325) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(45.850192392561168747342931863553344877823456200978), SC_(56.160899872484238975939308079988084622428102073846) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(57.036633222378967228355568779918373021753661564602), SC_(45.027005610928226577135665095193992552510484108365) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(57.582431880104838623085827771498206672815990153951), SC_(44.51787769567248083376472715441908339984117507859) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(59.964672157424042208262455907447697574939111950222), SC_(42.33035553683393413309966075724329098150700182633) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(60.291915536061966929911775418654659456490752530112), SC_(42.034204904606711456125548598984801104708344246092) }, + { SC_(406), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(63.855477659772552103000274804528766824240659932809), SC_(38.875464591313819069283968650926660721502749860543) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(46.678345260976933327764243975820316753254343548629), SC_(62.402127474107791392393373908711270362112879227179) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(46.942075477080388932334308375525870792132647826448), SC_(62.116619568458831368119053992446061180539590623435) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(49.154565219613848428479181633859657078979878435136), SC_(59.75291113600893996831929922685473320364871035612) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(60.65176326837238897775320855590386228642150636737), SC_(48.307058747660442905288362008848568328150736530544) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(61.211875871425812858098486357586378306169938767617), SC_(47.782778460409848294661300492088589657741294106777) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(63.655762457376299541215458154106265546563910994276), SC_(45.529153213783297392197967389451837612216876243833) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(63.991370951398787800936071062537974459989006461566), SC_(45.223925049805016735780061223055295474094396360341) }, + { SC_(406), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(67.644479539940580201318211190009066699229717430352), SC_(41.96634353441731675087261571967707182749365536656) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(79.732667240273424630426198314489131793308256551533), SC_(98.802977420444508384379511859343588502398887053767) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(80.057484932499417151203637801571191093221475308044), SC_(98.461505365994171460929722262893364155474370708194) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(82.77509130889427894413937429664078399235674533669), SC_(95.628242792931600209373347555498376346782932487988) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(96.706977306641572392658999168298312447506903150505), SC_(81.7356298234679081700368182861395815394110409861) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(97.378355778523587136327300400111755644802526678567), SC_(81.091657108172628235249758749906756351007122215991) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(100.30047096126026434171681881401205522088887916586), SC_(78.315039464324994587943277595457253761009690271995) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(100.70085014813138824797820482844740790713486109803), SC_(77.937889623973514146655821926702226143510226397272) }, + { SC_(406), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(105.04541337917652961800322023276518873066851038724), SC_(73.895671221129749438178873148026090484294027720518) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(321.31904770113664437667595905980547912362247785467), SC_(339.17340571388689375823324857526158037008236540508) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(321.64032551233847823130401419686244474206353839202), SC_(338.87092103496896655876006185343430131353287004164) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(324.30394737824931912579862094898289081591749204088), SC_(336.33780381997290373747456830795549634241676543773) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(337.30719318101835868263680318881291396788742484692), SC_(323.29024377185219375589238130446627078004250378487) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(337.90744929935645891894934113168126388874382858421), SC_(322.65906349852673185012955279465668789688601273592) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(340.49284285575587643099609664758290982027611802224), SC_(319.90948621166664664102192856759396224548067377256) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(340.84367013595966618050045864591511722313597526071), SC_(319.53244515975173306387858862254377951199597607837) }, + { SC_(406), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(344.59833968851210035450869798426937467369625068205), SC_(315.43655896513052605727461851282191595255240822792) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(329.95191448525029481834079820998076498336017325532), SC_(347.00780477621337951209965636617669834922318388831) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(330.25983571023228086141810868621087084335786371584), SC_(346.71989127502120851578810962747510791040496082466) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(332.81139745164919196109092978960726580455860025752), SC_(344.30726513542805241812383676260368724275389232286) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(345.2308641303966707932626834838743454102829060044), SC_(331.84062207773253176024092645836429108090523649484) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(345.8025686814331015047591827506349170004362079442), SC_(331.23599564949172208827072911792832805505480358456) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(348.26321381200651080251132271472021321279200638291), SC_(328.60055463288670343671529354316062190151749136728) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(348.59688661223799248543461954414344886068691783075), SC_(328.23897280848749706403737970903177848269988092742) }, + { SC_(406), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(352.16442142756536794004369331369945215175534034662), SC_(324.30813185436400543270910726070847380017972043662) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(360.5025747060876294870522626408524485678968559797), SC_(373.91909137340870486412538869218513233289567654237) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(360.74896411306690756511946331688771136488408108647), SC_(373.6969652311938150400768130900484077592744972818) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(362.78524976646576768149797261169109755351913495933), SC_(371.82913589345423763047118921658797526510724459334) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(372.54552576173491800766004485010194479919568428546), SC_(362.0116654908718139260949415961056481036309288407) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(372.98813566515427631683338482712045668432152629011), SC_(361.5291390749811084504417254562125334632927016952) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(374.88565563531444478553167022230452125308706027274), SC_(359.4196360684773894689572718045271206366346502652) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(375.14200473208964142247294220509326744865117253773), SC_(359.12943261287394804686117931252440472710373860381) }, + { SC_(406), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(377.86768671460151092899619438470024471814310841276), SC_(355.96285214309712322222396361920231345819585527958) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(363.83035773696511358910280656722428650738613453542), SC_(376.74793850739754922105815437673158130958294593861) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(364.06824716063384140505249688384378656237275006457), SC_(376.53477169207912891287228022143669566907441512176) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(366.03344901728882188154525573037306211362834217721), SC_(374.74120890438979142191582086893213835145372425611) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(375.42933642002884418290245637144185197638039711828), SC_(365.28704773398673616560846611277574277684555828387) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(375.85434825337706847700026332569109857651323664895), SC_(364.82136533234277318579680123735981905186182281287) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(377.675187324558671761849220628164273082626179991), SC_(362.78452813027204440473289022863702082037559297584) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(377.92101738114627283524276560772232796597256756152), SC_(362.50420083271679904307132666561549549674284665148) }, + { SC_(406), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(380.53231706491709928713958921749364116445502381636), SC_(359.44358763404226115997385087391406304105764583554) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(388.83458236828433674956067036149725362877037867574), SC_(396.79238714932381134581253707158587546585292589912) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(388.98735725491332666994905097973915371721242833315), SC_(396.66779876680487608850267124302215977971975139792) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(390.24175545579241288279312108042802339750800726642), SC_(395.6089202769895603564477959768184306236916193329) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(396.01736209695449043553420762410770353160941439697), SC_(389.76696470177716780164852642747106476435773080692) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(396.26828699310137800470607828614292034295146515642), SC_(389.46971360158208596464867962419008396627587925428) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(397.33103695342442759345014892478887195861466421446), SC_(388.16065124441100501431755452211264977841194542542) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(397.4729192804933882647362925180394893268984508306), SC_(387.97938615995024843776135580657945628799935324308) }, + { SC_(406), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(398.95418471856031999162347256198176140280927675767), SC_(385.98402215006027732814554873509286382288651517345) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(44.38645633178599872998542741972213221710226793035), SC_(59.833471779872123946950438275617484463386006775065) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(44.645091990039119443261114148763180770413634830278), SC_(59.552549470949693399803252714278468639872817883924) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(46.815512453441092882719993921878756569900322542335), SC_(57.227378076269842072760565756548445265206858502337) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(58.111453913999297597872966400068223365225062241446), SC_(45.983981271143647005600438373271770702404678583512) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(58.662434743937981450745127665382443409655390540474), SC_(45.469669713586727309668617146162156030821716704259) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(61.067144544376544012211991433188044586689125779124), SC_(43.259668354261966084470264046866453476405941586509) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(61.397456211823203278850244463890205193407419957196), SC_(42.960447594912781761256181359939694240468762103506) }, + { SC_(414), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(64.994162742608488191369989390093532646385266945285), SC_(39.768531488819597369556976473123425512623941238488) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(47.684995957352031184562849647697187393314822862276), SC_(63.56311057062012634869848638780894112677647204878) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(47.951426946347794948852371164129651656311604947028), SC_(63.274902884873934588757525295650536938580549631209) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(50.186399736626203225534892187840860981989754833084), SC_(60.888717246353508270904165714118198784190670151644) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(61.796143768703721459867070412302175873110087492914), SC_(49.330317096956859517198418103660169371255991457588) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(62.361582561100943322780231962884349473240045505638), SC_(48.800709254532392908735481969675480911129125116154) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(64.828562747452080698561453541015955959742006382907), SC_(46.523981422545558964218473177602700516772258851466) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(65.167324697751105759045827532311827063128202331597), SC_(46.215598096379940633308746677566860427852598006565) }, + { SC_(414), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(68.854496743841268083130020399026634602508383682748), SC_(42.923924023290350555109493053488733603625845913384) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(81.40740698026636746246238051988618166000169834283), SC_(100.66478332312340861681894902836553558055200570102) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(81.735497165703996810150036452745921630341048889622), SC_(100.32003930831313229367381852974700604408306250356) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(84.480349749027568891070969096776192002823944963928), SC_(97.459533672598299555906210984747255273350111913967) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(98.548661025954912880274298754076716699029732350275), SC_(83.430494465139255016593946576218272409117020457652) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(99.226495013236902683655563182430633539340837973893), SC_(82.780065499077253284000532925099968038452116472172) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(102.17659779950649117803369242586246134285295150533), SC_(79.975455432510731818427277173149525016548900455621) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(102.58079835698194258995419546171521619729486515625), SC_(79.594483309192904142943741619021500271601973946014) }, + { SC_(414), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(106.96663314957336394375143454775287276650607116716), SC_(75.510977856147129834499088781101326356309986580177) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(327.74925136746640617162884760289483797454767554111), SC_(345.77877967868368159878353948012931840592467441265) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(328.07359319588907877725394249251420075601485493991), SC_(345.4732303045117269281758081683741285340837786182) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(330.76272614138753368049357313011369272749379766165), SC_(342.91459801234274359915955341589953168647046394288) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(343.89372058678062212680923362265591142971886816474), SC_(329.73929053988298213976382185886028632501721038201) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(344.50002274168559399579026023186568314923203281353), SC_(329.10206516484564707078699874393725343816763512189) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(347.11163143856525311588271367747291656238043350302), SC_(326.32627887094561379310297978993805142827150760619) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(347.46603850951581190279919161014216409666216892211), SC_(325.94565919045041725480895792663359038401416523051) }, + { SC_(414), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(351.25937960880842616722210555105133360708833891331), SC_(321.81112120677797780568757324460497226407671037949) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(336.54830234123139365588474321804257581574613210035), SC_(353.77155261445521345323111052642265635805498739529) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(336.85915106041952883466772769073790912277198562928), SC_(353.48071083400275883087124593978281594599423587012) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(339.43508674354082896828756137190160379131484098556), SC_(351.04370612719513089234211310172025917470606381096) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(351.97660464288367265227936199419519044372152372431), SC_(338.45501325788607781883076083885708351087782678779) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(352.55408591900318556532289062984008932876992655056), SC_(337.84461118618894513809889110292466112631933390987) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(355.03977944289475351841350608857220592350684811973), SC_(335.184128878906276408195996371023330909561838398) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(355.37687285271544623416227223390977817094978700463), SC_(334.81912779162497858808215831734069947138433566049) }, + { SC_(414), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(358.98136250384116686569501219465997577308788572571), SC_(330.85135492230615977480526966930962009040819957032) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(367.68301973446039487443005111109826435478599972723), SC_(381.23131461343273425439869731216963243299146212057) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(367.93171470444679784994362511176597333931459122675), SC_(381.00688142305516675156190406886176696295807110906) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(369.98719379798337390854996967478878446483900793195), SC_(379.11984993579613152720339076218581284747981918651) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(379.84356384895957206212911435746192850143986957604), SC_(369.20628812152472723594481142813151904703046251442) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(380.29072384921815567417034835857756674583148248979), SC_(368.71921364442546944329874530941764171404672148501) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(382.20797906764271989471318689680176944567160866829), SC_(366.58998884118491100022949521836300557596145317318) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(382.46702404919388752767024510056667312083233883523), SC_(366.29709206342545560421956362118040910010920889068) }, + { SC_(414), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(385.22184834252827887994964926755299764183815055468), SC_(363.1014132476372347738915057885013844796820780281) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(371.07391145788711799824131196713311431797458163593), SC_(384.11839538734147770479612726139577509627005601614) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(371.3140212376621404316874061589161593981914269712), SC_(383.9030065920324007858787158913538150364394343809) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(373.29770674366943757962912354044703652823377696282), SC_(382.09095064140551354067708579161386979464922161688) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(382.78613160250247238471423846750867488247098826589), SC_(372.5442549010280081645747371858187110821151837876) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(383.21552552677588528052871496381009107446808897859), SC_(372.0741926318333041631561835496760213745425570696) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(385.05537232237214517437555127596271944288344935774), SC_(370.0183624167820315529849146476793440010436702405) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(385.30379905793826917777028989949545739448105434888), SC_(369.73544124565849584689204002129369350307849780288) }, + { SC_(414), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(387.94317227757913413047957208975163538935581965528), SC_(366.64680272167922118675750189353232934072393917914) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(396.54625838361135955112011557348070679689721885558), SC_(404.58258219638738333630574211211627888309688043367) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(396.70040798894791110437217128793884376276909722682), SC_(404.45661460719627926261187680232830915392910248249) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(397.96624450269005918407621413399421795424053294492), SC_(403.38627209692876680414632673223057763316475670853) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(403.79908359097971212386396162783806955475848647244), SC_(397.48709174617485279919871695051814044051447681559) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(404.05272486603121032364294976512129085283758540282), SC_(397.18713026102097802730377606290544617689477740425) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(405.12727604028433978946332708351000776255892722047), SC_(395.86630756576072556729444877988382021633804455706) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(405.27077341511268961802173002505224625504019758166), SC_(395.6834354053048567663890536421923512230885870112) }, + { SC_(414), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(406.76956189527341809003550213309446262844163556548), SC_(393.67069070212176244841956544554977900759097215994) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(45.32799555310255766222294762132673564117728886045), SC_(60.923723390013394363995039721726570503439947548221) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(45.589233734454889749341219096450584167616638158658), SC_(60.640199586937692740058562723647850615731899654722) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(47.781319019673070999642878948482045688883428966549), SC_(58.293369422687915415460725076068597108772199312178) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(59.185707411608282615687037694710051384288747548937), SC_(46.941523844842333492308086010871091342733050684841) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(59.741820493804380481680645199329355128269100822745), SC_(46.422078620014937062549740506059158012492904106018) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(62.168783193108737314353910543398057288539195384894), SC_(44.189815048921166090360262100511247770859661243229) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(62.502133543635841652921615491255505880394349500187), SC_(43.887553837685690204092654733628146161807686607065) }, + { SC_(422), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(66.13166421119186102150703697048822090352955645682), SC_(40.662783403662737281615916303561270262181605436985) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(48.69238945169823555896998896327109125894025235367), SC_(64.723350799685249007945797189391170761906979837207) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(48.961495154497690331980946629804169044587183197752), SC_(64.432469355556185188249824853277766973070075463272) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(51.218734270087338458275697915395163865672781114056), SC_(62.024023014294923185758619464153908573874323361222) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(62.939941364692261059282402025275015604696926501396), SC_(50.354158091142468117386346046458608036889676645084) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(63.510655044637533896562473486502942742808562033931), SC_(49.819274046549133356328997111718654107288246321362) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(66.000506220316676328246290457062101023650986413839), SC_(47.519666578809003256154040736853671397169045589091) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(66.342391204297343970199416295096358341957251041147), SC_(47.208158577563863406712876590361486654078997491027) }, + { SC_(422), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(70.063297624829078395422872592150451985165157949128), SC_(43.882722137181999988657296381949859405288089888169) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(83.083046573326190284617757556862056048190343707581), SC_(102.52568933902877360087495098064604645823627098142) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(83.414377719164209979796432905919026536617819090636), SC_(102.1777048765573824985245214342218973621169203401) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(86.186214146712292111152890823528128547020663445994), SC_(99.290218422482031234789999844682482423171057154612) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(100.38963859970068232029997487370617215965461559456), SC_(85.126065116196867952112512079800711405849658994573) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(101.07386596171651268356637574467669987622005452626), SC_(84.469242067721704721083064019492094863791017731127) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(104.05168677528380760202901079845518645883181750758), SC_(81.636909336666838426459314962567633518098402445743) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(104.45967187184613925431683582806425170440614679807), SC_(81.252151796433561220057823021017478328964855773116) }, + { SC_(422), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(108.8863799860713290466207310817340219434528587614), SC_(77.127758121576843819936711231604260524993569479679) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(334.18029784745400452147045025682181283967041049007), SC_(352.38331087405583262445692382164897782015105875302) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(334.50767417631003788401903873869393576075410449823), SC_(352.07472634699023219305954275218857759748277864734) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(337.22207258250859898180246515008054940035044106257), SC_(349.49082474690628668515326546617032634416327224624) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(350.47958681695718343567030673362599044497275932851), SC_(336.18899865793795414753073646963153267735834412455) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(351.0918767721924709986775854976212428999554279759), SC_(335.54578638226987539420085637198667550402536796279) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(353.7294478733037006061197554526682505513423558618), SC_(332.74404358610327160274624977982810502232251306366) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(354.0874001892534764458553927867772501037860589594), SC_(332.3598797787970773437343447230666407041275800513) }, + { SC_(422), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(357.91903898674005775348687493771738292815886938119), SC_(328.18706310359028957613814571183776347299811127866) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(343.14549554499505003950117049979940714430701529777), SC_(360.53449515735062440861949534009639388014154414451) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(343.45924355177759035430581278766638555486456411251), SC_(360.24075333384102264644936031333938330573626222061) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(346.05931847168510732490140423159409070639438800204), SC_(357.77960493856432964913893087293403463313526202861) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(358.72171341464095425879645376890421591635706765111), SC_(345.07003638178882297341975526930764758876417014158) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(359.30491576032303344731303121195322661495133793094), SC_(344.45391428152049878409796526924279045717437953272) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(361.81541611097246211290936811769092632190302599965), SC_(341.76863198220942470066844856054207621991132746102) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(362.15589710687013452847090569490474856002909653124), SC_(341.40024460460684231801218744040156484652101037821) }, + { SC_(422), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(365.79698412605900031249268815599910871406584378241), SC_(337.39589641626176303138050598942774705079197848664) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(374.86409950979993556265927884974184060121615871126), SC_(388.5429032225669026231397106914986368805060002534) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(375.11507780215043108565896944668942834154081025872), SC_(388.31618528038655933232049414139121624038594175963) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(377.18956533487522440458228166684208620196620236965), SC_(386.41013696953947813614265388275443655475816154722) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(387.14110428911259671523206213991187520477397608529), SC_(376.40140879775044863602694833409846554766467449618) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(387.59277047338795028858657321661734177427413967066), SC_(375.90983009634919998047204695551434002820634765706) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(389.52957016291340086271626786811287584209033421583), SC_(373.76107376825202929196344026720598279048202425015) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(389.79128492203255875430358887622877546118016998367), SC_(373.4655096787640544653043414645228017181681158269) }, + { SC_(422), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(392.57496836308987356514886759347408022594741577705), SC_(370.24101400461995012854068564588995359895897580013) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(378.31807656653857847669119122123892022772823941995), SC_(391.48824101042426542446651658229277066041759247181) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(378.56038527875490492691798340746986452828067132267), SC_(391.27065171964544235151834903232124892178033902758) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(380.56237624063224298352294232439222285569319142629), SC_(389.44028115399297165914143058156174696287197039907) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(390.14244751125498238999803626861947148547170807838), SC_(379.80194178088033168814829256983016226596326987979) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(390.57618121988312313084341159126687261271196758739), SC_(379.32754186792305823965973935807246148610429036832) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(392.43485190336766569800131075444346122865126895737), SC_(377.25290192433640736581089675132513392244170795904) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(392.68585015479070825038666145059811366949071112845), SC_(376.96741193686508148999066892728072957180085302775) }, + { SC_(422), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(395.3530238653443929986755361194488127376995976508), SC_(373.85101929459662532313206972943220870916500765819) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(404.25831435689598524806937324273899449929522641271), SC_(412.37239792742406196892388342030360531292701826098) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(404.41382535869778332971154651091385561034540813528), SC_(412.24506461628061523199225088596394904292416439358) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(405.69098952050610320588792915728073658612362858518), SC_(411.16336966420398102155536592478246947723539986667) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(411.58050839730710563235532845576110626239219458927), SC_(405.20751692754723778242612662474703489008572312004) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(411.8368396166733748366879589270895939471759316369), SC_(404.90487127937020384440784465491516983804323338449) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(412.92307652063498768240402621884915080395919352836), SC_(403.57240224405061382271607883044386552602731593936) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(413.06817303931460351532227447065369264722067683342), SC_(403.38793861652312085125050868045776224392977834871) }, + { SC_(422), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(414.58430977879379304150515993799285853858548954945), SC_(401.35798257785370969839805336064068861593754253383) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(46.270237069394545316899794015235209083099073205424), SC_(62.013272633651803618529871110041554154397414836409) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(46.534053132432135395355195393884193036072566293111), SC_(61.727171939835030030351499654047370975138021223232) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(48.747598317591452565617793288590536724689350226152), SC_(59.35888770522676212969685975664562282304693780846) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(60.259409785541897195083295827021404337736422618764), SC_(47.899617277578690441526809886662709691726481574955) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(60.820606615274620722885136113513162221450420335523), SC_(47.375086942240003391725933630469664804163812628265) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(63.269611735093601207397362884493372470792587075183), SC_(45.120771981989731930430668352848713302104933555654) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(63.60597200357646260661168544949084109487752166132), SC_(44.815499149632136277782564110917978333189532682462) }, + { SC_(430), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(67.268015643097433087299158599471365141803645454709), SC_(41.558186680141723720736148810679528027697879380714) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(49.700504698615067318814632163291565142170214520793), SC_(65.882869210880922992620200195412123741252183014595) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(49.9722597963102695817333487812513827699514206055), SC_(65.589339291973539214138627840912261299697790579682) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(52.251554664278927589424268007316588497616827638353), SC_(63.158842613895608199245429131877507402388254717928) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(64.083172570124423206459741959364721960802052280159), SC_(51.378565231113391044901304319497997566210712118756) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(64.659111290098736116464138912809938052379484221507), SC_(50.838454880253426271539543812148377694250401351829) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(67.171617159067831582292905550428962081875857600745), SC_(48.516184392558524285887977169249569258933750136304) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(67.516595617814065605951284904448003500584289523205), SC_(48.201581336072115104150332128266447039464290226325) }, + { SC_(430), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(71.270916684116416346588631203651544671281678479384), SC_(44.842703302362599542806037880781995037535754441896) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(84.759560537332772103604482431553991873592607054636), SC_(104.38572095225850169818629018151760531683227131804) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(85.094102005152248714743481080535670745347802650133), SC_(104.03452666155001072094986432150077221496361832543) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(87.892667350799571032347956785634382637407604354732), SC_(101.12031420339159980054642503992441021657989717008) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(102.22993002165839592687076234467199047769995041333), SC_(86.822321790525785743549182764506479594433031791874) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(102.92049037831749650671743944604256507113650236164), SC_(86.159165065880843362692962091788126093584450126403) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(105.92576728512874721152206263417146894652747279044), SC_(83.299371776269275408167540903678500107525597770828) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(106.33750113403979113968177796857521167781275029389), SC_(82.910864638468086144466412433829698672828879566972) }, + { SC_(430), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(110.80469563872921546012797391737269243720238512675), SC_(78.745970228537969628468808236482332465510573103865) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(340.61216326912134981082963627874034435206545733618), SC_(358.98702316936590376319344684146243415719518342095) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(340.94254541848933003194535353535143049264912563367), SC_(358.67543219348119225008157095680708432239999624836) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(343.68197062663952419474573989641068966133889838324), SC_(356.0665000862749223011166243684126931509960804429) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(357.06481059036609742660240645334678199407961573973), SC_(342.63934939736521474884003193224954165323036870442) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(357.68303176087452512219719798872865996043457380284), SC_(341.99020677291424105205440713851496458314826127249) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(360.34631970253133602048053752092263325600680853261), SC_(339.16275281955100881518302453240006842612495104213) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(360.70778369911672742351630829298375978254479982974), SC_(338.77507840826879786426158092190756656694806778453) }, + { SC_(430), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(364.57735698634211285657064204127603814485099047152), SC_(334.56434554097268359210061654906470040936093436958) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(349.74347128269181385371252119044928078223427580578), SC_(367.29665521563065419190981205906508404278951808122) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(350.06009117029968596928232672883203596456826142198), SC_(367.00004078378253062635849860872721320445698594748) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(352.68407727379111042308196442993477934069718594636), SC_(364.51497691745048231059206462546591351252069107492) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(365.4662083324878688980615255857365963405711582008), SC_(351.68567355116180441892718140894782521363495825508) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(366.05507767060799299739965428112838693300416114454), SC_(351.06388546105863041545507379670997117631900969541) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(368.59015013936725222757150415839518270417324598667), SC_(348.35403762533119059979972316058520966376326741957) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(368.93398663638932569971728761560838854587558450155), SC_(347.98229599424588161324123735661082750025446744691) }, + { SC_(430), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(372.61132373643957399026103555726810227759638752882), SC_(343.94171895128875992223035450571332252433480607441) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(382.04579603428863097096826224367731819484865909277), SC_(395.85387519147975754300498667607777505602360432299) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(382.29903603966477710704629173830388745251757294964), SC_(395.62489415947626577694186278212108799955376506396) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(384.39235225806274464469951929582067745592107543468), SC_(393.70000908569492349033411479156962957462378091237) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(394.43816117865399994104472557958177446039658704264), SC_(383.59701340039564850030130644297811854801853981633) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(394.89429088167633544418639421008453682258815107091), SC_(383.10097306821216706836689979259320035785447299659) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(396.85044969461734993750356704925042429893465479507), SC_(380.93287008558836281453937770458167558945973605669) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(397.11480886853716354761164188762275163960498578311), SC_(380.63466395573665907045378179916430329980015621802) }, + { SC_(430), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(399.92707639843653202571455915845880456212887592894), SC_(377.38162490061324780114475076080544109040892169042) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(385.56283572415734544388649816822714895636465998555), SC_(398.85749270729762380226523968032380038113558522788) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(385.80732255338164378341601176148588934667399626073), SC_(398.63772379398292614559344976476575269452569013143) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(387.82744583279206230672922578990941373784342158517), SC_(396.78921208664463281939097869116499374255672166219) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(397.4982977233051554413002521578661380157532254823), SC_(387.06009477147530417452944169179020058016915708932) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(397.93633011207360866790436488829962618056863616672), SC_(386.58139824072226369498561542986214709030304478614) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(399.81364608161840705039429104801181145068055767359), SC_(384.4881266488290623183412806193015841135327687252) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(400.06719140380562988118971588599642615565356504284), SC_(384.20009219008300775380449592178089094896804294878) }, + { SC_(430), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(402.76190038342852778923780119372508474662492797988), SC_(381.0562089165064371072230053088936662908215555225) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(411.97073946944811601326322260833509171089209254416), SC_(420.16184511758005078607772615632056032209386502913) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(412.12759892496549730889136232481166910161578665566), SC_(420.03315918112173483555624881892698478179799197507) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(413.41598321788633939315614910634093615329184649262), SC_(418.94022017064968982113513959241115983544309910407) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(419.36164492001902663229574962780858186649750153422), SC_(412.92823175603147814427137955730197697472835447735) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(419.62064040597421906268850608026780740024080985227), SC_(412.62292742090631348467137481877427926511616810358) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(420.71845088237520896385806604754288643539831800395), SC_(411.27892279552996942751698112075236093383542537119) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(420.86513110242503373515454896722290661535164319118), SC_(411.09288286437759676562717736722567151397875522808) }, + { SC_(430), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(422.39844646697324295008795641710817439720052707278), SC_(409.0458800016796736300568094881362379517871208223) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(47.213161350011517873649210456728453609034895561662), SC_(63.102139045671836353970190596080435879856491747101) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(47.479531340392064753429269736445106301296574577863), SC_(62.813485379520962919736379774660247279649134350379) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(49.714337211364493941592843160079113551740205350017), SC_(60.423946078079941973301812679603303390474886702081) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(61.332576361293144145702878092456498693970376188058), SC_(48.858246258572342507735295740110997536522825239374) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(61.898809783450951292174393948975728034134432868788), SC_(48.328678017054564373647754502642339656763370048575) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(64.36965270614624288539136664874867193048037589262), SC_(46.052516610810677534097827590764870485230859653631) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(64.708994929028753735597361780621857500939237210166), SC_(45.744260182940333719788387635523584770332719620196) }, + { SC_(438), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(68.40324905785844508205478501256236632251435822426), SC_(42.454709226289471134397228004201079813702580560988) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(50.709321628059909674007769008930123966938876508593), SC_(67.041685878100122956804746740045551296501060889247) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(50.983701507529417890396449458206898018710971166569), SC_(66.745532064153160641410270846867295392733419183382) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(53.28484741899603381493186143510929287910332914466), SC_(64.293189562353510488786724165317401992001249188556) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(65.225853133466885536138528230857594727176005266758), SC_(52.403522781998266517451869427817666746500503046627) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(65.806968432797579839761925635114331935585667588275), SC_(51.858234631305645184153982690166217755490854772144) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(68.341918721044569252146262906455285976889661895462), SC_(49.513511700017233765872242610767558727912260007297) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(68.689961919217329935186142319716406931485289500846), SC_(49.19584238122158430254664810791974433450969314107) }, + { SC_(438), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(72.477386822197322369819360678681808189292325440047), SC_(45.803834551106175231210981230225370953322875421542) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(86.43692457058683806836357500721116378725594781031), SC_(106.24490246633818529765409985913784081530336717002) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(86.77464657486117522363138154475159481838235494384), SC_(105.89052811496050044297802708518959718301835305784) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(89.599693004239583130744262632616709007231011818976), SC_(102.94983738132763232305514786014631243093542340533) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(104.06955435953671978986132520306314860027855916542), SC_(88.51924542751734465416156630184399564826593643713) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(104.76638900973074146777783927285664660713214370326), SC_(87.849813752540510466720918021874297913749933386745) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(107.79886736353841845499496898637328669901244087673), SC_(84.962814713116430879406193371636066052967272125336) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(108.21431517436318512896696055386772677765458296041), SC_(84.570592799007926539647002878737167133846873073308) }, + { SC_(438), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(112.72161992184793758807162671726653082351273906896), SC_(80.365574326739725854559107399999547026520631877048) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(347.04482486656639393111162554313594333385134098779), SC_(365.58993932810210707929084018905424402989824067246) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(347.37818495458086102110075756305215497127188591149), SC_(365.27536980810025748698603969896832026372194546912) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(350.14240494345630191664356591502882641544593617481), SC_(362.64163934931940712831343566648732072879501247322) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(363.64940975893017664633535373896348270429777687094), SC_(349.09032489713360097579591778614327637749066214039) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(364.27350713424838871929102707500380149940177133631), SC_(348.43530690295884753994708596700001791796003013392) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(366.9622731923293681848080266107451335546103037329), SC_(345.58238030982854773354687251022622335505926908032) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(367.32721624096124627911364334514310683138608669551), SC_(345.19122788390188223524625316585860635263687510842) }, + { SC_(438), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(371.23437095411654437001339477566698325659085359148), SC_(340.94293121825751471103089691503297437010999421665) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(356.34220779765874948900569854918512416922345462204), SC_(374.05805454308153973781690795712907291033870514196) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(356.66167292206737577159459272320700542932720984228), SC_(373.75859417334641611298121277453985635357570210053) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(359.30934849930054954395763478220296107536679591073), SC_(371.24983670109298674857710889469271962893957768296) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(372.21010645482781758139230445807569217653177522316), SC_(358.30190769698848410803842083761923603105606455056) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(372.80459021342960832840982293070915820992133745161), SC_(357.67450615270320007183581632904268249930868744204) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(375.36400663106141243299308872930763939856507153625), SC_(354.94032071055475865113865829261764876974265726919) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(375.71116743917545423508482110487196633707904727249), SC_(354.56525597053573100051149205322896795407402618768) }, + { SC_(438), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(379.42441703904468237990419032859048570187723814476), SC_(350.48878687642717811911229738533709935597611079913) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(389.22809214487026894764827264336653211143714623039), SC_(403.16424767664966441187051127299884304424307667168) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(389.48357285593148076651064319497453637413847772007), SC_(402.93302461195125450476867454684089818101851757959) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(391.5955430104893312728786680850559174166959894489), SC_(400.98947781532631715464705073871925602519715606535) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(401.73474796095996055359766823039112819893242107919), SC_(390.79308846508143082558267669959864050930414497681) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(402.19529970703215975262649606640730665429679341129), SC_(390.29262790992957205896393937196880017887692852005) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(404.17063747238064493418847755244915582271350299217), SC_(388.10535799234014641377517320857618726103971000395) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(404.43761640804197957439589896478596472020795027967), SC_(387.8045343887682537047031551223346202572033915054) }, + { SC_(438), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(407.2782006925084955545735905175165472085159380913), SC_(384.5232177924852180423019639676524748147843979802) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(392.8081723963206829490202576160733662163708410676), SC_(406.22616700492531529028247127526720928861163225443) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(393.05481710711102168310206094830689240111127394811), SC_(406.00423875890386329645064487208754355917236380752) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(395.09290438631921843136112612250789625506943842608), SC_(404.13775454458398135517337613597976681693624085217) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(404.85369518662611595815156864620475324919277295442), SC_(394.3187009016595359887500946165978602368278401406) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(405.29598629777702090178092697765786066934957487457), SC_(393.83574763683069023040771721526936599620877005614) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(407.19177394239041013671515709690291340521915450064), SC_(391.72401751430363291478881128938401568304794235537) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(407.44784257475313331272708826619491071194017997635), SC_(391.43346225030597120327181876998469065573185303534) }, + { SC_(438), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(410.16982905784505016961575468389015005564387836919), SC_(388.26234447167567419610419567272597587716040291715) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(419.68352340634527197560713180855125493175537929863), SC_(427.95093404199456607768879422498986269844300208816) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(419.84171873465468938181828830913437945460430462219), SC_(427.82090820703205445849597458777784131665728226645) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(421.14121864322710545978710775396597293148019409992), SC_(426.71683047588180609591792855084498804681460325936) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(427.14250117438884987294019087792091205257908114113), SC_(420.64922813719833438375003632786316606624080208372) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(427.40413597065778162160221513923209271296323279612), SC_(420.34128988001557074024953314472211291738186549796) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(428.51341103250829512148870426073199869072584263787), SC_(418.98585731779304931892651968635803530667907609132) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(428.66165995098117819241632484650284847482360584946), SC_(418.79825582175927363620702818730880463649270036456) }, + { SC_(438), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(430.21198920649725911101811714204078276808639176506), SC_(416.73436602666193927516805654100166997050019081359) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(48.156749753053794278116103962489125401517672389909), SC_(64.190341271880975417143516713290413870041284350826) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(48.425650372155193272387050172706629918773035569466), SC_(63.899157898002095650034718125634048627685450089907) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(50.681523162397264020631317883776609034948320615721), SC_(61.488557096875495555246714745789142676086496086113) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(62.405221766966400417030173331529173500505430548345), SC_(49.817396173360905381597032617509104290343975788129) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(62.976445914604181434225477673877209412931048717897), SC_(49.282835939211811911060714534735867785342185336831) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(65.468927616249083470558780782918959777816082360183), SC_(46.985027419023867998937422171260985258917952567318) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(65.811224594999907218926426718967154959693193363753), SC_(46.67381465289565827091063978402875361642287765299) }, + { SC_(446), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(69.537395016332176593600462611095542670417366503625), SC_(43.35232041399866114932799677576620015503710740914) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(51.7188210832154561124283838217376203932307241237), SC_(68.199819961714843692953014383143838806676502957092) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(51.995801804927087628798709564053047349798882825703), SC_(67.901066160661668640881500463247321471507213490533) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(54.3185996478250420057403227533406443249021797434), SC_(65.427076761846303034208853005387399828398418015599) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(66.367998086620703799004317986591491804087512228582), SC_(53.429015724502927464455363011160950611448547692373) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(66.954242828348376824674648426543909160070108971057), SC_(52.878596954262476079148954322353515183376963238759) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(69.511433009563906564011527026728205286864580925537), SC_(50.511626391869058723983088976422912972643751252124) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(69.862512997858431952359412397555777994289321649361), SC_(50.190918814570908761288766385043987607540142009193) }, + { SC_(446), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(73.682739440924105237892639143599554562270885924872), SC_(46.766084419141035728168742378293789166788451772439) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(88.115115476647100386852917189129771582925251081869), SC_(108.10325707939817105150096601073395846369228263169) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(88.455989045889006166251315595980432749263365978285), SC_(107.74573162184210302199056613008321329334205732738) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(91.307275493543776055975086314889611741480685851515), SC_(104.77880357808425913308897064897391994910106849519) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(105.90852981393496521800064774473793968006251981964), SC_(90.216817833158721378999290033233944633639223477727) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(106.61158165914209065431510266847205745187263719103), SC_(89.541168329779500756409651254509890067762497078278) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(109.67101376971634448252602377620039222439995826816), SC_(86.627211384558638968248743722797105991258253857364) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(110.09014170293838394926167604460366827562879416556), SC_(86.231308562828872448728488481430140693022647434526) }, + { SC_(446), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(114.63719083733676435762020664659963878674677515022), SC_(81.986532380861605442223992600858018689797362747917) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(353.47826090951834016009063039928810523438546829544), SC_(372.19208107830406887039780638299699685185603701018) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(353.81457181603351098424844371353744358466584192584), SC_(371.87456015594474117128626523066599601402801399115) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(356.60336089986722942457980854187565965220777952707), SC_(369.21625715850461716301423580908187564499290945559) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(370.23340136286070318007617655861058642574230258023), SC_(355.54190810858328191690534507523926693622784430521) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(370.86332143541645977895359953884316859349595559276), SC_(354.88106822252936373678180557099626585579195112359) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(373.57733341361818727611194925680556092705525981657), SC_(352.00290099031616969646721736709370624977127660349) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(373.94572377878622253846195926542230567161953353999), SC_(351.60830224810625578857359106622410288947083937983) }, + { SC_(446), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(377.89011653497846554623300208474922248671897242991), SC_(347.32278453308078219860556513971128698656887912659) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(362.94168432307987827035268081367974746506722904753), SC_(380.81871390386135904052132883083598384217359698918) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(363.26396876827600040163032387018880790668635899431), SC_(380.5164335372654339267640796921570448707106139607) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(365.93511816406086880080971891254327797182755335959), SC_(377.98419826128727731157972071754921841213867415835) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(378.95342406438517966638136766144803341054914947839), SC_(364.91872252670108408686208859449752267841040570902) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(379.55347110812248582612380571350872893833238625852), SC_(364.28575862921253358145856516860783996738052511795) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(382.13700954663236265640933082299185167207376562074), SC_(361.52745728220514386474567803815311163194870558564) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(382.48746432987585889363647703282907612322728077425), SC_(361.14909972617377639690233713129548973404962667614) }, + { SC_(446), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(386.23629811069449819507369092834581931943088464936), SC_(357.03706616415568326322426541821533982457589201131) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(396.41097146003227509012225939346662411411284932416), SC_(410.47403705352696506309432908393405080434113828998) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(396.66867244399882849101416888908817541174091037216), SC_(410.24059243604992360629301674740026659326568024046) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(398.79912656129306564627752390868234655986516455223), SC_(408.2785541651897141738465850193859191780293841102) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(409.03087746790732700945161890027208415928359550708), SC_(397.98962114046431281237657251623367305002885541988) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(409.49581091662885569088405553385661671217975438059), SC_(397.48478063845536762874489327505218701196034081042) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(411.49015240343343926268598878036918343728596903203), SC_(395.27851858947241592160999417827192251263325412592) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(411.75972712498067298160599125899693431292827749968), SC_(394.97510140625119685135543193339363615138485717851) }, + { SC_(446), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(414.62836819918362311721155852376907274513824083925), SC_(391.66576581996251950805557355898955711976193331058) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(400.05407080165804096108998662903471380058567097781), SC_(413.5942796778066692791993567510567454471342179647) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(400.30285371212558347680372383138095274143566426517), SC_(413.37021183246174838438567565775222108931568099239) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(402.3587412744099684113408506403007629408895045125), SC_(411.48591912808740479863722231725232796878475517608) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(412.20865226019980245018871530202159243003416317964), SC_(401.5777477909690379203824350857809679348248182972) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(412.65516323010460271279937426294240897261247394527), SC_(401.09057658556836580786997897293728884294087705404) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(414.5692537013859158169828730204001195327978313158), SC_(398.9605563137627206824996862403351609530329958582) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(414.82782253646661629552695475770453367266134002886), SC_(398.66750326247031448701375924330280094272108373277) }, + { SC_(446), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(417.57683587045940695958695435349342508492436897641), SC_(395.46940008064360921118887105545328846033566490858) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(427.39665632419660221757318140935343778573385115416), SC_(435.73967450764535176370329592532469463907438060904) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(427.5561752896637563351228553244421469875651859749), SC_(435.60832114823934186726809793480260885008465747535) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(428.86668916291577145993396284165817349848516451965), SC_(434.493207128358585277618701040005783141893971397) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(434.92308481156828091235715497642429466865587918174), SC_(428.37049834673872444786974641288187710996500079189) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(435.18733465018754503862085409169084074303948311036), SC_(428.05995025366591908449247282392265696086917906617) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(436.30796833423132862942305657629999891546231611204), SC_(426.69319445257873220848167172463969284451065308506) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(436.45777136724686166806595215871203821884279980056), SC_(426.50404572514683703751339618490661252026245756339) }, + { SC_(446), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(438.02495444786127178629126967345181894503981330409), SC_(424.42342448143340731445219787807853460527030004589) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(49.100984469765109441684126850150762200324947709569), SC_(65.277897124647758755594455085701621676098278083624) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(49.372393045301165441991756284507224209617152084138), SC_(64.984206683096124771230317660339109659937448029389) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(51.649144191997233219609130284058408721887314405882), SC_(62.552732756128399639386289660118365516369324943617) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(63.477359976913932931283634563502474557837445480556), SC_(50.777053060259106339144478661335521453153709808124) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(64.053530213656155026954742382590037602805576502036), SC_(50.237545514021268215096944379786442037712912745234) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(66.567457013757988383158981223624762023929136888766), SC_(47.918283852321348971110621638176271959037953196846) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(66.912682280617223076157778023232283325522700042432), SC_(47.604141271322980603452902054094240914435313279852) }, + { SC_(454), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(70.670482712063747802669939127630528383478003320575), SC_(44.25099098720249580076199583097648166524040543908) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(52.728984763355001731796656937837103403193868240042), SC_(69.357289765738557811447354821507709512911602380144) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(53.008543031188310802446146627303500157580297621207), SC_(69.055959243759838527023451823513951407795759200156) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(55.3527990397746993392296988291666594197800177088), SC_(66.560516538009465226861294374817454657194307003608) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(67.509621789753408332997521474690395871535186359021), SC_(54.455029710166520294566068159467712371271029481925) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(68.100950101450301843886266776239262033530806502624), SC_(53.899526233865346818087572452696837002323829371963) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(70.680181139885210317621998879452622114296965365533), SC_(51.510507347257757553576638284777285129398373648392) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(71.034270719841096746937352968357932561086503561869), SC_(51.18678876154573216549282006990460611473031979374) }, + { SC_(454), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(74.887004537364699114028841255367334108752313963584), SC_(47.729422851369482517419814616170968842604108524955) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(89.794111095210980326769744126324333638702277893432), SC_(109.96080695330547307254154609383358771311892996829) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(90.138108035553184271137109268693094802183766800426), SC_(109.60015856733649377485725994300003279175534058891) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(93.015399902308509097678752403806586540365521642169), SC_(106.60722771778258179908778234456131242722986080539) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(107.74687377256406021636990676728167354145227945286), SC_(91.915021625857560676885111585980494117579033187526) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(108.45608724523287344017464785618465381046311001496), SC_(91.233209883805755760524886218888605645230493731194) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(111.54223206734187654395239140149560546048731890215), SC_(88.292536223706652813923623787041811654832640348131) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(111.96500719182115984672164141407432163032317987486), SC_(87.892985453125773275887975291594209237143623790851) }, + { SC_(454), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(116.55144468815170988998312737566710628643359854691), SC_(83.608808056888124029496610124633432188112035436221) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(359.91245063855837003628948785151995629092526952476), SC_(378.79346917732518241159374053639622009964008750725) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(360.25168597108658270597182555107680066333986375403), SC_(378.4730232655730149568894022578488173296654387863) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(363.06482451640905215590317021931324903483848790408), SC_(375.79036748342018716265661932197145995293516682694) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(376.81680168140533949225211571734440256851689126209), SC_(361.99408274461916949135976332706766909255550497361) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(377.45249237930454355529782079030551544704417432123), SC_(361.32747301041193152616145933780861612231993980355) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(380.19152431693385827945997714069153988663610154961), SC_(358.42429091448544998331844103409653306691448377583) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(380.56333111618957640954651490831221004262736324563), SC_(358.02627670325176779034121995264126084877570544906) }, + { SC_(454), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(384.54462777886203657134371194203736737733377841914), SC_(353.703871475065011513333858395689280281665356875) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(369.54188102006306221597174018671765334890741520225), SC_(387.57865313440278739410302152244049988620358405586) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(369.86695956548619061871890384801837512836142966171), SC_(387.27357801520457904788388379164923813449335398123) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(372.56137290864362861166494458426597752332582414876), SC_(384.71807494598117046267042158460207080416705597545) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(385.69617671670295069192573940857412842377814660419), SC_(371.53610247561441268063296798572371549117771053089) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(386.30173728257579182661694595448799281904673763604), SC_(370.89762595535632827449176011734995574723701926815) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(388.90918177573846515707230688741433736236347438392), SC_(368.11542445519407241799242366314576060787044902942) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(389.26290101393273515696576362828306467336406391958), SC_(367.73380356255844499681086508568846126756261057824) }, + { SC_(454), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(393.04699950294674609070521209844609327472625760318), SC_(363.58652430874680962954347431083742881714697545202) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(403.59441833087207694018801830570527221159950607904), SC_(417.78325896541834357588191135673451105157367771533) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(403.8543197038072404577241308713642209418246878718), SC_(417.54761272376970741009118842477914641350031611203) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(406.00309237286350504417624014892875817982352897363), SC_(415.56724865050843224110457984938450181154278632745) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(416.32656195811492424527968711515099295949000038472), SC_(405.18659914985703672949471151269350758771830014005) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(416.79583785351087626227070602406122488457400255178), SC_(404.67741789602155383026078693599271923447329510535) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(418.80901254912906693972931996862424181697132347241), SC_(402.45233382329611411637955899193400113276127581599) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(419.08115972745271039600134310118472970327046797789), SC_(402.14634631205623296521813104882397022449574666417) }, + { SC_(454), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(421.97760466330551820579203739361835668058829102447), SC_(398.80924332523406423548525698972832493090352465016) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(407.30051586469324016079957806574099752146521018533), SC_(420.961845795077980065354245341819621859811822545) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(407.55141782172072409248776517067454494807078206704), SC_(420.73565755232998659571965193585659854248911096427) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(409.6249463455371046126453334396610206997647153531), SC_(418.83371596404814340502910260886849274827025452284) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(419.56318075085129618513308280953313187736708445367), SC_(408.83722361264221022240647391072341044335734187895) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(420.01387376096747452472804209167436047695130428518), SC_(408.34587221873019136977118496996435879716588682529) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(421.94610275921542982571094182667221336319925044989), SC_(406.19772565474350586995008089169045953998803293774) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(422.20714931329230802632181395834421916106198406363), SC_(405.9021972150872607033299038491915548775228531345) }, + { SC_(454), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(424.98294563717012645129883722024510271550575951126), SC_(402.6773510227308576034466156562391924007656158467) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(435.11012882151110612549173750396804911320870522469), SC_(443.52807588263700484893610479292247552746969782141) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(435.27095951829257915351128124035042001766514301692), SC_(443.39540703609223527045191866666234598783224487057) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(436.59238844133085704057369102617797495746862996901), SC_(442.26935638475817301739820506097297031154416250866) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(442.70340314129831269390667164386618527107159922505), SC_(436.09203500719619728227999718095318050546480050767) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(442.97024441156768587348613345630058348668552186524), SC_(435.77890051610337754724354179724142707844835704145) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(444.10213364103892764811838602767911638813648167298), SC_(434.4009233515753019059000496525064139927184967743) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(444.25347660462523729937210322189190593878879010883), SC_(434.21024133918857079374139266334607832906456259311) }, + { SC_(454), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(445.83735789586960269055530301889652492784711953887), SC_(432.11303992141923665475325840269186459012467057114) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(50.04584847331995562483275393325660419320694355323), SC_(66.364823634141754354687198302351675136965126290634) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(50.319742931767346006301600485139851271085467378734), SC_(66.06864816787209687343950334566141248784987616893) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(52.617188846987702707400514616575488811782447893531), SC_(63.616484523732817823774559390847729125667522096645) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(64.549004351923416572959996952805376987324385384544), SC_(51.737203570256832198664494618373278591569233958485) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(65.130077217909160211336367306936535626323886222689), SC_(51.192792213689340783250166225037111774388170370382) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(67.665260544532309474320200503574452874539227729732), SC_(48.852266259282523771985777476676041562048252008723) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(68.013388330367306251000688720114637847988999563299), SC_(48.535219685292496706664865041258838310315124444267) }, + { SC_(462), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(71.802540055421868170346684697572743253217029569524), SC_(45.150692977330678624468025972292740141400736443319) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(53.739795171222854539802098334928827183778178234774), SC_(70.514112790470495113367692848183326665903474182075) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(54.021908304151288114318535953257101991256018663137), SC_(70.210228200197934082971211057716971043126861028263) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(56.387433823936690833244464396145242776633499077766), SC_(67.693520675373405004474010232492611258429808283056) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(68.650737972587943016782286766131513932714835755564), SC_(55.481551020151500107128929845791794669646015535119) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(69.247105190815425587192453376085891492117810757824), SC_(54.921007540176788098869374790341778693551504833492) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(71.848183299959923271385148904301669635848906778566), SC_(52.510134373004159485314341368383765088809751258824) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(72.205255990937807491501326387765126674760451036753), SC_(52.183431308470588357470614266264042994621119089194) }, + { SC_(462), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(76.09021079023541008927650189975220767318323211873), SC_(48.693821115055950415866389131356912362436163992595) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.12698681652545928955078125), SC_(91.473890238455393922742272332918884569797011865451), SC_(111.81757327733425401312252686514606931564223516256) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.135477006435394287109375), SC_(91.820983099472539415515469227537429195455462137458), SC_(111.45382939810889865252685270988496922566292975343) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.22103404998779296875), SC_(94.724051968408192819921075770463769644815737250003), SC_(108.43512406972868279073171724673082414866727440413) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.814723670482635498046875), SC_(109.58460286018467659577340155079212172063994505968), SC_(93.613840186544673407397105108894081249299802991432) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.835008561611175537109375), SC_(110.29992385651988045247881502965037115365674382973), SC_(92.925920330649254578037662130581103523508857087667) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.905791938304901123046875), SC_(113.41254669803691235369926635444417693728356224189), SC_(89.958764785945043196999745612095002613403353240766) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.9133758544921875), SC_(113.8389369510853615165327351484589424506726480099), SC_(89.555598155398217252937943809693281297647221956114) }, + { SC_(462), SC_(0.22103404998779296875), SC_(0.968867778778076171875), SC_(118.46441618276542283999156428593171000508403703773), SC_(85.232366617435603858727915292447303108879448558759) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(366.34737420545874442238221115291633974255551979091), SC_(385.39412347147842949069932878055960066545995779033) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(366.68950826720375537056067073635745094610807175144), SC_(385.07077828654809305974170276374350293065208267136) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(369.52678242708776628742959218778979998428825207247), SC_(382.36398368087413929821491434486112552834726684396) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(383.39962627958838708488965344732287579600932141899), SC_(368.44683323291813379944568666580592072576455888311) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(384.04103690353672291842299000701987459315148906768), SC_(367.77450432313584002403003049241276891691689337133) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(386.80486880129491568765070057261717752595099504027), SC_(364.84652718705696461209218261146300999977406338047) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(387.18006196770118088836897502089709358059882204361), SC_(364.44512754037228506136735492102500419868025189395) }, + { SC_(462), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(391.1979372388894667313317488436941468297856338792), SC_(360.08615952790907327852939271832934339967258884367) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(376.14277892061017849266775901808505747312225934913), SC_(394.33789120042478975215523077546862132662147940277) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(376.47062701059669499387868529275643470509113751059), SC_(394.03004590676159627740764045030348480565576709442) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(379.18809995995613471328554800138413075452476668576), SC_(391.45147951758687874169405809424639185125272456402) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(392.43837928481028126646073601917700733527343373877), SC_(378.15403266219698379771114242082032368969242437767) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(393.0494049218549429851402512675154900185236854482), SC_(377.51009193924422812717110873059467516599044508596) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(395.68054520295444541561872495346098157216590762668), SC_(374.7042003492121975403116531525070739928849275944) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(396.03750015577938107018070400739144079347599034163), SC_(374.31934482163543166773732423558235755036350427585) }, + { SC_(462), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(399.85655233600266888086901662617538469166965290174), SC_(370.13713023266072785880996336774329538400032584841) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(410.77841779603348299009132062991806834191114132292), SC_(425.09192836850669467964774217200606567091489385596) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(411.04050019870873412928204791009626631793165778548), SC_(424.85409990428803893880371527354629061091777136208) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(413.20743037050376397313177889683126115801350031291), SC_(422.85557132516048428686099311119423735829582532068) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(423.62181315216437335232445710883865624489575861881), SC_(412.384010755884455878159061159658137846137080341) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(424.09539327494980230925529034323151094008499154172), SC_(411.87052691167998064749135957293786099905640575261) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(426.12723517699196060712792921408370314767680064867), SC_(409.62678643346206726187796520740152524187070973137) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(426.4019321011556842693438692165731311536954876857), SC_(409.31825123167004990102031796718648244988746090145) }, + { SC_(462), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(429.32593469528266849431422550896091856464531454781), SC_(405.95362577891838024646713447954699109277704571247) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.12698681652545928955078125), SC_(414.54749317241684103166151201044157289557560066664), SC_(428.32887976389006323958081567847829759072678046843) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.135477006435394287109375), SC_(414.80049552840271675364275050243742214362718825342), SC_(428.10058981763657174736653663422610344943505276056) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.22103404998779296875), SC_(416.89150989421192572249673797944131156939052148208), SC_(426.18115473504837209951197968533905334246040854066) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.814723670482635498046875), SC_(426.91729194717382243189697410571951485038139257899), SC_(416.09711705955833706875763226722903633636646325407) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.835008561611175537109375), SC_(427.37213017802529379127292358079248928283540824397), SC_(415.60162223352377968657825664449093045486831839776) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.905791938304901123046875), SC_(429.3223377515598904641695530576862301200922783231), SC_(413.4355089091988924882925074231621936947576819029) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.9133758544921875), SC_(429.5858401370714466977766917756196697426616416387), SC_(413.13752688833461862829157641357569678006403754388) }, + { SC_(462), SC_(0.9133758544921875), SC_(0.968867778778076171875), SC_(432.38818207988393867668921543142972096521280530344), SC_(409.88617366468320542592944593518289804952858533401) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(442.82393191141749173724816325072326820230463861198), SC_(451.31614712317827841869644152156836743662631399408) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(442.98606274891854929687497244464980968557637066531), SC_(451.1821745050413112505324438707834719314419238511) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(444.31831042243092829560186140968343282457861353281), SC_(450.04528422783410389071851518631959672024544710996) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(450.48346315283352091572919321540490887699874734837), SC_(443.81383106654679638874061205590535899657992881982) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(450.75287287219138398255983761247801341317357905199), SC_(443.49813299555706441752047724189621951549274423869) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(451.89591732812948291460872123812941435040707992501), SC_(442.10903364493891816867430327722153866406411695147) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(452.0487864202684433692288504005674021335799201021), SC_(441.91683192409503729874122861358957872208941993018) }, + { SC_(462), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(453.64921455609407364749407038846093208870919124129), SC_(439.80319758393201038757522213012342652322688527575) } + }}; +#undef SC_ + diff --git a/test/cbrt_data.ipp b/test/cbrt_data.ipp new file mode 100644 index 000000000..12d5f5def --- /dev/null +++ b/test/cbrt_data.ipp @@ -0,0 +1,95 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 85> cbrt_data = { { + { SC_(0.266297021326439287136622624529991298914e-12), SC_(0.1888421455001568264216782004847867296461e-37) }, + { SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.2075183790343685754527643464587844863336e-36) }, + { SC_(0.155163989296047688526414276566356420517e-11), SC_(0.3735707037930203997047439019589434984292e-35) }, + { SC_(0.326923297461201300961874949280172586441e-11), SC_(0.3494118359373226772153200620663814420149e-34) }, + { SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.5289425440452335470097113858122815653748e-34) }, + { SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.8789881934013975442181045034737061376284e-33) }, + { SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.6415854952683870221087767100660047169015e-32) }, + { SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1618327663648593897188312867673509349544e-30) }, + { SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.2258130336429980668979991908229127823735e-30) }, + { SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.2393975994093713145816368117219309682822e-29) }, + { SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.1666850852333084475602734478539689292864e-28) }, + { SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.8006277238962806516943344887937136945761e-27) }, + { SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.4897647988639492837638733591590200680017e-26) }, + { SC_(0.339355921141759608872234821319580078125e-8), SC_(0.3908105631910126517922937762400154556398e-25) }, + { SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.2516852352568191806987306088580024017075e-24) }, + { SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.5891685351226332190380177353564166513441e-24) }, + { SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.7559899905537899689665020666334853594435e-23) }, + { SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1452317136611010055610488165775172825142e-21) }, + { SC_(0.116242290459922514855861663818359375e-6), SC_(0.1570697224733838212725464129330562874032e-20) }, + { SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.5610532144067232522265416539512374653302e-20) }, + { SC_(0.246631174150024889968335628509521484375e-6), SC_(0.1500181866107243920079950771800422025379e-19) }, + { SC_(0.7932688959044753573834896087646484375e-6), SC_(0.4991847137949555007936240315051986249607e-18) }, + { SC_(0.1372093493046122603118419647216796875e-5), SC_(0.2583158853420963423689975850731860849521e-17) }, + { SC_(0.214747751670074649155139923095703125e-5), SC_(0.9903435487644105337695875806797860570175e-17) }, + { SC_(0.527022712049074470996856689453125e-5), SC_(0.1463821071995824977534730930446568768253e-15) }, + { SC_(0.9233162927557714283466339111328125e-5), SC_(0.7871391209588633308733754268944773271037e-15) }, + { SC_(0.269396477960981428623199462890625e-4), SC_(0.1955130454371024476239796923077328444099e-13) }, + { SC_(0.3208058114978484809398651123046875e-4), SC_(0.3301616917426164412576388360054394990469e-13) }, + { SC_(0.10957030463032424449920654296875e-3), SC_(0.1315462909319166691700161404508507291713e-11) }, + { SC_(0.126518702018074691295623779296875e-3), SC_(0.2025182580848748191763613884783980516393e-11) }, + { SC_(0.28976381872780621051788330078125e-3), SC_(0.2432945998183714075166971697772880334043e-10) }, + { SC_(0.687857042066752910614013671875e-3), SC_(0.325457709339121122043443511174534212782e-9) }, + { SC_(0.145484809763729572296142578125e-2), SC_(0.3079306732417723714591019095094197606751e-8) }, + { SC_(0.2847635187208652496337890625e-2), SC_(0.2309154822558505456380682823926992940837e-7) }, + { SC_(0.56468211114406585693359375e-2), SC_(0.1800578620431549562186637161391699604382e-6) }, + { SC_(0.11621631681919097900390625e-1), SC_(0.1569644571431467249504618249826407884451e-5) }, + { SC_(0.257236398756504058837890625e-1), SC_(0.1702147780446687692243218673184664750751e-4) }, + { SC_(0.560617186129093170166015625e-1), SC_(0.1761972888887947511388016005088640519383e-3) }, + { SC_(0.106835305690765380859375e0), SC_(0.1219394946966688262159601656951790626948e-2) }, + { SC_(0.2401093542575836181640625e0), SC_(0.1384290502703277530255383713042680732253e-1) }, + { SC_(0.438671648502349853515625e0), SC_(0.8441482026963079214835649797480515710291e-1) }, + { SC_(0.903765499591827392578125e0), SC_(0.7381885006644863290177619358266650206879e0) }, + { SC_(0.12760250568389892578125e1), SC_(0.2077674969235041602851348126190789145085e1) }, + { SC_(0.3411548614501953125e1), SC_(0.3970586787024071934171232101107307244092e2) }, + { SC_(0.671881103515625e1), SC_(0.3033034012472492122469702735543251037598e3) }, + { SC_(0.802254772186279296875e1), SC_(0.5163413756551815056187668129261680860509e3) }, + { SC_(0.264815673828125e2), SC_(0.1857081908850696527224499732255935668945e5) }, + { SC_(0.54742523193359375e2), SC_(0.1640493194709731775162708800053223967552e6) }, + { SC_(0.744071502685546875e2), SC_(0.4119495333434053702710286870569689199328e6) }, + { SC_(0.210427001953125e3), SC_(0.9317607304574811554630286991596221923828e7) }, + { SC_(0.286463409423828125e3), SC_(0.2350755546524705072036454112094361335039e8) }, + { SC_(0.74548876953125e3), SC_(0.4143079969757992170052602887153625488281e9) }, + { SC_(0.15343248291015625e4), SC_(0.361203491025739912996687053237110376358e10) }, + { SC_(0.3632982421875e4), SC_(0.47950141115752447418868541717529296875e11) }, + { SC_(0.8027111328125e4), SC_(0.517223035506184733219444751739501953125e12) }, + { SC_(0.128921982421875e5), SC_(0.2142796483541738858568482100963592529297e13) }, + { SC_(0.2196087890625e5), SC_(0.10591297122360160745680332183837890625e14) }, + { SC_(0.614975859375e5), SC_(0.232580984311524292169094085693359375e15) }, + { SC_(0.103892109375e6), SC_(0.1121366795544843797206878662109375e16) }, + { SC_(0.2370011875e6), SC_(0.13312253103065122768310546875e17) }, + { SC_(0.32081496875e6), SC_(0.33018996548382043793914794921875e17) }, + { SC_(0.533606625e6), SC_(0.151937032114340403275390625e18) }, + { SC_(0.1836336625e7), SC_(0.6192369863782824692494140625e19) }, + { SC_(0.38194295e7), SC_(0.55717996837103384222375e20) }, + { SC_(0.52642505e7), SC_(0.145884664571511666937625e21) }, + { SC_(0.1527432e8), SC_(0.3563572958789165568e22) }, + { SC_(0.25265768e8), SC_(0.16128631219129563064832e23) }, + { SC_(0.6509808e8), SC_(0.275870040782346842112e24) }, + { SC_(0.114023104e9), SC_(0.1482444961322159867428864e25) }, + { SC_(0.189604896e9), SC_(0.6816299156208797501915136e25) }, + { SC_(0.507585472e9), SC_(0.130775849541591501155074048e27) }, + { SC_(0.764055936e9), SC_(0.446041700029835346607865856e27) }, + { SC_(0.2103773184e10), SC_(0.9311008970618745805030293504e28) }, + { SC_(0.3395078656e10), SC_(0.39133574711079901758452924416e29) }, + { SC_(0.6645239808e10), SC_(0.293448554175562916132775002112e30) }, + { SC_(0.9947638784e10), SC_(0.984373742549644225510117474304e30) }, + { SC_(0.19561418752e11), SC_(0.7485159350422880041966143275008e31) }, + { SC_(0.60532621312e11), SC_(0.221803524649682352197867382243328e33) }, + { SC_(0.78978883584e11), SC_(0.492643743012832976593364088520704e33) }, + { SC_(0.169071362048e12), SC_(0.4832926096640938859567595590254592e34) }, + { SC_(0.345661243392e12), SC_(0.41300191319644612608733712417292288e35) }, + { SC_(0.994912108544e12), SC_(0.984813853841992339417900620588253184e36) }, + { SC_(0.2023890092032e13), SC_(0.8290119158315231036253469850906656768e37) }, + { SC_(0.4372805189632e13), SC_(0.83614267463479414022236113855701843968e38) }, + { SC_(0.5516391612416e13), SC_(0.167866976532732026957407327191402807296e39) } + } }; +#undef SC_ + diff --git a/test/compile_test/dist_bernoulli_incl_test.cpp b/test/compile_test/dist_bernoulli_incl_test.cpp new file mode 100644 index 000000000..b959c61d4 --- /dev/null +++ b/test/compile_test/dist_bernoulli_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(bernoulli) +} + +template class boost::math::bernoulli_distribution >; +template class boost::math::bernoulli_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::bernoulli_distribution >; +#endif diff --git a/test/compile_test/dist_beta_incl_test.cpp b/test/compile_test/dist_beta_incl_test.cpp new file mode 100644 index 000000000..3c69c794e --- /dev/null +++ b/test/compile_test/dist_beta_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(beta) +} + +template class boost::math::beta_distribution >; +template class boost::math::beta_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::beta_distribution >; +#endif diff --git a/test/compile_test/dist_binomial_incl_test.cpp b/test/compile_test/dist_binomial_incl_test.cpp new file mode 100644 index 000000000..62e823517 --- /dev/null +++ b/test/compile_test/dist_binomial_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(binomial) +} + +template class boost::math::binomial_distribution >; +template class boost::math::binomial_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::binomial_distribution >; +#endif diff --git a/test/compile_test/dist_cauchy_incl_test.cpp b/test/compile_test/dist_cauchy_incl_test.cpp new file mode 100644 index 000000000..ff6186672 --- /dev/null +++ b/test/compile_test/dist_cauchy_incl_test.cpp @@ -0,0 +1,26 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(cauchy) +} + +template class boost::math::cauchy_distribution >; +template class boost::math::cauchy_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::cauchy_distribution >; +#endif diff --git a/test/compile_test/dist_chi_squared_incl_test.cpp b/test/compile_test/dist_chi_squared_incl_test.cpp new file mode 100644 index 000000000..8d4b42d03 --- /dev/null +++ b/test/compile_test/dist_chi_squared_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(chi_squared) +} + +template class boost::math::chi_squared_distribution >; +template class boost::math::chi_squared_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::chi_squared_distribution >; +#endif diff --git a/test/compile_test/dist_complement_incl_test.cpp b/test/compile_test/dist_complement_incl_test.cpp new file mode 100644 index 000000000..b61981f01 --- /dev/null +++ b/test/compile_test/dist_complement_incl_test.cpp @@ -0,0 +1,22 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + boost::math::complement(f, f); + boost::math::complement(f, f, d); + boost::math::complement(f, f, d, l); + boost::math::complement(f, f, d, l, i); +} diff --git a/test/compile_test/dist_exponential_incl_test.cpp b/test/compile_test/dist_exponential_incl_test.cpp new file mode 100644 index 000000000..a65db9364 --- /dev/null +++ b/test/compile_test/dist_exponential_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(exponential) +} + +template class boost::math::exponential_distribution >; +template class boost::math::exponential_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::exponential_distribution >; +#endif diff --git a/test/compile_test/dist_extreme_val_incl_test.cpp b/test/compile_test/dist_extreme_val_incl_test.cpp new file mode 100644 index 000000000..44c5ccf67 --- /dev/null +++ b/test/compile_test/dist_extreme_val_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(extreme_value) +} + +template class boost::math::extreme_value_distribution >; +template class boost::math::extreme_value_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::extreme_value_distribution >; +#endif diff --git a/test/compile_test/dist_fisher_f_incl_test.cpp b/test/compile_test/dist_fisher_f_incl_test.cpp new file mode 100644 index 000000000..d334a5c34 --- /dev/null +++ b/test/compile_test/dist_fisher_f_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(fisher_f) +} + +template class boost::math::fisher_f_distribution >; +template class boost::math::fisher_f_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::fisher_f_distribution >; +#endif diff --git a/test/compile_test/dist_gamma_incl_test.cpp b/test/compile_test/dist_gamma_incl_test.cpp new file mode 100644 index 000000000..22ea9a3f8 --- /dev/null +++ b/test/compile_test/dist_gamma_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(gamma) +} + +template class boost::math::gamma_distribution >; +template class boost::math::gamma_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::gamma_distribution >; +#endif diff --git a/test/compile_test/dist_lognormal_incl_test.cpp b/test/compile_test/dist_lognormal_incl_test.cpp new file mode 100644 index 000000000..cfa9e50f3 --- /dev/null +++ b/test/compile_test/dist_lognormal_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(lognormal) +} + +template class boost::math::lognormal_distribution >; +template class boost::math::lognormal_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::lognormal_distribution >; +#endif diff --git a/test/compile_test/dist_neg_binom_incl_test.cpp b/test/compile_test/dist_neg_binom_incl_test.cpp new file mode 100644 index 000000000..c366e5e94 --- /dev/null +++ b/test/compile_test/dist_neg_binom_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(negative_binomial) +} + +template class boost::math::negative_binomial_distribution >; +template class boost::math::negative_binomial_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::negative_binomial_distribution >; +#endif diff --git a/test/compile_test/dist_normal_incl_test.cpp b/test/compile_test/dist_normal_incl_test.cpp new file mode 100644 index 000000000..145b904b4 --- /dev/null +++ b/test/compile_test/dist_normal_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(normal) +} + +template class boost::math::normal_distribution >; +template class boost::math::normal_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::normal_distribution >; +#endif diff --git a/test/compile_test/dist_pareto_incl_test.cpp b/test/compile_test/dist_pareto_incl_test.cpp new file mode 100644 index 000000000..7bf0397c0 --- /dev/null +++ b/test/compile_test/dist_pareto_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(pareto) +} + +template class boost::math::pareto_distribution >; +template class boost::math::pareto_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::pareto_distribution >; +#endif diff --git a/test/compile_test/dist_poisson_incl_test.cpp b/test/compile_test/dist_poisson_incl_test.cpp new file mode 100644 index 000000000..40a3a7a0c --- /dev/null +++ b/test/compile_test/dist_poisson_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(poisson) +} + +template class boost::math::poisson_distribution >; +template class boost::math::poisson_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::poisson_distribution >; +#endif diff --git a/test/compile_test/dist_students_t_incl_test.cpp b/test/compile_test/dist_students_t_incl_test.cpp new file mode 100644 index 000000000..82fc203b1 --- /dev/null +++ b/test/compile_test/dist_students_t_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(students_t) +} + +template class boost::math::students_t_distribution >; +template class boost::math::students_t_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::students_t_distribution >; +#endif diff --git a/test/compile_test/dist_triangular_incl_test.cpp b/test/compile_test/dist_triangular_incl_test.cpp new file mode 100644 index 000000000..5272f6472 --- /dev/null +++ b/test/compile_test/dist_triangular_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(triangular) +} + +template class boost::math::triangular_distribution >; +template class boost::math::triangular_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::triangular_distribution >; +#endif diff --git a/test/compile_test/dist_uniform_incl_test.cpp b/test/compile_test/dist_uniform_incl_test.cpp new file mode 100644 index 000000000..73c219e38 --- /dev/null +++ b/test/compile_test/dist_uniform_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(uniform) +} + +template class boost::math::uniform_distribution >; +template class boost::math::uniform_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::uniform_distribution >; +#endif diff --git a/test/compile_test/dist_weibull_incl_test.cpp b/test/compile_test/dist_weibull_incl_test.cpp new file mode 100644 index 000000000..56d3cf531 --- /dev/null +++ b/test/compile_test/dist_weibull_incl_test.cpp @@ -0,0 +1,25 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + TEST_DIST_FUNC(weibull) +} + +template class boost::math::weibull_distribution >; +template class boost::math::weibull_distribution >; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +template class boost::math::weibull_distribution >; +#endif diff --git a/test/compile_test/distribution_concept_check.cpp b/test/compile_test/distribution_concept_check.cpp new file mode 100644 index 000000000..66c5f476a --- /dev/null +++ b/test/compile_test/distribution_concept_check.cpp @@ -0,0 +1,49 @@ +// Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false + +#include +#include + + +template +void instantiate(RealType) +{ + using namespace boost; + using namespace boost::math; + using namespace boost::math::concepts; + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); +} + + +int main() +{ + instantiate(float(0)); + instantiate(double(0)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + instantiate((long double)(0)); +#endif +} + diff --git a/test/compile_test/generate.sh b/test/compile_test/generate.sh new file mode 100755 index 000000000..ac88405aa --- /dev/null +++ b/test/compile_test/generate.sh @@ -0,0 +1,46 @@ +for file in ../../../../boost/math/tools/*.hpp; do +cat > tools_$(basename $file .hpp)_inc_test.cpp << EOF; +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + +EOF +done + +for file in ../../../../boost/math/distributions/*.hpp; do +cat > dist_$(basename $file .hpp)_incl_test.cpp << EOF; +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + +EOF +done + +for file in ../../../../boost/math/special_functions/*.hpp; do +cat > sf_$(basename $file .hpp)_incl_test.cpp << EOF; +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + +EOF +done + + diff --git a/test/compile_test/instantiate.hpp b/test/compile_test/instantiate.hpp new file mode 100644 index 000000000..e32caba5c --- /dev/null +++ b/test/compile_test/instantiate.hpp @@ -0,0 +1,742 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_LIBS_MATH_TEST_INSTANTIATE_HPP +#define BOOST_LIBS_MATH_TEST_INSTANTIATE_HPP + +#ifndef BOOST_MATH_ASSERT_UNDEFINED_POLICY +# define BOOST_MATH_ASSERT_UNDEFINED_POLICY false +#endif + +#include + +#include +#include + +typedef boost::math::policies::policy<> test_policy; + +namespace test{ + +BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(test_policy) + +} + +namespace dist_test{ + +BOOST_MATH_DECLARE_DISTRIBUTIONS(double, test_policy) + +} + +template +void instantiate(RealType) +{ + using namespace boost; + using namespace boost::math; + using namespace boost::math::concepts; + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + function_requires > >(); + + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + function_requires >(); + + int i; + RealType v1(0.5), v2(0.5), v3(0.5); + boost::math::tgamma(v1); + boost::math::tgamma1pm1(v1); + boost::math::lgamma(v1); + boost::math::lgamma(v1, &i); + boost::math::digamma(v1); + boost::math::tgamma_ratio(v1, v2); + boost::math::tgamma_delta_ratio(v1, v2); + boost::math::factorial(i); + boost::math::unchecked_factorial(i); + i = boost::math::max_factorial::value; + boost::math::double_factorial(i); + boost::math::rising_factorial(v1, i); + boost::math::falling_factorial(v1, i); + boost::math::tgamma(v1, v2); + boost::math::tgamma_lower(v1, v2); + boost::math::gamma_p(v1, v2); + boost::math::gamma_q(v1, v2); + boost::math::gamma_p_inv(v1, v2); + boost::math::gamma_q_inv(v1, v2); + boost::math::gamma_p_inva(v1, v2); + boost::math::gamma_q_inva(v1, v2); + boost::math::erf(v1); + boost::math::erfc(v1); + boost::math::erf_inv(v1); + boost::math::erfc_inv(v1); + boost::math::beta(v1, v2); + boost::math::beta(v1, v2, v3); + boost::math::betac(v1, v2, v3); + boost::math::ibeta(v1, v2, v3); + boost::math::ibetac(v1, v2, v3); + boost::math::ibeta_inv(v1, v2, v3); + boost::math::ibetac_inv(v1, v2, v3); + boost::math::ibeta_inva(v1, v2, v3); + boost::math::ibetac_inva(v1, v2, v3); + boost::math::ibeta_invb(v1, v2, v3); + boost::math::ibetac_invb(v1, v2, v3); + boost::math::gamma_p_derivative(v2, v3); + boost::math::ibeta_derivative(v1, v2, v3); + (boost::math::fpclassify)(v1); + (boost::math::isfinite)(v1); + (boost::math::isnormal)(v1); + (boost::math::isnan)(v1); + (boost::math::isinf)(v1); + boost::math::log1p(v1); + boost::math::expm1(v1); + boost::math::cbrt(v1); + boost::math::sqrt1pm1(v1); + boost::math::powm1(v1, v2); + boost::math::legendre_p(1, v1); + boost::math::legendre_p(1, 0, v1); + boost::math::legendre_q(1, v1); + boost::math::legendre_next(2, v1, v2, v3); + boost::math::legendre_next(2, 2, v1, v2, v3); + boost::math::laguerre(1, v1); + boost::math::laguerre(2, 1, v1); + boost::math::laguerre(2u, 1u, v1); + boost::math::laguerre_next(2, v1, v2, v3); + boost::math::laguerre_next(2, 1, v1, v2, v3); + boost::math::hermite(1, v1); + boost::math::hermite_next(2, v1, v2, v3); + boost::math::spherical_harmonic_r(2, 1, v1, v2); + boost::math::spherical_harmonic_i(2, 1, v1, v2); + boost::math::ellint_1(v1); + boost::math::ellint_1(v1, v2); + boost::math::ellint_2(v1); + boost::math::ellint_2(v1, v2); + boost::math::ellint_3(v1, v2); + boost::math::ellint_3(v1, v2, v3); + boost::math::ellint_rc(v1, v2); + boost::math::ellint_rd(v1, v2, v3); + boost::math::ellint_rf(v1, v2, v3); + boost::math::ellint_rj(v1, v2, v3, v1); + boost::math::hypot(v1, v2); + boost::math::sinc_pi(v1); + boost::math::sinhc_pi(v1); + boost::math::asinh(v1); + boost::math::acosh(v1); + boost::math::atanh(v1); + boost::math::sin_pi(v1); + boost::math::cos_pi(v1); + boost::math::cyl_neumann(v1, v2); + boost::math::cyl_neumann(i, v2); + boost::math::cyl_bessel_j(v1, v2); + boost::math::cyl_bessel_j(i, v2); + boost::math::cyl_bessel_i(v1, v2); + boost::math::cyl_bessel_i(i, v2); + boost::math::cyl_bessel_k(v1, v2); + boost::math::cyl_bessel_k(i, v2); + boost::math::sph_bessel(i, v2); + boost::math::sph_bessel(i, 1); + boost::math::sph_neumann(i, v2); + boost::math::sph_neumann(i, i); + // + // All over again, with a policy this time: + // + test_policy pol; + boost::math::tgamma(v1, pol); + boost::math::tgamma1pm1(v1, pol); + boost::math::lgamma(v1, pol); + boost::math::lgamma(v1, &i, pol); + boost::math::digamma(v1, pol); + boost::math::tgamma_ratio(v1, v2, pol); + boost::math::tgamma_delta_ratio(v1, v2, pol); + boost::math::factorial(i, pol); + boost::math::unchecked_factorial(i); + i = boost::math::max_factorial::value; + boost::math::double_factorial(i, pol); + boost::math::rising_factorial(v1, i, pol); + boost::math::falling_factorial(v1, i, pol); + boost::math::tgamma(v1, v2, pol); + boost::math::tgamma_lower(v1, v2, pol); + boost::math::gamma_p(v1, v2, pol); + boost::math::gamma_q(v1, v2, pol); + boost::math::gamma_p_inv(v1, v2, pol); + boost::math::gamma_q_inv(v1, v2, pol); + boost::math::gamma_p_inva(v1, v2, pol); + boost::math::gamma_q_inva(v1, v2, pol); + boost::math::erf(v1, pol); + boost::math::erfc(v1, pol); + boost::math::erf_inv(v1, pol); + boost::math::erfc_inv(v1, pol); + boost::math::beta(v1, v2, pol); + boost::math::beta(v1, v2, v3, pol); + boost::math::betac(v1, v2, v3, pol); + boost::math::ibeta(v1, v2, v3, pol); + boost::math::ibetac(v1, v2, v3, pol); + boost::math::ibeta_inv(v1, v2, v3, pol); + boost::math::ibetac_inv(v1, v2, v3, pol); + boost::math::ibeta_inva(v1, v2, v3, pol); + boost::math::ibetac_inva(v1, v2, v3, pol); + boost::math::ibeta_invb(v1, v2, v3, pol); + boost::math::ibetac_invb(v1, v2, v3, pol); + boost::math::gamma_p_derivative(v2, v3, pol); + boost::math::ibeta_derivative(v1, v2, v3, pol); + (boost::math::fpclassify)(v1); + (boost::math::isfinite)(v1); + (boost::math::isnormal)(v1); + (boost::math::isnan)(v1); + (boost::math::isinf)(v1); + boost::math::log1p(v1, pol); + boost::math::expm1(v1, pol); + boost::math::cbrt(v1, pol); + boost::math::sqrt1pm1(v1, pol); + boost::math::powm1(v1, v2, pol); + boost::math::legendre_p(1, v1, pol); + boost::math::legendre_p(1, 0, v1, pol); + boost::math::legendre_q(1, v1, pol); + boost::math::legendre_next(2, v1, v2, v3); + boost::math::legendre_next(2, 2, v1, v2, v3); + boost::math::laguerre(1, v1, pol); + boost::math::laguerre(2, 1, v1, pol); + boost::math::laguerre_next(2, v1, v2, v3); + boost::math::laguerre_next(2, 1, v1, v2, v3); + boost::math::hermite(1, v1, pol); + boost::math::hermite_next(2, v1, v2, v3); + boost::math::spherical_harmonic_r(2, 1, v1, v2, pol); + boost::math::spherical_harmonic_i(2, 1, v1, v2, pol); + boost::math::ellint_1(v1, pol); + boost::math::ellint_1(v1, v2, pol); + boost::math::ellint_2(v1, pol); + boost::math::ellint_2(v1, v2, pol); + boost::math::ellint_3(v1, v2, pol); + boost::math::ellint_3(v1, v2, v3, pol); + boost::math::ellint_rc(v1, v2, pol); + boost::math::ellint_rd(v1, v2, v3, pol); + boost::math::ellint_rf(v1, v2, v3, pol); + boost::math::ellint_rj(v1, v2, v3, v1, pol); + boost::math::hypot(v1, v2, pol); + boost::math::sinc_pi(v1, pol); + boost::math::sinhc_pi(v1, pol); + boost::math::asinh(v1, pol); + boost::math::acosh(v1, pol); + boost::math::atanh(v1, pol); + boost::math::sin_pi(v1, pol); + boost::math::cos_pi(v1, pol); + boost::math::cyl_neumann(v1, v2, pol); + boost::math::cyl_neumann(i, v2, pol); + boost::math::cyl_bessel_j(v1, v2, pol); + boost::math::cyl_bessel_j(i, v2, pol); + boost::math::cyl_bessel_i(v1, v2, pol); + boost::math::cyl_bessel_i(i, v2, pol); + boost::math::cyl_bessel_k(v1, v2, pol); + boost::math::cyl_bessel_k(i, v2, pol); + boost::math::sph_bessel(i, v2, pol); + boost::math::sph_bessel(i, 1, pol); + boost::math::sph_neumann(i, v2, pol); + boost::math::sph_neumann(i, i, pol); + // + // All over again with the versions in test:: + // + test::tgamma(v1); + test::tgamma1pm1(v1); + test::lgamma(v1); + test::lgamma(v1, &i); + test::digamma(v1); + test::tgamma_ratio(v1, v2); + test::tgamma_delta_ratio(v1, v2); + test::factorial(i); + test::unchecked_factorial(i); + i = test::max_factorial::value; + test::double_factorial(i); + test::rising_factorial(v1, i); + test::falling_factorial(v1, i); + test::tgamma(v1, v2); + test::tgamma_lower(v1, v2); + test::gamma_p(v1, v2); + test::gamma_q(v1, v2); + test::gamma_p_inv(v1, v2); + test::gamma_q_inv(v1, v2); + test::gamma_p_inva(v1, v2); + test::gamma_q_inva(v1, v2); + test::erf(v1); + test::erfc(v1); + test::erf_inv(v1); + test::erfc_inv(v1); + test::beta(v1, v2); + test::beta(v1, v2, v3); + test::betac(v1, v2, v3); + test::ibeta(v1, v2, v3); + test::ibetac(v1, v2, v3); + test::ibeta_inv(v1, v2, v3); + test::ibetac_inv(v1, v2, v3); + test::ibeta_inva(v1, v2, v3); + test::ibetac_inva(v1, v2, v3); + test::ibeta_invb(v1, v2, v3); + test::ibetac_invb(v1, v2, v3); + test::gamma_p_derivative(v2, v3); + test::ibeta_derivative(v1, v2, v3); + (test::fpclassify)(v1); + (test::isfinite)(v1); + (test::isnormal)(v1); + (test::isnan)(v1); + (test::isinf)(v1); + test::log1p(v1); + test::expm1(v1); + test::cbrt(v1); + test::sqrt1pm1(v1); + test::powm1(v1, v2); + test::legendre_p(1, v1); + test::legendre_p(1, 0, v1); + test::legendre_q(1, v1); + test::legendre_next(2, v1, v2, v3); + test::legendre_next(2, 2, v1, v2, v3); + test::laguerre(1, v1); + test::laguerre(2, 1, v1); + test::laguerre_next(2, v1, v2, v3); + test::laguerre_next(2, 1, v1, v2, v3); + test::hermite(1, v1); + test::hermite_next(2, v1, v2, v3); + test::spherical_harmonic_r(2, 1, v1, v2); + test::spherical_harmonic_i(2, 1, v1, v2); + test::ellint_1(v1); + test::ellint_1(v1, v2); + test::ellint_2(v1); + test::ellint_2(v1, v2); + test::ellint_3(v1, v2); + test::ellint_3(v1, v2, v3); + test::ellint_rc(v1, v2); + test::ellint_rd(v1, v2, v3); + test::ellint_rf(v1, v2, v3); + test::ellint_rj(v1, v2, v3, v1); + test::hypot(v1, v2); + test::sinc_pi(v1); + test::sinhc_pi(v1); + test::asinh(v1); + test::acosh(v1); + test::atanh(v1); + test::sin_pi(v1); + test::cos_pi(v1); + test::cyl_neumann(v1, v2); + test::cyl_neumann(i, v2); + test::cyl_bessel_j(v1, v2); + test::cyl_bessel_j(i, v2); + test::cyl_bessel_i(v1, v2); + test::cyl_bessel_i(i, v2); + test::cyl_bessel_k(v1, v2); + test::cyl_bessel_k(i, v2); + test::sph_bessel(i, v2); + test::sph_bessel(i, 1); + test::sph_neumann(i, v2); + test::sph_neumann(i, i); +} + +template +void instantiate_mixed(RealType) +{ + using namespace boost; + using namespace boost::math; + + int i = 1; + long l = 1; + short s = 1; + float fr = 0.5F; + double dr = 0.5; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + long double lr = 0.5L; +#else + double lr = 0.5L; +#endif + + boost::math::tgamma(i); + boost::math::tgamma1pm1(i); + boost::math::lgamma(i); + boost::math::lgamma(i, &i); + boost::math::digamma(i); + boost::math::tgamma_ratio(i, l); + boost::math::tgamma_ratio(fr, lr); + boost::math::tgamma_delta_ratio(i, s); + boost::math::tgamma_delta_ratio(fr, lr); + boost::math::rising_factorial(s, i); + boost::math::falling_factorial(s, i); + boost::math::tgamma(i, l); + boost::math::tgamma(fr, lr); + boost::math::tgamma_lower(i, s); + boost::math::tgamma_lower(fr, lr); + boost::math::gamma_p(i, s); + boost::math::gamma_p(fr, lr); + boost::math::gamma_q(i, s); + boost::math::gamma_q(fr, lr); + boost::math::gamma_p_inv(i, fr); + boost::math::gamma_q_inv(s, fr); + boost::math::gamma_p_inva(i, lr); + boost::math::gamma_q_inva(i, lr); + boost::math::erf(i); + boost::math::erfc(i); + boost::math::erf_inv(i); + boost::math::erfc_inv(i); + boost::math::beta(i, s); + boost::math::beta(fr, lr); + boost::math::beta(i, s, l); + boost::math::beta(fr, dr, lr); + boost::math::betac(l, i, s); + boost::math::betac(fr, dr, lr); + boost::math::ibeta(l, i, s); + boost::math::ibeta(fr, dr, lr); + boost::math::ibetac(l, i, s); + boost::math::ibetac(fr, dr, lr); + boost::math::ibeta_inv(l, s, i); + boost::math::ibeta_inv(fr, dr, lr); + boost::math::ibetac_inv(l, i, s); + boost::math::ibetac_inv(fr, dr, lr); + boost::math::ibeta_inva(l, i, s); + boost::math::ibeta_inva(fr, dr, lr); + boost::math::ibetac_inva(l, i, s); + boost::math::ibetac_inva(fr, dr, lr); + boost::math::ibeta_invb(l, i, s); + boost::math::ibeta_invb(fr, dr, lr); + boost::math::ibetac_invb(l, i, s); + boost::math::ibetac_invb(fr, dr, lr); + boost::math::gamma_p_derivative(i, l); + boost::math::gamma_p_derivative(fr, lr); + boost::math::ibeta_derivative(l, i, s); + boost::math::ibeta_derivative(fr, dr, lr); + (boost::math::fpclassify)(i); + (boost::math::isfinite)(s); + (boost::math::isnormal)(l); + (boost::math::isnan)(i); + (boost::math::isinf)(l); + boost::math::log1p(i); + boost::math::expm1(s); + boost::math::cbrt(l); + boost::math::sqrt1pm1(s); + boost::math::powm1(i, s); + boost::math::powm1(fr, lr); + //boost::math::legendre_p(1, i); + boost::math::legendre_p(1, 0, s); + boost::math::legendre_q(1, i); + boost::math::laguerre(1, i); + boost::math::laguerre(2, 1, i); + boost::math::laguerre(2u, 1u, s); + boost::math::hermite(1, s); + boost::math::spherical_harmonic_r(2, 1, s, i); + boost::math::spherical_harmonic_i(2, 1, fr, lr); + boost::math::ellint_1(i); + boost::math::ellint_1(i, s); + boost::math::ellint_1(fr, lr); + boost::math::ellint_2(i); + boost::math::ellint_2(i, l); + boost::math::ellint_2(fr, lr); + boost::math::ellint_3(i, l); + boost::math::ellint_3(fr, lr); + boost::math::ellint_3(s, l, i); + boost::math::ellint_3(fr, dr, lr); + boost::math::ellint_rc(i, s); + boost::math::ellint_rc(fr, lr); + boost::math::ellint_rd(s, i, l); + boost::math::ellint_rd(fr, lr, dr); + boost::math::ellint_rf(s, l, i); + boost::math::ellint_rf(fr, dr, lr); + boost::math::ellint_rj(i, i, s, l); + boost::math::ellint_rj(i, fr, dr, lr); + boost::math::hypot(i, s); + boost::math::hypot(fr, lr); + boost::math::sinc_pi(i); + boost::math::sinhc_pi(i); + boost::math::asinh(s); + boost::math::acosh(l); + boost::math::atanh(l); + boost::math::sin_pi(s); + boost::math::cos_pi(s); + boost::math::cyl_neumann(fr, dr); + boost::math::cyl_neumann(i, s); + boost::math::cyl_bessel_j(fr, lr); + boost::math::cyl_bessel_j(i, s); + boost::math::cyl_bessel_i(fr, lr); + boost::math::cyl_bessel_i(i, s); + boost::math::cyl_bessel_k(fr, lr); + boost::math::cyl_bessel_k(i, s); + boost::math::sph_bessel(i, fr); + boost::math::sph_bessel(i, 1); + boost::math::sph_neumann(i, lr); + boost::math::sph_neumann(i, i); + + boost::math::policies::policy<> pol; + + + boost::math::tgamma(i, pol); + boost::math::tgamma1pm1(i, pol); + boost::math::lgamma(i, pol); + boost::math::lgamma(i, &i, pol); + boost::math::digamma(i, pol); + boost::math::tgamma_ratio(i, l, pol); + boost::math::tgamma_ratio(fr, lr, pol); + boost::math::tgamma_delta_ratio(i, s, pol); + boost::math::tgamma_delta_ratio(fr, lr, pol); + boost::math::rising_factorial(s, i, pol); + boost::math::falling_factorial(s, i, pol); + boost::math::tgamma(i, l, pol); + boost::math::tgamma(fr, lr, pol); + boost::math::tgamma_lower(i, s, pol); + boost::math::tgamma_lower(fr, lr, pol); + boost::math::gamma_p(i, s, pol); + boost::math::gamma_p(fr, lr, pol); + boost::math::gamma_q(i, s, pol); + boost::math::gamma_q(fr, lr, pol); + boost::math::gamma_p_inv(i, fr, pol); + boost::math::gamma_q_inv(s, fr, pol); + boost::math::gamma_p_inva(i, lr, pol); + boost::math::gamma_q_inva(i, lr, pol); + boost::math::erf(i, pol); + boost::math::erfc(i, pol); + boost::math::erf_inv(i, pol); + boost::math::erfc_inv(i, pol); + boost::math::beta(i, s, pol); + boost::math::beta(fr, lr, pol); + boost::math::beta(i, s, l, pol); + boost::math::beta(fr, dr, lr, pol); + boost::math::betac(l, i, s, pol); + boost::math::betac(fr, dr, lr, pol); + boost::math::ibeta(l, i, s, pol); + boost::math::ibeta(fr, dr, lr, pol); + boost::math::ibetac(l, i, s, pol); + boost::math::ibetac(fr, dr, lr, pol); + boost::math::ibeta_inv(l, s, i, pol); + boost::math::ibeta_inv(fr, dr, lr, pol); + boost::math::ibetac_inv(l, i, s, pol); + boost::math::ibetac_inv(fr, dr, lr, pol); + boost::math::ibeta_inva(l, i, s, pol); + boost::math::ibeta_inva(fr, dr, lr, pol); + boost::math::ibetac_inva(l, i, s, pol); + boost::math::ibetac_inva(fr, dr, lr, pol); + boost::math::ibeta_invb(l, i, s, pol); + boost::math::ibeta_invb(fr, dr, lr, pol); + boost::math::ibetac_invb(l, i, s, pol); + boost::math::ibetac_invb(fr, dr, lr, pol); + boost::math::gamma_p_derivative(i, l, pol); + boost::math::gamma_p_derivative(fr, lr, pol); + boost::math::ibeta_derivative(l, i, s, pol); + boost::math::ibeta_derivative(fr, dr, lr, pol); + boost::math::log1p(i, pol); + boost::math::expm1(s, pol); + boost::math::cbrt(l, pol); + boost::math::sqrt1pm1(s, pol); + boost::math::powm1(i, s, pol); + boost::math::powm1(fr, lr, pol); + //boost::math::legendre_p(1, i, pol); + boost::math::legendre_p(1, 0, s, pol); + boost::math::legendre_q(1, i, pol); + boost::math::laguerre(1, i, pol); + boost::math::laguerre(2, 1, i, pol); + boost::math::laguerre(2u, 1u, s, pol); + boost::math::hermite(1, s, pol); + boost::math::spherical_harmonic_r(2, 1, s, i, pol); + boost::math::spherical_harmonic_i(2, 1, fr, lr, pol); + boost::math::ellint_1(i, pol); + boost::math::ellint_1(i, s, pol); + boost::math::ellint_1(fr, lr, pol); + boost::math::ellint_2(i, pol); + boost::math::ellint_2(i, l, pol); + boost::math::ellint_2(fr, lr, pol); + boost::math::ellint_3(i, l, pol); + boost::math::ellint_3(fr, lr, pol); + boost::math::ellint_3(s, l, i, pol); + boost::math::ellint_3(fr, dr, lr, pol); + boost::math::ellint_rc(i, s, pol); + boost::math::ellint_rc(fr, lr, pol); + boost::math::ellint_rd(s, i, l, pol); + boost::math::ellint_rd(fr, lr, dr, pol); + boost::math::ellint_rf(s, l, i, pol); + boost::math::ellint_rf(fr, dr, lr, pol); + boost::math::ellint_rj(i, i, s, l, pol); + boost::math::ellint_rj(i, fr, dr, lr, pol); + boost::math::hypot(i, s, pol); + boost::math::hypot(fr, lr, pol); + boost::math::sinc_pi(i, pol); + boost::math::sinhc_pi(i, pol); + boost::math::asinh(s, pol); + boost::math::acosh(l, pol); + boost::math::atanh(l, pol); + boost::math::sin_pi(s, pol); + boost::math::cos_pi(s, pol); + boost::math::cyl_neumann(fr, dr, pol); + boost::math::cyl_neumann(i, s, pol); + boost::math::cyl_bessel_j(fr, lr, pol); + boost::math::cyl_bessel_j(i, s, pol); + boost::math::cyl_bessel_i(fr, lr, pol); + boost::math::cyl_bessel_i(i, s, pol); + boost::math::cyl_bessel_k(fr, lr, pol); + boost::math::cyl_bessel_k(i, s, pol); + boost::math::sph_bessel(i, fr, pol); + boost::math::sph_bessel(i, 1, pol); + boost::math::sph_neumann(i, lr, pol); + boost::math::sph_neumann(i, i, pol); + + + test::tgamma(i); + test::tgamma1pm1(i); + test::lgamma(i); + test::lgamma(i, &i); + test::digamma(i); + test::tgamma_ratio(i, l); + test::tgamma_ratio(fr, lr); + test::tgamma_delta_ratio(i, s); + test::tgamma_delta_ratio(fr, lr); + test::rising_factorial(s, i); + test::falling_factorial(s, i); + test::tgamma(i, l); + test::tgamma(fr, lr); + test::tgamma_lower(i, s); + test::tgamma_lower(fr, lr); + test::gamma_p(i, s); + test::gamma_p(fr, lr); + test::gamma_q(i, s); + test::gamma_q(fr, lr); + test::gamma_p_inv(i, fr); + test::gamma_q_inv(s, fr); + test::gamma_p_inva(i, lr); + test::gamma_q_inva(i, lr); + test::erf(i); + test::erfc(i); + test::erf_inv(i); + test::erfc_inv(i); + test::beta(i, s); + test::beta(fr, lr); + test::beta(i, s, l); + test::beta(fr, dr, lr); + test::betac(l, i, s); + test::betac(fr, dr, lr); + test::ibeta(l, i, s); + test::ibeta(fr, dr, lr); + test::ibetac(l, i, s); + test::ibetac(fr, dr, lr); + test::ibeta_inv(l, s, i); + test::ibeta_inv(fr, dr, lr); + test::ibetac_inv(l, i, s); + test::ibetac_inv(fr, dr, lr); + test::ibeta_inva(l, i, s); + test::ibeta_inva(fr, dr, lr); + test::ibetac_inva(l, i, s); + test::ibetac_inva(fr, dr, lr); + test::ibeta_invb(l, i, s); + test::ibeta_invb(fr, dr, lr); + test::ibetac_invb(l, i, s); + test::ibetac_invb(fr, dr, lr); + test::gamma_p_derivative(i, l); + test::gamma_p_derivative(fr, lr); + test::ibeta_derivative(l, i, s); + test::ibeta_derivative(fr, dr, lr); + (test::fpclassify)(i); + (test::isfinite)(s); + (test::isnormal)(l); + (test::isnan)(i); + (test::isinf)(l); + test::log1p(i); + test::expm1(s); + test::cbrt(l); + test::sqrt1pm1(s); + test::powm1(i, s); + test::powm1(fr, lr); + //test::legendre_p(1, i); + test::legendre_p(1, 0, s); + test::legendre_q(1, i); + test::laguerre(1, i); + test::laguerre(2, 1, i); + test::laguerre(2u, 1u, s); + test::hermite(1, s); + test::spherical_harmonic_r(2, 1, s, i); + test::spherical_harmonic_i(2, 1, fr, lr); + test::ellint_1(i); + test::ellint_1(i, s); + test::ellint_1(fr, lr); + test::ellint_2(i); + test::ellint_2(i, l); + test::ellint_2(fr, lr); + test::ellint_3(i, l); + test::ellint_3(fr, lr); + test::ellint_3(s, l, i); + test::ellint_3(fr, dr, lr); + test::ellint_rc(i, s); + test::ellint_rc(fr, lr); + test::ellint_rd(s, i, l); + test::ellint_rd(fr, lr, dr); + test::ellint_rf(s, l, i); + test::ellint_rf(fr, dr, lr); + test::ellint_rj(i, i, s, l); + test::ellint_rj(i, fr, dr, lr); + test::hypot(i, s); + test::hypot(fr, lr); + test::sinc_pi(i); + test::sinhc_pi(i); + test::asinh(s); + test::acosh(l); + test::atanh(l); + test::sin_pi(s); + test::cos_pi(s); + test::cyl_neumann(fr, dr); + test::cyl_neumann(i, s); + test::cyl_bessel_j(fr, lr); + test::cyl_bessel_j(i, s); + test::cyl_bessel_i(fr, lr); + test::cyl_bessel_i(i, s); + test::cyl_bessel_k(fr, lr); + test::cyl_bessel_k(i, s); + test::sph_bessel(i, fr); + test::sph_bessel(i, 1); + test::sph_neumann(i, lr); + test::sph_neumann(i, i); +} + + +#endif // BOOST_LIBS_MATH_TEST_INSTANTIATE_HPP diff --git a/test/compile_test/sf_bessel_incl_test.cpp b/test/compile_test/sf_bessel_incl_test.cpp new file mode 100644 index 000000000..c1371b26a --- /dev/null +++ b/test/compile_test/sf_bessel_incl_test.cpp @@ -0,0 +1,53 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::cyl_bessel_j(f, f)); + check_result(boost::math::cyl_bessel_j(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::cyl_bessel_j(l, l)); +#endif + + check_result(boost::math::cyl_neumann(f, f)); + check_result(boost::math::cyl_neumann(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::cyl_neumann(l, l)); +#endif + + check_result(boost::math::cyl_bessel_i(f, f)); + check_result(boost::math::cyl_bessel_i(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::cyl_bessel_i(l, l)); +#endif + + check_result(boost::math::cyl_bessel_k(f, f)); + check_result(boost::math::cyl_bessel_k(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::cyl_bessel_k(l, l)); +#endif + + check_result(boost::math::sph_bessel(u, f)); + check_result(boost::math::sph_bessel(u, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sph_bessel(u, l)); +#endif + + check_result(boost::math::sph_neumann(u, f)); + check_result(boost::math::sph_neumann(u, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sph_neumann(u, l)); +#endif +} diff --git a/test/compile_test/sf_beta_incl_test.cpp b/test/compile_test/sf_beta_incl_test.cpp new file mode 100644 index 000000000..5b4c0ddac --- /dev/null +++ b/test/compile_test/sf_beta_incl_test.cpp @@ -0,0 +1,42 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::beta(f, f)); + check_result(boost::math::beta(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::beta(l, l)); +#endif + + check_result(boost::math::ibeta(f, f, f)); + check_result(boost::math::ibeta(d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ibeta(l, l, l)); +#endif + + check_result(boost::math::ibeta_inv(f, f, f)); + check_result(boost::math::ibeta_inv(d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ibeta_inv(l, l, l)); +#endif + + check_result(boost::math::ibeta_inva(f, f, f)); + check_result(boost::math::ibeta_inva(d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ibeta_inva(l, l, l)); +#endif +} + diff --git a/test/compile_test/sf_binomial_incl_test.cpp b/test/compile_test/sf_binomial_incl_test.cpp new file mode 100644 index 000000000..ebdbdfa21 --- /dev/null +++ b/test/compile_test/sf_binomial_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::binomial_coefficient(u, u)); + check_result(boost::math::binomial_coefficient(u, u)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::binomial_coefficient(u, u)); +#endif +} diff --git a/test/compile_test/sf_cbrt_incl_test.cpp b/test/compile_test/sf_cbrt_incl_test.cpp new file mode 100644 index 000000000..6620cc0f8 --- /dev/null +++ b/test/compile_test/sf_cbrt_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::cbrt(f)); + check_result(boost::math::cbrt(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::cbrt(l)); +#endif +} diff --git a/test/compile_test/sf_cos_pi_incl_test.cpp b/test/compile_test/sf_cos_pi_incl_test.cpp new file mode 100644 index 000000000..8053aaa4b --- /dev/null +++ b/test/compile_test/sf_cos_pi_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::cos_pi(f)); + check_result(boost::math::cos_pi(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::cos_pi(l)); +#endif +} diff --git a/test/compile_test/sf_digamma_incl_test.cpp b/test/compile_test/sf_digamma_incl_test.cpp new file mode 100644 index 000000000..12356d67d --- /dev/null +++ b/test/compile_test/sf_digamma_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::digamma(f)); + check_result(boost::math::digamma(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::digamma(l)); +#endif +} \ No newline at end of file diff --git a/test/compile_test/sf_ellint_1_incl_test.cpp b/test/compile_test/sf_ellint_1_incl_test.cpp new file mode 100644 index 000000000..74fb5df48 --- /dev/null +++ b/test/compile_test/sf_ellint_1_incl_test.cpp @@ -0,0 +1,29 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_1(f, f)); + check_result(boost::math::ellint_1(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_1(l, l)); +#endif + + check_result(boost::math::ellint_1(f)); + check_result(boost::math::ellint_1(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_1(l)); +#endif +} diff --git a/test/compile_test/sf_ellint_2_incl_test.cpp b/test/compile_test/sf_ellint_2_incl_test.cpp new file mode 100644 index 000000000..3ca5ff69b --- /dev/null +++ b/test/compile_test/sf_ellint_2_incl_test.cpp @@ -0,0 +1,29 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_2(f, f)); + check_result(boost::math::ellint_2(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_2(l, l)); +#endif + + check_result(boost::math::ellint_2(f)); + check_result(boost::math::ellint_2(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_2(l)); +#endif +} diff --git a/test/compile_test/sf_ellint_3_incl_test.cpp b/test/compile_test/sf_ellint_3_incl_test.cpp new file mode 100644 index 000000000..a46444b7d --- /dev/null +++ b/test/compile_test/sf_ellint_3_incl_test.cpp @@ -0,0 +1,29 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_3(f, f)); + check_result(boost::math::ellint_3(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_3(l, l)); +#endif + + check_result(boost::math::ellint_3(f, f, f)); + check_result(boost::math::ellint_3(d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_3(l, l, l)); +#endif +} diff --git a/test/compile_test/sf_ellint_rc_incl_test.cpp b/test/compile_test/sf_ellint_rc_incl_test.cpp new file mode 100644 index 000000000..4e67aab04 --- /dev/null +++ b/test/compile_test/sf_ellint_rc_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_rc(f, f)); + check_result(boost::math::ellint_rc(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_rc(l, l)); +#endif +} diff --git a/test/compile_test/sf_ellint_rd_incl_test.cpp b/test/compile_test/sf_ellint_rd_incl_test.cpp new file mode 100644 index 000000000..b0be0fc07 --- /dev/null +++ b/test/compile_test/sf_ellint_rd_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_rd(f, f, f)); + check_result(boost::math::ellint_rd(d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_rd(l, l, l)); +#endif +} diff --git a/test/compile_test/sf_ellint_rf_incl_test.cpp b/test/compile_test/sf_ellint_rf_incl_test.cpp new file mode 100644 index 000000000..6547cf184 --- /dev/null +++ b/test/compile_test/sf_ellint_rf_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_rf(f, f, f)); + check_result(boost::math::ellint_rf(d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_rf(l, l, l)); +#endif +} diff --git a/test/compile_test/sf_ellint_rj_incl_test.cpp b/test/compile_test/sf_ellint_rj_incl_test.cpp new file mode 100644 index 000000000..ee7e4d0c7 --- /dev/null +++ b/test/compile_test/sf_ellint_rj_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::ellint_rj(f, f, f, f)); + check_result(boost::math::ellint_rj(d, d, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::ellint_rj(l, l, l, l)); +#endif +} diff --git a/test/compile_test/sf_erf_incl_test.cpp b/test/compile_test/sf_erf_incl_test.cpp new file mode 100644 index 000000000..9931128f7 --- /dev/null +++ b/test/compile_test/sf_erf_incl_test.cpp @@ -0,0 +1,41 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::erf(f)); + check_result(boost::math::erf(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::erf(l)); +#endif + + check_result(boost::math::erfc(f)); + check_result(boost::math::erfc(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::erfc(l)); +#endif + + check_result(boost::math::erf_inv(f)); + check_result(boost::math::erf_inv(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::erf_inv(l)); +#endif + + check_result(boost::math::erfc_inv(f)); + check_result(boost::math::erfc_inv(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::erfc_inv(l)); +#endif +} diff --git a/test/compile_test/sf_expm1_incl_test.cpp b/test/compile_test/sf_expm1_incl_test.cpp new file mode 100644 index 000000000..dba9e9cca --- /dev/null +++ b/test/compile_test/sf_expm1_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::expm1(f)); + check_result(boost::math::expm1(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::expm1(l)); +#endif +} diff --git a/test/compile_test/sf_factorials_incl_test.cpp b/test/compile_test/sf_factorials_incl_test.cpp new file mode 100644 index 000000000..6d2a01817 --- /dev/null +++ b/test/compile_test/sf_factorials_incl_test.cpp @@ -0,0 +1,42 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::factorial(u)); + check_result(boost::math::factorial(u)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::factorial(u)); +#endif + + check_result(boost::math::double_factorial(u)); + check_result(boost::math::double_factorial(u)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::double_factorial(u)); +#endif + + check_result(boost::math::rising_factorial(f, i)); + check_result(boost::math::rising_factorial(d, i)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::rising_factorial(l, i)); +#endif + + check_result(boost::math::falling_factorial(f, u)); + check_result(boost::math::falling_factorial(d, u)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::falling_factorial(l, u)); +#endif +} + diff --git a/test/compile_test/sf_fpclassify_incl_test.cpp b/test/compile_test/sf_fpclassify_incl_test.cpp new file mode 100644 index 000000000..4515a901b --- /dev/null +++ b/test/compile_test/sf_fpclassify_incl_test.cpp @@ -0,0 +1,43 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::fpclassify BOOST_NO_MACRO_EXPAND(f)); + check_result(boost::math::fpclassify BOOST_NO_MACRO_EXPAND(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::fpclassify BOOST_NO_MACRO_EXPAND(l)); +#endif + + check_result(boost::math::isfinite BOOST_NO_MACRO_EXPAND(f)); + check_result(boost::math::isfinite BOOST_NO_MACRO_EXPAND(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::isfinite BOOST_NO_MACRO_EXPAND(l)); +#endif + + check_result(boost::math::isinf BOOST_NO_MACRO_EXPAND(f)); + check_result(boost::math::isinf BOOST_NO_MACRO_EXPAND(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::isinf BOOST_NO_MACRO_EXPAND(l)); +#endif + + check_result(boost::math::isnormal BOOST_NO_MACRO_EXPAND(f)); + check_result(boost::math::isnormal BOOST_NO_MACRO_EXPAND(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::isnormal BOOST_NO_MACRO_EXPAND(l)); +#endif +} + + diff --git a/test/compile_test/sf_gamma_incl_test.cpp b/test/compile_test/sf_gamma_incl_test.cpp new file mode 100644 index 000000000..fd0dabbf4 --- /dev/null +++ b/test/compile_test/sf_gamma_incl_test.cpp @@ -0,0 +1,83 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::tgamma(f)); + check_result(boost::math::tgamma(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::tgamma(l)); +#endif + + check_result(boost::math::lgamma(f)); + check_result(boost::math::lgamma(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::lgamma(l)); +#endif + + check_result(boost::math::gamma_p(f, f)); + check_result(boost::math::gamma_p(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_p(l, l)); +#endif + + check_result(boost::math::gamma_q(f, f)); + check_result(boost::math::gamma_q(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_q(l, l)); +#endif + + check_result(boost::math::gamma_p_inv(f, f)); + check_result(boost::math::gamma_p_inv(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_p_inv(l, l)); +#endif + + check_result(boost::math::gamma_q_inv(f, f)); + check_result(boost::math::gamma_q_inv(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_q_inv(l, l)); +#endif + + check_result(boost::math::gamma_p_inva(f, f)); + check_result(boost::math::gamma_p_inva(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_p_inva(l, l)); +#endif + + check_result(boost::math::gamma_q_inva(f, f)); + check_result(boost::math::gamma_q_inva(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_q_inva(l, l)); +#endif + + check_result(boost::math::gamma_p_derivative(f, f)); + check_result(boost::math::gamma_p_derivative(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::gamma_p_derivative(l, l)); +#endif + + check_result(boost::math::tgamma_ratio(f, f)); + check_result(boost::math::tgamma_ratio(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::tgamma_ratio(l, l)); +#endif + + check_result(boost::math::tgamma_delta_ratio(f, f)); + check_result(boost::math::tgamma_delta_ratio(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::tgamma_delta_ratio(l, l)); +#endif +} diff --git a/test/compile_test/sf_hermite_incl_test.cpp b/test/compile_test/sf_hermite_incl_test.cpp new file mode 100644 index 000000000..757897939 --- /dev/null +++ b/test/compile_test/sf_hermite_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::hermite(u, f)); + check_result(boost::math::hermite(u, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::hermite(u, l)); +#endif +} diff --git a/test/compile_test/sf_hypot_incl_test.cpp b/test/compile_test/sf_hypot_incl_test.cpp new file mode 100644 index 000000000..cb2c9d19a --- /dev/null +++ b/test/compile_test/sf_hypot_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::hypot(f, f)); + check_result(boost::math::hypot(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::hypot(l, l)); +#endif +} diff --git a/test/compile_test/sf_laguerre_incl_test.cpp b/test/compile_test/sf_laguerre_incl_test.cpp new file mode 100644 index 000000000..7683d1aab --- /dev/null +++ b/test/compile_test/sf_laguerre_incl_test.cpp @@ -0,0 +1,32 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::laguerre(u, f)); + check_result(boost::math::laguerre(u, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::laguerre(u, l)); +#endif + + typedef boost::math::policies::policy<> def_pol; + def_pol p; + + check_result(boost::math::laguerre(u, u, f, p)); + check_result(boost::math::laguerre(u, u, d, p)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::laguerre(u, u, l, p)); +#endif +} diff --git a/test/compile_test/sf_lanczos_incl_test.cpp b/test/compile_test/sf_lanczos_incl_test.cpp new file mode 100644 index 000000000..ef54883ba --- /dev/null +++ b/test/compile_test/sf_lanczos_incl_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/sf_legendre_incl_test.cpp b/test/compile_test/sf_legendre_incl_test.cpp new file mode 100644 index 000000000..8ba867249 --- /dev/null +++ b/test/compile_test/sf_legendre_incl_test.cpp @@ -0,0 +1,35 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::legendre_p(i, f)); + check_result(boost::math::legendre_p(i, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::legendre_p(i, l)); +#endif + + check_result(boost::math::legendre_p(i, i, f)); + check_result(boost::math::legendre_p(i, i, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::legendre_p(i, i, l)); +#endif + + check_result(boost::math::legendre_q(u, f)); + check_result(boost::math::legendre_q(u, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::legendre_q(u, l)); +#endif +} diff --git a/test/compile_test/sf_log1p_incl_test.cpp b/test/compile_test/sf_log1p_incl_test.cpp new file mode 100644 index 000000000..0d4737f6d --- /dev/null +++ b/test/compile_test/sf_log1p_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::log1p(f)); + check_result(boost::math::log1p(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::log1p(l)); +#endif +} diff --git a/test/compile_test/sf_math_fwd_incl_test.cpp b/test/compile_test/sf_math_fwd_incl_test.cpp new file mode 100644 index 000000000..6e790977d --- /dev/null +++ b/test/compile_test/sf_math_fwd_incl_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/sf_powm1_incl_test.cpp b/test/compile_test/sf_powm1_incl_test.cpp new file mode 100644 index 000000000..56f474709 --- /dev/null +++ b/test/compile_test/sf_powm1_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::powm1(f, f)); + check_result(boost::math::powm1(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::powm1(l, l)); +#endif +} diff --git a/test/compile_test/sf_sign_incl_test.cpp b/test/compile_test/sf_sign_incl_test.cpp new file mode 100644 index 000000000..161b943b1 --- /dev/null +++ b/test/compile_test/sf_sign_incl_test.cpp @@ -0,0 +1,35 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::sign(f)); + check_result(boost::math::sign(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sign(l)); +#endif + + check_result(boost::math::signbit(f)); + check_result(boost::math::signbit(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::signbit(l)); +#endif + + check_result(boost::math::copysign(f, f)); + check_result(boost::math::copysign(d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::copysign(l, l)); +#endif +} diff --git a/test/compile_test/sf_sin_pi_incl_test.cpp b/test/compile_test/sf_sin_pi_incl_test.cpp new file mode 100644 index 000000000..99e8c8853 --- /dev/null +++ b/test/compile_test/sf_sin_pi_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::sin_pi(f)); + check_result(boost::math::sin_pi(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sin_pi(l)); +#endif +} diff --git a/test/compile_test/sf_sinc_incl_test.cpp b/test/compile_test/sf_sinc_incl_test.cpp new file mode 100644 index 000000000..4c51cb329 --- /dev/null +++ b/test/compile_test/sf_sinc_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::sinc_pi(f)); + check_result(boost::math::sinc_pi(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sinc_pi(l)); +#endif +} diff --git a/test/compile_test/sf_sinhc_incl_test.cpp b/test/compile_test/sf_sinhc_incl_test.cpp new file mode 100644 index 000000000..7eeb6173a --- /dev/null +++ b/test/compile_test/sf_sinhc_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::sinhc_pi(f)); + check_result(boost::math::sinhc_pi(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sinhc_pi(l)); +#endif +} diff --git a/test/compile_test/sf_sph_harm_incl_test.cpp b/test/compile_test/sf_sph_harm_incl_test.cpp new file mode 100644 index 000000000..741d3b2d0 --- /dev/null +++ b/test/compile_test/sf_sph_harm_incl_test.cpp @@ -0,0 +1,43 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +inline void check_result_imp(std::complex, std::complex){} +inline void check_result_imp(std::complex, std::complex){} +inline void check_result_imp(std::complex, std::complex){} + +#include "test_compile_result.hpp" + + + +void check() +{ + check_result >(boost::math::spherical_harmonic(u, i, f, f)); + check_result >(boost::math::spherical_harmonic(u, i, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result >(boost::math::spherical_harmonic(u, i, l, l)); +#endif + + check_result(boost::math::spherical_harmonic_r(u, i, f, f)); + check_result(boost::math::spherical_harmonic_r(u, i, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::spherical_harmonic_r(u, i, l, l)); +#endif + + check_result(boost::math::spherical_harmonic_i(u, i, f, f)); + check_result(boost::math::spherical_harmonic_i(u, i, d, d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::spherical_harmonic_i(u, i, l, l)); +#endif +} + + diff --git a/test/compile_test/sf_sqrt1pm1_incl_test.cpp b/test/compile_test/sf_sqrt1pm1_incl_test.cpp new file mode 100644 index 000000000..b26f6a2eb --- /dev/null +++ b/test/compile_test/sf_sqrt1pm1_incl_test.cpp @@ -0,0 +1,23 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +void check() +{ + check_result(boost::math::sqrt1pm1(f)); + check_result(boost::math::sqrt1pm1(d)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + check_result(boost::math::sqrt1pm1(l)); +#endif +} diff --git a/test/compile_test/std_real_concept_check.cpp b/test/compile_test/std_real_concept_check.cpp new file mode 100644 index 000000000..10b407d44 --- /dev/null +++ b/test/compile_test/std_real_concept_check.cpp @@ -0,0 +1,200 @@ +// Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false + +#include +#include + +#include "instantiate.hpp" + +// +// The purpose of this test is to verify that our code compiles +// cleanly with a type whose std lib functions are in namespace +// std and can *not* be found by ADL. This verifies that we're +// not finding std lib functions that are in the global namespace +// for example calling ::pow(double) rather than std::pow(long double). +// This is a silent error that does the wrong thing at runtime, and +// of course we can't call std::pow() directly because we want +// the functions to be found by ADL when that's appropriate. +// +// Furthermore our code does different things internally depending +// on numeric_limits<>::digits, so there are some macros that can +// be defined that cause our concept-archetype to emulate various +// floating point types: +// +// EMULATE32: 32-bit float +// EMULATE64: 64-bit double +// EMULATE80: 80-bit long double +// EMULATE128: 128-bit long double +// +// In order to ensure total code coverage this file must be +// compiled with each of the above macros in turn, and then +// without any of the above as well! +// + +#define NULL_MACRO /**/ +#ifdef EMULATE32 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 24; + static const int digits10 = 6; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -125; + static const int min_exponent10 = -37; + static const int max_exponent = 128; + static const int max_exponent10 = 38; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif +#ifdef EMULATE64 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 53; + static const int digits10 = 15; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -1021; + static const int min_exponent10 = -307; + static const int max_exponent = 1024; + static const int max_exponent10 = 308; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif +#ifdef EMULATE80 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 64; + static const int digits10 = 18; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -16381; + static const int min_exponent10 = -4931; + static const int max_exponent = 16384; + static const int max_exponent10 = 4932; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif +#ifdef EMULATE128 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 113; + static const int digits10 = 33; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -16381; + static const int min_exponent10 = -4931; + static const int max_exponent = 16384; + static const int max_exponent10 = 4932; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif + + + +int main() +{ +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + instantiate(boost::math::concepts::std_real_concept(0)); +#endif +} + diff --git a/test/compile_test/test_compile_result.hpp b/test/compile_test/test_compile_result.hpp new file mode 100644 index 000000000..9a3fd30ae --- /dev/null +++ b/test/compile_test/test_compile_result.hpp @@ -0,0 +1,131 @@ +// Copyright John Maddock 2007. +// 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) + +// +// Note this header must NOT include any other headers, for its +// use to be meaningful (because we use it in tests designed to +// detect missing includes). +// + +static const float f = 0; +static const double d = 0; +static const long double l = 0; +static const unsigned u = 0; +static const int i = 0; + +//template +//inline void check_result_imp(T, T){} + +inline void check_result_imp(float, float){} +inline void check_result_imp(double, double){} +inline void check_result_imp(long double, long double){} +inline void check_result_imp(int, int){} +inline void check_result_imp(bool, bool){} + +template +inline void check_result_imp(T1, T2) +{ + typedef int static_assertion[sizeof(T1) == 0xFFFF]; +} + +template +inline void check_result(T2) +{ + T1 a = T1(); + T2 b = T2(); + return check_result_imp(a, b); +} + + +template +struct DistributionConcept +{ + static void constraints() + { + typedef typename Distribution::value_type value_type; + + const Distribution& dist = DistributionConcept::get_object(); + + value_type x = 0; + // The result values are ignored in all these checks. + check_result(cdf(dist, x)); + check_result(cdf(complement(dist, x))); + check_result(pdf(dist, x)); + check_result(quantile(dist, x)); + check_result(quantile(complement(dist, x))); + check_result(mean(dist)); + check_result(mode(dist)); + check_result(standard_deviation(dist)); + check_result(variance(dist)); + check_result(hazard(dist, x)); + check_result(chf(dist, x)); + check_result(coefficient_of_variation(dist)); + check_result(skewness(dist)); + check_result(kurtosis(dist)); + check_result(kurtosis_excess(dist)); + check_result(median(dist)); + // + // we can't actually test that at std::pair is returned from these + // because that would mean including some std lib headers.... + // + range(dist); + support(dist); + + check_result(cdf(dist, f)); + check_result(cdf(complement(dist, f))); + check_result(pdf(dist, f)); + check_result(quantile(dist, f)); + check_result(quantile(complement(dist, f))); + check_result(hazard(dist, f)); + check_result(chf(dist, f)); + check_result(cdf(dist, d)); + check_result(cdf(complement(dist, d))); + check_result(pdf(dist, d)); + check_result(quantile(dist, d)); + check_result(quantile(complement(dist, d))); + check_result(hazard(dist, d)); + check_result(chf(dist, d)); + check_result(cdf(dist, l)); + check_result(cdf(complement(dist, l))); + check_result(pdf(dist, l)); + check_result(quantile(dist, l)); + check_result(quantile(complement(dist, l))); + check_result(hazard(dist, l)); + check_result(chf(dist, l)); + check_result(cdf(dist, i)); + check_result(cdf(complement(dist, i))); + check_result(pdf(dist, i)); + check_result(quantile(dist, i)); + check_result(quantile(complement(dist, i))); + check_result(hazard(dist, i)); + check_result(chf(dist, i)); + unsigned long li = 1; + check_result(cdf(dist, li)); + check_result(cdf(complement(dist, li))); + check_result(pdf(dist, li)); + check_result(quantile(dist, li)); + check_result(quantile(complement(dist, li))); + check_result(hazard(dist, li)); + check_result(chf(dist, li)); + } +private: + static Distribution* get_object_p(); + static Distribution& get_object() + { + // will never get called: + return *get_object_p(); + } +}; // struct DistributionConcept + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#define TEST_DIST_FUNC(dist)\ + DistributionConcept< boost::math::dist##_distribution >::constraints();\ + DistributionConcept< boost::math::dist##_distribution >::constraints();\ + DistributionConcept< boost::math::dist##_distribution >::constraints(); +#else +#define TEST_DIST_FUNC(dist)\ + DistributionConcept< boost::math::dist##_distribution >::constraints();\ + DistributionConcept< boost::math::dist##_distribution >::constraints(); +#endif diff --git a/test/compile_test/test_traits.cpp b/test/compile_test/test_traits.cpp new file mode 100644 index 000000000..6af0ef360 --- /dev/null +++ b/test/compile_test/test_traits.cpp @@ -0,0 +1,56 @@ +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include + +using namespace boost::math; + +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution >::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution >::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_distribution::value); + +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution >::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution >::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); +BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value == false); + diff --git a/test/compile_test/tools_config_inc_test.cpp b/test/compile_test/tools_config_inc_test.cpp new file mode 100644 index 000000000..d9f765940 --- /dev/null +++ b/test/compile_test/tools_config_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_fraction_inc_test.cpp b/test/compile_test/tools_fraction_inc_test.cpp new file mode 100644 index 000000000..e185137e0 --- /dev/null +++ b/test/compile_test/tools_fraction_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_minima_inc_test.cpp b/test/compile_test/tools_minima_inc_test.cpp new file mode 100644 index 000000000..367d7b63a --- /dev/null +++ b/test/compile_test/tools_minima_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_polynomial_inc_test.cpp b/test/compile_test/tools_polynomial_inc_test.cpp new file mode 100644 index 000000000..111d5be5d --- /dev/null +++ b/test/compile_test/tools_polynomial_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_precision_inc_test.cpp b/test/compile_test/tools_precision_inc_test.cpp new file mode 100644 index 000000000..84c59ef93 --- /dev/null +++ b/test/compile_test/tools_precision_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_rational_inc_test.cpp b/test/compile_test/tools_rational_inc_test.cpp new file mode 100644 index 000000000..46b5de44f --- /dev/null +++ b/test/compile_test/tools_rational_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_real_cast_inc_test.cpp b/test/compile_test/tools_real_cast_inc_test.cpp new file mode 100644 index 000000000..e46bdc94c --- /dev/null +++ b/test/compile_test/tools_real_cast_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_remez_inc_test.cpp b/test/compile_test/tools_remez_inc_test.cpp new file mode 100644 index 000000000..121b0b4da --- /dev/null +++ b/test/compile_test/tools_remez_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_roots_inc_test.cpp b/test/compile_test/tools_roots_inc_test.cpp new file mode 100644 index 000000000..6bd5a9ce7 --- /dev/null +++ b/test/compile_test/tools_roots_inc_test.cpp @@ -0,0 +1,38 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +inline void check_result_imp(std::pair, std::pair){} +inline void check_result_imp(std::pair, std::pair){} +inline void check_result_imp(std::pair, std::pair){} + +#include "test_compile_result.hpp" + +void check() +{ + typedef double (*F)(double); + typedef std::pair (*F2)(double); + typedef std::tr1::tuple (*F3)(double); + typedef boost::math::tools::eps_tolerance Tol; + Tol tol(u); + boost::uintmax_t max_iter = 0; + F f = 0; + F2 f2 = 0; + F3 f3 = 0; + + check_result >(boost::math::tools::bisect(f, d, d, tol, max_iter)); + check_result >(boost::math::tools::bisect(f, d, d, tol)); + check_result(boost::math::tools::newton_raphson_iterate(f2, d, d, d, i, max_iter)); + check_result(boost::math::tools::halley_iterate(f3, d, d, d, i, max_iter)); + check_result(boost::math::tools::schroeder_iterate(f3, d, d, d, i, max_iter)); +} + diff --git a/test/compile_test/tools_series_inc_test.cpp b/test/compile_test/tools_series_inc_test.cpp new file mode 100644 index 000000000..0a51905ee --- /dev/null +++ b/test/compile_test/tools_series_inc_test.cpp @@ -0,0 +1,35 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +#include "test_compile_result.hpp" + +struct Functor +{ + typedef double result_type; + double operator()(); +}; +#define U double + +Functor func; +boost::uintmax_t uim = 0; + +void check() +{ + check_result(boost::math::tools::sum_series(func, i)); + check_result(boost::math::tools::sum_series(func, i, uim)); + check_result(boost::math::tools::sum_series(func, i, d)); + check_result(boost::math::tools::sum_series(func, i, uim, d)); + check_result(boost::math::tools::kahan_sum_series(func, i)); + check_result(boost::math::tools::kahan_sum_series(func, i, uim)); +} + diff --git a/test/compile_test/tools_solve_inc_test.cpp b/test/compile_test/tools_solve_inc_test.cpp new file mode 100644 index 000000000..a0dcd0d3b --- /dev/null +++ b/test/compile_test/tools_solve_inc_test.cpp @@ -0,0 +1,10 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + diff --git a/test/compile_test/tools_stats_inc_test.cpp b/test/compile_test/tools_stats_inc_test.cpp new file mode 100644 index 000000000..6d5898b4d --- /dev/null +++ b/test/compile_test/tools_stats_inc_test.cpp @@ -0,0 +1,11 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + +template class boost::math::tools::stats; diff --git a/test/compile_test/tools_test_data_inc_test.cpp b/test/compile_test/tools_test_data_inc_test.cpp new file mode 100644 index 000000000..d2daa5e99 --- /dev/null +++ b/test/compile_test/tools_test_data_inc_test.cpp @@ -0,0 +1,21 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + +#define T double + +template boost::math::tools::parameter_info boost::math::tools::make_random_param(T start_range, T end_range, int n_points); +template boost::math::tools::parameter_info boost::math::tools::make_periodic_param(T start_range, T end_range, int n_points); +template boost::math::tools::parameter_info boost::math::tools::make_power_param(T basis, int start_exponent, int end_exponent); + +template class boost::math::tools::test_data; + +template bool boost::math::tools::get_user_parameter_info(boost::math::tools::parameter_info& info, const char* param_name); + + diff --git a/test/compile_test/tools_test_inc_test.cpp b/test/compile_test/tools_test_inc_test.cpp new file mode 100644 index 000000000..d6a724923 --- /dev/null +++ b/test/compile_test/tools_test_inc_test.cpp @@ -0,0 +1,36 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include +#include +// +// Note this header includes no other headers, this is +// important if this test is to be meaningful: +// +inline void check_result_imp(boost::math::tools::test_result, boost::math::tools::test_result){} + +#include "test_compile_result.hpp" + + +void check() +{ + check_result(boost::math::tools::relative_error(f, f)); + + #define A boost::array, 2> + typedef double (*F1)(const boost::array&); + typedef F1 F2; + A a; + F1 f1 = 0; + F2 f2 = 0; + + check_result::value_type> > + (boost::math::tools::test(a, f1, f2)); + +} + diff --git a/test/compile_test/tools_toms748_inc_test.cpp b/test/compile_test/tools_toms748_inc_test.cpp new file mode 100644 index 000000000..3c321006f --- /dev/null +++ b/test/compile_test/tools_toms748_inc_test.cpp @@ -0,0 +1,18 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Basic sanity check that header +// #includes all the files that it needs to. +// +#include + +#define T double +#define Tol boost::math::tools::eps_tolerance + +typedef T (*F)(T); + +template std::pair boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, boost::uintmax_t&); +template std::pair boost::math::tools::toms748_solve(F f, const T& ax, const T& bx, Tol tol, boost::uintmax_t& max_iter); +template std::pair boost::math::tools::bracket_and_solve_root(F f, const T& guess, const T& factor, bool rising, Tol tol, boost::uintmax_t& max_iter); diff --git a/test/complex_test.cpp b/test/complex_test.cpp index bcb60c002..cf879c056 100644 --- a/test/complex_test.cpp +++ b/test/complex_test.cpp @@ -853,9 +853,11 @@ int test_main(int, char*[]) check_spots(float(0)); std::cout << "Running complex trig spot checks for type double." << std::endl; check_spots(double(0)); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS std::cout << "Running complex trig spot checks for type long double." << std::endl; check_spots((long double)(0)); - +#endif + std::cout << "Running complex trig boundary and accuracy tests." << std::endl; test_boundaries(); return 0; diff --git a/test/digamma_data.ipp b/test/digamma_data.ipp new file mode 100644 index 000000000..b5ab09aca --- /dev/null +++ b/test/digamma_data.ipp @@ -0,0 +1,510 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 500> digamma_data = { { + { SC_(2.818432331085205078125), SC_(0.8484115700906551606307984398000472347785) }, + { SC_(4.6342258453369140625), SC_(1.421713669467331557347601964119226105014) }, + { SC_(4.783483982086181640625), SC_(1.457016504476551729585831562031964212238) }, + { SC_(8.0939121246337890625), SC_(2.02806725001046109435006913084666450899) }, + { SC_(11.90207004547119140625), SC_(2.434114987242530269375534072241650635459) }, + { SC_(13.53912639617919921875), SC_(2.568199379535107033473901142572267131293) }, + { SC_(15.40344142913818359375), SC_(2.70177959979566700235213147968567613712) }, + { SC_(16.5205841064453125), SC_(2.774036634025874647373138331993451055497) }, + { SC_(17.7738971710205078125), SC_(2.849336085709903318587899668469823726457) }, + { SC_(18.45084381103515625), SC_(2.887766358793563776387986802412157943366) }, + { SC_(29.2202816009521484375), SC_(3.357654052423628189208902434898861034575) }, + { SC_(31.832843780517578125), SC_(3.444709303236843682984386511584019805155) }, + { SC_(33.268566131591796875), SC_(3.48950850367834697800598135337384460165) }, + { SC_(34.31731414794921875), SC_(3.521009352966155255811365379184456009466) }, + { SC_(34.446079254150390625), SC_(3.524809514386367110160928575889334171204) }, + { SC_(35.711681365966796875), SC_(3.561411485674988633898237821294494311983) }, + { SC_(36.441249847412109375), SC_(3.581917907724542515429931900299321464116) }, + { SC_(40.471111297607421875), SC_(3.688183052096727944017539059038660866267) }, + { SC_(42.0541229248046875), SC_(3.727020872145296937504698477067321294092) }, + { SC_(43.023799896240234375), SC_(3.750086956755859174992028774044963741414) }, + { SC_(45.059543609619140625), SC_(3.796847336482220986142117794493357261772) }, + { SC_(46.171390533447265625), SC_(3.821492048093989120306052355659348850595) }, + { SC_(47.944286346435546875), SC_(3.859574612789685102190529392545009249772) }, + { SC_(49.654422760009765625), SC_(3.894984071254501776336224194667579417761) }, + { SC_(51.216426849365234375), SC_(3.92626605711337968996352527100620814691) }, + { SC_(53.152568817138671875), SC_(3.963730056566564459495465774334833292077) }, + { SC_(53.9501190185546875), SC_(3.978763447797611600078998595828792990884) }, + { SC_(59.779544830322265625), SC_(4.082276159182205975531619692613299061202) }, + { SC_(67.59537506103515625), SC_(4.206124370756245048917505923080906736667) }, + { SC_(75.8542938232421875), SC_(4.322208246185371494736862321857785356042) }, + { SC_(75.96668243408203125), SC_(4.323698582444848954937627922600414958993) }, + { SC_(77.55702972412109375), SC_(4.344552810478025331117690547449165135348) }, + { SC_(78.17552947998046875), SC_(4.352547177563450363247154506704116472633) }, + { SC_(81.125762939453125), SC_(4.389824647463436852929138346906265829317) }, + { SC_(83.821380615234375), SC_(4.422711187859794187691096231764756635029) }, + { SC_(84.43585205078125), SC_(4.430058755062111563873245625234033772093) }, + { SC_(85.5157928466796875), SC_(4.442842802158912826398856512764451371231) }, + { SC_(89.82315826416015625), SC_(4.492266007498633968205232190450336649676) }, + { SC_(95.3551788330078125), SC_(4.552355925956436228488375948364274467585) }, + { SC_(96.45452880859375), SC_(4.563878946335176406579712835902366153383) }, + { SC_(97.13177490234375), SC_(4.570912081982896265651973317486608671594) }, + { SC_(97.54039764404296875), SC_(4.575131786976403596191579466163638961361) }, + { SC_(100.73848724365234375), SC_(4.607556365921065105146592555963264085078) }, + { SC_(106.65277099609375), SC_(4.664882989935773341843363089846541745757) }, + { SC_(108.061920166015625), SC_(4.678070284634890633120327580057526752699) }, + { SC_(109.86175537109375), SC_(4.694664727381252692793513795934630009291) }, + { SC_(111.1192169189453125), SC_(4.706097230556212718518769127144178200579) }, + { SC_(111.20275115966796875), SC_(4.706852091693387791616938432500996073933) }, + { SC_(112.46451568603515625), SC_(4.718185320564378713782753437437734301757) }, + { SC_(113.192535400390625), SC_(4.724666465501466074724041170795702750496) }, + { SC_(117.41765594482421875), SC_(4.761472939730569483093207984677455277661) }, + { SC_(118.9976806640625), SC_(4.774896355243431821176509841645237231067) }, + { SC_(119.54718017578125), SC_(4.779522826588010949258957921967185987839) }, + { SC_(123.31893157958984375), SC_(4.81071393197534640354115364663320564994) }, + { SC_(125.18276214599609375), SC_(4.825775288759329337505915366578532955896) }, + { SC_(125.89662933349609375), SC_(4.83148439831388328994923062624365450503) }, + { SC_(126.98681640625), SC_(4.840140688918909476658690945857238201803) }, + { SC_(129.846527099609375), SC_(4.86249754984079778426805097304440742781) }, + { SC_(129.9062042236328125), SC_(4.862958815139702327034828252875472153454) }, + { SC_(131.973297119140625), SC_(4.878806177776566374942264024665615055025) }, + { SC_(132.99603271484375), SC_(4.886555076645559019076170710371114254694) }, + { SC_(133.73638916015625), SC_(4.892127259828019964975240621714384800823) }, + { SC_(135.4770050048828125), SC_(4.905106717626831988577402303939056656494) }, + { SC_(136.0685577392578125), SC_(4.90947974061898410128546715429801925019) }, + { SC_(138.0013275146484375), SC_(4.923635775505805776701767785882153544687) }, + { SC_(138.62445068359375), SC_(4.928157279267557841707446444163947285747) }, + { SC_(140.1438446044921875), SC_(4.939097350804489336186984804448028468727) }, + { SC_(141.8863372802734375), SC_(4.951498208532141218325182302525386281704) }, + { SC_(144.954803466796875), SC_(4.972968676588775902921394002712748457896) }, + { SC_(145.5389862060546875), SC_(4.977004557354005944430878448659040833139) }, + { SC_(147.829010009765625), SC_(4.992670168744977024725477253611297229446) }, + { SC_(149.113983154296875), SC_(5.001354113685057718576710684744348466536) }, + { SC_(149.29400634765625), SC_(5.002564723643670955839282486237921850327) }, + { SC_(152.378021240234375), SC_(5.023079513160560927910374282855545874691) }, + { SC_(154.43841552734375), SC_(5.036554381553671577576060432491657040309) }, + { SC_(157.6130828857421875), SC_(5.056967507189124773825675779780432867978) }, + { SC_(158.057586669921875), SC_(5.059792699534529307362125473412020388939) }, + { SC_(162.1822967529296875), SC_(5.085634872441444055790538285561513352114) }, + { SC_(162.3285064697265625), SC_(5.086538763499375385825459901390036092276) }, + { SC_(162.6117401123046875), SC_(5.088287436707226991346072251084741331228) }, + { SC_(162.8721160888671875), SC_(5.089892294410720846921196992521724082324) }, + { SC_(165.6487274169921875), SC_(5.106847973878888830832110337446518371119) }, + { SC_(167.5558013916015625), SC_(5.118329389684532657993072571814825296866) }, + { SC_(168.9900360107421875), SC_(5.126878082277710058624325179569901288279) }, + { SC_(170.708038330078125), SC_(5.137022881977642343120933693408155267379) }, + { SC_(171.1866912841796875), SC_(5.139831091399062175194966875853774050215) }, + { SC_(173.86517333984375), SC_(5.155401584700129074352914825821571994537) }, + { SC_(181.572967529296875), SC_(5.198901356355351487232884915474078625454) }, + { SC_(181.847015380859375), SC_(5.200413674777345067384965017459287722255) }, + { SC_(183.5111541748046875), SC_(5.209548346790303183756319086272109508414) }, + { SC_(183.9077911376953125), SC_(5.211713279243515056757039824210382332605) }, + { SC_(184.816314697265625), SC_(5.216654609736436280673189918782642034751) }, + { SC_(186.8726043701171875), SC_(5.227749118747922979749925127240621358077) }, + { SC_(188.3819732666015625), SC_(5.235815144271654507738040431638317824219) }, + { SC_(188.9550018310546875), SC_(5.238860434511886935491539718311895522563) }, + { SC_(194.4953765869140625), SC_(5.267835433896789878679452996831857175441) }, + { SC_(194.7642822265625), SC_(5.269220615601523996859748369572800146799) }, + { SC_(196.595245361328125), SC_(5.278601570477420849009352984342881774012) }, + { SC_(199.55120849609375), SC_(5.293563172363173736409123622092103582665) }, + { SC_(199.87286376953125), SC_(5.29517780707170337549563059440671599137) }, + { SC_(207.7422943115234375), SC_(5.333889582810755539805705568562512261187) }, + { SC_(208.06805419921875), SC_(5.335460225032043059439507730667027716784) }, + { SC_(210.209075927734375), SC_(5.345722164946006440059254445596129365136) }, + { SC_(210.3018798828125), SC_(5.346164602882524533186213817875265383748) }, + { SC_(211.9243316650390625), SC_(5.353868096697531240993528975318640869535) }, + { SC_(213.7727508544921875), SC_(5.362572783030003908578204737735026180568) }, + { SC_(217.2378387451171875), SC_(5.378689393785450240762515278142610186647) }, + { SC_(221.0340576171875), SC_(5.396052995987518692513315434729480482768) }, + { SC_(221.746734619140625), SC_(5.399279376199210442291570588468305439493) }, + { SC_(223.419952392578125), SC_(5.406813587612010012477220821227640963526) }, + { SC_(223.8119354248046875), SC_(5.40857044312848898111490039577861789539) }, + { SC_(225.921783447265625), SC_(5.417974060411836810226948440207258474062) }, + { SC_(227.6642913818359375), SC_(5.425674313715258008117354357369952302663) }, + { SC_(228.976959228515625), SC_(5.431436168546949625044655797954749386032) }, + { SC_(230.15606689453125), SC_(5.436583618434440970405411512638103654567) }, + { SC_(230.4881591796875), SC_(5.438028613498667787626776999061156299023) }, + { SC_(234.7799072265625), SC_(5.45651734435963939743321146310693692221) }, + { SC_(237.2835693359375), SC_(5.467147257515587656692603812143613587167) }, + { SC_(239.5024566650390625), SC_(5.47647456024034998344432612758666650177) }, + { SC_(239.916168212890625), SC_(5.47820405414781872212296108547269195884) }, + { SC_(239.9525146484375), SC_(5.47835585519092106650208297916994251088) }, + { SC_(240.0759429931640625), SC_(5.478871182270947292729700821285916853014) }, + { SC_(241.6912841796875), SC_(5.48559104520771247073410657218711428497) }, + { SC_(243.52496337890625), SC_(5.493164873500147032216227026263947788629) }, + { SC_(244.138275146484375), SC_(5.495685348360518575357280836637213941973) }, + { SC_(247.84759521484375), SC_(5.510795296469788210349267225408057089008) }, + { SC_(251.0838470458984375), SC_(5.523794246827039306466724212993790091993) }, + { SC_(252.9559783935546875), SC_(5.53123754427692590099511415861194353476) }, + { SC_(254.2821807861328125), SC_(5.53647699008893800801173473697704786508) }, + { SC_(255.095123291015625), SC_(5.539675174361895155905420362931642677874) }, + { SC_(257.50823974609375), SC_(5.54910877645277178885293455204990306081) }, + { SC_(258.064697265625), SC_(5.551271568142368038329308299350794617341) }, + { SC_(258.2958984375), SC_(5.552168807470126931792259144648002540331) }, + { SC_(259.87042236328125), SC_(5.558257861474442709235556716423323490943) }, + { SC_(262.21173095703125), SC_(5.567244242836903141874863560065650986603) }, + { SC_(262.48223876953125), SC_(5.568277317584441062906205258279469903793) }, + { SC_(262.971282958984375), SC_(5.570142282612872731717692549388720316202) }, + { SC_(263.80291748046875), SC_(5.573305747885775172479587641948129399505) }, + { SC_(265.920654296875), SC_(5.581316533594154573012665212950951963344) }, + { SC_(272.753021240234375), SC_(5.606732421189819995671142457643674993514) }, + { SC_(276.02508544921875), SC_(5.618679227574827562968855008817945055844) }, + { SC_(276.9229736328125), SC_(5.62193275108461049287671704761080177701) }, + { SC_(278.49822998046875), SC_(5.627615285836316944304326354848356653533) }, + { SC_(281.6273193359375), SC_(5.638808187647616258573018310333124752979) }, + { SC_(282.673309326171875), SC_(5.642521977550928843609142257361465463159) }, + { SC_(285.839019775390625), SC_(5.653678528153416638005857155381996231704) }, + { SC_(287.80499267578125), SC_(5.660544848531287229964224746346326537309) }, + { SC_(296.32080078125), SC_(5.689754344363163686181089294681536867498) }, + { SC_(296.675872802734375), SC_(5.690953917746555781396415233069043398008) }, + { SC_(297.029449462890625), SC_(5.692147011020137765888724960240975571168) }, + { SC_(299.83172607421875), SC_(5.701552875188694305814208034977343378525) }, + { SC_(301.246337890625), SC_(5.706267638858004649656056828257867279121) }, + { SC_(301.827301025390625), SC_(5.708197511695138802806710871639099088268) }, + { SC_(301.913116455078125), SC_(5.708482262307644688021338490250719094243) }, + { SC_(303.61395263671875), SC_(5.714109269616552222989399906960963535438) }, + { SC_(306.3494873046875), SC_(5.723093554813365658046336277832734920358) }, + { SC_(308.16705322265625), SC_(5.729018642421226976646437744710250114317) }, + { SC_(311.102294921875), SC_(5.738513731255894331377758163498728167044) }, + { SC_(311.215057373046875), SC_(5.738876709545896308969873915166375996455) }, + { SC_(312.50799560546875), SC_(5.743029242434299652839488723689056915437) }, + { SC_(316.550445556640625), SC_(5.755902255817228423385699779528788254728) }, + { SC_(317.0994873046875), SC_(5.757637943754943613314524976138239539917) }, + { SC_(318.7783203125), SC_(5.762926632420383028466536214352273605745) }, + { SC_(322.5107421875), SC_(5.774585307653271847190205931939723481736) }, + { SC_(324.963531494140625), SC_(5.782173541925585116003437602057941223569) }, + { SC_(332.448272705078125), SC_(5.804979529807743662919055583913702847441) }, + { SC_(337.122650146484375), SC_(5.818962938187135636742305501932989080651) }, + { SC_(337.71942138671875), SC_(5.820734186921434094429909639202086179781) }, + { SC_(340.219696044921875), SC_(5.828121215221842999606169529284319625934) }, + { SC_(340.3857421875), SC_(5.828609869422364475855293647958724101162) }, + { SC_(343.83953857421875), SC_(5.838720219369554242298305075518187973959) }, + { SC_(343.92974853515625), SC_(5.838982927383424836208079234708676764532) }, + { SC_(344.32794189453125), SC_(5.840141715792665213495451845063858259471) }, + { SC_(346.2333984375), SC_(5.845668301886241439514342457852325235755) }, + { SC_(349.9837646484375), SC_(5.856457448655756722565805616029229423181) }, + { SC_(350.72711181640625), SC_(5.858582174643380806977967882520602080122) }, + { SC_(350.952392578125), SC_(5.859225209340739029885042670228181902477) }, + { SC_(351.659515380859375), SC_(5.861240917897877761839636580241630893874) }, + { SC_(352.76239013671875), SC_(5.864376660211097551985117273619920161247) }, + { SC_(353.1585693359375), SC_(5.865500698218050522379186042690723838268) }, + { SC_(354.63812255859375), SC_(5.869687345986841682980604946721230334574) }, + { SC_(356.34515380859375), SC_(5.874496004070293633977629973243397192974) }, + { SC_(360.8607177734375), SC_(5.887105844462842568231690256873044524566) }, + { SC_(361.29400634765625), SC_(5.888307496020129242675686611572690424192) }, + { SC_(363.18646240234375), SC_(5.893539037844593630113143804047702478072) }, + { SC_(368.484588623046875), SC_(5.908041366251291466893815884478290769093) }, + { SC_(369.246795654296875), SC_(5.910110524295502063829120796381053011945) }, + { SC_(378.50042724609375), SC_(5.934895617510447498576865442817972697249) }, + { SC_(378.609375), SC_(5.935183797060069242663195486702002966313) }, + { SC_(379.418853759765625), SC_(5.937322366182591168893192048144610446318) }, + { SC_(380.445831298828125), SC_(5.940028981977972573511311112384361555998) }, + { SC_(381.558441162109375), SC_(5.942953039189986310250537695096760920284) }, + { SC_(382.33294677734375), SC_(5.944983486642878955588861619779712183753) }, + { SC_(385.71051025390625), SC_(5.953790245535102839028892159533990782538) }, + { SC_(387.2958984375), SC_(5.957897438189758732168023760232019857062) }, + { SC_(388.569793701171875), SC_(5.961185480793951888080130571435866339859) }, + { SC_(388.61517333984375), SC_(5.961302410689641047121043666111858152527) }, + { SC_(389.73883056640625), SC_(5.964193390561584996249624057879172484094) }, + { SC_(392.227020263671875), SC_(5.970565491861186670927570593593922746651) }, + { SC_(392.320465087890625), SC_(5.970804009055547779176675482333698236361) }, + { SC_(393.58984375), SC_(5.974038465445461053564629207897789530972) }, + { SC_(394.908233642578125), SC_(5.977386766739159526527423143050993473122) }, + { SC_(398.738525390625), SC_(5.987051398521802594134573229887245743555) }, + { SC_(399.78265380859375), SC_(5.98966983297736662713511729544362351217) }, + { SC_(401.808013916015625), SC_(5.994729505682939003379681261442316095543) }, + { SC_(403.912139892578125), SC_(5.999958975030022983362581727689153017309) }, + { SC_(404.20849609375), SC_(6.000693328854312027033338977366250530793) }, + { SC_(404.98138427734375), SC_(6.002605968553351055079821088079186595986) }, + { SC_(408.7198486328125), SC_(6.011806124002334414126565011018849669266) }, + { SC_(408.731170654296875), SC_(6.011833858711596841091740153684611585383) }, + { SC_(412.666534423828125), SC_(6.021427722714450543272375426891465502276) }, + { SC_(417.267059326171875), SC_(6.032527694873243105931087101820210964016) }, + { SC_(420.18994140625), SC_(6.039516440455429955766164077664900139336) }, + { SC_(421.761260986328125), SC_(6.043253448414102502433018626928644727058) }, + { SC_(422.087677001953125), SC_(6.044028002107108186220134524106733043847) }, + { SC_(423.16510009765625), SC_(6.046580373164618907726121091198392578715) }, + { SC_(424.166778564453125), SC_(6.048947478773228346602304770587362502163) }, + { SC_(430.2073974609375), SC_(6.063104731694863158498203027307993195815) }, + { SC_(431.413818359375), SC_(6.065908337098829708316996099109173916052) }, + { SC_(435.245697021484375), SC_(6.074761476046398186404025268023433471772) }, + { SC_(435.698699951171875), SC_(6.075802928287907510845374398686273404793) }, + { SC_(435.85858154296875), SC_(6.07617023673887939600287017602598678356) }, + { SC_(436.1175537109375), SC_(6.076764907594542344403398466659178736447) }, + { SC_(438.66680908203125), SC_(6.08259989755215167271203767330669598323) }, + { SC_(438.744354248046875), SC_(6.082776858174768286116463240157641988703) }, + { SC_(438.8699951171875), SC_(6.083063508320507989449416901329106432625) }, + { SC_(441.223480224609375), SC_(6.088417864327000147587478272648801388231) }, + { SC_(442.67828369140625), SC_(6.091713370624069002395664415060658196535) }, + { SC_(445.586212158203125), SC_(6.09826820891842885583333776024666913377) }, + { SC_(446.78375244140625), SC_(6.100955175158840019640884425000576615711) }, + { SC_(447.584381103515625), SC_(6.102747557295619121106102670653678229036) }, + { SC_(449.55609130859375), SC_(6.107148011530301966053822903337711218286) }, + { SC_(450.541595458984375), SC_(6.10934021856897802099580290683898433424) }, + { SC_(450.9237060546875), SC_(6.110188914150944431871753996420181358557) }, + { SC_(456.032806396484375), SC_(6.121467937724061922128554049058015478328) }, + { SC_(457.989166259765625), SC_(6.125753403208273372726190971914060421286) }, + { SC_(458.49688720703125), SC_(6.126862586238352284366184295285682829153) }, + { SC_(458.848846435546875), SC_(6.127630765961755033027033241022489856889) }, + { SC_(462.47418212890625), SC_(6.135509201915263462051894175844019358072) }, + { SC_(469.390625), SC_(6.150369721809370729825444412044817108946) }, + { SC_(470.92333984375), SC_(6.153633200651127889846979557070586407071) }, + { SC_(471.956787109375), SC_(6.155827635510642589118081435451236816658) }, + { SC_(473.01507568359375), SC_(6.158069839252994031314486039965613313878) }, + { SC_(473.288848876953125), SC_(6.15864906693157877173538018092295228381) }, + { SC_(474.758697509765625), SC_(6.161753133400770857335496852979821817608) }, + { SC_(476.638092041015625), SC_(6.165708105278002487733159955708518039802) }, + { SC_(485.375640869140625), SC_(6.183892624705687372974280692449022738796) }, + { SC_(486.7916259765625), SC_(6.18680867358564366225953846900945967356) }, + { SC_(487.56890869140625), SC_(6.188405784992797235754687039867456958423) }, + { SC_(488.608978271484375), SC_(6.190538871937823182207008881895013566252) }, + { SC_(488.617706298828125), SC_(6.190556753080449523844892653864095258225) }, + { SC_(489.25262451171875), SC_(6.191856655555710657680907555429146440994) }, + { SC_(489.764404296875), SC_(6.192903221491570223625167765358468005398) }, + { SC_(490.301483154296875), SC_(6.194000346274314039340661485248412605601) }, + { SC_(490.58905029296875), SC_(6.194587283360205433159890246616353800577) }, + { SC_(490.864105224609375), SC_(6.195148360331463990452548262484128395487) }, + { SC_(492.441986083984375), SC_(6.198360967247667289203047166777662852555) }, + { SC_(493.32684326171875), SC_(6.200158053193846223394413941905224342212) }, + { SC_(498.36407470703125), SC_(6.210327265513424866339085669932575635988) }, + { SC_(498.544189453125), SC_(6.21068897490776727949765832965196264653) }, + { SC_(503.190032958984375), SC_(6.219973908373394206679161074530674466899) }, + { SC_(503.6627197265625), SC_(6.220913780825655911052191262801777393669) }, + { SC_(504.77099609375), SC_(6.223113978085038338735916934803931854624) }, + { SC_(505.49853515625), SC_(6.224555691973970405577369173344297221254) }, + { SC_(505.957061767578125), SC_(6.225463255838234486684327725118604039811) }, + { SC_(507.8582763671875), SC_(6.229217575393520147953064296764206590646) }, + { SC_(508.5086669921875), SC_(6.230498669894225271351080293124801058189) }, + { SC_(510.771575927734375), SC_(6.234943245832893913399836097415067319716) }, + { SC_(513.24951171875), SC_(6.239787603153936308761478021300341867958) }, + { SC_(527.3714599609375), SC_(6.26695675989766014952180473516016639132) }, + { SC_(528.53314208984375), SC_(6.269159200285662272626421793314655554156) }, + { SC_(529.84197998046875), SC_(6.271634836682912113235700829440296732259) }, + { SC_(530.79754638671875), SC_(6.273438405458562785658780556867743148032) }, + { SC_(532.8255615234375), SC_(6.277255406962121270372044267186720492822) }, + { SC_(533.93310546875), SC_(6.27933382124723736043226562438644919799) }, + { SC_(538.3424072265625), SC_(6.28756573791909313051189664771803422567) }, + { SC_(540.13800048828125), SC_(6.290898688375581006405495741840322979188) }, + { SC_(543.80548095703125), SC_(6.297671882932801362742512328060055029049) }, + { SC_(544.05609130859375), SC_(6.298133046141955500936690446904311697961) }, + { SC_(546.5919189453125), SC_(6.302787451011865112672341728223109009577) }, + { SC_(546.8814697265625), SC_(6.303317533868186538707062673105932672072) }, + { SC_(547.00885009765625), SC_(6.303550641132128690074401949014653406049) }, + { SC_(547.21551513671875), SC_(6.303928724516392966155084897475347327756) }, + { SC_(547.2205810546875), SC_(6.303937990566003104329651374824144391912) }, + { SC_(549.7236328125), SC_(6.308505842439691623988056771871693216424) }, + { SC_(549.86016845703125), SC_(6.308754409016708944632117615324933227263) }, + { SC_(550.1563720703125), SC_(6.309293442830642860089093034772365129842) }, + { SC_(552.88116455078125), SC_(6.314238460027511407047381188737584243717) }, + { SC_(558.268798828125), SC_(6.323944671432167039241381145581814873829) }, + { SC_(561.5574951171875), SC_(6.329823519476373092212405522576108829899) }, + { SC_(567.82159423828125), SC_(6.340926458002524075449031889956629217335) }, + { SC_(568.8236083984375), SC_(6.342691118582913267534099618695745472789) }, + { SC_(573.754638671875), SC_(6.351330140380622771107787271382996222648) }, + { SC_(575.2086181640625), SC_(6.353863287488337643657368466542593119861) }, + { SC_(578.52508544921875), SC_(6.359617392870022484646570771392481186969) }, + { SC_(579.70458984375), SC_(6.361655889694939183701010004548872090829) }, + { SC_(580.95672607421875), SC_(6.363815376071726439662811719409699982055) }, + { SC_(584.38226318359375), SC_(6.369699480584486422871125906468857080696) }, + { SC_(585.26409912109375), SC_(6.371208638389763868709447504290801733396) }, + { SC_(585.2677001953125), SC_(6.37121479653500333470827397736457127071) }, + { SC_(587.04473876953125), SC_(6.374249067232996439686972718899923431032) }, + { SC_(592.8238525390625), SC_(6.384053652275533641719864391983551192749) }, + { SC_(594.50360107421875), SC_(6.386885499848034458902157664992427248316) }, + { SC_(594.89605712890625), SC_(6.387545977951704153497341261837707303324) }, + { SC_(601.98193359375), SC_(6.399396614546605823173454188612392794784) }, + { SC_(602.84307861328125), SC_(6.400827295849304940475815798766156086542) }, + { SC_(604.23150634765625), SC_(6.403129687503785434500679408789199298648) }, + { SC_(616.044677734375), SC_(6.422507640667089449069553404969421958134) }, + { SC_(620.36004638671875), SC_(6.429493829366529691782302916589330838881) }, + { SC_(622.05511474609375), SC_(6.432224695074060781574961177412352412717) }, + { SC_(622.47509765625), SC_(6.432900163721955173795252325722094013871) }, + { SC_(623.435546875), SC_(6.434443164750907605937303777412492801794) }, + { SC_(625.61859130859375), SC_(6.437941484456789575138548752117584086992) }, + { SC_(627.38433837890625), SC_(6.440762161347675760635876431243167810861) }, + { SC_(632.3592529296875), SC_(6.448666772647988605535323096388911661556) }, + { SC_(633.06365966796875), SC_(6.449780967364441602752385978976936185726) }, + { SC_(639.76336669921875), SC_(6.460316625883878714928422495164000965323) }, + { SC_(643.9609375), SC_(6.466861422641841163115547439790852566178) }, + { SC_(644.318115234375), SC_(6.467416356975518058351605023347089876719) }, + { SC_(644.550537109375), SC_(6.467777297247478327338444774262678613444) }, + { SC_(646.31298828125), SC_(6.470510069949258359745036258720962577061) }, + { SC_(647.7459716796875), SC_(6.472726494325499127620694571869476943941) }, + { SC_(649.115478515625), SC_(6.474840157130650254368072192966429504885) }, + { SC_(651.9686279296875), SC_(6.479229339980760566248271955481499493423) }, + { SC_(654.0791015625), SC_(6.482463666223159470601395935144865056701) }, + { SC_(655.0980224609375), SC_(6.484021438312744798558143642548832482531) }, + { SC_(655.4779052734375), SC_(6.484601599785286175366253598788561328841) }, + { SC_(655.74066162109375), SC_(6.485002687522549887824574950594472055316) }, + { SC_(655.7799072265625), SC_(6.485062580665467941142729902484080793074) }, + { SC_(660.11944580078125), SC_(6.491663167216662693403076432415948835692) }, + { SC_(663.60552978515625), SC_(6.49693424239261660697884227280722447065) }, + { SC_(669.28509521484375), SC_(6.505462868816168906848474745781783475634) }, + { SC_(678.735107421875), SC_(6.519494084518996469650508956074345352049) }, + { SC_(679.51971435546875), SC_(6.520650251903972495307924790017120133482) }, + { SC_(679.70269775390625), SC_(6.52091969726851616942271814508002088275) }, + { SC_(679.81976318359375), SC_(6.521092039518570890159009605013714327936) }, + { SC_(680.28704833984375), SC_(6.521779675083894126919680539525971204723) }, + { SC_(680.4066162109375), SC_(6.521955549772378968850975278275518538879) }, + { SC_(681.35955810546875), SC_(6.523356145843551429282561007449588269899) }, + { SC_(686.77545166015625), SC_(6.531279168634480064303406688971587947728) }, + { SC_(689.21453857421875), SC_(6.53482696034163300895210941857399062802) }, + { SC_(694.82861328125), SC_(6.542945441035880360749863408250769056176) }, + { SC_(695.23284912109375), SC_(6.5435274682425404780673540153675890027) }, + { SC_(699.07672119140625), SC_(6.549045095113352556887019319492674591721) }, + { SC_(705.77423095703125), SC_(6.558586791026949965247721665028964915463) }, + { SC_(706.04608154296875), SC_(6.558972170428375943894892162331319111229) }, + { SC_(707.321533203125), SC_(6.560778289147646212053005392960932901218) }, + { SC_(709.36480712890625), SC_(6.563664910211286354361274659607364432189) }, + { SC_(710.703857421875), SC_(6.565552134560890098719864436298697541221) }, + { SC_(711.2158203125), SC_(6.566272742257831657216451568845017111234) }, + { SC_(716.1007080078125), SC_(6.573122422391305665202378372481901866655) }, + { SC_(718.469970703125), SC_(6.576427825470989904051723420894245752996) }, + { SC_(720.493408203125), SC_(6.579242137071712732628854802208909850768) }, + { SC_(725.8389892578125), SC_(6.586639196163926236455690072217971768091) }, + { SC_(726.6544189453125), SC_(6.587762769498345108593561389467357233635) }, + { SC_(726.9547119140625), SC_(6.588176222669208952468481654231519862001) }, + { SC_(730.33087158203125), SC_(6.592812902760243297414563417571806817033) }, + { SC_(731.722412109375), SC_(6.594717748731769186160610648305398172825) }, + { SC_(732.7987060546875), SC_(6.596188576803175388558793950872542497826) }, + { SC_(740.64727783203125), SC_(6.606849266552187262338997827259823953612) }, + { SC_(743.1324462890625), SC_(6.610201309160827227217063092842877635818) }, + { SC_(744.69281005859375), SC_(6.612300229797847496307719944337046025631) }, + { SC_(748.151611328125), SC_(6.616937183758078139241196510560664648452) }, + { SC_(749.94097900390625), SC_(6.619327641466965773804177461936924399101) }, + { SC_(751.26708984375), SC_(6.621095544221748738916949620438022847397) }, + { SC_(753.7291259765625), SC_(6.624369539120572790247890002187576586953) }, + { SC_(754.6866455078125), SC_(6.625639951090094344607777868204027432855) }, + { SC_(755.78985595703125), SC_(6.62710166378741985559108127492656943644) }, + { SC_(757.20025634765625), SC_(6.628967285239014652929108380360053789214) }, + { SC_(757.50360107421875), SC_(6.629368083169212155191930540373997326396) }, + { SC_(757.7401123046875), SC_(6.629680465113967501897080616727473070964) }, + { SC_(761.731201171875), SC_(6.634937195939679832108830040398849824872) }, + { SC_(762.42132568359375), SC_(6.635843374996103932953744864855947073907) }, + { SC_(762.931396484375), SC_(6.636512604288287695667831495157907988255) }, + { SC_(763.75), SC_(6.637585703139515450729086875916629124126) }, + { SC_(765.516845703125), SC_(6.639897925305579070472267454056802592828) }, + { SC_(773.9171142578125), SC_(6.650818577182925150685349765007717566496) }, + { SC_(774.91046142578125), SC_(6.652102114421492829419722285286772404085) }, + { SC_(775.712646484375), SC_(6.653137443611928596722616479632884363769) }, + { SC_(778.897705078125), SC_(6.6572376513800787667154306478413125791) }, + { SC_(779.167236328125), SC_(6.657583855585783056176609207961461550674) }, + { SC_(779.68939208984375), SC_(6.658254207016113619993993137077534358157) }, + { SC_(780.2274169921875), SC_(6.658944461745262492487573187543498710589) }, + { SC_(780.25201416015625), SC_(6.658976007098292587450609334547284886854) }, + { SC_(781.9091796875), SC_(6.661098998535236012443285119544067308945) }, + { SC_(792.207275390625), SC_(6.674191788190495720635040843079615121198) }, + { SC_(793.59759521484375), SC_(6.675946351193374567715402021389527667759) }, + { SC_(793.9749755859375), SC_(6.676422068894767804835061682908706231587) }, + { SC_(794.2845458984375), SC_(6.676812137779252911754812198193513578098) }, + { SC_(794.8314208984375), SC_(6.677500846866967477229981288001168637074) }, + { SC_(795.199951171875), SC_(6.677964689479356370863371111643685192501) }, + { SC_(797.2799072265625), SC_(6.680578554749739014414223828144905732992) }, + { SC_(797.3641357421875), SC_(6.680684260292981427494930116387169656838) }, + { SC_(797.92864990234375), SC_(6.681392428974166964964677408576394246851) }, + { SC_(798.1058349609375), SC_(6.68161459976456580623320912581051620254) }, + { SC_(799.6531982421875), SC_(6.683552730103765717785258709879113031128) }, + { SC_(800.0684814453125), SC_(6.684072249121468373962678765344998551064) }, + { SC_(800.28045654296875), SC_(6.684337325823917944748077105114139749528) }, + { SC_(801.01458740234375), SC_(6.685254820154850118553681554697581754228) }, + { SC_(802.1114501953125), SC_(6.686624079247030582774578430359074551284) }, + { SC_(807.531005859375), SC_(6.693362152645817588123872344533895119059) }, + { SC_(808.17547607421875), SC_(6.694160403193372004065984871882451973199) }, + { SC_(809.13720703125), SC_(6.695350434005938715450618220546308991728) }, + { SC_(809.7344970703125), SC_(6.696088799092145379287817855954413316766) }, + { SC_(811.58050537109375), SC_(6.698367379321691365123987787716196541633) }, + { SC_(811.87396240234375), SC_(6.69872912383054362547878895705642827061) }, + { SC_(814.2847900390625), SC_(6.701696008262299263121462513848022021511) }, + { SC_(814.72369384765625), SC_(6.702235199265751419311368399785889082955) }, + { SC_(815.76910400390625), SC_(6.70351831039065858731291819842905206617) }, + { SC_(817.30322265625), SC_(6.705398274761274025517280475385018089932) }, + { SC_(817.62774658203125), SC_(6.705795505605953960123274832847788002709) }, + { SC_(820.84075927734375), SC_(6.709719875947035021518634958560843902315) }, + { SC_(821.19403076171875), SC_(6.710150423121597468638525790922918705368) }, + { SC_(821.2459716796875), SC_(6.710213710127498226829732029114238959828) }, + { SC_(821.90325927734375), SC_(6.711014231224021145756877729370797694754) }, + { SC_(822.60498046875), SC_(6.711868162017285030823308685434146199673) }, + { SC_(823.45538330078125), SC_(6.712902048459101920134138581529056322254) }, + { SC_(823.45782470703125), SC_(6.712905015086914031224699618961034238211) }, + { SC_(825.8170166015625), SC_(6.715767636243291150268286133191516840221) }, + { SC_(830.82861328125), SC_(6.721821602486133073771415419589804218135) }, + { SC_(831.21429443359375), SC_(6.722285986772520722985120580144878454781) }, + { SC_(835.008544921875), SC_(6.726843042451428339229067173099443198509) }, + { SC_(840.71728515625), SC_(6.73366059021322264537674210235946387634) }, + { SC_(844.30877685546875), SC_(6.737925959738321890628442129723129258846) }, + { SC_(848.4677734375), SC_(6.742842689994820594916976128991288216001) }, + { SC_(849.12933349609375), SC_(6.743622556956527511542416448168619758566) }, + { SC_(853.0311279296875), SC_(6.748209779519757322824915399863143662548) }, + { SC_(854.45098876953125), SC_(6.749873859079778299591453176485066806485) }, + { SC_(855.8751220703125), SC_(6.751540168929954768274473011138988372597) }, + { SC_(862.67816162109375), SC_(6.759461989375137122955523168205353583437) }, + { SC_(868.6947021484375), SC_(6.766416056015530146135252193038369240874) }, + { SC_(869.29217529296875), SC_(6.767103998002709424523574394478208979411) }, + { SC_(870.186767578125), SC_(6.768133164641880669262131602717669262048) }, + { SC_(872.4288330078125), SC_(6.770707861861071404604235546152482005058) }, + { SC_(875.94281005859375), SC_(6.774729881353175605276607003284786011147) }, + { SC_(876.7574462890625), SC_(6.775659990483147584810245626024403172256) }, + { SC_(877.3638916015625), SC_(6.776351836800695164519969516994906905958) }, + { SC_(878.4306640625), SC_(6.777567674259764690685426386600703554342) }, + { SC_(885.99810791015625), SC_(6.786150373612182701581356639019071248638) }, + { SC_(887.72613525390625), SC_(6.788099946665576471808465592376033272437) }, + { SC_(890.90325927734375), SC_(6.791674512973996076620205962146827011757) }, + { SC_(900.0538330078125), SC_(6.80189895079299198904108771904549258351) }, + { SC_(900.1832275390625), SC_(6.802042783444049392389068654739673857143) }, + { SC_(902.71612548828125), SC_(6.804854149520866258225931342229077189181) }, + { SC_(904.88092041015625), SC_(6.807250694718158106286277547784604092869) }, + { SC_(905.79193115234375), SC_(6.808257518383144815884886145813559834871) }, + { SC_(907.36474609375), SC_(6.809993367381673942808480783672644328598) }, + { SC_(908.43359375), SC_(6.811171291835528522342757827992129791562) }, + { SC_(910.56494140625), SC_(6.81351601145607889196433654356525525846) }, + { SC_(910.6475830078125), SC_(6.813606815790404023323189518843380307986) }, + { SC_(912.5775146484375), SC_(6.815725030681610574873878555395906108156) }, + { SC_(913.33734130859375), SC_(6.816557756247443703552647371667225468139) }, + { SC_(913.3758544921875), SC_(6.816599945984404149476890515171707321892) }, + { SC_(915.73553466796875), SC_(6.819181496829614596845401444040303420405) }, + { SC_(917.117919921875), SC_(6.820690771903488486844573292669501047527) }, + { SC_(917.19366455078125), SC_(6.82077340337986035180672708919674786967) }, + { SC_(920.874755859375), SC_(6.824780979614736502636113976154470262398) }, + { SC_(923.379638671875), SC_(6.827498872615433477170026117448771541295) }, + { SC_(927.49285888671875), SC_(6.8319459105580415512096734861697582082) }, + { SC_(928.85418701171875), SC_(6.83341337535443392277100858245459000213) }, + { SC_(929.263671875), SC_(6.833854364953862271803203220770951435661) }, + { SC_(929.385986328125), SC_(6.833986052262011870912515832740972478803) }, + { SC_(933.99322509765625), SC_(6.838933753242727661252945811698284684698) }, + { SC_(934.01068115234375), SC_(6.838952452778342207434589177668657889371) }, + { SC_(939.0015869140625), SC_(6.844284594236099395567215793156428746645) }, + { SC_(940.07403564453125), SC_(6.845426666187627323729754250792575000864) }, + { SC_(942.05059814453125), SC_(6.847528135708265169237587238138487198853) }, + { SC_(944.7872314453125), SC_(6.850430437191786907351651758111614319783) }, + { SC_(948.925048828125), SC_(6.854802811834284555381489323758582235861) }, + { SC_(950.2220458984375), SC_(6.856169404714020378408540666432044534508) }, + { SC_(954.943359375), SC_(6.861128346520892642201796166599822038471) }, + { SC_(955.017578125), SC_(6.861206104783820446126170121986330983269) }, + { SC_(956.13458251953125), SC_(6.862375649747642715205235987065776445518) }, + { SC_(957.1669921875), SC_(6.863455405877975518619709756325785766734) }, + { SC_(957.5068359375), SC_(6.863810580012297609207700982417845904956) }, + { SC_(959.2913818359375), SC_(6.865673559355261880433729035303716037083) }, + { SC_(959.492431640625), SC_(6.865883228230126473126797544809231414745) }, + { SC_(959.74395751953125), SC_(6.866145475218019847811591867037562659094) }, + { SC_(961.8980712890625), SC_(6.868388594389408661650623078145486428762) }, + { SC_(964.88848876953125), SC_(6.871494254878780851989128297020995382715) }, + { SC_(964.96636962890625), SC_(6.871575008339416373031500751728687321642) }, + { SC_(967.6949462890625), SC_(6.874400118733980051857714900416741852838) }, + { SC_(968.640380859375), SC_(6.87537714276502884037846310503316214533) }, + { SC_(968.8677978515625), SC_(6.875612016002868563135875018985921894413) }, + { SC_(970.5927734375), SC_(6.877391753918391265533592997745089246348) }, + { SC_(977.00201416015625), SC_(6.883976856642686182085022703036491098977) }, + { SC_(979.74835205078125), SC_(6.886785333127100045440434410093146016624) }, + { SC_(979.9256591796875), SC_(6.886966381237166628662813047575594521666) }, + { SC_(981.10968017578125), SC_(6.888174544185669495233192817179284924608) }, + { SC_(981.72314453125), SC_(6.888799943368115034020659880636949694688) }, + { SC_(982.36053466796875), SC_(6.8894493197658087146525978621453836978) }, + { SC_(987.4595947265625), SC_(6.894629143910089536380903205901047293626) }, + { SC_(988.37939453125), SC_(6.895560662679555267312975090816879245672) }, + { SC_(988.5216064453125), SC_(6.895704609063605825635576817887832481836) }, + { SC_(990.1099853515625), SC_(6.897310953864133148550105914216515716675) }, + { SC_(992.88128662109375), SC_(6.900107437258989936275310085429403733899) }, + { SC_(993.53472900390625), SC_(6.900765679507473199060169339559463847836) }, + { SC_(994.0684814453125), SC_(6.901303031311155785795352189437299613696) }, + { SC_(996.13470458984375), SC_(6.903380469883631241011306751657568074638) }, + { SC_(996.4613037109375), SC_(6.903708447139272864766001846716835845992) } + } }; +#undef SC_ + diff --git a/test/digamma_neg_data.ipp b/test/digamma_neg_data.ipp new file mode 100644 index 000000000..d77f8215e --- /dev/null +++ b/test/digamma_neg_data.ipp @@ -0,0 +1,211 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 200> digamma_neg_data = { { + { SC_(-99.7181549072265625), SC_(2.03892909952497242038694056382195623059) }, + { SC_(-99.5216522216796875), SC_(4.3913617771941913117971009646096341326) }, + { SC_(-98.80979156494140625), SC_(-0.01795976054399933340057713377738267488686) }, + { SC_(-98.646087646484375), SC_(3.044214979883807667874683391024711390163) }, + { SC_(-98.2226104736328125), SC_(8.327061837969621994688065941368639650164) }, + { SC_(-96.81671905517578125), SC_(-0.2613967795671165924570265553692310141858) }, + { SC_(-96.555389404296875), SC_(4.023029392905834803729410679283679163172) }, + { SC_(-96.4288330078125), SC_(5.288313818176304987255615817663265383342) }, + { SC_(-96.35587310791015625), SC_(6.101607804168127653000043332720050192048) }, + { SC_(-95.3828582763671875), SC_(5.774458772879798661504785984613127024683) }, + { SC_(-94.87835693359375), SC_(-3.258775525008949657912384482006797161857) }, + { SC_(-94.60498809814453125), SC_(3.479509682356698077739870471765368709254) }, + { SC_(-93.2404632568359375), SC_(7.876249181059212250961342610258680843403) }, + { SC_(-92.41457366943359375), SC_(5.395652110469876120841383508575006667739) }, + { SC_(-90.2868194580078125), SC_(6.996060449908181672759658412431764721268) }, + { SC_(-90.2459564208984375), SC_(7.730510069525265980585453066651639424664) }, + { SC_(-89.013824462890625), SC_(76.7844527353150160809893161375899712728) }, + { SC_(-88.75354766845703125), SC_(1.279073328662160048752885420029490083884) }, + { SC_(-88.1002349853515625), SC_(14.12873575145206447240140060245136812233) }, + { SC_(-87.481719970703125), SC_(4.657749706875254767656016829355880725463) }, + { SC_(-87.41033935546875), SC_(5.385408972387998240975025273868320766616) }, + { SC_(-87.3013153076171875), SC_(6.737807742019520253440825060046509923858) }, + { SC_(-87.00937652587890625), SC_(111.0902104512757743601088229496385482381) }, + { SC_(-86.452301025390625), SC_(4.939690918031593302255270591348782158549) }, + { SC_(-86.1375579833984375), SC_(11.27311653802311845949475246171079728424) }, + { SC_(-85.81136322021484375), SC_(-0.2076024359899236820459284405564934682571) }, + { SC_(-85.08860015869140625), SC_(15.4432197184156901762673734012738165669) }, + { SC_(-85.0706024169921875), SC_(18.38013049788840734996810404641615698096) }, + { SC_(-84.55615997314453125), SC_(3.88321705564237834505242432670033691134) }, + { SC_(-84.2386932373046875), SC_(7.812678135978754145263274987740845778654) }, + { SC_(-84.194244384765625), SC_(8.931719867523162463837746400725488234199) }, + { SC_(-83.73882293701171875), SC_(1.505295935399338449868426369185929751229) }, + { SC_(-82.8813323974609375), SC_(-3.609402776980612588036128298328365683225) }, + { SC_(-82.6134796142578125), SC_(3.250221400281531800616333769504919375611) }, + { SC_(-81.31273651123046875), SC_(6.500209496762236219781012282892172792378) }, + { SC_(-81.16180419921875), SC_(10.04118609757139096209050165941519368701) }, + { SC_(-80.34047698974609375), SC_(6.113463877628090613614429157059502101004) }, + { SC_(-79.1931915283203125), SC_(8.902649813785723219406837941195708301933) }, + { SC_(-78.979095458984375), SC_(-43.39220275151493342151673584769713674459) }, + { SC_(-78.80756378173828125), SC_(-0.1741139524199893908631289936754328553595) }, + { SC_(-78.276214599609375), SC_(7.029126641974004636072711755974329319293) }, + { SC_(-77.8965911865234375), SC_(-4.965949067939776233732103672063117487233) }, + { SC_(-77.618804931640625), SC_(3.128016725588726483845498994960937165101) }, + { SC_(-76.9843902587890625), SC_(-59.66111542957708160367279993835116598861) }, + { SC_(-75.6475067138671875), SC_(2.762831843674791808646068344156198358292) }, + { SC_(-74.8916168212890625), SC_(-4.544467476010996269925717795920967036228) }, + { SC_(-74.57178497314453125), SC_(3.59770242115359475843120457380803078855) }, + { SC_(-74.49048614501953125), SC_(4.411294618813885078478516140128263239646) }, + { SC_(-74.249176025390625), SC_(7.472045154786435852081961669032387751756) }, + { SC_(-72.397491455078125), SC_(5.337270392731504876256252154330660996853) }, + { SC_(-72.30770111083984375), SC_(6.45618615562028783175344592523791857763) }, + { SC_(-72.150177001953125), SC_(10.44291983579332484719137950538141198138) }, + { SC_(-71.41609954833984375), SC_(5.123297394484169650507849264219211277233) }, + { SC_(-70.29705810546875), SC_(6.586989653308987758464004111780026164342) }, + { SC_(-70.0168304443359375), SC_(63.61661733083149880967450730403400964169) }, + { SC_(-69.808685302734375), SC_(-0.3289873714853887848889508326638941457588) }, + { SC_(-69.18329620361328125), SC_(9.082833286105283040745693219253094753599) }, + { SC_(-68.3449554443359375), SC_(5.895816498784197711310887233679346985484) }, + { SC_(-68.2900543212890625), SC_(6.667078439728477642775937857513723712022) }, + { SC_(-66.7551727294921875), SC_(0.9631089274457797371832913555201378277263) }, + { SC_(-66.2877349853515625), SC_(6.674402390903648107264524741943941318692) }, + { SC_(-65.96142578125), SC_(-21.60039097244717646250068532377671067773) }, + { SC_(-65.00162506103515625), SC_(619.5382407651047414044960295217348989637) }, + { SC_(-64.83405303955078125), SC_(-1.290399564904368875515657543138626740639) }, + { SC_(-64.72376251220703125), SC_(1.515712957371258935902920146011383158566) }, + { SC_(-64.36548614501953125), SC_(5.585036804770642096748234463405359373268) }, + { SC_(-63.870601654052734375), SC_(-3.132938413135016068514633000959251655011) }, + { SC_(-61.955417633056640625), SC_(-18.14906679867205714676685355624200206247) }, + { SC_(-61.84415435791015625), SC_(-1.762828050189299963414925510084105410157) }, + { SC_(-61.27040863037109375), SC_(6.885962246437210164247050669769241762116) }, + { SC_(-61.1430206298828125), SC_(10.63639337906714605332887925207272339472) }, + { SC_(-60.7772979736328125), SC_(0.3828568174285943765552196371752184023788) }, + { SC_(-60.767955780029296875), SC_(0.597630996899231770205669545427601282449) }, + { SC_(-60.50917816162109375), SC_(4.020425571512186535251807369058720729888) }, + { SC_(-60.126148223876953125), SC_(11.61249771821316227897371950731036451444) }, + { SC_(-59.5791473388671875), SC_(3.298014524278177804824357796228486139154) }, + { SC_(-59.12688446044921875), SC_(11.54738093463764209365528407465938463008) }, + { SC_(-58.733348846435546875), SC_(1.252516603233681404470535780337376850768) }, + { SC_(-57.823871612548828125), SC_(-1.020030805813282973065541328061417103161) }, + { SC_(-57.791233062744140625), SC_(-0.01721196139850082730515140522511875898686) }, + { SC_(-57.6834869384765625), SC_(2.021283718214246528807976825874750730944) }, + { SC_(-56.1255645751953125), SC_(11.58306242149007962260737588966574096145) }, + { SC_(-55.441379547119140625), SC_(4.6095090326877333856682583039277727222) }, + { SC_(-54.396717071533203125), SC_(5.062176320861478792112156635998489324447) }, + { SC_(-54.201084136962890625), SC_(8.295102791777500360299701370233860660785) }, + { SC_(-53.06093597412109375), SC_(20.19053903029668873838826742013474757079) }, + { SC_(-52.671115875244140625), SC_(2.10070123867348232297487204513445237558) }, + { SC_(-52.52413177490234375), SC_(3.73213352669881119442059765740051858078) }, + { SC_(-51.462436676025390625), SC_(4.323002262954298089562762598650242024201) }, + { SC_(-51.243106842041015625), SC_(7.226998934762993806818100988804419542686) }, + { SC_(-51.0235595703125), SC_(46.31011451882384360024092555028601375848) }, + { SC_(-50.94109344482421875), SC_(-12.8413475810657768775226051735008739843) }, + { SC_(-50.163593292236328125), SC_(9.490021355163248564818621481640556958139) }, + { SC_(-49.63372802734375), SC_(2.511313156813305996562305257857390789172) }, + { SC_(-49.404293060302734375), SC_(4.884246649262366888920411419024147958277) }, + { SC_(-47.262851715087890625), SC_(6.763893885944739117755918311467424143999) }, + { SC_(-46.920246124267578125), SC_(-8.416023355487745311972990967262253971971) }, + { SC_(-45.31185150146484375), SC_(5.932978383248106730387626359282358526882) }, + { SC_(-45.278446197509765625), SC_(6.448720313065481170040935613035156187478) }, + { SC_(-45.277942657470703125), SC_(6.457159638091017467737698925977740795224) }, + { SC_(-45.027637481689453125), SC_(39.91011698129930359222267887372752760268) }, + { SC_(-43.8442535400390625), SC_(-2.107933118887280485309161602735949216416) }, + { SC_(-43.217838287353515625), SC_(7.628256500265451720152832482834432955622) }, + { SC_(-43.11763763427734375), SC_(11.88558178274471415613706962118145261485) }, + { SC_(-42.62453460693359375), SC_(2.468202270232387819257535057032048703186) }, + { SC_(-41.904331207275390625), SC_(-6.388806142931646581376930809159704270731) }, + { SC_(-41.473590850830078125), SC_(3.998311840817845119612809226760453214553) }, + { SC_(-41.47322845458984375), SC_(4.001904991009103072678533254287758877523) }, + { SC_(-40.71761322021484375), SC_(1.159373041348507101344016731863232548419) }, + { SC_(-40.549640655517578125), SC_(3.220862320117017004190871786172571326259) }, + { SC_(-38.39553070068359375), SC_(4.73066601123284545617603996389975515062) }, + { SC_(-36.764072418212890625), SC_(0.185641778964637473051349775352193113594) }, + { SC_(-36.0236663818359375), SC_(45.77413334958292444754118070178767678465) }, + { SC_(-35.60390472412109375), SC_(2.522888342129267961559021180379112152327) }, + { SC_(-35.3686981201171875), SC_(4.954668236416411879662604875880175363163) }, + { SC_(-34.49019622802734375), SC_(3.651891900429621653936520779034983699363) }, + { SC_(-34.452213287353515625), SC_(4.029227315027716909301715786442880409125) }, + { SC_(-34.425933837890625), SC_(4.297752459205291355542460490934969321341) }, + { SC_(-33.6394500732421875), SC_(2.05879207452756962707410762095930722907) }, + { SC_(-32.12648773193359375), SC_(10.97049318285659411778704721045579811462) }, + { SC_(-32.02973175048828125), SC_(37.01840088144976405978561031600232101035) }, + { SC_(-32.018024444580078125), SC_(58.90273484616011864735901401561254400453) }, + { SC_(-31.864048004150390625), SC_(-3.425649819825478548122204473279221831269) }, + { SC_(-30.5171375274658203125), SC_(3.265278944239551980140922031510366995665) }, + { SC_(-30.4767131805419921875), SC_(3.663521748406629288062646856398131484428) }, + { SC_(-30.0923290252685546875), SC_(13.94615623704883065583726298948748620016) }, + { SC_(-29.4225749969482421875), SC_(4.178249593518503446782790798157935603259) }, + { SC_(-29.395389556884765625), SC_(4.46906479672600980848725781028158753644) }, + { SC_(-29.0635166168212890625), SC_(18.92098221867999526957587349227217750794) }, + { SC_(-28.929615020751953125), SC_(-10.59321162183541691346972253310776238772) }, + { SC_(-27.416103363037109375), SC_(4.17700594969969944426868830026842791532) }, + { SC_(-27.304531097412109375), SC_(5.54012214812515808522852628894283103891) }, + { SC_(-26.72013092041015625), SC_(0.7028843790088342764015208907756718567463) }, + { SC_(-25.9352741241455078125), SC_(-11.9614838597048426449728575053473182996) }, + { SC_(-25.6867523193359375), SC_(1.176826484915453835886205411786243733377) }, + { SC_(-24.8732929229736328125), SC_(-4.237136620209855403786484087613189060887) }, + { SC_(-24.6270904541015625), SC_(1.898484134239669451822687252748496404653) }, + { SC_(-24.53133392333984375), SC_(2.909938662308256016840011167255882888239) }, + { SC_(-24.27997589111328125), SC_(5.809456022692943160671997012588234680914) }, + { SC_(-24.225986480712890625), SC_(6.863255301509444395634121067991546441736) }, + { SC_(-23.8268795013427734375), SC_(-2.003570170516321537241642099057200674105) }, + { SC_(-23.6249980926513671875), SC_(1.882051906931976769141489221324624486755) }, + { SC_(-23.4483184814453125), SC_(3.690576780901990543590973501647480396476) }, + { SC_(-22.6082859039306640625), SC_(2.02829972990549794339388303789633983053) }, + { SC_(-22.1102294921875), SC_(11.82489297106174961055859856595077767589) }, + { SC_(-22.0832767486572265625), SC_(14.85021720005861723216276067526099288351) }, + { SC_(-20.779270172119140625), SC_(-0.7220286362185610999510531120120858367544) }, + { SC_(-20.6402416229248046875), SC_(1.570036502538595917265616936047416332984) }, + { SC_(-20.60250091552734375), SC_(2.001360446832507792499854867762750216251) }, + { SC_(-20.480007171630859375), SC_(3.241245764823419396963096620359809656269) }, + { SC_(-20.27201080322265625), SC_(5.768313318300353594949489118483966781535) }, + { SC_(-20.2071361541748046875), SC_(7.156819372589727235791276774661186960423) }, + { SC_(-20.1894168853759765625), SC_(7.670698039778866912498508209079922928436) }, + { SC_(-19.971954345703125), SC_(-32.54467844963252077717911577731405834236) }, + { SC_(-19.2469005584716796875), SC_(6.186480084023335387087272289090747328989) }, + { SC_(-19.1824493408203125), SC_(7.847002126080603757397510906504995585177) }, + { SC_(-19.0265483856201171875), SC_(40.55157678949956103482720787629324186475) }, + { SC_(-18.5715198516845703125), SC_(2.230314699128516174606595799951710607353) }, + { SC_(-18.5276336669921875), SC_(2.672586759609702793340088983364248246452) }, + { SC_(-17.9159221649169921875), SC_(-8.702502484177860216144583065634001249363) }, + { SC_(-17.8754024505615234375), SC_(-4.700545068020732462956282791568579773556) }, + { SC_(-17.8096714019775390625), SC_(-1.704910040367315348529245955199242558161) }, + { SC_(-17.654216766357421875), SC_(1.245525979337004465966586338242325823861) }, + { SC_(-16.9171390533447265625), SC_(-8.936978387990812220163335657856867859665) }, + { SC_(-16.4991436004638671875), SC_(2.841759414051282631909664692084257003501) }, + { SC_(-15.9282741546630859375), SC_(-10.90604642089629536174323573315025319791) }, + { SC_(-15.1532230377197265625), SC_(8.7652341843566231062515337784346464505) }, + { SC_(-15.0870685577392578125), SC_(13.94393218121241823357181745576517766981) }, + { SC_(-12.7571163177490234375), SC_(-0.7005285484888729861556721133426365160483) }, + { SC_(-12.32425594329833984375), SC_(4.486877647992933354241229013873681135288) }, + { SC_(-12.15693378448486328125), SC_(8.38572290746722802141392801697704201607) }, + { SC_(-10.90967655181884765625), SC_(-8.337781110433724243601733849861559188948) }, + { SC_(-9.42080593109130859375), SC_(3.093207549574642835823398326728433769791) }, + { SC_(-9.26352691650390625), SC_(5.164408378967561819557747661923746174341) }, + { SC_(-8.66241455078125), SC_(0.4573363030846697184753722937434504783991) }, + { SC_(-8.42644596099853515625), SC_(2.928692490941547323611393715468003596111) }, + { SC_(-8.28063488006591796875), SC_(4.761502420123261711232867499795716416469) }, + { SC_(-7.91252231597900390625), SC_(-9.011928670506620642435146780806294048492) }, + { SC_(-7.073635101318359375), SC_(15.36275862317279916670563199810883722471) }, + { SC_(-6.600677967071533203125), SC_(0.9328456790163266794082601288835098544981) }, + { SC_(-6.59893131256103515625), SC_(0.9516512759861559819594253210068193102636) }, + { SC_(-5.9925975799560546875), SC_(-133.1949549912806814878528595454864731658) }, + { SC_(-4.9777927398681640625), SC_(-43.25515309581336581959034619574585012987) }, + { SC_(-4.4982433319091796875), SC_(1.628080704179537179987368246302687190569) }, + { SC_(-4.28330326080322265625), SC_(4.11144188155776750659420254650051070116) }, + { SC_(-4.24931621551513671875), SC_(4.714952991490022604296929488005221371491) }, + { SC_(-4.0708599090576171875), SC_(15.40013806764590763994801524236096523633) }, + { SC_(-4.05075550079345703125), SC_(21.05232398567253746583677948874966443745) }, + { SC_(-4.0256023406982421875), SC_(40.48643215403911174179393965158605983731) }, + { SC_(-3.5111486911773681640625), SC_(1.281561880048097406180157051598176902444) }, + { SC_(-3.5033643245697021484375), SC_(1.356501581084328750160720447675663936527) }, + { SC_(-3.2305061817169189453125), SC_(4.871536212360443209892217244039906620205) }, + { SC_(-3.1132221221923828125), SC_(9.744280495465310545518498968361342433867) }, + { SC_(-2.9407203197479248046875), SC_(-15.4345615314581643435197891745342605011) }, + { SC_(-1.8890321254730224609375), SC_(-7.765572445501014244464453609042267110197) }, + { SC_(-1.2540400028228759765625), SC_(3.637637081727820317005755368640064000683) }, + { SC_(-1.1478424072265625), SC_(6.784401313345897445876900487443690652634) }, + { SC_(-0.7118701934814453125), SC_(-2.248647256037530489173954985789306442878) }, + { SC_(-0.593149662017822265625), SC_(-0.8263747473361177168793211424797478169291) }, + { SC_(-0.3538668155670166015625), SC_(1.443172070386911802413212733069332368731) } + } }; +#undef SC_ + + diff --git a/test/digamma_root_data.ipp b/test/digamma_root_data.ipp new file mode 100644 index 000000000..b0a3aa838 --- /dev/null +++ b/test/digamma_root_data.ipp @@ -0,0 +1,211 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 200> digamma_root_data = { { + { SC_(1.39999997615814208984375), SC_(-0.06138456903152256550686860248931989075643) }, + { SC_(1.4005000591278076171875), SC_(-0.06087192929516339380130503872301167293378) }, + { SC_(1.40100002288818359375), SC_(-0.06035965880979232302674791723368356347747) }, + { SC_(1.4014999866485595703125), SC_(-0.05984763511635311349827564040488766194063) }, + { SC_(1.401999950408935546875), SC_(-0.0593358579881174546738279942752396761834) }, + { SC_(1.40250003337860107421875), SC_(-0.05882420526073090100751004662830533539728) }, + { SC_(1.40299999713897705078125), SC_(-0.0583129206425757749570876729240439746001) }, + { SC_(1.40349996089935302734375), SC_(-0.05780188191118900126815738602890619172921) }, + { SC_(1.4040000438690185546875), SC_(-0.05729096707893393080771549505001408983822) }, + { SC_(1.40450000762939453125), SC_(-0.056780419503293858705549580743156540668) }, + { SC_(1.4049999713897705078125), SC_(-0.05627011713868186213939939894956276866569) }, + { SC_(1.40550005435943603515625), SC_(-0.05575993817369138452985739956960740694737) }, + { SC_(1.40600001811981201171875), SC_(-0.05525012561586888099905375034247029300063) }, + { SC_(1.40649998188018798828125), SC_(-0.05474055759601525571890189603476879643263) }, + { SC_(1.40699994564056396484375), SC_(-0.05423123389038862937136671914178719811082) }, + { SC_(1.4075000286102294921875), SC_(-0.05372203292179596750107248206039107172611) }, + { SC_(1.40799999237060546875), SC_(-0.05321319723270065414202667836306539722927) }, + { SC_(1.4084999561309814453125), SC_(-0.05270460518832646256646398238653334023619) }, + { SC_(1.40900003910064697265625), SC_(-0.05219613538658003557049855371629116390416) }, + { SC_(1.40950000286102294921875), SC_(-0.05168803002221822433984269085445887545932) }, + { SC_(1.40999996662139892578125), SC_(-0.05118016763572077571206202324130731620467) }, + { SC_(1.410500049591064453125), SC_(-0.05067242699961275111564488922723020894775) }, + { SC_(1.4110000133514404296875), SC_(-0.05016504996189404179318756205383368841508) }, + { SC_(1.41149997711181640625), SC_(-0.04965791523781849836663795623050040651275) }, + { SC_(1.41200006008148193359375), SC_(-0.04915090177405025431768617393574718923719) }, + { SC_(1.41250002384185791015625), SC_(-0.04864425107277807126795345488864174180773) }, + { SC_(1.41299998760223388671875), SC_(-0.04813784202354994896630230505781776120276) }, + { SC_(1.41349995136260986328125), SC_(-0.04763167440643069181645608937840354367671) }, + { SC_(1.414000034332275390625), SC_(-0.04712562739952290889837033293650476187953) }, + { SC_(1.4144999980926513671875), SC_(-0.04661994204540782942709091596942293402734) }, + { SC_(1.41499996185302734375), SC_(-0.04611449746527775349715574804732130222007) }, + { SC_(1.41550004482269287109375), SC_(-0.04560917301026328003252147788241984436241) }, + { SC_(1.41600000858306884765625), SC_(-0.0451042093793269736581833678634701785191) }, + { SC_(1.41649997234344482421875), SC_(-0.04459948586684279443839061743784846261709) }, + { SC_(1.4170000553131103515625), SC_(-0.04409488199649628730133723954943974407746) }, + { SC_(1.417500019073486328125), SC_(-0.0435906381245648444628637002942433530947) }, + { SC_(1.4179999828338623046875), SC_(-0.04308663371813044418132048918710682813622) }, + { SC_(1.41849994659423828125), SC_(-0.04258286856012920630307449298163993137931) }, + { SC_(1.41900002956390380859375), SC_(-0.0420792224035827733504570446125334946695) }, + { SC_(1.41949999332427978515625), SC_(-0.04157593514930978152490152156879729835277) }, + { SC_(1.41999995708465576171875), SC_(-0.04107288649393147397031813049746661830252) }, + { SC_(1.4205000400543212890625), SC_(-0.04056995636192793782845393152872471220703) }, + { SC_(1.421000003814697265625), SC_(-0.04006738431359655642636465412836862063583) }, + { SC_(1.4214999675750732421875), SC_(-0.03956505021716870619391607561977829898393) }, + { SC_(1.42200005054473876953125), SC_(-0.0390628341681160707895772877982347062534) }, + { SC_(1.42250001430511474609375), SC_(-0.03856097538713614221174291451172868720556) }, + { SC_(1.42299997806549072265625), SC_(-0.03805935391360299407483745199209552218662) }, + { SC_(1.42349994182586669921875), SC_(-0.03755796953327570443031191372677272436563) }, + { SC_(1.4240000247955322265625), SC_(-0.03705670256888721277125707475995514593767) }, + { SC_(1.424499988555908203125), SC_(-0.03655579178977111826937882476062071563405) }, + { SC_(1.4249999523162841796875), SC_(-0.0360551174627633043738925866730974379965) }, + { SC_(1.42550003528594970703125), SC_(-0.03555456008050613945891518063349475611711) }, + { SC_(1.42599999904632568359375), SC_(-0.03505435807486918460538076814912383388358) }, + { SC_(1.42649996280670166015625), SC_(-0.03455439188274749223938775275471736825604) }, + { SC_(1.4270000457763671875), SC_(-0.03405454216623210245980763665400513878778) }, + { SC_(1.4275000095367431640625), SC_(-0.03355504702063797243050550756083487574355) }, + { SC_(1.427999973297119140625), SC_(-0.03305578705245798813618865616700236433431) }, + { SC_(1.42850005626678466796875), SC_(-0.03255664309277291143229018160781330281834) }, + { SC_(1.42900002002716064453125), SC_(-0.03205785290124899051424545775403784997954) }, + { SC_(1.42949998378753662109375), SC_(-0.03155929725351741957783226833498005852699) }, + { SC_(1.42999994754791259765625), SC_(-0.03106097593893646101388889322754816060391) }, + { SC_(1.430500030517578125), SC_(-0.03056277001319123536849588910788667969385) }, + { SC_(1.4309999942779541015625), SC_(-0.03006491678982831278985395858099735606325) }, + { SC_(1.431499958038330078125), SC_(-0.02956729726928046744375226173805018083445) }, + { SC_(1.43200004100799560546875), SC_(-0.029069792675158646894282928074400495447) }, + { SC_(1.43250000476837158203125), SC_(-0.02857263998746077965589217391685781750225) }, + { SC_(1.43299996852874755859375), SC_(-0.02807572037469272194244519088403794652932) }, + { SC_(1.4335000514984130859375), SC_(-0.02757891522793825630459486913227966938778) }, + { SC_(1.4340000152587890625), SC_(-0.02708246119454089526602248424490897334451) }, + { SC_(1.4344999790191650390625), SC_(-0.02658623961062601916105249666629939819311) }, + { SC_(1.434999942779541015625), SC_(-0.02609025026826734736532129982459892559412) }, + { SC_(1.43550002574920654296875), SC_(-0.02559437478113976107312669529902398957573) }, + { SC_(1.43599998950958251953125), SC_(-0.0250988493544413555894730759899566827115) }, + { SC_(1.43649995326995849609375), SC_(-0.02460355554708331611314729590329885967853) }, + { SC_(1.4370000362396240234375), SC_(-0.02410837513916324870453956495027706651788) }, + { SC_(1.4375), SC_(-0.02361354400529789914172989421521805262163) }, + { SC_(1.4379999637603759765625), SC_(-0.02311894387096655710370815673046310749581) }, + { SC_(1.43850004673004150390625), SC_(-0.02262445668224241951726505286548155427726) }, + { SC_(1.43900001049041748046875), SC_(-0.02213031798404363285679840262837603735113) }, + { SC_(1.43949997425079345703125), SC_(-0.02163640966796990067907296550632756430219) }, + { SC_(1.440000057220458984375), SC_(-0.02114261384562461502572001614025897932072) }, + { SC_(1.4405000209808349609375), SC_(-0.02064916573310666785738104392419687958556) }, + { SC_(1.4409999847412109375), SC_(-0.02015594738769022700601666231128218163721) }, + { SC_(1.4414999485015869140625), SC_(-0.0196629586049117094653247721121789058042) }, + { SC_(1.44200003147125244140625), SC_(-0.0191700817163872207492164657910951176529) }, + { SC_(1.44249999523162841796875), SC_(-0.01867755150116066387436310533382643774849) }, + { SC_(1.44299995899200439453125), SC_(-0.01818525023671041840942493794786294366844) }, + { SC_(1.443500041961669921875), SC_(-0.01769306041915025068329883160626130368828) }, + { SC_(1.4440000057220458984375), SC_(-0.01720121650074344257459977191565623298452) }, + { SC_(1.444499969482421875), SC_(-0.01670960092360902193107619746814218063958) }, + { SC_(1.44500005245208740234375), SC_(-0.01621809634791875134279906903350577844016) }, + { SC_(1.44550001621246337890625), SC_(-0.015726936900023407129612092249722223488) }, + { SC_(1.44599997997283935546875), SC_(-0.01523600518624245606690212546401818985812) }, + { SC_(1.44649994373321533203125), SC_(-0.01474530100472522827513829838650753549117) }, + { SC_(1.447000026702880859375), SC_(-0.01425470723370217219431406682491211640879) }, + { SC_(1.4474999904632568359375), SC_(-0.01376445756632729291905843124879046109968) }, + { SC_(1.4479999542236328125), SC_(-0.01327443482716782005100353254837490055862) }, + { SC_(1.44850003719329833984375), SC_(-0.01278452205749292497551903285885539659936) }, + { SC_(1.44900000095367431640625), SC_(-0.01229495262655675620536025426734759387572) }, + { SC_(1.44949996471405029296875), SC_(-0.01180560952210644817133945874679139627505) }, + { SC_(1.4500000476837158203125), SC_(-0.01131637594801586656260394588481713457627) }, + { SC_(1.450500011444091796875), SC_(-0.01082748495049637469227173996198819829549) }, + { SC_(1.4509999752044677734375), SC_(-0.01033881968004044725477451816247304271862) }, + { SC_(1.45150005817413330078125), SC_(-0.009850263502694288097376018889413894603933) }, + { SC_(1.45200002193450927734375), SC_(-0.009362049142480268951706194627385896301701) }, + { SC_(1.45249998569488525390625), SC_(-0.008874059912203315333901183590153038939381) }, + { SC_(1.45299994945526123046875), SC_(-0.008386295613345236665485880245372577446211) }, + { SC_(1.4535000324249267578125), SC_(-0.007898639827508066919974235979462981148542) }, + { SC_(1.453999996185302734375), SC_(-0.007411324850459837999980330364290265721957) }, + { SC_(1.4544999599456787109375), SC_(-0.006924234210747293687116178727328347532758) }, + { SC_(1.45500004291534423828125), SC_(-0.006437251651142443774260894146878774165176) }, + { SC_(1.45550000667572021484375), SC_(-0.005950609147203835378592212115736517701905) }, + { SC_(1.45599997043609619140625), SC_(-0.005464190388787066551639512688711491505847) }, + { SC_(1.45650005340576171875), SC_(-0.00497787927940728167871412685817772062165) }, + { SC_(1.4570000171661376953125), SC_(-0.004491907475256527500473978270689662215921) }, + { SC_(1.457499980926513671875), SC_(-0.004006158827071890461464755144012668001093) }, + { SC_(1.4579999446868896484375), SC_(-0.003520633138850239630378016887483403867021) }, + { SC_(1.45850002765655517578125), SC_(-0.003035214527765513668034604216830692388851) }, + { SC_(1.45899999141693115234375), SC_(-0.002550134225501944697075651923125347621858) }, + { SC_(1.45949995517730712890625), SC_(-0.002065276296639069833107196292495616468625) }, + { SC_(1.46000003814697265625), SC_(-0.001580525018104361453955140711216969645092) }, + { SC_(1.4605000019073486328125), SC_(-0.001096111304170043846745287256190494732511) }, + { SC_(1.460999965667724609375), SC_(-0.0006119193793063274064283424010699749479896) }, + { SC_(1.46150004863739013671875), SC_(-0.0001278336797728010038687456086772293940197) }, + { SC_(1.46200001239776611328125), SC_(0.0003559151967379670943728162750581078035161) }, + { SC_(1.46249997615814208984375), SC_(0.0008394428662870266119150633759096763287959) }, + { SC_(1.4630000591278076171875), SC_(0.001322864733702479649625580945291659569672) }, + { SC_(1.46350002288818359375), SC_(0.001805950517042218036842926190553563525984) }, + { SC_(1.4639999866485595703125), SC_(0.002288815673318872744259324682705288271519) }, + { SC_(1.464499950408935546875), SC_(0.002771460395327381562525270989780009242693) }, + { SC_(1.46500003337860107421875), SC_(0.003253999876667223767472091225924873652768) }, + { SC_(1.46549999713897705078125), SC_(0.003736204255104145549500401970100669234964) }, + { SC_(1.46599996089935302734375), SC_(0.004218188776241473723916466805139222942859) }, + { SC_(1.4665000438690185546875), SC_(0.004700068475739702789490158181882191908657) }, + { SC_(1.46700000762939453125), SC_(0.005181613805192456365413438059635728009745) }, + { SC_(1.4674999713897705078125), SC_(0.005662939852129155621931915752726712941002) }, + { SC_(1.46800005435943603515625), SC_(0.006144161494685809209920008019685283315534) }, + { SC_(1.46850001811981201171875), SC_(0.006625049497465130483020027415596322710511) }, + { SC_(1.46899998188018798828125), SC_(0.007105718790337639298786852855563148822142) }, + { SC_(1.46949994564056396484375), SC_(0.007586169563676627501200448950668213028167) }, + { SC_(1.4700000286102294921875), SC_(0.008066516486231662885434708649134127678999) }, + { SC_(1.47049999237060546875), SC_(0.008546530738674327360836097967927454942833) }, + { SC_(1.4709999561309814453125), SC_(0.00902632704131026480217858186061492831619) }, + { SC_(1.47150003910064697265625), SC_(0.009506019906325596650154195641432409630907) }, + { SC_(1.47200000286102294921875), SC_(0.009985380825502499855688695923101130679945) }, + { SC_(1.47249996662139892578125), SC_(0.01046452436244992624581900727741018711986) }, + { SC_(1.473000049591064453125), SC_(0.01094356487319982808059040901671966801919) }, + { SC_(1.4735000133514404296875), SC_(0.01142227415983642922640932055783984854239) }, + { SC_(1.47399997711181640625), SC_(0.01190076662968176394047411758437134448755) }, + { SC_(1.47450006008148193359375), SC_(0.01237915648302134259978832581154852202161) }, + { SC_(1.47500002384185791015625), SC_(0.01285721583143592736486164760948599640939) }, + { SC_(1.47549998760223388671875), SC_(0.01333505892636885712587736290231507253031) }, + { SC_(1.47599995136260986328125), SC_(0.01381268595510390028319865656189032981603) }, + { SC_(1.476500034332275390625), SC_(0.01429021091090032875378729920511744436802) }, + { SC_(1.4769999980926513671875), SC_(0.01476740631674500824066000704296476101248) }, + { SC_(1.47749996185302734375), SC_(0.01524438621687947040773770812918073015903) }, + { SC_(1.47800004482269287109375), SC_(0.01572126444976191365504766913460853166159) }, + { SC_(1.47850000858306884765625), SC_(0.01619781384600798034797161476617322052959) }, + { SC_(1.47899997234344482421875), SC_(0.01667414829492702066558118850104769852234) }, + { SC_(1.4795000553131103515625), SC_(0.01715038148057877526958196636506777091166) }, + { SC_(1.480000019073486328125), SC_(0.01762628654041217983419823745186174695842) }, + { SC_(1.4804999828338623046875), SC_(0.01810197720920750584264288401814595315433) }, + { SC_(1.48099994659423828125), SC_(0.01857745367191608501032749919254492077255) }, + { SC_(1.48150002956390380859375), SC_(0.01905282940736078826428345835701187921344) }, + { SC_(1.48199999332427978515625), SC_(0.01952787796086124235035667894483836618612) }, + { SC_(1.48249995708465576171875), SC_(0.02000271286178744470899885416201568506841) }, + { SC_(1.4830000400543212890625), SC_(0.02047744743549734724595413353304339596842) }, + { SC_(1.483500003814697265625), SC_(0.02095185553229931162465762694540459626532) }, + { SC_(1.4839999675750732421875), SC_(0.02142605052796892258114323238639681979697) }, + { SC_(1.48450005054473876953125), SC_(0.02190014559479680012423194248738781677386) }, + { SC_(1.48500001430511474609375), SC_(0.02237391488729442162211914583054893402186) }, + { SC_(1.48549997806549072265625), SC_(0.02284747162804102549936129615381098290523) }, + { SC_(1.48600006103515625), SC_(0.02332092883665599429697089795154616828867) }, + { SC_(1.4865000247955322265625), SC_(0.02379406097107123019383531656762472857036) }, + { SC_(1.486999988555908203125), SC_(0.02426698110106619670748667123423481731356) }, + { SC_(1.4874999523162841796875), SC_(0.02473968940861605188874507129358473978676) }, + { SC_(1.48800003528594970703125), SC_(0.02521229871039613408736493282176431879518) }, + { SC_(1.48849999904632568359375), SC_(0.02568458386767842754083514014266512257621) }, + { SC_(1.48899996280670166015625), SC_(0.02615665774712770972822278823384134472911) }, + { SC_(1.4895000457763671875), SC_(0.02662863301366652729705485156514156921969) }, + { SC_(1.4900000095367431640625), SC_(0.02710028483017233972822145485920594582439) }, + { SC_(1.490499973297119140625), SC_(0.02757172591142969944611182410222535997026) }, + { SC_(1.49100005626678466796875), SC_(0.02804306877099953245333159632753441304838) }, + { SC_(1.49150002002716064453125), SC_(0.02851408887259174195648360999928964786226) }, + { SC_(1.49199998378753662109375), SC_(0.02898489877950229580989209771050696266479) }, + { SC_(1.49249994754791259765625), SC_(0.02945549867145914132386877573515702816588) }, + { SC_(1.493000030517578125), SC_(0.02992600086081766434888226036243716094018) }, + { SC_(1.4934999942779541015625), SC_(0.03039618121119222213671842099543294002594) }, + { SC_(1.493999958038330078125), SC_(0.03086615208450468685425685392189632212515) }, + { SC_(1.49450004100799560546875), SC_(0.03133602564265587447963502512063650812183) }, + { SC_(1.49500000476837158203125), SC_(0.0318055780482999943002748605694401059607) }, + { SC_(1.49549996852874755859375), SC_(0.03227492151277847133068637874480248065187) }, + { SC_(1.4960000514984130859375), SC_(0.03274416804792387851799905190703885999517) }, + { SC_(1.4965000152587890625), SC_(0.03321309411466675105852178534017282410089) }, + { SC_(1.4969999790191650390625), SC_(0.0336818117741548556801742840271873983606) }, + { SC_(1.49750006198883056640625), SC_(0.03415043288853741106672780407819814754177) }, + { SC_(1.49800002574920654296875), SC_(0.03461873421626057425769027729390348592731) }, + { SC_(1.49849998950958251953125), SC_(0.03508682766866380229344336380060751609967) }, + { SC_(1.49899995326995849609375), SC_(0.03555471342260717737839815920297809359884) }, + { SC_(1.4995000362396240234375), SC_(0.03602250314126230243963242841830489771559) } + } }; +#undef SC_ + + diff --git a/test/digamma_small_data.ipp b/test/digamma_small_data.ipp new file mode 100644 index 000000000..7377548db --- /dev/null +++ b/test/digamma_small_data.ipp @@ -0,0 +1,44 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 33> digamma_small_data = { { + { SC_(0.1690093176520690576580818742513656616211e-8), SC_(-591683355.0172646248558707395909205014789) }, + { SC_(0.2114990849122477811761200428009033203125e-8), SC_(-472815285.0570071002693788265718597340393) }, + { SC_(0.7099628440698779741069301962852478027344e-8), SC_(-140852442.1314070676912450420112690472767) }, + { SC_(0.136718796284185373224318027496337890625e-7), SC_(-73142832.95860873836229194739144163160831) }, + { SC_(0.1679341288252089725574478507041931152344e-7), SC_(-59547157.96538602413887273326920747232618) }, + { SC_(0.586768322818898013792932033538818359375e-7), SC_(-17042502.04007390142270552503694442817772) }, + { SC_(0.1140460881288163363933563232421875e-6), SC_(-8768385.503057815514505383587592316839882) }, + { SC_(0.1455586016163579188287258148193359375e-6), SC_(-6870085.813645861903628134604185829717845) }, + { SC_(0.38918477685001562349498271942138671875e-6), SC_(-2569474.152450422201931296992216788786447) }, + { SC_(0.623782625552848912775516510009765625e-6), SC_(-1603123.137920326054732670974252040029471) }, + { SC_(0.104669607026153244078159332275390625e-5), SC_(-955387.7506368215484908190151041836664367) }, + { SC_(0.2951089072666945867240428924560546875e-5), SC_(-338858.5294366592361422006155767583415332) }, + { SC_(0.4877083483734168112277984619140625e-5), SC_(-205041.1518328576044816818799248254570363) }, + { SC_(0.9066634447663091123104095458984375e-5), SC_(-110295.0867866920189113632829333848561728) }, + { SC_(0.2360353755648247897624969482421875e-4), SC_(-42367.10793974013680262660975431753380722) }, + { SC_(0.60817910707555711269378662109375e-4), SC_(-16443.10183188331524808941398664226054956) }, + { SC_(0.000119476739200763404369354248046875), SC_(-8370.407052088278326658500142471452559876) }, + { SC_(0.0002437086659483611583709716796875), SC_(-4103.836730163294582058528454940279573003) }, + { SC_(0.00047970912419259548187255859375), SC_(-2085.173007504666107151589993385624082421) }, + { SC_(0.000960788573138415813446044921875), SC_(-1041.387348674624002438653075235083900513) }, + { SC_(0.00113048148341476917266845703125), SC_(-885.1541983038739901476427277144444120955) }, + { SC_(0.0033707791008055210113525390625), SC_(-297.2390039349243537614805191705277299023) }, + { SC_(0.007697627879679203033447265625), SC_(-130.474775285766139271184373586979099581) }, + { SC_(0.0154774188995361328125), SC_(-65.1622965036480167454852163183367159499) }, + { SC_(0.0305807329714298248291015625), SC_(-33.22833448837103737169827250947288832931) }, + { SC_(0.0346831791102886199951171875), SC_(-29.35398677269140057359817914882516787732) }, + { SC_(0.09283597767353057861328125), SC_(-11.20575716299454988174075282116985360081) }, + { SC_(0.22476322948932647705078125), SC_(-4.707226986627979845318377740205580092891) }, + { SC_(0.4500701129436492919921875), SC_(-2.233123888225926352977853470362332872207) }, + { SC_(0.64851474761962890625), SC_(-1.375098345846253151137062991270963899568) }, + { SC_(1.14188635349273681640625), SC_(-0.3652988540135093192143191973421561168173) }, + { SC_(2.0095670223236083984375), SC_(0.4289360116443062870701048575669258219731) }, + { SC_(5.68704509735107421875), SC_(1.647702940606041030337068005600358865775) } + } }; +#undef SC_ + + diff --git a/test/ellint_e2_data.ipp b/test/ellint_e2_data.ipp new file mode 100644 index 000000000..9729c468f --- /dev/null +++ b/test/ellint_e2_data.ipp @@ -0,0 +1,534 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Each row of test data contains in order: +// +// k, phi, E(k, phi) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 520> ellint_e2_data = { + SC_(0.177219114266335964202880859375e-2), SC_(-0.804919183254241943359375e0), SC_(0.17721905416489978459933452744691987573693030723399e-2), + SC_(0.177219114266335964202880859375e-2), SC_(-0.74602639675140380859375e0), SC_(0.17721906263793616232304803862551613935165980878975e-2), + SC_(0.177219114266335964202880859375e-2), SC_(-0.72904598712921142578125e0), SC_(0.17721906496143189532808590572077500756745196250994e-2), + SC_(0.177219114266335964202880859375e-2), SC_(-0.62323606014251708984375e0), SC_(0.17721907823458326176536911566374461949290266081915e-2), + SC_(0.177219114266335964202880859375e-2), SC_(-0.5579319000244140625e0), SC_(0.17721908538996504890695781731051446713497872352528e-2), + SC_(0.177219114266335964202880859375e-2), SC_(-0.44300353527069091796875e0), SC_(0.1772190960611723703532438177387763930589137687723e-2), + SC_(0.177219114266335964202880859375e-2), SC_(-0.38366591930389404296875e0), SC_(0.17721910061149527140815880383922381002724195459473e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.9376299381256103515625e-1), SC_(0.17721911345080004258530792787497396150296565903888e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.944411754608154296875e-1), SC_(0.17721911343895994071624688564628016634872782068401e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.264718532562255859375e0), SC_(0.17721910776580442894609156234461709334349303324512e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.62944734096527099609375e0), SC_(0.17721907751280664212690267651483481595911639313105e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.67001712322235107421875e0), SC_(0.17721907262237245229946682518231598438599636326697e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.81158387660980224609375e0), SC_(0.1772190531655048767532217861236813247332269413991e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.826751708984375e0), SC_(0.17721905086031437581845682018005163376219526346493e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.91501367092132568359375e0), SC_(0.17721903659952045902730471028534006712649156285481e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.92977702617645263671875e0), SC_(0.17721903407305898397789671421686956699622188608929e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.93538987636566162109375e0), SC_(0.17721903310191937273874074422793996165770412692148e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.93773555755615234375e0), SC_(0.17721903269433608619814655577621926258964232521032e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.98576259613037109375e0), SC_(0.17721902412478400771222500977665176615786698940728e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.99292266368865966796875e0), SC_(0.17721902281054485597950865679003652002775579957175e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.804919183254241943359375e0), SC_(0.22177274667911356404114891574256878749693907344194e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.74602639675140380859375e0), SC_(0.22177276328387303450482024510234767179030032679487e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.72904598712921142578125e0), SC_(0.2217727678372686367339028586754168902231177349864e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.62323606014251708984375e0), SC_(0.22177279384889650054782811230773624538568740820856e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.5579319000244140625e0), SC_(0.22177280787142304325383561406780984188050064485493e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.44300353527069091796875e0), SC_(0.22177282878397316166435787421159323409852657193959e-2), + SC_(0.22177286446094512939453125e-2), SC_(-0.38366591930389404296875e0), SC_(0.22177283770131950245199600240560529548081991406878e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.9376299381256103515625e-1), SC_(0.2217728628627254479372625258375135600386491716262e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.944411754608154296875e-1), SC_(0.2217728628395221979258299938047197957597496164853e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.264718532562255859375e0), SC_(0.22177285172174219060847672057602083161874684079641e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.62944734096527099609375e0), SC_(0.22177279243441823271547938764610382865435171389572e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.67001712322235107421875e0), SC_(0.22177278285054864598218183902335374842302009015249e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.81158387660980224609375e0), SC_(0.22177274472058160774429082218212375574848674857853e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.826751708984375e0), SC_(0.22177274020305878581113108501360596469572415665098e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.91501367092132568359375e0), SC_(0.22177271225592599152503205364411936997104330819552e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.92977702617645263671875e0), SC_(0.22177270730477403168508453406178297939782452362205e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.93538987636566162109375e0), SC_(0.22177270540161426246190034172682702788389529386352e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.93773555755615234375e0), SC_(0.22177270460286595928412185481890644744187621951273e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.98576259613037109375e0), SC_(0.22177268780896006483002343116598140190281467534408e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.99292266368865966796875e0), SC_(0.22177268523342180309535844744234619982692618957978e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.804919183254241943359375e0), SC_(0.74444554408367041960081599572734384580648039601292e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.74602639675140380859375e0), SC_(0.74444617216162272729935658343672599710823129917136e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.72904598712921142578125e0), SC_(0.7444463443944617202862815487638272084421484282213e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.62323606014251708984375e0), SC_(0.74444732828674762841832446009298546988014342845109e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.5579319000244140625e0), SC_(0.74444785868925647373677427756541386357216267403116e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.44300353527069091796875e0), SC_(0.7444486497059729002932025822805836773020204604622e-2), + SC_(0.7444499991834163665771484375e-2), SC_(-0.38366591930389404296875e0), SC_(0.7444489870039692628767038225671358877887084418318e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.9376299381256103515625e-1), SC_(0.74444993873102289959003988480526261034186232298732e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.944411754608154296875e-1), SC_(0.74444993785336377021615551123021090095012183365455e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.264718532562255859375e0), SC_(0.74444951732496163285321657924324274340742574731183e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.62944734096527099609375e0), SC_(0.74444727478402810869648210185177744717615995463001e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.67001712322235107421875e0), SC_(0.74444691227345931676783343972213308719772501191675e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.81158387660980224609375e0), SC_(0.74444547000179682301220146799104273617595274550494e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.826751708984375e0), SC_(0.74444529912552191587668074107636437041675982253389e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.91501367092132568359375e0), SC_(0.74444424201776730075960207569226490521597156912434e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.92977702617645263671875e0), SC_(0.74444405473886664282906533654411935648151688362809e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.93538987636566162109375e0), SC_(0.74444398275122133283989327309245789244705679180104e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.93773555755615234375e0), SC_(0.74444395253830019766374648366268259171697141665571e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.98576259613037109375e0), SC_(0.74444331730273938555860696278431505938817087276882e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.99292266368865966796875e0), SC_(0.74444321988199504330861521619247593689621297824599e-2), + SC_(0.1433600485324859619140625e-1), SC_(-0.804919183254241943359375e0), SC_(0.14335686705725696407060645727945600655565741414147e-1), + SC_(0.1433600485324859619140625e-1), SC_(-0.74602639675140380859375e0), SC_(0.14335731558581990142476732612631387140359085570156e-1), + SC_(0.1433600485324859619140625e-1), SC_(-0.72904598712921142578125e0), SC_(0.14335743858193055553888894193489743522839559243509e-1), + SC_(0.1433600485324859619140625e-1), SC_(-0.62323606014251708984375e0), SC_(0.14335814120326027832379597580040828122216388507481e-1), + SC_(0.1433600485324859619140625e-1), SC_(-0.5579319000244140625e0), SC_(0.14335851997467008238725204894793026916257019753693e-1), + SC_(0.1433600485324859619140625e-1), SC_(-0.44300353527069091796875e0), SC_(0.14335908485363563424533546850245012850090360873434e-1), + SC_(0.1433600485324859619140625e-1), SC_(-0.38366591930389404296875e0), SC_(0.14335932572318417439388238927592963489979339519294e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.9376299381256103515625e-1), SC_(0.14336000536285207953459760778071938813620926376329e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.944411754608154296875e-1), SC_(0.14336000473610715309472432563583032814457494094135e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.264718532562255859375e0), SC_(0.14335970443226789444113931927418674846075665585412e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.62944734096527099609375e0), SC_(0.14335810299578782495392921047255424568664286939309e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.67001712322235107421875e0), SC_(0.14335784411863985146631166860519228538944451465492e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.81158387660980224609375e0), SC_(0.14335681415313482527267826975008547916557671973967e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.826751708984375e0), SC_(0.14335669212508490437041994345359491275578416731562e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.91501367092132568359375e0), SC_(0.1433559372086014461936976066148820437936563510921e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.92977702617645263671875e0), SC_(0.14335580346584476426767024206037631424851951301064e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.93538987636566162109375e0), SC_(0.14335575205677374246197434850917518154812470284912e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.93773555755615234375e0), SC_(0.14335573048058908550764743332104831817119331680375e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.98576259613037109375e0), SC_(0.14335527683396662777675860041375777953747610473763e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.99292266368865966796875e0), SC_(0.14335520726182617060139852455489440586802090752734e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.804919183254241943359375e0), SC_(0.17608580108574407596974329704841169956949700562955e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.74602639675140380859375e0), SC_(0.17608663231619667706144284604540728747274691033403e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.72904598712921142578125e0), SC_(0.17608686025692226081166910626170820785576222384032e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.62323606014251708984375e0), SC_(0.17608816237609089248262489588718703344935310646926e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.5579319000244140625e0), SC_(0.17608886432433642683152813125927533432394416093985e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.44300353527069091796875e0), SC_(0.17608991116840504430604382009436726055680942592846e-1), + SC_(0.1760916970670223236083984375e-1), SC_(-0.38366591930389404296875e0), SC_(0.176090357551125362347926995427228626500868394589e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.9376299381256103515625e-1), SC_(0.17609161706489009824375122022213121549814666772137e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.944411754608154296875e-1), SC_(0.17609161590340381771438539655887170786578607686625e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.264718532562255859375e0), SC_(0.17609105937855647197851193299561879969853300958653e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.62944734096527099609375e0), SC_(0.17608809156899384005720536484472837230830065065362e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.67001712322235107421875e0), SC_(0.17608761181057073227708699591125844960940811676035e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.81158387660980224609375e0), SC_(0.17608570304162501463076154868058948699689399732159e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.826751708984375e0), SC_(0.17608547689404223463630864650669183425712473803568e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.91501367092132568359375e0), SC_(0.17608407784672239506239468119798486189473586582955e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.92977702617645263671875e0), SC_(0.17608382998754781901869199398720568129229579547611e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.93538987636566162109375e0), SC_(0.17608373471347270582239268505690054737704285676384e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.93773555755615234375e0), SC_(0.17608369472730925070207638812129721785547912618809e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.98576259613037109375e0), SC_(0.1760828540033432824714172980056450648102099021249e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.99292266368865966796875e0), SC_(0.1760827250680427232498457772793807499892371857118e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.804919183254241943359375e0), SC_(0.61501977006950685147287768516293323208160579222561e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.74602639675140380859375e0), SC_(0.61505522489025659599931604724877390313025548257308e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.72904598712921142578125e0), SC_(0.61506494675121255552513729228591687728362292179595e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.62323606014251708984375e0), SC_(0.6151204783438311669516418454684974438012040582801e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.5579319000244140625e0), SC_(0.61515041095618531533933041042944610555423576496996e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.44300353527069091796875e0), SC_(0.61519504621160125867433869303576963606044911782478e-1), + SC_(0.6152711808681488037109375e-1), SC_(-0.38366591930389404296875e0), SC_(0.61521407741571578777767245737873183733981816461528e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.9376299381256103515625e-1), SC_(0.61526777062967981169049636151844834926854584285419e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.944411754608154296875e-1), SC_(0.61526772111895451062409353986808208860857193530741e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.264718532562255859375e0), SC_(0.61524399735335177275474273521472375918132832837151e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.62944734096527099609375e0), SC_(0.61511745884028483102790380253646823175238112494646e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.67001712322235107421875e0), SC_(0.6150969993380767120526675862688574839444187666016e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.81158387660980224609375e0), SC_(0.61501558792980989731745029704453425507936947479545e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.826751708984375e0), SC_(0.6150059412689594790766306366724969854744633162111e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.91501367092132568359375e0), SC_(0.6149462572658848296026943427784475993369283738193e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.92977702617645263671875e0), SC_(0.61493568248035940269881357391157292683808423254872e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.93538987636566162109375e0), SC_(0.61493161758041224579051594027510051678482376027455e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.93773555755615234375e0), SC_(0.61492991154427406040710017225498992861736055228753e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.98576259613037109375e0), SC_(0.61489403968675255445594757668519531570161557334001e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.99292266368865966796875e0), SC_(0.61488853799260647384525257050300692876228193751127e-1), + SC_(0.11958599090576171875e0), SC_(-0.804919183254241943359375e0), SC_(0.11940159351652991642087635107572968021280491356493e0), + SC_(0.11958599090576171875e0), SC_(-0.74602639675140380859375e0), SC_(0.11942762071829396048733749883613051021682286386073e0), + SC_(0.11958599090576171875e0), SC_(-0.72904598712921142578125e0), SC_(0.11943475617239474629497253451891457719819822132972e0), + SC_(0.11958599090576171875e0), SC_(-0.62323606014251708984375e0), SC_(0.11947550329635179606625307953230445565622088756883e0), + SC_(0.11958599090576171875e0), SC_(-0.5579319000244140625e0), SC_(0.11949745915811193389695075959086858402078090470861e0), + SC_(0.11958599090576171875e0), SC_(-0.44300353527069091796875e0), SC_(0.11953018963741346322165319442975512391777037152449e0), + SC_(0.11958599090576171875e0), SC_(-0.38366591930389404296875e0), SC_(0.11954414137898877094879944738421764544396529920502e0), + SC_(0.11958599090576171875e0), SC_(0.9376299381256103515625e-1), SC_(0.1195834921804170562568474669624073454993125331367e0), + SC_(0.11958599090576171875e0), SC_(0.944411754608154296875e-1), SC_(0.11958345590276751842953375574122677488392674763143e0), + SC_(0.11958599090576171875e0), SC_(0.264718532562255859375e0), SC_(0.11956607128021548072844495801612937580324335914271e0), + SC_(0.11958599090576171875e0), SC_(0.62944734096527099609375e0), SC_(0.11947328816450132752169835924569094033180591400024e0), + SC_(0.11958599090576171875e0), SC_(0.67001712322235107421875e0), SC_(0.11945827747732508482238164500953342523090935816124e0), + SC_(0.11958599090576171875e0), SC_(0.81158387660980224609375e0), SC_(0.11939852293295489024456283834841921944198117803215e0), + SC_(0.11958599090576171875e0), SC_(0.826751708984375e0), SC_(0.11939143982430379243843352157975729271012597587493e0), + SC_(0.11958599090576171875e0), SC_(0.91501367092132568359375e0), SC_(0.11934760413857031705335418990966249231391480564468e0), + SC_(0.11958599090576171875e0), SC_(0.92977702617645263671875e0), SC_(0.11933983512028402595181333144487621852351068127479e0), + SC_(0.11958599090576171875e0), SC_(0.93538987636566162109375e0), SC_(0.11933684856578003526165946465617461351295689535782e0), + SC_(0.11958599090576171875e0), SC_(0.93773555755615234375e0), SC_(0.11933559508099898217297810142098532520972110488427e0), + SC_(0.11958599090576171875e0), SC_(0.98576259613037109375e0), SC_(0.11930923471047814074619306305775614928960324848883e0), + SC_(0.11958599090576171875e0), SC_(0.99292266368865966796875e0), SC_(0.11930519111527445236541508266188797205166808801345e0), + SC_(0.15262925624847412109375e0), SC_(-0.804919183254241943359375e0), SC_(0.15224623392135128578680619330449866771577238682122e0), + SC_(0.15262925624847412109375e0), SC_(-0.74602639675140380859375e0), SC_(0.15230033713946658950752983865173904269516800645461e0), + SC_(0.15262925624847412109375e0), SC_(-0.72904598712921142578125e0), SC_(0.15231516739375119917477976688943665577491066091918e0), + SC_(0.15262925624847412109375e0), SC_(-0.62323606014251708984375e0), SC_(0.15239983651503112649682258666440110081268937272464e0), + SC_(0.15262925624847412109375e0), SC_(-0.5579319000244140625e0), SC_(0.15244544538794094274525902173112038959961311329937e0), + SC_(0.15262925624847412109375e0), SC_(-0.44300353527069091796875e0), SC_(0.15251341875995068536469244827700455268806565305523e0), + SC_(0.15262925624847412109375e0), SC_(-0.38366591930389404296875e0), SC_(0.15254238679985931337567146181937132920154008973836e0), + SC_(0.15262925624847412109375e0), SC_(0.9376299381256103515625e-1), SC_(0.15262407046188851014921270597605552174731396772469e0), + SC_(0.15262925624847412109375e0), SC_(0.944411754608154296875e-1), SC_(0.15262399517134502490562721875740259768389539174152e0), + SC_(0.15262925624847412109375e0), SC_(0.264718532562255859375e0), SC_(0.1525879122137402352429747540288980455807227867214e0), + SC_(0.15262925624847412109375e0), SC_(0.62944734096527099609375e0), SC_(0.15239523449826308917160579764876251393662675458499e0), + SC_(0.15262925624847412109375e0), SC_(0.67001712322235107421875e0), SC_(0.15236404670155401714376875284315912431270385428872e0), + SC_(0.15262925624847412109375e0), SC_(0.81158387660980224609375e0), SC_(0.15223985015727243233689620438691615621218869025621e0), + SC_(0.15262925624847412109375e0), SC_(0.826751708984375e0), SC_(0.15222512361224625374547578609193034943889148186694e0), + SC_(0.15262925624847412109375e0), SC_(0.91501367092132568359375e0), SC_(0.15213396230380987320882128027780180899136897816778e0), + SC_(0.15262925624847412109375e0), SC_(0.92977702617645263671875e0), SC_(0.15211780174885177274370910735736555265731529501898e0), + SC_(0.15262925624847412109375e0), SC_(0.93538987636566162109375e0), SC_(0.15211158901157390502706763335244443821063889167839e0), + SC_(0.15262925624847412109375e0), SC_(0.93773555755615234375e0), SC_(0.1521089814147135141659163193040473742647528237765e0), + SC_(0.15262925624847412109375e0), SC_(0.98576259613037109375e0), SC_(0.1520541372380949020893748127479892420810366551134e0), + SC_(0.15262925624847412109375e0), SC_(0.99292266368865966796875e0), SC_(0.15204572308928941922694535278617983266242187978535e0), + SC_(0.408089816570281982421875e0), SC_(-0.804919183254241943359375e0), SC_(0.40087773847838692250599377386281200239812605761021e0), + SC_(0.408089816570281982421875e0), SC_(-0.74602639675140380859375e0), SC_(0.40190874907104190742266687116670835102616276359536e0), + SC_(0.408089816570281982421875e0), SC_(-0.72904598712921142578125e0), SC_(0.40219063116119237535715115066249936376943652529699e0), + SC_(0.408089816570281982421875e0), SC_(-0.62323606014251708984375e0), SC_(0.40379404878672778473045770121975900252569033833797e0), + SC_(0.408089816570281982421875e0), SC_(-0.5579319000244140625e0), SC_(0.40465366026345755178874727069996147915274182052549e0), + SC_(0.408089816570281982421875e0), SC_(-0.44300353527069091796875e0), SC_(0.40592956032851837395876207703781835375115306753739e0), + SC_(0.408089816570281982421875e0), SC_(-0.38366591930389404296875e0), SC_(0.40647143410211291015028648027745384098009512778998e0), + SC_(0.408089816570281982421875e0), SC_(0.9376299381256103515625e-1), SC_(0.4079934794784219868282542935099093235211913904893e0), + SC_(0.408089816570281982421875e0), SC_(0.944411754608154296875e-1), SC_(0.40799208054080733383412043058040143407336373603265e0), + SC_(0.408089816570281982421875e0), SC_(0.264718532562255859375e0), SC_(0.40732079857882022043521866955517522729905017636387e0), + SC_(0.408089816570281982421875e0), SC_(0.62944734096527099609375e0), SC_(0.40370715415748270886050626898809348109166668227234e0), + SC_(0.408089816570281982421875e0), SC_(0.67001712322235107421875e0), SC_(0.40311749948369311324045498984372099418497701077126e0), + SC_(0.408089816570281982421875e0), SC_(0.81158387660980224609375e0), SC_(0.40075580972366876584605938363354779695825695272009e0), + SC_(0.408089816570281982421875e0), SC_(0.826751708984375e0), SC_(0.40047431017887375506803582421963983831920170735876e0), + SC_(0.408089816570281982421875e0), SC_(0.91501367092132568359375e0), SC_(0.39872467472817423843989762742028917255315191362367e0), + SC_(0.408089816570281982421875e0), SC_(0.92977702617645263671875e0), SC_(0.39841322079218516274219285200467132068435667762241e0), + SC_(0.408089816570281982421875e0), SC_(0.93538987636566162109375e0), SC_(0.39829338138625534095200356535516738903620889921783e0), + SC_(0.408089816570281982421875e0), SC_(0.93773555755615234375e0), SC_(0.39824306529599668565264152008444297067068527070376e0), + SC_(0.408089816570281982421875e0), SC_(0.98576259613037109375e0), SC_(0.39718240033425029422849871471704838858196403329514e0), + SC_(0.408089816570281982421875e0), SC_(0.99292266368865966796875e0), SC_(0.39701926661844557487217508134389279947772521093395e0), + SC_(0.6540834903717041015625e0), SC_(-0.804919183254241943359375e0), SC_(0.62522331487538074022825917796040968566573507875511e0), + SC_(0.6540834903717041015625e0), SC_(-0.74602639675140380859375e0), SC_(0.62944010005835347310947633106956030526960463441699e0), + SC_(0.6540834903717041015625e0), SC_(-0.72904598712921142578125e0), SC_(0.63058722441882207761841292783688165863615300163541e0), + SC_(0.6540834903717041015625e0), SC_(-0.62323606014251708984375e0), SC_(0.63706737330730808488005558734124053363169510869579e0), + SC_(0.6540834903717041015625e0), SC_(-0.5579319000244140625e0), SC_(0.64051121382140412221790264833005000507966070497052e0), + SC_(0.6540834903717041015625e0), SC_(-0.44300353527069091796875e0), SC_(0.64558595649337792095337773652653080354106518147584e0), + SC_(0.6540834903717041015625e0), SC_(-0.38366591930389404296875e0), SC_(0.64772836188639894302717596798865659637396954090751e0), + SC_(0.6540834903717041015625e0), SC_(0.9376299381256103515625e-1), SC_(0.6537069635023878618426694835256753522498828373194e0), + SC_(0.6540834903717041015625e0), SC_(0.944411754608154296875e-1), SC_(0.65370149423060049998526648357170182473256401270091e0), + SC_(0.6540834903717041015625e0), SC_(0.264718532562255859375e0), SC_(0.65107165036797609262224724632821416721537921994855e0), + SC_(0.6540834903717041015625e0), SC_(0.62944734096527099609375e0), SC_(0.63671810080087286219564326366975721131333859794536e0), + SC_(0.6540834903717041015625e0), SC_(0.67001712322235107421875e0), SC_(0.63434228874068145533071278393418018799392202624323e0), + SC_(0.6540834903717041015625e0), SC_(0.81158387660980224609375e0), SC_(0.62472239384386569111230671026640406599725147303377e0), + SC_(0.6540834903717041015625e0), SC_(0.826751708984375e0), SC_(0.62356405672673580029848515255238795623363670777346e0), + SC_(0.6540834903717041015625e0), SC_(0.91501367092132568359375e0), SC_(0.61630452496331986253041113084404331468209750721079e0), + SC_(0.6540834903717041015625e0), SC_(0.92977702617645263671875e0), SC_(0.61500097864475673111192722304305196291959713174315e0), + SC_(0.6540834903717041015625e0), SC_(0.93538987636566162109375e0), SC_(0.61449846585373303142455074938236361432978040499459e0), + SC_(0.6540834903717041015625e0), SC_(0.93773555755615234375e0), SC_(0.61428732215378190261322829618275502535126448964389e0), + SC_(0.6540834903717041015625e0), SC_(0.98576259613037109375e0), SC_(0.60981426733254549075843922364215605764678485220391e0), + SC_(0.6540834903717041015625e0), SC_(0.99292266368865966796875e0), SC_(0.60912245913255241754185533186562613329924721350394e0), + SC_(0.1097540378570556640625e1), SC_(-0.804919183254241943359375e0), SC_(0.97358076980581963214979957740641809690010032871498e0), + SC_(0.1097540378570556640625e1), SC_(-0.74602639675140380859375e0), SC_(0.99284261635986343530890870423642451505197092051096e0), + SC_(0.1097540378570556640625e1), SC_(-0.72904598712921142578125e0), SC_(0.99799717657418253873311393911450835120059461203911e0), + SC_(0.1097540378570556640625e1), SC_(-0.62323606014251708984375e0), SC_(0.10265146669393067798961767846142130025383852815092e1), + SC_(0.1097540378570556640625e1), SC_(-0.5579319000244140625e0), SC_(0.10412993131049983738821846778802937877887398184407e1), + SC_(0.1097540378570556640625e1), SC_(-0.44300353527069091796875e0), SC_(0.10626791213895727458974730171210587495749582852499e1), + SC_(0.1097540378570556640625e1), SC_(-0.38366591930389404296875e0), SC_(0.10715726991631194844715086904661806838247934897991e1), + SC_(0.1097540378570556640625e1), SC_(0.9376299381256103515625e-1), SC_(0.10960180450371527751749388123599541977039935839209e1), + SC_(0.1097540378570556640625e1), SC_(0.944411754608154296875e-1), SC_(0.10959959178963911636246396357479089365230913458689e1), + SC_(0.1097540378570556640625e1), SC_(0.264718532562255859375e0), SC_(0.1085307588270983137395984320679292591117855769782e1), + SC_(0.1097540378570556640625e1), SC_(0.62944734096527099609375e0), SC_(0.10250017111642034995968530653796236533683328385994e1), + SC_(0.1097540378570556640625e1), SC_(0.67001712322235107421875e0), SC_(0.10146402575381134424781556460512128266275614033932e1), + SC_(0.1097540378570556640625e1), SC_(0.81158387660980224609375e0), SC_(0.97125740974534056452551832813587223267950701145455e0), + SC_(0.1097540378570556640625e1), SC_(0.826751708984375e0), SC_(0.96585401343971995157426022835338799331733172449179e0), + SC_(0.1097540378570556640625e1), SC_(0.91501367092132568359375e0), SC_(0.93087613454943087704421229934262160482880771114428e0), + SC_(0.1097540378570556640625e1), SC_(0.92977702617645263671875e0), SC_(0.92435947741383209880306251092716774892053707866899e0), + SC_(0.1097540378570556640625e1), SC_(0.93538987636566162109375e0), SC_(0.92182511164582055119665026711580263575974688395746e0), + SC_(0.1097540378570556640625e1), SC_(0.93773555755615234375e0), SC_(0.92075640715667306226202947709957133854495533453504e0), + SC_(0.1097540378570556640625e1), SC_(0.98576259613037109375e0), SC_(0.89752615752053353845738311032151978950979954505705e0), + SC_(0.1097540378570556640625e1), SC_(0.99292266368865966796875e0), SC_(0.89382068911421126061217108491550697038968667547063e0), + SC_(0.2539736270904541015625e1), SC_(-0.746025502681732177734375e0), SC_(0.20606948435553395590824575106717672337532725557054e1), + SC_(0.2539736270904541015625e1), SC_(-0.729045093059539794921875e0), SC_(0.20858197299728117364713717259787406867294493268913e1), + SC_(0.2539736270904541015625e1), SC_(-0.557931125164031982421875e0), SC_(0.22894234426001721773416713893403381076946469595761e1), + SC_(0.2539736270904541015625e1), SC_(-0.38366520404815673828125e0), SC_(0.24257333087184108449743582987567124940455016242611e1), + SC_(0.2539736270904541015625e1), SC_(0.26471889019012451171875e0), SC_(0.24863297461620451392065876231613437352714077748701e1), + SC_(0.2539736270904541015625e1), SC_(0.629447519779205322265625e0), SC_(0.22141741803463461293944784056846771544822087170898e1), + SC_(0.2539736270904541015625e1), SC_(0.670017302036285400390625e0), SC_(0.21655199139056638540725221233525474068485862941694e1), + SC_(0.2539736270904541015625e1), SC_(0.811583995819091796875e0), SC_(0.19527311832302614803373557823539383964559728957586e1), + SC_(0.2539736270904541015625e1), SC_(0.826751768589019775390625e0), SC_(0.19248895773095513740300312496230532259922126635573e1), + SC_(0.2539736270904541015625e1), SC_(0.937735617160797119140625e0), SC_(0.16717943098455195529310991682026902826908198208045e1), + SC_(0.27095401287078857421875e1), SC_(-0.746025502681732177734375e0), SC_(0.22184580794979653971201742020111621976224445127624e1), + SC_(0.27095401287078857421875e1), SC_(-0.729045093059539794921875e0), SC_(0.22441452387610873267122698779043437245731497203019e1), + SC_(0.27095401287078857421875e1), SC_(-0.557931125164031982421875e0), SC_(0.24526061122275048579533316315210129083300132363638e1), + SC_(0.27095401287078857421875e1), SC_(-0.38366520404815673828125e0), SC_(0.25924400069523964196047849930161341834936783435732e1), + SC_(0.27095401287078857421875e1), SC_(0.26471889019012451171875e0), SC_(0.26546664812765387292489382317562053772809047876253e1), + SC_(0.27095401287078857421875e1), SC_(0.629447519779205322265625e0), SC_(0.2375501871506669700925943115561488937861633211455e1), + SC_(0.27095401287078857421875e1), SC_(0.670017302036285400390625e0), SC_(0.23256847813233190187753887336237443134156207212024e1), + SC_(0.27095401287078857421875e1), SC_(0.811583995819091796875e0), SC_(0.21081802123998041997969678911354025634560737710665e1), + SC_(0.27095401287078857421875e1), SC_(0.826751768589019775390625e0), SC_(0.20797699889679274128699246900504616733139759172985e1), + SC_(0.27095401287078857421875e1), SC_(0.937735617160797119140625e0), SC_(0.18221151183801884028067383734533766684821378125347e1), + SC_(0.30944411754608154296875e1), SC_(-0.804919183254241943359375e0), SC_(0.24966589961325599268221995946805641031689252487049e1), + SC_(0.30944411754608154296875e1), SC_(-0.74602639675140380859375e0), SC_(0.25960501394971412975900561652162250216491366170856e1), + SC_(0.30944411754608154296875e1), SC_(-0.72904598712921142578125e0), SC_(0.26220711502622234559264465533236396384241845212442e1), + SC_(0.30944411754608154296875e1), SC_(-0.62323606014251708984375e0), SC_(0.27625466426905881315055585967058535457063901073405e1), + SC_(0.30944411754608154296875e1), SC_(-0.5579319000244140625e0), SC_(0.28334469762829322200644742292437271592339037175022e1), + SC_(0.30944411754608154296875e1), SC_(-0.44300353527069091796875e0), SC_(0.29341160586103434126405449706997785098201059382841e1), + SC_(0.30944411754608154296875e1), SC_(-0.38366591930389404296875e0), SC_(0.29754295823615905718580189633551539775555543180419e1), + SC_(0.30944411754608154296875e1), SC_(0.9376299381256103515625e-1), SC_(0.30875250779662108495021400635872294087615435039158e1), + SC_(0.30944411754608154296875e1), SC_(0.944411754608154296875e-1), SC_(0.30874244998889923463791010006402273081656749816566e1), + SC_(0.30944411754608154296875e1), SC_(0.264718532562255859375e0), SC_(0.30386598032520992270715096668318673176158242824106e1), + SC_(0.30944411754608154296875e1), SC_(0.62944734096527099609375e0), SC_(0.27552242219968067063681238173120084004766454909705e1), + SC_(0.30944411754608154296875e1), SC_(0.67001712322235107421875e0), SC_(0.27047094380143394760995618020031882608831817214288e1), + SC_(0.30944411754608154296875e1), SC_(0.81158387660980224609375e0), SC_(0.24844080382738187460131716973309269340302648290835e1), + SC_(0.30944411754608154296875e1), SC_(0.826751708984375e0), SC_(0.24556640918901794130358411103680426047070343802371e1), + SC_(0.30944411754608154296875e1), SC_(0.91501367092132568359375e0), SC_(0.22581214856834495063480250802851614997776341399303e1), + SC_(0.30944411754608154296875e1), SC_(0.92977702617645263671875e0), SC_(0.22181274072350009795300888143074598471657186923109e1), + SC_(0.30944411754608154296875e1), SC_(0.93538987636566162109375e0), SC_(0.22021690304825114090225800638603978580592312397702e1), + SC_(0.30944411754608154296875e1), SC_(0.93773555755615234375e0), SC_(0.21953629436834643253771177954924738788998620384537e1), + SC_(0.30944411754608154296875e1), SC_(0.98576259613037109375e0), SC_(0.20289662407902669010943414872019445993549312038813e1), + SC_(0.30944411754608154296875e1), SC_(0.99292266368865966796875e0), SC_(0.19956012661512807858781973557149956496146241937617e1), + SC_(0.4420680999755859375e1), SC_(-0.746025502681732177734375e0), SC_(0.37671885599157883291888879306071148970461163854417e1), + SC_(0.4420680999755859375e1), SC_(-0.729045093059539794921875e0), SC_(0.38010428438032877561255280902574224339063138286022e1), + SC_(0.4420680999755859375e1), SC_(-0.557931125164031982421875e0), SC_(0.4077288838442777482264521651646610468827663767543e1), + SC_(0.4420680999755859375e1), SC_(-0.38366520404815673828125e0), SC_(0.4263837274235952634866093836362018199067995934673e1), + SC_(0.4420680999755859375e1), SC_(0.26471889019012451171875e0), SC_(0.43471180936852849800199789250097491615323458505614e1), + SC_(0.4420680999755859375e1), SC_(0.629447519779205322265625e0), SC_(0.39748260204362937713742640050702888121054133123283e1), + SC_(0.4420680999755859375e1), SC_(0.670017302036285400390625e0), SC_(0.39087959518515946851012024222639255565129674465982e1), + SC_(0.4420680999755859375e1), SC_(0.811583995819091796875e0), SC_(0.36224145017411978773815035029374687756122913807008e1), + SC_(0.4420680999755859375e1), SC_(0.826751768589019775390625e0), SC_(0.35852835494424491289403755839868444023176297138091e1), + SC_(0.4420680999755859375e1), SC_(0.937735617160797119140625e0), SC_(0.32529050407115750526409300420610566795238770575452e1), + SC_(0.51139926910400390625e1), SC_(-0.804919183254241943359375e0), SC_(0.40649742361758996182193721586198335678185195390056e1), + SC_(0.51139926910400390625e1), SC_(-0.74602639675140380859375e0), SC_(0.42407205988487990230865760675097389160329171550655e1), + SC_(0.51139926910400390625e1), SC_(-0.72904598712921142578125e0), SC_(0.42866194892330269259984093995907378568943010060222e1), + SC_(0.51139926910400390625e1), SC_(-0.62323606014251708984375e0), SC_(0.45337225216642051682826738540837414057648592420988e1), + SC_(0.51139926910400390625e1), SC_(-0.5579319000244140625e0), SC_(0.46580558191746459736878562728120645312485562256259e1), + SC_(0.51139926910400390625e1), SC_(-0.44300353527069091796875e0), SC_(0.48342172200235668600302927269017412608599509088581e1), + SC_(0.51139926910400390625e1), SC_(-0.38366591930389404296875e0), SC_(0.49063970236465748655529503955284751661922730351636e1), + SC_(0.51139926910400390625e1), SC_(0.9376299381256103515625e-1), SC_(0.51019413492836552269988939281130221555088517524603e1), + SC_(0.51139926910400390625e1), SC_(0.944411754608154296875e-1), SC_(0.51017660804202934944174033208734166760825311108377e1), + SC_(0.51139926910400390625e1), SC_(0.264718532562255859375e0), SC_(0.50167501245734356768540125877502595711140481630397e1), + SC_(0.51139926910400390625e1), SC_(0.62944734096527099609375e0), SC_(0.4520868054009284772995718224197102131757224348837e1), + SC_(0.51139926910400390625e1), SC_(0.67001712322235107421875e0), SC_(0.44321152860655340802540045094573522968889573572411e1), + SC_(0.51139926910400390625e1), SC_(0.81158387660980224609375e0), SC_(0.4043260224796061724399941700230178777652776440263e1), + SC_(0.51139926910400390625e1), SC_(0.826751708984375e0), SC_(0.39922646259037948716093537743483596221786621196096e1), + SC_(0.51139926910400390625e1), SC_(0.91501367092132568359375e0), SC_(0.36395484865797341150628669429352827727536291480368e1), + SC_(0.51139926910400390625e1), SC_(0.92977702617645263671875e0), SC_(0.35675343153556408122538650005829418186488674701339e1), + SC_(0.51139926910400390625e1), SC_(0.93538987636566162109375e0), SC_(0.35387270357964784236089639327883312464090232559874e1), + SC_(0.51139926910400390625e1), SC_(0.93773555755615234375e0), SC_(0.35264275585053300717215077204783880710205031599261e1), + SC_(0.51139926910400390625e1), SC_(0.98576259613037109375e0), SC_(0.32224223011463683291996839992817620518228498305602e1), + SC_(0.51139926910400390625e1), SC_(0.99292266368865966796875e0), SC_(0.31603381419503048253972861877193204490835414529538e1), + SC_(0.616334056854248046875e1), SC_(-0.746025502681732177734375e0), SC_(0.51667012502980379461898875289291999981214269242786e1), + SC_(0.616334056854248046875e1), SC_(-0.729045093059539794921875e0), SC_(0.52187368513321014104715814414709305645529259241246e1), + SC_(0.616334056854248046875e1), SC_(-0.557931125164031982421875e0), SC_(0.56414319598861465893219034775202286253687816834462e1), + SC_(0.616334056854248046875e1), SC_(-0.38366520404815673828125e0), SC_(0.59253552764849920201787681645997918639468877327057e1), + SC_(0.616334056854248046875e1), SC_(0.26471889019012451171875e0), SC_(0.60517951198996061900872892967569621065549235628133e1), + SC_(0.616334056854248046875e1), SC_(0.629447519779205322265625e0), SC_(0.54850058315491967388582768092489680485748613764955e1), + SC_(0.616334056854248046875e1), SC_(0.670017302036285400390625e0), SC_(0.53839894879806611456636949153790476778381423510555e1), + SC_(0.616334056854248046875e1), SC_(0.811583995819091796875e0), SC_(0.49434395273121454160560701796666025612557499346665e1), + SC_(0.616334056854248046875e1), SC_(0.826751768589019775390625e0), SC_(0.48859581068465552634367513856474258488740249891201e1), + SC_(0.616334056854248046875e1), SC_(0.937735617160797119140625e0), SC_(0.43654050578874159400773930861758695751496514187013e1), + SC_(0.95070552825927734375e1), SC_(-0.804919183254241943359375e0), SC_(0.77136146906088677425264272482883176369286481419599e1), + SC_(0.95070552825927734375e1), SC_(-0.74602639675140380859375e0), SC_(0.80118013860105363210218143929900357319985605144755e1), + SC_(0.95070552825927734375e1), SC_(-0.72904598712921142578125e0), SC_(0.80898680556235258193316064147736202843180417156732e1), + SC_(0.95070552825927734375e1), SC_(-0.62323606014251708984375e0), SC_(0.8511315308683729273758679464197894065484024124487e1), + SC_(0.95070552825927734375e1), SC_(-0.5579319000244140625e0), SC_(0.87240275075120340182990906663883774796713254440042e1), + SC_(0.95070552825927734375e1), SC_(-0.44300353527069091796875e0), SC_(0.90260514522865427669612028384755250538027384103773e1), + SC_(0.95070552825927734375e1), SC_(-0.38366591930389404296875e0), SC_(0.91499991427692940745883168029740655894361701789444e1), + SC_(0.95070552825927734375e1), SC_(0.9376299381256103515625e-1), SC_(0.94863057144862190225682867443713708524807003150009e1), + SC_(0.95070552825927734375e1), SC_(0.944411754608154296875e-1), SC_(0.94860039617347090460051866847732454807723897228135e1), + SC_(0.95070552825927734375e1), SC_(0.264718532562255859375e0), SC_(0.93397009976641663899466433140384802110682769979558e1), + SC_(0.95070552825927734375e1), SC_(0.62944734096527099609375e0), SC_(0.84893469169604569670711335846314472062066099711682e1), + SC_(0.95070552825927734375e1), SC_(0.67001712322235107421875e0), SC_(0.83377949107106217825548050584221381545333611376562e1), + SC_(0.95070552825927734375e1), SC_(0.81158387660980224609375e0), SC_(0.76768602522661609494793804271972367745790429985765e1), + SC_(0.95070552825927734375e1), SC_(0.826751708984375e0), SC_(0.75906248037474697255279272971596822908517107621838e1), + SC_(0.95070552825927734375e1), SC_(0.91501367092132568359375e0), SC_(0.69979746531203014449954466015965693163485850087946e1), + SC_(0.95070552825927734375e1), SC_(0.92977702617645263671875e0), SC_(0.68779884608548303292899961043004036990044181837584e1), + SC_(0.95070552825927734375e1), SC_(0.93538987636566162109375e0), SC_(0.68301118095634658082855905750210855770914175711587e1), + SC_(0.95070552825927734375e1), SC_(0.93773555755615234375e0), SC_(0.68096929107873634247927365160052985738547786973975e1), + SC_(0.95070552825927734375e1), SC_(0.98576259613037109375e0), SC_(0.63104893790109956868661123771970614094301307005046e1), + SC_(0.95070552825927734375e1), SC_(0.99292266368865966796875e0), SC_(0.6210392396338984857582476239045604900996293467409e1), + SC_(0.1264718532562255859375e2), SC_(-0.746025502681732177734375e0), SC_(0.10653538970236647615480809194456539078299223044901e2), + SC_(0.1264718532562255859375e2), SC_(-0.729045093059539794921875e0), SC_(0.10757626738803613551565262041921891845552920393775e2), + SC_(0.1264718532562255859375e2), SC_(-0.557931125164031982421875e0), SC_(0.1160316253958585467164577335025405203848761058251e2), + SC_(0.1264718532562255859375e2), SC_(-0.38366520404815673828125e0), SC_(0.12171117565603642524502696012778576125730417642359e2), + SC_(0.1264718532562255859375e2), SC_(0.26471889019012451171875e0), SC_(0.12424048173526351202025724421124918552082251415423e2), + SC_(0.1264718532562255859375e2), SC_(0.629447519779205322265625e0), SC_(0.11290254160795181871925641179301890117412347414617e2), + SC_(0.1264718532562255859375e2), SC_(0.670017302036285400390625e0), SC_(0.11088186621805165818165302782365444898327250556274e2), + SC_(0.1264718532562255859375e2), SC_(0.811583995819091796875e0), SC_(0.1020694796764127067619946436108138573035166051701e2), + SC_(0.1264718532562255859375e2), SC_(0.826751768589019775390625e0), SC_(0.10091968682401590180018899342329066590460564132281e2), + SC_(0.1264718532562255859375e2), SC_(0.937735617160797119140625e0), SC_(0.90507329377618259595498984086557298983272927625963e1), + SC_(0.162944736480712890625e2), SC_(-0.746025502681732177734375e0), SC_(0.13784521468002260032830612582772624143561302320573e2), + SC_(0.162944736480712890625e2), SC_(-0.729045093059539794921875e0), SC_(0.13915458791365675023265680192667340580620135300383e2), + SC_(0.162944736480712890625e2), SC_(-0.557931125164031982421875e0), SC_(0.14979561147101185478546235281066599605118632279816e2), + SC_(0.162944736480712890625e2), SC_(-0.38366520404815673828125e0), SC_(0.15694752545469067028774200091139254989461735354799e2), + SC_(0.162944736480712890625e2), SC_(0.26471889019012451171875e0), SC_(0.16013353139381842613324769456926764052295579088234e2), + SC_(0.162944736480712890625e2), SC_(0.629447519779205322265625e0), SC_(0.14585675620452694842566737536525641950850829741502e2), + SC_(0.162944736480712890625e2), SC_(0.670017302036285400390625e0), SC_(0.14331371650756724156722446880010765968912841082353e2), + SC_(0.162944736480712890625e2), SC_(0.811583995819091796875e0), SC_(0.13222885048234084764513779251503819172897378461364e2), + SC_(0.162944736480712890625e2), SC_(0.826751768589019775390625e0), SC_(0.13078328257639057534548908564659500463659583141858e2), + SC_(0.162944736480712890625e2), SC_(0.937735617160797119140625e0), SC_(0.11770137850789958016758667532132414633028714217042e2), + SC_(0.167001705169677734375e2), SC_(-0.746025502681732177734375e0), SC_(0.14128322944727813270320008156208189411607964356057e2), + SC_(0.167001705169677734375e2), SC_(-0.729045093059539794921875e0), SC_(0.14262303387968871533731534702557260886716116918925e2), + SC_(0.167001705169677734375e2), SC_(-0.557931125164031982421875e0), SC_(0.15352002249094351296781815596508348723508379422342e2), + SC_(0.167001705169677734375e2), SC_(-0.38366520404815673828125e0), SC_(0.16085098656320784280811799665131950596018820059305e2), + SC_(0.167001705169677734375e2), SC_(0.26471889019012451171875e0), SC_(0.16411819978040450666580803067616777058580953611619e2), + SC_(0.167001705169677734375e2), SC_(0.629447519779205322265625e0), SC_(0.14948478355307172142569426978676013882554076892178e2), + SC_(0.167001705169677734375e2), SC_(0.670017302036285400390625e0), SC_(0.14688048855947871334824645163386108910506173269061e2), + SC_(0.167001705169677734375e2), SC_(0.811583995819091796875e0), SC_(0.13553959558824892053958981203587009794537636045778e2), + SC_(0.167001705169677734375e2), SC_(0.826751768589019775390625e0), SC_(0.13406222268398232679728917528579007902775776934482e2), + SC_(0.167001705169677734375e2), SC_(0.937735617160797119140625e0), SC_(0.12071626784174372426100624134053082284140599127615e2), + SC_(0.181158390045166015625e2), SC_(-0.746025502681732177734375e0), SC_(0.15159739173172581363783198952635101542721961699771e2), + SC_(0.181158390045166015625e2), SC_(-0.729045093059539794921875e0), SC_(0.15314257415471888419514665290744734332948047372087e2), + SC_(0.181158390045166015625e2), SC_(-0.557931125164031982421875e0), SC_(0.16568661977229522614616080453985283825248521667222e2), + SC_(0.181158390045166015625e2), SC_(-0.38366520404815673828125e0), SC_(0.17410546992376683792758792483313517569542111428637e2), + SC_(0.181158390045166015625e2), SC_(0.26471889019012451171875e0), SC_(0.17785304179414303257139485762582850264887992141587e2), + SC_(0.181158390045166015625e2), SC_(0.629447519779205322265625e0), SC_(0.16104599980275333702969936821150635738838459547235e2), + SC_(0.181158390045166015625e2), SC_(0.670017302036285400390625e0), SC_(0.15804826051230434644438176943141596905308787147794e2), + SC_(0.181158390045166015625e2), SC_(0.811583995819091796875e0), SC_(0.14496504201425767930308456115143773987217221079921e2), + SC_(0.181158390045166015625e2), SC_(0.826751768589019775390625e0), SC_(0.14325672492868025087046123806824342703136113105287e2), + SC_(0.181158390045166015625e2), SC_(0.937735617160797119140625e0), SC_(0.12776994408705170294497229724623086805282427381906e2), + SC_(0.1826751708984375e2), SC_(-0.746025502681732177734375e0), SC_(0.15294680181863217643351199614623519336837101935148e2), + SC_(0.1826751708984375e2), SC_(-0.729045093059539794921875e0), SC_(0.15449996816318134429379707744699879178221731695988e2), + SC_(0.1826751708984375e2), SC_(-0.557931125164031982421875e0), SC_(0.16711225137527882111994431225484349414920827404575e2), + SC_(0.1826751708984375e2), SC_(-0.38366520404815673828125e0), SC_(0.17557986140719412110073486816905803540813830571612e2), + SC_(0.1826751708984375e2), SC_(0.26471889019012451171875e0), SC_(0.17934979435249067274995396347671578186369882165268e2), + SC_(0.1826751708984375e2), SC_(0.629447519779205322265625e0), SC_(0.16244572001238844765170304697384194165407574561166e2), + SC_(0.1826751708984375e2), SC_(0.670017302036285400390625e0), SC_(0.15943164568755228239946894179666815707263079411025e2), + SC_(0.1826751708984375e2), SC_(0.811583995819091796875e0), SC_(0.14628139102102744259739666593315074730653759163808e2), + SC_(0.1826751708984375e2), SC_(0.826751768589019775390625e0), SC_(0.14456489920621798386112303504456619040483195805351e2), + SC_(0.1826751708984375e2), SC_(0.937735617160797119140625e0), SC_(0.12901176802885551607449079455698545619295133053525e2), + SC_(0.193773555755615234375e2), SC_(-0.746025502681732177734375e0), SC_(0.16373768104669207594805580038875573404930513441141e2), + SC_(0.193773555755615234375e2), SC_(-0.729045093059539794921875e0), SC_(0.16530503377588252332123798771909333002264706286237e2), + SC_(0.193773555755615234375e2), SC_(-0.557931125164031982421875e0), SC_(0.17804058754070622422766997709671427593350718649892e2), + SC_(0.193773555755615234375e2), SC_(-0.38366520404815673828125e0), SC_(0.18659842238649258536607864613522185923147834958364e2), + SC_(0.193773555755615234375e2), SC_(0.26471889019012451171875e0), SC_(0.19041030605847353537553971598984547853104130787962e2), + SC_(0.193773555755615234375e2), SC_(0.629447519779205322265625e0), SC_(0.17332682733638471968076741364997786992867783129002e2), + SC_(0.193773555755615234375e2), SC_(0.670017302036285400390625e0), SC_(0.17028324148549023912783662691488402026075436758155e2), + SC_(0.193773555755615234375e2), SC_(0.811583995819091796875e0), SC_(0.15701406907247747111941107887807025988255322067759e2), + SC_(0.193773555755615234375e2), SC_(0.826751768589019775390625e0), SC_(0.15528332343584439448389189168804413412072962805104e2), + SC_(0.193773555755615234375e2), SC_(0.937735617160797119140625e0), SC_(0.13961657625936999843598239494906227678346385879793e2), + SC_(0.24750102996826171875e2), SC_(-0.804919183254241943359375e0), SC_(0.19973712815825299667336984155088357850125615023123e2), + SC_(0.24750102996826171875e2), SC_(-0.74602639675140380859375e0), SC_(0.20768004459970888039199267530797007460378708348059e2), + SC_(0.24750102996826171875e2), SC_(-0.72904598712921142578125e0), SC_(0.20975943494043643277033667107384491638216384996087e2), + SC_(0.24750102996826171875e2), SC_(-0.62323606014251708984375e0), SC_(0.22098443919543021942239317650015874567854619599202e2), + SC_(0.24750102996826171875e2), SC_(-0.5579319000244140625e0), SC_(0.22664947340796186155366996806574897452369784765661e2), + SC_(0.24750102996826171875e2), SC_(-0.44300353527069091796875e0), SC_(0.23469261598109129306359004629782265062848360423816e2), + SC_(0.24750102996826171875e2), SC_(-0.38366591930389404296875e0), SC_(0.23799328593005125768727498081978362209712153932061e2), + SC_(0.24750102996826171875e2), SC_(0.9376299381256103515625e-1), SC_(0.24694852720359920299551294559883862642318482599145e2), + SC_(0.24750102996826171875e2), SC_(0.944411754608154296875e-1), SC_(0.24694049235688264750968213166432298305126846672919e2), + SC_(0.24750102996826171875e2), SC_(0.264718532562255859375e0), SC_(0.24304478584680961005931801432386351667362783289287e2), + SC_(0.24750102996826171875e2), SC_(0.62944734096527099609375e0), SC_(0.22039935221994627954183192969119948491358660108522e2), + SC_(0.24750102996826171875e2), SC_(0.67001712322235107421875e0), SC_(0.21636296414446293970175857383590143009540439330899e2), + SC_(0.24750102996826171875e2), SC_(0.81158387660980224609375e0), SC_(0.19875804168183088026665735450886894189681201632558e2), + SC_(0.24750102996826171875e2), SC_(0.826751708984375e0), SC_(0.19646081172044826743084650552577425186190287709336e2), + SC_(0.24750102996826171875e2), SC_(0.91501367092132568359375e0), SC_(0.18067160258877176951344927132690170586626964142213e2), + SC_(0.24750102996826171875e2), SC_(0.92977702617645263671875e0), SC_(0.17747460257589178862266160366202249788012092338898e2), + SC_(0.24750102996826171875e2), SC_(0.93538987636566162109375e0), SC_(0.1761989043638227807923381411637723086292075460006e2), + SC_(0.24750102996826171875e2), SC_(0.93773555755615234375e0), SC_(0.17565482547753583589691333584786894138119947266515e2), + SC_(0.24750102996826171875e2), SC_(0.98576259613037109375e0), SC_(0.16235168852347324251833412843526594759633037668815e2), + SC_(0.24750102996826171875e2), SC_(0.99292266368865966796875e0), SC_(0.15968381270631338011523879835516013766575733453686e2), + SC_(0.637722015380859375e2), SC_(-0.804919183254241943359375e0), SC_(0.51735076982937951254171869082026686330395931657756e2), + SC_(0.637722015380859375e2), SC_(-0.74602639675140380859375e0), SC_(0.53735253525316134052564359957264589213799006829359e2), + SC_(0.637722015380859375e2), SC_(-0.72904598712921142578125e0), SC_(0.54259002788506760633617386042907016100264309943144e2), + SC_(0.637722015380859375e2), SC_(-0.62323606014251708984375e0), SC_(0.57087088411384188443059036724130943024517238989915e2), + SC_(0.637722015380859375e2), SC_(-0.5579319000244140625e0), SC_(0.58514821144592672620816994129808760700883696698888e2), + SC_(0.637722015380859375e2), SC_(-0.44300353527069091796875e0), SC_(0.60542369689374696573684154327407535366063815034119e2), + SC_(0.637722015380859375e2), SC_(-0.38366591930389404296875e0), SC_(0.61374566177446927418580325097452063248689623107673e2), + SC_(0.637722015380859375e2), SC_(0.9376299381256103515625e-1), SC_(0.63632855404412900606970850559558711372112158070995e2), + SC_(0.637722015380859375e2), SC_(0.944411754608154296875e-1), SC_(0.63630828959803323604085377439494768567131998295705e2), + SC_(0.637722015380859375e2), SC_(0.264718532562255859375e0), SC_(0.62648357705824211187974249016595230244678166587558e2), + SC_(0.637722015380859375e2), SC_(0.62944734096527099609375e0), SC_(0.56939648192191960771973930506667154426504267417061e2), + SC_(0.637722015380859375e2), SC_(0.67001712322235107421875e0), SC_(0.55922578474864948169973560210668458622933042213651e2), + SC_(0.637722015380859375e2), SC_(0.81158387660980224609375e0), SC_(0.51488577520720272133497076956397448336502677313913e2), + SC_(0.637722015380859375e2), SC_(0.826751708984375e0), SC_(0.50910264549849546254066916309118645291651994625069e2), + SC_(0.637722015380859375e2), SC_(0.91501367092132568359375e0), SC_(0.46937509984942940045851986231767768021174403986936e2), + SC_(0.637722015380859375e2), SC_(0.92977702617645263671875e0), SC_(0.46133618758338888010268807150354721574616537539013e2), + SC_(0.637722015380859375e2), SC_(0.93538987636566162109375e0), SC_(0.45812898641153494108307738842855998347397656315438e2), + SC_(0.637722015380859375e2), SC_(0.93773555755615234375e0), SC_(0.45676123380369536364985025253679313558219859857273e2), + SC_(0.637722015380859375e2), SC_(0.98576259613037109375e0), SC_(0.42334171739294930109632841225610524120215098033768e2), + SC_(0.637722015380859375e2), SC_(0.99292266368865966796875e0), SC_(0.41664672795248799701393038401300753761810137139415e2), + SC_(0.1252804412841796875e3), SC_(-0.804919183254241943359375e0), SC_(0.10137468822760781607784774270981389840101266483832e3), + SC_(0.1252804412841796875e3), SC_(-0.74602639675140380859375e0), SC_(0.10534954334948361003000417646652824404574675668826e3), + SC_(0.1252804412841796875e3), SC_(-0.72904598712921142578125e0), SC_(0.10639016759084929339444178511460542264340872987764e3), + SC_(0.1252804412841796875e3), SC_(-0.62323606014251708984375e0), SC_(0.11200795729026387473537304781098683277197588766149e3), + SC_(0.1252804412841796875e3), SC_(-0.5579319000244140625e0), SC_(0.11484331104327320120318357756153273925013856305548e3), + SC_(0.1252804412841796875e3), SC_(-0.44300353527069091796875e0), SC_(0.11886909510926264047059962380263040095638955867975e3), + SC_(0.1252804412841796875e3), SC_(-0.38366591930389404296875e0), SC_(0.12052122010812007576222077355913806951856516620111e3), + SC_(0.1252804412841796875e3), SC_(0.9376299381256103515625e-1), SC_(0.12500387135949011803045698967769359044120246547929e3), + SC_(0.1252804412841796875e3), SC_(0.944411754608154296875e-1), SC_(0.12499984931060490591196138981515034443752207624849e3), + SC_(0.1252804412841796875e3), SC_(0.264718532562255859375e0), SC_(0.12304977687189097618316695768097733194153360043434e3), + SC_(0.1252804412841796875e3), SC_(0.62944734096527099609375e0), SC_(0.11171512713122776131362764054699403290641206227743e3), + SC_(0.1252804412841796875e3), SC_(0.67001712322235107421875e0), SC_(0.10969498814359799656230657020295638012242837420475e3), + SC_(0.1252804412841796875e3), SC_(0.81158387660980224609375e0), SC_(0.10088474339952115871348342782761419290971427670271e3), + SC_(0.1252804412841796875e3), SC_(0.826751708984375e0), SC_(0.99735201367471668012729563209452870009080433897514e2), + SC_(0.1252804412841796875e3), SC_(0.91501367092132568359375e0), SC_(0.9183483821328090539030255660612587397255470446336e2), + SC_(0.1252804412841796875e3), SC_(0.92977702617645263671875e0), SC_(0.90235313741876110793793852044195888545454411231332e2), + SC_(0.1252804412841796875e3), SC_(0.93538987636566162109375e0), SC_(0.89597070499289576537977775936679148370391280099975e2), + SC_(0.1252804412841796875e3), SC_(0.93773555755615234375e0), SC_(0.89324865581406130469577188264349272423780191543836e2), + SC_(0.1252804412841796875e3), SC_(0.98576259613037109375e0), SC_(0.82669810066174027119944981658463812969668940194645e2), + SC_(0.1252804412841796875e3), SC_(0.99292266368865966796875e0), SC_(0.81335336040403656795313736128885158841116166974535e2), + SC_(0.25554705810546875e3), SC_(-0.804919183254241943359375e0), SC_(0.20700764550973680328414434800314432777055331427509e3), + SC_(0.25554705810546875e3), SC_(-0.74602639675140380859375e0), SC_(0.21507675778547769857538831564203470809107041641983e3), + SC_(0.25554705810546875e3), SC_(-0.72904598712921142578125e0), SC_(0.21718939686269735659654564097856865186822722458893e3), + SC_(0.25554705810546875e3), SC_(-0.62323606014251708984375e0), SC_(0.22859526280607275338353573784442332068563806082921e3), + SC_(0.25554705810546875e3), SC_(-0.5579319000244140625e0), SC_(0.23435239148172642455597581779392343214733312300889e3), + SC_(0.25554705810546875e3), SC_(-0.44300353527069091796875e0), SC_(0.24252714708405922784431827584940960429251369448148e3), + SC_(0.25554705810546875e3), SC_(-0.38366591930389404296875e0), SC_(0.24588210249372783105511815543504926950563073881809e3), + SC_(0.25554705810546875e3), SC_(0.9376299381256103515625e-1), SC_(0.25498538673690232815276745549123439517935261161815e3), + SC_(0.25554705810546875e3), SC_(0.944411754608154296875e-1), SC_(0.25497721858372113341055046559555104133881772296172e3), + SC_(0.25554705810546875e3), SC_(0.264718532562255859375e0), SC_(0.25101697810342330109978559528463285788854960697461e3), + SC_(0.25554705810546875e3), SC_(0.62944734096527099609375e0), SC_(0.22800069422528238571057630900516236406892483089531e3), + SC_(0.25554705810546875e3), SC_(0.67001712322235107421875e0), SC_(0.22389905343162223015078630824991304867795682926707e3), + SC_(0.25554705810546875e3), SC_(0.81158387660980224609375e0), SC_(0.20601309721659152994566457489652136325089156338786e3), + SC_(0.25554705810546875e3), SC_(0.826751708984375e0), SC_(0.20367967493557321005729149965570117740057541402533e3), + SC_(0.25554705810546875e3), SC_(0.91501367092132568359375e0), SC_(0.18764538276020807800382713164047910157306345187704e3), + SC_(0.25554705810546875e3), SC_(0.92977702617645263671875e0), SC_(0.1843996681133032922634723517455258521499005783416e3), + SC_(0.25554705810546875e3), SC_(0.93538987636566162109375e0), SC_(0.1831046323187958486393495047159210748715027471244e3), + SC_(0.25554705810546875e3), SC_(0.93773555755615234375e0), SC_(0.1825523244747659902152705106996228088807575562519e3), + SC_(0.25554705810546875e3), SC_(0.98576259613037109375e0), SC_(0.16905218202575964307858592053003848753493846326679e3), + SC_(0.25554705810546875e3), SC_(0.99292266368865966796875e0), SC_(0.166346118226110245517811474013176433963082627576e3), + SC_(0.503011474609375e3), SC_(-0.804919183254241943359375e0), SC_(0.4073596809171988389742398150263813958066525852733e3), + SC_(0.503011474609375e3), SC_(-0.74602639675140380859375e0), SC_(0.42326320799414536197030693961463823357039321817358e3), + SC_(0.503011474609375e3), SC_(-0.72904598712921142578125e0), SC_(0.42742682818966336795606721796292568150309618969066e3), + SC_(0.503011474609375e3), SC_(-0.62323606014251708984375e0), SC_(0.44990438001330262518694919031753384020576625696966e3), + SC_(0.503011474609375e3), SC_(-0.5579319000244140625e0), SC_(0.46124922502921161009662440273528750616727045937458e3), + SC_(0.503011474609375e3), SC_(-0.44300353527069091796875e0), SC_(0.47735745567472002811275473463900479664220214084528e3), + SC_(0.503011474609375e3), SC_(-0.38366591930389404296875e0), SC_(0.48396812043024017707709837542494532143253698991882e3), + SC_(0.503011474609375e3), SC_(0.9376299381256103515625e-1), SC_(0.50190480963296507338418291149366181766024849187853e3), + SC_(0.503011474609375e3), SC_(0.944411754608154296875e-1), SC_(0.50188871584285852712073221168824514015029692480846e3), + SC_(0.503011474609375e3), SC_(0.264718532562255859375e0), SC_(0.49408574205216958037913559664441409041763723627144e3), + SC_(0.503011474609375e3), SC_(0.62944734096527099609375e0), SC_(0.448732712753173223917291380485323902266910100027e3), + SC_(0.503011474609375e3), SC_(0.67001712322235107421875e0), SC_(0.44064980515604668179870304048719969769816683101636e3), + SC_(0.503011474609375e3), SC_(0.81158387660980224609375e0), SC_(0.40539941613509322668871139516155737996637247323477e3), + SC_(0.503011474609375e3), SC_(0.826751708984375e0), SC_(0.40080012733999218534312909286248833728961899399719e3), + SC_(0.503011474609375e3), SC_(0.91501367092132568359375e0), SC_(0.36919171399237342314526184351256549304483460904576e3), + SC_(0.503011474609375e3), SC_(0.92977702617645263671875e0), SC_(0.36279237787744593399714035595038205138016721213798e3), + SC_(0.503011474609375e3), SC_(0.93538987636566162109375e0), SC_(0.36023892853829175638985926444127462444440080265681e3), + SC_(0.503011474609375e3), SC_(0.93773555755615234375e0), SC_(0.35914990886887487679557974420087323548020127919695e3), + SC_(0.503011474609375e3), SC_(0.98576259613037109375e0), SC_(0.33252547245143178927979205996695688705563461577588e3), + SC_(0.503011474609375e3), SC_(0.99292266368865966796875e0), SC_(0.32718692844071197014439649471431843150228446330379e3), + SC_(0.10074598388671875e4), SC_(-0.804919183254241943359375e0), SC_(0.81566217335361231611771646986187800572268739295575e3), + SC_(0.10074598388671875e4), SC_(-0.74602639675140380859375e0), SC_(0.84755287064438863615038784712657137407744566356707e3), + SC_(0.10074598388671875e4), SC_(-0.72904598712921142578125e0), SC_(0.85590189104276483616202632098287025738931943507153e3), + SC_(0.10074598388671875e4), SC_(-0.62323606014251708984375e0), SC_(0.9009738212363659705854642096463530651141689117269e3), + SC_(0.10074598388671875e4), SC_(-0.5579319000244140625e0), SC_(0.92372203670774325404806275709264270484304517663929e3), + SC_(0.10074598388671875e4), SC_(-0.44300353527069091796875e0), SC_(0.95602114692228459835045237318476147078694497472822e3), + SC_(0.10074598388671875e4), SC_(-0.38366591930389404296875e0), SC_(0.96927625305559748266490795989045893214495805831554e3), + SC_(0.10074598388671875e4), SC_(0.9376299381256103515625e-1), SC_(0.10052408954500277585485462407617932594289289210602e4), + SC_(0.10074598388671875e4), SC_(0.944411754608154296875e-1), SC_(0.10052086262210379665209822645440559289291237665647e4), + SC_(0.10074598388671875e4), SC_(0.264718532562255859375e0), SC_(0.98956304231616558867754941531972183396056332288818e3), + SC_(0.10074598388671875e4), SC_(0.62944734096527099609375e0), SC_(0.89862442644009820675218558218153173632055069943683e3), + SC_(0.10074598388671875e4), SC_(0.67001712322235107421875e0), SC_(0.88241671832232838738799982334634993277048716392487e3), + SC_(0.10074598388671875e4), SC_(0.81158387660980224609375e0), SC_(0.81173128112196665137058131884505478065505214589458e3), + SC_(0.10074598388671875e4), SC_(0.826751708984375e0), SC_(0.80250834127587356001580304856418261116625810606362e3), + SC_(0.10074598388671875e4), SC_(0.91501367092132568359375e0), SC_(0.73912196799060491702381369566485537415592290789722e3), + SC_(0.10074598388671875e4), SC_(0.92977702617645263671875e0), SC_(0.7262884386240235721342337367344044620971138470138e3), + SC_(0.10074598388671875e4), SC_(0.93538987636566162109375e0), SC_(0.72116757185358740018078031894015653763422120624137e3), + SC_(0.10074598388671875e4), SC_(0.93773555755615234375e0), SC_(0.71898356440546660369364312811873716877046903540745e3), + SC_(0.10074598388671875e4), SC_(0.98576259613037109375e0), SC_(0.66558630336818747011593267003329852836650815741705e3), + SC_(0.10074598388671875e4), SC_(0.99292266368865966796875e0), SC_(0.6548786829121203110560807170365229948244134922981e3), + SC_(0.1185395751953125e4), SC_(-0.804919183254241943359375e0), SC_(0.95992720290264897479760554571647114770157610887996e3), + SC_(0.1185395751953125e4), SC_(-0.74602639675140380859375e0), SC_(0.99741366529362017349163653479322848619622124868772e3), + SC_(0.1185395751953125e4), SC_(-0.72904598712921142578125e0), SC_(0.10072278878934483167286843735137660835902486784055e4), + SC_(0.1185395751953125e4), SC_(-0.62323606014251708984375e0), SC_(0.10602110806127832608392589101187996342688647189112e4), + SC_(0.1185395751953125e4), SC_(-0.5579319000244140625e0), SC_(0.10869529954610434278852140581154818972542686423743e4), + SC_(0.1185395751953125e4), SC_(-0.44300353527069091796875e0), SC_(0.11249233882184205470868187837372292890877647671181e4), + SC_(0.1185395751953125e4), SC_(-0.38366591930389404296875e0), SC_(0.11405061649275106998721240053724233425466223964298e4), + SC_(0.1185395751953125e4), SC_(0.9376299381256103515625e-1), SC_(0.11827870772689532014486419251476519345293661688085e4), + SC_(0.1185395751953125e4), SC_(0.944411754608154296875e-1), SC_(0.11827491403552705968358829702474865775810482378628e4), + SC_(0.1185395751953125e4), SC_(0.264718532562255859375e0), SC_(0.11643556929058415420471543503560945498245581125436e4), + SC_(0.1185395751953125e4), SC_(0.62944734096527099609375e0), SC_(0.10574492529652112224851625390587579547328457881061e4), + SC_(0.1185395751953125e4), SC_(0.67001712322235107421875e0), SC_(0.1038396462932344155293121667046538419874167990145e4), + SC_(0.1185395751953125e4), SC_(0.81158387660980224609375e0), SC_(0.9553066699471665679840089770219957164232252629554e3), + SC_(0.1185395751953125e4), SC_(0.826751708984375e0), SC_(0.94446573985220084327197598058015000573173775032994e3), + SC_(0.1185395751953125e4), SC_(0.91501367092132568359375e0), SC_(0.86996356635663675306873109547180307652983494815843e3), + SC_(0.1185395751953125e4), SC_(0.92977702617645263671875e0), SC_(0.85488052815230820219522803855058047921692647892349e3), + SC_(0.1185395751953125e4), SC_(0.93538987636566162109375e0), SC_(0.84886217610355647741057825617131638665389927335333e3), + SC_(0.1185395751953125e4), SC_(0.93773555755615234375e0), SC_(0.84629542044995161715099588574641450818752524118888e3), + SC_(0.1185395751953125e4), SC_(0.98576259613037109375e0), SC_(0.78354531056875687291420826162420650224843893529921e3), + SC_(0.1185395751953125e4), SC_(0.99292266368865966796875e0), SC_(0.77096378731739644110407751882818742444499646261653e3) + }; +#undef SC_ + diff --git a/test/ellint_e_data.ipp b/test/ellint_e_data.ipp new file mode 100644 index 000000000..848a34be4 --- /dev/null +++ b/test/ellint_e_data.ipp @@ -0,0 +1,114 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Each row of test data contains in order: +// +// k, E(k) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 100> ellint_e_data = { + SC_(-0.990433037281036376953125e0), SC_(0.10274527688571687030049782227296053357094496206279e1), + SC_(-0.936334311962127685546875e0), SC_(0.11232874555917022066938321555637623562213676975972e1), + SC_(-0.931107819080352783203125e0), SC_(0.1130760221755419903369153157619439589360779303926e1), + SC_(-0.928576648235321044921875e0), SC_(0.11343097282371636644057123410674810478126636794066e1), + SC_(-0.92711746692657470703125e0), SC_(0.11363362574688624051162518398981635242155496915255e1), + SC_(-0.907657206058502197265625e0), SC_(0.11621185270599645325148449388373607697900140479452e1), + SC_(-0.89756715297698974609375e0), SC_(0.11746803765109846934010357339330910078574216811115e1), + SC_(-0.80573642253875732421875e0), SC_(0.12711544492641534140326897830960020400731161482408e1), + SC_(-0.804919183254241943359375e0), SC_(0.1271899578518333585916968732627512791380932403316e1), + SC_(-0.780276477336883544921875e0), SC_(0.12936183519259955902237796585053994588791953787341e1), + SC_(-0.775070965290069580078125e0), SC_(0.12980290901572191577411456044089492043970943779076e1), + SC_(-0.7496345043182373046875e0), SC_(0.13187607273206970520631617642065752154074679201729e1), + SC_(-0.74820673465728759765625e0), SC_(0.13198856849340247002745787630036800286336929689325e1), + SC_(-0.74602639675140380859375e0), SC_(0.13215959480936459650266993732312887701493706168114e1), + SC_(-0.72904598712921142578125e0), SC_(0.1334606672267782799453143920126631207219848911468e1), + SC_(-0.7162272930145263671875e0), SC_(0.13440793050791416705713681443513787752467694981452e1), + SC_(-0.701772034168243408203125e0), SC_(0.13544180205342472921449637366285993011101451511219e1), + SC_(-0.68477380275726318359375e0), SC_(0.13661308406125643621284019270477708148951227020526e1), + SC_(-0.657626628875732421875e0), SC_(0.13838947645626975911149829417421592164301145093627e1), + SC_(-0.652269661426544189453125e0), SC_(0.13872692599655636614951215534059306447757898114989e1), + SC_(-0.6262547969818115234375e0), SC_(0.14030728449607783731169275509403934977874920947839e1), + SC_(-0.62323606014251708984375e0), SC_(0.14048456682760981684618618684460963872624120364616e1), + SC_(-0.57958185672760009765625e0), SC_(0.14291386904685383227954283815576245068501134204508e1), + SC_(-0.576151371002197265625e0), SC_(0.14309448152636963724388781094697116200713399276732e1), + SC_(-0.5579319000244140625e0), SC_(0.14402965087704791609397947280292073414645780530405e1), + SC_(-0.446154057979583740234375e0), SC_(0.14894386503626442042107428737827539093660806612699e1), + SC_(-0.44300353527069091796875e0), SC_(0.14906320545924202935802686800501318065294882015735e1), + SC_(-0.40594112873077392578125e0), SC_(0.15039335802932226988591218103108193186540888213994e1), + SC_(-0.396173775196075439453125e0), SC_(0.15072169743011592499372913974729141564215181659934e1), + SC_(-0.38366591930389404296875e0), SC_(0.15112892448422190697630083347423467639448624581727e1), + SC_(-0.36689913272857666015625e0), SC_(0.15165180033802033267632053479981021035471425681416e1), + SC_(-0.365801036357879638671875e0), SC_(0.15168513413633160947387236074965552423019640205414e1), + SC_(-0.277411997318267822265625e0), SC_(0.15401245425176709136660196900048700278424091275112e1), + SC_(-0.236883103847503662109375e0), SC_(0.15485231276601733576918931368003657825692622988276e1), + SC_(-0.215545952320098876953125e0), SC_(0.15523894121876553934587790103948024781080753117537e1), + SC_(-0.202522933483123779296875e0), SC_(0.15545635291592032109785456524323662491832287557881e1), + SC_(-0.18253767490386962890625e0), SC_(0.15576286893796261035306290689920363346745725969978e1), + SC_(-0.156477451324462890625e0), SC_(0.15611364139446355493431072334668884516455428910749e1), + SC_(-0.1558246612548828125e0), SC_(0.15612172160025555618286865486857507482242942668515e1), + SC_(-0.12251126766204833984375e0), SC_(0.15648856105816674567926606395168937481071020785374e1), + SC_(-0.1088275909423828125e0), SC_(0.15661350376732836367309274463594953937245200605844e1), + SC_(-0.8402168750762939453125e-1), SC_(0.15680203305860144668144643526811660961420870159842e1), + SC_(-0.5048263072967529296875e-1), SC_(0.15697950560238758069422088665702687900822920595852e1), + SC_(-0.29248714447021484375e-1), SC_(0.15704603238122883636275639829068215175843565484093e1), + SC_(-0.2486217021942138671875e-1), SC_(0.1570553560549795220596952208506368318845323442966e1), + SC_(-0.2047121524810791015625e-1), SC_(0.15706317452006442392207295085961102343692070947481e1), + SC_(-0.18821895122528076171875e-1), SC_(0.15706571985088185541190068658162634466459956376283e1), + SC_(0.73254108428955078125e-2), SC_(0.15707752537045378829148682574129984681356739471373e1), + SC_(0.9376299381256103515625e-1), SC_(0.15673382012803800695565201533706558176677595081402e1), + SC_(0.944411754608154296875e-1), SC_(0.15672879111272468454088900653008917791981439593238e1), + SC_(0.264718532562255859375e0), SC_(0.15429050287765040115345161487328955754762740575513e1), + SC_(0.27952671051025390625e0), SC_(0.15396478942459482760618960796407428547408640525839e1), + SC_(0.29262602329254150390625e0), SC_(0.15366093920760526747388381843200711024138982306603e1), + SC_(0.3109557628631591796875e0), SC_(0.15321071618558340305908384979951601020818799999842e1), + SC_(0.31148135662078857421875e0), SC_(0.15319737203884180398267043979026904916868658518393e1), + SC_(0.32721102237701416015625e0), SC_(0.1527867114331003738198228458599913043176805971218e1), + SC_(0.3574702739715576171875e0), SC_(0.15193440688380299383044814920714973708033404406654e1), + SC_(0.362719058990478515625e0), SC_(0.15177809660808721467844113827968123756890771957761e1), + SC_(0.3896572589874267578125e0), SC_(0.15093570468318824817504413386396057198219992161732e1), + SC_(0.4120922088623046875e0), SC_(0.15018188427341099768691902236893549315641407909401e1), + SC_(0.41872966289520263671875e0), SC_(0.14994958178213154496366968552961386017760898588045e1), + SC_(0.45167791843414306640625e0), SC_(0.1487322085908655313535535255202869925685698085035e1), + SC_(0.48129451274871826171875e0), SC_(0.14754407459744073247384176419011374260929941397226e1), + SC_(0.4862649440765380859375e0), SC_(0.14733570928853164419583523432188100088746641413847e1), + SC_(0.50937330722808837890625e0), SC_(0.14633222267462579060234013375472616462719440305596e1), + SC_(0.5154802799224853515625e0), SC_(0.14605730543776299802897695844262830217129367088168e1), + SC_(0.52750003337860107421875e0), SC_(0.1455040905739579018637680781037806414611373457245e1), + SC_(0.53103363513946533203125e0), SC_(0.14533836180900849164859243315111429017381139244939e1), + SC_(0.58441460132598876953125e0), SC_(0.14265695055008370758871995090190851074198707889523e1), + SC_(0.5879499912261962890625e0), SC_(0.14246715204117826383644822612160764733188324494824e1), + SC_(0.59039986133575439453125e0), SC_(0.14233470653300894642788935610227647487095507501819e1), + SC_(0.59455978870391845703125e0), SC_(0.14210806804871026734537311084007732025147240364441e1), + SC_(0.59585726261138916015625e0), SC_(0.14203692855345104085630580991694310940176283484347e1), + SC_(0.5962116718292236328125e0), SC_(0.14201745910377376893163001298577620388569425640087e1), + SC_(0.6005609035491943359375e0), SC_(0.14177721978271857966949913233824083454479033587509e1), + SC_(0.6150619983673095703125e0), SC_(0.1409584186264459097822607166118300162769330850531e1), + SC_(0.62944734096527099609375e0), SC_(0.14011843899700989964492170135501929645905818746914e1), + SC_(0.64380657672882080078125e0), SC_(0.13925155171987190379716348493447778489398983557681e1), + SC_(0.6469156742095947265625e0), SC_(0.13906001623565653310360026300062173208737677732474e1), + SC_(0.67001712322235107421875e0), SC_(0.13759265375091920908763740804480465836032745124162e1), + SC_(0.6982586383819580078125e0), SC_(0.13568776608794218001220481427238400798591422244367e1), + SC_(0.74485766887664794921875e0), SC_(0.13225089163569380724816605958889295619432742743828e1), + SC_(0.75686132907867431640625e0), SC_(0.13130049536402767623871717650724612640189448665164e1), + SC_(0.81158387660980224609375e0), SC_(0.1265774005474254141411822958784348996686269275959e1), + SC_(0.826751708984375e0), SC_(0.1251401815196169298547115798872087290243528044558e1), + SC_(0.83147108554840087890625e0), SC_(0.12468018231406093242228210016848902253352539970597e1), + SC_(0.84174954891204833984375e0), SC_(0.12365605223473625325793146444569526624443067779814e1), + SC_(0.8679864406585693359375e0), SC_(0.12089081947735379320176271312129936213684657310011e1), + SC_(0.90044414997100830078125e0), SC_(0.11711493603723543295821235205304820794673798105369e1), + SC_(0.91433393955230712890625e0), SC_(0.11535184098186861192678956506006329721663192849427e1), + SC_(0.91501367092132568359375e0), SC_(0.11526291690338582866360141839353650400854743647163e1), + SC_(0.918984889984130859375e0), SC_(0.11473810486945145917917969281137061723789053926309e1), + SC_(0.92977702617645263671875e0), SC_(0.11326318918571500732674050143237850082646730427556e1), + SC_(0.93538987636566162109375e0), SC_(0.11246526120138518224375085002257139975074424198895e1), + SC_(0.93773555755615234375e0), SC_(0.11212495302257932905970525402254900901444230096575e1), + SC_(0.94118559360504150390625e0), SC_(0.11161664223439311396943776225269812587817500317889e1), + SC_(0.96221935749053955078125e0), SC_(0.10828018699366994143027254777963854661530573064246e1), + SC_(0.98576259613037109375e0), SC_(0.10380503716235214587344268369403753352254592216066e1), + SC_(0.9881370067596435546875e0), SC_(0.10327762472475272053177375153237179387280796303267e1), + SC_(0.99292266368865966796875e0), SC_(0.10213677605130466359178501196768639821158116338631e1) + }; +#undef SC_ + diff --git a/test/ellint_f_data.ipp b/test/ellint_f_data.ipp new file mode 100644 index 000000000..0482cd10a --- /dev/null +++ b/test/ellint_f_data.ipp @@ -0,0 +1,626 @@ +// Copyright (c) 2006 John Maddock +// +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// There are three values in each row: +// +// phi, k, ellint_1(k, phi) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 610> ellint_f_data = { + SC_(0.177219114266335964202880859375e-2), SC_(0.12698681652545928955078125e0), SC_(0.17721911576221833285284471505772299979929420100157e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.135477006435394287109375e0), SC_(0.17721911596893097495385621130075639520810631802367e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.22103404998779296875e0), SC_(0.17721911879842626333735727252300568988042608181058e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.308167040348052978515625e0), SC_(0.17721912307586304284414392153484736630244171106967e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.6323592662811279296875e0), SC_(0.17721915136072145749706721763844561838990574996748e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.814723670482635498046875e0), SC_(0.17721917584088468746420484903332375635064689539385e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.835008561611175537109375e0), SC_(0.17721917894520936923412246849940510596766888342397e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.905791938304901123046875e0), SC_(0.17721919037560789892218093103766859258846695998999e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.9133758544921875e0), SC_(0.17721919165542367899383364723376572314588337429883e-2), + SC_(0.177219114266335964202880859375e-2), SC_(0.968867778778076171875e0), SC_(0.1772192013446002825503764323931321827613955432354e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.12698681652545928955078125e0), SC_(0.22177286739245139979235205992077921703857874992614e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.135477006435394287109375e0), SC_(0.22177286779754970704335950293621400375492832466137e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.22103404998779296875e0), SC_(0.22177287334256025917867525959622978930360537074924e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.308167040348052978515625e0), SC_(0.22177288172512715350908153180610533224553721306023e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.6323592662811279296875e0), SC_(0.2217729371554693319729054703026208450026061763822e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.814723670482635498046875e0), SC_(0.22177298512970423745998954480900177381552708544037e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.835008561611175537109375e0), SC_(0.2217729912133089721595554486266261343813239076347e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.905791938304901123046875e0), SC_(0.22177301361368343651109035690490962300073942661987e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.9133758544921875e0), SC_(0.22177301612176360421071258583990800763547750726474e-2), + SC_(0.22177286446094512939453125e-2), SC_(0.968867778778076171875e0), SC_(0.22177303510983544844756451225638983381366612239496e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.12698681652545928955078125e0), SC_(0.74445011006718641819708303378218126160875363196343e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.135477006435394287109375e0), SC_(0.74445012538997345743072973657345052421185812852883e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.22103404998779296875e0), SC_(0.7444503351293811483247033675758072401037344482302e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.308167040348052978515625e0), SC_(0.74445065219959407401467925377833815036903664230965e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.6323592662811279296875e0), SC_(0.74445274886650082568519006341784743843976685124848e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.814723670482635498046875e0), SC_(0.74445456352769560796450156151400127382998272645198e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.835008561611175537109375e0), SC_(0.74445479364613446978911973710885424587373960669503e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.905791938304901123046875e0), SC_(0.74445564096573887453994590323758448047874147238395e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.9133758544921875e0), SC_(0.74445573583701508518948039844922043785925055729088e-2), + SC_(0.7444499991834163665771484375e-2), SC_(0.968867778778076171875e0), SC_(0.74445645408656423225725685299458948993261862803123e-2), + SC_(0.1433600485324859619140625e-1), SC_(0.12698681652545928955078125e0), SC_(0.14336012771572004313303282953555702877340432667875e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.135477006435394287109375e0), SC_(0.14336013865789252161967302705927923090033123892839e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.22103404998779296875e0), SC_(0.14336028843546510307044909433889108803989992630717e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.308167040348052978515625e0), SC_(0.14336051486049934782010291664500194812313169536713e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.6323592662811279296875e0), SC_(0.14336201216019080237489913190282411526700579073185e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.814723670482635498046875e0), SC_(0.14336330811999887083609618534824546245882513068397e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.835008561611175537109375e0), SC_(0.14336347246485787781200874226852611208775882622848e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.905791938304901123046875e0), SC_(0.14336407760582576201557263371323141017452648028165e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.9133758544921875e0), SC_(0.14336414536187317685947794701801663975831519240267e-1), + SC_(0.1433600485324859619140625e-1), SC_(0.968867778778076171875e0), SC_(0.14336465833209128166372255292238755432460966798543e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.12698681652545928955078125e0), SC_(0.17609184380978861185686844051402854987830396635258e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.135477006435394287109375e0), SC_(0.17609186408789500419846933977020874867517546176364e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.22103404998779296875e0), SC_(0.1760921416571103349085943082737303345872943430306e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.308167040348052978515625e0), SC_(0.17609256127163964831115570232150804486066285764182e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.6323592662811279296875e0), SC_(0.17609533613743185319361344589522300705915673688072e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.814723670482635498046875e0), SC_(0.17609773793502177357795159012740745279433408620657e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.835008561611175537109375e0), SC_(0.17609804251901222009248779176903833413486036667612e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.905791938304901123046875e0), SC_(0.17609916404852657704429322263138229104993266575624e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.9133758544921875e0), SC_(0.1760992896240552553398130726999861697860870407761e-1), + SC_(0.1760916970670223236083984375e-1), SC_(0.968867778778076171875e0), SC_(0.17610024034162638690605314405325566252936262309737e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.12698681652545928955078125e0), SC_(0.61527743617821017309837317251112211820225287909855e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.135477006435394287109375e0), SC_(0.61527830061250812048027946124763113656851093792434e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.22103404998779296875e0), SC_(0.61529013370063563692372946253072143453390904798089e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.308167040348052978515625e0), SC_(0.61530802448197340746490712692471232101050993961418e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.6323592662811279296875e0), SC_(0.61542639923962778105311852278000229689228218960744e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.814723670482635498046875e0), SC_(0.61552895025692965307933631422367268195916509703533e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.835008561611175537109375e0), SC_(0.61554196132063228221650243038365314737062757534577e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.905791938304901123046875e0), SC_(0.61558988200653669357386111420505273705513915221039e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.9133758544921875e0), SC_(0.61559524874653086436154791531898624131363535519786e-1), + SC_(0.6152711808681488037109375e-1), SC_(0.968867778778076171875e0), SC_(0.61563588723439851846457601010368343188236507772324e-1), + SC_(0.11958599090576171875e0), SC_(0.12698681652545928955078125e0), SC_(0.11959057453624120334328464580296093852234979832319e0), + SC_(0.11958599090576171875e0), SC_(0.135477006435394287109375e0), SC_(0.11959120801241224829404843422425331039825816399323e0), + SC_(0.11958599090576171875e0), SC_(0.22103404998779296875e0), SC_(0.11959988089267249852525096379530849147372849485837e0), + SC_(0.11958599090576171875e0), SC_(0.308167040348052978515625e0), SC_(0.11961299840115507344869578732891575108359266237168e0), + SC_(0.11958599090576171875e0), SC_(0.6323592662811279296875e0), SC_(0.11969993471932342512901186119137938273010491343839e0), + SC_(0.11958599090576171875e0), SC_(0.814723670482635498046875e0), SC_(0.11977545304297570964095700217118618012823329027572e0), + SC_(0.11958599090576171875e0), SC_(0.835008561611175537109375e0), SC_(0.11978504790549786604035595742049176901340492369488e0), + SC_(0.11958599090576171875e0), SC_(0.905791938304901123046875e0), SC_(0.11982041286438468953360393124738982966366389995088e0), + SC_(0.11958599090576171875e0), SC_(0.9133758544921875e0), SC_(0.11982437604947070134783045506622451496127174214852e0), + SC_(0.11958599090576171875e0), SC_(0.968867778778076171875e0), SC_(0.11985440336661855301549423118012820509315718117197e0), + SC_(0.15262925624847412109375e0), SC_(0.12698681652545928955078125e0), SC_(0.15263876949340227518206289717013303150106829870099e0), + SC_(0.15262925624847412109375e0), SC_(0.135477006435394287109375e0), SC_(0.1526400843588230155682366958717934905571237493997e0), + SC_(0.15262925624847412109375e0), SC_(0.22103404998779296875e0), SC_(0.15265808845688818722969160139227782294722571051529e0), + SC_(0.15262925624847412109375e0), SC_(0.308167040348052978515625e0), SC_(0.15268532756614555185951232940143121587973495430525e0), + SC_(0.15262925624847412109375e0), SC_(0.6323592662811279296875e0), SC_(0.15286611056971117187897855912072736469367681312174e0), + SC_(0.15262925624847412109375e0), SC_(0.814723670482635498046875e0), SC_(0.15302351281614507246145987065383207949898475657898e0), + SC_(0.15262925624847412109375e0), SC_(0.835008561611175537109375e0), SC_(0.1530435356029459943950906219285804393294788945235e0), + SC_(0.15262925624847412109375e0), SC_(0.905791938304901123046875e0), SC_(0.15311738352257616185860950883692089730569486492446e0), + SC_(0.15262925624847412109375e0), SC_(0.9133758544921875e0), SC_(0.15312566397501259415031965429740682988005856648126e0), + SC_(0.15262925624847412109375e0), SC_(0.968867778778076171875e0), SC_(0.15318843193739198996381468724623288934348602518129e0), + SC_(0.408089816570281982421875e0), SC_(0.12698681652545928955078125e0), SC_(0.40826668831091663626441209189877606742300982945973e0), + SC_(0.408089816570281982421875e0), SC_(0.135477006435394287109375e0), SC_(0.40829116199484250382288115943353006881004084526972e0), + SC_(0.408089816570281982421875e0), SC_(0.22103404998779296875e0), SC_(0.40862694825468660603335613858853155144356700548887e0), + SC_(0.408089816570281982421875e0), SC_(0.308167040348052978515625e0), SC_(0.40913737969817628320962246135961573151967272603518e0), + SC_(0.408089816570281982421875e0), SC_(0.6323592662811279296875e0), SC_(0.41260107543378269414044566586047919507096924341891e0), + SC_(0.408089816570281982421875e0), SC_(0.814723670482635498046875e0), SC_(0.41573068432927359032136530554842076369488053445457e0), + SC_(0.408089816570281982421875e0), SC_(0.835008561611175537109375e0), SC_(0.41613683445341381464308582108835280048764059411648e0), + SC_(0.408089816570281982421875e0), SC_(0.905791938304901123046875e0), SC_(0.41765113398254723962055569064791926246615413254393e0), + SC_(0.408089816570281982421875e0), SC_(0.9133758544921875e0), SC_(0.41782256020276621609674017362671014750026501907095e0), + SC_(0.408089816570281982421875e0), SC_(0.968867778778076171875e0), SC_(0.41913296681896765017387990528505551996225614692784e0), + SC_(0.6540834903717041015625e0), SC_(0.12698681652545928955078125e0), SC_(0.65477569244498274628357445932008780234315571539044e0), + SC_(0.6540834903717041015625e0), SC_(0.135477006435394287109375e0), SC_(0.65487164806402153030573139984154302981551785243681e0), + SC_(0.6540834903717041015625e0), SC_(0.22103404998779296875e0), SC_(0.65619254194891227468042672889687463942443436690839e0), + SC_(0.6540834903717041015625e0), SC_(0.308167040348052978515625e0), SC_(0.65821620961354539414907061912932846886247912255255e0), + SC_(0.6540834903717041015625e0), SC_(0.6323592662811279296875e0), SC_(0.67248849848936050016610849963373465122330627892961e0), + SC_(0.6540834903717041015625e0), SC_(0.814723670482635498046875e0), SC_(0.68630164387246135032620177956466712274649070191177e0), + SC_(0.6540834903717041015625e0), SC_(0.835008561611175537109375e0), SC_(0.68816675621039760222631800074603375360142401438987e0), + SC_(0.6540834903717041015625e0), SC_(0.905791938304901123046875e0), SC_(0.69528261874286863026519970272329655298700166989486e0), + SC_(0.6540834903717041015625e0), SC_(0.9133758544921875e0), SC_(0.69610496181753652833224539834751851243394541480226e0), + SC_(0.6540834903717041015625e0), SC_(0.968867778778076171875e0), SC_(0.7025112262474545066603301157823427120637874200135e0), + SC_(0.1097540378570556640625e1), SC_(0.12698681652545928955078125e0), SC_(0.11003471149236776513507991265642138339242686949903e1), + SC_(0.1097540378570556640625e1), SC_(0.135477006435394287109375e0), SC_(0.11007377660649281456894166377025736959059995654682e1), + SC_(0.1097540378570556640625e1), SC_(0.22103404998779296875e0), SC_(0.11061549425514318379849291365895797405348292801433e1), + SC_(0.1097540378570556640625e1), SC_(0.308167040348052978515625e0), SC_(0.11146019681541067330906358155717865338186530102327e1), + SC_(0.1097540378570556640625e1), SC_(0.6323592662811279296875e0), SC_(0.11802074417620207931939611733260636276673966082443e1), + SC_(0.1097540378570556640625e1), SC_(0.814723670482635498046875e0), SC_(0.12578285181515702991797627592602165658058701930258e1), + SC_(0.1097540378570556640625e1), SC_(0.835008561611175537109375e0), SC_(0.12698430906776947015611432433077785700088931116721e1), + SC_(0.1097540378570556640625e1), SC_(0.905791938304901123046875e0), SC_(0.13204037251693329627187843072366712493935712110401e1), + SC_(0.1097540378570556640625e1), SC_(0.9133758544921875e0), SC_(0.13268204823908263101837949751919463104879377367912e1), + SC_(0.1097540378570556640625e1), SC_(0.968867778778076171875e0), SC_(0.13822453786208089290946476937753669578887421854728e1), + SC_(0.1950808048248291015625e1), SC_(0.97540400922298431396484375e-1), SC_(0.19562994006072772392989317248132709815452784959826e1), + SC_(0.1950808048248291015625e1), SC_(0.12698681652545928955078125e0), SC_(0.19601535246678452834518511364229816228893034488785e1), + SC_(0.1950808048248291015625e1), SC_(0.135477006435394287109375e0), SC_(0.19614596652758509958469918792231734860689477027169e1), + SC_(0.1950808048248291015625e1), SC_(0.188381969928741455078125e0), SC_(0.19716249959165646514429738081080084449821198227171e1), + SC_(0.1950808048248291015625e1), SC_(0.22103404998779296875e0), SC_(0.19797106668339028654214619902420748580297562979142e1), + SC_(0.1950808048248291015625e1), SC_(0.278498232364654541015625e0), SC_(0.19975512032997768028486010094015675843714455024392e1), + SC_(0.1950808048248291015625e1), SC_(0.308167040348052978515625e0), SC_(0.20087020936663850500582188095482001403774223406978e1), + SC_(0.1950808048248291015625e1), SC_(0.546881496906280517578125e0), SC_(0.21628418105431198748773405708776835286153103384277e1), + SC_(0.1950808048248291015625e1), SC_(0.54722058773040771484375e0), SC_(0.21631699315891608119894948133316654938901722748298e1), + SC_(0.1950808048248291015625e1), SC_(0.6323592662811279296875e0), SC_(0.22606368992258254906346157725003784007271672950414e1), + SC_(0.1950808048248291015625e1), SC_(0.814723670482635498046875e0), SC_(0.26534983966729379362939887794301988193856664827634e1), + SC_(0.1950808048248291015625e1), SC_(0.835008561611175537109375e0), SC_(0.27292696982824500489339800553879953551443341255962e1), + SC_(0.1950808048248291015625e1), SC_(0.905791938304901123046875e0), SC_(0.31275037362409136197983454894540518445246475543974e1), + SC_(0.1950808048248291015625e1), SC_(0.9133758544921875e0), SC_(0.31913382749674464369766643171969389446672569703398e1), + SC_(0.1950808048248291015625e1), SC_(0.957506835460662841796875e0), SC_(0.37701285737397544816409751357099760396932059212408e1), + SC_(0.1950808048248291015625e1), SC_(0.964888513088226318359375e0), SC_(0.39349208553332737987676519101722510664438127845638e1), + SC_(0.1950808048248291015625e1), SC_(0.967694938182830810546875e0), SC_(0.4007951596737977617848308394159967642617373648917e1), + SC_(0.1950808048248291015625e1), SC_(0.968867778778076171875e0), SC_(0.4040571139829913851415531047603326764659703286033e1), + SC_(0.1950808048248291015625e1), SC_(0.992881298065185546875e0), SC_(0.54149088557920911878614994884374272501219026526352e1), + SC_(0.1950808048248291015625e1), SC_(0.996461331844329833984375e0), SC_(0.60956543928985539645356626998293051370635689316592e1), + SC_(0.2539736270904541015625e1), SC_(0.97540400922298431396484375e-1), SC_(0.25469269551734735469869951766247718781962673424527e1), + SC_(0.2539736270904541015625e1), SC_(0.12698681652545928955078125e0), SC_(0.25519712959255786840106819755910446647478797877631e1), + SC_(0.2539736270904541015625e1), SC_(0.135477006435394287109375e0), SC_(0.2553680331713302438365097695192798456385454884366e1), + SC_(0.2539736270904541015625e1), SC_(0.188381969928741455078125e0), SC_(0.25669732544163506304944639375301687292868145656865e1), + SC_(0.2539736270904541015625e1), SC_(0.22103404998779296875e0), SC_(0.25775364568505656698646722868862598753622579518976e1), + SC_(0.2539736270904541015625e1), SC_(0.278498232364654541015625e0), SC_(0.26008112706780400458819419248957814565186202203651e1), + SC_(0.2539736270904541015625e1), SC_(0.308167040348052978515625e0), SC_(0.26153360429989087668689836138329779752799092806693e1), + SC_(0.2539736270904541015625e1), SC_(0.546881496906280517578125e0), SC_(0.28142666698646853744558793620002261556729643524801e1), + SC_(0.2539736270904541015625e1), SC_(0.54722058773040771484375e0), SC_(0.28146863814067030829651156108409285638641261767021e1), + SC_(0.2539736270904541015625e1), SC_(0.6323592662811279296875e0), SC_(0.29386365190461783835193915403079254430818525714849e1), + SC_(0.2539736270904541015625e1), SC_(0.814723670482635498046875e0), SC_(0.34235295715563359485713288547633976740340284127436e1), + SC_(0.2539736270904541015625e1), SC_(0.835008561611175537109375e0), SC_(0.35144016113968959525568278839562130837534604827633e1), + SC_(0.2539736270904541015625e1), SC_(0.905791938304901123046875e0), SC_(0.39792117967571638946322530084161902708818168749357e1), + SC_(0.2539736270904541015625e1), SC_(0.9133758544921875e0), SC_(0.40518874048220600618304570313896102054539797958828e1), + SC_(0.2539736270904541015625e1), SC_(0.957506835460662841796875e0), SC_(0.46921618063773848726048212047793957391451982157366e1), + SC_(0.2539736270904541015625e1), SC_(0.964888513088226318359375e0), SC_(0.48693879150964363521015432286640372931632381989609e1), + SC_(0.2539736270904541015625e1), SC_(0.967694938182830810546875e0), SC_(0.49473523092691194385675026458370079825733462855857e1), + SC_(0.2539736270904541015625e1), SC_(0.968867778778076171875e0), SC_(0.49820694300746426583417499086461889297101936185128e1), + SC_(0.2539736270904541015625e1), SC_(0.992881298065185546875e0), SC_(0.64048078252833184695833481910221841816079313986167e1), + SC_(0.2539736270904541015625e1), SC_(0.996461331844329833984375e0), SC_(0.70938316039256414225668295621475108351461655699934e1), + SC_(0.27095401287078857421875e1), SC_(0.97540400922298431396484375e-1), SC_(0.27169294744721183593709745148375231890329399912714e1), + SC_(0.27095401287078857421875e1), SC_(0.12698681652545928955078125e0), SC_(0.27221122917722527397799372344106138715796658428968e1), + SC_(0.27095401287078857421875e1), SC_(0.135477006435394287109375e0), SC_(0.27238680786788873635507735884409016001241816590325e1), + SC_(0.27095401287078857421875e1), SC_(0.188381969928741455078125e0), SC_(0.27375217975956563052334322709213847993729867727731e1), + SC_(0.27095401287078857421875e1), SC_(0.22103404998779296875e0), SC_(0.27483681515486312121622323338373370394382191983962e1), + SC_(0.27095401287078857421875e1), SC_(0.278498232364654541015625e0), SC_(0.27722559080262236923534751661407244360554184975449e1), + SC_(0.27095401287078857421875e1), SC_(0.308167040348052978515625e0), SC_(0.27871556710634124615155372525235134047227076712877e1), + SC_(0.27095401287078857421875e1), SC_(0.546881496906280517578125e0), SC_(0.29906821435784388502574295461513471848870727269653e1), + SC_(0.27095401287078857421875e1), SC_(0.54722058773040771484375e0), SC_(0.29911105588718031726855643800164507199925530063405e1), + SC_(0.27095401287078857421875e1), SC_(0.6323592662811279296875e0), SC_(0.31174669357911287744993815429792174618223969418419e1), + SC_(0.27095401287078857421875e1), SC_(0.814723670482635498046875e0), SC_(0.3609204869269757072282327024093439303976793662797e1), + SC_(0.27095401287078857421875e1), SC_(0.835008561611175537109375e0), SC_(0.37010046431238735541261054890022934113523719560981e1), + SC_(0.27095401287078857421875e1), SC_(0.905791938304901123046875e0), SC_(0.41693602816804916951827040390883654770081369591641e1), + SC_(0.27095401287078857421875e1), SC_(0.9133758544921875e0), SC_(0.42424461442817335583899393208653305821638950924034e1), + SC_(0.27095401287078857421875e1), SC_(0.957506835460662841796875e0), SC_(0.48852351693477390401084151775611711161714230790341e1), + SC_(0.27095401287078857421875e1), SC_(0.964888513088226318359375e0), SC_(0.50629040714491325618126117483322337300921080815852e1), + SC_(0.27095401287078857421875e1), SC_(0.967694938182830810546875e0), SC_(0.51410385483567375448743513424691722411248111114562e1), + SC_(0.27095401287078857421875e1), SC_(0.968867778778076171875e0), SC_(0.51758270351110881770260942395739431871605470855576e1), + SC_(0.27095401287078857421875e1), SC_(0.992881298065185546875e0), SC_(0.66000645504229846914922702272317711152053035415607e1), + SC_(0.27095401287078857421875e1), SC_(0.996461331844329833984375e0), SC_(0.72893181629270949803560477852024744504664030538627e1), + SC_(0.30944411754608154296875e1), SC_(0.12698681652545928955078125e0), SC_(0.31072221342043191145432052889288296013211028939737e1), + SC_(0.30944411754608154296875e1), SC_(0.135477006435394287109375e0), SC_(0.31090068165211348503583360474065341912435602071439e1), + SC_(0.30944411754608154296875e1), SC_(0.22103404998779296875e0), SC_(0.31339034518921156974896183038745980596645437343129e1), + SC_(0.30944411754608154296875e1), SC_(0.308167040348052978515625e0), SC_(0.31732941796126678149145766728864242326145635088789e1), + SC_(0.30944411754608154296875e1), SC_(0.6323592662811279296875e0), SC_(0.35077114184094613482533848633203259990888547383333e1), + SC_(0.30944411754608154296875e1), SC_(0.814723670482635498046875e0), SC_(0.4003179049799713108178282050098796262259848567719e1), + SC_(0.30944411754608154296875e1), SC_(0.835008561611175537109375e0), SC_(0.40954642770361940439776959775076106097768734099936e1), + SC_(0.30944411754608154296875e1), SC_(0.905791938304901123046875e0), SC_(0.45656328558700778621439810217797281282994138681161e1), + SC_(0.30944411754608154296875e1), SC_(0.9133758544921875e0), SC_(0.46389242501831577827889502649104292894624066689379e1), + SC_(0.30944411754608154296875e1), SC_(0.968867778778076171875e0), SC_(0.55738782887519763123643989468316581713502139828688e1), + SC_(0.37676393985748291015625e1), SC_(0.97540400922298431396484375e-1), SC_(0.37755122719095835811423337728430060413468445390786e1), + SC_(0.37676393985748291015625e1), SC_(0.12698681652545928955078125e0), SC_(0.37810318519851015551878920927743745775467406301024e1), + SC_(0.37676393985748291015625e1), SC_(0.135477006435394287109375e0), SC_(0.37829012818344106139255970656938698469776011528623e1), + SC_(0.37676393985748291015625e1), SC_(0.188381969928741455078125e0), SC_(0.37974311516704637313112906693457517341538187269562e1), + SC_(0.37676393985748291015625e1), SC_(0.22103404998779296875e0), SC_(0.380896402406573653462758558228966817469555107768e1), + SC_(0.37676393985748291015625e1), SC_(0.278498232364654541015625e0), SC_(0.38343346593105730714473048917413698679008037670856e1), + SC_(0.37676393985748291015625e1), SC_(0.308167040348052978515625e0), SC_(0.38501394576957168075020143444180403651849439608405e1), + SC_(0.37676393985748291015625e1), SC_(0.546881496906280517578125e0), SC_(0.40646274975573918187032728203694982450879349553607e1), + SC_(0.37676393985748291015625e1), SC_(0.54722058773040771484375e0), SC_(0.40650764486799282960997076628957112764962165205861e1), + SC_(0.37676393985748291015625e1), SC_(0.6323592662811279296875e0), SC_(0.41970788160335566139770626163874319202021553243668e1), + SC_(0.37676393985748291015625e1), SC_(0.814723670482635498046875e0), SC_(0.47045506999307748669309229710029290643499278736528e1), + SC_(0.37676393985748291015625e1), SC_(0.835008561611175537109375e0), SC_(0.47984475776619893260035778668406421478758732072107e1), + SC_(0.37676393985748291015625e1), SC_(0.905791938304901123046875e0), SC_(0.52747438794870471587914658385688589078450499746091e1), + SC_(0.37676393985748291015625e1), SC_(0.9133758544921875e0), SC_(0.53487412205026399386928570224184493137086797005622e1), + SC_(0.37676393985748291015625e1), SC_(0.957506835460662841796875e0), SC_(0.59970848037347436062720387300340600700666682758135e1), + SC_(0.37676393985748291015625e1), SC_(0.964888513088226318359375e0), SC_(0.61757261439064616697694349498787705608951479623778e1), + SC_(0.37676393985748291015625e1), SC_(0.967694938182830810546875e0), SC_(0.62542337044805795520963873498098322389333343816197e1), + SC_(0.37676393985748291015625e1), SC_(0.968867778778076171875e0), SC_(0.6289178662565526065927797559105874158450029262123e1), + SC_(0.37676393985748291015625e1), SC_(0.992881298065185546875e0), SC_(0.77166931593054033354394083476745032960438574245635e1), + SC_(0.37676393985748291015625e1), SC_(0.996461331844329833984375e0), SC_(0.84064475235391524325874806119559999401283228909939e1), + SC_(0.4420680999755859375e1), SC_(0.97540400922298431396484375e-1), SC_(0.4430591540162268874333747828663776758862793783672e1), + SC_(0.4420680999755859375e1), SC_(0.12698681652545928955078125e0), SC_(0.44375392011473424532034876134092452779729250423979e1), + SC_(0.4420680999755859375e1), SC_(0.135477006435394287109375e0), SC_(0.4439892211912412619301776787698186848844755558552e1), + SC_(0.4420680999755859375e1), SC_(0.188381969928741455078125e0), SC_(0.44581789142573870075430616936039449055369249521073e1), + SC_(0.4420680999755859375e1), SC_(0.22103404998779296875e0), SC_(0.44726914365861570212743995565563739207023963785013e1), + SC_(0.4420680999755859375e1), SC_(0.278498232364654541015625e0), SC_(0.45046091916528927847279370418393804088705611101869e1), + SC_(0.4420680999755859375e1), SC_(0.308167040348052978515625e0), SC_(0.45244868212243216038416004047310696620652911445157e1), + SC_(0.4420680999755859375e1), SC_(0.546881496906280517578125e0), SC_(0.47936660535955974363664026779667407854083585363437e1), + SC_(0.4420680999755859375e1), SC_(0.54722058773040771484375e0), SC_(0.47942280927949870156729113770506404570756501259371e1), + SC_(0.4420680999755859375e1), SC_(0.6323592662811279296875e0), SC_(0.49591636131763193688508550892421916452514613124629e1), + SC_(0.4420680999755859375e1), SC_(0.814723670482635498046875e0), SC_(0.55853526291499763783413441524746494650935383084605e1), + SC_(0.4420680999755859375e1), SC_(0.835008561611175537109375e0), SC_(0.5699496443024524782842452720232539826700714420455e1), + SC_(0.4420680999755859375e1), SC_(0.905791938304901123046875e0), SC_(0.62684739469754992684911768340919066460397475196625e1), + SC_(0.4420680999755859375e1), SC_(0.9133758544921875e0), SC_(0.63552732170416590253582547330217054202288645145355e1), + SC_(0.4420680999755859375e1), SC_(0.957506835460662841796875e0), SC_(0.70968919231363598968181906769521003657527240252119e1), + SC_(0.4420680999755859375e1), SC_(0.964888513088226318359375e0), SC_(0.7295489817825154986295052119287538105169730153571e1), + SC_(0.4420680999755859375e1), SC_(0.967694938182830810546875e0), SC_(0.73820394172398209080112346932905471045769254532692e1), + SC_(0.4420680999755859375e1), SC_(0.968867778778076171875e0), SC_(0.7420425888777766639122607263805607704202437036526e1), + SC_(0.4420680999755859375e1), SC_(0.992881298065185546875e0), SC_(0.89317356257871990345011821794168317350909281522674e1), + SC_(0.4420680999755859375e1), SC_(0.996461331844329833984375e0), SC_(0.96368355227379383369427056159155267142030818339148e1), + SC_(0.51139926910400390625e1), SC_(0.12698681652545928955078125e0), SC_(0.51362697892293146024149566757160016652171029519725e1), + SC_(0.51139926910400390625e1), SC_(0.135477006435394287109375e0), SC_(0.51393816800194071694472683522479070689338047948767e1), + SC_(0.51139926910400390625e1), SC_(0.22103404998779296875e0), SC_(0.51828239697380023742666825202236522615796437588223e1), + SC_(0.51139926910400390625e1), SC_(0.308167040348052978515625e0), SC_(0.52516751098980596673821312579840070371649973007858e1), + SC_(0.51139926910400390625e1), SC_(0.6323592662811279296875e0), SC_(0.58421218838425566348206583832494168118961902186816e1), + SC_(0.51139926910400390625e1), SC_(0.814723670482635498046875e0), SC_(0.67366707817207320894310903314321940366790653716336e1), + SC_(0.51139926910400390625e1), SC_(0.835008561611175537109375e0), SC_(0.69058706579517599068095692635429767438914516020638e1), + SC_(0.51139926910400390625e1), SC_(0.905791938304901123046875e0), SC_(0.77798168272927509964793385756033437734250053401127e1), + SC_(0.51139926910400390625e1), SC_(0.9133758544921875e0), SC_(0.79177474760555272535418888568895017602010851855904e1), + SC_(0.51139926910400390625e1), SC_(0.968867778778076171875e0), SC_(0.97102063222905397547513878468761960147066158328242e1), + SC_(0.556996440887451171875e1), SC_(0.97540400922298431396484375e-1), SC_(0.55844691734507858137656858170096622106317642042824e1), + SC_(0.556996440887451171875e1), SC_(0.12698681652545928955078125e0), SC_(0.55946435072669284662790267593422281103072851428504e1), + SC_(0.556996440887451171875e1), SC_(0.135477006435394287109375e0), SC_(0.5598090429003808548016391653144469451067070740863e1), + SC_(0.556996440887451171875e1), SC_(0.188381969928741455078125e0), SC_(0.56248977839286669537250587300752445327767367911234e1), + SC_(0.556996440887451171875e1), SC_(0.22103404998779296875e0), SC_(0.56461966150484113071371849384367902106541159417831e1), + SC_(0.556996440887451171875e1), SC_(0.278498232364654541015625e0), SC_(0.56931152259502926348309692552223811332215506880262e1), + SC_(0.556996440887451171875e1), SC_(0.308167040348052978515625e0), SC_(0.57223876207987095562807947163219598811139051248937e1), + SC_(0.556996440887451171875e1), SC_(0.546881496906280517578125e0), SC_(0.61227993821906502780327480133385818821209455713957e1), + SC_(0.556996440887451171875e1), SC_(0.54722058773040771484375e0), SC_(0.61236433141512016457946752168581740042325212366111e1), + SC_(0.556996440887451171875e1), SC_(0.6323592662811279296875e0), SC_(0.63727425473568638429145439517425636023128278810424e1), + SC_(0.556996440887451171875e1), SC_(0.814723670482635498046875e0), SC_(0.73454042411239290351140002802119065012470861406926e1), + SC_(0.556996440887451171875e1), SC_(0.835008561611175537109375e0), SC_(0.75274747820288477969748263486615852719666421837798e1), + SC_(0.556996440887451171875e1), SC_(0.905791938304901123046875e0), SC_(0.84581967904629856268537754162744740969527487485085e1), + SC_(0.556996440887451171875e1), SC_(0.9133758544921875e0), SC_(0.86036602011170770644003984577304728376400320901326e1), + SC_(0.556996440887451171875e1), SC_(0.957506835460662841796875e0), SC_(0.98848252100647112319530218069729819390496885141157e1), + SC_(0.556996440887451171875e1), SC_(0.964888513088226318359375e0), SC_(0.10239372982567268490979130974735669518912181671749e2), + SC_(0.556996440887451171875e1), SC_(0.967694938182830810546875e0), SC_(0.10395337426720047901338904971339709355608782562757e2), + SC_(0.556996440887451171875e1), SC_(0.968867778778076171875e0), SC_(0.10464786455438862794334753506877962984519701150706e2), + SC_(0.556996440887451171875e1), SC_(0.992881298065185546875e0), SC_(0.1331054987349039168122567073578600680197110314181e2), + SC_(0.556996440887451171875e1), SC_(0.996461331844329833984375e0), SC_(0.14688637283873699838584062638782578404503163586353e2), + SC_(0.616334056854248046875e1), SC_(0.97540400922298431396484375e-1), SC_(0.61783631190716027315019025898851077350917215931521e1), + SC_(0.616334056854248046875e1), SC_(0.12698681652545928955078125e0), SC_(0.61888984358800004479413424228718147388833874544273e1), + SC_(0.616334056854248046875e1), SC_(0.135477006435394287109375e0), SC_(0.61924672407586259231670414706944580242287742401112e1), + SC_(0.616334056854248046875e1), SC_(0.188381969928741455078125e0), SC_(0.62202154136886917094664060275914124991586979670715e1), + SC_(0.616334056854248046875e1), SC_(0.22103404998779296875e0), SC_(0.624225284773523836314060623992931844760251789472e1), + SC_(0.616334056854248046875e1), SC_(0.278498232364654541015625e0), SC_(0.62907711141231261848668592016526274959858971574338e1), + SC_(0.616334056854248046875e1), SC_(0.308167040348052978515625e0), SC_(0.63210227112318845177545380636420607704049301904653e1), + SC_(0.616334056854248046875e1), SC_(0.546881496906280517578125e0), SC_(0.67334751547199296056179172628757848101255347201884e1), + SC_(0.616334056854248046875e1), SC_(0.54722058773040771484375e0), SC_(0.67343419682802269138895824745501258517162939869565e1), + SC_(0.616334056854248046875e1), SC_(0.6323592662811279296875e0), SC_(0.69897803420180864022909919741821358459016644605351e1), + SC_(0.616334056854248046875e1), SC_(0.814723670482635498046875e0), SC_(0.79806488210490909837317416172039282908893438508284e1), + SC_(0.616334056854248046875e1), SC_(0.835008561611175537109375e0), SC_(0.8165210788436412135085519279232064920913213327915e1), + SC_(0.616334056854248046875e1), SC_(0.905791938304901123046875e0), SC_(0.91055166603620218664335859155880017503368103079059e1), + SC_(0.616334056854248046875e1), SC_(0.9133758544921875e0), SC_(0.92520959425643497627601049249083637037525716863408e1), + SC_(0.616334056854248046875e1), SC_(0.957506835460662841796875e0), SC_(0.10540134973068471631090579301791978824142610760547e2), + SC_(0.616334056854248046875e1), SC_(0.964888513088226318359375e0), SC_(0.10895899598082500902707344491724188005760739630902e2), + SC_(0.616334056854248046875e1), SC_(0.967694938182830810546875e0), SC_(0.11052331985699480570378348823755388260341201670884e2), + SC_(0.616334056854248046875e1), SC_(0.968867778778076171875e0), SC_(0.11121977450594867122076795797700333003592905734443e2), + SC_(0.616334056854248046875e1), SC_(0.992881298065185546875e0), SC_(0.13971879717734003393801201721441121744229233358639e2), + SC_(0.616334056854248046875e1), SC_(0.996461331844329833984375e0), SC_(0.15350603827485982231303502413255463587806781247754e2), + SC_(0.95070552825927734375e1), SC_(0.12698681652545928955078125e0), SC_(0.95454004986828653362057929010692037869227896715953e1), + SC_(0.95070552825927734375e1), SC_(0.135477006435394287109375e0), SC_(0.95507548689869442847667388017333503400538819498748e1), + SC_(0.95070552825927734375e1), SC_(0.22103404998779296875e0), SC_(0.96254492015177798916535606386773654146221183695006e1), + SC_(0.95070552825927734375e1), SC_(0.308167040348052978515625e0), SC_(0.97436280774150178418798103764383492698312548104457e1), + SC_(0.95070552825927734375e1), SC_(0.6323592662811279296875e0), SC_(0.10746924085825402325748543832012982352421706904113e2), + SC_(0.95070552825927734375e1), SC_(0.814723670482635498046875e0), SC_(0.1223336536449578968618027415039525051971831731367e2), + SC_(0.95070552825927734375e1), SC_(0.835008561611175537109375e0), SC_(0.12510225917081492880321679198442231849788383280755e2), + SC_(0.95070552825927734375e1), SC_(0.905791938304901123046875e0), SC_(0.13920749595081598581954518121582750565969436125538e2), + SC_(0.95070552825927734375e1), SC_(0.9133758544921875e0), SC_(0.1414062578749516941186266567362953568444178902917e2), + SC_(0.95070552825927734375e1), SC_(0.968867778778076171875e0), SC_(0.1694550312061179115501473585165928260546294334011e2), + SC_(0.1093762969970703125e2), SC_(0.97540400922298431396484375e-1), SC_(0.10963646610206798658249722105789069826347752802799e2), + SC_(0.1093762969970703125e2), SC_(0.12698681652545928955078125e0), SC_(0.10981891651874504413661916860586302802863678440988e2), + SC_(0.1093762969970703125e2), SC_(0.135477006435394287109375e0), SC_(0.1098807198503364724626399735601076460418617449507e2), + SC_(0.1093762969970703125e2), SC_(0.188381969928741455078125e0), SC_(0.11036123299455733459985810769177967577713870443176e2), + SC_(0.1093762969970703125e2), SC_(0.22103404998779296875e0), SC_(0.11074282816435212308083831359080124087764132889193e2), + SC_(0.1093762969970703125e2), SC_(0.278498232364654541015625e0), SC_(0.11158287927321588292904319716655901345555657251695e2), + SC_(0.1093762969970703125e2), SC_(0.308167040348052978515625e0), SC_(0.11210660295493829013001485037860770716406438804465e2), + SC_(0.1093762969970703125e2), SC_(0.546881496906280517578125e0), SC_(0.11924264796517408091011634743477032835448050596572e2), + SC_(0.1093762969970703125e2), SC_(0.54722058773040771484375e0), SC_(0.1192576361603510212712793465842272092903030481931e2), + SC_(0.1093762969970703125e2), SC_(0.6323592662811279296875e0), SC_(0.12367273881279775351051150288008941369451574265176e2), + SC_(0.1093762969970703125e2), SC_(0.814723670482635498046875e0), SC_(0.14076377036590804043482357034615432525655009626865e2), + SC_(0.1093762969970703125e2), SC_(0.835008561611175537109375e0), SC_(0.14394024515629097522201571291989486751374749003521e2), + SC_(0.1093762969970703125e2), SC_(0.905791938304901123046875e0), SC_(0.16008391252781965114431712554706427136217663748527e2), + SC_(0.1093762969970703125e2), SC_(0.9133758544921875e0), SC_(0.16259384741738290011172877514514134871017060368919e2), + SC_(0.1093762969970703125e2), SC_(0.957506835460662841796875e0), SC_(0.1845573432065792179989472365947112550213902456692e2), + SC_(0.1093762969970703125e2), SC_(0.964888513088226318359375e0), SC_(0.19059046263882276029984622895969230989180600854906e2), + SC_(0.1093762969970703125e2), SC_(0.967694938182830810546875e0), SC_(0.19323807582004519263424662133360235731198035088751e2), + SC_(0.1093762969970703125e2), SC_(0.968867778778076171875e0), SC_(0.194415759520124225934949863251057195385264539859e2), + SC_(0.1093762969970703125e2), SC_(0.992881298065185546875e0), SC_(0.24191686316432831322844489613644494982611622252385e2), + SC_(0.1093762969970703125e2), SC_(0.996461331844329833984375e0), SC_(0.26429541775511059034290701716123129217559603117067e2), + SC_(0.109444122314453125e2), SC_(0.97540400922298431396484375e-1), SC_(0.10970461541523682747355458653814043467367244057396e2), + SC_(0.109444122314453125e2), SC_(0.12698681652545928955078125e0), SC_(0.10988729373579871818537920348196397035079171317124e2), + SC_(0.109444122314453125e2), SC_(0.135477006435394287109375e0), SC_(0.10994917439755143861288957942891262447644638270139e2), + SC_(0.109444122314453125e2), SC_(0.188381969928741455078125e0), SC_(0.11043029102394708762269620069073447525794707462842e2), + SC_(0.109444122314453125e2), SC_(0.22103404998779296875e0), SC_(0.11081236829596933248848405497175796619417014928386e2), + SC_(0.109444122314453125e2), SC_(0.278498232364654541015625e0), SC_(0.11165348968140822237533113330055846036723650368255e2), + SC_(0.109444122314453125e2), SC_(0.308167040348052978515625e0), SC_(0.11217788691012088330586213377814407299980559959816e2), + SC_(0.109444122314453125e2), SC_(0.546881496906280517578125e0), SC_(0.11932361006460784173269687160588295510073957504097e2), + SC_(0.109444122314453125e2), SC_(0.54722058773040771484375e0), SC_(0.11933861960411066983507334813972987755774341687751e2), + SC_(0.109444122314453125e2), SC_(0.6323592662811279296875e0), SC_(0.12376020533177822825841829967437421518512959748557e2), + SC_(0.109444122314453125e2), SC_(0.814723670482635498046875e0), SC_(0.14088039873328027300817251189126401292512989990948e2), + SC_(0.109444122314453125e2), SC_(0.835008561611175537109375e0), SC_(0.14406309044650111751366545567902536930343297482049e2), + SC_(0.109444122314453125e2), SC_(0.905791938304901123046875e0), SC_(0.16024290482598164422160771707706643769440101928167e2), + SC_(0.109444122314453125e2), SC_(0.9133758544921875e0), SC_(0.16275921211204838128636593665063221747249244639666e2), + SC_(0.109444122314453125e2), SC_(0.957506835460662841796875e0), SC_(0.18478874723457283704932151551137391687396403708104e2), + SC_(0.109444122314453125e2), SC_(0.964888513088226318359375e0), SC_(0.1908436527336929073336423976599930324634785987703e2), + SC_(0.109444122314453125e2), SC_(0.967694938182830810546875e0), SC_(0.19350138081968353309613213762487673374633033171984e2), + SC_(0.109444122314453125e2), SC_(0.968867778778076171875e0), SC_(0.19468367596374444964951658514022395834888113880669e2), + SC_(0.109444122314453125e2), SC_(0.992881298065185546875e0), SC_(0.24243524107804909041787975504647233471841620587343e2), + SC_(0.109444122314453125e2), SC_(0.996461331844329833984375e0), SC_(0.26497308318441767897207472996276899324977478296401e2), + SC_(0.1264718532562255859375e2), SC_(0.97540400922298431396484375e-1), SC_(0.12677236706110367782549271525311628981337463378532e2), + SC_(0.1264718532562255859375e2), SC_(0.12698681652545928955078125e0), SC_(0.12698311703823960368329272085416947873851253345973e2), + SC_(0.1264718532562255859375e2), SC_(0.135477006435394287109375e0), SC_(0.1270545078454752334084595681657916305982619248666e2), + SC_(0.1264718532562255859375e2), SC_(0.188381969928741455078125e0), SC_(0.127609584418622420064875524352859139743323867435e2), + SC_(0.1264718532562255859375e2), SC_(0.22103404998779296875e0), SC_(0.12805042137113677772721529890580842526850421574962e2), + SC_(0.1264718532562255859375e2), SC_(0.278498232364654541015625e0), SC_(0.12902097628879921824880507556722716600356466567131e2), + SC_(0.1264718532562255859375e2), SC_(0.308167040348052978515625e0), SC_(0.12962612322216858533938983233684936264728463534302e2), + SC_(0.1264718532562255859375e2), SC_(0.546881496906280517578125e0), SC_(0.13787652235784692759159757793791973200170888666279e2), + SC_(0.1264718532562255859375e2), SC_(0.54722058773040771484375e0), SC_(0.1378938610863373233787592856761746639569953324591e2), + SC_(0.1264718532562255859375e2), SC_(0.6323592662811279296875e0), SC_(0.14300329413813784124057527394564366109025622616472e2), + SC_(0.1264718532562255859375e2), SC_(0.814723670482635498046875e0), SC_(0.1628224165011588388279149415775837870352458588289e2), + SC_(0.1264718532562255859375e2), SC_(0.835008561611175537109375e0), SC_(0.16651387851669406728318744269976515109089955012034e2), + SC_(0.1264718532562255859375e2), SC_(0.905791938304901123046875e0), SC_(0.18532081661221377344079742156094468153881757608401e2), + SC_(0.1264718532562255859375e2), SC_(0.9133758544921875e0), SC_(0.18825249421786445939315665022068666566932527992594e2), + SC_(0.1264718532562255859375e2), SC_(0.957506835460662841796875e0), SC_(0.21401382548733510689951829506820280650836218972868e2), + SC_(0.1264718532562255859375e2), SC_(0.964888513088226318359375e0), SC_(0.22112921268641332930460058419498382430939714078502e2), + SC_(0.1264718532562255859375e2), SC_(0.967694938182830810546875e0), SC_(0.22425789663719381950184643349827324981869849829139e2), + SC_(0.1264718532562255859375e2), SC_(0.968867778778076171875e0), SC_(0.22565082109474213831771453104739118391009029017993e2), + SC_(0.1264718532562255859375e2), SC_(0.992881298065185546875e0), SC_(0.28264918095678731651389959280869594157798962932526e2), + SC_(0.1264718532562255859375e2), SC_(0.996461331844329833984375e0), SC_(0.31022371071678070418149727053290705831200907328323e2), + SC_(0.162944736480712890625e2), SC_(0.97540400922298431396484375e-1), SC_(0.16332335849207091109823957945908977308687495417936e2), + SC_(0.162944736480712890625e2), SC_(0.12698681652545928955078125e0), SC_(0.16358887137525798553326252219914563268391293381365e2), + SC_(0.162944736480712890625e2), SC_(0.135477006435394287109375e0), SC_(0.16367881026475127212157802387625954153421638007589e2), + SC_(0.162944736480712890625e2), SC_(0.188381969928741455078125e0), SC_(0.16437805599790727624698263588190632711468111074403e2), + SC_(0.162944736480712890625e2), SC_(0.22103404998779296875e0), SC_(0.16493333380886439753350310400826771464076281757905e2), + SC_(0.162944736480712890625e2), SC_(0.278498232364654541015625e0), SC_(0.16615566883623039246168178792294104501713068061447e2), + SC_(0.162944736480712890625e2), SC_(0.308167040348052978515625e0), SC_(0.16691768240787454863893571394130103320887386026289e2), + SC_(0.162944736480712890625e2), SC_(0.546881496906280517578125e0), SC_(0.17729830041011270406739472325911576407893009020632e2), + SC_(0.162944736480712890625e2), SC_(0.54722058773040771484375e0), SC_(0.17732010055485166822129505563081566136290531072432e2), + SC_(0.162944736480712890625e2), SC_(0.6323592662811279296875e0), SC_(0.18374174097891067003317214752714830421328139857676e2), + SC_(0.162944736480712890625e2), SC_(0.814723670482635498046875e0), SC_(0.20861278895371988062589770358837846293547800197758e2), + SC_(0.162944736480712890625e2), SC_(0.835008561611175537109375e0), SC_(0.21324006384057404479117559678579067471187150716032e2), + SC_(0.162944736480712890625e2), SC_(0.905791938304901123046875e0), SC_(0.23679775024628572650257350252783374984085623899523e2), + SC_(0.162944736480712890625e2), SC_(0.9133758544921875e0), SC_(0.24046797175591689123465250475925160230942950790206e2), + SC_(0.162944736480712890625e2), SC_(0.957506835460662841796875e0), SC_(0.2727039016669656030359715818368909425214276826001e2), + SC_(0.162944736480712890625e2), SC_(0.964888513088226318359375e0), SC_(0.28160413256793780842690418454991050754045213691614e2), + SC_(0.162944736480712890625e2), SC_(0.967694938182830810546875e0), SC_(0.28551728808580746334469718518664980378008087050345e2), + SC_(0.162944736480712890625e2), SC_(0.968867778778076171875e0), SC_(0.28725940849051351011078468765794122846148342861865e2), + SC_(0.162944736480712890625e2), SC_(0.992881298065185546875e0), SC_(0.35852756043126501796805453814599857861774809154537e2), + SC_(0.162944736480712890625e2), SC_(0.996461331844329833984375e0), SC_(0.39299880890909155872805866540456283272877072915793e2), + SC_(0.167001705169677734375e2), SC_(0.97540400922298431396484375e-1), SC_(0.16739008812038375551139393714029648811548620831914e2), + SC_(0.167001705169677734375e2), SC_(0.12698681652545928955078125e0), SC_(0.16766242788505874547117187440653538778277110359314e2), + SC_(0.167001705169677734375e2), SC_(0.135477006435394287109375e0), SC_(0.16775467589856196240594308803378836722256796922746e2), + SC_(0.167001705169677734375e2), SC_(0.188381969928741455078125e0), SC_(0.1684718155964704912842520244156440574908760716928e2), + SC_(0.167001705169677734375e2), SC_(0.22103404998779296875e0), SC_(0.16904122870111214312820522030036748927901786714062e2), + SC_(0.167001705169677734375e2), SC_(0.278498232364654541015625e0), SC_(0.17029444558221217733009315523460128309062293197822e2), + SC_(0.167001705169677734375e2), SC_(0.308167040348052978515625e0), SC_(0.17107554684784510609353430887134910997655584469126e2), + SC_(0.167001705169677734375e2), SC_(0.546881496906280517578125e0), SC_(0.18170321532803242623540686899531048081371272468926e2), + SC_(0.167001705169677734375e2), SC_(0.54722058773040771484375e0), SC_(0.18172550828241433969434987272297504177702506499321e2), + SC_(0.167001705169677734375e2), SC_(0.6323592662811279296875e0), SC_(0.18828746052896298967269448069463749103706251523384e2), + SC_(0.167001705169677734375e2), SC_(0.814723670482635498046875e0), SC_(0.21361072826294489971467076569820668779535583265053e2), + SC_(0.167001705169677734375e2), SC_(0.835008561611175537109375e0), SC_(0.21830672055348773995019800260332036942958945700855e2), + SC_(0.167001705169677734375e2), SC_(0.905791938304901123046875e0), SC_(0.24214808272090710104302580790903704452516964511139e2), + SC_(0.167001705169677734375e2), SC_(0.9133758544921875e0), SC_(0.24585356880982658824798758656552918605968358220036e2), + SC_(0.167001705169677734375e2), SC_(0.957506835460662841796875e0), SC_(0.27831885137582123028514114319998764489968298473821e2), + SC_(0.167001705169677734375e2), SC_(0.964888513088226318359375e0), SC_(0.28726206697315074740765695360070471839779582791252e2), + SC_(0.167001705169677734375e2), SC_(0.967694938182830810546875e0), SC_(0.29119196107553073084362488311565535383596697349093e2), + SC_(0.167001705169677734375e2), SC_(0.968867778778076171875e0), SC_(0.29294114337846932310424864094970188193596770336044e2), + SC_(0.167001705169677734375e2), SC_(0.992881298065185546875e0), SC_(0.36436321154494880151082257113005383382957690176199e2), + SC_(0.167001705169677734375e2), SC_(0.996461331844329833984375e0), SC_(0.39885905798252447578288191719411612816972017823352e2), + SC_(0.181158390045166015625e2), SC_(0.97540400922298431396484375e-1), SC_(0.18160351451480117558065298774495340775117518386233e2), + SC_(0.181158390045166015625e2), SC_(0.12698681652545928955078125e0), SC_(0.18191570257582985990901186558654432710867815876507e2), + SC_(0.181158390045166015625e2), SC_(0.135477006435394287109375e0), SC_(0.18202145942099527741591064867510771288489366600487e2), + SC_(0.181158390045166015625e2), SC_(0.188381969928741455078125e0), SC_(0.18284381117851662569123403816303008548717206730046e2), + SC_(0.181158390045166015625e2), SC_(0.22103404998779296875e0), SC_(0.18349700727987104158916905945679949883118409832651e2), + SC_(0.181158390045166015625e2), SC_(0.278498232364654541015625e0), SC_(0.18493537839530114445239786069690986608480784911527e2), + SC_(0.181158390045166015625e2), SC_(0.308167040348052978515625e0), SC_(0.18583240575191197992343279595518531545430270257635e2), + SC_(0.181158390045166015625e2), SC_(0.546881496906280517578125e0), SC_(0.19807623055160910112676463201317703655071163516426e2), + SC_(0.181158390045166015625e2), SC_(0.54722058773040771484375e0), SC_(0.19810198769909712537437476823656068024624632943299e2), + SC_(0.181158390045166015625e2), SC_(0.6323592662811279296875e0), SC_(0.20569653353557630506746432862814268281378432144464e2), + SC_(0.181158390045166015625e2), SC_(0.814723670482635498046875e0), SC_(0.2352243294913182509920736637424107626800849978303e2), + SC_(0.181158390045166015625e2), SC_(0.835008561611175537109375e0), SC_(0.24073391036728761587154941055247761966103060656551e2), + SC_(0.181158390045166015625e2), SC_(0.905791938304901123046875e0), SC_(0.26883779873538953768420791506854925489772742716466e2), + SC_(0.181158390045166015625e2), SC_(0.9133758544921875e0), SC_(0.2732228804344448785365909397007966911385227964507e2), + SC_(0.181158390045166015625e2), SC_(0.957506835460662841796875e0), SC_(0.31178811880826793631231649605900638774754521734655e2), + SC_(0.181158390045166015625e2), SC_(0.964888513088226318359375e0), SC_(0.32244758251970303273759970075090971592366328715884e2), + SC_(0.181158390045166015625e2), SC_(0.967694938182830810546875e0), SC_(0.32713536956536277600475871608099005733137864290554e2), + SC_(0.181158390045166015625e2), SC_(0.968867778778076171875e0), SC_(0.32922255664295847128924208304922176923951390435245e2), + SC_(0.181158390045166015625e2), SC_(0.992881298065185546875e0), SC_(0.41467369560650667725188799902157571185164372458279e2), + SC_(0.181158390045166015625e2), SC_(0.996461331844329833984375e0), SC_(0.45602834257944001359415966760392429515296284001886e2), + SC_(0.1826751708984375e2), SC_(0.97540400922298431396484375e-1), SC_(0.18312300372506326241294500730893077699558488861926e2), + SC_(0.1826751708984375e2), SC_(0.12698681652545928955078125e0), SC_(0.18343708254413630378805328878396365848943038344861e2), + SC_(0.1826751708984375e2), SC_(0.135477006435394287109375e0), SC_(0.18354347826893519357961754405400947806553918265707e2), + SC_(0.1826751708984375e2), SC_(0.188381969928741455078125e0), SC_(0.18437076971104081002851192887230029061230550731767e2), + SC_(0.1826751708984375e2), SC_(0.22103404998779296875e0), SC_(0.18502785393138785912358347407325003047197892819858e2), + SC_(0.1826751708984375e2), SC_(0.278498232364654541015625e0), SC_(0.18647467659326146942316727117987550215704857340399e2), + SC_(0.1826751708984375e2), SC_(0.308167040348052978515625e0), SC_(0.18737689823802034505349353255540508911872283571262e2), + SC_(0.1826751708984375e2), SC_(0.546881496906280517578125e0), SC_(0.19968590858946203163810920494427914107663807716551e2), + SC_(0.1826751708984375e2), SC_(0.54722058773040771484375e0), SC_(0.19971179196248330412496219116000729408785832865871e2), + SC_(0.1826751708984375e2), SC_(0.6323592662811279296875e0), SC_(0.20734165817722928436480567474238341828986532137455e2), + SC_(0.1826751708984375e2), SC_(0.814723670482635498046875e0), SC_(0.23697489984334446431344934486158134041904842381922e2), + SC_(0.1826751708984375e2), SC_(0.835008561611175537109375e0), SC_(0.2424993867303742105328507260211256234323279427853e2), + SC_(0.1826751708984375e2), SC_(0.905791938304901123046875e0), SC_(0.2706617242267722414691163160764375847813717717449e2), + SC_(0.1826751708984375e2), SC_(0.9133758544921875e0), SC_(0.27505372763407864220086614223406204707060141528959e2), + SC_(0.1826751708984375e2), SC_(0.957506835460662841796875e0), SC_(0.31366215222928620647809692822883524559015721789254e2), + SC_(0.1826751708984375e2), SC_(0.964888513088226318359375e0), SC_(0.32432936002773805741225669213075502718161785228548e2), + SC_(0.1826751708984375e2), SC_(0.967694938182830810546875e0), SC_(0.32902013310798370828841390284256075117104305410948e2), + SC_(0.1826751708984375e2), SC_(0.968867778778076171875e0), SC_(0.33110857501358115355866917717358967139468954294776e2), + SC_(0.1826751708984375e2), SC_(0.992881298065185546875e0), SC_(0.4165863370824046888444255823639452522978422602125e2), + SC_(0.1826751708984375e2), SC_(0.996461331844329833984375e0), SC_(0.45794511104275158868373277569901296260878008705439e2), + SC_(0.191501369476318359375e2), SC_(0.97540400922298431396484375e-1), SC_(0.19195255071886267905734211050079817202441855291762e2), + SC_(0.191501369476318359375e2), SC_(0.12698681652545928955078125e0), SC_(0.19226896115986568463829974156731616708345686548771e2), + SC_(0.191501369476318359375e2), SC_(0.135477006435394287109375e0), SC_(0.19237614362292146555392228656546752177979284920502e2), + SC_(0.191501369476318359375e2), SC_(0.188381969928741455078125e0), SC_(0.19320949914402923045372060722904034331219911114421e2), + SC_(0.191501369476318359375e2), SC_(0.22103404998779296875e0), SC_(0.19387133318099926450743698909948619097398431242012e2), + SC_(0.191501369476318359375e2), SC_(0.278498232364654541015625e0), SC_(0.195328410123425720726653061458334417077334496782e2), + SC_(0.191501369476318359375e2), SC_(0.308167040348052978515625e0), SC_(0.19623688660514213753434342090395296116415673459355e2), + SC_(0.191501369476318359375e2), SC_(0.546881496906280517578125e0), SC_(0.20862143324961768851345919111343868316199681980527e2), + SC_(0.191501369476318359375e2), SC_(0.54722058773040771484375e0), SC_(0.20864745774478503515900330797533678830537794131255e2), + SC_(0.191501369476318359375e2), SC_(0.6323592662811279296875e0), SC_(0.21631606615558944761431611767012603200224334815787e2), + SC_(0.191501369476318359375e2), SC_(0.814723670482635498046875e0), SC_(0.24605664816899151211957368248776661929561347076526e2), + SC_(0.191501369476318359375e2), SC_(0.835008561611175537109375e0), SC_(0.25159536927531394461171365681798153984008860788433e2), + SC_(0.191501369476318359375e2), SC_(0.905791938304901123046875e0), SC_(0.27981144116304097310999832251084464601495299273012e2), + SC_(0.191501369476318359375e2), SC_(0.9133758544921875e0), SC_(0.2842095956069201237182209580237143358149447721357e2), + SC_(0.191501369476318359375e2), SC_(0.957506835460662841796875e0), SC_(0.3228554268917209487068998151650754251587634078153e2), + SC_(0.191501369476318359375e2), SC_(0.964888513088226318359375e0), SC_(0.33352916951148482276191354708667961683209471845728e2), + SC_(0.191501369476318359375e2), SC_(0.967694938182830810546875e0), SC_(0.33822244860537716227785079860342838562349938371864e2), + SC_(0.191501369476318359375e2), SC_(0.968867778778076171875e0), SC_(0.34031194134737293949506052326607402017063183344223e2), + SC_(0.191501369476318359375e2), SC_(0.992881298065185546875e0), SC_(0.42581168561936959716980709473388925815561119615999e2), + SC_(0.191501369476318359375e2), SC_(0.996461331844329833984375e0), SC_(0.46717381433158210856334059154587912791924945189265e2), + SC_(0.192977695465087890625e2), SC_(0.97540400922298431396484375e-1), SC_(0.19342982628708131433895278304168613379920608606336e2), + SC_(0.192977695465087890625e2), SC_(0.12698681652545928955078125e0), SC_(0.19374689773610942509772563394512491878765485167684e2), + SC_(0.192977695465087890625e2), SC_(0.135477006435394287109375e0), SC_(0.19385430319660352589984368111519041916999084782488e2), + SC_(0.192977695465087890625e2), SC_(0.188381969928741455078125e0), SC_(0.19468937686314991463609027287559486292813687936264e2), + SC_(0.192977695465087890625e2), SC_(0.22103404998779296875e0), SC_(0.19535255581381067407133658315578608960013449781566e2), + SC_(0.192977695465087890625e2), SC_(0.278498232364654541015625e0), SC_(0.19681253365614675608611799334307280468796699370731e2), + SC_(0.192977695465087890625e2), SC_(0.308167040348052978515625e0), SC_(0.1977227778386985949454928463790025668906232322804e2), + SC_(0.192977695465087890625e2), SC_(0.546881496906280517578125e0), SC_(0.21012856060319105834560169950359243723097783093961e2), + SC_(0.192977695465087890625e2), SC_(0.54722058773040771484375e0), SC_(0.21015462457200107208987738397941670483486147970704e2), + SC_(0.192977695465087890625e2), SC_(0.6323592662811279296875e0), SC_(0.2178340396156453293630225427159108135935170341999e2), + SC_(0.192977695465087890625e2), SC_(0.814723670482635498046875e0), SC_(0.24760422781218968616926899638780116092411638903143e2), + SC_(0.192977695465087890625e2), SC_(0.835008561611175537109375e0), SC_(0.2531468352867127861778979703350290564620482923062e2), + SC_(0.192977695465087890625e2), SC_(0.905791938304901123046875e0), SC_(0.28137748841553570479859160601033236680616154514941e2), + SC_(0.192977695465087890625e2), SC_(0.9133758544921875e0), SC_(0.2857773026667808508643081683180461854320839559518e2), + SC_(0.192977695465087890625e2), SC_(0.957506835460662841796875e0), SC_(0.32443318509404672259865818849318152942509061644305e2), + SC_(0.192977695465087890625e2), SC_(0.964888513088226318359375e0), SC_(0.33510867594410750608035302554008769378152991743644e2), + SC_(0.192977695465087890625e2), SC_(0.967694938182830810546875e0), SC_(0.33980262484505211179502091374296194517485807715332e2), + SC_(0.192977695465087890625e2), SC_(0.968867778778076171875e0), SC_(0.34189239835265606599090370663118867345579422183663e2), + SC_(0.192977695465087890625e2), SC_(0.992881298065185546875e0), SC_(0.42739800197991730528738944815644489569091822947309e2), + SC_(0.192977695465087890625e2), SC_(0.996461331844329833984375e0), SC_(0.46876102254398796228483373773359897821011055550046e2), + SC_(0.193538990020751953125e2), SC_(0.97540400922298431396484375e-1), SC_(0.19399168335284176904234924545094028129533806151985e2), + SC_(0.193538990020751953125e2), SC_(0.12698681652545928955078125e0), SC_(0.19430914670058108818658478242802865229933537562992e2), + SC_(0.193538990020751953125e2), SC_(0.135477006435394287109375e0), SC_(0.19441668443345068824360917663234279430271912414544e2), + SC_(0.193538990020751953125e2), SC_(0.188381969928741455078125e0), SC_(0.1952527782726560941262278723049449573586256412141e2), + SC_(0.193538990020751953125e2), SC_(0.22103404998779296875e0), SC_(0.19591675707660317601139881943186872822092204138608e2), + SC_(0.193538990020751953125e2), SC_(0.278498232364654541015625e0), SC_(0.19737846403604750962747538168233789057311450871052e2), + SC_(0.193538990020751953125e2), SC_(0.308167040348052978515625e0), SC_(0.1982897644902540397051527622485752131661863988877e2), + SC_(0.193538990020751953125e2), SC_(0.546881496906280517578125e0), SC_(0.21070839433502876428075384353813146894769373214289e2), + SC_(0.193538990020751953125e2), SC_(0.54722058773040771484375e0), SC_(0.21073448245974306317660504029274307954995331548824e2), + SC_(0.193538990020751953125e2), SC_(0.6323592662811279296875e0), SC_(0.21842055006396772612724969061930957826195872082693e2), + SC_(0.193538990020751953125e2), SC_(0.814723670482635498046875e0), SC_(0.24820937924698674003672426700115065805726709523954e2), + SC_(0.193538990020751953125e2), SC_(0.835008561611175537109375e0), SC_(0.25375448048096618398138687860814179129031727150161e2), + SC_(0.193538990020751953125e2), SC_(0.905791938304901123046875e0), SC_(0.28199459044097423979479129192640406766590043517296e2), + SC_(0.193538990020751953125e2), SC_(0.9133758544921875e0), SC_(0.28639549140424356664047741417330717301236740237857e2), + SC_(0.193538990020751953125e2), SC_(0.957506835460662841796875e0), SC_(0.32505800013488926954471846265304385951704543101519e2), + SC_(0.193538990020751953125e2), SC_(0.964888513088226318359375e0), SC_(0.3357346516002174426799302958153598225560810167169e2), + SC_(0.193538990020751953125e2), SC_(0.967694938182830810546875e0), SC_(0.34042904581351626237017161120798419635896368374329e2), + SC_(0.193538990020751953125e2), SC_(0.968867778778076171875e0), SC_(0.34251900609024499081879095809713735021646243651172e2), + SC_(0.193538990020751953125e2), SC_(0.992881298065185546875e0), SC_(0.42802852178615091316605100215711100861134240554322e2), + SC_(0.193538990020751953125e2), SC_(0.996461331844329833984375e0), SC_(0.46939214022047184468864407874819371857388859478396e2), + SC_(0.193773555755615234375e2), SC_(0.97540400922298431396484375e-1), SC_(0.1942265213062455442730487711056272532344602499804e2), + SC_(0.193773555755615234375e2), SC_(0.12698681652545928955078125e0), SC_(0.19454417438245281072521639887164744063228552120154e2), + SC_(0.193773555755615234375e2), SC_(0.135477006435394287109375e0), SC_(0.19465177616573950993276836025871799063376652263963e2), + SC_(0.193773555755615234375e2), SC_(0.188381969928741455078125e0), SC_(0.19548836424020033391228637761624363274869989047818e2), + SC_(0.193773555755615234375e2), SC_(0.22103404998779296875e0), SC_(0.19615273083546930580497236468994609251014925059012e2), + SC_(0.193773555755615234375e2), SC_(0.278498232364654541015625e0), SC_(0.19761527700118236279676413294270784335847762518883e2), + SC_(0.193773555755615234375e2), SC_(0.308167040348052978515625e0), SC_(0.19852709069955831322513295812458096246012950546068e2), + SC_(0.193773555755615234375e2), SC_(0.546881496906280517578125e0), SC_(0.21095199967507860722465696732547113306908297482812e2), + SC_(0.193773555755615234375e2), SC_(0.54722058773040771484375e0), SC_(0.21097809967101253013800351459923876879483608834996e2), + SC_(0.193773555755615234375e2), SC_(0.6323592662811279296875e0), SC_(0.21866744605870484422233338060124216067065833763869e2), + SC_(0.193773555755615234375e2), SC_(0.814723670482635498046875e0), SC_(0.24846556538866907585112446065856668877097292448131e2), + SC_(0.193773555755615234375e2), SC_(0.835008561611175537109375e0), SC_(0.25401192124869322184373377196242822732558533903529e2), + SC_(0.193773555755615234375e2), SC_(0.905791938304901123046875e0), SC_(0.2822568150952870373539701545971920732141358257908e2), + SC_(0.193773555755615234375e2), SC_(0.9133758544921875e0), SC_(0.28665826846907600136939065224035897188637748584595e2), + SC_(0.193773555755615234375e2), SC_(0.957506835460662841796875e0), SC_(0.32532415772317922321363543682940062124472089104758e2), + SC_(0.193773555755615234375e2), SC_(0.964888513088226318359375e0), SC_(0.33600140346608663369110289991798618568036637590882e2), + SC_(0.193773555755615234375e2), SC_(0.967694938182830810546875e0), SC_(0.34069602586873275279638524032678766324801463284443e2), + SC_(0.193773555755615234375e2), SC_(0.968867778778076171875e0), SC_(0.34278608187932370382085390718528216333548457421904e2), + SC_(0.193773555755615234375e2), SC_(0.992881298065185546875e0), SC_(0.42829760672372562224004917587316130959209536173258e2), + SC_(0.193773555755615234375e2), SC_(0.996461331844329833984375e0), SC_(0.46966153287031080432066689306985536981383654997622e2), + SC_(0.198576259613037109375e2), SC_(0.97540400922298431396484375e-1), SC_(0.19904030604423304605031563493514633738307992609437e2), + SC_(0.198576259613037109375e2), SC_(0.12698681652545928955078125e0), SC_(0.19936570833315624190969427426242240013476377105113e2), + SC_(0.198576259613037109375e2), SC_(0.135477006435394287109375e0), SC_(0.19947593105296469410263622445292701021573670308473e2), + SC_(0.198576259613037109375e2), SC_(0.188381969928741455078125e0), SC_(0.20033282674063040050300953579141288722476938688633e2), + SC_(0.198576259613037109375e2), SC_(0.22103404998779296875e0), SC_(0.2010132319880969855770131312945804722554982609894e2), + SC_(0.198576259613037109375e2), SC_(0.278498232364654541015625e0), SC_(0.20251080842690084124232174281676568056350056899411e2), + SC_(0.198576259613037109375e2), SC_(0.308167040348052978515625e0), SC_(0.20344426725511971972734022788166341869608037868837e2), + SC_(0.198576259613037109375e2), SC_(0.546881496906280517578125e0), SC_(0.21614891816442160044565174998040660587540405838616e2), + SC_(0.198576259613037109375e2), SC_(0.54722058773040771484375e0), SC_(0.21617557550721464687867748153117522385073682809606e2), + SC_(0.198576259613037109375e2), SC_(0.6323592662811279296875e0), SC_(0.22402352004254272922326248272240394226215354060902e2), + SC_(0.198576259613037109375e2), SC_(0.814723670482635498046875e0), SC_(0.25433206020659846451635653798433741272654750854019e2), + SC_(0.198576259613037109375e2), SC_(0.835008561611175537109375e0), SC_(0.25995595362392898132463332233819698889754703798185e2), + SC_(0.198576259613037109375e2), SC_(0.905791938304901123046875e0), SC_(0.28852114779554050919134805178087144273023505005268e2), + SC_(0.198576259613037109375e2), SC_(0.9133758544921875e0), SC_(0.29296245945979418770003750443017967197228540341014e2), + SC_(0.198576259613037109375e2), SC_(0.957506835460662841796875e0), SC_(0.33188793683429374062793811425224827701264176911718e2), + SC_(0.198576259613037109375e2), SC_(0.964888513088226318359375e0), SC_(0.34261391951111262546295049437365991381281491936188e2), + SC_(0.198576259613037109375e2), SC_(0.967694938182830810546875e0), SC_(0.34732752915035376811037289786157212393416163025554e2), + SC_(0.198576259613037109375e2), SC_(0.968867778778076171875e0), SC_(0.34942559726678108457963694029838473139746833304693e2), + SC_(0.198576259613037109375e2), SC_(0.992881298065185546875e0), SC_(0.43511199467896576068981961634268417139076781200662e2), + SC_(0.198576259613037109375e2), SC_(0.996461331844329833984375e0), SC_(0.47650391590892975191956118298593108301517309174576e2), + SC_(0.19929225921630859375e2), SC_(0.97540400922298431396484375e-1), SC_(0.19975886328405901668305093050689660120707141316602e2), + SC_(0.19929225921630859375e2), SC_(0.12698681652545928955078125e0), SC_(0.20008605915303070801582050926154802900088794048964e2), + SC_(0.19929225921630859375e2), SC_(0.135477006435394287109375e0), SC_(0.20019688942140272434266047438835346018341741915511e2), + SC_(0.19929225921630859375e2), SC_(0.188381969928741455078125e0), SC_(0.20105850846081957007436768267527465156969052735547e2), + SC_(0.19929225921630859375e2), SC_(0.22103404998779296875e0), SC_(0.20174266422647172012150979392231829627779414396837e2), + SC_(0.19929225921630859375e2), SC_(0.278498232364654541015625e0), SC_(0.20324849469295553710957519872007277741843364722133e2), + SC_(0.19929225921630859375e2), SC_(0.308167040348052978515625e0), SC_(0.20418709708488624812924232071906879942886525542029e2), + SC_(0.19929225921630859375e2), SC_(0.546881496906280517578125e0), SC_(0.21696140642124331439508133866139932201302076151348e2), + SC_(0.19929225921630859375e2), SC_(0.54722058773040771484375e0), SC_(0.21698820879919996353144760914681524104995035006532e2), + SC_(0.19929225921630859375e2), SC_(0.6323592662811279296875e0), SC_(0.2248785248670487339037134222906002093786314923977e2), + SC_(0.19929225921630859375e2), SC_(0.814723670482635498046875e0), SC_(0.25534059615544403238480102528913553132379413621289e2), + SC_(0.19929225921630859375e2), SC_(0.835008561611175537109375e0), SC_(0.26099050398865334629533525410109890297302254597982e2), + SC_(0.19929225921630859375e2), SC_(0.905791938304901123046875e0), SC_(0.28967243162656729801455052134450446896264393672653e2), + SC_(0.19929225921630859375e2), SC_(0.9133758544921875e0), SC_(0.29412943361256553874561548032106119373059225314887e2), + SC_(0.19929225921630859375e2), SC_(0.957506835460662841796875e0), SC_(0.33316451349895040185793214377890308351033763723109e2), + SC_(0.19929225921630859375e2), SC_(0.964888513088226318359375e0), SC_(0.34391265339548473169790956472595433220957162008448e2), + SC_(0.19929225921630859375e2), SC_(0.967694938182830810546875e0), SC_(0.34863504351466085585554980530563512546455300394261e2), + SC_(0.19929225921630859375e2), SC_(0.968867778778076171875e0), SC_(0.35073684228035671034339162557868963087508664681989e2), + SC_(0.19929225921630859375e2), SC_(0.992881298065185546875e0), SC_(0.43650868172850778393525355531550453773052652935489e2), + SC_(0.19929225921630859375e2), SC_(0.996461331844329833984375e0), SC_(0.47791504341919311227161099998742414152705210735222e2), + SC_(0.24750102996826171875e2), SC_(0.12698681652545928955078125e0), SC_(0.24852206550898319978190983067100514776615377727473e2), + SC_(0.24750102996826171875e2), SC_(0.135477006435394287109375e0), SC_(0.24866464070855511040663338301964479223598462797236e2), + SC_(0.24750102996826171875e2), SC_(0.22103404998779296875e0), SC_(0.25065363656732084822750387055815189187723429657877e2), + SC_(0.24750102996826171875e2), SC_(0.308167040348052978515625e0), SC_(0.25380073970395947922582583397566279723752708041733e2), + SC_(0.24750102996826171875e2), SC_(0.6323592662811279296875e0), SC_(0.2805260001123830228051193977609968789435237527768e2), + SC_(0.24750102996826171875e2), SC_(0.814723670482635498046875e0), SC_(0.32013812288161230383507254058691739835624677000322e2), + SC_(0.24750102996826171875e2), SC_(0.835008561611175537109375e0), SC_(0.32751766781102618452555944128390146420838932359409e2), + SC_(0.24750102996826171875e2), SC_(0.905791938304901123046875e0), SC_(0.36511896764707420590932811629213597607442192208936e2), + SC_(0.24750102996826171875e2), SC_(0.9133758544921875e0), SC_(0.37098090138580051103542727188386673865227695373655e2), + SC_(0.24750102996826171875e2), SC_(0.968867778778076171875e0), SC_(0.44576670431026372474999805087999761032786564151124e2), + SC_(0.637722015380859375e2), SC_(0.12698681652545928955078125e0), SC_(0.64029707052819358798026202945496034201051376675713e2), + SC_(0.637722015380859375e2), SC_(0.135477006435394287109375e0), SC_(0.64065662867329731510905167206470426348000579756421e2), + SC_(0.637722015380859375e2), SC_(0.22103404998779296875e0), SC_(0.64567221477870510803896006565094849896791667291395e2), + SC_(0.637722015380859375e2), SC_(0.308167040348052978515625e0), SC_(0.65360653914250445223499712404078058345986158088873e2), + SC_(0.637722015380859375e2), SC_(0.6323592662811279296875e0), SC_(0.72091068969413354768470555979894375250854883743041e2), + SC_(0.637722015380859375e2), SC_(0.814723670482635498046875e0), SC_(0.82046315600696025842317036872213782774465494655701e2), + SC_(0.637722015380859375e2), SC_(0.835008561611175537109375e0), SC_(0.83898717232428299594870923028741701777220145751954e2), + SC_(0.637722015380859375e2), SC_(0.905791938304901123046875e0), SC_(0.93328998463557747079788635557387681634136121872602e2), + SC_(0.637722015380859375e2), SC_(0.9133758544921875e0), SC_(0.94798090083448401328383552423060476950786086617102e2), + SC_(0.637722015380859375e2), SC_(0.968867778778076171875e0), SC_(0.11352388177887899862769270203556217867987795179232e3), + SC_(0.1252804412841796875e3), SC_(0.12698681652545928955078125e0), SC_(0.12579154382331624849995504971737598053587224775121e3), + SC_(0.1252804412841796875e3), SC_(0.135477006435394287109375e0), SC_(0.1258629123249332796639091198974708149109486889059e3), + SC_(0.1252804412841796875e3), SC_(0.22103404998779296875e0), SC_(0.12685851994596818963211475589675243092409541745734e3), + SC_(0.1252804412841796875e3), SC_(0.308167040348052978515625e0), SC_(0.12843375727132041082283110776238893197168320725174e3), + SC_(0.1252804412841796875e3), SC_(0.6323592662811279296875e0), SC_(0.14180779137123412498124168609891981092056098817107e3), + SC_(0.1252804412841796875e3), SC_(0.814723670482635498046875e0), SC_(0.16162410252299947507128901048395142821231251884648e3), + SC_(0.1252804412841796875e3), SC_(0.835008561611175537109375e0), SC_(0.1653152013141215856944195913668621513903319809522e3), + SC_(0.1252804412841796875e3), SC_(0.905791938304901123046875e0), SC_(0.18412078840911869664652903874125802301205742425445e3), + SC_(0.1252804412841796875e3), SC_(0.9133758544921875e0), SC_(0.18705231339830243358318239275545179927816644574167e3), + SC_(0.1252804412841796875e3), SC_(0.968867778778076171875e0), SC_(0.22444947582863925345693507386186458537730111006249e3), + SC_(0.25554705810546875e3), SC_(0.12698681652545928955078125e0), SC_(0.25658502090244978090877141970893960506917422719394e3), + SC_(0.25554705810546875e3), SC_(0.135477006435394287109375e0), SC_(0.25672995659370167636074162037295145926099041806219e3), + SC_(0.25554705810546875e3), SC_(0.22103404998779296875e0), SC_(0.25875180174660371624905238703656604914656092031662e3), + SC_(0.25554705810546875e3), SC_(0.308167040348052978515625e0), SC_(0.26195057844009785727683464893701821156596484750488e3), + SC_(0.25554705810546875e3), SC_(0.6323592662811279296875e0), SC_(0.2891011463129193460573977573707949150504396644584e3), + SC_(0.25554705810546875e3), SC_(0.814723670482635498046875e0), SC_(0.32930739590633854381605546287467793111283231579432e3), + SC_(0.25554705810546875e3), SC_(0.835008561611175537109375e0), SC_(0.33679375763609597539308592356025124507335101594018e3), + SC_(0.25554705810546875e3), SC_(0.905791938304901123046875e0), SC_(0.37492445861810085142108868488536553926419178382588e3), + SC_(0.25554705810546875e3), SC_(0.9133758544921875e0), SC_(0.38086699090058068271279985054050727201708494031721e3), + SC_(0.25554705810546875e3), SC_(0.968867778778076171875e0), SC_(0.45664903993544502840751750992103769324314215524713e3), + SC_(0.503011474609375e3), SC_(0.12698681652545928955078125e0), SC_(0.50505659203440279938830010253440085323070647638583e3), + SC_(0.503011474609375e3), SC_(0.135477006435394287109375e0), SC_(0.50534216388830445980335135399460817135115935936356e3), + SC_(0.503011474609375e3), SC_(0.22103404998779296875e0), SC_(0.50932593644875965893234599959022743691202259918901e3), + SC_(0.503011474609375e3), SC_(0.308167040348052978515625e0), SC_(0.51562892434896885100439228418671454505533824895074e3), + SC_(0.503011474609375e3), SC_(0.6323592662811279296875e0), SC_(0.5691388458382702939253765036826448847256790383481e3), + SC_(0.503011474609375e3), SC_(0.814723670482635498046875e0), SC_(0.64841647174915260562168094112340451126659760019193e3), + SC_(0.503011474609375e3), SC_(0.835008561611175537109375e0), SC_(0.66318246845203780675903083663338059471936088994611e3), + SC_(0.503011474609375e3), SC_(0.905791938304901123046875e0), SC_(0.73841077722591654304210596796019202721941795711926e3), + SC_(0.503011474609375e3), SC_(0.9133758544921875e0), SC_(0.75013755084726454965881401907276391709101666410419e3), + SC_(0.503011474609375e3), SC_(0.968867778778076171875e0), SC_(0.89973134282710925452142048450157816262200221102697e3), + SC_(0.10074598388671875e4), SC_(0.12698681652545928955078125e0), SC_(0.10115604555368949483687471890824497026532038567019e4), + SC_(0.10074598388671875e4), SC_(0.135477006435394287109375e0), SC_(0.1012133050497275830780347173002131083103600802088e4), + SC_(0.10074598388671875e4), SC_(0.22103404998779296875e0), SC_(0.1020120880922149604989950464445671598395259388161e4), + SC_(0.10074598388671875e4), SC_(0.308167040348052978515625e0), SC_(0.10327591029439108059157922326032636145569231829932e4), + SC_(0.10074598388671875e4), SC_(0.6323592662811279296875e0), SC_(0.11400597837237931811476044006089184883421460101765e4), + SC_(0.10074598388671875e4), SC_(0.814723670482635498046875e0), SC_(0.12990515604873895842003339764405472011586481003657e4), + SC_(0.10074598388671875e4), SC_(0.835008561611175537109375e0), SC_(0.13286671610382179011061935562304250712176020940221e4), + SC_(0.10074598388671875e4), SC_(0.905791938304901123046875e0), SC_(0.14795587929982445488758894910099973156560147854256e4), + SC_(0.10074598388671875e4), SC_(0.9133758544921875e0), SC_(0.15030813318756246891355137019045501942292731438192e4), + SC_(0.10074598388671875e4), SC_(0.968867778778076171875e0), SC_(0.18031683136020447255217816635153572296860929726591e4), + SC_(0.1185395751953125e4), SC_(0.12698681652545928955078125e0), SC_(0.11902165793870267987435741776753047875920265751213e4), + SC_(0.1185395751953125e4), SC_(0.135477006435394287109375e0), SC_(0.11908897391528240120679535097563994079186387409261e4), + SC_(0.1185395751953125e4), SC_(0.22103404998779296875e0), SC_(0.12002804010608050581829575008183192405062961123642e4), + SC_(0.1185395751953125e4), SC_(0.308167040348052978515625e0), SC_(0.12151378934996375824220394156626328228788742423087e4), + SC_(0.1185395751953125e4), SC_(0.6323592662811279296875e0), SC_(0.13412676685915296881822755838145300215000346890517e4), + SC_(0.1185395751953125e4), SC_(0.814723670482635498046875e0), SC_(0.15281201627814349911219322982937563560261834041215e4), + SC_(0.1185395751953125e4), SC_(0.835008561611175537109375e0), SC_(0.15629208273736966018850653753226433255433492941276e4), + SC_(0.1185395751953125e4), SC_(0.905791938304901123046875e0), SC_(0.17402117426998289313370860215974579190403457757437e4), + SC_(0.1185395751953125e4), SC_(0.9133758544921875e0), SC_(0.17678472099706618291007501715448169066167629554269e4), + SC_(0.1185395751953125e4), SC_(0.968867778778076171875e0), SC_(0.2120363403215687272189669275949606957433496693392e4) + }; +#undef SC_ + + diff --git a/test/ellint_k_data.ipp b/test/ellint_k_data.ipp new file mode 100644 index 000000000..0b8ea2255 --- /dev/null +++ b/test/ellint_k_data.ipp @@ -0,0 +1,110 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 100> ellint_k_data = { + SC_(-0.99042308330535888671875e0), SC_(0.3377711175347896212115917173531827081735908096628e1), + SC_(-0.936324596405029296875e0), SC_(0.24799928378892127263868582279024816073017669022263e1), + SC_(-0.931098163127899169921875e0), SC_(0.24445366497109921574142184681825951967450363552834e1), + SC_(-0.928566992282867431640625e0), SC_(0.24283992440860978354078883091691713688375646750641e1), + SC_(-0.927107870578765869140625e0), SC_(0.24193766718674199444433297470157473721017375354321e1), + SC_(-0.907647669315338134765625e0), SC_(0.23150567546618192429964125282245930582572797978818e1), + SC_(-0.89755761623382568359375e0), SC_(0.22701438887345149877132302334749426657376446371554e1), + SC_(-0.805727422237396240234375e0), SC_(0.20065967275502056522161145711205880615166307631054e1), + SC_(-0.804910182952880859375e0), SC_(0.20049607901713509576649915223436597681197065440791e1), + SC_(-0.78026759624481201171875e0), SC_(0.19592100556166276984041617991618803394021101627948e1), + SC_(-0.775062084197998046875e0), SC_(0.19503477481367618080344709104861737619417735663137e1), + SC_(-0.749625742435455322265625e0), SC_(0.19104400630324162677555937926672404286027386161554e1), + SC_(-0.748197972774505615234375e0), SC_(0.19083524493958065222471464174677965403570194813599e1), + SC_(-0.746017634868621826171875e0), SC_(0.19051932837924025803305082607208317930893376343866e1), + SC_(-0.729037344455718994140625e0), SC_(0.18817193270349712906579552152250851402884979195389e1), + SC_(-0.7162187099456787109375e0), SC_(0.18652211443514110895753017730892076794376353163691e1), + SC_(-0.70176351070404052734375e0), SC_(0.18477488779057501703815851124765277365377561449605e1), + SC_(-0.684765398502349853515625e0), SC_(0.18285893795597042965531449099985329446409496660036e1), + SC_(-0.657618343830108642578125e0), SC_(0.18007288418337930091030357471813257042005823390856e1), + SC_(-0.65226137638092041015625e0), SC_(0.17955901766989373531455842967467859457919280319805e1), + SC_(-0.626246631145477294921875e0), SC_(0.17721381024097650892501675317068276777213166539113e1), + SC_(-0.62322795391082763671875e0), SC_(0.17695682119254878963375370515480337143290717650699e1), + SC_(-0.579573929309844970703125e0), SC_(0.17355084423179730268283500692922635797002148145716e1), + SC_(-0.576143443584442138671875e0), SC_(0.17330585071273208935299581419876214110701077039073e1), + SC_(-0.557924091815948486328125e0), SC_(0.17205458226692737403200667710314658175352937313565e1), + SC_(-0.4461468160152435302734375e0), SC_(0.1659143428704545241870880533420140506147522333952e1), + SC_(-0.442996323108673095703125e0), SC_(0.16577357283229169972381488150848899831930773096426e1), + SC_(-0.4059340953826904296875e0), SC_(0.16422906110493949856538834271333672987146221978421e1), + SC_(-0.3961667716503143310546875e0), SC_(0.16385456546730544519392193048583469346592283426711e1), + SC_(-0.38365900516510009765625e0), SC_(0.16339371135272803257688801436358682987064021339502e1), + SC_(-0.366892278194427490234375e0), SC_(0.16280775355945302002930914045811739595274403877109e1), + SC_(-0.3657942116260528564453125e0), SC_(0.16277061660792581984612626919271028055659130917587e1), + SC_(-0.2774055898189544677734375e0), SC_(0.16023984430282800438657607498499405531471989727973e1), + SC_(-0.236876904964447021484375e0), SC_(0.15935547153447952975660160168795914210559129958763e1), + SC_(-0.215539872646331787109375e0), SC_(0.1589532821488995266987321628138860611930750500013e1), + SC_(-0.20251691341400146484375e0), SC_(0.15872846186561139876915281752585049624892405264006e1), + SC_(-0.18253175914287567138671875e0), SC_(0.15841312442860499386355917744088632471227360101517e1), + SC_(-0.15647165477275848388671875e0), SC_(0.15805456328241604119645385355233009390341499402715e1), + SC_(-0.155818879604339599609375e0), SC_(0.15804633259546865645050516399359359956031398166357e1), + SC_(-0.12250564992427825927734375e0), SC_(0.15767400871102419514183615836102806382524229776023e1), + SC_(-0.108822040259838104248046875e0), SC_(0.15754779970087063716770992170704593788694293192204e1), + SC_(-0.84016263484954833984375e-1), SC_(0.15735793449827667079522175566532496627258499829808e1), + SC_(-0.5047737061977386474609375e-1), SC_(0.15717983468978644730669790777144243904901266418816e1), + SC_(-0.2924356050789356231689453125e-1), SC_(0.15711323191301626906143245522892930046111479139043e1), + SC_(-0.2485703863203525543212890625e-1), SC_(0.15710390490728134946675992373238514306032071520432e1), + SC_(-0.2046610601246356964111328125e-1), SC_(0.15709608520853443438268600756375428033257896081621e1), + SC_(-0.1881679333746433258056640625e-1), SC_(0.15709353981303437885151982749950681277334084182671e1), + SC_(0.73303808458149433135986328125e-2), SC_(0.15708174289149913873348609319163921760640886342517e1), + SC_(0.93767531216144561767578125e-1), SC_(0.15742662557451933000168330868057640508121413022011e1), + SC_(0.94445712864398956298828125e-1), SC_(0.15743168849992435161106319232000048329301973530501e1), + SC_(0.26472222805023193359375e0), SC_(0.15994564178224078022860215956833860720177728374035e1), + SC_(0.2795303165912628173828125e0), SC_(0.16029072336719100270539575574782330640458373122935e1), + SC_(0.2926295697689056396484375e0), SC_(0.16061468472007804719214570477294979509859730905091e1), + SC_(0.31095921993255615234375e0), SC_(0.1610983807838740712761368067192691405393131953881e1), + SC_(0.311484813690185546875e0), SC_(0.16111278469143224539903626000312660918785264354958e1), + SC_(0.3272143900394439697265625e0), SC_(0.16155797975233104967915214233565515716306532094698e1), + SC_(0.35747349262237548828125e0), SC_(0.16249404264362997324992641484372408858215631632002e1), + SC_(0.3627222478389739990234375e0), SC_(0.16266751570835125835068247288118651474745966539618e1), + SC_(0.3896603286266326904296875e0), SC_(0.16361224926513534404184731359873689992038364400691e1), + SC_(0.4120951592922210693359375e0), SC_(0.16447205720518345410219553921960387345221364427466e1), + SC_(0.418732583522796630859375e0), SC_(0.16473983100889105980743072684285213201961112169823e1), + SC_(0.451680660247802734375e0), SC_(0.16616537578199064695178688197080983284328919711812e1), + SC_(0.4812971055507659912109375e0), SC_(0.16759409027443021223185102539476096588592566487743e1), + SC_(0.486267507076263427734375e0), SC_(0.16784859353297838419400330721985671192135840854661e1), + SC_(0.509375751018524169921875e0), SC_(0.16909133957115563796676413045863923443879243171298e1), + SC_(0.515482723712921142578125e0), SC_(0.16943684153133994180565117266182132481147687142707e1), + SC_(0.52750241756439208984375e0), SC_(0.17013882771778724726932964262059466393678608760062e1), + SC_(0.531035959720611572265625e0), SC_(0.17035089955832848907265521472430416089318818612814e1), + SC_(0.584416687488555908203125e0), SC_(0.17390197327988114565246996689229900966075086201035e1), + SC_(0.587952077388763427734375e0), SC_(0.17416228307854377082064181076439075579393688159215e1), + SC_(0.5904018878936767578125e0), SC_(0.17434466233796448758342732941787231810206075234501e1), + SC_(0.5945618152618408203125e0), SC_(0.17465816562648604997075231101739061981996142156151e1), + SC_(0.5958592891693115234375e0), SC_(0.17475694098213745790315441260074496951659216831348e1), + SC_(0.59621369838714599609375e0), SC_(0.17478400476807070940242210641459121619833657136515e1), + SC_(0.60056293010711669921875e0), SC_(0.17511905345983286033588753251945176786720874355107e1), + SC_(0.6150639057159423828125e0), SC_(0.17627654245195403785778656645694141888969985612575e1), + SC_(0.629449188709259033203125e0), SC_(0.17748975492324966654441702323788071861970996989102e1), + SC_(0.6438083648681640625e0), SC_(0.17877036110717852208569994416480820233927146151031e1), + SC_(0.64691746234893798828125e0), SC_(0.17905734108284599293495949910396246976486037925061e1), + SC_(0.67001879215240478515625e0), SC_(0.18130645541261783392588745817521015225200222756122e1), + SC_(0.698260128498077392578125e0), SC_(0.18436823516091780453599478590327018132893271380223e1), + SC_(0.744858920574188232421875e0), SC_(0.1903528375308813580432291088034833377552119409638e1), + SC_(0.75686252117156982421875e0), SC_(0.1921257878508255118587957424341444494608703851379e1), + SC_(0.81158483028411865234375e0), SC_(0.20185697260071845965032147456371482208660801062775e1), + SC_(0.826752603054046630859375e0), SC_(0.20517631918180497335416092658794507587336758082983e1), + SC_(0.831471920013427734375e0), SC_(0.20628007317688811564201523487885011440347375983853e1), + SC_(0.841750323772430419921875e0), SC_(0.20881524894194487687984856759006121206951763482194e1), + SC_(0.867987096309661865234375e0), SC_(0.21626553443645542835585774105841427525784980815445e1), + SC_(0.90044462680816650390625e0), SC_(0.22824738454300952253057616561926426370482782713694e1), + SC_(0.914334356784820556640625e0), SC_(0.23479275233217975943026959240752324894340069192044e1), + SC_(0.915014088153839111328125e0), SC_(0.23514264944956428937368978831156074286111428698483e1), + SC_(0.918985307216644287109375e0), SC_(0.23725035893866734721028942202359170270846633736916e1), + SC_(0.9297773838043212890625e0), SC_(0.2436037207911617888011813888250469085423814242563e1), + SC_(0.935390174388885498046875e0), SC_(0.24734276363166698887860324191541438396367793619322e1), + SC_(0.937735855579376220703125e0), SC_(0.24901081139855480473523004657581668979713789812992e1), + SC_(0.941185891628265380859375e0), SC_(0.25159148953544058237986278218012688105174747190388e1), + SC_(0.962219536304473876953125e0), SC_(0.27197444631906795382660830171523843323266857162631e1), + SC_(0.985762655735015869140625e0), SC_(0.31847978937935282927541645440535551111318175394252e1), + SC_(0.988137066364288330078125e0), SC_(0.32733547952035871434783118403258690613147460127497e1), + SC_(0.992922723293304443359375e0), SC_(0.35258676303484017878276559590157568137293088406988e1) + }; +#undef SC_ + diff --git a/test/ellint_pi2_data.ipp b/test/ellint_pi2_data.ipp new file mode 100644 index 000000000..573a4ed36 --- /dev/null +++ b/test/ellint_pi2_data.ipp @@ -0,0 +1,514 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Each row of data contains in order: +// +// n, k, PI(n, k) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 500> ellint_pi2_data = { + SC_(-0.871743316650390625e2), SC_(0.12698681652545928955078125e0), SC_(0.1674125184786922275852201144520277497358358213892e0), + SC_(-0.871743316650390625e2), SC_(0.135477006435394287109375e0), SC_(0.16743071541243053183466547814319460702264753849723e0), + SC_(-0.871743316650390625e2), SC_(0.22103404998779296875e0), SC_(0.16768328087467940131221559947745677007068360020936e0), + SC_(-0.871743316650390625e2), SC_(0.308167040348052978515625e0), SC_(0.16807808560619590184466399113136263382376022541855e0), + SC_(-0.871743316650390625e2), SC_(0.6323592662811279296875e0), SC_(0.17122026715243530525631538196923732076962513344995e0), + SC_(-0.871743316650390625e2), SC_(0.814723670482635498046875e0), SC_(0.17534141630242782956646324755267751416323066482835e0), + SC_(-0.871743316650390625e2), SC_(0.835008561611175537109375e0), SC_(0.17605554592184937069060075230541493581360045985831e0), + SC_(-0.871743316650390625e2), SC_(0.905791938304901123046875e0), SC_(0.17950085945970126738588840411224305832081644195523e0), + SC_(-0.871743316650390625e2), SC_(0.9133758544921875e0), SC_(0.18001354683126288823677625533339788309413921715434e0), + SC_(-0.871743316650390625e2), SC_(0.968867778778076171875e0), SC_(0.1861623643134889055406196973715380337805086459718e0), + SC_(-0.8631682586669921875e2), SC_(0.12698681652545928955078125e0), SC_(0.16823313926270090905448439997177323604952165614363e0), + SC_(-0.8631682586669921875e2), SC_(0.135477006435394287109375e0), SC_(0.16825150634432729564119302859989272874459890613116e0), + SC_(-0.8631682586669921875e2), SC_(0.22103404998779296875e0), SC_(0.1685064347403877889119812191305941553416022238658e0), + SC_(-0.8631682586669921875e2), SC_(0.308167040348052978515625e0), SC_(0.16890493817434378352408134048753732273764880942954e0), + SC_(-0.8631682586669921875e2), SC_(0.6323592662811279296875e0), SC_(0.17207676229429286979803490409285729827120332255809e0), + SC_(-0.8631682586669921875e2), SC_(0.814723670482635498046875e0), SC_(0.17623726816880267488571098227884869828610508117243e0), + SC_(-0.8631682586669921875e2), SC_(0.835008561611175537109375e0), SC_(0.17695826377184426719315773208991477000910029521482e0), + SC_(-0.8631682586669921875e2), SC_(0.905791938304901123046875e0), SC_(0.18043685472666137350386874269852689421871499307432e0), + SC_(-0.8631682586669921875e2), SC_(0.9133758544921875e0), SC_(0.18095451269215495642582809340040493458719660291695e0), + SC_(-0.8631682586669921875e2), SC_(0.968867778778076171875e0), SC_(0.18716320978769236210159810482536135896363176742343e0), + SC_(-0.7767555999755859375e2), SC_(0.12698681652545928955078125e0), SC_(0.17723805469497005138970658754479684034139004976308e0), + SC_(-0.7767555999755859375e2), SC_(0.135477006435394287109375e0), SC_(0.17725833547565335175365419889134424107345532565877e0), + SC_(-0.7767555999755859375e2), SC_(0.22103404998779296875e0), SC_(0.17753984165266644170812805305717146395671420094776e0), + SC_(-0.7767555999755859375e2), SC_(0.308167040348052978515625e0), SC_(0.17797995186642175489596380169052339842058010566152e0), + SC_(-0.7767555999755859375e2), SC_(0.6323592662811279296875e0), SC_(0.18148541433576540744902539513186881476311716728227e0), + SC_(-0.7767555999755859375e2), SC_(0.814723670482635498046875e0), SC_(0.18608934162792226467645945802477829030064897877359e0), + SC_(-0.7767555999755859375e2), SC_(0.835008561611175537109375e0), SC_(0.18688773786015825638183632881144496436170974248241e0), + SC_(-0.7767555999755859375e2), SC_(0.905791938304901123046875e0), SC_(0.19074161304026152406747562924366026789550786287803e0), + SC_(-0.7767555999755859375e2), SC_(0.9133758544921875e0), SC_(0.19131534459003262670423020772987735547496828534479e0), + SC_(-0.7767555999755859375e2), SC_(0.968867778778076171875e0), SC_(0.19819980751100172478383698040644955494927942439633e0), + SC_(-0.6887512969970703125e2), SC_(0.12698681652545928955078125e0), SC_(0.18807673277332863572439323149240003591140207896313e0), + SC_(-0.6887512969970703125e2), SC_(0.135477006435394287109375e0), SC_(0.18809942894445066895052818190744724738603008664113e0), + SC_(-0.6887512969970703125e2), SC_(0.22103404998779296875e0), SC_(0.18841448356519705070217464671784444233160761372693e0), + SC_(-0.6887512969970703125e2), SC_(0.308167040348052978515625e0), SC_(0.1889071243831848858362782229683818449975108831782e0), + SC_(-0.6887512969970703125e2), SC_(0.6323592662811279296875e0), SC_(0.19283429586558276570559152326779096606423284809356e0), + SC_(-0.6887512969970703125e2), SC_(0.814723670482635498046875e0), SC_(0.19799982175435638480350130578229601669520072124985e0), + SC_(-0.6887512969970703125e2), SC_(0.835008561611175537109375e0), SC_(0.19889635678180396557867565231805298960791065374116e0), + SC_(-0.6887512969970703125e2), SC_(0.905791938304901123046875e0), SC_(0.20322643729961523231468602423697484017124986208135e0), + SC_(-0.6887512969970703125e2), SC_(0.9133758544921875e0), SC_(0.20387136735607637387480442251720783691354881786227e0), + SC_(-0.6887512969970703125e2), SC_(0.968867778778076171875e0), SC_(0.21161453485391920919877033907030403099202567227684e0), + SC_(-0.361317138671875e2), SC_(0.12698681652545928955078125e0), SC_(0.25807395141922622129192766140410293065730739479983e0), + SC_(-0.361317138671875e2), SC_(0.135477006435394287109375e0), SC_(0.25811504785027394933935002408996823143204300773286e0), + SC_(-0.361317138671875e2), SC_(0.22103404998779296875e0), SC_(0.25868576719992802882962788582860568063380617782066e0), + SC_(-0.361317138671875e2), SC_(0.308167040348052978515625e0), SC_(0.25957908488371220675239650970681566250728634199314e0), + SC_(-0.361317138671875e2), SC_(0.6323592662811279296875e0), SC_(0.26673759528219383447347331664283586398767715711549e0), + SC_(-0.361317138671875e2), SC_(0.814723670482635498046875e0), SC_(0.27624188294753047128196814230568161804652916161863e0), + SC_(-0.361317138671875e2), SC_(0.835008561611175537109375e0), SC_(0.27790012081814387436020029758750215255750597263172e0), + SC_(-0.361317138671875e2), SC_(0.905791938304901123046875e0), SC_(0.2859382172923565009441543467819242355142627417165e0), + SC_(-0.361317138671875e2), SC_(0.9133758544921875e0), SC_(0.28713902465022766561269528868552426093781301498377e0), + SC_(-0.361317138671875e2), SC_(0.968867778778076171875e0), SC_(0.30160824142871788586221637018441354445836038223767e0), + SC_(-0.17712909698486328125e2), SC_(0.12698681652545928955078125e0), SC_(0.3636729206179323089584368881165294845044180186145e0), + SC_(-0.17712909698486328125e2), SC_(0.135477006435394287109375e0), SC_(0.36375007260253424844068666864895304741725434790239e0), + SC_(-0.17712909698486328125e2), SC_(0.22103404998779296875e0), SC_(0.36482213460485031933513677664348491484058391598753e0), + SC_(-0.17712909698486328125e2), SC_(0.308167040348052978515625e0), SC_(0.3665025099771102643902474028243205860953862778759e0), + SC_(-0.17712909698486328125e2), SC_(0.6323592662811279296875e0), SC_(0.38006573775283109160868693734996149636084699279112e0), + SC_(-0.17712909698486328125e2), SC_(0.814723670482635498046875e0), SC_(0.39831093780271045079340378355274398784600363650505e0), + SC_(-0.17712909698486328125e2), SC_(0.835008561611175537109375e0), SC_(0.40151794120384245966685931317645917709530730447343e0), + SC_(-0.17712909698486328125e2), SC_(0.905791938304901123046875e0), SC_(0.41714508520694688780251187692727469785205563133695e0), + SC_(-0.17712909698486328125e2), SC_(0.9133758544921875e0), SC_(0.41948979991844566329448196311636376356543866861521e0), + SC_(-0.17712909698486328125e2), SC_(0.968867778778076171875e0), SC_(0.44789348577906501674071047048613668162470396490226e0), + SC_(-0.15664134979248046875e2), SC_(0.12698681652545928955078125e0), SC_(0.38540911235754062027100516500243302844112919081157e0), + SC_(-0.15664134979248046875e2), SC_(0.135477006435394287109375e0), SC_(0.38549479957369784596836782557901855735579578476386e0), + SC_(-0.15664134979248046875e2), SC_(0.22103404998779296875e0), SC_(0.38668559678037966531615532383662693169751820619251e0), + SC_(-0.15664134979248046875e2), SC_(0.308167040348052978515625e0), SC_(0.38855258005908474248043155982604199055563647089976e0), + SC_(-0.15664134979248046875e2), SC_(0.6323592662811279296875e0), SC_(0.4036431452565898907217581801534326597925982641061e0), + SC_(-0.15664134979248046875e2), SC_(0.814723670482635498046875e0), SC_(0.42399489399858261609254890113247088932413060034193e0), + SC_(-0.15664134979248046875e2), SC_(0.835008561611175537109375e0), SC_(0.42757740157245514965345992590002825014839199992751e0), + SC_(-0.15664134979248046875e2), SC_(0.905791938304901123046875e0), SC_(0.44505252332215040025742915418095282301447922985417e0), + SC_(-0.15664134979248046875e2), SC_(0.9133758544921875e0), SC_(0.44767679456118756417042666801411008888573438377822e0), + SC_(-0.15664134979248046875e2), SC_(0.968867778778076171875e0), SC_(0.47950133312940792812445326014374908427710586619841e0), + SC_(-0.85150146484375e1), SC_(0.12698681652545928955078125e0), SC_(0.51024420337071918152663377907810133020609909421411e0), + SC_(-0.85150146484375e1), SC_(0.135477006435394287109375e0), SC_(0.51038538213980156116084936888558434244159146142024e0), + SC_(-0.85150146484375e1), SC_(0.22103404998779296875e0), SC_(0.51234852907158154983060025475260748897671531226719e0), + SC_(-0.85150146484375e1), SC_(0.308167040348052978515625e0), SC_(0.51543084244645024279702031896115309018656014885961e0), + SC_(-0.85150146484375e1), SC_(0.6323592662811279296875e0), SC_(0.54053307124193505250530229329510213640826062354041e0), + SC_(-0.85150146484375e1), SC_(0.814723670482635498046875e0), SC_(0.57485945052545126554066528283220704394725671520491e0), + SC_(-0.85150146484375e1), SC_(0.835008561611175537109375e0), SC_(0.58095036613926759413831871317625984920620978697546e0), + SC_(-0.85150146484375e1), SC_(0.905791938304901123046875e0), SC_(0.6108332503553336432615891037745891649411427341433e0), + SC_(-0.85150146484375e1), SC_(0.9133758544921875e0), SC_(0.61534259474950438497700068371964480496721253218291e0), + SC_(-0.85150146484375e1), SC_(0.968867778778076171875e0), SC_(0.67036117324955476789547801395426121216314167238235e0), + SC_(-0.77490386962890625e1), SC_(0.12698681652545928955078125e0), SC_(0.53214537749930974923530793848098446673924558763616e0), + SC_(-0.77490386962890625e1), SC_(0.135477006435394287109375e0), SC_(0.53229733769976224201856173461401623455938844211535e0), + SC_(-0.77490386962890625e1), SC_(0.22103404998779296875e0), SC_(0.53441061264437586894262479620958694286810111069806e0), + SC_(-0.77490386962890625e1), SC_(0.308167040348052978515625e0), SC_(0.5377294161924223676286300166620738439919478705884e0), + SC_(-0.77490386962890625e1), SC_(0.6323592662811279296875e0), SC_(0.56479107742731414101881346070741395143895861655694e0), + SC_(-0.77490386962890625e1), SC_(0.814723670482635498046875e0), SC_(0.601881967717377378801568953100251074711843156646e0), + SC_(-0.77490386962890625e1), SC_(0.835008561611175537109375e0), SC_(0.6084722098461551401225157616926834919686419666249e0), + SC_(-0.77490386962890625e1), SC_(0.905791938304901123046875e0), SC_(0.6408364334233277447605831932496202047571760069003e0), + SC_(-0.77490386962890625e1), SC_(0.9133758544921875e0), SC_(0.6457242303367545109978589926395419470832321596317e0), + SC_(-0.77490386962890625e1), SC_(0.968867778778076171875e0), SC_(0.70542281927214050120129262462084303700899187217965e0), + SC_(-0.2144354343414306640625e1), SC_(0.12698681652545928955078125e0), SC_(0.8884345345550095441084403163369684177500561715756e0), + SC_(-0.2144354343414306640625e1), SC_(0.135477006435394287109375e0), SC_(0.8887968025591633966992484831363379920765936172689e0), + SC_(-0.2144354343414306640625e1), SC_(0.22103404998779296875e0), SC_(0.89384161922839613483917173517149866654437346469257e0), + SC_(-0.2144354343414306640625e1), SC_(0.308167040348052978515625e0), SC_(0.90178990573641241465368857232390076077058848312029e0), + SC_(-0.2144354343414306640625e1), SC_(0.6323592662811279296875e0), SC_(0.96773060709736540924264715674562047296122735253741e0), + SC_(-0.2144354343414306640625e1), SC_(0.814723670482635498046875e0), SC_(0.10611068880605475995293214915625250910296775013033e1), + SC_(-0.2144354343414306640625e1), SC_(0.835008561611175537109375e0), SC_(0.10780213170897016729377668066373680364223012950482e1), + SC_(-0.2144354343414306640625e1), SC_(0.905791938304901123046875e0), SC_(0.11623009444183199820310279726943206804138051586191e1), + SC_(-0.2144354343414306640625e1), SC_(0.9133758544921875e0), SC_(0.1175187305462279478043232980591313771690049845558e1), + SC_(-0.2144354343414306640625e1), SC_(0.968867778778076171875e0), SC_(0.13351521542704530399309520432473912325010294185526e1), + SC_(0.97540400922298431396484375e-1), SC_(0.97540400922298431396484375e-1), SC_(0.16575625537539334492135469554161301069952233501127e1), + SC_(0.97540400922298431396484375e-1), SC_(0.12698681652545928955078125e0), SC_(0.16604070522066793218689200133443291186241997132459e1), + SC_(0.97540400922298431396484375e-1), SC_(0.135477006435394287109375e0), SC_(0.16613706575726806739443199730186852538567183836454e1), + SC_(0.97540400922298431396484375e-1), SC_(0.188381969928741455078125e0), SC_(0.16688635821372355395722986731779999976891844033276e1), + SC_(0.97540400922298431396484375e-1), SC_(0.22103404998779296875e0), SC_(0.16748152996721641722488207500769930971424945210048e1), + SC_(0.97540400922298431396484375e-1), SC_(0.278498232364654541015625e0), SC_(0.16879215145724407449379423186230158674479606429932e1), + SC_(0.97540400922298431396484375e-1), SC_(0.308167040348052978515625e0), SC_(0.1696095260039130373699296075781152727841065441201e1), + SC_(0.97540400922298431396484375e-1), SC_(0.546881496906280517578125e0), SC_(0.18076786679621317362691990942335058424411444922867e1), + SC_(0.97540400922298431396484375e-1), SC_(0.54722058773040771484375e0), SC_(0.18079134451426267469684927957112878148158019786046e1), + SC_(0.97540400922298431396484375e-1), SC_(0.6323592662811279296875e0), SC_(0.18771472642488059146880340777640910527661803171727e1), + SC_(0.97540400922298431396484375e-1), SC_(0.814723670482635498046875e0), SC_(0.21465590874631142389243971571908703626422382902216e1), + SC_(0.97540400922298431396484375e-1), SC_(0.835008561611175537109375e0), SC_(0.2196877276017096924893565785411603522535388560468e1), + SC_(0.97540400922298431396484375e-1), SC_(0.905791938304901123046875e0), SC_(0.24538194571328338426625153260376589509956095921724e1), + SC_(0.97540400922298431396484375e-1), SC_(0.9133758544921875e0), SC_(0.24939528667597863131268459408612241086050185482663e1), + SC_(0.97540400922298431396484375e-1), SC_(0.957506835460662841796875e0), SC_(0.28473945726623744384547972404197314438342254491406e1), + SC_(0.97540400922298431396484375e-1), SC_(0.964888513088226318359375e0), SC_(0.29452299884896515169797221101771945213762664439833e1), + SC_(0.97540400922298431396484375e-1), SC_(0.967694938182830810546875e0), SC_(0.29882738319780340222842473815959127498505628778533e1), + SC_(0.97540400922298431396484375e-1), SC_(0.968867778778076171875e0), SC_(0.30074420759294457808064044871395510915970675750267e1), + SC_(0.97540400922298431396484375e-1), SC_(0.992881298065185546875e0), SC_(0.37936720689726111042340848424079527101282549905212e1), + SC_(0.97540400922298431396484375e-1), SC_(0.996461331844329833984375e0), SC_(0.41748893503811021098590196808435433394940293727937e1), + SC_(0.12698681652545928955078125e0), SC_(0.97540400922298431396484375e-1), SC_(0.1685318587788206678609582703151072137667430882881e1), + SC_(0.12698681652545928955078125e0), SC_(0.12698681652545928955078125e0), SC_(0.1688234141309562807863225412410437395324346243701e1), + SC_(0.12698681652545928955078125e0), SC_(0.135477006435394287109375e0), SC_(0.16892218310996768951952246197990872503595847867976e1), + SC_(0.12698681652545928955078125e0), SC_(0.188381969928741455078125e0), SC_(0.16969022709938674181625114795701672896960352436314e1), + SC_(0.12698681652545928955078125e0), SC_(0.22103404998779296875e0), SC_(0.17030032321321756915384354437449120925498960973606e1), + SC_(0.12698681652545928955078125e0), SC_(0.278498232364654541015625e0), SC_(0.17164390202389813987808928802179124606496793669596e1), + SC_(0.12698681652545928955078125e0), SC_(0.308167040348052978515625e0), SC_(0.17248189464693526224936483136367511743274796085067e1), + SC_(0.12698681652545928955078125e0), SC_(0.546881496906280517578125e0), SC_(0.18392650050287546436754219509634143238290305778196e1), + SC_(0.12698681652545928955078125e0), SC_(0.54722058773040771484375e0), SC_(0.18395058974049004275826956038702022192936523369097e1), + SC_(0.12698681652545928955078125e0), SC_(0.6323592662811279296875e0), SC_(0.19105592806100226980866002698193886759433999838817e1), + SC_(0.12698681652545928955078125e0), SC_(0.814723670482635498046875e0), SC_(0.21873382047929470812042185849926089445838701400778e1), + SC_(0.12698681652545928955078125e0), SC_(0.835008561611175537109375e0), SC_(0.22390785970553979213381814848335596881879123507617e1), + SC_(0.12698681652545928955078125e0), SC_(0.905791938304901123046875e0), SC_(0.25034800740775616711131543519120042913845328201332e1), + SC_(0.12698681652545928955078125e0), SC_(0.9133758544921875e0), SC_(0.25448057690068607392594067127901072224307904600547e1), + SC_(0.12698681652545928955078125e0), SC_(0.957506835460662841796875e0), SC_(0.29090122069718676178130005734056487939272520282851e1), + SC_(0.12698681652545928955078125e0), SC_(0.964888513088226318359375e0), SC_(0.30098999873252481469781479613235233143672874154257e1), + SC_(0.12698681652545928955078125e0), SC_(0.967694938182830810546875e0), SC_(0.30542952707409075248788024261936067022168441721423e1), + SC_(0.12698681652545928955078125e0), SC_(0.968867778778076171875e0), SC_(0.30740669261306918795687510838862781246976550862831e1), + SC_(0.12698681652545928955078125e0), SC_(0.992881298065185546875e0), SC_(0.38856888579518839215507061538398367031048594674419e1), + SC_(0.12698681652545928955078125e0), SC_(0.996461331844329833984375e0), SC_(0.4279513831736601479703561332365938468967052418965e1), + SC_(0.135477006435394287109375e0), SC_(0.97540400922298431396484375e-1), SC_(0.16935837201668325168895896066839699010718767068277e1), + SC_(0.135477006435394287109375e0), SC_(0.12698681652545928955078125e0), SC_(0.16965205043308909205342786594130226541245100384776e1), + SC_(0.135477006435394287109375e0), SC_(0.135477006435394287109375e0), SC_(0.16975153904102123624487437670253600898007275962773e1), + SC_(0.135477006435394287109375e0), SC_(0.188381969928741455078125e0), SC_(0.17052518600413348391470247431613577572728011616544e1), + SC_(0.135477006435394287109375e0), SC_(0.22103404998779296875e0), SC_(0.17113974168351251198213980860822631882577807804365e1), + SC_(0.135477006435394287109375e0), SC_(0.278498232364654541015625e0), SC_(0.17249316899151633548906736620536069162011079023701e1), + SC_(0.135477006435394287109375e0), SC_(0.308167040348052978515625e0), SC_(0.17333732316302342704125119954235858137941450229123e1), + SC_(0.135477006435394287109375e0), SC_(0.546881496906280517578125e0), SC_(0.184867503069509046694494677902927519792373111884e1), + SC_(0.135477006435394287109375e0), SC_(0.54722058773040771484375e0), SC_(0.18489177516117682045318101631153584799577971272142e1), + SC_(0.135477006435394287109375e0), SC_(0.6323592662811279296875e0), SC_(0.19205153059652540375374119977151836226294958702724e1), + SC_(0.135477006435394287109375e0), SC_(0.814723670482635498046875e0), SC_(0.2199499240365420139762529317430872586914704970157e1), + SC_(0.135477006435394287109375e0), SC_(0.835008561611175537109375e0), SC_(0.22516656026066263576072372703627093346440038525925e1), + SC_(0.135477006435394287109375e0), SC_(0.905791938304901123046875e0), SC_(0.25183026173095013908682269375932180185911239822365e1), + SC_(0.135477006435394287109375e0), SC_(0.9133758544921875e0), SC_(0.25599858339816158797339291411962072237142485891242e1), + SC_(0.135477006435394287109375e0), SC_(0.957506835460662841796875e0), SC_(0.29274222684086696897800565119518497591155223083653e1), + SC_(0.135477006435394287109375e0), SC_(0.964888513088226318359375e0), SC_(0.30292265078919483240166428037499298822790924612329e1), + SC_(0.135477006435394287109375e0), SC_(0.967694938182830810546875e0), SC_(0.30740276265710244641438310219354706414538822113586e1), + SC_(0.135477006435394287109375e0), SC_(0.968867778778076171875e0), SC_(0.30939804989126241858406727352102049995233706253124e1), + SC_(0.135477006435394287109375e0), SC_(0.992881298065185546875e0), SC_(0.3913233944829003022188493966008570820120009850221e1), + SC_(0.135477006435394287109375e0), SC_(0.996461331844329833984375e0), SC_(0.43108509585374298111636093938509678205435530002776e1), + SC_(0.188381969928741455078125e0), SC_(0.97540400922298431396484375e-1), SC_(0.17479759608528384969249702834182411757127593245848e1), + SC_(0.188381969928741455078125e0), SC_(0.12698681652545928955078125e0), SC_(0.17510532643864074803852119143613511907598411077489e1), + SC_(0.188381969928741455078125e0), SC_(0.135477006435394287109375e0), SC_(0.17520957813802755659866732786255405040826266782146e1), + SC_(0.188381969928741455078125e0), SC_(0.188381969928741455078125e0), SC_(0.17602031152953033887075972730972713144032077197997e1), + SC_(0.188381969928741455078125e0), SC_(0.22103404998779296875e0), SC_(0.17666438708693554910808040943562680709573711171712e1), + SC_(0.188381969928741455078125e0), SC_(0.278498232364654541015625e0), SC_(0.17808301147893276383623213388114140109043953700764e1), + SC_(0.188381969928741455078125e0), SC_(0.308167040348052978515625e0), SC_(0.17896795890574749308345982233331373887522680114514e1), + SC_(0.188381969928741455078125e0), SC_(0.546881496906280517578125e0), SC_(0.1910649856118394412576272436520772884009028212601e1), + SC_(0.188381969928741455078125e0), SC_(0.54722058773040771484375e0), SC_(0.19109046951138713905781095278872332060250428340464e1), + SC_(0.188381969928741455078125e0), SC_(0.6323592662811279296875e0), SC_(0.19861096217430414986320959954875147954184860327098e1), + SC_(0.188381969928741455078125e0), SC_(0.814723670482635498046875e0), SC_(0.22797307572814278432275369755844341871230013379446e1), + SC_(0.188381969928741455078125e0), SC_(0.835008561611175537109375e0), SC_(0.23347281617333423378322997535121817827693635680977e1), + SC_(0.188381969928741455078125e0), SC_(0.905791938304901123046875e0), SC_(0.26162385239630294045076512144391733463493312713896e1), + SC_(0.188381969928741455078125e0), SC_(0.9133758544921875e0), SC_(0.26603026313647110581587719126128952747613220358229e1), + SC_(0.188381969928741455078125e0), SC_(0.957506835460662841796875e0), SC_(0.30492726931421538553273834838112076390382908238807e1), + SC_(0.188381969928741455078125e0), SC_(0.964888513088226318359375e0), SC_(0.3157193524572847165355042162261947279536891417195e1), + SC_(0.188381969928741455078125e0), SC_(0.967694938182830810546875e0), SC_(0.32047040779083038295505895978755423055324477937305e1), + SC_(0.188381969928741455078125e0), SC_(0.968867778778076171875e0), SC_(0.32258669456894960113568669221698726968013099570208e1), + SC_(0.188381969928741455078125e0), SC_(0.992881298065185546875e0), SC_(0.40961438300416806437536152922153947371679927384751e1), + SC_(0.188381969928741455078125e0), SC_(0.996461331844329833984375e0), SC_(0.45191468990067170462001406661020319085098604056066e1), + SC_(0.22103404998779296875e0), SC_(0.97540400922298431396484375e-1), SC_(0.17842786641801211626032101629086511152515105957634e1), + SC_(0.22103404998779296875e0), SC_(0.12698681652545928955078125e0), SC_(0.17874505058439637471101137558565348769201616102626e1), + SC_(0.22103404998779296875e0), SC_(0.135477006435394287109375e0), SC_(0.17885250685526786408358591563239850011727800717838e1), + SC_(0.22103404998779296875e0), SC_(0.188381969928741455078125e0), SC_(0.17968819301630796923560985137790010410356926396372e1), + SC_(0.22103404998779296875e0), SC_(0.22103404998779296875e0), SC_(0.18035213200804066866412852295355703579687864043554e1), + SC_(0.22103404998779296875e0), SC_(0.278498232364654541015625e0), SC_(0.18181463158362395482912828037409350308738353605753e1), + SC_(0.22103404998779296875e0), SC_(0.308167040348052978515625e0), SC_(0.18272703492502991633858399767864007750853606366958e1), + SC_(0.22103404998779296875e0), SC_(0.546881496906280517578125e0), SC_(0.1952058570447485461962997802235510658783335575087e1), + SC_(0.22103404998779296875e0), SC_(0.54722058773040771484375e0), SC_(0.19523215769351016380929289372753968082675257076785e1), + SC_(0.22103404998779296875e0), SC_(0.6323592662811279296875e0), SC_(0.20299588431676641240596482244566850561944241187449e1), + SC_(0.22103404998779296875e0), SC_(0.814723670482635498046875e0), SC_(0.23334684357813447009475333554297143736349120311653e1), + SC_(0.22103404998779296875e0), SC_(0.835008561611175537109375e0), SC_(0.23903816521597997220433683188795888437439141922541e1), + SC_(0.22103404998779296875e0), SC_(0.905791938304901123046875e0), SC_(0.26819721758077360281007538596244515606316000771301e1), + SC_(0.22103404998779296875e0), SC_(0.9133758544921875e0), SC_(0.27276520593174664663593635364598089058153237461593e1), + SC_(0.22103404998779296875e0), SC_(0.957506835460662841796875e0), SC_(0.31312587245920801991965231814228662802474188754065e1), + SC_(0.22103404998779296875e0), SC_(0.964888513088226318359375e0), SC_(0.32433436372252641068987215814746169200077048157468e1), + SC_(0.22103404998779296875e0), SC_(0.967694938182830810546875e0), SC_(0.32926995362970981220807230121684723765751399497462e1), + SC_(0.22103404998779296875e0), SC_(0.968867778778076171875e0), SC_(0.33146866615677060638089563475357588242421527248043e1), + SC_(0.22103404998779296875e0), SC_(0.992881298065185546875e0), SC_(0.42197870205032134442583369847589743431941561017026e1), + SC_(0.22103404998779296875e0), SC_(0.996461331844329833984375e0), SC_(0.46601483850605968784815706894404192253697949618262e1), + SC_(0.278498232364654541015625e0), SC_(0.97540400922298431396484375e-1), SC_(0.18540566634013066046016566683529946117268648434283e1), + SC_(0.278498232364654541015625e0), SC_(0.12698681652545928955078125e0), SC_(0.18574118302808822333872845214608940711518291748163e1), + SC_(0.278498232364654541015625e0), SC_(0.135477006435394287109375e0), SC_(0.18585485366260202740512780428380995582238097280957e1), + SC_(0.278498232364654541015625e0), SC_(0.188381969928741455078125e0), SC_(0.18673893153616598550198271064184534621448212539342e1), + SC_(0.278498232364654541015625e0), SC_(0.22103404998779296875e0), SC_(0.18744139592431073559797146364251018882457830594932e1), + SC_(0.278498232364654541015625e0), SC_(0.278498232364654541015625e0), SC_(0.18898900325024847519171839443732244394070044486532e1), + SC_(0.278498232364654541015625e0), SC_(0.308167040348052978515625e0), SC_(0.18995467257988620333615684009042295725927955468589e1), + SC_(0.278498232364654541015625e0), SC_(0.546881496906280517578125e0), SC_(0.20317480946793513110672770770146651789418335255653e1), + SC_(0.278498232364654541015625e0), SC_(0.54722058773040771484375e0), SC_(0.20320269715624452791694861251932899530678551850235e1), + SC_(0.278498232364654541015625e0), SC_(0.6323592662811279296875e0), SC_(0.21143927529235822380297598754122162227238550408662e1), + SC_(0.278498232364654541015625e0), SC_(0.814723670482635498046875e0), SC_(0.24371677719856695336609699423201684424214845918723e1), + SC_(0.278498232364654541015625e0), SC_(0.835008561611175537109375e0), SC_(0.24978207150894544842248988916890969941974179435409e1), + SC_(0.278498232364654541015625e0), SC_(0.905791938304901123046875e0), SC_(0.28091218562371815940610134934058818213992967273169e1), + SC_(0.278498232364654541015625e0), SC_(0.9133758544921875e0), SC_(0.28579660700831643555527824701714565045938324914058e1), + SC_(0.278498232364654541015625e0), SC_(0.957506835460662841796875e0), SC_(0.32902888676544428788422667899769101501033823714241e1), + SC_(0.278498232364654541015625e0), SC_(0.964888513088226318359375e0), SC_(0.34105583872704407645425727187273935753846047487767e1), + SC_(0.278498232364654541015625e0), SC_(0.967694938182830810546875e0), SC_(0.34635431941020426477513861094373473319644588410988e1), + SC_(0.278498232364654541015625e0), SC_(0.968867778778076171875e0), SC_(0.34871515845096066296299025930425281357069563492835e1), + SC_(0.278498232364654541015625e0), SC_(0.992881298065185546875e0), SC_(0.44608991966152830064418306045679253946034036303258e1), + SC_(0.278498232364654541015625e0), SC_(0.996461331844329833984375e0), SC_(0.49355536263525154301517465906127054690444675547263e1), + SC_(0.308167040348052978515625e0), SC_(0.97540400922298431396484375e-1), SC_(0.18934415072849286883534537270895105374027937951698e1), + SC_(0.308167040348052978515625e0), SC_(0.12698681652545928955078125e0), SC_(0.18969010456990313528324707273986332428961513524659e1), + SC_(0.308167040348052978515625e0), SC_(0.135477006435394287109375e0), SC_(0.18980731328664796967088137407416123066791621258711e1), + SC_(0.308167040348052978515625e0), SC_(0.188381969928741455078125e0), SC_(0.19071894407512226317729009261893262526108362549497e1), + SC_(0.308167040348052978515625e0), SC_(0.22103404998779296875e0), SC_(0.1914433457971000130095016416527778788594881381561e1), + SC_(0.308167040348052978515625e0), SC_(0.278498232364654541015625e0), SC_(0.19303942197245427876075134028505809206514356057485e1), + SC_(0.308167040348052978515625e0), SC_(0.308167040348052978515625e0), SC_(0.19403543069828338351980236370814231957074691491496e1), + SC_(0.308167040348052978515625e0), SC_(0.546881496906280517578125e0), SC_(0.20767815321315466842055486130151844636578904709346e1), + SC_(0.308167040348052978515625e0), SC_(0.54722058773040771484375e0), SC_(0.20770694626812216009594318354463713950303390926122e1), + SC_(0.308167040348052978515625e0), SC_(0.6323592662811279296875e0), SC_(0.2162133989505660901394880457981032163263694741336e1), + SC_(0.308167040348052978515625e0), SC_(0.814723670482635498046875e0), SC_(0.24959285155980177771372901088500672286817419226303e1), + SC_(0.308167040348052978515625e0), SC_(0.835008561611175537109375e0), SC_(0.25587246398871661261602111782970214622209198828564e1), + SC_(0.308167040348052978515625e0), SC_(0.905791938304901123046875e0), SC_(0.28813411038503412607545790660946699280950409362594e1), + SC_(0.308167040348052978515625e0), SC_(0.9133758544921875e0), SC_(0.29320046792041925529200075463809734728540049118526e1), + SC_(0.308167040348052978515625e0), SC_(0.957506835460662841796875e0), SC_(0.33808682042600873923496585486523268607290153985713e1), + SC_(0.308167040348052978515625e0), SC_(0.964888513088226318359375e0), SC_(0.35058608263142767064187964281809191575384473516355e1), + SC_(0.308167040348052978515625e0), SC_(0.967694938182830810546875e0), SC_(0.35609408444130872729099130030545093427758979671065e1), + SC_(0.308167040348052978515625e0), SC_(0.968867778778076171875e0), SC_(0.35854855027778130982460095654578379147621919144728e1), + SC_(0.308167040348052978515625e0), SC_(0.992881298065185546875e0), SC_(0.45989656310722932502603549787562896818541071270379e1), + SC_(0.308167040348052978515625e0), SC_(0.996461331844329833984375e0), SC_(0.50935129182267314267802200651974704052943660558844e1), + SC_(0.546881496906280517578125e0), SC_(0.97540400922298431396484375e-1), SC_(0.23402059384453657293467992124107965599552529009311e1), + SC_(0.546881496906280517578125e0), SC_(0.12698681652545928955078125e0), SC_(0.23448883296499559512660778562285366514062997892236e1), + SC_(0.546881496906280517578125e0), SC_(0.135477006435394287109375e0), SC_(0.23464749935648314514306579097434584072840560576334e1), + SC_(0.546881496906280517578125e0), SC_(0.188381969928741455078125e0), SC_(0.23588205711140915893267134784068272159311088456764e1), + SC_(0.546881496906280517578125e0), SC_(0.22103404998779296875e0), SC_(0.2368636636131893692540900398618906215738383482657e1), + SC_(0.546881496906280517578125e0), SC_(0.278498232364654541015625e0), SC_(0.23902830778400735539589798246632587504035788545453e1), + SC_(0.546881496906280517578125e0), SC_(0.308167040348052978515625e0), SC_(0.2403804205490200482091966676317729223796453415288e1), + SC_(0.546881496906280517578125e0), SC_(0.546881496906280517578125e0), SC_(0.25899930525025210392025076967313751390713416684967e1), + SC_(0.546881496906280517578125e0), SC_(0.54722058773040771484375e0), SC_(0.25903879123238512159586351594578825450166448103094e1), + SC_(0.546881496906280517578125e0), SC_(0.6323592662811279296875e0), SC_(0.27073852391197290058024842400508946687004788910492e1), + SC_(0.546881496906280517578125e0), SC_(0.814723670482635498046875e0), SC_(0.31727236948416761145712598721593354391246222364914e1), + SC_(0.546881496906280517578125e0), SC_(0.835008561611175537109375e0), SC_(0.3261305791472119291116221293509474391044620998657e1), + SC_(0.546881496906280517578125e0), SC_(0.905791938304901123046875e0), SC_(0.37210437502805654854881865606537379706940848867438e1), + SC_(0.546881496906280517578125e0), SC_(0.9133758544921875e0), SC_(0.37938980122547451410411795703547003162802552487191e1), + SC_(0.546881496906280517578125e0), SC_(0.957506835460662841796875e0), SC_(0.44460860531472446032220008830790134979316817529627e1), + SC_(0.546881496906280517578125e0), SC_(0.964888513088226318359375e0), SC_(0.46296005991492012136799187393972414072341962778987e1), + SC_(0.546881496906280517578125e0), SC_(0.967694938182830810546875e0), SC_(0.47106996212425775717362523886778742849513268554636e1), + SC_(0.546881496906280517578125e0), SC_(0.968867778778076171875e0), SC_(0.47468822225522051131372528250655441409776888459348e1), + SC_(0.546881496906280517578125e0), SC_(0.992881298065185546875e0), SC_(0.62592213334561206278757812379308776121448544858509e1), + SC_(0.546881496906280517578125e0), SC_(0.996461331844329833984375e0), SC_(0.70060678526644476572624059809229298517936800428906e1), + SC_(0.54722058773040771484375e0), SC_(0.97540400922298431396484375e-1), SC_(0.23410830831015788690478921885268090467833699958385e1), + SC_(0.54722058773040771484375e0), SC_(0.12698681652545928955078125e0), SC_(0.23457679367857534783075167691212910410976010622334e1), + SC_(0.54722058773040771484375e0), SC_(0.135477006435394287109375e0), SC_(0.23473554356106589934395105689893554579423367634626e1), + SC_(0.54722058773040771484375e0), SC_(0.188381969928741455078125e0), SC_(0.23597075177457490068877054571644210861567238536148e1), + SC_(0.54722058773040771484375e0), SC_(0.22103404998779296875e0), SC_(0.23695287650618127134219763327896272164305623414372e1), + SC_(0.54722058773040771484375e0), SC_(0.278498232364654541015625e0), SC_(0.23911866673683800714880937923470994523878615198689e1), + SC_(0.54722058773040771484375e0), SC_(0.308167040348052978515625e0), SC_(0.24047149763368526878695351264796270952183973658547e1), + SC_(0.54722058773040771484375e0), SC_(0.546881496906280517578125e0), SC_(0.25910044388761618020160530384592627349106435553329e1), + SC_(0.54722058773040771484375e0), SC_(0.54722058773040771484375e0), SC_(0.25913995154253956534415619240009938346898696093846e1), + SC_(0.54722058773040771484375e0), SC_(0.6323592662811279296875e0), SC_(0.27084616621757254142509448233359146094363421505405e1), + SC_(0.54722058773040771484375e0), SC_(0.814723670482635498046875e0), SC_(0.31740690723504562442563357091458773172597222022389e1), + SC_(0.54722058773040771484375e0), SC_(0.835008561611175537109375e0), SC_(0.32627042317924056598645452800734223985751807327117e1), + SC_(0.54722058773040771484375e0), SC_(0.905791938304901123046875e0), SC_(0.37227260405458102322475787338451824032032350478051e1), + SC_(0.54722058773040771484375e0), SC_(0.9133758544921875e0), SC_(0.37956264857106051877485342446291322735662165311007e1), + SC_(0.54722058773040771484375e0), SC_(0.957506835460662841796875e0), SC_(0.44482404523785797098572298979971956869396955036418e1), + SC_(0.54722058773040771484375e0), SC_(0.964888513088226318359375e0), SC_(0.46318784110329691045018805600099274052196479545017e1), + SC_(0.54722058773040771484375e0), SC_(0.967694938182830810546875e0), SC_(0.47130324063820139271887152021158161845241653384549e1), + SC_(0.54722058773040771484375e0), SC_(0.968867778778076171875e0), SC_(0.4749239616253775923530987576197358638994214495136e1), + SC_(0.54722058773040771484375e0), SC_(0.992881298065185546875e0), SC_(0.6262642637182658508827584508037824879010754632838e1), + SC_(0.54722058773040771484375e0), SC_(0.996461331844329833984375e0), SC_(0.70100319160097810435985015342418148005126715043792e1), + SC_(0.6323592662811279296875e0), SC_(0.97540400922298431396484375e-1), SC_(0.25983627232663051418868321775570958012072460748809e1), + SC_(0.6323592662811279296875e0), SC_(0.12698681652545928955078125e0), SC_(0.26037785275732392483239785881702333418351081740929e1), + SC_(0.6323592662811279296875e0), SC_(0.135477006435394287109375e0), SC_(0.26056138674086001872498900704242150307776497717109e1), + SC_(0.6323592662811279296875e0), SC_(0.188381969928741455078125e0), SC_(0.26198969988017267629096785040709318163118707270417e1), + SC_(0.6323592662811279296875e0), SC_(0.22103404998779296875e0), SC_(0.26312569676074009914690028516576627934891644037609e1), + SC_(0.6323592662811279296875e0), SC_(0.278498232364654541015625e0), SC_(0.26563184471909723050750650286630705001498505755626e1), + SC_(0.6323592662811279296875e0), SC_(0.308167040348052978515625e0), SC_(0.26719799668216394367758865475061991850584635159263e1), + SC_(0.6323592662811279296875e0), SC_(0.546881496906280517578125e0), SC_(0.288819688439879797558834917870018968776292619442e1), + SC_(0.6323592662811279296875e0), SC_(0.54722058773040771484375e0), SC_(0.2888656503874529825718481477631202973076238773065e1), + SC_(0.6323592662811279296875e0), SC_(0.6323592662811279296875e0), SC_(0.30250372289870917964031675056026646037822166421746e1), + SC_(0.6323592662811279296875e0), SC_(0.814723670482635498046875e0), SC_(0.35711014838868874616408820891740595990115491538599e1), + SC_(0.6323592662811279296875e0), SC_(0.835008561611175537109375e0), SC_(0.36756637087873709930528283790637095878109736090122e1), + SC_(0.6323592662811279296875e0), SC_(0.905791938304901123046875e0), SC_(0.42211547472741855986668873394372192089361522483846e1), + SC_(0.6323592662811279296875e0), SC_(0.9133758544921875e0), SC_(0.43080015453816953780578834282306412916799677089178e1), + SC_(0.6323592662811279296875e0), SC_(0.957506835460662841796875e0), SC_(0.50896991499610565841800227351792512544656544524182e1), + SC_(0.6323592662811279296875e0), SC_(0.964888513088226318359375e0), SC_(0.5310878732509194447105180470873416299500493392777e1), + SC_(0.6323592662811279296875e0), SC_(0.967694938182830810546875e0), SC_(0.54087732500834358097505417810559652830462461181307e1), + SC_(0.6323592662811279296875e0), SC_(0.968867778778076171875e0), SC_(0.54524777170571416530775657096901515577080530647076e1), + SC_(0.6323592662811279296875e0), SC_(0.992881298065185546875e0), SC_(0.72916261680976376149891644519093021070792856467215e1), + SC_(0.6323592662811279296875e0), SC_(0.996461331844329833984375e0), SC_(0.8206051279071452115712759930474024135334921355176e1), + SC_(0.814723670482635498046875e0), SC_(0.97540400922298431396484375e-1), SC_(0.36615130852785176879217147126196463541799881957892e1), + SC_(0.814723670482635498046875e0), SC_(0.12698681652545928955078125e0), SC_(0.36700864979633107596395070657098559019273663412639e1), + SC_(0.814723670482635498046875e0), SC_(0.135477006435394287109375e0), SC_(0.36729926548863684428292981154096836334077793128303e1), + SC_(0.814723670482635498046875e0), SC_(0.188381969928741455078125e0), SC_(0.3695622112917292158123596670031321116661120758079e1), + SC_(0.814723670482635498046875e0), SC_(0.22103404998779296875e0), SC_(0.37136365958053955397815123214648429593680266151733e1), + SC_(0.814723670482635498046875e0), SC_(0.278498232364654541015625e0), SC_(0.3753429791888557405192648802824808071384639975579e1), + SC_(0.814723670482635498046875e0), SC_(0.308167040348052978515625e0), SC_(0.37783330855971643209896728200274659916197659923459e1), + SC_(0.814723670482635498046875e0), SC_(0.546881496906280517578125e0), SC_(0.41248974750692305102788633290028656131886661616047e1), + SC_(0.814723670482635498046875e0), SC_(0.54722058773040771484375e0), SC_(0.41256395922323622963124591867739410454659326872097e1), + SC_(0.814723670482635498046875e0), SC_(0.6323592662811279296875e0), SC_(0.43468399314842552835086760776534445844610545089249e1), + SC_(0.814723670482635498046875e0), SC_(0.814723670482635498046875e0), SC_(0.52516492344759917106373401745259938724176041685778e1), + SC_(0.814723670482635498046875e0), SC_(0.835008561611175537109375e0), SC_(0.54282384216898735005110179302698444547725021763189e1), + SC_(0.814723670482635498046875e0), SC_(0.905791938304901123046875e0), SC_(0.63655765710978625421767044170806252916827305938363e1), + SC_(0.814723670482635498046875e0), SC_(0.9133758544921875e0), SC_(0.65171761032367338937966048308921485471244320767902e1), + SC_(0.814723670482635498046875e0), SC_(0.957506835460662841796875e0), SC_(0.79080013108672861517726963636547052765197507865974e1), + SC_(0.814723670482635498046875e0), SC_(0.964888513088226318359375e0), SC_(0.83093785740269612723201205443816018017604080538923e1), + SC_(0.814723670482635498046875e0), SC_(0.967694938182830810546875e0), SC_(0.84880292518485436868203083795887946061156568657223e1), + SC_(0.814723670482635498046875e0), SC_(0.968867778778076171875e0), SC_(0.85679783450742635634674476722292396573956385910584e1), + SC_(0.814723670482635498046875e0), SC_(0.992881298065185546875e0), SC_(0.12020332533163629936712843104826393276519424710709e2), + SC_(0.814723670482635498046875e0), SC_(0.996461331844329833984375e0), SC_(0.13783442789513787913397978628707323312800999654888e2), + SC_(0.835008561611175537109375e0), SC_(0.97540400922298431396484375e-1), SC_(0.38802963008054803813977820674781063112347713442296e1), + SC_(0.835008561611175537109375e0), SC_(0.12698681652545928955078125e0), SC_(0.38895391979734772160215015157054948139224449450449e1), + SC_(0.835008561611175537109375e0), SC_(0.135477006435394287109375e0), SC_(0.38926724192659425309582912881127166056741746194165e1), + SC_(0.835008561611175537109375e0), SC_(0.188381969928741455078125e0), SC_(0.39170721638222319904609709155795976090510702376462e1), + SC_(0.835008561611175537109375e0), SC_(0.22103404998779296875e0), SC_(0.39364986857488306982490290273390501669776009890196e1), + SC_(0.835008561611175537109375e0), SC_(0.278498232364654541015625e0), SC_(0.39794197101665437116481203013817265441913153308358e1), + SC_(0.835008561611175537109375e0), SC_(0.308167040348052978515625e0), SC_(0.40062865216440352215470878004490299592269302610855e1), + SC_(0.835008561611175537109375e0), SC_(0.546881496906280517578125e0), SC_(0.43806514122474107817171252744847827687734389521318e1), + SC_(0.835008561611175537109375e0), SC_(0.54722058773040771484375e0), SC_(0.43814539952566439066647585754904594249419192436275e1), + SC_(0.835008561611175537109375e0), SC_(0.6323592662811279296875e0), SC_(0.46208505969966244922220805650275181772887847603741e1), + SC_(0.835008561611175537109375e0), SC_(0.814723670482635498046875e0), SC_(0.56035075626838088036778946277497254688221360812121e1), + SC_(0.835008561611175537109375e0), SC_(0.835008561611175537109375e0), SC_(0.57958928558718512744111792159030516141795211300892e1), + SC_(0.835008561611175537109375e0), SC_(0.905791938304901123046875e0), SC_(0.68200756037402605676371237410483853570652448952861e1), + SC_(0.835008561611175537109375e0), SC_(0.9133758544921875e0), SC_(0.69861672402913145091513402584010226830415229204519e1), + SC_(0.835008561611175537109375e0), SC_(0.957506835460662841796875e0), SC_(0.85150877705884914941623986455553448879155080818408e1), + SC_(0.835008561611175537109375e0), SC_(0.964888513088226318359375e0), SC_(0.89578795386774844429726843129898700651222834359108e1), + SC_(0.835008561611175537109375e0), SC_(0.967694938182830810546875e0), SC_(0.91551660991715101890645293953474342447978138513833e1), + SC_(0.835008561611175537109375e0), SC_(0.968867778778076171875e0), SC_(0.92434940401273260643322383501778685651779901094572e1), + SC_(0.835008561611175537109375e0), SC_(0.992881298065185546875e0), SC_(0.13076435912823550675091378685875959688120653933111e2), + SC_(0.835008561611175537109375e0), SC_(0.996461331844329833984375e0), SC_(0.1504421565973441739680443317620391346947850384558e2), + SC_(0.905791938304901123046875e0), SC_(0.97540400922298431396484375e-1), SC_(0.51364579743172907078177956606334136768200691940162e1), + SC_(0.905791938304901123046875e0), SC_(0.12698681652545928955078125e0), SC_(0.51496257696023639068825818964005748290918070998986e1), + SC_(0.905791938304901123046875e0), SC_(0.135477006435394287109375e0), SC_(0.51540902917564484488167174849672998637229923706362e1), + SC_(0.905791938304901123046875e0), SC_(0.188381969928741455078125e0), SC_(0.51888714963436279287864577658764974129503436908668e1), + SC_(0.905791938304901123046875e0), SC_(0.22103404998779296875e0), SC_(0.52165812761847933733068502438390992382479228542402e1), + SC_(0.905791938304901123046875e0), SC_(0.278498232364654541015625e0), SC_(0.52778590784692525793141959824818122537224169179377e1), + SC_(0.905791938304901123046875e0), SC_(0.308167040348052978515625e0), SC_(0.53162554166593582507413640409192538776659269288573e1), + SC_(0.905791938304901123046875e0), SC_(0.546881496906280517578125e0), SC_(0.58543506925299453074002624253911387553959223554261e1), + SC_(0.905791938304901123046875e0), SC_(0.54722058773040771484375e0), SC_(0.58555103820924040562602156245144190738744981411045e1), + SC_(0.905791938304901123046875e0), SC_(0.6323592662811279296875e0), SC_(0.6202567958169827869054679204190860356313582250197e1), + SC_(0.905791938304901123046875e0), SC_(0.814723670482635498046875e0), SC_(0.76501572832499288406663774761775236514109546225105e1), + SC_(0.905791938304901123046875e0), SC_(0.835008561611175537109375e0), SC_(0.79377225472182865473285917424360325745903405683922e1), + SC_(0.905791938304901123046875e0), SC_(0.905791938304901123046875e0), SC_(0.94900463169734198643429632215023502814677364131299e1), + SC_(0.905791938304901123046875e0), SC_(0.9133758544921875e0), SC_(0.97450460420686227257246008066579714693302559975407e1), + SC_(0.905791938304901123046875e0), SC_(0.957506835460662841796875e0), SC_(0.12131510964898459604837452008799977254024811417598e2), + SC_(0.905791938304901123046875e0), SC_(0.964888513088226318359375e0), SC_(0.12834895660588990914293288081732454682814420612194e2), + SC_(0.905791938304901123046875e0), SC_(0.967694938182830810546875e0), SC_(0.13149923831914545554837479293267667046262233705194e2), + SC_(0.905791938304901123046875e0), SC_(0.968867778778076171875e0), SC_(0.13291283770669908822311170345836718686878650077329e2), + SC_(0.905791938304901123046875e0), SC_(0.992881298065185546875e0), SC_(0.19585681570046082480269060007602416457226733145633e2), + SC_(0.905791938304901123046875e0), SC_(0.996461331844329833984375e0), SC_(0.22910032453962357735475222602715226322563404077335e2), + SC_(0.9133758544921875e0), SC_(0.97540400922298431396484375e-1), SC_(0.53567796278182966665469584408427356745925177141523e1), + SC_(0.9133758544921875e0), SC_(0.12698681652545928955078125e0), SC_(0.53706465742234129067461457861629097474999855664097e1), + SC_(0.9133758544921875e0), SC_(0.135477006435394287109375e0), SC_(0.53753482606457942010893275438728206102291514218413e1), + SC_(0.9133758544921875e0), SC_(0.188381969928741455078125e0), SC_(0.54119791561580716201248567906589301098388844561456e1), + SC_(0.9133758544921875e0), SC_(0.22103404998779296875e0), SC_(0.54411651515012617043308553999518843997537349862567e1), + SC_(0.9133758544921875e0), SC_(0.278498232364654541015625e0), SC_(0.55057155990987759382518984279582491917162211164108e1), + SC_(0.9133758544921875e0), SC_(0.308167040348052978515625e0), SC_(0.5546168237818584645561174736164368564414957147343e1), + SC_(0.9133758544921875e0), SC_(0.546881496906280517578125e0), SC_(0.61135330002582671691609383542179782749711281589559e1), + SC_(0.9133758544921875e0), SC_(0.54722058773040771484375e0), SC_(0.61147566672816086510144005271355606728942079104499e1), + SC_(0.9133758544921875e0), SC_(0.6323592662811279296875e0), SC_(0.64811297334058452648211641868772319591656972319772e1), + SC_(0.9133758544921875e0), SC_(0.814723670482635498046875e0), SC_(0.80127545785920142381956431694236596913160570851012e1), + SC_(0.9133758544921875e0), SC_(0.835008561611175537109375e0), SC_(0.83176457072941733649602004768408257820005022978066e1), + SC_(0.9133758544921875e0), SC_(0.905791938304901123046875e0), SC_(0.99668341343842981601381194961146696888338933382321e1), + SC_(0.9133758544921875e0), SC_(0.9133758544921875e0), SC_(0.10238257479066491493313528091394688111396167316168e2), + SC_(0.9133758544921875e0), SC_(0.957506835460662841796875e0), SC_(0.12784747076292409060728862092488230935384156667088e2), + SC_(0.9133758544921875e0), SC_(0.964888513088226318359375e0), SC_(0.13537303471056716895278815184682900803115035132238e2), + SC_(0.9133758544921875e0), SC_(0.967694938182830810546875e0), SC_(0.13874625808660970667807484938241285005914433501145e2), + SC_(0.9133758544921875e0), SC_(0.968867778778076171875e0), SC_(0.14026042582255128583557190331086256099368121979326e2), + SC_(0.9133758544921875e0), SC_(0.992881298065185546875e0), SC_(0.20796139036897021495721604427156454649764030962681e2), + SC_(0.9133758544921875e0), SC_(0.996461331844329833984375e0), SC_(0.24388426073727006657009940691066405054254699209927e2), + SC_(0.957506835460662841796875e0), SC_(0.97540400922298431396484375e-1), SC_(0.76503457787885546326326763003469710572977032523388e1), + SC_(0.957506835460662841796875e0), SC_(0.12698681652545928955078125e0), SC_(0.76716038040094146636619100014280517573683352145435e1), + SC_(0.957506835460662841796875e0), SC_(0.135477006435394287109375e0), SC_(0.7678812860097809125867733695355337577025629424427e1), + SC_(0.957506835460662841796875e0), SC_(0.188381969928741455078125e0), SC_(0.77350024736014462638627717330215132149507855848203e1), + SC_(0.957506835460662841796875e0), SC_(0.22103404998779296875e0), SC_(0.77798021744771875835629906579944080022257634051678e1), + SC_(0.957506835460662841796875e0), SC_(0.278498232364654541015625e0), SC_(0.78789799984887867841800756361305417821966337931214e1), + SC_(0.957506835460662841796875e0), SC_(0.308167040348052978515625e0), SC_(0.7941199306428990511540483495610389927659795462385e1), + SC_(0.957506835460662841796875e0), SC_(0.546881496906280517578125e0), SC_(0.88191722794111764041686933456482567415947996410172e1), + SC_(0.957506835460662841796875e0), SC_(0.54722058773040771484375e0), SC_(0.88210764827451495799425289748840141058482439587764e1), + SC_(0.957506835460662841796875e0), SC_(0.6323592662811279296875e0), SC_(0.93932336839051711207731683300744290557628447808303e1), + SC_(0.957506835460662841796875e0), SC_(0.814723670482635498046875e0), SC_(0.1182771284792391779321766802350812650995777747948e2), + SC_(0.957506835460662841796875e0), SC_(0.835008561611175537109375e0), SC_(0.12320281064339594429312325323042641487850186393306e2), + SC_(0.957506835460662841796875e0), SC_(0.905791938304901123046875e0), SC_(0.15028308241753695058976726345856425719848539377259e2), + SC_(0.957506835460662841796875e0), SC_(0.9133758544921875e0), SC_(0.15480853781823636289955218456536727078754603936939e2), + SC_(0.957506835460662841796875e0), SC_(0.957506835460662841796875e0), SC_(0.19815459918328815063517733869799796209567940407008e2), + SC_(0.957506835460662841796875e0), SC_(0.964888513088226318359375e0), SC_(0.21125650577195482974791118407918889633446493122218e2), + SC_(0.957506835460662841796875e0), SC_(0.967694938182830810546875e0), SC_(0.21717015176218797239096122108518326622341137729763e2), + SC_(0.957506835460662841796875e0), SC_(0.968867778778076171875e0), SC_(0.21983273474660825311562010991214769579511037177112e2), + SC_(0.957506835460662841796875e0), SC_(0.992881298065185546875e0), SC_(0.34339626874813658243646298235549639479779210383024e2), + SC_(0.957506835460662841796875e0), SC_(0.996461331844329833984375e0), SC_(0.4118732485739006095690261942512241046009394367706e2), + SC_(0.964888513088226318359375e0), SC_(0.97540400922298431396484375e-1), SC_(0.84167262598729967057913865642071548993821494056926e1), + SC_(0.964888513088226318359375e0), SC_(0.12698681652545928955078125e0), SC_(0.84404848302527988883063081686386807595558010595538e1), + SC_(0.964888513088226318359375e0), SC_(0.135477006435394287109375e0), SC_(0.84485422310717687861600860882580776993274527995783e1), + SC_(0.964888513088226318359375e0), SC_(0.188381969928741455078125e0), SC_(0.85113502736104862425812716756881108328230754598096e1), + SC_(0.964888513088226318359375e0), SC_(0.22103404998779296875e0), SC_(0.85614346351139255954712292747853411256494526120911e1), + SC_(0.964888513088226318359375e0), SC_(0.278498232364654541015625e0), SC_(0.86723362736902467469026276845199133670208441442384e1), + SC_(0.964888513088226318359375e0), SC_(0.308167040348052978515625e0), SC_(0.87419277761561037614604886852166036206851512226897e1), + SC_(0.964888513088226318359375e0), SC_(0.546881496906280517578125e0), SC_(0.97253254006737080595794921220432486782922159567493e1), + SC_(0.964888513088226318359375e0), SC_(0.54722058773040771484375e0), SC_(0.97274610510876201361265030640505359066806642641437e1), + SC_(0.964888513088226318359375e0), SC_(0.6323592662811279296875e0), SC_(0.10369698468565799727282608132469218660062588345402e2), + SC_(0.964888513088226318359375e0), SC_(0.814723670482635498046875e0), SC_(0.13113894672557015477747232414715461605318223024296e2), + SC_(0.964888513088226318359375e0), SC_(0.835008561611175537109375e0), SC_(0.13671308292714567667710014575103417629914128268821e2), + SC_(0.964888513088226318359375e0), SC_(0.905791938304901123046875e0), SC_(0.16748177061254822117866250013322346890460324928975e2), + SC_(0.964888513088226318359375e0), SC_(0.9133758544921875e0), SC_(0.17264321936087655821305542961641035366728631706505e2), + SC_(0.964888513088226318359375e0), SC_(0.957506835460662841796875e0), SC_(0.22234521214014481966700255547466683751285566923155e2), + SC_(0.964888513088226318359375e0), SC_(0.964888513088226318359375e0), SC_(0.23745697151087769576545138137488819387642671084236e2), + SC_(0.964888513088226318359375e0), SC_(0.967694938182830810546875e0), SC_(0.24429044892077737416257020472712338720954550665154e2), + SC_(0.964888513088226318359375e0), SC_(0.968867778778076171875e0), SC_(0.24736969743687031877602423576612072091033853979006e2), + SC_(0.964888513088226318359375e0), SC_(0.992881298065185546875e0), SC_(0.39177234306779981902493322275349202874120612277014e2), + SC_(0.964888513088226318359375e0), SC_(0.996461331844329833984375e0), SC_(0.47281969254496567507518866139477162178016309404814e2), + SC_(0.967694938182830810546875e0), SC_(0.97540400922298431396484375e-1), SC_(0.87749340894738744743694270948265096024568493541673e1), + SC_(0.967694938182830810546875e0), SC_(0.12698681652545928955078125e0), SC_(0.87998649741331392944767367780721513775984440721342e1), + SC_(0.967694938182830810546875e0), SC_(0.135477006435394287109375e0), SC_(0.88083201052130070299496002873135364634882651206055e1), + SC_(0.967694938182830810546875e0), SC_(0.188381969928741455078125e0), SC_(0.88742311823879947787457152537673060905294471250897e1), + SC_(0.967694938182830810546875e0), SC_(0.22103404998779296875e0), SC_(0.89267933850224304029991138681096743195708422942473e1), + SC_(0.967694938182830810546875e0), SC_(0.278498232364654541015625e0), SC_(0.90431924650688538411671046978793193394424542637885e1), + SC_(0.967694938182830810546875e0), SC_(0.308167040348052978515625e0), SC_(0.91162411971498806034573851810720913348772241780486e1), + SC_(0.967694938182830810546875e0), SC_(0.546881496906280517578125e0), SC_(0.10149105368729319979713525212670382997502111689019e2), + SC_(0.967694938182830810546875e0), SC_(0.54722058773040771484375e0), SC_(0.10151349673315167404426107935925233779898577793925e2), + SC_(0.967694938182830810546875e0), SC_(0.6323592662811279296875e0), SC_(0.10826498179194628778809247541253847637330455340384e2), + SC_(0.967694938182830810546875e0), SC_(0.814723670482635498046875e0), SC_(0.13716425107419425003385622658389598381007393405217e2), + SC_(0.967694938182830810546875e0), SC_(0.835008561611175537109375e0), SC_(0.14304409460535543297208834465727232109078639527796e2), + SC_(0.967694938182830810546875e0), SC_(0.905791938304901123046875e0), SC_(0.17555558471480211629722586784042312556670598890518e2), + SC_(0.967694938182830810546875e0), SC_(0.9133758544921875e0), SC_(0.18101822008911050431118405024371141344757697403174e2), + SC_(0.967694938182830810546875e0), SC_(0.957506835460662841796875e0), SC_(0.23374087333728496050939731012028166451002328394412e2), + SC_(0.967694938182830810546875e0), SC_(0.964888513088226318359375e0), SC_(0.24981174844716799621744382817399256981210100582671e2), + SC_(0.967694938182830810546875e0), SC_(0.967694938182830810546875e0), SC_(0.25708478406792358012552444041037406258993558004768e2), + SC_(0.967694938182830810546875e0), SC_(0.968867778778076171875e0), SC_(0.26036326769839731080468668543743674591394770667778e2), + SC_(0.967694938182830810546875e0), SC_(0.992881298065185546875e0), SC_(0.41481889392237843068428832454666629942434003511627e2), + SC_(0.967694938182830810546875e0), SC_(0.996461331844329833984375e0), SC_(0.50199981304225154290682359440959806846787092343051e2), + SC_(0.968867778778076171875e0), SC_(0.97540400922298431396484375e-1), SC_(0.89387960113546147667107834516592095398788972888143e1), + SC_(0.968867778778076171875e0), SC_(0.12698681652545928955078125e0), SC_(0.89642638328476758408330939893632176769422021470272e1), + SC_(0.968867778778076171875e0), SC_(0.135477006435394287109375e0), SC_(0.89729011313113898979345204014532668421948671657144e1), + SC_(0.968867778778076171875e0), SC_(0.188381969928741455078125e0), SC_(0.90402334731503204854670470706831600957975445724147e1), + SC_(0.968867778778076171875e0), SC_(0.22103404998779296875e0), SC_(0.90939306132471269118663444667976091897698503909872e1), + SC_(0.968867778778076171875e0), SC_(0.278498232364654541015625e0), SC_(0.92128477970475213164798905318957848196757385390116e1), + SC_(0.968867778778076171875e0), SC_(0.308167040348052978515625e0), SC_(0.92874801732678048736395927457812884024802323941701e1), + SC_(0.968867778778076171875e0), SC_(0.546881496906280517578125e0), SC_(0.10343008477258006353108025829292518587072018707799e2), + SC_(0.968867778778076171875e0), SC_(0.54722058773040771484375e0), SC_(0.10345302574685934174662837891808443292133893745915e2), + SC_(0.968867778778076171875e0), SC_(0.6323592662811279296875e0), SC_(0.11035535399525493226780130428484887916723768820463e2), + SC_(0.968867778778076171875e0), SC_(0.814723670482635498046875e0), SC_(0.1399230957988262400671518493205279742530081344261e2), + SC_(0.968867778778076171875e0), SC_(0.835008561611175537109375e0), SC_(0.1459432818864450018301563783872440469548427027658e2), + SC_(0.968867778778076171875e0), SC_(0.905791938304901123046875e0), SC_(0.17925561066335028228279634755383640806168340759358e2), + SC_(0.968867778778076171875e0), SC_(0.9133758544921875e0), SC_(0.18485677629382362314734839177253214367997580018245e2), + SC_(0.968867778778076171875e0), SC_(0.957506835460662841796875e0), SC_(0.23897088120406445507944201086827395214222649925925e2), + SC_(0.968867778778076171875e0), SC_(0.964888513088226318359375e0), SC_(0.25548434775250432878435321182230874558007011312145e2), + SC_(0.968867778778076171875e0), SC_(0.967694938182830810546875e0), SC_(0.26296034236224140904684212101236342110325806500716e2), + SC_(0.968867778778076171875e0), SC_(0.968867778778076171875e0), SC_(0.26633084441595776603520580290320433176270839636754e2), + SC_(0.968867778778076171875e0), SC_(0.992881298065185546875e0), SC_(0.42544756913932307567125601985248415310848489701345e2), + SC_(0.968867778778076171875e0), SC_(0.996461331844329833984375e0), SC_(0.51548677400844300392800838671485253130848008757541e2), + SC_(0.992881298065185546875e0), SC_(0.97540400922298431396484375e-1), SC_(0.18699656739276657313395353816657066904123921990644e2), + SC_(0.992881298065185546875e0), SC_(0.12698681652545928955078125e0), SC_(0.18757478722906563374193631799949467330914019570454e2), + SC_(0.992881298065185546875e0), SC_(0.135477006435394287109375e0), SC_(0.18777093567206457027427679959699782319685742366512e2), + SC_(0.992881298065185546875e0), SC_(0.188381969928741455078125e0), SC_(0.18930084599083729385128059668237675166261690632749e2), + SC_(0.992881298065185546875e0), SC_(0.22103404998779296875e0), SC_(0.19052199240193895593945310055717452371775388831154e2), + SC_(0.992881298065185546875e0), SC_(0.278498232364654541015625e0), SC_(0.19322964997802663294514050078545249868423535988744e2), + SC_(0.992881298065185546875e0), SC_(0.308167040348052978515625e0), SC_(0.19493130642004336551317918485444554537583720971045e2), + SC_(0.992881298065185546875e0), SC_(0.546881496906280517578125e0), SC_(0.21918916261281206367305171092343155433491434321112e2), + SC_(0.992881298065185546875e0), SC_(0.54722058773040771484375e0), SC_(0.21924227186423693776610203715720022304704645216433e2), + SC_(0.992881298065185546875e0), SC_(0.6323592662811279296875e0), SC_(0.23529707797658380333063244192127188223302192558852e2), + SC_(0.992881298065185546875e0), SC_(0.814723670482635498046875e0), SC_(0.30575859801875799739375471862054166647512113645807e2), + SC_(0.992881298065185546875e0), SC_(0.835008561611175537109375e0), SC_(0.32043676668849497954006889709974841705829962521726e2), + SC_(0.992881298065185546875e0), SC_(0.905791938304901123046875e0), SC_(0.40366423262962757965206220506997277916388787599754e2), + SC_(0.992881298065185546875e0), SC_(0.9133758544921875e0), SC_(0.41799032567813402312687064507199400755567816106555e2), + SC_(0.992881298065185546875e0), SC_(0.957506835460662841796875e0), SC_(0.56128172471137549389344415739570835037807068562013e2), + SC_(0.992881298065185546875e0), SC_(0.964888513088226318359375e0), SC_(0.60675965176721448584035543697674959062919562854532e2), + SC_(0.992881298065185546875e0), SC_(0.967694938182830810546875e0), SC_(0.6276157259900044417409413119621359487406867750706e2), + SC_(0.992881298065185546875e0), SC_(0.968867778778076171875e0), SC_(0.63707286094632152287529888037895307035240586536621e2), + SC_(0.992881298065185546875e0), SC_(0.992881298065185546875e0), SC_(0.1120903461776478755543567802910659613184060305846e3), + SC_(0.992881298065185546875e0), SC_(0.996461331844329833984375e0), SC_(0.14251487713932698105862123589172439943765575331836e3), + SC_(0.996461331844329833984375e0), SC_(0.97540400922298431396484375e-1), SC_(0.26525228363305081889178508646675136190937635090909e2), + SC_(0.996461331844329833984375e0), SC_(0.12698681652545928955078125e0), SC_(0.26609183579980223193874498139758348544252737042937e2), + SC_(0.996461331844329833984375e0), SC_(0.135477006435394287109375e0), SC_(0.26637665635242177149342425025355691196208309182209e2), + SC_(0.996461331844329833984375e0), SC_(0.188381969928741455078125e0), SC_(0.26859854936512317034208182700195391532482709459344e2), + SC_(0.996461331844329833984375e0), SC_(0.22103404998779296875e0), SC_(0.27037248327624528229706950425004550527856127233531e2), + SC_(0.996461331844329833984375e0), SC_(0.278498232364654541015625e0), SC_(0.27430729276514554098633382905293142866236072404168e2), + SC_(0.996461331844329833984375e0), SC_(0.308167040348052978515625e0), SC_(0.27678118753104768841544241662525580388107866876282e2), + SC_(0.996461331844329833984375e0), SC_(0.546881496906280517578125e0), SC_(0.31213240738021743521644147864390542809845218224843e2), + SC_(0.996461331844329833984375e0), SC_(0.54722058773040771484375e0), SC_(0.31220997617474390630713051844594666758716918064286e2), + SC_(0.996461331844329833984375e0), SC_(0.6323592662811279296875e0), SC_(0.33569286497756543464285670293321380122426984476525e2), + SC_(0.996461331844329833984375e0), SC_(0.814723670482635498046875e0), SC_(0.4395386723690573604089341802484590769216982250272e2), + SC_(0.996461331844329833984375e0), SC_(0.835008561611175537109375e0), SC_(0.46132844280074174499202090082014892744405520616437e2), + SC_(0.996461331844329833984375e0), SC_(0.905791938304901123046875e0), SC_(0.58587652855298148334031858334558601606458070313074e2), + SC_(0.996461331844329833984375e0), SC_(0.9133758544921875e0), SC_(0.60748367915375862531255830821598900720628098154312e2), + SC_(0.996461331844329833984375e0), SC_(0.957506835460662841796875e0), SC_(0.82625470558383026944908893678685038814065230848324e2), + SC_(0.996461331844329833984375e0), SC_(0.964888513088226318359375e0), SC_(0.89667844444233284890246553088819296424506047104969e2), + SC_(0.996461331844329833984375e0), SC_(0.967694938182830810546875e0), SC_(0.92913130201351090779050947500643074594936139585892e2), + SC_(0.996461331844329833984375e0), SC_(0.968867778778076171875e0), SC_(0.94387923495063103062113556546657899915314134335375e2), + SC_(0.996461331844329833984375e0), SC_(0.992881298065185546875e0), SC_(0.17241273531195384234344983626787913729253040033677e3), + SC_(0.996461331844329833984375e0), SC_(0.996461331844329833984375e0), SC_(0.22388123241793230536309311882526020237726710081432e3) + }; +#undef SC_ + diff --git a/test/ellint_pi3_data.ipp b/test/ellint_pi3_data.ipp new file mode 100644 index 000000000..e4ff45fc3 --- /dev/null +++ b/test/ellint_pi3_data.ipp @@ -0,0 +1,414 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Each row of data contains in order: +// +// n, phi, k, PI(n, phi, k) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 400> ellint_pi3_data = { + SC_(0.97540400922298431396484375e-1), SC_(0.15321610867977142333984375e0), SC_(0.814723670482635498046875e0), SC_(0.15373203842748125370338546651780574888816846402842e0), + SC_(0.97540400922298431396484375e-1), SC_(0.1994704306125640869140625e0), SC_(0.135477006435394287109375e0), SC_(0.19975117232566753482238350513231879856319046077755e0), + SC_(0.97540400922298431396484375e-1), SC_(0.2128067910671234130859375e0), SC_(0.905791938304901123046875e0), SC_(0.21444962146028791552496083456124507126701014421723e0), + SC_(0.97540400922298431396484375e-1), SC_(0.295909702777862548828125e0), SC_(0.835008561611175537109375e0), SC_(0.2997980220798275355640498732995940042091456814389e0), + SC_(0.97540400922298431396484375e-1), SC_(0.3471994698047637939453125e0), SC_(0.12698681652545928955078125e0), SC_(0.3486476485633547682857103272510437125962758824058e0), + SC_(0.97540400922298431396484375e-1), SC_(0.4374639987945556640625e0), SC_(0.968867778778076171875e0), SC_(0.45394401267101670348318068398554096043112056011139e0), + SC_(0.97540400922298431396484375e-1), SC_(0.4840676784515380859375e0), SC_(0.9133758544921875e0), SC_(0.50429356834860180919136192213432534063086058053706e0), + SC_(0.97540400922298431396484375e-1), SC_(0.859039485454559326171875e0), SC_(0.22103404998779296875e0), SC_(0.88214398516284753446093152446515519356116616485632e0), + SC_(0.97540400922298431396484375e-1), SC_(0.859572112560272216796875e0), SC_(0.6323592662811279296875e0), SC_(0.92068616339339750141383142107393122316780108757901e0), + SC_(0.97540400922298431396484375e-1), SC_(0.993307650089263916015625e0), SC_(0.308167040348052978515625e0), SC_(0.10344161605846899329010060099405650089702846030678e1), + SC_(0.97540400922298431396484375e-1), SC_(0.127976500988006591796875e1), SC_(0.97540400922298431396484375e-1), SC_(0.13345405612458198850035058621296608418958648996025e1), + SC_(0.97540400922298431396484375e-1), SC_(0.131162846088409423828125e1), SC_(0.54722058773040771484375e0), SC_(0.1467211661750789199498096403270216766602112811216e1), + SC_(0.97540400922298431396484375e-1), SC_(0.142281472682952880859375e1), SC_(0.278498232364654541015625e0), SC_(0.1517376955674343715832681461618162299318704226245e1), + SC_(0.97540400922298431396484375e-1), SC_(0.14347274303436279296875e1), SC_(0.188381969928741455078125e0), SC_(0.15154584947701684136724391750741680569501800622377e1), + SC_(0.97540400922298431396484375e-1), SC_(0.150404822826385498046875e1), SC_(0.546881496906280517578125e0), SC_(0.17193768372540183459266121250638009185486028760609e1), + SC_(0.97540400922298431396484375e-1), SC_(0.15156433582305908203125e1), SC_(0.992881298065185546875e0), SC_(0.32971643837652261637854814203821825514327178475199e1), + SC_(0.97540400922298431396484375e-1), SC_(0.15200517177581787109375e1), SC_(0.957506835460662841796875e0), SC_(0.26533602409619323321869623248304538129999833091585e1), + SC_(0.97540400922298431396484375e-1), SC_(0.1521893978118896484375e1), SC_(0.996461331844329833984375e0), SC_(0.3561780644579714064351594651991953922505125185799e1), + SC_(0.97540400922298431396484375e-1), SC_(0.155961430072784423828125e1), SC_(0.964888513088226318359375e0), SC_(0.28980698413581142714910692917445567690962125009838e1), + SC_(0.97540400922298431396484375e-1), SC_(0.156523787975311279296875e1), SC_(0.967694938182830810546875e0), SC_(0.2963846383355250968965561470164902664673523718254e1), + SC_(0.12698681652545928955078125e0), SC_(0.15321610867977142333984375e0), SC_(0.15761308372020721435546875e0), SC_(0.15338276528480469307645524589925911983842933545318e0), + SC_(0.12698681652545928955078125e0), SC_(0.1994704306125640869140625e0), SC_(0.725838959217071533203125e0), SC_(0.20050472017966223244832559958930749817872953420574e0), + SC_(0.12698681652545928955078125e0), SC_(0.2128067910671234130859375e0), SC_(0.970592796802520751953125e0), SC_(0.21474633975859950860058990149085299903493818118173e0), + SC_(0.12698681652545928955078125e0), SC_(0.295909702777862548828125e0), SC_(0.981109678745269775390625e0), SC_(0.30126622877564752427416022416319928001205083826745e0), + SC_(0.12698681652545928955078125e0), SC_(0.3471994698047637939453125e0), SC_(0.957166969776153564453125e0), SC_(0.35556281810161664845441307089338900623226704681013e0), + SC_(0.12698681652545928955078125e0), SC_(0.4374639987945556640625e0), SC_(0.109861753880977630615234375e0), SC_(0.44108704490870617851306791784352122043342900288043e0), + SC_(0.12698681652545928955078125e0), SC_(0.4840676784515380859375e0), SC_(0.4853756427764892578125e0), SC_(0.4931534053333340013873746669080440363943172483071e0), + SC_(0.12698681652545928955078125e0), SC_(0.859039485454559326171875e0), SC_(0.79810583591461181640625e0), SC_(0.95793555582395747656127633027011309520362186574239e0), + SC_(0.12698681652545928955078125e0), SC_(0.859572112560272216796875e0), SC_(0.80028045177459716796875e0), SC_(0.95916493478176953527039854676450394699681072398641e0), + SC_(0.12698681652545928955078125e0), SC_(0.993307650089263916015625e0), SC_(0.297029435634613037109375e0), SC_(0.10423576221417789616871878908198112649827548095731e1), + SC_(0.12698681652545928955078125e0), SC_(0.127976500988006591796875e1), SC_(0.14188633859157562255859375e0), SC_(0.13546856275247299959686911377471236914557130492097e1), + SC_(0.12698681652545928955078125e0), SC_(0.131162846088409423828125e1), SC_(0.47834846191108226776123046875e-2), SC_(0.13852508127489059545144640536254575613018719622883e1), + SC_(0.12698681652545928955078125e0), SC_(0.142281472682952880859375e1), SC_(0.4217612743377685546875e0), SC_(0.1580806460730606927026951555195055758185719667744e1), + SC_(0.12698681652545928955078125e0), SC_(0.14347274303436279296875e1), SC_(0.1124645173549652099609375e0), SC_(0.15299877934449998899665605808479497934876736447949e1), + SC_(0.12698681652545928955078125e0), SC_(0.150404822826385498046875e1), SC_(0.915735542774200439453125e0), SC_(0.23689609442676919170416815484427154520853373075881e1), + SC_(0.12698681652545928955078125e0), SC_(0.15156433582305908203125e1), SC_(0.639763355255126953125e0), SC_(0.1835738109897334786523262319533878046183264001931e1), + SC_(0.12698681652545928955078125e0), SC_(0.15200517177581787109375e1), SC_(0.792207300662994384765625e0), SC_(0.20421897283663486226184747704649952019905530832883e1), + SC_(0.12698681652545928955078125e0), SC_(0.1521893978118896484375e1), SC_(0.878430664539337158203125e0), SC_(0.22634516501807612485356151537759920819079714452558e1), + SC_(0.12698681652545928955078125e0), SC_(0.155961430072784423828125e1), SC_(0.9594924449920654296875e0), SC_(0.28887516554719816744397706140122177270738385968024e1), + SC_(0.12698681652545928955078125e0), SC_(0.156523787975311279296875e1), SC_(0.50366270542144775390625e0), SC_(0.18034472925184640376371577046428385276285373444411e1), + SC_(0.135477006435394287109375e0), SC_(0.15321610867977142333984375e0), SC_(0.655740678310394287109375e0), SC_(0.15363629557196132980883089360225522896492220958322e0), + SC_(0.135477006435394287109375e0), SC_(0.1994704306125640869140625e0), SC_(0.797928631305694580078125e0), SC_(0.20067494179979137242421676287559757328741739620642e0), + SC_(0.135477006435394287109375e0), SC_(0.2128067910671234130859375e0), SC_(0.357116796076297760009765625e-1), SC_(0.21324169024677035294223198881641105042673468575295e0), + SC_(0.135477006435394287109375e0), SC_(0.295909702777862548828125e0), SC_(0.3612940013408660888671875e0), SC_(0.29762814633345360441629373229306400484051906392213e0), + SC_(0.135477006435394287109375e0), SC_(0.3471994698047637939453125e0), SC_(0.84912931919097900390625e0), SC_(0.35421678576166500134526995976876470429367721514915e0), + SC_(0.135477006435394287109375e0), SC_(0.4374639987945556640625e0), SC_(0.21192432940006256103515625e0), SC_(0.44177167179472452041878404853114448084677945000124e0), + SC_(0.135477006435394287109375e0), SC_(0.4840676784515380859375e0), SC_(0.93399322032928466796875e0), SC_(0.50663380674601173483407086537779743434452929228299e0), + SC_(0.135477006435394287109375e0), SC_(0.859039485454559326171875e0), SC_(0.6813595294952392578125e0), SC_(0.93627839278165512585472067471532220087472706511487e0), + SC_(0.135477006435394287109375e0), SC_(0.859572112560272216796875e0), SC_(0.67873513698577880859375e0), SC_(0.93649514133220802251023716495055301794222292469291e0), + SC_(0.135477006435394287109375e0), SC_(0.993307650089263916015625e0), SC_(0.3987385332584381103515625e0), SC_(0.10560205210680177542821652194191329203962951766098e1), + SC_(0.135477006435394287109375e0), SC_(0.127976500988006591796875e1), SC_(0.75774013996124267578125e0), SC_(0.15792362576660079817584588221413499564813109220967e1), + SC_(0.135477006435394287109375e0), SC_(0.131162846088409423828125e1), SC_(0.740647256374359130859375e0), SC_(0.16166573009327473944412502794295013421915138113773e1), + SC_(0.135477006435394287109375e0), SC_(0.142281472682952880859375e1), SC_(0.74313247203826904296875e0), SC_(0.18051149573204353151046319086097224034327358735037e1), + SC_(0.135477006435394287109375e0), SC_(0.14347274303436279296875e1), SC_(0.474758684635162353515625e0), SC_(0.16246331859624891584468937862242197255022663725014e1), + SC_(0.135477006435394287109375e0), SC_(0.150404822826385498046875e1), SC_(0.3922270238399505615234375e0), SC_(0.16794499146710961167059977468015447083859789387452e1), + SC_(0.135477006435394287109375e0), SC_(0.15156433582305908203125e1), SC_(0.42208766937255859375e0), SC_(0.17060778738061936719641657840144566082201208057621e1), + SC_(0.135477006435394287109375e0), SC_(0.15200517177581787109375e1), SC_(0.65547788143157958984375e0), SC_(0.18666567615959102360545655098338303883335250287837e1), + SC_(0.135477006435394287109375e0), SC_(0.1521893978118896484375e1), SC_(0.1738651692867279052734375e0), SC_(0.16454282072183386718850345865233706115846811877772e1), + SC_(0.135477006435394287109375e0), SC_(0.155961430072784423828125e1), SC_(0.1711866855621337890625e0), SC_(0.16893141542034271144719727903810757021076763554868e1), + SC_(0.135477006435394287109375e0), SC_(0.156523787975311279296875e1), SC_(0.3019131124019622802734375e0), SC_(0.17247629437572107835994205744033158553091594172942e1), + SC_(0.188381969928741455078125e0), SC_(0.15321610867977142333984375e0), SC_(0.70604610443115234375e0), SC_(0.15374129235371893318320391783184832151469294397024e0), + SC_(0.188381969928741455078125e0), SC_(0.1994704306125640869140625e0), SC_(0.797279894351959228515625e0), SC_(0.2008145356675702347171190965342317709807636891598e0), + SC_(0.188381969928741455078125e0), SC_(0.2128067910671234130859375e0), SC_(0.318328440189361572265625e-1), SC_(0.21341117056965599965495209080176878817755967511103e0), + SC_(0.188381969928741455078125e0), SC_(0.295909702777862548828125e0), SC_(0.316550433635711669921875e0), SC_(0.29795513263165928606457135223504215685844085773217e0), + SC_(0.188381969928741455078125e0), SC_(0.3471994698047637939453125e0), SC_(0.2769229710102081298828125e0), SC_(0.35033068412795226925211701071698054849499734821317e0), + SC_(0.188381969928741455078125e0), SC_(0.4374639987945556640625e0), SC_(0.872428834438323974609375e0), SC_(0.45377622361953390225693442448312860081404123131496e0), + SC_(0.188381969928741455078125e0), SC_(0.4840676784515380859375e0), SC_(0.46171389520168304443359375e-1), SC_(0.49107707095547017672688328632255114847364396826043e0), + SC_(0.188381969928741455078125e0), SC_(0.859039485454559326171875e0), SC_(0.1491139829158782958984375e0), SC_(0.89809346952145047341364443710813312775512398687315e0), + SC_(0.188381969928741455078125e0), SC_(0.859572112560272216796875e0), SC_(0.9713177382946014404296875e-1), SC_(0.89742881227836558792767615520993058490648040919703e0), + SC_(0.188381969928741455078125e0), SC_(0.993307650089263916015625e0), SC_(0.99406850337982177734375e0), SC_(0.12866346097182797011525547537719695362479512768895e1), + SC_(0.188381969928741455078125e0), SC_(0.127976500988006591796875e1), SC_(0.82345783710479736328125e0), SC_(0.16914757898617543913705440681606954379713844698507e1), + SC_(0.188381969928741455078125e0), SC_(0.131162846088409423828125e1), SC_(0.821903288364410400390625e0), SC_(0.17526435342761314289792276986725477524729486307092e1), + SC_(0.188381969928741455078125e0), SC_(0.142281472682952880859375e1), SC_(0.69482862949371337890625e0), SC_(0.18074516959783082924161058130735089760598245925545e1), + SC_(0.188381969928741455078125e0), SC_(0.14347274303436279296875e1), SC_(0.12518276274204254150390625e0), SC_(0.15821089098843317773364875191045306220560055453024e1), + SC_(0.188381969928741455078125e0), SC_(0.150404822826385498046875e1), SC_(0.3170994818210601806640625e0), SC_(0.17058814441489491473297807610972946548213895543091e1), + SC_(0.188381969928741455078125e0), SC_(0.15156433582305908203125e1), SC_(0.763750016689300537109375e0), SC_(0.20637169193009524132911154276297356959219373460124e1), + SC_(0.188381969928741455078125e0), SC_(0.15200517177581787109375e1), SC_(0.950222074985504150390625e0), SC_(0.27609962127380559638098576214993238543182071812583e1), + SC_(0.188381969928741455078125e0), SC_(0.1521893978118896484375e1), SC_(0.4905890524387359619140625e0), SC_(0.18032026658448356902584396515553902990867775956652e1), + SC_(0.188381969928741455078125e0), SC_(0.155961430072784423828125e1), SC_(0.344460792839527130126953125e-1), SC_(0.17303476959832356294063472935024048455993292586807e1), + SC_(0.188381969928741455078125e0), SC_(0.156523787975311279296875e1), SC_(0.663605511188507080078125e0), SC_(0.20113750121583671741913865522845026629311302910205e1), + SC_(0.22103404998779296875e0), SC_(0.15321610867977142333984375e0), SC_(0.438744366168975830078125e0), SC_(0.1535961334273079861587554680902180767535933121918e0), + SC_(0.22103404998779296875e0), SC_(0.1994704306125640869140625e0), SC_(0.125896632671356201171875e0), SC_(0.20007451067950229557071601603618648918488711197919e0), + SC_(0.22103404998779296875e0), SC_(0.2128067910671234130859375e0), SC_(0.3815584480762481689453125e0), SC_(0.21374845606321022784859713852988170011624650844054e0), + SC_(0.22103404998779296875e0), SC_(0.295909702777862548828125e0), SC_(0.210209071636199951171875e0), SC_(0.29799713063089460727421513782103336686001971629263e0), + SC_(0.22103404998779296875e0), SC_(0.3471994698047637939453125e0), SC_(0.765516817569732666015625e0), SC_(0.35444071148127028925045636140809782748017213282674e0), + SC_(0.22103404998779296875e0), SC_(0.4374639987945556640625e0), SC_(0.512164272367954254150390625e-1), SC_(0.44358367380486624727607248832401085063181616261823e0), + SC_(0.22103404998779296875e0), SC_(0.4840676784515380859375e0), SC_(0.795199930667877197265625e0), SC_(0.50483832329245369216251822963557623972617072245322e0), + SC_(0.22103404998779296875e0), SC_(0.859039485454559326171875e0), SC_(0.3644125163555145263671875e-1), SC_(0.90299571928636336736922979730603695661988483695763e0), + SC_(0.22103404998779296875e0), SC_(0.859572112560272216796875e0), SC_(0.18687260150909423828125e0), SC_(0.90697574315316785499358809761253389134040276995581e0), + SC_(0.22103404998779296875e0), SC_(0.993307650089263916015625e0), SC_(0.408731162548065185546875e0), SC_(0.10856589748405692386816934071269772056858576647844e1), + SC_(0.22103404998779296875e0), SC_(0.127976500988006591796875e1), SC_(0.489764392375946044921875e0), SC_(0.14886223498445177499912691983828381727724836491669e1), + SC_(0.22103404998779296875e0), SC_(0.131162846088409423828125e1), SC_(0.457989156246185302734375e0), SC_(0.15220768540074777299689071277697836406097310372819e1), + SC_(0.22103404998779296875e0), SC_(0.142281472682952880859375e1), SC_(0.44558620452880859375e0), SC_(0.16744936605233572376252500760257564793127109126491e1), + SC_(0.22103404998779296875e0), SC_(0.14347274303436279296875e1), SC_(0.487568914890289306640625e0), SC_(0.17110729628156196981212899770183869772565168863267e1), + SC_(0.22103404998779296875e0), SC_(0.150404822826385498046875e1), SC_(0.646313011646270751953125e0), SC_(0.1933092756197274518916224005354708607388503185371e1), + SC_(0.22103404998779296875e0), SC_(0.15156433582305908203125e1), SC_(0.79397499561309814453125e0), SC_(0.2166255974158738876201014946009867539448484268238e1), + SC_(0.22103404998779296875e0), SC_(0.15200517177581787109375e1), SC_(0.709364831447601318359375e0), SC_(0.2034428279940906279008383937197067818330582509111e1), + SC_(0.22103404998779296875e0), SC_(0.1521893978118896484375e1), SC_(0.920874774456024169921875e0), SC_(0.2616800166987692910971567207696862859904694205349e1), + SC_(0.22103404998779296875e0), SC_(0.155961430072784423828125e1), SC_(0.754686653614044189453125e0), SC_(0.2179805727870919063027322336453024912606464369963e1), + SC_(0.22103404998779296875e0), SC_(0.156523787975311279296875e1), SC_(0.80753099918365478515625e0), SC_(0.23029746114936592935848874987910772650992336584872e1), + SC_(0.278498232364654541015625e0), SC_(0.15321610867977142333984375e0), SC_(0.2760250866413116455078125e0), SC_(0.15359541782380050352597486443399222909392234264685e0), + SC_(0.278498232364654541015625e0), SC_(0.1994704306125640869140625e0), SC_(0.705774247646331787109375e0), SC_(0.20087009631940590382571690580804294285648939517886e0), + SC_(0.278498232364654541015625e0), SC_(0.2128067910671234130859375e0), SC_(0.679702699184417724609375e0), SC_(0.21444797183262799392607887736033371299155530609359e0), + SC_(0.278498232364654541015625e0), SC_(0.295909702777862548828125e0), SC_(0.281843240372836589813232421875e-2), SC_(0.29830765543973898992025811850671529367027500970513e0), + SC_(0.278498232364654541015625e0), SC_(0.3471994698047637939453125e0), SC_(0.655098021030426025390625e0), SC_(0.35411794025945834835727211951953443076949635747455e0), + SC_(0.278498232364654541015625e0), SC_(0.4374639987945556640625e0), SC_(0.71070384979248046875e0), SC_(0.4524826643757160648605550478329710828157251664892e0), + SC_(0.278498232364654541015625e0), SC_(0.4840676784515380859375e0), SC_(0.16261173784732818603515625e0), SC_(0.49499697125379261889806778419304409139008558843921e0), + SC_(0.278498232364654541015625e0), SC_(0.859039485454559326171875e0), SC_(0.6439609527587890625e0), SC_(0.96333163295565645502967783347483325884263807771615e0), + SC_(0.278498232364654541015625e0), SC_(0.859572112560272216796875e0), SC_(0.11899767816066741943359375e0), SC_(0.9176561440475954755039102167213592687115744135363e0), + SC_(0.278498232364654541015625e0), SC_(0.993307650089263916015625e0), SC_(0.456032812595367431640625e0), SC_(0.11134022476344790910101546725940210489730674983636e1), + SC_(0.278498232364654541015625e0), SC_(0.127976500988006591796875e1), SC_(0.4983640611171722412109375e0), SC_(0.15368295460927824856946772689083585631020920131703e1), + SC_(0.278498232364654541015625e0), SC_(0.131162846088409423828125e1), SC_(0.773917138576507568359375e0), SC_(0.17830405487442546796542290785991455855656124062556e1), + SC_(0.278498232364654541015625e0), SC_(0.142281472682952880859375e1), SC_(0.959743976593017578125e0), SC_(0.26237895927756704539015875648309470455458940161269e1), + SC_(0.278498232364654541015625e0), SC_(0.14347274303436279296875e1), SC_(0.57375466823577880859375e0), SC_(0.18255750883765396647112454665804781738544974696669e1), + SC_(0.278498232364654541015625e0), SC_(0.150404822826385498046875e1), SC_(0.340385735034942626953125e0), SC_(0.18131037694384272884073379641282368202293747220275e1), + SC_(0.278498232364654541015625e0), SC_(0.15156433582305908203125e1), SC_(0.876757442951202392578125e0), SC_(0.24978164737894485672194659894415770879812438246432e1), + SC_(0.278498232364654541015625e0), SC_(0.15200517177581787109375e1), SC_(0.585267722606658935546875e0), SC_(0.19789188390198927819451388121514228171201085780378e1), + SC_(0.278498232364654541015625e0), SC_(0.1521893978118896484375e1), SC_(0.808175504207611083984375e0), SC_(0.23043263816568838971690889587715553812810080017821e1), + SC_(0.278498232364654541015625e0), SC_(0.155961430072784423828125e1), SC_(0.22381193935871124267578125e0), SC_(0.18591676639051519540527805732955958744105106103142e1), + SC_(0.278498232364654541015625e0), SC_(0.156523787975311279296875e1), SC_(0.177738964557647705078125e-1), SC_(0.18417264218153788933151910939894397755769046323768e1), + SC_(0.308167040348052978515625e0), SC_(0.15321610867977142333984375e0), SC_(0.75126707553863525390625e0), SC_(0.15392567485046429104853351638076369308441312440194e0), + SC_(0.308167040348052978515625e0), SC_(0.1994704306125640869140625e0), SC_(0.821245968341827392578125e0), SC_(0.20118756667244770992110958566757492099981524943717e0), + SC_(0.308167040348052978515625e0), SC_(0.2128067910671234130859375e0), SC_(0.25509512424468994140625e0), SC_(0.21390060705363350408076620954899649469747666138872e0), + SC_(0.308167040348052978515625e0), SC_(0.295909702777862548828125e0), SC_(0.820840775966644287109375e0), SC_(0.30155059618105085830666692356165451679878348376507e0), + SC_(0.308167040348052978515625e0), SC_(0.3471994698047637939453125e0), SC_(0.505957067012786865234375e0), SC_(0.35329539424037961151212458125809826398055395541705e0), + SC_(0.308167040348052978515625e0), SC_(0.4374639987945556640625e0), SC_(0.940074026584625244140625e0), SC_(0.45930022500374264535920809304342668001912426848082e0), + SC_(0.308167040348052978515625e0), SC_(0.4840676784515380859375e0), SC_(0.699076712131500244140625e0), SC_(0.50532921843610224822188904193980807204299968331298e0), + SC_(0.308167040348052978515625e0), SC_(0.859039485454559326171875e0), SC_(0.4126665294170379638671875e0), SC_(0.94076579198312640059853653523053054951670998420627e0), + SC_(0.308167040348052978515625e0), SC_(0.859572112560272216796875e0), SC_(0.8909032344818115234375e0), SC_(0.10302320117360371620572455298638790520158782314861e1), + SC_(0.308167040348052978515625e0), SC_(0.993307650089263916015625e0), SC_(0.4231651127338409423828125e0), SC_(0.11194350928930373957087037995051718294575131965952e1), + SC_(0.308167040348052978515625e0), SC_(0.127976500988006591796875e1), SC_(0.959291398525238037109375e0), SC_(0.2105640545937209865793460126473308981607671818351e1), + SC_(0.308167040348052978515625e0), SC_(0.131162846088409423828125e1), SC_(0.5809566974639892578125e0), SC_(0.16542811049231352756099077522451639718250570933187e1), + SC_(0.308167040348052978515625e0), SC_(0.142281472682952880859375e1), SC_(0.547215521335601806640625e0), SC_(0.18227251405247038014457677379504342975130147875429e1), + SC_(0.308167040348052978515625e0), SC_(0.14347274303436279296875e1), SC_(0.15805758535861968994140625e0), SC_(0.17029536585882085658642883555352536099982100046429e1), + SC_(0.308167040348052978515625e0), SC_(0.150404822826385498046875e1), SC_(0.13862444460391998291015625e0), SC_(0.18011727896006691442429472244668928246761893745114e1), + SC_(0.308167040348052978515625e0), SC_(0.15156433582305908203125e1), SC_(0.761731207370758056640625e0), SC_(0.22424388225967142214463496089885385435429884763411e1), + SC_(0.308167040348052978515625e0), SC_(0.15200517177581787109375e1), SC_(0.14929400384426116943359375e0), SC_(0.18259999071161079666724764785633064412899826784228e1), + SC_(0.308167040348052978515625e0), SC_(0.1521893978118896484375e1), SC_(0.23015606403350830078125e0), SC_(0.18440796562186155881647002585956695417463014805546e1), + SC_(0.308167040348052978515625e0), SC_(0.155961430072784423828125e1), SC_(0.2575082480907440185546875e0), SC_(0.19073443315304275817280146256306210452474615171165e1), + SC_(0.308167040348052978515625e0), SC_(0.156523787975311279296875e1), SC_(0.809734523296356201171875e0), SC_(0.24680665053651211920659364343243037508421719972311e1), + SC_(0.546881496906280517578125e0), SC_(0.15321610867977142333984375e0), SC_(0.840717256069183349609375e0), SC_(0.15430191164125987413293996120618665981534857333765e0), + SC_(0.546881496906280517578125e0), SC_(0.1994704306125640869140625e0), SC_(0.988521575927734375e0), SC_(0.20224679678600899598988461657720043375320482570529e0), + SC_(0.546881496906280517578125e0), SC_(0.2128067910671234130859375e0), SC_(0.254282176494598388671875e0), SC_(0.21467837012396115801541257902605108910689958506691e0), + SC_(0.546881496906280517578125e0), SC_(0.295909702777862548828125e0), SC_(0.3324482738971710205078125e0), SC_(0.30117035511666434450009340920986806453217985836914e0), + SC_(0.546881496906280517578125e0), SC_(0.3471994698047637939453125e0), SC_(0.814284801483154296875e0), SC_(0.3598145341367038812561615485839961747283045936216e0), + SC_(0.546881496906280517578125e0), SC_(0.4374639987945556640625e0), SC_(0.2998317182064056396484375e0), SC_(0.45438791796517087379541413090689801503022764166296e0), + SC_(0.546881496906280517578125e0), SC_(0.4840676784515380859375e0), SC_(0.243524968624114990234375e0), SC_(0.50651360267838455337049620434256116881293607563184e0), + SC_(0.546881496906280517578125e0), SC_(0.859039485454559326171875e0), SC_(0.13539127074182033538818359375e-1), SC_(0.98444868321134112616327742058262550532022365829997e0), + SC_(0.546881496906280517578125e0), SC_(0.859572112560272216796875e0), SC_(0.929263651371002197265625e0), SC_(0.11202387372756731561909381445040107404687318049755e1), + SC_(0.546881496906280517578125e0), SC_(0.993307650089263916015625e0), SC_(0.21723784506320953369140625e0), SC_(0.11996102990401438772325527772204776207943966293915e1), + SC_(0.546881496906280517578125e0), SC_(0.127976500988006591796875e1), SC_(0.349983751773834228515625e0), SC_(0.17631141790422961822411101374980407330945194154271e1), + SC_(0.546881496906280517578125e0), SC_(0.131162846088409423828125e1), SC_(0.90736472606658935546875e0), SC_(0.24685991521322679592835286954438482312764117623578e1), + SC_(0.546881496906280517578125e0), SC_(0.142281472682952880859375e1), SC_(0.196595251560211181640625e0), SC_(0.20309668813290373338560634748500047283537802013056e1), + SC_(0.546881496906280517578125e0), SC_(0.14347274303436279296875e1), SC_(0.848467767238616943359375e0), SC_(0.27689406702583450585113794060991706194777122327044e1), + SC_(0.546881496906280517578125e0), SC_(0.150404822826385498046875e1), SC_(0.251083850860595703125e0), SC_(0.2227331793067602279515444807538003960194407743336e1), + SC_(0.546881496906280517578125e0), SC_(0.15156433582305908203125e1), SC_(0.955017566680908203125e0), SC_(0.39841502366038685758009437093503073409703050289282e1), + SC_(0.546881496906280517578125e0), SC_(0.15200517177581787109375e1), SC_(0.616044700145721435546875e0), SC_(0.25398945504855765112206170478211853748621866326079e1), + SC_(0.546881496906280517578125e0), SC_(0.1521893978118896484375e1), SC_(0.778897702693939208984375e0), SC_(0.28708224866732851174538356618123006393499065869153e1), + SC_(0.546881496906280517578125e0), SC_(0.155961430072784423828125e1), SC_(0.473288834095001220703125e0), SC_(0.24867907032316093745687384858281855283550442766088e1), + SC_(0.546881496906280517578125e0), SC_(0.156523787975311279296875e1), SC_(0.987459599971771240234375e0), SC_(0.55880532293684972175096743550522689481009401335481e1), + SC_(0.54722058773040771484375e0), SC_(0.15321610867977142333984375e0), SC_(0.3516595065593719482421875e0), SC_(0.15394861027987851790269470747728106269690935269237e0), + SC_(0.54722058773040771484375e0), SC_(0.1994704306125640869140625e0), SC_(0.6759537756443023681640625e-1), SC_(0.20093157039642945851543617878154228686960679374495e0), + SC_(0.54722058773040771484375e0), SC_(0.2128067910671234130859375e0), SC_(0.830828607082366943359375e0), SC_(0.21570587318320040209124323131575989765027779856438e0), + SC_(0.54722058773040771484375e0), SC_(0.295909702777862548828125e0), SC_(0.79359757900238037109375e0), SC_(0.30350802740747761165151485445091375548128161543869e0), + SC_(0.54722058773040771484375e0), SC_(0.3471994698047637939453125e0), SC_(0.58526408672332763671875e0), SC_(0.35742192071722254902413558768566837125434097666391e0), + SC_(0.54722058773040771484375e0), SC_(0.4374639987945556640625e0), SC_(0.594503581523895263671875e0), SC_(0.45830806922418915745292117712593945684636620822424e0), + SC_(0.54722058773040771484375e0), SC_(0.4840676784515380859375e0), SC_(0.54972362518310546875e0), SC_(0.51143347634367867342471257562016343685162976186578e0), + SC_(0.54722058773040771484375e0), SC_(0.859039485454559326171875e0), SC_(0.73279869556427001953125e0), SC_(0.10577042332472346798816418293514163759853976562141e1), + SC_(0.54722058773040771484375e0), SC_(0.859572112560272216796875e0), SC_(0.9171936511993408203125e0), SC_(0.11155239315987519432370181784079532188750709866122e1), + SC_(0.54722058773040771484375e0), SC_(0.993307650089263916015625e0), SC_(0.695232868194580078125e0), SC_(0.12977243502236374337725785194246729813171091308621e1), + SC_(0.54722058773040771484375e0), SC_(0.127976500988006591796875e1), SC_(0.285839021205902099609375e0), SC_(0.17456484465742635510491489805029645776724197810908e1), + SC_(0.54722058773040771484375e0), SC_(0.131162846088409423828125e1), SC_(0.679819762706756591796875e0), SC_(0.20395618535968433986342758103170943928811359281533e1), + SC_(0.54722058773040771484375e0), SC_(0.142281472682952880859375e1), SC_(0.7572002410888671875e0), SC_(0.24839162402307899431852893659934423982272592946283e1), + SC_(0.54722058773040771484375e0), SC_(0.14347274303436279296875e1), SC_(0.3923204839229583740234375e0), SC_(0.21288092547044085132951719509766559675057581911452e1), + SC_(0.54722058773040771484375e0), SC_(0.150404822826385498046875e1), SC_(0.7537291049957275390625e0), SC_(0.27439874042495155666431832587302615179331837996014e1), + SC_(0.54722058773040771484375e0), SC_(0.15156433582305908203125e1), SC_(0.561557471752166748046875e0), SC_(0.24615640805355064111625476270972091825378518899619e1), + SC_(0.54722058773040771484375e0), SC_(0.15200517177581787109375e1), SC_(0.38044583797454833984375e0), SC_(0.23241267316766070614681045515295373421784862934509e1), + SC_(0.54722058773040771484375e0), SC_(0.1521893978118896484375e1), SC_(0.20806805789470672607421875e0), SC_(0.22551080259640874274686631474827923351847427045064e1), + SC_(0.54722058773040771484375e0), SC_(0.155961430072784423828125e1), SC_(0.56782162189483642578125e0), SC_(0.25863529809290751691249488671768068424620240885224e1), + SC_(0.54722058773040771484375e0), SC_(0.156523787975311279296875e1), SC_(0.527371466159820556640625e0), SC_(0.2554629161518851188714800488545195748365555606992e1), + SC_(0.6323592662811279296875e0), SC_(0.15321610867977142333984375e0), SC_(0.75854294002056121826171875e-1), SC_(0.15398092120954751027321508980312697284256070785844e0), + SC_(0.6323592662811279296875e0), SC_(0.1994704306125640869140625e0), SC_(0.4042085111141204833984375e0), SC_(0.20137362997676579799176872137982828890827039500779e0), + SC_(0.6323592662811279296875e0), SC_(0.2128067910671234130859375e0), SC_(0.539501197636127471923828125e-1), SC_(0.2148594661573741380378818908772550006184401355113e0), + SC_(0.6323592662811279296875e0), SC_(0.295909702777862548828125e0), SC_(0.352762401103973388671875e0), SC_(0.30200600483140969518899676847986391907832733198417e0), + SC_(0.6323592662811279296875e0), SC_(0.3471994698047637939453125e0), SC_(0.530797541141510009765625e0), SC_(0.35825232301582295088937112205796335247816877004938e0), + SC_(0.6323592662811279296875e0), SC_(0.4374639987945556640625e0), SC_(0.59282386302947998046875e0), SC_(0.46094914705726719065176684471987501601200188434625e0), + SC_(0.6323592662811279296875e0), SC_(0.4840676784515380859375e0), SC_(0.779167234897613525390625e0), SC_(0.52174982956066074439247911824370445814787929403429e0), + SC_(0.6323592662811279296875e0), SC_(0.859039485454559326171875e0), SC_(0.3563451468944549560546875e0), SC_(0.10262543672450826829260724771835297960230291295702e1), + SC_(0.6323592662811279296875e0), SC_(0.859572112560272216796875e0), SC_(0.934010684490203857421875e0), SC_(0.11547625238873614738644258264457290529891583193801e1), + SC_(0.6323592662811279296875e0), SC_(0.993307650089263916015625e0), SC_(0.964966356754302978515625e0), SC_(0.15234413567879387020642788633248001491416209408078e1), + SC_(0.6323592662811279296875e0), SC_(0.127976500988006591796875e1), SC_(0.1299062073230743408203125e0), SC_(0.18413491768831881075312787552138802618527381876723e1), + SC_(0.6323592662811279296875e0), SC_(0.131162846088409423828125e1), SC_(0.15443842113018035888671875e0), SC_(0.19222378071201812732675807899949738595403581073747e1), + SC_(0.6323592662811279296875e0), SC_(0.142281472682952880859375e1), SC_(0.568823635578155517578125e0), SC_(0.24365724142849164356444375034499546430239505553693e1), + SC_(0.6323592662811279296875e0), SC_(0.14347274303436279296875e1), SC_(0.3949082195758819580078125e0), SC_(0.23314229565108520603670128868078607414012938471566e1), + SC_(0.6323592662811279296875e0), SC_(0.150404822826385498046875e1), SC_(0.4693906307220458984375e0), SC_(0.25916897134612854229552277854239085364596238474712e1), + SC_(0.6323592662811279296875e0), SC_(0.15156433582305908203125e1), SC_(0.387295901775360107421875e0), SC_(0.25615820809238499526599318049112869297280332401821e1), + SC_(0.6323592662811279296875e0), SC_(0.15200517177581787109375e1), SC_(0.1190206967294216156005859375e-1), SC_(0.24529258671729803411462179505475180495199613985106e1), + SC_(0.6323592662811279296875e0), SC_(0.1521893978118896484375e1), SC_(0.7269546985626220703125e0), SC_(0.30522768807297073528830958653582311888514530629749e1), + SC_(0.6323592662811279296875e0), SC_(0.155961430072784423828125e1), SC_(0.3371226489543914794921875e0), SC_(0.26568993493402351861178312883401261620461637682988e1), + SC_(0.6323592662811279296875e0), SC_(0.156523787975311279296875e1), SC_(0.3885698020458221435546875e0), SC_(0.27085657207478667326908185684482658038481557744533e1), + SC_(0.814723670482635498046875e0), SC_(0.15321610867977142333984375e0), SC_(0.1621823012828826904296875e0), SC_(0.15421544224519914647291040764576977885848570497352e0), + SC_(0.814723670482635498046875e0), SC_(0.1994704306125640869140625e0), SC_(0.9274928569793701171875e0), SC_(0.20281990141672933241592473860441227009665877630456e0), + SC_(0.814723670482635498046875e0), SC_(0.2128067910671234130859375e0), SC_(0.794284522533416748046875e0), SC_(0.21649872459140500962390619725457369928514509967875e0), + SC_(0.814723670482635498046875e0), SC_(0.295909702777862548828125e0), SC_(0.4361175596714019775390625e0), SC_(0.30397706429573268293288300856057951281709299084787e0), + SC_(0.814723670482635498046875e0), SC_(0.3471994698047637939453125e0), SC_(0.31121504306793212890625e0), SC_(0.35967712746026221135867420211146755398231759545097e0), + SC_(0.814723670482635498046875e0), SC_(0.4374639987945556640625e0), SC_(0.86267817020416259765625e0), SC_(0.47324388859539641114477253820149458045388655379996e0), + SC_(0.814723670482635498046875e0), SC_(0.4840676784515380859375e0), SC_(0.528533160686492919921875e0), SC_(0.52290645966044236278240775991610829019053680855343e0), + SC_(0.814723670482635498046875e0), SC_(0.859039485454559326171875e0), SC_(0.62036001682281494140625e0), SC_(0.11330056495992178266959300159233313895725637509264e1), + SC_(0.814723670482635498046875e0), SC_(0.859572112560272216796875e0), SC_(0.1656487286090850830078125e0), SC_(0.10799870751230090525159652586345386778803883297933e1), + SC_(0.814723670482635498046875e0), SC_(0.993307650089263916015625e0), SC_(0.119547180831432342529296875e0), SC_(0.13594746169525790221222252791669481748489966831704e1), + SC_(0.814723670482635498046875e0), SC_(0.127976500988006591796875e1), SC_(0.601981937885284423828125e0), SC_(0.25029079546248654600284239262212144798031946300692e1), + SC_(0.814723670482635498046875e0), SC_(0.131162846088409423828125e1), SC_(0.471956789493560791015625e0), SC_(0.25313839456705618070572598272578480282827783285862e1), + SC_(0.814723670482635498046875e0), SC_(0.142281472682952880859375e1), SC_(0.26297128200531005859375e0), SC_(0.29390140522227067881692822236045018165494514735754e1), + SC_(0.814723670482635498046875e0), SC_(0.14347274303436279296875e1), SC_(0.3402197062969207763671875e0), SC_(0.30483218097902679731101280792650785140765948430902e1), + SC_(0.814723670482635498046875e0), SC_(0.150404822826385498046875e1), SC_(0.65407907962799072265625e0), SC_(0.39437980136742475702199210287732838111218905421546e1), + SC_(0.814723670482635498046875e0), SC_(0.15156433582305908203125e1), SC_(0.529841959476470947265625e0), SC_(0.37394248092977825165545518375842222109446969765199e1), + SC_(0.814723670482635498046875e0), SC_(0.15200517177581787109375e1), SC_(0.689214527606964111328125e0), SC_(0.4168571485915139152854457402894778942914186994962e1), + SC_(0.814723670482635498046875e0), SC_(0.1521893978118896484375e1), SC_(0.7161006927490234375e0), SC_(0.42818097827852255129418358029436883892256225300985e1), + SC_(0.814723670482635498046875e0), SC_(0.155961430072784423828125e1), SC_(0.748151600360870361328125e0), SC_(0.47246208849629886552050967056823184649385220954246e1), + SC_(0.814723670482635498046875e0), SC_(0.156523787975311279296875e1), SC_(0.988379418849945068359375e0), SC_(0.10627631649024785924819390085951672540955014724732e2), + SC_(0.835008561611175537109375e0), SC_(0.15321610867977142333984375e0), SC_(0.4505415856838226318359375e0), SC_(0.1543471504345624424109375684172675717946165311776e0), + SC_(0.835008561611175537109375e0), SC_(0.1994704306125640869140625e0), SC_(0.72049343585968017578125e0), SC_(0.20240768262814177579386325803677866788584066829019e0), + SC_(0.835008561611175537109375e0), SC_(0.2128067910671234130859375e0), SC_(0.83821378648281097412109375e-1), SC_(0.21553765540268994498307217721263063665507699685948e0), + SC_(0.835008561611175537109375e0), SC_(0.295909702777862548828125e0), SC_(0.91257750988006591796875e0), SC_(0.30713411949524097334864751538453432899082333661098e0), + SC_(0.835008561611175537109375e0), SC_(0.3471994698047637939453125e0), SC_(0.2289769649505615234375e0), SC_(0.35966592222946696834558061228751634321678291896457e0), + SC_(0.835008561611175537109375e0), SC_(0.4374639987945556640625e0), SC_(0.50549852848052978515625e0), SC_(0.46604314861839282811575794774201959832277773764614e0), + SC_(0.835008561611175537109375e0), SC_(0.4840676784515380859375e0), SC_(0.91333734989166259765625e0), SC_(0.53657208745343046140672467966345188537341555208544e0), + SC_(0.835008561611175537109375e0), SC_(0.859039485454559326171875e0), SC_(0.5582687854766845703125e0), SC_(0.11296229001178209304704909676204483091200543834654e1), + SC_(0.835008561611175537109375e0), SC_(0.859572112560272216796875e0), SC_(0.152378022670745849609375e0), SC_(0.10876415477927578200486376096943838141845740716713e1), + SC_(0.835008561611175537109375e0), SC_(0.993307650089263916015625e0), SC_(0.50319004058837890625e0), SC_(0.14358965883735935905419862051172824592728587725814e1), + SC_(0.835008561611175537109375e0), SC_(0.127976500988006591796875e1), SC_(0.82581698894500732421875e0), SC_(0.30009544156151973102913624524063756620151459309383e1), + SC_(0.835008561611175537109375e0), SC_(0.131162846088409423828125e1), SC_(0.4624741971492767333984375e0), SC_(0.26081148621086425356924764795547014604072097723466e1), + SC_(0.835008561611175537109375e0), SC_(0.142281472682952880859375e1), SC_(0.538342416286468505859375e0), SC_(0.33347088553490709903999593163585110664196386181649e1), + SC_(0.835008561611175537109375e0), SC_(0.14347274303436279296875e1), SC_(0.546591937541961669921875e0), SC_(0.34253854001310708224056686833635863338817740830414e1), + SC_(0.835008561611175537109375e0), SC_(0.150404822826385498046875e1), SC_(0.996134698390960693359375e0), SC_(0.10570130611831314444016501000969951914299134551828e2), + SC_(0.835008561611175537109375e0), SC_(0.15156433582305908203125e1), SC_(0.4475843906402587890625e0), SC_(0.38124794859273825441069683694442615588309980456637e1), + SC_(0.835008561611175537109375e0), SC_(0.15200517177581787109375e1), SC_(0.7817552983760833740234375e-1), SC_(0.35683967981908619275495637085001629411640461384741e1), + SC_(0.835008561611175537109375e0), SC_(0.1521893978118896484375e1), SC_(0.854451000690460205078125e0), SC_(0.54441031646948756423096963485056383495288465537153e1), + SC_(0.835008561611175537109375e0), SC_(0.155961430072784423828125e1), SC_(0.442678272724151611328125e0), SC_(0.41008144401977018287198169560791113378794188376539e1), + SC_(0.835008561611175537109375e0), SC_(0.156523787975311279296875e1), SC_(0.60423147678375244140625e0), SC_(0.44902845167476946580473712439439527882954432526114e1), + SC_(0.905791938304901123046875e0), SC_(0.15321610867977142333984375e0), SC_(0.106652773916721343994140625e0), SC_(0.15431778412390276277759782789476393007797031164116e0), + SC_(0.905791938304901123046875e0), SC_(0.1994704306125640869140625e0), SC_(0.4985441863536834716796875e0), SC_(0.20223472108953525129458054711444453260790566685329e0), + SC_(0.905791938304901123046875e0), SC_(0.2128067910671234130859375e0), SC_(0.9618980884552001953125e0), SC_(0.21730110751061073351172410418940772710015669363783e0), + SC_(0.905791938304901123046875e0), SC_(0.295909702777862548828125e0), SC_(0.979925632476806640625e0), SC_(0.3084178501706348073664487064448083712718646501623e0), + SC_(0.905791938304901123046875e0), SC_(0.3471994698047637939453125e0), SC_(0.463422574102878570556640625e-2), SC_(0.36038118493419671483975692269590337503857139776645e0), + SC_(0.905791938304901123046875e0), SC_(0.4374639987945556640625e0), SC_(0.34317314624786376953125e-1), SC_(0.46453047117703614141431491209083328921397976267143e0), + SC_(0.905791938304901123046875e0), SC_(0.4840676784515380859375e0), SC_(0.774910449981689453125e0), SC_(0.53445337251807937943341267247025011827714976413687e0), + SC_(0.905791938304901123046875e0), SC_(0.859039485454559326171875e0), SC_(0.97700202465057373046875e0), SC_(0.13073593675547265731392611682266271034008381336704e1), + SC_(0.905791938304901123046875e0), SC_(0.859572112560272216796875e0), SC_(0.817303240299224853515625e0), SC_(0.12336363654190000070799786896326903015961440380611e1), + SC_(0.905791938304901123046875e0), SC_(0.993307650089263916015625e0), SC_(0.3631864488124847412109375e0), SC_(0.14680584179397563044440300090163768039256833250483e1), + SC_(0.905791938304901123046875e0), SC_(0.127976500988006591796875e1), SC_(0.868694722652435302734375e0), SC_(0.36195182216979546329535507825802014326665932215075e1), + SC_(0.905791938304901123046875e0), SC_(0.131162846088409423828125e1), SC_(0.679519712924957275390625e0), SC_(0.33180763503853330565879465111347181515075951838091e1), + SC_(0.905791938304901123046875e0), SC_(0.142281472682952880859375e1), SC_(0.844358503818511962890625e-1), SC_(0.36534512094703041360100869161806161319790771488492e1), + SC_(0.905791938304901123046875e0), SC_(0.14347274303436279296875e1), SC_(0.3462333977222442626953125e0), SC_(0.39163710827778602815532035038817324104097313639414e1), + SC_(0.905791938304901123046875e0), SC_(0.150404822826385498046875e1), SC_(0.399782657623291015625e0), SC_(0.47062733336349311179199616568378630864013468807379e1), + SC_(0.905791938304901123046875e0), SC_(0.15156433582305908203125e1), SC_(0.85587513446807861328125e0), SC_(0.71682639328546134519511374804756058127979789269403e1), + SC_(0.905791938304901123046875e0), SC_(0.15200517177581787109375e1), SC_(0.25987040996551513671875e0), SC_(0.47029104727608450068777767843245946384702754006103e1), + SC_(0.905791938304901123046875e0), SC_(0.1521893978118896484375e1), SC_(0.450595431029796600341796875e-1), SC_(0.46060031279437956120359972587500133523360294174506e1), + SC_(0.905791938304901123046875e0), SC_(0.155961430072784423828125e1), SC_(0.80006849765777587890625e0), SC_(0.72700660235850347593340492456248967795090945146508e1), + SC_(0.905791938304901123046875e0), SC_(0.156523787975311279296875e1), SC_(0.660119473934173583984375e0), SC_(0.62668628529934141301633691980218815706575920761165e1), + SC_(0.9133758544921875e0), SC_(0.15321610867977142333984375e0), SC_(0.431413829326629638671875e0), SC_(0.15443290505311020333906151706417274386985828283102e0), + SC_(0.9133758544921875e0), SC_(0.1994704306125640869140625e0), SC_(0.74994099140167236328125e0), SC_(0.20268273748172570844017355906890170538408812180291e0), + SC_(0.9133758544921875e0), SC_(0.2128067910671234130859375e0), SC_(0.910647571086883544921875e0), SC_(0.2171644354883534523862993429784570956100173387294e0), + SC_(0.9133758544921875e0), SC_(0.295909702777862548828125e0), SC_(0.13299603760242462158203125e0), SC_(0.30412483443831110153287192256766962962132883624802e0), + SC_(0.9133758544921875e0), SC_(0.3471994698047637939453125e0), SC_(0.18184702098369598388671875e0), SC_(0.36074030690148914565708013284359470991242254317927e0), + SC_(0.9133758544921875e0), SC_(0.4374639987945556640625e0), SC_(0.982360541820526123046875e0), SC_(0.48048629106037844526396100101670448320331828451626e0), + SC_(0.9133758544921875e0), SC_(0.4840676784515380859375e0), SC_(0.2638029158115386962890625e0), SC_(0.5230961824634638806349914938609306071392737346471e0), + SC_(0.9133758544921875e0), SC_(0.859039485454559326171875e0), SC_(0.95355175435543060302734375e-1), SC_(0.11185041878549939751098381930154546784656137010255e1), + SC_(0.9133758544921875e0), SC_(0.859572112560272216796875e0), SC_(0.145538985729217529296875e0), SC_(0.11213536603792059774918319247221406474855248988517e1), + SC_(0.9133758544921875e0), SC_(0.993307650089263916015625e0), SC_(0.282673299312591552734375e0), SC_(0.1461722381151363043123137222502210037687124044186e1), + SC_(0.9133758544921875e0), SC_(0.127976500988006591796875e1), SC_(0.1360685527324676513671875e0), SC_(0.26525882801860511037844408826245496016245268036215e1), + SC_(0.9133758544921875e0), SC_(0.131162846088409423828125e1), SC_(0.802111446857452392578125e0), SC_(0.37416125150641848054422354073252550844982695384563e1), + SC_(0.9133758544921875e0), SC_(0.142281472682952880859375e1), SC_(0.869292199611663818359375e0), SC_(0.57788660737214781633058238439722973539236454033723e1), + SC_(0.9133758544921875e0), SC_(0.14347274303436279296875e1), SC_(0.77557027339935302734375e-1), SC_(0.38656540745788403336980969144129335357085104505533e1), + SC_(0.9133758544921875e0), SC_(0.150404822826385498046875e1), SC_(0.579704582691192626953125e0), SC_(0.5308931263965051225905007403546656963535804193718e1), + SC_(0.9133758544921875e0), SC_(0.15156433582305908203125e1), SC_(0.627384364604949951171875e0), SC_(0.56471912265854451136580037609045870976368644105271e1), + SC_(0.9133758544921875e0), SC_(0.15200517177581787109375e1), SC_(0.549860179424285888671875e0), SC_(0.54293646342251173327831417909795900892556227316998e1), + SC_(0.9133758544921875e0), SC_(0.1521893978118896484375e1), SC_(0.80939121544361114501953125e-2), SC_(0.47772934568305271919245882141704353562392730986097e1), + SC_(0.9133758544921875e0), SC_(0.155961430072784423828125e1), SC_(0.14495480060577392578125e0), SC_(0.52505674569203204356112454815791129424788077064078e1), + SC_(0.9133758544921875e0), SC_(0.156523787975311279296875e1), SC_(0.680287063121795654296875e0), SC_(0.66666552931803800594035671336221702055705322158683e1), + SC_(0.957506835460662841796875e0), SC_(0.15321610867977142333984375e0), SC_(0.853031098842620849609375e0), SC_(0.15481774707560496930363054522440908507917413009748e0), + SC_(0.957506835460662841796875e0), SC_(0.1994704306125640869140625e0), SC_(0.533933103084564208984375e0), SC_(0.20242662055466222679121771918699529789871242510745e0), + SC_(0.957506835460662841796875e0), SC_(0.2128067910671234130859375e0), SC_(0.622055113315582275390625e0), SC_(0.21657303272186598526038842892565787030644597135577e0), + SC_(0.957506835460662841796875e0), SC_(0.295909702777862548828125e0), SC_(0.438666820526123046875e0), SC_(0.305325449160118086406466057134119599385952338642e0), + SC_(0.957506835460662841796875e0), SC_(0.3471994698047637939453125e0), SC_(0.3509523868560791015625e0), SC_(0.36209484469042096248341537701264301717612689738285e0), + SC_(0.957506835460662841796875e0), SC_(0.4374639987945556640625e0), SC_(0.19955120980739593505859375e0), SC_(0.46684567081558110757689784751620916168246019568281e0), + SC_(0.957506835460662841796875e0), SC_(0.4840676784515380859375e0), SC_(0.51324951648712158203125e0), SC_(0.52935680730599232733985699412171877186079491901809e0), + SC_(0.957506835460662841796875e0), SC_(0.859039485454559326171875e0), SC_(0.13800132274627685546875e0), SC_(0.11407487548467852359981403322089829376175201572234e1), + SC_(0.957506835460662841796875e0), SC_(0.859572112560272216796875e0), SC_(0.4018080234527587890625e0), SC_(0.1163899161424413562126027226572649039973629639954e1), + SC_(0.957506835460662841796875e0), SC_(0.993307650089263916015625e0), SC_(0.3823329508304595947265625e0), SC_(0.15262448255296013666408007770892306704744229353925e1), + SC_(0.957506835460662841796875e0), SC_(0.127976500988006591796875e1), SC_(0.75966693460941314697265625e-1), SC_(0.29290099528685311976523608955369731517542782786117e1), + SC_(0.957506835460662841796875e0), SC_(0.131162846088409423828125e1), SC_(0.762421309947967529296875e0), SC_(0.41053275865860098054744782921646613492465209139515e1), + SC_(0.957506835460662841796875e0), SC_(0.142281472682952880859375e1), SC_(0.23991616070270538330078125e0), SC_(0.46813989048163996563380048828520825839097189715557e1), + SC_(0.957506835460662841796875e0), SC_(0.14347274303436279296875e1), SC_(0.404711104929447174072265625e-1), SC_(0.47788268276127732733457680654331679141798344391712e1), + SC_(0.957506835460662841796875e0), SC_(0.150404822826385498046875e1), SC_(0.123318932950496673583984375e0), SC_(0.61357293060950543264386123385763602959388466283618e1), + SC_(0.957506835460662841796875e0), SC_(0.15156433582305908203125e1), SC_(0.252955973148345947265625e0), SC_(0.65194812902628771299651783588365566014443617619048e1), + SC_(0.957506835460662841796875e0), SC_(0.15200517177581787109375e1), SC_(0.18390779197216033935546875e0), SC_(0.65372936297719301770177202712323542853298019862264e1), + SC_(0.957506835460662841796875e0), SC_(0.1521893978118896484375e1), SC_(0.5047709941864013671875e0), SC_(0.72914805028595182618960631382952662249808063648781e1), + SC_(0.957506835460662841796875e0), SC_(0.155961430072784423828125e1), SC_(0.23995251953601837158203125e0), SC_(0.75386824268841640857291503768392622713931248458187e1), + SC_(0.957506835460662841796875e0), SC_(0.156523787975311279296875e1), SC_(0.822604954242706298828125e0), SC_(0.11779662037709625925184321613253996376786579444437e2), + SC_(0.964888513088226318359375e0), SC_(0.15321610867977142333984375e0), SC_(0.4172670543193817138671875e0), SC_(0.15448882344790787156296341867339868332457948807052e0), + SC_(0.964888513088226318359375e0), SC_(0.1994704306125640869140625e0), SC_(0.981723129749298095703125e0), SC_(0.20337922888420170276988198067749659054470861589626e0), + SC_(0.964888513088226318359375e0), SC_(0.2128067910671234130859375e0), SC_(0.49654424190521240234375e-1), SC_(0.21596458061912549782608623520382652671726856226904e0), + SC_(0.964888513088226318359375e0), SC_(0.295909702777862548828125e0), SC_(0.823455393314361572265625e0), SC_(0.30764056045125212509981423182632573255939610348868e0), + SC_(0.964888513088226318359375e0), SC_(0.3471994698047637939453125e0), SC_(0.902716100215911865234375e0), SC_(0.36753519265948343352389735238830844233032763658407e0), + SC_(0.964888513088226318359375e0), SC_(0.4374639987945556640625e0), SC_(0.30182731151580810546875e0), SC_(0.46787533494744948797082361076311838959825562533425e0), + SC_(0.964888513088226318359375e0), SC_(0.4840676784515380859375e0), SC_(0.944787204265594482421875e0), SC_(0.5445223245928084775267765729197998028660600584015e0), + SC_(0.964888513088226318359375e0), SC_(0.859039485454559326171875e0), SC_(0.47944284975528717041015625e-1), SC_(0.11419027027282526641589478874771346651066443929172e1), + SC_(0.964888513088226318359375e0), SC_(0.859572112560272216796875e0), SC_(0.490864098072052001953125e0), SC_(0.11808672878095468146367317247402229236578230060389e1), + SC_(0.964888513088226318359375e0), SC_(0.993307650089263916015625e0), SC_(0.24784760177135467529296875e0), SC_(0.1510724625040434411255264498029019527172851997852e1), + SC_(0.964888513088226318359375e0), SC_(0.127976500988006591796875e1), SC_(0.489252626895904541015625e0), SC_(0.32280438417295395871118450367533561750559999591205e1), + SC_(0.964888513088226318359375e0), SC_(0.131162846088409423828125e1), SC_(0.544056117534637451171875e0), SC_(0.36504488865335236099239461305551504634226544981061e1), + SC_(0.964888513088226318359375e0), SC_(0.142281472682952880859375e1), SC_(0.3377194106578826904296875e0), SC_(0.50116795201376154085275472036734434589857008050158e1), + SC_(0.964888513088226318359375e0), SC_(0.14347274303436279296875e1), SC_(0.887726128101348876953125e0), SC_(0.84737046797468561823325202938718437497405596511517e1), + SC_(0.964888513088226318359375e0), SC_(0.150404822826385498046875e1), SC_(0.90005385875701904296875e0), SC_(0.1220953724302114044945527274939858629960732655187e2), + SC_(0.964888513088226318359375e0), SC_(0.15156433582305908203125e1), SC_(0.34383952617645263671875e0), SC_(0.72095527210305660305435684328627246055341040572769e1), + SC_(0.964888513088226318359375e0), SC_(0.15200517177581787109375e1), SC_(0.369246780872344970703125e0), SC_(0.73951653011181049471553914144499669460128656610602e1), + SC_(0.964888513088226318359375e0), SC_(0.1521893978118896484375e1), SC_(0.332685671746730804443359375e-1), SC_(0.70226485349191424980633816661935532981874296964893e1), + SC_(0.964888513088226318359375e0), SC_(0.155961430072784423828125e1), SC_(0.111202754080295562744140625e0), SC_(0.81068545032839266532237826137590524593444458725166e1), + SC_(0.964888513088226318359375e0), SC_(0.156523787975311279296875e1), SC_(0.16287212073802947998046875e0), SC_(0.83179075701627955962804491044936954892179920378095e1), + SC_(0.967694938182830810546875e0), SC_(0.15321610867977142333984375e0), SC_(0.780252039432525634765625e0), SC_(0.15475737949909478047070462517579700762311896812467e0), + SC_(0.967694938182830810546875e0), SC_(0.1994704306125640869140625e0), SC_(0.8773639202117919921875e0), SC_(0.20311816608308845738741679638823944097342405030992e0), + SC_(0.967694938182830810546875e0), SC_(0.2128067910671234130859375e0), SC_(0.3897388279438018798828125e0), SC_(0.21621899453934087771630140894213617277836386575984e0), + SC_(0.967694938182830810546875e0), SC_(0.295909702777862548828125e0), SC_(0.210301876068115234375e0), SC_(0.30475355080306542334755083460182527328263134950226e0), + SC_(0.967694938182830810546875e0), SC_(0.3471994698047637939453125e0), SC_(0.241691291332244873046875e0), SC_(0.36177750353192331687490589127139362126212997719881e0), + SC_(0.967694938182830810546875e0), SC_(0.4374639987945556640625e0), SC_(0.2727530300617218017578125e0), SC_(0.46771577025858626653425311574087731731956124765164e0), + SC_(0.967694938182830810546875e0), SC_(0.4840676784515380859375e0), SC_(0.4039121568202972412109375e0), SC_(0.52767826728868531754847133793738779282091365583467e0), + SC_(0.967694938182830810546875e0), SC_(0.859039485454559326171875e0), SC_(0.4924419820308685302734375e0), SC_(0.11813053210788657581802109097418532290258576315896e1), + SC_(0.967694938182830810546875e0), SC_(0.859572112560272216796875e0), SC_(0.964545309543609619140625e-1), SC_(0.11455168350090201971996502157180470721371292865453e1), + SC_(0.967694938182830810546875e0), SC_(0.993307650089263916015625e0), SC_(0.22341994941234588623046875e0), SC_(0.15107327851553261381802481252276623959863389023143e1), + SC_(0.967694938182830810546875e0), SC_(0.127976500988006591796875e1), SC_(0.1319732964038848876953125e0), SC_(0.30226301010207643007928191799916828281937612556814e1), + SC_(0.967694938182830810546875e0), SC_(0.131162846088409423828125e1), SC_(0.49030148983001708984375e0), SC_(0.36046119497745151784175948042189361277202154524485e1), + SC_(0.967694938182830810546875e0), SC_(0.142281472682952880859375e1), SC_(0.94205057621002197265625e0), SC_(0.97203663176735132514825064074609997743512356998894e1), + SC_(0.967694938182830810546875e0), SC_(0.14347274303436279296875e1), SC_(0.954943358898162841796875e0), SC_(0.11011978177735173557154678889804622221909342333903e2), + SC_(0.967694938182830810546875e0), SC_(0.150404822826385498046875e1), SC_(0.9561345577239990234375e0), SC_(0.16402053042712315197657916684556169457872592674081e2), + SC_(0.967694938182830810546875e0), SC_(0.15156433582305908203125e1), SC_(0.651968657970428466796875e0), SC_(0.88345194368628355267695132101617160342034756495267e1), + SC_(0.967694938182830810546875e0), SC_(0.15200517177581787109375e1), SC_(0.575208604335784912109375e0), SC_(0.84748225307301094222380991355005567566274686726537e1), + SC_(0.967694938182830810546875e0), SC_(0.1521893978118896484375e1), SC_(0.75750362873077392578125e0), SC_(0.10197430359981236616697924921398899211464970560759e2), + SC_(0.967694938182830810546875e0), SC_(0.155961430072784423828125e1), SC_(0.597795434296131134033203125e-1), SC_(0.84064025327619517361822639394442268158035554852917e1), + SC_(0.967694938182830810546875e0), SC_(0.156523787975311279296875e1), SC_(0.435245692729949951171875e0), SC_(0.9358518445225700860544455145015555791226110767821e1), + SC_(0.968867778778076171875e0), SC_(0.15321610867977142333984375e0), SC_(0.23477990925312042236328125e0), SC_(0.15442156112978093297454160863238247516165272128913e0), + SC_(0.968867778778076171875e0), SC_(0.1994704306125640869140625e0), SC_(0.552881181240081787109375e0), SC_(0.20248591151512684889777908313507098733907404479779e0), + SC_(0.968867778778076171875e0), SC_(0.2128067910671234130859375e0), SC_(0.3531585633754730224609375e0), SC_(0.21617827331752659885227560975063192503354205955227e0), + SC_(0.968867778778076171875e0), SC_(0.295909702777862548828125e0), SC_(0.53152568638324737548828125e-1), SC_(0.30457929773810368279656335904075896840505542281782e0), + SC_(0.968867778778076171875e0), SC_(0.3471994698047637939453125e0), SC_(0.82119405269622802734375e0), SC_(0.36648381459009855010282636497000495844067411495728e0), + SC_(0.968867778778076171875e0), SC_(0.4374639987945556640625e0), SC_(0.3225107491016387939453125e0), SC_(0.46820813134691862413002859030329680920443396476487e0), + SC_(0.968867778778076171875e0), SC_(0.4840676784515380859375e0), SC_(0.15403441153466701507568359375e-1), SC_(0.52429622697384041199554387963318726564829097537693e0), + SC_(0.968867778778076171875e0), SC_(0.859039485454559326171875e0), SC_(0.4049813747406005859375e0), SC_(0.11688412506184163287721570308014524903017013494232e1), + SC_(0.968867778778076171875e0), SC_(0.859572112560272216796875e0), SC_(0.430237986147403717041015625e-1), SC_(0.11449988182409327994485455270827429695338275912174e1), + SC_(0.968867778778076171875e0), SC_(0.993307650089263916015625e0), SC_(0.908433616161346435546875e0), SC_(0.18266789783360020292814582325699256373584172249477e1), + SC_(0.968867778778076171875e0), SC_(0.127976500988006591796875e1), SC_(0.16899003088474273681640625e0), SC_(0.30430369250697162478388242126743830858353764266449e1), + SC_(0.968867778778076171875e0), SC_(0.131162846088409423828125e1), SC_(0.80913722515106201171875e0), SC_(0.44920137262555851592309929494558415631051796363299e1), + SC_(0.968867778778076171875e0), SC_(0.142281472682952880859375e1), SC_(0.649115502834320068359375e0), SC_(0.59891751296524440844289458168416602134024673548837e1), + SC_(0.968867778778076171875e0), SC_(0.14347274303436279296875e1), SC_(0.25829589366912841796875e0), SC_(0.52965937189811672314081569081059077796519658968977e1), + SC_(0.968867778778076171875e0), SC_(0.150404822826385498046875e1), SC_(0.731722414493560791015625e0), SC_(0.92583262981154382185351350782094876668592638916589e1), + SC_(0.968867778778076171875e0), SC_(0.15156433582305908203125e1), SC_(0.12984652817249298095703125e0), SC_(0.7233773376721171229435259512236443934650475081173e1), + SC_(0.968867778778076171875e0), SC_(0.15200517177581787109375e1), SC_(0.64774596691131591796875e0), SC_(0.91053372374313401582308361573901478352610855700337e1), + SC_(0.968867778778076171875e0), SC_(0.1521893978118896484375e1), SC_(0.493326842784881591796875e0), SC_(0.82536400334140914822765036957266265919633704648661e1), + SC_(0.968867778778076171875e0), SC_(0.155961430072784423828125e1), SC_(0.4509237110614776611328125e0), SC_(0.93995103249245477244455231773136703775786210343295e1), + SC_(0.968867778778076171875e0), SC_(0.156523787975311279296875e1), SC_(0.3785004317760467529296875e0), SC_(0.93125715606508175287280208010343215728209966217622e1), + SC_(0.992881298065185546875e0), SC_(0.15321610867977142333984375e0), SC_(0.54700887203216552734375e0), SC_(0.154599286903186347536842701718471127585280120763e0), + SC_(0.992881298065185546875e0), SC_(0.1994704306125640869140625e0), SC_(0.71846997737884521484375e0), SC_(0.20283934930431330261325692288358107410442895192458e0), + SC_(0.992881298065185546875e0), SC_(0.2128067910671234130859375e0), SC_(0.29632079601287841796875e0), SC_(0.21619844220527214635649026415392786440017796933018e0), + SC_(0.992881298065185546875e0), SC_(0.295909702777862548828125e0), SC_(0.2878049910068511962890625e0), SC_(0.3051647326285145064763788149974065042939649411249e0), + SC_(0.992881298065185546875e0), SC_(0.3471994698047637939453125e0), SC_(0.74469280242919921875e0), SC_(0.36593269361963920740660627814234613035125736530233e0), + SC_(0.992881298065185546875e0), SC_(0.4374639987945556640625e0), SC_(0.623435556888580322265625e0), SC_(0.47351038005245946606485569936799511854047412964646e0), + SC_(0.992881298065185546875e0), SC_(0.4840676784515380859375e0), SC_(0.188955008983612060546875e0), SC_(0.52619421119616314908557198345534215266757025628341e0), + SC_(0.992881298065185546875e0), SC_(0.859039485454559326171875e0), SC_(0.811873972415924072265625e0), SC_(0.12796147420322316976041013515903300942049403300717e1), + SC_(0.992881298065185546875e0), SC_(0.859572112560272216796875e0), SC_(0.6867754459381103515625e0), SC_(0.12394269966981472546595377372621649553539498692944e1), + SC_(0.992881298065185546875e0), SC_(0.993307650089263916015625e0), SC_(0.31250798702239990234375e0), SC_(0.15534506456507100564291157167033185308229885626081e1), + SC_(0.992881298065185546875e0), SC_(0.127976500988006591796875e1), SC_(0.18351115286350250244140625e0), SC_(0.32883134974911278663257207579294642984195789886813e1), + SC_(0.992881298065185546875e0), SC_(0.131162846088409423828125e1), SC_(0.3857105076313018798828125e0), SC_(0.3843930070475687905185740186007796682476313279295e1), + SC_(0.992881298065185546875e0), SC_(0.142281472682952880859375e1), SC_(0.3684845864772796630859375e0), SC_(0.64560281183013155713676475264767841267885661014251e1), + SC_(0.992881298065185546875e0), SC_(0.14347274303436279296875e1), SC_(0.3439297378063201904296875e0), SC_(0.68762448789590812867204741141193446919124297531292e1), + SC_(0.992881298065185546875e0), SC_(0.150404822826385498046875e1), SC_(0.62561857700347900390625e0), SC_(0.13204500086777579559121699778257730234656273348984e2), + SC_(0.992881298065185546875e0), SC_(0.15156433582305908203125e1), SC_(0.81576907634735107421875e0), SC_(0.18782686397271619660785945631793130083787364064634e2), + SC_(0.992881298065185546875e0), SC_(0.15200517177581787109375e1), SC_(0.7802274227142333984375e0), SC_(0.18302545936290427541117117730722002834553061125842e2), + SC_(0.992881298065185546875e0), SC_(0.1521893978118896484375e1), SC_(0.669285118579864501953125e0), SC_(0.16059155876792932443850017386340255003749606531065e2), + SC_(0.992881298065185546875e0), SC_(0.155961430072784423828125e1), SC_(0.811257660388946533203125e-1), SC_(0.17107262415330151383028878013437636789944479173721e2), + SC_(0.992881298065185546875e0), SC_(0.156523787975311279296875e1), SC_(0.379418849945068359375e0), SC_(0.19155786972659388496036522827203540528048007161044e2), + SC_(0.996461331844329833984375e0), SC_(0.15321610867977142333984375e0), SC_(0.929385960102081298828125e0), SC_(0.15494953789788259980228066836666586023123819724425e0), + SC_(0.996461331844329833984375e0), SC_(0.1994704306125640869140625e0), SC_(0.4584968984127044677734375e0), SC_(0.20243262749758402603750294407634188860785303898664e0), + SC_(0.996461331844329833984375e0), SC_(0.2128067910671234130859375e0), SC_(0.775712668895721435546875e0), SC_(0.21706303863374380621352712917030134681912729698606e0), + SC_(0.996461331844329833984375e0), SC_(0.295909702777862548828125e0), SC_(0.303613960742950439453125e0), SC_(0.30524071829572125811103009319660245769811854653147e0), + SC_(0.996461331844329833984375e0), SC_(0.3471994698047637939453125e0), SC_(0.4867916405200958251953125e0), SC_(0.36356073608058866564834344897710010972287253451556e0), + SC_(0.996461331844329833984375e0), SC_(0.4374639987945556640625e0), SC_(0.910564959049224853515625e0), SC_(0.48104301408957402493870044558559339292659904746407e0), + SC_(0.996461331844329833984375e0), SC_(0.4840676784515380859375e0), SC_(0.4358585774898529052734375e0), SC_(0.5296599894432982217860267176354900496432490384687e0), + SC_(0.996461331844329833984375e0), SC_(0.859039485454559326171875e0), SC_(0.488617718219757080078125e0), SC_(0.11959816962457412713215082894885440106679306405223e1), + SC_(0.996461331844329833984375e0), SC_(0.859572112560272216796875e0), SC_(0.4467837512493133544921875e0), SC_(0.11905815264303277217419460505969483267592093504852e1), + SC_(0.996461331844329833984375e0), SC_(0.993307650089263916015625e0), SC_(0.75578987598419189453125e0), SC_(0.17303829899385816376582825125863049753469531971278e1), + SC_(0.996461331844329833984375e0), SC_(0.127976500988006591796875e1), SC_(0.3063494861125946044921875e0), SC_(0.33959201984939021366299708945798000348464210899788e1), + SC_(0.996461331844329833984375e0), SC_(0.131162846088409423828125e1), SC_(0.108061917126178741455078125e0), SC_(0.37244311575010030859404652598599661337479280352413e1), + SC_(0.996461331844329833984375e0), SC_(0.142281472682952880859375e1), SC_(0.5085086822509765625e0), SC_(0.71622395151588347106386969682257760699123684023386e1), + SC_(0.996461331844329833984375e0), SC_(0.14347274303436279296875e1), SC_(0.39358985424041748046875e0), SC_(0.73636293852590201326616972102360781065664379097234e1), + SC_(0.996461331844329833984375e0), SC_(0.150404822826385498046875e1), SC_(0.510771572589874267578125e0), SC_(0.13953417098210141831895151114277855224069335314941e2), + SC_(0.996461331844329833984375e0), SC_(0.15156433582305908203125e1), SC_(0.870186746120452880859375e0), SC_(0.2556857706461314333232853600430574327145004073045e2), + SC_(0.996461331844329833984375e0), SC_(0.15200517177581787109375e1), SC_(0.817627727985382080078125e0), SC_(0.23625019083977016071256452688852096136119845707138e2), + SC_(0.996461331844329833984375e0), SC_(0.1521893978118896484375e1), SC_(0.36086070537567138671875e0), SC_(0.15792458525021165627427857010031529171479777626611e2), + SC_(0.996461331844329833984375e0), SC_(0.155961430072784423828125e1), SC_(0.79483139514923095703125e0), SC_(0.36995201253231850772712106938485439098332159356711e2), + SC_(0.996461331844329833984375e0), SC_(0.156523787975311279296875e1), SC_(0.917117893695831298828125e0), SC_(0.57989207945838172546694589268843963845498536168854e2) + }; +#undef SC_ + diff --git a/test/ellint_pi3_large_data.ipp b/test/ellint_pi3_large_data.ipp new file mode 100644 index 000000000..7e38f1a29 --- /dev/null +++ b/test/ellint_pi3_large_data.ipp @@ -0,0 +1,394 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Each row of data contains in order: +// +// n, phi, k, PI(n, phi, k) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 380> ellint_pi3_large_data = { + SC_(-0.882951507568359375e2), SC_(-0.80491924285888671875e1), SC_(0.814723670482635498046875e0), SC_(-0.87472421400728425336727040442604900083192977041785e0), + SC_(-0.882951507568359375e2), SC_(-0.7460263729095458984375e1), SC_(0.135477006435394287109375e0), SC_(-0.82718880423302271609361236805097048706326618138613e0), + SC_(-0.882951507568359375e2), SC_(-0.729045963287353515625e1), SC_(0.905791938304901123046875e0), SC_(-0.87747551276758882959544200152954525505618423971659e0), + SC_(-0.882951507568359375e2), SC_(-0.623236083984375e1), SC_(0.835008561611175537109375e0), SC_(-0.65215237953434450934522345100560800793657047297229e0), + SC_(-0.882951507568359375e2), SC_(-0.5579319000244140625e1), SC_(0.12698681652545928955078125e0), SC_(-0.5122762429234107157399593560830350036728566184486e0), + SC_(-0.882951507568359375e2), SC_(-0.443003559112548828125e1), SC_(0.968867778778076171875e0), SC_(-0.54332403292257364440317808333720203684254160082478e0), + SC_(-0.882951507568359375e2), SC_(-0.38366591930389404296875e1), SC_(0.9133758544921875e0), SC_(-0.51338947010848800530828929008203919356014977411471e0), + SC_(-0.882951507568359375e2), SC_(0.9376299381256103515625e0), SC_(0.22103404998779296875e0), SC_(0.15824345778373739469179000212986130442374553398e0), + SC_(-0.882951507568359375e2), SC_(0.944411754608154296875e0), SC_(0.6323592662811279296875e0), SC_(0.16010110842241419282972789586647601062389080124406e0), + SC_(-0.882951507568359375e2), SC_(0.264718532562255859375e1), SC_(0.308167040348052978515625e0), SC_(0.18812698999986759709990325160594334177917367010501e0), + SC_(-0.882951507568359375e2), SC_(0.62944736480712890625e1), SC_(0.97540400922298431396484375e-1), SC_(0.6764648718685968528811245633241126898305817526621e0), + SC_(-0.882951507568359375e2), SC_(0.670017147064208984375e1), SC_(0.54722058773040771484375e0), SC_(0.81778541776042463995319059339588552698088433898419e0), + SC_(-0.882951507568359375e2), SC_(0.81158390045166015625e1), SC_(0.278498232364654541015625e0), SC_(0.83745249382380518272911191808287678555946548573727e0), + SC_(-0.882951507568359375e2), SC_(0.826751708984375e1), SC_(0.188381969928741455078125e0), SC_(0.83757094918096990315704827205570637800372489102387e0), + SC_(-0.882951507568359375e2), SC_(0.91501369476318359375e1), SC_(0.546881496906280517578125e0), SC_(0.88536530789452037214536364734769886885031477691156e0), + SC_(-0.882951507568359375e2), SC_(0.929777050018310546875e1), SC_(0.992881298065185546875e0), SC_(0.10670104592156217618232174187269358103233999652509e1), + SC_(-0.882951507568359375e2), SC_(0.93538990020751953125e1), SC_(0.957506835460662841796875e0), SC_(0.10357277056795963385227029717982264964969263725296e1), + SC_(-0.882951507568359375e2), SC_(0.93773555755615234375e1), SC_(0.996461331844329833984375e0), SC_(0.11393287366513926492075339545953276894721889046337e1), + SC_(-0.882951507568359375e2), SC_(0.98576259613037109375e1), SC_(0.964888513088226318359375e0), SC_(0.12490646709828734017662810793035855992633603697925e1), + SC_(-0.882951507568359375e2), SC_(0.992922687530517578125e1), SC_(0.967694938182830810546875e0), SC_(0.12562075694306417376583251897842403492180529464883e1), + SC_(-0.8681658935546875e2), SC_(-0.80491924285888671875e1), SC_(0.15761308372020721435546875e0), SC_(-0.84140469773208335456919923830249117896698295285825e0), + SC_(-0.8681658935546875e2), SC_(-0.7460263729095458984375e1), SC_(0.725838959217071533203125e0), SC_(-0.85987671052370888277919669524246227679947360493402e0), + SC_(-0.8681658935546875e2), SC_(-0.729045963287353515625e1), SC_(0.970592796802520751953125e0), SC_(-0.91443922525100421734210147418874666650910614494338e0), + SC_(-0.8681658935546875e2), SC_(-0.623236083984375e1), SC_(0.981109678745269775390625e0), SC_(-0.7106272156738935312370492307790173553201815649551e0), + SC_(-0.8681658935546875e2), SC_(-0.5579319000244140625e1), SC_(0.957166969776153564453125e0), SC_(-0.58106009812366507614405013631862001052582083043834e0), + SC_(-0.8681658935546875e2), SC_(-0.443003559112548828125e1), SC_(0.109861753880977630615234375e0), SC_(-0.49983870530384115095256605303312645824352714073227e0), + SC_(-0.8681658935546875e2), SC_(-0.38366591930389404296875e1), SC_(0.4853756427764892578125e0), SC_(-0.49428566816516318921025209597689924685446558273393e0), + SC_(-0.8681658935546875e2), SC_(0.9376299381256103515625e0), SC_(0.79810583591461181640625e0), SC_(0.16264406175756977733142719519534386130654412249944e0), + SC_(-0.8681658935546875e2), SC_(0.944411754608154296875e0), SC_(0.80028045177459716796875e0), SC_(0.16282022749627678393354605008370427957677491731307e0), + SC_(-0.8681658935546875e2), SC_(0.264718532562255859375e1), SC_(0.297029435634613037109375e0), SC_(0.18977993070188281230059741069586097466083740104406e0), + SC_(-0.8681658935546875e2), SC_(0.62944736480712890625e1), SC_(0.14188633859157562255859375e0), SC_(0.68239209777614933756004515248637654641240799137633e0), + SC_(-0.8681658935546875e2), SC_(0.670017147064208984375e1), SC_(0.47834846191108226776123046875e-2), SC_(0.81288526517388767163902468894469430412802255190882e0), + SC_(-0.8681658935546875e2), SC_(0.81158390045166015625e1), SC_(0.4217612743377685546875e0), SC_(0.84924877776215008160678238935268625874487764674281e0), + SC_(-0.8681658935546875e2), SC_(0.826751708984375e1), SC_(0.1124645173549652099609375e0), SC_(0.8436484863509619135739901228550661577676789921708e0), + SC_(-0.8681658935546875e2), SC_(0.91501369476318359375e1), SC_(0.915735542774200439453125e0), SC_(0.95373283829252902405087581062925853275855864089375e0), + SC_(-0.8681658935546875e2), SC_(0.929777050018310546875e1), SC_(0.639763355255126953125e0), SC_(0.93674317644311585360231935232845892831637346827973e0), + SC_(-0.8681658935546875e2), SC_(0.93538990020751953125e1), SC_(0.792207300662994384765625e0), SC_(0.98735879657086553764434857657877232118368138213484e0), + SC_(-0.8681658935546875e2), SC_(0.93773555755615234375e1), SC_(0.878430664539337158203125e0), SC_(0.1025248511731665221473972396370335124655052772948e1), + SC_(-0.8681658935546875e2), SC_(0.98576259613037109375e1), SC_(0.9594924449920654296875e0), SC_(0.12550759972155121101731042438144441861148487473869e1), + SC_(-0.8681658935546875e2), SC_(0.992922687530517578125e1), SC_(0.50366270542144775390625e0), SC_(0.11673484395886820589854473845868240195541869146431e1), + SC_(-0.847615814208984375e2), SC_(-0.80491924285888671875e1), SC_(0.655740678310394287109375e0), SC_(-0.87330537529798589363707267477409442925913183364478e0), + SC_(-0.847615814208984375e2), SC_(-0.7460263729095458984375e1), SC_(0.797928631305694580078125e0), SC_(-0.87904389668569057123243043710903035434038423609968e0), + SC_(-0.847615814208984375e2), SC_(-0.729045963287353515625e1), SC_(0.357116796076297760009765625e-1), SC_(-0.84078525712373178220947745986249080780651559495176e0), + SC_(-0.847615814208984375e2), SC_(-0.623236083984375e1), SC_(0.3612940013408660888671875e0), SC_(-0.63550174673913486415783145741809241052044800786891e0), + SC_(-0.847615814208984375e2), SC_(-0.5579319000244140625e1), SC_(0.84912931919097900390625e0), SC_(-0.55823097207697128640129681058469928375758518851429e0), + SC_(-0.847615814208984375e2), SC_(-0.443003559112548828125e1), SC_(0.21192432940006256103515625e0), SC_(-0.50653264566656418790206483978766196380143408274079e0), + SC_(-0.847615814208984375e2), SC_(-0.38366591930389404296875e1), SC_(0.93399322032928466796875e0), SC_(-0.52768082863143565944979426054840570548981898393827e0), + SC_(-0.847615814208984375e2), SC_(0.9376299381256103515625e0), SC_(0.6813595294952392578125e0), SC_(0.16345840597997446286580518084575460850493778657533e0), + SC_(-0.847615814208984375e2), SC_(0.944411754608154296875e0), SC_(0.67873513698577880859375e0), SC_(0.16358167818281164666410027933856064945511994225518e0), + SC_(-0.847615814208984375e2), SC_(0.264718532562255859375e1), SC_(0.3987385332584381103515625e0), SC_(0.19345780441354699416180322379934184345689867702227e0), + SC_(-0.847615814208984375e2), SC_(0.62944736480712890625e1), SC_(0.75774013996124267578125e0), SC_(0.71608605816567507682817792208387170386687198164273e0), + SC_(-0.847615814208984375e2), SC_(0.670017147064208984375e1), SC_(0.740647256374359130859375e0), SC_(0.8478488690134601561699988304099457366052743530796e0), + SC_(-0.847615814208984375e2), SC_(0.81158390045166015625e1), SC_(0.74313247203826904296875e0), SC_(0.88382693905031403996710245196053643566630916949913e0), + SC_(-0.847615814208984375e2), SC_(0.826751708984375e1), SC_(0.474758684635162353515625e0), SC_(0.86418097073779732383859343034185666552250993263043e0), + SC_(-0.847615814208984375e2), SC_(0.91501369476318359375e1), SC_(0.3922270238399505615234375e0), SC_(0.89564552708012969117963354018008675677974201436592e0), + SC_(-0.847615814208984375e2), SC_(0.929777050018310546875e1), SC_(0.42208766937255859375e0), SC_(0.9334232677038391406419076040839712278510329146248e0), + SC_(-0.847615814208984375e2), SC_(0.93538990020751953125e1), SC_(0.65547788143157958984375e0), SC_(0.98146659133251440967385843955400661406021307071047e0), + SC_(-0.847615814208984375e2), SC_(0.93773555755615234375e1), SC_(0.1738651692867279052734375e0), SC_(0.97451533127978846620711239186218485925497514027631e0), + SC_(-0.847615814208984375e2), SC_(0.98576259613037109375e1), SC_(0.1711866855621337890625e0), SC_(0.11640615124862612845435426946332017761732520618732e1), + SC_(-0.847615814208984375e2), SC_(0.992922687530517578125e1), SC_(0.3019131124019622802734375e0), SC_(0.11713665086347343936895377340529335101677296861788e1), + SC_(-0.8374275970458984375e2), SC_(-0.80491924285888671875e1), SC_(0.70604610443115234375e0), SC_(-0.88372212295494797215463296933963444292870259636239e0), + SC_(-0.8374275970458984375e2), SC_(-0.7460263729095458984375e1), SC_(0.797279894351959228515625e0), SC_(-0.884389956118873376054758977202078439642291683025e0), + SC_(-0.8374275970458984375e2), SC_(-0.729045963287353515625e1), SC_(0.318328440189361572265625e-1), SC_(-0.84577029328727123401881371301402450233725081369182e0), + SC_(-0.8374275970458984375e2), SC_(-0.623236083984375e1), SC_(0.316550433635711669921875e0), SC_(-0.63846339574416113373567010945277191420999632246177e0), + SC_(-0.8374275970458984375e2), SC_(-0.5579319000244140625e1), SC_(0.2769229710102081298828125e0), SC_(-0.52812726569592954195895319102905048273155320868794e0), + SC_(-0.8374275970458984375e2), SC_(-0.443003559112548828125e1), SC_(0.872428834438323974609375e0), SC_(-0.53746635053062118915090780793573108757406487056503e0), + SC_(-0.8374275970458984375e2), SC_(-0.38366591930389404296875e1), SC_(0.46171389520168304443359375e-1), SC_(-0.4978762597668464206276192008228893226722813811404e0), + SC_(-0.8374275970458984375e2), SC_(0.9376299381256103515625e0), SC_(0.1491139829158782958984375e0), SC_(0.16209570966545400371269348571638126889054705147418e0), + SC_(-0.8374275970458984375e2), SC_(0.944411754608154296875e0), SC_(0.9713177382946014404296875e-1), SC_(0.16215817203425741002240097327218770385678258272821e0), + SC_(-0.8374275970458984375e2), SC_(0.264718532562255859375e1), SC_(0.99406850337982177734375e0), SC_(0.24935641010054892689504363293132394056863376116041e0), + SC_(-0.8374275970458984375e2), SC_(0.62944736480712890625e1), SC_(0.82345783710479736328125e0), SC_(0.72852379014503319754408501161321583349729036432449e0), + SC_(-0.8374275970458984375e2), SC_(0.670017147064208984375e1), SC_(0.821903288364410400390625e0), SC_(0.86270426560123185475538774782641331349592543872963e0), + SC_(-0.8374275970458984375e2), SC_(0.81158390045166015625e1), SC_(0.69482862949371337890625e0), SC_(0.88363983765216152553062848228708719834142032113472e0), + SC_(-0.8374275970458984375e2), SC_(0.826751708984375e1), SC_(0.12518276274204254150390625e0), SC_(0.85904842549017092823420177568413379740184383148217e0), + SC_(-0.8374275970458984375e2), SC_(0.91501369476318359375e1), SC_(0.3170994818210601806640625e0), SC_(0.89832924292136367981143072212508421961914678883024e0), + SC_(-0.8374275970458984375e2), SC_(0.929777050018310546875e1), SC_(0.763750016689300537109375e0), SC_(0.97059068496073066167426174338823328956007114792457e0), + SC_(-0.8374275970458984375e2), SC_(0.93538990020751953125e1), SC_(0.950222074985504150390625e0), SC_(0.10612006545080664262749301630323796044048051408918e1), + SC_(-0.8374275970458984375e2), SC_(0.93773555755615234375e1), SC_(0.4905890524387359619140625e0), SC_(0.99255282683993851607920003517607189200775637266586e0), + SC_(-0.8374275970458984375e2), SC_(0.98576259613037109375e1), SC_(0.344460792839527130126953125e-1), SC_(0.11694252936742709575870544267044683470268199336139e1), + SC_(-0.8374275970458984375e2), SC_(0.992922687530517578125e1), SC_(0.663605511188507080078125e0), SC_(0.12020640620567294828443963915397922730117672481235e1), + SC_(-0.8108643341064453125e2), SC_(-0.80491924285888671875e1), SC_(0.438744366168975830078125e0), SC_(-0.87859118361492932890635940712463342603487276934114e0), + SC_(-0.8108643341064453125e2), SC_(-0.7460263729095458984375e1), SC_(0.125896632671356201171875e0), SC_(-0.86246232942728654389337818078876608085517066480744e0), + SC_(-0.8108643341064453125e2), SC_(-0.729045963287353515625e1), SC_(0.3815584480762481689453125e0), SC_(-0.86531869882965558516728450736093330408902320934679e0), + SC_(-0.8108643341064453125e2), SC_(-0.623236083984375e1), SC_(0.210209071636199951171875e0), SC_(-0.64738119246583903225050875393603159385656430274696e0), + SC_(-0.8108643341064453125e2), SC_(-0.5579319000244140625e1), SC_(0.765516817569732666015625e0), SC_(-0.56059463304084913173305663916600337025735588584011e0), + SC_(-0.8108643341064453125e2), SC_(-0.443003559112548828125e1), SC_(0.512164272367954254150390625e-1), SC_(-0.51665269949646002578918679272747584030640662128209e0), + SC_(-0.8108643341064453125e2), SC_(-0.38366591930389404296875e1), SC_(0.795199930667877197265625e0), SC_(-0.52384451344806999102617231824644764934621420943259e0), + SC_(-0.8108643341064453125e2), SC_(0.9376299381256103515625e0), SC_(0.3644125163555145263671875e-1), SC_(0.16445840518160456987391702277105422285907920849628e0), + SC_(-0.8108643341064453125e2), SC_(0.944411754608154296875e0), SC_(0.18687260150909423828125e0), SC_(0.16474696767300879366689546666380048282158346568439e0), + SC_(-0.8108643341064453125e2), SC_(0.264718532562255859375e1), SC_(0.408731162548065185546875e0), SC_(0.19840797638343060351692950308522644766521690786984e0), + SC_(-0.8108643341064453125e2), SC_(0.62944736480712890625e1), SC_(0.489764392375946044921875e0), SC_(0.71398140563703891872395460648428468137491882028094e0), + SC_(-0.8108643341064453125e2), SC_(0.670017147064208984375e1), SC_(0.457989156246185302734375e0), SC_(0.84822404783963092440991500193019683748102739719831e0), + SC_(-0.8108643341064453125e2), SC_(0.81158390045166015625e1), SC_(0.44558620452880859375e0), SC_(0.87986308474470030225798228603982857953905170417852e0), + SC_(-0.8108643341064453125e2), SC_(0.826751708984375e1), SC_(0.487568914890289306640625e0), SC_(0.88436325947691236451283766306608904084596781441351e0), + SC_(-0.8108643341064453125e2), SC_(0.91501369476318359375e1), SC_(0.646313011646270751953125e0), SC_(0.93444932755501769404248763040422379675950233463442e0), + SC_(-0.8108643341064453125e2), SC_(0.929777050018310546875e1), SC_(0.79397499561309814453125e0), SC_(0.99303396891886873286899719168424962345736666539291e0), + SC_(-0.8108643341064453125e2), SC_(0.93538990020751953125e1), SC_(0.709364831447601318359375e0), SC_(0.10113089860618333347517191530980568395386039428603e1), + SC_(-0.8108643341064453125e2), SC_(0.93773555755615234375e1), SC_(0.920874774456024169921875e0), SC_(0.10808552929543756610700604208995474057559564496361e1), + SC_(-0.8108643341064453125e2), SC_(0.98576259613037109375e1), SC_(0.754686653614044189453125e0), SC_(0.12295354495632079463330845547157275058202866491388e1), + SC_(-0.8108643341064453125e2), SC_(0.992922687530517578125e1), SC_(0.80753099918365478515625e0), SC_(0.12436454456645077592862193908866202419074285645364e1), + SC_(-0.773941650390625e2), SC_(-0.80491924285888671875e1), SC_(0.2760250866413116455078125e0), SC_(-0.8932148540886565731208171346158555892348489069094e0), + SC_(-0.773941650390625e2), SC_(-0.7460263729095458984375e1), SC_(0.705774247646331787109375e0), SC_(-0.90911600170226072523733344752741827766312826644628e0), + SC_(-0.773941650390625e2), SC_(-0.729045963287353515625e1), SC_(0.679702699184417724609375e0), SC_(-0.90307252252996060327047412347492031067987770551927e0), + SC_(-0.773941650390625e2), SC_(-0.623236083984375e1), SC_(0.281843240372836589813232421875e-2), SC_(-0.66184524324461086674676425686608102718274423987422e0), + SC_(-0.773941650390625e2), SC_(-0.5579319000244140625e1), SC_(0.655098021030426025390625e0), SC_(-0.56485567871439342824368759056518192042211356086454e0), + SC_(-0.773941650390625e2), SC_(-0.443003559112548828125e1), SC_(0.71070384979248046875e0), SC_(-0.54499556216095973731688980195992035683166980474925e0), + SC_(-0.773941650390625e2), SC_(-0.38366591930389404296875e1), SC_(0.16261173784732818603515625e0), SC_(-0.51759806991286134428377470768412712612017399270998e0), + SC_(-0.773941650390625e2), SC_(0.9376299381256103515625e0), SC_(0.6439609527587890625e0), SC_(0.17034640052266207186217781808632212721557190770662e0), + SC_(-0.773941650390625e2), SC_(0.944411754608154296875e0), SC_(0.11899767816066741943359375e0), SC_(0.16827148558288149859617822732363124521057243025749e0), + SC_(-0.773941650390625e2), SC_(0.264718532562255859375e1), SC_(0.456032812595367431640625e0), SC_(0.20438692374997551280023837500342413658498324878043e0), + SC_(-0.773941650390625e2), SC_(0.62944736480712890625e1), SC_(0.4983640611171722412109375e0), SC_(0.7309276134651405358086552048418329391801285475197e0), + SC_(-0.773941650390625e2), SC_(0.670017147064208984375e1), SC_(0.773917138576507568359375e0), SC_(0.89055977088355358439307320365748586774294360201894e0), + SC_(-0.773941650390625e2), SC_(0.81158390045166015625e1), SC_(0.959743976593017578125e0), SC_(0.99531676335901754810767630388113881874963219048658e0), + SC_(-0.773941650390625e2), SC_(0.826751708984375e1), SC_(0.57375466823577880859375e0), SC_(0.91117067311165093475982474002810561885330485399815e0), + SC_(-0.773941650390625e2), SC_(0.91501369476318359375e1), SC_(0.340385735034942626953125e0), SC_(0.93658342858480195937131579391711322436258042482381e0), + SC_(-0.773941650390625e2), SC_(0.929777050018310546875e1), SC_(0.876757442951202392578125e0), SC_(0.10397605043701780663060081372287147634699232294846e1), + SC_(-0.773941650390625e2), SC_(0.93538990020751953125e1), SC_(0.585267722606658935546875e0), SC_(0.10229369326315928906031121661140437619872328367048e1), + SC_(-0.773941650390625e2), SC_(0.93773555755615234375e1), SC_(0.808175504207611083984375e0), SC_(0.10722518384675640802147083500108659767503088646595e1), + SC_(-0.773941650390625e2), SC_(0.98576259613037109375e1), SC_(0.22381193935871124267578125e0), SC_(0.12176494797531315014416783578033364372790018390469e1), + SC_(-0.773941650390625e2), SC_(0.992922687530517578125e1), SC_(0.177738964557647705078125e-1), SC_(0.12190970933171117457967124449247889503348868475836e1), + SC_(-0.7347591400146484375e2), SC_(-0.80491924285888671875e1), SC_(0.75126707553863525390625e0), SC_(-0.95087480937103345785882377849311565120110564437638e0), + SC_(-0.7347591400146484375e2), SC_(-0.7460263729095458984375e1), SC_(0.821245968341827392578125e0), SC_(-0.94950993098396462121375210867253607422224927849825e0), + SC_(-0.7347591400146484375e2), SC_(-0.729045963287353515625e1), SC_(0.25509512424468994140625e0), SC_(-0.9045200860401375626315358789054868718505322190016e0), + SC_(-0.7347591400146484375e2), SC_(-0.623236083984375e1), SC_(0.820840775966644287109375e0), SC_(-0.71903825783534776610954520666065893889758555857181e0), + SC_(-0.7347591400146484375e2), SC_(-0.5579319000244140625e1), SC_(0.505957067012786865234375e0), SC_(-0.57170590587188313676826490532672893226496030624593e0), + SC_(-0.7347591400146484375e2), SC_(-0.443003559112548828125e1), SC_(0.940074026584625244140625e0), SC_(-0.58848704844694094917916885897249874192908410303486e0), + SC_(-0.7347591400146484375e2), SC_(-0.38366591930389404296875e1), SC_(0.699076712131500244140625e0), SC_(-0.54395952653919301847102230439509251513820671720908e0), + SC_(-0.7347591400146484375e2), SC_(0.9376299381256103515625e0), SC_(0.4126665294170379638671875e0), SC_(0.17310711621587319726163250266391593650519967029982e0), + SC_(-0.7347591400146484375e2), SC_(0.944411754608154296875e0), SC_(0.8909032344818115234375e0), SC_(0.17752902948723979782039869827626355347160537390438e0), + SC_(-0.7347591400146484375e2), SC_(0.264718532562255859375e1), SC_(0.4231651127338409423828125e0), SC_(0.20980384271452026798575538829326733452462406895996e0), + SC_(-0.7347591400146484375e2), SC_(0.62944736480712890625e1), SC_(0.959291398525238037109375e0), SC_(0.82086333400151687698897951981706597500774785782777e0), + SC_(-0.7347591400146484375e2), SC_(0.670017147064208984375e1), SC_(0.5809566974639892578125e0), SC_(0.89610426115226375331268690519494509999425108823564e0), + SC_(-0.7347591400146484375e2), SC_(0.81158390045166015625e1), SC_(0.547215521335601806640625e0), SC_(0.93069116944348264332798545618518025050601300111396e0), + SC_(-0.7347591400146484375e2), SC_(0.826751708984375e1), SC_(0.15805758535861968994140625e0), SC_(0.91723576267139431165402940672716686870465495104736e0), + SC_(-0.7347591400146484375e2), SC_(0.91501369476318359375e1), SC_(0.13862444460391998291015625e0), SC_(0.95637671681392516587796946344990127808067074081669e0), + SC_(-0.7347591400146484375e2), SC_(0.929777050018310546875e1), SC_(0.761731207370758056640625e0), SC_(0.10413633010402629935885186303991761629601547367282e1), + SC_(-0.7347591400146484375e2), SC_(0.93538990020751953125e1), SC_(0.14929400384426116943359375e0), SC_(0.10296784809989317698803281996894596021922140169983e1), + SC_(-0.7347591400146484375e2), SC_(0.93773555755615234375e1), SC_(0.23015606403350830078125e0), SC_(0.10501297999166441907280121655001731450321290904874e1), + SC_(-0.7347591400146484375e2), SC_(0.98576259613037109375e1), SC_(0.2575082480907440185546875e0), SC_(0.12496419008656533189921781582218971934138022766036e1), + SC_(-0.7347591400146484375e2), SC_(0.992922687530517578125e1), SC_(0.809734523296356201171875e0), SC_(0.13075339829659951141421742562150260254408805079828e1), + SC_(-0.665802154541015625e2), SC_(-0.80491924285888671875e1), SC_(0.840717256069183349609375e0), SC_(-0.10188273068137002157811845899293366196751404623348e1), + SC_(-0.665802154541015625e2), SC_(-0.7460263729095458984375e1), SC_(0.988521575927734375e0), SC_(-0.10896711710037999407125986590139024748941957043169e1), + SC_(-0.665802154541015625e2), SC_(-0.729045963287353515625e1), SC_(0.254282176494598388671875e0), SC_(-0.94921935951206273103486119985951451353744945023903e0), + SC_(-0.665802154541015625e2), SC_(-0.623236083984375e1), SC_(0.3324482738971710205078125e0), SC_(-0.72093569286169587462569345892994331413933209655934e0), + SC_(-0.665802154541015625e2), SC_(-0.5579319000244140625e1), SC_(0.814284801483154296875e0), SC_(-0.62920826774684038107957598026589974209853888829193e0), + SC_(-0.665802154541015625e2), SC_(-0.443003559112548828125e1), SC_(0.2998317182064056396484375e0), SC_(-0.57164640115497264513848696876101131605723935622895e0), + SC_(-0.665802154541015625e2), SC_(-0.38366591930389404296875e1), SC_(0.243524968624114990234375e0), SC_(-0.55710727670602591390039391663442128128111057798818e0), + SC_(-0.665802154541015625e2), SC_(0.9376299381256103515625e0), SC_(0.13539127074182033538818359375e-1), SC_(0.18024669606887376221738847713236560081387665795213e0), + SC_(-0.665802154541015625e2), SC_(0.944411754608154296875e0), SC_(0.929263651371002197265625e0), SC_(0.1867600495413145208998726836094505670779096922184e0), + SC_(-0.665802154541015625e2), SC_(0.264718532562255859375e1), SC_(0.21723784506320953369140625e0), SC_(0.21895569911849486446155497352191284985201480630693e0), + SC_(-0.665802154541015625e2), SC_(0.62944736480712890625e1), SC_(0.349983751773834228515625e0), SC_(0.78092451307667541706139295421653294407669234196721e0), + SC_(-0.665802154541015625e2), SC_(0.670017147064208984375e1), SC_(0.90736472606658935546875e0), SC_(0.98826473823950068612417716920226018353302777435485e0), + SC_(-0.665802154541015625e2), SC_(0.81158390045166015625e1), SC_(0.196595251560211181640625e0), SC_(0.96146543728501332020960328049092986515308213947491e0), + SC_(-0.665802154541015625e2), SC_(0.826751708984375e1), SC_(0.848467767238616943359375e0), SC_(0.10269900029299020133992969273694842932510481147321e1), + SC_(-0.665802154541015625e2), SC_(0.91501369476318359375e1), SC_(0.251083850860595703125e0), SC_(0.10089283079579986340968754531420948668429390499878e1), + SC_(-0.665802154541015625e2), SC_(0.929777050018310546875e1), SC_(0.955017566680908203125e0), SC_(0.11775854562840446904405699037220635771661867806639e1), + SC_(-0.665802154541015625e2), SC_(0.93538990020751953125e1), SC_(0.616044700145721435546875e0), SC_(0.11107403391640015213404677110283900580694627478772e1), + SC_(-0.665802154541015625e2), SC_(0.93773555755615234375e1), SC_(0.778897702693939208984375e0), SC_(0.11552618410136336171509628042037351937018229651029e1), + SC_(-0.665802154541015625e2), SC_(0.98576259613037109375e1), SC_(0.473288834095001220703125e0), SC_(0.13221383720258285984513734807011511703421959348329e1), + SC_(-0.665802154541015625e2), SC_(0.992922687530517578125e1), SC_(0.987459599971771240234375e0), SC_(0.15024269882107774743502539665001810907698548175078e1), + SC_(-0.6435646820068359375e2), SC_(-0.80491924285888671875e1), SC_(0.3516595065593719482421875e0), SC_(-0.9817165960179087152726590328661203544092211870457e0), + SC_(-0.6435646820068359375e2), SC_(-0.7460263729095458984375e1), SC_(0.6759537756443023681640625e-1), SC_(-0.96538678194946875594576577465920713344794683420125e0), + SC_(-0.6435646820068359375e2), SC_(-0.729045963287353515625e1), SC_(0.830828607082366943359375e0), SC_(-0.10133284014247603716459775304959877628994268756e1), + SC_(-0.6435646820068359375e2), SC_(-0.623236083984375e1), SC_(0.79359757900238037109375e0), SC_(-0.76840043572249960219837227522269364466391173244608e0), + SC_(-0.6435646820068359375e2), SC_(-0.5579319000244140625e1), SC_(0.58526408672332763671875e0), SC_(-0.61667383392065171823591906057950002149491251832054e0), + SC_(-0.6435646820068359375e2), SC_(-0.443003559112548828125e1), SC_(0.594503581523895263671875e0), SC_(-0.59093783467978499643545265943887405937777474424327e0), + SC_(-0.6435646820068359375e2), SC_(-0.38366591930389404296875e1), SC_(0.54972362518310546875e0), SC_(-0.57343614327375731547647986833382833135785422850524e0), + SC_(-0.6435646820068359375e2), SC_(0.9376299381256103515625e0), SC_(0.73279869556427001953125e0), SC_(0.18670691881147002417117313950467332320722346461714e0), + SC_(-0.6435646820068359375e2), SC_(0.944411754608154296875e0), SC_(0.9171936511993408203125e0), SC_(0.18959407313520176656360185314820894089038687280444e0), + SC_(-0.6435646820068359375e2), SC_(0.264718532562255859375e1), SC_(0.695232868194580078125e0), SC_(0.23434052914949470882728223063559974291611964287342e0), + SC_(-0.6435646820068359375e2), SC_(0.62944736480712890625e1), SC_(0.285839021205902099609375e0), SC_(0.79208308995030110951386884974283642578125957216677e0), + SC_(-0.6435646820068359375e2), SC_(0.670017147064208984375e1), SC_(0.679819762706756591796875e0), SC_(0.96404391319487077627796490967938971550946060810627e0), + SC_(-0.6435646820068359375e2), SC_(0.81158390045166015625e1), SC_(0.7572002410888671875e0), SC_(0.10203825214491552379106223664363875813234384638789e1), + SC_(-0.6435646820068359375e2), SC_(0.826751708984375e1), SC_(0.3923204839229583740234375e0), SC_(0.98757622792126226190502515447988405388474664377118e0), + SC_(-0.6435646820068359375e2), SC_(0.91501369476318359375e1), SC_(0.7537291049957275390625e0), SC_(0.10726263442312762552866095199193489225305106100888e1), + SC_(-0.6435646820068359375e2), SC_(0.929777050018310546875e1), SC_(0.561557471752166748046875e0), SC_(0.10902014671256490017045890530601878226899940746231e1), + SC_(-0.6435646820068359375e2), SC_(0.93538990020751953125e1), SC_(0.38044583797454833984375e0), SC_(0.11112511164324106462787438914977149990321935332184e1), + SC_(-0.6435646820068359375e2), SC_(0.93773555755615234375e1), SC_(0.20806805789470672607421875e0), SC_(0.11233205201488051119834974335442507168381438412903e1), + SC_(-0.6435646820068359375e2), SC_(0.98576259613037109375e1), SC_(0.56782162189483642578125e0), SC_(0.13526541087049132183289874385476747389694582496712e1), + SC_(-0.6435646820068359375e2), SC_(0.992922687530517578125e1), SC_(0.527371466159820556640625e0), SC_(0.13539587921924345769977234823571137863565379759269e1), + SC_(-0.63019954681396484375e2), SC_(-0.80491924285888671875e1), SC_(0.75854294002056121826171875e-1), SC_(-0.98500590690622495958090408113313427850035679560375e0), + SC_(-0.63019954681396484375e2), SC_(-0.7460263729095458984375e1), SC_(0.4042085111141204833984375e0), SC_(-0.98412863749897126977607259739114076572076938942833e0), + SC_(-0.63019954681396484375e2), SC_(-0.729045963287353515625e1), SC_(0.539501197636127471923828125e-1), SC_(-0.97189137379734463759122464015058860586785292328841e0), + SC_(-0.63019954681396484375e2), SC_(-0.623236083984375e1), SC_(0.352762401103973388671875e0), SC_(-0.74269788804239642012872127953182668059308423879464e0), + SC_(-0.63019954681396484375e2), SC_(-0.5579319000244140625e1), SC_(0.530797541141510009765625e0), SC_(-0.62005785085207845051844205441148792788340980014671e0), + SC_(-0.63019954681396484375e2), SC_(-0.443003559112548828125e1), SC_(0.59282386302947998046875e0), SC_(-0.597059143795725250705919305765788031814303367226e0), + SC_(-0.63019954681396484375e2), SC_(-0.38366591930389404296875e1), SC_(0.779167234897613525390625e0), SC_(-0.59209104695778783703470799000957039737742060559891e0), + SC_(-0.63019954681396484375e2), SC_(0.9376299381256103515625e0), SC_(0.3563451468944549560546875e0), SC_(0.18566644649955566637841875495067297091050117737277e0), + SC_(-0.63019954681396484375e2), SC_(0.944411754608154296875e0), SC_(0.934010684490203857421875e0), SC_(0.19182574957907954921849822011736028299192760496169e0), + SC_(-0.63019954681396484375e2), SC_(0.264718532562255859375e1), SC_(0.964966356754302978515625e0), SC_(0.27188964239796694238940440658822118662901998900666e0), + SC_(-0.63019954681396484375e2), SC_(0.62944736480712890625e1), SC_(0.1299062073230743408203125e0), SC_(0.79727537820039161658416433826246692454270885756196e0), + SC_(-0.63019954681396484375e2), SC_(0.670017147064208984375e1), SC_(0.15443842113018035888671875e0), SC_(0.94832446598989097197762015761507479997386259580165e0), + SC_(-0.63019954681396484375e2), SC_(0.81158390045166015625e1), SC_(0.568823635578155517578125e0), SC_(0.10073151413041581203666466746194579312685969632522e1), + SC_(-0.63019954681396484375e2), SC_(0.826751708984375e1), SC_(0.3949082195758819580078125e0), SC_(0.99812651758556271402054140359168395197326899687466e0), + SC_(-0.63019954681396484375e2), SC_(0.91501369476318359375e1), SC_(0.4693906307220458984375e0), SC_(0.10495027136918084682299358741490935779364803240006e1), + SC_(-0.63019954681396484375e2), SC_(0.929777050018310546875e1), SC_(0.387295901775360107421875e0), SC_(0.10888718630252144153980406708608581585871568467485e1), + SC_(-0.63019954681396484375e2), SC_(0.93538990020751953125e1), SC_(0.1190206967294216156005859375e-1), SC_(0.11133564704439333169474640711725371148300660942283e1), + SC_(-0.63019954681396484375e2), SC_(0.93773555755615234375e1), SC_(0.7269546985626220703125e0), SC_(0.11789865268828697806765849246641829515571854757345e1), + SC_(-0.63019954681396484375e2), SC_(0.98576259613037109375e1), SC_(0.3371226489543914794921875e0), SC_(0.13492787097950413298503737277521718702647137760674e1), + SC_(-0.63019954681396484375e2), SC_(0.992922687530517578125e1), SC_(0.3885698020458221435546875e0), SC_(0.13573834162755449357438378572504748466832889364914e1), + SC_(-0.4175492095947265625e2), SC_(-0.80491924285888671875e1), SC_(0.1621823012828826904296875e0), SC_(-0.120795261246058046094427409425800499482700613075e1), + SC_(-0.4175492095947265625e2), SC_(-0.7460263729095458984375e1), SC_(0.9274928569793701171875e0), SC_(-0.13174752300415630669485025374126187413863221080021e1), + SC_(-0.4175492095947265625e2), SC_(-0.729045963287353515625e1), SC_(0.794284522533416748046875e0), SC_(-0.12529561815575374606363360092969101368442032236984e1), + SC_(-0.4175492095947265625e2), SC_(-0.623236083984375e1), SC_(0.4361175596714019775390625e0), SC_(-0.9250452379885350159859795235944251926347543194692e0), + SC_(-0.4175492095947265625e2), SC_(-0.5579319000244140625e1), SC_(0.31121504306793212890625e0), SC_(-0.7538145969086396421224084652562621089655298505018e0), + SC_(-0.4175492095947265625e2), SC_(-0.443003559112548828125e1), SC_(0.86267817020416259765625e0), SC_(-0.76741616650994055602680866373057361490958141543863e0), + SC_(-0.4175492095947265625e2), SC_(-0.38366591930389404296875e1), SC_(0.528533160686492919921875e0), SC_(-0.70482408941893316804322816995626853819821807220181e0), + SC_(-0.4175492095947265625e2), SC_(0.9376299381256103515625e0), SC_(0.62036001682281494140625e0), SC_(0.22675666588050360907864991174641846495089194336662e0), + SC_(-0.4175492095947265625e2), SC_(0.944411754608154296875e0), SC_(0.1656487286090850830078125e0), SC_(0.22361257639294591468520562032875589983389610668123e0), + SC_(-0.4175492095947265625e2), SC_(0.264718532562255859375e1), SC_(0.119547180831432342529296875e0), SC_(0.28291475589845511069693388388718700321326522633299e0), + SC_(-0.4175492095947265625e2), SC_(0.62944736480712890625e1), SC_(0.601981937885284423828125e0), SC_(0.99995519291018168171725132061178520364978180674488e0), + SC_(-0.4175492095947265625e2), SC_(0.670017147064208984375e1), SC_(0.471956789493560791015625e0), SC_(0.11666873923248537852675579183118050354735765930848e1), + SC_(-0.4175492095947265625e2), SC_(0.81158390045166015625e1), SC_(0.26297128200531005859375e0), SC_(0.12133153387822629978232861051967343996399885782447e1), + SC_(-0.4175492095947265625e2), SC_(0.826751708984375e1), SC_(0.3402197062969207763671875e0), SC_(0.12217178356852959376032196472008153885377815037761e1), + SC_(-0.4175492095947265625e2), SC_(0.91501369476318359375e1), SC_(0.65407907962799072265625e0), SC_(0.13279252914501877561507955936796843070673005732138e1), + SC_(-0.4175492095947265625e2), SC_(0.929777050018310546875e1), SC_(0.529841959476470947265625e0), SC_(0.13656676123466169022712955081182486001106665498498e1), + SC_(-0.4175492095947265625e2), SC_(0.93538990020751953125e1), SC_(0.689214527606964111328125e0), SC_(0.14337545471116318094856403555847079818004907883012e1), + SC_(-0.4175492095947265625e2), SC_(0.93773555755615234375e1), SC_(0.7161006927490234375e0), SC_(0.14607306414559000356444256630640763896008527344224e1), + SC_(-0.4175492095947265625e2), SC_(0.98576259613037109375e1), SC_(0.748151600360870361328125e0), SC_(0.17085140665784459363918709055928708315385830054916e1), + SC_(-0.4175492095947265625e2), SC_(0.992922687530517578125e1), SC_(0.988379418849945068359375e0), SC_(0.19446986681889952661021520443896477218754466943203e1), + SC_(-0.343742218017578125e2), SC_(-0.80491924285888671875e1), SC_(0.4505415856838226318359375e0), SC_(-0.13479975513922595551769378292693820169944079349109e1), + SC_(-0.343742218017578125e2), SC_(-0.7460263729095458984375e1), SC_(0.72049343585968017578125e0), SC_(-0.13703556121569037399000627811561678552285461106504e1), + SC_(-0.343742218017578125e2), SC_(-0.729045963287353515625e1), SC_(0.83821378648281097412109375e-1), SC_(-0.1303342505681818948447295923953804059935413644859e1), + SC_(-0.343742218017578125e2), SC_(-0.623236083984375e1), SC_(0.91257750988006591796875e0), SC_(-0.11294830414606136778667009626697912105252028682613e1), + SC_(-0.343742218017578125e2), SC_(-0.5579319000244140625e1), SC_(0.2289769649505615234375e0), SC_(-0.82890505767135632841245606272875702379699274786215e0), + SC_(-0.343742218017578125e2), SC_(-0.443003559112548828125e1), SC_(0.50549852848052978515625e0), SC_(-0.79934667651914845927640385358968563214392195753056e0), + SC_(-0.343742218017578125e2), SC_(-0.38366591930389404296875e1), SC_(0.91333734989166259765625e0), SC_(-0.82682535778223123699046084359484621989324749067695e0), + SC_(-0.343742218017578125e2), SC_(0.9376299381256103515625e0), SC_(0.5582687854766845703125e0), SC_(0.24685830836478899133045090397417486519430646436729e0), + SC_(-0.343742218017578125e2), SC_(0.944411754608154296875e0), SC_(0.152378022670745849609375e0), SC_(0.24398748687404748781743632838424801718263030559703e0), + SC_(-0.343742218017578125e2), SC_(0.264718532562255859375e1), SC_(0.50319004058837890625e0), SC_(0.32475815298585388051217187166943870406639890288675e0), + SC_(-0.343742218017578125e2), SC_(0.62944736480712890625e1), SC_(0.82581698894500732421875e0), SC_(0.11487205744846719651900666371036908548224029447782e1), + SC_(-0.343742218017578125e2), SC_(0.670017147064208984375e1), SC_(0.4624741971492767333984375e0), SC_(0.12781972640570686895211039067960987037176484629231e1), + SC_(-0.343742218017578125e2), SC_(0.81158390045166015625e1), SC_(0.538342416286468505859375e0), SC_(0.13612343388208463390090639154711944895417233344461e1), + SC_(-0.343742218017578125e2), SC_(0.826751708984375e1), SC_(0.546591937541961669921875e0), SC_(0.13680530164078413056057430863001410157204666851678e1), + SC_(-0.343742218017578125e2), SC_(0.91501369476318359375e1), SC_(0.996134698390960693359375e0), SC_(0.18655695809680774366714326899093076682373542523498e1), + SC_(-0.343742218017578125e2), SC_(0.929777050018310546875e1), SC_(0.4475843906402587890625e0), SC_(0.15004687166502580782333712850281558671535405873258e1), + SC_(-0.343742218017578125e2), SC_(0.93538990020751953125e1), SC_(0.7817552983760833740234375e-1), SC_(0.15181488238754879931513195889959090600253799328776e1), + SC_(-0.343742218017578125e2), SC_(0.93773555755615234375e1), SC_(0.854451000690460205078125e0), SC_(0.16760909597075604362773160009790333071013619466631e1), + SC_(-0.343742218017578125e2), SC_(0.98576259613037109375e1), SC_(0.442678272724151611328125e0), SC_(0.18152146396602763271153860892382470806721161498474e1), + SC_(-0.343742218017578125e2), SC_(0.992922687530517578125e1), SC_(0.60423147678375244140625e0), SC_(0.18508520738181786128694649050909747053325716149189e1), + SC_(-0.34333530426025390625e2), SC_(-0.80491924285888671875e1), SC_(0.106652773916721343994140625e0), SC_(-0.13279977284904041350281000241938369548785223697577e1), + SC_(-0.34333530426025390625e2), SC_(-0.7460263729095458984375e1), SC_(0.4985441863536834716796875e0), SC_(-0.1334511622966934522664921590597835503735575547594e1), + SC_(-0.34333530426025390625e2), SC_(-0.729045963287353515625e1), SC_(0.9618980884552001953125e0), SC_(-0.14897917634191362332402630913581746649519180819487e1), + SC_(-0.34333530426025390625e2), SC_(-0.623236083984375e1), SC_(0.979925632476806640625e0), SC_(-0.1217204537505011042501342908103217792690814382835e1), + SC_(-0.34333530426025390625e2), SC_(-0.5579319000244140625e1), SC_(0.463422574102878570556640625e-2), SC_(-0.82568435419092317843441647933912906296313127078829e0), + SC_(-0.34333530426025390625e2), SC_(-0.443003559112548828125e1), SC_(0.34317314624786376953125e-1), SC_(-0.78462936005604349430919825872962477090224791930058e0), + SC_(-0.34333530426025390625e2), SC_(-0.38366591930389404296875e1), SC_(0.774910449981689453125e0), SC_(-0.79664639148531813063607869208741112387341335494939e0), + SC_(-0.34333530426025390625e2), SC_(0.9376299381256103515625e0), SC_(0.97700202465057373046875e0), SC_(0.25656860596889451120028077862413338482440877002465e0), + SC_(-0.34333530426025390625e2), SC_(0.944411754608154296875e0), SC_(0.817303240299224853515625e0), SC_(0.2520924137849429911434650768834743243609584274321e0), + SC_(-0.34333530426025390625e2), SC_(0.264718532562255859375e1), SC_(0.3631864488124847412109375e0), SC_(0.31993149126421029963751218590715125280138845779776e0), + SC_(-0.34333530426025390625e2), SC_(0.62944736480712890625e1), SC_(0.868694722652435302734375e0), SC_(0.11664250660215187060602386358108081959735100324201e1), + SC_(-0.34333530426025390625e2), SC_(0.670017147064208984375e1), SC_(0.679519712924957275390625e0), SC_(0.13069359111529715358978257153546992330592505947366e1), + SC_(-0.34333530426025390625e2), SC_(0.81158390045166015625e1), SC_(0.844358503818511962890625e-1), SC_(0.13295715108775444839528476157145770231834928108712e1), + SC_(-0.34333530426025390625e2), SC_(0.826751708984375e1), SC_(0.3462333977222442626953125e0), SC_(0.13464880482579583789080729576915252804514158778708e1), + SC_(-0.34333530426025390625e2), SC_(0.91501369476318359375e1), SC_(0.399782657623291015625e0), SC_(0.14312418120119051757097649396370747274218343935686e1), + SC_(-0.34333530426025390625e2), SC_(0.929777050018310546875e1), SC_(0.85587513446807861328125e0), SC_(0.16148925024405359404552782420491687146836901056951e1), + SC_(-0.34333530426025390625e2), SC_(0.93538990020751953125e1), SC_(0.25987040996551513671875e0), SC_(0.15262980724861982196631463226450350415827916935991e1), + SC_(-0.34333530426025390625e2), SC_(0.93773555755615234375e1), SC_(0.450595431029796600341796875e-1), SC_(0.15395174965016545160280499554617795840656649867521e1), + SC_(-0.34333530426025390625e2), SC_(0.98576259613037109375e1), SC_(0.80006849765777587890625e0), SC_(0.19025623542859519938528700880258842846879099856296e1), + SC_(-0.34333530426025390625e2), SC_(0.992922687530517578125e1), SC_(0.660119473934173583984375e0), SC_(0.18648209052720236320619177899513333819481990439113e1), + SC_(-0.241168880462646484375e2), SC_(-0.80491924285888671875e1), SC_(0.431413829326629638671875e0), SC_(-0.16023502713402494472723003516587049998209785546895e1), + SC_(-0.241168880462646484375e2), SC_(-0.7460263729095458984375e1), SC_(0.74994099140167236328125e0), SC_(-0.16456360566700002297427798153127364630861157638657e1), + SC_(-0.241168880462646484375e2), SC_(-0.729045963287353515625e1), SC_(0.910647571086883544921875e0), SC_(-0.17266003527583797748130431834380479246102745294251e1), + SC_(-0.241168880462646484375e2), SC_(-0.623236083984375e1), SC_(0.13299603760242462158203125e0), SC_(-0.12057606990231589776592810687151553595414706314624e1), + SC_(-0.241168880462646484375e2), SC_(-0.5579319000244140625e1), SC_(0.18184702098369598388671875e0), SC_(-0.98954385708862193740632461032650778809879826353565e0), + SC_(-0.241168880462646484375e2), SC_(-0.443003559112548828125e1), SC_(0.982360541820526123046875e0), SC_(-0.11177365522434554666194320059624646206412030819708e1), + SC_(-0.241168880462646484375e2), SC_(-0.38366591930389404296875e1), SC_(0.2638029158115386962890625e0), SC_(-0.89778711803164644220095019446212441642706564004599e0), + SC_(-0.241168880462646484375e2), SC_(0.9376299381256103515625e0), SC_(0.95355175435543060302734375e-1), SC_(0.28453468481817449880562759769641913603812839859891e0), + SC_(-0.241168880462646484375e2), SC_(0.944411754608154296875e0), SC_(0.145538985729217529296875e0), SC_(0.28510725672839938842843953939313088243819071411751e0), + SC_(-0.241168880462646484375e2), SC_(0.264718532562255859375e1), SC_(0.282673299312591552734375e0), SC_(0.38806416515257251994451900474201338041932494961011e0), + SC_(-0.241168880462646484375e2), SC_(0.62944736480712890625e1), SC_(0.1360685527324676513671875e0), SC_(0.12669328056141228178678376410162804212761576165186e1), + SC_(-0.241168880462646484375e2), SC_(0.670017147064208984375e1), SC_(0.802111446857452392578125e0), SC_(0.15866920300492384671906062444616074158561009589133e1), + SC_(-0.241168880462646484375e2), SC_(0.81158390045166015625e1), SC_(0.869292199611663818359375e0), SC_(0.17580740177364505152978420916456554527932644010013e1), + SC_(-0.241168880462646484375e2), SC_(0.826751708984375e1), SC_(0.77557027339935302734375e-1), SC_(0.15854002003461329001582140234962559880549849362185e1), + SC_(-0.241168880462646484375e2), SC_(0.91501369476318359375e1), SC_(0.579704582691192626953125e0), SC_(0.17519871309560501964641364820634189603930907023157e1), + SC_(-0.241168880462646484375e2), SC_(0.929777050018310546875e1), SC_(0.627384364604949951171875e0), SC_(0.18427916539366589294455916469285828510962125225628e1), + SC_(-0.241168880462646484375e2), SC_(0.93538990020751953125e1), SC_(0.549860179424285888671875e0), SC_(0.18674316708523376822796984823486841996872762318407e1), + SC_(-0.241168880462646484375e2), SC_(0.93773555755615234375e1), SC_(0.80939121544361114501953125e-2), SC_(0.18339823844391585199178838406559806663824944159363e1), + SC_(-0.241168880462646484375e2), SC_(0.98576259613037109375e1), SC_(0.14495480060577392578125e0), SC_(0.21160590802963202158749936227001100026331858328541e1), + SC_(-0.241168880462646484375e2), SC_(0.992922687530517578125e1), SC_(0.680287063121795654296875e0), SC_(0.22210678951847687738723989633440228220976733521782e1), + SC_(-0.128993244171142578125e2), SC_(-0.80491924285888671875e1), SC_(0.853031098842620849609375e0), SC_(-0.24079361851204479921891268817182253251232689836778e1), + SC_(-0.128993244171142578125e2), SC_(-0.7460263729095458984375e1), SC_(0.533933103084564208984375e0), SC_(-0.21454521037373319640079056178938384238377823309896e1), + SC_(-0.128993244171142578125e2), SC_(-0.729045963287353515625e1), SC_(0.622055113315582275390625e0), SC_(-0.21576028937097498916608800866807907042683606024172e1), + SC_(-0.128993244171142578125e2), SC_(-0.623236083984375e1), SC_(0.438666820526123046875e0), SC_(-0.16727712487955901880521454949575269670899198271666e1), + SC_(-0.128993244171142578125e2), SC_(-0.5579319000244140625e1), SC_(0.3509523868560791015625e0), SC_(-0.1367589634320150725173132003026336230738172555467e1), + SC_(-0.128993244171142578125e2), SC_(-0.443003559112548828125e1), SC_(0.19955120980739593505859375e0), SC_(-0.12481677362168626813305915580886898862058145245232e1), + SC_(-0.128993244171142578125e2), SC_(-0.38366591930389404296875e1), SC_(0.51324951648712158203125e0), SC_(-0.12111972445052865188571007381329352452899049551273e1), + SC_(-0.128993244171142578125e2), SC_(0.9376299381256103515625e0), SC_(0.13800132274627685546875e0), SC_(0.36961245357279766982192761986474662555034295891376e0), + SC_(-0.128993244171142578125e2), SC_(0.944411754608154296875e0), SC_(0.4018080234527587890625e0), SC_(0.37365897757366594690230982682926729188171480701809e0), + SC_(-0.128993244171142578125e2), SC_(0.264718532562255859375e1), SC_(0.3823329508304595947265625e0), SC_(0.55802560396267272549148764986721981955704897042777e0), + SC_(-0.128993244171142578125e2), SC_(0.62944736480712890625e1), SC_(0.75966693460941314697265625e-1), SC_(0.1697635886982840929361398122359491269105661967274e1), + SC_(-0.128993244171142578125e2), SC_(0.670017147064208984375e1), SC_(0.762421309947967529296875e0), SC_(0.21133604370430735932215952668677325486130857445504e1), + SC_(-0.128993244171142578125e2), SC_(0.81158390045166015625e1), SC_(0.23991616070270538330078125e0), SC_(0.21396387948259641643216926338689636512223316574779e1), + SC_(-0.128993244171142578125e2), SC_(0.826751708984375e1), SC_(0.404711104929447174072265625e-1), SC_(0.21384708015630843067007079645791906394706351959173e1), + SC_(-0.128993244171142578125e2), SC_(0.91501369476318359375e1), SC_(0.123318932950496673583984375e0), SC_(0.2314779449400068343659213264082432822031924922705e1), + SC_(-0.128993244171142578125e2), SC_(0.929777050018310546875e1), SC_(0.252955973148345947265625e0), SC_(0.24264097675863925255167755532256061802966767141351e1), + SC_(-0.128993244171142578125e2), SC_(0.93538990020751953125e1), SC_(0.18390779197216033935546875e0), SC_(0.2467759375685390663293985869012447296877874727909e1), + SC_(-0.128993244171142578125e2), SC_(0.93773555755615234375e1), SC_(0.5047709941864013671875e0), SC_(0.25585955275249889700976428791221494716932973983553e1), + SC_(-0.128993244171142578125e2), SC_(0.98576259613037109375e1), SC_(0.23995251953601837158203125e0), SC_(0.2824392841101831227091786623896912706301389023636e1), + SC_(-0.128993244171142578125e2), SC_(0.992922687530517578125e1), SC_(0.822604954242706298828125e0), SC_(0.31215115735264316651757015163351424114015959581724e1), + SC_(-0.422729969024658203125e1), SC_(-0.80491924285888671875e1), SC_(0.4172670543193817138671875e0), SC_(-0.35764220116276091744932472903421688990599962425547e1), + SC_(-0.422729969024658203125e1), SC_(-0.7460263729095458984375e1), SC_(0.981723129749298095703125e0), SC_(-0.48063333717671114488090570427265318173987703125174e1), + SC_(-0.422729969024658203125e1), SC_(-0.729045963287353515625e1), SC_(0.49654424190521240234375e-1), SC_(-0.33184188366452256813741116772425826277382283754391e1), + SC_(-0.422729969024658203125e1), SC_(-0.623236083984375e1), SC_(0.823455393314361572265625e0), SC_(-0.31647281735977406397662322137297899587454929059036e1), + SC_(-0.422729969024658203125e1), SC_(-0.5579319000244140625e1), SC_(0.902716100215911865234375e0), SC_(-0.29339747579279786325572091229475038788240508927069e1), + SC_(-0.422729969024658203125e1), SC_(-0.443003559112548828125e1), SC_(0.30182731151580810546875e0), SC_(-0.20332118474589978967014457229751417815334257007725e1), + SC_(-0.422729969024658203125e1), SC_(-0.38366591930389404296875e1), SC_(0.944787204265594482421875e0), SC_(-0.23309638234265258085236518289500875872382670635531e1), + SC_(-0.422729969024658203125e1), SC_(0.9376299381256103515625e0), SC_(0.47944284975528717041015625e-1), SC_(0.55127743131805946640653697589948126175960821694939e0), + SC_(-0.422729969024658203125e1), SC_(0.944411754608154296875e0), SC_(0.490864098072052001953125e0), SC_(0.56493782092073377291148430267312534227403657862246e0), + SC_(-0.422729969024658203125e1), SC_(0.264718532562255859375e1), SC_(0.24784760177135467529296875e0), SC_(0.99764875182145400934630080614259208150412409509119e0), + SC_(-0.422729969024658203125e1), SC_(0.62944736480712890625e1), SC_(0.489252626895904541015625e0), SC_(0.28734824786581909285845654210597622170300733533946e1), + SC_(-0.422729969024658203125e1), SC_(0.670017147064208984375e1), SC_(0.544056117534637451171875e0), SC_(0.32431260560094122699651897155841037329270811778132e1), + SC_(-0.422729969024658203125e1), SC_(0.81158390045166015625e1), SC_(0.3377194106578826904296875e0), SC_(0.3552545326446817241133924081320996120058335192491e1), + SC_(-0.422729969024658203125e1), SC_(0.826751708984375e1), SC_(0.887726128101348876953125e0), SC_(0.43951652637374153998422296875036327337396811436615e1), + SC_(-0.422729969024658203125e1), SC_(0.91501369476318359375e1), SC_(0.90005385875701904296875e0), SC_(0.48896014631866115132055935386096009319586005592127e1), + SC_(-0.422729969024658203125e1), SC_(0.929777050018310546875e1), SC_(0.34383952617645263671875e0), SC_(0.40767517905568657166494213191421071678457476778443e1), + SC_(-0.422729969024658203125e1), SC_(0.93538990020751953125e1), SC_(0.369246780872344970703125e0), SC_(0.41436207389706064482444445954737364758418812617667e1), + SC_(-0.422729969024658203125e1), SC_(0.93773555755615234375e1), SC_(0.332685671746730804443359375e-1), SC_(0.40756534641409571950446138635247828926930790279057e1), + SC_(-0.422729969024658203125e1), SC_(0.98576259613037109375e1), SC_(0.111202754080295562744140625e0), SC_(0.4485670727454841708415959087291569852354460985191e1), + SC_(-0.422729969024658203125e1), SC_(0.992922687530517578125e1), SC_(0.16287212073802947998046875e0), SC_(0.45334366508455232455528579705650267157785917194655e1), + SC_(-0.396634578704833984375e1), SC_(-0.80491924285888671875e1), SC_(0.780252039432525634765625e0), SC_(-0.40943621028986137634975703353728608171096349083644e1), + SC_(-0.396634578704833984375e1), SC_(-0.7460263729095458984375e1), SC_(0.8773639202117919921875e0), SC_(-0.41529939833416188958459732301077246683216449362382e1), + SC_(-0.396634578704833984375e1), SC_(-0.729045963287353515625e1), SC_(0.3897388279438018798828125e0), SC_(-0.3480702220830587340721759704232773754695850228748e1), + SC_(-0.396634578704833984375e1), SC_(-0.623236083984375e1), SC_(0.210301876068115234375e0), SC_(-0.27885209025273530237198094751157992754542254286699e1), + SC_(-0.396634578704833984375e1), SC_(-0.5579319000244140625e1), SC_(0.241691291332244873046875e0), SC_(-0.23574190979731764925820378430269429039999026821228e1), + SC_(-0.396634578704833984375e1), SC_(-0.443003559112548828125e1), SC_(0.2727530300617218017578125e0), SC_(-0.20795595903717808369226602920751548446608046498173e1), + SC_(-0.396634578704833984375e1), SC_(-0.38366591930389404296875e1), SC_(0.4039121568202972412109375e0), SC_(-0.19363504684946027378474342759829701188128121771172e1), + SC_(-0.396634578704833984375e1), SC_(0.9376299381256103515625e0), SC_(0.4924419820308685302734375e0), SC_(0.57439960450437229566178730657936055087445971602828e0), + SC_(-0.396634578704833984375e1), SC_(0.944411754608154296875e0), SC_(0.964545309543609619140625e-1), SC_(0.56442474196093604965583566632417577278742858368547e0), + SC_(-0.396634578704833984375e1), SC_(0.264718532562255859375e1), SC_(0.22341994941234588623046875e0), SC_(0.10268979775772100508568940610675973674681502356369e1), + SC_(-0.396634578704833984375e1), SC_(0.62944736480712890625e1), SC_(0.1319732964038848876953125e0), SC_(0.28383877275791007314386299295586348532858393601241e1), + SC_(-0.396634578704833984375e1), SC_(0.670017147064208984375e1), SC_(0.49030148983001708984375e0), SC_(0.32907839164490880888445582345626377534487551184709e1), + SC_(-0.396634578704833984375e1), SC_(0.81158390045166015625e1), SC_(0.94205057621002197265625e0), SC_(0.48362019411346784721294532477720592781436962781609e1), + SC_(-0.396634578704833984375e1), SC_(0.826751708984375e1), SC_(0.954943358898162841796875e0), SC_(0.50567832895539918958405915199892399369403297399246e1), + SC_(-0.396634578704833984375e1), SC_(0.91501369476318359375e1), SC_(0.9561345577239990234375e0), SC_(0.55399195596034391177588570332150200763269427826113e1), + SC_(-0.396634578704833984375e1), SC_(0.929777050018310546875e1), SC_(0.651968657970428466796875e0), SC_(0.44651151939772538632794635991507283967810574236258e1), + SC_(-0.396634578704833984375e1), SC_(0.93538990020751953125e1), SC_(0.575208604335784912109375e0), SC_(0.44208286802520298236946850661246282685292115127784e1), + SC_(-0.396634578704833984375e1), SC_(0.93773555755615234375e1), SC_(0.75750362873077392578125e0), SC_(0.47354975575487988811361588081480294631498903701242e1), + SC_(-0.396634578704833984375e1), SC_(0.98576259613037109375e1), SC_(0.597795434296131134033203125e-1), SC_(0.45905273890268042154281499664878219445864193449935e1), + SC_(-0.396634578704833984375e1), SC_(0.992922687530517578125e1), SC_(0.435245692729949951171875e0), SC_(0.47676238150782921841655206628063738779088064504765e1), + SC_(-0.2233159542083740234375e1), SC_(-0.80491924285888671875e1), SC_(0.23477990925312042236328125e0), SC_(-0.44748533126920831422349545820794806553371277385033e1), + SC_(-0.2233159542083740234375e1), SC_(-0.7460263729095458984375e1), SC_(0.552881181240081787109375e0), SC_(-0.45036034718645244567658910223019378062296243109396e1), + SC_(-0.2233159542083740234375e1), SC_(-0.729045963287353515625e1), SC_(0.3531585633754730224609375e0), SC_(-0.42726238657165988625899083013084234770927337383475e1), + SC_(-0.2233159542083740234375e1), SC_(-0.623236083984375e1), SC_(0.53152568638324737548828125e-1), SC_(-0.34453886271845466532767992962242203359531735591743e1), + SC_(-0.2233159542083740234375e1), SC_(-0.5579319000244140625e1), SC_(0.82119405269622802734375e0), SC_(-0.36214083786208780467420759923323534444796335095604e1), + SC_(-0.2233159542083740234375e1), SC_(-0.443003559112548828125e1), SC_(0.3225107491016387939453125e0), SC_(-0.25784058164296168294688388728197558401803014682815e1), + SC_(-0.2233159542083740234375e1), SC_(-0.38366591930389404296875e1), SC_(0.15403441153466701507568359375e-1), SC_(-0.22937304274191202625404745929401752108326363938647e1), + SC_(-0.2233159542083740234375e1), SC_(0.9376299381256103515625e0), SC_(0.4049813747406005859375e0), SC_(0.66882671905380321365353696629501581726839659732368e0), + SC_(-0.2233159542083740234375e1), SC_(0.944411754608154296875e0), SC_(0.430237986147403717041015625e-1), SC_(0.66092945746372938652588605746346208982917240808408e0), + SC_(-0.2233159542083740234375e1), SC_(0.264718532562255859375e1), SC_(0.908433616161346435546875e0), SC_(0.18536900080764993605645667717175921713955588720638e1), + SC_(-0.2233159542083740234375e1), SC_(0.62944736480712890625e1), SC_(0.16899003088474273681640625e0), SC_(0.35237325007404202330837864635359809500592160070051e1), + SC_(-0.2233159542083740234375e1), SC_(0.670017147064208984375e1), SC_(0.80913722515106201171875e0), SC_(0.45426945752272245371383350900233494955058093762277e1), + SC_(-0.2233159542083740234375e1), SC_(0.81158390045166015625e1), SC_(0.649115502834320068359375e0), SC_(0.49038329428638199567178903183066367562827357258082e1), + SC_(-0.2233159542083740234375e1), SC_(0.826751708984375e1), SC_(0.25829589366912841796875e0), SC_(0.45593877951262054200620352500821353887097951116667e1), + SC_(-0.2233159542083740234375e1), SC_(0.91501369476318359375e1), SC_(0.731722414493560791015625e0), SC_(0.57004523382308203815337495168340937882687351079681e1), + SC_(-0.2233159542083740234375e1), SC_(0.929777050018310546875e1), SC_(0.12984652817249298095703125e0), SC_(0.51319275680071863858207399358794549369987990555794e1), + SC_(-0.2233159542083740234375e1), SC_(0.93538990020751953125e1), SC_(0.64774596691131591796875e0), SC_(0.56823138039205519976075282866343588596541504718097e1), + SC_(-0.2233159542083740234375e1), SC_(0.93773555755615234375e1), SC_(0.493326842784881591796875e0), SC_(0.5455958348692104517652116375856606963768856463546e1), + SC_(-0.2233159542083740234375e1), SC_(0.98576259613037109375e1), SC_(0.4509237110614776611328125e0), SC_(0.58425715884572127603208314559986328209865929040183e1), + SC_(-0.2233159542083740234375e1), SC_(0.992922687530517578125e1), SC_(0.3785004317760467529296875e0), SC_(0.58235654495321593144993439337365609617712620177635e1), + SC_(0.201027393341064453125e0), SC_(-0.80491924285888671875e1), SC_(0.54700887203216552734375e0), SC_(-0.99225565272299265057474332033452451298257411758289e1), + SC_(0.201027393341064453125e0), SC_(-0.7460263729095458984375e1), SC_(0.71846997737884521484375e0), SC_(-0.98733924062829495855268464439174693001319340908722e1), + SC_(0.201027393341064453125e0), SC_(-0.729045963287353515625e1), SC_(0.29632079601287841796875e0), SC_(-0.82838310087004006715984395376110573887564954006723e1), + SC_(0.201027393341064453125e0), SC_(-0.623236083984375e1), SC_(0.2878049910068511962890625e0), SC_(-0.71399649768593994233565781388330571566404664291638e1), + SC_(0.201027393341064453125e0), SC_(-0.5579319000244140625e1), SC_(0.74469280242919921875e0), SC_(-0.7852838275875078318898768277396954817312338949233e1), + SC_(0.201027393341064453125e0), SC_(-0.443003559112548828125e1), SC_(0.623435556888580322265625e0), SC_(-0.55353469466832669055948998690680459923127869705195e1), + SC_(0.201027393341064453125e0), SC_(-0.38366591930389404296875e1), SC_(0.188955008983612060546875e0), SC_(-0.42670151795740926550616070898142650427001824200856e1), + SC_(0.201027393341064453125e0), SC_(0.9376299381256103515625e0), SC_(0.811873972415924072265625e0), SC_(0.10948999881609283534865564650155039154841364221285e1), + SC_(0.201027393341064453125e0), SC_(0.944411754608154296875e0), SC_(0.6867754459381103515625e0), SC_(0.10678437743348588891519840198915283249591294529495e1), + SC_(0.201027393341064453125e0), SC_(0.264718532562255859375e1), SC_(0.31250798702239990234375e0), SC_(0.31064483566488608931281755219427099993121689654282e1), + SC_(0.201027393341064453125e0), SC_(0.62944736480712890625e1), SC_(0.18351115286350250244140625e0), SC_(0.71043510436913445771405941909028349861445575844728e1), + SC_(0.201027393341064453125e0), SC_(0.670017147064208984375e1), SC_(0.3857105076313018798828125e0), SC_(0.77553041204136176774038756662263769147319302501976e1), + SC_(0.201027393341064453125e0), SC_(0.81158390045166015625e1), SC_(0.3684845864772796630859375e0), SC_(0.94787138653519013648251654059066285072949428515173e1), + SC_(0.201027393341064453125e0), SC_(0.826751708984375e1), SC_(0.3439297378063201904296875e0), SC_(0.96231456672706330197751945234594804514605578493294e1), + SC_(0.201027393341064453125e0), SC_(0.91501369476318359375e1), SC_(0.62561857700347900390625e0), SC_(0.11697431340770649519046006010297689812160093617617e2), + SC_(0.201027393341064453125e0), SC_(0.929777050018310546875e1), SC_(0.81576907634735107421875e0), SC_(0.13689559632918850897185479014035065907489555706468e2), + SC_(0.201027393341064453125e0), SC_(0.93538990020751953125e1), SC_(0.7802274227142333984375e0), SC_(0.13252477031585661466687278470237361058228506710271e2), + SC_(0.201027393341064453125e0), SC_(0.93773555755615234375e1), SC_(0.669285118579864501953125e0), SC_(0.12219207125307825999387228477920190151422215626939e2), + SC_(0.201027393341064453125e0), SC_(0.98576259613037109375e1), SC_(0.811257660388946533203125e-1), SC_(0.11000670184663049479533855890007560504469595099336e2), + SC_(0.201027393341064453125e0), SC_(0.992922687530517578125e1), SC_(0.379418849945068359375e0), SC_(0.11497477476964669120779679338120232828710984170976e2) + }; +#undef SC_ + diff --git a/test/ellint_rc_data.ipp b/test/ellint_rc_data.ipp new file mode 100644 index 000000000..c03e26684 --- /dev/null +++ b/test/ellint_rc_data.ipp @@ -0,0 +1,216 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Test data for RC, each row contains in order: +// +// x, y, RC(x, y) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 201> ellint_rc_data = { + SC_(0.11698430441812742785454260394458960094979845402414e-30), SC_(0.1429457475085533184e20), SC_(0.41546482167023371731518451342517736095263780557582e-9), + SC_(0.60682196926171104626767727515008970841312337712241e-30), SC_(0.20031258624e11), SC_(0.11098537606275153066313383027431717728910787699004e-4), + SC_(0.75974287571611502022633594876763844865744160884209e-30), SC_(0.20657736771171195551744e23), SC_(0.10928951720653730370271800759007590309935803177545e-10), + SC_(0.10711124272997777587041261201942927950011067906889e-29), SC_(0.47946235e7), SC_(0.71736902777915132997000781571354752397421561836787e-3), + SC_(0.22148209406780902835423848339554340607932845033396e-29), SC_(0.19855378956352178823888896e26), SC_(0.35251758550831167800571476411635458611576128740787e-12), + SC_(0.41366469991877353664505423235416110752209856263632e-29), SC_(0.1080339869874636584075679427013641468012674864323e-29), SC_(0.73882898278016317196709226502699714371366335165311e15), + SC_(0.44767214645416419053919245787147718165594030426536e-29), SC_(0.26553176031232e14), SC_(0.30483276103299498395114390375939883603035900740311e-6), + SC_(0.60078474312334545656635060929362382794743178141472e-29), SC_(0.37131016039637643189053051173686981201171875e-8), SC_(0.25778133019186154518263488635604654249614963342631e5), + SC_(0.61834249098451553748337548320711315606925672313013e-29), SC_(0.15125532639232e16), SC_(0.40389133730438812928090167163598082343384172921425e-7), + SC_(0.15386248307178551019952166983379913769903023636025e-28), SC_(0.11083928e9), SC_(0.14920144492544889019454092007748150269559896140113e-3), + SC_(0.19696330564073048658818435820590984305819001943432e-28), SC_(0.32238440243425309843308409068705787565729120602853e-24), SC_(0.27528315706771612956183484092479935495449666128525e13), + SC_(0.3000732163818651513042917353020530062720192427143e-28), SC_(0.28816120624542236328125e1), SC_(0.92534167116491481810744772274112199743911312596723e0), + SC_(0.47155488899394500240213479534565823420775918905622e-28), SC_(0.4463543296e10), SC_(0.23511481798013935669754503155612804985989597208762e-4), + SC_(0.65104581211365760324995297566040105840304400052279e-28), SC_(0.700861590985368820838630199432373046875e-9), SC_(0.59334016337111736885565181305039468621938956693965e5), + SC_(0.3949284499458758322165682321378970124179942071882e-27), SC_(0.670079424e9), SC_(0.60681559827956246896673839347875883912858354314319e-4), + SC_(0.55263283825603576259688637477087526891102295303199e-27), SC_(0.14570690537170526341649579027404115549870766699314e-16), SC_(0.41150783369497640278522169895393702894524362953078e9), + SC_(0.56127809703514701593677302775789618452802567406812e-27), SC_(0.9228809556838246663801328395493328571319580078125e-11), SC_(0.51706725181069699755346169652670461023196225991383e6), + SC_(0.12941088853490731622934705547460304161866623869764e-26), SC_(0.51905646303429040628284185654450766378431580960751e-16), SC_(0.21802745983479448951816941696856049925016007329412e9), + SC_(0.13705567485615801022446745431989965211687137938007e-26), SC_(0.5078582763671875e0), SC_(0.22041878790098954794667581190100145257683475089988e1), + SC_(0.16793731632787596740420928687663819571897812904515e-26), SC_(0.3518738464768e13), SC_(0.8373873246615759174577066128415186701403437615454e-6), + SC_(0.38344456302173223195286237326130017242619817813276e-26), SC_(0.1287535325337014953720268054032123824574619620157e-27), SC_(0.39122934559161731153423283680987267387840851196098e14), + SC_(0.39915753210320770987303899714279126384431587576396e-26), SC_(0.21695373623974084952946051325821291927687106275468e-28), SC_(0.52362555864098150198972240138118002904488963483036e14), + SC_(0.4719122320543576863524228422930565122003386188676e-26), SC_(0.13622372113626680630865559552e29), SC_(0.13458402336127820973876482234542361593374249767564e-13), + SC_(0.60865414403362585004788968196643994088311036341765e-26), SC_(0.123742392e9), SC_(0.14120842972598363583851550459968997099008965981731e-3), + SC_(0.10912435391066719332460695603753930316446923640128e-25), SC_(0.701712293691392e16), SC_(0.18751686532816272762803237369940986207556087504473e-7), + SC_(0.11837831633021164326650292224515978315498715423004e-25), SC_(0.27219574150194603134877979755401611328125e-7), SC_(0.95209265255492104735446619994567552559697239051341e4), + SC_(0.27826294978205525521980137859608542144911232096849e-25), SC_(0.87440356429873925658498856170228582591246249688943e-25), SC_(0.39786583496854506510922922833320145505046484128036e13), + SC_(0.34919368622379363366113344149995795887854964367758e-25), SC_(0.253342638931968e15), SC_(0.9868831456740266966933448023215284826954206363932e-7), + SC_(0.43573388456807634241895548780677530339229715228289e-25), SC_(0.4951682e8), SC_(0.22322534554145528116293051775479117197834119520022e-3), + SC_(0.60515264161661452673922225736467336588411333742066e-25), SC_(0.787468255232e13), SC_(0.55976191846459760569727531324370941602465103140201e-6), + SC_(0.14044194233643483429544463937103636612564738772591e-24), SC_(0.11511007425024644135191920213401317596435546875e-10), SC_(0.4629810115470076825533605597799208284244799296532e6), + SC_(0.14235380836999617679740726134029336127093459674064e-24), SC_(0.13978527726259656235898667313173260930711863658793e-24), SC_(0.26665402305818478969438170708975555299492041941187e13), + SC_(0.63171350201374448567926894124993295043246632758382e-24), SC_(0.34594001439795600424927311319582115491182941913878e-27), SC_(0.55978470361004464102520617099230932588604458370896e13), + SC_(0.1809900535358029636909945199492450026643175498009e-23), SC_(0.4521496521192602813243865966796875e-5), SC_(0.73871816148130469176849633363812844159103317042416e3), + SC_(0.63795086741914598182229839666991088459324643622494e-23), SC_(0.19953517994584643852448181812338140391502663839596e-24), SC_(0.97252851335184218861516452118643565455819826848263e12), + SC_(0.12701055793371805794043341177064064973639689881679e-22), SC_(0.2068948375e7), SC_(0.10920563536493094936157694716029214151487193559361e-2), + SC_(0.25335998731998849030698736206528910198942927678445e-22), SC_(0.99404931640625e3), SC_(0.49821398201934740455232191323883688893256512444693e-1), + SC_(0.71863877935764437100797607417958061393203905709015e-22), SC_(0.174722980453023744e19), SC_(0.11883513458141578715964474656644636676047017752235e-8), + SC_(0.33895318467300131244893458519885746926814107382597e-21), SC_(0.108193802361711277626454830169677734375e-6), SC_(0.47754980229555933492229104255715482771563363261078e4), + SC_(0.96362472102334232055222076765519517715929964651878e-21), SC_(0.229194643907248973846435546875e-3), SC_(0.1037570568888513512672421917866018283061872751937e3), + SC_(0.24141449950396592978032251394348434159198291126813e-20), SC_(0.18448819419086848e17), SC_(0.11564732376740008952525889248768816116526843336083e-7), + SC_(0.27589042212186362242123678200494962808875243354123e-20), SC_(0.16342684e8), SC_(0.3885600849080471885427919126603669380019521916121e-3), + SC_(0.32517390764125836699536241120728208287005145393778e-20), SC_(0.32148523727519219712e22), SC_(0.27703801044419253206437768255298726473435062914505e-10), + SC_(0.13713993780991436762807365477498389161326031171484e-19), SC_(0.805980574786256896e18), SC_(0.17496758182365486418837119046398196242651995908202e-8), + SC_(0.48988976909583188869227858043553514022505623870529e-19), SC_(0.20838384443777613341808319091796875e-4), SC_(0.34410251008331861623295558733232180042927229855377e3), + SC_(0.59220483766176692878700381014733800100202643079683e-19), SC_(0.170295034922225631232e22), SC_(0.38064390844573575145663807454900781472238386155909e-10), + SC_(0.82997499668329372719087076888666576479636205476709e-19), SC_(0.13155479315039595949803718770027355301939497866925e-23), SC_(0.21587999863350804994131547408624282253340872631383e11), + SC_(0.94969911521617292598785838378394608128019171999767e-19), SC_(0.16011657277825719347674748860299587249755859375e-10), SC_(0.39253685794445481713501328838333615978147538487421e6), + SC_(0.20581069188704517551523841788208013525718342862092e-18), SC_(0.79597584432992412060764095271814255738718202337623e-18), SC_(0.1350343783064271491301645561749747948509003384249e10), + SC_(0.22622955483503716568203720238550147314526839181781e-18), SC_(0.85913526136044117637383110697157917456934228539467e-16), SC_(0.16414615605631462414018849697787131696542279589859e9), + SC_(0.30420727664434581210352358596193944606511649908498e-18), SC_(0.28656053473241627216339111328125e-4), SC_(0.29343482785228047725924696469302777739683607703434e3), + SC_(0.5065993732313771067901500902430633743733778828755e-18), SC_(0.1568245533434264871175400912761688232421875e-11), SC_(0.12538793439957801193747997519423750597372445322011e7), + SC_(0.1269279595243605041993096779751049041351507185027e-17), SC_(0.33297255999405977634352134242323728585688513703644e-17), SC_(0.6307182542731725660001150747369468435224945316479e9), + SC_(0.12784377253954858878954355810853016350847610738128e-17), SC_(0.687874899968e12), SC_(0.1893935330545222150970846791789958509229989435048e-5), + SC_(0.29343589097392396787046010830923847834128537215292e-17), SC_(0.988066171875e5), SC_(0.49972014999347714801287931360926030236802518594537e-2), + SC_(0.46871312598868006987253009842930850936681963503361e-17), SC_(0.3093168493023691324522496e26), SC_(0.28243472271946788164939900071622955356799263239731e-12), + SC_(0.152616857880340486461855087352290638591512106359e-16), SC_(0.2803833618070566221119488e25), SC_(0.93808838274358563783082952025021048853623300403696e-12), + SC_(0.27022364375023134885640124780437076879024971276522e-16), SC_(0.27506543358959030582888269221280574638246675400223e-29), SC_(0.30108032875150741383088202176437518530075493145293e10), + SC_(0.55460104261295954577309919031335994077380746603012e-16), SC_(0.154132149174272e16), SC_(0.4001043378763428887183412693378271572857296764857e-7), + SC_(0.13209346463532805303342509972708285204134881496429e-15), SC_(0.3125807523929324815981090068817138671875e-7), SC_(0.8884250355437972613883213327503914013438652227259e4), + SC_(0.31354745663454523796342954256033408455550670623779e-15), SC_(0.18973853599391077295877039432525634765625e-8), SC_(0.3605203076290095918464079777019357642842666108285e5), + SC_(0.40558081566683637682324548023871102486737072467804e-15), SC_(0.208714828125e6), SC_(0.3438295704906441724421284923146054131214779732901e-2), + SC_(0.86986000872677090266227306614155168063007295131683e-15), SC_(0.6724360036363488659828113408e28), SC_(0.19155539931271849389875536772683217400458105317664e-13), + SC_(0.92657114094649205629505850367877428652718663215637e-15), SC_(0.32666126748015500425026402808725833892822265625e-10), SC_(0.27390641716269741695214339048257696917547990788968e6), + SC_(0.1327809695148788465823841420387907419353723526001e-14), SC_(0.54374770505732477601443242143375300656771287322044e-16), SC_(0.63904369494942025897253747392585085351726876366063e8), + SC_(0.16682115902222024485246354430501014576293528079987e-14), SC_(0.40149480284466451673885956097365124151110649108887e-13), SC_(0.69610251923240433370059407687180639587649479389139e7), + SC_(0.62660384591791979530528422515089914668351411819458e-14), SC_(0.199429788239058325416408479213714599609375e-7), SC_(0.11119107448133471075560965516334728421690408075844e5), + SC_(0.63024210653626119155168439078806841280311346054077e-14), SC_(0.83430262439221944230360872296614616061560809612274e-15), SC_(0.22574681584731394754127234813389452607870443810549e8), + SC_(0.10676147262794234704674778413391322828829288482666e-13), SC_(0.43214794983836329352138753913566138198376620493946e-21), SC_(0.89081662541541586914322012810403516608773228196705e8), + SC_(0.11175146230483004594624674155056709423661231994629e-13), SC_(0.13292268387650598312620966562043814396254504117678e-22), SC_(0.10375337151147634989665344794895368826014425089457e9), + SC_(0.14452686009774895481427847698796540498733520507813e-13), SC_(0.669478515625e5), SC_(0.6070878688152193299924869338064352690120583642415e-2), + SC_(0.15741248433312655941040958396115456707775592803955e-13), SC_(0.55817784918415767502848e23), SC_(0.66486516347017242385736020715678344161218353890444e-11), + SC_(0.20907895301679711719256005153511068783700466156006e-13), SC_(0.893892793119022144310292787849903106689453125e-9), SC_(0.52377290723662340541539667066133146373413622848047e5), + SC_(0.39424006729538510485078006695403018966317176818848e-13), SC_(0.57692237126522896384e20), SC_(0.2068050725918743676865501216749142009296095185495e-9), + SC_(0.5554841051654164918449652077470091171562671661377e-13), SC_(0.12544762676037794895951386908716784773787367157638e-18), SC_(0.30521794362592775449474387740993552064903872666301e8), + SC_(0.98092148011034996368806559985387139022350311279297e-13), SC_(0.8399241342592483328e19), SC_(0.54200069924858829039523381828914780837800840557603e-9), + SC_(0.10564504593401150001064081607182743027806282043457e-12), SC_(0.4479792022705078125e2), SC_(0.23468802898098123142592434447378499148543917622314e0), + SC_(0.15615465734711286849289990641409531235694885253906e-12), SC_(0.24870398826241113884932236596184834676037667122728e-20), SC_(0.24472819399433022007294333045527261944964286360397e8), + SC_(0.29870528793496387010009129880927503108978271484375e-12), SC_(0.2262512535863296e17), SC_(0.10442978405373505212946398659629346285587347485068e-7), + SC_(0.86422194270699415064029835775727406144142150878906e-12), SC_(0.20821377315431516209152e23), SC_(0.10885920287879685686355831941644040399805551265099e-10), + SC_(0.12200210459945015628591136191971600055694580078125e-11), SC_(0.56225779987930131445265275562229206527363467582603e-24), SC_(0.13486078631154888854229043546871905506012009735232e8), + SC_(0.164856496509546701645376742817461490631103515625e-11), SC_(0.12800646827237915914565746788866817951202392578125e-10), SC_(0.36045787009899043915638137502605942636753878032318e6), + SC_(0.1943433088069657088681196910329163074493408203125e-10), SC_(0.22031295035060773623229295812958821278778470675874e-24), SC_(0.37991980723075792959264812541886429306041092818746e7), + SC_(0.8669365225699721122509799897670745849609375e-10), SC_(0.11262596188998941215686500072479248046875e-7), SC_(0.14027640945609861854903798744913081835239816302217e5), + SC_(0.111468466401642984919817536137998104095458984375e-9), SC_(0.68559452379320356268932457055598206352442502975464e-14), SC_(0.52486878758492554321888354871667427243362154354677e6), + SC_(0.14367766698608619435617583803832530975341796875e-9), SC_(0.5059831664766534231603145599365234375e-6), SC_(0.21848877860361015086443267739440324861750113257735e4), + SC_(0.354709317473833607436972670257091522216796875e-9), SC_(0.34857664908449107348958795506280082952452713251912e-25), SC_(0.10153352525458852419843701240043332863605820898506e7), + SC_(0.573736336217933740044827573001384735107421875e-9), SC_(0.141051064161956674070097506046295166015625e-7), SC_(0.11757815303155685731623615095164779613218612398386e5), + SC_(0.151380081803154098452068865299224853515625e-7), SC_(0.94440849851249091320281320378524601844016927998382e-25), SC_(0.16662544565755989565448833912578784004220914986167e6), + SC_(0.11666782739894188125617802143096923828125e-6), SC_(0.34799534478224813938140869140625e-3), SC_(0.83236457192835769575662961408434019583738106058101e2), + SC_(0.68897207938789506442844867706298828125e-6), SC_(0.221162365880631296e20), SC_(0.33401368702824721858284957396270596689739407469446e-9), + SC_(0.1116302655645995400846004486083984375e-5), SC_(0.5191992844812585795584e22), SC_(0.21799816321471514057295223267883049361883182330942e-10), + SC_(0.1885123992906301282346248626708984375e-5), SC_(0.25172518744793432127678756566548684645107602196601e-26), SC_(0.18008547998944050904488110810216807100106707853798e5), + SC_(0.23743823476252146065235137939453125e-5), SC_(0.12017452733891625937800995416182558983564376831055e-12), SC_(0.59008749326752561914554583802676227170763409488603e4), + SC_(0.53310077419155277311801910400390625e-5), SC_(0.217494208512e12), SC_(0.3368185696185283123083955915747809814159015048245e-5), + SC_(0.63429242800339125096797943115234375e-5), SC_(0.31824542466005171886425636864e29), SC_(0.88051912373598395652506815894053991110568556947188e-14), + SC_(0.130162216009921394288539886474609375e-4), SC_(0.759344620746560394763946533203125e-4), SC_(0.14421506983819104132004852227111619430015782508182e3), + SC_(0.371529138647019863128662109375e-3), SC_(0.12312668720852486471439889495482766790246387245134e-18), SC_(0.96055276655007628911605449769323501052904206390342e3), + SC_(0.40748735773377120494842529296875e-3), SC_(0.57247653448122368e17), SC_(0.65650952593515499663260488879276797594548086476475e-8), + SC_(0.210290006361901760101318359375e-2), SC_(0.4932620110638545248192561152e28), SC_(0.22365625181037002220104830902172314909670879382756e-13), + SC_(0.47173579223453998565673828125e-2), SC_(0.28601321158264026057365024112938563807684451932578e-26), SC_(0.41603232866055243668483247942751627427269549962905e3), + SC_(0.2028485946357250213623046875e-1), SC_(0.43614054590079831541515886783599853515625e-7), SC_(0.50680436057151466590097864087821442993240691166811e2), + SC_(0.256623141467571258544921875e-1), SC_(0.33872525312e11), SC_(0.85348491273558027611269000760555604867934140869545e-5), + SC_(0.389046929776668548583984375e-1), SC_(0.18785430908203125e2), SC_(0.35227918956056369186636973233446582534230004889078e0), + SC_(0.39087764918804168701171875e-1), SC_(0.37496308203098109226999139757157200603110425163322e-21), SC_(0.12007602449751896613428312094975957780678427145037e3), + SC_(0.1238969862461090087890625e0), SC_(0.50384063720703125e3), SC_(0.69289771484876454297871646601530180487547603756684e-1), + SC_(0.4837694466114044189453125e0), SC_(0.2555249786376953125e2), SC_(0.28615961511581393939657047798947909654100110707466e0), + SC_(0.15793964862823486328125e1), SC_(0.21153786174505042274269802208549073334284835448335e-27), SC_(0.26085930256702446153426928501283414996469493899754e2), + SC_(0.3046932220458984375e1), SC_(0.18625525552055897944743393684375905872507558290159e-28), SC_(0.19665317857884549061595716355515640138874370283719e2), + SC_(0.12346179962158203125e2), SC_(0.304309702915784704e18), SC_(0.2847488476701153720061251397440169274771068622536e-8), + SC_(0.130841693878173828125e2), SC_(0.516425012058796509045456896e28), SC_(0.21858292984467318233636908716192880532684611323597e-13), + SC_(0.2496727752685546875e2), SC_(0.755542572949963187056710012257099151611328125e-10), SC_(0.27928314162875666520962642485579357074135329858573e1), + SC_(0.4151866912841796875e2), SC_(0.84098145009994339684283693509730169685090217512879e-22), SC_(0.4341003402255665800060030872597376661848978347545e1), + SC_(0.10465634918212890625e3), SC_(0.60640822994173504412174224853515625e-5), SC_(0.88219974915068377829851076473240001539884786059211e0), + SC_(0.204871795654296875e3), SC_(0.351293559140227787146657792e27), SC_(0.83807866206725702601826883835498669002259349569411e-13), + SC_(0.2247014312744140625e3), SC_(0.275117858615052709715247104e27), SC_(0.94702291082189117328396733175326455545223390155305e-13), + SC_(0.322791595458984375e3), SC_(0.86205957643638764405225050069248027284629642963409e-15), SC_(0.11646880911415179034823341402428681949283112375143e1), + SC_(0.4562802734375e3), SC_(0.10197021348467909816516131089894163913918803398168e-29), SC_(0.17922488338074155572310350987171414204572553246592e1), + SC_(0.7562174072265625e3), SC_(0.1910448768e10), SC_(0.35923470132422725783693134841062611631507906827816e-4), + SC_(0.82290283203125e3), SC_(0.36223742228003175114281475543975830078125e-7), SC_(0.43980399212423650879963940207747478236239652368737e0), + SC_(0.10313978271484375e4), SC_(0.10318525717298732830018437311991874594241380691528e-14), SC_(0.6668515395137059692868787992249145942381978211602e0), + SC_(0.11206973876953125e4), SC_(0.159823103248039936e18), SC_(0.39291632590134749018316722859590852663653580203117e-8), + SC_(0.3524259033203125e4), SC_(0.38758790625e6), SC_(0.23805498764247481510606154825690304471222889948051e-2), + SC_(0.3542151123046875e4), SC_(0.23456829198204715014597354638681281358003616333008e-13), SC_(0.34396142776310129846777566611486054989278031943136e0), + SC_(0.69560673828125e4), SC_(0.747194576263427734375e1), SC_(0.49317089833424179564861860197880854610400944287808e-1), + SC_(0.7298279296875e4), SC_(0.135008262029312e15), SC_(0.13518785304121054341303872941843981481438748034264e-6), + SC_(0.897631640625e4), SC_(0.386145068359375e4), SC_(0.13761011816758051951614138230181415517505541771123e-1), + SC_(0.147901005859375e5), SC_(0.62520772668534154026944814518561754825703991045316e-23), SC_(0.2648413871016930409485455149414286637028184421264e0), + SC_(0.815536015625e5), SC_(0.230844914913177490234375e0), SC_(0.24794349449595078621345239278260580833606450246749e-1), + SC_(0.84901359375e5), SC_(0.18469835205078125e4), SC_(0.90274392712796214783133197618962325121969170157594e-2), + SC_(0.131195640625e6), SC_(0.399027378608056683915492826862951233901632974721e-21), SC_(0.8619841670060382832194238459033456814758956298182e-1), + SC_(0.41534478125e6), SC_(0.1918984889984130859375e1), SC_(0.1060665265394308433482579591641745485349613369435e-1), + SC_(0.6869200625e6), SC_(0.12406291034494643099606037139892578125e-5), SC_(0.17148853609122838287334270730377713622015582671517e-1), + SC_(0.9115189375e6), SC_(0.179409878467662494683889664e27), SC_(0.11727263974665223656008245016259368445874373950871e-12), + SC_(0.39914275e7), SC_(0.5617260831058956682682037353515625e-4), SC_(0.66003352582444822055431410346869855793086865122376e-2), + SC_(0.15278292e8), SC_(0.14619622e8), SC_(0.25961118278381005988486780674736203564957112818546e-3), + SC_(0.15583587e8), SC_(0.46741176605224609375e2), SC_(0.17863256980859237735262630967043753358312118433161e-2), + SC_(0.2359947e8), SC_(0.83892250504513065845701871993405683214864787598623e-28), SC_(0.85438729190979830430450108794113432317121617101695e-2), + SC_(0.44006012e8), SC_(0.41172763385266176e17), SC_(0.77411561887565592752972899889991015699435496559546e-8), + SC_(0.4426536e8), SC_(0.89961878334825112180062577083017316681434749625623e-18), SC_(0.45500003788487494954911364150613981149754477134657e-2), + SC_(0.14248488e9), SC_(0.61731988312258099732254031872e29), SC_(0.63221492521852077836928323850507110790467251568351e-14), + SC_(0.156271296e9), SC_(0.13287944602780044078826904296875e-3), SC_(0.11670991383498154005718703499716739301912113499221e-2), + SC_(0.339495296e9), SC_(0.27455182077952e14), SC_(0.29911423091309748142593311126423073053561438997539e-6), + SC_(0.355727936e9), SC_(0.49794778812580822691949943719295546451682199506905e-24), SC_(0.20422111659287768080880666674695585733215224225899e-2), + SC_(0.1626075136e10), SC_(0.482386627197265625e2), SC_(0.23211090322482879766302355319080524745211784432509e-3), + SC_(0.2606333696e10), SC_(0.12266837021255184297929829995155159849673509597778e-13), SC_(0.53963700104507610983907942976446519710715041862358e-3), + SC_(0.3957605632e10), SC_(0.55799657429356219751070966594852507114410400390625e-13), SC_(0.42920548607924953119431231450313296279672960982957e-3), + SC_(0.7740245504e10), SC_(0.589840515072e13), SC_(0.63227008905693272145832965758127025031892199413741e-6), + SC_(0.10259405824e11), SC_(0.35736448257653877024582131372021365223190514370799e-17), SC_(0.31894320284009100162338080720486603695808737357409e-3), + SC_(0.14041162752e11), SC_(0.16802999673239973138530304e26), SC_(0.38320084631624641337451768839752529254504071282248e-12), + SC_(0.82854125568e11), SC_(0.58830391620982291911135882706044579926359106014644e-24), SC_(0.14299276138191576425667241629897528275040512189828e-3), + SC_(0.11738591232e12), SC_(0.761073704058645716941100545227527618408203125e-10), SC_(0.7322171577268687983119525908536326486897490571614e-4), + SC_(0.191893782528e12), SC_(0.174726296875e6), SC_(0.17458388731589946205436634365599236215476886257278e-4), + SC_(0.446171086848e12), SC_(0.49623249953612003082525916397571563720703125e-9), SC_(0.37153579565929854820799756427432381213691623554542e-4), + SC_(0.572994879488e12), SC_(0.4479686882443445386870784e25), SC_(0.742157274353212118943917435113707955824870795782e-12), + SC_(0.92746285056e12), SC_(0.7325884342193603515625e1), SC_(0.13992334087709732045223614104220216290282058103286e-4), + SC_(0.13073324703744e14), SC_(0.48555353730121618377670656e27), SC_(0.71285511551986730987092942275962922466144519563445e-13), + SC_(0.1591604150272e14), SC_(0.351564170056957952e18), SC_(0.26379290397755114021116829042194283811143014246219e-8), + SC_(0.20741449842688e14), SC_(0.4743499375e6), SC_(0.20837274754438050716836877714486012090201227681745e-5), + SC_(0.31191365320704e14), SC_(0.2293932139873504638671875e0), SC_(0.30376223823640976472682511381218417507215286561237e-5), + SC_(0.51712110886912e14), SC_(0.156551992965379627797503279104e30), SC_(0.39700005931080030246901295737647079077294776223606e-14), + SC_(0.14830236860416e15), SC_(0.57842544071306897015280826246375056598481023684144e-17), SC_(0.30262887085625134071904723108221624416890211410925e-5), + SC_(0.3135611338752e15), SC_(0.2348838144e10), SC_(0.37238603812796720490349747070177231425073166090273e-6), + SC_(0.323813657018368e15), SC_(0.156708486328125e5), SC_(0.69847661515884606972303830302067390332677255420951e-6), + SC_(0.530327327997952e15), SC_(0.10366431646728266850195727608041629252966231433675e-18), SC_(0.17153262952128191564833782071342486326068147437365e-5), + SC_(0.727262651482112e15), SC_(0.1535589888e10), SC_(0.26799428982612804774219551247863136845480307410692e-6), + SC_(0.95759886188544e15), SC_(0.4659874708323741288040764629840850830078125e-8), SC_(0.8897375003298093960305950194491436152687587334261e-6), + SC_(0.1551973144854528e16), SC_(0.10139344880747031860591903938868807433237861914677e-19), SC_(0.10458468387194864418446638976290709697775378499213e-5), + SC_(0.183459460939776e16), SC_(0.58535432060362684618705258305616519358052915120161e-26), SC_(0.11315636043901720121388837656247249664177763590949e-5), + SC_(0.27152649027584e16), SC_(0.66861986169897136278450489044189453125e-6), SC_(0.49072897074683974426280640967267909946582802584589e-6), + SC_(0.3762704347037696e16), SC_(0.10164524532769642241629852708355797252185587220552e-24), SC_(0.77271884197062324056183842244132156703113101877894e-6), + SC_(0.6551729407524864e16), SC_(0.25762003497220575809478759765625e-3), SC_(0.28457658270165863549014595037995212294784586710095e-6), + SC_(0.9007602981666816e16), SC_(0.25765624e9), SC_(0.98811088491194357965387716654259888241690606624295e-7), + SC_(0.31614863423832064e17), SC_(0.64014885e7), SC_(0.66664506125039749834276834929108360333353634282303e-7), + SC_(0.45080659638616064e17), SC_(0.66192871423119660955992064e26), SC_(0.19306655679013338902506375891076552233340289260346e-12), + SC_(0.59877638017122304e17), SC_(0.53512100536178474827209150532780768116936087608337e-15), SC_(0.15362013975191677793880105907602135335521807551786e-6), + SC_(0.128395461743607808e18), SC_(0.206836903384823477636694016e27), SC_(0.10921919594473705616931168879025397857363831649357e-12), + SC_(0.140845240494850048e18), SC_(0.15238641357421875e4), SC_(0.44689988476580111818524171778021205499463465100743e-7), + SC_(0.245924553149120512e18), SC_(0.12432241406593107741605394588021265875441186132822e-25), SC_(0.10191370089476240496442184751961162333606213558986e-6), + SC_(0.10302131894484992e19), SC_(0.86229714468864e14), SC_(0.53078949279350852244495899285397248236587855360507e-8), + SC_(0.4173026783555223552e19), SC_(0.25325901731494375978251987705874090841683295149966e-25), SC_(0.25259325443772059313156731529761618841007461413987e-7), + SC_(0.38083625921602912256e20), SC_(0.14043506688e11), SC_(0.18721812477205878318873337191745626686057078380972e-8), + SC_(0.6036870791327383552e20), SC_(0.7191220191232e13), SC_(0.11151877475097208967247771680064286641451016014729e-8), + SC_(0.140771054246300745728e21), SC_(0.4364620208740234375e2), SC_(0.18544022482541756413624180462592298070565733208098e-8), + SC_(0.229345916576958775296e21), SC_(0.181080293376e13), SC_(0.66174853669110756842649598160820882183579693595045e-9), + SC_(0.486625867239520206848e21), SC_(0.2663514463837359985504355062296832912238642165903e-19), SC_(0.21326856610092306285181605511492710866111336973419e-8), + SC_(0.1241846768099137683456e22), SC_(0.16907547929525060340181807204941172504655995389999e-25), SC_(0.15507902235497089042906909015124525282864868106372e-8), + SC_(0.2085586588137791946752e23), SC_(0.1494682042368e13), SC_(0.85673852855596798336664141721336700864507390102108e-10), + SC_(0.140444835444342210428928e24), SC_(0.468889537015105749778432e24), SC_(0.17303641617108978771183397785345947512931840394585e-11), + SC_(0.277204771630374352584704e24), SC_(0.178649388253688812255859375e-1), SC_(0.56400743476075289901756964355291370430816192512748e-10), + SC_(0.292186842467552253181952e24), SC_(0.8000304500511383121995759616e28), SC_(0.17494456350937238152051998129209403413657779766045e-13), + SC_(0.404188410838900933656576e24), SC_(0.15307389070737408e17), SC_(0.14530172405497225203148631842861632557097281219397e-10), + SC_(0.432213410600102056165376e24), SC_(0.1959631583933896656101239768660304818581607833039e-18), SC_(0.75206449301552958256440392567562049430798996389352e-10), + SC_(0.48688847917066659823616e24), SC_(0.12212552573408426924125600686592708205013835254249e-21), SC_(0.76232145024480748870634232091696723820904729119412e-10), + SC_(0.1611108507323484384264192e25), SC_(0.11971012087915599989354498156046702206367626786232e-15), SC_(0.3694442785175160419076949350029585599009031148763e-10), + SC_(0.1626183676572159287754752e26), SC_(0.18501463382170069138510370976291596889495849609375e-11), SC_(0.10719260914536354712818827718038676299273171700718e-10), + SC_(0.18820064668587267094216704e26), SC_(0.302210201308383830109960399568080902099609375e-9), SC_(0.93936394693848721355885906623218887308774325852727e-11), + SC_(0.24925849334950778558742528e26), SC_(0.31317834636651731435069138009717243018286553235541e-24), SC_(0.11646010681447365669777654446715227593887198721003e-10), + SC_(0.9036469625899950631026688e26), SC_(0.690641880035400390625e1), SC_(0.31148497090217722784373888164259764652317411281318e-11), + SC_(0.7376334675354954747676196864e28), SC_(0.3832167254355459644063744e25), SC_(0.52109798218409315418287118331564136634721278594953e-13), + SC_(0.19445130267235161963321360384e29), SC_(0.27158976561908717618255837411567199524142779409885e-16), SC_(0.37530178368631060137545101809988924309836018928577e-12) + }; +#undef SC_ + + diff --git a/test/ellint_rd_data.ipp b/test/ellint_rd_data.ipp new file mode 100644 index 000000000..bb6b0bd86 --- /dev/null +++ b/test/ellint_rd_data.ipp @@ -0,0 +1,216 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Test data for RD, each row contains in order: +// +// x, y, z, RD(x, y, z) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 201> ellint_rd_data = { + SC_(0.60682196926171104626767727515008970841312337712241e-30), SC_(0.20031258624e11), SC_(0.10313978271484375e4), SC_(0.20551372495384815463856604017047221545095240191057e-7), + SC_(0.13810928266794127506964991575307193802925529863273e-29), SC_(0.2529551275074481964111328125e-3), SC_(0.7030536597341097149183042347431182861328125e-8), SC_(0.26827491422802771467722943731540343461246213838861e11), + SC_(0.44767214645416419053919245787147718165594030426536e-29), SC_(0.26553176031232e14), SC_(0.2085586588137791946752e23), SC_(0.10585138723496739834534066073267118675522211779171e-31), + SC_(0.60078474312334545656635060929362382794743178141472e-29), SC_(0.37131016039637643189053051173686981201171875e-8), SC_(0.32517390764125836699536241120728208287005145393778e-20), SC_(0.15139742233407639223792275679902886417433224652453e26), + SC_(0.61834249098451553748337548320711315606925672313013e-29), SC_(0.15125532639232e16), SC_(0.11666782739894188125617802143096923828125e-6), SC_(0.66117253645648417600031762235375783237535720054585e0), + SC_(0.80490202086679616440767211156605911864354431197377e-29), SC_(0.263248904192e12), SC_(0.297980882347216843954978816e27), SC_(0.10333434770883940055455846219131687005742728721005e-37), + SC_(0.15386248307178551019952166983379913769903023636025e-28), SC_(0.11083928e9), SC_(0.210290006361901760101318359375e-2), SC_(0.13550514102538012513935665942320904977981297554257e0), + SC_(0.27790564235134654243337661318427908127768828411199e-28), SC_(0.21656921296023725949679903214975529301966616912978e-20), SC_(0.16200692698475904762744903564453125e-4), SC_(0.85856403820113222790454310518632166416049096576362e9), + SC_(0.75787209056271355952485380019348769132814133643247e-28), SC_(0.3443290234375e5), SC_(0.87738095954812459262649215691458087947041111220869e-24), SC_(0.18256962837089036695688975681087926934231777165353e23), + SC_(0.83892250504513065845701871993405683214864787598623e-28), SC_(0.1116302655645995400846004486083984375e-5), SC_(0.5191992844812585795584e22), SC_(0.25853043071836854153543603031360043116599575432972e-30), + SC_(0.1287535325337014953720268054032123824574619620157e-27), SC_(0.13705567485615801022446745431989965211687137938007e-26), SC_(0.5078582763671875e0), SC_(0.25453721736248252436275234446728359554220261644493e3), + SC_(0.55263283825603576259688637477087526891102295303199e-27), SC_(0.14570690537170526341649579027404115549870766699314e-16), SC_(0.12941088853490731622934705547460304161866623869764e-26), SC_(0.36729174819285901249546490822632941293048355712711e36), + SC_(0.56127809703514701593677302775789618452802567406812e-27), SC_(0.9228809556838246663801328395493328571319580078125e-11), SC_(0.86422194270699415064029835775727406144142150878906e-12), SC_(0.10781910269701214744433782310389927085727282773814e19), + SC_(0.11649136528196886067987694424015483218044894522109e-26), SC_(0.36767340167168e14), SC_(0.4968523085117340087890625e0), SC_(0.99577870866168728614595399908281899687867831139901e-6), + SC_(0.25172518744793432127678756566548684645107602196601e-26), SC_(0.432213410600102056165376e24), SC_(0.1959631583933896656101239768660304818581607833039e-18), SC_(0.23283511871909436551998718906785080640182682915363e8), + SC_(0.28601321158264026057365024112938563807684451932578e-26), SC_(0.40558081566683637682324548023871102486737072467804e-15), SC_(0.208714828125e6), SC_(0.76237261396619453885730994908723652541092525168043e-6), + SC_(0.73955594308673193523198369636584653936223991005372e-26), SC_(0.15995684594580228399252064264146611094474792480469e-12), SC_(0.170420291286861873152e22), SC_(0.1687006236430131643441016712281856878753726523535e-29), + SC_(0.25325901731494375978251987705874090841683295149966e-25), SC_(0.2247014312744140625e3), SC_(0.275117858615052709715247104e27), SC_(0.18485690522734605390476411600907452658544362635922e-37), + SC_(0.34857664908449107348958795506280082952452713251912e-25), SC_(0.4151866912841796875e2), SC_(0.84098145009994339684283693509730169685090217512879e-22), SC_(0.54257544703354289137242893169458880766652554745316e22), + SC_(0.34919368622379363366113344149995795887854964367758e-25), SC_(0.253342638931968e15), SC_(0.7562174072265625e3), SC_(0.249241547815296223838694888499925239323224138633e-9), + SC_(0.43573388456807634241895548780677530339229715228289e-25), SC_(0.4951682e8), SC_(0.27826294978205525521980137859608542144911232096849e-25), SC_(0.68052511685869677076187126812000404571638179018885e22), + SC_(0.79820903020739723608895214436397557193018231780357e-25), SC_(0.64729720161775472443612539086288393264112528413534e-17), SC_(0.68450550546432e14), SC_(0.19125532541215326384896730405964498227631338694385e-18), + SC_(0.87440356429873925658498856170228582591246249688943e-25), SC_(0.897631640625e4), SC_(0.386145068359375e4), SC_(0.70431488067233168809120506088634745460689092194161e-5), + SC_(0.94440849851249091320281320378524601844016927998382e-25), SC_(0.339495296e9), SC_(0.27455182077952e14), SC_(0.12588696277491280442424745508482566976425259261561e-18), + SC_(0.14235380836999617679740726134029336127093459674064e-24), SC_(0.13978527726259656235898667313173260930711863658793e-24), SC_(0.2028485946357250213623046875e-1), SC_(0.27366411869676160015961055866442893198667542321359e5), + SC_(0.19953517994584643852448181812338140391502663839596e-24), SC_(0.20741449842688e14), SC_(0.4743499375e6), SC_(0.13886820075171731514726499953757541277555907027004e-11), + SC_(0.24754359063412526643006257824154938047573476511687e-24), SC_(0.542938704356835328e18), SC_(0.44974670432440498891960159215184658369128360699829e-26), SC_(0.10752772537029819829836280199737653161290081988757e18), + SC_(0.31317834636651731435069138009717243018286553235541e-24), SC_(0.446171086848e12), SC_(0.49623249953612003082525916397571563720703125e-9), SC_(0.90507658227268922734361508605808168072270615976688e4), + SC_(0.49794778812580822691949943719295546451682199506905e-24), SC_(0.1241846768099137683456e22), SC_(0.16907547929525060340181807204941172504655995389999e-25), SC_(0.78343915398198934519415679862427240727586271564883e15), + SC_(0.56225779987930131445265275562229206527363467582603e-24), SC_(0.59220483766176692878700381014733800100202643079683e-19), SC_(0.170295034922225631232e22), SC_(0.20048163240230817674563773499193885173665982026089e-29), + SC_(0.63171350201374448567926894124993295043246632758382e-24), SC_(0.34594001439795600424927311319582115491182941913878e-27), SC_(0.63795086741914598182229839666991088459324643622494e-23), SC_(0.30128244387255120033790929863955407018683622956366e36), + SC_(0.13769532587968157644195235343886302517048270122046e-23), SC_(0.2007315487162486533634364604949951171875e-6), SC_(0.484821384427736035149791860021650791168212890625e-10), SC_(0.13804448026385854623972866111304415486550268685946e15), + SC_(0.1809900535358029636909945199492450026643175498009e-23), SC_(0.4521496521192602813243865966796875e-5), SC_(0.8669365225699721122509799897670745849609375e-10), SC_(0.16273113459057256254769276696724703797987842259227e14), + SC_(0.23768503319901658006414734019219381138884883419848e-23), SC_(0.545301093941248e15), SC_(0.1237108193663516431115567684173583984375e-9), SC_(0.10384732803004085499895888503014146907429299054875e4), + SC_(0.30307608021550191165014175615417981032514993522398e-23), SC_(0.112407951746718026697635650634765625e-5), SC_(0.2082685879058432e16), SC_(0.78504137547976820009624215245629935490941195781392e-21), + SC_(0.62520772668534154026944814518561754825703991045316e-23), SC_(0.19445130267235161963321360384e29), SC_(0.27158976561908717618255837411567199524142779409885e-16), SC_(0.79176099627370786959440226480012961415298742955765e3), + SC_(0.13102694856934221302627057835335012189043046859638e-22), SC_(0.557648090759990083584e22), SC_(0.511986668338959560742296162061393260955810546875e-10), SC_(0.78466137092077764354738487755677479556614922112935e0), + SC_(0.22752379870925977520487843277428559665698237779452e-22), SC_(0.169495918280704e15), SC_(0.106314858496e12), SC_(0.21650121297190654998249828534683860885914030587266e-17), + SC_(0.25335998731998849030698736206528910198942927678445e-22), SC_(0.99404931640625e3), SC_(0.204871795654296875e3), SC_(0.42132166564785080959023378471888313620164092769291e-3), + SC_(0.34646067293379381351152691325339738961930358129848e-22), SC_(0.26973976499394821796760860105960760360263583912399e-23), SC_(0.238645943284598871514390339143574237823486328125e-10), SC_(0.35432548942737632785957707186626141058866961729541e18), + SC_(0.71863877935764437100797607417958061393203905709015e-22), SC_(0.174722980453023744e19), SC_(0.13073324703744e14), SC_(0.1736004266338139270794293208784155064732837114576e-21), + SC_(0.96362472102334232055222076765519517715929964651878e-21), SC_(0.229194643907248973846435546875e-3), SC_(0.354709317473833607436972670257091522216796875e-9), SC_(0.55865475580945127826780252757531774517543358031385e12), + SC_(0.27589042212186362242123678200494962808875243354123e-20), SC_(0.16342684e8), SC_(0.10564504593401150001064081607182743027806282043457e-12), SC_(0.70232843197284835279286086968072241001475849391442e10), + SC_(0.10233203223084091273258880352287070181205308472272e-19), SC_(0.85809811133878005628972118756792042404413223266602e-13), SC_(0.231948544e9), SC_(0.21282358830663000454676497251299241238551176927446e-10), + SC_(0.18673345450030310831705831391483241255002667458029e-19), SC_(0.16140768350376832622251404282443946390469477480956e-24), SC_(0.35751782069791464758326094786154009108614104661683e-22), SC_(0.57362515961254887975882907105995424791809261862104e33), + SC_(0.21109476364529939751075359117074570214356299402425e-19), SC_(0.8756801014807582267041677127782781970980266472715e-25), SC_(0.19232578752860259808180970650021732008816410797181e-22), SC_(0.10040849239749431240730130421363049484424180456536e34), + SC_(0.48988976909583188869227858043553514022505623870529e-19), SC_(0.20838384443777613341808319091796875e-4), SC_(0.15278292e8), SC_(0.70563639547351817695354788729725173202298905165509e-9), + SC_(0.82997499668329372719087076888666576479636205476709e-19), SC_(0.13155479315039595949803718770027355301939497866925e-23), SC_(0.1327809695148788465823841420387907419353723526001e-14), SC_(0.32382452643409713657086228689471450756020929884496e24), + SC_(0.16677509527778160624086499150275919589603290660307e-18), SC_(0.50082130538252574789989333416135111329551950562359e-29), SC_(0.27393523857242675896004658903787332135948417999316e-20), SC_(0.26379890286497467800536742716267974869467674676907e31), + SC_(0.30420727664434581210352358596193944606511649908498e-18), SC_(0.28656053473241627216339111328125e-4), SC_(0.94969911521617292598785838378394608128019171999767e-19), SC_(0.21152520435266024826733886337057191990575481859773e22), + SC_(0.75868695590633990953827528458397466692986199632287e-18), SC_(0.930611462144e12), SC_(0.18147922618313051311153033283257685840533790511131e-24), SC_(0.83768344778024722769204816337111831433373325848511e16), + SC_(0.79597584432992412060764095271814255738718202337623e-18), SC_(0.75974287571611502022633594876763844865744160884209e-30), SC_(0.20657736771171195551744e23), SC_(0.47403170903497016250215067728483228381506772219895e-31), + SC_(0.12784377253954858878954355810853016350847610738128e-17), SC_(0.687874899968e12), SC_(0.2496727752685546875e2), SC_(0.14487562897240575462420431915733354323986381404974e-6), + SC_(0.22468750405760049766485005051652734664457966573536e-17), SC_(0.20721947294077835977077484130859375e-4), SC_(0.33333534375e6), SC_(0.1891939096717128299814570834532131624242218004607e-6), + SC_(0.33297255999405977634352134242323728585688513703644e-17), SC_(0.31191365320704e14), SC_(0.2293932139873504638671875e0), SC_(0.23416581491449832804939246015659888605843645930834e-5), + SC_(0.35736448257653877024582131372021365223190514370799e-17), SC_(0.1626183676572159287754752e26), SC_(0.18501463382170069138510370976291596889495849609375e-11), SC_(0.40153851788485548350521938534047362493332593188358e0), + SC_(0.46871312598868006987253009842930850936681963503361e-17), SC_(0.3093168493023691324522496e26), SC_(0.16793731632787596740420928687663819571897812904515e-26), SC_(0.60797270634828688834833132685695209121001352766598e10), + SC_(0.57842544071306897015280826246375056598481023684144e-17), SC_(0.29870528793496387010009129880927503108978271484375e-12), SC_(0.2262512535863296e17), SC_(0.29646119268293442517889863887012770015886764481583e-22), + SC_(0.152616857880340486461855087352290638591512106359e-16), SC_(0.2803833618070566221119488e25), SC_(0.130162216009921394288539886474609375e-4), SC_(0.13764477533975189296577420989460030210624358668897e-6), + SC_(0.27022364375023134885640124780437076879024971276522e-16), SC_(0.27506543358959030582888269221280574638246675400223e-29), SC_(0.10302131894484992e19), SC_(0.11533202298793762115879808476821158493089208267767e-24), + SC_(0.51905646303429040628284185654450766378431580960751e-16), SC_(0.15583587e8), SC_(0.46741176605224609375e2), SC_(0.16258625638384341129980088810715602413277009050755e-4), + SC_(0.54374770505732477601443242143375300656771287322044e-16), SC_(0.4562802734375e3), SC_(0.10197021348467909816516131089894163913918803398168e-29), SC_(0.18861228040658158783485684274667884467513804993808e23), + SC_(0.60475637804894883005346617466102543403394520282745e-16), SC_(0.56145323516737172227849140410116390853545453865081e-18), SC_(0.64836257251954521052539348602294921875e-7), SC_(0.19426856083161503849129240968279840607620575171493e13), + SC_(0.17055543082513291604229710429763144929893314838409e-15), SC_(0.6943710148334503173828125e-1), SC_(0.61840874921367523613102701318666731822304427623749e-15), SC_(0.12070723069489973584177449356829135215953130632198e17), + SC_(0.31354745663454523796342954256033408455550670623779e-15), SC_(0.18973853599391077295877039432525634765625e-8), SC_(0.15741248433312655941040958396115456707775592803955e-13), SC_(0.38340329268483399676355291918194933462116017467071e19), + SC_(0.92657114094649205629505850367877428652718663215637e-15), SC_(0.32666126748015500425026402808725833892822265625e-10), SC_(0.62660384591791979530528422515089914668351411819458e-14), SC_(0.60469431091148756507917001500985998650828444618344e20), + SC_(0.10318525717298732830018437311991874594241380691528e-14), SC_(0.14367766698608619435617583803832530975341796875e-9), SC_(0.5059831664766534231603145599365234375e-6), SC_(0.37240456346135514582020163258162977421115936310552e11), + SC_(0.63024210653626119155168439078806841280311346054077e-14), SC_(0.83430262439221944230360872296614616061560809612274e-15), SC_(0.38344456302173223195286237326130017242619817813276e-26), SC_(0.21127757229591123502084107843796645070269626006089e29), + SC_(0.68559452379320356268932457055598206352442502975464e-14), SC_(0.322791595458984375e3), SC_(0.86205957643638764405225050069248027284629642963409e-15), SC_(0.5070464522925097491100578039956621014507338348222e14), + SC_(0.96442290460109492133966568871983326971530914306641e-14), SC_(0.9353629648877212663808e22), SC_(0.52655215867828667928533109554578572897298727184534e-17), SC_(0.13450724270522347382379901409784950912908729078726e6), + SC_(0.10676147262794234704674778413391322828829288482666e-13), SC_(0.43214794983836329352138753913566138198376620493946e-21), SC_(0.13713993780991436762807365477498389161326031171484e-19), SC_(0.17979661672341056120541486805388070626904785412941e28), + SC_(0.40149480284466451673885956097365124151110649108887e-13), SC_(0.256623141467571258544921875e-1), SC_(0.33872525312e11), SC_(0.69010795178555815328380066886327027775732548313008e-14), + SC_(0.5554841051654164918449652077470091171562671661377e-13), SC_(0.12544762676037794895951386908716784773787367157638e-18), SC_(0.20581069188704517551523841788208013525718342862092e-18), SC_(0.34730610212848338186315105471341205240679027355204e26), + SC_(0.19550562611967553516834072979690972715616226196289e-12), SC_(0.18799281123449514653822470500968856016443808698568e-21), SC_(0.205092546875e6), SC_(0.68260136417276461849255990158184122817857291611521e-6), + SC_(0.35943559868918673050330880869296379387378692626953e-12), SC_(0.35023133106665160704e20), SC_(0.2881296007168e13), SC_(0.17593641420990612480757675345235956768570657023439e-21), + SC_(0.15664042328847327389951260556699708104133605957031e-11), SC_(0.40672445e7), SC_(0.45362430968070144e18), SC_(0.12868159051971997720302525310429992610797966319908e-24), + SC_(0.164856496509546701645376742817461490631103515625e-11), SC_(0.12800646827237915914565746788866817951202392578125e-10), SC_(0.130841693878173828125e2), SC_(0.88146998265763878715593876508509714886416387301537e0), + SC_(0.16011657277825719347674748860299587249755859375e-10), SC_(0.389046929776668548583984375e-1), SC_(0.18785430908203125e2), SC_(0.12826163996780515895628163745276639196285356189002e0), + SC_(0.1943433088069657088681196910329163074493408203125e-10), SC_(0.22031295035060773623229295812958821278778470675874e-24), SC_(0.39424006729538510485078006695403018966317176818848e-13), SC_(0.17208935846814855474858783681943464492271379781251e20), + SC_(0.55001718457514670035379822365939617156982421875e-10), SC_(0.74622654356062412261962890625e-2), SC_(0.11046793904970209077021081611746922135353088378906e-11), SC_(0.39022957778049595212041111646106992003089162296055e13), + SC_(0.755542572949963187056710012257099151611328125e-10), SC_(0.140444835444342210428928e24), SC_(0.468889537015105749778432e24), SC_(0.11133716624562663818120719842466773968408193063679e-34), + SC_(0.573736336217933740044827573001384735107421875e-9), SC_(0.141051064161956674070097506046295166015625e-7), SC_(0.2359947e8), SC_(0.46393758660551432981135887835476128122204846147684e-9), + SC_(0.2402602117257401914685033261775970458984375e-8), SC_(0.42540803535525434114020215409929237537767221510876e-19), SC_(0.4942538125e6), SC_(0.14560752605725533180948291219479606724490318886823e-6), + SC_(0.1000261828920656625996343791484832763671875e-7), SC_(0.56146556854248046875e2), SC_(0.11031288903647689304752638145772731734228777611406e-22), SC_(0.12052848527398278799832911416294667755106492294105e16), + SC_(0.11262596188998941215686500072479248046875e-7), SC_(0.15615465734711286849289990641409531235694885253906e-12), SC_(0.24870398826241113884932236596184834676037667122728e-20), SC_(0.14342615136271148815337084129716804758860091713852e22), + SC_(0.199429788239058325416408479213714599609375e-7), SC_(0.3046932220458984375e1), SC_(0.18625525552055897944743393684375905872507558290159e-28), SC_(0.28199445975752883777683066688026201569387335503589e19), + SC_(0.3125807523929324815981090068817138671875e-7), SC_(0.82854125568e11), SC_(0.58830391620982291911135882706044579926359106014644e-24), SC_(0.76856782244221849714163500215346774357484772577875e11), + SC_(0.43614054590079831541515886783599853515625e-7), SC_(0.84901359375e5), SC_(0.18469835205078125e4), SC_(0.54623902209860442229151811145622184504642829732335e-5), + SC_(0.108193802361711277626454830169677734375e-6), SC_(0.3542151123046875e4), SC_(0.23456829198204715014597354638681281358003616333008e-13), SC_(0.10001144380703963441897324290469056535051202600889e10), + SC_(0.66861986169897136278450489044189453125e-6), SC_(0.1611108507323484384264192e25), SC_(0.11971012087915599989354498156046702206367626786232e-15), SC_(0.26417880833139837075003994904446957544591390247203e0), + SC_(0.2085087317027500830590724945068359375e-5), SC_(0.23632697338789035110002273443186027179763186722994e-16), SC_(0.503470934927463531494140625e-2), SC_(0.35960301930045747424111739376688179190687610273877e5), + SC_(0.23743823476252146065235137939453125e-5), SC_(0.12017452733891625937800995416182558983564376831055e-12), SC_(0.355727936e9), SC_(0.7470065785959632348025349187216488890857914570702e-11), + SC_(0.14422212188947014510631561279296875e-4), SC_(0.3083335169004797952e20), SC_(0.25554565784928256e17), SC_(0.2111170543500163253881802959081230566812418255998e-25), + SC_(0.759344620746560394763946533203125e-4), SC_(0.22148209406780902835423848339554340607932845033396e-29), SC_(0.19855378956352178823888896e26), SC_(0.11615021168805924887771805758470812549280791431838e-35), + SC_(0.13287944602780044078826904296875e-3), SC_(0.9115189375e6), SC_(0.179409878467662494683889664e27), SC_(0.29650242659037947615123357258080617286726369971703e-37), + SC_(0.34799534478224813938140869140625e-3), SC_(0.131195640625e6), SC_(0.399027378608056683915492826862951233901632974721e-21), SC_(0.22226623207731501805303523899997800479877319903756e11), + SC_(0.40748735773377120494842529296875e-3), SC_(0.57247653448122368e17), SC_(0.147901005859375e5), SC_(0.84761610791413708184102124441300162758244096872165e-12), + SC_(0.8751563727855682373046875e-3), SC_(0.423289281913088785772479250432e30), SC_(0.9735179031543808e18), SC_(0.47365123725509543439971727739170068342860121165597e-32), + SC_(0.27153925038874149322509765625e-2), SC_(0.2655967255122959613800048828125e-3), SC_(0.9400097640298840064e19), SC_(0.25931933912240334891174482201662724425930654998897e-26), + SC_(0.4837694466114044189453125e0), SC_(0.2555249786376953125e2), SC_(0.14830236860416e15), SC_(0.2483720376425113862422543136112213202436935879191e-19), + SC_(0.15793964862823486328125e1), SC_(0.21153786174505042274269802208549073334284835448335e-27), SC_(0.12200210459945015628591136191971600055694580078125e-11), SC_(0.19566283540029067278121530833386806424315313727408e13), + SC_(0.2704489231109619140625e1), SC_(0.80231539790356115235923917250460135619505308568478e-17), SC_(0.48408881335894016e17), SC_(0.53792671402241349248545063015804106306968516352921e-23), + SC_(0.23412235260009765625e2), SC_(0.14768327260674323415826432e26), SC_(0.345189679104e12), SC_(0.22614876588635814725794181088071280690286615301413e-23), + SC_(0.316759090423583984375e2), SC_(0.153310129036299258586950600147247314453125e-7), SC_(0.15191832576e11), SC_(0.16631236244909872192077961607934570866900493512459e-13), + SC_(0.3255878448486328125e2), SC_(0.20426069933899679481125376462984716200236491481616e-28), SC_(0.3943929741312e13), SC_(0.50353928117824032357527410766164816007624085670378e-17), + SC_(0.43738616943359375e2), SC_(0.12385733574656e14), SC_(0.18116829833984375e4), SC_(0.40724319301281764660058342651643062705390654723387e-9), + SC_(0.4479792022705078125e2), SC_(0.11175146230483004594624674155056709423661231994629e-13), SC_(0.13292268387650598312620966562043814396254504117678e-22), SC_(0.11629236230289651656345450088745089161234800251595e19), + SC_(0.482386627197265625e2), SC_(0.371529138647019863128662109375e-3), SC_(0.12312668720852486471439889495482766790246387245134e-18), SC_(0.6386325930109877551531089847402324568981044656055e11), + SC_(0.10465634918212890625e3), SC_(0.60640822994173504412174224853515625e-5), SC_(0.24925849334950778558742528e26), SC_(0.65811829666888908826875876066862188512661412630752e-36), + SC_(0.50384063720703125e3), SC_(0.404188410838900933656576e24), SC_(0.15307389070737408e17), SC_(0.30826772490126137669951644592625777899396040552077e-27), + SC_(0.53687359619140625e3), SC_(0.22982227952519826732488902867652779863117686563745e-26), SC_(0.33525770516606100656031852480509769520722329616547e-15), SC_(0.38619382633246480698279035386804404841962200896354e15), + SC_(0.7166851806640625e3), SC_(0.1690176772380537639327398519769468654416755271086e-22), SC_(0.47753922915140458067828621580019898829050362110138e-15), SC_(0.23462068136128667108162025031768655357099942719956e15), + SC_(0.82290283203125e3), SC_(0.36223742228003175114281475543975830078125e-7), SC_(0.12701055793371805794043341177064064973639689881679e-22), SC_(0.15418083695250383678552202189981589244172193225686e15), + SC_(0.11206973876953125e4), SC_(0.159823103248039936e18), SC_(0.10259405824e11), SC_(0.73119908229313550917582888390408170817531581243981e-18), + SC_(0.3524259033203125e4), SC_(0.38758790625e6), SC_(0.4173026783555223552e19), SC_(0.53840141339823144164749266297779626405026075250354e-26), + SC_(0.503876328125e5), SC_(0.72534660121208050493385086597564193056086878641509e-19), SC_(0.12543467133030450355590801336802542209625244140625e-10), SC_(0.10653900989744106753051987452865655428050550636145e10), + SC_(0.106680765625e6), SC_(0.56570606632127019614208e23), SC_(0.34145346314045075233544504794608567192597259332132e-24), SC_(0.66087148559582045987244548210211279428436117754187e-1), + SC_(0.22300921875e6), SC_(0.22960517578125e4), SC_(0.46933254639405441853106942079784734541910233270121e-28), SC_(0.19352125587645692677443985028630474308382325346085e11), + SC_(0.41534478125e6), SC_(0.1918984889984130859375e1), SC_(0.44006012e8), SC_(0.28082710296947187740954711717710296711776400921903e-10), + SC_(0.2068948375e7), SC_(0.20907895301679711719256005153511068783700466156006e-13), SC_(0.893892793119022144310292787849903106689453125e-9), SC_(0.23220185234104289565189456830426781269822420101649e7), + SC_(0.47946235e7), SC_(0.22622955483503716568203720238550147314526839181781e-18), SC_(0.85913526136044117637383110697157917456934228539467e-16), SC_(0.1516874379835050342838340936028885659767370366596e14), + SC_(0.14619622e8), SC_(0.815536015625e5), SC_(0.230844914913177490234375e0), SC_(0.57086613986241415694637371690066831951886129801915e-5), + SC_(0.123742392e9), SC_(0.10912435391066719332460695603753930316446923640128e-25), SC_(0.701712293691392e16), SC_(0.4753049899425421501464028407935694092644489233471e-22), + SC_(0.2606888e9), SC_(0.38372283060996710610105527722302198867510014679283e-18), SC_(0.738515392e9), SC_(0.16899537620100468885521495060585278478833440423956e-12), + SC_(0.670079424e9), SC_(0.14044194233643483429544463937103636612564738772591e-24), SC_(0.11511007425024644135191920213401317596435546875e-10), SC_(0.10068035345075574011893714808378880691913968655047e8), + SC_(0.911282624e9), SC_(0.1114427401123063379525632e25), SC_(0.53440565956804888993886271109090557729359716176987e-17), SC_(0.40722393361131223694875712619630727084056015372761e-7), + SC_(0.1161228928e10), SC_(0.18421718410258806513944641963201765549884569850292e-21), SC_(0.22427656323344421104955380977729814673260477775329e-21), SC_(0.20591436627603819494995715646309833117702290434193e18), + SC_(0.1535589888e10), SC_(0.29343589097392396787046010830923847834128537215292e-17), SC_(0.988066171875e5), SC_(0.77469678981488935733995438768613592415271273150107e-9), + SC_(0.1910448768e10), SC_(0.19696330564073048658818435820590984305819001943432e-28), SC_(0.32238440243425309843308409068705787565729120602853e-24), SC_(0.21125068341742162462647544763682405635604368927636e21), + SC_(0.2606333696e10), SC_(0.12266837021255184297929829995155159849673509597778e-13), SC_(0.14248488e9), SC_(0.39627043221972042336166285233706057104657589115659e-12), + SC_(0.3957605632e10), SC_(0.55799657429356219751070966594852507114410400390625e-13), SC_(0.45080659638616064e17), SC_(0.26674037369791867164639711571859268973615887454244e-23), + SC_(0.7560605184e10), SC_(0.62840314285494969226419925689697265625e-7), SC_(0.3143396352e11), SC_(0.68666153248448673089341550512928561615491669715129e-15), + SC_(0.35244982272e11), SC_(0.181061646295454711808e21), SC_(0.18019738841891322915192832e27), SC_(0.90432439304473156212717626924185472610810741907204e-38), + SC_(0.732471296e11), SC_(0.4801772534847259521484375e-2), SC_(0.45398853613796871007741958773072074733645399780696e-27), SC_(0.75076274709327970844147190347182778322685039704522e10), + SC_(0.11738591232e12), SC_(0.761073704058645716941100545227527618408203125e-10), SC_(0.1885123992906301282346248626708984375e-5), SC_(0.46155407631902785095848397106563785922944194045686e1), + SC_(0.191893782528e12), SC_(0.174726296875e6), SC_(0.24141449950396592978032251394348434159198291126813e-20), SC_(0.33344943919892270945971542443654069589927768202531e3), + SC_(0.210419040256e12), SC_(0.15455189208984375e4), SC_(0.90718428578382195030384883514111792400934880018881e-30), SC_(0.17466014425028305478165893754999050226185977330753e9), + SC_(0.217494208512e12), SC_(0.140845240494850048e18), SC_(0.15238641357421875e4), SC_(0.4390528931099285855029463157097120990069377534872e-15), + SC_(0.572994879488e12), SC_(0.4479686882443445386870784e25), SC_(0.3949284499458758322165682321378970124179942071882e-27), SC_(0.94224283649343820821727631166828903159482878092905e-4), + SC_(0.64654147584e12), SC_(0.24521487702843957217058619392e29), SC_(0.921704585926541312e18), SC_(0.20767896690791054519935065644432011180835481458451e-31), + SC_(0.1494682042368e13), SC_(0.6869200625e6), SC_(0.12406291034494643099606037139892578125e-5), SC_(0.26581052905672381844740821940931122853787851217105e-5), + SC_(0.3518738464768e13), SC_(0.98092148011034996368806559985387139022350311279297e-13), SC_(0.8399241342592483328e19), SC_(0.95255153845747286192062451983557134108999906775529e-27), + SC_(0.395945312256e13), SC_(0.516478977703936e15), SC_(0.68443482659479816375487801854053577534347380106894e-25), SC_(0.2535778278917846265208084888613213161043251220247e0), + SC_(0.589840515072e13), SC_(0.11837831633021164326650292224515978315498715423004e-25), SC_(0.27219574150194603134877979755401611328125e-7), SC_(0.45380850193684529549916365876123433705384130624401e2), + SC_(0.51712110886912e14), SC_(0.156551992965379627797503279104e30), SC_(0.47173579223453998565673828125e-2), SC_(0.15351343966945931206569033370561284731402195178945e-19), + SC_(0.86229714468864e14), SC_(0.14452686009774895481427847698796540498733520507813e-13), SC_(0.669478515625e5), SC_(0.48256534943951386340918361637227021878577560800017e-11), + SC_(0.8952989351936e14), SC_(0.5821022205054759979248046875e-4), SC_(0.16930462580604928e17), SC_(0.41100941381473513911311626770434246282405013362988e-23), + SC_(0.3135611338752e15), SC_(0.2348838144e10), SC_(0.111468466401642984919817536137998104095458984375e-9), SC_(0.3310987818594775551634409929713950668720513185194e-6), + SC_(0.323813657018368e15), SC_(0.156708486328125e5), SC_(0.16682115902222024485246354430501014576293528079987e-14), SC_(0.32606324691495083414901689521365944975222646764363e-1), + SC_(0.95759886188544e15), SC_(0.4659874708323741288040764629840850830078125e-8), SC_(0.727262651482112e15), SC_(0.10816915862847177055794166008038797474693843131559e-21), + SC_(0.1551973144854528e16), SC_(0.10139344880747031860591903938868807433237861914677e-19), SC_(0.7740245504e10), SC_(0.9838251718134408598992601115526735906681602754507e-17), + SC_(0.183459460939776e16), SC_(0.58535432060362684618705258305616519358052915120161e-26), SC_(0.151380081803154098452068865299224853515625e-7), SC_(0.462681848842073289149702267338964557315073422797e1), + SC_(0.3762704347037696e16), SC_(0.10164524532769642241629852708355797252185587220552e-24), SC_(0.27152649027584e16), SC_(0.14699154732025769283571926131601897366775031030076e-22), + SC_(0.6551729407524864e16), SC_(0.25762003497220575809478759765625e-3), SC_(0.156271296e9), SC_(0.23717202528322099316627229293548821703600369558169e-15), + SC_(0.6565417468297216e16), SC_(0.174148595112480631422976e24), SC_(0.187841462272e12), SC_(0.20361865097500372485155107117802705969273207578608e-24), + SC_(0.9007602981666816e16), SC_(0.25765624e9), SC_(0.1591604150272e14), SC_(0.19726797826086290726900599041820484051327569566171e-20), + SC_(0.18448819419086848e17), SC_(0.55460104261295954577309919031335994077380746603012e-16), SC_(0.154132149174272e16), SC_(0.13580314631955561794382801022694745071290705109491e-22), + SC_(0.41172763385266176e17), SC_(0.69560673828125e4), SC_(0.747194576263427734375e1), SC_(0.62793115296093377148750971856138022413722904539364e-10), + SC_(0.59877638017122304e17), SC_(0.53512100536178474827209150532780768116936087608337e-15), SC_(0.60865414403362585004788968196643994088311036341765e-26), SC_(0.67932276518492118905647587709216361710433902821356e13), + SC_(0.11384566732292096e18), SC_(0.58757351632535552e19), SC_(0.273440826416015625e3), SC_(0.2218197410675072553866425364806973969075261727874e-18), + SC_(0.128395461743607808e18), SC_(0.206836903384823477636694016e27), SC_(0.53310077419155277311801910400390625e-5), SC_(0.25213187167619695580929289478697105906035912959449e-18), + SC_(0.245924553149120512e18), SC_(0.12432241406593107741605394588021265875441186132822e-25), SC_(0.11698430441812742785454260394458960094979845402414e-30), SC_(0.15814359980865698013833243813020147773628412638471e21), + SC_(0.304309702915784704e18), SC_(0.530327327997952e15), SC_(0.10366431646728266850195727608041629252966231433675e-18), SC_(0.73346046074259210722247465233594194982314902683682e-6), + SC_(0.351564170056957952e18), SC_(0.39915753210320770987303899714279126384431587576396e-26), SC_(0.21695373623974084952946051325821291927687106275468e-28), SC_(0.16012914574357507234163722206932362300988672115721e20), + SC_(0.805980574786256896e18), SC_(0.7298279296875e4), SC_(0.135008262029312e15), SC_(0.24742374685179778771251059396546742229781662198914e-22), + SC_(0.1429457475085533184e20), SC_(0.14041162752e11), SC_(0.16802999673239973138530304e26), SC_(0.32121431604673931143271876891436876644565038320042e-36), + SC_(0.221162365880631296e20), SC_(0.4426536e8), SC_(0.89961878334825112180062577083017316681434749625623e-18), SC_(0.10108911246070441761891693525755853616606808949316e-3), + SC_(0.38083625921602912256e20), SC_(0.14043506688e11), SC_(0.13209346463532805303342509972708285204134881496429e-15), SC_(0.35692228203582006473843647627664557137685858827968e-6), + SC_(0.57692237126522896384e20), SC_(0.63429242800339125096797943115234375e-5), SC_(0.31824542466005171886425636864e29), SC_(0.55222293820695175519018810756922011735863676741191e-41), + SC_(0.6036870791327383552e20), SC_(0.7191220191232e13), SC_(0.68897207938789506442844867706298828125e-6), SC_(0.17346553888445511526875601632160113537907688737997e-12), + SC_(0.113674073964877447168e21), SC_(0.183615109375e6), SC_(0.404058591811917722225189208984375e-4), SC_(0.10330175955957541532693528313466256772187391201874e-9), + SC_(0.140771054246300745728e21), SC_(0.4364620208740234375e2), SC_(0.10711124272997777587041261201942927950011067906889e-29), SC_(0.36980588192743195268081186143904811424184826509079e5), + SC_(0.486625867239520206848e21), SC_(0.2663514463837359985504355062296832912238642165903e-19), SC_(0.4719122320543576863524228422930565122003386188676e-26), SC_(0.12125027886646699970512476707156771853870273067952e14), + SC_(0.1146824826980038344704e22), SC_(0.123134608e9), SC_(0.36464645756234167146109012677852867501115952109103e-20), SC_(0.13220462423972425935917229500420846663825040326569e-3), + SC_(0.317074383652647862272e22), SC_(0.89612589356621110444032e24), SC_(0.2342108211970048e16), SC_(0.11619224315234818923589971905969099280156494799642e-29), + SC_(0.32148523727519219712e22), SC_(0.60515264161661452673922225736467336588411333742066e-25), SC_(0.787468255232e13), SC_(0.67190469656717598102688231195715810897773628309487e-23), + SC_(0.13571258581209030066176e23), SC_(0.2301062643527984619140625e-1), SC_(0.14359374149799930542314996273489668965339660644531e-11), SC_(0.14166931188327778230186785722742287698171547666982e-3), + SC_(0.20821377315431516209152e23), SC_(0.31614863423832064e17), SC_(0.64014885e7), SC_(0.4621406894160877827384001215215505228565154941349e-22), + SC_(0.55817784918415767502848e23), SC_(0.229345916576958775296e21), SC_(0.181080293376e13), SC_(0.62303863493181421011759609358700084332302564282572e-27), + SC_(0.210179409744077661405184e24), SC_(0.775467603201754089842406683474462128114628768627e-26), SC_(0.1351436267417501696e19), SC_(0.48419735649202961080115073168670433174544124355214e-29), + SC_(0.277204771630374352584704e24), SC_(0.178649388253688812255859375e-1), SC_(0.1626075136e10), SC_(0.35041190711483516523923271898554740595024898229225e-20), + SC_(0.286204729096914532827136e24), SC_(0.18205785323743839398957788944244384765625e-7), SC_(0.6443661400749065109504e22), SC_(0.85231956001222048244789008910270023125100724496553e-33), + SC_(0.292186842467552253181952e24), SC_(0.8000304500511383121995759616e28), SC_(0.12346179962158203125e2), SC_(0.17659213899312742611429666455779433659781019844976e-25), + SC_(0.393077021751861389033472e24), SC_(0.85326592849126535957377352366076878413243909232699e-28), SC_(0.11113272845378330266896682587685063481330871582031e-11), SC_(0.43056670697313120117799317169619739766527357451448e1), + SC_(0.48688847917066659823616e24), SC_(0.12212552573408426924125600686592708205013835254249e-21), SC_(0.1269279595243605041993096779751049041351507185027e-17), SC_(0.33543623251839576830546760936703173774870805103267e7), + SC_(0.6959596827501176488460288e25), SC_(0.56396991515163736959758100092886750224006554485772e-29), SC_(0.164767579074269378772992e24), SC_(0.67539896107197358427396075668773079100885280216386e-35), + SC_(0.18820064668587267094216704e26), SC_(0.302210201308383830109960399568080902099609375e-9), SC_(0.33895318467300131244893458519885746926814107382597e-21), SC_(0.21606569536016446005127644096871253975571307187249e4), + SC_(0.66192871423119660955992064e26), SC_(0.65104581211365760324995297566040105840304400052279e-28), SC_(0.700861590985368820838630199432373046875e-9), SC_(0.5261182706092194133617741726329224767119336720926e-3), + SC_(0.9036469625899950631026688e26), SC_(0.690641880035400390625e1), SC_(0.1238969862461090087890625e0), SC_(0.3008677996342580895031853541445446250478520113248e-12), + SC_(0.351293559140227787146657792e27), SC_(0.92746285056e12), SC_(0.7325884342193603515625e1), SC_(0.61405412064015393151121436181259576895276598600887e-19), + SC_(0.48555353730121618377670656e27), SC_(0.41366469991877353664505423235416110752209856263632e-29), SC_(0.1080339869874636584075679427013641468012674864323e-29), SC_(0.42620833187540100646142696579397880259804927864477e17), + SC_(0.3196617981363007079661436928e28), SC_(0.357227936120807498809881508350372314453125e-8), SC_(0.190531306287766710738651454448699951171875e-7), SC_(0.19434029391873011348314670331341701583590531402094e-5), + SC_(0.4932620110638545248192561152e28), SC_(0.39087764918804168701171875e-1), SC_(0.37496308203098109226999139757157200603110425163322e-21), SC_(0.11157521852141686174291251786184006118424156415823e-1), + SC_(0.516425012058796509045456896e28), SC_(0.3000732163818651513042917353020530062720192427143e-28), SC_(0.28816120624542236328125e1), SC_(0.14487121655367107180122470700505306007568660707101e-13), + SC_(0.6724360036363488659828113408e28), SC_(0.39914275e7), SC_(0.5617260831058956682682037353515625e-4), SC_(0.24432489934783656632287527852861417375460919006681e-14), + SC_(0.7376334675354954747676196864e28), SC_(0.3832167254355459644063744e25), SC_(0.86986000872677090266227306614155168063007295131683e-15), SC_(0.60499813791534240550577796444003132563462392194689e-18), + SC_(0.1240879712420966629044649984e29), SC_(0.35030939907262229474824187104684165838808240778235e-22), SC_(0.23553908385443359223970771765266363217961043119431e-16), SC_(0.11419947735685798535870442055414653068651348519666e4), + SC_(0.13622372113626680630865559552e29), SC_(0.5065993732313771067901500902430633743733778828755e-18), SC_(0.1568245533434264871175400912761688232421875e-11), SC_(0.1638076044611111663076389515306947175644793927095e-1), + SC_(0.21413030105610117647127543808e29), SC_(0.56796892335439872e17), SC_(0.44545595303495604738852208133448318250202646595426e-19), SC_(0.40758436912717219001309081424162965116278950127384e-12), + SC_(0.240611655851932728105631744e29), SC_(0.15126033260477136128765155826087636266509091563425e-30), SC_(0.147685372829437255859375e1), SC_(0.13095601170876630580259197493117307804833462447144e-13), + SC_(0.61731988312258099732254031872e29), SC_(0.47155488899394500240213479534565823420775918905622e-28), SC_(0.4463543296e10), SC_(0.27051189723173151307626070067360099122375990020391e-23) + }; +#undef SC_ + + diff --git a/test/ellint_rf_data.ipp b/test/ellint_rf_data.ipp new file mode 100644 index 000000000..56d8b4964 --- /dev/null +++ b/test/ellint_rf_data.ipp @@ -0,0 +1,415 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Test data for RF, each row contains in order: +// +// x, y, z, RF(x, y, z) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 401> ellint_rf_data = { + SC_(0.60682196926171104626767727515008970841312337712241e-30), SC_(0.20031258624e11), SC_(0.10313978271484375e4), SC_(0.69081557947567857896297308369623231790841946303168e-4), + SC_(0.13810928266794127506964991575307193802925529863273e-29), SC_(0.2529551275074481964111328125e-3), SC_(0.7030536597341097149183042347431182861328125e-8), SC_(0.41696748464385961137940994051143282877208328256968e3), + SC_(0.14532352659780781796355564562931230420316401288775e-29), SC_(0.62687453931329231730011467674071804187172354186889e-30), SC_(0.26256847716031594952568184453411959111690521240234e-12), SC_(0.40492940437281068910143789937423107620726714449588e8), + SC_(0.21161119528926488937912315394561157356168786172334e-29), SC_(0.142681614079265273176133632659912109375e-6), SC_(0.1414351724088191986083984375e-1), SC_(0.60023495609336663619731475310462707680628111629781e2), + SC_(0.43727979838159528482554219689363356095561935561375e-29), SC_(0.7798122348544e13), SC_(0.8588943201947652980736e22), SC_(0.12728379993876013222161727164717897397898227135914e-9), + SC_(0.44767214645416419053919245787147718165594030426536e-29), SC_(0.26553176031232e14), SC_(0.2085586588137791946752e23), SC_(0.80511870764678968189176930995818394321307940480734e-10), + SC_(0.60078474312334545656635060929362382794743178141472e-29), SC_(0.37131016039637643189053051173686981201171875e-8), SC_(0.32517390764125836699536241120728208287005145393778e-20), SC_(0.25056280362165428100075135368904610528487634651412e6), + SC_(0.61834249098451553748337548320711315606925672313013e-29), SC_(0.15125532639232e16), SC_(0.11666782739894188125617802143096923828125e-6), SC_(0.69024104942927043057057398977626412595781610122053e-6), + SC_(0.80490202086679616440767211156605911864354431197377e-29), SC_(0.263248904192e12), SC_(0.297980882347216843954978816e27), SC_(0.10843189731083616299141336159195842305986739069878e-11), + SC_(0.15386248307178551019952166983379913769903023636025e-28), SC_(0.11083928e9), SC_(0.210290006361901760101318359375e-2), SC_(0.13041677890491263355196952840107362001464424225232e-2), + SC_(0.21260283480045472585820552908849842179312334994757e-28), SC_(0.117237625e7), SC_(0.28658838e8), SC_(0.56137169413466917815737398640168522533687819147944e-3), + SC_(0.23067565607429071342632211210292164463707216326199e-28), SC_(0.44169701635837554931640625e-1), SC_(0.14622103125e6), SC_(0.23255376087386493123620791606540418922162034060246e-1), + SC_(0.27790564235134654243337661318427908127768828411199e-28), SC_(0.21656921296023725949679903214975529301966616912978e-20), SC_(0.16200692698475904762744903564453125e-4), SC_(0.48848907341566731317828094161181483220489237197822e4), + SC_(0.3576658041416457175462348437019377323527317041928e-28), SC_(0.182191292416e12), SC_(0.355224928e9), SC_(0.1056145023109440334189908118197725710820599937924e-4), + SC_(0.45190074381881787947113833644192369803258850957835e-28), SC_(0.903221837196690095865856e24), SC_(0.197033285648384e15), SC_(0.1316234260403974959059386181123491622884455028604e-10), + SC_(0.75787209056271355952485380019348769132814133643247e-28), SC_(0.3443290234375e5), SC_(0.87738095954812459262649215691458087947041111220869e-24), SC_(0.18482788150207164039886687903794355893352157342876e0), + SC_(0.83892250504513065845701871993405683214864787598623e-28), SC_(0.1116302655645995400846004486083984375e-5), SC_(0.5191992844812585795584e22), SC_(0.46130757625625887687399713890619646292026008752597e-9), + SC_(0.10848934303015863927446282468623299997624646840919e-27), SC_(0.62221619626030569058053553009209074892000950850727e-30), SC_(0.343400804652490021666816e24), SC_(0.10342135228893151111628599880598474090206795712037e-9), + SC_(0.1287535325337014953720268054032123824574619620157e-27), SC_(0.13705567485615801022446745431989965211687137938007e-26), SC_(0.5078582763671875e0), SC_(0.44492840412794216795211644099170510281671666177003e2), + SC_(0.20347543751535935665284243442334458135561822645851e-27), SC_(0.440987377729536e16), SC_(0.287391328125e5), SC_(0.21480602601200030281855562249446563848311273705777e-6), + SC_(0.22256795142604778055852756615936599983521384333793e-27), SC_(0.18143533359633255599212774654416246988830607733689e-18), SC_(0.21148944142623804509639739990234375e-5), SC_(0.11297576663225845000545238152727773376633249003903e5), + SC_(0.27311316429626442094674415847188181871613594240214e-27), SC_(0.10845691548033613824e20), SC_(0.400673984e9), SC_(0.40680160276715551282981129022255804380967818080019e-8), + SC_(0.55263283825603576259688637477087526891102295303199e-27), SC_(0.14570690537170526341649579027404115549870766699314e-16), SC_(0.12941088853490731622934705547460304161866623869764e-26), SC_(0.3263066756541685311171843349919704700385781288154e10), + SC_(0.56127809703514701593677302775789618452802567406812e-27), SC_(0.9228809556838246663801328395493328571319580078125e-11), SC_(0.86422194270699415064029835775727406144142150878906e-12), SC_(0.85882928958216539680438351403609321208964637689442e6), + SC_(0.88887406204705208581375488864563298833942634608052e-27), SC_(0.5811525927157390469801612198352813720703125e-8), SC_(0.32174132911148321865672794483970164947095327079296e-17), SC_(0.15798257631853654027208341257989620757183444492979e6), + SC_(0.11649136528196886067987694424015483218044894522109e-26), SC_(0.36767340167168e14), SC_(0.4968523085117340087890625e0), SC_(0.28619662675577147008545299820464843681562410993599e-5), + SC_(0.12708737924245050134296546672544059482912572403568e-26), SC_(0.903024183216244059537408e24), SC_(0.15518063165544166788813746673722175600112280614926e-28), SC_(0.62957032534216916589353715070316990128108284888469e-10), + SC_(0.25172518744793432127678756566548684645107602196601e-26), SC_(0.432213410600102056165376e24), SC_(0.1959631583933896656101239768660304818581607833039e-18), SC_(0.76260606376287472971690034770273684734039141637871e-10), + SC_(0.28601321158264026057365024112938563807684451932578e-26), SC_(0.40558081566683637682324548023871102486737072467804e-15), SC_(0.208714828125e6), SC_(0.5522837672610515535667805214004803961305903914157e-1), + SC_(0.42244364291200267661460233749011480646438909669627e-26), SC_(0.477498138427734375e3), SC_(0.17728046030944125033074269511337850424581574770855e-19), SC_(0.12451945453260696576552580190880249825955248401269e1), + SC_(0.48457483625271488463909528606996389233426292958429e-26), SC_(0.34402809559391418553704811749276853293953368218006e-26), SC_(0.3426654976e10), SC_(0.71831384058159540985490355058964459192302194019864e-3), + SC_(0.51977933341075693398899317919762114747383096799438e-26), SC_(0.266911591494591876579813490688e30), SC_(0.53580234866956732986409406294114887714385986328125e-11), SC_(0.93375161793411865686174480682610243788243937917932e-13), + SC_(0.73955594308673193523198369636584653936223991005372e-26), SC_(0.15995684594580228399252064264146611094474792480469e-12), SC_(0.170420291286861873152e22), SC_(0.98255728430318667072571074195808505094006175327076e-9), + SC_(0.16358995318300954765782308898640009098138844295667e-25), SC_(0.98936341703850100293138325469044502824544906616211e-13), SC_(0.17837596956010162360661830405206274008378386497498e-14), SC_(0.10825479757466109087874722747675913053273852855701e8), + SC_(0.19129386995031684168433400267318972464065419958335e-25), SC_(0.74098306733179406810366224487118565210547929972832e-30), SC_(0.40798337829960889676546298421300207337480969727039e-16), SC_(0.18975656681089523246977362390571886102543681656904e10), + SC_(0.20621651441981357349985057544616166528433660182218e-25), SC_(0.37752524088656425060861465681227855384349822998047e-12), SC_(0.20065922661601206578897704790875877733924426138401e-16), SC_(0.1026562701139222168152586002247636059939894265944e8), + SC_(0.21288901426793981534691419438692370107505096726852e-25), SC_(0.5289344906157640122368e23), SC_(0.11510209314816e14), SC_(0.54396628344807662681292826103022096566324190444093e-10), + SC_(0.25325901731494375978251987705874090841683295149966e-25), SC_(0.2247014312744140625e3), SC_(0.275117858615052709715247104e27), SC_(0.1755537214869906012774193839638577210495131605845e-11), + SC_(0.34857664908449107348958795506280082952452713251912e-25), SC_(0.4151866912841796875e2), SC_(0.84098145009994339684283693509730169685090217512879e-22), SC_(0.44454486362140376311920208456593332541577968986099e1), + SC_(0.34919368622379363366113344149995795887854964367758e-25), SC_(0.253342638931968e15), SC_(0.7562174072265625e3), SC_(0.92072944143905544126698873573853448498100607354808e-6), + SC_(0.43573388456807634241895548780677530339229715228289e-25), SC_(0.4951682e8), SC_(0.27826294978205525521980137859608542144911232096849e-25), SC_(0.55217533865229231709379440218980932604236253984141e-2), + SC_(0.79820903020739723608895214436397557193018231780357e-25), SC_(0.64729720161775472443612539086288393264112528413534e-17), SC_(0.68450550546432e14), SC_(0.44847121597179922927679996550818082257097417243103e-5), + SC_(0.87440356429873925658498856170228582591246249688943e-25), SC_(0.897631640625e4), SC_(0.386145068359375e4), SC_(0.20246560118180263593246019999683330284223142080123e-1), + SC_(0.94440849851249091320281320378524601844016927998382e-25), SC_(0.339495296e9), SC_(0.27455182077952e14), SC_(0.13429247262567663626711145473545103648849120559512e-5), + SC_(0.14235380836999617679740726134029336127093459674064e-24), SC_(0.13978527726259656235898667313173260930711863658793e-24), SC_(0.2028485946357250213623046875e-1), SC_(0.19206251584392463442370997640025081765353159971305e3), + SC_(0.19953517994584643852448181812338140391502663839596e-24), SC_(0.20741449842688e14), SC_(0.4743499375e6), SC_(0.22359243991203761053744717290515382846472784535058e-5), + SC_(0.24754359063412526643006257824154938047573476511687e-24), SC_(0.542938704356835328e18), SC_(0.44974670432440498891960159215184658369128360699829e-26), SC_(0.67866272584068105190014692037620145928646359916575e-7), + SC_(0.31317834636651731435069138009717243018286553235541e-24), SC_(0.446171086848e12), SC_(0.49623249953612003082525916397571563720703125e-9), SC_(0.38191286535568014551586929918910276720789086531549e-4), + SC_(0.47603821186323272660218327918596801064457513241734e-24), SC_(0.2276554752e10), SC_(0.1719185896217823028564453125e-1), SC_(0.29742088232825551204748453119751505500500823727615e-3), + SC_(0.49794778812580822691949943719295546451682199506905e-24), SC_(0.1241846768099137683456e22), SC_(0.16907547929525060340181807204941172504655995389999e-25), SC_(0.1517664520587024793869311011872864378396584169184e-8), + SC_(0.56225779987930131445265275562229206527363467582603e-24), SC_(0.59220483766176692878700381014733800100202643079683e-19), SC_(0.170295034922225631232e22), SC_(0.11622667635419788310904431315435991769296091794395e-8), + SC_(0.59662314470867055698475524004384740249344598606029e-24), SC_(0.3658255674684168267104256e25), SC_(0.347205125e7), SC_(0.11573263812518641898043129899137636153559584538173e-10), + SC_(0.63171350201374448567926894124993295043246632758382e-24), SC_(0.34594001439795600424927311319582115491182941913878e-27), SC_(0.63795086741914598182229839666991088459324643622494e-23), SC_(0.10133993353996022465682119843291432134218242147239e13), + SC_(0.13769532587968157644195235343886302517048270122046e-23), SC_(0.2007315487162486533634364604949951171875e-6), SC_(0.484821384427736035149791860021650791168212890625e-10), SC_(0.12389402269001445927668245292756768857373060188716e5), + SC_(0.1809900535358029636909945199492450026643175498009e-23), SC_(0.4521496521192602813243865966796875e-5), SC_(0.8669365225699721122509799897670745849609375e-10), SC_(0.32060615134261499907655037885120005642674260522623e4), + SC_(0.23768503319901658006414734019219381138884883419848e-23), SC_(0.545301093941248e15), SC_(0.1237108193663516431115567684173583984375e-9), SC_(0.12743839987290518287222259493370574805423695673748e-5), + SC_(0.30307608021550191165014175615417981032514993522398e-23), SC_(0.112407951746718026697635650634765625e-5), SC_(0.2082685879058432e16), SC_(0.56691050322635168060617985774434728756046014923614e-6), + SC_(0.62520772668534154026944814518561754825703991045316e-23), SC_(0.19445130267235161963321360384e29), SC_(0.27158976561908717618255837411567199524142779409885e-16), SC_(0.38026907216974328094743665088443755531206213714277e-12), + SC_(0.10943329334993736046425619587286570504047755747479e-22), SC_(0.29924868096e11), SC_(0.2513091862201690673828125e0), SC_(0.81727074296930034500798079272025541361956733831224e-4), + SC_(0.11566333023752935340761337633447216211718400202813e-22), SC_(0.18755437374336002170666266863907623019258608110249e-17), SC_(0.776579078820560653184656985104084014892578125e-9), SC_(0.40565905858913068184819366045065677568636761097112e6), + SC_(0.12363192189691982984868135714653404610974263277967e-22), SC_(0.35982240840770946433031796107826494335313327610493e-16), SC_(0.322920703887939453125e1), SC_(0.11632490874358186871413249990505026788809575604058e2), + SC_(0.13102694856934221302627057835335012189043046859638e-22), SC_(0.557648090759990083584e22), SC_(0.511986668338959560742296162061393260955810546875e-10), SC_(0.51248664482931459540724013275829878903910451492033e-9), + SC_(0.22752379870925977520487843277428559665698237779452e-22), SC_(0.169495918280704e15), SC_(0.106314858496e12), SC_(0.38973804069223761667690578386406821821893138424283e-6), + SC_(0.25335998731998849030698736206528910198942927678445e-22), SC_(0.99404931640625e3), SC_(0.204871795654296875e3), SC_(0.71159937657740084998191009093579819438581801376454e-1), + SC_(0.34646067293379381351152691325339738961930358129848e-22), SC_(0.26973976499394821796760860105960760360263583912399e-23), SC_(0.238645943284598871514390339143574237823486328125e-10), SC_(0.30233137727518071307294329779222831890404522453607e7), + SC_(0.37901014673404386117887019380781393404489243437183e-22), SC_(0.2586026539574959315359592437744140625e-5), SC_(0.13906271765126904778015790844071007475134249542492e-23), SC_(0.1280499683576237130421033280426088849010239336608e5), + SC_(0.71863877935764437100797607417958061393203905709015e-22), SC_(0.174722980453023744e19), SC_(0.13073324703744e14), SC_(0.551341711330108745264600223041680382705817370824e-8), + SC_(0.15427949623089271042983806318685344877161824683753e-21), SC_(0.47543684043676020384294744758335582446306943893433e-14), SC_(0.3374483874642825322028299383742755000492569610633e-30), SC_(0.14514502843791109783476535555536915858928043263431e9), + SC_(0.34863327790830662300885857654195697230559147783424e-21), SC_(0.941622257232666015625e-2), SC_(0.1611729536e10), SC_(0.35667604443925075539035226902339321756810277364901e-3), + SC_(0.37816734667556745747025163289015137202397909277352e-21), SC_(0.24983507829808709876928674020746257156133651733398e-14), SC_(0.3642084375e5), SC_(0.12287059533687168356517432791650885505026509128221e0), + SC_(0.96362472102334232055222076765519517715929964651878e-21), SC_(0.229194643907248973846435546875e-3), SC_(0.354709317473833607436972670257091522216796875e-9), SC_(0.53342978039746190271353828468457072780992822953649e3), + SC_(0.27589042212186362242123678200494962808875243354123e-20), SC_(0.16342684e8), SC_(0.10564504593401150001064081607182743027806282043457e-12), SC_(0.6092631429182695881654167011697706266534023656226e-2), + SC_(0.9438427249469115068287341347406937952513317213743e-20), SC_(0.200531482696533203125e1), SC_(0.66637542724609375e2), SC_(0.38641413534589247647986790175011427775190787719587e0), + SC_(0.10233203223084091273258880352287070181205308472272e-19), SC_(0.85809811133878005628972118756792042404413223266602e-13), SC_(0.231948544e9), SC_(0.17111312129091146749247383297362106242781652277967e-2), + SC_(0.18673345450030310831705831391483241255002667458029e-19), SC_(0.16140768350376832622251404282443946390469477480956e-24), SC_(0.35751782069791464758326094786154009108614104661683e-22), SC_(0.32580083767662476086644194595227808939042620549885e11), + SC_(0.19864569542637633100393889035509276119739752175519e-19), SC_(0.6342787072e10), SC_(0.22447013671875e5), SC_(0.96207689142094655800386573512496442354548791850638e-4), + SC_(0.21109476364529939751075359117074570214356299402425e-19), SC_(0.8756801014807582267041677127782781970980266472715e-25), SC_(0.19232578752860259808180970650021732008816410797181e-22), SC_(0.33190786309012978445733640384809592118937077449509e11), + SC_(0.46915519457248313591588473499272016198347046156414e-19), SC_(0.292094455289770849049091339111328125e-6), SC_(0.156863867492641304906706190336e30), SC_(0.10736234303351092627849003274144657319960447442842e-12), + SC_(0.48988976909583188869227858043553514022505623870529e-19), SC_(0.20838384443777613341808319091796875e-4), SC_(0.15278292e8), SC_(0.38494761861212656145073023306052978441909033021375e-2), + SC_(0.76062578971398177956182934736362177829960273811594e-19), SC_(0.1657523685947075284959232e25), SC_(0.25513326169038305064700172114511289578331343363971e-18), SC_(0.39023346626130050372613649601865580373904542960048e-10), + SC_(0.82997499668329372719087076888666576479636205476709e-19), SC_(0.13155479315039595949803718770027355301939497866925e-23), SC_(0.1327809695148788465823841420387907419353723526001e-14), SC_(0.17076475913109865792944964183189185127876107750271e9), + SC_(0.15449182507288713721863232866682302812932903179899e-18), SC_(0.133974442650952596522984094917774200439453125e-8), SC_(0.38424594277974055189327670217216623149703025319468e-21), SC_(0.34913733411849927277398272440663090725422971274299e6), + SC_(0.16677509527778160624086499150275919589603290660307e-18), SC_(0.50082130538252574789989333416135111329551950562359e-29), SC_(0.27393523857242675896004658903787332135948417999316e-20), SC_(0.84500092441906057349361486713809627858189091269051e10), + SC_(0.20609658618625881570536584851127681616844711243175e-18), SC_(0.827880703125e5), SC_(0.1740015537225728e16), SC_(0.31813710267864140379843054991887348784914294358726e-6), + SC_(0.30420727664434581210352358596193944606511649908498e-18), SC_(0.28656053473241627216339111328125e-4), SC_(0.94969911521617292598785838378394608128019171999767e-19), SC_(0.31814318136127268795698816874123401731043382606e4), + SC_(0.75868695590633990953827528458397466692986199632287e-18), SC_(0.930611462144e12), SC_(0.18147922618313051311153033283257685840533790511131e-24), SC_(0.37345680899047409286251384101030916729057585987005e-4), + SC_(0.79597584432992412060764095271814255738718202337623e-18), SC_(0.75974287571611502022633594876763844865744160884209e-30), SC_(0.20657736771171195551744e23), SC_(0.33337166230437980329718803405401684156691336380823e-9), + SC_(0.85474216716571798786966467076364750710126827470958e-18), SC_(0.482905248935018145708507136e27), SC_(0.11712293277443256300383769147321899595226568635553e-17), SC_(0.23724105747019863960223907175035546177431514293578e-11), + SC_(0.1145677201634679759519302305603716263249225448817e-17), SC_(0.57490079546449489559552e23), SC_(0.210827477730456275779584e24), SC_(0.46121654886964148580561085957249875214232267958269e-11), + SC_(0.12784377253954858878954355810853016350847610738128e-17), SC_(0.687874899968e12), SC_(0.2496727752685546875e2), SC_(0.16163774788262216936732624175864570071639554858486e-4), + SC_(0.20504934709643312615865232140244245329085970297456e-17), SC_(0.73745083851314552802870354829278820574245401076041e-19), SC_(0.25773770175874233245849609375e-3), SC_(0.1086635902426709059571521246941906092073302607025e4), + SC_(0.21543830132027756341550790708527785000114818103611e-17), SC_(0.22948391437530517578125e1), SC_(0.1066555328369140625e3), SC_(0.3213106933702150509400152431201753542221262845723e0), + SC_(0.22468750405760049766485005051652734664457966573536e-17), SC_(0.20721947294077835977077484130859375e-4), SC_(0.33333534375e6), SC_(0.22753717889025910067903355116012809983114508140331e-1), + SC_(0.33297255999405977634352134242323728585688513703644e-17), SC_(0.31191365320704e14), SC_(0.2293932139873504638671875e0), SC_(0.31617328082826779132454622724525132566887374163142e-5), + SC_(0.35736448257653877024582131372021365223190514370799e-17), SC_(0.1626183676572159287754752e26), SC_(0.18501463382170069138510370976291596889495849609375e-11), SC_(0.10890802574312809805885399629231553375543724066667e-10), + SC_(0.4488765904371071685042063337256479371717432513833e-17), SC_(0.12556997755786668595905972282403678229339592450908e-26), SC_(0.60742564e8), SC_(0.38902743812314487577211386432157566200767570828177e-2), + SC_(0.46574007343104197780350728130827064887853339314461e-17), SC_(0.138342221871913237479424e26), SC_(0.105195244140625e5), SC_(0.690975117923569372028946999713308497271079184874e-11), + SC_(0.46871312598868006987253009842930850936681963503361e-17), SC_(0.3093168493023691324522496e26), SC_(0.16793731632787596740420928687663819571897812904515e-26), SC_(0.91131697094521443903059177985942267322512482094196e-11), + SC_(0.57842544071306897015280826246375056598481023684144e-17), SC_(0.29870528793496387010009129880927503108978271484375e-12), SC_(0.2262512535863296e17), SC_(0.2302305948159761903194040618076972054768260671335e-6), + SC_(0.152616857880340486461855087352290638591512106359e-16), SC_(0.2803833618070566221119488e25), SC_(0.130162216009921394288539886474609375e-4), SC_(0.20996235599317174904036461576228470865489044522605e-10), + SC_(0.24715665357800610426718818102287400506611447781324e-16), SC_(0.15454139158925192518959104e26), SC_(0.1653589118287872e16), SC_(0.32726578425798516916988210488291665752573225312111e-11), + SC_(0.2486598558179742193396249971826250657613854855299e-16), SC_(0.425586784e9), SC_(0.80336704357062554970880796645360533148050308227539e-13), SC_(0.12787170247026518810998135711278552909011457029039e-2), + SC_(0.25599855258170792768942364281414825200045015662909e-16), SC_(0.301153981126844882965087890625e-2), SC_(0.1650323114690053222170624e25), SC_(0.25042211698570494214890306124497648270772610084347e-10), + SC_(0.27022364375023134885640124780437076879024971276522e-16), SC_(0.27506543358959030582888269221280574638246675400223e-29), SC_(0.10302131894484992e19), SC_(0.40590751071557904845991245264371415085266801126692e-7), + SC_(0.29292129777895166658878423060485829410026781260967e-16), SC_(0.3623176299517048782848e23), SC_(0.17793491421051038908068830934894322126638144254684e-15), SC_(0.23720119782915590066505534131870715729764828500059e-9), + SC_(0.32392597928368476898827732490815378696424886584282e-16), SC_(0.67357483203522861003875732421875e-4), SC_(0.2024667237879200631521688091840616152694565244019e-17), SC_(0.18696718576394509915149940516477691360642695264401e4), + SC_(0.51905646303429040628284185654450766378431580960751e-16), SC_(0.15583587e8), SC_(0.46741176605224609375e2), SC_(0.19619112423150604296588229321525943450291423624961e-2), + SC_(0.54374770505732477601443242143375300656771287322044e-16), SC_(0.4562802734375e3), SC_(0.10197021348467909816516131089894163913918803398168e-29), SC_(0.10848494678596107007991832533984166270247056624275e1), + SC_(0.60475637804894883005346617466102543403394520282745e-16), SC_(0.56145323516737172227849140410116390853545453865081e-18), SC_(0.64836257251954521052539348602294921875e-7), SC_(0.45912760390178930360213360786590635344323768064775e5), + SC_(0.17055543082513291604229710429763144929893314838409e-15), SC_(0.6943710148334503173828125e-1), SC_(0.61840874921367523613102701318666731822304427623749e-15), SC_(0.65045987281687846381232346342671549624399420118703e2), + SC_(0.31354745663454523796342954256033408455550670623779e-15), SC_(0.18973853599391077295877039432525634765625e-8), SC_(0.15741248433312655941040958396115456707775592803955e-13), SC_(0.16309232196306199587236841246499578205810903560841e6), + SC_(0.45365798223651683691859393121603716281242668628693e-15), SC_(0.160435796715319156646728515625e-3), SC_(0.109048366974172659712e22), SC_(0.90773201365578006665966789816711087859341300194272e-9), + SC_(0.92657114094649205629505850367877428652718663215637e-15), SC_(0.32666126748015500425026402808725833892822265625e-10), SC_(0.62660384591791979530528422515089914668351411819458e-14), SC_(0.93442817754069494094868744708536658507501213290948e6), + SC_(0.10318525717298732830018437311991874594241380691528e-14), SC_(0.14367766698608619435617583803832530975341796875e-9), SC_(0.5059831664766534231603145599365234375e-6), SC_(0.76860493569879907867342574174231921687308455794222e4), + SC_(0.11863620751000167503896864928947252337820827960968e-14), SC_(0.10501863e8), SC_(0.297662976884736e16), SC_(0.20377296104572453940554613019682833478236361016015e-6), + SC_(0.1484655421266577700334376999080632231198251247406e-14), SC_(0.242975312e9), SC_(0.398680594063019737088e21), SC_(0.77374742716312181182087266439794032798255867974115e-9), + SC_(0.3191302296140746501407203794542510877363383769989e-14), SC_(0.10381816564935609401309940371061152700193908060555e-22), SC_(0.10607265933659792978005498298443853855133056640625e-11), SC_(0.41671907070346189397396515732840095597083945698463e7), + SC_(0.63024210653626119155168439078806841280311346054077e-14), SC_(0.83430262439221944230360872296614616061560809612274e-15), SC_(0.38344456302173223195286237326130017242619817813276e-26), SC_(0.30822226845930963477751254978063864825930773776723e8), + SC_(0.68559452379320356268932457055598206352442502975464e-14), SC_(0.322791595458984375e3), SC_(0.86205957643638764405225050069248027284629642963409e-15), SC_(0.11286691758984928258891709073581323177675019302791e1), + SC_(0.89081879080330633735584910937177482992410659790039e-14), SC_(0.392437056867112321024e21), SC_(0.20596706612452379210041634624929924061650932110012e-23), SC_(0.20833713040090052179203072176122664236715044249824e-8), + SC_(0.96442290460109492133966568871983326971530914306641e-14), SC_(0.9353629648877212663808e22), SC_(0.52655215867828667928533109554578572897298727184534e-17), SC_(0.44248359304053531553503275545262277287163705756592e-9), + SC_(0.10676147262794234704674778413391322828829288482666e-13), SC_(0.43214794983836329352138753913566138198376620493946e-21), SC_(0.13713993780991436762807365477498389161326031171484e-19), SC_(0.77477951012763068780464107736853653140282630933197e8), + SC_(0.33435832770024875859604662764468230307102203369141e-13), SC_(0.47324655483842805109613708493123820154516818645152e-26), SC_(0.53386867791342146736804574152578486186809803015763e-23), SC_(0.69103580463856696918288564249817620300225293591956e8), + SC_(0.40149480284466451673885956097365124151110649108887e-13), SC_(0.256623141467571258544921875e-1), SC_(0.33872525312e11), SC_(0.83352453602304271614961387870254364044913563085681e-4), + SC_(0.5554841051654164918449652077470091171562671661377e-13), SC_(0.12544762676037794895951386908716784773787367157638e-18), SC_(0.20581069188704517551523841788208013525718342862092e-18), SC_(0.29964256109399287504029873551607571242726670155945e8), + SC_(0.18399165654589544338648465782171115279197692871094e-12), SC_(0.59311699931923680645911412736e29), SC_(0.33036756992e11), SC_(0.91985542733502026197882578870037501563914705803536e-13), + SC_(0.18488044482931759171506769234838429838418960571289e-12), SC_(0.33246523978462334755767677157978212676425755489618e-18), SC_(0.364377344204408356864e21), SC_(0.20806503238122671305898680392900908147081357204062e-8), + SC_(0.19550562611967553516834072979690972715616226196289e-12), SC_(0.18799281123449514653822470500968856016443808698568e-21), SC_(0.205092546875e6), SC_(0.4887361624197540313885328897761569933269444605574e-1), + SC_(0.22669229503540638814840235681913327425718307495117e-12), SC_(0.37976130008799530861998324174767620309278726153934e-21), SC_(0.98595622295761632362496e23), SC_(0.135084659229159261883721878470886375265281129265e-9), + SC_(0.31680756108765084633205333375371992588043212890625e-12), SC_(0.80878494291046089240994343416701894966536201536655e-17), SC_(0.1615060552761815478491414528e29), SC_(0.37964638232520579878684922762711444858962017870595e-12), + SC_(0.35943559868918673050330880869296379387378692626953e-12), SC_(0.35023133106665160704e20), SC_(0.2881296007168e13), SC_(0.16125174681924904053166769007367089757934572127931e-8), + SC_(0.60167024357529741429573277855524793267250061035156e-12), SC_(0.3838393489343095451259240448e28), SC_(0.103355013339542251670339584e27), SC_(0.51789252362880339895831183061226886556804949329166e-13), + SC_(0.9310612177071408979145417106337845325469970703125e-12), SC_(0.85308625497696339559303146948820995021378621459007e-17), SC_(0.1711439775257338052608e22), SC_(0.959167004954428871291470615043806383733773135401e-9), + SC_(0.15664042328847327389951260556699708104133605957031e-11), SC_(0.40672445e7), SC_(0.45362430968070144e18), SC_(0.20942444114651815662092507300528139632392372217436e-7), + SC_(0.164856496509546701645376742817461490631103515625e-11), SC_(0.12800646827237915914565746788866817951202392578125e-10), SC_(0.130841693878173828125e2), SC_(0.41208907613801029508698069614091329229296680023012e1), + SC_(0.2116143198171993589085104758851230144500732421875e-11), SC_(0.14341135e7), SC_(0.7228693017324945408e19), SC_(0.59549298220135661524923150503803884348448195111901e-8), + SC_(0.53607539414468607930075449985451996326446533203125e-11), SC_(0.63232212397934060070738019807261992566438379981264e-22), SC_(0.19656669921875e5), SC_(0.13769633263706751524081053809607939542780539021035e0), + SC_(0.11080205329638825872962115681730210781097412109375e-10), SC_(0.68420748430509458628227944729238707566310040419921e-19), SC_(0.2356455859375e5), SC_(0.12398673257026926468830816422986785167055400707412e0), + SC_(0.16011657277825719347674748860299587249755859375e-10), SC_(0.389046929776668548583984375e-1), SC_(0.18785430908203125e2), SC_(0.10331595275029600904213757235587288702300379535143e1), + SC_(0.1943433088069657088681196910329163074493408203125e-10), SC_(0.22031295035060773623229295812958821278778470675874e-24), SC_(0.39424006729538510485078006695403018966317176818848e-13), SC_(0.10181094094117235122748004174391301934695249818415e7), + SC_(0.2201089831233016269607105641625821590423583984375e-10), SC_(0.50355072889071337472e20), SC_(0.9924967773258686065673828125e-2), SC_(0.37168725093377584439681656402103407207281346607784e-8), + SC_(0.2500394162552321830617074738256633281707763671875e-10), SC_(0.72982407463299740342380286062361920775211799206766e-27), SC_(0.68663809933312e15), SC_(0.11705831038962670004689799738618689025236802021416e-5), + SC_(0.55001718457514670035379822365939617156982421875e-10), SC_(0.74622654356062412261962890625e-2), SC_(0.11046793904970209077021081611746922135353088378906e-11), SC_(0.12289994971595589408820551667235701158402342392922e3), + SC_(0.7451937678037978685097186826169490814208984375e-10), SC_(0.72950579063556310785863719706888276620113808904403e-28), SC_(0.590493896484375e4), SC_(0.22627840666043340650766592504897974124281842799663e0), + SC_(0.755542572949963187056710012257099151611328125e-10), SC_(0.140444835444342210428928e24), SC_(0.468889537015105749778432e24), SC_(0.30318309251223273254705079441222879870651439575784e-11), + SC_(0.10907375003199604179826565086841583251953125e-9), SC_(0.41478983876103159289527866349089890718460083007813e-12), SC_(0.914895470592e12), SC_(0.27775162984067084873871670268781393679177007122679e-4), + SC_(0.2914749275273464945712476037442684173583984375e-9), SC_(0.43084057979285717010498046875e-2), SC_(0.7663212560384e13), SC_(0.68430772514524815198021987807781248653807227632001e-5), + SC_(0.34717195784850218842620961368083953857421875e-9), SC_(0.40871053623249201233388894216602693632012233138084e-16), SC_(0.59489389257909689226875975750249807283420722114897e-22), SC_(0.50248316560720273122313530850252558311674226072784e6), + SC_(0.573736336217933740044827573001384735107421875e-9), SC_(0.141051064161956674070097506046295166015625e-7), SC_(0.2359947e8), SC_(0.38554094395081904461875352641296067711875626599237e-2), + SC_(0.704426572628591429747757501900196075439453125e-9), SC_(0.193607401472e12), SC_(0.1391435716868727467954158782958984375e-5), SC_(0.47956310371775673727806264838386592028271277030231e-4), + SC_(0.977972813842598043265752494335174560546875e-9), SC_(0.91714010218496e14), SC_(0.15903771355407769760859082452952861785888671875e-10), SC_(0.28938741327235977977821576741594517344076340819527e-5), + SC_(0.13634373630111440434120595455169677734375e-8), SC_(0.114086150930432e15), SC_(0.236092775202816e15), SC_(0.1216085317801969728066416098561874666793875786679e-6), + SC_(0.2402602117257401914685033261775970458984375e-8), SC_(0.42540803535525434114020215409929237537767221510876e-19), SC_(0.4942538125e6), SC_(0.25411435580294084180110354467998907193832753843532e-1), + SC_(0.777670283724773980793543159961700439453125e-8), SC_(0.2502269946802471167757175862789154052734375e-8), SC_(0.439172573387622833251953125e-1), SC_(0.41563917566759682174029521342465192827771529184686e2), + SC_(0.1000261828920656625996343791484832763671875e-7), SC_(0.56146556854248046875e2), SC_(0.11031288903647689304752638145772731734228777611406e-22), SC_(0.16829463699080249137255803071085987000672502474288e1), + SC_(0.11262596188998941215686500072479248046875e-7), SC_(0.15615465734711286849289990641409531235694885253906e-12), SC_(0.24870398826241113884932236596184834676037667122728e-20), SC_(0.65764328269454893067874342434806894099352544487533e5), + SC_(0.118697354167807134217582643032073974609375e-7), SC_(0.10655614337119843210155423207652347628027200698853e-13), SC_(0.80777571722833747247104e25), SC_(0.13787346457280858239134079932771036641035099994604e-10), + SC_(0.199429788239058325416408479213714599609375e-7), SC_(0.3046932220458984375e1), SC_(0.18625525552055897944743393684375905872507558290159e-28), SC_(0.6192076232851057323816547290230338711525418243608e1), + SC_(0.3125807523929324815981090068817138671875e-7), SC_(0.82854125568e11), SC_(0.58830391620982291911135882706044579926359106014644e-24), SC_(0.78504217283419246830426687871757769083908369109695e-4), + SC_(0.43614054590079831541515886783599853515625e-7), SC_(0.84901359375e5), SC_(0.18469835205078125e4), SC_(0.113697935817169804603729037873421312395676772622e-1), + SC_(0.779404700779195991344749927520751953125e-7), SC_(0.19177764892578125e3), SC_(0.84045921502887936e17), SC_(0.62927737946505012614368165862357910796598245750659e-7), + SC_(0.108193802361711277626454830169677734375e-6), SC_(0.3542151123046875e4), SC_(0.23456829198204715014597354638681281358003616333008e-13), SC_(0.22669114913192386068663428014170078920046421374282e0), + SC_(0.143673929642318398691713809967041015625e-6), SC_(0.16637075914752e15), SC_(0.23990587803828224e17), SC_(0.25030131110795701109425533504222718640116907277668e-7), + SC_(0.153669333258221740834414958953857421875e-6), SC_(0.24841828125e5), SC_(0.12379233211158146427122161981060344260185956954956e-13), SC_(0.90667600582691661389906317164068697158640273748972e-1), + SC_(0.2170967974279847112484276294708251953125e-6), SC_(0.10346977737162760356637413145463933451898572504768e-25), SC_(0.52484349362176e14), SC_(0.34306235296982079927226929528071063185602970273271e-5), + SC_(0.38700227378285489976406097412109375e-6), SC_(0.155408535003662109375e2), SC_(0.245863923712e12), SC_(0.26476778341905701201403994457712890485051575736119e-4), + SC_(0.48651935458110528998076915740966796875e-6), SC_(0.856036898821189402624e22), SC_(0.12457122281020492087329554432e29), SC_(0.75992412307353181274590395903669929407671729057739e-13), + SC_(0.66861986169897136278450489044189453125e-6), SC_(0.1611108507323484384264192e25), SC_(0.11971012087915599989354498156046702206367626786232e-15), SC_(0.28649607032338277062143826873841232146657087953982e-10), + SC_(0.91303257931940606795251369476318359375e-6), SC_(0.62647392985281462272e21), SC_(0.9029110078699886798858642578125e-3), SC_(0.11507739776693376020229808950243964552210035879271e-8), + SC_(0.10180891649724799208343029022216796875e-5), SC_(0.1729617489790698408202207232e29), SC_(0.1748718329483606178449836195413959888389499042205e-21), SC_(0.31019466440735078715861284322421485870123003839682e-12), + SC_(0.17110982071244507096707820892333984375e-5), SC_(0.11394911498010055900814674945716997028766215294127e-21), SC_(0.626809104620207335756276734173297882080078125e-9), SC_(0.40843486110333878422775052074533552102335735708533e4), + SC_(0.1905407088997890241444110870361328125e-5), SC_(0.49344100641868464538346190868691658380817941539735e-29), SC_(0.12289824338974083826108178981784992134240752648111e-21), SC_(0.14507779939109348914263365222449123146630890794173e5), + SC_(0.2085087317027500830590724945068359375e-5), SC_(0.23632697338789035110002273443186027179763186722994e-16), SC_(0.503470934927463531494140625e-2), SC_(0.7443215347307968847096816964281834644229358591967e2), + SC_(0.23743823476252146065235137939453125e-5), SC_(0.12017452733891625937800995416182558983564376831055e-12), SC_(0.355727936e9), SC_(0.93879051880457113094738180078701943399908998252877e-3), + SC_(0.403085186917451210319995880126953125e-5), SC_(0.6825940447919154921472e22), SC_(0.2035662353382506496e19), SC_(0.65910280161434525991837637870971677790493218112674e-10), + SC_(0.14422212188947014510631561279296875e-4), SC_(0.3083335169004797952e20), SC_(0.25554565784928256e17), SC_(0.8887222431698841742432172977078913130487192272629e-9), + SC_(0.25149885914288461208343505859375e-4), SC_(0.908764609375e5), SC_(0.1206146739423274993896484375e-1), SC_(0.30714609290499037536130242844126766381871451892306e-1), + SC_(0.660258883726783096790313720703125e-4), SC_(0.11791503058925568539244861654413654150630463846028e-17), SC_(0.40593102739457907768023253725075960574031341820955e-17), SC_(0.19894100891398343389380520963779686084107191291715e4), + SC_(0.759344620746560394763946533203125e-4), SC_(0.22148209406780902835423848339554340607932845033396e-29), SC_(0.19855378956352178823888896e26), SC_(0.79117745614650124107443480130078256520862299576478e-11), + SC_(0.10531136649660766124725341796875e-3), SC_(0.2080037632e10), SC_(0.951222915825664e15), SC_(0.25623765965124384972156766618148516069951096383416e-6), + SC_(0.13287944602780044078826904296875e-3), SC_(0.9115189375e6), SC_(0.179409878467662494683889664e27), SC_(0.18478402252220803197276083292428549293882335388077e-11), + SC_(0.34799534478224813938140869140625e-3), SC_(0.131195640625e6), SC_(0.399027378608056683915492826862951233901632974721e-21), SC_(0.31087481266816612541791865433784096137052060166733e-1), + SC_(0.40748735773377120494842529296875e-3), SC_(0.57247653448122368e17), SC_(0.147901005859375e5), SC_(0.66363092258528492104049160938144939223516210594126e-7), + SC_(0.6576157757081091403961181640625e-3), SC_(0.177806784e9), SC_(0.30817991819236751066216748295709401603164490197841e-29), SC_(0.1090999243005587427903803809704479209226281702979e-2), + SC_(0.8751563727855682373046875e-3), SC_(0.423289281913088785772479250432e30), SC_(0.9735179031543808e18), SC_(0.22725513224973939353905616922674295370433539957998e-13), + SC_(0.143404235132038593292236328125e-2), SC_(0.3869421658552352052474251203895150297284999396652e-20), SC_(0.2396832969158041061126381509032573502437912793539e-20), SC_(0.55541035120027319131883319022959439252280754002183e3), + SC_(0.242449971847236156463623046875e-2), SC_(0.27421585230570622547519032963236895739100873470306e-15), SC_(0.4881218719482421875e2), SC_(0.9076576429319326176242343358795236577683793680439e0), + SC_(0.256083277054131031036376953125e-2), SC_(0.894934712937934631550844928e27), SC_(0.53638430898303751261473676086308258913532532826708e-28), SC_(0.11833146781540920891925399444932864774560629000439e-11), + SC_(0.27153925038874149322509765625e-2), SC_(0.2655967255122959613800048828125e-3), SC_(0.9400097640298840064e19), SC_(0.84515860351248360302260761664917470850628902787293e-8), + SC_(0.581006519496440887451171875e-2), SC_(0.646486887490027584135532379150390625e-5), SC_(0.2791671630859375e4), SC_(0.14941941296777298036147965663357887079707509086103e0), + SC_(0.716792047023773193359375e-2), SC_(0.1701292973166346200741827487945556640625e-6), SC_(0.3599197329062775452257483266294002532958984375e-10), SC_(0.79091533254758814905193368184582720174295362236443e2), + SC_(0.1795816235244274139404296875e-1), SC_(0.1995620570919113588736e22), SC_(0.93229513968235881657927660254990574951111859851663e-29), SC_(0.62496731499491176281313290464909725830037276460312e-9), + SC_(0.366241894662380218505859375e-1), SC_(0.4340599750656e13), SC_(0.211195732798682804412225683456e30), SC_(0.44821247136667385212079811838488185763008524961105e-13), + SC_(0.71962334215641021728515625e-1), SC_(0.1265022365259937942028045654296875e-4), SC_(0.439028906074585432064e22), SC_(0.41663265850180672061289570197622867267588231373065e-9), + SC_(0.75922764837741851806640625e-1), SC_(0.116516947201716902782209217548370361328125e-7), SC_(0.113272657281024e15), SC_(0.17716242975527787068420351700957583312183164658051e-5), + SC_(0.1691611707210540771484375e0), SC_(0.7906418323516845703125e1), SC_(0.48393864862901030998784493751613466975544853481209e-29), SC_(0.11811045731634267854810490199412163219712872433987e1), + SC_(0.23772360384464263916015625e0), SC_(0.24407187456e12), SC_(0.8943501494940164775471203029155731201171875e-9), SC_(0.30797170873345087619523887239821498519392498978199e-4), + SC_(0.3555642664432525634765625e0), SC_(0.33531504e9), SC_(0.2252993226647959090769290924072265625e-5), SC_(0.63981789907418799944668516927865772748798805373403e-3), + SC_(0.4837694466114044189453125e0), SC_(0.2555249786376953125e2), SC_(0.14830236860416e15), SC_(0.13099210366154566019010026871243074384013953372139e-5), + SC_(0.67300522327423095703125e0), SC_(0.89243675925783361169152385627967305481433868408203e-13), SC_(0.21305708e8), SC_(0.21711328085160761343462693512543922230931578950399e-2), + SC_(0.15793964862823486328125e1), SC_(0.21153786174505042274269802208549073334284835448335e-27), SC_(0.12200210459945015628591136191971600055694580078125e-11), SC_(0.12198933044768666270508537504095758456302429647814e2), + SC_(0.16426203250885009765625e1), SC_(0.7117705536074936389923095703125e-4), SC_(0.5225739073284472832e20), SC_(0.32968851718218611889358209536279287871000769996669e-8), + SC_(0.2704489231109619140625e1), SC_(0.80231539790356115235923917250460135619505308568478e-17), SC_(0.48408881335894016e17), SC_(0.91346472448791211738567719163400817982202253049609e-7), + SC_(0.393867969512939453125e1), SC_(0.51874020272408766185256645893864430640143203159534e-29), SC_(0.2930298149585723876953125e0), SC_(0.13695634435406320220597865446986430075396514401845e1), + SC_(0.5558017730712890625e1), SC_(0.61238770367556633579172767440648651635964536382034e-27), SC_(0.124700664587616256e18), SC_(0.57233966559860937272528487603042810916196421651537e-7), + SC_(0.85838680267333984375e1), SC_(0.87929930903225072031923050652798379251502344788882e-25), SC_(0.75804509525494787096890253236172035888884579435398e-21), SC_(0.91357620171042027913282465443245256840164004238585e1), + SC_(0.106269702911376953125e2), SC_(0.1371270220231999488e19), SC_(0.184909165756863558272016234695911407470703125e-8), SC_(0.18006399248775818574740772742096332722693131021921e-7), + SC_(0.23412235260009765625e2), SC_(0.14768327260674323415826432e26), SC_(0.345189679104e12), SC_(0.44444589538545554741689347921713021346984910988009e-11), + SC_(0.246089305877685546875e2), SC_(0.4994587136e10), SC_(0.243351703125e6), SC_(0.89724320928610841853985597052591837847382795461715e-4), + SC_(0.316759090423583984375e2), SC_(0.153310129036299258586950600147247314453125e-7), SC_(0.15191832576e11), SC_(0.92332903202788182286730682456174598281820631595544e-4), + SC_(0.3255878448486328125e2), SC_(0.20426069933899679481125376462984716200236491481616e-28), SC_(0.3943929741312e13), SC_(0.71232868256516848147475176520372458002726844662265e-5), + SC_(0.3607895660400390625e2), SC_(0.51364582986934692598879337310791015625e-6), SC_(0.48236623830723532346288762173713848824263550341129e-17), SC_(0.17347673532522180939322276270600309020985807051641e1), + SC_(0.43738616943359375e2), SC_(0.12385733574656e14), SC_(0.18116829833984375e4), SC_(0.35701733949128307671627579982483738830128908837878e-5), + SC_(0.4479792022705078125e2), SC_(0.11175146230483004594624674155056709423661231994629e-13), SC_(0.13292268387650598312620966562043814396254504117678e-22), SC_(0.28910087971624801153304984668598930483663006171249e1), + SC_(0.482386627197265625e2), SC_(0.371529138647019863128662109375e-3), SC_(0.12312668720852486471439889495482766790246387245134e-18), SC_(0.10472143173271605010449002902995089471028533975145e1), + SC_(0.64164215087890625e2), SC_(0.60759354638336e14), SC_(0.15436498306983203153379328e27), SC_(0.12610701873795731849746574684153036868943083955312e-11), + SC_(0.8524636077880859375e2), SC_(0.480171648e9), SC_(0.81851918776879678213563875328e29), SC_(0.86258634338002805113702997464504401250478280729872e-13), + SC_(0.10158062744140625e3), SC_(0.8022529108706313066889313475107958772980509820627e-20), SC_(0.15554543059386610748262569359212648123502731323242e-12), SC_(0.18298365465719619173567924640909142160239550064496e1), + SC_(0.10465634918212890625e3), SC_(0.60640822994173504412174224853515625e-5), SC_(0.24925849334950778558742528e26), SC_(0.56683497665415153265619536109723321025064544620414e-11), + SC_(0.1277736968994140625e3), SC_(0.95177386513821491537123975490430893842130899429321e-15), SC_(0.28095007115726435603337495231684788158121206437133e-29), SC_(0.18671339067230389827188193388573190070910283000371e1), + SC_(0.175763397216796875e3), SC_(0.12685536053155962454420298550668289028209301250172e-19), SC_(0.1597107696533203125e2), SC_(0.1978675405105023319553563777471211382180555427026e0), + SC_(0.1965407257080078125e3), SC_(0.344887394304e12), SC_(0.41293741759318436379544436931610107421875e-7), SC_(0.20483020664977574825111031547790571977914102467475e-4), + SC_(0.2191826629638671875e3), SC_(0.2306111083984375e4), SC_(0.1685688489456173056e19), SC_(0.14041203428362839724006141174787810823202189936702e-7), + SC_(0.50384063720703125e3), SC_(0.404188410838900933656576e24), SC_(0.15307389070737408e17), SC_(0.15620440663369180425497691406548733014755875230719e-10), + SC_(0.53687359619140625e3), SC_(0.22982227952519826732488902867652779863117686563745e-26), SC_(0.33525770516606100656031852480509769520722329616547e-15), SC_(0.96437096354850323399933917081393941901712830743268e0), + SC_(0.7166851806640625e3), SC_(0.1690176772380537639327398519769468654416755271086e-22), SC_(0.47753922915140458067828621580019898829050362110138e-15), SC_(0.83345362070814458637707277577852723377892982671916e0), + SC_(0.82290283203125e3), SC_(0.36223742228003175114281475543975830078125e-7), SC_(0.12701055793371805794043341177064064973639689881679e-22), SC_(0.46396700975327125930708200057380311257323231142065e0), + SC_(0.11206973876953125e4), SC_(0.159823103248039936e18), SC_(0.10259405824e11), SC_(0.24180009616078806214079770723439749028154895765982e-7), + SC_(0.1157078125e4), SC_(0.944933487050227712e20), SC_(0.15171425313958986080820068309549242258071899414063e-11), SC_(0.21456119777188316813098262549564992955737617814098e-8), + SC_(0.17164217529296875e4), SC_(0.2306652249771737088e21), SC_(0.72487803782646221227581317947397110401652753353119e-15), SC_(0.13896831930886626129994990515051103720579512995724e-8), + SC_(0.3369771240234375e4), SC_(0.151668605394661426544189453125e-2), SC_(0.27588927745819091796875e0), SC_(0.1037050861580198720069064707838859943203555540206e0), + SC_(0.3374702880859375e4), SC_(0.8743139992458493952e19), SC_(0.65656960010528564453125e0), SC_(0.64655349329713995229654370953771114973136045208058e-8), + SC_(0.3524259033203125e4), SC_(0.38758790625e6), SC_(0.4173026783555223552e19), SC_(0.79787362071210789161575658664325813485738929347333e-8), + SC_(0.494414599609375e4), SC_(0.9551179238333844741448269824e28), SC_(0.7608356306944e13), SC_(0.19205300238295770675268549069547393873542853841195e-12), + SC_(0.98872197265625e4), SC_(0.58409109024165905025768874558877996605588123202324e-16), SC_(0.7126068812794983386993408203125e-3), SC_(0.96637321228954147051574559568801427186215487598058e-1), + SC_(0.1597780078125e5), SC_(0.1903848463306411019979456512e28), SC_(0.41524315625e6), SC_(0.5992170989848289153774780408282576315577615009335e-12), + SC_(0.1624405078125e5), SC_(0.40561403505621103444471068204533651486640155603425e-24), SC_(0.1332809589803218841552734375e-1), SC_(0.65851986975619196338419051361638702955083798133709e-1), + SC_(0.503876328125e5), SC_(0.72534660121208050493385086597564193056086878641509e-19), SC_(0.12543467133030450355590801336802542209625244140625e-10), SC_(0.86206245036256200056825686542991636870600429843929e-1), + SC_(0.647452890625e5), SC_(0.731999936e9), SC_(0.2930758730861938998746296647368581034243106842041e-13), SC_(0.22372323832394864484059102238022270978961483980867e-3), + SC_(0.106680765625e6), SC_(0.56570606632127019614208e23), SC_(0.34145346314045075233544504794608567192597259332132e-24), SC_(0.91624018515193040973302979323086210375918534717075e-10), + SC_(0.22300921875e6), SC_(0.22960517578125e4), SC_(0.46933254639405441853106942079784734541910233270121e-28), SC_(0.77952695721361451918265181496139655608842753454322e-2), + SC_(0.41534478125e6), SC_(0.1918984889984130859375e1), SC_(0.44006012e8), SC_(0.56108612021577121610377974075509205314587640601936e-3), + SC_(0.10005244375e7), SC_(0.11613385491986150110932385359774343669414520263672e-12), SC_(0.1767129607947373434957201408e28), SC_(0.61487989006953108752515836892875700743298527009289e-12), + SC_(0.1268757375e7), SC_(0.35219765472105368786515100509859621524810791015625e-12), SC_(0.20491329771405312e17), SC_(0.91785534375252744953625908402896905612496013389402e-7), + SC_(0.2068948375e7), SC_(0.20907895301679711719256005153511068783700466156006e-13), SC_(0.893892793119022144310292787849903106689453125e-9), SC_(0.13258256198446202053448320199255053502584813134187e-1), + SC_(0.3064297e7), SC_(0.10695072441537967968227132372606381829210908662731e-23), SC_(0.35285359539881765141448911825262056696228540886295e-21), SC_(0.19136306805411382429286198222749585149026757224371e-1), + SC_(0.320426825e7), SC_(0.32412401535258716801207369728e29), SC_(0.3877133210647759738109952e25), SC_(0.32782844045417231500038726072796541143677847718953e-13), + SC_(0.47946235e7), SC_(0.22622955483503716568203720238550147314526839181781e-18), SC_(0.85913526136044117637383110697157917456934228539467e-16), SC_(0.12570131707988271278743881541607030888057936868018e-1), + SC_(0.61216025e7), SC_(0.38630216070566644236610820764554752315689256647602e-18), SC_(0.13632195402405625179543049996233605725137749686837e-16), SC_(0.11503344648303925557309315851573629140176905961895e-1), + SC_(0.14619622e8), SC_(0.815536015625e5), SC_(0.230844914913177490234375e0), SC_(0.10417544933127055095586307886682728892365216794026e-2), + SC_(0.20014814e8), SC_(0.3708101212978363037109375e0), SC_(0.13699657060765273544864379382315910937961689342046e-19), SC_(0.22996864468381630591972233244155779735502909305578e-2), + SC_(0.31355888e8), SC_(0.441912933349609375e3), SC_(0.200361263104e12), SC_(0.12877007244527215542954125316831371277147994453458e-4), + SC_(0.123742392e9), SC_(0.10912435391066719332460695603753930316446923640128e-25), SC_(0.701712293691392e16), SC_(0.12311347838291690922542702662292536165252138116897e-6), + SC_(0.2606888e9), SC_(0.38372283060996710610105527722302198867510014679283e-18), SC_(0.738515392e9), SC_(0.73738180012907530072733237000613285438700898249664e-4), + SC_(0.396068288e9), SC_(0.3591942195412689571187997472948797567093848215336e-21), SC_(0.20276001953125e5), SC_(0.31788185695055138388831184094120612293950324118951e-3), + SC_(0.670079424e9), SC_(0.14044194233643483429544463937103636612564738772591e-24), SC_(0.11511007425024644135191920213401317596435546875e-10), SC_(0.93261634525158269555988059116555256528739591102092e-3), + SC_(0.911282624e9), SC_(0.1114427401123063379525632e25), SC_(0.53440565956804888993886271109090557729359716176987e-17), SC_(0.17767297433491847296411122503310631448338696473691e-10), + SC_(0.1161228928e10), SC_(0.18421718410258806513944641963201765549884569850292e-21), SC_(0.22427656323344421104955380977729814673260477775329e-21), SC_(0.10594325940929478060113637501415496568954096991824e-2), + SC_(0.1535589888e10), SC_(0.29343589097392396787046010830923847834128537215292e-17), SC_(0.988066171875e5), SC_(0.15852377981515093892000242963170335575794025366861e-3), + SC_(0.1910448768e10), SC_(0.19696330564073048658818435820590984305819001943432e-28), SC_(0.32238440243425309843308409068705787565729120602853e-24), SC_(0.92111764017014799167695770919732767377570397815568e-3), + SC_(0.2606333696e10), SC_(0.12266837021255184297929829995155159849673509597778e-13), SC_(0.14248488e9), SC_(0.56126741437028022213938057788405364830940046384504e-4), + SC_(0.3957605632e10), SC_(0.55799657429356219751070966594852507114410400390625e-13), SC_(0.45080659638616064e17), SC_(0.447925977382851769046008640958190262157028817521e-7), + SC_(0.55398272e10), SC_(0.341833367802954728115011584e27), SC_(0.4623806612399525462016e22), SC_(0.37816233719489315918674318961750893328790457473159e-12), + SC_(0.7560605184e10), SC_(0.62840314285494969226419925689697265625e-7), SC_(0.3143396352e11), SC_(0.12261107835007683821954047136390170041928220826969e-4), + SC_(0.35244982272e11), SC_(0.181061646295454711808e21), SC_(0.18019738841891322915192832e27), SC_(0.61768415705764898273053471004786951059602196652868e-12), + SC_(0.62680088576e11), SC_(0.63543370924890041351318359375e-2), SC_(0.17267258802243381463374302664526283024315489456058e-17), SC_(0.65291034406401789119333037245769701297524163871655e-4), + SC_(0.67647336448e11), SC_(0.59025825792e11), SC_(0.63456950551354910536750724756131128750454202264858e-27), SC_(0.62469865760259720684274593826123524112716461709126e-5), + SC_(0.68342607872e11), SC_(0.74717364929222058918122144571648805171440455019649e-24), SC_(0.82841443123718438990010781708406284451484680175781e-12), SC_(0.10622515193450570845093540504598921965159066880235e-3), + SC_(0.732471296e11), SC_(0.4801772534847259521484375e-2), SC_(0.45398853613796871007741958773072074733645399780696e-27), SC_(0.61203463071633938954054765124346998318407403998592e-4), + SC_(0.99392208896e11), SC_(0.222360095977783203125e2), SC_(0.12478698822407829848064e23), SC_(0.12679711757751463238182798861301176686419753669725e-9), + SC_(0.11738591232e12), SC_(0.761073704058645716941100545227527618408203125e-10), SC_(0.1885123992906301282346248626708984375e-5), SC_(0.60461474956993546596361636712841407004887449043071e-4), + SC_(0.191893782528e12), SC_(0.174726296875e6), SC_(0.24141449950396592978032251394348434159198291126813e-20), SC_(0.19040707638204031123150448525201784536542378277896e-4), + SC_(0.210419040256e12), SC_(0.15455189208984375e4), SC_(0.90718428578382195030384883514111792400934880018881e-30), SC_(0.23437059569446713522176906643659257742572657122755e-4), + SC_(0.217494208512e12), SC_(0.140845240494850048e18), SC_(0.15238641357421875e4), SC_(0.21521056371404093244638842162473121285888665474177e-7), + SC_(0.572994879488e12), SC_(0.4479686882443445386870784e25), SC_(0.3949284499458758322165682321378970124179942071882e-27), SC_(0.76682320268187247006742196169355086249222758011355e-11), + SC_(0.64654147584e12), SC_(0.24521487702843957217058619392e29), SC_(0.921704585926541312e18), SC_(0.85492949696474996204965492167245176476986583196674e-13), + SC_(0.698235158528e12), SC_(0.12468150316635728813707828521728515625e-5), SC_(0.11407565381205131416209042072296142578125e-6), SC_(0.25796163828681886500287718049239889266277238342313e-4), + SC_(0.920973279232e12), SC_(0.11153434660579423094016106021221904046901687488323e-27), SC_(0.750879536326465313322842121124267578125e-7), SC_(0.24344680739060412637157564940636026936671373170231e-4), + SC_(0.1125503860736e13), SC_(0.2837864448e10), SC_(0.49448484864e11), SC_(0.25990761721926745804582114293174306029621847941473e-5), + SC_(0.1494682042368e13), SC_(0.6869200625e6), SC_(0.12406291034494643099606037139892578125e-5), SC_(0.71020564354736386412964372076097982309346714376285e-5), + SC_(0.15256551424e13), SC_(0.54413439958598412815701968192616533315231208689511e-18), SC_(0.14978477476618266145402813549480924848467111587524e-14), SC_(0.2628091786622991409288218664122349364289339906203e-4), + SC_(0.2004127711232e13), SC_(0.16876090995538029053498222195215869301243571953819e-20), SC_(0.557600690481998400170491904e27), SC_(0.76295206423809195123950527899759322897020360023591e-12), + SC_(0.2374866305024e13), SC_(0.834580765033977872384e21), SC_(0.15617056749761104583740234375e-1), SC_(0.38855621237058882650617777347259262986882226729037e-9), + SC_(0.3359658737664e13), SC_(0.151865482330322265625e1), SC_(0.13662545780395737088e20), SC_(0.24336465654975224562949956315548226157467240178351e-8), + SC_(0.3518738464768e13), SC_(0.98092148011034996368806559985387139022350311279297e-13), SC_(0.8399241342592483328e19), SC_(0.30119512602075944403516099459120679758343922354013e-8), + SC_(0.395945312256e13), SC_(0.516478977703936e15), SC_(0.68443482659479816375487801854053577534347380106894e-25), SC_(0.16840445084145318025616478254869711358658756939405e-6), + SC_(0.4350305370112e13), SC_(0.27039379334450717739301340321646939538764523589583e-28), SC_(0.283915729550307204530176e24), SC_(0.25968789251736065696073448797838569487329819463428e-10), + SC_(0.589840515072e13), SC_(0.11837831633021164326650292224515978315498715423004e-25), SC_(0.27219574150194603134877979755401611328125e-7), SC_(0.10210888943426091181542188300687383506678074582093e-4), + SC_(0.9603179872256e13), SC_(0.13545880996751469282912694325204938650131225585938e-12), SC_(0.21755331614817437617422269623130535179188855751664e-26), SC_(0.10051279000658905126744286870847035998180162755846e-4), + SC_(0.11531852972032e14), SC_(0.28385876039913134187331286456979634325037409325887e-20), SC_(0.10016296110074800369742160704653044511758253065636e-19), SC_(0.11491232280455523495594395757697149408310502282362e-4), + SC_(0.51712110886912e14), SC_(0.156551992965379627797503279104e30), SC_(0.47173579223453998565673828125e-2), SC_(0.48549800883733502995596548449202365538551176451306e-13), + SC_(0.86229714468864e14), SC_(0.14452686009774895481427847698796540498733520507813e-13), SC_(0.669478515625e5), SC_(0.12787511653115388647783188605551326267855512925765e-5), + SC_(0.8952989351936e14), SC_(0.5821022205054759979248046875e-4), SC_(0.16930462580604928e17), SC_(0.30829381796682710715540287058041389212481763230193e-7), + SC_(0.3135611338752e15), SC_(0.2348838144e10), SC_(0.111468466401642984919817536137998104095458984375e-9), SC_(0.411529336999849736111827975144371129920083696715e-6), + SC_(0.323813657018368e15), SC_(0.156708486328125e5), SC_(0.16682115902222024485246354430501014576293528079987e-14), SC_(0.7369958702644463791880716959576146707074082963075e-6), + SC_(0.408575138594816e15), SC_(0.31068275e7), SC_(0.24256317430431744e18), SC_(0.93011599556041195089549598455392793081225298794889e-8), + SC_(0.575958067183616e15), SC_(0.23832502919148795513995921571681613215787365334108e-18), SC_(0.26304338632424878383014263958164513645954230014468e-19), SC_(0.16472807796336687254272355247076167177717437685574e-5), + SC_(0.95759886188544e15), SC_(0.4659874708323741288040764629840850830078125e-8), SC_(0.727262651482112e15), SC_(0.54310987080128205374622811166750387046051178910953e-7), + SC_(0.1551973144854528e16), SC_(0.10139344880747031860591903938868807433237861914677e-19), SC_(0.7740245504e10), SC_(0.19014056115932097753474017298187688901544771405586e-6), + SC_(0.1559443435159552e16), SC_(0.1296097951186681029867031611502170562744140625e-9), SC_(0.21495435284055487900379567949710191143708470917773e-19), SC_(0.7663013988695452281243153448807199273373791738192e-6), + SC_(0.183459460939776e16), SC_(0.58535432060362684618705258305616519358052915120161e-26), SC_(0.151380081803154098452068865299224853515625e-7), SC_(0.65282997003099132492706966442616652144348025595716e-6), + SC_(0.19517472243712e16), SC_(0.36385554182438912e18), SC_(0.4880095232e11), SC_(0.6630186300910710945112087195391194438693488482444e-8), + SC_(0.3762704347037696e16), SC_(0.10164524532769642241629852708355797252185587220552e-24), SC_(0.27152649027584e16), SC_(0.2773767331217958147538768064022401224149207791243e-7), + SC_(0.4624092787376128e16), SC_(0.60174052366059316378553368571567225298046821535536e-21), SC_(0.10303296875652080092595762343334930266343200944146e-25), SC_(0.64482148940804480722655080486660426128443813677427e-6), + SC_(0.6551729407524864e16), SC_(0.25762003497220575809478759765625e-3), SC_(0.156271296e9), SC_(0.12554544166213186687409065239657703785542326674054e-6), + SC_(0.6565417468297216e16), SC_(0.174148595112480631422976e24), SC_(0.187841462272e12), SC_(0.23789830484335631441682423081209752700784083266407e-10), + SC_(0.7617166912258048e16), SC_(0.78087929856e11), SC_(0.23989477554782208e17), SC_(0.1321701117619106268609736377017578983280864713024e-7), + SC_(0.9007602981666816e16), SC_(0.25765624e9), SC_(0.1591604150272e14), SC_(0.47973623298539306302801003699788440227934478669559e-7), + SC_(0.18448819419086848e17), SC_(0.55460104261295954577309919031335994077380746603012e-16), SC_(0.154132149174272e16), SC_(0.19605795152909682173633566133900848650726173495414e-7), + SC_(0.19790925832126464e17), SC_(0.14673756579750143547516416653309079265454784035683e-15), SC_(0.3067474539712255353944014848e28), SC_(0.25764513023448277884004584901484829276036066859808e-12), + SC_(0.25317517949927424e17), SC_(0.168874409984e12), SC_(0.409506688e10), SC_(0.45253530969124872335481458706908818000392720295878e-7), + SC_(0.41172763385266176e17), SC_(0.69560673828125e4), SC_(0.747194576263427734375e1), SC_(0.79141392146993468855982671530129098257002288773077e-7), + SC_(0.43086235740143616e17), SC_(0.855830077692287144095867031448610084964911948191e-19), SC_(0.1095691093411232941434718668460845947265625e-7), SC_(0.14309200962100351747105894988998450998446737109248e-6), + SC_(0.43801356384862208e17), SC_(0.121447060546875e5), SC_(0.7552590468349952e16), SC_(0.11108650085661005775379171351563490905462126914534e-7), + SC_(0.59877638017122304e17), SC_(0.53512100536178474827209150532780768116936087608337e-15), SC_(0.60865414403362585004788968196643994088311036341765e-26), SC_(0.15645277736565466376909794371812593761692076170781e-6), + SC_(0.62729268668399616e17), SC_(0.10206736333437342809907509471629755506880924287999e-26), SC_(0.81748619457743373061928487104122026290137009371661e-27), SC_(0.20426797977110290222498149823755512183312461311915e-6), + SC_(0.95498486157410304e17), SC_(0.71060984495908924431726061148159195715493970237986e-29), SC_(0.61842984e8), SC_(0.38718730304449976538375033243877597551127857381482e-7), + SC_(0.11384566732292096e18), SC_(0.58757351632535552e19), SC_(0.273440826416015625e3), SC_(0.13901474047177887628709456683915540756026341189496e-8), + SC_(0.128395461743607808e18), SC_(0.206836903384823477636694016e27), SC_(0.53310077419155277311801910400390625e-5), SC_(0.83343627587176997793147406700518956490782999936034e-12), + SC_(0.245924553149120512e18), SC_(0.12432241406593107741605394588021265875441186132822e-25), SC_(0.11698430441812742785454260394458960094979845402414e-30), SC_(0.10330525862806096829546465271534602608842300610533e-6), + SC_(0.267051548817752064e18), SC_(0.3821992612462592e16), SC_(0.630519962310791015625e1), SC_(0.68089761777131364086674439043639262187908114055846e-8), + SC_(0.304309702915784704e18), SC_(0.530327327997952e15), SC_(0.10366431646728266850195727608041629252966231433675e-18), SC_(0.82734731138287298013588108170628196451303991959397e-8), + SC_(0.308824435098386432e18), SC_(0.103648125e7), SC_(0.65166045527188006246692084100224917619925690814853e-17), SC_(0.26265753734342834204422422380109679833688799942427e-7), + SC_(0.351564170056957952e18), SC_(0.39915753210320770987303899714279126384431587576396e-26), SC_(0.21695373623974084952946051325821291927687106275468e-28), SC_(0.87546059501740626934641113006670674307659349972191e-7), + SC_(0.805980574786256896e18), SC_(0.7298279296875e4), SC_(0.135008262029312e15), SC_(0.63866710969527719038738387900072831361451588035511e-8), + SC_(0.1054551841401995264e19), SC_(0.149447225428200880514850723557174205780029296875e-10), SC_(0.16248834494529910866838585087421498870385860868737e-21), SC_(0.33692650842823621064004780981931058189924268003096e-7), + SC_(0.1855688655151038464e19), SC_(0.1106574030405632e16), SC_(0.6372859541648241998931427328e29), SC_(0.53445215560621261031724116775717209621489642181961e-13), + SC_(0.2927755373186121728e19), SC_(0.1103907262575394123707710788799551959726841232623e-19), SC_(0.16709281876399104451896857451468573346753387909303e-21), SC_(0.26595703615542517397196645845468323199908103228872e-7), + SC_(0.10280280887589339136e20), SC_(0.49921325198101894818741785761816914940427547878188e-26), SC_(0.5754278161047093248e19), SC_(0.56343122038044392548104906940409766183025596353959e-9), + SC_(0.1429457475085533184e20), SC_(0.14041162752e11), SC_(0.16802999673239973138530304e26), SC_(0.20430738758433914727245592579644201870890111941106e-11), + SC_(0.16893768561871290368e20), SC_(0.38262641055553103797137737274169921875e-7), SC_(0.56400939474343658730504103004932403564453125e-10), SC_(0.77915261196829271698710270612695654113541336314491e-8), + SC_(0.221162365880631296e20), SC_(0.4426536e8), SC_(0.89961878334825112180062577083017316681434749625623e-18), SC_(0.31587331723282902975348605784466775965197768722419e-8), + SC_(0.38083625921602912256e20), SC_(0.14043506688e11), SC_(0.13209346463532805303342509972708285204134881496429e-15), SC_(0.19845010460747579268549749986248030274199334150206e-8), + SC_(0.39525041685152137216e20), SC_(0.49020114305024e14), SC_(0.42052690625e6), SC_(0.13021232016998762845315311903834202914892122783065e-8), + SC_(0.57692237126522896384e20), SC_(0.63429242800339125096797943115234375e-5), SC_(0.31824542466005171886425636864e29), SC_(0.64186366616187505745791782232639309036647875547211e-13), + SC_(0.6036870791327383552e20), SC_(0.7191220191232e13), SC_(0.68897207938789506442844867706298828125e-6), SC_(0.12043989455764291795244235497511573734780580101692e-8), + SC_(0.113674073964877447168e21), SC_(0.183615109375e6), SC_(0.404058591811917722225189208984375e-4), SC_(0.17272793377359922611700097300655234258649545017537e-8), + SC_(0.140771054246300745728e21), SC_(0.4364620208740234375e2), SC_(0.10711124272997777587041261201942927950011067906889e-29), SC_(0.19128232203982141215362761531801216026909489860823e-8), + SC_(0.364701990405672009728e21), SC_(0.29044177532196044921875e1), SC_(0.244647525250911712646484375e-1), SC_(0.12796751058826092356060987463454163668644850859444e-8), + SC_(0.486625867239520206848e21), SC_(0.2663514463837359985504355062296832912238642165903e-19), SC_(0.4719122320543576863524228422930565122003386188676e-26), SC_(0.21640881527203026013646125580930588180406089788286e-8), + SC_(0.532848913858758180864e21), SC_(0.2804503330955387951917145983316004276275634765625e-10), SC_(0.172887280972042231349248e25), SC_(0.41289427669629848273263250460641105378035298472161e-11), + SC_(0.834977504013651542016e21), SC_(0.32316998463633678540817957675549120530669733319939e-24), SC_(0.209530830186377414747767033986747264862060546875e-11), SC_(0.13468629907095616040194262714560119999830811101342e-8), + SC_(0.949726407769284673536e21), SC_(0.3587426362916534827718351152725517749786376953125e-11), SC_(0.15142064652433650485798833454982273253063182524288e-29), SC_(0.12562432085329481933795569086575968864282984883786e-8), + SC_(0.1127446541470904877056e22), SC_(0.3806862878263927996158599853515625e-4), SC_(0.25034581291001142187945358015562879842874632885241e-22), SC_(0.91464529191030229182758659882767566213772192540149e-9), + SC_(0.1146824826980038344704e22), SC_(0.123134608e9), SC_(0.36464645756234167146109012677852867501115952109103e-20), SC_(0.481843713604384086249226418621642455904827200248e-9), + SC_(0.1672886569909744566272e22), SC_(0.22487528568887739897399753816881196044619173335377e-19), SC_(0.185430274308630309240832e25), SC_(0.35928832700209973551798809255248740015187037925404e-11), + SC_(0.188505269646754054144e22), SC_(0.395526275e7), SC_(0.52899930894361691974270976e26), SC_(0.89471124747871019906466742376203647332098667465108e-12), + SC_(0.2739399197316094099456e22), SC_(0.49426852584757985376029409962939098477363586425781e-12), SC_(0.81897635816453328380561562228976552058057336580532e-21), SC_(0.76873664982387114218355255082061632943556726749132e-9), + SC_(0.3095501916077023035392e22), SC_(0.4245943000138700927533056e25), SC_(0.577969363927259602550259712e27), SC_(0.1589649943264256958882523538760948296999724319185e-12), + SC_(0.317074383652647862272e22), SC_(0.89612589356621110444032e24), SC_(0.2342108211970048e16), SC_(0.44476667866878443028414748762621034633361204184133e-11), + SC_(0.32148523727519219712e22), SC_(0.60515264161661452673922225736467336588411333742066e-25), SC_(0.787468255232e13), SC_(0.1992955502112844222913985726620659434572497484674e-9), + SC_(0.5554756105947418984448e22), SC_(0.10294413942178161764146493602212206752710699220188e-18), SC_(0.92091661616996020185937736612924453538653324358165e-18), SC_(0.62923167961838951063873171166895738374530220191663e-9), + SC_(0.6977945379592210481152e22), SC_(0.122192155686207115650177001953125e-3), SC_(0.47637881421824e15), SC_(0.1153564632261944784394049335573252002958633905071e-9), + SC_(0.7487427472337473110016e22), SC_(0.2258636851864666112e19), SC_(0.1236770153045654296875e2), SC_(0.62865406558508979854792094110432122986004126530555e-10), + SC_(0.7671683806842035634176e22), SC_(0.232967583002618994214572012424468994140625e-7), SC_(0.15159157991879019695426709934960030068396008573472e-17), SC_(0.4038180294041886519355322320606675553072565103795e-9), + SC_(0.9581417214429984980992e22), SC_(0.60548121100288e14), SC_(0.4830761391997509580897944218263384646126507721009e-25), SC_(0.11060073021254519253950957826029586265127427792314e-9), + SC_(0.13571258581209030066176e23), SC_(0.2301062643527984619140625e-1), SC_(0.14359374149799930542314996273489668965339660644531e-11), SC_(0.24681851380117913347892801570698661675474438359461e-9), + SC_(0.20821377315431516209152e23), SC_(0.31614863423832064e17), SC_(0.64014885e7), SC_(0.56032089769057234789734583267962199678627548444354e-10), + SC_(0.37633713292972600066048e23), SC_(0.35798815666608753114714008801007788456267201895617e-28), SC_(0.52652046085871970584200887476739039172457523818593e-19), SC_(0.25553690142981741614078754424223919560151234543455e-9), + SC_(0.46577155087788907954176e23), SC_(0.46983051300048828125e0), SC_(0.5281802106793520579230971634387969970703125e-8), SC_(0.12909791823805665675979332172144566111247791403463e-9), + SC_(0.55817784918415767502848e23), SC_(0.229345916576958775296e21), SC_(0.181080293376e13), SC_(0.1750942517696852947520641867453788486695676626497e-10), + SC_(0.62052514199351953719296e23), SC_(0.53361689503260041482896036939970185741799468814861e-19), SC_(0.9145080596241438650400768e25), SC_(0.12855787442319310292082856364396666747106321041193e-11), + SC_(0.80186429235745095942144e23), SC_(0.19381367344362132598689640872180461883544921875e-9), SC_(0.79077168410563814020679685421361419447872087573614e-23), SC_(0.13750535060940713040428146298210611313360396461455e-9), + SC_(0.210179409744077661405184e24), SC_(0.775467603201754089842406683474462128114628768627e-26), SC_(0.1351436267417501696e19), SC_(0.16061787186106943486599939655138202676282554205658e-10), + SC_(0.277204771630374352584704e24), SC_(0.178649388253688812255859375e-1), SC_(0.1626075136e10), SC_(0.33753113782670926573462572782856076414365382937615e-10), + SC_(0.286204729096914532827136e24), SC_(0.18205785323743839398957788944244384765625e-7), SC_(0.6443661400749065109504e22), SC_(0.61611589313719506866679280216440715650666946230444e-11), + SC_(0.292186842467552253181952e24), SC_(0.8000304500511383121995759616e28), SC_(0.12346179962158203125e2), SC_(0.72616523057308291429033051855939086244674258126817e-13), + SC_(0.393077021751861389033472e24), SC_(0.85326592849126535957377352366076878413243909232699e-28), SC_(0.11113272845378330266896682587685063481330871582031e-11), SC_(0.67489587211812322211103469197790993805776456138298e-10), + SC_(0.48688847917066659823616e24), SC_(0.12212552573408426924125600686592708205013835254249e-21), SC_(0.1269279595243605041993096779751049041351507185027e-17), SC_(0.70584084700771314846427190765016318786027316462148e-10), + SC_(0.1063940752263547436662784e25), SC_(0.72511823806464e14), SC_(0.71711195914758718572556972503662109375e-6), SC_(0.12691455907929889535119333530631167321117700493494e-10), + SC_(0.1173381609915570272075776e25), SC_(0.63968165934984593408e20), SC_(0.45652181278958752506159224977408601139211574704291e-23), SC_(0.58112211020391626939353616976453184907767511792909e-11), + SC_(0.2582930687253756671688704e25), SC_(0.98294646430729628238873174517209463374456390738487e-16), SC_(0.523289710174790201335781603120267391204833984375e-10), SC_(0.25714555063314296471836451648878971406174986469531e-10), + SC_(0.4250650378642010683736064e25), SC_(0.556707755327488e15), SC_(0.11061723157371115940205422633821341626969569915673e-24), SC_(0.61911313046606461828731042102268373625125922526936e-11), + SC_(0.6959596827501176488460288e25), SC_(0.56396991515163736959758100092886750224006554485772e-29), SC_(0.164767579074269378772992e24), SC_(0.12400935059791630763953427454646048782024565915924e-11), + SC_(0.952333915392338525421568e25), SC_(0.880691654814744548025200279552e30), SC_(0.154135841378084202520367857664e30), SC_(0.246177174705776556085118115429848578000397850452e-14), + SC_(0.18820064668587267094216704e26), SC_(0.302210201308383830109960399568080902099609375e-9), SC_(0.33895318467300131244893458519885746926814107382597e-21), SC_(0.95534164617635088562542388865960418859145954910582e-11), + SC_(0.30659185015094057321365504e26), SC_(0.7833119869232177734375e1), SC_(0.1693339353088e13), SC_(0.30069886354161477220500208874734175760615704540309e-11), + SC_(0.34176589422481911700258816e26), SC_(0.2594374745967797935009002685546875e-4), SC_(0.32639631015324299667668128677178174257278442382813e-11), SC_(0.61686726715099850869664269896236478457721173132798e-11), + SC_(0.66192871423119660955992064e26), SC_(0.65104581211365760324995297566040105840304400052279e-28), SC_(0.700861590985368820838630199432373046875e-9), SC_(0.51196495026574394146099382874482062017583142405701e-11), + SC_(0.8845430532586596087103488e26), SC_(0.19398925304412841796875e1), SC_(0.41011344364960677921772003173828125e-6), SC_(0.32883289253336466203877579763959792657158933119763e-11), + SC_(0.9036469625899950631026688e26), SC_(0.690641880035400390625e1), SC_(0.1238969862461090087890625e0), SC_(0.31745434338722854630828915646448539066116092136479e-11), + SC_(0.26160499139176195703177216e27), SC_(0.25551566240720070127823149164214555639773607254028e-14), SC_(0.2455513858048e13), SC_(0.10841986934216006931865443143259911799200916785229e-11), + SC_(0.351293559140227787146657792e27), SC_(0.92746285056e12), SC_(0.7325884342193603515625e1), SC_(0.96945165287587645794032553087381848752888109990602e-12), + SC_(0.48555353730121618377670656e27), SC_(0.41366469991877353664505423235416110752209856263632e-29), SC_(0.1080339869874636584075679427013641468012674864323e-29), SC_(0.29736856860648111150067984819515308053148330813485e-11), + SC_(0.576385747842019784963129344e27), SC_(0.42413690615195065447551314719021320343017578125e-10), SC_(0.429480374875002013368430198170244693756103515625e-10), SC_(0.18094440824622577258491088407553210906682687995255e-11), + SC_(0.861307183935277657013354496e27), SC_(0.13938332907855510711669921875e-1), SC_(0.68459855298386769923242872813539959368599538368623e-30), SC_(0.11766749224716932927375683670462877212205767926654e-11), + SC_(0.105505156605401800151924736e28), SC_(0.36789907058298876307844693656079471111297607421875e-11), SC_(0.10516135122406685860405589982143287428734135247055e-23), SC_(0.14057878532181048238381113039649629348002517816159e-11), + SC_(0.3196617981363007079661436928e28), SC_(0.357227936120807498809881508350372314453125e-8), SC_(0.190531306287766710738651454448699951171875e-7), SC_(0.73543482163433806936996915244342283274029549975336e-12), + SC_(0.4932620110638545248192561152e28), SC_(0.39087764918804168701171875e-1), SC_(0.37496308203098109226999139757157200603110425163322e-21), SC_(0.49677918885669315094834554588390832782238505953762e-12), + SC_(0.516425012058796509045456896e28), SC_(0.3000732163818651513042917353020530062720192427143e-28), SC_(0.28816120624542236328125e1), SC_(0.45590953716748809622767271344568834414324208839861e-12), + SC_(0.6724360036363488659828113408e28), SC_(0.39914275e7), SC_(0.5617260831058956682682037353515625e-4), SC_(0.3149211786161963517965091650354250566920868130489e-12), + SC_(0.7376334675354954747676196864e28), SC_(0.3832167254355459644063744e25), SC_(0.86986000872677090266227306614155168063007295131683e-15), SC_(0.60174664703890956134939928112815630373518374796924e-13), + SC_(0.1240879712420966629044649984e29), SC_(0.35030939907262229474824187104684165838808240778235e-22), SC_(0.23553908385443359223970771765266363217961043119431e-16), SC_(0.47464339774120723669000561802171052279059315153073e-12), + SC_(0.13622372113626680630865559552e29), SC_(0.5065993732313771067901500902430633743733778828755e-18), SC_(0.1568245533434264871175400912761688232421875e-11), SC_(0.40583512551936497170672012442547588122036553493224e-12), + SC_(0.21413030105610117647127543808e29), SC_(0.56796892335439872e17), SC_(0.44545595303495604738852208133448318250202646595426e-19), SC_(0.10055266250578662063485344934342287093203087991764e-12), + SC_(0.240611655851932728105631744e29), SC_(0.15126033260477136128765155826087636266509091563425e-30), SC_(0.147685372829437255859375e1), SC_(0.21832951144880765009500199074282822236333957933832e-12), + SC_(0.61731988312258099732254031872e29), SC_(0.47155488899394500240213479534565823420775918905622e-28), SC_(0.4463543296e10), SC_(0.94272971828494080864224866724511415301020102514649e-13), + SC_(0.74469943825056746033385570304e29), SC_(0.25381451890023692523876122624e29), SC_(0.353061568e9), SC_(0.73993207202984769111475156231178550093712585836288e-14), + SC_(0.117661009908837424815142862848e30), SC_(0.434518829345703125e3), SC_(0.429355800151824951171875e0), SC_(0.9266881807310148034392861576649650379030278607074e-13), + SC_(0.593089902380358100434877939712e30), SC_(0.6506956228718475954142519412926048971712589263916e-14), SC_(0.61562469482421875e2), SC_(0.43634363152950073747311554335524072760111106270713e-13), + SC_(0.1138966491359350198995104301056e31), SC_(0.16628866613248e14), SC_(0.83722254681922700089433337836521478725337885862245e-21), SC_(0.19460821722924338220942178264562269988472467417183e-13) + }; +#undef SC_ + diff --git a/test/ellint_rj_data.ipp b/test/ellint_rj_data.ipp new file mode 100644 index 000000000..5833fe475 --- /dev/null +++ b/test/ellint_rj_data.ipp @@ -0,0 +1,816 @@ +// Copyright (c) 2006 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Test data for RF, each row contains in order: +// +// x, y, z, p, RF(x, y, z, p) +// +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 801> ellint_rj_data = { + SC_(0.17778719640226356167347852945229440308832650104108e-30), SC_(0.140657017848070144e19), SC_(0.1004598712921142578125e2), SC_(-0.482979822802320768460049293935298919677734375e-9), SC_(-0.25179478604244669733973586875090503552089558764187e-9), + SC_(0.17971096343704528451751984491965084147481741634467e-30), SC_(0.89101844176293009628514463216220065078232437372208e-17), SC_(0.83764338663550372334498751058362691151424505491344e-28), SC_(0.25525904358368192101317869568e29), SC_(0.55264196567924337745014728862252651162552511364961e-18), + SC_(0.3374483874642825322028299383742755000492569610633e-30), SC_(0.46577155087788907954176e23), SC_(0.46983051300048828125e0), SC_(-0.4337557424349824941600672900676727294921875e-8), SC_(-0.29586494691174345632763961304004697052773087913144e-10), + SC_(0.34628584803331255547073953716003532083475191421235e-30), SC_(0.303861990424576e15), SC_(0.4400977e7), SC_(0.8120083456e10), SC_(0.94406118682435306969091503176397574982473232273954e-16), + SC_(0.52529654597568598687401224634973212611437919511155e-30), SC_(0.58548273201185353977823232e26), SC_(0.20248201901919065867629932142790494253858923912048e-14), SC_(-0.18734671312196414516097698394344282521492941247926e-27), SC_(0.33644488398603828475913952425044358424278852139661e8), + SC_(0.62221619626030569058053553009209074892000950850727e-30), SC_(0.343400804652490021666816e24), SC_(0.67300522327423095703125e0), SC_(-0.27625999903489739661921475999406538903713226318359e-12), SC_(-0.75889847310956721783906856673041055044273454295232e-11), + SC_(0.62687453931329231730011467674071804187172354186889e-30), SC_(0.26256847716031594952568184453411959111690521240234e-12), SC_(0.1063940752263547436662784e25), SC_(-0.136451337486336e15), SC_(-0.67037231980991720071044018087634320636670369191284e-24), + SC_(0.68459855298386769923242872813539959368599538368623e-30), SC_(0.3576658041416457175462348437019377323527317041928e-28), SC_(0.182191292416e12), SC_(-0.363291968e9), SC_(-0.83523497967218414236437029496187282518142685409801e-12), + SC_(0.79319377739814275716610132815898742724164603635128e-30), SC_(0.149536081295309486449696123600006103515625e-7), SC_(0.110968975e7), SC_(0.39225603641135470576542739402404764287313199133678e-22), SC_(0.58404081910170394697384547096361115025170471880191e13), + SC_(0.89048248588914662625862647642457234630028429798521e-30), SC_(0.19709305012440588607850390271996382609153184795395e-27), SC_(0.11493865037410894201880001018568858790897452128896e-30), SC_(-0.12642370874130226532372489600675180554389953613281e-11), SC_(-0.63945430527093703240104260994490070888470387853874e27), + SC_(0.91680349711592282765605796247359202706042027867974e-30), SC_(0.734585367784587264e18), SC_(0.1052182232419898336993917357499253478604839479385e-26), SC_(0.2412866171048483705123448575434206360597333418383e-23), SC_(0.65770139664720747088672501472576668594088104855097e16), + SC_(0.10737441240523986959769665275538259586246072191374e-29), SC_(0.17000503652400689169610359385842457413673400878906e-11), SC_(0.18877310806851385273422393249673449514610540367343e-24), SC_(-0.11655765639250777695895033508093171243654281372297e-28), SC_(0.43166762266635358600263434023771743134211282555865e33), + SC_(0.11714106834475308811660531464919355963339235126279e-29), SC_(0.24252292633056640625e2), SC_(0.367521736353615183872e22), SC_(-0.4790649536162908709687890753434018342726830042011e-21), SC_(0.22701967082264264796089141494292880179559115582815e-4), + SC_(0.15170719443124775223923085751802832491502232570833e-29), SC_(0.5680430348320442135445773601531982421875e-8), SC_(0.264763527397376e15), SC_(0.13735858601648942567408084869384765625e-5), SC_(0.46218215900161368547332976532325866494807961652724e0), + SC_(0.16414311592283418833973460759110207528131746805707e-29), SC_(0.2019777626058022108969416021903358834932440402099e-21), SC_(0.2589416226816e13), SC_(-0.8526492879801228497171905473805963993072509765625e-11), SC_(-0.28262895694754696636159676198309944171160827781306e7), + SC_(0.18514118780253326139548161460302589871739700953216e-29), SC_(0.386711545288562774658203125e-1), SC_(0.23784641790813854100861135520972311496734619140625e-12), SC_(-0.1573566764023808e16), SC_(-0.13857417194455984598251280402623707809865243033107e-12), + SC_(0.27003399803360749163257433233715641043057849874222e-29), SC_(0.4438962912167515363689288870188763384827534963506e-23), SC_(0.75457567458852864e17), SC_(-0.11436019672743120284552631460428528953343629837036e-13), SC_(-0.11008238028815716178378898314905171879133537621566e8), + SC_(0.27604985838665253543615615843832173935883006238474e-29), SC_(0.25638719488e11), SC_(0.441928942759635320832e22), SC_(0.880926163517870008945465087890625e-4), SC_(0.47167946924686267794681000601586718795332807589313e-13), + SC_(0.27727679237026680624547360688641283050751007274628e-29), SC_(0.574552528560161590576171875e-1), SC_(0.599083490669727325439453125e-1), SC_(0.326562033434624e15), SC_(0.59574348217068678836770193704601663452299198297862e-13), + SC_(0.30817991819236751066216748295709401603164490197841e-29), SC_(0.20504934709643312615865232140244245329085970297456e-17), SC_(0.73745083851314552802870354829278820574245401076041e-19), SC_(0.2719417170737870037555694580078125e-4), SC_(0.23633334716008312781302835692937431199979037634428e15), + SC_(0.40116172822941619726509594554900420026234064360422e-29), SC_(0.273342628705129491070976e24), SC_(0.13233334255616e14), SC_(-0.1860324374547417392022907733917236328125e-6), SC_(-0.41662640839102650251726859519844649467351936743988e-24), + SC_(0.41366469991877353664505423235416110752209856263632e-29), SC_(0.1080339869874636584075679427013641468012674864323e-29), SC_(0.31354745663454523796342954256033408455550670623779e-15), SC_(-0.55809874055512409540824592113494873046875e-7), SC_(-0.51464305863761418392864887639923614413758733102008e17), + SC_(0.42974403323689182985245685819973216614391367995564e-29), SC_(0.1226755567577137036837375827502683023340068757534e-15), SC_(0.73181544029618176e17), SC_(0.356656491756439208984375e0), SC_(0.57511100808304419237998619538080396492131651332701e-6), + SC_(0.43727979838159528482554219689363356095561935561375e-29), SC_(0.7798122348544e13), SC_(0.8588943201947652980736e22), SC_(-0.45831213261398661135397416775299529474035908904739e-23), SC_(0.52890106746769770489956114049541553965288744960747e-8), + SC_(0.44767214645416419053919245787147718165594030426536e-29), SC_(0.26553176031232e14), SC_(0.2085586588137791946752e23), SC_(0.790340763648e12), SC_(0.64331758941919291277431102504836936943662726638851e-23), + SC_(0.56396991515163736959758100092886750224006554485772e-29), SC_(0.164767579074269378772992e24), SC_(0.96442290460109492133966568871983326971530914306641e-14), SC_(-0.182207055936620593152e21), SC_(-0.16288586324488794352121434520748982365641475834901e-29), + SC_(0.71060984495908924431726061148159195715493970237986e-29), SC_(0.61842984e8), SC_(0.3555642664432525634765625e0), SC_(0.133759144e9), SC_(0.28834216749836541937606611695450951218706212147855e-10), + SC_(0.80490202086679616440767211156605911864354431197377e-29), SC_(0.263248904192e12), SC_(0.297980882347216843954978816e27), SC_(0.140897846221923828125e1), SC_(0.44824022549527823491543784090039049377556207542239e-18), + SC_(0.93229513968235881657927660254990574951111859851663e-29), SC_(0.366241894662380218505859375e-1), SC_(0.4340599750656e13), SC_(0.105478806095575292710985138176e30), SC_(0.24012124307552155152973805705552466780637562428371e-33), + SC_(0.98984072271443418184618106348812926220946298945177e-29), SC_(0.96973053952e11), SC_(0.1032632680728338890752e22), SC_(-0.34396671690046787261962890625e-2), SC_(-0.96271364111058320397683919234948561206704260148431e-21), + SC_(0.13796957375375282521258282185313922946375173684891e-28), SC_(0.603357184e9), SC_(0.56249721609616214201832207209008629433810710906982e-14), SC_(-0.58723545944948736e17), SC_(-0.58028697480534659570212041732835661494029465370265e-19), + SC_(0.14087878121271588812030448853437982084687159586205e-28), SC_(0.53508747383344354605481852928e29), SC_(0.62704322937005693765167776976277025369199691340327e-17), SC_(0.235499138513371136e18), SC_(0.22302880199358479320924395693872038333122707229792e-29), + SC_(0.19187669896268843882106199046212790333876075179759e-28), SC_(0.26183668812773328027354580171959241852164268493652e-13), SC_(0.5970707e7), SC_(0.3312188584361984e16), SC_(0.92017241034815941174045547113765004391798006057029e-17), + SC_(0.19696330564073048658818435820590984305819001943432e-28), SC_(0.32238440243425309843308409068705787565729120602853e-24), SC_(0.292186842467552253181952e24), SC_(-0.3806432217839128513100120064e28), SC_(-0.82513020195805722794885738700643372535526082646992e-37), + SC_(0.20092729076345475268161641680692456393259236283608e-28), SC_(0.5697601591236889362335205078125e-4), SC_(0.1162191569964638329110528e26), SC_(-0.16412856978298360348657569008246504688175448904985e-21), SC_(0.31839738515206016513063561009026484616216098410256e-2), + SC_(0.20426069933899679481125376462984716200236491481616e-28), SC_(0.3943929741312e13), SC_(0.23412235260009765625e2), SC_(0.10193842560436084643201024e26), SC_(0.21207853870411859766389282691659616682682417758342e-29), + SC_(0.22881844270846610652749196737333504046746971403743e-28), SC_(0.2179837304525471795325908264118197621428407728672e-16), SC_(0.86233940750171127054952112389596408092984347604215e-19), SC_(0.368157728e9), SC_(0.72529706319504487456480463098377420100634724772411e1), + SC_(0.27790564235134654243337661318427908127768828411199e-28), SC_(0.21656921296023725949679903214975529301966616912978e-20), SC_(0.16200692698475904762744903564453125e-4), SC_(0.1635257538336499151053522635820185529564874116204e-22), SC_(0.58938880546601329124832820085911559407364943754411e25), + SC_(0.38307908170359829668907275664710825900011835075561e-28), SC_(0.14482298173190688572731232852675020694732666015625e-10), SC_(0.28193880243627888738304e23), SC_(0.589604375e6), SC_(0.60047466992965579411135347476169935325115071814017e-15), + SC_(0.44431992244584514654678755926404518943295031559691e-28), SC_(0.48174394645500255940076463501836601110994706687052e-19), SC_(0.111553230384106831872e21), SC_(0.26075669569036418811408302358884491864634006858979e-29), SC_(0.41939587045610674859432459314508206490215441802069e15), + SC_(0.45190074381881787947113833644192369803258850957835e-28), SC_(0.903221837196690095865856e24), SC_(0.197033285648384e15), SC_(0.32623424794930855341590358875691890716552734375e-10), SC_(0.61845676096363676818434676933016847521984818056106e-13), + SC_(0.67043661646154515272860423358014245865689394675811e-28), SC_(0.27387009957888e14), SC_(0.11955467241431342253831366051651271417622290817867e-26), SC_(0.87310802944e11), SC_(0.28933511748345186860086749976012259395216961852377e-15), + SC_(0.72950579063556310785863719706888276620113808904403e-28), SC_(0.590493896484375e4), SC_(0.99392208896e11), SC_(-0.19527980804443359375e2), SC_(-0.16079545628777305110796074754669542322724883666308e-8), + SC_(0.94777901458212457182664258521518150736237789261152e-28), SC_(0.4428201e7), SC_(0.2530101420741656313673562390278253679619336276427e-31), SC_(0.26171386241912841796875e1), SC_(0.18205396527964645652297231995003573026647291521867e-1), + SC_(0.11153434660579423094016106021221904046901687488323e-27), SC_(0.750879536326465313322842121124267578125e-7), SC_(0.9310612177071408979145417106337845325469970703125e-12), SC_(0.31839368781345048800513961029245990630442975088954e-17), SC_(0.99763610438792567414792334839900304053722628109961e19), + SC_(0.11969815900999513257745596351318014772377229309672e-27), SC_(0.1668161242237629641861967998969556656319035425895e-21), SC_(0.2847195703125e5), SC_(-0.12113708519078755261729959946670476256258552893996e-18), SC_(-0.58469912606844089535572230231066119898125245972777e18), + SC_(0.14718026449967740426353456716434433271883469801847e-27), SC_(0.14995603510614981277719965857381914152826921874523e-28), SC_(0.1111803961616105472e19), SC_(0.508679587341021033353172242641448974609375e-8), SC_(0.12814521532382957625567079334028430774339053692899e2), + SC_(0.15284006704962108878625465914339150556459706251089e-27), SC_(0.1302969292737543582916259765625e-2), SC_(0.354480992801311143493632e24), SC_(0.37605104e9), SC_(0.18607859430748510805274307470148837042692731526225e-18), + SC_(0.16409516553343363785084154944027139734674650595365e-27), SC_(0.21342112026081242375155966654008687921617593019619e-20), SC_(0.78913960056218451777354516707418952137231826782227e-14), SC_(-0.1775841411699730088002979755401611328125e-6), SC_(-0.17015599078079798684750666220401593398087597887802e16), + SC_(0.18215559766104924690332214579658583558792903588607e-27), SC_(0.214253668673336505889892578125e-4), SC_(0.7301043754462531075178496e25), SC_(0.1068455829996046990704172685582307167351245880127e-12), SC_(0.11526214590948729311397784489864538809888995731212e-2), + SC_(0.20347543751535935665284243442334458135561822645851e-27), SC_(0.440987377729536e16), SC_(0.287391328125e5), SC_(-0.9624498046875e4), SC_(-0.12941824082139400213634919237534112886628905903587e-11), + SC_(0.21993065518257681430269719956396304729998221211967e-27), SC_(0.187684774264479346476449792e27), SC_(0.12580362244240480345597811588829353208161820898425e-23), SC_(0.22742198944091796875e2), SC_(0.28653876882240678152315201694479234788889731288981e-12), + SC_(0.24529570625501572181775218266146503325173309053089e-27), SC_(0.25641463683753128890529908445738982436523656360805e-17), SC_(0.48869192600250244140625e-1), SC_(0.58277403084650757214336531275763466589806549578157e-23), SC_(0.54865012310632304234244856782916104369657655425137e22), + SC_(0.27311316429626442094674415847188181871613594240214e-27), SC_(0.10845691548033613824e20), SC_(0.400673984e9), SC_(-0.570043214020987676349250250495970249176025390625e-10), SC_(0.10919983255480397150227388381021408564707003279548e-16), + SC_(0.37335468826546041784004659441927058513915150877657e-27), SC_(0.1305863312148020278771843072e28), SC_(0.19190377849874556560638664818693364076673812945728e-22), SC_(0.35540905350329594324527042329539745259270322463863e-24), SC_(0.45016943962136224233438107072525001952123968791903e11), + SC_(0.39141497594833019784983821157723932951078514835136e-27), SC_(0.357364711819011162112e22), SC_(0.667275905609130859375e1), SC_(0.1113973178760695906304e22), SC_(0.10731044892019837510186483399833963183503696610428e-29), + SC_(0.39262368958142762707121614333400562989589966094578e-27), SC_(0.37141335660505858048e20), SC_(0.94974504335262194265609991816745605319738388061523e-13), SC_(0.95415474769800466547930994920534431003034114837646e-14), SC_(0.21521859153131137835830879033751142752868026118185e5), + SC_(0.55263283825603576259688637477087526891102295303199e-27), SC_(0.14570690537170526341649579027404115549870766699314e-16), SC_(0.12941088853490731622934705547460304161866623869764e-26), SC_(-0.1672545540175947482997020898665141430683434009552e-14), SC_(-0.5848805184248221012929348390290312121931490384609e25), + SC_(0.56127809703514701593677302775789618452802567406812e-27), SC_(0.9228809556838246663801328395493328571319580078125e-11), SC_(0.86422194270699415064029835775727406144142150878906e-12), SC_(-0.562820141665652672823296e24), SC_(-0.45778174553622802307533432403667235723940695422331e-17), + SC_(0.60846516215783285252980856413082379488997881219342e-27), SC_(0.132249495194510903163748352e27), SC_(0.12553589416499227737881426975438926936441333025911e-29), SC_(-0.18909737802843239184991119827827787958085536956787e-13), SC_(-0.22324611373365460783950827801522919902882544645988e3), + SC_(0.70854346356424203118456450594757848872274827445317e-27), SC_(0.17661992750974924766497868057479880832261187606491e-19), SC_(0.13503679168512e14), SC_(0.99978050734272746818492337364912077787941683637389e-28), SC_(0.40708318789691990117035501094747887529655008140322e18), + SC_(0.95094302859126114224783559857815715520763821290429e-27), SC_(0.24968204839583968605398571483089398270749370567501e-17), SC_(0.9045842452906072139739990234375e-3), SC_(-0.3141900802028363415274725412018597126007080078125e-11), SC_(-0.2449539203496388975798784873357620168741296674017e15), + SC_(0.12077864904222012060382706089847400011033683522865e-26), SC_(0.3538321875e5), SC_(0.13553274662644757345142387805481121176853775978088e-14), SC_(-0.46783368374000422384529373153595852453251469071915e-23), SC_(0.32058124445420069844687161314261210407880181015443e16), + SC_(0.16793731632787596740420928687663819571897812904515e-26), SC_(0.3518738464768e13), SC_(0.98092148011034996368806559985387139022350311279297e-13), SC_(0.7575111198086004736e19), SC_(0.65039496025983965665832815009530617268807417944382e-23), + SC_(0.21755331614817437617422269623130535179188855751664e-26), SC_(0.2500394162552321830617074738256633281707763671875e-10), SC_(0.72982407463299740342380286062361920775211799206766e-27), SC_(0.247376342155264e15), SC_(0.4709775015194030811246957863705675568998476920662e-7), + SC_(0.21971093546487139650040130832038324586684679279314e-26), SC_(0.63975672837429094514688e23), SC_(0.4539182297546489856e19), SC_(0.84259974327325996997237890661914493965691137777885e-26), SC_(0.72996868550237370924565332261049662117667604966241e-7), + SC_(0.22982227952519826732488902867652779863117686563745e-26), SC_(0.33525770516606100656031852480509769520722329616547e-15), SC_(0.2606888e9), SC_(-0.99916063843772263862794266384148578197255119448528e-19), SC_(-0.54923986434781063090698390941147979292728868719051e12), + SC_(0.30925962897528140638428209777131250534488266998312e-26), SC_(0.31183890647663858874949482924421317875385284423828e-12), SC_(0.3378834198657619609917574050322202662555159946578e-22), SC_(-0.194349398430869870379794432e27), SC_(-0.35519121360496594488824546721514240372537441259534e-18), + SC_(0.31280255044167672158720534423471231179079217639416e-26), SC_(0.11511761115021312e17), SC_(0.152494848e11), SC_(-0.42399032147968e14), SC_(-0.30751500494692020409607948030330780776185524378836e-20), + SC_(0.38344456302173223195286237326130017242619817813276e-26), SC_(0.1287535325337014953720268054032123824574619620157e-27), SC_(0.13705567485615801022446745431989965211687137938007e-26), SC_(0.1571656949818134307861328125e-1), SC_(0.53674187831070133121718983787847933752259275058477e16), + SC_(0.42244364291200267661460233749011480646438909669627e-26), SC_(0.477498138427734375e3), SC_(0.17728046030944125033074269511337850424581574770855e-19), SC_(0.13287486274745846826646551445217506469372131620437e-29), SC_(0.74967099308934474834018743849676453308904253460129e23), + SC_(0.44974670432440498891960159215184658369128360699829e-26), SC_(0.7166851806640625e3), SC_(0.1690176772380537639327398519769468654416755271086e-22), SC_(-0.13255775939261839335703285769341164268553256988525e-13), SC_(-0.92291020959456172138416167756711444546699678378756e14), + SC_(0.48457483625271488463909528606996389233426292958429e-26), SC_(0.34402809559391418553704811749276853293953368218006e-26), SC_(0.3426654976e10), SC_(-0.8123994140625e3), SC_(-0.21276722575609983508506693538149322464940493370722e-5), + SC_(0.51977933341075693398899317919762114747383096799438e-26), SC_(0.266911591494591876579813490688e30), SC_(0.53580234866956732986409406294114887714385986328125e-11), SC_(0.254200357322752e15), SC_(0.69110368402320022163407013192490694398911620896064e-27), + SC_(0.58142380573592359976870182103182017051176385183386e-26), SC_(0.37084538151638864883485879886393377091735601425171e-14), SC_(0.369338253312e12), SC_(-0.415793875e7), SC_(-0.29594443532795804955924762850953266350160249353608e-10), + SC_(0.60865414403362585004788968196643994088311036341765e-26), SC_(0.123742392e9), SC_(0.10912435391066719332460695603753930316446923640128e-25), SC_(-0.21994551145136128e17), SC_(-0.49089646351075138912034407328455569366471571417599e-18), + SC_(0.65415581823232869460973666676192176842397421610009e-26), SC_(0.6010023046875e5), SC_(0.234649834188006464409305088e27), SC_(0.9448992204852402210235595703125e-4), SC_(0.12908899786201586710341222112186672810536915287797e-12), + SC_(0.77196710997203362544532626020513746761754665659527e-26), SC_(0.9461145951093060124066579601815525318148601685575e-25), SC_(0.12432433352443051997396992e26), SC_(-0.5228e6), SC_(-0.58320270863535593455030526710289059054679659475945e-16), + SC_(0.92003714929119307170488305653901118029522766122996e-26), SC_(0.207550390625e6), SC_(0.2457815154404734489393749563568292160198325291276e-16), SC_(-0.60690097317509052778401497088e30), SC_(-0.28894533691941038650796939790571157096636712776553e-30), + SC_(0.11635736870608811874540057457479948586226165679891e-25), SC_(0.17671186639527258161297881214290347985361303510387e-28), SC_(0.22745186078595230213685116928e29), SC_(0.15040896827392e14), SC_(0.60417643323129282335411977676602262754782289036307e-25), + SC_(0.11837831633021164326650292224515978315498715423004e-25), SC_(0.27219574150194603134877979755401611328125e-7), SC_(0.15386248307178551019952166983379913769903023636025e-28), SC_(0.87460832e8), SC_(0.46759013370870059772614259918741759451044911410075e-2), + SC_(0.17550213803783570336671080151775868003491756774714e-25), SC_(0.5815067891204096e17), SC_(0.8830627750050583805952e22), SC_(-0.11121447374743291820226533572930904814057839757879e-20), SC_(0.15769698742831680011244511894063175456041078597779e-10), + SC_(0.21288901426793981534691419438692370107505096726852e-25), SC_(0.5289344906157640122368e23), SC_(0.11510209314816e14), SC_(0.4249272918701171875e2), SC_(0.92648999418099558750700023051939135561434274409392e-18), + SC_(0.22996534145332723997852573283005889220225251290408e-25), SC_(0.2971597882982735143010211229658290577049228886608e-20), SC_(0.18105871401684113750600804327424580317078273150599e-24), SC_(-0.52397229666212297161109745502471923828125e-7), SC_(-0.6233022963855150137392227864366754483789628722974e19), + SC_(0.23262787026796459560488491232047662116274797106108e-25), SC_(0.6551325321197509765625e-1), SC_(0.16290072103687030632445066548764228686607680174347e-20), SC_(-0.71544082024462842504808346433264887309633195400238e-16), SC_(-0.98858559565543721166704848282937720760724555227602e18), + SC_(0.27826294978205525521980137859608542144911232096849e-25), SC_(0.87440356429873925658498856170228582591246249688943e-25), SC_(0.897631640625e4), SC_(0.36269013671875e4), SC_(0.28820549055264756824493461253302827935710287805982e-3), + SC_(0.34919368622379363366113344149995795887854964367758e-25), SC_(0.253342638931968e15), SC_(0.7562174072265625e3), SC_(-0.13358971904e11), SC_(-0.12750020412892674391569363800760250228302398440321e-15), + SC_(0.40640597744934306582748730017532743697978442343199e-25), SC_(0.143180119991302490234375e1), SC_(0.7372973065411514426159556023776531219482421875e-10), SC_(0.25642714125858165256502331187864603249699103210135e-25), SC_(0.16806840183003004103311088621594719873834403266311e19), + SC_(0.66556817034054791977215246744979717646037778444601e-25), SC_(0.3026203967488e14), SC_(0.89236039341428712414264201591151959291892126202583e-16), SC_(0.12883867020718753337860107421875e-3), SC_(0.62189172419008455881321301576823244222445688480495e-1), + SC_(0.85862603804552791851901750144015928773062740209099e-25), SC_(0.100811407958566250167576559616e30), SC_(0.4642501040129231797912992205090709774140123045072e-18), SC_(0.6697769276797771453857421875e-3), SC_(0.25597760155920837386398004521369053843545906300128e-9), + SC_(0.10089998747641633763059998585889530904667436839173e-24), SC_(0.694304406642913818359375e-1), SC_(0.12026698098510906626001926156277477275580167770386e-13), SC_(-0.15574649983556515459174837338982445161805756583817e-21), SC_(0.21070067754050388417150557140030549089180888347646e18), + SC_(0.10332494589906572792043563946857459391668980497325e-24), SC_(0.363202080623525101568e21), SC_(0.31611702310388430456632212831036277123075706185773e-19), SC_(0.3834788709626559462375424e25), SC_(0.19494480412558630536765884383661183190812241864799e-32), + SC_(0.11061723157371115940205422633821341626969569915673e-24), SC_(0.46915519457248313591588473499272016198347046156414e-19), SC_(0.292094455289770849049091339111328125e-6), SC_(0.155271419401486900365614907392e30), SC_(0.57608762536920856390418378494213938082655486152011e-24), + SC_(0.14044194233643483429544463937103636612564738772591e-24), SC_(0.11511007425024644135191920213401317596435546875e-10), SC_(0.51712110886912e14), SC_(0.154647670346963546147209084928e30), SC_(0.80304305292253510634817499564421455993777835379657e-34), + SC_(0.21315088219210617005095987448538579660858166553439e-24), SC_(0.95683287681946893599160830490291118621826171875e-11), SC_(0.3115958984375e5), SC_(0.1778788089752197265625e1), SC_(0.13058169388077874810114041226751401624143738160404e0), + SC_(0.32135673854187971346020288041515339098365411363289e-24), SC_(0.32434747971540767529127381233219938105394927058134e-26), SC_(0.697133984375e4), SC_(0.2589941282271635003553456044755876064300537109375e-10), SC_(0.23039925225726596658297664671720758993009085642785e11), + SC_(0.35477071711955241575497882018697768801047953690642e-24), SC_(0.16799917719768968541980944488815402358444957287009e-26), SC_(0.2391704532426279666843648e25), SC_(-0.9987537633480230838468608e26), SC_(-0.11170439213945264439860192238802450754200316519462e-35), + SC_(0.63171350201374448567926894124993295043246632758382e-24), SC_(0.34594001439795600424927311319582115491182941913878e-27), SC_(0.63795086741914598182229839666991088459324643622494e-23), SC_(-0.12552908898662657608504726670096805643886406222975e-23), SC_(-0.95629214294281547762205671403056105369715614300042e36), + SC_(0.67408622876536618485544101470642653945071487431306e-24), SC_(0.2471692337152e13), SC_(0.132961654303503394275328e24), SC_(-0.6788451e7), SC_(-0.33286094625146253776290000962519139005436578926647e-23), + SC_(0.10695072441537967968227132372606381829210908662731e-23), SC_(0.35285359539881765141448911825262056696228540886295e-21), SC_(0.118697354167807134217582643032073974609375e-7), SC_(0.71003743825541563300385305979034455958753824234009e-14), SC_(0.35089989988978881039717099704028606373920726973772e20), + SC_(0.10793397050840846405918406985643934908360164204311e-23), SC_(0.1113690125e7), SC_(0.75714901237548921923889924164984433635483540570021e-22), SC_(0.1261075439453125e4), SC_(0.6676061172726403023950098474250977274537751230218e-4), + SC_(0.14055776683884390935377421641763401121381915626074e-23), SC_(0.23893704704e13), SC_(0.829389522038503243776e21), SC_(0.1426357962191104888916015625e-1), SC_(0.88635117902348692092144299129333228841677282906924e-15), + SC_(0.14272539883421020559268456416931805121571519290313e-23), SC_(0.36702409422429027827712e23), SC_(0.325886788778007030487060546875e-2), SC_(0.45193252206280704e17), SC_(0.78763062610517413780038390821520112762583412544418e-26), + SC_(0.1809900535358029636909945199492450026643175498009e-23), SC_(0.4521496521192602813243865966796875e-5), SC_(0.8669365225699721122509799897670745849609375e-10), SC_(-0.3707945239739274256862699985504150390625e-7), SC_(-0.14189342419296741566740455781008734607151058394391e12), + SC_(0.22979825824841110086247763680828023157010076005236e-23), SC_(0.93045377009959233280039386363886244165766006039391e-29), SC_(0.65658354476458128962806926054440737061668187379837e-16), SC_(-0.9890375e4), SC_(-0.37314934922703109150578387792499853099108043778131e6), + SC_(0.26973976499394821796760860105960760360263583912399e-23), SC_(0.238645943284598871514390339143574237823486328125e-10), SC_(0.23768503319901658006414734019219381138884883419848e-23), SC_(0.527652234461184e15), SC_(0.18190765247531467187582066782163346977401040810669e-7), + SC_(0.28816079125764878356579517477216619003588249370296e-23), SC_(0.882377426023595035076141357421875e-4), SC_(0.1577473308204273238016e22), SC_(-0.42506787746007220974913256138199158917084785613838e-23), SC_(0.2260606231678334898572932268877987581753719916506e4), + SC_(0.32599065541056766574490488870673046781917259195893e-23), SC_(0.192923329050787834358224912384e30), SC_(0.3097524677286855876445770263671875e-4), SC_(-0.100986093568e12), SC_(-0.12548493178296809708310951396530810777296967298351e-23), + SC_(0.34268145332932435562498678286384018714522126103361e-23), SC_(0.5212696875e6), SC_(0.3849909631451136e16), SC_(0.508418523136e12), SC_(0.72162014414273809333019650903497394748188629754886e-18), + SC_(0.56386042011206437624858452043569937567335514927436e-23), SC_(0.7681872205185024e16), SC_(0.23590024284203536808490753173828125e-4), SC_(0.20797140896320343017578125e-1), SC_(0.67249380302320973888478353771861280397144005879171e-5), + SC_(0.62349810733154656348475984703893669394009213746699e-23), SC_(0.3186756486421025349175685783759132587948386466284e-30), SC_(0.206639827322404864e18), SC_(0.5590021601165062747895717620849609375e-7), SC_(0.22500957165169082814761536290836745381917410205781e1), + SC_(0.63670474329021361052387975964176193132554315567972e-23), SC_(0.28074016939545422987264e23), SC_(0.17556869315576290047076213340915273874998092651367e-12), SC_(-0.1531524209357918723637248e25), SC_(-0.48982349819810203820904390481783758594463100466212e-33), + SC_(0.79077168410563814020679685421361419447872087573614e-23), SC_(0.21161119528926488937912315394561157356168786172334e-29), SC_(0.142681614079265273176133632659912109375e-6), SC_(-0.2962966449558734893798828125e-2), SC_(-0.5388142830829322167770886578711317078175280130675e8), + SC_(0.10530228911339364457321075924690629687513476753224e-22), SC_(0.483472707676213598935318528e27), SC_(0.44314850564982699138972646468012326028093886742722e-29), SC_(-0.15681767604224e14), SC_(-0.36835976310730676299394417367344677807328340135985e-24), + SC_(0.10594830308589723556089853200358767617433874974608e-22), SC_(0.32064444894785992801189422607421875e-5), SC_(0.86973574563961136555481660599328536803698241897109e-22), SC_(0.416365146520547568798065185546875e-4), SC_(0.79620513846799906888063680407815759196684641264128e9), + SC_(0.12363192189691982984868135714653404610974263277967e-22), SC_(0.35982240840770946433031796107826494335313327610493e-16), SC_(0.322920703887939453125e1), SC_(0.17277019497651336450993801928633292653556531673917e-28), SC_(0.58833909586422443110978922402391149473021618837133e21), + SC_(0.14850114058724673309995269779678521773758070878557e-22), SC_(0.88135538909447823165237586283144582965931590479158e-21), SC_(0.1617057321379178347342531196773052215576171875e-9), SC_(-0.8139933688528896e17), SC_(-0.41247833740064166396959255912190940026246123128608e-10), + SC_(0.22156699957340918412056171273583613824664784175411e-22), SC_(0.29634864404215477406978607177734375e-4), SC_(0.119116396494848e15), SC_(0.6916903633158144e16), SC_(0.89869667124025102871982743442548976065877351596674e-21), + SC_(0.24417406495470620949839827231771108642655043752256e-22), SC_(0.523734033203125e4), SC_(0.183467209339141845703125e1), SC_(-0.12311917978180542121435792068950831890106201171875e-11), SC_(0.10021776510098977430056989669428609195606706400045e0), + SC_(0.25335998731998849030698736206528910198942927678445e-22), SC_(0.99404931640625e3), SC_(0.204871795654296875e3), SC_(-0.17732928865033286806667264e28), SC_(-0.12038609899020735067631573133766711736365792216423e-27), + SC_(0.26358550214060722931322024418533938455722065441478e-22), SC_(0.4537445192909217439591884613037109375e-6), SC_(0.16901493831299083657975146245536820360788610173586e-21), SC_(0.3449957335950946027262366266885607046788209117949e-18), SC_(0.53858834605867315707828660767349440373027075024073e23), + SC_(0.30833663466070896382006111161955350802310604763079e-22), SC_(0.14264230850949372902972644950540109798353682890593e-20), SC_(0.39928437914112261306202108102764158914510517206509e-19), SC_(-0.3631383378888131119310855865478515625e-5), SC_(-0.1213112071190513079582770219354688035523822648048e17), + SC_(0.32152307578020235295696248397110750608107743175879e-22), SC_(0.77171333762843762060779084777095704339444637298584e-14), SC_(0.1759927888961148057063232441957212337513283273438e-19), SC_(-0.2195341448531573712125986030940794080379419028759e-15), SC_(-0.83912492088792002835980756398061311778687126536753e24), + SC_(0.35030939907262229474824187104684165838808240778235e-22), SC_(0.23553908385443359223970771765266363217961043119431e-16), SC_(0.21413030105610117647127543808e29), SC_(-0.174636600070766592e18), SC_(-0.46589433163832845716014527870522458470408394544791e-29), + SC_(0.40076885532064810604093087225601246825767987047584e-22), SC_(0.3082144530708319507539272308349609375e-6), SC_(0.3078387737274169921875e1), SC_(-0.306541058685140992e18), SC_(-0.52681800193790643826848396355296715809602729336734e-16), + SC_(0.47393636692305733664278524253798572860030269282561e-22), SC_(0.104557464599609375e3), SC_(0.4436923e7), SC_(0.27618875085853910114619402804692072095349431037903e-14), SC_(0.41627799504720195545327833769503897199882913521632e4), + SC_(0.63232212397934060070738019807261992566438379981264e-22), SC_(0.19656669921875e5), SC_(0.85838680267333984375e1), SC_(-0.23773043214411204929354878517112583573636652722882e-24), SC_(0.31955335590579409935215491096676679912082946876264e10), + SC_(0.70129216981394124517358319359700870310181386457771e-22), SC_(0.448211761474609375e3), SC_(0.2475014486984922284531527269369312674318628353376e-22), SC_(-0.15927880178899761053762373919084893714170902967453e-15), SC_(-0.67122396948539779453030130850570885552245981802717e16), + SC_(0.70776411089811926138706988062315912657584959788437e-22), SC_(0.59599255416864768e17), SC_(0.5230804920196533203125e1), SC_(-0.3854616915607552e16), SC_(-0.56932133994575562834803573946131249800277946647555e-22), + SC_(0.71863877935764437100797607417958061393203905709015e-22), SC_(0.174722980453023744e19), SC_(0.13073324703744e14), SC_(-0.26683298312969198105526272e27), SC_(-0.61987281823410613133111980521521492695625553531713e-34), + SC_(0.74762051927350566184369205465550661804385867981182e-22), SC_(0.26862682123178615729311180857336192916092225055347e-26), SC_(0.84223014588956526247936e23), SC_(0.1301752750835069196141448711201873228266493351629e-28), SC_(0.77480252682128625415386515944756210480090439704723e14), + SC_(0.92533743902997465556179028455896593691187845820423e-22), SC_(0.149624073505401611328125e1), SC_(0.8923663750663950598930432e25), SC_(0.102209814528e12), SC_(0.12937126487114329796907026194641071171060108535892e-21), + SC_(0.12289824338974083826108178981784992134240752648111e-21), SC_(0.698235158528e12), SC_(0.12468150316635728813707828521728515625e-5), SC_(0.10894201096789402072317898273468017578125e-6), SC_(0.12957615412040305231117322381745422132654264610854e2), + SC_(0.16709281876399104451896857451468573346753387909303e-21), SC_(0.105505156605401800151924736e28), SC_(0.36789907058298876307844693656079471111297607421875e-11), SC_(0.44886589798289497496477628875480243896348153676001e-24), SC_(0.13623440271665848922782542124576786747468037928652e5), + SC_(0.20480137977551409171276012694776647721228712839547e-21), SC_(0.52543687780784082447767556304253063949231234656262e-27), SC_(0.74365346526107147718978422623603563579308683983982e-18), SC_(-0.483856461841458695971596171148121356964111328125e-10), SC_(-0.39426565357138534357827502672260590696117791350039e21), + SC_(0.24251573418152508201725062311543065773911109772598e-21), SC_(0.15525652356389520625679773191407662125129718333483e-16), SC_(0.5536424766614160801792e22), SC_(0.55148544815829756735230559840777881519665801213215e-25), SC_(0.32091940865145284106703658946942174547858789512328e10), + SC_(0.33101343219058390575744884635968519337456683615528e-21), SC_(0.865986066855839453637599945068359375e-6), SC_(0.60807995981824e14), SC_(0.26816164712173073564413156940593807307003537187008e-31), SC_(0.27974902252196859786372864954767558421438937439356e9), + SC_(0.34232852484893752715336362962101832141392776520661e-21), SC_(0.28644704009199202239603918686080641793337820138912e-29), SC_(0.3675726848e10), SC_(0.12510508e9), SC_(0.13723028519686398282851688320405757273703039656552e-10), + SC_(0.34863327790830662300885857654195697230559147783424e-21), SC_(0.941622257232666015625e-2), SC_(0.1611729536e10), SC_(0.9274045452659739329501556448498433837812626734376e-17), SC_(0.39566873514712382541406214119913485568723205675036e6), + SC_(0.3591942195412689571187997472948797567093848215336e-21), SC_(0.20276001953125e5), SC_(0.23067565607429071342632211210292164463707216326199e-28), SC_(0.2583940140902996063232421875e-1), SC_(0.19204953652332429821075894150537070676350125552163e2), + SC_(0.37816734667556745747025163289015137202397909277352e-21), SC_(0.24983507829808709876928674020746257156133651733398e-14), SC_(0.3642084375e5), SC_(-0.1355347072e10), SC_(-0.27196824430587986423806969973687296096265940478318e-9), + SC_(0.46752986342868921380058106921978264280959081133915e-21), SC_(0.528067822154870882224308224e27), SC_(0.5685052480451848618115072e25), SC_(-0.59099866506205789543864529183945179702415473332877e-24), SC_(0.10198893064940502169045368957140475383349715793657e-13), + SC_(0.60174052366059316378553368571567225298046821535536e-21), SC_(0.10303296875652080092595762343334930266343200944146e-25), SC_(0.308824435098386432e18), SC_(-0.3148147e8), SC_(-0.5787851854562533682141642804720155538631133058382e-14), + SC_(0.75804509525494787096890253236172035888884579435398e-21), SC_(0.8845430532586596087103488e26), SC_(0.19398925304412841796875e1), SC_(-0.68091676439507864415645599365234375e-5), SC_(-0.16442983983143540066860704436157929741482495709281e-12), + SC_(0.79665469950330159961492980445589562332742161743226e-21), SC_(0.83213808566272e14), SC_(0.56174552729503315386117012764088940457440912723541e-15), SC_(0.13703472901716443136e21), SC_(0.83919271962645325476931765438895923092890437515712e-25), + SC_(0.96362472102334232055222076765519517715929964651878e-21), SC_(0.229194643907248973846435546875e-3), SC_(0.354709317473833607436972670257091522216796875e-9), SC_(-0.33682246752230244661008495496185190790821087358786e-25), SC_(0.1973944260376198272439270856288928262653812051008e19), + SC_(0.10655219220160638660658204061957438080199267460557e-20), SC_(0.4329301314592003063808e23), SC_(0.235037732322388428860686336e27), SC_(0.32667630938933585991669946822042821870520724674911e-27), SC_(0.23602272875316702306441670462110405333561131223386e-12), + SC_(0.14091959785120442850992498264083366277255038312433e-20), SC_(0.128396337300146092061566697472e30), SC_(0.31356214050816e15), SC_(-0.38295224717969824478792493889972690038039687589894e-27), SC_(0.10393796341126502848144071691816713657763034488644e-9), + SC_(0.16876090995538029053498222195215869301243571953819e-20), SC_(0.557600690481998400170491904e27), SC_(0.1795816235244274139404296875e-1), SC_(0.1630057900403404570624e22), SC_(0.2114060533267693219940512933825497532721225959918e-32), + SC_(0.16957562025474358445523368203906866558128285760176e-20), SC_(0.11310173639817380151408195664008982106452094740234e-18), SC_(0.15127345e7), SC_(0.6789177e7), SC_(0.10641855692615552707664083478942417992486945142603e-7), + SC_(0.23540851394404172234472420613491522312088477519865e-20), SC_(0.11023617015640261193574593543205827068633346002557e-25), SC_(0.448969248e9), SC_(0.78396986663444566392866475547677659885259515704092e-21), SC_(0.12156371321704405372177687766545701550937262774687e18), + SC_(0.2396832969158041061126381509032573502437912793539e-20), SC_(0.91303257931940606795251369476318359375e-6), SC_(0.62647392985281462272e21), SC_(0.8292595739476382732391357421875e-3), SC_(0.59273041561316941749338662692759842094526004174294e-6), + SC_(0.24141449950396592978032251394348434159198291126813e-20), SC_(0.18448819419086848e17), SC_(0.55460104261295954577309919031335994077380746603012e-16), SC_(-0.5924556271255552e16), SC_(-0.14040633787027708168907065281533134041530653230269e-21), + SC_(0.27589042212186362242123678200494962808875243354123e-20), SC_(0.16342684e8), SC_(0.10564504593401150001064081607182743027806282043457e-12), SC_(-0.38404155731201171875e2), SC_(-0.33731571461048716678767845378048804924400059939478e-3), + SC_(0.32517390764125836699536241120728208287005145393778e-20), SC_(0.32148523727519219712e22), SC_(0.60515264161661452673922225736467336588411333742066e-25), SC_(-0.19435005935616e14), SC_(-0.10774119959550489880494328789835313204223260188677e-21), + SC_(0.45554803310630748334844562492766673056365789307165e-20), SC_(0.11976841560564506196590386921663196062581846490502e-16), SC_(0.17776739501953125e3), SC_(-0.133709103104e12), SC_(-0.39443298300209577370446816065183322691280635216556e-10), + SC_(0.50936808729767273907694413617557038786998191426392e-20), SC_(0.6635618708750336e16), SC_(0.1165913989179818382232387584e28), SC_(-0.34306954063749667618865579754583450267091393470764e-14), SC_(0.22437814945454641629039665333729669609984304587835e-16), + SC_(0.5351417507930536367833561318604895795658649149118e-20), SC_(0.1111488176928805879808e22), SC_(0.286732616424560546875e2), SC_(0.4134069531147588349995203316211700439453125e-8), SC_(0.41054204043107208572454374473593992088110102327675e-6), + SC_(0.8022529108706313066889313475107958772980509820627e-20), SC_(0.15554543059386610748262569359212648123502731323242e-12), SC_(0.1855688655151038464e19), SC_(0.1087248221077504e16), SC_(0.66334090751607720724294127497788518724565684316049e-22), + SC_(0.18673345450030310831705831391483241255002667458029e-19), SC_(0.16140768350376832622251404282443946390469477480956e-24), SC_(0.35751782069791464758326094786154009108614104661683e-22), SC_(-0.33426269598555897417832754399315969839889817194489e-20), SC_(-0.19501514976027199276075970653574148237237843356341e32), + SC_(0.19864569542637633100393889035509276119739752175519e-19), SC_(0.6342787072e10), SC_(0.22447013671875e5), SC_(0.14114877442359296e17), SC_(0.20445336558477412082751152439615217306965941003306e-19), + SC_(0.21109476364529939751075359117074570214356299402425e-19), SC_(0.8756801014807582267041677127782781970980266472715e-25), SC_(0.19232578752860259808180970650021732008816410797181e-22), SC_(-0.128383655936e12), SC_(-0.77558438573112714615319148185209517084593174787914e0), + SC_(0.44545595303495604738852208133448318250202646595426e-19), SC_(0.19550562611967553516834072979690972715616226196289e-12), SC_(0.18799281123449514653822470500968856016443808698568e-21), SC_(-0.1141028984375e6), SC_(-0.53341932867975116606223201954549855219434719308155e3), + SC_(0.48988976909583188869227858043553514022505623870529e-19), SC_(0.20838384443777613341808319091796875e-4), SC_(0.15278292e8), SC_(-0.4315188e7), SC_(-0.24580064922065191728605791899716827200685867274697e-8), + SC_(0.59220483766176692878700381014733800100202643079683e-19), SC_(0.170295034922225631232e22), SC_(0.11738591232e12), SC_(0.357994224542412808887092978693544864654541015625e-10), SC_(0.5570355258929566719050106981498655214839625337254e-10), + SC_(0.66987496460547948918295480848217327007887433865108e-19), SC_(0.11343607001819294972258894083203810348232010076636e-27), SC_(0.865987129509449005126953125e-2), SC_(-0.23070771996939919337765994496e30), SC_(-0.29465261373203272668937214694852909417347758078722e-26), + SC_(0.68420748430509458628227944729238707566310040419921e-19), SC_(0.2356455859375e5), SC_(0.4488765904371071685042063337256479371717432513833e-17), SC_(0.89581251356119876105976700758048657674355763798346e-27), SC_(0.34038212894914778555701304844009055705590488570062e18), + SC_(0.765393322722613581412295230554931890765146818012e-19), SC_(0.50400686450302600860595703125e-2), SC_(0.9949530111868928e16), SC_(-0.5452569894273144049369088e25), SC_(-0.12383048869732072603641424387510064110009830509567e-30), + SC_(0.77559465687389450662322107690749284358844306552783e-19), SC_(0.44456448e10), SC_(0.205457109375e5), SC_(0.261885425731146261350229999616e30), SC_(0.1293487284646541813888039639818870721733813583309e-32), + SC_(0.79555820859346433961923283038897292129831839702092e-19), SC_(0.504025510381092864e18), SC_(0.77791009521484375e3), SC_(0.8640740297015296e16), SC_(0.76745730373666138656321456001439798928453136369171e-23), + SC_(0.855830077692287144095867031448610084964911948191e-19), SC_(0.1095691093411232941434718668460845947265625e-7), SC_(0.25149885914288461208343505859375e-4), SC_(-0.8668230625e6), SC_(-0.362730674616372320893362617779845806049778536958e-2), + SC_(0.99617012202940202076213412410443659439351904438809e-19), SC_(0.2204087310138598244745216e25), SC_(0.3795443262788467109203338623046875e-4), SC_(-0.2224682373046875e4), SC_(-0.87529286389859507044137773984211311214700340581471e-14), + SC_(0.1032382861400751813967549509395982276771519536851e-18), SC_(0.30157555913250196121325186204842339066090062260628e-16), SC_(0.20796434360740761083994803121731046293210742881286e-24), SC_(0.32496745967566525915920276830365278017691450795912e-25), SC_(0.64064009565442704092650504115089752656148580147586e31), + SC_(0.13074397374967548717431355988216612473706845776178e-18), SC_(0.31626431251652320497669279575347900390625e-7), SC_(0.422266894020140171051025390625e-3), SC_(-0.280081402699882469066092314624e30), SC_(-0.31984168666076823129750768694111356366386582599393e-26), + SC_(0.15449182507288713721863232866682302812932903179899e-18), SC_(0.133974442650952596522984094917774200439453125e-8), SC_(0.38424594277974055189327670217216623149703025319468e-21), SC_(0.652243981047462284550420008599758148193359375e-9), SC_(0.14479638868766345890465563414817157313496228971606e16), + SC_(0.1581975683677305589199413998757748345269646961242e-18), SC_(0.404438793566441745497286319732666015625e-6), SC_(0.18932908561168947981796090163086887514509726315737e-16), SC_(0.25596845038945945071386624e26), SC_(0.24310538829610847936752095264592812420662326309052e-20), + SC_(0.16677509527778160624086499150275919589603290660307e-18), SC_(0.50082130538252574789989333416135111329551950562359e-29), SC_(0.27393523857242675896004658903787332135948417999316e-20), SC_(0.69138784823058101751085119520898181200152521341806e-20), SC_(0.1382336801632085910261950405113206345876694297117e31), + SC_(0.18734172628738795211714510124956234449200564995408e-18), SC_(0.63174750153383030237819184549152851104736328125e-10), SC_(0.11239923698099365924906019645674659390465692499866e-29), SC_(-0.12493665475495438732114079503739715479396785516308e-25), SC_(0.71979531950769210186332161695236496779160461744228e26), + SC_(0.20581069188704517551523841788208013525718342862092e-18), SC_(0.79597584432992412060764095271814255738718202337623e-18), SC_(0.75974287571611502022633594876763844865744160884209e-30), SC_(0.353654027201034584064e22), SC_(0.20361005699679254438574738763998872382712274825469e-11), + SC_(0.20609658618625881570536584851127681616844711243175e-18), SC_(0.827880703125e5), SC_(0.1740015537225728e16), SC_(0.53243269389726412383234783131345790874178192098043e-20), SC_(0.14027726109006742105342456541540514539299993472965e1), + SC_(0.21615742888037643762213775404379401123833304154687e-18), SC_(0.22357367204300679512099339784098384888095444001863e-27), SC_(0.22890954226473139536401912863539109821431338787079e-15), SC_(-0.18357486856244363992582619479060346279197801777627e-19), SC_(-0.87018025858581000318689585970087625982626945817888e27), + SC_(0.22622955483503716568203720238550147314526839181781e-18), SC_(0.85913526136044117637383110697157917456934228539467e-16), SC_(0.6036870791327383552e20), SC_(0.5586347360256e13), SC_(0.23372306259719240017221166207655887209227135601964e-20), + SC_(0.22715338633228818618429436723693548572100553428754e-18), SC_(0.20493523314995077838798848e26), SC_(0.89597177734375e4), SC_(-0.17672784097547503280980010775813582313276128843427e-17), SC_(0.1741283841009750289852896743470165528364338969169e-5), + SC_(0.30420727664434581210352358596193944606511649908498e-18), SC_(0.28656053473241627216339111328125e-4), SC_(0.94969911521617292598785838378394608128019171999767e-19), SC_(0.29194834483964315907655873161274939775466918945313e-11), SC_(0.15909034235537062513712744621803951925069372793574e16), + SC_(0.33246523978462334755767677157978212676425755489618e-18), SC_(0.364377344204408356864e21), SC_(0.47603821186323272660218327918596801064457513241734e-24), SC_(0.25814216e9), SC_(0.19269257441096919530694670379923173139739144262915e-16), + SC_(0.38630216070566644236610820764554752315689256647602e-18), SC_(0.13632195402405625179543049996233605725137749686837e-16), SC_(0.246089305877685546875e2), SC_(0.1399240064e10), SC_(0.96160176358544680912132367246233006471552136890136e-8), + SC_(0.5065993732313771067901500902430633743733778828755e-18), SC_(0.1568245533434264871175400912761688232421875e-11), SC_(0.164856496509546701645376742817461490631103515625e-11), SC_(0.11049377558747242034087321371771395206451416015625e-10), SC_(0.24333145548513535763032420069717436356230077382352e18), + SC_(0.56496203192824509654683656084683818221492401789874e-18), SC_(0.3989972265625e5), SC_(0.10386388025240962199904871336025857786466985999141e-18), SC_(-0.1956300555677366237528064e25), SC_(-0.20985760511703309654551952723929281351715000626057e-24), + SC_(0.6105958285639939581856830766448673841750860447064e-18), SC_(0.44425352285770713933743536472320556640625e-10), SC_(0.43310928958817385137081146240234375e-5), SC_(0.3331700224e10), SC_(0.30849153168165211014337299028261182393629600707e-5), + SC_(0.74351356833997344638427159924098930332547752186656e-18), SC_(0.25260515625e6), SC_(0.20705711806766271231819329983944982104260290611819e-21), SC_(-0.97036929889871325401618645800638773835089523345232e-18), SC_(-0.44270929631699238220397253704106482840103445821599e16), + SC_(0.75868695590633990953827528458397466692986199632287e-18), SC_(0.930611462144e12), SC_(0.18147922618313051311153033283257685840533790511131e-24), SC_(-0.4468824462890625e3), SC_(-0.17122605983975616494910436179136666067164567252951e-6), + SC_(0.92091661616996020185937736612924453538653324358165e-18), SC_(0.13634373630111440434120595455169677734375e-8), SC_(0.114086150930432e15), SC_(-0.177961433038848e16), SC_(-0.43742116361186372707057103765791006102104098116996e-20), + SC_(0.17267258802243381463374302664526283024315489456058e-17), SC_(0.106269702911376953125e2), SC_(0.1371270220231999488e19), SC_(-0.2610413929460264625959098339080810546875e-7), SC_(-0.20151384519726350695045106393341169054390534680208e-9), + SC_(0.18472254159580004528743227276699201411247486248612e-17), SC_(0.24041662e8), SC_(0.8549778129918195190839469432830810546875e-7), SC_(-0.9977238732972182333469390869140625e-5), SC_(-0.18777158846153662023863432189916058865485224119003e3), + SC_(0.18755437374336002170666266863907623019258608110249e-17), SC_(0.776579078820560653184656985104084014892578125e-9), SC_(0.1157078125e4), SC_(0.41412740422322618368e20), SC_(0.32798850146389354885754724510156799518229419256579e-19), + SC_(0.22468750405760049766485005051652734664457966573536e-17), SC_(0.20721947294077835977077484130859375e-4), SC_(0.33333534375e6), SC_(0.135856362248887307941913604736328125e-4), SC_(0.33096158156088779129127640067482846233624776319543e3), + SC_(0.23677507366932257725205407394852841207466553896666e-17), SC_(0.19413969366297906845036399083384570651844569511013e-19), SC_(0.9869267940521240234375e0), SC_(-0.527360038883932767848677507072e30), SC_(-0.12360334357574898107848087376524755592649555106606e-27), + SC_(0.26571661369793510632029802376319338463872554711998e-17), SC_(0.8155011072e10), SC_(0.1562779305782940357831823844548056582932221703075e-23), SC_(-0.158908193270690389908850193023681640625e-6), SC_(-0.27385391577969229624957512379090687794348733507394e4), + SC_(0.29343589097392396787046010830923847834128537215292e-17), SC_(0.988066171875e5), SC_(0.24754359063412526643006257824154938047573476511687e-24), SC_(-0.67044108778078208e17), SC_(-0.38893042804795196357465478313524510719593882749798e-17), + SC_(0.32174132911148321865672794483970164947095327079296e-17), SC_(0.716792047023773193359375e-2), SC_(0.1701292973166346200741827487945556640625e-6), SC_(0.1377628393306462584178007091395556926727294921875e-10), SC_(0.36139061055708614171982246452283892649682331582451e11), + SC_(0.33799056846205146343036125611281050851175677962601e-17), SC_(0.940699322882210253737866878509521484375e-7), SC_(0.28067035992549749107627877552034277377768375726476e-29), SC_(-0.162116563320159912109375e1), SC_(-0.8091523759270728825492872210435631725041209007519e5), + SC_(0.34736920428572363268512890321915165259269997477531e-17), SC_(0.2535458095371723175048828125e-1), SC_(0.26639236355453407782438750529430338221052338559396e-30), SC_(0.12926337963453675344812564506800251945041208695431e-25), SC_(0.13925478141182229277143817958943446485388146767132e24), + SC_(0.46574007343104197780350728130827064887853339314461e-17), SC_(0.138342221871913237479424e26), SC_(0.105195244140625e5), SC_(-0.6631563720703125e3), SC_(-0.73605758407512432062994970478816333202168423203793e-16), + SC_(0.48236623830723532346288762173713848824263550341129e-17), SC_(0.1277736968994140625e3), SC_(0.95177386513821491537123975490430893842130899429321e-15), SC_(-0.69188577160303328973482915717587071687158308069902e-30), SC_(0.60363020633141073895228450454658582983021080949361e17), + SC_(0.52655215867828667928533109554578572897298727184534e-17), SC_(0.13102694856934221302627057835335012189043046859638e-22), SC_(0.557648090759990083584e22), SC_(-0.82892526176436831519822590053081512451171875e-9), SC_(-0.49088957920041958614658255603315707964163798177224e0), + SC_(0.55920763625968573348528831146175832600420108065009e-17), SC_(0.4486362300416e13), SC_(0.15860614776611328125e2), SC_(0.67221050854803507997731193412960237765219062566757e-16), SC_(0.57906219363989289634942989085109401080228066042955e2), + SC_(0.55959876861233143262135125706180360793950967490673e-17), SC_(0.95295438343517395336428519424e29), SC_(0.963892161962576210498809814453125e-4), SC_(0.27210720655868048112324686371721327304840087890625e-12), SC_(0.29720419314845298882214745109837232793968747939632e-5), + SC_(0.65166045527188006246692084100224917619925690814853e-17), SC_(0.143673929642318398691713809967041015625e-6), SC_(0.16637075914752e15), SC_(-0.24076418430271488e17), SC_(-0.2475925633548439017994534719021379048651154628174e-21), + SC_(0.68176019291467402705982786548233320900180842727423e-17), SC_(0.254574008285999298095703125e-1), SC_(0.2752869427204132080078125e0), SC_(0.107289657733604314756153344e28), SC_(0.13935903209016660805915740073905015544222859166445e-25), + SC_(0.80231539790356115235923917250460135619505308568478e-17), SC_(0.48408881335894016e17), SC_(0.27153925038874149322509765625e-2), SC_(-0.337505643256008625030517578125e-2), SC_(-0.28880597171948110891286910628894512386618556229753e-5), + SC_(0.80878494291046089240994343416701894966536201536655e-17), SC_(0.1615060552761815478491414528e29), SC_(0.4250650378642010683736064e25), SC_(0.550465557233664e15), SC_(0.7665682204462440903547624951783326488583724992224e-33), + SC_(0.10241893091461084678650897417107046294404426589608e-16), SC_(0.6510811857879161834716796875e-2), SC_(0.33316731575161268994048e23), SC_(0.18685794677734375e4), SC_(0.61366725169065281180715385638412540622056890839468e-13), + SC_(0.12692866469583270565540250585101489377848338335752e-16), SC_(0.195883875046228472335595208704e30), SC_(0.15639441e8), SC_(0.309064334791671808e19), SC_(0.30041981663937451991164678003672469797594750518722e-31), + SC_(0.13036512864804138041871853226361110955622280016541e-16), SC_(0.124515782754304e15), SC_(0.21949353142328154042672849755035713315010070800781e-12), SC_(-0.4362470948864e13), SC_(-0.18391679664039406576787168709927928959902260107376e-17), + SC_(0.20065922661601206578897704790875877733924426138401e-16), SC_(0.45365798223651683691859393121603716281242668628693e-15), SC_(0.160435796715319156646728515625e-3), SC_(0.100037578913478606848e22), SC_(0.34309298342647602644365714826276998591146823420685e-17), + SC_(0.24715665357800610426718818102287400506611447781324e-16), SC_(0.15454139158925192518959104e26), SC_(0.1653589118287872e16), SC_(-0.2871475982666015625e2), SC_(-0.45825038360031330054102253640951199565393489630838e-27), + SC_(0.25599855258170792768942364281414825200045015662909e-16), SC_(0.301153981126844882965087890625e-2), SC_(0.1650323114690053222170624e25), SC_(-0.4537919762181985561255714856088161468505859375e-9), SC_(-0.30097461902825564961699519247715738621951722883131e-9), + SC_(0.26924719012433700180732254469972986044012941420078e-16), SC_(0.41597107766322926041685503761868858418893069028854e-15), SC_(0.29144378043404386068337883462526366473710481841408e-20), SC_(-0.370274230861824e16), SC_(-0.11020218800329703103725212756492238562111267289754e-6), + SC_(0.27022364375023134885640124780437076879024971276522e-16), SC_(0.27506543358959030582888269221280574638246675400223e-29), SC_(0.10302131894484992e19), SC_(-0.109015556161536e15), SC_(-0.97414021009427756192024172486880966682042486122486e-21), + SC_(0.29292129777895166658878423060485829410026781260967e-16), SC_(0.3623176299517048782848e23), SC_(0.17793491421051038908068830934894322126638144254684e-15), SC_(-0.4787837861888e13), SC_(-0.10890581223892275765737490047081064660397125838898e-21), + SC_(0.36988549069333557356951958094981591784744523465633e-16), SC_(0.237869296e9), SC_(0.4375164244540203306430662971835871692327677107354e-28), SC_(-0.2537191845476627349853515625e-2), SC_(-0.12743885591175912587472375525250395917678182573964e1), + SC_(0.40798337829960889676546298421300207337480969727039e-16), SC_(0.1173381609915570272075776e25), SC_(0.63968165934984593408e20), SC_(-0.43809122158741115469526505885267337117583430483592e-22), SC_(0.41013278664791662351936843798955489687158902263061e-12), + SC_(0.4191901866745998263101558034549043441074900329113e-16), SC_(0.10302939847848110674084082249990501622960437089205e-16), SC_(0.2788808e8), SC_(-0.1267284457790898176e20), SC_(-0.12735703951375488492372016599292209320315586877608e-20), + SC_(0.64434140404769448852440039132716265157796442508698e-16), SC_(0.29474087059497833251953125e-2), SC_(0.831660695865821253391914069652557373046875e-8), SC_(-0.361036993563175201416015625e-1), SC_(-0.11781973232364219372724150746716878192145154846968e5), + SC_(0.65862403389962709829644205150600555498385801911354e-16), SC_(0.12589836710231217578946995640063576121650892880588e-24), SC_(0.15267659170852906972300245141565246870264040027036e-29), SC_(0.7304354260722909184e19), SC_(0.57797047912895605829251131842292150283514788749667e-9), + SC_(0.76081326502993809482791598419737510994309559464455e-16), SC_(0.25848253930055992144687593281560111790895462036133e-13), SC_(0.1193103496916592121124267578125e-2), SC_(0.900681217081344e15), SC_(0.13125180019368326604183089646272331872983702071315e-11), + SC_(0.80672926673936861015346000414183436078019440174103e-16), SC_(0.827727653086185455322265625e-2), SC_(0.35112936003017073972307015159908215318207425070796e-21), SC_(0.29399680529072325769822208e26), SC_(0.19644856918418534438823676999423197611328855663516e-22), + SC_(0.17055543082513291604229710429763144929893314838409e-15), SC_(0.6943710148334503173828125e-1), SC_(0.61840874921367523613102701318666731822304427623749e-15), SC_(-0.65621912475964907199619112761115127860814364053887e-27), SC_(0.47019236372761355486203476899973081384386480181909e18), + SC_(0.31185572008064158661122533544585166964679956436157e-15), SC_(0.103208861696e12), SC_(0.608565546572208404541015625e-1), SC_(0.111519998744668930048e22), SC_(0.12950466367514007286341944930272383433997736714818e-24), + SC_(0.37240330274649388175162156855435569013934582471848e-15), SC_(0.39033365298660194220303765177959576249122619628906e-12), SC_(0.49610075975644457590973956939706113189458847045898e-14), SC_(0.2721116561243963616334440303035080432891845703125e-10), SC_(0.55780152222755682040886430039080572919535793869307e18), + SC_(0.42470234622308579170574249772585062601137906312943e-15), SC_(0.273214027401991188526153564453125e-6), SC_(0.2784369140625e5), SC_(-0.122955464704e12), SC_(-0.2055859842856675244661943031533336289283609892675e-11), + SC_(0.43755096253020667185218428585358196869492530822754e-15), SC_(0.62454500948661006987094879150390625e-6), SC_(0.35261424123839905237211021312e29), SC_(0.2980772193152202874814464e25), SC_(0.19302058547089645438660392671915805421584719516624e-36), + SC_(0.45917973708010841743520913382781145628541707992554e-15), SC_(0.19586950889472e14), SC_(0.369513875501284851712e21), SC_(0.32082223828590183491348161974631250424082394394343e-26), SC_(0.22276248931728079203626923790939253098909187196436e-7), + SC_(0.92657114094649205629505850367877428652718663215637e-15), SC_(0.32666126748015500425026402808725833892822265625e-10), SC_(0.62660384591791979530528422515089914668351411819458e-14), SC_(0.1008363437193793288315646350383758544921875e-7), SC_(0.27351103948219950394607048822020994368305988636168e15), + SC_(0.9461294493359490714867732208404049742966890335083e-15), SC_(0.322404707098211673610421712510287761688232421875e-10), SC_(0.431042727657187209984457310208e30), SC_(-0.25939472834579646587371826171875e-3), SC_(-0.1521655516615116593467268230648389654033527386922e-9), + SC_(0.10427554739478122301787887948876232258044183254242e-14), SC_(0.113768251392e12), SC_(0.331932704e9), SC_(-0.146179646215493039614328832e27), SC_(-0.26207104372812352384186903012531171643148694235604e-30), + SC_(0.108844972507862952984525328758991236099973320961e-14), SC_(0.8827765185515090706758201122283935546875e-7), SC_(0.12374138095446693172739117808946185395058137146407e-19), SC_(0.666504180067635268759322624e28), SC_(0.1588943443495131901438841904021519421877511484431e-22), + SC_(0.11863620751000167503896864928947252337820827960968e-14), SC_(0.10501863e8), SC_(0.297662976884736e16), SC_(0.38545965e7), SC_(0.99936758376889422217427377170359816383144088083729e-14), + SC_(0.1327809695148788465823841420387907419353723526001e-14), SC_(0.54374770505732477601443242143375300656771287322044e-16), SC_(0.4562802734375e3), SC_(0.46168245925155835247976908741326032343734780941558e-30), SC_(0.8733391830285032647133058752737690971215445335428e16), + SC_(0.1521184564149866656757037475244942470453679561615e-14), SC_(0.78043131116246277084876840218763405232493823859841e-18), SC_(0.8230711687937861353472e22), SC_(-0.261837272793138107705720832e27), SC_(-0.55131649903407614493273709184047126007708292640109e-35), + SC_(0.15513160671825438827187149115616193739697337150574e-14), SC_(0.128848231629674512384e21), SC_(0.453911488373981184e18), SC_(-0.272230816057921281982464e24), SC_(-0.40900195710569414677231635149406992987060532636958e-32), + SC_(0.27307124609616964874825306708316929871216416358948e-14), SC_(0.182371203125e6), SC_(0.21274221015747239239477678037285035550496559153544e-20), SC_(-0.5080252838134765625e2), SC_(-0.26859329265194173738148314393473631299909977523176e-2), + SC_(0.3175585599804442958615791070542400120757520198822e-14), SC_(0.312386333942413330078125e0), SC_(0.19804426484300995555480765571588347428999554722395e-20), SC_(0.204206969528978780572352512e27), SC_(0.4598628270598817503003423168856717737399091724828e-24), + SC_(0.3191302296140746501407203794542510877363383769989e-14), SC_(0.10381816564935609401309940371061152700193908060555e-22), SC_(0.10607265933659792978005498298443853855133056640625e-11), SC_(0.16962918701171875e4), SC_(0.73699415925533608404039108584957523332422130169253e4), + SC_(0.46327183795158866780328210666084487456828355789185e-14), SC_(0.18185955328e11), SC_(0.451266796875e4), SC_(-0.251544139898814464e18), SC_(-0.79514006265528568085300195845574492625676786528676e-21), + SC_(0.49741023034125236151892224256698682438582181930542e-14), SC_(0.6392963047829880451899953186511993408203125e-8), SC_(0.10878475189208984375e2), SC_(0.59239240047379667314374328772998870027484841910281e-26), SC_(0.23259804734945165563893593397187160915487194491047e13), + SC_(0.10676147262794234704674778413391322828829288482666e-13), SC_(0.43214794983836329352138753913566138198376620493946e-21), SC_(0.13713993780991436762807365477498389161326031171484e-19), SC_(0.459039679325405184e18), SC_(0.50634806424548958080863973931752282050795937648579e-9), + SC_(0.11175146230483004594624674155056709423661231994629e-13), SC_(0.13292268387650598312620966562043814396254504117678e-22), SC_(0.573736336217933740044827573001384735107421875e-9), SC_(-0.159210900019246537340222857892513275146484375e-8), SC_(-0.51263188177194923566692827645827740096413880118868e15), + SC_(0.11434902436285691862405400343050132505595684051514e-13), SC_(0.11365004815161228179931640625e-1), SC_(0.27400035858154296875e2), SC_(0.203586085846411726815232e24), SC_(0.14865595781712049736623538981536601361501882271293e-22), + SC_(0.14319996604521614824712116842420073226094245910645e-13), SC_(0.502013623046875e4), SC_(0.439923968e9), SC_(0.77103273938046509121536e23), SC_(0.13127867694451221772529352791773418912044804650146e-25), + SC_(0.14452686009774895481427847698796540498733520507813e-13), SC_(0.669478515625e5), SC_(0.10465634918212890625e3), SC_(0.449877052233205176889896392822265625e-5), SC_(0.83920859706880014597252065499174465623352445982047e0), + SC_(0.15741248433312655941040958396115456707775592803955e-13), SC_(0.55817784918415767502848e23), SC_(0.229345916576958775296e21), SC_(0.1422582611968e13), SC_(0.11042022857014238245111043582622863593162051496085e-26), + SC_(0.18072887885680830044599076700251316651701927185059e-13), SC_(0.9294252867331209699841565452516078948974609375e-10), SC_(0.9254750999199875072e19), SC_(0.24365014356228265782400482870787190672759117303012e-27), SC_(0.12667200196814033712749982529939469166787145122709e5), + SC_(0.20907895301679711719256005153511068783700466156006e-13), SC_(0.893892793119022144310292787849903106689453125e-9), SC_(0.40748735773377120494842529296875e-3), SC_(-0.103842619771060224e19), SC_(-0.11301079598625095571338471461207721603886044979147e-14), + SC_(0.33361036372650532122463573614368215203285217285156e-13), SC_(0.13796345e8), SC_(0.198710050816e12), SC_(0.45089474962351026470181957815863910479792231456031e-22), SC_(0.10816863888512989997095493619370003783591021195154e0), + SC_(0.39424006729538510485078006695403018966317176818848e-13), SC_(0.57692237126522896384e20), SC_(0.63429242800339125096797943115234375e-5), SC_(0.2403500367487817497607929856e29), SC_(0.4949809604390674467680517177597868641410256650499e-36), + SC_(0.64787469822562976373703236276924144476652145385742e-13), SC_(0.901123595574664186118012928e27), SC_(0.52348109979648e14), SC_(-0.92166092189216471698798669434216327954012968124006e-30), SC_(0.1090156365125808257716087226492704191375893460149e-11), + SC_(0.76942494259615856755374352360377088189125061035156e-13), SC_(0.66135648510840369201714235709365829468252447054244e-26), SC_(0.14856115097057909918421003681032743770629167556763e-14), SC_(-0.7298071485930166476255264768e28), SC_(-0.49962292172186675708556937635053531938468515532145e-20), + SC_(0.85809811133878005628972118756792042404413223266602e-13), SC_(0.231948544e9), SC_(0.35943559868918673050330880869296379387378692626953e-12), SC_(0.33152778065911218176e20), SC_(0.14822334045625801548341774563889185100510953334425e-21), + SC_(0.89437253447417069951441703778982628136873245239258e-13), SC_(0.6810400963385563236916002816e29), SC_(0.3797301248e10), SC_(0.126497719300441316942690648064e30), SC_(0.20671010726926483227997444653788556014049212414485e-41), + SC_(0.10487268063512356075506204433622770011425018310547e-12), SC_(0.63315844405084463121122798948200730173070530440449e-26), SC_(0.2820757454293782533282725888e28), SC_(0.1287141702694919577644258606866425886927629562706e-20), SC_(0.7625540806887901305440815493898234863502803377371e4), + SC_(0.12564036996117605715639342633949127048254013061523e-12), SC_(0.9483047886198053293833322496e28), SC_(0.12390550980849227670011272750549835564015666022897e-16), SC_(-0.273697622787949512712657451629638671875e-6), SC_(-0.89824853650459102430566076692966043038795156299974e-6), + SC_(0.13318344907822798894869720243150368332862854003906e-12), SC_(0.648778863965304708472103811800479888916015625e-9), SC_(0.15799224663005841208176941239949009343490615719929e-18), SC_(0.438925457000732421875e1), SC_(0.15110069213515929983115826328865961997601215547368e6), + SC_(0.15615465734711286849289990641409531235694885253906e-12), SC_(0.24870398826241113884932236596184834676037667122728e-20), SC_(0.12784377253954858878954355810853016350847610738128e-17), SC_(0.276238139392e12), SC_(0.19786554171476684761944278128724044945577023531761e-3), + SC_(0.15995684594580228399252064264146611094474792480469e-12), SC_(0.170420291286861873152e22), SC_(0.286204729096914532827136e24), SC_(-0.8279771890329357120208442211151123046875e-7), SC_(0.65615234452566227821219269595685128171534111213131e-21), + SC_(0.18399165654589544338648465782171115279197692871094e-12), SC_(0.59311699931923680645911412736e29), SC_(0.33036756992e11), SC_(0.93300527026496382632103632204234600067138671875e-10), SC_(0.10720127778005331975224440744322785134582808832009e-13), + SC_(0.29870528793496387010009129880927503108978271484375e-12), SC_(0.2262512535863296e17), SC_(0.9036469625899950631026688e26), SC_(-0.21871623992919921875e1), SC_(0.5103356109347619113331878509059276755907702474308e-27), + SC_(0.30400416342266090019563762325560674071311950683594e-12), SC_(0.1399889375e6), SC_(0.3335612032771822899429376e25), SC_(0.21259690531047524889030064798589592101052403450012e-15), SC_(0.34455005796404051985506726831103545959478382478102e-7), + SC_(0.87205828495917625531319572473876178264617919921875e-12), SC_(0.17828132250559781516117823566813499739247164401987e-29), SC_(0.10616928431838319469314500884810081871023612620775e-18), SC_(-0.212311297277034496e19), SC_(-0.14143132703507446245366882656756991039691353152788e-10), + SC_(0.11046793904970209077021081611746922135353088378906e-11), SC_(0.395945312256e13), SC_(0.516478977703936e15), SC_(0.33489388749831173392049517199361798372968246351178e-25), SC_(0.10261044155333465315175909578459653562547787407513e-5), + SC_(0.14650218971984374505268533539492636919021606445313e-11), SC_(0.827417719457900920832e21), SC_(0.99161693125401212389746774533705320209264755249023e-13), SC_(-0.4229425548605760995328e22), SC_(-0.95402427001540155956102931856707223924536036302336e-30), + SC_(0.15171425313958986080820068309549242258071899414063e-11), SC_(0.3374702880859375e4), SC_(0.8743139992458493952e19), SC_(-0.6686860561370849609375e1), SC_(-0.3002438908822274925277408606109986399523433785326e-12), + SC_(0.24519117205329399311608540301676839590072631835938e-11), SC_(0.37266163191353868233690604938601609319448471069336e-13), SC_(0.17164059241625931492502552475279821268816515811295e-22), SC_(-0.32801553809475356226630220035122305463539532643935e-24), SC_(0.63515296008495797097992261176651053432804471005576e25), + SC_(0.27182867502056895503415034909266978502273559570313e-11), SC_(0.9611178584064393216e19), SC_(0.43522266445974666852999678045371003546350584579075e-29), SC_(-0.2494812472325268841899095431527758059964128278807e-20), SC_(0.13480851526964308079121034950043024547154027314665e3), + SC_(0.29120870211757354795167884731199592351913452148438e-11), SC_(0.3887373507426089705638133735808321250759789222684e-21), SC_(0.6547148956315140821970999240875244140625e-7), SC_(0.12526326011789939681625675755603012304041296576251e-24), SC_(0.16426629492670114906905094296695909709456996976342e22), + SC_(0.29600787966599373390863547683693468570709228515625e-11), SC_(0.3973922277237145706452353958928330746047663524223e-21), SC_(0.22686514883719433640502094462476634362246841192245e-15), SC_(0.2356390072724299979828321838226656836923211812973e-15), SC_(0.74826530999192537579310495705584399994314811536455e22), + SC_(0.33891997281570995781407873437274247407913208007813e-11), SC_(0.15147392863409494812524544e26), SC_(0.1021753437413508436293341219425201416015625e-7), SC_(-0.163353502834470571474944e24), SC_(-0.1727660327837803015143950138748892976048780042624e-33), + SC_(0.40045809550359745543346434715203940868377685546875e-11), SC_(0.15545443197401612718091273500581415284438335788764e-21), SC_(0.53111681546452992e17), SC_(0.84488384e9), SC_(0.37119938685395575343200714957460497696569465138723e-15), + SC_(0.63733484635675186069647679687477648258209228515625e-11), SC_(0.14835896334213958139303302711486596921615075148304e-29), SC_(0.149358570575714111328125e1), SC_(0.1017402710753804288e19), SC_(0.34927848403310092955516711143449217869038874100458e-16), + SC_(0.883858437827900189631691318936645984649658203125e-11), SC_(0.2675533852189090413285581307472793475995567477404e-29), SC_(0.89227636509894153737931787873094435781240463256836e-13), SC_(-0.258020797841408e15), SC_(-0.14434887711525503924559220378358629382677384522122e-7), + SC_(0.10552792147067169281626775045879185199737548828125e-10), SC_(0.2806226621032692492008209228515625e-4), SC_(0.5067019649024e13), SC_(0.310628116130828857421875e0), SC_(0.22948470574146532069261551613760894946094642379269e-4), + SC_(0.2587575986812140627080225385725498199462890625e-10), SC_(0.133434101007878780364990234375e-2), SC_(0.18789219970703125e4), SC_(0.8687275e7), SC_(0.67256865003055763773290668910027936489380689481087e-7), + SC_(0.2844938000456931348480793531052768230438232421875e-10), SC_(0.198093310108123529216e21), SC_(0.2637005062144e13), SC_(-0.827058865837670964538119733333587646484375e-9), SC_(0.8276142376917439023807843720956102108378867803271e-12), + SC_(0.287181702030014918136657797731459140777587890625e-10), SC_(0.20763506912126383440731014865551860154591068408081e-22), SC_(0.15903788229459968e17), SC_(0.2465913695459676091559231281280517578125e-7), SC_(0.39291472710261624671330092591045600800641927445849e1), + SC_(0.429480374875002013368430198170244693756103515625e-10), SC_(0.9581417214429984980992e22), SC_(0.60548121100288e14), SC_(0.44916436473898050918918476221330306438783187827912e-25), SC_(0.10782263530497046514179141587685299463453106251202e-10), + SC_(0.475504878527654994968543178401887416839599609375e-10), SC_(0.458113936316282949337088e24), SC_(0.2879962761326293474439808051101863384246826171875e-10), SC_(0.38806094851569314955264e24), SC_(0.44407680593672734398585252161238633184776723369752e-33), + SC_(0.48257405016460808155898121185600757598876953125e-10), SC_(0.1253181934356689453125e1), SC_(0.5335487261327490936842747904e28), SC_(0.2843008728868403019776e22), SC_(0.36520008616040154920452563084694127248774062394094e-33), + SC_(0.5260512858651367196216597221791744232177734375e-10), SC_(0.211335212615120842253257408512e30), SC_(0.253812432e9), SC_(0.32648756173466563987677623601222492988327417151595e-20), SC_(0.70282134149192367841270463560033057613589565263926e-12), + SC_(0.66436224577248736977708176709711551666259765625e-10), SC_(0.1287645825073152e16), SC_(0.1319026512921362432e19), SC_(0.2489169500768184661865234375e-1), SC_(0.7247273265118998238267296449606572590546815405985e-15), + SC_(0.8522828276458227492184960283339023590087890625e-10), SC_(0.55899994919408890758916186314309015870094299316406e-12), SC_(0.97513915318293903280056494908833997214969713240862e-17), SC_(0.24821585375603486028032247491330840316603456585653e-21), SC_(0.83208726697417671103165106753795798717568056161077e21), + SC_(0.109099930478695483770934515632688999176025390625e-9), SC_(0.270692863967232e15), SC_(0.29007003659667536871391374330266324510496644961677e-21), SC_(0.662604696117341518402099609375e-3), SC_(0.23398784686072748897166785500571130408922056113099e-2), + SC_(0.111468466401642984919817536137998104095458984375e-9), SC_(0.68559452379320356268932457055598206352442502975464e-14), SC_(0.322791595458984375e3), SC_(0.83594068023309085237182447514214800321497023105621e-15), SC_(0.34775042288691702425388939755810663167943433025528e12), + SC_(0.1237108193663516431115567684173583984375e-9), SC_(0.393077021751861389033472e24), SC_(0.85326592849126535957377352366076878413243909232699e-28), SC_(0.40366524684497251396209094309597276151180267333984e-12), SC_(0.10265993706475554621328701844340119184273235491136e1), + SC_(0.1776234992423297853747499175369739532470703125e-9), SC_(0.648145680315792560577392578125e-3), SC_(0.190692115536150528e18), SC_(0.30884640683662492599559357131511205807328224182129e-13), SC_(0.10167409595598760347845694686063659073232295746773e0), + SC_(0.34717195784850218842620961368083953857421875e-9), SC_(0.40871053623249201233388894216602693632012233138084e-16), SC_(0.59489389257909689226875975750249807283420722114897e-22), SC_(-0.183823234412017200156697072088718414306640625e-10), SC_(-0.63436985009846869656045408170236548101195232061781e17), + SC_(0.451758797037626891324180178344249725341796875e-9), SC_(0.344271373748779296875e1), SC_(0.342428213051392e16), SC_(0.1515062195912704e16), SC_(0.58743056645089248605803114478066356773725635368598e-21), + SC_(0.626809104620207335756276734173297882080078125e-9), SC_(0.1127446541470904877056e22), SC_(0.3806862878263927996158599853515625e-4), SC_(-0.55809958980228878891696818200743746701819603117656e-22), SC_(0.9088819150803773040608210209095743642460278178193e-2), + SC_(0.9231155839728444334468804299831390380859375e-9), SC_(0.148210436978768456128818797878921031951904296875e-11), SC_(0.2802693296844053863329895203088462651841439310374e-20), SC_(0.11801873e8), SC_(0.38526292759511738659280361222341157245243748651719e-1), + SC_(0.21980717246350423010881058871746063232421875e-8), SC_(0.49538579618632616607953877974068745970726013183594e-12), SC_(0.294444323290692452352e21), SC_(0.218038891637768413660577792e27), SC_(0.27986670037155934324525781256123082672651258233883e-34), + SC_(0.2402602117257401914685033261775970458984375e-8), SC_(0.42540803535525434114020215409929237537767221510876e-19), SC_(0.4942538125e6), SC_(-0.19200403581726623552300118153495613667215008435463e-24), SC_(0.28901838947785414545228654421464493653202761440022e13), + SC_(0.2502269946802471167757175862789154052734375e-8), SC_(0.439172573387622833251953125e-1), SC_(0.1484655421266577700334376999080632231198251247406e-14), SC_(0.217515168e9), SC_(0.64008842323926885588584314270491747993393491744903e-6), + SC_(0.27705213678785867159604094922542572021484375e-8), SC_(0.14060803910087571466647204943001270294189453125e-9), SC_(0.79591391331746227542562333034936727926833555102348e-16), SC_(0.1130919989314004038414218297758928599705541273579e-17), SC_(0.15279162108642205238638113706086141458303770987596e19), + SC_(0.29745914620349367396556772291660308837890625e-8), SC_(0.135719256064e12), SC_(0.26312211439804296018980907041482450328759995494821e-24), SC_(-0.72325931008e11), SC_(-0.26025493618765031944582661408500103876435030194882e-14), + SC_(0.3035781848126362092443741858005523681640625e-8), SC_(0.60851728009920512e17), SC_(0.22169422886076416e17), SC_(-0.771180726587772369384765625e-2), SC_(0.58356075827457693669918024467253431530422820737776e-18), + SC_(0.357227936120807498809881508350372314453125e-8), SC_(0.190531306287766710738651454448699951171875e-7), SC_(0.60475637804894883005346617466102543403394520282745e-16), SC_(0.25554468064755161278679088804333119355760572943836e-18), SC_(0.16050376680749540915211619360854206253328830762671e18), + SC_(0.5805298908256872891797684133052825927734375e-8), SC_(0.396956085205078125e3), SC_(0.23182911778654921095613188825248071874636675293591e-26), SC_(-0.14757916550624509427712e23), SC_(-0.14141726889735103114725839711364436845767347042983e-21), + SC_(0.658921095464393147267401218414306640625e-8), SC_(0.36312374337780811635291334191609812561286202425848e-24), SC_(0.3520565633613824e16), SC_(-0.95283742553550204184526308849589870675345082418062e-20), SC_(0.39383218115942262166676009411857129347834260605038e5), + SC_(0.7181391925570324019645340740680694580078125e-8), SC_(0.861479942937393161628278903663158416748046875e-9), SC_(0.65218459540529447227428438016e29), SC_(-0.21721630536744498257695212828366493340581655502319e-16), SC_(0.43184695581467687921857543427535645783935321162383e-4), + SC_(0.7274625346553875715471804141998291015625e-8), SC_(0.5271569847309365286491811275482177734375e-7), SC_(0.1207270608892123232922376449582392565762489766712e-20), SC_(-0.907864838861627276855870150029659271240234375e-9), SC_(-0.18846907217766321197261291037267280508950899795828e13), + SC_(0.768561481123697376460768282413482666015625e-8), SC_(0.746742980114208784384e22), SC_(0.1620157166788452543088295936e29), SC_(0.96551501855451422117358279079493699192937583575258e-20), SC_(0.44783395055835276765234394980567707654119207248648e-19), + SC_(0.1103230484744699424481950700283050537109375e-7), SC_(0.227022734375e5), SC_(0.314360886477516032755374908447265625e-5), SC_(0.230793674752e14), SC_(0.10938135963248928821050633939985227713352325798319e-13), + SC_(0.116516947201716902782209217548370361328125e-7), SC_(0.113272657281024e15), SC_(0.5554756105947418984448e22), SC_(-0.22779259015063853832005124830373254951609851559624e-18), SC_(0.45626261425943381204356625680683410530260337151658e-12), + SC_(0.1463924537148386662011034786701202392578125e-7), SC_(0.2235086485323776e16), SC_(0.92567377136320512e17), SC_(-0.502123015962624e16), SC_(-0.2041653512744934342005763872578190276494619329949e-23), + SC_(0.153310129036299258586950600147247314453125e-7), SC_(0.15191832576e11), SC_(0.64654147584e12), SC_(-0.109413349622840760752970661888e30), SC_(-0.11168340111963906937898650420056211408951891171444e-33), + SC_(0.284060650557194094290025532245635986328125e-7), SC_(0.65708584402419712e17), SC_(0.79746025e7), SC_(-0.103757918404631337107456e24), SC_(-0.14440448978129240797306397158111690006375043493078e-29), + SC_(0.46037570200496702454984188079833984375e-7), SC_(0.2497748291015625e4), SC_(0.37057185207840757381302088102614789022482000291348e-16), SC_(-0.88649561934381511385527829816055600531399250030518e-14), SC_(0.19027270633146013510916093701048426045586392144417e9), + SC_(0.48485627957006727228872478008270263671875e-7), SC_(0.21549719333954656317750013417980168338661728019701e-26), SC_(0.8410253024559104e16), SC_(0.341893185536e12), SC_(0.21425799803606972737445032217541375450102598435277e-17), + SC_(0.56142742010933943674899637699127197265625e-7), SC_(0.7819102165740332566201686859130859375e-7), SC_(0.51380279967715852817988775314006488770246505737305e-13), SC_(0.200521964168113291264e21), SC_(0.91091672374787343450225990261465422781914984618348e-16), + SC_(0.5888978904522446100600063800811767578125e-7), SC_(0.19738892977879712492899096608329417718301519724111e-25), SC_(0.555923861611518077552318572998046875e-6), SC_(0.1141436e8), SC_(0.8992374739358728447181125424661522884820716934695e-3), + SC_(0.64836257251954521052539348602294921875e-7), SC_(0.11649136528196886067987694424015483218044894522109e-26), SC_(0.36767340167168e14), SC_(0.493704617023468017578125e0), SC_(0.86342692064424182784615665841513322156909113570646e-5), + SC_(0.9426266700529595254920423030853271484375e-7), SC_(0.1065340096e10), SC_(0.675034e7), SC_(0.11022882697838232458615974340698784317282843403518e-17), SC_(0.15300795293140386147904527178989123927003675188183e-2), + SC_(0.11666782739894188125617802143096923828125e-6), SC_(0.34799534478224813938140869140625e-3), SC_(0.131195640625e6), SC_(-0.48978190038186971237336846953739494248125652120507e-22), SC_(0.2388945504612328758901280969267509380243643847542e5), + SC_(0.153669333258221740834414958953857421875e-6), SC_(0.24841828125e5), SC_(0.12379233211158146427122161981060344260185956954956e-13), SC_(-0.64715270091955995318595980768383579828650908893906e-19), SC_(0.29560340817341301491613970695503673872817011849739e10), + SC_(0.1622084795371847576461732387542724609375e-6), SC_(0.29883875829401013719709328056513446297320465063827e-30), SC_(0.4141578515625e5), SC_(-0.118396030554210304e19), SC_(-0.18077721597744865226496613232167680429316701947429e-18), + SC_(0.2007315487162486533634364604949951171875e-6), SC_(0.484821384427736035149791860021650791168212890625e-10), SC_(0.35244982272e11), SC_(0.66975396207649619968e20), SC_(0.50639601528733663055818645133500624155185681965241e-23), + SC_(0.2170967974279847112484276294708251953125e-6), SC_(0.10346977737162760356637413145463933451898572504768e-25), SC_(0.52484349362176e14), SC_(0.14238722776793028002018104416492860764265060424805e-12), SC_(0.36977717259341740049057345079935123328376787743457e4), + SC_(0.355180674205257673747837543487548828125e-6), SC_(0.20287806536730540463153715791122522205114364624023e-12), SC_(0.18075361207792184359277598559856414794921875e-8), SC_(-0.14129753935776534490287303924560546875e-5), SC_(-0.13543439921672448592686319863688635646982483335197e11), + SC_(0.355791058836985030211508274078369140625e-6), SC_(0.41966422727541823005436582324882699435164568058099e-20), SC_(0.56214188225567340850830078125e-3), SC_(0.21398259809600358456883901528625608132466446291041e-28), SC_(0.33532126652331267769382132479020153519397794821114e17), + SC_(0.364147808795678429305553436279296875e-6), SC_(0.62041543644016967787649385890347275562817230820656e-16), SC_(0.112208826976711861789226531982421875e-4), SC_(-0.4890405858049007292720489203929901123046875e-9), SC_(-0.25380132927950750614745151203507002931269737872133e10), + SC_(0.41233806769014336168766021728515625e-6), SC_(0.36580066080205142498016357421875e-3), SC_(0.78368969261646270751953125e-1), SC_(0.1548500925058203388738880396102715053530118893832e-17), SC_(0.12053469362478877684232105823926676391853113939021e8), + SC_(0.468250874519071658141911029815673828125e-6), SC_(0.4736783503633416192e19), SC_(0.25657845772245226891152621395363904506655393367165e-25), SC_(-0.11853116e8), SC_(-0.18751179628961700849769255337274434337397473288701e-14), + SC_(0.68897207938789506442844867706298828125e-6), SC_(0.221162365880631296e20), SC_(0.4426536e8), SC_(0.64514155343180504894614159597243663313292927341536e-19), SC_(0.1812732423002478587070521538978714785538743939722e-8), + SC_(0.71711195914758718572556972503662109375e-6), SC_(0.1054551841401995264e19), SC_(0.149447225428200880514850723557174205780029296875e-10), SC_(0.11321845307702313256969107657851948689486931698411e-21), SC_(0.12039655478363621612864710662326156428033821468659e2), + SC_(0.8440589454039582051336765289306640625e-6), SC_(0.16500875e7), SC_(0.177505408e10), SC_(0.14981564160172185125964081263351575235009960351817e-21), SC_(0.11359400041521647880429712249939997827113705715643e-2), + SC_(0.9389232218381948769092559814453125e-6), SC_(0.34272542467624321146683392e26), SC_(0.33883824818190138074762051584e29), SC_(-0.268267505598857216e18), SC_(-0.4765736122164139026308620711936669799666700219745e-39), + SC_(0.14005109960635309107601642608642578125e-5), SC_(0.16255437736119050960896e23), SC_(0.1638076981752402804736e22), SC_(0.12357156872339849389749039110242279093654360622168e-16), SC_(0.65926904064845259233343135625850082478676926387063e-17), + SC_(0.1407973059031064622104167938232421875e-5), SC_(0.1600049396020919356358656e25), SC_(0.56118849892227423295041715755205124853931264450324e-24), SC_(-0.24559907248456875315540531845570626501285005360842e-16), SC_(0.59281168127682335321956908269468899669273368717922e-4), + SC_(0.15967763147273217327892780303955078125e-5), SC_(0.8345118208e10), SC_(0.40453248004571117166922045171872923674527555704117e-15), SC_(-0.61496136691140435164266496e26), SC_(-0.10404042522852265374183951260504393780229288624804e-28), + SC_(0.18210504322269116528332233428955078125e-5), SC_(0.2651643312436211771770929152e28), SC_(0.36905974201464127488e20), SC_(0.11870302352028901338122299224941968986968277022243e-16), SC_(0.96444453967501221098008499031138568253013964649005e-19), + SC_(0.1885123992906301282346248626708984375e-5), SC_(0.25172518744793432127678756566548684645107602196601e-26), SC_(0.432213410600102056165376e24), SC_(0.1750858822896784444187573935580726214311653166078e-18), SC_(0.12475652059755078495964577464269580491486451957602e2), + SC_(0.2010440539379487745463848114013671875e-5), SC_(0.6231334375e5), SC_(0.42204349656676474209296423545367815677309408783913e-16), SC_(0.189095663973354608525312e24), SC_(0.85575637956111474497876880585018076767947579475261e-24), + SC_(0.21148944142623804509639739990234375e-5), SC_(0.33435832770024875859604662764468230307102203369141e-13), SC_(0.47324655483842805109613708493123820154516818645152e-26), SC_(0.40599286578442079483896452939559944088354637159455e-23), SC_(0.86086726864892856978021290224683696142061736289937e22), + SC_(0.2252993226647959090769290924072265625e-5), SC_(0.1145677201634679759519302305603716263249225448817e-17), SC_(0.57490079546449489559552e23), SC_(-0.18280795434640203579392e24), SC_(-0.23153775255121976847102308866036253916760345172262e-32), + SC_(0.2586026539574959315359592437744140625e-5), SC_(0.13906271765126904778015790844071007475134249542492e-23), SC_(0.48651935458110528998076915740966796875e-6), SC_(0.7676005010684497625088e22), SC_(0.55534780484904679566833659602625457533704982490912e-18), + SC_(0.318217871608794666826725006103515625e-5), SC_(0.640806732177734375e2), SC_(0.68430225988125784590876934144e29), SC_(-0.91491688131665702501767374089924889091207660385408e-19), SC_(0.13076909413247462911450776886742720618763010654651e-10), + SC_(0.3428982154218829236924648284912109375e-5), SC_(0.24666375732421875e3), SC_(0.18343744672083473263280947208875293341634460375644e-19), SC_(0.43015309196536843927560767042450606822967529296875e-12), SC_(0.24696721967211058722599902915223542353530466803084e9), + SC_(0.34367412808933295309543609619140625e-5), SC_(0.56812267303466796875e2), SC_(0.375230498611927032470703125e-1), SC_(-0.940448217079392634332180023193359375e-7), SC_(0.27222483126028747567331871746075117244762444634232e4), + SC_(0.3576953531592153012752532958984375e-5), SC_(0.14104317457808228352e20), SC_(0.49092389767073363326943535867030732333660125732422e-13), SC_(-0.1768607334231179264e20), SC_(-0.13174027442302826799661544100702814727664015808882e-26), + SC_(0.37117524698260240256786346435546875e-5), SC_(0.25937127167980755099163658883298921864479780197144e-14), SC_(0.20948793299367246339967233012199776531758743658429e-20), SC_(-0.5088028e8), SC_(-0.3649939396906969854756148210998242109051626865873e-3), + SC_(0.496315487907850183546543121337890625e-5), SC_(0.39944501218548349803692032e26), SC_(0.72472721302229174342168782629869383526965975761414e-16), SC_(0.3013316540734223281106096692383289337158203125e-9), SC_(0.19179116640052050131787066719787819821680219530636e-4), + SC_(0.5896066795685328543186187744140625e-5), SC_(0.83540669756266879012950000386178439626405634044204e-20), SC_(0.18486267904e11), SC_(0.711416436871559199062176048755645751953125e-8), SC_(0.16558524086880113634516369045738181687091036568877e3), + SC_(0.741827943784301169216632843017578125e-5), SC_(0.57862111028696838884929909418985971569782122969627e-17), SC_(0.21186012666429832052017445676028728485107421875e-9), SC_(-0.909995069378055632114410400390625e-4), SC_(-0.79167347903248615338879018331512795232997106267621e8), + SC_(0.1020877971313893795013427734375e-4), SC_(0.54233017649833819224649352104539179464381959405728e-19), SC_(0.1330528539256192743778228759765625e-4), SC_(0.60075625e6), SC_(0.22951727888716333518770359128519740944727307583691e-2), + SC_(0.115228258437127806246280670166015625e-4), SC_(0.14980029664002358913421630859375e-3), SC_(0.10872091648e11), SC_(0.974692302406765520572662353515625e-4), SC_(0.19283669680242463690410992722755728906094253397332e0), + SC_(0.12364866051939316093921661376953125e-4), SC_(0.256297172992e12), SC_(0.89514893312e11), SC_(0.92516305455080018876889980106170696672052145004272e-15), SC_(0.6956851082506011937598898817563396469969835697595e-7), + SC_(0.130162216009921394288539886474609375e-4), SC_(0.759344620746560394763946533203125e-4), SC_(0.22148209406780902835423848339554340607932845033396e-29), SC_(0.1025133774706451157090304e25), SC_(0.78168449939778815541125509826645235096454615091998e-21), + SC_(0.151082431329996325075626373291015625e-4), SC_(0.223869393291817180493772750848e30), SC_(0.130767456e9), SC_(0.3479859515209682285785675048828125e-4), SC_(0.10638852224302699211099006621011974474497792275897e-15), + SC_(0.1537743446533568203449249267578125e-4), SC_(0.15059710423148686686545261181890964508056640625e-9), SC_(0.117395620691240765154361724853515625e-5), SC_(-0.2890202999114990234375e1), SC_(-0.71323317684118857716768611179394676433168216080032e3), + SC_(0.17955519069801084697246551513671875e-4), SC_(0.61594795968322388346471996101172408089041709899902e-14), SC_(0.17182140399616e14), SC_(-0.8879954926669597625732421875e-2), SC_(-0.30902793952357142576725810247768489948284393255416e-3), + SC_(0.385829116567037999629974365234375e-4), SC_(0.87243150589952e14), SC_(0.502113922279907786752e21), SC_(-0.44867013175405750605515785144168657045844292877374e-29), SC_(0.6784291389719445280807556938270976838477737526148e-13), + SC_(0.5497968595591373741626739501953125e-4), SC_(0.2570904232561588287353515625e-1), SC_(0.142555389836268217827210559488e30), SC_(0.347529082477997995270422396070359436805186081898e-23), SC_(0.15205547141762716339195263933611696099613831306279e-9), + SC_(0.67357483203522861003875732421875e-4), SC_(0.2024667237879200631521688091840616152694565244019e-17), SC_(0.1125503860736e13), SC_(-0.28684009472e11), SC_(-0.17312469693572017037903718317715643420749673392298e-14), + SC_(0.7117705536074936389923095703125e-4), SC_(0.5225739073284472832e20), SC_(0.188505269646754054144e22), SC_(0.37162215e7), SC_(0.77884931309600959064671298574702199174386529309389e-23), + SC_(0.976757219177670776844024658203125e-4), SC_(0.20999384671790071386435906496888593240052529360776e-28), SC_(0.2420024555864064e16), SC_(-0.30929401675776e14), SC_(-0.41122600386595265452718551147832124897352249792332e-19), + SC_(0.10531136649660766124725341796875e-3), SC_(0.2080037632e10), SC_(0.951222915825664e15), SC_(-0.2556099821568e13), SC_(-0.16183594291792086140042069404303186458320314897362e-18), + SC_(0.1337912981398403644561767578125e-3), SC_(0.54060063803262892179191112518310546875e-6), SC_(0.431251569592525637174387802112e30), SC_(-0.40761757983463978673056514048e29), SC_(-0.42689657423364442342706084804950806299313503328401e-41), + SC_(0.135120135382749140262603759765625e-3), SC_(0.15396510045028230750086205123753138601649936845206e-21), SC_(0.23207376953125e5), SC_(0.4279265340301208198070526123046875e-5), SC_(0.11583891006744848427408148566636928242683392055917e4), + SC_(0.195464599528349936008453369140625e-3), SC_(0.121048798828125e5), SC_(0.93744699823914178927300605212876675065986065149559e-24), SC_(-0.80269794149945634012159454440908189848597528021079e-27), SC_(0.85066182884649426317108513864013994356814573463698e13), + SC_(0.237512751482427120208740234375e-3), SC_(0.17427138898629124241779209114611148834228515625e-9), SC_(0.33052706405189979932401911355555057525634765625e-10), SC_(-0.56586559029248e14), SC_(-0.27820838535642758409712041258322710540301181627086e-10), + SC_(0.371529138647019863128662109375e-3), SC_(0.12312668720852486471439889495482766790246387245134e-18), SC_(0.2606333696e10), SC_(-0.20283999631852400735709807122475467622280120849609e-12), SC_(0.51157368515785829729510457458840434162083885872526e1), + SC_(0.6058839499019086360931396484375e-3), SC_(0.5217478992180805632e19), SC_(0.4103625118732452392578125e0), SC_(-0.34598269870134102862979652570629696128889918327332e-14), SC_(0.11327789817456084957191801849955967708479747758643e-5), + SC_(0.7126068812794983386993408203125e-3), SC_(0.834977504013651542016e21), SC_(0.32316998463633678540817957675549120530669733319939e-24), SC_(-0.30853410104558776083649718202650547027587890625e-11), SC_(-0.14497478832531455977117278820477686854081973067291e-6), + SC_(0.11331872083246707916259765625e-2), SC_(0.7652003928866816e17), SC_(0.2029340237758464e16), SC_(0.46751457751334912e17), SC_(0.48218635922355250104615961298328372157645025546126e-24), + SC_(0.1283943769522011280059814453125e-2), SC_(0.49121531251266280226816e23), SC_(0.311947574615478515625e2), SC_(-0.1049853937656833303417716736e28), SC_(-0.33243523576876450506395708449850694875195152411876e-36), + SC_(0.210290006361901760101318359375e-2), SC_(0.4932620110638545248192561152e28), SC_(0.39087764918804168701171875e-1), SC_(-0.97106783192338154528339705536497949989183098296053e-22), SC_(0.10716357073204930403806358122863820937624055505006e-9), + SC_(0.43084057979285717010498046875e-2), SC_(0.7663212560384e13), SC_(0.15427949623089271042983806318685344877161824683753e-21), SC_(-0.10417810006584787840822059479251038283109664916992e-12), SC_(0.17169635051379646499605489602235548137277810862201e-2), + SC_(0.47173579223453998565673828125e-2), SC_(0.28601321158264026057365024112938563807684451932578e-26), SC_(0.40558081566683637682324548023871102486737072467804e-15), SC_(0.15528565625e6), SC_(0.46209895630262119473421061925210201261400658526527e-2), + SC_(0.4801772534847259521484375e-2), SC_(0.45398853613796871007741958773072074733645399780696e-27), SC_(0.7560605184e10), SC_(0.647133457931658995221368968486785888671875e-8), SC_(0.97150343363634710498793099113043775255963668957287e1), + SC_(0.52362792193889617919921875e-2), SC_(0.62775075435638427734375e-1), SC_(0.35503316103945850232270764479380886768922209739685e-14), SC_(-0.82191520164301076767365827890898799523711204528809e-14), SC_(0.94149739510744793867407461448723332321993376907253e9), + SC_(0.6464368663728237152099609375e-2), SC_(0.34548660250448633356353536e26), SC_(0.86745184e8), SC_(0.17538673631556802019439568731943899118999076469638e-25), SC_(0.18965171138822577964416888446520897074777671876756e-13), + SC_(0.8755207993090152740478515625e-2), SC_(0.19334258367635594160367929817354861347764157147378e-29), SC_(0.19905875479770919489158908039133416469773640855578e-23), SC_(0.16162294913370678880369874300115817788991989800707e-19), SC_(0.10302469141608676846163602607369970727019331722344e23), + SC_(0.105386711657047271728515625e-1), SC_(0.10971066146022716822519808e26), SC_(0.14238127367174709429046052203053697640243880490063e-25), SC_(0.12445412e8), SC_(0.81057286137718371719879398529595220079298267815081e-18), + SC_(0.1206146739423274993896484375e-1), SC_(0.3369771240234375e4), SC_(0.151668605394661426544189453125e-2), SC_(0.517785288393497467041015625e-1), SC_(0.12613012578767509848590874658523101847661158577119e1), + SC_(0.12089609168469905853271484375e-1), SC_(0.97507090560084943816369411520484629201082488192398e-26), SC_(0.399211437727154176e18), SC_(-0.43687648e8), SC_(-0.12712787183712312314723670820348108729409028012771e-14), + SC_(0.1223853044211864471435546875e-1), SC_(0.149331171875e5), SC_(0.25902370885233137108535751670716469965971562317009e-22), SC_(0.1585234087010320425115139642002759501338005065918e-12), SC_(0.87548765889989152595921377575214471779646231337304e6), + SC_(0.1719185896217823028564453125e-1), SC_(0.68342607872e11), SC_(0.74717364929222058918122144571648805171440455019649e-24), SC_(-0.19811498361971269233094972150865942239761352539063e-11), SC_(-0.62931581399346532875402225391415988485126399044258e-3), + SC_(0.2028485946357250213623046875e-1), SC_(0.43614054590079831541515886783599853515625e-7), SC_(0.84901359375e5), SC_(-0.402032989501953125e3), SC_(-0.14457959445537210532900171961971212086978017332471e-3), + SC_(0.244647525250911712646484375e-1), SC_(0.15256551424e13), SC_(0.54413439958598412815701968192616533315231208689511e-18), SC_(0.12193387618025211711902944244911850546486675739288e-14), SC_(0.68928140233641690874066639514030215078105803150605e3), + SC_(0.2503361739218235015869140625e-1), SC_(0.12629954201195087283302254587899482451973653951427e-19), SC_(0.18469444489392706000542236672e29), SC_(0.2008535602726624347269535064697265625e-5), SC_(0.15376107245372323818643874859148652065437313877165e-9), + SC_(0.256623141467571258544921875e-1), SC_(0.33872525312e11), SC_(0.14235380836999617679740726134029336127093459674064e-24), SC_(-0.54761008267973783831005426492301530003864451501272e-24), SC_(0.6002641543057883014281295950703999178968208670234e8), + SC_(0.2816712856292724609375e-1), SC_(0.20385418701171875e4), SC_(0.70816101925749637511437795979463150075616795220412e-19), SC_(-0.71224997471100448542813410313101485371589660644531e-12), SC_(0.14555984968538450265872789550217916380493832680261e3), + SC_(0.389046929776668548583984375e-1), SC_(0.18785430908203125e2), SC_(0.59877638017122304e17), SC_(-0.70611488161624017152739885005985343013890087604523e-15), SC_(0.23617650093748762722636584030199656175041288661882e-6), + SC_(0.500512681901454925537109375e-1), SC_(0.8265168543968919552e19), SC_(0.5917616329149883895863312384e28), SC_(0.1813467698915509796864e22), SC_(0.73014045504603704166845487809073717258890497149708e-34), + SC_(0.552595667541027069091796875e-1), SC_(0.24714513671875e5), SC_(0.15755500574372884400188753119438633820692530207452e-20), SC_(-0.1058852421875e6), SC_(-0.1385729677950429487289703993301344498336095174718e-5), + SC_(0.59153951704502105712890625e-1), SC_(0.28119016669184e16), SC_(0.46283060736691983672672256e26), SC_(0.33705512178551436908836997015329410971321759480507e-27), SC_(0.10567909802110001773228477874638062345056246984665e-17), + SC_(0.70532612502574920654296875e-1), SC_(0.509380480278670082048e21), SC_(0.6086066368937984e16), SC_(0.1157226484375e6), SC_(0.78636736502206833931370358047905890205013561234128e-20), + SC_(0.90219162404537200927734375e-1), SC_(0.1235392397312e15), SC_(0.312691328e9), SC_(-0.59579515824188623238913051216592009495798265561461e-17), SC_(0.98185483246869333393733269663055298966868810132828e-9), + SC_(0.9155814349651336669921875e-1), SC_(0.7803426304e10), SC_(0.56616158650510265207267401876833901042118668556213e-16), SC_(0.58011473761102867408662758102440028661308329567254e-29), SC_(0.23340628674965522944554049402356633166832118500539e6), + SC_(0.918718278408050537109375e-1), SC_(0.16469549560546875e4), SC_(0.1374542701881864559254609048366546630859375e-9), SC_(-0.64928905e7), SC_(-0.71534597326061132238132663299218904215199558605905e-7), + SC_(0.93234360218048095703125e-1), SC_(0.16614582122398761824502040001774922934468792234952e-23), SC_(0.51399625837802886962890625e-1), SC_(-0.79666525e7), SC_(-0.22357874328410148246257143325730977651923761352801e-5), + SC_(0.1238969862461090087890625e0), SC_(0.50384063720703125e3), SC_(0.404188410838900933656576e24), SC_(-0.113500412081864704e18), SC_(-0.71516214731582476895868452877782309419286266783848e-27), + SC_(0.138805568218231201171875e0), SC_(0.12325753201362607276032e23), SC_(0.6155888e8), SC_(0.17478379282804678163804057433594607573468238115311e-16), SC_(0.17562486771277811027907072136239595155317035456964e-12), + SC_(0.13968928158283233642578125e0), SC_(0.24041757569648325443267822265625e-4), SC_(0.75867372421355059130925056e26), SC_(0.14971352008162262765134699677531090489539158244758e-25), SC_(0.47162892053614125151645366512041674122628514159979e-8), + SC_(0.14648687839508056640625e0), SC_(0.189117259979248046875e2), SC_(0.64672735821725592375575075720917084254324436187744e-14), SC_(-0.1027551e8), SC_(-0.25659659832599873979437484533439372802557250970669e-6), + SC_(0.15200613439083099365234375e0), SC_(0.1863758428953588008880615234375e-2), SC_(0.64390535785573869136816111541365970083461434114724e-18), SC_(0.179179345703125e4), SC_(0.15376350655164216216009618321675610001686589538958e-1), + SC_(0.15778529644012451171875e0), SC_(0.625237882301288294684127322398126125335693359375e-11), SC_(0.31923294921875e5), SC_(0.2702271331145311705768108367919921875e-6), SC_(0.12723303520232964595307120813927223117434534421018e3), + SC_(0.23154227435588836669921875e0), SC_(0.2277369958392227999866008758544921875e-5), SC_(0.817438856761605722472448e24), SC_(0.6475818008051712e16), SC_(0.10055583404578821098090114781120362999351859150366e-25), + SC_(0.23772360384464263916015625e0), SC_(0.24407187456e12), SC_(0.8943501494940164775471203029155731201171875e-9), SC_(0.1651694635057152e16), SC_(0.55867742159906661083523501546119984619588397060731e-19), + SC_(0.2875674068927764892578125e0), SC_(0.6605737295872e13), SC_(0.14297552031194982191664166748523712158203125e-9), SC_(-0.3615199585953929943575623545608282448133710095244e-29), SC_(0.42333010096754627516650214935050999386320576617531e1), + SC_(0.3783153593540191650390625e0), SC_(0.17932992773095424e17), SC_(0.21370270682311573798295434301053319359198212623596e-15), SC_(0.104508124376678779299254529178142547607421875e-8), SC_(0.17691847946056675201705896851975198158108716530442e-2), + SC_(0.4375163614749908447265625e0), SC_(0.8310674814993035397492349147796630859375e-7), SC_(0.34676245389175740751178287273653290934930133737613e-25), SC_(-0.13512023861210132774912e23), SC_(-0.30627734774485470796026210351340366620342763472332e-20), + SC_(0.47186577320098876953125e0), SC_(0.33517950214445590972900390625e-4), SC_(0.19742964299069534676394727058454381385388387570856e-19), SC_(0.172844315049984e15), SC_(0.15571082388851563940538874881395087814248417447048e-12), + SC_(0.4837694466114044189453125e0), SC_(0.2555249786376953125e2), SC_(0.14830236860416e15), SC_(-0.23092787867579242139823118840080695690630818717182e-17), SC_(0.1436783479173125676726421090088414270562031415186e-5), + SC_(0.557569086551666259765625e0), SC_(0.3669039814207884562006016e25), SC_(0.11718498101389684343524611202444485336116031248821e-19), SC_(-0.1476470668143886336e19), SC_(-0.23234337351923507362878443677455037468061124379692e-28), + SC_(0.150170361995697021484375e1), SC_(0.22653612064768e14), SC_(0.931230204913778688e18), SC_(0.111986264311332864e18), SC_(0.13503306649655457756964944372267963200179420769152e-24), + SC_(0.151865482330322265625e1), SC_(0.13662545780395737088e20), SC_(0.581006519496440887451171875e-2), SC_(-0.4810541940969415009021759033203125e-4), SC_(0.26088930707430748487397772247873081286819775856106e-7), + SC_(0.155066859722137451171875e1), SC_(0.57957362287197611294686794281005859375e-6), SC_(0.15315803808343942142559420110171227706488770309301e-26), SC_(-0.24444800103136446196416126097616938750434201210737e-16), SC_(0.90955032242841468238880271499124261832873238707086e6), + SC_(0.15793964862823486328125e1), SC_(0.21153786174505042274269802208549073334284835448335e-27), SC_(0.12200210459945015628591136191971600055694580078125e-11), SC_(0.29733496255367166587727790005810361189438756346348e-24), SC_(0.61221579859114224783044449357017488484292020104154e19), + SC_(0.18657958507537841796875e1), SC_(0.14212401871702140532249813986709341406822204589844e-11), SC_(0.7765285505269888671753264475228206720203161239624e-14), SC_(-0.14057745442658881454581377878543473252314163378027e-27), SC_(0.34376559971843492093918769802879147369223951311666e15), + SC_(0.200531482696533203125e1), SC_(0.66637542724609375e2), SC_(0.6977945379592210481152e22), SC_(-0.1538061536848545074462890625e-1), SC_(0.91899125407594934397880198635868999618633362477239e-11), + SC_(0.20796673297882080078125e1), SC_(0.23342568365977612121539683156384858975229690258857e-19), SC_(0.23369637528405983173673414509188828169783391786041e-19), SC_(-0.34493877942163741868032e23), SC_(-0.14269697288704700026456987875655755932501905967557e-20), + SC_(0.2267075061798095703125e1), SC_(0.2218880925579554614742614016e28), SC_(0.65205579121751122872981967584324703322264654443958e-30), SC_(-0.18193587803964032632038804720580493128403998248643e-24), SC_(0.18773458887343617246865569088201403078203499932518e-3), + SC_(0.22948391437530517578125e1), SC_(0.1066555328369140625e3), SC_(0.576385747842019784963129344e27), SC_(0.266197237863696756221543182618916034698486328125e-10), SC_(0.10500257852828952292894301318898021528041485694642e-12), + SC_(0.3046932220458984375e1), SC_(0.18625525552055897944743393684375905872507558290159e-28), SC_(0.3957605632e10), SC_(0.5475589599790442463245199178345501422882080078125e-13), SC_(0.18339098800214958731143335962554579768175711553822e3), + SC_(0.317214488983154296875e1), SC_(0.1787234588447839005169755006044073262147782230584e-29), SC_(0.808940345497902097371234304e27), SC_(-0.152660180130070528e19), SC_(-0.14544688374658353436675575543549050491674381303428e-29), + SC_(0.3488028049468994140625e1), SC_(0.72476270262057055954832829597322805701906101027987e-24), SC_(0.21465711771648e14), SC_(-0.1243223625e7), SC_(-0.36901502835170062112191501271146371543800986080238e-11), + SC_(0.393867969512939453125e1), SC_(0.51874020272408766185256645893864430640143203159534e-29), SC_(0.2930298149585723876953125e0), SC_(-0.72393528671721441014597075991332530975341796875e-10), SC_(-0.55868866117473662932589074038762750761638800985872e1), + SC_(0.502499103546142578125e1), SC_(0.1056039999054108688384e22), SC_(0.988096714019775390625e0), SC_(-0.234368023278792403589267456e27), SC_(-0.96175701943042253761365952919230517595558464851346e-35), + SC_(0.7657299518585205078125e1), SC_(0.3369778067696671541852992959320545196533203125e-10), SC_(0.24060948594242438809947398636879256628162693232298e-16), SC_(-0.102500032512e12), SC_(-0.15294312119943326330072156244796735400596544767909e-9), + SC_(0.7906418323516845703125e1), SC_(0.48393864862901030998784493751613466975544853481209e-29), SC_(0.6576157757081091403961181640625e-3), SC_(0.87178096e8), SC_(0.74448636454103820303158662890650993329201889005998e-7), + SC_(0.12346179962158203125e2), SC_(0.304309702915784704e18), SC_(0.530327327997952e15), SC_(0.98908409223666358032640562140958007120161710190587e-19), SC_(0.1601572720936410379824366381268671633071010045693e-14), + SC_(0.1236770153045654296875e2), SC_(0.2486598558179742193396249971826250657613854855299e-16), SC_(0.425586784e9), SC_(-0.16583159541741498976819002564297989010810852050781e-11), SC_(0.12432911383477987669202622673990389191092739265681e0), + SC_(0.130841693878173828125e2), SC_(0.516425012058796509045456896e28), SC_(0.3000732163818651513042917353020530062720192427143e-28), SC_(-0.12223677825927734375e3), SC_(-0.59600143343483667135078068259806046605914824069307e-15), + SC_(0.1437510585784912109375e2), SC_(0.99939889697253647682373411953449249267578125e-10), SC_(0.17284426226994398730217260527005023625882369764373e-25), SC_(0.589887122259824536740779876708984375e-5), SC_(0.82977414248016272525740543786918282743356185060072e6), + SC_(0.155408535003662109375e2), SC_(0.245863923712e12), SC_(0.88887406204705208581375488864563298833942634608052e-27), SC_(-0.3278108895443665460334159433841705322265625e-8), SC_(-0.38929911183967971616546680441778615253883243106001e-6), + SC_(0.172352466583251953125e2), SC_(0.28185915786679144323656487358675803989171981811523e-13), SC_(0.549495171586755759562947787344455718994140625e-11), SC_(0.77621669365362350522745280609523053559517416326308e-27), SC_(0.29811356642573579120528904593230871758527217500489e14), + SC_(0.2496727752685546875e2), SC_(0.755542572949963187056710012257099151611328125e-10), SC_(0.140444835444342210428928e24), SC_(0.333316164222896912203776e24), SC_(0.61697425131819095690805450672367980932042039110706e-33), + SC_(0.251142292022705078125e2), SC_(0.95878670103350712202666425664563793145215793375946e-30), SC_(0.1179918399429880082607269287109375e-3), SC_(-0.18006479509999357834382910370507602237921673804522e-16), SC_(-0.20767359889649299374802028064947020874111331139665e4), + SC_(0.3167168426513671875e2), SC_(0.8758339475889442837797105312347412109375e-7), SC_(0.16276235359198247911424e23), SC_(-0.478584259033203125e3), SC_(-0.98355836090519231809970625809868089762136898416754e-13), + SC_(0.39971416473388671875e2), SC_(0.42171809391584026037414002688e29), SC_(0.1746199838817119598388671875e-1), SC_(0.14080540591494208027622707362473717849386561250306e-29), SC_(0.57731972252409096631390602463457410540926582027231e-12), + SC_(0.4151866912841796875e2), SC_(0.84098145009994339684283693509730169685090217512879e-22), SC_(0.23743823476252146065235137939453125e-5), SC_(0.12975368223172144971355734810458670835942029953003e-13), SC_(0.41662137710714344961872274967200362824507894251896e10), + SC_(0.43738616943359375e2), SC_(0.12385733574656e14), SC_(0.18116829833984375e4), SC_(-0.6090077153104283339067490304e30), SC_(-0.17586838254223165935107868934475381781225966395627e-34), + SC_(0.64164215087890625e2), SC_(0.60759354638336e14), SC_(0.15436498306983203153379328e27), SC_(0.2971673893625847995281219482421875e-6), SC_(0.3978686729151661279344274889478280044774036238231e-19), + SC_(0.7396154022216796875e2), SC_(0.434943033344e14), SC_(0.44933803488252409781774450688e29), SC_(0.41030704775427855914016195271187825710512697696686e-15), SC_(0.51301839608224722528804475837632403261204586969405e-20), + SC_(0.877169342041015625e2), SC_(0.96918456256389617919921875e-2), SC_(0.1194695377349853515625e2), SC_(0.33116262677524781031382708484933630188606912270188e-17), SC_(0.17384371767206275909057752319046159769983534621041e2), + SC_(0.9329457855224609375e2), SC_(0.16489136475174385000940710160662947664743371856133e-23), SC_(0.5227976893381994977626195689487990972659902516595e-26), SC_(-0.43789996198029257357120513916015625e-5), SC_(-0.15497773046920934314700228246837580600610142935771e7), + SC_(0.9570084381103515625e2), SC_(0.21871560124697031597619436421586769370151159819216e-20), SC_(0.10437099306084773731823749979533318132940422628963e-21), SC_(0.31689929654272e15), SC_(0.26374911044597243314245848273113923510941888515539e-13), + SC_(0.1074904022216796875e3), SC_(0.41020025634765625e3), SC_(0.424105413258075714111328125e-1), SC_(0.12980568876719278392783962772227823734283447265625e-10), SC_(0.80632850646709506287902787976369322104798297701048e0), + SC_(0.121872039794921875e3), SC_(0.13542694460127387585121963575751635744381928816438e-16), SC_(0.12486284559632162318061163896272346215674913706846e-28), SC_(-0.17388853194235818957341654922288398665841668844223e-15), SC_(-0.29929997600778273592083592409674281287091033348276e16), + SC_(0.131728790283203125e3), SC_(0.5893691639956045555799425024e28), SC_(0.269286016251644665671840694272e30), SC_(-0.19225120205890561304280076617299461303374835609466e-28), SC_(0.23747567274649262115100375303568860119505302660168e-27), + SC_(0.175763397216796875e3), SC_(0.12685536053155962454420298550668289028209301250172e-19), SC_(0.1597107696533203125e2), SC_(0.193429025e7), SC_(0.30514382609340192004140933870767164997572197608833e-6), + SC_(0.19177764892578125e3), SC_(0.84045921502887936e17), SC_(0.19129386995031684168433400267318972464065419958335e-25), SC_(-0.16734773921809110196565891338898506367022129154862e-29), SC_(0.28985510548725002737255597613665541364819200143545e5), + SC_(0.366723419189453125e3), SC_(0.4729196966323688478605312e25), SC_(0.75546687480489050112e20), SC_(0.30924904845017088e17), SC_(0.13997276569086734412665389893461313536545790758017e-29), + SC_(0.403912353515625e3), SC_(0.70494434112333692610263824462890625e-6), SC_(0.4871552734375e3), SC_(-0.79337131194643530951688192e26), SC_(-0.28185565809437219331198474902626375696922113021409e-26), + SC_(0.434518829345703125e3), SC_(0.429355800151824951171875e0), SC_(0.1905407088997890241444110870361328125e-5), SC_(-0.1920795655896742530676212337387238725422793886484e-27), SC_(0.41394799266597316262611547301984058012213693213971e4), + SC_(0.441912933349609375e3), SC_(0.200361263104e12), SC_(0.7487427472337473110016e22), SC_(-0.94412297518186496e17), SC_(-0.2653039857585517453143101871082962619886494600764e-26), + SC_(0.4589617919921875e3), SC_(0.71164645460638957568e20), SC_(0.3440692353251506574451923370361328125e-5), SC_(0.491521358489990234375e0), SC_(0.36374021419600170802135512961854475267516040798357e-10), + SC_(0.60508642578125e3), SC_(0.986511168e9), SC_(0.864834304e9), SC_(-0.1221882493796352e16), SC_(-0.12679767958599401117463725341907765508229105680362e-18), + SC_(0.82290283203125e3), SC_(0.36223742228003175114281475543975830078125e-7), SC_(0.12701055793371805794043341177064064973639689881679e-22), SC_(-0.12639319e8), SC_(-0.11012414677841827102143604394095232114440956402107e-6), + SC_(0.826349853515625e3), SC_(0.96257212198157311804282581954172398476352382607862e-31), SC_(0.590303199232e12), SC_(-0.23093588197298231534659862518310546875e-6), SC_(-0.47251948104414426539316167928430961763614109497953e-8), + SC_(0.101428350830078125e4), SC_(0.73197230504121553597519782482022700030639835409862e-27), SC_(0.56014250442752e14), SC_(0.10064316558837890625e3), SC_(0.16527977649070885637997380699331340882257467916328e-8), + SC_(0.10313978271484375e4), SC_(0.10318525717298732830018437311991874594241380691528e-14), SC_(0.14367766698608619435617583803832530975341796875e-9), SC_(-0.895382299859193153679370880126953125e-6), SC_(-0.52777525316528912144605771534399851901207874711783e6), + SC_(0.10841290283203125e4), SC_(0.45628768256e12), SC_(0.44396802085974908568299784035032644232939350037448e-25), SC_(0.18678055712586235137343338338755084705573535942824e-26), SC_(0.14825366330028607186953970497682490906029019303394e7), + SC_(0.1401687744140625e4), SC_(0.2510223973128944408017559908330440521240234375e-9), SC_(0.1164431796875e6), SC_(-0.660644830067038461622222848e27), SC_(-0.47960462509741734974205321792595950931889095335366e-28), + SC_(0.15455189208984375e4), SC_(0.90718428578382195030384883514111792400934880018881e-30), SC_(0.6565417468297216e16), SC_(0.460657443285032239104e23), SC_(0.12799003681657237864315630362352184152409603951107e-28), + SC_(0.1910833251953125e4), SC_(0.17696226098322235566195903544439715915359556674957e-14), SC_(0.1108289011237349741545443748691468499600887298584e-12), SC_(-0.2495210247598112768e19), SC_(-0.54899796206745991933997756649992143738257192929546e-18), + SC_(0.2011733154296875e4), SC_(0.19581301161984e14), SC_(0.85766768651814545869177326724802966485319195188075e-29), SC_(-0.103833197499625384807586669921875e-3), SC_(-0.33700014883516626520019369200567494039429584096042e-9), + SC_(0.2306111083984375e4), SC_(0.1685688489456173056e19), SC_(0.22256795142604778055852756615936599983521384333793e-27), SC_(0.14603023269556422518276493291433659749145590467378e-18), SC_(0.19777900026792559511511825473920177499794471914611e0), + SC_(0.2791671630859375e4), SC_(0.267051548817752064e18), SC_(0.3821992612462592e16), SC_(-0.513896026611328125e2), SC_(0.47465293649814820831954830513948060693670317100928e-17), + SC_(0.3408779052734375e4), SC_(0.20716176e8), SC_(0.18045615079140466679736426458546816320449579507113e-17), SC_(0.13555148115074189263395965099334716796875e-8), SC_(0.48164218033389365156625209765038103431165517985122e0), + SC_(0.3542151123046875e4), SC_(0.23456829198204715014597354638681281358003616333008e-13), SC_(0.1943433088069657088681196910329163074493408203125e-10), SC_(-0.12137352751010333009649936296477139513819154537089e-23), SC_(0.9333089944235657405856672732645955389783286783745e12), + SC_(0.7262e4), SC_(0.29360551054278656e17), SC_(0.22317236842790725727033694003705985580674980395081e-28), SC_(0.3551572091297857536e19), SC_(0.77717359263479130667388609725775170195499855795832e-25), + SC_(0.7298279296875e4), SC_(0.135008262029312e15), SC_(0.11206973876953125e4), SC_(-0.833275332470505472e18), SC_(-0.39896293187932511702409990531619082551759834612461e-23), + SC_(0.84882138671875e4), SC_(0.1164516231628986060845252084551879447407718437546e-22), SC_(0.6352472452890624e16), SC_(0.9560064697265625e2), SC_(0.61539124658325181782209897121876769029174304828769e-10), + SC_(0.8893943359375e4), SC_(0.2543300329755485778505163471925434570765698602578e-29), SC_(0.3695086771282607429611744009889662265777587890625e-11), SC_(0.30414472917553246177763126567583640280645340681076e-15), SC_(0.14819844701086027858443403271448375440180967242547e13), + SC_(0.98628369140625e4), SC_(0.54858798980712890625e2), SC_(0.2356236308287407155148684978485107421875e-6), SC_(0.4253408337513412943516008448e28), SC_(0.28310666672514729188368235301172552333474839823256e-28), + SC_(0.119369521484375e5), SC_(0.6284878833111793664e21), SC_(0.191033888e9), SC_(0.39331607614135449258906745840093203969711765921602e-22), SC_(0.24703761293442289267167403830981450356576108475156e-14), + SC_(0.147901005859375e5), SC_(0.62520772668534154026944814518561754825703991045316e-23), SC_(0.19445130267235161963321360384e29), SC_(-0.1193196866669472955128396274293578471770160831511e-17), SC_(0.37070531072257762272085483567842416858990215887893e-9), + SC_(0.1624405078125e5), SC_(0.40561403505621103444471068204533651486640155603425e-24), SC_(0.1332809589803218841552734375e-1), SC_(0.9897776246657427883580136193775026766383806631211e-23), SC_(0.90460833618467238772568452668297266842410945407588e11), + SC_(0.212897265625e5), SC_(0.312131216214219971638146891776e30), SC_(0.287488675e7), SC_(-0.23154143879988708931705332361161708831787109375e-9), SC_(0.36218305845932609136384265282122334602299609524974e-18), + SC_(0.2428015625e5), SC_(0.9274355505795028875581920146942138671875e-8), SC_(0.26150225e6), SC_(0.11752843565346520206117193700482738416557282334907e-21), SC_(0.65259789793303665112616821920019088303053096992953e1), + SC_(0.3443290234375e5), SC_(0.87738095954812459262649215691458087947041111220869e-24), SC_(0.15664042328847327389951260556699708104133605957031e-11), SC_(-0.254119e6), SC_(-0.12772679808309511627543152880924722250588088904856e-5), + SC_(0.3773583984375e5), SC_(0.114166624e9), SC_(0.92872925184e11), SC_(-0.21438933117678971029818058013916015625e-6), SC_(0.64605728869665645180655944572088132079855990068348e-10), + SC_(0.4905428125e5), SC_(0.77207493599362048142253911464649718254804611206055e-14), SC_(0.3302073455415666103363037109375e-3), SC_(0.18890981105259239958282790894372737966477870941162e-13), SC_(0.61867208756145935926407153641591060719655132590955e7), + SC_(0.503876328125e5), SC_(0.72534660121208050493385086597564193056086878641509e-19), SC_(0.12543467133030450355590801336802542209625244140625e-10), SC_(0.31351818084716796875e2), SC_(0.63794778343082751128672836783837473856982281965889e-2), + SC_(0.6055764453125e5), SC_(0.21872156251105889011820549956628982266049199267854e-22), SC_(0.40034377976350386198819103091685731105225964140265e-27), SC_(0.27609765618122752e17), SC_(0.14560406525664773387691827891026264861711885032388e-16), + SC_(0.647452890625e5), SC_(0.731999936e9), SC_(0.2930758730861938998746296647368581034243106842041e-13), SC_(-0.52838748931884765625e2), SC_(-0.17120943291351892258740815320009400558969058830526e-8), + SC_(0.652611328125e5), SC_(0.15427774721484081030600798989382838044548407196999e-15), SC_(0.19426667219324400548430276103317737579345703125e-9), SC_(0.58856992e8), SC_(0.36030403476542449556475604748668985232390371856757e-8), + SC_(0.815536015625e5), SC_(0.230844914913177490234375e0), SC_(0.3524259033203125e4), SC_(-0.1321976125e7), SC_(-0.23109655491331924663927580812478349761115365015562e-7), + SC_(0.870208046875e5), SC_(0.321584384e10), SC_(0.1875353171365556903538163169287145137786865234375e-10), SC_(-0.53437487793849893766722672467682446406173285904928e-27), SC_(0.81752691838560122383582346094261293418998308279632e0), + SC_(0.1250561640625e6), SC_(0.18213786e8), SC_(0.4530736e7), SC_(-0.6338109e7), SC_(-0.82054947889433688858556789211045548313964158982319e-10), + SC_(0.14622103125e6), SC_(0.89081879080330633735584910937177482992410659790039e-14), SC_(0.392437056867112321024e21), SC_(0.81061882297455856620945431847309806789279862382358e-24), SC_(0.51414750463934655970368369989612419137026160043331e-4), + SC_(0.1743905625e6), SC_(0.1477561092376708984375e2), SC_(0.30685072560418650741795681818015688728696009026275e-29), SC_(0.38635334931313991546630859375e-5), SC_(0.14930460404164659296991650253819651463281336520512e1), + SC_(0.18927953125e6), SC_(0.558697130491904e16), SC_(0.15689940429654907896725504e26), SC_(-0.55965794498735732531713438220322132110595703125e-10), SC_(0.43253763049715524208571587297087894361800756872535e-21), + SC_(0.2110425e6), SC_(0.2278860669204673264954113440517087889741271316559e-28), SC_(0.13786283453186048e17), SC_(0.2317149639129638671875e1), SC_(0.57271797542079362254125705553590497014434725405181e-10), + SC_(0.22300921875e6), SC_(0.22960517578125e4), SC_(0.46933254639405441853106942079784734541910233270121e-28), SC_(0.1788677712888375737065871362574398517608642578125e-12), SC_(0.49240542827705470999815066512520633293229227044991e3), + SC_(0.243351703125e6), SC_(0.2739399197316094099456e22), SC_(0.49426852584757985376029409962939098477363586425781e-12), SC_(-0.51383110636537278815143709462601173676432608772302e-20), SC_(0.16335452024035439445812369982936378131834825058997e-5), + SC_(0.35698746875e6), SC_(0.1922772196023861248e19), SC_(0.39861534375e6), SC_(-0.79583452052226943582938917254310240423365030437708e-17), SC_(0.14972539396832816705553188160320970310632940548863e-12), + SC_(0.6869200625e6), SC_(0.12406291034494643099606037139892578125e-5), SC_(0.60078474312334545656635060929362382794743178141472e-29), SC_(-0.2437755379502970498606373439542949199676513671875e-10), SC_(-0.29175644046652151721471627315205848278147317324593e4), + SC_(0.9115189375e6), SC_(0.179409878467662494683889664e27), SC_(0.152616857880340486461855087352290638591512106359e-16), SC_(-0.1373514587769293435305984e26), SC_(-0.37222221373521878809912319999667794920422002396464e-36), + SC_(0.938919625e6), SC_(0.12335309427680403189998774921476345362014725992594e-21), SC_(0.868360405803514368017204105854034423828125e-8), SC_(0.49951384010752e14), SC_(0.1087349672869820840168485856669779192236371190719e-14), + SC_(0.10005244375e7), SC_(0.11613385491986150110932385359774343669414520263672e-12), SC_(0.1767129607947373434957201408e28), SC_(0.46881775649030144e17), SC_(0.19756130934559701361236894181742053882125637225069e-28), + SC_(0.117237625e7), SC_(0.28658838e8), SC_(0.861307183935277657013354496e27), SC_(-0.337333418428897857666015625e-2), SC_(0.18238538582222796557049611161862806664203534063553e-18), + SC_(0.1600417625e7), SC_(0.39075846958449925554176e23), SC_(0.20905065178933313063680543564260005950927734375e-9), SC_(0.30890848880558885901418688453847335919234123879917e-24), SC_(0.1474164985779584031693927432441780851726669580882e-7), + SC_(0.167349975e7), SC_(0.335835966325248591601848602294921875e-5), SC_(0.5924034386893197017088e22), SC_(-0.1327253130511962808668613433837890625e-5), SC_(0.17316118393461797400689218961605338061094088491255e-10), + SC_(0.1693841875e7), SC_(0.988439261913299560546875e0), SC_(0.14889054402373871810492857583914434629716871949512e-24), SC_(-0.4169041500912129549760720692574977874755859375e-10), SC_(-0.23105803666133451280534670880230914719356541102847e-2), + SC_(0.190442875e7), SC_(0.237157376e10), SC_(0.3888856079211167744e20), SC_(-0.61913955997614338586966520328047636212431825697422e-17), SC_(0.19833300648363190686727867942176248871986575138248e-15), + SC_(0.1919959e7), SC_(0.26904405370231643246370367705821990966796875e-8), SC_(0.529686175286769866943359375e-2), SC_(-0.17135624122995048290227899055737648126296335249208e-18), SC_(0.71294777984487009571872221056556404754201103533872e4), + SC_(0.1986497625e7), SC_(0.189941275119781494140625e1), SC_(0.133596098423004150390625e1), SC_(-0.344017310999333858489990234375e-2), SC_(0.40865700009209118704310385337668006597087414806334e-2), + SC_(0.28672805e7), SC_(0.56191317180416e14), SC_(0.35222303584084124587381803803722666908207497246143e-28), SC_(-0.56519235158702940680086612701416015625e-6), SC_(-0.13957538937073804403987940214950748376734725386866e-12), + SC_(0.3057799e7), SC_(0.57031360774144e14), SC_(0.334671207278780147040256e26), SC_(0.186068168841302394866943359375e-2), SC_(0.44385547752902791796369422696533745242936564907692e-21), + SC_(0.31068275e7), SC_(0.24256317430431744e18), SC_(0.143404235132038593292236328125e-2), SC_(0.96258014296708486555996677315819032294541557348566e-21), SC_(0.1972598733605150297798640841340226756157118686237e-8), + SC_(0.32205e7), SC_(0.4915144753769099558912e22), SC_(0.1307531505290171480737626552581787109375e-7), SC_(0.164334032e9), SC_(0.6980534268819858473041043994511617636261409493517e-18), + SC_(0.39914275e7), SC_(0.5617260831058956682682037353515625e-4), SC_(0.43573388456807634241895548780677530339229715228289e-25), SC_(0.31924774e8), SC_(0.63133932606104414776194547815667534179536676234649e-9), + SC_(0.46787565e7), SC_(0.14932343959808349609375e1), SC_(0.16440348057365199213781820769542107996130653191358e-17), SC_(0.11708039093017578125e3), SC_(0.34226867487194103607643781127607630951888212570643e-4), + SC_(0.47933605e7), SC_(0.31721368112700180271268622555462940347189865902822e-26), SC_(0.25930237825377844274044036865234375e-4), SC_(-0.214466495180453821894623232e28), SC_(-0.91733319493295368134727198939095304158871839033766e-29), + SC_(0.67505405e7), SC_(0.12444449636352e15), SC_(0.2137999035767279565334320068359375e-4), SC_(-0.4992916231287458655895552e25), SC_(-0.52521328638500292117953896561071999999851161879722e-30), + SC_(0.81585985e7), SC_(0.3010926884599030017852783203125e-3), SC_(0.8215554048e10), SC_(0.114206015625e6), SC_(0.50136200110028234464770086816227677834645454947399e-10), + SC_(0.11603544e8), SC_(0.313275356292724609375e2), SC_(0.290066314697265625e3), SC_(-0.9375218963623046875e2), SC_(0.28649293639742832027456393766417241439254670094355e-7), + SC_(0.14428466e8), SC_(0.70876748614467584e17), SC_(0.18803361506481770337385962666972781228216793358854e-23), SC_(0.10022823697850966935315220275556287300944497201116e-25), SC_(0.71778859953945302976822186314656453326116349206407e1), + SC_(0.14455178e8), SC_(0.20228727343912268621384242806016118265688419342041e-13), SC_(0.349125194549560546875e1), SC_(0.1069340869435109198093414306640625e-3), SC_(0.63922052689648282610971529951958584600613959579745e-1), + SC_(0.15583587e8), SC_(0.46741176605224609375e2), SC_(0.5554841051654164918449652077470091171562671661377e-13), SC_(0.34054815792480743332272823033907149792298696411308e-19), SC_(0.3700199128491477647155829380685393746316047810923e4), + SC_(0.20014814e8), SC_(0.3708101212978363037109375e0), SC_(0.13699657060765273544864379382315910937961689342046e-19), SC_(0.7608494563549061950880059157498180866241455078125e-11), SC_(0.62708615324117416711398888201649265175697097819677e3), + SC_(0.21305708e8), SC_(0.16358995318300954765782308898640009098138844295667e-25), SC_(0.98936341703850100293138325469044502824544906616211e-13), SC_(-0.35379081781572062001539613618206203682348132133484e-14), SC_(-0.64169380348550957400835972497068436122147975451984e10), + SC_(0.23513628e8), SC_(0.289233994321472004292608e24), SC_(0.630719616e9), SC_(-0.13381082827944242446336e23), SC_(-0.66275653715849795694319915554978158944549924022817e-32), + SC_(0.2359947e8), SC_(0.83892250504513065845701871993405683214864787598623e-28), SC_(0.1116302655645995400846004486083984375e-5), SC_(0.939252372042160275456e21), SC_(0.10998068538650239817719760410038058510092001135979e-22), + SC_(0.3219581e8), SC_(0.10514049531904e14), SC_(0.1142989134450544952414929866790771484375e-6), SC_(0.3264901123046875e4), SC_(0.44539831126947074252907587959611138961807523305494e-11), + SC_(0.38569956e8), SC_(0.153969064060542517248e22), SC_(0.31365259264e11), SC_(0.64615751438068753629184e23), SC_(0.15901406672240710197060481639696712480117521197007e-31), + SC_(0.44006012e8), SC_(0.41172763385266176e17), SC_(0.69560673828125e4), SC_(0.6943892002105712890625e1), SC_(0.11055742170934965263077931846674792260115571222994e-12), + SC_(0.44515356e8), SC_(0.163460032e9), SC_(0.58954788950949720532109000901066150901463913669431e-21), SC_(-0.84008701238901905931910629732328743557445704936981e-16), SC_(0.1016468164574996101751049497404743419692229697756e-1), + SC_(0.60742564e8), SC_(0.10180891649724799208343029022216796875e-5), SC_(0.1729617489790698408202207232e29), SC_(0.13798541646137166738669772732522444264047223327907e-21), SC_(0.55002999650037162886168349807610893852430744597343e-13), + SC_(0.110924176e9), SC_(0.72381277181260981972756393027025707393702881272974e-29), SC_(0.9907270967960357666015625e-1), SC_(-0.46992797696e11), SC_(-0.7153769161341146618748649074890545875067308629286e-13), + SC_(0.138628768e9), SC_(0.24839921813791433941823936900536334689774519562944e-25), SC_(0.1002530003457735574556863866746425628662109375e-10), SC_(0.146151953125e5), SC_(0.31643515951668430782967469932625098874208800860989e-6), + SC_(0.14248488e9), SC_(0.61731988312258099732254031872e29), SC_(0.47155488899394500240213479534565823420775918905622e-28), SC_(-0.25432651776e11), SC_(-0.15560997549573948496013461708493710470300844615272e-23), + SC_(0.27280976e9), SC_(0.15585372e8), SC_(0.281720957673314842395484447479248046875e-8), SC_(0.12213673845353715391448545801722502801567316055298e-13), SC_(0.5952817136866798806190819811444904820394334558943e-2), + SC_(0.339495296e9), SC_(0.27455182077952e14), SC_(0.3135611338752e15), SC_(0.402709184e9), SC_(0.16499235413105133151072312126744836197182326227857e-17), + SC_(0.355727936e9), SC_(0.49794778812580822691949943719295546451682199506905e-24), SC_(0.1241846768099137683456e22), SC_(0.7965702487139983595526434005087182869351289729587e-26), SC_(0.17776375912355973204091948059938294188844121829538e-1), + SC_(0.4000056e9), SC_(0.667866475003904e15), SC_(0.1143672109375e6), SC_(0.41925702284651838570496e25), SC_(0.23627988424029165896561703037511481776791931850582e-30), + SC_(0.470933376e9), SC_(0.11153424070550668062429267024526780005544424057007e-13), SC_(0.1022445289472e13), SC_(0.3036598381787523315662848e25), SC_(0.51082525159717437740996972959268224682068490870662e-29), + SC_(0.480171648e9), SC_(0.81851918776879678213563875328e29), SC_(0.25317517949927424e17), SC_(-0.761762807808e12), SC_(0.14807577909106632829053240787195997254181008262149e-29), + SC_(0.53041488e9), SC_(0.46393568e9), SC_(0.579481973517204096424393355846405029296875e-8), SC_(-0.242978e8), SC_(-0.40688072399254155903354266338099994715882814754534e-12), + SC_(0.599453888e9), SC_(0.17675467453150265344e21), SC_(0.1340962341126144e16), SC_(0.18613109664666893650064594112336635589599609375e-9), SC_(0.55371046708594014602877624160531183618809435731096e-20), + SC_(0.738515392e9), SC_(0.13571258581209030066176e23), SC_(0.2301062643527984619140625e-1), SC_(-0.76610397713172684319715699530206620693206787109375e-12), SC_(0.79685761608775251576239402421443352242583336939208e-13), + SC_(0.814350976e9), SC_(0.11488148e8), SC_(0.19480861678725900179769036451744575015598837097741e-22), SC_(0.2380423411208374286693172481332745269194293372822e-27), SC_(0.44619130608245420753145073869509688203154097908354e5), + SC_(0.1756078592e10), SC_(0.26120992187958165504e20), SC_(0.26754587434396626122179441154003143310546875e-9), SC_(0.18746973490642741795614695493449097273634996893782e-28), SC_(0.19478325268074938295934076576198224696942609355331e-7), + SC_(0.3003238912e10), SC_(0.5025710997504e13), SC_(0.1350108672e10), SC_(0.5902561359107494354248046875e-2), SC_(0.88103370060025420319508578791540142249966037628539e-14), + SC_(0.3204498688e10), SC_(0.6025548983379369616386611596681177616119384765625e-12), SC_(0.1022096374072134494781494140625e-2), SC_(-0.17716674949936054272e20), SC_(-0.47182058754855865854157515823805004295335565607572e-22), + SC_(0.409506688e10), SC_(0.660258883726783096790313720703125e-4), SC_(0.11791503058925568539244861654413654150630463846028e-17), SC_(-0.10290368356898529759481386580688422327511943876743e-15), SC_(0.60420197885529575064878739038372357567146506347851e5), + SC_(0.794944256e10), SC_(0.57736081071197986602783203125e-2), SC_(0.2809777657073205428808056832e28), SC_(0.1966196e7), SC_(0.70403086897656371856817889132578689069531096518923e-21), + SC_(0.10259405824e11), SC_(0.35736448257653877024582131372021365223190514370799e-17), SC_(0.1626183676572159287754752e26), SC_(-0.3575664937749412075618238304741680622100830078125e-11), SC_(0.38830584832202869897569424004002309620276039209424e-14), + SC_(0.11937830912e11), SC_(0.7411516898803712e16), SC_(0.9116515625e4), SC_(-0.64115528232747007219859456e26), SC_(-0.43778554180175377391336585696830906679687162003759e-32), + SC_(0.13030267904e11), SC_(0.121054592e9), SC_(0.45041238147072e14), SC_(-0.5887378692626953125e1), SC_(0.32105605417518275901900628191290524679687102175416e-14), + SC_(0.14041162752e11), SC_(0.16802999673239973138530304e26), SC_(0.46871312598868006987253009842930850936681963503361e-17), SC_(-0.15507884900705449904439296e26), SC_(-0.85367992662173210620394366920086679245817675476894e-36), + SC_(0.15637035008e11), SC_(0.134159215839460458496e21), SC_(0.52544137753835862096607467464082219521515071392059e-15), SC_(-0.24948805243951710508554242551326751708984375e-8), SC_(0.19030304523928762876188956443874663859228088039831e-13), + SC_(0.17571876864e11), SC_(0.78331889736129170520187100955465240744456415725866e-27), SC_(0.29027516841888427734375e1), SC_(0.86297228563125827349722385406494140625e-6), SC_(0.22453186161261513391158868662040316475654593711161e-1), + SC_(0.18376677376e11), SC_(0.5392075674848229027702473104000091552734375e-9), SC_(0.69036960018143309015045095329037686884040172076524e-29), SC_(-0.5439871484375e5), SC_(-0.68408988305143483178776308392189960121866243138031e-8), + SC_(0.19167623168e11), SC_(0.8768775788564570846326161408e28), SC_(0.622147854301147162914276123046875e-5), SC_(-0.4378748023750764003328e22), SC_(-0.10075098730638899475891515746562096511093203179736e-33), + SC_(0.28634155008e11), SC_(0.67717655e7), SC_(0.439299052929024e15), SC_(-0.2764094369161640019069239296e28), SC_(-0.32055233575435343214064577748503293504534051786254e-33), + SC_(0.29924868096e11), SC_(0.2513091862201690673828125e0), SC_(0.364701990405672009728e21), SC_(0.1808835506439208984375e1), SC_(0.86504407140564687954319212516129000830686668187889e-15), + SC_(0.3143396352e11), SC_(0.13810928266794127506964991575307193802925529863273e-29), SC_(0.2529551275074481964111328125e-3), SC_(0.6610492153669156323303468525409698486328125e-8), SC_(0.20487685573371894368634282236661104960787516256632e2), + SC_(0.49448484864e11), SC_(0.37633713292972600066048e23), SC_(0.35798815666608753114714008801007788456267201895617e-28), SC_(0.51093983547468719468029134909980992773625985137187e-19), SC_(0.48326339555697561141802721066317632742526727641684e-6), + SC_(0.62930939904e11), SC_(0.177573984375e5), SC_(0.46090615400837396702570999962311759645672282204032e-17), SC_(0.13151506414305676629098713952040449869790306181017e-23), SC_(0.3439413116522142892624105600224528287109958555919e3), + SC_(0.67647336448e11), SC_(0.59025825792e11), SC_(0.63456950551354910536750724756131128750454202264858e-27), SC_(0.240986118684672e15), SC_(0.76528228072326729363880402140106115135029881663388e-19), + SC_(0.82854125568e11), SC_(0.58830391620982291911135882706044579926359106014644e-24), SC_(0.63024210653626119155168439078806841280311346054077e-14), SC_(-0.54368220029374445673164828463086450938135385513306e-14), SC_(-0.10829361597055536224749850825972154484392198615189e10), + SC_(0.120054595584e12), SC_(0.82902877667147644928e20), SC_(0.1294386796875e6), SC_(0.124762982982533251072e21), SC_(0.28237302458133933514902456909194247729198978347614e-28), + SC_(0.140797837312e12), SC_(0.14323210329885870979668017974210037525351329329437e-26), SC_(0.49604859973225045211182859805632006100495345890522e-16), SC_(0.4708577083789577955030836164951324462890625e-8), SC_(0.16771706036912324754305210348028914314093661469228e5), + SC_(0.187841462272e12), SC_(0.2085087317027500830590724945068359375e-5), SC_(0.23632697338789035110002273443186027179763186722994e-16), SC_(0.225691846571862697601318359375e-2), SC_(0.12845456754243698010038246582418683448773573315963e-1), + SC_(0.193607401472e12), SC_(0.1391435716868727467954158782958984375e-5), SC_(0.17110982071244507096707820892333984375e-5), SC_(-0.19561825628872353505405663801313808497495116967002e-21), SC_(0.80864759729644611943700382157345057894976359904086e2), + SC_(0.22130761728e12), SC_(0.27802641477000539246127245560908891101555874547646e-25), SC_(0.118848793208599090576171875e0), SC_(-0.12405722141265869140625e1), SC_(-0.9276223639209647401714189337787584324485796249616e-5), + SC_(0.22663667712e12), SC_(0.17455190938486797591622234904207289218902587890625e-11), SC_(0.85543193037952672645625784483272222025185271832015e-23), SC_(-0.1899995365173348970453916098985154078822091775636e-30), SC_(0.15499929512914335968618015050069017861297159802942e14), + SC_(0.2321313792e12), SC_(0.226527254199027083814144134521484375e-5), SC_(0.37947044e8), SC_(-0.1516351389696e13), SC_(-0.23023007721783712880856647301078004224131288409007e-16), + SC_(0.345189679104e12), SC_(0.79820903020739723608895214436397557193018231780357e-25), SC_(0.64729720161775472443612539086288393264112528413534e-17), SC_(0.66532361109504e14), SC_(0.26363301676819092424392344158949682932356960745854e-17), + SC_(0.394305110016e12), SC_(0.15888269576316649472e20), SC_(0.83157216696884789248e20), SC_(0.28352812140199936e17), SC_(0.74462783081321149104186552543671046301745851204849e-27), + SC_(0.496015867904e12), SC_(0.3791820544e10), SC_(0.776127685546875e4), SC_(0.215147537119264598004519939422607421875e-6), SC_(0.10086837230189300603966221534673195400104347338484e-10), + SC_(0.503288594432e12), SC_(0.586938125e5), SC_(0.12771843437840908067390157228141150513173185387927e-22), SC_(-0.349487481798860244452953338623046875e-5), SC_(-0.72029932947474925429881196156855684741460064981511e-10), + SC_(0.572994879488e12), SC_(0.4479686882443445386870784e25), SC_(0.3949284499458758322165682321378970124179942071882e-27), SC_(0.266417008e9), SC_(0.17777000343056153959167725670822180789645379680768e-21), + SC_(0.871788642304e12), SC_(0.20654001974429033907974591176490695466905211929998e-22), SC_(0.25783102660851220989209976272113706693474803698419e-30), SC_(0.64431740406461198732239319017208248330241815438058e-21), SC_(0.12190391991221392971014057913471308591001568711459e17), + SC_(0.875494899712e12), SC_(0.226093597412109375e3), SC_(0.18276990966796875e4), SC_(-0.40538668260659298304e20), SC_(-0.87620862396447187589874183773402645045819979837542e-24), + SC_(0.92167176192e12), SC_(0.14617966115474700927734375e0), SC_(0.2962839789688587188720703125e-1), SC_(-0.323903481159090176e20), SC_(-0.15195656115724489327613368628209569908647297359072e-23), + SC_(0.92746285056e12), SC_(0.7325884342193603515625e1), SC_(0.41534478125e6), SC_(0.183796966075897216796875e1), SC_(0.27055962004569991229008545959063589325367143232165e-8), + SC_(0.1323015995392e13), SC_(0.83436345194574414174670806687572621740400791168213e-15), SC_(0.26587446043832553782635536032685763530025724321604e-19), SC_(-0.90369778533118636580140234418583988079687330241541e-22), SC_(0.1951740446546404665680568108327258162423989400208e13), + SC_(0.163744841728e13), SC_(0.69148334649344262144e20), SC_(0.250710905670486651305984e24), SC_(0.183021328125e6), SC_(0.48966517083340871380066403254311456796061982956658e-26), + SC_(0.2146243837952e13), SC_(0.45278131287698752949211211671354249119758605957031e-12), SC_(0.8430518290874368e16), SC_(-0.885746479034423828125e0), SC_(0.17097085336400584019692272359292345057350265227936e-20), + SC_(0.2737008279552e13), SC_(0.88910703354695418642432e23), SC_(0.147013624882674776017665863037109375e-4), SC_(-0.138948e8), SC_(-0.36742469187297405316759652722949922342798960833565e-23), + SC_(0.2881296007168e13), SC_(0.1000261828920656625996343791484832763671875e-7), SC_(0.56146556854248046875e2), SC_(0.8827687217586030590550931806697492528618331775192e-23), SC_(0.42509319401345334213228978799787099767368705469532e-1), + SC_(0.3195750580224e13), SC_(0.1209453678131103515625e2), SC_(0.31177688248907589260716655132910091197118163108826e-14), SC_(-0.4171597312e10), SC_(-0.42339731362918471841305207444900093823614717619802e-14), + SC_(0.7204262903808e13), SC_(0.3381689405394563993960448e25), SC_(0.638556383965607886848e21), SC_(-0.42120456509063168e17), SC_(0.15575317217390122072535796938363987704778724700227e-32), + SC_(0.753277075456e13), SC_(0.57189246319545947866425095185149984899908304214478e-14), SC_(0.50392141342744323462734544896e29), SC_(0.89861124028964329323118259971904802659416547361282e-25), SC_(0.84550625913050425059505347644181958622837497454849e-12), + SC_(0.1591604150272e14), SC_(0.351564170056957952e18), SC_(0.39915753210320770987303899714279126384431587576396e-26), SC_(0.18147198280875792132716788562593424505831606627446e-28), SC_(0.6817961989239844144699667620358050442805270214532e-1), + SC_(0.17455096266752e14), SC_(0.71139728908672437321728e23), SC_(0.6174588866134016e17), SC_(-0.7305752277374267578125e1), SC_(0.16172835812094374773587673038596961971155471054338e-24), + SC_(0.20741449842688e14), SC_(0.4743499375e6), SC_(0.60682196926171104626767727515008970841312337712241e-30), SC_(0.5702780928e10), SC_(0.62259465015751190680345333485921749493056982782287e-15), + SC_(0.21823460737024e14), SC_(0.894460328026980278082191944122314453125e-8), SC_(0.30660718630209872134773085861070285318419337272644e-15), SC_(-0.56302317568e11), SC_(-0.25481170543505063442394384037544272844775408193195e-15), + SC_(0.2193780375552e14), SC_(0.1688042402747669257223606109619140625e-5), SC_(0.59463684184086124685157367095470539860668220270753e-30), SC_(-0.222474092611611039629312e24), SC_(-0.67345779651737834090180971110607868330593254403912e-28), + SC_(0.29861301190656e14), SC_(0.716266594827175140380859375e-2), SC_(0.13375914401765930660715049355796724128708774514962e-19), SC_(0.5779358744576e13), SC_(0.1685308032674899584230388525959903398092800817358e-17), + SC_(0.31117235191808e14), SC_(0.3356745714722109141803230158984661102294921875e-9), SC_(0.37225551903247833251953125e-1), SC_(0.31484928851968e16), SC_(0.31461807745559740553343508795707704290534229744319e-20), + SC_(0.31191365320704e14), SC_(0.2293932139873504638671875e0), SC_(0.61834249098451553748337548320711315606925672313013e-29), SC_(-0.5982092726894592e16), SC_(-0.15851321158930386974141141277129380455515234242728e-20), + SC_(0.334870085632e14), SC_(0.17562439325047307647764682769775390625e-6), SC_(0.17353881263527453121215165896486687553690320129363e-22), SC_(0.10955010354518890380859375e0), SC_(0.34852876235448366352201127880568420062336702413456e-4), + SC_(0.49020114305024e14), SC_(0.42052690625e6), SC_(0.4350305370112e13), SC_(-0.34981801878572553268209030398156159993725477716509e-27), SC_(0.12284492784759096402363590266094328751671947697601e-13), + SC_(0.56026120323072e14), SC_(0.2968644096e10), SC_(0.1669806335196404329218048e25), SC_(0.982560210944e12), SC_(0.43746483211725186557066605349769416924313629385926e-24), + SC_(0.59092118798336e14), SC_(0.25544630272e11), SC_(0.2050561617030631850390847488e28), SC_(-0.93237160106262528e17), SC_(-0.30932050569017569606289330408961535535923960046675e-29), + SC_(0.84026647904256e14), SC_(0.9030235625e6), SC_(0.19341944851038290442859641874855406926125844790931e-22), SC_(-0.16183332281234661790268972050670093221214074219461e-20), SC_(0.92854739256706577680259328294562476549023411198166e0), + SC_(0.8952989351936e14), SC_(0.5821022205054759979248046875e-4), SC_(0.16930462580604928e17), SC_(0.1441475953158445649402789888e28), SC_(0.64162028557540900736318509011534441036686622697431e-34), + SC_(0.91714010218496e14), SC_(0.15903771355407769760859082452952861785888671875e-10), SC_(0.20621651441981357349985057544616166528433660182218e-25), SC_(-0.15444423355232689276661517396860290318727493286133e-12), SC_(-0.19570533284217657144679813507410046091944093838418e5), + SC_(0.10547181387776e15), SC_(0.89483831787109375e3), SC_(0.2971664653159677982330322265625e-3), SC_(-0.29433792561152e14), SC_(-0.12801467922824471201024289479258151431375228395145e-18), + SC_(0.169495918280704e15), SC_(0.106314858496e12), SC_(0.30307608021550191165014175615417981032514993522398e-23), SC_(-0.9743143455125391483306884765625e-3), SC_(-0.21692895673463102774513663302873888611459425087084e-17), + SC_(0.184614706479104e15), SC_(0.1988045896512735359317049344e28), SC_(0.9218556175925116928e19), SC_(0.16526283776e11), SC_(0.87247196888777165991030567036355416711562753499749e-29), + SC_(0.22044892725248e15), SC_(0.68194390016e11), SC_(0.82951904279513563542883824670263768282126026765155e-25), SC_(-0.1445260835453154868446290493011474609375e-6), SC_(-0.14232560771964035551334897919749042153183656620622e-17), + SC_(0.323813657018368e15), SC_(0.156708486328125e5), SC_(0.16682115902222024485246354430501014576293528079987e-14), SC_(-0.3338787376455133737440661434447974897921085357666e-13), SC_(0.15769750471812656413875791763045334315928746617897e-2), + SC_(0.32790162702336e15), SC_(0.17749171611502504859023857341939015403147871657863e-25), SC_(0.113998673030377528862565203968e30), SC_(0.1091690106369558321830481872893869876861572265625e-11), SC_(0.7376829154455144537334355851632262650708094447784e-15), + SC_(0.40286692573184e15), SC_(0.52038092193792e16), SC_(0.30787743926144863285121466844884707825258374214172e-14), SC_(0.9836614990234375e2), SC_(0.32815320852077160002078659428612679661864800516549e-15), + SC_(0.47637881421824e15), SC_(0.256083277054131031036376953125e-2), SC_(0.894934712937934631550844928e27), SC_(0.63026674329507604827741060164026480733691095673533e-29), SC_(0.28443800019599121882423433218568170528455090132486e-17), + SC_(0.798277117149184e15), SC_(0.64990261775881629335552e23), SC_(0.629183676416e12), SC_(0.27870030942626650843907398780174844432622194290161e-17), SC_(0.18094555178717438538171833996718524897966754339758e-22), + SC_(0.95759886188544e15), SC_(0.4659874708323741288040764629840850830078125e-8), SC_(0.727262651482112e15), SC_(-0.5518754816e10), SC_(-0.19616453227008195539690596715591394184621211909383e-21), + SC_(0.1551973144854528e16), SC_(0.10139344880747031860591903938868807433237861914677e-19), SC_(0.7740245504e10), SC_(-0.58571932827648e14), SC_(-0.67506981129091845750446190909330129850985465284433e-20), + SC_(0.1559443435159552e16), SC_(0.1296097951186681029867031611502170562744140625e-9), SC_(0.21495435284055487900379567949710191143708470917773e-19), SC_(-0.12168303266687867641299147791755785874556750059128e-16), SC_(0.79720158864628729749958531950878190394078531069807e5), + SC_(0.159586086551552e16), SC_(0.94693035634918487630784511566162109375e-6), SC_(0.3069093933762029289472e22), SC_(-0.489862862294809540651139465216e30), SC_(-0.95301791507625821088034070804748092896597785006237e-39), + SC_(0.1755992815566848e16), SC_(0.311160515592192e15), SC_(0.879396533966064453125e1), SC_(-0.42764948393697586245822784899152190331642064968776e-24), SC_(0.40833330349573571058183037703406707577578239212629e-13), + SC_(0.183459460939776e16), SC_(0.58535432060362684618705258305616519358052915120161e-26), SC_(0.151380081803154098452068865299224853515625e-7), SC_(0.85484123133369723281636554248303846992307342134154e-25), SC_(0.26347058287077926347365609944873061617273956547542e10), + SC_(0.2038235383463936e16), SC_(0.197336701599744e16), SC_(0.78108794987201690673828125e-2), SC_(0.19746285946216817928151632558983474829972237785114e-19), SC_(0.35463365959776981995585843867682572518957434928647e-12), + SC_(0.2082685879058432e16), SC_(0.911282624e9), SC_(0.1114427401123063379525632e25), SC_(0.37492192874537494211295562962504845927469432353973e-17), SC_(0.64091497549275033408033422864822796853191222161235e-22), + SC_(0.2460775474003968e16), SC_(0.11911894016e11), SC_(0.11488683748933763072e20), SC_(0.2671757689356288e16), SC_(0.33954867185231449127923450476505270618078000384498e-24), + SC_(0.2660433739644928e16), SC_(0.2021791625e7), SC_(0.39646356055629828823414282575648289336041796455945e-27), SC_(-0.90965958552407811523940472930860323685919865965843e-16), SC_(0.89536100819620633898256567017554320012190758544577e-8), + SC_(0.3490414963195904e16), SC_(0.15486944554331788202011050222970875434036486240075e-20), SC_(0.65645105e7), SC_(-0.3862249885736011563008e22), SC_(-0.15030321942773773313070642569575229578631232758305e-27), + SC_(0.3732843586912256e16), SC_(0.91425932943820953369140625e-1), SC_(0.27109355651322886594095651346947306592483073472977e-17), SC_(-0.2280010496e10), SC_(-0.27270972086797623874696761025941465895226780556069e-15), + SC_(0.3762704347037696e16), SC_(0.10164524532769642241629852708355797252185587220552e-24), SC_(0.27152649027584e16), SC_(0.383565435413402155973017215728759765625e-6), SC_(0.23804839018775718073693636074253046814229093331093e-11), + SC_(0.6551729407524864e16), SC_(0.25762003497220575809478759765625e-3), SC_(0.156271296e9), SC_(-0.7108036079443991184234619140625e-3), SC_(0.54358974535033512119646257223362074375935527544017e-10), + SC_(0.7552590468349952e16), SC_(0.575958067183616e15), SC_(0.23832502919148795513995921571681613215787365334108e-18), SC_(-0.16014309555286814611860677563630328545940528783831e-20), SC_(0.93858067563758918073486329121399146014156473797673e-5), + SC_(0.7617166912258048e16), SC_(0.78087929856e11), SC_(0.23989477554782208e17), SC_(0.83931917784951364861476853784783003220582031644881e-18), SC_(0.27034519724555596789443192463038139534250181357333e-19), + SC_(0.8222450747703296e16), SC_(0.8274803712e10), SC_(0.527242330357572379789492224e27), SC_(0.48895778381210611976766991253265851212856409555572e-30), SC_(0.74455751091076848286943297672181953481088219377495e-24), + SC_(0.8870075981365248e16), SC_(0.9699246828571174660704143659015197265205188159598e-20), SC_(0.86747422243322953296456139754310066421454789020729e-25), SC_(-0.30056768339968e15), SC_(-0.42847731490613056519922750895506180779273890356379e-20), + SC_(0.8947236142579712e16), SC_(0.64884398852035896076984045066637918353080749511719e-12), SC_(0.3640597240689233647108096e25), SC_(-0.20160019901007336504105681634819746061656770691473e-25), SC_(0.33521550963867647751710831933851768581523193451564e-12), + SC_(0.9247942909100032e16), SC_(0.66864512022555389032059044995826013746409444138408e-17), SC_(0.34406117105255590527265189612451978026091969908862e-23), SC_(0.16972130859375e5), SC_(0.46568116999240819390977312271152595288904115985538e-10), + SC_(0.15615699003113472e17), SC_(0.2157478536102264143892170977778732776641845703125e-10), SC_(0.92339736328125e4), SC_(0.2467952464569808657124383444170234724879264831543e-14), SC_(0.28137654352976876055827088720392588615737493813187e-3), + SC_(0.18757896003125248e17), SC_(0.27796297217719256877899169921875e-3), SC_(0.3795939164774608798325061798095703125e-5), SC_(-0.4411582267493940889835357666015625e-4), SC_(-0.16561241734027399380354476330796336941583283787624e-4), + SC_(0.19790925832126464e17), SC_(0.14673756579750143547516416653309079265454784035683e-15), SC_(0.3067474539712255353944014848e28), SC_(-0.46111488638490765946006906581919557197059289510577e-24), SC_(0.33318296543710703146930010704335335102607434599885e-12), + SC_(0.31614863423832064e17), SC_(0.64014885e7), SC_(0.82997499668329372719087076888666576479636205476709e-19), SC_(0.97673453929425068759145069339947469290799664243252e-24), SC_(0.1474082113274986927473821089453469821830117865384e0), + SC_(0.35496891089158144e17), SC_(0.1432262115478515625e3), SC_(0.24132785049458572347706444480878020231965231517934e-25), SC_(0.537947271368466317653656005859375e-4), SC_(0.28483638915557694690075255204358779291820018303066e-6), + SC_(0.37258725328683008e17), SC_(0.27527139900776398375687894235391167938115142930643e-29), SC_(0.34671355e7), SC_(-0.329579110257327556610107421875e-2), SC_(-0.44826666388956802711142928493336346675505691157686e-14), + SC_(0.45080659638616064e17), SC_(0.66192871423119660955992064e26), SC_(0.65104581211365760324995297566040105840304400052279e-28), SC_(-0.4609219395046437739438260905444622039794921875e-9), SC_(0.30393593195986173088236185388151378128529468124634e-25), + SC_(0.55441482261200896e17), SC_(0.84905730317661677425908674864238508128710947175932e-22), SC_(0.68363272192e11), SC_(0.4260724998144e14), SC_(0.11697925063926465337112606670912855638056790467033e-20), + SC_(0.62729268668399616e17), SC_(0.10206736333437342809907509471629755506880924287999e-26), SC_(0.81748619457743373061928487104122026290137009371661e-27), SC_(-0.59081488088599881019268440147710709923287045273327e-27), SC_(0.17296073749639974583005326897055234716422193206457e19), + SC_(0.67960092158328832e17), SC_(0.18397274324487521318375543111309916577411627258698e-20), SC_(0.17372376323945837306439443636918440461158752441406e-11), SC_(0.22240787693568e14), SC_(0.15314765068954850046837516568238243973823802962003e-19), + SC_(0.98211402249928704e17), SC_(0.91343463282100856304168701171875e-5), SC_(0.61815804943327298417046040349825952731066536216531e-20), SC_(0.15683097532096506747707287147074704802829359095995e-22), SC_(0.14847580243473942674356093212105732071171909400697e6), + SC_(0.10021945407963136e18), SC_(0.28705071104e11), SC_(0.1324882283108628599609807308112863211135845631361e-16), SC_(-0.21994842184582347981213138944e29), SC_(-0.38428198134253200965721479225788208168133625801132e-35), + SC_(0.105732534230319104e18), SC_(0.3443469676067678619801881723105907440185546875e-9), SC_(0.13889756370430423980110642247760388383326368710868e-22), SC_(0.26158144e10), SC_(0.79112331506380595128354554585081093242068772744655e-16), + SC_(0.11384566732292096e18), SC_(0.58757351632535552e19), SC_(0.273440826416015625e3), SC_(-0.63452058800333914204274688e26), SC_(-0.65725875175758627471160771763067147666834253039354e-34), + SC_(0.117433949289971712e18), SC_(0.162249111923529198975302278995513916015625e-7), SC_(0.109367839992046356201171875e0), SC_(-0.25682033451598259706675813002826197495309656915197e-20), SC_(0.32066589256601074054642730535177997208081794531389e-2), + SC_(0.124700664587616256e18), SC_(0.3095501916077023035392e22), SC_(0.4245943000138700927533056e25), SC_(0.53696867131834092023185408e27), SC_(0.13177984836158444046950861908532532345926893822506e-37), + SC_(0.128395461743607808e18), SC_(0.206836903384823477636694016e27), SC_(0.53310077419155277311801910400390625e-5), SC_(-0.66452324352e12), SC_(-0.16246339708306689726375619149754640087627232329011e-29), + SC_(0.140845240494850048e18), SC_(0.15238641357421875e4), SC_(0.9007602981666816e16), SC_(-0.21558438e8), SC_(0.15155109340272247166088816142038442919912329856745e-21), + SC_(0.15402689026326528e18), SC_(0.6474543616e10), SC_(0.3346712684759722833405248820781707763671875e-8), SC_(0.28833691527365083704665074771632166453248624892738e-29), SC_(0.4096276045356790148209349023868569849111705574315e-7), + SC_(0.245924553149120512e18), SC_(0.12432241406593107741605394588021265875441186132822e-25), SC_(0.11698430441812742785454260394458960094979845402414e-30), SC_(0.10142405428001112064e20), SC_(0.30423445192187443924267108883316508334540324904605e-25), + SC_(0.30980423739768832e18), SC_(0.76340669757426261951512576e26), SC_(0.632591748046875e4), SC_(-0.1336046131083024763393742235552397179532135851332e-20), SC_(0.22571232473347972583727080449588071170762441941591e-21), + SC_(0.357437417575153664e18), SC_(0.2173093520104885101318359375e-1), SC_(0.12372333568e11), SC_(-0.12248384952545166015625e1), SC_(0.53657229424973014573915434188099752907498200207294e-14), + SC_(0.36385554182438912e18), SC_(0.4880095232e11), SC_(0.22669229503540638814840235681913327425718307495117e-12), SC_(-0.93454334481970799504143406421455969601552737913153e-21), SC_(0.48923745747855953399656188111764955982957757716394e-6), + SC_(0.415087526638780416e18), SC_(0.140571919027433667616047104e27), SC_(0.11791684300987981259822845458984375e-4), SC_(0.17635498046875e2), SC_(0.14682572203222134214343874166237989457260012270301e-21), + SC_(0.441417256711225344e18), SC_(0.3197955992849934712832e22), SC_(0.1093556445397325660451315343379974365234375e-7), SC_(-0.9779507932627939936764960293658077716827392578125e-11), SC_(0.32078703557500394804653928990709084664190346053448e-14), + SC_(0.45362430968070144e18), SC_(0.317074383652647862272e22), SC_(0.89612589356621110444032e24), SC_(0.180616595243008e15), SC_(0.38407704573117072373094012615593598112899782284232e-30), + SC_(0.466885347624615936e18), SC_(0.1095394379005843587298734717096385279518671401362e-29), SC_(0.8691929266426547798016e23), SC_(0.58962798910790525160497549395088867640879470854998e-17), SC_(0.96336031777320908719244768706875836157689599501609e-11), + SC_(0.53813397598240768e18), SC_(0.9151597128974336e16), SC_(0.24511930706754350706155776151717873290181159973145e-13), SC_(0.33505779800327468727968837771957314765596674943637e-24), SC_(0.36045288702975935176739474723909622333219641680094e-8), + SC_(0.812948248690950144e18), SC_(0.573921154459150755823616e25), SC_(0.44215075630028238618624e23), SC_(0.8585306549072265625e2), SC_(0.12603969062001301466969564143853380112338605539371e-30), + SC_(0.915670672271736832e18), SC_(0.39675285911547656146099641153758563749676113729947e-22), SC_(0.14906016349079502514296535764515283517539501190186e-13), SC_(-0.3871874820760012880782596766948699951171875e-8), SC_(-0.56087300675732405982389260047019515740430536251903e1), + SC_(0.921704585926541312e18), SC_(0.106680765625e6), SC_(0.56570606632127019614208e23), SC_(0.2693166200043876672351857498571899170690391311922e-24), SC_(0.13985495225057612995722164718279974711007682172634e-20), + SC_(0.1993097509492228096e19), SC_(0.31910282975259219863080686896417148545879172161222e-17), SC_(0.6051646e8), SC_(0.7197362225152e13), SC_(0.19298193055539541472180089436877636761796212157916e-20), + SC_(0.2513717777072652288e19), SC_(0.871877928148023784160614013671875e-4), SC_(0.10190402621727351770774006081609545752708623211902e-23), SC_(0.498152734340617797670347499661147594451904296875e-11), SC_(0.14259607366931342684347648514473148016605549985246e0), + SC_(0.4173026783555223552e19), SC_(0.25325901731494375978251987705874090841683295149966e-25), SC_(0.2247014312744140625e3), SC_(-0.1925644398234143277786857472e28), SC_(-0.15341643472452791881468857304558692672132616776398e-34), + SC_(0.459235907791224832e19), SC_(0.87862375252982516382616040573338977992534637451172e-13), SC_(0.401803645910803197693894617259502410888671875e-9), SC_(0.3200137703142619193802752e25), SC_(0.14730346091716177809600030451184040334577470221661e-31), + SC_(0.5077423201034698752e19), SC_(0.93737803399562835693359375e-3), SC_(0.17346513114802064592367969453334808349609375e-10), SC_(0.114951548280117776812403462827205657958984375e-8), SC_(0.18694696679082786599750684587309554591836894744968e-2), + SC_(0.7115694558070964224e19), SC_(0.911697810579426004551351070404052734375e-7), SC_(0.353218575e7), SC_(-0.69922551130979362004308562936482492999405571568888e-30), SC_(0.54114818216034650154393366386810274769974582629441e-7), + SC_(0.868149367402397696e19), SC_(0.18117627432139048989226726261264354120224815206108e-26), SC_(0.55646827574017444434287932233212870187285398193566e-25), SC_(0.2699863558762810316865550031364962002555785147706e-19), SC_(0.26675383124052748044060181233075977741996031511065e12), + SC_(0.871409419378753536e19), SC_(0.10055294386176e15), SC_(0.19118333886464e15), SC_(0.19455523781994563368983933894919118035016225576328e-21), SC_(0.30245570478436121805641627713230961372684706522729e-21), + SC_(0.9400097640298840064e19), SC_(0.8751563727855682373046875e-3), SC_(0.423289281913088785772479250432e30), SC_(0.794114232982437888e18), SC_(0.22504688367446473660334442312164588173070712711901e-32), + SC_(0.10280280887589339136e20), SC_(0.49921325198101894818741785761816914940427547878188e-26), SC_(0.5754278161047093248e19), SC_(-0.13595621377765355429940102970217622596615925090191e-21), SC_(0.20270137682870188516129112599835658832987453293531e-9), + SC_(0.11316614577233330176e20), SC_(0.900104978432e12), SC_(0.12594157657128558086556679995737795252352952957153e-13), SC_(0.401503996716456867943634279072284698486328125e-9), SC_(0.73425500027611546587881384574097676840747502710601e-10), + SC_(0.16893768561871290368e20), SC_(0.38262641055553103797137737274169921875e-7), SC_(0.56400939474343658730504103004932403564453125e-10), SC_(-0.348154485225677490234375e0), SC_(-0.18170651414739782456395795561758287675420244467194e-7), + SC_(0.1748333989082431488e20), SC_(0.248268663883209228515625e0), SC_(0.339717292032e12), SC_(0.23636871875e6), SC_(0.39724752710467164452324293888383999524241837515003e-17), + SC_(0.1917414138422755328e20), SC_(0.40000660111603838852169207047177953984196108194737e-21), SC_(0.19299584181631174594238409616964169401853723684326e-18), SC_(-0.2447043658252288e17), SC_(-0.11497180098873460666081866507470383163261042553405e-23), + SC_(0.30205231483425128448e20), SC_(0.20213326246758156110559789819802745114429853856564e-16), SC_(0.11798525e8), SC_(-0.72186512098956854158015270537643843098507632355387e-26), SC_(0.40894641444986862014203206172561233922281613197619e-3), + SC_(0.3083335169004797952e20), SC_(0.25554565784928256e17), SC_(0.55001718457514670035379822365939617156982421875e-10), SC_(-0.475754700601100921630859375e-1), SC_(0.52682237786148250108822272500251195557773448891767e-21), + SC_(0.32557997250865790976e20), SC_(0.152981488e9), SC_(0.13022084679680682421649408e26), SC_(0.328559815883636474609375e0), SC_(0.12571931624708992335316981931132371770582533530642e-24), + SC_(0.38083625921602912256e20), SC_(0.14043506688e11), SC_(0.13209346463532805303342509972708285204134881496429e-15), SC_(-0.56693135519481074879877269268035888671875e-7), SC_(0.83158459743638934087112797685339082141513696858831e-15), + SC_(0.50355072889071337472e20), SC_(0.9924967773258686065673828125e-2), SC_(0.3607895660400390625e2), SC_(0.7361732201616177917458117008209228515625e-7), SC_(0.4650536471107286486001524802196860743225649883219e-8), + SC_(0.7018217904466296832e20), SC_(0.4750826171875e5), SC_(0.28394778265649152e17), SC_(0.326307279807647176994578330777585506439208984375e-10), SC_(0.17696575430922792155808924716276887632062631112292e-18), + SC_(0.113674073964877447168e21), SC_(0.183615109375e6), SC_(0.404058591811917722225189208984375e-4), SC_(-0.55481593261847917064658769950259091085359441919422e-24), SC_(0.24338715310708295782533356891202968386388823460614e-8), + SC_(0.12116116760789254144e21), SC_(0.2893880591727793216705322265625e-3), SC_(0.130319118499755859375e1), SC_(0.381011011567616e15), SC_(0.12398589388448327034537697871075774660376423130072e-22), + SC_(0.140771054246300745728e21), SC_(0.4364620208740234375e2), SC_(0.10711124272997777587041261201942927950011067906889e-29), SC_(-0.57519616e8), SC_(-0.34019512662514247429907106459469873769817730537827e-16), + SC_(0.15262866262926032896e21), SC_(0.78398e6), SC_(0.3786630536101888e16), SC_(0.62870051086045850977047303157811296808459919772775e-28), SC_(0.17803821835344232596567077346772829000234069893566e-18), + SC_(0.2306652249771737088e21), SC_(0.72487803782646221227581317947397110401652753353119e-15), SC_(0.2927755373186121728e19), SC_(0.85256172876455101027449670235067169521414598420961e-20), SC_(0.27306690726663827206563405623101192238717602008124e-10), + SC_(0.263866535486334959616e21), SC_(0.150418243408203125e3), SC_(0.70894723477708281518115769172324141873507978746372e-27), SC_(-0.3900062680322030756578725083109804932239106623718e-30), SC_(0.25137329125431234354297233526449824654887426191218e4), + SC_(0.398680594063019737088e21), SC_(0.10907375003199604179826565086841583251953125e-9), SC_(0.41478983876103159289527866349089890718460083007813e-12), SC_(-0.6966302212096e13), SC_(-0.57993424418345427711698913329809965986376276110811e-21), + SC_(0.486625867239520206848e21), SC_(0.2663514463837359985504355062296832912238642165903e-19), SC_(0.4719122320543576863524228422930565122003386188676e-26), SC_(-0.12369338210470428252452159488e29), SC_(-0.52486756707121894054043599617133836143966167046517e-36), + SC_(0.532848913858758180864e21), SC_(0.2804503330955387951917145983316004276275634765625e-10), SC_(0.172887280972042231349248e25), SC_(0.182365325927734375e3), SC_(0.11497047485079965458009798428538418185914230259387e-22), + SC_(0.834580765033977872384e21), SC_(0.15617056749761104583740234375e-1), SC_(0.71962334215641021728515625e-1), SC_(-0.521713036505389027297496795654296875e-5), SC_(0.1335697144755327396002625953088980177925473155612e-7), + SC_(0.897051039890164154368e21), SC_(0.9091429412364959716796875e-2), SC_(0.103353980929199451566091738641262054443359375e-8), SC_(-0.39896293614162682356244622113147248278805078597342e-27), SC_(0.71535020612477739974214063462457085760294155498574e-3), + SC_(0.91184909420951764992e21), SC_(0.65724690529779712e17), SC_(0.22635786081082187592983245849609375e-4), SC_(0.28443816312700986870254382665734738111495971679688e-11), SC_(0.70357550553979701321067050402995067028922500261273e-15), + SC_(0.949726407769284673536e21), SC_(0.3587426362916534827718351152725517749786376953125e-11), SC_(0.15142064652433650485798833454982273253063182524288e-29), SC_(0.5263105426198626304e19), SC_(0.65505386294903740961944955600649868934680759606662e-27), + SC_(0.1099886552444978593792e22), SC_(0.11876603850689937599006851654101415277642317391837e-21), SC_(0.13402266243506853384161978158875538902350399439456e-19), SC_(-0.58575987284375708479930064918883569902163799270056e-20), SC_(-0.38608701661390120303681923440636689787864952197327e10), + SC_(0.1146824826980038344704e22), SC_(0.123134608e9), SC_(0.36464645756234167146109012677852867501115952109103e-20), SC_(0.145960173568e12), SC_(0.25695141822340345338516566415967223808824193353226e-20), + SC_(0.1672886569909744566272e22), SC_(0.22487528568887739897399753816881196044619173335377e-19), SC_(0.185430274308630309240832e25), SC_(0.29157344e8), SC_(0.15669081776377370465324112158766399865034932740325e-25), + SC_(0.1711439775257338052608e22), SC_(0.30659185015094057321365504e26), SC_(0.7833119869232177734375e1), SC_(-0.5409414316032e13), SC_(-0.30985201642688029716457103329179602366602811022103e-33), + SC_(0.2926998047169095663616e22), SC_(0.3667952402432e14), SC_(0.28799857572511128652513152655127873625243270679086e-26), SC_(0.88063873291015625e2), SC_(0.15325644590239837768811954228179177539171136144697e-17), + SC_(0.427296043882866802688e22), SC_(0.14208654969087828444471944343733085282244221758674e-22), SC_(0.1716118473408512e16), SC_(-0.17996093839902769152e21), SC_(-0.16601104234961252621793669598304861576818344610456e-29), + SC_(0.439028906074585432064e22), SC_(0.320426825e7), SC_(0.32412401535258716801207369728e29), SC_(-0.30931359806372614114377728e26), SC_(-0.27607657181716051791812572528647867932005126507654e-38), + SC_(0.5882928907194279657472e22), SC_(0.19802219475157014020096e25), SC_(0.49511542775217689241155796992e29), SC_(0.372750661335885524749755859375e-2), SC_(0.3559981037118474445665924937030462589994417113189e-35), + SC_(0.6443661400749065109504e22), SC_(0.240611655851932728105631744e29), SC_(0.15126033260477136128765155826087636266509091563425e-30), SC_(0.95370733737945556640625e0), SC_(0.38753317214698960194399613216931555454276746759297e-24), + SC_(0.6865513577844859469824e22), SC_(0.401415872e9), SC_(0.2812358319675629247660032e25), SC_(-0.2376111269076472061493248e27), SC_(-0.33007281458590603457624836915435654293066634477422e-37), + SC_(0.8553573619324145369088e22), SC_(0.17097021875e6), SC_(0.799823729380687897165824e25), SC_(-0.11171394538600498691494067315943539142608642578125e-10), SC_(0.53609971873333187098178460340334684598225230879559e-24), + SC_(0.12478698822407829848064e23), SC_(0.1965407257080078125e3), SC_(0.344887394304e12), SC_(-0.18247611706101452000439167022705078125e-5), SC_(0.32425282996209840045906418036654137989438047272958e-16), + SC_(0.12842575035600576970752e23), SC_(0.9170528e7), SC_(0.19517806153831335214121622811944689601659774780273e-12), SC_(-0.1536849212646484375e3), SC_(-0.28866373378511381562208782155938170760762386941484e-17), + SC_(0.1434108250941351264256e23), SC_(0.5747814608928768e16), SC_(0.44840411765612042671591552789323031902313232421875e-12), SC_(0.3930397855449088e16), SC_(0.55974105791738659682356948062274012447992428623037e-26), + SC_(0.1791534183567796994048e23), SC_(0.117519666905088e15), SC_(0.4539695293836727165124608e25), SC_(-0.11851369472e11), SC_(0.5136960010384668990061595781452168149528396570548e-29), + SC_(0.37615667369265726488576e23), SC_(0.60285032077445066533982753753662109375e-7), SC_(0.20308769621033541627525034757551728598068407904975e-22), SC_(-0.247466049536e12), SC_(-0.13827879934614263120844099105951850431902385276528e-20), + SC_(0.62052514199351953719296e23), SC_(0.53361689503260041482896036939970185741799468814861e-19), SC_(0.9145080596241438650400768e25), SC_(0.88322341442108154296875e-1), SC_(0.21049044423814160247516381166203365355421196509206e-22), + SC_(0.637769379930724892672e23), SC_(0.171703486984142728033475577831268310546875e-7), SC_(0.24447546456940472126007080078125e-3), SC_(-0.26166733832192e14), SC_(-0.92116642322940181469976802769678911153660574378313e-23), + SC_(0.68404845977357665697792e23), SC_(0.72781658358531814423386663293058518320322036743164e-13), SC_(0.69982016e9), SC_(0.16710320473225417331633553408e30), SC_(0.12006936511735891151610090899032124035778652751878e-38), + SC_(0.73319304495133544677376e23), SC_(0.2395810662364936952348672e25), SC_(0.24744480848549735980552416482594396338057229911556e-22), SC_(0.42062228e8), SC_(0.17336426124777650281100655275560249740310858728334e-26), + SC_(0.75699898250962334121984e23), SC_(0.29487300065576848347864702404308445693459361791611e-15), SC_(0.269071126588155160952832e26), SC_(0.1079208448e10), SC_(0.10050952810470758835622016409950300106552466316446e-27), + SC_(0.90721537714466311897088e23), SC_(0.391979743592841216e18), SC_(0.15474599e8), SC_(-0.22537551191366473088399216280475560110119998360502e-28), SC_(0.1696578299691663677244712148792478977665952793766e-21), + SC_(0.9457270987101889888256e23), SC_(0.5066510699517101396372603661077960168768186122179e-16), SC_(0.462716831308237710032896e24), SC_(0.84645887067429873701351894510480633471161127090454e-15), SC_(0.67289657651508478617450509217543609215998762913744e-15), + SC_(0.98595622295761632362496e23), SC_(0.1268757375e7), SC_(0.35219765472105368786515100509859621524810791015625e-12), SC_(-0.103132532828012544e18), SC_(-0.12278243966700762109179057970948886254224771593575e-26), + SC_(0.125138271246813010853888e24), SC_(0.507435381412506103515625e0), SC_(0.457703061401844024658203125e-1), SC_(-0.2404502470656e13), SC_(-0.52988754487843399200517365148569210454939618816664e-22), + SC_(0.210179409744077661405184e24), SC_(0.775467603201754089842406683474462128114628768627e-26), SC_(0.1351436267417501696e19), SC_(-0.9742528076171875e3), SC_(-0.48421711808796773233785861274336554356656425853338e-29), + SC_(0.211431536541276225667072e24), SC_(0.209520402514204164096e23), SC_(0.374303497374057769775390625e-1), SC_(0.119524568020779042853973805904388427734375e-7), SC_(0.19038048046682714911932275529728701896995311231633e-20), + SC_(0.261697851292622694383616e24), SC_(0.232045472709846499328e21), SC_(0.740444091796875e3), SC_(-0.40228969244368584234905483754118904471397399902344e-12), SC_(0.2584457357103991738079307538340636200872583014807e-21), + SC_(0.277204771630374352584704e24), SC_(0.178649388253688812255859375e-1), SC_(0.1626075136e10), SC_(0.32477325439453125e2), SC_(0.38373039029677064419294488780664341812940671142276e-16), + SC_(0.283834790857804101976064e24), SC_(0.1190209257472e16), SC_(0.14477963558912e14), SC_(0.4968694503397173407776768e25), SC_(0.1201225027146965514322811861323721315530271750753e-34), + SC_(0.283915729550307204530176e24), SC_(0.2116143198171993589085104758851230144500732421875e-11), SC_(0.14341135e7), SC_(0.5234013997795115008e19), SC_(0.16303242760584592161576898954092115216713837835169e-28), + SC_(0.385585445901317154275328e24), SC_(0.34954261617532788444443056161126115455317631131038e-20), SC_(0.962023936e9), SC_(0.1173024060108218691311776638031005859375e-6), SC_(0.71438835322268723367469707367256359972531243523922e-12), + SC_(0.48688847917066659823616e24), SC_(0.12212552573408426924125600686592708205013835254249e-21), SC_(0.1269279595243605041993096779751049041351507185027e-17), SC_(-0.72183370215235675049388064383748542240937240421772e-17), SC_(-0.87497936351054671381052980107636114663083556746798e6), + SC_(0.499508033700919974559744e24), SC_(0.83543058300870143401334898234397545457863287765576e-22), SC_(0.83509703330004320109836157826066482812166213989258e-13), SC_(0.28795215625e6), SC_(0.324824360656453279750504665337982414528286007074e-15), + SC_(0.606468632937360311451648e24), SC_(0.2216391133125217294264075462706387042999267578125e-10), SC_(0.12612983614823632236281100094325209625724382167533e-23), SC_(0.27668977677607065057685531428433023393154144287109e-12), SC_(0.22836510730242525394190340897974708875725743760574e1), + SC_(0.903024183216244059537408e24), SC_(0.15518063165544166788813746673722175600112280614926e-28), SC_(0.62680088576e11), SC_(-0.497913248836994171142578125e-1), SC_(-0.50366521060667220070702394050068183035765006836168e-22), + SC_(0.903113750805633203961856e24), SC_(0.2226578423545856e16), SC_(0.42335034231655299663543701171875e-3), SC_(0.72104642819988094924627148093521618126520988933947e-24), SC_(0.79999537635872505410233957947111656702210094502265e-16), + SC_(0.1031290663771427871653888e25), SC_(0.257509465140248750003593158908188343048095703125e-10), SC_(0.2186597346798524300263424e25), SC_(-0.40490232490529281863807058161608409818654763512313e-18), SC_(0.3809772984915159073428314854828102660677914157018e-17), + SC_(0.106024931377857842642944e25), SC_(0.2087689239260726026259362697601318359375e-6), SC_(0.8719922561795101501047611236572265625e-9), SC_(0.76085361343068974874624e24), SC_(0.13617175123806700013292760824408068565561587489962e-33), + SC_(0.1404590434004466388697088e25), SC_(0.2110544375e6), SC_(0.2084326724156433559977984e25), SC_(0.516740970708992e15), SC_(0.12115287981044689713392709277915156534118670211248e-30), + SC_(0.1511774231638439207370752e25), SC_(0.11230262057176420704600692485968125650585766606149e-24), SC_(0.2174006933223990990452293632e28), SC_(-0.2921577472e11), SC_(-0.42627147535886558844166037730594649807162499889897e-37), + SC_(0.1611108507323484384264192e25), SC_(0.11971012087915599989354498156046702206367626786232e-15), SC_(0.191893782528e12), SC_(0.873085859375e5), SC_(0.2867037497672644519809952844518942654262315886081e-19), + SC_(0.1657523685947075284959232e25), SC_(0.25513326169038305064700172114511289578331343363971e-18), SC_(0.80186429235745095942144e23), SC_(0.1547967032333730230675428174436092376708984375e-9), SC_(0.10388880365043120092474875588793613904886787794866e-17), + SC_(0.2325958174819757687046144e25), SC_(0.10062084498940748744644224643707275390625e-8), SC_(0.73901765063055790960788726806640625e-5), SC_(0.1686328448e10), SC_(0.20077650573547504082824414766675227623171993152151e-19), + SC_(0.2582930687253756671688704e25), SC_(0.98294646430729628238873174517209463374456390738487e-16), SC_(0.523289710174790201335781603120267391204833984375e-10), SC_(0.11728855386916592351553845219314098358154296875e-9), SC_(0.20504758549526996820756527033295801374195506995035e-1), + SC_(0.2827151743731615852920832e25), SC_(0.39566695676371483377659066249520947167184203863144e-17), SC_(0.14022327979649670404142971477700133076105259988253e-20), SC_(-0.1178793127110111527144908905029296875e-5), SC_(-0.21015559519097754189923254744815147163212563084929e-4), + SC_(0.3658255674684168267104256e25), SC_(0.347205125e7), SC_(0.952333915392338525421568e25), SC_(0.493732747180191557510859063296e30), SC_(0.38595612990567469629333401973433790503717814345531e-41), + SC_(0.80777571722833747247104e25), SC_(0.55398272e10), SC_(0.341833367802954728115011584e27), SC_(0.4525246741929405710336e22), SC_(0.13127412651201261844673654075052287525110627430968e-35), + SC_(0.18820064668587267094216704e26), SC_(0.302210201308383830109960399568080902099609375e-9), SC_(0.33895318467300131244893458519885746926814107382597e-21), SC_(-0.220309690490694265463389456272125244140625e-7), SC_(-0.8857373512501906409555193551969219570566044570186e-4), + SC_(0.21080026013603626963959808e26), SC_(0.46500309524870072390394842225085081377500273447367e-20), SC_(0.111704088747501373291015625e0), SC_(-0.2204564333716972336895229952e28), SC_(-0.93741877431301314282215548916844170971630819751383e-38), + SC_(0.24925849334950778558742528e26), SC_(0.31317834636651731435069138009717243018286553235541e-24), SC_(0.446171086848e12), SC_(0.611424244567615460255183279514312744140625e-10), SC_(0.18071495322856456358853957065938890778533770500459e-12), + SC_(0.25957591871894418276483072e26), SC_(0.33820226466031909703805272138232851375505561009049e-17), SC_(0.407093465328216552734375e-1), SC_(-0.74596487672624371624736927532950403474387712776661e-17), SC_(0.55899053627950401691741891899760992409332510195374e-3), + SC_(0.34176589422481911700258816e26), SC_(0.2594374745967797935009002685546875e-4), SC_(0.32639631015324299667668128677178174257278442382813e-11), SC_(-0.39206009507215186830735710722877728969003926356995e-26), SC_(0.99656432592835780571086861488747564238726543822412e-3), + SC_(0.52899930894361691974270976e26), SC_(0.403085186917451210319995880126953125e-5), SC_(0.6825940447919154921472e22), SC_(-0.14375419641822445568e20), SC_(-0.60363232208546199946445713316543948296321482911499e-34), + SC_(0.537890916288306029264896e26), SC_(0.12782816893625960774148491808127646127292821945365e-26), SC_(0.573235595703125e4), SC_(-0.12544778125e6), SC_(-0.71657596009498530548482712636575535494211682114149e-17), + SC_(0.8433542407536772363845632e26), SC_(0.42796459072778090240040672609944646251280316040511e-25), SC_(0.22687100431950362857652078512823989875357710843673e-19), SC_(0.11294291974004753756629686802523751532056905944046e-20), SC_(0.88701138982547221081855811970715058644159621057193e8), + SC_(0.139104185388464893432168448e27), SC_(0.231760859375e5), SC_(0.43720544762662627569227424828568473458290100097656e-12), SC_(0.2374636544e10), SC_(0.6921609089013412373280402427506383594598908716228e-21), + SC_(0.156845304607866907279753216e27), SC_(0.976198280113749206066131591796875e-4), SC_(0.10936154937744140625e3), SC_(-0.41998498541662710058071359488e30), SC_(-0.16652502911178853185876697517315755871318331105826e-40), + SC_(0.157999646511767429891227648e27), SC_(0.69354773968300552570460372409157516301196394394729e-27), SC_(0.40459505460468958310676912404346694529522210359573e-15), SC_(0.2743745536e11), SC_(0.26472063332119141767164566279621494424995662755822e-21), + SC_(0.169200325045883132536946688e27), SC_(0.12987603416915550095353577472e30), SC_(0.20901618155057581480384722985230161462766318436479e-21), SC_(-0.8212174501576704e16), SC_(-0.49333829304862756761854981623471626931832589089802e-40), + SC_(0.18019738841891322915192832e27), SC_(0.1161228928e10), SC_(0.18421718410258806513944641963201765549884569850292e-21), SC_(-0.39847982078741191696921488112504566858618204605591e-21), SC_(0.17283122168253610043193906220733507044384388549389e-6), + SC_(0.240541779585381516324110336e27), SC_(0.2905063139374032543660320015987963415682315826416e-13), SC_(0.36726935534616426233006549022576515777221278780118e-24), SC_(0.5391843328e12), SC_(0.10685173357205110804114321359031375712546961715976e-22), + SC_(0.26160499139176195703177216e27), SC_(0.25551566240720070127823149164214555639773607254028e-14), SC_(0.2455513858048e13), SC_(0.76865694789146174443197825024e29), SC_(0.42102041637540574313527997216886696455400412572293e-40), + SC_(0.28423416574930367528566784e27), SC_(0.34055852755898730066519419779069721698760986328125e-11), SC_(0.70640065850067723747656760044083495790872423425455e-25), SC_(0.10020495667270640877824310586985401272386297932826e-18), SC_(0.47817076033607555350752704896344130871965359055178e3), + SC_(0.339603340911883980420153344e27), SC_(0.539351792484352e16), SC_(0.5777183105237782001495361328125e-3), SC_(-0.42759100966109184e17), SC_(-0.63088198011691858070252939500618223753106170783744e-29), + SC_(0.418457674697258348132171776e27), SC_(0.1146871355062355355511214309376e31), SC_(0.4832090820796481536e19), SC_(0.2239617e8), SC_(0.85607629029587105611757975652813867965916905262051e-36), + SC_(0.482905248935018145708507136e27), SC_(0.11712293277443256300383769147321899595226568635553e-17), SC_(0.43801356384862208e17), SC_(0.790541259765625e4), SC_(0.11524019934599608840071663225685934856677773818628e-22), + SC_(0.704943726729360116931362816e27), SC_(0.280859119791213305197045481472e30), SC_(0.9329180732400125083648e22), SC_(-0.263649216e9), SC_(0.35954212306917041544272590413024826280517747178928e-37), + SC_(0.108138576895876428321521664e28), SC_(0.121629664e9), SC_(0.837203197023246876672e21), SC_(-0.34636652e8), SC_(0.3495258670475377943600732910414924000928562264996e-27), + SC_(0.1583264268936843798561947648e28), SC_(0.74033955225251559624163877337821304536191746592522e-16), SC_(0.106813757838608580641448497772216796875e-8), SC_(-0.95081157982349395751953125e-1), SC_(-0.78067064686933324405048609338056968328732594995288e-11), + SC_(0.1903848463306411019979456512e28), SC_(0.41524315625e6), SC_(0.9603179872256e13), SC_(-0.33670611871566835660019023634959012269973754882813e-11), SC_(0.7013450981963919041695196214483817396500069641397e-21), + SC_(0.1982984109938909458353618944e28), SC_(0.57559058523154999707763811983890536611676287215116e-28), SC_(0.18954326454529174714382811136e29), SC_(-0.71769535185590157312e20), SC_(-0.12181377246911709254263035815242321871232107633234e-40), + SC_(0.222246520174005267545980928e28), SC_(0.24442432318827852328354708908776139753005196553204e-21), SC_(0.1358339280940150480054651703124000152939184472259e-28), SC_(0.1929096832275390625e3), SC_(0.93043265128569252665328167060574294046977922061101e-14), + SC_(0.228460490382675067103346688e28), SC_(0.1059283606822132483824577235054573273384526110874e-22), SC_(0.7495925e5), SC_(0.18313684375e6), SC_(0.45341966440085175811927852865624259192364499711347e-18), + SC_(0.2295552972647520995079356416e28), SC_(0.8116024169921875e3), SC_(0.406449488413065216e18), SC_(0.1210972363736206571586395807697363987873694080033e-25), SC_(0.11680274510678021465134575907548276246526274420346e-21), + SC_(0.2314228013625886776106156032e28), SC_(0.14528588632178353334811760078082443214952945709229e-14), SC_(0.54849175282200488156594176e26), SC_(0.5798830216008354909718036651611328125e-7), SC_(0.54921077785694851775062771637993351556303331064265e-22), + SC_(0.3699745104553947847137951744e28), SC_(0.34977231725807742732787449097997501262533496350712e-30), SC_(0.120393285632e12), SC_(0.954876e8), SC_(0.22448886572410705870109454870839959584090293621426e-22), + SC_(0.3838393489343095451259240448e28), SC_(0.103355013339542251670339584e27), SC_(0.98872197265625e4), SC_(0.57959118635033995205500453873348476463434053584933e-17), SC_(0.12041009164150948897691954156849133755234146202352e-26), + SC_(0.5654821947040481368071995392e28), SC_(0.47785181184e14), SC_(0.40587309056e11), SC_(-0.37375441752374172210693359375e-3), SC_(0.48193946518009700351168874164523132159351681991985e-24), + SC_(0.6775909979186304065686470656e28), SC_(0.8062150656e10), SC_(0.348559752335036776448e21), SC_(-0.8760775059456393216e19), SC_(-0.10282120977675613763363596767906302856864535909313e-33), + SC_(0.7376334675354954747676196864e28), SC_(0.3832167254355459644063744e25), SC_(0.86986000872677090266227306614155168063007295131683e-15), SC_(-0.635832114613491743743541248e28), SC_(-0.24621535270065684155147722097385679585890775903462e-40), + SC_(0.9551179238333844741448269824e28), SC_(0.7608356306944e13), SC_(0.5558017730712890625e1), SC_(0.41698188855306519252274162436284849815711030154158e-27), SC_(0.15612097421897443717100059952264109969304027375674e-18), + SC_(0.10531197197128523245005307904e29), SC_(0.12791422998544384e17), SC_(0.660148875e6), SC_(0.33461133902897741824e20), SC_(0.40438261456319118306216960428142150932574137900723e-32), + SC_(0.12457122281020492087329554432e29), SC_(0.7671683806842035634176e22), SC_(0.232967583002618994214572012424468994140625e-7), SC_(-0.24723743603662803294991612279574155763839371502399e-16), SC_(0.22166650205242874655754051451333910848954470186131e-19), + SC_(0.15703756321543097476213374976e29), SC_(0.3366045475006103515625e1), SC_(0.15573768317699432373046875e0), SC_(0.6116611973854022065889826509770647605297401467399e-30), SC_(0.11358697102558723782406276684855724930886990175612e-11), + SC_(0.16696330462519916007687979008e29), SC_(0.1930155264e10), SC_(0.63629325734928786425753617162284769825930652586976e-20), SC_(0.12920223388671875e4), SC_(0.2308199605723093565210069675443489489234691184839e-19), + SC_(0.17764058704888363507915948032e29), SC_(0.79766535274496e14), SC_(0.39754495142903122994659328e26), SC_(-0.14620739417686359499606065152e29), SC_(-0.57422745573841589040276380059216580638301950767727e-41), + SC_(0.31748377778186208813596540928e29), SC_(0.1675580742552227722297344e25), SC_(0.42063803333440515664792681748951699777781240829747e-29), SC_(0.429656843192433391960064e24), SC_(0.23926759355712048744385470425532188141681573695193e-37), + SC_(0.3649235853244794839343562752e29), SC_(0.12279541379302346893022276017590817959179716467588e-21), SC_(0.40871462586513926278727773609006357347084303910378e-20), SC_(0.87854579712e12), SC_(0.67492676307713588597128960931053684956956100221764e-24), + SC_(0.36533776047685956616782348288e29), SC_(0.82729172633504849398988767461560200899839401245117e-13), SC_(0.8131970819162112e17), SC_(-0.1192539684780058450996875762939453125e-5), SC_(0.13274939233001620432487252088510733166654023704738e-22), + SC_(0.63201895715548519849695117312e29), SC_(0.659935944174255143387136e24), SC_(0.235792458057403564453125e0), SC_(-0.3216055136681984e16), SC_(-0.18080738259064818364416597919348501783180949800115e-37), + SC_(0.6372859541648241998931427328e29), SC_(0.242449971847236156463623046875e-2), SC_(0.27421585230570622547519032963236895739100873470306e-15), SC_(-0.303756275177001953125e2), SC_(-0.2116865223447144892600764830285901409868915835424e-14), + SC_(0.66201188727981103266043789312e29), SC_(0.733696256e9), SC_(0.350810660994547712e18), SC_(-0.2088726080984315558453090488910675048828125e-8), SC_(0.1518448361705534157919668106359692557429828526005e-25), + SC_(0.67397727780311165361354440704e29), SC_(0.2701057007003141150867456e25), SC_(0.32037437278282544783625240825131186284124851226807e-14), SC_(-0.14639644477145580259147550350462552160024642944336e-12), SC_(0.26795251743869315367874488984214665026594244506073e-20), + SC_(0.74469943825056746033385570304e29), SC_(0.25381451890023692523876122624e29), SC_(0.353061568e9), SC_(0.3667164349963059066794812679290771484375e-7), SC_(0.70123509979767730264405232269736730186653622643256e-31), + SC_(0.83503273667541398709050802176e29), SC_(0.64436475218886656e17), SC_(0.1095445250048e15), SC_(-0.27828965472666412863213985278623730405131117028594e-26), SC_(0.18517871294794141505416209832668190646081405513643e-27), + SC_(0.154135841378084202520367857664e30), SC_(0.11531852972032e14), SC_(0.28385876039913134187331286456979634325037409325887e-20), SC_(0.64800658718743622607072501400418684802673396916362e-20), SC_(0.31602768754325763081308012038930598073631539942634e-10), + SC_(0.205367992548434895604069433344e30), SC_(0.18794387499923534284127922718010683666989280027337e-18), SC_(0.644523545719734272e18), SC_(0.21339260514789921879362708770529188928577468686854e-21), SC_(0.77709407338464422363910627214199294770600429104781e-13), + SC_(0.288644753185258968910800093184e30), SC_(0.3712882e7), SC_(0.67304340158588786789888913154097233038086756096163e-21), SC_(0.228604896e9), SC_(0.6770315462223105083152407343178427212980572931536e-22), + SC_(0.32259278802051668555153276928e30), SC_(0.6638677978515625e3), SC_(0.11419584692467545095073688798947841860353946685791e-13), SC_(-0.914323027245700359344482421875e-4), SC_(-0.77167253067005495411786081658186819275011987939055e-17), + SC_(0.593089902380358100434877939712e30), SC_(0.6506956228718475954142519412926048971712589263916e-14), SC_(0.61562469482421875e2), SC_(0.2321270964224e13), SC_(0.21597485998566959444034291971333852159947917872266e-25), + SC_(0.653810657301073942950006751232e30), SC_(0.3684862263296e13), SC_(0.1658748045099008e17), SC_(-0.2043063195140096e16), SC_(-0.17992368419735800205714333900182443278381089486339e-30), + SC_(0.90054999923278052824918786048e30), SC_(0.5752800417419362304e19), SC_(0.23091611800228823082094034944e29), SC_(0.437946654856204986572265625e-1), SC_(0.20691242362670718543784273355620160692479713280658e-36), + SC_(0.1138966491359350198995104301056e31), SC_(0.16628866613248e14), SC_(0.83722254681922700089433337836521478725337885862245e-21), SC_(0.351686295552e12), SC_(0.16740484414913831836071532979123766364786418157375e-26), + SC_(0.1155650423248669340749283721216e31), SC_(0.55448366981994133391117331177699867339470074512064e-18), SC_(0.120595209390657634304e22), SC_(-0.31079530179668142456832e23), SC_(-0.20503537182647658707141982907149513184896420806907e-36) + }; +#undef SC_ + + diff --git a/test/erf_data.ipp b/test/erf_data.ipp new file mode 100644 index 000000000..d13707ad5 --- /dev/null +++ b/test/erf_data.ipp @@ -0,0 +1,510 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 500> erf_data = { { + { SC_(-7.954905033111572265625), SC_(-0.9999999999999999999999999999768236114552), SC_(1.999999999999999999999999999976823611455) }, + { SC_(-7.925852298736572265625), SC_(-0.9999999999999999999999999999631035087875), SC_(1.999999999999999999999999999963103508787) }, + { SC_(-7.923464298248291015625), SC_(-0.9999999999999999999999999999616689085769), SC_(1.999999999999999999999999999961668908577) }, + { SC_(-7.870497226715087890625), SC_(-0.999999999999999999999999999910929780403), SC_(1.999999999999999999999999999910929780403) }, + { SC_(-7.809566974639892578125), SC_(-0.9999999999999999999999999997666672740312), SC_(1.999999999999999999999999999766667274031) }, + { SC_(-7.78337383270263671875), SC_(-0.9999999999999999999999999996477997000614), SC_(1.999999999999999999999999999647799700061) }, + { SC_(-7.75354480743408203125), SC_(-0.9999999999999999999999999994380404842296), SC_(1.99999999999999999999999999943804048423) }, + { SC_(-7.735670566558837890625), SC_(-0.9999999999999999999999999992571019874276), SC_(1.999999999999999999999999999257101987428) }, + { SC_(-7.715617656707763671875), SC_(-0.9999999999999999999999999989846832415537), SC_(1.999999999999999999999999998984683241554) }, + { SC_(-7.7047863006591796875), SC_(-0.999999999999999999999999998798456908148), SC_(1.999999999999999999999999998798456908148) }, + { SC_(-7.53247547149658203125), SC_(-0.9999999999999999999999999830308685738632), SC_(1.999999999999999999999999983030868573863) }, + { SC_(-7.490674495697021484375), SC_(-0.9999999999999999999999999680283814121658), SC_(1.999999999999999999999999968028381412166) }, + { SC_(-7.4677028656005859375), SC_(-0.9999999999999999999999999547824309252063), SC_(1.999999999999999999999999954782430925206) }, + { SC_(-7.45092296600341796875), SC_(-0.9999999999999999999999999417916071317633), SC_(1.999999999999999999999999941791607131763) }, + { SC_(-7.448862552642822265625), SC_(-0.999999999999999999999999939960596846754), SC_(1.999999999999999999999999939960596846754) }, + { SC_(-7.428613185882568359375), SC_(-0.9999999999999999999999999186357837637381), SC_(1.999999999999999999999999918635783763738) }, + { SC_(-7.41693973541259765625), SC_(-0.9999999999999999999999999030902896226869), SC_(1.999999999999999999999999903090289622687) }, + { SC_(-7.352462291717529296875), SC_(-0.9999999999999999999999997466806221320354), SC_(1.999999999999999999999999746680622132035) }, + { SC_(-7.32713413238525390625), SC_(-0.9999999999999999999999996313499781458314), SC_(1.999999999999999999999999631349978145831) }, + { SC_(-7.311619281768798828125), SC_(-0.9999999999999999999999995363881484604713), SC_(1.999999999999999999999999536388148460471) }, + { SC_(-7.279047489166259765625), SC_(-0.9999999999999999999999992510468758087201), SC_(1.99999999999999999999999925104687580872) }, + { SC_(-7.261257648468017578125), SC_(-0.999999999999999999999999027617901396665), SC_(1.999999999999999999999999027617901396665) }, + { SC_(-7.232891559600830078125), SC_(-0.9999999999999999999999985274747006541921), SC_(1.999999999999999999999998527474700654192) }, + { SC_(-7.20552921295166015625), SC_(-0.9999999999999999999999978059072279635353), SC_(1.999999999999999999999997805907227963535) }, + { SC_(-7.18053722381591796875), SC_(-0.9999999999999999999999968458614521146074), SC_(1.999999999999999999999996845861452114607) }, + { SC_(-7.14955902099609375), SC_(-0.9999999999999999999999950624010083082766), SC_(1.999999999999999999999995062401008308277) }, + { SC_(-7.13679790496826171875), SC_(-0.9999999999999999999999940645544114571544), SC_(1.999999999999999999999994064554411457154) }, + { SC_(-7.043527126312255859375), SC_(-0.9999999999999999999999774337000610083234), SC_(1.999999999999999999999977433700061008323) }, + { SC_(-6.9184741973876953125), SC_(-0.9999999999999999999998683679500951423272), SC_(1.999999999999999999999868367950095142327) }, + { SC_(-6.7863311767578125), SC_(-0.9999999999999999999991795120414840889856), SC_(1.999999999999999999999179512041484088986) }, + { SC_(-6.784533023834228515625), SC_(-0.9999999999999999999991590255661336519112), SC_(1.999999999999999999999159025566133651911) }, + { SC_(-6.75908756256103515625), SC_(-0.9999999999999999999988086234364717344992), SC_(1.999999999999999999998808623436471734499) }, + { SC_(-6.7491912841796875), SC_(-0.9999999999999999999986362669470340916908), SC_(1.999999999999999999998636266947034091691) }, + { SC_(-6.701987743377685546875), SC_(-0.999999999999999999997409009041632256952), SC_(1.999999999999999999997409009041632256952) }, + { SC_(-6.658857822418212890625), SC_(-0.9999999999999999999953604766205454848685), SC_(1.999999999999999999995360476620545484869) }, + { SC_(-6.649026393890380859375), SC_(-0.9999999999999999999947043111854298902328), SC_(1.999999999999999999994704311185429890233) }, + { SC_(-6.63174724578857421875), SC_(-0.9999999999999999999933213242713558320894), SC_(1.999999999999999999993321324271355832089) }, + { SC_(-6.562829494476318359375), SC_(-0.9999999999999999999832486398825313868824), SC_(1.999999999999999999983248639882531386882) }, + { SC_(-6.474317073822021484375), SC_(-0.9999999999999999999461767620323245787117), SC_(1.999999999999999999946176762032324578712) }, + { SC_(-6.456727504730224609375), SC_(-0.9999999999999999999322505846330688168028), SC_(1.999999999999999999932250584633068816803) }, + { SC_(-6.44589138031005859375), SC_(-0.9999999999999999999219560784452381988458), SC_(1.999999999999999999921956078445238198846) }, + { SC_(-6.439353466033935546875), SC_(-0.9999999999999999999150123383981949772306), SC_(1.999999999999999999915012338398194977231) }, + { SC_(-6.388184070587158203125), SC_(-0.9999999999999999998348790206445813875893), SC_(1.999999999999999999834879020644581387589) }, + { SC_(-6.293555736541748046875), SC_(-0.9999999999999999994437019971919548391819), SC_(1.999999999999999999443701997191954839182) }, + { SC_(-6.2710094451904296875), SC_(-0.9999999999999999992589325173780715980195), SC_(1.99999999999999999925893251737807159802) }, + { SC_(-6.242211818695068359375), SC_(-0.9999999999999999989326493643877411691996), SC_(1.9999999999999999989326493643877411692) }, + { SC_(-6.22209262847900390625), SC_(-0.999999999999999998624109280849850203527), SC_(1.999999999999999998624109280849850203527) }, + { SC_(-6.220756053924560546875), SC_(-0.9999999999999999986007425210281758251292), SC_(1.999999999999999998600742521028175825129) }, + { SC_(-6.200567722320556640625), SC_(-0.9999999999999999981962301352174253788249), SC_(1.999999999999999998196230135217425378825) }, + { SC_(-6.188919544219970703125), SC_(-0.9999999999999999979123729253091532478511), SC_(1.999999999999999997912372925309153247851) }, + { SC_(-6.121317386627197265625), SC_(-0.9999999999999999951502004864042604960246), SC_(1.999999999999999995150200486404260496025) }, + { SC_(-6.0960369110107421875), SC_(-0.999999999999999993368492031514234286194), SC_(1.999999999999999993368492031514234286194) }, + { SC_(-6.08724498748779296875), SC_(-0.9999999999999999926083315666932664549236), SC_(1.999999999999999992608331566693266454924) }, + { SC_(-6.026896953582763671875), SC_(-0.9999999999999999844955556006137776564529), SC_(1.999999999999999984495555600613777656453) }, + { SC_(-5.9970760345458984375), SC_(-0.9999999999999999777013911828554459912853), SC_(1.999999999999999977701391182855445991285) }, + { SC_(-5.98565387725830078125), SC_(-0.9999999999999999743831687415390670278399), SC_(1.99999999999999997438316874153906702784) }, + { SC_(-5.96821117401123046875), SC_(-0.999999999999999968354398455085434720569), SC_(1.999999999999999968354398455085434720569) }, + { SC_(-5.92245578765869140625), SC_(-0.9999999999999999450648430800723663224774), SC_(1.999999999999999945064843080072366322477) }, + { SC_(-5.921500682830810546875), SC_(-0.9999999999999999444311537798288144041217), SC_(1.999999999999999944431153779828814404122) }, + { SC_(-5.888427257537841796875), SC_(-0.9999999999999999174281958873362911444154), SC_(1.999999999999999917428195887336291144415) }, + { SC_(-5.87206363677978515625), SC_(-0.9999999999999998996343433163177337705717), SC_(1.999999999999999899634343316317733770572) }, + { SC_(-5.860218048095703125), SC_(-0.9999999999999998844434106367807360220097), SC_(1.99999999999999988444341063678073602201) }, + { SC_(-5.83236789703369140625), SC_(-0.9999999999999998392204407202278816953224), SC_(1.999999999999999839220440720227881695322) }, + { SC_(-5.822903156280517578125), SC_(-0.9999999999999998201851297606348078114632), SC_(1.999999999999999820185129760634807811463) }, + { SC_(-5.7919788360595703125), SC_(-0.9999999999999997411398900200191738483065), SC_(1.999999999999999741139890020019173848306) }, + { SC_(-5.782009124755859375), SC_(-0.9999999999999997089916610994263590057672), SC_(1.999999999999999708991661099426359005767) }, + { SC_(-5.757698535919189453125), SC_(-0.9999999999999996131703510337485986984616), SC_(1.999999999999999613170351033748598698462) }, + { SC_(-5.7298183441162109375), SC_(-0.9999999999999994646206751994613491480939), SC_(1.999999999999999464620675199461349148094) }, + { SC_(-5.6807231903076171875), SC_(-0.9999999999999990546672380240389993944094), SC_(1.999999999999999054667238024038999394409) }, + { SC_(-5.67137622833251953125), SC_(-0.9999999999999989471628690116228142127541), SC_(1.999999999999998947162869011622814212754) }, + { SC_(-5.63473606109619140625), SC_(-0.9999999999999983967395492779530149899861), SC_(1.999999999999998396739549277953014989986) }, + { SC_(-5.614176273345947265625), SC_(-0.9999999999999979723800510435190721967745), SC_(1.999999999999997972380051043519072196774) }, + { SC_(-5.6112957000732421875), SC_(-0.9999999999999979047003987118507997439545), SC_(1.999999999999997904700398711850799743955) }, + { SC_(-5.56195163726806640625), SC_(-0.9999999999999963321711826091909555528649), SC_(1.999999999999996332171182609190955552865) }, + { SC_(-5.52898502349853515625), SC_(-0.999999999999994682538283828212635195642), SC_(1.999999999999994682538283828212635195642) }, + { SC_(-5.47819042205810546875), SC_(-0.9999999999999906156035801749079852647386), SC_(1.999999999999990615603580174907985264739) }, + { SC_(-5.4710788726806640625), SC_(-0.9999999999999898428944822493616106985002), SC_(1.9999999999999898428944822493616106985) }, + { SC_(-5.405083179473876953125), SC_(-0.9999999999999789329565303176610969074478), SC_(1.999999999999978932956530317661096907448) }, + { SC_(-5.402743816375732421875), SC_(-0.9999999999999783844591899263947698611185), SC_(1.999999999999978384459189926394769861119) }, + { SC_(-5.398212432861328125), SC_(-0.9999999999999772817558127269992185563875), SC_(1.999999999999977281755812726999218556388) }, + { SC_(-5.39404582977294921875), SC_(-0.9999999999999762190932060075070452678252), SC_(1.999999999999976219093206007507045267825) }, + { SC_(-5.349620342254638671875), SC_(-0.9999999999999613641252395001102021837028), SC_(1.999999999999961364125239500110202183703) }, + { SC_(-5.3191070556640625), SC_(-0.9999999999999462010476635137780577801192), SC_(1.999999999999946201047663513778057780119) }, + { SC_(-5.2961597442626953125), SC_(-0.9999999999999310743837318684932169157806), SC_(1.999999999999931074383731868493216915781) }, + { SC_(-5.2686710357666015625), SC_(-0.9999999999999073829182184635550018139178), SC_(1.999999999999907382918218463555001813918) }, + { SC_(-5.261013031005859375), SC_(-0.999999999999899463963517023463646064969), SC_(1.999999999999899463963517023463646064969) }, + { SC_(-5.218157291412353515625), SC_(-0.999999999999841220863178602997391812622), SC_(1.999999999999841220863178602997391812622) }, + { SC_(-5.09483242034912109375), SC_(-0.9999999999994203324744342031290577923874), SC_(1.999999999999420332474434203129057792387) }, + { SC_(-5.09044742584228515625), SC_(-0.9999999999993933525823679657367786914755), SC_(1.999999999999393352582367965736778691476) }, + { SC_(-5.0638217926025390625), SC_(-0.9999999999992009929816947679454761069971), SC_(1.999999999999200992981694767945476106997) }, + { SC_(-5.05747509002685546875), SC_(-0.9999999999991469518921467092111635858909), SC_(1.999999999999146951892146709211163585891) }, + { SC_(-5.04293918609619140625), SC_(-0.9999999999990093020187848982236516240641), SC_(1.999999999999009302018784898223651624064) }, + { SC_(-5.0100383758544921875), SC_(-0.9999999999986122073654265981749793751861), SC_(1.999999999998612207365426598174979375186) }, + { SC_(-4.98588848114013671875), SC_(-0.9999999999982250531272305424718207921526), SC_(1.999999999998225053127230542471820792153) }, + { SC_(-4.97671985626220703125), SC_(-0.999999999998051837006412113097549508585), SC_(1.999999999998051837006412113097549508585) }, + { SC_(-4.88807392120361328125), SC_(-0.9999999999952475475430397811200299233621), SC_(1.999999999995247547543039781120029923362) }, + { SC_(-4.883771419525146484375), SC_(-0.999999999995039278283384091602446410145), SC_(1.999999999995039278283384091602446410145) }, + { SC_(-4.85447597503662109375), SC_(-0.9999999999933632419317336295299664149692), SC_(1.999999999993363241931733629529966414969) }, + { SC_(-4.8071804046630859375), SC_(-0.9999999999894197712585954179441600183832), SC_(1.999999999989419771258595417944160018383) }, + { SC_(-4.8020343780517578125), SC_(-0.999999999988871990172530478547610656837), SC_(1.999999999988871990172530478547610656837) }, + { SC_(-4.67612361907958984375), SC_(-0.9999999999623486826561914023506448369931), SC_(1.999999999962348682656191402350644836993) }, + { SC_(-4.67091083526611328125), SC_(-0.9999999999604264343616001426261420203042), SC_(1.999999999960426434361600142626142020304) }, + { SC_(-4.63665485382080078125), SC_(-0.9999999999451799554409023277165162445309), SC_(1.999999999945179955440902327716516244531) }, + { SC_(-4.63516998291015625), SC_(-0.9999999999444029440920085430347846425569), SC_(1.999999999944402944092008543034784642557) }, + { SC_(-4.609210968017578125), SC_(-0.9999999999289428162110384732949528732821), SC_(1.999999999928942816211038473294952873282) }, + { SC_(-4.579636096954345703125), SC_(-0.9999999999061772810501309067972710348531), SC_(1.999999999906177281050130906797271034853) }, + { SC_(-4.5241947174072265625), SC_(-0.9999999998427575929141653776733036798231), SC_(1.999999999842757592914165377673303679823) }, + { SC_(-4.4634552001953125), SC_(-0.9999999997250438347478646951934940057007), SC_(1.999999999725043834747864695193494005701) }, + { SC_(-4.45205211639404296875), SC_(-0.9999999996948757672104213971222453301401), SC_(1.99999999969487576721042139712224533014) }, + { SC_(-4.42528057098388671875), SC_(-0.9999999996107829436098873733936274863483), SC_(1.999999999610782943609887373393627486348) }, + { SC_(-4.41900920867919921875), SC_(-0.9999999995880275737192502467322057148997), SC_(1.9999999995880275737192502467322057149) }, + { SC_(-4.385251522064208984375), SC_(-0.9999999994413719520612921019983336162185), SC_(1.999999999441371952061292101998333616218) }, + { SC_(-4.35737133026123046875), SC_(-0.9999999992828314119867337542458504771416), SC_(1.999999999282831411986733754245850477142) }, + { SC_(-4.336368560791015625), SC_(-0.9999999991351915352325599843092928507457), SC_(1.999999999135191535232559984309292850746) }, + { SC_(-4.3175029754638671875), SC_(-0.9999999989775860530323911767706859733538), SC_(1.999999998977586053032391176770685973354) }, + { SC_(-4.3121891021728515625), SC_(-0.9999999989283533546777667686892314376364), SC_(1.999999998928353354677766768689231437636) }, + { SC_(-4.24352169036865234375), SC_(-0.9999999980419084658739942819306906184851), SC_(1.999999998041908465873994281930690618485) }, + { SC_(-4.2034626007080078125), SC_(-0.9999999972285679690220595850552637350437), SC_(1.999999997228567969022059585055263735044) }, + { SC_(-4.167960643768310546875), SC_(-0.9999999962392394571627954662587140061652), SC_(1.999999996239239457162795466258714006165) }, + { SC_(-4.16134166717529296875), SC_(-0.9999999960200815333961445529473170709169), SC_(1.999999996020081533396144552947317070917) }, + { SC_(-4.16075992584228515625), SC_(-0.9999999960002360604729678479207669714279), SC_(1.999999996000236060472967847920766971428) }, + { SC_(-4.1587848663330078125), SC_(-0.9999999959321378359433584056353681610608), SC_(1.999999995932137835943358405635368161061) }, + { SC_(-4.13293933868408203125), SC_(-0.9999999949300206910645246208514668562552), SC_(1.999999994930020691064524620851466856255) }, + { SC_(-4.10360050201416015625), SC_(-0.9999999935003875691498030735774774570481), SC_(1.999999993500387569149803073577477457048) }, + { SC_(-4.093787670135498046875), SC_(-0.9999999929399558954302260075393445424033), SC_(1.999999992939955895430226007539344542403) }, + { SC_(-4.03443813323974609375), SC_(-0.9999999884036843046875049228478172494175), SC_(1.999999988403684304687504922847817249418) }, + { SC_(-3.98265838623046875), SC_(-0.9999999822208421118305103285259015091646), SC_(1.999999982220842111830510328525901509165) }, + { SC_(-3.95270442962646484375), SC_(-0.999999977288881596788417317605289657808), SC_(1.999999977288881596788417317605289657808) }, + { SC_(-3.93148517608642578125), SC_(-0.9999999730162981717884382202253382435415), SC_(1.999999973016298171788438220225338243541) }, + { SC_(-3.9184780120849609375), SC_(-0.9999999700219312753222765854504223837405), SC_(1.999999970021931275322276585450422383741) }, + { SC_(-3.879868030548095703125), SC_(-0.9999999591094922703532983235991568008465), SC_(1.999999959109492270353298323599156800846) }, + { SC_(-3.87096500396728515625), SC_(-0.9999999560932170720769359018836285296472), SC_(1.999999956093217072076935901883628529647) }, + { SC_(-3.8672657012939453125), SC_(-0.9999999547774543398438306972996188616961), SC_(1.999999954777454339843830697299618861696) }, + { SC_(-3.8420734405517578125), SC_(-0.9999999447445478718542012659151234910068), SC_(1.999999944744547871854201265915123491007) }, + { SC_(-3.80461215972900390625), SC_(-0.9999999257348372704254553693981655561718), SC_(1.999999925734837270425455369398165556172) }, + { SC_(-3.80028438568115234375), SC_(-0.9999999231677373273547880220190103959364), SC_(1.999999923167737327354788022019010395936) }, + { SC_(-3.7924594879150390625), SC_(-0.9999999183064389713690424963266578644364), SC_(1.999999918306438971369042496326657864436) }, + { SC_(-3.779153347015380859375), SC_(-0.9999999093479967587842599992485780175831), SC_(1.999999909347996758784259999248578017583) }, + { SC_(-3.745269298553466796875), SC_(-0.9999998820281274980831886027456911311136), SC_(1.999999882028127498083188602745691131114) }, + { SC_(-3.635951519012451171875), SC_(-0.9999997281881766345956227352142649973655), SC_(1.999999728188176634595622735214264997366) }, + { SC_(-3.583598613739013671875), SC_(-0.9999995979271880120576416299198266820133), SC_(1.999999597927188012057641629919826682013) }, + { SC_(-3.569232463836669921875), SC_(-0.9999995527387093906657265121528897426977), SC_(1.999999552738709390665726512152889742698) }, + { SC_(-3.54402828216552734375), SC_(-0.9999994613639729253001570644107494201161), SC_(1.999999461363972925300157064410749420116) }, + { SC_(-3.493962764739990234375), SC_(-0.9999992236058222995205263652341878797772), SC_(1.999999223605822299520526365234187879777) }, + { SC_(-3.47722721099853515625), SC_(-0.9999991236228879726907047497841004833717), SC_(1.999999123622887972690704749784100483372) }, + { SC_(-3.42657566070556640625), SC_(-0.9999987396721107155880129044796731448843), SC_(1.999998739672110715588012904479673144884) }, + { SC_(-3.395120143890380859375), SC_(-0.9999984245945048910106563425119028396989), SC_(1.999998424594504891010656342511902839699) }, + { SC_(-3.2588672637939453125), SC_(-0.9999959487230642521321857857111066240831), SC_(1.999995948723064252132185785711106624083) }, + { SC_(-3.25318622589111328125), SC_(-0.9999957892666030355025210909109288232829), SC_(1.999995789266603035502521090910928823283) }, + { SC_(-3.24752902984619140625), SC_(-0.9999956245131483542950695952847663629895), SC_(1.999995624513148354295069595284766362989) }, + { SC_(-3.202692508697509765625), SC_(-0.999994081810816371407042912866658069023), SC_(1.999994081810816371407042912866658069023) }, + { SC_(-3.18005847930908203125), SC_(-0.9999931172272250183599071058385709997756), SC_(1.999993117227225018359907105838570999776) }, + { SC_(-3.1707630157470703125), SC_(-0.9999926790059947731109719912653300431319), SC_(1.999992679005994773110971991265330043132) }, + { SC_(-3.169390201568603515625), SC_(-0.9999926120675897748726975211646249757192), SC_(1.999992612067589774872697521164624975719) }, + { SC_(-3.14217662811279296875), SC_(-0.9999911578738950876912019671208070065199), SC_(1.99999115787389508769120196712080700652) }, + { SC_(-3.098408222198486328125), SC_(-0.9999882303073587594668534541884135423388), SC_(1.999988230307358759466853454188413542339) }, + { SC_(-3.06932735443115234375), SC_(-0.999985796037084204485104304979662919637), SC_(1.999985796037084204485104304979662919637) }, + { SC_(-3.022363185882568359375), SC_(-0.9999808232882432626861296621474557768078), SC_(1.999980823288243262686129662147455776808) }, + { SC_(-3.0205593109130859375), SC_(-0.99998060254361354516950352566536112825), SC_(1.99998060254361354516950352566536112825) }, + { SC_(-2.9998722076416015625), SC_(-0.9999778917007014674907019090992903927905), SC_(1.99997789170070146749070190909929039279) }, + { SC_(-2.93519306182861328125), SC_(-0.9999668959531720126596587741439225107667), SC_(1.999966895953172012659658774143922510767) }, + { SC_(-2.926408290863037109375), SC_(-0.9999650517107016922239378838021163842873), SC_(1.999965051710701692223937883802116384287) }, + { SC_(-2.899547100067138671875), SC_(-0.999958788198949955666474096263902253671), SC_(1.999958788198949955666474096263902253671) }, + { SC_(-2.839828014373779296875), SC_(-0.9999408366877163447694128978591340253067), SC_(1.999940836687716344769412897859134025307) }, + { SC_(-2.800583362579345703125), SC_(-0.999925245516783962943949700531260241058), SC_(1.999925245516783962943949700531260241058) }, + { SC_(-2.680827617645263671875), SC_(-0.9998501167313102825068480156096308901785), SC_(1.999850116731310282506848015609630890178) }, + { SC_(-2.606037616729736328125), SC_(-0.9997717403084130424047446475974562075669), SC_(1.999771740308413042404744647597456207567) }, + { SC_(-2.596489429473876953125), SC_(-0.9997593314310112494727877345037418013218), SC_(1.999759331431011249472787734503741801322) }, + { SC_(-2.556484699249267578125), SC_(-0.9997001335302201489942673149686527944858), SC_(1.999700133530220148994267314968652794486) }, + { SC_(-2.55382823944091796875), SC_(-0.9996957549944839552321892922320479894269), SC_(1.999695754994483955232189292232047989427) }, + { SC_(-2.4985675811767578125), SC_(-0.9995899165690053281055967168476241365437), SC_(1.999589916569005328105596716847624136544) }, + { SC_(-2.497124195098876953125), SC_(-0.9995867384254941652801786367398089660165), SC_(1.999586738425494165280178636739808966017) }, + { SC_(-2.490753173828125), SC_(-0.9995724334726506448073869548176702294685), SC_(1.999572433472650644807386954817670229469) }, + { SC_(-2.460265636444091796875), SC_(-0.9994973515109755881934536091311894641618), SC_(1.999497351510975588193453609131189464162) }, + { SC_(-2.40025997161865234375), SC_(-0.9993124098945743590409442455200430144501), SC_(1.99931240989457435904094424552004301445) }, + { SC_(-2.388366222381591796875), SC_(-0.9992689456487626816982924092483781182671), SC_(1.999268945648762681698292409248378118267) }, + { SC_(-2.384761810302734375), SC_(-0.9992552781640235711505276307965871326558), SC_(1.999255278164023571150527630796587132656) }, + { SC_(-2.373447895050048828125), SC_(-0.9992108203337266317630339931581723787703), SC_(1.99921082033372663176303399315817237877) }, + { SC_(-2.35580158233642578125), SC_(-0.9991365376081490204083636912804528578856), SC_(1.999136537608149020408363691280452857886) }, + { SC_(-2.349462985992431640625), SC_(-0.9991083086054509601980729014412256941765), SC_(1.999108308605450960198072901441225694177) }, + { SC_(-2.325789928436279296875), SC_(-0.9989951442451653569033517704201324436285), SC_(1.998995144245165356903351770420132443629) }, + { SC_(-2.298477649688720703125), SC_(-0.9988481323367447342223184498893246720825), SC_(1.998848132336744734222318449889324672082) }, + { SC_(-2.2262287139892578125), SC_(-0.9983581224514242039282878472715945919025), SC_(1.998358122451424203928287847271594591902) }, + { SC_(-2.219295978546142578125), SC_(-0.998302189420417444109741372233572205265), SC_(1.998302189420417444109741372233572205265) }, + { SC_(-2.189016819000244140625), SC_(-0.9980367577158553307156976632350258375259), SC_(1.998036757715855330715697663235025837526) }, + { SC_(-2.104246616363525390625), SC_(-0.9970782617526262805996280944999396165258), SC_(1.997078261752626280599628094499939616526) }, + { SC_(-2.09205150604248046875), SC_(-0.996909676793369814528976371166247129793), SC_(1.996909676793369814528976371166247129793) }, + { SC_(-1.943993091583251953125), SC_(-0.9940262977790097894466206756466888367063), SC_(1.994026297779009789446620675646688836706) }, + { SC_(-1.942249774932861328125), SC_(-0.9939812101597516949958261235233631934366), SC_(1.993981210159751694995826123523363193437) }, + { SC_(-1.92929840087890625), SC_(-0.9936365327754943109828903386026580883517), SC_(1.993636532775494310982890338602658088352) }, + { SC_(-1.9128665924072265625), SC_(-0.9931737109637705201269656939986887652236), SC_(1.993173710963770520126965693998688765224) }, + { SC_(-1.895064830780029296875), SC_(-0.9926383642753156425388548860773597376898), SC_(1.99263836427531564253885488607735973769) }, + { SC_(-1.882672786712646484375), SC_(-0.9922437750397196518941448785374711511261), SC_(1.992243775039719651894144878537471151126) }, + { SC_(-1.828631877899169921875), SC_(-0.9902924477378445174333029970634342529452), SC_(1.990292447737844517433302997063434252945) }, + { SC_(-1.80326557159423828125), SC_(-0.9892339674123972616044498747407170334529), SC_(1.989233967412397261604449874740717033453) }, + { SC_(-1.782883167266845703125), SC_(-0.9883103648996334893102564452420811120219), SC_(1.988310364899633489310256445242081112022) }, + { SC_(-1.782157421112060546875), SC_(-0.9882762203088354892421983954567744612798), SC_(1.98827622030883548924219839545677446128) }, + { SC_(-1.764178752899169921875), SC_(-0.9874016428696177596270555371821625326888), SC_(1.987401642869617759627055537182162532689) }, + { SC_(-1.724367618560791015625), SC_(-0.9852567034182150765341946638967494699071), SC_(1.985256703418215076534194663896749469907) }, + { SC_(-1.72287273406982421875), SC_(-0.9851702400474429438625280403202433838526), SC_(1.985170240047442943862528040320243383853) }, + { SC_(-1.7025623321533203125), SC_(-0.9839504468402545890671810248015208820884), SC_(1.983950446840254589067181024801520882088) }, + { SC_(-1.681468486785888671875), SC_(-0.9825910751286767851758755186900841221579), SC_(1.982591075128676785175875518690084122158) }, + { SC_(-1.620183467864990234375), SC_(-0.9780530894885187264467073421784139736619), SC_(1.978053089488518726446707342178413973662) }, + { SC_(-1.60347747802734375), SC_(-0.9766500377526993846072575680069692660948), SC_(1.976650037752699384607257568006969266095) }, + { SC_(-1.571071624755859375), SC_(-0.9737052575465025934260968149501583467125), SC_(1.973705257546502593426096814950158346713) }, + { SC_(-1.53740596771240234375), SC_(-0.9703114107420642954692014594922082792993), SC_(1.970311410742064295469201459492208279299) }, + { SC_(-1.532663822174072265625), SC_(-0.9698043138855053203894778295822038830362), SC_(1.969804313885505320389477829582203883036) }, + { SC_(-1.520298004150390625), SC_(-0.9684468462170278589593123134293666728451), SC_(1.968446846217027858959312313429366672845) }, + { SC_(-1.46048259735107421875), SC_(-0.9611180737284418513301177062365441297047), SC_(1.961118073728441851330117706236544129705) }, + { SC_(-1.46030139923095703125), SC_(-0.9610938428333207830423176962413277320147), SC_(1.961093842833320783042317696241327732015) }, + { SC_(-1.397335529327392578125), SC_(-0.95186004156783627938149047892729029742), SC_(1.95186004156783627938149047892729029742) }, + { SC_(-1.323727130889892578125), SC_(-0.9387979426539853054753709161513664166231), SC_(1.938797942653985305475370916151366416623) }, + { SC_(-1.276960849761962890625), SC_(-0.9290653127836001839333487555304113443469), SC_(1.929065312783600183933348755530411344347) }, + { SC_(-1.251819610595703125), SC_(-0.9233295267095685592936382247773245095211), SC_(1.923329526709568559293638224777324509521) }, + { SC_(-1.2465972900390625), SC_(-0.922091885695169724540643322054908203716), SC_(1.922091885695169724540643322054908203716) }, + { SC_(-1.229358196258544921875), SC_(-0.9178904588743834920391721278905832368302), SC_(1.91789045887438349203917212789058323683) }, + { SC_(-1.213331699371337890625), SC_(-0.9138215103657655632884642680979616998362), SC_(1.913821510365765563288464268097961699836) }, + { SC_(-1.116681575775146484375), SC_(-0.8857158242630258840771197321511943815897), SC_(1.88571582426302588407711973215119438159) }, + { SC_(-1.09737873077392578125), SC_(-0.8793205199265164668934947879280656428528), SC_(1.879320519926516466893494787928065642853) }, + { SC_(-1.03606891632080078125), SC_(-0.8571398352791599842463927101183584004108), SC_(1.857139835279159984246392710118358400411) }, + { SC_(-1.02882099151611328125), SC_(-0.8543231526950909266263537903698694334291), SC_(1.854323152695090926626353790369869433429) }, + { SC_(-1.026262760162353515625), SC_(-0.8533188869429530167338078137781125122721), SC_(1.853318886942953016733807813778112512272) }, + { SC_(-1.022119045257568359375), SC_(-0.8516809958278677712657998641436434438829), SC_(1.851680995827867771265799864143643443883) }, + { SC_(-0.98133087158203125), SC_(-0.8348055259299460511418008829670873610918), SC_(1.834805525929946051141800882967087361092) }, + { SC_(-0.98009014129638671875), SC_(-0.8342704307251498046946024215096246227333), SC_(1.834270430725149804694602421509624622733) }, + { SC_(-0.978080272674560546875), SC_(-0.8334008602869646802889203803617335510339), SC_(1.833400860286964680288920380361733551034) }, + { SC_(-0.940424442291259765625), SC_(-0.8164688788909394484793384087716057083799), SC_(1.81646887889093944847933840877160570838) }, + { SC_(-0.91714763641357421875), SC_(-0.8053834793732810256405554109602821691384), SC_(1.805383479373281025640555410960282169138) }, + { SC_(-0.8706207275390625), SC_(-0.781768246143243039204234681706396017802), SC_(1.781768246143243039204234681706396017802) }, + { SC_(-0.851459980010986328125), SC_(-0.7714669440617130962820390740100194505811), SC_(1.771466944061713096282039074010019450581) }, + { SC_(-0.838649749755859375), SC_(-0.7643894884988580737761809305277678222351), SC_(1.764389488498858073776180930527767822235) }, + { SC_(-0.807102680206298828125), SC_(-0.7463029660131220821356233145746604568211), SC_(1.746302966013122082135623314574660456821) }, + { SC_(-0.791334629058837890625), SC_(-0.736909415458981852160328895368373188263), SC_(1.736909415458981852160328895368373188263) }, + { SC_(-0.785220623016357421875), SC_(-0.733203302564899727070457054931447622963), SC_(1.733203302564899727070457054931447622963) }, + { SC_(-0.70347499847412109375), SC_(-0.6801975294548325529556721796784430699978), SC_(1.680197529454832552955672179678443069998) }, + { SC_(-0.67217350006103515625), SC_(-0.6581909469611049063385748815906001209893), SC_(1.658190946961104906338574881590600120989) }, + { SC_(-0.664049625396728515625), SC_(-0.6523246956990475458808567744402919677512), SC_(1.652324695699047545880856774440291967751) }, + { SC_(-0.6584186553955078125), SC_(-0.6482212253745081770626529427408934017486), SC_(1.648221225374508177062652942740893401749) }, + { SC_(-0.600412845611572265625), SC_(-0.6041810203314129078699785592786899867966), SC_(1.604181020331412907869978559278689986797) }, + { SC_(-0.489749908447265625), SC_(-0.511446271301716371110680826950617647501), SC_(1.511446271301716371110680826950617647501) }, + { SC_(-0.465226650238037109375), SC_(-0.4894167837515200466665783301747412934405), SC_(1.489416783751520046666578330174741293441) }, + { SC_(-0.44869136810302734375), SC_(-0.4742750638478986908270201721978810099748), SC_(1.474275063847898690827020172197881009975) }, + { SC_(-0.431758880615234375), SC_(-0.4585350903554068789999156737476376374281), SC_(1.458535090355406878999915673747637637428) }, + { SC_(-0.42737865447998046875), SC_(-0.4544253812246350465277000224478606192938), SC_(1.454425381224635046527700022447860619294) }, + { SC_(-0.40386104583740234375), SC_(-0.432099163831203009522492134188633143318), SC_(1.432099163831203009522492134188633143318) }, + { SC_(-0.373790740966796875), SC_(-0.4029308717684010449096733839740115560375), SC_(1.402930871768401044909673383974011556038) }, + { SC_(-0.233989715576171875), SC_(-0.2592886113836899036561306247377429906331), SC_(1.259288611383689903656130624737742990633) }, + { SC_(-0.211333751678466796875), SC_(-0.2349615691289957823240891523819732686167), SC_(1.234961569128995782324089152381973268617) }, + { SC_(-0.19889736175537109375), SC_(-0.2215069175571250998650947268880775414973), SC_(1.221506917557125099865094726888077541497) }, + { SC_(-0.182256221771240234375), SC_(-0.2033995434419099358670147911035329678187), SC_(1.203399543441909935867014791103532967819) }, + { SC_(-0.18211650848388671875), SC_(-0.2032470406749777206160247638754155004452), SC_(1.203247040674977720616024763875415500445) }, + { SC_(-0.17195796966552734375), SC_(-0.1921381404648513701112796196929619853574), SC_(1.192138140464851370111279619692961985357) }, + { SC_(-0.16376972198486328125), SC_(-0.1831554574798521513436655145245684061007), SC_(1.183155457479852151343665514524568406101) }, + { SC_(-0.1551761627197265625), SC_(-0.1737022152361176281597084824103780401593), SC_(1.173702215236117628159708482410378040159) }, + { SC_(-0.150575160980224609375), SC_(-0.1686304768425467295981309155148784764793), SC_(1.168630476842546729598130915514878476479) }, + { SC_(-0.14617443084716796875), SC_(-0.1637729176827752878270766458400701270093), SC_(1.163772917682775287827076645840070127009) }, + { SC_(-0.120928287506103515625), SC_(-0.1357907214549539753359678326306578109211), SC_(1.135790721454953975335967832630657810921) }, + { SC_(-0.10677051544189453125), SC_(-0.120021374070160212148900319045677271623), SC_(1.120021374070160212148900319045677271623) }, + { SC_(-0.026175022125244140625), SC_(-0.02952860584830764246354187242063295294678), SC_(1.029528605848307642463541872420632952947) }, + { SC_(-0.023293018341064453125), SC_(-0.02627860393458503686138222115868091914281), SC_(1.026278603934585036861382221158680919143) }, + { SC_(0.0510406494140625), SC_(0.05754323159766276460633141130734206381764), SC_(0.9424567684023372353936685886926579361824) }, + { SC_(0.0586032867431640625), SC_(0.06605110514470391012871050500624176400922), SC_(0.9339488948552960898712894949937582359908) }, + { SC_(0.076335906982421875), SC_(0.0859688297890711056959299022462129164399), SC_(0.9140311702109288943040700977537870835601) }, + { SC_(0.0879764556884765625), SC_(0.09901527946158023583191911912735088560206), SC_(0.9009847205384197641680808808726491143979) }, + { SC_(0.09531307220458984375), SC_(0.1072244906212039889473333509272810724811), SC_(0.8927755093787960110526666490727189275189) }, + { SC_(0.125732421875), SC_(0.141129766841816338386433828128425005518), SC_(0.858870233158183661613566171871574994482) }, + { SC_(0.136138916015625), SC_(0.1526725386198208366577407509841325704749), SC_(0.8473274613801791633422592490158674295251) }, + { SC_(0.17234516143798828125), SC_(0.1925622815596925250765701529203770551484), SC_(0.8074377184403074749234298470796229448516) }, + { SC_(0.2119922637939453125), SC_(0.2356720655395377271770852173917242884116), SC_(0.7643279344604622728229147826082757115884) }, + { SC_(0.43794345855712890625), SC_(0.4643112756462460685205691813402852159015), SC_(0.5356887243537539314794308186597147840985) }, + { SC_(0.45653057098388671875), SC_(0.4814821136114279472122846649867025115386), SC_(0.5185178863885720527877153350132974884614) }, + { SC_(0.47747135162353515625), SC_(0.5004808072450297309682843640858704431896), SC_(0.4995191927549702690317156359141295568104) }, + { SC_(0.49276065826416015625), SC_(0.5141150988347504841569692774090664542419), SC_(0.4858849011652495158430307225909335457581) }, + { SC_(0.5252094268798828125), SC_(0.5423719706469999625701008732557153279125), SC_(0.4576280293530000374298991267442846720875) }, + { SC_(0.54292964935302734375), SC_(0.5574049622516386907232939533524308087156), SC_(0.4425950377483613092767060466475691912844) }, + { SC_(0.61347866058349609375), SC_(0.6143810907170157257383288013023603675948), SC_(0.3856189092829842742616711986976396324052) }, + { SC_(0.642208099365234375), SC_(0.6362376857636366143813206114170006573371), SC_(0.3637623142363633856186793885829993426629) }, + { SC_(0.7008876800537109375), SC_(0.6784144434439739073654322843049904496467), SC_(0.3215855565560260926345677156950095503533) }, + { SC_(0.70489788055419921875), SC_(0.6811753668779429503087291745627064840922), SC_(0.3188246331220570496912708254372935159078) }, + { SC_(0.74547100067138671875), SC_(0.7082339060756917047499724898172912878096), SC_(0.2917660939243082952500275101827087121904) }, + { SC_(0.75010395050048828125), SC_(0.7112224614494741974710200961895796339406), SC_(0.2887775385505258025289799038104203660594) }, + { SC_(0.7521419525146484375), SC_(0.7125305494335531148908418692735599063945), SC_(0.2874694505664468851091581307264400936055) }, + { SC_(0.75544834136962890625), SC_(0.7146442322820387669270602166159252715355), SC_(0.2853557677179612330729397833840747284645) }, + { SC_(0.7555294036865234375), SC_(0.7146959208691246816716474590070080412476), SC_(0.2853040791308753183283525409929919587524) }, + { SC_(0.7955780029296875), SC_(0.7394606270451848746421982649233401081581), SC_(0.2605393729548151253578017350766598918419) }, + { SC_(0.79776287078857421875), SC_(0.7407675218037960090659350830732732644233), SC_(0.2592324781962039909340649169267267355767) }, + { SC_(0.802501678466796875), SC_(0.7435864497870381244667241506381330984847), SC_(0.2564135502129618755332758493618669015153) }, + { SC_(0.84609889984130859375), SC_(0.7685236710399025207372546246556089909706), SC_(0.2314763289600974792627453753443910090294) }, + { SC_(0.932300567626953125), SC_(0.812654343559088650769418669744883116426), SC_(0.187345656440911349230581330255116883574) }, + { SC_(0.98491954803466796875), SC_(0.8363459095960576788409384172057128987876), SC_(0.1636540904039423211590615827942871012124) }, + { SC_(1.0851459503173828125), SC_(0.8751247987335964581036476838295929858233), SC_(0.1248752012664035418963523161704070141767) }, + { SC_(1.10117816925048828125), SC_(0.8806009859824617559963680716051525866734), SC_(0.1193990140175382440036319283948474133266) }, + { SC_(1.1800746917724609375), SC_(0.9048583669746933087439482567321779057712), SC_(0.09514163302530669125605174326782209422885) }, + { SC_(1.20333766937255859375), SC_(0.9112027176275558226265541876273530718072), SC_(0.08879728237244417737344581237264692819278) }, + { SC_(1.25640106201171875), SC_(0.924402044657034973439387794208329304664), SC_(0.07559795534296502656061220579167069533596) }, + { SC_(1.27527332305908203125), SC_(0.9286916599172518912865347736903588888277), SC_(0.07130834008274810871346522630964111117231) }, + { SC_(1.295307159423828125), SC_(0.9330248800657541920348036618074490968745), SC_(0.06697511993424580796519633819255090312553) }, + { SC_(1.35011577606201171875), SC_(0.9437833069017625783094606605709502627745), SC_(0.05621669309823742169053933942904973722551) }, + { SC_(1.3642253875732421875), SC_(0.9463071202862943362652946301000630969371), SC_(0.05369287971370566373470536989993690306286) }, + { SC_(1.36428356170654296875), SC_(0.9463173268680031585168957431066720358209), SC_(0.05368267313199684148310425689332796417912) }, + { SC_(1.3927154541015625), SC_(0.9511154338502067564077082935533756107928), SC_(0.04888456614979324359229170644662438920721) }, + { SC_(1.4851818084716796875), SC_(0.9643031892104382293515834445221352837052), SC_(0.03569681078956177064841655547786471629478) }, + { SC_(1.51205730438232421875), SC_(0.9675134325647516868759572291075083838452), SC_(0.03248656743524831312404277089249161615477) }, + { SC_(1.518337249755859375), SC_(0.9682268650544353738887342889004292746917), SC_(0.03177313494556462611126571109957072530829) }, + { SC_(1.63171100616455078125), SC_(0.9789779282245029251422213871074674302737), SC_(0.02102207177549707485777861289253256972629) }, + { SC_(1.64548969268798828125), SC_(0.9800386644418555265242976627229641636655), SC_(0.0199613355581444734757023372770358363345) }, + { SC_(1.6677036285400390625), SC_(0.9816505008209075157523253425835050946976), SC_(0.01834949917909248424767465741649490530242) }, + { SC_(1.85671520233154296875), SC_(0.9913552328828875044489090206698996138703), SC_(0.008644767117112495551090979330100386129716) }, + { SC_(1.9257602691650390625), SC_(0.9935393324839248670687761360401723108545), SC_(0.006460667516075132931223863959827689145547) }, + { SC_(1.95288181304931640625), SC_(0.994251490289876205808362023378052652071), SC_(0.005748509710123794191637976621947347929005) }, + { SC_(1.95960140228271484375), SC_(0.994416616212766790816043281256924957545), SC_(0.005583383787233209183956718743075042454991) }, + { SC_(1.97496891021728515625), SC_(0.9947782798791369498659664217390766721303), SC_(0.005221720120863050134033578260923327869708) }, + { SC_(2.0098972320556640625), SC_(0.9955228085136240355207293005308942804012), SC_(0.004477191486375964479270699469105719598846) }, + { SC_(2.03814983367919921875), SC_(0.9960531548179094257423200852703746881917), SC_(0.003946845182090574257679914729625311808335) }, + { SC_(2.117748260498046875), SC_(0.9972550864787919269607935067171569551311), SC_(0.002744913521208073039206493282843044868944) }, + { SC_(2.1290187835693359375), SC_(0.9973951443272600509200163541924012381496), SC_(0.002604855672739949079983645807598761850375) }, + { SC_(2.23621368408203125), SC_(0.9984357051823096237088846035455957333292), SC_(0.00156429481769037629111539645440426667076) }, + { SC_(2.303375244140625), SC_(0.9988758768562388876948647459384863503014), SC_(0.001124123143761112305135254061513649698603) }, + { SC_(2.30908966064453125), SC_(0.9989074670835471212637911004565234713734), SC_(0.001092532916452878736208899543476528626611) }, + { SC_(2.312808990478515625), SC_(0.9989275848915122403637796954988403953277), SC_(0.001072415108487759636220304501159604672322) }, + { SC_(2.34100818634033203125), SC_(0.9990693226518036651484626523819889432217), SC_(0.0009306773481963348515373476180110567783143) }, + { SC_(2.3639354705810546875), SC_(0.9991715482831704962257608094466908648703), SC_(0.0008284517168295037742391905533091351296536) }, + { SC_(2.38584804534912109375), SC_(0.999259421812066783311382896374381171103), SC_(0.0007405781879332166886171036256188288969614) }, + { SC_(2.43149852752685546875), SC_(0.9994153951428661086310888659892606189344), SC_(0.0005846048571338913689111340107393810656404) }, + { SC_(2.4652652740478515625), SC_(0.9995104528238484099433299313593918017795), SC_(0.0004895471761515900566700686406081982204819) }, + { SC_(2.48156833648681640625), SC_(0.99955099523573386718480702374077607517), SC_(0.0004490047642661328151929762592239248300062) }, + { SC_(2.4876461029052734375), SC_(0.9995652906194901943292532623705382603416), SC_(0.0004347093805098056707467376294617396584017) }, + { SC_(2.49185085296630859375), SC_(0.9995749306249868850890104144222839530978), SC_(0.000425069375013114910989585577716046902164) }, + { SC_(2.49247837066650390625), SC_(0.9995763520644124185897036893206316527169), SC_(0.0004236479355875814102963106793683472830707) }, + { SC_(2.56191158294677734375), SC_(0.9997088956437770874696680503820402085636), SC_(0.000291104356222912530331949617959791436386) }, + { SC_(2.61768817901611328125), SC_(0.9997860681867462115075444425791486024542), SC_(0.0002139318132537884924555574208513975457818) }, + { SC_(2.70856189727783203125), SC_(0.9998721090543402843946579280477699469948), SC_(0.0001278909456597156053420719522300530052477) }, + { SC_(2.8597621917724609375), SC_(0.9999475235569074621407329404065298036302), SC_(0.5247644309253785926705959347019636981165e-4) }, + { SC_(2.87231540679931640625), SC_(0.9999513599726121814302460826437500121134), SC_(0.486400273878185697539173562499878865947e-4) }, + { SC_(2.87524318695068359375), SC_(0.9999522156906622409531206227837709057555), SC_(0.4778430933775904687937721622909424451951e-4) }, + { SC_(2.87711620330810546875), SC_(0.9999527556197749239828920225935109603346), SC_(0.4724438022507601710797740648903966540875e-4) }, + { SC_(2.88459300994873046875), SC_(0.9999548538467674878672671151663947818517), SC_(0.451461532325121327328848336052181482513e-4) }, + { SC_(2.88650608062744140625), SC_(0.9999553763394753402536287360321951606741), SC_(0.4462366052465974637126396780483932586128e-4) }, + { SC_(2.901752471923828125), SC_(0.9999593401316765560335455180271069550107), SC_(0.4065986832344396645448197289304498930035e-4) }, + { SC_(2.988407135009765625), SC_(0.9999762377681189955434156740468765476593), SC_(0.2376223188100445658432595312345234070632e-4) }, + { SC_(3.02743244171142578125), SC_(0.9999814308884347491833058360756432747941), SC_(0.1856911156525081669416392435672520592555e-4) }, + { SC_(3.1172580718994140625), SC_(0.9999895895910693287857223981230233990902), SC_(0.1041040893067121427760187697660090977657e-4) }, + { SC_(3.12372589111328125), SC_(0.9999900204264126334086680667418726148844), SC_(0.9979573587366591331933258127385115606816e-5) }, + { SC_(3.18522739410400390625), SC_(0.9999933499347420108074901348507827945904), SC_(0.6650065257989192509865149217205409606005e-5) }, + { SC_(3.29238796234130859375), SC_(0.9999967780665854867942389973420946273526), SC_(0.3221933414513205761002657905372647420117e-5) }, + { SC_(3.2967376708984375), SC_(0.9999968729159633477071268771660526947916), SC_(0.3127084036652292873122833947305208397749e-5) }, + { SC_(3.3171443939208984375), SC_(0.9999972832708583409073345432090835972393), SC_(0.2716729141659092665456790916402760700865e-5) }, + { SC_(3.34983730316162109375), SC_(0.999997835067334282029598175811562644485), SC_(0.2164932665717970401824188437355514979697e-5) }, + { SC_(3.3712615966796875), SC_(0.9999981364410852287169607711094884146581), SC_(0.1863558914771283039228890511585341885627e-5) }, + { SC_(3.37945270538330078125), SC_(0.9999982406531561474633390199540623493194), SC_(0.1759346843852536660980045937650680642258e-5) }, + { SC_(3.457611083984375), SC_(0.999998990617699127730974245504433748246), SC_(0.1009382300872269025754495566251753996237e-5) }, + { SC_(3.4955196380615234375), SC_(0.9999992323270584793476652090838719488337), SC_(0.7676729415206523347909161280511663428336e-6) }, + { SC_(3.5278949737548828125), SC_(0.9999993936918195198146685207850760783309), SC_(0.6063081804801853314792149239216690531313e-6) }, + { SC_(3.61342334747314453125), SC_(0.9999996781007930814251486740993849897074), SC_(0.3218992069185748513259006150102926275088e-6) }, + { SC_(3.6264705657958984375), SC_(0.9999997081011520562826605602874202304177), SC_(0.2918988479437173394397125797695823038285e-6) }, + { SC_(3.631275177001953125), SC_(0.9999997184533550254224618089830656023236), SC_(0.2815466449745775381910169343976763508771e-6) }, + { SC_(3.68529415130615234375), SC_(0.9999998129758023803895471307314617042189), SC_(0.1870241976196104528692685382957810818761e-6) }, + { SC_(3.70755863189697265625), SC_(0.9999998422528716665807398297179388578707), SC_(0.1577471283334192601702820611421293094744e-6) }, + { SC_(3.7247791290283203125), SC_(0.9999998618060870277521151678834001759796), SC_(0.1381939129722478848321165998240204186296e-6) }, + { SC_(3.85035610198974609375), SC_(0.9999999482602965422579575137240309686828), SC_(0.517397034577420424862759690313172362617e-7) }, + { SC_(3.8901195526123046875), SC_(0.9999999623340564928678105257711087384931), SC_(0.3766594350713218947422889126150691316762e-7) }, + { SC_(3.9150848388671875), SC_(0.9999999691892380022718296491207196532311), SC_(0.3081076199772817035087928034676891629959e-7) }, + { SC_(3.97042560577392578125), SC_(0.9999999803471559662108676689373849556513), SC_(0.1965284403378913233106261504434869643474e-7) }, + { SC_(3.9990558624267578125), SC_(0.9999999844623994226841345546976315715757), SC_(0.1553760057731586544530236842842427928529e-7) }, + { SC_(4.0202732086181640625), SC_(0.9999999869588516313974107653969576328928), SC_(0.1304114836860258923460304236710719133298e-7) }, + { SC_(4.059665679931640625), SC_(0.9999999906011039329440428181500764654351), SC_(0.9398896067055957181849923534564871471163e-8) }, + { SC_(4.07498645782470703125), SC_(0.9999999917319758181060151635650756156136), SC_(0.826802418189398483643492438438638626357e-8) }, + { SC_(4.0926380157470703125), SC_(0.9999999928712989950214740371563331235804), SC_(0.712870100497852596284366687641963609073e-8) }, + { SC_(4.115203857421875), SC_(0.9999999941073845432394979591533284778705), SC_(0.5892615456760502040846671522129518138003e-8) }, + { SC_(4.1200580596923828125), SC_(0.999999994344624655910219644297408134312), SC_(0.5655375344089780355702591865688007494418e-8) }, + { SC_(4.1238422393798828125), SC_(0.9999999945230987630125942263956192615149), SC_(0.5476901236987405773604380738485137636205e-8) }, + { SC_(4.18769931793212890625), SC_(0.999999996825324701191836773808018915496), SC_(0.3174675298808163226191981084503971517082e-8) }, + { SC_(4.19874095916748046875), SC_(0.9999999971133285173570966406051015581972), SC_(0.2886671482642903359394898441802794211932e-8) }, + { SC_(4.20690250396728515625), SC_(0.9999999973096908466694080193834019387566), SC_(0.2690309153330591980616598061243415309299e-8) }, + { SC_(4.22000026702880859375), SC_(0.999999997597935669219902570917607920444), SC_(0.2402064330780097429082392079555956337119e-8) }, + { SC_(4.24826908111572265625), SC_(0.9999999981212753683849542506366834896337), SC_(0.1878724631615045749363316510366333537567e-8) }, + { SC_(4.38267421722412109375), SC_(0.9999999994282841249115685789971164547536), SC_(0.5717158750884314210028835452464447445326e-9) }, + { SC_(4.39856719970703125), SC_(0.9999999995044692226766877552910187174272), SC_(0.4955307773233122447089812825728300182121e-9) }, + { SC_(4.41140270233154296875), SC_(0.9999999995586805369524462894635438947331), SC_(0.4413194630475537105364561052668571821336e-9) }, + { SC_(4.46236324310302734375), SC_(0.9999999997222859477763385026053465470885), SC_(0.2777140522236614973946534529114539167313e-9) }, + { SC_(4.46667575836181640625), SC_(0.9999999997330229427656384209340139818838), SC_(0.2669770572343615790659860181161641325611e-9) }, + { SC_(4.47502994537353515625), SC_(0.9999999997526814932597596604866425689186), SC_(0.2473185067402403395133574310814301241976e-9) }, + { SC_(4.483638763427734375), SC_(0.999999999771458639310503189444558378199), SC_(0.2285413606894968105554416218009889101498e-9) }, + { SC_(4.48403263092041015625), SC_(0.9999999997722835544847406994462153715198), SC_(0.2277164455152593005537846284801644209053e-9) }, + { SC_(4.51054668426513671875), SC_(0.9999999998216079429645380731036969585483), SC_(0.1783920570354619268963030414516833989782e-9) }, + { SC_(4.67531681060791015625), SC_(0.9999999999620572592624488052520567621063), SC_(0.3794274073755119474794323789371137879806e-10) }, + { SC_(4.6975612640380859375), SC_(0.999999999969337756904297867060374000221), SC_(0.3066224309570213293962599977898805627251e-10) }, + { SC_(4.7035999298095703125), SC_(0.9999999999710656528628511442036423007801), SC_(0.289343471371488557963576992198893036785e-10) }, + { SC_(4.70855236053466796875), SC_(0.9999999999724112829756039222900224238312), SC_(0.2758871702439607770997757616876384504719e-10) }, + { SC_(4.7173023223876953125), SC_(0.9999999999746405889607731362343521159649), SC_(0.2535941103922686376564788403511585907718e-10) }, + { SC_(4.72319889068603515625), SC_(0.9999999999760424196780308137523103887781), SC_(0.2395758032196918624768961122193089155665e-10) }, + { SC_(4.75647830963134765625), SC_(0.9999999999826417500285260584857944861917), SC_(0.1735824997147394151420551380832331628646e-10) }, + { SC_(4.7578258514404296875), SC_(0.9999999999828675379559186553605097933328), SC_(0.1713246204408134463949020666719436603364e-10) }, + { SC_(4.76685810089111328125), SC_(0.9999999999843084121078261289867881913554), SC_(0.1569158789217387101321180864461434335413e-10) }, + { SC_(4.7696933746337890625), SC_(0.999999999984735725688693624461200005215), SC_(0.1526427431130637553879999478501051129862e-10) }, + { SC_(4.7944507598876953125), SC_(0.9999999999880137552217601142622348550727), SC_(0.1198624477823988573776514492731315953542e-10) }, + { SC_(4.8010959625244140625), SC_(0.9999999999887691458776479444900639126969), SC_(0.1123085412235205550993608730307459147162e-10) }, + { SC_(4.8044872283935546875), SC_(0.9999999999891364693161538500903435641699), SC_(0.1086353068384614990965643583011596109973e-10) }, + { SC_(4.81623363494873046875), SC_(0.999999999990320054976935784005315704344), SC_(0.9679945023064215994684295656048935330699e-11) }, + { SC_(4.83378314971923828125), SC_(0.9999999999918566015822786881415506967502), SC_(0.8143398417721311858449303249839611412579e-11) }, + { SC_(4.9204959869384765625), SC_(0.9999999999965640766819005108029784331824), SC_(0.3435923318099489197021566817649105671184e-11) }, + { SC_(4.93080806732177734375), SC_(0.9999999999969022277087461656235776754241), SC_(0.3097772291253834376422324575851562900089e-11) }, + { SC_(4.9461956024169921875), SC_(0.9999999999973469736805588663004234322273), SC_(0.2653026319441133699576567772727096047411e-11) }, + { SC_(4.95575237274169921875), SC_(0.9999999999975909997954754364337223859339), SC_(0.2409000204524563566277614066144810071518e-11) }, + { SC_(4.98528766632080078125), SC_(0.9999999999982141805054615991904787167496), SC_(0.1785819494538400809521283250366820400389e-11) }, + { SC_(4.98998355865478515625), SC_(0.9999999999982974491525865962396432033197), SC_(0.1702550847413403760356796680337710810069e-11) }, + { SC_(5.02855682373046875), SC_(0.9999999999988517264956378980619258324192), SC_(0.1148273504362101938074167580787042639038e-11) }, + { SC_(5.03557872772216796875), SC_(0.9999999999989315115047508105969225357869), SC_(0.1068488495249189403077464213064479671328e-11) }, + { SC_(5.0523052215576171875), SC_(0.9999999999991002937379749143926146803551), SC_(0.8997062620250856073853196449004253366533e-12) }, + { SC_(5.07685184478759765625), SC_(0.9999999999993016238951734186597928920516), SC_(0.6983761048265813402071079483580106775973e-12) }, + { SC_(5.08204364776611328125), SC_(0.9999999999993381566276206363690381882733), SC_(0.6618433723793636309618117267347844272082e-12) }, + { SC_(5.13345241546630859375), SC_(0.999999999999612331260405493647794650402), SC_(0.3876687395945063522053495979737659683032e-12) }, + { SC_(5.1391048431396484375), SC_(0.999999999999634588517990564238879426641), SC_(0.3654114820094357611205733589988913877604e-12) }, + { SC_(5.13993549346923828125), SC_(0.9999999999996377517440695332277429140254), SC_(0.3622482559304667722570859745677578023379e-12) }, + { SC_(5.15045261383056640625), SC_(0.9999999999996755500658564562474091399993), SC_(0.3244499341435437525908600006936606245925e-12) }, + { SC_(5.16167926788330078125), SC_(0.9999999999997116260010072844300443598171), SC_(0.2883739989927155699556401829053926593583e-12) }, + { SC_(5.17528629302978515625), SC_(0.9999999999997501000542008628351256583835), SC_(0.2498999457991371648743416165426368804179e-12) }, + { SC_(5.1753253936767578125), SC_(0.9999999999997502029947677817117184848968), SC_(0.2497970052322182882815151031630978773029e-12) }, + { SC_(5.2130718231201171875), SC_(0.9999999999998324127754807945970261376527), SC_(0.1675872245192054029738623472857515088274e-12) }, + { SC_(5.29325771331787109375), SC_(0.9999999999999288856738052204016145340166), SC_(0.7111432619477959838546598339183116790691e-13) }, + { SC_(5.2994289398193359375), SC_(0.9999999999999334607492711678557262715706), SC_(0.665392507288321442737284293716776963984e-13) }, + { SC_(5.36013698577880859375), SC_(0.9999999999999655451494392296744414479568), SC_(0.344548505607703255585520432106041683721e-13) }, + { SC_(5.45147609710693359375), SC_(0.9999999999999873739267894844232513365118), SC_(0.1262607321051557674866348821792628557972e-13) }, + { SC_(5.50894069671630859375), SC_(0.9999999999999933423585918075134713785513), SC_(0.6657641408192486528621448736888188965298e-14) }, + { SC_(5.57548427581787109375), SC_(0.9999999999999968527672544482246160644115), SC_(0.314723274555177538393558852118569471685e-14) }, + { SC_(5.5860691070556640625), SC_(0.9999999999999972086083536154872247664216), SC_(0.2791391646384512775233578379487718997086e-14) }, + { SC_(5.64849758148193359375), SC_(0.9999999999999986305669378936272102876212), SC_(0.136943306210637278971237882925180230156e-14) }, + { SC_(5.67121601104736328125), SC_(0.9999999999999989452188942213501238951865), SC_(0.1054781105778649876104813506873549674391e-14) }, + { SC_(5.6940021514892578125), SC_(0.9999999999999991890350782086923335431393), SC_(0.8109649217913076664568606728738587613782e-15) }, + { SC_(5.8028507232666015625), SC_(0.9999999999999997722139370566709142078876), SC_(0.2277860629433290857921123973267448027079e-15) }, + { SC_(5.89911556243896484375), SC_(0.9999999999999999273310114171591943570055), SC_(0.7266898858284080564299449379332489531228e-16) }, + { SC_(5.90867519378662109375), SC_(0.9999999999999999351899407560267583020934), SC_(0.6481005924397324169790663469831296572444e-16) }, + { SC_(5.92298793792724609375), SC_(0.9999999999999999454148146455550046656746), SC_(0.5458518535444499533432536380511720243893e-16) }, + { SC_(5.95886135101318359375), SC_(0.9999999999999999645670653382102726138283), SC_(0.3543293466178972738617174425389934295203e-16) }, + { SC_(6.0150852203369140625), SC_(0.9999999999999999820915182893228664770405), SC_(0.1790848171067713352295947212902047549442e-16) }, + { SC_(6.02811908721923828125), SC_(0.9999999999999999847253231421033886323739), SC_(0.1527467685789661136762605508631698629412e-16) }, + { SC_(6.037822723388671875), SC_(0.9999999999999999864342825303533563325582), SC_(0.1356571746964664366744180012364556731983e-16) }, + { SC_(6.05489063262939453125), SC_(0.9999999999999999889944678766415576341472), SC_(0.1100553212335844236585283710674808407408e-16) }, + { SC_(6.1759700775146484375), SC_(0.9999999999999999975448452162650769292541), SC_(0.245515478373492307074589212037218914569e-17) }, + { SC_(6.20361804962158203125), SC_(0.9999999999999999982640371408095169271104), SC_(0.1735962859190483072889644262633920675422e-17) }, + { SC_(6.254451751708984375), SC_(0.9999999999999999990857858792087275530364), SC_(0.9142141207912724469636044315135167092246e-18) }, + { SC_(6.4008617401123046875), SC_(0.999999999999999999859864992644041031821), SC_(0.1401350073559589681790226673644335192431e-18) }, + { SC_(6.40293121337890625), SC_(0.9999999999999999998635724949753329988618), SC_(0.1364275050246670011381531339230014520635e-18) }, + { SC_(6.44345760345458984375), SC_(0.9999999999999999999194393258289466407135), SC_(0.805606741710533592864585458434444068011e-19) }, + { SC_(6.47809505462646484375), SC_(0.9999999999999999999487763610108722858332), SC_(0.5122363898912771416675345659572395374372e-19) }, + { SC_(6.49267101287841796875), SC_(0.9999999999999999999576934136067901865991), SC_(0.423065863932098134009397058320083027927e-19) }, + { SC_(6.5178356170654296875), SC_(0.9999999999999999999696208471565094820618), SC_(0.3037915284349051793818500085981039089403e-19) }, + { SC_(6.53493785858154296875), SC_(0.9999999999999999999757610063637445566877), SC_(0.2423899363625544331226481168890701986164e-19) }, + { SC_(6.56903934478759765625), SC_(0.9999999999999999999845747232345600776473), SC_(0.1542527676543992235266715952300598475537e-19) }, + { SC_(6.57036113739013671875), SC_(0.9999999999999999999848432925940364693913), SC_(0.1515670740596353060870931696674263406445e-19) }, + { SC_(6.6012401580810546875), SC_(0.9999999999999999999899544411087670709063), SC_(0.1004555889123292909367535592918549282524e-19) }, + { SC_(6.6133975982666015625), SC_(0.9999999999999999999914607396914475599695), SC_(0.8539260308552440030489025187766437033893e-20) }, + { SC_(6.614013671875), SC_(0.9999999999999999999915308157266726582396), SC_(0.846918427332734176038950311387000199938e-20) }, + { SC_(6.65176868438720703125), SC_(0.9999999999999999999948960492295407549616), SC_(0.5103950770459245038373864424994355232744e-20) }, + { SC_(6.67388629913330078125), SC_(0.9999999999999999999962112561597774386166), SC_(0.3788743840222561383427898405609521135209e-20) }, + { SC_(6.675098419189453125), SC_(0.9999999999999999999962727294431245722943), SC_(0.3727270556875427705686833997971476711389e-20) }, + { SC_(6.73399639129638671875), SC_(0.9999999999999999999983224938408648373451), SC_(0.1677506159135162654937097106857586013789e-20) }, + { SC_(6.774074554443359375), SC_(0.9999999999999999999990294388848823039468), SC_(0.9705611151176960532165924022124182051181e-21) }, + { SC_(6.839885711669921875), SC_(0.9999999999999999999996075324506377418898), SC_(0.3924675493622581101992853509398975667702e-21) }, + { SC_(6.86166667938232421875), SC_(0.9999999999999999999997097026235625653255), SC_(0.2902973764374346745366897115310349140629e-21) }, + { SC_(6.86821842193603515625), SC_(0.9999999999999999999997349241430742071849), SC_(0.2650758569257928151403169457718795390422e-21) }, + { SC_(6.87017536163330078125), SC_(0.9999999999999999999997420278370314862565), SC_(0.2579721629685137435110698159577792881e-21) }, + { SC_(6.9438915252685546875), SC_(0.999999999999999999999907789706111134148), SC_(0.9221029388886585196730336935045033388208e-22) }, + { SC_(6.94417095184326171875), SC_(0.9999999999999999999999081504757103419795), SC_(0.9184952428965802049788611864563591946226e-22) }, + { SC_(7.02402496337890625), SC_(0.999999999999999999999970229303356580071), SC_(0.2977069664341992903453738993900401285503e-22) }, + { SC_(7.04118442535400390625), SC_(0.9999999999999999999999766690647347813976), SC_(0.2333093526521860243876854475410979262103e-22) }, + { SC_(7.0728092193603515625), SC_(0.9999999999999999999999851346580378971058), SC_(0.1486534196210289422461831541803890066821e-22) }, + { SC_(7.11659526824951171875), SC_(0.9999999999999999999999920618538775044464), SC_(0.7938146122495553642615968497016709781571e-23) }, + { SC_(7.18280124664306640625), SC_(0.9999999999999999999999969477254268593726), SC_(0.3052274573140627399432973240733715500213e-23) }, + { SC_(7.20355319976806640625), SC_(0.9999999999999999999999977419301284355623), SC_(0.2258069871564437709331260570315365949665e-23) }, + { SC_(7.27909374237060546875), SC_(0.9999999999999999999999992515556916792261), SC_(0.7484443083207738734503483608935021035732e-24) }, + { SC_(7.28028106689453125), SC_(0.9999999999999999999999992645004451770347), SC_(0.7354995548229653146869970523781527988642e-24) }, + { SC_(7.298152923583984375), SC_(0.9999999999999999999999994345631928770567), SC_(0.5654368071229432894992332067407147179749e-24) }, + { SC_(7.31467151641845703125), SC_(0.9999999999999999999999995568116259996168), SC_(0.4431883740003831823890539135951501761503e-24) }, + { SC_(7.32010936737060546875), SC_(0.9999999999999999999999995910130381669911), SC_(0.4089869618330089157685151201949087925479e-24) }, + { SC_(7.34866237640380859375), SC_(0.9999999999999999999999997319906448357093), SC_(0.268009355164290673339087031887057715089e-24) }, + { SC_(7.351879119873046875), SC_(0.9999999999999999999999997444791197223142), SC_(0.2555208802776857586959896180952785091403e-24) }, + { SC_(7.35590362548828125), SC_(0.9999999999999999999999997592943074733691), SC_(0.2407056925266308623391590746789683246709e-24) }, + { SC_(7.390369415283203125), SC_(0.9999999999999999999999998558663763263787), SC_(0.1441336236736213391389793807586759175995e-24) }, + { SC_(7.43821620941162109375), SC_(0.9999999999999999999999999295502581038212), SC_(0.7044974189617879705218727765406635153304e-25) }, + { SC_(7.43946170806884765625), SC_(0.9999999999999999999999999308550578406467), SC_(0.6914494215935333790398074475111218230458e-25) }, + { SC_(7.48311901092529296875), SC_(0.999999999999999999999999964163218913179), SC_(0.3583678108682102561152351850893798856277e-25) }, + { SC_(7.49824619293212890625), SC_(0.9999999999999999999999999714868908856129), SC_(0.2851310911438713788012919629820992423858e-25) }, + { SC_(7.50188446044921875), SC_(0.9999999999999999999999999730141507157818), SC_(0.2698584928421822020035304290073321597406e-25) }, + { SC_(7.52948474884033203125), SC_(0.9999999999999999999999999822420651220879), SC_(0.1775793487791212989839150755243583008096e-25) }, + { SC_(7.6320323944091796875), SC_(0.9999999999999999999999999962984458271673), SC_(0.3701554172832712513006017529906907914499e-26) }, + { SC_(7.6759738922119140625), SC_(0.9999999999999999999999999981215459672183), SC_(0.1878454032781689292876320094611621328422e-26) }, + { SC_(7.67881011962890625), SC_(0.999999999999999999999999998202249704333), SC_(0.1797750295667047232713633441478606640198e-26) }, + { SC_(7.69775485992431640625), SC_(0.9999999999999999999999999986598159749852), SC_(0.1340184025014838921678286365792744470017e-26) }, + { SC_(7.70757007598876953125), SC_(0.9999999999999999999999999988493273258458), SC_(0.1150672674154231530685408186230565876878e-26) }, + { SC_(7.71776866912841796875), SC_(0.9999999999999999999999999990181051135537), SC_(0.9818948864462603043818495768683861311821e-27) }, + { SC_(7.79935359954833984375), SC_(0.9999999999999999999999999997259876414039), SC_(0.2740123585961319556857387807076098785701e-27) }, + { SC_(7.81407070159912109375), SC_(0.9999999999999999999999999997826446873284), SC_(0.2173553126715507615629930753265485721298e-27) }, + { SC_(7.81634521484375), SC_(0.9999999999999999999999999997902963473516), SC_(0.209703652648431358354620963217352346183e-27) }, + { SC_(7.84175968170166015625), SC_(0.9999999999999999999999999998595912638039), SC_(0.1404087361960659424532579514219630734144e-27) }, + { SC_(7.88610076904296875), SC_(0.9999999999999999999999999999304798650663), SC_(0.6952013493370366965787168537834557597352e-28) }, + { SC_(7.89655590057373046875), SC_(0.9999999999999999999999999999411317291543), SC_(0.5886827084565561878281328421149862522402e-28) }, + { SC_(7.9050960540771484375), SC_(0.9999999999999999999999999999486179207741), SC_(0.513820792259039401977061154556515432295e-28) }, + { SC_(7.93815517425537109375), SC_(0.9999999999999999999999999999696918627742), SC_(0.3030813722580726383815315462367670870671e-28) }, + { SC_(7.94338130950927734375), SC_(0.9999999999999999999999999999721239170155), SC_(0.2787608298449905464917225531595312562447e-28) } + } }; +#undef SC_ + diff --git a/test/erf_inv_data.ipp b/test/erf_inv_data.ipp new file mode 100644 index 000000000..b3ee380cc --- /dev/null +++ b/test/erf_inv_data.ipp @@ -0,0 +1,110 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 100> erf_inv_data = { { + { SC_(-0.990433037281036376953125), SC_(-1.832184533179510927322805923563700329767) }, + { SC_(-0.936334311962127685546875), SC_(-1.311339282092737086640055105484822812599) }, + { SC_(-0.931107819080352783203125), SC_(-1.286316461685184857889337272829270644576) }, + { SC_(-0.928576648235321044921875), SC_(-1.274755355308702535979544636706295190547) }, + { SC_(-0.92711746692657470703125), SC_(-1.268242390461126936128446743938528753699) }, + { SC_(-0.907657206058502197265625), SC_(-1.190178701802009872651528128114629153367) }, + { SC_(-0.89756715297698974609375), SC_(-1.154826929034364581020764782706068245251) }, + { SC_(-0.80573642253875732421875), SC_(-0.917873491512746130598510739795171676962) }, + { SC_(-0.804919183254241943359375), SC_(-0.9161942446913841771580833184012189161559) }, + { SC_(-0.780276477336883544921875), SC_(-0.867806431357551134410815525153998291827) }, + { SC_(-0.775070965290069580078125), SC_(-0.8580919924152284867224297625328485999768) }, + { SC_(-0.7496345043182373046875), SC_(-0.8127924290810407931222432768905514928867) }, + { SC_(-0.74820673465728759765625), SC_(-0.8103475955423936417307157186107256388648) }, + { SC_(-0.74602639675140380859375), SC_(-0.806632688757205819001462030577472890805) }, + { SC_(-0.72904598712921142578125), SC_(-0.7784313874823551106598826200232666844639) }, + { SC_(-0.7162272930145263671875), SC_(-0.7579355487144890063429377586715787838945) }, + { SC_(-0.701772034168243408203125), SC_(-0.7355614373173595299453301005770428516518) }, + { SC_(-0.68477380275726318359375), SC_(-0.7101588399949052872532446197423489724803) }, + { SC_(-0.657626628875732421875), SC_(-0.6713881533266128640126408255047881638389) }, + { SC_(-0.652269661426544189453125), SC_(-0.6639738263692763456669198307149427734317) }, + { SC_(-0.6262547969818115234375), SC_(-0.6289572925573171740836428308746584439674) }, + { SC_(-0.62323606014251708984375), SC_(-0.6249936843093662471116097431474787933967) }, + { SC_(-0.57958185672760009765625), SC_(-0.5697131213589784467617578394703976041604) }, + { SC_(-0.576151371002197265625), SC_(-0.5655172244109430153330195150336141500139) }, + { SC_(-0.5579319000244140625), SC_(-0.5435569422159360687847790186563654276103) }, + { SC_(-0.446154057979583740234375), SC_(-0.4186121208546731033057205459902879301199) }, + { SC_(-0.44300353527069091796875), SC_(-0.4152898953738801984047941692529271391195) }, + { SC_(-0.40594112873077392578125), SC_(-0.3768620801611051992528860948080812212023) }, + { SC_(-0.396173775196075439453125), SC_(-0.3669220210390825311547962776125822899061) }, + { SC_(-0.38366591930389404296875), SC_(-0.3542977152760563782151668726041057557165) }, + { SC_(-0.36689913272857666015625), SC_(-0.3375493847053488720470432821496358279516) }, + { SC_(-0.365801036357879638671875), SC_(-0.3364591774366710656954166264654945559873) }, + { SC_(-0.277411997318267822265625), SC_(-0.2510244067029671790889794981353227476998) }, + { SC_(-0.236883103847503662109375), SC_(-0.213115119330839975829499967157244997714) }, + { SC_(-0.215545952320098876953125), SC_(-0.1934073617841803428235669261097060281642) }, + { SC_(-0.202522933483123779296875), SC_(-0.1814532246720147926398927046057793150106) }, + { SC_(-0.18253767490386962890625), SC_(-0.1632073953550647568421821286058243218715) }, + { SC_(-0.156477451324462890625), SC_(-0.1395756320903277910768376053314442757507) }, + { SC_(-0.1558246612548828125), SC_(-0.1389857795955756484965030151195660030168) }, + { SC_(-0.12251126766204833984375), SC_(-0.109002961098867662134935094105847496074) }, + { SC_(-0.1088275909423828125), SC_(-0.09674694516640724629590870677194632943569) }, + { SC_(-0.08402168750762939453125), SC_(-0.07460044047654119877070700345343119035515) }, + { SC_(-0.05048263072967529296875), SC_(-0.04476895818328636312384562686715995170129) }, + { SC_(-0.029248714447021484375), SC_(-0.0259268064334840921104659134138093242797) }, + { SC_(-0.02486217021942138671875), SC_(-0.02203709146986755832638577823832075055744) }, + { SC_(-0.02047121524810791015625), SC_(-0.01814413302702029459097557481591610553903) }, + { SC_(-0.018821895122528076171875), SC_(-0.01668201759439857888105181293763417899072) }, + { SC_(0.0073254108428955078125), SC_(0.006492067534753215749601670217642082465642) }, + { SC_(0.09376299381256103515625), SC_(0.08328747254794857150987333986733043734817) }, + { SC_(0.0944411754608154296875), SC_(0.08389270963798942778622198997355058545872) }, + { SC_(0.264718532562255859375), SC_(0.2390787735821979528028028789569770109829) }, + { SC_(0.27952671051025390625), SC_(0.2530214201700340392837551955289041822603) }, + { SC_(0.29262602329254150390625), SC_(0.2654374523135675523971788948011709467352) }, + { SC_(0.3109557628631591796875), SC_(0.282950508503826367238408926581528085458) }, + { SC_(0.31148135662078857421875), SC_(0.2834552014554130441860525970673030809536) }, + { SC_(0.32721102237701416015625), SC_(0.2986277427848421570858990348074985028421) }, + { SC_(0.3574702739715576171875), SC_(0.3282140305634627092431945088114761850208) }, + { SC_(0.362719058990478515625), SC_(0.3334035993712283467959295804559099468454) }, + { SC_(0.3896572589874267578125), SC_(0.3603304982893212173104266596348905175268) }, + { SC_(0.4120922088623046875), SC_(0.3831602323665075533579267768785894144888) }, + { SC_(0.41872966289520263671875), SC_(0.3899906753567599452444107492361433402154) }, + { SC_(0.45167791843414306640625), SC_(0.4244594733907945411184647153213164209335) }, + { SC_(0.48129451274871826171875), SC_(0.4563258063707025027210352963461819167707) }, + { SC_(0.4862649440765380859375), SC_(0.4617640058971775089811390737537561779898) }, + { SC_(0.50937330722808837890625), SC_(0.4874174763856674076219106695373814892182) }, + { SC_(0.5154802799224853515625), SC_(0.4943041993872143888987628020569772222018) }, + { SC_(0.52750003337860107421875), SC_(0.5079978091910991117615000459548117088362) }, + { SC_(0.53103363513946533203125), SC_(0.5120597685873370942783226077302881881069) }, + { SC_(0.58441460132598876953125), SC_(0.5756584292527058478710392476034273328569) }, + { SC_(0.5879499912261962890625), SC_(0.5800336103175463592377907341030447077804) }, + { SC_(0.59039986133575439453125), SC_(0.5830784871670823806198622501806646778319) }, + { SC_(0.59455978870391845703125), SC_(0.588273673825686998734497652983815773459) }, + { SC_(0.59585726261138916015625), SC_(0.5899005483108011364541949539839185473259) }, + { SC_(0.5962116718292236328125), SC_(0.5903454775096607218832535637355431851718) }, + { SC_(0.6005609035491943359375), SC_(0.5958247243549040349587326482492767206448) }, + { SC_(0.6150619983673095703125), SC_(0.6143583249050861028039832921829036722514) }, + { SC_(0.62944734096527099609375), SC_(0.6331707263097125575937994856370309207836) }, + { SC_(0.64380657672882080078125), SC_(0.6524069265890823819975498133014027247554) }, + { SC_(0.6469156742095947265625), SC_(0.656635855345815020063728463464436343698) }, + { SC_(0.67001712322235107421875), SC_(0.6888269167957872563013714303376548038671) }, + { SC_(0.6982586383819580078125), SC_(0.7302336318927408409119676651737758401138) }, + { SC_(0.74485766887664794921875), SC_(0.8046505193013635090578266413458426260098) }, + { SC_(0.75686132907867431640625), SC_(0.8253191678260588578995203396384711816647) }, + { SC_(0.81158387660980224609375), SC_(0.9300427626888758122211127950646282789481) }, + { SC_(0.826751708984375), SC_(0.9629665092443368464606966822833571908852) }, + { SC_(0.83147108554840087890625), SC_(0.9736479209913771931387473923084901789046) }, + { SC_(0.84174954891204833984375), SC_(0.997713670556719074960678197806799852186) }, + { SC_(0.8679864406585693359375), SC_(1.065050516333636716777334376076374184102) }, + { SC_(0.90044414997100830078125), SC_(1.164612422633086435501625591693259387477) }, + { SC_(0.91433393955230712890625), SC_(1.215315881176612875682446995412738776976) }, + { SC_(0.91501367092132568359375), SC_(1.217962731073139868794942852653058932976) }, + { SC_(0.918984889984130859375), SC_(1.233778505900771488542027767896521427575) }, + { SC_(0.92977702617645263671875), SC_(1.28019542575660930623179572273596558907) }, + { SC_(0.93538987636566162109375), SC_(1.306695301483797253764522033930388453334) }, + { SC_(0.93773555755615234375), SC_(1.318335478463913327121670503572736587296) }, + { SC_(0.94118559360504150390625), SC_(1.33613349872692113073358883961598631154) }, + { SC_(0.96221935749053955078125), SC_(1.468821071545234761861756248744372345584) }, + { SC_(0.98576259613037109375), SC_(1.733272259459038694476413373595347034928) }, + { SC_(0.9881370067596435546875), SC_(1.77921769652839903464038407684397479173) }, + { SC_(0.99292266368865966796875), SC_(1.904368122482929779094714951471938518496) } + } }; +#undef SC_ + diff --git a/test/erf_large_data.ipp b/test/erf_large_data.ipp new file mode 100644 index 000000000..ef4ea8b3a --- /dev/null +++ b/test/erf_large_data.ipp @@ -0,0 +1,310 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 300> erf_large_data = { { + { SC_(8.2311115264892578125), SC_(0.9999999999999999999999999999997436415644), SC_(0.2563584356432915693836191701249115171878e-30) }, + { SC_(8.3800067901611328125), SC_(0.9999999999999999999999999999999787664373), SC_(0.212335626810981756102114466368867764939e-31) }, + { SC_(8.39224529266357421875), SC_(0.9999999999999999999999999999999827316301), SC_(0.1726836993826464997300336080711750877816e-31) }, + { SC_(8.66370105743408203125), SC_(0.9999999999999999999999999999999998367494), SC_(0.1632506054605993373182936619108145081694e-33) }, + { SC_(8.9759693145751953125), SC_(0.9999999999999999999999999999999999993611), SC_(0.6389109854135105643535885036658544645608e-36) }, + { SC_(9.1102085113525390625), SC_(0.9999999999999999999999999999999999999445), SC_(0.5554662272164108694298027082501260363284e-37) }, + { SC_(9.45745944976806640625), SC_(0.9999999999999999999999999999999999999999), SC_(0.8480477594433168680596946662186145070498e-40) }, + { SC_(10.61029338836669921875), SC_(1), SC_(0.6786472703144874611591306359565011820753e-50) }, + { SC_(10.8140201568603515625), SC_(1), SC_(0.8470069870191149998048954134093763207838e-52) }, + { SC_(10.82457828521728515625), SC_(1), SC_(0.6733586817565831939437647508350297170672e-52) }, + { SC_(10.9283580780029296875), SC_(1), SC_(0.6977670213613499261034444110870077646237e-53) }, + { SC_(10.98818302154541015625), SC_(1), SC_(0.1870385270398381154229086866501074415355e-53) }, + { SC_(11.31863117218017578125), SC_(1), SC_(0.1142544869245536263179923727458113771164e-56) }, + { SC_(11.69488239288330078125), SC_(1), SC_(0.1919907987324948057617154107998359393185e-60) }, + { SC_(11.78605365753173828125), SC_(1), SC_(0.2239752724414047638235296360419194553396e-61) }, + { SC_(12.1997470855712890625), SC_(1), SC_(0.1061491854672859805410277580039105082623e-65) }, + { SC_(12.4239101409912109375), SC_(1), SC_(0.4177140558891845034847722323657671701092e-68) }, + { SC_(13.54282093048095703125), SC_(1), SC_(0.9235451601555197945993611934762413642509e-81) }, + { SC_(14.22005176544189453125), SC_(1), SC_(0.6009313847910459672567608314935750835662e-89) }, + { SC_(14.22926807403564453125), SC_(1), SC_(0.4620339167397254212949689945484104460402e-89) }, + { SC_(14.359676361083984375), SC_(1), SC_(0.1100471801774583728133644248988374419641e-90) }, + { SC_(14.41039371490478515625), SC_(1), SC_(0.2548929323782609375991749296565683531577e-91) }, + { SC_(14.87335300445556640625), SC_(1), SC_(0.3198000452629152167848001696581299429735e-97) }, + { SC_(14.92373943328857421875), SC_(1), SC_(0.7101988862786309879894988884459001902733e-98) }, + { SC_(15.8191242218017578125), SC_(1), SC_(0.7438591168260150840237290305856485663443e-110) }, + { SC_(15.96480560302734375), SC_(1), SC_(0.7187861904421355163894524608883700422307e-112) }, + { SC_(15.99831295013427734375), SC_(1), SC_(0.2457896620902286177098546091913977024151e-112) }, + { SC_(16.7455272674560546875), SC_(1), SC_(0.5559992295828943910250640094814395579468e-123) }, + { SC_(17.008663177490234375), SC_(1), SC_(0.760237064211963037211163791564153667507e-127) }, + { SC_(17.2220897674560546875), SC_(1), SC_(0.5043169273534506801418127595237229711103e-130) }, + { SC_(17.757808685302734375), SC_(1), SC_(0.35565429074608249855471197796329792194e-138) }, + { SC_(17.802867889404296875), SC_(1), SC_(0.7145708921803004436285314631231014067581e-139) }, + { SC_(18.112152099609375), SC_(1), SC_(0.1053094819294519519788245447399920974245e-143) }, + { SC_(18.2649860382080078125), SC_(1), SC_(0.4020674492293458832133643654712400773494e-146) }, + { SC_(18.32352447509765625), SC_(1), SC_(0.4706809140073901333884996503518029500936e-147) }, + { SC_(18.4129180908203125), SC_(1), SC_(0.1755474923764976123532737166943228663005e-148) }, + { SC_(18.652309417724609375), SC_(1), SC_(0.2428091775485678872414439322587700295772e-152) }, + { SC_(18.9056758880615234375), SC_(1), SC_(0.1764835785229242910502507612159515936326e-156) }, + { SC_(19.1091136932373046875), SC_(1), SC_(0.7645206854732087495539968665185944859194e-160) }, + { SC_(19.1576213836669921875), SC_(1), SC_(0.1191626992794708978523133508616313098621e-160) }, + { SC_(19.31610870361328125), SC_(1), SC_(0.2657165206820982194424196529775105931442e-163) }, + { SC_(19.3672046661376953125), SC_(1), SC_(0.3671679040400985756060408739652361271147e-164) }, + { SC_(19.6346797943115234375), SC_(1), SC_(0.1067452532475426004914816798590685683097e-168) }, + { SC_(19.8862934112548828125), SC_(1), SC_(0.5060597273643268882175716699743699135461e-173) }, + { SC_(19.93419647216796875), SC_(1), SC_(0.7494327004502860500754429706601818608063e-174) }, + { SC_(20.2273464202880859375), SC_(1), SC_(0.5692529890798582547111055729709760376723e-179) }, + { SC_(20.242107391357421875), SC_(1), SC_(0.3130080167182599318145495989493729041355e-179) }, + { SC_(20.4949970245361328125), SC_(1), SC_(0.1037715327566096248596862690543722677311e-183) }, + { SC_(20.6639499664306640625), SC_(1), SC_(0.9828104968491392552509099594974133192176e-187) }, + { SC_(20.9242725372314453125), SC_(1), SC_(0.1928501126858728847552898327055431396084e-191) }, + { SC_(20.9607219696044921875), SC_(1), SC_(0.4182492638018175069922633264256087874033e-192) }, + { SC_(21.2989482879638671875), SC_(1), SC_(0.2552602767811562690060253249228934667833e-198) }, + { SC_(21.3341617584228515625), SC_(1), SC_(0.5679087385569991824361542895704294427451e-199) }, + { SC_(21.5831966400146484375), SC_(1), SC_(0.1280987506428470296014925421711821162698e-203) }, + { SC_(22.0373077392578125), SC_(1), SC_(0.3131661581007378806102060325912155502701e-212) }, + { SC_(22.2569446563720703125), SC_(1), SC_(0.1846614406013614928732974356509343390705e-216) }, + { SC_(22.9114551544189453125), SC_(1), SC_(0.2598259766741800523533570657530873506244e-229) }, + { SC_(23.0804386138916015625), SC_(1), SC_(0.108696918487531328017390687052866837422e-232) }, + { SC_(23.3235530853271484375), SC_(1), SC_(0.1355781333962075845012366321672254343728e-237) }, + { SC_(23.4473209381103515625), SC_(1), SC_(0.4129348514781646974836324488402049303682e-240) }, + { SC_(24.12081146240234375), SC_(1), SC_(0.4900590012091086604540120205982908317771e-254) }, + { SC_(24.3631992340087890625), SC_(1), SC_(0.382044899410099463972224844951303224334e-259) }, + { SC_(25.061580657958984375), SC_(1), SC_(0.379460392354870154626118964688104627376e-274) }, + { SC_(25.23714447021484375), SC_(1), SC_(0.5508622514289808668363975738198678197993e-278) }, + { SC_(25.3777942657470703125), SC_(1), SC_(0.4435055276360357438046878641441812378362e-281) }, + { SC_(25.813503265380859375), SC_(1), SC_(0.8969991006618404791166973289604328222239e-291) }, + { SC_(26.1247920989990234375), SC_(1), SC_(0.8433396822097075603573541828301520902564e-298) }, + { SC_(26.3525791168212890625), SC_(1), SC_(0.5380559555748413036380180439113786214843e-303) }, + { SC_(26.776111602783203125), SC_(1), SC_(0.8944111506115654515313274252719979616663e-313) }, + { SC_(26.8727970123291015625), SC_(1), SC_(0.4980346568584009068204868294049186460128e-315) }, + { SC_(27.6731243133544921875), SC_(1), SC_(0.5315985423107748521341095763480509306686e-334) }, + { SC_(27.6761074066162109375), SC_(1), SC_(0.4506400985060962000709584088621043872847e-334) }, + { SC_(27.96904754638671875), SC_(1), SC_(0.3715003445893695695072259525562685194324e-341) }, + { SC_(28.58887481689453125), SC_(1), SC_(0.2166518476138800933879816106005670654441e-356) }, + { SC_(28.742389678955078125), SC_(1), SC_(0.3244339622815072602163752228132919409512e-360) }, + { SC_(28.851139068603515625), SC_(1), SC_(0.6157273676049535809152624774082572414474e-363) }, + { SC_(28.9178009033203125), SC_(1), SC_(0.1305949729571576658796058283659336601413e-364) }, + { SC_(29.1156768798828125), SC_(1), SC_(0.1335911177834992334477211342269950231736e-369) }, + { SC_(29.3093738555908203125), SC_(1), SC_(0.1614718326165092385338896025176950706834e-374) }, + { SC_(29.5636444091796875), SC_(1), SC_(0.504780346276441675830815513402480460203e-381) }, + { SC_(29.631839752197265625), SC_(1), SC_(0.8890342529017924395163297463196226030207e-383) }, + { SC_(30.6340579986572265625), SC_(1), SC_(0.5049904008337056546410563604215235735623e-409) }, + { SC_(30.707683563232421875), SC_(1), SC_(0.5505904741434267060539220169867548888751e-411) }, + { SC_(30.8368549346923828125), SC_(1), SC_(0.1934000588075928658952471412237852868705e-414) }, + { SC_(31.179210662841796875), SC_(1), SC_(0.1150586385665917046799828457578881631925e-423) }, + { SC_(31.4387989044189453125), SC_(1), SC_(0.9951971607786623315295164065875436156955e-431) }, + { SC_(32.356414794921875), SC_(1), SC_(0.3647911693171115642349382796707730440408e-456) }, + { SC_(32.586200714111328125), SC_(1), SC_(0.1196854549366123742924784427293234502016e-462) }, + { SC_(32.75687408447265625), SC_(1), SC_(0.1707585732299349124939643284536648783473e-467) }, + { SC_(33.2696990966796875), SC_(1), SC_(0.3314340732586949021659796359200734182646e-482) }, + { SC_(33.519634246826171875), SC_(1), SC_(0.1851275204503437416978123025595612676848e-489) }, + { SC_(33.957134246826171875), SC_(1), SC_(0.276057351872287608387770565675906984022e-502) }, + { SC_(34.00215911865234375), SC_(1), SC_(0.1292839762753917184628820650991754160974e-503) }, + { SC_(35.2607574462890625), SC_(1), SC_(0.1723862426577913396207111099832970757108e-541) }, + { SC_(35.6440582275390625), SC_(1), SC_(0.2682942190174394220973041800979694793591e-553) }, + { SC_(35.898014068603515625), SC_(1), SC_(0.3427988522143486471852246306766064547166e-561) }, + { SC_(35.91162872314453125), SC_(1), SC_(0.128908321457486470920213918176837870702e-561) }, + { SC_(36.391139984130859375), SC_(1), SC_(0.1115677489279136454855597068297808612163e-576) }, + { SC_(36.69866943359375), SC_(1), SC_(0.1914841862056771258044968899947647500071e-586) }, + { SC_(36.778095245361328125), SC_(1), SC_(0.5580499602695800066261393252867262445483e-589) }, + { SC_(36.836078643798828125), SC_(1), SC_(0.7802735251877915942902082027097296754913e-591) }, + { SC_(36.926517486572265625), SC_(1), SC_(0.9862852517813094777393024048350874991345e-594) }, + { SC_(37.220302581787109375), SC_(1), SC_(0.3390210353535371981540883592991293306856e-603) }, + { SC_(37.62610626220703125), SC_(1), SC_(0.2161308855123068080619903224122596349173e-616) }, + { SC_(37.78128814697265625), SC_(1), SC_(0.1781872758239509973907000853718925676836e-621) }, + { SC_(39.196559906005859375), SC_(1), SC_(0.8334676760927633157297582502293215474801e-669) }, + { SC_(39.287792205810546875), SC_(1), SC_(0.6459479389166880954444837324458596842583e-672) }, + { SC_(39.3513031005859375), SC_(1), SC_(0.4369573452597126768250060965811055881436e-674) }, + { SC_(39.75826263427734375), SC_(1), SC_(0.4509483787208385166749854593762529916563e-688) }, + { SC_(39.86272430419921875), SC_(1), SC_(0.1098531610189679641881639506181744668225e-691) }, + { SC_(40.162616729736328125), SC_(1), SC_(0.4120302102977277191187506721340552814976e-702) }, + { SC_(40.170276641845703125), SC_(1), SC_(0.2226415732825465240782514517928537101293e-702) }, + { SC_(40.382472991943359375), SC_(1), SC_(0.8354572576931370443665770929403858031245e-710) }, + { SC_(40.696559906005859375), SC_(1), SC_(0.7225661474676652832663905782266313267167e-721) }, + { SC_(40.782176971435546875), SC_(1), SC_(0.673503764299797652470711537205502876345e-724) }, + { SC_(40.9482574462890625), SC_(1), SC_(0.8541553669484881480206884088881859451573e-730) }, + { SC_(41.145099639892578125), SC_(1), SC_(0.8156452609298646477772692892407567909292e-737) }, + { SC_(41.515956878662109375), SC_(1), SC_(0.3927474520057692651749738005168570105415e-750) }, + { SC_(41.838653564453125), SC_(1), SC_(0.8109391651273807861676399802649936141133e-762) }, + { SC_(42.584423065185546875), SC_(1), SC_(0.3614692055111044536160065200200925139014e-789) }, + { SC_(42.6111907958984375), SC_(1), SC_(0.3693115729392217140417024607374602650062e-790) }, + { SC_(42.6995391845703125), SC_(1), SC_(0.1964210029215776788610761375896332961826e-793) }, + { SC_(43.375934600830078125), SC_(1), SC_(0.1002957731076485676078330474511548731955e-818) }, + { SC_(43.761638641357421875), SC_(1), SC_(0.2518258316895643034341457105016197161517e-833) }, + { SC_(43.97068023681640625), SC_(1), SC_(0.2717687606713113972202367030042368252574e-841) }, + { SC_(43.977039337158203125), SC_(1), SC_(0.1553279441110419250099473836953698361303e-841) }, + { SC_(44.299617767333984375), SC_(1), SC_(0.662284188550331482050024128495832271562e-854) }, + { SC_(44.5380706787109375), SC_(1), SC_(0.4157106895546200361762199057481171702463e-863) }, + { SC_(44.7019195556640625), SC_(1), SC_(0.1849263581704522121134821381775513596569e-869) }, + { SC_(44.944408416748046875), SC_(1), SC_(0.6665835026232982550759602414166037648457e-879) }, + { SC_(45.39469146728515625), SC_(1), SC_(0.1423064152931413223321009373154837793895e-896) }, + { SC_(45.555110931396484375), SC_(1), SC_(0.6535595984749616464428461737502955522054e-903) }, + { SC_(45.922885894775390625), SC_(1), SC_(0.1587405585152606350596738044081514147077e-917) }, + { SC_(46.490032196044921875), SC_(1), SC_(0.2711887374954078187100515917478258475121e-940) }, + { SC_(46.700458526611328125), SC_(1), SC_(0.8220768482426773312423439218857395793096e-949) }, + { SC_(46.80968475341796875), SC_(1), SC_(0.300689768353676045411682389398910728652e-953) }, + { SC_(46.93021392822265625), SC_(1), SC_(0.3716830576798476782128277462132351948199e-958) }, + { SC_(47.80080413818359375), SC_(1), SC_(0.5560372820563731575239827056999357124531e-994) }, + { SC_(47.98065185546875), SC_(1), SC_(0.1829295366299049625367873244831792588204e-1001) }, + { SC_(48.160678863525390625), SC_(1), SC_(0.5544641890677600654790600067979757964649e-1009) }, + { SC_(48.228302001953125), SC_(1), SC_(0.8174825675757120829683639765764518487113e-1012) }, + { SC_(48.86585235595703125), SC_(1), SC_(0.1054147185420251960062940386161051253868e-1038) }, + { SC_(48.88062286376953125), SC_(1), SC_(0.2487429897424450019093445470126394812466e-1039) }, + { SC_(49.2615814208984375), SC_(1), SC_(0.1428662569339560177970591891033928074615e-1055) }, + { SC_(49.300342559814453125), SC_(1), SC_(0.3129115225209756198596637394420488168835e-1057) }, + { SC_(49.3912200927734375), SC_(1), SC_(0.3976507934443091883911509821945069748171e-1061) }, + { SC_(49.450878143310546875), SC_(1), SC_(0.1091595819414626077382205537328240830492e-1063) }, + { SC_(49.4884796142578125), SC_(1), SC_(0.2642659241845869227101266198364933762561e-1065) }, + { SC_(50.086460113525390625), SC_(1), SC_(0.3607878684331161959098857667661007215536e-1091) }, + { SC_(51.2444610595703125), SC_(1), SC_(0.3860548279363456071149897668546024070402e-1142) }, + { SC_(51.339717864990234375), SC_(1), SC_(0.2197789266327651540257336225175053590062e-1146) }, + { SC_(51.447040557861328125), SC_(1), SC_(0.354996685112096717011426990868690176895e-1151) }, + { SC_(51.52539825439453125), SC_(1), SC_(0.1110143282538327027879325761520351634781e-1154) }, + { SC_(51.782512664794921875), SC_(1), SC_(0.3217426516835935075931472670615112969831e-1166) }, + { SC_(52.144077301025390625), SC_(1), SC_(0.1532358547576965427522636443372608038782e-1182) }, + { SC_(52.820537567138671875), SC_(1), SC_(0.2202669107160275614166035168539425499729e-1213) }, + { SC_(52.8442840576171875), SC_(1), SC_(0.1790754358721238111167473370381879109436e-1214) }, + { SC_(52.871673583984375), SC_(1), SC_(0.9892522319813664639479190973985140674034e-1216) }, + { SC_(52.872089385986328125), SC_(1), SC_(0.9466912463849392521290423205053783831664e-1216) }, + { SC_(53.07733917236328125), SC_(1), SC_(0.3390908799279318246606852431264844551837e-1225) }, + { SC_(53.088535308837890625), SC_(1), SC_(0.1032764828225424213243462240852153489629e-1225) }, + { SC_(53.778041839599609375), SC_(1), SC_(0.1017002820918486891770554932818686415531e-1257) }, + { SC_(54.0477142333984375), SC_(1), SC_(0.2381751287333891734284837295419122638673e-1270) }, + { SC_(54.561374664306640625), SC_(1), SC_(0.139407502357667351124920158334676469294e-1294) }, + { SC_(54.6435394287109375), SC_(1), SC_(0.1765212687763302697244562949068373410255e-1298) }, + { SC_(55.047882080078125), SC_(1), SC_(0.9580050759351008955877580245822791128101e-1318) }, + { SC_(55.53577423095703125), SC_(1), SC_(0.3516341067901357169932495766343569323525e-1341) }, + { SC_(55.63845062255859375), SC_(1), SC_(0.3871072763485538347396913418646976027199e-1346) }, + { SC_(55.9916534423828125), SC_(1), SC_(0.289528812850324808187999318666603687985e-1363) }, + { SC_(55.991954803466796875), SC_(1), SC_(0.2799194648396030874187262104833020570154e-1363) }, + { SC_(56.6115570068359375), SC_(1), SC_(0.138610665425682272373334040969461433112e-1393) }, + { SC_(56.749294281005859375), SC_(1), SC_(0.2289081242224445766088406090902886148302e-1400) }, + { SC_(57.362518310546875), SC_(1), SC_(0.9220583307012274413074526609845212209396e-1431) }, + { SC_(57.5469818115234375), SC_(1), SC_(0.5725247795522802723716771177781160453318e-1440) }, + { SC_(58.515666961669921875), SC_(1), SC_(0.8387169924209196731842556332538391198272e-1489) }, + { SC_(58.8695220947265625), SC_(1), SC_(0.7612989272837028720721864253441810819973e-1507) }, + { SC_(59.008518218994140625), SC_(1), SC_(0.5818271285898335632169611265925278206909e-1514) }, + { SC_(59.44551849365234375), SC_(1), SC_(0.1907993812890002855694347258421797523393e-1536) }, + { SC_(59.853458404541015625), SC_(1), SC_(0.1386369169907035409186787094207373016361e-1557) }, + { SC_(60.46059417724609375), SC_(1), SC_(0.2591809034926289626577001708586017024727e-1589) }, + { SC_(60.804798126220703125), SC_(1), SC_(0.1921652566797868246807189497430043640543e-1607) }, + { SC_(60.9976654052734375), SC_(1), SC_(0.1202209001001935503022907284085976927471e-1617) }, + { SC_(61.63448333740234375), SC_(1), SC_(0.1443858912194400214601650177255810967138e-1651) }, + { SC_(61.718036651611328125), SC_(1), SC_(0.4818094804505875544021186960960583940739e-1656) }, + { SC_(61.749187469482421875), SC_(1), SC_(0.1028760000725124920333886117069810603088e-1657) }, + { SC_(61.7707366943359375), SC_(1), SC_(0.7180844057437257539436486908675040497688e-1659) }, + { SC_(62.129795074462890625), SC_(1), SC_(0.3411714823101512343643373517899997588934e-1678) }, + { SC_(62.415653228759765625), SC_(1), SC_(0.1172420264374634693794507306774825437228e-1693) }, + { SC_(63.656280517578125), SC_(1), SC_(0.1359202639129155863922014558394013590937e-1761) }, + { SC_(63.720615386962890625), SC_(1), SC_(0.3748863560151785919817454048142060747672e-1765) }, + { SC_(63.735622406005859375), SC_(1), SC_(0.5534848650018337136859100029355185261672e-1766) }, + { SC_(63.745220184326171875), SC_(1), SC_(0.1628046476475599666226420695090084595775e-1766) }, + { SC_(63.783538818359375), SC_(1), SC_(0.1227798051543007555849422132322321585877e-1768) }, + { SC_(63.87148284912109375), SC_(1), SC_(0.1632762187944705003794943454328122376037e-1773) }, + { SC_(64.515594482421875), SC_(1), SC_(0.1969332977981314849672526645022956975392e-1809) }, + { SC_(64.97594451904296875), SC_(1), SC_(0.2525310788037616742275863982689138714012e-1835) }, + { SC_(65.00909423828125), SC_(1), SC_(0.3394161846767033496272256639147831568993e-1837) }, + { SC_(65.32428741455078125), SC_(1), SC_(0.4872272181442093260036099253187279262469e-1855) }, + { SC_(65.8734893798828125), SC_(1), SC_(0.2462682463022898342795255163765824211512e-1886) }, + { SC_(65.895782470703125), SC_(1), SC_(0.1304674583839710679197974600800374601509e-1887) }, + { SC_(66.16791534423828125), SC_(1), SC_(0.3203747642032728309060331250397804757235e-1903) }, + { SC_(66.27771759033203125), SC_(1), SC_(0.1545497931044982506797819622759819541777e-1909) }, + { SC_(66.7202606201171875), SC_(1), SC_(0.4214693722661996667087731543216442503726e-1935) }, + { SC_(67.0804595947265625), SC_(1), SC_(0.4916509034440560388255363947533037583151e-1956) }, + { SC_(67.51879119873046875), SC_(1), SC_(0.1163704950246886518963746466814171576513e-1981) }, + { SC_(67.61028289794921875), SC_(1), SC_(0.4965812608096806464498341746692252789426e-1987) }, + { SC_(68.0894927978515625), SC_(1), SC_(0.2827017688141873952389885023460208246821e-2015) }, + { SC_(68.7330780029296875), SC_(1), SC_(0.1601703792022999521045114304499339964142e-2053) }, + { SC_(68.936859130859375), SC_(1), SC_(0.1045603435996106684348791239772064284538e-2065) }, + { SC_(69.3484344482421875), SC_(1), SC_(0.1990640753018030347229172891391208563692e-2090) }, + { SC_(69.4951629638671875), SC_(1), SC_(0.2821572392833612189407917583240153887473e-2099) }, + { SC_(69.6038970947265625), SC_(1), SC_(0.7606563437817722315286512269995042517896e-2106) }, + { SC_(69.8057861328125), SC_(1), SC_(0.4535113025492646420574078398459972783487e-2118) }, + { SC_(69.884307861328125), SC_(1), SC_(0.7806399428418380776194369203828958230443e-2123) }, + { SC_(70.090423583984375), SC_(1), SC_(0.2297973354469257356841567122165370429556e-2135) }, + { SC_(70.1346893310546875), SC_(1), SC_(0.4627340318338513849654024935557448249929e-2138) }, + { SC_(70.4619598388671875), SC_(1), SC_(0.4786946947734960725308155565435423870322e-2158) }, + { SC_(70.51854705810546875), SC_(1), SC_(0.1640745397943748179034151831339364278733e-2161) }, + { SC_(70.62750244140625), SC_(1), SC_(0.3431785975089560474469843416846358607766e-2168) }, + { SC_(70.77237701416015625), SC_(1), SC_(0.4345108777332364055904822498668881910844e-2177) }, + { SC_(71.46120452880859375), SC_(1), SC_(0.1213533316440842841172645481517647701339e-2219) }, + { SC_(71.54265594482421875), SC_(1), SC_(0.1059138463142173993761026331012035279463e-2224) }, + { SC_(71.8696136474609375), SC_(1), SC_(0.4560525021368102193256510775118687007107e-2245) }, + { SC_(71.89171600341796875), SC_(1), SC_(0.1900755308625425801959286367021480241643e-2246) }, + { SC_(72.96099853515625), SC_(1), SC_(0.1012288958237199779078623773782261227323e-2313) }, + { SC_(73.07500457763671875), SC_(1), SC_(0.5943790030417452214269807905148252301626e-2321) }, + { SC_(73.10594940185546875), SC_(1), SC_(0.6446581210317819300626283182106697992806e-2323) }, + { SC_(73.1313323974609375), SC_(1), SC_(0.1574358163400440570765391931676616457296e-2324) }, + { SC_(73.20639801025390625), SC_(1), SC_(0.2666631324666853271144728061565555980879e-2329) }, + { SC_(73.376953125), SC_(1), SC_(0.3692800481745944696527608913821150780197e-2340) }, + { SC_(73.430145263671875), SC_(1), SC_(0.1498451636616422925337939153598716367853e-2343) }, + { SC_(73.44467926025390625), SC_(1), SC_(0.1772057595578452829782717746213217866987e-2344) }, + { SC_(73.60561370849609375), SC_(1), SC_(0.9327165682410597575108877219484860075423e-2355) }, + { SC_(73.62299346923828125), SC_(1), SC_(0.7217309662507557984084259593722358671817e-2356) }, + { SC_(73.77313995361328125), SC_(1), SC_(0.1762441226759232140980568288616069877708e-2365) }, + { SC_(74.2175445556640625), SC_(1), SC_(0.4796668342626380739003100430828430758387e-2394) }, + { SC_(74.27039337158203125), SC_(1), SC_(0.1873022555292045249630763229328993092174e-2397) }, + { SC_(74.39823150634765625), SC_(1), SC_(0.1041846943079459800746159253005438318555e-2405) }, + { SC_(74.77135467529296875), SC_(1), SC_(0.6972625788619583784396293640501867635862e-2430) }, + { SC_(74.807342529296875), SC_(1), SC_(0.320164469944205443450167902957404361688e-2432) }, + { SC_(75.01886749267578125), SC_(1), SC_(0.5501656655265385463409067358984172337294e-2446) }, + { SC_(75.3089447021484375), SC_(1), SC_(0.6319468915000774061299279774718180641493e-2465) }, + { SC_(75.34217071533203125), SC_(1), SC_(0.4232650489503930895532015931831887522867e-2467) }, + { SC_(75.3960723876953125), SC_(1), SC_(0.1252103871082113384792176510455204354046e-2470) }, + { SC_(75.45360565185546875), SC_(1), SC_(0.2128736422560450047027718674310538561411e-2474) }, + { SC_(75.5235443115234375), SC_(1), SC_(0.5520057148754538352100449496414500231534e-2479) }, + { SC_(75.7169952392578125), SC_(1), SC_(0.1082452065927623584648516750055819887681e-2491) }, + { SC_(76.1279449462890625), SC_(1), SC_(0.8546877316832444989935075245988734481682e-2519) }, + { SC_(76.470703125), SC_(1), SC_(0.1638058714171406332549731275799690588823e-2541) }, + { SC_(76.938812255859375), SC_(1), SC_(0.1056702363179452330608841676726809135679e-2572) }, + { SC_(77.5743560791015625), SC_(1), SC_(0.2358904373500824632540699420486265405702e-2615) }, + { SC_(77.62860107421875), SC_(1), SC_(0.5201021650937707207333604556951161883551e-2619) }, + { SC_(77.94854736328125), SC_(1), SC_(0.1249443652740786709208083871965551047597e-2640) }, + { SC_(78.06497955322265625), SC_(1), SC_(0.1611056496774920949293225513029265281761e-2648) }, + { SC_(78.1817626953125), SC_(1), SC_(0.1913800020341339537443259258588625217145e-2656) }, + { SC_(78.7396087646484375), SC_(1), SC_(0.1826214635685593066183737049160168091905e-2694) }, + { SC_(79.23296356201171875), SC_(1), SC_(0.2578910365673578199346966028090255709301e-2728) }, + { SC_(79.28195953369140625), SC_(1), SC_(0.1091891461191934352451814384442219402849e-2731) }, + { SC_(79.53916168212890625), SC_(1), SC_(0.1977970219864078402856631374181827871126e-2749) }, + { SC_(79.89411163330078125), SC_(1), SC_(0.5214347553208988003055180927464712623108e-2774) }, + { SC_(80.03131103515625), SC_(1), SC_(0.1539244869801023794218894091743149755693e-2783) }, + { SC_(81.0540618896484375), SC_(1), SC_(0.4282424762803665933789596667679893825473e-2855) }, + { SC_(82.27494049072265625), SC_(1), SC_(0.1058661602699748027888078315752637932386e-2941) }, + { SC_(82.40390777587890625), SC_(1), SC_(0.6316127985700229083559360532999075433841e-2951) }, + { SC_(82.67310333251953125), SC_(1), SC_(0.3161239679691280797883924212187842089968e-2970) }, + { SC_(82.83135223388671875), SC_(1), SC_(0.1331877990458538379342065811181569680933e-2981) }, + { SC_(82.8936614990234375), SC_(1), SC_(0.4360382415173864210795784221294622630074e-2986) }, + { SC_(82.896820068359375), SC_(1), SC_(0.2582766043573584963841163098015327607626e-2986) }, + { SC_(83.0903167724609375), SC_(1), SC_(0.290013476198442869046820654577037968453e-3000) }, + { SC_(83.20987701416015625), SC_(1), SC_(0.6710637821460133939254155513062400075894e-3009) }, + { SC_(83.5117340087890625), SC_(1), SC_(0.930787700439063954052855467933526662801e-3031) }, + { SC_(84.054412841796875), SC_(1), SC_(0.2976066148553277399257428533933691648135e-3070) }, + { SC_(84.19962310791015625), SC_(1), SC_(0.7279769443639285050812101610482378417998e-3081) }, + { SC_(84.58744049072265625), SC_(1), SC_(0.2702912324282395041651536403393819660776e-3109) }, + { SC_(84.58887481689453125), SC_(1), SC_(0.2120514736394887571017949592511629200089e-3109) }, + { SC_(85.08606719970703125), SC_(1), SC_(0.4856698297979953595767807992015152776328e-3146) }, + { SC_(85.918212890625), SC_(1), SC_(0.761735048565653930137023626638747177308e-3208) }, + { SC_(86.31143951416015625), SC_(1), SC_(0.2931592864000316245471343335876130048243e-3237) }, + { SC_(86.48769378662109375), SC_(1), SC_(0.1734166482219001810675374526329398742724e-3250) }, + { SC_(86.51556396484375), SC_(1), SC_(0.1396184688760208541263525791606580135888e-3252) }, + { SC_(86.661895751953125), SC_(1), SC_(0.137591974249259342744647335702120081949e-3263) }, + { SC_(86.67838287353515625), SC_(1), SC_(0.7894924978682044731133080698270675959047e-3265) }, + { SC_(86.699005126953125), SC_(1), SC_(0.2210314800408904240090566206375166498669e-3266) }, + { SC_(86.875640869140625), SC_(1), SC_(0.1067393543048809336522125654614257792709e-3279) }, + { SC_(87.12085723876953125), SC_(1), SC_(0.3141588749441732230579799060940491765735e-3298) }, + { SC_(87.1272430419921875), SC_(1), SC_(0.1032456874487975042510718930756313489085e-3298) }, + { SC_(87.350982666015625), SC_(1), SC_(0.1145259102841530225822158676931062199611e-3315) }, + { SC_(87.4471588134765625), SC_(1), SC_(0.5719031848650119145301950377270835213481e-3323) }, + { SC_(87.5886077880859375), SC_(1), SC_(0.100944910275613191627060617308017176992e-3333) }, + { SC_(88.114166259765625), SC_(1), SC_(0.790369642782630853434920273428079682513e-3374) }, + { SC_(88.35390472412109375), SC_(1), SC_(0.3336629458423611349557710086599109785783e-3392) }, + { SC_(88.45099639892578125), SC_(1), SC_(0.1168446033182320025804519666787072055362e-3399) }, + { SC_(88.55356597900390625), SC_(1), SC_(0.1521829146954713302263784465478849666514e-3407) }, + { SC_(88.97168731689453125), SC_(1), SC_(0.8788241912132849825702219058327694185942e-3440) }, + { SC_(89.04711151123046875), SC_(1), SC_(0.129507473240771950228590714535613326805e-3445) }, + { SC_(89.05876922607421875), SC_(1), SC_(0.1623712240263443145358629211111315306735e-3446) }, + { SC_(89.41626739501953125), SC_(1), SC_(0.3153753084460525420724595238130726065242e-3474) }, + { SC_(89.51361846923828125), SC_(1), SC_(0.8577730193641580987437405819558340102121e-3482) }, + { SC_(89.68304443359375), SC_(1), SC_(0.5586301300368715269248196410139332100555e-3495) }, + { SC_(89.70983123779296875), SC_(1), SC_(0.4571434971968977143179977283713339395878e-3497) } + } }; +#undef SC_ + diff --git a/test/erf_small_data.ipp b/test/erf_small_data.ipp new file mode 100644 index 000000000..f05d8ee44 --- /dev/null +++ b/test/erf_small_data.ipp @@ -0,0 +1,162 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 150> erf_small_data = { { + { SC_(0), SC_(0), SC_(1) }, + { SC_(0.140129846432481707092372958328991613128e-44), SC_(0.1581195994027057927040695988659415347357e-44), SC_(1) }, + { SC_(0.2802596928649634141847459166579832262561e-44), SC_(0.3162391988054115854081391977318830694715e-44), SC_(1) }, + { SC_(0.4203895392974451212771188749869748393841e-44), SC_(0.4743587982081173781122087965978246042072e-44), SC_(1) }, + { SC_(0.8407790785948902425542377499739496787682e-44), SC_(0.9487175964162347562244175931956492084145e-44), SC_(1) }, + { SC_(0.1541428310757298778016102541618907744408e-43), SC_(0.1739315593429763719744765587525356882093e-43), SC_(1) }, + { SC_(0.3222986467947079263124578041566807101945e-43), SC_(0.3636750786262233232193600773916655298922e-43), SC_(1) }, + { SC_(0.7426881860921530475895766791436555495785e-43), SC_(0.8380338768343407013315688739894901340994e-43), SC_(1) }, + { SC_(0.105097384824361280319279718746743709846e-42), SC_(0.1185896995520293445280521991494561510518e-42), SC_(1) }, + { SC_(0.210194769648722560638559437493487419692e-42), SC_(0.2371793991040586890561043982989123021036e-42), SC_(1) }, + { SC_(0.4666323886201640846176019512355420717163e-42), SC_(0.52653826601101028970455176422358531067e-42), SC_(1) }, + { SC_(0.1223333559355565302916415926212096782608e-41), SC_(0.1380384102785621570306527598099669598243e-41), SC_(1) }, + { SC_(0.2578389174357663410499662433253445681556e-41), SC_(0.2909400629009786585754880619133324239138e-41), SC_(1) }, + { SC_(0.2960943655118338470861840609491592785395e-41), SC_(0.3341067135379173399836990624037344628966e-41), SC_(1) }, + { SC_(0.7557202618103738463491673642682517695994e-41), SC_(0.8527389995787923400530473466840226968299e-41), SC_(1) }, + { SC_(0.1465898323530191137893313517079581264932e-40), SC_(0.1654089129351705297477272073736614394871e-40), SC_(1) }, + { SC_(0.4298903428855673810179817615616804707542e-40), SC_(0.4850793070476208308575447154009354402623e-40), SC_(1) }, + { SC_(0.4803791265551905400833637384476161489642e-40), SC_(0.5420497987124157279688209918723341752276e-40), SC_(0.9999999999999999999999999999999999999999) }, + { SC_(0.1055289847513733239771242274583970040145e-39), SC_(0.1190767079181896783695807335139632509788e-39), SC_(0.9999999999999999999999999999999999999999) }, + { SC_(0.2015109230653016692500450852658398094265e-39), SC_(0.227380727529073011082233205257189905196e-39), SC_(0.9999999999999999999999999999999999999998) }, + { SC_(0.7325049501519046019351739362618877290525e-39), SC_(0.8265433255457460713757641362399021627702e-39), SC_(0.9999999999999999999999999999999999999992) }, + { SC_(0.1339665153968418641693291185028075750078e-38), SC_(0.1511650250621765838235665056990208282135e-38), SC_(0.9999999999999999999999999999999999999985) }, + { SC_(0.2677046191439987831560976690835388936862e-38), SC_(0.3020723151773267572050253779518901717253e-38), SC_(0.999999999999999999999999999999999999997) }, + { SC_(0.4980653348629733537806134066371931674319e-38), SC_(0.5620065477118294341833797281540012541512e-38), SC_(0.9999999999999999999999999999999999999944) }, + { SC_(0.6613229117999040042200470598735932013487e-38), SC_(0.7462229963979548044442924939647721094874e-38), SC_(0.9999999999999999999999999999999999999925) }, + { SC_(0.1548242965319156795913711730955404935546e-37), SC_(0.1747005107668316705149757196187806484869e-37), SC_(0.9999999999999999999999999999999999999825) }, + { SC_(0.4146556501891822617936303213288858289615e-37), SC_(0.4678887971919177014040265951235884621123e-37), SC_(0.9999999999999999999999999999999999999532) }, + { SC_(0.9169899847717825977881300331923883942907e-37), SC_(0.1034712395251710806479818721979201078743e-36), SC_(0.9999999999999999999999999999999999998965) }, + { SC_(0.1401743180405455194869357938110469019064e-36), SC_(0.1581697802387722354144421623938376299412e-36), SC_(0.9999999999999999999999999999999999998418) }, + { SC_(0.1945576912957096415426581064633919119024e-36), SC_(0.2195348456562787018647206880870297955178e-36), SC_(0.9999999999999999999999999999999999997805) }, + { SC_(0.6257788193068770148365547155357311502081e-36), SC_(0.7061157829155071490944174116544753093472e-36), SC_(0.9999999999999999999999999999999999992939) }, + { SC_(0.1082390914972224343528760935165450352846e-35), SC_(0.1221347359108108275138920730258033965505e-35), SC_(0.9999999999999999999999999999999999987787) }, + { SC_(0.1694061057766321374547939115222498639949e-35), SC_(0.1911543205371304725231209426978241547223e-35), SC_(0.9999999999999999999999999999999999980885) }, + { SC_(0.4157476136990655326859281227151399960547e-35), SC_(0.469120946067698479126142569921586497913e-35), SC_(0.9999999999999999999999999999999999953088) }, + { SC_(0.7283681265086265937666854409047925692044e-35), SC_(0.8218754199287230086952619241467251109843e-35), SC_(0.9999999999999999999999999999999999917812) }, + { SC_(0.2125163494676521664376074827660149555726e-34), SC_(0.2397990214064882285432839461962890817645e-34), SC_(0.9999999999999999999999999999999999760201) }, + { SC_(0.2530711628583540298128114059620192234547e-34), SC_(0.2855602279620023372947687038386988804286e-34), SC_(0.999999999999999999999999999999999971444) }, + { SC_(0.8643572969601960480494638860332170085101e-34), SC_(0.9753227668168746390533409248013332505622e-34), SC_(0.9999999999999999999999999999999999024677) }, + { SC_(0.99805657801365854084424590887058919672e-34), SC_(0.1126186250213249491600342719979975982704e-33), SC_(0.9999999999999999999999999999999998873814) }, + { SC_(0.2285833483419143806137872349711124495646e-33), SC_(0.2579286882139527639322447178720013355598e-33), SC_(0.9999999999999999999999999999999997420713) }, + { SC_(0.5426235288674262982106993151912976763677e-33), SC_(0.6122850855498543097076270518307709592481e-33), SC_(0.9999999999999999999999999999999993877149) }, + { SC_(0.1147672787261224070426617104882286355311e-32), SC_(0.1295010063788005409890233863705470341395e-32), SC_(0.9999999999999999999999999999999987049899) }, + { SC_(0.22463880715206230259705675341401055879e-32), SC_(0.2534777501115735340046251758622995828684e-32), SC_(0.9999999999999999999999999999999974652225) }, + { SC_(0.4454556413592197901478916560693101385393e-32), SC_(0.5026428655749137894397761320610666694693e-32), SC_(0.9999999999999999999999999999999949735713) }, + { SC_(0.9167850888743889506336831720594191266931e-32), SC_(0.1034481194989668475298051221951978796736e-31), SC_(0.9999999999999999999999999999999896551881) }, + { SC_(0.2029237383788489473978179376606301463249e-31), SC_(0.2289749188958332742407712486623796907403e-31), SC_(0.9999999999999999999999999999999771025081) }, + { SC_(0.4422489809322529014977160404510081439987e-31), SC_(0.4990245367531747508971186530942781923233e-31), SC_(0.9999999999999999999999999999999500975463) }, + { SC_(0.8427819595678069227982621602322463722706e-31), SC_(0.9509776055802459297555061290310693509558e-31), SC_(0.9999999999999999999999999999999049022394) }, + { SC_(0.1894128825516700180187896525548839017318e-30), SC_(0.2137295506508135613325177084306249463745e-30), SC_(0.9999999999999999999999999999997862704493) }, + { SC_(0.3460509137323572130893969054757060828136e-30), SC_(0.390476641809958306521950254784930239331e-30), SC_(0.9999999999999999999999999999996095233582) }, + { SC_(0.7129452701155289322465925784842836259778e-30), SC_(0.8044725900776457681286359991257189545736e-30), SC_(0.9999999999999999999999999999991955274099) }, + { SC_(0.1006606281422698106765835646474453774524e-29), SC_(0.1135833557424855221443633868642206855925e-29), SC_(0.9999999999999999999999999999988641664426) }, + { SC_(0.2691237328241499384996035977623006944895e-29), SC_(0.3036736134897495655058606838487828118587e-29), SC_(0.9999999999999999999999999999969632638651) }, + { SC_(0.53002073552022827485063776974422846038e-29), SC_(0.5980643560896661370936819930965482836573e-29), SC_(0.9999999999999999999999999999940193564391) }, + { SC_(0.6328674258047448903166407618549998992304e-29), SC_(0.7141144188114391407566450273134713579864e-29), SC_(0.9999999999999999999999999999928588558119) }, + { SC_(0.2089027321727668921272023434652731888509e-28), SC_(0.2357214909330836434674323280791160963504e-28), SC_(0.9999999999999999999999999999764278509067) }, + { SC_(0.431842364003957104364921550167833797347e-28), SC_(0.4872819270113422778304421472654534392263e-28), SC_(0.9999999999999999999999999999512718072989) }, + { SC_(0.5869689191576790243963724295243864109357e-28), SC_(0.6623235001100951114675477389355052037517e-28), SC_(0.999999999999999999999999999933767649989) }, + { SC_(0.1659976352436858066871624892515432120194e-27), SC_(0.1873082733960948939621836113363260997334e-27), SC_(0.9999999999999999999999999998126917266039) }, + { SC_(0.2259797844707783785531125574841037632032e-27), SC_(0.2549908809815603534966750948985043565705e-27), SC_(0.9999999999999999999999999997450091190184) }, + { SC_(0.5880869455645201196495195879197812435557e-27), SC_(0.6635850578158372552104628507822996913944e-27), SC_(0.9999999999999999999999999993364149421842) }, + { SC_(0.1210368873588132831231840717009055000898e-26), SC_(0.136575502145771107167093316323928936418e-26), SC_(0.9999999999999999999999999986342449785423) }, + { SC_(0.2865917801972336300962667874631175760926e-26), SC_(0.3233841942353746978165316543252271930097e-26), SC_(0.9999999999999999999999999967661580576463) }, + { SC_(0.6332274308614525819994844546119106938273e-26), SC_(0.7145206410174771386698068058159747695855e-26), SC_(0.9999999999999999999999999928547935898252) }, + { SC_(0.1017015117562076843891927280903461796905e-25), SC_(0.1147578671278241071470420542046720634233e-25), SC_(0.9999999999999999999999999885242132872176) }, + { SC_(0.1732407881343339865174865944566931617746e-25), SC_(0.1954812962219899413849001377507194449177e-25), SC_(0.999999999999999999999999980451870377801) }, + { SC_(0.4851304131156321593400980501390172514877e-25), SC_(0.5474110514841189450665720204629142546924e-25), SC_(0.9999999999999999999999999452588948515881) }, + { SC_(0.8195642344688286703600152101217105477795e-25), SC_(0.9247792082712082720339044529059539700692e-25), SC_(0.9999999999999999999999999075220791728792) }, + { SC_(0.1869609713097047478340985963996916097412e-24), SC_(0.2109628650858126659649010477127478351642e-24), SC_(0.9999999999999999999999997890371349141873) }, + { SC_(0.2530783866565756141965447805546793991855e-24), SC_(0.2855683791454228747266674274313813542172e-24), SC_(0.9999999999999999999999997144316208545771) }, + { SC_(0.4209414052294289885709092151366397306124e-24), SC_(0.474981512228797723082223866616547403578e-24), SC_(0.9999999999999999999999995250184877712023) }, + { SC_(0.1448614172287997697834930368987483835595e-23), SC_(0.1634586053169086194558576878083327447891e-23), SC_(0.9999999999999999999999983654139468309138) }, + { SC_(0.3012998612797836509437815728233749567808e-23), SC_(0.3399804865168757552575507775525287643073e-23), SC_(0.9999999999999999999999966001951348312424) }, + { SC_(0.415276141474016400714459480565419005095e-23), SC_(0.4685889466310888715323687240479993998499e-23), SC_(0.9999999999999999999999953141105336891113) }, + { SC_(0.1204931390183540503963647385927016736362e-22), SC_(0.1359619478462541509417967524360939547446e-22), SC_(0.9999999999999999999999864038052153745849) }, + { SC_(0.1993117661558407300079387840940773127252e-22), SC_(0.2248992446872631349043635494217604899453e-22), SC_(0.9999999999999999999999775100755312736865) }, + { SC_(0.5135333031694984418963713908106404060216e-22), SC_(0.5794602809062059992419407432753169472345e-22), SC_(0.9999999999999999999999420539719093794001) }, + { SC_(0.899483690375495720736892890190099236758e-22), SC_(0.1014958657361899781022539075381620547142e-21), SC_(0.9999999999999999999998985041342638100219) }, + { SC_(0.1495718898928958003798630318006718936674e-21), SC_(0.1687738045382474786366114844967457859701e-21), SC_(0.9999999999999999999998312261954617525214) }, + { SC_(0.4004143349189545415674843981449458618638e-21), SC_(0.4518191937289535418778128853745495698362e-21), SC_(0.9999999999999999999995481808062710464581) }, + { SC_(0.6027338573124474618509081343250763374009e-21), SC_(0.6801123278944849878208640332552941589305e-21), SC_(0.9999999999999999999993198876721055150122) }, + { SC_(0.1659584418309930229572620634728719046791e-20), SC_(0.1872640483657249799664013537449399617766e-20), SC_(0.9999999999999999999981273595163427502003) }, + { SC_(0.2678244821868696143277384944057090132574e-20), SC_(0.3022075661378068793988187051769889525453e-20), SC_(0.999999999999999999996977924338621931206) }, + { SC_(0.5242169890349582687359968492107897830579e-20), SC_(0.5915155294645836590589096407129433743023e-20), SC_(0.9999999999999999999940848447053541634094) }, + { SC_(0.7847303335957885127235572164487720225878e-20), SC_(0.8854733602173995706713015709887803225844e-20), SC_(0.9999999999999999999911452663978260042933) }, + { SC_(0.1543123850410999503479436223765675073594e-19), SC_(0.1741228805051983958166845695046398116561e-19), SC_(0.9999999999999999999825877119494801604183) }, + { SC_(0.4775181844358503128246959748559596903306e-19), SC_(0.5388215712266861317995086503415856707862e-19), SC_(0.99999999999999999994611784287733138682) }, + { SC_(0.6230335359741914917030257154567651767252e-19), SC_(0.7030180623951302655508677093605170542092e-19), SC_(0.9999999999999999999296981937604869734449) }, + { SC_(0.1333737877121347004096484859664295541393e-18), SC_(0.1504962034909922627946995932175931040167e-18), SC_(0.9999999999999999998495037965090077372053) }, + { SC_(0.272678641362033605222928850375652132243e-18), SC_(0.3076848982248274637704507517821273969355e-18), SC_(0.9999999999999999996923151017751725362295) }, + { SC_(0.7848472665613653936552990969532928033914e-18), SC_(0.885605304939703219820034216816760452174e-18), SC_(0.99999999999999999911439469506029678018) }, + { SC_(0.1596567770068200412154901801642381542479e-17), SC_(0.180153381060109581137526939833213468117e-17), SC_(0.9999999999999999981984661893989041886247) }, + { SC_(0.3449535060248237706634344412748305330751e-17), SC_(0.3892383498149675248979402679995676281369e-17), SC_(0.9999999999999999961076165018503247510206) }, + { SC_(0.4351665680924082666098176574998035448516e-17), SC_(0.4910328896519242978931639720387530850973e-17), SC_(0.9999999999999999950896711034807570210684) }, + { SC_(0.9245716998221635790720235315021113819967e-17), SC_(0.1043267444565415210292590191714661224142e-16), SC_(0.9999999999999999895673255543458478970741) }, + { SC_(0.2517825949792599072966925444205799067277e-16), SC_(0.2841062348118440801806623646517627970916e-16), SC_(0.9999999999999999715893765188155919819338) }, + { SC_(0.3607757836945135819072677518803970997396e-16), SC_(0.4070918783134460417227759258926655100437e-16), SC_(0.9999999999999999592908121686553958277224) }, + { SC_(0.6902950590186084176697045577952849271242e-16), SC_(0.7789145637455650616639975178325762794953e-16), SC_(0.9999999999999999221085436254434938336002) }, + { SC_(0.1125254418367572150846966927417724946281e-15), SC_(0.1269713643368146509171410927223650268325e-15), SC_(0.9999999999999998730286356631853490828589) }, + { SC_(0.4283825720300077181945663795659129391424e-15), SC_(0.4833779698254535301267982815421810779873e-15), SC_(0.9999999999999995166220301745464698732017) }, + { SC_(0.5405621861962687634689528337617048237007e-15), SC_(0.6099591094234751315857573573713433261908e-15), SC_(0.9999999999999993900408905765248684142426) }, + { SC_(0.1199026382331771015121724133223324315622e-14), SC_(0.1352956390621069391623702837955015493166e-14), SC_(0.9999999999999986470436093789306083762972) }, + { SC_(0.3388160376379171188909733558602965786122e-14), SC_(0.3823129583484747580613317941389808261798e-14), SC_(0.9999999999999961768704165152524193866821) }, + { SC_(0.4251160106447451902944578705501044169068e-14), SC_(0.4796920500102846351328633565382312006865e-14), SC_(0.9999999999999952030794998971536486713664) }, + { SC_(0.1313415386649738336721782161475857719779e-13), SC_(0.1482030560038262349331825316596395555414e-13), SC_(0.9999999999999851796943996173765066817468) }, + { SC_(0.1777897084111537684414372506580548360944e-13), SC_(0.2006142030951317354054567215576954023455e-13), SC_(0.9999999999999799385796904868264594543278) }, + { SC_(0.5556494121154026410991377815662417560816e-13), SC_(0.6269832208398892455680747006005262348402e-13), SC_(0.9999999999999373016779160110754431925299) }, + { SC_(0.9186150917630392376267423060198780149221e-13), SC_(0.1036546132124946068175722614185676168866e-12), SC_(0.9999999999998963453867875053931824277386) }, + { SC_(0.2022372612257850033046224780264310538769e-12), SC_(0.228200312377628882307346737694658892409e-12), SC_(0.9999999999997717996876223711176926532623) }, + { SC_(0.334987083645127414754938399710226804018e-12), SC_(0.3779924464312436744509548821977467036951e-12), SC_(0.9999999999996220075535687563255490451178) }, + { SC_(0.9037920151860889816930466622579842805862e-12), SC_(0.1019820081323253936787897658201809797801e-11), SC_(0.9999999999989801799186767460632121023418) }, + { SC_(0.1229327186921813641617973189568147063255e-11), SC_(0.1387147187266705574841551295246781201059e-11), SC_(0.9999999999986128528127332944251584487048) }, + { SC_(0.1941944651959182088774014118826016783714e-11), SC_(0.2191249888923286935404641309633986461335e-11), SC_(0.9999999999978087501110767130645953586904) }, + { SC_(0.6660515888823326235979038756340742111206e-11), SC_(0.7515587371056892484340940489030914565555e-11), SC_(0.999999999992484412628943107515659059511) }, + { SC_(0.1305013996172332824130535300355404615402e-10), SC_(0.1472550606048923346284018897482637545021e-10), SC_(0.9999999999852744939395107665371598110252) }, + { SC_(0.2306862860457226105381778324954211711884e-10), SC_(0.2603015993086296441348608813996585159423e-10), SC_(0.99999999997396984006913703558651391186) }, + { SC_(0.464061636340495908825687365606427192688e-10), SC_(0.5236374826948694233006052031278254256924e-10), SC_(0.9999999999476362517305130576699394796872) }, + { SC_(0.9020578728424766268290113657712936401367e-10), SC_(0.1017863311229943567634007843433802039614e-9), SC_(0.9999999998982136688770056432365992156566) }, + { SC_(0.2017243178054073382554634008556604385376e-9), SC_(0.2276215177081760092443407256160138975684e-9), SC_(0.999999999772378482291823990755659274384) }, + { SC_(0.4463814318178549456206383183598518371582e-9), SC_(0.5036875082415334987251679342248332272253e-9), SC_(0.9999999994963124917584665012748320657752) }, + { SC_(0.7894043196898792302818037569522857666016e-9), SC_(0.8907473887532656624292837310188997818123e-9), SC_(0.9999999991092526112467343375707162689811) }, + { SC_(0.1197530963281678850762546062469482421875e-8), SC_(0.1351268990918867631962395950793232393347e-8), SC_(0.9999999986487310090811323680376040492068) }, + { SC_(0.3128908243610339923179708421230316162109e-8), SC_(0.3530594877843318503414910172348506997629e-8), SC_(0.9999999964694051221566814965850898276515) }, + { SC_(0.654608101058329339139163494110107421875e-8), SC_(0.7386461438461727721842489523977686137653e-8), SC_(0.9999999926135385615382722781575104760223) }, + { SC_(0.1037359531608217366738244891166687011719e-7), SC_(0.1170534884254671319566985248995045101925e-7), SC_(0.9999999882946511574532868043301475100495) }, + { SC_(0.2613260008388351707253605127334594726563e-7), SC_(0.2948748151669259830348980474563029807727e-7), SC_(0.9999999705125184833074016965101952543697) }, + { SC_(0.4653804097642932902090251445770263671875e-7), SC_(0.525125559152401230823420797240431154212e-7), SC_(0.9999999474874440847598769176579202759569) }, + { SC_(0.8228098380413939594291150569915771484375e-7), SC_(0.9284414797271396176853241560056526014051e-7), SC_(0.9999999071558520272860382314675843994347) }, + { SC_(0.1440129295815495424903929233551025390625e-6), SC_(0.1625011895322124534932667008476984221693e-6), SC_(0.9999998374988104677875465067332991523016) }, + { SC_(0.373797803376874071545898914337158203125e-6), SC_(0.4217856540365096975937056642610100404098e-6), SC_(0.99999957821434596349030240629433573899) }, + { SC_(0.72830744102247990667819976806640625e-6), SC_(0.8218069436902647194923144120911901417405e-6), SC_(0.9999991781930563097352805076855879088099) }, + { SC_(0.10260146154905669391155242919921875e-5), SC_(0.1157733517254662264894221065154775581876e-5), SC_(0.9999988422664827453377351057789348452244) }, + { SC_(0.2678315240700612775981426239013671875e-5), SC_(0.3022155120513748374723247514313931180799e-5), SC_(0.9999969778448794862516252767524856860688) }, + { SC_(0.40205004552262835204601287841796875e-5), SC_(0.4536648954950918836538342339896039137139e-5), SC_(0.9999954633510450490811634616576601039609) }, + { SC_(0.10320758519810624420642852783203125e-4), SC_(0.1164572890196433412287423508862147085112e-4), SC_(0.9999883542710980356658771257649113785291) }, + { SC_(0.233581158681772649288177490234375e-4), SC_(0.2635681132346089850308780034445740445022e-4), SC_(0.9999736431886765391014969121996555425955) }, + { SC_(0.4860912667936645448207855224609375e-4), SC_(0.5484952583250342934869652426491962534587e-4), SC_(0.9999451504741674965706513034757350803747) }, + { SC_(0.0001085917465388774871826171875), SC_(0.0001225326640313436930517738593548252912385), SC_(0.9998774673359686563069482261406451747088) }, + { SC_(0.000165569479577243328094482421875), SC_(0.0001868251497546456322442598271644064384812), SC_(0.9998131748502453543677557401728355935615) }, + { SC_(0.0004721705918200314044952392578125), SC_(0.0005327874195307728646012144512357625925006), SC_(0.9994672125804692271353987855487642374075) }, + { SC_(0.00095945619978010654449462890625), SC_(0.001082630055365222472802272152269070171599), SC_(0.9989173699446347775271977278477309298284) }, + { SC_(0.0011034240014851093292236328125), SC_(0.001245080150435437151082626328085359462604), SC_(0.9987549198495645628489173736719146405374) }, + { SC_(0.00225476245395839214324951171875), SC_(0.002544222668224971136268866790058243266433), SC_(0.9974557773317750288637311332099417567336) }, + { SC_(0.006128217093646526336669921875), SC_(0.0069148659371010946376763193961158375309), SC_(0.9930851340628989053623236806038841624691) }, + { SC_(0.01089772023260593414306640625), SC_(0.01229627370763712993609092392080824128196), SC_(0.987703726292362870063909076079191758718) }, + { SC_(0.0229592286050319671630859375), SC_(0.02590216393432758991206927422057375200344), SC_(0.9740978360656724100879307257794262479966) }, + { SC_(0.043352998793125152587890625), SC_(0.04888799071126766325637634356499925915047), SC_(0.9511120092887323367436236564350007408495) }, + { SC_(0.06324388086795806884765625), SC_(0.07126804593959971882312270799434219648871), SC_(0.9287319540604002811768772920056578035113) }, + { SC_(0.2158693373203277587890625), SC_(0.2398511631288111077158786048968679107576), SC_(0.7601488368711888922841213951031320892424) }, + { SC_(0.334280669689178466796875), SC_(0.3636043520990431448970776140491250415292), SC_(0.6363956479009568551029223859508749584708) } + } }; +#undef SC_ + + + diff --git a/test/erfc_inv_big_data.ipp b/test/erfc_inv_big_data.ipp new file mode 100644 index 000000000..60725380c --- /dev/null +++ b/test/erfc_inv_big_data.ipp @@ -0,0 +1,211 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 200> erfc_inv_big_data = { { + { SC_(0.5460825444184401149953083908674803067585e-4312), SC_(99.62016927389407649911084501709563799849) }, + { SC_(0.2645475979732877501542006305722535728925e-4291), SC_(99.38083815930157675670279543643240126733) }, + { SC_(0.4647218972549971591905525747707221131215e-4281), SC_(99.26209205835381203650501813598769577392) }, + { SC_(0.1525121257807440558802279626797226161005e-4243), SC_(98.82602533559047574603223381461761500878) }, + { SC_(0.1981708500756372844759510276075956268897e-4234), SC_(98.71980149740490464004477100962342642155) }, + { SC_(0.3841754068409692466399340503654464602243e-4180), SC_(98.08467819532462847486581213069198608289) }, + { SC_(0.5335004017651487579647125338582580235046e-4091), SC_(97.03275964437690000965320992419441429924) }, + { SC_(0.1806383895924070461510470704435189756123e-4076), SC_(96.86022098874718527180735862424264805433) }, + { SC_(0.1321513657594592521699131916159148731226e-4066), SC_(96.7429083707271579347385166737183074303) }, + { SC_(0.1054920495502343332517378247415093412624e-4043), SC_(96.46999015250599733880053488460821308812) }, + { SC_(0.47363892632169499253148937212672347289e-4043), SC_(96.46220643869959630846141605535921442023) }, + { SC_(0.4750819439081903839348296656606873483722e-4000), SC_(95.94763372873564880985964950938277645413) }, + { SC_(0.5934696803923580795229088781443547003391e-3998), SC_(95.92247396394370347463100485254034797278) }, + { SC_(0.2809661603171360146097006130839773212914e-3996), SC_(95.90236599111862577117586443056337455754) }, + { SC_(0.201344506190345013258215914381814651279e-3981), SC_(95.72387427307012892119049758800169512382) }, + { SC_(0.1349680361063247504563298949422573179728e-3978), SC_(95.68987765258188263846875190956134957764) }, + { SC_(0.9554154264888789862328696045397641686626e-3961), SC_(95.47488611856686267812468521780070611561) }, + { SC_(0.4565370419999699854685454921616341777152e-3921), SC_(94.99523139627283958425843803677334678489) }, + { SC_(0.9326136640408284179797117117017987832624e-3838), SC_(93.98018858040542889098559401088499617323) }, + { SC_(0.2085705673165100591822581196874037577838e-3788), SC_(93.37371566951938600144821032880068555931) }, + { SC_(0.28906230618616666278153940715368369251e-3788), SC_(93.37196812654735398207358428222836165935) }, + { SC_(0.540152632181355759951616925660164590124e-3750), SC_(92.89890240230691810677222482470759338646) }, + { SC_(0.1373243759745268803582425259844487470076e-3682), SC_(92.05981131540500971264194940023399842876) }, + { SC_(0.3331647658738942966983713783383120828716e-3653), SC_(91.69161143487247689253830777510103757803) }, + { SC_(0.134842155208242065478707324403653741427e-3641), SC_(91.54576292987357613504022634708802175022) }, + { SC_(0.7492191291954483620899871520373510239375e-3623), SC_(91.30973569873630381671516956816451328373) }, + { SC_(0.2551662007977519576358324440130450442778e-3575), SC_(90.70847518912252606205543434018735665529) }, + { SC_(0.6190686739111601149790106116510494551314e-3563), SC_(90.55115617451523669098548678613430984841) }, + { SC_(0.9276632609820886396580236856359763026966e-3447), SC_(89.06191184952516547664083098302741022803) }, + { SC_(0.6433072193358217453796447947689324967478e-3351), SC_(87.8143275613841604460220844122740180476) }, + { SC_(0.3653541017426498234750653436978737170327e-3338), SC_(87.64696333406539636312319479272468979115) }, + { SC_(0.2789596742720445243557533363147985407484e-3305), SC_(87.21398755358298377575097222058344254911) }, + { SC_(0.443825473802222651705813573190067261172e-3131), SC_(84.88340554604607048910870088690204110131) }, + { SC_(0.3345784652046112831225855034049282590715e-3126), SC_(84.81723263217786918755009758623351862559) }, + { SC_(0.2414445336524691790354556146640969706061e-3069), SC_(84.0419598414264046587129844579410948894) }, + { SC_(0.8478603490304246265311990779170856959861e-3028), SC_(83.47092766845828325139370216002957076776) }, + { SC_(0.14740427247445948990191590432902058536e-2997), SC_(83.05281564078241081289202980345540186102) }, + { SC_(0.1329036517699801662619770631013011165738e-2944), SC_(82.31552494008283774947792893056404158871) }, + { SC_(0.1706141285384843345987169410441595650031e-2933), SC_(82.16002264325748303060260330185689090281) }, + { SC_(0.8373844481146949976640588846233709740831e-2929), SC_(82.09426838736262780476565867158939922013) }, + { SC_(0.6495088549453856516509184167801252067894e-2926), SC_(82.05373670564597872871969963977451713693) }, + { SC_(0.1833720938105362893360888392913141441369e-2882), SC_(81.44184518033949369735162216055497263014) }, + { SC_(0.2333520177487467820415573739119469955902e-2879), SC_(81.39794775935971788819430665383756478382) }, + { SC_(0.2894427653993793412567889456980821259226e-2847), SC_(80.94277839157518781341184937011412770395) }, + { SC_(0.2604952067990663450155633194749904382233e-2836), SC_(80.78683208931494064074748747620852519014) }, + { SC_(0.8678138849264725191436450361584810016324e-2832), SC_(80.72235938139247087444254555436435678849) }, + { SC_(0.3682667903200544588455731527142145038363e-2781), SC_(79.99708530932539906643334265914340895581) }, + { SC_(0.4588121885193651068401508885826145226945e-2766), SC_(79.77955734877589476980263452200168409691) }, + { SC_(0.7764413237799866858364453900343995777469e-2765), SC_(79.76182876388495108788138224124277407448) }, + { SC_(0.2423421525461451159440550098196593570056e-2760), SC_(79.69693586691073000502029265856910229446) }, + { SC_(0.5878986254507577903335876253702952707265e-2746), SC_(79.48887849840574283826340114327272440985) }, + { SC_(0.1673845625470905295897015228985949168928e-2737), SC_(79.36634262823360407978363436458177566234) }, + { SC_(0.6698391998725201197546429856824581586977e-2735), SC_(79.32858818851906731315743566169843426962) }, + { SC_(0.2515130355594925802647014162660517938496e-2725), SC_(79.18952171986121353050089556124781639244) }, + { SC_(0.2461647325252598254899739145066165462755e-2636), SC_(77.88509727460664014637457387303638162253) }, + { SC_(0.1641105794585019759166735829835878355641e-2634), SC_(77.85813389734403078489439365068353770847) }, + { SC_(0.6351595345143555864526860293158388570963e-2601), SC_(77.35991719682138597284770268761692627695) }, + { SC_(0.9223028410198721360701049566280075593579e-2545), SC_(76.51960497818744876859269133142591483997) }, + { SC_(0.5002814464212067387766735395165041257035e-2533), SC_(76.34286436673947487064698531398136817799) }, + { SC_(0.1185824625931586847282481488476410873355e-2519), SC_(76.14091514413348192509930444973601480465) }, + { SC_(0.257414900548022702014576953401369926289e-2493), SC_(75.74167889782762540410788473501883567486) }, + { SC_(0.9183566141599824732209230606531307948203e-2490), SC_(75.68766731518135433104337024242062602941) }, + { SC_(0.2932809029313999449803475825227510422988e-2473), SC_(75.43622352043665347320282000269125370548) }, + { SC_(0.5498724163832736366794865810754062391466e-2467), SC_(75.34043418668345319181733147217173430757) }, + { SC_(0.6795395146348654066574869189625572073492e-2451), SC_(75.09414895042043847993638837712888889371) }, + { SC_(0.4232772623968377298803745728444220344828e-2398), SC_(74.2804044020029126990405093970664224902) }, + { SC_(0.437705010214781194544970904918846009988e-2382), SC_(74.0317968899859238324605680410762845653) }, + { SC_(0.7328784181257135130009299062120147357384e-2332), SC_(73.24665809155865681149475856856425835323) }, + { SC_(0.8195784402152374810490855567845040936044e-2295), SC_(72.6620497559170838922485865519610574788) }, + { SC_(0.8987013844942659551846558843047951168834e-2288), SC_(72.55042905061235174343554742739711560742) }, + { SC_(0.2390567310984670056453397739020313330694e-2193), SC_(71.03636046035780611691848769848245798184) }, + { SC_(0.4332167143233490736155663100970351222456e-2185), SC_(70.90240600026913612396368503494705740935) }, + { SC_(0.108890416531056942890760795215821213854e-2164), SC_(70.57040795030909610470208299858512551923) }, + { SC_(0.5060627104045047637085866910481125331788e-2163), SC_(70.54320633525883330072442815574897293795) }, + { SC_(0.3691223561779676390769470042383461854014e-2122), SC_(69.87319260661719659265781125754219708719) }, + { SC_(0.6969547608629390600217634449465487521466e-2099), SC_(69.48865744111861740557954052160177140024) }, + { SC_(0.1920331015960815466646483904103550820861e-2096), SC_(69.44822094478638613766926468731012767531) }, + { SC_(0.6083975528963974425124099594841117907605e-2016), SC_(68.1007710158724367714118546612371304706) }, + { SC_(0.7700980458334894771243720474212758259757e-2007), SC_(67.94673150215833308050516745181191739631) }, + { SC_(0.3784507382437993534366757035181644553005e-2006), SC_(67.93501557417646729265187361704446762791) }, + { SC_(0.1933058527290172128745148456282632896472e-2000), SC_(67.8382198195958948309248955546035843938) }, + { SC_(0.3073129169339213242656468129490128120275e-1912), SC_(66.32462247762686573271005635222158246919) }, + { SC_(0.3563704808140633534254743351059329459844e-1867), SC_(65.53779859486217889665515029788703171428) }, + { SC_(0.1117328435404434848431164536157383381954e-1865), SC_(65.5115114749327337441199600755950731015) }, + { SC_(0.162291367493531393505178202172746460504e-1863), SC_(65.47350810130320090152901346075787089108) }, + { SC_(0.7291877778593992272357923862974438803504e-1814), SC_(64.59461716634387479104306278695990989692) }, + { SC_(0.1103697274312455454535522513124420450513e-1800), SC_(64.35930484119184106703256655579503018943) }, + { SC_(0.2787184985694988691274106077027481674296e-1777), SC_(63.93935283526837024038868862230807595467) }, + { SC_(0.2242899394948684173448369886336215330859e-1736), SC_(63.19860571879709151914226858360392775225) }, + { SC_(0.6373703493315477830264234158158397230918e-1648), SC_(61.5663708938977044791256528616543682363) }, + { SC_(0.1130761791970139872085460502062402383311e-1534), SC_(59.4111793960172436477860564668325556624) }, + { SC_(0.5186477168932786698797072956323906176672e-1526), SC_(59.24311964529112251267296011750890265511) }, + { SC_(0.2371756563156473396673371175154689282089e-1487), SC_(58.48710687097943040207443293838886041518) }, + { SC_(0.2474530000251364788339443399087025927602e-1487), SC_(58.48674428195209156566913277116595315737) }, + { SC_(0.1620952363661926127361288574589236587446e-1465), SC_(58.05577331395656272747602508275617390989) }, + { SC_(0.2122625807107458215797391334648973459688e-1429), SC_(57.33517766371867417445655972866006304427) }, + { SC_(0.6243197332907990298222556346398382173979e-1405), SC_(56.8418011386019473870793880887159457241) }, + { SC_(0.5516957459853521159388169416018722269647e-1400), SC_(56.74154440911648902947449827969373477014) }, + { SC_(0.2926235914834555267234269989321844626118e-1369), SC_(56.11477468249401615221533062929223131088) }, + { SC_(0.3794627523015867743608205312364027747225e-1312), SC_(54.93070214218908343008136754660768021631) }, + { SC_(0.318880483330771111942926508195676807607e-1300), SC_(54.68024803482526161939511993227336637443) }, + { SC_(0.3369469880227599686172744089074258905398e-1300), SC_(54.67974419399797522074814528351877319048) }, + { SC_(0.1302713766629726626489873195118034634277e-1298), SC_(54.64631892482891526341853652123547792494) }, + { SC_(0.2469170628653646881926626888059718255132e-1223), SC_(53.03693750856997083336291247307325166587) }, + { SC_(0.1371607091728437802604087975394383012252e-1207), SC_(52.69411504628090115129531887668248361258) }, + { SC_(0.1731629169156886034424126010604259325511e-1111), SC_(50.55126123375417963154846480444273825353) }, + { SC_(0.1988578488030194560097782052960341565225e-1101), SC_(50.32166883510982608447898399736737553384) }, + { SC_(0.2274776484360344132543141099781042532126e-1078), SC_(49.79143524779148474319978052812994435046) }, + { SC_(0.5627666511768513324968956052244126556016e-1045), SC_(49.01338231598138050658354300270473769631) }, + { SC_(0.1825674918577823738426304992234296317652e-1041), SC_(48.93085667837639283695386917651720233174) }, + { SC_(0.3802925527627705362359485795331572740116e-1032), SC_(48.71115012911996883239788333878826905934) }, + { SC_(0.704333512302902280929638896129066471028e-1023), SC_(48.49165994415978768781022851843247093366) }, + { SC_(0.1313561715183354223096034930474262234265e-978), SC_(47.429170762115701641491822625509511735) }, + { SC_(0.1479971733547495818402245675295016370485e-972), SC_(47.28207432819548183826826245137119654147) }, + { SC_(0.1347434440250964238000754812764303681229e-956), SC_(46.89195339639151403964904162145015071721) }, + { SC_(0.1121116975652110010815188524143927325837e-910), SC_(45.75090030899601472255890798805286514432) }, + { SC_(0.6537208325713531384544436742840979538836e-903), SC_(45.55510822465697895367331173242574718725) }, + { SC_(0.5260776239804675672628897143432967891746e-862), SC_(44.50957576907949796448736564849939576426) }, + { SC_(0.9950661094879265377710346605980409852453e-836), SC_(43.8248018686713805421278904903492358615) }, + { SC_(0.2062512012152859485600938747081581263563e-777), SC_(42.26547837659956767422521162018458102221) }, + { SC_(0.1860519246978454733361447959343549701547e-773), SC_(42.15763210320445259646388169147606822404) }, + { SC_(0.292259268934242545722820123169012540872e-772), SC_(42.12496313029953419941505368125427033208) }, + { SC_(0.2655070971534510004697091453590968778995e-739), SC_(41.21462174108933535284728637920523260807) }, + { SC_(0.2901429667218951401071997769907995675312e-725), SC_(40.82070209799865627866597450674844815644) }, + { SC_(0.2691466393457144658729027931985645462202e-709), SC_(40.36799005611971249179085189213378251021) }, + { SC_(0.3197098867400748771350059689777583564847e-690), SC_(39.82043439287531202279866114834532850691) }, + { SC_(0.509206568051986013963235738541488132177e-677), SC_(39.43700823628539555409237521877515418161) }, + { SC_(0.3582760294415859512291360611861492812312e-668), SC_(39.17795922357671427001830102855480201337) }, + { SC_(0.7456401788156278694200104791854742334257e-668), SC_(39.16860717559069454303739314459059279729) }, + { SC_(0.1879442582827104576451480885999452191966e-655), SC_(38.80249559566898835529327655718231853047) }, + { SC_(0.3684861623635251188317018685920580219909e-651), SC_(38.67497066678513891028432141977632830295) }, + { SC_(0.5300532049641075447010094275260357817648e-632), SC_(38.10059865129674828052108905587617617209) }, + { SC_(0.254919090870011244639387672109478129648e-628), SC_(37.98921207590422610976320034158408446716) }, + { SC_(0.1261526994355170599813296346837863228294e-566), SC_(36.07180567207263624533709617168647173026) }, + { SC_(0.3348102113183452824057762060804616114175e-551), SC_(35.57631428343251267029769551692709310927) }, + { SC_(0.3615878633639651283997811017708582782249e-540), SC_(35.21759342981655987654847385348063502236) }, + { SC_(0.8556456214239050595803534051499578042028e-537), SC_(35.10716335050071391896400132832542452084) }, + { SC_(0.109310372545754088817907678327638735624e-531), SC_(34.93937406241154814427167189866546786437) }, + { SC_(0.6542713735351179620273602253478996592612e-503), SC_(33.97831683163889299935986132301256667123) }, + { SC_(0.2612280308120653787093215442892321688194e-493), SC_(33.65156678099809689208816819469703821624) }, + { SC_(0.1022554993887925308488446602367781896336e-479), SC_(33.18348488984914247206612191269120081123) }, + { SC_(0.2031774862883333653515762991534010669034e-436), SC_(31.64637875978842562095759897711662201891) }, + { SC_(0.6588827942394778508739583209849917530674e-435), SC_(31.59139083855039387728200786192864837174) }, + { SC_(0.3663469071718277378831360961951773982499e-412), SC_(30.75175430540050080137890276895073229866) }, + { SC_(0.1361305298482799765369196276048348425522e-395), SC_(30.12535428053783863012447180563559906292) }, + { SC_(0.3744171560141971093473580527502555697533e-390), SC_(29.91687192152261750809710487517869880922) }, + { SC_(0.6874405809297488106605573621300258853644e-383), SC_(29.63617622599272249872842949718868018609) }, + { SC_(0.1459704391344155418984387882925473942446e-354), SC_(28.51518995595697899285114107951299228827) }, + { SC_(0.143123157725799928952051937462499680388e-336), SC_(27.77976460222037023739857761278401004959) }, + { SC_(0.9025996658203895649285047801834901806925e-333), SC_(27.62194204731470015756869063464069373815) }, + { SC_(0.1293287994487535182921055345118992149121e-330), SC_(27.53198333089873848069767951797741434292) }, + { SC_(0.1040364789689237257780791904879173249974e-287), SC_(25.67656975866313564221220720210665888424) }, + { SC_(0.2450719147172718682892603854216257656211e-282), SC_(25.43473899116627259523415573506406682191) }, + { SC_(0.1540635014300999959290867576988859893076e-280), SC_(25.35326739382267978364899192426764093558) }, + { SC_(0.1611739209855438499046222515484436760851e-273), SC_(25.03273169525729329624232590800413859205) }, + { SC_(0.2781078901633922872827030068281452871724e-257), SC_(24.27512000889987237167959986465966890736) }, + { SC_(0.8837820681846044382839818307987545000847e-230), SC_(22.93495456229819340317355998004446065241) }, + { SC_(0.2845511846316072211634522373099423142668e-217), SC_(22.29887672117465208331735160799934601323) }, + { SC_(0.662011186385949636511655220013184768187e-212), SC_(22.02033498263166080103335807537366542004) }, + { SC_(0.1113036584088835972703336205837326051999e-204), SC_(21.63966022176108818726656867477709317659) }, + { SC_(0.891278753475701910699424577762349195273e-195), SC_(21.10677883438545215904960900943812596651) }, + { SC_(0.1243375606125932867518669565282002251187e-191), SC_(20.93474611896499049089384377937974962862) }, + { SC_(0.963481566993839758726177317091390488753e-188), SC_(20.72000418866581389344212197908962674052) }, + { SC_(0.1401265332225531798315780528328964001988e-167), SC_(19.56909048260682534539216053987194710384) }, + { SC_(0.7560947579095629715718115752684784187336e-154), SC_(18.74494560773490096872968649468667611647) }, + { SC_(0.2179858592534951368829782528927445425064e-151), SC_(18.59346814776643084908600446605555382182) }, + { SC_(0.5208405693419352209961246987938629746382e-131), SC_(17.28776816936911830963159975455855394785) }, + { SC_(0.5376896865772724579278898126622880802843e-127), SC_(17.01882418428649428645068852272615582504) }, + { SC_(0.1449951754876351411423239477096839160613e-114), SC_(16.15763261758311680195806763260744183267) }, + { SC_(0.3189212836315126918184908007667112228414e-108), SC_(15.70012576642621709878560027430710336585) }, + { SC_(0.1297369886602648502231884634897739722895e-107), SC_(15.65546665388935777226018284593032382368) }, + { SC_(0.2602821327589283546034644516083144727197e-103), SC_(15.33647743152077165227354683273671003413) }, + { SC_(0.1590035594081776210615338926776093483999e-96), SC_(14.81946110818452708436758045284808001241) }, + { SC_(0.2720908074515874075065365442027770927174e-96), SC_(14.80136596875698966601900922593357151598) }, + { SC_(0.3706750818860597777102228512408751197629e-87), SC_(14.07473190298865115531360325271322276549) }, + { SC_(0.3489539664837006993042769801460156282803e-83), SC_(13.74669364199157990777768669458685265472) }, + { SC_(0.1947620269151566018960312643171165602404e-79), SC_(13.43009987431500967622734624289673694188) }, + { SC_(0.5129832297533069185312436951335270626736e-73), SC_(12.86957639029561313119037589037764922829) }, + { SC_(0.9272206234111032518003166213125699095688e-70), SC_(12.57574048509944911276422466059543556873) }, + { SC_(0.1460449453933976163637836336160553873706e-68), SC_(12.46599637375040876166599138465603014844) }, + { SC_(0.8768204308820258161647995326423963318019e-68), SC_(12.39412855962299302779918858089973570208) }, + { SC_(0.3176564512338672251415481009303329209995e-61), SC_(11.77127316747622053532997731227084711173) }, + { SC_(0.1172937774279091349820752991146331290881e-54), SC_(11.11297358832626209702547835299261897395) }, + { SC_(0.3822700066028246575792241970441049035743e-52), SC_(10.85058828114725350216779162566256390403) }, + { SC_(0.4793602326185941396320885530096873382082e-41), SC_(9.607343723542133339487829511083057069273) }, + { SC_(0.106201511009181306109371950926034372112e-40), SC_(9.566077632118694585964030456246300276422) }, + { SC_(0.1026229395621872573137267432392849554594e-24), SC_(7.413111396559360630306454710337113823294) }, + { SC_(0.1433834013674021626308791056277965507134e-19), SC_(6.574536501026477531602186421374903506051) }, + { SC_(0.2287484604245551701383736767135709586086e-12), SC_(5.183672646329402197657171322814515766894) }, + { SC_(0.4054382118091501052221361988694253843776e-11), SC_(4.903978376537783549083010816442468785255) }, + { SC_(0.5517250582467272934968166422809728429772e-9), SC_(4.386634719241854622420456791837035899963) }, + { SC_(0.1708920553446964553659243704866375034024e-5), SC_(3.383585107532389209677350898502297644278) }, + { SC_(0.2892930668406028955896934416060055101499e-5), SC_(3.308042643013470022433136596357284983766) }, + { SC_(0.7029998339557698614154475319387477445787e-5), SC_(3.17687395056466498458108882620439294841) }, + { SC_(0.3973417837559780922949941034264323413971e-4), SC_(2.90551585834893682957467771364140403613) }, + { SC_(0.04246334897368917726269942070072005435577), SC_(1.434684541881674882915735690265484394337) }, + { SC_(0.159920364968560744996532371753339418774), SC_(0.9937250495458864822841753804433979428041) }, + { SC_(0.2425390104583346613758947085681683120129), SC_(0.826370276571483139432927467391341431105) }, + { SC_(0.7954739362140872788414606986417965117653), SC_(0.1832884885283639734589195991287031281603) }, + { SC_(0.9236374866673857278562449757419727802699), SC_(0.06777816075457032123722158048171767182127) } + } }; +#undef SC_ + + diff --git a/test/erfc_inv_data.ipp b/test/erfc_inv_data.ipp new file mode 100644 index 000000000..13ae441bd --- /dev/null +++ b/test/erfc_inv_data.ipp @@ -0,0 +1,110 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 100> erfc_inv_data = { { + { SC_(0.00956696830689907073974609375), SC_(1.832184391051582711731256541599359331735) }, + { SC_(0.063665688037872314453125), SC_(1.311339282092737086640055105484822812599) }, + { SC_(0.068892158567905426025390625), SC_(1.286316565305373898738127895195338854718) }, + { SC_(0.071423359215259552001953125), SC_(1.274755321776344058215704428086211324587) }, + { SC_(0.0728825032711029052734375), SC_(1.268242522387371561738393687518023984868) }, + { SC_(0.09234277904033660888671875), SC_(1.190178756246535875259766567441510867604) }, + { SC_(0.102432854473590850830078125), SC_(1.154826903977823078146497880706118113588) }, + { SC_(0.1942635476589202880859375), SC_(0.9178735528443878579995511780412810469667) }, + { SC_(0.19508080184459686279296875), SC_(0.9161942752629032646404767631869277618212) }, + { SC_(0.21972350776195526123046875), SC_(0.8678064594007161661713535461829067693456) }, + { SC_(0.224929034709930419921875), SC_(0.8580919924152284867224297625328485999768) }, + { SC_(0.2503655254840850830078125), SC_(0.8127923779477598070926819995714374417663) }, + { SC_(0.25179326534271240234375), SC_(0.8103475955423936417307157186107256388648) }, + { SC_(0.2539736330509185791015625), SC_(0.8066326381314558738773191719462921998277) }, + { SC_(0.27095401287078857421875), SC_(0.7784313874823551106598826200232666844639) }, + { SC_(0.2837726771831512451171875), SC_(0.7579355956263440770864088550908621329508) }, + { SC_(0.298227965831756591796875), SC_(0.7355614373173595299453301005770428516518) }, + { SC_(0.3152261674404144287109375), SC_(0.7101588837290742217667270852502075077668) }, + { SC_(0.342373371124267578125), SC_(0.6713881533266128640126408255047881638389) }, + { SC_(0.347730338573455810546875), SC_(0.6639738263692763456669198307149427734317) }, + { SC_(0.3737452030181884765625), SC_(0.6289572925573171740836428308746584439674) }, + { SC_(0.37676393985748291015625), SC_(0.6249936843093662471116097431474787933967) }, + { SC_(0.42041814327239990234375), SC_(0.5697131213589784467617578394703976041604) }, + { SC_(0.4238486588001251220703125), SC_(0.5655171880456876504494070613171955224472) }, + { SC_(0.4420680999755859375), SC_(0.5435569422159360687847790186563654276103) }, + { SC_(0.553845942020416259765625), SC_(0.4186121208546731033057205459902879301199) }, + { SC_(0.55699646472930908203125), SC_(0.4152898953738801984047941692529271391195) }, + { SC_(0.59405887126922607421875), SC_(0.3768620801611051992528860948080812212023) }, + { SC_(0.603826224803924560546875), SC_(0.3669220210390825311547962776125822899061) }, + { SC_(0.61633408069610595703125), SC_(0.3542977152760563782151668726041057557165) }, + { SC_(0.63310086727142333984375), SC_(0.3375493847053488720470432821496358279516) }, + { SC_(0.634198963642120361328125), SC_(0.3364591774366710656954166264654945559873) }, + { SC_(0.722588002681732177734375), SC_(0.2510244067029671790889794981353227476998) }, + { SC_(0.763116896152496337890625), SC_(0.213115119330839975829499967157244997714) }, + { SC_(0.784454047679901123046875), SC_(0.1934073617841803428235669261097060281642) }, + { SC_(0.797477066516876220703125), SC_(0.1814532246720147926398927046057793150106) }, + { SC_(0.81746232509613037109375), SC_(0.1632073953550647568421821286058243218715) }, + { SC_(0.843522548675537109375), SC_(0.1395756320903277910768376053314442757507) }, + { SC_(0.8441753387451171875), SC_(0.1389857795955756484965030151195660030168) }, + { SC_(0.87748873233795166015625), SC_(0.109002961098867662134935094105847496074) }, + { SC_(0.8911724090576171875), SC_(0.09674694516640724629590870677194632943569) }, + { SC_(0.91597831249237060546875), SC_(0.07460044047654119877070700345343119035515) }, + { SC_(0.94951736927032470703125), SC_(0.04476895818328636312384562686715995170129) }, + { SC_(0.970751285552978515625), SC_(0.0259268064334840921104659134138093242797) }, + { SC_(0.97513782978057861328125), SC_(0.02203709146986755832638577823832075055744) }, + { SC_(0.97952878475189208984375), SC_(0.01814413302702029459097557481591610553903) }, + { SC_(0.981178104877471923828125), SC_(0.01668201759439857888105181293763417899072) }, + { SC_(1.0073254108428955078125), SC_(-0.006492067534753215749601670217642082465642) }, + { SC_(1.09376299381256103515625), SC_(-0.08328747254794857150987333986733043734817) }, + { SC_(1.0944411754608154296875), SC_(-0.08389270963798942778622198997355058545872) }, + { SC_(1.264718532562255859375), SC_(-0.2390787735821979528028028789569770109829) }, + { SC_(1.27952671051025390625), SC_(-0.2530214201700340392837551955289041822603) }, + { SC_(1.29262602329254150390625), SC_(-0.2654374523135675523971788948011709467352) }, + { SC_(1.3109557628631591796875), SC_(-0.282950508503826367238408926581528085458) }, + { SC_(1.31148135662078857421875), SC_(-0.2834552014554130441860525970673030809536) }, + { SC_(1.32721102237701416015625), SC_(-0.2986277427848421570858990348074985028421) }, + { SC_(1.3574702739715576171875), SC_(-0.3282140305634627092431945088114761850208) }, + { SC_(1.362719058990478515625), SC_(-0.3334035993712283467959295804559099468454) }, + { SC_(1.3896572589874267578125), SC_(-0.3603304982893212173104266596348905175268) }, + { SC_(1.4120922088623046875), SC_(-0.3831602323665075533579267768785894144888) }, + { SC_(1.41872966289520263671875), SC_(-0.3899906753567599452444107492361433402154) }, + { SC_(1.45167791843414306640625), SC_(-0.4244594733907945411184647153213164209335) }, + { SC_(1.48129451274871826171875), SC_(-0.4563258063707025027210352963461819167707) }, + { SC_(1.4862649440765380859375), SC_(-0.4617640058971775089811390737537561779898) }, + { SC_(1.50937330722808837890625), SC_(-0.4874174763856674076219106695373814892182) }, + { SC_(1.5154802799224853515625), SC_(-0.4943041993872143888987628020569772222018) }, + { SC_(1.52750003337860107421875), SC_(-0.5079978091910991117615000459548117088362) }, + { SC_(1.53103363513946533203125), SC_(-0.5120597685873370942783226077302881881069) }, + { SC_(1.58441460132598876953125), SC_(-0.5756584292527058478710392476034273328569) }, + { SC_(1.5879499912261962890625), SC_(-0.5800336103175463592377907341030447077804) }, + { SC_(1.59039986133575439453125), SC_(-0.5830784871670823806198622501806646778319) }, + { SC_(1.59455978870391845703125), SC_(-0.588273673825686998734497652983815773459) }, + { SC_(1.59585726261138916015625), SC_(-0.5899005483108011364541949539839185473259) }, + { SC_(1.5962116718292236328125), SC_(-0.5903454775096607218832535637355431851718) }, + { SC_(1.6005609035491943359375), SC_(-0.5958247243549040349587326482492767206448) }, + { SC_(1.6150619983673095703125), SC_(-0.6143583249050861028039832921829036722514) }, + { SC_(1.62944734096527099609375), SC_(-0.6331707263097125575937994856370309207836) }, + { SC_(1.64380657672882080078125), SC_(-0.6524069265890823819975498133014027247554) }, + { SC_(1.6469156742095947265625), SC_(-0.656635855345815020063728463464436343698) }, + { SC_(1.67001712322235107421875), SC_(-0.6888269167957872563013714303376548038671) }, + { SC_(1.6982586383819580078125), SC_(-0.7302336318927408409119676651737758401138) }, + { SC_(1.74485766887664794921875), SC_(-0.8046505193013635090578266413458426260098) }, + { SC_(1.75686132907867431640625), SC_(-0.8253191678260588578995203396384711816647) }, + { SC_(1.81158387660980224609375), SC_(-0.9300427626888758122211127950646282789481) }, + { SC_(1.826751708984375), SC_(-0.9629665092443368464606966822833571908852) }, + { SC_(1.83147108554840087890625), SC_(-0.9736479209913771931387473923084901789046) }, + { SC_(1.84174954891204833984375), SC_(-0.997713670556719074960678197806799852186) }, + { SC_(1.8679864406585693359375), SC_(-1.065050516333636716777334376076374184102) }, + { SC_(1.90044414997100830078125), SC_(-1.164612422633086435501625591693259387477) }, + { SC_(1.91433393955230712890625), SC_(-1.215315881176612875682446995412738776976) }, + { SC_(1.91501367092132568359375), SC_(-1.217962731073139868794942852653058932976) }, + { SC_(1.918984889984130859375), SC_(-1.233778505900771488542027767896521427575) }, + { SC_(1.92977702617645263671875), SC_(-1.28019542575660930623179572273596558907) }, + { SC_(1.93538987636566162109375), SC_(-1.306695301483797253764522033930388453334) }, + { SC_(1.93773555755615234375), SC_(-1.318335478463913327121670503572736587296) }, + { SC_(1.94118559360504150390625), SC_(-1.33613349872692113073358883961598631154) }, + { SC_(1.96221935749053955078125), SC_(-1.468821071545234761861756248744372345584) }, + { SC_(1.98576259613037109375), SC_(-1.733272259459038694476413373595347034928) }, + { SC_(1.9881370067596435546875), SC_(-1.77921769652839903464038407684397479173) }, + { SC_(1.99292266368865966796875), SC_(-1.904368122482929779094714951471938518496) } + } }; +#undef SC_ + diff --git a/test/functor.hpp b/test/functor.hpp new file mode 100644 index 000000000..cde300100 --- /dev/null +++ b/test/functor.hpp @@ -0,0 +1,209 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#ifndef BOOST_MATH_TEST_FUNCTOR_HPP +#define BOOST_MATH_TEST_FUNCTOR_HPP + +struct extract_result_type +{ + extract_result_type(unsigned i) : m_location(i){} + + template + typename S::value_type operator()(const S& row) + { + return row[m_location]; + } +private: + unsigned m_location; +}; + +inline extract_result_type extract_result(unsigned i) +{ + return extract_result_type(i); +} + +template +struct row_binder1 +{ + row_binder1(F _f, unsigned i) : f(_f), m_i(i) {} + + template + typename S::value_type operator()(const S& row) + { + return f(row[m_i]); + } + +private: + F f; + unsigned m_i; +}; + +template +inline row_binder1 bind_func(F f, unsigned i) +{ + return row_binder1(f, i); +} + +template +struct row_binder2 +{ + row_binder2(F _f, unsigned i, unsigned j) : f(_f), m_i(i), m_j(j) {} + + template + typename S::value_type operator()(const S& row) + { + return f(row[m_i], row[m_j]); + } + +private: + F f; + unsigned m_i, m_j; +}; + +template +inline row_binder2 bind_func(F f, unsigned i, unsigned j) +{ + return row_binder2(f, i, j); +} + +template +struct row_binder3 +{ + row_binder3(F _f, unsigned i, unsigned j, unsigned k) : f(_f), m_i(i), m_j(j), m_k(k) {} + + template + typename S::value_type operator()(const S& row) + { + return f(row[m_i], row[m_j], row[m_k]); + } + +private: + F f; + unsigned m_i, m_j, m_k; +}; + +template +inline row_binder3 bind_func(F f, unsigned i, unsigned j, unsigned k) +{ + return row_binder3(f, i, j, k); +} + +template +struct row_binder4 +{ + row_binder4(F _f, unsigned i, unsigned j, unsigned k, unsigned l) : f(_f), m_i(i), m_j(j), m_k(k), m_l(l) {} + + template + typename S::value_type operator()(const S& row) + { + return f(row[m_i], row[m_j], row[m_k], row[m_l]); + } + +private: + F f; + unsigned m_i, m_j, m_k, m_l; +}; + +template +inline row_binder4 bind_func(F f, unsigned i, unsigned j, unsigned k, unsigned l) +{ + return row_binder4(f, i, j, k, l); +} + +template +struct row_binder2_i1 +{ + row_binder2_i1(F _f, unsigned i, unsigned j) : f(_f), m_i(i), m_j(j) {} + + template + typename S::value_type operator()(const S& row) + { + return f(boost::math::tools::real_cast(row[m_i]), row[m_j]); + } + +private: + F f; + unsigned m_i, m_j; +}; + +template +inline row_binder2_i1 bind_func_int1(F f, unsigned i, unsigned j) +{ + return row_binder2_i1(f, i, j); +} + +template +struct row_binder3_i2 +{ + row_binder3_i2(F _f, unsigned i, unsigned j, unsigned k) : f(_f), m_i(i), m_j(j), m_k(k) {} + + template + typename S::value_type operator()(const S& row) + { + return f( + boost::math::tools::real_cast(row[m_i]), + boost::math::tools::real_cast(row[m_j]), + row[m_k]); + } + +private: + F f; + unsigned m_i, m_j, m_k; +}; + +template +inline row_binder3_i2 bind_func_int2(F f, unsigned i, unsigned j, unsigned k) +{ + return row_binder3_i2(f, i, j, k); +} + +template +struct row_binder4_i2 +{ + row_binder4_i2(F _f, unsigned i, unsigned j, unsigned k, unsigned l) : f(_f), m_i(i), m_j(j), m_k(k), m_l(l) {} + + template + typename S::value_type operator()(const S& row) + { + return f( + boost::math::tools::real_cast(row[m_i]), + boost::math::tools::real_cast(row[m_j]), + row[m_k], + row[m_l]); + } + +private: + F f; + unsigned m_i, m_j, m_k, m_l; +}; + +template +inline row_binder4_i2 bind_func_int2(F f, unsigned i, unsigned j, unsigned k, unsigned l) +{ + return row_binder4_i2(f, i, j, k, l); +} + +template +struct negate_type +{ + negate_type(F f) : m_f(f){} + + template + typename S::value_type operator()(const S& row) + { + return -m_f(row); + } +private: + F m_f; +}; + +template +inline negate_type negate(F f) +{ + return negate_type(f); +} + +#endif diff --git a/test/gamma_inv_big_data.ipp b/test/gamma_inv_big_data.ipp new file mode 100644 index 000000000..89975a2a8 --- /dev/null +++ b/test/gamma_inv_big_data.ipp @@ -0,0 +1,141 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 130> gamma_inv_big_data = { { + { SC_(464.56927490234375), SC_(0.12698681652545928955078125), SC_(440.0905015614498663381793089656310373835539712118699915057655756381750702144551901256933419148259778), SC_(489.2489328115381710888005650788332818303123263238882523231037266766796974176786885492715539575179927) }, + { SC_(464.56927490234375), SC_(0.135477006435394287109375), SC_(440.9201626373476098986751145295281211597851207555116002836559277456581502883881279408150408804624974), SC_(488.3596775997958518494466317847702951287228545295142304855338082929544530999908165788368449119633373) }, + { SC_(464.56927490234375), SC_(0.22103404998779296875), SC_(447.8707097559117500373730010123474103179731538915785876172851019700931527209673015311979439047788638), SC_(480.9951697728710868281134950146803822897647194680614404153327850687509247330919989892805468881282719) }, + { SC_(464.56927490234375), SC_(0.308167040348052978515625), SC_(453.5243991344879957369314553806138325182261928645340021307574697842383156443940903587657239443012288), SC_(475.1149279136111828287528971449692848991760379145030491172523136909085503134739001275580865573262267) }, + { SC_(464.56927490234375), SC_(0.6323592662811279296875), SC_(471.5586320968249281038445929212575977142103853999994962593917575305139999808448747718468071828960383), SC_(456.9895432265540105242329036050454287207764722373079606619854048979024366594658280592117689264157992) }, + { SC_(464.56927490234375), SC_(0.814723670482635498046875), SC_(483.7962479352174443104604814361337114707603182758678093812861642605333000597647127303417718754975292), SC_(445.2102204107761028803290781726535172344996283727995749912027305150811353997318714622791119089755303) }, + { SC_(464.56927490234375), SC_(0.835008561611175537109375), SC_(485.5413501990585182267303678139012739812082864500829920491986081765032489089832623030329596860813566), SC_(443.563211692283275278200948788175382734228099875239143691921387947329995022394758603528566488084557) }, + { SC_(464.56927490234375), SC_(0.905791938304901123046875), SC_(493.1530014001506637843558286915347874415133013116095848032725512370251487272101090417362802627532), SC_(436.4721607137502194476515600944759096109462004602962052350793459815125792956858001222848555476140453) }, + { SC_(464.56927490234375), SC_(0.9133758544921875), SC_(494.1980223559677419266737342424067342426878050583575377942941770747042395000546795305409031642061286), SC_(435.5102279299145333712817106435136572491533987684414157140918464149027877988350441152775081891128202) }, + { SC_(464.56927490234375), SC_(0.968867778778076171875), SC_(505.5712348542740722018328982886099757924348908530379539931536263900192339710371141619690805609322114), SC_(425.2177557338328763751700654579137573643963906759571233052948938600914520447536651895743912216230868) }, + { SC_(581.3642578125), SC_(0.12698681652545928955078125), SC_(553.9669793782038068678935676734904494531472719532817972687153514964534286624955148869921984604413705), SC_(608.9624188837483057145747405401351852945713877500076249931706854984537278152556192058495450356661075) }, + { SC_(581.3642578125), SC_(0.135477006435394287109375), SC_(554.8986621587098884100882390919729772471677865482900127899068620712298280708065488221682075356651129), SC_(607.9711405772914939464180467890095695334450990881469482983020058157368245651758798593316096874550468) }, + { SC_(581.3642578125), SC_(0.22103404998779296875), SC_(562.6989508379479360762737530017662823397707943257475597443912537342208024566957230695521899983347868), SC_(599.7568829483629048923260578901093044774886065740947188058513300551937073309051987160205195739811767) }, + { SC_(581.3642578125), SC_(0.308167040348052978515625), SC_(569.0374062500558452762422305261339987947322576241495557758885978701225529419403450771958235312394718), SC_(593.191871592557187889891303913053953793280772650663480941873292317612622398375064237989516603392702) }, + { SC_(581.3642578125), SC_(0.6323592662811279296875), SC_(589.2186806341801070520302845910583423903524143672474575926325599791162545901801711272745264959036703), SC_(572.9194442994055998344224745611620692130093494754880686659071973997039947893559220289586718667113235) }, + { SC_(581.3642578125), SC_(0.814723670482635498046875), SC_(602.8821834284482585691264752294355355054448218400550509491940689285405704202939688051624635513663289), SC_(559.7142416966026142699409579688200021128645733168138617853078743374086688135798773103892188217158995) }, + { SC_(581.3642578125), SC_(0.835008561611175537109375), SC_(604.828643910421477172904091611031783808541641171718978680317644118217631106164554044832916318314536), SC_(557.8658766883129854673479272570045089935130097354126524991225881637889319445059039834646698913385156) }, + { SC_(581.3642578125), SC_(0.905791938304901123046875), SC_(613.3129282087309383781017594217145054083831628491043296373214531659991173365355850527876757575909822), SC_(549.9022051711790846699713504466950223326019400934082404934885928594446512232330430586772029938196745) }, + { SC_(581.3642578125), SC_(0.9133758544921875), SC_(614.4770468653682831072313903473820106979961810147208338352666609984349886811227288705529284870561508), SC_(548.8211770528904363817509904880593930190623124578155064175427290011681864479910298041022961043374652) }, + { SC_(581.3642578125), SC_(0.968867778778076171875), SC_(627.1355994680180288387606201509867766037880624816769586905572692453061589536718698854811798574447639), SC_(537.2434046094288504301880670875538722146124348492278961853627085015109570171947537038965207722816761) }, + { SC_(1951.531005859375), SC_(0.12698681652545928955078125), SC_(1901.241568773770922566176551111324528061539415262289896946584544719985434774304519807954392335998056), SC_(2002.021320186005593269954630164748892984239050639769313631332995488067837088154452019302573500276847) }, + { SC_(1951.531005859375), SC_(0.135477006435394287109375), SC_(1902.97354682881850141437203184951674874932885186251119744647673131837322873602175575537383500148183), SC_(2000.229742725423370235870963243869872585198799992240751333551033232397870397441633931357095980768191) }, + { SC_(1951.531005859375), SC_(0.22103404998779296875), SC_(1917.43930352500655310596416160028640714879305407859193609469456367008395474716182237360880885823288), SC_(1985.349994080042670467264605954502004011215186704550449317111515855278342566460300427630408667542252) }, + { SC_(1951.531005859375), SC_(0.308167040348052978515625), SC_(1929.148922991445901527665313030619405739439864321231712634684310583653565217955393471096463768241713), SC_(1973.41380900615111271612206472312245968587969819306141495965251939440367517119089187330085981855822) }, + { SC_(1951.531005859375), SC_(0.6323592662811279296875), SC_(1966.170648608234571927835410663285873075779994557389344920315448169955531572581154381160800811608923), SC_(1936.300927175607170562787730544662456503521359690528527088676017231512207916885689668601566334696151) }, + { SC_(1951.531005859375), SC_(0.814723670482635498046875), SC_(1991.018476822699539936619331556942844313185023775202372774961340270713861782283112635668860782991491), SC_(1911.911419157865805941808341314657192342091906343327984809714040500104473134596177068891643239201134) }, + { SC_(1951.531005859375), SC_(0.835008561611175537109375), SC_(1994.544402797220842514281539193259124172262869915307589510640852477286905812617458228445241220476988), SC_(1908.483594038512805755001748726292272043823619085173345530826950007115743243492623585610857912172797) }, + { SC_(1951.531005859375), SC_(0.905791938304901123046875), SC_(2009.873911904405317686261009227750227467555826023279394400383848661900917765114809101457422028374876), SC_(1893.674732762075095962723449211769493256383641688731373063749888733379336713034328047169493836544477) }, + { SC_(1951.531005859375), SC_(0.9133758544921875), SC_(2011.972307241665268736502104164475771449799210356115385253182904262809221268798981927795567773944713), SC_(1891.6594345676538455773206293469804440582100319565106194664934721807778862797549270954003415779538) }, + { SC_(1951.531005859375), SC_(0.968867778778076171875), SC_(2034.714523480064289287644223575619398519444732843244492092699738327485748708874885340026678963321054), SC_(1869.998109735453655492790185651623410060296249127509205739793222108784718079420859112691611632362879) }, + { SC_(3758.09765625), SC_(0.12698681652545928955078125), SC_(3688.269221905081770004905866509942285685834022307619919983840358088974057519155601362457045190469776), SC_(3828.126966734947562857157823124321915782963776211442036219895957644411198437076202567570009863405317) }, + { SC_(3758.09765625), SC_(0.135477006435394287109375), SC_(3690.684298867718321095796104599679884489666325551719365656695935599356225647996694405200919562123315), SC_(3825.652289575931235844479250019969164198463280325259202090976682217958403066307319848484885105581786) }, + { SC_(3758.09765625), SC_(0.22103404998779296875), SC_(3710.839319113599916956950480773290417367845386133941236334315465425207774999044425494831261356321363), SC_(3805.083272692609693674616623585138338446898882836031033480426227869609438051238914284058314904862922) }, + { SC_(3758.09765625), SC_(0.308167040348052978515625), SC_(3727.133351927482614060628607462991489119028392310409354684803259127742838639041554842071312224561279), SC_(3788.562672301521623196543058453544075589974268506533760066606114508751896293111513693636396881581203) }, + { SC_(3758.09765625), SC_(0.6323592662811279296875), SC_(3778.528550575916814056223763744919435754441830625355641946292458486867768815372235805068450264615195), SC_(3737.076316765760652194064334747473787385989593164595425511590818880185187761717979985816187204092861) }, + { SC_(3758.09765625), SC_(0.814723670482635498046875), SC_(3812.922446182399467612547076317848393128539912750863005393194456290019218294038506051040640795080257), SC_(3703.140745433678078806573437651527632026443807472555664739980754268990846148835479531303937675324215) }, + { SC_(3758.09765625), SC_(0.835008561611175537109375), SC_(3817.796509793771676162614683161615902966626743815706841615083133741582505661241032530769661275864503), SC_(3698.364783774439206789649185642372909221594384024621281205973017497369907247656486575135921989170889) }, + { SC_(3758.09765625), SC_(0.905791938304901123046875), SC_(3838.968814875609259112447249360286196280754199520370411132351143293055243953405027339519752582923023), SC_(3677.71313366818507387305627126061560591505433854941861627350851207819866515037867236595472170217332) }, + { SC_(3758.09765625), SC_(0.9133758544921875), SC_(3841.864686779943903631728155363342944298702898230536002618521033295179742861319436033908001095855484), SC_(3674.900360253055479882838595518073658542689208978779585756034944847987980754504956238925340576527268) }, + { SC_(3758.09765625), SC_(0.968867778778076171875), SC_(3873.214407863545712968538928248360948261370832897461222039046487958702559421715988344906339088570877), SC_(3644.631553255295796488936475913773419309969096729444568274104175920763244425234464560284471265548246) }, + { SC_(4616.13818359375), SC_(0.12698681652545928955078125), SC_(4538.73619581078529349311370923767275657631232594999406015597523005952377190998556013669518237725048), SC_(4693.741047295654124225265559244454877020524890337351078157537880507175422880097557380101650644124419) }, + { SC_(4616.13818359375), SC_(0.135477006435394287109375), SC_(4541.416052657007369229594079654512958903012051288160946094762850962358030128847621569351140189655705), SC_(4691.001590094274342956326914886220897339022217854680165720751946655212122606320397753654433108301933) }, + { SC_(4616.13818359375), SC_(0.22103404998779296875), SC_(4563.776311919469973926703443785108099128983356576843164691919721139798044051423599405893757282068391), SC_(4668.227333253118926726402904545172107466621594302775888538966440471731380547541731555402139874782874) }, + { SC_(4616.13818359375), SC_(0.308167040348052978515625), SC_(4581.847318946935282720362715005838973967998598739557363650769271927144394370765076608422893756836618), SC_(4649.929758252988493199341699560635088304026161361457259804344666961351386468460179193535105918649159) }, + { SC_(4616.13818359375), SC_(0.6323592662811279296875), SC_(4638.813828931030942887307436685398511593382478083869001642436341423732043373917719075398537527701668), SC_(4592.872091246336843394148288160840930883879921809390787083305191928560961521397343332226019433575776) }, + { SC_(4616.13818359375), SC_(0.814723670482635498046875), SC_(4676.907895160543278687198948841930637688042485985424197104265461887444194874204047951207179482722802), SC_(4555.236350109885004575859024810728480989039703993116783481596486597150016413421136261814257172804708) }, + { SC_(4616.13818359375), SC_(0.835008561611175537109375), SC_(4682.304515731980821436551565077654256687437909227673500347557389488706128706235436602797134269726417), SC_(4549.937831710816792212064519786243592540759846221125180348275998280766387538898703671302460562127607) }, + { SC_(4616.13818359375), SC_(0.905791938304901123046875), SC_(4705.741580711337859667291977977502503077644752141696824008522256604118909039981571995672949428510038), SC_(4527.021423141513852058399003290321263090039200466296411895045472847713257203856501590496376954211364) }, + { SC_(4616.13818359375), SC_(0.9133758544921875), SC_(4708.946568650395314864337829228481259555703091426168120373875017698125310494845482264821550064006248), SC_(4523.899533961973572978629521339128328481974619108950431965456052302243902877231531229607628266754848) }, + { SC_(4616.13818359375), SC_(0.968867778778076171875), SC_(4743.632740096363038834717668567813814752724166958943269564450315658481832909168491087584898331415092), SC_(4490.294281155327154962453761620889914377172009206157397706748975348547232601852264754021702085246193) }, + { SC_(16128.96484375), SC_(0.12698681652545928955078125), SC_(15984.19150740626942523575344952751089837130131753041259458336776569293178294656172965745400811250193), SC_(16273.93905532143313681038720824070790562056247303523329668819162994453391121159796730285174059405078) }, + { SC_(16128.96484375), SC_(0.135477006435394287109375), SC_(15989.22676235148466566328822934756584776985020689018375663546664884644483645295505960567654615103789), SC_(16268.84419952470777571790379119042418692468584325777827546076859610757715663224115605341532814977112) }, + { SC_(16128.96484375), SC_(0.22103404998779296875), SC_(16031.20405351060211990887280422059483945237087274107063822038948820279465786077591114726982615618216), SC_(16226.45290784447982275607494742937751200364006400581502487708305720931882076028909242425359821415303) }, + { SC_(16128.96484375), SC_(0.308167040348052978515625), SC_(16065.08232052897776668662743213306244469961481151889986118399850265509938306185511752006206155565682), SC_(16192.3480716172165838056710102294942469596867947165420303342139728343011834886295618913818416217398) }, + { SC_(16128.96484375), SC_(0.6323592662811279296875), SC_(16171.6088337381541168594236327162172142675412670495705311621059579654498081204064334971700482619106), SC_(16085.73040096275492833855840916890198710276455553505467359856607779154433671890832594290842368384539) }, + { SC_(16128.96484375), SC_(0.814723670482635498046875), SC_(16242.61814911483111610162019056336468310946933023158123264192239937306782744109769322940845949081001), SC_(16015.17941323830474284202453568496171906754379178383719506048885401959909928721222965793815612311595) }, + { SC_(16128.96484375), SC_(0.835008561611175537109375), SC_(16252.66325120537372551228337677052577832727378839637946964477598694913414032861166514412295921632565), SC_(16005.23241400860319544453509108367388514465785336941141309776519280032666806885155809947413286367102) }, + { SC_(16128.96484375), SC_(0.905791938304901123046875), SC_(16296.24690916208170130513583355983759744262232337696783472276204805801519959231179000397132160557134), SC_(15962.16941694622324035213881214404594381014364605290706999187909700031304104725476433896183574508679) }, + { SC_(16128.96484375), SC_(0.9133758544921875), SC_(16302.20170950990942713368157395653578880952094436782970756458579834825066210569911702318103352521146), SC_(15956.29771620293467627409501983885398344829869654395769027440486632354956145207672484710967862082115) }, + { SC_(16128.96484375), SC_(0.968867778778076171875), SC_(16366.56828921449740305504203779475562787202856989535542098594845238831920830920757473193846447564732), SC_(15893.01206937239641835129007044304942240174971276716763477094450725274838485018682095789294479525832) }, + { SC_(31348.75), SC_(0.12698681652545928955078125), SC_(31146.87492932415368358627351435593665618206018737750249851286282016699191022944875148022930452469576), SC_(31550.8259457689838797222465180413488461878313082029984999350730261742621364659606834240427320338358) }, + { SC_(31348.75), SC_(0.135477006435394287109375), SC_(31153.90655200382780841481634529724984042506802564012801262348963108578831874405871473187677381689678), SC_(31543.73472214118499639287410253667175671823128770673071797429450322649621200742808380801769796246109) }, + { SC_(31348.75), SC_(0.22103404998779296875), SC_(31212.51063826656886925427859052124944382731038852919869953164355093350095200210698955892270815288411), SC_(31484.7166347845963461452732330944232286567107878249320281897021784907883982747985777647554957480833) }, + { SC_(31348.75), SC_(0.308167040348052978515625), SC_(31259.78661629543452382437731581821274576564510647879236396358106318493431063781272585919084981742815), SC_(31437.21408730621613122075500688989576892467877561911547420736821114177719338914250818719270250214003) }, + { SC_(31348.75), SC_(0.6323592662811279296875), SC_(31408.31846281048169489492277666592008402552531539060638611430591288238083377469157224826298970248396), SC_(31288.59108326360110215467412449761727160495322777896691740484924086718980365391316761273218504126953) }, + { SC_(31348.75), SC_(0.814723670482635498046875), SC_(31507.22565311710833193558911307503633417894453401959674373999014431429790038863175554002323822272288), SC_(31190.14222110733565992532725161952194093054412886087771840856283646528086967389800445042080814574194) }, + { SC_(31348.75), SC_(0.835008561611175537109375), SC_(31521.21066504248444908827516092372895387841847286834059291847526587046168200994787639941909286467579), SC_(31176.25531217681051663494278564515846264120722296625712277279860085985578254687538914235116941644522) }, + { SC_(31348.75), SC_(0.905791938304901123046875), SC_(31581.86999981973235981003189406515148181115171752228921584334659024464152037274293837568376975097371), SC_(31116.11663916675213704769306905174351654776514352304487536487524249455640195915707433291756131852094) }, + { SC_(31348.75), SC_(0.9133758544921875), SC_(31590.155469100799661855542341441596895402942668099054243057727540974879096436719207279380991906329), SC_(31107.91426965470776250667992077437252359446704846622067712592545587822837835738988786011194589497306) }, + { SC_(31348.75), SC_(0.968867778778076171875), SC_(31679.67850782628081526526577487530527258613115320297145941004817749476118230238040083164300311122895), SC_(31019.47216657408953118877517142917860419651592875763945822066656033794892780993635781369395799717268) }, + { SC_(40010.84375), SC_(0.12698681652545928955078125), SC_(39782.76400400982499269880521533544616410066502639342923583174314925940044261291796976034969844558773), SC_(40239.12437105243953895798198574706523917854214391429621688785763935294035383943801459008563387194046) }, + { SC_(40010.84375), SC_(0.135477006435394287109375), SC_(39790.71178497771047279295549175525667936169148271852996762211972299238551294656798788456618416877512), SC_(40231.11698911426369507122132464709278696993531099111031716953549079495795554832385202699643446047001) }, + { SC_(40010.84375), SC_(0.22103404998779296875), SC_(39856.94611296887834775085010919725238181059462302507381658985762372057681916173533384994429694566689), SC_(40164.46865989784936601515490749026455208079710958271738402356752887540517225400993828030840877984986) }, + { SC_(40010.84375), SC_(0.308167040348052978515625), SC_(39910.37046216592762407003632071681472239230520248652453250281521408804901704118308796550076026272519), SC_(40110.8177411960803356616724716265329154696626553950351030116663302545619783631339537931680823701065) }, + { SC_(40010.84375), SC_(0.6323592662811279296875), SC_(40078.17905370547906210131508732813456674921868125495791052546012508524005161770579737397965965635208), SC_(39942.91799211008360655867703413560705033299222446748065297854250158420735642569772428392643852289746) }, + { SC_(40010.84375), SC_(0.814723670482635498046875), SC_(40189.88891512249176173488768570147172965339723389241445955057675861319554196086929844398871663694597), SC_(39831.66645895771525753940684210487706062975657217715970593829775472579640689320041134174423345144077) }, + { SC_(40010.84375), SC_(0.835008561611175537109375), SC_(40205.68200030393024655010329773278667327344870280795897034016900243770563466352665289247524027726956), SC_(39815.97147680187265400361982710813539472361267871288092114434734298987962477962310028512740074673437) }, + { SC_(40010.84375), SC_(0.905791938304901123046875), SC_(40274.17757864267234908554371228345236877198924581673291960794455951529914794297097937815705563772244), SC_(39747.99656043057449420207727861203627021061193864803937187432534118566430945259010317186782798392104) }, + { SC_(40010.84375), SC_(0.9133758544921875), SC_(40283.53262198431046973268169166557397723754573196794045116894409096244741722984089722681112082051974), SC_(39738.72461689569567391685796931443555233795872183245163272154703871259810598866937775513995329931135) }, + { SC_(40010.84375), SC_(0.968867778778076171875), SC_(40384.60029737613581870378820628321484590963538991967311992992358211345278589024755892166231155813593), SC_(39638.73787778442264700697994099775534891465149444873452736869662513630826266303928939412090932076823) }, + { SC_(106978.296875), SC_(0.12698681652545928955078125), SC_(106605.2863705137633334151580285989663811160436929559799046625877451960790255007035816558189351778065), SC_(107351.5082544785577272079230854221336116137077633378923434398695927461971725332130661230533962304612) }, + { SC_(106978.296875), SC_(0.135477006435394287109375), SC_(106618.3011722668472839663540678909292702161311674711973980911515469240454246917720028808860146755476), SC_(107338.4338517049675303879491557799535338410839554008411903922534203183133713720958007798223286855552) }, + { SC_(106978.296875), SC_(0.22103404998779296875), SC_(106726.736262150307861228534711460850078090924057821536375307827792520628179371430515662611284393709), SC_(107229.5847602985782785768586370594350254124500109176588254941783215444738625336112911246694244563848) }, + { SC_(106978.296875), SC_(0.308167040348052978515625), SC_(106814.1655385261881930404229732982932315967031144349630174728684365233416506163298048686969756243235), SC_(107141.9289142929117445526105750926681991067546071431542916760994950589383960650401663422672269967697) }, + { SC_(106978.296875), SC_(0.6323592662811279296875), SC_(107088.5883939339366789132635543218784222126363076723929464152640936921360514979892904256754782836202), SC_(106867.4149012959514842871740820819912876035326559814362503394815886893461205537905345858197524921503) }, + { SC_(106978.296875), SC_(0.814723670482635498046875), SC_(107271.1062601546124727026601294184511892667252827484197615804221472642319275593094402184268802800732), SC_(106685.355363598826654695221788222612153635895098179662024013576731553208328075853329795574072474843) }, + { SC_(106978.296875), SC_(0.835008561611175537109375), SC_(107296.8992994913869402418466674420311219379899864632641552560933440701747303396252073712935466163884), SC_(106659.6604273573002063815229431263566237748637743622261182212981422323668756139498467915581435044571) }, + { SC_(106978.296875), SC_(0.905791938304901123046875), SC_(107408.734998923265541925220213930532489899427477954826595105190870582743619595466816264015557152955), SC_(106548.3453903465392932839969654246405965260624999938958828309703296188141318404673733944550378196684) }, + { SC_(106978.296875), SC_(0.9133758544921875), SC_(107424.0055670202970824638449232697216412857488407216160829379996654120213895137065538290553524438463), SC_(106533.1579221417583551950937315667626037830032018763190969794071719898382331654652699608236673323027) }, + { SC_(106978.296875), SC_(0.968867778778076171875), SC_(107588.9235613222152829931679225549014754124395269284113443203255103948124031662805528602664547683086), SC_(106369.3208655605404481804038740303298105183580397635384112856884253986898629793630975440978403633314) }, + { SC_(171464.0625), SC_(0.12698681652545928955078125), SC_(170991.7987738160400661711532241368523815758482376794424363282331416985687517598530113021351567322652), SC_(171936.5271011605645630168791502834268148052500147715712053943581753043298682506567262206437629713908) }, + { SC_(171464.0625), SC_(0.135477006435394287109375), SC_(171008.2836354564209492823743402973811390337608777526702016261413773534660200796449809982051665077003), SC_(171919.9826384883939702551089975861816589350398843659033957710496659891252213316559001815815327400668) }, + { SC_(171464.0625), SC_(0.22103404998779296875), SC_(171145.6191662746123960347552525693670128191028466757466580336222001947839794403773558314059941595646), SC_(171782.2331060803849520335453303183326526337638884076039027498474047799995742641818132862456747537524) }, + { SC_(171464.0625), SC_(0.308167040348052978515625), SC_(171256.3361047097958387452441541471127499385772793150774116115411855101108847691601832573807619567347), SC_(171671.2895979873130236903578632050660794939876719454087826341290089368450153075267593819684360323877) }, + { SC_(171464.0625), SC_(0.6323592662811279296875), SC_(171603.7718023434324974514302206535409055277466973477498540819203050822468613895559823545353022871572), SC_(171323.7627427548550174468619344221281973249811264358000342338320713853780519662237808191551395326248) }, + { SC_(171464.0625), SC_(0.814723670482635498046875), SC_(171834.7812554227987093134480125253002251121865641876340406728469955856798309411540595789975061266601), SC_(171093.2116182572157852580015242631784731817460262145817086170604362162178153569504512508225251352553) }, + { SC_(171464.0625), SC_(0.835008561611175537109375), SC_(171867.4225853696747287532499924362369112417451458992299610929008452549979384474959400833956401103073), SC_(171060.6683914212385500445147373534713684868992048983316972221307056329253829244630268336756229649048) }, + { SC_(171464.0625), SC_(0.905791938304901123046875), SC_(172008.9390039799149245319369194588737700358279596931623900607969038096782602911984385367690545112371), SC_(170919.6726353340561334782062787174007300952740547857469982263053520346768626380151551392105674125141) }, + { SC_(171464.0625), SC_(0.9133758544921875), SC_(172028.2607163503237074804240420988332805635207751072405443517988230279811664015979896111754298047853), SC_(170900.4340228751077815276338342892187005146619881755020781374282366220361628632145020859022759543646) }, + { SC_(171464.0625), SC_(0.968867778778076171875), SC_(172236.905515185348613520159589244969601354143298301884427671166903159884473708788358619633391766896), SC_(170692.8701620843835232223758792946766066205588069757104160071945587119499747986058865001180462595334) }, + { SC_(287713.625), SC_(0.12698681652545928955078125), SC_(287101.8390891334881074097768409639811422105174055074247663991980671146735409214228746030537490827894), SC_(288325.6117858325819400290984010245379181857090949256951183079858217963457877563186041586190041828876) }, + { SC_(287713.625), SC_(0.135477006435394287109375), SC_(287123.2018824342060405509691117625160296096920082481743462259847740285682319170194185122522020998578), SC_(288304.1893914925111228677903149683935820829058722939396270910064082845368520684242652738579958079628) }, + { SC_(287713.625), SC_(0.22103404998779296875), SC_(287301.1633297324049890437619176952336530543502592319387571077608781438650607731795664155648991042492), SC_(288125.8139425596597585955824696111531518443099937996959008431783465244705148305958926033655366242125) }, + { SC_(287713.625), SC_(0.308167040348052978515625), SC_(287444.6161875962380911288819205876894144456711595429288695779716233686378459491093953007953541560695), SC_(287982.1345150191015439663126413778115578427703552946723363867416179375439869486600021290202033928835) }, + { SC_(287713.625), SC_(0.6323592662811279296875), SC_(287894.6874489179014071783111281890207171400441598448189286641946463264879755117085964912831960132818), SC_(287531.9720960921756986707071354480752766558762675841713700852373467579201294942464262449709073610385) }, + { SC_(287713.625), SC_(0.814723670482635498046875), SC_(288193.8624685657253120713231978071896495272422042999916280573686361169253355069989533169539117598378), SC_(287233.2554050650734668559921717066438674227127230795422265297442527832155003247585279503101394869551) }, + { SC_(287713.625), SC_(0.835008561611175537109375), SC_(288236.1305748677261264763139679877739018298385456598709163321801212462074437452189204330390376852663), SC_(287191.0854018844619610439948437360860177127073148068576003551456242291546450349862447341532794138293) }, + { SC_(287713.625), SC_(0.905791938304901123046875), SC_(288419.3697666997195573795607481350142848162288944628671823192696454698912657762168311546144078778697), SC_(287008.3668726438555694570198503384645300805316567228857999141205296735618456088406804345883798515772) }, + { SC_(287713.625), SC_(0.9133758544921875), SC_(288444.3862532392817919544710751213857359531657572985942506273978341080423727813156579392633735805302), SC_(286983.4334860286298928127732334989709654886825090910274253943356470926729788108952795775884980653786) }, + { SC_(287713.625), SC_(0.968867778778076171875), SC_(288714.4987040958494150791768379727138187987696180207795301950993211293148528792180512566346062773377), SC_(286714.4019734332685576845212232609186614672218264529859295616546913400761609253508670570311556417372) }, + { SC_(811189.1875), SC_(0.12698681652545928955078125), SC_(810161.8590312371865843168933980041081328325710070299088178861493265134389880308605518391017994747884), SC_(812216.7168437188563979284647249628251019755537428376273766031544801981839282189973470746075052877665) }, + { SC_(811189.1875), SC_(0.135477006435394287109375), SC_(810197.7498979269406216229333830071350035973327816952880714391211131397799458403161724415876017573062), SC_(812180.7663759825506891792362570130089364226324810883040952150567099852012280358577738543974186957542) }, + { SC_(811189.1875), SC_(0.22103404998779296875), SC_(810496.7085818541638251177278868436507795786808493806841003579619404032620103009446072000163980337239), SC_(811881.3936903780003325280400757211189636198717447205229093798838652404976779035708631850160770953495) }, + { SC_(811189.1875), SC_(0.308167040348052978515625), SC_(810737.6596810209441188397088671254688261035908114807153029865438117474573459893950971804983662488815), SC_(811640.2160215165658363785038485826735353144913795793280443540697836953543164349103546800608981662806) }, + { SC_(811189.1875), SC_(0.6323592662811279296875), SC_(811493.4130930334681784464934025270672115225675384515035359787878148824734579705400730129452548515192), SC_(810884.3714518926483987655962044487674578474311600687306107087577719289978417856154576706566527627155) }, + { SC_(811189.1875), SC_(0.814723670482635498046875), SC_(811995.6073944837810507278595067896837851547513348796820987055379061808847590525648652941945063796637), SC_(810382.6354791001731534931504185529321689341432235194142157415772145748880181384490815012739271443493) }, + { SC_(811189.1875), SC_(0.835008561611175537109375), SC_(812066.5471821809268774383895112728062329337775853423876890314159367663267493240015649616128193898023), SC_(810311.7937945344017345682607983665585726031514332575059314866957462286550595648052571524209586357645) }, + { SC_(811189.1875), SC_(0.905791938304901123046875), SC_(812374.0504188456832837387624199860361643216611730814901346962998291782800792848840022126928346732626), SC_(810004.8112205260695868832902010461963334632154865047659274031951119044731278686388069124903893504951) }, + { SC_(811189.1875), SC_(0.9133758544921875), SC_(812416.0278043274019558628676997090748402578371572470019350929977553824684311176493949507102425008448), SC_(809962.9169349809432409688756513667346638313258479402030261893546740734029634599290918129699775355502) }, + { SC_(811189.1875), SC_(0.968867778778076171875), SC_(812869.2110457723077173766634087729640503055024244625964488641332722990514021020625997363526699219015), SC_(809510.8146320036991512143859204546175464755726797868383946222879006660812841804439525397298317135306) }, + { SC_(1340602.5), SC_(0.12698681652545928955078125), SC_(1339281.789217310227603638956713067406749799202177619440960783591278712272782687984485318465325634698), SC_(1341923.411657643639007333777049618448197159121016565415209623831539285788844610953752838000410332646) }, + { SC_(1340602.5), SC_(0.135477006435394287109375), SC_(1339327.937228622487435434723558076320553619035659265800295103113312125271806499402498542109463722967), SC_(1341877.204045283265012388313242013019815575145051478003059780209276879235388989175125836420473319923) }, + { SC_(1340602.5), SC_(0.22103404998779296875), SC_(1339712.322663835647115463627093526039417214514450079134571740611687493566900248789753047878427302874), SC_(1341492.404608383515658278630627107716714934192755525237250501053389901217595022258339024841963265735) }, + { SC_(1340602.5), SC_(0.308167040348052978515625), SC_(1340022.109695761389373850715324652137775669433408208271739480026258057424153514144279448404087341583), SC_(1341182.391006759227701894203217959369703988360879936035471868679603927201823099528589868185221044072) }, + { SC_(1340602.5), SC_(0.6323592662811279296875), SC_(1340993.681516583716822573407774790571084098092620222888109700458969964450847155204734529531816156073), SC_(1340210.728028324176179123620867989801125006955369657205955659737293424313505301822663996693364643671) }, + { SC_(1340602.5), SC_(0.814723670482635498046875), SC_(1341639.21195865400971691711247042743964641649950184497692636094105194253010661428811607626202482777), SC_(1339565.655914919776901964481359375383609125899415767739147337874327439960785358915178860477236871205) }, + { SC_(1340602.5), SC_(0.835008561611175537109375), SC_(1341730.394593718344730348431912807931874774159152781393115335369100867655446425097778085615493303823), SC_(1339474.571382988983554873353395399477444166684037486807114439003468351504601181586784778488843724471) }, + { SC_(1340602.5), SC_(0.905791938304901123046875), SC_(1342125.631024741747482365874818097900648331829089766546145385089458404019214871024479928583367510744), SC_(1339079.85561463612134401235478017313574989598767112679109272711123705107621660725882816550403989336) }, + { SC_(1340602.5), SC_(0.9133758544921875), SC_(1342179.58318466684205310449571855171979481228479144098285572172412554068281390306320099547841289301), SC_(1339025.98655465027920550229578505314111660672260003165765196039783266546290600690587108716340600317) }, + { SC_(1340602.5), SC_(0.968867778778076171875), SC_(1342762.018513537047540360796759927612282441879039821617202574156172598071372824957647151677236387446), SC_(1338444.632164292546392718217459403862675869956866545071666772833839055979245806235185884461105636674) } + } }; +#undef SC_ + + diff --git a/test/gamma_inv_data.ipp b/test/gamma_inv_data.ipp new file mode 100644 index 000000000..e397a4619 --- /dev/null +++ b/test/gamma_inv_data.ipp @@ -0,0 +1,211 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 200> gamma_inv_data = { { + { SC_(9.754039764404296875), SC_(0.12698681652545928955078125), SC_(6.349849983781954486964960115093039567468747967664820851534065876063014180392060424555352423162443804), SC_(13.35954665556050630769710564071384909890705633863167415813992116806093647564994418684947673739937248) }, + { SC_(9.754039764404296875), SC_(0.135477006435394287109375), SC_(6.443655518427200469944002789678415067225918847146256390238048987798948404483563975737891105237977816), SC_(13.20648307403762788665455912344161337928185855631083250140430065533748994841668643195553261756810763) }, + { SC_(9.754039764404296875), SC_(0.22103404998779296875), SC_(7.262299107203547511919478506673940833772294421637239641242141768466064388735007729524335022945474356), SC_(11.97587613793353953360795933135034836336725275703898828955465276118339699687746564051854946108002967) }, + { SC_(9.754039764404296875), SC_(0.308167040348052978515625), SC_(7.97160002999034906812099484768140342301220827266158714468555902274184312977405873043165132107201808), SC_(11.04086573531719578182530917737022531437091511425536985032928875608312723663655612529685653444775069) }, + { SC_(9.754039764404296875), SC_(0.6323592662811279296875), SC_(10.49594448867679616659291265911862460649618853634598426379731165830605063134254492272180891868259779), SC_(8.425658710690898403870129948430842533053798281214253294861614223449877730063968146709177371998177282) }, + { SC_(9.754039764404296875), SC_(0.814723670482635498046875), SC_(12.4361412533700118513726558060654652709881561861912344653689388650864659162098713582998706613513665), SC_(6.942010644016112027186983623736329615032487299108703218184306594043669003923138791980905906975995029) }, + { SC_(9.754039764404296875), SC_(0.835008561611175537109375), SC_(12.72773220471889504229650982423238107961665601639868914273535729539112172086261925240837297640844728), SC_(6.748045775833720602368139518425707341668236119625769419950098701512116894292576121300681462006500869) }, + { SC_(9.754039764404296875), SC_(0.905791938304901123046875), SC_(14.04289410800251925225181397652529175357661325918932141591196059344562473318317362439395292198624427), SC_(5.950449506005127213772609250049267524655862647593667247023701745572192142411485108776352863016275192) }, + { SC_(9.754039764404296875), SC_(0.9133758544921875), SC_(14.22894231389791438923272291986931994699865499051360224227851330535373836529589979766491736680448836), SC_(5.846919097207863070421132965572838346244481147780105186426552033007650921954238889468080440271030891) }, + { SC_(9.754039764404296875), SC_(0.968867778778076171875), SC_(16.33883627400002069452382739015521709223507055939529263776286910527953871886379701300232417366169237), SC_(4.808199239905297896929793615245708425392715583004661735514849678846177677735540465249046080150658016) }, + { SC_(12.69868183135986328125), SC_(0.12698681652545928955078125), SC_(8.784921019272498426105463510492037221421052305018408345439418701592122876845445386318018554294593597), SC_(16.81366073413268797817072489278431450377279434529634658485607365405913967176896119547533072607895572) }, + { SC_(12.69868183135986328125), SC_(0.135477006435394287109375), SC_(8.896383236591753135866154471087553855363191438952119644843354891974586610224750070854729638914776046), SC_(16.6428583989184708274029070066937822603130962248261232385768762701676877405494336531756951743065766) }, + { SC_(12.69868183135986328125), SC_(0.22103404998779296875), SC_(9.862617469220713982665965583371935244918334904047351290421210068334907822439623183798321618935666208), SC_(15.26417216941950344244469055509062778775449055335485936125735788919407017713513029239167766664433603) }, + { SC_(12.69868183135986328125), SC_(0.308167040348052978515625), SC_(10.69138713107098569132745297244807793219586717588054769942754175121170431877955989315300122291141203), SC_(14.20948610118405050986416627593847862222152891932304799177300336536994233985896539635674080339978587) }, + { SC_(12.69868183135986328125), SC_(0.6323592662811279296875), SC_(13.59160242982394546525659606547105412243476185288599611155553845175046676029707044791838719524314813), SC_(11.21833709961257197262317281372631080045506080803403124590125627441167267860541032250322395715509712) }, + { SC_(12.69868183135986328125), SC_(0.814723670482635498046875), SC_(15.78100200803618704628341940958738974144994852378563374179722297850145536660826670260570594353062151), SC_(9.485914242958992367868116579661562385020487098469515689243995498338666786774277962701684145364614028) }, + { SC_(12.69868183135986328125), SC_(0.835008561611175537109375), SC_(16.10768378194664520785164274219032682174067248024299096512267552941928679913022155729117705239039614), SC_(9.256972936850435511821520144816528171581971265534873471330923432517135603499344161300868431486273563) }, + { SC_(12.69868183135986328125), SC_(0.905791938304901123046875), SC_(17.57451392394839637853072154924202340041250318069820417410699000204190551648457756693657445268580362), SC_(8.308449130090979664905693116847977133757857856259019618478292317862193093391266421876368176026885601) }, + { SC_(12.69868183135986328125), SC_(0.9133758544921875), SC_(17.78120431823760905019919358341211310740289167580967695713747245051436762583474385825882605114215371), SC_(8.184415485568589887581204235321277473382157178631551706967674610793002275120884722553261739084022877) }, + { SC_(12.69868183135986328125), SC_(0.968867778778076171875), SC_(20.11282386874024435590086548366488795467186497904358012983377190369308090637019960432813568291554008), SC_(6.926292714178635218267544567425104730746607860597889810371943318861426764662000904602232871294882688) }, + { SC_(13.5477008819580078125), SC_(0.12698681652545928955078125), SC_(9.498617359584155640484541449649777746948590653761048796276576864898496630551753271666853231765426842), SC_(17.79798162738702993034563024897450568706481511286766154625099454142798060131218953823037970167927363) }, + { SC_(13.5477008819580078125), SC_(0.135477006435394287109375), SC_(9.614775988541336468177980597986705226150734696228094899421874133496006187511254461903417884668491441), SC_(17.62246603854661671225539741059758091561101663348222755233043088258876382572931569484985290749081656) }, + { SC_(13.5477008819580078125), SC_(0.22103404998779296875), SC_(10.62024247753366364647248032590806061928817183680462172013914582077858242694264811077067842582386142), SC_(16.20444734927429472403282136314761525619629951702035708925978699041651641989369163302848368392689349) }, + { SC_(13.5477008819580078125), SC_(0.308167040348052978515625), SC_(11.48074440713744311956915102323568956655968396102279642877750567632034941027764385976065892114500525), SC_(15.11798663605700785721798844766012913782964705441427242735825731730090704196208198202029130036141707) }, + { SC_(13.5477008819580078125), SC_(0.6323592662811279296875), SC_(14.48073489935233521068434405601243923057632318972553814212027152167003918483808464961117624784623845), SC_(12.02704788535074788861033001134023233915305447951099028068056347800163392529441090482540307798685386) }, + { SC_(13.5477008819580078125), SC_(0.814723670482635498046875), SC_(16.73629927769647849910018442365701917854019482468506890711111946510737737724630051305034264488341527), SC_(10.22854789676807930535872827554978808600380330532012078946908108602774426315925373791179289098191871) }, + { SC_(13.5477008819580078125), SC_(0.835008561611175537109375), SC_(17.07230172784082056774938408524950777447191664556885261149433510787212528817435454933590607672697644), SC_(9.990309368635640920525908069461492024128503635857635797215572604259569445124829836044990246725840346) }, + { SC_(13.5477008819580078125), SC_(0.905791938304901123046875), SC_(18.57943282010105485302313959593611824730560394665706071991266220247143675877254349827804250110556723), SC_(9.001636639606782454852678177382826256836585776478669141919241268216881268175767097054997378150223672) }, + { SC_(13.5477008819580078125), SC_(0.9133758544921875), SC_(18.79161039398503202333296704231244597477482800917637510567121241587484048731001678204759043640360688), SC_(8.87214435725663693979687724717593409790301569787329515668335675276042538894701538490674700483403159) }, + { SC_(13.5477008819580078125), SC_(0.968867778778076171875), SC_(21.18220898123781853664088977081053912399151177338095127709466918141500188229626769713849113296402301), SC_(7.555520288994441890520319737969581067992009391440307072440968324932077242074577892941703792815725045) }, + { SC_(18.8381977081298828125), SC_(0.12698681652545928955078125), SC_(14.02918384935729977571079399019578265355375175041086767491985182081926418595382713721049797304245723), SC_(23.84832008374570657843601152161922418294473083919872835952225321291493570931568811968119991642189789) }, + { SC_(18.8381977081298828125), SC_(0.135477006435394287109375), SC_(14.1717558408285204731229413214355407322131190068678013417143495621020016567545546380260276801404323), SC_(23.64632111226697723902037751132889538735497241553315122704671360973796130353064112449658479893457174) }, + { SC_(18.8381977081298828125), SC_(0.22103404998779296875), SC_(15.39773837457043698931455923005861426937604737220294929069977988256266934526501920208779982759587365), SC_(22.00737005060904259496548959136475323951066136822330010407130959831286391755492621135957095646330243) }, + { SC_(18.8381977081298828125), SC_(0.308167040348052978515625), SC_(16.43646768947077607639318321456563683537280601605704932668148794751520503628860481405287890652458762), SC_(20.74250608342419959939601354285731771811382267120496031307767419677617204111722564570731321205541112) }, + { SC_(18.8381977081298828125), SC_(0.6323592662811279296875), SC_(19.99653216929445027752016902471978241173969183085077185191263145262134409894522028975550586054433757), SC_(17.09143298423542698720439516857081024377513789510279117199898311661457672065997820743891080957454969) }, + { SC_(18.8381977081298828125), SC_(0.814723670482635498046875), SC_(22.62358746129058044873195060926203304966862610502008574066534905990680646717129461587254469611865102), SC_(14.92180595415719085073070904750006513006428922906520858581467699319967262726486861699947535207163636) }, + { SC_(18.8381977081298828125), SC_(0.835008561611175537109375), SC_(23.01194424835788306886951313659607313837967736007141259992314991255372739949354839136553648245155345), SC_(14.63131053103978287708176139398891940280178575959277638074211442555086572026072794775928325103386684) }, + { SC_(18.8381977081298828125), SC_(0.905791938304901123046875), SC_(24.74553536249324418369583464247581935807857304399784054137248564290674116172214116492529377897947574), SC_(13.41680992879640923862967554436512136986000317288750391213712820765557758509207588576227994010120905) }, + { SC_(18.8381977081298828125), SC_(0.9133758544921875), SC_(24.98855922949763595286433770295801937073089655019479031344185246094205127481262357818578723948898406), SC_(13.25659011182332365393171901517028916543523390139952132429867952554688374213918135037207609952686158) }, + { SC_(18.8381977081298828125), SC_(0.968867778778076171875), SC_(27.71093725208517365530031334759767821069589067584245910071522241255680919312387131304006236541170325), SC_(11.61017672557665827133967679491110764155409662162341161685463542805944124779399300099799766367213288) }, + { SC_(22.103404998779296875), SC_(0.12698681652545928955078125), SC_(16.87921759766199342126849411350775507387050679211015114525221613677065459892360198202627022430500249), SC_(27.52866695060767792664819339650311437476668058733486617970407962087418726741094579047667239214454053) }, + { SC_(22.103404998779296875), SC_(0.135477006435394287109375), SC_(17.03624081831792660555746518820570556593564019794008053245186521018175266175899459965990428178270342), SC_(27.31219056488829179810473142072026583020173006708355606663204637779009020549444129376789977483880849) }, + { SC_(22.103404998779296875), SC_(0.22103404998779296875), SC_(18.38280200054672042703901164144922085301323003202250828998626085385563857355718842506863154624518206), SC_(25.55250527197460171605905310645914682685251606418527730068084279130497333005582624763854398336535367) }, + { SC_(22.103404998779296875), SC_(0.308167040348052978515625), SC_(19.51891640723757187740519857537483721812369925364735900280867333488464328776147633436786812992163283), SC_(24.19019057338058769538569164267477649983425551228652172492647049291607738760994739729594234741922399) }, + { SC_(22.103404998779296875), SC_(0.6323592662811279296875), SC_(23.38484093592894056053206548807146996056154022326068739030837973664895947981359924373637480574314385), SC_(20.23323491591530584374085996099469644603448841546893530059418301629757627921851420509688475820722468) }, + { SC_(22.103404998779296875), SC_(0.814723670482635498046875), SC_(26.21481844611917379564918440327638148836556318688449340963338575524770939892080039289488330837060982), SC_(17.86082149351630669001199626913063819591125960124482479880463485851816752805889040359554778417207339) }, + { SC_(22.103404998779296875), SC_(0.835008561611175537109375), SC_(26.63178541700257050291932201267909271640076907575659551807783114540731826091512940564108279941985749), SC_(17.54175229835570897784317564445864904587116131558600188413787964932040985878828758496423978834206092) }, + { SC_(22.103404998779296875), SC_(0.905791938304901123046875), SC_(28.48918009049513479619126847901168768171192727453166981334693305488736001659536722011525291865820785), SC_(16.20368457747041017597375489605151855173488805553316169631852028677750092269994738348077833124025365) }, + { SC_(22.103404998779296875), SC_(0.9133758544921875), SC_(28.74907434406503885540338463064867238299608043496286372590367877338160013376356459725411676727104891), SC_(16.02663882508617462072013702267698845670274734109552775880276924701099849016235523342513909661129533) }, + { SC_(22.103404998779296875), SC_(0.968867778778076171875), SC_(31.65303552609361479975168575519275589014413453517181703778356159084365659722731271821757059436742584), SC_(14.19938811589818650148881538183877612215187175266654868287003926611807186142950549597030347893142744) }, + { SC_(27.849822998046875), SC_(0.12698681652545928955078125), SC_(21.96449687824799453528229010819150637558680241355458185511339524821334149314394376638352292444614062), SC_(33.9361829674544606482657255296876936875126431697909801154779408237288652527196155546143850024985245) }, + { SC_(27.849822998046875), SC_(0.135477006435394287109375), SC_(22.14455296897329749954717929638011902888081335551785035280767992202218929222808948171036390184861165), SC_(33.69664275483206523455679654579411117949392399432602558414101233977723561451289306840041321101580739) }, + { SC_(27.849822998046875), SC_(0.22103404998779296875), SC_(23.68322836472181559188816775465752287417745820074391535254150489195391413137919129765435759758127766), SC_(31.74465938924692742455757667024348843185754482922872145133917814426964705641922325380345921487152468) }, + { SC_(27.849822998046875), SC_(0.308167040348052978515625), SC_(24.97443472370917584723368445218036877945320866342702614205150894126540244646789567894281362172863678), SC_(30.2271752270198324006000393964780733209094543469601779481386278574186771755944717001926561116998847) }, + { SC_(27.849822998046875), SC_(0.6323592662811279296875), SC_(29.32729548620235056567601132167080553205081374706237729706780857931307910947954390172195836019735553), SC_(25.78325676865791003064549447567409781842126940504842337342064889067712591991085441597942606495993107) }, + { SC_(27.849822998046875), SC_(0.814723670482635498046875), SC_(32.48038279179138211812973737621724479954462602581093474479163716448725472880987595605911786959294129), SC_(23.08789395474467608954664594129213736148700258320035643867984418932677524932393955246565209178953301) }, + { SC_(27.849822998046875), SC_(0.835008561611175537109375), SC_(32.94291809332502085241874235738805699903395903222794798431356987655708892216039119581809140162797222), SC_(22.72329945659565354305612328972814090669772124992070421467993313244460693683113928939355046805399676) }, + { SC_(27.849822998046875), SC_(0.905791938304901123046875), SC_(34.99755018219287209238723601299295467938608672566062339487379637960883197742503736398500872619492719), SC_(21.18827387563054957307343841932336178524984829028047157652393381438852509550780350392361262497646018) }, + { SC_(27.849822998046875), SC_(0.9133758544921875), SC_(35.28432879113015423334218327183442091652643692837564831891811605186090291551191273889204114743271386), SC_(20.98439634698876713750468369875359155197503275983239980174553343708122558250463054132520606065129298) }, + { SC_(27.849822998046875), SC_(0.968867778778076171875), SC_(38.47779138537878955340038620378120402906282037921215268261318917532885749645776398315236205232818098), SC_(18.86852708464915925270056910082500850810201789596348545537632392212843033672714264184115129752136738) }, + { SC_(30.81670379638671875), SC_(0.12698681652545928955078125), SC_(24.61712904846231062577703079579199404406864324496619111440088423268270569425847015916146454341072259), SC_(37.21729725181859340891899347210030614624220786517851391377468763017459794763941317096563803817978599) }, + { SC_(30.81670379638671875), SC_(0.135477006435394287109375), SC_(24.80813958526573079956034553148541512924082365306093683387711815595731533140635303349847775372609575), SC_(36.96679118810503753041544695305737949621904476084153084939340540688448805363026288614906280800374876) }, + { SC_(30.81670379638671875), SC_(0.22103404998779296875), SC_(26.43816215828649376532958526872310980007666571886098347267398882267240789426981595717031639278390697), SC_(34.92339292910525527149580064984739963585594995219835455082478231997934157430535105442199512710482949) }, + { SC_(30.81670379638671875), SC_(0.308167040348052978515625), SC_(27.80308957824476240324865859805772888341529234460875416273050438163208947670980716145256922131012151), SC_(33.33215917391845085577361868370068600775422165994276871773428482011985205188137199868513824572076361) }, + { SC_(30.81670379638671875), SC_(0.6323592662811279296875), SC_(32.38735522928575516280480164458899201426183389427462932920842668593341705716633039351801957590601049), SC_(28.65682605129866390406573509987640074811212915105368403392660710893619935947286814062573322974108579) }, + { SC_(30.81670379638671875), SC_(0.814723670482635498046875), SC_(35.69401134817254278816644666811744543863415968402290305201413925343216859088130133173084212959258305), SC_(25.8079534722337638199897887587823828676684635502783666153649411292993785191353925198833824753417643) }, + { SC_(30.81670379638671875), SC_(0.835008561611175537109375), SC_(36.17820890487087604737189182382052108749701073344265524348831586171054803598724239546233445873333437), SC_(25.42171256571933187670223947650551506583339192504255791430274375329561902839459622433281478838237188) }, + { SC_(30.81670379638671875), SC_(0.905791938304901123046875), SC_(38.32662130607642623893473052768363638753264387777373510974852248920903756183231685503197343341362915), SC_(23.79300967264726575757727452167855274543374487279938473795492375794093979950149202816496235524197305) }, + { SC_(30.81670379638671875), SC_(0.9133758544921875), SC_(38.62618510879634456062107526710433673687792135586813292118102301337800462038273136943991550162088032), SC_(23.57636632869819889255187535455524161590936522120376040710062043531316575388646187908564081104950208) }, + { SC_(30.81670379638671875), SC_(0.968867778778076171875), SC_(41.95736968846922692302007474537804225205320769255955237321919691281845341850870244478611089943470409), SC_(21.32310064034471783203915167013305700271915487443645588390868296536476289664577568586388320019196431) }, + { SC_(54.68814849853515625), SC_(0.12698681652545928955078125), SC_(46.37703484579566479953419349194355365657314752994915749696195458702746163677706678502947721546853607), SC_(63.20021845016932724944747515975932641862959071345003008024375084405729892557298809379034635456193875) }, + { SC_(54.68814849853515625), SC_(0.135477006435394287109375), SC_(46.64171889199341967679473390559633658789387014904228309477115441196396334503047840865889657677946178), SC_(62.87599247637962688638650357758938180380917193774980277068316609611329085584539113443934475099221899) }, + { SC_(54.68814849853515625), SC_(0.22103404998779296875), SC_(48.88586116277522199637460996631644034163920164681566399730767318636620675538586175713923920691248246), SC_(60.21819913393248254727442150735368969111002518355955918473119146905834089579617556270620942468807558) }, + { SC_(54.68814849853515625), SC_(0.308167040348052978515625), SC_(50.74617645972698679037977419811379709436407293810034464960963769461161303769685942899595732951386793), SC_(58.1314615560847500816758505080551983762099376271109005681009098885749104475914483991384741042058717) }, + { SC_(54.68814849853515625), SC_(0.6323592662811279296875), SC_(56.88487238152372439929332418281353696545182573101505262981972075058324617097333296188519127946019756), SC_(51.90165845736251584164676492467250275977258458635724969879532295198497068756369723403097600362616624) }, + { SC_(54.68814849853515625), SC_(0.814723670482635498046875), SC_(61.22331451599806720706782050423188360558211596945645513566980703695272186904560507599669113920822525), SC_(48.02123983559173781580390435737131565684756653557591233742999677234385664830485583808344259109872549) }, + { SC_(54.68814849853515625), SC_(0.835008561611175537109375), SC_(61.85310223221161597977549271008625396309826275879682300040802411953448060994428675295851881536571112), SC_(47.48947321214053858216550150902644828356544218354867433274926665691227682466777893184934995005351213) }, + { SC_(54.68814849853515625), SC_(0.905791938304901123046875), SC_(64.63199659962665075311151327226617314824577750183999197966906061461185202176297356015733989674250854), SC_(45.23070744446056415288177300496498231031831622081588520701104587202112750223630172549604627595774537) }, + { SC_(54.68814849853515625), SC_(0.9133758544921875), SC_(65.01754227023427734073991030554914555733715818169955513352549559995008699281517643213002108121851258), SC_(44.92816111390889293807724505379406754064684464155086224775272845406721693750968415789796417674267557) }, + { SC_(54.68814849853515625), SC_(0.968867778778076171875), SC_(69.27542721691201940262962302518511572051340861330724423089552549175396535704759329988062087131850174), SC_(41.74952122122039436486747916533838177003620897635231178762102663248750648786837796330176285292076592) }, + { SC_(54.722057342529296875), SC_(0.12698681652545928955078125), SC_(46.40832116394066727487136922151512210480821127151827993097800946998937614657747591038335037578694622), SC_(63.23674976986583361001993885937793789217940741604088629649280738743839981800625940101557365962393413) }, + { SC_(54.722057342529296875), SC_(0.135477006435394287109375), SC_(46.67309676258900284835187806416809777033625743121661412180738725025463287707225383023905059955933602), SC_(62.91243220671926238584899458639842714331843439358041152246237116838485966160449146520522833945065271) }, + { SC_(54.722057342529296875), SC_(0.22103404998779296875), SC_(48.91800201258973280826907616826578162563450960150092673427822373996299238662981140247160749293993553), SC_(60.25387566608863489507314941843556428885887156553344482686279988136752415500161199853426858674933469) }, + { SC_(54.722057342529296875), SC_(0.308167040348052978515625), SC_(50.77893260114525153853506526210105389832933111963461643562567611884088356014968107469737828963063105), SC_(58.16652270450208245557438870406299289841658372833755999957332521119616597134081253276193672728664831) }, + { SC_(54.722057342529296875), SC_(0.6323592662811279296875), SC_(56.91955877025147636355852648554083855820017441895222245763764561951794154761149320322114190852423883), SC_(51.93478932693185643484465284361965034079238269892193568772149195570523475517324096372033472656767649) }, + { SC_(54.722057342529296875), SC_(0.814723670482635498046875), SC_(61.2592823148419492307638665478506875102979190731251703179782917229121117133708582068516203892259305), SC_(48.05308948574877450448923178946529538083893182189006498124521307980175508723121621581360719797793384) }, + { SC_(54.722057342529296875), SC_(0.835008561611175537109375), SC_(61.88925088170639105288049409729786376311823649334669072880010612350696792347393394006607448580118853), SC_(47.52114206288455998677394576848964543350129150279863853436492863053249399380778481795258433485047851) }, + { SC_(54.722057342529296875), SC_(0.905791938304901123046875), SC_(64.66892857890611553461013122678473356775195314475210728215791006734858098898712378845755543327038087), SC_(45.26159329878386137460422871444796964059031584599895271947744358328705207138041810961279258906405718) }, + { SC_(54.722057342529296875), SC_(0.9133758544921875), SC_(65.05458109756790459822359652538545355632212606369889802991144579775782406333693088467048073860548172), SC_(44.9589401829448551993710354036394428086401867127655338871924481106422302417506735508607723352728735) }, + { SC_(54.722057342529296875), SC_(0.968867778778076171875), SC_(69.31361803596088984366852805609998605981546912364802274290753372702100577045401929828628679007939693), SC_(41.77914935438802571270949950679829588109066733810638790894703225787560246259892639594483794921568264) }, + { SC_(63.235927581787109375), SC_(0.12698681652545928955078125), SC_(54.28774620688215754587248234589840995966642734889020811990610366296380318976985937412371554722175069), SC_(72.38505430842719942132305655003763327281699698810237666470387727082985676408652590143090390646764168) }, + { SC_(63.235927581787109375), SC_(0.135477006435394287109375), SC_(54.57467277657262830930027516895440555764202162943460354137238268364491624297854139464996898083095488), SC_(72.03857776831619809114788620220279920757473706311327787619467312623929854119247857157291676498066309) }, + { SC_(63.235927581787109375), SC_(0.22103404998779296875), SC_(57.00417100598394580306275271970644669627308398076668927654629645377425182281450492884222416391116142), SC_(69.19538075194769345457695763155495190242014307651492410335844604724067709832632050205093590205792077) }, + { SC_(63.235927581787109375), SC_(0.308167040348052978515625), SC_(59.01395471135973585168392822713875957058818545181739725277932120389846576006988871845048062854065685), SC_(66.95915469030241504462587431541989692653401699361788053876309232704591124633796403399070181536762974) }, + { SC_(63.235927581787109375), SC_(0.6323592662811279296875), SC_(65.62153118660087958190016457606220818891181278342304805566761088236864487293718490454298992537996321), SC_(60.26046416667538552855637900269915049454845469977573391344845596257457664269832986518780224630885702) }, + { SC_(63.235927581787109375), SC_(0.814723670482635498046875), SC_(70.27125227776944897321358074466405530722806832147458527016709965428272433462605414424418170732438877), SC_(56.06880814124086368519571291216504008863094268263275059992447042134127010221254372900250848661474739) }, + { SC_(63.235927581787109375), SC_(0.835008561611175537109375), SC_(70.94497399469393700778968484998210389129248075526059109608646475415313904965907079833760032341422221), SC_(55.49311868243167717358603545284098123646316143316361275943018467142657218624359382764454130796228005) }, + { SC_(63.235927581787109375), SC_(0.905791938304901123046875), SC_(73.91417030127397559668620666343930268193297534687819287900803557002224321637505000886342303307074356), SC_(53.04412362512229019235767672895889868874811693453133689104681702032491290827947393734920132229825199) }, + { SC_(63.235927581787109375), SC_(0.9133758544921875), SC_(74.32567473151852110677992487397685363601799520603661262899132723436590947971551651472291482024274269), SC_(52.71563221440989330040906973160126549065189413960679123620868644779637781275243507169398765612524957) }, + { SC_(63.235927581787109375), SC_(0.968867778778076171875), SC_(78.86345709124417190590867450456837590178439404527842315298419218758516375476865737220519136079551199), SC_(49.25732504361311945895048190977096545063433438461604237779638285758347225463267434316859222057037937) }, + { SC_(81.4723663330078125), SC_(0.12698681652545928955078125), SC_(71.29619027201815156792385572460546440288784180121615628852600833369510229757398829019233860237167938), SC_(91.84947204076969498023274631177333253332131350104895972499780154891239617121715541200563833678301888) }, + { SC_(81.4723663330078125), SC_(0.135477006435394287109375), SC_(71.62600225074562076390867694903232184508873677810768403238202786386732022848106501639018183389790031), SC_(91.46009860144632085198486241032898564792404799182433619238960983644693855717654003115157336257240399) }, + { SC_(81.4723663330078125), SC_(0.22103404998779296875), SC_(74.41284225185473602550591574042977694257116658543458184669825020763289835549390386979567818468442899), SC_(88.25949165561279552570334754867545683613263710289541479874416668653301776977660119272393067727222666) }, + { SC_(81.4723663330078125), SC_(0.308167040348052978515625), SC_(76.71074103601732575642765708957157918116890591695557780864643636804182646782037292640422411816033798), SC_(85.73512184625072466650721481458608154446048151668940812839995766997224195471692737178754587592344035) }, + { SC_(81.4723663330078125), SC_(0.6323592662811279296875), SC_(84.22203602898695773791651554669349953519949365308313868563824885137721110765020486583414538276982072), SC_(78.13270299370015119056303871995152334343111003799992186461358219207616708595819299182340801080810291) }, + { SC_(81.4723663330078125), SC_(0.814723670482635498046875), SC_(89.47175672529716601307937633687430806172156183450052915782650511305741259527839119495807144719967953), SC_(73.34110670507223748841341252287394282512323424311191667377272005479791658367146096372572537230041018) }, + { SC_(81.4723663330078125), SC_(0.835008561611175537109375), SC_(90.23017158007244681724112594499562033786660406739583489457530168944342105355996535076570960201631849), SC_(72.68074005707520421936427446884429743356316561012127059558459421800719006567547442902916733982886776) }, + { SC_(81.4723663330078125), SC_(0.905791938304901123046875), SC_(93.56625643683243831460708950245555204356607899830117317737825375488303258641020430534406161544029494), SC_(69.86496024178838047661430589115751362047622713313530960161076907249376782463152652035781899891770685) }, + { SC_(81.4723663330078125), SC_(0.9133758544921875), SC_(94.02781275297839272196662390216964359810120829981703807381112795515158003221939065649728102437395132), SC_(69.48643649137981904208493627542488277675377033731545013808034158285213438834583793834755807845304628) }, + { SC_(81.4723663330078125), SC_(0.968867778778076171875), SC_(99.10537139756835922848645178267919055087403191751152773958481875433252196840037584254582311319630489), SC_(65.48868194671689544231970937477099765493627170497912285433834892901898527668756964714438731877882586) }, + { SC_(83.5008544921875), SC_(0.12698681652545928955078125), SC_(73.19703892868824041598676487430240507066236187348940063664920054360317721682757017049677280459997144), SC_(94.00559837805303742559791529250140454392459765158485756480467100097478488160083234138542838132968486) }, + { SC_(83.5008544921875), SC_(0.135477006435394287109375), SC_(73.53130915894433511987609169038668350222081706836556527591998372061238030137868917999741830794478824), SC_(93.61176572079343976128152223765803578761332738710928949389561088674927975688829123033338599481784128) }, + { SC_(83.5008544921875), SC_(0.22103404998779296875), SC_(76.35529504561858499846621525203034940857915999660435450314286057777849907307615437300349113556577942), SC_(90.3740071573341145699253653723371796466143293032911923991942754182333615885730138411029234752237424) }, + { SC_(83.5008544921875), SC_(0.308167040348052978515625), SC_(78.68314112480631820884112343690972182109682520350796414586848593439617553195360832017099603760506859), SC_(87.81968764228195343370610031118399491938157024343042607767074150689385704899681154801101232812225894) }, + { SC_(83.5008544921875), SC_(0.6323592662811279296875), SC_(86.28836481294416474332619370859574047419570240578447151851952923800385744778028513467449588848417352), SC_(80.12333926966668376891268541010191465890896635993282285358835157678016998516182307767600485382445958) }, + { SC_(83.5008544921875), SC_(0.814723670482635498046875), SC_(91.60044953864571101887455519676545914151124556836156422594528675504349037546306691377449971024876726), SC_(75.2693839415761116196627540056096812583062254945886143599807899747508978159783914741728333576499263) }, + { SC_(83.5008544921875), SC_(0.835008561611175537109375), SC_(92.36766796414533776456602525131989867108328558561044911548178476628064777782195730215791007935991303), SC_(74.60021506412382609940555860448944283536750694767788299806905937251682849013564421194657422988914495) }, + { SC_(83.5008544921875), SC_(0.905791938304901123046875), SC_(95.74189193385518903646499673342541672607418929092579499687915614344122491818492794628187664092821885), SC_(71.74630486574835137961127480988471274427827687408373211770063733293902146802607133723920913885271055) }, + { SC_(83.5008544921875), SC_(0.9133758544921875), SC_(96.20865161064573301504666975011964011076125594941064126883474714131995460614308050226194637684913151), SC_(71.36257939885466395883992532308135162863674798772779712266968584550016851211000478919235917462177202) }, + { SC_(83.5008544921875), SC_(0.968867778778076171875), SC_(101.3423310622841226130372973960392795152246870881696149786835081230813929693808598032012913101837891), SC_(67.30873171816536788749398511362102143152242278162467485213122758888542732132210038498977500703031664) }, + { SC_(90.579193115234375), SC_(0.12698681652545928955078125), SC_(79.84175221240810682981804044548095650478414092371984638737681539075812308148871629074272386127624744), SC_(101.5175581821499316379158994716000174083757645388563277304905989158882325907280691579523858340962527) }, + { SC_(90.579193115234375), SC_(0.135477006435394287109375), SC_(80.19116910019171471751506416770800543661948723266912568902629360730537390266354957543607727615001925), SC_(101.1085758356704635430888993149807560037299737762870263280497813295996305438417447346603872690730152) }, + { SC_(90.579193115234375), SC_(0.22103404998779296875), SC_(83.14135323472378589217475207473003674168990946246256156115072461453085956688821993427808842142537494), SC_(97.74460104296141714676089120078494736341069828223213444018890150534666510088401425903691158854352444) }, + { SC_(90.579193115234375), SC_(0.308167040348052978515625), SC_(85.57093846065158264326656137454250502798545447926311920317173493886822834107708161119360128524617158), SC_(95.08853481933919306881362485200882139218927780030147589531143302482961382004522061642865982573976234) }, + { SC_(90.579193115234375), SC_(0.6323592662811279296875), SC_(93.49525692928177413315200076663773033814657619782970412810918826246077592180948572156197024657388461), SC_(87.07308907876851809564811653286634606031165275453653509383848561680031950012423854958426677835693976) }, + { SC_(90.579193115234375), SC_(0.814723670482635498046875), SC_(99.01920797497934944355647265747410491254674668232698929079999061892985722460343900856203453935663303), SC_(82.00728308328940060989242377429097306390721713991831270421189893974183791230666203292919592474210575) }, + { SC_(90.579193115234375), SC_(0.835008561611175537109375), SC_(99.81633500587285085407956877396865118230934735400460295379313717407365698396538986967145181133258546), SC_(81.30820980797334971867735134301845021848015652742540874774656202815851287085936269965804029144325566) }, + { SC_(90.579193115234375), SC_(0.905791938304901123046875), SC_(103.3201326814194787996113270125884077145674683495281344531029776742154605765190051453253134340324093), SC_(78.32475329016406943717517024694239863707652640693810266880748623401104177538133801387593352409778148) }, + { SC_(90.579193115234375), SC_(0.9133758544921875), SC_(103.8045706236168505853701254154801083174472388089203502714544732048643714617064351817110972731859817), SC_(77.92335471589570797608955642307028160820673363884106184091445886925757098842384343604208093362576951) }, + { SC_(90.579193115234375), SC_(0.968867778778076171875), SC_(109.1289260187349451542429911657874249624428319908094561233253592098987942215099913837877434318463875), SC_(73.67891790501625525726587661010340081700926918094322012272323200665876797487681035809670239109759401) }, + { SC_(91.33758544921875), SC_(0.12698681652545928955078125), SC_(80.55470942127042066936632015313401327445187047496964033284121871287571214336050449309933332986266301), SC_(102.3213852338357228517997851710241718661682891694714066018144357282717161738512635384951018953620892) }, + { SC_(91.33758544921875), SC_(0.135477006435394287109375), SC_(80.90571343760774497081998718824956843148588700104520877743188609279531236164016487392211148245036099), SC_(101.910815461971514278754518364843951261918323936566661450283934209127682325895107122078547692173385) }, + { SC_(91.33758544921875), SC_(0.22103404998779296875), SC_(83.86912090350992385308180592914601168079126811955538048023940035230896936424477286326599140987099811), SC_(98.53361557738737048190581573982543569446348223788769275746696528609106007406062972637706066659819128) }, + { SC_(91.33758544921875), SC_(0.308167040348052978515625), SC_(86.30936634290232676471187611505242970136193922486436562496224852202872847233337842006448872413567024), SC_(95.86688839997597973891126777969476711202163968961890823789197071746859237100356311361748306398330133) }, + { SC_(91.33758544921875), SC_(0.6323592662811279296875), SC_(94.26711895589561227702740335985771600147679266384727244733348900604583030422872888937743996867014066), SC_(87.81800826172970743690326176449486530514563837080793143166027496029484182724915663426045624699528214) }, + { SC_(91.33758544921875), SC_(0.814723670482635498046875), SC_(99.81326921422746787560320796288081477552924454708582065666066593371092467171426783882056575141495564), SC_(82.73000458605764141912849052480945956523784759765708787383685293520838825613577460520665330230578783) }, + { SC_(91.33758544921875), SC_(0.835008561611175537109375), SC_(100.6135301046329302380769833035397124459236625973564439663421018074406391086331637424550021289051344), SC_(82.0277978631755217915832571581478079563666173686046958602779438536997105502894593805428703897018651) }, + { SC_(91.33758544921875), SC_(0.905791938304901123046875), SC_(104.1309048952937343480901597892106892404140640027659427565383628152146258331634608916359022452913204), SC_(79.03076691165164577903469432640031156432173780160284889686347233770168043623260716140204106566823805) }, + { SC_(91.33758544921875), SC_(0.9133758544921875), SC_(104.6171952507842757671220388362614112514493402913179711736626797841255751890435833615537964472043323), SC_(78.62751642912450274309270917028457352003332933068717921576263126589456179403012860663869334115384046) }, + { SC_(91.33758544921875), SC_(0.968867778778076171875), SC_(109.9615311893670237000620350267082224291177338704412356503708758083428187162676324516996474432855136), SC_(74.36310757520278137699647890644860880165951779755309524146879028306176854705499984346991583313445025) }, + { SC_(95.7506866455078125), SC_(0.12698681652545928955078125), SC_(84.70709725546155305557473921691138205287309818101589371184901868961444039089515981954041515541716532), SC_(106.9951975491050031767655859228053766179626225010268705351075732101285952117825152177237525493907427) }, + { SC_(95.7506866455078125), SC_(0.135477006435394287109375), SC_(85.06720867357064602810985397070260129603684678081034808427795228464287439180388935168418513775907925), SC_(106.5755187418851258499188933077995960570184264182402386853477454110525648871848796447339615217784007) }, + { SC_(95.7506866455078125), SC_(0.22103404998779296875), SC_(88.10649462691111941963748534218329189409759936220074216169641059785429479537864993229192521534634851), SC_(103.1224306812075760906755958616922906132424736499012364996135759782327598992197705974926320430872999) }, + { SC_(95.7506866455078125), SC_(0.308167040348052978515625), SC_(90.60790998246389585551363686090293388092202973025062190244201380020359261745570455467350109381388301), SC_(100.3945295134808169115671077384546551191351431424503826146072248413975203145286475988883591297564991) }, + { SC_(95.7506866455078125), SC_(0.6323592662811279296875), SC_(98.75751085223438797379949043614472338672554374893220316533310803642986250787163272087838741859028974), SC_(92.15379972445146037548855116091818614346239163331270435359001670198044863142860931051035663509802997) }, + { SC_(95.7506866455078125), SC_(0.814723670482635498046875), SC_(104.4310431781802048505261488275858182403809062126774572297150124139631023428137767694710937471029547), SC_(86.93842241451993312105235750909193838866513021090338601967079336145848071876097709023085891034460879) }, + { SC_(95.7506866455078125), SC_(0.835008561611175537109375), SC_(105.2492867669474260992245597479965927800541302232811288130596139166824197855151072036214880672013574), SC_(86.21823526035073958985770975653279499531922339748481146612403762839451531762247572034072236781689142) }, + { SC_(95.7506866455078125), SC_(0.905791938304901123046875), SC_(108.8445704767840987866479170746614726925774354472826306350316613868195009161323130293841293515910082), SC_(83.14331014654886313660311225808183905221284934075565854014125461525738817219263762303355064628802463) }, + { SC_(95.7506866455078125), SC_(0.9133758544921875), SC_(109.3414905596746490817233424811163781706270202086969055042667631657018487326153861628725649462342907), SC_(82.72943271608211391542555552414805926519799944531816550122127101623220880364426707612559186750036326) }, + { SC_(95.7506866455078125), SC_(0.968867778778076171875), SC_(114.8004831907863234890701734636484327238767969046585415152597983471340795113178735593950878428349183), SC_(78.35041395285272012339968017689162204010315148488754492497140762846636499068662347314738828431489766) }, + { SC_(96.48885345458984375), SC_(0.12698681652545928955078125), SC_(85.40224841570944638734227688423893433855458772234486768972915837485986575928657672649635117618498298), SC_(107.7763796517941403050191975480102923537258879116567951235523333381552131584750702102640261211678372) }, + { SC_(96.48885345458984375), SC_(0.135477006435394287109375), SC_(85.76386251923861953411158141479414219175520126160270389455592068586888734454609842651493737410307223), SC_(107.355197900557971580171152013628344457543628574577422257759623095192652931240239873125678032841095) }, + { SC_(96.48885345458984375), SC_(0.22103404998779296875), SC_(88.81566799665044092744595886289529036607780903234653146828139052389457111286467963605861430389924168), SC_(103.8895887821161642562813145433045663638035217668183230013539711623214806941804452662410996925715041) }, + { SC_(96.48885345458984375), SC_(0.308167040348052978515625), SC_(91.32717591526663550290360602434059313431549465806685558773754677760031734788863076189049095027720393), SC_(101.1515944064119508827462337472282493152515205016306631012848195887068586486481326769950293608001619) }, + { SC_(96.48885345458984375), SC_(0.6323592662811279296875), SC_(99.50842996001980570093492893545129760529687182434782170521934298627158520145339373459124566770891621), SC_(92.87921122174092819447365167780955457328429254963518059312175391928652696661704878419202206228541363) }, + { SC_(96.48885345458984375), SC_(0.814723670482635498046875), SC_(105.2029792838659943587200025142545208759887382041822746300575519413044047054722309005955305036161377), SC_(87.64281824886126340786290265727047796829995176261916595167200070261399325976826176454758255622090373) }, + { SC_(96.48885345458984375), SC_(0.835008561611175537109375), SC_(106.0241899009105585829981778185725663794090155163934444806888492668631324979036876101314574132110467), SC_(86.91966442528721613834997221916303625301151697302422529937237691169490488131478246669789917860181866) }, + { SC_(96.48885345458984375), SC_(0.905791938304901123046875), SC_(109.632328199431186948728697681102647622513560608216860137973465578512450993365248288605876185488063), SC_(83.831887058824506730781125226296666699739941877662585243806150953849984463678829297116813212627646) }, + { SC_(96.48885345458984375), SC_(0.9133758544921875), SC_(110.1310021528084660149240587302351814159490648063853530597896206111097939221527935389306929055552969), SC_(83.41625619786673946357580258076679845000023541178136246022830883747669157052264119768074837953252578) }, + { SC_(96.48885345458984375), SC_(0.968867778778076171875), SC_(115.6089130958749299514883584085033759636221605217619269705849543570783654779111750581571984448805251), SC_(79.01832652875479939372093655751198778535669443440143855308435747468988132057271401542733720175779538) }, + { SC_(96.76949310302734375), SC_(0.12698681652545928955078125), SC_(85.66657750874739469547512498154347522235188231648565220634305107484234320567666091367915494015416444), SC_(108.0733297219970995289044878724552964709801970908861066154758974833813501997292082482169847849842687) }, + { SC_(96.76949310302734375), SC_(0.135477006435394287109375), SC_(86.02876139898260672726600243973192770706439640865219156595172309673122716789298224371535188963723919), SC_(107.6515780867799770117661808014199064971238982913450221569986285857250999570093723690322859133017628) }, + { SC_(96.76949310302734375), SC_(0.22103404998779296875), SC_(89.08531400744336186067252664677283783814199671377820398006060143891977565526059606865036262120216651), SC_(104.1812212603686696841219085268070231633920490669485235449415011417880247786907830292023203722582168) }, + { SC_(96.76949310302734375), SC_(0.308167040348052978515625), SC_(91.60064879701576510534749689011907172659393504122722555758328411997347916008970916841672273584793764), SC_(101.4393997711157079405600101069862599321398650689581381488009945469269770041338953448110448172892026) }, + { SC_(96.76949310302734375), SC_(0.6323592662811279296875), SC_(99.79390498583282267747367640192760345340242419618915080320329241522875454065363373143904510056165602), SC_(93.15501435937740064521981311484302896929993188228186524291695956100977073816945515857001929552597095) }, + { SC_(96.76949310302734375), SC_(0.814723670482635498046875), SC_(105.4964234743595005609188265306032885940660970929811549527177570196863403032205916377074972062264123), SC_(87.91065272397658470438080075718364119140918058622597797720593096563608412568220142395981935781917024) }, + { SC_(96.76949310302734375), SC_(0.835008561611175537109375), SC_(106.3187591228176309855276419225562432785653104517382593360529234982297445615720549508412768532099608), SC_(87.18637400398396729454873004425612179479901834703760966616501063632011746505615593282942009300179105) }, + { SC_(96.76949310302734375), SC_(0.905791938304901123046875), SC_(109.9317716055940761122201143094980392464036326491210952369698916672198597495550324149880065760473155), SC_(84.09372333199673608894932811772448706853763070273309780826650202973992001995002859576724818134913197) }, + { SC_(96.76949310302734375), SC_(0.9133758544921875), SC_(110.4311105903100081342306281781082071328418466292197456125956889729803536963582441336296302888028325), SC_(83.67742760521194208943145201595227174608840519679603038059666880122541634308754504144269691845150911) }, + { SC_(96.76949310302734375), SC_(0.968867778778076171875), SC_(115.9161949889672865872656944872656195582808138908715335015430022493129005386628428325182877039995528), SC_(79.27232726643702452907227271525181594407865345866654791457885273052858866012143096861812371516819179) }, + { SC_(96.88677978515625), SC_(0.12698681652545928955078125), SC_(85.77705461275145448884184059670145747521324447364087355443564066717292942873712266655592894528945075), SC_(108.1974259266303739342129335428037209741781454705698436168676387012127325183089364902420555366305249) }, + { SC_(96.88677978515625), SC_(0.135477006435394287109375), SC_(86.13947638660273537607617797225818302967596277706316272497449385980828904225751838598285834339519238), SC_(107.7754363673111045358250989623133895971276161674093725616390243200830616475322308551119601859130334) }, + { SC_(96.88677978515625), SC_(0.22103404998779296875), SC_(89.19801090135184939390245706193405169176549635487039248489026590941180753301388663412721735576321637), SC_(104.303097394495799294372250781586897128195400654164057731103146194763518182779182946576641478069721) }, + { SC_(96.88677978515625), SC_(0.308167040348052978515625), SC_(91.71494339117641802078300859375955112036353245403466238208206609501713738531687709888727846374220247), SC_(101.5596781040232907041174239729021685664962703423596338499551294822205119304087839696845462359932232) }, + { SC_(96.88677978515625), SC_(0.6323592662811279296875), SC_(99.91321041399301890022248019929425333093777275293504995176977393792207303217751781884016953326513252), SC_(93.27028182373934286726143682979876487457174316526593549555606409814744254116785632934954719197063508) }, + { SC_(96.88677978515625), SC_(0.814723670482635498046875), SC_(105.6190559898476156470186567579393301754748152475973702217991816082889685177874122562146896005249944), SC_(88.02259331001012120627028106232129904822055055556600307087377855217320920333717783932291335717822205) }, + { SC_(96.88677978515625), SC_(0.835008561611175537109375), SC_(106.4418613337789150662834465967539150510046334986089761472345980178424275895338147417938388378383452), SC_(87.29784495072955079812818934548098966769091817510334571872237486624733050376758448869012427921348781) }, + { SC_(96.88677978515625), SC_(0.905791938304901123046875), SC_(110.0569087676460965549175443673536809664664474411088689872017507564098916733669125115542247049201894), SC_(84.20315969338196572854989530819363045048574233294597930405622554273285477875183350125731165187977316) }, + { SC_(96.88677978515625), SC_(0.9133758544921875), SC_(110.5565254003095472952924400285409013273476504290357273156728780589299796669406748094430938087789149), SC_(83.78658638753611514607257793963173397254674898146787358050233273515081350499995107177237482387571899) }, + { SC_(96.88677978515625), SC_(0.968867778778076171875), SC_(116.0446046920873528112033609608677991511189155730617459927921222740219988503465630098188771574112136), SC_(79.37849231515456241832266533882883215341998528772913479392294938930751337258526935579401070862595695) }, + { SC_(99.2881317138671875), SC_(0.12698681652545928955078125), SC_(88.03988401755240312059902805285183521237299995487686023059008881496181934461141706605374564277485821), SC_(110.7372992692725573731697591393548589103394841966076790991646614865573118064484762681255166487645814) }, + { SC_(99.2881317138671875), SC_(0.135477006435394287109375), SC_(88.40714494536321930498314541057705121558781002694191911704447280462237009318667590621848989831217393), SC_(110.3104697481858991610699642415404049205540549382020546666969615332025792346398477535378399730503648) }, + { SC_(99.2881317138671875), SC_(0.22103404998779296875), SC_(91.50599625629075695333925558823944000033068037616404547594790241831618127835838880946155946667230488), SC_(106.7978091882579180957227826327399587317254598205887947452130155885496447480794670408964903808852888) }, + { SC_(99.2881317138671875), SC_(0.308167040348052978515625), SC_(94.05542966722570497040226539391420130180692037513060042769613095280747364242278963119073910822820164), SC_(104.0218869621341187749106671918013336314305862052064089048569771555329392581844795819010636668843943) }, + { SC_(99.2881317138671875), SC_(0.6323592662811279296875), SC_(102.3556282071769826944006172794969028033974462498658650696807922850126796685689047547579596993931716), SC_(95.63055847544334211087138998067211381097918211020892885108659046928523862524001913745220040268349381) }, + { SC_(99.2881317138671875), SC_(0.814723670482635498046875), SC_(108.1291543562602928024304751748147804453998345888983839614623715132630298762313311048580828345727242), SC_(90.31519355853058782089312287195256334067426270863324117470164569056437169804425894072388785174414288) }, + { SC_(99.2881317138671875), SC_(0.835008561611175537109375), SC_(108.9615144259886825743527192622351022097444435851716881383594981271001329308716835208190947446502812), SC_(89.58089159449409507162289598004762894727083770234022756966805353276045874719787836940516270710021009) }, + { SC_(99.2881317138671875), SC_(0.905791938304901123046875), SC_(112.6179577986881681054950590064902019242389712272583112203724181108477339819399828823424603515837391), SC_(86.44481769564459753753709972148206867820207960268756150487253069049902935247326722392696033050460213) }, + { SC_(99.2881317138671875), SC_(0.9133758544921875), SC_(113.1232225034369918026921896528672269476075103218287973199007233652864695087604791431815686564542933), SC_(86.02259769219673888125653444633780832251026932468113275214161763610722920488400091593471887527263333) }, + { SC_(99.2881317138671875), SC_(0.968867778778076171875), SC_(118.6722260958635779664708398764065569812316717572450903065068638638609506808950759768663333735117402), SC_(81.55360245504441686527910864220010764542026336630740606229239169661041788764418800722537023927646871) }, + { SC_(99.6461334228515625), SC_(0.12698681652545928955078125), SC_(88.37737888107073636627500424906781041431096054016259174725751830523083014165218482437664265598787634), SC_(111.1158076628131535311143363083607562906226185676374371847096774914864724460972364755857498710894997) }, + { SC_(99.6461334228515625), SC_(0.135477006435394287109375), SC_(88.74535620460806340987854361816128428024320481905389016348646200088835179377114089479753531259500676), SC_(110.6882616289176406115134461249367870803764967094106173548894808946298474490315397099426966057522927) }, + { SC_(99.6461334228515625), SC_(0.22103404998779296875), SC_(91.85017604570320860123048741031650279971434577969683060829287638362971682925038461612569617055793725), SC_(107.1696318444364396459981501446757609223861217010281426345016448193737147409852464617600305678038153) }, + { SC_(99.6461334228515625), SC_(0.308167040348052978515625), SC_(94.40442088829506749763117819247805230794301031739748106412466854828283371649057563467379541863694276), SC_(104.388897894676876174661084670063039489707876655517563928756296867121616845615313628471178466624892) }, + { SC_(99.6461334228515625), SC_(0.6323592662811279296875), SC_(102.7197092844094654604597714681631790586173807125641768128671855549332709686069679473684528779727183), SC_(95.98247945192366927890502346818486620765311827085464016312581482129126586465008442638253208379782958) }, + { SC_(99.6461334228515625), SC_(0.814723670482635498046875), SC_(108.5032548424476463598183504899336466748975635468938732532626605779594870328299994789652482831953253), SC_(90.6570957304451106144185164419238349454797081258790911488865971436148449646391904615295180665722972) }, + { SC_(99.6461334228515625), SC_(0.835008561611175537109375), SC_(109.3370293976377603308634730796822871722180822156146079704298307111056783571551863417375442399229845), SC_(89.92137944342759462480459816579961426775458462692578398945994611785848960085110828841885491701675714) }, + { SC_(99.6461334228515625), SC_(0.905791938304901123046875), SC_(112.999601070860905668295141701157176040361351555369172846468529901685867407811198602410255587767563), SC_(86.7791783017191311959905806085341928361560825596664875827422581491589972224048336103416333886978357) }, + { SC_(99.6461334228515625), SC_(0.9133758544921875), SC_(113.5057019266017757553572395745632780679072776470909404929295494401706417401173397780562513398354094), SC_(86.35612234649621027962836929188910335213017738233582627676662911520231216242529540127044730529945437) }, + { SC_(99.6461334228515625), SC_(0.968867778778076171875), SC_(119.0637249422376961671341002862243780120617645758579051054825546123558214039984323476889351592427586), SC_(81.87811103947525043911330324465564757254090604246213044539733449282580273670542563644266281418367064) } + } }; +#undef SC_ + + diff --git a/test/gamma_inv_small_data.ipp b/test/gamma_inv_small_data.ipp new file mode 100644 index 000000000..936577b9d --- /dev/null +++ b/test/gamma_inv_small_data.ipp @@ -0,0 +1,239 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 229> gamma_inv_small_data = { { + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2239623606222809074122747811596115646210220735131141509259977248899758059576948436798908594057794725e-517862)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4348301951174619607003912855228982264838968134589390827069898370149065135278987288014463439625604227e-34079)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9832661142546970309065948494116195914044751609094617663675341704778529043412686011701793912754530322e-501622)), SC_(BOOST_MATH_SMALL_CONSTANT(0.174464879621346471044494182889773112103066192989857880445657763562407515813032064473382568887549155e-36531)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.8367188988033804556441828789142666841098768711906267440588049611090664598162301930590308375972597743e-378782)), SC_(BOOST_MATH_SMALL_CONSTANT(0.258455732678645501224573885451125893770282157149004436646252270592694652815341234774299743101856032e-62682)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.308167040348052978515625), SC_(BOOST_MATH_SMALL_CONSTANT(0.2205873777306860224249147129964654825654772808335654855092638386176586877302351181235652317545193535e-295387)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8841860184607764624716199689352601821223421516721282102648409952215997935928956722103353938434066324e-92450)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.6323592662811279296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3493006236342872627718268547235558974110453236408370553242260146873678814721124761086879547194341511e-115006)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4608598583105815395151633406100700185774288566360162761619249236808047706604292396779780216945145655e-251105)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.814723670482635498046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1307814977375223234061697346935750965506413900088172878810937417241710162327371948752530053786611785e-51419)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3622247004413029118815942894731774856416774764001901351075227450895011592470141353244995696694896319e-423065)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.835008561611175537109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3407200009988954922968231040073535782592944660979975072820794043769535120578823528671413904276314187e-45248)), SC_(BOOST_MATH_SMALL_CONSTANT(0.40372680297867266879468280760885460454290870234025769400910020388606341293084660523346882864736631e-452163)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.905791938304901123046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1289547938840298804104533289571370292449761595410863583261482629787772675014213604864800473713128265e-24829)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4473385981314550569653428208559396173592281928696895222750064028650962596615670418178431916147100131e-592788)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.9133758544921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2660916718277898648353162270511365962890563186837505224306478516822433113175485818467727525519960066e-22737)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6065564736497368801762295026989180367578487822196046971460097223432141011146248705024295896736469553e-613849)) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.968867778778076171875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1473132778697774093465699897329346789995005439716750867355563556776005696738800270428366009192934656e-7936)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6008673144885279892931053509531579477623416731984800692761855880946172764550286223383877167245766902e-870647)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8500545195325853360129687030255002945655259106744411868936199400386357779413785394252606937409149347e-413825)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1168004659330719336985231445704960139768804061229080049955849277439667205757483213992057220049540351e-27232)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.7202712693841376368216354323694296792211539722228687704587193232171864702453427173668794173358037833e-400847)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2252614264634486253201447701279415032436991420138140648287940022937659078016357382571415445200213866e-29192)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3000327882810984063485886505392286395644270610646887344028999837107973933925695988567563167728045096e-302685)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1498490062697145666757563645833685565995577423177516513148297134617720423214544808430852418820345691e-50089)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.308167040348052978515625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1307004433406758598014428627573055623164994782163856086219980606033295840179348304515381612579150121e-236044)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8660761056125063203743178336674650301770491595301193399539391174485981887085468404902606561784465577e-73877)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.6323592662811279296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1183316844216403526657583856991948601012391672622156410900987978451851712537691445331530312832797228e-91901)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1591103740030003499118723418460479045052885251014777131066205491018123438721843692240137750119143378e-200658)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.814723670482635498046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1674134325233505112606127764095613275142520744956844047709789044616079191515075547796473275770297974e-41089)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3612384181299129469928622773435995792869558303198558837492185251476669534034831500723829680749590518e-338072)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.835008561611175537109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6513834432351054603935790801928696636769937839154029815627322893900997971153735962011923847861105547e-36158)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2131860779789139256037424176809792095632204680337931857718865949785434825481960848149849797507583928e-361324)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.905791938304901123046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2178005192333624215784803979717837598562757410620706503281900091107825680350931337396209745019443998e-19841)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4588085686858952503042372234625485480201105499533793863948812241019952913466033029898154440318470087e-473698)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.9133758544921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2044546663391562477705354540370760821409485274148331480980359986548683615601729039239239614213065235e-18169)), SC_(BOOST_MATH_SMALL_CONSTANT(0.7629190706250225994074616748192014275571599576934851198947217095948168969106405661485602778753139218e-490528)) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.968867778778076171875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4096487433832820170639333743831954761351590021205697452562807451168473548459292965564190974788844749e-6342)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1297397706877886168379273776356177633807822967666079798581567618567115144239687805362946264983224597e-695735)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.460289138417023240211835453578728773675893958998560741266616339802513531273727174963248143404409346e-123279)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1227830593913913689043483463822718345251662053270570059659747620207531684387617971000150489495390622e-8112)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6439991263768059081770908658752929598087302065287439367522303278837306676039083594400840449710127147e-119413)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1936099411280065786600982265792717722767945024296565235561154800531592756609798398701501116557434413e-8696)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2064880008938546016135832883384716687050715182089334885089172611730709160883330305789994119189833204e-90170)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9636789658116208361662045675832611481515953065813422246552622845538828381107902733604814371406262203e-14922)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.308167040348052978515625), SC_(BOOST_MATH_SMALL_CONSTANT(0.4672763627314931787409452529965189883928299396526058431027743531008131781333308125789010166445570443e-70318)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5333958645484846264899444976530540348886306684971665853490471154195979393073606296468477524956455995e-22008)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.6323592662811279296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1232079542911688319553284787645084489874316487664902104337227730213965329139279051931070447347538552e-27377)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1745508475051527213009559427098382072109145551947732820968960362083588524860039683359355038443208669e-59776)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.814723670482635498046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1296871584563229453031476552376127081733495432987283917208707733104304941994062901047954719016264728e-12240)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3119684049016554066402196968135164105103042293007478934952055073327703314807997817770702753165916888e-100712)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.835008561611175537109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1744156521766280393141688111513263176846896834358940986864024481897475752003777342235119371016119832e-10771)), SC_(BOOST_MATH_SMALL_CONSTANT(0.414282922235332770074768291902894089464647802773088955269313913489638472173573774702189380297337679e-107639)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.905791938304901123046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.9134084128666229552771771583922013819958821761786059137020004689307969234520514787745058008336030516e-5911)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2085723217142930347094312090575084590094262400334108078273206186864903163220911787400224976002324296e-141115)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.9133758544921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1106626349398291975361851522331692345605272541414957089479290323484012747768775482956833740133997023e-5412)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5019947814569084821972649400070925089480757099017899755164384177383260941610254064551897764836241042e-146129)) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.968867778778076171875), SC_(0.2608738285704836848239817641016769732591640383513307387951906227411127886545943640386587729196529798e-1889), SC_(BOOST_MATH_SMALL_CONSTANT(0.9391569555686887348572282531856270103209070385690661485800330330324704801693506326997201625650584228e-207261)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.339390501360481883384596846727229310838380493148059239101677398294559127652204528478268766605745691e-64017)), SC_(0.8930970995970272744149034236099991596203915342210295009610487968429898591362281212215882612432334172e-4213) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1478165479650781320569422389970436453616410129224510514070984667774343182955852078638154528221379033e-62009)), SC_(0.6166505887233514954458318978151305493474273629828733433707686152568316580969117228752011354754100409e-4516) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2636223483866300712285073854631877501273640030610221560132162856371236675991856524728587705746297074e-46824)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1179070268459566531464548375815239425103518998753490696351340626821057948491563316259813424943317095e-7748)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.308167040348052978515625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3085719676015113786900559879398114388323199985826467699671192420873003184123044267039751593375655573e-36515)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1866107010075390801548946745085437000221498205178902450996305353941274930070444383308861599008651802e-11428)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.6323592662811279296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7743073115105881135630532411055705358953657608902295030130428779685124579667759424182550282392251774e-14217)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3891618185709909838836983643181316431906213234898591756880393231944196898745253316876972214816450983e-31041)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.814723670482635498046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.222216709392403859077345757164648641055669472167062646627925353942822049167347003774956605136793258e-6356)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1553098038974094715628835971928945389167186664370201233578708844500900929376674522237036066734443409e-52298)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.835008561611175537109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1762412434192703586953808931252239830607212327509661647619944439092944014510892565024867820443452495e-5593)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1427522693565869357184324274786304328120490007393000466898389151996230157936654133010870707870098114e-55895)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.905791938304901123046875), SC_(0.2259490828022611962651286035615477033923299926896382236832176774513532167028895827574135582466792268e-3069), SC_(BOOST_MATH_SMALL_CONSTANT(0.2241017130581831897730462424904751051004418852587147386250684104551402650352326106103864234388080914e-73279)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.9133758544921875), SC_(0.1005028821672110309415483560972173499716663965719086172500020531716576068606833471119991129664424692e-2810), SC_(BOOST_MATH_SMALL_CONSTANT(0.6979771306818377405428798318204058016896524472057195949985191958384843690760804078528960881333370124e-75883)) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.968867778778076171875), SC_(0.4399884537105952873524158618429125109607698051551640190711957784190261472987797258480803340986411014e-981), SC_(BOOST_MATH_SMALL_CONSTANT(0.8636123050850289155805959438262889417641775752173387265269754240416817175647540561424609415147039372e-107628)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8931367727030424252994406039858535255018561374129051577258665728233205820316949561800237503288164831e-52118)), SC_(0.104535845548742628763976899233973069829736957363121321494519130075530673267495622335035426409117717e-3429) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2589093342255974756648686300693355584048765521630894862720053856422193831195464113676002513110719721e-50483)), SC_(0.16198355017053579069996072009618961612118734166699913346916923061929129768370182367736118778593987e-3676) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1131654056362539852227074104110635132727613506886451792169695589196046225490082242712248876956203819e-38120)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2418895718086420844325145820876239350943692602292988120400434717351012753484624854522329731793070942e-6308)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.308167040348052978515625), SC_(BOOST_MATH_SMALL_CONSTANT(0.7737905254468185735537123684595618067772979718013636259212988387325859473074990334198003279697030936e-29728)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3789484131191558145146646615273547527416033448113469449596149406457540248009040893261262302435368351e-9304)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.6323592662811279296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3137871276904600122078241916282438984659729219024238596335891667491938041450321977041506616782238e-11574)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2965711263826589720683465047050190541366519308458462201756314491278502965590196986656248475977616153e-25271)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.814723670482635498046875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7326832021626652729926634452678165177166851058442304763758241120359336029481475591271983428389901225e-5175)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2318348542835619519901827000824812239793449432180459609887843839490589299765256524982276851927704163e-42577)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.835008561611175537109375), SC_(0.9072264440263374752486629470877711396201875705326118961327802635563036219892924006850270554141376785e-4554), SC_(BOOST_MATH_SMALL_CONSTANT(0.8711416684170844816954635283039605021423223228389166020499752751997518422712015098390278042969483672e-45506)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.905791938304901123046875), SC_(0.7733918387072244011789525914900951463450874222624581078251551054909444827960192900592203159773605989e-2499), SC_(BOOST_MATH_SMALL_CONSTANT(0.2571614323671499433984893431798511621767008667253572255135699548767389412223368502318608579885806739e-59658)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.9133758544921875), SC_(0.2880392224683552008509186538991920740926457663134606188864795658000814467352709744686493645033034548e-2288), SC_(BOOST_MATH_SMALL_CONSTANT(0.6907597702339754306046761268666758595826983111062588436918559231568829549328274669882079071902690878e-61778)) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.968867778778076171875), SC_(0.1022975882773694387190778303740674368993455977250017664945426765113234255858470803315310166922905371e-798), SC_(BOOST_MATH_SMALL_CONSTANT(0.4221221067519434825549040047213825597247842932163338061854159935919427768014137623800912125956789909e-87622)) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3495586827191531770535231367080732953937412615151725020717996080086485589322652358680193672275949898e-14916)), SC_(0.1427408156921550203964733950491640458157220298138194009074319242547971197914912790465510416201935332e-981) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2135466730997637347930895979558997098695943227325314240670753140974513599520909745766884732886655805e-14448)), SC_(0.3289650507739338949969385888328899090131305388988539989881991832060549330782773650444691368664734468e-1052) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.345959891505994573920146532876979428616649904934071674464948074830873268130904440040136502276139602e-10910)), SC_(0.1922865381371752376627657245783892335772421066560217575311011311368498385558583990275666613793226423e-1805) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.308167040348052978515625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3829822614343259616831020022328609580180989772106774197697228391575249415735806534706101978431990667e-8508)), SC_(0.7572927936365265126558450099180450202432844005568818989453609586651932854239926958201865023965242319e-2663) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.6323592662811279296875), SC_(0.1505939828418726687381398631458743669409627162041838070367135649373806227725011954989680487803891401e-3312), SC_(BOOST_MATH_SMALL_CONSTANT(0.1162084281422969377226523082569747326821725361483871487282780438115902733161392316080316605540230283e-7232)) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.814723670482635498046875), SC_(0.4878605561199170254993555550797777052716601720140458448451172217585515433949731427090377765716097212e-1481), SC_(BOOST_MATH_SMALL_CONSTANT(0.1063915552171246679201552775630173002963289477510275148968381199465573516908634786030473651045783934e-12185)) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.835008561611175537109375), SC_(0.2793510340491223179257861943279119048708385675764655558162807552719005454520920320041493548667648507e-1303), SC_(BOOST_MATH_SMALL_CONSTANT(0.8062724058997189528788123299280499937216685401578538979985976698039322816246111574568131825618363452e-13024)) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.905791938304901123046875), SC_(0.3723369364599241695177888518370141855064474706077264974725355828069490776654597120310317692557528914e-715), SC_(BOOST_MATH_SMALL_CONSTANT(0.2675898630365685302839648550793845147075820261853792964188019963414156834541244282744703718483685635e-17074)) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.9133758544921875), SC_(0.686661318428780198379649389187459622222641698815843660306340661130449872396450257428209063508091594e-655), SC_(BOOST_MATH_SMALL_CONSTANT(0.6346671704911213035096115747653835531630846832152154403390282927003498855267031866758008107863915401e-17681)) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.968867778778076171875), SC_(0.1408309142624800225107896427273371067150419787065439439024094472721083328341474031598813748773825589e-228), SC_(BOOST_MATH_SMALL_CONSTANT(0.1389798156337807295947127479191824417596961602671849528553981940395023410910494839804442748480910921e-25077)) }, + { SC_(0.000116783194243907928466796875), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2217067042070261656114441331372031056796482747774007544530459644859070550516331388940310599871235441e-7674)), SC_(0.5221646641482264704755333400660433306534344743849778997838663392671213632920091372806932416847456426e-505) }, + { SC_(0.000116783194243907928466796875), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.105233435264908696721158867206120047209589060765634758100281587073699030442056794890590820165442202e-7433)), SC_(0.2370236641827873916593769301860779629219958726808667166915237399481829007502028048228683540298377156e-541) }, + { SC_(0.000116783194243907928466796875), SC_(0.22103404998779296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2720692749476253433194485594804086624863867951230595896914130979792434561231106235256886587990710606e-5613)), SC_(0.684727384218509774616151552639132642516873634348657590026321675141070778694592753558587501067032324e-929) }, + { SC_(0.000116783194243907928466796875), SC_(0.308167040348052978515625), SC_(0.1945012262728113947174092742153820077658597862905731912818669165842855882338833757206696600313843808e-4377), SC_(0.5010782163204587164990362139900406618666271013083021513642451903006783829276845763652918240207035204e-1370) }, + { SC_(0.000116783194243907928466796875), SC_(0.6323592662811279296875), SC_(0.2678076814684253388207891549015203441815387696909210275114031463037462825184779525302927782878112018e-1704), SC_(0.3355699609556020763761818703516660718965707115611808065243164333646480380401408451621152937718649945e-3721) }, + { SC_(0.000116783194243907928466796875), SC_(0.814723670482635498046875), SC_(0.5519443694295817358667560227277734050233658512973422585235619565148594801790465772880702625518466729e-762), SC_(BOOST_MATH_SMALL_CONSTANT(0.1521784147836719873429974745180948701783240959166067438690358394858795409898569420554712263193503787e-6269)) }, + { SC_(0.000116783194243907928466796875), SC_(0.835008561611175537109375), SC_(0.157942290116999715496899441614386437418372850300529884937353323341838987405061685005424700586694651e-670), SC_(BOOST_MATH_SMALL_CONSTANT(0.9300638747707064248838234333003135359793243459187200542535851863926418832283653872151990341768442837e-6701)) }, + { SC_(0.000116783194243907928466796875), SC_(0.905791938304901123046875), SC_(0.6156292720469250152191172977847735846672093818556639529154131998043270417507793402988855017473876543e-368), SC_(BOOST_MATH_SMALL_CONSTANT(0.9835608551327350462842211000204483083175377942415395254552324222852108420746589293651996143411926356e-8785)) }, + { SC_(0.000116783194243907928466796875), SC_(0.9133758544921875), SC_(0.6253743527010208852460893728919175814204088534982411548439945271078509605242716100053403273517595345e-337), SC_(BOOST_MATH_SMALL_CONSTANT(0.7649623463360145768926462776036988864408675923758317376955853151958300585672667306524247171463173293e-9097)) }, + { SC_(0.000116783194243907928466796875), SC_(0.968867778778076171875), SC_(0.1361725185925066404699231307445713287240077451502469225873588813126039928575926034147580871482594361e-117), SC_(BOOST_MATH_SMALL_CONSTANT(0.1970152731145422501566851277990128812683805989338922500352787857395891626410876936571713429989797078e-12902)) }, + { SC_(0.000149052008055150508880615234375), SC_(0.12698681652545928955078125), SC_(BOOST_MATH_SMALL_CONSTANT(0.6389419951365505168213742535607083801424774564325987934934320986183843469503298391268834096210384788e-6013)), SC_(0.1132257114686176234011736341834046927596967272385604144092389093309188024362428818319072190846006759e-395) }, + { SC_(0.000149052008055150508880615234375), SC_(0.135477006435394287109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2381927813471867112836439772059583211544291930893077773183488576064825635114446625206544102956590674e-5824)), SC_(0.3792814100179551144868861498633247032095979823165205190557116303390384013164367512797566918532298706e-424) }, + { SC_(0.000149052008055150508880615234375), SC_(0.22103404998779296875), SC_(0.480502281371541323510453286429380108383847434196562929430889417823667454309781431802390267860464642e-4398), SC_(0.869923210970446775403812791329035518913267972514758421741352735004103670263658218621055807149889839e-728) }, + { SC_(0.000149052008055150508880615234375), SC_(0.308167040348052978515625), SC_(0.9579390051284372806338599117207986988623456690676593707891369126675631673683496595535062285698484254e-3430), SC_(0.2027352139344072302169602968458387297725861222591064073568084413094637648206161549322711611266665852e-1073) }, + { SC_(0.000149052008055150508880615234375), SC_(0.6323592662811279296875), SC_(0.252715079209943016894239891780405650507203415479186589329662192446200300419348083258509471825568878e-1335), SC_(0.1403081619061688835919802963399237605442962090617704076725629642161530595967917719397788786896506275e-2915) }, + { SC_(0.000149052008055150508880615234375), SC_(0.814723670482635498046875), SC_(0.5148574706569430386641987063601033253830428118093670131363449532199675730799583712667871199946857343e-597), SC_(0.319031006547729922943758015717164739726038835119416722315254234904437269217055210321155694677845045e-4912) }, + { SC_(0.000149052008055150508880615234375), SC_(0.835008561611175537109375), SC_(0.2336232060636468680298763086592315128520864805577827877335195943286399564396468640251084171088188349e-525), SC_(BOOST_MATH_SMALL_CONSTANT(0.4416237396840875270455255045802517084401101447247106118309253277459771697052944520730353485873255011e-5250)) }, + { SC_(0.000149052008055150508880615234375), SC_(0.905791938304901123046875), SC_(0.2820619087618214712586580492879138245117856541724464329377249767437182870498139716594924089127883574e-288), SC_(BOOST_MATH_SMALL_CONSTANT(0.686841976395102755795354846511530418971756957162735766100482927595263735008547634284729277201118786e-6883)) }, + { SC_(0.000149052008055150508880615234375), SC_(0.9133758544921875), SC_(0.5551180136919825874947373282742567924663694577557624395315113366298468961803654270194668889810023739e-264), SC_(BOOST_MATH_SMALL_CONSTANT(0.198311682935662628620401335083784485107643910427839233819119308115206998402883037266058134006220653e-7127)) }, + { SC_(0.000149052008055150508880615234375), SC_(0.968867778778076171875), SC_(0.3954218544494374628285692941954536478743569125315731147622958212628060558583646866269887091192423723e-92), SC_(BOOST_MATH_SMALL_CONSTANT(0.3927403032923167204720626686805690283947153220433473944029398069872610810854541045510542047794087263e-10109)) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.12698681652545928955078125), SC_(0.7152190427298601594571159938212251086727382665743757471985690406777609605559890885949770886823916422e-2249), SC_(0.5699249277609096543624494507830937487962804479457359767676834065232598749036497233458920062585731546e-148) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.135477006435394287109375), SC_(0.2409135648458346302800756296889879854959535365354709895644810074566687455139859746087284776201028457e-2178), SC_(0.1276198129287563187800451501928656024314768400617821939379735513033808929977111820512238247732326539e-158) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.22103404998779296875), SC_(0.6802256292332066376146874410039580432569421387156606795388161811485643529868965898859950121665320351e-1645), SC_(0.3483577767702590198649809139957360887592650219312098941409457297880080360156436690426366723037964841e-272) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.308167040348052978515625), SC_(0.9669745994667051072958033562210641197812612386155295937654192982957413364712601378577440225372777341e-1283), SC_(0.1872178312093914666668353664699354048359196970346066862643846850154220490587353027681868660975081806e-401) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.6323592662811279296875), SC_(0.2078680364196807438298849740835285317736801092810921854376625185494666027388757500531965937494823423e-499), SC_(0.1940980586320713711601009157647719108902915992900798566465326564277930264960553562790389101222581526e-1090) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.814723670482635498046875), SC_(0.2831424539072253988416634201709116176591661423194009934428563883171035338046521635771507798074786634e-223), SC_(0.3353627472060982062455262714971853766759653506601897258914838347358670615581935804795450176146751688e-1837) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.835008561611175537109375), SC_(0.1787732507262943521016753570313681503916005001825267040428291048751405389623124964236582735328991528e-196), SC_(0.1456454013656017509017193130193556406330581120853832120451513707811484896457312901359168156072878575e-1963) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.905791938304901123046875), SC_(0.837597737033172538479888642057065130353796165100392988262588362474329484706276059971274306307155119e-108), SC_(0.3008625919959673243147469221155123482674030292229970752872798035256229502042306937044715207517659813e-2574) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.9133758544921875), SC_(0.1021468449862823305724475539348472481037993301048482146392495351886035410769693162884352551561523984e-98), SC_(0.1043268069386227245142603247836117871751827097506460570358735405648218855837835551714018440441663018e-2665) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.968867778778076171875), SC_(0.1921625974656960084278584956148389202015121326275638657364605765927234103392106212033821685696706061e-34), SC_(0.6832913251746222014629050560245817851054188567279554314561011277334087978083026411495512314152584718e-3781) }, + { SC_(0.00063875340856611728668212890625), SC_(0.12698681652545928955078125), SC_(0.435951734378349504670143158799756189349632667643742866396243382027351113858457154770515455172933863e-1403), SC_(0.2598364282807541353448110171130121253417733753751070504713968695495643543375162712791810949499302078e-92) }, + { SC_(0.00063875340856611728668212890625), SC_(0.135477006435394287109375), SC_(0.438798951745511504942617484037937842312650500233507360765735632931970912394687838070336110981145645e-1359), SC_(0.5889950801941227664825867161625817382134336618358372865614870963034210185897851485297025871941305886e-99) }, + { SC_(0.00063875340856611728668212890625), SC_(0.22103404998779296875), SC_(0.2937832652187445365522059951783816698628857990709748945948205909114811170011660290110319809151999498e-1026), SC_(0.8248247424680557124739655403382142597284692730327890358590707801455920937695292335324732929792733254e-170) }, + { SC_(0.00063875340856611728668212890625), SC_(0.308167040348052978515625), SC_(0.2624710128964698602781692379549822996817788462277196737813463196762182169598881287389630123345121596e-800), SC_(0.1834851239042801978257387702640984049496558520540791424871676680462873841394339231917050408059790019e-250) }, + { SC_(0.00063875340856611728668212890625), SC_(0.6323592662811279296875), SC_(0.1408263333403943388213811919547331502465208843711790106320604018633618989850176084161430265212442785e-311), SC_(0.2504797654775849465672851883838285806350916920754502829556652423197002579757157641758806147030921615e-680) }, + { SC_(0.00063875340856611728668212890625), SC_(0.814723670482635498046875), SC_(0.2702905140450769489562235446380298080970743159741668229553875254451415451021832338127459148340572674e-139), SC_(0.3058497706538771128912496243510323679002380098028763121648416859749854278370000559274689077369791842e-1146) }, + { SC_(0.00063875340856611728668212890625), SC_(0.835008561611175537109375), SC_(0.1421767099981648653216354287198064993440984578703213594813652601477915702373642195351993849051038935e-122), SC_(0.4433466932536742341010245725866726427924764930888699154511124712548631101699699061481949648355932349e-1225) }, + { SC_(0.00063875340856611728668212890625), SC_(0.905791938304901123046875), SC_(0.298858019269062627575202640806018466547335880039171436217152078978529044645241784040551624050656216e-67), SC_(0.4302912112315149668479478913707507921397882476078881327110897753950280572082479742655204690513801732e-1606) }, + { SC_(0.00063875340856611728668212890625), SC_(0.9133758544921875), SC_(0.139456102218711708875141870979554379452297019547351606137029613857321058945576300566095331573197826e-61), SC_(0.3722967279193048586273151243612803789662566758954243628128337065898874242714110766785997687377882095e-1663) }, + { SC_(0.0010718167759478092193603515625), SC_(0.12698681652545928955078125), SC_(0.3636911353163549700481828846437202047662394842560639671377719516246322218140213470369307105316149577e-836), SC_(0.5277003842175730738964234523637928842336426857103517172939274726818627697185579198286277884628995847e-55) }, + { SC_(0.0010718167759478092193603515625), SC_(0.135477006435394287109375), SC_(0.608681406840184818556962671283859215946482995246082277766118830672764649137516873090522234937994091e-810), SC_(0.5787872129486312445598910001278113860406181973375126228384162537210307678911216065201460866655035651e-59) }, + { SC_(0.0010718167759478092193603515625), SC_(0.22103404998779296875), SC_(0.1358961275247621619932936567989389579760774814970527979419173359036601365076893330734814754102481618e-611), SC_(0.3443094278735170491727472862019685791797372605756777354390510430208179108157623980508595400183125822e-101) }, + { SC_(0.0010718167759478092193603515625), SC_(0.308167040348052978515625), SC_(0.6160606832890380935878330309433382797226441857446258120070639898258048174846141324813487571158125995e-477), SC_(0.2962238271406780552439084757135629175683912680406991277734574708116269531527842794576484471201555172e-149) }, + { SC_(0.0010718167759478092193603515625), SC_(0.6323592662811279296875), SC_(0.1121878105670253144651925010226465353820830037935758546168041328200407250360767463503314579549909518e-185), SC_(0.1958803084188248146286671169689302162382701484363106711288736656461400909819246366412581721629969734e-405) }, + { SC_(0.0010718167759478092193603515625), SC_(0.814723670482635498046875), SC_(0.5281561525547911086654960077765381038207217825484576875912612245363920784399137086804664497139148268e-83), SC_(0.4257500228385779172178559226641569865858231947343082463820866363553421388529335473275471368837060372e-683) }, + { SC_(0.0010718167759478092193603515625), SC_(0.835008561611175537109375), SC_(0.4871990510229756393012029517376866933653428447630385204698493526679481624108090602925172311680432997e-73), SC_(0.4414523777811261356627457039049220513512707045266034433295015354579450541298739086187595602928279031e-730) }, + { SC_(0.0010718167759478092193603515625), SC_(0.905791938304901123046875), SC_(0.4544106096831925883440844414388864898463879116850082772484152477000553099135173255580141883657390329e-40), SC_(0.3790569558904096747865071553590980521152975863683255524137956053935724817360731211745328186192255967e-957) }, + { SC_(0.0010718167759478092193603515625), SC_(0.9133758544921875), SC_(0.1086162759431365124829677514910516885043104253508798079993173993707145080756341442382449999133012657e-36), SC_(0.3731311425362206946529801716687133821376192736460326608901538020795478287325694488364611177806158989e-991) }, + { SC_(0.0010718167759478092193603515625), SC_(0.968867778778076171875), SC_(0.8601148345312941322738150573063841495188261303140333197907871550285714600859919936165421525265718962e-13), SC_(0.8352834206432652444362710861342143756206408334103821708098446058593603133470885322865713545764683793e-1406) }, + { SC_(0.00302191521041095256805419921875), SC_(0.12698681652545928955078125), SC_(0.147848456885616963723858782577688099464687345497584971907959533932848350397293187566016020419464683e-296), SC_(0.171095196212328617510769493652594858040119887670079283811603189789776654658126040015618071197771285e-19) }, + { SC_(0.00302191521041095256805419921875), SC_(0.135477006435394287109375), SC_(0.2957040845775463914630038837259432330963758820019079082432109472364649718465076614337825618561161409e-287), SC_(0.6741345202122238953267423202125420728578822656607145823452010405613191732640708785839767750075396765e-21) }, + { SC_(0.00302191521041095256805419921875), SC_(0.22103404998779296875), SC_(0.6629351131315922881665344686822927576739593099159434514320097662182695263750632548413010637690364644e-217), SC_(0.7114216068371001385039281525729691284058986283072617729662881038438840314208670783902168223858121757e-36) }, + { SC_(0.00302191521041095256805419921875), SC_(0.308167040348052978515625), SC_(0.3815769167836024805134076416192047910095961222261460332870986405579422427921655027535859716936975843e-169), SC_(0.6371685465093446409752543968505366216352552332836247579191890099605647310988615239262857932799766056e-53) }, + { SC_(0.00302191521041095256805419921875), SC_(0.6323592662811279296875), SC_(0.7694280395304282847410685434446591615706979969704299031490513282804433883328732698081496647926271541e-66), SC_(0.8752532760684835521550167862674350105051548504587214897847872524825568250927165306635965147698185443e-144) }, + { SC_(0.00302191521041095256805419921875), SC_(0.814723670482635498046875), SC_(0.2005832956521630211437152667735208325796416832199594115003767245066538476897352327765893343091455703e-29), SC_(0.2886168571056877419355854554209175661893028458797529230518602296422070194886678789038101987943260869e-242) }, + { SC_(0.00302191521041095256805419921875), SC_(0.835008561611175537109375), SC_(0.6865528229747848189232773661997763248093499850406354042275021912389583061913029394943159696972353458e-26), SC_(0.6250000490477042500136121049490793548266462692265196607061120103479786030609161693776398430368885384e-259) }, + { SC_(0.00302191521041095256805419921875), SC_(0.905791938304901123046875), SC_(0.3391755135462610074415389891958859539997617901370655933508544831879396613673036144442847305192589105e-14), SC_(0.1818675924626906137616786515393448442910052617644540234110899175508311562676748949563021061222052779e-339) }, + { SC_(0.00302191521041095256805419921875), SC_(0.9133758544921875), SC_(0.535422015430024406152742721696715286234084249588450655449294177375047451920120879529838516946459663e-13), SC_(0.1578208893318344169144307257243732070782315536202416713146132453636154945574870523695843695112933656e-351) }, + { SC_(0.00302191521041095256805419921875), SC_(0.968867778778076171875), SC_(0.1603655936658238507041762864095609991206409637781631862917716472622350223709417432611687870638492434e-4), SC_(0.1347593915139988423589891399900730404555177905402429752776186845477701283560229186139855251364605614e-498) }, + { SC_(0.00499413348734378814697265625), SC_(0.12698681652545928955078125), SC_(0.1960043160161097127314765902342028029637100032858359797167497142970577663508673923178770845319031247e-179), SC_(0.8737798725189214432173030452603586609683133445417930658285549865482753254167754675828194725150352446e-12) }, + { SC_(0.00499413348734378814697265625), SC_(0.135477006435394287109375), SC_(0.832262148614591833675964023466563010668606253010054406826287456971856701489910398594471111367044182e-174), SC_(0.1234679433161566505478878684685958790961520769448464716935820169690448511156911545087941709206177126e-12) }, + { SC_(0.00499413348734378814697265625), SC_(0.22103404998779296875), SC_(0.3082648337777240938387316277514192190638565128784838738703204529112823541784513324193198708181720523e-131), SC_(0.1069809851954365732690433666374001825368669283755370002586551197744912384639257845266311057466705445e-21) }, + { SC_(0.00499413348734378814697265625), SC_(0.308167040348052978515625), SC_(0.244474088855515549719549873564983683372478191876556137745925680554692010166727535433513521160309518e-102), SC_(0.5173186755917748102875237344943846806104778231305726111910816409608983162590944495635303589146888933e-32) }, + { SC_(0.00499413348734378814697265625), SC_(0.6323592662811279296875), SC_(0.7890682362375343388552652074005659698032703932054665968930029754030761295033810973289026527912295319e-40), SC_(0.5416579185618341885238133713302699218827874081717350730681058553770746092171688571578695678273140255e-87) }, + { SC_(0.00499413348734378814697265625), SC_(0.814723670482635498046875), SC_(0.8555746713015471936194648739785852738420437331993712970264442131065331596959785507180943772297766965e-18), SC_(0.1390176915155720203520073171375102444583393444625494006007267413489170702474379749611143944459906321e-146) }, + { SC_(0.00499413348734378814697265625), SC_(0.835008561611175537109375), SC_(0.1177296970233201556610850952072859274505621270298597634555491681817196552669783944282273349530020469e-15), SC_(0.1146919928623087651322602095529651080113416847530599334879782421117453132347830595672214998882693604e-156) }, + { SC_(0.00499413348734378814697265625), SC_(0.905791938304901123046875), SC_(0.140182115555967781943563614615247496730452325652948114853358198213045387687075435576329039573798008e-8), SC_(0.2126609930456338792647930428291603776712075748226084115023911904315969452254195862487931115193344454e-205) }, + { SC_(0.00499413348734378814697265625), SC_(0.9133758544921875), SC_(0.7443178760362183879911334884783828565596407069447100617344709236008251816280960984096876505664882645e-8), SC_(0.1069802641495460304001399364295198727186160551517817761467497440353111514593626989309613100748853985e-212) }, + { SC_(0.00499413348734378814697265625), SC_(0.968867778778076171875), SC_(0.001002782701988676408699076824248552804317085346771311231406115185829175623758404483762790928035661549), SC_(0.1094258942968236052477371715322239109504537070196869847801765306094952692940407904732024959605867895e-301) }, + { SC_(0.00928423367440700531005859375), SC_(0.12698681652545928955078125), SC_(0.1655490464189179008433039464428648955503509347909130493109522912597237241958388863718497166454003528e-96), SC_(0.2511892383034341936236921608372563719085453780360488901586948806602719227382818898740466381871758172e-6) }, + { SC_(0.00928423367440700531005859375), SC_(0.135477006435394287109375), SC_(0.1763243690192028224701803302285803485696184516790561347225377139581977827436522916556354689200859928e-93), SC_(0.8767072859304154424188321298914872141291729196263624314193204640959152058672909133320438239736743333e-7) }, + { SC_(0.00928423367440700531005859375), SC_(0.22103404998779296875), SC_(0.1395268386741118006222074665192542100298344858095902215103247576786883530666070051947950447778132896e-70), SC_(0.1169851770326083963924900602686862858269576479470988689778890500266578257470688071876653763458233191e-11) }, + { SC_(0.00928423367440700531005859375), SC_(0.308167040348052978515625), SC_(0.4898293707911054311574077227106293209623974966337211669027010089486565032157441679873097914324657413e-55), SC_(0.3305499696480968213607185416034676582433008909848636192837387930427940790932001427167053714152028616e-17) }, + { SC_(0.00928423367440700531005859375), SC_(0.6323592662811279296875), SC_(0.2063208559211849039281825369458618894800841778446082486779938762804237213895886089778065430981546666e-21), SC_(0.8802852822646538740098296657571215554542316529460859269157994251482539622501237491021007572223848725e-47) }, + { SC_(0.00928423367440700531005859375), SC_(0.814723670482635498046875), SC_(0.1470919725037019237635552858366387887228556925525671168915044276220267359503421807960277057091164595e-9), SC_(0.776040877472254293052049173297864027873371594667142507008915783811615435233212971957026247944556931e-79) }, + { SC_(0.00928423367440700531005859375), SC_(0.835008561611175537109375), SC_(0.2079649982498031834679314497053845483208559911665962636114361516063870334336199634428582560062268746e-8), SC_(0.2922761999016211106617308476548265090931319076120766321451356756088374129715949526437709487166989658e-84) }, + { SC_(0.00928423367440700531005859375), SC_(0.905791938304901123046875), SC_(0.1331012790246183679135743834382351893703549285142885766206403513477817047693065973960307592401761687e-4), SC_(0.1787215940526454792117473142820444031698541740199406251943516212722643767015148275809527436294486488e-110) }, + { SC_(0.00928423367440700531005859375), SC_(0.9133758544921875), SC_(0.3267493528614537466422720595540634632686083105060950626479453284438163732762495648150414813880639496e-4), SC_(0.2119643540026624068095560574572289675469253348800503452347205819265698570952692838016053575548831888e-114) }, + { SC_(0.00928423367440700531005859375), SC_(0.968867778778076171875), SC_(0.01911454499897180940600574461593428605776103533603062667536158390175717662005867849433871252039909365), SC_(0.2864580184700468308537655700800823452800619533190012008531407862767381549449468765790714912520439872e-162) }, + { SC_(0.0241700224578380584716796875), SC_(0.12698681652545928955078125), SC_(0.4755007874645363599110558709767351843977893430130989448515393790274941468301592450084579104359798493e-37), SC_(0.002082354339089825932206329565555884302753553474844735089128561922487730302732482504729778026642360888) }, + { SC_(0.0241700224578380584716796875), SC_(0.135477006435394287109375), SC_(0.6918886567431946298096783699264720693735004847338734244592467556045794852361098879683835025254335118e-36), SC_(0.001388867805417009119772805788800260872877564688995918659271544250894617962361202936059332912226184037) }, + { SC_(0.0241700224578380584716796875), SC_(0.22103404998779296875), SC_(0.4323056887999694108538986226121688043701406265432994041704820186098837980771115859968832741829681924e-27), SC_(0.1860339320605454925735763876112536284360047842503928097950223960430000275905577490076862981083123169e-4) }, + { SC_(0.0241700224578380584716796875), SC_(0.308167040348052978515625), SC_(0.4046818691422747628420442575861742481670295659400511102375870506457392764732487896821800847991430295e-21), SC_(0.1374462930061820898052244532341899541451017350568010018338622604439808580476436540696464294876730848e-6) }, + { SC_(0.0241700224578380584716796875), SC_(0.6323592662811279296875), SC_(0.3334403487278273462708995000148717863585880987029873382051654969321559841649693780064298523870757696e-8), SC_(0.5996222426132679940269665712478111110103185607660464978996991591256898038817448172018892128858363079e-18) }, + { SC_(0.0241700224578380584716796875), SC_(0.814723670482635498046875), SC_(0.000119146842104297411410195647734689332434240266032091228469756942817940738201897213037148470615813508), SC_(0.2917106179004315827849745763967763395603781179596286897491731220518611339556296738289059201235850883e-30) }, + { SC_(0.0241700224578380584716796875), SC_(0.835008561611175537109375), SC_(0.0003296598495085953197600007054735462149322936071793832995498219578493088389902287308414658719609526215), SC_(0.240680179432773856042893992975635590655015966928265407314049438721986528213955161545013797302730715e-32) }, + { SC_(0.0241700224578380584716796875), SC_(0.905791938304901123046875), SC_(0.009639257233815527295558867035539514631954783530626403663078664766509688335853532912815447707238446202), SC_(0.2052189982662066417317642456809545878292289013164262888362290358529165754449803709580684197275536899e-42) }, + { SC_(0.0241700224578380584716796875), SC_(0.9133758544921875), SC_(0.01366335082411676503426812795826074384518242194417984302389558300465670193241960017317871044495895392), SC_(0.6370714600531229351028933057209195315039848145972839708393337900673162652220564905279371591735045738e-44) }, + { SC_(0.0241700224578380584716796875), SC_(0.968867778778076171875), SC_(0.1837159201614905810162056258214426405625321487490921387042484059797197463584135933859405861689173258), SC_(0.2609647866436712703184614158029656015599386600669142553098944996170824882297464531425702393094308666e-62) }, + { SC_(0.06227754056453704833984375), SC_(0.12698681652545928955078125), SC_(0.2397899327990210217945237520825027337249314580313255742558188735539395128771207466059933105586895801e-14), SC_(0.07120701321639861672730146751403337388636080685060784427795166211560688546973978967036189875632652293) }, + { SC_(0.06227754056453704833984375), SC_(0.135477006435394287109375), SC_(0.6778734704727671347342116967926882030572723270331607054064451043360812010149557098744948382614825263e-14), SC_(0.0602598946592406336119407298808692659798985080384884708169987555922877323792632867174236488785352996) }, + { SC_(0.06227754056453704833984375), SC_(0.22103404998779296875), SC_(0.1757099850202481753365993363784463387895171833664242008187350899141562237968228296765150189320156787e-10), SC_(0.01079979944341924186567270403124714866300331562834978093084682499332166135923522216838671914449270537) }, + { SC_(0.06227754056453704833984375), SC_(0.308167040348052978515625), SC_(0.3649868926413298954597242228102928635484611330522144836339322839539995144414369520388754117706224566e-8), SC_(0.001593832313978824373841228238392792687053408246667296219192610926752720622826899515687015871804115245) }, + { SC_(0.06227754056453704833984375), SC_(0.6323592662811279296875), SC_(0.0003759378444055722004393091547465790970598302895163681174960437738413745696703445203741128560602699408), SC_(0.620663696267368847712486628823225913460097237421094388671496629889791298720503745367324748584589878e-7) }, + { SC_(0.06227754056453704833984375), SC_(0.814723670482635498046875), SC_(0.02244525653614308575166234088544520546682935745920844279908975238875123978052118225748359171330777621), SC_(0.1033209496324995312394536082618363029550794625250363550205517988108214448200453624621398598435440588e-11) }, + { SC_(0.06227754056453704833984375), SC_(0.835008561611175537109375), SC_(0.03366297028171611386194115325176788755923911705829073649633441589027105713823007866451109874918512119), SC_(0.1605364929455264787114516115080877998259339545160954415146706494593817189910643046804862406563564714e-12) }, + { SC_(0.06227754056453704833984375), SC_(0.905791938304901123046875), SC_(0.1364621766813123240886509793644182139045421711802239650823084181353667509638804410042704091269570725), SC_(0.1984681397504802198491518881783777375428173303278723680821020335210268994608425059813305321120655523e-16) }, + { SC_(0.06227754056453704833984375), SC_(0.9133758544921875), SC_(0.1591608584445551963160497158932417610236433064038886581960065666630258912420826090955653336410218449), SC_(0.5157294656561139161954148813029084251160461862581303116626804550120502686536232501755415069309872419e-17) }, + { SC_(0.06227754056453704833984375), SC_(0.968867778778076171875), SC_(0.5706002148003562024675967419933014645545890498671384246800047121502078763524393136100895070887797336), SC_(0.3768424261625840088916808672832463019346092796851739497972854069623289031307295120933948388504211193e-24) }, + { SC_(0.12234418094158172607421875), SC_(0.12698681652545928955078125), SC_(0.2917675307501393521701978150767907941177672065924891118886771405922859641487784147377516025455036611e-7), SC_(0.2517816799209477962363003293087745830790228944794038153990714298608834385644019377723297301562319997) }, + { SC_(0.12234418094158172607421875), SC_(0.135477006435394287109375), SC_(0.4951921240548201466128564350442795757511483177015364955526498903315672696072305721738250316807749574e-7), SC_(0.2280442905035761762923559006699423406008704100991080659489091811281903247498659142591476392432592615) }, + { SC_(0.12234418094158172607421875), SC_(0.22103404998779296875), SC_(0.2706717505606267935694731130362165880760688816561270736754737057060064757656659854697456655231479473e-5), SC_(0.08645181696960127763637910697972952172197582371166841825995565932382970348564883168236139813751067668) }, + { SC_(0.12234418094158172607421875), SC_(0.308167040348052978515625), SC_(0.4093906422833465436981126725371850110509069113389089805389022397880079259780593912997598414514220272e-4), SC_(0.03124990161065573210878608715524591895346977134693932986982763272382549307224120618970522438192567651) }, + { SC_(0.12234418094158172607421875), SC_(0.6323592662811279296875), SC_(0.01477255849190767130779562374978723722972978808603632058750592869480763133679527762735482893972319478), SC_(0.000173219831271877948335919727039453409963192313806313058514400053226735134702002657874262377409902787) }, + { SC_(0.12234418094158172607421875), SC_(0.814723670482635498046875), SC_(0.129415374554952745238873579421907728426509370328753351224524538118079768076343431913946929256485204), SC_(0.6397626082313879266032436450179293886393687263809287504956339699519759176544626231100692136549418162e-6) }, + { SC_(0.12234418094158172607421875), SC_(0.835008561611175537109375), SC_(0.1627069901465925782476277536170875116551881920701025682482514156908382545100679746811024237068067437), SC_(0.2479733987223831941645449344880068288689764125534241367620317091635352758643470859110836758891192526e-6) }, + { SC_(0.12234418094158172607421875), SC_(0.905791938304901123046875), SC_(0.3746570524495683716297648401889196783384938577123039192797117912526722651515732395049765693698250817), SC_(0.25418712058635408057485797010041189197820679325299203243431788140961048909196552468074745837786707e-8) }, + { SC_(0.12234418094158172607421875), SC_(0.9133758544921875), SC_(0.412853358728883540335684676442114700846244749719956087902593838515602643671959687316038985526993008), SC_(0.1280061610273510933442845630496168781419537462499944407703238655882648749223650289571066805558939821e-8) }, + { SC_(0.12234418094158172607421875), SC_(0.968867778778076171875), SC_(0.9787395191154988075727958715091047710612825668286193391649260163898336068888458362682012849227767468), SC_(0.2982768579322194458377853985166850512910908875750207565713660271136890844136108584112462230664399033e-12) }, + { SC_(0.249557673931121826171875), SC_(0.12698681652545928955078125), SC_(0.0001729408351181867910946777042168593367548662713933245021197087415434496992696779200097194108839751772), SC_(0.6058065114765388482746593313053712216441947551322497986044088489348997208319848176297434342507600095) }, + { SC_(0.249557673931121826171875), SC_(0.135477006435394287109375), SC_(0.0002241519102773175611138507396325277413617429480537538878667053083065425094634883159191144605357025743), SC_(0.5686151078349344771031971471375403354721955451594154977603352348538687391850162271158335444249182502) }, + { SC_(0.249557673931121826171875), SC_(0.22103404998779296875), SC_(0.001595513616070568082945733861157891219132405526763081139868004533247647856388162004166813696766457559), SC_(0.3147499587257283286475843117673594550769668592417932063266241383313864709137053311821198619187683608) }, + { SC_(0.249557673931121826171875), SC_(0.308167040348052978515625), SC_(0.00606433025279873579205212606109071114127470924946480443259120078597516628484655194478033626742976614), SC_(0.1768484195007227594639307057959930790280552286720308691454989394878960902793946976587308560031007614) }, + { SC_(0.249557673931121826171875), SC_(0.6323592662811279296875), SC_(0.1179650561324075528992903225848147868756942682237052177942740819154402285791230618097441178197346836), SC_(0.01236110428029709405738994179320427104939420622715812133883147446465408347949113875328822633417557986) }, + { SC_(0.249557673931121826171875), SC_(0.814723670482635498046875), SC_(0.400151158756360458015567018815432047279722583669528746897688264440309636295972485089031983723283412), SC_(0.0007861746132015000429054089584735092797147631741298395907804200517411522207698314297448948558866196851) }, + { SC_(0.249557673931121826171875), SC_(0.835008561611175537109375), SC_(0.4601999712924982214723189551339248465295920458859026091046158869079649628640804304809932234086055938), SC_(0.0004938855303788196215081660872846070867835696427546516959680290298943434193317649163521301815172286175) }, + { SC_(0.249557673931121826171875), SC_(0.905791938304901123046875), SC_(0.7863273330252674862553211767967663339038620678631034425070423080693867453252930911164808313360712789), SC_(0.5227018174999379781325549887500215561917168025603780836048065324690864016337897961000989515342940514e-4) }, + { SC_(0.249557673931121826171875), SC_(0.9133758544921875), SC_(0.8394599392779975917886333392575163813801180770789039686433252648275481430070794506158735659303587734), SC_(0.373416915384257863268132774848812007558194713642029410373736507955136046937608139895733790842501857e-4) }, + { SC_(0.249557673931121826171875), SC_(0.968867778778076171875), SC_(1.55064806934047311003207497740233507495138893446973652339146361951925002802326377196566679899437148), SC_(0.6184646854163605575571198689399195255548852029735399215689599364527250064463808853546125834736909896e-6) }, + { SC_(0.4912221431732177734375), SC_(0.12698681652545928955078125), SC_(0.01179999107261517245711734099321175262024322427536111722579792130430795039352225923732875696993108428), SC_(1.146781836673227294411343111549562570916875706944764995205279614934161942445271463984045188893154299) }, + { SC_(0.4912221431732177734375), SC_(0.135477006435394287109375), SC_(0.01347680005190320824495823024041006258683054239049315292957407436091912784252503889850706106759795736), SC_(1.096942250682153278684991315434251167577990808568885211432970704705260534839722679246736760333818943) }, + { SC_(0.4912221431732177734375), SC_(0.22103404998779296875), SC_(0.03708520794937207522186672453116934049416336908087963757400656366527415843223106807566187232395132201), SC_(0.7344037228018428936575252313749151692350999140334190669972342222354811281015168203457623869931078542) }, + { SC_(0.4912221431732177734375), SC_(0.308167040348052978515625), SC_(0.07478742727324340023924529268137294447621068928026302313998618370705089690325624388285052260444738011), SC_(0.5072769867657609723634022984671279306427119801795633218278005114955827886141591769523944577356036436) }, + { SC_(0.4912221431732177734375), SC_(0.6323592662811279296875), SC_(0.3953171167684806306534848834776653918978703258364788601641198779145343529360607023155841561486426645), SC_(0.109578577521261759574470587827775876258571564613747898905893349199828070364291298956570023636768712) }, + { SC_(0.4912221431732177734375), SC_(0.814723670482635498046875), SC_(0.8618371340044833635042625236072247947308509234411487597503367932617905474216131811383046338270875832), SC_(0.02569772935484207748733320472091277906568494161356221491003849767356138577033550982833478767012837521) }, + { SC_(0.4912221431732177734375), SC_(0.835008561611175537109375), SC_(0.9476842240184136859307262864949749166429256547788236967883289180092048583992256579829649775781823206), SC_(0.02022053428062083343451168294283034061825836977269227995602870747330949523633259645412512218564920562) }, + { SC_(0.4912221431732177734375), SC_(0.905791938304901123046875), SC_(1.381314413433676218467699682079044981314837640289108871721622988665626514901418026268181070806111036), SC_(0.006402331141621925056309776927986094705654962508389581644459273015513266189369824070944290374038869035) }, + { SC_(0.4912221431732177734375), SC_(0.9133758544921875), SC_(1.448461572346433145360514343830741564296392068240940782414163508296712759466650758570012073033272854), SC_(0.005393166618371413394786517538957208033588291043828844982680610840509081671962397142463259898605996501) }, + { SC_(0.4912221431732177734375), SC_(0.968867778778076171875), SC_(2.299409064705521016627903698738797581220994757567875712087173923100290229883609182069652360326866461), SC_(0.0006694654532903551129656895216820134077743882676845908130412730599807742046809248198170530713447012925) }, + { SC_(0.98384749889373779296875), SC_(0.12698681652545928955078125), SC_(0.1300865209797978009611003366610743995514124740108418385537521536106018623459854247310684557849847687), SC_(2.036896200379561213501874139309458592947234601319775884090713507340264351528872950487005758646207935) }, + { SC_(0.98384749889373779296875), SC_(0.135477006435394287109375), SC_(0.1395829226113829891435096741354384020592989338540723970248168770387345584112813716003266402943853755), SC_(1.972552833831994436489598853128590709158018223550733538669371676665645607547765638731949845618031393) }, + { SC_(0.98384749889373779296875), SC_(0.22103404998779296875), SC_(0.2412437977716976045954882142417206791924761869351292722918142258325655122194763458892634152440282245), SC_(1.486224027390307085209986844630573195115591634524152964679847584925193743814224125373700119038244969) }, + { SC_(0.98384749889373779296875), SC_(0.308167040348052978515625), SC_(0.3575421924486699356512901533090120279494834496884211357613510920578191227799117437490364969176278163), SC_(1.156527249018123010464132374104159226728074378519382156883176440049944289231061307726399588963058722) }, + { SC_(0.98384749889373779296875), SC_(0.6323592662811279296875), SC_(0.9816778040333153178137781120254196899483430716435981660166706033854220130522757086424990534201280296), SC_(0.4459263447286624679587744473404218936951315402087647021239688398243113362620390857394257313770054111) }, + { SC_(0.98384749889373779296875), SC_(0.814723670482635498046875), SC_(1.661464996668627130855290643255035440441499138648602749033150402448170379975136041600286371505899699), SC_(0.1973842177852939019187662485373855176042953236532691014309227330439358378741590741665845889544778929) }, + { SC_(0.98384749889373779296875), SC_(0.835008561611175537109375), SC_(1.776664519389033661206657687644212685971548384346483465773471835840005596288706546336952088459026359), SC_(0.1733964237505148001035729206684791920003990301710305875667203952803542363026077727667244276279610638) }, + { SC_(0.98384749889373779296875), SC_(0.905791938304901123046875), SC_(2.333852143635521376583793983692908814613192084965131921329017568999597890042223066845782144217922465), SC_(0.09435362597956357997061362628518451467157237178561681585971236159384562553245746245889310005227828882) }, + { SC_(0.98384749889373779296875), SC_(0.9133758544921875), SC_(2.41735263767090747971260704531768202019608204175812596889647915502861830149843901420023178185417741), SC_(0.08629255050864682671649867071997131498616075967670496930252659364507806875769843248265733981572531032) }, + { SC_(0.98384749889373779296875), SC_(0.968867778778076171875), SC_(3.436253151819984400291457916536771641870461027576351440827763253405081072658046821073614339302446642), SC_(0.02964617137949879954381330114002840099655920244775355918800888626052539050791751092644824550473072238) }, + { SC_(1.1576130390167236328125), SC_(0.12698681652545928955078125), SC_(0.1961597199596110836046664721317916790262358259807835627296587002411859510266149879619131918396954485), SC_(2.319857526146669037115512146164428411482810737120759704818839078699515280121389085412692614348323684) }, + { SC_(1.1576130390167236328125), SC_(0.135477006435394287109375), SC_(0.2086026822959099028941961321444015576693556939552300221090416229088808015997654853572663008921540919), SC_(2.251670804133435855479603883114774229816437238705176879719208679742380410079052189608090638334395607) }, + { SC_(1.1576130390167236328125), SC_(0.22103404998779296875), SC_(0.3371312094790078671149170215056280742083287741053022101420790076691424633947120671151876658557000782), SC_(1.732748523226939946628109548933145149536078319881314826752836811320235271086811601900328572024213373) }, + { SC_(1.1576130390167236328125), SC_(0.308167040348052978515625), SC_(0.4775817406294980404134846983877619770010791609168563211507672961242214485064567317986485188899638172), SC_(1.376193097486225353718357273680712792723104402765586947203626851859979776481513296632647074490421153) }, + { SC_(1.1576130390167236328125), SC_(0.6323592662811279296875), SC_(1.184845656449188886352302784801892366172678989733029483747236713715732719740072708913716549478085946), SC_(0.581471881382274003173880196210362036321484761408550346865366600573915568145720619039301125333373905) }, + { SC_(1.1576130390167236328125), SC_(0.814723670482635498046875), SC_(1.920539558256590476431015528402948661755409409849878156031124007205305267835713939520863868659293583), SC_(0.2825606964816580505745168928365791801298476249315711294705870608100276597000213174366186220948389055) }, + { SC_(1.1576130390167236328125), SC_(0.835008561611175537109375), SC_(2.043465440456490166287792059985063689775983483070329577212861593741459296558139325833073673463732894), SC_(0.2521961993473725269543103190526000592848006826712668650609107713979225891789595253816913570458321053) }, + { SC_(1.1576130390167236328125), SC_(0.905791938304901123046875), SC_(2.633432043738438920475686365204867279535715696108322078844743253044475088750509042564699876424341881), SC_(0.1483234119621405878414264034510012616620586207451637965494203477538978586659149769842382367332429083) }, + { SC_(1.1576130390167236328125), SC_(0.9133758544921875), SC_(2.72130872698585367980892827768093808349422735039784935732743888146428407234271507560375936478000293), SC_(0.1372597171858880965660262090243239004065344795529468715964073094745543966462191632895815182745602503) }, + { SC_(1.1576130390167236328125), SC_(0.968867778778076171875), SC_(3.785791973663415980437557813576367686468274240280844818238132947111766562677797108571092977222954148), SC_(0.05460369537686154741964828809285588189958375691729530341605824976415924863104037841047769736294474202) }, + { SC_(3.451677799224853515625), SC_(0.12698681652545928955078125), SC_(1.530624210920382284399051690330519554082768377808227128434910351585439262396314857365872406127756053), SC_(5.574698692018694700071254764468530910674337221105810057056140063183708253803233221537898874285968149) }, + { SC_(3.451677799224853515625), SC_(0.135477006435394287109375), SC_(1.57362951537156159661431963850316197825725692404254310133476110219497865497181922972348704221144267), SC_(5.473138259331420669341549290189455776876089291573320486520460515454004459005991000402878126742323236) }, + { SC_(3.451677799224853515625), SC_(0.22103404998779296875), SC_(1.965746189751920939352691371708867882866485644934665910275215637276934063111994360502170024656532926), SC_(4.673268932629649290920788790871645128427792301349128507557725406338670163075890517015361340870973159) }, + { SC_(3.451677799224853515625), SC_(0.308167040348052978515625), SC_(2.327895119537809122811571079104146373091942499322663334330138868463649582849214297599497785464023609), SC_(4.087212616619640052827803625327882426668270211845906555717997902681324813869427584063421609836271661) }, + { SC_(3.451677799224853515625), SC_(0.6323592662811279296875), SC_(3.75528141373881029632814630875677475329797026383089604597730893204313705777013022465404183283606387), SC_(2.569587565718771610879334081961858540627292872731864015723807479426770255861746498923235709828384543) }, + { SC_(3.451677799224853515625), SC_(0.814723670482635498046875), SC_(4.96884003357348744166695303018087322225920527947015852633041450072604536715189275307836871232572009), SC_(1.808854082468155248893602071807914212511204947986080304490964939078875022325577669885755397028389777) }, + { SC_(3.451677799224853515625), SC_(0.835008561611175537109375), SC_(5.158353930264407591141911762793226010112593356998663398064398144517377920081089377422910049379929565), SC_(1.715980010073803534303771366139081776620894782167054529829701347745407112585687815364593264795112742) }, + { SC_(3.451677799224853515625), SC_(0.905791938304901123046875), SC_(6.033289965252111343235548988260081149382205549483973493795976997290232926915123620068323107608683628), SC_(1.352275181601738349544903018712053305322415074737749256814106096094379708637873120535301778996625571) }, + { SC_(3.451677799224853515625), SC_(0.9133758544921875), SC_(6.159558502218759156855593347123796639713710181006289624265126514849066440847214437545387207874425825), SC_(1.307343882589167249227348096476723299076394367682521236029969747367006850476646265679909563475382611) }, + { SC_(3.451677799224853515625), SC_(0.968867778778076171875), SC_(7.629721526111596714926608293951817133394478840350583630509809227411335042302400047948310886098339447), SC_(0.8888562589855856249970510117949218013780557896569702678778170096314482315508385771830674194073130007) }, + { SC_(7.88237094879150390625), SC_(0.12698681652545928955078125), SC_(4.844756913723969959067287277171911999837470793758606581225223922671033928947591753701039975119122724), SC_(11.12140061565551307712696521346785564818459658303388261577657023731780253761925900663967051291410247) }, + { SC_(7.88237094879150390625), SC_(0.135477006435394287109375), SC_(4.92589841429445857984116213454195626941969554762437568942405393109061358846779703244707367287195874), SC_(10.98108673974325765715303476569448043717025909739070272421996079460616793044380919148069611984481183) }, + { SC_(7.88237094879150390625), SC_(0.22103404998779296875), SC_(5.638560786091699351123899548104079140326479351812437435515873530054583524774506292906280460797833098), SC_(9.856971749403947096825033526804503350139699007114203432014510548601579942970233052344921183682478769) }, + { SC_(7.88237094879150390625), SC_(0.308167040348052978515625), SC_(6.261950304915309281829468403028535426991401847081170989871860432142896140500397036811479661870310452), SC_(9.008089510076067200136139130648726551693948927672843011870424870503873689961795526187249783039453752) }, + { SC_(7.88237094879150390625), SC_(0.6323592662811279296875), SC_(8.515696299640880133197109983199329596272030624087086595627597017830637055606241372115218386957077541), SC_(6.663555576689267756072158572952790106439493579837933095211305263932099060610857357449696082841290954) }, + { SC_(7.88237094879150390625), SC_(0.814723670482635498046875), SC_(10.27654630671120554490045038357659906211059116424349156516366240949281281132412336553759708614503569), SC_(5.358806007367185234198567710812204619111113995842409126062778294563755657191876758668190895570062463) }, + { SC_(7.88237094879150390625), SC_(0.835008561611175537109375), SC_(10.54290123180201991341358069212563540909069376048726692932615624195393691868675916167585864103920169), SC_(5.189957597342458441237551570990662655102247885622660703905796425516481457633806742834164945056029809) }, + { SC_(7.88237094879150390625), SC_(0.905791938304901123046875), SC_(11.74906177063792723279214648184444217353993726634172219771095374095196747935628306762462714050027469), SC_(4.500589730419825679581934453582185709058743448290168867874541939460911484143125315702278379652817014) }, + { SC_(7.88237094879150390625), SC_(0.9133758544921875), SC_(11.92028503924933449320581621786613441617387709458224965565099431099659181938764039147894571145926575), SC_(4.411739446802953797688885844731597182665766011787872803903470630812608976887737596597075028566679532) }, + { SC_(7.88237094879150390625), SC_(0.968867778778076171875), SC_(13.87112145371288914260504318784118251728461784612328590191541928786695318093130503135200110507250744), SC_(3.529662237308642030515257624627728599863992204849868392777953155280407948755004639499026009930636495) } + } }; +#undef SC_ + diff --git a/test/handle_test_result.hpp b/test/handle_test_result.hpp new file mode 100644 index 000000000..b1f797f8f --- /dev/null +++ b/test/handle_test_result.hpp @@ -0,0 +1,198 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_HANDLE_TEST_RESULT +#define BOOST_MATH_HANDLE_TEST_RESULT + +#include +#include +#include +#include +#include + +// +// Every client of this header has to define this function, +// and initialise the table of expected results: +// +void expected_results(); + +typedef std::pair > expected_data_type; +typedef std::list list_type; + +inline list_type& + get_expected_data() +{ + static list_type data; + return data; +} + +inline void add_expected_result( + const char* compiler, + const char* library, + const char* platform, + const char* type_name, + const char* test_name, + const char* group_name, + boost::uintmax_t max_peek_error, + boost::uintmax_t max_mean_error) +{ + std::string re("(?:"); + re += compiler; + re += ")"; + re += "\\|"; + re += "(?:"; + re += library; + re += ")"; + re += "\\|"; + re += "(?:"; + re += platform; + re += ")"; + re += "\\|"; + re += "(?:"; + re += type_name; + re += ")"; + re += "\\|"; + re += "(?:"; + re += test_name; + re += ")"; + re += "\\|"; + re += "(?:"; + re += group_name; + re += ")"; + get_expected_data().push_back( + std::make_pair(boost::regex(re, boost::regex::perl | boost::regex::icase), + std::make_pair(max_peek_error, max_mean_error))); +} + +inline std::string build_test_name(const char* type_name, const char* test_name, const char* group_name) +{ + std::string result(BOOST_COMPILER); + result += "|"; + result += BOOST_STDLIB; + result += "|"; + result += BOOST_PLATFORM; + result += "|"; + result += type_name; + result += "|"; + result += group_name; + result += "|"; + result += test_name; + return result; +} + +inline const std::pair& + get_max_errors(const char* type_name, const char* test_name, const char* group_name) +{ + static const std::pair defaults(1, 1); + std::string name = build_test_name(type_name, test_name, group_name); + list_type& l = get_expected_data(); + list_type::const_iterator a(l.begin()), b(l.end()); + while(a != b) + { + if(regex_match(name, a->first)) + { +#if 0 + std::cout << name << std::endl; + std::cout << a->first.str() << std::endl; +#endif + return a->second; + } + ++a; + } + return defaults; +} + +template +void handle_test_result(const boost::math::tools::test_result& result, + const Seq& worst, int row, + const char* type_name, + const char* test_name, + const char* group_name) +{ + using namespace std; // To aid selection of the right pow. + T eps = boost::math::tools::epsilon(); + std::cout << std::setprecision(4); + + T max_error_found = (result.max)()/eps; + T mean_error_found = result.rms()/eps; + // + // Begin by printing the main tag line with the results: + // + std::cout << test_name << "<" << type_name << "> Max = " << max_error_found + << " RMS Mean=" << mean_error_found; + // + // If the max error is non-zero, give the row of the table that + // produced the worst error: + // + if((result.max)() != 0) + { + std::cout << "\n worst case at row: " + << row << "\n { "; + for(unsigned i = 0; i < worst.size(); ++i) + { + if(i) + std::cout << ", "; +#if defined(__SGI_STL_PORT) + std::cout << boost::math::tools::real_cast(worst[i]); +#else + std::cout << worst[i]; +#endif + } + std::cout << " }"; + } + std::cout << std::endl; + // + // Now verify that the results are within our expected bounds: + // + std::pair const& bounds = get_max_errors(type_name, test_name, group_name); + if(bounds.first < max_error_found) + { + std::cerr << "Peak error greater than expected value of " << bounds.first << std::endl; + BOOST_CHECK(bounds.first >= max_error_found); + } + if(bounds.second < mean_error_found) + { + std::cerr << "Mean error greater than expected value of " << bounds.second << std::endl; + BOOST_CHECK(bounds.second >= mean_error_found); + } + std::cout << std::endl; +} + +template +void print_test_result(const boost::math::tools::test_result& result, + const Seq& worst, int row, const char* name, const char* test) +{ + using namespace std; // To aid selection of the right pow. + T eps = boost::math::tools::epsilon(); + std::cout << std::setprecision(4); + + T max_error_found = (result.max)()/eps; + T mean_error_found = result.rms()/eps; + // + // Begin by printing the main tag line with the results: + // + std::cout << test << "(" << name << ") Max = " << max_error_found + << " RMS Mean=" << mean_error_found; + // + // If the max error is non-zero, give the row of the table that + // produced the worst error: + // + if((result.max)() != 0) + { + std::cout << "\n worst case at row: " + << row << "\n { "; + for(unsigned i = 0; i < worst.size(); ++i) + { + if(i) + std::cout << ", "; + std::cout << worst[i]; + } + std::cout << " }"; + } + std::cout << std::endl; +} + +#endif // BOOST_MATH_HANDLE_TEST_RESULT + diff --git a/test/hermite.ipp b/test/hermite.ipp new file mode 100644 index 000000000..a42413232 --- /dev/null +++ b/test/hermite.ipp @@ -0,0 +1,430 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 420> hermite = { + SC_(0.8e1), SC_(-0.804919189453125e3), SC_(0.45107507538695517471998224862706929168983312035236e26), + SC_(0.8e1), SC_(-0.7460263671875e3), SC_(0.24561928260207418635049717146784087504133748838575e26), + SC_(0.8e1), SC_(-0.72904595947265625e3), SC_(0.20429972623973894937590136235800300689033201111301e26), + SC_(0.8e1), SC_(-0.623236083984375e3), SC_(0.5827000192786290015079053630015377969828881322477e25), + SC_(0.8e1), SC_(-0.557931884765625e3), SC_(0.24036425469465274704663172230600209480309473246511e25), + SC_(0.8e1), SC_(-0.4430035400390625e3), SC_(0.3797226972301982762616920977628718931846209669113e24), + SC_(0.8e1), SC_(-0.383665924072265625e3), SC_(0.12017786536547968144293561686294350272042177165962e24), + SC_(0.8e1), SC_(0.9376299285888671875e2), SC_(0.15268620781186000127986962828387837477310566397968e19), + SC_(0.8e1), SC_(0.944411773681640625e2), SC_(0.1617518154852919675909314869798309833011143307635e19), + SC_(0.8e1), SC_(0.264718536376953125e3), SC_(0.61720298828736019075790614156102805167876087211952e22), + SC_(0.8e1), SC_(0.62944732666015625e3), SC_(0.63081173846769146140441083274224793875281883735246e25), + SC_(0.8e1), SC_(0.67001715087890625e3), SC_(0.10397137311210792549517430287956468909599308482363e26), + SC_(0.8e1), SC_(0.8115838623046875e3), SC_(0.48183457131767562763518406277181444679084105960509e26), + SC_(0.8e1), SC_(0.826751708984375e3), SC_(0.55876845531601243780899074396489049059605490708721e26), + SC_(0.8e1), SC_(0.915013671875e3), SC_(0.12579210047506473419699887821873790018411396965251e27), + SC_(0.8e1), SC_(0.92977703857421875e3), SC_(0.14297610657915447015410284337196030534976367717228e27), + SC_(0.8e1), SC_(0.935389892578125e3), SC_(0.15002871812830612180035463350811490994647498745898e27), + SC_(0.8e1), SC_(0.93773553466796875e3), SC_(0.15306505051932713956696576348429859356902240309652e27), + SC_(0.8e1), SC_(0.9857625732421875e3), SC_(0.2282508005179494438672517847212865156472291867269e27), + SC_(0.8e1), SC_(0.99292266845703125e3), SC_(0.24185618845978155462978780829055436870571431239936e27), + SC_(0.9e1), SC_(-0.804919189453125e3), SC_(-0.72615348491801522758107817154280636761854800448258e29), + SC_(0.9e1), SC_(-0.7460263671875e3), SC_(-0.36647428831123627780613206119656435975372881269689e29), + SC_(0.9e1), SC_(-0.72904595947265625e3), SC_(-0.29788553802717105399309090578189082490491064795881e29), + SC_(0.9e1), SC_(-0.623236083984375e3), SC_(-0.72631187656840434630386580888842027480654740183583e28), + SC_(0.9e1), SC_(-0.557931884765625e3), SC_(-0.26821031676217242168707855784900940170157970241264e28), + SC_(0.9e1), SC_(-0.4430035400390625e3), SC_(-0.33643014085005895416146465835311020646005187659932e27), + SC_(0.9e1), SC_(-0.383665924072265625e3), SC_(-0.92213797591750116970480652180852706466705815198925e26), + SC_(0.9e1), SC_(0.9376299285888671875e2), SC_(0.28619599017630076419048218930351610672808471971911e21), + SC_(0.9e1), SC_(0.944411773681640625e2), SC_(0.30538356606793385774776392717760624059016600770529e21), + SC_(0.9e1), SC_(0.264718536376953125e3), SC_(0.32675149012792009950839328597362709432321349932704e25), + SC_(0.9e1), SC_(0.62944732666015625e3), SC_(0.79411750739676620994218584143838991056650844543993e28), + SC_(0.9e1), SC_(0.67001715087890625e3), SC_(0.13932396494395279118751516299633800114577839547729e29), + SC_(0.9e1), SC_(0.8115838623046875e3), SC_(0.78209357516588915667750630886227046953282003885816e29), + SC_(0.9e1), SC_(0.826751708984375e3), SC_(0.9239201438100206122484942895031603534508035207534e29), + SC_(0.9e1), SC_(0.915013671875e3), SC_(0.23020188368730794526744784417674030233447879296414e30), + SC_(0.9e1), SC_(0.92977703857421875e3), SC_(0.26587057172217180147109231631091242505401497841279e30), + SC_(0.9e1), SC_(0.935389892578125e3), SC_(0.28066940992909396296554569662089642014388342016689e30), + SC_(0.9e1), SC_(0.93773553466796875e3), SC_(0.2870677681432185184539265574407337379961356759468e30), + SC_(0.9e1), SC_(0.9857625732421875e3), SC_(0.4500003405401322163412586784924678900107709701962e30), + SC_(0.9e1), SC_(0.99292266845703125e3), SC_(0.48028703540906417924253986480733367446328052415498e30), + SC_(0.1e2), SC_(-0.804919189453125e3), SC_(0.11689816296461847274622300874825539661285328959095e33), + SC_(0.1e2), SC_(-0.7460263671875e3), SC_(0.54679454280582535200198215910160226619047153251183e32), + SC_(0.1e2), SC_(-0.72904595947265625e3), SC_(0.43434081837302238559608884831319578537002297874261e32), + SC_(0.1e2), SC_(-0.623236083984375e3), SC_(0.90531705080732310437321262346769305582516409498699e31), + SC_(0.1e2), SC_(-0.557931884765625e3), SC_(0.29928184853282382212205807781073913971873952893684e31), + SC_(0.1e2), SC_(-0.4430035400390625e3), SC_(0.29807265173628291298939129580674147768362711153657e30), + SC_(0.1e2), SC_(-0.383665924072265625e3), SC_(0.70756420528926763608091741538465186246363823788564e29), + SC_(0.1e2), SC_(0.9376299285888671875e2), SC_(0.53641701648878869328402154187886529569000541972093e23), + SC_(0.1e2), SC_(0.944411773681640625e2), SC_(0.57652451729901027022147781233362208672090049328676e23), + SC_(0.1e2), SC_(0.264718536376953125e3), SC_(0.17298324279751374105449100095978732528697456059849e28), + SC_(0.1e2), SC_(0.62944732666015625e3), SC_(0.99969892955855027682901459214621192921416240033293e31), + SC_(0.1e2), SC_(0.67001715087890625e3), SC_(0.18669702059708370695739115280703586121887901490207e32), + SC_(0.1e2), SC_(0.8115838623046875e3), SC_(0.12694603758113437790859235888888381018069026780075e33), + SC_(0.1e2), SC_(0.826751708984375e3), SC_(0.15276950578878524322853942670808003516571872263785e33), + SC_(0.1e2), SC_(0.915013671875e3), SC_(0.42127347747272206350084241564061602373253483547743e33), + SC_(0.1e2), SC_(0.92977703857421875e3), SC_(0.49439813206983222292955141736901537001605526567434e33), + SC_(0.1e2), SC_(0.935389892578125e3), SC_(0.52506795789015555507271006606207920041267992294258e33), + SC_(0.1e2), SC_(0.93773553466796875e3), SC_(0.5383845389205336603774821335902360432595407417418e33), + SC_(0.1e2), SC_(0.9857625732421875e3), SC_(0.88718287878699347854064053369680200599130466268723e33), + SC_(0.1e2), SC_(0.99292266845703125e3), SC_(0.95377141623597704470908019348004898122546466610927e33), + SC_(0.11e2), SC_(-0.804919189453125e3), SC_(-0.18818569685711019771084718279949279407835364975145e36), + SC_(0.11e2), SC_(-0.7460263671875e3), SC_(-0.81583896324899347640769823826628802342599459007862e35), + SC_(0.11e2), SC_(-0.72904595947265625e3), SC_(-0.63330287962703711111790462420108580900426293742353e35), + SC_(0.11e2), SC_(-0.623236083984375e3), SC_(-0.11284379807813476542599136955709023783640757794916e35), + SC_(0.11e2), SC_(-0.557931884765625e3), SC_(-0.33395240744978214895073421867397301877129142707028e34), + SC_(0.11e2), SC_(-0.4430035400390625e3), SC_(-0.26408775121319087852943852625927639373812809780785e33), + SC_(0.11e2), SC_(-0.383665924072265625e3), SC_(-0.54291810656601189878288220477937246911188498521391e32), + SC_(0.11e2), SC_(0.9376299285888671875e2), SC_(0.10053489057481196687076296855379756797368225593143e26), + SC_(0.11e2), SC_(0.944411773681640625e2), SC_(0.10883423167744841177736957439483334412283561854401e26), + SC_(0.11e2), SC_(0.264718536376953125e3), SC_(0.91577206672391353431978833974641874893100570036399e30), + SC_(0.11e2), SC_(0.62944732666015625e3), SC_(0.12584997550011507219817405571418069606411457160603e35), + SC_(0.11e2), SC_(0.67001715087890625e3), SC_(0.25017762515677812475654023661074854439693249674989e35), + SC_(0.11e2), SC_(0.8115838623046875e3), SC_(0.20605314678159576340073614574689144722841355692387e36), + SC_(0.11e2), SC_(0.826751708984375e3), SC_(0.25260305214286551864922726137009996295874170160231e36), + SC_(0.11e2), SC_(0.915013671875e3), SC_(0.77093737893405727479156012282524646171889099584724e36), + SC_(0.11e2), SC_(0.92977703857421875e3), SC_(0.91935474481359373814770652069446021505623126342922e36), + SC_(0.11e2), SC_(0.935389892578125e3), SC_(0.98228090806597754947655769132113085309480225491242e36), + SC_(0.11e2), SC_(0.93773553466796875e3), SC_(0.10097188855678660617518870586147923895925111174325e37), + SC_(0.11e2), SC_(0.9857625732421875e3), SC_(0.17490943550521460249490073361246584037466880560676e37), + SC_(0.11e2), SC_(0.99292266845703125e3), SC_(0.18940329136734281935082032957044303460975085779168e37), + SC_(0.12e2), SC_(-0.804919189453125e3), SC_(0.30294598540220804462044524153306777663509970628739e39), + SC_(0.12e2), SC_(-0.7460263671875e3), SC_(0.12172627264453841222828991650975850694842130932071e39), + SC_(0.12e2), SC_(-0.72904595947265625e3), SC_(0.92340425553097458791203508279141174969141820492299e38), + SC_(0.12e2), SC_(-0.623236083984375e3), SC_(0.14065466193476872965593557347378160930420069772452e38), + SC_(0.12e2), SC_(-0.557931884765625e3), SC_(0.37263880802028208129069576191917543233991535476065e37), + SC_(0.12e2), SC_(-0.4430035400390625e3), SC_(0.23397705973845936510794729346708943708034608906903e36), + SC_(0.12e2), SC_(-0.383665924072265625e3), SC_(0.41658278768991111298468308002249529032249010160273e35), + SC_(0.12e2), SC_(0.9376299285888671875e2), SC_(0.1884110327970735092254408128261723357492772304494e28), + SC_(0.12e2), SC_(0.944411773681640625e2), SC_(0.20544182415774952250997210456061363935901042940234e28), + SC_(0.12e2), SC_(0.264718536376953125e3), SC_(0.48480562600268824564698370021815193972032016354896e33), + SC_(0.12e2), SC_(0.62944732666015625e3), SC_(0.15842966193994215674176186033328108010563621242497e38), + SC_(0.12e2), SC_(0.67001715087890625e3), SC_(0.3352424919079377855427890512067629280453469707889e38), + SC_(0.12e2), SC_(0.8115838623046875e3), SC_(0.33445602459725757173093631890694210384349814179179e39), + SC_(0.12e2), SC_(0.826751708984375e3), SC_(0.4176766491784391607460244444090637220753635269242e39), + SC_(0.12e2), SC_(0.915013671875e3), SC_(0.14108272157517756411117655879591654342259860325597e40), + SC_(0.12e2), SC_(0.92977703857421875e3), SC_(0.17095789873049740244186014591319864325495552151212e40), + SC_(0.12e2), SC_(0.935389892578125e3), SC_(0.18376197146596820542876788527941003168360783639003e40), + SC_(0.12e2), SC_(0.93773553466796875e3), SC_(0.1893686713584800621262558335100385915682586408288e40), + SC_(0.12e2), SC_(0.9857625732421875e3), SC_(0.34483639865358422938227666676511723324380657223673e40), + SC_(0.12e2), SC_(0.99292266845703125e3), SC_(0.37612354466089752738688053508788073512368471136832e40), + SC_(0.14e2), SC_(-0.804919189453125e3), SC_(0.78509349018738235160733032424141654678585448892725e45), + SC_(0.14e2), SC_(-0.7460263671875e3), SC_(0.27098354215438353455074292442751387993705409786796e45), + SC_(0.14e2), SC_(-0.72904595947265625e3), SC_(0.1963140866469160283587538139069049517916547423808e45), + SC_(0.14e2), SC_(-0.623236083984375e3), SC_(0.21852711196938088461903329630489320958358132401565e44), + SC_(0.14e2), SC_(-0.557931884765625e3), SC_(0.46397330715580958030299464092581443527478590612547e43), + SC_(0.14e2), SC_(-0.4430035400390625e3), SC_(0.18366229244023923479459711102721222723014222612589e42), + SC_(0.14e2), SC_(-0.383665924072265625e3), SC_(0.2452623515231201706730966354471863727561067188341e41), + SC_(0.14e2), SC_(0.9376299285888671875e2), SC_(0.66162381135477581005495154141263686720850602513354e32), + SC_(0.14e2), SC_(0.944411773681640625e2), SC_(0.73191791295179938803853550797406604736335227799687e32), + SC_(0.14e2), SC_(0.264718536376953125e3), SC_(0.13586852786445215715633994918623748387323846205265e39), + SC_(0.14e2), SC_(0.62944732666015625e3), SC_(0.25107390168196177586150383676878149652976320263345e44), + SC_(0.14e2), SC_(0.67001715087890625e3), SC_(0.60197547505130410182245724063086619757439720128054e44), + SC_(0.14e2), SC_(0.8115838623046875e3), SC_(0.88116568941558811789182895851999922671272237353138e45), + SC_(0.14e2), SC_(0.826751708984375e3), SC_(0.11419377964091862944071723561627426135352077966224e46), + SC_(0.14e2), SC_(0.915013671875e3), SC_(0.47247899152452010973538576496340454153898147781107e46), + SC_(0.14e2), SC_(0.92977703857421875e3), SC_(0.59115384191612534464910943588501923979781137151048e46), + SC_(0.14e2), SC_(0.935389892578125e3), SC_(0.64312408439979544841727996206027907691861399699817e46), + SC_(0.14e2), SC_(0.93773553466796875e3), SC_(0.6660743304582574572302805211733148811292236266788e46), + SC_(0.14e2), SC_(0.9857625732421875e3), SC_(0.13403312883052399458307052679768402305161676649702e47), + SC_(0.14e2), SC_(0.99292266845703125e3), SC_(0.14832551222424115425011658642924351861903344306679e47), + SC_(0.17e2), SC_(-0.804919189453125e3), SC_(-0.32753153797495918082003912931285726506061176743964e55), + SC_(0.17e2), SC_(-0.7460263671875e3), SC_(-0.90007329480895899941888933327554774003263936965797e54), + SC_(0.17e2), SC_(-0.72904595947265625e3), SC_(-0.60853811902080657743899477322061605680407388628644e54), + SC_(0.17e2), SC_(-0.623236083984375e3), SC_(-0.42318271990511870201518687815721495653054465600729e53), + SC_(0.17e2), SC_(-0.557931884765625e3), SC_(-0.64460717395845550169248667399141161290740045059411e52), + SC_(0.17e2), SC_(-0.4430035400390625e3), SC_(-0.12772672712006258369520322740190661939797693301752e51), + SC_(0.17e2), SC_(-0.383665924072265625e3), SC_(-0.11079347177294102521393365342021901838709200618124e50), + SC_(0.17e2), SC_(0.9376299285888671875e2), SC_(0.43519374656033098836731300879764665651147065558436e39), + SC_(0.17e2), SC_(0.944411773681640625e2), SC_(0.49197114845678675190660148652415003678458303172232e39), + SC_(0.17e2), SC_(0.264718536376953125e3), SC_(0.20156840106065232860196226242061773336707200599203e47), + SC_(0.17e2), SC_(0.62944732666015625e3), SC_(0.50089312969909253100985667585549457957806648188064e53), + SC_(0.17e2), SC_(0.67001715087890625e3), SC_(0.14484542322921469021252847142515217054546111055271e54), + SC_(0.17e2), SC_(0.8115838623046875e3), SC_(0.37681912627369123156565537575498454914328631548362e55), + SC_(0.17e2), SC_(0.826751708984375e3), SC_(0.51623024126169573452382726948052946601408108701071e55), + SC_(0.17e2), SC_(0.915013671875e3), SC_(0.2895633337669055248580356708103410190763367894877e56), + SC_(0.17e2), SC_(0.92977703857421875e3), SC_(0.3801155621913868324726680029836865596398523401522e56), + SC_(0.17e2), SC_(0.935389892578125e3), SC_(0.42106739248936301791031860672266726247277487691351e56), + SC_(0.17e2), SC_(0.93773553466796875e3), SC_(0.43938243566475239425230868516223819196786547076179e56), + SC_(0.17e2), SC_(0.9857625732421875e3), SC_(0.10270913273877421296093041084504926541868918478653e57), + SC_(0.17e2), SC_(0.99292266845703125e3), SC_(0.11615615017858235461324853323128928576441231619921e57), + SC_(0.2e2), SC_(-0.804919189453125e3), SC_(0.13664125939696571321627792173825499772854104679616e65), + SC_(0.2e2), SC_(-0.7460263671875e3), SC_(0.29895741233874127495469956809930073866421954487847e64), + SC_(0.2e2), SC_(-0.72904595947265625e3), SC_(0.18863420002234182908461277048750351649649333505681e64), + SC_(0.2e2), SC_(-0.623236083984375e3), SC_(0.81949346219444618862653173904393894590758063374518e62), + SC_(0.2e2), SC_(-0.557931884765625e3), SC_(0.89555238442343089813862532910106267260245516404963e61), + SC_(0.2e2), SC_(-0.4430035400390625e3), SC_(0.88824671000905057725316145231689664346646310142073e59), + SC_(0.2e2), SC_(-0.383665924072265625e3), SC_(0.50047706031281686934185500483975552431695853442504e58), + SC_(0.2e2), SC_(0.9376299285888671875e2), SC_(0.28610882481879508349420844543142088727411910854846e46), + SC_(0.2e2), SC_(0.944411773681640625e2), SC_(0.33051957004017694649388986947888165210283009384182e46), + SC_(0.2e2), SC_(0.264718536376953125e3), SC_(0.29901855151764422494131549882514663732738129348024e55), + SC_(0.2e2), SC_(0.62944732666015625e3), SC_(0.99927183168358678754808761757157327216365777144205e62), + SC_(0.2e2), SC_(0.67001715087890625e3), SC_(0.34851895441504948247886064678376700332663758737157e63), + SC_(0.2e2), SC_(0.8115838623046875e3), SC_(0.16114073154440198981224756860557734867221327596599e65), + SC_(0.2e2), SC_(0.826751708984375e3), SC_(0.23336814692664616992187268964892147104007886493032e65), + SC_(0.2e2), SC_(0.915013671875e3), SC_(0.17746074449684933227630214006061794066505116427473e66), + SC_(0.2e2), SC_(0.92977703857421875e3), SC_(0.24441537589311671035327934989081469154090156736707e66), + SC_(0.2e2), SC_(0.935389892578125e3), SC_(0.27568060570403931616024471137057240588227997804305e66), + SC_(0.2e2), SC_(0.93773553466796875e3), SC_(0.28984143054751801100983111641098309458943114392562e66), + SC_(0.2e2), SC_(0.9857625732421875e3), SC_(0.78705296119546518418045335867325054394580461944723e66), + SC_(0.2e2), SC_(0.99292266845703125e3), SC_(0.90963378024910425574275540598584493435224094886741e66), + SC_(0.22e2), SC_(-0.804919189453125e3), SC_(0.35410549655517756288894933463443046263916370592399e71), + SC_(0.22e2), SC_(-0.7460263671875e3), SC_(0.66552086301142184824540948129935000740737930656653e70), + SC_(0.22e2), SC_(-0.72904595947265625e3), SC_(0.40102688572019492592353384325508110499649827819955e70), + SC_(0.22e2), SC_(-0.623236083984375e3), SC_(0.12731739462867210769929335621987129698264939626685e69), + SC_(0.22e2), SC_(-0.557931884765625e3), SC_(0.1115025363330833283360185086189456351576853382243e68), + SC_(0.22e2), SC_(-0.4430035400390625e3), SC_(0.69720842031752011420182341799620826445874423052258e65), + SC_(0.22e2), SC_(-0.383665924072265625e3), SC_(0.29463893441421178372847408123132239351850425649941e64), + SC_(0.22e2), SC_(0.9376299285888671875e2), SC_(0.1003782827805175100803910479602251404487037389062e51), + SC_(0.22e2), SC_(0.944411773681640625e2), SC_(0.11764679244687611821884729264491504501235806639058e51), + SC_(0.22e2), SC_(0.264718536376953125e3), SC_(0.8379145950216427011587973312320388548685225349241e60), + SC_(0.22e2), SC_(0.62944732666015625e3), SC_(0.15835797942946616484814881691459128287509909270475e69), + SC_(0.22e2), SC_(0.67001715087890625e3), SC_(0.62580409500666544589877458136886479113620166141142e69), + SC_(0.22e2), SC_(0.8115838623046875e3), SC_(0.42453999544876314526549365053968053544637180614368e71), + SC_(0.22e2), SC_(0.826751708984375e3), SC_(0.6380265423616569077424242322963862669375481451879e71), + SC_(0.22e2), SC_(0.915013671875e3), SC_(0.594301495455158980571773071367338948278658208606e72), + SC_(0.22e2), SC_(0.92977703857421875e3), SC_(0.84515399657972606106321594496701903669902755274213e72), + SC_(0.22e2), SC_(0.935389892578125e3), SC_(0.9648090657380372010046820149407771514227791651662e72), + SC_(0.22e2), SC_(0.93773553466796875e3), SC_(0.10194620842520108674666279682528872594917790291927e73), + SC_(0.22e2), SC_(0.9857625732421875e3), SC_(0.30591405911583021039789993837589816130948550568976e73), + SC_(0.22e2), SC_(0.99292266845703125e3), SC_(0.35871405411212380910164537165449077790291815793521e73), + SC_(0.35e2), SC_(-0.804919189453125e3), SC_(-0.17265543966226158832481036557708311109606127124495e113), + SC_(0.35e2), SC_(-0.7460263671875e3), SC_(-0.12084088507285694356128802551712858887746829960818e112), + SC_(0.35e2), SC_(-0.72904595947265625e3), SC_(-0.53979456945200833403000362177034133652140735259381e111), + SC_(0.35e2), SC_(-0.623236083984375e3), SC_(-0.22312994224945418486163982657597306470379988285216e109), + SC_(0.35e2), SC_(-0.557931884765625e3), SC_(-0.46342142799869242843524507994236576566424214389636e107), + SC_(0.35e2), SC_(-0.4430035400390625e3), SC_(-0.1444253157985643701034355053467664611143806193583e104), + SC_(0.35e2), SC_(-0.383665924072265625e3), SC_(-0.94088165704338497803214561361931665277258781819532e101), + SC_(0.35e2), SC_(0.9376299285888671875e2), SC_(0.34867964417713495790031091331083903141212636834345e80), + SC_(0.35e2), SC_(0.944411773681640625e2), SC_(0.44893689818357762545156808608435299085345232424014e80), + SC_(0.35e2), SC_(0.264718536376953125e3), SC_(0.21461397992635311594884111369449328695745329042721e96), + SC_(0.35e2), SC_(0.62944732666015625e3), SC_(0.31572029620004155645503713456510960829037485118449e109), + SC_(0.35e2), SC_(0.67001715087890625e3), SC_(0.28104070338817673160656082690105330768586005825238e110), + SC_(0.35e2), SC_(0.8115838623046875e3), SC_(0.23042138656363759346410653632368259132774527275621e113), + SC_(0.35e2), SC_(0.826751708984375e3), SC_(0.44054407432627688965463512998107242753350860065516e113), + SC_(0.35e2), SC_(0.915013671875e3), SC_(0.15341256810349040686982753469585076844343659132652e115), + SC_(0.35e2), SC_(0.92977703857421875e3), SC_(0.26863276202949674855940307716119052117849681722704e115), + SC_(0.35e2), SC_(0.935389892578125e3), SC_(0.33162382598046564424135108685347435914117320370668e115), + SC_(0.35e2), SC_(0.93773553466796875e3), SC_(0.36200618356985329660106920606060260999032636548302e115), + SC_(0.35e2), SC_(0.9857625732421875e3), SC_(0.2079448954791745442630733208937099187119527807451e116), + SC_(0.35e2), SC_(0.99292266845703125e3), SC_(0.26789135369462534563475801989659335410281343329047e116), + SC_(0.39e2), SC_(-0.804919189453125e3), SC_(-0.11594724610269376675133295994667648916340009156091e126), + SC_(0.39e2), SC_(-0.7460263671875e3), SC_(-0.59881631251408557205127311170851509987384503796021e124), + SC_(0.39e2), SC_(-0.72904595947265625e3), SC_(-0.24395429686140560929684017855836946012576141303362e124), + SC_(0.39e2), SC_(-0.623236083984375e3), SC_(-0.53852586791768825082912263464229497587060927002143e121), + SC_(0.39e2), SC_(-0.557931884765625e3), SC_(-0.718321662571676714076170854773512025550058778984e119), + SC_(0.39e2), SC_(-0.4430035400390625e3), SC_(-0.88967324101112965016069832261671747302656341584146e115), + SC_(0.39e2), SC_(-0.383665924072265625e3), SC_(-0.32602618395821624277606519061217455907925511708347e113), + SC_(0.39e2), SC_(0.9376299285888671875e2), SC_(0.42761721847707811157055723429059908203980837805154e89), + SC_(0.39e2), SC_(0.944411773681640625e2), SC_(0.56674218278399498664458556235088519034392334042743e89), + SC_(0.39e2), SC_(0.264718536376953125e3), SC_(0.16844681844036883180732006970124952352016202896335e107), + SC_(0.39e2), SC_(0.62944732666015625e3), SC_(0.79282992531231013164557766874391393793620400228182e121), + SC_(0.39e2), SC_(0.67001715087890625e3), SC_(0.90607106164123497973412471364934371536090344651122e122), + SC_(0.39e2), SC_(0.8115838623046875e3), SC_(0.15992937684273997816389764191323771941192143088137e126), + SC_(0.39e2), SC_(0.826751708984375e3), SC_(0.32927849440442967893014023065851364647504023336502e126), + SC_(0.39e2), SC_(0.915013671875e3), SC_(0.17204948941327849876886583966673548861348150480047e128), + SC_(0.39e2), SC_(0.92977703857421875e3), SC_(0.32118669970741829532274318795611234943703447184318e128), + SC_(0.39e2), SC_(0.935389892578125e3), SC_(0.40616281816935655137092990493617134292648729550904e128), + SC_(0.39e2), SC_(0.93773553466796875e3), SC_(0.44783848423962576280686207253637725919398807964991e128), + SC_(0.39e2), SC_(0.9857625732421875e3), SC_(0.31414121592483655223358586186570433075795817612805e129), + SC_(0.39e2), SC_(0.99292266845703125e3), SC_(0.41658940895066107629573195609678148243112628749343e129), + SC_(0.45e2), SC_(-0.804919189453125e3), SC_(-0.20177652617081516828796062978793212005967378239278e145), + SC_(0.45e2), SC_(-0.7460263671875e3), SC_(-0.66054362280026053027757226707948088361626920155376e143), + SC_(0.45e2), SC_(-0.72904595947265625e3), SC_(-0.23437762835351403192537934629393907610069449299426e143), + SC_(0.45e2), SC_(-0.623236083984375e3), SC_(-0.20191234366700387819456850806321219529162264687134e140), + SC_(0.45e2), SC_(-0.557931884765625e3), SC_(-0.13861566456362123983928798104717105733858371444012e138), + SC_(0.45e2), SC_(-0.4430035400390625e3), SC_(-0.4301086017862310895138269448383055939513087622341e133), + SC_(0.45e2), SC_(-0.383665924072265625e3), SC_(-0.66494301129444185596750408117972477105468841816721e130), + SC_(0.45e2), SC_(0.9376299285888671875e2), SC_(0.18333784965891816055634592173380010722775781361257e103), + SC_(0.45e2), SC_(0.944411773681640625e2), SC_(0.25377609054299635959133533485034878034770237870855e103), + SC_(0.45e2), SC_(0.264718536376953125e3), SC_(0.37031983921392566542882397192210777179841273988766e123), + SC_(0.45e2), SC_(0.62944732666015625e3), SC_(0.31548585244541078317730225584275069164749251087912e140), + SC_(0.45e2), SC_(0.67001715087890625e3), SC_(0.52449010750697955051865066615853016859407067184864e141), + SC_(0.45e2), SC_(0.8115838623046875e3), SC_(0.29243310998128485711320487541829024461612289350623e145), + SC_(0.45e2), SC_(0.826751708984375e3), SC_(0.67284470764543020205762565613634748045278625515089e145), + SC_(0.45e2), SC_(0.915013671875e3), SC_(0.64615138415071315639177660571353142846045239347149e147), + SC_(0.45e2), SC_(0.92977703857421875e3), SC_(0.13278465208846749403260592878660521765302807431305e148), + SC_(0.45e2), SC_(0.935389892578125e3), SC_(0.17409022045455533776480508364766372898141301944389e148), + SC_(0.45e2), SC_(0.93773553466796875e3), SC_(0.19485974768216439208285778668083407454632111197255e148), + SC_(0.45e2), SC_(0.9857625732421875e3), SC_(0.18445192865916870046874911219161320468109838186066e149), + SC_(0.45e2), SC_(0.99292266845703125e3), SC_(0.25546176490459737663363913718086950038159915308274e149), + SC_(0.51e2), SC_(-0.804919189453125e3), SC_(-0.35113067934471903608940090834892095681626290434468e164), + SC_(0.51e2), SC_(-0.7460263671875e3), SC_(-0.72861035303836242811895086171124040853873378556859e162), + SC_(0.51e2), SC_(-0.72904595947265625e3), SC_(-0.22516927484966890282733144933534878130289199412883e162), + SC_(0.51e2), SC_(-0.623236083984375e3), SC_(-0.75700551095940008948839545651408145857924835535314e158), + SC_(0.51e2), SC_(-0.557931884765625e3), SC_(-0.26747336473574897356349179458053032541482550593711e156), + SC_(0.51e2), SC_(-0.4430035400390625e3), SC_(-0.20791502822466935421380862320061247482854365500361e151), + SC_(0.51e2), SC_(-0.383665924072265625e3), SC_(-0.13560110864020767509838384997192616330691476967023e148), + SC_(0.51e2), SC_(0.9376299285888671875e2), SC_(0.7844280896526308516074269853664693048016422885788e116), + SC_(0.51e2), SC_(0.944411773681640625e2), SC_(0.11340516612470737945168942456374532537814010961263e117), + SC_(0.51e2), SC_(0.264718536376953125e3), SC_(0.8139158117208128107600789052906528734475559194321e139), + SC_(0.51e2), SC_(0.62944732666015625e3), SC_(0.12553360744823564136379193666030734806903596181629e159), + SC_(0.51e2), SC_(0.67001715087890625e3), SC_(0.30359521798851670232517253916274343728895102603204e160), + SC_(0.51e2), SC_(0.8115838623046875e3), SC_(0.53470343158952394904110199377387174554239573865167e164), + SC_(0.51e2), SC_(0.826751708984375e3), SC_(0.13748486014792215950745539075543408808157303622984e165), + SC_(0.51e2), SC_(0.915013671875e3), SC_(0.24266426827928055351392414540851775403703580214217e167), + SC_(0.51e2), SC_(0.92977703857421875e3), SC_(0.54894541709901192178430511542775801375289469157154e167), + SC_(0.51e2), SC_(0.935389892578125e3), SC_(0.74617320843153667181219888046018738983602740835413e167), + SC_(0.51e2), SC_(0.93773553466796875e3), SC_(0.84784013234216460630444016007134974974311144452262e167), + SC_(0.51e2), SC_(0.9857625732421875e3), SC_(0.10830124161130178144242398936552356375378307471608e169), + SC_(0.51e2), SC_(0.99292266845703125e3), SC_(0.15665189838824983265666665985359283999947248743347e169), + SC_(0.56e2), SC_(-0.804919189453125e3), SC_(0.37956952705673899523586509921906408164373807674842e180), + SC_(0.56e2), SC_(-0.7460263671875e3), SC_(0.53865761270243895218660088472139211384451502688444e178), + SC_(0.56e2), SC_(-0.72904595947265625e3), SC_(0.14836291945588844494615487801685475362266135705863e178), + SC_(0.56e2), SC_(-0.623236083984375e3), SC_(0.2277004071341410372485292551385366645114538651319e174), + SC_(0.56e2), SC_(-0.557931884765625e3), SC_(0.46254239457392849536097636343005820458364173895835e171), + SC_(0.56e2), SC_(-0.4430035400390625e3), SC_(0.11344322644944075407583022851137024031178340092676e166), + SC_(0.56e2), SC_(-0.383665924072265625e3), SC_(0.3604029445291060010597333365239904139445634244682e162), + SC_(0.56e2), SC_(0.9376299285888671875e2), SC_(0.17917836479447994128429607949378029035674025577673e128), + SC_(0.56e2), SC_(0.944411773681640625e2), SC_(0.26860211927393157242420521317036063000474023936209e128), + SC_(0.56e2), SC_(0.264718536376953125e3), SC_(0.33793221965866674010877371813884434555285225328484e153), + SC_(0.56e2), SC_(0.62944732666015625e3), SC_(0.3967908983994242852488795641829100505059948945886e174), + SC_(0.56e2), SC_(0.67001715087890625e3), SC_(0.13114336111849403294532365713586373376802346102155e176), + SC_(0.56e2), SC_(0.8115838623046875e3), SC_(0.60234123418783718853851595976503029458229189410396e180), + SC_(0.56e2), SC_(0.826751708984375e3), SC_(0.16990109127454550637210380678211174380489674917725e181), + SC_(0.56e2), SC_(0.915013671875e3), SC_(0.49799501294713322660639045532203723491746004194747e183), + SC_(0.56e2), SC_(0.92977703857421875e3), SC_(0.12204125317946036746710422027579851417765551382392e184), + SC_(0.56e2), SC_(0.935389892578125e3), SC_(0.17095713176585659186454296245218656651525776780725e184), + SC_(0.56e2), SC_(0.93773553466796875e3), SC_(0.19669819452346534508628039944949105246308228599223e184), + SC_(0.56e2), SC_(0.9857625732421875e3), SC_(0.32254166162174546082031232457620847112857288236855e185), + SC_(0.56e2), SC_(0.99292266845703125e3), SC_(0.48373153428656361382291434304002503158410721745942e185), + SC_(0.57e2), SC_(-0.804919189453125e3), SC_(-0.61101918351066762254837696533065612479073827625339e183), + SC_(0.57e2), SC_(-0.7460263671875e3), SC_(-0.80366512793162060755260340674092236229261177996538e181), + SC_(0.57e2), SC_(-0.72904595947265625e3), SC_(-0.21631537718132322785026887852553957902317657529606e181), + SC_(0.57e2), SC_(-0.623236083984375e3), SC_(-0.28380175897994405792364081835185957992965246876733e177), + SC_(0.57e2), SC_(-0.557931884765625e3), SC_(-0.51608787018272790263523340429339097513443327878663e174), + SC_(0.57e2), SC_(-0.4430035400390625e3), SC_(-0.10049715947268959326175464756561482222757046735464e169), + SC_(0.57e2), SC_(-0.383665924072265625e3), SC_(-0.27649604314284126019945358499982753402436545672245e165), + SC_(0.57e2), SC_(0.9376299285888671875e2), SC_(0.33493248264114118064961943143309153369336052283655e130), + SC_(0.57e2), SC_(0.944411773681640625e2), SC_(0.50574435912900833357638094070860620693483455185529e130), + SC_(0.57e2), SC_(0.264718536376953125e3), SC_(0.17884232906826524447185414852294643372537962801178e156), + SC_(0.57e2), SC_(0.62944732666015625e3), SC_(0.49948263676019952928838146649270004499157772826431e177), + SC_(0.57e2), SC_(0.67001715087890625e3), SC_(0.17572564071949802842269744081820746771877926177782e179), + SC_(0.57e2), SC_(0.8115838623046875e3), SC_(0.97765928672497151482926812987129698670202679297201e183), + SC_(0.57e2), SC_(0.826751708984375e3), SC_(0.28092052643116613825516813603329050857884446218931e184), + SC_(0.57e2), SC_(0.915013671875e3), SC_(0.91131401181535063754738627124893068439463063019439e186), + SC_(0.57e2), SC_(0.92977703857421875e3), SC_(0.22693495921347868926954075794146960262148934686144e187), + SC_(0.57e2), SC_(0.935389892578125e3), SC_(0.31981291103834949752057837490286659313504601339537e187), + SC_(0.57e2), SC_(0.93773553466796875e3), SC_(0.3688900263643316286828693487885916009055229488776e187), + SC_(0.57e2), SC_(0.9857625732421875e3), SC_(0.63588067294915941815083020546700816691123140834824e188), + SC_(0.57e2), SC_(0.99292266845703125e3), SC_(0.96058872887019210683457681330939837205699369069038e188), + SC_(0.58e2), SC_(-0.804919189453125e3), SC_(0.98359886093734917799148104471362134113448742301714e186), + SC_(0.58e2), SC_(-0.7460263671875e3), SC_(0.11990493446843606374834114171768752791672975254446e185), + SC_(0.58e2), SC_(-0.72904595947265625e3), SC_(0.31539079003887667778314531807612639455207724902675e184), + SC_(0.58e2), SC_(-0.623236083984375e3), SC_(0.35372503594266224135242856515913702867323328261754e180), + SC_(0.58e2), SC_(-0.557931884765625e3), SC_(0.57583102639847172932211962567906075469963542052781e177), + SC_(0.58e2), SC_(-0.4430035400390625e3), SC_(0.89028262292728150610074140793563782680236919953946e171), + SC_(0.58e2), SC_(-0.383665924072265625e3), SC_(0.21212313385377011281086353425598128241401586598077e168), + SC_(0.58e2), SC_(0.9376299285888671875e2), SC_(0.62604280620315333688059710381693364286527097504684e132), + SC_(0.58e2), SC_(0.944411773681640625e2), SC_(0.95219979030929997425749816310432879664361450597778e132), + SC_(0.58e2), SC_(0.264718536376953125e3), SC_(0.94647234913352100793292091066282848088891601986906e158), + SC_(0.58e2), SC_(0.62944732666015625e3), SC_(0.62875078668132942835299336264682658691294193188921e180), + SC_(0.58e2), SC_(0.67001715087890625e3), SC_(0.23546343591932925637627633040847742798191272458582e182), + SC_(0.58e2), SC_(0.8115838623046875e3), SC_(0.1586836332975899142098791524978601596019926315731e187), + SC_(0.58e2), SC_(0.826751708984375e3), SC_(0.4644836819071084866920807074412876527322435540979e187), + SC_(0.58e2), SC_(0.915013671875e3), SC_(0.16676727889331262695178791842169909031457948784922e190), + SC_(0.58e2), SC_(0.92977703857421875e3), SC_(0.4219839159500762095101501614050659421526810441788e190), + SC_(0.58e2), SC_(0.935389892578125e3), SC_(0.59828003988949705942467519636630498279885402269671e190), + SC_(0.58e2), SC_(0.93773553466796875e3), SC_(0.6918201486186995412987998601049879246333891924841e190), + SC_(0.58e2), SC_(0.9857625732421875e3), SC_(0.12536179671332495944243061484163599674602312949226e192), + SC_(0.58e2), SC_(0.99292266845703125e3), SC_(0.19075255025241690115123922486625852876773950080745e192), + SC_(0.63e2), SC_(-0.804919189453125e3), SC_(-0.10632339781549610479619041406969505999094943001127e203), + SC_(0.63e2), SC_(-0.7460263671875e3), SC_(-0.88642268599629660190193212265296202307985906354271e200), + SC_(0.63e2), SC_(-0.72904595947265625e3), SC_(-0.20780258561878800838820505487610226573992568239933e200), + SC_(0.63e2), SC_(-0.623236083984375e3), SC_(-0.10639249520755456192441242211860915411315791499976e196), + SC_(0.63e2), SC_(-0.557931884765625e3), SC_(-0.99573011685276296405964197038004635064052319284641e192), + SC_(0.63e2), SC_(-0.4430035400390625e3), SC_(-0.48571536473640903389946459864193429311269021644027e186), + SC_(0.63e2), SC_(-0.383665924072265625e3), SC_(-0.56371743060385144846172065591557429748970112940914e182), + SC_(0.63e2), SC_(0.9376299285888671875e2), SC_(0.14271302095518395281543621141977089654954772619788e144), + SC_(0.63e2), SC_(0.944411773681640625e2), SC_(0.22508389703746523206446686216061289081224009447363e144), + SC_(0.63e2), SC_(0.264718536376953125e3), SC_(0.39287053618749596805247838834868920108072746443261e172), + SC_(0.63e2), SC_(0.62944732666015625e3), SC_(0.19872890857509752124510053434485063729806672066544e196), + SC_(0.63e2), SC_(0.67001715087890625e3), SC_(0.10170865885145417099920546695659459436546383064557e198), + SC_(0.63e2), SC_(0.8115838623046875e3), SC_(0.17875171562625846347044457253137830450493155571305e203), + SC_(0.63e2), SC_(0.826751708984375e3), SC_(0.57398511841594632428896306873234439485078800626987e203), + SC_(0.63e2), SC_(0.915013671875e3), SC_(0.34223224444163024879350378835610921837107268568578e206), + SC_(0.63e2), SC_(0.92977703857421875e3), SC_(0.93813340474969400259457231849952645213403537063766e206), + SC_(0.63e2), SC_(0.935389892578125e3), SC_(0.13707031097909198997249615373069943591630589477967e207), + SC_(0.63e2), SC_(0.93773553466796875e3), SC_(0.16049849565534916612881402821512234443315362144539e207), + SC_(0.63e2), SC_(0.9857625732421875e3), SC_(0.37334450988860541714846867055901320093308859706429e208), + SC_(0.63e2), SC_(0.99292266845703125e3), SC_(0.58902181682496407079087992188679937502927943188616e208), + SC_(0.64e2), SC_(-0.804919189453125e3), SC_(0.17115516418393134930956957812660695576555555762758e206), + SC_(0.64e2), SC_(-0.7460263671875e3), SC_(0.13225145321763463912506947704427473546594227919316e204), + SC_(0.64e2), SC_(-0.72904595947265625e3), SC_(0.30297731266319142519300755555505275478042104969272e203), + SC_(0.64e2), SC_(-0.623236083984375e3), SC_(0.13260452858231441701364025090498088686052853448746e199), + SC_(0.64e2), SC_(-0.557931884765625e3), SC_(0.11109867155607531886714022377600211420414450985886e196), + SC_(0.64e2), SC_(-0.4430035400390625e3), SC_(0.43027816705124422567335810872343924647776816168804e189), + SC_(0.64e2), SC_(-0.383665924072265625e3), SC_(0.43246575293235977119550453324173254248977085615388e185), + SC_(0.64e2), SC_(0.9376299285888671875e2), SC_(0.26666169562221769162394467872454407158823797408949e146), + SC_(0.64e2), SC_(0.944411773681640625e2), SC_(0.42363701592310910625385021135765655947792198743379e146), + SC_(0.64e2), SC_(0.264718536376953125e3), SC_(0.20790668653430943824657625408670573026507147506956e175), + SC_(0.64e2), SC_(0.62944732666015625e3), SC_(0.25015886856901675365191238194104964033185766836862e199), + SC_(0.64e2), SC_(0.67001715087890625e3), SC_(0.13628352758104430128024379960258832981315670559497e201), + SC_(0.64e2), SC_(0.8115838623046875e3), SC_(0.29013013909125825894222647618781410860190657751511e206), + SC_(0.64e2), SC_(0.826751708984375e3), SC_(0.94904261445892845427164871048618979106779458453012e206), + SC_(0.64e2), SC_(0.915013671875e3), SC_(0.62627080118909857764651282371070544817106870626377e209), + SC_(0.64e2), SC_(0.92977703857421875e3), SC_(0.17444462292196609464011437538057068543663586540673e210), + SC_(0.64e2), SC_(0.935389892578125e3), SC_(0.2564191346937588459943377158334215703301569930735e210), + SC_(0.64e2), SC_(0.93773553466796875e3), SC_(0.30099950210351799644573209378329679609266360231058e210), + SC_(0.64e2), SC_(0.9857625732421875e3), SC_(0.7360342283709939198893572318455103257992843130489e211), + SC_(0.64e2), SC_(0.99292266845703125e3), SC_(0.11696688542326119628103847394518779891392342956315e212), + SC_(0.67e2), SC_(-0.804919189453125e3), SC_(-0.71395604865066606122013699661891426203463873068701e215), + SC_(0.67e2), SC_(-0.7460263671875e3), SC_(-0.439214716391687364187564024021732580606512402522e213), + SC_(0.67e2), SC_(-0.72904595947265625e3), SC_(-0.93904227402788407947934394389327512970670916128791e212), + SC_(0.67e2), SC_(-0.623236083984375e3), SC_(-0.25674209768421442693190102856604340847503916248831e208), + SC_(0.67e2), SC_(-0.557931884765625e3), SC_(-0.15431436217922364421260050431856648098623138071202e205), + SC_(0.67e2), SC_(-0.4430035400390625e3), SC_(-0.29911973822576646623652589847208017875520526334749e198), + SC_(0.67e2), SC_(-0.383665924072265625e3), SC_(-0.19526015822885353474843208279944006332888244454282e194), + SC_(0.67e2), SC_(0.9376299285888671875e2), SC_(0.17390093432109562491103911511920483031011929481849e153), + SC_(0.67e2), SC_(0.944411773681640625e2), SC_(0.28235446461762290115209086851319733390024540548019e153), + SC_(0.67e2), SC_(0.264718536376953125e3), SC_(0.30811073596496146740945598370500903220318751173999e183), + SC_(0.67e2), SC_(0.62944732666015625e3), SC_(0.498973159123135317026153053869666153823987778347e208), + SC_(0.67e2), SC_(0.67001715087890625e3), SC_(0.3278662999965262740459597303725252570646839606698e210), + SC_(0.67e2), SC_(0.8115838623046875e3), SC_(0.12405627888491721174744514866737147152869324775397e216), + SC_(0.67e2), SC_(0.826751708984375e3), SC_(0.42898198132773354897094247581039524281956225063702e216), + SC_(0.67e2), SC_(0.915013671875e3), SC_(0.3837817535891570776096316064925826289234604649913e219), + SC_(0.67e2), SC_(0.92977703857421875e3), SC_(0.11215923554489890999502780719902857630724401847727e220), + SC_(0.67e2), SC_(0.935389892578125e3), SC_(0.16786882000412698244055579620069098918136636351948e220), + SC_(0.67e2), SC_(0.93773553466796875e3), SC_(0.19854032506834645795880992848204146407286886570974e220), + SC_(0.67e2), SC_(0.9857625732421875e3), SC_(0.56397700344853850069466092015119332034498084181404e221), + SC_(0.67e2), SC_(0.99292266845703125e3), SC_(0.91591725002034144260314292567223030779705284774582e221), + SC_(0.68e2), SC_(-0.804919189453125e3), SC_(0.11492944165481977844160639042749889711435705439192e219), + SC_(0.68e2), SC_(-0.7460263671875e3), SC_(0.65529207072689878516628373246771524546998394796728e216), + SC_(0.68e2), SC_(-0.72904595947265625e3), SC_(0.13691236470932295418206009271231802321826433996401e216), + SC_(0.68e2), SC_(-0.623236083984375e3), SC_(0.31999427611473638064153349246682256767532212572302e211), + SC_(0.68e2), SC_(-0.557931884765625e3), SC_(0.1721752728616940687565723581862597609692534907115e208), + SC_(0.68e2), SC_(-0.4430035400390625e3), SC_(0.26497695928277797274126269348797127034206387419765e201), + SC_(0.68e2), SC_(-0.383665924072265625e3), SC_(0.14979523193992880308778135191580896285724901609253e197), + SC_(0.68e2), SC_(0.9376299285888671875e2), SC_(0.32486210198364986836850518198819815917013154840805e155), + SC_(0.68e2), SC_(0.944411773681640625e2), SC_(0.53130717007794880022412938335190211916976004706358e155), + SC_(0.68e2), SC_(0.264718536376953125e3), SC_(0.16304722685276499354792918086631605049027512979648e186), + SC_(0.68e2), SC_(0.62944732666015625e3), SC_(0.62810152575355789173710546297818953525375445861782e211), + SC_(0.68e2), SC_(0.67001715087890625e3), SC_(0.43931930018461310588579182708322391145380014657504e213), + SC_(0.68e2), SC_(0.8115838623046875e3), SC_(0.20135390598861294342717207643575046227436307960836e219), + SC_(0.68e2), SC_(0.826751708984375e3), SC_(0.70928840597252373257415593809153908579367912600248e219), + SC_(0.68e2), SC_(0.915013671875e3), SC_(0.70230300036076744196859829023426726976063282233909e222), + SC_(0.68e2), SC_(0.92977703857421875e3), SC_(0.2085580812121490632054276902743441722437005132514e223), + SC_(0.68e2), SC_(0.935389892578125e3), SC_(0.31403357047962017949167805427442757459524063192189e223), + SC_(0.68e2), SC_(0.93773553466796875e3), SC_(0.37234244977852621303836114362570239474544522838737e223), + SC_(0.68e2), SC_(0.9857625732421875e3), SC_(0.11118565108245626237683701654760798812770117180759e225), + SC_(0.68e2), SC_(0.99292266845703125e3), SC_(0.18188081940210288468029442085277750466942046125126e225), + SC_(0.69e2), SC_(-0.804919189453125e3), SC_(-0.1850081162399338654500028296297913252183226453783e222), + SC_(0.69e2), SC_(-0.7460263671875e3), SC_(-0.97767059274089595678968982337826854278140139586519e219), + SC_(0.69e2), SC_(-0.72904595947265625e3), SC_(-0.19961804161143040928554705782175334155063670416805e219), + SC_(0.69e2), SC_(-0.623236083984375e3), SC_(-0.39882904216104119883607723276479909045844467958239e214), + SC_(0.69e2), SC_(-0.557931884765625e3), SC_(-0.19210316224226509857981603548527956113322666380888e211), + SC_(0.69e2), SC_(-0.4430035400390625e3), SC_(-0.23473078169771562662136461616843138538409966193101e204), + SC_(0.69e2), SC_(-0.383665924072265625e3), SC_(-0.11491609678618516149736741904351620655468528386497e200), + SC_(0.69e2), SC_(0.9376299285888671875e2), SC_(0.60683580626155093065325198848663480816576016092558e157), + SC_(0.69e2), SC_(0.944411773681640625e2), SC_(0.99970547300737778074794585861930502873180772144862e157), + SC_(0.69e2), SC_(0.264718536376953125e3), SC_(0.86281343445478761898014189584430395982291880632205e188), + SC_(0.69e2), SC_(0.62944732666015625e3), SC_(0.79064579216384384919861590442204758056478775930199e214), + SC_(0.69e2), SC_(0.67001715087890625e3), SC_(0.58865834185481932389898790561772677853802379658932e216), + SC_(0.69e2), SC_(0.8115838623046875e3), SC_(0.32681428977081852902063701892528533163973331914428e222), + SC_(0.69e2), SC_(0.826751708984375e3), SC_(0.11727524620517137714481833672797036884220596207432e223), + SC_(0.69e2), SC_(0.915013671875e3), SC_(0.1285181499939382408174721290089724705670081991561e226), + SC_(0.69e2), SC_(0.92977703857421875e3), SC_(0.38780977658427262634355280276612655888568370486454e226), + SC_(0.69e2), SC_(0.935389892578125e3), SC_(0.58746482535419337038893161712202335100520637411516e226), + SC_(0.69e2), SC_(0.93773553466796875e3), SC_(0.69829049096108586661576816358605949519674563343367e226), + SC_(0.69e2), SC_(0.9857625732421875e3), SC_(0.21919763695005329034056321076749362840532324690225e228), + SC_(0.69e2), SC_(0.99292266845703125e3), SC_(0.36117472060917448197562379204160182702204274274195e228) + }; +#undef SC_ + diff --git a/test/hypot_test.cpp b/test/hypot_test.cpp index e01f46bd7..40b2da5f1 100644 --- a/test/hypot_test.cpp +++ b/test/hypot_test.cpp @@ -3,6 +3,7 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error #include #include #include @@ -40,8 +41,13 @@ const float boundaries[] = { void do_test_boundaries(float x, float y) { float expected = static_cast((boost::math::hypot)( +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS static_cast(x), static_cast(y))); +#else + static_cast(x), + static_cast(y))); +#endif float found = (boost::math::hypot)(x, y); BOOST_CHECK_CLOSE(expected, found, tolerance); } @@ -115,6 +121,7 @@ void test_spots() int test_main(int, char* []) { + BOOST_MATH_CONTROL_FP; test_boundaries(); test_spots(); return 0; diff --git a/test/ibeta_data.ipp b/test/ibeta_data.ipp new file mode 100644 index 000000000..65f5e1394 --- /dev/null +++ b/test/ibeta_data.ipp @@ -0,0 +1,511 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 500> ibeta_data = { { + { SC_(0.115105740725994110107421875), SC_(27.2666988372802734375), SC_(0.913345992565155029296875), SC_(5.624704191155661855917495760118550518449), SC_(0.4314397017151442751805333868688125395477e-30), SC_(0.9999999999999999999999999999999232955748), SC_(0.7670442516666816870156810539487652961219e-31) }, + { SC_(0.4634225666522979736328125), SC_(3.4317314624786376953125), SC_(0.24176712334156036376953125), SC_(0.9303555938707241359170267278058957882937), SC_(0.1886421251845313169553337074104181129545), SC_(0.8314186687138222136543152962911694480678), SC_(0.1685813312861777863456847037088305519322) }, + { SC_(0.671531736850738525390625), SC_(23.0631923675537109375), SC_(0.908442795276641845703125), SC_(0.1643292146089890181565750406388380802073), SC_(0.5052411887003343404176234528376913340103e-25), SC_(0.9999999999999999999999996925432949323565), SC_(0.3074567050676435237921994231096931905187e-24) }, + { SC_(1.190207004547119140625), SC_(72.69547271728515625), SC_(0.19963125884532928466796875), SC_(0.00559660970823449190019737902600132825008), SC_(0.9534862442725159579596623739736284684983e-9), SC_(0.9999998296314855714196326655015050202504), SC_(0.170368514428580367334498494979749619704e-6) }, + { SC_(1.54034411907196044921875), SC_(40.498138427734375), SC_(0.3462987840175628662109375), SC_(0.002938208699935392440146870722865374716805), SC_(0.4756199818667749603935341902256155409499e-9), SC_(0.9999998381258945674369009890750742808727), SC_(0.1618741054325630990109249257191272986861e-6) }, + { SC_(1.54871237277984619140625), SC_(81.61170196533203125), SC_(0.678767263889312744140625), SC_(0.0009678001476208569653032183047916640238319), SC_(0.559750588331056488014869497117437903989e-42), SC_(0.9999999999999999999999999999999999999994), SC_(0.5783741506002983362466276981258467292731e-39) }, + { SC_(2.251259326934814453125), SC_(4.89832019805908203125), SC_(0.79967319965362548828125), SC_(0.02442974530836840837734643304711539009959), SC_(0.6178004958231200706879909723189065523108e-4), SC_(0.9974774927784456570206007053676991220858), SC_(0.002522507221554342979399294632300877914206) }, + { SC_(2.8674151897430419921875), SC_(59.60579681396484375), SC_(0.575251102447509765625), SC_(0.1379388062890870134560096364710423528806e-4), SC_(0.4175062181357307894530268550925291936655e-24), SC_(0.9999999999999999999697325046252222304163), SC_(0.3026749537477776958367907987526182267324e-19) }, + { SC_(2.922028064727783203125), SC_(26.592067718505859375), SC_(0.4733414947986602783203125), SC_(0.000115508766121651474024307828538813831237), SC_(0.3796145990560169217472146784816274010906e-9), SC_(0.9999967135537481783877208030551367243803), SC_(0.3286446251821612279196944863275619723855e-5) }, + { SC_(3.0540943145751953125), SC_(42.39783477783203125), SC_(0.546926796436309814453125), SC_(0.2096012544527507305106729688625599112948e-4), SC_(0.1877791782437026107953033098682180353671e-16), SC_(0.9999999999991041123359027203750870846506), SC_(0.8958876640972796249129153494479842438984e-12) }, + { SC_(3.183284282684326171875), SC_(31.6550426483154296875), SC_(0.077649272978305816650390625), SC_(0.1607872346465483285868910326819359030108e-4), SC_(0.1977878368269834064074165442158816223284e-4), SC_(0.4484060589761797174626811812282881431733), SC_(0.5515939410238202825373188187717118568267) }, + { SC_(3.2600824832916259765625), SC_(6.254324436187744140625), SC_(0.743158161640167236328125), SC_(0.003877690538964813730515800489545485233393), SC_(0.1849121735270227071877446919569946133643e-4), SC_(0.9952540157237994764714787832333762033991), SC_(0.004745984276200523528521216766623796600881) }, + { SC_(3.360383510589599609375), SC_(52.89206695556640625), SC_(0.81474220752716064453125), SC_(0.4293999091288321831907350544825170972342e-5), SC_(0.219834444785251736057188895022180823046e-40), SC_(0.9999999999999999999999999999999999948804), SC_(0.5119573621504776597210994477995646618901e-35) }, + { SC_(3.4446079730987548828125), SC_(66.3605499267578125), SC_(0.096544884145259857177734375), SC_(0.1474102736157956762304488717716147895171e-5), SC_(0.8307589573110103561152668922877179107493e-7), SC_(0.9466497330301024630866270516938583276551), SC_(0.05335026696989753691337294830614167234487) }, + { SC_(3.57116794586181640625), SC_(36.129398345947265625), SC_(0.046266771852970123291015625), SC_(0.1377307832566030389205420277524302194542e-5), SC_(0.7311615977995211503865956731396528899981e-5), SC_(0.1585130520872948273412729049865238748685), SC_(0.8414869479127051726587270950134761251315) }, + { SC_(3.5762732028961181640625), SC_(80.64510345458984375), SC_(0.92886126041412353515625), SC_(0.5195049488417132478527686360715001708256e-6), SC_(0.2753515092058996575690963489155893940797e-94), SC_(1), SC_(0.530026729908584311094876547172139505977e-88) }, + { SC_(3.7738864421844482421875), SC_(88.39685821533203125), SC_(0.50323975086212158203125), SC_(0.1936358080461588466938455069456644840687e-6), SC_(0.2398889407764917341676367096721572497995e-29), SC_(0.9999999999999999999999876113337095529831), SC_(0.1238866629044701687424663630369236796346e-22) }, + { SC_(4.24311351776123046875), SC_(87.180511474609375), SC_(0.594544112682342529296875), SC_(0.4437344750551262251613273178405984994839e-7), SC_(0.1440454807297923187241336158457814894158e-36), SC_(0.9999999999999999999999999999967537910884), SC_(0.3246208911577068569804118543592340399042e-29) }, + { SC_(4.302380084991455078125), SC_(90.84336090087890625), SC_(0.3500487506389617919921875), SC_(0.3088652285368942607072200051700648121738e-7), SC_(0.3690261013058404601783388874804478116026e-20), SC_(0.9999999999998805219664725983124099139968), SC_(0.1194780335274016875900860032189749548454e-12) }, + { SC_(4.61713886260986328125), SC_(14.9113979339599609375), SC_(0.081217654049396514892578125), SC_(0.7777055873291569797054048770916368511548e-6), SC_(0.3050394533002200879235444490511467363605e-4), SC_(0.02486139844038035518263312395393841283781), SC_(0.9751386015596196448173668760460615871622) }, + { SC_(4.965442657470703125), SC_(82.34554290771484375), SC_(0.3013162314891815185546875), SC_(0.6232388896113233687607109871883895899506e-8), SC_(0.1757129987256299654131721919929978230207e-16), SC_(0.9999999971806477233823653568856711213164), SC_(0.2819352276617634643114328878683629953111e-8) }, + { SC_(5.26769924163818359375), SC_(94.65772247314453125), SC_(0.695263326168060302734375), SC_(0.1253627465271932390249428025335036505934e-8), SC_(0.3222623306430773933281977469822481222259e-51), SC_(1), SC_(0.2570638722989156911038000229513107483269e-42) }, + { SC_(5.39501190185546875), SC_(35.276241302490234375), SC_(0.184897840023040771484375), SC_(0.1209301166284995442719813406613075674954e-6), SC_(0.2280352502477099546779864717478435018705e-7), SC_(0.8413487283667377937115292338183332209645), SC_(0.1586512716332622062884707661816667790355) }, + { SC_(5.961885929107666015625), SC_(95.24720001220703125), SC_(0.587086021900177001953125), SC_(0.1538572075523752828118796821074440813526e-9), SC_(0.2000258675867804464202225099585025891472e-39), SC_(0.9999999999999999999999999999986999252699), SC_(0.1300074730127210093509800162113431715462e-29) }, + { SC_(5.977954387664794921875), SC_(43.524570465087890625), SC_(0.3404516875743865966796875), SC_(0.1330232014752472065680412448138951627377e-7), SC_(0.1838187070983182316780060409965932424395e-11), SC_(0.9998618336444325666209910880648121429145), SC_(0.0001381663555674333790089119351878570854794) }, + { SC_(6.04711818695068359375), SC_(27.766407012939453125), SC_(0.65411365032196044921875), SC_(0.1448258716618381548156837823010682065087e-6), SC_(0.7331873767991696645616237465028962091657e-15), SC_(0.9999999949374558241960009728719676377959), SC_(0.5062544175803999027128032362204089305663e-8) }, + { SC_(6.7992763519287109375), SC_(90.44748687744140625), SC_(0.887737333774566650390625), SC_(0.1998993534488701791116031926385820610152e-10), SC_(0.6971997317630963088710683423020133066068e-88), SC_(1), SC_(0.3487753810776704370476639121868597367948e-77) }, + { SC_(6.88061046600341796875), SC_(29.616764068603515625), SC_(0.815787494182586669921875), SC_(0.2281625605381182233289702097867621117898e-7), SC_(0.1856504037414286050377032409208117834665e-23), SC_(0.9999999999999999186323981885657766556028), SC_(0.8136760181143422334439720929849176822682e-16) }, + { SC_(7.14454555511474609375), SC_(93.46026611328125), SC_(0.5949366092681884765625), SC_(0.6261688000720345538602778281565999642712e-11), SC_(0.9596403591635324364962526501236935948176e-40), SC_(0.9999999999999999999999999999846744143264), SC_(0.1532558567359369013326396902913815273371e-28) }, + { SC_(7.58542919158935546875), SC_(40.4208526611328125), SC_(0.18398940563201904296875), SC_(0.5710750401537042017349940997959387844794e-9), SC_(0.2303762947100015498104515891135402646609e-9), SC_(0.712551112352717985151979924433686508159), SC_(0.287448887647282014848020075566313491841) }, + { SC_(7.596668720245361328125), SC_(76.24213409423828125), SC_(0.285910427570343017578125), SC_(0.8265019986755931648288865085855177284833e-11), SC_(0.3020435737611112373637402768694641871851e-16), SC_(0.9999963455324919155056331119114169870562), SC_(0.3654467508084494366888088583012943772111e-5) }, + { SC_(7.817553043365478515625), SC_(85.445098876953125), SC_(0.2395785152912139892578125), SC_(0.2045849138997910846011181882057729206148e-11), SC_(0.6206348438534908303443614446395388099155e-16), SC_(0.9999696646245887662689981969860862011323), SC_(0.3033537541123373100180301391379886772522e-4) }, + { SC_(8.11257648468017578125), SC_(37.94188690185546875), SC_(0.379480898380279541015625), SC_(0.4786697989791690183686973181095820391607e-9), SC_(0.5105450174508401841625588085643695311267e-12), SC_(0.9989345451585250300412316485503607267762), SC_(0.001065454841474969958768351449639273223821) }, + { SC_(8.34698200225830078125), SC_(90.6944122314453125), SC_(0.644353687763214111328125), SC_(0.3364675517953113000901013402400027278184e-12), SC_(0.8698402891720550493242566122003912414852e-44), SC_(0.99999999999999999999999999999997414787), SC_(0.2585213000572545365092497901594719756978e-31) }, + { SC_(8.38213825225830078125), SC_(91.25775146484375), SC_(0.22599919140338897705078125), SC_(0.2928519296858282452714722219455008628279e-12), SC_(0.1777333486814689733291769711180044171708e-16), SC_(0.9999393131666238248657974654220509829647), SC_(0.6068683337617513420253457794901703526372e-4) }, + { SC_(8.44358539581298828125), SC_(34.623340606689453125), SC_(0.2511587440967559814453125), SC_(0.443701039522219953578147586202996031252e-9), SC_(0.9513284666103323417345709357843462492944e-10), SC_(0.823446800395401826049653589725327249707), SC_(0.176553199604598173950346410274672750293) }, + { SC_(8.551578521728515625), SC_(99.35347747802734375), SC_(0.47097623348236083984375), SC_(0.9491108813882418406411403691391340218337e-13), SC_(0.1251951329728637708212384704748511946219e-31), SC_(0.9999999999999999998680921950976435577979), SC_(0.1319078049023564422021423976447900507394e-18) }, + { SC_(9.08232879638671875), SC_(6.788483142852783203125), SC_(0.84073317050933837890625), SC_(0.2530253735758439599396238834500896240932e-4), SC_(0.1710018161376520978407344762789904201606e-6), SC_(0.9932870805673499082587034528485389854982), SC_(0.006712919432650091741296547151461014501845) }, + { SC_(9.111347198486328125), SC_(8.621723175048828125), SC_(0.95751106739044189453125), SC_(0.5581733139245863761480262091886625022247e-5), SC_(0.1262573120459230933124347573943433093957e-12), SC_(0.9999999773802677339972476692253597732084), SC_(0.2261973226600275233077464022679157690182e-7) }, + { SC_(9.4229335784912109375), SC_(77.64537811279296875), SC_(0.808194696903228759765625), SC_(0.9524570155144056199865395551964281966018e-13), SC_(0.4565434370151736443918038655891867279458e-58), SC_(1), SC_(0.4793323263712876342930723505606328765286e-45) }, + { SC_(9.64545345306396484375), SC_(22.3419952392578125), SC_(0.3250310420989990234375), SC_(0.1927273294702852349994959071840024548323e-8), SC_(0.1127320113582492064762275103993848682693e-8), SC_(0.6309426614603682093440760069469571263649), SC_(0.3690573385396317906559239930530428736351) }, + { SC_(9.67300319671630859375), SC_(28.9689388275146484375), SC_(0.602882802486419677734375), SC_(0.3387330112954271587522113960748178117541e-9), SC_(0.1264185963441989647697159098522605256053e-14), SC_(0.9999962679124760982696760022063593542069), SC_(0.3732087523901730323997793640645793120035e-5) }, + { SC_(9.71317768096923828125), SC_(99.40685272216796875), SC_(0.0839129984378814697265625), SC_(0.2314488008585757404811752654298553290829e-14), SC_(0.270313707187334081763305972274999472369e-14), SC_(0.4612716118626361034813232775095335302198), SC_(0.5387283881373638965186767224904664697802) }, + { SC_(9.754039764404296875), SC_(54.722057342529296875), SC_(0.01363777182996273040771484375), SC_(0.3368981224301379108838107150715196706969e-19), SC_(0.1110004273353565458512440747737453369747e-11), SC_(0.3035106443212857882581240007478661981264e-7), SC_(0.9999999696489355678714211741875999252134) }, + { SC_(9.87122821807861328125), SC_(76.6854095458984375), SC_(0.5060064792633056640625), SC_(0.3902504421774217272554497438780180477894e-13), SC_(0.1132907932372070809565814012629006675206e-27), SC_(0.9999999999999970969720724697928938432078), SC_(0.2903027927530207106156792222169782876577e-14) }, + { SC_(10.56292057037353515625), SC_(68.12713623046875), SC_(0.82583439350128173828125), SC_(0.2785817464599403775893181935422048664706e-13), SC_(0.4717252140853610172599941592891955373073e-54), SC_(1), SC_(0.1693309845601080580127181291846962653943e-40) }, + { SC_(10.62163448333740234375), SC_(49.278961181640625), SC_(0.6798517704010009765625), SC_(0.5958863813529190097697256011414634979471e-12), SC_(0.2288849440125899541446316347103048842469e-27), SC_(0.9999999999999996158916344204370695234889), SC_(0.3841083655795629304765110609039225618465e-15) }, + { SC_(10.6652774810791015625), SC_(49.854419708251953125), SC_(0.2400285303592681884765625), SC_(0.4422990963276631606374577229051909674408e-12), SC_(0.5031698677956059771262107115968987085183e-13), SC_(0.8978576045220015559609936952873723304564), SC_(0.1021423954779984440390063047126276695436) }, + { SC_(10.67618656158447265625), SC_(50.19744110107421875), SC_(0.52858030796051025390625), SC_(0.4518761400139130213130491583640810461719e-12), SC_(0.201437738631141141470424212178522757797e-20), SC_(0.9999999955421913242206573717392946221685), SC_(0.4457808675779342628260705377831546128942e-8) }, + { SC_(10.7769012451171875), SC_(37.481258392333984375), SC_(0.79485189914703369140625), SC_(0.646975771789569508579349635040961226221e-11), SC_(0.4964914536667815249823527165405771180686e-28), SC_(0.9999999999999999923259652785225686792144), SC_(0.767403472147743132078557996820695266472e-17) }, + { SC_(11.11192226409912109375), SC_(70.73215484619140625), SC_(0.4427340030670166015625), SC_(0.6203632093352945084996567094765910103772e-14), SC_(0.4936047078287128948131686513371015921329e-23), SC_(0.9999999992043294959982350636294635189767), SC_(0.7956705040017649363705364810232981336917e-9) }, + { SC_(11.1202754974365234375), SC_(16.287212371826171875), SC_(0.3125767409801483154296875), SC_(0.1444084880827105833598873002859647716634e-8), SC_(0.7582293180045103178119891941975956585152e-8), SC_(0.1599849763757364153063562226806810539962), SC_(0.8400150236242635846936437773193189460038) }, + { SC_(11.7417659759521484375), SC_(32.4963531494140625), SC_(0.4580433666706085205078125), SC_(0.6541379949738736127026537535568566930981e-11), SC_(0.2467161453427888318891073615024870068511e-13), SC_(0.9962425493779973850401884157721807468848), SC_(0.003757450622002614959811584227819253115167) }, + { SC_(11.89976787567138671875), SC_(45.603282928466796875), SC_(0.12527024745941162109375), SC_(0.7343675470549631205259840603871381673905e-14), SC_(0.1445731020617901942696801549598873126062e-12), SC_(0.04834012141276706659561379818680486688753), SC_(0.9516598785872329334043862018131951331125) }, + { SC_(11.939624786376953125), SC_(11.107936859130859375), SC_(0.97992765903472900390625), SC_(0.1236855625133917838192742812677181831194e-6), SC_(0.1026801911750464939553409817973824818524e-19), SC_(0.999999999999916982880549279551870238859), SC_(0.830171194507204481297611409510827886702e-13) }, + { SC_(12.06116199493408203125), SC_(70.715972900390625), SC_(0.76554024219512939453125), SC_(0.9327812564588109856066718781098927286944e-15), SC_(0.2196385270083919350014732372050387947987e-47), SC_(0.9999999999999999999999999999999976453373), SC_(0.2354662740996989134445682126619652642791e-32) }, + { SC_(12.33189296722412109375), SC_(25.295597076416015625), SC_(0.2963911592960357666015625), SC_(0.1430384079233545086422442075798357554593e-10), SC_(0.2608129213386147998505707504945413064922e-10), SC_(0.3541858044264816530507626723606877120233), SC_(0.6458141955735183469492373276393122879767) }, + { SC_(12.69868183135986328125), SC_(96.88677978515625), SC_(0.0048830057494342327117919921875), SC_(0.2274631895397714334376199506015971238567e-30), SC_(0.6436250806711273698189670869799232318523e-17), SC_(0.3534094558630012306091726356379062630746e-13), SC_(0.9999999999999646590544136998769390827364) }, + { SC_(12.80144023895263671875), SC_(88.17254638671875), SC_(0.731749236583709716796875), SC_(0.1600513463255546840178411447275468581372e-16), SC_(0.1225858808089488512156391650822874811212e-53), SC_(0.9999999999999999999999999999999999999234), SC_(0.7659159614915161187588366101009835373041e-37) }, + { SC_(12.99062061309814453125), SC_(15.4438419342041015625), SC_(0.1945759356021881103515625), SC_(0.2587781101703819292072418245521947001612e-11), SC_(0.291528868499340400454385937301248543798e-8), SC_(0.0008868713709346840065848185228626715063198), SC_(0.9991131286290653159934151814771373284937) }, + { SC_(13.19732952117919921875), SC_(49.030147552490234375), SC_(0.3325150310993194580078125), SC_(0.836807821750677730781836247457631142927e-14), SC_(0.1355217337782138292671525236416076932712e-15), SC_(0.9840630163043200372488915808903253780579), SC_(0.01593698369567996275110841910967462194208) }, + { SC_(13.31710052490234375), SC_(7.650397777557373046875), SC_(0.644586086273193359375), SC_(0.6334516998363631798060997294309157441901e-6), SC_(0.5867175170967860406913828309197643581204e-6), SC_(0.5191506973340311769249913932512318048834), SC_(0.4808493026659688230750086067487681951166) }, + { SC_(13.6068553924560546875), SC_(80.21114349365234375), SC_(0.2625559866428375244140625), SC_(0.9992299384769147519369814595315761288124e-17), SC_(0.2479250831624222327657818529226482238861e-19), SC_(0.997524979447043305474794182324638778972), SC_(0.002475020552956694525205817675361221028024) }, + { SC_(13.6553134918212890625), SC_(84.710968017578125), SC_(0.513298213481903076171875), SC_(0.4552602913635528307038399569663237850965e-17), SC_(0.9526803734074731746813267204211613354766e-32), SC_(0.9999999999999979073940963441101405545443), SC_(0.209260590365588985944545573621935147781e-14) }, + { SC_(13.86244487762451171875), SC_(76.17311859130859375), SC_(0.1419721543788909912109375), SC_(0.471777422530245397549754360049288004398e-17), SC_(0.7079580252143472766427264767362043933898e-17), SC_(0.3999010315678698251764087828156171967859), SC_(0.6000989684321301748235912171843828032141) }, + { SC_(14.18863391876220703125), SC_(0.4783484041690826416015625), SC_(0.035808108747005462646484375), SC_(0.2181420600534516761479511103223744849247e-21), SC_(0.5252237792285076729676810983455265352419), SC_(0.4153316522985247527631504651619264125478e-21), SC_(0.9999999999999999999995846683477014752472) }, + { SC_(14.495479583740234375), SC_(68.02870941162109375), SC_(0.2728257477283477783203125), SC_(0.1583805387717215760690192473852076461233e-16), SC_(0.2685492726820800162158386962306165441572e-18), SC_(0.9833267592065487534269929523991259762928), SC_(0.0166732407934512465730070476008740237072) }, + { SC_(14.55389881134033203125), SC_(28.267330169677734375), SC_(0.262285530567169189453125), SC_(0.1368603360178309831063004729451423767005e-12), SC_(0.8423813680373936308911937645321041457644e-12), SC_(0.139761547584285386592630137056317947914), SC_(0.860238452415714613407369862943682052086) }, + { SC_(14.92940044403076171875), SC_(23.015605926513671875), SC_(0.1450403034687042236328125), SC_(0.8346816451648677175496669071149149814546e-15), SC_(0.7552948548034490873736089786224782702461e-11), SC_(0.000110498490595455606500103409414485352965), SC_(0.999889501509404544393499896590585514647) }, + { SC_(14.98654460906982421875), SC_(19.5107402801513671875), SC_(0.622092902660369873046875), SC_(0.4754015571501058469479017635859747408132e-10), SC_(0.6224329229145444216639234478460144861501e-12), SC_(0.9870764229972386472767835767144023074407), SC_(0.01292357700276135272321642328559769255934) }, + { SC_(15.2378025054931640625), SC_(50.319004058837890625), SC_(0.2302330434322357177734375), SC_(0.1358396765418010348485937847284120525806e-15), SC_(0.1336553663882714658160689258595248999831e-15), SC_(0.5040525980177237343896273264202142809274), SC_(0.4959474019822762656103726735797857190726) }, + { SC_(15.2721195220947265625), SC_(54.02520751953125), SC_(0.93401730060577392578125), SC_(0.9806622787349997524794563536696797743199e-16), SC_(0.1179746997234395405098481040222145009647e-65), SC_(1), SC_(0.1203010478547419972379048746089257476243e-49) }, + { SC_(15.36567211151123046875), SC_(52.704280853271484375), SC_(0.848482906818389892578125), SC_(0.1189869504759809721262347397884564905103e-15), SC_(0.1205167248842989509302379987322991677386e-45), SC_(0.999999999999999999999999999998987143343), SC_(0.1012856656988001244779876090333902042448e-29) }, + { SC_(15.64049530029296875), SC_(33.579792022705078125), SC_(0.757224500179290771484375), SC_(0.334105890620542432215301754097792702537e-13), SC_(0.1328627163740096418101062638883003542285e-23), SC_(0.9999999999602333511324935915593900751149), SC_(0.39766648867506408440609924885097307802e-10) }, + { SC_(15.7613086700439453125), SC_(72.583892822265625), SC_(0.02931735850870609283447265625), SC_(0.597817234080146905146952778275648216168e-26), SC_(0.7113363534516596137475168226678200473187e-18), SC_(0.8404142796233898015967340533693928321288e-8), SC_(0.9999999915958572037661019840326594663061) }, + { SC_(16.14847564697265625), SC_(48.818401336669921875), SC_(0.801034510135650634765625), SC_(0.109143584202282289680538262456504541044e-15), SC_(0.4499830497382691554031721903276781483949e-37), SC_(0.9999999999999999999995877146118783410738), SC_(0.4122853881216589261831470291007530731187e-21) }, + { SC_(16.2182292938232421875), SC_(92.7492828369140625), SC_(0.2078215181827545166015625), SC_(0.7948632114788365030854995953193570000824e-20), SC_(0.4254667258353576247523665412048381049542e-21), SC_(0.9491925359453163728901600048445871196697), SC_(0.05080746405468362710983999515541288033028) }, + { SC_(16.261173248291015625), SC_(64.39609527587890625), SC_(0.12340660393238067626953125), SC_(0.4756133626209864854122181844682389348196e-19), SC_(0.1683563689735547723818589518140386859386e-17), SC_(0.02747423527927399546517107784257491137116), SC_(0.9725257647207260045348289221574250886288) }, + { SC_(16.56487274169921875), SC_(11.9547176361083984375), SC_(0.2120031416416168212890625), SC_(0.3678719213803974225296602025849517577778e-13), SC_(0.3626765412426586081242337527368141793909e-8), SC_(0.1014314818213882190545008288279278500065e-4), SC_(0.999989856851817861178094549917117207215) }, + { SC_(16.7168407440185546875), SC_(17.211780548095703125), SC_(0.679734706878662109375), SC_(0.5255404936867314730857144059170849864992e-10), SC_(0.6713201704579517148922939230392858897661e-12), SC_(0.9873872144755256315210291318674926821626), SC_(0.01261278552447436847897086813250731783743) }, + { SC_(16.7927150726318359375), SC_(96.29975128173828125), SC_(0.57974660396575927734375), SC_(0.1554111596773145889341558799298843484464e-20), SC_(0.1189329699553228682499916409483462758958e-41), SC_(0.9999999999999999999992347205297079862945), SC_(0.7652794702920137054593152118610564227963e-21) }, + { SC_(16.8990039825439453125), SC_(80.91371917724609375), SC_(0.35079205036163330078125), SC_(0.1893903589863859287665077022048775851226e-19), SC_(0.7284558113956680012499742841191836454899e-24), SC_(0.9999615382853892522790641546872240359769), SC_(0.3846171461074772093584531277596402309709e-4) }, + { SC_(17.070804595947265625), SC_(23.9502468109130859375), SC_(0.4302643835544586181640625), SC_(0.3702029717024057525719792977144457629507e-12), SC_(0.2691010536497529290537495169046104149395e-12), SC_(0.5790718609952136144260120602011740753818), SC_(0.4209281390047863855739879397988259246182) }, + { SC_(17.1121063232421875), SC_(73.92975616455078125), SC_(0.74067318439483642578125), SC_(0.5280405885074293518312435411854031119108e-19), SC_(0.5373485890650070919093600600563529197499e-47), SC_(0.9999999999999999999999999998982372566124), SC_(0.1017627433875657040841231245138316115717e-27) }, + { SC_(17.1186676025390625), SC_(30.191310882568359375), SC_(0.075946711003780364990234375), SC_(0.4590420410757144739016353043158825613657e-21), SC_(0.2725198983761384272444021476908625289899e-13), SC_(0.1684434920454393141892473626038158167364e-7), SC_(0.9999999831556507954560685810752637396184) }, + { SC_(17.3388614654541015625), SC_(71.39038848876953125), SC_(0.64634835720062255859375), SC_(0.6219278725572947317578424543613973742666e-19), SC_(0.7566034540106270642458983887447764663109e-37), SC_(0.9999999999999999987834546618733100364364), SC_(0.1216545338126689963563634195679132625531e-17) }, + { SC_(17.58744049072265625), SC_(48.637111663818359375), SC_(0.92927074432373046875), SC_(0.1580400427033062940992711223892715931891e-16), SC_(0.6975610821708038755777575829595736193365e-58), SC_(1), SC_(0.4413824941064828453250596540773370908102e-41) }, + { SC_(17.8132457733154296875), SC_(31.2676944732666015625), SC_(0.730357825756072998046875), SC_(0.8137271127606893031200200197673127274407e-14), SC_(0.3186388206253888385279717184370378989271e-21), SC_(0.9999999608420558745893903546685482497064), SC_(0.3915794412541060964533145175029358442278e-7) }, + { SC_(17.8766193389892578125), SC_(42.912654876708984375), SC_(0.802131235599517822265625), SC_(0.7219325110845885726839356782748620694039e-16), SC_(0.3980746418665576076070766720666066538769e-33), SC_(0.9999999999999999944859853829201585466432), SC_(0.5514014617079841453356754085258244026557e-17) }, + { SC_(18.1847019195556640625), SC_(98.236053466796875), SC_(0.2583700716495513916015625), SC_(0.7908189439486929515366022606583928830617e-22), SC_(0.269699614897743849162269804382062115103e-24), SC_(0.9966012073448134172485992427557359361125), SC_(0.003398792655186582751400757244264063887456) }, + { SC_(18.2922458648681640625), SC_(24.5019245147705078125), SC_(0.567864835262298583984375), SC_(0.1553793108114208833045214935754835713717e-12), SC_(0.5198101764629563256465612473428796681963e-14), SC_(0.9676286864930787796291178867133064398668), SC_(0.03237131350692122037088211328669356013324) }, + { SC_(18.351116180419921875), SC_(38.57105255126953125), SC_(0.368547737598419189453125), SC_(0.1595650158595999650941597937766785252704e-15), SC_(0.4602843542939845022493964218339916910538e-16), SC_(0.776119155834894560717685891523945200218), SC_(0.223880844165105439282314108476054799782) }, + { SC_(18.3907794952392578125), SC_(50.477100372314453125), SC_(0.296746194362640380859375), SC_(0.2178574066842946817313744518719195865507e-17), SC_(0.8437789690511836216127902982566585638851e-18), SC_(0.7208205133449736970682357891577574238536), SC_(0.2791794866550263029317642108422425761464) }, + { SC_(18.481632232666015625), SC_(58.43822479248046875), SC_(0.43872296810150146484375), SC_(0.2556809745912072442062184230311557842604e-18), SC_(0.3278072790150444340978436844977336600489e-22), SC_(0.9998718069434293946465962791286609675036), SC_(0.0001281930565706053534037208713390324963921) }, + { SC_(18.687259674072265625), SC_(40.87311553955078125), SC_(0.1081511080265045166015625), SC_(0.6522959633179768047353804247100162463716e-21), SC_(0.570611239611246652829878151601384494896e-16), SC_(0.1143139954808103675361108144147251480546e-4), SC_(0.9999885686004519189632463889185585274852) }, + { SC_(18.8661975860595703125), SC_(88.4942626953125), SC_(0.95613896846771240234375), SC_(0.1351910056401104999354645890228783322755e-21), SC_(0.347400864942295191287123432716380461902e-122), SC_(1), SC_(0.2569703977697337877154833916591589345698e-100) }, + { SC_(18.89550018310546875), SC_(81.18740081787109375), SC_(0.361357867717742919921875), SC_(0.5627898813106083106067922359909406868658e-21), SC_(0.3715353272812491294128860109213736863535e-25), SC_(0.9999339876544159492226591617547753577898), SC_(0.6601234558405077734083824522464221024462e-4) }, + { SC_(19.04332733154296875), SC_(45.651042938232421875), SC_(0.751291930675506591796875), SC_(0.6462638248777118538776502604429991567738e-17), SC_(0.3725261322582575367883652441102482402876e-31), SC_(0.9999999999999942356957341880307524636437), SC_(0.5764304265811969247536356291588007620888e-14) }, + { SC_(19.09236907958984375), SC_(59.5980987548828125), SC_(0.76244509220123291015625), SC_(0.7676674292691921347499919511359031696248e-19), SC_(0.855954426161405107794389130256708605989e-41), SC_(0.9999999999999999999998884993170836672244), SC_(0.111500682916332775555467510965662210199e-21) }, + { SC_(19.1745243072509765625), SC_(54.286212921142578125), SC_(0.942056357860565185546875), SC_(0.3228754849973669255141943338548325923194e-18), SC_(0.4480197660390922385572158502440821218299e-69), SC_(1), SC_(0.1387593009864920138821234636223602060197e-50) }, + { SC_(19.476428985595703125), SC_(44.122348785400390625), SC_(0.4232228100299835205078125), SC_(0.6436581298014894356480014944751334711139e-17), SC_(0.1694463861578001822222332361106225633163e-18), SC_(0.974349731145726981655976978912051644614), SC_(0.02565026885427301834402302108794835538601) }, + { SC_(19.6595249176025390625), SC_(84.84677886962890625), SC_(0.15814177691936492919921875), SC_(0.1593300454212762784095445360549615086987e-22), SC_(0.5582801605997422215300682550752043385062e-22), SC_(0.2220286780823872070914743549524763022619), SC_(0.7779713219176127929085256450475236977381) }, + { SC_(19.78098297119140625), SC_(51.385921478271484375), SC_(0.5466372966766357421875), SC_(0.3607203038289368076677162262751295763726e-18), SC_(0.7199006926871186325700716374568673204863e-24), SC_(0.9999980042729829168361574417693160846349), SC_(0.199572701708316384255823068391536510116e-5) }, + { SC_(19.811840057373046875), SC_(86.43074798583984375), SC_(0.680438578128814697265625), SC_(0.3983729481961293313944760855190773222693e-22), SC_(0.1386644612447768888986898157261148933585e-47), SC_(0.9999999999999999999999999651922998605546), SC_(0.348077001394454071568638274512651145929e-25) }, + { SC_(20.7742290496826171875), SC_(54.01380157470703125), SC_(0.412725269794464111328125), SC_(0.4162786434715983739806101698391799163795e-19), SC_(0.293833734305770253403264950930230379891e-21), SC_(0.9929908914058116404854925085947053201515), SC_(0.007009108594188359514507491405294679848518) }, + { SC_(20.8934917449951171875), SC_(58.7877044677734375), SC_(0.97059571743011474609375), SC_(0.7881989724463155632290721734824437678474e-20), SC_(0.8682259048544488642928943633380231780783e-92), SC_(1), SC_(0.1101531383832886125995886868329430845532e-71) }, + { SC_(22.1746730804443359375), SC_(83.121429443359375), SC_(0.4560872018337249755859375), SC_(0.1739142074176166923009720105152949208628e-23), SC_(0.1067222037148087168937862791759097803393e-30), SC_(0.9999999386351473232163600017396280191656), SC_(0.6136485267678363999826037198083439791467e-7) }, + { SC_(22.3811931610107421875), SC_(1.77738964557647705078125), SC_(0.13206009566783905029296875), SC_(0.8439316302956905718204318651809676819388e-21), SC_(0.003580858746457181785641057338109616307986), SC_(0.2356785592647732514215053826303556328121e-18), SC_(0.9999999999999999997643214407352267485785) }, + { SC_(22.404003143310546875), SC_(91.82765960693359375), SC_(0.90006387233734130859375), SC_(0.1646706713163086523940115461042109988871e-24), SC_(0.1645882929639846608547438664330135010911e-94), SC_(1), SC_(0.999499738771540230231717479553597764893e-70) }, + { SC_(22.5921783447265625), SC_(14.78290081024169921875), SC_(0.4242243468761444091796875), SC_(0.1418521180057423870847905150196516299015e-12), SC_(0.1063585312385792604135456145578462649334e-10), SC_(0.01316162530171529181132394426207041054381), SC_(0.9868383746982847081886760557379295894562) }, + { SC_(22.61876678466796875), SC_(47.7995758056640625), SC_(0.77493298053741455078125), SC_(0.4064727215238972439339956975447450177846e-19), SC_(0.1063157107346194002563139304836002858116e-34), SC_(0.9999999999999997384431842411622069454738), SC_(0.2615568157588377930545261667169333820496e-15) }, + { SC_(22.766429901123046875), SC_(79.9653167724609375), SC_(0.431470692157745361328125), SC_(0.1504844669338893040579356037848228577655e-23), SC_(0.5286559595700542019121178434707654139233e-29), SC_(0.9999964869855795396305042647898260771244), SC_(0.3513014420460369495735210173922875635906e-5) }, + { SC_(22.89769744873046875), SC_(50.549854278564453125), SC_(0.22774152457714080810546875), SC_(0.5417830273662362402339129265361806301141e-21), SC_(0.9680666671166753496424881512081070118094e-20), SC_(0.05299933414629438649884252328574133625735), SC_(0.9470006658537056135011574767142586637427) }, + { SC_(23.048816680908203125), SC_(19.4495372772216796875), SC_(0.42181909084320068359375), SC_(0.8337369759687474122892396804851656844592e-14), SC_(0.1372318032772555779842374401371306852307e-12), SC_(0.05727428126263784823321320035093093675723), SC_(0.9427257187373621517667867996490690632428) }, + { SC_(23.1594390869140625), SC_(40.157146453857421875), SC_(0.490352451801300048828125), SC_(0.5632810949260404739034911790306267129475e-18), SC_(0.127350832195786558065571877265155758699e-19), SC_(0.9778911014954875499217622757419529876696), SC_(0.02210889850451245007823772425804701233036) }, + { SC_(23.4779911041259765625), SC_(55.288116455078125), SC_(0.343905150890350341796875), SC_(0.7302071589677771838332771400537165474977e-21), SC_(0.1657199710967559571398700871593189442065e-21), SC_(0.8150296318353265646780399736222077944296), SC_(0.1849703681646734353219600263777922055704) }, + { SC_(23.623058319091796875), SC_(32.82364654541015625), SC_(0.9797503948211669921875), SC_(0.1469244755413879134308682702377911156075e-16), SC_(0.5003485334183521067663252842593777743589e-57), SC_(1), SC_(0.3405481160131188266997507973987308310802e-40) }, + { SC_(23.7283573150634765625), SC_(96.86403656005859375), SC_(0.4876201450824737548828125), SC_(0.6163795038119352621883609181032831500413e-26), SC_(0.8195039556020543732822081993836064998246e-37), SC_(0.9999999999867045553831199563309383122057), SC_(0.132954446168800436690616877942503802328e-10) }, + { SC_(23.99161529541015625), SC_(4.047111034393310546875), SC_(0.2878762185573577880859375), SC_(0.1650775901535324017050264177401078759094e-14), SC_(0.1294943622129606859895816570179719505795e-4), SC_(0.1274785923583370047463307534724391645537e-9), SC_(0.9999999998725214076416629952536692465276) }, + { SC_(23.99320220947265625), SC_(33.300525665283203125), SC_(0.568866729736328125), SC_(0.8064936366006045944064246272360488846407e-17), SC_(0.9122323123205927505951176176899129492062e-19), SC_(0.9888154185625609984191751426210855790298), SC_(0.01118458143743900158082485737891442097022) }, + { SC_(23.9952526092529296875), SC_(82.260498046875), SC_(0.2970997393131256103515625), SC_(0.124560997639688542491367615358076911417e-24), SC_(0.5955144609896631738840890481584589059087e-26), SC_(0.9543723519002833592939142296571480716771), SC_(0.04562764809971664070608577034285192832294) }, + { SC_(24.0707035064697265625), SC_(41.576251983642578125), SC_(0.87595522403717041015625), SC_(0.118488450409009720549111591633108869005e-18), SC_(0.2529546292008898867416811893217785831678e-40), SC_(0.9999999999999999999997865153706308783677), SC_(0.2134846293691216323140999704092335056151e-21) }, + { SC_(24.16912841796875), SC_(27.275302886962890625), SC_(0.3188464343547821044921875), SC_(0.3205505212593666230273925872133098875125e-17), SC_(0.2490252031108970377947168555718984344947e-15), SC_(0.01270862391776081654549628739666585122497), SC_(0.987291376082239183454503712603334148775) }, + { SC_(24.2849597930908203125), SC_(33.197727203369140625), SC_(0.948930203914642333984375), SC_(0.6681455798171640490579715308209851464705e-17), SC_(0.1199353431782231099546747202091696178989e-44), SC_(0.9999999999999999999999999998204951932616), SC_(0.1795048067384402093827552906814460481335e-27) }, + { SC_(24.352497100830078125), SC_(1.3539125919342041015625), SC_(0.152462780475616455078125), SC_(0.4978690735093790656962712836188504239884e-21), SC_(0.01170252329158081952400542258249700218467), SC_(0.4254373703041996642360450375264768223225e-19), SC_(0.9999999999999999999574562629695800335764) }, + { SC_(25.1083850860595703125), SC_(95.5017547607421875), SC_(0.162266075611114501953125), SC_(0.9174772112948988715418630635487472625933e-28), SC_(0.8142785070428205789549581363043083621703e-27), SC_(0.1012638688336526420242266481055859797858), SC_(0.8987361311663473579757733518944140202142) }, + { SC_(25.18061065673828125), SC_(65.47235870361328125), SC_(0.779189288616180419921875), SC_(0.3233105666920879356732744292188124141857e-23), SC_(0.4593993692427350256106305360070281738467e-47), SC_(0.9999999999999999999999985790771580928429), SC_(0.1420922841907157062117490694830542585229e-23) }, + { SC_(25.4282169342041015625), SC_(33.2448272705078125), SC_(0.149199068546295166015625), SC_(0.2660058434501108166982226277372191696714e-24), SC_(0.2432981045756627375787100723534943887497e-17), SC_(0.1093332867638897269117682032562335084536e-6), SC_(0.9999998906667132361102730882317967437665) }, + { SC_(25.479015350341796875), SC_(93.52143096923828125), SC_(0.890914142131805419921875), SC_(0.8113186773177302380349984038983900673597e-27), SC_(0.669606284776357256960282633346478519323e-93), SC_(1), SC_(0.8253307898569734376291367155543777803741e-66) }, + { SC_(25.5095119476318359375), SC_(82.084075927734375), SC_(0.1338230073451995849609375), SC_(0.3283675745381596315645869183106647202168e-28), SC_(0.1453173055208968488821218581378576382562e-25), SC_(0.002254564571396468760858478034676320201182), SC_(0.9977454354286035312391415219653236797988) }, + { SC_(25.644100189208984375), SC_(34.306179046630859375), SC_(0.996135056018829345703125), SC_(0.1105510978861693341423658719285532293829e-17), SC_(0.4451045967555666266531094221288329784645e-84), SC_(1), SC_(0.4026234069731949036900468401964090519526e-66) }, + { SC_(25.750823974609375), SC_(80.97344970703125), SC_(0.1456244289875030517578125), SC_(0.7361169782173028629936134461796043374956e-28), SC_(0.1386986773822617008190635155455059233686e-25), SC_(0.005279291884020203626472458126397789118305), SC_(0.9947207081159797963735275418736022108817) }, + { SC_(25.806468963623046875), SC_(16.2328510284423828125), SC_(0.44564163684844970703125), SC_(0.7397478364188537936458353946041615185733e-14), SC_(0.5236513045861125530200171911803126124055e-12), SC_(0.01392994128164839579567708761587086494488), SC_(0.9860700587183516042043229123841291350551) }, + { SC_(25.987041473388671875), SC_(4.505954265594482421875), SC_(0.25435674190521240234375), SC_(0.5093036535290937013220013847725930463518e-17), SC_(0.370436414555442379931397400497703463532e-5), SC_(0.1374874697833377142947988562512932271327e-11), SC_(0.9999999999986251253021666228570520114375) }, + { SC_(26.0727996826171875), SC_(65.92105865478515625), SC_(0.7979488372802734375), SC_(0.8853839606622513474859423635340023351318e-24), SC_(0.9583583939983373859907248050250709074022e-50), SC_(0.9999999999999999999999999891757877194714), SC_(0.1082421228052857959122425364610982929238e-25) }, + { SC_(26.1871185302734375), SC_(32.77977752685546875), SC_(0.50790750980377197265625), SC_(0.1419918638657313061914613734935309861822e-17), SC_(0.274436264609173205296918961367394526306e-18), SC_(0.8380290551406335601670452343581810571818), SC_(0.1619709448593664398329547656418189428182) }, + { SC_(26.2211742401123046875), SC_(4.205412387847900390625), SC_(0.449611127376556396484375), SC_(0.4891726179645602016188930047045266154038e-11), SC_(0.6607401673397383172299982691885960192483e-5), SC_(0.7403398188732652236852166432369936842297e-6), SC_(0.9999992596601811267347763147833567630063) }, + { SC_(26.24822235107421875), SC_(18.1572971343994140625), SC_(0.472009599208831787109375), SC_(0.3800502226374158294578312141589850583557e-14), SC_(0.6551209422586791724535993914852853982927e-13), SC_(0.05483133544121073390496864313240789356609), SC_(0.9451686645587892660950313568675921064339) }, + { SC_(26.2971286773681640625), SC_(34.021968841552734375), SC_(0.2173161208629608154296875), SC_(0.6381468722729998927009190708646332494797e-22), SC_(0.746176455133385123058942547530658291805e-18), SC_(0.85514933739290571958513967387648806311e-4), SC_(0.9999144850662607094280414860326123511937) }, + { SC_(26.380290985107421875), SC_(9.53551769256591796875), SC_(0.2599444091320037841796875), SC_(0.1192989907941133890331368062044815347188e-17), SC_(0.8985884551665678924241198551457004195454e-9), SC_(0.1327626567532685287471402521114796952093e-8), SC_(0.9999999986723734324673147125285974788852) }, + { SC_(26.5280895233154296875), SC_(99.6475067138671875), SC_(0.78027403354644775390625), SC_(0.3618343025308888590586525128012292148038e-28), SC_(0.5046487526997055897773091732453852265447e-70), SC_(1), SC_(0.1394695718924064780413564288942205486862e-41) }, + { SC_(26.6471500396728515625), SC_(6.914005279541015625), SC_(0.8443243503570556640625), SC_(0.314705410808799498452069712779573701885e-7), SC_(0.1035147909565038820108017231625334541154e-7), SC_(0.7524873487230675084457782204693782636327), SC_(0.2475126512769324915542217795306217363673) }, + { SC_(26.9061603546142578125), SC_(85.707244873046875), SC_(0.954947888851165771484375), SC_(0.7141295435790046103704031768967363472348e-27), SC_(0.1472746114137446057734742824909699029807e-117), SC_(1), SC_(0.2062295457987189699018260443113258558075e-90) }, + { SC_(26.9119415283203125), SC_(97.18773651123046875), SC_(0.705803692340850830078125), SC_(0.360093272074334695850363517261207378281e-28), SC_(0.3161144083730442417214627305402957585842e-57), SC_(0.9999999999999999999999999999912213186725), SC_(0.8778681327536388435396661448951871354992e-29) }, + { SC_(27.602508544921875), SC_(70.577423095703125), SC_(0.117505915462970733642578125), SC_(0.1900152026791492051384790497160230375951e-30), SC_(0.2648220612082016344004352891128855568449e-25), SC_(0.7175151436568077553411632093370821896409e-5), SC_(0.9999928248485634319224465883679066291781) }, + { SC_(27.6922969818115234375), SC_(87.24288177490234375), SC_(0.078267715871334075927734375), SC_(0.9809422578898093752612879921418822248684e-35), SC_(0.1505771395474033222937120895294318273116e-27), SC_(0.6514549266471033147229689484609160988009e-7), SC_(0.9999999348545073352896685277031051539084) }, + { SC_(27.849822998046875), SC_(18.8381977081298828125), SC_(0.015501900576055049896240234375), SC_(0.1098827903189685822030111402126153113949e-51), SC_(0.1591477150307547093989548894646319058513e-13), SC_(0.6904452903878270444615337255066437073202e-38), SC_(0.9999999999999999999999999999999999999931) }, + { SC_(28.100528717041015625), SC_(26.2048816680908203125), SC_(0.849144399166107177734375), SC_(0.3175265485235158637592297123439013222179e-16), SC_(0.1638734602055871083303046827072312537844e-24), SC_(0.9999999948390627454034737891925793308354), SC_(0.5160937254596526210807420669164565245615e-8) }, + { SC_(28.5839023590087890625), SC_(67.9819793701171875), SC_(0.1712695658206939697265625), SC_(0.2725470140207514438567513568648894660538e-28), SC_(0.1875766517111977020005383420090557058939e-25), SC_(0.001450881962075478603800071957629220121229), SC_(0.9985491180379245213961999280423707798788) }, + { SC_(28.74981689453125), SC_(59.308696746826171875), SC_(0.957171261310577392578125), SC_(0.3983036416002021305276715421028553625675e-24), SC_(0.3617226859138664848734469419708743133752e-83), SC_(1), SC_(0.9081581189180945675633532355662837806899e-59) }, + { SC_(28.9064579010009765625), SC_(5.54414272308349609375), SC_(0.87737619876861572265625), SC_(0.2092047969393002898770083922673059687881e-6), SC_(0.8642896120272476036868369103206513589813e-7), SC_(0.7076485386990090306668937855861294500923), SC_(0.2923514613009909693331062144138705499077) }, + { SC_(29.0440673828125), SC_(7.806694507598876953125), SC_(0.779711425304412841796875), SC_(0.2336949780379693014973477489409170569774e-8), SC_(0.3222856940410499729360592673425883345117e-8), SC_(0.4203293203774450338770678700639860989116), SC_(0.5796706796225549661229321299360139010884) }, + { SC_(29.1984081268310546875), SC_(82.463165283203125), SC_(0.663639128208160400390625), SC_(0.7386737749509805766711977408836938112593e-28), SC_(0.1324683684014067163091591366287757880773e-45), SC_(0.9999999999999999982066729198529147457215), SC_(0.1793327080147085254278500834417301214867e-17) }, + { SC_(29.632080078125), SC_(28.780498504638671875), SC_(0.3564095199108123779296875), SC_(0.1640608454226677619955183427719991333391e-19), SC_(0.1711538332116083795740900920221854279763e-17), SC_(0.009494567292849784811583350297958704128627), SC_(0.9905054327071502151884166497020412958714) }, + { SC_(29.6675853729248046875), SC_(65.5779876708984375), SC_(0.45855104923248291015625), SC_(0.1221452802665315183564347258696983840727e-25), SC_(0.1963647029704502190875783876568036599383e-28), SC_(0.9983949479915902622882177233502992523489), SC_(0.001605052008409737711782276649700747651122) }, + { SC_(30.1246337890625), SC_(1.84508430957794189453125), SC_(0.417325317859649658203125), SC_(0.7908978954425474596832647425844580456189e-13), SC_(0.00171877821326211699783848491916813233203), SC_(0.4601512221318462450567588561001567801153e-10), SC_(0.99999999995398487778681537549432411439) }, + { SC_(30.145496368408203125), SC_(31.0489959716796875), SC_(0.7161290645599365234375), SC_(0.2454993614765491985234336289951287536986e-18), SC_(0.3076154988447514117753345204285313227212e-22), SC_(0.9998747137438563358469544246167093326047), SC_(0.0001252862561436641530455753832906673953257) }, + { SC_(30.63494873046875), SC_(10.80619144439697265625), SC_(0.3886309564113616943359375), SC_(0.8628499619494686970667356485363924002137e-16), SC_(0.4202944063222773846463549915499000950574e-10), SC_(0.2052961394613908902920644957175497510971e-5), SC_(0.9999979470386053860910970793550428245025) }, + { SC_(31.1102294921875), SC_(8.98231601715087890625), SC_(0.4357551038265228271484375), SC_(0.2450068496647448094224796495469285417563e-14), SC_(0.5236696154471156946884950224055485405149e-9), SC_(0.4678631261789929679254181755045291869768e-5), SC_(0.9999953213687382100703207458182449547081) }, + { SC_(31.1215038299560546875), SC_(86.26781463623046875), SC_(0.21028804779052734375), SC_(0.1442758085844540294145248632701920450906e-30), SC_(0.1578268961110786869250765857133414317659e-29), SC_(0.08375736359524626362772365520394816116989), SC_(0.9162426364047537363722763447960518388301) }, + { SC_(31.2718906402587890625), SC_(49.1752166748046875), SC_(0.800300419330596923828125), SC_(0.2602092514049751671117966743301940393211e-23), SC_(0.1110727546290989874391555464086646724165e-38), SC_(0.9999999999999995731406395838267133364289), SC_(0.4268593604161732866635710910991390678625e-15) }, + { SC_(31.7099475860595703125), SC_(76.375), SC_(0.0899141728878021240234375), SC_(0.2245148225910994453446182448020574938027e-37), SC_(0.2084508782385302868735758933319488819851e-28), SC_(0.107706345133442173182436734333400051472e-8), SC_(0.999999998922936548665578268175632656666) }, + { SC_(31.87783050537109375), SC_(42.018993377685546875), SC_(0.45890295505523681640625), SC_(0.463246605600180370869612649552336566282e-22), SC_(0.211971909854679273189615896716774137069e-22), SC_(0.6860691687166119741061361604119224786487), SC_(0.3139308312833880258938638395880775213513) }, + { SC_(31.9599742889404296875), SC_(32.532787322998046875), SC_(0.8173215389251708984375), SC_(0.242055085727612826440126610348212722593e-19), SC_(0.7156366139023785833833259399639275024218e-28), SC_(0.9999999970434968980907501439933786692605), SC_(0.2956503101909249856006621330739521605617e-8) }, + { SC_(32.247180938720703125), SC_(30.466350555419921875), SC_(0.920882701873779296875), SC_(0.8623345539136604419718551397693675927273e-19), SC_(0.7421925232989789171074893772077540592402e-36), SC_(0.9999999999999999913932183288889814883558), SC_(0.8606781671111018511644225596947163802482e-17) }, + { SC_(32.514568328857421875), SC_(68.2966461181640625), SC_(0.82347548007965087890625), SC_(0.1587149895155762453432024114309172558918e-27), SC_(0.1291213613620778807671388820749006135619e-55), SC_(0.9999999999999999999999999999186457676391), SC_(0.8135423236089868243826228638746462684915e-28) }, + { SC_(33.4163055419921875), SC_(71.99709320068359375), SC_(0.543851077556610107421875), SC_(0.1340166603205718731250321303812309961631e-28), SC_(0.1662785384606884820427275934135303810369e-34), SC_(0.9999987592711849678112247133274554684109), SC_(0.1240728815032188775286672544531589053063e-5) }, + { SC_(33.53568267822265625), SC_(12.90661716461181640625), SC_(0.508557856082916259765625), SC_(0.1356314756838095530420851292823205202512e-14), SC_(0.9939075210043804698461945627916455820101e-12), SC_(0.001362769054901638644901610310686488491542), SC_(0.9986372309450983613550983896893135115085) }, + { SC_(33.7122650146484375), SC_(38.8569793701171875), SC_(0.19995288550853729248046875), SC_(0.2356727299359025943356228379746894739539e-28), SC_(0.1014123387827494088616895197936799295405e-21), SC_(0.2323905335352347535152490121184654849693e-6), SC_(0.9999997676094664647652464847509878815345) }, + { SC_(33.771942138671875), SC_(88.772613525390625), SC_(0.3082362115383148193359375), SC_(0.1873809780015792407704297313761183605627e-31), SC_(0.4870254973206330804632150363494469420726e-32), SC_(0.7937062776060717877010338900325900464921), SC_(0.2062937223939282122989661099674099535079) }, + { SC_(33.9493408203125), SC_(61.627227783203125), SC_(0.68680679798126220703125), SC_(0.5302544441349077488228838246522943893548e-27), SC_(0.7578831431608350911449967697447423645071e-38), SC_(0.9999999999857071797976825332582607589067), SC_(0.1429282020231746674173924109332697463045e-10) }, + { SC_(34.03857421875), SC_(87.67574310302734375), SC_(0.12993355095386505126953125), SC_(0.1803077106935948870640637096290129154959e-36), SC_(0.2393834715411339708060780170340989510173e-31), SC_(0.7532113701694482952713570392311888137736e-5), SC_(0.9999924678862983055170472864296076881119) }, + { SC_(34.112461090087890625), SC_(72.30242156982421875), SC_(0.93900763988494873046875), SC_(0.5336415447854415163371336246779582881007e-29), SC_(0.2637811032057603414870445457370328397429e-90), SC_(1), SC_(0.4943039120235989859437402813756723722732e-61) }, + { SC_(34.38770294189453125), SC_(20.3759708404541015625), SC_(0.7939956188201904296875), SC_(0.1406907742990225407118688019103554274312e-15), SC_(0.3793478167492980029240052536361557042742e-18), SC_(0.997310927281696267974531161759371447172), SC_(0.002689072718303732025468838240628552828005) }, + { SC_(34.4462432861328125), SC_(22.6227397918701171875), SC_(0.904890477657318115234375), SC_(0.1548029817388518182408610041035373519362e-16), SC_(0.14043460156325892966046081981173125342e-25), SC_(0.9999999990928172063715916494977712560676), SC_(0.9071827936284083505022287439323609935721e-9) }, + { SC_(34.99837493896484375), SC_(90.73647308349609375), SC_(0.15769731998443603515625), SC_(0.9017564885837871484795594486132898720572e-36), SC_(0.2544171147805670434528083843498527583311e-32), SC_(0.0003543146002074322431931713119413276308965), SC_(0.9996456853997925677568068286880586723691) }, + { SC_(35.021800994873046875), SC_(6.873857975006103515625), SC_(0.988522708415985107421875), SC_(0.8004012446882880177331891616060994145984e-8), SC_(0.4764713702859002401616601437850605159898e-14), SC_(0.9999994047097130231467820975881745911983), SC_(0.595290286976853217902411825408801667383e-6) }, + { SC_(35.072711944580078125), SC_(99.0110015869140625), SC_(0.4018678367137908935546875), SC_(0.1689867303406513093477147048565244862741e-33), SC_(0.509166416130031563130396532935317997219e-37), SC_(0.9996987851965405942503662726899302538689), SC_(0.0003012148034594057496337273100697461310952) }, + { SC_(35.09523773193359375), SC_(19.955120086669921875), SC_(0.2785703837871551513671875), SC_(0.2415515553900795063596814518626885165851e-23), SC_(0.1560020115029194938431914274243477386725e-15), SC_(0.1548387417077664472379396529644491349282e-7), SC_(0.9999999845161258292233552762060347035551) }, + { SC_(35.165950775146484375), SC_(6.75953769683837890625), SC_(0.16295583546161651611328125), SC_(0.2061699497138813535986451997168518405152e-29), SC_(0.9668417827836586267924961001936302214598e-8), SC_(0.2132406288030832073146882871989409325033e-21), SC_(0.9999999999999999999997867593711969167927) }, + { SC_(35.31585693359375), SC_(5.31525707244873046875), SC_(0.3439953327178955078125), SC_(0.2100715327193704142722043974564298032779e-18), SC_(0.1691262649854188013470405186671987917463e-6), SC_(0.1242098811424829692697877380435596651253e-11), SC_(0.9999999999987579011885751703073021226196) }, + { SC_(36.743663787841796875), SC_(15.15741634368896484375), SC_(0.498414218425750732421875), SC_(0.1867499053825352927116770881950197288075e-16), SC_(0.1871863050417564165679929050238744456516e-13), SC_(0.0009966742840117568666317596272096988986495), SC_(0.9990033257159882431333682403727903011014) }, + { SC_(36.84845733642578125), SC_(34.392974853515625), SC_(0.369309842586517333984375), SC_(0.1265277973410686458902625444816325545909e-23), SC_(0.2216355149380725139282795571823534333753e-21), SC_(0.005676417552777144107964127417010725377248), SC_(0.9943235824472228558920358725829892746228) }, + { SC_(36.89165496826171875), SC_(63.430332183837890625), SC_(0.753753721714019775390625), SC_(0.1146036737368906357195023409432597845599e-28), SC_(0.1870642343592373090198574060964777150361e-44), SC_(0.9999999999999998367729163825035657011317), SC_(0.1632270836174964342988682823540156013633e-15) }, + { SC_(36.924678802490234375), SC_(3.3268566131591796875), SC_(0.3112839162349700927734375), SC_(0.2253512427647833544915289548190558930176e-20), SC_(0.1521159843228626258967283903787895795307e-4), SC_(0.1481443543017021595119064599388595630046e-15), SC_(0.9999999999999998518556456982978404880935) }, + { SC_(37.24097442626953125), SC_(19.5324764251708984375), SC_(0.680319011211395263671875), SC_(0.6070607719215026304030688692247244063681e-16), SC_(0.3405278024802956153228131208058721989277e-16), SC_(0.6406374963994612372811750517846151325193), SC_(0.3593625036005387627188249482153848674807) }, + { SC_(37.62722015380859375), SC_(17.316303253173828125), SC_(0.761755049228668212890625), SC_(0.883890045750987518692667663988038174708e-15), SC_(0.1036399852577764838493012215568349243655e-15), SC_(0.8950513078048795933334741531782466369278), SC_(0.1049486921951204066665258468217533630722) }, + { SC_(37.86093902587890625), SC_(14.01438426971435546875), SC_(0.3949687182903289794921875), SC_(0.2577903258188974492741788861912902708046e-19), SC_(0.5665228913047133844491398883989299998264e-13), SC_(0.4550393505202571552983165094987526214837e-6), SC_(0.9999995449606494797428447016834905012474) }, + { SC_(38.044582366943359375), SC_(20.8068065643310546875), SC_(0.1819288432598114013671875), SC_(0.3864728589539304204630552387547563129278e-31), SC_(0.1711510834959331057270812703927635819804e-16), SC_(0.2258080118803997643867277066417931138815e-14), SC_(0.9999999999999977419198811960023561327229) }, + { SC_(38.15584564208984375), SC_(21.0209064483642578125), SC_(0.0976306498050689697265625), SC_(0.9922165085159121655651903742790618110897e-41), SC_(0.1300476855802610923432900750138521083365e-16), SC_(0.7629636037648276662346347507455481487024e-24), SC_(0.9999999999999999999999992370363962351723) }, + { SC_(38.461910247802734375), SC_(1.8211762905120849609375), SC_(0.775735080242156982421875), SC_(0.4674937613450381019589195197343275132495e-6), SC_(0.00119311501532864614024875406125334568454), SC_(0.0003916727647940013574103285451369121313057), SC_(0.9996083272352059986425896714548630878687) }, + { SC_(38.677120208740234375), SC_(98.44525909423828125), SC_(0.910656511783599853515625), SC_(0.1785302973991065855874109328846165484218e-35), SC_(0.1694129940334421443469395724613719849065e-106), SC_(1), SC_(0.9489313382742952473293267436780358342068e-71) }, + { SC_(38.97388458251953125), SC_(21.0301876068115234375), SC_(0.317167758941650390625), SC_(0.5836254826333055277583055300087489838726e-24), SC_(0.8986765805499066563936115886994917003007e-17), SC_(0.6494276777235329090800609234412776101872e-7), SC_(0.9999999350572322276467090919939076558722) }, + { SC_(39.093780517578125), SC_(61.720489501953125), SC_(0.647781193256378173828125), SC_(0.298408423799887322602793894772531456393e-29), SC_(0.1679645712281104967291038042206808709124e-36), SC_(0.9999999437131969550032588658566178020573), SC_(0.5628680304499674113414338219794266552792e-7) }, + { SC_(39.2227020263671875), SC_(42.208766937255859375), SC_(0.05987356603145599365234375), SC_(0.2347266324115277593381524132085758547506e-50), SC_(0.1806422889130633470297144821857271249741e-24), SC_(0.1299400233599194851411972248323944212587e-25), SC_(0.9999999999999999999999999870059976640081) }, + { SC_(39.55152130126953125), SC_(63.64685821533203125), SC_(0.493377506732940673828125), SC_(0.7388691088080852924250405309368575692829e-30), SC_(0.8925809741565184542780230630350392003871e-32), SC_(0.988063826698800243525317436326316788524), SC_(0.01193617330119975647468256367368321147597) }, + { SC_(39.925777435302734375), SC_(85.80992889404296875), SC_(0.6551325321197509765625), SC_(0.3577305691728921045334607097545765254507e-34), SC_(0.2282252020844359266165804052619873135509e-48), SC_(0.9999999999999936201929118857985215777562), SC_(0.637980708811420147842224381894887693076e-14) }, + { SC_(39.97826385498046875), SC_(85.58751678466796875), SC_(0.2530306875705718994140625), SC_(0.1946733113167645147173184785607202431674e-35), SC_(0.3472947384498695368338558633446545096848e-34), SC_(0.05307891067876112320346763290663872055801), SC_(0.946921089321238876796532367093361279442) }, + { SC_(40.1808013916015625), SC_(38.233295440673828125), SC_(0.2827450335025787353515625), SC_(0.1459629220346249520241545951505534576282e-28), SC_(0.1445263830864073117558499008565028944307e-23), SC_(0.1009929431533970583915619620739641816452e-4), SC_(0.9999899007056846602941608438037926035818) }, + { SC_(40.39121246337890625), SC_(49.244197845458984375), SC_(0.322578489780426025390625), SC_(0.519224168541345617794119329909740994859e-29), SC_(0.854746882711933839731328245205278352009e-27), SC_(0.006037917729411629718148335143653527491571), SC_(0.9939620822705883702818516648563464725084) }, + { SC_(40.761920928955078125), SC_(51.6047821044921875), SC_(0.82121193408966064453125), SC_(0.1561189296883866734526002007756330596404e-27), SC_(0.2400786040764572511418003347879644452706e-43), SC_(0.9999999999999998462206956224629389049912), SC_(0.1537793043775370610950088117772200566634e-15) }, + { SC_(40.871982574462890625), SC_(13.37363910675048828125), SC_(0.4468390643596649169921875), SC_(0.1052351560797133693501611662634957748055e-18), SC_(0.5532047236899152765912915726480285662631e-13), SC_(0.190227869334147126144813160250325742679e-5), SC_(0.9999980977213066585287385518683974967426) }, + { SC_(41.6158599853515625), SC_(43.342967987060546875), SC_(0.9928820133209228515625), SC_(0.1476906504621896307436844549318401426789e-25), SC_(0.14279808319856182341830738909651966411e-94), SC_(1), SC_(0.9668728707720035648844996158890952840777e-69) }, + { SC_(41.6799468994140625), SC_(61.72791290283203125), SC_(0.655775129795074462890625), SC_(0.2647070998988936912013259902881659338126e-30), SC_(0.219688400580012768837786670362030005772e-37), SC_(0.9999999170069928493331177466432281125454), SC_(0.8299300715066688225335677188745455228309e-7) }, + { SC_(41.726703643798828125), SC_(98.17230987548828125), SC_(0.2999017238616943359375), SC_(0.2310636608541201895524995397347808059109e-37), SC_(0.2075884911040151469970704603758315426427e-37), SC_(0.5267582977141595065194715784378225974635), SC_(0.4732417022858404934805284215621774025365) }, + { SC_(41.774410247802734375), SC_(56.67774200439453125), SC_(0.710732758045196533203125), SC_(0.3667774541365567825982335411662626056317e-29), SC_(0.6490208025506412601634463059686652921945e-38), SC_(0.9999999982304779258308925873343055162799), SC_(0.1769522074169107412665694483720066129775e-8) }, + { SC_(42.176128387451171875), SC_(11.24645137786865234375), SC_(0.0365376062691211700439453125), SC_(0.3936956878893107877218838455536779461661e-62), SC_(0.9727632781272948263307170274806416328512e-12), SC_(0.4047189041173819527236549253982598354258e-50), SC_(1) }, + { SC_(42.28356170654296875), SC_(56.39649200439453125), SC_(0.706075489521026611328125), SC_(0.2771799080827136497794206874781534901712e-29), SC_(0.1481285781798430985358258016577060676855e-37), SC_(0.9999999946558688754589927048441860345326), SC_(0.5344131124541007295155813965467383423457e-8) }, + { SC_(42.288570404052734375), SC_(39.47277069091796875), SC_(0.807550251483917236328125), SC_(0.1425211398867533856066726919658505255905e-24), SC_(0.2753164087611669883896951701382506052279e-33), SC_(0.9999999980682416064866776761353249429536), SC_(0.1931758393513322323864675057046403737064e-8) }, + { SC_(42.3452911376953125), SC_(69.81468963623046875), SC_(0.8350250720977783203125), SC_(0.2523549524660565444599299317789672153441e-32), SC_(0.2167343978170344082615597477010160347774e-59), SC_(0.9999999999999999999999999991411525880548), SC_(0.8588474119452308240498150430249247091e-27) }, + { SC_(42.416675567626953125), SC_(78.19091796875), SC_(0.4625279605388641357421875), SC_(0.5132313986381157297530998892244886591699e-34), SC_(0.3401101699402278569102910061744336975331e-36), SC_(0.9934167871800935371085502976266002715537), SC_(0.006583212819906462891449702373399728446332) }, + { SC_(42.434902191162109375), SC_(0.3001205027103424072265625), SC_(0.91574394702911376953125), SC_(0.002768508735386755915395183541260530184407), SC_(0.9706042246192298717301490832770644169456), SC_(0.002844243156314242058287766324242276991912), SC_(0.9971557568436857579417122336757577230081) }, + { SC_(42.52593231201171875), SC_(76.9965667724609375), SC_(0.800088465213775634765625), SC_(0.7782800864823767801619683074645393860527e-34), SC_(0.2088276038399315522047357467495758001834e-59), SC_(0.9999999999999999999999999731680653961252), SC_(0.2683193460387479707496967993173940633739e-25) }, + { SC_(42.57288360595703125), SC_(90.0022125244140625), SC_(0.9619019031524658203125), SC_(0.3372972984473552540369360657385817773973e-36), SC_(0.4270958175231838747273714964122895850175e-130), SC_(1), SC_(0.1266229582890786803765561064293221149487e-93) }, + { SC_(42.825298309326171875), SC_(72.6893157958984375), SC_(0.762955129146575927734375), SC_(0.4047832413587501058489140442917340515058e-33), SC_(0.7318353349940872220089978381534954736374e-52), SC_(0.9999999999999999998192031536341500007487), SC_(0.180796846365849999251253324649092469216e-18) }, + { SC_(43.020740509033203125), SC_(63.306365966796875), SC_(0.4361739456653594970703125), SC_(0.2558424705347660716168938746813382298131e-31), SC_(0.860185082163269702332963192709368795747e-32), SC_(0.7483816125181208889126505696862972573329), SC_(0.2516183874818791110873494303137027426671) }, + { SC_(43.141384124755859375), SC_(74.99410247802734375), SC_(0.257582485675811767578125), SC_(0.5433223231351340106351077066490007597444e-36), SC_(0.1011375659476980501541872271852690320289e-33), SC_(0.005343406537597923060726355483066075029993), SC_(0.99465659346240207693927364451693392497) }, + { SC_(43.165119171142578125), SC_(35.93244171142578125), SC_(0.66931819915771484375), SC_(0.1208356501201119001291230131635063172393e-23), SC_(0.1435402063986018635465216571911000009536e-25), SC_(0.9882604914381140718254149561731405049852), SC_(0.01173950856188592817458504382685949501476) }, + { SC_(43.2391510009765625), SC_(24.431964874267578125), SC_(0.6397993564605712890625), SC_(0.1901029840946798088624128477126000911974e-19), SC_(0.1929078562724727932005497272824907152403e-19), SC_(0.496338390611732757343296213192139368392), SC_(0.503661609388267242656703786807860631608) }, + { SC_(43.5698699951171875), SC_(47.30150604248046875), SC_(0.4353021681308746337890625), SC_(0.5035009320752968621614839031574928696896e-28), SC_(0.201270021930247218677242399324261450596e-27), SC_(0.2001036092840194046926646486637389882317), SC_(0.7998963907159805953073353513362610117683) }, + { SC_(43.585857391357421875), SC_(48.8617706298828125), SC_(0.385771930217742919921875), SC_(0.431708683554485754613718229226896380922e-29), SC_(0.8583333575282172701353267563386158714511e-28), SC_(0.0478875939967246900242366730760153925587), SC_(0.9521124060032753099757633269239846074413) }, + { SC_(43.8744354248046875), SC_(12.58966350555419921875), SC_(0.0972220599651336669921875), SC_(0.2779408153593653453929050434196904475058e-46), SC_(0.7844819362364457675987939759004516412868e-13), SC_(0.3542985536324611455682203142186221525688e-33), SC_(0.9999999999999999999999999999999996457014) }, + { SC_(43.886997222900390625), SC_(68.0406646728515625), SC_(0.441279351711273193359375), SC_(0.1166620624757361232103882528576169673598e-32), SC_(0.1955870854973536489581233313913329117386e-33), SC_(0.8564190438616872585513526999108347459931), SC_(0.1435809561383127414486473000891652540069) }, + { SC_(44.008514404296875), SC_(48.33751678466796875), SC_(0.85304582118988037109375), SC_(0.9209271832164331065795302923382207136423e-28), SC_(0.14477261912908282637206046398245535787e-44), SC_(0.9999999999999999842796887997757292607167), SC_(0.1572031120022427073928326040297959172945e-16) }, + { SC_(44.267826080322265625), SC_(60.42314910888671875), SC_(0.2399921715259552001953125), SC_(0.1146837867172603714188761560089961490237e-35), SC_(0.5307052879311827002444752881219896093581e-31), SC_(0.2160922664561644746189377235080810723419e-4), SC_(0.9999783907733543835525381062276491918928) }, + { SC_(44.558620452880859375), SC_(48.756893157958984375), SC_(0.111208103597164154052734375), SC_(0.290889640260951329008504007053782479672e-46), SC_(0.4645256646690160360372128167782526295148e-28), SC_(0.6262078984768604794506338002006401255396e-18), SC_(0.9999999999999999993737921015231395205494) }, + { SC_(44.678375244140625), SC_(75.57898712158203125), SC_(0.387357175350189208984375), SC_(0.1067223409856966481716542747148889310193e-34), SC_(0.5864919138273774389799111170630400473684e-35), SC_(0.6453489270930132554213867541716576900484), SC_(0.3546510729069867445786132458283423099516) }, + { SC_(45.01377105712890625), SC_(97.39150238037109375), SC_(0.9817249774932861328125), SC_(0.1176893959005228253329454265028675577258e-38), SC_(0.2411480441185281725037294883396967512529e-171), SC_(1), SC_(0.2049021003747516834821590080440546950957e-132) }, + { SC_(45.054157257080078125), SC_(72.049346923828125), SC_(0.2238895595073699951171875), SC_(0.3081920386384367074011496696493347387825e-38), SC_(0.6173722912738508665066150254242941132891e-34), SC_(0.4991747424141961157288243426894507468483e-4), SC_(0.9999500825257585803884271175657310549253) }, + { SC_(45.092372894287109375), SC_(37.85004425048828125), SC_(0.3532232344150543212890625), SC_(0.1702519686403131554653243428316678286437e-28), SC_(0.8183993002261537372789972503201688348496e-25), SC_(0.0002079871749246281410957427585445040585258), SC_(0.9997920128250753718589042572414554959415) }, + { SC_(45.37976837158203125), SC_(43.69329071044921875), SC_(0.63310039043426513671875), SC_(0.8240327477532193587671718175374598096525e-27), SC_(0.7378084847316249150952608536080263514407e-29), SC_(0.9911258254547410186428218669355714037147), SC_(0.008874174545258981357178133064428596285326) }, + { SC_(45.742435455322265625), SC_(9.4440765380859375), SC_(0.8558895587921142578125), SC_(0.6628768211371091115425256226369829756038e-11), SC_(0.307805240224038407990471216183891961723e-11), SC_(0.682897982278135661506459523152865945281), SC_(0.317102017721864338493540476847134054719) }, + { SC_(45.872547149658203125), SC_(53.322948455810546875), SC_(0.982362329959869384765625), SC_(0.922598634406964697044599101577791731796e-30), SC_(0.2678291653211358874354389982249023273903e-95), SC_(1), SC_(0.2902986795480065422042857246693659427533e-65) }, + { SC_(45.884883880615234375), SC_(21.3772735595703125), SC_(0.4886601269245147705078125), SC_(0.2254873537345049534364695201331300668447e-21), SC_(0.3591709875137388149262982821191986367664e-18), SC_(0.0006274055799174238757679954107313740704116), SC_(0.9993725944200825761242320045892686259296) }, + { SC_(46.07259368896484375), SC_(52.976299285888671875), SC_(0.754711210727691650390625), SC_(0.9822940271660326458827366040744619475659e-30), SC_(0.3713555036100931359275058755557717318561e-39), SC_(0.9999999996219507670823555173336006323809), SC_(0.3780492329176444826663993676191484012453e-9) }, + { SC_(46.09163665771484375), SC_(44.64239501953125), SC_(0.917126178741455078125), SC_(0.2593276230276698835123391840118979831603e-27), SC_(0.2582932999485398068057502118449587010483e-51), SC_(0.9999999999999999999999990039884801590138), SC_(0.9960115198409861801525167993023180372191e-24) }, + { SC_(46.244915008544921875), SC_(46.90155792236328125), SC_(0.913384497165679931640625), SC_(0.4762511565677713304793182982200549247228e-28), SC_(0.5764325290895291166347773429757503379462e-53), SC_(0.9999999999999999999999998789645922870317), SC_(0.1210354077129683170599568309422781802484e-24) }, + { SC_(46.93906402587890625), SC_(38.72959136962890625), SC_(0.196675598621368408203125), SC_(0.4799542076187229313447422022104929925216e-38), SC_(0.1315988828380330745537393005519343638595e-25), SC_(0.3647099407441454993917337352141099004473e-12), SC_(0.9999999999996352900592558545006082662648) }, + { SC_(47.092334747314453125), SC_(90.01831817626953125), SC_(0.4202479422092437744140625), SC_(0.2159654212187134401338381666200439163778e-38), SC_(0.7071274883471733500750180258988427082789e-40), SC_(0.9682954643471225021193064287424893195609), SC_(0.03170453565287749788069357125751068043909) }, + { SC_(47.092426300048828125), SC_(74.85051727294921875), SC_(0.80975353717803955078125), SC_(0.2214320425532711689904343856015440166599e-35), SC_(0.1058119440402781156093750243828445106733e-59), SC_(0.9999999999999999999999995221470984045937), SC_(0.4778529015954063330103486266071020687561e-24) }, + { SC_(47.108837127685546875), SC_(31.823215484619140625), SC_(0.585309207439422607421875), SC_(0.1828863188320426732073225691570616394776e-23), SC_(0.2609176255584225035915227100266309734293e-23), SC_(0.412088087867773940110217067612869945269), SC_(0.587911912132226059889782932387130054731) }, + { SC_(47.135715484619140625), SC_(24.75850677490234375), SC_(0.92750012874603271484375), SC_(0.4910728838531255263272069412746118895355e-20), SC_(0.8846854484910285175236214022023439159547e-31), SC_(0.9999999999819846406192590704328647584765), SC_(0.1801535938074092956713524152349281408929e-10) }, + { SC_(47.328884124755859375), SC_(98.7459564208984375), SC_(0.16269548237323760986328125), SC_(0.4721372997320025178350771658996384878405e-46), SC_(0.4897824289869578392435419689631140942899e-40), SC_(0.9639726063287407884109324948230953809789e-6), SC_(0.9999990360273936712592115890675051769046) }, + { SC_(47.348602294921875), SC_(21.5629291534423828125), SC_(0.933999836444854736328125), SC_(0.1652852661527383726076459880294205310047e-18), SC_(0.8038834869464726414921229104379110718756e-28), SC_(0.9999999995136387499823277619669532665004), SC_(0.4863612500176722380330467334995737105583e-9) }, + { SC_(47.992214202880859375), SC_(40.151958465576171875), SC_(0.54726588726043701171875), SC_(0.1155458951919561757108539976698611901077e-26), SC_(0.1073419808610594419634511878754294878221e-26), SC_(0.5184036800838493539530872587645158938378), SC_(0.4815963199161506460469127412354841061622) }, + { SC_(48.202205657958984375), SC_(87.7573089599609375), SC_(0.763773620128631591796875), SC_(0.1824031470200957625191527347582003125071e-38), SC_(0.4119947766772003688405131739906945869242e-62), SC_(0.999999999999999999999997741295677141963), SC_(0.2258704322858037000684935802349036653957e-23) }, + { SC_(48.537563323974609375), SC_(79.81058502197265625), SC_(0.034413881599903106689453125), SC_(0.1309817457167733832123722426451319831056e-73), SC_(0.4953447095511398191213824247176105897128e-37), SC_(0.2644254459393811568223510087333814458741e-36), SC_(0.9999999999999999999999999999999999997356) }, + { SC_(48.679164886474609375), SC_(91.05649566650390625), SC_(0.382394731044769287109375), SC_(0.2108894996005470506922449732888253100328e-39), SC_(0.5202455453430411884064874122314344162156e-40), SC_(0.8021233413881320319088868454726765487496), SC_(0.1978766586118679680911131545273234512504) }, + { SC_(48.860897064208984375), SC_(34.43279266357421875), SC_(0.4854271113872528076171875), SC_(0.5238036902312066668431242142988330765292e-26), SC_(0.160466944329307144902300973469605617428e-24), SC_(0.0316106182408025513381106450252755648789), SC_(0.9683893817591974486618893549747244351211) }, + { SC_(48.889774322509765625), SC_(41.32906341552734375), SC_(0.490639984607696533203125), SC_(0.8312121315184833801858862002643209479338e-28), SC_(0.423158191669229285946680595475097228077e-27), SC_(0.1641805144754484053467281775832351865943), SC_(0.8358194855245515946532718224167648134057) }, + { SC_(48.925262451171875), SC_(54.405612945556640625), SC_(0.3064188659191131591796875), SC_(0.9087408026211929095772174519439674830473e-35), SC_(0.4487827438379963365874699785571427612e-31), SC_(0.0002024491452261464755868084798781592182134), SC_(0.9997975508547738535244131915201218407818) }, + { SC_(48.9687652587890625), SC_(20.41971588134765625), SC_(0.681391417980194091796875), SC_(0.1160133022807696520040365385333866796415e-18), SC_(0.2484896766750454767478601690801046707763e-18), SC_(0.3182780634965200853975076096798468836153), SC_(0.6817219365034799146024923903201531163847) }, + { SC_(48.9764404296875), SC_(45.798915863037109375), SC_(0.10995076596736907958984375), SC_(0.1367142727967917522994462402589763400393e-50), SC_(0.1607223307411804157927532143253986349271e-28), SC_(0.8506240058013463219223826694910387387922e-22), SC_(0.9999999999999999999999149375994198653678) }, + { SC_(48.990139007568359375), SC_(31.015598297119140625), SC_(0.578567206859588623046875), SC_(0.9639876989128766187532063646591537675544e-24), SC_(0.2679857293764921178675173489475804172373e-23), SC_(0.264552334374810757375220249382052728263), SC_(0.735447665625189242624779750617947271737) }, + { SC_(49.0864105224609375), SC_(24.784759521484375), SC_(0.3036836087703704833984375), SC_(0.1833255362931908908934928751917946048482e-30), SC_(0.2107566117853860158195032511552172396887e-20), SC_(0.869844768922007849010986845583915929456e-10), SC_(0.9999999999130155231077992150989013154416) }, + { SC_(49.417392730712890625), SC_(1.25388038158416748046875), SC_(0.5308444499969482421875), SC_(0.4302318756800221144879124063195245848082e-15), SC_(0.006786209549129325727017242646106248481138), SC_(0.6339796502971144116428495210229431098134e-13), SC_(0.9999999999999366020349702885588357150479) }, + { SC_(49.836406707763671875), SC_(77.39171600341796875), SC_(0.1259840428829193115234375), SC_(0.1267543338135936900714746005026002554869e-50), SC_(0.4633895913905244473069436263327544150796e-37), SC_(0.2735372916625725915871779129563351480651e-13), SC_(0.9999999999999726462708337427408412822087) }, + { SC_(50.0022430419921875), SC_(25.3943119049072265625), SC_(0.547260820865631103515625), SC_(0.14280788396101628929879545302001935566e-22), SC_(0.7224972443703179065239673324764800390918e-21), SC_(0.01938275540393189483339878172331426015707), SC_(0.9806172445960681051666012182766857398429) }, + { SC_(50.0471649169921875), SC_(32.2532958984375), SC_(0.58530557155609130859375), SC_(0.2196454378374690488407896395604687372169e-24), SC_(0.4430935015253182501618347173752967366661e-24), SC_(0.3314207522628058667516266079099883865849), SC_(0.6685792477371941332483733920900116134151) }, + { SC_(50.595706939697265625), SC_(94.0074005126953125), SC_(0.1355634629726409912109375), SC_(0.4406890682067846838031485627662151655593e-51), SC_(0.9675286231305830007759120455547891641682e-41), SC_(0.4554791017559739830157832411608425901517e-10), SC_(0.9999999999544520898244026016984216758839) }, + { SC_(50.78582763671875), SC_(11.3192539215087890625), SC_(0.46944367885589599609375), SC_(0.7192806759929649304893176172927441291907e-21), SC_(0.1296791862402992577805198808011103150072e-12), SC_(0.5546616175324722876532247977828021972963e-8), SC_(0.999999994453383824675277123467752022172) }, + { SC_(50.85086822509765625), SC_(39.35898590087890625), SC_(0.38867628574371337890625), SC_(0.307988136719259560581173127364180715279e-30), SC_(0.7762314244827035583420822287782416572894e-27), SC_(0.0003966162331417975934266439310375483447362), SC_(0.9996033837668582024065733560689624516553) }, + { SC_(51.07715606689453125), SC_(87.0186767578125), SC_(0.3897998631000518798828125), SC_(0.9309238016095076520326574560015846251851e-40), SC_(0.4179691084709979050268138889755816901027e-40), SC_(0.6901391464456193305957140795717393088866), SC_(0.3098608535543806694042859204282606911134) }, + { SC_(51.324951171875), SC_(13.80013275146484375), SC_(0.2816991508007049560546875), SC_(0.1794692338543488119197551668110217587866e-31), SC_(0.1888813555135098476661031722212177304812e-14), SC_(0.9501691332446635791287785984512367885227e-17), SC_(0.9999999999999999904983086675533642087122) }, + { SC_(51.805210113525390625), SC_(96.9837188720703125), SC_(0.868707835674285888671875), SC_(0.7449543443464671107426844474173287907225e-42), SC_(0.2670776866792120057084273106184666695269e-90), SC_(1), SC_(0.3585155099853987465402929059005275059914e-48) }, + { SC_(51.859493255615234375), SC_(93.60550689697265625), SC_(0.623473227024078369140625), SC_(0.3071599527596393727395894329717025718048e-41), SC_(0.1129854865049143538460008752471555922042e-51), SC_(0.9999999999632160750496102670872344279211), SC_(0.3678392495038973291276557207888123542958e-10) }, + { SC_(52.11357879638671875), SC_(18.9905490875244140625), SC_(0.489815413951873779296875), SC_(0.1085484496359456265997320694847980525188e-22), SC_(0.8102110928947588989345214630492945404665e-18), SC_(0.133973721569458116909384819805436925738e-4), SC_(0.9999866026278430541883090615180194563074) }, + { SC_(52.16498565673828125), SC_(66.7114105224609375), SC_(0.602021753787994384765625), SC_(0.1857102206603477457913656113229498706914e-35), SC_(0.3116898837564840137315853481162908905494e-39), SC_(0.9998321914763607852294920940373987410891), SC_(0.0001678085236392147705079059626012589108849) }, + { SC_(52.68758392333984375), SC_(90.89365386962890625), SC_(0.655512332916259765625), SC_(0.4472140501732907773243865849536738224357e-41), SC_(0.4395289842031080260296528851709698791451e-53), SC_(0.9999999999990171843124509099041345810099), SC_(0.9828156875490900958654189901195890668424e-12) }, + { SC_(52.714275360107421875), SC_(13.08054637908935546875), SC_(0.854465544223785400390625), SC_(0.3781199008368967014469878145257667971013e-14), SC_(0.588865419438887963501688854012523789433e-15), SC_(0.865250174415785644863976539518874953761), SC_(0.134749825584214355136023460481125046239) }, + { SC_(52.8533172607421875), SC_(62.03600311279296875), SC_(0.210380852222442626953125), SC_(0.2442497536006239726583729069672535702105e-43), SC_(0.1764965100967918769447767577823413066516e-34), SC_(0.138387865645991379196282944984134883758e-8), SC_(0.9999999986161213435400862080371705501587) }, + { SC_(53.079753875732421875), SC_(59.28238677978515625), SC_(0.18695391714572906494140625), SC_(0.3179136494758277529041550299342551501986e-45), SC_(0.84422243239812634590487463667394517592e-34), SC_(0.3765756953076388543993887130610774066599e-11), SC_(0.9999999999962342430469236114560061128694) }, + { SC_(53.086429595947265625), SC_(63.11199188232421875), SC_(0.817645967006683349609375), SC_(0.756732425417170088366357503494301594981e-35), SC_(0.1221040882623287318248593343857185140027e-52), SC_(0.9999999999999999983864298111050889645812), SC_(0.1613570188894911035418824521388928367135e-17) }, + { SC_(53.133392333984375), SC_(74.8609161376953125), SC_(0.823473036289215087890625), SC_(0.8480705105026343141783859369508451839103e-38), SC_(0.2586145273759825003820958107012217142445e-62), SC_(0.9999999999999999999999996950553943649015), SC_(0.3049446056350985222517637390661828529102e-24) }, + { SC_(53.282558441162109375), SC_(94.89250946044921875), SC_(0.399842679500579833984375), SC_(0.3369237165529887015947693974258782000564e-42), SC_(0.6118532625338545066115718322623595839263e-43), SC_(0.8463101319626548105073741849094497559489), SC_(0.1536898680373451894926258150905502440511) }, + { SC_(53.834239959716796875), SC_(54.6591949462890625), SC_(0.234856426715850830078125), SC_(0.2045044712624127509225937373981902936113e-41), SC_(0.1059291378978471026880544682035748686198e-32), SC_(0.1930578072530100703404937257703777932601e-8), SC_(0.9999999980694219274698992965950627422962) }, + { SC_(53.912647247314453125), SC_(24.272365570068359375), SC_(0.725866377353668212890625), SC_(0.4271765123857808229840596165227832873674e-21), SC_(0.1417269071703862391965758947572408025346e-21), SC_(0.7508770341353278962278578485773376049455), SC_(0.2491229658646721037721421514226623950545) }, + { SC_(54.659313201904296875), SC_(98.07567596435546875), SC_(0.9597480297088623046875), SC_(0.2326287956930163426967986590553519945108e-43), SC_(0.167701073150746995342724733383875186588e-139), SC_(1), SC_(0.7208955909828556237568907287594262654803e-96) }, + { SC_(54.680572509765625), SC_(22.655132293701171875), SC_(0.48930370807647705078125), SC_(0.1453269075797592787843526223524176139916e-24), SC_(0.3065729257687643735331770754848651246137e-20), SC_(0.474014522022420799568228189933905692044e-4), SC_(0.9999525985477977579200431771810066094308) }, + { SC_(54.68814849853515625), SC_(99.2881317138671875), SC_(0.01661893166601657867431640625), SC_(0.1769980011122985084129541942839869996156e-99), SC_(0.1320013543712949929541631409543706559682e-43), SC_(0.134088018986863125482261203066999761446e-55), SC_(1) }, + { SC_(54.700885772705078125), SC_(71.8470001220703125), SC_(0.354702651500701904296875), SC_(0.4298343593655213053610130220174865400016e-39), SC_(0.1119014610819772158818677122649533383046e-37), SC_(0.0369909709026954428764821561447576451387), SC_(0.9630090290973045571235178438552423548613) }, + { SC_(54.721553802490234375), SC_(15.80575847625732421875), SC_(0.14022982120513916015625), SC_(0.4200200768303977921993982196463104992055e-49), SC_(0.363462637786487290333578132333036130705e-16), SC_(0.1155607298148577895198663430350835607187e-32), SC_(0.9999999999999999999999999999999988443927) }, + { SC_(54.78708648681640625), SC_(59.836887359619140625), SC_(0.707350790500640869140625), SC_(0.1640302213335053417747910405596123675011e-34), SC_(0.2490985328763681679515513166166162583982e-41), SC_(0.9999998481386582162411144707309858430575), SC_(0.1518613417837588855292690141569424875892e-6) }, + { SC_(54.972362518310546875), SC_(73.27986907958984375), SC_(0.1690731346607208251953125), SC_(0.1386897915906275046583556786811205633432e-49), SC_(0.4102783590840805645502439215109027658313e-38), SC_(0.3380382818625250241169762025497981785827e-11), SC_(0.9999999999966196171813747497588302379745) }, + { SC_(54.986019134521484375), SC_(0.809391200542449951171875), SC_(0.26599407196044921875), SC_(0.4579445475680992046361129304058491499333e-33), SC_(0.04510345939999469646069633322003083168739), SC_(0.1015320229667689420167960411773757244836e-31), SC_(0.9999999999999999999999999999999898467977) }, + { SC_(55.015636444091796875), SC_(38.861515045166015625), SC_(0.4050408899784088134765625), SC_(0.241810132719161314040029542661462358795e-31), SC_(0.117023624109087937211509827903405868912e-27), SC_(0.0002065909159649572003896404179577688367306), SC_(0.9997934090840350427996103595820422311633) }, + { SC_(56.1199798583984375), SC_(13.1561565399169921875), SC_(0.7447183132171630859375), SC_(0.1635343081928158419232378642386717077824e-15), SC_(0.167081783443780694931695021521110235983e-14), SC_(0.08915098927422584067029235400539953726795), SC_(0.910849010725774159329707645994600462732) }, + { SC_(56.782161712646484375), SC_(52.737148284912109375), SC_(0.18359279632568359375), SC_(0.9658535984420670725492237420948945239739e-48), SC_(0.5565649086420601223816923684190595692905e-33), SC_(0.1735383570621820103487612055975041432809e-14), SC_(0.9999999999999982646164293781798965123879) }, + { SC_(56.88236236572265625), SC_(39.49082183837890625), SC_(0.1948448121547698974609375), SC_(0.1966123015543364594267417355567323495441e-45), SC_(0.2457820848092585426968130309522792748167e-28), SC_(0.7999456173012742188320714496615984649094e-17), SC_(0.9999999999999999920005438269872578116793) }, + { SC_(57.5208587646484375), SC_(75.7503662109375), SC_(0.3402856886386871337890625), SC_(0.1736663186452846596620443802863987908897e-41), SC_(0.115002127154587153997314251810535392724e-39), SC_(0.01487648776708555228041960019809414285036), SC_(0.9851235122329144477195803998019058571496) }, + { SC_(57.620937347412109375), SC_(92.4875946044921875), SC_(0.959295451641082763671875), SC_(0.1630584747814815911374347758405239564104e-43), SC_(0.2707459011545906346332460632708959725208e-131), SC_(1), SC_(0.1660422137012034719773358360475518577748e-87) }, + { SC_(57.672149658203125), SC_(51.45195770263671875), SC_(0.561601340770721435546875), SC_(0.6139807629301213730037604205141953325063e-33), SC_(0.199353238343352169304186223341083530673e-33), SC_(0.7548937607044389408205130332047427617109), SC_(0.2451062392955610591794869667952572382891) }, + { SC_(57.852508544921875), SC_(28.1627330780029296875), SC_(0.4868429601192474365234375), SC_(0.3312564714216700008310803302986172997293e-27), SC_(0.138152099466230923182846992685626832658e-23), SC_(0.0002397191676243918065296121425079626615744), SC_(0.9997602808323756081934703878574920373384) }, + { SC_(57.970458984375), SC_(62.738437652587890625), SC_(0.2638765275478363037109375), SC_(0.4791538495747569704085282491067207606399e-43), SC_(0.2314189241143513635033613382374618874449e-36), SC_(0.2070503750717498677199414889649189002938e-6), SC_(0.9999997929496249282501322800585110350811) }, + { SC_(58.29863739013671875), SC_(74.733123779296875), SC_(0.77891981601715087890625), SC_(0.1090845807078067630271489883580997359858e-39), SC_(0.1069945039649694686482951786059149698162e-56), SC_(0.9999999999999999901916014829296324820553), SC_(0.9808398517070367517944692756427766818364e-17) }, + { SC_(58.406932830810546875), SC_(90.7108612060546875), SC_(0.7943050861358642578125), SC_(0.1850872794464540084663277061267665835192e-43), SC_(0.1200044669568993925655637064338826937841e-69), SC_(0.9999999999999999999999999935163309269119), SC_(0.6483669073088128754684877671526934160181e-26) }, + { SC_(58.526409149169921875), SC_(59.450359344482421875), SC_(0.16763903200626373291015625), SC_(0.1884264160176377508336971945268363974261e-51), SC_(0.1419647606238142099401176037169647355768e-35), SC_(0.1327275974612742714098653863305336059204e-15), SC_(0.9999999999999998672724025387257285901346) }, + { SC_(58.52677154541015625), SC_(80.8175506591796875), SC_(0.12999321520328521728515625), SC_(0.4389971010446309366323927316823062510457e-58), SC_(0.291969914168087152130922671188422269932e-41), SC_(0.1503569647905229680222741675073014222413e-16), SC_(0.9999999999999999849643035209477031977726) }, + { SC_(58.704471588134765625), SC_(47.663806915283203125), SC_(0.408790290355682373046875), SC_(0.1237150213924296573487566502507567512588e-34), SC_(0.8292923493946251802502134772145150420844e-32), SC_(0.001489592139120161530283338560274707716977), SC_(0.998510407860879838469716661439725292283) }, + { SC_(58.95074462890625), SC_(23.4765605926513671875), SC_(0.77393972873687744140625), SC_(0.2229470972914133898651588303261714698058e-21), SC_(0.2890637566238864918216031092119426495791e-22), SC_(0.8852254236426948117603461291862766365739), SC_(0.1147745763573051882396538708137233634261) }, + { SC_(59.4356231689453125), SC_(58.6764984130859375), SC_(0.798126041889190673828125), SC_(0.1290235448808050623359344535909836402469e-35), SC_(0.7172230539485546211774438545246328947927e-48), SC_(0.9999999999994441145958199000125548237185), SC_(0.5558854041800999874451762814528525832619e-12) }, + { SC_(59.4896087646484375), SC_(44.955608367919921875), SC_(0.447639644145965576171875), SC_(0.3076656126979630982928517108287932265324e-33), SC_(0.4928840250913280228010384599738268581032e-31), SC_(0.006203427496353033035658603156442311439618), SC_(0.9937965725036469669643413968435576885604) }, + { SC_(59.852367401123046875), SC_(97.47544097900390625), SC_(0.80915629863739013671875), SC_(0.1688958863045881769702721350946552088783e-45), SC_(0.353202321748010209845604537006447454542e-77), SC_(0.9999999999999999999999999999999790875711), SC_(0.2091242892150980810292193081717129714489e-31) }, + { SC_(60.198192596435546875), SC_(47.1956787109375), SC_(0.2138513624668121337890625), SC_(0.1465231604352314242413008969538833471558e-46), SC_(0.5044016972010155309207828222293561591186e-32), SC_(0.2904890313579539597435343056258348425097e-14), SC_(0.9999999999999970951096864204604025646569) }, + { SC_(60.21704864501953125), SC_(71.188079833984375), SC_(0.910573899745941162109375), SC_(0.1929363826228470581965049147878718378668e-39), SC_(0.1353606447226676846998340883783362612844e-78), SC_(0.9999999999999999999999999999999999999993), SC_(0.7015817487740054977893458966430427218066e-39) }, + { SC_(60.28430938720703125), SC_(79.73641204833984375), SC_(0.4505965411663055419921875), SC_(0.8066804615430396480865349356961034267187e-42), SC_(0.369091754689380585155965979656184169489e-42), SC_(0.686085663877925363447856330078873165747), SC_(0.313914336122074636552143669921126834253) }, + { SC_(60.7303924560546875), SC_(12.42726612091064453125), SC_(0.981111586093902587890625), SC_(0.2615221563043579934095450498175593232998e-14), SC_(0.1065008480431480859279022022665412441064e-22), SC_(0.9999999959276548834548917271394573243811), SC_(0.4072345116545108272860542675618949467552e-8) }, + { SC_(60.738922119140625), SC_(28.3693904876708984375), SC_(0.94008004665374755859375), SC_(0.3513749532102269115651872442657663747075e-24), SC_(0.2110269410308438601417087796693848327596e-37), SC_(0.9999999999999399425203467549942990433264), SC_(0.6005747965324500570095667355551704367904e-13) }, + { SC_(60.986663818359375), SC_(93.42505645751953125), SC_(0.54990518093109130859375), SC_(0.4212984143374532089623949905058022186427e-45), SC_(0.2327538406227456561774779139885092047353e-49), SC_(0.9999447562643222591017422584226500812942), SC_(0.5524373567774089825774157734991870577301e-4) }, + { SC_(61.09586334228515625), SC_(7.8842372894287109375), SC_(0.830845534801483154296875), SC_(0.1853333874940376596721250383899492889236e-11), SC_(0.1975228400418360657845876315801936215434e-10), SC_(0.08578018389981455513243764051265087002736), SC_(0.9142198161001854448675623594873491299726) }, + { SC_(61.346073150634765625), SC_(31.2230072021484375), SC_(0.996461689472198486328125), SC_(0.1107385558653544218426090395808642653301e-25), SC_(0.7613139895854427261313068655404966335701e-78), SC_(1), SC_(0.6874877350857948353586330550658187810224e-52) }, + { SC_(61.60446929931640625), SC_(77.8897705078125), SC_(0.16241228580474853515625), SC_(0.6022260268665877117945916087215588544307e-56), SC_(0.1130978777212835385159335251246598650887e-41), SC_(0.5324821641222127535616730007268331723761e-14), SC_(0.99999999999999467517835877787246438327) }, + { SC_(61.709087371826171875), SC_(47.276912689208984375), SC_(0.780249416828155517578125), SC_(0.1969977967458324654760540047878901512905e-32), SC_(0.7193064444007614736001786540149203468626e-39), SC_(0.999999634865874827278109163776290181359), SC_(0.3651341251727218908362237098186410068142e-6) }, + { SC_(61.766635894775390625), SC_(47.25252532958984375), SC_(0.550201356410980224609375), SC_(0.7053890261044467784866679332737814796785e-33), SC_(0.1240326994716302682797396977311344313562e-32), SC_(0.3625344184640556384149843783501610962128), SC_(0.6374655815359443615850156216498389037872) }, + { SC_(62.20551300048828125), SC_(43.8666839599609375), SC_(0.2769952714443206787109375), SC_(0.4125034039915180520569798377158619185351e-42), SC_(0.2857725033881596092743120243332406618257e-31), SC_(0.1443467790269758055817679827859704669489e-10), SC_(0.9999999999855653220973024194418232017214) }, + { SC_(62.247509002685546875), SC_(77.96894073486328125), SC_(0.408778965473175048828125), SC_(0.1285640597879357182954791445897782581121e-42), SC_(0.5089288110833631236771008217844458140186e-42), SC_(0.2016713686730640427580204987284770439507), SC_(0.7983286313269359572419795012715229560493) }, + { SC_(62.406009674072265625), SC_(17.015228271484375), SC_(0.490915000438690185546875), SC_(0.2207462383727396145269700346137980268097e-25), SC_(0.8295813096953948070764673596358425733558e-18), SC_(0.2660935461285623155695823938088845818929e-7), SC_(0.9999999733906453871437684430417606191115) }, + { SC_(62.561859130859375), SC_(81.576904296875), SC_(0.37856256961822509765625), SC_(0.5332148013539513284763898533027970502397e-44), SC_(0.5513595142370626691987557600312582021333e-43), SC_(0.08818117425822609285045590707413433645161), SC_(0.9118188257417739071495440929258656635484) }, + { SC_(62.797336578369140625), SC_(51.50237274169921875), SC_(0.660153448581695556640625), SC_(0.3206863292263927322422987283046393169632e-34), SC_(0.2397831187866986391271409703041048989687e-36), SC_(0.9925783078167853283934813363518280241912), SC_(0.007421692183214671606518663648171975808826) }, + { SC_(63.235927581787109375), SC_(30.81670379638671875), SC_(0.01200087927281856536865234375), SC_(0.3823009931007334498938647010188021598714e-123), SC_(0.8065603187673428710630805942668360595349e-26), SC_(0.4739893399231439860446307577735729559567e-97), SC_(1) }, + { SC_(63.578670501708984375), SC_(77.7794036865234375), SC_(0.96864354610443115234375), SC_(0.2427866270955943535326641953183436346079e-42), SC_(0.1994378770425069379528750461261886887002e-119), SC_(1), SC_(0.8214533041969426115916070176356942733741e-77) }, + { SC_(63.770908355712890625), SC_(26.817638397216796875), SC_(0.870199739933013916015625), SC_(0.7302575117067114522197183559751433174605e-24), SC_(0.149522758939916328922387229237137516679e-28), SC_(0.9999795250723100689372678373823412204039), SC_(0.204749276899310627321626176587795960661e-4) }, + { SC_(63.8530731201171875), SC_(63.336330413818359375), SC_(0.81430339813232421875), SC_(0.2298169119204215991128088249805138416507e-38), SC_(0.2444007297716008093440761129573813990254e-53), SC_(0.9999999999999989365415811686266595789784), SC_(0.1063458418831373340421021553182141079201e-14) }, + { SC_(64.4318084716796875), SC_(54.38054656982421875), SC_(0.3936505019664764404296875), SC_(0.6558940883490999710341437116818043047738e-39), SC_(0.1212601600755603381401572627910593301629e-35), SC_(0.0005406058409995317367296343981994064965398), SC_(0.9994593941590004682632703656018005935035) }, + { SC_(64.44428253173828125), SC_(94.97145843505859375), SC_(0.96489202976226806640625), SC_(0.7871012442599625268593353750025217202916e-47), SC_(0.8003822403946811745496526917570632519432e-141), SC_(1), SC_(0.1016873300901976749704364001932634138096e-93) }, + { SC_(64.4764556884765625), SC_(23.3675441741943359375), SC_(0.757764339447021484375), SC_(0.3306107834422587723006386883668158412199e-22), SC_(0.1536631356986667658248874923259611476e-22), SC_(0.6826937614743811685425948129827268830739), SC_(0.3173062385256188314574051870172731169261) }, + { SC_(64.6313018798828125), SC_(79.39749908447265625), SC_(0.11129163205623626708984375), SC_(0.411195610190619646163344907561073791043e-67), SC_(0.3947075813324646442014934942155366259914e-43), SC_(0.1041772769609578471654162421807874373824e-23), SC_(0.9999999999999999999999989582272303904215) }, + { SC_(64.7617645263671875), SC_(93.4521942138671875), SC_(0.9649698734283447265625), SC_(0.1310256444071031048528851965458500168043e-46), SC_(0.106569327667661325126873402832314972577e-138), SC_(1), SC_(0.8133470981951074869630913439499670044921e-92) }, + { SC_(64.77459716796875), SC_(49.332683563232421875), SC_(0.352827131748199462890625), SC_(0.9209926452674470361408773569266149857737e-40), SC_(0.6052157307367526697323098667452986268995e-34), SC_(0.1521756948748392345265239926278067712493e-5), SC_(0.9999984782430512516076547347600737219323) }, + { SC_(64.89914703369140625), SC_(64.3180999755859375), SC_(0.6274216175079345703125), SC_(0.5581653119038225670271587835859271316145e-39), SC_(0.108261876502944437227476609535525260095e-41), SC_(0.9980641523988570707620007650325639093102), SC_(0.001935847601142929237999234967436090689767) }, + { SC_(64.91155242919921875), SC_(25.82958984375), SC_(0.351017296314239501953125), SC_(0.1286868102487735314293328931099686173593e-35), SC_(0.1694295554864608334330766608046600550539e-23), SC_(0.7595298817800368456584512685720188519691e-12), SC_(0.9999999999992404701182199631543415487314) }, + { SC_(65.375732421875), SC_(0.15979039669036865234375), SC_(0.52988898754119873046875), SC_(0.2644435725209656303512705468072091134615e-19), SC_(2.986977327605309068870359338628848908368), SC_(0.8853216597160206947884302103255348446693e-20), SC_(0.9999999999999999999911467834028397930521) }, + { SC_(65.40790557861328125), SC_(52.984195709228515625), SC_(0.221111953258514404296875), SC_(0.6070587204616205645198392401693346481308e-50), SC_(0.2045681897060680973736395028049666125265e-35), SC_(0.2967512795287798386700937161130033521411e-14), SC_(0.9999999999999970324872047122016132990628) }, + { SC_(65.44457244873046875), SC_(99.45053863525390625), SC_(0.8208587169647216796875), SC_(0.314128561995418018534726743393861755535e-48), SC_(0.1873207854312833414936184974289337863239e-81), SC_(0.9999999999999999999999999999999994036811), SC_(0.5963188582451017728514940460796371326009e-33) }, + { SC_(65.50980377197265625), SC_(71.0703887939453125), SC_(0.11963522434234619140625), SC_(0.9197564176880496707991832646118102580245e-66), SC_(0.3698463376171686406555692469447205776982e-41), SC_(0.2486860958564088938111555089555312351617e-24), SC_(0.9999999999999999999999997513139041435911) }, + { SC_(65.54779052734375), SC_(17.386516571044921875), SC_(0.067688621580600738525390625), SC_(0.1084831392701372439574462727855695604213e-78), SC_(0.2176302643846822134032104585113773669574e-18), SC_(0.498474509401794257602355415551359412088e-60), SC_(1) }, + { SC_(65.574066162109375), SC_(79.7928619384765625), SC_(0.0451550371944904327392578125), SC_(0.2574595257559792470070270553737181380746e-91), SC_(0.1460205549673759069515308866592313434325e-43), SC_(0.1763173176635996026601629184541678865155e-47), SC_(1) }, + { SC_(65.6859893798828125), SC_(18.08187103271484375), SC_(0.655814349651336669921875), SC_(0.3188241802339488591237947292879693125557e-21), SC_(0.7033206155894958705973349674723990017346e-19), SC_(0.004512670674942812014063669098956219774624), SC_(0.9954873293250571879859363309010437802254) }, + { SC_(65.9605255126953125), SC_(42.22183990478515625), SC_(0.6225128173828125), SC_(0.1118856287734226526979425692492618740256e-31), SC_(0.739269889482900942809008609282837456062e-32), SC_(0.6021422557051059200192709113077441051655), SC_(0.3978577442948940799807290886922558948345) }, + { SC_(66.1944732666015625), SC_(66.2300262451171875), SC_(0.9874608516693115234375), SC_(0.5973257228046684698730253800388468507769e-40), SC_(0.7504009954808194607455462679975466019371e-128), SC_(1), SC_(0.1256267672447463220085973450827205707251e-87) }, + { SC_(66.200958251953125), SC_(20.59555816650390625), SC_(0.99011099338531494140625), SC_(0.1407740170230326990413205957840834137862e-20), SC_(0.1340092092852028143069615542441163851609e-42), SC_(0.9999999999999999999999048054377369390992), SC_(0.9519456226306090084592487798115608754573e-22) }, + { SC_(66.63388824462890625), SC_(73.779083251953125), SC_(0.720521390438079833984375), SC_(0.2743009881312941624521084285307400495182e-42), SC_(0.1314156305268382537275766451313855578449e-51), SC_(0.9999999995209071926457082921997047782615), SC_(0.479092807354291707800295221738459383041e-9) }, + { SC_(66.65279388427734375), SC_(18.5475978851318359375), SC_(0.72698199748992919921875), SC_(0.3015233954091131799218812550705400966541e-20), SC_(0.2403842120587872395466443241414803219849e-19), SC_(0.1114538474103360860398358453274997991365), SC_(0.8885461525896639139601641546725002008635) }, + { SC_(66.78327178955078125), SC_(30.382526397705078125), SC_(0.900193154811859130859375), SC_(0.3352517160181402102856503152488854617952e-26), SC_(0.1654006895062389469672732315135097588868e-34), SC_(0.9999999950663730925910025242597842888128), SC_(0.4933626907408997475740215711187155896938e-8) }, + { SC_(66.91753387451171875), SC_(0.831444561481475830078125), SC_(0.74996602535247802734375), SC_(0.8145710543519629924369720118731495908188e-10), SC_(0.0343528763384903349447184388751413246887), SC_(0.2371187333468739208100795866182365004746e-8), SC_(0.9999999976288126665312607918992041338176) }, + { SC_(67.180816650390625), SC_(61.37441253662109375), SC_(0.878442823886871337890625), SC_(0.1011236481587292957577312615373619442209e-38), SC_(0.2423519382962358962553839372661633900582e-61), SC_(0.999999999999999999999976034098580400617), SC_(0.239659014195993830050668200523450417895e-22) }, + { SC_(67.533203125), SC_(51.01088714599609375), SC_(0.907373964786529541015625), SC_(0.3053077521849901118097126798196047467687e-35), SC_(0.6859802728443453455215816184321874545184e-57), SC_(0.9999999999999999999997753151474422108399), SC_(0.2246848525577891600850296267204048987993e-21) }, + { SC_(67.6122283935546875), SC_(47.47183990478515625), SC_(0.8767697811126708984375), SC_(0.6352210946514988124020857811986243092762e-34), SC_(0.2793070721353376124801626914024433565709e-48), SC_(0.9999999999999956029943827893097235276778), SC_(0.4397005617210690276472322169393133096055e-14) }, + { SC_(67.87351226806640625), SC_(39.873851776123046875), SC_(0.051311306655406951904296875), SC_(0.5624573524195119636698558816178317623965e-90), SC_(0.7299318015210998424603887364601682392657e-31), SC_(0.7705615117020671925977228052630398843811e-59), SC_(1) }, + { SC_(67.90167999267578125), SC_(0.832427084445953369140625), SC_(0.967698156833648681640625), SC_(0.002669338211636283074909215574942365522886), SC_(0.03109835313910119427186666183379367843075), SC_(0.07905006545785030229414545685822640260282), SC_(0.9209499345421496977058545431417735973972) }, + { SC_(67.9135589599609375), SC_(29.905181884765625), SC_(0.492492735385894775390625), SC_(0.9589074613360492305315891864895142184308e-31), SC_(0.387598787306260838197386689305880368716e-26), SC_(0.2473907995202357302069418993846853147365e-4), SC_(0.9999752609200479764269793058100615314685) }, + { SC_(67.97026824951171875), SC_(0.281843245029449462890625), SC_(0.119085781276226043701171875), SC_(0.24692654534959416328068134388193908978e-64), SC_(0.9742021870891525966656278324892719384746), SC_(0.2534653982736307128200889820264700506043e-64), SC_(1) }, + { SC_(67.9727935791015625), SC_(29.1960773468017578125), SC_(0.51082050800323486328125), SC_(0.6508419362060425257405279602760792281285e-30), SC_(0.891838526585371652129730952593783587913e-26), SC_(0.729722279784913664020754877614060361785e-4), SC_(0.9999270277720215086335979245122385939638) }, + { SC_(68.1971893310546875), SC_(53.472103118896484375), SC_(0.592864573001861572265625), SC_(0.2021967982304036125362299256865689405366e-36), SC_(0.629386167375796961726443188700073733425e-37), SC_(0.7626170885350042295677183480077494484012), SC_(0.2373829114649957704322816519922505515988) }, + { SC_(68.33632659912109375), SC_(91.37195587158203125), SC_(0.95949649810791015625), SC_(0.1781328844484864621632028534460632723305e-47), SC_(0.4050336537653303470295491348924032445588e-130), SC_(1), SC_(0.227377249865653195927089578486328223547e-82) }, + { SC_(68.67754364013671875), SC_(31.2507991790771484375), SC_(0.36325013637542724609375), SC_(0.1414489943358549005966620870341044960544e-37), SC_(0.5920699518077879141681660636998622449836e-27), SC_(0.2389058824900409722289947463555678515482e-10), SC_(0.9999999999761094117509959027771005253644) }, + { SC_(68.92145538330078125), SC_(71.61006927490234375), SC_(0.2218245565891265869140625), SC_(0.3484836006997353185236443234633059748292e-54), SC_(0.2158000435035637990537312037189154662672e-42), SC_(0.1614844904762114141154690372449469568677e-11), SC_(0.9999999999983851550952378858588453096276) }, + { SC_(69.4828643798828125), SC_(12.518276214599609375), SC_(0.085607238113880157470703125), SC_(0.3506673078818272602489382019983977558641e-76), SC_(0.470055949296685725129522488005817792572e-15), SC_(0.7460118490288401686936226816530984976089e-61), SC_(1) }, + { SC_(69.51404571533203125), SC_(49.061920166015625), SC_(0.886009514331817626953125), SC_(0.5566273087181891690428165383951158417572e-35), SC_(0.3308775339615671440668137085923788791416e-51), SC_(0.9999999999999999405567192304097447932865), SC_(0.5944328076959025520671345561386028326104e-16) }, + { SC_(69.59493255615234375), SC_(63.450199127197265625), SC_(0.811599314212799072265625), SC_(0.4471720588961423950639370486422700581225e-40), SC_(0.1272354349438582301751791729635662774497e-53), SC_(0.9999999999999715466491225012834162500564), SC_(0.2845335087749871658374994363474840755111e-13) }, + { SC_(69.81055450439453125), SC_(82.285919189453125), SC_(0.726681768894195556640625), SC_(0.1117105716494500025338530113747785576768e-45), SC_(0.2232863915452234445426967399118992538024e-57), SC_(0.9999999999980012062578512776539524454888), SC_(0.1998793742148722346047554511235803186453e-11) }, + { SC_(69.8745880126953125), SC_(6.544506549835205078125), SC_(0.544101715087890625), SC_(0.6866735784174258127970828640815073730152e-22), SC_(0.2061294211731609617901987195579457897255e-9), SC_(0.3331273985581856632121540525891186346042e-12), SC_(0.9999999999996668726014418143367878459474) }, + { SC_(69.9076690673828125), SC_(41.266651153564453125), SC_(0.136154949665069580078125), SC_(0.1255506204999443785402396294096072379195e-64), SC_(0.7026552461040746412972461142298766281405e-32), SC_(0.1786802577737365883204955427583198314589e-32), SC_(0.9999999999999999999999999999999982131974) }, + { SC_(69.9887847900390625), SC_(7.218025684356689453125), SC_(0.811892807483673095703125), SC_(0.3121933957461269023409579813039092839016e-12), SC_(0.3803821310584263915528855800260955093915e-10), SC_(0.008140549846145528419756405638680220739045), SC_(0.991859450153854471580243594361319779261) }, + { SC_(70.10987091064453125), SC_(12.06489276885986328125), SC_(0.71849811077117919921875), SC_(0.1587862508649339809687294829903911385429e-17), SC_(0.1018190287016141716431189713124753484418e-14), SC_(0.00155706661236982944762462038669486269743), SC_(0.9984429333876301705523753796133051373026) }, + { SC_(70.6046142578125), SC_(79.72798919677734375), SC_(0.07605908811092376708984375), SC_(0.3101697695099662217875728638995839136166e-83), SC_(0.3011626523759384037212617271703928348743e-45), SC_(0.1029907815803084113944215664485203806997e-37), SC_(0.9999999999999999999999999999999999999897) }, + { SC_(70.92816925048828125), SC_(64.9780731201171875), SC_(0.977004349231719970703125), SC_(0.6017931911491986683345116229421862556984e-41), SC_(0.1082858264992789376693040339032838742163e-108), SC_(1), SC_(0.1799386036463685040652019536125087790443e-67) }, + { SC_(70.93648529052734375), SC_(92.0874786376953125), SC_(0.1125532686710357666015625), SC_(0.1613855811185498401055148904312246468295e-73), SC_(0.1320776593488569924616472301673133983449e-48), SC_(0.1221899160798131452178964270994284030317e-24), SC_(0.9999999999999999999999998778100839201869) }, + { SC_(71.12158203125), SC_(16.7555789947509765625), SC_(0.4509786069393157958984375), SC_(0.340784141051155212033679088499429550207e-30), SC_(0.1744490754738417059941588344757393986312e-18), SC_(0.1953487802241688593178017963038157532036e-11), SC_(0.999999999998046512197758311406821982037) }, + { SC_(71.26944732666015625), SC_(74.69042205810546875), SC_(0.5844237804412841796875), SC_(0.4939970956487800615183527928084905955251e-44), SC_(0.4865031721056244912767188628031044831015e-46), SC_(0.9902477429050261292547562581207145623839), SC_(0.009752257094973870745243741879285437616121) }, + { SC_(71.5037078857421875), SC_(9.86990451812744140625), SC_(0.533979713916778564453125), SC_(0.6104982503068177683738426456414848350121e-24), SC_(0.7514984433242748830713234345031628580076e-13), SC_(0.8123746039995794853674925800451581190468e-11), SC_(0.9999999999918762539600042051463250741995) }, + { SC_(71.8358917236328125), SC_(24.5574741363525390625), SC_(0.8219211101531982421875), SC_(0.9931541264727178150231047513516159291203e-24), SC_(0.3442857206994321661319437544358385431401e-25), SC_(0.9664955705085629338408873324364869567587), SC_(0.03350442949143706615911266756351304324132) }, + { SC_(72.12274932861328125), SC_(23.07643890380859375), SC_(0.52741873264312744140625), SC_(0.1227864882068737754849599946643734032734e-28), SC_(0.7613048085382325508867352857777065566423e-23), SC_(0.161284007134625994607734442934099509551e-5), SC_(0.9999983871599286537400539226555706590049) }, + { SC_(72.17580413818359375), SC_(40.75019073486328125), SC_(0.929392993450164794921875), SC_(0.4192755896120802633880016432066777009717e-32), SC_(0.1890836309333689937557295238986113568186e-50), SC_(0.9999999999999999995490230396949370285781), SC_(0.4509769603050629714219156635676004317989e-18) }, + { SC_(72.24395751953125), SC_(70.47237396240234375), SC_(0.620397984981536865234375), SC_(0.4627206560338866208542660512747694683999e-43), SC_(0.1320267629658565497281099462313755318205e-45), SC_(0.9971548465613006341929877947531079605698), SC_(0.002845153438699365807012205246892039430224) }, + { SC_(73.02487945556640625), SC_(77.29009246826171875), SC_(0.79361820220947265625), SC_(0.2451802423261875085331138579360692639185e-45), SC_(0.1071418074761732317575772027346321540694e-61), SC_(0.9999999999999999563007987676136271507665), SC_(0.4369920123238637284923346365161627495095e-16) }, + { SC_(73.03308868408203125), SC_(10.073848724365234375), SC_(0.47669041156768798828125), SC_(0.1366966363717646742458508189347323584974e-27), SC_(0.3968839176966916248418151726648449921672e-13), SC_(0.3444247304478361574359846899099956260649e-14), SC_(0.9999999999999965557526955216384256401531) }, + { SC_(73.1722412109375), SC_(12.98465251922607421875), SC_(0.351724326610565185546875), SC_(0.5173007354662584962384045997929241587122e-37), SC_(0.1042407361402746236956317378952854746376e-15), SC_(0.4962558349263166093029522027681605357297e-21), SC_(0.9999999999999999999995037441650736833907) }, + { SC_(73.7858123779296875), SC_(16.669826507568359375), SC_(0.69910681247711181640625), SC_(0.5687501530021911762664015921680541446984e-21), SC_(0.1151103898422225276713166413770770520584e-18), SC_(0.004916618095757535974011431130532918345611), SC_(0.9950833819042424640259885688694670816544) }, + { SC_(73.84268951416015625), SC_(75.59246826171875), SC_(0.94479274749755859375), SC_(0.4301641945256120733067075957914741954198e-45), SC_(0.1795328745998542467797307513047903127284e-98), SC_(1), SC_(0.4173589454553377963063321921449734498711e-53) }, + { SC_(74.3132476806640625), SC_(47.47586822509765625), SC_(0.0540447235107421875), SC_(0.7077004508033978168474355278623778602284e-97), SC_(0.2002997258283504430513188217383557312907e-35), SC_(0.3533207286613418942981883483825898126345e-61), SC_(1) }, + { SC_(74.4074249267578125), SC_(68.98012542724609375), SC_(0.54705417156219482421875), SC_(0.2389274222631854603364130773981919693525e-43), SC_(0.7993176525599851329377045596903328375963e-44), SC_(0.7493195479863992750319008730697440452627), SC_(0.2506804520136007249680991269302559547373) }, + { SC_(74.4692840576171875), SC_(62.343555450439453125), SC_(0.3609246313571929931640625), SC_(0.3159911547625975307761536250342607373476e-46), SC_(0.4824753261815702509091189272912232325466e-41), SC_(0.6549331501210430061241167964418360586912e-5), SC_(0.9999934506684987895699387588320355816394) }, + { SC_(74.81516265869140625), SC_(98.83794403076171875), SC_(0.22349761426448822021484375), SC_(0.7796406898291386981538371540412467257428e-61), SC_(0.1082126000175631213389325640779892159517e-51), SC_(0.7204712659532187016229991120529755057993e-9), SC_(0.999999999279528734046781298377000887947) }, + { SC_(75.126708984375), SC_(82.12459564208984375), SC_(0.13308273255825042724609375), SC_(0.2333378193927773773111181521803523970379e-72), SC_(0.2153928219762894493686626338116964986312e-47), SC_(0.1083312885043417660044029866060654742837e-24), SC_(0.9999999999999999999999998916687114956582) }, + { SC_(75.3729095458984375), SC_(56.1557464599609375), SC_(0.18165481090545654296875), SC_(0.3659490476565417020638102881240247820373e-62), SC_(0.4612717260147309302427681978494196174422e-39), SC_(0.7933481005182072367835548232010842705674e-23), SC_(0.9999999999999999999999920665189948179276) }, + { SC_(75.46866607666015625), SC_(80.7530975341796875), SC_(0.1132812201976776123046875), SC_(0.4349132045348217643754467291482808894331e-77), SC_(0.4126485056275980880983473561591489678026e-47), SC_(0.1053955602900733259785844939517737847726e-29), SC_(0.9999999999999999999999999999989460443971) }, + { SC_(75.72002410888671875), SC_(39.232044219970703125), SC_(0.1739477813243865966796875), SC_(0.3021588770454128000499352402307344560809e-62), SC_(0.4456724749236721514860843951414853939014e-32), SC_(0.6779841566324280449498480646727014804588e-30), SC_(0.9999999999999999999999999999993220158434) }, + { SC_(75.774017333984375), SC_(74.064727783203125), SC_(0.0532472543418407440185546875), SC_(0.7843122524302215120724105887756370243543e-100), SC_(0.3245923286852974538452049939418949098036e-45), SC_(0.241629941042333470796521516396381804123e-54), SC_(1) }, + { SC_(76.5500030517578125), SC_(1.48916995525360107421875), SC_(0.955022037029266357421875), SC_(0.9472229701287363962093802954474171043811e-4), SC_(0.001285106022674952167270120167541176149809), SC_(0.06864788587199292880266593444650814398051), SC_(0.9313521141280070711973340655534918560195) }, + { SC_(76.5516815185546875), SC_(5.121642589569091796875), SC_(0.100828416645526885986328125), SC_(0.4477050844366248629522341424813549012151e-78), SC_(0.5660179737606709524889600539330274885667e-8), SC_(0.7909732644389977286076738490702358966392e-70), SC_(1) }, + { SC_(77.0159759521484375), SC_(97.09441375732421875), SC_(0.917201936244964599609375), SC_(0.4728390672056569622777713531877015556589e-52), SC_(0.1370207568229671143600246160029555446248e-109), SC_(1), SC_(0.2897830706602151558862626660010202729565e-57) }, + { SC_(77.0285491943359375), SC_(70.8257598876953125), SC_(0.98838055133819580078125), SC_(0.1459694721243060245208038540329316308348e-44), SC_(0.5427915570398780692806753423233450558286e-139), SC_(1), SC_(0.3718527916423802964228057402839528947112e-94) }, + { SC_(77.4910430908203125), SC_(97.70020294189453125), SC_(0.24360062181949615478515625), SC_(0.118722110203874318324152177364215982451e-60), SC_(0.2246110881562191280483902043718310345435e-52), SC_(0.5285674476309715612179881152787654996536e-8), SC_(0.9999999947143255236902843878201188472123) }, + { SC_(77.57126617431640625), SC_(30.36139678955078125), SC_(0.38162028789520263671875), SC_(0.4365290561487860520114064009761492133917e-40), SC_(0.7572183457788732196518590810376141796511e-28), SC_(0.576490332784424967459789092071803410883e-12), SC_(0.9999999999994235096672155750325402109079) }, + { SC_(77.880218505859375), SC_(45.893627166748046875), SC_(0.831231176853179931640625), SC_(0.1681340845790847450518685667375450013705e-35), SC_(0.7524426870775666381859678916836423907924e-43), SC_(0.9999999552474648262099089716910355761679), SC_(0.4475253517379009102830896442383210380215e-7) }, + { SC_(77.90517425537109375), SC_(28.6586589813232421875), SC_(0.53287231922149658203125), SC_(0.7611406182793832129347048694620038754905e-32), SC_(0.6248723412464097929355159902495062676121e-27), SC_(0.1218058948840283761696910890511042354679e-4), SC_(0.9999878194105115971623830308910948895765) }, + { SC_(77.91672515869140625), SC_(35.63451385498046875), SC_(0.18846313655376434326171875), SC_(0.3481599603859406900834914033256136635817e-61), SC_(0.1062536622816811278762829043124296473458e-30), SC_(0.3276686684577138518525648391384040456237e-30), SC_(0.9999999999999999999999999999996723313315) }, + { SC_(78.02274322509765625), SC_(66.9285125732421875), SC_(0.37867152690887451171875), SC_(0.748000165690622488427842481614176802446e-48), SC_(0.1483910723467361967625755754716286549382e-43), SC_(0.5040481553583848172748432350901151573488e-4), SC_(0.9999495951844641615182725156764909884843) }, + { SC_(78.02520751953125), SC_(87.73638916015625), SC_(0.3166187703609466552734375), SC_(0.124434121512199154676951354022329272544e-54), SC_(0.6548989840178224834419248383141284851982e-50), SC_(0.1900014510366812199956181877479581841633e-4), SC_(0.9999809998548963318780004381812252041816) }, + { SC_(78.05196380615234375), SC_(44.8951873779296875), SC_(0.905801355838775634765625), SC_(0.4244179612125439107414722800235290690391e-35), SC_(0.1146399939844401210390370906920874781683e-50), SC_(0.9999999999999997298889197410059072861571), SC_(0.2701110802589940927138429445468837380711e-15) }, + { SC_(78.47393035888671875), SC_(21.5109043121337890625), SC_(0.923387348651885986328125), SC_(0.1504186117725732735731833344547803067168e-22), SC_(0.1343776245560251105902593768085954624817e-27), SC_(0.9999910665028409470032543319990252325546), SC_(0.8933497159052996745668000974767445358865e-5) }, + { SC_(79.220733642578125), SC_(87.8430633544921875), SC_(0.0421499200165271759033203125), SC_(0.3577208286393429871126264604581355194397e-112), SC_(0.2485255600641152708180284097081344195615e-50), SC_(0.1439372387077841155280521886727164979193e-61), SC_(1) }, + { SC_(79.4284515380859375), SC_(43.61175537109375), SC_(0.2081472575664520263671875), SC_(0.507060152058341252415868653305812171267e-60), SC_(0.8583058938579819288325400066960630116332e-35), SC_(0.5907685775978617086283935724472311549655e-25), SC_(0.9999999999999999999999999409231422402138) }, + { SC_(79.4831390380859375), SC_(91.7117919921875), SC_(0.3923812210559844970703125), SC_(0.4954715558091293122136018782647544938254e-53), SC_(0.1688876946394641325183069582698339322231e-51), SC_(0.02850118997119706523924201146236171840879), SC_(0.9714988100288029347607579885376382815912) }, + { SC_(79.51999664306640625), SC_(3.6441252231597900390625), SC_(0.106742106378078460693359375), SC_(0.506837663499756538489944907999740844495e-79), SC_(0.4370665069508561067242872326960051160195e-6), SC_(0.1159635102299764008675537262079113410725e-72), SC_(1) }, + { SC_(79.61838531494140625), SC_(58.284641265869140625), SC_(0.505548000335693359375), SC_(0.3130132053076185640785042373287948841924e-42), SC_(0.6653371254871177258843827527647275395457e-41), SC_(0.04493194527187850897739823355164447619901), SC_(0.955068054728121491022601766448355523801) }, + { SC_(80.0068511962890625), SC_(66.0119476318359375), SC_(0.2551696002483367919921875), SC_(0.287942847147076989631158269801485982949e-57), SC_(0.9043664046615918679100026003543440946484e-44), SC_(0.3183917996763869130767703534288551649158e-13), SC_(0.9999999999999681608200323613086923229647) }, + { SC_(80.028045654296875), SC_(29.7029438018798828125), SC_(0.03454263508319854736328125), SC_(0.491511063664665378412958880722167322562e-119), SC_(0.8025226600327162442601840609882262178529e-28), SC_(0.6124575518461099497773274141968733209546e-91), SC_(1) }, + { SC_(80.03305816650390625), SC_(47.273212432861328125), SC_(0.632396042346954345703125), SC_(0.8218990916158339500777415300633083269816e-37), SC_(0.7334792553932808606088742660696622494644e-37), SC_(0.52842389968735849083400413406805965127), SC_(0.47157610031264150916599586593194034873) }, + { SC_(80.10146331787109375), SC_(76.29314422607421875), SC_(0.473067760467529296875), SC_(0.5743395458277702807408364080480794742853e-48), SC_(0.2929173814511384467463906939441433043491e-47), SC_(0.1639324548692949212236071611642703304719), SC_(0.8360675451307050787763928388357296695281) }, + { SC_(80.3364410400390625), SC_(39.69818115234375), SC_(0.652003467082977294921875), SC_(0.134691436207589682928647799405676448014e-33), SC_(0.2646750268119507388170535539670646012778e-33), SC_(0.3372627615979848220953476643442588041157), SC_(0.6627372384020151779046523356557411958843) }, + { SC_(80.54894256591796875), SC_(48.84018707275390625), SC_(0.558312952518463134765625), SC_(0.1755001225566853953417168800591041549377e-38), SC_(0.2414016767936870056020476602071999322684e-37), SC_(0.06777330675114287836826897931253854535126), SC_(0.9322266932488571216317310206874614546487) }, + { SC_(81.158050537109375), SC_(19.9872875213623046875), SC_(0.398798644542694091796875), SC_(0.3665982884775555253198212360572645458419e-38), SC_(0.9197364156540387445356474422072913042153e-22), SC_(0.3985905986084739463207615069860213187326e-16), SC_(0.9999999999999999601409401391526053679238) }, + { SC_(81.4284820556640625), SC_(29.9831714630126953125), SC_(0.149379074573516845703125), SC_(0.6982570028412043509542799604604251297868e-71), SC_(0.3558115998879921122914138308932486800689e-28), SC_(0.1962434622876298883535135145487172370844e-42), SC_(1) }, + { SC_(81.4723663330078125), SC_(13.5477008819580078125), SC_(0.00291815050877630710601806640625), SC_(0.3544725348792542829130836742228237900322e-208), SC_(0.9243964137380141809805286188166575556319e-17), SC_(0.3834637711821720168102471430665115413168e-191), SC_(1) }, + { SC_(81.73032379150390625), SC_(36.318645477294921875), SC_(0.24421386420726776123046875), SC_(0.6593728125081805431942213458659039775863e-56), SC_(0.1139424457948100030563620513761904609992e-31), SC_(0.5786893619043365342524655353908577210164e-24), SC_(0.9999999999999999999999994213106380956635) }, + { SC_(81.75470733642578125), SC_(23.188861846923828125), SC_(0.616083085536956787109375), SC_(0.7879881562432602604810304302066062988787e-28), SC_(0.5036652730770718478774243671569874720541e-24), SC_(0.0001564262887069987502075141941120691739456), SC_(0.9998435737112930012497924858058879308261) }, + { SC_(81.7627716064453125), SC_(36.086071014404296875), SC_(0.392287790775299072265625), SC_(0.2551310725128531260389261020673510783503e-42), SC_(0.148513536857099032049464427335795276158e-31), SC_(0.171789776142736057793539885480934333753e-10), SC_(0.9999999999828210223857263942206460114519) }, + { SC_(81.77606201171875), SC_(32.673664093017578125), SC_(0.79738438129425048828125), SC_(0.9582256548112587758494123495709898422928e-30), SC_(0.1845782471222133886201470043161346558852e-31), SC_(0.9811015286946116501933791852639493227374), SC_(0.01889847130538834980662081473605067726259) }, + { SC_(81.81485748291015625), SC_(6.552445888519287109375), SC_(0.60427105426788330078125), SC_(0.9980138407032382370483621061340319467634e-22), SC_(0.7450076784411631635342661356109564292774e-10), SC_(0.1339602086773283162253156450389006259425e-11), SC_(0.9999999999986603979132267168377468435496) }, + { SC_(81.9981231689453125), SC_(72.4453887939453125), SC_(0.821263849735260009765625), SC_(0.1751984211351533317133802649461097417749e-46), SC_(0.1437486980974893010236804111463936641199e-62), SC_(0.9999999999999999179509169282997020746269), SC_(0.8204908307170029792537314152558057317378e-16) }, + { SC_(82.11940765380859375), SC_(32.25107574462890625), SC_(0.3443934917449951171875), SC_(0.2711020364382214693864631741189166135074e-45), SC_(0.1489241982155260479610943110038923294926e-29), SC_(0.1820402860560492565494943343550363672377e-15), SC_(0.9999999999999998179597139439507434505057) }, + { SC_(82.34578704833984375), SC_(82.19033050537109375), SC_(0.0845274031162261962890625), SC_(0.4507434542640753964075033686720964656421e-93), SC_(0.1154448371004440793417854247584955444853e-49), SC_(0.3904405476980325962045318162782354829518e-43), SC_(1) }, + { SC_(82.43762969970703125), SC_(53.209751129150390625), SC_(0.781930983066558837890625), SC_(0.1546939477631081364687608902002282167434e-39), SC_(0.407613885776723410738893047027671992254e-45), SC_(0.999997365037109574176513673646957468213), SC_(0.2634962890425823486326353042531786974817e-5) }, + { SC_(82.53137969970703125), SC_(50.591938018798828125), SC_(0.643996536731719970703125), SC_(0.1290717854309310899876077971312410245296e-38), SC_(0.5205656310989355719355080664104180422625e-39), SC_(0.7125984776581756806300370095999944486397), SC_(0.2874015223418243193699629904000055513603) }, + { SC_(82.581695556640625), SC_(46.2474212646484375), SC_(0.23056511580944061279296875), SC_(0.2440252516829634821844462157404042693815e-59), SC_(0.1375071647244071564731611814864955255369e-36), SC_(0.1774636632004162385468140887928139087929e-22), SC_(0.9999999999999999999999822536336799583761) }, + { SC_(83.08286285400390625), SC_(79.3597564697265625), SC_(0.16573216021060943603515625), SC_(0.1407558125543422421871900745434939418569e-72), SC_(0.5175866650822004945324635186025322691138e-49), SC_(0.2719463657974807299804189371834146437327e-23), SC_(0.9999999999999999999999972805363420251927) }, + { SC_(83.13797760009765625), SC_(18.9084186553955078125), SC_(0.6491506099700927734375), SC_(0.3464061746384216961762531604036107342434e-25), SC_(0.3667980290636733900617335359166964191181e-21), SC_(0.9443165870137168992099069198964763368633e-4), SC_(0.9999055683412986283100790093080103523663) }, + { SC_(83.29167938232421875), SC_(6.926252841949462890625), SC_(0.99406909942626953125), SC_(0.2458099593489197579010346889617092007189e-10), SC_(0.3552404197448629929128601071791526830878e-16), SC_(0.9999985548189044127713671302248917683612), SC_(0.1445181095587228632869775108231638787566e-5) }, + { SC_(84.07172393798828125), SC_(98.8521575927734375), SC_(0.147914230823516845703125), SC_(0.3894515080098424542481008399689794174025e-78), SC_(0.5821659190394222210629785353473199307771e-55), SC_(0.6689699538791967189027119713850379806955e-23), SC_(0.9999999999999999999999933103004612080328) }, + { SC_(84.1929168701171875), SC_(1.1192586421966552734375), SC_(0.99353539943695068359375), SC_(0.004192610194520286937748996295198398373834), SC_(0.002409551768016878889219658371326459966498), SC_(0.6350359500888547463453898414858578682778), SC_(0.3649640499111452536546101585141421317222) }, + { SC_(84.430877685546875), SC_(88.59981536865234375), SC_(0.4221454560756683349609375), SC_(0.1345314455921831704231804498106842752091e-53), SC_(0.3147910576976205059978959081970377864532e-52), SC_(0.04098517039058540359868249528660111562501), SC_(0.959014829609414596401317504713398884375) }, + { SC_(84.43921661376953125), SC_(79.0101776123046875), SC_(0.90272581577301025390625), SC_(0.269356623366595034719923947472115289015e-49), SC_(0.3069352794060293529122215440479054736699e-85), SC_(0.9999999999999999999999999999999999988605), SC_(0.1139512648954949490158960475253451209e-35) }, + { SC_(84.912933349609375), SC_(21.192432403564453125), SC_(0.0480394922196865081787109375), SC_(0.4955893194666494490234430865068311722563e-114), SC_(0.5551322728037611749420999368062709050695e-23), SC_(0.892740962372115386922219131975855833735e-91), SC_(1) }, + { SC_(85.30310821533203125), SC_(53.393310546875), SC_(0.276097476482391357421875), SC_(0.1416837475446209124098102785425567183443e-56), SC_(0.3151411752252008870191025227374463055783e-40), SC_(0.4495881804190558374868050118971588661742e-16), SC_(0.9999999999999999550411819580944162513195) }, + { SC_(85.55228424072265625), SC_(25.2823352813720703125), SC_(0.757527887821197509765625), SC_(0.2801160956491225382919759125256678803604e-26), SC_(0.5288487224492776268049956178326045716011e-26), SC_(0.3462648676212888384853840444560677271714), SC_(0.6537351323787111615146159555439322728286) }, + { SC_(85.9442291259765625), SC_(61.09162139892578125), SC_(0.552925884723663330078125), SC_(0.4124849198719573414953733492178248720693e-44), SC_(0.1483480334229909382608790506759348740558e-43), SC_(0.2175593244546850149263651443247366381249), SC_(0.7824406755453149850736348556752633618751) }, + { SC_(86.86946868896484375), SC_(67.95197296142578125), SC_(0.24792282283306121826171875), SC_(0.1930375059731885268745069445573608155437e-62), SC_(0.320984027965088009846360009261971936348e-46), SC_(0.6013928705330607205162509406360935748425e-16), SC_(0.9999999999999999398607129466939279483749) }, + { SC_(86.92922210693359375), SC_(7.755702972412109375), SC_(0.2630449831485748291015625), SC_(0.5767509828384798030497069093872487232674e-53), SC_(0.2105440775504121352641803315803570302618e-11), SC_(0.2739336055180103668800284190155795376972e-41), SC_(1) }, + { SC_(87.5371551513671875), SC_(12.0381679534912109375), SC_(0.8626918792724609375), SC_(0.2535588895042702651639130355193710852891e-16), SC_(0.6279140616537813950575387451095103616792e-16), SC_(0.2876536247325031442810801011285506772274), SC_(0.7123463752674968557189198988714493227726) }, + { SC_(87.5942840576171875), SC_(1.6520583629608154296875), SC_(0.404268085956573486328125), SC_(0.2880680935508360964716463245730960616486e-36), SC_(0.000552977852580404504538103011307528953323), SC_(0.5209396582640716182293665120475586139463e-33), SC_(0.9999999999999999999999999999999994790603) }, + { SC_(87.9653778076171875), SC_(32.669925689697265625), SC_(0.797300159931182861328125), SC_(0.124256599182446487187034294754930873494e-30), SC_(0.5086986561567284365625124551113941301674e-32), SC_(0.9606707473563085577545662328915901289068), SC_(0.03932925264369144224543376710840987109322) }, + { SC_(88.18665313720703125), SC_(8.9952907562255859375), SC_(0.7481768131256103515625), SC_(0.1917624357462921118072881040249660571355e-17), SC_(0.8511469192128771513047161308882001997837e-13), SC_(0.225293790213126804734076532686415908849e-4), SC_(0.9999774706209786873195265923467313584091) }, + { SC_(88.5167999267578125), SC_(95.92215728759765625), SC_(0.503712356090545654296875), SC_(0.9572724425966673929990500866098389866521e-56), SC_(0.3341169961840798791352656795245873560576e-56), SC_(0.741273247131761292440414824639702851033), SC_(0.258726752868238707559585175360297148967) }, + { SC_(88.65119171142578125), SC_(50.236236572265625), SC_(0.573797285556793212890625), SC_(0.8838895388051329184448801152063867687598e-41), SC_(0.1408708076323496156608840459492761825339e-39), SC_(0.05904023059111173773755865024749350332477), SC_(0.9409597694088882622624413497525064966752) }, + { SC_(89.09032440185546875), SC_(42.3165130615234375), SC_(0.13808752596378326416015625), SC_(0.6499222724544161757290594585510674379267e-81), SC_(0.6450451228146587050022633922589414052145e-36), SC_(0.1007560943362343390294848149876465306147e-44), SC_(1) }, + { SC_(89.09224700927734375), SC_(35.534870147705078125), SC_(0.54018402099609375), SC_(0.6588834220795456122510386934969588869325e-37), SC_(0.2215915764270677454815114395044870262588e-32), SC_(0.2973325258819944622018700080795170834096e-4), SC_(0.9999702667474118005537798129991920482917) }, + { SC_(90.0053863525390625), SC_(34.383953094482421875), SC_(0.3111712038516998291015625), SC_(0.1220306196425977657790346560494124381179e-52), SC_(0.7150175001723680732496048653512851923852e-32), SC_(0.1706680180739353209370307976262919268469e-20), SC_(0.9999999999999999999982933198192606467906) }, + { SC_(90.2716064453125), SC_(30.18273162841796875), SC_(0.3018971383571624755859375), SC_(0.3978926756665914524073447155801629299466e-53), SC_(0.1874805106989450128321837863021572572603e-29), SC_(0.2122314869866793398707756323759674736925e-23), SC_(0.9999999999999999999999978776851301332066) }, + { SC_(90.3720550537109375), SC_(38.475521087646484375), SC_(0.53838860988616943359375), SC_(0.2703536609333038819253443374040633129714e-38), SC_(0.3697968216152121345708085774808275408623e-34), SC_(0.7310335875572521946416250731590029945788e-4), SC_(0.9999268966412442747805358374926840997005) }, + { SC_(90.47222137451171875), SC_(26.44765472412109375), SC_(0.549768626689910888671875), SC_(0.7811911235841978762202866093317285966293e-34), SC_(0.3952557619938164995003716874121495919664e-27), SC_(0.1976418927449631469004008965479357991554e-6), SC_(0.9999998023581072550368530995991034520642) }, + { SC_(90.48809051513671875), SC_(72.66544342041015625), SC_(0.4388004839420318603515625), SC_(0.1211051262108057317913208933050954194039e-51), SC_(0.8052995142246951042142524889328596109692e-49), SC_(0.00150159379670008006695178491155129917309), SC_(0.9984984062032999199330482150884487008269) }, + { SC_(90.579193115234375), SC_(83.5008544921875), SC_(0.0047337622381746768951416015625), SC_(0.1981069207200380276384924503631427979567e-212), SC_(0.1737518141946380789986444149527249553236e-52), SC_(0.1140171811375259521284809083332118481335e-159), SC_(1) }, + { SC_(90.6308135986328125), SC_(84.8088836669921875), SC_(0.795220434665679931640625), SC_(0.6430787672783366206039895259574980658222e-53), SC_(0.7550036479040107613920393808710247375276e-69), SC_(0.999999999999999882595463212171200076308), SC_(0.1174045367878287999236920019920484170027e-15) }, + { SC_(91.06475830078125), SC_(13.29960346221923828125), SC_(0.2581388950347900390625), SC_(0.806910651719252187560647430281567867503e-57), SC_(0.379317285543678585993969432728484785162e-17), SC_(0.2127270974647782033023167128407244200697e-39), SC_(0.9999999999999999999999999999999999999998) }, + { SC_(91.32868194580078125), SC_(1.8066270351409912109375), SC_(0.504820525646209716796875), SC_(0.48407981485243580216829478637920569348e-29), SC_(0.0002657183214133363826093356639601329906935), SC_(0.1821778085446462829384250917653645070406e-25), SC_(0.9999999999999999999999999817822191455354) }, + { SC_(91.33373260498046875), SC_(55.826877593994140625), SC_(0.2290540635585784912109375), SC_(0.2949333414227013326457119970743986464045e-66), SC_(0.1618418906877080935751781288865119321706e-42), SC_(0.1822354769642477656416705539841413260615e-23), SC_(0.9999999999999999999999981776452303575223) }, + { SC_(91.33758544921875), SC_(22.103404998779296875), SC_(0.008193102665245532989501953125), SC_(0.2422065629736929669180118188956776295952e-192), SC_(0.3010297807246223399205743044950527444429e-24), SC_(0.8045933607986114966152620340336994476393e-168), SC_(1) }, + { SC_(91.57355499267578125), SC_(63.9763336181640625), SC_(0.040567062795162200927734375), SC_(0.2909024746011558429343508034278888328055e-130), SC_(0.7170113578168145819333254669888579858617e-46), SC_(0.4057152950643732604257605552196837246079e-84), SC_(1) }, + { SC_(91.59912109375), SC_(65.52132415771484375), SC_(0.912586271762847900390625), SC_(0.179905041145488281396727178218983973491e-46), SC_(0.1976189166214079335958012025204842131968e-74), SC_(0.9999999999999999999999999998901537636949), SC_(0.1098462363050708135613420006073096079804e-27) }, + { SC_(91.71936798095703125), SC_(69.523284912109375), SC_(0.170790970325469970703125), SC_(0.137298772709890694092701913934115684283e-77), SC_(0.5344906320448489479576222507564953931518e-48), SC_(0.2568777907006796621013521352120924429406e-29), SC_(0.999999999999999999999999999997431222093) }, + { SC_(91.742431640625), SC_(80.176300048828125), SC_(0.950227081775665283203125), SC_(0.1001107102701496758482172879825461687447e-51), SC_(0.4363674030870381660841751091381232725007e-108), SC_(1), SC_(0.4358848338099856653448549117193567190292e-56) }, + { SC_(92.033203125), SC_(39.246906280517578125), SC_(0.69485914707183837890625), SC_(0.3429603695399085196479912729784230311888e-35), SC_(0.4568842822110191193956928476545785495226e-35), SC_(0.4287837254261052363447145924559889366464), SC_(0.5712162745738947636552854075440110633536) }, + { SC_(92.3379669189453125), SC_(64.45505523681640625), SC_(0.4359149932861328125), SC_(0.1865276169340167763205291709996432353182e-50), SC_(0.3113144092675435028788977675902943909337e-46), SC_(0.5991256300190186593748026830039317039068e-4), SC_(0.9999400874369980981340625197316996068296) }, + { SC_(92.88541412353515625), SC_(24.4138278961181640625), SC_(0.47481119632720947265625), SC_(0.3517087569118679257544224321978885705116e-38), SC_(0.5033547361837899810418297479760310574297e-26), SC_(0.6987294081667341495372864749025001962669e-12), SC_(0.9999999999993012705918332658504627135251) }, + { SC_(92.92636871337890625), SC_(21.723785400390625), SC_(0.15452297031879425048828125), SC_(0.1496355919808997710160646497363599642223e-78), SC_(0.4033357831201168472873957975134700875523e-24), SC_(0.3709950821207872136467177497502667334427e-54), SC_(1) }, + { SC_(92.9385986328125), SC_(45.849689483642578125), SC_(0.3805077970027923583984375), SC_(0.7123009475318467090796828077561395619685e-50), SC_(0.260666357059090116628536966680822451934e-38), SC_(0.2732615576349308826639148876145050880397e-11), SC_(0.9999999999972673844236506911733608511239) }, + { SC_(93.399322509765625), SC_(68.135955810546875), SC_(0.0497494600713253021240234375), SC_(0.6905215639710705512278514815975036528166e-125), SC_(0.6864215712687726843530898730264241411204e-48), SC_(0.1005972995129974563314022676955487947004e-76), SC_(1) }, + { SC_(93.40106964111328125), SC_(96.49663543701171875), SC_(0.18903611600399017333984375), SC_(0.7657063231082140070082353793406337177991e-78), SC_(0.2555891770317885383063245635780211930521e-57), SC_(0.2995847993254348083418454071685611149657e-20), SC_(0.9999999999999999999970041520067456519166) }, + { SC_(93.90015411376953125), SC_(24.007595062255859375), SC_(0.403971731662750244140625), SC_(0.9335734346720279535279023803571936252236e-44), SC_(0.7613169380702204900368864669107621241774e-26), SC_(0.1226261216568281958863292968272309752221e-17), SC_(0.9999999999999999987737387834317180411367) }, + { SC_(94.20505523681640625), SC_(95.4943389892578125), SC_(0.3371889293193817138671875), SC_(0.9297654369865549462825173884928826911307e-63), SC_(0.2873180569011825880858826754896885391403e-57), SC_(0.3236004163085036181879114898511069822143e-5), SC_(0.9999967639958369149638181208851014889302) }, + { SC_(94.2736968994140625), SC_(13.12218475341796875), SC_(0.709393918514251708984375), SC_(0.4136446298056877569444391910150569799517e-22), SC_(0.3591337944167607654097996956175751590464e-17), SC_(0.1151770933278035243241152703989893222014e-4), SC_(0.9999884822906672196475675884729601010678) }, + { SC_(94.36226654052734375), SC_(75.62816619873046875), SC_(0.86930525302886962890625), SC_(0.7332140206931858197543993390917094119579e-51), SC_(0.494193161847161404627682054188893296014e-74), SC_(0.999999999999999999999993259905731481408), SC_(0.674009426851859198700510182276484925711e-23) }, + { SC_(94.47872161865234375), SC_(4.794428348541259765625), SC_(0.3019829094409942626953125), SC_(0.2037612994500144366883878655315176352494e-51), SC_(0.5445271727836805564325394307425243332438e-8), SC_(0.3741985884898362402462482734954103002849e-43), SC_(1) }, + { SC_(94.5174102783203125), SC_(2.595887660980224609375), SC_(0.9688708782196044921875), SC_(0.337761821443508199381120070196992983155e-5), SC_(0.7003104354886139691687572520659797605122e-5), SC_(0.3253740952886229454250383398376993551864), SC_(0.6746259047113770545749616601623006448136) }, + { SC_(95.02220916748046875), SC_(49.05890655517578125), SC_(0.095445640385150909423828125), SC_(0.1014296591921831167485134416924426771213e-100), SC_(0.3255049410331931492209518274123644776711e-40), SC_(0.3116071260553918747274711046692546109596e-60), SC_(1) }, + { SC_(95.16304779052734375), SC_(87.8050537109375), SC_(0.68924558162689208984375), SC_(0.3591386390171570330217034323842412396658e-55), SC_(0.3500715414450358091351879835688815561025e-61), SC_(0.9999990252477395079575524827693321958401), SC_(0.974752260492042447517230667804159929911e-6) }, + { SC_(95.61345672607421875), SC_(65.196868896484375), SC_(0.3377856314182281494140625), SC_(0.4333859722014505980501156640750924994333e-58), SC_(0.2842452980133411144067320657040665393916e-47), SC_(0.1524690030842662316266754200421873949762e-10), SC_(0.9999999999847530996915733768373324579958) }, + { SC_(95.71669769287109375), SC_(10.986175537109375), SC_(0.0333652384579181671142578125), SC_(0.3372800085083612728245814732509161788213e-143), SC_(0.3482559491895011198520376372913856125954e-15), SC_(0.9684831208004220966663378958012853318006e-128), SC_(1) }, + { SC_(95.7506866455078125), SC_(99.6461334228515625), SC_(0.01787211932241916656494140625), SC_(0.7925981877666200622765224435998813190314e-170), SC_(0.5647605029015430138123291624587681412693e-59), SC_(0.140342354625460930114931308563781999924e-110), SC_(1) }, + { SC_(95.7693939208984375), SC_(72.4906005859375), SC_(0.872441589832305908203125), SC_(0.4388142633049923644259492345034689476008e-50), SC_(0.6107180919399320674461648364002632421015e-72), SC_(0.9999999999999999999998608253780676540823), SC_(0.1391746219323459176926850046732349646854e-21) }, + { SC_(95.92913818359375), SC_(58.095668792724609375), SC_(0.1387105882167816162109375), SC_(0.1152963776753726723714207279128040302867e-87), SC_(0.1964676344164222838212765957522296319386e-44), SC_(0.5868466733355003420468381699190122888759e-43), SC_(1) }, + { SC_(95.94924163818359375), SC_(50.36627197265625), SC_(0.043119497597217559814453125), SC_(0.1205105244843612170118997464853132481334e-133), SC_(0.5379464386572334970803452281919284791023e-41), SC_(0.2240195599866172144586170468512280290734e-92), SC_(1) }, + { SC_(95.974395751953125), SC_(57.37546539306640625), SC_(0.12707412242889404296875), SC_(0.5509848073830600725513709899102562059558e-91), SC_(0.3907686547756237468365485949936283442849e-44), SC_(0.1410002569677527400672535793471909277884e-46), SC_(1) }, + { SC_(96.18981170654296875), SC_(97.99256134033203125), SC_(0.240151941776275634765625), SC_(0.1047338624529782694403256402509401725883e-72), SC_(0.1274994550921882776529206680489908409938e-58), SC_(0.8214455691379210750681642067899947422341e-14), SC_(0.9999999999999917855443086207892493183579) }, + { SC_(96.3088531494140625), SC_(60.5928192138671875), SC_(0.488668859004974365234375), SC_(0.1173424000075725323832188274859866785982e-48), SC_(0.1455980145613272932867048313858796718915e-45), SC_(0.0008052850602336237442086193512349341441502), SC_(0.9991947149397663762557913806487650658558) }, + { SC_(96.48885345458984375), SC_(96.76949310302734375), SC_(0.0185489989817142486572265625), SC_(0.1435982258016881740011473579074188068313e-169), SC_(0.2405150906117843685469869117960864428404e-58), SC_(0.5970445573141612300096758741661990216964e-111), SC_(1) }, + { SC_(96.86492919921875), SC_(33.23390960693359375), SC_(0.822622716426849365234375), SC_(0.3896126830362454261608108680217826494112e-32), SC_(0.575732196536069935996623203779523859796e-34), SC_(0.985438141759546703124794958382314271643), SC_(0.01456185824045329687520504161768572835698) }, + { SC_(97.0592803955078125), SC_(98.11096954345703125), SC_(0.0319296605885028839111328125), SC_(0.2998869565906142596550640980837126732485e-148), SC_(0.6376859616143078939902779400501204314318e-59), SC_(0.4702737313386163666185665116771431706157e-89), SC_(1) }, + { SC_(97.297454833984375), SC_(14.22172069549560546875), SC_(0.62565600872039794921875), SC_(0.4586358283116612515366441141888728005777e-27), SC_(0.2345703889146973155066568361856950228888e-18), SC_(0.1955216212655529321825058592196298245196e-8), SC_(0.9999999980447837873444706781749414078037) }, + { SC_(97.86806488037109375), SC_(23.2400360107421875), SC_(0.580998599529266357421875), SC_(0.4847838580994435860838596547982930354105e-33), SC_(0.1112477977342289130957389321924258614326e-25), SC_(0.4357693786731819507126485869030923714513e-7), SC_(0.9999999564230621326818049287351413096908) }, + { SC_(97.9748382568359375), SC_(35.46381378173828125), SC_(0.43892610073089599609375), SC_(0.2873257135274528993245007467042681059185e-45), SC_(0.1374390079964617837539348395028823804413e-33), SC_(0.2090568883720763685344749440226251580624e-11), SC_(0.9999999999979094311162792363146552505598) }, + { SC_(98.16379547119140625), SC_(49.7869415283203125), SC_(0.7558143138885498046875), SC_(0.3971958028052333965608830276024843615237e-41), SC_(0.2499072385121668210487453408177231300208e-43), SC_(0.9937475495928450856212412081950470642903), SC_(0.006252450407154914378758791804952935709679) }, + { SC_(98.2663421630859375), SC_(89.943603515625), SC_(0.79222810268402099609375), SC_(0.9703020130843336605117450383730907257821e-57), SC_(0.9342902223591938348587142832364306200003e-73), SC_(0.9999999999999999037114001866973304919699), SC_(0.962885998133026695080301263760365136479e-16) }, + { SC_(98.3052520751953125), SC_(55.438030242919921875), SC_(0.711244642734527587890625), SC_(0.9148851548605620864233078020635181477222e-44), SC_(0.2676495491351328940765645110959640891094e-45), SC_(0.9715765392732393467357708912202385044325), SC_(0.02842346072676065326422910877976149556749) }, + { SC_(98.4063720703125), SC_(29.338825225830078125), SC_(0.679551780223846435546875), SC_(0.7234863966571889292957198162735201822678e-32), SC_(0.6644618653733999798962457728260649872896e-30), SC_(0.01077102753452599131081375931128823317142), SC_(0.9892289724654740086891862406887117668286) }, + { SC_(98.79819488525390625), SC_(76.92431640625), SC_(0.498594343662261962890625), SC_(0.8547721404370727048220658289647343126557e-54), SC_(0.1805898574966365262303134358305105727825e-52), SC_(0.04519314170159976658173488989109380979713), SC_(0.9548068582984002334182651101089061902029) }, + { SC_(99.61347198486328125), SC_(44.7584381103515625), SC_(0.2373598515987396240234375), SC_(0.4979063210905853961279025180666656173251e-69), SC_(0.6862752454273526015268742998992848087559e-39), SC_(0.7255198616125700349403582088841519836769e-30), SC_(0.9999999999999999999999999999992744801384) }, + { SC_(99.90804290771484375), SC_(67.421295166015625), SC_(0.73282539844512939453125), SC_(0.4022690295295743797802135225234299639637e-49), SC_(0.3062978751814600527884142222488817508074e-53), SC_(0.9999238632526556439070749307531342152962), SC_(0.7613674734435609292506924686578470377178e-4) } + } }; +#undef SC_ + + diff --git a/test/ibeta_int_data.ipp b/test/ibeta_int_data.ipp new file mode 100644 index 000000000..73266d83c --- /dev/null +++ b/test/ibeta_int_data.ipp @@ -0,0 +1,1010 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1000> ibeta_int_data = { { + { SC_(1), SC_(1), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(0.87292587757110595703125), SC_(0.12707412242889404296875), SC_(0.87292587757110595703125) }, + { SC_(1), SC_(1), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(0.8644365370273590087890625), SC_(0.1355634629726409912109375), SC_(0.8644365370273590087890625) }, + { SC_(1), SC_(1), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(0.778888046741485595703125), SC_(0.221111953258514404296875), SC_(0.778888046741485595703125) }, + { SC_(1), SC_(1), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(0.6917637884616851806640625), SC_(0.3082362115383148193359375), SC_(0.6917637884616851806640625) }, + { SC_(1), SC_(1), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(0.367603957653045654296875), SC_(0.632396042346954345703125), SC_(0.367603957653045654296875) }, + { SC_(1), SC_(1), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(0.18525779247283935546875), SC_(0.81474220752716064453125), SC_(0.18525779247283935546875) }, + { SC_(1), SC_(1), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(0.1649749279022216796875), SC_(0.8350250720977783203125), SC_(0.1649749279022216796875) }, + { SC_(1), SC_(1), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(0.094198644161224365234375), SC_(0.905801355838775634765625), SC_(0.094198644161224365234375) }, + { SC_(1), SC_(1), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(0.086615502834320068359375), SC_(0.913384497165679931640625), SC_(0.086615502834320068359375) }, + { SC_(1), SC_(1), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(0.0311291217803955078125), SC_(0.9688708782196044921875), SC_(0.0311291217803955078125) }, + { SC_(1), SC_(5), SC_(0.12707412242889404296875), SC_(0.09862827503959171189398618374792775287033), SC_(0.1013717249604082881060138162520722471297), SC_(0.4931413751979585594699309187396387643517), SC_(0.5068586248020414405300690812603612356483) }, + { SC_(1), SC_(5), SC_(0.1355634629726409912109375), SC_(0.1034626062176827277918252157009958542702), SC_(0.09653739378231727220817478429900414572975), SC_(0.5173130310884136389591260785049792713512), SC_(0.4826869689115863610408739214950207286488) }, + { SC_(1), SC_(5), SC_(0.221111953258514404296875), SC_(0.1426669309228783966319631141125057294315), SC_(0.05733306907712160336803688588749427056846), SC_(0.7133346546143919831598155705625286471577), SC_(0.2866653453856080168401844294374713528423) }, + { SC_(1), SC_(5), SC_(0.3082362115383148193359375), SC_(0.1683175237737739451458299347329965869636), SC_(0.03168247622622605485417006526700341303637), SC_(0.8415876188688697257291496736649829348182), SC_(0.1584123811311302742708503263350170651818) }, + { SC_(1), SC_(5), SC_(0.632396042346954345703125), SC_(0.1986574487056847557826435986513304812407), SC_(0.001342551294315244217356401348669518759265), SC_(0.9932872435284237789132179932566524062037), SC_(0.006712756471576221086782006743347593796327) }, + { SC_(1), SC_(5), SC_(0.81474220752716064453125), SC_(0.1999563572187662228110513475988795275212), SC_(0.4364278123377718894865240112047247884697e-4), SC_(0.9997817860938311140552567379943976376058), SC_(0.0002182139061688859447432620056023623942349) }, + { SC_(1), SC_(5), SC_(0.8350250720977783203125), SC_(0.1999755589571828112759793109250020391598), SC_(0.2444104281718872402068907499796084023135e-4), SC_(0.9998777947859140563798965546250101957988), SC_(0.0001222052140859436201034453749898042011567) }, + { SC_(1), SC_(5), SC_(0.905801355838775634765625), SC_(0.1999985166171454414455882653728607369309), SC_(0.1483382854558554411734627139263069093172e-5), SC_(0.9999925830857272072279413268643036846545), SC_(0.7416914272792772058673135696315345465861e-5) }, + { SC_(1), SC_(5), SC_(0.913384497165679931640625), SC_(0.1999990249920642955788201451534509989431), SC_(0.9750079357044211798548465490010569373139e-6), SC_(0.9999951249603214778941007257672549947153), SC_(0.487503967852210589927423274500528468657e-5) }, + { SC_(1), SC_(5), SC_(0.9688708782196044921875), SC_(0.1999999941539256010178778769929018951446), SC_(0.5846074398982122123007098104855351238397e-8), SC_(0.9999999707696280050893893849645094757232), SC_(0.2923037199491061061503549052427675619198e-7) }, + { SC_(1), SC_(9), SC_(0.12707412242889404296875), SC_(0.07841065545742553690357436899840861353416), SC_(0.03270045565368557420753674211270249757695), SC_(0.7056958991168298321321693209856775218074), SC_(0.2943041008831701678678306790143224781926) }, + { SC_(1), SC_(9), SC_(0.1355634629726409912109375), SC_(0.08116395928609379109945865148741523126218), SC_(0.02994715182501732001165245962369587984893), SC_(0.7304756335748441198951278633867370813597), SC_(0.2695243664251558801048721366132629186403) }, + { SC_(1), SC_(9), SC_(0.221111953258514404296875), SC_(0.09938827101178385357325884148839069014309), SC_(0.01172284009932725753785226962272042096802), SC_(0.8944944391060546821593295733955162112878), SC_(0.1055055608939453178406704266044837887122) }, + { SC_(1), SC_(9), SC_(0.3082362115383148193359375), SC_(0.1070804349188103774200633594833764298142), SC_(0.004030676192300733691047751627734681296879), SC_(0.9637239142692933967805702353503878683281), SC_(0.03627608573070660321942976464961213167191) }, + { SC_(1), SC_(9), SC_(0.632396042346954345703125), SC_(0.111097491048750043262614932132291317645), SC_(0.1362006236106784849617897881979346612813e-4), SC_(0.9998774194387503893635343891906218588048), SC_(0.0001225805612496106364656108093781411951532) }, + { SC_(1), SC_(9), SC_(0.81474220752716064453125), SC_(0.1111110825519232717208655720235017541736), SC_(0.2855918783939024553908760935693748091725e-7), SC_(0.9999997429673094454877901482115157875627), SC_(0.2570326905545122098517884842124373282553e-6) }, + { SC_(1), SC_(9), SC_(0.8350250720977783203125), SC_(0.1111111010529400910323964226375274050264), SC_(0.1005817102007871468847358370608472022094e-7), SC_(0.9999999094764608192915678037377466452375), SC_(0.905235391807084321962622533547624819885e-7) }, + { SC_(1), SC_(9), SC_(0.905801355838775634765625), SC_(0.1111111110462238627980857535394333033615), SC_(0.6488724831302535757167780774965012167349e-10), SC_(0.9999999994160147651827717818548997302531), SC_(0.5839852348172282181451002697468510950614e-9) }, + { SC_(1), SC_(9), SC_(0.913384497165679931640625), SC_(0.1111111110806238669246786783796986176146), SC_(0.3048724418643243273141249349655461366324e-10), SC_(0.999999999725614802322108105417287558531), SC_(0.2743851976778918945827124414689915229691e-9) }, + { SC_(1), SC_(9), SC_(0.9688708782196044921875), SC_(0.1111111111111080613957531527507243932621), SC_(0.3049715357958360386717849044032940135015e-14), SC_(0.9999999999999725525617783747565195393586), SC_(0.2744743822162524348046064139629646121513e-13) }, + { SC_(1), SC_(13), SC_(0.12707412242889404296875), SC_(0.06377802111972172856117668420887073531375), SC_(0.01314505580335519451574639271420618776317), SC_(0.8291142745563824712952968947153195590788), SC_(0.1708857254436175287047031052846804409212) }, + { SC_(1), SC_(13), SC_(0.1355634629726409912109375), SC_(0.06534631396335302561085740765853120632746), SC_(0.01157676295972389746606566926454571674946), SC_(0.849502081523589332941146299560905682257), SC_(0.150497918476410667058853700439094317743) }, + { SC_(1), SC_(13), SC_(0.221111953258514404296875), SC_(0.073936098027053229980456629155316619064), SC_(0.002986978896023693096466447767760304012923), SC_(0.961169274351691989745936179019116047832), SC_(0.03883072564830801025406382098088395216799) }, + { SC_(1), SC_(13), SC_(0.3082362115383148193359375), SC_(0.07628406587795866730026283989957329242692), SC_(0.0006390110451182557766602370235036306499997), SC_(0.99169285641346267490341691869445280155), SC_(0.008307143586537325096583081305547198449996) }, + { SC_(1), SC_(13), SC_(0.632396042346954345703125), SC_(0.07692290473662908828301426763349698076011), SC_(0.1721864478347939088092895799423168144275e-6), SC_(0.9999977615761781476791854792354607498814), SC_(0.2238423821852320814520764539250118587558e-5) }, + { SC_(1), SC_(13), SC_(0.81474220752716064453125), SC_(0.07692307689978791728736106957085988607084), SC_(0.2328900578956200735221703700608178721351e-10), SC_(0.9999999996972429247356939044211785189209), SC_(0.3027570752643060955788214810790632337757e-9) }, + { SC_(1), SC_(13), SC_(0.8350250720977783203125), SC_(0.0769230769179188206511773543901190630926), SC_(0.5158102425745722532957859984322934593166e-11), SC_(0.9999999999329446684653056070715478202038), SC_(0.6705533153469439292845217979619814971115e-10) }, + { SC_(1), SC_(13), SC_(0.905801355838775634765625), SC_(0.0769230769230733860601287482474701785501), SC_(0.3537016794328675606744526819400056704101e-14), SC_(0.9999999999999540187816737272171123211513), SC_(0.4598121832627278288767884865220073715331e-13) }, + { SC_(1), SC_(13), SC_(0.913384497165679931640625), SC_(0.07692307692307573512230480395666742897924), SC_(0.11879546182729664094940976869286312538e-14), SC_(0.9999999999999845565899624514366765767301), SC_(0.154434100375485633234232699300722062994e-13) }, + { SC_(1), SC_(13), SC_(0.9688708782196044921875), SC_(0.07692307692307692307494051875730989027246), SC_(0.1982558165767032804462970824488025880236e-20), SC_(0.999999999999999999974226743845028573542), SC_(0.2577325615497142645801862071834433644306e-19) }, + { SC_(1), SC_(17), SC_(0.12707412242889404296875), SC_(0.05298684330600258243994453504760446274421), SC_(0.005836686105762123442408406128866125491082), SC_(0.9007763362020439014790570958092758666516), SC_(0.0992236637979560985209429041907241333484) }, + { SC_(1), SC_(17), SC_(0.1355634629726409912109375), SC_(0.05388026283526436764556709719993134422191), SC_(0.004943266576500338236785843976539244013386), SC_(0.9159644681994942499746406523988328517724), SC_(0.08403553180050575002535934760116714822756) }, + { SC_(1), SC_(17), SC_(0.221111953258514404296875), SC_(0.05798285710551880515383575029657780246697), SC_(0.0008406723062459007285171908798927857683196), SC_(0.9857085707938196876152077550418226419386), SC_(0.01429142920618031238479224495817735806143) }, + { SC_(1), SC_(17), SC_(0.3082362115383148193359375), SC_(0.05871162837935254489868170115871457879443), SC_(0.0001119010324121609836712400177560094408654), SC_(0.9980976824489932632775889196981478395053), SC_(0.001902317551006736722411080301852160494712) }, + { SC_(1), SC_(17), SC_(0.632396042346954345703125), SC_(0.0588235270073237814057109234005476351883), SC_(0.2404440924476642017775922953046994862122e-8), SC_(0.9999999591245042838970856978093097982011), SC_(0.4087549571610291430219069020179891265608e-7) }, + { SC_(1), SC_(17), SC_(0.81474220752716064453125), SC_(0.05882352941174372849881815123439088317093), SC_(0.209773835347899420797050643638214001969e-13), SC_(0.9999999999996433844799085709846450139058), SC_(0.3566155200914290153549860941849638033473e-12) }, + { SC_(1), SC_(17), SC_(0.8350250720977783203125), SC_(0.05882352941176178404402556960006402546711), SC_(0.292183832737157640656276818082852678684e-14), SC_(0.9999999999999503287484346832010884329409), SC_(0.4967125156531679891156705907408495537629e-13) }, + { SC_(1), SC_(17), SC_(0.905801355838775634765625), SC_(0.0588235294117647056693869968828643991896), SC_(0.2129659442936061890456975009412782209024e-18), SC_(0.9999999999999999963795789470086947862231), SC_(0.362042105299130521377685751600172975534e-17) }, + { SC_(1), SC_(17), SC_(0.913384497165679931640625), SC_(0.05882352941176470583122282199788944005315), SC_(0.5113011917858114818214109346195935267832e-19), SC_(0.9999999999999999991307879739641204809036), SC_(0.8692120260358795190963985888533089955315e-18) }, + { SC_(1), SC_(17), SC_(0.9688708782196044921875), SC_(0.05882352941176470588235293975287103627759), SC_(0.1423599551957705623143914190179850430127e-26), SC_(0.999999999999999999999999975798807616719), SC_(0.2420119238328099559344654123305745731216e-25) }, + { SC_(1), SC_(21), SC_(0.12707412242889404296875), SC_(0.04487554463330296498867403464237823454315), SC_(0.002743502985744654058945012976669384504466), SC_(0.9423864372993622647621547274899429254062), SC_(0.05761356270063773523784527251005707459379) }, + { SC_(1), SC_(21), SC_(0.1355634629726409912109375), SC_(0.04538456944202070712243042905333157192264), SC_(0.002234478177026911925188618565716047124978), SC_(0.9530759582824348495710390101199630103755), SC_(0.04692404171756515042896098988003698962453) }, + { SC_(1), SC_(21), SC_(0.221111953258514404296875), SC_(0.04736857715324135788740328993622036050871), SC_(0.0002504704658062611602157576828272585389136), SC_(0.9947401202180685156354690886606275706828), SC_(0.005259879781931484364530911339372429317186) }, + { SC_(1), SC_(21), SC_(0.3082362115383148193359375), SC_(0.04759830349897238434749159984329463475294), SC_(0.2074412007523470012744777575298429467938e-4), SC_(0.9995643734784200712973235967091873298117), SC_(0.0004356265215799287026764032908126701882671) }, + { SC_(1), SC_(21), SC_(0.632396042346954345703125), SC_(0.04761904758350377036083284895385707746354), SC_(0.3554384868678619866519054158407918425781e-10), SC_(0.9999999992535791775774898280309986267343), SC_(0.7464208224225101719690013732656628694139e-9) }, + { SC_(1), SC_(21), SC_(0.81474220752716064453125), SC_(0.04761904761904759904499906888538095785439), SC_(0.2000261997873366666119323071333816841757e-16), SC_(0.9999999999999995799449804465930001149422), SC_(0.420055019553406999885057844980101536769e-15) }, + { SC_(1), SC_(21), SC_(0.8350250720977783203125), SC_(0.04761904761904761729552426147647975508515), SC_(0.1752094786142567863962469394405144410183e-17), SC_(0.9999999999999999632060094910060748567881), SC_(0.3679399050899392514321185728250803261385e-16) }, + { SC_(1), SC_(21), SC_(0.905801355838775634765625), SC_(0.04761904761904761904760547328931447509706), SC_(0.1357432973314395056196355375980761242815e-22), SC_(0.9999999999999999999997149390756039770382), SC_(0.2850609243960229618012346289559598609911e-21) }, + { SC_(1), SC_(21), SC_(0.913384497165679931640625), SC_(0.04761904761904761904761671797829140797469), SC_(0.2329640756211072932013929197542902737565e-23), SC_(0.9999999999999999999999510775441195674684), SC_(0.4892245588043253157229251314840095748887e-22) }, + { SC_(1), SC_(21), SC_(0.9688708782196044921875), SC_(0.0476190476190476190476190476190465369039), SC_(0.1082143719333844138479652053317883063834e-32), SC_(0.9999999999999999999999999999999772749819), SC_(0.2272501810601072690807269311967554434051e-31) }, + { SC_(1), SC_(25), SC_(0.12707412242889404296875), SC_(0.03866188266790096489540055400757505247595), SC_(0.001338117332099035104599445992424947524048), SC_(0.9665470666975241223850138501893763118988), SC_(0.0334529333024758776149861498106236881012) }, + { SC_(1), SC_(25), SC_(0.1355634629726409912109375), SC_(0.03895193585668554399222700056164278492628), SC_(0.001048064143314456007772999438357215073721), SC_(0.973798396417138599805675014041069623157), SC_(0.02620160358286140019432498595893037684303) }, + { SC_(1), SC_(25), SC_(0.221111953258514404296875), SC_(0.03992256523844820971686527722437468671455), SC_(0.7743476155179028313472277562531328544896e-4), SC_(0.9980641309612052429216319306093671678638), SC_(0.001935869038794757078368069390632832136224) }, + { SC_(1), SC_(25), SC_(0.3082362115383148193359375), SC_(0.03999600969951197898506865781814981287243), SC_(0.3990300488021014931342181850187127567775e-5), SC_(0.9999002424877994746267164454537453218108), SC_(0.9975751220052537328355454625467818919438e-4) }, + { SC_(1), SC_(25), SC_(0.632396042346954345703125), SC_(0.03999999999945478919887309462649226357181), SC_(0.5452108011269053735077364281874526493256e-12), SC_(0.9999999999863697299718273656623065892953), SC_(0.1363027002817263433769341070468631623314e-10) }, + { SC_(1), SC_(25), SC_(0.81474220752716064453125), SC_(0.03999999999999999998020880085008348590831), SC_(0.1979119914991651409168940620112675879012e-19), SC_(0.9999999999999999995052200212520871477078), SC_(0.4947799787479128522922351550281689697531e-18) }, + { SC_(1), SC_(25), SC_(0.8350250720977783203125), SC_(0.03999999999999999999890979373789628355727), SC_(0.1090206262103716442728242247277974178835e-20), SC_(0.9999999999999999999727448434474070889318), SC_(0.2725515655259291106820605618194935447087e-19) }, + { SC_(1), SC_(25), SC_(0.905801355838775634765625), SC_(0.03999999999999999999999999910220684911358), SC_(0.8977931508864228447781756436984842693672e-27), SC_(0.9999999999999999999999999775551712278394), SC_(0.2244482877216057111945439109246210673418e-25) }, + { SC_(1), SC_(25), SC_(0.913384497165679931640625), SC_(0.03999999999999999999999999988985855613212), SC_(0.110141443867877273799269854833922919789e-27), SC_(0.9999999999999999999999999972464639033031), SC_(0.2753536096696931844981746370848072994724e-26) }, + { SC_(1), SC_(25), SC_(0.9688708782196044921875), SC_(0.03999999999999999999999999999999999999915), SC_(0.8535553781643920467580658144985633896027e-39), SC_(0.9999999999999999999999999999999999999787), SC_(0.2133888445410980116895164536246408474007e-37) }, + { SC_(1), SC_(29), SC_(0.12707412242889404296875), SC_(0.0338129577935794692629945243270780430846), SC_(0.0006698008271101859094192687763702327774669), SC_(0.9805757760138046086268412054852632494535), SC_(0.01942422398619539137315879451473675054654) }, + { SC_(1), SC_(29), SC_(0.1355634629726409912109375), SC_(0.03397825727003684284951305462864306374949), SC_(0.000504501350652812322900738474805212112581), SC_(0.9853694608310684426358785842306488487352), SC_(0.01463053916893155736412141576935115126485) }, + { SC_(1), SC_(29), SC_(0.221111953258514404296875), SC_(0.03445819014954100940747931915221047170347), SC_(0.2456847114864576493447395123780415860198e-4), SC_(0.9992875143366892728169002554141036794005), SC_(0.0007124856633107271830997445858963205994575) }, + { SC_(1), SC_(29), SC_(0.3082362115383148193359375), SC_(0.03448197088792511073696751642308608507103), SC_(0.7877327645444354462766803621907910391701e-6), SC_(0.9999771557498282113720579762694964670599), SC_(0.2284425017178862794202373050353294013593e-4) }, + { SC_(1), SC_(29), SC_(0.632396042346954345703125), SC_(0.03448275862068107240832609688846853373868), SC_(0.8582764087696214979742123387249709836686e-14), SC_(0.9999999999997510998414568097655874784218), SC_(0.2489001585431902344125215782302415852639e-12) }, + { SC_(1), SC_(29), SC_(0.81474220752716064453125), SC_(0.03448275862068965517239369662051856932495), SC_(0.2009648292970653711870041632254773881049e-22), SC_(0.9999999999999999999994172019950385104236), SC_(0.5827980049614895764423120733538844255043e-21) }, + { SC_(1), SC_(29), SC_(0.8350250720977783203125), SC_(0.03448275862068965517241309692195848763947), SC_(0.6961814897882226031777233180469927812415e-24), SC_(0.9999999999999999999999798107367961415445), SC_(0.20189263203858455492153976223362790656e-22) }, + { SC_(1), SC_(29), SC_(0.905801355838775634765625), SC_(0.03448275862068965517241379310338733663996), SC_(0.6093922210984556783709527035835563848764e-31), SC_(0.9999999999999999999999999999982327625588), SC_(0.1767237441185521467275762840392313516142e-29) }, + { SC_(1), SC_(29), SC_(0.913384497165679931640625), SC_(0.03448275862068965517241379310344293175316), SC_(0.5344108907950052856021250086575088322768e-32), SC_(0.9999999999999999999999999999998450208417), SC_(0.1549791583305515328246162525106775613603e-30) }, + { SC_(1), SC_(29), SC_(0.9688708782196044921875), SC_(0.03448275862068965517241379310344827586207), SC_(0.6909413557153258190411357794417167737147e-45), SC_(1), SC_(0.2003729931574444875219293760380978643773e-43) }, + { SC_(1), SC_(33), SC_(0.12707412242889404296875), SC_(0.02996125615429966162477994069300808354005), SC_(0.0003417741487306414055230896100222194902487), SC_(0.9887214530918888336177380428692667568218), SC_(0.01127854690811116638226195713073324317821) }, + { SC_(1), SC_(33), SC_(0.1355634629726409912109375), SC_(0.03005547122833160852998996598916397182363), SC_(0.0002475590746986945003130643138663312066772), SC_(0.9918305505349430814896688776424110701797), SC_(0.008169449465056918510331122357588929820349) }, + { SC_(1), SC_(33), SC_(0.221111953258514404296875), SC_(0.03029508405080924943654310503234404320316), SC_(0.7946252221053593759925270686259827142484e-5), SC_(0.9997377736767052314059224660673534257043), SC_(0.000262226323294768594077533932646574295702) }, + { SC_(1), SC_(33), SC_(0.3082362115383148193359375), SC_(0.03030287177930661038921739207309849425036), SC_(0.1585237236926410856382299318087799406495e-6), SC_(0.999994768717118142844173938412250310262), SC_(0.5231282881857155826061587749689738041435e-5) }, + { SC_(1), SC_(33), SC_(0.632396042346954345703125), SC_(0.03030303030303016529922494748359051931652), SC_(0.1377310780828194397837137809520143740978e-15), SC_(0.9999999999999954548744232669584871374452), SC_(0.4545125576733041512862554771416474345228e-14) }, + { SC_(1), SC_(33), SC_(0.81474220752716064453125), SC_(0.03030303030303030303030300950079256675483), SC_(0.2080223773627546824208717474076926668685e-25), SC_(0.9999999999999999999999993135261547029095), SC_(0.686473845297090451988876766445385800666e-24) }, + { SC_(1), SC_(33), SC_(0.8350250720977783203125), SC_(0.03030303030303030303030302984984238928731), SC_(0.4531879137429939427313174492172092688101e-27), SC_(0.9999999999999999999999999850447988464812), SC_(0.1495520115351880011013347582416790587073e-25) }, + { SC_(1), SC_(33), SC_(0.905801355838775634765625), SC_(0.03030303030303030303030303030303029881373), SC_(0.4216572496202426141521639811295284364552e-35), SC_(0.9999999999999999999999999999999998608531), SC_(0.1391468923746800626702141137727443840302e-33) }, + { SC_(1), SC_(33), SC_(0.913384497165679931640625), SC_(0.03030303030303030303030303030303030276598), SC_(0.2643272160792120456870309892556627184259e-36), SC_(0.9999999999999999999999999999999999912772), SC_(0.8722798130613997507672022645436869708055e-35) }, + { SC_(1), SC_(33), SC_(0.9688708782196044921875), SC_(0.0303030303030303030303030303030303030303), SC_(0.5701547144108821479765624946797517577224e-51), SC_(1), SC_(0.1881510557555911088322656232443180800484e-49) }, + { SC_(1), SC_(37), SC_(0.12707412242889404296875), SC_(0.02685003206744144508733016520491446621219), SC_(0.0001769949595855819396968618221125608148349), SC_(0.9934511864953334682312161125818352498511), SC_(0.00654881350466653176878388741816475014889) }, + { SC_(1), SC_(37), SC_(0.1355634629726409912109375), SC_(0.02690373825526310061165833807151310437019), SC_(0.0001232887717639264153686889555139226568345), SC_(0.9954383154447347226313585086459848616971), SC_(0.004561684555265277368641491354015138302878) }, + { SC_(1), SC_(37), SC_(0.221111953258514404296875), SC_(0.02702441862386815669167732436924253361327), SC_(0.260840315887033534970265778449341376096e-5), SC_(0.9999034890831217975920610016619737436908), SC_(0.9651091687820240793899833802625630915554e-4) }, + { SC_(1), SC_(37), SC_(0.3082362115383148193359375), SC_(0.02702699464993954748546840544393492461385), SC_(0.3237708747954155862158309210241317614237e-7), SC_(0.9999988020477632569623310014255922107125), SC_(0.1197952236743037668998574407789287517268e-5) }, + { SC_(1), SC_(37), SC_(0.632396042346954345703125), SC_(0.02702702702702702478384314230872306214527), SC_(0.224318388471830396488175637418087186813e-17), SC_(0.999999999999999917002196265422753299375), SC_(0.829978037345772467006249858446922591208e-16) }, + { SC_(1), SC_(37), SC_(0.81474220752716064453125), SC_(0.0270270270270270270270270270051731643394), SC_(0.2185386268763041505685533969169915442671e-28), SC_(0.9999999999999999999999999991914070805577), SC_(0.8085929194423253571036475685928687137884e-27) }, + { SC_(1), SC_(37), SC_(0.8350250720977783203125), SC_(0.02702702702702702702702702702672761976919), SC_(0.2994072578348473361092624804983152575799e-30), SC_(0.9999999999999999999999999999889219314601), SC_(0.1107806853988935143604271177843766453046e-28) }, + { SC_(1), SC_(37), SC_(0.905801355838775634765625), SC_(0.02702702702702702702702702702702702702673), SC_(0.2961081731340483860236647047452899258232e-39), SC_(0.999999999999999999999999999999999999989), SC_(0.1095600240595979028287559407557572725546e-37) }, + { SC_(1), SC_(37), SC_(0.913384497165679931640625), SC_(0.02702702702702702702702702702702702702701), SC_(0.1326895195650138348534156104409073960527e-40), SC_(0.9999999999999999999999999999999999999995), SC_(0.4909512223905511889576377586313573653949e-39) }, + { SC_(1), SC_(37), SC_(0.9688708782196044921875), SC_(0.02702702702702702702702702702702702702703), SC_(0.4774989373311929856464989113561258414683e-57), SC_(1), SC_(0.1766746068125414046892045972017665613433e-55) }, + { SC_(5), SC_(1), SC_(0.12707412242889404296875), SC_(0.6626978955378501583431412360064835909866e-5), SC_(0.1999933730210446214984165685876399351641), SC_(0.3313489477689250791715706180032417954933e-4), SC_(0.9999668651052231074920828429381996758205) }, + { SC_(5), SC_(1), SC_(0.1355634629726409912109375), SC_(0.9156790279322187765365273101769107871856e-5), SC_(0.1999908432097206778122346347268982308921), SC_(0.4578395139661093882682636550884553935928e-4), SC_(0.9999542160486033890611731736344911544606) }, + { SC_(5), SC_(1), SC_(0.221111953258514404296875), SC_(0.0001057039218760148704158598412930603107971), SC_(0.1998942960781239851295841401587069396892), SC_(0.0005285196093800743520792992064653015539857), SC_(0.999471480390619925647920700793534698446) }, + { SC_(5), SC_(1), SC_(0.3082362115383148193359375), SC_(0.0005564783681523892578337221648065064981452), SC_(0.1994435216318476107421662778351934935019), SC_(0.002782391840761946289168610824032532490726), SC_(0.9972176081592380537108313891759674675093) }, + { SC_(5), SC_(1), SC_(0.632396042346954345703125), SC_(0.02022906046565341559849863176562205767169), SC_(0.1797709395343465844015013682343779423283), SC_(0.1011453023282670779924931588281102883585), SC_(0.8988546976717329220075068411718897116415) }, + { SC_(5), SC_(1), SC_(0.81474220752716064453125), SC_(0.07180109586964185870286826689259153110583), SC_(0.1281989041303581412971317331074084688942), SC_(0.3590054793482092935143413344629576555292), SC_(0.6409945206517907064856586655370423444708) }, + { SC_(5), SC_(1), SC_(0.8350250720977783203125), SC_(0.08119467985221136420855443387695744866813), SC_(0.1188053201477886357914455661230425513319), SC_(0.4059733992610568210427721693847872433407), SC_(0.5940266007389431789572278306152127566593) }, + { SC_(5), SC_(1), SC_(0.905801355838775634765625), SC_(0.1219536569434409919952862978686654317061), SC_(0.07804634305655900800471370213133456829386), SC_(0.6097682847172049599764314893433271585307), SC_(0.3902317152827950400235685106566728414693) }, + { SC_(5), SC_(1), SC_(0.913384497165679931640625), SC_(0.1271446750017346562381435372624835222717), SC_(0.07285532499826534376185646273751647772832), SC_(0.6357233750086732811907176863124176113584), SC_(0.3642766249913267188092823136875823886416) }, + { SC_(5), SC_(1), SC_(0.9688708782196044921875), SC_(0.1707495262016717323163655029083641498378), SC_(0.02925047379832826768363449709163585016219), SC_(0.8537476310083586615818275145418207491891), SC_(0.1462523689916413384181724854581792508109) }, + { SC_(5), SC_(5), SC_(0.12707412242889404296875), SC_(0.4245504630821316504705517655239267695642e-5), SC_(0.001583056082670765985082596069646348033892), SC_(0.002674667917417429397964476122800738648255), SC_(0.9973253320825825706020355238771992613517) }, + { SC_(5), SC_(5), SC_(0.1355634629726409912109375), SC_(0.568491679693243391894246334773222488264e-5), SC_(0.001581616670504654867668359123953855076705), SC_(0.003581497582067433368933751909071301676063), SC_(0.9964185024179325666310662480909286983239) }, + { SC_(5), SC_(5), SC_(0.221111953258514404296875), SC_(0.4722778330395384243840041708010548627366e-4), SC_(0.001540073803997633459148901170221481815314), SC_(0.0297535034814909207361922627604664563524), SC_(0.9702464965185090792638077372395335436476) }, + { SC_(5), SC_(5), SC_(0.3082362115383148193359375), SC_(0.0001733603897707229517241440221390863679688), SC_(0.001413941197530864349863157565162500933619), SC_(0.1092170455555554595862107339476244118203), SC_(0.8907829544444445404137892660523755881797) }, + { SC_(5), SC_(5), SC_(0.632396042346954345703125), SC_(0.001265424730310530773247546797195507112824), SC_(0.0003218768569910565283397547901060801887636), SC_(0.797217580095634387145954482233169481079), SC_(0.202782419904365612854045517766830518921) }, + { SC_(5), SC_(5), SC_(0.81474220752716064453125), SC_(0.001564855200423749013316774472605337654234), SC_(0.224463868778382882705271146962496473529e-4), SC_(0.9858587762669618783895679177413627221677), SC_(0.01414122373303812161043208225863727783233) }, + { SC_(5), SC_(5), SC_(0.8350250720977783203125), SC_(0.001573714493311068400788361358172010167912), SC_(0.1358709399051890079894022912957713367505e-4), SC_(0.9914401307859730924966676556483664057847), SC_(0.00855986921402690750333234435163359421528) }, + { SC_(5), SC_(5), SC_(0.905801355838775634765625), SC_(0.0015862306035694300480734657077551310787), SC_(0.1070983732157253513835879546456222887569e-5), SC_(0.9993252802487409302862833958857325795808), SC_(0.0006747197512590697137166041142674204191682) }, + { SC_(5), SC_(5), SC_(0.913384497165679931640625), SC_(0.001586578286557488984753535011470563209678), SC_(0.7233007440983168337665758310240919089226e-6), SC_(0.9995443205312180603947270572264548220974), SC_(0.0004556794687819396052729427735451779026212) }, + { SC_(5), SC_(5), SC_(0.9688708782196044921875), SC_(0.001587296323997073992065930861320184407354), SC_(0.5263304513309521370725981402894232861762e-8), SC_(0.9999966841181566150015364426317161766333), SC_(0.331588184338499846355736828382336670291e-5) }, + { SC_(5), SC_(9), SC_(0.12707412242889404296875), SC_(0.2738541116629531763930695926601761162666e-5), SC_(0.0001526616142835258683914694594735536389927), SC_(0.01762251208551103690089402828768233308176), SC_(0.9823774879144889630991059717123176669182) }, + { SC_(5), SC_(9), SC_(0.1355634629726409912109375), SC_(0.3557641921343498689452861597532250542766e-5), SC_(0.0001518425134788119014659472938026231496126), SC_(0.0228934257638454140666291643801200322427), SC_(0.9771065742361545859333708356198799677573) }, + { SC_(5), SC_(9), SC_(0.221111953258514404296875), SC_(0.2166199772330550370708351214626779105852e-4), SC_(0.0001337381576768498964483166432538876090969), SC_(0.1393949553494709163550824006612332354616), SC_(0.8606050446505290836449175993387667645384) }, + { SC_(5), SC_(9), SC_(0.3082362115383148193359375), SC_(0.5759329184243913101384408645845589387714e-4), SC_(0.9780686355771626914155606894169950627826e-4), SC_(0.3706128330060958080740866963601636770994), SC_(0.6293871669939041919259133036398363229006) }, + { SC_(5), SC_(9), SC_(0.632396042346954345703125), SC_(0.0001526268312325674049995117506276554290688), SC_(0.277332416758799515588840477249997108661e-5), SC_(0.9821536589815712511718581152889626860577), SC_(0.01784634101842874882814188471103731394234) }, + { SC_(5), SC_(9), SC_(0.81474220752716064453125), SC_(0.0001553863528809879702157915239552677437259), SC_(0.1380251916742993960863144488765642947126e-7), SC_(0.9999111807891575883386184566521479308764), SC_(0.8881921084241166138154334785206912364759e-4) }, + { SC_(5), SC_(9), SC_(0.8350250720977783203125), SC_(0.0001553948573366192450812155864041895438366), SC_(0.5298063536155074184568995965856318828896e-8), SC_(0.9999659069611448420976222985109597145883), SC_(0.3409303885515790237770148904028541166394e-4) }, + { SC_(5), SC_(9), SC_(0.905801355838775634765625), SC_(0.0001554001098498222684669134918363046144641), SC_(0.4555033313168848666356385078569125112895e-10), SC_(0.9999997068836062975845883199666201940768), SC_(0.2931163937024154116800333798059232010148e-6) }, + { SC_(5), SC_(9), SC_(0.913384497165679931640625), SC_(0.0001554001333547398768483335233163736415794), SC_(0.2204541552330706663208378175857603078625e-10), SC_(0.9999998581377511075190262225408643835632), SC_(0.1418622488924809737774591356164367581095e-6) }, + { SC_(5), SC_(9), SC_(0.9688708782196044921875), SC_(0.0001554001553974332171045119986287148275732), SC_(0.2722183050888156771440572582249298206365e-14), SC_(0.9999999999824827520675347111757799154332), SC_(0.1751724793246528882422008456677423395796e-10) }, + { SC_(5), SC_(13), SC_(0.12707412242889404296875), SC_(0.1779723734487811605150405253566213241832e-5), SC_(0.3054089682142686195658198000823081326108e-4), SC_(0.05506465234505289106335353854533863770228), SC_(0.9449353476549471089366464614546613622977) }, + { SC_(5), SC_(13), SC_(0.1355634629726409912109375), SC_(0.2245894166309259354269751353564796920669e-5), SC_(0.3007472638960541420746263390823222958224e-4), SC_(0.06948796550560848442110610687929481672551), SC_(0.9305120344943915155788938931207051832745) }, + { SC_(5), SC_(13), SC_(0.221111953258514404296875), SC_(0.1024148072384398790773477729036601385943e-4), SC_(0.2207913983207068565399760797143101264348e-4), SC_(0.3168714135957329858653140093639244688106), SC_(0.6831285864042670141346859906360755311894) }, + { SC_(5), SC_(13), SC_(0.3082362115383148193359375), SC_(0.2066629443881893108191084318606536115475e-4), SC_(0.1165432611709574247982154207573166534816e-4), SC_(0.639415149937057727674321488176862274128), SC_(0.360584850062942272325678511823137725872) }, + { SC_(5), SC_(13), SC_(0.632396042346954345703125), SC_(0.3228793557582153566118449168980081732074e-4), SC_(0.3268498009313790054789357199620918217083e-7), SC_(0.9989887267159183133570481728824372879036), SC_(0.001011273284081686642951827117562712096365) }, + { SC_(5), SC_(13), SC_(0.81474220752716064453125), SC_(0.3232060959604372994758946840890806934451e-4), SC_(0.1095987094361414291685288895715840358553e-10), SC_(0.999999660901593004578418152571615665519), SC_(0.3390984069954215818474283843344810069362e-6) }, + { SC_(5), SC_(13), SC_(0.8350250720977783203125), SC_(0.3232061790085022986652515988530040185708e-4), SC_(0.2655064443695207225376496624645826146566e-11), SC_(0.9999999178523061120702884468511944334581), SC_(0.8214769388792971155314880556654186097475e-7) }, + { SC_(5), SC_(13), SC_(0.905801355838775634765625), SC_(0.3232062055346138249795666940923437497225e-4), SC_(0.2453291063775715852562651530659411183593e-14), SC_(0.9999999999240951744867793515217115616414), SC_(0.7590482551322064847828843835860218202036e-10) }, + { SC_(5), SC_(13), SC_(0.913384497165679931640625), SC_(0.3232062055506501502957895027089824686831e-4), SC_(0.8496585321534349908987796346034008559339e-15), SC_(0.9999999999737115650151727213815917581054), SC_(0.2628843498482727861840824189462922248259e-10) }, + { SC_(5), SC_(13), SC_(0.9688708782196044921875), SC_(0.3232062055591467179860545106384050413085e-4), SC_(0.1763126934197956522372058719926831178672e-20), SC_(0.9999999999999999454488526559152251978085), SC_(0.545511473440847748021914967945361566681e-16) }, + { SC_(5), SC_(17), SC_(0.12707412242889404296875), SC_(0.1166026704006254576699947414470994192763e-5), SC_(0.8662466096622768962540310092040382287654e-5), SC_(0.1186373869991163719063361496853513041427), SC_(0.8813626130008836280936638503146486958573) }, + { SC_(5), SC_(17), SC_(0.1355634629726409912109375), SC_(0.1431369508447339936845007917083886457771e-5), SC_(0.8397123292181683602395249589427490022646e-5), SC_(0.1456346906369746018742953305237000276459), SC_(0.8543653093630253981257046694762999723541) }, + { SC_(5), SC_(17), SC_(0.221111953258514404296875), SC_(0.5011277114303216952294257963835060160421e-5), SC_(0.4817215686325806586945999542676316319996e-5), SC_(0.509872389994780808811179276530398196022), SC_(0.490127610005219191188820723469601803978) }, + { SC_(5), SC_(17), SC_(0.3082362115383148193359375), SC_(0.8091756115838843416056203114247919435688e-5), SC_(0.1736736684790180123184054392263457044729e-5), SC_(0.8232957260060231233666383858591545629841), SC_(0.1767042739939768766333616141408454370159) }, + { SC_(5), SC_(17), SC_(0.632396042346954345703125), SC_(0.9828053726739783161021682511091418189587e-5), SC_(0.4390738892403782185749954199582908297525e-9), SC_(0.9999553264271392377181510870909963436995), SC_(0.4467357286076228184891290900365630047317e-4) }, + { SC_(5), SC_(17), SC_(0.81474220752716064453125), SC_(0.9828492790901396677359775252477495832872e-5), SC_(0.9727626861880482254033880647544635678525e-14), SC_(0.9999999990102626049379703330633228135156), SC_(0.9897373950620296669366771864844289571115e-9) }, + { SC_(5), SC_(17), SC_(0.8350250720977783203125), SC_(0.9828492799144128868586891207195923353865e-5), SC_(0.148489467065336629931545312655166112944e-14), SC_(0.999999999848919391734373245876149221639), SC_(0.1510806082656267541238507783609987616149e-9) }, + { SC_(5), SC_(17), SC_(0.905801355838775634765625), SC_(0.9828492800628876806485666936528864428055e-5), SC_(0.1467327545905699825120523617387640923315e-18), SC_(0.9999999999999850706758841824571293112325), SC_(0.1492932411581754287068876754511055257427e-13) }, + { SC_(5), SC_(17), SC_(0.913384497165679931640625), SC_(0.9828492800628987190976769515674215989182e-5), SC_(0.3634826348799083716049123440466086679689e-19), SC_(0.9999999999999963017459314143722731058194), SC_(0.369825406858562772689418064450221989225e-14) }, + { SC_(5), SC_(17), SC_(0.9688708782196044921875), SC_(0.9828492800629023539238994059895208279817e-5), SC_(0.1263446616168200599324575301788207724665e-26), SC_(0.99999999999999999999987145062403796643), SC_(0.128549375962033569978278914080441194946e-21) }, + { SC_(5), SC_(21), SC_(0.12707412242889404296875), SC_(0.770679359488142113319146684943433220236e-6), SC_(0.2993672230950404846966944035929896348746e-5), SC_(0.2047309718480249524032313168552230349557), SC_(0.7952690281519750475967686831447769650443) }, + { SC_(5), SC_(21), SC_(0.1355634629726409912109375), SC_(0.921730897091594102115555159459971560238e-6), SC_(0.2842620693346952858170535561413358008744e-5), SC_(0.2448578128123819732269972281105414449772), SC_(0.7551421871876180267730027718894585550228) }, + { SC_(5), SC_(21), SC_(0.221111953258514404296875), SC_(0.2547022148036034491511054377284407220826e-5), SC_(0.1217329442402512468775036343588922348156e-5), SC_(0.6766164336257725626699115953256027782123), SC_(0.3233835663742274373300884046743972217877) }, + { SC_(5), SC_(21), SC_(0.3082362115383148193359375), SC_(0.3473764108013440053103188600895684249321e-5), SC_(0.2905874824251069071829021199776453196605e-6), SC_(0.9228054352937703501068620518279385208322), SC_(0.07719456470622964989313794817206147916781) }, + { SC_(5), SC_(21), SC_(0.632396042346954345703125), SC_(0.3764345256922491272943553996549144891883e-5), SC_(0.6333516055687342536724324184677098371443e-11), SC_(0.9999983175014598066574551191832803405288), SC_(0.1682498540193342544880816719659471182374e-5) }, + { SC_(5), SC_(21), SC_(0.81474220752716064453125), SC_(0.376435159042935766837008995513978406577e-5), SC_(0.9189291916000765733545503211678367492792e-17), SC_(0.9999999999975588646025143965828836370718), SC_(0.244113539748560341711636292818235832446e-11) }, + { SC_(5), SC_(21), SC_(0.8350250720977783203125), SC_(0.3764351590437663724016186730329502410868e-5), SC_(0.8832362699039905438271581133800554541482e-18), SC_(0.9999999999997653682849000049120323154472), SC_(0.2346317150999950879676845528194117313945e-12) }, + { SC_(5), SC_(21), SC_(0.905801355838775634765625), SC_(0.3764351590438546950972963113868472214067e-5), SC_(0.9313127607004857354914547451839437002614e-23), SC_(0.999999999999999997525967651199159643667), SC_(0.2474032348800840356333049530581146439744e-17) }, + { SC_(5), SC_(21), SC_(0.913384497165679931640625), SC_(0.3764351590438546958636335911529738352501e-5), SC_(0.1649754809343591216480335881999014410191e-23), SC_(0.999999999999999999561742634897874993342), SC_(0.4382573651021250066580012270530381780673e-18) }, + { SC_(5), SC_(21), SC_(0.9688708782196044921875), SC_(0.3764351590438546960286090719914174598136e-5), SC_(0.9591549708462225730170137556512342611693e-33), SC_(0.9999999999999999999999999997452004819947), SC_(0.2547995180052990265219697041887503814796e-27) }, + { SC_(5), SC_(25), SC_(0.12707412242889404296875), SC_(0.514205387350499361077745705515171463481e-6), SC_(0.116993422782359857164087666827961612441e-5), SC_(0.3053223038740427581239384562922709357284), SC_(0.6946776961259572418760615437077290642716) }, + { SC_(5), SC_(25), SC_(0.1355634629726409912109375), SC_(0.600205346705767839537944808581282760012e-6), SC_(0.1083934268468330093180677565213504827879e-5), SC_(0.3563869297402172989216431787153511708261), SC_(0.6436130702597827010783568212846488291739) }, + { SC_(5), SC_(25), SC_(0.221111953258514404296875), SC_(0.1348402319236622539907419237943739516174e-5), SC_(0.3357372959374753928112031358510480717174e-6), SC_(0.800647587104725548633527858010043931216), SC_(0.199352412895274451366472141989956068784) }, + { SC_(5), SC_(25), SC_(0.3082362115383148193359375), SC_(0.1632046487220810591456304618179811389981e-5), SC_(0.5209312795328734126231775561497619790983e-7), SC_(0.9690684029495368089419672746597175080861), SC_(0.03093159705046319105803272534028249191391) }, + { SC_(5), SC_(25), SC_(0.632396042346954345703125), SC_(0.168413951964990541720537670144554768637e-5), SC_(0.9552419251551324567234923990152077877191e-13), SC_(0.9999999432801225891011225509008300774745), SC_(0.5671987741089887744909916992252550041529e-7) }, + { SC_(5), SC_(25), SC_(0.81474220752716064453125), SC_(0.1684139615174088899084961367582947019843e-5), SC_(0.9033633661006211840568048317554150034612e-20), SC_(0.9999999999999946360541729360365643667071), SC_(0.5363945827063963435633292889755715436802e-14) }, + { SC_(5), SC_(25), SC_(0.8350250720977783203125), SC_(0.1684139615174097386211664286342067313351e-5), SC_(0.5465069580874527202745400124445652699559e-21), SC_(0.999999999999999675497830961622761018985), SC_(0.3245021690383772389810149958892717431681e-15) }, + { SC_(5), SC_(25), SC_(0.905801355838775634765625), SC_(0.1684139615174097932718008214362361523638e-5), SC_(0.6141594324260642529721466861127678910553e-27), SC_(0.9999999999999999999996353274830112136982), SC_(0.3646725169887863018085363985466087545114e-21) }, + { SC_(5), SC_(25), SC_(0.913384497165679931640625), SC_(0.1684139615174097932718544584157675269689e-5), SC_(0.777896371123182018221360856111041505908e-28), SC_(0.9999999999999999999999538104582236332597), SC_(0.4618954177636674028693885423373336701705e-22) }, + { SC_(5), SC_(25), SC_(0.9688708782196044921875), SC_(0.1684139615174097932718622373794786832026e-5), SC_(0.7558652339348910731722796651845551186667e-39), SC_(0.9999999999999999999999999999999995511861), SC_(0.4488138792796899469728703581949592155863e-33) }, + { SC_(5), SC_(29), SC_(0.12707412242889404296875), SC_(0.3465610210840724596919411684893370711377e-6), SC_(0.496126139734345310894906170304609064299e-6), SC_(0.4112570325000471064672327458229265155777), SC_(0.5887429674999528935327672541770734844223) }, + { SC_(5), SC_(29), SC_(0.1355634629726409912109375), SC_(0.3955306269772238166507554992747815494381e-6), SC_(0.4471565338411939539360918395191645859986e-6), SC_(0.4693682844213319587431185358793977690872), SC_(0.5306317155786680412568814641206022309128) }, + { SC_(5), SC_(29), SC_(0.221111953258514404296875), SC_(0.7446856911208254351486408432696311838836e-6), SC_(0.9800146969759233543820649552431495155309e-7), SC_(0.883703615939261127382189115891205933291), SC_(0.116296384060738872617810884108794066709) }, + { SC_(5), SC_(29), SC_(0.3082362115383148193359375), SC_(0.8329173078668092942128932378368916820652e-6), SC_(0.9769852951608476373954100957054453371478e-8), SC_(0.9884063108993852532565561474762826212731), SC_(0.01159368910061474674344385252371737872687) }, + { SC_(5), SC_(29), SC_(0.632396042346954345703125), SC_(0.8426871593330927388358007279970214701951e-6), SC_(0.1485325031751046610796924665241597967403e-14), SC_(0.9999999982373944913216680078995054382511), SC_(0.1762605508678331992100494561748899475957e-8) }, + { SC_(5), SC_(29), SC_(0.81474220752716064453125), SC_(0.8426871608184177614571331873332569178482e-6), SC_(0.9129714151460689217588484018764203944526e-23), SC_(0.9999999999999999891659508107446293192721), SC_(0.1083404918925537068072790221538710553689e-16) }, + { SC_(5), SC_(29), SC_(0.8350250720977783203125), SC_(0.8426871608184177702392883160849213039798e-6), SC_(0.3475590227090248314568885651656125480045e-24), SC_(0.9999999999999999995875586589316544130067), SC_(0.412441341068345586993260522510729098466e-18) }, + { SC_(5), SC_(29), SC_(0.905801355838775634765625), SC_(0.8426871608184177705868472971962304887967e-6), SC_(0.4159771564663997407827812648092520905612e-31), SC_(0.9999999999999999999999999506368227964453), SC_(0.4936317720355472443921108713238432708271e-25) }, + { SC_(5), SC_(29), SC_(0.913384497165679931640625), SC_(0.8426871608184177705868473350269372242016e-6), SC_(0.3767008911235081945651281329191714918149e-32), SC_(0.9999999999999999999999999955297658652156), SC_(0.4470234134784447043265462527725224259069e-26) }, + { SC_(5), SC_(29), SC_(0.9688708782196044921875), SC_(0.8426871608184177705868473387939461354361e-6), SC_(0.6114586184815846003326386784098295666671e-45), SC_(0.9999999999999999999999999999999999999993), SC_(0.7256057133797268135227356668953765501725e-39) }, + { SC_(5), SC_(33), SC_(0.12707412242889404296875), SC_(0.2360864948041268798988934006343364744152e-6), SC_(0.2227374934316260617364011758367105848672e-6), SC_(0.5145469741281724728364396832815268309408), SC_(0.4854530258718275271635603167184731690592) }, + { SC_(5), SC_(33), SC_(0.1355634629726409912109375), SC_(0.2639740368361771124229405855684407218344e-6), SC_(0.1948499513995758292123539909026063374479e-6), SC_(0.5753274536738954738691126621376330266273), SC_(0.4246725463261045261308873378623669733727) }, + { SC_(5), SC_(33), SC_(0.221111953258514404296875), SC_(0.4290726787828334575184951515484659551106e-6), SC_(0.297513094529194841167994249225811041718e-7), SC_(0.9351574673170037781596974053726083221741), SC_(0.06484253268299622184030259462739167782587) }, + { SC_(5), SC_(33), SC_(0.3082362115383148193359375), SC_(0.4569329134568559076654414332637153195377e-6), SC_(0.1891074778897033969853143207331739744606e-8), SC_(0.9958784308855155979182146221767685832027), SC_(0.004121569114484402081785377823231416797273) }, + { SC_(5), SC_(33), SC_(0.632396042346954345703125), SC_(0.4588239882121402674046013299751916413373e-6), SC_(0.2361267423069324649585541794503350266984e-16), SC_(0.9999999999485365307043175296609805544201), SC_(0.5146346929568247033901944557993134356637e-10) }, + { SC_(5), SC_(33), SC_(0.81474220752716064453125), SC_(0.4588239882357529416258782988046778574158e-6), SC_(0.9416277666369201866561953947069536548985e-26), SC_(0.9999999999999999999794773640703133200699), SC_(0.2052263592968667993014378019832884886546e-19) }, + { SC_(5), SC_(33), SC_(0.8350250720977783203125), SC_(0.4588239882357529416350690361458492267544e-6), SC_(0.2255403251978325279789973628337736351731e-27), SC_(0.9999999999999999999995084382443362019728), SC_(0.4915617556637980272423050673357671312551e-21) }, + { SC_(5), SC_(33), SC_(0.905801355838775634765625), SC_(0.4588239882357529416352945764681735029791e-6), SC_(0.2873556303208231772042174053171930786083e-35), SC_(0.9999999999999999999999999999937371271405), SC_(0.6262872859497793023689337716277425569307e-29) }, + { SC_(5), SC_(33), SC_(0.913384497165679931640625), SC_(0.458823988235752941635294576470861016039e-6), SC_(0.1860432433146185166790861480849446922973e-36), SC_(0.9999999999999999999999999999995945215418), SC_(0.4054784581555613378243180734589156826916e-30) }, + { SC_(5), SC_(33), SC_(0.9688708782196044921875), SC_(0.4588239882357529416352945764710470592824e-6), SC_(0.5043120465776822624408006045468302710732e-51), SC_(1), SC_(0.109914054083535982575578830560074837335e-44) }, + { SC_(5), SC_(37), SC_(0.12707412242889404296875), SC_(0.1626504642036919834016975929052152351601e-6), SC_(0.1042304188517738705237198755161042773019e-6), SC_(0.6094496628665918248863268636399124339924), SC_(0.3905503371334081751136731363600875660076) }, + { SC_(5), SC_(37), SC_(0.1355634629726409912109375), SC_(0.1785340708563088974897302925149156430213e-6), SC_(0.8834681219915695643568717590640386944068e-7), SC_(0.6689653781578808758050445087504637652445), SC_(0.3310346218421191241949554912495362347555) }, + { SC_(5), SC_(37), SC_(0.221111953258514404296875), SC_(0.2575879416059304066311258791508165223587e-6), SC_(0.9292941449535447294291589270502990103308e-8), SC_(0.9651794413180051743427623579193180011128), SC_(0.03482055868199482565723764208068199888719) }, + { SC_(5), SC_(37), SC_(0.3082362115383148193359375), SC_(0.266506247378562541507712833763002985758e-6), SC_(0.3746356769033124177046346583165267039643e-9), SC_(0.9985962438650000574039849109816345576055), SC_(0.001403756134999942596015089018365442394487) }, + { SC_(5), SC_(37), SC_(0.632396042346954345703125), SC_(0.2668808830550841162368525949582861712004e-6), SC_(0.3817376885648734630333412615876398321174e-18), SC_(0.9999999999985696326983243047827487006262), SC_(0.1430367301675695217251299373756270574545e-11) }, + { SC_(5), SC_(37), SC_(0.81474220752716064453125), SC_(0.2668808830554658539254076042410641756684e-6), SC_(0.9864180255336793575946139789715629967452e-29), SC_(0.9999999999999999999999630390152250555878), SC_(0.3696098477494441216113442633066656833174e-22) }, + { SC_(5), SC_(37), SC_(0.8350250720977783203125), SC_(0.2668808830554658539254173197814100940587e-6), SC_(0.1486399094184032550274416749708991661108e-30), SC_(0.9999999999999999999999994430477458083372), SC_(0.5569522541916628125552736816992094664256e-24) }, + { SC_(5), SC_(37), SC_(0.905801355838775634765625), SC_(0.266880883055465853925417468421319310928e-6), SC_(0.201534028457057230761765476521046754852e-39), SC_(0.999999999999999999999999999999999244854), SC_(0.7551459892883088730920276228695969799627e-33) }, + { SC_(5), SC_(37), SC_(0.913384497165679931640625), SC_(0.2668808830554658539254174684213195031338e-6), SC_(0.9328165997084304013720170443602910538353e-41), SC_(0.9999999999999999999999999999999999650475), SC_(0.349525447094149162963693414504756697581e-34) }, + { SC_(5), SC_(37), SC_(0.9688708782196044921875), SC_(0.266880883055465853925417468421319512462e-6), SC_(0.4221880736804865224264667002914361297586e-57), SC_(1), SC_(0.1581934490200046194666746461325008263844e-50) }, + { SC_(9), SC_(1), SC_(0.12707412242889404296875), SC_(0.9600007293119584485871944755170290688733e-9), SC_(0.1111111101511103817991526625239166355941), SC_(0.864000656380762603728475027965326161986e-8), SC_(0.9999999913599934361923739627152497203467) }, + { SC_(9), SC_(1), SC_(0.1355634629726409912109375), SC_(0.1718072078585785871462620138863849638492e-8), SC_(0.1111111093930390325253252396484909722473), SC_(0.1546264870727207284316358124977464674643e-7), SC_(0.9999999845373512927279271568364187502254) }, + { SC_(9), SC_(1), SC_(0.221111953258514404296875), SC_(0.1403677957818562130364732574093946241147e-6), SC_(0.1111109707433153292548980746378537017165), SC_(0.1263310162036705917328259316684551617033e-5), SC_(0.9999987366898379632940826717406833154484) }, + { SC_(9), SC_(1), SC_(0.3082362115383148193359375), SC_(0.2790682407315739714493485678037235803803e-5), SC_(0.1111083204287037953713966176254330738753), SC_(0.2511614166584165743044137110233512223423e-4), SC_(0.9999748838583341583425695586288976648778) }, + { SC_(9), SC_(1), SC_(0.632396042346954345703125), SC_(0.001797462261343820207401048841770692354426), SC_(0.1093136488497672909037100622693404187567), SC_(0.01617716035209438186660943957593623118983), SC_(0.9838228396479056181333905604240637688102) }, + { SC_(9), SC_(1), SC_(0.81474220752716064453125), SC_(0.01757678454898685216162527733472978560017), SC_(0.09353432656212425894948583377638132551094), SC_(0.1581910609408816694546274960125680704015), SC_(0.8418089390591183305453725039874319295985) }, + { SC_(9), SC_(1), SC_(0.8350250720977783203125), SC_(0.02193073217064876341502293890767740093568), SC_(0.08918037894046234769608817220343371017543), SC_(0.1973765895358388707352064501690966084211), SC_(0.8026234104641611292647935498309033915789) }, + { SC_(9), SC_(1), SC_(0.905801355838775634765625), SC_(0.04560938206818327137484950287428185938697), SC_(0.06550172904292783973626160823682925172414), SC_(0.4104844386136494423736455258685367344828), SC_(0.5895155613863505576263544741314632655172) }, + { SC_(9), SC_(1), SC_(0.913384497165679931640625), SC_(0.04916320816656398360707963717384276476164), SC_(0.06194790294454712750403147393726834634947), SC_(0.4424688734990758524637167345645848828548), SC_(0.5575311265009241475362832654354151171452) }, + { SC_(9), SC_(1), SC_(0.9688708782196044921875), SC_(0.08358928519989995718729365410737505997528), SC_(0.02752182591121115392381745700373605113583), SC_(0.7523035667990996146856428869663755397775), SC_(0.2476964332009003853143571130336244602225) }, + { SC_(9), SC_(5), SC_(0.12707412242889404296875), SC_(0.5911962348176420782926572925912737568304e-9), SC_(0.0001553995642039205825133218627428628088816), SC_(0.3804347771051526773813249677824846625204e-5), SC_(0.9999961956522289484732261867503221751534) }, + { SC_(9), SC_(5), SC_(0.1355634629726409912109375), SC_(0.1022163544547098264140191440738464754833e-8), SC_(0.0001553991332366108530571360152087146616906), SC_(0.6577622409160577329742131921152020697347e-5), SC_(0.9999934223775908394226702578680788479793) }, + { SC_(9), SC_(5), SC_(0.221111953258514404296875), SC_(0.580040224947455435634697006166641506016e-7), SC_(0.0001553421513776606546118366856995387360048), SC_(0.0003732558847536875728309275234682338091213), SC_(0.9996267441152463124271690724765317661909) }, + { SC_(9), SC_(5), SC_(0.3082362115383148193359375), SC_(0.7678657202757242640909897359639788181599e-6), SC_(0.0001546322896798796758913091656641914213372), SC_(0.004941215909974285639425518950928203694859), SC_(0.9950587840900257143605744810490717963051) }, + { SC_(9), SC_(5), SC_(0.632396042346954345703125), SC_(0.6944726970016251324937502025002293600507e-4), SC_(0.8595288569999288690602513515013246415033e-4), SC_(0.4468931805205457727597282553088975931926), SC_(0.5531068194794542272402717446911024068074) }, + { SC_(9), SC_(5), SC_(0.81474220752716064453125), SC_(0.0001436598318245511583198180568309052861974), SC_(0.1174032357560424183558209856925011395802e-4), SC_(0.9244510177909867037880291957068755166801), SC_(0.07554898220901329621197080429312448331988) }, + { SC_(9), SC_(5), SC_(0.8350250720977783203125), SC_(0.0001477506004315488220256152553071656177256), SC_(0.7649554968606578129784900092989782429797e-5), SC_(0.9507751137770166697348341679016107500643), SC_(0.04922488622298333026516583209838924993574) }, + { SC_(9), SC_(5), SC_(0.905801355838775634765625), SC_(0.0001546242206782728300085407133746324580236), SC_(0.7759347218825701468594420255229421317707e-6), SC_(0.9950068600646856611049594905657598673821), SC_(0.004993139935314338895040509434240132617944) }, + { SC_(9), SC_(5), SC_(0.913384497165679931640625), SC_(0.0001548620266733779185899240546488179371643), SC_(0.5381287267774815654761007513374629910564e-6), SC_(0.9965371416431869061261612916651434256526), SC_(0.003462858356813093873838708334856574347448) }, + { SC_(9), SC_(5), SC_(0.9688708782196044921875), SC_(0.0001553954152106535724229067681317137952525), SC_(0.4740189501827732493387268441604902949926e-8), SC_(0.9999694968805557385414050529275782724495), SC_(0.3050311944426145859494707242172755048277e-4) }, + { SC_(9), SC_(9), SC_(0.12707412242889404296875), SC_(0.365114822213992556345329140334181294922e-9), SC_(0.4570227691064709541426012182628942293864e-5), SC_(0.7988347195219943140279456261371552551598e-4), SC_(0.9999201165280478005685972054373862844745) }, + { SC_(9), SC_(9), SC_(0.1355634629726409912109375), SC_(0.610152691651135739697098606689513824693e-9), SC_(0.4569982653195272398242660413162586961334e-5), SC_(0.0001334953074063519884883282041575987297046), SC_(0.9998665046925936480115116717958424012703) }, + { SC_(9), SC_(9), SC_(0.221111953258514404296875), SC_(0.2423580261394174225971697595057999767884e-7), SC_(0.454635700327298179172264053581869647748e-5), SC_(0.005302551253904313789003477168227397692153), SC_(0.9946974487460956862109965228317726023078) }, + { SC_(9), SC_(9), SC_(0.3082362115383148193359375), SC_(0.2172401744211505160711625206970020959146e-6), SC_(0.4353352631465773017911194991072274379244e-5), SC_(0.04752997776160352141120964790329708856515), SC_(0.9524700222383964785887903520967029114349) }, + { SC_(9), SC_(9), SC_(0.632396042346954345703125), SC_(0.3978184846839884079699119544393118644599e-5), SC_(0.5924079590470394542832379673761578305602e-6), SC_(0.8703870626400982377973703651177704282517), SC_(0.1296129373599017622026296348822295717483) }, + { SC_(9), SC_(9), SC_(0.81474220752716064453125), SC_(0.4563874950628763803259723843591687248194e-5), SC_(0.6717855258159730722633668177589226965175e-8), SC_(0.9985302004480672325151949797394252530323), SC_(0.001469799551932767484805020260574746967711) }, + { SC_(9), SC_(9), SC_(0.8350250720977783203125), SC_(0.4567787277591357527778319082868542948224e-5), SC_(0.2805528295566006204038428900733526934415e-8), SC_(0.999386178464213113502618432140808511642), SC_(0.0006138215357868864973815678591914883579807) }, + { SC_(9), SC_(9), SC_(0.905801355838775634765625), SC_(0.4570560783709862982580469869987536805188e-5), SC_(0.3202217706055140188764178173966997109798e-10), SC_(0.999992993867880921958781002854573177607), SC_(0.7006132119078041218997145426822392976526e-5) }, + { SC_(9), SC_(9), SC_(0.913384497165679931640625), SC_(0.4570576845663014383938801538683062757893e-5), SC_(0.1596022390915004355597308621371726560972e-10), SC_(0.9999965080626109170619703886484673007995), SC_(0.349193738908293802961135153269920054275e-5) }, + { SC_(9), SC_(9), SC_(0.9688708782196044921875), SC_(0.4570592803456766122517353841644323447487e-5), SC_(0.2430157411465003670124953027672279152818e-14), SC_(0.9999999994683058599455718470133615270756), SC_(0.5316941400544281529866384729244179558451e-9) }, + { SC_(9), SC_(13), SC_(0.12707412242889404296875), SC_(0.2261833503782177598016467634292753146595e-9), SC_(0.3777927705199688414417467188716236662398e-6), SC_(0.0005983386495900259152464822985729020391407), SC_(0.9994016613504099740847535177014270979609) }, + { SC_(9), SC_(13), SC_(0.1355634629726409912109375), SC_(0.3655236740663012597289237033544768982873e-9), SC_(0.3776534301962807579418194419316984646562e-6), SC_(0.0009669453616647713634491028971428325524223), SC_(0.9990330546383352286365508971028571674476) }, + { SC_(9), SC_(13), SC_(0.221111953258514404296875), SC_(0.1025595542826979075957219535902627155099e-7), SC_(0.3677629984420772684419761702760266700035e-6), SC_(0.02713079681128205638164949843690732797285), SC_(0.9728692031887179436183505015630926720272) }, + { SC_(9), SC_(13), SC_(0.3082362115383148193359375), SC_(0.6358531377806950417496665184007671141947e-7), SC_(0.314433640092277555026581713794976230135e-6), SC_(0.1682066815090917242593315317781837300877), SC_(0.8317933184909082757406684682218162699123) }, + { SC_(9), SC_(13), SC_(0.632396042346954345703125), SC_(0.3716509420878360768872488222881018243539e-6), SC_(0.6368011782510982314299543346951117200584e-8), SC_(0.9831542526708989227152214170162759230911), SC_(0.01684574732910107728477858298372407690891) }, + { SC_(9), SC_(13), SC_(0.81474220752716064453125), SC_(0.3780137764914382886251099671839297353021e-6), SC_(0.5177378908770576438398451123206252371508e-11), SC_(0.9999863039171561055802071538893522038762), SC_(0.1369608284389441979284611064779612383602e-4) }, + { SC_(9), SC_(13), SC_(0.8350250720977783203125), SC_(0.3780175833039471887910119484759429363003e-6), SC_(0.1370566399870410536417159110005254203661e-11), SC_(0.9999963743447627748120792781398051654007), SC_(0.3625655237225187920721860194834599312739e-5) }, + { SC_(9), SC_(13), SC_(0.905801355838775634765625), SC_(0.3780189521674069635165612543056322249926e-6), SC_(0.1702940095684987111329420716561926998646e-14), SC_(0.9999999954950933590778056453024903190286), SC_(0.4504906640922194354697509680971424824409e-8) }, + { SC_(9), SC_(13), SC_(0.913384497165679931640625), SC_(0.3780189532622542197475672763943742938078e-6), SC_(0.6080928394539810892406786477466645613037e-15), SC_(0.9999999983913694452936220459553859256104), SC_(0.1608630554706377954044614074389594030536e-8) }, + { SC_(9), SC_(13), SC_(0.9688708782196044921875), SC_(0.3780189538703454911038381761736583857504e-6), SC_(0.1568097710189461394555804090932182962311e-20), SC_(0.9999999999999958518013603961045106839125), SC_(0.4148198639603895489316087468029268843008e-14) }, + { SC_(9), SC_(17), SC_(0.12707412242889404296875), SC_(0.1405816969722189388567383083558414104832e-9), SC_(0.5424633498635044096207749295297193357997e-7), SC_(0.002584844031346370879497604509619475950238), SC_(0.9974151559686536291205023954903805240498) }, + { SC_(9), SC_(17), SC_(0.1355634629726409912109375), SC_(0.219827311566730938457448707610070806601e-9), SC_(0.5416708937175592896247678255371770418385e-7), SC_(0.004041915316632379250955956460867159655041), SC_(0.995958084683367620749044043539132840345) }, + { SC_(9), SC_(17), SC_(0.221111953258514404296875), SC_(0.4403759649937895651506999528497174447242e-8), SC_(0.4998315703338476424942723173283060054321e-7), SC_(0.08097093783748685131773761125558363469719), SC_(0.9190290621625131486822623887444163653028) }, + { SC_(9), SC_(17), SC_(0.3082362115383148193359375), SC_(0.1939268463451185948776872401679044738104e-7), SC_(0.3499423204881080041316550724453732760941e-7), SC_(0.3565689290207267952332187805338221781445), SC_(0.6434310709792732047667812194661778218555) }, + { SC_(9), SC_(17), SC_(0.632396042346954345703125), SC_(0.5430543083648195549548238757030435069709e-7), SC_(0.8148584684070440545184369102342429335785e-10), SC_(0.9985017380684555072554481767179827777885), SC_(0.001498261931544492744551823282017222211505) }, + { SC_(9), SC_(17), SC_(0.81474220752716064453125), SC_(0.5438691216175813790086103883960385391871e-7), SC_(0.4521564522000073192421723921071736173815e-14), SC_(0.9999999168630104860021042274100571511362), SC_(0.831369895139978957725899428488637718873e-7) }, + { SC_(9), SC_(17), SC_(0.8350250720977783203125), SC_(0.543869159273491028994886950315149108395e-7), SC_(0.7559735570014455362298128641509463332837e-15), SC_(0.999999986100084301464746250588082574751), SC_(0.1389991569853525374941191742524901626716e-7) }, + { SC_(9), SC_(17), SC_(0.905801355838775634765625), SC_(0.5438691668322151247695198624115232674994e-7), SC_(0.101147423982245020175448240505006769982e-18), SC_(0.9999999999981402250734088568191635726777), SC_(0.1859774926591143180836427322311445853136e-11) }, + { SC_(9), SC_(17), SC_(0.913384497165679931640625), SC_(0.5438691668329680959974693067868335200459e-7), SC_(0.2585030118730058264442298585501309228758e-19), SC_(0.9999999999995246963283868713295480895543), SC_(0.475303671613128670451910445744308349946e-12) }, + { SC_(9), SC_(17), SC_(0.9688708782196044921875), SC_(0.5438691668332265989981286920192394657951e-7), SC_(0.1121362059403828410940572756400961267229e-26), SC_(0.9999999999999999999793817681202051728694), SC_(0.2061823187979482713057184964307428460426e-19) }, + { SC_(9), SC_(21), SC_(0.12707412242889404296875), SC_(0.8768914672004667740277052868479883353486e-10), SC_(0.1100677472135701480295706065573409173228e-7), SC_(0.007903865185623009669799204727678133676613), SC_(0.9920961348143769903302007952723218663234) }, + { SC_(9), SC_(21), SC_(0.1355634629726409912109375), SC_(0.1327634015137674561649132693037503578721e-9), SC_(0.1096170046656329402419491791511514020794e-7), SC_(0.01196663516979649778095998494979065717557), SC_(0.9880333648302035022190400150502093428244) }, + { SC_(9), SC_(21), SC_(0.221111953258514404296875), SC_(0.1922672531283948327609305550541565130277e-8), SC_(0.917179133679311315275052563387732543554e-8), SC_(0.1733001751275425902867394982168137473879), SC_(0.8266998248724574097132605017831862526121) }, + { SC_(9), SC_(21), SC_(0.3082362115383148193359375), SC_(0.6210682675170413227453775424547729841374e-8), SC_(0.4883781192906648252906055759871160724443e-8), SC_(0.5598001624072055789251412833115037339001), SC_(0.4401998375927944210748587166884962660999) }, + { SC_(9), SC_(21), SC_(0.632396042346954345703125), SC_(0.1109332286589567728080756173149978998778e-7), SC_(0.1141002181384199552269452919100578033294e-11), SC_(0.9998971557170358370110672130090114880394), SC_(0.0001028442829641629889327869909885119605569) }, + { SC_(9), SC_(21), SC_(0.81474220752716064453125), SC_(0.1109446386384866611786130719707792051271e-7), SC_(0.4228395362498523987340970053102520559123e-17), SC_(0.99999999961887339372340422796744223392), SC_(0.38112660627659577203255776608004808021e-9) }, + { SC_(9), SC_(21), SC_(0.8350250720977783203125), SC_(0.1109446386763128060547137188768980063864e-7), SC_(0.4457808748884592967290899271816976280214e-18), SC_(0.9999999999598195207817893513086551266044), SC_(0.401804792182106486913448733955690388781e-10) }, + { SC_(9), SC_(21), SC_(0.905801355838775634765625), SC_(0.1109446386807705508865848396211270588468e-7), SC_(0.6391701347222306184681139076368879875802e-23), SC_(0.9999999999999994238837114415568070399872), SC_(0.576116288558443192960012781299767424205e-15) }, + { SC_(9), SC_(21), SC_(0.913384497165679931640625), SC_(0.1109446386807706031175078794921786520131e-7), SC_(0.1168609043235201025364511247610860798748e-23), SC_(0.9999999999999998946673713005882099947236), SC_(0.1053326286994117900052763627064110805839e-15) }, + { SC_(9), SC_(21), SC_(0.9688708782196044921875), SC_(0.1109446386807706148035983033424803803278e-7), SC_(0.8501708525330398886156929343196786267896e-33), SC_(0.9999999999999999999999999233698119492461), SC_(0.7663018805075391434717047034108627741122e-25) }, + { SC_(9), SC_(25), SC_(0.12707412242889404296875), SC_(0.5490758403303128374170602424503878959011e-10), SC_(0.2826074162354721778093669492999221502501e-8), SC_(0.01905863655744288740875275366894751951801), SC_(0.980941363442557112591247246331052480482) }, + { SC_(9), SC_(25), SC_(0.1355634629726409912109375), SC_(0.8054869498750192807248003186160847620173e-10), SC_(0.2800433051400251133762895485382651815889e-8), SC_(0.02795876617007237049147730173128856236268), SC_(0.9720412338299276295085226982687114376373) }, + { SC_(9), SC_(25), SC_(0.221111953258514404296875), SC_(0.8554800556152143717442153924434872614658e-9), SC_(0.2025501690772538690091160124800773030625e-8), SC_(0.2969404636762578077684669651571649580551), SC_(0.7030595363237421922315330348428350419449) }, + { SC_(9), SC_(25), SC_(0.3082362115383148193359375), SC_(0.2104446012990466374535163580402195482282e-8), SC_(0.7765357333972866873002119368420648098089e-9), SC_(0.7304614184484415414200159658955656204626), SC_(0.2695385815515584585799840341044343795374) }, + { SC_(9), SC_(25), SC_(0.632396042346954345703125), SC_(0.2880964877142493115694532299196703738177e-8), SC_(0.1686924525994614084321804755655391435629e-13), SC_(0.9999941446191802161807233697271427346658), SC_(0.5855380819783819276630272857265334233333e-5) }, + { SC_(9), SC_(25), SC_(0.81474220752716064453125), SC_(0.2880981746383624885033409613998148623252e-8), SC_(0.4128176801965903246111668838875453117095e-20), SC_(0.9999999999985670937321481073162519799105), SC_(0.1432906267851892683748020089482141391211e-11) }, + { SC_(9), SC_(25), SC_(0.8350250720977783203125), SC_(0.2880981746387478864640885646284461723272e-8), SC_(0.2741971944898709597985688190228332374008e-21), SC_(0.9999999999999048250844235072793571735485), SC_(0.9517491557649272064282645150121960575143e-13) }, + { SC_(9), SC_(25), SC_(0.905801355838775634765625), SC_(0.2880981746387753061415142486660740151915e-8), SC_(0.4202330305835201401758370334655908953849e-27), SC_(0.9999999999999999998541354761756408836164), SC_(0.1458645238243591163835797200803371155926e-18) }, + { SC_(9), SC_(25), SC_(0.913384497165679931640625), SC_(0.2880981746387753061780424050251452838414e-8), SC_(0.5495146699280745367708579396857089233567e-28), SC_(0.9999999999999999999809261314960752608796), SC_(0.1907386850392473912038581972108743415619e-19) }, + { SC_(9), SC_(25), SC_(0.9688708782196044921875), SC_(0.2880981746387753061835375517243590921079e-8), SC_(0.6693710121702900475154372706269412258546e-39), SC_(0.9999999999999999999999999999997676587111), SC_(0.2323412888712551396237935868399667445649e-30) }, + { SC_(9), SC_(29), SC_(0.12707412242889404296875), SC_(0.3452371057410482986140888659571381026189e-10), SC_(0.8586264333775833212640254947439217333912e-9), SC_(0.03865387114125827184819027413408647032515), SC_(0.9613461288587417281518097258659135296749) }, + { SC_(9), SC_(29), SC_(0.1355634629726409912109375), SC_(0.4911185816313617700142369684998872055879e-10), SC_(0.8440382857885519741240106844896468230943e-9), SC_(0.05498723646378621874744067737729074417013), SC_(0.9450127635362137812525593226227092558299) }, + { SC_(9), SC_(29), SC_(0.221111953258514404296875), SC_(0.3888497801301485178490666386636823315268e-9), SC_(0.5043003638215396332763677426759532121263e-9), SC_(0.4353688825595509208225265312389464011478), SC_(0.5646311174404490791774734687610535988522) }, + { SC_(9), SC_(29), SC_(0.3082362115383148193359375), SC_(0.7592087943688000689521139738405827604688e-9), SC_(0.1339413495828880821733204074990527831843e-9), SC_(0.8500349011978290927050332649851841848072), SC_(0.1499650988021709072949667350148158151928) }, + { SC_(9), SC_(29), SC_(0.632396042346954345703125), SC_(0.8931498853652602449945499332845656074749e-9), SC_(0.2585864279061308844480550699361782222622e-15), SC_(0.9999997104782105704746800277422260652763), SC_(0.2895217894295253199722577739347236583312e-6) }, + { SC_(9), SC_(29), SC_(0.81474220752716064453125), SC_(0.8931501439516839998949414346601599624334e-9), SC_(0.4151230492946679475581219656326947232619e-23), SC_(0.999999999999995352147093007437456321952), SC_(0.4647852906992562543678047963360053253581e-14) }, + { SC_(9), SC_(29), SC_(0.8350250720977783203125), SC_(0.8931501439516879774963097346160686112977e-9), SC_(0.1736291246467235669323553649753388014101e-24), SC_(0.9999999999999998055991752086473042087243), SC_(0.1944008247913526957912757227641802185969e-15) }, + { SC_(9), SC_(29), SC_(0.905801355838775634765625), SC_(0.8931501439516881511254059811626303005332e-9), SC_(0.2840017700524311984063840724224177571042e-31), SC_(0.9999999999999999999999682022365471629722), SC_(0.3179776345283702779442316874772184432244e-22) }, + { SC_(9), SC_(29), SC_(0.913384497165679931640625), SC_(0.8931501439516881511254317256115259571246e-9), SC_(0.2655728109586528453005070615648804265977e-32), SC_(0.9999999999999999999999970265602848851124), SC_(0.2973439715114887585081475966481059094231e-23) }, + { SC_(9), SC_(29), SC_(0.9688708782196044921875), SC_(0.893150143951688151125434381339635543112e-9), SC_(0.5411285344768365457940643138260757523988e-45), SC_(0.9999999999999999999999999999999999993941), SC_(0.6058651371679194520056963763750188659337e-36) }, + { SC_(9), SC_(33), SC_(0.12707412242889404296875), SC_(0.2180414614903352446359330756444194325311e-10), SC_(0.2953448533227024873313175283491878992448e-9), SC_(0.06875048064270083638580992874041251871339), SC_(0.9312495193572991636141900712595874812866) }, + { SC_(9), SC_(33), SC_(0.1355634629726409912109375), SC_(0.3010491921805923699749491128345171935457e-10), SC_(0.2870440802536767747974159246301781231434e-9), SC_(0.09492358250602696923794036959562880777653), SC_(0.9050764174939730307620596304043711922235) }, + { SC_(9), SC_(33), SC_(0.221111953258514404296875), SC_(0.1809996092362792695419651818580881215635e-9), SC_(0.1361493902354567422529456540555417209344e-9), SC_(0.5707084352710050596423519902623232493344), SC_(0.4292915647289949403576480097376767506656) }, + { SC_(9), SC_(33), SC_(0.3082362115383148193359375), SC_(0.2927589155916207427645318631547645209126e-9), SC_(0.243900838801152690303789727588653215853e-10), SC_(0.9230958195651224563326664364435911409284), SC_(0.07690418043487754366733356355640885907159) }, + { SC_(9), SC_(33), SC_(0.632396042346954345703125), SC_(0.3171489954046790723255138774566892446515e-9), SC_(0.4067056939469396958456940597846390425167e-17), SC_(0.9999999871761949549147203505663467876154), SC_(0.1282380504508527964943365321238462169541e-7) }, + { SC_(9), SC_(33), SC_(0.81474220752716064453125), SC_(0.3171489994717360075296266753530419707679e-9), SC_(0.4265284160560587871729976126969716350339e-26), SC_(0.9999999999999999865511662730605412187012), SC_(0.1344883372693945878129878298318716765895e-16) }, + { SC_(9), SC_(33), SC_(0.8350250720977783203125), SC_(0.3171489994717360116826067472843899435575e-9), SC_(0.1123040886292398989404234096407758667584e-27), SC_(0.9999999999999999996458948670300051750848), SC_(0.3541051329699948249152489394870430787349e-18) }, + { SC_(9), SC_(33), SC_(0.905801355838775634765625), SC_(0.3171489994717360117949108339550478058366e-9), SC_(0.1958582036661275320842735719191727187854e-35), SC_(0.9999999999999999999999999938244104823802), SC_(0.6175589517619847040155065525930217593502e-26) }, + { SC_(9), SC_(33), SC_(0.913384497165679931640625), SC_(0.317148999471736011794910835782670236395e-9), SC_(0.1309596061029528241043983124271877347579e-36), SC_(0.9999999999999999999999999995870723025421), SC_(0.4129276974579382448119755326015227852742e-27) }, + { SC_(9), SC_(33), SC_(0.9688708782196044921875), SC_(0.3171489994717360117949108359136298424979e-9), SC_(0.4460790569104597941105137765177222559491e-51), SC_(1), SC_(0.1406528343628635330520590604021488907461e-41) }, + { SC_(9), SC_(37), SC_(0.12707412242889404296875), SC_(0.1383704492141968468396235002853402389294e-10), SC_(0.1115474432418247850954210037047614952341e-9), SC_(0.1103569119603098678722640429092774506042), SC_(0.8896430880396901321277359570907225493958) }, + { SC_(9), SC_(37), SC_(0.1355634629726409912109375), SC_(0.1856085101182889844926537002203677054054e-10), SC_(0.1068236371514155713301179837112587485865e-9), SC_(0.1480314772881919686005787487109681130073), SC_(0.8519685227118080313994212512890318869927) }, + { SC_(9), SC_(37), SC_(0.221111953258514404296875), SC_(0.8647787220309051130283136633381664942978e-10), SC_(0.3890661596015395847655198739947886969731e-10), SC_(0.689701521056580397663829801700375767165), SC_(0.310298478943419602336170198299624232835) }, + { SC_(9), SC_(37), SC_(0.3082362115383148193359375), SC_(0.1207708075515478329224629779078500515997e-9), SC_(0.4613680611696636856920375825445467527391e-11), SC_(0.9632037369272517155252340398183052855195), SC_(0.03679626307274828447476596018169471448052) }, + { SC_(9), SC_(37), SC_(0.632396042346954345703125), SC_(0.1253844880980385959590801961350683341059e-9), SC_(0.6520587382030315759822718502118352040574e-19), SC_(0.9999999994799526259148715449112033455146), SC_(0.5200473740851284550887966544853732686778e-9) }, + { SC_(9), SC_(37), SC_(0.81474220752716064453125), SC_(0.1253844881632444697749284881276179716098e-9), SC_(0.4454865605677547517242647788609988719479e-29), SC_(0.9999999999999999999644703609598219962371), SC_(0.3552963904017800376292090188049900406371e-19) }, + { SC_(9), SC_(37), SC_(0.8350250720977783203125), SC_(0.1253844881632444697793095310414124232805e-9), SC_(0.7382269188309584656546054091780188010287e-31), SC_(0.9999999999999999999994112294673406305799), SC_(0.5887705326593694200813474609266358224277e-21) }, + { SC_(9), SC_(37), SC_(0.905801355838775634765625), SC_(0.1253844881632444697793833537331583374179e-9), SC_(0.1371817091855418534944290435586179007902e-39), SC_(0.9999999999999999999999999999989059116387), SC_(0.1094088361288662590097005516474607557082e-29) }, + { SC_(9), SC_(37), SC_(0.913384497165679931640625), SC_(0.125384488163244469779383353733288960736e-9), SC_(0.6558391105453115676973948995295981791386e-41), SC_(0.9999999999999999999999999999999476937602), SC_(0.5230623980308003725442393759501428729441e-31) }, + { SC_(9), SC_(37), SC_(0.9688708782196044921875), SC_(0.1253844881632444697793833537332955191271e-9), SC_(0.3732881801413353628047212232725882164977e-57), SC_(1), SC_(0.2977148015752414393704547368146445601461e-47) }, + { SC_(13), SC_(1), SC_(0.12707412242889404296875), SC_(0.1733002529979310893170054451864859513361e-12), SC_(0.07692307692290362282392514583375991763174), SC_(0.225290328897310416112107078742431736737e-11), SC_(0.9999999999977470967110268958388789292126) }, + { SC_(13), SC_(1), SC_(0.1355634629726409912109375), SC_(0.4017086232034524013346443940305631574062e-12), SC_(0.07692307692267521445371962452174227868289), SC_(0.5222212101644881217350377122397321046281e-11), SC_(0.9999999999947777878983551187826496228776) }, + { SC_(13), SC_(1), SC_(0.221111953258514404296875), SC_(0.2322819811850248034763754868397705193984e-9), SC_(0.07692307669079494189189827344670143623715), SC_(0.301966575540532244519288132891701675218e-8), SC_(0.999999996980334244594677554807118671083) }, + { SC_(13), SC_(1), SC_(0.3082362115383148193359375), SC_(0.1743990860218583594833841527485473727731e-7), SC_(0.07692305948316832089108712858466164822219), SC_(0.2267188118284158673283993985731115846051e-6), SC_(0.9999997732811881715841326716006014268884) }, + { SC_(13), SC_(1), SC_(0.632396042346954345703125), SC_(0.0001990286107315085858608431972838241951467), SC_(0.07672404831234541449106223372579309888178), SC_(0.002587371939509611616190961564689714536907), SC_(0.9974126280604903883838090384353102854631) }, + { SC_(13), SC_(1), SC_(0.81474220752716064453125), SC_(0.005361909111769781127530574652935057460667), SC_(0.07156116781130714194939250227014186561626), SC_(0.06970481845300715465789747048815574698867), SC_(0.9302951815469928453421025295118442530113) }, + { SC_(13), SC_(1), SC_(0.8350250720977783203125), SC_(0.007381597333093284397839696122287263460674), SC_(0.06954147958998363867908338080078965961625), SC_(0.09596076533021269717191604958973442498876), SC_(0.9040392346697873028280839504102655750112) }, + { SC_(13), SC_(1), SC_(0.905801355838775634765625), SC_(0.02125617960979388014145807905051735104901), SC_(0.05566689731328304293546499787255957202792), SC_(0.2763303349273204418389550276567255636371), SC_(0.7236696650726795581610449723432744363629) }, + { SC_(13), SC_(1), SC_(0.913384497165679931640625), SC_(0.0236893921175736522609622831934239337223), SC_(0.05323368480550327081596079372965298935463), SC_(0.3079620975284574793925096815145111383899), SC_(0.6920379024715425206074903184854888616101) }, + { SC_(13), SC_(1), SC_(0.9688708782196044921875), SC_(0.05099333051512162562167400412619472990646), SC_(0.02592974640795529745524907279688219317046), SC_(0.662913296696581133081762053640531488784), SC_(0.337086703303418866918237946359468511216) }, + { SC_(13), SC_(5), SC_(0.12707412242889404296875), SC_(0.1049349708530902245175333182105057233316e-12), SC_(0.323206204509797027086421607442637082924e-4), SC_(0.3246687998194611546572480865433047079879e-8), SC_(0.999999996753312001805388453427519134567) }, + { SC_(13), SC_(5), SC_(0.1355634629726409912109375), SC_(0.2346793115735462331255442924335212726727e-12), SC_(0.3232062032123536198818615213625273406939e-4), SC_(0.7260977900085520452904340407893148176494e-8), SC_(0.9999999927390220999144795470956595921069) }, + { SC_(13), SC_(5), SC_(0.221111953258514404296875), SC_(0.9283197775127802819707660619041861159179e-10), SC_(0.323205277239369222837041881851908360843e-4), SC_(0.287222139162454219241755019553155184265e-5), SC_(0.9999971277786083754578075824498044684482) }, + { SC_(13), SC_(5), SC_(0.3082362115383148193359375), SC_(0.4550032329452985234731567480169189521966e-8), SC_(0.3231607052358522057649765369431685731339e-4), SC_(0.0001407780002732753631625946978364347238096), SC_(0.9998592219997267246368374053021635652762) }, + { SC_(13), SC_(5), SC_(0.632396042346954345703125), SC_(0.6181001903713975786046925273586262555986e-5), SC_(0.2613961865220069777568545998821076394692e-4), SC_(0.1912401989009104108202918679647589634822), SC_(0.8087598010990895891797081320352410365178) }, + { SC_(13), SC_(5), SC_(0.81474220752716064453125), SC_(0.2606209419824176335745101937952663193835e-4), SC_(0.6258526357672910204281365882270394564562e-5), SC_(0.8063611944936001582795345396025539921725), SC_(0.1936388055063998417204654603974460078275) }, + { SC_(13), SC_(5), SC_(0.8350250720977783203125), SC_(0.2795251768014809625638517612767087995285e-4), SC_(0.4368102875766577305347209134126146550057e-5), SC_(0.8648508970237820981725573493901370257412), SC_(0.1351491029762179018274426506098629742588) }, + { SC_(13), SC_(5), SC_(0.905801355838775634765625), SC_(0.3175635978581118945601414806607578908808e-4), SC_(0.5642607701034841057182371957212374148304e-6), SC_(0.9825417717729982017690777411643849143851), SC_(0.01745822822700179823092225883561508561485) }, + { SC_(13), SC_(5), SC_(0.913384497165679931640625), SC_(0.3191902782278661757531614604545866868971e-4), SC_(0.4015927331280559864162392163383578131963e-6), SC_(0.9875747208370179477802815586464912092597), SC_(0.01242527916298205221971844135350879074029) }, + { SC_(13), SC_(5), SC_(0.9688708782196044921875), SC_(0.3231635005339767867915412929179819769162e-4), SC_(0.4270502516994882578255969998828811287032e-8), SC_(0.9998678706521241783330287602882362365788), SC_(0.0001321293478758216669712397117637634212208) }, + { SC_(13), SC_(9), SC_(0.12707412242889404296875), SC_(0.6363687477274261679783312058957698481325e-13), SC_(0.3780188902334722864589315678019323519775e-6), SC_(0.1683430794175701361984838022140492683154e-6), SC_(0.9999998316569205824298638015161977859507) }, + { SC_(13), SC_(9), SC_(0.1355634629726409912109375), SC_(0.1373455500114442324959819423891593714353e-12), SC_(0.3780188165247970477573158696531105523951e-6), SC_(0.3633297976337742293178957509380105264139e-6), SC_(0.9999996366702023662257706821042490619895) }, + { SC_(13), SC_(9), SC_(0.221111953258514404296875), SC_(0.3732275227173758385929218866367623226223e-10), SC_(0.3779816311180753216176890734463892653222e-6), SC_(0.9873248917708645221385577712522919453954e-4), SC_(0.9999012675108229135477861442228747708055) }, + { SC_(13), SC_(9), SC_(0.3082362115383148193359375), SC_(0.1205092410397426794177708544466782614586e-8), SC_(0.3768138614599496324073706570905861589399e-6), SC_(0.003187915309693040918513884852276092725146), SC_(0.9968120846903069590814861151477239072749) }, + { SC_(13), SC_(9), SC_(0.632396042346954345703125), SC_(0.2435153729309657811172960805971441642318e-6), SC_(0.1345035809393812780842522850379087773227e-6), SC_(0.6441882620903889483942615327292672577339), SC_(0.3558117379096110516057384672707327422661) }, + { SC_(13), SC_(9), SC_(0.81474220752716064453125), SC_(0.3747233990110008640796533407529882362731e-6), SC_(0.3295554859346195121895024882064705281355e-8), SC_(0.9912820380417313558103925580277324905899), SC_(0.008717961958268644189607441972267509410139) }, + { SC_(13), SC_(9), SC_(0.8350250720977783203125), SC_(0.3765246072329650647349975718758926023878e-6), SC_(0.1494346637381994466550793759160339166682e-8), SC_(0.9960469002358687932980205267133300135786), SC_(0.003953099764131206701979473286669986421366) }, + { SC_(13), SC_(9), SC_(0.905801355838775634765625), SC_(0.3779964077422230446218278996721603303988e-6), SC_(0.2254612812401457972046596289261115570025e-10), SC_(0.999940357149044575551244870955742773227), SC_(0.5964285095542444875512904425722677295477e-4) }, + { SC_(13), SC_(9), SC_(0.913384497165679931640625), SC_(0.3780073845848789164271692216597818292162e-6), SC_(0.1156928546814277437914397527111233829272e-10), SC_(0.9999693949593011391489406439021370575537), SC_(0.3060504069886085105935609786294244634941e-4) }, + { SC_(13), SC_(9), SC_(0.9688708782196044921875), SC_(0.3780189517005877565620978926009516832973e-6), SC_(0.2169759302639450473034101258257187460391e-14), SC_(0.9999999942601838335766769021497795544442), SC_(0.5739816166423323097850220445555815992096e-8) }, + { SC_(13), SC_(13), SC_(0.12707412242889404296875), SC_(0.3865512569645572509527745473777219147141e-13), SC_(0.1479200736588788412172679729087342081038e-7), SC_(0.2613237252070623193768627522346877455014e-5), SC_(0.9999973867627479293768062313724776531225) }, + { SC_(13), SC_(13), SC_(0.1355634629726409912109375), SC_(0.8053474330512965176841139593170463471869e-13), SC_(0.1479196548627027544780012415693222687793e-7), SC_(0.5444462732925654465186507169427366955059e-5), SC_(0.999994555537267074345534813492830572633) }, + { SC_(13), SC_(13), SC_(0.221111953258514404296875), SC_(0.1510649711093669926167337485247019111029e-10), SC_(0.1477693952390264387819021919347568839146e-7), SC_(0.001021258120038053523216240666188909552801), SC_(0.9989787418799619464767837593338110904472) }, + { SC_(13), SC_(13), SC_(0.3082362115383148193359375), SC_(0.3249523214780560632663394943820884813598e-9), SC_(0.1446709369953552451418555307394607010121e-7), SC_(0.021968044245970354295451288544257271485), SC_(0.978031955754029645704548711455742728515) }, + { SC_(13), SC_(13), SC_(0.632396042346954345703125), SC_(0.1351041388183666100932354368198339988506e-7), SC_(0.128163213917691956812834888634475869751e-8), SC_(0.9133566690262974472082079147224375674894), SC_(0.08664333097370255279179208527756243251058) }, + { SC_(13), SC_(13), SC_(0.81474220752716064453125), SC_(0.1478959002596594700180977920542784489939e-7), SC_(0.2455995047633575642113362900313683179346e-11), SC_(0.9998339651563992845156481324258234837937), SC_(0.0001660348436007154843518675741765162062882) }, + { SC_(13), SC_(13), SC_(0.8350250720977783203125), SC_(0.1479133632664708284107024225320482872398e-7), SC_(0.7096943664977363816503151233298585846847e-12), SC_(0.9999520218930167236794285502614339205732), SC_(0.4797810698327632057144973856607942677317e-4) }, + { SC_(13), SC_(13), SC_(0.905801355838775634765625), SC_(0.1479204483796327352001603122554367964044e-7), SC_(0.1183050307057435861342784478942127933193e-14), SC_(0.9999999200211853467198117733685323640443), SC_(0.7997881465328018822663146763595572258276e-7) }, + { SC_(13), SC_(13), SC_(0.913384497165679931640625), SC_(0.1479204558551398483926670877926456970178e-7), SC_(0.4354995957381851837890635888807889631726e-15), SC_(0.999999970558528879675302653642524043662), SC_(0.2944147112032469734635747595633796898742e-7) }, + { SC_(13), SC_(13), SC_(0.9688708782196044921875), SC_(0.1479204602101218583185030998840780895963e-7), SC_(0.1394745601582579920349622939142522909086e-20), SC_(0.9999999999999057097578251714253226761258), SC_(0.9429024217482857467732387421549720449357e-13) }, + { SC_(13), SC_(17), SC_(0.12707412242889404296875), SC_(0.2352124847988583066925872856168985685137e-13), SC_(0.1133466595304284909376372317388538584669e-8), SC_(0.2075117209792706588915857708554170512241e-4), SC_(0.9999792488279020729341108414229144582949) }, + { SC_(13), SC_(17), SC_(0.1355634629726409912109375), SC_(0.47319270822763713423074609346223051508e-13), SC_(0.1133442797281942031493618501507754051475e-8), SC_(0.4174652264871421726676262625529372760153e-4), SC_(0.9999582534773512857827332373737447062724) }, + { SC_(13), SC_(17), SC_(0.221111953258514404296875), SC_(0.6160762906790184416410860361106870045241e-11), SC_(0.1127329353645974610790630715755993404481e-8), SC_(0.005435215373140305974905206024099337150662), SC_(0.9945647846268596940250947939759006628493) }, + { SC_(13), SC_(17), SC_(0.3082362115383148193359375), SC_(0.8952226461288120516359735057745244768884e-10), SC_(0.1043967851939883590043444225539647826837e-8), SC_(0.07897930763184901416015911201957463974446), SC_(0.9210206923681509858398408879804253602555) }, + { SC_(13), SC_(17), SC_(0.632396042346954345703125), SC_(0.11180679479784150696274141584955338368e-8), SC_(0.1542216857434972557962741762156643772574e-10), SC_(0.9863940864158105675588809095851866703433), SC_(0.01360591358418943244111909041481332965674) }, + { SC_(13), SC_(17), SC_(0.81474220752716064453125), SC_(0.1133488009470085581960423750432941428013e-8), SC_(0.2107082679213246617825684158846512945387e-14), SC_(0.9999981410665620786995404999237105535187), SC_(0.1858933437921300459500076289446481283438e-5) }, + { SC_(13), SC_(17), SC_(0.8350250720977783203125), SC_(0.1133489730946306587794199409101569817382e-8), SC_(0.3856064582074128421670155304571442322139e-15), SC_(0.9999996598060692578940726205001490858939), SC_(0.3401939307421059273794998509141061151301e-6) }, + { SC_(13), SC_(17), SC_(0.905801355838775634765625), SC_(0.113349011648300562407403591833334958047e-8), SC_(0.6975917113300565778375069405658671871199e-19), SC_(0.9999999999384563040168702544933779087256), SC_(0.615436959831297455066220912744136814944e-10) }, + { SC_(13), SC_(17), SC_(0.913384497165679931640625), SC_(0.1133490116534372810871580625101502830968e-8), SC_(0.1839198433546095101559744355783714171321e-19), SC_(0.9999999999837740231989003049479583084103), SC_(0.1622597680109969505204169158974264579789e-10) }, + { SC_(13), SC_(17), SC_(0.9688708782196044921875), SC_(0.1133490116552764794211739397096407765002e-8), SC_(0.9953021790206925095238592270107470107856e-27), SC_(0.999999999999999999121913667807124223803), SC_(0.878086332192875776197030349699699509944e-18) }, + { SC_(13), SC_(21), SC_(0.12707412242889404296875), SC_(0.1433895809524435166472862460535204215339e-13), SC_(0.134192885252514370330107422799816711254e-9), SC_(0.0001068419243418850176591475313048984543213), SC_(0.9998931580756581149823408524686951015457) }, + { SC_(13), SC_(21), SC_(0.1355634629726409912109375), SC_(0.278638317836437586917685567700386414577e-13), SC_(0.1341793603788259709230803828676520246547e-9), SC_(0.0002076179724864692641685405328416723082277), SC_(0.9997923820275135307358314594671583276918) }, + { SC_(13), SC_(21), SC_(0.221111953258514404296875), SC_(0.253398575663959635332944201416930086486e-11), SC_(0.1316732384539700183284427094102527624313e-9), SC_(0.01888114273686970946337263954382202054201), SC_(0.981118857263130290536627360456177979458) }, + { SC_(13), SC_(21), SC_(0.3082362115383148193359375), SC_(0.2530203856516996717200426497794949951687e-10), SC_(0.1089051856454396475097678864464725637793e-9), SC_(0.1885296317988353150256291788889639107923), SC_(0.8114703682011646849743708211110360892077) }, + { SC_(13), SC_(21), SC_(0.632396042346954345703125), SC_(0.133998982951326656037504620619304022662e-9), SC_(0.2082412592829586442675308051180406341264e-12), SC_(0.9984483602838237053355733884909220653095), SC_(0.001551639716176294664426611509077934690489) }, + { SC_(13), SC_(21), SC_(0.81474220752716064453125), SC_(0.1342072222615875095910765247567454971919e-9), SC_(0.1949022105090695626667676566104244098257e-17), SC_(0.9999999854775172010701814370111438739499), SC_(0.1452248279892981856298885612605012536295e-7) }, + { SC_(13), SC_(21), SC_(0.8350250720977783203125), SC_(0.1342072239853292640917458089217367890432e-9), SC_(0.2252803505900263425026852742529665828947e-18), SC_(0.999999998321399224854715122899697481908), SC_(0.1678600775145284877100302518091954704837e-8) }, + { SC_(13), SC_(21), SC_(0.905801355838775634765625), SC_(0.1342072242106052264885795995812597570386e-9), SC_(0.4388193192551843162306257563480913565756e-23), SC_(0.9999999999999673028540873067320098935421), SC_(0.3269714591269326799010645788598458007362e-13) }, + { SC_(13), SC_(21), SC_(0.913384497165679931640625), SC_(0.1342072242106087866596464982485856962323e-9), SC_(0.8280221256531758363670638616754702749953e-24), SC_(0.9999999999999938302715779757749052810772), SC_(0.6169728422024225094718922849039362526983e-14) }, + { SC_(13), SC_(21), SC_(0.9688708782196044921875), SC_(0.1342072242106096146817713978305389764226e-9), SC_(0.7535938830868735508286328967836961971016e-33), SC_(0.9999999999999999999999943848485987291662), SC_(0.5615151401270833810161885377713181791345e-23) }, + { SC_(13), SC_(25), SC_(0.12707412242889404296875), SC_(0.8758534854591758457448109617092620554102e-14), SC_(0.2158388230793347343358602045024222821501e-10), SC_(0.0004056259222001141266040453154502037633389), SC_(0.9995943740777998858733959546845497962367) }, + { SC_(13), SC_(25), SC_(0.1355634629726409912109375), SC_(0.1644594195911352543478043398664769635096e-13), SC_(0.2157619490082895166660868812587267313922e-10), SC_(0.0007616456958115183275386065238441337133182), SC_(0.9992383543041884816724613934761558662867) }, + { SC_(13), SC_(25), SC_(0.221111953258514404296875), SC_(0.1052319341738460143720597868717541819681e-11), SC_(0.2054032150104960504832287069114177901589e-10), SC_(0.04873509217331026238665309316882716369695), SC_(0.9512649078266897376133469068311728363031) }, + { SC_(13), SC_(25), SC_(0.3082362115383148193359375), SC_(0.7371706577683233810965792701677289892302e-11), SC_(0.1422093426510483138107767585818203094327e-10), SC_(0.3413990271664885927276602329379520051213), SC_(0.6586009728335114072723397670620479948787) }, + { SC_(13), SC_(25), SC_(0.632396042346954345703125), SC_(0.215896343198773414457604784727540613281e-10), SC_(0.3006522910723746282990087105259507464146e-14), SC_(0.9998607616857699958489335664900236975064), SC_(0.0001392383142300041510664335099763024936167) }, + { SC_(13), SC_(25), SC_(0.81474220752716064453125), SC_(0.2159264084089924516833086005814810827368e-10), SC_(0.1888820023712608501711212561885701636223e-20), SC_(0.9999999999125248255892018989943735456641), SC_(0.8747517441079810100562645433587149941582e-10) }, + { SC_(13), SC_(25), SC_(0.8350250720977783203125), SC_(0.2159264084265036617763745709402285031088e-10), SC_(0.1376990144060114658364705246857782025488e-21), SC_(0.9999999999936228729311726179839225859091), SC_(0.6377127068827382016077414090890059081225e-11) }, + { SC_(13), SC_(25), SC_(0.905801355838775634765625), SC_(0.2159264084278806490443189673329867527873e-10), SC_(0.2876115718265606455568387061223695378352e-27), SC_(0.9999999999999999866801113434615935735793), SC_(0.133198886565384064264206663651582666017e-16) }, + { SC_(13), SC_(25), SC_(0.913384497165679931640625), SC_(0.2159264084278806515321720583844293912428e-10), SC_(0.3882626272141638171128833633530944062053e-28), SC_(0.9999999999999999982018752127586866960998), SC_(0.1798124787241313303900175607857242328695e-17) }, + { SC_(13), SC_(25), SC_(0.9688708782196044921875), SC_(0.2159264084278806519204346855926653286993e-10), SC_(0.5927879656431963330490213739811929803124e-39), SC_(0.9999999999999999999999999999725467593353), SC_(0.2745324066468633525157162324351792049558e-28) }, + { SC_(13), SC_(29), SC_(0.12707412242889404296875), SC_(0.5361159256319312396010308732646528656994e-14), SC_(0.4360288305107121339397117160045072382257e-11), SC_(0.001228032461168072260485150589813286577727), SC_(0.9987719675388319277395148494101867134223) }, + { SC_(13), SC_(29), SC_(0.1355634629726409912109375), SC_(0.973115458128150406049849219265123028997e-14), SC_(0.4355918309782159147732628976585067680624e-11), SC_(0.002229027928310871066621235397291920611244), SC_(0.9977709720716891289333787646027080793888) }, + { SC_(13), SC_(29), SC_(0.221111953258514404296875), SC_(0.4417728762305500138302424753507472837691e-12), SC_(0.3923876588132890637962884993426971627145e-11), SC_(0.101192933568468562710343070408942604), SC_(0.898807066431531437289656929591057396) }, + { SC_(13), SC_(29), SC_(0.3082362115383148193359375), SC_(0.2225659358449399429487291383915778848566e-11), SC_(0.2139990105914041222305836084861940062348e-11), SC_(0.509811742013951378868184627844159288568), SC_(0.490188257986048621131815372155840711432) }, + { SC_(13), SC_(29), SC_(0.632396042346954345703125), SC_(0.4365604138162920927035687714491568431311e-11), SC_(0.4532620051972475743975428615047960306151e-16), SC_(0.9999896175355145391151404776679190863663), SC_(0.1038246448546088485952233208091363373536e-4) }, + { SC_(13), SC_(29), SC_(0.81474220752716064453125), SC_(0.4365649464361551356602134035263708826298e-11), SC_(0.1889295190993433514010084616055794066717e-23), SC_(0.9999999999995672361680854939239192693303), SC_(0.4327638319145060760807306696845368551879e-12) }, + { SC_(13), SC_(29), SC_(0.8350250720977783203125), SC_(0.4365649464363353852131159325985247587363e-11), SC_(0.8679966196814279247132355069362734092997e-25), SC_(0.999999999999980117583265288769420531397), SC_(0.1988241673471123057946860295534458126341e-13) }, + { SC_(13), SC_(29), SC_(0.905801355838775634765625), SC_(0.4365649464363440651773734087390733264319e-11), SC_(0.1939338138698564659560352004535505620327e-31), SC_(0.9999999999999999999955577328080752325579), SC_(0.4442267191924767442100604825291307796978e-20) }, + { SC_(13), SC_(29), SC_(0.913384497165679931640625), SC_(0.436564946436344065179125490053149297079e-11), SC_(0.1872568246225940124030792998307632982611e-32), SC_(0.9999999999999999999995710676586584394916), SC_(0.428932341341560508376735767079939971018e-21) }, + { SC_(13), SC_(29), SC_(0.9688708782196044921875), SC_(0.4365649464363440651793127468777718432018e-11), SC_(0.4788961419963612190629714846753884460829e-45), SC_(0.9999999999999999999999999999999998903036), SC_(0.1096964256763087377864191877102778850244e-33) }, + { SC_(13), SC_(33), SC_(0.12707412242889404296875), SC_(0.3288973462262453181042334440885281140506e-14), SC_(0.105036218757340536009108668852798462749e-11), SC_(0.003121501293682070982666124689418962387496), SC_(0.9968784987063179290173338753105810376125) }, + { SC_(13), SC_(33), SC_(0.1355634629726409912109375), SC_(0.577345972895251702853306017062997171679e-14), SC_(0.1047877701306715296243595962798239936914e-11), SC_(0.005479479302502354461832088666637476098479), SC_(0.9945205206974976455381679113333625239015) }, + { SC_(13), SC_(33), SC_(0.221111953258514404296875), SC_(0.1877385210054651906597590821365675018216e-12), SC_(0.8659126400302026226123699408323024068093e-12), SC_(0.1781790102342134988581029892573944395977), SC_(0.8218209897657865011418970107426055604023) }, + { SC_(13), SC_(33), SC_(0.3082362115383148193359375), SC_(0.7001678178082966479538164343787058795213e-12), SC_(0.3534833432273711653183125885901640291097e-12), SC_(0.6645157749554217246065582234795082397798), SC_(0.3354842250445782753934417765204917602202) }, + { SC_(13), SC_(33), SC_(0.632396042346954345703125), SC_(0.1053650456836596895550481635719300497655e-11), SC_(0.7041990709177216473872495694109755941443e-18), SC_(0.999999331658240450718434404420838283949), SC_(0.6683417595492815655955791617160509826654e-6) }, + { SC_(13), SC_(33), SC_(0.81474220752716064453125), SC_(0.1053651161035665879831915205800822678459e-11), SC_(0.1933440213817168047230172436200258699305e-26), SC_(0.9999999999999981650091744627063177422548), SC_(0.1834990825537293682257745227412229157099e-14) }, + { SC_(13), SC_(33), SC_(0.8350250720977783203125), SC_(0.1053651161035667757321894831395963671896e-11), SC_(0.559502341915729062367353675286778066221e-28), SC_(0.9999999999999999468987115844131837889953), SC_(0.5310128841558681621100472450186624077517e-16) }, + { SC_(13), SC_(33), SC_(0.905801355838775634765625), SC_(0.1053651161035667813272127687827969437745e-11), SC_(0.1335140900470886415004847211583517347364e-35), SC_(0.9999999999999999999999987328435161040081), SC_(0.1267156483895991943153828502822970968195e-23) }, + { SC_(13), SC_(33), SC_(0.913384497165679931640625), SC_(0.1053651161035667813272128930772613731852e-11), SC_(0.9219625617677870083359949327942422655437e-37), SC_(0.9999999999999999999999999124983110290924), SC_(0.8750168897090761800089664476012832985385e-25) }, + { SC_(13), SC_(33), SC_(0.9688708782196044921875), SC_(0.1053651161035667813272129022968869908631e-11), SC_(0.3945756076153737976738818594960825664508e-51), SC_(0.9999999999999999999999999999999999999996), SC_(0.3744841008171363545743343990230561886635e-39) }, + { SC_(13), SC_(37), SC_(0.12707412242889404296875), SC_(0.2022562869462821197532524196367295063988e-14), SC_(0.2909097260202935105285466924113715803533e-12), SC_(0.006904540558258509618995969227757285931115), SC_(0.9930954594417414903810040307722427140689) }, + { SC_(13), SC_(37), SC_(0.1355634629726409912109375), SC_(0.3435252850050776981876902622169062086269e-14), SC_(0.289497036039705554744202313985569813331e-12), SC_(0.01172712254791283179389152808161757926114), SC_(0.9882728774520871682061084719183824207389) }, + { SC_(13), SC_(37), SC_(0.221111953258514404296875), SC_(0.8088396793739206089649936989705372158734e-13), SC_(0.2120483209523642708295798467106851538299e-12), SC_(0.2761183078995854773692687452784452718887), SC_(0.7238816921004145226307312547215547281113) }, + { SC_(13), SC_(37), SC_(0.3082362115383148193359375), SC_(0.2307015172999821943741658118588814090458e-12), SC_(0.6223077158977413735191340474885746637145e-13), SC_(0.7875591938818516824225994810596464473036), SC_(0.2124408061181483175774005189403535526964) }, + { SC_(13), SC_(37), SC_(0.632396042346954345703125), SC_(0.2929322777052393233493640992892548903408e-12), SC_(0.1118451700837671511731848398507642646195e-19), SC_(0.9999999618187634734047543279035462028577), SC_(0.3818123652659524567209645379714234771436e-7) }, + { SC_(13), SC_(37), SC_(0.81474220752716064453125), SC_(0.2929322888897563297130057815841027242773e-12), SC_(0.2013073435023636151140001077919348843227e-29), SC_(0.999999999999999993127854076266591674071), SC_(0.6872145923733408325929013106938484121814e-17) }, + { SC_(13), SC_(37), SC_(0.8350250720977783203125), SC_(0.2929322888897563316893989427919634093409e-12), SC_(0.3668027381577546607640565398729017244369e-31), SC_(0.9999999999999999998747824148891284839159), SC_(0.1252175851108715160841487692918167436277e-18) }, + { SC_(13), SC_(37), SC_(0.905801355838775634765625), SC_(0.2929322888897563317260792165143500621711e-12), SC_(0.9338881324612367306445017045551535793132e-40), SC_(0.9999999999999999999999999996811931740264), SC_(0.3188068259735959221297890844065788017623e-27) }, + { SC_(13), SC_(37), SC_(0.913384497165679931640625), SC_(0.2929322888897563317260792166031273934966e-12), SC_(0.4611481920649220009551844818591041972218e-41), SC_(0.9999999999999999999999999999842575158303), SC_(0.1574248416972814223346612150887286352704e-28) }, + { SC_(13), SC_(37), SC_(0.9688708782196044921875), SC_(0.2929322888897563317260792166077388754173e-12), SC_(0.3300557259447356892320638226975609186744e-57), SC_(1), SC_(0.1126730437247737431192274969236662316508e-44) }, + { SC_(17), SC_(1), SC_(0.12707412242889404296875), SC_(0.3455589170449344136182647463074894445431e-16), SC_(0.05882352941176467132646123668302922640882), SC_(0.5874501589763885031510500687227320557233e-15), SC_(0.9999999999999994125498410236114968489499) }, + { SC_(17), SC_(1), SC_(0.1355634629726409912109375), SC_(0.1037471566286679865741630596192829041388e-15), SC_(0.05882352941176460213519631250848401407223), SC_(0.176370166268735577176077201352780937036e-14), SC_(0.999999999999998236298337312644228239228) }, + { SC_(17), SC_(1), SC_(0.221111953258514404296875), SC_(0.424579319630979338056120972173360267065e-12), SC_(0.05882352941134012656272196183841446726312), SC_(0.7217848433726648746954056526947124540105e-11), SC_(0.9999999999927821515662733512530459434731) }, + { SC_(17), SC_(1), SC_(0.3082362115383148193359375), SC_(0.120385247067193425087370035830263511127e-9), SC_(0.05882352929137945881515951608910055240503), SC_(0.2046549200142288226485290609114479689158e-8), SC_(0.9999999979534507998577117735147093908855) }, + { SC_(17), SC_(1), SC_(0.632396042346954345703125), SC_(0.2434257495519355800604913767586915292838e-4), SC_(0.05879918683680951232434689203879471908237), SC_(0.0004138237742382904861028353404897755997824), SC_(0.9995861762257617095138971646595102244002) }, + { SC_(17), SC_(1), SC_(0.81474220752716064453125), SC_(0.001806736177003102370328013705923400337458), SC_(0.05701679323476160351202492747054718789784), SC_(0.03071451500905274029557623300069780573679), SC_(0.9692854849909472597044237669993021942632) }, + { SC_(17), SC_(1), SC_(0.8350250720977783203125), SC_(0.002744371143035658271490246601262371009535), SC_(0.05607915826872904761086269457520821722576), SC_(0.04665430943160619061533419222146030716209), SC_(0.9533456905683938093846658077785396928379) }, + { SC_(17), SC_(1), SC_(0.905801355838775634765625), SC_(0.01094237282157960237920849645137318344709), SC_(0.04788115659018510350314444472509740478821), SC_(0.1860203379668532404465444396733441186005), SC_(0.8139796620331467595534555603266558813995) }, + { SC_(17), SC_(1), SC_(0.913384497165679931640625), SC_(0.01260848458627428532642359161103272440478), SC_(0.04621504482549042055592934956543786383051), SC_(0.2143442379666628505492010573875563148813), SC_(0.7856557620333371494507989426124436851187) }, + { SC_(17), SC_(1), SC_(0.9688708782196044921875), SC_(0.03436144493442266427804911831798360955278), SC_(0.02446208447734204160430382285848697868251), SC_(0.5841445638851852927268350114057213623973), SC_(0.4158554361148147072731649885942786376027) }, + { SC_(17), SC_(5), SC_(0.12707412242889404296875), SC_(0.2072886826056739210676158786753561537425e-16), SC_(0.9828492800608294670979690114404614892549e-5), SC_(0.2109058701171429309902457757582411186253e-11), SC_(0.9999999999978909412988285706900975422424) }, + { SC_(17), SC_(5), SC_(0.1355634629726409912109375), SC_(0.6000032219902288940599088142213778413742e-16), SC_(0.9828492800569023217041234617105385598995e-5), SC_(0.6104732782139583882612542230295408847062e-11), SC_(0.9999999999938952672178604161173874577697) }, + { SC_(17), SC_(5), SC_(0.221111953258514404296875), SC_(0.1665764801691496286837173051298240558784e-12), SC_(0.9828492634052543370090628822794071350593e-5), SC_(0.1694832397481012897042481721043394856535e-7), SC_(0.9999999830516760251898710295751827895661) }, + { SC_(17), SC_(5), SC_(0.3082362115383148193359375), SC_(0.3049846216354742482291073340070565260151e-10), SC_(0.9828462302166859991815434595777975774764e-5), SC_(0.310306603283013273860705256985479662394e-5), SC_(0.9999968969339671698672613929474301452034) }, + { SC_(17), SC_(5), SC_(0.632396042346954345703125), SC_(0.6692019827769954957507858649508563918272e-6), SC_(0.915929081785202804348947164156052008859e-5), SC_(0.06808795573764540671516370782942488358645), SC_(0.9319120442623545932848362921705751164135) }, + { SC_(17), SC_(5), SC_(0.81474220752716064453125), SC_(0.6420428797929947593508613437761402534226e-5), SC_(0.3408064002699075945731644068749973946191e-5), SC_(0.6532465280453825179015338742250339008448), SC_(0.3467534719546174820984661257749660991552) }, + { SC_(17), SC_(5), SC_(0.8350250720977783203125), SC_(0.7294732432948802710470403123163856404491e-5), SC_(0.2533760367680220828769854383347520075925e-5), SC_(0.742202551390375931776811165766306569875), SC_(0.257797448609624068223188834233693430125) }, + { SC_(17), SC_(5), SC_(0.905801355838775634765625), SC_(0.9416536979900673098657555375819158294469e-5), SC_(0.4119558207283504405827021306922181859475e-6), SC_(0.9580855550199939844229129717127202606708), SC_(0.04191444498000601557708702828727973932923) }, + { SC_(17), SC_(5), SC_(0.913384497165679931640625), SC_(0.9527818168102876696863407685813463158965e-5), SC_(0.3006746325261468423768498206979133214515e-6), SC_(0.9694078595136271895223674149930908091089), SC_(0.03059214048637281047763258500690919089108) }, + { SC_(17), SC_(5), SC_(0.9688708782196044921875), SC_(0.9824644124149441142529189225292052305136e-5), SC_(0.3848676479582396711068281219324175281132e-8), SC_(0.999608416411584889046632357727339861786), SC_(0.0003915835884151109533676422726601382139788) }, + { SC_(17), SC_(9), SC_(0.12707412242889404296875), SC_(0.1244642922277403464684296913190363760687e-16), SC_(0.5438691667087623067816019661448480585854e-7), SC_(0.228849693672571050893706133760257506359e-9), SC_(0.9999999997711503063274289491062938662397) }, + { SC_(17), SC_(9), SC_(0.1355634629726409912109375), SC_(0.3473875004841170634061875630941888362948e-16), SC_(0.5438691664858390985252252492070901868103e-7), SC_(0.6387335809213851518510304330411153940464e-9), SC_(0.9999999993612664190786148481489695669589) }, + { SC_(17), SC_(9), SC_(0.221111953258514404296875), SC_(0.6559652066288660376476746213822527959933e-13), SC_(0.5438685108680199701433046649386563676517e-7), SC_(0.1206108466211346833936932253656567115305e-5), SC_(0.9999987938915337886531660630677463434329) }, + { SC_(17), SC_(9), SC_(0.3082362115383148193359375), SC_(0.7799029262007009612686288524376477389297e-11), SC_(0.5437911765406065289132154497280339851306e-7), SC_(0.0001433989962589389341712999326827923050496), SC_(0.999856601003741061065828700067317207695) }, + { SC_(17), SC_(9), SC_(0.632396042346954345703125), SC_(0.2144615956148576964372762335664563056486e-7), SC_(0.3294075712183689025720660790468214442559e-7), SC_(0.3943257104711375121410499719433879639292), SC_(0.6056742895288624878589500280566120360708) }, + { SC_(17), SC_(9), SC_(0.81474220752716064453125), SC_(0.5275588763073187450219380232999144699815e-7), SC_(0.1631029052590785398740428931336327992294e-8), SC_(0.9700106357915500618000744498360284878795), SC_(0.02998936420844993819992555016397151212051) }, + { SC_(17), SC_(9), SC_(0.8350250720977783203125), SC_(0.535858053002699379738247951848024753814e-7), SC_(0.8011113830527219271094360765252996090506e-9), SC_(0.9852701452498707887886723984840465342808), SC_(0.0147298547501292112113276015159534657192) }, + { SC_(17), SC_(9), SC_(0.905801355838775634765625), SC_(0.5437101687973372982417510751808552342216e-7), SC_(0.1589980358893007675912374324225156828433e-10), SC_(0.9997076538888661501878972625358469499206), SC_(0.0002923461111338498121027374641530500794411) }, + { SC_(17), SC_(9), SC_(0.913384497165679931640625), SC_(0.5437851920796593979896856662078551978212e-7), SC_(0.8397475356720101965664640542255208324087e-11), SC_(0.999845597510047942747180266528893675492), SC_(0.0001544024899520572528197334711063245080331) }, + { SC_(17), SC_(9), SC_(0.9688708782196044921875), SC_(0.5438691474578649132651660365571974039089e-7), SC_(0.1937536168574417627605608034599557752388e-14), SC_(0.9999999643749584140601123251818963296257), SC_(0.3562504158593988767481810367037428349266e-7) }, + { SC_(17), SC_(13), SC_(0.12707412242889404296875), SC_(0.7480859381334768217934506564841474824408e-17), SC_(0.1133490109071905413872273358182593709685e-8), SC_(0.6599845267364118859525914778083469867458e-8), SC_(0.9999999934001547326358811404740852219165) }, + { SC_(17), SC_(13), SC_(0.1355634629726409912109375), SC_(0.2013656534186665668941343374754947418964e-16), SC_(0.1133490096416199453340384886703666526977e-8), SC_(0.1776510006378100150175895068012377667111e-7), SC_(0.9999999822348999362189984982410493198762) }, + { SC_(17), SC_(13), SC_(0.221111953258514404296875), SC_(0.2593743880464816664577297209883706746282e-13), SC_(0.1133464179113960147040395803145001437459e-8), SC_(0.228828098506324822200094371415670544869e-4), SC_(0.9999771171901493675177799905628584329455) }, + { SC_(17), SC_(13), SC_(0.3082362115383148193359375), SC_(0.2016157924511856207887042305963957574232e-11), SC_(0.1131473958628252938999154533811136316952e-8), SC_(0.001778716810203437340395491392493446128457), SC_(0.9982212831897965626596045086075065538715) }, + { SC_(17), SC_(13), SC_(0.632396042346954345703125), SC_(0.8648988279883846099451499930880836988007e-9), SC_(0.2685912885643801852618915830290165757255e-9), SC_(0.7630404671006436040361355793113438954279), SC_(0.2369595328993563959638644206886561045721) }, + { SC_(17), SC_(13), SC_(0.81474220752716064453125), SC_(0.1132319700032117413861065428842827360015e-8), SC_(0.1170416520647381345976147274272914511025e-11), SC_(0.9989674223854664747757331589415663961567), SC_(0.00103257761453352522426684105843360384332) }, + { SC_(17), SC_(13), SC_(0.8350250720977783203125), SC_(0.1133121388357000035297853252804201648485e-8), SC_(0.3687281957647599091883233128986260407203e-12), SC_(0.9996746965938387206558566668001120801038), SC_(0.0003253034061612793441433331998879198961749) }, + { SC_(17), SC_(13), SC_(0.905801355838775634765625), SC_(0.1133489293975572258778417156056945100609e-8), SC_(0.8225771925364286244200601551739172811034e-15), SC_(0.9999992742969872219992545742714733470761), SC_(0.7257030127780007454257285266529239235638e-6) }, + { SC_(17), SC_(13), SC_(0.913384497165679931640625), SC_(0.1133489804441014210937702402834489042667e-8), SC_(0.3121117505842693391732826112318588764036e-15), SC_(0.9999997246453709420232879800963218049801), SC_(0.2753546290579767120199036781950199090432e-6) }, + { SC_(17), SC_(13), SC_(0.9688708782196044921875), SC_(0.1133490116551524144098833195337430127658e-8), SC_(0.1240651108208380779670146867996491316445e-20), SC_(0.9999999999989054592624225783782508085239), SC_(0.1094540737577421621749191476133991390967e-11) }, + { SC_(17), SC_(17), SC_(0.12707412242889404296875), SC_(0.4501104401384726468399319000167966894684e-17), SC_(0.5041426754498631042555739446805936003823e-10), SC_(0.8928234443749658154706991623172726301659e-7), SC_(0.9999999107176555625034184529300837682727) }, + { SC_(17), SC_(17), SC_(0.1355634629726409912109375), SC_(0.1168682688037678139679248262862148551892e-16), SC_(0.5041426035926383143350246607489573158471e-10), SC_(0.2318158411509388505946494168468409133769e-6), SC_(0.9999997681841588490611494053505831531591) }, + { SC_(17), SC_(17), SC_(0.221111953258514404296875), SC_(0.1030247405718712763002286322402480344816e-13), SC_(0.5040396957203352468265384000415433540275e-10), SC_(0.0002043562991005443923015193050752450454678), SC_(0.9997956437008994556076984806949247549545) }, + { SC_(17), SC_(17), SC_(0.3082362115383148193359375), SC_(0.5278696597815982566181527044888823132706e-12), SC_(0.4988640238630911355366571016288947789293e-10), SC_(0.01047063933203278303207485718689316034032), SC_(0.9895293606679672169679251428131068396597) }, + { SC_(17), SC_(17), SC_(0.632396042346954345703125), SC_(0.4742477090789729780152900993851558840539e-10), SC_(0.2989501138193414008754852928862771800809e-11), SC_(0.9407012931683255408021435963751752546931), SC_(0.05929870683167445919785640362482474530688) }, + { SC_(17), SC_(17), SC_(0.81474220752716064453125), SC_(0.5041328740203105582709342181622064217828e-10), SC_(0.9846440596559831904410511577180279161972e-15), SC_(0.9999804689422321563458158562070375935769), SC_(0.1953105776784365418414379296240642308666e-4) }, + { SC_(17), SC_(17), SC_(0.8350250720977783203125), SC_(0.5041407495403353117704013165711366403818e-10), SC_(0.1970920571806332437312102646961680228837e-15), SC_(0.9999960905503703307680905656096045059951), SC_(0.3909449629669231909434390395494004921116e-5) }, + { SC_(17), SC_(17), SC_(0.905801355838775634765625), SC_(0.5041427199795417997300798478198323183398e-10), SC_(0.4813653183727587808539512837222375584088e-19), SC_(0.9999999990451804641100923558736620168195), SC_(0.9548195358899076441263379831805185708274e-9) }, + { SC_(17), SC_(17), SC_(0.913384497165679931640625), SC_(0.504142720329995303942201460083421863852e-10), SC_(0.1309118141606371685903617382099799305512e-19), SC_(0.9999999997403278697727650705821917333137), SC_(0.2596721302272349294178082666862977072081e-9) }, + { SC_(17), SC_(17), SC_(0.9688708782196044921875), SC_(0.5041427204609071092682889105538356630829e-10), SC_(0.8834549718119947938979048025202066343997e-27), SC_(0.999999999999999982476093852861636365994), SC_(0.1752390614713836363400603388309671996062e-16) }, + { SC_(17), SC_(21), SC_(0.12707412242889404296875), SC_(0.2711268431152249676576763823198939186526e-17), SC_(0.3698341570105018748890838459839222530473e-11), SC_(0.7331033091774162812828385468516624505236e-6), SC_(0.9999992668966908225837187171614531483375) }, + { SC_(17), SC_(21), SC_(0.1355634629726409912109375), SC_(0.6791714635253686583713400912091235361114e-17), SC_(0.3698337489658814647453931323202133638177e-11), SC_(0.1836420332595821841512612682072643724824e-5), SC_(0.9999981635796674041781584873873179273563) }, + { SC_(17), SC_(21), SC_(0.221111953258514404296875), SC_(0.4112805893318977010672080066828094638943e-14), SC_(0.3694231475480130924129842956536217634773e-11), SC_(0.001112066800820287334910801652214218852126), SC_(0.9988879331991797126650891983477857811479) }, + { SC_(17), SC_(21), SC_(0.3082362115383148193359375), SC_(0.1402814460086186503576777382896402277517e-12), SC_(0.3558062835364831250782837298313405501661e-11), SC_(0.03793087807296363701926444271654541412587), SC_(0.9620691219270363629807355572834545858741) }, + { SC_(17), SC_(21), SC_(0.632396042346954345703125), SC_(0.3659745883607275711892273487346974759411e-11), SC_(0.3859839776617418924824154925607097000145e-13), SC_(0.9895633302825339056166638074789896052754), SC_(0.01043666971746609438333619252101039472461) }, + { SC_(17), SC_(21), SC_(0.81474220752716064453125), SC_(0.3698343381338226030593944246582262360824e-11), SC_(0.9000352238705465707900207833685881492368e-18), SC_(0.9999997566383345099765792000962586833127), SC_(0.2433616654900234207999037413166873158777e-6) }, + { SC_(17), SC_(21), SC_(0.8350250720977783203125), SC_(0.369834416737018620302670818336307728771e-11), SC_(0.1140032636981138068532399684417027819878e-18), SC_(0.9999999691745129645484100977773885450412), SC_(0.3082548703545158990222261145495879709173e-7) }, + { SC_(17), SC_(21), SC_(0.905801355838775634765625), SC_(0.3698344281370436144852353276093587078393e-11), SC_(0.3013756288161760509458651019578997758205e-23), SC_(0.9999999999991851066155900052465638261216), SC_(0.8148933844099947534361738784155636013807e-12) }, + { SC_(17), SC_(21), SC_(0.913384497165679931640625), SC_(0.3698344281372863032229302970363453884603e-11), SC_(0.5868689112120662395918448096714694350908e-24), SC_(0.9999999999998413157709065091687919246427), SC_(0.1586842290934908312080753573177164206544e-12) }, + { SC_(17), SC_(21), SC_(0.9688708782196044921875), SC_(0.3698344281373449901139847027507109107661e-11), SC_(0.6680090959366217516696915384601178591235e-33), SC_(0.9999999999999999999998193761734674025602), SC_(0.1806238265325974397859125348699804430501e-21) }, + { SC_(17), SC_(25), SC_(0.12707412242889404296875), SC_(0.1635078018707154843774100627777225548757e-17), SC_(0.388056095087620461893434223124058348189e-12), SC_(0.4213491683335970610750365334069702743563e-5), SC_(0.9999957865083166640293892496346659302973) }, + { SC_(17), SC_(25), SC_(0.1355634629726409912109375), SC_(0.3952463048604918595110443980423528372043e-17), SC_(0.3880537777025905641296828867807057018862e-12), SC_(0.1018524498125019460342412953940261882694e-4), SC_(0.9999898147550187498053965758704605973812) }, + { SC_(17), SC_(25), SC_(0.221111953258514404296875), SC_(0.1651047356806530453504567518298165542128e-14), SC_(0.3864066828088326385947734297063879598725e-12), SC_(0.004254643648257682729347076732373945962158), SC_(0.9957453563517423172706529232676260540378) }, + { SC_(17), SC_(25), SC_(0.3082362115383148193359375), SC_(0.3793817188476325924283048784540469200569e-13), SC_(0.3501195582808759098054475093792814334089e-12), SC_(0.09776424726436881070074303808691707268047), SC_(0.9022357527356311892992569619130829273195) }, + { SC_(17), SC_(25), SC_(0.632396042346954345703125), SC_(0.3875161134822392363264510132203724015409e-12), SC_(0.5416166833999327218269840043137238737227e-15), SC_(0.9986042883795440739995473383335659413325), SC_(0.001395711620455926000452661666434058667451) }, + { SC_(17), SC_(25), SC_(0.81474220752716064453125), SC_(0.3880577293002868033474262095290670830119e-12), SC_(0.8653523657008517876956190424026418709787e-21), SC_(0.9999999977700421910639856878750000401766), SC_(0.2229957808936014312124999959823426791235e-8) }, + { SC_(17), SC_(25), SC_(0.8350250720977783203125), SC_(0.3880577300964208773979263728082734821661e-12), SC_(0.6921829165035162441641264324850951527341e-22), SC_(0.9999999998216288807832628912014174353462), SC_(0.1783711192167371087985825646538207568632e-9) }, + { SC_(17), SC_(25), SC_(0.905801355838775634765625), SC_(0.388057730165638972154206999403000934154e-12), SC_(0.1968940709978216851912606030005141820729e-27), SC_(0.9999999999999994926165472498663750651681), SC_(0.5073834527501336249348318555685731073304e-15) }, + { SC_(17), SC_(25), SC_(0.913384497165679931640625), SC_(0.3880577301656391416096176900781384745912e-12), SC_(0.2743866030714654765082337042105642323807e-28), SC_(0.9999999999999999292923238626516035897591), SC_(0.7070767613734839641024088653989350616353e-16) }, + { SC_(17), SC_(25), SC_(0.9688708782196044921875), SC_(0.388057730165639169048277996699707178075e-12), SC_(0.5249789473396122787512390343100361600527e-39), SC_(0.9999999999999999999999999986471627633457), SC_(0.1352837236654271628642101444763991444219e-26) }, + { SC_(17), SC_(29), SC_(0.12707412242889404296875), SC_(0.9872918140438641934896720843309209173182e-18), SC_(0.5332618492967971086759946977739684910434e-13), SC_(0.1851386025013964310926802802434585977741e-4), SC_(0.9999814861397498603568907319719756541402) }, + { SC_(17), SC_(29), SC_(0.1355634629726409912109375), SC_(0.2303553460733769401164061314339908141253e-17), SC_(0.5332486866803302096239179538816684011712e-13), SC_(0.4319661749859880812142712173247177547481e-4), SC_(0.9999568033825014011918785728782675282245) }, + { SC_(17), SC_(29), SC_(0.221111953258514404296875), SC_(0.6669288563421073059003544198162253767829e-15), SC_(0.5266024336515164742589260502966495464848e-13), SC_(0.01250636080180712552838124285848886950454), SC_(0.9874936391981928744716187571415111304955) }, + { SC_(17), SC_(29), SC_(0.3082362115383148193359375), SC_(0.1047320132133571602062681587723165985874e-13), SC_(0.4285397090015803871116614357224952016652e-13), SC_(0.1963952125163397561947275799506982155343), SC_(0.8036047874836602438052724200493017844657) }, + { SC_(17), SC_(29), SC_(0.632396042346954345703125), SC_(0.5331916477652752734159824119908298219052e-13), SC_(0.8007444966227390194718250398197834742178e-17), SC_(0.9998498430606264182564597756927830601236), SC_(0.0001501569393735817435402243072169398763983) }, + { SC_(17), SC_(29), SC_(0.81474220752716064453125), SC_(0.5332717222063306143030072327764345645794e-13), SC_(0.8606933014922361718377235673235865529297e-24), SC_(0.9999999999838601361062732312683656701923), SC_(0.1613986389372676873163432980773744372773e-10) }, + { SC_(17), SC_(29), SC_(0.8350250720977783203125), SC_(0.5332717222145033077768037083241680090662e-13), SC_(0.4342395411258861706437911864568403953555e-25), SC_(0.9999999999991857067925479386551151214209), SC_(0.814293207452061344884878579120777138097e-12) }, + { SC_(17), SC_(29), SC_(0.905801355838775634765625), SC_(0.5332717222149375471854744105793085833251e-13), SC_(0.1324551839155032169275189467197797815682e-31), SC_(0.9999999999999999997516178368405655607208), SC_(0.2483821631594344392791716377955083237946e-18) }, + { SC_(17), SC_(29), SC_(0.913384497165679931640625), SC_(0.533271722214937547304723929001563980227e-13), SC_(0.1320566549324782002564274249945202440174e-32), SC_(0.9999999999999999999752365165015721242023), SC_(0.2476348349842787579770193074692823319967e-19) }, + { SC_(17), SC_(29), SC_(0.9688708782196044921875), SC_(0.5332717222149375473179295944948075619707e-13), SC_(0.4238281868008054198963544417631769831786e-45), SC_(0.9999999999999999999999999999999920523034), SC_(0.7947696627161107520894487683797235062379e-32) }, + { SC_(17), SC_(33), SC_(0.12707412242889404296875), SC_(0.5969311584398026290678227253272761407527e-18), SC_(0.9050192743391369614932500367175101435504e-14), SC_(0.6595348913237167548633505424790158644717e-4), SC_(0.9999340465108676283245136649457520984136) }, + { SC_(17), SC_(33), SC_(0.1355634629726409912109375), SC_(0.1344652719402168706639521004401611464681e-17), SC_(0.904944502183040724885492866889602710018e-14), SC_(0.0001485674474552467569456352056677591839051), SC_(0.9998514325525447532430543647943322408161) }, + { SC_(17), SC_(33), SC_(0.221111953258514404296875), SC_(0.2712733411770249176072453333149679788065e-15), SC_(0.8779516333372784499954322856585460732838e-14), SC_(0.02997233953406592476132519429963183225053), SC_(0.9700276604659340752386748057003681677495) }, + { SC_(17), SC_(33), SC_(0.3082362115383148193359375), SC_(0.2961604990065722574684347821996474574634e-14), SC_(0.6089184684484086842877220367903954137011e-14), SC_(0.3272206179305602099582951900078086200385), SC_(0.6727793820694397900417048099921913799615) }, + { SC_(17), SC_(33), SC_(0.632396042346954345703125), SC_(0.9050667016774727872871710422830481962572e-14), SC_(0.1226577750815446898577670699467490721005e-18), SC_(0.999986447837206244023572541086785884727), SC_(0.1355216279375597642745891321411527296089e-4) }, + { SC_(17), SC_(33), SC_(0.81474220752716064453125), SC_(0.9050789674548932329625958331870154398538e-14), SC_(0.8770879356098580302743131065084755448001e-27), SC_(0.9999999999999030926618396438649665912269), SC_(0.9690733816035613503340877313536872448214e-13) }, + { SC_(17), SC_(33), SC_(0.8350250720977783203125), SC_(0.9050789674549781527255385047024797101036e-14), SC_(0.2789030618314287563161060856341907161129e-28), SC_(0.9999999999999969184670966812459130358843), SC_(0.3081532903318754086964115674915156397409e-14) }, + { SC_(17), SC_(33), SC_(0.905801355838775634765625), SC_(0.9050789674549809417560657905473231961528e-14), SC_(0.9102844271967501166315561751329566240893e-36), SC_(0.9999999999999999999998994248612630556906), SC_(0.1005751387369443094387636644344224842611e-21) }, + { SC_(17), SC_(33), SC_(0.913384497165679931640625), SC_(0.9050789674549809417561503275247686885427e-14), SC_(0.6491465274182621783969415182857343112471e-37), SC_(0.9999999999999999999999928277360234807242), SC_(0.717226397651927576548015934282449610752e-23) }, + { SC_(17), SC_(33), SC_(0.9688708782196044921875), SC_(0.9050789674549809417561568189900428711295e-14), SC_(0.3490234302127337406050804897615799747808e-51), SC_(0.9999999999999999999999999999999999999614), SC_(0.3856276002017407746236199330460677229646e-37) }, + { SC_(17), SC_(37), SC_(0.12707412242889404296875), SC_(0.3614159584396375640916646004431432036295e-18), SC_(0.1820305418428503156737843532961529889356e-14), SC_(0.0001985074652943485929292623851541803415466), SC_(0.9998014925347056514070707376148458196585) }, + { SC_(17), SC_(37), SC_(0.1355634629726409912109375), SC_(0.7862226787631134729950927215512551123252e-18), SC_(0.1819880611708179680828940104840421777448e-14), SC_(0.000431832262725789341525539305960794836374), SC_(0.9995681677372742106584744606940392051636) }, + { SC_(17), SC_(37), SC_(0.221111953258514404296875), SC_(0.1111960293022607992333155420889507222058e-15), SC_(0.1709470805084681995068619655473022310354e-14), SC_(0.06107434221467700037019281594471733535258), SC_(0.9389256577853229996298071840552826646474) }, + { SC_(17), SC_(37), SC_(0.3082362115383148193359375), SC_(0.861204317266186416775713314295822636171e-15), SC_(0.9594625171207563775262218832661503963891e-15), SC_(0.4730158758322041977901065038596973313215), SC_(0.5269841241677958022098934961403026686785) }, + { SC_(17), SC_(37), SC_(0.632396042346954345703125), SC_(0.1820664906975209469063706519848260034022e-14), SC_(0.1927411733325238228677713712998537794419e-20), SC_(0.9999989413704380602732790539082945309573), SC_(0.1058629561939726720946091705469042663754e-5) }, + { SC_(17), SC_(37), SC_(0.81474220752716064453125), SC_(0.1820666834386941884080032325802373420234e-14), SC_(0.9102219028717595996123263795638338787183e-30), SC_(0.999999999999999500061249164100551532283), SC_(0.4999387508358994484677170243702880150121e-15) }, + { SC_(17), SC_(37), SC_(0.8350250720977783203125), SC_(0.1820666834386942776068403745802663174057e-14), SC_(0.1823353145175930985850276166513865052584e-31), SC_(0.9999999999999999899852454565643102436952), SC_(0.100147545434356897563048345285065794268e-16) }, + { SC_(17), SC_(37), SC_(0.905801355838775634765625), SC_(0.1820666834386942794301935133978338907528e-14), SC_(0.6358363412503227119154892436393887532953e-40), SC_(0.9999999999999999999999999650767329177816), SC_(0.3492326708221838495938821019002890628759e-25) }, + { SC_(17), SC_(37), SC_(0.913384497165679931640625), SC_(0.1820666834386942794301935194319124749941e-14), SC_(0.3242848282619390744620779136039336345006e-41), SC_(0.9999999999999999999999999982188678228374), SC_(0.1781132177162620013414483640719099153548e-26) }, + { SC_(17), SC_(37), SC_(0.9688708782196044921875), SC_(0.182066683438694279430193519756197303256e-14), SC_(0.2918334629915971906488165343385233887635e-57), SC_(1), SC_(0.1602893277780081703084482349145795656061e-42) }, + { SC_(21), SC_(1), SC_(0.12707412242889404296875), SC_(0.7294242668802688484011545133745007323249e-20), SC_(0.04761904761904761904032480495024493056361), SC_(0.1531790960448564581642424478086451537882e-18), SC_(0.9999999999999999998468209039551435418358) }, + { SC_(21), SC_(1), SC_(0.1355634629726409912109375), SC_(0.2836458586643004639127948800546815158699e-19), SC_(0.04761904761904761901925446175261757265634), SC_(0.5956563031950309742168692481148311833269e-18), SC_(0.9999999999999999994043436968049690257831) }, + { SC_(21), SC_(1), SC_(0.221111953258514404296875), SC_(0.8215563328332255052635416331346604662141e-15), SC_(0.04761904761904679749128621439354235550599), SC_(0.172526829894977356105343742958278697905e-13), SC_(0.9999999999999827473170105022643894656257) }, + { SC_(21), SC_(1), SC_(0.3082362115383148193359375), SC_(0.8797059470622085225222899933145876991794e-12), SC_(0.0476190476181679131005568390965253290543), SC_(0.1847382488830637897296808985960634168277e-10), SC_(0.9999999999815261751116936210270319101404) }, + { SC_(21), SC_(1), SC_(0.632396042346954345703125), SC_(0.3151756927556768320394368423111216198718e-5), SC_(0.04761589586212006227929865325062450783142), SC_(0.6618689547869213472828173688533554017307e-4), SC_(0.9999338131045213078652717182631146644598) }, + { SC_(21), SC_(1), SC_(0.81474220752716064453125), SC_(0.0006444737443095229527764243777579572840634), SC_(0.04697457387473809609484262324128966176356), SC_(0.01353394863049998200830491193291710296533), SC_(0.9864660513695000179916950880670828970347) }, + { SC_(21), SC_(1), SC_(0.8350250720977783203125), SC_(0.001080116332688790483344997826725696320845), SC_(0.04653893128635882856427404979232192272677), SC_(0.02268244298646460015024495436123962273775), SC_(0.9773175570135353998497550456387603772623) }, + { SC_(21), SC_(1), SC_(0.905801355838775634765625), SC_(0.005963112461447485812300694603202482005336), SC_(0.04165593515760013323531835301584513704228), SC_(0.1252253616903972020583145866672521221121), SC_(0.8747746383096027979416854133327478778879) }, + { SC_(21), SC_(1), SC_(0.913384497165679931640625), SC_(0.007104067230262221199213233815432633387676), SC_(0.04051498038878539784840581380361498565994), SC_(0.1491854118355066451834779101240853011412), SC_(0.8508145881644933548165220898759146988588) }, + { SC_(21), SC_(1), SC_(0.9688708782196044921875), SC_(0.02451120453688859590009625897873570467311), SC_(0.0231078430821590231475227886403119143745), SC_(0.5147352952746605139020214385534497981354), SC_(0.4852647047253394860979785614465502018646) }, + { SC_(21), SC_(5), SC_(0.12707412242889404296875), SC_(0.4349608451058638231780982467271012670049e-20), SC_(0.3764351590438542610677639662235097787999e-5), SC_(0.1155473485023727246272617992430544515799e-14), SC_(0.999999999999998844526514976272753727382) }, + { SC_(21), SC_(5), SC_(0.1355634629726409912109375), SC_(0.1629927342727793558364248343783282197776e-19), SC_(0.3764351590438530661012663442937745926498e-5), SC_(0.4329901985956383587794625725260289158392e-14), SC_(0.9999999999999956700980140436164122053743) }, + { SC_(21), SC_(5), SC_(0.221111953258514404296875), SC_(0.3185676126214388092443585016143970491664e-15), SC_(0.3764351590119979347664651911628971067367e-5), SC_(0.8462748629288521967576383595386457611106e-10), SC_(0.9999999999153725137071147803242361640461) }, + { SC_(21), SC_(5), SC_(0.3082362115383148193359375), SC_(0.2187555433481517304747161569809722895452e-12), SC_(0.3764351371683003612134360246157172588009e-5), SC_(0.5811241009043650720060834710199528871768e-7), SC_(0.9999999418875899095634927993916528980047) }, + { SC_(21), SC_(5), SC_(0.632396042346954345703125), SC_(0.8021407309836162851339428663693568572303e-7), SC_(0.3684137517340185331772696434236393883259e-5), SC_(0.02130886851857976661458319224510196491232), SC_(0.9786911314814202333854168077548980350877) }, + { SC_(21), SC_(5), SC_(0.81474220752716064453125), SC_(0.1864387696873891317722156093554928549939e-5), SC_(0.1899963893564655642563934627318401019043e-5), SC_(0.4952745916745492285528907662528667692913), SC_(0.5047254083254507714471092337471332307087) }, + { SC_(21), SC_(5), SC_(0.8350250720977783203125), SC_(0.2269070528404020041896562493365377049084e-5), SC_(0.1495281062034526918389528227507952519897e-5), SC_(0.6027785858705279241298218263625124130892), SC_(0.3972214141294720758701781736374875869108) }, + { SC_(21), SC_(5), SC_(0.905801355838775634765625), SC_(0.3462325313035738951349065531664375600095e-5), SC_(0.3020262774028080089370251892089539688866e-6), SC_(0.9197667194079440524258792584866413781653), SC_(0.08023328059205594757412074151335862183473) }, + { SC_(21), SC_(5), SC_(0.913384497165679931640625), SC_(0.3538459797671569545487073678420019491128e-5), SC_(0.2258917927669774147990170424533100778535e-6), SC_(0.9399918452514524497586411226722781778182), SC_(0.06000815474854755024135887732772182218178) }, + { SC_(21), SC_(5), SC_(0.9688708782196044921875), SC_(0.376088185709946033661553093198062469918e-5), SC_(0.3469733339086623670559788892704869801724e-8), SC_(0.9990782653384716384219157920806529513372), SC_(0.0009217346615283615780842079193470486628281) }, + { SC_(21), SC_(9), SC_(0.12707412242889404296875), SC_(0.259539437600598552093891429529556896292e-20), SC_(0.1109446386807446608598382519889795165152e-7), SC_(0.2339359888740464251991774822576093967734e-12), SC_(0.9999999999997660640111259535748008225177) }, + { SC_(21), SC_(9), SC_(0.1355634629726409912109375), SC_(0.9373229187590739712725669780042143907182e-20), SC_(0.1109446386806768825117224044470616489604e-7), SC_(0.8448564346188047655898153182792387429703e-12), SC_(0.9999999999991551435653811952344101846817) }, + { SC_(21), SC_(9), SC_(0.221111953258514404296875), SC_(0.1238403677878477177864808921312742640734e-15), SC_(0.1109446374423669369251211339793799843454e-7), SC_(0.111623571233742044958317556038925516996e-7), SC_(0.9999999888376428766257955041682443961074) }, + { SC_(21), SC_(9), SC_(0.3082362115383148193359375), SC_(0.5474381842910442973171512165238317442776e-13), SC_(0.1109440912425863237593009946929723818264e-7), SC_(0.4934336537579157083567480417318031784289e-5), SC_(0.9999950656634624208429164325195826819682) }, + { SC_(21), SC_(9), SC_(0.632396042346954345703125), SC_(0.2268049390630802092608338122240656863128e-8), SC_(0.8826414477446259387751493062178233702689e-8), SC_(0.2044307338867299250033467240233771071876), SC_(0.7955692661132700749966532759766228928124) }, + { SC_(21), SC_(9), SC_(0.81474220752716064453125), SC_(0.1027922570872574945279147403683643505545e-7), SC_(0.8152381593513120275683571475824555103677e-9), SC_(0.9265184718211523195860848879265837313625), SC_(0.07348152817884768041391511207341626863749) }, + { SC_(21), SC_(9), SC_(0.8350250720977783203125), SC_(0.1066191848543188276648014820003027613969e-7), SC_(0.4325453826451787138796829843886144261257e-9), SC_(0.9610125024707345975914126496163979412135), SC_(0.03898749752926540240858735038360205878649) }, + { SC_(21), SC_(9), SC_(0.905801355838775634765625), SC_(0.1108323206982855438357402329213271913987e-7), SC_(0.1123179824850709678580789228617142594687e-10), SC_(0.9989876213594398916483918502674307856446), SC_(0.001012378640560108351608149732569214355435) }, + { SC_(21), SC_(9), SC_(0.913384497165679931640625), SC_(0.1108836014392564269808286973758535822954e-7), SC_(0.6103724151418782276961446833532336281641e-11), SC_(0.9994498405489442812456208775263944553603), SC_(0.0005501594510557187543791224736055446397008) }, + { SC_(21), SC_(9), SC_(0.9688708782196044921875), SC_(0.1109446213766220023920848160285442954146e-7), SC_(0.1730414861241151349581564461024361935189e-14), SC_(0.9999998440289786133600672536549561351684), SC_(0.1559710213866399327463450438648316091245e-6) }, + { SC_(21), SC_(13), SC_(0.12707412242889404296875), SC_(0.154971731886196345053032330795508006275e-20), SC_(0.1342072242090598973629101879738917399882e-9), SC_(0.1154719746255993375055755979210527995326e-10), SC_(0.9999999999884528025374400662494424402079) }, + { SC_(21), SC_(13), SC_(0.1355634629726409912109375), SC_(0.5394551327045656113592192306613856320913e-20), SC_(0.1342072242052150633547264953108298709896e-9), SC_(0.4019568513376044761719434219030428226768e-10), SC_(0.9999999999598043148662395523828056578097) }, + { SC_(21), SC_(13), SC_(0.221111953258514404296875), SC_(0.4827432322777391554671178736010303161681e-16), SC_(0.1342071759362863869078566047126347031931e-9), SC_(0.3596998858423422958840028352739542846452e-6), SC_(0.9999996403001141576577041159971647260457) }, + { SC_(21), SC_(13), SC_(0.3082362115383148193359375), SC_(0.1379915212126827412253790026010786687836e-13), SC_(0.1341934250584883464076496135241619554293e-9), SC_(0.0001028197416527552045288692367430943009706), SC_(0.999897180258347244795471130763256905699) }, + { SC_(21), SC_(13), SC_(0.632396042346954345703125), SC_(0.7503858009968977096736667799928835409677e-10), SC_(0.5916864411091984371440547342513370919941e-10), SC_(0.5591247456391224046871518950452195698644), SC_(0.4408752543608775953128481049547804301356) }, + { SC_(21), SC_(13), SC_(0.81474220752716064453125), SC_(0.1336466248419378473896149772057057867239e-9), SC_(0.5605993686717672921571742187162765722699e-12), SC_(0.9958228823226980229643958229237819350312), SC_(0.004177117677301977035604177076218064968783) }, + { SC_(21), SC_(13), SC_(0.8350250720977783203125), SC_(0.1340149439729420917213971535993835022569e-9), SC_(0.1922802376675229603749978250385610392604e-12), SC_(0.9985672884690187754953868186109937663833), SC_(0.001432711530981224504613181389006233616743) }, + { SC_(21), SC_(13), SC_(0.905801355838775634765625), SC_(0.1342066517617575421675957834423935169831e-9), SC_(0.5724488520725141763679820285463131146605e-15), SC_(0.9999957345898818816355598612109392837074), SC_(0.4265410118118364440138789060716292619718e-5) }, + { SC_(21), SC_(13), SC_(0.913384497165679931640625), SC_(0.1342070003644248183967919050834916553298e-9), SC_(0.223846184796284980246340930407966363882e-15), SC_(0.9999983320854289855057644075477965931162), SC_(0.1667914571014494235592452203406883769538e-5) }, + { SC_(21), SC_(13), SC_(0.9688708782196044921875), SC_(0.1342072242095059488978071575123209025933e-9), SC_(0.1103665783964993912101160702826466812426e-20), SC_(0.9999999999917764055515146796121309624012), SC_(0.8223594448485320387869037598790270968534e-11) }, + { SC_(21), SC_(17), SC_(0.12707412242889404296875), SC_(0.9260000436175661541258328669440760090788e-21), SC_(0.3698344280447449857522948882477212862468e-11), SC_(0.2503823260266290225411970112378922978693e-9), SC_(0.9999999997496176739733709774588029887621) }, + { SC_(21), SC_(17), SC_(0.1355634629726409912109375), SC_(0.3107302064043854136454290789647130802048e-20), SC_(0.3698344278266147837096660900148754939765e-11), SC_(0.840187345373346072045990500205209325403e-9), SC_(0.9999999991598126546266539279540094997948) }, + { SC_(21), SC_(17), SC_(0.221111953258514404296875), SC_(0.1887434888364382560913154020209837309989e-16), SC_(0.3698325407024566257314905905062843631039e-11), SC_(0.5103459128644042888679017326677563177364e-5), SC_(0.9999948965408713559571113209826733224368) }, + { SC_(21), SC_(17), SC_(0.3082362115383148193359375), SC_(0.3507267075841475940235477564736915053109e-14), SC_(0.3694837014297608425200279559038308814359e-11), SC_(0.00094833439209693754178066631313124997715), SC_(0.9990516656079030624582193336868687500229) }, + { SC_(21), SC_(17), SC_(0.632396042346954345703125), SC_(0.31016544428767633074685341778080793418e-11), SC_(0.596689838496686593671980858794966387612e-12), SC_(0.8386602779243974094436642579616614263206), SC_(0.1613397220756025905563357420383385736794) }, + { SC_(21), SC_(17), SC_(0.81474220752716064453125), SC_(0.36978827664971293913296539378695655631e-11), SC_(0.461514876320509810861098733480166312779e-15), SC_(0.9998752104073585281364923916548208268665), SC_(0.0001247895926414718635076083451791731335068) }, + { SC_(21), SC_(17), SC_(0.8350250720977783203125), SC_(0.3698243321889224879904009334562147280343e-11), SC_(0.1009594842250212365057020408984490695063e-15), SC_(0.999972701437036703346638543849375881354), SC_(0.2729856296329665336145615062411864600013e-4) }, + { SC_(21), SC_(17), SC_(0.905801355838775634765625), SC_(0.3698344248139346854598434679502946524224e-11), SC_(0.3323410304654208035710009920518843722914e-19), SC_(0.9999999910137887340764366636278657479863), SC_(0.8986211265923563336372134252013700665689e-8) }, + { SC_(21), SC_(17), SC_(0.913384497165679931640625), SC_(0.3698344272051154114303280048406500855665e-11), SC_(0.9322295786837234988196544873746840436206e-20), SC_(0.9999999974793326208734616168489647491949), SC_(0.2520667379126538383151035250805066237702e-8) }, + { SC_(21), SC_(17), SC_(0.9688708782196044921875), SC_(0.3698344281373449116926704907271791277447e-11), SC_(0.7842138101293312544519649640324395031714e-27), SC_(0.9999999999999997879554334411239114076494), SC_(0.2120445665588760885923506395279432578781e-15) }, + { SC_(21), SC_(21), SC_(0.12707412242889404296875), SC_(0.5537238188173160071041484762857307462177e-21), SC_(0.1769376714444431089107949374237645933203e-12), SC_(0.3129485160305785980821502434793082864394e-8), SC_(0.9999999968705148396942140191784975652069) }, + { SC_(21), SC_(21), SC_(0.1355634629726409912109375), SC_(0.1791396548643944720235950259611457244773e-20), SC_(0.1769376702067703790841662242919628099946e-12), SC_(0.1012444963479853836965616194112630614685e-7), SC_(0.9999999898755503652014616303438380588737) }, + { SC_(21), SC_(21), SC_(0.221111953258514404296875), SC_(0.7403738049452549438072876591121232714065e-17), SC_(0.1769302682601174751786728716513219483733e-12), SC_(0.4184376320679324909484929111941015081877e-4), SC_(0.9999581562367932067509051507088805898492) }, + { SC_(21), SC_(21), SC_(0.3082362115383148193359375), SC_(0.8999673897926082009607253226117197705277e-15), SC_(0.1760377046083743195271502192053013498355e-12), SC_(0.00508635261009838454806473996973150930773), SC_(0.9949136473899016154519352600302684906923) }, + { SC_(21), SC_(21), SC_(0.632396042346954345703125), SC_(0.1696493299693199595978355217418133502399e-12), SC_(0.7288342028846968130275422786099719366157e-14), SC_(0.958808421369291694586675064153507033899), SC_(0.04119157863070830541332493584649296610104) }, + { SC_(21), SC_(21), SC_(0.81474220752716064453125), SC_(0.1769372555481242639678697466305729374431e-12), SC_(0.4164500426637602411978973401321628859766e-18), SC_(0.9999976463460948662495180278996121828891), SC_(0.2353653905133750481972100387817110888699e-5) }, + { SC_(21), SC_(21), SC_(0.8350250720977783203125), SC_(0.1769376142230299129665111855420530160018e-12), SC_(0.5777513701476159975898586005360424101021e-19), SC_(0.9999996734718143270238713091396741140826), SC_(0.3265281856729761286908603258859173938848e-6) }, + { SC_(21), SC_(21), SC_(0.905801355838775634765625), SC_(0.1769376719960963638484833537187039108669e-12), SC_(0.2070563879627590809209158739118880118508e-23), SC_(0.9999999999882977782162238359986984857169), SC_(0.1170222178377616400130151428313612835615e-10) }, + { SC_(21), SC_(21), SC_(0.913384497165679931640625), SC_(0.1769376719977508538264361894421514141562e-12), SC_(0.4160739016747550857616554498744349783537e-24), SC_(0.9999999999976484719337831820989686900055), SC_(0.2351528066216817901031309994503081031619e-11) }, + { SC_(21), SC_(21), SC_(0.9688708782196044921875), SC_(0.176937671998166927727518781372251355139e-12), SC_(0.5921631556617144669911484902390887465353e-33), SC_(0.9999999999999999999966532669443743485528), SC_(0.3346733055625651447232957850830323459183e-20) }, + { SC_(21), SC_(25), SC_(0.12707412242889404296875), SC_(0.3313708078488295609288064769052136957425e-21), SC_(0.1261881038477753118294269247938577302018e-13), SC_(0.2626006644388231491547209706334837962852e-7), SC_(0.9999999737399335561176850845279029366516) }, + { SC_(21), SC_(25), SC_(0.1355634629726409912109375), SC_(0.1033711565534185321631677773087683769502e-20), SC_(0.1261880968243677349758693177651447683771e-13), SC_(0.8191830345876737690279326818488998031541e-7), SC_(0.99999991808169654123262309720673181511) }, + { SC_(21), SC_(25), SC_(0.221111953258514404296875), SC_(0.291467091502045477544699190593995932416e-17), SC_(0.1261589604523331857699680641628630996607e-13), SC_(0.0002309782578234999245329049288897875443298), SC_(0.9997690217421765000754670950711102124557) }, + { SC_(21), SC_(25), SC_(0.3082362115383148193359375), SC_(0.2334899485425350468185864315872513996604e-15), SC_(0.1238532076760580398495366697660499852573e-13), SC_(0.018503324425315064816982021180534017551), SC_(0.981496675574684935183017978819465982449) }, + { SC_(21), SC_(25), SC_(0.632396042346954345703125), SC_(0.1252000174930032003560184401968988568645e-13), SC_(0.9880896684801899617040938850236423894235e-16), SC_(0.9921697084558394402732671794177686657498), SC_(0.007830291544160559726732820582231334250245) }, + { SC_(21), SC_(25), SC_(0.81474220752716064453125), SC_(0.1261881031913780283187869871217570271569e-13), SC_(0.3970105361998935546960165472097003124333e-21), SC_(0.9999999685381970511818761075725260477739), SC_(0.3146180294881812389242747395222612495931e-7) }, + { SC_(21), SC_(25), SC_(0.8350250720977783203125), SC_(0.1261881068131809989348861972254701362282e-13), SC_(0.3483023913828363368564523630257100201532e-22), SC_(0.9999999972398160237310440795511009467908), SC_(0.2760183976268955920448899053209204326659e-8) }, + { SC_(21), SC_(25), SC_(0.905801355838775634765625), SC_(0.126188107161482042062375233357163046047e-13), SC_(0.1348255347300724759453206924777950915085e-27), SC_(0.9999999999999893155117575750829334765532), SC_(0.1068448824242491706652344675124683726355e-13) }, + { SC_(21), SC_(25), SC_(0.913384497165679931640625), SC_(0.1261881071614831963660287482798789598213e-13), SC_(0.1939516937858020435394326376542651447466e-28), SC_(0.9999999999999984629954585371398015323787), SC_(0.1537004541462860198467621325840458049406e-14) }, + { SC_(21), SC_(25), SC_(0.9688708782196044921875), SC_(0.1261881071614833903177225294325481542283e-13), SC_(0.464937434502564519996863834839769996215e-39), SC_(0.9999999999999999999999999631552097134176), SC_(0.3684479028658242372195833727650323695252e-25) }, + { SC_(21), SC_(29), SC_(0.12707412242889404296875), SC_(0.198467883744500350835784531674247245132e-21), SC_(0.1219440178984669832476451107487647889377e-14), SC_(0.1627532492889119626924492722692009540408e-6), SC_(0.999999837246750711088037307550727730799) }, + { SC_(21), SC_(29), SC_(0.1355634629726409912109375), SC_(0.5970723496885531978845351762582949928191e-21), SC_(0.1219439780380203888423604058737003305329e-14), SC_(0.4896281611864080683553190751868761035065e-6), SC_(0.9999995103718388135919316446809248131239) }, + { SC_(21), SC_(29), SC_(0.221111953258514404296875), SC_(0.1151967189553619234639296833965926223126e-17), SC_(0.1218288410262999957742162646438213637401e-14), SC_(0.0009446687274371808200176375575263052044711), SC_(0.9990553312725628191799823624424736947955) }, + { SC_(21), SC_(29), SC_(0.3082362115383148193359375), SC_(0.6135506545478440235749010582024774519063e-16), SC_(0.1158085311997769174619311837451931818433e-14), SC_(0.05031411669585430569546657584574426399243), SC_(0.9496858833041456943045334241542557360076) }, + { SC_(21), SC_(29), SC_(0.632396042346954345703125), SC_(0.1218012898504042099142607809946950296164e-14), SC_(0.1427478948511477834194133325229267460058e-17), SC_(0.9988293983249156281964578045353646720229), SC_(0.001170601675084371803542195464635327977097) }, + { SC_(21), SC_(29), SC_(0.81474220752716064453125), SC_(0.1219440377060047211312008522556930079754e-14), SC_(0.3925063656647934207152494838703196478597e-24), SC_(0.9999999996781258248273272393010169379192), SC_(0.3218741751726727606989830620807842234154e-9) }, + { SC_(21), SC_(29), SC_(0.8350250720977783203125), SC_(0.1219440377430812955216249103740152681706e-14), SC_(0.2174062176055283953202688191751654714461e-25), SC_(0.9999999999821716402355237483259225719471), SC_(0.1782835976447625167407742805291814639081e-10) }, + { SC_(21), SC_(29), SC_(0.905801355838775634765625), SC_(0.1219440377452553567928452076435243489307e-14), SC_(0.9048349866836936074316844178763986508196e-32), SC_(0.9999999999999999925799161368272861604859), SC_(0.7420083863172713839514094987423517556924e-17) }, + { SC_(21), SC_(29), SC_(0.913384497165679931640625), SC_(0.1219440377452553576045365808104915092595e-14), SC_(0.9314361351672644710287372197227322870634e-33), SC_(0.9999999999999999992361773872757422928398), SC_(0.7638226127242577071602147547862669614168e-18) }, + { SC_(21), SC_(29), SC_(0.9688708782196044921875), SC_(0.1219440377452553576976801943271804464555e-14), SC_(0.375099069212898587315421817717697617128e-45), SC_(0.9999999999999999999999999999996924006486), SC_(0.3075993514307697887140591123591667881188e-30) }, + { SC_(21), SC_(33), SC_(0.12707412242889404296875), SC_(0.1189702296503024561057736571996474338538e-21), SC_(0.1497516985767483284496511182682366861476e-15), SC_(0.7944493202092911681780125869978627128266e-6), SC_(0.9999992055506797907088318219874130021373) }, + { SC_(21), SC_(33), SC_(0.1355634629726409912109375), SC_(0.3452203872057258601902387537040301998282e-21), SC_(0.1497514723265907730262470338031401817648e-15), SC_(0.2305283454055095545455093559199413917764e-5), SC_(0.9999976947165459449044545449064408005861) }, + { SC_(21), SC_(33), SC_(0.221111953258514404296875), SC_(0.4572714234940211682069698709933274949536e-18), SC_(0.1492945461234839575839002541709005583e-15), SC_(0.003053528371036782757400906381331415409256), SC_(0.9969464716289632172425990936186685845907) }, + { SC_(21), SC_(33), SC_(0.3082362115383148193359375), SC_(0.1636292677544220657122693080653504708949e-16), SC_(0.1333888907715357721808802932353588387055e-15), SC_(0.1092669661275334127960112829500737624499), SC_(0.8907330338724665872039887170499262375501) }, + { SC_(21), SC_(33), SC_(0.632396042346954345703125), SC_(0.1497303076034594041038282556117706249953e-15), SC_(0.2150994351857464827896843012326079972561e-19), SC_(0.9998563627215287262923340851908352239751), SC_(0.0001436372784712737076659148091647760249308) }, + { SC_(21), SC_(33), SC_(0.81474220752716064453125), SC_(0.1497518175465797782802865698098713227397e-15), SC_(0.3982004718206542320225630552455081633154e-27), SC_(0.9999999999973409306254614470542562071476), SC_(0.2659069374538552945743792852394028428809e-11) }, + { SC_(21), SC_(33), SC_(0.8350250720977783203125), SC_(0.1497518175469640676880572856605256677815e-15), SC_(0.1391106404993838136821801351422199926433e-28), SC_(0.9999999999999071058750550763556485062567), SC_(0.9289412494492364435149374328007959582022e-13) }, + { SC_(21), SC_(33), SC_(0.905801355838775634765625), SC_(0.1497518175469779787514865075964397075416e-15), SC_(0.6207164454541782533940128513100306250127e-36), SC_(0.99999999999999999999585503230864322532), SC_(0.4144967691356774679955275709120880890447e-20) }, + { SC_(21), SC_(33), SC_(0.913384497165679931640625), SC_(0.1497518175469779787520615124015918198119e-15), SC_(0.4571164030206598304394256583843189511998e-37), SC_(0.9999999999999999999996947506811546645367), SC_(0.3052493188453354633183747048852830148141e-21) }, + { SC_(21), SC_(33), SC_(0.9688708782196044921875), SC_(0.1497518175469779787521072240418938854863e-15), SC_(0.3087343269887266708010726965442317880614e-51), SC_(0.9999999999999999999999999999999999979384), SC_(0.2061639932295813330393697572077665859135e-35) }, + { SC_(21), SC_(37), SC_(0.12707412242889404296875), SC_(0.7138001376200267680117553743248179098422e-22), SC_(0.2233134000857067342526901293597305925957e-16), SC_(0.3196395092093969992992531501495110926677e-5), SC_(0.9999968036049079060300070074684985048891) }, + { SC_(21), SC_(37), SC_(0.1355634629726409912109375), SC_(0.1998164535489254855020200979611557065138e-21), SC_(0.2233121157213088650246031209141253058565e-16), SC_(0.8947775403531789011655368788675514159923e-5), SC_(0.9999910522245964682109883446312113244858) }, + { SC_(21), SC_(37), SC_(0.221111953258514404296875), SC_(0.1823826053540969463557990694948405447136e-18), SC_(0.2214902878323033848159001504201565119664e-16), SC_(0.008167088151326112263236570546248161384273), SC_(0.9918329118486738877367634294537518386157) }, + { SC_(21), SC_(37), SC_(0.3082362115383148193359375), SC_(0.4439444640175211794236098190877517013073e-17), SC_(0.1789196674840922363370971592063297472828e-16), SC_(0.1987982113143375081211298208381957117004), SC_(0.8012017886856624918788701791618042882996) }, + { SC_(21), SC_(37), SC_(0.632396042346954345703125), SC_(0.2233107749113890525733799193571189340879e-16), SC_(0.3338974455301706078221757985983325689918e-21), SC_(0.9999850480813899270513554928186726856957), SC_(0.1495191861007294864450718132731430431042e-4) }, + { SC_(21), SC_(37), SC_(0.81474220752716064453125), SC_(0.2233141138858402360592903579132301230911e-16), SC_(0.4118220167783201874794322527733737277681e-30), SC_(0.9999999999999815586211900229943333345898), SC_(0.1844137880997700566666541019848807318769e-13) }, + { SC_(21), SC_(37), SC_(0.8350250720977783203125), SC_(0.2233141138858442635993091128161282217038e-16), SC_(0.9068014902829897669570979227246228322515e-32), SC_(0.9999999999999995939345370948938685601712), SC_(0.4060654629051061314398288321849254150616e-15) }, + { SC_(21), SC_(37), SC_(0.905801355838775634765625), SC_(0.2233141138858443542794577081541553801987e-16), SC_(0.4329609495372148580647268796255728983386e-40), SC_(0.9999999999999999999999980612020350915232), SC_(0.1938797964908476817862602747865866229882e-23) }, + { SC_(21), SC_(37), SC_(0.913384497165679931640625), SC_(0.2233141138858443542794581183087193431472e-16), SC_(0.2280638557426637886745925383933352153482e-41), SC_(0.9999999999999999999999998978730668768892), SC_(0.1021269331231108162898587042022721416594e-24) }, + { SC_(21), SC_(37), SC_(0.9688708782196044921875), SC_(0.2233141138858443542794581411151049174136e-16), SC_(0.258040407736505315612211991409378862823e-57), SC_(1), SC_(0.1155504250252685100918600480904214206e-40) }, + { SC_(25), SC_(1), SC_(0.12707412242889404296875), SC_(0.1597673273661498548434357104638852421695e-23), SC_(0.03999999999999999999999840232672633850145), SC_(0.3994183184153746371085892761597131054237e-22), SC_(0.9999999999999999999999600581681584625363) }, + { SC_(25), SC_(1), SC_(0.1355634629726409912109375), SC_(0.8046858242348116713348913655426886675354e-23), SC_(0.03999999999999999999999195314175765188329), SC_(0.2011714560587029178337228413856721668838e-21), SC_(0.9999999999999999999997988285439412970822) }, + { SC_(25), SC_(1), SC_(0.221111953258514404296875), SC_(0.1649550128790510916897395121185273199834e-17), SC_(0.0399999999999999983504498712094890831026), SC_(0.4123875321976277292243487802963182999585e-16), SC_(0.9999999999999999587612467802372270775651) }, + { SC_(25), SC_(1), SC_(0.3082362115383148193359375), SC_(0.66703933817976178521321519828444827342e-14), SC_(0.03999999999999332960661820238214786784802), SC_(0.166759834544940446303303799571112068355e-12), SC_(0.9999999999998332401654550595536966962004) }, + { SC_(25), SC_(1), SC_(0.632396042346954345703125), SC_(0.4234367772775465006548723909339369376012e-6), SC_(0.03999957656322272245349934512760906606306), SC_(0.1058591943193866251637180977334842344003e-4), SC_(0.9999894140805680613374836281902266515766) }, + { SC_(25), SC_(1), SC_(0.81474220752716064453125), SC_(0.0002385422859244572859877041998679867831854), SC_(0.03976145771407554271401229580013201321681), SC_(0.005963557148111432149692604996699669579636), SC_(0.9940364428518885678503073950033003304204) }, + { SC_(25), SC_(1), SC_(0.8350250720977783203125), SC_(0.0004411109936915462521507520548180191069017), SC_(0.0395588890063084537478492479451819808931), SC_(0.01102777484228865630376880137045047767254), SC_(0.9889722251577113436962311986295495223275) }, + { SC_(25), SC_(1), SC_(0.905801355838775634765625), SC_(0.003371973491045919734247811521628730656085), SC_(0.03662802650895408026575218847837126934392), SC_(0.08429933727614799335619528804071826640212), SC_(0.9157006627238520066438047119592817335979) }, + { SC_(25), SC_(1), SC_(0.913384497165679931640625), SC_(0.004153372596466300397076080323237859154679), SC_(0.03584662740353369960292391967676214084532), SC_(0.103834314911657509926902008080946478867), SC_(0.896165685088342490073097991919053521133) }, + { SC_(25), SC_(1), SC_(0.9688708782196044921875), SC_(0.01814293519667633789459798895390515379617), SC_(0.02185706480332366210540201104609484620383), SC_(0.4535733799169084473649497238476288449042), SC_(0.5464266200830915526350502761523711550958) }, + { SC_(25), SC_(5), SC_(0.12707412242889404296875), SC_(0.9487940470277985317723177449112695450859e-24), SC_(0.1684139615174097931769828326766989056119e-5), SC_(0.5633701852739310732031079689846890741334e-18), SC_(0.9999999999999999994366298147260689267969) }, + { SC_(25), SC_(5), SC_(0.1355634629726409912109375), SC_(0.4603548305942073532099496737452861883025e-23), SC_(0.1684139615174097928115074067852714055792e-5), SC_(0.2733471895360754711522378675281073064593e-17), SC_(0.9999999999999999972665281046392452884776) }, + { SC_(25), SC_(5), SC_(0.221111953258514404296875), SC_(0.6344759430783656841529448418424936121451e-18), SC_(0.1684139615173463456775544008110634643049e-5), SC_(0.3767359531013565841079148234650266445515e-12), SC_(0.9999999999996232640468986434158920851765) }, + { SC_(25), SC_(5), SC_(0.3082362115383148193359375), SC_(0.1637568762480553311414327139397252108032e-14), SC_(0.1684139613536529170238069062380460448494e-5), SC_(0.9723473919418905424850420971956033704468e-9), SC_(0.9999999990276526080581094575149579028044) }, + { SC_(25), SC_(5), SC_(0.632396042346954345703125), SC_(0.1022087253566025704798084955859225701084e-7), SC_(0.167391874263843767567064152423619533088e-5), SC_(0.006068898589861669128664828946653117406611), SC_(0.9939311014101383308713351710533468825934) }, + { SC_(25), SC_(5), SC_(0.81474220752716064453125), SC_(0.5975909401486118346260824166156026614746e-6), SC_(0.1086548675025486098092539957179184926416e-5), SC_(0.3548345604867419921051020869259294703171), SC_(0.6451654395132580078948979130740705296829) }, + { SC_(25), SC_(5), SC_(0.8350250720977783203125), SC_(0.7850543785110883794409623126964464521014e-6), SC_(0.8990852366630095532776600610983411357897e-6), SC_(0.4661456636004215025025573972213324920965), SC_(0.5338543363995784974974426027786675079035) }, + { SC_(25), SC_(5), SC_(0.905801355838775634765625), SC_(0.1461720628422142927272752673995526187651e-5), SC_(0.2224189867519550054458696997992614002405e-6), SC_(0.8679331661413579166413787190016935620722), SC_(0.1320668338586420833586212809983064379278) }, + { SC_(25), SC_(5), SC_(0.913384497165679931640625), SC_(0.1513813850912902376345766785400455845569e-5), SC_(0.1703257642611955563728555883943317423218e-6), SC_(0.8988648193258086085147076730011556697029), SC_(0.1011351806741913914852923269988443302971) }, + { SC_(25), SC_(5), SC_(0.9688708782196044921875), SC_(0.1681010394182010403168739226875575320462e-5), SC_(0.3129220992087529549883146919212267428793e-8), SC_(0.9981419468054232271415181344380447359075), SC_(0.001858053194576772858481865561955264092531) }, + { SC_(25), SC_(9), SC_(0.12707412242889404296875), SC_(0.5637170210157629032537918462938425448836e-24), SC_(0.2880981746387752498118354501481357038299e-8), SC_(0.195668376490953265194713839636793293315e-15), SC_(0.9999999999999998043316235090467348052862) }, + { SC_(25), SC_(9), SC_(0.1355634629726409912109375), SC_(0.2635102620919176084225519958499703296747e-23), SC_(0.2880981746387750426732754598068176066571e-8), SC_(0.9146543966212676036214064571230851631439e-15), SC_(0.9999999999999990853456033787323963785935) }, + { SC_(25), SC_(9), SC_(0.221111953258514404296875), SC_(0.2444880979179872528185530784916877690654e-18), SC_(0.28809817461432649639173882644257072136e-8), SC_(0.8486277229091525560360576590147094222489e-10), SC_(0.9999999999151372277090847443963942340985) }, + { SC_(25), SC_(9), SC_(0.3082362115383148193359375), SC_(0.4038650785814602843037667815639092866685e-15), SC_(0.2880981342522674480375091213477478728182e-8), SC_(0.1401831438494313323769462345712810126488e-6), SC_(0.999999859816856150568667623053765428719) }, + { SC_(25), SC_(9), SC_(0.632396042346954345703125), SC_(0.2661981908662332060967511990839419762082e-9), SC_(0.2614783555521519855738624318160318315883e-8), SC_(0.09239843022261392414568611853171268731558), SC_(0.9076015697773860758543138814682873126844) }, + { SC_(25), SC_(9), SC_(0.81474220752716064453125), SC_(0.2468984032019285337815541640272684777745e-8), SC_(0.4119977143684677240198338769715755143462e-9), SC_(0.8569939865516188159685919839510459498259), SC_(0.1430060134483811840314080160489540501741) }, + { SC_(25), SC_(9), SC_(0.8350250720977783203125), SC_(0.2645592376399593501318152479346957314938e-8), SC_(0.235389369988159560517223037897302977153e-9), SC_(0.9182954316585668627221858663759983371486), SC_(0.08170456834143313727781413362400166285143) }, + { SC_(25), SC_(9), SC_(0.905801355838775634765625), SC_(0.2873033232371580944317776713742804864576e-8), SC_(0.7948514016172117517598803501455427515652e-11), SC_(0.9972410397857819949383831366693111654331), SC_(0.00275896021421800506161686333068883456685) }, + { SC_(25), SC_(9), SC_(0.913384497165679931640625), SC_(0.2876538750348971356689093263857836006753e-8), SC_(0.4442996038781705146282253386424285338096e-11), SC_(0.9984578187472543188950753593487839235044), SC_(0.001542181252745681104924640651216076495566) }, + { SC_(25), SC_(9), SC_(0.9688708782196044921875), SC_(0.288098020072804409355824943882433405969e-8), SC_(0.1545659708968277126078419926232401453822e-14), SC_(0.9999994634954869442460332573887377670211), SC_(0.5365045130557539667426112622329788509874e-6) }, + { SC_(25), SC_(13), SC_(0.12707412242889404296875), SC_(0.3350916166751864296461726063303381388727e-24), SC_(0.2159264084278773010042679337342967466296e-10), SC_(0.155187880498233229012371262426988340298e-13), SC_(0.9999999999999844812119501766770987628738) }, + { SC_(25), SC_(13), SC_(0.1355634629726409912109375), SC_(0.1509214132866284863147989056512232005957e-23), SC_(0.2159264084278655597791060227499617284651e-10), SC_(0.6989483796144193626684591896957482142605e-13), SC_(0.999999999999930105162038558063733154081) }, + { SC_(25), SC_(13), SC_(0.221111953258514404296875), SC_(0.9439614963228655634239362868429510625108e-19), SC_(0.2159264074839191555975691221746569215127e-10), SC_(0.4371681552042062455592003776909863414404e-8), SC_(0.9999999956283184479579375444079962230901) }, + { SC_(25), SC_(13), SC_(0.3082362115383148193359375), SC_(0.1001164061721693872133742019627737355061e-15), SC_(0.2159254072638189302265625518565735806183e-10), SC_(0.4636598501364330956112888323027704250512e-5), SC_(0.9999953634014986356690438871116769722957) }, + { SC_(25), SC_(13), SC_(0.632396042346954345703125), SC_(0.7748273354100763692766601315332866540312e-11), SC_(0.1384436748868730149927686724452645429526e-10), SC_(0.3588386159207887902866074283341342336467), SC_(0.6411613840792112097133925716658657663533) }, + { SC_(25), SC_(13), SC_(0.81474220752716064453125), SC_(0.2132262384478714203692299006494588810698e-10), SC_(0.2700169980009231551204784949134327285912e-12), SC_(0.9874949525643080965709160814197298344574), SC_(0.01250504743569190342908391858027016554263) }, + { SC_(25), SC_(13), SC_(0.8350250720977783203125), SC_(0.214919710748069213834602618775955858396e-10), SC_(0.1006697679811438085832066822637349959644e-12), SC_(0.9953377741650916461492232692488214033131), SC_(0.004662225834908353850776730751178596686854) }, + { SC_(25), SC_(13), SC_(0.905801355838775634765625), SC_(0.2159224209232146647927749175592259548062e-10), SC_(0.3987504665987127659768039367253549440847e-15), SC_(0.9999815330385244704661384960844197605011), SC_(0.1846696147552953386150391558023949889954e-4) }, + { SC_(25), SC_(13), SC_(0.913384497165679931640625), SC_(0.2159248017831380357193894700214509293394e-10), SC_(0.1606644742616201045215577142279016325159e-15), SC_(0.9999925592948342267275240517904740046239), SC_(0.7440705165773272475948209525995376074909e-5) }, + { SC_(25), SC_(13), SC_(0.9688708782196044921875), SC_(0.2159264084180618342101840134990799597713e-10), SC_(0.9818817710250672099513248584418208147095e-21), SC_(0.9999999999545270178773424375952002178016), SC_(0.454729821226575624047997821983895028632e-10) }, + { SC_(25), SC_(17), SC_(0.12707412242889404296875), SC_(0.1992909724420474112019979605863084136253e-24), SC_(0.388057730165439878075835949813484127454e-12), SC_(0.5135601147720514175424803045763973504684e-12), SC_(0.9999999999994864398852279485824575196954) }, + { SC_(25), SC_(17), SC_(0.1355634629726409912109375), SC_(0.8648948380462826819428133087502619748455e-24), SC_(0.3880577301647742742102317145427433121058e-12), SC_(0.2228778789375255107734277184310316304392e-11), SC_(0.9999999999977712212106247448922657228157) }, + { SC_(25), SC_(17), SC_(0.221111953258514404296875), SC_(0.3652349726072341079010259061224413702247e-19), SC_(0.3880576936421419083248672071220955131705e-12), SC_(0.9411872106022385906808362840265327362488e-7), SC_(0.9999999058812789397761409319163715973467) }, + { SC_(25), SC_(17), SC_(0.3082362115383148193359375), SC_(0.2496262712802569687651951946536271952254e-16), SC_(0.3880327675385111433514014777052207626951e-12), SC_(0.6432709668577046521969878576149138336361e-4), SC_(0.9999356729033142295347803012142385086166) }, + { SC_(25), SC_(17), SC_(0.632396042346954345703125), SC_(0.2646429281737904917977139702727220311317e-12), SC_(0.1234148019918486772505640269519640942829e-12), SC_(0.6819679331238418831072097975854543362382), SC_(0.3180320668761581168927902024145456637618) }, + { SC_(25), SC_(17), SC_(0.81474220752716064453125), SC_(0.3878407020563625006846760858647278688486e-12), SC_(0.2170281092766683636019113599582565659727e-15), SC_(0.9994407324158082568135396937898541706609), SC_(0.0005592675841917431864603062101458293390931) }, + { SC_(25), SC_(17), SC_(0.8350250720977783203125), SC_(0.3880058918885488631236410197281765638219e-12), SC_(0.5183827709030592463697749650956159272313e-16), SC_(0.9998664160688973282575998974926653590977), SC_(0.0001335839311026717424001025073346409023336) }, + { SC_(25), SC_(17), SC_(0.905801355838775634765625), SC_(0.3880577072074346989782583979101387112185e-12), SC_(0.2295820447007001959931454741419608602497e-19), SC_(0.9999999408381725567726645665819816195673), SC_(0.5916182744322733543341801838043267912682e-7) }, + { SC_(25), SC_(17), SC_(0.913384497165679931640625), SC_(0.3880577235241188230535612284543838343887e-12), SC_(0.6641520345994716768770302291025878277164e-20), SC_(0.9999999828852260122228725427378660110318), SC_(0.1711477398777712745726213398896824175453e-7) }, + { SC_(25), SC_(17), SC_(0.9688708782196044921875), SC_(0.388057730165638472894163501155500052392e-12), SC_(0.6961541144960691860730226034004261917255e-27), SC_(0.9999999999999982060552840967201606517304), SC_(0.1793944715903279839348269620658520128882e-14) }, + { SC_(25), SC_(21), SC_(0.12707412242889404296875), SC_(0.1185884050465238540351786744021300530552e-24), SC_(0.1261881071602975062672572955415707125099e-13), SC_(0.9397748148703572421028816985845306450517e-11), SC_(0.9999999999906022518512964275789711830142) }, + { SC_(25), SC_(21), SC_(0.1355634629726409912109375), SC_(0.4959593571500662677978774434022416950148e-24), SC_(0.1261881071565237967462218714039437248199e-13), SC_(0.3930317747895094684650920983745686158765e-10), SC_(0.9999999999606968225210490531534907901625) }, + { SC_(25), SC_(21), SC_(0.221111953258514404296875), SC_(0.1416402601279854124334018039656279925802e-19), SC_(0.1261879655212232623323101006801185336259e-13), SC_(0.1122453322377899245785714645066577809028e-5), SC_(0.9999988775466776221007542142853549334222) }, + { SC_(25), SC_(21), SC_(0.3082362115383148193359375), SC_(0.6265030830726706551406462648814214870228e-17), SC_(0.1261254568531761232522084694554343571052e-13), SC_(0.000496483462004016217098620161235948202506), SC_(0.9995035165379959837829013798387640517975) }, + { SC_(25), SC_(21), SC_(0.632396042346954345703125), SC_(0.1121154142627829279864024096719166626271e-13), SC_(0.1407269289870046233132012441000583662686e-14), SC_(0.8884784531977202506079957099675130066778), SC_(0.1115215468022797493920042900324869933222) }, + { SC_(25), SC_(21), SC_(0.81474220752716064453125), SC_(0.1261861761191155172026561533059498585108e-13), SC_(0.1931042367873115066380775972640743111534e-18), SC_(0.9999846971128158539301787351301829931314), SC_(0.1530288718414606982126486981700686857832e-4) }, + { SC_(25), SC_(21), SC_(0.8350250720977783203125), SC_(0.1261878139133779896553706542843523494919e-13), SC_(0.2932481054006623518797975701497620142916e-19), SC_(0.9999976761034617518142170413763993513404), SC_(0.232389653824818578295862360064865958596e-5) }, + { SC_(25), SC_(21), SC_(0.905801355838775634765625), SC_(0.126188107147252487303576146240600328477e-13), SC_(0.1423090301414638784132217077687530413246e-23), SC_(0.9999999998872246891227629851303593433852), SC_(0.1127753108772370148696406566147551465869e-9) }, + { SC_(25), SC_(21), SC_(0.913384497165679931640625), SC_(0.1261881071585326298762551363328048634991e-13), SC_(0.2950760441467397749117635754775678716797e-24), SC_(0.999999999976616176374756944158598640165), SC_(0.2338382362524305584140135983504319815732e-10) }, + { SC_(25), SC_(21), SC_(0.9688708782196044921875), SC_(0.1261881071614833903124730754096607830842e-13), SC_(0.5249458672261716169739178886906241496435e-33), SC_(0.9999999999999999999583997352021140599877), SC_(0.4160026479788594001225132024785775101059e-19) }, + { SC_(25), SC_(25), SC_(0.12707412242889404296875), SC_(0.7060520931340766014711564885713026615537e-25), SC_(0.6328582881252841342253223740023436939057e-15), SC_(0.1115655915871534728950221046104151735519e-9), SC_(0.9999999998884344084128465271049778953896) }, + { SC_(25), SC_(25), SC_(0.1355634629726409912109375), SC_(0.284584412360132242921874127265186831456e-24), SC_(0.6328582879113049311785977912275852154976e-15), SC_(0.449681101864695034342074108585620412827e-9), SC_(0.9999999995503188981353049656579258914144) }, + { SC_(25), SC_(25), SC_(0.221111953258514404296875), SC_(0.5506558615053064790713840353402613897828e-20), SC_(0.6328527816372742904739393203091059401489e-15), SC_(0.8701092673923571115101361874068045339889e-5), SC_(0.9999912989073260764288848986381259319547) }, + { SC_(25), SC_(25), SC_(0.3082362115383148193359375), SC_(0.1584136035331111611226845160870340380182e-17), SC_(0.6312741521605582319275031889885890023826e-15), SC_(0.002503144961326274339588583378644514221829), SC_(0.9974968550386737256604114166213554857782) }, + { SC_(25), SC_(25), SC_(0.632396042346954345703125), SC_(0.6145615735747614935920133681592871070965e-15), SC_(0.1829671462112784994671666599017223566632e-16), SC_(0.9710887651115593083241314996500952959314), SC_(0.02891123488844069167586850034990470406855) }, + { SC_(25), SC_(25), SC_(0.81474220752716064453125), SC_(0.632858105782207140896271131335371340049e-15), SC_(0.1824136822026424589028140880027138375553e-21), SC_(0.9999997117621976277574719649254295076868), SC_(0.2882378023722425280350745704923132312664e-6) }, + { SC_(25), SC_(25), SC_(0.8350250720977783203125), SC_(0.6328582706505150740656429628503860566507e-15), SC_(0.1754537426947308707129907328611206498145e-22), SC_(0.9999999722759824802322135676992015878606), SC_(0.2772401751976778643230079841213936809198e-7) }, + { SC_(25), SC_(25), SC_(0.905801355838775634765625), SC_(0.632858288195796995403048729986878092092e-15), SC_(0.9234813568130416258125067083061004972295e-28), SC_(0.9999999999998540777020641317105877414836), SC_(0.1459222979358682894122585164483947924076e-12) }, + { SC_(25), SC_(25), SC_(0.913384497165679931640625), SC_(0.6328582881958756309315369723480535360178e-15), SC_(0.1371260719306180140580674495698942116768e-28), SC_(0.999999999999978332262611029718310789097), SC_(0.216677373889702816892109029736898860476e-13) }, + { SC_(25), SC_(25), SC_(0.9688708782196044921875), SC_(0.6328582881958893435387296223769521963407e-15), SC_(0.4117725071464220629993752510861279906261e-39), SC_(0.9999999999999999999999993493448457153402), SC_(0.6506551542846597782985219254162764050258e-24) }, + { SC_(25), SC_(29), SC_(0.12707412242889404296875), SC_(0.420611432349547100857095557297213576972e-25), SC_(0.4425091245110315048639933225770436057889e-16), SC_(0.9505147095317446720132842792522152794e-9), SC_(0.9999999990494852904682553279867157207478) }, + { SC_(25), SC_(29), SC_(0.1355634629726409912109375), SC_(0.1634071187997616852710113194029004522142e-24), SC_(0.4425091232975717492159235707240259690571e-16), SC_(0.3692740094907741663478235362057875441152e-8), SC_(0.9999999963072599050922583365217646379421) }, + { SC_(25), SC_(29), SC_(0.221111953258514404296875), SC_(0.2146570050397844633011193348523284543062e-20), SC_(0.4424876592311389587672103115006539302406e-16), SC_(0.4850905731558503569106139000469882478699e-4), SC_(0.9999514909426844149643089386099953011752) }, + { SC_(25), SC_(29), SC_(0.3082362115383148193359375), SC_(0.4039737370958195688046173028636550984052e-18), SC_(0.438469387560684741525494250405502612102e-16), SC_(0.00912916173555118975228135687292292617951), SC_(0.9908708382644488102477186431270770738205) }, + { SC_(25), SC_(29), SC_(0.632396042346954345703125), SC_(0.4399374608427732917928933263254032865428e-16), SC_(0.2571664088869645420647097108735876543243e-18), SC_(0.9941884495844760129245069341005641359269), SC_(0.005811550415523987075493065899435864073126) }, + { SC_(25), SC_(29), SC_(0.81474220752716064453125), SC_(0.4425091231397148200352401776757749886751e-16), SC_(0.1791928117178300245758364174411008321544e-24), SC_(0.999999995950528438356813031709594649454), SC_(0.4049471561643186968290405350545988509044e-8) }, + { SC_(25), SC_(29), SC_(0.8350250720977783203125), SC_(0.4425091248227092420099846531426319287587e-16), SC_(0.1089336952035557702915072343273927336388e-25), SC_(0.9999999997538272341380905591407946884341), SC_(0.2461727658619094408592053115659363298255e-9) }, + { SC_(25), SC_(29), SC_(0.905801355838775634765625), SC_(0.4425091249316428753895607135273678949147e-16), SC_(0.6182397970990677126817134552205058970714e-32), SC_(0.9999999999999998602876726678639777210096), SC_(0.1397123273321360222789904275625311938791e-15) }, + { SC_(25), SC_(29), SC_(0.913384497165679931640625), SC_(0.442509124931642930642749715957030087114e-16), SC_(0.6570790707477109075972070412455046245134e-33), SC_(0.9999999999999999851510616679551209574539), SC_(0.1484893833204487904254613630627722892519e-16) }, + { SC_(25), SC_(29), SC_(0.9688708782196044921875), SC_(0.4425091249316429372135404234308193789348e-16), SC_(0.3319784151265326249624682268363438739173e-45), SC_(0.9999999999999999999999999999924978176399), SC_(0.7502182360144897351557612530333526374496e-29) }, + { SC_(25), SC_(33), SC_(0.12707412242889404296875), SC_(0.2507180844822598230635401653400372593939e-25), SC_(0.4028411441104207354462282200036111387967e-17), SC_(0.6223745677108174707809305216514346272325e-8), SC_(0.9999999937762543228918252921906947834857) }, + { SC_(25), SC_(33), SC_(0.1355634629726409912109375), SC_(0.9389426105511353587635040444161298773852e-25), SC_(0.4028411372281754747574728630039723480357e-17), SC_(0.2330801156820333544128228821249110251068e-7), SC_(0.9999999766919884317966645587177117875089) }, + { SC_(25), SC_(33), SC_(0.221111953258514404296875), SC_(0.8392347178787635872892307504559278402262e-21), SC_(0.402757223145813703910097527563967199413e-17), SC_(0.000208328946763576310529108980065378850629), SC_(0.9997916710532364236894708910199346211494) }, + { SC_(25), SC_(33), SC_(0.3082362115383148193359375), SC_(0.1040250145693519217977233328584869266979e-18), SC_(0.3924386451606663880890541173531640995273e-17), SC_(0.02582283747397284722455245974131517178288), SC_(0.9741771625260271527754475402586848282171) }, + { SC_(25), SC_(33), SC_(0.632396042346954345703125), SC_(0.4024609960012784670488140890868799840123e-17), SC_(0.380150616323113220012361552132808184737e-20), SC_(0.9990563262479143607156105698064679702359), SC_(0.0009436737520856392843894301935320297640739) }, + { SC_(25), SC_(33), SC_(0.81474220752716064453125), SC_(0.402841146599508002535062676138389687798e-17), SC_(0.1809357773376377450062310439900132657087e-27), SC_(0.9999999999550850803457295071231420937833), SC_(0.4491491965427049287685790621666329510578e-10) }, + { SC_(25), SC_(33), SC_(0.8350250720977783203125), SC_(0.4028411466169073006346513110242902298882e-17), SC_(0.694279634175139614722562308823936037372e-29), SC_(0.999999999998276542403861770664754093951), SC_(0.1723457596138229335245906048974027645062e-11) }, + { SC_(25), SC_(33), SC_(0.905801355838775634765625), SC_(0.402841146617601580226493649298536518479e-17), SC_(0.4233280134047627371808354737857276724757e-36), SC_(0.9999999999999999998949144056015190549724), SC_(0.1050855943984809450276282819783802315575e-18) }, + { SC_(25), SC_(33), SC_(0.913384497165679931640625), SC_(0.4028411466176015802656071123984092761405e-17), SC_(0.3219338240603516056554195194586226905773e-37), SC_(0.9999999999999999999920084175421646176586), SC_(0.7991582457835382341371928610097689695411e-20) }, + { SC_(25), SC_(33), SC_(0.9688708782196044921875), SC_(0.4028411466176015802688264506390127648871e-17), SC_(0.27309973983458816191874933601349110623e-51), SC_(0.9999999999999999999999999999999999322066), SC_(0.6779340743308654133704673826415092789561e-34) }, + { SC_(25), SC_(37), SC_(0.12707412242889404296875), SC_(0.149541436594757210258881856296585372672e-25), SC_(0.4547116912000528335297157731247786712367e-18), SC_(0.3288708748220492804064557188618123294613e-7), SC_(0.9999999671129125177950719593544281138188) }, + { SC_(25), SC_(37), SC_(0.1355634629726409912109375), SC_(0.5399201297574950841618974185791274793483e-25), SC_(0.4547116521621835172559283828232224429825e-18), SC_(0.1187389993373963658973590145735048760446e-6), SC_(0.9999998812610006626036341026409854264951) }, + { SC_(25), SC_(37), SC_(0.221111953258514404296875), SC_(0.3291616537385116387654856460980177615201e-21), SC_(0.4543825445004579813666713133668662831337e-18), SC_(0.0007238908725760629634980437741312887897312), SC_(0.9992761091274239370365019562258687112103) }, + { SC_(25), SC_(37), SC_(0.3082362115383148193359375), SC_(0.2708743885551737638268264871573917028017e-19), SC_(0.427624267298679116622754150297225130615e-18), SC_(0.05957057733264470273320754993540283997613), SC_(0.9404294226673552972667924500645971600239) }, + { SC_(25), SC_(37), SC_(0.632396042346954345703125), SC_(0.4546535183941957567994070618739309780929e-18), SC_(0.5818776000073620602973713903332280235539e-22), SC_(0.9998720337321137620848963034994270315816), SC_(0.0001279662678862379151036965005729684184087) }, + { SC_(25), SC_(37), SC_(0.81474220752716064453125), SC_(0.4547117061540100443791574246633133814737e-18), SC_(0.186448626279374349650919421486781302788e-30), SC_(0.9999999999995899629946712916130054919079), SC_(0.4100370053287083869945080921375958268716e-12) }, + { SC_(25), SC_(37), SC_(0.8350250720977783203125), SC_(0.4547117061541919810481111043813605590789e-18), SC_(0.4511957325694631603741816348086713914586e-32), SC_(0.9999999999999900773231376528722347392176), SC_(0.9922676862347127765260782396240754506182e-14) }, + { SC_(25), SC_(37), SC_(0.905801355838775634765625), SC_(0.4547117061541964930054073136771865442123e-18), SC_(0.294853357777566829131475576176464516766e-40), SC_(0.9999999999999999999999351559782193996075), SC_(0.6484402178060039246539832372700121880531e-22) }, + { SC_(25), SC_(37), SC_(0.913384497165679931640625), SC_(0.4547117061541964930054351949152644980517e-18), SC_(0.160409769980284346353714714889085494167e-41), SC_(0.9999999999999999999999964722753382142295), SC_(0.352772466178577046002196102840876753031e-23) }, + { SC_(25), SC_(37), SC_(0.9688708782196044921875), SC_(0.454711706154196493005436799012964300895e-18), SC_(0.2281629868641911844869186334568622614942e-57), SC_(0.9999999999999999999999999999999999999995), SC_(0.5017750451025758994963207620132509440486e-39) }, + { SC_(29), SC_(1), SC_(0.12707412242889404296875), SC_(0.359135600102960082837952038861467781969e-27), SC_(0.03448275862068965517241379274431267575911), SC_(0.104149324029858424023006091269825656771e-25), SC_(0.9999999999999999999999999895850675970142) }, + { SC_(29), SC_(1), SC_(0.1355634629726409912109375), SC_(0.2342820302505420134768135575484898253716e-26), SC_(0.03448275862068965517241379076062797335665), SC_(0.6794178877265718390827593168906204935777e-25), SC_(0.9999999999999999999999999320582112273428) }, + { SC_(29), SC_(1), SC_(0.221111953258514404296875), SC_(0.3399041077394536427355776465402732826712e-20), SC_(0.03448275862068965516901475202605373943471), SC_(0.9857219124444155639331751749667925197464e-19), SC_(0.9999999999999999999014278087555584436067) }, + { SC_(29), SC_(1), SC_(0.3082362115383148193359375), SC_(0.5190725831816841799591964830005430822855e-16), SC_(0.03448275862068960326515547493503027994242), SC_(0.1505310491226884121881669800701574938628e-14), SC_(0.9999999999999984946895087731158781183302) }, + { SC_(29), SC_(1), SC_(0.632396042346954345703125), SC_(0.5838310116402752871484187863604365706318e-7), SC_(0.03448270023758849114488507826156963981841), SC_(0.1693109933756798332730414480445266054832e-5), SC_(0.9999983068900662432016672695855195547339) }, + { SC_(29), SC_(1), SC_(0.81474220752716064453125), SC_(0.9061252846134422176383261830550795151111e-4), SC_(0.03439214609222831095064996048514276791056), SC_(0.002627763325378982431151145930859730593822), SC_(0.9973722366746210175688488540691402694062) }, + { SC_(29), SC_(1), SC_(0.8350250720977783203125), SC_(0.0001848791581692297171397829183562882380917), SC_(0.03429787946252042545527401018509198762398), SC_(0.00536149558690766179705370463233235890466), SC_(0.9946385044130923382029462953676676410953) }, + { SC_(29), SC_(1), SC_(0.905801355838775634765625), SC_(0.001956852214904967807578610223315721711456), SC_(0.03252590640578468736483518288013255415061), SC_(0.05674871423224406641977969647615592963221), SC_(0.9432512857677559335802203035238440703678) }, + { SC_(29), SC_(1), SC_(0.913384497165679931640625), SC_(0.002492053996831051086418819527327685032298), SC_(0.03199070462385860408599497357612059082977), SC_(0.07226956590810048150614576629250286593663), SC_(0.9277304340918995184938542337074971340634) }, + { SC_(29), SC_(1), SC_(0.9688708782196044921875), SC_(0.01378202931700787193533889766796402678691), SC_(0.02070072930368178323707489543548424907516), SC_(0.3996788501932282861248280323709567768204), SC_(0.6003211498067717138751719676290432231796) }, + { SC_(29), SC_(5), SC_(0.12707412242889404296875), SC_(0.2126347425242740860642744294789474996536e-27), SC_(0.8426871608184177705866347040514218613506e-6), SC_(0.2523293962587055724507531799740774188889e-21), SC_(0.9999999999999999999997476706037412944275) }, + { SC_(29), SC_(5), SC_(0.1355634629726409912109375), SC_(0.1335964999300211307408108524422129960327e-26), SC_(0.8426871608184177705855113737946459241293e-6), SC_(0.1585362945369574754275054223761253181321e-20), SC_(0.9999999999999999999984146370546304252457) }, + { SC_(29), SC_(5), SC_(0.221111953258514404296875), SC_(0.1299673364596398393416588929496977268851e-20), SC_(0.8426871608184164709134827423955527188478e-6), SC_(0.15422963882992540454995977508554729854e-14), SC_(0.9999999999999984577036117007459545004022) }, + { SC_(29), SC_(5), SC_(0.3082362115383148193359375), SC_(0.1262415254724635545923739529192840121759e-16), SC_(0.8426871608057936180396009833347087401448e-6), SC_(0.1498082934476630509636783224502559515689e-10), SC_(0.999999999985019170655233694903632167755) }, + { SC_(29), SC_(5), SC_(0.632396042346954345703125), SC_(0.1355985287795916432137820232873133824776e-8), SC_(0.8413311755306218541547095185610730016119e-6), SC_(0.001609120621321658111689308513945890447185), SC_(0.9983908793786783418883106914860541095528) }, + { SC_(29), SC_(5), SC_(0.81474220752716064453125), SC_(0.2042517799583145461080120159564677949804e-6), SC_(0.6384353808601032244788353228374783404563e-6), SC_(0.2423815022409327055754556990952212029474), SC_(0.7576184977590672944245443009047787970526) }, + { SC_(29), SC_(5), SC_(0.8350250720977783203125), SC_(0.2911612956639961426159637119792973346304e-6), SC_(0.5515258651544216279708836268146488008062e-6), SC_(0.3455152863385509425195118177315925610593), SC_(0.6544847136614490574804881822684074389407) }, + { SC_(29), SC_(5), SC_(0.905801355838775634765625), SC_(0.6781199767540766913432874305173946835987e-6), SC_(0.1645671840643410792435599082765514518379e-6), SC_(0.804711414014527728083252328046381923133), SC_(0.195288585985472271916747671953618076867) }, + { SC_(29), SC_(5), SC_(0.913384497165679931640625), SC_(0.7137668307880234101566187874410169835149e-6), SC_(0.1289203300303943604302285513529291519218e-6), SC_(0.8470128227595316203646563826805060339975), SC_(0.1529871772404683796353436173194939660025) }, + { SC_(29), SC_(5), SC_(0.9688708782196044921875), SC_(0.8398640037955100963065731803119629397334e-6), SC_(0.2823157022907674280274158481983195703313e-8), SC_(0.9966498160240559210850842616126001813228), SC_(0.003350183975944078914915738387399818677208) }, + { SC_(29), SC_(9), SC_(0.12707412242889404296875), SC_(0.1259405114018007768399065174704760121913e-27), SC_(0.8931501439516881509994938699378347668132e-9), SC_(0.1410070997073176204192687811142841313578e-18), SC_(0.9999999999999999998589929002926823795807) }, + { SC_(29), SC_(9), SC_(0.1355634629726409912109375), SC_(0.7621348334747549356053936689491234847869e-27), SC_(0.8931501439516881503632995478648806080477e-9), SC_(0.8533109899112102334196007754811730160106e-18), SC_(0.9999999999999999991466890100887897665804) }, + { SC_(29), SC_(9), SC_(0.221111953258514404296875), SC_(0.497635989196415747203540281180919732023e-21), SC_(0.8931501439511905151362379655924320033719e-9), SC_(0.5571694664848350897941275901525186063378e-12), SC_(0.9999999999994428305335151649102058724098) }, + { SC_(29), SC_(9), SC_(0.3082362115383148193359375), SC_(0.3080904334509785707754678711102434521584e-17), SC_(0.8931501408707838166156486735849568325506e-9), SC_(0.3449480868780374407220496932382693407683e-8), SC_(0.9999999965505191312196255927795030676173) }, + { SC_(29), SC_(9), SC_(0.632396042346954345703125), SC_(0.3334821741306036690082541464898171315279e-10), SC_(0.8598019265386277842246089666906538305003e-9), SC_(0.03733775070058570428891776313300918987007), SC_(0.9626622492994142957110822368669908101299) }, + { SC_(29), SC_(9), SC_(0.81474220752716064453125), SC_(0.6823701774382258858737849339806104419797e-9), SC_(0.2107799665134622652516494473590251016734e-9), SC_(0.7640038822802186392236513799978405391287), SC_(0.2359961177197813607763486200021594608713) }, + { SC_(29), SC_(9), SC_(0.8350250720977783203125), SC_(0.7639380413812777918049984610894066585057e-9), SC_(0.1292121025704103593204359202502288851474e-9), SC_(0.8553299202318668177353332838855619877319), SC_(0.1446700797681331822646667161144380122681) }, + { SC_(29), SC_(9), SC_(0.905801355838775634765625), SC_(0.8875144753627104906968167790579857206715e-9), SC_(0.5635668588977660428617602281649822981624e-11), SC_(0.9936901218376979824919429681239825220385), SC_(0.006309878162302017508057031876017477961459) }, + { SC_(29), SC_(9), SC_(0.913384497165679931640625), SC_(0.8899110438490427283783652133482390747571e-9), SC_(0.3239100102645422747069167991396468895994e-11), SC_(0.9963733979951968405045082600033393537271), SC_(0.003626602004803159495491739996660646272911) }, + { SC_(29), SC_(9), SC_(0.9688708782196044921875), SC_(0.8931487631164461637137348622164355237021e-9), SC_(0.1380835241987411699519123200019950954663e-14), SC_(0.9999984539718754587099113452193322238063), SC_(0.1546028124541290088654780667776193738842e-5) }, + { SC_(29), SC_(13), SC_(0.12707412242889404296875), SC_(0.746203870114713043856169271922912782028e-28), SC_(0.4365649464363440577172740457306414525297e-11), SC_(0.1709261992301339552990385085687752542884e-16), SC_(0.9999999999999999829073800769866044700961) }, + { SC_(29), SC_(13), SC_(0.1355634629726409912109375), SC_(0.4349665779572004212754337596697704422365e-27), SC_(0.436564946436344021682654951157729763548e-11), SC_(0.9963387612949893505106504868754216648643e-16), SC_(0.999999999999999900366123870501064948935) }, + { SC_(29), SC_(13), SC_(0.221111953258514404296875), SC_(0.1908226565143387659814342101284655449987e-21), SC_(0.4365649464172617995278788702796284700786e-11), SC_(0.4371002712700910638951353462213802806259e-10), SC_(0.9999999999562899728729908936104864653779) }, + { SC_(29), SC_(13), SC_(0.3082362115383148193359375), SC_(0.7547770430069072306020087096591862282703e-18), SC_(0.4365648709586397644885896866769009251728e-11), SC_(0.1728899787232372223383657890365391019286e-6), SC_(0.9999998271100212767627776616342109634609) }, + { SC_(29), SC_(13), SC_(0.632396042346954345703125), SC_(0.8898435322826115098047937360533082849551e-12), SC_(0.3475805932080829141988333732724410625959e-11), SC_(0.2038284428345326187386796062030167011499), SC_(0.7961715571654673812613203937969832988501) }, + { SC_(29), SC_(13), SC_(0.81474220752716064453125), SC_(0.4234789075669683566873437142812860783949e-11), SC_(0.1308603886937570849196903259648581269648e-12), SC_(0.9700249894633173536095126758562968186421), SC_(0.02997501053668264639048732414370318135793) }, + { SC_(29), SC_(13), SC_(0.8350250720977783203125), SC_(0.431271279290785253204283601373955796176e-11), SC_(0.5293667145558811975029145503816094915393e-13), SC_(0.9878742734872079647567835255896372657052), SC_(0.01212572651279203524321647441036273429481) }, + { SC_(29), SC_(13), SC_(0.905801355838775634765625), SC_(0.4365371435983209426119374671905038771978e-11), SC_(0.2780283802312256737527968726801389365868e-15), SC_(0.9999363145432310229592370825274174878031), SC_(0.6368545676897704076291747258251219693489e-4) }, + { SC_(29), SC_(13), SC_(0.913384497165679931640625), SC_(0.4365534056698073669658766848136998963361e-11), SC_(0.1154076653669821343606206407199475534051e-15), SC_(0.9999735646056081578158075310989357911835), SC_(0.2643539439184218419246890106420881646051e-4) }, + { SC_(29), SC_(13), SC_(0.9688708782196044921875), SC_(0.4365649463489835883402985521636924647749e-11), SC_(0.8736047683901419471407942631655144270752e-21), SC_(0.9999999997998912245425726000618215783557), SC_(0.2001087754574273999381784216443418938087e-9) }, + { SC_(29), SC_(17), SC_(0.12707412242889404296875), SC_(0.4422990195145064616477830993629497092141e-28), SC_(0.5332717222149371050189100799883501524695e-13), SC_(0.8294064753282302640287466849573043430296e-15), SC_(0.9999999999999991705935246717697359712533) }, + { SC_(29), SC_(17), SC_(0.1355634629726409912109375), SC_(0.2483558378618974475403580846794774653117e-27), SC_(0.5332717222149350637595509755203363966718e-13), SC_(0.4657209964750325141439854217267115298534e-14), SC_(0.9999999999999953427900352496748585601458) }, + { SC_(29), SC_(17), SC_(0.221111953258514404296875), SC_(0.7328808908195017293825934520885245819069e-22), SC_(0.5332717214820566564984278651122183481641e-13), SC_(0.1374310431791676394046346516466665505932e-8), SC_(0.9999999986256895682083236059536534835333) }, + { SC_(29), SC_(17), SC_(0.3082362115383148193359375), SC_(0.1856994687702489576077306114425747498308e-18), SC_(0.5332698652202498448283535171886973745051e-13), SC_(0.3482267313911723938213482397198008799448e-5), SC_(0.9999965177326860882760617865176028019912) }, + { SC_(29), SC_(17), SC_(0.632396042346954345703125), SC_(0.2668006007731591873019856659248746942853e-13), SC_(0.2664711214417783600159439285699371059673e-13), SC_(0.5003089225601653308472781853721239069024), SC_(0.4996910774398346691527218146278760930976) }, + { SC_(29), SC_(17), SC_(0.81474220752716064453125), SC_(0.5322474920477367996505546368580538060038e-13), SC_(0.1024230167200747667374957636757994248842e-15), SC_(0.9980793465609865450020137033434048914148), SC_(0.001920653439013454997986296656595108585174) }, + { SC_(29), SC_(17), SC_(0.8350250720977783203125), SC_(0.5330048775722113950687119294993783954302e-13), SC_(0.2668446427261522492176649954334048223904e-16), SC_(0.9994996084892373135712686077788946365591), SC_(0.0005003915107626864287313922211053634409358) }, + { SC_(29), SC_(17), SC_(0.905801355838775634765625), SC_(0.5332715635261522245187800159802690779464e-13), SC_(0.1586887853227991495785145427223062312599e-19), SC_(0.9999997024241513056660324488327584127146), SC_(0.2975758486943339675511672415872853606108e-6) }, + { SC_(29), SC_(17), SC_(0.913384497165679931640625), SC_(0.5332716748758540842719595303300116787964e-13), SC_(0.473390834630459700641648001214561634053e-20), SC_(0.9999999112289636014756821705327003589456), SC_(0.8877103639852431782946729964105443942224e-7) }, + { SC_(29), SC_(17), SC_(0.9688708782196044921875), SC_(0.5332717222149313671911194692311098004522e-13), SC_(0.6180126810125263701999800449037851430522e-27), SC_(0.9999999999999884109234510763426287688781), SC_(0.1158907654892365737123112190004392238109e-13) }, + { SC_(29), SC_(21), SC_(0.12707412242889404296875), SC_(0.2622688919478594287842185743973347821686e-28), SC_(0.1219440377452527350087607157329301141767e-14), SC_(0.2150731571606204919024801870635544427316e-13), SC_(0.9999999999999784926842839379508097519813) }, + { SC_(29), SC_(21), SC_(0.1355634629726409912109375), SC_(0.1418713501820732224784391138981376672621e-27), SC_(0.121944037745241170562661987004970112451e-14), SC_(0.1163413585487849764030290406387721998878e-12), SC_(0.9999999999998836586414512150235969709594) }, + { SC_(29), SC_(21), SC_(0.221111953258514404296875), SC_(0.2819494097990247934422475322933764686613e-22), SC_(0.1219440349257612597074322599047426334286e-14), SC_(0.2312121322307084112246080922653764315221e-7), SC_(0.9999999768787867769291588775391907734624) }, + { SC_(29), SC_(21), SC_(0.3082362115383148193359375), SC_(0.4590604053823265741515184961715991390153e-19), SC_(0.121939447141201534431938679142256240371e-14), SC_(0.3764517018382785679447786586291466955818e-4), SC_(0.9999623548298161721432055221341370853304) }, + { SC_(29), SC_(21), SC_(0.632396042346954345703125), SC_(0.9403271353207874761066659148355463535727e-15), SC_(0.2791132421317661008701360284366332100512e-15), SC_(0.7711136622236162268814943102092668892095), SC_(0.2288863377763837731185056897907331107905) }, + { SC_(29), SC_(21), SC_(0.81474220752716064453125), SC_(0.1219350630989935903702448811237250100366e-14), SC_(0.8974646261767327435313203492946325789025e-19), SC_(0.9999264035665235587445776093948409242391), SC_(0.7359643347644125542239060515907576093559e-4) }, + { SC_(29), SC_(21), SC_(0.8350250720977783203125), SC_(0.1219425468599243026969437607234555794277e-14), SC_(0.1490885331055000736433603762376934659784e-19), SC_(0.9999877740202914266004206818657375560257), SC_(0.1222597970857339957931813426244397433674e-4) }, + { SC_(29), SC_(21), SC_(0.905801355838775634765625), SC_(0.1219440376474089147245427814030177552889e-14), SC_(0.9784644297313741292420020107346672069241e-24), SC_(0.999999999197611914593631230018077243295), SC_(0.8023880854063687699819227567050143772512e-9) }, + { SC_(29), SC_(21), SC_(0.913384497165679931640625), SC_(0.1219440377243221593955741939275749894347e-14), SC_(0.2093319830210600039964296692766610117394e-24), SC_(0.9999999998283376646438749173065769931957), SC_(0.1716623353561250826934230068043360852858e-9) }, + { SC_(29), SC_(21), SC_(0.9688708782196044921875), SC_(0.1219440377452553576511428139757496126558e-14), SC_(0.4653738035146834370659829632125960033463e-33), SC_(0.9999999999999999996183710067999693017256), SC_(0.3816289932000306982743556024075820476229e-18) }, + { SC_(29), SC_(25), SC_(0.12707412242889404296875), SC_(0.1555808326883127500311456973153521179605e-28), SC_(0.4425091249314873563808521106841080173888e-16), SC_(0.3515878519168305577869856033854732815277e-12), SC_(0.9999999999996484121480831694422130143966) }, + { SC_(29), SC_(25), SC_(0.1355634629726409912109375), SC_(0.8108204696267549526636715760145842245675e-28), SC_(0.4425091249308321167439136684814754915101e-16), SC_(0.1832324858277232809710125242158988114775e-11), SC_(0.9999999999981676751417227671902898747578) }, + { SC_(29), SC_(25), SC_(0.221111953258514404296875), SC_(0.1086668694038661029726216634065449788827e-22), SC_(0.4425090162647735333474374508124757565411e-16), SC_(0.2455697821387356294375543426541037429617e-6), SC_(0.9999997544302178612643705624456573458963) }, + { SC_(29), SC_(25), SC_(0.3082362115383148193359375), SC_(0.114089482338372941935666059958433668607e-19), SC_(0.4423950354493045642716047573741807294175e-16), SC_(0.0002578240219475633068398152847184694676278), SC_(0.9997421759780524366931601847152815305324) }, + { SC_(29), SC_(25), SC_(0.632396042346954345703125), SC_(0.4080242199350978159612788601521934573057e-16), SC_(0.3448490499654512125226156328194570578034e-17), SC_(0.922069618334147994700070948689252052613), SC_(0.07793038166585200529992905131074794738703) }, + { SC_(29), SC_(25), SC_(0.81474220752716064453125), SC_(0.4425082854672210243880321104453083441682e-16), SC_(0.8394644219128255083129888308189178650662e-22), SC_(0.9999981029443809943972152647456533976069), SC_(0.1897055619005602784735254346602393087313e-5) }, + { SC_(29), SC_(25), SC_(0.8350250720977783203125), SC_(0.4425090364473086610412824948891119191047e-16), SC_(0.8848433427617225792854502724398142763227e-23), SC_(0.9999998000395262135193967130560615022596), SC_(0.1999604737864806032869439384977403778204e-6) }, + { SC_(29), SC_(25), SC_(0.905801355838775634765625), SC_(0.442509124931010228309223097482730603167e-16), SC_(0.6327089043173259514085599191086274883097e-28), SC_(0.9999999999985701788535658686692872933484), SC_(0.142982114643413133071270665161492231357e-11) }, + { SC_(29), SC_(25), SC_(0.913384497165679931640625), SC_(0.4425091249315459655620196066845484300374e-16), SC_(0.9697165152081674959073304865046625530279e-29), SC_(0.9999999999997808595437759694842091843893), SC_(0.219140456224030515790815610680732559929e-12) }, + { SC_(29), SC_(25), SC_(0.9688708782196044921875), SC_(0.4425091249316429372135367764785811372145e-16), SC_(0.364695555802587153070833977934303334641e-39), SC_(0.9999999999999999999999917584624755721392), SC_(0.8241537524427860846310497415064245046403e-23) }, + { SC_(29), SC_(29), SC_(0.12707412242889404296875), SC_(0.923316069295911087670981747727498439589e-29), SC_(0.2293707585362121777016779926062608013511e-17), SC_(0.4025430596230184829070912070050343720885e-11), SC_(0.9999999999959745694037698151709290879299) }, + { SC_(29), SC_(29), SC_(0.1355634629726409912109375), SC_(0.4636311737582912101943600370202696652663e-28), SC_(0.2293707585324991820333909915919881827286e-17), SC_(0.2021317698538406234511919030950089014502e-10), SC_(0.9999999999797868230146159376548808096905) }, + { SC_(29), SC_(29), SC_(0.221111953258514404296875), SC_(0.4196338489685137322610015670220356686463e-23), SC_(0.2293703389032865252572416426923647610632e-17), SC_(0.1829500201528846315094395928451544038661e-5), SC_(0.999998170499798471153684905604071548456) }, + { SC_(29), SC_(29), SC_(0.3082362115383148193359375), SC_(0.2852508756228290544114355916643662642067e-20), SC_(0.2290855076615126647165624681022674168346e-17), SC_(0.001243623544003960208553088239105025948353), SC_(0.9987563764559960397914469117608949740516) }, + { SC_(29), SC_(29), SC_(0.632396042346954345703125), SC_(0.2246805164513807231425995277121752202217e-17), SC_(0.4690242085754770628374375981756562877118e-19), SC_(0.9795516999827359732498061118413741234703), SC_(0.02044830001726402675019388815862587652971) }, + { SC_(29), SC_(29), SC_(0.81474220752716064453125), SC_(0.229370750346869012242617646709449563346e-17), SC_(0.8190266481528356256984482219752875387485e-25), SC_(0.9999999642924558746561455237067644626732), SC_(0.357075441253438544762932355373267722163e-7) }, + { SC_(29), SC_(29), SC_(0.8350250720977783203125), SC_(0.2293707579908524292389333977729248225557e-17), SC_(0.5462830645320405059210069605431227808573e-26), SC_(0.9999999976183404196067285472715027565409), SC_(0.2381659580393271452728497243459095045749e-8) }, + { SC_(29), SC_(29), SC_(0.905801355838775634765625), SC_(0.2293707585371350712639828710355343040589e-17), SC_(0.4225069910326583974790399088824257728504e-32), SC_(0.9999999999999981579736068917702173801735), SC_(0.1842026393108229782619826469927511744716e-14) }, + { SC_(29), SC_(29), SC_(0.913384497165679931640625), SC_(0.2293707585371354474096736322666113933706e-17), SC_(0.4636130027142732038972823215178859609506e-33), SC_(0.9999999999999997978761522736938087008911), SC_(0.2021238477263061912991089086787658426483e-15) }, + { SC_(29), SC_(29), SC_(0.9688708782196044921875), SC_(0.2293707585371354937709739036645497747857e-17), SC_(0.2938200831315409921330762980283515302148e-45), SC_(0.9999999999999999999999999998719016822347), SC_(0.1280983177652835155613905687265858630952e-27) }, + { SC_(29), SC_(33), SC_(0.12707412242889404296875), SC_(0.548196806460790775602055554119956915312e-29), SC_(0.1580548711176344599854102309383253244491e-18), SC_(0.3468395517109841609821669358429932289937e-10), SC_(0.9999999999653160448289015839017833064157) }, + { SC_(29), SC_(33), SC_(0.1355634629726409912109375), SC_(0.2652449810146447194046469871415770903927e-28), SC_(0.1580548710965919299485536667538811812762e-18), SC_(0.1678182893889001598023451597171080242531e-9), SC_(0.9999999998321817106110998401976548402829) }, + { SC_(29), SC_(33), SC_(0.221111953258514404296875), SC_(0.162388951505564820852236477925874859376e-23), SC_(0.1580532472336013724018096163295666212417e-18), SC_(0.1027421365451447378901609206658752396105e-4), SC_(0.999989725786345485526210983907933412476) }, + { SC_(29), SC_(33), SC_(0.3082362115383148193359375), SC_(0.7180411287496169098026099587173438872645e-21), SC_(0.157336829994366811140215528735628536103e-18), SC_(0.004542986392303598492085400502265037404981), SC_(0.995457013607696401507914599497734962595) }, + { SC_(29), SC_(33), SC_(0.632396042346954345703125), SC_(0.1573769897387627724854885991196359805104e-18), SC_(0.677881384353655564529539574709899479898e-21), SC_(0.9957111009642618250279531822711310359453), SC_(0.004288899035738174972046817728868964054726) }, + { SC_(29), SC_(33), SC_(0.81474220752716064453125), SC_(0.1580548710408296120768139246485208757174e-18), SC_(0.8228681597320421404582500427289959549055e-28), SC_(0.9999999994793781717166621572661905349067), SC_(0.5206218282833378427338094650933428207703e-9) }, + { SC_(29), SC_(33), SC_(0.8350250720977783203125), SC_(0.1580548711196491591762331839663979811703e-18), SC_(0.3467268873784954727947898820008694005139e-29), SC_(0.9999999999780628787385860780175353878069), SC_(0.2193712126141392198246461219312176037881e-10) }, + { SC_(29), SC_(33), SC_(0.905801355838775634765625), SC_(0.1580548711231164277612628667101561869005e-18), SC_(0.2887552719841896930898022063054002580378e-36), SC_(0.9999999999999999981730694540931640760234), SC_(0.182693054590683592397657191554203992956e-17) }, + { SC_(29), SC_(33), SC_(0.913384497165679931640625), SC_(0.1580548711231164280273423031538163301614e-18), SC_(0.2267583554052954982894089741586370627703e-37), SC_(0.9999999999999999998565318779522697082624), SC_(0.1434681220477302917376098453993901464835e-18) }, + { SC_(29), SC_(33), SC_(0.9688708782196044921875), SC_(0.1580548711231164280500181386943456384088e-18), SC_(0.241581527904014031115934370038285327774e-51), SC_(0.9999999999999999999999999999999984715338), SC_(0.1528466197766437280200861380250780080934e-32) }, + { SC_(29), SC_(37), SC_(0.12707412242889404296875), SC_(0.325627871513340698326401999575383324557e-29), SC_(0.1375136207801982490398262524495062620067e-19), SC_(0.2367968129911411447040366567245330214953e-9), SC_(0.9999999997632031870088588552959633432755) }, + { SC_(29), SC_(37), SC_(0.1355634629726409912109375), SC_(0.1518299727035249962837552673597231578651e-28), SC_(0.1375136206609310634876353259983911946046e-19), SC_(0.110410860979551362635040882911848951428e-8), SC_(0.9999999988958913902044863736495911708815) }, + { SC_(29), SC_(37), SC_(0.221111953258514404296875), SC_(0.6298352557615355314077078984966842384189e-24), SC_(0.1375073224602034208358462452031614951219e-19), SC_(0.4580166328534982936961100529105950591546e-4), SC_(0.9999541983367146501706303889947089404941) }, + { SC_(29), SC_(37), SC_(0.3082362115383148193359375), SC_(0.1821385646344246906363877052148152889067e-21), SC_(0.1356922351664167892847964452299983090752e-19), SC_(0.01324512899579781362205186132580217616893), SC_(0.9867548710042021863779481386741978238311) }, + { SC_(29), SC_(37), SC_(0.632396042346954345703125), SC_(0.1374115311872362967066765712181182442339e-19), SC_(0.1020896255247394844837510640282177303367e-22), SC_(0.9992576035383160695862644825324792948634), SC_(0.000742396461683930413735517467520705136584) }, + { SC_(29), SC_(37), SC_(0.81474220752716064453125), SC_(0.1375136208119163221256409091899627109334e-19), SC_(0.8447140655194130921837510308913248831732e-31), SC_(0.9999999999938572334832956050972498397108), SC_(0.6142766516704394902750160289153867155914e-11) }, + { SC_(29), SC_(37), SC_(0.8350250720977783203125), SC_(0.1375136208127385747492579511780708771816e-19), SC_(0.2246144190237110407558478270852670786081e-32), SC_(0.9999999999998366602394030866833291025589), SC_(0.1633397605969133166708974410803630595077e-12) }, + { SC_(29), SC_(37), SC_(0.905801355838775634765625), SC_(0.1375136208127610361909594969437691810585e-19), SC_(0.2008253383772809058229826155174069350823e-40), SC_(0.9999999999999999999985395967527411317561), SC_(0.146040324725886824391598116606089568059e-20) }, + { SC_(29), SC_(37), SC_(0.913384497165679931640625), SC_(0.1375136208127610361911490386083350471782e-19), SC_(0.1128367381141478612557840407965125641831e-41), SC_(0.9999999999999999999999179450461363484083), SC_(0.8205495386365159173861528923246261311757e-22) }, + { SC_(29), SC_(37), SC_(0.9688708782196044921875), SC_(0.1375136208127610361911603222821464619623e-19), SC_(0.2017472114947164350714869437390792212068e-57), SC_(0.9999999999999999999999999999999999999853), SC_(0.1467107114933843906766705943017863953664e-37) }, + { SC_(33), SC_(1), SC_(0.12707412242889404296875), SC_(0.8229453437029361024955107993279757815054e-31), SC_(0.03030303030303030303030303030294800849593), SC_(0.2715719634219689138235185637782320078968e-29), SC_(0.9999999999999999999999999999972842803658) }, + { SC_(33), SC_(1), SC_(0.1355634629726409912109375), SC_(0.6953343020389542949026699937929590951752e-30), SC_(0.03030303030303030303030303030233496872826), SC_(0.2294603196728549173178810979516765014078e-28), SC_(0.9999999999999999999999999999770539680327) }, + { SC_(33), SC_(1), SC_(0.221111953258514404296875), SC_(0.7139854397833551755002029129895412354711e-23), SC_(0.03030303030303030303029589044863246947855), SC_(0.2356151951285072079150669612865486077055e-21), SC_(0.9999999999999999999997643848048714927921) }, + { SC_(33), SC_(1), SC_(0.3082362115383148193359375), SC_(0.4117624899561525549513752195639221276796e-18), SC_(0.03030303030303030261854054034687774807893), SC_(0.1358816216855303431339538224560943021343e-16), SC_(0.9999999999999999864118378314469656866046) }, + { SC_(33), SC_(1), SC_(0.632396042346954345703125), SC_(0.8205929687777687411017031994522859152417e-8), SC_(0.03030302209710061525261561928599830850744), SC_(0.2707956796966636845635620558192543520298e-6), SC_(0.9999997292043203033363154364379441807456) }, + { SC_(33), SC_(1), SC_(0.81474220752716064453125), SC_(0.3508756004588363151953241854350576832713e-4), SC_(0.03026794274298441939878349788448679726198), SC_(0.001157889481514159840144569811935690354795), SC_(0.9988421105184858401598554301880643096452) }, + { SC_(33), SC_(1), SC_(0.8350250720977783203125), SC_(0.7898962925645755921173217410200412877812e-4), SC_(0.03022404067377384547109129812892829890152), SC_(0.002606657765463099453987161745366136249678), SC_(0.9973933422345369005460128382546338637503) }, + { SC_(33), SC_(1), SC_(0.905801355838775634765625), SC_(0.001157641138967587107174938586281028219738), SC_(0.02914538916406271592312809171674927481057), SC_(0.03820215758593037453677297334727393125134), SC_(0.9617978424140696254632270266527260687487) }, + { SC_(33), SC_(1), SC_(0.913384497165679931640625), SC_(0.001524249462404083631367707417633389597229), SC_(0.02877878084062621939893532288539691343307), SC_(0.05030023225933475983513434478190185670854), SC_(0.9496997677406652401648656552180981432915) }, + { SC_(33), SC_(1), SC_(0.9688708782196044921875), SC_(0.01067236909908634389643896955703768540217), SC_(0.01963066120394395913386406074599261762813), SC_(0.3521881802698493485824859953822436182716), SC_(0.6478118197301506514175140046177563817284) }, + { SC_(33), SC_(5), SC_(0.12707412242889404296875), SC_(0.4861242410858350651210750044610828525388e-31), SC_(0.4588239882357529416352945278586229506988e-6), SC_(0.1059500491582961236905406156097863160866e-24), SC_(0.9999999999999999999999998940499508417039) }, + { SC_(33), SC_(5), SC_(0.1355634629726409912109375), SC_(0.395523587810379904974742698202752485948e-30), SC_(0.4588239882357529416352941809474592489024e-6), SC_(0.8620377267789058471938770895924260018364e-24), SC_(0.9999999999999999999999991379622732210942) }, + { SC_(33), SC_(5), SC_(0.221111953258514404296875), SC_(0.2717714760027027114949194512965783627861e-23), SC_(0.4588239882357529389175798164440199443332e-6), SC_(0.5923218553757505191625045203091230930169e-17), SC_(0.999999999999999994076781446242494808375) }, + { SC_(33), SC_(5), SC_(0.3082362115383148193359375), SC_(0.9942915062384085003717590319580177235695e-19), SC_(0.4588239882356535124846707356210098833792e-6), SC_(0.2167043423474017750432743233767020258254e-12), SC_(0.9999999999997832956576525982249567256766) }, + { SC_(33), SC_(5), SC_(0.632396042346954345703125), SC_(0.1850940547269471522524025147232537009206e-9), SC_(0.4586388941810259944830421739563238055814e-6), SC_(0.0004034097158665604141268274948016105923509), SC_(0.9995965902841334395858731725051983894076) }, + { SC_(33), SC_(5), SC_(0.81474220752716064453125), SC_(0.7297758146670120989887221862681662231408e-7), SC_(0.3858464067690517317364223578442304369683e-6), SC_(0.1590535441429532864564435174138674260842), SC_(0.8409464558570467135435564825861325739158) }, + { SC_(33), SC_(5), SC_(0.8350250720977783203125), SC_(0.1133018363154299696748263966765230053351e-6), SC_(0.3455221519203229719604681797945240539473e-6), SC_(0.2469396527219348874567390091605317422828), SC_(0.7530603472780651125432609908394682577172) }, + { SC_(33), SC_(5), SC_(0.905801355838775634765625), SC_(0.3364553193416880269418126094364541685812e-6), SC_(0.1223686688940649146934819670345928907011e-6), SC_(0.7332993216754189293992764550776103136103), SC_(0.2667006783245810706007235449223896863897) }, + { SC_(33), SC_(5), SC_(0.913384497165679931640625), SC_(0.3608503506138044798070188172760285786614e-6), SC_(0.9797363762194846182827575919501848062091e-7), SC_(0.7864679264075276566722004069708451467639), SC_(0.2135320735924723433277995930291548532361) }, + { SC_(33), SC_(5), SC_(0.9688708782196044921875), SC_(0.4562760097130274562592707263529845954458e-6), SC_(0.2547978522725485376023850118062463836525e-8), SC_(0.9944467190293976455052366590254346310053), SC_(0.005553280970602354494763340974565368994749) }, + { SC_(33), SC_(9), SC_(0.12707412242889404296875), SC_(0.2872403011112381324953143121434002613421e-31), SC_(0.3171489994717360117948821118835187186847e-9), SC_(0.9056951199268616601211568572065747490248e-22), SC_(0.999999999999999999999909430488007313834) }, + { SC_(33), SC_(9), SC_(0.1355634629726409912109375), SC_(0.2250570591077292532036273301640222097365e-30), SC_(0.3171489994717360117946857788545221132447e-9), SC_(0.7096256317459582705993182280298601812843e-21), SC_(0.9999999999999999999992903743682540417294) }, + { SC_(33), SC_(9), SC_(0.221111953258514404296875), SC_(0.1035589711616644970431132987911914179191e-23), SC_(0.3171489994717349762051992192686594113649e-9), SC_(0.3265309723005875810521464461767457275606e-14), SC_(0.9999999999999967346902769941241894785355) }, + { SC_(33), SC_(9), SC_(0.3082362115383148193359375), SC_(0.2407433633575457728602683914095049551027e-19), SC_(0.317148999447661675459156258627603003357e-9), SC_(0.7590859935189566014309200759289920677026e-10), SC_(0.9999999999240914006481043398569079924071) }, + { SC_(33), SC_(9), SC_(0.632396042346954345703125), SC_(0.4364972486092405220641258337458026157155e-11), SC_(0.3127840269856436065742695775761718163408e-9), SC_(0.01376316019714073547981663028827916129585), SC_(0.9862368398028592645201833697117208387042) }, + { SC_(33), SC_(9), SC_(0.81474220752716064453125), SC_(0.2078402746327265531095554477906310709689e-9), SC_(0.109308724839009458685355388122998771529e-9), SC_(0.6553395248886763765790714202972695670273), SC_(0.3446604751113236234209285797027304329727) }, + { SC_(33), SC_(9), SC_(0.8350250720977783203125), SC_(0.2455431753406602761824699305391511384021e-9), SC_(0.716058241310757356124409053744787040958e-10), SC_(0.7742202426924030955048599537334972371145), SC_(0.2257797573075969044951400462665027628855) }, + { SC_(33), SC_(9), SC_(0.905801355838775634765625), SC_(0.3131451849754727650329623124259166443254e-9), SC_(0.400381449626324676194852348771319817251e-11), SC_(0.9873756042020240945584982314134549200922), SC_(0.01262439579797590544150176858654507990778) }, + { SC_(33), SC_(9), SC_(0.913384497165679931640625), SC_(0.3147837636079300605664617586820853132601e-9), SC_(0.2365235863805951228449077231544529237824e-11), SC_(0.9925421935186753172056811877556632325352), SC_(0.007457806481324682794318812244336767464834) }, + { SC_(33), SC_(9), SC_(0.9688708782196044921875), SC_(0.3171477656986804735330738603716525984753e-9), SC_(0.1233773055538261836975541977244022625908e-14), SC_(0.9999961097999438960411871748582529666221), SC_(0.3890200056103958812825141747033377855311e-5) }, + { SC_(33), SC_(13), SC_(0.12707412242889404296875), SC_(0.1697731624589095568538151749882247152956e-31), SC_(0.1053651161035667813255151706722978952946e-11), SC_(0.161128434853176665295433261222786656718e-19), SC_(0.9999999999999999999838871565146823334705) }, + { SC_(33), SC_(13), SC_(0.1355634629726409912109375), SC_(0.1281029464579810845850674598847966386292e-30), SC_(0.1053651161035667813144026076510888824046e-11), SC_(0.121580036349093521808352406803095995222e-18), SC_(0.9999999999999999998784199636509064781916) }, + { SC_(33), SC_(13), SC_(0.221111953258514404296875), SC_(0.3950658830541128462490728474306430250456e-24), SC_(0.1053651161035272747389074910122620835784e-11), SC_(0.3749494117823491115036368336804139057282e-12), SC_(0.9999999999996250505882176508884963631663) }, + { SC_(33), SC_(13), SC_(0.3082362115383148193359375), SC_(0.5846316826050804897939448468310039141968e-20), SC_(0.1053651155189350987221324125029421440321e-11), SC_(0.5548626568497557534203204440182821081119e-8), SC_(0.9999999944513734315024424657967955598172) }, + { SC_(33), SC_(13), SC_(0.632396042346954345703125), SC_(0.1095019592114454570806258575984482695513e-12), SC_(0.9441492018242223561915031653704216390797e-12), SC_(0.1039261980253620551511687081304413084482), SC_(0.8960738019746379448488312918695586915518) }, + { SC_(33), SC_(13), SC_(0.81474220752716064453125), SC_(0.9897979556898189827786285446513050208297e-12), SC_(0.6385320534584883049350047831756488780129e-13), SC_(0.9393981540502594338542955363598247827758), SC_(0.06060184594974056614570446364017521722425) }, + { SC_(33), SC_(13), SC_(0.8350250720977783203125), SC_(0.1025681995141237591043684828728005569406e-11), SC_(0.2796916589443022222844419424086433922542e-13), SC_(0.9734550039626602563327171663317533485973), SC_(0.0265449960373397436672828336682466514027) }, + { SC_(33), SC_(13), SC_(0.905801355838775634765625), SC_(0.1053457108000677852566819764971494066174e-11), SC_(0.1940530349899607053092579973758424573486e-15), SC_(0.9998158280063021809805341367005066353936), SC_(0.0001841719936978190194658632994933646063643) }, + { SC_(33), SC_(13), SC_(0.913384497165679931640625), SC_(0.1053568193371307532735215508976186894704e-11), SC_(0.8296766436028053691351399268301392671577e-16), SC_(0.999921256989572593518054213058740466703), SC_(0.7874301042740648194578694125953329700795e-4) }, + { SC_(33), SC_(13), SC_(0.9688708782196044921875), SC_(0.1053651160258337766650834272157123636077e-11), SC_(0.7773300466212947508117462725538212750308e-21), SC_(0.9999999992622510415522800731577940863977), SC_(0.7377489584477199268422059136023296862401e-9) }, + { SC_(33), SC_(17), SC_(0.12707412242889404296875), SC_(0.1003742234964539776436421900507254745055e-31), SC_(0.905078967454980940752414584025503094728e-14), SC_(0.1109010673164788123887843223948045815264e-17), SC_(0.9999999999999999988909893268352118761122) }, + { SC_(33), SC_(17), SC_(0.1355634629726409912109375), SC_(0.7294184766299883217656215126470183445666e-31), SC_(0.9050789674549809344619720526901596535082e-14), SC_(0.8059169452153576242085990928445120709536e-17), SC_(0.999999999999999991940830547846423757914) }, + { SC_(33), SC_(17), SC_(0.221111953258514404296875), SC_(0.150896907155069734948134052558505332002e-24), SC_(0.9050789674398912510406498454952294659086e-14), SC_(0.1667223663139375944760008661676239408997e-10), SC_(0.9999999999833277633686062405523999133832) }, + { SC_(33), SC_(17), SC_(0.3082362115383148193359375), SC_(0.1424383939646312780197621490082064316522e-20), SC_(0.905078825016586977124878799227893862958e-14), SC_(0.1573767583674583969060511764333573613404e-6), SC_(0.9999998426232416325416030939488235666426) }, + { SC_(33), SC_(17), SC_(0.632396042346954345703125), SC_(0.2996641162552694500614590937854863328791e-14), SC_(0.6054148511997114916946977252045565382853e-14), SC_(0.3310916804286194902730705959529071438085), SC_(0.6689083195713805097269294040470928561915) }, + { SC_(33), SC_(17), SC_(0.81474220752716064453125), SC_(0.9002264012583455756579664787599117992579e-14), SC_(0.4852566196635366098190340230131071906578e-16), SC_(0.9946385162277271291817885353177352199422), SC_(0.005361483772272870818211464682264780057833) }, + { SC_(33), SC_(17), SC_(0.8350250720977783203125), SC_(0.903701575968861101520578445409704751779e-14), SC_(0.1377391486119840235578373580338119385477e-16), SC_(0.9984781532488894651691209228490872581561), SC_(0.00152184675111053483087907715091274184389) }, + { SC_(33), SC_(17), SC_(0.905801355838775634765625), SC_(0.9050778699185167502525964555913744014043e-14), SC_(0.1097536464191503560363398668469760157931e-19), SC_(0.9999987873583370546111535660583336914955), SC_(0.1212641662945388846433941666308504451951e-5) }, + { SC_(33), SC_(17), SC_(0.913384497165679931640625), SC_(0.905078629866721392104730517937040198347e-14), SC_(0.3375882595496514263010530026728174114826e-20), SC_(0.9999996270068450502986338942978111420048), SC_(0.3729931549497013661057021888579951665526e-6) }, + { SC_(33), SC_(17), SC_(0.9688708782196044921875), SC_(0.9050789674549260748200686701672714694951e-14), SC_(0.5486693608814882277140166932116220213174e-27), SC_(0.999999999999939378840895584141099895075), SC_(0.6062115910441585890010492504526941051787e-13) }, + { SC_(33), SC_(21), SC_(0.12707412242889404296875), SC_(0.5936205823844925416735091300457011401217e-32), SC_(0.1497518175469779728159014001969684690599e-15), SC_(0.3964029232555193933548080800633621787115e-16), SC_(0.9999999999999999603597076744480606645192) }, + { SC_(33), SC_(21), SC_(0.1355634629726409912109375), SC_(0.4154805811235142921248055517863502074043e-31), SC_(0.1497518175469779372040491116904646733144e-15), SC_(0.2774461024442496139120290320294759676348e-15), SC_(0.999999999999999722553897555750386087971) }, + { SC_(33), SC_(21), SC_(0.221111953258514404296875), SC_(0.5771038169069744214395419818168825988592e-25), SC_(0.1497518174892675970614097818979396876133e-15), SC_(0.3853734975376400634670473876276300088668e-9), SC_(0.9999999996146265024623599365329526123724) }, + { SC_(33), SC_(21), SC_(0.3082362115383148193359375), SC_(0.3482858186626835926485418770134109237449e-21), SC_(0.1497514692611593160685145755000168723841e-15), SC_(0.2325753532530076922870773210052394450532e-5), SC_(0.9999976742464674699230771292267899476055) }, + { SC_(33), SC_(21), SC_(0.632396042346954345703125), SC_(0.9258457642654557173733143236819125823592e-16), SC_(0.5716724112043240701477579167370262755906e-16), SC_(0.6182534405467317599928954508441356999113), SC_(0.3817465594532682400071045491558643000887) }, + { SC_(33), SC_(21), SC_(0.81474220752716064453125), SC_(0.1497100039355602707156750627389681540943e-15), SC_(0.4181361141770803643216130292573170068691e-19), SC_(0.9997207806081913438294223176859746975912), SC_(0.000279219391808656170577682314025302408846) }, + { SC_(33), SC_(21), SC_(0.8350250720977783203125), SC_(0.1497442244995520260745325461198993018171e-15), SC_(0.759304742595267757467792199458397787002e-20), SC_(0.999949295791194182358883518640125900551), SC_(0.5070420880581764111648135987409944901045e-4) }, + { SC_(33), SC_(21), SC_(0.905801355838775634765625), SC_(0.1497518168739516375551025117495311703328e-15), SC_(0.6730263411970047122923627154622307154768e-24), SC_(0.9999999955057217186304092590787747234282), SC_(0.4494278281369590740921225276571839293236e-8) }, + { SC_(33), SC_(21), SC_(0.913384497165679931640625), SC_(0.1497518173984256048319816902321668511661e-15), SC_(0.1485523739201255338097270346289025841429e-24), SC_(0.9999999990080095430325990721279937837392), SC_(0.991990456967400927872006216260782170666e-9) }, + { SC_(33), SC_(21), SC_(0.9688708782196044921875), SC_(0.1497518175469779783395314158571992323438e-15), SC_(0.4125758081846946534512118986719180546631e-33), SC_(0.9999999999999999972449362221913111282498), SC_(0.2755063777808688871750187971240661469615e-17) }, + { SC_(33), SC_(25), SC_(0.12707412242889404296875), SC_(0.351183072704703197527191715327134390287e-32), SC_(0.4028411466176012290857537459358152650053e-17), SC_(0.8717656467154905683135686076765048057188e-15), SC_(0.9999999999999991282343532845094316864314) }, + { SC_(33), SC_(25), SC_(0.1355634629726409912109375), SC_(0.2367480690055051311375775109076619373264e-31), SC_(0.4028411466175992127881363955877014164219e-17), SC_(0.5876958473416299116127524099145230564142e-14), SC_(0.9999999999999941230415265837008838724759) }, + { SC_(33), SC_(25), SC_(0.221111953258514404296875), SC_(0.2210177452085690847172801760387412927072e-25), SC_(0.4028411444074241281831356034662110318096e-17), SC_(0.5486473938035207240073054399476371876635e-8), SC_(0.9999999945135260619647927599269456005236) }, + { SC_(33), SC_(25), SC_(0.3082362115383148193359375), SC_(0.8550211441428100929542412784891728150157e-22), SC_(0.4028325964061601521678969082262279004689e-17), SC_(0.212247718814692486122101639291330582779e-4), SC_(0.9999787752281185307513877898360708669417) }, + { SC_(33), SC_(25), SC_(0.632396042346954345703125), SC_(0.3364647663899230350231499653108362170888e-17), SC_(0.6637638022767854524567648532817657510826e-18), SC_(0.835229393062256957190086230610472862056), SC_(0.164770606937743042809913769389527137944) }, + { SC_(33), SC_(25), SC_(0.81474220752716064453125), SC_(0.4028372768605503683747832726164095492936e-17), SC_(0.3869757051211894043178022603242903418155e-22), SC_(0.9999903938386540109941610137915863542665), SC_(0.960616134598900583898620841364573354917e-5) }, + { SC_(33), SC_(25), SC_(0.8350250720977783203125), SC_(0.4028406998344879003975203241651000247313e-17), SC_(0.4467831136798713061264739127674657230807e-23), SC_(0.9999988909198639929853106818024166668952), SC_(0.1109080136007014689318197583333104817338e-5) }, + { SC_(33), SC_(25), SC_(0.905801355838775634765625), SC_(0.4028411466132654423074000643937738157356e-17), SC_(0.4336137961426386245238976461475994565956e-28), SC_(0.9999999999892361095736268446916035145649), SC_(0.1076389042637315530839648543506971480439e-10) }, + { SC_(33), SC_(25), SC_(0.913384497165679931640625), SC_(0.4028411466169156650341775451703644121176e-17), SC_(0.6859152346489054686483800794271224761599e-29), SC_(0.9999999999982973059221777734802914079281), SC_(0.1702694077822226519708592071853997480416e-11) }, + { SC_(33), SC_(25), SC_(0.9688708782196044921875), SC_(0.4028411466176015802687941497870889771796e-17), SC_(0.3230085192381501741050846980584183214858e-39), SC_(0.9999999999999999999999198173965221166489), SC_(0.8018260347788335105297067257344595321415e-22) }, + { SC_(33), SC_(29), SC_(0.12707412242889404296875), SC_(0.2078263170752095046936592893974534653461e-32), SC_(0.1580548711231143497868473865992989433974e-18), SC_(0.1314899791435872540292420541953171624129e-13), SC_(0.9999999999999868510020856412745970757946) }, + { SC_(33), SC_(29), SC_(0.1355634629726409912109375), SC_(0.1349551876910710640961807824643176579428e-31), SC_(0.1580548711231029325312490315879362619121e-18), SC_(0.8538502276589000156605246985131393441257e-13), SC_(0.9999999999999146149772341099984339475301) }, + { SC_(33), SC_(29), SC_(0.221111953258514404296875), SC_(0.8476958464957693533339818068936371367305e-26), SC_(0.1580548626461579630923246053545278110539e-18), SC_(0.5363300988271717947249064327248369310177e-7), SC_(0.9999999463669901172828205275093567275163) }, + { SC_(33), SC_(29), SC_(0.3082362115383148193359375), SC_(0.2108352084843069780256314847246544819443e-22), SC_(0.1580337876022679973522155755458734145421e-18), SC_(0.0001333936796671565056510944671183205929248), SC_(0.9998666063203328434943489055328816794071) }, + { SC_(33), SC_(29), SC_(0.632396042346954345703125), SC_(0.149376557586460818378855941366438639559e-18), SC_(0.8678313536655609671162197327907240431314e-20), SC_(0.945093033356145916800568644427919441693), SC_(0.05490696664385408319943135557208055830701) }, + { SC_(33), SC_(29), SC_(0.81474220752716064453125), SC_(0.1580548336422809376231603533408863784801e-18), SC_(0.3748083549042685778535345950151024338164e-25), SC_(0.9999997628618768653371074496755392378888), SC_(0.2371381231346628925503244607621111885968e-6) }, + { SC_(33), SC_(29), SC_(0.8350250720977783203125), SC_(0.15805486838118101724271030290169350217e-18), SC_(0.2741935410807307835792652377820319482332e-26), SC_(0.999999982652003121931721887002015125993), SC_(0.1734799687806827811299798487400700701591e-7) }, + { SC_(33), SC_(29), SC_(0.905801355838775634765625), SC_(0.1580548711231135400146449515787964146117e-18), SC_(0.2888035373187115549465378624044034393684e-32), SC_(0.9999999999999817276408334325364965779125), SC_(0.1827235916656746350342208751931515936114e-13) }, + { SC_(33), SC_(29), SC_(0.913384497165679931640625), SC_(0.1580548711231161008836019360345683558421e-18), SC_(0.3271664162026597775241482410772494846175e-33), SC_(0.9999999999999979300453451522265695071036), SC_(0.2069954654847773430492896441922849745735e-14) }, + { SC_(33), SC_(29), SC_(0.9688708782196044921875), SC_(0.1580548711231164280500181384342934382996e-18), SC_(0.2600524416907527398744901212482451719942e-45), SC_(0.9999999999999999999999999983546698697556), SC_(0.1645330130244360335315027139953365876762e-26) }, + { SC_(33), SC_(33), SC_(0.12707412242889404296875), SC_(0.1230309921542619492984190972043851742351e-32), SC_(0.8394855792252206344749750461342236541114e-20), SC_(0.1465552180989122854946334136502463681282e-12), SC_(0.9999999999998534447819010877145053665863) }, + { SC_(33), SC_(33), SC_(0.1355634629726409912109375), SC_(0.7696018471329899664856903268453869070807e-32), SC_(0.8394855792245740636199963181170363828818e-20), SC_(0.9167541005804523023603599853940277773624e-12), SC_(0.9999999999990832458994195476976396400146) }, + { SC_(33), SC_(33), SC_(0.221111953258514404296875), SC_(0.3256390660463019532037424359959955583219e-26), SC_(0.8394852535862776191651761043410860772131e-20), SC_(0.3879031088857935519120129396737462480874e-6), SC_(0.9999996120968911142064480879870603262538) }, + { SC_(33), SC_(33), SC_(0.3082362115383148193359375), SC_(0.5224637251287593472809054632169438294515e-23), SC_(0.8389631155002149061198484026203051293792e-20), SC_(0.0006223617630345429273325451831591647408451), SC_(0.9993776382369654570726674548168408352592) }, + { SC_(33), SC_(33), SC_(0.632396042346954345703125), SC_(0.8272720626296260560546773869546017800921e-20), SC_(0.1221351659571760941245192112892029311653e-21), SC_(0.9854511895165752131044881449673107884731), SC_(0.01454881048342478689551185503268921152685) }, + { SC_(33), SC_(33), SC_(0.81474220752716064453125), SC_(0.8394855754795861586952818206135308738965e-20), SC_(0.3745757506771847487469991199312156916278e-28), SC_(0.9999999955380323385324391147890154710619), SC_(0.4461967661467560885210984528938139857954e-8) }, + { SC_(33), SC_(33), SC_(0.8350250720977783203125), SC_(0.8394855790520700655717188808317857800164e-20), SC_(0.1732735998954104272517362931921977384658e-29), SC_(0.9999999997935955015983681584922040197162), SC_(0.2064044984016318415077959802838389751254e-9) }, + { SC_(33), SC_(33), SC_(0.905801355838775634765625), SC_(0.8394855792253436457677028943284593258906e-20), SC_(0.1969942641375506274731806724467650661651e-36), SC_(0.9999999999999999765339311344297282144898), SC_(0.2346606886557027178551018489010807278239e-16) }, + { SC_(33), SC_(33), SC_(0.913384497165679931640625), SC_(0.8394855792253436638697131907011038438284e-20), SC_(0.1597416117382418229380170622945272966504e-37), SC_(0.9999999999999999980971488291002283296028), SC_(0.1902851170899771670397207831281237524968e-17) }, + { SC_(33), SC_(33), SC_(0.9688708782196044921875), SC_(0.8394855792253436654671293080835007028272e-20), SC_(0.2137038139187587356074671893581920146435e-51), SC_(0.9999999999999999999999999999999745434801), SC_(0.2545651994593632923632668870479677183771e-31) }, + { SC_(33), SC_(37), SC_(0.12707412242889404296875), SC_(0.7285853212734233331854479582364611069602e-33), SC_(0.5720050994065464625310859364901099296336e-21), SC_(0.1273739206221064013662468916707422394935e-11), SC_(0.9999999999987262607937789359863375310833) }, + { SC_(33), SC_(37), SC_(0.1355634629726409912109375), SC_(0.4390583599737356613280946641936797134501e-32), SC_(0.5720050994028844642526220032100144309499e-21), SC_(0.7675777024168108260969960031043150523179e-11), SC_(0.999999999992324222975831891739030039969) }, + { SC_(33), SC_(37), SC_(0.221111953258514404296875), SC_(0.1253038455227315347473265432842145831742e-26), SC_(0.572003846368819820537011886557862535446e-21), SC_(0.2190607140610709345189453766707572664516e-5), SC_(0.9999978093928593892906548105462332924273) }, + { SC_(33), SC_(37), SC_(0.3082362115383148193359375), SC_(0.1301879224495875261739036395620542959801e-23), SC_(0.5707032201827791725906203234276748346321e-21), SC_(0.002275992339657308496638948213581201417837), SC_(0.9977240076603426915033610517864187985822) }, + { SC_(33), SC_(37), SC_(0.632396042346954345703125), SC_(0.5702000964850858299568144141006277422619e-21), SC_(0.1805002922189217895544945722667635329949e-23), SC_(0.996844428617752527395147275516427061647), SC_(0.003155571382247472604852724483572938352978) }, + { SC_(33), SC_(37), SC_(0.81474220752716064453125), SC_(0.5720050993689770882613878160809899087848e-21), SC_(0.3829795959097154374230546880708399774445e-31), SC_(0.9999999999330461220876233833858861179858), SC_(0.6695387791237661661411388201416955600054e-10) }, + { SC_(33), SC_(37), SC_(0.8350250720977783203125), SC_(0.5720050994061562819361855494417429786621e-21), SC_(0.1118765916173810381552398929761038052868e-32), SC_(0.9999999999980441329678125219956729935701), SC_(0.1955867032187478004327006429854365510474e-11) }, + { SC_(33), SC_(37), SC_(0.905801355838775634765625), SC_(0.5720050994072750478386793264226745098158e-21), SC_(0.1368003340062086777606654087033805046052e-40), SC_(0.9999999999999999999760840709028705588364), SC_(0.2391592909712944116359968696807138108169e-19) }, + { SC_(33), SC_(37), SC_(0.913384497165679931640625), SC_(0.5720050994072750478515655500584547697405e-21), SC_(0.793809764840607851315167617591115441285e-42), SC_(0.9999999999999999999986122330628465166784), SC_(0.1387766937153483321619936317086154731009e-20) }, + { SC_(33), SC_(37), SC_(0.9688708782196044921875), SC_(0.5720050994072750478523593598232953774135e-21), SC_(0.1783917603822084521665487856779564144674e-57), SC_(0.9999999999999999999999999999999999996881), SC_(0.3118709266177209472822493711394611582209e-36) }, + { SC_(37), SC_(1), SC_(0.12707412242889404296875), SC_(0.1913866694140651973620209084204258658603e-34), SC_(0.02702702702702702702702702702702700788836), SC_(0.7081306768320412302394773611555757036831e-33), SC_(0.9999999999999999999999999999999992918693) }, + { SC_(37), SC_(1), SC_(0.1355634629726409912109375), SC_(0.2094481302283473556544275430162133809304e-33), SC_(0.0270270270270270270270270270270268175789), SC_(0.7749580818448852159213819091599895094426e-32), SC_(0.9999999999999999999999999999999922504192) }, + { SC_(37), SC_(1), SC_(0.221111953258514404296875), SC_(0.1522125478019930782618535858363091426624e-25), SC_(0.02702702702702702702702701180577224682772), SC_(0.5631864268673743895688582675943438278508e-24), SC_(0.9999999999999999999999994368135731326256) }, + { SC_(37), SC_(1), SC_(0.3082362115383148193359375), SC_(0.3315077075190969124367733223906869011355e-20), SC_(0.02702702702702702702371194995183605790266), SC_(0.1226578517820658576016061292845541534202e-18), SC_(0.9999999999999999998773421482179341423984) }, + { SC_(37), SC_(1), SC_(0.632396042346954345703125), SC_(0.1170567819805101951715039582856917625312e-8), SC_(0.02702702585645920722192507531198744417011), SC_(0.4331100933278877221345646456570595213656e-7), SC_(0.999999956688990667211227786543535434294) }, + { SC_(37), SC_(1), SC_(0.81474220752716064453125), SC_(0.1378942783416201592372365937441298558625e-4), SC_(0.02701323759919286501110330336765261404144), SC_(0.0005102088298639945891777753968532804666911), SC_(0.9994897911701360054108222246031467195333) }, + { SC_(37), SC_(1), SC_(0.8350250720977783203125), SC_(0.3425155978936427978522724098975190106055e-4), SC_(0.02699277546723766274724179978603727512597), SC_(0.00126730771220647835205340791662082033924), SC_(0.9987326922877935216479465920833791796608) }, + { SC_(37), SC_(1), SC_(0.905801355838775634765625), SC_(0.0006950531778868697451647344862329718136642), SC_(0.02633197384914015728186229254079405521336), SC_(0.02571696758181418057109517599061995710558), SC_(0.9742830324181858194289048240093800428944) }, + { SC_(37), SC_(1), SC_(0.913384497165679931640625), SC_(0.000946199710034559212915476605876519313475), SC_(0.02608082731699246781411155042115050771355), SC_(0.03500938927127869087787263441743121459857), SC_(0.9649906107287213091221273655825687854014) }, + { SC_(37), SC_(1), SC_(0.9688708782196044921875), SC_(0.008387579736311963674588890850383234914083), SC_(0.01863944729071506335243813617664379211294), SC_(0.3103404502435426559597889614641796918211), SC_(0.6896595497564573440402110385358203081789) }, + { SC_(37), SC_(5), SC_(0.12707412242889404296875), SC_(0.1128494622544072532685008314333501227297e-34), SC_(0.2668808830554658539254174684100345662366e-6), SC_(0.4228458065726414339245399303724485763669e-28), SC_(0.9999999999999999999999999999577154193427) }, + { SC_(37), SC_(5), SC_(0.1355634629726409912109375), SC_(0.1189064328186999506994152559944967459886e-33), SC_(0.2668808830554658539254174683024130796433e-6), SC_(0.445541214707340528271201970058819362252e-27), SC_(0.9999999999999999999999999995544587852927) }, + { SC_(37), SC_(5), SC_(0.221111953258514404296875), SC_(0.5773208039862400764333589548507392971206e-26), SC_(0.2668808830554658539196442603814571116977e-6), SC_(0.2163215279328401703995031670236171638918e-19), SC_(0.99999999999999999997836784720671598296) }, + { SC_(37), SC_(5), SC_(0.3082362115383148193359375), SC_(0.7959995668115188181441448247625544203386e-21), SC_(0.2668808830554650579258506569025013683172e-6), SC_(0.2982602416847092896397929216937043787465e-14), SC_(0.9999999999999970173975831529071036020708) }, + { SC_(37), SC_(5), SC_(0.632396042346954345703125), SC_(0.2580450978256403600471477404235808210546e-10), SC_(0.2668550785456832898894127536472771543799e-6), SC_(0.9668924011016961726930621118897531006833e-4), SC_(0.9999033107598898303827306937888110246899) }, + { SC_(37), SC_(5), SC_(0.81474220752716064453125), SC_(0.2692477857350550576081457455416917192588e-7), SC_(0.2399561044819603481646028938671503405361e-6), SC_(0.1008868760671393950307146027087263455146), SC_(0.8991131239328606049692853972912736544854) }, + { SC_(37), SC_(5), SC_(0.8350250720977783203125), SC_(0.4564938189791655803981883801247834822343e-7), SC_(0.2212315011575492958855986304088411642386e-6), SC_(0.1710477774776743638096207878443762460097), SC_(0.8289522225223256361903792121556237539903) }, + { SC_(37), SC_(5), SC_(0.905801355838775634765625), SC_(0.1754142168238037723494271308027148430891e-6), SC_(0.9146666623166208157599033761860466937288e-7), SC_(0.6572753162966244969555799648464644899065), SC_(0.3427246837033755030444200351535355100935) }, + { SC_(37), SC_(5), SC_(0.913384497165679931640625), SC_(0.1921105748236999333987355111240336099689e-6), SC_(0.7477030823176592052668195729728590249306e-7), SC_(0.7198364027586554134457279728266426962175), SC_(0.2801635972413445865542720271733573037825) }, + { SC_(37), SC_(5), SC_(0.9688708782196044921875), SC_(0.2645803857305109882287126511078342644041e-6), SC_(0.2300497324954865696704817313485248057942e-8), SC_(0.9913800595283673677831040165745439103794), SC_(0.008619940471632632216895983425456089620629) }, + { SC_(37), SC_(9), SC_(0.12707412242889404296875), SC_(0.6655570763059608111783982205247468471267e-35), SC_(0.1253844881632444697793833470777247560675e-9), SC_(0.530812930734652006458893170240767910018e-25), SC_(0.9999999999999999999999999469187069265348) }, + { SC_(37), SC_(9), SC_(0.1355634629726409912109375), SC_(0.6752242961168721925524748101238166071667e-34), SC_(0.1253844881632444697793832862108659074399e-9), SC_(0.5385229911675862096919622567730659564947e-24), SC_(0.9999999999999999999999994614770088324138) }, + { SC_(37), SC_(9), SC_(0.221111953258514404296875), SC_(0.2191599317590748548537396230443711820992e-26), SC_(0.1253844881632444675877840361425469705897e-9), SC_(0.1747903069746070542691738837476463897494e-16), SC_(0.9999999999999999825209693025392945730826) }, + { SC_(37), SC_(9), SC_(0.3082362115383148193359375), SC_(0.1915464707747466537816391509579911984652e-21), SC_(0.1253844881630529233086086070795138799761e-9), SC_(0.1527672789359418361913072599065045603609e-11), SC_(0.9999999999984723272106405816380869274009) }, + { SC_(37), SC_(9), SC_(0.632396042346954345703125), SC_(0.589420006940180388195858404716216388799e-12), SC_(0.1247950681563042893911874953285793027383e-9), SC_(0.004700900530636488092422429901454789903929), SC_(0.9952990994693635119075775700985452100961) }, + { SC_(37), SC_(9), SC_(0.81474220752716064453125), SC_(0.6784655322319837314358834928370544304779e-10), SC_(0.5753793494004609663579500444959007607929e-10), SC_(0.5411080287289244256463985107565107784502), SC_(0.4588919712710755743536014892434892215498) }, + { SC_(37), SC_(9), SC_(0.8350250720977783203125), SC_(0.8528785121850841112319907288110237449494e-10), SC_(0.4009663694473605865618428085219314463215e-10), SC_(0.6802105465188628526232266548807004619454), SC_(0.3197894534811371473767733451192995380546) }, + { SC_(37), SC_(9), SC_(0.905801355838775634765625), SC_(0.1225339947591074704550052796786259622938e-9), SC_(0.2850493404136999324378074054669556833276e-11), SC_(0.9772659804582382123829461957340667771481), SC_(0.02273401954176178761705380426593322285193) }, + { SC_(37), SC_(9), SC_(0.913384497165679931640625), SC_(0.1236544243802604474152624525469236891668e-9), SC_(0.1730063782984022364120901186371829960308e-11), SC_(0.9862019312888882717821045961709356789802), SC_(0.01379806871111172821789540382906432101982) }, + { SC_(37), SC_(9), SC_(0.9688708782196044921875), SC_(0.1253833856208952171254910249612084192646e-9), SC_(0.1102542349252653892328772087099862452543e-14), SC_(0.9999912067085378440298773358458893558355), SC_(0.8793291462155970122664154110644164521126e-5) }, + { SC_(37), SC_(13), SC_(0.12707412242889404296875), SC_(0.392619492799588947053202892481973165335e-35), SC_(0.2929322888897563317260752904128108795278e-12), SC_(0.1340308008678925178326386744489204631352e-22), SC_(0.9999999999999999999999865969199132107482) }, + { SC_(37), SC_(13), SC_(0.1355634629726409912109375), SC_(0.3835376912246461216092659531438867642672e-34), SC_(0.2929322888897563317260408628386164108051e-12), SC_(0.1309304934182208573267445569554403651992e-21), SC_(0.9999999999999999999998690695065817791427) }, + { SC_(37), SC_(13), SC_(0.221111953258514404296875), SC_(0.8327278759078331664531773935175465779689e-27), SC_(0.2929322888897554989982033087745724222399e-12), SC_(0.2842731605532315785663601756871384082971e-14), SC_(0.9999999999999971572683944676842143363982) }, + { SC_(37), SC_(13), SC_(0.3082362115383148193359375), SC_(0.4620193905780370783509380349315130566184e-22), SC_(0.2929322888435543926682755087726450719241e-12), SC_(0.1577222478031146201206842811251156964816e-9), SC_(0.9999999998422777521968853798793157188749) }, + { SC_(37), SC_(13), SC_(0.632396042346954345703125), SC_(0.1412827378151559513658749812009330082937e-13), SC_(0.2788040151082407365894917184876455745879e-12), SC_(0.04823051031712213711159108475320266127814), SC_(0.9517694896828778628884089152467973387219) }, + { SC_(37), SC_(13), SC_(0.81474220752716064453125), SC_(0.2615401644966002836258119298950072260893e-12), SC_(0.3139212439315604810026728671273164932798e-13), SC_(0.8928348782848915497015692681664196170436), SC_(0.1071651217151084502984307318335803829564) }, + { SC_(37), SC_(13), SC_(0.8350250720977783203125), SC_(0.278077865881119056902705167492772086213e-12), SC_(0.1485442300863727482337404911496678920428e-13), SC_(0.9492905918124045861056506459116833562307), SC_(0.05070940818759541389434935408831664376934) }, + { SC_(37), SC_(13), SC_(0.905801355838775634765625), SC_(0.2927967024625285246345760853740034327444e-12), SC_(0.135586427227807091503131233735442672911e-15), SC_(0.9995371407237430408499204043139161724397), SC_(0.000462859276256959150079595686083827560296) }, + { SC_(37), SC_(13), SC_(0.913384497165679931640625), SC_(0.2928725911335584059006481745821517225259e-12), SC_(0.5969775619792582543104202558715289132277e-16), SC_(0.9997962062959184646560416547864780201418), SC_(0.0002037937040815353439583452135219798582082) }, + { SC_(37), SC_(13), SC_(0.9688708782196044921875), SC_(0.2929322881980351671724017900866478324219e-12), SC_(0.6917211645536774265210910429953338310985e-21), SC_(0.9999999976386312100473041943388297357636), SC_(0.2361368789952695805661170264236437763777e-8) }, + { SC_(37), SC_(17), SC_(0.12707412242889404296875), SC_(0.2316658393182091760507871041575739736439e-35), SC_(0.18206668343869427942996185391687909408e-14), SC_(0.1272423020745670836626242354286779605021e-20), SC_(0.9999999999999999999987275769792543291634) }, + { SC_(37), SC_(17), SC_(0.1355634629726409912109375), SC_(0.2179158878158653195962770298457312358696e-34), SC_(0.18206668343869427942801436087803865006e-14), SC_(0.1196901507184548835621060808173464166388e-19), SC_(0.9999999999999999999880309849281545116438) }, + { SC_(37), SC_(17), SC_(0.221111953258514404296875), SC_(0.3167127005513650091401039137958912403293e-27), SC_(0.1820666834386626081601383832552832928646e-14), SC_(0.173954231806506710169603514970096822109e-12), SC_(0.999999999999826045768193493289830396485) }, + { SC_(37), SC_(17), SC_(0.3082362115383148193359375), SC_(0.1117284707149662777483606761677198690162e-22), SC_(0.1820666823214095722805307422725905415788e-14), SC_(0.6136678529248193157890018329791505807387e-8), SC_(0.9999999938633214707518068421099816702085) }, + { SC_(37), SC_(17), SC_(0.632396042346954345703125), SC_(0.3619401922431647019021200796311128424104e-15), SC_(0.145872664214377809239981511793086019015e-14), SC_(0.1987954003484869622208456356810718141056), SC_(0.8012045996515130377791543643189281858944) }, + { SC_(37), SC_(17), SC_(0.81474220752716064453125), SC_(0.1797578448872147831632375323107784888429e-14), SC_(0.2308838551479496266955987445418814413123e-16), SC_(0.9873187202190293576601799836162460327801), SC_(0.01268127978097064233982001638375396721992) }, + { SC_(37), SC_(17), SC_(0.8350250720977783203125), SC_(0.181353597570150272786414579485530112889e-14), SC_(0.7130858685440066437789402706671903670613e-17), SC_(0.9960833807972114908865057080473884254761), SC_(0.003916619202788509113494291952611574523867) }, + { SC_(37), SC_(17), SC_(0.905801355838775634765625), SC_(0.182065923870732487905136274724260659795e-14), SC_(0.7595679617915250572450319366434610564898e-20), SC_(0.9999958280782214210667047072229244628135), SC_(0.4171921778578933295292777075537186512617e-5) }, + { SC_(37), SC_(17), SC_(0.913384497165679931640625), SC_(0.1820664425714415207369368902638114963868e-14), SC_(0.2408672527586932566294923858068692437318e-20), SC_(0.999998677038279549929967346525457876789), SC_(0.1322961720450070032653474542123210956566e-5) }, + { SC_(37), SC_(17), SC_(0.9688708782196044921875), SC_(0.1820666834386455663477988348135040902836e-14), SC_(0.4871308239468494269321297245371483386562e-27), SC_(0.9999999999997324437317435527817935843859), SC_(0.2675562682564472182064156141462812890408e-12) }, + { SC_(37), SC_(21), SC_(0.12707412242889404296875), SC_(0.1367283871473772887888995288893743573017e-35), SC_(0.2233141138858443542657853024003671885347e-16), SC_(0.6122693490715561833546216029687369139466e-19), SC_(0.9999999999999999999387730650928443816645) }, + { SC_(37), SC_(21), SC_(0.1355634629726409912109375), SC_(0.1238495205921040448141595760880756421893e-34), SC_(0.2233141138858443541556086205230008725994e-16), SC_(0.5545978193541968287671344509103650138834e-18), SC_(0.9999999999999999994454021806458031712329) }, + { SC_(37), SC_(21), SC_(0.221111953258514404296875), SC_(0.1205792304100742296901099459483486916224e-27), SC_(0.2233141138846385619753573988182038179541e-16), SC_(0.5399534687346853794138796143482768070262e-11), SC_(0.9999999999946004653126531462058612038565) }, + { SC_(37), SC_(21), SC_(0.3082362115383148193359375), SC_(0.2709504253526723921055069480191643748653e-23), SC_(0.2233140867908018190122189305644101154971e-16), SC_(0.1213315274336754105519794881058059145102e-6), SC_(0.9999998786684725663245894480205118941941) }, + { SC_(37), SC_(21), SC_(0.632396042346954345703125), SC_(0.1016715309898744400019197158899233635504e-16), SC_(0.1216425828959699142775384252251815538631e-16), SC_(0.4552848416999194913983301030365992664685), SC_(0.5447151583000805086016698969634007335315) }, + { SC_(37), SC_(21), SC_(0.81474220752716064453125), SC_(0.2231187795051185908671646958387512725844e-16), SC_(0.1953343807257634122934452763536448291547e-19), SC_(0.9991252931696667585671441040105075394297), SC_(0.0008747068303332414328558959894924605703486) }, + { SC_(37), SC_(21), SC_(0.8350250720977783203125), SC_(0.2232753700152236943025410245050934559895e-16), SC_(0.3874387062065997691711661001146142410678e-20), SC_(0.9998265050518013142476162991529082094046), SC_(0.0001734949481986857523837008470917905954161) }, + { SC_(37), SC_(21), SC_(0.905801355838775634765625), SC_(0.2233141092545812912080763536104581373885e-16), SC_(0.4631263063071381787504646780025124567342e-24), SC_(0.9999999792612164879160704961751111285463), SC_(0.2073878351208392950382488887145374200939e-7) }, + { SC_(37), SC_(21), SC_(0.913384497165679931640625), SC_(0.2233141128312866079608005762325434276835e-16), SC_(0.1054557746318657564882561489730079535716e-24), SC_(0.9999999952776932547230958242069873380801), SC_(0.4722306745276904175793012661919897993125e-8) }, + { SC_(37), SC_(21), SC_(0.9688708782196044921875), SC_(0.2233141138858443506216565535708804853736e-16), SC_(0.3657801587544224432040014109455408426581e-33), SC_(0.999999999999999983620374351197295238402), SC_(0.1637962564880270476159798955693057856045e-16) }, + { SC_(37), SC_(25), SC_(0.12707412242889404296875), SC_(0.8071700065818245626961924402523662309835e-36), SC_(0.454711706154196492198266792431139738199e-18), SC_(0.1775124756317811951436445419736660264706e-17), SC_(0.9999999999999999982248752436821880485636) }, + { SC_(37), SC_(25), SC_(0.1355634629726409912109375), SC_(0.7040901204626361508125947713906654422191e-35), SC_(0.4547117061541964859645355943866027927693e-18), SC_(0.1548431920562593519429142980041967750624e-16), SC_(0.9999999999999999845156807943740648057086) }, + { SC_(37), SC_(25), SC_(0.221111953258514404296875), SC_(0.4595686308880832927234566509286237213654e-28), SC_(0.4547117061082396299166284697406186358023e-18), SC_(0.1010681327681147879770979448698852571981e-9), SC_(0.9999999998989318672318852120229020551301) }, + { SC_(37), SC_(25), SC_(0.3082362115383148193359375), SC_(0.6591079834839574506016947096871578466335e-24), SC_(0.4547110470462130090479861973182546137374e-18), SC_(0.1449507401202573159070668978058785564683e-5), SC_(0.9999985504925987974268409293310219412144) }, + { SC_(37), SC_(25), SC_(0.632396042346954345703125), SC_(0.3237210645255087178872589725932935850287e-18), SC_(0.1309906416286877751181778264196707158665e-18), SC_(0.7119259525193139248744690384012773103738), SC_(0.2880740474806860751255309615987226896262) }, + { SC_(37), SC_(25), SC_(0.81474220752716064453125), SC_(0.4546938349892849959165146004631223823109e-18), SC_(0.1787116491149708892219854984191858434934e-22), SC_(0.9999606978121090270999489734178963983272), SC_(0.3930218789097290005102658210360167278716e-4) }, + { SC_(37), SC_(25), SC_(0.8350250720977783203125), SC_(0.4547094473165351008040658988913111228318e-18), SC_(0.2258837661392201370900121653178063368484e-23), SC_(0.9999950323740717020140356938715477558239), SC_(0.4967625928297985964306128452244176057518e-5) }, + { SC_(37), SC_(25), SC_(0.905801355838775634765625), SC_(0.4547117061244709905492548288621730202575e-18), SC_(0.2972550245618197015079128063767961580802e-28), SC_(0.9999999999346278047081950274296909639257), SC_(0.653721952918049725703090360742526644479e-10) }, + { SC_(37), SC_(25), SC_(0.913384497165679931640625), SC_(0.4547117061493436113293187609028179203e-18), SC_(0.485288167611803811014638059520816300323e-29), SC_(0.9999999999893275637938549444879816573376), SC_(0.1067243620614505551201834266244538095768e-10) }, + { SC_(37), SC_(25), SC_(0.9688708782196044921875), SC_(0.4547117061541964930051507055370937092949e-18), SC_(0.2860934758705916002847465492653977221396e-39), SC_(0.9999999999999999999993708244762593049649), SC_(0.6291755237406950351066449839824147319877e-21) }, + { SC_(37), SC_(29), SC_(0.12707412242889404296875), SC_(0.4766330808725786443659155604415316685681e-36), SC_(0.1375136208127610314248295135563600183051e-19), SC_(0.3466079054972770261780389909617086325127e-16), SC_(0.9999999999999999653392094502722973821961) }, + { SC_(37), SC_(29), SC_(0.1355634629726409912109375), SC_(0.4004006054486037593711343143831791648418e-35), SC_(0.1375136208127609961510997774217705248508e-19), SC_(0.2911715967349812132453165500933749097082e-15), SC_(0.9999999999999997088284032650187867546834) }, + { SC_(37), SC_(29), SC_(0.221111953258514404296875), SC_(0.1753587499707554747005620785876106633731e-28), SC_(0.1375136206374022862204048475815843833767e-19), SC_(0.1275210040534998938970298246567218844378e-8), SC_(0.9999999987247899594650010610297017534328) }, + { SC_(37), SC_(29), SC_(0.3082362115383148193359375), SC_(0.1608786173729871882808705880355057485693e-24), SC_(0.1375120120265873063192775135762661069068e-19), SC_(0.1169910416307341673298134563086833102055e-4), SC_(0.999988300895836926583267018654369131669) }, + { SC_(37), SC_(29), SC_(0.632396042346954345703125), SC_(0.1211817029840737712700634042710214063881e-19), SC_(0.1633191782868726492109691801112505557621e-20), SC_(0.8812341807876264574086829999902870889094), SC_(0.1187658192123735425913170000097129110906) }, + { SC_(37), SC_(29), SC_(0.81474220752716064453125), SC_(0.1375134490666369054158046750705216931691e-19), SC_(0.1717461241307753556472116247687952022222e-25), SC_(0.9999987510609995163650009753189533339105), SC_(0.1248939000483634999024681046666089532256e-5) }, + { SC_(37), SC_(29), SC_(0.8350250720977783203125), SC_(0.1375136070374709087705383773559060076924e-19), SC_(0.137752901274206219449262404542718836151e-26), SC_(0.9999998998259950832281638040481079049166), SC_(0.1001740049167718361959518920950833547538e-6) }, + { SC_(37), SC_(29), SC_(0.905801355838775634765625), SC_(0.1375136208127412908262196047290587793477e-19), SC_(0.1974536494071755308768261658782637976138e-32), SC_(0.9999999999998564115698211241054490648372), SC_(0.1435884301788758945509351628456887462036e-12) }, + { SC_(37), SC_(29), SC_(0.913384497165679931640625), SC_(0.1375136208127587270061499750741568866244e-19), SC_(0.2309185010347207989575339864017076569671e-33), SC_(0.9999999999999832075906612087444484899632), SC_(0.1679240933879125555151003684677899740315e-13) }, + { SC_(37), SC_(29), SC_(0.9688708782196044921875), SC_(0.1375136208127610361911603199804487667413e-19), SC_(0.2301697695222936221483666697794390147364e-45), SC_(0.9999999999999999999999999832620384684879), SC_(0.1673796153151210231687675483695080784991e-25) }, + { SC_(37), SC_(33), SC_(0.12707412242889404296875), SC_(0.2815266604188693653913302322995077909319e-36), SC_(0.5720050994072747663256989409539299862616e-21), SC_(0.4921750884923820105209519233224389835091e-15), SC_(0.9999999999999995078249115076179894790481) }, + { SC_(37), SC_(33), SC_(0.1355634629726409912109375), SC_(0.2277707779163919100908933095549890064306e-35), SC_(0.5720050994072727701445801959041944686588e-21), SC_(0.3981971107467630507203470725973361693706e-14), SC_(0.9999999999999960180288925323694927965293) }, + { SC_(37), SC_(33), SC_(0.221111953258514404296875), SC_(0.6699377276839075532455324311258095644127e-29), SC_(0.5720050927078977710132838273679710663338e-21), SC_(0.1171209362255882974546065024517529113122e-7), SC_(0.9999999882879063774411702545393497548247) }, + { SC_(37), SC_(33), SC_(0.3082362115383148193359375), SC_(0.3941556123526471052080162297773181229352e-25), SC_(0.5719656838460397831418385582003176457796e-21), SC_(0.6890770952235920510157252810387715473455e-4), SC_(0.9999310922904776407948984274718961228453) }, + { SC_(37), SC_(33), SC_(0.632396042346954345703125), SC_(0.5497340418871139522096404153992420609406e-21), SC_(0.2227105752016109564271894442405331665125e-22), SC_(0.9610649318629521274528570243755901534052), SC_(0.03893506813704787254714297562440984659483) }, + { SC_(37), SC_(33), SC_(0.81474220752716064453125), SC_(0.5720050823395897515434476704627684761846e-21), SC_(0.1706768529630891168936052690140727778083e-28), SC_(0.9999999701616553523826219507757071998362), SC_(0.2983834464761737804922429280016380616641e-7) }, + { SC_(37), SC_(33), SC_(0.8350250720977783203125), SC_(0.5720050985407469884566837838946864514369e-21), SC_(0.8665280593956755759286089261549931701012e-30), SC_(0.9999999984851043106196220087456203622238), SC_(0.1514895689380377991254379637776220948978e-8) }, + { SC_(37), SC_(33), SC_(0.905801355838775634765625), SC_(0.572005099407274913436774974821917171636e-21), SC_(0.1344155843850013782059558794526739210542e-36), SC_(0.9999999999999997650098145553493760303857), SC_(0.2349901854446506239696142929776751238858e-15) }, + { SC_(37), SC_(33), SC_(0.913384497165679931640625), SC_(0.5720050994072750365977061126186163585042e-21), SC_(0.1125465324720467901908766696294229578058e-37), SC_(0.999999999999999980324208195229357614054), SC_(0.1967579180477064238594600964257347683977e-16) }, + { SC_(37), SC_(33), SC_(0.9688708782196044921875), SC_(0.5720050994072750478523593598231063318166e-21), SC_(0.1890457752154400724263869930444876559631e-51), SC_(0.9999999999999999999999999999996695033394), SC_(0.3304966606265113541490993068263355840044e-30) }, + { SC_(37), SC_(37), SC_(0.12707412242889404296875), SC_(0.1663315126472082518689392220455877254431e-36), SC_(0.3095647894727759768982379894849795807496e-22), SC_(0.5373075953841159720995259363454571859457e-14), SC_(0.9999999999999946269240461588402790047406) }, + { SC_(37), SC_(37), SC_(0.1355634629726409912109375), SC_(0.1296111998868566405720542382682176670195e-35), SC_(0.309564789472764679093375775903441064718e-22), SC_(0.4186884435649110798542051137448125301801e-13), SC_(0.9999999999999581311556435088920145794886) }, + { SC_(37), SC_(37), SC_(0.221111953258514404296875), SC_(0.2562741045594853507301922042614016365325e-29), SC_(0.3095647638453671842648293885482778440017e-22), SC_(0.8278528866152636518115304178551121854591e-7), SC_(0.9999999172147113384736348188469582144888) }, + { SC_(37), SC_(37), SC_(0.3082362115383148193359375), SC_(0.9697027380656677021427830653945592127811e-26), SC_(0.3094678191989710734431501832609588142206e-22), SC_(0.0003132471040124351596576730870327977659869), SC_(0.999686752895987564840342326912967202234) }, + { SC_(37), SC_(37), SC_(0.632396042346954345703125), SC_(0.3063451207632721012988627372821913143173e-22), SC_(0.3219668709505538914501724285306955824562e-24), SC_(0.9895993704097000715411905826153733915169), SC_(0.01040062959029992845880941738462660848308) }, + { SC_(37), SC_(37), SC_(0.81474220752716064453125), SC_(0.3095647892990086195192122018743245560235e-22), SC_(0.1737690206941522596931737141183088624137e-31), SC_(0.9999999994386667133878509901348317251675), SC_(0.5613332866121490098651682748324536630957e-9) }, + { SC_(37), SC_(37), SC_(0.8350250720977783203125), SC_(0.3095647894672021976547480411236536892802e-22), SC_(0.557544255861642044384458086164795234761e-33), SC_(0.9999999999819894162765991478047915369078), SC_(0.180105837234008521952084630921920026118e-10) }, + { SC_(37), SC_(37), SC_(0.905801355838775634765625), SC_(0.3095647894727776401201650427507053565973e-22), SC_(0.9319941881679291354451743800364440933825e-41), SC_(0.9999999999999999996989340455175098675848), SC_(0.3010659544824901324152261922870847584496e-18) }, + { SC_(37), SC_(37), SC_(0.913384497165679931640625), SC_(0.3095647894727776402077793811087210433219e-22), SC_(0.5585080458777226819971826512604809980239e-42), SC_(0.9999999999999999999819582825673125691735), SC_(0.1804171743268743082647407545766726774271e-19) }, + { SC_(37), SC_(37), SC_(0.9688708782196044921875), SC_(0.3095647894727776402133644615674982685644e-22), SC_(0.1577418664709856221006413731479117116045e-57), SC_(0.9999999999999999999999999999999999949044), SC_(0.5095601044926236696504373430890795334844e-35) } + } }; +#undef SC_ + diff --git a/test/ibeta_inv_data.ipp b/test/ibeta_inv_data.ipp new file mode 100644 index 000000000..771ad8bdd --- /dev/null +++ b/test/ibeta_inv_data.ipp @@ -0,0 +1,1220 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1210> ibeta_inv_data = { { + { SC_(0.104760829344741068780422210693359375e-4), SC_(39078.1875), SC_(0.913384497165679931640625), SC_(0.2135769916611873809373928693612157637794870746322109915739746618652569766882593624385400901395922558e-3760), SC_(BOOST_MATH_SMALL_CONSTANT(0.6169146818683135737866366973021696361959736535710675458813428774517757535576031054239811928697394346e-101417)) }, + { SC_(0.1127331415773369371891021728515625e-4), SC_(0.0226620174944400787353515625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6398069040886718270700942839013650119743974939592699138527850527236181568779785317811717302449254101e-76964)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1123304116325227195797533167182832111272986902383876280357481893374380043283848201429836361152904889e-5592)) }, + { SC_(0.113778432933031581342220306396484375e-4), SC_(0.03654421865940093994140625), SC_(0.9688708782196044921875), SC_(0.5825356514402150924555439351704966386176716144780670249830283141506929468296452211723778443894234951e-1195), SC_(BOOST_MATH_SMALL_CONSTANT(0.1299246431009640780314778465681510321819328250560790012308930348335051591055920757982605267188242976e-132423)) }, + { SC_(0.1142846667789854109287261962890625e-4), SC_(0.00244517601095139980316162109375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9626654068785645417511885142439608103434581112273323673426712424844243107090177710187642425011765594e-75761)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1968131210354581442057523237500619235039616488884597039029510000400233015927645935497663749543679489e-5358)) }, + { SC_(0.1184685606858693063259124755859375e-4), SC_(0.015964560210704803466796875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3589991782488314563613963926946558354830549116688735009134661806895352582322279412078679966549495e-43116)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8498116607235052405320447197085177573554285064950351753253894145078534997511294854886147550142192844e-13482)) }, + { SC_(0.1215800511999987065792083740234375e-4), SC_(24110.49609375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6446009470761694712696178802124602151206198100070272397820841954953457589393814080011513726764543968e-71386)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4411620506592737532109016496457382048657857194340645526246628280311812592288988016544405559990034441e-5208)) }, + { SC_(0.130341722979210317134857177734375e-4), SC_(26168.341796875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2166416563492047698893468112939141389204329099488114879770220649554966170201180232315257069497901648e-68742)), SC_(0.1077379305584195394942430687801727576986179591753422104711707268006164084179781893335299072659829737e-4532) }, + { SC_(0.13885271982871927320957183837890625e-4), SC_(0.04976274073123931884765625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1505435304898114171757823372486217209606557096566030133214604079062750941794084777046798389177683298e-14323)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8191336340381130196534918861139224810035912334983040442057176348873687528604185195239248980481620309e-31292)) }, + { SC_(0.139016165121574886143207550048828125e-4), SC_(0.3188882328686304390430450439453125e-4), SC_(0.81474220752716064453125), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4280498729519778987331529352631079454822421273284878121766790306889766290450686026189682387674704682e-41368)) }, + { SC_(0.14759907571715302765369415283203125e-4), SC_(2.8241312503814697265625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.149627207977763220942721958324439773028753443201215406980939699041850526798527355589362837986915531e-13483)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2558857410093259430689102879079456979338542212672378310349005537672813392923619357148699354237694984e-29446)) }, + { SC_(0.150794721776037476956844329833984375e-4), SC_(0.4875471131526865065097808837890625e-4), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1196552230711909114279654256938815998740725267957310722981422063213023453615282876024769302334980208e-35700)), SC_(1) }, + { SC_(0.1519624856882728636264801025390625e-4), SC_(16177.537109375), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1452425209503955537338422359333948812006899768260140476005442384340571893909020382026092251217563149e-5859)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1118345883008806780173762266422459055560035027762640953226900168492818873939725415273834608038325661e-48188)) }, + { SC_(0.1554497794131748378276824951171875e-4), SC_(40.46924591064453125), SC_(0.905801355838775634765625), SC_(0.1263629472761081761336139611957096532344967812079201565462877028056022440086149370452532349289977537e-2765), SC_(BOOST_MATH_SMALL_CONSTANT(0.9919220074175430612528899218323716721906730140324380689847652631919111677660506550414306011565356188e-66001)) }, + { SC_(0.15675454051233828067779541015625e-4), SC_(0.000101913392427377402782440185546875), SC_(0.81474220752716064453125), SC_(0.2853716542422836893914328033448649871440784183324642438029547731008406102487895766538278835997616547e-1712), SC_(BOOST_MATH_SMALL_CONSTANT(0.2298245136733929898089558753739834100156855492642462724846011273903684294484329372722305239196215964e-42747)) }, + { SC_(0.15971760149113833904266357421875e-4), SC_(19.206241607666015625), SC_(0.913384497165679931640625), SC_(0.9582815834618172404720774906601516866545834853534306710079796796969465944037138120013655983754855937e-2465), SC_(BOOST_MATH_SMALL_CONSTANT(0.6326194310940251351062236483308143964837777396539364617390517845304796920345734401134182052813379253e-66519)) }, + { SC_(0.16304524251609109342098236083984375e-4), SC_(0.00039033559733070433139801025390625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2749781704753392658488528370082054060663950436757594599541089373221441866088075915394337505609699445e-53860)), SC_(0.9828097758952314597050411618472387868890317665219757564769723884179197098195673563971975573178259902e-2530) }, + { SC_(0.16487292668898589909076690673828125e-4), SC_(470997.15625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4541512737936566032722209936653561647042510033334139786119604257285077373847313505998057776219766456e-54347)), SC_(0.1549128670548823853403220618952571853257756905438794574182300339725200919598045497915626657567121817e-3585) }, + { SC_(0.165044693858362734317779541015625e-4), SC_(3.57584381103515625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.794238046161941112343749823902683082201010853905108950104923153872086335073632221934630976272829339e-30969)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2292466372763638638323475388751441681337812313997406078153894115038015753694828319985703460438800914e-9697)) }, + { SC_(0.166259487741626799106597900390625e-4), SC_(147818.875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.4840219552903389147605728190427790980761548760276021823940610272825144416373810916979400186204380198e-11975)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3355691678737767782891887487339395952689357895271229870171944057769814627603827220615993999615612822e-26146)) }, + { SC_(0.16847467122715897858142852783203125e-4), SC_(0.002207652665674686431884765625), SC_(0.9688708782196044921875), SC_(0.5906847920417500109372659805901565510642317169243157405152707420759307862602125145324167267749837092e-619), SC_(BOOST_MATH_SMALL_CONSTANT(0.170124244972649861948335303360579678196382235848312316943910825664898769097190318119987719590491326e-89243)) }, + { SC_(0.1747490387060679495334625244140625e-4), SC_(0.26349246501922607421875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.12843516647174278387874388748896407588386560678553377934101747757777562235501611818724095565006393e-11386)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2536225597635438964484652244350105224785079947699063064898395295623461960169137518050619029664249122e-24869)) }, + { SC_(0.17863809262053109705448150634765625e-4), SC_(439.38714599609375), SC_(0.8350250720977783203125), SC_(0.8244670330185256737263969143826902858678798594720040631958052373536602436314305948340758463250207469e-4386), SC_(BOOST_MATH_SMALL_CONSTANT(0.7352777980091604256079199692103097168555239346683458759313911552620269891691410672306190764078484364e-43811)) }, + { SC_(0.1895247623906470835208892822265625e-4), SC_(1.07109558582305908203125), SC_(0.9688708782196044921875), SC_(0.1958346418095304122274704022704012284830310878577730588329056279113401343952355448951150975955101985e-724), SC_(BOOST_MATH_SMALL_CONSTANT(0.1204102194190057648286366185479451893365394896311826527650411245123421846075536145059629401728008699e-79505)) }, + { SC_(0.19740999050554819405078887939453125e-4), SC_(105.41565704345703125), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.4171715706701289778828007890899248697163485933652243450349057614457988149098646573044273964497613009e-25893)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4289676998659303218462202648585110823764351223533266318047234914191374259260207999216104631145461676e-8109)) }, + { SC_(0.2004335328820161521434783935546875e-4), SC_(482.00701904296875), SC_(0.905801355838775634765625), SC_(0.2300786867506388908353022364598233237429971469616025799538393909707204968894677299870201252175165343e-2146), SC_(BOOST_MATH_SMALL_CONSTANT(0.1799474819364733378341626493308533546950444872243502571473922786173950526564225295056238004071701751e-51189)) }, + { SC_(0.2017128645093180239200592041015625e-4), SC_(232.9792938232421875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9782152059532611372922752218945140821311267421642771819909290848934391306656384389032421044430100903e-43027)), SC_(0.7953007761061898269032745221331387025438802327808884652857398546810598867143141546217396350761801352e-3139) }, + { SC_(0.20203804524498991668224334716796875e-4), SC_(42.8336334228515625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9505827239534352483275638000309426098918435445176677914029048966050973796738555346371505206583029493e-42957)), SC_(0.4879738324842388808208264019692856316850110596695651192968764647838931697912322372907706638620027653e-3133) }, + { SC_(0.20300331016187556087970733642578125e-4), SC_(42.38938140869140625), SC_(0.9688708782196044921875), SC_(0.3816869308438157775438575701400816009072542007939410749970155744055876159478755860836778076571703486e-678), SC_(BOOST_MATH_SMALL_CONSTANT(0.127201723496121023828113564898347237146568849457350377769280925620763942807444814392111020123066826e-74228)) }, + { SC_(0.2051885167020373046398162841796875e-4), SC_(236087.890625), SC_(0.8350250720977783203125), SC_(0.2236779936126539857160222845963337050945115341054176739161533824043234207571359913112629207518401323e-3821), SC_(BOOST_MATH_SMALL_CONSTANT(0.5187557340526034705800892748375743405416818891180832866460176073642680219205270491482771189624680261e-38145)) }, + { SC_(0.21041001673438586294651031494140625e-4), SC_(3.8230969905853271484375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2611050064285175125482131273698210462799115955403897510685180499383028995007734375008754345306902882e-42581)), SC_(0.1263421304086059092982729044494063450981720138268968234081464502945179653799025464601347361390558349e-2805) }, + { SC_(0.2107691761921159923076629638671875e-4), SC_(0.04489715397357940673828125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3900373750276575859585149320905549732932763658865496075030893208483961831557459599669540245248710031e-31085)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4404830308340426746130675276769279825579374873733567061860857053216363945038073562970896042079876724e-5139)) }, + { SC_(0.21139929231139831244945526123046875e-4), SC_(0.17535277947899885475635528564453125e-4), SC_(0.8350250720977783203125), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.473270793701914810977987563126323761517466803284082613651628762799832085337970872475482395336393227e-20769)) }, + { SC_(0.21433561414596624672412872314453125e-4), SC_(3719.279052734375), SC_(0.81474220752716064453125), SC_(0.5697755869431091234460288256178201914669184558313577703589192769624449530099467135008330171347109014e-4155), SC_(BOOST_MATH_SMALL_CONSTANT(0.5052326319604125969261540109121341746553338155418535572465629231132318093045693841291017785062704029e-34166)) }, + { SC_(0.22448601157520897686481475830078125e-4), SC_(445071.28125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1154051199795256693167224940027851782575716013364780412354086379221856337304339043125449929568329416e-29200)), SC_(0.5317196597832401400329618898138594703102901476369725585493922299078299104951909429878615105121363765e-4840) }, + { SC_(0.22683978386339731514453887939453125e-4), SC_(0.0405500046908855438232421875), SC_(0.905801355838775634765625), SC_(0.3320529691129112781183346091758024243131258015814127148220088686655475575144026542984765934147092121e-1883), SC_(BOOST_MATH_SMALL_CONSTANT(0.3063046523049329771837110182553346515767597472422624500690020343432489716503981152245110195835717713e-45217)) }, + { SC_(0.234849067055620253086090087890625e-4), SC_(25542.79296875), SC_(0.9688708782196044921875), SC_(0.3441730180671123519495976583198624119926731047061369849411568660575245402127433117800519623117640306e-589), SC_(BOOST_MATH_SMALL_CONSTANT(0.3751784934105693320455113760515845925736447146431148474482569436486280690421206833759119870649005669e-64166)) }, + { SC_(0.23615430109202861785888671875e-4), SC_(4.50702953338623046875), SC_(0.905801355838775634765625), SC_(0.4988379611542168986414874238506419923844468056925819195174874699047526593073353049454994954833639083e-1820), SC_(BOOST_MATH_SMALL_CONSTANT(0.7341840761161541739065036501325419142613794847229658509278972834999220997543398966712274676180693554e-43445)) }, + { SC_(0.2399934965069405734539031982421875e-4), SC_(462.945892333984375), SC_(0.81474220752716064453125), SC_(0.3110095684445031013162420462860776918422474101001024588575132091902755892192793640381029649700096935e-3710), SC_(BOOST_MATH_SMALL_CONSTANT(0.8797682788975050110209751601822341604088251725221823097384363697152422631690456231980809725272529829e-30513)) }, + { SC_(0.24066381229204125702381134033203125e-4), SC_(1270.3814697265625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4576190191092904160454048722884335228372052972542105302690069527168297955063547521360024576623301653e-37231)), SC_(0.1420858306336174465235602280120246573601819672841164112725840259803341782460177715076940711063890289e-2455) }, + { SC_(0.25217834263457916676998138427734375e-4), SC_(1832.2723388671875), SC_(0.913384497165679931640625), SC_(0.1686620810515798084807520522209297815900439981037687996482171429286465763028158287049421053915524687e-1563), SC_(BOOST_MATH_SMALL_CONSTANT(0.2500645969247788958633246925374597812716157867336745565308065217364621462118518662925089351446878108e-42132)) }, + { SC_(0.252623358392156660556793212890625e-4), SC_(0.18408362567424774169921875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2743427505483676484256175431234170641774606693989735069168855839327638237012878361548973902795998892e-34351)), SC_(0.7031666053222338307595293315449316865297838014279428098534333754498580394690990873394128824939905225e-2502) }, + { SC_(0.2568908166722394526004791259765625e-4), SC_(0.0026883506216108798980712890625), SC_(0.905801355838775634765625), SC_(0.1578875734130016176302992983732961079346954066547091801166809994581467564455851791032398832398018025e-1511), SC_(BOOST_MATH_SMALL_CONSTANT(0.2341259619261955766782778385507062619379614455720724579754306604198840826735605051621159618286928358e-39776)) }, + { SC_(0.26870451620197854936122894287109375e-4), SC_(0.000144985810038633644580841064453125), SC_(0.8350250720977783203125), SC_(0.9888337425304244712013096232948525191068632527405749434176388147263952275675242673761059158623788143e-166), SC_(BOOST_MATH_SMALL_CONSTANT(0.5413087344681832213235005061729244935796516193762206919387843998935430650190903037264031499756215662e-26376)) }, + { SC_(0.27549775040824897587299346923828125e-4), SC_(0.1503586471080780029296875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.8181540477895649748762420463171081554083663224695416509954885206095656839589686087124835665442879842e-32518)), SC_(0.2462322550135262716431415588537906535110788732273365839795667016396525276471877892724411526414976991e-2139) }, + { SC_(0.2782344745355658233165740966796875e-4), SC_(0.295027554035186767578125), SC_(0.8350250720977783203125), SC_(0.1278292308361380656193177947071432183369866616602705655667678332292163066466318520326718174045292449e-2812), SC_(BOOST_MATH_SMALL_CONSTANT(0.3860943098799782356408940219712438194770816672701033543757478725092151765852410278931715506024795017e-28125)) }, + { SC_(0.28775624741683714091777801513671875e-4), SC_(25491.8359375), SC_(0.905801355838775634765625), SC_(0.1473261355137398155011141009775050446169103918759589552951768300766343955675642581210849928901748107e-1497), SC_(BOOST_MATH_SMALL_CONSTANT(0.5217155068967073959232563103611620257843968467713802555935398994953775819903315697408459540543981014e-35658)) }, + { SC_(0.2893155397032387554645538330078125e-4), SC_(494.983856201171875), SC_(0.9688708782196044921875), SC_(0.2214048516998759629744858269037850383644604658166103544023139293349638862809561382032391592312324544e-477), SC_(BOOST_MATH_SMALL_CONSTANT(0.2322977714184520269211746119681752807171971177273511871734584204282302240392088583619323923321396253e-52085)) }, + { SC_(0.29415024982881732285022735595703125e-4), SC_(0.00041924233664758503437042236328125), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1405534159248066997103271948013564698708179432152430515950232282291382253871954661868456467068231098e-16374)), SC_(0.222065748504377622879286572762480656498910969018522808743848314373828884496856282233576890159533318e-4439) }, + { SC_(0.29590575650217942893505096435546875e-4), SC_(0.283195674419403076171875), SC_(0.81474220752716064453125), SC_(0.2154808290713006032100156759319481127361319809621867304793677964782374968778883573291545611646288826e-3005), SC_(BOOST_MATH_SMALL_CONSTANT(0.1603552053591524426177949971495129448566287164068848498039592571954479687286433631543286779538761406e-24743)) }, + { SC_(0.299345629173330962657928466796875e-4), SC_(4.095668792724609375), SC_(0.81474220752716064453125), SC_(0.5196055449684084143516386383118687306867205699439977606524188083826834727571742938138760636632194297e-2973), SC_(BOOST_MATH_SMALL_CONSTANT(0.2437053630285360958851482887590704784303383342870823574692973085259514678816776828062492453198275383e-24461)) }, + { SC_(0.30238283216021955013275146484375e-4), SC_(47.60295867919921875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.9321887064205378872229585244564413110885910626258126088306621014298436870871951071821387187442611514e-21676)), SC_(0.1213736685648309514074587400458688769158875012929347831971984355375331163800085456183839159724919364e-3590) }, + { SC_(0.3114132778136990964412689208984375e-4), SC_(348144), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2564169166061677471672615381864930435296242794719327337679452161494929456649170217667065978734305135e-16418)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9688429129424356903276490372990977877118692169687936851001252857728923160632456013823032483855292724e-5145)) }, + { SC_(0.31231902539730072021484375e-4), SC_(33712.953125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4571522067098797040562684640899168266975097279621382775130725293419218412779615105191774966472576827e-20989)), SC_(0.2573106672840410380822917482839769800185745410605353368659945769528618592560687539288531970023811281e-3479) }, + { SC_(0.3187526090187020599842071533203125e-4), SC_(0.4971525049768388271331787109375e-4), SC_(0.905801355838775634765625), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1507883810128888762679504360131900432849506796036146018007903657943596818799705890814512754055586328e-25436)) }, + { SC_(0.3188861956004984676837921142578125e-4), SC_(16.32230377197265625), SC_(0.8350250720977783203125), SC_(0.1298262616465282715767271924980895028143644766095820511831644360803801759867912414728771230391885871e-2456), SC_(BOOST_MATH_SMALL_CONSTANT(0.2767627169830641075284656055027015246053535193598921144000819790157135165458466893549180906222486659e-24542)) }, + { SC_(0.319889441016130149364471435546875e-4), SC_(3931.19482421875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1773634713777084083511430573444851801451064251531875439312779096503415074392671715708488636019680445e-15981)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1283323919641290075624851616052156931984540392148494145568105633891913544783329965742528684079350212e-5006)) }, + { SC_(0.32712865504436194896697998046875e-4), SC_(3109.48583984375), SC_(0.9688708782196044921875), SC_(0.2623647149797575492783687118935843357045992324891910436571331718223281336138205915531066599158735727e-423), SC_(BOOST_MATH_SMALL_CONSTANT(0.7171758557203420523043470585211560466194322904609620567954214024282315826385950612765018545398284663e-46066)) }, + { SC_(0.3275294511695392429828643798828125e-4), SC_(25796.328125), SC_(0.8350250720977783203125), SC_(0.4992053462405342599776391467632566097299408028157087143908341093542047028790242197689077688285241312e-2395), SC_(BOOST_MATH_SMALL_CONSTANT(0.7099977617736449666482713375435273015460103288886378949522985793917134341210311928525086779798465597e-23898)) }, + { SC_(0.334105643560178577899932861328125e-4), SC_(3378.014404296875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1088187624965955505094982973627684721756921175095612110902472707075526924705943037821545606017059404e-19619)), SC_(0.9949684623152091367973910379436120989665211279519935888679097781126341226534544073475151448383513498e-3252) }, + { SC_(0.334107098751701414585113525390625e-4), SC_(4.2327022552490234375), SC_(0.913384497165679931640625), SC_(0.3302140511476925970089440183947851498874384393056499070340845152546754963722596856715560438763361651e-1178), SC_(BOOST_MATH_SMALL_CONSTANT(0.721550812904941692732465523570115185441213777345946152740589938570407974601225828291058986399431556e-31799)) }, + { SC_(0.3407927579246461391448974609375e-4), SC_(288782.71875), SC_(0.81474220752716064453125), SC_(0.2109135641523372669140280248988840170444293913802157477372092130970432429572818868611883540911372329e-2616), SC_(BOOST_MATH_SMALL_CONSTANT(0.2514162921223999573731802340282039350295774045119788634791113912254748615048375244034258269581906402e-21491)) }, + { SC_(0.346417873515747487545013427734375e-4), SC_(411.559112548828125), SC_(0.913384497165679931640625), SC_(0.2133153834019422416023619900569771678826523672291925027801753594912575501262851665014411694977703309e-1138), SC_(BOOST_MATH_SMALL_CONSTANT(0.7010688922326638480573085051240538425179556810481349439133974938599939875403662654291337206727144197e-30671)) }, + { SC_(0.3529437162796966731548309326171875e-4), SC_(0.22326681573758833110332489013671875e-4), SC_(0.632396042346954345703125), SC_(1), SC_(0.1679136383980843511637249694083361811044488550810665223615625087133701364929659445973904964914972386e-647) }, + { SC_(0.358525212504900991916656494140625e-4), SC_(0.4175899922847747802734375), SC_(0.905801355838775634765625), SC_(0.2343697173729498422189297849832239496833304472905684856323496553026475588814733191639300150358207883e-1197), SC_(BOOST_MATH_SMALL_CONSTANT(0.6596727681214564022871450491580307900624839348498222377460976652541927290888421159671849121886582417e-28615)) }, + { SC_(0.3616316462284885346889495849609375e-4), SC_(311936.78125), SC_(0.905801355838775634765625), SC_(0.1293118466016912108455958416176646899851260448619891462678002770480373451658206363414469153521598654e-1193), SC_(BOOST_MATH_SMALL_CONSTANT(0.119999815388237949074063308456434021313213735248807878200422481001986161451626398456876580517384044e-28375)) }, + { SC_(0.362039208994247019290924072265625e-4), SC_(3.842815399169921875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3544734526213706099454685135575417560703279572478093675779813090605397694571956765464491678916570822e-18103)), SC_(0.4180206241677413514841559660483820475430290709184922818176636477679167481907369958639649743608398598e-2998) }, + { SC_(0.3621911673690192401409149169921875e-4), SC_(0.001695460639894008636474609375), SC_(0.913384497165679931640625), SC_(0.1288280457224668780743816372420978938285421765081656239836959964838944253041009430275132356668406226e-832), SC_(BOOST_MATH_SMALL_CONSTANT(0.5697362458132279589783413883108821219398435118946284545945562849097738681418558423708732106133995706e-29079)) }, + { SC_(0.36229626857675611972808837890625e-4), SC_(0.004191714338958263397216796875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3940400839080479567586394155768258914791983335204978210406036543210500908187185259963745776884174156e-24626)), SC_(0.1080292882256422099552040843840157970507678744503491295903443423718104140719602323148254017180211606e-1525) }, + { SC_(0.3714940612553618848323822021484375e-4), SC_(0.00259495410136878490447998046875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1356989835799972192597273298949967565671434897149949467453728471572063953543506772625236862729694821e-5190)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8561254770485099992034032886831374398058297406377657980857486120910212835422396954987295313640453016e-11533)) }, + { SC_(0.3718810694408603012561798095703125e-4), SC_(1.01127374172210693359375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1077735820964225917380470071662590042583243093922642245930134842359049963955754289626778087872649737e-23336)), SC_(0.5313597812912107703638905071150951907554665070138144057144001779439358176605035994445262936046356265e-1701) }, + { SC_(0.3756858131964690983295440673828125e-4), SC_(386440.28125), SC_(0.913384497165679931640625), SC_(0.6938348459489127956412976095546426355497874607824619462541175972265423708569533419804404918656180059e-1053), SC_(BOOST_MATH_SMALL_CONSTANT(0.1249757466297388786057324955033321582981458421926062580808076861019234345529522100086401227723745064e-28284)) }, + { SC_(0.3779314647545106709003448486328125e-4), SC_(0.015007309615612030029296875), SC_(0.8350250720977783203125), SC_(0.118810205222776899417803687178012075409991919564610841348835150094825747873487115628586985816217759e-2042), SC_(BOOST_MATH_SMALL_CONSTANT(0.810187046258777287646336537968837529857752705285400756632676692894477095757522513711438063422526438e-20678)) }, + { SC_(0.3796306918957270681858062744140625e-4), SC_(26.5066623687744140625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6598965623874491832972190274659900750010182028314223382636015593020450025268000629719755111735890524e-13465)), SC_(0.3989359837027342169859807648389591498610396713277327250235582229672408997817051079102203736651445381e-4217) }, + { SC_(0.382418438675813376903533935546875e-4), SC_(0.041891194880008697509765625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.9873323811638740353410732589920679289192321776712090313263010195106904399487210480324540942232188904e-23418)), SC_(0.8491512042328636035595900109307950549910858021615642828214730768092395164321337952830436535923471749e-1533) }, + { SC_(0.3837459371425211429595947265625e-4), SC_(0.468349933624267578125), SC_(0.913384497165679931640625), SC_(0.2241235540048448638458579583517893589998982524673312917609725284970663516122466297631156386453714775e-1024), SC_(BOOST_MATH_SMALL_CONSTANT(0.3769155004866211354850679924222766333317426620770543639710709283784973890926589758868109311853381624e-27684)) }, + { SC_(0.3972529884777031838893890380859375e-4), SC_(0.00289903464727103710174560546875), SC_(0.8350250720977783203125), SC_(0.5483575678917936436949935196603432950338084509938853676999723995665568731766873108531873188494847588e-1822), SC_(BOOST_MATH_SMALL_CONSTANT(0.8848369790249811078099793860211098854547582799501395652527369169917918737958891179693704276411854277e-19551)) }, + { SC_(0.3992606434621848165988922119140625e-4), SC_(495351.78125), SC_(0.9688708782196044921875), SC_(0.1164534821982592030672927656096508086827152784596402335692547063157800378222976279629261862316799955e-349), SC_(BOOST_MATH_SMALL_CONSTANT(0.2929244484399204867185089747049556705503127694304187981003530977961498473815862621862143844671370993e-37746)) }, + { SC_(0.4005068331025540828704833984375e-4), SC_(42.8498382568359375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7859204786488360510684191057998450107874559758216638101868641977764555934670971577857405050244603552e-22372)), SC_(0.2654442262986538279189732464500107656586452857842403732824436935911339751157770521150566856758628307e-1475) }, + { SC_(0.401491633965633809566497802734375e-4), SC_(3246.22998046875), SC_(0.905801355838775634765625), SC_(0.112977412882178900134385777413607284643461048436540236745690012152735459343115315544141992726099701e-1073), SC_(BOOST_MATH_SMALL_CONSTANT(0.4424172903643803288578143023108364330817321606229579227313357011187183345623163738049426663155162042e-25557)) }, + { SC_(0.401874640374444425106048583984375e-4), SC_(0.4230124056339263916015625), SC_(0.9688708782196044921875), SC_(0.1100720893157627362937366296851776187134318167340247108911993602928621672418382282695932224468424835e-340), SC_(BOOST_MATH_SMALL_CONSTANT(0.4883930877551489306324687755681617482312232773519412809834786339488860386961069019505126908456950954e-37494)) }, + { SC_(0.40288010495714843273162841796875e-4), SC_(2569.28173828125), SC_(0.8350250720977783203125), SC_(0.6627313078473817098675390758464825155439030125385070059490309453377004511869090229363770345790413739e-1947), SC_(BOOST_MATH_SMALL_CONSTANT(0.4478580576144933415867115861353004306483506549857235464354358905466443067939229974382383708020959197e-19428)) }, + { SC_(0.40309605537913739681243896484375e-4), SC_(0.0039625889621675014495849609375), SC_(0.81474220752716064453125), SC_(0.4297219759455842553977753641166272093924110867575498015986936377915839627832532881673730650860546229e-2098), SC_(BOOST_MATH_SMALL_CONSTANT(0.1131862219566481176250143724466206130773062564110751371526259863433521485903001058774208214004662327e-18055)) }, + { SC_(0.4062067091581411659717559814453125e-4), SC_(0.12048657238483428955078125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1524431223087137054598773090361260966748907707997517149119120417069725647075815285192449448161909435e-16130)), SC_(0.718310945278950705305351059214126184320966441965831821856089475048512214946952047110303375327870065e-2668) }, + { SC_(0.4116668787901289761066436767578125e-4), SC_(24253.806640625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3884884579630244647432121874653720166074946306858397332980485597789894564589091428052418264063418006e-12420)), SC_(0.5039422300210376491185072692446958776841122680087188966755831182376679349874392686015199583363438428e-3892) }, + { SC_(0.416882903664372861385345458984375e-4), SC_(0.00045137223787605762481689453125), SC_(0.913384497165679931640625), SC_(0.2941597748347749411754047337807015012576507844430748545298337852169539531016813003685811387576944405e-23), SC_(BOOST_MATH_SMALL_CONSTANT(0.6490759234749804574289194979741186257670139448339576708206530257959728849550179134048101279302420689e-24564)) }, + { SC_(0.417713818023912608623504638671875e-4), SC_(274447), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8891395834060674840111369292928696900946762064913008632147212723122733242419191346912504649141260379e-20782)), SC_(0.5153076037935924074179248490891634896352435546614761313109653438459835935895159710831917889190593927e-1520) }, + { SC_(0.418079944211058318614959716796875e-4), SC_(0.11457650363445281982421875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2446650889729255533700789560277005533318807205110375390599135619137953482484990594137550691784617627e-12221)), SC_(0.4853460838101037201350937644183993874233733743743725662787994602960719050919207250899540608031639398e-3824) }, + { SC_(0.42011219193227589130401611328125e-4), SC_(0.000218811779632233083248138427734375), SC_(0.632396042346954345703125), SC_(0.3179529997451293102768983483299318098705913075382976031049468527683708052258069951390726888744562447e-2921), SC_(BOOST_MATH_SMALL_CONSTANT(0.1833136034351968298404565348891649429152474775943227473503880078105211588710473018887964387242219035e-8529)) }, + { SC_(0.4257139153196476399898529052734375e-4), SC_(219.9326934814453125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.239715433935781453113059624532973263096379876488085000296126067107269694939393323284449360105557112e-15397)), SC_(0.1451318181094095558388067103539926698250898931142471176273042115024709390909492472743967403267308459e-2551) }, + { SC_(0.4258894841768778860569000244140625e-4), SC_(0.15419080227729864418506622314453125e-4), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1830534673552623209868695525333608693870478140986771641343952511061662952704389325698588842694442893e-7525)), SC_(1) }, + { SC_(0.429383144364692270755767822265625e-4), SC_(0.0428761281073093414306640625), SC_(0.81474220752716064453125), SC_(0.6670993384074829827824185730735050260592416849695388102678720275285538601446792617170942562110737722e-2062), SC_(BOOST_MATH_SMALL_CONSTANT(0.1503852748893043569070584420804374973503282498107814611717957243181610257848040689066752011011521903e-17042)) }, + { SC_(0.4323314715293236076831817626953125e-4), SC_(4174.39013671875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1741737479435393164070743783516644538515708455721353687328907068917805988236924308779533332447842736e-20077)), SC_(0.5500647637598311764868356339788056582397278290971924670228151741233423921688471919435618588405276741e-1467) }, + { SC_(0.43628693674691021442413330078125e-4), SC_(495.40863037109375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2635777732785853666597970569223099981540401902251114779117540286381653810376775458715609675588234809e-20538)), SC_(0.164074553389435495570864834112651743836218423938126161793683427926194069848835465073779036174452069e-1355) }, + { SC_(0.4396517397253774106502532958984375e-4), SC_(0.001847697305493056774139404296875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2072584932333773564080754602009290026147836909320390107919267400046227568219163001236961402925266791e-14674)), SC_(0.7278393721393212191636655689421757500953426177953531997548969548847209180826615334861392217179462783e-2236) }, + { SC_(0.45636130380444228649139404296875e-4), SC_(26.9266033172607421875), SC_(0.632396042346954345703125), SC_(0.323083658339483384179601029113392314163137312213380465279928094216180094437240628578107487940484812e-4362), SC_(BOOST_MATH_SMALL_CONSTANT(0.5453589185628250950056526063344565014212839206511911193164643251785928220063791558745558710897233194e-9525)) }, + { SC_(0.4623167842510156333446502685546875e-4), SC_(0.43400345020927488803863525390625e-4), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8747815788931347648685677846348816901925149746536605658179046750713326074713944693294722365402966867e-11959)), SC_(1) }, + { SC_(0.4653503492590971291065216064453125e-4), SC_(0.188413614523597061634063720703125e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.4662941864808090031147003173828125e-4), SC_(0.0003559053293429315090179443359375), SC_(0.905801355838775634765625), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2278846383149582863330657837021062220741269034971105380714965002593295259446413122677513482369829253e-20855)) }, + { SC_(0.466877463622950017452239990234375e-4), SC_(3780.931396484375), SC_(0.632396042346954345703125), SC_(0.3792134529387148669313493271326150806492845076363064844674665222071394519228007370261867998775447123e-4266), SC_(BOOST_MATH_SMALL_CONSTANT(0.1244183253032945566273609797972337616590853930158142929015016671564364271096784974648192559147336436e-9312)) }, + { SC_(0.47170542529784142971038818359375e-4), SC_(186.8951263427734375), SC_(0.632396042346954345703125), SC_(0.3266934840647815839338074317916427555204804089933043179563306543980085860044600040331042838063841602e-4221), SC_(BOOST_MATH_SMALL_CONSTANT(0.4802980821004654344184354328412999752992167798802903607491862312198391305372279970831923750822234395e-9216)) }, + { SC_(0.4735972834168933331966400146484375e-4), SC_(0.00372543814592063426971435546875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.4203411708941611365307481908812525554332512659659422794425638587632778786194833657777412146496213478e-10676)), SC_(0.3545675968378522660735942462974295093159607103287951436777706458954341569448452537406723701671971643e-3263) }, + { SC_(0.47360430471599102020263671875e-4), SC_(48598.65234375), SC_(0.632396042346954345703125), SC_(0.1031727817363177217505517656556272744304502709993537968787178645244928602428924058767552526928075161e-4206), SC_(BOOST_MATH_SMALL_CONSTANT(0.1611856191966404301510900622517923061426474848337196558453979507048007790994379343797797282769258803e-9181)) }, + { SC_(0.4800888200406916439533233642578125e-4), SC_(0.029623560607433319091796875), SC_(0.913384497165679931640625), SC_(0.1157704297196141331216759930615622010791536997118194911791694800153490512580102625698468659796212328e-804), SC_(BOOST_MATH_SMALL_CONSTANT(0.198771528236678513687078507418301769671318186775841206361997488563487582517136901311543827876235759e-22114)) }, + { SC_(0.4828667806577868759632110595703125e-4), SC_(0.000143944707815535366535186767578125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7495894240132409319745795199641789566690476465611793795414005142859915750552626889750001395354628769e-10971)), SC_(1) }, + { SC_(0.4830027683055959641933441162109375e-4), SC_(0.49858455895446240901947021484375e-4), SC_(0.913384497165679931640625), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1081870262766115490308798173959278837682400300098825729962424895789956287156042080991887099644208004e-15904)) }, + { SC_(0.48371657612733542919158935546875e-4), SC_(33.2382659912109375), SC_(0.81474220752716064453125), SC_(0.5392295180080476545815126479353849047663688066564460469494117659565275079874806508978081193819639046e-1841), SC_(BOOST_MATH_SMALL_CONSTANT(0.6094665583717628530904316743021371250321111097379281222105980449051863532879698461913515793376942782e-15139)) }, + { SC_(0.483796975458972156047821044921875e-4), SC_(0.00030146507197059690952301025390625), SC_(0.9688708782196044921875), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1211173323113230084605677823903929547322642893402100963874701935994275378520822610889395584474783023e-29809)) }, + { SC_(0.48389760195277631282806396484375e-4), SC_(3.295018672943115234375), SC_(0.8350250720977783203125), SC_(0.1512644959704413213389024275500845816126149022418010339140532986481037634186944658282689839722893346e-1618), SC_(BOOST_MATH_SMALL_CONSTANT(0.6736806796167028920949019281678663706552176285176919437958212962773296232922990951215758814014026536e-16173)) }, + { SC_(0.4859554246650077402591705322265625e-4), SC_(0.487077995785512030124664306640625e-4), SC_(0.9688708782196044921875), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4524908534324837441439801698100149083397057157404919827350847674356499061323376516388426576082523905e-24823)) }, + { SC_(0.4882370922132395207881927490234375e-4), SC_(0.0004924438544549047946929931640625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3646518140646385627314490689610669214632800685344959267311961453988290824656744707768834723394102092e-16934)), SC_(0.1161009047612075761242646775509747727341695136708928888262636983566409939790437312422345504636527041e-454) }, + { SC_(0.0001018536931951530277729034423828125), SC_(0.000113726928248070180416107177734375), SC_(0.221111953258514404296875), SC_(0.2066954203816580316215441712214424636741228945439188594937361041977961072341864728543389711001325554e-3707), SC_(1) }, + { SC_(0.0001061613802448846399784088134765625), SC_(26.1992549896240234375), SC_(0.3082362115383148193359375), SC_(0.6561769229143689591030927870417351314309952619922160057603842444780352906719559937783245361591823151e-4816), SC_(0.6349202856011439954093262170673225006615982635242278290596467860089210038061365580664316066990041684e-1509) }, + { SC_(0.0001172095144283957779407501220703125), SC_(46.33734893798828125), SC_(0.632396042346954345703125), SC_(0.1517462141090208633893889901779005509855209226707053670733298611559957657254851288574150264553636184e-1699), SC_(0.1068817114613491257306433756926925641068877423362993610036747686945269519827489058223298955708257712e-3709) }, + { SC_(0.00011986176832579076290130615234375), SC_(0.429382145404815673828125), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1946741600808288986054664384925735525358605351070691110016222896001799658815435484280158175061511342e-7239)), SC_(0.8756347278664867265476720199557627625281780369452883056692648818089895352084926565564504160356494136e-527) }, + { SC_(0.0001239118282683193683624267578125), SC_(2.7409827709197998046875), SC_(0.9688708782196044921875), SC_(0.3612092388423149995861104392947964360431616042214108514709734050882172964038314449862238141943186574e-111), SC_(BOOST_MATH_SMALL_CONSTANT(0.7386482983728915712656473400428352870944476154256226050553993677753757147996331599078275854660490037e-12161)) }, + { SC_(0.000130386673845350742340087890625), SC_(0.0404968559741973876953125), SC_(0.81474220752716064453125), SC_(0.1773260106876984756025313449304379872082783853967079538614627035844230412189487396086941287498508612e-671), SC_(BOOST_MATH_SMALL_CONSTANT(0.7832770003958532273454039144081940444751263099293398656352254531322877271068271591283147178715837703e-5605)) }, + { SC_(0.000131270222482271492481231689453125), SC_(0.4417803938849829137325286865234375e-4), SC_(0.913384497165679931640625), SC_(1), SC_(0.2552140025859397293472505667061728339439104733457842212570630846542138002920485118928974128727523255e-3530) }, + { SC_(0.0001324503100477159023284912109375), SC_(251.767547607421875), SC_(0.9688708782196044921875), SC_(0.4537064445901084811651717843855173961971944783493810912867535459756830764230572425068408950044450515e-106), SC_(BOOST_MATH_SMALL_CONSTANT(0.5718411759415848800487399921739353916100391666058108904922439323670404495330842459664454264197270132e-11379)) }, + { SC_(0.0001335285487584769725799560546875), SC_(0.4650310074794106185436248779296875e-4), SC_(0.1355634629726409912109375), SC_(0.1386861059709135063224782373435801185647788993688987597179237811255267983919363186125254219690899373e-2096), SC_(1) }, + { SC_(0.000133774345158599317073822021484375), SC_(0.00023849334684200584888458251953125), SC_(0.8350250720977783203125), SC_(1), SC_(0.3512738536442382533982801612128987500171783187226110529697072136004453295105076465628261914246784663e-4404) }, + { SC_(0.00013858181773684918880462646484375), SC_(1.8936798572540283203125), SC_(0.632396042346954345703125), SC_(0.3494582932926073207268927514383887298030614732620636673718458010010860878919915968471379227812002172e-1436), SC_(0.2511767757063189074291668753082248028396011144842069611283346462421254885712421694124857786158458864e-3136) }, + { SC_(0.000142661112477071583271026611328125), SC_(0.00029941767570562660694122314453125), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.9230347843647304902714845809226768084901559433590593943965868424691608898561307461463570335248331203e-5094)), SC_(1) }, + { SC_(0.000144481091410852968692779541015625), SC_(0.16514885425567626953125), SC_(0.9688708782196044921875), SC_(0.2916808172152941371561907589392678444012691922523666932103740595982202193954671841759133631431519818e-92), SC_(BOOST_MATH_SMALL_CONSTANT(0.1767399381652639845722463679609700453372075076129773918407690123301707895227643938760353681085508816e-10426)) }, + { SC_(0.000149327577673830091953277587890625), SC_(0.02011823840439319610595703125), SC_(0.905801355838775634765625), SC_(0.5707652265814761497948122667290630272105804336492195682579100294355459961672140791071880766429409731e-266), SC_(BOOST_MATH_SMALL_CONSTANT(0.9810863833475235469277958389544517047197068113645329771862609657404337986886753563876834604988200819e-6849)) }, + { SC_(0.00015278931823559105396270751953125), SC_(2.961205959320068359375), SC_(0.81474220752716064453125), SC_(0.9686336621146354493433474249776172298665280233601677488791828735847807273311033210501894283315401415e-583), SC_(0.958455450908763408676259709003850505127184835507737618299201518879010869739080299459011514685706909e-4793) }, + { SC_(0.0001544274273328483104705810546875), SC_(0.00420844554901123046875), SC_(0.81474220752716064453125), SC_(0.1422532322669166233547198932045080465165903362620672425042182798017888251987764727317957393358226225e-474), SC_(0.6406898334415580088458250645785874360637358207768999598619702089982929269362776370994287852924942151e-4640) }, + { SC_(0.000157981921802274882793426513671875), SC_(0.0037211482413113117218017578125), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999999566547630376536143214240420427142438210294188898619193763474238270252), SC_(BOOST_MATH_SMALL_CONSTANT(0.1939835336353642181185006651880056927592761406033161022047725735001855667514649920234337582255840696e-9423)) }, + { SC_(0.000158215596457011997699737548828125), SC_(0.0021306932903826236724853515625), SC_(0.632396042346954345703125), SC_(0.585489069408415416859094179428755245059026878022058922110086645292918800665344436651745005494150636e-1061), SC_(0.4013779767791508783705177360072859499767304191374351949246605254518780551957188734709557279955995735e-2550) }, + { SC_(0.000160951211000792682170867919921875), SC_(0.30127601348794996738433837890625e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.00016759600839577615261077880859375), SC_(42.365489959716796875), SC_(0.81474220752716064453125), SC_(0.1618938996260777000048394331001333735828473724696664350638506114369038796698616072232027135104079628e-532), SC_(0.1406269609595736906072036049759311881759571600609412613234989755199146208324476469937305493352160618e-4370) }, + { SC_(0.000168283222592435777187347412109375), SC_(195800.984375), SC_(0.905801355838775634765625), SC_(0.1354730836770779887008364134677020378373435913423079679236745608956186958884681592671816839314904849e-260), SC_(BOOST_MATH_SMALL_CONSTANT(0.7218328323442263055653806224369414129100300853748650804831763213770456908980115243842363711809518462e-6102)) }, + { SC_(0.000172738815308548510074615478515625), SC_(0.0049294424243271350860595703125), SC_(0.221111953258514404296875), SC_(0.3114416249143174222707773893716090914119393864104215223191725870977046796409159221692930963037429121e-3707), SC_(0.2136540942872556917617205810810670917004987234999099979812297733739508644811512695176969110791906457e-541) }, + { SC_(0.000173404449014924466609954833984375), SC_(254.2841949462890625), SC_(0.81474220752716064453125), SC_(0.1623807315528767333124878537842720894843097228461791649763010742074974165066564387287453755136810854e-515), SC_(0.5139903302901960528806296251774297557179593757281392427011217512831331097078087743413793585401593293e-4225) }, + { SC_(0.000173563123098574578762054443359375), SC_(0.03019084036350250244140625), SC_(0.913384497165679931640625), SC_(0.4216616538689840580493202765005811219382538532665045593477628254798611397253732194894520035245541872e-212), SC_(BOOST_MATH_SMALL_CONSTANT(0.1519028677028408286426022642796355796371834777163384985260835697794432897435003268723798008701690198e-6106)) }, + { SC_(0.000175581997609697282314300537109375), SC_(424.74957275390625), SC_(0.3082362115383148193359375), SC_(0.1374073145508158420949504228513669911289818766266752735396725961060062755831664433604536360630772639e-2913), SC_(0.4230605089159464618195269490875633033407067783316713382196399536598739632732026878413067460684943756e-914) }, + { SC_(0.0001779057201929390430450439453125), SC_(276489.40625), SC_(0.81474220752716064453125), SC_(0.1433385239986982143091039354417074327444856302734237844209496604209186944824552623394484592702388461e-505), SC_(0.3254393884580671998800374872762169570117335009930005460956811676181892273519631542186785950401027696e-4121) }, + { SC_(0.0001830969122238457202911376953125), SC_(316055.1875), SC_(0.12707412242889404296875), SC_(0.9511278427600094377135118355732841750467670552479250043093395362716056782940829083897373604472037431e-4899), SC_(0.7803532852087708371120942312492910554457076414343654065648757393181828534760153291925458722946512398e-328) }, + { SC_(0.00019036870799027383327484130859375), SC_(159131.59375), SC_(0.8350250720977783203125), SC_(0.1729789634740508820735073120973928406958737581664893798113469681043431248697180368016298098828197989e-416), SC_(0.4700640179418385223918941195224263508328604356844341580801637757202846411167892041465379417600255792e-4116) }, + { SC_(0.00019106571562588214874267578125), SC_(419861.28125), SC_(0.913384497165679931640625), SC_(0.1567576669925923896301071869259641587664399666797404809747965341633674144549694814185182492182916359e-211), SC_(BOOST_MATH_SMALL_CONSTANT(0.5162529790129837326772014329885342018774722215280077618717450046045677991761733763019240992747819678e-5566)) }, + { SC_(0.000191590792383067309856414794921875), SC_(0.302199405268765985965728759765625e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.000192195278941653668880462646484375), SC_(177798.15625), SC_(0.3082362115383148193359375), SC_(0.138024604883116058538647719161923179568469814011119713441805481258801805364079413951746607008616879e-2664), SC_(0.6214268115306099755428145349231975501766324330655889187286806651500095053563428570653097584629241138e-838) }, + { SC_(0.000193911953829228878021240234375), SC_(32.115245819091796875), SC_(0.12707412242889404296875), SC_(0.7767238465456004634736100276529162725456105769090847581548651993018816232724302032160238139545805979e-4622), SC_(0.7429515026924012391238347914599424230456893918918839669869898430745346529849722172954900298765714898e-306) }, + { SC_(0.000195966451428830623626708984375), SC_(0.011618844233453273773193359375), SC_(0.8350250720977783203125), SC_(0.3146681743113886973623184980536034176049753150695447885790326381828535979784588451753885026920781476e-362), SC_(0.4068109297633604648746720510569521504676502764778768905020644717040368472889628052132454063237971075e-3956) }, + { SC_(0.000195981003344058990478515625), SC_(0.0429041944444179534912109375), SC_(0.9688708782196044921875), SC_(0.9793461126578410718261695906281390846110182632432004412427194576795091500841705229627568129960234386e-60), SC_(BOOST_MATH_SMALL_CONSTANT(0.2513713796751235907828438441697789705001794518265066530445805548152265415098195397202775734780602226e-7678)) }, + { SC_(0.000196676512132398784160614013671875), SC_(2.09101200103759765625), SC_(0.221111953258514404296875), SC_(0.1688684004935734129507194618787128291898404263112373618373185703765353001510076185646943439255116478e-3332), SC_(0.5581449070202207791994774311279788564219242110546247774044809308164393769681046251390741382417455546e-552) }, + { SC_(0.000203948162379674613475799560546875), SC_(0.0001180238105007447302341461181640625), SC_(0.913384497165679931640625), SC_(1), SC_(0.7356283444570884230046659312487088392816310786287366174624575321932732040301877371734957580169884699e-3072) }, + { SC_(0.00020552115165628492832183837890625), SC_(0.00138142076320946216583251953125), SC_(0.3082362115383148193359375), SC_(0.1429827774470379632418986529932925878067109333669332533336600330283131861737532258223510587704633786e-2193), SC_(0.2341877068862295533468430869601473825908234773332820544926420092056706340922633328773460900349255528e-485) }, + { SC_(0.000218528322875499725341796875), SC_(215.121978759765625), SC_(0.1355634629726409912109375), SC_(0.1110048779300638146798390845398371246385429120249543548342792575685395517497744173530040172362869178e-3973), SC_(0.8022096643538665096478563944796581809361449139533689574989841323239405907634192771527922293461587945e-292) }, + { SC_(0.0002204985357820987701416015625), SC_(107380.34375), SC_(0.1355634629726409912109375), SC_(0.6782041837753225116087366750982618373527264583758523076076086014196503295181969781109502388660601813e-3941), SC_(0.6193269243624208422105498405837256523212873871998352858610888692824299874430423276287869338392370258e-292) }, + { SC_(0.000222539805690757930278778076171875), SC_(1432.2476806640625), SC_(0.81474220752716064453125), SC_(0.57005783132530430477178660612185945455201469411533462172661962177087568713696497865918979484150433e-403), SC_(0.1949708209168304244700929849309951337025573564168735921272358803506030706483920425247229543064894803e-3293) }, + { SC_(0.000235087776673026382923126220703125), SC_(0.4550904333591461181640625), SC_(0.8350250720977783203125), SC_(0.4335349358585309381220181032114180746424093884422363206625486753112428399145977278964571410459447343e-332), SC_(0.650389236813766580597130012181305372203654735469315289707580896892498824640523282251757810144696338e-3328) }, + { SC_(0.0002402908285148441791534423828125), SC_(49604.3984375), SC_(0.632396042346954345703125), SC_(0.7008040408929262235053554567227687464078590845635471762102308082913134656553621195767599520904107947e-833), SC_(0.2136735135969628152506263136824164963628961958196644184395709518512486579889049679404568483195700527e-1813) }, + { SC_(0.000240380948525853455066680908203125), SC_(0.01798204891383647918701171875), SC_(0.221111953258514404296875), SC_(0.3342925463661810138117494511975629478239221152831799067641746784135917412668198052255609430627433737e-2702), SC_(0.3222196611766978181003356852573311778433944679181550734121443153023787300466516219418494602474315428e-427) }, + { SC_(0.000241263434872962534427642822265625), SC_(12.126102447509765625), SC_(0.1355634629726409912109375), SC_(0.3531864134226105186113445040884967127732118481204280425244188718161546045615341370437272139518523856e-3598), SC_(0.2833215142990048384723627809281010909783009686245495386096462142955031280014848980304024933773380429e-263) }, + { SC_(0.000247393851168453693389892578125), SC_(237.5718994140625), SC_(0.8350250720977783203125), SC_(0.7467758527304301930489712565401450019000732818359293236574052711086051715120317290915040602197067147e-319), SC_(0.1175295452624464467382186914508582066453868530811371083358007313613691947541112927930795321538689169e-3165) }, + { SC_(0.00024769871379248797893524169921875), SC_(0.11330743134021759033203125), SC_(0.913384497165679931640625), SC_(0.8057198044616208830119760910157076849241866542779883149391963159894898988241621518833543730869926923e-155), SC_(0.4514395318214618210859394950896479927155638675687542053309365859168556452184857791642978414805273734e-4285) }, + { SC_(0.0002514437655918300151824951171875), SC_(15605.75390625), SC_(0.1355634629726409912109375), SC_(0.1146473440389500630327805874308263045677581325180350222083785848704794308122851147951697341494068026e-3455), SC_(0.8743513856830855492899734290662061053243108228232205951055575280437649896310298019048383171343706971e-256) }, + { SC_(0.00025589551660232245922088623046875), SC_(1.8412075042724609375), SC_(0.1355634629726409912109375), SC_(0.144764702440988308650494806788512955786110080943559530168493614487641884364690057578375458127802417e-3391), SC_(0.2373686569225434236642860222784830432836890438791463843492870900930642417630451865195735639496103942e-247) }, + { SC_(0.00025991306756623089313507080078125), SC_(0.00044235005043447017669677734375), SC_(0.905801355838775634765625), SC_(1), SC_(0.1020933634675446432129245915691501904285268997926534185374436375239612656266249424861433627155489832e-3174) }, + { SC_(0.00026072320179082453250885009765625), SC_(0.0252933166921138763427734375), SC_(0.632396042346954345703125), SC_(0.5774106906136499007306321848486766627704035275590374197989905359732583981267344953827337578567245077e-746), SC_(0.1221153212552572483556124274480657574097866431021822465743906129424047977110997402380370557851061013e-1649) }, + { SC_(0.000261564855463802814483642578125), SC_(2.969768047332763671875), SC_(0.3082362115383148193359375), SC_(0.1917257176400386400114840135719818015469831009379409471718670646100779456798733130658135004020055163e-1954), SC_(0.3087647295581909311349470752466052134051176346344512798665157619492425697971635652332575362447818522e-612) }, + { SC_(0.00026690683444030582904815673828125), SC_(0.4926892220973968505859375), SC_(0.12707412242889404296875), SC_(0.7163470255220061959892697761424551497832999779611393880732590164502424545866100604093527599253026298e-3356), SC_(0.303403321416841421491577998091602161311391778650138396443569143991396032274291169527827724536822046e-220) }, + { SC_(0.000272565521299839019775390625), SC_(0.00399976409971714019775390625), SC_(0.12707412242889404296875), SC_(0.9205902969793391804289346438471724242443629260459170090697657561946770872247762543814516427553130581e-3182), SC_(0.3109865592710128973394498068097974142642216304306839600982877100239631214973288312317517622281276627e-111) }, + { SC_(0.00027427947497926652431488037109375), SC_(289206.03125), SC_(0.9688708782196044921875), SC_(0.1639984034231756044229208583485966873535409439402821030525820001328658712135114090265218902644737584e-55), SC_(BOOST_MATH_SMALL_CONSTANT(0.3167971869880607999140021341487256982349274342231617849188200189421432360201900646993311294871619521e-5499)) }, + { SC_(0.00027434344519861042499542236328125), SC_(2954.470947265625), SC_(0.3082362115383148193359375), SC_(0.1683233662674550433059541940673828771613870356265333292320684177950173516769252320642278291684226255e-1866), SC_(0.8216683369359972739531898111268752641450064211916381378045844365485522213413495802691798010671314424e-587) }, + { SC_(0.0002770713181234896183013916015625), SC_(0.341692575602792203426361083984375e-4), SC_(0.9688708782196044921875), SC_(1), SC_(0.2721068366073813159984513012097720958528607157423265246716102639988508670094701055419666722351122037e-1975) }, + { SC_(0.00027871350175701081752777099609375), SC_(4023.159423828125), SC_(0.632396042346954345703125), SC_(0.1291574753786667856129649195734480237580233476870127877698655245849801008629156532133192522949873216e-717), SC_(0.5840888368926630355728100612047316287689787084030763199998369840346014463888646072768489097278115931e-1563) }, + { SC_(0.00028021665639244019985198974609375), SC_(0.38819736801087856292724609375e-4), SC_(0.12707412242889404296875), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999988604475158829819376999429596962), SC_(1) }, + { SC_(0.0002803694806061685085296630859375), SC_(25.140018463134765625), SC_(0.9688708782196044921875), SC_(0.23552480440775539686430622396015067919780844087251368603606276838177295310310060990303562813841002e-50), SC_(BOOST_MATH_SMALL_CONSTANT(0.7995317643685616882578245050132329577447427558080918571872226097378941366069272208478020422926746699e-5376)) }, + { SC_(0.0002883693086914718151092529296875), SC_(460073.28125), SC_(0.221111953258514404296875), SC_(0.2233396334407501063829398750137152674191646314810442525057378806386961277867880125954762433466669083e-2278), SC_(0.5577026830875732789213978609737026549387438908077397276340226474934141615055513094301940786850847488e-382) }, + { SC_(0.00029471665038727223873138427734375), SC_(4642.259765625), SC_(0.221111953258514404296875), SC_(0.1964659986388620197949494436175138648990492072207094050745694462963416098007902395754209859034594654e-2227), SC_(0.7044089528885514023477501142531362477457204611307255297966202787746705705009966437731031365498302993e-372) }, + { SC_(0.00029570105834864079952239990234375), SC_(0.3176224529743194580078125), SC_(0.81474220752716064453125), SC_(0.1860550124115277473494932781255212307204352935158359449028966694978708068397626706181905362647786932e-299), SC_(0.8953514270365841014322122635578319704715759052931331999014308297370740627613581765401103299082390701e-2475) }, + { SC_(0.00029634564998559653759002685546875), SC_(0.19913904368877410888671875), SC_(0.632396042346954345703125), SC_(0.3197442029315312498712108245040093836159858776170946407071318462758591227686623736638502729118395128e-669), SC_(0.2864019299440505921197929128516171341714937141868930999923509260060292173867562602705635882811163529e-1464) }, + { SC_(0.000303403474390506744384765625), SC_(2574.359375), SC_(0.8350250720977783203125), SC_(0.1840994253117250404805270607533887786632543289491523928148833468575841012798514684383612820611090692e-261), SC_(0.9872824860359492914166421780659541457135668770815119787692868189959520451348040383967872982692573163e-2583) }, + { SC_(0.00030430863262154161930084228515625), SC_(4480.7470703125), SC_(0.905801355838775634765625), SC_(0.7989987554696839500514255411817667870611101697452949971475759879131344658215182377881990869415295713e-145), SC_(0.4653861011737469972581995931170302920614056467101385434957021898680109188966151056565374338629368917e-3375) }, + { SC_(0.00030529979267157614231109619140625), SC_(0.01552005298435688018798828125), SC_(0.3082362115383148193359375), SC_(0.3584606429312655286690623662604306912951571449557885090347260432313337425472180112472160415519266155e-1646), SC_(0.306889407573192367982236699554140219590070599349393754514778733142111937925075703379086747451344186e-496) }, + { SC_(0.00031313023646362125873565673828125), SC_(47957), SC_(0.3082362115383148193359375), SC_(0.6140467706083764734372135138377788724715450080825880868308108933067381056719150411174124070692627619e-1637), SC_(0.921284229323018599516905638825792787640889235297578211847748428274555272492297710369822293362663559e-516) }, + { SC_(0.0003153369762003421783447265625), SC_(0.3186367757734842598438262939453125e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(0.00031880356254987418651580810546875), SC_(387.38800048828125), SC_(0.12707412242889404296875), SC_(0.6806092213825624619059166962408870125659671706641577660035758374479363769205270046142419337689925199e-2813), SC_(0.1056613597655947279365524578962464014648880677807822247384977889481692322766476618718929426800897752e-187) }, + { SC_(0.00031994408345781266689300537109375), SC_(0.001032375730574131011962890625), SC_(0.913384497165679931640625), SC_(1), SC_(0.7071017389283724848719234541455596441560699878086570131316193543123221660206945210464227104527457353e-2954) }, + { SC_(0.00032006253604777157306671142578125), SC_(25544.60546875), SC_(0.905801355838775634765625), SC_(0.1248524509939406619596579531567627736258816407922955932512306168669861660695078961447792570278172773e-138), SC_(0.7212922995306375163192014889673288264391347567709589000969171380978292146911280122107793982675924702e-3210) }, + { SC_(0.00033008345053531229496002197265625), SC_(4.030014514923095703125), SC_(0.913384497165679931640625), SC_(0.9975734560448468759612529128778237023224720265347600686528362953187318243265193740327710521926032536e-120), SC_(0.404526846609125045972658746510076149900605931107922656236043210827094920682796574738334879534014374e-3219) }, + { SC_(0.00033188183442689478397369384765625), SC_(0.00350953754968941211700439453125), SC_(0.905801355838775634765625), SC_(0.5929422636197086077383456324233458183501129651519330355220259349760162240791889553954020855005798575e-11), SC_(0.8140457316736875576750652687443942190840577087450292599227936393072764836431179758206291852769523164e-2973) }, + { SC_(0.00033481788705103099346160888671875), SC_(29065.5234375), SC_(0.9688708782196044921875), SC_(0.1846977919985391564952085508451195643220780086125410057224640319193074200803916612250673647805555597e-45), SC_(0.6763605950304196663024302270101499833327718979457806556597688261088430946341633164345438666291301375e-4505) }, + { SC_(0.0003488220390863716602325439453125), SC_(0.02754667215049266815185546875), SC_(0.1355634629726409912109375), SC_(0.4803694959230362583861894599978585796781069351046673463471737782131751378039127886204508226680190055e-2472), SC_(0.1881645676206451221040555438895553361092799476658774551188871013525073673934531439221546279606645061e-165) }, + { SC_(0.0003489900263957679271697998046875), SC_(41187.57421875), SC_(0.913384497165679931640625), SC_(0.2461287697594131036065526087031153526234119600360384291520933425868737012901277518270232084149652514e-117), SC_(0.8111329371534791775992847055300188369788393120543005567768130580733055137814280681581784408696956762e-3049) }, + { SC_(0.0003502474282868206501007080078125), SC_(426.3076171875), SC_(0.905801355838775634765625), SC_(0.2779720876155144462226231822940338507029368188543079151109606163001676444543878012792912680119371577e-125), SC_(0.776281368475623007435924109522872763134641640702058648718943711099427857580529762384959142839004158e-2932) }, + { SC_(0.0003577272291295230388641357421875), SC_(31752.21875), SC_(0.12707412242889404296875), SC_(0.5077481398220846169175873934098900060512122438035380364572926573556066996724374493264842300516515964e-2509), SC_(0.1795886622442780998993947658818667972685924928002620912560386356541581143519610392732103090809615381e-169) }, + { SC_(0.00035909839789383113384246826171875), SC_(29.733074188232421875), SC_(0.913384497165679931640625), SC_(0.5172264183529136310816571658039709243363530167047491888758863921928978796296621667293682364579420138e-111), SC_(0.5633817993921249439488596686467497268571432769272195151617154434263338356468124515692430056590179221e-2960) }, + { SC_(0.00035964619019068777561187744140625), SC_(20.331836700439453125), SC_(0.8350250720977783203125), SC_(0.5454020657516541752348926685111938100732030876604546779342791098793184139000285970382287935843595917e-219), SC_(0.2981513836075845871948585585900276715676949251519001622248417950277237254860152962355013294488298071e-2177) }, + { SC_(0.00037471018731594085693359375), SC_(225.0031890869140625), SC_(0.632396042346954345703125), SC_(0.1959542074778042391457876920330541213801701770194694889936035142281974986320597938367660120674888976e-533), SC_(0.327824602633298506721332171507214246186231587684284682261203129977555286240686742378503132889096959e-1162) }, + { SC_(0.0003926889621652662754058837890625), SC_(15.1938610076904296875), SC_(0.905801355838775634765625), SC_(0.1461372845271456162519492439784973745545637564674606848929018405041858236145166742338398319168692688e-110), SC_(0.8731056692346343710111531290721334091337998125020982916199858057459285124439648668923639126644139581e-2614) }, + { SC_(0.0003978771273978054523468017578125), SC_(349.374237060546875), SC_(0.221111953258514404296875), SC_(0.9892213699474129847599810511050238830534088090963943091146782194667881168559896169671976068895693428e-1650), SC_(0.2797704543040406255932742694397766330962019064324697976678159154686827041790643099320823651025905441e-275) }, + { SC_(0.0004099641810171306133270263671875), SC_(0.000490800826810300350189208984375), SC_(0.3082362115383148193359375), SC_(0.3218160183296792937046838756294220441968176150112890387727391031327850409376873427241690843145224799e-603), SC_(1) }, + { SC_(0.00041028507985174655914306640625), SC_(2214.455810546875), SC_(0.1355634629726409912109375), SC_(0.1411999325669205965808790828551894850281098531738568598765881048916429345556342640556261373274044656e-2118), SC_(0.1592353273872976761249208714392391941822297390951273353638547435682169502626694415955289715845953966e-157) }, + { SC_(0.0004120909725315868854522705078125), SC_(367.71405029296875), SC_(0.913384497165679931640625), SC_(0.5066933695521165176246523418071433957789857410769463562299570835647419512776726729210386677920997613e-98), SC_(0.1265970668797066435909007516523614130256666881000883260285413494011577443739674733192626358994408172e-2580) }, + { SC_(0.00041210078052245080471038818359375), SC_(4.50945568084716796875), SC_(0.12707412242889404296875), SC_(0.1143960690535664250199860688726034012818174427865106800075523466764120531930011004598235789281682917e-2174), SC_(0.8345714108783484613695124908697811332193562702185916938670713435775303588214630436179835174257118356e-144) }, + { SC_(0.00041793254786171019077301025390625), SC_(4668.47119140625), SC_(0.9688708782196044921875), SC_(0.1653269200479391627166453551451738992737497944313621698423560899994975621869369680458774970524358841e-36), SC_(0.4311041278163289726906716832984629926603491374575744907712225153743261254178894691245072594246653796e-3609) }, + { SC_(0.000420027412474155426025390625), SC_(0.00036404779530130326747894287109375), SC_(0.9688708782196044921875), SC_(1), SC_(0.6544615268131893919716121151356027751896321910064426397522686169239852446274885797486469023450925966e-2794) }, + { SC_(0.0004246321623213589191436767578125), SC_(17994.9140625), SC_(0.221111953258514404296875), SC_(0.1173832139213001016251231231498948821097068328774066553984995344586910438973319916034085479159778975e-1547), SC_(0.8323067186972441939225305044242012601658547116611162739805085661806078937444323648917138209234065968e-260) }, + { SC_(0.00042692126589827239513397216796875), SC_(0.00024527459754608571529388427734375), SC_(0.632396042346954345703125), SC_(1), SC_(0.9999999745959413895422111611949978869110038927861511474365399998879884112988183104729392965896256825) }, + { SC_(0.00042705106898210942745208740234375), SC_(2443.44287109375), SC_(0.913384497165679931640625), SC_(0.1684711453888413330180850480037749119191474189413222767926727603039642175762060143901160637948074481e-95), SC_(0.3914312069341425939799926652190186575518134867666977172976349625714896660256339724245245192049770776e-2491) }, + { SC_(0.00042847762233577668666839599609375), SC_(22.90042877197265625), SC_(0.221111953258514404296875), SC_(0.67023835199603324035761977810576965514302257630983893399806168639614487075400273353527551989353986e-1531), SC_(0.1314702541432437672068577431852839495550335436186981264394870671747558289962630622146874262986783195e-254) }, + { SC_(0.000430326792411506175994873046875), SC_(0.2849896918633021414279937744140625e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.0004377235309220850467681884765625), SC_(454399.25), SC_(0.632396042346954345703125), SC_(0.2769317620368822406199630588725818387168895814972176990677612122217592741019585088966640945440495692e-460), SC_(0.1522676168730449323844882289007411395872182442478302256254177394851751556385766463462654899466666561e-998) }, + { SC_(0.00044121246901340782642364501953125), SC_(0.031357325613498687744140625), SC_(0.12707412242889404296875), SC_(0.123953600051413911633401443135954055320585692725164007863409730605945760646384143668640273075473359e-2016), SC_(0.907220612639681471777217716352391243096414172127754922082989948849290430563197738167889573247151462e-120) }, + { SC_(0.00044747791253030300140380859375), SC_(0.0003718078951351344585418701171875), SC_(0.81474220752716064453125), SC_(1), SC_(0.2783919010271951263778427406625842257025600371017910450175329489693649455022186772573538941734252615e-869) }, + { SC_(0.000447716913186013698577880859375), SC_(0.00131022813729941844940185546875), SC_(0.8350250720977783203125), SC_(1), SC_(0.1554247596578328267770832121177776366935407241213750773111958052465777348508556145921269246367713627e-1462) }, + { SC_(0.00045037711970508098602294921875), SC_(10660.8232421875), SC_(0.8350250720977783203125), SC_(0.7350737011457328778141747392073420751277644591269799245372468654051814693882793211166664863257880665e-178), SC_(0.1278433077734755966069798863603373854412033925325624066178732476370630333223722357933125776567949343e-1741) }, + { SC_(0.000460021547041833400726318359375), SC_(0.2375358045101165771484375), SC_(0.905801355838775634765625), SC_(0.1901142495450547594736586672871446104883440608646089068645600325638994404376461244433410127934241496e-91), SC_(0.2805357565586276158855672314277788879077231320930272684963493398503973829330985881953286423835647166e-2228) }, + { SC_(0.0004610864561982452869415283203125), SC_(0.2207309305667877197265625), SC_(0.221111953258514404296875), SC_(0.2692746917823974161515540005735972374815811731709126571639817167375377980485319144999252518681023766e-1419), SC_(0.2891796277655326002820228963978878622140636115972850622279110455835805504674205818053942429352702893e-233) }, + { SC_(0.000464259064756333827972412109375), SC_(0.001531984074972569942474365234375), SC_(0.1355634629726409912109375), SC_(0.1901150060646678783370103795638980771427259917858810768078635816368255955970486367270040692709334892e-1621), SC_(1) }, + { SC_(0.00046533494605682790279388427734375), SC_(0.3233075040043331682682037353515625e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.000471754348836839199066162109375), SC_(2833.98779296875), SC_(0.12707412242889404296875), SC_(0.1332528719628748324149547941284096536271782949432045977983225537277282460861998849234047366091903546e-1902), SC_(0.1527924805657772456192431978212328705530084850003875978617361526677450735331119344343526583262464365e-128) }, + { SC_(0.00047560062375850975513458251953125), SC_(19603.037109375), SC_(0.81474220752716064453125), SC_(0.2332827848019860377648462088562419445481904489469447291819318470398289925984817033338680075574667059e-191), SC_(0.7598637852153304708949850110408647807945863916443746925760321731093168705180978836087085594599710956e-1544) }, + { SC_(0.0004768202197737991809844970703125), SC_(4.81977367401123046875), SC_(0.8350250720977783203125), SC_(0.7928522360097904375503171186580037210765485268367668964262723503298265005809246636636895526749251047e-165), SC_(0.7264814757267783217858734080239603609122008213001691122705230310251402689644149181465822231621526509e-1642) }, + { SC_(0.00047791490214876830577850341796875), SC_(0.11917771399021148681640625), SC_(0.3082362115383148193359375), SC_(0.1221644439201177607039129248484271636993511893818937066510413514224230075376065956705326374452092366e-1065), SC_(0.4814009189282120124091290932584271319832655834371296538987404931173996568092311321257649037130883527e-331) }, + { SC_(0.00048245381913147866725921630859375), SC_(3.6078746318817138671875), SC_(0.905801355838775634765625), SC_(0.1569573896221283300377645047167634242613687648522114673857804152118487804858306469302280850090520061e-89), SC_(0.5239509151041740103941049627147338321452752464794567892965369644455829457133639138224838124569889054e-2127) }, + { SC_(0.00048475922085344791412353515625), SC_(0.0004919702769257128238677978515625), SC_(0.1355634629726409912109375), SC_(0.1297110620966190341863656648298430703032466060473899612769567635534733525340325973010326129668658037e-1175), SC_(1) }, + { SC_(0.0004984539118595421314239501953125), SC_(0.27903375666937790811061859130859375e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(0.001114696613512933254241943359375), SC_(338.423187255859375), SC_(0.3082362115383148193359375), SC_(0.4963961026896803775804912348578249813706254358877191480524847828619124016799773085733593342992757499e-461), SC_(0.4428411647922142529576567209626885070998368972735715198836871903362632366824858239771306101140524469e-146) }, + { SC_(0.00111688114702701568603515625), SC_(0.00206368253566324710845947265625), SC_(0.3082362115383148193359375), SC_(0.3731723266139428024302501079519295275900812437400758900334729231531872282134743369520722110283032042e-289), SC_(0.9999999999999999999999999996342384417872123916449259117690284035540024806964107976459219807050596692) }, + { SC_(0.001122163725085556507110595703125), SC_(26.959133148193359375), SC_(0.12707412242889404296875), SC_(0.8328123863471218466764890606231881035415169500301245573427945687895534854373969897355432705057567363e-800), SC_(0.536960443521505632976179498595789046546079604037849388379037538521469167318762161312508982064599698e-54) }, + { SC_(0.001150955446064472198486328125), SC_(0.4535874426364898681640625), SC_(0.12707412242889404296875), SC_(0.1884112751899531653353470394519634991110935884043691779105341925780485099073714347071458235118859373e-777), SC_(0.2677381828522148817096542550712851867675349614243582721868591874769540658898781673134665126974544976e-50) }, + { SC_(0.00116972462274134159088134765625), SC_(4487.220703125), SC_(0.221111953258514404296875), SC_(0.6389086690605448247119453067369179386125416082108018876855352827978538584073354498658616465783284593e-564), SC_(0.2087339976113587967803954519246503785894251093939555753813431905242316206311014237844503107330224531e-96) }, + { SC_(0.001238475437276065349578857421875), SC_(4809.8876953125), SC_(0.12707412242889404296875), SC_(0.4401995610661869647630337240790436247938682644912896167402354764604895613270759953023865963657788812e-727), SC_(0.257146039631154090279070058912979039963331502164832408349732557006095142050634339634895097243901494e-51) }, + { SC_(0.0012418846599757671356201171875), SC_(211065.625), SC_(0.632396042346954345703125), SC_(0.150065008504587442907249824289035574284643996676551574073125737374305511087152690735468297579283637e-165), SC_(0.2866823017139563731059886116893985826564281919099433587103127212791629526607921556910936160936122832e-355) }, + { SC_(0.00128578185103833675384521484375), SC_(4738.4111328125), SC_(0.3082362115383148193359375), SC_(0.3632014941716416097837726688741852597595060153546637296896248271543309090549151478329946524994450863e-401), SC_(0.4013135120598695569914363385293373337397387684720928189179791043914454320928137158700328972838739911e-128) }, + { SC_(0.001333879190497100353240966796875), SC_(46277.76171875), SC_(0.913384497165679931640625), SC_(0.3861269427867878694953552464821751215567089565674050992124409445131844156800507304593675886788991902e-34), SC_(0.4047829577952564963360787049919969775591652443646408909391600685422889456664813118608454064356000822e-801) }, + { SC_(0.001342063187621533870697021484375), SC_(0.0049741393886506557464599609375), SC_(0.12707412242889404296875), SC_(0.5101849744369723625647512450328136916848697306174957436869107693506179258050863793437177537050564382e-590), SC_(0.9999999999999999999999999999999999999999999986970111370740635209523747559800020432712116123756906164) }, + { SC_(0.001386920106597244739532470703125), SC_(2158.757568359375), SC_(0.81474220752716064453125), SC_(0.1816862233465659420155343059846336717454893586240277022184749525581728298901934813060164995101706004e-67), SC_(0.2926837647863689633635010437730818161037241832823974270443891782219433536191348891898931407055604138e-531) }, + { SC_(0.00139484903775155544281005859375), SC_(0.406741619110107421875), SC_(0.632396042346954345703125), SC_(0.1457257031604224981663525921028218209824865402177454502765759531993184145728169064941209529703823104e-141), SC_(0.1778039858662402623929403957393814248919911335053848551759317222350645692063732324422915176744668413e-310) }, + { SC_(0.001427047536708414554595947265625), SC_(3.0078976154327392578125), SC_(0.12707412242889404296875), SC_(0.3294999423999770892396379482819550311506382248683104363039426872776498106273805461046006734840196967e-628), SC_(0.9719215842832902710532075733912799211607521814967135508129096589059249358430159236837391274037313728e-42) }, + { SC_(0.00144447688944637775421142578125), SC_(0.3829285924439318478107452392578125e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(0.001469670678488910198211669921875), SC_(0.00022998542408458888530731201171875), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.001532684080302715301513671875), SC_(13060.16015625), SC_(0.9688708782196044921875), SC_(0.4711065147845850388023965708085548835686712881593262202653772650678489528320493323401559315023176681e-13), SC_(0.3165116417798003226025522674701410404417251799761158239245234784908344575155165366361416144393906069e-987) }, + { SC_(0.001546212588436901569366455078125), SC_(0.4388438761234283447265625), SC_(0.913384497165679931640625), SC_(0.1996091026340976123686000097269018330539713196974958168701158739984532340253696643765258238321429449e-24), SC_(0.4426000575444700095009039446887329732424292699353914499479844816837055596050630154989917071772887781e-686) }, + { SC_(0.001599461771547794342041015625), SC_(1780.4295654296875), SC_(0.9688708782196044921875), SC_(0.8180629485768102384668274394495349278331847509614769386523316130262382783290236010716298560476306601e-12), SC_(0.2581473049191021943763912596324526248388875982195073832381956213768878638873035207281527817565932389e-945) }, + { SC_(0.001671708538196980953216552734375), SC_(485.198974609375), SC_(0.81474220752716064453125), SC_(0.6880011341315721937453661078904168849375124569731909893424561355473220707601440831403247524141059063e-56), SC_(0.1135963177761676946255194772314150641504678346047579000231036208189388189615205618630410340374136488e-440) }, + { SC_(0.00169355445541441440582275390625), SC_(385561.5625), SC_(0.12707412242889404296875), SC_(0.1357644728330864490789824678976305163772099394360623876244722957279320763472294258387329915309912041e-534), SC_(0.2053505041582283169934672364999992838613518121457775564079632363481757795793068991443088908539966794e-40) }, + { SC_(0.001731689902953803539276123046875), SC_(198.0077056884765625), SC_(0.12707412242889404296875), SC_(0.1184897635019623113755905467611596252446391301338516906810499898085379277304939002383658102663597767e-519), SC_(0.2347013981736398888882040571597309860335372391967607905014093714270788247334158374175037252070966765e-36) }, + { SC_(0.00173926516436040401458740234375), SC_(0.333752905135042965412139892578125e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.0017912392504513263702392578125), SC_(3.0554368495941162109375), SC_(0.9688708782196044921875), SC_(0.4701843995640270906121370034989701299669354541714496690750159004043846640973940704885301368826587965e-8), SC_(0.1305618986995183315696829609716360911015214096550628562258179664901524047564724897268801060603249478e-841) }, + { SC_(0.001886987010948359966278076171875), SC_(0.00043248571455478668212890625), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.001926377532072365283966064453125), SC_(0.02606286108493804931640625), SC_(0.3082362115383148193359375), SC_(0.5406580046380102131640301770857145036121524819812279409608485271587105115434972991662539854510800795e-249), SC_(0.952132930610571873746115707945816219444814806871632571816788711973324426151777911105097474257863675e-67) }, + { SC_(0.001949134399183094501495361328125), SC_(0.0048745614476501941680908203125), SC_(0.913384497165679931640625), SC_(1), SC_(0.7586243807725404042115823297048566847731005920245323387172990603811457373280862279498121973921178672e-470) }, + { SC_(0.00195972807705402374267578125), SC_(233.2021026611328125), SC_(0.1355634629726409912109375), SC_(0.3446803528786989990219228812733230961882818325290924153111411079767043454658898139015238586738265495e-445), SC_(0.125809480222484732231087097071642553682078060449037442681423129657743058680079170711455722887816694e-34) }, + { SC_(0.00203225878067314624786376953125), SC_(0.16493140719830989837646484375e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(0.00204748497344553470611572265625), SC_(0.23111911118030548095703125), SC_(0.81474220752716064453125), SC_(0.1866120253975158452196385346003687614854599456749753562595327991766529810036023996411443099746602595e-41), SC_(0.1282571993505349007609177480653695416984643937465465263078861285009075093190583536646702602781192856e-355) }, + { SC_(0.00204884703271090984344482421875), SC_(0.0001168216476798988878726959228515625), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(0.0020499289967119693756103515625), SC_(0.00172629184089601039886474609375), SC_(0.1355634629726409912109375), SC_(0.2956233304559164347164896800185500753824608149620816533876297045088592336257572036169103413674439671e-257), SC_(1) }, + { SC_(0.002186703495681285858154296875), SC_(0.0003623119555413722991943359375), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999999999999999999999999954670685166314550494979207598775578417075148260249925377811395434216) }, + { SC_(0.0022444091737270355224609375), SC_(0.1359292582492344081401824951171875e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(0.0022751130163669586181640625), SC_(0.00026807599351741373538970947265625), SC_(0.905801355838775634765625), SC_(1), SC_(0.3428482131331867258515389607787665103868888149481879465217278147319094564347041967603807065074845189e-21) }, + { SC_(0.00233665225096046924591064453125), SC_(3.87988376617431640625), SC_(0.905801355838775634765625), SC_(0.6780362544309342304173716622518249237181041045434268075383298843383663030653228498316310064334534537e-19), SC_(0.1409036990351353603797011229152082183390222015220657787879784433068578378242776405117104022008759848e-439) }, + { SC_(0.0023414273746311664581298828125), SC_(0.15162646770477294921875), SC_(0.8350250720977783203125), SC_(0.2010977133020093058897157714132466272232864696686180402319685385467594041760309896890522829839873531e-30), SC_(0.3249806441488893624816289516575606552785819201931814314936889669423502092086628733236841474531822932e-331) }, + { SC_(0.00246974662877619266510009765625), SC_(0.016062967479228973388671875), SC_(0.913384497165679931640625), SC_(0.9999999999977651700409956690618497960817604205407645049691009442302480963790628969802821103328181306), SC_(0.9353372589230160596226574243795389958572033207316425972274497132429916236526182394850397892557523125e-405) }, + { SC_(0.002563751302659511566162109375), SC_(346881.96875), SC_(0.1355634629726409912109375), SC_(0.5003960670170566131644722883866939687456782826706056888829746462818410665033363837206731671613155767e-344), SC_(0.3408679092300370474161109611285835642746367258253067106004290272644385115717942673912861423632215709e-30) }, + { SC_(0.00258206087164580821990966796875), SC_(0.035458743572235107421875), SC_(0.905801355838775634765625), SC_(0.143622480612315952754644931389386278706415966727515052204717844005266047872767231469239298470505629e-4), SC_(0.2871464268203497590195825674770300558805974434291889133281028257872131828462321137969085454743093499e-385) }, + { SC_(0.002597031183540821075439453125), SC_(443239.6875), SC_(0.81474220752716064453125), SC_(0.6942092347831083617285544219665777044691714225398929758117560336078228198628598858753278302578519522e-40), SC_(0.1436271744818629605869886210042467600469838818937698616140996345037017420231564825517453306189884096e-287) }, + { SC_(0.00263487943448126316070556640625), SC_(0.153494547703303396701812744140625e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(0.00266719772480428218841552734375), SC_(346911.65625), SC_(0.905801355838775634765625), SC_(0.1260730238795489561138508283755776484269070983353784256410839887865847117281729154225183355605199679e-21), SC_(0.3576014021571111010934151525005149843936941986114814524397008393585894144808156223522149353014186649e-390) }, + { SC_(0.00269666709937155246734619140625), SC_(0.000412763678468763828277587890625), SC_(0.913384497165679931640625), SC_(1), SC_(0.173348256594487599703092302385923976662594797698830094427805600882101939816744692282237400110829634e-68) }, + { SC_(0.0027208295650780200958251953125), SC_(0.35322547773830592632293701171875e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.00272956606931984424591064453125), SC_(19772.78515625), SC_(0.8350250720977783203125), SC_(0.5863804516560304245741858773989103882781643265205511881179080803501510871065944578091414027546176614e-33), SC_(0.5604941162524537340659663839770563517419447622525305350925406775316567579902692412949602191075159081e-291) }, + { SC_(0.00275547988712787628173828125), SC_(0.3721626490005291998386383056640625e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(0.0028151907026767730712890625), SC_(27477.31640625), SC_(0.81474220752716064453125), SC_(0.5062181243865998137377395966222034140804656840060229403819882297612468021950235338593043155315545217e-36), SC_(0.1637008788043418297880665846729367695126612589341378894332192261176590005363933078725653287646841425e-264) }, + { SC_(0.0028353952802717685699462890625), SC_(0.00185509095899760723114013671875), SC_(0.9688708782196044921875), SC_(1), SC_(0.4383941724974990952548765226186703315111360028760806564805656221770516794584814150418451843548925219e-389) }, + { SC_(0.00288435374386608600616455078125), SC_(227.292877197265625), SC_(0.9688708782196044921875), SC_(0.4296681737246112185277247815054324892277031087762242784610226270686355003185546313967204197090833286e-7), SC_(0.9517251221303759156882164693317119448361477183418708643850432488357008638883192098963344158034343615e-525) }, + { SC_(0.00291968858800828456878662109375), SC_(26.0607814788818359375), SC_(0.3082362115383148193359375), SC_(0.1924068424127740185555474123917374597190110649821002708143209027137327269789461141465167038457318581e-176), SC_(0.3372275780201584442826669821360849803603556515206481084696861282294622365497111291169906840850481736e-56) }, + { SC_(0.00295443576760590076446533203125), SC_(0.002377311699092388153076171875), SC_(0.8350250720977783203125), SC_(1), SC_(0.700907724368058324525690048754858471439299289338280881803638384472216546657379137694334250922223981e-146) }, + { SC_(0.00295559107325971126556396484375), SC_(0.0265316255390644073486328125), SC_(0.632396042346954345703125), SC_(0.1470499541968122086681373911972951068149378764710274396944658495178129010382275574015706845704383259e-51), SC_(0.2825555789544362991085166208398507728416019237885463467013082013340253718116518767922500347664067344e-131) }, + { SC_(0.0029596057720482349395751953125), SC_(224.0623931884765625), SC_(0.632396042346954345703125), SC_(0.1440850342062154776859256736413078504748320470057325480436343926345028644442763241301647057593117571e-69), SC_(0.3551345595661543425427345320319242778131094254688046815915051724159171141780619835119258810932575214e-149) }, + { SC_(0.00297669577412307262420654296875), SC_(1.050155162811279296875), SC_(0.221111953258514404296875), SC_(0.62027825090616647238240792845206041542761363974347071096437887794133279745980711656372280914035385e-220), SC_(0.3215897972601044866808086583377747006181420149537483820256820579415768988283055448609885032793966119e-36) }, + { SC_(0.00300008966587483882904052734375), SC_(20.15772247314453125), SC_(0.221111953258514404296875), SC_(0.1001640106304162174564251079966166973069278815691966992511904094781829610422854212504793158859579374e-219), SC_(0.1918092322445028170891274807358733173119099336726461440340899953913051874286311108292385663325664168e-37) }, + { SC_(0.00300188665278255939483642578125), SC_(229.01318359375), SC_(0.913384497165679931640625), SC_(0.1924256340617578492847187808675044621006843667411926528907838052528282300714519774121062193131953392e-15), SC_(0.3014774240903195554803009279365969795836624442724980477113226934665451413904050431971004407954578301e-356) }, + { SC_(0.0030314330942928791046142578125), SC_(0.00014527700841426849365234375), SC_(0.9688708782196044921875), SC_(1), SC_(0.7818856020782235525559459407094684662821120388362084228368871196006327664519134685015016387016892397e-55) }, + { SC_(0.00307437963783740997314453125), SC_(47442.203125), SC_(0.1355634629726409912109375), SC_(0.6127367051414342546306950698252506314933033967730905762181214476561033454994329284989763494561004771e-287), SC_(0.3129725265026077259950731489130996305028480814699618611756501719114922372391088754935928735018582111e-25) }, + { SC_(0.003084543161094188690185546875), SC_(0.01759622059762477874755859375), SC_(0.221111953258514404296875), SC_(0.1795973463545674211531283634758630712040643731212358617943942775838746506528118263759004008991657051e-189), SC_(0.3512763044349039036775776522122718294634820640327104903300374983177457223199706028030207313774504709e-12) }, + { SC_(0.00308659928850829601287841796875), SC_(3668.456298828125), SC_(0.632396042346954345703125), SC_(0.5131306025378273441356168314532611897734425524780138728934091986037266763252437314939563869962987609e-68), SC_(0.238431430293535094632193142053110352335338683123702842662512130531320667630162982589689002514567079e-144) }, + { SC_(0.0031075035221874713897705078125), SC_(463574.59375), SC_(0.8350250720977783203125), SC_(0.7710392142754315313162068368826538979888632937258553455529661195921381727998285112908441898926510603e-31), SC_(0.1770318836797326850837052731489350350524494197239493075478442385156690317386156501048817829306432552e-257) }, + { SC_(0.0031872228719294071197509765625), SC_(0.0190620534121990203857421875), SC_(0.1355634629726409912109375), SC_(0.577115962017126052001570284280954430349927397473554118254493632335154868387260086347371920956809803e-251), SC_(0.9477208271424566790545016992938743452477089993063218666345536030432891365671025916891280192700392815) }, + { SC_(0.00330688594840466976165771484375), SC_(30.580783843994140625), SC_(0.9688708782196044921875), SC_(0.131522485269661766208492556914239979831950053474420695478330814616068545295864553544623763970897913e-5), SC_(0.4044628925670788801103869316697489861404886320685968119723882353196733207049327386273082787418628555e-457) }, + { SC_(0.003314100205898284912109375), SC_(0.00212650909088551998138427734375), SC_(0.905801355838775634765625), SC_(1), SC_(0.3388908205490964552983511220312242405352765255550660985434397094317092284680898250036694059331235236e-186) }, + { SC_(0.003379584290087223052978515625), SC_(0.0002798224450089037418365478515625), SC_(0.12707412242889404296875), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999996606980154026), SC_(1) }, + { SC_(0.00341137242503464221954345703125), SC_(0.00041894565219990909099578857421875), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.003439466468989849090576171875), SC_(47.370025634765625), SC_(0.81474220752716064453125), SC_(0.1619558858388758971158451129363857722604453318134947140402061352735911928284565210549247250916679042e-27), SC_(0.1552152097766748966712126542813990830110876603377490598483294983873478546359277469011971113612588794e-214) }, + { SC_(0.00347066554240882396697998046875), SC_(28.90100860595703125), SC_(0.8350250720977783203125), SC_(0.5451541501809570271240309060067988342378145813739340449037621513499420349972727417559509821334021862e-24), SC_(0.6493097789038924292302308051235160895435306469201827428272161035431567696755499905012324675418966527e-227) }, + { SC_(0.0034962403587996959686279296875), SC_(0.01680609025061130523681640625), SC_(0.81474220752716064453125), SC_(0.01023475449683925775801269447904094563181803335258415704244024738931844541694585177946920760250821972), SC_(0.1078702430769200730088189298863811809186810299761201132983808719906821349513332866238254254439300782e-185) }, + { SC_(0.003511893562972545623779296875), SC_(306009.46875), SC_(0.9688708782196044921875), SC_(0.226010120805150676790568596891217945895347398515604269562495163106758489877856504117944733974648284e-9), SC_(0.1581681388657578128303793715919566617458300988546837058599044395484107733165048668019023697956454298e-434) }, + { SC_(0.003595965914428234100341796875), SC_(35727.2421875), SC_(0.3082362115383148193359375), SC_(0.1152314121354237875475671351300016526994202096841630068447221392428392781871482869200570837917385732e-146), SC_(0.4915579944572208525616018955650018153120791747556238586718623527845271899005135245696121631804344411e-49) }, + { SC_(0.00361502938903868198394775390625), SC_(1.00639164447784423828125), SC_(0.1355634629726409912109375), SC_(0.8437823746032120722116726863335792964706776109053966789585476453555279311968001851160478379370722187e-240), SC_(0.3121736678319204776889772337819507513618281470059016095224642926822027728813009851078139976949443534e-17) }, + { SC_(0.0036274394951760768890380859375), SC_(172327.484375), SC_(0.913384497165679931640625), SC_(0.4649312481727332039816520073900496916179025068719353039401217895367607004704533900433054852250834543e-16), SC_(0.4308131498468428446867651467850468833187556014000914794919454614953351234763533196676859284805644286e-298) }, + { SC_(0.00363842095248401165008544921875), SC_(26888.734375), SC_(0.12707412242889404296875), SC_(0.119145386220547808480524616366713156332853811961203620074191450290897638690146586678011837675995321e-250), SC_(0.1256051639548185207680815322415102404102031438620545219662034165104794303091392934920416563962448165e-20) }, + { SC_(0.00371654215268790721893310546875), SC_(0.0219620727002620697021484375), SC_(0.8350250720977783203125), SC_(0.001531278059688844425073725000859519313354950257248330294106894156978523044058885036817903086666484126), SC_(0.4859094956992954217828019527843846029699491564858516140256822168030701361210960800627416305926612673e-192) }, + { SC_(0.00371891190297901630401611328125), SC_(0.21678431332111358642578125), SC_(0.905801355838775634765625), SC_(0.1989403348490392796904685775348199142204981483884462566869822878376183184621284526563509363689175446e-9), SC_(0.9489393224893896218229284264225474939925281655706600796746451824215551853290686066879759718963161733e-274) }, + { SC_(0.00372788752429187297821044921875), SC_(3138.884033203125), SC_(0.1355634629726409912109375), SC_(0.2835078784307424509379511395715332008076185963175281368529214877556697232247824185919702531535221333e-236), SC_(0.1917335959520406081161566526216012567746180947258988940344121835526351456550501923219178225154323289e-20) }, + { SC_(0.0037949834950268268585205078125), SC_(1.261780261993408203125), SC_(0.913384497165679931640625), SC_(0.2981269754756097686137559068916992843622873353672699474197772235699061667802581045739773108092736978e-10), SC_(0.7811363028797828131835435452883373589578828526579107095973771392924774048938053256833915587679522989e-280) }, + { SC_(0.0038448632694780826568603515625), SC_(0.000167022328241728246212005615234375), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.00385077786631882190704345703125), SC_(398.761688232421875), SC_(0.905801355838775634765625), SC_(0.9828936112261782415985967453804788743838150619613710665079951432973822455676368890563206921694692795e-14), SC_(0.5277666571839977021788943094765966230883449219079265336177608285921856207934259594413320006891003543e-269) }, + { SC_(0.00386014836840331554412841796875), SC_(1.3947961330413818359375), SC_(0.632396042346954345703125), SC_(0.1673319784108391751134807213566363471384314483183410950303884814914240425782895868947247472199800216e-51), SC_(0.1539334688335130872872671702819723220369217486873739608836654184343321871022481400926909069482358193e-112) }, + { SC_(0.0038849101401865482330322265625), SC_(0.19230575859546661376953125), SC_(0.9688708782196044921875), SC_(0.03688948256569191248147479469209049373932687781560061299658914003644538190431436772756053031092806142), SC_(0.1766228434077789641249885662567890970164993416377231910418308836906393373468295260087634143150315055e-385) }, + { SC_(0.00388975837267935276031494140625), SC_(3818.894775390625), SC_(0.913384497165679931640625), SC_(0.1130965385518089235021717846258252644159534392873432025821598310734261671427587156776023758345760556e-13), SC_(0.1096972566075886889991011825681462791403211072610317760833340637538038030658117691415129144552533749e-276) }, + { SC_(0.003921323455870151519775390625), SC_(0.001402953988872468471527099609375), SC_(0.81474220752716064453125), SC_(1), SC_(0.9549146687332131394621837831013320445588897234334688006700153143358556851587238270186065756310287923e-39) }, + { SC_(0.0039762970991432666778564453125), SC_(37.592052459716796875), SC_(0.1355634629726409912109375), SC_(0.8389716720688828476528458760266573984019911823781115074796311031492107865261799137849724135645517787e-220), SC_(0.1863859454038566611856639540834662658866206746232444028739812434318236212971049660232508914175083752e-17) }, + { SC_(0.0041162068955600261688232421875), SC_(2.1463463306427001953125), SC_(0.3082362115383148193359375), SC_(0.2268533853413530014025398831552625548225271006270514902938715439712875944432209632673218463457072557e-124), SC_(0.4430420531872126866006457019895686749306791041207577372324369872478573784879364698921697277853156581e-39) }, + { SC_(0.0041847354732453823089599609375), SC_(0.3331385552883148193359375), SC_(0.3082362115383148193359375), SC_(0.9215257753063606623976360918389807691700232795900471642801757502433225391905943806565514746109675049e-121), SC_(0.7219380498141287168951795018454285271671087930436064533715551096737209956194627052643520096495327471e-37) }, + { SC_(0.0042013223282992839813232421875), SC_(28909.28515625), SC_(0.632396042346954345703125), SC_(0.8339930219923378464403640281618240270148226285191790531990776782196381361370167305281424357864930571e-52), SC_(0.6941381970990705941667619671027593803237143442584236274598258447879180795551815287189618186136392048e-108) }, + { SC_(0.0042040585540235042572021484375), SC_(0.004051725380122661590576171875), SC_(0.221111953258514404296875), SC_(0.4281583185472131681817910428681166037538507437538097241292188083643615059534930331279625093793331541e-82), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999962089563349) }, + { SC_(0.0042134574614465236663818359375), SC_(258792.734375), SC_(0.3082362115383148193359375), SC_(0.1076922726678175502266304792357998888032471508545474864585903483926665221223951252441637405234484482e-126), SC_(0.226096877346560869025837193899017879217587177157410066182445188361468939241838950022712580276422069e-43) }, + { SC_(0.0042219576425850391387939453125), SC_(29.536075592041015625), SC_(0.913384497165679931640625), SC_(0.9297641096499359263244836840971327898602814987469309791581124278795476295520155367620472889418274595e-11), SC_(0.4466594212285694786832164822616296747722104585086540583619362853899300041358913628042231878252464539e-253) }, + { SC_(0.004270188510417938232421875), SC_(1927.554443359375), SC_(0.905801355838775634765625), SC_(0.2534271542591935029194534544886225655476402525371102597458582253744193837761018475967111359488942468e-13), SC_(0.1606865936839639220154812320879434797276425946486486204866265102517808313851338914462897553890378346e-243) }, + { SC_(0.0042725945822894573211669921875), SC_(1262.0977783203125), SC_(0.8350250720977783203125), SC_(0.2107197908691582408106923795027588929664026945476540469217274209034827723266997925366473217773569392e-21), SC_(0.3067113524451105232599675748625973038848538760344840883394096308983763742905731724217459062710595717e-186) }, + { SC_(0.0043012551032006740570068359375), SC_(30236.775390625), SC_(0.905801355838775634765625), SC_(0.1909438305188898788814264748599955189429517806934431120097729159695462451949965256974249579420702566e-14), SC_(0.5567726537786740659237247837635144929992032684460483673627377512011859708639321325657862083432468764e-243) }, + { SC_(0.004325519315898418426513671875), SC_(175633.671875), SC_(0.221111953258514404296875), SC_(0.9765627387546010023910914027597295878173964888796355428282381291389814020629671201078144611901105447e-157), SC_(0.2610896750074044197645530379036555019846456797376024435815564468923594221051029690431663375679088488e-30) }, + { SC_(0.00443776883184909820556640625), SC_(34.436649322509765625), SC_(0.905801355838775634765625), SC_(0.3451928957866740588408828954078233604597538679306616933083169315226873823852118688529064012427854301e-11), SC_(0.1078915942536595243522784462880793666014494821265356734731677451255774856247457417296426805379830938e-232) }, + { SC_(0.00454067252576351165771484375), SC_(0.483688652515411376953125), SC_(0.1355634629726409912109375), SC_(0.3197604923879217789859746878782699677311035400008250295888096076130923308633257872667919704328497876e-190), SC_(0.5025097548531777689853003365146214578426859535216756055251935938510515382607198788458252178015780957e-13) }, + { SC_(0.0045460476540029048919677734375), SC_(300.9449462890625), SC_(0.221111953258514404296875), SC_(0.1278410421643053312617805860373795784242611632786671206617762379886575701940508719829985665766099267e-146), SC_(0.2516481805957556160750899491654067502018053045091140502314717903419696404429084482123749731527690037e-26) }, + { SC_(0.004563690163195133209228515625), SC_(2.421394824981689453125), SC_(0.8350250720977783203125), SC_(0.2017685886919363554199774311910650936886798272742375469580619068335804281293454270581315916581611195e-17), SC_(0.9594588913692987312966703487802540766859002556225897887845836399580512373214374330849842190980280614e-172) }, + { SC_(0.0046148826368153095245361328125), SC_(2.5390207767486572265625), SC_(0.81474220752716064453125), SC_(0.1431597830742336444069598992297912708591648328281176390591586113250058341782317192306933053420776114e-19), SC_(0.5904542992042702541514601392345148910666589794128306192733822779708773164752136296430855088479883883e-159) }, + { SC_(0.00461888872087001800537109375), SC_(20.5790615081787109375), SC_(0.632396042346954345703125), SC_(0.2300485586767966234994335715920681715112370755435243914173836280407385046022932186637537011520962476e-44), SC_(0.2248735128594487048255690107468922819140198440701889168135910789033944858294448891258244865204972538e-95) }, + { SC_(0.00461952388286590576171875), SC_(0.3906617712345905601978302001953125e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.004653147421777248382568359375), SC_(0.10722650587558746337890625), SC_(0.221111953258514404296875), SC_(0.1110869291956305440666537777858921899700532148093702458811474202754346341664227080300181211809690756e-136), SC_(0.3724099241473006487583876674052397217537488028141782640059014309169316044786909001365671407243967563e-19) }, + { SC_(0.0046935188584029674530029296875), SC_(0.3578202085918746888637542724609375e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(0.0047154170460999011993408203125), SC_(0.00197655311785638332366943359375), SC_(0.632396042346954345703125), SC_(1), SC_(0.9999999999999999999999983035913271425854229338598822148694474368184071778831494112149345245860521988) }, + { SC_(0.0048523540608584880828857421875), SC_(0.0342371277511119842529296875), SC_(0.12707412242889404296875), SC_(0.1578206741404555228849616307610741327060806805042283925959285809457335301344920285809434194454678809e-172), SC_(0.3250180423710289586903646591996830984979630235145801092107541107501723095629843098523357437055977376) }, + { SC_(0.0048918980173766613006591796875), SC_(15688.6884765625), SC_(0.221111953258514404296875), SC_(0.3813810974341855962821232910351910158561747620015173564369275698682834148693298548308288109568662591e-138), SC_(0.2348853830672004421094954873666871549036931846034504807871747010651651531266527976547687624759714629e-26) }, + { SC_(0.004914722405374050140380859375), SC_(192.96014404296875), SC_(0.8350250720977783203125), SC_(0.3426892818681607765858933992653171291084112575341691867992459853244855063478139531890254794285020963e-18), SC_(0.1716028798114187558818053346112044344239451353763686038343256729581466469290640888968919000444418206e-161) }, + { SC_(0.004918993450701236724853515625), SC_(0.241855232161469757556915283203125e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.0049519282765686511993408203125), SC_(0.0407697297632694244384765625), SC_(0.9688708782196044921875), SC_(0.9999999999999481177548872881559131864481882291493597646641119967866348812790977151949261580620359353), SC_(0.5408790804440555764019977938818919711218336041500303559479697889809462480751099740361960507302118638e-294) }, + { SC_(0.01061948575079441070556640625), SC_(0.4264468225301243364810943603515625e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.01090050302445888519287109375), SC_(11.95932865142822265625), SC_(0.81474220752716064453125), SC_(0.3394548711434461399197039345131380203046457081597679661920569606097793947380113894583463547114207165e-9), SC_(0.3313744466116940090476197069004213675600085254774219296746348045612349303448474676381073764548320605e-68) }, + { SC_(0.011304032988846302032470703125), SC_(0.01250172965228557586669921875), SC_(0.12707412242889404296875), SC_(0.2998962608480790729037021071511917956220561979343950860483291823104879112777934838685726392608676835e-54), SC_(0.999999999999999999999999999999999999999999999841925025061697347806166707185754050971408798885196788) }, + { SC_(0.0113441534340381622314453125), SC_(311.568267822265625), SC_(0.905801355838775634765625), SC_(0.2971195863694997830543394940133533734343754644549564968600844963534549606105917468338659197548831525e-6), SC_(0.6627597251793105978687321545284255292409269300656607180589110086167563802344514514518005282404859079e-93) }, + { SC_(0.01210707984864711761474609375), SC_(0.00047863091458566486835479736328125), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.0127197094261646270751953125), SC_(461789.9375), SC_(0.9688708782196044921875), SC_(0.1073089003982785729211612242822796694580657253474227466141328249300714525126128516615939096195697843e-6), SC_(0.4216572140463037839478701614203258618039262646952168229008776670998410733907678437886133801643041537e-124) }, + { SC_(0.01275224424898624420166015625), SC_(218.467041015625), SC_(0.913384497165679931640625), SC_(0.2138920668536116650923763784029482888081788505901512392275463109517963567566586164060195954810565678e-5), SC_(0.1271373015727443468258133231448740981986337253514336768904685034942767106930475440228248474639521289e-85) }, + { SC_(0.013632931746542453765869140625), SC_(12715.3935546875), SC_(0.221111953258514404296875), SC_(0.3766809882753050332339841540453123504372151312937742176604638239143375081784240629647830954954601061e-52), SC_(0.4890377949202294716655264427893492458602405834218951535021966502025766177055748536387544797881547043e-12) }, + { SC_(0.01376917399466037750244140625), SC_(410.58148193359375), SC_(0.1355634629726409912109375), SC_(0.1295152085297360548224891504057519332250394799330287418362793424784991911998971787766898873933294969e-65), SC_(0.3519751028939743964479649059523014401649181074141121774851033213679863835668634944178512177682593097e-7) }, + { SC_(0.01422516815364360809326171875), SC_(3725.08544921875), SC_(0.913384497165679931640625), SC_(0.2616584564895064558838328693816469048100813108359535816540384465488602491190069286589721970808967354e-6), SC_(0.3151001467913376946111390809395674334746172602322988133063813096052289736896989179930034482842736077e-78) }, + { SC_(0.014248653315007686614990234375), SC_(0.29711585739278234541416168212890625e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.01431076042354106903076171875), SC_(2.4992504119873046875), SC_(0.9688708782196044921875), SC_(0.0322537112320909123908663905763058966956256503892518375406857130620853606110241063781298273111124396), SC_(0.1425415341795480451711357197794155364576207691109349446494267537879992036186582702803714840755254917e-105) }, + { SC_(0.014824463985860347747802734375), SC_(0.38286387920379638671875), SC_(0.81474220752716064453125), SC_(0.7875582498245335999859780198556963440213434533013659870832326862021911261562243885680927508208465954e-5), SC_(0.3203274269925048157144573893217690941261315773803387622206790420512687432185563905952099394168772315e-48) }, + { SC_(0.01512057520449161529541015625), SC_(0.0045269015245139598846435546875), SC_(0.905801355838775634765625), SC_(1), SC_(0.2026175862879462846825904993878800545690495617043500295770074381757591191185543056674874885357751654e-25) }, + { SC_(0.0161462686955928802490234375), SC_(31081.712890625), SC_(0.632396042346954345703125), SC_(0.8650504859534052161394220631861355626763365067546896329375943500065210804045818208125820331078983277e-17), SC_(0.2212481623748096598916817360263562090863217687270136689151654559531467863855414704697580993561487733e-31) }, + { SC_(0.01625619828701019287109375), SC_(0.0234319157898426055908203125), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999999999844414628176971612104444798134241222810371841333574557212454590895690393), SC_(0.5102700906814067294868455940089865406605097366803499395027892554924528576204682146841162820583129873e-51) }, + { SC_(0.01645939052104949951171875), SC_(29.5273590087890625), SC_(0.913384497165679931640625), SC_(0.7992099725772733917763246216610876778666581365429799400851868891218567399680407992481141565541073505e-4), SC_(0.556151960458916052452091489616758427476021279464763931344982676187009092998591484716878232065995807e-66) }, + { SC_(0.01668673567473888397216796875), SC_(0.16884712749742902815341949462890625e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.0168448425829410552978515625), SC_(0.0039571900852024555206298828125), SC_(0.9688708782196044921875), SC_(1), SC_(0.2134348748225123349932307593782225471681523334985269828368306161531263046434216159166307730043505442e-46) }, + { SC_(0.01712529920041561126708984375), SC_(0.002250707708299160003662109375), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999894075311447098296808212006987307544312421189047293981016038243909547924493553135648819657) }, + { SC_(0.017150647938251495361328125), SC_(27.16506195068359375), SC_(0.9688708782196044921875), SC_(0.003706652304112249859678957069063629278050217800861606411459519133046697398106111903562855992524398811), SC_(0.2955394300970994786605969582220104300972154538595533594137052125461004533908165468588501817399355724e-89) }, + { SC_(0.01761732995510101318359375), SC_(0.028260417282581329345703125), SC_(0.632396042346954345703125), SC_(0.8268992419747905923947012140316973102772449830512814904184525891690655021298046149742482598005300762), SC_(0.1797083812742240502805597311353349687154317075309024886270825089905675657121774890967927455704055761e-12) }, + { SC_(0.017636947333812713623046875), SC_(0.3383924067020416259765625), SC_(0.221111953258514404296875), SC_(0.789770611712973988387653554198474848580604381983286912825497184554655636019060109347003870200820726e-36), SC_(0.8019698684092230949049132949539004728382515536906408051748924377915238929284603448260323645953828269e-5) }, + { SC_(0.01792473532259464263916015625), SC_(0.4457229442778043448925018310546875e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(0.019047506153583526611328125), SC_(0.291198313236236572265625), SC_(0.905801355838775634765625), SC_(0.09714746849063963911850793492151269609338252056927476470985762213797128926236258411068264544725979384), SC_(0.2575556584401940413907031944009515103484688854872648617812452420011220330088098953732435792721842366e-52) }, + { SC_(0.01962828077375888824462890625), SC_(266305.03125), SC_(0.632396042346954345703125), SC_(0.1555604313739735015901938650520214697779400557989383819195175049485038515797870208525810311528031064e-15), SC_(0.1542955688184419101260249799341720684350754849899964769433108541841786264292243968230581344198779469e-27) }, + { SC_(0.02007224597036838531494140625), SC_(3.6188943386077880859375), SC_(0.12707412242889404296875), SC_(0.4200500010178663479086535266995461848290803868676925297649786766191130264094384661168897170680573091e-45), SC_(0.00020841529438597984759235826381569988401009909042885033296270118232111673872441543488969361728891619) }, + { SC_(0.02042911946773529052734375), SC_(36.3684234619140625), SC_(0.3082362115383148193359375), SC_(0.1522944380092980010949523994857639151230211254034868226696760261665392551811295706624971347480191723e-26), SC_(0.2331694868022640177501169503766125230105072176314002152328740288242890890434410626589924004961939046e-9) }, + { SC_(0.02061123587191104888916015625), SC_(4.98589992523193359375), SC_(0.3082362115383148193359375), SC_(0.2018027182595950471018861385410032560657936184489463649480416458206562403583101637564600011967706617e-25), SC_(0.2178070169890661188085382956542191138585921425303085133841186847656657449479729760873299056505279428e-8) }, + { SC_(0.02065885998308658599853515625), SC_(12765.6015625), SC_(0.3082362115383148193359375), SC_(0.8124903330946992385592890975834638585297977073843082118319386091759428929784476167226127823714473906e-29), SC_(0.8011192642314648802698090945452703508069311843247477617465384482296269438966400552556174864001276506e-12) }, + { SC_(0.020764775574207305908203125), SC_(0.0004887509276159107685089111328125), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.02124021016061305999755859375), SC_(20481.953125), SC_(0.81474220752716064453125), SC_(0.1804133428688939306148629915962607755322284727381966238911874389882135451431381352063182902403297396e-8), SC_(0.9375789089117065711653106955059991774590641083972486659353691358773808935028337996255472301440499586e-39) }, + { SC_(0.021562583744525909423828125), SC_(122176.578125), SC_(0.8350250720977783203125), SC_(0.1093197240594170052825726082253850220584633886565177461733123246748950749433189796150443567155139784e-8), SC_(0.2379222155654957661039915655365132931615394211661434912021045753363455977510053346975647425828781689e-41) }, + { SC_(0.02161762677133083343505859375), SC_(1.312267780303955078125), SC_(0.1355634629726409912109375), SC_(0.4714086940877840852821143985137268864926147210047059265428243761880552289621324642089922712547504202e-40), SC_(0.0007810642646207640045612813466958513879368564673482073846840965906031686880042769138441401094776980143) }, + { SC_(0.021679364144802093505859375), SC_(0.42985266190953552722930908203125e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(0.02205819822847843170166015625), SC_(0.00224195979535579681396484375), SC_(0.12707412242889404296875), SC_(0.9999999743437499590557443158950072165278231989716255275627521246638428603444581414207632112728071398), SC_(1) }, + { SC_(0.02250875532627105712890625), SC_(29.670085906982421875), SC_(0.905801355838775634765625), SC_(0.0002433325632778327092625401467766195146184308710720067695492470041597032477523579878820800465825231766), SC_(0.5150697612146282528479188903902894775941754906902990622440481573532248107930327498073735923156101498e-47) }, + { SC_(0.02278398908674716949462890625), SC_(230.1311492919921875), SC_(0.9688708782196044921875), SC_(0.0007269574172873129411963343212040179380298594231431346881863522440015584973926902802527786654233465604), SC_(0.1822636223044223264876614628592099808902816805294045066946374796750942720853176549983920837474772324e-68) }, + { SC_(0.02300582826137542724609375), SC_(3731.865966796875), SC_(0.905801355838775634765625), SC_(0.2095220367967429822377583481733573588449573561554430633594800500152630306434401785175101823741972512e-5), SC_(0.3891548069949160453151148712546364726284509317468922156564509523889746286159882981356563230852823478e-48) }, + { SC_(0.0235797353088855743408203125), SC_(0.34650889574550092220306396484375e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(0.023755080997943878173828125), SC_(1.81503880023956298828125), SC_(0.905801355838775634765625), SC_(0.006590777671574961636879966170103174690307145737931865056518046168873372284928805513375880746090332096), SC_(0.2732298204659835001633308277475134635176330805279161997541799404532087072424619786027036565421763991e-43) }, + { SC_(0.02475666068494319915771484375), SC_(0.0353721342980861663818359375), SC_(0.81474220752716064453125), SC_(0.9999999998494110550209180668867519886945065285008380827145488700175118810552211822653211287854941369), SC_(0.5086346159614278443874309789988432936439342562940915373695619962359493906444599481879963799093473505e-20) }, + { SC_(0.02489638887345790863037109375), SC_(0.17812990336096845567226409912109375e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(0.02505088783800601959228515625), SC_(0.169265210628509521484375), SC_(0.1355634629726409912109375), SC_(0.4393716825626699693872443420059657396353643390970939032698192277482060712029547256328024112303033391e-32), SC_(0.3901105901183525889244131508704606004217103825681865992243979450796731840068187120521771846343791852) }, + { SC_(0.0253847651183605194091796875), SC_(0.107284702360630035400390625), SC_(0.913384497165679931640625), SC_(0.9994045085791551569103968035105521804207471937365816378886382546331050768608472270085348862863127296), SC_(0.5145347555259739464752295871433120206092645543317632406344287976112767546361956508719818550032235306e-38) }, + { SC_(0.0263047702610492706298828125), SC_(3064.19140625), SC_(0.221111953258514404296875), SC_(0.2276044623595365355804976702547362035120692715163230908557837707260074670216838916528877567942150214e-28), SC_(0.1401816633150001466743385570849220453112069117593970203239771993963829017783750254698646084719194439e-7) }, + { SC_(0.02670976333320140838623046875), SC_(0.00032671095686964690685272216796875), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(0.0269134230911731719970703125), SC_(0.00032558594830334186553955078125), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.02691542543470859527587890625), SC_(257.891082763671875), SC_(0.12707412242889404296875), SC_(0.1150412241819363232833673608318559937646755708114443846743800566493561154751813921661001640063490556e-35), SC_(0.1435018135778254280693031610420688095952512143432353733456305218725676547775717965761626089663279399e-4) }, + { SC_(0.02693811617791652679443359375), SC_(37925.875), SC_(0.1355634629726409912109375), SC_(0.9187161123493686719438004956412353263450037511534660051274427113116036446223699300277575940086965002e-37), SC_(0.6797905522345183257645865420255517633056506889336045237973988145253535545425635939196719522245615138e-7) }, + { SC_(0.027010373771190643310546875), SC_(40.798625946044921875), SC_(0.8350250720977783203125), SC_(0.1798014437236270248138253704932871005342185469454746679709849450334996043701767160498292665465904483e-4), SC_(0.1513583089039433076177271740495099817137855269297600509792331707733889453043127305414711933792587926e-30) }, + { SC_(0.027130119502544403076171875), SC_(0.390757262706756591796875), SC_(0.3082362115383148193359375), SC_(0.1044056975572376308765154294986005072870675981267343743712261762026740722231750616244863245447961042e-17), SC_(0.9101352243563679857557108216482150371660984226187518469036378819460978248146148548654889750588226441e-5) }, + { SC_(0.027266047894954681396484375), SC_(0.2437297735013999044895172119140625e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(0.0276034064590930938720703125), SC_(29335.0078125), SC_(0.8350250720977783203125), SC_(0.2853636941151348397657046931218866027359058046091082403852767018295428497577972128804643411608559971e-7), SC_(0.8724607943396310648606589264285688245751276561785703801250189294573768102186132977176096708340653321e-33) }, + { SC_(0.02829697541892528533935546875), SC_(13777.6298828125), SC_(0.913384497165679931640625), SC_(0.1736589265737632964578838443456655981943262569238197086199834594805185366895681857318611358446257428e-5), SC_(0.1189397221041639610388746406584499663421681982547046090445251596832566221982881764122333759917158798e-41) }, + { SC_(0.02842903696000576019287109375), SC_(0.03119052015244960784912109375), SC_(0.8350250720977783203125), SC_(0.9999999999999984084063316155836368075057977363893366558328934762346404058500127598619619457809450781), SC_(0.2229579796791742481372346796211945378302688231126931718756291563778710461961297903104990346987522257e-17) }, + { SC_(0.02883697114884853363037109375), SC_(399.402069091796875), SC_(0.3082362115383148193359375), SC_(0.2718019908822349418386085673590849525238184767158595324397346436757882917012839726878013827414479547e-20), SC_(0.4061626135411854809919783794879608125371376531026679210955857871963161853148808488426049802248524438e-8) }, + { SC_(0.0292808823287487030029296875), SC_(0.4510292112827301025390625), SC_(0.632396042346954345703125), SC_(0.7839128566060896947368087167226581474691026261923481810505924631799162620570913277755695945847927869e-6), SC_(0.704297546008106999661065436236280684549945454917873334339646674170284492387008449028099214191283426e-14) }, + { SC_(0.0295875072479248046875), SC_(0.18167886082665063440799713134765625e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(0.03072208352386951446533203125), SC_(487934.875), SC_(0.12707412242889404296875), SC_(0.8108497381952252287827948136752107732445987862735089473441231977965098910583770562617792683501862499e-35), SC_(0.1424010664584348861459925411453889646057594967951447570239331171012944551007449427901915631630930771e-7) }, + { SC_(0.0310857109725475311279296875), SC_(15232.21875), SC_(0.905801355838775634765625), SC_(0.1605220071657247271536519849691309457742442181828171823431993692890280781736459693024175399391200143e-5), SC_(0.3744778564571311897387386314508759605928284070246312365312062599270231291584888873497403385148538007e-37) }, + { SC_(0.03123457171022891998291015625), SC_(3524.479736328125), SC_(0.12707412242889404296875), SC_(0.3380179741025625130594553963055123470797485945263619277584867014106077006962757168609399934695108262e-32), SC_(0.2122070084774707804526082035603305501395751934924392277461843556714874343017879250017413564403539705e-5) }, + { SC_(0.0312533564865589141845703125), SC_(3994.4365234375), SC_(0.8350250720977783203125), SC_(0.4511537506193050038388193880869944677641536876360369056827823070369087023490799649584507772308784597e-6), SC_(0.1315153243537056845722888711609247845420905304884308854505370331509311419058278626789622963092543423e-28) }, + { SC_(0.0315650589764118194580078125), SC_(0.001970894634723663330078125), SC_(0.3082362115383148193359375), SC_(0.999999999999999999999999999999999999999999999999999999999999999999986773890768532679810845499066263), SC_(1) }, + { SC_(0.0319148339331150054931640625), SC_(0.00033934754901565611362457275390625), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(0.0324479900300502777099609375), SC_(0.015262463130056858062744140625), SC_(0.1355634629726409912109375), SC_(0.3149187279576306184549621540112105986790134560685035035373310464492501608768724258632508424293817365e-11), SC_(0.999999999999999999999999999999999999999999999878335855350655894771055071194203445152745817337995088) }, + { SC_(0.0333194546401500701904296875), SC_(0.3989324867725372314453125), SC_(0.9688708782196044921875), SC_(0.9076022671185609356318275460599332838272469533810706043999439002307585692036734322358860139356297392), SC_(0.4004571394386775792378526406190674207722086797876156342313144718526485641114185022081848477461812071e-44) }, + { SC_(0.0333627723157405853271484375), SC_(4.62843418121337890625), SC_(0.913384497165679931640625), SC_(0.009495430794609611285745311089905495207211316766447295313087966071837559050926626251228316995050282153), SC_(0.1988200916248673010231264871542099188285836982636547556239235129616956263350680171812112511832329089e-32) }, + { SC_(0.0335802994668483734130859375), SC_(0.19390623271465301513671875), SC_(0.8350250720977783203125), SC_(0.3101259303428897448759502623465982078459374070521890316068903880544455874811387708830679648483255429), SC_(0.43817227603678849636483718203402523696114117333935808316629610574477590399816112854621342659480082e-21) }, + { SC_(0.033774249255657196044921875), SC_(33.470600128173828125), SC_(0.632396042346954345703125), SC_(0.2240982180328528153376348860922966506583662621666756123148285138137017993555124368340020753097519876e-7), SC_(0.2368339479903695681825519330672978907953129951297616926141822971720965487483525401669922369156451521e-14) }, + { SC_(0.033940948545932769775390625), SC_(489.9017333984375), SC_(0.221111953258514404296875), SC_(0.5779855454616287036488971814355227311194228848243043951395455986787463387086599101313294644939558598e-22), SC_(0.7486088979275406629872151513081228564880546374375168121769479646842170229180463234647520870805269882e-6) }, + { SC_(0.0344383455812931060791015625), SC_(1315.3695068359375), SC_(0.9688708782196044921875), SC_(0.0002302459642131107220600058642530000749729392111928407677965236831855976073714186247947027253612216502), SC_(0.7727051779738960370969572634707950902399919432990357331654233405275120531881623075998432850012762696e-47) }, + { SC_(0.0346836335957050323486328125), SC_(2.891076564788818359375), SC_(0.221111953258514404296875), SC_(0.3023939346799245474889614343081333672279624024944930954168238574929526605943598150596823325984803468e-19), SC_(0.0001769642654312224482994346593710366316945873332790755937870558274941448456030638235982038958524954951) }, + { SC_(0.0355083644390106201171875), SC_(207270.546875), SC_(0.221111953258514404296875), SC_(0.9726849169561589116849417763433681153238325651038257954686149793803103996337638940073957962192110204e-24), SC_(0.2449868636768844281221570121589290029450213820578438505125850334328294225533967338063955907135292939e-8) }, + { SC_(0.035541228950023651123046875), SC_(353.3453369140625), SC_(0.8350250720977783203125), SC_(0.1029493404851659323798555591278456853663035901821732091785769305841571957497380027113693353060338171e-4), SC_(0.1567472557091927255967284878430258903970679773155857479188474056597145541884272356841824738814775716e-24) }, + { SC_(0.0357905812561511993408203125), SC_(0.19347016513347625732421875), SC_(0.12707412242889404296875), SC_(0.8089996578476739611683201471251152642605387617562762980206352749883173069660413160323836012055811324e-23), SC_(0.7414851586543001562992251821070565016281117574692107877887751001131367150603570478069309795827599006) }, + { SC_(0.03617782890796661376953125), SC_(4978.021484375), SC_(0.1355634629726409912109375), SC_(0.1192207582058158611034074754189269323450354758681253801849211475591551962102103672422123552941910051e-27), SC_(0.2092098752949070369757674635111774348778709049099796198628307706752782755529124351631226934066372462e-5) }, + { SC_(0.036653555929660797119140625), SC_(0.0039511634968221187591552734375), SC_(0.221111953258514404296875), SC_(0.9999999999999999423942615411677945622398325229157324970450891452483353627310106282217627277782955439), SC_(1) }, + { SC_(0.0366611182689666748046875), SC_(0.001741903950460255146026611328125), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999999999999999999997076004526314824509675943167281680151652569321500573070586097) }, + { SC_(0.036767013370990753173828125), SC_(0.010332576930522918701171875), SC_(0.3082362115383148193359375), SC_(0.999992144192717218944390160156828962740552204049312515501550350503464834784238870642719888538815269), SC_(0.999999999999999999999999999999999999999172462637627935907220745589778298255248580642981397328908052) }, + { SC_(0.036872327327728271484375), SC_(345497.65625), SC_(0.905801355838775634765625), SC_(0.1190082471525560964766619702069872873432833195067239213841573004802046186975018223120795818218151003e-6), SC_(0.2507719639693328414044245526231082409640480827888776893058606920509692934370216926401547010627493986e-33) }, + { SC_(0.0370448939502239227294921875), SC_(289887.34375), SC_(0.81474220752716064453125), SC_(0.7926951867744425549192176475000268620250835614679804121689941763375135083967165117173589842503177612e-8), SC_(0.3421741613374386769397975711185431819316177728715406504529192137489545566190196480004637482252824979e-25) }, + { SC_(0.0378056205809116363525390625), SC_(296247.6875), SC_(0.913384497165679931640625), SC_(0.187551344901301817278446813039995221620424177497732236699139156064496741436588974322647216739673362e-6), SC_(0.1545853555245189464326601817323343123570984653774348703168149564146503844843240553627578963069054235e-33) }, + { SC_(0.0378379710018634796142578125), SC_(353.800811767578125), SC_(0.632396042346954345703125), SC_(0.9013014893192234368726332666625322304849885472269783647080282730025886066768624812069186618395938158e-8), SC_(0.5346656850872613414840350578982044422144135589733383804592734495987141582784644220206866651521315923e-14) }, + { SC_(0.0379242189228534698486328125), SC_(0.004291436634957790374755859375), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999996480854757), SC_(0.9999999999999999999999999999999999971909709440402806037598957186644483081349274767153397340279015115) }, + { SC_(0.0379955135285854339599609375), SC_(128.872100830078125), SC_(0.81474220752716064453125), SC_(0.2057593481010501394053248972359360365741821779024343876009380114913562571373244722119072462203655395e-4), SC_(0.2414315586208764990263497135239449355155370047463438166370815226367728896907128345950460461980561219e-21) }, + { SC_(0.0380439497530460357666015625), SC_(0.001482595689594745635986328125), SC_(0.1355634629726409912109375), SC_(0.9999999999999999999999999999999684277872266981787476366868617913445124596820410584518380349577262473), SC_(1) }, + { SC_(0.0387343578040599822998046875), SC_(1982.2989501953125), SC_(0.632396042346954345703125), SC_(0.2128136580447557569739626428237849453668939497050964819247419585950869072911005579578716618524150027e-8), SC_(0.1759182855837408216877722167538436199224125759229454398449732316455171538313166405406851397170696071e-14) }, + { SC_(0.0392099507153034210205078125), SC_(4.091603755950927734375), SC_(0.8350250720977783203125), SC_(0.001618745215042852642915975754780290766782518372579807628122426118809742913019123895761958098735234443), SC_(0.1759064016594466103298349630148639481092392549559347563253320621757165266075406167621512785822660288e-20) }, + { SC_(0.039514325559139251708984375), SC_(0.000166679310495965182781219482421875), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.0411520861089229583740234375), SC_(28357.451171875), SC_(0.12707412242889404296875), SC_(0.3463899338911944599416716424104446286334168416072523675752121011114755317913004504380522453659129225e-26), SC_(0.768888035757411423985501222635596250662955308829176329460624390547011214090637387515003566072767682e-6) }, + { SC_(0.04271042346954345703125), SC_(23.0694675445556640625), SC_(0.221111953258514404296875), SC_(0.1162476525693489478951760516978152752197286372124774231725766374773276352021282641511977835552972712e-16), SC_(0.7413641733242364493282738907518503477942578799273096910217563670772912597465032598195291176461417288e-4) }, + { SC_(0.04279924929141998291015625), SC_(3897.815673828125), SC_(0.3082362115383148193359375), SC_(0.1703523526496431177506222422316448862824199948821976105705037895973838231527187395717099131951657675e-15), SC_(0.2717712746452144600134345993731485473936149769825120702002855040206892304731780905967027274917685412e-7) }, + { SC_(0.04297505319118499755859375), SC_(3.1283900737762451171875), SC_(0.632396042346954345703125), SC_(0.5102425149125884451204896576908943381500161816656354342949661356251193726952081899931957614089556298e-5), SC_(0.1680015043778550379901912937010941504561279983270061167072289097042667721911306394859831084655370566e-10) }, + { SC_(0.0442209132015705108642578125), SC_(0.02011293359100818634033203125), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999999999999999999999999999999999999999998600129538442341782452795329462649), SC_(0.213930888086569819954947547602179113413858836226235564083071374915561987172359004319181764396333945e-22) }, + { SC_(0.0450148619711399078369140625), SC_(14815.267578125), SC_(0.9688708782196044921875), SC_(0.2790981483929006578675128502938680134857856495244587836676051426616145326163650900370884438015476462e-4), SC_(0.1318968190899611506278702158108286611473207740456873125822909737834380134836425636631277345355401155e-37) }, + { SC_(0.04518614709377288818359375), SC_(23.06797027587890625), SC_(0.1355634629726409912109375), SC_(0.1602807032610034359348994547984191884314964880307337893022088638569306789229109870390020903910761581e-20), SC_(0.001048522377657149884347487695341127526677154983682244326895427646595381180857818134179647586258993865) }, + { SC_(0.04527465999126434326171875), SC_(0.013598117046058177947998046875), SC_(0.221111953258514404296875), SC_(0.2757276388527437619265454175619550075909906830860698677078645731568979239560750556006930444098598931), SC_(0.9999999999999999999999999999999999999998554861516547180206056185672659950700237157854991988760022554) }, + { SC_(0.04625232517719268798828125), SC_(43.923553466796875), SC_(0.12707412242889404296875), SC_(0.5711472805990616461631481931006769376542692108365472293015546742452249415720924224044622283811555193e-21), SC_(0.0007317393197624427087672044834589789715927877153041172450661254278074230551544701869807894910884516244) }, + { SC_(0.0468132793903350830078125), SC_(0.00025698760873638093471527099609375), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(0.04770947992801666259765625), SC_(0.00015248873387463390827178955078125), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(0.0477449037134647369384765625), SC_(402512.65625), SC_(0.1355634629726409912109375), SC_(0.9643756757900491429593533711949718004033195001721149018759325935601935516334814491201736090459646375e-24), SC_(0.7043377719177572706523399562997591199543584733225048072846797482778581012090984256408577622579282115e-7) }, + { SC_(0.0480652190744876861572265625), SC_(0.00045122022856958210468292236328125), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(0.0483077578246593475341796875), SC_(389962.375), SC_(0.3082362115383148193359375), SC_(0.3933133085683340900052008172595028027726876612133686776175793358628825211556372315900037792795521679e-16), SC_(0.7282915815842453209666308554921117930751500864701807020893969609199529436331383617197729511393728933e-9) }, + { SC_(0.04874597489833831787109375), SC_(2329.3564453125), SC_(0.81474220752716064453125), SC_(0.3779568494167474209370316114324776871363438039778577619306705852830433860240261447450864181647038624e-5), SC_(0.2387661263082519208035821906396036544344705953639292348978837066805965233473231873654835743398814258e-18) }, + { SC_(0.04926551878452301025390625), SC_(0.0299147777259349822998046875), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999996373492635755034870805622561509808110865023503430344347529283076781788172), SC_(0.5438109334702437703928403553854168057932046115673454463872801643553587641714485474731401739134064939e-12) }, + { SC_(0.049306534230709075927734375), SC_(4.597743988037109375), SC_(0.81474220752716064453125), SC_(0.002233657431127039185061456362763927646072436800567599503315660064327295094702062835222952789051316385), SC_(0.1994728283972980711561085314577665636038879373526847365155635580263741871987242792210945930962911643e-15) }, + { SC_(0.0493220984935760498046875), SC_(0.00032175212982110679149627685546875), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999999998858886921573991909999572496972225838746131509082118285021795072199) }, + { SC_(0.0493625514209270477294921875), SC_(0.2173553002648986876010894775390625e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.0499632172286510467529296875), SC_(0.00369685166515409946441650390625), SC_(0.913384497165679931640625), SC_(1), SC_(0.9949174783337980529271663335906462095369637046189064152314439551292043923497483017362512120929329974) }, + { SC_(0.10046042501926422119140625), SC_(0.000209066798561252653598785400390625), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(0.102686129510402679443359375), SC_(0.19225277355872094631195068359375e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(0.11430509388446807861328125), SC_(0.00042258042958565056324005126953125), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999835401693391560511732164415347979549347245029185814758228586763985196481) }, + { SC_(0.11778163909912109375), SC_(206355), SC_(0.632396042346954345703125), SC_(0.6163195746125755950734897031441357409066155954965426452253014863019226486993850762333916009369013e-7), SC_(0.6088899035401520524177971509733632109330209813926331067829266028917907187752873944898778100259026017e-9) }, + { SC_(0.1254365444183349609375), SC_(233.073516845703125), SC_(0.9688708782196044921875), SC_(0.004272755449388322273096950841426128550429514117092079361158463229777072211690255204610613124867916041), SC_(0.2583491650689547176630168506424024687908809022389285682944380234325291226753959508243371802923899776e-14) }, + { SC_(0.13644538819789886474609375), SC_(0.0134486891329288482666015625), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999999999957268006765890138886764961874241988301997893092066511961130042135489608), SC_(0.9999999999985879314902806425678715563810683893451606102907755247173976711412070907418233561418315768) }, + { SC_(0.13752801716327667236328125), SC_(43384.8671875), SC_(0.1355634629726409912109375), SC_(0.7041902635877264941565289347363813032421460356409479683641279357269959500154481762620757461973823648e-11), SC_(0.6253287507097881974838192915751126251135767210941492678202173364256704919764851242734304186963504861e-5) }, + { SC_(0.14231930673122406005859375), SC_(444.787506103515625), SC_(0.905801355838775634765625), SC_(0.001006130632027903235799102829092194198063035793358987177581974898177452438466276530705029498635752976), SC_(0.8717129727112130413784666169813012091564037280586173113736986953571651842281674653219292996865627678e-10) }, + { SC_(0.14387898147106170654296875), SC_(282.2655029296875), SC_(0.913384497165679931640625), SC_(0.001753149801494672324070478182417001748598706266043829934772009562780972666118460184171288799256161453), SC_(0.9192031596368843001104447522520095668423438102179196298837488224075541819664580559340883096369449804e-10) }, + { SC_(0.14768581092357635498046875), SC_(43.79425048828125), SC_(0.81474220752716064453125), SC_(0.004215487140776433965629018683908918618649143101235725193072424238312718636140952410665263870829337402), SC_(0.1597559052871092531371256555594429178656710940824688756408817609800313005764444411528090320127091132e-6) }, + { SC_(0.14775849878787994384765625), SC_(0.1444317400455474853515625), SC_(0.905801355838775634765625), SC_(0.9999927624254942737388549138358433164035679016409778199470166515635635865602243010356964894271596794), SC_(0.1102197877930976138550630023823934774508790300399619182666051459043145385934572331154282056451896945e-4) }, + { SC_(0.1555496752262115478515625), SC_(4926.16162109375), SC_(0.9688708782196044921875), SC_(0.0002340251718338386847857498968172725207964532672651165277910875656725154967411520012501616371329740537), SC_(0.2639019850946575455159231940212621856433751453096243942325320217489857622475996447321067695516891679e-13) }, + { SC_(0.15999889373779296875), SC_(346211.125), SC_(0.1355634629726409912109375), SC_(0.6901726346579894040555906960026962295551341391308953311260145947198508089185836157414926096266694346e-11), SC_(0.9659232237036697623226583025443581749195269888551283450064367168060934988596803941773929539019222153e-6) }, + { SC_(0.16108848154544830322265625), SC_(0.003161008469760417938232421875), SC_(0.3082362115383148193359375), SC_(0.999999999999999999999999999999999999999999999999135488486050759006314384089791230339136785990392787), SC_(1) }, + { SC_(0.17034976184368133544921875), SC_(0.00294548436067998409271240234375), SC_(0.12707412242889404296875), SC_(0.9999999999999999975958565710829602176443484051162668590933504457417982718133859114111332944527058444), SC_(1) }, + { SC_(0.17546479403972625732421875), SC_(0.045397706329822540283203125), SC_(0.221111953258514404296875), SC_(0.6417813913513644435500982329383686521897566198001533648309413980293322120837824470649582766851467426), SC_(0.9999999999995466279949628652277212540636607620058565782341893078308400996616771453876111962881474478) }, + { SC_(0.17669810354709625244140625), SC_(0.00317144836299121379852294921875), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999999999999999568546793599976833508720907328795026789550599278756571842612535185158863060156) }, + { SC_(0.17681133747100830078125), SC_(4087.143798828125), SC_(0.913384497165679931640625), SC_(0.000149450928736923049910854453475824420280450008159422071879974491983627843002632618848691114571109052), SC_(0.154007378382369644824343785267977232196336485145781559727253270237353396255847206679519573480950959e-9) }, + { SC_(0.1835739612579345703125), SC_(0.3351508080959320068359375), SC_(0.632396042346954345703125), SC_(0.4383035616633197248620227753135082187762558677157686360768357549560265832354557606207814967445074305), SC_(0.03043310897411578961648598000395404423049447906840816446120026090872754964244569296514069716272473635) }, + { SC_(0.1874706447124481201171875), SC_(406.947998046875), SC_(0.8350250720977783203125), SC_(0.0007824871518437107963650884142269781375061557038770757255105767892797326397430722623867177155645875183), SC_(0.1064950864828473392035226911225804530197292387363906330915049621940432879379498417965461613011114761e-6) }, + { SC_(0.18961600959300994873046875), SC_(0.4673106013797223567962646484375e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(0.19449223577976226806640625), SC_(0.23129458725452423095703125), SC_(0.8350250720977783203125), SC_(0.9904818238756517953759876266954342241108787809293799200386316481842910908349939046305548045913891186), SC_(0.001628736453081428107007951649788268368622198091219711592055188548837782403694925848989473863648621578) }, + { SC_(0.1971141397953033447265625), SC_(147358.625), SC_(0.8350250720977783203125), SC_(0.2312826825157954434751611052346991859910733226536919333442666317691037546565041971737891375025347097e-5), SC_(0.47337059925733744918750345867267392477595014971390050391685587273633649060304165207438814469689708e-9) }, + { SC_(0.1971398293972015380859375), SC_(0.00232790899462997913360595703125), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999999985389541857032427592271528383123464363031988982024923070885729883717764495782285277158) }, + { SC_(0.2019160687923431396484375), SC_(0.4740857184515334665775299072265625e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(0.2025763988494873046875), SC_(2.372247219085693359375), SC_(0.913384497165679931640625), SC_(0.2932694844332986675934126540792195076302810520755200406771653923274205752989340208634416923486017584), SC_(0.1868082799618148954653617218675799200365113947763016432586871894728045632175979453458051966640411987e-5) }, + { SC_(0.20485810935497283935546875), SC_(480505.75), SC_(0.3082362115383148193359375), SC_(0.4366607066111461425739143377407244977921357852123343896019306386301891073591545964946329640747303367e-8), SC_(0.2484325572354354033603290961942141000992936418323740737710335461292062894650826220846596398234506859e-6) }, + { SC_(0.2059116065502166748046875), SC_(24.2244358062744140625), SC_(0.3082362115383148193359375), SC_(0.9074379344268687260600806097184099127223709300889977572649125775309169921491107605456694219159483604e-4), SC_(0.005051524865454660778216813074183373270106131057107560878667883895844861311410491948832336615482939867) }, + { SC_(0.20762462913990020751953125), SC_(0.0442828945815563201904296875), SC_(0.12707412242889404296875), SC_(0.1701530015122572548036891207020082107920977299821548523844053218349686904965076044508552718907001937), SC_(0.9999999999999999996548059729130464765597532934061056571496648118073063034858127117694901998672624019) }, + { SC_(0.21499927341938018798828125), SC_(0.0337234772741794586181640625), SC_(0.3082362115383148193359375), SC_(0.9990003380944731872609481331049937948026856547492910971910571414912156649595053370612357558946170489), SC_(0.9999999999999611130058563625471432636488995360353333363630593577382319507965063554115208185852835863) }, + { SC_(0.22722963988780975341796875), SC_(39.870731353759765625), SC_(0.632396042346954345703125), SC_(0.002416110253181023783340346166808147570814705244710609438462644372975391564375949307870705196336879564), SC_(0.0002072023313923484783862041724933307554056356656081130379857007672135676632877645473725811460075375656) }, + { SC_(0.22898872196674346923828125), SC_(0.000221865411731414496898651123046875), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(0.23644983768463134765625), SC_(0.00389209692366421222686767578125), SC_(0.632396042346954345703125), SC_(1), SC_(0.9999999999999999999999999999999999999999999999999649007295996492575399057607563749375486361046836478) }, + { SC_(0.2377849519252777099609375), SC_(0.19049095499212853610515594482421875e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.2390850484371185302734375), SC_(394272.125), SC_(0.12707412242889404296875), SC_(0.3040852216825054429806845573945959447237116244467689840458070209470925073102073099062360512960727705e-9), SC_(0.1467709448388560244778613115161044664029874183993745826721715085460497012162829615569861418760256704e-5) }, + { SC_(0.24008722603321075439453125), SC_(1.274954319000244140625), SC_(0.3082362115383148193359375), SC_(0.005345589488510356931043376991153442272465535187890540841748721975562397553999534415837078424031000486), SC_(0.1606312388779836297782390940138553550670985349936254325315686586219518845029080049748145022132075425) }, + { SC_(0.2436912953853607177734375), SC_(193457.484375), SC_(0.9688708782196044921875), SC_(0.7901873907795843114037659082521467823031955990361321194561611437183900327263529090721028147583627237e-5), SC_(0.2277778135811793829323627653892144754055956562688818626340524967315524894413680471393838084186004497e-11) }, + { SC_(0.2463264763355255126953125), SC_(1483.4622802734375), SC_(0.221111953258514404296875), SC_(0.9929457881339474645933964080832334389660074622980018573318111721440819702082465873776160999910855324e-6), SC_(0.0002081124370684817793928405974195016332426698624129116483400787619795112702638927998405511162399921182) }, + { SC_(0.254708468914031982421875), SC_(0.493781044497154653072357177734375e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(0.2573825418949127197265625), SC_(44778.4140625), SC_(0.8350250720977783203125), SC_(0.1066546274847743601553947456760707511347575526818910849774518840235738501426892932114993767895724449e-4), SC_(0.1380417178031393494338152733540189900328290477715146046892988769689404394461415758801369641177312646e-7) }, + { SC_(0.2618319988250732421875), SC_(4353.03955078125), SC_(0.12707412242889404296875), SC_(0.5918106258984884304618178569299963307137448470784068570566339021403750902824172603669451597262516442e-7), SC_(0.0001461687342429989358597919583633167683499318426473614604421666767226892873893412178894385705862836655) }, + { SC_(0.2664634287357330322265625), SC_(2.7337188720703125), SC_(0.81474220752716064453125), SC_(0.1665163629221338214801763906317702506899150180986728660187427011644595782190485557969560303259448221), SC_(0.0005119851811219490561714098031071765234141531078517346402644659971645150950107713073823044692592358643) }, + { SC_(0.269739627838134765625), SC_(0.0001012004868243820965290069580078125), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.270291507244110107421875), SC_(0.04600088298320770263671875), SC_(0.913384497165679931640625), SC_(0.9999999999999999999998298879798194930664940429964110501934073665135526852611496336734149476355863891), SC_(0.1250704568495760184014672142148334229321021027168982298363565895756551259249483947206268011799193717) }, + { SC_(0.276960909366607666015625), SC_(225226.28125), SC_(0.905801355838775634765625), SC_(0.3831050630138895446194262413689474063389412956447990532061948474764936664132789712467294878599758935e-5), SC_(0.602639433323155065262961017864667920108814815202791157543301554737996096506599007020163909240362633e-9) }, + { SC_(0.279349148273468017578125), SC_(3217.235107421875), SC_(0.1355634629726409912109375), SC_(0.1673676825989532028881624960918872328326765160359367398452665537302459913142893855046809376437357099e-6), SC_(0.0001990113505082938765387810381617350838367775496221114971007753858202486584375445322995633766956596906) }, + { SC_(0.280055105686187744140625), SC_(0.489566028118133544921875), SC_(0.9688708782196044921875), SC_(0.9951237119319888385745912777644157103648656643915674722936153010141627443054053012865778138546123643), SC_(0.1242174345224771145598312890509707016567136015290908210801488079936064750952575710067214353449978684e-4) }, + { SC_(0.28349018096923828125), SC_(3.132917881011962890625), SC_(0.12707412242889404296875), SC_(0.00017107748028300755264174680478797086348266755930427029547243711903516105388101396331318185167369096), SC_(0.2186068103164437032138281283197983785985304277707866409098010533954520304756840512109746717974448754) }, + { SC_(0.284366548061370849609375), SC_(0.0002785695833154022693634033203125), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(0.2849796712398529052734375), SC_(0.00028760623536072671413421630859375), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.28854286670684814453125), SC_(0.00019903402426280081272125244140625), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(0.2893944084644317626953125), SC_(0.0018625170923769474029541015625), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999999999999999999999999988617342925642107651906853181813157308382494), SC_(1) }, + { SC_(0.291785299777984619140625), SC_(38.487705230712890625), SC_(0.913384497165679931640625), SC_(0.02484007173179906033865157608482124083983784153040298382965595177727543370232983684956930377782541128), SC_(0.4157218704310742309952097356277113088335215919245130433482722743942900524399305559555889864769542049e-5) }, + { SC_(0.293941318988800048828125), SC_(43703.57421875), SC_(0.81474220752716064453125), SC_(0.1122805105890045380376573874109506324045678800263167672438969753506104108112775350032973935674537289e-4), SC_(0.5139314735783948331590153009373593901670812744953978394702278888162620157242899472111190861744197539e-7) }, + { SC_(0.308021008968353271484375), SC_(34557.2734375), SC_(0.9688708782196044921875), SC_(0.5083562831820649497652828522987300857553062383506786136367305342392985601967476335821313234334529561e-4), SC_(0.26007757373224433067807474647990621636053855556399049516185884203607852481531372136254826863149002e-9) }, + { SC_(0.3089981377124786376953125), SC_(432.827178955078125), SC_(0.632396042346954345703125), SC_(0.0004211430003257416247483086112363866500624310627068424398017115032160291182880670703075174247014360852), SC_(0.6495858635902448649022033744121551063530380656048177406401407779923296220985379459030423383067265553e-4) }, + { SC_(0.310161769390106201171875), SC_(24687.779296875), SC_(0.221111953258514404296875), SC_(0.2200277168684517438680725586139724742488707336725980923145639863777937550963404428880964490878643264e-6), SC_(0.1717931424026711274069571730965100756134477271461154729302447423496465991610582463506262024449781823e-4) }, + { SC_(0.3121376931667327880859375), SC_(12025.0380859375), SC_(0.3082362115383148193359375), SC_(0.1363375046552933125327350435837596390626161786164464871591243253589146935668376807877139494379030431e-5), SC_(0.2171436598716613936257968308801421729280747855010444327718335224693341430467575243395096648355534956e-4) }, + { SC_(0.31629574298858642578125), SC_(20.7625732421875), SC_(0.1355634629726409912109375), SC_(0.6228289449350647284114988319796782909468108047269796751394963481836673381203289345869650503847672269e-4), SC_(0.03493437135308178980239854702709799292860296145196635363770627993162371390903059659827648159585220423) }, + { SC_(0.3175543844699859619140625), SC_(241.035797119140625), SC_(0.221111953258514404296875), SC_(0.2540474717791075092367715884071933645436003299684034695217707307293615550705080329773781036982874872e-4), SC_(0.001815123707475499842209925370618718561436055586128318613611210252388450620747094867673306507082615388) }, + { SC_(0.3178864419460296630859375), SC_(403.9595947265625), SC_(0.12707412242889404296875), SC_(0.2656248620876179543939348412704049964495378075941163834724162336891831446816160927385299672252550866e-5), SC_(0.00190961151014375397391057404904998519545359222875369498248081020698628275152261409615869197850156592) }, + { SC_(0.31863725185394287109375), SC_(0.049230270087718963623046875), SC_(0.905801355838775634765625), SC_(0.9999999999999999999823530819838983133333399939180532534505207194878695183755700511016824415115970125), SC_(0.2532981304502310145605131568584583373089343352683136060041260038949502481316691095228208094878783051) }, + { SC_(0.330483734607696533203125), SC_(0.0469950400292873382568359375), SC_(0.81474220752716064453125), SC_(0.9999999999999971078609671070620787698543076974218366407394807077342152799778832571779583266640997082), SC_(0.870939409780308346976869726291013533196974422621452129111792656453150671740642770334968767034006661) }, + { SC_(0.3328996598720550537109375), SC_(49.7097015380859375), SC_(0.12707412242889404296875), SC_(0.2937780853801564617897209428975616559098538016286600185872101986438057476527487569894049443259869024e-4), SC_(0.0161965942195194786594818608531327814519156895434121568294864323755080321582872722280221148000748778) }, + { SC_(0.334436833858489990234375), SC_(365052.03125), SC_(0.221111953258514404296875), SC_(0.215451252767453021133622060345861224433384934183163761594745559998927854963526936770816301691875668e-7), SC_(0.1279813957453574184429401083597100660879017164963473831270243074788915952887059748129286569654831066e-5) }, + { SC_(0.340868175029754638671875), SC_(0.3847523112199269235134124755859375e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(0.342921555042266845703125), SC_(0.14970906078815460205078125), SC_(0.913384497165679931640625), SC_(0.9999994072540801457283716820078950330566150428016369500133404996503845120700493070686125387311253465), SC_(0.02114488737679054640927838856772312763123716733278077673553251258920505189642266149925565740638442049) }, + { SC_(0.3429556787014007568359375), SC_(0.00213477574288845062255859375), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999999999999999999999758078596715361018588402308171898983547406182843420797371742) }, + { SC_(0.345384299755096435546875), SC_(2.248920440673828125), SC_(0.9688708782196044921875), SC_(0.6154686047116787719559622378479139814024426952490381935800680865559287480782818998932711135539074658), SC_(0.1603960183186808603382774720227677448961058957890436785249090234242132064224075206303400541103053516e-4) }, + { SC_(0.351158559322357177734375), SC_(2964.95703125), SC_(0.632396042346954345703125), SC_(0.7761429096227264653334739606310787715871212841177922036443340124848468571526942651587426264669584998e-4), SC_(0.1450075189246335661532905141365529750942025452476921840942295865016682220929135802047217774345864959e-4) }, + { SC_(0.35431468486785888671875), SC_(0.411117613315582275390625), SC_(0.221111953258514404296875), SC_(0.05148248753105453292518516846799614130000474317506570221937918557302143632193440137752236672669183114), SC_(0.8921305656898779486519468845618169855895562661613347446848380830493742684778498106714230568524807617) }, + { SC_(0.355726778507232666015625), SC_(49.3067169189453125), SC_(0.9688708782196044921875), SC_(0.0382468156409589884983535608344672235565834232181987996169319039105496222277565391878291445726267265), SC_(0.8561509233179379987503679456058136256819968991511450118021071374273155017018331282354269967923780426e-6) }, + { SC_(0.357777118682861328125), SC_(0.047988586127758026123046875), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999996530892664831199600005889137739458341493286545827466165950824821229019), SC_(0.02219260699886360296089220503974713186446740328897213143241306415305807727257967445484438793436180883) }, + { SC_(0.358220756053924560546875), SC_(48.59809112548828125), SC_(0.905801355838775634765625), SC_(0.02198717482047037731640592820186482538724581359071094820991619955911234821486264409810795598495153801), SC_(0.2049871029606495277530251946497596398447144315282884629047306024076684880032229195576056616004782328e-4) }, + { SC_(0.3589245975017547607421875), SC_(177.3041534423828125), SC_(0.1355634629726409912109375), SC_(0.1564556268439009603763137978399292069231253509422644356635921378784449034168591260404616020333706021e-4), SC_(0.004630980515581044782162562034964477328546278311093692995331376170595529008759416703481510654131121827) }, + { SC_(0.35904705524444580078125), SC_(0.473808765411376953125), SC_(0.12707412242889404296875), SC_(0.009377404894940203255265409514970328362697357733711055961190542511188563188283452568957996108000231967), SC_(0.9488519662462962621280324598951247122766394536330802202525878769985476430276871627588026436304881419) }, + { SC_(0.3647778928279876708984375), SC_(3.6492011547088623046875), SC_(0.1355634629726409912109375), SC_(0.0009088965746468331250623343745580084875699627582950240079618749174500976502417219773974986770509300459), SC_(0.2205237197602555525253682295120520485192139386582029409924481550487076838613928634158683674436027163) }, + { SC_(0.364803850650787353515625), SC_(1.8238222599029541015625), SC_(0.632396042346954345703125), SC_(0.1481974826794736143587433243642095182208098736269206959245473197941836536920531739877747271820474345), SC_(0.03114453678221222620724651617573673402747492041226606288192253572172445159265800506804264523655485562) }, + { SC_(0.367133080959320068359375), SC_(0.2215300992247648537158966064453125e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(0.3685724437236785888671875), SC_(13019.9375), SC_(0.905801355838775634765625), SC_(0.8438725177644407595392566647682492079336680327593670206622694837698449854706174523609803777509596657e-4), SC_(0.9207125544916172237475922612819587659309013784496885135679521738861698542520254364367815462331203742e-7) }, + { SC_(0.3701328337192535400390625), SC_(0.30404355129576288163661956787109375e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(0.37160670757293701171875), SC_(0.10332970321178436279296875), SC_(0.1355634629726409912109375), SC_(0.2115947089108716910511967502220451735113784644345792514121277662663380722185577889688354777459238881), SC_(0.9999999728760748297226236278934505399653179592000307055855690933604372158563205419787406582954619146) }, + { SC_(0.373345315456390380859375), SC_(0.0465487875044345855712890625), SC_(0.8350250720977783203125), SC_(0.9999999999999998803391305480957180415892431095395989495800109204056179980962867410824967133731711152), SC_(0.8530305850785609967700788915487020763215737661161203241352387262982551422686246091551882347087517157) }, + { SC_(0.375118434429168701171875), SC_(448846.15625), SC_(0.913384497165679931640625), SC_(0.2620288568991065152891878580060956395252585288836378203278596691744118148027496730862765442889908616e-5), SC_(0.239726054720757765133878906624133921489350718232709380084090898041187481481342200505706908752316404e-8) }, + { SC_(0.37850654125213623046875), SC_(43846.46875), SC_(0.12707412242889404296875), SC_(0.718717701900941575729126175532280822701062476239784620582176738453099857202630762309863040379503539e-7), SC_(0.2072887669915794222807740851859953600789056289640475889382779530283024592468554114931139675557337361e-4) }, + { SC_(0.3837126791477203369140625), SC_(0.3599123060703277587890625), SC_(0.81474220752716064453125), SC_(0.9622596347869636959927820153164466135310803132850172625953595988114397706777918142779209891332248932), SC_(0.05413959175362715294368681805089370270587030162321052029510594378044115920726211367662739725604428914) }, + { SC_(0.3884186446666717529296875), SC_(178.5201263427734375), SC_(0.3082362115383148193359375), SC_(0.0002049351040524535924500526245135589801771172288833121021130673241043964660664070080600293503322926625), SC_(0.002051498471599523690596500433973310001136545362202233419886186374265254218589504695471705157526988364) }, + { SC_(0.3887031972408294677734375), SC_(0.00263000768609344959259033203125), SC_(0.1355634629726409912109375), SC_(0.9999999999999999999999930955272684116390782402189829863744751436096276657323913089089785706869447143), SC_(1) }, + { SC_(0.3953707516193389892578125), SC_(0.0040236986242234706878662109375), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999998440505046747544439551517056523365554757195970172692612880844966510948213928241062502766206) }, + { SC_(0.3965031802654266357421875), SC_(11295.04296875), SC_(0.913384497165679931640625), SC_(0.0001087614812791005528413721254066329874038642265035237105582264014010254420330554544582274790285249046), SC_(0.1372143255190546374937396675236840374362199872259800984451059630374660460420723233503593932835866697e-6) }, + { SC_(0.401973307132720947265625), SC_(467754.28125), SC_(0.81474220752716064453125), SC_(0.1495555284477043093110339412405782845265490875650605421698602249627007512381108649433038524592421102e-5), SC_(0.2412910221219984911510475726252097910899016669591849309440546139042055458780531666155865948515899998e-7) }, + { SC_(0.4054018557071685791015625), SC_(1848.73486328125), SC_(0.3082362115383148193359375), SC_(0.2274361845613614064725413697622095227783848428821764711462766053078628716869831905710471847051622206e-4), SC_(0.000210629973591353616897072991054129025326733119000878439587679300729746938553937680148815320393623596) }, + { SC_(0.4062000215053558349609375), SC_(0.0105956681072711944580078125), SC_(0.1355634629726409912109375), SC_(0.9999927707348406996432168909276264412552970483647983503430098367320009728018737467624148360501367626), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999991618862592822851349) }, + { SC_(0.4080638885498046875), SC_(0.0004883776418864727020263671875), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.4081141948699951171875), SC_(3.8330304622650146484375), SC_(0.221111953258514404296875), SC_(0.005261195830160613084211198223501084487249964579656078425492997759285236820760461358332861621864160851), SC_(0.154277007907432777966132773389854609518921074553799817811262413783579045296165271552997068224812911) }, + { SC_(0.4087921679019927978515625), SC_(2638.619140625), SC_(0.81474220752716064453125), SC_(0.000269926481589751439535620366015402708637941613373844018754509890412176005239628168396174465896062777), SC_(0.4609129884163991704952988419893220292813062743846353212300648137174058489490215258644108307680889379e-5) }, + { SC_(0.412207901477813720703125), SC_(0.2795807449729181826114654541015625e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(0.4138956964015960693359375), SC_(0.0001860436168499290943145751953125), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(0.433166682720184326171875), SC_(1.27705013751983642578125), SC_(0.905801355838775634765625), SC_(0.696519859006183793898470431876930663342291196425173724240358814471266669121542796258735779247818369), SC_(0.003162113604931681959899536870059023099243698851628822893816178722097632729890091008897672135641101386) }, + { SC_(0.436771690845489501953125), SC_(1.04477035999298095703125), SC_(0.8350250720977783203125), SC_(0.6424650684007458288239938553729980069040422551753603991363742622678379230096718929378140195952749616), SC_(0.01529273363649364326725676524757446994955120230935064121839193221412092349210631474098199106412238969) }, + { SC_(0.4377568662166595458984375), SC_(0.4160407115705311298370361328125e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(0.444455921649932861328125), SC_(49022.46484375), SC_(0.632396042346954345703125), SC_(0.6927906992433522291016428433865362611161154159778103291408828578877988998944104254399789815979171429e-5), SC_(0.1731341778819023368951747139463564960248346504696620406290575766263776118701907292224265019961037221e-5) }, + { SC_(0.447976410388946533203125), SC_(44.28264617919921875), SC_(0.221111953258514404296875), SC_(0.0006076460692261756814212492049591611909071489847078118919346897578738211417146103989246831430591323871), SC_(0.01493839908368976489498756194213370833411368740038276568721188775137832267988926012725995008099978244) }, + { SC_(0.466396510601043701171875), SC_(0.000362085294909775257110595703125), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(0.4669697284698486328125), SC_(0.004207052290439605712890625), SC_(0.9688708782196044921875), SC_(1), SC_(0.9974388693525674785737447191194264033432797680767940630804967193144787579269440818407068611746370907) }, + { SC_(0.4731414318084716796875), SC_(4038.0458984375), SC_(0.8350250720977783203125), SC_(0.0002263436931985470623069554025901404750137366171451385477600503843294375224362071079580256662979642441), SC_(0.4300281102683826444303604298029173405210671918751202334751072622552987792446391018117289069062384341e-5) }, + { SC_(0.4759317934513092041015625), SC_(18.6855449676513671875), SC_(0.8350250720977783203125), SC_(0.04866425753455599722081302948914309644620582599377254067883049520377574463635937751949282771277965168), SC_(0.0009649708262076704138158712614334072920940091172348759431605867723015569200232143254680295361962399698) }, + { SC_(0.4780696332454681396484375), SC_(0.110383547842502593994140625), SC_(0.3082362115383148193359375), SC_(0.8745823795318758727968498863456703423009277605198028183788186129467687534970086892695532104900536248), SC_(0.9999119471506884567039816810340058478691314891400179254883209290110571435395075225190754083303153205) }, + { SC_(0.489096343517303466796875), SC_(2428.257080078125), SC_(0.905801355838775634765625), SC_(0.0005668629859694813305378237557881070012593949895014536283487020623443953312224667955979425461593947559), SC_(0.2578500345693018997470272177777342176021446288432542126725574187171754818059149225529562996867491401e-5) }, + { SC_(0.497481822967529296875), SC_(481.03790283203125), SC_(0.81474220752716064453125), SC_(0.001814148600754966551225040447711944447601894773640778015933908809229651699160796749858081480398887359), SC_(0.5603274097937640221400089900764948771553105798886687657379667098851587331651995859513992740762546886e-4) }, + { SC_(1.00208950042724609375), SC_(1.134289264678955078125), SC_(0.913384497165679931640625), SC_(0.8845058781875564074697302557380234740598125360929172403026002410077118885477413333744400751666617372), SC_(0.07716705003114625608439129146308170510006784245482985741623226223088418443102782050334493090592350408) }, + { SC_(1.06793177127838134765625), SC_(2593.565185546875), SC_(0.632396042346954345703125), SC_(0.0004164556117307835210059185117795125181331209167944909619269597035175679815783019314494579947944788868), SC_(0.0001969304816715304089356781627715840251498294317337799705781501983839477070325565001874516687928265681) }, + { SC_(1.078310489654541015625), SC_(0.1611862899153493344783782958984375e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(1.127964019775390625), SC_(28082.556640625), SC_(0.221111953258514404296875), SC_(0.1140591428062236314344782699995200947558508419914684786558012566166813744111564518342257595551928733e-4), SC_(0.6020566369424779976193598625809266203700130333890591994354679340172145079426581762927230954057229954e-4) }, + { SC_(1.17060959339141845703125), SC_(374486.4375), SC_(0.221111953258514404296875), SC_(0.9205823762114880947670615545461770460060215826660405081365680512427786986296076678933990356753966741e-6), SC_(0.4674515653529951266664582896115453218297995443858733617196285486259742083016337936616390501189120662e-5) }, + { SC_(1.1981303691864013671875), SC_(18840.236328125), SC_(0.81474220752716064453125), SC_(0.0001050853118774130372970668119071924296718548351327174487654751498986815417960205337285815348993283949), SC_(0.1611492201881255954767223873465552626610902482480651985362822593455937397211838607652504380380452816e-4) }, + { SC_(1.2198965549468994140625), SC_(0.1385947167873382568359375), SC_(0.9688708782196044921875), SC_(0.9999999999899354070030649646048074812208880438597388773641322826847898039401345111255495466567011383), SC_(0.2938943213472305928216615905834280751246908103082346989701493932560513546866934909358618049891918352) }, + { SC_(1.3339312076568603515625), SC_(327.5166015625), SC_(0.632396042346954345703125), SC_(0.004230465120837725941357601386231723928623325683651805279580720548971156732208563472830826734030664907), SC_(0.00220523359099786453043417328371775616377702898884544893736926530489301789958184029874442514138794833) }, + { SC_(1.359802722930908203125), SC_(0.39465808868408203125), SC_(0.1355634629726409912109375), SC_(0.4437610966324638266826269825329555041588111492031747890397297218047030642421213130898621023983155023), SC_(0.995695817244306663097141367067913010257010325506779807518635619519745547979907341193297399087581953) }, + { SC_(1.44682300090789794921875), SC_(0.17606438696384429931640625), SC_(0.221111953258514404296875), SC_(0.8458909669463521270960790298511605033325681625858584173422024844283208562765121975009790802637551565), SC_(0.999886336553159937346534850462277774995269727773185062985749407699151057520235200500421637129363372) }, + { SC_(1.4834382534027099609375), SC_(1159.6116943359375), SC_(0.81474220752716064453125), SC_(0.002056807228369121237051091327627167224204263263316604574879812488292130937014494488012091946138749675), SC_(0.0003986065697168516904822900730941602055330996809471804237598028281091208000550310668475736553209310869) }, + { SC_(1.49233496189117431640625), SC_(47973.6953125), SC_(0.913384497165679931640625), SC_(0.6830391976206895749556190775664300541457556915007650984618980145694353042492690714661229976875621645e-4), SC_(0.5406095207835446964362591371247893707386615748123698294385105952156822130447040921033281143418019975e-5) }, + { SC_(1.54517018795013427734375), SC_(0.2047308981418609619140625), SC_(0.3082362115383148193359375), SC_(0.9040947213722921804188836344319104600957539998086103020945461418635843320568947055940903989910617216), SC_(0.9982290100229550815743015045337967893318357995402282689212918693624690152002795276639131504156674276) }, + { SC_(1.5860595703125), SC_(268341.4375), SC_(0.12707412242889404296875), SC_(0.1465801574305476676539107209127776489766435472484594041230471696092317881774619276472003893770049005e-5), SC_(0.1110596740346227909528996593925982916576259005874750622985858526680224955126142907594515030069493142e-4) }, + { SC_(1.5904328823089599609375), SC_(0.175132334232330322265625), SC_(0.913384497165679931640625), SC_(0.9999995447828679632723491974215900293768347156881864457001368345017648872246539288993224663169784807), SC_(0.6102658559543549792854219552398619751315702233232904385864644929795171168343057554405036764095827976) }, + { SC_(1.61900937557220458984375), SC_(0.0355711281299591064453125), SC_(0.3082362115383148193359375), SC_(0.9999843556908109189924615361586702279026850095680063266208973711277140628696010749549257955304624426), SC_(0.9999999999999978879018481008599349797358705592880094084240033806448847332616189062796813720455293353) }, + { SC_(1.6690142154693603515625), SC_(0.0045049847103655338287353515625), SC_(0.905801355838775634765625), SC_(1), SC_(0.999999999864263459222067874893621398109398254371437950436437576622059884560935650235737967090195376) }, + { SC_(1.7562887668609619140625), SC_(374293.53125), SC_(0.1355634629726409912109375), SC_(0.1345250795183939169158118052974012003414175703788538762476672182935087694157008351312706026743333818e-5), SC_(0.8424789970376191199225424437051400627396586084028313139851628235260443384808951011555728879160486241e-5) }, + { SC_(1.75884163379669189453125), SC_(0.369454860687255859375), SC_(0.8350250720977783203125), SC_(0.99621186464621633317859269092479516441799599828043494732987046390274930149129297134676593305349138), SC_(0.6174635084621955977997095346260852044937218341843690428616022442407999406336063502259646869385554335) }, + { SC_(1.77004158496856689453125), SC_(49033.26953125), SC_(0.905801355838775634765625), SC_(0.7373675197413518903321678136500580762884458516442690941561338341861708795178825963717048392924068813e-4), SC_(0.8167629729235056937883553926045648341277856539241584268080565616747108507271439938553795639768719821e-5) }, + { SC_(1.788215160369873046875), SC_(0.12965712812729179859161376953125e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(1.799451351165771484375), SC_(0.04982374608516693115234375), SC_(0.632396042346954345703125), SC_(0.9999999991832813507277292501077628783103657201917504957719290073627939354499972401136516642560939332), SC_(0.9999562542565086168949831312920333006932296705038591691423220935228448531979576631078675186931118502) }, + { SC_(1.82197666168212890625), SC_(39458.8984375), SC_(0.9688708782196044921875), SC_(0.0001268574762160861115294921102913218341342810867460431110586484137363151627172616176651494267109218034), SC_(0.5460528472751130629371075897146399405773288824061641086977008300470195398332045068166565942771305106e-5) }, + { SC_(1.837620258331298828125), SC_(3435.755859375), SC_(0.9688708782196044921875), SC_(0.001463695112375803803609727426442459308280253287293296055043913739196412145946668215474377786443495928), SC_(0.6411412176334436519737994561294870853645934280907944523858776304592672244006701391448928008926147062e-4) }, + { SC_(1.86407566070556640625), SC_(0.000142144519486464560031890869140625), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999034) }, + { SC_(1.911371707916259765625), SC_(16.85260009765625), SC_(0.81474220752716064453125), SC_(0.1581159880008025721657321095854087061072555110449395192222109876064000275133299613105511501777259932), SC_(0.04109502640263896427688390556442590151994045918003648515226625447679875855620292680634369508954912126) }, + { SC_(1.98693811893463134765625), SC_(298.79779052734375), SC_(0.221111953258514404296875), SC_(0.002913811445175273866084567639903064432733149318517862844914718617354576662471482505273645309811588141), SC_(0.009453423850870597093899017173160896828730965837768246817990046476376032610813536035940230028864964202) }, + { SC_(2.081081867218017578125), SC_(0.171459905686788260936737060546875e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(2.1274673938751220703125), SC_(497909.9375), SC_(0.632396042346954345703125), SC_(0.460019634915205643970658678128087601607017882471903538266891079187315009631220516426696706980555205e-5), SC_(0.2800781052000278366315326737128600427349567293726611672233125423456618645562734278503815084715754891e-5) }, + { SC_(2.274096965789794921875), SC_(0.0312146879732608795166015625), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999999999999999999999998305906078338914578306219418153680347087173207692145), SC_(0.8635955452674145951317207009503193380459344162552204126575956657847421344385034722156743991964976376) }, + { SC_(2.31026172637939453125), SC_(0.00233163125813007354736328125), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999999999999999912456920129085491853277633793282155875032168873383006), SC_(1) }, + { SC_(2.323431491851806640625), SC_(0.489291487610898911952972412109375e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(2.44964599609375), SC_(12697.8740234375), SC_(0.632396042346954345703125), SC_(0.000208692856724679874555720331126775037887515680584457714689731776327333603733250052562364723031732801), SC_(0.0001319735340131210998408699505292715033953530561761954188411984482106450299800162565164445428189284356) }, + { SC_(2.509582042694091796875), SC_(0.00033403583802282810211181640625), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(2.564732074737548828125), SC_(0.000453212647698819637298583984375), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(2.57882976531982421875), SC_(0.3226127228117547929286956787109375e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(2.5871660709381103515625), SC_(0.00046129638212732970714569091796875), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(2.6278192996978759765625), SC_(0.03557576239109039306640625), SC_(0.81474220752716064453125), SC_(0.9999999999999999999993011554331814705865871753591297220648103182049529046334467004674759250214191631), SC_(0.9991568393405557147567496606444205483041193752839369921122855950134127319392869298093838026538647882) }, + { SC_(2.69723796844482421875), SC_(0.353506766259670257568359375e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(2.71968555450439453125), SC_(0.00041439200867898762226104736328125), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(2.754580020904541015625), SC_(0.0048456829972565174102783203125), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999994966122847), SC_(0.9999999999999999999999999999999999999999978896734204565987555008202369634840299153638975065573923158) }, + { SC_(2.769221782684326171875), SC_(0.366566746379248797893524169921875e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(2.780732631683349609375), SC_(495953.28125), SC_(0.9688708782196044921875), SC_(0.1328760569137212732826683461584248053277423967755477221817299712143908594335598843653064718590142985e-4), SC_(0.1163536053249328979861723676621772216108872893118952428233105298118354574732022329149779866269192342e-5) }, + { SC_(2.91809368133544921875), SC_(21.43137359619140625), SC_(0.3082362115383148193359375), SC_(0.08041217621139129745388982865942372908427332725282283279913368567509622265582208492706269485152926139), SC_(0.1439051628916274056884574818904327618894929223847986063526418335456810513302691803417126823137113327) }, + { SC_(2.9371860027313232421875), SC_(2652.859619140625), SC_(0.905801355838775634765625), SC_(0.002002833591022518844164132966125807759052076409878083728645392945442781736824674136057400958127327017), SC_(0.0003900012251788526990830379600227225843995517056794422346396363919479396652641753884859333783544802793) }, + { SC_(2.958280086517333984375), SC_(35774.58984375), SC_(0.8350250720977783203125), SC_(0.0001264482084667120638927081870570693927491610101542839477969626202722082459569072977754393501226927793), SC_(0.3813814577286534870950728607388973512947989261199900641452650157875256318590108126859850899724378359e-4) }, + { SC_(2.98002338409423828125), SC_(0.1707812249660491943359375), SC_(0.905801355838775634765625), SC_(0.9999997564563190841949591666422939328988465733524883397554921191007961484669974001603856496624680006), SC_(0.8101430188720108023155814594683341942343254297299498960434520219489513134225054335462799914029094005) }, + { SC_(2.98070812225341796875), SC_(0.2840107381343841552734375), SC_(0.81474220752716064453125), SC_(0.9993079463365542288238659467553309060670387514881374965877578091219818301113038573234053438711202266), SC_(0.8368196360585711292367217971010575508416694366517452090130637588013079393237631849165200056909329257) }, + { SC_(2.99237728118896484375), SC_(13.7659931182861328125), SC_(0.8350250720977783203125), SC_(0.2668996278531875681011052847035990308819205966278328658682443286287869009676993280354016095704321167), SC_(0.08993513156273689590102146755133033175699063642350153844766793362839217023237322863917937219832834484) }, + { SC_(2.9964640140533447265625), SC_(235220.21875), SC_(0.905801355838775634765625), SC_(0.2297201919248594326255779324268469595196046863323950796370646136197506740405377207328335130286530145e-4), SC_(0.4552404404549014763771060229869624065307686611954259272876474105259691057499325718260236235901830495e-5) }, + { SC_(3.0576937198638916015625), SC_(0.03248409926891326904296875), SC_(0.12707412242889404296875), SC_(0.9965844026440237139401351951924641866178335811550625469419434377544927630676047411994788388626548569), SC_(0.9999999999999999999999999999415862135758341575921803509509796465442468111635593252605082171648687263) }, + { SC_(3.1107203960418701171875), SC_(10.69952869415283203125), SC_(0.221111953258514404296875), SC_(0.135263069734440840721830009196120092918497118452185704042634359124836478194054985680578240528176975), SC_(0.3051024312119045474916115067098094412410832046258295187673826850829472203618815992547654132758046805) }, + { SC_(3.1362564563751220703125), SC_(0.412800610065460205078125), SC_(0.12707412242889404296875), SC_(0.7093045141745812561031375363774058379457726411641919011797792690314983137060361476223153390913626471), SC_(0.9982272953803303358498116326420863735046104198215420799743861526819584914853596458381098470710602851) }, + { SC_(3.143204212188720703125), SC_(245166.296875), SC_(0.913384497165679931640625), SC_(0.2337272872445519280515553112502576860342125217060840477571580357179559567871923855420366719673795095e-4), SC_(0.4564319908110801436633977445193748259739023745456709506049981833642263121134536450365786626045457728e-5) }, + { SC_(3.1543867588043212890625), SC_(274237.21875), SC_(0.81474220752716064453125), SC_(0.1675492249876956076058494331042094118219773837365114279610494928741304328287837552716175242886854264e-4), SC_(0.5794054893865354808853388640148542082068009627957080956341540936614934193287416394828586493273199362e-5) }, + { SC_(3.2091653347015380859375), SC_(12216.2568359375), SC_(0.12707412242889404296875), SC_(0.0001119626800023018988799537702734482313283415673684054669047485357488952476744293412374372661254976839), SC_(0.0004297682726515163735033810959764176730644789673218874343271657118560329432524912830077953304686016802) }, + { SC_(3.24223804473876953125), SC_(1.68130600452423095703125), SC_(0.1355634629726409912109375), SC_(0.4229675431189993381450431035012671224162538776182654614566273353827141477533480293375631822826315622), SC_(0.8780017941012195483118384904075595913469590552497558577892286013741803835330546335591273295176158941) }, + { SC_(3.2986447811126708984375), SC_(18.05455780029296875), SC_(0.913384497165679931640625), SC_(0.2669398577756162061178154612651788783824369903704039147382676355790812003419327210711418674120098536), SC_(0.06130295581967932394032726752160041388551292412170319761303663047647043023422709623034460302559699201) }, + { SC_(3.3203613758087158203125), SC_(4707.14794921875), SC_(0.3082362115383148193359375), SC_(0.0004705461533889722135213591010627557576662872447897250495446286999555472739811562754388303481667388853), SC_(0.000835794665212889598129929700117428090345043027148372655202756547989946580085472597719043333152729154) }, + { SC_(3.3257858753204345703125), SC_(3224.86181640625), SC_(0.1355634629726409912109375), SC_(0.0004610270441942790478429095860965936228257605345980239305816895606496609341767444500766254431661479988), SC_(0.001643662188977531929162978476610616636032156337804061203807180241671931657653185736382446205832550668) }, + { SC_(3.331163883209228515625), SC_(1.9793136119842529296875), SC_(0.632396042346954345703125), SC_(0.7150071056629390174684732478208555306990777925379365398869128441805229918605311576323749943093364252), SC_(0.5689457521621854854195457899271162206983916078197963304375435799054029765389692467773855205872235514) }, + { SC_(3.3439481258392333984375), SC_(334.433685302734375), SC_(0.1355634629726409912109375), SC_(0.004459721392212591387549156002824227520915758978326453609433132490851465252269200860041246077660459348), SC_(0.01575861700002204634272809540659948140564437176075437396554824405020886824553767849592894934459431347) }, + { SC_(3.35210418701171875), SC_(0.0159323550760746002197265625), SC_(0.221111953258514404296875), SC_(0.9999999694638908304234083649438781443999705775520972990949385140725078784523625394851923105199475546), SC_(0.9999999999999999999999999999999999999999985519881973799143714860850272813704341374810601564390296407) }, + { SC_(3.4502658843994140625), SC_(41.324951171875), SC_(0.12707412242889404296875), SC_(0.03533310771113411649137077606459205376365739582735749517646595258214984972708802478329326566419692959), SC_(0.1227997495891754139979015012689300191604719676364456612991162379845991018996321328980780812986540927) }, + { SC_(3.45885372161865234375), SC_(29400.57421875), SC_(0.3082362115383148193359375), SC_(0.7939058874384343517986706694899412492015434995670291644766537477527271832285431222032845579001652639e-4), SC_(0.0001392669810329539197145663263381421405604696767077810527724129614270433521756276322661613231364326161) }, + { SC_(3.5038392543792724609375), SC_(174.0391998291015625), SC_(0.81474220752716064453125), SC_(0.02831190811625148950629811738293090856905941482117483315983218294091214019414185694265444887579109466), SC_(0.01048576438126214419001568345089109473466189530208577936768746038776417079494581944826671082827560704) }, + { SC_(3.519533634185791015625), SC_(43931.828125), SC_(0.1355634629726409912109375), SC_(0.3689578019714655501916986172160204255229570055685352150843811582865623907369965110121962134565184281e-4), SC_(0.0001265684216749623936927467504825319622653369844430810535577496583922263350961513388802214283792501461) }, + { SC_(3.5407917499542236328125), SC_(192506.5), SC_(0.3082362115383148193359375), SC_(0.1249054040574437764812702474306916416986922584837581533520981622892594091069752524062037713606658788e-4), SC_(0.2175661363331754392799596575674735374150936113351543733088803746314541735794191869864118905695857851e-4) }, + { SC_(3.643778324127197265625), SC_(460.66265869140625), SC_(0.8350250720977783203125), SC_(0.01162617103807386204618395649485293986823655834151308009029079926417025828324366565780692328108631927), SC_(0.004008970520404531385255109345997826723323544810732748931856994066347265315087362519283893094864965538) }, + { SC_(3.6656649112701416015625), SC_(336.389312744140625), SC_(0.3082362115383148193359375), SC_(0.007410093655934871777916126024695256797868123973058917004228736809384654715863865881468091545089237717), SC_(0.01274063047515304924197084427058707421057037573513813565201720697962057489383065575228878768285518682) }, + { SC_(3.6850574016571044921875), SC_(0.0037575312890112400054931640625), SC_(0.3082362115383148193359375), SC_(0.9999999999999999999999999999999999999999999550055435000173603516327895909993916222286204315188219793), SC_(1) }, + { SC_(3.7146091461181640625), SC_(0.280897915363311767578125), SC_(0.632396042346954345703125), SC_(0.994124276182570671056242134133127123782111536753903540705092278778171584109099694643312519012512262), SC_(0.9560957522419724251975916743497843169817850657365193438204010331639551739957664907058969066116727901) }, + { SC_(3.7336635589599609375), SC_(0.477436915389262139797210693359375e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(3.78065204620361328125), SC_(397517.0625), SC_(0.8350250720977783203125), SC_(0.1402573777599055124924158524253963663502797113818557117270184748387977184890983897103708611724924904e-4), SC_(0.4921498677015718869167446420931528221529013178148524471034212529290727375014124622096914910219864207e-5) }, + { SC_(3.7866687774658203125), SC_(4.32257175445556640625), SC_(0.3082362115383148193359375), SC_(0.3752043963463212774669972976072432879928314818162278490533815627038082048494665857805481152643552336), SC_(0.5546074716576205788384672530343779402020121707771185014839296369586831454987793762134325285047848293) }, + { SC_(3.81618976593017578125), SC_(0.30148139558150433003902435302734375e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(3.9190075397491455078125), SC_(109.78485107421875), SC_(0.905801355838775634765625), SC_(0.05818137499888512731199262311335688221850363117567557405469895272524357817093870024092711712784297137), SC_(0.01475411130262191377259158346498613697438260756412598296481374349377615853556150344809653282457612583) }, + { SC_(3.9453601837158203125), SC_(0.42322339140810072422027587890625e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(3.9545612335205078125), SC_(420.351806640625), SC_(0.12707412242889404296875), SC_(0.004443184595901805573106246367436792044916738912937875326762847620059994348887387655697173243400587628), SC_(0.01466509741146044593090570964776299501171009836882730681260908946465950059588245695793189050619783112) }, + { SC_(3.994822978973388671875), SC_(0.02758073247969150543212890625), SC_(0.8350250720977783203125), SC_(0.9999999999999999999999999999931098987903787507581859231975364686387988234791959482359778270703687981), SC_(0.9997635174181014212493311832211529252788651863290971126131695694886514769633939249951379440245341559) }, + { SC_(4.02030849456787109375), SC_(0.00037742473068647086620330810546875), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(4.075417041778564453125), SC_(0.0046969656832516193389892578125), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999999999966461360911776344448637690893981265442602290746899481432891677304255105802164823949) }, + { SC_(4.0761165618896484375), SC_(3398.80859375), SC_(0.12707412242889404296875), SC_(0.0005774281549284668513504041516251273091444131290647558071176100779662792908498281180085815590896277301), SC_(0.00187728594647535991976462717642443037173717682490885708244530797173456316926372895466522517663753282) }, + { SC_(4.076457500457763671875), SC_(0.000358947552740573883056640625), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(4.15985202789306640625), SC_(0.01332603581249713897705078125), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999970859055805903338665), SC_(0.999827771399310127624625627518389377963820902509851489763556753732737998120323549114602455553386564) }, + { SC_(4.16162872314453125), SC_(0.0049612796865403652191162109375), SC_(0.12707412242889404296875), SC_(0.9999999999998054047735310904302531741056615997805813078425000080473978354671723108193475564544929739), SC_(1) }, + { SC_(4.205390453338623046875), SC_(48.05587005615234375), SC_(0.632396042346954345703125), SC_(0.0880874600433708899405404613560881946794655246889395142256943513381182632164896166895782437521799585), SC_(0.06344312866068026399991054037675688346830646466316390963059397594638526710084149868878219891931067957) }, + { SC_(4.2340564727783203125), SC_(0.000102389443782158195972442626953125), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(4.26158905029296875), SC_(1.5681400299072265625), SC_(0.81474220752716064453125), SC_(0.8930221335431818661894599337925977421493137587319208886373994158219626761334028449916074050856911158), SC_(0.5742893279140036665791717683878544190855034755565124371830942658846017705489384168457495825410154408) }, + { SC_(4.286884784698486328125), SC_(0.00029798992909491062164306640625), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(4.302335262298583984375), SC_(0.011135534383356571197509765625), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999989088307), SC_(0.999979448998724399212293148879659381890444959240652775168788325406604322745793916612603484640881318) }, + { SC_(4.33400249481201171875), SC_(0.0019063963554799556732177734375), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999999999999999999999999999969048204608476914773554014990397567217038027970109533) }, + { SC_(4.379422664642333984375), SC_(1518.1336669921875), SC_(0.913384497165679931640625), SC_(0.004869923984912166786102468927800013508789063595542371202939210873346949152234337197731863549873005929), SC_(0.001252311438651172531579755026509751178252007219494769513783106296333100184427911599029441558526314165) }, + { SC_(4.3807125091552734375), SC_(40.12465667724609375), SC_(0.9688708782196044921875), SC_(0.1940583495804845720155510989664957983526418347054014024381116118844253135206193595660778108393072823), SC_(0.03234259344259383057173172600498581598153648167354662167473189916077555732882515950986625399200931335) }, + { SC_(4.402850627899169921875), SC_(2.295498371124267578125), SC_(0.12707412242889404296875), SC_(0.4468963002575868323202001673614600025756934934849189377052761278834475001647615119995093616204487393), SC_(0.8544170484805286555011743102554138238380150575805848679237285814801323610815348158526897288186599822) }, + { SC_(4.4479217529296875), SC_(0.0027269781567156314849853515625), SC_(0.913384497165679931640625), SC_(1), SC_(0.999999999999999470255365998244140582392523111779744462238505709967574253873302236770282088204688505) }, + { SC_(4.45084285736083984375), SC_(3340.46728515625), SC_(0.8350250720977783203125), SC_(0.001916990152934278449218804560686690016107452130118837852841448210257175465453650985870674957072787346), SC_(0.0007353241039741081969769644489000336590454692832607850282709235705033329551323290967922846968136140186) }, + { SC_(4.461754322052001953125), SC_(2.637157440185546875), SC_(0.9688708782196044921875), SC_(0.9060301894068220790891062311261691883942678518814080314388370756232219670242264180820670114838997658), SC_(0.2908171013276693365516382664527655737571592470655644735195922908710904946140104442591427445177047194) }, + { SC_(4.516055583953857421875), SC_(1.62176787853240966796875), SC_(0.8350250720977783203125), SC_(0.9014818361757334469251672585816831942094008588123138523869016820282118498774225809140112219572614542), SC_(0.567137337487056192284034531480359572434683158264716149611917908105466064801672948638078690439175827) }, + { SC_(4.537124156951904296875), SC_(0.043504618108272552490234375), SC_(0.1355634629726409912109375), SC_(0.994891557570639229708111241519989486910237516802063583044529419257011678348948307087377538655895795), SC_(0.9999999999999999999983914989777975903106413741869307097696147967382550101934445433063089862444580641) }, + { SC_(4.55108356475830078125), SC_(0.00028587187989614903926849365234375), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(4.56300830841064453125), SC_(205.750579833984375), SC_(0.913384497165679931640625), SC_(0.03625807704221101397682510932666619775464037832091349378355840937269375235209832797239184013185634279), SC_(0.009720822077064093274851813282079342482437543316530068365823770362834339721563583048195362994128191982) }, + { SC_(4.60340976715087890625), SC_(20.9564685821533203125), SC_(0.905801355838775634765625), SC_(0.2841277065216559950271905956323889033901747795456017489791319391961164897777085282725130955097074557), SC_(0.08883724242506107795547042661149391384797364165160283984255453205471517712259217121829160187898030999) }, + { SC_(4.71325206756591796875), SC_(1386.131103515625), SC_(0.221111953258514404296875), SC_(0.002141079347949870007522525057424298795510546117023931609383098586190329725812141622890709199891119502), SC_(0.004445864366466173003208194544276813193594581790536619787867646498671076722287888173109155654426308568) }, + { SC_(4.7184352874755859375), SC_(1.0989363193511962890625), SC_(0.221111953258514404296875), SC_(0.707317939427190190968043361777120545835802458241181512314148656870051864820615324506863337291920052), SC_(0.9382165493203824990797159541848411579758141123224527139862881451652813919096294755907831203784711684) }, + { SC_(4.79721546173095703125), SC_(0.001919968170113861560821533203125), SC_(0.1355634629726409912109375), SC_(0.9999999999999999999999999999999998542193045692748894632753663605964628044194699365854495887239512465), SC_(1) }, + { SC_(4.9292125701904296875), SC_(413.006103515625), SC_(0.9688708782196044921875), SC_(0.02334574421112757433585372777733672485895892912295975318353328178485639957473832128065677442757311249), SC_(0.004046602163062999902759044186956465378017862124368986653051676437794054221491622387913826001175375954) }, + { SC_(4.955646514892578125), SC_(2.21204280853271484375), SC_(0.905801355838775634765625), SC_(0.8933546014525428938186662562803984127659035863290198541691092368101570100206709606179731632334223322), SC_(0.4588407043101351511434170638540127741013382030860505433427025236211227676176337111687476863361559086) }, + { SC_(4.95948886871337890625), SC_(0.0028835497796535491943359375), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999978267466414320297230639673574896844269906223343831790598268953231615270855387212945106912393475) }, + { SC_(4.95980072021484375), SC_(27.734874725341796875), SC_(0.1355634629726409912109375), SC_(0.08575225236565314522415114646836466240145731757542366540783151510085132813693461671794425689410370693), SC_(0.2209879941403962350244475670585516855503155307782705609187779839247485309119571416422820779315361365) }, + { SC_(10.5313282012939453125), SC_(4949.1328125), SC_(0.81474220752716064453125), SC_(0.002686142481732706965704988857682381025637520384539031062795380975648182830129345773944313356526367634), SC_(0.001534555622997722767805542931616878026210248035131974887134563557399907150074985141621862969488232541) }, + { SC_(11.0091266632080078125), SC_(0.01806267909705638885498046875), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999999999999999999999999999999999999999991759387696639900832271210546834560530796), SC_(0.9996395664581205622872469923633278572991697290641636824321025593184851829319338095875187488973106511) }, + { SC_(11.23558139801025390625), SC_(0.01205970533192157745361328125), SC_(0.1355634629726409912109375), SC_(0.9999997006097082315307478298804058327589536425610738221124726180202531317523687206475036790969822868), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999425910828495595116699341532) }, + { SC_(11.8540496826171875), SC_(28582.3984375), SC_(0.905801355838775634765625), SC_(0.0005794368573253538519903337561124830547000305602782757004681623753728366924898954599872235451113889009), SC_(0.0002666541189256076578278089132824322501560314353569493700091667483160099229593799141684787350694686398) }, + { SC_(12.08311557769775390625), SC_(0.000145281082950532436370849609375), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(12.1501750946044921875), SC_(2569.097900390625), SC_(0.3082362115383148193359375), SC_(0.003947314265283763534130261769906570995556154082725838767714142728096796545453041539292418723318263244), SC_(0.00527631324911083642515636243154343204943734027149422161104707568873674245775018311697095379859261648) }, + { SC_(12.16957950592041015625), SC_(0.2478319108486175537109375), SC_(0.632396042346954345703125), SC_(0.9989833939152605404820017605346903832588222232732099650281192011964241799958271657276527375408016281), SC_(0.9901969350412300746830303454446789584345955503367077735143123432831038761828727804007526572578708539) }, + { SC_(12.2681884765625), SC_(31.347698211669921875), SC_(0.221111953258514404296875), SC_(0.2277027147482503127150296913972224007896043825317497502254385235842967636083267099784832543109561542), SC_(0.3321634681587807552007875100298756994660374595763156028971386074677812085187955268733357037189613391) }, + { SC_(12.48180866241455078125), SC_(35551.12890625), SC_(0.81474220752716064453125), SC_(0.0004368576827667718467027161116485912321274546389947229836713586872425985223896130791672339500299463373), SC_(0.0002614229438549803342224613456667824883487110474085630520697804157838646658581086698818819709315184661) }, + { SC_(12.5361804962158203125), SC_(0.0011118580587208271026611328125), SC_(0.1355634629726409912109375), SC_(0.9999999999999999999999999999999999999999999999999999999999415024426847849461098577106691388394939205), SC_(1) }, + { SC_(12.85811328887939453125), SC_(1765.9459228515625), SC_(0.1355634629726409912109375), SC_(0.005084515792620766368154017278263048723764006331985079229849945220814864492955109313877302130922982567), SC_(0.00945094240444795408086586053613571535096016312921549386043297143118449105542842752216001577527707926) }, + { SC_(13.23449611663818359375), SC_(385250.125), SC_(0.221111953258514404296875), SC_(0.2684206090177575202806497311501823196390064693359196712743753861382176264735178408204059858258560006e-4), SC_(0.4115838409201253856608252515384732822367348085127017584724222166062618532544131014694533738662619992e-4) }, + { SC_(13.28284740447998046875), SC_(0.00048034972860477864742279052734375), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(13.5956668853759765625), SC_(153334.59375), SC_(0.1355634629726409912109375), SC_(0.6297308638298869060440428088111622962734002624865844395283432516042181984666939554328097987321434359e-4), SC_(0.0001152655326806725492693108593214106274722367121867112969536035061559994356520519027520659723433404668) }, + { SC_(13.7348194122314453125), SC_(3484.218017578125), SC_(0.913384497165679931640625), SC_(0.005432379288960534105375864107652627534328394167857882646472035081610233740196644859320005656609912856), SC_(0.00258197843004596213892550161024638414317903043346706059004710337714981589708364724942695551542620364) }, + { SC_(14.008861541748046875), SC_(2.686798095703125), SC_(0.9688708782196044921875), SC_(0.9644622542499765872821638355495793775111436667613767776377098982841046549385229166727625387729387154), SC_(0.6472241984016385522620389540582247470293854227267980354461338149541140156617163290589838788952657053) }, + { SC_(14.066776275634765625), SC_(10778.09375), SC_(0.1355634629726409912109375), SC_(0.0009321184256471603036872441467162309507862125649224710023444800474774555861452509764168030193113800172), SC_(0.001687789433172683795187189064203571194955550954049045967869225873415216029951606311051464069013477185) }, + { SC_(14.16046237945556640625), SC_(201.0361175537109375), SC_(0.1355634629726409912109375), SC_(0.04766799602155229035403944808044258904656877421775701044944497304486771170366178653867969060325189584), SC_(0.08451560061969932227379905604376448505965168861685054244104749264722057012450771156995396208612827573) }, + { SC_(14.22837734222412109375), SC_(0.000125592589029110968112945556640625), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(14.366168975830078125), SC_(236787.609375), SC_(0.8350250720977783203125), SC_(0.7600840593681305084069296115192037991394551886550105361041918570328823791111594348075174928927205939e-4), SC_(0.4518808095263781565205417112680880254125756158845253687482425708976145285305541338335608184238628531e-4) }, + { SC_(14.726207733154296875), SC_(0.21476264297962188720703125), SC_(0.9688708782196044921875), SC_(0.999999995571119706748390836596933705104787069887220160010360219693754521044543231613353968460145251), SC_(0.9060060446572562067051327655887258833492007272752161121852030109812179366812822525661810432461676948) }, + { SC_(14.9572906494140625), SC_(0.3900313095073215663433074951171875e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(15.357250213623046875), SC_(0.01863213069736957550048828125), SC_(0.12707412242889404296875), SC_(0.9999739388529974430711459662432089294755732241699513374709890721608182649829101482350052449464661195), SC_(0.9999999999999999999999999999999999999999999999999685431080352873599252909988834627227106682960722174) }, + { SC_(15.364917755126953125), SC_(226.784942626953125), SC_(0.913384497165679931640625), SC_(0.08563696835052369478079789909258463947407294008500908276598717960448876794997957492186634957810234564), SC_(0.04332792402357449306342739304736647647019568182547055436378929388602672343782614833433106857615263862) }, + { SC_(15.681644439697265625), SC_(0.00036581026506610214710235595703125), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(16.6584186553955078125), SC_(0.000170524624991230666637420654296875), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(17.026760101318359375), SC_(11.721271514892578125), SC_(0.81474220752716064453125), SC_(0.6747989591544321340862806920690054301518024342301211346889257938609261917426502336971980736873500048), SC_(0.5105297294944054604863619181552338843568586592913241320636454217849555560063062522140460532912007551) }, + { SC_(17.084300994873046875), SC_(0.4187429845333099365234375), SC_(0.81474220752716064453125), SC_(0.9991963512770625763575236103943290975300885243709238460861486903618746060516238392059335107312435891), SC_(0.9574310523984230337446397725695448673178783683051392501709121630631963635113186789914294140891595251) }, + { SC_(17.104099273681640625), SC_(0.0039452277123928070068359375), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999963922341914190922196265836899897310812160921121941374348345328548516387889172192589238266) }, + { SC_(17.1246776580810546875), SC_(44.7584991455078125), SC_(0.12707412242889404296875), SC_(0.2128755184474609548122009168308404786581390144550328248729847944771196861930199367732486100957628529), SC_(0.3420830695175494765205156663653431203920007113988531491413750911425447587730317710423688244024061047) }, + { SC_(17.367763519287109375), SC_(211.8177642822265625), SC_(0.81474220752716064453125), SC_(0.09107662820311893304648687160374637650164095915645651723288674482794183261228764933997746108107315907), SC_(0.06000368686028256537594982015060731118399641027687527118364732370898455297767524436563684855809049378) }, + { SC_(17.8663272857666015625), SC_(3551.811279296875), SC_(0.905801355838775634765625), SC_(0.006613418911304457306173187369164259698351325902453219072187298729887674252078234628388330044302524496), SC_(0.003531470352105413247357287763599727492810266524114772311405597117511875015273192716306608830389171223) }, + { SC_(18.23902130126953125), SC_(0.387346590287052094936370849609375e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(18.3384532928466796875), SC_(0.4789576996699906885623931884765625e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(18.3578662872314453125), SC_(44.260616302490234375), SC_(0.8350250720977783203125), SC_(0.3490057251077422416444444767107447853661025928113356132808944372095605581685059617586078196219577403), SC_(0.2371519547970952980941603528841351862460493552486107897209059849238966431987820382325042722384931507) }, + { SC_(18.504062652587890625), SC_(410.696044921875), SC_(0.9688708782196044921875), SC_(0.06303465678479042321664959836745677241497772637888281271589908813965102155905347231862768545488330007), SC_(0.02669597926557915278174392435708393161838014395926925635544352490746276276005352899705775902235099875) }, + { SC_(19.699462890625), SC_(1044.098388671875), SC_(0.221111953258514404296875), SC_(0.0152457512820509804557926939607426796555064716462045222206562503436557555635302637345771805568659174), SC_(0.02154455984297169364852960537380458257783244241955728011071492260050808764495198990846018404970572544) }, + { SC_(20.811771392822265625), SC_(0.1686411633272655308246612548828125e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(21.513973236083984375), SC_(1.2695052623748779296875), SC_(0.632396042346954345703125), SC_(0.9694744056089359088560198649521598118691707668820448785799986505966555533564856956618436373365148013), SC_(0.9410703433856380070917820341906353560822542177769326824866190771212063714598224727036953829303941223) }, + { SC_(21.758922576904296875), SC_(208175.28125), SC_(0.9688708782196044921875), SC_(0.0001500466359235681042785211121547867514930398197857273496447417327446332948472197900080662686005054133), SC_(0.6687837735193438271222853271799154232170668315643389718387104703935801909715117518644850500025355354e-4) }, + { SC_(21.821353912353515625), SC_(0.0424164198338985443115234375), SC_(0.632396042346954345703125), SC_(0.9999999999984569526680753522348732134527223794405508501127581568251642184717980578611028108827244775), SC_(0.9999994465885250543130767182581777302784806474702122330939663265431625938914603351830682770949892407) }, + { SC_(21.8938732147216796875), SC_(12260.4462890625), SC_(0.632396042346954345703125), SC_(0.001886278525255599397942902160872446473544754079061675453685622268007122979099583736625641029207472592), SC_(0.001631060055831245901763051573675017119615409578441589820169729745075811661587259187169133687892522559) }, + { SC_(21.929759979248046875), SC_(21858.861328125), SC_(0.8350250720977783203125), SC_(0.001208284064974422055583545233092297766883735883383924573775176789309825701618092190925110050209782334), SC_(0.0007946792239164184232055664779237285824694849937463396965418275403187061116095281031963800905820234102) }, + { SC_(21.9974803924560546875), SC_(241.2039947509765625), SC_(0.905801355838775634765625), SC_(0.1066590214386868981069552249516453613324034561297450415850953695243375149328323233374569855036666908), SC_(0.06204051690645063658323371758957225227582839480990079279950015087734450886900420784989918815400289825) }, + { SC_(22.052242279052734375), SC_(0.02685627527534961700439453125), SC_(0.3082362115383148193359375), SC_(0.9999999707735031783024153644551506990509971196878794681796980138387567488523889828208484401154924459), SC_(0.9999999999999999999975257488743170309159029934017184062771431656259786328411917304146236128348432542) }, + { SC_(22.2946758270263671875), SC_(4700.37939453125), SC_(0.9688708782196044921875), SC_(0.006744819998768911082113699192391794823883103983351941725075896609950599618356914201893231324616409748), SC_(0.003041948296869511531901931904956940508867055906784239054395165109935073214136510403386271945191594783) }, + { SC_(23.23316192626953125), SC_(0.13708417117595672607421875), SC_(0.905801355838775634765625), SC_(0.9999999991022416259443850235732902885092988330981298648318494742736933948849807006158040995246399171), SC_(0.9813796291391188704485860355106945299603228336929183358720861534071105614675352564565372832646213273) }, + { SC_(23.2837123870849609375), SC_(33643.07421875), SC_(0.3082362115383148193359375), SC_(0.0006130328274102922900711308366980531620119282902618062137430882990138218132062391639072324821838554787), SC_(0.0007554012804612767182253284519542442306988419085709874202909276559594804095981345452579052273319107652) }, + { SC_(23.31745147705078125), SC_(0.022672764956951141357421875), SC_(0.81474220752716064453125), SC_(0.9999999999999999999999999999999998730825024309490228256045590167177811363989325460301131258705733365), SC_(0.9999970193107604288613287959340264317543005419609700926717484423694228437082617567268605327470481068) }, + { SC_(23.4339599609375), SC_(23.290653228759765625), SC_(0.632396042346954345703125), SC_(0.526408997421472500663240689968402450955016852665564692006063956605421855385549947230426360568085792), SC_(0.4766970424584372814897062539099098194074951655743193164378418946538028818423806663119140591581839947) }, + { SC_(23.523906707763671875), SC_(363844.15625), SC_(0.913384497165679931640625), SC_(0.8347394594108981407457166338715220489151780580102033006281274065854910302557236798535919811676846616e-4), SC_(0.47388997866242602351512233004170067538970574364564182808876197323803471496156790282513440768509281e-4) }, + { SC_(23.9151668548583984375), SC_(0.13243019580841064453125), SC_(0.221111953258514404296875), SC_(0.9956216868738135140724692421263886143991933225802155629655007835088769388795775909452117938069352284), SC_(0.9999997020562496462981483929134173750669772629325814279367124785988892398867012733427018809767038076) }, + { SC_(24.385395050048828125), SC_(49.88166046142578125), SC_(0.1355634629726409912109375), SC_(0.2688341550369041026504224478548513009356684586170523692392794750251452139822997660303903543548976327), SC_(0.38854199533803636163748507873008026827044342550796681037204971822103441984296372978833645172556683) }, + { SC_(25.94358062744140625), SC_(0.00362619315274059772491455078125), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999963897001797301257614456823174268207772513229013190888553485565202426446131685812250726552888978) }, + { SC_(26.580902099609375), SC_(2.500098705291748046875), SC_(0.81474220752716064453125), SC_(0.959795814670658177947873494741994484611914155593765860394924450828883293942598233581634208160657046), SC_(0.8715207849667045196920866123221515304442976338039779572524164670558639407483677560607858523292217254) }, + { SC_(26.6811580657958984375), SC_(0.2598920036689378321170806884765625e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(27.668880462646484375), SC_(4626.693359375), SC_(0.632396042346954345703125), SC_(0.006260698039203155566049327102955568197912366677015184416346900192322512266576301275841424018660210963), SC_(0.005503677219655494734910471152344319975691214925407511238363625689672570879352896234552763837166670146) }, + { SC_(27.841068267822265625), SC_(0.23176459968090057373046875), SC_(0.3082362115383148193359375), SC_(0.9944254480357241743488545430761140155498142148744462577782829804199010780266863754512170802197065478), SC_(0.999848142628309691160971204336161068044297944329597448305776043905416354876236980643803102544827675) }, + { SC_(28.242305755615234375), SC_(45229.91796875), SC_(0.12707412242889404296875), SC_(0.0004931283014917675585300503067818782399815590227382773176913912671258477231135906384632850543714017116), SC_(0.0007593478802736354689750069930283228585029005121713994073411411472903871530674280289247324161614394997) }, + { SC_(28.593597412109375), SC_(4.394314289093017578125), SC_(0.8350250720977783203125), SC_(0.9232612092714078185899343635654892522866616104868588806880147198465327527052173109350313876412839503), SC_(0.8107595802060556057355895596566021497382922653831685172802867720912912087541743814553658091400668833) }, + { SC_(28.682727813720703125), SC_(0.0453636646270751953125), SC_(0.8350250720977783203125), SC_(0.999999999999999999884249635148540416467210764419532099849779315412940228603850720628436355760028545), SC_(0.9996080283210721346607198315602243646900414900387764772430050420350721097703141747603747611007034993) }, + { SC_(28.738727569580078125), SC_(27.254573822021484375), SC_(0.9688708782196044921875), SC_(0.6360187936637276683076646198670267245358483951666700455693669545329222198713164494659646821191328767), SC_(0.3897030877187323283350455614637945822213025857231459180758977820688909179454636721282083699987864509) }, + { SC_(29.614292144775390625), SC_(0.435002657468430697917938232421875e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(30.21712493896484375), SC_(47917.328125), SC_(0.913384497165679931640625), SC_(0.0007914906355404200479586389534821251002403357828447798159506945117502013133464159872952347160480805488), SC_(0.0004807909336809068780299398518375606694373597433399463542918850653336184689410163896485309994904454226) }, + { SC_(30.5350971221923828125), SC_(0.0039173173718154430389404296875), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999999997983708067378271703172349768314214673797191048023255552533891322338545810892993797782524) }, + { SC_(30.87542724609375), SC_(25.78265380859375), SC_(0.3082362115383148193359375), SC_(0.5120990483437200393494919209828001200220949330583050231726214418919167475730716233816281750714523639), SC_(0.5785809600137220721850396422905665441347146859746726641406069096509439117725606675009328678106292058) }, + { SC_(31.3508777618408203125), SC_(354516.9375), SC_(0.81474220752716064453125), SC_(0.0001023035325505147708021904216343789488106295198762512998130840128756995802632134118683417744160985881), SC_(0.7417569378190052466823928359801133141545537873376056323371876689371852512373794122336801497702505583e-4) }, + { SC_(31.5992832183837890625), SC_(2.974167346954345703125), SC_(0.1355634629726409912109375), SC_(0.8618689875786587579727783691128455749672207146098456685175081189811686628983627264756106185743111621), SC_(0.9623294729430451068561447365237986563078654114105136269289248290655261801530346711146819436410967015) }, + { SC_(32.361301422119140625), SC_(0.12657617032527923583984375), SC_(0.12707412242889404296875), SC_(0.9917540827706536839668605398341466723220464920430952098038298929490892162525170822279916753899757835), SC_(0.9999999983799560482776410704232446056938360079125523393759002009237207849464379990485615875235158242) }, + { SC_(32.474456787109375), SC_(480.857269287109375), SC_(0.632396042346954345703125), SC_(0.0663782295012748516571753920774401901917817168825734642546345190765097805180650176450658829711691704), SC_(0.05914245111791633680767311994568065463044803741904524239819198501129181464192231563212488703964851851) }, + { SC_(32.59918212890625), SC_(0.24035865862970240414142608642578125e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(32.948390960693359375), SC_(0.000167359961778856813907623291015625), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(33.888454437255859375), SC_(331.263580322265625), SC_(0.8350250720977783203125), SC_(0.1075098742210071415293029376281489873713294528852466314005784920557663251169854055953697680951477932), SC_(0.07803038211087268530890037979173034169637850639353266331299735650014754032868563764009034111784453099) }, + { SC_(34.838344573974609375), SC_(0.00024838323588483035564422607421875), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(35.242801666259765625), SC_(301364.125), SC_(0.12707412242889404296875), SC_(0.9490437175405729376700271769570696787227969637030890758479530703714870607946059823150883084432126777e-4), SC_(0.0001396214095424630945088079773992362447219048205525491492101258662863719808839261124458242710499609574) }, + { SC_(35.6124725341796875), SC_(0.25395145712536759674549102783203125e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(35.927936553955078125), SC_(0.02636432647705078125), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999999999999999999802954791617207818306775513267125928615955551202126731225465), SC_(0.9996153904469860413531877294222967537390039253817760878952326248960036819549648491968760145169943545) }, + { SC_(36.51232147216796875), SC_(0.17059408128261566162109375), SC_(0.8350250720977783203125), SC_(0.999999542040761300258098335895381970156403500836643532664333532085773937209159454454239393770391259), SC_(0.9923196117595220514966603954288682269942671529764229500566345244659415051303766016347548595916499821) }, + { SC_(37.01564788818359375), SC_(23.332645416259765625), SC_(0.913384497165679931640625), SC_(0.6972990247727908718968910659073642533042184170132963892467804617450643951016600533990150429376783661), SC_(0.527253484661049767771910163414764297482200801647899661676888512437027241039978941838353468827405994) }, + { SC_(38.27669525146484375), SC_(4.620498180389404296875), SC_(0.221111953258514404296875), SC_(0.8592413095390584788098932639872041005592724873412325669117716755112013192047506476772846651521060741), SC_(0.9301714468656560396154052656139369539597046676359710829092067518445178008461696459638767389441103691) }, + { SC_(39.146465301513671875), SC_(0.00025820670998655259609222412109375), SC_(0.9688708782196044921875), SC_(1), SC_(0.999999999999999999999999999999999999999999999999999999906250983556606329641769537608099763777296335) }, + { SC_(39.4506988525390625), SC_(136.2086944580078125), SC_(0.3082362115383148193359375), SC_(0.2080458783651402284684932867969269245847786664904621223081263961028872273546700388221391268356382558), SC_(0.2395607133506659070725040346382804735289665612845453322588401033297550507706513456124340474691032842) }, + { SC_(39.513668060302734375), SC_(0.0025859004817903041839599609375), SC_(0.12707412242889404296875), SC_(0.9999999999999999999999997841215601249610958005821778690858312211873679562007256063230658040161612908), SC_(1) }, + { SC_(39.82184600830078125), SC_(152.626007080078125), SC_(0.221111953258514404296875), SC_(0.1841009935737937123683824645248221466328479170176523895562223694876828033897778019577383651091184088), SC_(0.2289167928346057257013791142336965848287839199486770414502851414285018730843801420099005877734428225) }, + { SC_(40.45703887939453125), SC_(32077.298828125), SC_(0.9688708782196044921875), SC_(0.001653348429248338668607781459319060773252199331784602251975781220883860349670497475874764795924957726), SC_(0.0009171296626673560965239333389652359522656974608483857227632984655955384358653444498341170697487773714) }, + { SC_(40.55828094482421875), SC_(2.458832263946533203125), SC_(0.905801355838775634765625), SC_(0.9818070446160497624795286537557408327594725241405881928775579018088316336446960744993960836947463249), SC_(0.8936808074285039033392179584511297543378478460822836014837391665601685503036103300962388489842953467) }, + { SC_(41.08962249755859375), SC_(470040.03125), SC_(0.3082362115383148193359375), SC_(0.8008113873612486135155629759210564064617748762604027489860852530840583511102649254055707387437908749e-4), SC_(0.9367771073089427258599753990191298012293090702403810024201315951629223698953093286712320562232476447e-4) }, + { SC_(41.42235565185546875), SC_(0.0039965151809155941009521484375), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999999999999996479854325521193161597598577896007309363523011831214329278264429078787631360971) }, + { SC_(42.728160858154296875), SC_(1.57044470310211181640625), SC_(0.913384497165679931640625), SC_(0.9932442779378764241199230535658725092020091327541871224750490403282645369411867774021455928692337137), SC_(0.9239454596216220553329190363059482424486325012155275694370467259626695866020414213586821138337695992) }, + { SC_(43.03235626220703125), SC_(365461.34375), SC_(0.905801355838775634765625), SC_(0.0001419248323008714730919343461157872745274907209163427560702590003046095572887253767541588082987740128), SC_(0.9487408680973144429945669849503842969526756228267588068173164093858995186613935457008472889043519245e-4) }, + { SC_(43.688262939453125), SC_(0.011019987054169178009033203125), SC_(0.9688708782196044921875), SC_(1), SC_(0.9992317721388855249897615461158874473207864365280995208250770863704830631532442828343851481165849235) }, + { SC_(44.11992645263671875), SC_(0.25921415726770646870136260986328125e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(44.16400146484375), SC_(0.3705587089061737060546875), SC_(0.1355634629726409912109375), SC_(0.9808728478021905610557719458457365821499701531544340253858794579417110212452407995153014214480785069), SC_(0.9999242296926159139430557403078079687780897718599941711104318417318280950286630431006387287228118927) }, + { SC_(44.35755157470703125), SC_(0.00286526815034449100494384765625), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999999999999988684790388456335825001401414357019984989001320279672754759206619322) }, + { SC_(44.4176177978515625), SC_(0.0028001288883388042449951171875), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999999999775857278911301640428185589442167589275849614798212226211956), SC_(1) }, + { SC_(44.95709228515625), SC_(0.4406783045851625502109527587890625e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(45.79766845703125), SC_(2480.718017578125), SC_(0.12707412242889404296875), SC_(0.01514842517913599952366203622679367896786950586977135028198659295051934926015333167180331261232363092), SC_(0.02118168883102576839861592577363678363129222845293853489870465374230816286203301380114788969256293927) }, + { SC_(45.8876495361328125), SC_(3835.69384765625), SC_(0.8350250720977783203125), SC_(0.01350180863754580720784674798559548336589932563948442950108843071157566625851533096947139770542404081), SC_(0.01013355702420993985487305457056904106693446423400195742847539365043215889789925157456886369321731733) }, + { SC_(45.93944549560546875), SC_(0.1238458156585693359375), SC_(0.913384497165679931640625), SC_(0.9999999999641397457401161607722805160808059786282994374016932190923535184747616998192468063501223612), SC_(0.9908394155719757056307736687066950135697591358777471810740427921676463695941892776789955880482544013) }, + { SC_(46.205387115478515625), SC_(461419.53125), SC_(0.632396042346954345703125), SC_(0.0001044496842013316952537924037499322840639609505299280845260958738438170988651221169226034474236329212), SC_(0.9452781224572437413928853243661236221474428334388254092023916767069750256309771122985530821947324965e-4) }, + { SC_(46.20613861083984375), SC_(17.2277240753173828125), SC_(0.905801355838775634765625), SC_(0.7996872536040298721124150128781278572531348389588561769085987369884057325578569299546752211742094232), SC_(0.6535657218221962679267532509820027994654339644802027781785969221436615928235406801233145082150135801) }, + { SC_(46.48529815673828125), SC_(230.984283447265625), SC_(0.12707412242889404296875), SC_(0.1422628392972406720822854751946808466087943410940017243343385801968196353452746997193655414761026166), SC_(0.1932875560637871853220968671359781950816406753551110288039256989588439915142805103959053622119854053) }, + { SC_(47.248058319091796875), SC_(0.00016102936933748424053192138671875), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(47.3762054443359375), SC_(0.00139417522586882114410400390625), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(47.565670013427734375), SC_(0.012347941286861896514892578125), SC_(0.221111953258514404296875), SC_(0.9999999999804105608361826295362504811850177224042154552939651601855944822254904314691301915373660302), SC_(0.9999999999999999999999999999999999999999999999999999998990167760089209649060268402916728590987120861) }, + { SC_(47.917327880859375), SC_(0.00043436698615550994873046875), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(49.375934600830078125), SC_(0.004664070904254913330078125), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999924629), SC_(0.9999999999999999999999999999999999999999999975286187264398936782455853845654992251525309122494729321) }, + { SC_(49.536712646484375), SC_(3.863943576812744140625), SC_(0.12707412242889404296875), SC_(0.8869035687320245050320479712103996460378051949611994099651431817437083832521526519354375429023904899), SC_(0.9650056672346678161757640579393039709241834178114747481261362635654864220941295351177404706871098509) }, + { SC_(49.81558990478515625), SC_(38816.20703125), SC_(0.221111953258514404296875), SC_(0.00113926767451546380608537276508558605080573154052016965260275176772031481773384448563472900605264791), SC_(0.001417192106236972123603917828009427753985712765241910018839959590173061485197209063261902039679761919) }, + { SC_(49.97966766357421875), SC_(2.618212223052978515625), SC_(0.3082362115383148193359375), SC_(0.9402706406317171096001565369540545184233027819072191551063073339020473480943644712269282765932937647), SC_(0.9685153189197985262105112109054482121057638893157556379732554471988996358472953379537439114223368881) }, + { SC_(103.12812042236328125), SC_(114067.6640625), SC_(0.1355634629726409912109375), SC_(0.0008062070690054487944700342087407593994612241890305325397705099111043855128216926918501951726786051306), SC_(0.001001582405995753996910078032826285156068089955757928417639107961052914318750128443151670905902022115) }, + { SC_(104.1346435546875), SC_(0.27170151952304877340793609619140625e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(114.89385223388671875), SC_(4951.32373046875), SC_(0.9688708782196044921875), SC_(0.02673004160226834858143874104024496817042342427526253563832801401322686480078292109542533227880244467), SC_(0.01893772132739098563841317632925061681395006807421945310935047321139426239117387027325128760559186579) }, + { SC_(119.378936767578125), SC_(0.4208850805298425257205963134765625e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(120.53275299072265625), SC_(0.00151182874105870723724365234375), SC_(0.81474220752716064453125), SC_(1), SC_(0.999999999999999999999999999999999999999999999999999999999999934713404694008316323705262157631568417) }, + { SC_(123.761322021484375), SC_(31601.099609375), SC_(0.632396042346954345703125), SC_(0.004010040734378233814242948996733585622357189983015409316167392705422241445595516166021627558918640461), SC_(0.003773669715797799336572537492575293637442447196072369048781319106309589505595534248388423323851773482) }, + { SC_(124.63626861572265625), SC_(0.0002591950469650328159332275390625), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(129.1541290283203125), SC_(0.001998660154640674591064453125), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999999999999999999999999999999999970885051274360058587535315338995015628689686110618313112197) }, + { SC_(134.4938201904296875), SC_(0.369370639324188232421875), SC_(0.81474220752716064453125), SC_(0.9999431789399404592321474604039072880343312142550020619511559041497227627367374436512086950344289464), SC_(0.9952557054195093187036835280045208467233365750662020495290140233887671002788071654187511939779245275) }, + { SC_(134.6666259765625), SC_(1.34013068675994873046875), SC_(0.3082362115383148193359375), SC_(0.9881824428801870939762019733469287411936348282558518582074289190342583690954781207462455412036637327), SC_(0.995487172599166041719533926968650604440806349481102904714344238844914975289328263125093599556024164) }, + { SC_(135.4109954833984375), SC_(0.00301261036656796932220458984375), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999999999999771993857909723637311037816987438942261886619474458027446066479861998529534227137651) }, + { SC_(136.5994873046875), SC_(43.41033172607421875), SC_(0.905801355838775634765625), SC_(0.7999856183687033041786291900036031861607309067584064599754266689512880462320195847072809067473273583), SC_(0.7162940326558927053796817365746784269373589856907197793993954699821063017039273481334619892987253744) }, + { SC_(136.9409332275390625), SC_(131351.0625), SC_(0.12707412242889404296875), SC_(0.0009409134702661550572774371293890522931796521647080473661414375290145005814814543813274159137076528798), SC_(0.001143548351648569037802924154450093047369934589419038255892478355199508328874970183502617946978711212) }, + { SC_(140.242523193359375), SC_(10.396793365478515625), SC_(0.3082362115383148193359375), SC_(0.9221977887743737958977507498329925320617004174300373550089323473186163475960212462035329196997939742), SC_(0.9426106922578314990258478791623251092464895939848228415142075804405333945932222048832755567875491515) }, + { SC_(141.92529296875), SC_(0.000180798946530558168888092041015625), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(141.9384918212890625), SC_(13.08813571929931640625), SC_(0.9688708782196044921875), SC_(0.9523978709464164161340019402513478256063356014793054447082580137611843588449227333784412867991776212), SC_(0.8699260144026967305999121229944727548840981552233519820101135001134975113452844438855283070979188917) }, + { SC_(143.5271759033203125), SC_(276260.9375), SC_(0.8350250720977783203125), SC_(0.000561369285253392836120915139043458385244580388773771993870793512596805204974886692808216607574877678), SC_(0.0004770385646199412099686410562910291842868603673061550890196990388333814695553835389692477626358125564) }, + { SC_(143.902008056640625), SC_(3178.291015625), SC_(0.12707412242889404296875), SC_(0.03931947971800156852737996401884754086090786825340705049818441093502319892461411071428284629944489017), SC_(0.04736635490185981331019515264702159625701385880449349068043835443652746336409775521719469903037862739) }, + { SC_(144.141387939453125), SC_(0.02794832177460193634033203125), SC_(0.3082362115383148193359375), SC_(0.9999999924926815539995436797047539461517676129972860014460661022808042704348381789183955164337962705), SC_(0.9999999999999999999979396686288131742295836412870873742471214642371022827159581778631321468721370769) }, + { SC_(144.9135894775390625), SC_(216.5679473876953125), SC_(0.12707412242889404296875), SC_(0.3715578369527994516401570335261347703345907865278261091876174613166722501489771278084473126090676443), SC_(0.4303286451873791788901327140281890119365177089983818507172377756336934202774299605942772369210364593) }, + { SC_(146.9971466064453125), SC_(0.03688235580921173095703125), SC_(0.632396042346954345703125), SC_(0.9999999999999935072707490594127069530354459506793327400396201076459739499639513569219669094969195357), SC_(0.9999999841309976555921259801159128102593554174069986468016836296670325907991616227561698979931867794) }, + { SC_(150.13287353515625), SC_(33750.34765625), SC_(0.913384497165679931640625), SC_(0.004927647268411316804198684333596643598877166682872716954127303987654952710723949280937692496751473655), SC_(0.003946281215364040154112408471317675205817582035766676829342008239391323059656931777006461031632702731) }, + { SC_(150.599945068359375), SC_(306722), SC_(0.913384497165679931640625), SC_(0.0005460821308271826317895460788365649695589042917671462088647127876371128992823039171099106167078257653), SC_(0.000437287032441070861943581310523027797376186208238529672088614943963779478606480707245709396230423273) }, + { SC_(151.1553497314453125), SC_(0.00040882988832890987396240234375), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999999999990498214112849103875571994825064476827625508617785081369060509263) }, + { SC_(152.060577392578125), SC_(48686.92578125), SC_(0.9688708782196044921875), SC_(0.003600009858977769588591487712773243264037421187347124615132505072032036617238480146701916423619682911), SC_(0.002660581893911085007022048060278930176611863392976502588995792768733420479707027083973424321060664375) }, + { SC_(152.8331756591796875), SC_(0.01893596164882183074951171875), SC_(0.1355634629726409912109375), SC_(0.9999982930855065583884300504963961560978065126114968625177827331623160756207861552267370413864156487), SC_(0.9999999999999999999999999999999999999999999999994478911174062882172270591629827369974232987706218467) }, + { SC_(153.7213134765625), SC_(247144.21875), SC_(0.9688708782196044921875), SC_(0.0007183226213779356686541861342457125408834541343867288421130069434186124215082107183437390081074761866), SC_(0.0005315488818620334514191949234134792617071209447318983167377666154175532497680355265415303115807859949) }, + { SC_(160.7382049560546875), SC_(25.5228900909423828125), SC_(0.1355634629726409912109375), SC_(0.8350797750422063151326191031234970196792606327062197828858092622398207293510631180562045513059038507), SC_(0.8903059220009117692407734970952734774238624092647718807165995185097202562481593551528790211118626109) }, + { SC_(174.9843292236328125), SC_(3107.8662109375), SC_(0.221111953258514404296875), SC_(0.05025515811401936641265985592996487424686407502979628120268591496946762294005097349167625357573711043), SC_(0.05627571295532612536113618367770810052127903464950555050000646843743303094004604686935149955283588914) }, + { SC_(182.269805908203125), SC_(4.91394901275634765625), SC_(0.81474220752716064453125), SC_(0.9841940929714513739500072922936565218703907909835866021197913501123929256037236314160092662726783955), SC_(0.9639411888007886303742734474352531752122164371101478490035282823397768438775339341425229179751051369) }, + { SC_(182.4111480712890625), SC_(1.8299617767333984375), SC_(0.221111953258514404296875), SC_(0.9856710052965877289902284903613142736737974396130380014205078927209298429784722102644843249268827903), SC_(0.9958246577958065173888664329129878365625480383021836767390054223845473927779077640176925461393793687) }, + { SC_(191.581298828125), SC_(2.2190074920654296875), SC_(0.913384497165679931640625), SC_(0.9968899073863202697115111245323342853350475195372089761713107858826992139321308515943661073851182335), SC_(0.977373440637330075822174490304535050660350419097182167808851533513366838778350835027094729818804947) }, + { SC_(193.9307708740234375), SC_(0.488285362720489501953125), SC_(0.1355634629726409912109375), SC_(0.994384612656008174878334502974516467645196442393653984968131145200046609482527505517721890101741558), SC_(0.9999321369583885135025890824838743146029099327548631066496221603610393204828052315340708597751821388) }, + { SC_(194.9492034912109375), SC_(25.73528289794921875), SC_(0.81474220752716064453125), SC_(0.9028761365172547521560786907240162025789481171441088463083048125902727784102793617398509587958168374), SC_(0.8643445362046692397623099589773188356308673990397093386020170147010671415090331408921941860766545738) }, + { SC_(206.4715423583984375), SC_(4999.44482421875), SC_(0.3082362115383148193359375), SC_(0.0382630812823879551268013866109437352951494756097308748017573326258518488200091963989309468658885091), SC_(0.0409704999839855165554751253811152003366375901968413666708153637145815220450711697093641642331978286) }, + { SC_(209.1755218505859375), SC_(4321.3662109375), SC_(0.913384497165679931640625), SC_(0.05047051605278412124089151027551907247461800145419586880945740379069296987660894849435684452940128054), SC_(0.04198384174745690444910491257857255069531683636209824974563045970272549803807135604827062986640375684) }, + { SC_(215.1907958984375), SC_(0.25329818527097813785076141357421875e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(216.6281280517578125), SC_(348.682403564453125), SC_(0.221111953258514404296875), SC_(0.3674311676456567093497835267003729165636048550611559851350782632512689488231547223297807678232383062), SC_(0.3988601646566989998449348117709218038794534768131308161171823629559540625427406579072424247924238366) }, + { SC_(217.62652587890625), SC_(17.93491363525390625), SC_(0.632396042346954345703125), SC_(0.9307246967070102015150927085560552979094229015527609193566096119564129673707151759545073506931849683), SC_(0.919122850174271722315922168916708667032115301893756307730427610701679950800477210458097760122568205) }, + { SC_(226.324554443359375), SC_(39210.1875), SC_(0.81474220752716064453125), SC_(0.00607768500134497139742906880598633184602248841652460720663240081283823824367343107828845055459206578), SC_(0.005396927091876590961508944404832313940753171331279395268306620673692103932858470035934807960036158532) }, + { SC_(231.5256805419921875), SC_(0.0435504876077175140380859375), SC_(0.8350250720977783203125), SC_(0.9999999999999999999973002956007401185626244089882755276019162288341304186112562447153253719360871399), SC_(0.9999595611348830441856438673010932081421745805140344212579838916099361129994739264969923981309162267) }, + { SC_(235.0335540771484375), SC_(0.00019701055134646594524383544921875), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(246.57464599609375), SC_(0.1393482387065887451171875), SC_(0.8350250720977783203125), SC_(0.9999999938511384845721355117294261922203288201925654913950288483616099750539921896555755573075585913), SC_(0.9991736671973034720884345238378882665891015305075737165922615423158841236523201224803807871853700462) }, + { SC_(247.0611572265625), SC_(2.6212046146392822265625), SC_(0.1355634629726409912109375), SC_(0.9825439039626933953164951158737208696821909806854698565197359372169558956988419725253561318486642976), SC_(0.9958902544756431568680202490315828678910784282674450327847995842830959927384108359497783069320800962) }, + { SC_(247.6795196533203125), SC_(0.3789966404438018798828125), SC_(0.905801355838775634765625), SC_(0.99999418232711504330126990735849251148387235764429545270330907883095312363963218760372532714651881), SC_(0.9954664137312897612651126469648847731314743530977621741930721975468648349621125539926506463269287038) }, + { SC_(255.30865478515625), SC_(1.6643607616424560546875), SC_(0.8350250720977783203125), SC_(0.9979542217472028142218564962924983408160742712703296112530177584060709209683235404133003364424571307), SC_(0.989177716762129194816018881318447041845979530156509148618195236413419583034624141855463352253747431) }, + { SC_(258.402679443359375), SC_(3463.272216796875), SC_(0.905801355838775634765625), SC_(0.07496591394342307468676527044835081737103677311460330059054327478448439673925114918515510569416041789), SC_(0.06401038948412829994964259497334008234279982519024189689484373849218439933414720062160719157372156161) }, + { SC_(258.608306884765625), SC_(0.00045402420801110565662384033203125), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(262.12615966796875), SC_(41.1895599365234375), SC_(0.913384497165679931640625), SC_(0.8902284854208787078842224649907493492387138059233155116091392583746578465693359767402950066738548246), SC_(0.8368032703401795290059711277299243504804569659979850508139503602820266509104355059075712640510967762) }, + { SC_(269.2437744140625), SC_(248884.53125), SC_(0.221111953258514404296875), SC_(0.001029539378299970485415676957363883518355247057989156925052422900536153016171783931824378809660768808), SC_(0.001130633557610517884069041925013490678560193404679441664380193018571475462184287108511622074433834906) }, + { SC_(271.8258056640625), SC_(40013.29296875), SC_(0.1355634629726409912109375), SC_(0.006300674528872691998643391561374789642163085566565730435628413990181863345875172173272315953401199027), SC_(0.007197869342850532440382462642653106240294122551011274218242845069086266215661288235648759399350064917) }, + { SC_(272.993988037109375), SC_(213.918212890625), SC_(0.81474220752716064453125), SC_(0.5808232679875324325062469023057696546653747246517651582164401527777575267940605997383786668854497848), SC_(0.5405368465475943976204539822673972474720533539602758539485532412765075611828821807814549922325098759) }, + { SC_(273.05694580078125), SC_(120.83953857421875), SC_(0.913384497165679931640625), SC_(0.7245592200924371928840014777609554959859146247515904422018833311209770604130790778210936168304767687), SC_(0.6613202603086886030459074802217352006032064150318568337355837729263915360352534686780664720822218848) }, + { SC_(280.6956787109375), SC_(40294.875), SC_(0.221111953258514404296875), SC_(0.006598531612269405343929877389687162046076467539353361944147196460064751907126903063108797270124899447), SC_(0.007230534122462434330512566498121272979152139986257897432198311025282620449433381847538472186874938885) }, + { SC_(293.792144775390625), SC_(43.755107879638671875), SC_(0.12707412242889404296875), SC_(0.849356239493810514761669447369672498434810745946259133696735825189314026672840644887460391837979087), SC_(0.8909475708594075892266751040494492986985770270993378956417592312382371982362260788627215755904805807) }, + { SC_(294.09173583984375), SC_(0.0041162283159792423248291015625), SC_(0.1355634629726409912109375), SC_(0.9999999999999999991816710272088710907133767444914677526150752896026472146573856665561309148604825251), SC_(1) }, + { SC_(295.04150390625), SC_(4611.853515625), SC_(0.81474220752716064453125), SC_(0.06315374226727988413684305395940247654931232466691641777353092789685273248568311514709684923029116248), SC_(0.05707849134785464787029652918339100877404672383311051245357951266365550077218054785069344122191478071) }, + { SC_(310.44097900390625), SC_(0.3617111724452115595340728759765625e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(312.348907470703125), SC_(17.8608245849609375), SC_(0.8350250720977783203125), SC_(0.9579847094536455565936055079809590053905045046475343440710454479816576950015985726873704447966804298), SC_(0.9339230786941222856604174440183761589360250718629131962344906181640781826811984484970193268408031568) }, + { SC_(312.48370361328125), SC_(290847.96875), SC_(0.81474220752716064453125), SC_(0.001127319153733298194876285746021755920444111143355024044814954068496790284606906842295178853682914088), SC_(0.001018699336556359016449924190201115869261011247963059310385004622371904945355047702859930174928618389) }, + { SC_(319.8160400390625), SC_(0.0034338268451392650604248046875), SC_(0.12707412242889404296875), SC_(0.9999999999999999999885782522121239720378924164702419364488175242026733242727982148213512890260261594), SC_(1) }, + { SC_(320.71142578125), SC_(4.67389774322509765625), SC_(0.905801355838775634765625), SC_(0.9933229979246399817402177158975810073939488560333729833574769096502187908439301761830114660292703708), SC_(0.9764989101980150094953146998214058228380821313586494993889299591548323610709508523772754780594204425) }, + { SC_(322.667938232421875), SC_(0.000298001919873058795928955078125), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(333.2742919921875), SC_(0.0451156608760356903076171875), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999999999993024522414434959592528156591133109713644699769217764700867599862), SC_(0.9987553275939253861769882742122918788970674441262575497956877566317860577638704280647163852507564504) }, + { SC_(339.176666259765625), SC_(0.4111320078372955322265625), SC_(0.9688708782196044921875), SC_(0.9999995236671855923438683507103921467223937679671553621101631997435391742327949564842653070262280338), SC_(0.9938910748133382239771236727930711742983670049790434303395950897494596427826116038671954023380345267) }, + { SC_(341.38720703125), SC_(0.384202649001963436603546142578125e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(341.41339111328125), SC_(468.468475341796875), SC_(0.3082362115383148193359375), SC_(0.4128184880043032809140395019499975322296948181157138611993089505021056371988042479120849961204236383), SC_(0.4302037456878193873356787723206187526028572520853624951542180385689884722486577946846142465981053205) }, + { SC_(343.1463623046875), SC_(0.0001005965095828287303447723388671875), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(343.94287109375), SC_(36665.765625), SC_(0.3082362115383148193359375), SC_(0.009037013529627434527884964751407311798376414357668757074111954961131451142501337166101600605322602743), SC_(0.009536374879923418487679679263956006220860557443039503868720373564029333691688007568814491327612979529) }, + { SC_(352.70654296875), SC_(212717.25), SC_(0.905801355838775634765625), SC_(0.001772286704155749904850572616733310267135395971245143557595896706014427386742310217816222627460115054), SC_(0.001540701157746761622809004875508828786105661861815249037593295147614312787858626788952997628299148919) }, + { SC_(356.28717041015625), SC_(0.0463746227324008941650390625), SC_(0.81474220752716064453125), SC_(0.9999999999999999997339356445637361482652424936367171377768294874432208096948783418222254267363846753), SC_(0.9999801156387943709224884105375848088409941912487113654870827079099437708865174333535247407071178364) }, + { SC_(356.7762451171875), SC_(3.3235576152801513671875), SC_(0.9688708782196044921875), SC_(0.9976938403420528084472435863529473878987142998231148844923075469329957921009393418824147344675511577), SC_(0.9794436309308570878826626815864396555178518229943269691186118747993594173886796230667427187870460625) }, + { SC_(361.524810791015625), SC_(0.01847557537257671356201171875), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999999999999999999999999999999999999534466448091812626550346993803974910050023), SC_(0.9999925209388827223573361966487975623371832937108007569513852736353814048374024501229531314904219329) }, + { SC_(362.19921875), SC_(344.353759765625), SC_(0.9688708782196044921875), SC_(0.5476281575497843624437893605159724208937184738549985337927500545951056343535331447933761833883481827), SC_(0.4775698867087671573501965764610067432811450131031398400305624887702874847230815601812005925276539136) }, + { SC_(362.229278564453125), SC_(131165.359375), SC_(0.3082362115383148193359375), SC_(0.002679791707566526422755873589586630169446617530094936763418005754297611371885109650718284341833951093), SC_(0.002824467746507293749673505448781489244224217628755381251478421973997863132443544440211476576746619521) }, + { SC_(367.16644287109375), SC_(0.23287344447453506290912628173828125e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(369.317962646484375), SC_(35824.7421875), SC_(0.12707412242889404296875), SC_(0.009604414696686521852522972547773614043823800216874752316334044933885241724077465902173892674314645196), SC_(0.01080866133724440194045276794950516862598710840502502774055657657118093499050283654495869007666263032) }, + { SC_(373.486236572265625), SC_(0.0390747748315334320068359375), SC_(0.12707412242889404296875), SC_(0.999951206676503304387915055645428392594015677689474745902804725085489497265877891084129832641009945), SC_(0.9999999999999999999999999817034830426939977466904491055711337484763575253234690673144785174501929868) }, + { SC_(374.011383056640625), SC_(0.1863805353641510009765625), SC_(0.913384497165679931640625), SC_(0.9999999965492584154002232707554792943788734275004372821418230392127534622461170559829239167690554951), SC_(0.9982806677420339420495867853969963928053122887245253320195160068884607241629161287598291745863318699) }, + { SC_(377.012786865234375), SC_(0.00041205019806511700153350830078125), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(377.90087890625), SC_(133.8535003662109375), SC_(0.8350250720977783203125), SC_(0.7573768111819911907733305298341295258452551688515322550451218290419239612375694786774455041231820618), SC_(0.7195379032736576050350055599592024368543444672971916087921468093868440089478843571196322217701063024) }, + { SC_(378.573211669921875), SC_(29545.880859375), SC_(0.905801355838775634765625), SC_(0.01350837749770206307739624546614705808313575619735876885193762596540502661976224026280762002530923324), SC_(0.01180940552044999402895433686264426291097939902639039269804194137142809327352362433621821394149601647) }, + { SC_(382.9013671875), SC_(0.46764689614064991474151611328125e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(389.089813232421875), SC_(0.0373030789196491241455078125), SC_(0.221111953258514404296875), SC_(0.9999981638156162652397811256720214231850386643686371258447359791037752330919429919296948291706260477), SC_(0.9999999999999999999959855454783816868145889553634386516069323406345552212253592701677768430836791129) }, + { SC_(389.16900634765625), SC_(413674.96875), SC_(0.632396042346954345703125), SC_(0.0009552624362049901669855123577411850520266689108108123768130918151898423984129852253994996692950398036), SC_(0.0009230668753777913260201878579216177559951057793650829829918551184784987279449976165063313716704841588) }, + { SC_(391.8837890625), SC_(0.19626211724244058132171630859375e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(393.736419677734375), SC_(0.004322923719882965087890625), SC_(0.632396042346954345703125), SC_(1), SC_(0.9999999999999999999999999999999999999999999999998681646674025799803647413200807347985795342485825951) }, + { SC_(393.983001708984375), SC_(0.2691637575626373291015625), SC_(0.221111953258514404296875), SC_(0.9991104454540003775468926277949453030838143774120550859615860420242530752079505266653131075638920104), SC_(0.9999936079645851615121065984282499599641967765104370746154265792539398181425755442804864751790295789) }, + { SC_(396.012939453125), SC_(0.3836281299591064453125), SC_(0.12707412242889404296875), SC_(0.9976773716410047586086328315418707524172428344528749929658542074981010458175248452222762668765665444), SC_(0.9999914072744088487882581829807620947616093547081324984203029110933446510694720873076122676680417324) }, + { SC_(396.501617431640625), SC_(0.00025799489230848848819732666015625), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(398.525390625), SC_(0.3569120235624723136425018310546875e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(399.652587890625), SC_(0.0480428077280521392822265625), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999998874820134854074865216893772112145115755920760927680981771473318634136034848), SC_(0.9997572519799009283700038652961907458357451588614006315616458103059800790487333231192604116343004188) }, + { SC_(403.239715576171875), SC_(231.1188201904296875), SC_(0.905801355838775634765625), SC_(0.6606842929715214649615606413209121731649068883032811201531852082398669402494589803335512537428810645), SC_(0.6104377133697563237980316718857496085294360624500839682414062863616728848087000500300566107380706249) }, + { SC_(407.583343505859375), SC_(1515.2218017578125), SC_(0.8350250720977783203125), SC_(0.2210469837518396754245030417545908320101014855023436229245265454847262270084604209956247944948868399), SC_(0.2028895040165325283897593722215097234823471316892626088348638245966639724244640971097239316467797438) }, + { SC_(408.7735595703125), SC_(3.076730251312255859375), SC_(0.632396042346954345703125), SC_(0.9945670466082144100175300085610724450412421987303313839503457885193680499599594291596269664166069007), SC_(0.9918731487981079274792102053341985296979518979685052943197625278535573404689289803590751271743508938) }, + { SC_(409.088836669921875), SC_(41189.671875), SC_(0.8350250720977783203125), SC_(0.01030491517493573224348219258833419205924194409131107232375860117567446052852736555717660298780789813), SC_(0.009362604650398965161312439656384200499761224093952164921184959311116948404519195055038571923608488886) }, + { SC_(412.0701904296875), SC_(0.000211175109143368899822235107421875), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(412.55084228515625), SC_(0.3415349419810809195041656494140625e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(412.772796630859375), SC_(10.2405414581298828125), SC_(0.221111953258514404296875), SC_(0.9704445538190006455424736980333975154565562870718988134034021420706722579237859043263453908496648727), SC_(0.9817458863876760104356452378387453129035208357425301108519161036516971353798754346284218081985113135) }, + { SC_(413.771148681640625), SC_(210.19207763671875), SC_(0.1355634629726409912109375), SC_(0.6422789207811020452242460993436065347608271407873253303975613202531308803085636148018960054883695138), SC_(0.6839148376491906411893930261007279094002339036891440027472129458811747936033500816012549400969810303) }, + { SC_(415.74554443359375), SC_(1.32294642925262451171875), SC_(0.12707412242889404296875), SC_(0.9938171514067981824911076676650964519986047161019420544097385203587818471804805527331495092608372084), SC_(0.999357421419547646836416841408036522951048184134115371612108076255116758676270860348926943699212568) }, + { SC_(419.13214111328125), SC_(4420.99755859375), SC_(0.632396042346954345703125), SC_(0.08791159754060151735236530134706998582672087673450648723897653104443664176800041222568442553820796671), SC_(0.08517801016470882274259880932896101880878695655476693830268639902051634896240519724317287325449010689) }, + { SC_(419.34033203125), SC_(0.00151284574531018733978271484375), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999999999999999999999868286779516978916217629944408603688919986063426761968453431883448374035) }, + { SC_(419.584075927734375), SC_(0.002538044936954975128173828125), SC_(0.3082362115383148193359375), SC_(0.9999999999999999999999999999999999999999999999999999999999999999988233292823385165541441358591397183), SC_(1) }, + { SC_(446.7720947265625), SC_(0.13732771575450897216796875), SC_(0.632396042346954345703125), SC_(0.9999990427528384183556672208304425479489356574755042240527599929999172027078023101328127963474379694), SC_(0.9999492865471341704297726719416983285152663334722569079251832298347447157340619041388044615907409094) }, + { SC_(456.1903076171875), SC_(0.002997568808495998382568359375), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999999992284050657519963875410283844572006100664075360364542143258308), SC_(1) }, + { SC_(473.50396728515625), SC_(2391.615234375), SC_(0.1355634629726409912109375), SC_(0.1576468984371367999649254141421197651984425203214701273351193938252678133626856401370203339484521789), SC_(0.1729160473311111984570739306443338817981085963903237158763973918215615250337480085874448538094186387) }, + { SC_(477.203277587890625), SC_(0.0049147461540997028350830078125), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999981000469922166656013548254552216899897992982588571658224137171236600326666007950484724998857371) }, + { SC_(485.769073486328125), SC_(190.1673431396484375), SC_(0.632396042346954345703125), SC_(0.7247016274796441657805932836349874799938107338200500867491391407730100402002379783855141900766326269), SC_(0.7130022890858784246047289160013443347182386890214881107393115548911336360365239658957158075225170796) }, + { SC_(488.2393798828125), SC_(0.434910595417022705078125), SC_(0.3082362115383148193359375), SC_(0.9991192122305962264529084799772767759243146988052486046064607617994825345072748510123510873523442851), SC_(0.9998925623289403616016717576063001969420445482560798712152728307143428562649004114320056341933694577) }, + { SC_(1082.14306640625), SC_(10693.6611328125), SC_(0.12707412242889404296875), SC_(0.08886711310290948222954450915420763566475482768809682261129954691049281304026184847614793386139017977), SC_(0.09493770992983245202467835458147969396419331700378668761467819629801191656861181986227265218174042472) }, + { SC_(1097.736083984375), SC_(1.48078691959381103515625), SC_(0.1355634629726409912109375), SC_(0.9975010522020994946185282402556947739472581564457920429912818147660444481871763724458556490879548718), SC_(0.9996731636877482620223061169090120133618466346464761416725375165874179882555721966100443747342702772) }, + { SC_(1146.2520751953125), SC_(184.5145416259765625), SC_(0.9688708782196044921875), SC_(0.8785476460112856872786551382821636056277751075596785846175481339071975716595755170028509958329380188), SC_(0.8432502940829551166449358910723419034333340976044334062364194457694662231441717327429856430463239088) }, + { SC_(1256.7484130859375), SC_(114671.2265625), SC_(0.221111953258514404296875), SC_(0.01060593725431252986702811756056748183494935555836228792236552941054959777617124983354561889652199492), SC_(0.01107329737933273044666188434446685031335209898146090091670376743489041660857669369725268105831467794) }, + { SC_(1295.97900390625), SC_(0.00442600063979625701904296875), SC_(0.632396042346954345703125), SC_(1), SC_(0.9999999999999999999999999999999999999999999999995274717196950905697803182405509130752822233377887607) }, + { SC_(1309.38720703125), SC_(0.00044117416837252676486968994140625), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(1394.074951171875), SC_(15.51703548431396484375), SC_(0.905801355838775634765625), SC_(0.992444766685700932203704217540834200817044502679558863331704926736559888250857685746703733482526587), SC_(0.9852014377836765578030010941110495204774619991265772821143987255772727273649449421666978133140391033) }, + { SC_(1394.3763427734375), SC_(0.147156597449793480336666107177734375e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(1423.681640625), SC_(37.307399749755859375), SC_(0.3082362115383148193359375), SC_(0.9725685333485380637110287267501037178411982070242071814985930790456365042962937262121607935452487224), SC_(0.9766838842908712433900410425659379867203323063619989628888193722061354156929665325574614737194318392) }, + { SC_(1480.748046875), SC_(2957.284423828125), SC_(0.221111953258514404296875), SC_(0.32820049033444896742347023117591698413027179364841901707235537648115127892448552420690732347880582), SC_(0.3390783773335733083079780686681878759048420814198746198082123567837311223705960268279749686752969664) }, + { SC_(1499.490966796875), SC_(4.857861995697021484375), SC_(0.12707412242889404296875), SC_(0.9950902694606661107966633713571102955524864552209520984419571285570058317666919528880769980260614719), SC_(0.9983182823293437416520222850958119805893752267736000629673061030120119056199759839619364959833692301) }, + { SC_(1568.1090087890625), SC_(0.3394500163267366588115692138671875e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(1614.361572265625), SC_(257.008087158203125), SC_(0.81474220752716064453125), SC_(0.8698112478913624472277815753750393514138650269219464253707806120917493678652560271796161542992997805), SC_(0.8555660717176567404257654163156632333700556069775631688744214265352153075301526509778708684627646743) }, + { SC_(1617.479248046875), SC_(0.032529197633266448974609375), SC_(0.12707412242889404296875), SC_(0.9999944876384744265638157393197757588660413275094485665783821328690650561737979446641441964312416976), SC_(0.9999999999999999999999999999998978309321272052183780981243687993749734714890207311595304625770690906) }, + { SC_(1644.535888671875), SC_(0.0342094860970973968505859375), SC_(0.221111953258514404296875), SC_(0.9999997638318361501102436249804991606237926448371863446070930981630325665314545803041661414581513015), SC_(0.9999999999999999999999756021546614999275360380602008471989147383592438919375645221297985909165122545) }, + { SC_(1654.0494384765625), SC_(34146.52734375), SC_(0.632396042346954345703125), SC_(0.04656946186270649325203371889209985930923163863709688003721651742142297620934728257705860934068111242), SC_(0.04581907856360845589227681576119497431538366759537784048803430947518484582119749452235136480990250005) }, + { SC_(1654.2796630859375), SC_(364.202728271484375), SC_(0.12707412242889404296875), SC_(0.8097763494154385501779948938429754968992817409034980283246683682820854294564925938749705743350958928), SC_(0.8292922860202832371138605638981493887939417202120228799437476076794392165269268209797548868717810778) }, + { SC_(1664.814208984375), SC_(0.00033929268829524517059326171875), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(1673.0052490234375), SC_(0.106633078758022747933864593505859375e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(1681.7281494140625), SC_(0.00465255416929721832275390625), SC_(0.1355634629726409912109375), SC_(0.9999999999999999915464943224844109277439970357956668196215595059787772538302182014733407931642369973), SC_(1) }, + { SC_(1700.0389404296875), SC_(23.1719760894775390625), SC_(0.9688708782196044921875), SC_(0.9912386402397966838078866083328881036260128763921385091738727701757716525291307528900888547300732994), SC_(0.9809377120153263090306024879583583577875486429235348687450755539992071841236516402200421236575781405) }, + { SC_(1722.9510498046875), SC_(3180.828857421875), SC_(0.913384497165679931640625), SC_(0.3606527944318639142647664393896637139375753729722852737262040103908219641695453136139553729622961126), SC_(0.3420850150063576797970539825300214991419796153528742627223543545574122129808240426763729417823510615) }, + { SC_(1737.734619140625), SC_(0.000441255629993975162506103515625), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(1784.9957275390625), SC_(0.28711086997645907104015350341796875e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(1848.123291015625), SC_(0.00048024553689174354076385498046875), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(1848.65283203125), SC_(24.98059844970703125), SC_(0.8350250720977783203125), SC_(0.9892406200969309745233783786304578441812145165495862703138749595543057652890938374265692201113950985), SC_(0.9841111680700725964246236205405944408491077986209480736023807958348075493596277894326056790779571806) }, + { SC_(1870.2532958984375), SC_(0.13475679224939085543155670166015625e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(1914.6778564453125), SC_(240454.8125), SC_(0.1355634629726409912109375), SC_(0.007702241172461522182927488337217654890776736581783007279895698144581955270976834168215586073013025344), SC_(0.00809799086706893437118501079989405633229602475317260622141758823859925522523234552626086471913041699) }, + { SC_(1961.91357421875), SC_(1.22353923320770263671875), SC_(0.913384497165679931640625), SC_(0.9999189597740392322308096240304641080617951976014784116465947781536882151112287036726919302950329238), SC_(0.9985568240899114722326285268482529443193645124114394240580323456404549420348203292063890930257588808) }, + { SC_(2004.1676025390625), SC_(0.1820631950977258384227752685546875e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(2021.546875), SC_(1278.527099609375), SC_(0.9688708782196044921875), SC_(0.6283279657023143372181239295335302986662395389955336828257980442608246564578954322734519507190584286), SC_(0.596711861087160501621963294567462333602685281737509419448705682767004635141951263589556756698539732) }, + { SC_(2030.455078125), SC_(27725.34375), SC_(0.9688708782196044921875), SC_(0.07098647306540512237013190643602541398884032744035535137370146304660419212735086415593045193152771209), SC_(0.06553601281911640621795913050666991898076153128268375128057483694959203855736802792028818772210999688) }, + { SC_(2031.1689453125), SC_(0.001671129255555570125579833984375), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999968291028247470937869704075432259), SC_(1) }, + { SC_(2160.7412109375), SC_(4.9396953582763671875), SC_(0.221111953258514404296875), SC_(0.9970211736764472981992584769643565936530529913415795324530390861333694978623965759899803537804442536), SC_(0.9985398559135000105076157678890167921545777454575400840676447268999825654520818710175094649905842631) }, + { SC_(2176.594482421875), SC_(0.0227449946105480194091796875), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999999999999999999999999997945001902055666223173075251268943680454074283491904), SC_(0.9999965821776591191085125142449477558729166588337813785327104315900948957786446047724628964200694857) }, + { SC_(2196.900146484375), SC_(0.4170066416263580322265625), SC_(0.221111953258514404296875), SC_(0.999722278253855111319270928574817283576951413134552336098369979384777072083791324431787579345450498), SC_(0.999990724925145146226544472674040172356197976002583110372862007084267207779086325010959802117294419) }, + { SC_(2253.716064453125), SC_(0.00046744965948164463043212890625), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969891) }, + { SC_(2265.716064453125), SC_(0.23549166144221089780330657958984375e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(2269.919189453125), SC_(0.142603230415261350572109222412109375e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(2270.08251953125), SC_(1.9198791980743408203125), SC_(0.3082362115383148193359375), SC_(0.9989851087751140414201639404022648120441634906485740303071471909255536803971106078679913484582938094), SC_(0.9995350234892520849190660987413299919959265928800584172560218236755153905777242686035828160762485838) }, + { SC_(2303.33447265625), SC_(2434.39501953125), SC_(0.632396042346954345703125), SC_(0.4886226527026242425927877354548444502980087468839610348417351313432827275881412873727275046519901099), SC_(0.4837107443986534290816192714122409877735068066829240093612760027716889838437826459712602729026515089) }, + { SC_(2341.2451171875), SC_(0.4919659197330474853515625), SC_(0.1355634629726409912109375), SC_(0.9995311091042536249169344075446825443137694299160853871208674503484886026279142192078030879612220254), SC_(0.99999419729365020246405250497877848408990220743565025539482969364049226089469404320605009933757253) }, + { SC_(2403.10693359375), SC_(0.0393528044223785400390625), SC_(0.81474220752716064453125), SC_(0.9999999999999999999999403260396776824879680826025127868541699448561220230973300227979592388023804042), SC_(0.9999986735897355289420092114450719688929048173921047555391406481856923971942976430886050395627246893) }, + { SC_(2438.42529296875), SC_(0.4890716075897216796875), SC_(0.81474220752716064453125), SC_(0.999989635462976810079963620979188718703151938381072626693636109688850602331761282464697559798490144), SC_(0.999648122130923654215652222595932330409371797656065246457273750406092502961552598983181348993097646) }, + { SC_(2525.380859375), SC_(0.0469692982733249664306640625), SC_(0.1355634629726409912109375), SC_(0.9999893442739456990919099246506204772325062598512181204729379940520586175344390456574705987238265144), SC_(0.9999999999999999999999230233933863880642839717711215551703688036757194370986692471889994014590830451) }, + { SC_(2563.04833984375), SC_(444797.40625), SC_(0.913384497165679931640625), SC_(0.005883569788134736855339814814576572977411718470890519107251477619292279607553921951851923073335478749), SC_(0.005576227185296419525370614800310638268542234296858363838212292724847599437465889941608049916705842887) }, + { SC_(2587.197265625), SC_(0.001075554522685706615447998046875), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(2595.52294921875), SC_(2311.214111328125), SC_(0.8350250720977783203125), SC_(0.5359137034780078933541242790216228243797206248086254496941797970366959646254003758089146947037030627), SC_(0.5220292423804689268929343602454183808635079475840405577402086074589705486498222272331023396411710213) }, + { SC_(2608.736083984375), SC_(0.0039381901733577251434326171875), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999999779504826666101421960786833678166774406499573595671068833940511970169171200094007538076) }, + { SC_(2609.55322265625), SC_(0.0041527482680976390838623046875), SC_(0.8350250720977783203125), SC_(1), SC_(0.999999999999999999999969854995653579710388859446743648689078341866550086726955797872617322024384578) }, + { SC_(2660.373779296875), SC_(2036.114990234375), SC_(0.905801355838775634765625), SC_(0.5759643782653834530410184035816831426967687342521481657707037416445865813805822912570958715369606774), SC_(0.5569421620116699273953603600479229577907404528510450678765151384350618477825358205563826794921092394) }, + { SC_(2676.193359375), SC_(457043.46875), SC_(0.905801355838775634765625), SC_(0.00596945690203513604046939447915064751124818502422664310189101628032489866704909111280054633816576759), SC_(0.005674308260742896421653219814794192782639924295378218904507290827993598155671523785984870391421115342) }, + { SC_(2690.582763671875), SC_(0.22973056137561798095703125), SC_(0.632396042346954345703125), SC_(0.9999968026777637550886061753995980368500678801116814829226730461774328063491223312020933908450140479), SC_(0.9999635812226735212463411942883532232112708581243007118299873190536346294488385910984248326226035925) }, + { SC_(2697.339111328125), SC_(0.3278447091579437255859375), SC_(0.913384497165679931640625), SC_(0.9999998487423327317214320267664313741434404368314828047691493007706295541973380475478308535506195685), SC_(0.999608590286994726692878508240889755385405234616077072026429542397076477085999223934366831492634963) }, + { SC_(2717.423095703125), SC_(0.278538644313812255859375), SC_(0.9688708782196044921875), SC_(0.9999999990147941850848464304055922176494719255370290965616903869328997441632096847823978230374536375), SC_(0.9993908070566551778459866926184154377843076803552287888433797324837882183120205346207804226108452839) }, + { SC_(2760.142333984375), SC_(46082.70703125), SC_(0.913384497165679931640625), SC_(0.05793868864177856762673169830489480311968897043247342612462355015145370485201769140170308060078635149), SC_(0.05509300753402485908932985040331754078244390764880917995012108815559292413950594907962263940652815708) }, + { SC_(2810.3701171875), SC_(0.3556720912456512451171875), SC_(0.3082362115383148193359375), SC_(0.9998858193662071271068230990895756050112301362087060345336897160151302464172763025762778384844552219), SC_(0.9999904204596996728524701135675555196375785657564141391015135924607616110680140837439105366143661322) }, + { SC_(2831.54541015625), SC_(2.64873027801513671875), SC_(0.905801355838775634765625), SC_(0.9996944080422230059353714096136281872138803195310585749660552892721876279066809824401791243822111955), SC_(0.998267141097206363369704384811010417520779981339965058385950195936543755085443504357062474732777082) }, + { SC_(2853.04248046875), SC_(23.2325763702392578125), SC_(0.81474220752716064453125), SC_(0.9934289050610711926872877305799102861789539319388567469058440890371369917356324766205198358279338748), SC_(0.9904612941940193750881085688794720866543364319435342929953547231124453727260343519859354688310013782) }, + { SC_(3066.23291015625), SC_(141.8632659912109375), SC_(0.3082362115383148193359375), SC_(0.9540345809743507228857632759697008707667696073237382336565231324955375503973526720917335856526773043), SC_(0.9576664920531744563115080997791539384609730001442212314186998214605909767884659248133006511360371453) }, + { SC_(3100.1806640625), SC_(1447.2921142578125), SC_(0.3082362115383148193359375), SC_(0.6782973235197785337828958164963596024876434903190026795155097271656963151167170689070313395723063228), SC_(0.6852166903222047123364376387393308689134981289982658234597549641675163676925705830355672520807880833) }, + { SC_(3122.51708984375), SC_(0.032955713570117950439453125), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999999999999999989306181856043650431630628195331935669075838529720382300193527885), SC_(0.9999877398414850675780611754356863140399583357191174169787199209320861286553958146277847262904709834) }, + { SC_(3163.536376953125), SC_(298.2393798828125), SC_(0.905801355838775634765625), SC_(0.920059752219469291849956189112384081775172652587453826467071447531722220196091626592646420633977314), SC_(0.9075195603111227038641386292126996925558951147404991526628169086696944305149031401604036329117705625) }, + { SC_(3185.797607421875), SC_(2162.649658203125), SC_(0.81474220752716064453125), SC_(0.601660836210351783204688306722025568707360895039597871163740009686656862151462572451649638326957338), SC_(0.5896420124972164070566696133134090135467897097265324400462204710277490318832544941594848162476745779) }, + { SC_(3222.951904296875), SC_(0.000114076086902059614658355712890625), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(3231.15576171875), SC_(0.00042852279148064553737640380859375), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(3233.27685546875), SC_(0.302093982696533203125), SC_(0.8350250720977783203125), SC_(0.9999994447892267294233139471112205974004592316920241511137894817157201404407529047682597925924260588), SC_(0.9998223896785611945547756565446570159357924128712479023614927637876914862311322810257420681665151857) }, + { SC_(3309.57666015625), SC_(19694.05859375), SC_(0.905801355838775634765625), SC_(0.1469229855485208567921653460230091013875483187048494397794438993777240604547424290009810249388549697), SC_(0.1408358815711554385131509290234356570253945657231749884496037976226980620540969037185163439067910986) }, + { SC_(3389.960693359375), SC_(0.12216867506504058837890625), SC_(0.12707412242889404296875), SC_(0.9999259537447898868825577390775012297513622600448895371119263231177428977912282856651127244339228704), SC_(0.9999999999915518450489393977664257711333146761904721310137827185977849435131102071591360369308227246) }, + { SC_(3482.687744140625), SC_(0.003345853649079799652099609375), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999872981465225555457428847342836637152633109757911884583978052129893856646090644418212099077675) }, + { SC_(3489.989013671875), SC_(0.000430709798820316791534423828125), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999999999979127030165009934195885406863326717048177962720921839396685282791) }, + { SC_(3568.2431640625), SC_(352075.78125), SC_(0.8350250720977783203125), SC_(0.01019594166525430149200435838281382008328524986388404799066931478898386639319410545258404628914721996), SC_(0.009870339750212606640487932293679734492824862862279135706943791162813826791617088524661190850446627936) }, + { SC_(3614.7607421875), SC_(3.387983798980712890625), SC_(0.632396042346954345703125), SC_(0.9993055338179926852432417628208893638974855042589652268759075685229748924412455994106741821409536363), SC_(0.9989812199137671427034829693872955967017844185198404867257863200294211515225439402383874784030999647) }, + { SC_(3614.799560546875), SC_(45861.59765625), SC_(0.221111953258514404296875), SC_(0.07215972343674328534125793976092356612991602902508682045746913995365010128175170574645901372835420733), SC_(0.07395774731616175365121294218727555643474205035576718335442870073124915950215047272567571773721378778) }, + { SC_(3663.94873046875), SC_(125.4974365234375), SC_(0.1355634629726409912109375), SC_(0.9636698179244358370075827204225064342743739819494816770395966196846755902198769861994239504220707161), SC_(0.9700602295021235566151204028964219840324224454111938529853432604522149921958296041358869402723954454) }, + { SC_(3684.808837890625), SC_(238875.625), SC_(0.632396042346954345703125), SC_(0.01527411134756941588208272991865420085457953266889347467596474560538035647522307273463650582882173711), SC_(0.01510613284570503043883141259390742600784231438883420598012672463459388411549493956985151501944564418) }, + { SC_(3718.935546875), SC_(284.95684814453125), SC_(0.913384497165679931640625), SC_(0.9343002484793394598061532039585267638648367326645466846836207656617475781598506111206012517209398915), SC_(0.9232377508750972980410657749500754754537058361584243935508019016092258625821350472700745772306893746) }, + { SC_(3726.241943359375), SC_(28.8971099853515625), SC_(0.632396042346954345703125), SC_(0.9928610810200388210907966688423646914054038583422267319949449595690082597597681099943865868698865386), SC_(0.9919027020127570907946594278672321549294981512095577065787819717511430255743828194689406323031051264) }, + { SC_(3736.384033203125), SC_(0.0043655070476233959197998046875), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999993748012553811423167725010358722359229555032171580020828835168528500926215949) }, + { SC_(3742.142822265625), SC_(0.02163856662809848785400390625), SC_(0.8350250720977783203125), SC_(0.99999999999999999999999999999999999999989580969181133077565088300611296068528387106664293775844641), SC_(0.9999999632378737581279756434663366643427468081864484836392830904846190038505663895924515045431713984) }, + { SC_(3810.80908203125), SC_(139.7005615234375), SC_(0.632396042346954345703125), SC_(0.9656994100836084250851349956718237187279129084225772489488875092919578125543391477153399987296295341), SC_(0.9637140890060746075785115677750211387703348994647234860375837469532807115995083354679581909749157685) }, + { SC_(3812.892822265625), SC_(0.290711686830036342144012451171875e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(3826.86083984375), SC_(0.00044492297456599771976470947265625), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(3860.85009765625), SC_(408688.75), SC_(0.81474220752716064453125), SC_(0.00949259190147308533885844990874001289337449382535665188199859917456402134908479020354858020544697019), SC_(0.009224116652405714563852972844552716825857277321889475854940187203130779474329803304850557871283837041) }, + { SC_(3962.59228515625), SC_(31.1610393524169921875), SC_(0.1355634629726409912109375), SC_(0.9906557647113291904228871034741125890116344131826601711573860953261322220025380817682703167824804915), SC_(0.993704578123301685297170055863078166008518063506092591795067688150704553718825177098523279660344358) }, + { SC_(3970.181396484375), SC_(0.46857738494873046875), SC_(0.905801355838775634765625), SC_(0.999998739304641240665798515343386716122952354802124231188426651566835886937026512354778000578720562), SC_(0.9996646897162708245178638728882630500119858099464470487598570874947359407548015506968273336983955274) }, + { SC_(3974.75341796875), SC_(31.3806819915771484375), SC_(0.221111953258514404296875), SC_(0.9911358727449760088016955162077855948155384806713641409048077352354988412806331502267520169365728745), SC_(0.9932646708969124740118591523047195616848427514069229973665896200941575266262691483555793366177920613) }, + { SC_(3994.4755859375), SC_(1430.89794921875), SC_(0.1355634629726409912109375), SC_(0.7296686519812832628416786186422783938815380308433676396174676803368847907844344352504197366735693985), SC_(0.7428354249948457078049928733148438491510476066250204974319160776931154865245064778355332191466472828) }, + { SC_(4007.785888671875), SC_(325072.90625), SC_(0.12707412242889404296875), SC_(0.01196100624209917804150813243629156970775039664320000955363589445506592917804205925529691813999050435), SC_(0.01239705344161176054423664564839126888699548707588123808247560616410530304873034422600030009838041761) }, + { SC_(4032.44970703125), SC_(0.014052885584533214569091796875), SC_(0.3082362115383148193359375), SC_(0.9999999999999994242619832814584104437618461608008267533528341413296516087350029420108163771433050611), SC_(0.9999999999999999999999999999999999999999400387554711202143670124844581193075515778313430411904586605) }, + { SC_(4037.3095703125), SC_(16.8816509246826171875), SC_(0.12707412242889404296875), SC_(0.9946689119433654291169755193506694451155594497290568310006784320554416288511839365840809938936515889), SC_(0.9969540151350993618676408642841092741290954007495931598052108360499163656158180822381985884776135984) }, + { SC_(4055.591552734375), SC_(3.02400684356689453125), SC_(0.9688708782196044921875), SC_(0.9998310071199696605529884495998945402974345492655730361137099132480577625222867244830441942883936962), SC_(0.9982827612774896758810839659332114396955952116330140012658311701434193819817317057136685835417761509) }, + { SC_(4069.31787109375), SC_(325513.34375), SC_(0.3082362115383148193359375), SC_(0.01224980507511926066718542412122351119260473909794369869196839275988273545703738733305073886069575404), SC_(0.01244247883922169929502065155491433727664623825347333494596043124304911321525879113577916036941090879) }, + { SC_(4178.6318359375), SC_(46566.515625), SC_(0.8350250720977783203125), SC_(0.08353395362030079782310630311506955211248576656933717858094505330555364771051041075755350947976198444), SC_(0.08115638133603639090307112471946075681599248640474962292497050093068216011519298980008633199078008674) }, + { SC_(4236.8154296875), SC_(2638.01123046875), SC_(0.12707412242889404296875), SC_(0.6095883164573813537372133347926276691083297124064177532915269555343257570599557890302986601968825236), SC_(0.6229641090145724214005595647109580018938687367969042638185339313938844815878470418635960738883458639) }, + { SC_(4264.560546875), SC_(235044.84375), SC_(0.9688708782196044921875), SC_(0.01832781831012444645573088541858009222094238006932617902401030422570011141005548953912176146384029192), SC_(0.01731939350464435829768005897542709000567868851782509796715659633851286729039900744184903510212885932) }, + { SC_(4294.29833984375), SC_(39.17559051513671875), SC_(0.913384497165679931640625), SC_(0.9928463399880940817313506563943843068270382379667783103945747794935661911269021076672909658187360577), SC_(0.9889441543057289409025478181939523464524357644812228422522709522945489884992522139343776684774546924) }, + { SC_(4329.69384765625), SC_(0.0356505475938320159912109375), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999999999999999999999277782598188671506144465573936683884965170624568377927), SC_(0.9999269875859298070450425097037758320772474530758064879209023307969494680417617872484766056562000202) }, + { SC_(4484.44482421875), SC_(0.0347605831921100616455078125), SC_(0.632396042346954345703125), SC_(0.9999999999999999595768717562151956829780307840435486289224606951905988945844102263311899820359933713), SC_(0.9999999997575176091976306328037440753277400584403248355983219243813182453273606780477920050821374753) }, + { SC_(4571.689453125), SC_(0.30711162253282964229583740234375e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(4577.5576171875), SC_(462.9542236328125), SC_(0.221111953258514404296875), SC_(0.9050502722848642877389160969301943553513530305672240201071013950105214002464574293335512721689885972), SC_(0.9113005883994987174769648017930720458343401299944846190600182803449500339869043998585196566180610166) }, + { SC_(4655.2021484375), SC_(0.0004921201034449040889739990234375), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(4684.38916015625), SC_(48115.4140625), SC_(0.81474220752716064453125), SC_(0.08982689184465506013087772637135936612701658646856888580997903532046524888257909532992446285452510119), SC_(0.08761069583661007132118290196898482550672212377309683288687036071462483273406451170626059400082729114) }, + { SC_(4694.7021484375), SC_(15396.767578125), SC_(0.1355634629726409912109375), SC_(0.2303830162160288138894867524534260691663758945255666422001639201485209799768000010291830451480509929), SC_(0.2369535887943190731212944596031958384216222235986949855803346052424170867868112939477674707975642152) }, + { SC_(4730.45458984375), SC_(39692.90234375), SC_(0.3082362115383148193359375), SC_(0.1057483458506921528330397090365659605110894139969411702951717734536310999323097278373310127101509832), SC_(0.1072143109795991704457544292330361392694948522543557481009433879614166286872309214709649776349197912) }, + { SC_(4742.923828125), SC_(4.058574676513671875), SC_(0.8350250720977783203125), SC_(0.9995442470534273155584382837915646735436176863382243742446738471563140716281202290406006193325456334), SC_(0.9987520256430379371188752129865196354071055254101671387670505707008001855071100931352494993481108559) }, + { SC_(4813.82861328125), SC_(366.26776123046875), SC_(0.8350250720977783203125), SC_(0.9327645080514947261497972101825048437441388896488369645757874186333606746848469030515421942822179822), SC_(0.9258276059571410675441278822187742987754175951068400252196364353274414399291099221534842328948949547) }, + { SC_(4827.74365234375), SC_(3.2813909053802490234375), SC_(0.81474220752716064453125), SC_(0.9996516603409298014802771362669772691879583134922875961248950194642818425873078740444270657387912987), SC_(0.9990157498750257278622233771988785189756491595220493034072588240934993687308449853074626235836147666) }, + { SC_(4931.3408203125), SC_(0.003918074071407318115234375), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999999999987656785162492447198043398096556864297466031265838952066059389595448844588550589683033) }, + { SC_(4951.73876953125), SC_(0.0031504244543612003326416015625), SC_(0.12707412242889404296875), SC_(0.9999999999999999999999790632612544297245293487847972495825034992111437380717518449940294840176812509), SC_(1) }, + { SC_(10727.1015625), SC_(20.6144351959228515625), SC_(0.3082362115383148193359375), SC_(0.9978955686639924254846463082255888815844409784459276612164324249474215720483426160490913925043215784), SC_(0.9983145054162888476351953692555791697469098543194412446337832240061564240355874779954246841172294519) }, + { SC_(10865.9921875), SC_(0.472520351409912109375), SC_(0.1355634629726409912109375), SC_(0.999902527598677627627099893517024709728513497680107262208305775498427682062489516173726061536901377), SC_(0.9999989552266855229679184203491020048002641601761824100625539562380316530160690692516731246125089535) }, + { SC_(11005.3994140625), SC_(0.00037013436667621135711669921875), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(11199.677734375), SC_(2.693786144256591796875), SC_(0.8350250720977783203125), SC_(0.9998945175442020862399209110544974197462276260707163666707750050548457250473333718802620210069406171), SC_(0.9996270010697969051721123251770830488212868926888012470749945422020215041230377098617032765443502779) }, + { SC_(11672.794921875), SC_(151.0876007080078125), SC_(0.3082362115383148193359375), SC_(0.9867256703837258484871249098586245266682605703847412280027938776483286303881310547703725105188179769), SC_(0.9877591279611092091737850233598184335139215256189040514216394070669543692230601104971020325274581911) }, + { SC_(11802.0439453125), SC_(0.0215594768524169921875), SC_(0.81474220752716064453125), SC_(0.999999999999999999999999999999999999994727135521919649331606127072716166264835163260114994289415073), SC_(0.9999999963872231589868600884246281302817221464200328015349626830134887406294398937404650342191563155) }, + { SC_(12400.75390625), SC_(0.351217095158062875270843505859375e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(12677.8505859375), SC_(38.009876251220703125), SC_(0.1355634629726409912109375), SC_(0.9964747986834723654193655436139027223181811561058840522862615540981362605148257260539509008912402134), SC_(0.9975358433153816783430513381551742890265912265148095987717614751202649401165295466016711394222147967) }, + { SC_(13303.708984375), SC_(16683.587890625), SC_(0.905801355838775634765625), SC_(0.4474193622057988735589416805939281999767476359286401420686639949729906805819151696953663551119236678), SC_(0.4398721113279183668846926392489806951192851948047342135941452369641205350268715845316582269415674984) }, + { SC_(13483.087890625), SC_(3.4626166820526123046875), SC_(0.913384497165679931640625), SC_(0.9999025526575328763219951238989195750265155710771616645986677866598951145076440879410435362197355439), SC_(0.9995421784522867502900163142955100750957382947411387417744911266063320671585631266970901388611131922) }, + { SC_(13500.0146484375), SC_(0.0147750042378902435302734375), SC_(0.221111953258514404296875), SC_(0.9999999999980986282677136384284345207974877883583935407969120554109052108644598241612156406538435344), SC_(0.9999999999999999999999999999999999999999999999998153430035112169598360277026763715460122168952759577) }, + { SC_(14277.6669921875), SC_(275.66424560546875), SC_(0.632396042346954345703125), SC_(0.9814597781115358811833627161047215221039299483734665999280352748833869329173047464238397057873053886), SC_(0.9806959269958255941975395587016036875822285206556720067002109445633959146970912522101970698705966525) }, + { SC_(15026.18359375), SC_(191435.6875), SC_(0.905801355838775634765625), SC_(0.07353245190202421499485532824677833370778185184468790526084857388185721139814974400179596252891126533), SC_(0.07202848348546586671421776766625943413371958435196993074213136623105266325953701314322750209656968983) }, + { SC_(15514.759765625), SC_(469.305145263671875), SC_(0.12707412242889404296875), SC_(0.969111114524703727445291304986292062169149765330399122797130089976810503311462271663381931205633886), SC_(0.9721554648035620136677684662661032647815655025206597529404303370691064089963014367498118632463759816) }, + { SC_(15687.4873046875), SC_(0.000288298237137496471405029296875), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(17074.203125), SC_(0.00107910879887640476226806640625), SC_(0.8350250720977783203125), SC_(1), SC_(0.999999999999999999999999999999999999999999999999999999999999999999999999999990941596841975836224893) }, + { SC_(17224.67578125), SC_(0.0225061289966106414794921875), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999983783551868046774596052440632041938455123758870210914281070005844499896783757), SC_(0.9999999999999522895369366162149259379463875654155117674501390313725113526863394858038435946209224247) }, + { SC_(17285.642578125), SC_(252.595855712890625), SC_(0.221111953258514404296875), SC_(0.9849141042675603231144515179794140108587757688361283173548238059059996621083269170269888166833341869), SC_(0.986295849997757751831154068110663161330486304501040391103777557052040528679183855968227566880473113) }, + { SC_(17364.01171875), SC_(0.0032844119705259799957275390625), SC_(0.12707412242889404296875), SC_(0.9999999999999999999999653007820588301033050715847054451804777051556330078548218276211537327732471081), SC_(1) }, + { SC_(18709.283203125), SC_(311063.03125), SC_(0.8350250720977783203125), SC_(0.05712634471226769957760487161748027150822886849830307026706486598760198647036235929659506950273292972), SC_(0.0563414470998018054256062249684859150086943264137740179368722714803209410941185637765246088408408302) }, + { SC_(18712.064453125), SC_(125.128173828125), SC_(0.1355634629726409912109375), SC_(0.9927032051201230904696940776616516369870796678085998023598946306579609043011734841579182623592187432), SC_(0.9940041955099621353883837610970256517983540238810168221044659739068241188141381975459097288757103277) }, + { SC_(18950.81640625), SC_(0.02248309552669525146484375), SC_(0.12707412242889404296875), SC_(0.9999999283820834756332139807090482376302859631771417010547002349427910858127512481879637289366813636), SC_(0.9999999999999999999999999999999999999999999957339804623749150674917244604820125170867241693793878826) }, + { SC_(18966.861328125), SC_(0.00021034784731455147266387939453125), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(19108.51171875), SC_(1.5829699039459228515625), SC_(0.3082362115383148193359375), SC_(0.9999005660289408808287488446768417432534831175543654941728338529665751672743724386973426527638215335), SC_(0.9999585148545766802527122293849186916878121148836667995614994145683867934860445764434343245261737478) }, + { SC_(19766.611328125), SC_(1197.8387451171875), SC_(0.8350250720977783203125), SC_(0.9444255606618057912190171626867014506809355328077332452906022372567625428151975262732751300102423966), SC_(0.9413025433892331990072000089130898601128139314941542344353260926967844780346532513471692820347439945) }, + { SC_(19945.158203125), SC_(1.323333263397216796875), SC_(0.1355634629726409912109375), SC_(0.9998742337659471264589891405151776780340992277030678302158013696254961400783537165625591532881579503), SC_(0.9999858271068561353597274455936624805404309978459386841555294939078049452854553616112298661320907262) }, + { SC_(20612.880859375), SC_(0.0045445901341736316680908203125), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999999398876927517487570928867858317709326610748968162185799411472499293440989664961146403825) }, + { SC_(21002.7890625), SC_(3.6717395782470703125), SC_(0.12707412242889404296875), SC_(0.9997208981772715353346569701870259144957868588972129326730901618680209630371943500804033645969721831), SC_(0.9999199396978807617479475762835656869845780347204973233021308429276294404668427447504981645802765082) }, + { SC_(21820.291015625), SC_(4256.572265625), SC_(0.905801355838775634765625), SC_(0.8397722044669133434188582508636213285212266912090034802586720593470585040870749373795587099541807801), SC_(0.8337517048186985599064171658551456688605809912406946491662285811081335376247624183743152675046530719) }, + { SC_(22356.583984375), SC_(457832.53125), SC_(0.913384497165679931640625), SC_(0.04697248603589743079989187832250505557493791253633167587859474846600600779918374979564194592783709561), SC_(0.04614433675033637931978298157759241163918754213994435319017383531135194934480024724812588776402391934) }, + { SC_(22697.115234375), SC_(0.3655127875390462577342987060546875e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(23467.970703125), SC_(2143.580810546875), SC_(0.632396042346954345703125), SC_(0.9168989447325276384087200175119604713614129900252388499824333876313752169709508936883689020423957098), SC_(0.9157285302919133836212637600431085604202514997159450246927562880855063033131047922071930670406502643) }, + { SC_(23857.951171875), SC_(344059.4375), SC_(0.221111953258514404296875), SC_(0.06453365017911071192761837501125786989991975047335272960577931608804164272657159268862668533873761162), SC_(0.06515759634224947290553337355867883193493040865840623863527159097093338950278635753186320335338279283) }, + { SC_(23897.50390625), SC_(0.0264662839472293853759765625), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999999999999999999999587245315531894780034512774942564949489218944664030370337), SC_(0.9999994209979344148377069200964884939258926474262867574596087610886833837297109006751033215153849676) }, + { SC_(24178.228515625), SC_(454.8056640625), SC_(0.905801355838775634765625), SC_(0.9826550883174240389980247853034133059082404981104328100739816843469140526141807274610326295355789356), SC_(0.9803993983817405950297585799817063026832491221199635080272610777098276397446918282849078047379544755) }, + { SC_(24181.37109375), SC_(463750.875), SC_(0.12707412242889404296875), SC_(0.0492047547338224323276341324386521173764842030652175465567778905332711436645993127453534699385571478), SC_(0.04991335636853231538939341877236745831289841064190155436394088895104253175531206033337030015518113149) }, + { SC_(24202.947265625), SC_(0.000431136810220777988433837890625), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(24814.5078125), SC_(0.0022801845334470272064208984375), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999999999999999999999423737912821878740225410135578559689737301822743), SC_(1) }, + { SC_(24942.55078125), SC_(0.03099299408495426177978515625), SC_(0.1355634629726409912109375), SC_(0.9999997890509072921804849955268801103638939255783240450779496624413730309722694341249026819431248339), SC_(0.9999999999999999999999999999999977008559905607962233321801963118504181352459825413430951818675458934) }, + { SC_(25332.25390625), SC_(0.1855850517749786376953125), SC_(0.8350250720977783203125), SC_(0.999999998451958054202392463336520764319591183978363832021479678406339155012894573745241012414349567), SC_(0.9999876123731212498822226827292402594334039685112971131981591478082034172634404446558974299300249778) }, + { SC_(25354.7421875), SC_(0.02945673465728759765625), SC_(0.9688708782196044921875), SC_(0.9999999999999999999999999999999999999999999999999999999840951977145201086924102438429110315103896433), SC_(0.9999902839112550619518711055280174475112763268432701940883875555592708975953441202839453595637482537) }, + { SC_(25489.81640625), SC_(0.00049681845121085643768310546875), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(26425.1640625), SC_(307.398162841796875), SC_(0.913384497165679931640625), SC_(0.9893782255633878133215110410411045634323733199919821453653986858960046992944871757946795992784130266), SC_(0.9876029174151440488349138533030389582787883814645697521271512826294733889438640441324531722471741995) }, + { SC_(26463.7421875), SC_(19163.873046875), SC_(0.12707412242889404296875), SC_(0.5773587799210139835895410281967560412937529205679533550572817474774849892008131263979578267870911717), SC_(0.5826284792367414872899586808685685956725155939617726841767169154742728728762507956661000517313657644) }, + { SC_(26537.091796875), SC_(270229.28125), SC_(0.81474220752716064453125), SC_(0.08988970588531338088302212964959781346369557053594521355011938810075437888886515055501217478763345617), SC_(0.08895156451012850787667613899850535727806206351279083144520437712393991439902344814299933789139693542) }, + { SC_(26844.490234375), SC_(0.000473332009278237819671630859375), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999999997982284687745902439702744724182541762695122090024552067473007140381) }, + { SC_(27758.564453125), SC_(0.18002581782639026641845703125e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(28065.55078125), SC_(3.5871093273162841796875), SC_(0.221111953258514404296875), SC_(0.9998276723599410557319810329639575626259550862677278639207688486481367312960811822076433550491230291), SC_(0.9999261730973619097497356269425110589936821308609402249314266363573075960544358818173693741018341297) }, + { SC_(28187.794921875), SC_(384992.25), SC_(0.632396042346954345703125), SC_(0.06835361760689158500326796469077140866256936059900593976741755051656277535675801795295066703834586806), SC_(0.06808830567480254515209379854228246312426351965353158104178383411363259331584031013698580024467712761) }, + { SC_(30225.46484375), SC_(0.1016343958326615393161773681640625e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(30472.796875), SC_(42078.734375), SC_(0.8350250720977783203125), SC_(0.4218010053615211357248356477540027371482660356747081739950736713296920949487766057782283939170652577), SC_(0.4182307248027768337746631949972411697153189925034155632257392128104074203602443267899162709267230083) }, + { SC_(31113.873046875), SC_(2243.24951171875), SC_(0.9688708782196044921875), SC_(0.9352856822910349317324615526123413510155389751849792954434893684863793311280549743979385102829868276), SC_(0.9301725043843851659278657711289890824290617390619050707890761382714767104253160685040980089962301817) }, + { SC_(31202.068359375), SC_(0.3144348561763763427734375), SC_(0.9688708782196044921875), SC_(0.9999999996360771443541725187564450517217830740998692948218123846219876242706125276069352982510308917), SC_(0.9999430150312608531914833526722188840347720843665370345138151455611847710045039658415224704716433894) }, + { SC_(31365.501953125), SC_(42.0266265869140625), SC_(0.8350250720977783203125), SC_(0.9988625768098143974891208370985013656900157626652596157845079190489033072824896520246067538107281696), SC_(0.9984622744838168447439171759823789324759706622941499941125294232748312649471942664985703650498189881) }, + { SC_(31426.568359375), SC_(3.5692617893218994140625), SC_(0.905801355838775634765625), SC_(0.9999545975847827574241102216530335162079695930944686171855960909599017574876859741734108306449645582), SC_(0.9998029307978248116369285497338433098615201938022227386805376199576193261592529697696982404954384888) }, + { SC_(32071.69921875), SC_(37284.46484375), SC_(0.632396042346954345703125), SC_(0.4630602898402140381369276786929510276297830104230376122113078642985108959063567005337319286248343264), SC_(0.4617796999346913857406108973215305638038273581939198129540951663437446604827893445010330323573540936) }, + { SC_(32841.03515625), SC_(0.00211882009170949459075927734375), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999999999999999999999999999826741326053473323363767964902211257668520847421892785) }, + { SC_(33019.796875), SC_(0.3179961740970611572265625), SC_(0.913384497165679931640625), SC_(0.9999999902555834352590615623476815609954383530917450155215110987540030639507876278929569761484087924), SC_(0.9999688093219751702819735398712145954760207022805299877046522812391023849697657247999537450926365041) }, + { SC_(33341.328125), SC_(44482.7265625), SC_(0.3082362115383148193359375), SC_(0.4275304102578931194414209320667100468657295612481723446649145788627690273404144540362880182671916184), SC_(0.4293072990948414151592224859188384687988032523264524671078099200982593071393874400896545736722464192) }, + { SC_(33342.82421875), SC_(33088.58203125), SC_(0.81474220752716064453125), SC_(0.5036507733336725191268809149164410412947751143494842893453277223941530096841116403984198058937958244), SC_(0.5001763726983576277345596011231961518960725294646717535086548571283889408651216297091961115557439058) }, + { SC_(34105.53125), SC_(27232.5546875), SC_(0.1355634629726409912109375), SC_(0.5538175334012864242421866454077820828419632128250729290648244448710306286694652123801499778328731217), SC_(0.5582329274506246864727650871515081867137172675338621376246310076871741462531436281417650715688688868) }, + { SC_(34199.625), SC_(0.000267275259830057621002197265625), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(34657.7421875), SC_(103.4410247802734375), SC_(0.81474220752716064453125), SC_(0.9972873131409786240435473974447900318168450000207416171089424854742680051082201725630979222283067374), SC_(0.9967649319008550750367403253702655655195218320118737631930475353151207906448758332762913290553948139) }, + { SC_(34691.16796875), SC_(0.1412391960620880126953125), SC_(0.905801355838775634765625), SC_(0.9999999999990172889946551705628677906379459331818766888858057949390918356322653129074946230624519904), SC_(0.9999872164666197279998010605176676346865806440600722213798387753412098657955689268435626236981822648) }, + { SC_(35037.50390625), SC_(11.6895084381103515625), SC_(0.9688708782196044921875), SC_(0.9998234270777126043310265470077550933170511006575704887520639104792556972872944189656868508124823306), SC_(0.9994627474382952507115836953782141880802342937787698921192662983636055431679919526515543879508391586) }, + { SC_(35093.859375), SC_(0.19068343937397003173828125), SC_(0.12707412242889404296875), SC_(0.9999871806061984271732299759116531182406790284572528302456867722402300211744985059519928357557745093), SC_(0.9999999996301680530631740729459592647833045435034606785540769256302644818544393758145863144095721769) }, + { SC_(35247.55078125), SC_(0.00044111299212090671062469482421875), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(35426.453125), SC_(0.25611940145608969032764434814453125e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(35604.6640625), SC_(0.0404350571334362030029296875), SC_(0.3082362115383148193359375), SC_(0.9999999982052466902689652389353026138870205028748927103503499162410021329021248584008630007166311474), SC_(0.9999999999999999962712981374584233401077240139155282675794938037697112418125551075276477108276706973) }, + { SC_(36098.04296875), SC_(0.00035800389014184474945068359375), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(36424.671875), SC_(0.020534180104732513427734375), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999999999999999999999999999999999999971367978193378361150141335731041897271126242), SC_(0.9999998085686165944084737902216262370234716796776713911046762618617779792449893745345976374575227153) }, + { SC_(36495.27734375), SC_(2484.92626953125), SC_(0.81474220752716064453125), SC_(0.9373610983375433097891510458953221736075513997956681978308435675509206174312092261580205110553337405), SC_(0.9351450231650898190566776793089120341064078951111779236038044146938071453501510541290424017262886583) }, + { SC_(37065.7890625), SC_(2610.560791015625), SC_(0.1355634629726409912109375), SC_(0.9328324061749901477199980266057720850561117043468208396668583199115369486387621698740948543001373855), SC_(0.935571723962425739160846855591352535089606447437035153695552480633269820208842958319498810147878698) }, + { SC_(37207.1328125), SC_(3485.194091796875), SC_(0.913384497165679931640625), SC_(0.9162359801756381916619903730850397690369026385969008183038029762438351092364731126544777673951471186), SC_(0.9124575118836326646661657257635725319350531779780235779359233296229778650365705081171791831304614365) }, + { SC_(37353.54296875), SC_(12.2282161712646484375), SC_(0.632396042346954345703125), SC_(0.9997117455109351904250178079495255884828394426149510195997611923636414735786233736938278808908045189), SC_(0.9996494466116136474250271435975043225817563667504613499261928478611292984517252413381827376599079152) }, + { SC_(38782.8046875), SC_(35499.7734375), SC_(0.913384497165679931640625), SC_(0.5245940877071222447702286245642860923977179597665014196540467551126391893142226516052331800615389139), SC_(0.5196020905568873007190308283455495824249036862537454471417268359542118308530726511043585635114772211) }, + { SC_(38926.94140625), SC_(0.02303241193294525146484375), SC_(0.8350250720977783203125), SC_(0.9999999999999999999999999999999999999984519515857123747111664771943786921555896538092060346705621197), SC_(0.9999999941422836004944425708023634135564157427206710012579559004033932392630523039546744179125677859) }, + { SC_(39031.0078125), SC_(0.00275336927734315395355224609375), SC_(0.1355634629726409912109375), SC_(0.9999999999999999999999999998483268295522441292848378563231127171871478321527275417841693362459583778), SC_(1) }, + { SC_(39044.17578125), SC_(143514), SC_(0.9688708782196044921875), SC_(0.2156643567181691349452732752770441344783939727522165345224911366796775156310940764296046424736894347), SC_(0.2120858434586875886433577306724960649525982151352921991683831958353923352314164621433779190944636427) }, + { SC_(39369.1875), SC_(0.004928432404994964599609375), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990673811), SC_(0.9999999999999999999999999999999999999999999994032805030857586777254302553479107282173081241040464806) }, + { SC_(39833.8984375), SC_(0.413198292255401611328125), SC_(0.632396042346954345703125), SC_(0.9999982517115124650308690547532739206726478482881555297934034242787259053082912851755543196518077233), SC_(0.9999924036933725301364996418913581513476350867393571622353148774769074338048074892075971510122481897) }, + { SC_(40020.80078125), SC_(38980.671875), SC_(0.221111953258514404296875), SC_(0.5052161246750960764817102845196591027226306176086099417546299230369548032879389576104957911828927976), SC_(0.5079498640781166889039750657370799168571987037067260299656251606102713024934446176355388053306345133) }, + { SC_(40673.2578125), SC_(3205.197998046875), SC_(0.3082362115383148193359375), SC_(0.9263355106719371694972929050694909016098674526227758596557034989600933217085050801752787872730331786), SC_(0.92757982388806061735503563379035771674110657024691566407181227695615343722302973333371027026711055) }, + { SC_(41349.45703125), SC_(38.29947662353515625), SC_(0.81474220752716064453125), SC_(0.9992094455744368565789639819882726686306533933684699082366719140812284443895180973475189396303061871), SC_(0.998942961942599242069505094809871757368152730348999418241593258651518212760990219472867560134029507) }, + { SC_(41562.9375), SC_(0.26003241146099753677845001220703125e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(42022.34375), SC_(0.4905900061130523681640625), SC_(0.3082362115383148193359375), SC_(0.9999879524298522425850660454104234530552499873604393279128367491253924250516140773312732361897225534), SC_(0.9999982258216174703756687222830066029419976175185290234480475061852674546108333212849682715012294103) }, + { SC_(42083.65625), SC_(4.19858837127685546875), SC_(0.9688708782196044921875), SC_(0.9999697081182208270612909815895114336712074219961433290572810286189140088169754703035722432085055647), SC_(0.9997922413437575421696407083486105260221466508701881856007852891982163281972582594617633735134469065) }, + { SC_(42177.98046875), SC_(2.612369060516357421875), SC_(0.632396042346954345703125), SC_(0.9999568647518409435414169911503960687007407534904236936413833710812576633954985745197859671608937712), SC_(0.9999328791004701063460751135525235300877254634646759472610840911055309210186397783551617740479692473) }, + { SC_(42524.5078125), SC_(0.2802095115184783935546875), SC_(0.81474220752716064453125), SC_(0.99999996049223411512152794723833446386041020881833257485027511399693694701343634482745458658873267), SC_(0.9999891117732024108694503606111264063337705820526410692720332729516063382760413368785711130124440547) }, + { SC_(42581.58984375), SC_(0.37374455132521688938140869140625e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(43662.40625), SC_(0.0046618557535111904144287109375), SC_(0.3082362115383148193359375), SC_(0.9999999999999999999999999999999999999993964212845726553749568327761008131513541801090475135742185777), SC_(1) }, + { SC_(44090.55859375), SC_(0.10735684554674662649631500244140625e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(44669.99609375), SC_(0.4677930337493307888507843017578125e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(45414.3828125), SC_(48.6922149658203125), SC_(0.905801355838775634765625), SC_(0.9991248063293492785933708184233767348893339395398930175903417086806112215948366275762199334027639371), SC_(0.9987224602975359332859923347928164872014884624802128237949604429447291196699306258618932894158872125) }, + { SC_(45461.75390625), SC_(459125.75), SC_(0.3082362115383148193359375), SC_(0.08989458139120597839683023048632079373780396765952994009542514996854861307492824150961806316647838022), SC_(0.09029834386779288090531961455989067736663196426767485870342215288186465421464924224123031571438405692) }, + { SC_(45960.19921875), SC_(49.68207550048828125), SC_(0.913384497165679931640625), SC_(0.999121937554656805636527814473741386782287428787098621811627439650242635182527640240724333063873542), SC_(0.9987060853522577404596073508041032205431563655215373651594863967642516234374113889536631930200538368) }, + { SC_(46422.796875), SC_(0.11781878769397735595703125), SC_(0.221111953258514404296875), SC_(0.9999982956833203304840924282175120424820605691880549531900871903222870257007699072012733817276916664), SC_(0.9999999999637122181041605680955512196247306257720159528388513871282546704937536781125663486095384214) }, + { SC_(46983.234375), SC_(0.0014450610615313053131103515625), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999962525859605759102696514598545349352056782601216774079366820687946048849498857773076407) }, + { SC_(47575.9296875), SC_(42.76256561279296875), SC_(0.221111953258514404296875), SC_(0.9989997920737591117315027214161125377003795850923233700914261890473041903165757239121699167151556175), SC_(0.999209876209891269419875501024512522062474996647412062240961226503994747053431584761949420357387767) }, + { SC_(47586.44140625), SC_(449.601318359375), SC_(0.8350250720977783203125), SC_(0.991068540041441912097262247591298646634689622084322381265146267389262593636758372881584236495471144), SC_(0.9902128202322935003322179801024200539383721353949509588886218581332892691173675520852273971036626807) }, + { SC_(47823.16796875), SC_(2585.581787109375), SC_(0.12707412242889404296875), SC_(0.9475855628064392308934119764081037663591417461625585179579692703761765940705446356537552931307785296), SC_(0.9498262296736527690283460228379157366290195261516900092008511677486094003215677920871759451459137479) }, + { SC_(48035.7734375), SC_(0.4999766315449960529804229736328125e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(48295.36328125), SC_(0.0023451945744454860687255859375), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999999999999999999944416540095785386133815836493833656190673175263062887727480278753123414027923) }, + { SC_(48850.35546875), SC_(289555.46875), SC_(0.1355634629726409912109375), SC_(0.1436896602847792941829793219057274879174071260178716669252619997183682682963989706474354539870217676), SC_(0.1450193512591912767897945693872238861494143682347314275664079502951039611517704799792843742072492975) }, + { SC_(49373.98046875), SC_(222.311065673828125), SC_(0.9688708782196044921875), SC_(0.996060100287803512550025100602986984317677232975832977153593945112190919810925374514175605667002065), SC_(0.9949420970976593386246675058260955550159345219304692751487920548769516958051751691461275916246921115) }, + { SC_(49444.171875), SC_(4.673758029937744140625), SC_(0.81474220752716064453125), SC_(0.9999444692764372013756984706482328527285193393332804072651601107578118687562333519089665319977683821), SC_(0.9998690712429253254117083874667180999168901118078400631630076404524782005711290014515598781762582683) }, + { SC_(49532.08984375), SC_(1899.7972412109375), SC_(0.221111953258514404296875), SC_(0.9624253022541134058331176643162512543643243176329651913613205466349437767586494749570107038007615207), SC_(0.9637033723130234784137320920928810064845654436611429071135587491711974167034758015677786783859126881) }, + { SC_(49565.796875), SC_(27.7097911834716796875), SC_(0.12707412242889404296875), SC_(0.9993189296731291684182562248170714280486957502164574679389321395638789426972619162270269691657272291), SC_(0.9995595572386466784169117416190848013525366911642870650317096099709918477445175748965708102494166035) }, + { SC_(49846.2421875), SC_(49663.23828125), SC_(0.9688708782196044921875), SC_(0.5038747058288205703458594633484809176322109967367170741796168947119807997792607082703018158039617706), SC_(0.4979643236735360395311069653797719393864927621217732396557141676295241565044114535503680047634411135) }, + { SC_(49880.1328125), SC_(0.00046944446512497961521148681640625), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(103920.8984375), SC_(0.111212420961237512528896331787109375e-4), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(112769.0546875), SC_(421.523895263671875), SC_(0.905801355838775634765625), SC_(0.9965119017224594587353904055012860767240172885312736672582611278114879050633926663306760384838564335), SC_(0.9960357918240363601926777691159593470030344325056596962986442199671140384351208137512846453388556495) }, + { SC_(116919.109375), SC_(234197.234375), SC_(0.8350250720977783203125), SC_(0.3337673241201914076766997314324820311834837998500225056897011916030350119635803230258061191974462806), SC_(0.3322176451850992380517468959022803801344084458626855477357519041564833136937998064149550567528599943) }, + { SC_(117063.9375), SC_(0.4761638047057203948497772216796875e-4), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(117666.234375), SC_(0.003791221417486667633056640625), SC_(0.905801355838775634765625), SC_(1), SC_(0.9999999999999999777810078112355696655567034275388998958567750717497210046730218393487472432509683544) }, + { SC_(119021.8671875), SC_(1724.5032958984375), SC_(0.8350250720977783203125), SC_(0.9860507265241485852809692677018381911505954860044114875092190090857418249631115054257361077122488509), SC_(0.9853854862386588175737032132804640836485107443013620580685687055323309032494098568700781187948818355) }, + { SC_(121846.6484375), SC_(0.0102547816932201385498046875), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999997816119974167581833329480964092693981528223395845190277350758167334728350151633515575899370106) }, + { SC_(139635.859375), SC_(0.00359443644993007183074951171875), SC_(0.8350250720977783203125), SC_(1), SC_(0.9999999999999999999999999993365552345303433124959756352767325170545841418837879792392616177557525898) }, + { SC_(139638.109375), SC_(0.00364904291927814483642578125), SC_(0.221111953258514404296875), SC_(0.9999999999999999999999999999999999926725534639887379885563532897092524752802152226014757335573964422), SC_(1) }, + { SC_(140613.5625), SC_(0.04485572874546051025390625), SC_(0.905801355838775634765625), SC_(0.9999999999999999999999999999444559076204964799966644029997969834255970193944787878453335474819915623), SC_(0.9999995135204576606875885903417716354557560027487976268723959958197330759335253437122989830896741002) }, + { SC_(143155.5625), SC_(0.00386732374317944049835205078125), SC_(0.12707412242889404296875), SC_(0.9999999999999999999978471674518793480825912471601106900793896195328068282272583089748520058127113945), SC_(1) }, + { SC_(149909.609375), SC_(2.0033237934112548828125), SC_(0.632396042346954345703125), SC_(0.9999914137992328346821946496484917052823804457572554313151069612836902006288195971760236074462225983), SC_(0.9999856512924273917829175939544787544475060864292357858966719298716026234493217442093234683938808734) }, + { SC_(155018.640625), SC_(0.27750885486602783203125), SC_(0.8350250720977783203125), SC_(0.999999993284749007784061165791983168463034029960619556018971595921617074325697424809685825074407882), SC_(0.9999966353737324607550401905699725040966863838162795984086051055309327405526441079231402131724087528) }, + { SC_(155105.15625), SC_(27467.107421875), SC_(0.632396042346954345703125), SC_(0.8498389779165838399008439544458281639462850303258200593465321416415839180705835244180000245242776803), SC_(0.8492730286025777160870736617840227581802517362868892184640121550395037673944593018907779719286405155) }, + { SC_(155440.6875), SC_(25353.65625), SC_(0.8350250720977783203125), SC_(0.8605608508272453326919162281803009458964435926629729642075043488410977588698636990055939506068745736), SC_(0.8589697106307119694948068903015924955978051443872555211349185487657041009532372813684201181856156157) }, + { SC_(170849.5), SC_(0.00046143750660121440887451171875), SC_(0.8350250720977783203125), SC_(1), SC_(1) }, + { SC_(171593), SC_(0.0390150845050811767578125), SC_(0.1355634629726409912109375), SC_(0.9999999182016170028240816694051743438151083807234463589353814909657842971204349332542837795398521521), SC_(0.9999999999999999999999999998075361964567606002504374045539705257620976592510057404191607415798915556) }, + { SC_(172891), SC_(0.00412352383136749267578125), SC_(0.1355634629726409912109375), SC_(0.9999999999999999999985205512390218686672347331794721272946689059236635790595486234467824836403033921), SC_(1) }, + { SC_(175682.734375), SC_(342375.09375), SC_(0.913384497165679931640625), SC_(0.340013936624143128319895411531998761580827778695574140363458760728414027388872466998401452636589358), SC_(0.3382224165947537986221531432052803196173801492237972008105082692829726202721619261235531463577436817) }, + { SC_(177298.140625), SC_(0.00180856394581496715545654296875), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(184058.265625), SC_(0.0481239259243011474609375), SC_(0.3082362115383148193359375), SC_(0.999999998501517340243485593446017630273734258672829936958893520517353286866834220978927598070568492), SC_(0.9999999999999999240851006172778819033999127458719995011554737113105041659572358055390757693407381361) }, + { SC_(189710.828125), SC_(0.0004468346596695482730865478515625), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(192153.234375), SC_(4460.083984375), SC_(0.1355634629726409912109375), SC_(0.9769455901820997348887345253995695634315020528634661195458979946325701045306222537295506366491513153), SC_(0.977684633471454951983963188227637546510955719546415582110936101356641468061045330575747986530851934) }, + { SC_(194577.984375), SC_(0.00036247042589820921421051025390625), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(196362), SC_(2509.231201171875), SC_(0.9688708782196044921875), SC_(0.9878452201746761743119076764636648709456201117103593672290496802483505008846898883385158868382497144), SC_(0.9869119557978296851475581119212898738357153986845979687042773361906845558079139190267938505956241518) }, + { SC_(207621.90625), SC_(0.00042250819387845695018768310546875), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(212600.609375), SC_(3789.47216796875), SC_(0.12707412242889404296875), SC_(0.9821657909987468226785395863718408026609070451565141974272191028237381019176307784294718437570252797), SC_(0.9828088626022653884585911511818784576158744016105863662966508613099335997827668867848072139364768017) }, + { SC_(212603.09375), SC_(20133.15625), SC_(0.221111953258514404296875), SC_(0.9130463974253991664774997349599327264165252882457909747242186532969835771927123908138456111976741852), SC_(0.913941934917976692974805125302548647312473409103874024240118162284227114270874117238543980497192635) }, + { SC_(224776.03125), SC_(0.0415735431015491485595703125), SC_(0.12707412242889404296875), SC_(0.9999998995913399708856361813541390020619941800643644832192671882180852331755265265071082435560145536), SC_(0.9999999999999999999999999992733385493359408068152297661110045529020148351227806357439643861335921027) }, + { SC_(228984.171875), SC_(46.157588958740234375), SC_(0.1355634629726409912109375), SC_(0.9997656304760950420416253802765211325948088414661384295157980938690116712314717402720256608597245666), SC_(0.9998306850793302994970813221924868257991851892171206046458118909006813485791755529306435751135685643) }, + { SC_(231101.984375), SC_(155.261932373046875), SC_(0.3082362115383148193359375), SC_(0.9993027508076373421649453717093829893822054380130710149391831442233904939026162299839185040244491965), SC_(0.9993566411270408849422721364805008843713173524271877967076418351987228629610004411328150327316160072) }, + { SC_(232169.4375), SC_(16.358287811279296875), SC_(0.81474220752716064453125), SC_(0.9999452622842397308842685753075899874480665950296524222820949462159277531291076657075033487575630072), SC_(0.9999143938643164734976139388620664182623111458572315902955918988662200085311644729084861518120847062) }, + { SC_(235582.25), SC_(0.011084310710430145263671875), SC_(0.221111953258514404296875), SC_(0.9999999999999996107287073970621023909857554307873106358297121294251281498439342238220263907913423253), SC_(0.9999999999999999999999999999999999999999999999999999999999999999820693111308978763979694057064188765) }, + { SC_(237315.15625), SC_(3.7124271392822265625), SC_(0.221111953258514404296875), SC_(0.9999789787267057557766914863819224387810232796496451854719352094722226220083881249875550763904392129), SC_(0.9999908524584306595382023347251859817291538519449250126093167551316022228697205653670043680473604581) }, + { SC_(239513.921875), SC_(3236.540771484375), SC_(0.905801355838775634765625), SC_(0.9869724192881483164478744121105871165809521230136957948904152497407930030324079501946282460566332266), SC_(0.9863600504839974472081232225842362448757397669415898902701881305282862113836377583359721352729806264) }, + { SC_(241256.71875), SC_(417787.0625), SC_(0.3082362115383148193359375), SC_(0.3657735440169616223240082140700858928286006610555350132758107704156143829189997677472060259320340028), SC_(0.3663679577337345984159655532071779161495068663145800178112243526529500679582032200941754481623143888) }, + { SC_(242747.59375), SC_(307.633697509765625), SC_(0.913384497165679931640625), SC_(0.9988313062957533436629121919595039150735167510393667119061821612163184548160046050249344420767727482), SC_(0.9986349661144502879179450463301878277619553005078880262922536278571834139764410204284551391908608044) }, + { SC_(244254.640625), SC_(17.7450542449951171875), SC_(0.905801355838775634765625), SC_(0.9999488559903647260822024603409214571534042530795749453223844339905093520000315114802403234313804953), SC_(0.9999038656165488302247866568649218503689202342955798456802206969405091711536692413285634303572226707) }, + { SC_(246462.734375), SC_(43952.4453125), SC_(0.913384497165679931640625), SC_(0.8495615234988768587314974808379017809833639684408943041122961712267152787999608825530584148354502445), SC_(0.8477501388013102534832821057561799902463247841737113576394040469509251577841751733140391127470593812) }, + { SC_(251274.4375), SC_(0.1303907993133179843425750732421875e-4), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(256001.953125), SC_(0.3102722465991973876953125), SC_(0.905801355838775634765625), SC_(0.9999999986464354469100179028407483998325247675518109088009821215587631250444329710663753381941355475), SC_(0.9999962821163775111325631047242798699750500491603840915344880346168446856205572406527696829445868429) }, + { SC_(256341.890625), SC_(0.045557327568531036376953125), SC_(0.913384497165679931640625), SC_(0.9999999999999999999999999999891292986980736393139988565434066533712068748581544688377985546852021828), SC_(0.9999996627510044198684252628207635802553835109279966703832369079462765923451069354668098771565646159) }, + { SC_(259312.890625), SC_(4.09720611572265625), SC_(0.913384497165679931640625), SC_(0.9999933728327253819523736175855690436181603157601328865700587729902475643940668078696008473024396546), SC_(0.9999728493464064212546482602190478683755759499841234874581272818010475319666596735498989832788227078) }, + { SC_(265560.28125), SC_(14.26784992218017578125), SC_(0.9688708782196044921875), SC_(0.9999695203151324801496889168698657840440823752450849636861085206814999723814629485272589372081787985), SC_(0.9999168453220045076703919866166687121990298424772966112371633665480225561878708598211707128092579087) }, + { SC_(272688.46875), SC_(0.4279204308986663818359375), SC_(0.1355634629726409912109375), SC_(0.9999964490603117015277408911098898863242691396685434407404464843381585134408347117268344326708348559), SC_(0.9999999739577675403000030481279829247411707308448783459832418910491440761913519031172451006697835748) }, + { SC_(279777.4375), SC_(110919.8125), SC_(0.632396042346954345703125), SC_(0.716342084516146773465565278863366032291361419987414019745211704773374969730032526936615582956139819), SC_(0.715854149711822101723646474977987731719100676984964565981257186067687086607452051273790812391420848) }, + { SC_(280536.21875), SC_(1998.197021484375), SC_(0.913384497165679931640625), SC_(0.9931412974388037743560987947193559393525692315425893757085509254546053897290018110626117904868654813), SC_(0.9927119098452319617332869467686668658411022821497333019178203639293120603370703313322169211268108039) }, + { SC_(290996.875), SC_(0.00046665043919347226619720458984375), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(294260.65625), SC_(0.393247187137603759765625), SC_(0.632396042346954345703125), SC_(0.9999997943449249955171938080905318288945050229620336163350673164421335892120652904146355762536189054), SC_(0.9999990515179070051184990966509393368455909297401987792097603947834106333630608018075236097300339701) }, + { SC_(295837.75), SC_(414044.375), SC_(0.1355634629726409912109375), SC_(0.4160981457882858761512789972345990613612548998350061709883163850335988514645095637327134776879902863), SC_(0.4173860378392507197480139851689912868715414340645543869066327228694663375695492894693529290056351595) }, + { SC_(295905.53125), SC_(0.0040032281540334224700927734375), SC_(0.3082362115383148193359375), SC_(0.9999999999999999999999999999999999999999999997998694799618628992869833672518405022823542668460381155), SC_(1) }, + { SC_(296938.03125), SC_(220.9876708984375), SC_(0.12707412242889404296875), SC_(0.9991990113494480392179599700921853876238508570671618729024789001119929066186937154552802822703393878), SC_(0.9993129796215183216851691971028047934663527607383889624349329968629574647063342294846239703511433874) }, + { SC_(300513.1875), SC_(0.37814271450042724609375), SC_(0.12707412242889404296875), SC_(0.9999969782050486769652136994182234485275829861644683583528927638148961341072493652861727078400340733), SC_(0.9999999895708495631574122655332682099829657430546711826259770208138190516103170397971109828049670558) }, + { SC_(301512.3125), SC_(290772.15625), SC_(0.12707412242889404296875), SC_(0.5083259803742953085834127737217466902961187303754053062285802798488588125564488677103330951557012566), SC_(0.5098074558133211331819844504160880659968413691948379043781371606651571268126192357505538982067718515) }, + { SC_(304061), SC_(0.015454678796231746673583984375), SC_(0.632396042346954345703125), SC_(0.9999999999999999999999999999999998588694073477108553987691148771575638522343970357448059014294547744), SC_(0.9999999999999999997518149599484678853861351970711480872190904043129582228626516270210032821150771143) }, + { SC_(319723.40625), SC_(20.909183502197265625), SC_(0.632396042346954345703125), SC_(0.9999403190148524254379175206332931464568382187753583327271647261012396055662443510864446020246204106), SC_(0.9999307346650039643327092376540097242418342939548879360522811481721099641992421239211049628683949737) }, + { SC_(320904.625), SC_(29.05339813232421875), SC_(0.221111953258514404296875), SC_(0.9998970697135290506106910317791569394420207485233153261768791709260527712812091966124554337341856922), SC_(0.9999227224043228154788932822721198527773973544680362689282215618990551014847660383597982064957627464) }, + { SC_(322918.0625), SC_(0.00355008454062044620513916015625), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999999999856029413730739658471968005363827010980266428532258411056823404064838535263144910335) }, + { SC_(335283.75), SC_(21810.169921875), SC_(0.905801355838775634765625), SC_(0.9394496604431915054633823576643046372095015323082582291941274835953390365048842329396443282771327712), SC_(0.9383954534267339227937623599325170174723074700810661239028890744439637253418172617679988893235546671) }, + { SC_(336243.46875), SC_(3128.056640625), SC_(0.632396042346954345703125), SC_(0.9908391258666329629575919260109096960776639987853278744200427115196247914490708644556950279608143322), SC_(0.9907281734000043994848829737411187816279140724177573954765961998473267555607767196804424190227689015) }, + { SC_(347334.96875), SC_(4.06880474090576171875), SC_(0.1355634629726409912109375), SC_(0.9999819430001573210462266999645956158338753994331140631758118031222196089862793225439977383551853686), SC_(0.9999942182040833300599726446437265377188626217466152537681121397141772637474456654852569680911946187) }, + { SC_(347788.625), SC_(37.86353302001953125), SC_(0.8350250720977783203125), SC_(0.9999083478012565433833809011745674628916746285081235370835760820113851611151622512323345259860401079), SC_(0.999874033425078797325574848417487602053549452769969921327235413212187855653939340754471112166411762) }, + { SC_(349486.5625), SC_(0.0004298138082958757877349853515625), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(349829.1875), SC_(4556.69775390625), SC_(0.3082362115383148193359375), SC_(0.9870478912232100615407377518631041552521442157832159313239559510707949083985358116216378938821573168), SC_(0.987237458988263763824796001314439127833337805579138708121609401353551685489902810913204121753537649) }, + { SC_(351569.59375), SC_(0.0152290202677249908447265625), SC_(0.8350250720977783203125), SC_(0.999999999999999999999999999999999999999999999999999999999337544568970008123871671335163903652543046), SC_(0.9999999999883271225037517008304526269270726376997179714491716399065912306255750135455436453416100986) }, + { SC_(358590.96875), SC_(1.7338650226593017578125), SC_(0.8350250720977783203125), SC_(0.9999984263877108713328668060789151034168311888715896859320436867070281866451651074342505357980219349), SC_(0.9999919699128261352873137396136389773581712720757800125687385035676124891929768684608290888359673284) }, + { SC_(364175.1875), SC_(2293.671875), SC_(0.81474220752716064453125), SC_(0.9938579874881970190241475981159980550693665900318741942458026198431159582210345561229830938645892546), SC_(0.9936246778145682588482032193112985156800909163568667937129102186549294511840416794388579946743714535) }, + { SC_(365061.53125), SC_(135.407379150390625), SC_(0.9688708782196044921875), SC_(0.9996863176794632586706422604218158190159974256313279236968321237643660859561633874105624478272628204), SC_(0.9995676095027363370130978096808221600255355631598741377718600093954269785487207871592101820797243698) }, + { SC_(366848.125), SC_(489622.875), SC_(0.9688708782196044921875), SC_(0.4293222628169663745558171295278155001926392610415034796095972460996581776097861096673087920357679668), SC_(0.4273284429743166615133863824717356268949243188239141619747315979964200770053566481771477282066549481) }, + { SC_(369212.46875), SC_(0.00043601836659945547580718994140625), SC_(0.221111953258514404296875), SC_(1), SC_(1) }, + { SC_(377515.0625), SC_(0.25923203793354332447052001953125e-4), SC_(0.1355634629726409912109375), SC_(1), SC_(1) }, + { SC_(377897.28125), SC_(217.7733001708984375), SC_(0.1355634629726409912109375), SC_(0.9993809642265976154383717381207419114470415044406894651878153345176886420431903229202206000880886718), SC_(0.9994667749451229173897338105032212922523517596117925674539780226161151167199171208323521362627770887) }, + { SC_(381735.84375), SC_(0.1554123082314617931842803955078125e-4), SC_(0.913384497165679931640625), SC_(1), SC_(1) }, + { SC_(384451.40625), SC_(2821.419677734375), SC_(0.221111953258514404296875), SC_(0.9926099871896123078684723066386032849974032581108770521411434971450896544796730143746189803506470856), SC_(0.9928199991963109071287575105571708040566262619163273683406366985829681958538001670553781136101988687) }, + { SC_(385429.59375), SC_(3.3841388225555419921875), SC_(0.12707412242889404296875), SC_(0.9999857710862316626308886200674055735068361048994887325460030286049763167563594270764165414228363672), SC_(0.9999961463101950077215211361299610147215227526502164437034753993067657292616156855343024049275342271) }, + { SC_(386018), SC_(14093.7041015625), SC_(0.12707412242889404296875), SC_(0.9644430127269426619183736034929423778475169305652455107070839929930622993276460689304581805792536094), SC_(0.9651076751275607043680541800650118221087969621585617130912614877060171578558867462369261333543364891) }, + { SC_(391805.21875), SC_(0.3055977504118345677852630615234375e-4), SC_(0.9688708782196044921875), SC_(1), SC_(1) }, + { SC_(392234.125), SC_(2.3254187107086181640625), SC_(0.81474220752716064453125), SC_(0.9999974485003056966903937402928194859244134156329839210891209266939469887376578411857915820268130878), SC_(0.9999910059274056877196675524405017475977672250931933758535228907148186849815921846049106923261807746) }, + { SC_(392420.34375), SC_(26721.41796875), SC_(0.3082362115383148193359375), SC_(0.9360588166131809414115448707596221147145947161943021966694623902354292754826644227343641185174034654), SC_(0.9364368278909332485238823067765771268369372557921270083256148767582934322381215597399727535283351517) }, + { SC_(395628.875), SC_(169.021026611328125), SC_(0.81474220752716064453125), SC_(0.9996025064181200881100206422611691098034252814466028469788567254658356713206042929145292670546196381), SC_(0.99954374915820356500667666460563470033117280258708880946045071662016129765225947981489908197799767) }, + { SC_(399928.875), SC_(2.3772995471954345703125), SC_(0.9688708782196044921875), SC_(0.999998973529290397777010867861541796446553860070978813445077322099914527527265485681176970566917336), SC_(0.9999851449804766483443475395998114534937065656196947448822622679434789040810220786478170917758051126) }, + { SC_(402603.8125), SC_(15.56592464447021484375), SC_(0.913384497165679931640625), SC_(0.9999738551272416142186841753240307283354384922856722576418772212695756736954226385611368514921848777), SC_(0.9999474093547476264441382684753736909215910603608318473764367722720243147519806449667204560121132854) }, + { SC_(406768.65625), SC_(0.00042969666537828743457794189453125), SC_(0.913384497165679931640625), SC_(1), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999626) }, + { SC_(408381.65625), SC_(0.456345951533876359462738037109375e-4), SC_(0.81474220752716064453125), SC_(1), SC_(1) }, + { SC_(408998), SC_(0.0042365207336843013763427734375), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999992103886391729073177905457547792850375379996834483515277700339789073753215708472808258258179) }, + { SC_(413148.84375), SC_(0.4799632370122708380222320556640625e-4), SC_(0.12707412242889404296875), SC_(1), SC_(1) }, + { SC_(422703.84375), SC_(15069.125), SC_(0.9688708782196044921875), SC_(0.9660897392982058868656227001682921112419545706033093751961665865899461039486514250827102903147922631), SC_(0.965062274905023631733677391034079251654464055944302576321996680797937852368094477775017032828016675) }, + { SC_(424641.03125), SC_(0.2840512692928314208984375), SC_(0.3082362115383148193359375), SC_(0.9999994750636549669670606473061109603761635212061967274985478848332176734538791017721257779548027605), SC_(0.9999999739814327156712234926962831943788993494932233013963790111365912453400671308543415084742014015) }, + { SC_(431857.34375), SC_(0.000211423015571199357509613037109375), SC_(0.905801355838775634765625), SC_(1), SC_(1) }, + { SC_(433260.8125), SC_(3.3808853626251220703125), SC_(0.905801355838775634765625), SC_(0.9999969819317488587881461792850888475768718203652823126667535332673193874620970162529189308649544396), SC_(0.9999862985752257128652103590400974817457299983496624630313157549699524585549896935023931532699212086) }, + { SC_(434088.21875), SC_(21.81499481201171875), SC_(0.12707412242889404296875), SC_(0.9999373373312823166558666370134409611695804442709662922918704832772088187585446175690336698789214258), SC_(0.9999616965351012448240568108749462155945157055968478012559160622065331568396155867317792166746127338) }, + { SC_(434689.125), SC_(39291.4765625), SC_(0.81474220752716064453125), SC_(0.917461959010412182685915555568393955513643969597894372657100531180768279837135956151775654776489289), SC_(0.9167446673468778375962374922169420664609807836207411106316537831936914893386205048529899697184531553) }, + { SC_(435121.25), SC_(397.58978271484375), SC_(0.632396042346954345703125), SC_(0.9991032356687607663170758081994663804545219752851748934242218706100390785290407790519388112949974116), SC_(0.9990722960117656720982176725927203880876672401511674631927254651106841735347495126259465844742175537) }, + { SC_(437285.3125), SC_(0.2788266647257842123508453369140625e-4), SC_(0.3082362115383148193359375), SC_(1), SC_(1) }, + { SC_(442472.9375), SC_(49476.66015625), SC_(0.1355634629726409912109375), SC_(0.8989553759462725154195912825680002145390824453023265617169936644862701649915658110052894084041830153), SC_(0.8998991547281331197912897937898208409760268200326740982917502926455633491439458667387132339684255894) }, + { SC_(450819.5), SC_(499216.46875), SC_(0.221111953258514404296875), SC_(0.4741351844340727004467290920964798805530388223292311537088183157505857155369303090852906203317270319), SC_(0.4749225520632804503831707896293591563564510578733056247136808234148925259976983491440388496735532279) }, + { SC_(457779.125), SC_(0.326781928539276123046875), SC_(0.81474220752716064453125), SC_(0.9999999910727029325617530685760277558694771909650151522235239619750731721035596554760606019094289709), SC_(0.9999987858178995610219544528459401488999341746160983444951291984610165296616383478160281021221648139) }, + { SC_(458356.625), SC_(0.00327513157390058040618896484375), SC_(0.81474220752716064453125), SC_(1), SC_(0.9999999999999999999999999999999991663668185381070411966512131706847600000660648405081952061008667392) }, + { SC_(462545.71875), SC_(0.01835658587515354156494140625), SC_(0.81474220752716064453125), SC_(0.9999999999999999999999999999999999999999999998408559003203816496751827616995900078085841802845788018), SC_(0.9999999999824865494095113121276887961620751733866931423886562603084660496027804389884068533626778463) }, + { SC_(466997.53125), SC_(0.356361567974090576171875), SC_(0.9688708782196044921875), SC_(0.999999999908585136073218599560639574585679002817051921225365716235382799011868956412143385957374377), SC_(0.9999959050920261602210872695621046203124487413396593115588810222179555364832748299668392611148334214) }, + { SC_(468932.8125), SC_(0.182366857188753783702850341796875e-4), SC_(0.632396042346954345703125), SC_(1), SC_(1) }, + { SC_(470942.5), SC_(0.326362073421478271484375), SC_(0.913384497165679931640625), SC_(0.9999999991634295790864615713201865731290532042979576143167684474434066293110330308591586719592525982), SC_(0.9999977662722746820150898269173378866588151731047916028888067446958373170001483823516884123613851415) }, + { SC_(473791.3125), SC_(0.00037331905332393944263458251953125), SC_(0.9688708782196044921875), SC_(1), SC_(0.9999999999999999999999999999999999999999998073822602388688624653696078183429191536061547769537964575) }, + { SC_(474410.90625), SC_(1.53685867786407470703125), SC_(0.3082362115383148193359375), SC_(0.9999961129062931113810979684551783321474081584789778624951890966223338422649810562505451410537303544), SC_(0.999998403265561481452323439582435790606202798849405347541950528356589895392491922180143509579003441) }, + { SC_(481669.8125), SC_(360.35894775390625), SC_(0.8350250720977783203125), SC_(0.9992907831812886773473659863167020097660580060484200865493826163108597351525902267283025051442100653), SC_(0.999214115270590007552130187756931575538839868062918740780889455554092188930046874164289191809734251) }, + { SC_(485412.125), SC_(483725.21875), SC_(0.81474220752716064453125), SC_(0.5013251403632957657097180440139352644280668716512067495231709003767868348011456320309173169758632819), SC_(0.5004154864846086974762398748354340355121671666386661965862493622607256259777758150232988196487155074) }, + { SC_(489093.59375), SC_(101.60869598388671875), SC_(0.221111953258514404296875), SC_(0.9997767680266260123110682903130838658146825013373285034001164702953644249742530005306208421454781091), SC_(0.999808377593128038314593193233001644747928940615604047013939298656600726304242669404403355730826352) }, + { SC_(489183.34375), SC_(118808.328125), SC_(0.905801355838775634765625), SC_(0.8052575261090612610637084789843685951634273246290044181560593884142556001108220633456497594556682558), SC_(0.8039197640541228765389792372480736779551687141239257074087097158639306091733737153424379109689825148) }, + { SC_(491651.625), SC_(32.955524444580078125), SC_(0.3082362115383148193359375), SC_(0.9999276667129839450708195109501969031021375557304337628863198830422811974212658774808113659981096958), SC_(0.9999392952515020529866132904758764722582237171318891514012201689689695587113485590174396303118997795) }, + { SC_(499024.09375), SC_(0.3617647588253021240234375), SC_(0.221111953258514404296875), SC_(0.9999989677510921954271873521993859181834023852192245015532772531114512443689750755333329075681050925), SC_(0.9999999774076213040954883510429323955048191846373634062085510975273422302416340711527143505910773273) } + } }; +#undef SC_ + diff --git a/test/ibeta_inva_data.ipp b/test/ibeta_inva_data.ipp new file mode 100644 index 000000000..05a6bd211 --- /dev/null +++ b/test/ibeta_inva_data.ipp @@ -0,0 +1,1110 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1100> ibeta_inva_data = { { + { SC_(0.101913392427377402782440185546875e-4), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(0.6498233713152427462579302903941895526823485861809005407005756658138299437345439685916818979079350952e-4), SC_(0.1598220360006443400909761969445329244603859759388130816641624923434214075962489978723834186220509792e-5), SC_(0.1598250823507423266003361933591577902014719110010440833489018043541995851576985396009647692344594598e-5), SC_(0.6499023539055942142435327607856798948132754954188633069136984730655318067141056849740949064680308213e-4) }, + { SC_(0.1127331415773369371891021728515625e-4), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(0.3971461302443922423613753292972913694448775540766244520233346130148330830638824141461619735572445997e-4), SC_(0.3200361118082439458200937030865347915510238320387461167764804252841304593011303390960681217527273982e-5), SC_(0.3200210889570744035937464686925692217326089474042347373846591880760057034684133216576634448402269381e-5), SC_(0.3970804661143976120973144952058224085647966940391220340079248912116191892887943249201895859632245494e-4) }, + { SC_(0.113778432933031581342220306396484375e-4), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(0.1078981970343159393325856300516135956140969598440175633458632674725240047510167692675710778553847126e-5), SC_(0.0001200181935703441995121934466228033111754654801609287621930678605774967528649020200620769888673021826), SC_(0.0001199468547533371496891932800417754246696194915133685876058567801242730706768275318621189458708399548), SC_(0.1078921129179782267266584693661729948023960221141040813461658037144034851960955828005953048025067861e-5) }, + { SC_(0.1142846667789854109287261962890625e-4), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(0.4025899796795053338948240609285498211472682534957119282666669306536310006800286817936757572860013938e-4), SC_(0.3244356766903463719306913859577321911415693698681174694348315965945146265497858043549761761998515535e-5), SC_(0.3244305116814100828743022380284672509844786339827561909255756253408557410865952781989509881881736442e-5), SC_(0.402567403617356621571805857579531660366440062441234650794612972668478828468673367856838957420528343e-4) }, + { SC_(0.1145765054388903081417083740234375e-4), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(0.1191571750545867392537313798907431542344344095879200999308344375910813077398702631095528359741186503e-5), SC_(0.0001102067845592199693917010458194599552572103205410984424051016635846792835186985601306422395955097474), SC_(0.0001101436549179224812644413611401269090813984984476836579744033601646714018004549966518797920528872344), SC_(0.1191500741959144922072835433076419034115688201288730002114876689721036040236828451248448892509304819e-5) }, + { SC_(0.1184685606858693063259124755859375e-4), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(0.2340623363191603898370775227750571590200502357875341269550358518828489422976009146847049767670005029e-5), SC_(0.5997016652255219747886060771729383753308007448753449600990778600678820278172428956506474372626790804e-4), SC_(0.5995620164847073584050553181224642561226948778199420970812017399765536897356590939928613936314653308e-4), SC_(0.234051566405018175204269278558069354736428629628287051287220082664267809248151547790462782021755034e-5) }, + { SC_(0.12048656572005711495876312255859375e-4), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(0.2739744250951670275113298279765201756581440367980696202896543991551475858455303285016122111531160698e-5), SC_(0.5299670821761171764372900056596763966402488146854288536412386951147420756371449036647596214642744172e-4), SC_(0.5298047274004390572318749610229599999656628731752066034988441477464604972189618031020718116326084136e-4), SC_(0.2739553374006434941292646031005528692950850835558781259804553220755863034131702899478155309841849826e-5) }, + { SC_(0.13885271982871927320957183837890625e-4), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(0.1316761416595919370130125478806042690058228402723744932513555575390264383428267099674470556162378215e-5), SC_(0.0001464621138187770636368288091715451405788452187762438244322570896511463096988914144097451646517393708), SC_(0.0001463859922463820577136477421662789627417973019629595681808688398863611174765967906151751169713754156), SC_(0.1316696495791707946163884336944625169957551861831120145642154917636213029136344378330816865851253778e-5) }, + { SC_(0.139016165121574886143207550048828125e-4), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(0.9547673292113491262034069793405709241018001446440966950759890317490878173052656894523453165695624926e-4), SC_(0.2023635278368965262888447203152206885757241398427865002786378633252671147811944223712212058587588226e-5), SC_(0.2023754690333906934784743578875515210120065850224750194606142612432969845718622103368626791471648456e-5), SC_(0.9551543863643827044064851822439522331538353359186806068477116827790284692824136317548192394272389844e-4) }, + { SC_(0.143944707815535366535186767578125e-4), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(0.3272972153593272792294315950670347359831261283602618957436021027450675786174856995623862264110326696e-5), SC_(0.632990141303189719133353279896837410679405196953125322609425221598638065093292166662050411772898045e-4), SC_(0.6331140087531343209152630672946940443241052431215532098504247271212384333561961538316669124336267509e-4), SC_(0.3273117781877539280798489020583032342225811653678924427425569001005416493844068702682445156689086415e-5) }, + { SC_(0.14498580640065483748912811279296875e-4), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(0.3253742212386968781612656316620215840333726254656645874658994387373581238578087455806150295721983642e-4), SC_(0.6460170263304768607166472283634580938080587045554068917515889569677695568527422292732443965595733546e-5), SC_(0.6460389168964756781185792834191710616285016843656138451140030019016010603469220070557969454976470937e-5), SC_(0.3253989653200702274919661149423446286389104607980329666927131807017854240337258963755040377916930538e-4) }, + { SC_(0.150073101394809782505035400390625e-4), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(0.3368409504251561290464334473768649337939776230437629072347636411186828106568821467963048055712919614e-4), SC_(0.6687287839256708751603744004615321146312284138895378752133829995735298947731901687375615081162665865e-5), SC_(0.6686631150723913246638218241012310033772813288325333543118501948241656165404065320414326799591238772e-5), SC_(0.3367667217741028633923677261223016046989181571572493614821457869552722619328990219221837086365139157e-4) }, + { SC_(0.150358655446325428783893585205078125e-4), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(0.9590303934205324631565257968984418682325537068446175465533121391485224886714546031448674308598768754e-4), SC_(0.2358064976440925144147073399479359701859791978119588953669585750075394212334040246114720302574396224e-5), SC_(0.2357871747378977311589396746549307159106310325274719313965661500873802598080130111071124153255736699e-5), SC_(0.9585294284458174387238014758587531939522744711214339460244053261369492265424734665782500243897903548e-4) }, + { SC_(0.150794721776037476956844329833984375e-4), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(0.87651069540304628423081918011260974905033687777361892246598630128014121055416273931319481920790515e-5), SC_(0.259394507865675995744762355153851792156958953609180785329566058577092563181989551106130502682548618e-4), SC_(0.2594355203373817883698461757521940058816181951323031229743551991870650806867128742063568243515966938e-4), SC_(0.8765912509183101407045558460058661316022689816530705908193566381502601877100638232366285667845801709e-5) }, + { SC_(0.15419080227729864418506622314453125e-4), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(0.9830005405914737446060892363685712552152782311310204370882529948507189082695976623585226251217629048e-4), SC_(0.2417982090725863219268402865263656889157071672332778168735691070344962656880642022791761256750260214e-5), SC_(0.2418148323498376774634162885245152923095533505622569142619373610219681319883028827406881417407724923e-5), SC_(0.9834315167538787468882315193663229818124191644081977735590761688303094176815343087199599992309813292e-4) }, + { SC_(0.15675454051233828067779541015625e-4), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(0.0001076705852659451793853865643565345351084475810373544400849947491064482183831269674483630442891227277), SC_(0.2281884068014367922411896063517274399583263910072808042169062857538812657905414478059107182988935904e-5), SC_(0.2281950317358702456902944257528144442000952715480241963747411206463352849834574570250349766756506247e-5), SC_(0.0001076920590890716618082136667711265533451107466155867551262184847803119057614262957145136457318713641) }, + { SC_(0.15964558770065195858478546142578125e-4), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(0.1660278783926417628556777160282997881556780127471291513930816808973189010497802355733599800163014022e-5), SC_(0.0001535552230132099996415866651208432663272262371647920595961863118674016207241551750339476731435767165), SC_(0.0001534708524536018031472228456674893374691254721961681088171006888239037200588582248419618310759235827), SC_(0.1660183881247630944760800805383653749744450292432029092339200275943746932481995662921241116809458963e-5) }, + { SC_(0.16304524251609109342098236083984375e-4), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(0.0001119845795811380561590323350505600731783209229321913051109174418673719036122152799154205160023158248), SC_(0.2373436779571213434043230033533137782270002877418358817665203764904913082412060259067142704435236263e-5), SC_(0.237354842387939075315235443146445014249627692147638075678416887622432328868767915597108680961090348e-5), SC_(0.000112020767308378375840566420540839970686221727315573048682688015419168849250873387024663623743467003) }, + { SC_(0.16847467122715897858142852783203125e-4), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(0.1597675138409293700309435180784469739232620351573060252420737905448171241490589056171813734376102797e-5), SC_(0.0001777124009802608826555105463099742495952656042301109910545990701930609772354857022376451861750454172), SC_(0.0001776100511814565558783790404856355430494800495259308451582193538709656878082298741615995907450789185), SC_(0.1597587846781442995028519903465322758894812154787584197845211972613431887705001337520744293208672331e-5) }, + { SC_(0.1695460741757415235042572021484375e-4), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(0.1763240139192367764350577078574126894495994363862021385705968362952943728559008233251209625751048006e-5), SC_(0.0001630766663055383146731232183002331937355493105587993916536858283999468056902346280484683877950440511), SC_(0.0001629897543666882871856905079787663075585451963966648415370701491698237494062073781966706404486930145), SC_(0.1763142377412093970664774302592003086305568525455565300103669618366872409088556579141664191554965497e-5) }, + { SC_(0.1747490387060679495334625244140625e-4), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(0.1657205490431766653288219519839018968888546479296707296937718099328611521158562162673563617224824575e-5), SC_(0.0001843653172192470436245570152447584219034861068531324705290813556424203611303058551178626221584331899), SC_(0.0001841901877263695417504790356833842525593500782750209287429911099919852050415191801904617209210017375), SC_(0.1657056122824094680842979074245439365062200089255551812950422064402396188284924313740737229005812151e-5) }, + { SC_(0.17535277947899885475635528564453125e-4), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(0.3934966619007810949666151809439796625761525755030458189033923939964942952549970487522772045241080464e-4), SC_(0.7813004844990431736875950082152823956499576004090834911169966325316944097732757790249052538329811151e-5), SC_(0.7813738690758194900025805668521577972307954518890831563516466130616372853353627433972933369976640684e-5), SC_(0.3935796118240089581784673294734863779612840643384986837483979048055208451716421353815051705178379411e-4) }, + { SC_(0.18408363757771439850330352783203125e-4), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(0.413190619940077812148654535015486566874115279053224890650250082320279230593940677934502728871627653e-4), SC_(0.8202915653135443071254499739337398381484679516674675735681744216705620879155339990070901487941605462e-5), SC_(0.8201887319734426941626810875350578124969960624841708092206613535895147568423858458335946233424988906e-5), SC_(0.4130743831720140403888528190085862518549793340166449318755313043679828999244864499097442313882705138e-4) }, + { SC_(0.18476972400094382464885711669921875e-4), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(0.4201384439600644251053104632079237506043738636596261931248196434685644946603202793230914544377440928e-5), SC_(0.8126397026386215886651542276709895868768937306492302560360884768759675158597925655827266479096387219e-4), SC_(0.8125517728950502627429002710157205824390468918340600160614661299251014603828182049765221888131113477e-4), SC_(0.4201281061577421820783197564793080303433760475204983907383325171729662408543767121652412074421849459e-5) }, + { SC_(0.188413614523597061634063720703125e-4), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(0.1959325355297020363578709735205081489005841465141458833202328073060064509786535570182269488203029507e-5), SC_(0.0001811061752356389460411317471042204459395687458776959286883051694853308747407200099995726838851133313), SC_(0.0001812458202619194327877942786966132129058108017096176196569669856398224327521897110260232626958575267), SC_(0.1959482436961096719711616247435588685682221738468125091166271922921527043291465397235275320504613611e-5) }, + { SC_(0.2107691761921159923076629638671875e-4), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(0.1225241239187264825009764211955875258897297868460376024302188076770609420325092603027176276165366766e-4), SC_(0.3626239160751556290434742997831992959708278070633131067367582498349513466852599333852655125852709286e-4), SC_(0.3625564919740186963552562571870020329208486377184784542207294981490052513509927734762356423536143525e-4), SC_(0.1225108806079607767525873313671174611605835214332339844494379813354718156909820965558947094312656822e-4) }, + { SC_(0.21139929231139831244945526123046875e-4), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(0.7445424005511995784699762646393679460593641894751343859080360160163445376931758907303607614034943403e-4), SC_(0.6000934337592525703822380903559509073602805598582325653340608660629754049988915105032213733859598783e-5), SC_(0.6001537841428580831714414241213842473868528938690155575792282186554715597199669887229707506961242776e-5), SC_(0.744806181821288710790049603248064178623063301241309429365865781170238013410481498053972392674849107e-4) }, + { SC_(0.21881178327021189033985137939453125e-4), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(0.7030064695592503294379321334291782525624628718401090071478175971272319180953875918361989990662058161e-6), SC_(0.000680433408790795796174450941920224760470271545844913613812581829511441286136962923261563149635628371), SC_(0.0006816383524403125738205478920267709440633889813147698488369847423753318880307955631534483215490628142), SC_(0.7030464541940040306826432887696002152287957503165713898530421911671695975497943922636326372406277292e-6) }, + { SC_(0.2207652505603618919849395751953125e-4), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(0.7093267489958313617655411076647220580965067745466979468265996308573028236420898916203517281342503761e-6), SC_(0.0006878375209680518415074682718557288529112775750679937081097696644302117276651956603893729795562291429), SC_(0.0006863948246010225459965704062144854706611416602415553417409180733607150209945912939590819393521979177), SC_(0.7092788738597650047938966119408901401195989347345899706435732977553612043838800098859530559731074173e-6) }, + { SC_(0.22326681573758833110332489013671875e-4), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(0.7173083054047278961573086105989456570682970371481241164457775058369816945297721060741145426868129402e-6), SC_(0.000693942912935498829956857396157606370348546537206592030234785842678701243868966370280020480908629579), SC_(0.0006958626906144262117730660721150261927949691925324798724148496162036017461337244069162059120354551637), SC_(0.7173720149960007184761691510230992913810701569628749338454018943054075631179732635366688114307259779e-6) }, + { SC_(0.2266201772727072238922119140625e-4), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(0.50865640900563811040578585538425896390901308133766743979206080184643715388453320435027818374901322e-4), SC_(0.100982816851671950350693859125516786395303572402498931275714524570431032824868151884602981937137908e-4), SC_(0.1009720881828737167139054728609874889025984215452753747111233254517617475982037996874832643557244677e-4), SC_(0.5085351387632944702222922489915005671565119021049332470711886350858867443549552198328931369600286263e-4) }, + { SC_(0.22683978386339731514453887939453125e-4), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(0.1318698522993235404291049581649311906314614556114814299728980295577549538792211300846474409770948808e-4), SC_(0.3902912805113971506908034124486633931077505818656539319867288207104048954027700537346120246873829379e-4), SC_(0.3901822777290196984540792824500864923391559344906525230824706219396840273731015767295336174622369535e-4), SC_(0.1318484421051440417652129082851166337019965927998853709373406736412774414767937780490448907437483983e-4) }, + { SC_(0.2445176141918636858463287353515625e-4), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(0.5487859761900163762747084954799354210970641626017168407423497130042367756159359831502293499715552889e-4), SC_(0.1089542841273619103064479063049959787373964868348367609609252724695374466948878798013731510350866089e-4), SC_(0.1089501056795943250183776310536020170617764643484404075100156842743952907871713450931294774048917483e-4), SC_(0.5487387455313365105754924255934212400210288970603333727898204258073046691126084533527289281872830199e-4) }, + { SC_(0.252623358392156660556793212890625e-4), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(0.890129539343139967770160829095525943431784560670903983988785893010373488584644839837999734342948626e-4), SC_(0.7172059244091053201641934321224384940524070013532715204498324971811784071177762372289850469033361202e-5), SC_(0.717096341597920476321952821665978658486721279791323341028718652168102543160707702181951932136016795e-5), SC_(0.8896505796200621207023800930996934030424231938562897164028075477168542604684248744947650839939295238e-4) }, + { SC_(0.2568908166722394526004791259765625e-4), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(0.1493364228388761198868103012960216555521615069861854737692576411310621220937107845563958724742660352e-4), SC_(0.4419798758475023895735327751029698993886725670829036247837566511740367723006654535311087459305674045e-4), SC_(0.4418883964019194746511307212518646335035336565066635120057467883721722783530905753943472455339078922e-4), SC_(0.1493184545575728327293696761495400907010949868209154322194432086740408313397146743587930213474998263e-4) }, + { SC_(0.25949540940928272902965545654296875e-4), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(0.833752129308913926227065544146472406845103025298662684741757761591813072116316576684643502642406044e-6), SC_(0.0008080250712021588935636843618319216044074095370053430973447179539460888207197002140901276022886585513), SC_(0.0008072949866892362932227363258057324556110382324536584101469886216632396834785904508146734547370060029), SC_(0.833727900965832946366484503837774254714218421719028188929655567250670707436590493621241534283024996e-6) }, + { SC_(0.26349245672463439404964447021484375e-4), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(0.8466364767577101705041656379088328606682929696866996601715835907306009565163155963462777057378905459e-6), SC_(0.0008217383524891267147808657074642932639197756413278569617986441351832045839603697277804736879108315389), SC_(0.0008184703196926953221005729965523654463331457080779535722544658946622169287552131982983948790528471138), SC_(0.8465280074754858290845898675590495744821154291966347987500355737935889373616630579984128037962466383e-6) }, + { SC_(0.26870451620197854936122894287109375e-4), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(0.946444437644988818360272225751452306731640867117198717108507112191260513239046196095147736177089237e-4), SC_(0.7627812991634620294186676464363520233213603165895065321455626630421668048906382510818894684760093289e-5), SC_(0.7628238439007674063911316116300647303303176263313870094159838298732190696487000119447497438474351243e-5), SC_(0.9466303923140021714651724961108734016144139388324405538990070951992333616851896005363205762698802398e-4) }, + { SC_(0.268835065071471035480499267578125e-4), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(0.6113126863084787088457289906677467525110413791126532917750847089596573236804881284314940784568267815e-5), SC_(0.0001182559460698695797615048524864881859086198382920373342279857707435297713084980688408862368180844266), SC_(0.0001182051288172654974681882853882553301020971099172184006009819870759444049010912388143765810139804489), SC_(0.611252939053999760410806233135421286813983853577987950163594035763865307512923742836430598340441027e-5) }, + { SC_(0.27549775040824897587299346923828125e-4), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(0.0001893477408462106294074320900879226643871100023263037205115561730071509287610465638454357259233806003), SC_(0.4010791593533113309540302576424019167831640085268531054136632049359520852067803490958844908594391502e-5), SC_(0.4010195283491295339725313715084880993354774040867618843125923143774535327392436368308238190903145143e-5), SC_(0.0001891544725074944424934700773756200530891694008868235303248952972684288879040485141271922803862316192) }, + { SC_(0.2782344745355658233165740966796875e-4), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(0.98053175703819812994193648878362808684947290826447901513656769674336146899659396475525238726123611e-4), SC_(0.7899533755723317263058249404429585550531174064514826439436441347323297475962535766753879739769746682e-5), SC_(0.7897593757080017755148521385522924454636109738418695853971781157240078463021397410573821447747174936e-5), SC_(0.979683851737169718145826887102536930473526412140028532457741846483698224058281048838499990647368631e-4) }, + { SC_(0.2831956589943729341030120849609375e-4), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(0.0001807128500355753823381133911614513397534840719181196084363916797803173052691704569877960788396163323), SC_(0.4441657295761922140709867864006973368144886662570011429990927992326346788917481974041065341380935819e-5), SC_(0.4440656907905668223658768612069517333940390373243725058541634264484103674545691183646054275030648641e-5), SC_(0.0001804535176381618451843623788688497791433307522718198166903942132411527589674277518970122267289256125) }, + { SC_(0.289903473458252847194671630859375e-4), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(0.650710902067645306618348399485928752245514343944149274028194357417698907571013640606897690082437555e-4), SC_(0.1291832509929521729426377124614008429150947783437357616360744470823580078268035876092794947896497597e-4), SC_(0.1291672155153579622239022298497872348714061205196344194670340570703157417994651341126623468331848716e-4), SC_(0.6505296484263600260907975069090657647606675561221350847213411703515172191255206365674021677710829295e-4) }, + { SC_(0.29415024982881732285022735595703125e-4), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(0.5811234358198207450800993806631629303151425540852365644833470783451420157162290440018808753064778315e-5), SC_(0.0001488515305143899950575182712108765017570657330109018309339874773058195626187976323166915667047399717), SC_(0.0001489183753033729737471989110271469662848635755669504770040196845749576660108435797824519056477438717), SC_(0.5811749907096483210796389689348071701020036672332340561130020297426582622523885984046973793047679976e-5) }, + { SC_(0.2950275666080415248870849609375e-4), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(0.6623380221993247208019930424359414104038041590174729151384976635979790064065189777992871055265768185e-4), SC_(0.1314777037925794991119440542155738750204789395056345497336780326607275948595820297888322249112418291e-4), SC_(0.1314391553059617847412366001667108115797097450131451279379209510158565672886336310889986494966211983e-4), SC_(0.6619023049276094907128763980117686503596195890106753564355597736850868648837710801405105630844399857e-4) }, + { SC_(0.29590575650217942893505096435546875e-4), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(0.000203433014962122273190117813844365382505235828088797038561115557192062945317567248313629806578074863), SC_(0.4308080188976407900504114028660949748526650492436900018353486862351388736677364723641302637450417894e-5), SC_(0.4307076203395804963859360587104100187464861275392444319438609185919933707893530485586328696483245651e-5), SC_(0.0002031076322396604361969952554446488452402616888932689720993389015651322519170841426077553570975254419) }, + { SC_(0.29623561204061843454837799072265625e-4), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(0.3080924810706610237303050764635513096315325110851638504448014890019899956575033934196425233873095061e-5), SC_(0.0002850589955900025063662373612966783648213492266552838366800756691443373132161923271226636935957075431), SC_(0.0002846535881404838325986316558252667640434634797586114936540384908075569789055572942470704240780535328), SC_(0.3080468737319158755478716926130947075850078633467816863260277712535040345554296060678813950289927686e-5) }, + { SC_(0.3014650792465545237064361572265625e-4), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(0.9685611726034269567302767529566149272145550805472501402599516109565485288465686062001242921930814387e-6), SC_(0.000937553743647252344751891476657878098874788940315540755218482499127875990240046305873996286690214713), SC_(0.000939021816075265396636351157789778172035065393856256251574313535812872416891792259964934026111812558), SC_(0.9686098967137168600733425921678272637744767838900345931868288957453818204178845809255527684269389091e-6) }, + { SC_(0.3187526090187020599842071533203125e-4), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(0.1852696291685857457357315073207801440150982002201243768613274683982839926415680781181146885454979429e-4), SC_(0.5482680736076816768644663735168155194164600649527740485369223211776381933868044311399057957132246327e-4), SC_(0.548444241099086254738727348125985462130210044548636558491683436862552850783112176034983573950013397e-4), SC_(0.1853042320196973023008985160999208906513544085138395157496265838499190413528186023072183021354900623e-4) }, + { SC_(0.3188882328686304390430450439453125e-4), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(0.0002032543119596310553301405896679188132371701036431649527792241326790458271535289572477009291010567545), SC_(0.5000556678783997586305969641311482681169415216588265705980879093771896850334429547871013232540968869e-5), SC_(0.5001240213775232009499979525200205307308059663908028388320060836233035467217520960441062604146380964e-5), SC_(0.0002034315108953792758199239927083176955139118886499167457345368674516649642357124368884446145567680131) }, + { SC_(0.3529437162796966731548309326171875e-4), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(0.334668711481158310382864201238683999994953377693331472938495759388412406610894241884420799258679869e-5), SC_(0.0003718970079902761887180725266360519825237957106395637147904598652623756928502161132295004140302751295), SC_(0.0003724813343406066281170074014632226846885464741007649673452943231635509240584081956245248920742359135), SC_(0.334718555724405687468912312104506431322335724292228609704844847258008023222884926403088256226383157e-5) }, + { SC_(0.35590535844676196575164794921875e-4), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(0.8092364962626058971387777329974662793053155436195848130253390912228680487935829174541370681674672125e-5), SC_(0.0001564987306006350784741513611655931936391912560503291049953158992556549020303192697545696767780765783), SC_(0.0001565473400589923693543561401818386522298147177528987738128200768688989870191855013563440286317941196), SC_(0.8092936488646478221364595555409371457863964521249801481414381940135542555331922472631230919745223317e-5) }, + { SC_(0.358525212504900991916656494140625e-4), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(0.20844687451011136590747269054423102083114891865263584657577277623085775675276755464105169383266907e-4), SC_(0.6169845664756046759927677029260077598071799780328103734399992932114360141403149043363080644356838019e-4), SC_(0.6165709894511585698607333035031442599608339199757038280797489741936111162974087867686443533519286434e-4), SC_(0.2083656384622360415458051818461176884861844674516877112104729632163184264135688462654172771648842154e-4) }, + { SC_(0.3621911673690192401409149169921875e-4), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(0.715622830600402150373801155429084679312407478590444136027797946939538146649192881666443014702067829e-5), SC_(0.0001833836608381929002731263343690525082454731194682745651174395469830606430319153490173548780974203125), SC_(0.0001832644580959573118212493644025548596560770613361506362466167965423031598406626388253128495476174846), SC_(0.7155308913027607351885321925087420985680518149787182589803723400692611262818513974318565901900727854e-5) }, + { SC_(0.36229626857675611972808837890625e-4), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(0.0002489151071991312712219251562514838839987259822003081868789158856983302453776349412123024639467727405), SC_(0.5274161096362967097326890546094366203480554714964319857191218842470470923111278417311844369621734532e-5), SC_(0.5273923601134485382851466488835177827650248090313816544211293271055630918290066617193324424300311702e-5), SC_(0.0002488381337460890571114905006647637555498796404045683444483908547908880765605159396511223663522629821) }, + { SC_(0.3654422107501886785030364990234375e-4), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(0.1174239681209257287903920255058201768804754319692017274326367931233417179784426636316869634794923097e-5), SC_(0.001140439679545291180618400221953373680576307934412533253755008614576608998821398722776810171535312422), SC_(0.001134401351729823387627861697009741352117442576992655262878010344835588520111906552528854537112533879), SC_(0.1174039209987353664190953016304935836539205948195298965182057260723599992344448666978200620691381635e-5) }, + { SC_(0.3714940612553618848323822021484375e-4), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(0.3522925453120839810093317941666700181633091016452330925807149268651434472562206172652295885998710933e-5), SC_(0.0003918418922406417897504701554630934618695689303793030188219220359405019011050127873083974565982121899), SC_(0.0003916596403163398934069914479888173986109507791942366164935543168232942911715300723537070442620914786), SC_(0.3522769993663235962958405153699762345807639266950251933898917713941945409878978322196047753869038853e-5) }, + { SC_(0.372543800040148198604583740234375e-4), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(0.3874348794125427934772825022304143860206054078629718646935921526088911760939142118698632307471465003e-5), SC_(0.0003583098752942973148036806697776396483126888718748938412705267378337452735106320846391130650311862246), SC_(0.0003581561962695791365037188216195937964009669686703897765083661711096644994928229459553268406092436155), SC_(0.3874175908733848840336201417178945974351929284870057469034209089839110570591777145169367075736679818e-5) }, + { SC_(0.3779314647545106709003448486328125e-4), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(0.0001331814976678436654315347384146145169027135888339945489605187547650885953609588005186881963743583815), SC_(0.1072995571637988332297425260561994721515753211016623173930219749676165305564069151925957055995059916e-4), SC_(0.1072759923695647185855014006442149912677035770900783728316650087451105820084200967451616929488861594e-4), SC_(0.0001330785052706702311447141588373059982898486155111689403266268581808696014081646724245733321436670056) }, + { SC_(0.382418438675813376903533935546875e-4), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(0.0002628276285484336299767013896941186356245223424130048721776353272058491867610893187302408299177512699), SC_(0.5567361590127487474932271033846264844294059512941866064088445041626864563042198637591038957910390724e-5), SC_(0.55665706258129317646086374799782008520134092008783646068466435927055796775859302823300926652942055e-5), SC_(0.0002625712812124782972678637920348277642027760054079639608401196824514763270858124553995823530924423339) }, + { SC_(0.3837459371425211429595947265625e-4), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(0.7582821625080839612032035561287500592755963594537405304261867929302571182223530377386706394107043065e-5), SC_(0.0001943894768805810373890328598053098725189834332536906136424622971583813284699138233692895305099148783), SC_(0.0001940788951957159217794850251007846481121299165415322058706255653243368855273269685275979381935745513), SC_(0.7580425998843848344523147683764117545646587007761683271864219795833308857745130614327296913554518139e-5) }, + { SC_(0.3903355900547467172145843505859375e-4), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(0.000248811931171924303097074017331930977549130825328788022482046111128107018654852163552969456069016622), SC_(0.6121008731467766961429008675021842895888539700632916094143356754714032848915534116696402295943139619e-5), SC_(0.6121704815976624053481575816584612839235163672228226981702230997690571251845496040850101081585313373e-5), SC_(0.0002489923798000819614324329933836323584074829840881254928639020411384369090983914610564545664409647762) }, + { SC_(0.396258910768665373325347900390625e-4), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(0.0002527886180749468975582478667275317600302641706876646403779468959986541078158293168556945861713046048), SC_(0.6214669927782665295845879816904181335852056684086615330592635916594100096400724146075050934581868741e-5), SC_(0.6213826126408925807709955132330719813542783931604436464504958272859630765161845122786755951013444245e-5), SC_(0.0002525698780871932443318924570278475720100008300455106048693807822908205527222693339298576711402123677) }, + { SC_(0.3972529884777031838893890380859375e-4), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(0.0001399734135959657615749670077862426786855345719909520953277153663994036852338398254828833226403499639), SC_(0.1127813171528823904108889200139561720442919728927588747467277880831437403844220118129640503198497491e-4), SC_(0.1127642798650091529565029198654553173942054605343197564548530621152924749008604305706271535179151935e-4), SC_(0.0001398989497682749051561538735112771911833212861396007509166681535491430781425727648086943252253069286) }, + { SC_(0.401874640374444425106048583984375e-4), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(0.3811520771244874434986685877854805178161514255151044751275863363812852789337826626040889945992589875e-5), SC_(0.000424464853159359672539108439099911590515843300316876142689042035475253353157934305272873908214964275), SC_(0.0004231135275376316309018438119765103852103412484110428194820240772674319081893265078741003012078556596), SC_(0.3810367894043645634993544966559904047601701926961464406225481857505256617255346190679210030265796775e-5) }, + { SC_(0.40309605537913739681243896484375e-4), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(0.0002770338459887154821043027547341379068999133461002177518815253645060877019962868142763117977149232309), SC_(0.5868376952807819771631206037721353995509092393513798572156480504862962038434052997853297705588290919e-5), SC_(0.586757430488588465904540907119938033358110828141204588838241634334497602785075785202586455790973593e-5), SC_(0.0002767737138005214244224369805903843640978933915774662720268648642971326604828716791953880506979829728) }, + { SC_(0.40550003177486360073089599609375e-4), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(0.9221383541185385527071505347711305334073609188547831431795810381611541876815897604170816444571643867e-5), SC_(0.0001784225744705667366572404048423593518640987024181764506653385753338845891606617219747420953620206093), SC_(0.0001782459059669590640973236656968130937068139343259696285197210796573183830249220207787643743703212391), SC_(0.9219306272056024770526250341522686774968400708814518488076151893227605440341301349083913982056866625e-5) }, + { SC_(0.4062067091581411659717559814453125e-4), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(0.2361586416612142765167657724232481876044448984711401910548666563310675470204152396834488262662831502e-4), SC_(0.6989870191822309501590244914585875365637039298281482236837247945120091995705186808922997281219795252e-4), SC_(0.6986232500712854377771990268662503700276363018605166064224390664819853908331923783597492759107980643e-4), SC_(0.2360871892386272804023742756735058475086480569354863641324236235878508678528295765944955761546011429e-4) }, + { SC_(0.416882903664372861385345458984375e-4), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(0.8235974455593445911405146006618804503537150786217471538037669794419437999849551793474063150862847525e-5), SC_(0.0002109633201853242788013013609367533099276023085052167873112257616448341623333035838175300692246854712), SC_(0.0002110495102733607506178648141757545694755033480799157366436290302466839560536228597944544471132132855), SC_(0.8236639232670506078779882271770848971094258901739735798432350780407629819534105862391760471150363673e-5) }, + { SC_(0.417589981225319206714630126953125e-4), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(0.9496921942868397774928083117809299049060198868240026509483639861642207692921348127015378609059052339e-5), SC_(0.000183793622849589591519464130760858388758822503117413262759668701527523735632668428880691387562338024), SC_(0.0001835090487283306025864238304854438353083438156425424352176445044026575411241058657571863006146399162), SC_(0.94935757863258569721736626750633000330132939437093285670733958895041788449395900847669303252036035e-5) }, + { SC_(0.418079944211058318614959716796875e-4), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(0.8260930887237697635703629251530276995383458924199043185217112489290530777891870979959804140737674819e-5), SC_(0.0002117386770922218938778977059549827654528037792577460458245869628782455014551249883070447676100452006), SC_(0.0002114860793186596913251503690363209350311538278300630340515448836543526571792432670516647491861023175), SC_(0.825898255062919023497137926133831328068152276718729520089188760652213380239712521146579798917277992e-5) }, + { SC_(0.41891194996424019336700439453125e-4), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(0.0002672580772464280834387835177261683554333391003925167941187361298047257964312323483449979045327579778), SC_(0.6570015874911677852991147155769095087831099396134650142218317812857351099001103797395426482146189012e-5), SC_(0.6568983357998512282989153671221192972190527205900471274006054677239799624693055695014758295207730505e-5), SC_(0.0002669904202815672441007644560925001252685662217767570596816678913107167904651157165957011100207069448) }, + { SC_(0.419171410612761974334716796875e-4), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(0.0002673344539664826544830023949265944543834585415163680058638252998427230552458372819721645229817547963), SC_(0.6573741447549158401827307949597513428673980315769496227763967641364506755866433294118600662890872146e-5), SC_(0.6573395601852054412524224246058366885108447332157582172173745576427461079033680978983409154677512139e-5), SC_(0.0002672447991051494561443093974867643439852284495652962537701368637858193673100862193199529829148406933) }, + { SC_(0.419242351199500262737274169921875e-4), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(0.4359648990857360968457850959275638726930411180413406439514126709572761377802994022841270206481115263e-5), SC_(0.0004029119932621287786817915438890523411401294701723266867346196525797978337120966313606922986132096147), SC_(0.000403363695063904962190884042747369349698072714192785428011538900039117579063948836349719913467349434), SC_(0.4360157171227938769130953482480864809714506340287621610381940912250592595386969752850955249856049252e-5) }, + { SC_(0.42011219193227589130401611328125e-4), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(0.398365875389748086067594984574926103122424092163820681261821293888386818704532410505625329319693876e-5), SC_(0.0004427496097812887629342565494196398042609936726978499756025798858999363342404635333463243921447617748), SC_(0.0004432905604739046992982032529045909208954888136842027099726537655216774312378322522875616264388831833), SC_(0.3984120207345006607471835039298619515401643465507314101897690767888569205126449848553576877622352788e-5) }, + { SC_(0.42301238863728940486907958984375e-4), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(0.1359312285631717405765719764754432879298433141872203473491768204084252166481082667074835409202659733e-5), SC_(0.001322770284214019311266028223026786426814204964907018865994860472202591169776984008490446332498675915), SC_(0.001310486155027356254175059061847320924004706627649203113102286794081523390268033220762090836305952094), SC_(0.1358904290590029756357039625534474695327782626001325911953513390786900374680684792030214741988228517e-5) }, + { SC_(0.4258894841768778860569000244140625e-4), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(0.0002923727175992187097072324063572122281873818920445524545523996736343568483402998666015737243354548483), SC_(0.6199202728657121287860294157207493768526502246677205153768156458033776349926581840189623125411836906e-5), SC_(0.6200368486309552990494441974479535977590161622302554029804318767901992518975120433440979854133094438e-5), SC_(0.0002927505205138241042939799378270048006362426290581269656849944911883353888399107582462319808565045767) }, + { SC_(0.4287613046471960842609405517578125e-4), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(0.0002736005609371116740934446346383807883994554019329649154401293129654193696486224835917280006180529407), SC_(0.6724714946598353108604209750095634498110311557378527040647332006303207748387537139582107125767957104e-5), SC_(0.6723205274650179116383367890937312914547011559695121606852824371478288731715983720819865058745831178e-5), SC_(0.0002732092231257790268174597230550865313435228841157994369594310251112640003102040123737900571003825121) }, + { SC_(0.429383144364692270755767822265625e-4), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(0.0002951871426825850774652811213602975227694883238053606607213237100556477926747288032321448398104395386), SC_(0.625133964407058758729958389915785470264601714850173720559120297173978857798896409142158760570980548e-5), SC_(0.6249947873920316731049296847404811990146085607625249042021344063918397615033829998096559220177231572e-5), SC_(0.0002947360999508463607421314785967943325312487891553412005078791654256464696187216773838770425023682609) }, + { SC_(0.43400345020927488803863525390625e-4), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(0.9737546356411772858815761148723142658680196764939313624916403283726718956034998433777427720684088909e-4), SC_(0.193359945263856182080740899210274730978708676013881994787139874064917121012631036802046294189002552e-4), SC_(0.193406703850189794318864764252352038963320280879465640007318762448784007139045861846700412258005705e-4), SC_(0.9742831485160613946649925070301100139166116428196682180981417827542011842497424047528003841433063084e-4) }, + { SC_(0.4396517397253774106502532958984375e-4), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(0.2555737297050327732879912199536217424843662361167263445470896038691825802662053742369044239689368231e-4), SC_(0.7563902759524491048297961944420370219641549207869752324504714818651299615778215644771520442760890863e-4), SC_(0.7562921356848258359363085061105523944725186738456345342531210308663029772315087657568196416885188712e-4), SC_(0.2555544528720085703045622323101251616812775750121709056348015611755392314027485821695442452317734633e-4) }, + { SC_(0.44897155021317303180694580078125e-4), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(0.1020972164335333093746384534509558451020030799598262889432301185755970533162847347689491637965180734e-4), SC_(0.0001975300770535911466529686335618625592438273286161183846295716778620471956468554791941990798125217633), SC_(0.0001973749051272532073018902945796867844222243547901783596417609313463205064511125533649345645266318893), SC_(0.1020789713165616732718992958541079899941190516864817046164224698442083512222849997375228089428791878e-4) }, + { SC_(0.451372252427972853183746337890625e-4), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(0.4693848308540837540357349901497797420301751198644436746938134174928936841206590257174281422703954793e-5), SC_(0.0004338653679695448440896845237135758059105578769286399783940175945138625973774304866543838516733037706), SC_(0.0004342014985530507699185936466877065273956190624499587475124769477851387595961452019798943887272603883), SC_(0.4694226470129197592867180943433770922115432774065666425419309493058538316907827520358207133084764014e-5) }, + { SC_(0.4623167842510156333446502685546875e-4), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(0.0001627899373883332953355500854947409232699196618945185574711176530257777285625146763875059731569504793), SC_(0.1312281999627725384291635817883158631609386454912993763857337497501910339283135844005364200287657758e-4), SC_(0.1312582226588685124077599211471582581035896269949814728916430732314139908585264498329781814332734407e-4), SC_(0.0001629211525080439210776925228530380753762870192936540093105038735844335096768297115431784405849873145) }, + { SC_(0.4653503492590971291065216064453125e-4), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.9192885264228692528465342139170784257762724654002939835989391759980294565623066824745139187674729396e-5), SC_(0.0002354104089749605681705801204811526139134785494863533470838002640668959054962174997071624475842675403), SC_(0.0002356664156279290969419471474527824867290800163849996007105809082959941701716734747162651567320649712), SC_(0.9194859907026727166515089596177643447034146067523739091582921061059466010917643198373011475987596635e-5) }, + { SC_(0.4662941864808090031147003173828125e-4), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(0.271034859748330543299467141564696764378543528840279951724699212188796829622195181695578843911900881e-4), SC_(0.8020924684247691731227513113946002872217415179106548564667689430284057541288956845889122239961699278e-4), SC_(0.802256963797925266614736917954635868298332104936897130348048794925366385611901713215031757611023427e-4), SC_(0.2710671702275360513593076051930826356567260133305662402772955988837599610528011150701838448746380766e-4) }, + { SC_(0.4683499355451203882694244384765625e-4), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(0.487146237178181554587212318661557004310316434724941427126803753825404519744302961138507113960848931e-5), SC_(0.0004511298431015401501407905847806664230291628895163866444771853374329232554732691810202978585921411905), SC_(0.0004495910311651689894990419519375488400419183539690480123228780111507198923313479242801392051140887671), SC_(0.4869730843881540701560223661763496130541171657655986546097443364920920251647023825442028115831946582e-5) }, + { SC_(0.4735972834168933331966400146484375e-4), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(0.9357094110799297748771688080382237087202097609464772747832427503425533013240054223119232783858773965e-5), SC_(0.0002397498705632709927028532294121414748395724944152825583367397352330504008406143634655995705518023924), SC_(0.0002396752202649676178365562364264534722136969233368876455476423270300955325997706360352920886660356934), SC_(0.9356518329645430340521248874374301586136299014971171767385032033893097877182413517605198241863413943e-5) }, + { SC_(0.4800888200406916439533233642578125e-4), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(0.9486293130537240293019020990621570498546971830110215017603530746847008151087663087602744968641911984e-5), SC_(0.0002431583845362453627527339890165639825140333193024518463820418379276158828997663021780855524279614603), SC_(0.0002428383555565714915545939765478691678392247069249386713079219050858849481864346186662746684342535718), SC_(0.9483824625236211925039267431161740626202193066263335434740075413999272809047544426116841360498061596e-5) }, + { SC_(0.4828667806577868759632110595703125e-4), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(0.2806574743222954132692682948032431902916971557228481355445937737870222764933937963932332368864520776e-4), SC_(0.8305474948680240934749188506853071213155279523592107112818885644872291519023106636393336077778390691e-4), SC_(0.8308222617362700688054535492436845961930767088568431874460505082794737249151473830543884795109330118e-4), SC_(0.2807114447101831607879970994154196465985869465619816841131624307095052578717030752083948428691192546e-4) }, + { SC_(0.4830027683055959641933441162109375e-4), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(0.9541606813047840442386154654480050301917809479205896274649634260045011059989644096542563158358241456e-5), SC_(0.0002443406625539862643165418508972938379047444759964632387390065316381275198772264868932789036573019498), SC_(0.0002446058045955930792445903662596014924392399923709357820226968750494269073125819334257497827728686596), SC_(0.9543651929233396774255803162705789260662646472671800879229219567832483104947522194069221731873039283e-5) }, + { SC_(0.483796975458972156047821044921875e-4), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(0.4587610627160134673476089995180841208777933356042412034760809468037086810281697868860875410177485989e-5), SC_(0.0005099470789756504524604856061457235313033840493468601377519196502979957645801215886101587165995191203), SC_(0.0005104076095482251201628617394868616311256684589507692973500722820572287960069422146802337226757725803), SC_(0.4588003491540980437457431498384093462658418210894358752813412226854877690969371199712147077613066467e-5) }, + { SC_(0.4859554246650077402591705322265625e-4), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.4607821279273959895046143379227484904987323903508556657828606638307356792555904036795875761144821787e-5), SC_(0.0005119216205287973639328373668888416096098353069010860370773884735558239108652431977747054675315365616), SC_(0.0005129864379865652688517267803149382041179674252981043977864395124559011058027548607784836105038463601), SC_(0.4608729690976125089654047731079353927065796663554935514797505616986321603978405052105329247774635191e-5) }, + { SC_(0.487077995785512030124664306640625e-4), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.1564800697584426815889336398833279554271786403834427280748428627664099827845350155595858798448336407e-5), SC_(0.001511618060874094676960606990973025037564770007652950940578185834881132178603846066474040849464360098), SC_(0.001520396002249337567401185168074406124040865261851098914524089987356935403515312951217039207102123766), SC_(0.1565092194945395167906877010179066620340027044377575627760468958690500225107340155880367933529184078e-5) }, + { SC_(0.4875471131526865065097808837890625e-4), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(0.1108467034810653491650022834099504629119757833141758920296277811061084492033840475146003803723111001e-4), SC_(0.0002143088826447072971447015931534088261266859553865288017122812245598555158399761917317260583501600844), SC_(0.0002145263203253872943867436322372944465858778993298042014414382771934095078533188597877313463025901607), SC_(0.1108722703345267143350600649172118161272250738408366900524888449219541160436653530228597715656989435e-4) }, + { SC_(0.4882370922132395207881927490234375e-4), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(0.0001719383946546632111589085728103270761793274136639261241960607158471653216039992757975343817498004006), SC_(0.1385905685644647646552262297584915430316629538689963730897527540588429868660592160287599814392828758e-4), SC_(0.1386124475492540011909882340716498124557758390876994284228229423599337940419504280672822537816881797e-4), SC_(0.0001720340179417960170520997341581410822757311438214274982081583217226077338521427107594557960830168111) }, + { SC_(0.4924438326270319521427154541015625e-4), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(0.0001104952270407104526648801587554743584632436031943432616807561720496495624058899633068121820708094879), SC_(0.2194035303442761925592178434884285706029285061371932948107504802178282546192507936902772697479266338e-4), SC_(0.2194428656113691584206458946463702504805339345470808593205753824217365193321376920319874413718815067e-4), SC_(0.0001105396876592719756512357904848541487562173170351406835695798370357038929647139215689734591967975841) }, + { SC_(0.4971525049768388271331787109375e-4), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(0.1130308024185962490776683440169859084423218493300793812294337780489160390788583060465049589726167707e-4), SC_(0.0002185332614250133919110843086090241414986059147575471380797191831726709422142700747914347815455633164), SC_(0.0002187506170966123859925751409128137961760943659826336446395337722875414011727198318431089358717637573), SC_(0.1130563596620277551701605354750907427584486998175442872678269614935224303012323869484544034808335726e-4) }, + { SC_(0.497627406730316579341888427734375e-4), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(0.1598974104578574350299870596159203437568004871185469331443812283735434709879594319993158918405655173e-5), SC_(0.001552848311230202417938806611295285597363443034881567204386302197148470747520843174855312597223377679), SC_(0.001544828161719114949706704349635345118470687038806404625428773900305503846138112772482211151625011047), SC_(0.1598707775924615223950767585377418458960476119334124578536284753771992111750385424604308392521289813e-5) }, + { SC_(0.49858455895446240901947021484375e-4), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(0.518449221406693951160208441389314759727194633963344607852915172195843493114207659610431336089841735e-5), SC_(0.0004789626793582555053376038816277797353297935960218366724982723705286910454205928491654858461225783187), SC_(0.0004799025164090402980607389422768713119205554211935881971907099209698103135165330954082491318777284531), SC_(0.5185549657637433355439705396013704688349145864239730769325914365200222944032532720663027908244958958e-5) }, + { SC_(0.0001011273707263171672821044921875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(0.0002268132730507297685874050553477347049488244147365113187114414767187265700956165408038329311255980695), SC_(0.4504765974744563175640886827542764176184060515434901763384686162640065316875378147702800816295231279e-4), SC_(0.4507304504083886534212962270590986666996744845379495480464380871203724278512496668900459715253739861e-4), SC_(0.0002271001785260447359230173625332838896769428582897019000317254765797043335499076232846513637729578929) }, + { SC_(0.000104760823887772858142852783203125), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(0.2070640306316728648778801757305760041025288749008371161990530685296687430059973167819801770165158998e-4), SC_(0.0005314094056280443189923384476823210563258150518833866791092260888149145414456310812881313340435378643), SC_(0.0005290957525369397622719800668366073236642412097413685464743628253783315719569614747617423550156425643), SC_(0.2068855086362382858592477666649717496745599822833524079701299313668734767535924072084568936613393908e-4) }, + { SC_(0.0001054156527970917522907257080078125), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(0.1096337350085481482561580158512433616552802643202944586359176229213701384878477982522347837621976319e-4), SC_(0.001014277107084296962956321700738732007373659436462855898639659296666253084189151474307106550351633019), SC_(0.001013047269438163746258980723315483983575854962019680213405535897876506084787214068540859927161380212), SC_(0.1096198932655766001728678488095417614755389151945930217073951140270279871671486798644902705917866296e-4) }, + { SC_(0.000107109561213292181491851806640625), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.3440648248250097202378072942311606222088266530649374823800380469394685725873408845205471324661959242e-5), SC_(0.003312649881486066018395948540877921813925212851695707968032571735953329909255623670369180122204776196), SC_(0.003355033148371425580458412135052401817948826634895370502538741988878229941058332367910946855398822576), SC_(0.344205777229861497998358163416730012826502942895860216447419555965944336018292238473074767036231842e-5) }, + { SC_(0.0001215800511999987065792083740234375), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(0.0004288326102216283908097947755523339611619649290750272544205330780272123739257919398924483123620829011), SC_(0.3452702834203833526428025950000808228538405521905320242231151883404379787075288963877257513221671415e-4), SC_(0.3450164949656775496296603307663308465402515614660721179700799536348575657427681784302171951204315389e-4), SC_(0.0004277236716637147859840724813811219848146721182638319082432256463175687844111992020432440196266597349) }, + { SC_(0.000127038147184066474437713623046875), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(0.0008113057702163408927158146738113896715616011940512329969147944229489708864379280648437545345705773154), SC_(0.1992724193598808039030133771477333035872537735667348588324930664453711290470082760469378701184315602e-4), SC_(0.1991774713339675508570975640812428284823204703071944215069186049643398647901813622008514143176551954e-4), SC_(0.0008088454876693076215882030741764466058018896973466432237458239053617888107867207823044579194513312126) }, + { SC_(0.000130341722979210317134857177734375), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(0.0008975394862470428415719822495482818762326765328338686112689928412539237384363017849701695900302995671), SC_(0.1898086366278054163921845136641307518306887392765479098869401214934275201949793253054120177371932999e-4), SC_(0.1896751748178769173253997762963876442905197116450653710099048874548949805632964628738741192577036646e-4), SC_(0.0008932165490699014529087719792944177684261658719414460559135855170658038614592949467257421032839692116) }, + { SC_(0.000147599072079174220561981201171875), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(0.1399234219395638557035746021462247785786531027310898557620121026978661793055038639752936729542780342e-4), SC_(0.00155138619325106008387012572235828461219134529752895808594494331185247324319616592672860148619643046), SC_(0.001561594325397608366781859988061837959171671733509917027725944623874527900194208840053173254046004888), SC_(0.1400105838564947515874060140793157724654840660678364351282654105106006779977214457794798025032313473e-4) }, + { SC_(0.00015196247841231524944305419921875), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(0.00104820079384729066992001745453236040978608955409682423124815692133968314468033095214733366186966599), SC_(0.221348228856751055572813549033367760083969793206555302516240993596725942272576184614320157936871391e-4), SC_(0.2210834842176737419331468126177078686248641962859661018383260042838259605218282802632135458459947076e-4), SC_(0.001039628143905790632048147504262394494849206869496147267551924429910265649161734817901801541740235336) }, + { SC_(0.000155449772137217223644256591796875), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(0.9034307226810278888555398556015211340624801756555615948272030289894486613819391471132648485210246561e-4), SC_(0.0002673318180946087359322836014479161285526497161124251118707365640817397252800851285760278574978917847), SC_(0.0002675145950025281703633923298023736769097312896570280693324743143342383444359293964750682326887030999), SC_(0.90378976844026885140702045473597588440193420309636379953272818753383334083941720904634311854663931e-4) }, + { SC_(0.00015971760149113833904266357421875), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(0.3155034276543071830766935179651175043901170841858968294396165221273859288712045321850052431370975337e-4), SC_(0.0008077828935494931392722447595962058403500848506697909427414540461874101018749122844264808872119039325), SC_(0.0008090473702000029063176194641496430046270094835022924688937799679770271964125021190317397942196778198), SC_(0.3156009960703240467585688081101616926574833676169075214095500961430437372366170389442034571109336371e-4) }, + { SC_(0.000161775373271666467189788818359375), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(0.001035826388431694871985842182063311753554748455771067212252714519349415936274137428611968301553665604), SC_(0.2538641562699566563447613075987228212704442579809702988423786481332952375659386306079443030417608625e-4), SC_(0.2535377585304712144109845336833219457920871092187850431218488622271734003704537887014111533529091165e-4), SC_(0.001027372569660989388988256115406698138903576547808151756959429505457325563277083274300252098859613566) }, + { SC_(0.000163223026902414858341217041015625), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(0.0003661590444336414194176541722604462930797188800295888590698810715360386384803057900073988166939767668), SC_(0.7271507437438483340122539224567366272354957006018910388077921127350146697328328973712333803911096863e-4), SC_(0.7274281406920059230833502321650241405781595898337159399439177200739003740447163696997595146626816578e-4), SC_(0.000366472540687974378069064507217743169253357172848741650823304978563957102526814228726221030897899524) }, + { SC_(0.000165044693858362734317779541015625), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.3259527401903009729995096702723528633507607798497138805125103516321711865504441536506482006106413289e-4), SC_(0.0008337721689126418782913520261192301641658938256230202517122291127742461772789422860996466181915790448), SC_(0.0008369905339435550365324647782769630076933651386292286880178100722906117934688697925076369689434990028), SC_(0.3262010993299942077577515136519552409897857163411267856863950747900031818048806836392554179256219366e-4) }, + { SC_(0.000178638103534467518329620361328125), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(0.0006300231952475930124061177945878599124745296730220835651334596689110627860335790232816256730403857647), SC_(0.5072929324682157789115445132048743540954797491763110669420054647381423202649369044114498463736461087e-4), SC_(0.5069484604426229758847560262795004106419160891516721839309801993604927673964251143154889040597419477e-4), SC_(0.0006285181591206903731736867338723500420664254263869877036268425957378520516831272256597314171468682904) }, + { SC_(0.000183227224624715745449066162109375), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(0.1906340756078685813256975861052677446467853846753006649441206602394239358909804576663676042192455665e-4), SC_(0.001769668290739368274143947179637360635976542816919789731727691236509036817695090037907652131672237009), SC_(0.001754180790594056980780356569660060146852837867501581240595281834717634740497937590744064478137370465), SC_(0.1904596239294069501413143566092736930674453335679110797386070814300132497130605631048099038117949605e-4) }, + { SC_(0.000186895136721432209014892578125), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(0.6005434342873929259235837105472010260891960969135825495296108485588844773263482111075717621559164571e-5), SC_(0.005835753212813880809149221102849630885873166704363251154472283807361205049627932150074672148918803835), SC_(0.005798022146499808194651141910961480026480765560011905114828468776298116098612959010886028689162020159), SC_(0.6004177706865073544125590352218706135767610039282490834027143885936074424371728390348301819352601802e-5) }, + { SC_(0.000189524769666604697704315185546875), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.1796557336849424692406689104239024765042200608881835430567416773207369351937657695650617424210018888e-4), SC_(0.001990536826966493253315051683042278792028707191318027292195549897452750247261475093835552047207745187), SC_(0.002006711597590013401468703070801418094985605078070170586988046382869058180996736843814479970234253117), SC_(0.1797938886665816111546207376864229930174199752137438773157899254619837324332664336338806422215765779e-4) }, + { SC_(0.000192062419955618679523468017578125), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(0.1997007380345636519012160688272475471637170882029111666252191043746287267689696888742591242751196805e-4), SC_(0.001843807506980603671910012661453293630246677421382519941082616949309752626351766791791862337382784091), SC_(0.001849886532593573661400070780424759454463589645352740043764274373971661127987937804375430892260244928), SC_(0.1997691988091226273460600578579558897018813604631722104139605589613363641308977901057466319976176573e-4) }, + { SC_(0.000197409986867569386959075927734375), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(0.3900706360637590516902273089490055676836659797941738015420465207351832978989531839463733334366443528e-4), SC_(0.0009998438062383963525237765700999987873909040812122100127871297772411769242332000262853333271107510088), SC_(0.0009985476058982296857755428868738502293145281410579577337735183707460690623522229547159518794838218807), SC_(0.3899706079065217173064727949837970492261591351984637334928227588688388724755060897533033646258837033e-4) }, + { SC_(0.000200433540157973766326904296875), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(0.0001165642314418571438389116095687185770191676611571831362232739210917131854532007760838612648063807577), SC_(0.0003450881684597984545156629598176929030554551944722181493887808541498995149099971654672742212976212382), SC_(0.000344531487435080587996581184991597633920947595793743173624605084058687394370650230150985102917571564), SC_(0.0001164548718999400529978420153763543470374657904952870508703195121377721699401880120697912615042150656) }, + { SC_(0.000201712871785275638103485107421875), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(0.0007109042855208672692538902711334912070110787837516007451110452757843093305609955137856181973799623699), SC_(0.5727061104613274714542049308897648944869824870715266511519647624714834977020930613184931928804865712e-4), SC_(0.572545235827381566062517813619571365490522965500461926942728769806135449199767354030399344334521915e-4), SC_(0.0007102014146053586763907906294401428093280820267823791138216723776108529989928551629380979730701541429) }, + { SC_(0.000202038048882968723773956298828125), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(0.0007108808926444719356634987182083699554158792625978663878279211571974254969136901098044989130778896454), SC_(0.5733615341286943712697625965154707052145159439326207586623199515848775799831762052599797332031959775e-4), SC_(0.5737361337797812046604936866005020558298800055335654839638296104323537966261206910309005804658440484e-4), SC_(0.0007125174871506509349505481393702467360696219336826099095913940262100527406319603549591505150740922423) }, + { SC_(0.000203003306523896753787994384765625), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(0.1924718010450550229023175498820066784330245913282683806285094421893851361583588241405063661912026142e-4), SC_(0.002136678418804191267904907570735248742576863787107086309129399014490157978220828417534601309275736972), SC_(0.002144776427362447724408202397112009715809050375738611512084552874053238342123567205623277779639912253), SC_(0.1925409633864863319843539312795525201712575488316262216828048330209748226943561612442767334413659919e-4) }, + { SC_(0.000210410027648322284221649169921875), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(0.001440804674824610988291691632840996289761731049708915148272424152850586843963735450399613160983432033), SC_(0.3061572431983649706261203447126196012225155910812601040505811721265421170403108706519152693941726595e-4), SC_(0.3064417401603668808802807582223496681778532339549808274361332335177087031050603830397626468513232021e-4), SC_(0.001450016164851483680185481592900009868606747040496359440797799118358783824823278697042315245629082662) }, + { SC_(0.000214335610507987439632415771484375), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(0.001477997488472159646052737312392763691576347016285258607148142605842248686744642168868722194265860389), SC_(0.312187456224776987649473684162860543114761774934996700758830153187252639356599966353895365505881486e-4), SC_(0.3118407266380842401907943809128651196217467856703703336348098522270126372090931364029407685777491463e-4), SC_(0.001466771980973752402680274074427599623882226607395130714492195433404032667978066352521438934507585175) }, + { SC_(0.0002199326991103589534759521484375), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(0.5001608351274270893703392798431617026252099183275884172228310913200082179174858165729284452585968016e-4), SC_(0.0009678605988457752144452083032164797821729283457598996140995264725241813998825669561062054839138795176), SC_(0.0009666157400708285158900537971923846587515681259239920530646072737550145478127978933092866732951670127), SC_(0.5000143914881696063981774695669227545964322214387942346487170888175636125875308590856421699092665313e-4) }, + { SC_(0.000232979291467927396297454833984375), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(0.0005230815968609494976281337878106819851742104964906414082701161800901835643057670673524705854858947704), SC_(0.0001038299171161096079630431831740582227835121849788182116698311698748978744288527389672623612117561919), SC_(0.0001037919911170713629739843869327555111210098165546314444992157149260172464283771120936892764664033519), SC_(0.0005226530177447886164249969574338553974054237430458171773473869344648631756615047480272558858843731446) }, + { SC_(0.000234849067055620253086090087890625), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(0.2229024031621209938634983040363196929411598636080722514734088454622462069214146924812490443572142186e-4), SC_(0.002499814581105344975577808935270930593479405256770362320696562085232347994691079726326344279956966904), SC_(0.002453773264816199734106719361238482117004294927134517313327669702559073064273543792564964543589845889), SC_(0.2225087815463859344730942071506737921998357743807069041937707394349041779386936585117871594862441809e-4) }, + { SC_(0.00023615430109202861785888671875), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(0.0001371786846136696899948808921591789205255835606376989488924596918945743817217009847082704008465958583), SC_(0.0004057780271157213643952443714081323388332040336502463760437278469647185263249436573929658975169706634), SC_(0.0004067445484245712015744438470375293236424613083352330101994249099379818820378950203886193818585259962), SC_(0.0001373685651801585256186166545654584138440136668410770944830630576400151867648451099212417799550544612) }, + { SC_(0.0002399935037828981876373291015625), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(0.001653233361136885377885830322738934006543735483220431993709111065666807028123234624736817270230025187), SC_(0.34950716956410311160520895370610476274118422360034597794203676550808716078043576007696616082179271e-4), SC_(0.3492227040914839022681018334364188583990406425776886430535009886486121589834748840566852504622011467e-4), SC_(0.001644023643355722952751783376047726070374890257773336744371598345870131991874261085075856384232070772) }, + { SC_(0.000240663808654062449932098388671875), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(0.00165830611818981375944631992167832683930988216739257888059037878058213628937575066620072958510777371), SC_(0.3504973269091630012324327311511173870573293831586235372952919096441580651775282654359243305163955462e-4), SC_(0.3501841276553943704240425034855202811616579822932515373643701001770774600020330332513490619599819498e-4), SC_(0.001648166406725010000161911507685863160267096533180304455512293776263284518578135432447247423207174993) }, + { SC_(0.000241104964516125619411468505859375), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(0.0005421017331489480678951816991201867214304656555888446465177476479792268681231829481978319406118369193), SC_(0.0001075198334736502549993260711427108076180287078580280917962893812101869108274042665560389665945267138), SC_(0.0001073434773598673640730252295858532758351079932866425953319352959079046722753038651965655088978780395), SC_(0.0005401090178847103534643769074786781050599628535574273823686007395044371171846809162442532479660383518) }, + { SC_(0.000242538066231645643711090087890625), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(0.2523861606086595170329409521684736727660127347762931744225363832476065910675930735592789997472933436e-4), SC_(0.00234641889313599165992023803249929262627737916687108757522625703559890973765564563680853015330643168), SC_(0.002318191857840801937676566846928506986690904401550113902072425111003894653739537657788977372098010517), SC_(0.252068048552960374518687430188528727010683246438838590455520187232225082832407639816861101246863538e-4) }, + { SC_(0.0002521783462725579738616943359375), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(0.4985665041899420931468863251165785292058279934723079747433164534318480434543778350089449436467575384e-4), SC_(0.001280833919691630171430140778500200970923663133281056271651875090106135745971244611167459222879422837), SC_(0.001272013431302424598534011556059701199519215138200630761854617981620939291506723220145175284556605091), SC_(0.4978855580908831208497442923937496301971592989550846796338826902901933841963114719996412089795524488e-4) }, + { SC_(0.0002549183554947376251220703125), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(0.5802625958503400373158044098702703524714311254311155645383095475724643824174515927645516566800226911e-4), SC_(0.001126424944152534663277111363436506286318768728705908922840294396853161091051104672054287064946586942), SC_(0.001115833226481153512785853377898053180422880528046586792718353201570977358087862291399243904019389172), SC_(0.5790160020679423329005978128683442950862551983914145112368974718007248362860374511903202268712175193e-4) }, + { SC_(0.00025542793446220457553863525390625), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(0.821415692023273265224411124131827465895902746524856249735709645537346294184518905536911725823013859e-5), SC_(0.008179778387059270264352324148427679679085972255787036171203077258586479603903819254993332604898902236), SC_(0.007734694110517225954722949462244548257442448728658934477073558934645217372989743687040211363470684257), SC_(0.8199284499517940503635883186874152962237044027953805304639711887391396900402825483406303642852697041e-5) }, + { SC_(0.00025692817871458828449249267578125), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(0.0005777041526425997517254635399151714486456613040073246365056627241047891271651779038869998725848137648), SC_(0.0001145783825179985300970890476438674053235295980654114720007243381955348227449777774563324061635134145), SC_(0.0001143859656309264650070815161758663360138202787871767027380348038363163050370228476504051993300482981), SC_(0.000575530001551711469685597804256943101429992122300633247571376643966306979729857926203994492446814401) }, + { SC_(0.00025796328554861247539520263671875), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(0.0005806073777632786664135843880424342427095766844645986583735045672671988537776626953224350090866533571), SC_(0.0001150907980054630680853892124249445253801267000339447731671428849822581378922494929967775725995595079), SC_(0.0001147961914870638212129410232192844430915884023355681062735357819032905750337435054983288386889947696), SC_(0.0005772788720788034982441467727093006763849964660518542663903522804462058224676482117294865734320346352) }, + { SC_(0.0002616834244690835475921630859375), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(0.001676267209840469901204826496043136841524500638498841809198855487886544872126264929502309565080003078), SC_(0.4106723517894600553977870875927418356284588224510317149647179954074231612576655876886537303633382388e-4), SC_(0.4100872157540957141451331606467085637231547963967193391070547213646338574109449281418806160243702785e-4), SC_(0.001661117500203170815562506357884220748671767103026243854949469646819636497237129267605616226860164456) }, + { SC_(0.000265066628344357013702392578125), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(0.2755540429520417974501524132166046657676913688437806213892828316374403852666651463455528132795031429e-4), SC_(0.002539857432693927657970826521223207358316855724563925528714350143973311962776949855658676682700042182), SC_(0.002557881606896473596401089301557166040084293845804098208976124030979904686648676518027787026083789816), SC_(0.2757571461771687541561344079217174565255283224545622873586041295027257596452073785078407638063745421e-4) }, + { SC_(0.0002692660200409591197967529296875), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(0.8648297216061751156798189097376185475222585040164280224487602289210095736547958424161629007239918228e-5), SC_(0.008290743463719080706429435288114183393365038820581547150357890568078448226639919648533230110600342516), SC_(0.008472124264970794221542431608210700614510825925812144853332756945776894750370213391644356853761552154), SC_(0.8654351056757429380787619925790998784894620047797700543327918435122876142551756580911552733649202069e-5) }, + { SC_(0.00028241312247700989246368408203125), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(0.9068636862122686321502159121352223958287529498763257304023878292044618583276545364357688440493681464e-5), SC_(0.008640035396379330004908329777007757080328106697504352312818265938845772641507133064268722898535885972), SC_(0.008945165553850494460715224378001237159857916787367570663486974067062594705865710550319899050190112315), SC_(0.9078828146614938746353686104813225627955142465149656228438244091317085019741290371808098344788547802e-5) }, + { SC_(0.0002877562656067311763763427734375), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(0.0001675310712897910117700121415390567915555540353017200932772983086941511734434907183187088008631070327), SC_(0.000496367412647784423347008357225483467449872251133917949311192560124091988283396621391989919381327176), SC_(0.0004937051787461425528426447146347102261109332859557527848729597497988449517644148393151390541774243973), SC_(0.0001670079871553428219513260537639812292271888900614708452693003865673448700578212414198343089467576793) }, + { SC_(0.0002893155324272811412811279296875), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(0.2744842948667532487034102066236040045532470315127823168950794401837220883626580430849496644022773233e-4), SC_(0.003066033729472275290026783801019525079402955885148133213707597682659936075291261116890422109147920419), SC_(0.003035924219663829269392644310945387089474312323772279402202511853172801447214539945447046682847083169), SC_(0.2742269319745298993903012333790533294733390671842651336143080543778357446177998451375416225685982602e-4) }, + { SC_(0.0002993456437252461910247802734375), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(0.002047414025675023709988539490832280525679906470066817718770978932169883282494740451098439061328446143), SC_(0.4354887554051094918576806232669585920941237420544123856803290544853148114773971728896941269897720274e-4), SC_(0.4360422916552334830173845437914835276260489850564965886937830805539078461438064422703927423795155176e-4), SC_(0.002065328086064729421182928543504598934894376166013348548151353652673525872283641156340998105217789053) }, + { SC_(0.00030238283216021955013275146484375), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(0.00017566565728245500677764554131968311669347771072506376352426848999340136078053394952308152017824448), SC_(0.0005196569468253478149205889182622131793788417659672984463187518141330784535000202243233278033726945059), SC_(0.0005207339009658372294070030390415453961397850227588362167502936147636125344570546625907325120362531547), SC_(0.0001758772415067925478261199571218335777147731916818454154077265317519240184139934204847339754869593142) }, + { SC_(0.0003109485842287540435791015625), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(0.999781359290938356105999677303506412435402141627357907282613856130982765563930065822862486415163191e-5), SC_(0.00990030895182829105918652356117963105593979792558446433731229221406376202919919349902733575088722318), SC_(0.009466252584933207122861035482144139470835025120241186772575991491643297254378410532538678131637855503), SC_(0.9983303065416729589923804614847525916406889287531443289174687562044207658936804476056044597040942485e-5) }, + { SC_(0.00031231902539730072021484375), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(0.0001817585223413142032007810501544179877444930358946680233498722362468058953642677820860438565401169132), SC_(0.0005383650473814283714159810352217421782947394008916052651961442552720793634112741205604983151247145487), SC_(0.0005362160194024868514865273980016187169473602995010779402948562686031974740422896981089276013248278623), SC_(0.0001813362889498750441046195050638018401281153643081560743015654753402861573215805368669401047091227919) }, + { SC_(0.00031888621742837131023406982421875), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(0.001121999694097462011548242581469157934411496004546156533242341501089328321023536772039926980728124667), SC_(0.9049598052006638942633426221653670816973803086879367740669577595188294370557559320420876305035403674e-4), SC_(0.905558837583469852893189156674957617602951624945156327299704910512994155812858653548253422381642354e-4), SC_(0.001124616162241124456613433957097880534237223373573312173556839058773305453684169371341063623920432532) }, + { SC_(0.0003198894555680453777313232421875), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(0.6323946219539540500654865642285259766148611231207153476812083614268460616017358769633053899853030561e-4), SC_(0.001624227881571833296499178941572125206240491132069416087630074111606184737426907710792091526373264215), SC_(0.00161406096996548646294435962980722462935022307864563328320357381108414535389934938557886458157871431), SC_(0.6316096059933547833001620707005857613680581190847468782154892277549277254127764834362606591317440617e-4) }, + { SC_(0.00032462298986501991748809814453125), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(0.7388005664594334719110248889993772564617668131459262407591033128994902832456440010593486609228157979e-4), SC_(0.001433331350287553795080014481053507666182608689960332104326612135619186843798395569469080520629030593), SC_(0.001422024144580621504883621552261066872117213757451641720093737252305498858530786405500290300050027905), SC_(0.7374696955161047256371453655837128403512492240614953289999154780438149658863199717499268535242028146e-4) }, + { SC_(0.00032712865504436194896697998046875), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(0.3104650020406313282637221820311055687708265516067461426351520519194641957091752148225909983010339478e-4), SC_(0.003479324303766134164731732845116479912878526838829613025879340847087427575408906880049068770467368166), SC_(0.003420537043917818424061522018949686713119113874171842050279648809125302671917140797914354035583438321), SC_(0.3099622170897086715405381834407145463494075770328414380129073135657323485684646909476957700139755147e-4) }, + { SC_(0.0003275294438935816287994384765625), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(0.001159653032570633283265496261978586945698374698339432150735795399089708034777045703379489483883742752), SC_(0.9311410353718132085511152710928386925799736061572497590681737111775533150092424587996087409923767577e-4), SC_(0.9284538416633000706684285114297553943083277813525600484704844879594634228748849551977478658336515702e-4), SC_(0.001147920271635161049341825658610978667085189483261675705914088031060542126184381305646381925420621476) }, + { SC_(0.0003295018686912953853607177734375), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(0.0007380292272540569071904089923354018734155178844985397604545768925295367660520567701054358317859497976), SC_(0.0001466900951404596120037907769707497347869801717837719120323880182084622230403144031414429654335128906), SC_(0.0001469491155177602003965384687869711575941158507006708905960295777285362828859443953911938184705568349), SC_(0.0007409557066705828772682803164240954440533823385415124606845185689357900943697168298245898887333435751) }, + { SC_(0.0003323826822452247142791748046875), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(0.002115286426982160413183239481718462592722484236410142976720622572433915312895810837291520059936791102), SC_(0.5210903444874990483441722953581382075189367835041015335788006861780606172574901054675248035894876841e-4), SC_(0.5214142942354255616373231810852240272907227322606279497286440410816322834901108612314688518433950889e-4), SC_(0.002123673313741037675925380318655612157150994724208880007655136433847121146627803766244508832638397386) }, + { SC_(0.0003341056290082633495330810546875), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(0.0001943779152086574058234148383995650368093348131115098902175010739435338093724076280980229122496239904), SC_(0.0005756159947458861330649876293371327438070112488115501319798334090382285665501685143585576108118393931), SC_(0.0005739229241102373356217986023453836770187815245022565749972001708519622035845947173349284243865890229), SC_(0.0001940452716286839209731808154721856833770169564998227856009728939685434117993179055899587406859969863) }, + { SC_(0.00033410708419978618621826171875), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(0.659602677633504467098674190142373564177139981283665170154795014327357813752907991157657941261202968e-4), SC_(0.001684781520074534177336342375774363121609820567585907012748046164075346249572130667736759648975554492), SC_(0.001697450340579366722147068988398130755762728395680327682608758830493027598747228825552271763429578473), SC_(0.6605809677093912885675432799056808586036091295939990234802301693732097100626209055387535340304140548e-4) }, + { SC_(0.00033712954609654843807220458984375), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(0.7673198539176342121999154534236011836453931261270542999005390764669387581358974232423381942917603879e-4), SC_(0.001489031026464053054434737062010173877862105018409875853117979097017812324189164145060457824624028718), SC_(0.00147633971056037809908678134173460002692945401062354687676723197072457153726536105085368648117192593), SC_(0.7658259780342301257282246703690424477835745633848626191997494093219055754488823995476693779885533085e-4) }, + { SC_(0.00033780143712647259235382080078125), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(0.7686166266790239584329017865992379690248097155171537148941213880021354164423115867736687121288396261e-4), SC_(0.001490010400404577787200191391672360588573798844721463331884138191122658978849612053294575839101929823), SC_(0.001481237254373783485178683256667803391082802581072622261243866147098203341066022096491960358005953283), SC_(0.767584084281454126864248492666950194288019451908401337096083450812150286830404422316824975326149813e-4) }, + { SC_(0.000346417888067662715911865234375), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(0.6848344614603044117934068299369051773836418442244329855102852670430254354259612224133169256554603219e-4), SC_(0.001758863375947105704332414228570283215167895078038366740612491758763006717572443039795819231082672151), SC_(0.001747974633574594365792295929799066662902161018245537882908076291595175828681614382534122859114610512), SC_(0.683993646450635881785478673190563139849350769752272796310113340012995205607591969690837122795723782e-4) }, + { SC_(0.0003575843875296413898468017578125), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(0.3715866227377179051960562016734922269079787936264774387366809061733062760879713604303497657118659252e-4), SC_(0.003413594010214759680029138532367394858946057856146844551382191785159770560439699582758162189362749138), SC_(0.003463744950002668857985820579100979866841147539188246434792383382103111911761401119438268055803768631), SC_(0.3721522398903367195036209465905190799925440543009703820385341402819796605264881507651986277379395206e-4) }, + { SC_(0.000362039194442331790924072265625), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(0.0002102170740062947512833514453900627854325351270218051523152534713216688169093515562053545167125194081), SC_(0.000621644037481925543465527229840055538608648320908687796498602283588491643481666769141746947098162378), SC_(0.0006240062235283806466147874315885809636845030367756705186532963790801446844920030057276076735988696235), SC_(0.0002106811997495993486999103208760614963810263796692963557867984048967071497756659478914590452967797421) }, + { SC_(0.00037188109126873314380645751953125), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(0.00130576083396162409288630636553882094864844554067233136610910610417139241506912552802257820087961337), SC_(0.0001054731768662731181296121969910383870149108646940442056750016958777738009938267698332071198110593537), SC_(0.0001056673670268265831538161930502433245495292327591272784470245058847775145910021844952745350686876708), SC_(0.00131424059078500705747414845504142041596371246827912469724516782538785297723662686551622378489550495) }, + { SC_(0.0003719279193319380283355712890625), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(0.002386431908097015187425943091958790421450718003732678551083126321527823323530172164429782824897561427), SC_(0.5838365417734472841014213185332862349379008708166806046505723919528013468564289138873400005486512473e-4), SC_(0.5827009476078217758504928930120539045715540494642062058280981226429528594715973928062169291091438752e-4), SC_(0.002357046841686479294559286227079091516780193999332019530762598846954548542351374941236274685752835037) }, + { SC_(0.0003780931583605706691741943359375), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(0.1215555062280437782079819399507679907362468834541745213263400147283354976912765042683468400212862047e-4), SC_(0.01200168051087055324068291562501226421831085178610527497765805041151606452964222069019428087659845723), SC_(0.01154241581866780625827403900983535567458418600034130125837862755914283146685272126185859162771393691), SC_(0.1214018005342248138513115171737355018592000913922432189436171669094377891488475622156924212118719025e-4) }, + { SC_(0.00037963068461976945400238037109375), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(0.7496029716966575008531516587118666490947618472330567448579266970601485871936223887254265868312512196e-4), SC_(0.001915966070260468653670708309083776664651569418948694879526317386427972322002361840923503902772119834), SC_(0.001927082263997676846695368430766598437544016996136626678702680184585150844235036723352387704740645087), SC_(0.7504614244569459671210532790498531121229619638907988938732730184261230380108380759322612174477626951e-4) }, + { SC_(0.00038230969221331179141998291015625), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(0.002424698119903794547671257799815547682342270190827344088118750584487285587873506232159829287867550584), SC_(0.5990388586512212598434258936528203139380448343356072212782365141091238427601075632469573762368221281e-4), SC_(0.6000604486451228384084365508640475220481190289045899476681718351642645016427572894506979054718714817e-4), SC_(0.002451134334445301762727371946607993793018690855129079549414901467451604113944701358657121207664100314) }, + { SC_(0.00038428153493441641330718994140625), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(0.872994227800991103806900064781182085219791187290149716450065525722528925598788952026695489886821339e-4), SC_(0.001683308765518597689966333328899499486327066578068514792755735659850835434542314719891145613688787173), SC_(0.001696796877530000858230519666718228453642060449328318815155923513656361473405209091859962377774310814), SC_(0.8745820214474159617302759902026164246875259918932184496488830583964280308490297194549284024425736932e-4) }, + { SC_(0.00039078187546692788600921630859375), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(0.4069961376983106090826200306594605739681743990980570494409895556224007745897547012006041181658729274e-4), SC_(0.003811939867106956709725477129067490435832641221373431971568100346865364755451832724297813464770800842), SC_(0.003705203033833278548134351952264074951314826333221450998099485347898422937212707771764446790106671192), SC_(0.4057911615456531185681560503508881733333428988840803782377781742570200414238586157543569564817966353e-4) }, + { SC_(0.0003931194660253822803497314453125), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(0.4091117067777540381863503871497797241418423317084630820161979764142528837808366553620241139314196501e-4), SC_(0.003805845495979772429904763309058088250488158661715991769184998972836499360801091759852797696892456377), SC_(0.00375484673414790434699754371249683400781397880066491279769223182677820035757431046670676640534336839), SC_(0.4085364390813468450331453134601893483738538205145145142359785426407229838401153713956481095207209303e-4) }, + { SC_(0.0004005068331025540828704833984375), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(0.002740392254950158936887987185534328347734765362779443165233719773762275502798626486216205780104837741), SC_(0.5826918766013963348176951634640356649230039714786269060052913928403658029900287648242454915996213317e-4), SC_(0.5833653116998624627778977112133294534090907288150345599697171860133791977096695395131417271442343884e-4), SC_(0.002762178109802308466241632700775026527053510323810251939847337558664272167235861562860763767742996375) }, + { SC_(0.000401491648517549037933349609375), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(0.0002337177523525441743048802967268920429094460252063270730455203849659387248616086052448744283372737953), SC_(0.0006924037935655123530875341545384324778347009469420368648765748539847302181796653564583573078298809782), SC_(0.0006889921827608865012383374696493435794917803124680620366872628387665419560893855664432211784200546609), SC_(0.0002330473954870517447265454341859771377735639578256684416463712680661980315212079947718275456394454963) }, + { SC_(0.00040288010495714843273162841796875), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(0.001425052549065087082659623856987651002499527514910457588209324131633681420296162528282003424661482849), SC_(0.0001145042192987924301675062636204474057088145408600051799157549829497934626933037795627901384886657052), SC_(0.0001142365431108919718742068644675349307046022618420796329423374105941639739418506537011166204552592469), SC_(0.001413365482118340693274902038024867381373813042209384768002387953866480713530962140800227349658556371) }, + { SC_(0.00040469245868735015392303466796875), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(0.9198290888998629592401943934478629851484411718286417968882541077342059845606064451136412221006846604e-4), SC_(0.001776654375403298857356356626640279584364547474461060158120164716092751039677069528392378416103424706), SC_(0.001782930305105866049586325871140792488252372092883920001971376517343305047962956557571207068787459028), SC_(0.9205678018320168913950473916084790640270756239649681232418090898689690436803387558415968497841429691e-4) }, + { SC_(0.00040956688462756574153900146484375), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(0.002597151714760409586008110316396422541516237976204946696049163826908528977550968332184973585496570622), SC_(0.6417316745962089487000186995559225437153434815096994567268493206335222932839899913981967035277117163e-4), SC_(0.6428588127234192269414331214710336421556193212612127960168164738858017142311444761289493905368036967e-4), SC_(0.002626315890078606433652755347889780529487707381101654092976048913786815120071557650210943761168836498) }, + { SC_(0.00041155910002999007701873779296875), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(0.4282882626979436035472486492236380347394581937172656972424384953215471646644366687647322894464015635e-4), SC_(0.003983166892564107183903106198130198811644611783517500402772462776654241619934337671278672815761914359), SC_(0.003932120716646300415460672195598032164723013517471945954494036625123564484599033678313483630611647923), SC_(0.4277124109084882840044516088504462195512253374021496432692205705306303457769082599494295051292462791e-4) }, + { SC_(0.0004116668715141713619232177734375), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(0.8142705860900798905962240774789837490692126528200616638324138624316347536168276730475243765419331492e-4), SC_(0.002095960759745676999414954732769902209956851898418538742559036776670228687470515053490692800009446453), SC_(0.002071518207459379164884736195965239355753126673400677616053439762526791878458858888689766453886743027), SC_(0.8123823129082408581823521689802304886525875083388921591816920072609297909979468784708398871574400402e-4) }, + { SC_(0.00041743903420865535736083984375), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(0.0009389035622706013929404072761599010044676239452116767226592975584921769301103556661601336076724018559), SC_(0.0001861846605369751307325683997515539025141426218386572079880217548540765269055408723353127650737443466), SC_(0.0001858207975095769018375349127162573907939319455234041998748030348647687933414059910169995308775761027), SC_(0.0009347929882955082574431974009241212989905902750552220971481279280846245251893111542597123051605652936) }, + { SC_(0.0004232702194713056087493896484375), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(0.4397984840097120315094317762040667530481296363380535113044404677337263456301269699720814705693030337e-4), SC_(0.004036631279247960666797216830226534646263016800266675982872860658973768013115144953208864512550591872), SC_(0.004104149520816017796648950089517611738985091990648181067087950254772190773263978685933495684089991362), SC_(0.4405603305721754604637568092815861811916412532285531673844607300957414621381420991702962019178188352e-4) }, + { SC_(0.00042389382724650204181671142578125), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(0.1361459058321553538474232331117209469298269616298073938594264353306791299309154554608497397583277002e-4), SC_(0.01304966594128641329573668755925912906726562545160952089267214860610467647948695153912822394840517409), SC_(0.01333723524563792102296791742818470666912298081122034149411635804344561383203139527159697555829657188), SC_(0.1362422126806105578124883205220796334447728630077965895599889839263782679884386289042045054744237357e-4) }, + { SC_(0.00042571392259560525417327880859375), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(0.0002475525975035215171003084577432117025037316483311701376443223202439613636316260739590247994760054287), SC_(0.0007328235534329556702312646963271666028195303529181130220260257001296802134092730457269626186614300829), SC_(0.0007319040631614181041227699708467987970511294850742885335291908668826600416041324326813865551783318414), SC_(0.0002473719345747698733355238652419253008887414988820712387313373209736775176911153439205514345037784398) }, + { SC_(0.000428336323238909244537353515625), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(0.0009596225702282524097431516077107738088498896648745889745232731347689035045330009326840238164166682236), SC_(0.000190709549995607105154304809585545934897595499540083275696559821413123680646704089071857143917853236), SC_(0.0001910070306639892460254693948878368055826443872194940986278711438282806553068502044717708980209806577), SC_(0.0009629832627716060811992227248609862992375332830765182061629033095885149194683861560288391275128236708) }, + { SC_(0.000428498373366892337799072265625), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(0.002721555994643353443171650742855128171054301904873564054590311666458759951451096162154481428047750227), SC_(0.6715646974728962424702398871090259958323614413494646977155737651923998095828841623620306318530069581e-4), SC_(0.6724032614391533242431214727641692952385787644875480462173282537833343234582378636421479615453957128e-4), SC_(0.002743254754714854881406702532935949007418024006114125615942559516374694269466675787999520691756165034) }, + { SC_(0.000432331464253365993499755859375), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(0.001527765144597753548706480155606687249066147613622073622517718026181513504689430776833940328373690763), SC_(0.0001228414577584055563507993808569816673385985752258772410802412204893037654023183498914884673882503917), SC_(0.0001226206083220527166933786814170694228057294144752756003045351139374536603218546793058698783654328766), SC_(0.001518122315711718777386957836905898095712097844241787014002329749801224147995642591281335209760505694) }, + { SC_(0.00043628693674691021442413330078125), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(0.003002598864254667806876187217212785261094805688874636729651941858939064030903439311093218919940718811), SC_(0.6352866843068472331284442001272902140530174429763337311360891730316850208943413270440468577099254014e-4), SC_(0.6349423887927978100804738942252415931999746657062958201402698221459256345373564869286512423447691922e-4), SC_(0.002991461387562920632565594792412264854042779557838337529186547618158382723755267671009383344035489322) }, + { SC_(0.00043938713497482240200042724609375), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(0.0009881850832753946433778595439093159292725343368198877150838546639691489345877370610194208710289861564), SC_(0.0001959664600177965960007160492093113854419663186186977964943359949823361160505827976902299091005070492), SC_(0.0001955982723523693908273575453595438637130774098483785184616336288223705609455713920409123791904462283), SC_(0.0009840257335189732057372409723182958228659453132784492010255642297445761179845884232266572814537391992) }, + { SC_(0.000450702966190874576568603515625), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(0.0001023769121156293282353209349058446191905930796105832641075042368780425523238060928365767367370697321), SC_(0.00197326336812876648232222818372072668756827478280345343324164148624180307404219644308539503822239231), SC_(0.001991095617038957953799962690608018732047432537377550248964648045848108959436916886052183641477616293), SC_(0.0001025868735857180284409707597282163304420404387861135949132429184853447419619500639543212471319993583) }, + { SC_(0.00045636130380444228649139404296875), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(0.4324917237287118164879006240402756735964384972245211879828199924587930692432892655100043395471732823e-4), SC_(0.004780817554635916090993657800428441598766960385398423077831585065213587133874020110098777398812827865), SC_(0.004844420946973155134239779230819718094521301581100139088619314401105072776208630561836457158207919636), SC_(0.4330360585463811275777371826437181602547574623867105236061817479003759545405833252380294154258264002e-4) }, + { SC_(0.000462945899926126003265380859375), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(0.002966989645167870404521799768179458546529331763231555315199125162867356496026381271441291152154549402), SC_(0.7265814168659742242347218815300625651930288305079053324076705575290466369456291289704427246817142871e-4), SC_(0.7254301471341328155341217242735822620972158470865953122710741590764513999311116841537931231663108266e-4), SC_(0.002937205733929282143438586911680994254418180055578065784095402083531914959259149695059614574647723411) }, + { SC_(0.00046687744907103478908538818359375), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(0.443103218559764227893163219228776389012579435867226661749179192308548018681707414755743906838441791e-4), SC_(0.004966558959346943889565665255643931402948493826076394353897565386519999763422844472095137899856169214), SC_(0.00488085004454569345362707017563105704599438743967270123162925689987751938477687849413480400010806635), SC_(0.4423695333898552788066803260316648087632325254032500032675344426778365993595417541124604067596864073e-4) }, + { SC_(0.00047170542529784142971038818359375), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(0.4474397748143215045165071537517055728344052878485855248893141028708702903252910923273784641510956642e-4), SC_(0.004988856211804054667951251350659530914970787808356156879360357642928363998692189586697228681479509765), SC_(0.004959577334631913427098765104188994512330572908957253819393352948255480928990470141290316624805842577), SC_(0.4471892160551452960831336020670071849549777868157432862203861834927209369832199233376891035589019426e-4) }, + { SC_(0.00047360430471599102020263671875), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(0.4496640109703729778455874460387358401913869687140902881183137931839317689832621401579419299049810815e-4), SC_(0.005059203070062722613206979650197111671939285612160827461895974926777305656983755264188050483623657951), SC_(0.004931147496234772637344530222195827870925328537568266577972802171357367074839607808313214707874896859), SC_(0.4485673717328137605587866666701120095677508383054131394677341064208849414765668177760970857769492755e-4) }, + { SC_(0.000476029585115611553192138671875), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(0.0001081610754351824422720969783900341476136752120406342128280560448206570131351254334711360371538184605), SC_(0.002086780177798348902199800793022319937560955662753891090603384633350844365008489668061285133910604171), SC_(0.00210030144757346689771619405122743480701683705332526470131694261890294914295020560146229638453560196), SC_(0.0001083202729703048057004590808949178598255796745372446112172281638923324228590840342585417427240765912) }, + { SC_(0.00048200701712630689144134521484375), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(0.0001096958492561847081004162517480564422542546497661641531072169540953070646182244585237776974428835787), SC_(0.002127992070036396535922156174441825275557341139385021696213308283722321894670028628138766818946645589), SC_(0.002111687121899470391162874275266193843119625341047024809589255982973379656409936090179697427517615501), SC_(0.0001095038656983614534638058339270834053658220658018201001524165498853833129480315174794414489491803387) }, + { SC_(0.00048371657612733542919158935546875), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(0.003312664538724669745579633061767605177213142625680491926032076072980428570087380425543362814929929861), SC_(0.7038439243990383599014064796399771235826669128112340567534312371761934588537497215936783135261547383e-4), SC_(0.7044745271405814602927450328815042737857296888163345336366846793080907953557396444457149114069220224e-4), SC_(0.003333058190791941089041169145886197170695143370413312922737022047963311636682015975672953062152189691) }, + { SC_(0.00048389760195277631282806396484375), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(0.001697704960227248190914930374520728638562950077697114723606925182037817102596089848738614542922924691), SC_(0.0001372117572510410892181144020725898073659365880987973106367830109148281713935918504154571668634783014), SC_(0.0001375278157874462079915869647454577664257243593778054553459545243018128265864477319709860044118954218), SC_(0.001711502491081576132792516991266810544726440792608846474728716449420025138688630310800347357690669368) }, + { SC_(0.0004859865293838083744049072265625), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(0.1563285783998417237169009049099777188933825824001728242831274023514699614295514988093936071849648503e-4), SC_(0.01569704711323356196208714128301081739232230753870340580979270520733843494833791801737835357527267414), SC_(0.01459809757679858726137980842088867804649925301902225950400257364354814508191176076611259698628770595), SC_(0.1559597416293518446992219371821265116092970064605010562083358734873714145687608864508575357024963854e-4) }, + { SC_(0.000494983862154185771942138671875), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(0.1591551344027877934027090153219733211136925477169449145974226391517001886478058367868460666136320301e-4), SC_(0.01577176879136673476130963938066177739923623581721967909450995542091441619745772982406385527420016664), SC_(0.01505478607985431542241821212443225121863865633520092399472925813669289253647726361196758371836306281), SC_(0.1589145510088823949472293554314856476174333267181755923994427477890601546875903111851713332889609222e-4) }, + { SC_(0.0004954086034558713436126708984375), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(0.003165268035554394065060057511806985498415085236020801337548985901551121168169437785470368861860921132), SC_(0.777155912988843048018491000660009520307768641074188598838863201772979664536633795076406446929623045e-4), SC_(0.7766730035763363021068086294359619120461971678047108496432131411481676796146782664514995319207375083e-4), SC_(0.00315277448737759248383573660342860649227696965674948978254234320483531363445886209318509114086035576) }, + { SC_(0.00101853697560727596282958984375), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(0.0005925803746345629547106776096649376646692505451191806893607766560269323862711823580922583396422511818), SC_(0.001754838404946687777818351708150695374644610627759963940309395629076380192998489227095350575436197902), SC_(0.001749581011059653261371483780553934368720850650939376732407580703317981687962115313441253231464671646), SC_(0.0005915468983143173542382251476611841183068594487132678695466862725065175904378285479620594045417511459) }, + { SC_(0.001032375730574131011962890625), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(0.0001076390674052197389247160585226586014245621610848857713861454158527560247061734534614222964315899342), SC_(0.01017763500942114729278227098550676567002800908609246753362595274983569917663128117742209787847906989), SC_(0.009689506287469657696840822824785475393897527578939639974614168437970709957564413122118672888792186374), SC_(0.0001070857004619479588308935362977336059958778714200867710225794108685387211285314667138965142250329979) }, + { SC_(0.001137269311584532260894775390625), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(0.0002587907008515375706861949702693025042649568323993192036831467273304047862628448062663563865758000379), SC_(0.005018129312664660631592408207830560712154160091525691860346118463615308953902119996468082376889345596), SC_(0.004984960137888043539353675726304094959491624173365855556521810033852543534113281131526656067228858901), SC_(0.000258399433370571477554298273539343552029093368694434223398056884905025827394359639913060799186487353) }, + { SC_(0.001161884400062263011932373046875), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(0.00264170136769283749038291757092050726981559933057743068942978353440014141420418968595049139217760423), SC_(0.0005207127486756710320205493608155344077033090032623958152030468618300551653208784304529063383217427348), SC_(0.0005147444953259243709905128913375807702228023207477763012762049701748095348776862853749381102865891407), SC_(0.002574378764445748802705283647382566755559269190336148095273482745929717109206354388538803990050037431) }, + { SC_(0.001180238090455532073974609375), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(0.0001229757739551393390214955349681945840945481782454214557033081302165830387905463294978224778730396376), SC_(0.01156103589706383226124328677058326838336984497284539041686838472799199885465752322646342903504281615), SC_(0.01114381027446497385477244860327792325562596090656055757843380866925363717516095269201350699251338579), SC_(0.000122502513839536354359635098535062891140589746728999398868934734298392832302903110595470500324149964) }, + { SC_(0.00130386673845350742340087890625), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(0.009282111042023573687248527243520332744292469265213234601260038392373615130303051186430017827285845458), SC_(0.0001907847763974083396530823590844720172033675564729164969573377978452940298890577144570020374682224871), SC_(0.0001888384957691689099289437715636565126344919189332149369771889610016231410091758286544877450206741438), SC_(0.00865611344694814663143992381114790183963462968283330974459138165918301710550249470981791950723128414) }, + { SC_(0.00131022813729941844940185546875), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(0.002968966118700025452859780589224394307075657131215508160323773565249749771831242695196594069752245929), SC_(0.0005863206252863972857919510018345256755944813561389300489849889247944018524329551554728640551245355367), SC_(0.0005813233114837676948264087770639434894144938428490610422305519999541002901158571065953107020600341721), SC_(0.002912590203641142399398031005893019765880325362687559700989453855592043598610611658329003705609178928) }, + { SC_(0.00131270219571888446807861328125), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(0.0002590205269953961806502164766998557127429653617105839669905216185818691967463236276190165917344830235), SC_(0.006601872434039314872536358963716443549886863343367331784111431439398612382616417998674598343167735552), SC_(0.006686856586804397950181202167941982186967290239499342868217839753398401031596113509507685936653546676), SC_(0.0002596789517524428791643178205074931271611480489480781181967068683569801335446545399946556573549920025) }, + { SC_(0.001335285487584769725799560546875), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(0.004668293176285757850971492124305466197008320000922982042904078099621338933331578917103398761060534321), SC_(0.0003782477224096322425351524778375265471081849968860543669039569149954177207818541889034004375699934118), SC_(0.0003798821810258763894587382913265276093187015245721903371737271809980317845173330012304876008862796108), SC_(0.004739505471115503320484003513490290099889603680713964250209726031423364818261293103394601568149279356) }, + { SC_(0.001337743364274501800537109375), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(0.004754707610568156596024302926299117801002575462773493019820598577032946800546715734791347084197278436), SC_(0.0003807280561840173934134707343111593157317168894612983044950471743557138081661105873511042557987655646), SC_(0.0003787985298547706837399056002395838342066376324035986502298432101208541008730153863874230271034469352), SC_(0.004670645745487267624940732414483907987371026523787860480033165220522179117445327695353543303171344545) }, + { SC_(0.00138142076320946216583251953125), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(0.0001440163866062187298648400015373718991966051187812677665727373907165285309474476092917149037540240831), SC_(0.01360284702905286755447968040314351673593209011569153276845046495832530920752953839785163688019254276), SC_(0.01297806014924962050746054052749395335192275031009249654499208450398316755270473743782310375427945392), SC_(0.0001433066480669546035849136775836489960836794697880990317177979312965933422233405742148136310876636903) }, + { SC_(0.0014266110956668853759765625), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(0.009858877564329991308883488739728390399211014741475720991421523751547728058827797320375821323129338955), SC_(0.0002078599291700553329873539244636882731290660773915637313127029321907353341524640822410745581651549097), SC_(0.000207492094885482824704757642443740460150304197590148442984394293953227197142121544467231098909732548), SC_(0.009740463349430731285862949657024790252580288606138100000416830744213917289028975630150856392261576499) }, + { SC_(0.001478188787586987018585205078125), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(0.4735407853401678479931449081420441219501616601894238432847758331054007351467014963909698654694045242e-4), SC_(0.04228500053412282795710019090497326614927435710713059537476653916954982621681962514525157983150580291), SC_(0.0504433410350218694389860828340814225736433955029699725241195653258108640587565515363037003882693894), SC_(0.4763299535226907492120899973154375318461174268397757721287713540574208989198440358576702211662878201e-4) }, + { SC_(0.001493275747634470462799072265625), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(0.0008751058333752799665001455647751892487586365548725812935687119714871437227737843248890381493252933349), SC_(0.002605156629911852022968249701108827961682369773742050328886248750222868760865380712511853747352898415), SC_(0.00253370282003757099684066509895335525357001827757336396733466137791516304702560859851869912087021882), SC_(0.0008610476993096574057129679040730923411777215581061561433764610141779759591448874622460899582844639528) }, + { SC_(0.001531984074972569942474365234375), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(0.003465998142554625555900662292119476634339863616241175966131473050649391564632028810525614013499787062), SC_(0.0006850779254107689166834039692630317689862097433524515184293129791162755214533514454736220111776012884), SC_(0.0006801834160417256343682607004880543677877598014946213313137857753292593578692005027692203149863999207), SC_(0.003410790222941630598962971773440688510848334764410617921213390321365685842044701338039612319167151086) }, + { SC_(0.00154427415691316127777099609375), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(0.01090553749126714397183675519155829096111524241814946746404257095720853101809311299193217743281973707), SC_(0.0002257061712400335075204855837333040942915523856362056264045617515971247345765171046367033236029436641), SC_(0.0002239086574085424433345462033837216542975011885492657806553288473846498986763915113958373304496730641), SC_(0.01032765439313783030067965335811704147713277952764453260667157563073297864966398854739331657989794842) }, + { SC_(0.001552005298435688018798828125), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(0.0001620533644978919012952393122011078715844935852394571791596083164394130682618157879255082594678963378), SC_(0.01551907513330891429394715737523907320879210452543957523553168417323886797408425230290865552808061929), SC_(0.01437551749438262730135036973520654780045688118819407158510153780243683684478156454498964474725597829), SC_(0.0001607524503293982382830157314247713420904990097114066171716544693533357782691936208682765957825047142) }, + { SC_(0.00157981924712657928466796875), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(0.0001504006933475380548915120572871358367866244666813423739975403297627009295512256027124024949780080434), SC_(0.01736703343760202047410773340708259522791264017128435600913986142853123330682799174318499635188562615), SC_(0.01601071634146948120731943095811590045610668347742815782016647427133897733327140213826127727721582105), SC_(0.0001492294721514972035136404836815645641741811828046409558839140603163192642110885456440944259635664406) }, + { SC_(0.001582155935466289520263671875), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(0.0001504566672478268960907870323153716991037710884375140329815655416481705155776302870154552549813174836), SC_(0.01718505145648600424637118320317784343719547353921002332977594753927245860594689254020735002575189275), SC_(0.0162101410868439495200464815794066967186395488734264053984714099853784846012339763737462126413061859), SC_(0.0001496149157127572384963600707507254384407416017296731503728339281880926298133532449228678752842731446) }, + { SC_(0.0016095121391117572784423828125), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(0.0001522914153511947857235946867975694438583092011810609713109566464520076876523295923494790702022420138), SC_(0.01658799319788774090154427914309328135017237044809687200291128537144671438652582885897018161239663358), SC_(0.01737134983124913746866221000166983387418651381143987852944917783013174495380557470990504189455234591), SC_(0.0001529678487905202270143066594835321460809146548340490050365440912047177170217554405054392638712132182) }, + { SC_(0.0016487292014062404632568359375), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(0.01105252348163104062917045764769083663616813330880394930773720805493147988018728163048659175238349612), SC_(0.000239140749108611820032524104632560169959446550150650977367671547856179651778263935224417321322887926), SC_(0.0002408851701375959818047187721108506684465747301330425092473996282799002610302013510758738538729622331), SC_(0.01161315863871924403322930477552815841800259789591912190569077707292445990763994542627746844613967884) }, + { SC_(0.00166259496472775936126708984375), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(0.0001571121929074422714517234034769884390969095319361781859977416053465603708591615806423163844988144312), SC_(0.01691689168983768565381162697981677418635857970909385582721660798514232769081291328202152408394557518), SC_(0.01819519617316506993718818577052327421700816815955410190824702731224499109948124117728792167991029212), SC_(0.0001582166170828787785076684644060971480825022749609577227440712150546131648653470369417223883190437059) }, + { SC_(0.001727388123981654644012451171875), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(0.001008567389240741500997416837717979099268649226781399136050369325158550370767008508176483563481594559), SC_(0.002994388251855182413532325280483025467576192480443088701104774480037396850581013705707815606457519556), SC_(0.002949264791293905948941308430486799944779947075171599484814519590489201435688283160130458982173063021), SC_(0.0009996909466152114072398367622315512416687349040368804970048365321059663071378788545345866646646487913) }, + { SC_(0.001735631260089576244354248046875), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(0.0003453669217074619016047955448003629705812157743008392760131165739934622091151447812035666730112891873), SC_(0.009112162408671202924638527142931862890155890025680493427059956838283424152977392614399132958386711918), SC_(0.008482774504527491110326133037061875743533203749837115914905032246040291978243383754641012486257704211), SC_(0.0003404769876972207329971451770357874078640577104880156988604201111686424081304759577174013160369368964) }, + { SC_(0.00179820484481751918792724609375), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(0.0004110115688218799627252708253232933935271591964708675409196943466258756225729427814216046192454905822), SC_(0.008091968201655280548170845218926003228422547198847900655481112274697106291842542074301590442896304625), SC_(0.007733225172383586982131166969052850812487948482487220448103600510870375952483418293328785127109283143), SC_(0.000406768207380464317444442611962011859613844205108857952401919172022031650971362369652579376272988428) }, + { SC_(0.001915907836519181728363037109375), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(0.001109471732010866747060304501976706220459200406171200242262195152161816418019131666091038909189008569), SC_(0.00327455650094320190550114756828014991795076376475609075152962377813528801235896123377920242969407473), SC_(0.00331764946339401323897874487217942527829039698292624621569656895210245292329541399128342468704576688), SC_(0.001117949618054621990644914161239180655471425623281238527303716730664640251240413563145260831555467667) }, + { SC_(0.00195966451428830623626708984375), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(0.007118569647620113474946414681173497097630715288801469942232016221817665864177182157871557289301622071), SC_(0.0005611490058385444638494144378229119831462970381673864171653801552983236334247427053924812425416890082), SC_(0.000551550627594995407819675000127881046286712363481617603910264934341801175576632526697023102520096727), SC_(0.006701417519555523966132886782703948394415923155871747931189397993564652430041140108540665408099907693) }, + { SC_(0.00195981003344058990478515625), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(0.0001872235404192355339711985846832336688039040111416282021920106691778282424794686178616842968767169637), SC_(0.02238434914416615105846538447712317987509768166060714413216176333853139905239126004242116090703682306), SC_(0.01922090441596452309975080378188713821204132080868357718684817543679182174842430970292852206493629736), SC_(0.000184487936027742050389596669461715589055417303723461247975787339877577335947726231267649973574958601) }, + { SC_(0.0020118239335715770721435546875), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(0.0004613550663170065876534085411757398927634744611587706975108592971524718138052402295499625524619509997), SC_(0.009188175443188340301565300744669477628689342887369854575958026072943666016494738671087143836389538247), SC_(0.008534042146926434505731594090880203907757601990617842033017197056351832593167847181570517714220834107), SC_(0.0004536085163103076367810482307421662883406073419322984722185853558448394095049599657847039919701614613) }, + { SC_(0.00203948165290057659149169921875), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(0.0004043985858842940486523057156392832768160508551793531718844321687455532692324912307388483374530248861), SC_(0.01051322982109013075067806040426402863474356119656555069635790440484791700602633082864229693209505395), SC_(0.01013872640114819839656038308035003521837564413060251025422251631210885820136071215133639306882436006), SC_(0.0004014888097294212014118433167237553565367218373184927297515569594508798122768240818617459579337934179) }, + { SC_(0.002051885239779949188232421875), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(0.007106712056734232859929004289309463811830494051815327146058746454865361123365125841016782161117266385), SC_(0.0005796693287500822712217121036223525558166278987439836167402027011171038689733414112798326630788353199), SC_(0.0005853428869472806191742308760938704667564313246553374076381468309926274572653482875776879134766138745), SC_(0.007353423620977223307440874369845854361293893842214936759880181110209918885739662185244316625152777136) }, + { SC_(0.0020552114583551883697509765625), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(0.0004076699626404374877550207501771832020863936862869307542608498932538986045316968028385804096765317177), SC_(0.01061462524611053778648235653384676901738200482336848703208377065654067693066040889298162655174760203), SC_(0.01019830682109873960576893885290703857492391870040292933890806533294857866036736949549625661789110626), SC_(0.0004044349133677749509929370138237730071969395638153173693565510471961562479625655240597602987452488882) }, + { SC_(0.0021306932903826236724853515625), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(0.6870227199299201514731646057624228867747299820690680478865501191598869627743437700133150027864862925e-4), SC_(0.07400615787312898684148634145037605530008289525544811398276751195511011701036279198353976640477289565), SC_(0.05994697932020012469595127371355923709683411761463128490547574016116968114881726970408702527289256178), SC_(0.6821483905832786090172422084771790510682476612388623892830920848172137447660612927367015407061385018e-4) }, + { SC_(0.00224486016668379306793212890625), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(0.001296068985467225125663854876780203188136785771140631864189564044556263876823986739842225468452977125), SC_(0.003817184387588443574312549141339928531533570924179245470249104526770582289387906834615035544086587107), SC_(0.003907630197376691500596507305169972944117776346105101257187273320384951563714493143788365340541046755), SC_(0.00131386997964273194992335842520321620834016729208429022578018519613533294017254217018148648217727031) }, + { SC_(0.0023608789779245853424072265625), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(0.005224764872746287770485185045399017879038282255233278811135036092005287784067571552515300160583978879), SC_(0.001045369548194306626312043938645319745249152734626454288760011963646924467105535765035272968321705365), SC_(0.001058635286926974673884417898670101942016476718607869167243611010062182512647507204798182082387882362), SC_(0.005374219243648521539601265100351264756088004250450656398883847997855601127014689618265355680084932713) }, + { SC_(0.00238493341021239757537841796875), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(0.005414058841024210222560600074590393979678166785238037320452068830570623192814692902855013451058944267), SC_(0.001068119837501127542418844497515894143268945066060152366383140285819285716837233097823329255107654474), SC_(0.001057295840678694163611560780432133021892958891726486780664226077157729461313742754328821534064546372), SC_(0.00529210423727156603404701549257083223374533219619785045960124184330210488851447000695859751926218226) }, + { SC_(0.00240380945615470409393310546875), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(0.001409882805901157918801535127012175543298004297589043549478238369377975628408979167513709987686503508), SC_(0.004199656850480846833962141968868974668498229157916199725859666296413705605979234477724074326783687345), SC_(0.004072966644460681729528640038899793435082625570700318834534133245497929429130215378365379376616887641), SC_(0.001384942557473480533328075644932616403328853956694903594733003054577047099516639035238278491798799732) }, + { SC_(0.00245274580083787441253662109375), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(0.7891349136899068955539310194076180017831921354327080192923516783156840365794237853152727617868473452e-4), SC_(0.07921486870594835837934409589190967095656565659116210869548309811720712595427736777470429342606821128), SC_(0.07310005448254868112884068379643351651090106186341179137693894360778388814400471638703941182323860704), SC_(0.7869741513641802995041523911810910172433024235363807499100591740763972562852919762063037547869623284e-4) }, + { SC_(0.00252933171577751636505126953125), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(0.8176697403229846266996555559818052247312725307487871931995466375193087388597217615371536971201537311e-4), SC_(0.09596486245645832601613165324922389448241541200909795681753546187043478114424789653612903741344631286), SC_(0.06687166277723126655712653770877860947472700843533668378566018831471479452487565894471839231925399609), SC_(0.8076976155818566188200010653149334944213560145099305236844467544341042297260284973868512495922231136e-4) }, + { SC_(0.00259913061745464801788330078125), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(0.001520067751211551339572558495816009679672913288882670915638925799959214216233949624001915549155607752), SC_(0.004518373436744513666270709289848389247866145188543191237153696345080066531469783801325525298034473756), SC_(0.004425228466684745435015285852748977262164483960456492500063335815761430104991857878370363371656137107), SC_(0.00150173168326552212642919280547006687235028831089530128861375799288953502553634610428189579268880318) }, + { SC_(0.00260723219253122806549072265625), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(0.0002489101865233414701442716989412672290137679079074799140808081003051673837453106142682406816917045624), SC_(0.02954308319512612653158981438616114551204126619558100680828383098831281876526511490145298898289847989), SC_(0.02572521366743994856090903647893548239243425780262236454883034511057954011800490821490321266981802963), SC_(0.0002455935562448443356200641537673976673302727956459651108919673874189800750032523569272491602736845398) }, + { SC_(0.00272565521299839019775390625), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(0.01938520765072576202724597178265211687262054356203580656880757876442051696763735559633171169638282632), SC_(0.0003987956028435003361721201271586710141248235127166386070697689756487316877021409289795622103021771366), SC_(0.0003947872175884600309793906852484537103747921121072609210617831933463975585222214603098379646099954832), SC_(0.01810334279938381931128823669355197108636973690639396381283588277331401574555715816219786513729514353) }, + { SC_(0.00274447002448141574859619140625), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(0.006056182145129587252051872974852053158724422038147329605079457472650369722048922706308490376993996581), SC_(0.001213632446615582803058301542981651467526654640805420221241792645396979955513617661667967659216677489), SC_(0.001232270579548774859698766195055391640423388819849071341129929649908867799477870368558698415520158551), SC_(0.006266051295508174804206619137941073538417575759369688082466002379135884571498145475297696226807445655) }, + { SC_(0.0027546673081815242767333984375), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(0.006314170372857970195598035738085482991662205293733613893650362818380394426338529085782886044245673977), SC_(0.001239001777917300051613210339477138675364560904178188770350777185829667896050832493977993016324968082), SC_(0.001216054202747964571605837938218053226911930904709252523838331382953158058370349009989511543937151372), SC_(0.006055816399815454243329048874623880954753765013074811180870495948668386990074323428693805621437385383) }, + { SC_(0.0027707130648195743560791015625), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(0.000262104430290475204294819873990060066070198795712059137872310022051934006194445221571089029765575049), SC_(0.0284829023537967868027220908225985228077585734557867329113407528703829106743524682477069995182722935), SC_(0.02995829732820479477409138497931028903536921634843238608377997290628435494686947874856357861233492208), SC_(0.0002633902345461780216522843102520318126465307270884154480466209515290205674856143530439460447664217544) }, + { SC_(0.00279033766128122806549072265625), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(0.0006327284693754996617598174553209619156211537948962261635590581468696242087627947314699098265574271522), SC_(0.01212442468865691193319803685140885215904541008535379956716338013252106472099709363139833743517991665), SC_(0.01242000246339807173580640204852718192752101711719638390595196040211037293065701473269317997342214435), SC_(0.0006362330133689262336125012767214384405652412176309097590065325086545036369673988359423661924072254077) }, + { SC_(0.00280216638930141925811767578125), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(0.01873471184644263214831399372400528667778729951327181861558705985721939647574761000999541688170589151), SC_(0.0004062818099544652355815992662683225409294881481717220441280801335407607003924784105794183457577484454), SC_(0.0004095716129569350005387960022707172935315632344924709279238162401998117836699226641773248061881056227), SC_(0.01978638694199411872506318533951199432680646522644982211123961980480429087192307837552360366191522331) }, + { SC_(0.0028498969040811061859130859375), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(0.01786987926962185929628938564704404882124922957239158839849385425856191638101970196934422099530285818), SC_(0.0004457463375791328195820228220991629200067451831113465652186667519566533952039012365147814486258529655), SC_(0.0004481229403938996328610196613726301421502182903763890836600815409956970278157903318499060295529884435), SC_(0.0184780870607023541630008050365153949343951843331203298758901467899466557452160812937372492186995772) }, + { SC_(0.00288782711140811443328857421875), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(0.01772692499825995466527968010823040174872983738773370527318501734754856284724545764096875624410442287), SC_(0.0004500992902763719404747648851145663806595508928434459953090609785753693889916708101905928031715858243), SC_(0.0004556899006472704926805835534832413865657588281452094921729816570017864622753137717572893517975821741), SC_(0.01915736874454824538695657974676928729363841066577843420066477919905729656928861957250354779710725636) }, + { SC_(0.002994176931679248809814453125), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(0.01931551636686231859527567673968910669430062011678539805076195031053397497345362909213581776265066184), SC_(0.0004704404919143927196325103297800574494693634254826751891917705137544545866738103914835736625848682102), SC_(0.0004686800749980965671823011652807706604819460041715330759490587952799144935052643358660984492411006415), SC_(0.01886530049018224193615956894046589655407168305021311443223766754151269257790528268076592032766869205) }, + { SC_(0.0030127600766718387603759765625), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(0.9642152022317753636135411891420575190140961805839305281435483282867538916850529826006358902259837271e-4), SC_(0.08394157556254607512655778117320333592469559912913244580399498350761619072063917820635958023385614635), SC_(0.1052292664877069133735332012376543006343271529225817722499775716152364731174717901558872086675919346), SC_(0.9717778976186564953249784861048065926325400959866478477751439751460511970403884350076772101224355568e-4) }, + { SC_(0.00301908398978412151336669921875), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(0.00031758907510219221862995676915533470921465751433759260206217105555629420667326060937939058891316705), SC_(0.03254602898466956153960586197558335126181592456720088258539928912410153246745715396981520381623087147), SC_(0.02626670002911664482832527518002429480075937498962745535956132710501585282714208232688011306548657335), SC_(0.0003104188995408078327003572424026432567324576705377824495839301585816278205470332938765608621026034175) }, + { SC_(0.0030219941399991512298583984375), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(0.0006839643276855344270283645163363485701253589911812701245265458916819484734218649243115640313611261006), SC_(0.01302516477118017788610859433779101108262711609275261153453706281106162678718577372428226041760839953), SC_(0.01356458095992091850036601130091971134088283263388002379929520189060333082177480561866952054676410557), SC_(0.0006903652429189556915195684913787245388926887808359637951616551016100522483628744847414319729675699564) }, + { SC_(0.00305299810133874416351318359375), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(0.0006083969978636710117789362912703426290491014244790208883199858340278807157835215318542180353677371515), SC_(0.01614696973026614289503064543169563664448273027160980388107546081341388459710785294386659185953421263), SC_(0.01481884945825778130073800693449117343585743455802551601747283122470214147791322629862742999749477065), SC_(0.0005980403073383179035314536243269016112733232871739591492618047427118209753362387884032899816927690054) }, + { SC_(0.0031141326762735843658447265625), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.000610878293322511900695291319624966682812351795161455118053452353293794762711981837269684563466581295), SC_(0.01521745224691819349892909417017587242304171527932366670132341089430486098958888816373846820162703948), SC_(0.01634786415528652869052206043883371375875295846265269775123589334714398007108891997295832122176842911), SC_(0.0006196947247621228728740821259553915760236832091883181681563578892313236765558558625650154150382501207) }, + { SC_(0.00311936787329614162445068359375), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(0.0007043081568435755081373062629901681851335464429313542551823057381000075619648936013224183883231639624), SC_(0.01330909393881365636914883677537138035220558620058755821128248104456440855210036079489910754790751819), SC_(0.01415404204707865060921089983319914207559651593371262218267234555119030005121506838881378951709964089), SC_(0.0007143390706133690218177953375292843282989800152531278646098873676588065014423387056561628575290728824) }, + { SC_(0.003135732375085353851318359375), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(0.0211268391312315984155097803704270590714718415460595894942712301946251893295445438084092245991676113), SC_(0.0004959764563662260297783981974245690260870439169117967933532270199063579862292845435539728255733459551), SC_(0.0004875989725315172761120570751842438713829985590686703844211809075683642108404209055633556273588605796), SC_(0.01898496883451912386287578120142775526843614823248382486551719169856036554666304559216558977396443989) }, + { SC_(0.003153369762003421783447265625), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(0.01098192320768268477011043068070146831508041601056138440919582252774957190791300885963823877972753961), SC_(0.0008922771466529449040664028496179251269283143010469695145900222675547911748090362811839349949401435057), SC_(0.0008981196840788991910558995682275336299757746274004139581308607114386730651525082915921140214831983871), SC_(0.0112354122853567410181588063522092656289579265702459150620201068377967745095883099570388646320484642) }, + { SC_(0.00318636768497526645660400390625), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(0.007092037747383447419392354044273328113474760754763841089806980027765056744707271107444218088364606031), SC_(0.001414540068821894016648708774112695720066076520600524057157250983384544145825158282240143874997014757), SC_(0.001425078504182808341048340431940918269717165928839102184463058594025851430224344844322825559775880892), SC_(0.007210668323114678000460174907713526631386541364731883353270145939062377227700393438103716383572335648) }, + { SC_(0.00319944065995514392852783203125), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(0.0006376178512371612839972516126806479405071933549224774880805580281681783547604265484848020126522759045), SC_(0.0169260706401302343127659780346757686430018567123410618005967267195269428941337787166321816018841013), SC_(0.01552536289204371964171954539646318468979817554733144460952746639545900383675177480494132441113487452), SC_(0.0006266903598101507516082577986288005206650644749482114517519529392005988515506188961003464271538089257) }, + { SC_(0.00323307514190673828125), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(0.0003347241672218041569141818846735813181734335798902756757024117882797300175994527050203462970107371006), SC_(0.02982064799625215935374883314198754320064896591778741776447571690381294349256265562901975032561201585), SC_(0.03244076823480306683438089255200834270636592202040046014729721841335229868582225911911852839057954565), SC_(0.0003377383849700619920805955055158831704964382308083636057544104154274968913111630418807223620423371708) }, + { SC_(0.00331881828606128692626953125), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(0.001952263606727426646844080643859500879037523997662953323659387087407900410980404615429746417934511403), SC_(0.005827616053002127197091819685287394389318607251891499771255173386866971583088048697401991617277320409), SC_(0.005596020034590851823632254481790495449654427295744842940317654389831514281005027837391702003872077627), SC_(0.001906637696717975323983541243700381302796233092564924680349525799521163849465749652613607996727191189) }, + { SC_(0.0034079276956617832183837890625), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(0.02232489274741262443397457885590853844407666586092148788372689230887387006763753529911090665433486466), SC_(0.0004925497659151255048136651360235947018609501607947687371646450511680272738837804460852368957656344192), SC_(0.0004997034200973949372141354050832402269218622378013406364375267511609289914245794082021333667443501884), SC_(0.0246059377356717672548500910382603691324362638720578805019604220587111721837605019085952652072871553) }, + { SC_(0.00341692590154707431793212890625), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(0.0001094728927907746333953215120304560326833587512874651427250145474269853000179354157016088064553879087), SC_(0.09770186462231986751671024415151997288029053779787130373709577835108047009775894115804449042681065088), SC_(0.1149334879981090914866573418859588400964589373269625662027294967631745476278881126312156763744051644), SC_(0.0001100972864692030407171515128460508774369987925528083026731114549614509171565818803155318330441092195) }, + { SC_(0.00348144001327455043792724609375), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(0.0003593978110274520526206089592154128700350287442320386330636516681668884946807633352605141735970814106), SC_(0.03131371236856295330592184270401366503996284703042175087613378643159052255240398876763295168983987533), SC_(0.0359610617707342011511836217040898582026469107096791447164040569507978656998007313747506452477461326), SC_(0.0003647441404259276116950444119644750692102963602411196171887803778656788830765520203146864162755904271) }, + { SC_(0.00348822050727903842926025390625), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(0.01275585141826719218541663265490512741300227707035527399662791432389657228453156752139416712620645818), SC_(0.001000750499815473336280902200005439220509999458760260090859033268239648860450725256395160952399910034), SC_(0.0009799384614682634332091137196895437675321662583824351872057814735640361438807049822335504430047789778), SC_(0.01185393664899816722874549196161822196802741795226206469829412131561894139332140861651103143646604391) }, + { SC_(0.00350953754968941211700439453125), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(0.0008058284704345638723615605540846328243730906783149447659457867814552340837876845014059332173897147666), SC_(0.01611548937310748494212484742669976909952559612423185729268654663555018234640047617328680729671084263), SC_(0.01481104179431115717523340342150288779468464218708560285099781482903212380884969815251730469265373651), SC_(0.0007903254948234622637525333105134825109465327029843352757543766024542345301189503139171772123935265133) }, + { SC_(0.00361631624400615692138671875), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(0.002080184239023735482002792055673855935861896371092389474032661197751552718238643508086777169604136822), SC_(0.006110739005248383950669306439352829421097735420196674890655938061473398055828398587503306398684123191), SC_(0.006335755000794774900128431912928451459570789692124225335046604921012660333247114116976240400504909289), SC_(0.002124520451340113497636898240101707061780335609946476576884953399917054975251171541142297349618272285) }, + { SC_(0.0036404780112206935882568359375), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(0.0001176190162828142796919835562358368451738412776284996984226357491541201142479737741581516117146868513), SC_(0.13375109687433513233028355937577969564534232189098013422636242229127511452734023113269086024188664), SC_(0.09744974284158095352188877935330705683845912247258624885493115031112457237662766230313605563814431583), SC_(0.0001163208881819670378389987473076391469754184060045994311735363658366982673715884200927029709902036158) }, + { SC_(0.00371807883493602275848388671875), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(0.02468614193022871270607342842884049496465784514517844802155026485330299596567489124363919561125985557), SC_(0.0005868079025337075887954296538657033343393218180899980285094250004785306343969125457926993842882629915), SC_(0.0005794033271650021637353321245876570150511986309565485745859056936761039879406059107114927946302410459), SC_(0.02279836041760338336531354446167315872319913552655935257543506882741064385169060682929113739675759652) }, + { SC_(0.0037211482413113117218017578125), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(0.0001206018963412346014580711495519039062312204520217402039072940650374111522739657760598365865174449545), SC_(0.1532830212093457144850631377033191871582991329996181592238131314430630989871588013717791560832019151), SC_(0.09308045347748283560586661646669308932922096162216609626734055443748417919289669514332833391914478182), SC_(0.0001185301498298987121625676887178156998754857185468017043955725530198932241469816417273597061702649087) }, + { SC_(0.00375685817562043666839599609375), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(0.0007361246479805081800904282635252534121057612205513917713934295691275921249144388954258087706961243164), SC_(0.0182591254502963388181167707814056911629621235294640727653357873481865519582458765100300428217484715), SC_(0.01983661816300623051034273396582372485234644437199610619780943033218568271197450725921151480975607977), SC_(0.0007484530875816556755608967318503544556569242217968724089022798741632429907961676207081151000279151001) }, + { SC_(0.003864402882754802703857421875), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(0.000398737135363371131796201231241977337745101869577512163984707029708975738907702417703668949324946984), SC_(0.03461228651027143175734397498367676907185252182441368714347793940002534169959834210711583630906519019), SC_(0.0401029795331966720958054601152191822443256906600227828047180869302026230462933995695120012539394022), SC_(0.0004050679971412699851665671517481397677597593315107915165247988125373442459223964779688758339882087361) }, + { SC_(0.0038819736801087856292724609375), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(0.02390414495543709914383675889292610600060281319628293079268649415434303468278817911169845228709311604), SC_(0.0006053745653404944483856633187152979893021755563125674461591733710648857082056520266042101358563737225), SC_(0.0006122365604067884676138035323451249429526896677387886807175698781547692471487119142744186107407136841), SC_(0.02565208843635257456163994938290390240617487768092878858164130615863406127063049464742981357232558574) }, + { SC_(0.0039926064200699329376220703125), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.000375584714498191206445422207948705425139896229703232728597170610019465854898345666548341006742642778), SC_(0.03889838313331470932893435581711608915252211730608495694799098268582336707100116273875476775892413014), SC_(0.04586869426123557695170032102179290116042335334629739940377913677030286554937370955754171004496920643), SC_(0.0003816953220928993363207438927229411164872738111054462153457569864167164363362141076992714679297743105) }, + { SC_(0.00399976409971714019775390625), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(0.02675157710999086872516739040612296103390359550452774747162265103027615404881776703843582201932630538), SC_(0.0006319809233457020850924984445278219185555061114936908742079127729647897442676629231613571786042988956), SC_(0.0006226017269530103839941922677320570896173066199854304610172183312044398218746235258283155481055379519), SC_(0.02436286367913812323328967428500426684722115773700129637696446239960116704659118990171926494654849509) }, + { SC_(0.0040496853180229663848876953125), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(0.02871370049870523378772009649487724613361662578853574971698483754975500855345802627078381605355830338), SC_(0.0006454037292007677589808944001170232672622210325702650965063953294552931206342695716005731997878584997), SC_(0.0006250461496238079357763624508112208426821720537656844191040241130984824244803367378696567932477611825), SC_(0.02350765370657507793336223731216544336874569926140598416137264520520731436280648418156084386229106656) }, + { SC_(0.004099641926586627960205078125), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(0.0008121268552233394388696207283878958448077052219208639638888825387013057035003856697366189457662519581), SC_(0.0210225196560526573314809410853452106280732971683039302620545622142027252670870036051333330815481645), SC_(0.02047310802809249649555777733951725994202093072744679110207536994298988566975586684224572535600289925), SC_(0.0008078269489589894446940592209128735678507667505462768319697329437430596461455017941987211674816946285) }, + { SC_(0.00417713820934295654296875), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(0.01420533792476112029780472751021414018073260293344462319529739556311233888392629435368548577089680437), SC_(0.001173734135199743591029873118431741075914972049889287638098256804326652074607601874203485531940220424), SC_(0.001198137642100826248039201393860175588490538293326377857170215026065984329474853933805946163270155394), SC_(0.01526143704929164816304737644832228140398757396254513330167322385814984247472574685118098751034673765) }, + { SC_(0.00420027412474155426025390625), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(0.0004010321344370415499008329910999874946318741408664075550749617886126057069156606356686924401939346321), SC_(0.0475503598466156434352391054021083061337531494979756041314863400371146349150990835319290756542079804), SC_(0.04140347128231742774123750396091372861616329481375711247039766688970655999374370861962095172098593129), SC_(0.0003956254281546922252217349272485982683626456823973041423348406755725497087590827516138878617553438228) }, + { SC_(0.00420844554901123046875), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(0.02881251515529661433168928288222623801512241277204114163761279338776193261419249446181370896959874273), SC_(0.0006672970021797166588719848514814483434962873846207642293817895179300307716578335128796849061486458011), SC_(0.0006528128467069563925709636085858137549434762391767841438862673883728734571717775577408647293226865679), SC_(0.02512251235372927576301814224361794801367716192456082171248515928671559631015414720623785319893131072) }, + { SC_(0.0042692129500210285186767578125), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(0.0004058772245405687063147437538036641128767589264227195980321835286764011206316939476804627466642511993), SC_(0.04614445525127272249496322301398686848111425269006187223422860401788792307267994740805200585123254817), SC_(0.04382675494033614637950036523711367566574131959943345690825654813739248572736797783165480040798901192), SC_(0.0004038307568683789516112548826483292635753351775345331248441455803326256386213326326401403860494376839) }, + { SC_(0.004290419630706310272216796875), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(0.0001399632387238186693974065640202984714003641883129084131214699035582115165207636132668161833708337585), SC_(0.2329576814808180601070191736184727838061560375778227144831617636262622812289328544369947592280903671), SC_(0.09512513101186267981408388533697905854961902332098868513716567265781652792344650363680482180237388637), SC_(0.0001357854679419984990438280323876903548444110387321117690193944538269367096057078850210601298048910038) }, + { SC_(0.004303268156945705413818359375), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(0.02877657075069992431389253436396661818001976135278651268543550869250671648616964734991656499518677752), SC_(0.0006239677435767832684629685015485333448077419986136404248041959632050483686790508125498922925760795788), SC_(0.0006289430603993545807288619281641392846856408469327525341393636739838486508502048315942520082343193813), SC_(0.03035482540141414417440173291266326655987121507326131535090310310238307643142224907882085247524360209) }, + { SC_(0.004412124864757061004638671875), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(0.03293260790277727842014326233360748855180404848011589805704590596553579922008088940312631284820468429), SC_(0.0006499816767973958540640653871018992270531217589503619960646235756787915158494428283814767878372823181), SC_(0.0006347542286513792579128488775533547016356852794060922079182281536262677044377018358642877754400583572), SC_(0.0280894445322034125210053324809348503691162082439563265987433762768004925165962422224803778268298313) }, + { SC_(0.0044178036041557788848876953125), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(0.0004576364689404675874944607214646443946549065385935513604214765805537777225103129176430575376323068001), SC_(0.04093505227633406281295032181323281835840126174222596878922661342362018033841408177756276275969052628), SC_(0.04404365729567804311466111364282457110484580128604492813194581920777014357168428777310237455424637464), SC_(0.0004612466567768787819418244432219985879075389519186355642594091321748388169182073187712197277150328497) }, + { SC_(0.0044235005043447017669677734375), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(0.001013949141443466750007202231102368046601735520053278767451887440850508707842408630781470099847663816), SC_(0.02015132527374030499063827691120709249662764494575937094400010376284732914285415090873108484130799965), SC_(0.01879934298307449367261882729581193430519321137560585178723836220040271300991192022614633346372740424), SC_(0.0009978395162250639346505611753579163015319371078446367410150108734671735628848230346219357749453519183) }, + { SC_(0.0044507128186523914337158203125), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(0.001001515164087838812320997239080574287733511241854421746080219661053269416327501947673198242298683806), SC_(0.01872404071198721134182136335189499753526874443368165205781970756861388484643719564480918545110425511), SC_(0.02050447801546347089426205825796743939166598403415275591678374352542414105377441000254261697403755105), SC_(0.001022727706104920473798484883540462952379728071239865982922320048417290833868637017442635681731133386) }, + { SC_(0.0044747791253030300140380859375), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(0.03237218292240737285729654499967178010843033868968340636585369287552337891134093715277825972861571462), SC_(0.0006563725227377736018251066808464873307684854253238905488903791774924122837942895348774211969677212822), SC_(0.0006465196689743171131972823225329246352208504560325682212049499753454265845356920538192681042322288911), SC_(0.02924646751230102154104103688868645296590948967227170385281734013702174939457725568389343122325630189) }, + { SC_(0.0044771688990294933319091796875), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(0.01651622445659130722816745475605178282734133770301329803848653730106193309004538279478478224294625723), SC_(0.001287642717481076413220941803711125510257838294198747423186214402152632647389668435486856244214636192), SC_(0.001254732774131969712174284802781025909305662489133095607374668717783163650005882000835541548591854595), SC_(0.01509279408902183807061433983588664332439251233537968932582783515632267623431579084714206077116151031) }, + { SC_(0.0046425904147326946258544921875), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(0.01691967600604988111238526966795147993298016583459780661636317275796527475024312946295010242009189473), SC_(0.001330752239470408492127062844944419128700721230449627521999961882785927595605888790971907277968899417), SC_(0.001305391564688661412545903237482637453732564679348385154155250551437031231675120508392136690153717797), SC_(0.01582325795073697647583540154148254750338380410811935378076878125871172316045916757222805059984571776) }, + { SC_(0.0046503101475536823272705078125), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(0.01024373235576927796817875458437496953006478189786434407424928954091831303979265083736168764095499883), SC_(0.002054795250952058226632120794345581115473346362742725097995408785938037028464550203907911936199869866), SC_(0.002089700282245997272078401426468990369233180489480501425781500006856301337540029827500632399269394954), SC_(0.01063587629335489797662773909327137996938082248280470233218135022450416628629678160899621604409534422) }, + { SC_(0.00465334951877593994140625), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(0.0009129851917489685092132302014928177755489952703848921847629376981141677457822385324456228147657306575), SC_(0.02275651791106777942982442698706570247416463027554541958189487018886721679090845770667499814353906919), SC_(0.0243953472771326312876583125227383959721616601717665787102078030358681778313419509827563774546875153), SC_(0.0009258343331131238265616647311444164166029345176013346840270801074276982007425115351614461546807586858) }, + { SC_(0.0047099716030061244964599609375), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(0.02819890377004604864695152531103667336448259522604494827062373771866775954172475279450708275555791503), SC_(0.0007309892519231042362386066656146820862855926091170663072809026177198870267804040248575062326041027083), SC_(0.0007464316460093945003963377336700983383641524409999891295678453880018526862486603296820523886479544828), SC_(0.03212352570359733843566396936576341805769994596255538968588717794982501615523202451637291585366741375) }, + { SC_(0.0048475922085344791412353515625), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(0.01727499741971682195807353286707968014925033131537771723708768081857936465891946213206716902840845598), SC_(0.001380805980963717390445595254854897231228998803873342115815256087349876211004974755538149548935210914), SC_(0.001371553329170824481646108234491483539683989666855997171405308569764307227149013453372943286767035837), SC_(0.01687518491845671307600993794708933219084504207901010289236096008801176283575989097548649617118706066) }, + { SC_(0.0049080080352723598480224609375), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(0.0005119155148766558099753932997207878442934543315924047852632484386438932579281671895854628350427706521), SC_(0.04843711624190700826613115658268010355553857835171237829800151770580834534176853288643946188189435725), SC_(0.04587457126249629049661837285260402278132388402815335773545277771742733042995786595414521677277265107), SC_(0.0005089260938491112624514261052036212360477898760017818122876038091362480282231976656573663299469029234) }, + { SC_(0.0049197026528418064117431640625), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(0.0111356525735984252584750522524504909244577860652630918762834290403184918352769188555425846854414403), SC_(0.002200601458732039152192708974625387460380357074449716775816119361555242025429801673881414412694579516), SC_(0.002183769825239864423766759852296831604914006219191074315121728441996698503779613069228721789537669723), SC_(0.01094660606290030737803158484392282900145309766936023174656609476278387183714987503776043552837755811) }, + { SC_(0.0049294424243271350860595703125), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(0.001131923796328531714113045421649982168095956708597940508742518139922546737751509001098736885969382245), SC_(0.02263312566179686641827607009844624721787139446027838141394814487832094659829223748291775376018365899), SC_(0.02079834586945544652736362162911352126713628861831554042298747182641182444306464959028024803318247814), SC_(0.001110032069108768540276527647286190976358379482142549013990644068364628168727478358682584223227917011) }, + { SC_(0.0049535180442035198211669921875), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.0001576656979820959167348648635540726479184180616888719730157136871438366330324369855085527445586819828), SC_(0.1218672878265076218866710105133962810452115653865605075193175343828622993331317284642847469213617119), SC_(0.2060867448978263951680718789244824634590272371358456139135133957518085315972311822225662118300732395), SC_(0.0001606682459654409092269843518990005862401434209588742958589661960710366879012652326900108181713635946) }, + { SC_(0.0049845390021800994873046875), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(0.002879239394510544667782484458281546813417547279605187329396415430214537562027050290440444682068537255), SC_(0.008482647024313575035553797342157762283974067020775076426001124788871732862987373008927816364164858631), SC_(0.008668814839858442687930462716923175237948229852199355536315545713988303119299497412783662215227999457), SC_(0.002915955995126560664875650661124036862292715806402692252904398832439823913185250267727315445185323897) }, + { SC_(0.010616137646138668060302734375), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(0.002112023508321281487578779946326657131473183644009861173457282010607555772016054591925455304923035268), SC_(0.05547399626405179434248429230156671430174134216926147685526350934067080375133657083174702096946096507), SC_(0.05190332151584308655572214778843534006617701733935871639388508976381230060077850308044155901906361843), SC_(0.002083342654981698038570427212854277495977145705618843594426452145804185560985768691227067507206502993) }, + { SC_(0.0113307423889636993408203125), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(0.001151910141343384713992684229201654765554206266428984183831296629954770014707408100448631630512616816), SC_(0.09043103445522207002378632712034048966620920634977149862822615428634650889829669058245369402646694942), SC_(0.1360638508609459150330336133469524851665593429198623321389314512737193852162148145970571983447220557), SC_(0.001205994435297884161896539092049135089872305189168448474687901118529910132850675409903219709318070895) }, + { SC_(0.0117209516465663909912109375), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(0.001119322680684044376722905520824944903173669466309560984209987407478600859938609282465179516401361831), SC_(0.1309963531331121907080760638804231471122823591973164490011172427462664297305255825947726210722446679), SC_(0.1148507487768494138122361474429976941671133464170624600403309702874562342171108752352550369570320251), SC_(0.001103982387272425043140188868059123586042882610006900817183220523479502515500372213041441893423361038) }, + { SC_(0.011917770840227603912353515625), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(0.001209045763118627825094678783122378982531794836697894580724272254249938327498593200677182232417485351), SC_(0.09373742801389498256206197843295275110179124553045392965206589463425981683031860220827466182450255403), SC_(0.146354062128223726572964062014965256121117993519397018911137044724308029837867074180968617890663905), SC_(0.001271247480468386779638107444153749251904396780554583845603248471632393812238952687789874595616144795) }, + { SC_(0.0119861774146556854248046875), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(0.03838127998149145129872170872019569672845032814205014234849938639771012950827014449605209047768508894), SC_(0.003305808330954805489614176526750032202565708773117506704521826306506211320448683133349866483780208146), SC_(0.003505225489079338818655307085872339633947380420080482137232980221992833329966149690627730532294263447), SC_(0.04690233280016794288296583978505569647549457793926147319853139500576861045500348806111796121365529247) }, + { SC_(0.012126102112233638763427734375), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(0.02777875767986249374485705560362618428319320612824682970586211621675628581616231764561739576441952956), SC_(0.005454857898478912728625263688067011434798309221857603238942010831967565727852796014053322265294398356), SC_(0.005353324906580887321530705589136488165553613721901261397478241447114491100364465746130819944903371805), SC_(0.02664963873398616021924175384676688651777322777767011915720115200228752932657731156725903605784073843) }, + { SC_(0.012391182594001293182373046875), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(0.001162534557609169772592513980152295159211310562832811346696880892313199710315607607459777747928822702), SC_(0.1173065505246238218759358810041850064084340249766154516851590505880838921246321227513010559918647335), SC_(0.1441559493855170854200478279160785085654823152503246752353747738575547086941622209733702314263373458), SC_(0.001188065127553673120288963891661484320052833128527314996190195703374723814157033398415997404811062639) }, + { SC_(0.013245030306279659271240234375), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(0.001297973002800871118280059452868439283950211672744006536652437125165102163363198158348505151619959631), SC_(0.2000067116563888510956450570467300230659532393808729083618787221402451205789970230586191431739808275), SC_(0.1069199931544777127482838195779759389663501647437765611697271399112502124201369022526735135454944768), SC_(0.00121649612461961028605021786667832490574537004927224024227061809230381980801142228668594118215805948) }, + { SC_(0.013858181424438953399658203125), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(0.001289898506631192168146973791002865185455682969400798428054134596894116082720155763098723095564235867), SC_(0.1229925314229710051302962484901241593526726042689880166866199345084593367320466694972397986487820972), SC_(0.1755194971730264558214570786473797072475819344696540352410265380810162581278639024618515238514938677), SC_(0.001339566350478553874990697962950679921040112781618515003893445108293921361623714806464932925526930816) }, + { SC_(0.01432247646152973175048828125), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(0.1372140714911115706030304052623633728809317606531530236662601516193444446922147054783942197191100004), SC_(0.002378151740108463913377813259256240003027844378312138092851925670724413199797191343653302324394253102), SC_(0.002126215445042360048756129183203300658175076199570434962114028242948491544708561738350240196485323362), SC_(0.06910170070502194140713924344439795054451883382190756098610629835759939873698956510745021074854737447) }, + { SC_(0.0144481100142002105712890625), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.001331571932050110282552710598444131709860106321376519797816609419098273406597735609995925051657010064), SC_(0.1193330210624601257949431964584092036469747887956239035748749472616078463139455490593791161137998202), SC_(0.2065766870448660287010206537310455389530994419603458670042081630308838745559718560696694769488955657), SC_(0.001410902469955384158130773377937000581918429375190762493770926346484438708027853772034715084086434293) }, + { SC_(0.0151938609778881072998046875), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(0.003551702135618542765992031581724484209941322906146581336873982910834420123554184358065804110535478937), SC_(0.07527628883216611963959364828844091361846145942105444909913173401690044606241043452863102276749035856), SC_(0.05989659649686985949843518683549841703205229331205398548862486071561160227194679467960357270164584599), SC_(0.003363432129330754003507390364983384248754985683414217292653217437739827150209877958981619536429222648) }, + { SC_(0.0152789317071437835693359375), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(0.09581376427477749518500718399935351567110915437751486401420343746505465030167900950882716285491320677), SC_(0.002193862475152359088844471358975990104649668494433815445460831050269288456109181709571414939516972618), SC_(0.002256047694668280177473148802158738386573331569016293988175747603555315722589868565209198731631924537), SC_(0.1143574831341657640326619709378027277770520653424173168907512346309198510885389472559570034510074822) }, + { SC_(0.0165148861706256866455078125), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.0005145816851960784695468784306893290903101432804648440742223389685171809172455354187186950553524625066), SC_(0.2914647358520523261562725119109108019284778149341213523493016690503925921376975712674541174647834819), SC_(1.058684485624552169538441537169542706529703753476825571923859964633744371818189270379681812969757968), SC_(0.0005476589503878475944540127115327223970119983393798626883349308823364303846738489097262594627341807151) }, + { SC_(0.0167596004903316497802734375), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(0.1388242105123624353777075527805218219080441071465965968078579921805445421218704271026963589809747023), SC_(0.002510243749100574418410823834347499689858700199939593137346529456586773569494826757485183050591675637), SC_(0.002373413885609438776718688135000173425523576907245677015912518795943994867623267400239613983548188966), SC_(0.09743994742882585811010137710250059594099756620983924545238461522374975691569540201162490803724362945) }, + { SC_(0.01734044589102268218994140625), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(0.1640407637785896270638160631135308086194321967549615821956199068691082855376325828926151576335959281), SC_(0.002640606449099242103713781348638401181390333866092790858400463762618492019806153920663824646385045611), SC_(0.002417158046777019773375338143842504444597868485850624945564490379588684582128157771489074639969539654), SC_(0.09330658328398850924231502748469417666382169111485901948906652079336797201032752560902305909315063516) }, + { SC_(0.01755820028483867645263671875), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(0.003589485652671322884931490057760785480815606176488057313638291348014464437307013313873922053616137227), SC_(0.1053008250155263766192768910776764556776040130629251881684642743255567906516739187309358764473086328), SC_(0.0765266459796313905092675103765873598129329602736607839369762351514147868275614861887858390647194188), SC_(0.003356530831910971488568663705900760970277530829112985298258157467712053059150169223933957208229067558) }, + { SC_(0.018412075936794281005859375), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(0.03852497668826396318107703708513028717193054527461341587128767965347302804947990869757971602330551041), SC_(0.007943910634451456024527056085405933472285813350189894097424687619055425868329422198658050557917983027), SC_(0.008483640200561196599930113728908808248807520999319721070256785402699616408886962690698146966419290373), SC_(0.04449015389324653702120373740297664064531593376707116632040443913951272128838162674970863697765113616) }, + { SC_(0.01893679797649383544921875), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(0.0005941056125949009923100335456190882993178090905788611293208068141382249893748732270940963548640733784), SC_(0.3607213254069625898295593664578571009068865141097548062302644531741270789301000598286582458215777153), SC_(0.8946384478601655296612058742980993665292853019651580863486410128074429885149745454550066086600214468), SC_(0.0006236413372225641906860502296868167362581710730446370983658058684640195532108085951376892109969442133) }, + { SC_(0.01939119584858417510986328125), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(0.1421224522338530605427667504914786561536175974094020090732735611824034583846897200072509469615850975), SC_(0.002857494255285400355127118286741356787680485600043076658661383826740480983411698059034429681980749922), SC_(0.002790466090724389385683922469399353791154404067037157973473347718584207246043964323394395365168820716), SC_(0.1227668395283908208052777327391205344831777346841882602649120123143942176081927764050038058703219411) }, + { SC_(0.0196676515042781829833984375), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(0.01101225285386242979479731177233329436739739751210045561681884417500612867995777192244599296431762092), SC_(0.03176615508599503758310878047792979993708449649050512211657735408847827114652639797740557591126724525), SC_(0.03616029071517966865461620414152070024146481963997273997093824190315121884530230087334761746078266594), SC_(0.01188847770438372940087578016255250719073080754777660295152237310317859237032074780634709020864205999) }, + { SC_(0.019913904368877410888671875), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(0.0006158138515870745199402058453585301535690117830813117070809288133549519045620871526659948735441764714), SC_(0.3225928715092053912503435714712253490902592560967639590882583496761590968436424258153958181847136065), SC_(1.418228381212478609595436442400552050954062530778966940472883632293768309510907342329038498539864849), SC_(0.0006657108688131401238596419682401943806322583801231575936479002230515007951428429538988839476625210879) }, + { SC_(0.02033183537423610687255859375), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(0.0502619756977379227368029805323177462745204324642235705857336725422245802552305658937435316224287307), SC_(0.00946284333710422093991758395604269229761720072901778606362533592785638088044580906023753359508653729), SC_(0.008690277608166491707232456388268898677214592074949389460402573687554006931541585161397472051024758495), SC_(0.04172657358567874607647899949346800786545701444901861141032431760713474179419693066846550165570931848) }, + { SC_(0.02091011963784694671630859375), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(0.004609240243900981846193833658030160575176447016643479364501273132976143442940660866133994916253497129), SC_(0.081066285899794593589286920572981891527321278385244740992852671560503053154161376316645705279018668), SC_(0.1052644654619323104943364866349924338309725843348520176178268260978114579934145154135570348245696861), SC_(0.004911077131452255880078727294095255378162007571076627393525095050260820240567309694907654559384031592) }, + { SC_(0.0215121991932392120361328125), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(0.05403251681846242687736981033631862929741988253529052656775078067239043960516885723945700712061289122), SC_(0.01008192844736101354506800983889402007406324053977279658758747296788553642239369552527752876952284446), SC_(0.009136158315162736840092410157945403102429732886229154083294446557994345170233610574682843737511759853), SC_(0.04357963142587144642022386585570706127446946422352738582203435103635517877666935660030353025191384743) }, + { SC_(0.0218528322875499725341796875), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(0.09017316369521818953551228041860684984896143381700029427576618645445020557605740492032143214193298608), SC_(0.006492938465181155471968431423133901944612515059061820532253562004230261785361522650110881087736054693), SC_(0.005939627553356763510782969337912161244084037701022527356378047930821547329620248306059154539686370468), SC_(0.06692227764208166339640610250585876484059980274648383237332759224606032238369455048814989328700893042) }, + { SC_(0.02207309193909168243408203125), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(0.004774959069469925388382248845521203745949174107447543212149596658838397716605972061871583239604101645), SC_(0.08018428477292062924473296231739048918274020558545574229602300298873105493894283470040937417175269019), SC_(0.1222925321673624544429904158289521157889062677060659756095259769565456824179590240521918822753771596), SC_(0.005288696595934619440415414148344862768562324104613626648172169433724121649878172098543568520042725151) }, + { SC_(0.02214455790817737579345703125), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(0.05910378166699715379231111698957062485184135150890211681654693248938322364200739717086772670245085726), SC_(0.01064473933321484525291456973646339706587016497044767067618495313053956769825146163032814338178297765), SC_(0.009190966920541765427831040967687010674529396907466714329924441850153059102465333007497545855243545084), SC_(0.04287707799267004307940596946906553750607782282307801507399251087731461434456513600215207883724524158) }, + { SC_(0.02225398086011409759521484375), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(0.3140345925765806329800351071205836311614644078577593204692615696960014255360678626185717438026913579), SC_(0.003537659663389931578792346853823415843931504538522376789760987790004031873931336255790637322068615094), SC_(0.002982173630883867911357543886673398441321702748891476129482994581448654212493489319635849159627699254), SC_(0.1016133269206466884666525906420047424252194383658120411039133511663604917309154698588787907010503448) }, + { SC_(0.02250031940639019012451171875), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(0.0007507339112044250499748993251615590217005934004298441621534080931884597697916500612480538254788877639), SC_(1.347347345295463469134771067462478083375509272678347922688002666649310286155687915955880303753576755), SC_(0.3704042385898502383956125040349704546258364180600608362810430083338403834183958126999569027653483105), SC_(0.0006971952309695862794046441494391461631117726496950438677228894345646695871695174003034148005091491894) }, + { SC_(0.0229004286229610443115234375), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(0.005288101065074893748384709688162272679709437977695805721116554840449898381423061473817891846698081354), SC_(0.1065601621849043230137865541521560456658036127405513335823148701484904868821341572608209506513860809), SC_(0.09433260573901814150894577086600431190973302115031746517657120542903575524814593748621701680997602606), SC_(0.005132254780639389078051218570880541295308295002025573088103066605004895372578853125779595768708821397) }, + { SC_(0.02350877784192562103271484375), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(0.07002672354413696112508557059593286963233794269369147987168012525608501046327645986542012604843500413), SC_(0.006328219095783399844421211829641109227489389677446534137329255386673034071582822278386630233822983827), SC_(0.007058532504938449855345980335605467196781396490887626120523142835505653643706089919087070654563524739), SC_(0.1008776687831422729251911685356435817384985410421438352831095623879792141056486602082053474433945655) }, + { SC_(0.02375358156859874725341796875), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(0.005130372158707232393661309004066194586265569030743610991993481070130656259106123801641925921476589368), SC_(0.08581596961835884442180403025493769155909949698488543554699459928516277782514237344359634179371849737), SC_(0.1324242846256142873892287367176175027627996986354723103972031000991337872370600023496816392954958688), SC_(0.005701655366526250763753414786850942907269775320516286368068453624531770763113716576479924567581747788) }, + { SC_(0.02375719137489795684814453125), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(0.06372120133503982376020558287319339893160195070871964896953449489580183283033231791494522764393855797), SC_(0.01144645015190361422014819856490650437932077894220964055772938004797293122911355082098403023885466845), SC_(0.009840741255147564620788231484075257763735688141776133629007976855247333096313159244905997619114330657), SC_(0.04582142016967750150138613988387715493574416897301404274524167004853662074423992934639601946785996181) }, + { SC_(0.024126343429088592529296875), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(0.08947916045245299273215810535651273041514810938600198521000715116141068318521792690376030586180348904), SC_(0.006966241573198924545767333381043209974117124263887001797213162569719341826604454221389420412041725569), SC_(0.006740769396263917270688799873226800291444695670686439867154878540719962219643293246094823370655505331), SC_(0.08023945024405955185937015135747674395323548410120240474400162836571062448845929982491359490134085977) }, + { SC_(0.0244344286620616912841796875), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(0.002788880026879036925622409933881986717452721422038577751729770566924670686538782252113278770325694296), SC_(0.7149357872093885069719122642387208548802758327341235949254527133528664349255625842235675216781502168), SC_(0.137787542557768044425251045080272362465189652839695447871988511494674289158927493247129587537275299), SC_(0.002328382092204826982575166772383358181154254927065748092143900047025833148980792013679309141209834614) }, + { SC_(0.02473938465118408203125), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(0.1131457356866582782678369721560935341754147118572819468434454129359342198382097684128593878317446491), SC_(0.007548809136849245799383678720678709084135128866758613562239283203823804454983078750584095737030387455), SC_(0.006562292628346543347507469650167703650973097321117033356309873172374818427752910338892467693860080755), SC_(0.07078034191922688050613029589888073055731817330090376838004263830861249277917517708432565487031402387) }, + { SC_(0.02476987056434154510498046875), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(0.004644454484357400101255291664427589349758840756135053284818376740557877785957451994400258610311661525), SC_(0.1001916581977313085090636698104319677753737512060477984570983361986969589180619707894849007349831559), SC_(0.165283142794613609032479291996623444883788407158262116871475285509527941097453753533497407350112386), SC_(0.005170932300018973038845080732870326983308707979365033993123411096307679619662434359448017744419721997) }, + { SC_(0.02514001913368701934814453125), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(0.000839486380207278125800957659845770799478904220338350124948970617085773325091272544979307669493020543), SC_(1.393333631178966777749389491366973331762689893955119411480458254292817281518308025159879063229063961), SC_(0.4093486799508905093612929591506528742520967682846743994636333333222442184861522136186194217097599142), SC_(0.0007785339018770595380705305669283536228350385449364860130700157233151973836129978887508455479125807915) }, + { SC_(0.02517675422132015228271484375), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(0.0008579887756176109617043185243969359999424438521548133832834163792969084980330439523430100680447035179), SC_(2.442439848372919779668994445395510741986032738145232239313806311731334985075609002238780222386032837), SC_(0.3454996252128440621292565977307336512481735899164092544575038981398036095616881556757543017823412129), SC_(0.0007647257113765459743246905080367095467593649615775772798398082447138321125144043862149620332091952887) }, + { SC_(0.02542841993272304534912109375), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(0.2517249441969383041501235382489129732118984385574208311807932827527150404128788583905922584826062248), SC_(0.004263122860197314478019210184366268747635868511739287317775536751955014570520397559419993364341077604), SC_(0.003743703802686832524259193840992488603262477336067126299414022235047232486258570571327977083927130109), SC_(0.1184569034168601298868036176344884634317728906437541915383396856163171287113380668218846871500935292) }, + { SC_(0.0255895517766475677490234375), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(0.07926091648291024577683869782691236073130431936019576425008651906654200624615972315320983223228349476), SC_(0.006984138117773679666426420039061706423095533328371419617989978609994860594592411295241623492474860472), SC_(0.007571786946769201904138897381797057225467969041757711677251246708587172416843573962159335837740274678), SC_(0.1035684605182080744848584043922513059111377850580132431833735778043527606468276914412961071129282158) }, + { SC_(0.02574359439313411712646484375), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(0.0786951674158526799172926395560260812732831471095963650492273966011488133867087758849646353089918269), SC_(0.01306136206310969994314241633475619701543997052886144775708086137016616036063247726571368116204868267), SC_(0.0102028043018070703913007752777219906088666507805276859860731464364197835463731223228610021766618424), SC_(0.04574544959241313334646275719995251588094652585438349779689309066228115969088806177066975068263899277) }, + { SC_(0.026156485080718994140625), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(0.004977245873620174281567066797008850840998598022215944109225659842879662427656205057003205159659328994), SC_(0.1116907174063995728317635980614223832408450655619071674665183311032742979714241329957038219781155461), SC_(0.1591528732180754601877152469638586487763897786525368309537485407458179332048451265588436944010199161), SC_(0.005376227785300201063195295968050055781066478344400659700142143376843502826965121244860505838298762756) }, + { SC_(0.0261992551386356353759765625), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(0.002768507703196894882209492933420982505294652055016908958996293335672953763145688831533542833495197839), SC_(0.2759419078316806997229840807156574040599241086404966392171130786181531800109544263574058810447491574), SC_(0.2176061013273731817056945775550888827644616206808367467867337675512716120775904005826417599487835205), SC_(0.002684621853535589212298172576357510898966754506052163526758295631798703073707435476872158074750793005) }, + { SC_(0.026690684258937835693359375), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(0.135503999553429010618478223648124849511234408323048557782311939503048237453578732594905447599088962), SC_(0.003674032023439464211597714076124620690543821833790609617982112900699980326470174689011994638120828467), SC_(0.004121875179188232511426887594234328395010053129548179363259212842507408722770236902507877429370817722), SC_(0.2729972006826442551322209338943898221076463950639993026542911808671054501584714960139718712909986131) }, + { SC_(0.02740982733666896820068359375), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(0.0008617561206547490224417154693155757741508352777069575979294452920224626522224834240735047372042343103), SC_(0.519918403319124309022327084951344494386587461361552435537778742388905521187136687582583287421479238), SC_(1.018295416007988075317065148546815398705875438331882613116810302336396929619911452576359370367197773), SC_(0.0009012832990178408337866583925052848860649324764853151302033701079068006022318298575876969110198050632) }, + { SC_(0.02743434347212314605712890625), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(0.005858057605116539835882346194458928566255948998268873070578915176035656837779297272455468679491653736), SC_(0.2093033790372794682794046268326295432722186585787305807216121981210312967735778204412312401151785863), SC_(0.103337847332142257004527154726416027730891166511222475559606778209195203554560134077572230668239177), SC_(0.005039194007429733825470393171980328514433361731558915781833951402114854165900674533671382981351854516) }, + { SC_(0.0278713516891002655029296875), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(0.00284049287599803010278320801160542703605708967194278756603835105023100739438161567304595237461799669), SC_(0.6297004798806324526619089287910565168464590439762739946384032442144028349491237271312948007876467646), SC_(0.1824116183408740992594899505448771653532699340687105473308322539927734864890056942393368423874972808), SC_(0.00246919238599822926317759735135174552587997684074050986357064415193340480690348473419096431459918439) }, + { SC_(0.02803694643080234527587890625), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(0.002782809174473135344263483676684655836046035587167170598881951477151851503205326449216257132516988548), SC_(0.4403183993669007263402159683152932591766985379003029199127418828321319441584679550157263212494836704), SC_(0.2092729178501225479206211823819091348637754538667294750476236872869057670545728099873124812242972683), SC_(0.002546180511008799512908366403617467059373775362308342445231767097134085806539057952571764480445351692) }, + { SC_(0.02833987772464752197265625), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(0.3026032275298495229891040831718741113706710169753121391873097853086319882620090362134567796331190333), SC_(0.004802423266713908287308636342235706517391488430248186125384052198996304015074334600949547782124008943), SC_(0.004132453993618890679182978393980120229572664830564238811370400367823100956761108757331459198585500683), SC_(0.1271719378753392132313631705185974686048279952228403464975381274587428330090658879040379158806556518) }, + { SC_(0.02947166375815868377685546875), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(0.01913975981900103524640010886547692464251310348463783017845545828997307792345381938639021633881005613), SC_(0.0615266302898037776092362808553214406398701190896414291616484757196625761343147622816317610090519644), SC_(0.04308642574851321096904804512286787428765926078792260334801992430316385902970918453234801471701681403), SC_(0.01549132990754464365235389519902698027173359337874645629272353330742798729169997687001584475984988345) }, + { SC_(0.02954470925033092498779296875), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(0.003318570222684691307100620026247043539729149122606816852278494340185463753024078352501024562755145556), SC_(0.5993958632898252300355393743756711427250297042751178605897007880051553118502684347908810176020121292), SC_(0.1777543356088508107233577974592363113073767131805230765146421044666053256682691681113171481040514138), SC_(0.002857774351710869179039288391999456656326764675142055967880170503862407412785630816820757627846674469) }, + { SC_(0.02957010455429553985595703125), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(0.1478859503758492042998338230315008977098427294666611623911058924890853780551300220143046347661657872), SC_(0.004056747908275574777537685603398543569297888830251909861784108077178514776666520036476073753191518947), SC_(0.004584207178786338420118150998787485617018469621154415082226803948360887652238823701511946591279851913), SC_(0.3076420382407919748560171810099829560515959043809164073643905032152003573934403962162229344254181641) }, + { SC_(0.02961205877363681793212890625), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(0.1614180040660873967491598470800770928976704792107183019719625158276143387641804648357278498320922935), SC_(0.004524027704123676152545950947673697673766679092468848268230953955433828704286396195670162800414227973), SC_(0.004775439992062482626272816952186730302792313920551584547031192713102190319706588751222163063846164799), SC_(0.2169725936458954096965838381220435060463199192113133538290920640222796764489597799631050181218343177) }, + { SC_(0.02963456325232982635498046875), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(0.002648721228229968652286672235768094117646760892328203521942351847861009007416269862457122821732209999), SC_(0.2026107371472923546065106915313989350738403842210224280844134739215763270774090313240622490998111955), SC_(0.5684626696196959505045757202979573546610648015471266212944223359510944161455137022496116001429625465), SC_(0.002992019036439246196441430397337266242233516304833399766505249208773356249186184598101876816077601781) }, + { SC_(0.02969768084585666656494140625), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(0.002969817854541045184510883764864711271842218943108862357376538244534307656237624111148514616940146988), SC_(0.2113709322155150732700219542950964257373674213686716798508415292278431343147296600108223738925431675), SC_(0.3911442453857074347993830217163876976501179058823148329488621646068068084748732355721735772722474332), SC_(0.003219188066779575615538194174809339244064727637482087374662752814888280428157161772821196724723208229) }, + { SC_(0.0297330729663372039794921875), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(0.003246678244133880716081144066368944896694991276219725103897270549019323953290757477376724738857964663), SC_(0.423193632309431384702816663234822553269596173406797067333609731833436111972239694702926407269414183), SC_(0.2037261282652855690633702593274626856166687049053872261688760750368203399980376291029855850230363885), SC_(0.002952774086155515975603315743175823472578315711221220322450350750905792698893962485376824927051572367) }, + { SC_(0.0303403474390506744384765625), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(0.1831218855224908054855239370257537612279258178390873497416724750004720424233121452020684459477630124), SC_(0.009862255130936258933377663149228020591846873173102251335550260343794208198537404197797319076480123368), SC_(0.007619586785437185371542498884581822202715095503931581526427643477020520941294733348976658996239315679), SC_(0.07575924423809121845645937200576610799146356910952168665662740771770793667665139654929864223366074498) }, + { SC_(0.03043086268007755279541015625), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(0.02095128665899062361189527805659784479306315268221007682915336605326528869288470731905853230797492209), SC_(0.07096815287997825837340559860786886254484312172283463517705227493809661484452165442854564537015375277), SC_(0.04148307772136617859926067456702398117994854636612457465190029958215352363689223612856895496789006279), SC_(0.01526206095454161016608722487316923701361042393420978544829140416104435579614332459762968632373317263) }, + { SC_(0.0317622460424900054931640625), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(0.1472112245970466461324399865325238028031046171462119121996403147196526431422021841382079160975570854), SC_(0.004672112495196692777832118304155705176366467434290073952444279813691118597874340430891383457156950419), SC_(0.005333026954802980899402016881011019533028965666666400509300476539303338384999043009212160686380076272), SC_(0.3076490899172316311093945598447743376120478787294184522808530746100829033993747618560368462452943176) }, + { SC_(0.031880356371402740478515625), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(0.3178480097782493215906390695875709233037362962950307710811180739367460647089381054848228526677991788), SC_(0.004924978167259097007623383455663495650209165138998429490118117164134550402039354495718930816208459459), SC_(0.004388943904498601543544858345544209070074036808030725220080662261742710937008559536171797062840878162), SC_(0.1616229566303338501261994026334262684445948843079622374366186652980535749248251177911811313147983194) }, + { SC_(0.0321152471005916595458984375), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(0.2234602357021440644154288211250685038258804004022485248453475150555247345561213708532777730873020303), SC_(0.00514103925341353022470775698261938583315516266478371893267742937143462970282401160611933367649622007), SC_(0.00494288611070639498307478822043590623916715490127896429444274433850437392928186304391567266378748785), SC_(0.1809309027344170827573266277018987128174699755733655799453292413332668648567232259386168076308874054) }, + { SC_(0.033008344471454620361328125), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(0.006328921827220988526916085097223050176261383022015536064809629491191906423482501310557582869785097015), SC_(0.1446508793379422453346833830275764009429620670313502688168191560129861017962404701283032532114195807), SC_(0.1906109220735727480349650236144234932812158216528483306710607618374503622810454158262117005769241661), SC_(0.006735006962376906530585563393771557220320834909662667742449438091818680348000434012367435539005951275) }, + { SC_(0.0349374227225780487060546875), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(0.008518057361922908430656516853214535414078278336720966411169304148944278369635834723735356128646386359), SC_(0.2057945086178069618138967512975070811490594220562262573953833072740722195475672001035631651083249034), SC_(0.1206258576597633954423994636949656885205074484929751854997607632665560968269518287291986891685706252), SC_(0.007444648302012061063898571086816873863073965838672911708265650879409879947837718072052604917722017082) }, + { SC_(0.0350247435271739959716796875), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(0.02310794068409677224294615779567006065762266146708083760410905638459009761852387282753963070704780297), SC_(0.07514656162477883322735742833652963345421215571010885581936518199826412383762899269461379759357422098), SC_(0.05021433446384141513558374119096771803821010719038732070455995320168130224110667614755958857104830112), SC_(0.01817571325541923812755775124659125708232928669958056149724908552734222507657426153473387910501776998) }, + { SC_(0.035909838974475860595703125), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(0.007562857590236357966646262698934616691765447371915518854753324583298254985185923048305252243772366412), SC_(0.2444085450620448342137461773445576332337710519948949870914455920012033220215297535856475131266809123), SC_(0.1411709969614690596329195484089602811285373601552309182527630984482336089537556958094223815944833827), SC_(0.006684703521754546986816014765911076949329918084380369534812545562451672846548278841968191255055047669) }, + { SC_(0.0359646193683147430419921875), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(0.1594061091585341570454655145158220214545206247514187209177863491950754836230370406938943585134611188), SC_(0.01093424740891574806760451332935380931320549243965337483012485530351871792503947641574396727466712731), SC_(0.009579896850861123823178641146281375050355287050504473604013319253581246396538168371644610202447585242), SC_(0.1038799433542594508410502027717308355784456354868261373253074068410898984153654472007040626338916372) }, + { SC_(0.0360787473618984222412109375), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(0.007934489164089557518802200286416296249365576020687992660628325405022435632743861286783433228904130882), SC_(0.1379342239771178048370648277797514048275633034221340375868066368757072030444643982258898218295067458), SC_(0.1807228087866566619894249627068373442588488227210446753002574315867284852397289454540978938034466508), SC_(0.008505084011826562383824530131417870086858571654338420036890861603277807468286214429402732154719418254) }, + { SC_(0.0367714054882526397705078125), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(0.004193314472131709702971369817668816773695063932296115838583375039944674334980880059599131593995816125), SC_(0.8139534321114322358685847518450061066516987699416026230332236740748782284168618804797803107984756661), SC_(0.2083824573388769706787050536480630603903054403890950682566772706183719822409128980503401983766446762), SC_(0.003510489019123171796177989462296769876942088483416048364814364069985020171605963883159068299921303488) }, + { SC_(0.037471018731594085693359375), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(0.003798751267722835972223742423292468170745903400298026481631890129856993404525408434205891137053008792), SC_(0.6827253504294537813493140947661719225257402937571505747353259899077723678605902021186495516527419696), SC_(0.2510580037378620016151574424029543491396099696902702811672897682104839834953521094065541923553195521), SC_(0.003338927483932264213223244096113137642618315416281178940661496011329204760456293970989815240801794682) }, + { SC_(0.0387387983500957489013671875), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(0.3741696909315425230643849252524613322806270816708375133414500267906690391815431038975859389850203109), SC_(0.006534821065405187328444822526202478110563628914154135314723431173229494668094382029008442398408103008), SC_(0.00567786564475436063186766534039546439865471098995370928313652414490239704130203613526906912244058067), SC_(0.1766448849265176889072472415984355927485431735797579025454637258700334621766121410872380364710589264) }, + { SC_(0.03926889598369598388671875), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(0.0250241720277836622781930209863155848752025963655078616416099072673171291268438852158115740524562542), SC_(0.07892776424040155053998551066300453155399874825727930092897470296900960095734244612777944900732305454), SC_(0.05886868959387045513228296698783771936059988903165381880794059905688884215728060961902274508705604697), SC_(0.02098810946949484319208478021372196657198026645869652004370407757684673291309937960835174432181224037) }, + { SC_(0.0397877134382724761962890625), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(0.02561621461568709070477552017508153733665596224980927132507963072380669073032829839274598579801322625), SC_(0.0814540016707166695103933407705846910621610440802029507369133641919255996515698683229104621829426713), SC_(0.05884865654142969446467307962654923205776690551005702564066604367806609871679386761839320590040446642), SC_(0.02107971351821546505831042868860378486122683348780738086515931639133903945576056737728220474077077862) }, + { SC_(0.0402315966784954071044921875), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(0.001425747724167975720493494800328868057679745368955193798755998930071638872453430716334619394565288935), SC_(4.494029128935478790472393104705824412658234196579777158387180161475872668027659956555933568904973385), SC_(0.4314682003315202072943510893409066584700502597498677457042856375106197803270934185675771537106503812), SC_(0.00118027378805266523213468314244974341149782163133521291708306960044785818720207656527690060634066865) }, + { SC_(0.04030014574527740478515625), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(0.004053799861753535303479117154659685882740442294237248296434989557122036501302414010624334165737717811), SC_(0.2927509460951234947532781646702674452479035958348658491466472174640391925872082742581655486486279131), SC_(0.4725230899946899722867894539962241178501346095692612956515517044157591638753692214829878671007893139), SC_(0.00434674949539593457867807294478540622891155385977070971238980729935302384694319779983413004731279957) }, + { SC_(0.0410285107791423797607421875), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(0.2284127512365577672838224650541874815681617945867235662698087797729337358018560845110532694057092764), SC_(0.01319816133807068346182903680692294658052960348918949799602850766223021515166572536070506556972540587), SC_(0.01040418588604829628559665692022923758347673525487771702789024459080988100427227906984554422418706929), SC_(0.1047093942022668184194412577836473384727514215939289357758289518468534389134627842733152236003898268) }, + { SC_(0.0412090979516506195068359375), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(0.009109214639920416789577628609343507544898356182636452687002361176828147795353304511420469945851479596), SC_(0.3723600384209244418045816616965754315958932238018430830005487493779627405050918144482713623384290687), SC_(0.1413243003122251880772973174502773486262010784291858957726553079884579324019585212355181275403375186), SC_(0.007349134899890753338498191950624067514308700553727449853910172285784276373777289645875540285921609971) }, + { SC_(0.041210077702999114990234375), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(0.2084183110366820464355155446176629922567272531868851252691779136915382578107399798358839313071218148), SC_(0.005676949995045641255297791666789724778581854344548509172145546631344836590638939402190859169860764289), SC_(0.006368551513613920604467771286172126217266721241497971051769034715324514224422190696728261379873821706), SC_(0.3918969906573540922210940274610888530897315218361241215328899402779001494760441888554553935795173721) }, + { SC_(0.0417932569980621337890625), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(0.004642374251397235785302892628293935019234260634679073745854576281651035426816823775789731809291972103), SC_(2.70680134250766235255497884395047882982827115434722412176272165663640748743321884230613481574160978), SC_(0.2018323549543535469982760169899891911257662002503138310700306276484458188334579386694169824588639579), SC_(0.003436001876000478084320257164505375638950900078286485970478883099022375747335005670242709657309995688) }, + { SC_(0.0423654876649379730224609375), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(0.4008003025151388719034690313223232080658578399054111160259692333921040670756646107647418719707486644), SC_(0.007146306850798136633440811774846219356073526877899292805314467827420541430952448790796397164211620501), SC_(0.006212188787932585429877015730563727792187735315417296430011696189568806013528771988830620156950962751), SC_(0.1931861170898885929197158697902114502575073872919825842057163329305800366719783728023538220238160126) }, + { SC_(0.0424749553203582763671875), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(0.004767720361759734257510272481198874637604490579586862025576407235299346706397320439048338685158479534), SC_(0.7165412841473400820268971248925288020998670856211887056107531726184707559760789316731163976380099765), SC_(0.2561780255339710272349691691035925178666222849535150415557231678222332331247385802585041131977486777), SC_(0.004116472442434012176631539445176019060311689855021131459215976437250524387253005761839112841263035389) }, + { SC_(0.0426307618618011474609375), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(0.01092003782194551023966116093568357874165905609420305406601692861180214928430781842800175572852698906), SC_(0.3206853841677833593408678392929862737104963924590840311250541416182242089483348072810141075737822856), SC_(0.1299112672307460846574874275834687715076899529008865318283717682787340554988572467034343797953500574), SC_(0.008700969007012528427983020786739407448481819599729649827444760612679633982484479320990909749849766258) }, + { SC_(0.0427051074802875518798828125), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(0.01007901212667252054016192011031518128634574280042405608429575288787780079781849433070534519744725025), SC_(0.6496440485868828142494935492676425053346976791643123944581359727635546222615012239760400912448936969), SC_(0.1262396959797012100344289618184149397963356514323414254208471391596792219880284853093463742653574388), SC_(0.007209052406185238025582485285187558666560366274224890580662194183743746879889301124659782532785993011) }, + { SC_(0.0428477637469768524169921875), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(0.02583352277498553693110660806039064766422633892472894427779997475278192905407960325424771722238563069), SC_(0.07806175611327931634902374911748283833894552787324698365132199973078391463622480718532399535687016804), SC_(0.06949360657774007380245059705831631432238157647335956339529084536270405426348101422518151232436231715), SC_(0.02408214105287188563849192778717285371598076536745778788964897373362567679841412876671363028287146863) }, + { SC_(0.0429382137954235076904296875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(0.07749880067086367126037124013152674912384913917103165552044349548764479311733605914275361731281913283), SC_(0.01717313692776002093284292179682671471823278012320965235562999882169124920800037438414274884907324238), SC_(0.02157850015504807887707156893632163949547331428010676505928711164185575356236381662016204099137551146), SC_(0.1262539707847640009072191915245950643024138684879992935909521520626691837481544818715361618006324657) }, + { SC_(0.044807471334934234619140625), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(0.01234054288779427706990057455982754904600886924335151510153060391538595674086906615031660929600283996), SC_(0.5470076231687137076984685429289288676955267079820679109494263459509885440943468816695277738706329551), SC_(0.117723721271034667248350336756134713222561587496343828233598892272393874536636024165516957343929819), SC_(0.008615244299013225741068925272602494655625062228228616460344700382775375047437182688320737984338431778) }, + { SC_(0.045094557106494903564453125), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(0.2105042293498638458683160882962397054002437129046319412285648930232339965156150711001533091366015294), SC_(0.006656374154677401068849287034475571281783168095462679867093400459340335805270966585499695263608864779), SC_(0.007554801198760006627545034213772525607306847031435802174586982320912358699056614252806400500583608579), SC_(0.4008489757479044340484638399769416290979046497520792996437886525709220275300337821384427328665722002) }, + { SC_(0.0455090440809726715087890625), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(0.08188239436428669013936604454487887878645330039755350356706463114033227568193823479628238730237720148), SC_(0.01817186356892590911123116238308960543532166154987010367468272775645803092153450681535266589192160564), SC_(0.02292084250853601645526208614585393204033738943914232091809666816334626782296210043593649872765049471), SC_(0.1342453743908993308844463216847166867519475795199708462437256344163591428061026027294988907896374514) }, + { SC_(0.0460021533071994781494140625), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(0.02371565563211131740132019797329595840461401392019786712368447089908231673203840294360466548696318837), SC_(0.0652775475006455742694611124041639287635923777115286999069654725230570576445278664702484509345833892), SC_(0.09986220342996806852642420280370664288368899192085943580578736157013194767407830365252935804321482472), SC_(0.03062110159866315206580615485801626653048360234223975396383893557766932492080300020907111634206026693) }, + { SC_(0.04610864818096160888671875), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(0.02365643518405579979197904590375370725189213387088338613311055107420784059199254630156580409929516854), SC_(0.06496267539645609712910587590739150293344982352258497194248832916707382474812298091497097781426213935), SC_(0.1012058325022869071582340175982666062188731364238542798810748349763865294406031607251519137643081574), SC_(0.03087552055265205699932948394479055192725910810911699076016867391577833091668436984440804092704140789) }, + { SC_(0.0463373474776744842529296875), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(0.001529462299123062501984892920651928665046607533210528862052051494120450351987152957999051420086926977), SC_(1.349751613405869074793793996040580304413225789873298346071158995872110393364226041698802015127148887), SC_(0.7949663729649308255464306591675852179754653718355913171259935349091047746254778846213689145584689958), SC_(0.001454489377384756758268869568892846379779993599498624627331994374936747305658197704581929014740752363) }, + { SC_(0.0464225970208644866943359375), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(0.0120834216270369079065061536301428560689638902483903486160983104164747782168849286290658398930171472), SC_(0.3773125799178865892343838019245303992926113762390594662535018032201120653291199816804070253438163847), SC_(0.1365467424354302989344015561456290262891355362247043484705567844513716964997446752988938079684757946), SC_(0.009349999679777188793593691983996723010480504483870187167158987966608551668659714040050373461618023948) }, + { SC_(0.0466847121715545654296875), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(0.001770877404087565900308145754703849747244338755224034235667843673331625500496242357887285155198935479), SC_(14.06570731667322417390446441669635384541582274607488221715422457342519541344256407076501704015706702), SC_(0.3746739589819988157950014168613403788483615887788460705078046768850902383452027696094544885955080483), SC_(0.001291048906681220171982920411470939391440296140166736184045636542119350143351667662053673744887057595) }, + { SC_(0.0471754372119903564453125), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(0.7641840588886738258308804266379474108491853622887437732761187183148550386764212168022526296510391563), SC_(0.00780504576313570246530175819563667241026825405418195849691426399875694172819685056908876543515873048), SC_(0.006117042252686400865981443131570151019629119625182508279879949940358784383991016269992267828007554214), SC_(0.1914694887983086396074248703802183734296601468118086328578052010521613743522763059863557972478486686) }, + { SC_(0.047682024538516998291015625), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(0.1442935325604409989984376664227294051297615719513705050600960685366822397228362069832070438471621943), SC_(0.01293913443692453217746076217268972320142231672089668604878080269831675497620419794005805754528954369), SC_(0.0142278247687856690352414167404378839889909673976280509625966256311007495363902534525273538741927888), SC_(0.1937997222603077373590168907766980821457466739118780875833679968300186684342359737441899321256314407) }, + { SC_(0.0477914921939373016357421875), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.008540418492323756700922738500819539195586729140024556645635395524464778463707868710481776360562356182), SC_(0.1646337714222846825086679472910647514820006600602047533004900441637570151171593193622349660068041455), SC_(0.4117153289219301483904071270429777882583980881948353734156275332843534434018339220036189678195105231), SC_(0.01054873156591916338222405800829012701597896933631356042408023817626961457172174363311164210110696295) }, + { SC_(0.0481977351009845733642578125), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(0.09668251359118980982051150044590409833591165214027606946283326294150509914472309766296550568555032827), SC_(0.02040410597582108560416499904675859706182494842975136190506906464289319912886291148084268107959910281), SC_(0.02271802735435804943015307914192286997826134568970211099024502057865337413820599622563762781212470387), SC_(0.1211119023846372287055028229472084696607546203120857413374692855906785352539854690695391031133923945) }, + { SC_(0.0482453815639019012451171875), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(0.02651778710183433002062194108350675323735329083133127905349602889180057527975378002974686225282000767), SC_(0.07548077628369215175823396217783488545566965228942268526137389353261239829354279101538030577088139837), SC_(0.09155499358405678346417569990669032976531191422468550258086727410914250795105169214674079832516644408), SC_(0.02981120517902814552656034863177667119803601449281314493604299410521202494981835046980078236992417681) }, + { SC_(0.049268923699855804443359375), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(0.1999380557723815402203975115742897578977182058573888309453971871376623866525054025900627453880678288), SC_(0.006991295459053210006462127503016552646605659713136889405433937224444250845044240946876714706238711241), SC_(0.008627913352812385077688134345284009478194294919743863636247224006362502155195005766767501466703948502), SC_(0.5917614413038263179730401176770668642228600358949262341349124266190437769958280688904864440517397174) }, + { SC_(0.106608234345912933349609375), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(0.1567325643271680311535733637586558140791593157977635586959483946756543376445197242922900697126026757), SC_(0.03782426354021814680716865622704482674033603206697483301399473814771904813205392550741452680232008597), SC_(0.06335579447932831083982526698996407606482333171321923642202925066957820527492431559921475447966192018), SC_(0.4361347539567126929327157331775634674115317265853072757810256548275583381209291286775922559495418449) }, + { SC_(0.10738034546375274658203125), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(0.1759192983713781141043066769517775019760585826370542061318767416504370223832855481118928679300018927), SC_(0.04080796323362845774958761527530762895319458941827213970164610878166397120289541083420009727475295614), SC_(0.05810539132436820005825664291995771132855890598687949355855247904364881717596193907702508407437789061), SC_(0.3487210624182838987415042086690349225060853737803191218074520751091216216261217023740464734556238907) }, + { SC_(0.111688114702701568603515625), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(0.03037679974482926103278479138428022758696205701861913013277296321339794010523056547519172356624841158), SC_(1.932588098527513538581138109877072842174917737104913328406143817955643194925642938431842135804732537), SC_(0.2636062669689901535208420550102702950564544900703742063874630749578958664612685986605952787942003469), SC_(0.01712288208894043956612917069389446165092235639340202237845176005988010707177286796851451398019346241) }, + { SC_(0.11682164669036865234375), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(0.4513235201572444596117277207890380739375196370672582204972802775097572566681329122361374491421635749), SC_(0.06848164012132792551555554896344558172847713023389468667883891939752547367578761882224252022139852402), SC_(0.04191138451469484200781214488750085772980920959306046052713352064203583027603311740599152626132502201), SC_(0.1744603340349361032921633565986441705616304061946545421262583260968045549699521705099494361582863131) }, + { SC_(0.1342063248157501220703125), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(3.588307946573231373626775683465310069959065284174762418538970363780855045986436132343834422948273051), SC_(0.02820475181306502621262024828089263232791977875848052295169252083362195525678105157278061774168208064), SC_(0.01470785056797163618017195806194651953122590503605145715998395078831580494723740556930354602780639839), SC_(0.3503210943189998645314144471260459566550335533975495123108503438210433911020760389288775227568359864) }, + { SC_(0.1359292566776275634765625), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(0.9407867644887073093774673317890893064097389177058100102744421562037389085998730899025334377102129589), SC_(0.02336001901077547167516797095781308340872465938495659285140959769644224476180882905791706018224057667), SC_(0.0200059640635205521548159818892054592756548956386650525038764251254035074826968321274462212820113728), SC_(0.5719117129470558717393200745110269847865325393825565542568112911872562691672936402109551122281647563) }, + { SC_(0.14029540121555328369140625), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(9.25148413514499363442345633394371607270462817390666064741956249089129509663568581340893347143248045), SC_(0.03910985054278708181330450092674781780748502626858075360592918133744662040401699211931873238431951032), SC_(0.01454270405788597483889606272201573861960804324695689358324678299213322458076096955131105125382808288), SC_(0.2774100162539929668842349515400432450358708213429336130826989978442689414779919106321120762166213844) }, + { SC_(0.14444768428802490234375), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(0.1171799187628517878675618214158759788692474503148068905578982787967318873036954843728137675329312737), SC_(0.4128935649414521291834604678758992573350563731135872641626922249822850658987362076741279931299778992), SC_(0.1687561587451158466824119713935487496417830269568175697384448706357212954110770619237172878947394865), SC_(0.06518078631594027584147851966957900883785205478506916144962661913157770469730498733075363496779378625) }, + { SC_(0.14527700841426849365234375), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(0.006570671869295905862258967919361869165887875963306630374932389574338515373797473280643234108987956835), SC_(11.55503129323370262362327917848264671824344178928888008812663042056471245871471260661875457790960825), SC_(0.7579669783910274507805102918151384496845008500171340187837144526404847579516859235244656981666097637), SC_(0.003568233293858479270927986043780159277584852037229656680731549272506360371516849237002671717838674548) }, + { SC_(0.14696706831455230712890625), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(3.698194715947182065363727115133775742385304084868662869332481745687085754647866200009931251808651877), SC_(0.03148618367896110825834837611978572071427317480892859224516914473365210837499199729210864360861313416), SC_(0.01594573916841151447647430905429558683414835271066297960133851313237223165502146753860547938265955592), SC_(0.3746984045940881440389540597209025488898057003574254117954272944689938954810464089789362323975889072) }, + { SC_(0.15349455177783966064453125), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(0.006262010105553504898176125752626159064208885123007827259004250042516020275137077722640097149038666485), SC_(5.986553403382404908638466667683106369247399329168017986715031896699972855254008739249338192335366597), SC_(0.9977343813141447382403536008323877728894372605311758191870116185470348235225403163446163928037488437), SC_(0.004097865523327224858703401453030975734542657002010229132462195909112630460986670340018172934993319546) }, + { SC_(0.156057536602020263671875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(0.1998384709419830669108227968548851541383199187977057365230621379149812593298016449703465251167683914), SC_(0.05061250162542556176148527575234304204559298238803822511460216152020456691664649805264480855236401173), SC_(0.10792083994111361810123895550131266291021887887927533131980006886073900217804926011752411569162112), SC_(0.8120019003385529302207735052411964706121773141496108896336143865626659500220119837862201228111819854) }, + { SC_(0.15913160145282745361328125), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(0.2653362400442073543259467149463693337232425840687907271937285013333792301808930508723185142603973274), SC_(0.06166759125346304607538673176272428753151522930783132321479690295096229540806041222124899128472728525), SC_(0.08513816897135487045888867084502305226577984860749304212448244117378615120260825299659910674927257665), SC_(0.4690832441691759568402239536046592958490589370906780462193790817898539933231606177529938655841451647) }, + { SC_(0.16493140161037445068359375), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(0.02255360580417725157352688449987446148050052392937124412456795189006035436060617892571966053254062313), SC_(2.95910072893030203491316448073082293355042405844814237129115381752843978548540651375317548947948793), SC_(0.5949478347155782418666456485132150449226332971716880135721179602575298903989999695382162222854428364), SC_(0.01393696938253300220970285605574765890824036296573998884373388532612687491491918344632434018536943153) }, + { SC_(0.1670223176479339599609375), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(0.02351816543060251568008249037715356668869454629797718284390781312849996182584820670019178996095855586), SC_(3.349513488781095958281188384206002264278993628345407389282475329306614436961446358143378498686426183), SC_(0.5726851106349176410789533160276907374720031997836776845239410879110430804619872617965250357258725878), SC_(0.01380955919095858953982953901373599986249620908763410821406449463960742478126766518403924874828772815) }, + { SC_(0.1682832241058349609375), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(0.0834453363191590562481412048785105244349574912780997856813932502291447998437889969961407569810909484), SC_(0.2221402859221980777461457706478252889633131939493953014300787345390172916486285117330868021670878506), SC_(0.3789564496983569538101059775732376092761197036133949350116650794207948688770146010884259284184270413), SC_(0.1201047195472814773661320384159746313942609418101230204992464026855954794745819853307685084226550381) }, + { SC_(0.17262919247150421142578125), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(1.264457137270341612043654684838913214204864470966782920720361710029967325397066877759146957363467585), SC_(0.1411949074760561126909204476926972554868058007819541220733313986614467364540136459798438714778505255), SC_(0.05115233781514846905330138921545154045141094580831962715417739911170790079313556195152143973112255186), SC_(0.1949802458617219806348262253574654327876816047595175936910970403341909936303597951660069556896565433) }, + { SC_(0.17392651736736297607421875), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(0.03880318414822584617414562932131981710172342991359172175158826397284092733442999973589393719725516935), SC_(0.9686378346856790410924956693371976263645973553799834718262312450793609664046938660354155986481830891), SC_(0.5784625289065969928202716191418746894407878681815775684420323188654476979859069282772575021205005023), SC_(0.03177766184015551196818393495732671761969087526509279704983895836883950781679821517653023735286013278) }, + { SC_(0.17779815196990966796875), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(0.01534630206986761454840064917756299342877269410162682833128101526852771450773322019921545939710037981), SC_(0.6673656057506811352318855987063274792844201511498435048913043094251471177173656597746843079063089669), SC_(2.658212028226008028797946147346298603009699205395810802174391892731526416047596765187879914349346872), SC_(0.02380030142349148955059659139451385983031771687815030288279990487021355576267873093519424956251760334) }, + { SC_(0.1779057085514068603515625), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(0.6484161651339239924119072947711949203586438637141321912093852378307882841848209235851709562697896043), SC_(0.02296920820563775787957143198873663134721193414623208215240172152985436498389007304290044423609625831), SC_(0.03075835141717243999727145136703722387537842471162302655273941369707225139422858997919481373789323108), SC_(1.489785437194774845029663544641891047976911317260466091950061103796799197608959510492777220061137905) }, + { SC_(0.1799491345882415771484375), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(0.02996105513497351115562180736653317260263164303143817426124847792239712986226237569412673930404575858), SC_(0.3466937095415031907290115367450401732673767258671159569150333389640457557787893302677164682400525349), SC_(2.244285859635075165290025100479706760817900876463124698225786766078543113903496547798197702440144202), SC_(0.06298061975471712930905827239831871389223628611218764574400768321998496000947847252340729302092198459) }, + { SC_(0.1830969154834747314453125), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(0.5599295501711028246024346591035573923764031457156879946099177109629126057795794356153224634609901702), SC_(0.0218916165082336459935878185752034799421187950916691250605662943235327552811871463014410987932226042), SC_(0.03487119110160166693407696682083682512126357286914844423955063804498412783498037152979313407152386301), SC_(2.093591021834377481672376445765874418342028050860795386613966375439127781346633301245951475700782519) }, + { SC_(0.18550910055637359619140625), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(0.01158521515777004768577504504022649492824433585919066539340514573820013563346959519616306842745287435), SC_(41.25496491480639322275980458426365328814399602203458269531939206684212911445813271062245200803251678), SC_(0.6159105224517543252237621536592261773494157536097394788114183584088141882931541815190439494489748348), SC_(0.003715087445192071632684209564267992486558523619669263931076463040137106730659292475671070106345671317) }, + { SC_(0.18869869410991668701171875), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(0.02514142197042129167276431927542216663170726334634813258906949753883607368508611947354271572978760359), SC_(3.996969718865251515439078700108259003504137059592513445720086302782312435913080124368025602582316432), SC_(0.6384721982698123051331763889955658051920003442372498913044410088686266719549778502827552151996552406), SC_(0.01393688900118479032787808400522081164622070520246520939838575796661961647067397282342858994726861256) }, + { SC_(0.190368711948394775390625), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(0.430854724096346600149287051936351322165161270069252559577917351200586787322476481129654592133694338), SC_(0.04692145742568572086991390344713641052916520502272279259416142644507152532992629525104030744354837644), SC_(0.06603753546189706541662023035636257026277147738603785397181423373031701215693667480352169268947748878), SC_(0.8934552544132016984342820939141693261854805722457584286602659650676899654525527289259612200631373714) }, + { SC_(0.19106571376323699951171875), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(0.03307983663401155247216674973753886778953112475460929951814632186610420545816120834640429236257339152), SC_(0.5568145422000900350992022164526521157715684951727418865733405502597042328854223840019911645753365084), SC_(1.238335247790126848304715250227057148576467613841538559044325833882928393613924284771524839914363228), SC_(0.04570770745805918132344055786520391370405003967633571776819545047603370439330572161233591126170722287) }, + { SC_(0.1921952664852142333984375), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(0.03071435509882302729237966328973344943351962293240663635341018254669711411512373339518302233730403171), SC_(0.4773146695980315742280023967202386171893147420606277007887722226919221803169665469179849162803717452), SC_(1.684783406368456491694020097414461345343107595515817186381651990824799442315698499540055784561411249), SC_(0.05091117788458086466656128046359282344374794934310849019741205802190062081673443140918467555169220577) }, + { SC_(0.19491343200206756591796875), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(0.08975118324744511366389606065830703945005345580674708661358320341762876953568837731790191490004584747), SC_(11.01240298062212497177164082430408406775595962902307943953066734311206066220169501828192219040103701), SC_(0.2823359416748046362659571728503672398399626518627210160109768565597650673365902664572085903762395455), SC_(0.02247270243923577935864068254577338462537652979139704697496036244086475527566746129488647069741306988) }, + { SC_(0.1958009898662567138671875), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(0.03879486314792486040011568442393446311125140611475505090916888538115716208194742791014501013534608605), SC_(0.514417986056485913950867567497352413379065140706601271626247041610577664454171425173392667495687012), SC_(1.123410235930126839857782387448508730978514826582558083812908461161235770645469707472902967386615397), SC_(0.05436094036170120235467119557887476411925951051908047266477921601012707848737035581693885009396934108) }, + { SC_(0.1960303783416748046875), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(0.4627535620558420859940076021474555566973398310196167373095014682172362724830107758656696425199895035), SC_(0.02264469801580615133856848733110126392269357524826444228276242403831719396349970969952479655578667452), SC_(0.04705416497192420698806088696369508262599738705376049666236896874015752223749039012359840448804723789), SC_(3.348476388150844427961717451914713315270386804304976253214132454956128970253559332046384398557585614) }, + { SC_(0.19765530526638031005859375), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(0.01031540696873367775299446729501299000055322934370363083699711529114998302919995300532284720129755989), SC_(15.23479912600383824970352417378362454538252222771183062106680959612386625666956410229228747528429323), SC_(0.8245507430661171279054073189649909934802180266077262154677995508807875915835447083526935110408970532), SC_(0.00445849201464564644814052194384209355002131743314783669215055930787480145157504147385587067142998) }, + { SC_(0.2032258808612823486328125), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(0.05778204493591628886180499918961650153804360139989373487335624985590981715958279418013821349622701968), SC_(2.102260175759754103954893131956446792713589419162590693629053292640922107747553712356053959951085891), SC_(0.4596293046491174226923624293963072714954690901302332159238328241110734130697400137319914871365686715), SC_(0.03096230048258507462675445922773912515539272003310537332893557458577595639490609736300400195514593193) }, + { SC_(0.20488469302654266357421875), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(1.652833161614253691455757364401426171890609194741862271402389319321206981897975086084297705870564972), SC_(0.08927759525079291061370770124299067582594595123178598306405239824502968712652031334618836805899007059), SC_(0.0430088660578378219085179647198176274402137312960716371124460185306258524448294975426415112290712452), SC_(0.350987418520083405807865412038775216062495007958744318973987460017500322604597639966878780732035451) }, + { SC_(0.20499289035797119140625), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(2.949237292104481314513216471174561670369006918895372315183106284401066403115460835543910369818403765), SC_(0.1100900400729786763767087301550453285994483315423781939958643117684897784267898808862694888643335171), SC_(0.03806701892739010932407138370429013310315400596623165264844361772196409835050207933771021887858997205), SC_(0.2915305236078727342925070694904897234345744613605892963122414440910211266460930772492267586052121976) }, + { SC_(0.20636825263500213623046875), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(0.03702487301279202648947159789419458657254163494624774439553521694304213792780516634398221182058982187), SC_(7.657143598136202200206304641280877903268770138867704140321197113306785825457931941581947447852893807), SC_(0.5126326817979785691924112804450683107930986774501763399820243921533105328517420453440411066417722353), SC_(0.01462667572773032394149082047025216942751830038940312080497259480071759425271601643838427200516049975) }, + { SC_(0.2126509249210357666015625), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(0.1260376960531365067103344526240290769811171426008817561765822313354617657585958947477836190211744987), SC_(10.59509459675885702447100089347499586415791292071795147739080068973136320775751412047309782836006103), SC_(0.2709600872520535829446077941498530423519706292612814935437508080622964990863466050227111653445967096), SC_(0.02705396199245387046253891786244219742955880573450671808692939625271771837679988146740972645597000085) }, + { SC_(0.2186703383922576904296875), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(2.979879749338123516593077057801305367183978120308164235747779915436450052942990551189673155487313938), SC_(0.1190753718072954115995721153761123827713660323059707778987454302998690688369757650845510170547946484), SC_(0.04042843186361656204366700949502455232063186567725376312737241460695449012886557293289807735965379234), SC_(0.3082709390593868826189222079090225550159568943908059468485567411673487084080192290016464476332497462) }, + { SC_(0.2204985320568084716796875), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(0.4092587100931235050972656843475775586316731024614413086141334068955505881940817705895592792350796005), SC_(0.0488177065424932162550086674698327641622269852915892499555071310305436786514291410959136432318611644), SC_(0.0893673518386801380570924782491472801350230382253114031596582038402254995300156471599580416951410324), SC_(1.392691374165411571366979978831338886577891490182599175351264923821489640031987232126623333463565402) }, + { SC_(0.2244409024715423583984375), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(1.522035556155868687999143709380055087028588275547460424242862193436312183212634979293192766197540452), SC_(0.03814362755106738426439863160041958624384654505378954242564637143335925195309715316049573700721797869), SC_(0.02996794136007899568802928307472154154247796183069243161849261674833273112467890664399127059513125978), SC_(0.8401096320800888072576369838202393605187867633311113553311527893944965036955050161371267591031274535) }, + { SC_(0.2275113165378570556640625), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(0.3041530499768992097252951322986219241290945759852974036750060516540959829019497670296038320744171769), SC_(1.314040413313792251243830092551866638160654641656249430532054523551899748520793301905352653286017834), SC_(0.1926215414946084208037290348513104012890495535618141420101657710800874233168820727989772845228896563), SC_(0.07964025310067381762375979671858851011758505382551570768382124452511663763543894705640192599376347996) }, + { SC_(0.22998543083667755126953125), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(5.625201757915013841796252593736216121458147204532329945266168385138205378603712437535060381694462243), SC_(0.06665469002511883220647129512392266118401853987484335860503172602390527634230187571377691953050488297), SC_(0.02386276468141475568467844856767591826257080644034600811136607510573540246214604485760317916864056356), SC_(0.4471351560034542720760835619631861184782937285061898268115971356687786573558617840066620921847126142) }, + { SC_(0.23773117363452911376953125), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(5.471400415489481497144964859844085111195509285421728419828545507429867897288978342961917608628501819), SC_(0.4026267347119045616199327463336423094114588216942213687460346681116584842583358993546843109966508113), SC_(0.05326568793540949098208746818452521088070890164557998812836585460768818136816327305575934930687968338), SC_(0.1883774920709930235621430492136464700882964591474572763921218046790975768832056145822070593616608769) }, + { SC_(0.24029083549976348876953125), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(0.01601698814763699879568949751807492369337102735581336495106419471303001577449831747136436477189565259), SC_(0.6481730579135987302571070569891286755127134576466776509505570986682557264654204890260957708808725855), SC_(6.344758533361419638276249988627875896861910671776214562385992211223577431542101617587943992599665701), SC_(0.03812283021836072610131079801369921465929443495165737724379046008101556738623611953571280020223340679) }, + { SC_(0.2418552339076995849609375), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(3.038838669056817988425492136933878539931187587167605084003282583670104881680711603057299734785102679), SC_(0.05772754986701292660979688051580745890278445917762529556388947572931512200419062639195098128333310449), SC_(0.0284981582640204095290199560224804957738445430134855720230451488763992134327458669165228002080329188), SC_(0.5798827251909632933876465456390022469445978766828289948521055194471741123802483751435568561275909928) }, + { SC_(0.2514437735080718994140625), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(0.3624160700808419571136430125899347711898590172173148388449889150935824351694541453407118087627416978), SC_(0.04742707869974894675634998192429947463621100149010806827903161942970298729627859175299179343238964074), SC_(0.1338668399562766364855549866920264529347583242769805415861902785546849235449344562497540592912396937), SC_(2.693843532214945068812178436389628110952753617096288683166139793372755541351682777532161468802598795) }, + { SC_(0.2554460465908050537109375), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(0.03949531384828945711802742582135537335170986959948512551049806209849577389804379370913616352795729265), SC_(0.4279713790228354510811102051413024006938082571728690575102191666849150123336646580590695842012391651), SC_(3.184975298414231229033371397763003009598825979485253660573120735025212682447597726318639349568270628), SC_(0.1044983710085031357441094510259632236232053340062544116301830760637171144063472801422217312553766619) }, + { SC_(0.26348793506622314453125), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(0.03864453788812224853108653216887021932148311162731323539277695952849939893710860602631414392476072779), SC_(4.647675243900434604292452979890196177407263809725117636874156830256956675378662005885832653138443064), SC_(0.7868031288310236449696014685229907771036464223319661728227546440508601201692747021201516815820703609), SC_(0.01869897991627170970220862488184332599041659275625860269300387112247529520257423040028253860398915593) }, + { SC_(0.268076002597808837890625), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(0.1306731340914987370686211591941985192827408066198449112073302803318125702203905715584371794656154797), SC_(4.784619444987424034491648627990828541475187531268869974745693461454316440100962866893789611881062428), SC_(0.3911256586350903140946271087860993418046562242626827535376031601732409623472652440568322832741967876), SC_(0.03780004506811991411257176053513818131766194631988765716536695423749595948897365955594997040281948338) }, + { SC_(0.269666731357574462890625), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(0.1125370603223801146552785324260270652746164365873474690386769750448430533860940814400703827077482619), SC_(5.454241302747206587000805387418929063235437450830919216622397085731446859460139394953531412251167071), SC_(0.4248553124965974398650329195448848813035797221262484761365369607157495446615616084586864849289450729), SC_(0.03323704597940122778533415875548312256972508318629072780854666331885644672925958083265820755838670624) }, + { SC_(0.2720829546451568603515625), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(0.1961470202978315365295344549972123882064815875426098981669763368503750318984904502951138764591499257), SC_(0.5764189152088617689964977292027773008861796199354374552178046675226980310829398280179286912263310493), SC_(0.3568031213098443981445049551115661349182777762016427610609594439221978815185949783439212876214323391), SC_(0.1367965525117247935302670380964661560603823134813902945372590448149661985766947093483139093638631161) }, + { SC_(0.27427947521209716796875), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(0.02234719562152443316345573721510555624944264227308030819000024569821690925734533799346636441914303467), SC_(1.060603536276598445911666277344791006386712750719556233504840639140312098819067974300574121249237389), SC_(2.807496539055626932518245831257506258798524615902870804367157162007190584388490732712614745207261991), SC_(0.03375398348408625096693767200345926593994009060484576638757826838735112936490605811932091546401704602) }, + { SC_(0.27554798126220703125), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(2.10131429690467149379616363913507906203458222872716112360905429286846974461783761204022507524362389), SC_(0.131746185855178578989079355305977359745050003709281150745298677283910913620036746141438874614648577), SC_(0.05570651721168184980217589558253289313793331244143724595347320939160540452709060037750731589549757636), SC_(0.4363412743350187079626892012634152707000010288921146511876049849167019250888661628459414395915373137) }, + { SC_(0.2764894068241119384765625), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(0.811170450843472717751599678489656197579623458728220780527534755115022422595332671920532074262837567), SC_(0.03688465784233834585584581535420793330961086620446353528840587602469142755544446558857516721277261015), SC_(0.05693341073190290983502078892902014640309204748472874686352433498184252923741179722249800612200083267), SC_(2.04824666730572653491030496578141391754698538368440908475060075598089438329370122555930205842113224) }, + { SC_(0.2798224389553070068359375), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(3.901445549540783325184176936807095170503938394096880371937075448158132176481385378196305493599018121), SC_(0.07466887548611482153756810863610947701355987777501107474303505548837790854566550291743507983674399687), SC_(0.03106739953298483501540999272028210734158542114520093868633360533148416407099252779596062816259329192), SC_(0.5964208354105115862939830610764406479065290004848740503812857834838636217826923635197973359363396783) }, + { SC_(0.2835395336151123046875), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(0.08153103505150606833292894538721815868079617588255441958120910871108259691927223528222153514569523378), SC_(29.9688520047490287072378703996955043037346899138252130459435910163683310421268086238995868066332934), SC_(0.4674740751236775489076610051232875609261741690255262879972128754679178721762738288979844377717126597), SC_(0.01392864826398735078436915796404251191714011297064431283098897784845650887900772466533404671601548023) }, + { SC_(0.2883693277835845947265625), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(0.1176925721788946128844502678763569830215129446443745149550231376009819739886329311519079767375937639), SC_(0.2912587454229143378272700502547082027187993043928808277522837771509082304330893236020022923157446796), SC_(0.9356628026655173451386003096690406467510217260191621832195481377788762258687291471965229499117869288), SC_(0.2842262773922173705994887689165584379461897790293983876912063182718976893016496508681015962945091122) }, + { SC_(0.289206027984619140625), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(0.008024150332068848802623033303038730177640325922908483860288699907866703272888553915071043221948635642), SC_(1.735572327342960528842407495095513988787239800386109977892873958170662880526169053319400220269003283), SC_(4.930172747416480606137777340766022909815855014007765652424542512069643007011281756807287182865975827), SC_(0.01211017273986694337200905557782475306999438873923663572102832536558207697347255731270582979040369887) }, + { SC_(0.2906552255153656005859375), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.006448771003544518556894457924616103702184188022356318282672273386602696914553023273608791322895671056), SC_(1.112354411075430623918773405996035338356176312163194054353975322771699096832081734632527306207059438), SC_(12.00224633093284733951565041977310428936327956708757213973575139405451401931546812993339619991808082), SC_(0.01644279448668091322487554020817717370428591777827854420163939163298399095786845181660860432334091101) }, + { SC_(0.295443594455718994140625), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(12.92627307515295392312128329537280292674722274256765884348612799396828996353487761968223163640949981), SC_(0.354262757496482790937599214597000782578167426647966866810871966106485445262063024324746277856615039), SC_(0.04011649748656197471702419385777386053862383867043423154500360232777881161952944243885753873028466394), SC_(0.2743561361618335806497959962679247406005330977211301828367506793717254590370439404249147266793640164) }, + { SC_(0.303143322467803955078125), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(0.06178055571475793277911396728907485182029364447411893093553010121331589257379283842595579584440443035), SC_(10.35016286164185348989925603037539295762267084485771309412111984742551689369384090741364772133316531), SC_(0.6458579936628943824554916046259240813023364896575480502999128923004882673799872966943023044363033217), SC_(0.01778640542345983133310110585936828188405692973890816850671115126539986925198678452811024085902730251) }, + { SC_(0.3131302297115325927734375), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.03945798523885219335718864477339598883338636223858411608656066677678711750410620823076022518966061376), SC_(0.5035626317688077165615913320479528627750722171681037126360863986648100970442863460265071451190186543), SC_(4.727761994657049109409044418852039569502048468964297415541493748116507567709694117089959023060382099), SC_(0.1285375504947178381011131105784474460265058739690465020164299098603388810169870753843217199251250781) }, + { SC_(0.3160552084445953369140625), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(0.7254524199712537546985463266222117975092495520727172508391609364449824636445025557985703024858922177), SC_(0.03713658628390279403423714476016659439215001379864903566573126915080488654420671313696355982300562353), SC_(0.0791669745625378249138297954570974827335411515968750613964438028349781488376878794028410058911065065), SC_(3.226261505993510239026381741066779179969926801601607938625428465173470070976401691534726163453680651) }, + { SC_(0.3175221979618072509765625), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(0.5738836831222739389205083442783384579251482860717503958078861228649784158882712460150477343109155299), SC_(0.0319790808378734552710080303995487050948228558722789689159350545944689797186141066280412524440671657), SC_(0.1020861424402957971955458388936978290458158964081195355893333176274736341602122613819542035216242073), SC_(5.694795206899077926491933544956833489862048158920116497332679695731065613454231007812859487362588454) }, + { SC_(0.3200625479221343994140625), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(0.1092441374112056598914314589476835009875361428110898086622567693450142243007387596130954555351998358), SC_(0.2610791853784550830302634862492854426088682425280605009023773799791212970912393864982006539995094504), SC_(1.645275529407670635641143985399952793550161255654537260224427266811292355231074271821358775627838152), SC_(0.4530326776697856175579428750780746847053726066233006337280078650452151535007228037936796291577282067) }, + { SC_(0.3314100205898284912109375), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(1.430229868186074212881531893767329770428446669039661015207124333704826495419429804380715463901486714), SC_(6.888523882696478316104024647887648098095027164403148154584330670989440975961238465923720908856018283), SC_(0.1834880384127827248309647583386839256762479790530689472986730902371448840496590271381652147170633887), SC_(0.07996262103180438829740342796208942450841999751940709267227124404283820588271002067823628208277187883) }, + { SC_(0.3337529003620147705078125), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(0.04380769499557251945894654432568658851066412020506682756784281516085097304835803587823155765489489422), SC_(2.51309762271313882067146887525386547444248098452343856646752323469162581033858327029100396885687202), SC_(1.285100804888122172306801279447288973232919027859349716712338361252810408950944938657704545356030221), SC_(0.03148036232006793459142151329953731546133128493276814165628122528801670034598387390176811490509696352) }, + { SC_(0.3348178863525390625), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.02077413644383653491251424251715716742071557239091639946047110322164191598047452584563078841112011177), SC_(0.7683600401256854517223643880077508236855515268120647218998545786872751956507600752305915875457058403), SC_(7.696026761756438083004464533456182047792336072056029216075761659890413667183831603680356965506814842), SC_(0.06333802383757089012648340366807011925614574565778007718560397644624514033792559631238070144790711158) }, + { SC_(0.3379584252834320068359375), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(4.854457026040178131512972198841411099037084160769971662687873391402027347779820924019892017809100206), SC_(0.09288520916281080494861659017046253634838396606126749684026871266708092841357653006911042538474132044), SC_(0.0334017174183008499881747504395002681435780091302745306712451707793309709865014619039837674899641785), SC_(0.6814616330047728939353728064366049454960797071658708075293337853581648861166988310221643053816647472) }, + { SC_(0.341137230396270751953125), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(0.4430134202378674128536942127950721658685355554538078823750661133095368577099392032204570300337533361), SC_(1.508489979242231024813832765737565819385936568131400236918859793398840204420461021710201902630282826), SC_(0.2905002369773682052908911348892732139287239257128118564024358338460159141063743064269920318628097996), SC_(0.1211099338920461522415789644625541363689481324679495648198548736660302709496214788858332727061783401) }, + { SC_(0.348990023136138916015625), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(0.04334740108671491362694435183074290066800719539750712903239534054858965603027143815681116585403496298), SC_(0.5440542358343976918320479331655531330973564903522912763680493017266071114150931775246781541682855862), SC_(4.924639656115933271876516848290949028698813868257294220498082662738987596013268197139139947721292677), SC_(0.1504199518079572781691210318434280599024291026374895515382375665776767224105132151621890648246974848) }, + { SC_(0.3532254695892333984375), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(0.1038663444377167321249028266442823053261284798096841554972096972138582625070518979489988053003247019), SC_(1.610467470987764753957815129020488228413402160016408701774147729537085666597713103047405194577659833), SC_(0.8559271874431444457944914778917254111628781227360554299755879019483827867921496081214441085963812897), SC_(0.07145745113367943706071653703197102981727832356029906485421134665152174506116945987763403436946647312) }, + { SC_(0.357727229595184326171875), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(0.6300914688420887914562217338134098359736532516003092708450729196615629379990284161215025951213746805), SC_(0.03241236038638579850613646715751209832080469723145850770104840275225828384094393007777618428302211633), SC_(0.115936729297915488709349185283151003920059796602345930456956336901467287108987051666542888822357964), SC_(6.659606541276310299903571293745505006845721858339084065393418447002017521602909309296318322679262697) }, + { SC_(0.357820212841033935546875), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(0.9718582957147785042841204829939345119777946778160083975291897219870807012802123351906640500790305077), SC_(0.2088620014622945202702568499009378822867857175724403282659531724571710079399851900914971072877814059), SC_(0.1373196312202766112050885538380019515276091743217013142652427119764103781908841231643249329949721789), SC_(0.5454015990564563027630886713792351019359701411417544554669000338059108806888907144495165762375666368) }, + { SC_(0.36231195926666259765625), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(3.641144711481077690028035696597515508712121772834017229270618420271671619343004124607429221705676565), SC_(0.5238419461514128499765103646919729834906471847656674510853688728979228072413925135605654809412760154), SC_(0.08509334056676867915641851765527586804295415555368293295351717192504855054228984711687588304504409032), SC_(0.3002841655488905422145495190710556505091453859362984722082712810238960358398557684157702422262765722) }, + { SC_(0.372162640094757080078125), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(1.964984710540506538249901753981680561303380547990589452187489379946449852526043096776903913215001752), SC_(0.3487762648064955693316560180958838632373838851328916423548524979525188303136001534134377684338565752), SC_(0.1059322580413916355411742993193714127594168316750233257310169048246880829891546141896393082084365025), SC_(0.3872676098271575367031634004037115308177281340405686095864558182285178850306796076678070471583020263) }, + { SC_(0.3829286098480224609375), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(0.1736107149333914219648067660629720454202348545565967072368263727845844252461897790475957585138108318), SC_(3.532378654353265969860206607569255622225819771363845061473163430742922119471151381341083873474381177), SC_(0.6007865120537144420986879555992729744236699736471124434353488677459365534190727968830083695013229349), SC_(0.05822841151278409158055984574864716365374344083072258110689812870005284769876924380645439169660439755) }, + { SC_(0.38448631763458251953125), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(0.1602160184131685710826387696881486884036538237546955037103994515423271724485963216123416934758487946), SC_(4.416335719828284242329945210114967558020659035274468933043668845590797312357965038775627726162227443), SC_(0.6185160987600060724263371658097224211108240518689414063952471475747276784420988253061912565713537345), SC_(0.04926174599232379578503726442706015331507290355233477246151314611939634101403924070233875395381329706) }, + { SC_(0.390661776065826416015625), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(0.016430173339383890180594559573034532985150198113525961969363351633524804479591241444216627126254248), SC_(4.685615222345205677907699236757519185348840199008330404507096823381406218761309263891883376101320398), SC_(2.278039636851141097781739242760226884734164748198420012235599361120728453376731632051746352283350714), SC_(0.01146850902057415348751507103085676245903027757064201169937232242331393529852903014247542047653331033) }, + { SC_(0.392132341861724853515625), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(29.98578403841162113068120771318567270628952796422977138781047178607071705547670203055950127562429637), SC_(0.2988888330168795405817126669064617931399165258071879653761072537203873771320550166826647473504882885), SC_(0.02506223274136495670301751206770462963823363116397664363107839810511508538763383643473501818940588134), SC_(0.4327649417414710947998234579565313259781697405094963336516421503729808944682354805014298910631805041) }, + { SC_(0.405172526836395263671875), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(0.3036963589745750152918788963553177829455919859204301396986238138859216367497710396754023790912797779), SC_(8.078002709684296936638589792307709417390414531115972356309075078053497182692040884243578929157821162), SC_(0.4628780127600571078413951044851607035114113230072719086705328007319496344128670566273416711265386115), SC_(0.04855137173751300383091342654632369951573641307330426666424434861194037344315488008087583429453673436) }, + { SC_(0.41187572479248046875), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(0.02638505759066038530348323320851701173939672788613869515727293537503263062179700909157214462781665501), SC_(0.8066060717537576699029957939955550757613965556378237074348585632281383629520910744708329768022371282), SC_(8.537905712586634201157356658589688669548932586870301498940632205271107450120814158721678800081172884), SC_(0.1007028444363077360813121971046639919847851450940387474609011263896571648846935632336779418838730483) }, + { SC_(0.4127636849880218505859375), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(0.1227653861842280274998252888989414384941329948340793993208311418494668825480204925648299425006292218), SC_(12.45940096301951172815903657933305153299649670835565507817423699725458665338628458364874928249131179), SC_(0.702847618272622753479595939408644643094148313176143520249148558793712198835525953322303088501611864), SC_(0.02389778373144462111172791814193958737807443705060041598458104887930331253463516451093496539941518079) }, + { SC_(0.4189456403255462646484375), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(0.2169887929834269599745794141981431731669968833906501648306676392874319663081212481595882962417517989), SC_(4.33260432960366002500421044120773776189024803297208578890804958338620724260972357531444862839489071), SC_(0.5982656783009382972892826151180138963747436526927469086697439282909168503149167587163550027425749745), SC_(0.05992074855303405238447168153586702097541479611438284726807107089790067207042193252230379782746152307) }, + { SC_(0.419861257076263427734375), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(0.0361231514469032644739118373777392866468231598325321758283850498567479095775047595615065023476886435), SC_(1.270503408508838269219626907332511746826844397155298227392506965882528954853101035442013725109655588), SC_(3.583422438095202584407945402142100471847737510547609963508254802488155365122928251862497348250021178), SC_(0.06562176411279833455001172237891077460520205312911119744294573458619573092124512732859981304187267524) }, + { SC_(0.420405864715576171875), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(1.05614170726357390214328399743844440177303477850171963260186661128522791919617034760068248602287795), SC_(3.711631314399999724297894534256478123670470042750752332412940935597231544504648065947185722407417657), SC_(0.2644268328668949040582204684285194749945904954889903516543849594179084459504679541907221992805624799), SC_(0.114548812660366699755722814087837956320447031281597441384993658839662719948132489247457174451222835) }, + { SC_(0.4246321618556976318359375), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(0.1291535034728801434847854391315965657326240209996475434457137984137591432589560375375078000191635032), SC_(0.301240411486755923724312779985930981326114900972436022840000322966302795141938870763018312972052771), SC_(2.596011048561817218025982501369747386381054244296173876631488435515360461251278190556359611185707298), SC_(0.7862254959075856781320702765928282294939077741213461698321185690169550380519739836860032454319883882) }, + { SC_(0.4324857294559478759765625), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(0.02927591832613120555466334762877961919994588176111887115150926864029444400558487497890814402577480561), SC_(12.13386368758314384940187339235134807177173875452325827353201121731843753220154098429317528374130544), SC_(1.404654882086107221097555780866495883083052427654022582801579621322373079130463467773724416309612614), SC_(0.0091798634059494302631990121698536185991456084651133490994868194903598975714599223167895509569891971) }, + { SC_(0.4377235472202301025390625), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(0.02977878571244932542522372748274162602107932861776721061269246460290690530375544930316572771013952156), SC_(1.093957085088248684281977614266314505471737216195722238244952348968662793220465105656736025100957576), SC_(5.577258275423017040453888267989551063104355704485680015015305162176408170047334106821728429244686186), SC_(0.0773823299999660503847307421125167152003861814038840612745795110627662160236265245576477556967585584) }, + { SC_(0.4503771364688873291015625), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(0.504278773468822769590298180205443701615107300030645041914873527465912482907260617752467074741492937), SC_(0.07263840637530736106822170508146011970575912077991731493622449144023696783900216315973828565985246711), SC_(0.3622093381465554137051271346827188692786531162047859506949594507926226292380153153192111869545465397), SC_(4.838652370158587363848635389398677900605916079696168579456516019760483221516717100188767695583314747) }, + { SC_(0.4543992578983306884765625), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(0.01058779277198366622428645384125702078520171007474573325402143225584218531335138199480628554789113726), SC_(1.676436275641431622365237536878064015307341142739428819240264743349473532299691457421184598386783688), SC_(9.064095307221154963606361663266686017390869947652985153812776332052695729929840064683144204543153623), SC_(0.02720231895098953280988150859969137079255199602732359835176071494766486460807712641866858144580778563) }, + { SC_(0.460073292255401611328125), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(0.07178600556277649986358282978908849568426905290098951620891031647768047787291337320554163158594276241), SC_(0.7256946344131610570914547392216204847966985737096911845720103357567629297710647719288931045921502015), SC_(3.480339625520318013942482864490550605544637715217178085135558442548697692657425548772576537870335212), SC_(0.2099488039649351796619160522414933988431776093368843668704723680008756020924309148902573557423869295) }, + { SC_(0.461952388286590576171875), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(0.06094626109870637178223630212475307040528508402520956710090952195564961543404434116533046497279511309), SC_(3.264937866919093032608460422284911481264954322006806235972335303918061660361755813696275126936526417), SC_(1.606598389820871046407780232517955524730436693198969781385978894717891063335780995792640143946612975), SC_(0.03958173719419811041073893504655577775583671713795951388463222617181197812361196193071006006691615416) }, + { SC_(0.4693518579006195068359375), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(1.758317401616840078427905723536414986465564639049912111905708033865066277512063154634711843805932712), SC_(0.187800787621347746216831275610560776493145289407332641985261501844156276198968058636841550946847725), SC_(0.1161832129382042439226811316484574138671494096171573567264260918717623090493917574823443666247204525), SC_(0.9027824538910037148493471283500298672927443042347325062792636850794431662785830483893853619949497863) }, + { SC_(0.471541702747344970703125), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(0.1542769780489241427732313940921220413600662398998852236423154085470310119789111618108095340897760719), SC_(15.75979864645052402061252944707357540871257849544481410698392652634133086012893654106784764544082307), SC_(0.7481758904009601584661294046135022957441785692010720234212659834685453370322731634550343202347000152), SC_(0.02328353394150255219943629039595637630530860715861482310245665786541454468079063062791552867700512582) }, + { SC_(0.4756006300449371337890625), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(0.7365536439838779299830611278932377830062529920253289815452392553106722849116831953479968925661868809), SC_(0.04036154004003123214079604793689287999663403663044616502792322545345539857516669836166576621715794383), SC_(0.1905370113415376025702453678146905144485588084136012358459501766706615651663869555932908993232975435), SC_(7.905349549560925035963785417479872617937936051170280351275767833277681754635511991404529849940759901) }, + { SC_(0.4795700013637542724609375), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(0.02879620694943085151851879493080322772314171721861423573381737942999436857679813016024254862678171752), SC_(0.8381925311868619315686634398154647562327105148034720233721990318894925467878011657615863982632720409), SC_(10.22990382105470768989973237093926559499433499508635582768830228472639622803918417838359220084146026), SC_(0.1399776107694737613649220008673972473229787378248542987775861896774573531172091549750982009370293543) }, + { SC_(0.487456142902374267578125), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(0.3588610400718649204552693145186657856333760371935713182776966780084834276342625744831022454584944008), SC_(43.67560439310114641717478422468818496975280183525576152515703729787850522543308029738728612120567634), SC_(0.5400928160858633410505343552985447673227010890563610052848974901082643660941536296782093851718195545), SC_(0.02032052122210200958933072192025837222984020313387506139895052702595202493141398178444727929202841538) }, + { SC_(0.4918993413448333740234375), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(5.845434709170928883749413809858382646545928535148869239682566938610208530717297824307087287403874219), SC_(0.1652201295513301527318834218222332074427923597958865130990786930741008473973381060800884092495041709), SC_(0.04619898671410076118795482731780784942716788132212188282575729767538876939955227513958761618561120137), SC_(0.8641447370553294236566994874888791228395124458566323964192483671339427544634948170511445268447113003) }, + { SC_(0.496043980121612548828125), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(0.0093375043373035554211225803488158479211987390269864630311111081789561598929381018637107743405404934), SC_(1.308132809082890285613761094936556799049913083232082100705561555260754511319274340109486423283205166), SC_(17.2620147349978607693371391749824675802309197384797654759399339042605883248052821035459303421680288), SC_(0.04364413653338842182950138265725023328848726420484131608364211755443050667460829235918659320140359827) }, + { SC_(0.497413933277130126953125), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(12.48439306635283409096612516175082563364337838314700548864780709243630073581175853247437172361248638), SC_(0.3072976336714965066442263720914633304947524305236553684160683809222452191606540561615680803946510102), SC_(0.03894444934631105682300736644674837056683523131651810042362053384935049257532099916683198319693040403), SC_(0.6113396553914765300292770320177825677147210791254761860304904572255135564259603464516313525476960828) }, + { SC_(1.00639164447784423828125), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(2.583164309309920482833333398727618346147032762483864288619764591544064383339897146240172937738442203), SC_(0.8111178595770546378471579416062443537453114246705573110205627813572050729200112085960855891645824903), SC_(0.3706052728893315845269273053811098995621037229880648602060601706064801893711544926664415473594304037), SC_(1.181611165535138473814776004734852654438225685518536343785544264218072573010315951540676040915266589) }, + { SC_(1.050155162811279296875), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(0.4819085298281465812563929484926377552267754320888637443813044242085395977994969023199729155766272268), SC_(3.820834612547489594965939161755255531029834436366769946729063755832002994049753133222820289062063766), SC_(1.739357522640581752577837680062192113154652492540169051524030693517045226331416928389018402667089423), SC_(0.216039045314031665562083905675991730318385204313716350870210112881282961223468642766198903403136737) }, + { SC_(1.07226502895355224609375), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(0.1441737138829000704541773981592190756211938493379739424182687240481471516312917034598487672520626168), SC_(1.161968094607912482190971620672735787194370295163888087048117509935103711835388678035385423347996497), SC_(7.146380065523985034547022938260507304470949898419094090293105635200511971768115333301618905196238622), SC_(0.9292691330654647109357122868072676335456833415980597645306912673472478706060747891611500702017706147) }, + { SC_(1.11469662189483642578125), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(2.506184101751583272911522973461969624219773799022270250762044815118024532773837141090563100305955546), SC_(21.78168366371772885602790648480888089735618468474863008167562682355359445232152299472708715137877426), SC_(0.7720191481685578921383614600216736662089386639331014019255794519384299894474916262368960759706125981), SC_(0.07872543789298592751892831094575998673049933400772137398635371078936678549571237953249431063488720143) }, + { SC_(1.1221637725830078125), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(12.48839371165030356036334590704994956157379329878561472492389868561459047691368472143401550418601258), SC_(0.9593205697877590326715623370432958592938410082062975395347372135262203536518212855467120495710885707), SC_(0.08255214355362097285700942796670653039599854587441912537389697592029351584978468274104212170732939352), SC_(1.210675621922532705003033620258773977902250676193118494316899182009190701818713827708363244346804381) }, + { SC_(1.1509554386138916015625), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(1.471476471565864033767870992232690869010682519964523296630200763943607081526970142930229251382476878), SC_(0.1021024820779126096567643380375310495488037642665867027917610985248602815866238280320545852011337357), SC_(0.716195835556761493329791092660330704094168640983741485283981909302450625948537716587320208983871324), SC_(9.165631926816083701947760662497046515383041430847142494116546093612897662057664057861891112258252509) }, + { SC_(1.261780261993408203125), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(0.7993900169642160722375341125566742814244300283067860633692210690594716456478223718996746269635829686), SC_(13.57688677425490941323922162740246347417404809687663003445194410410056197107218763550430986789271112), SC_(1.565565293440512242125127227929271664322010025899950664390933601581310119541224730322244822173420906), SC_(0.07143576530198148857550924210702214891802051703071464087812478583854350768851063475813800166325122064) }, + { SC_(1.3947961330413818359375), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(0.1319662345934989574012203579389327688904675327908240246505884567228021610207582486107540119380898089), SC_(9.064842723568148608974029477230197640426377051563561622681743838297572674270431483493258817294337208), SC_(4.063702048236550760479865515803520315921188975340123794419973638871664684244324586790591041236672428), SC_(0.04844816146855192319582157375251675334646810156473207911579231150239059235160753959156366263564753038) }, + { SC_(1.3948490619659423828125), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(0.08189444393120079733034338955049356879048404371297857206839655806032383896008214742508832279401452457), SC_(1.910906026493639740778725361529673160824282389181433120667100228307682290960333576732163761810380086), SC_(12.28935738935472130084740579675314181337408481586848085888630945517240683439004249480531905548551759), SC_(0.7313348554415135956514906626740754042289279515014362113791672524506511839347700083364762209393396151) }, + { SC_(1.4270474910736083984375), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(5.780738136753213054714509575659986463277419166701176084015382393301543620865205694589001933043298712), SC_(0.5368040895693119969788633666596125946565735524867685734734115641443969290573433032235816897044946914), SC_(0.2070920941435322226106658266120723432266375817207153428752940053104515368073046670035450992841223535), SC_(2.55697628410344779140698336327664928586190833536300660508147162561779675523265553989356277489265823) }, + { SC_(1.5162646770477294921875), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(1.344575373553505311730675256220311419565124212610845710397021394343638336588812970743553757624881365), SC_(0.4655917767307797996070603660520504180732509877746496121569027618472112922008580871500545116792071928), SC_(1.788943652850099836974596445115616715811048200041835036255213740320215749002422854034301913837538682), SC_(4.696701324279856239851520275163444970654202126117514172474711934558318282113129577094469070550108214) }, + { SC_(1.54621255397796630859375), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(0.2430096220272475538431341554092756171199149225849619307039468661426361250618184918575778552704206274), SC_(1.99879547025123787418798171011557442050137861356168536001798285636587657187077256489120383024861221), SC_(6.836152836510254591868603991945422485316148414477255077031948694958699991661321768556483487419433476), SC_(1.016422149253109971409413809940151154300795194628031281004683040350923016635835281610254273772290918) }, + { SC_(1.60629665851593017578125), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(0.07095025305466215587284866465122819745671477073385186942480752344206674116710707664156528380958992057), SC_(1.462167865942088845956391896226229073934385924064470856264567873737217043645431723994685150640984064), SC_(22.77950022148668981604318196389780228433677971329955867005432474497948682445306657507565992153201716), SC_(1.963513169368834353427158764211207306663912464164969946423072455275798878521021206919466802055853554) }, + { SC_(1.671708583831787109375), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(97.93744556459864881905096079484231062876551255070498620194881661120418836411609927878338697778861183), SC_(13.49500939766188294028728215418002726664587198980540979448687777622699647677752181275317899388639596), SC_(0.04948347937788816061201652394482274337325020389859045482366771300715141517832311878000375679616328546), SC_(0.7070113979200805425946667343245425835879428903231221607510505220879604934479407785475102349080881073) }, + { SC_(1.68060910701751708984375), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(1.280547872356325902993529219287252629771032390801150137184797878532458347673007010198934623585206981), SC_(0.1075337957061317341840082236043699781838638598521225297351573619808522342289837094616455503635146907), SC_(2.862645204297701283718802697311945474109948344199986565539221931049071794365845353510285601456920391), SC_(20.55648230544560391217000392873182602964554710377640816982535159118663034779353764172453850889990701) }, + { SC_(1.731689929962158203125), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(34.91924234199382841307410216031548541117003317337900648975021265618216444177618526936934152595033486), SC_(4.825435152180760823301156170724075506386739838200411866990241695700100163546683418180599953718414184), SC_(0.07867621218928683553787673950382233504667035436473931912136063763411206152952118058330449527512266445), SC_(1.064088430783969169465660550941206901050925496717500929057756972208657171799654391573095265589956315) }, + { SC_(1.75962197780609130859375), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(0.1488893467206690983885000920026130649785085460870246033715223730297664355723385839781012673913899804), SC_(1.081450118592211850584880731200312341883493665034165599648926454621152607462080420188911921577389173), SC_(20.01523064570746770513555753925820303990313181253065519599342193729496933217583375333045411469735505), SC_(4.276669902857975535711042160820902529578969647028121187093074706200926046762020507509388169123624833) }, + { SC_(1.791239261627197265625), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(1.556177829935897434862448619184652225195615152425073369561404435110802055674794917298813499355671629), SC_(17.91597014951130578426174681547246916023527931439357157575119935679290159590649566566079659513339768), SC_(1.920221386679661955989906872450590901742184949711866132880181644424982700387849028158730412515147687), SC_(0.09011693368305316313058712783667136165340528769030468945380923185442827152725505822358524696933334351) }, + { SC_(1.90620529651641845703125), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(0.8134584673643854168066407376530464185726313764654502416078387322817246837576405470190126746845990832), SC_(0.2772193829685320856328428268169219489132366167303053781960668934232821345960544570840178711556218616), SC_(7.25649112453215621105088579480374050070734972878105479917349713674272238042573936424251454151563249), SC_(16.40273584303819100160763506879003950332393616170159632053723811461443937788194676098840633123781613) }, + { SC_(1.92305755615234375), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(0.05989098510759025549660741640672545782777257521685023129068397120427659820771493293842851086212088968), SC_(4.009776240520559439337258675296156662772183644460808361729420621592383153308495330257454723404660907), SC_(13.61887123975641635007543342623586971641183100081400551527945332597897945505428475341803500296524834), SC_(0.3689886375674207838665869298591646285962753677358928297995563416857725090305235316312560574463033593) }, + { SC_(1.9263775348663330078125), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.1410485147984004171437615169718987873899450279134959453634305969907181979248009125097646346673986752), SC_(1.203044334770010847175515429934876777507227966605250801288254321527590226507904695566210202755401024), SC_(22.70493998037175256419005759181450414994370713916733184001249649085996484640998307999112085587474292), SC_(4.572274846261589537594579695226528662273307739636039702857509971355488798703241128786500233998819253) }, + { SC_(1.9296014308929443359375), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(72.8090810113904232207951434601216319785321116384279121384422695847817937768509449215541396007798302), SC_(33.1763969493199051656456675566159691125270666373451758034133477988499218352333365901057146066519393), SC_(0.1415071545232367377252437834121282060041400478847934231213824715900917353252017225834938568300874175), SC_(0.4357597881926646501007939629430372689224798314125735661036757033657317437798057614251859332190462341) }, + { SC_(1.9597280025482177734375), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(30.51653998313078434115723095148348589774253147817209957014448555523313803076948640345715068638848628), SC_(8.966808428670668615647970598191174195733840083160772118637330929702325868563831672214722463450832849), SC_(0.1548185312526636378137303934123127774811578425928171785795479690322778708247955045113608382840691688), SC_(0.8438815022451979657859020085481361541852159379653761300877106099356351185312840993976491016450123214) }, + { SC_(1.9800770282745361328125), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(37.87045387429045111009503532101453837732076328784514140064737059463483750740507938669329773870266854), SC_(6.47866363509068248114558598566564468231339097547229852210529140812124379673349108022420902163703531), SC_(0.09218186157788265031756276989920883576728962447470827811047785973824268912966045053584825517682740108), SC_(1.096520379544903780601680576957821177669724159266257903442791268759625095058567155691124779922244272) }, + { SC_(2.015772342681884765625), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(3.930928884783387053285926897414468984252200849047597637179838418969438753357035051537235827725268661), SC_(16.79651567636131713791254305046818521138202890223663605003103679414973775485457492584002684958226436), SC_(1.361773301910556457637921304722680156103887390120148551305197758180527290243283418410986116410168702), SC_(0.200384091921042131236296443074980179031172403053229788433149101020854184100269310754887826474908758) }, + { SC_(2.047484874725341796875), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(2.672657604077981070403970193040082354472901960179440139490023710902456645911573655217119293941952183), SC_(0.2594182685417545882794169238496182544065691906800388257885689975439310937308492141367746619452496744), SC_(1.309903258132699709277962700205583714561514507898330105056784375571398858485533442608314586796403644), SC_(9.421167234448753594747047743752558733497491009402249909866825942897156945755462779060836242089666261) }, + { SC_(2.05790615081787109375), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(1.183601757089906857270692389615690875879127086933406057189741814071084168171518754741337194140929189), SC_(29.49137810290674909870221199581406428599662895265115961224836143382545568943577545652985201047332573), SC_(2.592119496128930839526131222476143580181033312800965808015246664723648251901096872112123829148669532), SC_(0.03325764023294514766853549107639217410175005880023681630595776860279968599887224947801787364383784809) }, + { SC_(2.1463463306427001953125), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(0.8435450618509920190399363331729189111759944429972861364079809028991475651362802233877571758037500538), SC_(8.592945449027186106856543981571353559472024960840473157697028638850512483650397318729437633263745263), SC_(3.688709209572174957330306383648171532118799292863726515504643107420833155418599577092736672838383523), SC_(0.2653980409202751840611362376487067287794202214971913103597945568261195550518944896477844877861940504) }, + { SC_(2.1678431034088134765625), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(0.4014071308999764975345127438827833411472041917044899006507950157455554915543097148897195742117373917), SC_(2.345492605606358952701238312764235355223658186515451953680621074037260655257765602528850741950742887), SC_(8.459839376488632787650669301187430137703523937780489872252324803493101141514965098361212258576703022), SC_(1.923115818098125625251193451035526247944417997864148849269505016120361510960456283380702793770107077) }, + { SC_(2.1962072849273681640625), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(0.9187243308455876307436683159633605969225513248037198972969586546277005968362673250096199096674563693), SC_(0.3214969808239116242653646408742528344553980711005926956740735986263313645819443488329492330010287595), SC_(8.199659419580172326041720562457431561494935044278255209325402290790322089662888374611510183828245738), SC_(17.49390836739623818042107919547668822471541901877611577277910438827384976048376782512062223101223779) }, + { SC_(2.240623950958251953125), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(3.383031119203994496112794342642480614152273735106610346187024666962094322947197986655684614146841013), SC_(62.47802914959336497597432003191008678941764071302291529579465727984564206148244758241167942272984408), SC_(1.899048043892279237256477179782019576546101811888663008620201420835012761232419116561394209778213946), SC_(0.02229629946863944760912244328172500929706628783717463033360813768507734246888022568175153021266692758) }, + { SC_(2.272928714752197265625), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(11.09714852149634706997911845573998328162065347459511819184389839917370494174350697463351698038476189), SC_(181.8040176669067718575748984540346780811321823684117509263624949406470806881170703836129663760424218), SC_(1.2750632535879094634975130846750825594033932572731329180347529107453569279136031286608000734648438), SC_(0.01343717090119828656936983688897221142133728254818679479817531739937246958819994160770590086266313625) }, + { SC_(2.2901318073272705078125), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(20.39891390495796208624544823608773582352537034306049615900718202296299357426961293395517680859642494), SC_(138.3152658195656175342400748607141000686919315435277264978038872922665187087885747168286980410851988), SC_(0.8953560081984017883856316923398713304610192678564092702259760940117134755501321289792810583153042931), SC_(0.0419453780326811077239743591807798429763033992073178175288351904038888183648917768960603736693951748) }, + { SC_(2.311191082000732421875), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(2.806957722661207494513680793565351035184651651193492219780377706796782311612994763014949639281424349), SC_(0.321051717780296296369297571665655811767178572517923471320109478969763644292470642737634093208122655), SC_(1.686617665244106427078583035664462330046359118097679008445842972592872793443783020495185410515165495), SC_(10.07151554500278891113255730731871321417734672981026331678274758500572617140039710824880643797674495) }, + { SC_(2.3320209980010986328125), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(30.17392836791466138225920226433884249511703994454058695694616773756996092574027968501708771813087871), SC_(14.67795296032780265266633959573733107052238856851010670988401546262965022159933109338819178767063308), SC_(0.2515237865533353091854526745529551008338694721917042646255422959923853901188547219973095982122152806), SC_(0.7346953748020346980752183886924881396431369495226387951038883952978441428834114292553640835545138954) }, + { SC_(2.336652278900146484375), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(7.063548142910021255237550337937577893954347485193616490351766712078603197684051224820109153794064557), SC_(11.67963911847162107254247534959577955933734812410084033607073355908285648661673211472155934728148791), SC_(1.030287669167634459651613919103381614714804742700734988026350463138043983475413236189580040884631538), SC_(0.5231443583273954762922956957802205482337057973599644621445679438063906453645512047181401228955337916) }, + { SC_(2.341427326202392578125), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(2.258742845403549052090496107755989821343725441005563415164774042104937612606951733317612881182911768), SC_(0.5206780088506455827226984816033452837131479596226830167583861299139619399875505769529235789088172852), SC_(2.465753451449959073292624069163699513495910783521908756802101201724944418056248717158080996798358947), SC_(8.316266722006382197488740334564248700292899320197703544001169234730549409023199069812286979771103428) }, + { SC_(2.421394824981689453125), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(13.45933571113832955686167676264275533027794732473112356471320906053745177269611767487516923181608495), SC_(6.464988528280701263939076260557789979154327451084538102185969844542680894484715484293745756677389912), SC_(0.4445805230025789356574239291141222939825207869914379909311955213515609656941731598626787696056438121), SC_(1.210999952349985200839594398450205087541940105990924052121127944323929709004988367290577001916606792) }, + { SC_(2.46974658966064453125), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(0.1812631819488254293315678795742584691678317304650571037635701565471600534847787362649214110693968691), SC_(1.42299451707172020452329811815370681360375211668876480333196197119287834704135067870881773918512547), SC_(25.93275250977447975972110689916701190878334583248021608283947334604747892532398447699566186068442411), SC_(6.375752055465192420962510265207923170258258870482855741148881217052466796943697003410067753842489549) }, + { SC_(2.5390207767486572265625), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(20.01265570017142774116924587377499975589319782293093031839816047481855399744250132462701145118175168), SC_(4.018642370310534141611017418151004965466327507264058562307146131911524276310034524327266888654146687), SC_(0.2003941235331129416818017298328648112677190693010765790826016114145566340923820454329112771705500769), SC_(1.941215444579243436931895940346914268393676624257155764455662756748584651934859556566829780325368932) }, + { SC_(2.58206081390380859375), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(0.4432076207602274762372646158866698282663620217305173612330996052442495012153546784142856694354579657), SC_(0.8805051225017589962263676596525830634881481060143527764099528816230405636978876623328377961142348), SC_(18.43455876769000146961760514039385047293728954305008836658588851393615374388106772690890862327263159), SC_(11.5433937882210387835043676693487728987982626226848079030610485041529975335366574855901370297015484) }, + { SC_(2.60607814788818359375), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(3.926227989748608343157257439867671470036980909483144410391428581987462211501047918257402319077349181), SC_(26.1263389910151109156033793131486018666697450257551070028273433858847209552516887480564050828035964), SC_(2.088615480081908604957389339075916558576742213280596991301898648731622686480805468069936093799521361), SC_(0.1280230688229933990993533916612090460930910905817330549098567689009733709935211533895383084324246833) }, + { SC_(2.60628604888916015625), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(0.1018448882355728420015688282476001318372802957501206687614120534606109117380480919058905020698968573), SC_(1.773469277790847511918471920482343673438097318236129671738465543032529742892812236708981650672788174), SC_(34.91200735121754609055525545308650930604074348539859152472440840753148130145658020299724464093941729), SC_(5.435344034372304348211379660221222956484723626629014623055318599119155624250180088283833742325420235) }, + { SC_(2.653162479400634765625), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(0.03402397494624916667200349893010483783658202154834833151077445313920044973231341107190237978526154636), SC_(2.480333245006478382760763315169584331137857595482959505106784635608828472092012931881534268210314835), SC_(46.18497313428005988415650660830666103563542650697560085295077487999114172227752234949217321681314033), SC_(3.092308411604439696438156138131688638169460540771492364413801526516741718313715880521869262702349414) }, + { SC_(2.6959133148193359375), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(23.94855598585706047619442987905253261389460263209411819118345898516160267237369739281337326532905054), SC_(5.136401556631397570856782099949577724893508946770767700647476204150678915985486470971228509568151528), SC_(0.1904990842166798133533503374564147685326498502776445054681783577994022214301001700241845605902193229), SC_(1.850550260293175458768864340875495731107756561524244345302371827521411295206847669282137806975107403) }, + { SC_(2.8843536376953125), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(29.61670107567073442080574748884869233716157632919463400813537869910313008368409498039353342044474303), SC_(168.7078460811229830830900728810523639906650712662255960396842286555963701027772214848943744776737507), SC_(1.002411731869276399512482413329718951918007217070757361392774981469306785875856479096958789415725069), SC_(0.0431799187954493334380701646437612632235360675360748740609130045387069639833256173511740190894190521) }, + { SC_(2.890100955963134765625), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(33.86679471907637984113795050682953829640848201025247212190333792353168812839241597885164113396730178), SC_(17.79554833290217214070335235970517477186727649493416258433407032901092383189298018156684018367377573), SC_(0.3064467347005833633625004766718934196221058218345628252522311243878108063228527287381528358490859358), SC_(0.8646494972009318672393867213805464197057591897696454847331823534843512750058694090911378620017242538) }, + { SC_(2.919688701629638671875), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(6.515124026900758826318944632759172231932748850175691230056289511822919465169369593872004447068092387), SC_(23.88167824462119552841223291078268424252658838760737079891824973695340637368384149725208775801180538), SC_(1.778104429000833542889499467752066478849259790577024155119246752946559520670502009479099954403458944), SC_(0.2505906787353307283625935614142520211534184644861723274762894150271637119547850736369401366703704598) }, + { SC_(2.9536075592041015625), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(9.624576685854849558487676124400217337000345550832827022835328883804636719382637060511646193139355496), SC_(53.04770499822952612439139452862175521431708252224727726779212785099416906647159701488341414593491224), SC_(1.59247545261098354279365783715688872951989833800499977917464392709709240241583151650245952212083294), SC_(0.08994136722689350642551717243292319137967073648569052768088480863204162963644812820947027841225309656) }, + { SC_(2.9555909633636474609375), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(0.1050587032170490286257280301728763256795676956656159247915200109613879197139985680424160463144507266), SC_(1.94318074796452454244157034778783090511386319271486609432012494787467315965387631712210447234913174), SC_(39.26022199561925383200297052558804001884165349124967184842851789726691498761190095980233316832606528), SC_(6.490855877921184953220605255257781224581269082678785809474314467505682629042524854598143664974942495) }, + { SC_(2.959605693817138671875), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(10.20445053389312812319500056334566674919378170983586356900531369190087197438162463974914474638842098), SC_(59.42724715720617867392507966761287308057733743600056027636731241550111664018232593529842507799132167), SC_(1.571812752708347428933260624214768828869716106065118746119078466024241365962998632142829314122192475), SC_(0.07785853582163706167475514666605562093326547626324984193512586547630389365245809661406319275749839311) }, + { SC_(2.9766957759857177734375), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(3.795494240079260421268817777419055904914460240718869179304921988043922807785975296932981107552477173), SC_(6.152652362701812384495902004572921244157076754389275875984983694082456668006621635754742602490756824), SC_(2.422491168203587399144995263368603556723562359472166369856292335037471035989919715052532038212264525), SC_(1.380142363807201986147299288359247841985518292171120629252578805701457105057516833971339808347935275) }, + { SC_(3.0000896453857421875), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(11.04550449148392114032266984944040465284551283988868808831025514608502485028696425384577913140849195), SC_(17.11335890336174907838363993901072071662747864769624967821530732829680381315721975551341841261443704), SC_(1.118993825319365221748201635578189662659630830476957292637367551615732831797081039086060364922552052), SC_(0.5832658480436440196847548856398053755797384304763678601726552537147192054445633229873301874570470342) }, + { SC_(3.0018866062164306640625), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(43.12128539161953056111098501164123701175976947955350627788141294966977124322208251270037852162431805), SC_(143.8504164825333342581432253984862333352074613418615639205492583672660921545049220700349090410034173), SC_(0.770130964388065194534532914260537859457356890052276072378276480654749169282954295011449245821978492), SC_(0.08678498289426542935860931911888119278884224788146471128195945797171134900499843746248457102763914771) }, + { SC_(3.0078976154327392578125), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(9.727572784815910580934978505764503444393932952939500595465223602633436576272021891060535886173958697), SC_(1.931377340502386407892792197201147007254728531567762583391430779232941487220610520173377197868238363), SC_(0.5933364708483050288356539839866376082848737501081854346829614467302515310493457951512439021745020478), SC_(4.027886418368107244315634680694939280724341021446770685442741103232922706776079936207967791918822846) }, + { SC_(3.009449481964111328125), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(15.39532628651131227727452427425226042907252508118556663771534057470049043438257477665184870157652211), SC_(47.69771286054781816989805773890276442182757343408642857062477804306704863346367661812506854710026647), SC_(1.150816761833153386112498971933973465626994008717736324864543650733841838041642038398942765353341717), SC_(0.1725573971542103598831034026167758082443884495331686786160558819792543981074012916405297187918204404) }, + { SC_(3.0554368495941162109375), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(2.507560281234090915474223065704972270210142322980503975931083811270048758418402142638599209087984984), SC_(33.26847163484310614022786890923724704104304548473717703009955290769607887284075925940343648929910238), SC_(3.355752875098805463933432940823354608613204569034323128162181651614806041376795473458180548911690945), SC_(0.05803262924450953347753868414665746106145801016463026292076400466230689715299343239787932359492546609) }, + { SC_(3.058078289031982421875), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(6.11624648405469027123118984971024349595660251860309560001900742712493365021618901190234275668792063), SC_(69.99202017693598130464270156801102536837989667237139169477606796763944252117582607834735285075314836), SC_(2.241903514539417862823299123585391838747017871479427230267815565609299682558336588503304275140805654), SC_(0.03033925706442268647245346686169010451243912902681488277136282806298818244750798824726974933202380348) }, + { SC_(3.0845432281494140625), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(0.4833726109529862368697631998082476396865919472114488024338503057747153308653479649495666103192920257), SC_(0.944080382650503146894849799306557810913878834708901092489152240707387553879934106966483698838372148), SC_(23.65318799914549221937113895869190303891011443290017751616232778623141523428353218790878686609994971), SC_(15.46983430760853064487834397871803457670082982068347954420018080606454079260011950541283363795436296) }, + { SC_(3.187222957611083984375), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(1.356020073359699748463879702844081899985595313131936826674460319639231875380491041253933504852395193), SC_(0.289582463790103190625165420607769363482057202939789803279804527907373032283932762316699449761937343), SC_(11.90473847257463618762930319032834444308874332217674508749702900137939017929086367894212892938430636), SC_(30.9364699358896633525608533050952593667186464444339215359044190442961303442596560515915040456473774) }, + { SC_(3.3068859577178955078125), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(11.20254139189865259459016100609649720388838827574478803064750044066982159959557325090504144156629517), SC_(59.09339718546666284907231128357702080822062559254567629587275284009911207409487272115581798008147119), SC_(1.729388941400656315627099871910155143990472864844059409137997208907795199657405016215709990750539093), SC_(0.09076555534644585075370381177589519718647521984036762469241606098568455480116889257720052609275830288) }, + { SC_(3.33138561248779296875), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(0.2341983317479666106725364393349507481272337425989925871859238167523093089076296440722382337041355467), SC_(2.968809660378935081316114735394381074032694124021392772548155013939928268215315013043773364066828815), SC_(22.36009730397223077918748210973351700917030777845071296386634044595192038178474537053735976900611046), SC_(4.049276465791344105058178490375047239706352384292295622354132575489353693314081017996081061605907837) }, + { SC_(3.3842318058013916015625), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(13.30330977513927171593217787760742969537345240079563129934889611581249614371309143350493900697053613), SC_(64.3980492474164283994914921721505428138505496201558367875916228622007162634757215889164850562435892), SC_(1.623143285386896535166171896127955190309689421607867573185787345733747799378486577561877431237876903), SC_(0.09444125580814425731416801731089246103706108508588727690639483112858612212947632860817975493561592918) }, + { SC_(3.42371273040771484375), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(1.775792312241347043890492271535084810485025953722197400217776240038784989902401437130217797258424534), SC_(0.1887482662422198259853966702110969182064070651135908041384889530248392417441297736817772954255901555), SC_(10.28119871317598416348072660149403433821137539146641334349986463604642603558174580879232133198683378), SC_(38.80789692162145664031993356719790959226149607354790230176322045332468620418052812117420095837552814) }, + { SC_(3.4394664764404296875), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(54.97137102886041115506621054099677834235256878531503367997450364008510949874872719077815417747605576), SC_(14.21135647956247617780522387080934379486027869711292455340497222796837141925397790112169807258007452), SC_(0.1382203985182986282608409790162784475978619521050592853359937917259188997239302338715079633576289395), SC_(1.528803899539608575915924702488039497485159171181208051386897338004534027648250041765715875909607148) }, + { SC_(3.4436647891998291015625), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(17.0350371843189475833245842758803442743812833591160973278118724271866831887566051941092792167839248), SC_(48.92064675911398497772608551581697812933278127600881536455643850692951991333172947080466624605723158), SC_(1.292568018222769442101267031740257909347622160566655499054104710268690601907117674145555637333995456), SC_(0.2033132546578282410309974710419268389085454916459866182322228030377977449016020141178414210624372272) }, + { SC_(3.470665454864501953125), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(46.24751271410537436386288838049135490051726894284972820157053054606413316511050370114341206362436425), SC_(18.82016658755047229583144030589815150489606548805988281581860599185660757863744942371297579231328107), SC_(0.2457338217992512157126686992628688126598713090720928888671464969252390062478268872884264948754936971), SC_(1.182929720710810155314299926442977371366219837241884031805734614690130158719653488255610072339048168) }, + { SC_(3.4962403774261474609375), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(1.921257934390581025258980988319815648754047440761404110670514194511603475551375515016510485734680478), SC_(0.1918251614537868754854858414651283953156539515261841477615434592581683449987619738184330555829643097), SC_(9.528656514543854005017426223319287183055337209554478365194185512347122803118963319352495563835412419), SC_(37.44287048782228271720256595122310725093101903547956837516173584458692069690352083385875279278924882) }, + { SC_(3.5458743572235107421875), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(0.2819848154788845843881149181050840073789997853435906091030785693017399755806218755026646502826212014), SC_(1.647529187129869629270687143667627043013376346152319383073011748783009667392114954697536003065119853), SC_(33.6745031918699490887747743279554112043295699495290993084563061054932370542493175617525587237342688), SC_(11.67957889829377116034037653506821058863561906015503564336587486969252663409053560471505676677529419) }, + { SC_(3.61502933502197265625), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(9.419013731408885203184972757873982589610898357264750241889510103418932035647172626957065456556059329), SC_(3.421170875179892928709904560936395815627829607190522805874942019499152507428078185428651602451254665), SC_(1.121762387568952939937515405709689303440779465579510124102012791680908583512022946621194530100292151), SC_(3.768218619889613240403971148894293231620116028762311227041891848271740880991496944749250102239983925) }, + { SC_(3.71654224395751953125), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(1.550693287866117859540735338430534579644808615552639612132840720001159043282014734158020837544033292), SC_(0.3509681281664295351048808180164346792349555514487466578623095279136663041480429359029968262945354923), SC_(13.61817949025468028250238842890051717007228772036093341035292541143599244232311121767849957842796639), SC_(32.95307958089382809763551849990447992195212590464869849202730311435622100239999967641374740072049275) }, + { SC_(3.7189118862152099609375), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(1.372405948845613683589387850847296191671789848484687323393953407826505743427932716856485560765207867), SC_(2.360028114308886974576720922841952075629843256560000625422536307743272973336999210932864083623735935), SC_(9.713927424244366950219282413582968028459447172890239590925983586035031211159733626633420999769753266), SC_(6.379975022473435941380545054282097361601552932609986051822554355453767789865379319100031898568608305) }, + { SC_(3.7592051029205322265625), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(23.27095147028188951113737789071480089256816092593445372274778021269105840196986315731017562549256409), SC_(13.05823264144558664826459688739108623660513882387618506810168061952888740986802835964194834860658155), SC_(0.5913166539727959436119725561737792255987830432535022282335891214036950774381846430859084081750782128), SC_(1.485630497220265253690656955611726255916811555408670378566672415436437699624322294506161193720416606) }, + { SC_(3.794983386993408203125), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(8.28482146918193673164121147941323694909634345749594920728479009565450706552174140797201279075158293), SC_(25.94815165339764153917407741665948547781433123191634933945243840912283426489566202048816919747417279), SC_(2.267952261245468867617635739911470515828048516567574073237840563787754229774057090492355834802748524), SC_(0.3710307502379167562711708187272790426441726166823888000199731594566579060512281783131708861538616412) }, + { SC_(3.8507778644561767578125), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(91.25515666405600194917176818954397631134909332825403807885260047597960480767668669991768070346233061), SC_(131.1140540515188102157945709375258296254676082223959522836866010766650452519411318991364918078316085), SC_(0.4995388844428405668067506008072913437155675104382968091651976979492628742302683071722892125763562345), SC_(0.2419153868209094487520824679101208435556829942277621139450797500980623538273840842020405724384560328) }, + { SC_(3.86014842987060546875), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(2.207599179479753013924854118572093463818381662212789338973521699912659827345703938928368220394660628), SC_(13.32775209098056253581399292518579105572736349309500454617663266224841591486285412164194609765804866), SC_(5.486916368051866531360213131328265820273925297750955317832557047315092041252711239444599373159744555), SC_(0.6006453082954876928834260140181716074865809480167155732167594487231881355862273298839510603116135407) }, + { SC_(3.87988376617431640625), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(9.044878482914593881787994341715088316317395572477460008437100284596824279870311125461901921826879424), SC_(25.45981250614900009419540921694575908444187486491325717335585126127291012364120611667562613913525961), SC_(2.187051683318218201567441916928173770045291852790942463683906589322228097063264014609191991303193594), SC_(0.4231175398391724798402612864816239337462359617258089474766354732483391852690359466517577155251079753) }, + { SC_(3.884910106658935546875), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(0.4414868789434461966773122364048660050219734854185813108660403438221473008358579556438162695055457786), SC_(4.53450538806547378487101716085113920679653900103380796485022587210759530891283369527881962871697246), SC_(16.95962927473961405007699983298854995942110088466428530976190600271008868865801488888786300380788235), SC_(3.027906851178664691847930411226231528713361313223827007351966779559484021737942070310641052614246081) }, + { SC_(3.9762971401214599609375), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(27.98779086616150129448721341029854306524824354552247155278102050065368079803993464750758258652668381), SC_(11.78323522449240618280346609538662409923629713996210910620737425063359073680710999684347969932304999), SC_(0.4524632502401674344934653194803029610370979622274248782848782084165856325738339106728445882914369634), SC_(1.865903625245375497962284306527664926376633177454906150107415546323073962339848507010213630043059373) }, + { SC_(3.9876167774200439453125), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(68.52513029556652732593725381019071025290982522491204883982734185193405110645551569674490096065687766), SC_(176.6975417993779916619115130661361212790368639205345171124564489045754360768756475013841759817139924), SC_(0.8116228653580829270932696952202697997695762407544453605375909972042637334709905457676250301277844852), SC_(0.1141256296587110902908878673174876082397664656031777963840697170188095558072105035312212848351253691) }, + { SC_(4.06741619110107421875), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(0.11058170791870314683720171739646651930335210092997438513177500758673680273792382492710866983734791), SC_(4.430862615511827327608336963740428209309698855717493239189473697501352378552289632256791026441186762), SC_(32.73812277904138847853124293616128240603268758044853924099196876900174755797700000114382673344413414), SC_(3.45270364378382770542710440410931830835818834081454604427475890239798627286749909434358772201738243) }, + { SC_(4.07697296142578125), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.0572767918169409844884476826327158521145058973281251600098518420968398458795231979356549384154341283), SC_(3.135200160884670678898283784330342489068308703702522545787461616947402194349354168880612135985801146), SC_(57.28912236576164160705283815889990202508681605307380601566867357112375697249913505602483972932027733), SC_(6.862238628639709759685761941038552117841604598680905761505385266144783875275783203232398419946279875) }, + { SC_(4.116207122802734375), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(3.45199204373876928592685332171823391595167941275640065433297014779299276336249056698436294135879122), SC_(11.63819665658896046297828661984973970054640784825934164927467616458546521075482779349619562827299295), SC_(4.670907938081481576672730118774980288220366466202968301771235790438007527843679739946268245130490495), SC_(1.063057696642834287907005157919704881299537532938898048819539071022927541317282663530847814179315484) }, + { SC_(4.18473529815673828125), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(0.5130657208901011972248562535723258251878958911765055234843038137344377176617078088830347069873525666), SC_(2.795386234258756627320801657600123785812683545901062802810212308592172787636614555502130733146159595), SC_(22.80897761124047373328162084736766625595389662708604314242183178588675377712205359202180869452319051), SC_(7.550251995535043985976020502998414789801050165962480840592389889483538212384627869198170202815479934) }, + { SC_(4.221957683563232421875), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(21.53226451487621872020833162652878884240575263021983258737786472367949269748207170174470292011448168), SC_(60.35993364081558519531686402188154680061441178917461253870034422144737922962405238220348665318944693), SC_(1.521544162984732115078035377355689214806475878530771103328573750236168651678357368773714322096662541), SC_(0.2141135363809613559296153970982644892893379926767766510345788221376406288996500030436816134047657624) }, + { SC_(4.388438701629638671875), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(0.5665626448958895848194140176333102516128612849658766111629790078406436924108525209311628771906472454), SC_(4.78637234389647820546638629482872896219447723995900771229854411193072131685676707594501517803836056), SC_(18.18919919267989458485197833155880580701022264886589863007891018632139367243189125311092835320353725), SC_(3.83536090705402927757517520340794163108531483164561710373621366389227572475725043371933843308216297) }, + { SC_(4.4377689361572265625), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(33.34767344213198744028704992125616118119944980266486879121872481779687063564078187116743893202516529), SC_(47.11614395346362513764746781784907131565162414063957671672648505109064219019257521566881838488063135), SC_(0.9732588448331172437115224369816230123666184017998670297919090471018512685472204161536936901854127666), SC_(0.5081670538555120175376198950282186252895667383804745217908672922768706511853712124222050658377212978) }, + { SC_(4.53587436676025390625), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(3.170296071544009935717888371957955138066638581713202761957548010505402746068075253218509082232922059), SC_(0.4787016445281691012310808242224585131764746602258098078493233907704942820356303353316281790412159077), SC_(7.746151665153463748709958173810476077543558617955152524725452100507023915390665159317633490972136553), SC_(25.78079473919568063782015431557301231658257570614611064764612426264057062821301890499473841496281248) }, + { SC_(4.54067230224609375), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(2.60492196657290569900233276429314817145963761894442328036886573551718410681777795333807266532239689), SC_(0.7241425953973008406366501193555858363337261577308327231231086230917089162750738648949718859471350275), SC_(9.681718064089381245591881434425978842620856879553817582611451278452681518148986262146200958353256869), SC_(22.23157029289075200462438461281464430962203903333065195261614183610990443733845225511908663924528189) }, + { SC_(4.546047687530517578125), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(37.60914394921168612776183525252742519490281915273397288747497180693191705861184964299015177545106904), SC_(52.84474009653989400869296589975201577554635038799231879992385291497861393217917951338522780638685563), SC_(0.9353572393025890685288930375626827967774109691276250948344795576072498191727727332578886203279303935), SC_(0.4862471711854050610169617323852671448120136181061949923720430905146073135784196665611298916270104597) }, + { SC_(4.563690185546875), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(27.59761866261354764229786144328231107077957064250309192610204752370950958589761374337049332761845305), SC_(12.23399037923180144412326821906533967277298100836880476045262055817300896946832268296640542635097227), SC_(0.5909093854984993382779130763433060235952357526238536472863148576307037850602929066240366477871400309), SC_(2.240798797184627933962261995972836082692486279543097707564311607621820377479841327163449787998819319) }, + { SC_(4.61488246917724609375), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(32.80875585737473339036392370466625977569570816998626801123937309470972480239728692638109180490986788), SC_(9.766584570531657616944488285790857304032670723738633929468875206480406617004290928821550720682333558), SC_(0.3670246431972060783343039884339422306430996193539977564398598377596397845245050421485298200592618222), SC_(2.828254011004884566488621816168162018172044015861884899590084315271904973340811460495837737248374821) }, + { SC_(4.61888885498046875), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(9.744109248917483186750829901971991131237311579811333869454692662752036777254385151444367038071262055), SC_(41.15848751531096914855272275462565791084754256962971249898741189302370612999460856000113321796262596), SC_(2.932379431725073225903177952856152674923233561861514790609823585102746854087238596784643586274031625), SC_(0.2248907518849285416193076357680881258448873715888198182247990392828062141737065950463269067506252082) }, + { SC_(4.653147220611572265625), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(1.154125340275498968089001615116200906708892145733200629575815396511521403549186042481209972429636168), SC_(1.992967449080759211516569705413698116636519464988692578482404016629457150290061602020713534063878342), SC_(18.50894199839147538012690458232075540027430269119545669478888915788610932773112826238895523557142242), SC_(12.92876556720551210187993247755675900674629693085612042297433994431030358917912904201750960834391883) }, + { SC_(4.73700237274169921875), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(70.14357718758049051192501765344483455430714461117038658496621915272413494954334503286033325038770703), SC_(23.3959073540470641903977585942064940805153252999181995889319636384791300938695151655319151656004587), SC_(0.1953484631853641004343154069813907342521376611170922620752365756551429150020036523567817434698567206), SC_(1.757408228108331267611257853425549699820137165073273579826397261467089757622916315762847847541753764) }, + { SC_(4.83688640594482421875), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(2.295932409640882289799152098065839162065474271482517136855914461479020684875065541582617434586680994), SC_(1.02756456437565408262557372134864065547629420486845778535032191504253290730215176530318648473807666), SC_(12.32408972422848726282830014680997154627855290737633477827040240563449326256407752206097715480438861), SC_(20.77054313809302498600696904679672759965812440419428867070968905275071051752881638109328190105748568) }, + { SC_(4.85198974609375), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(227.8655071408183526867888236083017003926146139606226493300479692172091738784179874972346295100860969), SC_(79.66213156407033103977342661537533183490226442394108171987313800132566003755349906794150002673454034), SC_(0.09166434197154445712315551377609788036731878785778703993751211979968400907994839844371319511997977591), SC_(1.021401565575375043135359773416469005777594092605070944783531697695588946566978480269355287850634035) }, + { SC_(4.8523540496826171875), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(2.209489163715041711990500148328484328739834555135030675667321237957160120944781824784807073588581553), SC_(0.2515076560373709682991119672445639271494254705532960955023142236618652445207141720140446617194967282), SC_(16.71107902516606099630295691561401484308374084105093310840354272728136330564230908473151663341147491), SC_(52.43583877204720905779907785271603277843332506631010522916265337477121091711599502316034133839650505) }, + { SC_(4.914722442626953125), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(201.1428316744417266499437112948203060172112384943150994674684839159725332522985703349056572008168366), SC_(97.33995875639838693074907321834144290417790695592857502968740081843969878953403141693230800708582768), SC_(0.1551434529134858595872813737403112009423620293988039800337409424085729407318443861249927114312728048), SC_(0.8038770401801449650505227704337354748485839114566545975691205830485975523276992698345985768021887533) }, + { SC_(4.95192813873291015625), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.1929639413034934567341833501296052259965848694113459417811550783422651103343539445514062162310566491), SC_(2.653655500393700690640143455513344193991783486124502518300746892451030706712087354008253112648102856), SC_(54.20541298395837741110738931809574517411127235547271076521310210285251051639135335867955077596873664), SC_(13.83876805848048149771840476086483041600951777988644448551796370314482034848056602861751008631045033) }, + { SC_(10.6194858551025390625), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(46.62476812276821799352553528547800106089795346878515483554008926587672417084525578070535148827538667), SC_(58.61220906665902977380700677218612070377327760152467402182582705573891501588339764706926831008405122), SC_(2.904693982311437012659024201958672138593562104745200715739083932819993068170985057883983958185178892), SC_(1.859912346979196681708421745282080517910777775322703307514587827913475970374446615642010808819505575) }, + { SC_(11.69724559783935546875), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(1.539596983366854335803792002379721850189772810152123651507310378231250838717167405138365749286813406), SC_(2.46049124960131771626195423021568219710831056185803845631680473452581886336413428753359361974487239), SC_(87.05409813765025522185613886607753588654448313547857380747899758520768998642143169793059012796151521), SC_(70.32496404256882944090492703442699279302119652905911626208164834352507038793850940435580869950954628) }, + { SC_(12.1070804595947265625), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(112.1507394266185938839487958197978020217049001510876391027113527208705013114350580145970481686519262), SC_(137.7076263367302169087793072805726686027546370194822875169911358374876874009002250110437798239401788), SC_(1.823860443617584870539945835426236435900774869457832598101843014037878761050408913393541369398985239), SC_(1.085315079450033636942955764407667056030970835100975022553227980372788406596874114858925655491574261) }, + { SC_(12.384754180908203125), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(3.950181654257633412908052130546384331198506116820105393997884097762184882109143001719628522326915375), SC_(0.7685899663158799230131324935686509249455137377559214092151180419031913366923231178321481481971847052), SC_(57.18892323713363509017713749177520022353536626135274925911388012117312951203417423151623053268495903), SC_(115.4413915322317727635606952552851756933365345346951699607171032376282986751456724144738434468339837) }, + { SC_(12.41884708404541015625), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(12.24220288334904901654971143605045642168581087987131170153138813242779078605378541364853742003182907), SC_(32.74954707674408020693840984822056153877869090309120902596089607721437093618978963800835227885656898), SC_(12.55489029800108219363078360111578731270547995736490515831346371038118290160968656594257202928529976), SC_(3.499667716234346195376614505540425951985513331942632982784677598381358409035891389275307126682421649) }, + { SC_(12.62097835540771484375), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(3.044758098973278106720766769871880704627718855529452640584589058246404526338603955329203204231323122), SC_(1.565209041213996999023548049249157995769015149087644976976988364970147901150100087564278655385128949), SC_(67.25037259879672018950443860914582965566838840768149137238020217754486607147078349138100142387650858), SC_(91.29217120221677912090025740181855919703124773435904872636249463589405241767682675110823944274651527) }, + { SC_(12.857818603515625), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(0.9635816607025133537873958247656970792166663577439649788839404569531763589002576305805414374214878535), SC_(3.739844067227890329882969385772155181405518552425861125757979188653759391764897218287246089469697924), SC_(114.0518913220037220529753616240222080296826349189588415760977616326991332713443151134212512283622713), SC_(63.35877725898257196705144961650162750026766286560900344491452492817306267481737956176125363473574094) }, + { SC_(13.0601596832275390625), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(1.790690952864929097178963570772900539401631875169635884556221942219978473916976558804309836326162787), SC_(12.42449887458272559948214279964310914528176355461792540098433767281542467562614614247076424463802587), SC_(50.09826857378336226342684927917355145965327228464172664588532954634660233412903913026917613393266561), SC_(14.03551620861964114857293605813760491766523227360511146310141293612166813129816520424543245091611688) }, + { SC_(13.3387928009033203125), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(3.618449205523146665370698992477852143182980702531197514153703392284264468274125984126868837444389333), SC_(9.232865512360567758395055854075604841870435132322951258209882721206108925650176201287255942275605504), SC_(39.86615686842815602644094398486204809458550965150169803720222877052838269312461349448444332024085714), SC_(20.91465474822146633269982920331289981255216738813697251356837721745072620345733524942250333760498403) }, + { SC_(13.86920070648193359375), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(4.496875261872881219301204001086784098962709025733989412553662238685013418716988807039819141432639599), SC_(0.9732106765117811334595775320036216049072184828371411955918395764210663469883408560751653962615342478), SC_(60.83686758487330255194213700222871907908456645558327218895378427619377767324534628924260113362149332), SC_(118.4193419829058868585580996426885314891349859909965298373255864900318762396402781016900268766746516) }, + { SC_(14.248653411865234375), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(181.532492343145035381796825576651487262205945297348526457420921148201092036125375703041018063249852), SC_(95.52234431626245336390649016797321550851051048748556242943619164645858319963369404341707171914061678), SC_(0.616859866802133699868560516626903883836786889684832505536493662641082520263905160730867141054641388), SC_(3.445323951828881218591691245864685978052688601767291818256906403642671027845740921918322419616540742) }, + { SC_(15.2488727569580078125), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(363.7209329034753286231809906498845855980897019117576237104385108340147217336357727176695190542675786), SC_(582.3670141469865955341406873301977645223856111256323765984404202512911264698897972382288112070933063), SC_(1.531162184495920655466773278118173226301692848699343144095881538929867428781910689919703630341368631), SC_(0.2841660277089306833890091349766062384036640827045007761302343739166365138856989566805635214134540416) }, + { SC_(15.3268413543701171875), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(3.382486114581517850754781165157900906863290662400888250387427222104778013436566784522463000775462208), SC_(11.81609183730423764965037317544232157899631189414114122785158941557885906293026657427235660257681674), SC_(49.92408785054692533688684153185878059270990985714289308905660862450798090412665160349927799525418901), SC_(21.43212324047167323500141819098537576847353888333281355752649326947394413418067944956112692868515166) }, + { SC_(15.6886882781982421875), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(2.793819919411284806258879727682365184185197903098841621638705521795695005757596903789850134326370784), SC_(7.003904587954034304952184019984000749665108643947876205366573875463999310889314401678483670622129), SC_(69.50144874378058941280648594714452106399067672983331427211762308903334511464002140033913349351814147), SC_(41.50192270313647589498433290908285968256701548161860955794531593333656584615040328738725290160786343) }, + { SC_(15.994617462158203125), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(0.9326755425147712141881307910833768399264908379056873096801960070859414654255130135208634132015396595), SC_(5.456125073003492417272392633184626200137673107751335584601563776419967546622448793532797692454268916), SC_(141.4663792609320609242890884576520166664086307138299238757584936283568834847055747628289187421869464), SC_(67.42761403133463049527351988251592378340121490714506024600241375607023159545134646928942914768687862) }, + { SC_(16.66793060302734375), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(120.2206309937141316157111179930925529157413442872624088361889171286242954157350190704795559369207085), SC_(237.6828903041904529948120761798071966430151195298549944390507248215375296885284851633425444922729122), SC_(3.894322219639685648661597290145303035579560537002362827079247098242681570047558257087365069075701472), SC_(0.5415150077528866870892596944932433799377563786793215423005217809877088247783160604932795810307001765) }, + { SC_(16.686737060546875), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(55.99398617130766329625959594897436964195265744047328563985047776458648526903967514793050814977537145), SC_(117.0900724191169227447543304301298773781295878549208215062847821850802751187876318916238422430311778), SC_(6.644954302866249211352597982747686925817364769700102961160570368774710569223706837522246034092071433), SC_(1.34646840636943395617250606843828251015456434128747167463778745211199656397669089177772544656638728) }, + { SC_(16.88471221923828125), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(48.35018081005866300406579611080953004491862732082461683063000734467518280321173692779066503719758859), SC_(132.7209118915414668254532361066518917113280404426374040894686695412595734284102360729223942251202783), SC_(8.058771653949806162378703119402744590683159972588172850639684190940871099915320784741015545323119272), SC_(0.7918175841692319383800052046731514460957025252390602816609239799376404172607654157365553186156609953) }, + { SC_(16.935543060302734375), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(39.90809211224714638235705882076796076327418002132294282235410083601872740672840441444725430716944217), SC_(19.80577232219898425661481049778122609724103853132072392272660372453038741203554507639194060975654742), SC_(6.007835683455320409590153548743425139662563476417002892264152814948876475584906839564003661903693189), SC_(14.89663193816195304949590386752824970670173245218807870663337609078449578811231953861961440710172852) }, + { SC_(17.2327480316162109375), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(51.10307601896460749895113181419668666483330318393972944837899353784174456220331680695189966147380589), SC_(103.8527012777873687833145279871668411853437028749799997350844588309540295358749969075146516695202762), SC_(7.42657228228316174863231915336946345977890892330952809861346024803299808746741546451678096849036391), SC_(1.764127152287852079731870023294779180510181098795404950653651485738649272949185263638374304950461687) }, + { SC_(17.563365936279296875), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(22.53341279568851121942054117301274982163651667970554656573800915777491187189254475291043692112653733), SC_(38.60404266911530930947560626708938108501845581414759969290660862007293503720771077773384155334654444), SC_(14.19169416363482337342900956325645718979114239663329275595184921608207155909521754532458417403233377), SC_(7.082379531433653123909367004149745916494152222956678627843741272940489035351584930022755406359582903) }, + { SC_(17.8042964935302734375), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(0.5944221560402486182021852733237556417057752313777285502400835262501178056365410981287455860817600329), SC_(7.10335279955879289634874696908608451346497431141744150486749878988636235194776695095086228405639685), SC_(173.3429443010197630600108788077456741581245735053672718674223165423207210285146240091185726757877463), SC_(66.02974055269282931482713147555357523152519781806935297071612775795670309024192313454225942141134824) }, + { SC_(17.812992095947265625), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(190.4029619361730347710979198027601633872500408661004701340419034362381396166498573093539035944205641), SC_(148.1391980116046285542711012913145120213640150230786693862887526007942518950974978621332762429936178), SC_(1.489283599368783599167661478672265645006918955504048737288285241630691475460049988002394715452202654), SC_(2.892280838448316235031053013687670979097771314158346803239516606945033758807105140616196794879978201) }, + { SC_(17.92473602294921875), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(155.5741398029092339356529322463970442108577536602421824804214925915834236551926746273082038516344733), SC_(184.198113808093989861397704730670281147687763056282746745100012755530056019062004503904225621025139), SC_(2.650359522157118685397688514295120773388075660289477866799633533480321714758375128646753616433853905), SC_(1.699262427692390265657577777220511900594113752238781888125710444865989342262715868782751802483223625) }, + { SC_(18.1678867340087890625), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(121.4711620456880651036038430898764312043695416652576412028960840998408532703937558251699343345766169), SC_(233.8453425709142083041560491267914963331461661770552636187606446813369517169115143836670226856046122), SC_(4.378237855117111293099905836875646200447900225780281402803922429211950392196865585167661566371068578), SC_(0.6854922294313873400976432496790025629291654194235690554003170818950073411965845482659377700845646064) }, + { SC_(19.2755451202392578125), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(1.830365717538657004470110864943858485107729842486418279066061432078556391100704752817142500160793124), SC_(5.118534376787943318058938650240085012143347713742226240538753404449176848633212810309861020843989197), SC_(149.6848091076373397148129185302799410419577815950658064846920671964920424367982862529246957701301509), SC_(96.24000162738770699642856332902935146434426527354911841416817167578631315448681359696718716174093772) }, + { SC_(19.772785186767578125), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(10.83887713529849095609393032219051048042351066993921798935962502254944135614487726719697385626309956), SC_(7.305897992607398824184480399234026759727783113791983460835071301000304327644101121155562808321403838), SC_(38.24066073317813427844704504340219920099704238059917001309218859436006553700329898281430189213100022), SC_(50.14305867796921179251149665774490664814925359664472993607423264957049659639228669132079137803297674) }, + { SC_(20.764774322509765625), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(154.6088770714692407730274191006075857301768743269941794577487845985918955576848162714472991673795216), SC_(290.6160525265263167872896868178454200655399537353700594015835180651436293343900183904398136459039498), SC_(4.580363853987163131037776072120281957289574463072060545813406859963434579875226227282591655829098483), SC_(0.6908804945321297639298383960615623399932278788629861590950845457559483337480770458985301754319132096) }, + { SC_(21.106563568115234375), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(20.20924124826140441797839491642328027846719120470020347327267160811458215607399575642684145612891772), SC_(57.06929365235523974728646401762776918461985821258421179978641937144067081811142040179963082661744245), SC_(21.80606783705819298334682539530690731918874859141980004792808859814672526492781112710409544133762905), SC_(5.523420773303192171600899320095332230414733929791237943057481923113802678994394833294200082135555758) }, + { SC_(21.58757781982421875), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(6.068433736904012487161502152113863743239826347576872609039367525134239323810081549603137192304218845), SC_(1.789156969140553399413105714198712854215352296477723475402746651944718289641895032198609343233890157), SC_(103.8361090901102457764444182564340813187858743557652282669866099573124333407011679286267599547357978), SC_(173.4452149425767567275870985030680060749953951735881361274273501557745680062962061314974520568949523) }, + { SC_(21.679363250732421875), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(139.9805289563747010386101836269632713226103185130609824999277602518399343537731904561160635793596097), SC_(81.59550684636310878839406817630558062354339057317887619869919856446375831910258093425628915834693798), SC_(2.308727987891800907565552025979815125699356473855014112220117287493364376975617855317144625814757014), SC_(7.393989849858268547528612096545960795382122563555603193994432363997464349094193402530344290081766926) }, + { SC_(21.735530853271484375), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(78.13151129217892494011415516948134131970084564795670108996187247842139486936729977282178691436398319), SC_(145.6023279643067832952070994071691896860093338716593124965397261592820553083261960939841013012011419), SC_(7.898701747592230445830281076283049799854171976667918634295375976075180672348981326699279243830300709), SC_(2.029670966830710140430411163514750267378330869883019019366919384805860299723741869673605070900929775) }, + { SC_(23.57973480224609375), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(163.707375294215522934525259625992479473220499502888795979882674321069649501686451892005151530669518), SC_(296.5283069387127246394938993183297910943224438285376571054954261423988024029388440028161229592732739), SC_(5.311621817871067610124125572744451357312084477202907290445470929894524478135959516099440942336543904), SC_(0.9351264014931196604172011697909774532294501575903743152608155638291801491839648756011727436923818364) }, + { SC_(24.37297821044921875), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(136.0695019211836817928683953663587674797443396245832222731010307782139593357169010893890601246893064), SC_(108.8893952260030561658776464838216764157490231458942827632484372380406583426852179122465395559538626), SC_(3.949321870823009323594655822383642084162345005803819344098937256930999355792740352967666719842162825), SC_(6.325091462234082849033515012813321084587380371666448857826815526696050179688993826809110565244060665) }, + { SC_(24.896389007568359375), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(276.9861736906710835118429206907767577188332005979057779430777707182797917858060182946823056749715854), SC_(200.0635824259768627813261240105418311568989741368323313383590054977847440401116821956751985057244097), SC_(1.723034579335585201800729495709953964227665593707517806131892772356992229999331158966448361181513863), SC_(4.276834038333928043641826147394470024665077684639179793855919667778007138835042140660722900260225175) }, + { SC_(25.63751220703125), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(52.65843518795990332500019947242707537030208921554823291891486247337103156850132618414092509080970729), SC_(35.94613190528851072728562852850723997910135167847394904067193376315477803848230691849487337047865856), SC_(11.55543798967779587331648690866868741907814796318605050975356242817924362223638312205089344669260301), SC_(18.9534466038674462056002721889179830726857596370818094790521668184542131586471087364055704727384066) }, + { SC_(25.698760986328125), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(296.5604044694502132172080505570309205498525699213090770398051531176107796613489127429912268787858374), SC_(240.9392549198779841902114973513591665899149958514305675535558577832653983024447124385893454531672337), SC_(1.975415607913045374087514711531436772654757980614365358364506890646140917916542151134324808529811121), SC_(3.585403022004378375279951248857294469671031100290341632575663086457525333328257869561111251404594739) }, + { SC_(25.8792724609375), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(31.1733307027073326008585640882037530793104250496326852001201266859299149797888057617254316497697281), SC_(59.9478913501180863833866778950518110580926267415175014299632163274084563961953628981499094463754538), SC_(22.17184214335283322183785783956420199437806841206275996067701217888157651516657734558360862158741321), SC_(9.441426374055163174843241541078425110983583626083679754031974015137332249758077032876695789144169377) }, + { SC_(25.970310211181640625), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(143.3445097827530417831874044392022077248506602518896421986826337664432531429158381657462052622425431), SC_(87.06578126697941693218114420259785232979039880613427275121892512361592677830488638662897542435063445), SC_(3.444074231349646995725849445773731824808201626886741065791789038562598566326214800614227967460323903), SC_(9.51002531197923020128533097931097137304444939462058233360064964344569304422086456415445325393397691) }, + { SC_(26.671977996826171875), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(107.9088331167616684348164526715054097679132177791828764741279613195195280803094997240520891937121154), SC_(124.8062885742347960550899935516819881165175647810258360879692458678196358754174169103112426395211732), SC_(7.259673092052271430155793246896781864375805238278321498220284326843121861211680112806645019671138618), SC_(5.433834254892187987066234085639193259215342692045594709935268465663626020340500231212301910487311923) }, + { SC_(26.7097644805908203125), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(673.0932332156213009606132720443433003206467335524177743600951509035313624815256726739993207789281472), SC_(989.4964180167964938649461629389496857430010582564670515333576831180395232410413579023778990505602774), SC_(2.216256361804377053597371466483471226957351503633778588483728071984259936929552178348091944340224365), SC_(0.4319065118440003657713106032065408479528988324626957965312500662248006462780326605522955460964026163) }, + { SC_(26.8887348175048828125), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(11.59702870293561813260076652995980364117775037651114761886207497605853956237993062393714449297497012), SC_(4.778012017036602308142826635259539312968738598671480705580835187374238054679549559122187032811395428), SC_(72.86362770380371760563481348450809791429568202234673427380911283675312547912342770783323990885831464), SC_(118.1395932718532667770448651191593707422554610439131503262227051745751274787158437807781211113045761) }, + { SC_(26.9134235382080078125), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(1027.288237969557238949385987073952687087780105134797691183274208186174049065887009365481098265992949), SC_(655.3701219258082386333443573927149833121901308696263171110030698105714978795131376858798300416848498), SC_(0.3480482111517524509961413642799799453708768072005177014013044217425284023631851326976818505302562294), SC_(2.437382295644241494683144331490885273130071395594221473278021044675882347747674381827400407098127609) }, + { SC_(27.2660465240478515625), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(159.8306602750777487080762422578196965178869915011512890506247391882669972929803311572910929846050657), SC_(115.6718729833107324647686586357078655427548218855913298718815531222956485772552962584538102369136284), SC_(3.859543854374947126575904206867758071962496903622875041404648351209056993673607493296818338665637743), SC_(7.71804082870491457716766432360624810270419991710695419635902559872085723463510548118945554347648852) }, + { SC_(27.29566192626953125), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(15.72711589969584415430328270398033523517122921207108172773228260500015097937420618867963000235845305), SC_(9.337421747368266683559384075744955486276437150355533010995615757895484870324290109595367605297462402), SC_(50.62462707271006446098824627209829827977148785228127047306161470988855773880190469150032745986522119), SC_(72.14555493988593787961583293034965352102377818758491042328316995786455797767929531205186436328067065) }, + { SC_(27.47731781005859375), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(17.40071082939551330320692191512088450153221074877852022941942981583447933323905686041914966215967005), SC_(8.218168595858337141850005695377393678280863782088178741346421233478815233425840326908299446724197329), SC_(46.88882800294396594202601155760518808840667170093935281779612042782459239166206870488527038673240168), SC_(77.83056433825470119575478282977442450579838787351372549332674653575388198848182782372322849217337204) }, + { SC_(28.15190887451171875), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(17.95495019736495995710265643244437029983371063343788814121601667434734162245560039994837425918286809), SC_(8.321647115919770528167781420352564098380786694545458703998992068781276856506548801109359702189709835), SC_(47.72467774500609281880954230827698107859599900285757739658235688375090145906322304268951072987369189), SC_(80.18580417970501035379729394318490500313182872999018757249285529829667728661642299604421815200174092) }, + { SC_(28.9092845916748046875), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(3.373533329379834240366232662000235161521128174039532916006616539366343809246093181666188951743438001), SC_(15.34723983523333790916734521130570535004059370365007018738751937780038971190878997948909465814273494), SC_(145.5201281566754341584660143220548182475341764455133228115983880822297617790098577316903366522435652), SC_(65.77820006020079908763089576580201176883097960285516341611360819416366791578720418541060471203235245) }, + { SC_(29.5875072479248046875), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(231.6054129005473742162741396169450909850166825967632724687718327916016870847551502627054515259427347), SC_(338.0757239791595872222210311903426853257806011936382554573841366511490740771233105254706115633253933), SC_(5.329179628451910923599135358133954047736169254485620309713471485638160029462860975215675495052128532), SC_(1.795660635757890718959957044135083248323382182528965033023889549409983067568700747699778127476534612) }, + { SC_(29.71158599853515625), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(347.1920773130290592006677813152636880239422465539581747572050606196448458153058916606559849530239069), SC_(226.6388454491784313906057995285706448538095614426728253063309299620606670065877247894640222422195814), SC_(1.630994138519755787209834920774941542029422632935837565995273125604061549785953164032561493127548037), SC_(5.627339424785318329213794984325549291894470552177493105932581341305307389699271802945514640656759394) }, + { SC_(30.2367763519287109375), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(9.987753565808207573249770899949921904458587643911420066980829899578192354435533043096709921973761612), SC_(17.83164452686693415516527347347866454156463445345517235185562770604447692646966724342499440882420766), SC_(81.38798268311312002527602373635129958682926190587613661079991294621036383888943586211226088287940731), SC_(54.96970855451221446566945849759698087723372466884741835519744033725411152225469952196983397062721177) }, + { SC_(30.600948333740234375), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(89.02734026140783971124097096005440452992442727746528145321767779318800106429321230935609900018040433), SC_(189.2005063746169244878730091297527571157536280500932804181628838051302846293262169606954988656552796), SC_(13.44783868899797270828654431464699149386117727611869794902188159710256526091718627307181689020751905), SC_(2.684786119003034017424993792122996113821159834711398321630872120924620362931783483783748312047968943) }, + { SC_(30.74379730224609375), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(11.6685909171227898451735180118375641333272418165546912189506577262092820787718469380003559097004855), SC_(6.569245490099816870840218033533715824681728421406034392952174110181374336016951636188142328885822159), SC_(91.34372918332200815594870027673633963705046145065934520553178405501958896519221070943128497878368809), SC_(125.1571388063301605797936848002244806491721072863822275657382629429887142917141043395664035515346567) }, + { SC_(30.865993499755859375), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(2.133156485990465871164828309651720020146901962351325788232875062585084566162281875497965189753368598), SC_(8.222972568011908781534794865523876698205390745367095593579388264700870999970509166535032568078893897), SC_(270.0006862025979836112452129651417958364857881763741821822411980659525835909615915170742572999576481), SC_(159.257585896942939307794487170543389642361913746907116950240328321676798132880505795603388537731619) }, + { SC_(31.07503509521484375), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(157.2484359682899151878174069211660021553217373993576115494736939844650961470667259473828859263263646), SC_(115.7471198693180411750772318937970828106958854458998608916066268297955414097169786936447141650682039), SC_(5.223103024433953889637671032615729385075438927310275936650989945408552485430598878137602455097784578), SC_(9.705845612576798986369314977041315554202276536436011630437299639840995182763322258356704924497035948) }, + { SC_(31.3888397216796875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(6.037161156281143575970404882812764533686253650141293124878922958387262059828799770652715516316302736), SC_(3.770807322159472539107031601779500131912552950616207151241787266065259827159765313441743397666768366), SC_(193.7791535108533861456504592736935923548323574429070338023854811421602792088190771259542528136763307), SC_(234.7946997268759321169409582063558050101011870907858499309684249663175406990148023439210095577192045) }, + { SC_(31.9148349761962890625), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(1126.024955249817207094644423180542964209459260137410237255621317759336772039144891176815335900391212), SC_(853.0196421755868507716280810983261297043794588993801246484827080660357414761789733426467791488650649), SC_(0.6603259026109087168993569084886374881045322724871285839718436457628282538760241829655521048500120605), SC_(2.205700360337156269075306112098205951951237118912628475191341605761145435868428965598769202713216692) }, + { SC_(32.175212860107421875), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(694.5818603716252480096076529388921493679792143828103587487995879372831990437752099206842671445067135), SC_(1361.373220401429722367144971816995344335282675780932724394687055444926980099275619543173321648068733), SC_(3.793410371844672660907853516796263861746861117908289752502434754406017642509649292484709044116816809), SC_(0.1268163582302537594221782621948841626053213145135651607594019382130865048963722980809657940996873821) }, + { SC_(32.558597564697265625), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(1213.662708844915057658152877027570547469546865011548198489976555317652872792511404025206626572348726), SC_(818.5185251256095958474112422538160560403299079620830067529857751781287095325566278570419511443267275), SC_(0.4536425007550423468763118002758527253472404967718031328868260383494817239349090860017210775086585585), SC_(2.675857704379721424565988860575176165273901848931630448216264045158990536966900674182587359468776879) }, + { SC_(32.6710968017578125), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(788.388975189689982613891758277124106030914368406103179459415779107285313785116234494784780372308277), SC_(1261.71878583952528782511514984563406269345133509057360701154476202470710243975961203328186701464095), SC_(2.98545658569659957585069857358201501087082353610305334943989918734090244484857957473408633009520505), SC_(0.3379444158272305866899966893873384435407859680984206553854551751713565757801711974611370710415788568) }, + { SC_(33.93475341796875), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(1140.560268947105557532665457934103940422107149118980254446017894882525179564324145962666586252479297), SC_(957.0664436452048675998421556437868198325924823376517040546007193294735200600093678733876463694538085), SC_(0.9178909185686543187839312722758505100178685611406342745523113104218692907565950240991330548816980384), SC_(1.960330119629183835499539226974098601784253576447953933534104909314216745991908522234835184002591299) }, + { SC_(34.650890350341796875), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(231.4592887548705219610483205451790732146083573362146693101059401861357387348943650923527714614317209), SC_(452.6045077088745735101893276730009852394861380514646375569306275093189365947081743729472770656014382), SC_(8.251805963032146013015889055838903679260452993894922233715780724282170555819430161506974556094461026), SC_(0.9794122123685907154145068455029923659830641971062756758992795674270146173383005539124215384366617008) }, + { SC_(34.68819427490234375), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(65.96665584879040303160271966732787234917637810492055203216224975498966138546339028139885006313698296), SC_(53.27524450192347265934535102000135055632795622712411255172274772194283333303509218356466685633925301), SC_(17.58293016124649809553174896215573076284095324157099410971718607048822609361847690656556528064545888), SC_(23.20336156432988896417710468915813901408707104301281838225546590341060345347163726980147041712775011) }, + { SC_(34.691165924072265625), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(127.1757678586787487166393127562427618832374478453672913870063008282729084561065215385055188012035242), SC_(178.3156306410173318236131132849301207935247380790009378086660297440536163667783146477375096928961999), SC_(11.10061282309582551466524412750579100532918668502614019932068016138261681997116446724223331457033284), SC_(5.576504129865716884995170324036583352907056652807808191710444962675833630961014006893889248021353129) }, + { SC_(35.11893463134765625), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(117.1826809909542592160118515462956801748998158883711190980663613720684141043452162721305486011058526), SC_(195.5039441689973438719191416307562532724506840318744268862507037645264017977320614563653209389127336), SC_(12.91698925812911053507412692354964893379218106580441099008309577350480877933006722203950044950271693), SC_(4.469932521882334392991668471935856785874466041214785419433271532716650480471477349301159547641084659) }, + { SC_(35.72724151611328125), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(6.12500385568253644616004953814236737968917843385597017050333963296263069438383346294392642712969155), SC_(15.54195408898059987519274805672839395053795433610573044220416877238339882054574152947906701808360425), SC_(158.5801944184751646312639403410348386782512609545671140452568803733662927456510384210503522851274589), SC_(96.08174498903758431180549905636467566962553775265077487951781107456840267065807559734297973972763893) }, + { SC_(35.959659576416015625), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(7.19416782594551919695112595998477134903317247312224984387052214799279686337928990453282311519860767), SC_(14.19388230141781029130440876100283441710930427125529287679846979522712839922004589285123944883823192), SC_(150.310994705745805654920640551827254747931613736977944127508482834106576122244405321068603627964152), SC_(103.8967924163298129077345826071078471883266219625164984785216841701832458079718158874128603626845135) }, + { SC_(36.274394989013671875), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(131.494070225751125323455381551388657752584543142222816609636718107002375095120211532460643721941487), SC_(188.4028806526922790734194118430870775041154001324303304138139779216285282873089839773105130360595912), SC_(11.808016943646340414480993916461022690049293507309283871429987010481576717053547611758374413135394), SC_(5.661111945476101229010828395633623955552440402292154862047056524231662551929683426767053140867199761) }, + { SC_(36.38420867919921875), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(15.02749057228711918097126680315771984256483118496336269104379749793389805554105642793223833807926388), SC_(6.786280595682785238691595857990412862072943503207447466027966179064787488230869182584699674388200663), SC_(101.7370083544581480909425825521213151919545033682744288521577042381926049365940078270635744821942349), SC_(156.4026090580755323974465885677322836169494029959213538538616413591071675638204190627826257192048765) }, + { SC_(36.68456268310546875), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(1.842606700634786517234231583266204543058315354022263019451300157604416203510962512721980487227776704), SC_(10.92376953508881611608237666900691146908238850718644732926312901344287879718739079830195046934475384), SC_(341.3778128356799127068984813131270564306723670149991648923593893220074044667093646881367966040926671), SC_(175.7695695091001147473195482457223865617281169761910940147768994419224518146875225983595680325143024) }, + { SC_(37.27887725830078125), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(7.732593601645518776783442034107796950970976284774057629536598625549596208060112553032694345956632882), SC_(3.938984287745861281427002635827937406680298841102135282341717575602913756051066482798944038833062034), SC_(221.2500719344984273848310601553822269232567501983330813595449037169186202997493856118192501115938104), SC_(289.9119661020876839523629457680891649237667657150206595472954067388757016693144217872603071760379402) }, + { SC_(38.1889495849609375), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(3.225336709448726186898227383847432972149269346751231462466689167642805077863470899297192170290007336), SC_(10.0731277295278872855620870957292122545627792314789083609729690803368181278535984983070941697563822), SC_(301.2215608049969871468445983725277562798198013018273552555781392108550921630024227079874995631998759), SC_(190.1560925334928184244931726154679413332778615036042764305520309316998515729421770622994841185540748) }, + { SC_(38.556156158447265625), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(81.70213080569314733999505180837673992764320928863617391644671488307746945657363630402643028773165151), SC_(52.2682496103505037571714231702011160327253421729455853727551653401453491409513129355548625397518019), SC_(16.47224367326681624431522678911714301911001711655786004141726905549919649574500888656433587526048898), SC_(29.50396363723810023794296189797133300563131235559204169391713860087041824815555582989870855611376394) }, + { SC_(38.8975830078125), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(4.024372001971316538723742209101198878787389994564226454147044515432391713801157537483623998119169849), SC_(9.14984540902593628033163922513163254346539272086435222041787117402582869289062137696748453718454848), SC_(289.910240275172281117213495756788798699297877880426077591623819058825827475589632244408761713446841), SC_(206.929305158493389822502504105502251008177412815885366826538459657711112531840626147543010314288687) }, + { SC_(39.514324188232421875), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(349.7210987951098235751452053166464107845758397450310210810859385555134957530408797368472879003994192), SC_(484.2876117687940882896356599663321346193045483010149718445093046319508858711303239042686596903536915), SC_(6.181066694271747190763987836181017438665945605253805393665713746950307627959435454071401482424666388), SC_(2.286462607613130871831134692355474300788019664843827690167993710581442601471032139376158839711670035) }, + { SC_(42.013225555419921875), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(7.357962908703120890080691025529686572899882205681624085079722033681591395670201940120109708310953915), SC_(17.94348183656237237900084481855742839585780566867114226261991760272830431545668315163434302363051491), SC_(184.7523273957284436070799921357303176489062295949533763158337443240103029920987380144222813260249762), SC_(114.5295900384050778365417801713698012509631941111294589374388133515255197818913113918407418941674984) }, + { SC_(42.13457489013671875), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(59.32480397701952383737825857623582998913144841012881989401589137945458127868643251987992905629895652), SC_(86.57014050572077134196620423393425141963219040815345830401598024740835485600522178913147838538132727), SC_(31.00602804421600333471199295726383650998561515024034041072746320703352965562584954433807981460606323), SC_(18.94132155859245008638532154610843233920204064822499540975440765924410087428365844188763413335795617) }, + { SC_(42.644683837890625), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(183.7214441287681875013055785886324015546349252581857251528942202141713625135451947435372795901871801), SC_(248.2411971321515751189899426553538643385879402323894558567634829351966071082315935233857962680190482), SC_(11.70041545680687669507911778484847745012545312846727503681266379191732754364351698125830974423924052), SC_(6.055082216222754128288150861685598372576354204985556371215917060946938990528914528902395031259767313) }, + { SC_(42.70188140869140625), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(6.065864894428919846255422403474404277172456166169785307498986866277191332219732892342833520496263316), SC_(7.933693231116349249368313726244466863990892221025625100512737807753868235279117588799131367380289446), SC_(285.8558649175522280345022791064744287830573312791471550987680933786746954889498906033978068108755913), SC_(255.6771685691396985756898248454205276987604491255916972039496622948744316776090454311914288476077072) }, + { SC_(42.72594451904296875), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(9.229802184871117831984171618459280827878421823327322869075598061095094148515591436644941755765544646), SC_(4.987144869997566303119508385050578372383162122268872024378814864265954450939870785053309997601646861), SC_(237.7053919847620909855902386993529363667507879363970449430734060710698608481120187830764452018316709), SC_(306.315586985719144078542355443875463053036900190357922391832320581758617138324536659811608293713591) }, + { SC_(42.98526763916015625), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(258.2760108727117033254561702978919926378393235822365080648722573112860338187950532460184760181397007), SC_(178.649569253299246700463360594851530401350435883108029221117382435600484367500513122799988704172378), SC_(5.559311097624799120240432452812342922915997652603478148006962931740917605178663229807337683909739398), SC_(12.52251251183067907712597836267235810573075743042771419043960075316415250639888392442741843575231064) }, + { SC_(43.01255035400390625), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(17.61506313634091526446762076616292105789144526656385765644413835391695567684443681402804961489898876), SC_(21.15597184383051709808895442380968044545851956204490968935442761984667633435590936524088837762290749), SC_(102.1802639539759693197177655163195576646296523923116295087684175740072770289479126759471681552783789), SC_(90.2643724057879691379425596332008410114545016628721043816585310953060053559189035256452971516822485) }, + { SC_(43.255191802978515625), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(69.46792805384106385680742369204119603197238235177624767877492108914692671696199888262425637803620181), SC_(79.04772786978050482815591277951001017475015796691865289061080091215614423704850824509970343687858023), SC_(27.44555365808183057553122914258137324266791739891869513498591970200073664861418149813435157169983849), SC_(23.20233410508766674388434156694629609403611184454540384989338313866243881834435805577641947564982852) }, + { SC_(44.32396697998046875), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(231.3425117863516977723747420362228684293282073317892983104245512680863506584091014109380697563866045), SC_(160.2106457880249056019437592239918053490868005009131003378181562118530330933260499175587864502935861), SC_(6.786128897239722039712389045812521253466988925521636893197155520100632880487967865081724365663415313), SC_(14.47203122729279333721724937148725935487915485833022318959914050211932858675419825683839784147197955) }, + { SC_(44.572296142578125), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(368.2644863486033665245159786985651544758494408214475296912451947693066913872777527218517283314406467), SC_(488.6067311101184866486724539340896061868394392984076581051888259747835068108988503761922354306997618), SC_(7.096537263914493452496587327225807829598414829775894614238814553473851980611184897654127270392452855), SC_(3.088520213000541054861370800541603680561685543852129509590410508717532204862999777536806079790908753) }, + { SC_(44.8722076416015625), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(4.559201571521498632698940330245228973792070295970284951430342722293846122439079477610345447498179826), SC_(9.416001698884002935205947290389476516482387344139919683109647128375900637241090197210020458052353375), SC_(352.1964349068445435814476597738733121816860922359298848199087749965375835714941985725588072727151347), SC_(264.3261346627681184957966634339812230744765839738658105201837930320554991816519240186688104564850899) }, + { SC_(45.1220245361328125), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(558.3757805143213583498363755624008396613487020342373899812815572854575922741400906623851092286258093), SC_(395.8285691763136380460660282561783731175990206669344602813970641826595162220838360082802584281542073), SC_(2.466365833866221205994471892802264954591311633950854178810462013583715938408101484175597515690143845), SC_(7.17139123598312037692605535889769546735540761103305716141022989493346671721429020054564885745027995) }, + { SC_(46.27776336669921875), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(14.20450996404819782484579998542747005461654795019058937983661627611278345275036180899310316786746217), SC_(28.4970724773255835842553238682906929366199446607211075073706227051492977986004106458639779766429314), SC_(129.0915803193427588897581952425529760989126587576074163495849410229810070721635404350767026287084637), SC_(80.96273831761853055179384828736258049214750606170592837774425576375667906870260799184238282657826896) }, + { SC_(46.35746002197265625), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(219.7008343363325426025704496292179406956440004924320128382229680887278094495648462101855382346724689), SC_(186.6058294281756206174109148541254194771472424130524635195319795165695651932772398021348856733745328), SC_(9.067325301758941963492174641485113351165377828543152949280609830299903639511315388024760597799416802), SC_(12.64764821146605269846619547274853017526179729962303279538020149598681946711271668157507283905105049) }, + { SC_(46.8132781982421875), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(550.4465636702744431794797510578218723472613922348161613226059452083394061924141290568161307632422876), SC_(434.8623533603567532693348239343337091665020735244628257810480934335954150341032897520459347632002092), SC_(3.177983614415857089523749995689016916204352023294760744084911178318234797026793493400288477764907385), SC_(6.53103288601021548191290276008184723691841728708316481967554475230041295837999337703482311692841143) }, + { SC_(47.3841094970703125), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(3.892938469623463717004659255650690074094687953265726732689559542977095141267482617286477956642232973), SC_(11.21795560788362064437635988211454947117193903749508041517644179114472570757097970964529135179887136), SC_(394.1579333643454918785511340307237840845342830085986614458337575687933645861483057379867536073273776), SC_(261.4300978944464495819478860811672798582366706629261203450681471859480082804058918763649757628349537) }, + { SC_(47.442203521728515625), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(15.84179319144746498636172901395807301721892379214155837623653359254621368183319378667656052418041184), SC_(11.70000309654910847366832100783493819147686751473655123257616438921113948778986962515384426683051642), SC_(152.9019519198172267756189213201200317543915350353912845954598977374197168017851534263858320971495674), SC_(180.3310556707890576306302490577379194791135510136437127803202505288261707689643621091420496579289908) }, + { SC_(47.70948028564453125), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(1402.528707149857487002304906891836981077628185885415791621813572889193829963651206945172139662813678), SC_(1549.669458846395403200411277453274505252741213034972692228002740465419133370928026186704752327673258), SC_(2.281753936372337092331939389675328501638786704300350939078713288072108853506843091665212646791999822), SC_(1.443921329170737502535743087184574673500937629132470363050521027118126658646621424943114214626790297) }, + { SC_(47.86309051513671875), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(436.3893927707672567834611843280737617830486360909714313811142087912223024658414205102779191515112893), SC_(572.6160391653656225153598792669508517694918904426348642853495104060059340997907187373137892550144977), SC_(6.971538040004644803458346575964716102543095265454941864095093891329481811853818593286639136473121629), SC_(3.021661778643111922321304243251473837732978540188407466768358642050005130449084190465096565476512156) }, + { SC_(48.065219879150390625), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(595.4117073227723449533125467849070835777070280623349814020211731933966391171909563802034035994756202), SC_(421.523123997286810865318812910651509265678231285229972170763471476031485616005536578041529300992359), SC_(2.598981534421809483785146787130978826167194743286903552724566243870596224928688570815533159106657035), SC_(7.633377361871606593010715366369611783550890714831378619409254693461454094250052025918781799017228578) }, + { SC_(48.098876953125), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(10.63615339407081332143173864200525392565687208597199552807977819247279833278390604968509612617010822), SC_(4.456611136712141593793322381687962936059276934503471452231120374472548260529123822892721651970980862), SC_(275.5042888569730417816033172429887568721797047999237442132821049489903314149189707928672434521267292), SC_(387.3567043329957414098861709254124351140334667601584962087299948829958050576852240531854026892510041) }, + { SC_(48.875091552734375), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(381.4724871353794281720218760997562660697015873067373002381378589339266263416664624861988450367236576), SC_(668.5390527452110553306224945261783191207974524551221505261353300072545402140352483106373278585102836), SC_(9.76434843811437617083146392761831746201463559062912374444099465320027735283675723167971225137031866), SC_(1.509818388333623611532217108240071626734106748319922957551453257196441889542419735565180001182033611) }, + { SC_(48.91898345947265625), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(12.73415595202046151401853362446381214471869379339386163225141879255185631285272050863053512743808709), SC_(15.5746901992121589222780259650570376197828215452240133220614723606445343561268337506700650327721432), SC_(181.0399623828816149227178847605424252191566652867143697081344706372024727912598134215172488667095522), SC_(162.2313782331933126745578926558775753423996116073304943605533211520623860835530855743699596720209364) }, + { SC_(49.3220977783203125), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(1243.060864475900746671436925097810221791579292458245987408188312898315358107120955536980062730815788), SC_(1846.175780379155412847331360237426639742249345560239703671193203867388826763641965042892312131135795), SC_(3.922978885713150669659674306010768247608152738389562045065938204283395292412448762554482611556910926), SC_(0.5385482293323451520225625618371040367701342047523152006118897279738921866884358684650688404227408729) }, + { SC_(49.362548828125), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(212.4737992879818322934383804815274158491625568101733306727861917601197480784761338974212904978555458), SC_(288.0389537887184346041851960544414169480996920107346397151709977792932708368670577794128169147862061), SC_(13.54648754461968048520780348169600057889427251471303611821745710726016275800753614579094448568911921), SC_(6.932803710825690918203417652352281327875243209331748203508945698761835926183500711935436724209433827) }, + { SC_(103.325775146484375), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(21.97389448941670222248567020705331215019872315437900184198079593931150124504277673936365081099751934), SC_(38.07259575860679779242921534004175731391524192423682954872094472952000341725465947504309813010392099), SC_(418.7425994599546872250231399904757140418349952003233844624185597505718948366009931180466674956687027), SC_(312.1648088128356617744535690689729030066224521774119565098701186930868937621105661972686567860749941) }, + { SC_(107.284698486328125), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(407.2290003326116600872978526660331840915477635633688112440309455779953868204624728687744171018554648), SC_(539.8056867822541706589912850714929697642989294647650872616018600676905602395785203020437342703375266), SC_(32.24704497393093908489008145949222538766206358217075852822601621309325588581912739235360831038564379), SC_(17.89669967351317254385805349090999167641866842074907937788248739209427542345291414035283906484822742) }, + { SC_(109.005035400390625), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(3772.282277203543116787453364528610588076242700912668577342105269480732107501576251064882248841135809), SC_(3020.453491855641820307157834268971855832226472454388908572176192169861996414174270627806794985634397), SC_(1.913570807744456913063128809942609802646007155515840848331844805803600712629872199489517701823642169), SC_(6.193411472120475949363002111748308935491577937203911145922702059934431806713839745179973725838346427) }, + { SC_(113.0403289794921875), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(39.96959311346417183888912515302143633169351117965129138557698279987094999502032609731353880553998017), SC_(25.36732330058696863022855522854699158096660369601054925645706447573607312338898213775683659108577602), SC_(350.7752640151416475340835285583164019726848504768743970825670094717936145219338465133802867422979991), SC_(447.4211331526261579963153279365989148732943966946585169111909846099106268785942841569031776902138977) }, + { SC_(119.59328460693359375), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(4105.004305751122872442489361603611578189505341623723774116676274492440187483109023986568530279507823), SC_(3344.951936033866128701981355288427610091421760598874267448752291890423391232141102130105505888143294), SC_(2.211737658995726603805706266985699859333429671561190693096250750309457076478692790799181575521988376), SC_(6.543850236179192450385520827301412877546179774479878684673509806300474782627504015595429147046503349) }, + { SC_(125.01729583740234375), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(43.45675451614305492069668615283714707274142487401516726522336551822477789401144370310390992997382599), SC_(28.63349561243403070871525417339746443234891656272413315596770415599350459593387592297156605875142714), SC_(392.1206077758479852226455267673260826467749057463992018319509313640610420011442446233970973748506518), SC_(490.2163640024335405257862843082438900100182902616217086343450635145462324807518535672740425053434949) }, + { SC_(131.226776123046875), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(695.054270307638730997858590879464352311488875841007536422787945877908147515963924797663744101478954), SC_(631.5852943486871519268229905766045747169599697452838857543377781283989328316625576115968725611725924), SC_(23.46732906134538599564067472218014001767130823721903187626951033349579437015469025921600824252483925), SC_(29.03553505462285520897895491073821521163374724450361605672400302048362870640521094981982262287190337) }, + { SC_(135.981170654296875), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(32.75904481522422495330452474211738978426219788798687552190100690042090117908328300213152677731257134), SC_(45.34198365983442113546026072571402136201372701062556694180113415947432870111166955218590967230218555), SC_(520.86848597522276622673791460646032801857814495958778985648783299001672156309875784208761148725568), SC_(437.6143087941969829127067120166660330299151673073976395397954191911816000760133727951973256601060304) }, + { SC_(143.10760498046875), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(1215.043390374096568231975302569708219200042944807713136220906541178930891550310587016800437658958593), SC_(1543.926313934720519695231892598954371891374324796655829750039887613480602543214130206981784481246568), SC_(21.05206803133158319695184646973969197449902541877063614334681348440879509432330979128217167865092404), SC_(10.05809542689197710480985541335726750548295707854584385868231691349319687038209103428396022867964415) }, + { SC_(148.2446441650390625), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(720.5278794446234040556825495100209961652268688967842005411944805201898821297400974822532775816903876), SC_(585.3783736175863012292973355700496445748436347967737394337219988638620119032962390580336127496961696), SC_(26.96200710964733677153883520803911223560063678001518883043363370936823538296181984651781365156961372), SC_(41.5998317233999297285852592091202708982558684666796365545578328780579768022336488504370436868462943) }, + { SC_(148.2595672607421875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(24.404712822597589824766344355975149857813343324342965432929941923251280785353398294266968481809422), SC_(19.43625903484029103724890196706669987525285540564261844331307898213903739746828751196070945740995351), SC_(972.3361350584072226176601091651977475234177232195332104589996877047660506351091331252931485388657063), SC_(1061.900339807891321687470263810984063432680105558026853494626702475412162496718044434535417938907304) }, + { SC_(151.20574951171875), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(22.25054453795977591395581644210810485481344426427299113728176440261841682559668053534376500512292672), SC_(25.7850728493645215277039555545699818264916801309143835037404239732975628916929596653533043029856419), SC_(991.1386490514142905308341333089592533333393575768508620515189774646836564008121159533810177573519073), SC_(934.1658258569610375908294861385072190582363605291677523318244897757290001471387882668118389647214393) }, + { SC_(152.6246337890625), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(47.36007909137128620647730276787966615849770250122219855340148147379447052011926629057263033716063702), SC_(39.90225927792664937361568644799655268755073732359162377329912268783468404887931914464986871891508392), SC_(512.4641017245204412556070879404142145034369640018946558228854651922623335031056346204455298682898762), SC_(561.7974997215675246088471439382022387693706593596546785422103069115287605351538528768882548146122923) }, + { SC_(162.561981201171875), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(62.96350304258288721557836653364241974084359917082848288138398709172461249726674042420708722070141707), SC_(82.87298241403695021368174509557336635807983614603976186680547687943854044573477580008301198877112049), SC_(398.7664733425657526689845325498769442570769904930833006473733247545833775325028359320817744700900869), SC_(331.804974707550969078183141646968468556263948349599591178057441315398800627232519845202837500255561) }, + { SC_(164.593902587890625), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(4728.022311967372053700323826542754035483897737979030628706985550970577795504125187833487135113775719), SC_(5517.634432953992609387457782635680811629948742078933356002221167444046310209069933713022202328082828), SC_(8.035052157886608476314515037616510107312356989644633148822500180230736053287134365996701253277099235), SC_(3.519420425558593287107644005130930207861307060424141972850640226183271065005948987721618410617997641) }, + { SC_(168.44842529296875), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(19.59493585801309508754879622373461082005050493937544099596662262194125859806634195670605582970003758), SC_(34.61314846240350835906774973677506192563923341007968354127706294101558375759277031997406229735911083), SC_(1197.714133844687195957497407638790642096172233005609561629337228377722824594778073815953510985998359), SC_(955.4665396926961844780805173917281944513815361741166673964739682548443515753794561238136561258597742) }, + { SC_(169.2652130126953125), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(305.2161589943650495891798192300531764930434209821852638566574974858932558987792026016240174014858481), SC_(277.0555066297074191064611684759660860960308828186439310881486412720537461152745845152018203644466519), SC_(92.38240738840138729833537122107237037554046225530176462594311297619266614465588131435634124314695837), SC_(104.860832162553632331863542370197383731613395212489060615070322056192278969219670702857145349116607) }, + { SC_(171.25299072265625), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(31.54009458212083487539247999959879553037739793391483125523690870853855777943931772973380147168615255), SC_(22.99232990103363811719437424161646155417393799675308163029460557912007571599000646849311617927446981), SC_(1022.679813289357792761423266683136181285603688941873451137688129316415172177962689880389660825736944), SC_(1160.474028332943487207445896119798201920057155615896442435965759509382513933007225067563665607657873) }, + { SC_(171.5064697265625), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(4784.028578562401876926658893396610335464222835638776569740915633559648473653897718466992841720815186), SC_(5911.012714309651000573920675306905276225188262434411426078786328310834104210509914727409886962171698), SC_(9.378578329918138538306765929602536704250608945730315971059415635480227817474715053742551651565622755), SC_(2.947416101676390912481303942183432206665871818286345778807420573367337319786574163315048971644739292) }, + { SC_(174.1903839111328125), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(34.03500437662265211350620160199366347102815041215297978689893871484664731650541314746096993451582035), SC_(21.69116152002681802477754326627650860869712399595712501493163198485123325938368859530378459351126154), SC_(1012.209403578403754194463045733610586261794405341428648388414058076909012620896829382796418849639697), SC_(1211.249746907149728311880200392977231576573973749614980688574998922528391128168554338058503200026009) }, + { SC_(176.173309326171875), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(39.84078252494188805936703743691895960747164510926965033904734787515514353463575477797774183038810927), SC_(61.63095543196728633860657258878414995693521378312866346533892666570252467198812472509305052460476953), SC_(694.3238394720051559977014443840989762203724285593736707062273335024061347965791792450333057899766473), SC_(550.1427629160809502902808756968543441567197906982286580390175031744779657632402122518322800283404274) }, + { SC_(176.369476318359375), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(293.5508679121795908715834712386810597084531948805729090124710482508565873401288874756656150784110103), SC_(312.9619944224489074000540220597168455472383472975597156358398511028788016179989241963490300913835829), SC_(107.0028012636122103327393828687247395975836368909642543941566323591186510824809911920978280789096843), SC_(98.40129161972980099308913080816436003451386421388396986487959707785032575734784630836664255459074957) }, + { SC_(181.503875732421875), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(1623.370656741570624567381858535217364475946578203634186306414366191483145052306238642316333058463085), SC_(1866.927937510533279074679253179591823425140280611758113031936686049597200368058551653950149093183126), SC_(23.41154530991247630217765947881206172720091908847360111160595458486518295592093927156371187182316778), SC_(15.25842106475171849237489715944190190948431291861967293724594888199102888591275829321139947122904714) }, + { SC_(190.475067138671875), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(814.0224401229362030695108220496262845736139483380619107040930817615847066432141759987828777418210129), SC_(859.4610264865083361881941520815624600846368352029116105693630322473058296208786100550965569201739374), SC_(46.05749464804333256350522201132095229799934976740541214253406353979112639594413822938331975632027846), SC_(41.13340604689229391907201243067321100715755739241479575608405456808048258590746487392338714881128697) }, + { SC_(193.4701690673828125), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(366.5705686743556279395159957569563336519575466078190970138820568155812666767890098417924993903140237), SC_(300.4026436258091488280203591524684386202216191987346944989090304968555782288270021828083899214097002), SC_(98.37842037817299637700714661566285740278060965869233130720433805464683391598838130616237569346020916), SC_(127.6972610871578750540798195419293255461067917554134645230478502403006396736554285810299480626175383) }, + { SC_(193.9062347412109375), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(886.002779673454645480659624543360725129420960516241184577270551086245796717924109715305754712393302), SC_(818.1059802082073334931632411071625175874052829276919671380589607799544944681666411884929570636895002), SC_(40.72993844452654102974473195181251123177646679038599552224270911141602919168706292018086915106348174), SC_(48.08759012759707584769585012752847376934748966568406045495322609095670462765670669334195167332782907) }, + { SC_(197.0894622802734375), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(21.8247393835528268489781849931471906339964451388080696985702551630797263422286717188809573920201805), SC_(36.87156048635983696363963703907722063942665599248309421037843237009500833795364336090466858228405251), SC_(1491.851326483519096933769067479143679746825386958796018571901014893712657678904599532897971816894002), SC_(1220.516898297884838908581865684496840563157687855986976939625932088768029018968083203682826661405652) }, + { SC_(200.7224578857421875), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(1106.434975018364327744394373643647347671353030462914409324513407240402347819806626320375111147501661), SC_(927.6030951716653935089745019658844380655371438965486252786257247747117570543714464509742153495668945), SC_(32.38152477465950475616964668299246906207503324151116137998891803250833493688028347216115466605882321), SC_(48.07101966048470296061629223900709405759328354435936461665826266990518482274223045330409405282315384) }, + { SC_(201.12933349609375), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(69.70173589960107286742970454129049271332289566553991236774740515369963548108859518868969591928297263), SC_(112.0987830155088914956165509693461743887167239217937711481192516488535696870207670792340163159963336), SC_(525.4620875757469345106125986537596317891894043933138973581384372504262902250993173635587338506187438), SC_(382.8421288697287662543285719923741775878145504733891041455595800306688536496795677954996293634936977) }, + { SC_(204.29119873046875), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(2001.104746865907147594894337177767206503171680378209357205228083244906502963541247521434810325620613), SC_(2308.135972422315028456759403299073792573982905676012629798352586369436705378530911689793172920311114), SC_(24.33666989315372983191618436052980735879433222482251183914475329564835413069587457837061068575667672), SC_(15.38773694746192933457987094934341460016258173372849250945913251020899332069423338509900384358300429) }, + { SC_(206.11236572265625), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(966.2419522741706228186277543812202187212000281994287593275218233490362418782493464495117149759070434), SC_(1121.056380120702855221132698611266712562195306934163054271232567625389623790136415792505537926709325), SC_(48.00136401975943102274669598273257379482929147228965592146645587710093840760660136441194448245951944), SC_(34.41729013048803074981063264962854416301457627036937376294684909189966858398677893496840772433918257) }, + { SC_(216.17626953125), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(1156.453080342381443799121706583166715841245979608913512225325794915965585252517630586089335919837899), SC_(1031.393387520100410738917501257883405975171647082562500684032379387613144435201216237069881389880601), SC_(37.62676863972903244150342894735865910778834820323589749569836057318114941555451527631659189250251457), SC_(48.6015299010517717767668131525015616701585686807751243035908911881045565635947476244439787798648218) }, + { SC_(220.5819854736328125), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(39.57793101064435352581401676686736475767463378379434462962817745835375641536988915560427860910812039), SC_(25.77256390125002003624154540666567278363159526793815505032746471604131802498529076857480195346324771), SC_(1392.076217458888334669494257979969758760180762978603454861931792117075326109303884387251550052043676), SC_(1640.941412998269925083432568645742286703625578089648145344493381693102930709469089317118091840750932) }, + { SC_(224.19598388671875), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(39.89818919917766403217472529572618911155367341641981191325753031166843312804149358153368655868693852), SC_(26.46596589908248691512049990098956878037272638591822510482066242713301188149424951991690761033359353), SC_(1420.052691315027799612488161951441677889310129930166713443237793138141358807954269836297641153669029), SC_(1662.178384222810327023068024713383272447715630407721706162366759118795980418070841378818130680874144) }, + { SC_(225.070770263671875), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(38.82709919792273626287523667008234156881620535403735201133858806194341099164976617025332928443059962), SC_(32.43635227801528421225886610654419829608821452204881509370532747689423609265290639095237090958799469), SC_(1382.482626194690883135076297420551616048241008759227356443906714297794481859419962209323171081518341), SC_(1485.465053717320625552316716595217714668041493091950857986888208703696594185628670234428910913878109) }, + { SC_(225.087554931640625), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(6836.543035851444960877768400228850546299261199238070309767332505165091763524097308053878598311694302), SC_(7157.158047769440095246439379124203393707008223998873680351187533170802333984012331488178751768158945), SC_(8.492036940861554059553133971119102400947388565282491781954451133700438670466958564703633541311050248), SC_(6.652258546427684181689569769512961129129420593860811050317004498938715201150160793307704356541485878) }, + { SC_(230.6797027587890625), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(2514.191872443207997468413563749323978423133771791102008458932990024782402318100893608942553699204649), SC_(2346.456307849133560973496699259845564245546100760428536151011217287288257252427490231032002247494249), SC_(19.77980540235530490062892338439562745205873176899057538632359023912351147223280821056959264240436239), SC_(24.67180024287662429457965594658369237304983319450243790843125659305757610275014044104386896519599722) }, + { SC_(230.694671630859375), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(2282.543945316942095114109722843035801678356714205415462364607907924491418918300373356243690754786784), SC_(2582.477155830624272297103984281123336758274449350473082392520927201983062725966111360301132994720639), SC_(26.70914140259581995878811616853837491629216097566000854152500151536742069876875076086532126288134179), SC_(17.96445887378479529154920807094741448952807052389272125154415671408025323662689737505569892443425944) }, + { SC_(234.3191680908203125), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(88.99441162093508021935373961535934439506817893839687420402184929070450882357543864983072597687262626), SC_(121.2818799539855396276066601461873554045893776471952097970737916796156953255346757296329396310744533), SC_(581.3360549237584583594164850394777895981838849613649539495931895372408172059574398931181472302049755), SC_(472.7482621016447438920246490950294622002929386539893514121094071251985351760111927807590435383830802) }, + { SC_(237.550811767578125), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(2229.147174762132853882894476504420941158353907423928126549925065413476193972318476912441540968466606), SC_(2334.394493125107703249830426426196159011604302000650451462521681198552725698533267642485915252685465), SC_(26.78792633565545749490392524510681229551809281881237151197549615063749728451511009602713088692909676), SC_(23.26200152065299903820602131001681151581635480292021279861886063513306815326986293943469149009423895) }, + { SC_(247.5666046142578125), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(125.292032852699846566209280966441922942445540712947286082587092231534759204785331004728035690388022), SC_(96.5187966937572343217527318126070574781038166304862556898083278400632720494170718994927148981570203), SC_(507.9979084990267760665061116950904614767919392976158843078917502546244625910566253336934272947208758), SC_(604.7618388083372713539145956635522997666075351036483440973546563159348537921187336548149695924669735) }, + { SC_(249.925048828125), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(2114.407897057942783090216283454152130146661331775295316113760830022577400774245359445977752452514567), SC_(2709.777456061689708868544361792494340066962877663465536956301215536379556113062938823855393118434672), SC_(36.94830331297740411040132316541589163869405698911242179158149722677333288276400833902623214953850161), SC_(17.03494481408905741549646839918847605250894758248469083470026769165886509080242049438126545758794689) }, + { SC_(250.508880615234375), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(457.4436802672169865361084400244208722433533802648263824906595550823481215793642306954738880435110705), SC_(404.86064798243372413254366779818947015545004966458759905733322251974223470371083603479708755554752), SC_(134.3194462824449339373967042758198809220419066845289526928536893762005821791540476012212791309962631), SC_(157.6206249355053559221707911155155973070616837261996650099312171444268926430033006868069198306861873) }, + { SC_(253.8476409912109375), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(1041.233341411654618394711059776702505038030907328264433426045667284206903102276024986404478573090013), SC_(1192.385485053352237366563600389422171056705043363264791496292305686963542946282094685968172341680399), SC_(66.39769286082464441678476349846856422934758813135146394930542265672060866351496526596452913704553562), SC_(50.01814157291283744380179363809114395190926364904292030681634598903038800099419088595843469326113193) }, + { SC_(270.103729248046875), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(8802.040583685499610468485654417072010802739878162215723282731085274129942027675735021790879199337915), SC_(8003.886587673852899986907513796155260912039377051119550156579414738757300919304554820127184794405606), SC_(6.814392105912656872004561114920031185281182908438931383657734953855664996235859916547920867194069536), SC_(11.39347760073148436532277947402665218917797491892457588041160452149187409716634144846319260066041449) }, + { SC_(271.30120849609375), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(432.49636041964890457998194009003690641890005635226467227211651635296973322303795628197986815746154), SC_(501.8775679265435196363793632111744488858852784730548590129099666466003820531768043541240251117043715), SC_(173.5580176003695246219317065370715615270630074264939284398720068435500393139325769600829940837228071), SC_(142.8132477835673203095152287685362531290993344716258671481436487179484068647678412544382664042292636) }, + { SC_(271.650634765625), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(7510.192565223906150959421557467010215187367416860042619268777697968764973337565020042489841306850181), SC_(9452.849510122382906877051037935296485256470288164312367809757934923008166697149784497510913828277336), SC_(15.21943696141201283121903650215554561837684120957978179688782227865602274103037785265141725547066638), SC_(4.127446580565579064339310432324127060645902140980792310388358860284413091193653591290448482770003404) }, + { SC_(282.604156494140625), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(62.47217429765029490497237265772040571454968912480079901486654495714667785228625331798081133558194935), SC_(100.2754358914360903999527402086647235937777965766183058327091127996348085761058681544544541968571664), SC_(1124.376786067755040841126187414450214072492148087937235456250899250758131699059118306507996609022307), SC_(874.262745801029337557356268453765177544730083127928779716668251866300127457920071188783359000198141) }, + { SC_(284.290374755859375), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(137.4350845252340104376360650998239815104490230687171160672819991169876226649570995570229230689398781), SC_(116.6548813190166719645839640071123204927496241157909589551539659836141438152543539004746730691494391), SC_(603.2096474495792579025263801022910852595449814492824280127920869854852986802612782286369740906145692), SC_(673.0873272180518740885073470199538203764319506389013785552121225141449254710572544567598477220360471) }, + { SC_(289.107666015625), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(1379.170386032963036056057467075610739726228293042048969958685097699807050979634067168531390995175076), SC_(1547.748211357701918310916056340534996079524269910192898476298075415794849580259759270019232525739132), SC_(64.97025070838179086041501303586135285355462404143006123046504163708423003874422641481127056464888135), SC_(50.1745843220360218614668810020625781890857994377690899121309329207453327883735205678813872316502933) }, + { SC_(291.19830322265625), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(1206.421854872057615152825528257532521052853289900948909547711370701832547668297551730052156051588605), SC_(1355.24421770664948490469952202015806834660070214495625865135034439624331670566795307005504005474174), SC_(74.72942395368054411822919722638786103750360948352569685667357069576631042009910419268067843376786276), SC_(58.60076468756929624994803583965469706851145322413151074856114153741053607925311857414154545066872891) }, + { SC_(292.808807373046875), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(454.4698002779212714754795779720293806887877501938277182651427250538535998360393175723241637442005439), SC_(555.2444054280294274342076260599944193757735531653364940501414098336432665299798507623002086382805316), SC_(193.3416431197058655689945443912695000138682167118555679109416798905355876259149195899866589415561013), SC_(148.6868322417619683094062062628313195568906586011991895211289044512788896941196868330371668210917848) }, + { SC_(295.273590087890625), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(8484.036853532861862831864526995190482667532383810867147394499950374516575744042407934615975602725099), SC_(9912.698466931445135259424331045006737989225579816970964548144570824231175751662751316733495080263829), SC_(14.20939908193095054374956404735830386490792756530647881560407548313344249343969991242951641749495597), SC_(6.024418457776440926407140862685079081591940916168380556713860944684306536133953362834625552593641253) }, + { SC_(296.70086669921875), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(8745.543843289821079785526154189935142812120335121153517082820185359937223241139523599573235534365089), SC_(9720.47240224067254081505112737969811612727888950757700482424577356875594869771231133313302627648454), SC_(12.7930993037119493752522942952395437922272217351119623305271985343324485308986443046407418586828492), SC_(7.199755852417057740871259943788458146442246858410469494498352134152935956292101710421208220197293712) }, + { SC_(299.14776611328125), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(121.3107401866732967703978488044686587427043757704825828770314114435617901167300955721457889812748294), SC_(146.1528733300425636612484199163065394315923424675759435781348537163121672639253995085848839654086084), SC_(713.4543853449983803522606301741160012891634266257858254747411054074484345056035266465726328968800706), SC_(629.9172050719709568767512741849105414959563989214414678272966274142323610976249895766485840238752165) }, + { SC_(311.905181884765625), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(146.336336031304469824008430114477471069012893499900243765278297615667000721140000183075498837948816), SC_(132.1487062225310558513385862728465378412324277284301577781343062918365371368308899531880395405574316), SC_(675.9592450795484129520223185898638085139214768041090869403561819830571841751899260702988037142388762), SC_(723.6662730378020760465755420219699825269883161878156506911019924804490976356619692018380957163323413) }, + { SC_(312.839019775390625), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(1405.931274583914387098978809447555937292104259311709252288576425179659856511389576564301257620275644), SC_(1771.134161564664899250968029949568552106429390532189789367143788341784140439083343783215228677013232), SC_(78.90298667232884442244779517534814080800239082936845147512316489024976845216409349985595450849881847), SC_(46.86486053969143564203698101037546868875367765261867410894332596028263141149312057564341073140479121) }, + { SC_(315.65057373046875), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(39.37995588389156633706584969707704629195064793222744739008366865693717556987278237295283481619341171), SC_(53.49792683420493109885010436754280386819873401030080173271013492970179671596537577675972986320318029), SC_(2295.903644510357717396271114250463288315687186429335140604711248164424042562459805330095094415879518), SC_(2041.5211439262672240167257506839333338482138271861824509471446921226127876056520829807636424466458) }, + { SC_(324.47991943359375), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(100.856345243934846363864500842371758499561535399107448529684874495193805042671185699169374758294781), SC_(84.1570964692384855853514473611695466605990268636285865959576387881931568879768889653035602791258143), SC_(1087.743547754023658361536135615896624042922235941205706958544648166616505237201323320129502127784761), SC_(1198.181815581476969007735843476342037433433442654760427459009523093186543349791717686827239307751267) }, + { SC_(333.194549560546875), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(1346.176112527422109546505207241340449464455485265043886936043930741073763882625242940713260739623836), SC_(1588.316339240183298848929030811101837904137456235381012091783966840392144835977404123205668807855419), SC_(89.58955622458038562641582201001953219143315981964910133312332908225644228019691609493218749060319764), SC_(63.35012204092930480526069113333274060472674752585414509093745767180039627384981271996653701826577571) }, + { SC_(333.627716064453125), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(3028.751415709655177123458002086500071999447659478751686037603215103631746193904028185435428092932816), SC_(3388.143293052493315644456775833956063826393920062428316190573012475050812569181833721372500873532995), SC_(41.20504317614261600457836090391118485226469178147885170667241449214567114013332563834728120999105786), SC_(29.16505507927335344059048971995867182095812611616661040524482356638660128005435016444175060795990962) }, + { SC_(334.70599365234375), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(3162.92388757197258646916411067078956348536293315146732173619910142868436325310368340776777936723137), SC_(3915.440987700839395741157856807271129447424815785617934485631025080984024037679948186150478958811241), SC_(43.69599357623374539810817162535279816127667131612327225930115313819102127259602605570324417898712665), SC_(21.7693027874799169330956976157306072573857019199025679054455276436359963572513495615599389659333804) }, + { SC_(335.802978515625), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(1545.227389642540360868966850625193700313976048170330939665460930011462468638903139136753034226143156), SC_(1408.080686522361810610659229932920569751521561026454639383938876874000132178124796262866812159221078), SC_(69.32377165370401158773414011194002219476849021524749284401392745357517631779186863174676496068332912), SC_(84.18846659259708247469386553892803673113084363234540002661316492698394116171672120030549940270861351) }, + { SC_(337.74249267578125), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(3289.187795832962523973528212763347852270057774515634966532783405519356192898799870951301952284889652), SC_(3841.282142968288495776899463624455077391000346890754511385763123911437510369658428525721548780900484), SC_(40.74647739505881665679909824348889690077097645117880083660031099968993936860388518066664847682016055), SC_(24.64871348714462778550455372650569219678686452267221557851804861360512537374905091018508070874471843) }, + { SC_(338.39239501953125), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(546.878867170107210312150549529798315065125689981471032792885096657529177264657878692612726762771313), SC_(618.1137093421739861535116836695956159773218982076082643882203395372321703938204246540310506133479035), SC_(212.9154427112635113837700226353764226915934607470039391910354176058372479362020205781958559784314997), SC_(181.3482856660621334160302556732614936611395850003628547582051510373187714063974438396074631862965365) }, + { SC_(346.83636474609375), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(1719.511538897616566823907623379639858096541193399363100849098868730297781164645651372978543503245611), SC_(1789.248769777842621426987960699477492405949708745091008503011377889328843581173850191379978682371384), SC_(71.87882171439820423908528261239808463907633231224486207300553938640542071828395377969463261954717824), SC_(65.75687395624046089305431485010262930906883015169114659060392297066439898692612154826812401336530598) }, + { SC_(353.721343994140625), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(174.7778118616485955879705653568741280996644055917097787435613026287744565080115051207119184410299718), SC_(141.577595726140260709488254259377591336185184702585539997155419947649592747149579939937722167352736), SC_(738.7163099340652773328093403726727404872460461954948535110216339203781073073155710375881194930307801), SC_(850.358799256948133519670506221762251666495016710863087814815542069578508751523471852463810977274628) }, + { SC_(357.90582275390625), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(663.0816874204673996415430280189818232246176724606008445559017741393571608315913088274210795779621546), SC_(569.7872335737714884321037286659692534766889048043562266451466186329687641671093007881349612208458477), SC_(187.9833427637078760855769565607796369597614013485473992449613482625296649596293712334766090533060398), SC_(229.3255649149565038867122753843098014700516017703344072604787951463412891670113842054952311275427367) }, + { SC_(361.889434814453125), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(1948.509860557045950453462287770571982749732308036970447283300584119568291981066858518330114176862879), SC_(1716.699086540586494047665521432144536789372153637936133299999016347700111450387985576135766978126724), SC_(61.87388551103362288920880384469305071557391863184221633713560145187074947250655886681620357136314236), SC_(82.22028487835620589867131753878758252682887923319270984367106014769690556902644063254718433274521098) }, + { SC_(363.684234619140625), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(3561.673817008735080394783918271515872507485621712037169587768380722843983106682618498704971164690265), SC_(4115.004178156809921563631525549943554912772611216858733689167560594770860474895199366564922495840498), SC_(43.2009663646756273408522913363072785907862960247877824671285010971684386454930648277658447749939088), SC_(27.06466217652195220543554309800970465205620438823475656095553371694477229714542666037219797663800722) }, + { SC_(366.535552978515625), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(51.02506388502765548192380105068456134018310440888078190574253479594372080855461883914531293433941324), SC_(56.30815026898999673288736625181957733098918382249983859725454461743984344010583603680769968877558175), SC_(2563.794666433529480133005455195284372304139238046977059284021192079342434162376504975398143685652115), SC_(2468.630460345498239893313431649222149999103615687858166863443546067246631854662852665526225108839762) }, + { SC_(366.611175537109375), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(67.34812251175341524886193853458834072505940853233000439890388740658914325318966251329380325656557055), SC_(48.76937843088548995608091742561176797398149681779577166457326444855579872793963012440904761787361479), SC_(2189.246426091506302467512005207846953288705757017452886236809313558317529097791926734443614453086277), SC_(2488.610094486888930834725042796047545631423930709322834523798522098990605249484275424621173763799046) }, + { SC_(367.670135498046875), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(93.59242350066664551026833407413371594575800545721498215102387817803690288475497259044397296827166526), SC_(116.1303568166698677317707521356461249459803547230933435079831478649229701802982342176225761427363856), SC_(1370.111075545371796791889527743317490400715411521826866601906509285442917820898149225799267996227747), SC_(1221.059146845386804921155480681475607195317412654987604601212842605253088897945553613448601348146952) }, + { SC_(369.6851806640625), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(47.8757726690580143235293742265520689805388855147185688437671693593691965536602519887832724835335558), SC_(69.39436126225418563616982701211094525988713762059196053151021978544898566579823710798462839287808575), SC_(2532.896564490541714630811334031349702964064262218337424235979445711384917204602123051348334375804289), SC_(2186.13332410174469226536229833639556334219695450027794347432152056747534584923637400477806100871947) }, + { SC_(379.242218017578125), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(45.07400273953580350807251878046086509091071582473074489616426489067127998106530572433192915799881398), SC_(66.70877556218067503334226717142823819362146325499223763926085402899940556522875801864040239695048623), SC_(2802.700199993964812733940593257541985924204421680919468496450550652161473840716202987844607331625187), SC_(2412.849145052937022535313415888608227730257478133782444857496738696626764004693361840756100391867812) }, + { SC_(380.439483642578125), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(61.90766700962656263114597926383475839639758594669826907290433525831228607051842985009505179644909275), SC_(49.67874752183953052587079439595631932881452062380494902273151525905181847829834867863299424504571915), SC_(2502.744625568256308790281242233875773695611295676024745308025443911945223869484601449928551128637892), SC_(2723.043393172230730740887177566341642985046160245851613789036993276698598959810819569338646619547638) }, + { SC_(382.8638916015625), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(1789.505083970077316191456024760650600248724495453225701527500175121150265715354130453922156721370349), SC_(1579.76575550454285859133413459242488671308036832628902782469512850606351150134099290632044300748805), SC_(76.2415680648598284849226540605029136076143054967134306674164612651041423555993056813287080118789139), SC_(98.97346330603744268503635697810835887413518526863882687760428520850156333754581524350145649751738068) }, + { SC_(390.75726318359375), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(617.0424658455831017991520845637385330945416158979271196283360176419331374546568612299820725736850731), SC_(729.4924295746440946343112411303648220570537314097683876465643704908808062259987283912350190588100054), SC_(252.8207787524392662640087322438529187841609854989161539780313623830737644775600278852506227341243388), SC_(202.9902432222450277698391546117515006756236064890018730845340580449854363335234585349328958093600527) }, + { SC_(392.099517822265625), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(3923.163436648163918413593946540454369288671212079467363098400515512337129031956981953019205523491982), SC_(3615.826956425655255579966130049502830945521149367103737584346023474891234309682044885280101396046095), SC_(36.04410677042899835666509487585152042231822105876308482809929630695766488685782132501680217579370856), SC_(46.34295170668300261499086577714818654010633713224779238838283545895564079794012342858941270866299297) }, + { SC_(395.1163330078125), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(50.71360271146617684433421711782866823167344096145353949303304798406476398021881764413023971089228759), SC_(65.23702500594041976473015345126457181605725289765341099575798656162238878063839011962123258168195225), SC_(2845.05459213286614940564620936353562227460543925912119988075807071370821271000635985486984758403813), SC_(2583.415014071389821296011695228558543583108824252461565212922155022733276140440216172124556131628648) }, + { SC_(395.719024658203125), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(47.32426205541540674102328695956963030538073304126416635889358323886419563774379578185220325455174845), SC_(78.87747182277674350577219487238775960807051929823283521236262523387361138240769829783758751527181109), SC_(2783.832052405102223263173583582781010784034188041570100221619732335604161444581931051675822962313634), SC_(2275.216757533219319979032054458820405916006639679033405894754861517638167059623567626499046649278372) }, + { SC_(398.9324951171875), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(1577.606068152680244284397169358422214936696725033407142692364735025557564500667234095772359717744658), SC_(1940.395415720048919212500313658132653704494589200664053406250924198242163885311425200428265623387757), SC_(111.4657311386874009248856462526213250604949532416569990800224737495174122361791999460295844705337453), SC_(72.15647576887895039092163511174426793617333940972135085602254545139862606821267880187633397227480452) }, + { SC_(407.98626708984375), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(13010.61873731764361948401300279799291626481901277799876457661691891724665262475279500487697128551346), SC_(12371.13114696534000672637902315121001572770704988700024503600087013735335890883316392193248630261706), SC_(11.63671404777102399158269653441348790259322723876296502505732648370216036832179562923281523446356231), SC_(15.31140280549697716422289956741796464252078436789173337434334035359535711253419676614153157154488502) }, + { SC_(409.160369873046875), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(4034.718151929356092247832750985247049738761173816991439922649506325788929740825800499129737907598317), SC_(3830.091517871982073298751996440251522662569759769788849094510334047698622950038333212962979038363109), SC_(39.47032919394069376252723987510003233695303487055724596155856828129690203325822222801088521652599295), SC_(46.3282857166945204982106981605864612070106378710264204564808638998835148640011076542768002415431661) }, + { SC_(427.104248046875), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(4424.084954863841617892678229819086278754371221162315470256451089231057036186861633321180834090503736), SC_(4578.260219741607965253728115464639646551207257087947151096350964831831037381168346917514888107723223), SC_(43.07551920721382776353832171502803025711868369686219192642243047263630220580676883198862654057970767), SC_(38.57622265829423676159737800260217581047447894960445035265712292445722298213463911326162709158760066) }, + { SC_(429.1436767578125), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(47.75313271333614446755883415168502775940184888189273962328278168434253264027696460219883854354320496), SC_(79.25754505904035138291492894476978734191575651323155070061163561905573038210001532229883448840485699), SC_(3238.463097036761444923587098025101976389989910336516238208191901512506041057285508929437962519570382), SC_(2670.639173644051940315884830789554781433394971531439866614277535381484601783350124887003109263052275) }, + { SC_(429.75054931640625), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(2020.950292077043754769386974746114313056984012325870675209004428841216158163136277452771358933750427), SC_(2333.606785660090782900952341278349883472752940293149407944201102371706515762618417784231294734726322), SC_(99.32525411299787707293942005607653807312209703034907121913300655197337661936118830252134257720930323), SC_(71.88308869235661592572371432416689295428542440984630398804838243558376667971496302546809665496716774) }, + { SC_(439.23553466796875), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(4887.527087937533386421685306171177772243151666534635341344174243280012321165694300841769661026542709), SC_(4378.748113850272960847194243584191085014083868677519680137230422090502989597457709845286745989538136), SC_(34.77261112633111782951027025316670624727234419555754319735003296312722708582758602583490058445586495), SC_(49.61555992049993277965523818905519052855851577841961939741887878589348738918118706198665336525624636) }, + { SC_(442.209136962890625), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(174.8359720111596511794193683075323945252587730064883122349464715386892168461071276521254576325051664), SC_(220.7821620121725094584207371118093575991622262601403443526816336924419407678500482662847470040618152), SC_(1070.967594753974698055179672291618377187807774938159666531131944791764897553056113804301325286017454), SC_(916.4652253813452614389564386045963419039591947903569192517661577391761216766909552864410877589024941) }, + { SC_(451.029205322265625), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(692.6102255413889896876705554965273547539237798023925214286499767511877922255770543372131579102025492), SC_(863.882887211379240558307311462178158915251864708299181261265706152358004619264903846705456763477112), SC_(301.5175765983297941763227998715122517042737776194072826614511319238976353121358567469468402737084935), SC_(225.623050067534099838113179527382685575005130425794064220483964199508721138717702085891607564105874) }, + { SC_(451.861480712890625), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(4944.163840150241246804857601946750963029327554753849054302303658295258991669243111788292577240889388), SC_(4583.830722857148785837350102805196283988685161752401093506552305944209974937745606135107804758961995), SC_(38.01089652369126696522498351159070014397594700966177865432327739286076209701308423582695247754713549), SC_(48.52537262261828673929327384515162545539449808268674576211240307174402228925761548412458792808718487) }, + { SC_(452.690185546875), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(63.34022061072115219148710699550937258631431548703904437513539652053700954230335412025212485663563007), SC_(79.55713639787763354297244899488419896918719724533135942214443752598261851032026592279842636914831423), SC_(3017.304410882430209491767820719968493030366303700984228314665299980273985878494458803167783770442401), SC_(2756.053444685623136829167723206430736604615728648851031941341506100644185105830324405071012525769458) }, + { SC_(452.74658203125), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(124.4529555834645897242791817031765960032619080891188209516177374719826358320804453768227107976767711), SC_(133.1367520647264867239134360212966670089446855560962787715878610198615297636483765825814653123749023), SC_(1622.866922169130162746409563064360704943477707966019700516253329432366968551557804912634808307384271), SC_(1565.444836555024046358462536341685864602125517127331247428338725271960364982857405309261337426201983) }, + { SC_(459.7744140625), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(4660.66545439009552725495521634643059211339375799816954723699065546990876327892765784709837081384697), SC_(4184.014441039647970329146903245895806316197272623581471740923232975148933641564883641639522130850474), SC_(40.37066332972148169633170932583635883024949081733766145789850684308210268946184104400868944882492323), SC_(56.34244440148797851371601592996958480887544797964525143548941419898224842710278826664565790798208131) }, + { SC_(462.52325439453125), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(5149.549819107952513515117346122390319761679611753876697520682649808944612315659697364079456192634281), SC_(4608.533926407965404419674842051226657123824854946959096223596085480978406768320106105319743838504573), SC_(36.52830740965119590739038062524104980364964040542323295733852272525859727886108415289161009234311235), SC_(52.31208007676055370532270685429733209300262612214472041671559530002317735231373439378289856786843204) }, + { SC_(462.843414306640625), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(4167.784498011248233115229943929640265049734181076822361336904416563190890113134991651560961654185535), SC_(4739.41770053446386221761683733583898674467514607856192309538827372731265488180539687199521511328825), SC_(58.35641122812820348079142739107146984595383156817928092136198498970045806280361102759592662818864396), SC_(39.20446095986093207668853370478562691553090821914289707731672316040947736766945950706170210452829907) }, + { SC_(492.655181884765625), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(213.7163267907811063294899388502208491585852435877779182608664300180966572706309780899695340881293691), SC_(225.7599788609761650551173008028267204910774521636122259875868859608200957675348274266359889392991309), SC_(1125.586522195453651556044776932726942417383096085771927485055203385675405662962632974915483785999178), SC_(1085.091098842709231953786263736985874913153970688202052517194019050847181285101301557719561447461236) }, + { SC_(493.06536865234375), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(4998.512185100025332340592655111530142157304769618074262613145525110059317461123098713406398636512812), SC_(4487.012581972380974152943989769857775521509310441279926648897616111619166845553891728541171341015169), SC_(43.26661841967829257187321998901628385500857637803461259524672767362211181102166552485306614206253561), SC_(60.4067051084654297645538080246012244200113295389038425017941951589130004380413384724137122067029151) }, + { SC_(498.589996337890625), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(2362.846346836048738898201402633377683519885489938773730470232781066977575848066965212094475223834004), SC_(2688.114105745821636727999747441686140683583405698874606278769264956832188326078086074505528138209638), SC_(113.4514453547298190098392978838521665869923997946879503799132885176682063399520420312739536964553747), SC_(84.89990119088916732525899215621681255619760479316504388804282239418201261173366599346609151034910197) }, + { SC_(499.632171630859375), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(69.57472278514389983368819307486136084453023706880082529311812220077013413438766063180478213196545707), SC_(88.11031931376305743206406035007084646183724517440687614687760559941879154126114400963854969518644174), SC_(3335.646384912552614686643159303318652030759700998694574551473665471858590549295810043156573401756398), SC_(3037.048334890587526131161687620165937940480960648224517229104877787732426058224521274862778894963672) }, + { SC_(1026.861328125), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(31608.83614930885289474697226412551865968613240670788057576718305965962200679370727178500806214240532), SC_(32294.0914996241888579677791436581189088671969311174160208685419351768697694692277121099143546055188), SC_(35.30618961983656741634232913120486923780152024440041145706806568742334996559079461624319321826134955), SC_(31.36310677881512185821610072989837507130131338865548847460414089609920414736490612389345994085271605) }, + { SC_(1134.4154052734375), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(173.3580082473593736460856027782425709179740111534235143931618273161285723348607452305903032009751961), SC_(183.0586542649772004098164840613033692815628286612191541634300752809824198623914065277112943719761654), SC_(7310.316799268878369228461514290132636196318798514598498989498557500883805675641562260004953482421488), SC_(7154.09276119671282029784512975549439484471516195334137426795237500746730288219320812831827330233356) }, + { SC_(1221.7657470703125), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(11923.1602058252052697006014455337368301024067465147965676434261132832966374152387653002849196637678), SC_(11569.45456882427670818542161700923428673771021737008930230047321771981613354080820754849524781011091), SC_(121.4766279426787501508411684280501985196703515708572783575690121386925965995059868580945580566094526), SC_(133.3360423211526888221398407211822515586865195721484490516827649409358021419983044675466479515078448) }, + { SC_(1271.539306640625), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(2118.736916300550516293845273469887836769617043436527868598789129528422807611340288578216933835912942), SC_(2256.876171734688270462303075682037027974285334767749751254730236002532651619714400351698519851719081), SC_(770.1685027347285607598618560346597989884385043495392381011098336189232290537302400602501527703801766), SC_(708.9486823049943727632288284003561254069161605917485461453268248998388169409186080262982671343219368) }, + { SC_(1271.970947265625), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(11743.79422921862530566909250244067357191622878159754974430458051367987252313934683555076367653667575), SC_(12725.16944755979835072015069197465752282853357897935795406172664831270136371817031637411189054810463), SC_(149.4004577458615290905937564318935195772685055625890123185249350669554773421280419652996488761359209), SC_(116.5006265848404506200151431700455597244239152234510863145449494478464857099624350830758731471819975) }, + { SC_(1275.2244873046875), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(185.6599257323253021928917819596261733370160858128728934328003731608433386494870164061549668526806941), SC_(215.2865569492879952081738922081401494447490550396184014471084803659341585114915406620222409050952784), SC_(8370.573132170469734459859472438324683901103052925446179842102502254544436780869582647212094384279239), SC_(7893.434657905049365894200239012587514205378549846968934562080205101696731964071293986429098488896563) }, + { SC_(1276.5601806640625), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(2095.478516796558370025259701268306285314420815574143401294513809400750897068026478112544677968135423), SC_(2298.783438800619021799703543554979454395604828427216647729932784642449423319487946810053623137650805), SC_(787.8611244549649377892450879900167038102797146911297249367127178837321696744395677378969817454925689), SC_(697.7623178022901029462182119812822745434234470909263380845389806337108373091811941545095071850420795) }, + { SC_(1288.7210693359375), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(219.4684798719154106044935461522804523014701222453181604983033837749104862706876763611808246941821828), SC_(185.8258946493965707300616213529478377127635892714339844639526908487632328475271563827546008737087583), SC_(7947.75532951882989193120341488861962226219487636486593689305939778530383593849727645635886878801641), SC_(8489.578384566865085715468679025142262237167127004978744628240791384939283283509082607119066568165662) }, + { SC_(1315.3695068359375), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(533.1220999258876873210905541529751975379245296348721336030121963852183557028395001085688732593894658), SC_(641.6440989726394619879599346652363861002723353855707745401173234284103415162511035614289499097551634), SC_(3137.249070739157721954253130512094273415994584768998626418674661383765542928887220220476070531126694), SC_(2772.356857010449231484886294428576290912623752517266360880314396959472311528564336106722399137262248) }, + { SC_(1363.293212890625), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(2318.133491180470093205583946000372662574047996210738170703553128442590056259005807089617092215349493), SC_(2372.153850125309068097292464197554964602506843748174702096992576934973529010760339366573357532022792), SC_(804.6164996057099402280098731693002740762518466014131821194729551280347421718631618517106409575094551), SC_(780.6758544508049020395663520363405836790782541339209389062864337996680587704485087334074646728129178) }, + { SC_(1376.9173583984375), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(212.4943716244307978659427851547808672294973109842197625545448698801952818740704506540350113921145587), SC_(189.2122342759299347318590951596674887983557015120851650199335656479287709414713817966019470170224042), SC_(9248.497731066434578432761855709903225598784934725662314354875724357685535883130849545298613105926671), SC_(9667.745649261675389876265105382946890936852344857672249687731115050236101244852475420780445542946098) }, + { SC_(1377.7630615234375), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(5823.079532283042567297205416128525014108430245257308766181055600999891375867689728676655332170240713), SC_(6298.787560901300524216197991423683616994591825310937295454236727417683558906912656969407505110758094), SC_(339.7418820892733674281113454984054758177053577415774293179646316780573841051587006268450073468259782), SC_(288.1695136969406472000485805058286994784971025982660699896718091303969944475971103693941347018332238) }, + { SC_(1422.516845703125), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(604.8445080129181348118303844543657410403781323432537636838083118671423131703095219515025453807988178), SC_(663.8139133393862227871918006483813945582060099007758156567185678686455595157403956749827296093822609), SC_(3292.093129893641156170123055204962775879866603789370904662063842281232162942761342547840316654012868), SC_(3093.823734078890640240295798125071761499817178040533058578342329785221459530226570809346360786707863) }, + { SC_(1481.5267333984375), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(6170.493614918986711627996872395521480585677856514114504402499273274617307716839674142722094445550635), SC_(6869.75566924579817676976096507088323998027843877319222976449143139781964013757812379553107731410276), SC_(375.8754818484921243627373196910539214014539095249114150878716086636067332022705295582792126633383102), SC_(300.0709186626737450973152344173967588407787580154346821537980958275694130081280728558694015231579983) }, + { SC_(1523.2218017578125), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(6528.860031868747435919809865018760882766261712341944114648641054911987522000459320882297358520280378), SC_(6869.397661591384233017597857702690919485482507238666826111700422298418597529074191679426831978849837), SC_(365.2652544518813892144526239177454873231346743393358146415081523599198705463670259720607769124629355), SC_(328.3453756896366541161615031925415971883024259923254103658327913902158755616928335307103519942757685) }, + { SC_(1614.6268310546875), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(2660.432701441477190171871481566154837767690859488317789986375047137203065680736036291921417933971837), SC_(2897.178671137243753017615426545376270500801122934370130679776786122772293955430129131149652138562141), SC_(991.830382948216165736103019027050313774695878752124422129282170935729138416535516789521223948894547), SC_(886.9107994157055477417680168353030822249993974713259458839750009494372399191518081287363557590713803) }, + { SC_(1896.16015625), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(20363.70834462134137434239375395291392050363224106250406125707197335589676774182817620971404477885728), SC_(19625.34584715480479922027250013546917432057347703333542001033960165135456441139593485149080076132949), SC_(169.45116594342828085171052759207340133841555731668778179926868295179549287408330975279264332653559), SC_(191.0089193628395284168942840096743704830437550486887608859290859894542314390192286542875595394545467) }, + { SC_(1904.90966796875), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(19199.58081862881296035433880156860442518423769099104589827511085321262782062111444069224258384790575), SC_(20995.25337920444084800810420716274561482167870352888546101270341659963652302695757830090062699451505), SC_(207.8408579104269362816993156801219016532731558665295778985086249647931953828573055814162225308454283), SC_(155.4237499610972652118706949199131481545496875209721935436179922586935606741651096659907363895910117) }, + { SC_(1922.52783203125), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(58594.20759044544379481232595490290881113021559994960589646163776520863183717276216408107749923586841), SC_(61077.1289708110748898877334337430633268272956275026314218396114176342011326150605316007542712371481), SC_(69.37943023466209340983297850127711967709169153820505118377517405268921348102469148516909607615002354), SC_(55.08881977268509471007013299853045625383068052609015015254984987140034146254561400942434502974302806) }, + { SC_(1962.828125), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(9602.809179357350664125672173865985757927340721899558744423994554112793441197791407322467013297339737), SC_(10271.17552933055346177057165055437722086615095257279100438232843507267246130280622015490640672812995), SC_(417.8359774598862960318594854043040931553954922200023913693822896612510007618507970592983743533187318), SC_(359.1488906510053056835719651004827191575694089966733689609947156631213473124134387805309770702311586) }, + { SC_(1982.2989501953125), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(513.7780774715714873606891421161091232712982779506162263057477289537784573275941973258937527218104601), SC_(613.9923740660703134577023053000035813640107114121113456215655353597895503644739794042505897282632678), SC_(7317.971266868942129673755508641197646778482067771587847536734898983647807822548784368438030572952648), SC_(6655.345061135015289902187529424717548594164824149809235766993267633601124774751448717777949244183883) }, + { SC_(2019.1607666015625), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(21859.56113311816445775056964280634964008544078681383187604822665261093647736107766404564136848980149), SC_(20728.87102118628184066815097430635491855291711838753696916510939178091114490879383475343517894899561), SC_(175.5292817643466460485851254875413614644256554520386737185853379759999409626232645374647184498565487), SC_(208.5405194423211921284898941221192072753296482204301440450583975192606385351458297707344212790470427) }, + { SC_(2048.1953125), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(9251.20971345051803552385542919682620509920644603256580039854796152539958224800801562305783210383776), SC_(8765.928546011383120017882902844149353933431808465032898855742152811408403922629457324547095962590473), SC_(439.9675276089564282345620419582006122320914377255432673974350477563177149794180439777777658536928814), SC_(492.5806860336903037924547888786738716457424866696128620891053314963687244415557006002663304987645478) }, + { SC_(2065.885986328125), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(3458.662796429088132312367407716319649252271145451106260841633102165741744577981271096800243172738622), SC_(3650.227348577038303937504531285108600629428070470879925268495063953454869731189697431144904240410794), SC_(1243.804167604069128310925257071596305672916602167986277706312714508470992360777140961598393016450172), SC_(1158.906809422989128464880636463428461129440127118210628024947965349256165564667810274415674365039852) }, + { SC_(2072.70556640625), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(10265.38318315518898845358942614991005156671393550921442420152212544243931838017337893892015691586266), SC_(10716.99338750929566740824122638791434417455078025233796840641382459133199162939126577793689660545368), SC_(429.7838594902798127810436323936769521883025239242143898502415388944936983833084605188997361865765053), SC_(390.1280127511312491786485865322973976562427316453830664889929831259065697233670534667272722461581228) }, + { SC_(2124.02099609375), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(9598.229566565963612177038847172146331826154699673419943085391633079590206868517767644948420818603268), SC_(9086.145396432300226517540160492754277933228953478543245760909097678354104723436180116358335621640877), SC_(455.7776094326929438720060004440493557572199537220836569838918998844710993054280727400270946755867808), SC_(511.2967304153520131354764790783378955694765545052463852983584950158520324608972111594521964620728995) }, + { SC_(2156.25830078125), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(21093.89996888117841651158188116938988084034330950933875421409854977928918047338879291028201828842734), SC_(20372.91190578621449750288600409842112056662341962675643131107894130939082712218349910553402011055402), SC_(212.5692259399876803167305714449903246376385420553017540476290708446939378337069811685794096939280976), SC_(236.7451271530506905235640335894616690075729738333352594130854955246190872325682834017613145786244124) }, + { SC_(2184.67041015625), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(317.0855348780022904563401479433632386132025010041499940239868323514802225050198440869566883131576844), SC_(369.4469945814056476954950483680338432913071164079010809921040172300776423727177809662786587314903685), SC_(14354.6068023458093745646943390123248391746471007856008115498303536345243192703624114226579174696277), SC_(13511.36142449849499129927761807839548108318022646624746781366390775295458958413114304267617654457991) }, + { SC_(2215.301025390625), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(22895.7020627922112562861224848447750401262012685645771014549501342248604792483306191140001739639334), SC_(23825.76687931359948701203051252604519115928795271964998065986908341174371152572870487205084524377908), SC_(224.113453369522194812703586103227472878156344286251876506176321313818364973939950976877700699083709), SC_(196.9582594579764818725310529785198001529204989351435519131187218203989613585054713719176013205394199) }, + { SC_(2278.39892578125), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(330.3093363169321981561227811660905141121626754291594116478286845144344852818934523384949060911619389), SC_(385.6753493259975451336828889106468460369714404446190331885792569790400076098529044456729502219973835), SC_(14976.7561566632634308638620176265216695794332082225963846453656325736207354993225242467259186259035), SC_(14085.12555433669264594918118666381200191191561855656826967564790609726758926225746280891862347289148) }, + { SC_(2300.5830078125), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(1012.297100527306716285743550880069207040463867221952404918278996140379913534218848817783159265080053), SC_(1038.332822224316501680214815942731567646231196889643666942025391144688101970435057100955980982698429), SC_(5206.576372676284830007433345628836078495967919041068613464368699130566434606094363189746144110242431), SC_(5119.03996731367514477174757293709359677327382099960040836173567439890047080236720277990149844432214) }, + { SC_(2301.3115234375), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(323.8534510025471106497096732332831742236159827834071625750989691634056811313844760139812525252802504), SC_(400.0279308254527683442625208614184979813812602577568202012944261759244882737640163317685855874907153), SC_(15294.16267189381777616609292064877133499758688034132854584981201879775909695058139778927067716696143), SC_(14067.36185574406330131750042633987603678465564140426920223337041655944570907627837646643210303471958) }, + { SC_(2329.3564453125), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(1081.103887309762769386858877705003012042670398266287862660675257543978214538994065096364443796272835), SC_(995.8591220124759793541846652440699188465640393175150678364559657417976694725346288027457202053993425), SC_(5085.081749479358502862481057881606481136995440639167551127230590786626698258113386774119000815697952), SC_(5371.691349135836687332420883386269734813410383379892343139563435665993896082129624214132546240033442) }, + { SC_(2377.849609375), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(24346.00580533710281740164748165583772438088403429184287288645150104594026638706215090611918108859287), SC_(25811.45522789718636331315913947191511170897645059951749442402520940820145702817116685586176127773763), SC_(247.5514599848224159955932850275540018909187363672441373890346215470110176262085818773271263546286169), SC_(204.7666354391795897067750658638523605120161878553199948335508239623282292045113240047126090889911353) }, + { SC_(2547.084716796875), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(77112.40032345642789410119758670079899542544747247365036064094958804090803134667563824217177964414615), SC_(81458.87384838597199528395341595235259116905082836131452429706435654503889100148419460880290409288463), SC_(94.99559083939884639438943964758777822703572065161201781421334411537462428927732256785286482539786063), SC_(69.97984168684320558559239638240707936679492143940367552959801702879133635374269666878795460095361317) }, + { SC_(2578.910888671875), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(398.7821747037804567182529813053597771522900399530220030082157837346000623302685901714115366568237648), SC_(353.1463505714364636023496757518115822843104349675768115650781087411334235263313422079065045541515348), SC_(17305.78085880500912954307359993248817208804885642615777085587722174304373820028791750484217514534844), SC_(18127.51463880514671477993287305459984566367206209886591091976012321283577213033209720148720248411397) }, + { SC_(2630.47705078125), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(736.5415759091229693359482883178104457667955546670780643047018720078727753429502033408005566819289677), SC_(757.4834155928172852992203733164491630951313685079707686989621954505457653814999911252929603392873856), SC_(9334.649684833673818522272987995615912087116994516295211938225615312617907409926501537897336018475737), SC_(9196.190412992344286031416903687015959737257998729830833434728827598898098801000004787687743544258539) }, + { SC_(2663.05029296875), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(12951.27857835106074430395457674031972064319978760129499971208513930820803655385852942906191096199162), SC_(14017.10467995264752180750216793567681216169663496957538441616008818674389845110530493073845945233714), SC_(574.0047265190206833276944674750788548774510124385325967565847376452678674116092263748566730385637647), SC_(480.4184965537028701741496247414199149110188202259944103730020684272396354909598434543329774643861339) }, + { SC_(2691.542724609375), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(416.5349357601709247450444236882137352537031132537401712745582280283529075761162910013623435741570764), SC_(368.2242670914994517922879230367381662576074379825182805950706801491808152344522992118002211114223669), SC_(18055.63457958616423676215550494079126606577640928770494346315546606120652532901561699164672795763294), SC_(18925.53113942826556277160519611531027515394324858004300896656487180698279638448970097319245078156746) }, + { SC_(2693.811767578125), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(4720.686264562995907699326934413627665184054906884118530030120468465122750196814815242686141593580684), SC_(4548.138294053761031294353409181548364393815949760088856724418860431056762065647910922659336394035828), SC_(1527.996669636697964339342434489555204367762592045848604275602144980633643225787955847374212069540215), SC_(1604.466713457626912613430534229819716118571671510989763158396731016189675078566092108053038362833346) }, + { SC_(2760.340576171875), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(12336.18536593846975649823219930178435851703880253544227417507381657911372985841379837860123018638965), SC_(11942.79067939964307164819525377058315446521038652052686778175749482940254626394011379419558283929346), SC_(606.7265531659415595281054726093236175086846302089655296967083498712439722973629284056307556162212444), SC_(649.3788932623859260984260027275065674963909800157577955813759353310805326694996981060328185774451608) }, + { SC_(2795.807373046875), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(88859.97170004038285534582609522655488079883583344358853734887471886648169145080171561670440208821863), SC_(85180.34851931669382430340367676805151961053937900501103254758951717609348571408452169275275289820399), SC_(79.77416085411405739066968594179471220322427130133072339803192488428703133288089870427848763738794578), SC_(100.9551592374177221903206172156992203170780017402001112451595288776430698946245322161879812147221076) }, + { SC_(2829.697509765625), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(12192.6140703942231784167097041691793727534349062374595044291190274202478592276618938412768572519238), SC_(12697.58028624137573263264289487727258108186975509770005834957913474559334744673410385237390985021871), SC_(671.2845928867268565245933580850459473282799537226101261565427507093861736415738877630866730109435594), SC_(616.5358088306068174219300403352158696551842831950857541518065108158320293990995721200903259223649671) }, + { SC_(2835.7451171875), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(5005.807502837797939987040770585195884503841621539816173436913215808506936332431768797921549897800399), SC_(4752.276817905799078368394742051379301470825092759586604423117320920914741146981659969203839331143166), SC_(1592.779525463234202402688950856942300328458013489378130339268088929632987720032668836638716692895865), SC_(1705.13936548282982185200142219879908015234901018097458667747721751610682523654263200207522747516752) }, + { SC_(2883.697021484375), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(398.9155588508555198812059964470485956749777166368291607253855213117565878069402993313946710683643522), SC_(441.6372547562010593011384265067682838539616817776291923923095073419606746941569099315675356833076503), SC_(20194.33253111993539506429959784496596672339172513763501988205945661919546484118093688558874235662173), SC_(19425.08571573793236299728741506211673519126187088776421549507489295847926781824108933679748256855208) }, + { SC_(2898.87353515625), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(28474.99125550603017031478937559673803720612164426238858361922452474675331452064095530452676375324054), SC_(27277.77960012643484427690528243495559996317597689358411412133125464063540708059358265557145000144428), SC_(281.937841209606823774468124127753699918567678653923926065466477059541573349758647303814089745092726), SC_(322.0827410580158991338761623459570631845036302995265325173166524501770034914588483094392848102645349) }, + { SC_(2933.500732421875), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(13032.63527477788347524237290787787375875548213590162760467269042628091117199072913196037927326576124), SC_(12768.30816513223669333687338228910197154932694472567845671248782589177562409333509100645230387396191), SC_(653.0144294126801281868524046287907549743330370864338589473924509755329150007061371073748963499362277), SC_(681.6733439485398777987129207666541176796108749020948238661730633523235849658383334476926492510569853) }, + { SC_(2962.476806640625), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(27766.44318321441906320933480150171594409202488289733881325297026661055543533480083957074880521020287), SC_(29213.02898818093720787777179681513317739803388581279856528885779209983606189564069974199579494772038), SC_(332.9822527064490053871363197512536686954724745778561170967378439831980478469699738484864165087485209), SC_(284.4762292406444127594186605544730418450246183901626857694724936541582747641192127907352615975518456) }, + { SC_(3040.435546875), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(95497.12235066088857300395644467523627547514888925997449660293877627875224715531696770910223820708586), SC_(93750.69657043990476643040436600600559064993676594082672425301369815882728473773358606680663589170241), SC_(93.02660504715751094225505405082108140491690427053511133331253396709855100310294953925251302080454643), SC_(103.0812709605640751212429171902146022212077077370061432507698235133165137311364714948295625901596267) }, + { SC_(3064.19140625), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(840.3917162999570696351166831935200889379505268428070146967590088599188294896626902277910307856719428), SC_(900.239622180410458724659461109015245500305792593525279015801354863257555020060135211536678115402996), SC_(10991.98865092433797140234230771111482149326337082741759666260236062258012639567232083981645616495512), SC_(10596.2960167699992587039285783001832184224091403817646040506133825064334347671383946673386365706328) }, + { SC_(3072.20849609375), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(15901.20212130464605548509345591754107121408003920018671989293918191750395303846028900770408732764017), SC_(15201.04476836399283987279797869037796193137432747667064520666091459632414149923382304023043835630544), SC_(576.8016099928482434015923794574792676057307250217350204020320224686346603276643862075150086932035671), SC_(638.2833479056123752217683132590462117693782719447600091356476096948062264838807672757652907463036956) }, + { SC_(3108.171142578125), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(5124.523443419883586922336843525470786723621155157916068606324714796386249405109898940309672012048917), SC_(5574.233015020495193381201339364284913636617279746644407399791757018811216235619060130950457241622008), SC_(1907.784235887149222730130639007528194462984436378834955972415168440475769840624399990773170095060619), SC_(1708.483276005997693498631806198228543992087035029022674603846496923186234601066182704988655931861384) }, + { SC_(3108.571044921875), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(13578.31886970092281219476168254326036125422292893640969976098935604926296097866349676995072542567875), SC_(13762.05666321979661906717366278841474570547550747325209080280501363722190875045901574212009667591983), SC_(717.0793180192847766386947262123911265393244041527617453755697300157705212439060246384848785208558591), SC_(697.1579854064259190912257553911239468120329786466596941260451547688157279690986636881663369099421847) }, + { SC_(3115.6826171875), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(467.7792809092810002842071337674623360103684805918406236739107287920003904026855039863973122855659549), SC_(510.3548450370784789968739515208412749339102806388434642036552591786579897093203673914085291239930861), SC_(20210.37059804908186355029886532967756834169998749957780501161875997529235767724717382969309681612137), SC_(19524.76261577142309001384044745293230501233538127031523847036532628175963856171907569956816928694329) }, + { SC_(3123.457275390625), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(925.7420188905863974601328603986732891817340322556946164393312437145253625380252879901881194483754819), SC_(848.7987819590366047136353853152014431269029820856314633980589988654129125158454723710850245193063488), SC_(10749.21861621273317687909589030056899097278302504650225347742543214012239204637306922215470296842614), SC_(11257.94207210566111160783769976104758657959862844324343937840190499797305647724849411780472117391177) }, + { SC_(3125.335693359375), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(1427.434047215684814949043472836788539764045834233226778897383849264081722420154490398841703288450775), SC_(1358.482879778817395345098240542607440697615601652786359633511159125587992168443430449973801464816583), SC_(6898.294995253303845503437370396124143235358013489988412680384289860243673608114862155286873271634382), SC_(7130.119822855911091540576828924772956348567704028619652998339791643994914926988285141796147759253452) }, + { SC_(3394.0947265625), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(486.3513072100110654196406497424250542970213039181852196533871853410749040960767618959475036277875278), SC_(502.4421044695454226447389582970190348391980745284630905760725969730109944494841426600785030145132569), SC_(23458.65697440542895547965320245519786601554871209590846551828252000642927993753796389053116400566587), SC_(23168.93571071351589171187846361203241009962833598469530508971232042540966271611471478056004271962619) }, + { SC_(3408.681884765625), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(104294.2381631042834383156027524668959668440830671043692261716340857490033616797560743118194333208905), SC_(107891.0908766782543744381872962409375233295600333359133866106654342551585917791534738444705552587973), SC_(120.3628809822731259342810525243768950299429774740513831666435294303429077235289153071425505018670674), SC_(99.65588189480128769403311589950289776386348405129120626958208228613055099927388209934763375550382995) }, + { SC_(3443.83447265625), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(1471.134976374060359606351751795741502589045487876209308074202957884979488201950379290899949891929506), SC_(1599.412413217180274564260992152815670428437526794922769204283072723165192618105909384967669787554093), SC_(7945.805427369155482204204744902926473460410311429017703288511318901427908867638449841859426571476539), SC_(7514.513750545199233241251691121139200779745671353180403093349535963110400248744927671295546824332682) }, + { SC_(3454.9765625), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(32690.62462673566027943521478305762700414466786486291460075294314144288042650718500173830637005417623), SC_(33754.20953191077076485449072955759266927029019747389688481931591736586193529353266858135835444702825), SC_(377.5924436560152478524206451414965046380416365849343046743092994940682528436366564594424052907914847), SC_(341.9270374467629768847714188086251371616944391369732643023640985269746387026405167725178007442060052) }, + { SC_(3524.479736328125), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(1040.528617740045531981643363952666578960157673340359222339764012502716631544870200347444714404612819), SC_(961.6512664615008181643001348018417537078578399860042005732102706443662195971763220237926226254375236), SC_(12155.34645323483563531419504857640819712677629677742624185765582278967918040757714680374079342649746), SC_(12676.85481302594916147439799059684765225094977371149289142847227318119338703964371187329129926722719) }, + { SC_(3533.453125), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(567.1420217370540532728094947365485319512100999027333644509719721334283497584994799766888219557476808), SC_(541.7827596092501995011977456012118510279559972712754779498808733814010390984677495283028737631155622), SC_(22326.08665262487227381866574858167657775353192232625421181516312628985892524642264672465911575344943), SC_(22734.4468265125877956584626142631176904557178612493713985267399289809753873374288150912675530333736) }, + { SC_(3538.008056640625), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(470.7893569248683810683283073800024803399349932831827653374337557755617459009014306128464016161492464), SC_(561.3508966130831583355575274308616771262527113625594577277720970731675067339949081619464187215958633), SC_(25126.01702814302565762205568285627297951981181132739006401886062081139478773685158184353110750476763), SC_(23495.29472981044843248082723610512899462964330374840585370286223395180121351417611445794903952172573) }, + { SC_(3550.83642578125), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(17859.88977164279366128002228702638528636283002177003001554127094231455598055550596817981149785681812), SC_(18083.1364485607118300057279491941203376228922354672034575844589805485665904128659846515075691488453), SC_(711.6307160752809156686439325440165380056894177654574189445556838970559565314310863656918477694114672), SC_(692.0265848379957916202035753593691916585508387383523031496958862124397587246669756924929483975891123) }, + { SC_(3554.123046875), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(577.2888621899850162541987754154628928239639501061335632913702496067591540211577018689724819498740238), SC_(538.2676951767989907921220347627573780162921683155764874998817722206409135428196725474717154830029636), SC_(22348.66837895792819198574419777237466727297934894965173204074812586917255226976952832072969190199003), SC_(22977.03060049387543045010712867669621071000865470703251818224839972212547369335901376419602562637665) }, + { SC_(3617.78271484375), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(1055.316500776711420492883783407991447378021393231771359654998014770703759503117277264900913870607265), SC_(999.5130730402271361854430643098935414652314485275539252930754752366279557545499588403278487384297889), SC_(12559.46263278724829574952845682425395725578573217445827443649863228418181709985585833194772917211184), SC_(12928.41192120285109354431411872383704559780757972961694327962908566899948268399713197732102573041699) }, + { SC_(3671.330810546875), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(38486.34036561348154337883616958585515577838467628391415942353397516923181127408778283596477118027461), SC_(38938.54151532175652641667403554097149057612414954910381919925571088683906119102044951930455959316067), SC_(355.0757254040590212407553928629750323619962305415193842805449587519271266704742497351099184694221307), SC_(341.8715501171483852124281168183388699212990186957760996821444319645541583106604510273968682848165652) }, + { SC_(3687.232666015625), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(35245.95959019947754660117212891885673461545130053172235085514924017694044953943516530738718510307152), SC_(35660.92405761113949947966983760780157053717773045399615981123319844457179259331190482206727773341085), SC_(390.7324681263452413618751402019992896730581684480968081616905063182600054985063840135908620928651867), SC_(376.8169816648394888820677773282606040373105224747952769793200780184940110426796816670954960385694568) }, + { SC_(3701.328369140625), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(116675.4985654682379568023690078299574253490384023697373659051628866370053269332595325814972171541324), SC_(113719.0809665258278662739098460057142003408508636004179990878411139221112476172367868776373540115931), SC_(110.8376553266589551615729901506388872483458560825132528554970018754162735871713483224525207135371132), SC_(127.8588624190566771064551924704664623495371757032506442715883216861375038583817343913210414119329308) }, + { SC_(3704.4892578125), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(36324.5884854703078715857955642606729169804749353204997472155975128465373624979640009411249288535912), SC_(34922.1672457882447906872392610054454603244746489346066766850572217274325538217030698642066004629152), SC_(362.2945303555000527507069519908386054799049642473899066573217381150677209803024347257666013152891042), SC_(409.3217475060679417908875547825552458590574822406236860087477007826429631431352832244058329730771046) }, + { SC_(3725.08544921875), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(1596.128116009816580933771843485511513749051883336084047853776855011664551335540224637205261081668959), SC_(1724.980394931751343656736059254946050478696653728227537319710981452285951368878678178562648265253685), SC_(8577.859028083824611963944562471368432310608212950993024453657322253636731391678502233486659657295688), SC_(8144.635634124177865451253864526094457632965249621894331850025085860140289796529005206642903515316198) }, + { SC_(3731.865966796875), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(1619.380438553609204745746743692823943241501512883487941669355391132068631253597908381986368876690399), SC_(1707.185475270520436049813762021486700483560135388533103227751638637100408450496536501813241467654567), SC_(8523.222615594906809246026178056249320611084827840535230898825839347464891864443947049877187756760203), SC_(8228.00852311530211841289085331673616162245227235542797778847280291349274638348039732268508995315419) }, + { SC_(3780.56201171875), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(35748.51751538208303407763227965357083411010376745539901241868065019142246244654274693348474315410464), SC_(36958.87989233572022934115263729018154526910185727724434462456708791768741204340084292391698034704998), SC_(413.9423130978068912641788302622277627316690160978248395885023931987713772946140923754426907894773154), SC_(373.3548377176385781580195040093271383107220959649477042758295806239296750187117956849330799736742633) }, + { SC_(3783.79736328125), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(517.2950608437267295862186447900332232310683225598674463389095680299206065384736651691491685523745017), SC_(585.7075698320949727907423758652126859529444217848514357778031122744278011124099277135977527011899013), SC_(26611.0212782695323708137093896124630960951155497717899784989800723823249123382075476895219764134891), SC_(25379.18604498029331330144854861743950033308224740982723759583749916783644585345269772269450252958977) }, + { SC_(3792.58740234375), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(6591.128003457674785039028718343512882142704242680304745925482055957693868366686877737934010311728157), SC_(6457.682822888634305625261886104928985376465664602028881653504583004078959332451273344503319196847181), SC_(2175.243549470730468169184888528086973393535383455401734148923154840478636256808683161320984013365293), SC_(2234.384230022114987704180026912677050571521012973610074065118738421565384709912519750590120566041921) }, + { SC_(3799.551513671875), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(626.3581615561903982332854508757282555551739592598592131520533985404268691715888547769618003496649305), SC_(566.4868865613071606100793572064124254151046944541145943485462822345281117351522205096949614148487984), SC_(23747.4183181848367193890498061860447345610325872862731141954761865206504813433460496670950697027453), SC_(24711.54245716296738127343450568866735819621025937194455238632153563030689219404357536464538588704505) }, + { SC_(3847.523193359375), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(117179.7643742660319631897893015759799513350972554159096580517762016456355709892376007204024781277128), SC_(122339.2522881899764090905886800191168969965409812988148500612196649305865258406370989389919787007711), SC_(139.0985657761886544820520132834950359760837685621612587894425764988707901979909535629414299642095902), SC_(109.3968271900495611689921513946180158235425902367218298839989885700871296768602940917074493987800168) }, + { SC_(3873.435791015625), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(1049.153290779399775473643622471935308621524866763161344930765694393508944308535790377217910767421777), SC_(1151.487396364904972576613411090428062728209579036335838927382242781272274649542495874093394921575647), SC_(13984.49391745635445079123109276753165786129331416576508739374170115610900121490390296154615550000091), SC_(13307.8959057568197153741546838092876067765025165161793786687469813561628792905858735409004270205172) }, + { SC_(3897.815673828125), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(1057.635678289890236370688560025288936049150529009310666293441530515324781753094624541450152923421224), SC_(1156.781860734214828108580865863484445170104757911845339330790165224436474885188562137241272406117424), SC_(14059.66805891109961994147000770126941000746325052088125050486393759894659847450327116054019901663459), SC_(13404.14843492921641133674085711218787826073676186776753765554577847859729782597028758279000339469037) }, + { SC_(3899.623779296875), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(19284.9556146596597041664657759291090651918419149642212220181308516691346596197331184157305268574004), SC_(20194.85442592516839847783106368289840817566404686281388477017589106918846225964450766737448980091817), SC_(811.0638678400973907420038288321430390658261018350949045263122522590758367431078767906814437072719702), SC_(731.1639099035747503252329195750147869995039527931765905957167404397504604695150567828505526549366348) }, + { SC_(3994.020751953125), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(548.1348168205265672106061742773811076754607241000101431961460371021076233126395175479630142181866871), SC_(616.0197009585751482564788531717984528469681184148996933852821416385909355336641618074246866871523364), SC_(28050.07391481178782764873591685125806242743170478662543410246009134269721563197931096160600466213568), SC_(26827.74770371970395314731888911706957882376520210493174459976680865166983961526991055397580426007734) }, + { SC_(3994.4365234375), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(1805.509306560469768728344213701524858944126718612004385405827674704054631304370874261709404256528734), SC_(1754.701664163835064099285236572450196253325089580727137545790375093280455816039983662440064844649044), SC_(8878.978166452342529126429041088080824010868057625304663194878380108169500394022484243863110194219254), SC_(9049.800676983262530946299567793152952881284643314939629074820047639487574450497043229345401204540519) }, + { SC_(4025.12646484375), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(20548.39861337284453407887355524345514599178945423057366661339379140903847654375993951170224959618488), SC_(20196.39739066332879974801256339508147540503742769107654074459112572750247869559983883202286049506747), SC_(780.1100086953790788332083601157626867329489004218554405344868255935055645683308703731749410100255388), SC_(811.0206263935392715961519254946080508566851898793621448087802955847171107967000798122804140289692535) }, + { SC_(4105.81494140625), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(611.1376839762589380156240717394528043530475483492573023049059231285328959306733738356977125025353828), SC_(584.928459493257936570339799540139002584618215124108022681798371890897249612469795388319854163073643), SC_(27967.28632381957970983965345852551206717772698455216508483548200202242779536807913407960064404290943), SC_(28439.19101335974411077099367119712969975108397314449505081169457951881553087371528492529387682797113) }, + { SC_(4115.20849609375), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(7238.436014348527728690689591975510215507536509472122633119039083565980878341243021553391480627093991), SC_(6921.95062465115233070830484576092663970812726014417726765794399639667088726561624921400934600830195), SC_(2322.597447968572967827613327519553806585659549546053841572218848280179773471988000429251114656933562), SC_(2462.858144032493441774340528824858247424702639021223457795031918462454413151796870762543612077697068) }, + { SC_(4122.0791015625), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(130615.2618960837098676362999128085950224825335337889675339296819625267872096704399962801812318762953), SC_(125985.393450960210576575174259083205967520434528827653206555808057585055438306650166444004056158834), SC_(119.6653057335890988199371065462335558582725789402235513367132624850418756921738153852844822730649573), SC_(146.3200609628370262774357052990418319636252605289653389654945178372665254857480868771805479462789068) }, + { SC_(4160.4072265625), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(42939.74039416990204733955679980583612886369079041472152103477488602271698069599292229570940474144093), SC_(44811.93162084253259874748771393025162117202620212300496586514148717534457835099737951467246722739903), SC_(422.5053989034261616523687823448606250046495208383606440250830047414795176323405399867291497087677334), SC_(367.8401705111568846969880012774115395896906947231268149747057464325516852776295724622620369407351186) }, + { SC_(4279.9248046875), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(1177.003701411724031928643035642102028143454719227840869738769843578108977701658807829124854440945531), SC_(1253.953137356027552100698083630968705042176670986473720680972758101950995480094768046783197535548306), SC_(15331.25580220269089474174538365248755653503220750001102041774100418337007008454584819123335656397892), SC_(14822.49832257971428733248291587210481590371055397298641903533418490866035657389758248806150354494282) }, + { SC_(4377.56884765625), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(45451.79991602598577620629492239849816403320166787782488631990429599232608226093715137996541294838298), SC_(46874.18021025042409970195903596027790532349008360222265620889683337608403564757015540939587893389346), SC_(436.3774751061069579052143713087591829646375377065546844133450923321894736000692320185439069917872725), SC_(394.8448252090620394600807316787647076551875318680628059403508009603960360847132646729182893816608804) }, + { SC_(4501.486328125), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(19353.72267371161712724758273129503161688018886611399194997356077863438124900705435409241548379950984), SC_(20244.09412004358315313049857677874062148281412929526359097085531310874529932207447008466482787632029), SC_(1072.532441666411919597908283810337722866768246734322368248341963544101768250716329254089323582390704), SC_(975.9968775588556510460239980772617805219263617688692762593600669471426444036916859278360131412268257) }, + { SC_(4617.8994140625), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(43133.86563439555660896800494162340004560140758019923468291657990203995231556354343362283634199235651), SC_(45694.01918705688739309366936051892728156387223239492200805819623254633896829993155583847417774799562), SC_(524.1593659363923016125825894323536225251052816884700112786088811222609254504971758246461167896411048), SC_(438.313125518836992212244267977177904455244655199778888360512445362550362641287464466472800334432326) }, + { SC_(4673.10595703125), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(49654.71187793647676835505017350987372396477722562385100495629752213190276183425908804795790802984954), SC_(48899.16835166006538905026806898127923167425927112811617458398625144174467495371619097655070561461531), SC_(432.4672361447782733301830010010152212610965728882546193756522847452673074274997850501568842962242562), SC_(454.5292196435087442194571851204533925789504567647107869224710289657292836878329486124050748040222451) }, + { SC_(4740.85693359375), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(50830.96118306032964341131063579476729561975311176162642744531957888207700399058537456206628736272282), SC_(49158.89495727885771500695373963230065415530366932147103287808049672673050946374112595470618096690048), SC_(425.701757659897624976504849800962478293760613541218580389772557163825501248586635847497625617348295), SC_(474.5250621098279520427799486174726222222231168844975158114875508798554012661003104249233501987196276) }, + { SC_(4774.490234375), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(24460.04983246749566552424597092125106517403103886011932455512766696049882641571246197198713148426293), SC_(23871.85555236169930486859155100357809948207649120966168297150063097777054192244586026842645824508876), SC_(917.8693695746874588592339606088059552796204276385664247663713421868018768244212488458694261792936648), SC_(969.5210821099651807777912505742770645308917490681493055448393893289074327753351321727240397129332722) }, + { SC_(4830.77587890625), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(24076.46687662299964757490203978797019320418615871028717099948249970994514207074156420892331847811987), SC_(24826.55066694999042427632052160605174770735404266584940293204498669307714377810377293633362789243444), SC_(987.8327122675237180177598883052250742826614288200016574158362140703840975750605171645040849748476376), SC_(921.9650895186372218318899239705403103261700810862330249962773488380138715679403246771909334294077389) }, + { SC_(4874.59765625), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(2236.513200095954724571758998073419864698701490915767515125324274128068622216234166832142682097783827), SC_(2108.724032745424936662269357905554783819540344963952333535246116621368826670862176067438822901947478), SC_(10725.84126177431473132144924388731300048245391375048141046025978206516003580843616788950184907461091), SC_(11155.48755407666234924088410820412889448408214066657950652719097251129441168872646028543923061445426) }, + { SC_(4879.3486328125), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(25123.61850809423258770583310759051185679893893844806983609173407745019818152736552912419140308361677), SC_(24272.07484677989906703834958880502415234165816083022552071282370866380443331756986413381319771460055), SC_(927.167785124727006224532321105570357746941522089646642687167194333342224572921878066737371582020735), SC_(1001.944765627370547703968047236791630023122557107036406172184132076463216504973977428814822615486715) }, + { SC_(4899.017578125), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(688.0262109883990873496278990354407399319562764165705666858739602839382980583458774589398054870515937), SC_(739.2143359917528749336721174702127029734500396065007311700792267259246889257168676971142983671081382), SC_(34114.26609907617757023606563472974608211000565213623927927041995983458918489211392593495473960362763), SC_(33192.60722642155533639060907071105723096421355515909831910882650086142828793028445544485103692162167) }, + { SC_(4937.810546875), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(149569.6734316671685382839624019062207950068379777018179856855774050861951838184453066762175322014601), SC_(157854.9288664658972066983425931870500521762009857332079081347997211276640455917021527088223717812945), SC_(183.4343964890392210873115327971468024747680266258967172920739333113091618042779834096396757353620414), SC_(135.7413149593243264610018230549835721860577818947780473688424757841595851994009547106297407173928447) }, + { SC_(4978.021484375), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(1434.805576831681872452836742678239146190096210422112715547292555222890340110428849969568262305384355), SC_(1392.139908415175775957307276808206939545749318805954573246638355498619133495160220858780290976673759), SC_(17394.01075359417170652277120025637470951877966379945091844919246487987684333028695817472219714629556), SC_(17676.09581614330822864954072979806587098482897253976723791920703972967019748623879020046757872346336) }, + { SC_(10046.0419921875), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(1494.292352586634304941583404504613290889728157025276845524145442563137640794021004281337942735925888), SC_(1431.389049873478982013802026654409672314190046158357071155786584300523865686252416751725877318008587), SC_(68443.72182098357578397110141346311072724811203318596677034853345661249508916126083888932441832878295), SC_(69576.2867717511622976438372554257219762698791823158257174961530417172745788822623162553931066366201) }, + { SC_(10120.048828125), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(1419.826288757160867166597782956809997622614224890344430533852949941290015000887364073662196283263872), SC_(1527.892345728858408258654830982694696718266930636111982725884451702228609829366760516488232067079004), SC_(70494.05381489395439178977988125289404935975894418648376405566253427011326629649796155192766409849381), SC_(68548.32205061363518064614600565208488234709287936147818638572047446573504289488581163673186045061556) }, + { SC_(10332.970703125), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(52581.7228910022511056348313181218445765554714383960374366477447593154152110901231890867244792806336), SC_(52017.72247789648702231900532061843219751736818356087704391539819797287153988062406069200029712526942), SC_(2017.034703810037533650560661649260329378397951712861354169140992499675177133211875329868437555119822), SC_(2066.562791574679717039193616201427291164270075272701388135904110417459603284490539932849952380919705) }, + { SC_(10447.703125), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(326788.3878574515940063031175567968708852593448623607447712370951361733517698665420760798064495835743), SC_(323550.8740075619464751478473537640147113853026960332979094582656208163084428802327715272557797640873), SC_(326.722550112099030652288237953751760511719927700637124875226877714628972701147545875981861005314904), SC_(345.3659003635556880858422531752683088776284134319765086814689231551164959057981848189496413085073596) }, + { SC_(10595.6689453125), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(18339.40319258272686535691833933449237514660113205861116729168815000742777096825596470058838603169034), SC_(18116.34737201608225117923522133441891030865963201522677980937188263850788134745770623112636619302065), SC_(6109.933080363848563780428214773126754319644057473669315901095982036797452088099920931192400729106733), SC_(6208.788160604477690353261524716771414133526713936566883123179201493366502669049888384892949305488414) }, + { SC_(11038.3544921875), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(55107.33810844249078971178082138239056812188272045335334453835675328880823146666225646756382507540298), SC_(56638.23018900094786813471344295850434515631945667148235044782610852931975491141027271146649062619356), SC_(2248.722274929615376093568789974370234312592293212432798699136194046171878360394989021009281316622639), SC_(2114.286865009130019564786476501404560107266425180811459271007432364767535961933183284840296979485885) }, + { SC_(11430.5087890625), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(1731.2377483782604039147592677389050078168265007204530215662964480189490590222260971118320194367279), SC_(1855.268104533124512633314372252914321013209202973774761237771017527141400746597979057062516706557016), SC_(73889.06496726901219736525422793929843490487131305813046756272832698849627473834248488681378098405066), SC_(71891.84982323727201427419210809464141905496634682526306998642341787105055057058582392075853188896575) }, + { SC_(12749.54296875), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(132811.9148157434074170854795972345346011292727857654121047219965087062987465727841341894393980805942), SC_(136089.3938163978649395027422317817244732297392431752605475057971562104498458311191054606874352093025), SC_(1257.526115877530435475789021286890488612526208921978966454039529312879441966119426248230578163485371), SC_(1161.820829227161231014760042100616578216350795800294826956687964585629822058071741601556976924608078) }, + { SC_(12770.5009765625), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(394270.924352706367795337795315668515250333763427650841185039313472899201763105561445480112334076579), SC_(400670.684017550468096661290376304531429654250140740437211078807535462951525002285241697280958050824), SC_(429.1984194187851625129130468429111054838489999802700678251799353946647710905321109089452580387274398), SC_(392.3452164236406230463508607562054959767197369797638280199591075243961053368820397885836222013011632) }, + { SC_(13448.689453125), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(22670.63030135889001750335444714824625299374628795299072352385515979683082163701868435633646681174309), SC_(23606.10471596922800005827688625402540138028615936333047683786904904684260976433311084016751515006894), SC_(8026.242287298425709638186415102644005289655554545504219543539775236332828089726342274954139649685972), SC_(7611.654677191720715602642165219837200287113295416251360748278700101627694012973976498740109514313899) }, + { SC_(13644.5390625), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(23129.95333194877490668738311635035985053060275864398539163867821558444861511930084752979453079469782), SC_(23818.22921849752671511304900574499638332879662171848998817328889810058400193733691902105322243467175), SC_(8084.725790586895776194819373809813811781703559204864040882316239734432990581942579445566338253730034), SC_(7779.692234867518923316356056699266965110066596099221321908888589377536963150147838426518809218114878) }, + { SC_(14443.1748046875), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(137796.0922684243240711890240363287316848119280625892326623230837625988488632355652040662478495663364), SC_(139970.782721626646643286514791822228514557433768899838600415112870738837600064126878825240202035135), SC_(1538.940284705955545449786028593198703080713460952768701780059977701934095563227161147304094322257209), SC_(1466.010522465509760773739365370837759726045304118743923504236857073013733348418073630136610279737928) }, + { SC_(14775.849609375), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(141664.7156289821921088737006904193578433733474553677694014964667542910381216533605473710606713407568), SC_(142495.4339771319055401056188131494732410623491386141454954568470097657543462833563563980885916281753), SC_(1550.862872576647243139640104085034305713593086259208539426272591132869515025441460132188259744316638), SC_(1523.003981558589828946816040017848515598353780675616748127680908438196386036359184510273715870176228) }, + { SC_(14970.90625), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(142335.132983349074511862225721484940160868091464591397059774897397614447747984257291485360014539505), SC_(145587.1891565135233257444591873495183648796021280407587560359080151011792410999216953166396310225865), SC_(1612.073242311793752942663874363053367752887790387518968742263389235734143261339219020956133519753655), SC_(1503.013995966044253407524418314501442394897457034969151545173926684955594875393077969151355829277112) }, + { SC_(16108.84765625), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(4498.844806761642063819307907597779035830748079832192452404564574910732910640939236656961820743492948), SC_(4648.138170715701559982689626168198333230652285578055287554008387180033526050840523876147276985694075), SC_(57238.91482581621456814820965706587476576635873609095764450263754101765079310111485420715992986094236), SC_(56251.86814824867944418019773187520868252942157846377646336630046328524516001831289894518433990325669) }, + { SC_(17034.9765625), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(4926.345766064106783485243756996049194218006312224697991547113348065606960051895017467132506043433831), SC_(4746.642614936294865975511282653067571302546129688185947630536217657041774661462462239407733229910937), SC_(59414.19023496309376812952790633519245583444093002670850029369632948351012384042317384978461210612199), SC_(60602.29038927773506939889750748022002064711156249881300876600784716592875337154701475152114507349336) }, + { SC_(17546.48046875), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(30088.47297045603260725097965720013399645144392934691468309929255996776564122526018690837552281955441), SC_(30282.30068870999502543855780119334334659249850902381754767481070987224564908740645013563070104713563), SC_(10242.68261443224018921388872150731139940893223159351795062496693628649079100096961944274629678015994), SC_(10156.78090616983499743640580812647677149156826601875483371075028426304979356636740292999496751718698) }, + { SC_(17669.810546875), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(7955.667371412900512805930467590884788655227063429758251261931461710092864067153251337344258361469098), SC_(7791.708097608452526315737693377456774783204659564062608541542141989640674521728963840024856152116131), SC_(39380.24055858404006376759625531522401149539740072723446685277827921172431345747315363885894762626806), SC_(39931.49041165372085478882244770121102645343886727938110482808303892992193842320892095062912748839097) }, + { SC_(18238.22265625), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(189558.4822939888881268410087764627781056701306971113871336250489469538870383584208675071616948021644), SC_(195114.9823343049952880433577334344760361957006182024568270921403277200610882330594323996773996961701), SC_(1811.63397378875311658579768865819224049839506983125602153045664769530101850312575325216941321308559), SC_(1649.37942453676657959930800580637807967895953132711898094592276988760665788414541672926021628597658) }, + { SC_(18357.396484375), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(91896.48199948787110301310502187156546688786590802373758870893499996758194067924580665745520090470442), SC_(93940.60757484442349784180140446911557451626631021099399320618073430323095583296715329144714571849502), SC_(3717.301323058413288037663265972636687273005521020841145368158262829136408080769760116037444012759191), SC_(3537.794935331230886629151295630367339346952290207327080212704845230230021438800786657243651807547198) }, + { SC_(18604.361328125), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(2866.022647176290995391821598132417794943198341795127722470956226765701447252308091848801077923442214), SC_(2970.071199134840646275696648165193003354127141144496311394719394704674055274846139143701202745757207), SC_(119470.683468804915990587597903743415586279458726612860135222208672677071387209972403742788322935346), SC_(117795.2518052123701120084007937141599419419866066286626764617603416813190142483083741143059033686454) }, + { SC_(18625.171875), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(5214.010138940239323688081978992562583452095246676924435583480570832513610445181328736427741947536213), SC_(5361.572020188983690700979417926116239544599578791340592041746066094551027290552138110349700585830616), SC_(66096.9863249108105661468209566804516077809230767744656682555793299622917929490944422486215382474756), SC_(65121.38845647630376344789184908770375990449423811423853775822204100877253644619566244896940530272937) }, + { SC_(19449.22265625), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(188102.9565273540024344640528081633094065659405544525112813948870491606770495139362066201857552876709), SC_(185937.4437250577999981349024118326598545144632239576166047615954826782428934216508190447641001227261), SC_(1986.724596848545149281148532633966171131555009409113818364364130005433946165884648674745415380775948), SC_(2059.347113589551386631170355963994166131162010376232233856751110853847286049418225075875041544221752) }, + { SC_(19713.984375), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(8674.864634768267780933690072175478440543205215569682150239923688178204669894422720571914523708551392), SC_(8894.423441258421407302074610804910485808967896306392500753220470355222820422927312209607128417469898), SC_(44612.95254131689895463286568574997051293254855196397774140778484158338060265304784263180195587424227), SC_(43874.77064939893227385217737728086350234330703842865645913662758507522386331662529390618614912935738) }, + { SC_(19903.40234375), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(3042.932836711340823479819657834625485860428751986658903199484769465186775683394950880451012633789612), SC_(3201.0062646870896803865919808573139354916076610222863865825616672341097263992816072915827584000259), SC_(128191.2692097337612922589348565431324395515535564492033766965129427240669000178259077705803774795109), SC_(125645.9001005432365678010299707974421286458443315117918825839344633159945885466423015426497096808632) }, + { SC_(20257.640625), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(626119.6209727537340065379817162492457975646204363772562424305379112143878984165833807489416714623542), SC_(634888.4512803063536593315052390107089476725255474739728344084041266345892286942580527959050112866557), SC_(676.6028869977859794242901043261238686678391393512046128134515678789862940866733565490450010361425001), SC_(626.1057625575726934936117060101380453016551218793915018894939499888439355602758697908094623364986072) }, + { SC_(20762.462890625), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(36074.23233717695161918957718667506822176416336858438195330067030951624461692274035492446307369194562), SC_(35363.32760568586822807209080110989879266264229055563681787237731188316998975402094731080141608845559), SC_(11912.03842565585159457370477994491682528769832188889038399391356646196192248415327003598802979315497), SC_(12227.10121892405579938761505859011149968591015977868135785510680850558887998736398798492479319700782) }, + { SC_(20906.6796875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(3073.352528738953487510485453080492415099457303974517032277386439109608711400320313794722262333668018), SC_(3014.206053122876637164283887636192130410616606735022160013436275139537310293158373743079919451047349), SC_(143083.0272051111602529776599070949916507917137323448460674645334446072189537734163383308351105257222), SC_(144147.9377468576235522222109663825220732460683601636705493775674067426409598382978099356091230567707) }, + { SC_(21347.755859375), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(9641.74562819818521372933791645227225668727127844833141374962531610337683855064213922109500961971617), SC_(9383.659854506748826394653653799945921584844634971363658619865576122565428850333231870943330741548308), SC_(47476.86062355669366406465293563727845371215212597747352120951990072408933567392581096193759548474286), SC_(48344.57461249197864774391745122702191318613423175168570648608347079925339207337865843091657348607342) }, + { SC_(21499.927734375), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(36678.17650589731154881997024774218212221144294835406349632278754237145789828360963914478460770082572), SC_(37296.21293926051386599879363905756120747766765983526147321351034138617575311994871067251073381216495), SC_(12635.07484607153737001284594301223441015843133967794836350479968561090220973800207478585906941977256), SC_(12361.16987971865465934470975737834498844024117513196643419839993096361274392741788413019049629431352) }, + { SC_(22186.541015625), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(3511.469396303025628220100087480027185836785861343825659797436232543197491143786408079995950884187664), SC_(3447.918906160248426131041966401185822649187906223737177540213314101085878312383210575943208599698802), SC_(140962.2432028715916277517603427461823361022481177176964463476189967593974411846015884805520318454832), SC_(141985.5549385355735320517091791994771691029368906472194167148320408877322214472461768155468182224975) }, + { SC_(22489.205078125), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(691145.4452450571304916685549865193210879608055133570712977722690726246082262765714569256669147182264), SC_(708827.4892535901073237952534168210255858166007457570991041345909354499292795894387015125669294818518), SC_(774.411979655699999766266848811452884153208417998358511002107229524342784930080980951827254216888835), SC_(672.5904506675453981147094980262857504780734226947778894384987914261310902271605589290467767663828811) }, + { SC_(22898.87109375), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(3641.006097446102460914754066333917081994870700277896020199867131637883570591976418667187771978034571), SC_(3541.950300939567705200122745252228780231426385573355586777089385747062498140481980862664580974080428), SC_(145219.4191622905609553161418641721329952556456190733403759585539263076891844618988098883213582041134), SC_(146814.4509096603176712694522672941378048422913292005478399366889617578690435774394465238678226798732) }, + { SC_(23129.458984375), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(223177.3051387342092379977672546016574536627010555071770007070076966586598700202509370741637612153555), SC_(221638.1089559473981010777353764872788805787871132907235012093170703052462167163374107295681042835256), SC_(2379.883657084782183523718616671002596475348207166556558955951519332376091705945982917719472466696153), SC_(2431.502278304372294039957246081777930616477404766210427550536559856448187549206316115219476488774874) }, + { SC_(23279.08984375), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(10212.36616665014266796723526526146562804977695481157264073767076724826042119923984877696493967739162), SC_(10534.49469953140586903029765567682183050204231004051268994211690258780527657742191353852651258589243), SC_(52787.13465099657055373660417051475320013188079098063353513569964064986765092932611219613227352742375), SC_(51704.10134708071027035792810393589444379175173581530598945025787667614400103881923006777176277418831) }, + { SC_(23644.984375), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(6586.671648324599474019367932863148685032075300372336430522805520828392866142910471622439887700440606), SC_(6839.525110243550415420036720743037475419322901548359483648257629373338918315611125682377706767352352), SC_(84129.23400240355022415360987755455422095810889695630975077874331726250285329151954781800233059000899), SC_(82457.50542246634742949124358709247743120369085180849512216932957026269042043710144035725828491574377) }, + { SC_(23722.47265625), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(731946.7070286633048947588268280741355086074995354970734140548661736569159571461530418303833868754573), SC_(744758.4967592552116033731653521396657337196339916566563225030622237882843884709610142516929829066642), SC_(799.704921323424220298972417542238468754113306810811560198778780284708279831763751616461344365832345), SC_(725.9259397852731689341229271225841631691939394302352225061413624505817433516425050241122010711132216) }, + { SC_(24008.72265625), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(251513.363564897533453795957415453371128430665846048998415974157088791282307685014021099964302605657), SC_(254844.5383779384729162068342083375769857719755186544413890767846991671370251536441155126538507272615), SC_(2325.855113113466242874894509252209920667183361985711720042349968657651175251588306904337367684382764), SC_(2228.579654488494400271496572109420030631590209194920462839958754684846920042854893519879766408876644) }, + { SC_(26300.078125), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(7515.447776669122578424009806597323326727148649799516524042019467069350995939059152968385511414285836), SC_(7417.375103322493005285526198812792326148602615762679817843685715219508772493923466416758142940307453), SC_(92319.84083765308597258538665730283437435822331938861428845928722974841952488583084516131449537441345), SC_(92968.24176084130095515244996823927740927526296140929947540623572289823512693884511892025607712941056) }, + { SC_(26646.341796875), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(835237.2419146386106276368258173164044644185021132716316195211620398774697976667733884192463392705904), SC_(823465.4278969709168683987208911552327917535055836670867769181712283413382383493681795188806928359747), SC_(822.7854745792962971101306702445873306700472265863240307503617249145759765866685482782638372008703838), SC_(890.5765180079745642545573871117240674711995700795652846560227403839676384449988828822103414575940857) }, + { SC_(26973.962890625), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(3861.821090498237702170654742591404414997767899172913147487715360623077539214928066915531800453324458), SC_(3992.498845562353688711000420749761142174440052775252985518578042284843749535245526829702276948819003), SC_(186472.3340453493748522213371715056996854355565181107609646725732776292740275872399003627056820266065), SC_(184119.5287952278395889200776958342997712362616575631439735165992934948958620714780239208031202129345) }, + { SC_(27029.15234375), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(118091.1104000621337072846690774638230735069987401372795948495853249796973924723508365456515293883863), SC_(119651.855082247779654969890558203157561148401144982238136613195407696664429239626997795219455812968), SC_(6231.045409015172925178035881377779287925695684999438764809559753093572885911595249706021094482489677), SC_(6061.820637072098041440523357168283620957822242503827921699414758928035697973571633813819683168996224) }, + { SC_(27337.189453125), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(856605.8428133950133125663245669908399151303627804356100997346673522448354425763942959863915424586345), SC_(845099.1879733139813067241800633557803883895153452726087136324401575759116073653230659612255528546483), SC_(845.7294712322744291974052875299347760979872638227445990319861351732817528490086209473879834802596491), SC_(911.9937043396315339960263667630649991015060890350419555594303365867040725645310938778057787394283412) }, + { SC_(27856.95703125), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(3929.168429593636240577782419535130627065916902014647007732620466835788767141737840740253442433104176), SC_(4183.31872304042130685306639119250649061279674069821899421921712029951485247528755106316942289270075), SC_(193655.7574167702815996984759287864539132002179546569246844483969542065898479063888308601550925189075), SC_(189079.8410543769399413237397721252991030105128129134516261182154870979970926681494283552800408485574) }, + { SC_(28005.509765625), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(266997.8692861986707027808762437294172318830381568114330094189778180038603751676817917827549685014712), SC_(271603.2441679815093918385445340819837579928115140343382662887682474490636415743566486262309234534239), SC_(2990.322647893525545565881525417259752378072435106252798448194338008720528329567097942405361893526147), SC_(2835.877135816976343305526565639631084130218485913062919044518506695004522365673711270815648255856422) }, + { SC_(28349.017578125), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(301068.3597190425486602922839037949435639580812700210875109784005601033986046315244362259863218462538), SC_(296831.3558960247457510114105775599836384489869066566000952424401067854695805539368093922670521910457), SC_(2627.010054970647463500724618619524308791792248682320665638334274265114073590884309228042826597518283), SC_(2750.737228187984999509902705436527546534220573775651314561549479262260953147125049463204397596695794) }, + { SC_(28436.65625), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(4046.499368597435984764498988975904267094161295668589617043739684769071486002415721502740379935117694), SC_(4234.066617994396608648719944029835644470515741736624032609900781602209602488855897522246447958501901), SC_(197034.5588954061010696656162926930378844288897445321427901699773658454966445258281194450075636865283), SC_(193657.4717236277873728079424001689855229159279292641363552024891531080024693937096961017370200413377) }, + { SC_(28497.966796875), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(4125.518692860784065878503845559119383815234296856921710899878932412642855251041986135393778157969018), SC_(4172.148530378460810922840020215063849459123377652375426938190474365218419839903903601895777148215613), SC_(196182.6835726074189950382390220922829683796734711360073588465254833446343608639382906926848240512647), SC_(195343.132829009391621859551106171085047662187623149905875753477521942176972166119385925599833134947) }, + { SC_(28760.623046875), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(4125.199712465956807676513869661795780864831571287790955683096454501444593207377699396978290185852782), SC_(4249.234550654099231233230832875521842715201953025193180057833236676226339973620450122321873121496657), SC_(198685.4938656575736198063967573040756568461427807656479693227881982667501963528808579085581133359404), SC_(196452.2941155723226773645084651985871126112360726169629929891106632942082449676429870808613584745146) }, + { SC_(28854.287109375), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(4455.018175802635931513713983069502438425351484272548651515124558927753271854717937859294802534076247), SC_(4595.986720117879577651081998365487101862445603016477118913024997378140600036904759489976050015649944), SC_(185128.1371134684265041712316561821324991525653105943096968607194187373223126201333909395018851825485), SC_(182858.213249074741815211138057531102376245121607290234469518546280007775817448672436201787879408207) }, + { SC_(28939.439453125), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(8180.907899846691347554093412291711649054081312520799493701695183926713301505196744714588731475454666), SC_(8250.375679848654153253012139955301170563365682890758255650549433829798749783107776015882577448351285), SC_(102170.9022261534758473800809280173167273252557137042544770603079575099000460565329010819111985090868), SC_(101711.6208570509774691718220852095856285777598413055589775175471391083321171432855192103234560131089) }, + { SC_(29454.84375), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(8476.262864964687159977632931606787057180404945629659792811769674628927254087603163549944410842304361), SC_(8248.22136683914438415955549014853742371132212517152172142777314374343078177060114250508466805696382), SC_(103004.4518187763410764549333807384788509604545439053408680449832955060016580596296657632694122137597), SC_(104512.1342536051326202341395322369581938028145840057002798686213456276403648151227704840824325610566) }, + { SC_(31329.1796875), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(332525.3908956773549323520259886747978271363378370499123505201266187484464375842673852717308976037037), SC_(328226.9387907561576819033686416134076193352472728743567636548698322732269327281565948362336142030601), SC_(2908.701363494035049126774603662167084208288464975188556480706234997278158158570582924426038136926556), SC_(3034.223156767790437869824617912700639002709403060221237614879250289563126501666902479866938897469011) }, + { SC_(31610.083984375), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(8833.029670851400523420352754020464117502140293845969559143687909380703228568593521371138077789571939), SC_(9115.391739827679289430328318246229279231392748925436255925132756999340292425595560318233213009402975), SC_(112284.439419806345297298125959604372008652245905375483231789620680362203255840315122280015808935771), SC_(110417.6192240784282032569247304060466891404365995542682997551636663233387982537486441467360879573581) }, + { SC_(31714.484375), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(14203.19361311374800434265983883310839913752810901804188434251500736802014537102940498365990341169104), SC_(14060.02344486661169439755589131906782196728160364321378993585458025661098967915290140578960890916139), SC_(70934.849956042435760825101917512996767599834904911637438132935678690345064641493080877155264675701), SC_(71416.20374021502209343188201452043989814831628556590513132431953645273982388755133060025394284480233) }, + { SC_(31863.724609375), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(139837.8616153272942642855173561667659899027548647425733032049971707621922013103892274319117395607133), SC_(140426.1504961139706915364922463507906377446949068935591466194580388362518131832497692885102816568318), SC_(7277.418693834746992408201302160217415270148336607304448311381914800846432154025185719079108333114307), SC_(7213.632949671190219037402990570061995151928160262857952927940480080236852096685290846572246670786763) }, + { SC_(33048.375), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(146353.9347301095882363216083377536757546713482284178448119588625091638382010273420289201028615840833), SC_(144333.8589324133221878646859836895761457432202014083104861368598449288360848482539431093120550284169), SC_(7405.667591629774894871265433336192027844156277139313006282648539922791931362107533903454561790096495), SC_(7624.695742377679245590164140654276856572263883666813073888136901633112193554796131367632921443466439) }, + { SC_(33515.08203125), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(167751.9774544492921513217338204778818800496436239687084295878371292103736940611155888881008471205803), SC_(171533.1968523944467844734858567580705862844451501557310556550564549012828110071617955014914169810039), SC_(6788.637106339344339268121789610546286227456414280044380626028150642152542994310585775612895536362828), SC_(6456.585648698405966654289200426258707377396720818041777548568422326612001773153598375795150592523076) }, + { SC_(33723.4765625), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(57493.64054483465536461522500665335058286020408478794080205701345108424359886104458344040475091036884), SC_(58538.70952852783742991301039191397212963284581856210374237202088350211482106757255412551925745644209), SC_(19835.38077471802735773626585497871434464346907363966183061583495459497719196867000864688695557284133), SC_(19372.22089989696982528179923290112494065646172306380514763011106651038433854630338711722482166151731) }, + { SC_(34292.15625), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(327926.3128351218774887923867276554005121569251748377989889342826167169218886784885299472954110163731), SC_(331571.7687512120721889857825715509584634451961919813172352417518386568124630899966188175606647152092), SC_(3627.823435606609302193169538748985980280897382957553165389095358679105646492616118594208018114259513), SC_(3505.568932125196121031308342436219247074314544065353093711658152431425677974207449248809109427192562) }, + { SC_(34295.5703125), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(15451.50495810307097665273815053534443686248667520048230063498151833035741724744097028682026710156997), SC_(15112.5350023285074230630406692489735346247377947354379918580444615633214431508717330415480506649299), SC_(76399.3007693658735323793234603711391824484155768439733865001392234109421821977505970328400502522363), SC_(77538.95544706223698969799662474920494823216274572402787393802197324742940953423094033689612327781581) }, + { SC_(34538.4296875), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(1066989.456061416133283082180139064410414217637297565566102457795654265233660146572095075158717524813), SC_(1082995.692171856477170061178001551596973930341788563356388997972385165489435917678033621400944260256), SC_(1156.434697413680254024722013281988370431784413023079824940982186957698804454588711881589073140658951), SC_(1064.258164301691081163701667553369426197673639974621046849886783221628310693341070786726845004855082) }, + { SC_(35431.46875), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(178983.579520004654160956589200673070997624948011519829955681698296217781130100333931603205979602729), SC_(179688.8170292860577153072404346546523798212719162486056482307845725327186761779127831970859468243358), SC_(7031.413701905884036758676015023435856828752624973002038718149086947830573999127339314909947990158288), SC_(6969.482210172865923218265951068533852037268580428900352787767103889674063189604520405995270309965617) }, + { SC_(35777.7109375), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(156092.9937513794130849140400316210777284038403196966100713101875083893007878375639653179168054856313), SC_(158603.2136976427715800328914129499683197448195836309037386241787708038806877271923200891563728173191), SC_(8272.004356893429567939957393558522330702244031640110574507942449733924812411533390506642238119621388), SC_(7999.832084761138988505925551227706534825907407594077018766005507319031742343768976155037707512811421) }, + { SC_(35904.70703125), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(182930.5468543900677219631896446929351999250821764214870026566091159188931540009366251280651127203685), SC_(180536.8636938817441921031551720026853850058369433663605762291213938378489931424959493216238731575306), SC_(6989.11861398603852399531814712761663320894939135537146036691377792153049649096437218416331486353808), SC_(7199.323103193675375297917281266377545772838191939371499122566006156098231310319857055764127824081481) }, + { SC_(35991.23046875), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(348197.3320864694631479022914385800903948071156878421285426430856759077796998406515840654884015919924), SC_(343978.6494027268963519328363313166301560516866100879705217775338017205564745769734571177978051574661), SC_(3672.704701435602345422132938389780485359866909089941150092407503334929502283367123576841845228128302), SC_(3814.182960409638084881586971491494100462842787535693278537122023050221763130622839413085178324557638) }, + { SC_(36208.53125), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(5357.029416019521141779723704061496853581703182028953957064722327977794199375017069146443462103066579), SC_(5186.004204264382102717026363679821265274285960645563796738483505784206582387694328102705951574517648), SC_(247193.1089786776436093081812546850497234179432369590155651613146588590268484226873771576619611011246), SC_(250272.3501716067367985988028958549237551018713789439696495397337790761245041080316138961502831142528) }, + { SC_(36477.7890625), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(386286.7974635178327904300899360602300114950096305222125572731797323350654137670081926749590128383147), SC_(383047.9902244575755014619193028360975736959646009740366876673909218972749557911744658181293322103547), SC_(3412.288206817822981378845695288112550086636852283132916338647265820340373231773970893047261862226128), SC_(3506.867044336457195051765064239029818100096639578696948198177480537955538580813487593572894036320653) }, + { SC_(36480.3828125), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(381829.262064878048157024759393637334551587341386450389334416016053901716831483470094923520684056254), SC_(387569.5385869845453648859692797780477956939463038163242137985174964947763923300842158950881085750663), SC_(3543.886937127134138864397463697195244393835939181625044543261043478244219104349912681518259884035455), SC_(3376.261596836504551156506674539919867421558034275100404894266909321395713398361603899321986085671375) }, + { SC_(36492.01171875), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(385871.82586146955889850893899478635688467654776120346833701749879688804749052004923201983263672677), SC_(383760.4245318356888531422607285328192715400600043725986514820515298392438128723134204434520159083074), SC_(3430.030658218313890221887444086255503323956259004870004605785232103273017307400012753090709993964819), SC_(3491.687347781136935586511158062714573869108435094177426736410032811855266225829671463812773415840687) }, + { SC_(37160.671875), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(188909.9983204872109825919488118944901036283486514150110720640078028233372755188646721013230622684356), SC_(187268.9805708234442903068120603707911863951982279508201615459658481695393515342882571190986675143192), SC_(7270.141129431672989462683204504123878802702269087749581574740768579331927796558564355957548318282573), SC_(7414.24948504495615457573449145877993840224807877321441080300894959725990625174098976737641382664383) }, + { SC_(37334.53125), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(164916.1877914371540034367592825717838295849317497537565439176669609379487413175228288740063903065055), SC_(163469.3205981778111914157936834751755363963138975119769904644354215785786563058268268370748703567814), SC_(8411.165836984873653329939024963966268435637911524340176478037270019173229410241151852867974918317469), SC_(8568.04367350621667502118039452688126436205086779207687411960376087595231868903973654635398035396344) }, + { SC_(38330.3046875), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(402268.9583272731630511991427627985238878364812682593744742827416643921138699398350535170225230752425), SC_(406137.9682163741663346496505603960046071694461135640321835250879577429872797366547415443777455007079), SC_(3691.78299859552445232615738303259384050133030098809279970346838065474366573151526047525099663742035), SC_(3578.801172677650399292759541634292592943374846827633524048721620065279898925539642122920431328288394) }, + { SC_(38371.265625), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(371231.2442087764801660934623214276296984905647479450160079704377577306859928306102042223739940599936), SC_(366717.5286279627649339806109629703016579616672539477918572317277953000746456129883515694465215149202), SC_(3915.286840772462049139963864731215026351362339782032241075394649976011677173005189371469704076174838), SC_(4066.659417728207187455169496124580706699572323332795324982851749754935260437811309446289686840938965) }, + { SC_(38870.3203125), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(11126.42385540831145440105224473756164959353235608083412644166015853719731674151721913598691994691599), SC_(10943.49642965996288229350666696333641946491837784920510009825504191296860851943048536253496637005559), SC_(136319.6737626222787128070307920899581242613763153489396699544221059392257612410884196144322347547252), SC_(137529.0853556864511050754948285836619801316427421008729358347624796911646218851261739224941501458513) }, + { SC_(38920.96875), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(10828.03212952944239099962639976417151583155913003832857371181856582237080884379921804041263686437489), SC_(11272.15250185403242383231648095048526311618385397221040809599525248583527462716859021790362327886181), SC_(138574.8019204102524079509925298580024678938713465189394173395430584671213634237091433972192931881351), SC_(135638.5237431522019687646102765026889875641724381206120317897116474339173361910499668515235314312073) }, + { SC_(39537.07421875), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(17563.18468844967168742479914817583648488027417980463512099444652315214996458563905137374297123693439), SC_(17671.12782606081120618339130222760565093475292300540551956257861468349595821280428674180660694244922), SC_(88912.82606341852338229665607294053276732403443052655041185253618875075517676246760012511827910941071), SC_(88549.9095387247009245736300865839718944108746037478466662001782408836703280909849708822858884598813) }, + { SC_(40236.98828125), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(17785.07449749824061871009955866379465369538930984808769961833799288446975100438176213838503128081445), SC_(18073.40706479004100024564638827892989413675565772852850762363611013042052319327555376736268386398047), SC_(90787.49230274484538760583071997992245638084046776152771533309883183333940942467702495507775703505488), SC_(89818.08666172057450204490603003312612791359363411487343908859007574994681462888871865749465040437439) }, + { SC_(40620.00390625), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(70214.59614634759207849087620430909175507827901445353332897835803949448395225034586806610320605099194), SC_(69544.51997904018008698586441892674480680869570000514808058576557512385335582693858893209710019294967), SC_(23463.77144943359265505365112064449924860149934206541133357097666432584510760526587504443998239012132), SC_(23760.73995113764908472532424175554977649636271730639983038243775425872644040076435561976368231411984) }, + { SC_(40806.390625), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(6498.056701801031069979639387611929684633486142115435754625338657947817282714090911725777105326469784), SC_(6301.829584884688356321484368049667505035617782636475933953151543143115736047564843596212027128878517), SC_(258628.1336306046687641682762939669331895466783514086712698431784809510351169377472737401218074761866), SC_(261787.8448509283123504132124995012464345533290557818973278974317526386234296139750290749626979635583) }, + { SC_(40811.41796875), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(429611.0809614916674016204096494871587880927982705815445271091662615680668794523145259858632753393983), SC_(431118.8379913383015193088380803811638619202211197912240888124258971205063060459713872923997274989898), SC_(3892.452324250216321819056729292352227969175208849249200552081366385166578909719244808612409327909488), SC_(3848.423068196693702345862109311643852708099986654170620536759922128701469589310584318323457617572553) }, + { SC_(41111.76171875), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(207082.6972786108411984727465209859865613145058775003576232202217555218313821463300058185728752304762), SC_(209094.1623405038575132951917544761569696373539902309159672535516979615350521043993502027976566978985), SC_(8211.176544261705108620032115197928991966399401640086153160345569939926201639091008004347692229339841), SC_(8034.536804216510786399098858221410976683558606544635168443601079249570373661691730222829040125340015) }, + { SC_(41389.5703125), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(6461.833101359079211799955781366027334508220277920937533122851625253656618372527132948694104412491983), SC_(6520.445748586937134152463389953264847913005350624887743010462461484494654334490997883956071859970948), SC_(264395.8839914776959180155376505645907767101763599648365292901037491424829258054669594168520600024352), SC_(263452.0867162633809756597142688714534455005168659957807922634796008595331809142486682789380566561132) }, + { SC_(42070.5234375), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(18440.15283779798233214515634914800334139361544241176707659629062626700809199358887617557005539919035), SC_(19053.98827477956234319265302665304024810873611907234112312266357143645428084452385437797723138196383), SC_(95452.06699885347935965053498934869880086420062717941330708376338799129358114874416722137884089203275), SC_(93388.28263737631700299413902645460497713170016380473855375883072992287480873917292631861157106082538) }, + { SC_(42258.04296875), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(6464.827293995152381738945995625612444376378380075119469314751637711217602117066655877754748928753996), SC_(6791.316487788793613944834840874476894360191607865046272170708732132059141620874011097379151190024626), SC_(272098.2364087555712152617470093089692268146909866499855606965212475010932819332116463122295074645885), SC_(266840.984414211661437493874378230390698983869704552433542913172580605994293124248687498508039977585) }, + { SC_(43316.66796875), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(1345964.665281131087180285153198289820104636264466282834530847700487446743089591493424542815257776196), SC_(1350416.131239459178696633812661546845367857821006859997478584705148384362464980355875060196188776269), SC_(1404.89402880184296233156710051974736687298466343244119840651152050516704125552158623357672398184947), SC_(1379.258302212056923681910192549801744744741683012766099036944559475833196266557645828417142126377827) }, + { SC_(43677.16796875), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(1364493.837362908888899200116294629697159360597665410690062882230669817979913667283821762955375352187), SC_(1354337.588568408407307144299878903858815188995689729016090958292429561280103400024302909712493398433), SC_(1374.498740468195854558416241642294967378991931896981281665147734039173319204051729832671766046787737), SC_(1432.987713454529529662439229036074116551524557368604227439803694327693333948625752884393628041109176) }, + { SC_(44282.89453125), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(76682.32462743760539011313270300646742423140566771695068799366746562466147421212743204742927656008124), SC_(75680.39008284406316265093668305417358564211656125097188627540486790506867595473554737042041351455734), SC_(25519.65039086562902051251047957351446206808544324496104199576301785511745408514783235489479871463999), SC_(25963.69389436453248854070636938889117256773648800686345467208696627525632075836899278976191162768937) }, + { SC_(45397.70703125), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(77686.12618586906950280780934249877829129474858608321857386079823966903588541631508264859717732881725), SC_(78511.6490323689141720794852289915602875971089607391627047341202877971906817015928589034449069125876), SC_(26572.48150330601906443520823376248069169872215846398917670291354031137048546815972590982844879556554), SC_(26206.62117141807493322823858364554952021429176126646934298273824191683352557983302697047356311641346) }, + { SC_(46000.8828125), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(200933.6980445687665869732672027859517711419344472213377991346942664941942678712786017526186051099329), SC_(203682.742270617458836063412027464574628372638496914061598043050412845999340422486868730157770187481), SC_(10609.48793865563282259724337066596176808425842360100940022887683962011959461114809563161610663992595), SC_(10311.42059395144837444502141343438725397898305392315689154697085013558408375208871248895508126121128) }, + { SC_(46548.78515625), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(205241.9165567726026795907648918696996637168604116658152239239910454073347525003695383439151015430608), SC_(204188.9150995661970489575945804447862500368922220911018144156229374368022359349405597147502397404132), SC_(10527.59242906184334616446912856133535414945652059731127983955957041139085305804647612816179289664684), SC_(10641.76514794620467707445716759896437999940796956987578518393153966385128646455295624487707003192284) }, + { SC_(46639.65234375), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(6890.588937571796135564609956289158458548221059732489292639100572250287921159647771912967698367210346), SC_(6689.454746416205382251859090520386870619383843399736032421404784729317919524591528182758887302418604), SC_(318578.0623304237179080014327774584606203868248845735186379166514097851754131951127287388768956145746), SC_(322199.3983838231419058742328196744945751720923162800184523925969203462037372878582402380782631095595) }, + { SC_(46696.97265625), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(20571.81885126567347089079745631859595264245093698873627932783616075763515959087399759959759719998799), SC_(21044.20799213985874183912646285945310749796326257848885322234807052687312211172843258244113418182308), SC_(105595.7825711617987874601683712096392867815336519071642155882661193992363391467984662142047169072872), SC_(104007.5581868686410388817584600766855690363774748451903157554856868081775651387580514240872346551653) }, + { SC_(46995.0390625), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(207841.9057479959287663841467052640990210584231871884201530783213626893116778444236446118925569886002), SC_(205517.2066108987966406004833848753217487359186207414875204824532212319129547443353282122287838257032), SC_(10560.35297348455385572781237061087983873820859430313161701114867462732282255730511125762729460569299), SC_(10812.41051673904673034824690650393875424045935950206973807116516934650784924194150997502117400108583) }, + { SC_(47380.875), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(241147.2904945180461724560498068462858628048717941176679402396107825988407254583050161095951707677979), SC_(238493.6597572441343836081598889150147320724969163820859784635365647419849577630624611221518537344086), SC_(9245.016956651717741230155195112108937020246622343696418865548818197031178877609950819531388788603351), SC_(9478.04941787491018056075471171906922605736129630477819528903480345450379881129064783602805371266204) }, + { SC_(47806.96484375), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(240796.7944465840286368210871366946566333870052798932156780710276064140293642607090005339850453302545), SC_(243156.5152094298174043645028063452520846439309480991639042042280198008779024951447855754490383243349), SC_(9549.26555225751428071128479072008227634083383790492332844071766380649829822882515099556966185472546), SC_(9342.043151529226927296638009444283484876691494192662682960776686978353444962241528203047522293977731) }, + { SC_(47988.5859375), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(209062.7585714042536193093735369786334454602106343495239897348383071737647024848139675580417754426088), SC_(213042.757071555086684203371273436383985225966076440532959407489512255684897665247168949985144734003), SC_(11128.61266063268237642738201257023834770745516254222770025730837654648533088051116815566969683530221), SC_(10697.07880369252665054281672360593417778175371048788864122220465681175887803002588941994440627664985) }, + { SC_(48837.765625), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(7763.010905464487198238728601664833652743688516002718068688165990011449307310390677380914940412936508), SC_(7555.843647964861067045381436709095303308406040961587892775373910602905446045210487321368116371857413), SC_(309752.8674453664171902143549729394593720713033607557548567842682687123404479431251192821754657106928), SC_(313088.7364274653741310413293176749457588968534389470312592802697444078010628051552709422438360318994) }, + { SC_(48956.60546875), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(466600.9108616601600255017448184093837782290180190190207303590758967509808191118318626939931973968863), SC_(474936.9132200669862092880477770202628972559699788914656277344517510668515054362124153215574789840109), SC_(5232.009874386690686045296674074426887061845728313790211684147448036618752399811803274178245188016422), SC_(4952.45344389526653244385982777121175164971819412300418928404118406340555501179055758541420019749557) }, + { SC_(49230.26953125), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(215541.0773721643386954741914127594454317087649341470888400595290151910030695859881235681671940537537), SC_(217477.2660125211989322721624261015459122511140238822954688890179549591520839634710880371840171867408), SC_(11299.50048169272184245390679951938327601707757362247817882695488085635758978877935478972199767587089), SC_(11089.56741203173973412983020328639045496599803939663088952648657317551914924439100547175931985442517) }, + { SC_(112950.4296875), SC_(0.905801355838775634765625), SC_(0.905801355838775634765625), SC_(1081652.599487618507259335449255037501127623123518564445447799835756793363241759698319225641519355623), SC_(1090585.276548455631300519416130507480573847462645755937295385748645147211048848783358279512741033367), SC_(11896.69069317165347781457823474077636874956154250217570225505264761709240155650483675324913546515522), SC_(11597.12130769712459377449641709502657243959208410290973406987469392135898130915769309713125119315928) }, + { SC_(117781.640625), SC_(0.913384497165679931640625), SC_(0.913384497165679931640625), SC_(1236886.520367178661774757541962513817707327959712511497208165510765161051664255133611363036792081518), SC_(1247200.899669897556133826970136802003401476623438659091045126743189363130662804745085402530909321293), SC_(11320.40560204276453110858497193693120401470335589224015320220706148489143418172815703449171128758979), SC_(11019.20614079371029033814973750629656949770927432968436237588339953076548449005907170929346184236181) }, + { SC_(120250.3828125), SC_(0.8350250720977783203125), SC_(0.905801355838775634765625), SC_(606125.976255634775937261848232967938461282572060515912851781216035274218666202810565471404061683602), SC_(611178.878924564037386275315826399953465035595127519354388658480226345149593615459825961595756631816), SC_(23980.26189691777237742837097391991925034532622145308117601288909264887636132879803847483654783006236), SC_(23536.53291485397911841924014195942715962236091155086490453000722405517052671553210096366342158728449) }, + { SC_(125436.546875), SC_(0.3082362115383148193359375), SC_(0.913384497165679931640625), SC_(55505.69055899452017638240331722218486566939931161779288410809517884265467830660031545310943511071138), SC_(56279.91861867008927405098362839667085216187059750112258867214566658855327754213663056584471025210283), SC_(282815.6716956292941137334704811980604866267637754096159584283168314930228896094508818884854244751906), SC_(280212.6342321809914228113764883411947198394326676230821856481503727682700288892014261457796991480856) }, + { SC_(130199.375), SC_(0.905801355838775634765625), SC_(0.81474220752716064453125), SC_(1248714.60707892330060888942260474614462738889657116344590779557588255487758761962110359714545986524), SC_(1255244.035673733311045926458695250466612897030412252275747474610592857998676365892898369949325650613), SC_(13650.00675432882640363916674557590513749593523213152292663240623147819449684796803703354364016596771), SC_(13431.0332464484433616240685177738109172523766641326770547559270142744625288263247550703993239078491) }, + { SC_(137528.015625), SC_(0.8350250720977783203125), SC_(0.221111953258514404296875), SC_(697680.0003595551300427761129858824651574838118973833996984479281497634284053475755492855449188375049), SC_(694523.0437224831308009878310850134941410420761419001348639153588500245798353414796269641505949262436), SC_(27033.03737479823656508596073019479219793787108954328939787411947186051153239011030668197038491634068), SC_(27310.2709256707483307225145026109416620298941304591446943393756804080667554726351528496707350774345) }, + { SC_(142319.3125), SC_(0.3082362115383148193359375), SC_(0.632396042346954345703125), SC_(63312.48204402967129425282290981042948077353637928273939264665282013169576617896783366496076233905619), SC_(63517.2804496215738581684730955733695461590565340035794724359787615800642589985581813096775108776738), SC_(319746.2404806578439328845400939808662827911671944283986791179607244961725193826345614646595274145212), SC_(319057.6865730374117315677966408702739859917514621454313625935594440829671104407701187022249250096772) }, + { SC_(143878.984375), SC_(0.3082362115383148193359375), SC_(0.8350250720977783203125), SC_(63813.52665973956807479360916687456455427520563009268605178589466059366007535313872258677488728078206), SC_(64406.67967628489633310440742300047480934760691369009957427130224414947015777788167304861168500729521), SC_(323900.1660319865573911060941116839019537540230187629669063531448769633835854032194756969690718553925), SC_(321905.922612671025928505331440292992008062833076735145596992340061644888049029373909888360945330357) }, + { SC_(147358.625), SC_(0.9688708782196044921875), SC_(0.3082362115383148193359375), SC_(4592500.230344453330898038197980766936298137199832739697213805848549766393425657384669342644897068763), SC_(4580341.275506799247604278102560427088954512804189941261703806985501137291640596021783054992734183534), SC_(4699.881503576720523740916925247353092204183662515767508815514218864880696047636842583010970764675982), SC_(4769.905181290702485300861380553693739200008970795880452545087226518670302945699996585189255650278272) }, + { SC_(147685.8125), SC_(0.1355634629726409912109375), SC_(0.12707412242889404296875), SC_(23347.74038465912432648973496099528804013085445703633834690556423122498799964400649410893882457254513), SC_(22974.43222264278701296473842300075008535752443042611834184235125329705734687064826955917867886646397), SC_(938731.7785880996827876993195023819357032806253381522481262141846229297205195189053128963862710147639), SC_(944742.8780819872310125241789360128316897187721857806186336643387286763196353112017530462462452955147) }, + { SC_(148346.234375), SC_(0.632396042346954345703125), SC_(0.81474220752716064453125), SC_(254457.0444837605181644826183460611516702997932081834158355406933486382773344908622555853741138245076), SC_(255949.3288856824804265584685573494554603444583308766145483732866787685992851380324769296127348456735), SC_(86562.93055375982365694876205551108843789601106705333688906853313112068258663706458115154094702426031), SC_(85901.57035905428097363763252815183184298621809302790840852450304250493450126023244231055795873542728) }, + { SC_(155549.6875), SC_(0.81474220752716064453125), SC_(0.913384497165679931640625), SC_(681474.2688786608998964084939848225688467467856287993767293205450267749591562722727971222025839474897), SC_(686708.3618082991181347356014431508229097262804613630992536292850088071392536749787150076894573903233), SC_(35653.67769817500165234997709006013682030980112309065432069186871648725649352940221357297951497852464), SC_(35086.16536538708297778080833542245453268747661981135538080352906411588108339619746234547568135439638) }, + { SC_(159998.890625), SC_(0.913384497165679931640625), SC_(0.221111953258514404296875), SC_(1690623.235567604616696147537390982520110977839506375857912920648400207877519479302870657381093738209), SC_(1683840.092574789675597111621575385665341192447184017777362887797075443717535059019018785260629491749), SC_(15073.9418481093359070076910528524987653972756599432402147148518434116531270071781016451446203140809), SC_(15272.0229416140443526477751473794588226761672490471443491140922803612385590665474846344495699403157) }, + { SC_(176811.34375), SC_(0.81474220752716064453125), SC_(0.8350250720977783203125), SC_(775600.206555497489354094057461560875683598320988069559079210597262741936169250807215938976556175988), SC_(779592.0456256300973775555834232317478983674412423153098125234884794531781441971802760222251093404508), SC_(40420.63182465306934612369089519088987098191831936264961667774490928886766467697797020819310796170595), SC_(39987.81207231479686929314322298528393658073174095318672081088588450669971027118438130360896961343675) }, + { SC_(177304.15625), SC_(0.221111953258514404296875), SC_(0.3082362115383148193359375), SC_(50461.0064152376849976478605636744774420820449422465614494873985700722622640365172636593267863509079), SC_(50206.36279767891946599426509746743137962523258536952711141649173792648561165623127439575831022434422), SC_(623728.601393983800766744263972714227241350210512326720453267925626136253464292909195668988225953746), SC_(625412.1560785122942395521375104450996051682351873541057157782951528187013876962176832375602640995598) }, + { SC_(178520.125), SC_(0.221111953258514404296875), SC_(0.905801355838775634765625), SC_(50343.74843028506891603687410138533646917258443811897042034790924081028212833637691601772077415729116), SC_(51014.77603102298783099121589687454362525070177712480854776172325297020295745314807815385250533741199), SC_(631073.9503887777980534242388933414920695099359309741408612814287744948755772382186728094443483460509), SC_(626637.5069529379570274491744317242703797551774376374621201631726366052243621254756423706942530464668) }, + { SC_(184873.484375), SC_(0.632396042346954345703125), SC_(0.905801355838775634765625), SC_(316818.9384593961274458845897410940686289876808786663374233391660172917204807907848131581992824571942), SC_(319265.8471300424791071146753722793480106024559666294030397161207782132494792175723677453931860342547), SC_(108007.6396747618384045414399373589076756447258379635971268796541111673092583713439251406305481948855), SC_(106923.2029766122488029528761914303955773177957303362324249149060304820897976858258852018385093891119) }, + { SC_(186855.453125), SC_(0.1355634629726409912109375), SC_(0.3082362115383148193359375), SC_(29395.76933875260682724232773038600731801406829852143141727553266586657658755642154894441817550448367), SC_(29211.33864518701996530302853183281440903310447940226328610568814473783347634894282413841358020360945), SC_(1190019.919541090547863245010098210987543018747544903831363072178700662539082483381411371365390384379), SC_(1192989.665425624586131255369690125566422645921360037696131468608998894548122613190038813650407653526) }, + { SC_(187470.65625), SC_(0.3082362115383148193359375), SC_(0.221111953258514404296875), SC_(83800.60490145457461403483349017784021505365603860211902968452888933836910424146510420326864759562106), SC_(83266.54263272475997404094364017892286443868473159576525648221529766517017798349958038925353950624571), SC_(419836.1995448889015467592468772604694048905272030081256786197974535196703898792725667907304611096933), SC_(421631.773360412697220488010786395955508532129572072240775789063662505136332815837975467287183006557) }, + { SC_(193457.484375), SC_(0.9688708782196044921875), SC_(0.9688708782196044921875), SC_(5995317.196494154477644972080658776994331491128990030939166862182334894354148374848120734589737852649), SC_(6047178.073247734211824771419210049212257050449622703255367064361922629812713716471285180225871322018), SC_(6365.921646535021074109435866709932039549066148708546798287703631332145154586539205956340400513031139), SC_(6067.255392436011875157822347067935417034411907366631340992828877684324697913015577971574772486229597) }, + { SC_(197114.140625), SC_(0.9688708782196044921875), SC_(0.221111953258514404296875), SC_(6145815.8219207039060787757501355567329405861810202805184563377128379723942774086673788506148393661), SC_(6124240.048910175398595818617525613794205183492424288111643883619059482070365315465346624477602659119), SC_(6271.434660829513837482801539880885241618375159195424539189474362296953889425552838489648092013260631), SC_(6395.690104221566109532473225557905278286027823491641679056156764303154022961903502041242189020198606) }, + { SC_(204858.109375), SC_(0.913384497165679931640625), SC_(0.8350250720977783203125), SC_(2155420.557639522766602761432821667387748377355246621383026270219587868949533873546436320487211575776), SC_(2165151.214688899442560737525268103389884253027756500085474735455015202991707678847858100539858331118), SC_(19569.0936015729763605073035719721343399453810536008735979447975590842426606521065505803631943037926), SC_(19284.93924226160102365420518229797971864360091486489842666201782658222051853366556762587917989248848) }, + { SC_(205911.609375), SC_(0.12707412242889404296875), SC_(0.8350250720977783203125), SC_(29795.05675034786498221521078016452999188066612569447962896100039605564552470042737899537099998063001), SC_(30156.11351944944694752828123442751854537469729864755648606354053901491106926604433192674496569741278), SC_(1417744.607110220797822569566176304005394577623221213774032282817803134507725780668675201409782031594), SC_(1411243.963133093372562173653960262691601639459814461258900386655669855886591982432216220493351257709) }, + { SC_(206355), SC_(0.913384497165679931640625), SC_(0.9688708782196044921875), SC_(2166735.093243837795479458170564757130720434354035514924890230875043450066260592474929652063892344593), SC_(2185425.540830431471549853011602604962373638575065115420630707047731718886115466880021264467520645776), SC_(19842.36490322337802921162329624891658848469094376744339553853360109464301933178436607534358310552714), SC_(19296.56789150453931566585738787683355120453435661453261618210727131067520952709263447786990018892586) }, + { SC_(207625.71875), SC_(0.12707412242889404296875), SC_(0.3082362115383148193359375), SC_(30318.15972970153382202726344123198691558650819300213899014185143968786134831706438216771315336884632), SC_(30131.76487635977489071213217766288693254709545255555207850313451323410070398788734179254367601549748), SC_(1424589.540083821216885596501659151530867148351982818696542907677370161854879206540976464080784699128), SC_(1427945.483897120881367376811012998428421376326405602717656820015697188691507029696379139220326008148) }, + { SC_(225226.28125), SC_(0.9688708782196044921875), SC_(0.81474220752716064453125), SC_(6996561.423447535250994982687400767105900707374666754407871173164711694300716749361037791550386917866), SC_(7023438.049885315338499042608424935170952977338613743637001821451996310858030481198281896087704644772), SC_(7314.214288274307862545305432507401478025457091416928157654214971517779070407126255168537027029906453), SC_(7159.431045316808352844709529286385591513443300171108172859672051279379228265650367204110741590684073) }, + { SC_(227229.640625), SC_(0.12707412242889404296875), SC_(0.913384497165679931640625), SC_(32813.99186204943243535354351061773216391574375148866049455691412136550930100372334146954611717289334), SC_(33344.212265012305745393183831213194924602823344403252760245536779579960660310046600205291662938842), SC_(1565712.256139740642345290181132259421094678207440879299493039148141702569889280504255689786716861691), SC_(1556165.90465112278108875907916179906223507897149612725397957669961720360144392149254996009621830847) }, + { SC_(233073.515625), SC_(0.3082362115383148193359375), SC_(0.9688708782196044921875), SC_(103131.8062467634741832787104146715199147841123440478778085911015666850156290105918053761594657475466), SC_(104576.6180788819132244386975585424694540489894877041129652913904997383321183416901575347675266434304), SC_(525510.3398477441377719049332835985135792212337409970021661034309700792808677354931334620953362972599), SC_(520652.7287797706911561940288193523444639283992290810420600622041166157503947023218890116475601099847) }, + { SC_(239085.046875), SC_(0.913384497165679931640625), SC_(0.12707412242889404296875), SC_(2527372.036912072887285112558472045042637672569133936605973296204742624450443545948072951051177261728), SC_(2515067.417094579546240921850125220216551630734619944893509177966210254171464264013134284302915875521), SC_(22493.13889779028804966705861320299040992106514013446631437331060878789191225052853715990841727482486), SC_(22852.45807012762835310539073854781235596258958546231333992217999066574280182784669528991234001721638) }, + { SC_(241035.796875), SC_(0.221111953258514404296875), SC_(0.81474220752716064453125), SC_(68160.64173608733093171683233054186997338347077306146681198687239814247613761526795583452553903037897), SC_(68691.49050325313274257172742058244455149038975395219669557806260158165763297866847398595736780478531), SC_(850826.7605395442776049805414109488731748008745547801870910058460567066722154314852476124448207410224), SC_(847317.0990695608321508457683093018470809503252103651704620207920443534901909154516166095178381177383) }, + { SC_(242244.359375), SC_(0.12707412242889404296875), SC_(0.905801355838775634765625), SC_(35000.43655894495429789415811908048271628322164757089404335518725542287260522136811961720667588969225), SC_(35529.17834272747050731851427876051456952725705587604976192612255079151929596011981159133486797466186), SC_(1668841.090170706333226063098306251050376889350253843286037701823382016219489310856594931812968492311), SC_(1659321.36171402668639142598219120942330563611865166484970964916562952391194436890844587740593084309) }, + { SC_(242825.703125), SC_(0.81474220752716064453125), SC_(0.81474220752716064453125), SC_(1065769.296676536289865514472990492691291536859081414346845561102952121573422795612471066076107191794), SC_(1070069.412079112637719264930061555530148808315896972993854177393322857120988508476780099940910653565), SC_(55447.79234391860621740875829888831055612043622827210769221920086093529732187977636836649293206304377), SC_(54981.54725703208869422343524973163197679353507309390783206705322877221359053238590332922915745535341) }, + { SC_(243691.296875), SC_(0.9688708782196044921875), SC_(0.913384497165679931640625), SC_(7563462.434647289237312547353334578260503933823126828019827811642651604332247100415561106156739791568), SC_(7605979.12767226081971843879976030288858439900782119307639579192153588944680504268697259124242795122), SC_(7952.704274174906145509230570275758081283002002564882702547968032628561117892398229282289800757766152), SC_(7707.849796957598629356707841766130202058867301213016129068608200033790140016675984509586175913132124) }, + { SC_(246326.46875), SC_(0.632396042346954345703125), SC_(0.632396042346954345703125), SC_(423396.8078584968127029181437202899347924966260828148948793217274049465820869252904421924877781351628), SC_(424123.049180965453242949231294204358345613912350286533731107166290279924636398064239775331237735264), SC_(143347.6249925096476838281106121913621595810227620545643485708828796279337663884811965790741623694398), SC_(143025.7646541547008903209685785338405430042486086644127273779859430788779349121352728781667774458203) }, + { SC_(246877.796875), SC_(0.8350250720977783203125), SC_(0.81474220752716064453125), SC_(1247114.222859766637108879157169941933216008346257054121191680922689888764610244878110528676680778634), SC_(1252043.372393010776124073063137399704263945782809126812756846398728101533463377049697575362395209437), SC_(48992.24278287514166928992794477408807316950857555248480460547055754355325519031810889031193088899611), SC_(48559.38089058660683480560627478610561630445308453877950800474837465119265043662330938977921627300365) }, + { SC_(257382.53125), SC_(0.905801355838775634765625), SC_(0.221111953258514404296875), SC_(2478893.429172905948896013319335438187829488814947364871828311654372186999831389771945089326822222008), SC_(2471015.667320199189676401927025725805586578776481471595433892268655481893646640249896944370324309837), SC_(26634.77014486736946359559412058466133942023525493848817876167154026241588731012764836610030135848447), SC_(26898.96225752623447145305510944157078585328144802836212860463195274052999049163991745675716698941848) }, + { SC_(261832), SC_(0.632396042346954345703125), SC_(0.12707412242889404296875), SC_(451697.5475303516217725143889204729449617550959117056049677987586067739619707083479340068394194993446), SC_(449172.9824580731447678123292938099907077591995543924064950186271649142167418360534930377881876832006), SC_(151640.8683059990454611479303231940671913975086056385600706824600808308415618150972913347688070164233), SC_(152759.7213697797079820071175257841139563290087992045782582164399792149137763555453651670550937829625) }, + { SC_(263861.90625), SC_(0.81474220752716064453125), SC_(0.1355634629726409912109375), SC_(1163189.025872030607167679269312251842795585781201367449552045484205494721048226813976563539421755402), SC_(1157680.564219582326618137322314053246817629046780880606298080712083086756770972548794054796260548865), SC_(59699.39427396414220587068539515616580440729803623597438781528606694729185716645964088427135658706248), SC_(60296.65571038371837830185771283718333484932690605794711744549928822007891031009033952442148617503092) }, + { SC_(276960.90625), SC_(0.9688708782196044921875), SC_(0.632396042346954345703125), SC_(8614566.375800805415908989350286209434347883312773472410357967030662793326643532260909203201947750669), SC_(8625822.435537026243615310880192057875290375677168197752334527418330864097757808101635080317163087208), SC_(8931.308905525455754799736235798861469612427846347587064475669415644813207540950850715788974705561087), SC_(8866.484812371488387899314323157447595495170888000014253481463485623920590603742826934888211211807169) }, + { SC_(279349.15625), SC_(0.632396042346954345703125), SC_(0.221111953258514404296875), SC_(481448.4518440565948681137878543502502203596595143133662073469313379650328906786241263642537431296636), SC_(479691.2179552938619269074086469408479359535385345853759374929155080633734068981535548028654577979679), SC_(161993.1529955977777074725788023539434000120927134948194886949498371412844435122554082745855054752543), SC_(162771.9352980793003877315969192164490917536557258868287418744811441942121769310743735087748139298372) }, + { SC_(282265.5), SC_(0.3082362115383148193359375), SC_(0.905801355838775634765625), SC_(125211.7805932034252774753657178636365220384618701522798585930019777362377721021952546165233796406228), SC_(126333.4864273390407232502435211144284273882471144713020000359785634264477079343646159502528825504791), SC_(635365.4402106566330235386034562157696911682269237750930928052313738659250769973127688335961017056331), SC_(631594.1466395817223846421117181747744937445247506707587725308191623885690452663007443216037115753017) }, + { SC_(291785.28125), SC_(0.1355634629726409912109375), SC_(0.8350250720977783203125), SC_(45534.96660765440362758601177992701983790609266298622336743590562602486080276112084385807318358430048), SC_(45983.25146871710328678097998468143491634043439198353282351570531623088717610245340757154077088469875), SC_(1864213.108741311215354541344373985389288948708650077422842312282575282984658913842306726812557323271), SC_(1856994.722806381606608180956873889775932980851348668918220387407090956542178587784280794645527031612) }, + { SC_(293941.34375), SC_(0.905801355838775634765625), SC_(0.12707412242889404296875), SC_(2832747.959224848166143631031677931150214894223179008512113187304690643878480986190241250874455214723), SC_(2820255.066010383675575499796485706672135479779607290234682063551815758196675904958993809923392799311), SC_(30359.4524766610336550715354556925956026957220976505167351907016807724918547000162506142038923700788), SC_(30778.41962105329733979076424976534058025754766717341884079905702211919636458734692833545460901598405) }, + { SC_(296495.6875), SC_(0.632396042346954345703125), SC_(0.9688708782196044921875), SC_(507873.2587340083938269249424266355474547841105725249822453109257416997145632293816835064878942264051), SC_(512265.6866232798258851194758049444652022589827089985819550232278438874161316992908846444962771348658), SC_(173323.9819039044453596629323430812812718290322399800764675781679714864803473671587235175571938154669), SC_(171377.3174644184670454647452242029054576022019216371796062642314349336692573036446568485486146610325) }, + { SC_(308021), SC_(0.905801355838775634765625), SC_(0.913384497165679931640625), SC_(2954254.747551480999324590981762621436413578554787570156142449927264548726709025966733101291165467725), SC_(2969528.137230925687551912216641148489900488822279914486053549944510666865334605598591928082285070844), SC_(32289.36641744920607200778535527307158156828817420678585677892308535464887704218332311455186905647384), SC_(31777.15140412893936442726289520925134490373595093450765021596119723019565585627853960782055128938878) }, + { SC_(308998.125), SC_(0.221111953258514404296875), SC_(0.913384497165679931640625), SC_(87262.55498473260819176138258587636801961776444960415535530268281027267990789738473031791929508239896), SC_(88176.63081646259915192475007802935608403590670261516811585884318024713963967858643965115302393570752), SC_(1091498.823235127579273023157190959709806756196671616653086127793259748674323841896416286437949589967), SC_(1085455.488433782355633106828547160496864312070448836375598658603234936499396746737302048471219611725) }, + { SC_(310161.75), SC_(0.8350250720977783203125), SC_(0.632396042346954345703125), SC_(1568847.673388556039613494183337025597370849688979221723202531817741719356670594645050530845689909551), SC_(1570934.262954429375087586724188506615425752385319627719752375962561808393163286231102803343812345106), SC_(61370.20742832602357704859623366560758414889485872763642474977081727727204627649068681892667897226325), SC_(61186.96986568450140317626753472574713341094613945653061259247756705282476911711531634162813819905281) }, + { SC_(312137.6875), SC_(0.8350250720977783203125), SC_(0.8350250720977783203125), SC_(1576878.970365746416694286229685446659873541900333670140112868108903335863155907151610317005989453528), SC_(1582908.583320214593273211608853231298979825449736172558787647806632150625851972415923291528601933858), SC_(61933.91693606407623196054019476561109907342265630407070191943874277570265350624221421412267834403994), SC_(61404.41586398241607560297433310173490129316273100522821591751836063141217453445838540886104013290133) }, + { SC_(316295.75), SC_(0.12707412242889404296875), SC_(0.221111953258514404296875), SC_(46220.90400529210620150897136647080422528553291151122463261087882455349840820256951723652970967208746), SC_(45867.93293440899164901743506522973242575434167441636115210576159645974322144943819841044175911130038), SC_(2169591.208886128302052484695751203087082101645213514084580077465618849792369163567800624559193449591), SC_(2175946.270732909907165359794716778895314928743576160824338666625250860886433843608205842999502598836) }, + { SC_(317554.375), SC_(0.221111953258514404296875), SC_(0.632396042346954345703125), SC_(90033.04060273467230905605319065414001746021325383083846860455475015180515354253059762217709408783856), SC_(90263.15888352355061321738038957081789169978608307063634799562724326016564280430674824674283709794463), SC_(1119375.736462412420923554505104383892750631615545554437761653515954969431999480851767479032917952163), SC_(1117854.329304232840712540734758740858229656103778392202793589023031823905720624761518304291744025866) }, + { SC_(317886.4375), SC_(0.221111953258514404296875), SC_(0.12707412242889404296875), SC_(90630.82443354701028807522828697754929575395012351151901693293681353526637308066598975227580307327418), SC_(89854.52766829629092682767728591666135664999960189912538791611289404425188736388690251133020049609434), SC_(1117220.135196560124442029283124304809357905708767331899869963678005540504371358797580036776211759508), SC_(1122352.554990593708430854648562942594580913961502052740447263387428345933768213462812811512502357135) }, + { SC_(321723.5), SC_(0.632396042346954345703125), SC_(0.3082362115383148193359375), SC_(554081.5345815403902082877244761858237751357905260840084510131026773105940639011036734933819904558671), SC_(552852.4027709140936416230835259308434869672796365177086220665985571991577469145901390406108376373183), SC_(186741.7336559851566403239203782226410809614576535342224972320122791547989686494252063988439898954125), SC_(187286.468272202516919868475786492264871297328228883354126379447703454399770903230482105437012647351) }, + { SC_(332899.65625), SC_(0.12707412242889404296875), SC_(0.12707412242889404296875), SC_(48730.32754251826879830553956066020858587915226490966369799790468934738582574416525028291655054922507), SC_(48192.9637591301135034863610981140121583621844762787005660188966277980529713495428599706805809011457), SC_(2281992.256784341901602782827074588837050962163846982757836419213369078182014078017672260966382513316), SC_(2291667.215578810334033920884968182532703896948661488892015779236954542358933456130371956039716811514) }, + { SC_(334436.8125), SC_(0.913384497165679931640625), SC_(0.632396042346954345703125), SC_(3524568.082528470676181247393437170874850815355423224630073326105177357475987894176764125298020989534), SC_(3528884.260529573008798321481127442847000177807618097717504274215894683237652927699558669493120389866), SC_(31777.7135921349086965329302743464601604163911534860576697395262939408862981977937532091814971773025), SC_(31651.67255381142332570718856212119178738178527013465969550079094646044397259248793209207776699429591) }, + { SC_(345572.71875), SC_(0.905801355838775634765625), SC_(0.9688708782196044921875), SC_(3311915.434437118035389009495063857237340312115973744898511944351669501877498900960664303594465635443), SC_(3334062.829675535655436152157399950978547794053967750511552211807320057961126204386837936997429525927), SC_(36310.14156055682209129791032315620320407474661924782117323674479421578147354264360440918767196645202), SC_(35567.39721779256874514082589242022685788043735227791225399723567313305619827016371503285086165529255) }, + { SC_(346211.125), SC_(0.913384497165679931640625), SC_(0.3082362115383148193359375), SC_(3654141.793919204403655661205256728142241957440300628141082731059101646371030520724430384909964128784), SC_(3647638.335075404317429590465118499304246355556741957528435133374997331846826100552307056828986259046), SC_(32736.31152462869372336881902388067142880163109079490329933368094812612616501240410087252461640885444), SC_(32926.22553779601002723222114818349052058721741836389935399858684148023420777147845265982712788234444) }, + { SC_(351158.5625), SC_(0.632396042346954345703125), SC_(0.913384497165679931640625), SC_(602359.9903241230222890344295450543738816497855916130211465949894836608221033545377580862469476139977), SC_(605851.7108319734397170084515456312135309963681938633425405004576931020533829124563886086041224327663), SC_(204898.6566054730005298914658559617725745700970030516376528675373070146858944610635348586868475096838), SC_(203351.1733149136882496804123086079935557800458596109300162068939862204311464333004548017559846177939) }, + { SC_(355726.78125), SC_(0.1355634629726409912109375), SC_(0.913384497165679931640625), SC_(55440.82921915017197465083996296448271754988227747041837504332409715916539882085302178395821504200151), SC_(56132.7710699567779689725449637710600164870011978837165054983358344306409921311989095091795577262597), SC_(2273907.471388275387755608087302583133561788028342946986353900067859844866888914376019490391315552378), SC_(2262765.663945573564692354193802400847630601049179129097784688737785611391441146638549948007102866955) }, + { SC_(358220.75), SC_(0.1355634629726409912109375), SC_(0.632396042346954345703125), SC_(56091.313247653561641695455703030259932188670787434400914737219052921114487246158484360069876791714), SC_(56263.74789148351516773025832715586215437395366640879574829839934075338591961016524267446947937807975), SC_(2285623.957280944594171390678882253940760051670866516603263650080804248558167997425315456849387897577), SC_(2282847.375877668156246186657191133270363547370955907011868023189259981816812437103437186287585113237) }, + { SC_(358924.59375), SC_(0.221111953258514404296875), SC_(0.221111953258514404296875), SC_(102170.4019312919894503834618387466999597419237968821230691300006437758947141510985188055573853921377), SC_(101614.5307882345306537662870202820788408181056673017577248435900030676705029618994987405810939552066), SC_(1262508.684682054152083147584206631197080420173051315117024616242383714815623593615703558807317707118), SC_(1266183.778858751988509967615086838122893847416317445818705554067240708768686919061079360526840996905) }, + { SC_(365052.03125), SC_(0.913384497165679931640625), SC_(0.81474220752716064453125), SC_(3843604.626440333861968920263367737813241993849038300591559421996640006275405054031257629750796115778), SC_(3855544.722969374682979777143209408666035393060939941482162083945667824899156251139928298611616027645), SC_(34792.38281555664201145460159180588707255975464719445774232409067770796933378217434599415371359382108), SC_(34443.70815672543740662161531034403501554508755136642570545106166276349027974639057390550991547842093) }, + { SC_(368572.4375), SC_(0.905801355838775634765625), SC_(0.632396042346954345703125), SC_(3542065.460260149411385270886084741307706916268417504480081622220062908906107060752292093192367729145), SC_(3546214.469516680883283470053127568488911782183896539823929176804429740337729327308907570782925933117), SC_(38399.5155835074088317071249514804110037334226039061858773903183552457884669390687462959627090949144), SC_(38260.37249760477013904757098205360288653431413888486725553565698698029975181911938448501444493496566) }, + { SC_(375118.4375), SC_(0.9688708782196044921875), SC_(0.8350250720977783203125), SC_(11656416.6360234852875487278228142980958881634879527015067015407743383106672200780063895076307730312), SC_(11694150.81018790682445109983431390984579720238410966332867625449163448846431059362241682170707525321), SC_(12161.43181686268692241000197960698453741446944119681644657106191957184070030312822179962139932315123), SC_(11944.1192363472566077536816013552527061809155775774540283937613984613057459804849492563740822674006) }, + { SC_(378506.53125), SC_(0.8350250720977783203125), SC_(0.12707412242889404296875), SC_(1919708.100485142557795799908885762925991788178026518816853197362795138532836647461619560354881283657), SC_(1911936.161015895098174256979990396123197210714941255264278179605529201134276962294326245316539776735), SC_(74440.40970981904715852378454862703503294222249752796752758888738833538118977930573966778512190560074), SC_(75122.91627978489219115922153786146222498399617581794801668597311773832263271299574401290245619122238) }, + { SC_(384877.0625), SC_(0.1355634629726409912109375), SC_(0.905801355838775634765625), SC_(60010.64080971663746323732083420095578865321449236646408366510806354560298926108087295548377879900594), SC_(60705.76941841389270002062961971523600119553646682702294336577956605406038546478739957944660765284426), SC_(2459813.075817912572146772192073738752465060654488888335638773873085909364597399239549772984287591304), SC_(2448619.955440930686947100183339089139090834469414874258319691729810802943269659597804468747457760763) }, + { SC_(388418.65625), SC_(0.221111953258514404296875), SC_(0.8350250720977783203125), SC_(109898.8285396631770619171160165523472036609787492231901122043988990909286049086344656297013300334291), SC_(110631.9324819272672273859985482291109656694473959329745132046387704078775734490651877267228077750225), SC_(1370665.801274758880587983631264261704591420639924597620488370856496192222479067322533907074464572922), SC_(1365818.94764615157152961221146653155607945140698345364852379175931800636495304103920739340747289743) }, + { SC_(394272.125), SC_(0.913384497165679931640625), SC_(0.1355634629726409912109375), SC_(4165334.607888850918822920011793465005251562626933917471278932922397731731829553085541136539177967975), SC_(4150085.737478205543804014503273503203130561557316542344283835930045288653755292794967256348040506247), SC_(37166.39541227051399406571339450287824492119078645050904982165640767804526445488066462736524326857898), SC_(37611.69284700221190722237697343787674598307233962002327423401202353196539299790225088436287745525046) }, + { SC_(396503.1875), SC_(0.905801355838775634765625), SC_(0.8350250720977783203125), SC_(3806523.100296438327446410684172772017718591821538959222253048174638610906055333548515287065490584753), SC_(3818919.048261108753055187252055998493454733654588059586855730332939465168553751743408124541931126592), SC_(41442.62333367288095028583966949178938823840108502791050816958617992365148331549867691653215392476267), SC_(41026.90719728913382755006468754845240971605407304321540204213544050243917923981018486134854815671988) }, + { SC_(398707.3125), SC_(0.12707412242889404296875), SC_(0.9688708782196044921875), SC_(57561.14731123631954040174691615980821869361971868350069170158066900820084788703028307221364410428346), SC_(58522.66861761582917467626701801603920895302547361088647082448857998042827379047023731829719192800156), SC_(2747551.548465486890836619679363710231524419820798007315309169395637143316712420256622179736780666364), SC_(2730239.845931648849818872543304302710242997924864241367346228242036303649657465666815223288938760236) }, + { SC_(401973.28125), SC_(0.9688708782196044921875), SC_(0.12707412242889404296875), SC_(12533985.58356930637465293251299489251466597293419745943433258661694200900655926905644279539555849902), SC_(12488263.5436539747416231523492022903689282612877723723167974925528872784191652492146121151460433124), SC_(12784.00708651220608115965288668810259209737905464060891806992311458898317426475469954850927124719016), SC_(13047.32205893441203067945408636963253437025550482249478832846799523816890240631411968166666632006088) }, + { SC_(403804.59375), SC_(0.81474220752716064453125), SC_(0.3082362115383148193359375), SC_(1777435.592903042182700197909787055518160996660563589394656374684781627936897121238596382253413773417), SC_(1774334.162909186862459437099410433108374088323048806859015082938597960781843676472685324672096024801), SC_(91650.11591624354787918842363217289844830211659392381360319333642553942787609611846726963010589962663), SC_(91986.39222182400007538726436351366267917251676963768415364529656626243962094824568893291121189489404) }, + { SC_(403959.59375), SC_(0.221111953258514404296875), SC_(0.1355634629726409912109375), SC_(115099.4929883859061786209975652795880795706854752319434061105734681299001653083167308694144331626131), SC_(114254.9760630674768191385269400626279449166633665079224011327223610294316745029570127871302317425694), SC_(1420195.441951416095516902363204077512664018024772210898654630652772412110228516010881042456811390486), SC_(1425778.893004168714038503841633163342227368041411695055870206981866020638784589296605307994850963072) }, + { SC_(405401.84375), SC_(0.632396042346954345703125), SC_(0.8350250720977783203125), SC_(696079.0488843015737452879182628757026130501564215373192009054579186063928136188028488445986637898546), SC_(698762.7974159608975819510449511372455540197597446737302988820402878269357574189652838471844382138037), SC_(236250.2341340432757729292000563420607817379022192453289454390440631324054427761147449349406046505737), SC_(235060.833039027409607458696841802209561589200596743952973291487543699934854658527004681940772299965) }, + { SC_(406948), SC_(0.3082362115383148193359375), SC_(0.3082362115383148193359375), SC_(181584.6425335446066115914249349549068358508185884516639660650175256843973559317479817145071040333459), SC_(181071.7856994489816650095973349629583225987488373491957115682545792971280211001761203470850140042408), SC_(912436.8909077809737432593088055301801669011979098087394858694193766092251408123922904750245147249777), SC_(914161.169529094990826246448946882583665803959032683547157871854242488330085627877570551917970022083) }, + { SC_(408714.375), SC_(0.81474220752716064453125), SC_(0.905801355838775634765625), SC_(1793382.808426413188927536578800593929967685298497215835461408368951803206496315555430815367766385682), SC_(1801577.070404655433280929566569081879172308620979657248249219780220698349264357843039279753414157698), SC_(93379.2454055821292752574016554827796146481782264701309453148786632000918842408819278373809103465414), SC_(92490.77277552127937840582717677107405538412488524870800061215531873948378440856188150966066027950148) }, + { SC_(408792.15625), SC_(0.81474220752716064453125), SC_(0.12707412242889404296875), SC_(1801373.66132175467832137104131971580273949781039258568872587215712564757699088201506092461675156164), SC_(1794268.96003102956724183638390190262875543490209128736773883666139285355179623470228563783262661808), SC_(92567.42308026508000435160706158059896344288258518085293166542929213367859091272993817128994228073659), SC_(93337.75883292126282308647530136656656176203103260139582288264183672411977043725839388324453717840386) }, + { SC_(432827.1875), SC_(0.221111953258514404296875), SC_(0.9688708782196044921875), SC_(122132.2797180468269275184806619553690906973583290750637763799135634119473145307325412606130922038921), SC_(123613.3281274628820648807712656406984001209880624117847176611009552969241896066055311446348754754715), SC_(1529574.983366214178393826620501215468627441772206445378945132220564382028053353063765028597599751922), SC_(1519783.157411033740577375127077593384257529197984651009955866894101676696503870820150983398741221697) }, + { SC_(433848.65625), SC_(0.8350250720977783203125), SC_(0.3082362115383148193359375), SC_(2197763.167982774743157488500835524133379230387517648534142427458110431323825435058097669839129081526), SC_(2194108.535707877848932375847575327408618589009719163624025802017481325560251407515673659671178213006), SC_(85554.82891792285130733217521034078612469375569378320836203115041493029855518595050817645800586969061), SC_(85875.76696194156447798584081659556002945608773676571535346933173112358550679540016685079716261765417) }, + { SC_(435303.96875), SC_(0.632396042346954345703125), SC_(0.1355634629726409912109375), SC_(750432.9935745530291548958581990736507495841323320107040789305017574728620162686917398947809384660427), SC_(747291.6230527108973954899557700426353050762020843514064452123797018082597728623307942518625116467402), SC_(252341.2550373633193785483907881377647372070700189902846995528046337924204145509462836390499909194006), SC_(253733.4680147803546979902040977118001568590059833385210343596772685918362843428637392999811502481556) }, + { SC_(437035.75), SC_(0.905801355838775634765625), SC_(0.1355634629726409912109375), SC_(4209827.931043624852220519537949412485010145736660499656475382647245920324487295693404372377653505472), SC_(4195127.205128112153652220813810721203440176037708746628269788526716780331272568068079790186739926963), SC_(45203.48921901838550576423751326271846637814980023825387384148010826704314267319921333207525130766991), SC_(45696.49944008680448185396398176431549681648587048657303327296834124950726938015292840866222071258737) }, + { SC_(437942.5), SC_(0.1355634629726409912109375), SC_(0.1355634629726409912109375), SC_(68990.15639068233795140590107730208352609742140150144831666746936335760245751973528520792249840012462), SC_(68369.78039815602113315416945807005125070153470406420533500177692336727965502694107788492827182977615), SC_(2787598.678894941073378843964515816821850304500862057788763854820767769644038876026552796156691573196), SC_(2797588.113694340018913742627594507445171030494627970176493469817100173161269938876695287565209439482) }, + { SC_(438464.6875), SC_(0.8350250720977783203125), SC_(0.1355634629726409912109375), SC_(2223338.044912987936475940295874189732295642371789392760096263916912761938024317766691971328718270096), SC_(2215265.553560989282538690162415779758128613019056704343901656876639657210396643920184748454831859803), SC_(86273.0550442960744629975989111233338250388556612939763488942071623209566814200836729682529918853192), SC_(86981.95516550206446460279269070127145314967438333676499337900809878568863551973518051166075249626345) }, + { SC_(442826.46875), SC_(0.12707412242889404296875), SC_(0.81474220752716064453125), SC_(64220.52123727686412772083291494428044503394834468397496541028758365571376222939501515299329019898606), SC_(64707.22763031229934428593603120980179998788862466100788896391577059765303131067167486838428452704166), SC_(3046343.715065845077854001163177997153729320145001161653770104266746456135277318795507669646536041623), SC_(3037580.81916373654114723975501711757767412568439943641582123414790598065532904749522900783990005693) }, + { SC_(444455.90625), SC_(0.8350250720977783203125), SC_(0.913384497165679931640625), SC_(2244598.615938371033696324056534336644121299576168690028505985276536634401629429955656423593562113675), SC_(2254656.801650994202881716472100139702080360588304592135313670593357739541123899443461454002715936083), SC_(88252.97153270402210024148568731464439353087969254980122792280750562320836557638811178935948670162), SC_(87369.69421479324978949378422290555317890407874358782578533391775032292925987731632272873316208837119) }, + { SC_(444787.5), SC_(0.3082362115383148193359375), SC_(0.81474220752716064453125), SC_(197709.5934359073641131507881276432404786019544584082153717812638337581749766345780086005392317002321), SC_(198668.2422420257082204876948613416059110626505691269749150555301634979900987830468440543026958174391), SC_(999832.9446635864547197253597936625232167091650862667347669846661495124634300890408636721178392580368), SC_(996609.8664928164750155069790992235633340893788583985190840616640940007517187997698141198643034122365) }, + { SC_(447784.125), SC_(0.905801355838775634765625), SC_(0.3082362115383148193359375), SC_(4309215.492501671925809832514318376984464865533985073180745237127437173031662507149488131990466382121), SC_(4302442.993796975461951818475657533432163014312795733466958314311460147985984586787016273725730126812), SC_(46454.01345314769379131891472489178239197720010843570996805398450530856087914723922026517728261068004), SC_(46681.13910932863514692673356251657298788786211149127194108456212408192478529014875518269720403989473) }, + { SC_(447976.40625), SC_(0.12707412242889404296875), SC_(0.632396042346954345703125), SC_(65120.97649742027261635798513850769877013435252223655251562328807365809347684518801175854233446230617), SC_(65305.8564311068669144896497768007874610303496876016522873232441124263575099188323450965313451394283), SC_(3079002.009777455847614095833427016491775436928079602959037554706864401189117120976234121602271559739), SC_(3075673.343007852414765473783587634909885248447311793172436329302049106864266224074483562352620124036) }, + { SC_(448846.15625), SC_(0.9688708782196044921875), SC_(0.905801355838775634765625), SC_(13942148.14815611659064722112747818128627692558477209845530274937530403703010314738619713308434710383), SC_(13997877.13137363238891165544798253008428157956288687495976169844140682358130508342293587223794208822), SC_(14582.20509558332364458183492591473653375236960659867288176623116326823028248461128186433315865346464), SC_(14261.25976832042826122812485513044218145263768128533306080932256002127144716956873137761320234726799) }, + { SC_(467754.28125), SC_(0.9688708782196044921875), SC_(0.1355634629726409912109375), SC_(14582307.27749050806862514534441144029293736814556627825608323590943974657212073974512771840178001964), SC_(14534709.85379777204144202250848456557271434486494359952219887901749931232339169351948582272785520112), SC_(14892.0869980069314749260353980304174964844718061074818482931435407581107499244785056336160375827793), SC_(15166.20253163388900385334372720029740009082048553955730836477017740142502713368416445237970556885013) }, + { SC_(473141.4375), SC_(0.81474220752716064453125), SC_(0.221111953258514404296875), SC_(2083396.177078763261310247756210796709050986068912986314606144732424519707190749275957193786929212863), SC_(2078245.423957970390429173580046940301627576838628045485422158201767188767913815871568210851554479025), SC_(107305.0550947709258110643640197054815587384906300543600549141575195933780408202908438136093287591433), SC_(107863.5317465997746516385261209267501517088116598822296362271288937537024663332026184699882279661038) }, + { SC_(475931.78125), SC_(0.1355634629726409912109375), SC_(0.221111953258514404296875), SC_(74863.22159423657178639135843064319186867849712135432679140745009910166430025378444104631149358051552), SC_(74411.62359846101533194367027997650975048798856694024723181729993473406725909453910573442714644750971), SC_(3031199.27574924233997859053704277970442582820164378907041604417813349570600051850022942680116940976), SC_(3038471.007954823489719352635939274579304822773919251533092003024823266976921005941089319124285500496) }, + { SC_(480505.75), SC_(0.913384497165679931640625), SC_(0.905801355838775634765625), SC_(5057009.137883346991297280272316655884843512474132092967659893246907363070814150415616505779213755808), SC_(5077130.008669136984101475927154584113851934847615921791753015711169641012846352004783223552006266754), SC_(45860.39578823761216780930027528343441271409993632576700986556608110936794777922189190471234767214715), SC_(45272.82619384517959483726844004670545212496499292353295676138585412022031957970747357936964957150843) }, + { SC_(481037.90625), SC_(0.3082362115383148193359375), SC_(0.1355634629726409912109375), SC_(214954.0730415459324272322098059261658344195921911048215227103731874995082410590810383910277671282622), SC_(213728.9433236639020931731891795221242722212174046095998104798208675703012870270153304541107798144009), SC_(1077517.795801841403487141321214750115179387272101781637533476788045360859794269288938283235224199637), SC_(1081636.810871830922880032963090014830142863695032235420818616239563778235210349598024972698342430219) }, + { SC_(485980.90625), SC_(0.1355634629726409912109375), SC_(0.81474220752716064453125), SC_(75947.50287755040088992558685298601037560620447249457062259186705941456229777606961809318551961112457), SC_(76479.30117347133042069077426985013802863207922409730304956347781449509840371152867686698312667407036), SC_(3103196.634482552348526388073690399281667050881158209209257160529514613456386016945448500178200416261), SC_(3094633.498847298449800834614348937260696174622946733336073730690861985736659159836937933593087681597) }, + { SC_(489096.34375), SC_(0.81474220752716064453125), SC_(0.632396042346954345703125), SC_(2149835.420432935738571504824669405535112026843128171823218720145168010286191521063636486128819640379), SC_(2152140.267058834375526429568585141743365314468040624002321395548815791537567896033314059219767174233), SC_(111336.990938262038284792110970236277584339209153903880265239957333478239591138095337997321244983344), SC_(111087.0851343228376540732483260823293660124553023808030297399680696356784984406728076454354233386814) }, + { SC_(490224.65625), SC_(0.8350250720977783203125), SC_(0.9688708782196044921875), SC_(2474059.781112585100225923474277388945644841132414541483235018154724374112161333898186161710511319547), SC_(2488521.187172101754693537105176727049011115863706614369301342646676606307103207412127159070864309253), SC_(97489.16520339287822299971952377074411630970076546169823169145986944645114749814051528899672166177443), SC_(96219.21150955986998802274923363974940278386581612184471409847771598317921003666209856647350389402225) }, + { SC_(492616.1875), SC_(0.81474220752716064453125), SC_(0.9688708782196044921875), SC_(2160097.330587066231445009615179450496605337977400732745848956148755035070499897025280043407966765649), SC_(2172849.060248862788069481343937878596794903922837153025629325486461452111332884974573767684987699383), SC_(112704.513279915547893306409021394612149255526474732330209037454571458216341356862770454420824870536), SC_(111321.8919149126350976334581215168831576517722380867094186255880986306392649715612321977436708934672) }, + { SC_(493067.15625), SC_(0.1355634629726409912109375), SC_(0.9688708782196044921875), SC_(76767.64922907893070937377260795058987611362823891825524085896234884328550113407276897167228036558757), SC_(77882.89867960827431192138690174915177255321134308258910288268085009341055734572331426861469361693711), SC_(3153086.514367219226967064126240311772170736384107525381665234442715424152190338059638973443194990823), SC_(3135128.509847232411063129274533589230908159139891303513987728335691375301577612946664126754477170654) }, + { SC_(497097), SC_(0.12707412242889404296875), SC_(0.1355634629726409912109375), SC_(72681.11415387065674957690132016868169191955575858086107661197432136383823238646114474079457781392721), SC_(72047.41954020240893325737182119598226364424389984420063381611270985375436608408806330762383061821211), SC_(3409065.827055807531678961859073645657230358185950103860885952543964343334592856668738573506077026751), SC_(3420475.169677388105656745142209467687699219296898877898752790493449083963329175908034795593158414778) }, + { SC_(497481.8125), SC_(0.3082362115383148193359375), SC_(0.12707412242889404296875), SC_(222314.1253130015627660072636473322752712891751839119915721545837501534862620518004663188386017641378), SC_(221023.1037330142642378955151286775664560624517786400554218612145985519782410506686001446831861587568), SC_(1114311.595597452012343496149547782092708841542094172969811686130629128619077973244337814566303316361), SC_(1118652.146040181182739176928249543706836426766938346914879802716806902165572254306413904435006003401) } + } }; +#undef SC_ + diff --git a/test/ibeta_large_data.ipp b/test/ibeta_large_data.ipp new file mode 100644 index 000000000..d9a1b4ef5 --- /dev/null +++ b/test/ibeta_large_data.ipp @@ -0,0 +1,1222 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1210> ibeta_large_data = { { + { SC_(0.104760829344741068780422210693359375e-4), SC_(39078.1875), SC_(0.913384497165679931640625), SC_(95444.37547576888548779405522478045372688), SC_(BOOST_MATH_SMALL_CONSTANT(0.4076397251031275963346153642645211144346e-41521)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4270966445860582673748568606264586002504e-41526)) }, + { SC_(0.1127331415773369371891021728515625e-4), SC_(0.0226620174944400787353515625), SC_(0.1355634629726409912109375), SC_(88703.20318198098901713372585734808194292), SC_(45.9460483635769831377505786833842050448), SC_(0.9994822930837981780736860587426162687504), SC_(0.0005177069162018219263139412573837312496096) }, + { SC_(0.113778432933031581342220306396484375e-4), SC_(0.03654421865940093994140625), SC_(0.9688708782196044921875), SC_(87893.29210911967129223056449206866305889), SC_(24.13233514927218107101077084629346084654), SC_(0.999725511349976252733137998478545702411), SC_(0.0002744886500237472668620015214542975889712) }, + { SC_(0.1142846667789854109287261962890625e-4), SC_(0.00244517601095139980316162109375), SC_(0.1355634629726409912109375), SC_(87498.94901523223439182946063290895919618), SC_(410.8174698800966982396187764410683048418), SC_(0.9953268278792474174353255397883295739773), SC_(0.004673172120752582564674460211670426022665) }, + { SC_(0.1184685606858693063259124755859375e-4), SC_(0.015964560210704803466796875), SC_(0.3082362115383148193359375), SC_(84409.76586511709213323237371074024560834), SC_(63.42758275377907514602214367744158071269), SC_(0.9992491395179357013663738064942314292026), SC_(0.000750860482064298633626193505768570797446) }, + { SC_(0.1215800511999987065792083740234375e-4), SC_(24110.49609375), SC_(0.1355634629726409912109375), SC_(82239.66859351932879196086451784571067159), SC_(0.1228963536503215267489197519054078145969e-1528), SC_(1), SC_(0.1494368298804234679967895435418141236754e-1533) }, + { SC_(0.130341722979210317134857177734375e-4), SC_(26168.341796875), SC_(0.12707412242889404296875), SC_(76710.65536325700740870385917451316226344), SC_(0.8987481009726700678494101665597031705645e-1548), SC_(1), SC_(0.1171607903382812021950729983554623721701e-1552) }, + { SC_(0.13885271982871927320957183837890625e-4), SC_(0.04976274073123931884765625), SC_(0.632396042346954345703125), SC_(72019.23463150248088958543324182892626471), SC_(19.53662131349699149968802706905083676178), SC_(0.9997288040735046086759949196286322002492), SC_(0.0002711959264953913240050803713677997508421) }, + { SC_(0.139016165121574886143207550048828125e-4), SC_(0.3188882328686304390430450439453125e-4), SC_(0.81474220752716064453125), SC_(71935.56143195648321209894597982190925135), SC_(31357.46843093207518473308985368320533006), SC_(0.6964222225589077802406713530999497187926), SC_(0.3035777774410922197593286469000502812074) }, + { SC_(0.14759907571715302765369415283203125e-4), SC_(2.8241312503814697265625), SC_(0.632396042346954345703125), SC_(67749.64468000029269520566988398084664291), SC_(0.02906706447901268252429885336709779665611), SC_(0.9999995709637719063997441118286889404404), SC_(0.4290362280936002558881713110595595793096e-6) }, + { SC_(0.150794721776037476956844329833984375e-4), SC_(0.4875471131526865065097808837890625e-4), SC_(0.221111953258514404296875), SC_(66314.05927892349341973416366818795267336), SC_(20512.09739510432080805623001488366337009), SC_(0.763756704421306309320206420222803196485), SC_(0.236243295578693690679793579777196803515) }, + { SC_(0.1519624856882728636264801025390625e-4), SC_(16177.537109375), SC_(0.81474220752716064453125), SC_(65795.44709267135893551075697872372424105), SC_(BOOST_MATH_SMALL_CONSTANT(0.2027537374480409874707652773038782413935e-11849)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3081577014933374612265415972232266786926e-11854)) }, + { SC_(0.1554497794131748378276824951171875e-4), SC_(40.46924591064453125), SC_(0.905801355838775634765625), SC_(64325.19244254056356455961240584532088293), SC_(0.822463871000651749828830546797984530393e-43), SC_(1), SC_(0.1278603047686689558334345413308146407234e-47) }, + { SC_(0.15675454051233828067779541015625e-4), SC_(0.000101913392427377402782440185546875), SC_(0.81474220752716064453125), SC_(63795.48621858577102490380365796969496633), SC_(9810.772055381842015487811747997830665087), SC_(0.8667128001689005026050394523916069667826), SC_(0.1332871998310994973949605476083930332174) }, + { SC_(0.15971760149113833904266357421875e-4), SC_(19.206241607666015625), SC_(0.913384497165679931640625), SC_(62607.00088023805345936256566188949995708), SC_(0.2234001688321881800710378923972526401497e-21), SC_(0.9999999999999999999999999964317062678097), SC_(0.3568293732190334165134476285535997648472e-26) }, + { SC_(0.16304524251609109342098236083984375e-4), SC_(0.00039033559733070433139801025390625), SC_(0.12707412242889404296875), SC_(61330.74255992408673684618143646855164824), SC_(2563.824473817131717490401647850652347432), SC_(0.9598741396516039259205408266092071862094), SC_(0.04012586034839607407945917339079281379055) }, + { SC_(0.16487292668898589909076690673828125e-4), SC_(470997.15625), SC_(0.12707412242889404296875), SC_(60639.13353449960017258664254772876309268), SC_(BOOST_MATH_SMALL_CONSTANT(0.5384739990831595984009356761636892828401e-27804)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.887997515295636614071071990663640203201e-27809)) }, + { SC_(0.165044693858362734317779541015625e-4), SC_(3.57584381103515625), SC_(0.3082362115383148193359375), SC_(60587.77026541341888225085862457381274413), SC_(0.1732225036748861524733225741802535443988), SC_(0.9999971409740337294746579825837771947623), SC_(0.2859025966270525342017416222805237665672e-5) }, + { SC_(0.166259487741626799106597900390625e-4), SC_(147818.875), SC_(0.632396042346954345703125), SC_(60134.46375982525806101037989862809783137), SC_(BOOST_MATH_SMALL_CONSTANT(0.1037988440880944042360986327562736779854e-64249)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1726112408728927999761612396367365655052e-64254)) }, + { SC_(0.16847467122715897858142852783203125e-4), SC_(0.002207652665674686431884765625), SC_(0.9688708782196044921875), SC_(59359.52475707738611546412137293027748567), SC_(449.5447623669572666846242510916839845304), SC_(0.9924836690157701392419526809332561139692), SC_(0.007516330984229860758047319066743886030786) }, + { SC_(0.1747490387060679495334625244140625e-4), SC_(0.26349246501922607421875), SC_(0.632396042346954345703125), SC_(57225.14946260528992955268005621257633375), SC_(3.201269200695144242963625771809339374153), SC_(0.9999440614807213732173180138063205712752), SC_(0.5593851927862678268198619367942872477437e-4) }, + { SC_(0.17863809262053109705448150634765625e-4), SC_(439.38714599609375), SC_(0.8350250720977783203125), SC_(55972.44090864893014330138933206516204433), SC_(0.3791074904984294581987640686637822179263e-346), SC_(1), SC_(0.6773109843774015299501716456463481210658e-351) }, + { SC_(0.1895247623906470835208892822265625e-4), SC_(1.07109558582305908203125), SC_(0.9688708782196044921875), SC_(52763.41949943324228341686952963434540238), SC_(0.02308304962964954759921229436647956617731), SC_(0.9999995625181280852782419366072564332654), SC_(0.4374818719147217580633927435667345739681e-6) }, + { SC_(0.19740999050554819405078887939453125e-4), SC_(105.41565704345703125), SC_(0.3082362115383148193359375), SC_(50650.76748327468387622526146707985788856), SC_(0.4058462091652395705622130232256784578791e-18), SC_(0.999999999999999999999991987363087849489), SC_(0.8012636912150510965168560289672323749562e-23) }, + { SC_(0.2004335328820161521434783935546875e-4), SC_(482.00701904296875), SC_(0.905801355838775634765625), SC_(49885.0975467399541005594058055485920959), SC_(0.6952488973381382600133321305803386175123e-497), SC_(1), SC_(0.1393700587007418889673088312510010012273e-501) }, + { SC_(0.2017128645093180239200592041015625e-4), SC_(232.9792938232421875), SC_(0.1355634629726409912109375), SC_(49569.39447695058637088307802861825336459), SC_(0.5613839078401083563926364753233791797764e-16), SC_(0.9999999999999999999988674787865299668824), SC_(0.1132521213470033117556444752410328436421e-20) }, + { SC_(0.20203804524498991668224334716796875e-4), SC_(42.8336334228515625), SC_(0.1355634629726409912109375), SC_(49491.30543730291452299570686539488489706), SC_(0.0002970093232930177329636992017779607619212), SC_(0.9999999939987575820392696584870441824195), SC_(0.6001242417960730341512955817580536150083e-8) }, + { SC_(0.20300331016187556087970733642578125e-4), SC_(42.38938140869140625), SC_(0.9688708782196044921875), SC_(49255.96842848213676438936988840982061108), SC_(0.3254102070311191847990477740588760715854e-65), SC_(1), SC_(0.660651322902325825501909533025783367306e-70) }, + { SC_(0.2051885167020373046398162841796875e-4), SC_(236087.890625), SC_(0.8350250720977783203125), SC_(48722.72335464117531549642945589803667543), SC_(BOOST_MATH_SMALL_CONSTANT(0.3623657681223884685762672034466978337415e-184763)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7437305289460397760237525357326064309497e-184768)) }, + { SC_(0.21041001673438586294651031494140625e-4), SC_(3.8230969905853271484375), SC_(0.12707412242889404296875), SC_(47523.85310963552184634237668034540815544), SC_(0.6195869439847247414271234613685101142876), SC_(0.9999869627813034247834524610650576290292), SC_(0.1303721869657521654753893494237097084781e-4) }, + { SC_(0.2107691761921159923076629638671875e-4), SC_(0.04489715397357940673828125), SC_(0.221111953258514404296875), SC_(47443.99666807844164422517130961809149441), SC_(23.47266252209839487239051712128153957277), SC_(0.999505500022370764381415753210237199735), SC_(0.0004944999776292356185842467897628002650075) }, + { SC_(0.21139929231139831244945526123046875e-4), SC_(0.17535277947899885475635528564453125e-4), SC_(0.8350250720977783203125), SC_(47305.46963235175970278465413513213767625), SC_(57026.27394012006075825157468938510447443), SC_(0.4534139659948462776784686703995923371492), SC_(0.5465860340051537223215313296004076628508) }, + { SC_(0.21433561414596624672412872314453125e-4), SC_(3719.279052734375), SC_(0.81474220752716064453125), SC_(46647.00459679377138587098836772819692673), SC_(0.1495926352972579290785339523472754005755e-2726), SC_(1), SC_(0.3206907637270668567387926794334274553413e-2731) }, + { SC_(0.22448601157520897686481475830078125e-4), SC_(445071.28125), SC_(0.221111953258514404296875), SC_(44532.62436928473062336268384761066982164), SC_(BOOST_MATH_SMALL_CONSTANT(0.4607684427809900763431582243857051777023e-48306)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1034676148793947213721892942120911058743e-48310)) }, + { SC_(0.22683978386339731514453887939453125e-4), SC_(0.0405500046908855438232421875), SC_(0.905801355838775634765625), SC_(44086.07924003136859651634907996836330649), SC_(22.49465708555873548404357783254789649371), SC_(0.9994900162236478687022169258555052598576), SC_(0.0005099837763521312977830741444947401424393) }, + { SC_(0.234849067055620253086090087890625e-4), SC_(25542.79296875), SC_(0.9688708782196044921875), SC_(42569.81566430276714554195940795833966451), SC_(BOOST_MATH_SMALL_CONSTANT(0.7581371473885469585126327225518771230987e-38493)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1780926545153655561405185897694774794731e-38497)) }, + { SC_(0.23615430109202861785888671875e-4), SC_(4.50702953338623046875), SC_(0.905801355838775634765625), SC_(42343.22752013782255946235697838204438231), SC_(0.5715334129764534783145383504186846510886e-5), SC_(0.999999999865023653988705273815604260127), SC_(0.1349763460112947261843957398729530965949e-9) }, + { SC_(0.2399934965069405734539031982421875e-4), SC_(462.945892333984375), SC_(0.81474220752716064453125), SC_(41661.08259105714016534966079504412432568), SC_(0.2775658605653054188832508127259377541357e-341), SC_(1), SC_(0.6662473543711679396846266818523256261124e-346) }, + { SC_(0.24066381229204125702381134033203125e-4), SC_(1270.3814697265625), SC_(0.12707412242889404296875), SC_(41544.01619584179617307996501816686679587), SC_(0.6432823532988754950678493440100093053861e-77), SC_(1), SC_(0.1548435640565879148514421887738552981949e-81) }, + { SC_(0.25217834263457916676998138427734375e-4), SC_(1832.2723388671875), SC_(0.913384497165679931640625), SC_(39646.38644935289616324338485234769483149), SC_(0.1452763128621285161831040219171995838252e-1949), SC_(1), SC_(0.3664301488048974504586999693295043470729e-1954) }, + { SC_(0.252623358392156660556793212890625e-4), SC_(0.18408362567424774169921875), SC_(0.1355634629726409912109375), SC_(39582.74118681315029489567111244553726972), SC_(7.044686151999700105392458377191074685903), SC_(0.9998220579880223516008255071920565810242), SC_(0.0001779420119776483991744928079434189758066) }, + { SC_(0.2568908166722394526004791259765625e-4), SC_(0.0026883506216108798980712890625), SC_(0.905801355838775634765625), SC_(38929.29587722904553152445726009402934876), SC_(369.7184745062910124389774018949948166521), SC_(0.9905921692794321886093269352728967872691), SC_(0.00940783072056781139067306472710321273093) }, + { SC_(0.26870451620197854936122894287109375e-4), SC_(0.000144985810038633644580841064453125), SC_(0.8350250720977783203125), SC_(37217.22199709670655355686997165747036372), SC_(6895.605189165562504177708220015695722412), SC_(0.8436825379600015811441576566235048540017), SC_(0.1563174620399984188558423433764951459983) }, + { SC_(0.27549775040824897587299346923828125e-4), SC_(0.1503586471080780029296875), SC_(0.12707412242889404296875), SC_(36295.98898214209116290907229901584968788), SC_(8.375418806411123975304744110348984534574), SC_(0.999769299946587350130083574806330185546), SC_(0.0002307000534126498699164251936698144539948) }, + { SC_(0.2782344745355658233165740966796875e-4), SC_(0.295027554035186767578125), SC_(0.8350250720977783203125), SC_(35941.82178311282183858216166056846305608), SC_(2.074584015871362718585422877982321716874), SC_(0.9999422827176363493743336035161848668839), SC_(0.5771728236365062566639648381513311607213e-4) }, + { SC_(0.28775624741683714091777801513671875e-4), SC_(25491.8359375), SC_(0.905801355838775634765625), SC_(34740.91309313126314329366380972784559115), SC_(BOOST_MATH_SMALL_CONSTANT(0.1416279658206675284644779676116805674026e-26157)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4076690944794690667194646507475445069595e-26162)) }, + { SC_(0.2893155397032387554645538330078125e-4), SC_(494.983856201171875), SC_(0.9688708782196044921875), SC_(34557.55760263256678063136756722525969856), SC_(0.2890949069585648946963256640313804418152e-748), SC_(1), SC_(0.8365605876514313574231285595563498875846e-753) }, + { SC_(0.29415024982881732285022735595703125e-4), SC_(0.00041924233664758503437042236328125), SC_(0.3082362115383148193359375), SC_(33995.42298781772266213120899206663131448), SC_(2386.063098878378675267956366611194207388), SC_(0.9344154580933704966321633296307533232161), SC_(0.06558454190662950336783667036924667678394) }, + { SC_(0.29590575650217942893505096435546875e-4), SC_(0.283195674419403076171875), SC_(0.81474220752716064453125), SC_(33795.39511420584887740898771673983552197), SC_(2.290823897771470125511242490096281441071), SC_(0.9999322195045552279110293804079128871172), SC_(0.6778049544477208897061959208711288282975e-4) }, + { SC_(0.299345629173330962657928466796875e-4), SC_(4.095668792724609375), SC_(0.81474220752716064453125), SC_(33404.33980056291121139398867359007762442), SC_(0.0002879141232846902209324334859829932849643), SC_(0.9999999913809366530785803322881992366014), SC_(0.861906334692141966771180076339861949515e-8) }, + { SC_(0.30238283216021955013275146484375e-4), SC_(47.60295867919921875), SC_(0.221111953258514404296875), SC_(33066.23130522049694371736967150705819949), SC_(0.6066711009943786655226912341571896993929e-6), SC_(0.9999999999816528501423908342357451119694), SC_(0.1834714985760916576425488803055205902901e-10) }, + { SC_(0.3114132778136990964412689208984375e-4), SC_(348144), SC_(0.3082362115383148193359375), SC_(32098.33389035029241397207487302347639031), SC_(BOOST_MATH_SMALL_CONSTANT(0.1762609719892802507741212026091836262589e-55722)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5491281030080801389728927665390102499293e-55727)) }, + { SC_(0.31231902539730072021484375e-4), SC_(33712.953125), SC_(0.221111953258514404296875), SC_(32007.54161537159159710306959672364944529), SC_(0.2695260440597220947109382805026254025866e-3662), SC_(1), SC_(0.8420704323329926310015340121536534269201e-3667) }, + { SC_(0.3187526090187020599842071533203125e-4), SC_(0.4971525049768388271331787109375e-4), SC_(0.905801355838775634765625), SC_(31374.55539344689310304928706875069870009), SC_(20112.28887924914257320836126084639953446), SC_(0.6093703321041394434571656013777815272162), SC_(0.3906296678958605565428343986222184727838) }, + { SC_(0.3188861956004984676837921142578125e-4), SC_(16.32230377197265625), SC_(0.8350250720977783203125), SC_(31355.81127255330873045397584652154569512), SC_(0.1222074701559891111911389773172013021319e-13), SC_(0.999999999999999999610255754208595422225), SC_(0.3897442457914045777750191938125222519392e-18) }, + { SC_(0.319889441016130149364471435546875e-4), SC_(3931.19482421875), SC_(0.3082362115383148193359375), SC_(31251.94800013161196897912799096276134602), SC_(0.5745864678972875412080359974019879563813e-632), SC_(1), SC_(0.1838562088657218338652843181267156977738e-636) }, + { SC_(0.32712865504436194896697998046875e-4), SC_(3109.48583984375), SC_(0.9688708782196044921875), SC_(30560.39464204411290636833886910765434566), SC_(0.1108549488685000006098886343654101789748e-4688), SC_(1), SC_(0.3627405672176397453051972129897762624733e-4693) }, + { SC_(0.3275294511695392429828643798828125e-4), SC_(25796.328125), SC_(0.8350250720977783203125), SC_(30520.87225244356335157942706699076684673), SC_(BOOST_MATH_SMALL_CONSTANT(0.8381445176678792659668927836693079104497e-20192)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2746135532220170098568726383437115956981e-20196)) }, + { SC_(0.334105643560178577899932861328125e-4), SC_(3378.014404296875), SC_(0.221111953258514404296875), SC_(29921.95193372606848176520231044586993696), SC_(0.3367989592512801451610310755314039758674e-369), SC_(1), SC_(0.1125591538938548898321239668571790685691e-373) }, + { SC_(0.334107098751701414585113525390625e-4), SC_(4.2327022552490234375), SC_(0.913384497165679931640625), SC_(29928.62516317695550339210665359170562499), SC_(0.809428035585891781081852118385381939328e-5), SC_(0.9999999997295472040717495972301680634642), SC_(0.2704527959282504027698319365358097631894e-9) }, + { SC_(0.3407927579246461391448974609375e-4), SC_(288782.71875), SC_(0.81474220752716064453125), SC_(29330.19888791878932947154534551660334586), SC_(BOOST_MATH_SMALL_CONSTANT(0.135184030849881991590274414805713778675e-211458)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4609039010150209477801496667289009548031e-211463)) }, + { SC_(0.346417873515747487545013427734375e-4), SC_(411.559112548828125), SC_(0.913384497165679931640625), SC_(28860.27563597394879233427806328876239557), SC_(0.1522697740032561870065865846935945974367e-439), SC_(1), SC_(0.527610255438634632761400523758123631574e-444) }, + { SC_(0.3529437162796966731548309326171875e-4), SC_(0.22326681573758833110332489013671875e-4), SC_(0.632396042346954345703125), SC_(28333.67188577703227003090077461249901366), SC_(44788.91695876111389744122818346075462797), SC_(0.3874817937042091089750716503682375456457), SC_(0.6125182062957908910249283496317624543543) }, + { SC_(0.358525212504900991916656494140625e-4), SC_(0.4175899922847747802734375), SC_(0.905801355838775634765625), SC_(27892.98297091729514155146883067834541719), SC_(0.9191818316297753966421503516069036609437), SC_(0.9999670472124482163691157081516938377334), SC_(0.329527875517836308842918483061622666184e-4) }, + { SC_(0.3616316462284885346889495849609375e-4), SC_(311936.78125), SC_(0.905801355838775634765625), SC_(27639.22261434461938975554213848538169757), SC_(BOOST_MATH_SMALL_CONSTANT(0.21872320557191207599327386050169592483e-320038)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7913507866114722691803263837905894928814e-320043)) }, + { SC_(0.362039208994247019290924072265625e-4), SC_(3.842815399169921875), SC_(0.221111953258514404296875), SC_(27619.24145744833795205594628565485626954), SC_(0.2885911357778822591534545401320889491212), SC_(0.9999895511931133427608999244407741894681), SC_(0.1044880688665723910007555922581053190729e-4) }, + { SC_(0.3621911673690192401409149169921875e-4), SC_(0.001695460639894008636474609375), SC_(0.913384497165679931640625), SC_(27612.07735758991527179555055475190235649), SC_(587.4590726384651825885815591687179437043), SC_(0.9791677755380141364366349977092058495222), SC_(0.02083222446198586356336500229079415047777) }, + { SC_(0.36229626857675611972808837890625e-4), SC_(0.004191714338958263397216796875), SC_(0.12707412242889404296875), SC_(27599.79194493898806466554839813002500616), SC_(240.4865490349295080263659930502620987497), SC_(0.9913619201371500903163174293666919250546), SC_(0.008638079862849909683682570633308074945419) }, + { SC_(0.3714940612553618848323822021484375e-4), SC_(0.00259495410136878490447998046875), SC_(0.632396042346954345703125), SC_(26918.86986823624863883899272517520565716), SC_(384.8197974694066082527997026471724900083), SC_(0.9859059415712319237580331908573981554027), SC_(0.01409405842876807624196680914260184459732) }, + { SC_(0.3718810694408603012561798095703125e-4), SC_(1.01127374172210693359375), SC_(0.1355634629726409912109375), SC_(26888.31759685705379594950317256428025768), SC_(1.981430989726498944950388740699451364096), SC_(0.9999263142820511371425674052947570323764), SC_(0.7368571794886285743259470524296762357664e-4) }, + { SC_(0.3756858131964690983295440673828125e-4), SC_(386440.28125), SC_(0.913384497165679931640625), SC_(26604.54823315935969085332892717711494674), SC_(BOOST_MATH_SMALL_CONSTANT(0.4065286066478631235489668166780115749874e-410561)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.152804175844329602500189843747099318363e-410565)) }, + { SC_(0.3779314647545106709003448486328125e-4), SC_(0.015007309615612030029296875), SC_(0.8350250720977783203125), SC_(26461.40422999164437038149048593427607469), SC_(65.02937587019798712765467475392460775433), SC_(0.9975485066392103415098279398679676242021), SC_(0.002451493360789658490172060132032375797861) }, + { SC_(0.3796306918957270681858062744140625e-4), SC_(26.5066623687744140625), SC_(0.3082362115383148193359375), SC_(26337.55438031456065854766964405203660784), SC_(0.650968760775798160106200264618281989814e-5), SC_(0.9999999997528362917775482883034768425904), SC_(0.2471637082224517116965231574095716914252e-9) }, + { SC_(0.382418438675813376903533935546875e-4), SC_(0.041891194880008697509765625), SC_(0.12707412242889404296875), SC_(26147.43384232011674693762277429193851936), SC_(25.73732536299210380242827376122671812981), SC_(0.9990166523881228866321958851431044023592), SC_(0.0009833476118771133678041148568955976407561) }, + { SC_(0.3837459371425211429595947265625e-4), SC_(0.468349933624267578125), SC_(0.913384497165679931640625), SC_(26059.76048433521995668834278068219745685), SC_(0.6987607570621884456957464270944079098916), SC_(0.9999731869361744352453122586012926205363), SC_(0.2681306382556475468774139870737946368093e-4) }, + { SC_(0.3972529884777031838893890380859375e-4), SC_(0.00289903464727103710174560546875), SC_(0.8350250720977783203125), SC_(25174.48903569539400579147933223238025856), SC_(343.3239985735199759551980828118697972407), SC_(0.986545712279008544056699869292160934395), SC_(0.01345428772099145594330013070783906560505) }, + { SC_(0.3992606434621848165988922119140625e-4), SC_(495351.78125), SC_(0.9688708782196044921875), SC_(25032.60889109550663689197939247915216651), SC_(BOOST_MATH_SMALL_CONSTANT(0.696740351458271689129001813176869375763e-746418)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2783330952396708475154173721707152958145e-746422)) }, + { SC_(0.4005068331025540828704833984375e-4), SC_(42.8498382568359375), SC_(0.12707412242889404296875), SC_(24964.03974453176254732786393631764995119), SC_(0.0004764518849491958406381833364919699287086), SC_(0.9999999809144721474726734378650429764282), SC_(0.1908552785252732656213495702357176544891e-7) }, + { SC_(0.401491633965633809566497802734375e-4), SC_(3246.22998046875), SC_(0.905801355838775634765625), SC_(24898.4584653078017864790087780927673871), SC_(0.1108057695326287750167782477290997721268e-3333), SC_(1), SC_(0.4450306419050789325668215199282677439922e-3338) }, + { SC_(0.401874640374444425106048583984375e-4), SC_(0.4230124056339263916015625), SC_(0.9688708782196044921875), SC_(24884.65638019556468000577131054549427565), SC_(0.5499362787544073007908815351717741538709), SC_(0.9999779010761751112114263009977381864979), SC_(0.2209892382488878857369900226181350205022e-4) }, + { SC_(0.40288010495714843273162841796875e-4), SC_(2569.28173828125), SC_(0.8350250720977783203125), SC_(24812.8533303734616332218096405631482841), SC_(0.9878144010473054266519912609738087253485e-2014), SC_(1), SC_(0.3981059283650058546619165773436982959803e-2018) }, + { SC_(0.40309605537913739681243896484375e-4), SC_(0.0039625889621675014495849609375), SC_(0.81474220752716064453125), SC_(24809.45385325406043207665165354862438535), SC_(250.8826249698205791295193383165914277873), SC_(0.9899888564869101246312292759512497284871), SC_(0.01001114351308987536877072404875027151294) }, + { SC_(0.4062067091581411659717559814453125e-4), SC_(0.12048657238483428955078125), SC_(0.221111953258514404296875), SC_(24616.71699087330989611384352424571439851), SC_(9.408154880466094757120473718264061713371), SC_(0.9996179604048634374596919774821892391986), SC_(0.0003820395951365625403080225178107608014209) }, + { SC_(0.4116668787901289761066436767578125e-4), SC_(24253.806640625), SC_(0.3082362115383148193359375), SC_(24280.81431332926606221047228474533799192), SC_(0.3121000460868512625690086385758400813897e-3885), SC_(1), SC_(0.1285377179115116903067863941396360394018e-3889) }, + { SC_(0.416882903664372861385345458984375e-4), SC_(0.00045137223787605762481689453125), SC_(0.913384497165679931640625), SC_(23989.904870502330213515101909269354169), SC_(2213.111868591642997977556052058897902679), SC_(0.9155398063273470932413144008298325539327), SC_(0.08446019367265290675868559917016744606727) }, + { SC_(0.417713818023912608623504638671875e-4), SC_(274447), SC_(0.1355634629726409912109375), SC_(23926.73917601287382168657073522639595926), SC_(BOOST_MATH_SMALL_CONSTANT(0.1053243186220253393843550866913641343978e-17367)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4401950380585728898409181782487226374213e-17372)) }, + { SC_(0.418079944211058318614959716796875e-4), SC_(0.11457650363445281982421875), SC_(0.3082362115383148193359375), SC_(23918.0162433633390700257956287535078955), SC_(9.407728093440956133874016879229505002698), SC_(0.9996068223597883536477963324387786099182), SC_(0.0003931776402116463522036675612213900817857) }, + { SC_(0.42011219193227589130401611328125e-4), SC_(0.000218811779632233083248138427734375), SC_(0.632396042346954345703125), SC_(23803.70760352901714607612121091230507105), SC_(4569.595256369948321655519715808656289915), SC_(0.8389473626340370230854972294747071692757), SC_(0.1610526373659629769145027705252928307243) }, + { SC_(0.4257139153196476399898529052734375e-4), SC_(219.9326934814453125), SC_(0.221111953258514404296875), SC_(23483.98585440845061066129375621335062778), SC_(0.2742309436430616964714146372071762250557e-25), SC_(0.9999999999999999999999999999988322640571), SC_(0.1167735942881189541197741014749144791176e-29) }, + { SC_(0.4258894841768778860569000244140625e-4), SC_(0.15419080227729864418506622314453125e-4), SC_(0.12707412242889404296875), SC_(23478.34280619960863222452345787790270158), SC_(64856.63842900619312653853485483821631559), SC_(0.2657876016714694565174333097418585187823), SC_(0.7342123983285305434825666902581414812177) }, + { SC_(0.429383144364692270755767822265625e-4), SC_(0.0428761281073093414306640625), SC_(0.81474220752716064453125), SC_(23290.59836884916498617969483016403134016), SC_(21.8796279795074343794641287446475380789), SC_(0.999061462793338235287244798625770077551), SC_(0.0009385372066617647127552013742299224490029) }, + { SC_(0.4323314715293236076831817626953125e-4), SC_(4174.39013671875), SC_(0.1355634629726409912109375), SC_(23121.48823631931525175925257480111357524), SC_(0.1399277347281718468615718118039207924204e-266), SC_(1), SC_(0.6051848103288302512572813624272096122725e-271) }, + { SC_(0.43628693674691021442413330078125e-4), SC_(495.40863037109375), SC_(0.12707412242889404296875), SC_(22913.91488624606215427063174309270358555), SC_(0.9010090312960712504628615275371366340374e-31), SC_(0.9999999999999999999999999999999999960679), SC_(0.3932147936173475243230005286999380602616e-35) }, + { SC_(0.4396517397253774106502532958984375e-4), SC_(0.001847697305493056774139404296875), SC_(0.221111953258514404296875), SC_(22744.0159608675001616316114316006039126), SC_(542.4707485929476872268423155163880612107), SC_(0.9767044829320448042128544796818381977098), SC_(0.02329551706795519578714552031816180229023) }, + { SC_(0.45636130380444228649139404296875e-4), SC_(26.9266033172607421875), SC_(0.632396042346954345703125), SC_(21908.61132490693279868128115458396733217), SC_(0.114077674760694480313659131142998906791e-12), SC_(0.9999999999999999947930211975140291707132), SC_(0.5206978802485970829286796900444686620986e-17) }, + { SC_(0.4623167842510156333446502685546875e-4), SC_(0.43400345020927488803863525390625e-4), SC_(0.1355634629726409912109375), SC_(21628.33767970691711806181483651588374799), SC_(23043.14390569971465324345453148116785628), SC_(0.4841643239066533530875464516496873777069), SC_(0.5158356760933466469124535483503126222931) }, + { SC_(0.4653503492590971291065216064453125e-4), SC_(0.188413614523597061634063720703125e-4), SC_(0.3082362115383148193359375), SC_(21488.37715854430957260169413847909850451), SC_(53075.52915738713468516386757165996559283), SC_(0.2881873847582079845585432664242853856844), SC_(0.7118126152417920154414567335757146143156) }, + { SC_(0.4662941864808090031147003173828125e-4), SC_(0.0003559053293429315090179443359375), SC_(0.905801355838775634765625), SC_(21447.95065480673458299046695950823916045), SC_(2807.473410191298259899782228370404233737), SC_(0.8842537898876547244205053464718520707457), SC_(0.1157462101123452755794946535281479292543) }, + { SC_(0.466877463622950017452239990234375e-4), SC_(3780.931396484375), SC_(0.632396042346954345703125), SC_(21410.08338969725340269900662600119477313), SC_(0.2257391921210343612254294174028316748378e-1646), SC_(1), SC_(0.1054359238178690708697627729079251689545e-1650) }, + { SC_(0.47170542529784142971038818359375e-4), SC_(186.8951263427734375), SC_(0.632396042346954345703125), SC_(21193.86711827442353521289275282851388591), SC_(0.4985855099448642037318909421798173769551e-83), SC_(1), SC_(0.2352498990214761583545264867928475446121e-87) }, + { SC_(0.4735972834168933331966400146484375e-4), SC_(0.00372543814592063426971435546875), SC_(0.3082362115383148193359375), SC_(21114.17609539758913560451160434591780078), SC_(269.2284995693509671127780993439854580164), SC_(0.9874094652058952350894427065438275388296), SC_(0.01259053479410476491055729345617246117038) }, + { SC_(0.47360430471599102020263671875e-4), SC_(48598.65234375), SC_(0.632396042346954345703125), SC_(21103.30748867175501316330739017132629156), SC_(BOOST_MATH_SMALL_CONSTANT(0.3756295693411259570184707878046911501874e-21126)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1779955912326841294543708384397391330829e-21130)) }, + { SC_(0.4800888200406916439533233642578125e-4), SC_(0.029623560607433319091796875), SC_(0.913384497165679931640625), SC_(20831.70908451148224093013025807091311149), SC_(31.47906305784045464960320622881661698154), SC_(0.9984911671775577626496515142461326823679), SC_(0.001508832822442237350348485753867317632055) }, + { SC_(0.4828667806577868759632110595703125e-4), SC_(0.000143944707815535366535186767578125), SC_(0.221111953258514404296875), SC_(20708.38659725890917753161481227003835775), SC_(6948.3708462003657583467288361519096977), SC_(0.7487640819642206167429448551580153639244), SC_(0.2512359180357793832570551448419846360756) }, + { SC_(0.4830027683055959641933441162109375e-4), SC_(0.49858455895446240901947021484375e-4), SC_(0.913384497165679931640625), SC_(20706.17047129887892431507203038774212276), SC_(20054.42282583120409517932285215261290946), SC_(0.5079948253048804836573987501458642708508), SC_(0.4920051746951195163426012498541357291492) }, + { SC_(0.48371657612733542919158935546875e-4), SC_(33.2382659912109375), SC_(0.81474220752716064453125), SC_(20669.19764848503364624734617129261301394), SC_(0.1685156464776935048025946255601914881441e-25), SC_(0.9999999999999999999999999999991847015576), SC_(0.8152984423662183223987521601970712509975e-30) }, + { SC_(0.483796975458972156047821044921875e-4), SC_(0.00030146507197059690952301025390625), SC_(0.9688708782196044921875), SC_(20673.26308500593355276351774405787788275), SC_(3313.697649454521976780718009014432836067), SC_(0.8618542096208981110796609827832647336483), SC_(0.1381457903791018889203390172167352663517) }, + { SC_(0.48389760195277631282806396484375e-4), SC_(3.295018672943115234375), SC_(0.8350250720977783203125), SC_(20663.91805289900876890154410773793244473), SC_(0.0009178956010703162417484590875699248379401), SC_(0.9999999555797909211884841922449603268117), SC_(0.4442020907881151580775503967318833535076e-7) }, + { SC_(0.4859554246650077402591705322265625e-4), SC_(0.487077995785512030124664306640625e-4), SC_(0.9688708782196044921875), SC_(20581.45662117370905508383740125237934323), SC_(20527.15511089249993551464158930481274349), SC_(0.5006604639270614430763832942072115970552), SC_(0.4993395360729385569236167057927884029448) }, + { SC_(0.4882370922132395207881927490234375e-4), SC_(0.0004924438544549047946929931640625), SC_(0.1355634629726409912109375), SC_(20479.99964335724309503229742001761592511), SC_(2032.540099484611307902518137337743858143), SC_(0.9097152021627909380582945346683700759856), SC_(0.09028479783720906194170546533162992401441) }, + { SC_(0.0001018536931951530277729034423828125), SC_(0.000113726928248070180416107177734375), SC_(0.221111953258514404296875), SC_(9816.745147240660054719545524844572180529), SC_(8794.251081599785574986978540940650032881), SC_(0.5274701593904030565289133757941525840479), SC_(0.4725298406095969434710866242058474159521) }, + { SC_(0.0001061613802448846399784088134765625), SC_(26.1992549896240234375), SC_(0.3082362115383148193359375), SC_(9415.798426350103046318463818991542320744), SC_(0.7369899242850637546729437316708551741582e-5), SC_(0.9999999992172836648183290614385452819041), SC_(0.7827163351816709385614547180959375321755e-9) }, + { SC_(0.0001172095144283957779407501220703125), SC_(46.33734893798828125), SC_(0.632396042346954345703125), SC_(8527.329488596474715089305766693498378197), SC_(0.2447293570872016714498785087529847657244e-21), SC_(0.9999999999999999999999999713005862603906), SC_(0.2869941373960935386531353707011572170523e-25) }, + { SC_(0.00011986176832579076290130615234375), SC_(0.429382145404815673828125), SC_(0.1355634629726409912109375), SC_(8341.027544080360332200297292708416218498), SC_(3.699574962167871674773895030720394058429), SC_(0.999556657166928142770298962075220278176), SC_(0.0004433428330718572297010379247797218240141) }, + { SC_(0.0001239118282683193683624267578125), SC_(2.7409827709197998046875), SC_(0.9688708782196044921875), SC_(8068.862587007014755599626097509203647137), SC_(0.2766476686086212776961540397072958985728e-4), SC_(0.9999999965714167929246057924524390146568), SC_(0.3428583207075394207547560985343193664607e-8) }, + { SC_(0.000130386673845350742340087890625), SC_(0.0404968559741973876953125), SC_(0.81474220752716064453125), SC_(7670.876004000112160595974437427584771402), SC_(23.24779265027832276370247573327652992582), SC_(0.9969785003120954244493917022618511056939), SC_(0.003021499687904575550608297738148894306108) }, + { SC_(0.000131270222482271492481231689453125), SC_(0.4417803938849829137325286865234375e-4), SC_(0.913384497165679931640625), SC_(7620.22917032047510627610544897817586537), SC_(22633.32527420279150819003532931304932879), SC_(0.2518788059860499522934010449905912063787), SC_(0.7481211940139500477065989550094087936213) }, + { SC_(0.0001324503100477159023284912109375), SC_(251.767547607421875), SC_(0.9688708782196044921875), SC_(7543.900042051433931648555662858407951561), SC_(0.1741787482946524009711870633934271398076e-381), SC_(1), SC_(0.2308868719412240311497352277329431192782e-385) }, + { SC_(0.0001335285487584769725799560546875), SC_(0.4650310074794106185436248779296875e-4), SC_(0.1355634629726409912109375), SC_(7487.182750038846402463728024225717876808), SC_(21505.79454199191359536047812040556466148), SC_(0.2582412518253802418809364911949674144747), SC_(0.7417587481746197581190635088050325855253) }, + { SC_(0.000133774345158599317073822021484375), SC_(0.00023849334684200584888458251953125), SC_(0.8350250720977783203125), SC_(7476.895678058054774259508620476217132484), SC_(4191.367659512759880268294836037910161055), SC_(0.6407890756101713253131302848597459915084), SC_(0.3592109243898286746868697151402540084916) }, + { SC_(0.00013858181773684918880462646484375), SC_(1.8936798572540283203125), SC_(0.632396042346954345703125), SC_(7214.919039396837025996817766915342335639), SC_(0.1058849986659934859231152313569036893371), SC_(0.9999853243752065257270337185073816865539), SC_(0.1467562479347427296628149261831344609681e-4) }, + { SC_(0.000142661112477071583271026611328125), SC_(0.00029941767570562660694122314453125), SC_(0.12707412242889404296875), SC_(7007.691810164761195138318693866049067171), SC_(3341.742337402713953129626940663288035245), SC_(0.6771086911850001880314970324220522450512), SC_(0.3228913088149998119685029675779477549488) }, + { SC_(0.000144481091410852968692779541015625), SC_(0.16514885425567626953125), SC_(0.9688708782196044921875), SC_(6923.703398412580108119042386705070550996), SC_(3.429391338744755945325454534581991992038), SC_(0.9995049335067145628266727095108803677206), SC_(0.0004950664932854371733272904891196322793862) }, + { SC_(0.000149327577673830091953277587890625), SC_(0.02011823840439319610595703125), SC_(0.905801355838775634765625), SC_(6698.868401735548606119290401322727275245), SC_(47.49156331534766907614771425732897644353), SC_(0.9929604166452168579912913902762729111497), SC_(0.007039583354783142008708609723727088850348) }, + { SC_(0.00015278931823559105396270751953125), SC_(2.961205959320068359375), SC_(0.81474220752716064453125), SC_(6543.473191595368650892016888995054407072), SC_(0.002665238399175122624906174010262311430263), SC_(0.9999995926876697509864382992389617569011), SC_(0.4073123302490135617007610382430989376129e-6) }, + { SC_(0.0001544274273328483104705810546875), SC_(0.00420844554901123046875), SC_(0.81474220752716064453125), SC_(6477.003929603966342138554593711051578367), SC_(236.13997873939813690271262254066917675), SC_(0.9648242340751977771603186451193768503439), SC_(0.03517576592480222283968135488062314965612) }, + { SC_(0.000157981921802274882793426513671875), SC_(0.0037211482413113117218017578125), SC_(0.9688708782196044921875), SC_(6333.248025889411807409973129675958965542), SC_(265.3180437601998887423173310844643774494), SC_(0.9597915606270062768933396368390258534385), SC_(0.04020843937299372310666036316097414656149) }, + { SC_(0.000158215596457011997699737548828125), SC_(0.0021306932903826236724853515625), SC_(0.632396042346954345703125), SC_(6321.029006220338639420486814392216778079), SC_(468.7874392533131252041345405946340481051), SC_(0.930957273584939906869139763616711947603), SC_(0.06904272641506009313086023638328805239701) }, + { SC_(0.000160951211000792682170867919921875), SC_(0.30127601348794996738433837890625e-4), SC_(0.632396042346954345703125), SC_(6213.605202880870319684522296848826470202), SC_(33191.61194034333178935603703855301603968), SC_(0.1576848360027197794266700610327895075738), SC_(0.8423151639972802205733299389672104924262) }, + { SC_(0.00016759600839577615261077880859375), SC_(42.365489959716796875), SC_(0.81474220752716064453125), SC_(5962.419209243696990787532758138575009456), SC_(0.2745901684849735730833116097646148949735e-32), SC_(0.9999999999999999999999999999999999995395), SC_(0.460534824621638706370261627704862425701e-36) }, + { SC_(0.000168283222592435777187347412109375), SC_(195800.984375), SC_(0.905801355838775634765625), SC_(5929.614792333636458838497244984211996004), SC_(BOOST_MATH_SMALL_CONSTANT(0.4831197613058346312798602692403539272976e-200888)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.814757413804446933868292816740745794065e-200892)) }, + { SC_(0.000172738815308548510074615478515625), SC_(0.0049294424243271350860595703125), SC_(0.221111953258514404296875), SC_(5787.826408666762378346106402064048429964), SC_(204.1147555603997993918196397390832350333), SC_(0.9659351201946045097863972781297349672121), SC_(0.03406487980539549021360272187026503278789) }, + { SC_(0.000173404449014924466609954833984375), SC_(254.2841949462890625), SC_(0.81474220752716064453125), SC_(5760.754405025796286017185717611522877711), SC_(0.309308341870567221840603649252970401078e-188), SC_(1), SC_(0.5369233265711180045878920124653560411787e-192) }, + { SC_(0.000173563123098574578762054443359375), SC_(0.03019084036350250244140625), SC_(0.913384497165679931640625), SC_(5763.820101603284338087718804379332704233), SC_(30.8462262273872423234544825886802406685), SC_(0.9946767899164031704926066210832765036334), SC_(0.005323210083596829507393378916723496366579) }, + { SC_(0.000175581997609697282314300537109375), SC_(424.74957275390625), SC_(0.3082362115383148193359375), SC_(5688.721163726462073502362206742214633907), SC_(0.7994233073263827924032244564721438697512e-70), SC_(1), SC_(0.1405277714126370331640974784771264102987e-73) }, + { SC_(0.0001779057201929390430450439453125), SC_(276489.40625), SC_(0.81474220752716064453125), SC_(5607.863007605415905492639632979871681912), SC_(BOOST_MATH_SMALL_CONSTANT(0.4002198864067135036323444681833070153753e-202457)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7136762896381973011352322634945436475998e-202461)) }, + { SC_(0.0001830969122238457202911376953125), SC_(316055.1875), SC_(0.12707412242889404296875), SC_(5448.363855012008867050069508711867940505), SC_(BOOST_MATH_SMALL_CONSTANT(0.9706033380826670137569743884892059945736e-18659)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.17814583678911211117845773161397628964e-18662)) }, + { SC_(0.00019036870799027383327484130859375), SC_(159131.59375), SC_(0.8350250720977783203125), SC_(5240.424606587977644850715935961858665052), SC_(BOOST_MATH_SMALL_CONSTANT(0.2224500012712520372183312643665155986136e-124538)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4244885061252478631853807266395371322656e-124542)) }, + { SC_(0.00019106571562588214874267578125), SC_(419861.28125), SC_(0.913384497165679931640625), SC_(5220.294070692503835759362993222013780906), SC_(BOOST_MATH_SMALL_CONSTANT(0.9049906875539083416221732298640456870193e-446068)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1733600972088255957843856613647525229045e-446071)) }, + { SC_(0.000191590792383067309856414794921875), SC_(0.302199405268765985965728759765625e-4), SC_(0.221111953258514404296875), SC_(5218.198403960466669221628284729384062189), SC_(33091.99229469319000376077420451715593021), SC_(0.1362091471954967570972452259296608626232), SC_(0.8637908528045032429027547740703391373768) }, + { SC_(0.000192195278941653668880462646484375), SC_(177798.15625), SC_(0.3082362115383148193359375), SC_(5190.391379153075167027803493007631836791), SC_(BOOST_MATH_SMALL_CONSTANT(0.1141146016081000795919967144320131012393e-28459)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2198574120372409176371795674206966282075e-28463)) }, + { SC_(0.000193911953829228878021240234375), SC_(32.115245819091796875), SC_(0.12707412242889404296875), SC_(5152.947846003342098294718061584450246476), SC_(0.002639498699135445838819091652742231315418), SC_(0.999999487769442659745453026145816785441), SC_(0.512230557340254546973854183214558974377e-6) }, + { SC_(0.000195966451428830623626708984375), SC_(0.011618844233453273773193359375), SC_(0.8350250720977783203125), SC_(5104.503639855632707391854768076715658822), SC_(84.45843463596422207679946774464377889093), SC_(0.9837234434510220864537775748281121571201), SC_(0.01627655654897791354622242517188784287993) }, + { SC_(0.000195981003344058990478515625), SC_(0.0429041944444179534912109375), SC_(0.9688708782196044921875), SC_(5105.664201743881453946730034241174981722), SC_(20.11015895111600867001983475458394989157), SC_(0.9960766593423770419601555094346086588159), SC_(0.003923340657622958039844490565391341184107) }, + { SC_(0.000196676512132398784160614013671875), SC_(2.09101200103759765625), SC_(0.221111953258514404296875), SC_(5082.742517647445801774492385509659202038), SC_(0.6918357515342059318292693635443862043404), SC_(0.9998639038682437950829710698619794166099), SC_(0.0001360961317562049170289301380205833900962) }, + { SC_(0.000203948162379674613475799560546875), SC_(0.0001180238105007447302341461181640625), SC_(0.913384497165679931640625), SC_(4905.561569471299445541907025253345945424), SC_(8470.511202586446201247227543726581950478), SC_(0.3667415431320682499296214543111572259584), SC_(0.6332584568679317500703785456888427740416) }, + { SC_(0.00020552115165628492832183837890625), SC_(0.00138142076320946216583251953125), SC_(0.3082362115383148193359375), SC_(4864.870283621552589600617549642511712112), SC_(724.6987501625367922536917238180934601035), SC_(0.8703480096976417388633162741430148381307), SC_(0.1296519903023582611366837258569851618693) }, + { SC_(0.000218528322875499725341796875), SC_(215.121978759765625), SC_(0.1355634629726409912109375), SC_(4570.123815914933502416775387073811835093), SC_(0.8177025127270565517519048866936017134941e-15), SC_(0.9999999999999999998210765078443824493488), SC_(0.1789234921556175506512002662847620835962e-18) }, + { SC_(0.0002204985357820987701416015625), SC_(107380.34375), SC_(0.1355634629726409912109375), SC_(4523.032636406744668872171043808459678016), SC_(BOOST_MATH_SMALL_CONSTANT(0.1647562629728817439093908329431436142546e-6797)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3642606105618770904813216523239665239724e-6801)) }, + { SC_(0.000222539805690757930278778076171875), SC_(1432.2476806640625), SC_(0.81474220752716064453125), SC_(4485.741270282409935675504946595385781733), SC_(0.1612283750403730679258423751114438195734e-1051), SC_(1), SC_(0.3594241516078848051177543874430077069284e-1055) }, + { SC_(0.000235087776673026382923126220703125), SC_(0.4550904333591461181640625), SC_(0.8350250720977783203125), SC_(4254.333433061065961463490484341133892093), SC_(1.023193488721235218241525045756827448596), SC_(0.9997595516478366624699532523192953225665), SC_(0.0002404483521633375300467476807046774334954) }, + { SC_(0.0002402908285148441791534423828125), SC_(49604.3984375), SC_(0.632396042346954345703125), SC_(4150.250398112142629228158594289025284156), SC_(BOOST_MATH_SMALL_CONSTANT(0.2809555849412092585807767265143871993905e-21563)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6769605637987764728357471683016484257431e-21567)) }, + { SC_(0.000240380948525853455066680908203125), SC_(0.01798204891383647918701171875), SC_(0.221111953258514404296875), SC_(4158.799612898859404525246505395700079542), SC_(56.84527887576449179974280320693646351955), SC_(0.9865156386899004621823922118833551461494), SC_(0.01348436131009953781760778811664485385065) }, + { SC_(0.000241263434872962534427642822265625), SC_(12.126102447509765625), SC_(0.1355634629726409912109375), SC_(4141.742262758911222245097610877600052319), SC_(0.07515615341279770596981104392508648196893), SC_(0.9999818543055351449214821881784878112583), SC_(0.18145694464855078517811821512188741683e-4) }, + { SC_(0.000247393851168453693389892578125), SC_(237.5718994140625), SC_(0.8350250720977783203125), SC_(4036.096790745714381586806296665342854216), SC_(0.606208749817224680109953757243807964491e-188), SC_(1), SC_(0.1501967820016577897041114220165502307491e-191) }, + { SC_(0.00024769871379248797893524169921875), SC_(0.11330743134021759033203125), SC_(0.913384497165679931640625), SC_(4039.064655808197643788968479734038263565), SC_(6.75084267983746755998409266216487478625), SC_(0.9983314012509071829197699472791630796573), SC_(0.001668598749092817080230052720836920342725) }, + { SC_(0.0002514437655918300151824951171875), SC_(15605.75390625), SC_(0.1355634629726409912109375), SC_(3966.813170071210650703421810375775952551), SC_(0.2221965421176740251409055120157725713745e-990), SC_(1), SC_(0.5601386619216181569774995706483415180832e-994) }, + { SC_(0.00025589551660232245922088623046875), SC_(1.8412075042724609375), SC_(0.1355634629726409912109375), SC_(3905.732551009074298466780308567194030379), SC_(1.220471269888763743288439839955123473762), SC_(0.9996876155758901725469091054905562192717), SC_(0.0003123844241098274530908945094437807283082) }, + { SC_(0.00025991306756623089313507080078125), SC_(0.00044235005043447017669677734375), SC_(0.905801355838775634765625), SC_(3849.701457077141431050044085672310243523), SC_(2258.390718424077938542748761691454979038), SC_(0.630262502016227621370414919511565748614), SC_(0.369737497983772378629585080488434251386) }, + { SC_(0.00026072320179082453250885009765625), SC_(0.0252933166921138763427734375), SC_(0.632396042346954345703125), SC_(3835.995370898243525795356909959823218854), SC_(38.98476761977825124057415821836327491418), SC_(0.9899393632415654404293989497331186370653), SC_(0.0100606367584345595706010502668813629347) }, + { SC_(0.000261564855463802814483642578125), SC_(2.969768047332763671875), SC_(0.3082362115383148193359375), SC_(3821.405524466826928964942296938639926773), SC_(0.2505263953449591757780672632223011395179), SC_(0.9999344455932164695959214942937015701483), SC_(0.6555440678353040407850570629842985169478e-4) }, + { SC_(0.00026690683444030582904815673828125), SC_(0.4926892220973968505859375), SC_(0.12707412242889404296875), SC_(3744.630999610799179102664201934107067766), SC_(3.417322244783778445441490978156483043996), SC_(0.9990882395446033280373927712026808730813), SC_(0.0009117604553966719626072287973191269187271) }, + { SC_(0.000272565521299839019775390625), SC_(0.00399976409971714019775390625), SC_(0.12707412242889404296875), SC_(3666.915441118759754681231662466320459986), SC_(251.9349129604083041843669622324897005207), SC_(0.9357120353681872816886730014355383410074), SC_(0.06428796463181271831132699856446165899256) }, + { SC_(0.00027427947497926652431488037109375), SC_(289206.03125), SC_(0.9688708782196044921875), SC_(3632.788078545421912405913291645417768756), SC_(BOOST_MATH_SMALL_CONSTANT(0.2102799001769416384757592031219644042906e-435790)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5788388852595504947548501030017527205046e-435794)) }, + { SC_(0.00027434344519861042499542236328125), SC_(2954.470947265625), SC_(0.3082362115383148193359375), SC_(3636.508295700661209639964141212992979246), SC_(0.1585655815345211799992885129986502872445e-475), SC_(1), SC_(0.4360380030536124173269201014387833274522e-479) }, + { SC_(0.0002770713181234896183013916015625), SC_(0.341692575602792203426361083984375e-4), SC_(0.9688708782196044921875), SC_(3612.616345527002166796516337140214888032), SC_(29262.63561079274137388778786727086485259), SC_(0.1098886283921706710241786573420304234281), SC_(0.8901113716078293289758213426579695765719) }, + { SC_(0.00027871350175701081752777099609375), SC_(4023.159423828125), SC_(0.632396042346954345703125), SC_(3579.048017739283881605316170941963833806), SC_(0.1120712826873127698254223263897725146742e-1751), SC_(1), SC_(0.3131315426108837801546009947512560530295e-1755) }, + { SC_(0.00028021665639244019985198974609375), SC_(0.38819736801087856292724609375e-4), SC_(0.12707412242889404296875), SC_(3566.740628995367719834358851359670908542), SC_(25762.01830124904137748808250335197962905), SC_(0.1216123954470256387367677660584358510842), SC_(0.8783876045529743612632322339415641489158) }, + { SC_(0.0002803694806061685085296630859375), SC_(25.140018463134765625), SC_(0.9688708782196044921875), SC_(3562.942591774059668711567414861210623046), SC_(0.5382935653401613794049965988355487897247e-39), SC_(1), SC_(0.1510811784009504217418370693440827162617e-42) }, + { SC_(0.0002883693086914718151092529296875), SC_(460073.28125), SC_(0.221111953258514404296875), SC_(3454.185996240757717347805410673427755317), SC_(BOOST_MATH_SMALL_CONSTANT(0.3609488049862958914998492071737962153408e-49934)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1044960535938487025713540225543036817363e-49937)) }, + { SC_(0.00029471665038727223873138427734375), SC_(4642.259765625), SC_(0.221111953258514404296875), SC_(3384.081751203178175370620299135085565111), SC_(0.1538423775489765357475481074516180071161e-506), SC_(1), SC_(0.4546059724895219723882118449541202246563e-510) }, + { SC_(0.00029570105834864079952239990234375), SC_(0.3176224529743194580078125), SC_(0.81474220752716064453125), SC_(3382.578828730636936095408426359067756467), SC_(1.935221992619980707578905579564134695818), SC_(0.9994282127467585984399348909298228431753), SC_(0.0005717872532414015600651090701771568246996) }, + { SC_(0.00029634564998559653759002685546875), SC_(0.19913904368877410888671875), SC_(0.632396042346954345703125), SC_(3374.738592221403546906618687303557085428), SC_(4.433505765756542858273043071415657657518), SC_(0.9986879905381565479113426540536530533211), SC_(0.001312009461843452088657345946346946678902) }, + { SC_(0.000303403474390506744384765625), SC_(2574.359375), SC_(0.8350250720977783203125), SC_(3287.521806034971802887301527204610384962), SC_(0.1047442076816838732832369224443180558536e-2017), SC_(1), SC_(0.3186114461336887984555451406531853131734e-2021) }, + { SC_(0.00030430863262154161930084228515625), SC_(4480.7470703125), SC_(0.905801355838775634765625), SC_(3277.165341360202837565254801793910487962), SC_(0.2213976574024951929657574974001049932498e-4600), SC_(1), SC_(0.6755767083469858051077185880165399540339e-4604) }, + { SC_(0.00030529979267157614231109619140625), SC_(0.01552005298435688018798828125), SC_(0.3082362115383148193359375), SC_(3274.654322125870601212494443787065254475), SC_(65.22169126633106105574103247333184237395), SC_(0.9804718226051488823874458467991263059976), SC_(0.01952817739485111761255415320087369400238) }, + { SC_(0.00031313023646362125873565673828125), SC_(47957), SC_(0.3082362115383148193359375), SC_(3182.224523010860532469370310063985137153), SC_(BOOST_MATH_SMALL_CONSTANT(0.4869323848916658188091372694151177783149e-7679)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1530163510998761729295090649649835593669e-7682)) }, + { SC_(0.0003153369762003421783447265625), SC_(0.3186367757734842598438262939453125e-4), SC_(0.8350250720977783203125), SC_(3172.831842932285600026538031157109836735), SC_(31382.0752330794825907395443248734678599), SC_(0.09182000796450948165926037295322936243235), SC_(0.9081799920354905183407396270467706375677) }, + { SC_(0.00031880356254987418651580810546875), SC_(387.38800048828125), SC_(0.12707412242889404296875), SC_(3130.199521661416446995255486905059239462), SC_(0.2724998200174160044620150661637361031001e-24), SC_(0.9999999999999999999999999999129449039489), SC_(0.8705509605112367919854721169070761696175e-28) }, + { SC_(0.00031994408345781266689300537109375), SC_(0.001032375730574131011962890625), SC_(0.913384497165679931640625), SC_(3127.896874011541295607313029565696187665), SC_(966.2866448734111309827638173027792308751), SC_(0.7639855076314267128924605979897220292708), SC_(0.2360144923685732871075394020102779707292) }, + { SC_(0.00032006253604777157306671142578125), SC_(25544.60546875), SC_(0.905801355838775634765625), SC_(3113.682688441297209705041700589809314877), SC_(BOOST_MATH_SMALL_CONSTANT(0.1025783281688806599327078671241459557444e-26211)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3294437437368775306821540221261273382728e-26215)) }, + { SC_(0.00033008345053531229496002197265625), SC_(4.030014514923095703125), SC_(0.913384497165679931640625), SC_(3027.695874136566107847728245395000749406), SC_(0.139479648999015386391381516849575180088e-4), SC_(0.9999999953932080976845710611394580627781), SC_(0.4606791902315428938860541937221886144335e-8) }, + { SC_(0.00033188183442689478397369384765625), SC_(0.00350953754968941211700439453125), SC_(0.905801355838775634765625), SC_(3015.369155981247271907055083325780561977), SC_(282.6829927870727441056338941058658985682), SC_(0.9142878947827909184252636231795874358471), SC_(0.08571210521720908157473637682041256415287) }, + { SC_(0.00033481788705103099346160888671875), SC_(29065.5234375), SC_(0.9688708782196044921875), SC_(2975.863726169082216793986722632003389703), SC_(BOOST_MATH_SMALL_CONSTANT(0.4535759794105782584597366345081942126175e-43801)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1524182627792839465220615780991684493447e-43804)) }, + { SC_(0.0003488220390863716602325439453125), SC_(0.02754667215049266815185546875), SC_(0.1355634629726409912109375), SC_(2864.935092454806724311892421987098664245), SC_(38.1132975293663947680462461735658995282), SC_(0.9868712841091931707720919654423078799989), SC_(0.01312871589080682922790803455769212000107) }, + { SC_(0.0003489900263957679271697998046875), SC_(41187.57421875), SC_(0.913384497165679931640625), SC_(2854.230462336243022882038863689073490423), SC_(BOOST_MATH_SMALL_CONSTANT(0.3679302093634662820727270275131856040468e-43762)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1289069730768370629823366152554604244725e-43765)) }, + { SC_(0.0003502474282868206501007080078125), SC_(426.3076171875), SC_(0.905801355838775634765625), SC_(2848.501239409495981055595161738776652775), SC_(0.1097851165581016728904078837337908787324e-439), SC_(1), SC_(0.3854136169547902386280098239236817602428e-443) }, + { SC_(0.0003577272291295230388641357421875), SC_(31752.21875), SC_(0.12707412242889404296875), SC_(2784.504773532744521809274363546994037008), SC_(0.1968964349841053353157066029235379101063e-1877), SC_(1), SC_(0.7071147331318802709017406374093782540593e-1881) }, + { SC_(0.00035909839789383113384246826171875), SC_(29.733074188232421875), SC_(0.913384497165679931640625), SC_(2780.802578187537810976609822680554063792), SC_(0.9466966087555186266682909543165127593827e-33), SC_(0.9999999999999999999999999999999999996596), SC_(0.3404400643833383421960793256360613832518e-36) }, + { SC_(0.00035964619019068777561187744140625), SC_(20.331836700439453125), SC_(0.8350250720977783203125), SC_(2776.948437579244482906438446372059229445), SC_(0.7158065221381836966654729664148194532451e-17), SC_(0.9999999999999999999974223269238582790226), SC_(0.2577673076141720977350908877406218436716e-20) }, + { SC_(0.00037471018731594085693359375), SC_(225.0031890869140625), SC_(0.632396042346954345703125), SC_(2662.74507079856651874603621021499439225), SC_(0.1134460445823962098537520023375762055653e-99), SC_(1), SC_(0.4260492144986802887971643669989427167467e-103) }, + { SC_(0.0003926889621652662754058837890625), SC_(15.1938610076904296875), SC_(0.905801355838775634765625), SC_(2543.282274694489899149049394421170507156), SC_(0.1863354746768956949463016115232572128955e-16), SC_(0.9999999999999999999926734253397303639613), SC_(0.7326574660269636038667645239154558789159e-20) }, + { SC_(0.0003978771273978054523468017578125), SC_(349.374237060546875), SC_(0.221111953258514404296875), SC_(2506.915366175151979603156285400780638393), SC_(0.1554926413830479500487743576624150972687e-39), SC_(1), SC_(0.6202548497689652901079433577060643469017e-43) }, + { SC_(0.0004099641810171306133270263671875), SC_(0.000490800826810300350189208984375), SC_(0.3082362115383148193359375), SC_(2438.428882587437109925834868096142527), SC_(2038.293507112223688445759683916368304741), SC_(0.5446906621232390218689383638556236491231), SC_(0.4553093378767609781310616361443763508769) }, + { SC_(0.00041028507985174655914306640625), SC_(2214.455810546875), SC_(0.1355634629726409912109375), SC_(2429.064305994519441738193117470290876888), SC_(0.2625842762445926687666088964797929354078e-142), SC_(1), SC_(0.1081009982307093036612147153031276889652e-145) }, + { SC_(0.0004120909725315868854522705078125), SC_(367.71405029296875), SC_(0.913384497165679931640625), SC_(2420.174473903902857806633347353957408088), SC_(0.6496728701662286052346044917231870062105e-393), SC_(1), SC_(0.2684405100423453896401204773247119627795e-396) }, + { SC_(0.00041210078052245080471038818359375), SC_(4.50945568084716796875), SC_(0.12707412242889404296875), SC_(2424.117403894619977669694751796875692789), SC_(0.5061366211946652295263819390852493512635), SC_(0.9997912514612115868195623051721445151557), SC_(0.0002087485387884131804376948278554848443257) }, + { SC_(0.00041793254786171019077301025390625), SC_(4668.47119140625), SC_(0.9688708782196044921875), SC_(2383.722258071079769629454763425015064461), SC_(BOOST_MATH_SMALL_CONSTANT(0.5463688026886666147824002995784594817501e-7038)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2292082480828916039393283409724883460028e-7041)) }, + { SC_(0.000420027412474155426025390625), SC_(0.00036404779530130326747894287109375), SC_(0.9688708782196044921875), SC_(2384.231564515840506117162175742121420846), SC_(2743.456202519181394365317435287217855567), SC_(0.4649720639863515895633703526231003551161), SC_(0.5350279360136484104366296473768996448839) }, + { SC_(0.0004246321623213589191436767578125), SC_(17994.9140625), SC_(0.221111953258514404296875), SC_(2344.627547898256098125532721852248067543), SC_(0.3180733015474547916320064048072348766489e-1956), SC_(1), SC_(0.1356604812702889125683060028507461195511e-1959) }, + { SC_(0.00042692126589827239513397216796875), SC_(0.00024527459754608571529388427734375), SC_(0.632396042346954345703125), SC_(2342.893992061399189259727437078954765507), SC_(4076.52023651885880746294074207107365464), SC_(0.3649700593600052683423340989110598558496), SC_(0.6350299406399947316576659010889401441504) }, + { SC_(0.00042705106898210942745208740234375), SC_(2443.44287109375), SC_(0.913384497165679931640625), SC_(2333.277461493787480390344066682863595571), SC_(0.5332474573974756910385823818234032261756e-2599), SC_(1), SC_(0.2285400970084738037799111507992759078905e-2602) }, + { SC_(0.00042847762233577668666839599609375), SC_(22.90042877197265625), SC_(0.221111953258514404296875), SC_(2330.160471219871088491361081493811799882), SC_(0.0005700639899661150267975099079387186909912), SC_(0.9999997553542524030768794920903804597612), SC_(0.2446457475969231205079096195402388391619e-6) }, + { SC_(0.000430326792411506175994873046875), SC_(0.2849896918633021414279937744140625e-4), SC_(0.81474220752716064453125), SC_(2325.295773305186883745980657749475592263), SC_(35087.50723729603932294663380257741060442), SC_(0.06215240736296329237883350233563708602062), SC_(0.9378475926370367076211664976643629139794) }, + { SC_(0.0004377235309220850467681884765625), SC_(454399.25), SC_(0.632396042346954345703125), SC_(2270.983882694597092822607027073564087212), SC_(BOOST_MATH_SMALL_CONSTANT(0.41735903811534924396720244633094087005e-197496)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1837789520637808375875188270585199147772e-197499)) }, + { SC_(0.00044121246901340782642364501953125), SC_(0.031357325613498687744140625), SC_(0.12707412242889404296875), SC_(2264.551008840063404666623371407831723918), SC_(33.77007171411169184440381793659063020672), SC_(0.985306634482085072904417030273710660607), SC_(0.014693365517914927095582969726289339393) }, + { SC_(0.00044747791253030300140380859375), SC_(0.0003718078951351344585418701171875), SC_(0.81474220752716064453125), SC_(2236.226718277089743036911311259913705518), SC_(2688.080069522922904007660912092374368351), SC_(0.4541201055582786368165961028461423460782), SC_(0.5458798944417213631834038971538576539218) }, + { SC_(0.000447716913186013698577880859375), SC_(0.00131022813729941844940185546875), SC_(0.8350250720977783203125), SC_(2235.171607174475021181533559243044539962), SC_(761.6055853953372827060617266157216328845), SC_(0.7458584551151628280606321596990124303608), SC_(0.2541415448848371719393678403009875696392) }, + { SC_(0.00045037711970508098602294921875), SC_(10660.8232421875), SC_(0.8350250720977783203125), SC_(2210.532153806107891289496569153621125534), SC_(BOOST_MATH_SMALL_CONSTANT(0.1206505832474931860295852623731075417229e-8346)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5457988160894030332567255774440224107433e-8350)) }, + { SC_(0.000460021547041833400726318359375), SC_(0.2375358045101165771484375), SC_(0.905801355838775634765625), SC_(2175.238041648735644187860487639011201803), SC_(2.447811582193532553373907277195109839798), SC_(0.9988759574396087339002056496566398076671), SC_(0.001124042560391266099794350343360192332935) }, + { SC_(0.0004610864561982452869415283203125), SC_(0.2207309305667877197265625), SC_(0.221111953258514404296875), SC_(2167.473886629351983032808170495678751964), SC_(5.532500683070298228554305431007140478259), SC_(0.9974539878412815418467482310918660577926), SC_(0.002546012158718458153251768908133942207371) }, + { SC_(0.000464259064756333827972412109375), SC_(0.001531984074972569942474365234375), SC_(0.1355634629726409912109375), SC_(2152.117646884666200073960196407820694935), SC_(654.5971633708985065857497130109313151371), SC_(0.7667746074595678897794541209327724450161), SC_(0.2332253925404321102205458790672275549839) }, + { SC_(0.00046533494605682790279388427734375), SC_(0.3233075040043331682682037353515625e-4), SC_(0.3082362115383148193359375), SC_(2148.181259917978900222556896452313827016), SC_(30931.11351285719300828566689211065659355), SC_(0.06494035845304564942861416504475144721513), SC_(0.9350596415469543505713858349552485527849) }, + { SC_(0.000471754348836839199066162109375), SC_(2833.98779296875), SC_(0.12707412242889404296875), SC_(2111.238317153358003896756528720761672756), SC_(0.1488182277406715504172797814810214922066e-169), SC_(1), SC_(0.7048859739402956270968877726532616479643e-173) }, + { SC_(0.00047560062375850975513458251953125), SC_(19603.037109375), SC_(0.81474220752716064453125), SC_(2092.170212686575096214087634075788007936), SC_(BOOST_MATH_SMALL_CONSTANT(0.9814459051172135904993735187569389742934e-14358)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4691042340464879469732504596518886411408e-14361)) }, + { SC_(0.0004768202197737991809844970703125), SC_(4.81977367401123046875), SC_(0.8350250720977783203125), SC_(2095.18515800974545939651141116099485538), SC_(0.4066280103382282973903147124636493154344e-4), SC_(0.9999999805922640826282579500754695410751), SC_(0.1940773591737174204992453045892490288306e-7) }, + { SC_(0.00047791490214876830577850341796875), SC_(0.11917771399021148681640625), SC_(0.3082362115383148193359375), SC_(2091.566761906672525335452041944246414406), SC_(9.065521332975766581322942677912211293429), SC_(0.995684384456381537630722352446379570576), SC_(0.004315615543618462369277647553620429423982) }, + { SC_(0.00048245381913147866725921630859375), SC_(3.6078746318817138671875), SC_(0.905801355838775634765625), SC_(2071.02282050938481232080136434279772972), SC_(0.5951445121764384153313490722249785840832e-4), SC_(0.9999999712632574986526118543960442440817), SC_(0.2873674250134738814560395575591831761354e-7) }, + { SC_(0.00048475922085344791412353515625), SC_(0.0004919702769257128238677978515625), SC_(0.1355634629726409912109375), SC_(2061.027836908120591791512438991288730224), SC_(2034.493470940324778631046964076907156462), SC_(0.5032394369328449989460119643414107638167), SC_(0.4967605630671550010539880356585892361833) }, + { SC_(0.0004984539118595421314239501953125), SC_(0.27903375666937790811061859130859375e-4), SC_(0.905801355838775634765625), SC_(2008.466065633385514957748677800699067617), SC_(35835.69441714848349955135696320524343566), SC_(0.05307202062382085388638414390869253138822), SC_(0.9469279793761791461136158560913074686118) }, + { SC_(0.001114696613512933254241943359375), SC_(338.423187255859375), SC_(0.3082362115383148193359375), SC_(890.7287333592224099650895877533423597214), SC_(0.655032394719436519104435410014932608533e-56), SC_(1), SC_(0.7353893168452085809661635006675386913064e-59) }, + { SC_(0.00111688114702701568603515625), SC_(0.00206368253566324710845947265625), SC_(0.3082362115383148193359375), SC_(894.5411216021030206815562847824910599935), SC_(485.374731025981562374452616292613599528), SC_(0.6482577324540673028519637971436168042822), SC_(0.3517422675459326971480362028563831957178) }, + { SC_(0.001122163725085556507110595703125), SC_(26.959133148193359375), SC_(0.12707412242889404296875), SC_(887.2857273413217591663071683655306756531), SC_(0.006170907249695033680550517863454817419816), SC_(0.9999930452343114190393974275086141619959), SC_(0.6954765688580960602572491385838004054883e-5) }, + { SC_(0.001150955446064472198486328125), SC_(0.4535874426364898681640625), SC_(0.12707412242889404296875), SC_(866.855684243827267933107714455579701728), SC_(3.622050917060569664015394421000097533285), SC_(0.9958390079714202952539867788276064104906), SC_(0.00416099202857970474601322117239358950939) }, + { SC_(0.00116972462274134159088134765625), SC_(4487.220703125), SC_(0.221111953258514404296875), SC_(845.9639896981215015789312874369381932995), SC_(0.1063779666391269484543054611732150401814e-489), SC_(1), SC_(0.1257476298454352107021172465546170244079e-492) }, + { SC_(0.001238475437276065349578857421875), SC_(4809.8876953125), SC_(0.12707412242889404296875), SC_(798.4404102135347267583554734446658228025), SC_(0.2088573664802592741195276726261002951534e-286), SC_(1), SC_(0.2615816582033999333902290007214431749988e-289) }, + { SC_(0.0012418846599757671356201171875), SC_(211065.625), SC_(0.632396042346954345703125), SC_(792.4934093883819497798461847348403401357), SC_(BOOST_MATH_SMALL_CONSTANT(0.3715857217027592182907565434204034076818e-91738)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4688817816031249765706087431377733825105e-91741)) }, + { SC_(0.00128578185103833675384521484375), SC_(4738.4111328125), SC_(0.3082362115383148193359375), SC_(768.7497259471312992013909189845633725619), SC_(0.3083149516572614656818024343993762882429e-761), SC_(1), SC_(0.4010602426913450368564667294554493472522e-764) }, + { SC_(0.001333879190497100353240966796875), SC_(46277.76171875), SC_(0.913384497165679931640625), SC_(738.4595682741381490604572839483104630489), SC_(BOOST_MATH_SMALL_CONSTANT(0.4760816758433140315470190574602976110403e-49170)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6446956560614004498713862685655419699461e-49173)) }, + { SC_(0.001342063187621533870697021484375), SC_(0.0049741393886506557464599609375), SC_(0.12707412242889404296875), SC_(743.1959244878558453841456162423124931873), SC_(202.954935047346035345520597561537300498), SC_(0.7854941069893991630581498347410718336765), SC_(0.2145058930106008369418501652589281663235) }, + { SC_(0.001386920106597244739532470703125), SC_(2158.757568359375), SC_(0.81474220752716064453125), SC_(712.8159877459091673089852757033234802738), SC_(0.1152262625557983164464601153211751891717e-1583), SC_(1), SC_(0.1616493801158566915366164602637515465764e-1586) }, + { SC_(0.00139484903775155544281005859375), SC_(0.406741619110107421875), SC_(0.632396042346954345703125), SC_(716.9970687322662580276185822651018601599), SC_(1.861070463016669614611362269319717106569), SC_(0.997411074088832015598519013857371063956), SC_(0.00258892591116798440148098614262893604403) }, + { SC_(0.001427047536708414554595947265625), SC_(3.0078976154327392578125), SC_(0.12707412242889404296875), SC_(698.4416522699784700368407029156265476697), SC_(0.8052389292592501254860055319140641451921), SC_(0.9988484197221410142868386632542163536932), SC_(0.00115158027785898571316133674578364630679) }, + { SC_(0.00144447688944637775421142578125), SC_(0.3829285924439318478107452392578125e-4), SC_(0.905801355838775634765625), SC_(694.5531721715049157414316486281103107119), SC_(26112.26597142779218826565701649442464771), SC_(0.02590957056303132403077964326929276679704), SC_(0.974090429436968675969220356730707233203) }, + { SC_(0.001469670678488910198211669921875), SC_(0.00022998542408458888530731201171875), SC_(0.81474220752716064453125), SC_(681.9029882237068745571574254101015948808), SC_(4346.620404150712400107828871749266738966), SC_(0.135607003292017896363216853396063797727), SC_(0.864392996707982103636783146603936202273) }, + { SC_(0.001532684080302715301513671875), SC_(13060.16015625), SC_(0.9688708782196044921875), SC_(642.4739939673390065903879830508019993861), SC_(BOOST_MATH_SMALL_CONSTANT(0.2604575679676652000185387046751197315368e-19683)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4053978377542016060586253784468846562986e-19686)) }, + { SC_(0.001546212588436901569366455078125), SC_(0.4388438761234283447265625), SC_(0.913384497165679931640625), SC_(647.6636500859710420001838060635189817527), SC_(0.8005234405450714384152145899891401006528), SC_(0.9987655086075278181507533227647548955077), SC_(0.001234491392472181849246677235245104492313) }, + { SC_(0.001599461771547794342041015625), SC_(1780.4295654296875), SC_(0.9688708782196044921875), SC_(617.2018193338968435469389828476195862445), SC_(0.8972675710962492797338106626950543867371e-2686), SC_(1), SC_(0.1453766892755773137132663986139134796046e-2688) }, + { SC_(0.001671708538196980953216552734375), SC_(485.198974609375), SC_(0.81474220752716064453125), SC_(591.4690747200591551150100900999853565481), SC_(0.1344651463466289510213986697745699545973e-357), SC_(1), SC_(0.2273409584605433023016572030651343918317e-360) }, + { SC_(0.00169355445541441440582275390625), SC_(385561.5625), SC_(0.12707412242889404296875), SC_(577.1875596723301316935121874803525601185), SC_(BOOST_MATH_SMALL_CONSTANT(0.2819545160750931987103049585360311608808e-22761)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4884972161131799465362637889601809293001e-22764)) }, + { SC_(0.001731689902953803539276123046875), SC_(198.0077056884765625), SC_(0.12707412242889404296875), SC_(571.6386685027893522584576324587060153788), SC_(0.787971814516226550741052893624149874176e-13), SC_(0.9999999999999998621556136886177991962018), SC_(0.1378443863113822008037981580291257606581e-15) }, + { SC_(0.00173926516436040401458740234375), SC_(0.333752905135042965412139892578125e-4), SC_(0.3082362115383148193359375), SC_(574.1469349079614375311988072446327918744), SC_(29963.09162049822007245271293100907523344), SC_(0.01880153419459458396276801883523054498866), SC_(0.9811984658054054160372319811647694550113) }, + { SC_(0.0017912392504513263702392578125), SC_(3.0554368495941162109375), SC_(0.9688708782196044921875), SC_(556.7542411201096097947875983675589227617), SC_(0.834060948041552202288100016197929847781e-5), SC_(0.9999999850192261873270525479907231427017), SC_(0.1498077381267294745200927685729828308752e-7) }, + { SC_(0.001886987010948359966278076171875), SC_(0.00043248571455478668212890625), SC_(0.632396042346954345703125), SC_(530.4851810582123232839269017624533495092), SC_(2311.671464907864847076008216787250144871), SC_(0.1866488188858764188501071844747519471149), SC_(0.8133511811141235811498928155252480528851) }, + { SC_(0.001926377532072365283966064453125), SC_(0.02606286108493804931640625), SC_(0.3082362115383148193359375), SC_(518.2900622257642140741244638447647938659), SC_(39.14263590794633588982379781196165727714), SC_(0.9297805169323647207529506425642268004599), SC_(0.07021948306763527924704935743577319954015) }, + { SC_(0.001949134399183094501495361328125), SC_(0.0048745614476501941680908203125), SC_(0.913384497165679931640625), SC_(515.3799117627053428087257562370441485807), SC_(202.8038333085502702615250609769245964937), SC_(0.7176156732864668192398001864189021684779), SC_(0.2823843267135331807601998135810978315221) }, + { SC_(0.00195972807705402374267578125), SC_(233.2021026611328125), SC_(0.1355634629726409912109375), SC_(504.2849401834236771885481932255122661676), SC_(0.5408755886612975324386952502978929980407e-16), SC_(0.9999999999999999998927440529029947374173), SC_(0.1072559470970052625826883045294568067446e-18) }, + { SC_(0.00203225878067314624786376953125), SC_(0.16493140719830989837646484375e-4), SC_(0.913384497165679931640625), SC_(494.4157758283894540733235453123792528319), SC_(60628.91004687561681074785643773032239094), SC_(0.008088823197587536402023877265138455150887), SC_(0.9919111768024124635979761227348615448491) }, + { SC_(0.00204748497344553470611572265625), SC_(0.23111911118030548095703125), SC_(0.81474220752716064453125), SC_(489.3574931248246500958149322733304524226), SC_(3.044086375985297430577533004169912549125), SC_(0.9938178785310328391491565365735272409495), SC_(0.006182121468967160850843463426472759050498) }, + { SC_(0.00204884703271090984344482421875), SC_(0.0001168216476798988878726959228515625), SC_(0.1355634629726409912109375), SC_(486.2299335841715210383269237524336139823), SC_(8561.903211761318122131824929830851496484), SC_(0.05373814971260632868035612498442966583607), SC_(0.9462618502873936713196438750155703341639) }, + { SC_(0.0020499289967119693756103515625), SC_(0.00172629184089601039886474609375), SC_(0.1355634629726409912109375), SC_(485.9720825815714437946579073706036129396), SC_(581.1198257959552771768495501811380052221), SC_(0.4554172689028012529844655878344171852393), SC_(0.5445827310971987470155344121655828147607) }, + { SC_(0.002186703495681285858154296875), SC_(0.0003623119555413722991943359375), SC_(0.8350250720977783203125), SC_(458.9268578669144837934305949905467477431), SC_(2758.430776352358282603722698626439987806), SC_(0.1426409215394166573171341183639776550646), SC_(0.8573590784605833426828658816360223449354) }, + { SC_(0.0022444091737270355224609375), SC_(0.1359292582492344081401824951171875e-4), SC_(0.12707412242889404296875), SC_(443.6283221817582637208491481509138411299), SC_(73569.59824929939717598364474498445218135), SC_(0.005993905991293420208700510136359953973266), SC_(0.9940060940087065797912994898636400460267) }, + { SC_(0.0022751130163669586181640625), SC_(0.00026807599351741373538970947265625), SC_(0.905801355838775634765625), SC_(441.7974141085059302120749124862243598296), SC_(3728.022546291355237164806652953164350875), SC_(0.1059511965274731336562603304565300050724), SC_(0.8940488034725268663437396695434699949276) }, + { SC_(0.00233665225096046924591064453125), SC_(3.87988376617431640625), SC_(0.905801355838775634765625), SC_(426.1693615792936534606453335142808945757), SC_(0.291370860355069138222087549900934467444e-4), SC_(0.9999999316302703332864236242486086404964), SC_(0.6836972966671357637575139135950356893863e-7) }, + { SC_(0.0023414273746311664581298828125), SC_(0.15162646770477294921875), SC_(0.8350250720977783203125), SC_(428.3189578851107875838432428534412926218), SC_(5.137971347708949215771792948424410154265), SC_(0.9881465239076862789479164536000099760677), SC_(0.0118534760923137210520835463999900239323) }, + { SC_(0.00246974662877619266510009765625), SC_(0.016062967479228973388671875), SC_(0.913384497165679931640625), SC_(407.1830493976956564929063020776892494275), SC_(59.94170443126037209213789060212744913934), SC_(0.8716794519238669414440334800056096450427), SC_(0.1283205480761330585559665199943903549573) }, + { SC_(0.002563751302659511566162109375), SC_(346881.96875), SC_(0.1355634629726409912109375), SC_(376.9468505421772891867303011795099003985), SC_(BOOST_MATH_SMALL_CONSTANT(0.1526762108618082671304981685541855177048e-21950)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.405033788297231150127593256436643990287e-21953)) }, + { SC_(0.00258206087164580821990966796875), SC_(0.035458743572235107421875), SC_(0.905801355838775634765625), SC_(389.4050536513380444462075705806268494174), SC_(26.02338763289848548972683845210583599059), SC_(0.9373577130336792246365028976677251178974), SC_(0.06264228696632077536349710233227488210262) }, + { SC_(0.002597031183540821075439453125), SC_(443239.6875), SC_(0.81474220752716064453125), SC_(371.7146847560071370857526138227373442642), SC_(BOOST_MATH_SMALL_CONSTANT(0.8317828376957235925809370915610552337856e-324556)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2237691626957660763285628102201579159915e-324558)) }, + { SC_(0.00263487943448126316070556640625), SC_(0.153494547703303396701812744140625e-4), SC_(0.9688708782196044921875), SC_(382.9576369498287876959530556221352464367), SC_(65145.45590204658276263249213907497657163), SC_(0.0058441463216857531973539577971001457265), SC_(0.9941558536783142468026460422028998542735) }, + { SC_(0.00266719772480428218841552734375), SC_(346911.65625), SC_(0.905801355838775634765625), SC_(361.8277327374087690789383627225654385793), SC_(BOOST_MATH_SMALL_CONSTANT(0.4301033964228662860739993977341942313128e-355921)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1188696602023614342439206050153540352294e-355923)) }, + { SC_(0.00269666709937155246734619140625), SC_(0.000412763678468763828277587890625), SC_(0.913384497165679931640625), SC_(373.1778411851096713440039645727112970052), SC_(2420.338967675658008549863316157254032731), SC_(0.1335871114150540680718697579133501564323), SC_(0.8664128885849459319281302420866498435677) }, + { SC_(0.0027208295650780200958251953125), SC_(0.35322547773830592632293701171875e-4), SC_(0.221111953258514404296875), SC_(366.277193522541350098831770621351634747), SC_(28311.78187626887319957779121599661218375), SC_(0.01277203567477014095262479480170183963687), SC_(0.9872279643252298590473752051982981603631) }, + { SC_(0.00272956606931984424591064453125), SC_(19772.78515625), SC_(0.8350250720977783203125), SC_(356.0396978354009539538064166896399808086), SC_(BOOST_MATH_SMALL_CONSTANT(0.9020241742296869709062755875164275443572e-15478)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2533493258514946679969092434416268747323e-15480)) }, + { SC_(0.00275547988712787628173828125), SC_(0.3721626490005291998386383056640625e-4), SC_(0.8350250720977783203125), SC_(364.5307529094604948678995366003655869646), SC_(26868.34996677103086213252400124456788182), SC_(0.0133856846310799446265850708719477444261), SC_(0.9866143153689200553734149291280522555739) }, + { SC_(0.0028151907026767730712890625), SC_(27477.31640625), SC_(0.81474220752716064453125), SC_(344.5821321686204748252909961370200655145), SC_(BOOST_MATH_SMALL_CONSTANT(0.1295810546972773481375166603817084134083e-20123)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3760527392461172556866211109744018769105e-20126)) }, + { SC_(0.0028353952802717685699462890625), SC_(0.00185509095899760723114013671875), SC_(0.9688708782196044921875), SC_(356.1040183367038867687609162691621768696), SC_(535.6299297943333181238622417787029525964), SC_(0.3993388600748612956692602522580959228826), SC_(0.6006611399251387043307397477419040771174) }, + { SC_(0.00288435374386608600616455078125), SC_(227.292877197265625), SC_(0.9688708782196044921875), SC_(340.7508230138447273892606683780027192615), SC_(0.1460864057696427910239499338148093806251e-344), SC_(1), SC_(0.4287191575285125317552473740924057149251e-347) }, + { SC_(0.00291968858800828456878662109375), SC_(26.0607814788818359375), SC_(0.3082362115383148193359375), SC_(338.7074543170829748623319885868500550544), SC_(0.7770058183815534163008783765245794826343e-5), SC_(0.9999999770596781779301693123298207927688), SC_(0.2294032182206983068767017920723123773662e-7) }, + { SC_(0.00295443576760590076446533203125), SC_(0.002377311699092388153076171875), SC_(0.8350250720977783203125), SC_(340.084913203444681640900691819322445843), SC_(419.0236545387330577006632320070756985302), SC_(0.4480056314144388715684755495621762315138), SC_(0.5519943685855611284315244504378237684862) }, + { SC_(0.00295559107325971126556396484375), SC_(0.0265316255390644073486328125), SC_(0.632396042346954345703125), SC_(338.8474026621043894274825793489057322249), SC_(37.13778205569304263974776324417888043014), SC_(0.9012254110928134434981541262261287356423), SC_(0.09877458890718655650184587377387126435774) }, + { SC_(0.0029596057720482349395751953125), SC_(224.0623931884765625), SC_(0.632396042346954345703125), SC_(331.9510420242185700459042733585735513605), SC_(0.2917302320480546763371900321801779746377e-99), SC_(1), SC_(0.8788351145671973717023128235686742000708e-102) }, + { SC_(0.00297669577412307262420654296875), SC_(1.050155162811279296875), SC_(0.221111953258514404296875), SC_(334.4256122099075256327804045091328954065), SC_(1.437919940234428741218332239012603051541), SC_(0.9957187375151178019989677330902077333493), SC_(0.004281262484882198001032266909792266650686) }, + { SC_(0.00300008966587483882904052734375), SC_(20.15772247314453125), SC_(0.221111953258514404296875), SC_(329.7875749931732244518608190723798908745), SC_(0.001263128645858334169415836204191040912488), SC_(0.9999961698866066784429226955393197869515), SC_(0.3830113393321557077304460680213048538951e-5) }, + { SC_(0.00300188665278255939483642578125), SC_(229.01318359375), SC_(0.913384497165679931640625), SC_(327.1713098521674670683768608706996708035), SC_(0.2369095387200623579620960376756008067307e-245), SC_(1), SC_(0.7241146506003538662764887107768150912259e-248) }, + { SC_(0.0030314330942928791046142578125), SC_(0.00014527700841426849365234375), SC_(0.9688708782196044921875), SC_(333.3089988677217538465464560575610901933), SC_(6879.96442361192272963018171634817815369), SC_(0.04620773112925241204262014864942842964082), SC_(0.9537922688707475879573798513505715703592) }, + { SC_(0.00307437963783740997314453125), SC_(47442.203125), SC_(0.1355634629726409912109375), SC_(314.1223904268485420880421784898991700758), SC_(0.4661768136237720240915215589544819843799e-3005), SC_(1), SC_(0.1484061078837145980648748951899006466344e-3007) }, + { SC_(0.003084543161094188690185546875), SC_(0.01759622059762477874755859375), SC_(0.221111953258514404296875), SC_(322.9349072653367105766494017705421467629), SC_(58.05908350144759010425199254432375827914), SC_(0.8476115505533341366790499411863212066513), SC_(0.1523884494466658633209500588136787933487) }, + { SC_(0.00308659928850829601287841796875), SC_(3668.456298828125), SC_(0.632396042346954345703125), SC_(315.3170414058778588050051523922452679563), SC_(0.1778371467350701582251508756447844775794e-1597), SC_(1), SC_(0.5639947208123051889368889813375583407456e-1600) }, + { SC_(0.0031075035221874713897705078125), SC_(463574.59375), SC_(0.8350250720977783203125), SC_(308.4646032735494517067363328496041155987), SC_(BOOST_MATH_SMALL_CONSTANT(0.1797844067909903582651263410877396839848e-362790)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.582836425583507789423876789417407161173e-362793)) }, + { SC_(0.0031872228719294071197509765625), SC_(0.0190620534121990203857421875), SC_(0.1355634629726409912109375), SC_(311.9022616493719638657150320729604260007), SC_(54.2747395546762176378137852196514113164), SC_(0.8517800425034553034418633348183155902219), SC_(0.1482199574965446965581366651816844097781) }, + { SC_(0.00330688594840466976165771484375), SC_(30.580783843994140625), SC_(0.9688708782196044921875), SC_(298.4468703302791730813913635675715736091), SC_(0.2803251409832261518456329622579776569536e-47), SC_(1), SC_(0.9392798814509315152409941206676649986713e-50) }, + { SC_(0.003314100205898284912109375), SC_(0.00212650909088551998138427734375), SC_(0.905801355838775634765625), SC_(303.9906368171599635083999269918749891773), SC_(467.9957556260882890554503599970169589256), SC_(0.3937771958066054998125263900780659473505), SC_(0.6062228041933945001874736099219340526495) }, + { SC_(0.003379584290087223052978515625), SC_(0.0002798224450089037418365478515625), SC_(0.12707412242889404296875), SC_(293.9730527985776003498995477729524104802), SC_(3575.610064802152442402176684014142116673), SC_(0.07597021277600845269066323095679638601062), SC_(0.9240297872239915473093367690432036139894) }, + { SC_(0.00341137242503464221954345703125), SC_(0.00041894565219990909099578857421875), SC_(0.221111953258514404296875), SC_(291.8796448840601203765381207112725704486), SC_(2388.195676438229826944464885936141344267), SC_(0.1089072544200187450950507101442173577766), SC_(0.8910927455799812549049492898557826422234) }, + { SC_(0.003439466468989849090576171875), SC_(47.370025634765625), SC_(0.81474220752716064453125), SC_(286.3543973001909882141877599135861019408), SC_(0.5317440631703433310038774219119571724429e-36), SC_(0.9999999999999999999999999999999999999981), SC_(0.1856943941436685863656041188548565270956e-38) }, + { SC_(0.00347066554240882396697998046875), SC_(28.90100860595703125), SC_(0.8350250720977783203125), SC_(284.2348293012922564216437732094170115324), SC_(0.9928236151090230290780320975099581911317e-24), SC_(0.9999999999999999999999999965070304102084), SC_(0.349296958979160973885270952634051727603e-26) }, + { SC_(0.0034962403587996959686279296875), SC_(0.01680609025061130523681640625), SC_(0.81474220752716064453125), SC_(287.4556524618854262257601300345525805849), SC_(58.03520462211484350304858132426032752853), SC_(0.8320210117513918373203343357281742508238), SC_(0.1679789882486081626796656642718257491762) }, + { SC_(0.003511893562972545623779296875), SC_(306009.46875), SC_(0.9688708782196044921875), SC_(271.8425099127372893881440001524582982557), SC_(BOOST_MATH_SMALL_CONSTANT(0.2098346586792457546028748896273451865186e-461110)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7718978858258910883202302938978234471983e-461113)) }, + { SC_(0.003595965914428234100341796875), SC_(35727.2421875), SC_(0.3082362115383148193359375), SC_(267.2484485453116977496319346035879242014), SC_(BOOST_MATH_SMALL_CONSTANT(0.123220733069695734857336242073453867289e-5721)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4610718368634562424578929197535105547018e-5724)) }, + { SC_(0.00361502938903868198394775390625), SC_(1.00639164447784423828125), SC_(0.1355634629726409912109375), SC_(274.6309212278353425080128018731142847078), SC_(1.981565426188746873660093456168307131028), SC_(0.9928363124522747586721581935139153545555), SC_(0.007163687547725241327841806486084645444541) }, + { SC_(0.0036274394951760768890380859375), SC_(172327.484375), SC_(0.913384497165679931640625), SC_(263.3301748625356454777269224347300828409), SC_(BOOST_MATH_SMALL_CONSTANT(0.2140641630436078755985104352180763998712e-183086)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.8129116351946914128401510233881952058757e-183089)) }, + { SC_(0.00363842095248401165008544921875), SC_(26888.734375), SC_(0.12707412242889404296875), SC_(264.2792579892578058278858335749316739876), SC_(0.2625023783883669955447912855947339013651e-1590), SC_(1), SC_(0.9932765075306703209197188121942593137623e-1593) }, + { SC_(0.00371654215268790721893310546875), SC_(0.0219620727002620697021484375), SC_(0.8350250720977783203125), SC_(270.6235440389191393343680599718164707064), SC_(43.93534798390533253783375183114130395838), SC_(0.8603271148961277092097871984653584021336), SC_(0.1396728851038722907902128015346415978664) }, + { SC_(0.00371891190297901630401611328125), SC_(0.21678431332111358642578125), SC_(0.905801355838775634765625), SC_(270.3822108409686784182500469315048040357), SC_(2.812915810668042565860828464590581196028), SC_(0.989703638402543992470686047492567774885), SC_(0.01029636159745600752931395250743222511495) }, + { SC_(0.00372788752429187297821044921875), SC_(3138.884033203125), SC_(0.1355634629726409912109375), SC_(259.7600227700787864749175126258375772946), SC_(0.6019427502354860163606589328528886393532e-201), SC_(1), SC_(0.2317303270212149605305041501961105672503e-203) }, + { SC_(0.0037949834950268268585205078125), SC_(1.261780261993408203125), SC_(0.913384497165679931640625), SC_(263.10507173624446951140135211654228472), SC_(0.03803578006705358232704019671473446473767), SC_(0.999855455913605125119517909762529317058), SC_(0.0001445440863948748804820902374706829420089) }, + { SC_(0.0038448632694780826568603515625), SC_(0.000167022328241728246212005615234375), SC_(0.3082362115383148193359375), SC_(259.278541019298844017950173475044594277), SC_(5988.025599312784792519082812101177568898), SC_(0.04150246813588245656855822467726866784525), SC_(0.9584975318641175434314417753227313321547) }, + { SC_(0.00385077786631882190704345703125), SC_(398.761688232421875), SC_(0.905801355838775634765625), SC_(253.2088150189338966705210920133960048251), SC_(0.2139385153421763922206172654998536689392e-411), SC_(1), SC_(0.8449094291056927239834881475182035789154e-414) }, + { SC_(0.00386014836840331554412841796875), SC_(1.3947961330413818359375), SC_(0.632396042346954345703125), SC_(258.3194125890441856672733012197143596101), SC_(0.2291882381865878823082695525553500160164), SC_(0.9991135583892030507885087285816593214056), SC_(0.00088644161079694921149127141834067859442) }, + { SC_(0.0038849101401865482330322265625), SC_(0.19230575859546661376953125), SC_(0.9688708782196044921875), SC_(259.6412577666067843549069947891696418952), SC_(2.681877591073786575325032818748540425787), SC_(0.9897764351305994568268041493922879072956), SC_(0.01022356486940054317319585060771209270443) }, + { SC_(0.00388975837267935276031494140625), SC_(3818.894775390625), SC_(0.913384497165679931640625), SC_(248.4134047683841737841390343104715870606), SC_(0.176502403346789906860035669293567371707e-4060), SC_(1), SC_(0.7105188365795207961355131997781176641781e-4063) }, + { SC_(0.003921323455870151519775390625), SC_(0.001402953988872468471527099609375), SC_(0.81474220752716064453125), SC_(256.4879484588884448427401600118455003358), SC_(711.3010211604746587801977490827802722136), SC_(0.2650246660279323199798192805411218471858), SC_(0.7349753339720676800201807194588781528142) }, + { SC_(0.0039762970991432666778564453125), SC_(37.592052459716796875), SC_(0.1355634629726409912109375), SC_(247.3367820233605475301767964824970133042), SC_(0.0007107334231237934151205769345398144655273), SC_(0.9999971264630557944382455340963720076504), SC_(0.2873536944205561754465903627992349578265e-5) }, + { SC_(0.0041162068955600261688232421875), SC_(2.1463463306427001953125), SC_(0.3082362115383148193359375), SC_(241.4220915300916300953691932959895955989), SC_(0.4343201155688253213834961378974985709908), SC_(0.9982042232719257406771480462898741165473), SC_(0.001795776728074259322851953710125883452674) }, + { SC_(0.0041847354732453823089599609375), SC_(0.3331385552883148193359375), SC_(0.3082362115383148193359375), SC_(238.0257599315494126786014321742223711994), SC_(3.490743363693061305290567907883857475748), SC_(0.9855465638328417124616511464889327225367), SC_(0.01445343616715828753834885351106727746328) }, + { SC_(0.0042013223282992839813232421875), SC_(28909.28515625), SC_(0.632396042346954345703125), SC_(227.4180185431250825583311019533951629295), SC_(BOOST_MATH_SMALL_CONSTANT(0.154444039219970105225464675248506843513e-12568)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6791196238950741512067428162651220919711e-12571)) }, + { SC_(0.0042040585540235042572021484375), SC_(0.004051725380122661590576171875), SC_(0.221111953258514404296875), SC_(236.6073390385921364322672554231554985574), SC_(248.0529807507079020399926946536561498738), SC_(0.4881920994511252602745898242826427410612), SC_(0.5118079005488747397254101757173572589388) }, + { SC_(0.0042134574614465236663818359375), SC_(258792.734375), SC_(0.3082362115383148193359375), SC_(224.6488701427391990771119838504413297139), SC_(BOOST_MATH_SMALL_CONSTANT(0.2206824276115503855571645372383063588368e-41422)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9823438126856877424580544291022948955495e-41425)) }, + { SC_(0.0042219576425850391387939453125), SC_(29.536075592041015625), SC_(0.913384497165679931640625), SC_(232.9471648952734556361109119453173366286), SC_(0.1542533613322604488019413446604890225816e-32), SC_(0.9999999999999999999999999999999999933782), SC_(0.6621817501046147319767982459195303414945e-35) }, + { SC_(0.004270188510417938232421875), SC_(1927.554443359375), SC_(0.905801355838775634765625), SC_(226.18399773531284549516645893385992798), SC_(0.1489236244284971002826315484787575770326e-1980), SC_(1), SC_(0.6584180398242491837038013433931894830401e-1983) }, + { SC_(0.0042725945822894573211669921875), SC_(1262.0977783203125), SC_(0.8350250720977783203125), SC_(226.4617086503311279179717694502512535438), SC_(0.1913088965087741355042123383782213408177e-990), SC_(1), SC_(0.8447737043447164123758604932012104601162e-993) }, + { SC_(0.0043012551032006740570068359375), SC_(30236.775390625), SC_(0.905801355838775634765625), SC_(221.8509296407934992626076247854197759141), SC_(BOOST_MATH_SMALL_CONSTANT(0.9568037088440380747994881168949410528981e-31026)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4312822625504576421690187492172329467755e-31028)) }, + { SC_(0.004325519315898418426513671875), SC_(175633.671875), SC_(0.221111953258514404296875), SC_(218.8761487276503563560687159943414565662), SC_(BOOST_MATH_SMALL_CONSTANT(0.5895749519418378855182936121514390889886e-19065)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2693646408569859866252719376075168160127e-19067)) }, + { SC_(0.00443776883184909820556640625), SC_(34.436649322509765625), SC_(0.905801355838775634765625), SC_(221.2773318443523398630204647384902441298), SC_(0.1492888594965177397706744196539651601244e-36), SC_(0.9999999999999999999999999999999999999993), SC_(0.6746685629846997747027306963470039808401e-39) }, + { SC_(0.00454067252576351165771484375), SC_(0.483688652515411376953125), SC_(0.1355634629726409912109375), SC_(218.3153168844210370175417520624042488847), SC_(3.382264759538559604494704955469664186651), SC_(0.9847437904624039309446363558333050327663), SC_(0.01525620953759606905536364416669496723367) }, + { SC_(0.0045460476540029048919677734375), SC_(300.9449462890625), SC_(0.221111953258514404296875), SC_(213.7813022064452868909326801570865976177), SC_(0.3227929715492706277605621917742581687685e-34), SC_(0.999999999999999999999999999999999999849), SC_(0.1509921439422959745170413628430055157838e-36) }, + { SC_(0.004563690163195133209228515625), SC_(2.421394824981689453125), SC_(0.8350250720977783203125), SC_(217.8799586513934820214849474815116953363), SC_(0.005961477363609150534306763126278020763766), SC_(0.9999726394557294648206678550132970370657), SC_(0.2736054427053517933214498670296293425429e-4) }, + { SC_(0.0046148826368153095245361328125), SC_(2.5390207767486572265625), SC_(0.81474220752716064453125), SC_(215.3911637954872479757273454765446788177), SC_(0.006290815635725090143045244499021439610959), SC_(0.9999707943826584093865704269334329868276), SC_(0.292056173415906134295730665670131724332e-4) }, + { SC_(0.00461888872087001800537109375), SC_(20.5790615081787109375), SC_(0.632396042346954345703125), SC_(212.9582988909358024374609617762690102154), SC_(0.8498984519843349366341711897318345725924e-10), SC_(0.9999999999996009085081867311109206470199), SC_(0.3990914918132688890793529801004722615195e-12) }, + { SC_(0.00461952388286590576171875), SC_(0.3906617712345905601978302001953125e-4), SC_(0.632396042346954345703125), SC_(217.0097822764051787582601420839069626597), SC_(25597.04549299603115155470379908437383166), SC_(0.008406652111118751809788600453438090257441), SC_(0.9915933478888812481902113995465619097426) }, + { SC_(0.004653147421777248382568359375), SC_(0.10722650587558746337890625), SC_(0.221111953258514404296875), SC_(213.6235551301594634201895396322779399163), SC_(10.4405283220568910078873938202949912294), SC_(0.9534038291135427516095651839362691856796), SC_(0.04659617088645724839043481606373081432043) }, + { SC_(0.0046935188584029674530029296875), SC_(0.3578202085918746888637542724609375e-4), SC_(0.1355634629726409912109375), SC_(211.2144483144425736194095915990015833595), SC_(27948.83373135622455004399362042513700411), SC_(0.007500500246548680973867880011181586541863), SC_(0.9924994997534513190261321199888184134581) }, + { SC_(0.0047154170460999011993408203125), SC_(0.00197655311785638332366943359375), SC_(0.632396042346954345703125), SC_(212.6050063852692393122510509364342610233), SC_(505.3856142451954157399817267250359150906), SC_(0.2961111193884143564019037971113840518997), SC_(0.7038888806115856435980962028886159481003) }, + { SC_(0.0048523540608584880828857421875), SC_(0.0342371277511119842529296875), SC_(0.12707412242889404296875), SC_(204.1620299300672943703945362707973541147), SC_(31.06905262950431718965636174688662260339), SC_(0.8679211425146752585460500302016400495225), SC_(0.1320788574853247414539499697983599504775) }, + { SC_(0.0048918980173766613006591796875), SC_(15688.6884765625), SC_(0.221111953258514404296875), SC_(194.4377154348503515109659413448110836721), SC_(0.6953322571227953874419265151726638154282e-1706), SC_(1), SC_(0.357611822154832009703914255565629106317e-1708) }, + { SC_(0.004914722405374050140380859375), SC_(192.96014404296875), SC_(0.8350250720977783203125), SC_(197.7200234660610376061244398566376729857), SC_(0.609344481862498887765102701970213350289e-153), SC_(1), SC_(0.3081855196962860240597711506298949774366e-155) }, + { SC_(0.004918993450701236724853515625), SC_(0.241855232161469757556915283203125e-4), SC_(0.81474220752716064453125), SC_(204.7676834084662972959975720485250736829), SC_(41345.56627906620690305086905485724581902), SC_(0.004928183816606576629273815334288997756918), SC_(0.9950718161833934233707261846657110022431) }, + { SC_(0.0049519282765686511993408203125), SC_(0.0407697297632694244384765625), SC_(0.9688708782196044921875), SC_(205.0778900575319925822637629141708215302), SC_(21.31886806987151533840023202831889807089), SC_(0.9058340400003676655664382570795025221403), SC_(0.09416595999963233443356174292049747785975) }, + { SC_(0.01061948575079441070556640625), SC_(0.4264468225301243364810943603515625e-4), SC_(0.221111953258514404296875), SC_(92.9129363125494581195718877372374381726), SC_(23450.81880370592316039081125925465981978), SC_(0.003946398019589249610370640587827130087418), SC_(0.9960536019804107503896293594121728699126) }, + { SC_(0.01090050302445888519287109375), SC_(11.95932865142822265625), SC_(0.81474220752716064453125), SC_(88.77976801465830495290548601285141963018), SC_(0.1762122080462366385145816418820675567568e-9), SC_(0.9999999999980151760701065051908548696109), SC_(0.1984823929893494809145130389058690398462e-11) }, + { SC_(0.011304032988846302032470703125), SC_(0.01250172965228557586669921875), SC_(0.12707412242889404296875), SC_(86.55452525913597512910645788840115136069), SC_(81.85992294295806815712701650060841387305), SC_(0.5139376471742628519296990138709223195204), SC_(0.4860623528257371480703009861290776804796) }, + { SC_(0.0113441534340381622314453125), SC_(311.568267822265625), SC_(0.905801355838775634765625), SC_(82.06357322946025559981749842463637118366), SC_(0.782803795459850358127785916565440098974e-322), SC_(1), SC_(0.9538992328192080307496883720122144674341e-324) }, + { SC_(0.01210707984864711761474609375), SC_(0.00047863091458566486835479736328125), SC_(0.221111953258514404296875), SC_(81.34339868853391223538286201827231300729), SC_(2090.524928665945974602738186159976498435), SC_(0.03745319072248596285475895371946612740082), SC_(0.9625468092775140371452410462805338725992) }, + { SC_(0.0127197094261646270751953125), SC_(461789.9375), SC_(0.9688708782196044921875), SC_(66.12132788164299594672500954172495150149), SC_(BOOST_MATH_SMALL_CONSTANT(0.9364481593250719291878011517099647747747e-695846)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1416257339842466089474115368029481978682e-695847)) }, + { SC_(0.01275224424898624420166015625), SC_(218.467041015625), SC_(0.913384497165679931640625), SC_(72.68661693692461976099341225710200800222), SC_(0.3971318105817831708831072346376447547305e-234), SC_(1), SC_(0.5463616650729567846142053580440966568318e-236) }, + { SC_(0.013632931746542453765869140625), SC_(12715.3935546875), SC_(0.221111953258514404296875), SC_(63.98900337441679303826080321259474819805), SC_(0.4021743596727233669711945434813477418928e-1383), SC_(1), SC_(0.6285054282209921266545872655753585971277e-1385) }, + { SC_(0.01376917399466037750244140625), SC_(410.58148193359375), SC_(0.1355634629726409912109375), SC_(66.33313730298259857653322130873174127017), SC_(0.1818894929654292743718248106882972544963e-27), SC_(0.9999999999999999999999999999972579392388), SC_(0.2742060761194402421981008649460048394723e-29) }, + { SC_(0.01422516815364360809326171875), SC_(3725.08544921875), SC_(0.913384497165679931640625), SC_(62.03677192816864098479063759683213635154), SC_(0.8328815474964475797096485621577023047519e-3961), SC_(1), SC_(0.1342561067588796270972616746712860724678e-3962) }, + { SC_(0.014248653315007686614990234375), SC_(0.29711585739278234541416168212890625e-4), SC_(0.81474220752716064453125), SC_(71.64299306976453152515129584000996156553), SC_(33655.42020612590340963780773633804059336), SC_(0.00212419897477089238116375040187716497925), SC_(0.9978758010252291076188362495981228350207) }, + { SC_(0.01431076042354106903076171875), SC_(2.4992504119873046875), SC_(0.9688708782196044921875), SC_(68.61710492016970322126199614371659115584), SC_(0.7012636309613990157780059258802336781301e-4), SC_(0.9999989780056808141162183538611423252437), SC_(0.1021994319185883781646138857674756280835e-5) }, + { SC_(0.014824463985860347747802734375), SC_(0.38286387920379638671875), SC_(0.81474220752716064453125), SC_(68.10963743604857726757757409915022637996), SC_(1.447378573532694812428383633394595771425), SC_(0.9791914797878430736779535679470712537945), SC_(0.02080852021215692632204643205292874620548) }, + { SC_(0.01512057520449161529541015625), SC_(0.0045269015245139598846435546875), SC_(0.905801355838775634765625), SC_(68.35700996380495368521452643346801127428), SC_(218.6478262852280572973442797881192642363), SC_(0.2381737215901540929460045012772197673396), SC_(0.7618262784098459070539954987227802326604) }, + { SC_(0.0161462686955928802490234375), SC_(31081.712890625), SC_(0.632396042346954345703125), SC_(51.93206210105480255973064811400686795094), SC_(BOOST_MATH_SMALL_CONSTANT(0.9435669288959732592362662699464427373729e-13513)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1816925596098769745444433468593524929453e-13514)) }, + { SC_(0.01625619828701019287109375), SC_(0.0234319157898426055908203125), SC_(0.913384497165679931640625), SC_(63.74680880160488943079204944589970820775), SC_(40.38159452420545542553293035595221543857), SC_(0.6121942406256405639246777015747062202937), SC_(0.3878057593743594360753222984252937797063) }, + { SC_(0.01645939052104949951171875), SC_(29.5273590087890625), SC_(0.913384497165679931640625), SC_(56.94779131906162858369277796095164780241), SC_(0.1574555210382990903562280640914644107276e-32), SC_(0.9999999999999999999999999999999999723509), SC_(0.2764910058690817070374202714873696186641e-34) }, + { SC_(0.01668673567473888397216796875), SC_(0.16884712749742902815341949462890625e-4), SC_(0.632396042346954345703125), SC_(60.45175821265212983145085274083071185428), SC_(59224.61994087775188585379099402587411431), SC_(0.001019679262926144457952937015509715257382), SC_(0.9989803207370738555420470629844902847426) }, + { SC_(0.0168448425829410552978515625), SC_(0.0039571900852024555206298828125), SC_(0.9688708782196044921875), SC_(62.74700478699485422094099347314541954573), SC_(249.2892070628920184326937272208527854942), SC_(0.2010888557292860971820994695281544363273), SC_(0.7989111442707139028179005304718455636727) }, + { SC_(0.01712529920041561126708984375), SC_(0.002250707708299160003662109375), SC_(0.8350250720977783203125), SC_(59.98405449676909698960547676830592952825), SC_(442.6823527134120492207603234213023338597), SC_(0.1193317349963428452237957406008792060563), SC_(0.8806682650036571547762042593991207939437) }, + { SC_(0.017150647938251495361328125), SC_(27.16506195068359375), SC_(0.9688708782196044921875), SC_(54.58403599527897563165979391919408203096), SC_(0.4423706914893721503126455993719907104759e-42), SC_(1), SC_(0.8104396888636692338298325380387679082135e-44) }, + { SC_(0.01761732995510101318359375), SC_(0.028260417282581329345703125), SC_(0.632396042346954345703125), SC_(57.25006238845797785100260049527653607354), SC_(34.82441408608533263441290810702178160147), SC_(0.6217799392460997235296555763573093809535), SC_(0.3782200607539002764703444236426906190465) }, + { SC_(0.017636947333812713623046875), SC_(0.3383924067020416259765625), SC_(0.221111953258514404296875), SC_(55.36493320206828451037648768654366556785), SC_(3.822088511133688011920517500844828920013), SC_(0.9354235371116646113774367970695081980511), SC_(0.0645764628883353886225632029304918019489) }, + { SC_(0.01792473532259464263916015625), SC_(0.4457229442778043448925018310546875e-4), SC_(0.905801355838775634765625), SC_(58.02477425424591799257680088122965272887), SC_(22433.19647744917052681554311666242096818), SC_(0.00257988544085178561421642780244658967612), SC_(0.9974201145591482143857835721975534103239) }, + { SC_(0.019047506153583526611328125), SC_(0.291198313236236572265625), SC_(0.905801355838775634765625), SC_(53.75288387375856676369870717987725563769), SC_(1.764049560934113725136984906846004723634), SC_(0.9682250179936675964372918419102480226956), SC_(0.03177498200633240356270815808975197730438) }, + { SC_(0.01962828077375888824462890625), SC_(266305.03125), SC_(0.632396042346954345703125), SC_(39.43145046709021020530909908321394585192), SC_(BOOST_MATH_SMALL_CONSTANT(0.2111290448479440101170488734157419233744e-115746)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5354331183534674278805278800610250514981e-115748)) }, + { SC_(0.02007224597036838531494140625), SC_(3.6188943386077880859375), SC_(0.12707412242889404296875), SC_(47.50213838563133912147182892348047784988), SC_(0.6410275772846972029953195540588357296081), SC_(0.9866849725300892924651401131277058855528), SC_(0.01331502746991070753485988687229411444717) }, + { SC_(0.02042911946773529052734375), SC_(36.3684234619140625), SC_(0.3082362115383148193359375), SC_(44.97928431689277334640281609218909306214), SC_(0.1246898290004505980070430865032688069324e-6), SC_(0.9999999972278387584757369003545065374324), SC_(0.2772161241524263099645493462567561193467e-8) }, + { SC_(0.02061123587191104888916015625), SC_(4.98589992523193359375), SC_(0.3082362115383148193359375), SC_(46.41751188885766131910543919599525010038), SC_(0.07736459768351619881850816549081161689262), SC_(0.9983360618732709001455824216111224311826), SC_(0.001663938126729099854417578388877568817449) }, + { SC_(0.02065885998308658599853515625), SC_(12765.6015625), SC_(0.3082362115383148193359375), SC_(39.35863216607121843622315888513904687239), SC_(0.2289782883998965937992770650127766430927e-2046), SC_(1), SC_(0.5817739992430057648123382299173062141794e-2048) }, + { SC_(0.020764775574207305908203125), SC_(0.0004887509276159107685089111328125), SC_(0.632396042346954345703125), SC_(48.67736451129363365158999240294060392189), SC_(2045.478609018724104419608670317961662147), SC_(0.02324438347791284508002932992282891416589), SC_(0.9767556165220871549199706700771710858341) }, + { SC_(0.02124021016061305999755859375), SC_(20481.953125), SC_(0.81474220752716064453125), SC_(37.67922399458307854876617196441433654621), SC_(BOOST_MATH_SMALL_CONSTANT(0.2558564892703794491473251035369658526678e-15001)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6790386375981693220899301732852035737115e-15003)) }, + { SC_(0.021562583744525909423828125), SC_(122176.578125), SC_(0.8350250720977783203125), SC_(35.59341411600131762873790863135769487504), SC_(BOOST_MATH_SMALL_CONSTANT(0.6198904429834281812244715470706494453801e-95618)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1741587477287690806826379876287995341719e-95619)) }, + { SC_(0.02161762677133083343505859375), SC_(1.312267780303955078125), SC_(0.1355634629726409912109375), SC_(44.26210844968925347790095601894818044278), SC_(1.58203800395258243471926218101715395344), SC_(0.9654909486524662707028901677517790456839), SC_(0.03450905134753372929710983224822095431611) }, + { SC_(0.021679364144802093505859375), SC_(0.42985266190953552722930908203125e-4), SC_(0.12707412242889404296875), SC_(44.2365702512397635991673589750004369616), SC_(23265.6402816351731290526307170355289763), SC_(0.001897760787511831199676029655530990490207), SC_(0.9981022392124881688003239703444690095098) }, + { SC_(0.02205819822847843170166015625), SC_(0.00224195979535579681396484375), SC_(0.12707412242889404296875), SC_(43.44472254336863189641421901977429954758), SC_(447.8889491974596897304687119460459534591), SC_(0.08842203382772658579099103813157515805609), SC_(0.9115779661722734142090089618684248419439) }, + { SC_(0.02250875532627105712890625), SC_(29.670085906982421875), SC_(0.905801355838775634765625), SC_(40.66369422324434322610774979974376657438), SC_(0.1342966680454402292807913080954109891919e-31), SC_(0.9999999999999999999999999999999996697382), SC_(0.3302618480951320742636123042544696331085e-33) }, + { SC_(0.02278398908674716949462890625), SC_(230.1311492919921875), SC_(0.9688708782196044921875), SC_(38.28669745795363063686160624927465162117), SC_(0.7623360207191257305904221059661317168012e-349), SC_(1), SC_(0.1991125041684051020850888239397734803256e-350) }, + { SC_(0.02300582826137542724609375), SC_(3731.865966796875), SC_(0.905801355838775634765625), SC_(35.51469950912618008711178645980789988599), SC_(0.5523234982753809639645003441940015963004e-3832), SC_(1), SC_(0.155519687878381427976758710314007925128e-3833) }, + { SC_(0.0235797353088855743408203125), SC_(0.34650889574550092220306396484375e-4), SC_(0.9688708782196044921875), SC_(45.80964464398935306471823683562476436923), SC_(28855.84941603052538944927117338284389429), SC_(0.001585017820181850667013514727458714383511), SC_(0.9984149821798181493329864852725412856165) }, + { SC_(0.023755080997943878173828125), SC_(1.81503880023956298828125), SC_(0.905801355838775634765625), SC_(41.23445462424267729334167588399942511541), SC_(0.008049732102934764351924599921733673304299), SC_(0.9998048195125741382216162986900024161379), SC_(0.00019518048742586177838370130999758386209) }, + { SC_(0.02475666068494319915771484375), SC_(0.0353721342980861663818359375), SC_(0.81474220752716064453125), SC_(41.7533041603007802475917960987564209577), SC_(26.81601355910983436259292369982846630827), SC_(0.6089210969133100694014430010843864971209), SC_(0.3910789030866899305985569989156135028791) }, + { SC_(0.02489638887345790863037109375), SC_(0.17812990336096845567226409912109375e-4), SC_(0.8350250720977783203125), SC_(41.75255294558606456802864973785461196712), SC_(56137.17917069929805316307765371517816686), SC_(0.0007432066019157325946480829806667978089399), SC_(0.9992567933980842674053519170193332021911) }, + { SC_(0.02505088783800601959228515625), SC_(0.169265210628509521484375), SC_(0.1355634629726409912109375), SC_(38.0813106107053677764135408369988393382), SC_(7.465549004765010494606672988391137544503), SC_(0.8360908069668699337443128615509513371332), SC_(0.1639091930331300662556871384490486628668) }, + { SC_(0.0253847651183605194091796875), SC_(0.107284702360630035400390625), SC_(0.913384497165679931640625), SC_(41.28510997753819000995352603934561537102), SC_(7.230832848311232497799102024589147916793), SC_(0.8509596551742445855613258931629667335774), SC_(0.1490403448257554144386741068370332664226) }, + { SC_(0.0263047702610492706298828125), SC_(3064.19140625), SC_(0.221111953258514404296875), SC_(30.33265925103147848556863665020339880076), SC_(0.4074684034074821389767004725537986882465e-335), SC_(1), SC_(0.1343332281008714906881753724347451500761e-336) }, + { SC_(0.02670976333320140838623046875), SC_(0.00032671095686964690685272216796875), SC_(0.913384497165679931640625), SC_(39.75315117721609457251393032241304406899), SC_(3058.452225296471443258692889496221797513), SC_(0.01283102517318019070223831788427815322336), SC_(0.9871689748268198092977616821157218467766) }, + { SC_(0.0269134230911731719970703125), SC_(0.00032558594830334186553955078125), SC_(0.81474220752716064453125), SC_(38.59887132599509921018498050670079074153), SC_(3069.898994508502396477530541679847586528), SC_(0.01241721017416010624038834588073304322311), SC_(0.9875827898258398937596116541192669567769) }, + { SC_(0.02691542543470859527587890625), SC_(257.891082763671875), SC_(0.12707412242889404296875), SC_(31.52275844618623133260222388650836586129), SC_(0.1691134000097981295856664529447969224758e-16), SC_(0.9999999999999999994635196653284692209244), SC_(0.5364803346715307790755666192552011395549e-18) }, + { SC_(0.02693811617791652679443359375), SC_(37925.875), SC_(0.1355634629726409912109375), SC_(27.52884559586118116367855498911481924404), SC_(0.6508712684201788275544647969373724417315e-2403), SC_(1), SC_(0.2364324599641163083991414614689709885369e-2404) }, + { SC_(0.027010373771190643310546875), SC_(40.798625946044921875), SC_(0.8350250720977783203125), SC_(33.00592499252189951355614137798818549215), SC_(0.3429917551747212316183718711491129418791e-33), SC_(0.9999999999999999999999999999999999896082), SC_(0.1039182374838554998371391484307285180498e-34) }, + { SC_(0.027130119502544403076171875), SC_(0.390757262706756591796875), SC_(0.3082362115383148193359375), SC_(35.90552418547066004606923895937043297202), SC_(2.98380695457424005202119856899103204052), SC_(0.9232744079904791320765841232160411392892), SC_(0.07672559200952086792341587678395886071084) }, + { SC_(0.027266047894954681396484375), SC_(0.2437297735013999044895172119140625e-4), SC_(0.1355634629726409912109375), SC_(34.86521525249479186979358108920793470328), SC_(41030.81205322347091227833069937233911148), SC_(0.0008490110859381600035235893021351087779298), SC_(0.9991509889140618399964764106978648912221) }, + { SC_(0.0276034064590930938720703125), SC_(29335.0078125), SC_(0.8350250720977783203125), SC_(26.85785623035577696227462871088924256017), SC_(BOOST_MATH_SMALL_CONSTANT(0.3615083784310516986138575354063124550047e-22961)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1346006082281656919355265001294210112337e-22962)) }, + { SC_(0.02829697541892528533935546875), SC_(13777.6298828125), SC_(0.913384497165679931640625), SC_(26.56580055953003226290677804181116986292), SC_(BOOST_MATH_SMALL_CONSTANT(0.3054028669242327526394177881070317637973e-14641)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1149609123353426035890781795044026282057e-14642)) }, + { SC_(0.02842903696000576019287109375), SC_(0.03119052015244960784912109375), SC_(0.8350250720977783203125), SC_(36.6730480246053194934000096056202450598), SC_(30.46935560382069638858935070257014865759), SC_(0.5461980215596435075766995065932255193652), SC_(0.4538019784403564924233004934067744806348) }, + { SC_(0.02883697114884853363037109375), SC_(399.402069091796875), SC_(0.3082362115383148193359375), SC_(28.71526545288497625508742226734804914204), SC_(0.9363671800038887851786384477722789146146e-66), SC_(1), SC_(0.3260868967205781097054901857257900727036e-67) }, + { SC_(0.0292808823287487030029296875), SC_(0.4510292112827301025390625), SC_(0.632396042346954345703125), SC_(34.16626096491055239111143376362071217439), SC_(1.614162501040144007071966262357462703595), SC_(0.9548869928111328675235876376981510710952), SC_(0.04511300718886713247641236230184892890484) }, + { SC_(0.0295875072479248046875), SC_(0.18167886082665063440799713134765625e-4), SC_(0.913384497165679931640625), SC_(36.10874453604145969175645989765609155776), SC_(55039.81854938211499539380858745297466486), SC_(0.0006556175503563209739788378491170180687729), SC_(0.9993443824496436790260211621508829819312) }, + { SC_(0.03072208352386951446533203125), SC_(487934.875), SC_(0.12707412242889404296875), SC_(21.40039309248696402801946483893072349666), SC_(BOOST_MATH_SMALL_CONSTANT(0.9540553262538226105022025664601283221644e-28804)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4458120568770126061414102572984363082005e-28805)) }, + { SC_(0.0310857109725475311279296875), SC_(15232.21875), SC_(0.905801355838775634765625), SC_(23.44028489227366049390242332703067336678), SC_(BOOST_MATH_SMALL_CONSTANT(0.1916791109501658525873364793532490055884e-15631)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.8177337085751322722517495985834528569095e-15633)) }, + { SC_(0.03123457171022891998291015625), SC_(3524.479736328125), SC_(0.12707412242889404296875), SC_(24.38302966802117338623323410267777880059), SC_(0.1976861395081482593400168565772118123666e-210), SC_(1), SC_(0.8107529794273988391895895895799958760346e-212) }, + { SC_(0.0312533564865589141845703125), SC_(3994.4365234375), SC_(0.8350250720977783203125), SC_(24.26925582076123268914474286266556107924), SC_(0.3162589788262145279359701440899680574297e-3129), SC_(1), SC_(0.13031259844221078673429625968931804599e-3130) }, + { SC_(0.0315650589764118194580078125), SC_(0.001970894634723663330078125), SC_(0.3082362115383148193359375), SC_(30.869710220720063489222966688220281495), SC_(508.1408365649057706132322210921735073939), SC_(0.05727106900748177964273230228606521142893), SC_(0.9427289309925182203572676977139347885711) }, + { SC_(0.0319148339331150054931640625), SC_(0.00033934754901565611362457275390625), SC_(0.8350250720977783203125), SC_(32.9088421478168554145764192207301637524), SC_(2945.204071549599643271354333806045230095), SC_(0.01105023318506736567008856604466052756282), SC_(0.9889497668149326343299114339553394724372) }, + { SC_(0.0324479900300502777099609375), SC_(0.015262463130056858062744140625), SC_(0.1355634629726409912109375), SC_(29.01393962639045401353088948311780874504), SC_(67.24901888102986901421625241689103177541), SC_(0.3014029495483867428234722841210975246223), SC_(0.6985970504516132571765277158789024753777) }, + { SC_(0.0333194546401500701904296875), SC_(0.3989324867725372314453125), SC_(0.9688708782196044921875), SC_(31.34340863495666809511625976130148105884), SC_(0.6335111109710499809653389054053267939414), SC_(0.980188488572238792923820822114921805459), SC_(0.01981151142776120707617917788507819454097) }, + { SC_(0.0333627723157405853271484375), SC_(4.62843418121337890625), SC_(0.913384497165679931640625), SC_(28.06261703304876393724814064222820742171), SC_(0.2807984906692262501897155307645772687697e-5), SC_(0.9999998999386043570181515856232760129102), SC_(0.1000613956429818484143767239870898099748e-6) }, + { SC_(0.0335802994668483734130859375), SC_(0.19390623271465301513671875), SC_(0.8350250720977783203125), SC_(30.87620652731886714384399478171794302635), SC_(3.739844900374224433053749987064023915851), SC_(0.8919621173955640285328737176113056024516), SC_(0.1080378826044359714671262823886943975484) }, + { SC_(0.033774249255657196044921875), SC_(33.470600128173828125), SC_(0.632396042346954345703125), SC_(25.82658250378490186184478364556565883422), SC_(0.1299351033510292982287995011527472612391e-15), SC_(0.9999999999999999949689393348118270508162), SC_(0.5031060665188172949183785434091737800436e-17) }, + { SC_(0.033940948545932769775390625), SC_(489.9017333984375), SC_(0.221111953258514404296875), SC_(23.43592890949145426826226872729950125799), SC_(0.5935926099240656620059970318616507256013e-55), SC_(1), SC_(0.2532831586136375035323482066483628637581e-56) }, + { SC_(0.0344383455812931060791015625), SC_(1315.3695068359375), SC_(0.9688708782196044921875), SC_(22.25010120703504429376162251599304630768), SC_(0.7109679311034694236733626555971539797882e-1985), SC_(1), SC_(0.3195346953651947210669700263684425060838e-1986) }, + { SC_(0.0346836335957050323486328125), SC_(2.891076564788818359375), SC_(0.221111953258514404296875), SC_(26.99757576962473828694663602310193086957), SC_(0.4344915503078346109866161249402339894598), SC_(0.9841611809551033656235948199023818862418), SC_(0.01583881904489663437640518009761811375819) }, + { SC_(0.0355083644390106201171875), SC_(207270.546875), SC_(0.221111953258514404296875), SC_(17.88254290202323034987146975286489955936), SC_(BOOST_MATH_SMALL_CONSTANT(0.1938863043447469635408367737841101764686e-22498)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1084221105505138606850733967746475364952e-22499)) }, + { SC_(0.035541228950023651123046875), SC_(353.3453369140625), SC_(0.8350250720977783203125), SC_(22.400439232555436086445547455037739456), SC_(0.1012431808330590013913997249824269720048e-278), SC_(1), SC_(0.4519696233720199536282891802287731883289e-280) }, + { SC_(0.0357905812561511993408203125), SC_(0.19347016513347625732421875), SC_(0.12707412242889404296875), SC_(26.0493907087657493086432836468187365539), SC_(6.737193859417837128916013021795419009459), SC_(0.7945137028406528766417351867693694311322), SC_(0.2054862971593471233582648132306305688678) }, + { SC_(0.03617782890796661376953125), SC_(4978.021484375), SC_(0.1355634629726409912109375), SC_(19.91580571160478764140047890799065498089), SC_(0.1566588315502458236212370977217589413572e-317), SC_(1), SC_(0.7866055424459273613263907314587584981944e-319) }, + { SC_(0.036653555929660797119140625), SC_(0.0039511634968221187591552734375), SC_(0.221111953258514404296875), SC_(26.04199226253237026297526089983526355229), SC_(254.2656285318020713174260723752206115004), SC_(0.09290504549514099127804895601282910382889), SC_(0.9070949545048590087219510439871708961711) }, + { SC_(0.0366611182689666748046875), SC_(0.001741903950460255146026611328125), SC_(0.81474220752716064453125), SC_(28.70284461580296960605174706910055535579), SC_(572.5970242286072277899701318800904722238), SC_(0.04773465969810480016227634131591638953376), SC_(0.9522653403018951998377236586840836104662) }, + { SC_(0.036767013370990753173828125), SC_(0.010332576930522918701171875), SC_(0.3082362115383148193359375), SC_(26.38411238247533242854934500580607347367), SC_(97.52057268574274732010177365298373642887), SC_(0.2129387792555952004858471262124048281948), SC_(0.7870612207444047995141528737875951718052) }, + { SC_(0.036872327327728271484375), SC_(345497.65625), SC_(0.905801355838775634765625), SC_(16.60802591265856682616182018546405467996), SC_(BOOST_MATH_SMALL_CONSTANT(0.2161420343251689268071125522978270155822e-354470)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1301431220434370746446718784751414005802e-354471)) }, + { SC_(0.0370448939502239227294921875), SC_(289887.34375), SC_(0.81474220752716064453125), SC_(16.6004189281411556087941964361545494995), SC_(BOOST_MATH_SMALL_CONSTANT(0.1965954913814918759506831311707010927856e-212267)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1184280301795406580843211345157086411144e-212268)) }, + { SC_(0.0378056205809116363525390625), SC_(296247.6875), SC_(0.913384497165679931640625), SC_(16.09194444987159321324019514614444639933), SC_(BOOST_MATH_SMALL_CONSTANT(0.535410774324226603415118024790685936299e-314740)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3327197505510273811696486116295989619144e-314741)) }, + { SC_(0.0378379710018634796142578125), SC_(353.800811767578125), SC_(0.632396042346954345703125), SC_(20.73345001001782217833384545958108093874), SC_(0.7467809176821582887634024422866665464842e-156), SC_(1), SC_(0.360181695434833407410588393958961418318e-157) }, + { SC_(0.0379242189228534698486328125), SC_(0.004291436634957790374755859375), SC_(0.632396042346954345703125), SC_(26.86430465925230384256659574614086409308), SC_(232.4589024982946008459886804740086725718), SC_(0.1035939087508331029327591205661608644132), SC_(0.8964060912491668970672408794338391355868) }, + { SC_(0.0379955135285854339599609375), SC_(128.872100830078125), SC_(0.81474220752716064453125), SC_(21.43553637109974649031979315943776616494), SC_(0.4088158636111406672945129705764095533446e-96), SC_(1), SC_(0.1907187469133371818859225613657519503967e-97) }, + { SC_(0.0380439497530460357666015625), SC_(0.001482595689594745635986328125), SC_(0.1355634629726409912109375), SC_(24.49118255913105834378826695309291059458), SC_(676.223725445557921341528840576305732538), SC_(0.03495170757658144544142413554020212652152), SC_(0.9650482924234185545585758644597978734785) }, + { SC_(0.0387343578040599822998046875), SC_(1982.2989501953125), SC_(0.632396042346954345703125), SC_(18.83692714161079381516027785361741964716), SC_(0.2226356599665315206895105877923420739305e-864), SC_(1), SC_(0.1181910713423789226468088759994045271419e-865) }, + { SC_(0.0392099507153034210205078125), SC_(4.091603755950927734375), SC_(0.8350250720977783203125), SC_(23.73509913430908231696756865120043602659), SC_(0.0001761198658116325421932783950127400579367), SC_(0.9999925798262743696598251232422708253738), SC_(0.7420173725630340174876757729174626194011e-5) }, + { SC_(0.039514325559139251708984375), SC_(0.000166679310495965182781219482421875), SC_(0.3082362115383148193359375), SC_(24.49682757816677769454386394981019028476), SC_(6000.291861957064830651127334417602907534), SC_(0.004066006102540424336654745459914299462271), SC_(0.9959339938974595756633452545400857005377) }, + { SC_(0.0411520861089229583740234375), SC_(28357.451171875), SC_(0.12707412242889404296875), SC_(15.58292342054710209148389058345104151075), SC_(0.4730480254556644651265694901617344274591e-1677), SC_(1), SC_(0.3035682154684272872897738970830059105764e-1678) }, + { SC_(0.04271042346954345703125), SC_(23.0694675445556640625), SC_(0.221111953258514404296875), SC_(20.0243389160179008623187016052591843516), SC_(0.0005118878203582350885059024060507572610437), SC_(0.9999744373715753168509299843454723780082), SC_(0.255626284246831490700156545276219918113e-4) }, + { SC_(0.04279924929141998291015625), SC_(3897.815673828125), SC_(0.3082362115383148193359375), SC_(16.02484096656381736207710622754696913186), SC_(0.1211378961687267592427950158904546549886e-626), SC_(1), SC_(0.7559382113150679011913355365533542467539e-628) }, + { SC_(0.04297505319118499755859375), SC_(3.1283900737762451171875), SC_(0.632396042346954345703125), SC_(21.77594742125604909733896625284641283204), SC_(0.01924256699181671126161716640584811112549), SC_(0.9991171186393790349390521464440413266787), SC_(0.0008828813606209650609478535559586733212865) }, + { SC_(0.0442209132015705108642578125), SC_(0.02011293359100818634033203125), SC_(0.9688708782196044921875), SC_(25.83640189819377370074430241522822555899), SC_(46.39556092643460168783413044868798538564), SC_(0.3576865543709762649319662277323093277561), SC_(0.6423134456290237350680337722676906722439) }, + { SC_(0.0450148619711399078369140625), SC_(14815.267578125), SC_(0.9688708782196044921875), SC_(14.07099423884325284155797173281234217818), SC_(BOOST_MATH_SMALL_CONSTANT(0.5085882135107557429438835316270112271216e-22328)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3614444046226585064269677541879272600456e-22329)) }, + { SC_(0.04518614709377288818359375), SC_(23.06797027587890625), SC_(0.1355634629726409912109375), SC_(18.75026000874948524362588152802072705895), SC_(0.008353637632983779823472639118059362970688), SC_(0.9995546772383899090161089691183323492346), SC_(0.0004453227616100909838910308816676507654412) }, + { SC_(0.04527465999126434326171875), SC_(0.013598117046058177947998046875), SC_(0.221111953258514404296875), SC_(20.8493594462655209724110517945580848197), SC_(74.6848226228261945497192248886865267748), SC_(0.2182397859562659966619080829557459720467), SC_(0.7817602140437340033380919170442540279533) }, + { SC_(0.04625232517719268798828125), SC_(43.923553466796875), SC_(0.12707412242889404296875), SC_(17.71130196100934836543988893586324943749), SC_(0.0003682241231851475227643177992042953399886), SC_(0.9999792100846878776631728586938955375579), SC_(0.2078991531212233682714130610446244208255e-4) }, + { SC_(0.0468132793903350830078125), SC_(0.00025698760873638093471527099609375), SC_(0.1355634629726409912109375), SC_(19.58067472138623149146094712368030565282), SC_(3892.944114011192267804353768770152496087), SC_(0.005004613588078808404357317268552392675046), SC_(0.994995386411921191595642682731447607325) }, + { SC_(0.04770947992801666259765625), SC_(0.00015248873387463390827178955078125), SC_(0.905801355838775634765625), SC_(23.15197505544387007118889541618334627984), SC_(6555.593650161884398802067838570577463821), SC_(0.003519208124828362954315511675485902971432), SC_(0.9964807918751716370456844883245140970286) }, + { SC_(0.0477449037134647369384765625), SC_(402512.65625), SC_(0.1355634629726409912109375), SC_(11.0230169005882531820742576201897796517), SC_(BOOST_MATH_SMALL_CONSTANT(0.3159717752762467343985344247714084898607e-25470)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2866472746307633958676851942917575263438e-25471)) }, + { SC_(0.0480652190744876861572265625), SC_(0.00045122022856958210468292236328125), SC_(0.12707412242889404296875), SC_(18.95862272936696329395560578384428525019), SC_(2217.982046632910544999553191852062947007), SC_(0.008475246120305827497705967588029104133415), SC_(0.9915247538796941725022940324119708958666) }, + { SC_(0.0483077578246593475341796875), SC_(389962.375), SC_(0.3082362115383148193359375), SC_(10.82924224047048652720135547852684809634), SC_(BOOST_MATH_SMALL_CONSTANT(0.2941052044145309049967634408530288794614e-62415)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2715842880634954105001337483314292410207e-62416)) }, + { SC_(0.04874597489833831787109375), SC_(2329.3564453125), SC_(0.81474220752716064453125), SC_(13.69417520929604126788814613120980079318), SC_(0.1281744195556668348251261203821222329825e-1708), SC_(1), SC_(0.9359776517877321012858673788534608515729e-1710) }, + { SC_(0.04926551878452301025390625), SC_(0.0299147777259349822998046875), SC_(0.905801355838775634765625), SC_(22.37091475699371165610887016365649486326), SC_(31.23253834199579451650658398141050636854), SC_(0.4173409260720823242228709969532622686722), SC_(0.5826590739279176757771290030467377313278) }, + { SC_(0.049306534230709075927734375), SC_(4.597743988037109375), SC_(0.81474220752716064453125), SC_(18.41612001008947971188429212832608416516), SC_(0.0001095078525055740520832753964766298238141), SC_(0.9999940537311180398689483683191900603588), SC_(0.594626888196013105163168080993964120443e-5) }, + { SC_(0.0493220984935760498046875), SC_(0.00032175212982110679149627685546875), SC_(0.9688708782196044921875), SC_(23.63373039587093996815976313738828491512), SC_(3104.544868471964579602419702569680899307), SC_(0.007555109035150539698573666668347833707795), SC_(0.9924448909648494603014263333316521662922) }, + { SC_(0.0493625514209270477294921875), SC_(0.2173553002648986876010894775390625e-4), SC_(0.3082362115383148193359375), SC_(19.44767790303436984325765780490289747006), SC_(46008.35189346145740678178976723999122557), SC_(0.0004225202613234079575884535722356063059018), SC_(0.9995774797386765920424115464277643936941) }, + { SC_(0.0499632172286510467529296875), SC_(0.00369685166515409946441650390625), SC_(0.913384497165679931640625), SC_(22.28013181892201261410756042288477568693), SC_(268.1500837137282408596227603218865830633), SC_(0.07671423504630933758613085717404390220721), SC_(0.9232857649536906624138691428259560977928) }, + { SC_(0.10046042501926422119140625), SC_(0.000209066798561252653598785400390625), SC_(0.1355634629726409912109375), SC_(8.252310036018254646221510609655865173472), SC_(4784.707689769652824754566087774246223879), SC_(0.001721756500440821898886461164041864193657), SC_(0.9982782434995591781011135388359581358063) }, + { SC_(0.102686129510402679443359375), SC_(0.19225277355872094631195068359375e-4), SC_(0.905801355838775634765625), SC_(11.85483541062642757513981710923389935021), SC_(52012.58051877421631706953337214645263474), SC_(0.0002278705252621800009748306170952863296859), SC_(0.9997721294747378199990251693829047136703) }, + { SC_(0.11430509388446807861328125), SC_(0.00042258042958565056324005126953125), SC_(0.9688708782196044921875), SC_(12.01329309340862835147249771396542240502), SC_(2362.974282807676113435814374883535855015), SC_(0.005058255131650830565829250827858602156065), SC_(0.9949417448683491694341707491721413978439) }, + { SC_(0.11778163909912109375), SC_(206355), SC_(0.632396042346954345703125), SC_(1.897249074578603579880390834557515140444), SC_(BOOST_MATH_SMALL_CONSTANT(0.7720868413993223061762249642195049797765e-89691)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4069507012782756923257716167260406359152e-89691)) }, + { SC_(0.1254365444183349609375), SC_(233.073516845703125), SC_(0.9688708782196044921875), SC_(3.789367389662553925323948561477155058364), SC_(0.2764197193237842253458928385156242796673e-353), SC_(1), SC_(0.7294613873488778123589525827176549048439e-354) }, + { SC_(0.13644538819789886474609375), SC_(0.0134486891329288482666015625), SC_(0.632396042346954345703125), SC_(7.721137222106381932723137407676225170978), SC_(73.74216216797055061410884528445009217529), SC_(0.09478056106142560478448745147440359632423), SC_(0.9052194389385743952155125485255964036758) }, + { SC_(0.13752801716327667236328125), SC_(43384.8671875), SC_(0.1355634629726409912109375), SC_(1.569318408615190130813475372041265160589), SC_(0.1930636483362086764296738057805909991263e-2748), SC_(1), SC_(0.1230238855775440545065233522181695629778e-2748) }, + { SC_(0.14231930673122406005859375), SC_(444.787506103515625), SC_(0.905801355838775634765625), SC_(2.760657048444986089263952960805643166214), SC_(0.113891648338950546373638826013652230207e-458), SC_(1), SC_(0.4125526870608685823643230535346118797679e-459) }, + { SC_(0.14387898147106170654296875), SC_(282.2655029296875), SC_(0.913384497165679931640625), SC_(2.886375857208684041526189982555401262593), SC_(0.50442835692798726440979965186144662879e-302), SC_(1), SC_(0.1747618404124966519382734754762036539193e-302) }, + { SC_(0.14768581092357635498046875), SC_(43.79425048828125), SC_(0.81474220752716064453125), SC_(3.623526026665682414439047242280013644154), SC_(0.231940011285713602857259877385433485333e-33), SC_(0.9999999999999999999999999999999999359905), SC_(0.640094784965961822139983865020879451094e-34) }, + { SC_(0.14775849878787994384765625), SC_(0.1444317400455474853515625), SC_(0.905801355838775634765625), SC_(8.325590106245668883338953744594313315262), SC_(4.974516500743730333812021534374216102687), SC_(0.625979200938919568234413720041948646786), SC_(0.374020799061080431765586279958051353214) }, + { SC_(0.1555496752262115478515625), SC_(4926.16162109375), SC_(0.9688708782196044921875), SC_(1.595231945629570077638907300201011887714), SC_(BOOST_MATH_SMALL_CONSTANT(0.2603423318770011435431033758868982902314e-7426)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1632002998625100364874964811622052002368e-7426)) }, + { SC_(0.15999889373779296875), SC_(346211.125), SC_(0.1355634629726409912109375), SC_(0.7550675518068729220256451449394596675709), SC_(BOOST_MATH_SMALL_CONSTANT(0.3091551967012326406929489089422086414851e-21908)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4094404480253796921531614155425924978421e-21908)) }, + { SC_(0.16108848154544830322265625), SC_(0.003161008469760417938232421875), SC_(0.3082362115383148193359375), SC_(5.400843106601757600521129512394784044383), SC_(316.9198894651245599485293307741302659594), SC_(0.01675611451832346282500337182117707686699), SC_(0.983243885481676537174996628178822923133) }, + { SC_(0.17034976184368133544921875), SC_(0.00294548436067998409271240234375), SC_(0.12707412242889404296875), SC_(4.212699542106957969935444584135593452544), SC_(340.9066466328349110274891723020101988374), SC_(0.01220650070416953653716545402022420581463), SC_(0.9877934992958304634628345459797757941854) }, + { SC_(0.17546479403972625732421875), SC_(0.045397706329822540283203125), SC_(0.221111953258514404296875), SC_(4.530100682241991525935733248800172574816), SC_(22.88470823467187025751407777819916982283), SC_(0.1652428326592164242163300383340972184638), SC_(0.8347571673407835757836699616659027815362) }, + { SC_(0.17669810354709625244140625), SC_(0.00317144836299121379852294921875), SC_(0.8350250720977783203125), SC_(7.048025451352586558010174583728968443586), SC_(313.6624804004123949336417680912565679026), SC_(0.02197628491350464695692964330727035845612), SC_(0.9780237150864953530430703566927296415439) }, + { SC_(0.17681133747100830078125), SC_(4087.143798828125), SC_(0.913384497165679931640625), SC_(1.202099211642655226877190345273283008415), SC_(0.1665453529724523109284743849683439358816e-4345), SC_(1), SC_(0.1385454306594793744983238528650532335039e-4345) }, + { SC_(0.1835739612579345703125), SC_(0.3351508080959320068359375), SC_(0.632396042346954345703125), SC_(5.494981111922799259837646030510157973708), SC_(2.335174821650200283511122928454257536868), SC_(0.7017716069180974316541039963689408680056), SC_(0.2982283930819025683458960036310591319944) }, + { SC_(0.1874706447124481201171875), SC_(406.947998046875), SC_(0.8350250720977783203125), SC_(1.593950370369185073634567181631377851823), SC_(0.9631902208098806186131874884536400924932e-321), SC_(1), SC_(0.6042786768742303756895366312326667059292e-321) }, + { SC_(0.18961600959300994873046875), SC_(0.4673106013797223567962646484375e-4), SC_(0.1355634629726409912109375), SC_(3.694836563621182491215455880578456693337), SC_(21400.34772910220757893165895074561807598), SC_(0.0001726233047932758551768571330726338834291), SC_(0.9998273766952067241448231428669273661166) }, + { SC_(0.19449223577976226806640625), SC_(0.23129458725452423095703125), SC_(0.8350250720977783203125), SC_(6.015660159425561670344251989489929530053), SC_(2.927582419949657985277532568191640439983), SC_(0.6726486624995270265101377241589246335436), SC_(0.3273513375004729734898622758410753664564) }, + { SC_(0.1971141397953033447265625), SC_(147358.625), SC_(0.8350250720977783203125), SC_(0.4464878109850020374312930918610764954226), SC_(BOOST_MATH_SMALL_CONSTANT(0.4777993900862828666875629809326430706783e-115325)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1070128631355476389128871358053279403756e-115324)) }, + { SC_(0.1971398293972015380859375), SC_(0.00232790899462997913360595703125), SC_(0.913384497165679931640625), SC_(7.15265893822281085848080465485692234334), SC_(427.2025689850565811808513235055773807162), SC_(0.01646730251739065592434230421607959606613), SC_(0.9835326974826093440756576957839204039339) }, + { SC_(0.2019160687923431396484375), SC_(0.4740857184515334665775299072265625e-4), SC_(0.12707412242889404296875), SC_(3.340312551347237514184812055786484456526), SC_(21094.55348210925371156573532264319825814), SC_(0.0001583244556948426274976933012534521009447), SC_(0.9998416755443051573725023066987465478991) }, + { SC_(0.2025763988494873046875), SC_(2.372247219085693359375), SC_(0.913384497165679931640625), SC_(3.937203199022278252105354314395874943421), SC_(0.0013379829260142046180656790494772087335), SC_(0.9996602846424085529684782517403873628343), SC_(0.0003397153575914470315217482596126371656571) }, + { SC_(0.20485810935497283935546875), SC_(480505.75), SC_(0.3082362115383148193359375), SC_(0.306848523885785014481646694440861253385), SC_(BOOST_MATH_SMALL_CONSTANT(0.3460117627697644993182072834296248764001e-76906)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1127630527232247021191770437558198209557e-76905)) }, + { SC_(0.2059116065502166748046875), SC_(24.2244358062744140625), SC_(0.3082362115383148193359375), SC_(2.317098126687310653694466350546003052727), SC_(0.1309204045483426382329857359196673939813e-4), SC_(0.9999943498437411983238274705951394985482), SC_(0.5650156258801676172529404860501451803968e-5) }, + { SC_(0.20762462913990020751953125), SC_(0.0442828945815563201904296875), SC_(0.12707412242889404296875), SC_(3.208757799440129059173937558212400209151), SC_(23.84071978676539155823574004573949164694), SC_(0.1186254998535168040048487450476216883436), SC_(0.8813745001464831959951512549523783116564) }, + { SC_(0.21499927341938018798828125), SC_(0.0337234772741794586181640625), SC_(0.3082362115383148193359375), SC_(3.842065222121155731997225444566201482496), SC_(30.11620543051094229321847610375530049551), SC_(0.1131407797947849299248107466223786193189), SC_(0.8868592202052150700751892533776213806811) }, + { SC_(0.22722963988780975341796875), SC_(39.870731353759765625), SC_(0.632396042346954345703125), SC_(1.739737749891743852937605228835489594363), SC_(0.1658976312618398321080302337113242415999e-18), SC_(0.9999999999999999999046421615716719923605), SC_(0.9535783842832800763946160877438449731154e-19) }, + { SC_(0.22898872196674346923828125), SC_(0.000221865411731414496898651123046875), SC_(0.8350250720977783203125), SC_(5.706591552815756273351959094649631661446), SC_(4505.572905024566783440534660711790531952), SC_(0.001264960762716039444330752487957723028592), SC_(0.9987350392372839605556692475120422769714) }, + { SC_(0.23644983768463134765625), SC_(0.00389209692366421222686767578125), SC_(0.632396042346954345703125), SC_(4.552530094026749191113284955376849779478), SC_(256.2697676925452286102734645995453186659), SC_(0.01745452797809501155414428231193259547456), SC_(0.9825454720219049884458557176880674045254) }, + { SC_(0.2377849519252777099609375), SC_(0.19049095499212853610515594482421875e-4), SC_(0.632396042346954345703125), SC_(4.53164976289766096174798459680844480505), SC_(52495.26961808240492975835642795738264917), SC_(0.863174650848282912012987122430403011656e-4), SC_(0.9999136825349151717087987012877569596988) }, + { SC_(0.2390850484371185302734375), SC_(394272.125), SC_(0.12707412242889404296875), SC_(0.1745849851757016911719459583019216641561), SC_(BOOST_MATH_SMALL_CONSTANT(0.1280755209981353127528079468932698099317e-23275)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.733599861805072047806121153366488358174e-23275)) }, + { SC_(0.24008722603321075439453125), SC_(1.274954319000244140625), SC_(0.3082362115383148193359375), SC_(3.084743633676409259964114272723441763204), SC_(0.7624524502911317466523552818168956347006), SC_(0.8018160671694100742859808331924415867861), SC_(0.1981839328305899257140191668075584132139) }, + { SC_(0.2436912953853607177734375), SC_(193457.484375), SC_(0.9688708782196044921875), SC_(0.1917873480216332357378284754442872026183), SC_(BOOST_MATH_SMALL_CONSTANT(0.3774012622666596906907009409478240642198e-291513)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1967811047807437070384744017057333226547e-291512)) }, + { SC_(0.2463264763355255126953125), SC_(1483.4622802734375), SC_(0.221111953258514404296875), SC_(0.6095848838071273412043230795119430431948), SC_(0.2134084169223695609854362659824172215945e-163), SC_(1), SC_(0.3500881051864993172066533730543461613597e-163) }, + { SC_(0.254708468914031982421875), SC_(0.493781044497154653072357177734375e-4), SC_(0.9688708782196044921875), SC_(7.016415499405410658790600405881980952071), SC_(20248.4454227091885406449218658109898752), SC_(0.0003463962241616282470308411565585885253707), SC_(0.9996536037758383717529691588434414114746) }, + { SC_(0.2573825418949127197265625), SC_(44778.4140625), SC_(0.8350250720977783203125), SC_(0.2233180923540966297674867063805482002216), SC_(BOOST_MATH_SMALL_CONSTANT(0.4206110747125570277793308692053653655775e-35047)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1883461703790795356476903325019216889077e-35046)) }, + { SC_(0.2618319988250732421875), SC_(4353.03955078125), SC_(0.12707412242889404296875), SC_(0.3849666563346155953776492505211989550318), SC_(0.1242248199936297604165680007483887186758e-259), SC_(1), SC_(0.3226898172855072286657292908581418011501e-259) }, + { SC_(0.2664634287357330322265625), SC_(2.7337188720703125), SC_(0.81474220752716064453125), SC_(2.685258724408317040116055739832085019844), SC_(0.004059762694853894582711241957150810346059), SC_(0.998490412082346218227504068762203917039), SC_(0.001509587917653781772495931237796082961007) }, + { SC_(0.269739627838134765625), SC_(0.0001012004868243820965290069580078125), SC_(0.3082362115383148193359375), SC_(2.914655976096051160435051331811495380652), SC_(9881.794762389233106512649854575334706675), SC_(0.0002948651146669780977537873667881976598873), SC_(0.9997051348853330219022462126332118023401) }, + { SC_(0.270291507244110107421875), SC_(0.04600088298320770263671875), SC_(0.913384497165679931640625), SC_(5.535625010893188303466524796023891090522), SC_(19.48123447500466816913415535740350134829), SC_(0.2212757766023209693546547405899639082743), SC_(0.7787242233976790306453452594100360917257) }, + { SC_(0.276960909366607666015625), SC_(225226.28125), SC_(0.905801355838775634765625), SC_(0.1071421706233882854378819962409694800002), SC_(BOOST_MATH_SMALL_CONSTANT(0.3720988495311030205840463975177304151268e-231077)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3472944848569987764982518079554275520801e-231076)) }, + { SC_(0.279349148273468017578125), SC_(3217.235107421875), SC_(0.1355634629726409912109375), SC_(0.337829357005361094121756192427915189105), SC_(0.3740045494430662948332189772006883872255e-206), SC_(1), SC_(0.1107081257704703052228323192318580079036e-205) }, + { SC_(0.280055105686187744140625), SC_(0.489566028118133544921875), SC_(0.9688708782196044921875), SC_(4.472960873464681839529880962499036608606), SC_(0.3764727172031023899329394807885403670498), SC_(0.9223676930172662165205455538273957814328), SC_(0.07763230698273378347945444617260421856722) }, + { SC_(0.28349018096923828125), SC_(3.132917881011962890625), SC_(0.12707412242889404296875), SC_(1.852567089757968504381052032680922751599), SC_(0.521631353273639512227923011132635751048), SC_(0.7802915949150527830116740656433407989041), SC_(0.2197084050849472169883259343566592010959) }, + { SC_(0.284366548061370849609375), SC_(0.0002785695833154022693634033203125), SC_(0.632396042346954345703125), SC_(3.809895588278766434269061035796907648468), SC_(3589.083623868482170377362674424433691414), SC_(0.001060397578622039381085502303428714769925), SC_(0.9989396024213779606189144976965712852301) }, + { SC_(0.2849796712398529052734375), SC_(0.00028760623536072671413421630859375), SC_(0.221111953258514404296875), SC_(2.410907419249654348893363288596069260864), SC_(3477.68303903531433253507573406687628692), SC_(0.0006927707861754217420005022817828058786344), SC_(0.9993072292138245782579994977182171941214) }, + { SC_(0.28854286670684814453125), SC_(0.00019903402426280081272125244140625), SC_(0.913384497165679931640625), SC_(5.452222757212524014274110277597719693085), SC_(5021.88490729987368580974885081972739547), SC_(0.001084515045672024219473733057218408210046), SC_(0.99891548495432797578052626694278159179) }, + { SC_(0.2893944084644317626953125), SC_(0.0018625170923769474029541015625), SC_(0.221111953258514404296875), SC_(2.359684838555847552855883355484859523753), SC_(537.6057681887136579927596914914783486131), SC_(0.004370066316884680407864702286930947053297), SC_(0.9956299336831153195921352977130690529467) }, + { SC_(0.291785299777984619140625), SC_(38.487705230712890625), SC_(0.913384497165679931640625), SC_(1.064563216983953577984974879133551224242), SC_(0.3566983853901848960591959182819036301658e-42), SC_(1), SC_(0.335065480094980116296341064211507092312e-42) }, + { SC_(0.293941318988800048828125), SC_(43703.57421875), SC_(0.81474220752716064453125), SC_(0.1321828888145803590804606716816193088251), SC_(BOOST_MATH_SMALL_CONSTANT(0.4340711794287861382533364616958556756036e-32005)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3283868156624113372810977808405361315335e-32004)) }, + { SC_(0.308021008968353271484375), SC_(34557.2734375), SC_(0.9688708782196044921875), SC_(0.1163863903955997243376526669904137951038), SC_(BOOST_MATH_SMALL_CONSTANT(0.2669396375425675399509007637464316628519e-52076)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2293564020975598998320985646863906582949e-52075)) }, + { SC_(0.3089981377124786376953125), SC_(432.827178955078125), SC_(0.632396042346954345703125), SC_(0.4445432103700716281916733518106100388495), SC_(0.2429571357222311862579075445645067748202e-190), SC_(1), SC_(0.5465321031896430517328038990414424129403e-190) }, + { SC_(0.310161769390106201171875), SC_(24687.779296875), SC_(0.221111953258514404296875), SC_(0.1254101149018303501185970214060483310229), SC_(0.65963006765331415770328699169886780425e-2683), SC_(1), SC_(0.5259783616095601808094442123983332365233e-2682) }, + { SC_(0.3121376931667327880859375), SC_(12025.0380859375), SC_(0.3082362115383148193359375), SC_(0.152852811831666880331296851749833541672), SC_(0.5730315156314877826157933739045864554133e-1928), SC_(1), SC_(0.3748910528793893482878921750841203613866e-1927) }, + { SC_(0.31629574298858642578125), SC_(20.7625732421875), SC_(0.1355634629726409912109375), SC_(1.082099366658232990430534484429843123385), SC_(0.00786505660129495803292747614316984755223), SC_(0.9927841162211748313922185635959633515603), SC_(0.007215883778825168607781436404036648439728) }, + { SC_(0.3175543844699859619140625), SC_(241.035797119140625), SC_(0.221111953258514404296875), SC_(0.4940177692306408909226479665789455678924), SC_(0.7990090143787921274483214524613937643683e-28), SC_(0.9999999999999999999999999998382631022315), SC_(0.1617368977685012592096455157994299357983e-27) }, + { SC_(0.3178864419460296630859375), SC_(403.9595947265625), SC_(0.12707412242889404296875), SC_(0.4179356240859554717243168635510952728132), SC_(0.1435894358068937495908945092539077631277e-25), SC_(0.9999999999999999999999999656431690596057), SC_(0.3435683094039434491627650664387086926279e-25) }, + { SC_(0.31863725185394287109375), SC_(0.049230270087718963623046875), SC_(0.905801355838775634765625), SC_(4.835956404824482039448613310634303665217), SC_(18.13934952405892063945685223408767166096), SC_(0.210484962411097216872077065087854065853), SC_(0.789515037588902783127922934912145934147) }, + { SC_(0.330483734607696533203125), SC_(0.0469950400292873382568359375), SC_(0.81474220752716064453125), SC_(4.041757710054468269024263067242651231763), SC_(19.77709858403868207245622664736302187405), SC_(0.1696873124448374841824015206249455353811), SC_(0.8303126875551625158175984793750544646189) }, + { SC_(0.3328996598720550537109375), SC_(49.7097015380859375), SC_(0.12707412242889404296875), SC_(0.7323668753990232209369905213683887988684), SC_(0.8576132716239690748322478888864445900834e-4), SC_(0.9998829121190064645049870036907901811314), SC_(0.0001170878809935354950129963092098188685626) }, + { SC_(0.334436833858489990234375), SC_(365052.03125), SC_(0.221111953258514404296875), SC_(0.03683055124744016650145146533269472360119), SC_(BOOST_MATH_SMALL_CONSTANT(0.4134049894941059365873825201708076187273e-39622)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1122451268015812878040846843117965816022e-39620)) }, + { SC_(0.340868175029754638671875), SC_(0.3847523112199269235134124755859375e-4), SC_(0.913384497165679931640625), SC_(4.867158987608664583707798913433802847757), SC_(25988.36014028287055499976803342113923811), SC_(0.0001872471983402101556651165326821452152247), SC_(0.9998127528016597898443348834673178547848) }, + { SC_(0.342921555042266845703125), SC_(0.14970906078815460205078125), SC_(0.913384497165679931640625), SC_(4.34661506955168974465709711878525557199), SC_(4.66698548364575957976986790627158113517), SC_(0.4822284994657089119420803591920631570587), SC_(0.5177715005342910880579196408079368429413) }, + { SC_(0.3429556787014007568359375), SC_(0.00213477574288845062255859375), SC_(0.81474220752716064453125), SC_(4.009626419111881299546237742750132966845), SC_(466.8817946854137311266127224461611608934), SC_(0.008514970202062459796618729698481092001944), SC_(0.9914850297979375402033812703015189079981) }, + { SC_(0.345384299755096435546875), SC_(2.248920440673828125), SC_(0.9688708782196044921875), SC_(2.053234119300960105030679833815673726525), SC_(0.0001842819797558331634028937502098036384439), SC_(0.9999102560006081095830131747017360604843), SC_(0.8974399939189041698682529826393951565586e-4) }, + { SC_(0.351158559322357177734375), SC_(2964.95703125), SC_(0.632396042346954345703125), SC_(0.1531718481401497943191795776961586069083), SC_(0.106649018926027166778219468481424606114e-1291), SC_(1), SC_(0.6962703670484214439055637258878850292219e-1291) }, + { SC_(0.35431468486785888671875), SC_(0.411117613315582275390625), SC_(0.221111953258514404296875), SC_(1.716393376579801302703795521785201858791), SC_(2.7817646696244534870802926701437333703), SC_(0.3815769385933804926437546211109883377736), SC_(0.6184230614066195073562453788890116622264) }, + { SC_(0.355726778507232666015625), SC_(49.3067169189453125), SC_(0.9688708782196044921875), SC_(0.6271299388017466130642484925768782079622), SC_(0.1044165188137607422884854107540884721121e-75), SC_(1), SC_(0.1664990177526347318580512923218074563927e-75) }, + { SC_(0.357777118682861328125), SC_(0.047988586127758026123046875), SC_(0.9688708782196044921875), SC_(5.460720825092680690461878608377271284188), SC_(17.65850527756403161936884713022897207675), SC_(0.236198253386395571568449888197008547221), SC_(0.763801746613604428431550111802991452779) }, + { SC_(0.358220756053924560546875), SC_(48.59809112548828125), SC_(0.905801355838775634765625), SC_(0.6198063131688178179770467940498847966326), SC_(0.3026229090997884765694295665412900153594e-51), SC_(1), SC_(0.4882539959178545868731792708738313096962e-51) }, + { SC_(0.3589245975017547607421875), SC_(177.3041534423828125), SC_(0.1355634629726409912109375), SC_(0.3869783267224492553863112446868131674137), SC_(0.1204020251317165712119951359355068754193e-12), SC_(0.999999999999688866231472351889087862646), SC_(0.3111337685276481109121373540352782963312e-12) }, + { SC_(0.35904705524444580078125), SC_(0.473808765411376953125), SC_(0.12707412242889404296875), SC_(1.352768414521322252947254300403898245783), SC_(2.751557931035401754468082701102017150797), SC_(0.3295957242741691390776525571023137943215), SC_(0.6704042757258308609223474428976862056785) }, + { SC_(0.3647778928279876708984375), SC_(3.6492011547088623046875), SC_(0.1355634629726409912109375), SC_(1.203574965158435233461977332268630128914), SC_(0.3670868422164121606267998575347684448692), SC_(0.7662852432695558674737034751895626930234), SC_(0.2337147567304441325262965248104373069766) }, + { SC_(0.364803850650787353515625), SC_(1.8238222599029541015625), SC_(0.632396042346954345703125), SC_(1.98332037500285904167492684245866890195), SC_(0.1057199556537739191447240811398613600922), SC_(0.9493930518705956581716798098610616676469), SC_(0.05060694812940434182832019013893833235313) }, + { SC_(0.367133080959320068359375), SC_(0.2215300992247648537158966064453125e-4), SC_(0.221111953258514404296875), SC_(1.672202901005245368409465681456105196346), SC_(45141.16279023901003340872215218221080163), SC_(0.3704248750126916634066649181251461079228e-4), SC_(0.9999629575124987308336593335081874853892) }, + { SC_(0.3685724437236785888671875), SC_(13019.9375), SC_(0.905801355838775634765625), SC_(0.07346192894752838396872414217069367165819), SC_(BOOST_MATH_SMALL_CONSTANT(0.1091462836658307512933433692191812119613e-13361)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1485753031938361078192174724676668699441e-13360)) }, + { SC_(0.3701328337192535400390625), SC_(0.30404355129576288163661956787109375e-4), SC_(0.8350250720977783203125), SC_(3.907212891949879411112160145684479307266), SC_(32888.33472482277201881408367831161659839), SC_(0.0001187882814235843380579530114317406305126), SC_(0.9998812117185764156619420469885682593695) }, + { SC_(0.37160670757293701171875), SC_(0.10332970321178436279296875), SC_(0.1355634629726409912109375), SC_(1.326235322335575399353327226388802714303), SC_(10.47079586999725008986459054878780116643), SC_(0.1124211083884840158821807304424753673166), SC_(0.8875788916115159841178192695575246326834) }, + { SC_(0.373345315456390380859375), SC_(0.0465487875044345855712890625), SC_(0.8350250720977783203125), SC_(3.781022238997846088967810182963259723552), SC_(19.85213028953340746912429272502061562773), SC_(0.1599880606039835847379289976786339079274), SC_(0.8400119393960164152620710023213660920726) }, + { SC_(0.375118434429168701171875), SC_(448846.15625), SC_(0.913384497165679931640625), SC_(0.01796721578967246096941631594289269772469), SC_(BOOST_MATH_SMALL_CONSTANT(0.1799138068499384979536172441972070918912e-476861)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1001344943791195449739236764586364500037e-476859)) }, + { SC_(0.37850654125213623046875), SC_(43846.46875), SC_(0.12707412242889404296875), SC_(0.04108227627338822067418734977442707267622), SC_(0.9568951816810034520862409628026188555004e-2592), SC_(1), SC_(0.2329216558773909572112587849537516074883e-2590) }, + { SC_(0.3837126791477203369140625), SC_(0.3599123060703277587890625), SC_(0.81474220752716064453125), SC_(3.075247592841129835761442448815551460631), SC_(1.564718451797673059591945445086361195995), SC_(0.6627737279229425454390476573983761733012), SC_(0.3372262720770574545609523426016238266988) }, + { SC_(0.3884186446666717529296875), SC_(178.5201263427734375), SC_(0.3082362115383148193359375), SC_(0.3053396123511452758493138162878906281623), SC_(0.3068204932133039376108445126541750560395e-30), SC_(0.9999999999999999999999999999989951500532), SC_(0.1004849946755207201449902212960864401949e-29) }, + { SC_(0.3887031972408294677734375), SC_(0.00263000768609344959259033203125), SC_(0.1355634629726409912109375), SC_(1.231835472333350871108555599550915098284), SC_(381.0613905476908828408619275278063196499), SC_(0.003222226784287379052086614849141003662113), SC_(0.9967777732157126209479133851508589963379) }, + { SC_(0.3953707516193389892578125), SC_(0.0040236986242234706878662109375), SC_(0.905801355838775634765625), SC_(4.30748590147399691027261636167922996641), SC_(246.2348442100958977461491752998931352643), SC_(0.01719264724470238250085784376930689493694), SC_(0.9828073527552976174991421562306931050631) }, + { SC_(0.3965031802654266357421875), SC_(11295.04296875), SC_(0.913384497165679931640625), SC_(0.05532529105048326762731390349286115129294), SC_(BOOST_MATH_SMALL_CONSTANT(0.1169114037234189913010919921095716564677e-12003)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2113163826228036944645503113506416485004e-12002)) }, + { SC_(0.401973307132720947265625), SC_(467754.28125), SC_(0.81474220752716064453125), SC_(0.01160401103786041951825925851136580471694), SC_(BOOST_MATH_SMALL_CONSTANT(0.5001299126500188022188279304610580232569e-342506)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4309974465021141298745525936903956016857e-342504)) }, + { SC_(0.4054018557071685791015625), SC_(1848.73486328125), SC_(0.3082362115383148193359375), SC_(0.1036718367061499887847634293582280399546), SC_(0.1449344911630642718545284308256712096656e-298), SC_(1), SC_(0.1398012186992212443204102412298732809805e-297) }, + { SC_(0.4062000215053558349609375), SC_(0.0105956681072711944580078125), SC_(0.1355634629726409912109375), SC_(1.139345600873763402654598734204640178761), SC_(95.16973264199774880726676400337473448765), SC_(0.01183009558040385558933506736549787048401), SC_(0.988169904419596144410664932634502129516) }, + { SC_(0.4080638885498046875), SC_(0.0004883776418864727020263671875), SC_(0.81474220752716064453125), SC_(3.492855214092404977589960204283500634297), SC_(2046.029050123807241396902523730452797889), SC_(0.00170422926683310882251145890570357012742), SC_(0.9982957707331668911774885410942964298726) }, + { SC_(0.4081141948699951171875), SC_(3.8330304622650146484375), SC_(0.221111953258514404296875), SC_(1.1104961557306195502231978560103480678), SC_(0.1857080010874114019713792174877101659101), SC_(0.8567293584806160869401272877196158744144), SC_(0.1432706415193839130598727122803841255856) }, + { SC_(0.4087921679019927978515625), SC_(2638.619140625), SC_(0.81474220752716064453125), SC_(0.08664048317667893436136356542454754521263), SC_(0.3734427620392960277310699953488718481801e-1935), SC_(1), SC_(0.4310257149394751039794604388812509803005e-1934) }, + { SC_(0.412207901477813720703125), SC_(0.2795807449729181826114654541015625e-4), SC_(0.81474220752716064453125), SC_(3.465760567134203303723500757151555616934), SC_(35766.27421441400004448970935886567398139), SC_(0.9689085158456009219341769456126737115064e-4), SC_(0.9999031091484154399078065823054387326288) }, + { SC_(0.4138956964015960693359375), SC_(0.0001860436168499290943145751953125), SC_(0.905801355838775634765625), SC_(4.190404422274049287039209092176814894544), SC_(5372.77915881606336085832868763513563296), SC_(0.0007793245568885707844367986988937403608349), SC_(0.9992206754431114292155632013011062596392) }, + { SC_(0.433166682720184326171875), SC_(1.27705013751983642578125), SC_(0.905801355838775634765625), SC_(1.984679081190707733574624066435764139873), SC_(0.03954575294540647145094585103870723513553), SC_(0.9804637546785737582005006621268432097211), SC_(0.01953624532142624179949933787315679027891) }, + { SC_(0.436771690845489501953125), SC_(1.04477035999298095703125), SC_(0.8350250720977783203125), SC_(2.081714265177482078767294301059126918754), SC_(0.1532535623587647546743803544317434770187), SC_(0.9314291863754896579986797985018804703014), SC_(0.06857081362451034200132020149811952969859) }, + { SC_(0.4377568662166595458984375), SC_(0.4160407115705311298370361328125e-4), SC_(0.3082362115383148193359375), SC_(1.522719063698491191810023886243372284363), SC_(24036.31702533616631466385339866738944195), SC_(0.6334675161703087587041918595495668507129e-4), SC_(0.9999366532483829691241295808140450433149) }, + { SC_(0.444455921649932861328125), SC_(49022.46484375), SC_(0.632396042346954345703125), SC_(0.0163983440631684185036000697841305621376), SC_(BOOST_MATH_SMALL_CONSTANT(0.1928572246899730380461347400325118333019e-21310)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1176077437740442085175403878859448687866e-21308)) }, + { SC_(0.447976410388946533203125), SC_(44.28264617919921875), SC_(0.221111953258514404296875), SC_(0.3628789143928556564497309259291339420156), SC_(0.781030226862406623923165710779878019526e-6), SC_(0.9999978476882649722212930554802620074136), SC_(0.2152311735027778706944519737992586411172e-5) }, + { SC_(0.466396510601043701171875), SC_(0.000362085294909775257110595703125), SC_(0.12707412242889404296875), SC_(0.8550289748994692887932915188394847007569), SC_(2762.487191450379985253322065514292380138), SC_(0.0003094184167923580573652410584667572272426), SC_(0.9996905815832076419426347589415332427728) }, + { SC_(0.4669697284698486328125), SC_(0.004207052290439605712890625), SC_(0.9688708782196044921875), SC_(4.983939876459954438522038296768868926815), SC_(234.2681889463908380212481891486849812964), SC_(0.02083132928004251077110019900857162650321), SC_(0.9791686707199574892288998009914283734968) }, + { SC_(0.4731414318084716796875), SC_(4038.0458984375), SC_(0.8350250720977783203125), SC_(0.03681800968424248843137587296847813644791), SC_(0.2151902007932805662941584901999999190826e-3163), SC_(1), SC_(0.5844699445700305886575723374423408588147e-3162) }, + { SC_(0.4759317934513092041015625), SC_(18.6855449676513671875), SC_(0.8350250720977783203125), SC_(0.4650360995194773224517039299033264077037), SC_(0.1394117220024755848255733958883901110584e-15), SC_(0.9999999999999997002131186234145306897716), SC_(0.2997868813765854693102283740645151188783e-15) }, + { SC_(0.4780696332454681396484375), SC_(0.110383547842502593994140625), SC_(0.3082362115383148193359375), SC_(1.320819025065765173251106611906988075106), SC_(9.164469076523780166952316245131402199336), SC_(0.125968787149065753818174278586794208014), SC_(0.874031212850934246181825721413205791986) }, + { SC_(0.489096343517303466796875), SC_(2428.257080078125), SC_(0.905801355838775634765625), SC_(0.04002110223900413723281365417342574372867), SC_(0.2255848328346718286367403126341691915741e-2494), SC_(1), SC_(0.5636647173970617649062126080503579749532e-2493) }, + { SC_(0.497481822967529296875), SC_(481.03790283203125), SC_(0.81474220752716064453125), SC_(0.08250998527360665655591448319605255300839), SC_(0.1365109765989683046247416612067038022512e-354), SC_(1), SC_(0.1654478256738163756230894760558582890084e-353) }, + { SC_(1.00208950042724609375), SC_(1.134289264678955078125), SC_(0.913384497165679931640625), SC_(0.8246440603155744403297434208324277495865), SC_(0.05497424159943482845087112626319305832947), SC_(0.9375021626087691779855871130139941988826), SC_(0.06249783739123082201441288698600580111744) }, + { SC_(1.06793177127838134765625), SC_(2593.565185546875), SC_(0.632396042346954345703125), SC_(0.00021814818706820204122140431640517093719), SC_(0.2279040265365697422812937326452021450552e-1130), SC_(1), SC_(0.1044721157665718426627598635375750226813e-1126) }, + { SC_(1.078310489654541015625), SC_(0.1611862899153493344783782958984375e-4), SC_(0.81474220752716064453125), SC_(1.579238934608002020930576188419414139161), SC_(62038.31480199683602703014226388490958657), SC_(0.2545521650256338689760697709112582973268e-4), SC_(0.9999745447834974366131023930229088741703) }, + { SC_(1.127964019775390625), SC_(28082.556640625), SC_(0.221111953258514404296875), SC_(0.9031444614627416618001308756504366467831e-5), SC_(0.6446722352112902992756278548084437136712e-3052), SC_(1), SC_(0.7138085463837898091420140568036635292841e-3047) }, + { SC_(1.17060959339141845703125), SC_(374486.4375), SC_(0.221111953258514404296875), SC_(0.2770348746813317152148567841195551130469e-6), SC_(BOOST_MATH_SMALL_CONSTANT(0.1544222082236331533651701311405865986201e-40646)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5574107173375275245760170786317275232285e-40640)) }, + { SC_(1.1981303691864013671875), SC_(18840.236328125), SC_(0.81474220752716064453125), SC_(0.6934970851989473984828582349279761548277e-5), SC_(BOOST_MATH_SMALL_CONSTANT(0.2774673653527033277856718432732877361682e-13799)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4000988198430635197865793159272447313039e-13794)) }, + { SC_(1.2198965549468994140625), SC_(0.1385947167873382568359375), SC_(0.9688708782196044921875), SC_(2.476100393862268102451316018157336805629), SC_(4.457073809447786720692093046710205236916), SC_(0.3571380613341752670809919250585172665935), SC_(0.6428619386658247329190080749414827334065) }, + { SC_(1.3339312076568603515625), SC_(327.5166015625), SC_(0.632396042346954345703125), SC_(0.000393880060303142468976379431401696514736), SC_(0.1184022713919227905295431760253988365597e-144), SC_(1), SC_(0.3006048879468452467763121228666591540639e-141) }, + { SC_(1.359802722930908203125), SC_(0.39465808868408203125), SC_(0.1355634629726409912109375), SC_(0.05106481064957347464764855792811332922631), SC_(2.124848787490442060819126279665208636722), SC_(0.02346821615215971447624268273783067701828), SC_(0.9765317838478402855237573172621693229817) }, + { SC_(1.44682300090789794921875), SC_(0.17606438696384429931640625), SC_(0.221111953258514404296875), SC_(0.0876907555927175240997186365838154717148), SC_(5.103276100986290681799294432218717156109), SC_(0.01689295231804045371190720225591093428374), SC_(0.9831070476819595462880927977440890657163) }, + { SC_(1.4834382534027099609375), SC_(1159.6116943359375), SC_(0.81474220752716064453125), SC_(0.2520493995468790742310543925834688118861e-4), SC_(0.6277129730492132650095565877062169428781e-852), SC_(1), SC_(0.2490436296129576444460388465665272717916e-847) }, + { SC_(1.49233496189117431640625), SC_(47973.6953125), SC_(0.913384497165679931640625), SC_(0.9158142701219620515735116806823620402928e-7), SC_(BOOST_MATH_SMALL_CONSTANT(0.6856885307691086571645551101168057228575e-50972)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7487200769188639313615991098103951104891e-50965)) }, + { SC_(1.54517018795013427734375), SC_(0.2047308981418609619140625), SC_(0.3082362115383148193359375), SC_(0.1246691455112791133529726738608095355786), SC_(4.205316764985243567300214824811226800357), SC_(0.02879204415170561384327527121287883723012), SC_(0.9712079558482943861567247287871211627699) }, + { SC_(1.5860595703125), SC_(268341.4375), SC_(0.12707412242889404296875), SC_(0.2188529267992022850133716156935067320774e-8), SC_(BOOST_MATH_SMALL_CONSTANT(0.6735609334108315179849663945793421049789e-15844)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3077687574307946771709117498857270187347e-15835)) }, + { SC_(1.5904328823089599609375), SC_(0.175132334232330322265625), SC_(0.913384497165679931640625), SC_(1.417983846922945074086281300478897686333), SC_(3.691617709165716915935800312844163731536), SC_(0.2775135852292158976635665611127901281819), SC_(0.7224864147707841023364334388872098718181) }, + { SC_(1.61900937557220458984375), SC_(0.0355711281299591064453125), SC_(0.3082362115383148193359375), SC_(0.1136541817329229254269843881829401312168), SC_(27.30222816046602658712459577564402451514), SC_(0.004145559873445497452627965327295647615897), SC_(0.9958544401265545025473720346727043523841) }, + { SC_(1.6690142154693603515625), SC_(0.0045049847103655338287353515625), SC_(0.905801355838775634765625), SC_(1.654671420443895204691845091716983754591), SC_(219.5639400669292015831138254049874771508), SC_(0.007479802035274694512028581353642119369761), SC_(0.9925201979647253054879714186463578806302) }, + { SC_(1.7562887668609619140625), SC_(374293.53125), SC_(0.1355634629726409912109375), SC_(0.1499189513271098776623048463642459294765e-9), SC_(BOOST_MATH_SMALL_CONSTANT(0.2424349442341666429067734444899906899063e-23686)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1617106723920413906032975601315111209707e-23676)) }, + { SC_(1.75884163379669189453125), SC_(0.369454860687255859375), SC_(0.8350250720977783203125), SC_(0.7459991194649348508593671759038903077423), SC_(1.343398870365095255155485654427562685422), SC_(0.3570402207219606539986727822574040037171), SC_(0.6429597792780393460013272177425959962829) }, + { SC_(1.77004158496856689453125), SC_(49033.26953125), SC_(0.905801355838775634765625), SC_(0.4604637724742806794236788169427640062807e-8), SC_(BOOST_MATH_SMALL_CONSTANT(0.2144426942604382168761343777126695639019e-50310)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4657102405866597634441661634012437599171e-50302)) }, + { SC_(1.788215160369873046875), SC_(0.12965712812729179859161376953125e-4), SC_(0.9688708782196044921875), SC_(2.640634438889896708617514645592185372095), SC_(77123.00209217535250302348088163455537592), SC_(0.3423808665361923747204066878435148080854e-4), SC_(0.9999657619133463807625279593312156485192) }, + { SC_(1.799451351165771484375), SC_(0.04982374608516693115234375), SC_(0.632396042346954345703125), SC_(0.4255395277792709792589480096041978492367), SC_(18.82260408866470434474041837153588423404), SC_(0.02210808149912837478136406335251040762786), SC_(0.9778919185008716252186359366474895923721) }, + { SC_(1.82197666168212890625), SC_(39458.8984375), SC_(0.9688708782196044921875), SC_(0.3961398447554578817125063708808197814433e-8), SC_(BOOST_MATH_SMALL_CONSTANT(0.2612564425789845768175531564246729143871e-59462)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6595055913657498178517734953584139382822e-59454)) }, + { SC_(1.837620258331298828125), SC_(3435.755859375), SC_(0.9688708782196044921875), SC_(0.2992581288998905430300739013792708491349e-6), SC_(BOOST_MATH_SMALL_CONSTANT(0.2196425106883746221137085162739396644011e-5180)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7339567065255915886696628555434224696579e-5174)) }, + { SC_(1.86407566070556640625), SC_(0.000142144519486464560031890869140625), SC_(0.9688708782196044921875), SC_(2.587406529835929906908103338386687729829), SC_(7031.597939263406660826488911159064663572), SC_(0.0003678331466462302876247043330802756681583), SC_(0.9996321668533537697123752956669197243318) }, + { SC_(1.911371707916259765625), SC_(16.85260009765625), SC_(0.81474220752716064453125), SC_(0.00415327177405512137666547731638393421375), SC_(0.2277069326301129117415576625655239073555e-13), SC_(0.9999999999945174083224864733449004647348), SC_(0.5482591677513526655099535265191131570159e-11) }, + { SC_(1.98693811893463134765625), SC_(298.79779052734375), SC_(0.221111953258514404296875), SC_(0.1196137731365210334436030960431701756123e-4), SC_(0.2856165679605071527615820193479064068975e-35), SC_(0.9999999999999999999999999999997612176587), SC_(0.2387823412564028331398841789617579979614e-30) }, + { SC_(2.081081867218017578125), SC_(0.171459905686788260936737060546875e-4), SC_(0.913384497165679931640625), SC_(1.488702561868755884237721327915942320219), SC_(58320.13323944254348270913531881604926284), SC_(0.2552574006513632598147199047180593453667e-4), SC_(0.9999744742599348636740185280095281940655) }, + { SC_(2.1274673938751220703125), SC_(497909.9375), SC_(0.632396042346954345703125), SC_(0.8037448229976571143979811001021714752968e-12), SC_(BOOST_MATH_SMALL_CONSTANT(0.3550228339076187849936593977146902793143e-216407)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4417108810524228571698460596174699747163e-216395)) }, + { SC_(2.274096965789794921875), SC_(0.0312146879732608795166015625), SC_(0.9688708782196044921875), SC_(2.196683805098439034040943843963161336389), SC_(28.71343219945377139900472099439413865446), SC_(0.0710668250088394327537390803024871598051), SC_(0.9289331749911605672462609196975128401949) }, + { SC_(2.31026172637939453125), SC_(0.00233163125813007354736328125), SC_(0.221111953258514404296875), SC_(0.01571244871861467114292688043541166213954), SC_(427.6886752748253213817442343909326747566), SC_(0.3673670219341017196605035396837681998268e-4), SC_(0.99996326329780658982803394964603162318) }, + { SC_(2.323431491851806640625), SC_(0.489291487610898911952972412109375e-4), SC_(0.8350250720977783203125), SC_(0.827369238662420067558137225717222927895), SC_(20435.69785260805758421542451561713036197), SC_(0.4048482947472691363415515690231412697368e-4), SC_(0.999959515170525273086365844843097685873) }, + { SC_(2.44964599609375), SC_(12697.8740234375), SC_(0.632396042346954345703125), SC_(0.1137057590475477348116732810083465638967e-9), SC_(BOOST_MATH_SMALL_CONSTANT(0.7245353688384564801212454707725109820553e-5523)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6372019983046605086666389661217280482321e-5513)) }, + { SC_(2.509582042694091796875), SC_(0.00033403583802282810211181640625), SC_(0.913384497165679931640625), SC_(1.289833455805136344069185638870621448839), SC_(2991.11632989703270150746226073849403594), SC_(0.0004310355564700294631384799607263649785933), SC_(0.9995689644435299705368615200392736350214) }, + { SC_(2.564732074737548828125), SC_(0.000453212647698819637298583984375), SC_(0.3082362115383148193359375), SC_(0.02464832555746644285754024188263887460935), SC_(2205.134132599338738162441322041789880736), SC_(0.1117757404622280625320507532230938354193e-4), SC_(0.9999888224259537771937467949246776906165) }, + { SC_(2.57882976531982421875), SC_(0.3226127228117547929286956787109375e-4), SC_(0.1355634629726409912109375), SC_(0.002486466998068928679780937936994252108702), SC_(30995.59689380055526154730970067395611954), SC_(0.8022000050922924115668151603694250255305e-7), SC_(0.9999999197799994907707588433184839630575) }, + { SC_(2.5871660709381103515625), SC_(0.00046129638212732970714569091796875), SC_(0.81474220752716064453125), SC_(0.6493235945001016310261817647526997747666), SC_(2165.832800060715756721049233362385593433), SC_(0.0002997133405396323675757091217121378066853), SC_(0.9997002866594603676324242908782878621933) }, + { SC_(2.6278192996978759765625), SC_(0.03557576239109039306640625), SC_(0.81474220752716064453125), SC_(0.6123860587254943627358332840924393789845), SC_(26.20657873847624470581117739479457315595), SC_(0.02283406773364309879630544392201241822222), SC_(0.9771659322663569012036945560779875817778) }, + { SC_(2.69723796844482421875), SC_(0.353506766259670257568359375e-4), SC_(0.905801355838775634765625), SC_(1.146759054864891147215735050805714230645), SC_(28285.48221864071434680861300657464188461), SC_(0.4054067580018557312858650792971044356998e-4), SC_(0.9999594593241998144268714134920702895564) }, + { SC_(2.71968555450439453125), SC_(0.00041439200867898762226104736328125), SC_(0.1355634629726409912109375), SC_(0.001781952190693927759024929827182201958694), SC_(2411.79004735384091727391030124394912695), SC_(0.7388499160836224595939787763650885622781e-6), SC_(0.9999992611500839163775404060212236349114) }, + { SC_(2.754580020904541015625), SC_(0.0048456829972565174102783203125), SC_(0.632396042346954345703125), SC_(0.2012235661922152132272903655062681078713), SC_(204.7775390244987611591096954298352797072), SC_(0.0009816800708960553370130825813222883720957), SC_(0.9990183199291039446629869174186777116279) }, + { SC_(2.769221782684326171875), SC_(0.366566746379248797893524169921875e-4), SC_(0.632396042346954345703125), SC_(0.1996957759895774162080025052862658212039), SC_(27278.55725574597868280625903171760364926), SC_(0.7320559963361371431432147856490047793823e-5), SC_(0.9999926794400366386285685678521435099522) }, + { SC_(2.780732631683349609375), SC_(495953.28125), SC_(0.9688708782196044921875), SC_(0.2398292646917707560124992979242780157301e-15), SC_(BOOST_MATH_SMALL_CONSTANT(0.2781154293448569232517364618623603676914e-747324)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.115963925295893999212106421694525461812e-747308)) }, + { SC_(2.91809368133544921875), SC_(21.43137359619140625), SC_(0.3082362115383148193359375), SC_(0.0002115892914364910572043643848950895139729), SC_(0.2192618572284581292361088522964625063202e-5), SC_(0.9897436664674079513230225262156800692848), SC_(0.01025633353259204867697747378431993071523) }, + { SC_(2.9371860027313232421875), SC_(2652.859619140625), SC_(0.905801355838775634765625), SC_(0.1658236966080120503243323886023037349916e-9), SC_(0.5991967514867191164566809014128887789337e-2725), SC_(1), SC_(0.3613456723879160702175323605361247762983e-2715) }, + { SC_(2.958280086517333984375), SC_(35774.58984375), SC_(0.8350250720977783203125), SC_(0.6511424206979178883680584277451301714988e-13), SC_(BOOST_MATH_SMALL_CONSTANT(0.5509841454195994872563646231911938269328e-28001)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.84618069397019909122625585151108936335e-27988)) }, + { SC_(2.98002338409423828125), SC_(0.1707812249660491943359375), SC_(0.905801355838775634765625), SC_(0.8061305149524062992643042855909028552288), SC_(3.807753672865923506647365054411987336976), SC_(0.174718411242477295345916452260913416746), SC_(0.825281588757522704654083547739086583254) }, + { SC_(2.98070812225341796875), SC_(0.2840107381343841552734375), SC_(0.81474220752716064453125), SC_(0.392888581028449529241290682772237418065), SC_(2.013262244676749848732070538277818192877), SC_(0.1632851011795160336456375818504424610958), SC_(0.8367148988204839663543624181495575389042) }, + { SC_(2.99237728118896484375), SC_(13.7659931182861328125), SC_(0.8350250720977783203125), SC_(0.0006330260109235047478811608476068694254983), SC_(0.8784866862106843248872857887758672368004e-12), SC_(0.9999999986122423568188660379383225681103), SC_(0.1387757643181133962061677431889710145459e-8) }, + { SC_(2.9964640140533447265625), SC_(235220.21875), SC_(0.905801355838775634765625), SC_(0.1600213661608141959980213910633746624008e-15), SC_(BOOST_MATH_SMALL_CONSTANT(0.1262778634498618515615030641078309168309e-241330)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7891312671519023359516257488928419584491e-241315)) }, + { SC_(3.0576937198638916015625), SC_(0.03248409926891326904296875), SC_(0.12707412242889404296875), SC_(0.000657166396253856112420817904131697694946), SC_(29.31723438639669348292098048836029171345), SC_(0.2241519977896403808220848026298478626326e-4), SC_(0.9999775848002210359619177915197370152137) }, + { SC_(3.1107203960418701171875), SC_(10.69952869415283203125), SC_(0.221111953258514404296875), SC_(0.0005593621180658764916032354796476988885327), SC_(0.0004897865015629660797959732567916697366427), SC_(0.5331581318419520895479003417175303065101), SC_(0.4668418681580479104520996582824696934899) }, + { SC_(3.1362564563751220703125), SC_(0.412800610065460205078125), SC_(0.12707412242889404296875), SC_(0.0005243957231309698424424038853343999532901), SC_(1.392495891474714025850895086191276968485), SC_(0.0003764451443746217706553968021572423592609), SC_(0.9996235548556253782293446031978427576407) }, + { SC_(3.143204212188720703125), SC_(245166.296875), SC_(0.913384497165679931640625), SC_(0.2630059636404044176917380685846427352151e-16), SC_(BOOST_MATH_SMALL_CONSTANT(0.6043270917410382335978807169229650293393e-260471)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2297769538668355098082544810040529712714e-260454)) }, + { SC_(3.1543867588043212890625), SC_(274237.21875), SC_(0.81474220752716064453125), SC_(0.1625350376420910741384848449693863184265e-16), SC_(BOOST_MATH_SMALL_CONSTANT(0.2690539847628662110788655761771698612467e-200808)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1655359906799506806868897367788715537181e-200791)) }, + { SC_(3.2091653347015380859375), SC_(12216.2568359375), SC_(0.12707412242889404296875), SC_(0.1873797592728273205179908606995030456467e-12), SC_(0.7919285686868581022013174499890084615767e-727), SC_(1), SC_(0.4226329309847175120814746567152805472633e-714) }, + { SC_(3.24223804473876953125), SC_(1.68130600452423095703125), SC_(0.1355634629726409912109375), SC_(0.0004394960498861844768550401648312202217273), SC_(0.106531152706243738563169469720543304429), SC_(0.004108566742342013504145261269084905519575), SC_(0.9958914332576579864958547387309150944804) }, + { SC_(3.2986447811126708984375), SC_(18.05455780029296875), SC_(0.913384497165679931640625), SC_(0.0001571231807759573941342283741313652373997), SC_(0.2997084203140047681159353167938184883028e-20), SC_(0.9999999999999999809252575696414736899537), SC_(0.190747424303585263100463198766717611279e-16) }, + { SC_(3.3203613758087158203125), SC_(4707.14794921875), SC_(0.3082362115383148193359375), SC_(0.174837797989208477568413462293102195009e-11), SC_(0.6303028289438603901098749689614525530665e-758), SC_(1), SC_(0.3605071879152610948355870976343748337838e-746) }, + { SC_(3.3257858753204345703125), SC_(3224.86181640625), SC_(0.1355634629726409912109375), SC_(0.5905458153290816749396191237660878415679e-11), SC_(0.2805909749269826507071883053014434221043e-209), SC_(1), SC_(0.4751383680038835272016840533489017630165e-198) }, + { SC_(3.331163883209228515625), SC_(1.9793136119842529296875), SC_(0.632396042346954345703125), SC_(0.03395298723188450151204978548749765959161), SC_(0.03703887574485270285604165860520092728045), SC_(0.4782658998963064738707927469026664128811), SC_(0.5217341001036935261292072530973335871189) }, + { SC_(3.3439481258392333984375), SC_(334.433685302734375), SC_(0.1355634629726409912109375), SC_(0.1005433692432035880909489062786411594593e-7), SC_(0.2005891010803133486881905313928167777841e-25), SC_(0.9999999999999999980049494801083311279569), SC_(0.1995050519891668872043050768016044534771e-17) }, + { SC_(3.35210418701171875), SC_(0.0159323550760746002197265625), SC_(0.221111953258514404296875), SC_(0.002282976272379056096506902888344657555717), SC_(61.16375741970565532957422675625988954631), SC_(0.3732424491759602156863300845915103269515e-4), SC_(0.9999626757550824039784313669915408489673) }, + { SC_(3.4502658843994140625), SC_(41.324951171875), SC_(0.12707412242889404296875), SC_(0.6714227859028409223078791133262327911845e-5), SC_(0.8395443123259849127162481713501751685527e-6), SC_(0.8888576073938626205703705028323799622538), SC_(0.1111423926061373794296294971676200377462) }, + { SC_(3.45885372161865234375), SC_(29400.57421875), SC_(0.3082362115383148193359375), SC_(0.1113097721240300362972826582934483808616e-14), SC_(0.877209818992475775035689064062142091421e-4711), SC_(1), SC_(0.7880797905282027931851392155990827896495e-4696) }, + { SC_(3.5038392543792724609375), SC_(174.0391998291015625), SC_(0.81474220752716064453125), SC_(0.4588448232831660229952451882786936627741e-7), SC_(0.1265843939076240475896867177771413219439e-129), SC_(1), SC_(0.2758762603049032638216040912750710542023e-122) }, + { SC_(3.519533634185791015625), SC_(43931.828125), SC_(0.1355634629726409912109375), SC_(0.1550601994296576624475572682354891325322e-15), SC_(0.5506303550678763576292786848202724162192e-2786), SC_(1), SC_(0.355107472512743190826437889308446598755e-2770) }, + { SC_(3.5407917499542236328125), SC_(192506.5), SC_(0.3082362115383148193359375), SC_(0.6762501081091727750666256335913014047553e-18), SC_(BOOST_MATH_SMALL_CONSTANT(0.1810714101987144792606684975020851024195e-30815)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2677580499099640659954906366427546539929e-30797)) }, + { SC_(3.643778324127197265625), SC_(460.66265869140625), SC_(0.8350250720977783203125), SC_(0.7631535147388549115637412492866378561899e-9), SC_(0.4205040932908895771554373642902487973848e-363), SC_(1), SC_(0.5510085260300252268571165317876316783109e-354) }, + { SC_(3.6656649112701416015625), SC_(336.389312744140625), SC_(0.3082362115383148193359375), SC_(0.215791720749920489432567844635617465443e-8), SC_(0.1913959160478324006182179322373144888867e-57), SC_(1), SC_(0.8869474481351385317830904747175621652939e-49) }, + { SC_(3.6850574016571044921875), SC_(0.0037575312890112400054931640625), SC_(0.3082362115383148193359375), SC_(0.004700958723625040380482933503067520773596), SC_(264.3959126179765937938283198290409057692), SC_(0.1777968159768031291326144486881844545145e-4), SC_(0.9999822203184023196870867385551311815545) }, + { SC_(3.7146091461181640625), SC_(0.280897915363311767578125), SC_(0.632396042346954345703125), SC_(0.08266985092943892844994513141054194966211), SC_(2.197083375517572737580826900944351079459), SC_(0.03626263139817094798750334205303616370305), SC_(0.963737368601829052012496657946963836297) }, + { SC_(3.7336635589599609375), SC_(0.477436915389262139797210693359375e-4), SC_(0.221111953258514404296875), SC_(0.001161350390915668250446450228578170310865), SC_(20943.41972718709787515626983068263368694), SC_(0.5545180021432339794938139482542775628364e-7), SC_(0.9999999445481997856766020506186051745722) }, + { SC_(3.78065204620361328125), SC_(397517.0625), SC_(0.8350250720977783203125), SC_(0.3106692370941557178524894184578248280721e-20), SC_(BOOST_MATH_SMALL_CONSTANT(0.2911649718207596959822032674625140507844e-311095)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9372185496838079614946082001992536183017e-311075)) }, + { SC_(3.7866687774658203125), SC_(4.32257175445556640625), SC_(0.3082362115383148193359375), SC_(0.001233453284813738256980335173501548189344), SC_(0.005474414653806166186400567572273711207249), SC_(0.183881569538996081375634417888316953202), SC_(0.816118430461003918624365582111683046798) }, + { SC_(3.81618976593017578125), SC_(0.30148139558150433003902435302734375e-4), SC_(0.3082362115383148193359375), SC_(0.003902917947682581703045615669910691845878), SC_(33167.75902216366067552099307425048603802), SC_(0.1176720286049553847622526013198847043118e-6), SC_(0.9999998823279713950446152377473986801153) }, + { SC_(3.9190075397491455078125), SC_(109.78485107421875), SC_(0.905801355838775634765625), SC_(0.5188940518655968999732995391783015444467e-7), SC_(0.1588078213027438911853841563985523076893e-114), SC_(1), SC_(0.3060505718494495997940146116913898836079e-107) }, + { SC_(3.9453601837158203125), SC_(0.42322339140810072422027587890625e-4), SC_(0.12707412242889404296875), SC_(0.8236591000866047274326096294890126372598e-4), SC_(23626.36592110891663715623440051911992038), SC_(0.3486186153069269315742362759644030992004e-8), SC_(0.999999996513813846930730684257637240356) }, + { SC_(3.9545612335205078125), SC_(420.351806640625), SC_(0.12707412242889404296875), SC_(0.2356317584514070056632402769608253165585e-9), SC_(0.8711124672670564009175660201341093325929e-30), SC_(0.9999999999999999999963030770003496750235), SC_(0.3696922999650324976460210874151614428123e-20) }, + { SC_(3.994822978973388671875), SC_(0.02758073247969150543212890625), SC_(0.8350250720977783203125), SC_(0.4098735721841564788896545917766083138654), SC_(34.07853530102203102562478577903427263834), SC_(0.01188438624962442079159001634372174773343), SC_(0.9881156137503755792084099836562782522666) }, + { SC_(4.02030849456787109375), SC_(0.00037742473068647086620330810546875), SC_(0.905801355838775634765625), SC_(0.7940260393044519559181226178432463520661), SC_(2646.902698496763698448822721100164773373), SC_(0.0002998931229344561458873290296292921232436), SC_(0.9997001068770655438541126709703707078768) }, + { SC_(4.075417041778564453125), SC_(0.0046969656832516193389892578125), SC_(0.8350250720977783203125), SC_(0.4105384414854240139610412208872348140263), SC_(210.649583048364410681785558959946689255), SC_(0.001945125581220549805037242783737639399678), SC_(0.9980548744187794501949627572162623606003) }, + { SC_(4.0761165618896484375), SC_(3398.80859375), SC_(0.12707412242889404296875), SC_(0.2661516748320809135757809071004428436407e-13), SC_(0.1284465826019821475525755935974524934126e-206), SC_(1), SC_(0.4826067041773117693895150053958020416853e-193) }, + { SC_(4.076457500457763671875), SC_(0.000358947552740573883056640625), SC_(0.632396042346954345703125), SC_(0.07990215805348860602606188021623435934074), SC_(2783.988480316991854913593918716445388643), SC_(0.286997828632554427741237124873359859469e-4), SC_(0.9999713002171367445572258762875126640141) }, + { SC_(4.15985202789306640625), SC_(0.01332603581249713897705078125), SC_(0.913384497165679931640625), SC_(0.8106760641473409814599499536789212637117), SC_(72.38484116409426018759060376250696965144), SC_(0.01107548788294580791509377274581652662185), SC_(0.9889245121170541920849062272541834733782) }, + { SC_(4.16162872314453125), SC_(0.0049612796865403652191162109375), SC_(0.12707412242889404296875), SC_(0.5001267297020304346384291352885648903897e-4), SC_(199.6947476062598992323407238206379873761), SC_(0.2504455477385024806867405766095845732647e-6), SC_(0.9999997495544522614975193132594233904154) }, + { SC_(4.205390453338623046875), SC_(48.05587005615234375), SC_(0.632396042346954345703125), SC_(0.576694044310049590467080310610345695785e-6), SC_(0.6470155628434412761370877039014851790302e-23), SC_(0.9999999999999999887806095931244864948915), SC_(0.1121939040687551350510849484508581549787e-16) }, + { SC_(4.2340564727783203125), SC_(0.000102389443782158195972442626953125), SC_(0.8350250720977783203125), SC_(0.3908308061963272778320899491289780578316), SC_(9764.343584311484163498409861158291703101), SC_(0.4002472464496794494668149916931584790399e-4), SC_(0.9999599752753550320550533185008306841521) }, + { SC_(4.26158905029296875), SC_(1.5681400299072265625), SC_(0.81474220752716064453125), SC_(0.0522681771553854610094348918090025337654), SC_(0.03097517785556224640631163047119112004045), SC_(0.6278960903066849999650560502968121365326), SC_(0.3721039096933150000349439497031878634674) }, + { SC_(4.286884784698486328125), SC_(0.00029798992909491062164306640625), SC_(0.12707412242889404296875), SC_(0.375382569001888294680832372613483569343e-4), SC_(3353.90718977927479988056295324370962887), SC_(0.1119239572115776028497004703533167721871e-7), SC_(0.9999999888076042788422397150299529646683) }, + { SC_(4.302335262298583984375), SC_(0.011135534383356571197509765625), SC_(0.905801355838775634765625), SC_(0.7274189702615498210620952895066901020165), SC_(87.18728869405267176035247088170016141474), SC_(0.008274144219862077733957054764482754088799), SC_(0.9917258557801379222660429452355172459112) }, + { SC_(4.33400249481201171875), SC_(0.0019063963554799556732177734375), SC_(0.81474220752716064453125), SC_(0.3158284853966184390604543146132717148806), SC_(522.3149737882240994046063224240272319367), SC_(0.0006043051500651276770767317016898387954114), SC_(0.9993956948499348723229232682983101612046) }, + { SC_(4.379422664642333984375), SC_(1518.1336669921875), SC_(0.913384497165679931640625), SC_(0.1146281886799135235589695211019191532827e-12), SC_(0.6515879173539096867256517152138981630728e-1616), SC_(1), SC_(0.5684360233357577730226484994237076618639e-1603) }, + { SC_(4.3807125091552734375), SC_(40.12465667724609375), SC_(0.9688708782196044921875), SC_(0.7810946424301170190417410890436800416059e-6), SC_(0.7765031164598682165452612982978476490707e-62), SC_(1), SC_(0.9941216778085126897100001434940744139359e-56) }, + { SC_(4.402850627899169921875), SC_(2.295498371124267578125), SC_(0.12707412242889404296875), SC_(0.2239223338577079030873961571794477568143e-4), SC_(0.02870413618297970057227656984631523435351), SC_(0.0007794966750320571209806200492040174162521), SC_(0.9992205033249679428790193799507959825837) }, + { SC_(4.4479217529296875), SC_(0.0027269781567156314849853515625), SC_(0.913384497165679931640625), SC_(0.7727460612153742201764237007167402790834), SC_(363.9875570278401865556342043965409621681), SC_(0.002118503726066675854378571395200342242294), SC_(0.9978814962739333241456214286047996577577) }, + { SC_(4.45084285736083984375), SC_(3340.46728515625), SC_(0.8350250720977783203125), SC_(0.2244990476855018774487678088930777899517e-14), SC_(0.1038325505917867909964943789917169332435e-2617), SC_(1), SC_(0.4625077552099223675790368726616036217505e-2603) }, + { SC_(4.461754322052001953125), SC_(2.637157440185546875), SC_(0.9688708782196044921875), SC_(0.01867088107506661562263700947373778673728), SC_(0.3722775835516935268098074499034701228028e-4), SC_(0.9980100736698376234182703619442376597162), SC_(0.001989926330162376581729638055762340283763) }, + { SC_(4.516055583953857421875), SC_(1.62176787853240966796875), SC_(0.8350250720977783203125), SC_(0.04714701190206004185311752063294221274949), SC_(0.02294679212038186957620566227684173444898), SC_(0.6726273821144733094920485440879345046862), SC_(0.3273726178855266905079514559120654953138) }, + { SC_(4.537124156951904296875), SC_(0.043504618108272552490234375), SC_(0.1355634629726409912109375), SC_(0.2849473743817781104862905200840506043338e-4), SC_(21.12052456017385670036068900858362490078), SC_(0.1349147314660481902117514558212828818074e-5), SC_(0.9999986508526853395180978824854417871712) }, + { SC_(4.55108356475830078125), SC_(0.00028587187989614903926849365234375), SC_(0.221111953258514404296875), SC_(0.0002796952883842011988881123363817759988857), SC_(3496.092302523280454605375025284158000743), SC_(0.8000225446166837209590733695556689803331e-7), SC_(0.9999999199977455383316279040926630444331) }, + { SC_(4.56300830841064453125), SC_(205.750579833984375), SC_(0.913384497165679931640625), SC_(0.3396421824056862937117118134465990662714e-9), SC_(0.9054459885381117537853705858550233754877e-221), SC_(1), SC_(0.2665882023619198030445523294235488150914e-211) }, + { SC_(4.60340976715087890625), SC_(20.9564685821533203125), SC_(0.905801355838775634765625), SC_(0.7662814851119697002565648547511514245558e-5), SC_(0.1073715569115845211869701967911544027724e-22), SC_(0.9999999999999999985987974524022944634869), SC_(0.1401202547597705536513072398399453713197e-17) }, + { SC_(4.71325206756591796875), SC_(1386.131103515625), SC_(0.221111953258514404296875), SC_(0.2431268230931994109313207303367950601082e-13), SC_(0.9973688779029749120647199340499327763088e-156), SC_(1), SC_(0.4102257682693640563670705316162444929497e-142) }, + { SC_(4.7184352874755859375), SC_(1.0989363193511962890625), SC_(0.221111953258514404296875), SC_(0.0001679238125060957819092267452697444408295), SC_(0.1709435373809264311336338608100820471118), SC_(0.0009813709224086791272635944182639305555371), SC_(0.9990186290775913208727364055817360694445) }, + { SC_(4.79721546173095703125), SC_(0.001919968170113861560821533203125), SC_(0.1355634629726409912109375), SC_(0.1612480694169045520097031824245881881183e-4), SC_(518.8098630097590106316683546253859642722), SC_(0.3108037759147623052845169599594860548187e-7), SC_(0.9999999689196224085237694715483040040514) }, + { SC_(4.9292125701904296875), SC_(413.006103515625), SC_(0.9688708782196044921875), SC_(0.2687812328867933956455358023671395654682e-11), SC_(0.9975426648476879332945952527059336656624e-625), SC_(1), SC_(0.3711355343279632433489429140149721765579e-613) }, + { SC_(4.955646514892578125), SC_(2.21204280853271484375), SC_(0.905801355838775634765625), SC_(0.02334227396273797203783275881153385121431), SC_(0.001870026244073160041905611067087718660269), SC_(0.9258288125742699871613485636668508321246), SC_(0.0741711874257300128386514363331491678754) }, + { SC_(4.95948886871337890625), SC_(0.0028835497796535491943359375), SC_(0.9688708782196044921875), SC_(1.505120348345037862046592949557491620961), SC_(343.2235542268416328838663734776345631994), SC_(0.004366101399020014604892419942279366266527), SC_(0.9956338986009799853951075800577206337335) }, + { SC_(4.95980072021484375), SC_(27.734874725341796875), SC_(0.1355634629726409912109375), SC_(0.4956435247414797545016036224277522888071e-6), SC_(0.6283101375714764191544923982356043578174e-6), SC_(0.4409821697822553666771950005765585992489), SC_(0.5590178302177446333228049994234414007511) }, + { SC_(10.5313282012939453125), SC_(4949.1328125), SC_(0.81474220752716064453125), SC_(0.1489333556837978488936234271997902284363e-32), SC_(0.3856025533992777785693030839310786174967e-3628), SC_(1), SC_(0.2589094643230594187220313290600198648947e-3595) }, + { SC_(11.0091266632080078125), SC_(0.01806267909705638885498046875), SC_(0.913384497165679931640625), SC_(0.2290913115286434049901291231609836006505), SC_(52.29317531396651045563254082820621090561), SC_(0.004361794077969947966105722200544195166528), SC_(0.9956382059220300520338942777994558048335) }, + { SC_(11.23558139801025390625), SC_(0.01205970533192157745361328125), SC_(0.1355634629726409912109375), SC_(0.1801437548445751478743847387122581131884e-10), SC_(80.03049850672077749426711239130895565057), SC_(0.2250938807152457506452211604760772953299e-12), SC_(0.9999999999997749061192847542493547788395) }, + { SC_(11.8540496826171875), SC_(28582.3984375), SC_(0.905801355838775634765625), SC_(0.4196989563963513018235513889188109873243e-45), SC_(BOOST_MATH_SMALL_CONSTANT(0.6501486219485649635488047189211134227925e-29329)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1549083246551091735727896562237340707779e-29283)) }, + { SC_(12.08311557769775390625), SC_(0.000145281082950532436370849609375), SC_(0.905801355838775634765625), SC_(0.1724057421068149458120519666384394766988), SC_(6880.009901516096508765952433178202969915), SC_(0.250583101446216964096661427068897712434e-4), SC_(0.9999749416898553783035903338572931102288) }, + { SC_(12.1501750946044921875), SC_(2569.097900390625), SC_(0.3082362115383148193359375), SC_(0.2089415491959561405232965744934814940039e-33), SC_(0.5387791953231732231031430172096660368293e-420), SC_(1), SC_(0.2578612044356378151404340936138124265347e-386) }, + { SC_(12.16957950592041015625), SC_(0.2478319108486175537109375), SC_(0.632396042346954345703125), SC_(0.0006061150384945097283682858755569887265526), SC_(1.984399791404405138978224349455243951108), SC_(0.0003053467178748392974745176907177243792601), SC_(0.9996946532821251607025254823092822756207) }, + { SC_(12.2681884765625), SC_(31.347698211669921875), SC_(0.221111953258514404296875), SC_(0.9029530084836614196063215287799145722015e-12), SC_(0.3829678009880710229549215843075214127243e-11), SC_(0.1907930292853736794061279981430787188763), SC_(0.8092069707146263205938720018569212811237) }, + { SC_(12.48180866241455078125), SC_(35551.12890625), SC_(0.81474220752716064453125), SC_(0.2055129032867034297384496390928032173932e-48), SC_(BOOST_MATH_SMALL_CONSTANT(0.1134877969519662374773260042042733147932e-26036)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.552217379721620791615004012932233616666e-25988)) }, + { SC_(12.5361804962158203125), SC_(0.0011118580587208271026611328125), SC_(0.1355634629726409912109375), SC_(0.12035557149326799083259332542666489627e-11), SC_(896.3360416890092611550346282723233913045), SC_(0.1342750552197767451331942946403735674419e-14), SC_(0.9999999999999986572494478022325486680571) }, + { SC_(12.85811328887939453125), SC_(1765.9459228515625), SC_(0.1355634629726409912109375), SC_(0.5705926152881144062747827324988998356049e-33), SC_(0.5687161280418321885891109339443080853181e-125), SC_(1), SC_(0.9967113362563679407527245274419457886804e-92) }, + { SC_(13.23449611663818359375), SC_(385250.125), SC_(0.221111953258514404296875), SC_(0.1032646208826374291094174773587843687418e-64), SC_(BOOST_MATH_SMALL_CONSTANT(0.1384078056643836734532369459798476005579e-41822)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1340321636600857388950148353569427019247e-41757)) }, + { SC_(13.28284740447998046875), SC_(0.00048034972860477864742279052734375), SC_(0.1355634629726409912109375), SC_(0.2556419984719537621177367194308522762536e-12), SC_(2078.69366536242135471302999616696632128), SC_(0.1229820452776443186126984426686117854589e-15), SC_(0.9999999999999998770179547223556813873016) }, + { SC_(13.5956668853759765625), SC_(153334.59375), SC_(0.1355634629726409912109375), SC_(0.6876783917625074831478377703058966947845e-61), SC_(BOOST_MATH_SMALL_CONSTANT(0.7607041673086546740187797968209920060655e-9717)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1106191755362537170021971657634988714053e-9655)) }, + { SC_(13.7348194122314453125), SC_(3484.218017578125), SC_(0.913384497165679931640625), SC_(0.6832590237907416461316409008802195758425e-39), SC_(0.2034847173393662557682179508557633804649e-3705), SC_(1), SC_(0.2978148992609375494249351287176812960761e-3666) }, + { SC_(14.008861541748046875), SC_(2.686798095703125), SC_(0.9688708782196044921875), SC_(0.001064885029412461370744338050039719052766), SC_(0.2477669808586811850386960714962704372694e-4), SC_(0.9772620277829239418423712708773841814268), SC_(0.02273797221707605815762872912261581857319) }, + { SC_(14.066776275634765625), SC_(10778.09375), SC_(0.1355634629726409912109375), SC_(0.1384429458382036725199325066251311565329e-46), SC_(0.5423868404097407030381093993157021243669e-697), SC_(1), SC_(0.3917764369472609965631906874797581143959e-650) }, + { SC_(14.16046237945556640625), SC_(201.0361175537109375), SC_(0.1355634629726409912109375), SC_(0.1457467076579967985937310888273502286932e-22), SC_(0.5953315175646441172741979225187016188513e-26), SC_(0.9995916968202057773412609528963707342408), SC_(0.0004083031797942226587390471036292657591638) }, + { SC_(14.22837734222412109375), SC_(0.000125592589029110968112945556640625), SC_(0.221111953258514404296875), SC_(0.4191360841278267573232549994819329283305e-10), SC_(7959.057087433980072463360139209842812211), SC_(0.5266152504290619088438816820102498081658e-14), SC_(0.9999999999999947338474957093809115611832) }, + { SC_(14.366168975830078125), SC_(236787.609375), SC_(0.8350250720977783203125), SC_(0.100281550093745232466792422575515082718e-66), SC_(BOOST_MATH_SMALL_CONSTANT(0.7008982824946768264114851096978910610725e-185312)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6989304431766988620282656617551653668956e-185245)) }, + { SC_(14.726207733154296875), SC_(0.21476264297962188720703125), SC_(0.9688708782196044921875), SC_(0.3433724310693093819167547189662152817345), SC_(2.059940898494670096164527259701817456699), SC_(0.1428746001802460104759930526155408867704), SC_(0.8571253998197539895240069473844591132296) }, + { SC_(14.9572906494140625), SC_(0.3900313095073215663433074951171875e-4), SC_(0.12707412242889404296875), SC_(0.3015618536926003968329396709576020408051e-14), SC_(25635.71894737369159379969581373144169475), SC_(0.1176334684865526556691865610881892798014e-18), SC_(0.9999999999999999998823665315134473443308) }, + { SC_(15.357250213623046875), SC_(0.01863213069736957550048828125), SC_(0.12707412242889404296875), SC_(0.1284230241208752102484513913830316353992e-14), SC_(50.50650654176348723073367831074223892027), SC_(0.2542702572681067944331417962210811575535e-16), SC_(0.9999999999999999745729742731893205566858) }, + { SC_(15.364917755126953125), SC_(226.784942626953125), SC_(0.913384497165679931640625), SC_(0.9237144754778138105349974376550282816358e-25), SC_(0.1394660362001441670347986938484403591558e-243), SC_(1), SC_(0.1509839240399496424041030108516204158158e-218) }, + { SC_(15.681644439697265625), SC_(0.00036581026506610214710235595703125), SC_(0.3082362115383148193359375), SC_(0.8674693174595872650196860681500669650424e-9), SC_(2730.362362247953273286364375686350702958), SC_(0.3177121577170839604484183103035436646471e-12), SC_(0.9999999999996822878422829160395515816897) }, + { SC_(16.6584186553955078125), SC_(0.000170524624991230666637420654296875), SC_(0.632396042346954345703125), SC_(0.7245430747183076819989673100370576842949e-4), SC_(5860.896884370240189900624067253474405591), SC_(0.1236232406158642636291896529534599217805e-7), SC_(0.999999987637675938413573637081034704654) }, + { SC_(17.026760101318359375), SC_(11.721271514892578125), SC_(0.81474220752716064453125), SC_(0.3472776252881066374547385984980315037063e-8), SC_(0.1151389423769935669070984961546305088861e-10), SC_(0.9966954835126975740422724809411400643163), SC_(0.003304516487302425957727519058859935683689) }, + { SC_(17.084300994873046875), SC_(0.4187429845333099365234375), SC_(0.81474220752716064453125), SC_(0.004203661052637708128488774353342658694732), SC_(0.645387351033425040800967110636851350491), SC_(0.006471242634866960256436904932253540033702), SC_(0.9935287573651330397435630950677464599663) }, + { SC_(17.104099273681640625), SC_(0.0039452277123928070068359375), SC_(0.913384497165679931640625), SC_(0.09847146833345925488375270162904703640608), SC_(250.0109136026854321016499743260356685012), SC_(0.0003937136077700488965975533705668480040311), SC_(0.999606286392229951103402446629433151996) }, + { SC_(17.1246776580810546875), SC_(44.7584991455078125), SC_(0.12707412242889404296875), SC_(0.1049222201173919838340789891853527243191e-18), SC_(0.1005549969655430482646264041643485624018e-15), SC_(0.00104234357593582026065091508113565017741), SC_(0.9989576564240641797393490849188643498226) }, + { SC_(17.367763519287109375), SC_(211.8177642822265625), SC_(0.81474220752716064453125), SC_(0.1228598464727664074823299491874427055223e-26), SC_(0.134073420572815897212820738814761646768e-158), SC_(1), SC_(0.1091271269027144147374029746464801551819e-131) }, + { SC_(17.8663272857666015625), SC_(3551.811279296875), SC_(0.905801355838775634765625), SC_(0.8574917069550697731515696275483479205542e-49), SC_(0.531240231851813933991728714564815822366e-3648), SC_(1), SC_(0.6195281278442142103594159098728371820668e-3599) }, + { SC_(18.23902130126953125), SC_(0.387346590287052094936370849609375e-4), SC_(0.9688708782196044921875), SC_(0.4918514346702719123317949815826385962091), SC_(25812.72762651756668207506025815452341111), SC_(0.1905424602655145026545908450065938550628e-4), SC_(0.9999809457539734485497345409154993406145) }, + { SC_(18.3384532928466796875), SC_(0.4789576996699906885623931884765625e-4), SC_(0.81474220752716064453125), SC_(0.005742515693533407825828890828827578452719), SC_(20875.20638979056464032366321122837727672), SC_(0.275087776695995874046724128508732036129e-6), SC_(0.999999724912223304004125953275871491268) }, + { SC_(18.3578662872314453125), SC_(44.260616302490234375), SC_(0.8350250720977783203125), SC_(0.2470425321126225908500656094421956373639e-16), SC_(0.2461983521306521627940343652276125309589e-37), SC_(0.9999999999999999999990034171443060888819), SC_(0.9965828556939111180611753049869381439226e-21) }, + { SC_(18.504062652587890625), SC_(410.696044921875), SC_(0.9688708782196044921875), SC_(0.4479580769511737775750258157095141936375e-33), SC_(0.1978167753354815994969724539958034330135e-621), SC_(1), SC_(0.4415966259205168759046300915776808570772e-588) }, + { SC_(19.699462890625), SC_(1044.098388671875), SC_(0.221111953258514404296875), SC_(0.1427764414528640851938160431554939361847e-42), SC_(0.2775170190989384442597659521518656372131e-128), SC_(1), SC_(0.194371715862211995706515872837686429047e-85) }, + { SC_(20.811771392822265625), SC_(0.1686411633272655308246612548828125e-4), SC_(0.632396042346954345703125), SC_(0.8779696878552985850651735416020130779145e-5), SC_(59293.91525827321754111891249017431745502), SC_(0.1480707900466725772495285243001825944989e-9), SC_(0.9999999998519292099533274227504714756998) }, + { SC_(21.513973236083984375), SC_(1.2695052623748779296875), SC_(0.632396042346954345703125), SC_(0.1892628249277866715008878383095558629667e-5), SC_(0.0182028323467953004598273326758314495929), SC_(0.0001039635727467633546556483853281441265773), SC_(0.9998960364272532366453443516146718558734) }, + { SC_(21.758922576904296875), SC_(208175.28125), SC_(0.9688708782196044921875), SC_(0.4612573152176481888738663958595416358469e-96), SC_(BOOST_MATH_SMALL_CONSTANT(0.9671960975436415515109880867851741788795e-313691)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2096868853098322881509460069025765821922e-313594)) }, + { SC_(21.821353912353515625), SC_(0.0424164198338985443115234375), SC_(0.632396042346954345703125), SC_(0.50822417383931418054857572691006794692e-5), SC_(20.23387388522215583387412099522239396239), SC_(0.2511748610617565545640382292453663293953e-6), SC_(0.9999997488251389382434454359617707546337) }, + { SC_(21.8938732147216796875), SC_(12260.4462890625), SC_(0.632396042346954345703125), SC_(0.1110991956559958905405342390968892539915e-69), SC_(BOOST_MATH_SMALL_CONSTANT(0.1320801184663675939690239246407185274489e-5336)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1188848557241911842325110186828327556073e-5266)) }, + { SC_(21.929759979248046875), SC_(21858.861328125), SC_(0.8350250720977783203125), SC_(0.2774931077356019451270225172182562988159e-75), SC_(BOOST_MATH_SMALL_CONSTANT(0.4667400506650037846545412750177604140044e-17112)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1681987904037307170893345577930663142505e-17036)) }, + { SC_(21.9974803924560546875), SC_(241.2039947509765625), SC_(0.905801355838775634765625), SC_(0.7843991893180589007908056830908579631267e-33), SC_(0.1798121401045468000655093415604055950109e-250), SC_(1), SC_(0.2292354996706102012785787858677543673356e-217) }, + { SC_(22.052242279052734375), SC_(0.02685627527534961700439453125), SC_(0.3082362115383148193359375), SC_(0.3412495872226285359474144888488643586863e-12), SC_(33.77965545931704801885704495388096429783), SC_(0.1010222225722856503263931994106391745227e-13), SC_(0.9999999999999898977777427714349673606801) }, + { SC_(22.2946758270263671875), SC_(4700.37939453125), SC_(0.9688708782196044921875), SC_(0.1625376075227914134322624671457026695199e-61), SC_(BOOST_MATH_SMALL_CONSTANT(0.222876718150242603733562852318365160857e-7086)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1371231689373736446745878922392568188495e-7024)) }, + { SC_(23.23316192626953125), SC_(0.13708417117595672607421875), SC_(0.905801355838775634765625), SC_(0.02605383957379540375908337816020645148022), SC_(4.428348071894942126796540322967444941726), SC_(0.005849009607039420435378760155821299478133), SC_(0.9941509903929605795646212398441787005219) }, + { SC_(23.2837123870849609375), SC_(33643.07421875), SC_(0.3082362115383148193359375), SC_(0.1068799239730547041080141349760579217134e-83), SC_(BOOST_MATH_SMALL_CONSTANT(0.5934564882022625589600999132268094038937e-5400)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5552553427637895345283585051275346312517e-5316)) }, + { SC_(23.31745147705078125), SC_(0.022672764956951141357421875), SC_(0.81474220752716064453125), SC_(0.001622437892479151174304580158396023246771), SC_(40.56717549342520710039911539684386231383), SC_(0.399922594508694116453159686750409274362e-4), SC_(0.9999600077405491305883546840313249590726) }, + { SC_(23.4339599609375), SC_(23.290653228759765625), SC_(0.632396042346954345703125), SC_(0.6120488483323810340876127825639431641592e-14), SC_(0.2219752993363680426258948638666335917817e-15), SC_(0.965001723787019185029655736223016441261), SC_(0.03499827621298081497034426377698355873905) }, + { SC_(23.523906707763671875), SC_(363844.15625), SC_(0.913384497165679931640625), SC_(0.8852371887134551999324120911774536127461e-109), SC_(BOOST_MATH_SMALL_CONSTANT(0.854289970022026695484753283772963117985e-386556)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9650407607294434478678963380059740446762e-386447)) }, + { SC_(23.9151668548583984375), SC_(0.13243019580841064453125), SC_(0.221111953258514404296875), SC_(0.1090292982477346593414029076655843761839e-16), SC_(4.668514756535746933179227111744024113897), SC_(0.2335417235108825537419793742198452968969e-17), SC_(0.9999999999999999976645827648911744625802) }, + { SC_(24.385395050048828125), SC_(49.88166046142578125), SC_(0.1355634629726409912109375), SC_(0.3229288310092962335144804488418336170046e-25), SC_(0.2382116635449748094378654872427524354017e-20), SC_(0.1355619823632515389034043550239533010916e-4), SC_(0.9999864438017636748461096595644976046699) }, + { SC_(25.94358062744140625), SC_(0.00362619315274059772491455078125), SC_(0.9688708782196044921875), SC_(0.3046507692738888516972813499195180346853), SC_(271.6820215214510436761364592323637559144), SC_(0.00112009447635084656146453462226077833215), SC_(0.9988799055236491534385354653777392216679) }, + { SC_(26.580902099609375), SC_(2.500098705291748046875), SC_(0.81474220752716064453125), SC_(0.1625579245740934049887524200285159377885e-4), SC_(0.0003243137307939350046722880074979209220019), SC_(0.04773120126022660276002026308820168569593), SC_(0.9522687987397733972399797369117983143041) }, + { SC_(26.6811580657958984375), SC_(0.2598920036689378321170806884765625e-4), SC_(0.913384497165679931640625), SC_(0.02950032461583076693372771151886915042511), SC_(38473.64928474534324862751624529141819336), SC_(0.7667664114116017632462221478027761577658e-6), SC_(0.9999992332335885883982367537778521972238) }, + { SC_(27.668880462646484375), SC_(4626.693359375), SC_(0.632396042346954345703125), SC_(0.1296435483660732787044301232546660519621e-73), SC_(0.1500192979933108010732816373099939593654e-2019), SC_(1), SC_(0.1157167478706327199045166602225219324219e-1945) }, + { SC_(27.841068267822265625), SC_(0.23176459968090057373046875), SC_(0.3082362115383148193359375), SC_(0.277450983410859249961629758925573998672e-15), SC_(1.822755491705946635316393599035252249908), SC_(0.1522151405788322715817021367011591147129e-15), SC_(0.9999999999999998477848594211677284182979) }, + { SC_(28.242305755615234375), SC_(45229.91796875), SC_(0.12707412242889404296875), SC_(0.7990196810495850448097641956823676609418e-103), SC_(0.223887250907582918064012333467492757398e-2698), SC_(1), SC_(0.2802024233163902108539734567515392457317e-2595) }, + { SC_(28.593597412109375), SC_(4.394314289093017578125), SC_(0.8350250720977783203125), SC_(0.8301177741196569341876030238949308187699e-6), SC_(0.2294179754707570268618676350600587609904e-5), SC_(0.2656974140459854454596235367608590058689), SC_(0.7343025859540145545403764632391409941311) }, + { SC_(28.682727813720703125), SC_(0.0453636646270751953125), SC_(0.8350250720977783203125), SC_(0.0009661455107012884120479986102936651646781), SC_(18.48515953086525057150779816375925963023), SC_(0.522632772066436067096579898978566860452e-4), SC_(0.999947736722793356393290342010102143314) }, + { SC_(28.738727569580078125), SC_(27.254573822021484375), SC_(0.9688708782196044921875), SC_(0.9572498697263697862453881461093343605252e-17), SC_(0.1347061208111147737313027634003403911828e-42), SC_(0.9999999999999999999999999859277995149145), SC_(0.1407220048508552589290190367969040450163e-25) }, + { SC_(29.614292144775390625), SC_(0.435002657468430697917938232421875e-4), SC_(0.1355634629726409912109375), SC_(0.7737013612359115147454805505018838782536e-27), SC_(22984.41718847787840930792802750541434429), SC_(0.336619960772278849225161034207510040012e-31), SC_(0.9999999999999999999999999999999663380039) }, + { SC_(30.21712493896484375), SC_(47917.328125), SC_(0.913384497165679931640625), SC_(0.6776336763750069355502711645477384929586e-110), SC_(BOOST_MATH_SMALL_CONSTANT(0.390114760786060488589150194209388553626e-50913)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5757015543751819277815605708572541789266e-50803)) }, + { SC_(30.5350971221923828125), SC_(0.0039173173718154430389404296875), SC_(0.905801355838775634765625), SC_(0.01340698363588127821045074934336249847345), SC_(251.3176638596272682077848509721466391698), SC_(0.5334391641629631882491499304169925615287e-4), SC_(0.9999466560835837036811750850069583007438) }, + { SC_(30.87542724609375), SC_(25.78265380859375), SC_(0.3082362115383148193359375), SC_(0.8718342814354225610387065167462673942443e-21), SC_(0.7428350393405893614201669493770856529965e-17), SC_(0.000117352026190071202713981323406974886229), SC_(0.9998826479738099287972860186765930251138) }, + { SC_(31.3508777618408203125), SC_(354516.9375), SC_(0.81474220752716064453125), SC_(0.9094401866825436655613518390610522322292e-141), SC_(BOOST_MATH_SMALL_CONSTANT(0.1292851760462042082207729125855859647249e-259593)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1421590753734016673666087992993000747878e-259452)) }, + { SC_(31.5992832183837890625), SC_(2.974167346954345703125), SC_(0.1355634629726409912109375), SC_(0.9033933515544142198440298653550612801455e-29), SC_(0.6181735987291850858669229798372732083083e-4), SC_(0.146139102901122230857444458947007129656e-24), SC_(0.9999999999999999999999998538608970988778) }, + { SC_(32.361301422119140625), SC_(0.12657617032527923583984375), SC_(0.12707412242889404296875), SC_(0.3515627543575595912294473523056058630931e-30), SC_(4.796522581505533865741816552693577853579), SC_(0.7329534019356393280378750970791864073727e-31), SC_(0.9999999999999999999999999999999267046598) }, + { SC_(32.474456787109375), SC_(480.857269287109375), SC_(0.632396042346954345703125), SC_(0.1198870036486328385012482508850487533555e-52), SC_(0.1204794083488578152029519671194520563234e-217), SC_(1), SC_(0.1004941358797832731865124325954045027862e-164) }, + { SC_(32.59918212890625), SC_(0.24035865862970240414142608642578125e-4), SC_(0.8350250720977783203125), SC_(0.0004589945503402147630319808375617976950178), SC_(41600.44612776084666602124878546380557324), SC_(0.1103340439826787397894637688463490320215e-7), SC_(0.9999999889665956017321260210536231153651) }, + { SC_(32.948390960693359375), SC_(0.000167359961778856813907623291015625), SC_(0.8350250720977783203125), SC_(0.0004267963806230203802319762649087267148703), SC_(5971.088947042175590625017553976944711217), SC_(0.7147713824096579668234406750576390886032e-7), SC_(0.9999999285228617590342033176559324942361) }, + { SC_(33.888454437255859375), SC_(331.263580322265625), SC_(0.8350250720977783203125), SC_(0.4535727011434517253717920014222046688612e-49), SC_(0.4702005612542732083919944746569871773653e-264), SC_(1), SC_(0.1036659746208056245375677482680543842459e-214) }, + { SC_(34.838344573974609375), SC_(0.00024838323588483035564422607421875), SC_(0.81474220752716064453125), SC_(0.000110674026959646824563311286265396374658), SC_(4021.925282897090220365260490176746425958), SC_(0.2751767278839998335093556980718689979271e-7), SC_(0.9999999724823272116000166490644301928131) }, + { SC_(35.242801666259765625), SC_(301364.125), SC_(0.12707412242889404296875), SC_(0.5552864720973749931023406224100690397589e-154), SC_(BOOST_MATH_SMALL_CONSTANT(0.3450335943757303600834727106815755814629e-17823)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6213614264228380040050540433114097406271e-17669)) }, + { SC_(35.6124725341796875), SC_(0.25395145712536759674549102783203125e-4), SC_(0.905801355838775634765625), SC_(0.007194412942043370323502024754284716097514), SC_(39373.46157644505017523016809700259111813), SC_(0.1827223550943082418355783690202895032613e-6), SC_(0.9999998172776449056917581644216309797105) }, + { SC_(35.927936553955078125), SC_(0.02636432647705078125), SC_(0.905801355838775634765625), SC_(0.006536006690061065132195621679577078104776), SC_(34.0160493697400203998889955221757994158), SC_(0.0001921078782739724469334649000234180162257), SC_(0.9998078921217260275530665350999765819838) }, + { SC_(36.51232147216796875), SC_(0.17059408128261566162109375), SC_(0.8350250720977783203125), SC_(0.0001534303250957219523679684882514773307855), SC_(2.94556776861927066396555528151116241826), SC_(0.5208582711449593474334844011835086057491e-4), SC_(0.9999479141728855040652566515598816491394) }, + { SC_(37.01564788818359375), SC_(23.332645416259765625), SC_(0.913384497165679931640625), SC_(0.2168213812401695710521809477147884098627e-17), SC_(0.3098785037231789147280018839657329186902e-27), SC_(0.9999999998570812057803266193609615243812), SC_(0.1429187942196733806390384756187817546804e-9) }, + { SC_(38.27669525146484375), SC_(4.620498180389404296875), SC_(0.221111953258514404296875), SC_(0.8902215770883091858845606185526432876961e-27), SC_(0.5413650712423482953199737388194834894534e-6), SC_(0.1644401577378070752525600970456402900463e-20), SC_(0.9999999999999999999983555984226219292475) }, + { SC_(39.146465301513671875), SC_(0.00025820670998655259609222412109375), SC_(0.9688708782196044921875), SC_(0.1528193190529204055893789146745423950247), SC_(3868.484047792696236363740225018416110127), SC_(0.3950210999436925908479143968799440572715e-4), SC_(0.9999604978900056307409152085603120055943) }, + { SC_(39.4506988525390625), SC_(136.2086944580078125), SC_(0.3082362115383148193359375), SC_(0.1046401415703928449021460480791107851989e-40), SC_(0.6499172262477108767221541032448302027552e-43), SC_(0.9938273638207100374070280334202013073578), SC_(0.006172636179289962592971966579798692642214) }, + { SC_(39.513668060302734375), SC_(0.0025859004817903041839599609375), SC_(0.12707412242889404296875), SC_(0.114441788784727428298583906744515343314e-36), SC_(382.4965696456579013529430340110046661171), SC_(0.2991969023166547260127478856811919127572e-39), SC_(0.9999999999999999999999999999999999999997) }, + { SC_(39.82184600830078125), SC_(152.626007080078125), SC_(0.221111953258514404296875), SC_(0.7584129261311716058539320034041156306212e-43), SC_(0.3317115800628570076497725906155907508941e-43), SC_(0.6957122070203084957785356385194147673907), SC_(0.3042877929796915042214643614805852326093) }, + { SC_(40.45703887939453125), SC_(32077.298828125), SC_(0.9688708782196044921875), SC_(0.5274972812271768787697694139128653121614e-135), SC_(BOOST_MATH_SMALL_CONSTANT(0.653534335683051610104865963589483864264e-48340)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1238934036138841145558836218395953108413e-48204)) }, + { SC_(40.55828094482421875), SC_(2.458832263946533203125), SC_(0.905801355838775634765625), SC_(0.194560320532190398741461580821072086047e-4), SC_(0.0001180576580973117370161338171703709343677), SC_(0.1414843280834169605218952831421147719938), SC_(0.8585156719165830394781047168578852280062) }, + { SC_(41.08962249755859375), SC_(470040.03125), SC_(0.3082362115383148193359375), SC_(0.9752425688700116628147333573383493902956e-185), SC_(BOOST_MATH_SMALL_CONSTANT(0.4057571005755055542592905716135103019968e-75252)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4160576184093828170964391396667592625281e-75067)) }, + { SC_(41.42235565185546875), SC_(0.0039965151809155941009521484375), SC_(0.8350250720977783203125), SC_(0.7483570093601061794142170984517784798211e-4), SC_(245.9687245597023094193990632989811033502), SC_(0.3042487548012529543430621190391693066668e-6), SC_(0.9999996957512451987470456569378809608307) }, + { SC_(42.728160858154296875), SC_(1.57044470310211181640625), SC_(0.913384497165679931640625), SC_(0.0001361019068919888642281443609832535642091), SC_(0.002285967953332932614556214340365342908101), SC_(0.05619239524302985529643101317208258610858), SC_(0.9438076047569701447035689868279174138914) }, + { SC_(43.03235626220703125), SC_(365461.34375), SC_(0.905801355838775634765625), SC_(0.6563308692566014948006600328843554947252e-188), SC_(BOOST_MATH_SMALL_CONSTANT(0.4083200099908300905039485839115530865362e-374954)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6221252558992342928897984273440111903962e-374766)) }, + { SC_(43.688262939453125), SC_(0.011019987054169178009033203125), SC_(0.9688708782196044921875), SC_(0.1182948453489624950569266818770470091269), SC_(86.39385961971211899557668084726661214148), SC_(0.001367378330599051432954434144521106173212), SC_(0.9986326216694009485670455658554788938268) }, + { SC_(44.11992645263671875), SC_(0.25921415726770646870136260986328125e-4), SC_(0.221111953258514404296875), SC_(0.3511712859668647997106545731357581339004e-30), SC_(38573.78732568621448631527013502161347731), SC_(0.9103884018487873036859859860774153373753e-35), SC_(0.9999999999999999999999999999999999908961) }, + { SC_(44.16400146484375), SC_(0.3705587089061737060546875), SC_(0.1355634629726409912109375), SC_(0.1163472906159461555726531373829001038094e-39), SC_(0.5911925656899954531514499390330400989391), SC_(0.1968010042212800113349372444003097709178e-39), SC_(0.9999999999999999999999999999999999999998) }, + { SC_(44.35755157470703125), SC_(0.00286526815034449100494384765625), SC_(0.81474220752716064453125), SC_(0.1256028523348760544533299662172549814566e-4), SC_(344.67866743749718330668405079066961949), SC_(0.3644056323288813635460389084112185333907e-7), SC_(0.9999999635594367671118636453961091588781) }, + { SC_(44.4176177978515625), SC_(0.0028001288883388042449951171875), SC_(0.221111953258514404296875), SC_(0.2224432395000124782894923772653167124811e-30), SC_(352.7956069883608843045601218702867628118), SC_(0.6305158995569667787622147545653907093939e-33), SC_(0.9999999999999999999999999999999993694841) }, + { SC_(44.95709228515625), SC_(0.4406783045851625502109527587890625e-4), SC_(0.3082362115383148193359375), SC_(0.3347956324494806396373677325453744033059e-24), SC_(22687.91895800761887506541658500103816675), SC_(0.1475655978272593983284572135847984574553e-28), SC_(0.9999999999999999999999999999852434402173) }, + { SC_(45.79766845703125), SC_(2480.718017578125), SC_(0.12707412242889404296875), SC_(0.1259804823233771527697669291269210245088e-99), SC_(0.1282520196934329494253693718110955598641e-189), SC_(1), SC_(0.1018030867386465675676633176562499501144e-89) }, + { SC_(45.8876495361328125), SC_(3835.69384765625), SC_(0.8350250720977783203125), SC_(0.2095396776227800319268013022132640844885e-108), SC_(0.1436386331441517479550600784227933947687e-3008), SC_(1), SC_(0.6854961063877103377095682562436891119733e-2900) }, + { SC_(45.93944549560546875), SC_(0.1238458156585693359375), SC_(0.913384497165679931640625), SC_(0.002473439698616220984076705500972664961831), SC_(4.73891573081797345547575301975972726354), SC_(0.0005216698333890891587849521861409941981553), SC_(0.9994783301666109108412150478138590058018) }, + { SC_(46.205387115478515625), SC_(461419.53125), SC_(0.632396042346954345703125), SC_(0.5079474489759754960060400183458927170744e-205), SC_(BOOST_MATH_SMALL_CONSTANT(0.1841643826332333036789004225959389385977e-200556)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3625658185792833219552831830159943286788e-200351)) }, + { SC_(46.20613861083984375), SC_(17.2277240753173828125), SC_(0.905801355838775634765625), SC_(0.5503381473363679858700365191997254597413e-16), SC_(0.1873186360010425903381250840707434565313e-20), SC_(0.9999659641510662426455714247638091370827), SC_(0.3403584893375735442857523619086291730661e-4) }, + { SC_(46.48529815673828125), SC_(230.984283447265625), SC_(0.12707412242889404296875), SC_(0.3958743424763615180298933316445042817009e-56), SC_(0.1354089865134714125392200419399266007453e-54), SC_(0.02840502192665440250928387940996779418467), SC_(0.9715949780733455974907161205900322058153) }, + { SC_(47.248058319091796875), SC_(0.00016102936933748424053192138671875), SC_(0.913384497165679931640625), SC_(0.002842960961791706137633136490995901584215), SC_(6205.624152518811758082949945302510079975), SC_(0.4581263043786777349368582631087681503809e-6), SC_(0.9999995418736956213222650631417368912318) }, + { SC_(47.3762054443359375), SC_(0.00139417522586882114410400390625), SC_(0.3082362115383148193359375), SC_(0.1843162938442819051279223660612063593014e-25), SC_(712.8599529600331148016278771718783651745), SC_(0.2585589119979863695341599414665814674649e-28), SC_(0.9999999999999999999999999999741441088002) }, + { SC_(47.565670013427734375), SC_(0.012347941286861896514892578125), SC_(0.221111953258514404296875), SC_(0.1792446446010282589470388000940557643706e-32), SC_(76.6847350901318973662822024434040930375), SC_(0.2337422752916234388494397986547617679222e-34), SC_(0.9999999999999999999999999999999999766258) }, + { SC_(47.917327880859375), SC_(0.00043436698615550994873046875), SC_(0.12707412242889404296875), SC_(0.2792732464268549680023039533633360805758e-44), SC_(2297.769148436670615671880818997234781364), SC_(0.1215410375828501498757183126262973655019e-47), SC_(1) }, + { SC_(49.375934600830078125), SC_(0.004664070904254913330078125), SC_(0.632396042346954345703125), SC_(0.7918493691578628910632434619079350807713e-11), SC_(209.9883595217977264928814198383317790731), SC_(0.3770920307016520797076765357624405073541e-13), SC_(0.9999999999999622907969298347920292323464) }, + { SC_(49.536712646484375), SC_(3.863943576812744140625), SC_(0.12707412242889404296875), SC_(0.5722122371900771884836644158867112909992e-46), SC_(0.128391359380948559506095811600063365791e-5), SC_(0.4456781515119508083604696797625477258644e-40), SC_(1) }, + { SC_(49.81558990478515625), SC_(38816.20703125), SC_(0.221111953258514404296875), SC_(0.7140981938463531043372241188626609665284e-166), SC_(0.7805812151567538364681773771415207116495e-4249), SC_(1), SC_(0.1093100671424895609355803207497854177793e-4082) }, + { SC_(49.97966766357421875), SC_(2.618212223052978515625), SC_(0.3082362115383148193359375), SC_(0.3183691967137990310274008287004766564778e-27), SC_(0.4957259188701203252073324312379755446411e-4), SC_(0.6422282648432821387495444768097760247251e-23), SC_(0.9999999999999999999999935777173515671786) }, + { SC_(103.12812042236328125), SC_(114067.6640625), SC_(0.1355634629726409912109375), SC_(0.4840193810822088905056438194611237216161e-359), SC_(BOOST_MATH_SMALL_CONSTANT(0.4044686084940322906243428825958074889722e-7310)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.8356454809509679588208652528566894372411e-6951)) }, + { SC_(104.1346435546875), SC_(0.27170151952304877340793609619140625e-4), SC_(0.1355634629726409912109375), SC_(0.4688222559640187561116980967428509380181e-92), SC_(36799.87642605902996151913362190767512823), SC_(0.127397779964291537566046982943678428291e-96), SC_(1) }, + { SC_(114.89385223388671875), SC_(4951.32373046875), SC_(0.9688708782196044921875), SC_(0.1308089138735526057460193163216993396376e-238), SC_(BOOST_MATH_SMALL_CONSTANT(0.8370057028341217097143028672278420279251e-7466)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6398690104890094876228279887907518512493e-7227)) }, + { SC_(119.378936767578125), SC_(0.4208850805298425257205963134765625e-4), SC_(0.221111953258514404296875), SC_(0.618124420969444256377785266068493817182e-80), SC_(23754.10000237703534142589158822470559032), SC_(0.260217992223485427769847730483781873655e-84), SC_(1) }, + { SC_(120.53275299072265625), SC_(0.00151182874105870723724365234375), SC_(0.81474220752716064453125), SC_(0.8130315786385940598826717432380190957003e-12), SC_(656.1085234044774548296590454561463146907), SC_(0.1239172407667954880152803421760691006921e-14), SC_(0.9999999999999987608275923320451198471966) }, + { SC_(123.761322021484375), SC_(31601.099609375), SC_(0.632396042346954345703125), SC_(0.3907984695587686805179723879016625105735e-352), SC_(BOOST_MATH_SMALL_CONSTANT(0.4038022423803575124969725251308526345727e-13763)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1033274881644932621954231446766784155708e-13410)) }, + { SC_(124.63626861572265625), SC_(0.0002591950469650328159332275390625), SC_(0.3082362115383148193359375), SC_(0.2286602885657900358920089526905234202367e-65), SC_(3852.703804376633993315113456969305977472), SC_(0.5935060159725597784541759251964673259975e-69), SC_(1) }, + { SC_(129.1541290283203125), SC_(0.001998660154640674591064453125), SC_(0.8350250720977783203125), SC_(0.3476183625813380126233045754717090061941e-11), SC_(494.9318626564336077744675904785127268524), SC_(0.7023559984915367785981115982916012717189e-14), SC_(0.999999999999992976440015084632214018884) }, + { SC_(134.4938201904296875), SC_(0.369370639324188232421875), SC_(0.81474220752716064453125), SC_(0.227660055512276422731147692360582174155e-13), SC_(0.3941976092074812035130070739014794440327), SC_(0.5775277429255973076361119528365283386592e-13), SC_(0.9999999999999422472257074402692363888047) }, + { SC_(134.6666259765625), SC_(1.34013068675994873046875), SC_(0.3082362115383148193359375), SC_(0.9693383317484800528178309536604610067942e-71), SC_(0.001248080442774986081119014683534380655141), SC_(0.7766633451873102668027649589750566871098e-68), SC_(1) }, + { SC_(135.4109954833984375), SC_(0.00301261036656796932220458984375), SC_(0.905801355838775634765625), SC_(0.1109605271415662750236334436887917080405e-6), SC_(326.50365289455264554913282902592824183), SC_(0.3398446728548322019973559428175602751721e-9), SC_(0.9999999996601553271451677980026440571824) }, + { SC_(136.5994873046875), SC_(43.41033172607421875), SC_(0.905801355838775634765625), SC_(0.2853398846078208710261830663332092623754e-43), SC_(0.1453317414454361857387631649481562211522e-51), SC_(0.9999999949067148146860648367467346428607), SC_(0.5093285185313935163253265357139339803881e-8) }, + { SC_(136.9409332275390625), SC_(131351.0625), SC_(0.12707412242889404296875), SC_(0.3043829429539097644465665899119787466457e-468), SC_(BOOST_MATH_SMALL_CONSTANT(0.2534855485403572206098440978016365817555e-7879)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.8327849980041111480192868524026541897304e-7411)) }, + { SC_(140.242523193359375), SC_(10.396793365478515625), SC_(0.3082362115383148193359375), SC_(0.4808562615150081561181266391405746679761e-75), SC_(0.3039808893830175850688892962372282308458e-16), SC_(0.1581863460203008465056674226001222325059e-58), SC_(1) }, + { SC_(141.92529296875), SC_(0.000180798946530558168888092041015625), SC_(0.913384497165679931640625), SC_(0.198065041643384141690518647089004395326e-6), SC_(5525.479599810219206389522532998440566081), SC_(0.3584576470847656128976467755574628703498e-10), SC_(0.9999999999641542352915234387102353224443) }, + { SC_(141.9384918212890625), SC_(13.08813571929931640625), SC_(0.9688708782196044921875), SC_(0.236888370715470680626417233504345420607e-19), SC_(0.244365343557627256774710860721631870458e-22), SC_(0.9989694997509884144768508510553717884208), SC_(0.001030500249011585523149148944628211579229) }, + { SC_(143.5271759033203125), SC_(276260.9375), SC_(0.8350250720977783203125), SC_(0.3742702817290309906721968317388625320875e-534), SC_(BOOST_MATH_SMALL_CONSTANT(0.3525421786589960772588483801597439607466e-216213)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9419454225175005886234763722070685227395e-215679)) }, + { SC_(143.902008056640625), SC_(3178.291015625), SC_(0.12707412242889404296875), SC_(0.1041390448460074214940384887504552195879e-257), SC_(0.1082471811489777657966730157841617119947e-318), SC_(1), SC_(0.1039448569064995085861634581761604480829e-60) }, + { SC_(144.141387939453125), SC_(0.02794832177460193634033203125), SC_(0.3082362115383148193359375), SC_(0.210121969321088412000745631560412360473e-75), SC_(30.66336863860899471105345531623399851862), SC_(0.6852540299715104354573897272954159449745e-77), SC_(1) }, + { SC_(144.9135894775390625), SC_(216.5679473876953125), SC_(0.12707412242889404296875), SC_(0.2432218642440712886007055366627878680872e-144), SC_(0.5225315287504169883069444039355278897519e-106), SC_(0.4654683035600025384322185120148805193791e-38), SC_(0.9999999999999999999999999999999999999953) }, + { SC_(146.9971466064453125), SC_(0.03688235580921173095703125), SC_(0.632396042346954345703125), SC_(0.9828141249232948864866827305334372752907e-31), SC_(22.10701285297225737646153116481359017817), SC_(0.4445712007586573974443384645607925683607e-32), SC_(0.999999999999999999999999999999995554288) }, + { SC_(150.13287353515625), SC_(33750.34765625), SC_(0.913384497165679931640625), SC_(0.7629791065827503204271437688211232798831e-419), SC_(BOOST_MATH_SMALL_CONSTANT(0.1222534096324452698576282770002449221401e-35866)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1602316611001274496355022047977218365824e-35447)) }, + { SC_(150.599945068359375), SC_(306722), SC_(0.913384497165679931640625), SC_(0.3686020516088520592717144023675096548389e-564), SC_(BOOST_MATH_SMALL_CONSTANT(0.6826246931306197753836329254533494563908e-325874)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.185192863184331335763940971897577903196e-325309)) }, + { SC_(151.1553497314453125), SC_(0.00040882988832890987396240234375), SC_(0.9688708782196044921875), SC_(0.00151337404731319656908269530771069428744), SC_(2440.418116026032771985404725000611438149), SC_(0.6201286160303603506040678590772569703063e-6), SC_(0.999999379871383969639649395932140922743) }, + { SC_(152.060577392578125), SC_(48686.92578125), SC_(0.9688708782196044921875), SC_(0.1566704821027432284960697774985309189842e-447), SC_(BOOST_MATH_SMALL_CONSTANT(0.1462550236236577686175407186333220017517e-73369)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9335199691780160165629655945998021793685e-72922)) }, + { SC_(152.8331756591796875), SC_(0.01893596164882183074951171875), SC_(0.1355634629726409912109375), SC_(0.173789437775042018661111866596562065448e-134), SC_(47.50713183618351040884535215505963259578), SC_(0.3658175752944032252165469442263971607961e-136), SC_(1) }, + { SC_(153.7213134765625), SC_(247144.21875), SC_(0.9688708782196044921875), SC_(0.458380108098649973404151004050230761875e-560), SC_(BOOST_MATH_SMALL_CONSTANT(0.2585179282730915085169292532378029360404e-372412)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5639815596392650238174911274822139942524e-371852)) }, + { SC_(160.7382049560546875), SC_(25.5228900909423828125), SC_(0.1355634629726409912109375), SC_(0.5688547289308073203114763516392845261777e-143), SC_(0.2571459217934017533228733831741249744827e-32), SC_(0.2212186469703537302353523764298414585353e-110), SC_(1) }, + { SC_(174.9843292236328125), SC_(3107.8662109375), SC_(0.221111953258514404296875), SC_(0.3615410786240862772639301332997469171478e-297), SC_(0.1970044949079050617211883893754729790376e-454), SC_(1), SC_(0.5449021053365314558486616995281192927788e-157) }, + { SC_(182.269805908203125), SC_(4.91394901275634765625), SC_(0.81474220752716064453125), SC_(0.4974658008839300075233400944071145768898e-21), SC_(0.1557816258000933394170684974660506345715e-9), SC_(0.3193353505763985662610590462172514124542e-11), SC_(0.9999999999968066464942360143373894095378) }, + { SC_(182.4111480712890625), SC_(1.8299617767333984375), SC_(0.221111953258514404296875), SC_(0.1257179411236037996814190087574533157581e-121), SC_(0.6816139347461980262551131510755840907283e-4), SC_(0.1844415654008239033739014559927052450466e-117), SC_(1) }, + { SC_(191.581298828125), SC_(2.2190074920654296875), SC_(0.913384497165679931640625), SC_(0.818303885039488969076427373132265901127e-11), SC_(0.9528526405685344833422899124374382328851e-5), SC_(0.8587930047584097508247405741775224777972e-6), SC_(0.9999991412069952415902491752594258224775) }, + { SC_(193.9307708740234375), SC_(0.488285362720489501953125), SC_(0.1355634629726409912109375), SC_(0.2756164985499759765668542836759401656321e-170), SC_(0.1386656566083260766266602990901950991737), SC_(0.1987633457998040360412131164374774681596e-169), SC_(1) }, + { SC_(194.9492034912109375), SC_(25.73528289794921875), SC_(0.81474220752716064453125), SC_(0.3794752662261748555539548669278054074362e-37), SC_(0.1606216100529939192494848255703696421246e-34), SC_(0.002356973342594440300373688940889980449801), SC_(0.9976430266574055596996263110591100195502) }, + { SC_(206.4715423583984375), SC_(4999.44482421875), SC_(0.3082362115383148193359375), SC_(0.9664840459027490442579633751284112615285e-378), SC_(0.1589222089973494413454176328959237907617e-908), SC_(1), SC_(0.1644333495944130067402465205464989686328e-530) }, + { SC_(209.1755218505859375), SC_(4321.3662109375), SC_(0.913384497165679931640625), SC_(0.1421115387752692033915658409193225706805e-368), SC_(0.1371116603810202130897814545091836021412e-4602), SC_(1), SC_(0.9648172242920003595658828821448992914472e-4234) }, + { SC_(215.1907958984375), SC_(0.25329818527097813785076141357421875e-4), SC_(0.9688708782196044921875), SC_(0.0001464897688255976900811653585245822205338), SC_(39473.21554892836728858453251636025514219), SC_(0.3711118191026973474994418758364436476617e-8), SC_(0.9999999962888818089730265250055812416356) }, + { SC_(216.6281280517578125), SC_(348.682403564453125), SC_(0.221111953258514404296875), SC_(0.164783927326766909594538745614784038617e-181), SC_(0.8349234060239147498805922200825817369842e-164), SC_(0.1973641248261364415368843487755364206024e-17), SC_(0.9999999999999999980263587517386355846312) }, + { SC_(217.62652587890625), SC_(17.93491363525390625), SC_(0.632396042346954345703125), SC_(0.1131025448330549907800879310735393550066e-52), SC_(0.1771247617123621225419147341481414126187e-27), SC_(0.6385473365758164932877615155616247159519e-25), SC_(0.9999999999999999999999999361452663424184) }, + { SC_(226.324554443359375), SC_(39210.1875), SC_(0.81474220752716064453125), SC_(0.9619060456905223231314220053099666967455e-606), SC_(BOOST_MATH_SMALL_CONSTANT(0.5451448812286429935081677790602533918603e-28735)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5667340211354015356418078146042937541176e-28129)) }, + { SC_(231.5256805419921875), SC_(0.0435504876077175140380859375), SC_(0.8350250720977783203125), SC_(0.1764246149052565528301167841309519016063e-19), SC_(17.69346219873896208988238740952600405439), SC_(0.9971175393690364512707768877106432329784e-21), SC_(0.9999999999999999999990028824606309635487) }, + { SC_(235.0335540771484375), SC_(0.00019701055134646594524383544921875), SC_(0.81474220752716064453125), SC_(0.27531994594023280538911518101612379631e-22), SC_(5069.839200047210415604381785276244494116), SC_(0.5430545922199446130158487343748527895309e-26), SC_(0.9999999999999999999999999945694540778006) }, + { SC_(246.57464599609375), SC_(0.1393482387065887451171875), SC_(0.8350250720977783203125), SC_(0.9273358296306291857739256587313571273325e-21), SC_(3.120782444115820198187644033429437246973), SC_(0.2971485024145481213597968821633580834816e-21), SC_(0.9999999999999999999997028514975854518786) }, + { SC_(247.0611572265625), SC_(2.6212046146392822265625), SC_(0.1355634629726409912109375), SC_(0.1233763466042882539812276757354160897425e-216), SC_(0.7698914562888141892386152475177160543465e-6), SC_(0.1602516115700410042106569220683381652875e-210), SC_(1) }, + { SC_(247.6795196533203125), SC_(0.3789966404438018798828125), SC_(0.905801355838775634765625), SC_(0.3901476747947370858941749167350950866057e-12), SC_(0.2904064811325379343604720187688880329981), SC_(0.1343453745497347754446696003333483251126e-11), SC_(0.9999999999986565462545026522455533039967) }, + { SC_(255.30865478515625), SC_(1.6643607616424560546875), SC_(0.8350250720977783203125), SC_(0.1224195708757557681609468212080995446386e-22), SC_(0.8876048803681905763494927429214001435258e-4), SC_(0.1379212457968622988680230984865860809486e-18), SC_(0.999999999999999999862078754203137701132) }, + { SC_(258.402679443359375), SC_(3463.272216796875), SC_(0.905801355838775634765625), SC_(0.4274015793494460038889981037032130451897e-408), SC_(0.1743410487391723622973621969516092419379e-3567), SC_(1), SC_(0.4079092290780472578614331149052623639426e-3159) }, + { SC_(258.608306884765625), SC_(0.00045402420801110565662384033203125), SC_(0.221111953258514404296875), SC_(0.1609294182526599030396675264914452400612e-171), SC_(2196.404029586864051763637824429964329181), SC_(0.7326949690714698156932579494006958296424e-175), SC_(1) }, + { SC_(262.12615966796875), SC_(41.1895599365234375), SC_(0.913384497165679931640625), SC_(0.196155236562708974581412258075747841396e-52), SC_(0.5197083331772625347348423839179114220326e-55), SC_(0.9973575264838519192374913606794778162899), SC_(0.002642473516148080762508639320522183710125) }, + { SC_(269.2437744140625), SC_(248884.53125), SC_(0.221111953258514404296875), SC_(0.4495990210228204825261153088053209387021e-916), SC_(BOOST_MATH_SMALL_CONSTANT(0.4148636163061508725942755799652902000729e-27191)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9227413693258319379201933796485124942393e-26275)) }, + { SC_(271.8258056640625), SC_(40013.29296875), SC_(0.1355634629726409912109375), SC_(0.2729944157865051084814361794570061186133e-708), SC_(0.7284127379139313776586553004405313755609e-2771), SC_(1), SC_(0.2668233105850727419781718050477605101313e-2062) }, + { SC_(272.993988037109375), SC_(213.918212890625), SC_(0.81474220752716064453125), SC_(0.2212637644878602262122560508627173804609e-145), SC_(0.9520034199590249554257981594736319403554e-183), SC_(0.999999999999999999999999999999999999957), SC_(0.4302572642938366051420975175205847076302e-37) }, + { SC_(273.05694580078125), SC_(120.83953857421875), SC_(0.913384497165679931640625), SC_(0.9441715054771388442198671739449233407868e-106), SC_(0.8626889088160577360563703310298453850553e-141), SC_(0.999999999999999999999999999999999990863), SC_(0.9136993690358154529882782822264029164688e-35) }, + { SC_(280.6956787109375), SC_(40294.875), SC_(0.221111953258514404296875), SC_(0.2420346888698004161420917282827963577001e-728), SC_(0.1249196613161309469489033186755940857252e-4560), SC_(1), SC_(0.5161229652635864202330597197876994386475e-3832) }, + { SC_(293.792144775390625), SC_(43.755107879638671875), SC_(0.12707412242889404296875), SC_(0.626213412688692816194961369857081022211e-268), SC_(0.1178646487717884142561923122934594965963e-56), SC_(0.5312987560003492924332910773570388749067e-211), SC_(1) }, + { SC_(294.09173583984375), SC_(0.0041162283159792423248291015625), SC_(0.1355634629726409912109375), SC_(0.2315371791014920935486914615013948495911e-257), SC_(236.7646773686439981757341670939706842877), SC_(0.9779211226723120568625519548237377914634e-260), SC_(1) }, + { SC_(295.04150390625), SC_(4611.853515625), SC_(0.81474220752716064453125), SC_(0.5643528361826129736519071496970908840319e-485), SC_(0.1866904355931125055366992084754075152891e-3406), SC_(1), SC_(0.3308044606560696352715396097168974011776e-2921) }, + { SC_(310.44097900390625), SC_(0.3617111724452115595340728759765625e-4), SC_(0.81474220752716064453125), SC_(0.4085436315134407397665257096352830176133e-29), SC_(27640.05464626633929170953687365053540456), SC_(0.1478085469590876645316585336633217008742e-33), SC_(0.9999999999999999999999999999999998521915) }, + { SC_(312.348907470703125), SC_(17.8608245849609375), SC_(0.8350250720977783203125), SC_(0.9723876523048781193094731483076253335422e-40), SC_(0.4134164544643688521390779638495418981003e-30), SC_(0.235207776946375077595003817041232173269e-9), SC_(0.9999999997647922230536249224049961829588) }, + { SC_(312.48370361328125), SC_(290847.96875), SC_(0.81474220752716064453125), SC_(0.4523765765919173382352735144370898815018e-1064), SC_(BOOST_MATH_SMALL_CONSTANT(0.1254850832918198558931943494569323341016e-212998)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2773907620000807787162089481974537683579e-211934)) }, + { SC_(319.8160400390625), SC_(0.0034338268451392650604248046875), SC_(0.12707412242889404296875), SC_(0.1039487352249436822822754219339456868299e-288), SC_(284.9482190829596218680197390653836755493), SC_(0.3647986836326923012989805955948769306774e-291), SC_(1) }, + { SC_(320.71142578125), SC_(4.67389774322509765625), SC_(0.905801355838775634765625), SC_(0.9850171618247693902460627494485569139128e-20), SC_(0.2800574695987022181206384892775397912514e-10), SC_(0.3517196534303343749823322883058843095715e-9), SC_(0.9999999996482803465696656250176677116941) }, + { SC_(322.667938232421875), SC_(0.000298001919873058795928955078125), SC_(0.1355634629726409912109375), SC_(0.3346120796609924218957333268979457363039e-282), SC_(3349.337042651967348019908243227315338955), SC_(0.9990397365206648353102493000873009612277e-286), SC_(1) }, + { SC_(333.2742919921875), SC_(0.0451156608760356903076171875), SC_(0.9688708782196044921875), SC_(0.2015910821067014358020191371622465099008e-5), SC_(16.6450344808057419754379344400681482869), SC_(0.1211118294312347957164841213867908691819e-6), SC_(0.9999998788881705687652042835158786132091) }, + { SC_(339.176666259765625), SC_(0.4111320078372955322265625), SC_(0.9688708782196044921875), SC_(0.475871489271297053139403787881672962571e-6), SC_(0.1966151866730698732605667437164230613948), SC_(0.2420313229946520491730901085230714735745e-5), SC_(0.9999975796867700534795082690989147692853) }, + { SC_(341.38720703125), SC_(0.384202649001963436603546142578125e-4), SC_(0.632396042346954345703125), SC_(0.9108135773369031849026323044395471973537e-70), SC_(26021.52295326780794111723906784983713539), SC_(0.3500231631225574895492215967492848453865e-74), SC_(1) }, + { SC_(341.41339111328125), SC_(468.468475341796875), SC_(0.3082362115383148193359375), SC_(0.3565543496946831024491691828768394458409e-251), SC_(0.629433015816388768125402133427542758933e-240), SC_(0.5664690931888984677553491428462049448298e-11), SC_(0.9999999999943353090681110153224465085715) }, + { SC_(343.1463623046875), SC_(0.0001005965095828287303447723388671875), SC_(0.8350250720977783203125), SC_(0.2356381288057253516466149971441467456345e-28), SC_(9934.290991814903354659373047105922533208), SC_(0.237196724959912250831117297940355079515e-32), SC_(0.9999999999999999999999999999999976280328) }, + { SC_(343.94287109375), SC_(36665.765625), SC_(0.3082362115383148193359375), SC_(0.4202526370890087084639418504930818300741e-848), SC_(BOOST_MATH_SMALL_CONSTANT(0.12369306034179296732473775142835346482e-6047)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2943302419196836892889910632108001147524e-5199)) }, + { SC_(352.70654296875), SC_(212717.25), SC_(0.905801355838775634765625), SC_(0.1441972851961034211719947431273403233423e-1134), SC_(BOOST_MATH_SMALL_CONSTANT(0.1446128095776781832284043928815361433868e-218258)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1002881638035068850146195912609331103968e-217123)) }, + { SC_(356.28717041015625), SC_(0.0463746227324008941650390625), SC_(0.81474220752716064453125), SC_(0.274854253144334457190696078886098926166e-33), SC_(16.01525623507416452576597962646525649559), SC_(0.1716202657703288651931002315562720282044e-34), SC_(0.999999999999999999999999999999999982838) }, + { SC_(356.7762451171875), SC_(3.3235576152801513671875), SC_(0.9688708782196044921875), SC_(0.1364165363012484972823945395989807921582e-10), SC_(0.8931730062261176515126969192659486206286e-8), SC_(0.001524995725542705293456313521237359078585), SC_(0.9984750042744572947065436864787626409214) }, + { SC_(361.524810791015625), SC_(0.01847557537257671356201171875), SC_(0.905801355838775634765625), SC_(0.8022720212822092847986147827704351777061e-17), SC_(48.04400546905792875821423344152799898027), SC_(0.166986914069623396372200973840296672574e-18), SC_(0.9999999999999999998330130859303766036278) }, + { SC_(362.19921875), SC_(344.353759765625), SC_(0.9688708782196044921875), SC_(0.4787224091975894935100062848169341926213e-213), SC_(0.4299691468982810933904699845220691067036e-526), SC_(1), SC_(0.89815964040407848330304241199415911355e-313) }, + { SC_(362.229278564453125), SC_(131165.359375), SC_(0.3082362115383148193359375), SC_(0.5057364165135122178363336585033416342913e-1085), SC_(BOOST_MATH_SMALL_CONSTANT(0.1841654023932158082629951444684797586402e-21181)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3641529389218806520857720108160630097918e-20096)) }, + { SC_(367.16644287109375), SC_(0.23287344447453506290912628173828125e-4), SC_(0.3082362115383148193359375), SC_(0.8509062422527874302645435035136800483759e-190), SC_(42935.29789300576214757142986631869718034), SC_(0.1981833791798150303512183506262879890148e-194), SC_(1) }, + { SC_(369.317962646484375), SC_(35824.7421875), SC_(0.12707412242889404296875), SC_(0.1401277778307608857522144096233095426528e-895), SC_(0.103560415644484015438123327460794726839e-2448), SC_(1), SC_(0.7390427311960869932370824428985573234745e-1553) }, + { SC_(373.486236572265625), SC_(0.0390747748315334320068359375), SC_(0.12707412242889404296875), SC_(0.7276873943205061127949449274485728007157e-337), SC_(19.8771556345436876725173165123440803917), SC_(0.3660923160735775747610133192362243213198e-338), SC_(1) }, + { SC_(374.011383056640625), SC_(0.1863805353641510009765625), SC_(0.913384497165679931640625), SC_(0.3680853549931935424729101433697114219094e-16), SC_(1.63996778181418168964791681198568110514), SC_(0.2244466989381989216250070729496838307869e-16), SC_(0.9999999999999999775553301061801078374993) }, + { SC_(377.012786865234375), SC_(0.00041205019806511700153350830078125), SC_(0.12707412242889404296875), SC_(0.5018255520456287019307505533535785648385e-340), SC_(2420.389662042830422339503339413745095856), SC_(0.2073325464553849847840499156751296217151e-343), SC_(1) }, + { SC_(377.90087890625), SC_(133.8535003662109375), SC_(0.8350250720977783203125), SC_(0.4764303775395275156357475406276231056301e-128), SC_(0.8979815675883332024694445404371251955499e-136), SC_(0.999999981151882982344684499992705910614), SC_(0.1884811701765531550000729408938601969429e-7) }, + { SC_(378.573211669921875), SC_(29545.880859375), SC_(0.905801355838775634765625), SC_(0.1819161083786019421236995979220271276677e-882), SC_(BOOST_MATH_SMALL_CONSTANT(0.3567768305107357071563069529318010263981e-30333)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1961216264412469843105695279989097621613e-29450)) }, + { SC_(382.9013671875), SC_(0.46764689614064991474151611328125e-4), SC_(0.905801355838775634765625), SC_(0.9554051624934791521808252488493868262495e-18), SC_(21377.13258428691757807457543956816125374), SC_(0.4469285853593581217844881708560939442293e-22), SC_(0.9999999999999999999999553071414640641878) }, + { SC_(389.089813232421875), SC_(0.0373030789196491241455078125), SC_(0.221111953258514404296875), SC_(0.3231575825547556828096359195883892985532e-257), SC_(21.02788392868429236020299549248550271942), SC_(0.1536805052047743276126284045624474354474e-258), SC_(1) }, + { SC_(389.16900634765625), SC_(413674.96875), SC_(0.632396042346954345703125), SC_(0.1523073710619273141670447579828970845159e-1347), SC_(BOOST_MATH_SMALL_CONSTANT(0.6203083669742001315335466647235180952343e-179874)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4072740292536375431999707817360029371767e-178526)) }, + { SC_(391.8837890625), SC_(0.19626211724244058132171630859375e-4), SC_(0.8350250720977783203125), SC_(0.3156660959615283137675626160491049296641e-32), SC_(50945.72155259349797640877051570356243093), SC_(0.6196125726390044116169667113856543669063e-37), SC_(0.999999999999999999999999999999999999938) }, + { SC_(393.736419677734375), SC_(0.004322923719882965087890625), SC_(0.632396042346954345703125), SC_(0.3004974652924474956100160452044348570937e-80), SC_(224.8686489014385231824592335003405580727), SC_(0.133632441320958709225529491856927709637e-82), SC_(1) }, + { SC_(393.983001708984375), SC_(0.2691637575626373291015625), SC_(0.221111953258514404296875), SC_(0.1870527793829857996963117135782901988535e-260), SC_(0.6714385221846706365806862683133772310713), SC_(0.2785851171814942556490675848554657168373e-260), SC_(1) }, + { SC_(396.012939453125), SC_(0.3836281299591064453125), SC_(0.12707412242889404296875), SC_(0.4301288599143994816570364356887688358255e-357), SC_(0.233460848724051421741768156340076225462), SC_(0.1842402536721726057994231516390974357011e-356), SC_(1) }, + { SC_(396.501617431640625), SC_(0.00025799489230848848819732666015625), SC_(0.905801355838775634765625), SC_(0.2403255365257639667540869044416409896705e-18), SC_(3869.492850349797971737181114829875494191), SC_(0.6210776084107218287862374702379978340916e-22), SC_(0.9999999999999999999999378922391589278171) }, + { SC_(398.525390625), SC_(0.3569120235624723136425018310546875e-4), SC_(0.12707412242889404296875), SC_(0.2525921292916898143688329256341569736429e-359), SC_(28011.54612355233296168609852241990334577), SC_(0.9017429033640821536450249063192331434311e-364), SC_(1) }, + { SC_(399.652587890625), SC_(0.0480428077280521392822265625), SC_(0.913384497165679931640625), SC_(0.4724066069503013068013794705665556538261e-17), SC_(15.21131085667592202681534268766103161162), SC_(0.3105627196770961107238612064348950002903e-18), SC_(0.9999999999999999996894372803229038892761) }, + { SC_(403.239715576171875), SC_(231.1188201904296875), SC_(0.905801355838775634765625), SC_(0.4209076100284479575459272050589722133011e-181), SC_(0.2097420529948794342641861558008743468945e-256), SC_(1), SC_(0.4983090065316318723760331393489524960538e-75) }, + { SC_(407.583343505859375), SC_(1515.2218017578125), SC_(0.8350250720977783203125), SC_(0.6106516291260666365026418574546229451623e-432), SC_(0.1667628395292839871395498306645192446908e-1220), SC_(1), SC_(0.2730899772885997692805519448869943783372e-788) }, + { SC_(408.7735595703125), SC_(3.076730251312255859375), SC_(0.632396042346954345703125), SC_(0.1378287322801105462206772129061690311001e-84), SC_(0.1968181405629450728659864963206833038828e-7), SC_(0.7002846987878694790764947964174289324482e-77), SC_(1) }, + { SC_(409.088836669921875), SC_(41189.671875), SC_(0.8350250720977783203125), SC_(0.143904091158808850646611131514643898925e-998), SC_(BOOST_MATH_SMALL_CONSTANT(0.1363139954023903785257309899372358371717e-32270)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9472558723292846634420162507585859990812e-31272)) }, + { SC_(412.0701904296875), SC_(0.000211175109143368899822235107421875), SC_(0.632396042346954345703125), SC_(0.647616717896141274500164522105167342336e-84), SC_(4728.814144546499136816670985737169832699), SC_(0.1369511886279152459177282803600209927911e-87), SC_(1) }, + { SC_(412.55084228515625), SC_(0.3415349419810809195041656494140625e-4), SC_(0.913384497165679931640625), SC_(0.1598951502476228351696480573690411165113e-17), SC_(29272.98341448901344132555396999064805538), SC_(0.5462208890142738821114941245966009915949e-22), SC_(0.9999999999999999999999453779110985726118) }, + { SC_(412.772796630859375), SC_(10.2405414581298828125), SC_(0.221111953258514404296875), SC_(0.7210631161000411893596368421118781124139e-274), SC_(0.9132989709772482176203558464533790146331e-21), SC_(0.7895148675449499217836227273432362656399e-253), SC_(1) }, + { SC_(413.771148681640625), SC_(210.19207763671875), SC_(0.1355634629726409912109375), SC_(0.1229532018885143519530085872807521574186e-374), SC_(0.1535284080116869474721557382363960697841e-173), SC_(0.8008498458419165127509827916525553946866e-201), SC_(1) }, + { SC_(415.74554443359375), SC_(1.32294642925262451171875), SC_(0.12707412242889404296875), SC_(0.7549174221810121502717526237701650680409e-375), SC_(0.0003066699505629536665884706792860346267623), SC_(0.2461660885897725318891548391823367919716e-371), SC_(1) }, + { SC_(419.13214111328125), SC_(4420.99755859375), SC_(0.632396042346954345703125), SC_(0.7407617462496530577763132713638848532344e-620), SC_(0.5164426832634216817430840635953603860361e-2008), SC_(1), SC_(0.6971778522285748528924408977666419339682e-1388) }, + { SC_(419.34033203125), SC_(0.00151284574531018733978271484375), SC_(0.913384497165679931640625), SC_(0.8476478364612169062479548704808673361511e-18), SC_(654.4254343208734946159619247852681637715), SC_(0.1295255031370929110178745795102234278647e-20), SC_(0.9999999999999999999987047449686290708898) }, + { SC_(419.584075927734375), SC_(0.002538044936954975128173828125), SC_(0.3082362115383148193359375), SC_(0.1202488174477083325907762514356474369212e-216), SC_(387.4460414331091288271121581334002725513), SC_(0.3103627462624850874050904942689863752141e-219), SC_(1) }, + { SC_(446.7720947265625), SC_(0.13732771575450897216796875), SC_(0.632396042346954345703125), SC_(0.6470227542994612812986619257281890098288e-91), SC_(2.953024413658057743687435482679677536763), SC_(0.2191051151852693686381210108675725739574e-91), SC_(1) }, + { SC_(456.1903076171875), SC_(0.002997568808495998382568359375), SC_(0.221111953258514404296875), SC_(0.2932462781569434944772885666165452845617e-301), SC_(326.9738781432603861029409834126639297054), SC_(0.8968492523689018494217012933996865298417e-304), SC_(1) }, + { SC_(473.50396728515625), SC_(2391.615234375), SC_(0.1355634629726409912109375), SC_(0.6427607325399612250424567229505498036024e-564), SC_(0.1908855843450567141251098864376542233725e-558), SC_(0.3367245202995933628525893930444210636251e-5), SC_(0.9999966327547970040663714741060695557894) }, + { SC_(477.203277587890625), SC_(0.0049147461540997028350830078125), SC_(0.9688708782196044921875), SC_(0.1741668940985797760911155038012495611787e-7), SC_(196.8396382927676191756430337270244331433), SC_(0.8848161660616531178339587580130596657789e-10), SC_(0.9999999999115183833938346882166041241987) }, + { SC_(485.769073486328125), SC_(190.1673431396484375), SC_(0.632396042346954345703125), SC_(0.7802325302446099953553469952021295981017e-181), SC_(0.7885435919806277604143311907077514864473e-175), SC_(0.9894592590329194989765794932850304103993e-6), SC_(0.9999990105407409670805010234205067149696) }, + { SC_(488.2393798828125), SC_(0.434910595417022705078125), SC_(0.3082362115383148193359375), SC_(0.7152474532457840823266183808633084306729e-252), SC_(0.1379700680620020085460118932624223921791), SC_(0.518407697620588907258288335656687930697e-251), SC_(1) }, + { SC_(1082.14306640625), SC_(10693.6611328125), SC_(0.12707412242889404296875), SC_(0.2278754068927472156288012140413843328972e-1570), SC_(0.4710634212604126043266066650730864250032e-1603), SC_(0.9999999999999999999999999999999979328027), SC_(0.2067197279793011048484820322721178352804e-32) }, + { SC_(1097.736083984375), SC_(1.48078691959381103515625), SC_(0.1355634629726409912109375), SC_(0.1781516798617882923386756479578446275105e-955), SC_(0.2785129897942893166037431459860886839776e-4), SC_(0.6396530373444044954143234151352585767162e-951), SC_(1) }, + { SC_(1146.2520751953125), SC_(184.5145416259765625), SC_(0.9688708782196044921875), SC_(0.4677065383471207613026721995792121706691e-233), SC_(0.1170010114027342356906428338257499650131e-295), SC_(1), SC_(0.2501590245375163959038911002528123869642e-62) }, + { SC_(1256.7484130859375), SC_(114671.2265625), SC_(0.221111953258514404296875), SC_(0.3864052120281740910984826266649804985814e-3013), SC_(BOOST_MATH_SMALL_CONSTANT(0.1841074042592996185772811936640211942933e-13272)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4764620106777331318281507507630583790219e-10259)) }, + { SC_(1295.97900390625), SC_(0.00442600063979625701904296875), SC_(0.632396042346954345703125), SC_(0.254468554506769970848011093621387782895e-260), SC_(218.3284697331136530629038750535253642784), SC_(0.1165530793202710697732542983745490174379e-262), SC_(1) }, + { SC_(1309.38720703125), SC_(0.00044117416837252676486968994140625), SC_(0.3082362115383148193359375), SC_(0.621665421336862472879397361848521150676e-672), SC_(2258.937956171080727633037218705285702127), SC_(0.2752025214497660268024310700652187996244e-675), SC_(1) }, + { SC_(1394.074951171875), SC_(15.51703548431396484375), SC_(0.905801355838775634765625), SC_(0.1282445221776865687937653231808833904475e-77), SC_(0.5247043222849333125720311799101580200549e-37), SC_(0.2444129326383653883103923748144980641462e-40), SC_(1) }, + { SC_(1394.3763427734375), SC_(0.147156597449793480336666107177734375e-4), SC_(0.12707412242889404296875), SC_(0.4295749354510508788027152257959430409014e-1252), SC_(67947.00278024669441321354162427619743248), SC_(0.6322205805609652911187396252464186094979e-1257), SC_(1) }, + { SC_(1423.681640625), SC_(37.307399749755859375), SC_(0.3082362115383148193359375), SC_(0.2365255442145481725135864944077129293965e-736), SC_(0.1588073045974917207389001054879195033287e-75), SC_(0.1489387058196339233021721809171109690765e-660), SC_(1) }, + { SC_(1480.748046875), SC_(2957.284423828125), SC_(0.221111953258514404296875), SC_(0.7885727064770790413556014619422116655333e-1294), SC_(0.450979522013964292445694216615695511684e-1228), SC_(0.1748577635976698276519132508093443809805e-65), SC_(1) }, + { SC_(1499.490966796875), SC_(4.857861995697021484375), SC_(0.12707412242889404296875), SC_(0.137486782575950488326355414743930597725e-1346), SC_(0.7198001946235739559682607692261403186166e-14), SC_(0.191006870521687548278195292638440088557e-1332), SC_(1) }, + { SC_(1568.1090087890625), SC_(0.3394500163267366588115692138671875e-4), SC_(0.1355634629726409912109375), SC_(0.9395568605115892818305347167221015411794e-1364), SC_(29451.48480634567000911358526858687329636), SC_(0.3190185033758130479411737248140272384345e-1368), SC_(1) }, + { SC_(1614.361572265625), SC_(257.008087158203125), SC_(0.81474220752716064453125), SC_(0.1585702744226958009407406130989849499305e-333), SC_(0.113558977705796973767770949754211098822e-325), SC_(0.1396369317618244336614987327591678300512e-7), SC_(0.9999999860363068238175566338501267240832) }, + { SC_(1617.479248046875), SC_(0.032529197633266448974609375), SC_(0.12707412242889404296875), SC_(0.4777591022400609015805375048629480436748e-1452), SC_(23.74474755791250852883499903705096067287), SC_(0.2012062251135014928192024393427748953461e-1453), SC_(1) }, + { SC_(1644.535888671875), SC_(0.0342094860970973968505859375), SC_(0.221111953258514404296875), SC_(0.1202190328594983373413205725678074814986e-1080), SC_(22.26763753526301348896484161372508813266), SC_(0.5398822963105968038539413361276247656143e-1082), SC_(1) }, + { SC_(1654.0494384765625), SC_(34146.52734375), SC_(0.632396042346954345703125), SC_(0.3896459091825206171891077272890649849148e-2911), SC_(BOOST_MATH_SMALL_CONSTANT(0.5580096527651012054744158801308476347691e-15174)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1432094215837678627665949709074620682969e-12262)) }, + { SC_(1654.2796630859375), SC_(364.202728271484375), SC_(0.12707412242889404296875), SC_(0.1652798774335487385895757390454814471833e-1506), SC_(0.2262099992848952631445017227753709826679e-414), SC_(0.7306479729279809248231411847474679865719e-1092), SC_(1) }, + { SC_(1664.814208984375), SC_(0.00033929268829524517059326171875), SC_(0.913384497165679931640625), SC_(0.2155607436923262531841164263370337144072e-67), SC_(2939.324565586548760075341929333703526553), SC_(0.7333682922127744913958456803612633697384e-71), SC_(1) }, + { SC_(1673.0052490234375), SC_(0.106633078758022747933864593505859375e-4), SC_(0.221111953258514404296875), SC_(0.2616727938825976180789490877394296978506e-1099), SC_(93771.5309777213146595157831837880636062), SC_(0.2790535583180006757787084431103671419022e-1104), SC_(1) }, + { SC_(1681.7281494140625), SC_(0.00465255416929721832275390625), SC_(0.1355634629726409912109375), SC_(0.2172944533340070883814465445985034209869e-1462), SC_(207.0821002299898716371085681896459283656), SC_(0.1049315479670503418234586466438025686003e-1464), SC_(1) }, + { SC_(1700.0389404296875), SC_(23.1719760894775390625), SC_(0.9688708782196044921875), SC_(0.1695187186090668187830750244132033787937e-59), SC_(0.2302238057126964975244171118795249821807e-53), SC_(0.73632087378680280926584687853988044467e-6), SC_(0.9999992636791262131971907341531214601196) }, + { SC_(1722.9510498046875), SC_(3180.828857421875), SC_(0.913384497165679931640625), SC_(0.1755836602389347948809722822170864370393e-1381), SC_(0.2762808793333067821016101261999256588321e-3450), SC_(1), SC_(0.1573499942747194676521081383410127698125e-2068) }, + { SC_(1737.734619140625), SC_(0.000441255629993975162506103515625), SC_(0.1355634629726409912109375), SC_(0.5217499237895080815010214367184995363247e-1511), SC_(2258.23736731588023923074855386316185076), SC_(0.2310429945677744004420968030735982371954e-1514), SC_(1) }, + { SC_(1784.9957275390625), SC_(0.28711086997645907104015350341796875e-4), SC_(0.3082362115383148193359375), SC_(0.3696627964006476525140797301824218088004e-915), SC_(34821.68746476687688629313972925009458462), SC_(0.1061587830212646069186137725360432422791e-919), SC_(1) }, + { SC_(1848.123291015625), SC_(0.00048024553689174354076385498046875), SC_(0.221111953258514404296875), SC_(0.4020280761426968915026600499046717884357e-1214), SC_(2074.18543171540418571701655366550582641), SC_(0.1938245587860529094866465011198826538811e-1217), SC_(1) }, + { SC_(1848.65283203125), SC_(24.98059844970703125), SC_(0.8350250720977783203125), SC_(0.1759276691447393041938193480576385650064e-166), SC_(0.1223762749573607286345903162959711693756e-57), SC_(0.1437596210589326723100717819013761715731e-108), SC_(1) }, + { SC_(1870.2532958984375), SC_(0.13475679224939085543155670166015625e-4), SC_(0.8350250720977783203125), SC_(0.1168858965976695939868324029529178043302e-148), SC_(74199.65192080726603366419296630218839546), SC_(0.1575289015134748042787177027180545895155e-153), SC_(1) }, + { SC_(1914.6778564453125), SC_(240454.8125), SC_(0.1355634629726409912109375), SC_(0.1362123729045771190351072122214389258813e-4854), SC_(BOOST_MATH_SMALL_CONSTANT(0.1035613818291344775459851316322919807035e-16878)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.7602935006622626988376589038345728804959e-12024)) }, + { SC_(1961.91357421875), SC_(1.22353923320770263671875), SC_(0.913384497165679931640625), SC_(0.1888794324802670476538793010492694418827e-80), SC_(0.8538183807506730243916820891060685578539e-4), SC_(0.2212173416953206801610018852971508294782e-76), SC_(1) }, + { SC_(2004.1676025390625), SC_(0.1820631950977258384227752685546875e-4), SC_(0.905801355838775634765625), SC_(0.4062543973156701589290933207940784529363e-88), SC_(54917.8038997340536514817480325450015585), SC_(0.739749896149138434077240141578222282626e-93), SC_(1) }, + { SC_(2021.546875), SC_(1278.527099609375), SC_(0.9688708782196044921875), SC_(0.1483934995162793775206111848679747717182e-957), SC_(0.4350310933674388433268538805755337518644e-1957), SC_(1), SC_(0.2931604785826310014861243178722065932111e-999) }, + { SC_(2030.455078125), SC_(27725.34375), SC_(0.9688708782196044921875), SC_(0.1878636810444501212373007325979956102648e-3219), SC_(BOOST_MATH_SMALL_CONSTANT(0.1655258511735768636603108633056838283451e-41809)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.8810955382824211783756781228548296136572e-38590)) }, + { SC_(2031.1689453125), SC_(0.001671129255555570125579833984375), SC_(0.221111953258514404296875), SC_(0.3955790606046084527284621559758683305339e-1334), SC_(590.2616130712235793589422310423909958626), SC_(0.670175820084841146568352704004977826627e-1337), SC_(1) }, + { SC_(2160.7412109375), SC_(4.9396953582763671875), SC_(0.221111953258514404296875), SC_(0.1302217695091183525459476058687262124071e-1419), SC_(0.7363180529281059482774557084481883763268e-15), SC_(0.1768553262971989069540929369132310123363e-1404), SC_(1) }, + { SC_(2176.594482421875), SC_(0.0227449946105480194091796875), SC_(0.905801355838775634765625), SC_(0.1384115282058986953743777793463642081081e-95), SC_(36.44850067419443199002993066424687116033), SC_(0.3797454645477205307734827607870898832397e-97), SC_(1) }, + { SC_(2196.900146484375), SC_(0.4170066416263580322265625), SC_(0.221111953258514404296875), SC_(0.7941796897290817909621409737327488000876e-1443), SC_(0.08589885998744758438632829492273694921049), SC_(0.9245520718728227703934958204057092166778e-1442), SC_(1) }, + { SC_(2253.716064453125), SC_(0.00046744965948164463043212890625), SC_(0.905801355838775634765625), SC_(0.6842946162292510824869860090053164606198e-99), SC_(2130.986913486688919376966163667496177972), SC_(0.3211162921266458952099301467815703890065e-102), SC_(1) }, + { SC_(2265.716064453125), SC_(0.23549166144221089780330657958984375e-4), SC_(0.81474220752716064453125), SC_(0.5932439033278450915088762148901296798054e-204), SC_(42456.04677341868170596383947190243957006), SC_(0.139731310004884706834533685175899477175e-208), SC_(1) }, + { SC_(2269.919189453125), SC_(0.142603230415261350572109222412109375e-4), SC_(0.632396042346954345703125), SC_(0.2186312509126877416810650374743027230363e-454), SC_(70116.33463615652369843143732016405198974), SC_(0.3118121505455125538956625389017312039928e-459), SC_(1) }, + { SC_(2270.08251953125), SC_(1.9198791980743408203125), SC_(0.3082362115383148193359375), SC_(0.1661668332475144840023531864378149258297e-1163), SC_(0.3490115275353736740302437043085435552513e-6), SC_(0.4761070054646628541159883168154295504094e-1157), SC_(1) }, + { SC_(2303.33447265625), SC_(2434.39501953125), SC_(0.632396042346954345703125), SC_(0.2826270526839534849740276157087846557041e-1426), SC_(0.5413948517508386786713013774457472317632e-1519), SC_(1), SC_(0.191558043226757630502347773223457225048e-92) }, + { SC_(2341.2451171875), SC_(0.4919659197330474853515625), SC_(0.1355634629726409912109375), SC_(0.6250391372013374711516787461020583460369e-2035), SC_(0.03961556752030931944550141047861508128849), SC_(0.1577761411295963047970296614473158988214e-2033), SC_(1) }, + { SC_(2403.10693359375), SC_(0.0393528044223785400390625), SC_(0.81474220752716064453125), SC_(0.3118436767587323412962861794379243037092e-216), SC_(18.30891617470164827363948970052722957826), SC_(0.1703233953245263406203517612910504765217e-217), SC_(1) }, + { SC_(2438.42529296875), SC_(0.4890716075897216796875), SC_(0.81474220752716064453125), SC_(0.1037642856895648843730984337375533046527e-219), SC_(0.03994908265612262192819015004190041106887), SC_(0.2597413477119277572735736406645521482144e-218), SC_(1) }, + { SC_(2525.380859375), SC_(0.0469692982733249664306640625), SC_(0.1355634629726409912109375), SC_(0.9718816748681519785982031265848916843842e-2195), SC_(14.36749526206160737764778488127206016531), SC_(0.6764447505575134115382019671129730076222e-2196), SC_(1) }, + { SC_(2563.04833984375), SC_(444797.40625), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.4708659010959950717205430665225397776429e-6857)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6871523478649237942696144958600737267074e-472661)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1459337671862619267889334835943691340587e-465803)) }, + { SC_(2587.197265625), SC_(0.001075554522685706615447998046875), SC_(0.3082362115383148193359375), SC_(0.2444353237317730025383383576818923702803e-1325), SC_(921.3566322728319931387356299737332825061), SC_(0.2652993587605617297051874018503019594896e-1328), SC_(1) }, + { SC_(2595.52294921875), SC_(2311.214111328125), SC_(0.8350250720977783203125), SC_(0.2288949937715536177111141422371568975486e-1474), SC_(0.7549038718853678415354774527137853469774e-2015), SC_(1), SC_(0.3298035747513080940137389710734199967035e-540) }, + { SC_(2608.736083984375), SC_(0.0039381901733577251434326171875), SC_(0.913384497165679931640625), SC_(0.9903151303240974158935153837082905608973e-105), SC_(245.6220706381780385069217188919019587618), SC_(0.4031865409126506659492178070254142848986e-107), SC_(1) }, + { SC_(2609.55322265625), SC_(0.0041527482680976390838623046875), SC_(0.8350250720977783203125), SC_(0.1078073927655620034929749306816219287884e-206), SC_(232.5100497888069205730664581484971150885), SC_(0.4636676688318866487891112040740303654784e-209), SC_(1) }, + { SC_(2660.373779296875), SC_(2036.114990234375), SC_(0.905801355838775634765625), SC_(0.143128444481996215147192895235313137492e-1396), SC_(0.335806034392376310362878782680161159116e-2206), SC_(1), SC_(0.2346186571143910871009982672536508940281e-809) }, + { SC_(2676.193359375), SC_(457043.46875), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3920215987045519051917282021639556080379e-7141)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1599886413887271785369191300485834742603e-469026)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4081118028124338963951366996409686764645e-461885)) }, + { SC_(2690.582763671875), SC_(0.22973056137561798095703125), SC_(0.632396042346954345703125), SC_(0.2815358879783806589544950929902226594006e-538), SC_(0.646079473776380407645459179984928723535), SC_(0.4357604588995582842767141615286707798988e-538), SC_(1) }, + { SC_(2697.339111328125), SC_(0.3278447091579437255859375), SC_(0.913384497165679931640625), SC_(0.1417568117001298118698339763069731766565e-108), SC_(0.2045026287313223140065364339627882109421), SC_(0.6931784328619628121835127461938924376676e-108), SC_(1) }, + { SC_(2717.423095703125), SC_(0.278538644313812255859375), SC_(0.9688708782196044921875), SC_(0.2128517470081175567588832613689989800062e-39), SC_(0.357516946170104782730738707906199957098), SC_(0.5953612808799383608197051593765274145908e-39), SC_(0.9999999999999999999999999999999999999994) }, + { SC_(2760.142333984375), SC_(46082.70703125), SC_(0.913384497165679931640625), SC_(0.1606817442384679216447504369336462826297e-4609), SC_(BOOST_MATH_SMALL_CONSTANT(0.2029688686521188812468055426861266945045e-49071)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1263173172621854291637924813807736147072e-44461)) }, + { SC_(2810.3701171875), SC_(0.3556720912456512451171875), SC_(0.3082362115383148193359375), SC_(0.1691291405420655174976547197853551601938e-1439), SC_(0.1485995060620461974166844358868336437211), SC_(0.1138154123281186291924394687497950591179e-1438), SC_(1) }, + { SC_(2831.54541015625), SC_(2.64873027801513671875), SC_(0.905801355838775634765625), SC_(0.1569550910329461716749990717647089249125e-126), SC_(0.1065471925601074637322494217647203412137e-8), SC_(0.1473103957613914875972800446242766673551e-117), SC_(1) }, + { SC_(2853.04248046875), SC_(23.2325763702392578125), SC_(0.81474220752716064453125), SC_(0.2615085001757634387811519908910861141731e-273), SC_(0.112424123146530934341191800142750908027e-58), SC_(0.2326088857592595720025972574740611065982e-214), SC_(1) }, + { SC_(3066.23291015625), SC_(141.8632659912109375), SC_(0.3082362115383148193359375), SC_(0.5978071926368854746585028081658852840129e-1593), SC_(0.9314235640159916103657757020301440254905e-253), SC_(0.6418209885729514606575566400263059349643e-1340), SC_(1) }, + { SC_(3100.1806640625), SC_(1447.2921142578125), SC_(0.3082362115383148193359375), SC_(0.3881628201536046209044413810328915164758e-1819), SC_(0.295510977385263319211575272155145096904e-1236), SC_(0.1313530967912401170530178081319370684746e-582), SC_(1) }, + { SC_(3122.51708984375), SC_(0.032955713570117950439453125), SC_(0.913384497165679931640625), SC_(0.4696589450245759541144932092444991500489e-125), SC_(22.85746444773787096079013322854683509866), SC_(0.20547289752912929716559916852783376508e-126), SC_(1) }, + { SC_(3163.536376953125), SC_(298.2393798828125), SC_(0.905801355838775634765625), SC_(0.351222071570293015556072386272611379072e-443), SC_(0.687751514318488865930365167471866751403e-442), SC_(0.04858691928285678922119001974960641153162), SC_(0.9514130807171432107788099802503935884684) }, + { SC_(3185.797607421875), SC_(2162.649658203125), SC_(0.81474220752716064453125), SC_(0.3677754518960236492827038681381714969954e-1568), SC_(0.8248381901884188145509867859116301758571e-1870), SC_(1), SC_(0.224277663431874334141657029236919878297e-301) }, + { SC_(3222.951904296875), SC_(0.000114076086902059614658355712890625), SC_(0.12707412242889404296875), SC_(0.933100695906133383792779828454651317464e-2891), SC_(8757.428341063870418190564143042884979598), SC_(0.106549623881110557951346641461218442187e-2894), SC_(1) }, + { SC_(3231.15576171875), SC_(0.00042852279148064553737640380859375), SC_(0.8350250720977783203125), SC_(0.1867021500763222500441418898175790971479e-255), SC_(2324.956900363979379703392736889282702904), SC_(0.8030348865696969954787532787646234158509e-259), SC_(1) }, + { SC_(3233.27685546875), SC_(0.302093982696533203125), SC_(0.8350250720977783203125), SC_(0.7394495679867784030074674295563958853451e-256), SC_(0.2585220426817447194394678287236757523982), SC_(0.2860296013122110106293010342463747525215e-255), SC_(1) }, + { SC_(3309.57666015625), SC_(19694.05859375), SC_(0.905801355838775634765625), SC_(0.2208631038565245596877093778960712501508e-4116), SC_(BOOST_MATH_SMALL_CONSTANT(0.2132326548035614993901261756283994925164e-20351)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9654516806124399318694577899108144606729e-16235)) }, + { SC_(3389.960693359375), SC_(0.12216867506504058837890625), SC_(0.12707412242889404296875), SC_(0.2043860892710376191166579788352867691171e-3040), SC_(2.858776376468209088925102203244016022808), SC_(0.7149425570794046564076716911579132342617e-3041), SC_(1) }, + { SC_(3482.687744140625), SC_(0.003345853649079799652099609375), SC_(0.9688708782196044921875), SC_(0.1331946003311204974453353230024933321625e-49), SC_(290.2737663310366178992356910668771076101), SC_(0.4588585527884787012964148793593696016582e-52), SC_(1) }, + { SC_(3489.989013671875), SC_(0.000430709798820316791534423828125), SC_(0.9688708782196044921875), SC_(0.1065835473530261878862571077378414811744e-49), SC_(2313.030932747487101849276179998333520729), SC_(0.4607960310605231409250741425914671459289e-53), SC_(1) }, + { SC_(3568.2431640625), SC_(352075.78125), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2541234347003218620925586365830762003992e-8674)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8907337148236950426034394889044629146075e-275813)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3505122287813021112960779898848412225165e-267138)) }, + { SC_(3614.7607421875), SC_(3.387983798980712890625), SC_(0.632396042346954345703125), SC_(0.1066392343401903074570981794034797612126e-723), SC_(0.2591906791946646226214895922674915680462e-11), SC_(0.4114315941897707341535557667714226386279e-712), SC_(1) }, + { SC_(3614.799560546875), SC_(45861.59765625), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1002562797439735725293044078624918573793e-5619)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8157703784701342011174480634396233609118e-7350)), SC_(1), SC_(0.8136850684599338941739115897548011164103e-1730) }, + { SC_(3663.94873046875), SC_(125.4974365234375), SC_(0.1355634629726409912109375), SC_(0.5983916526263260783662182189142940149961e-3191), SC_(0.109238605784170592476358066692321757953e-239), SC_(0.5477840442312172452470686670755495488233e-2951), SC_(1) }, + { SC_(3684.808837890625), SC_(238875.625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1173669919221787144531594474279032100143e-8289)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2668463891339278217426918600732690621104e-104558)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2273606784698570314862915887926907619496e-96268)) }, + { SC_(3718.935546875), SC_(284.95684814453125), SC_(0.913384497165679931640625), SC_(0.1294003811275988797120708635387277581269e-450), SC_(0.7922660499004278048558506697943302441345e-447), SC_(0.0001633027815614288283942094303317874664245), SC_(0.9998366972184385711716057905696682125336) }, + { SC_(3726.241943359375), SC_(28.8971099853515625), SC_(0.632396042346954345703125), SC_(0.5586199653986671340101278306961205757215e-757), SC_(0.1225345553171307233831318418620512936238e-73), SC_(0.4558876995578163029911899103643809814477e-683), SC_(1) }, + { SC_(3736.384033203125), SC_(0.0043655070476233959197998046875), SC_(0.81474220752716064453125), SC_(0.4936522971383731596646688934747087886844e-335), SC_(220.4359571359634487110970810001367212539), SC_(0.2239436358533338865353329179187538484566e-337), SC_(1) }, + { SC_(3742.142822265625), SC_(0.02163856662809848785400390625), SC_(0.8350250720977783203125), SC_(0.1514811948436923300301275717145076367747e-295), SC_(38.21172611873917177520771747403712728379), SC_(0.3964259410134455872751960852083833476475e-297), SC_(1) }, + { SC_(3810.80908203125), SC_(139.7005615234375), SC_(0.632396042346954345703125), SC_(0.5924463400183605803006809012446629946778e-822), SC_(0.954841383577710103509948090108551124963e-263), SC_(0.6204657131622365690086051201735696798525e-559), SC_(1) }, + { SC_(3812.892822265625), SC_(0.290711686830036342144012451171875e-4), SC_(0.9688708782196044921875), SC_(0.3592448713049080325420212703865359978702e-54), SC_(34389.51983461813619743577281330947149361), SC_(0.1044634740562079483553913297843410433397e-58), SC_(1) }, + { SC_(3826.86083984375), SC_(0.00044492297456599771976470947265625), SC_(0.81474220752716064453125), SC_(0.4318212520262088654085243799487132645206e-343), SC_(2238.770836217429788151584057613326346436), SC_(0.1928831861843452721743690083042640483525e-346), SC_(1) }, + { SC_(3860.85009765625), SC_(408688.75), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.7343070404148790245024162966963883904056e-9503)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2677465506453831922845591502537589422007e-299600)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3646247903249136968170165929436587515456e-290097)) }, + { SC_(3962.59228515625), SC_(31.1610393524169921875), SC_(0.1355634629726409912109375), SC_(0.3384712230537736690981003779060463677214e-3444), SC_(0.3124137125523955424441891849418603640826e-79), SC_(0.1083407063948923075182335962189351711032e-3364), SC_(1) }, + { SC_(3970.181396484375), SC_(0.46857738494873046875), SC_(0.905801355838775634765625), SC_(0.2285235610597586946096424145268850967653e-173), SC_(0.03891888964637741735745142775849093350722), SC_(0.5871790360314910485880298902783526181515e-172), SC_(1) }, + { SC_(3974.75341796875), SC_(31.3806819915771484375), SC_(0.221111953258514404296875), SC_(0.1258218693853321148582037748838785943212e-2611), SC_(0.9749514582632188361913601678810860673319e-80), SC_(0.1290544963227928631200180913029430611917e-2531), SC_(1) }, + { SC_(3994.4755859375), SC_(1430.89794921875), SC_(0.1355634629726409912109375), SC_(0.2105984586363485191489122069253217127303e-3560), SC_(0.3229438169052957659815167182603135997404e-1360), SC_(0.6521210427698237770929763396330685024629e-2200), SC_(1) }, + { SC_(4007.785888671875), SC_(325072.90625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1535875454312946710181314646533980315805e-9403)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1039179881121639310008295742856771329998e-22781)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6766042638441034890994705226282583622852e-13378)) }, + { SC_(4032.44970703125), SC_(0.014052885584533214569091796875), SC_(0.3082362115383148193359375), SC_(0.3171277208553330764287268239017078454643e-2064), SC_(62.82230248061425754625616329120345086349), SC_(0.5048011746356996896875551850116190870035e-2066), SC_(1) }, + { SC_(4037.3095703125), SC_(16.8816509246826171875), SC_(0.12707412242889404296875), SC_(0.1811392346614968167108368205175892965523e-3621), SC_(0.1929835772220333361251284618212707307798e-47), SC_(0.9386251269095854120904261337078739905176e-3574), SC_(1) }, + { SC_(4055.591552734375), SC_(3.02400684356689453125), SC_(0.9688708782196044921875), SC_(0.4456144694071283666347523985176164644498e-62), SC_(0.2509527649774158192255909566659648745673e-10), SC_(0.1775690614316327156100048460672669241989e-51), SC_(1) }, + { SC_(4069.31787109375), SC_(325513.34375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.162173975418663081604091567477023934026e-9523)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1787797438774108221234499823359245468524e-54180)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1102394779531542139116411393051318030817e-44656)) }, + { SC_(4178.6318359375), SC_(46566.515625), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3679641802030769930157052195262162209034e-6270)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1287385523085865425356989676186722457646e-36773)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3498670773811097278706589044194044553718e-30503)) }, + { SC_(4236.8154296875), SC_(2638.01123046875), SC_(0.12707412242889404296875), SC_(0.6702401115167996316133372613571524749209e-3955), SC_(0.5590999583938067133692408291595627864472e-1989), SC_(0.1198784048280523078702343865750003226665e-1965), SC_(1) }, + { SC_(4264.560546875), SC_(235044.84375), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1079378039697116076905432865775769928285e-9295)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5187858929714358425321211767043278891815e-354237)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.4806341002796501070170458421211796097238e-344941)) }, + { SC_(4294.29833984375), SC_(39.17559051513671875), SC_(0.913384497165679931640625), SC_(0.7705234436368799337133459389811661281009e-213), SC_(0.3990173102068232973197151632490777618695e-97), SC_(0.1931052673472971015938167725950074066875e-115), SC_(1) }, + { SC_(4329.69384765625), SC_(0.0356505475938320159912109375), SC_(0.9688708782196044921875), SC_(0.2234805586966795339320542404669008076833e-61), SC_(20.40812812474043026599138750402293917848), SC_(0.1095056623178280685632856382784930975713e-62), SC_(1) }, + { SC_(4484.44482421875), SC_(0.0347605831921100616455078125), SC_(0.632396042346954345703125), SC_(0.2062703691196530763626473007312376014898e-895), SC_(21.071219100449385506787973991376012016), SC_(0.9789199577695718229676416274222490268767e-897), SC_(1) }, + { SC_(4571.689453125), SC_(0.30711162253282964229583740234375e-4), SC_(0.913384497165679931640625), SC_(0.3326135673042652498235499652967901833815e-182), SC_(32552.4473674992253698229040907974757233), SC_(0.1021777452089058092599760990417017662114e-186), SC_(1) }, + { SC_(4577.5576171875), SC_(462.9542236328125), SC_(0.221111953258514404296875), SC_(0.1390280064397496966216136027920506216894e-3053), SC_(0.3194354696778845146248942290654235433269e-672), SC_(0.4352303348777896430560533546618204120396e-2381), SC_(1) }, + { SC_(4655.2021484375), SC_(0.0004921201034449040889739990234375), SC_(0.632396042346954345703125), SC_(0.2140620923443938107709164196116768458034e-929), SC_(2023.021838799842632538718276005449325328), SC_(0.105813040788223082775212877148027545833e-932), SC_(1) }, + { SC_(4684.38916015625), SC_(48115.4140625), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.218241877450408797106019672016568921144e-6870)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2305962248621997562140158914137553109272e-35652)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1056608509586333829044418529250443856336e-28781)) }, + { SC_(4694.7021484375), SC_(15396.767578125), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1852561299193606023720471490013502627154e-5051)), SC_(0.5989612122653983882790191873744879415003e-4745), SC_(0.3092957041720324637368428164684280177988e-306), SC_(1) }, + { SC_(4730.45458984375), SC_(39692.90234375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2035281588348346104333793090830905189314e-6543)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4970853485809765005131726892117555907765e-8774)), SC_(1), SC_(0.2442341892280207038115598697680841789413e-2230) }, + { SC_(4742.923828125), SC_(4.058574676513671875), SC_(0.8350250720977783203125), SC_(0.3618704425719174888414811614820879760013e-377), SC_(0.7766753096761709008080229458823739563667e-14), SC_(0.4659224235192911276439005519311341553406e-363), SC_(1) }, + { SC_(4813.82861328125), SC_(366.26776123046875), SC_(0.8350250720977783203125), SC_(0.5627514171627524766139963270209350110119e-666), SC_(0.2634983998623451125939473126729828251295e-575), SC_(0.2135691971779490556767376018124259992261e-90), SC_(1) }, + { SC_(4827.74365234375), SC_(3.2813909053802490234375), SC_(0.81474220752716064453125), SC_(0.118872123863226120265418126982617028843e-434), SC_(0.214888648478858832158315123268435991217e-11), SC_(0.5531800991103585147606812339512713885385e-423), SC_(1) }, + { SC_(4931.3408203125), SC_(0.003918074071407318115234375), SC_(0.905801355838775634765625), SC_(0.2773594750858212051700506959595157168854e-214), SC_(246.3096931692891819165947525290236505784), SC_(0.1126059926903450938715209232296910374899e-216), SC_(1) }, + { SC_(4951.73876953125), SC_(0.0031504244543612003326416015625), SC_(0.12707412242889404296875), SC_(0.7744045211659641741396761663113692238095e-4440), SC_(308.4642224078795873590957835909065411626), SC_(0.2510516503732402840998214197696161679016e-4442), SC_(1) }, + { SC_(10727.1015625), SC_(20.6144351959228515625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1081001151781088997936050592587015059289e-5489)), SC_(0.6132368639454089451800706265258888733253e-65), SC_(BOOST_MATH_SMALL_CONSTANT(0.1762779140226835695604238411072259470264e-5424)), SC_(1) }, + { SC_(10865.9921875), SC_(0.472520351409912109375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.7347876450068710869507820874537195116341e-9434)), SC_(0.02321258677224304556295768537681135974067), SC_(BOOST_MATH_SMALL_CONSTANT(0.316547075177984627391986679086994910297e-9432)), SC_(1) }, + { SC_(11005.3994140625), SC_(0.00037013436667621135711669921875), SC_(0.913384497165679931640625), SC_(0.9943504329391992763799984620230626791599e-436), SC_(2691.856610960288035586597960035050675795), SC_(0.3693920504125502100678479520619804484949e-439), SC_(1) }, + { SC_(11199.677734375), SC_(2.693786144256591796875), SC_(0.8350250720977783203125), SC_(0.4846281950960513689799422380816610977361e-882), SC_(0.1900690857842524014984635567886583437591e-10), SC_(0.2549747598860728410190825408241079567128e-871), SC_(1) }, + { SC_(11672.794921875), SC_(151.0876007080078125), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.5737665427335230575523667671751519408751e-5994)), SC_(0.1066411814561236409434102801689669503075e-351), SC_(BOOST_MATH_SMALL_CONSTANT(0.5380346831299811573931802848624492607659e-5642)), SC_(1) }, + { SC_(11802.0439453125), SC_(0.0215594768524169921875), SC_(0.81474220752716064453125), SC_(0.3169522110929015172287107743853420674783e-1053), SC_(37.43972471890515899015607804901055773783), SC_(0.8465666173364163445990163934368844000655e-1055), SC_(1) }, + { SC_(12400.75390625), SC_(0.351217095158062875270843505859375e-4), SC_(0.913384497165679931640625), SC_(0.1106557530092916473993753368683133042285e-490), SC_(28462.41726270018294068189654350498967089), SC_(0.3887784793117530075305939975237267838173e-495), SC_(1) }, + { SC_(12677.8505859375), SC_(38.009876251220703125), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9770029059207102099490143013811735760616e-11009)), SC_(0.1492641238077330770184205950231500370148e-112), SC_(BOOST_MATH_SMALL_CONSTANT(0.6545463712225895469605766540125052659091e-10896)), SC_(1) }, + { SC_(13303.708984375), SC_(16683.587890625), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1933259776074049940506534044874302951426e-8945)), SC_(BOOST_MATH_SMALL_CONSTANT(0.417959873762397775217420769886278674411e-17692)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2161943671176804100612026364980929327471e-8746)) }, + { SC_(13483.087890625), SC_(3.4626166820526123046875), SC_(0.913384497165679931640625), SC_(0.5549699412116022378520103010599550872238e-537), SC_(0.159864431299585207613567103065375578284e-13), SC_(0.347150355272956950177545390769399859092e-523), SC_(1) }, + { SC_(13500.0146484375), SC_(0.0147750042378902435302734375), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1705934191262976500825609090119819526895e-8851)), SC_(58.32040248375219115941908275056004877979), SC_(BOOST_MATH_SMALL_CONSTANT(0.292510702706182848954962974234494531825e-8853)), SC_(1) }, + { SC_(14277.6669921875), SC_(275.66424560546875), SC_(0.632396042346954345703125), SC_(0.1187658379676931288134484422703850186642e-2964), SC_(0.5630317048018228546398578271006617933091e-594), SC_(0.2109398759515622504280670173384052208024e-2370), SC_(1) }, + { SC_(15026.18359375), SC_(191435.6875), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.2119395103570560832804887387441312169326e-23383)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4640380238764152752098128051205651494234e-197055)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2189483325193339055602886539896657820207e-173671)) }, + { SC_(15514.759765625), SC_(469.305145263671875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.6792116795333714050014097120690611996861e-13932)), SC_(0.1551617501782117229216160679908864375336e-920), SC_(BOOST_MATH_SMALL_CONSTANT(0.4377442757337164534594408118556290623672e-13011)), SC_(1) }, + { SC_(15687.4873046875), SC_(0.000288298237137496471405029296875), SC_(0.905801355838775634765625), SC_(0.6096020893529961277223878428636413874687e-677), SC_(3458.407825009435937506481330445155152371), SC_(0.1762666869258928091512979989687453621203e-680), SC_(1) }, + { SC_(17074.203125), SC_(0.00107910879887640476226806640625), SC_(0.8350250720977783203125), SC_(0.427457964385380263638580848973505633587e-1340), SC_(916.4262639951811326129298125584673977294), SC_(0.4664401067270459379336484710267800483659e-1343), SC_(1) }, + { SC_(17224.67578125), SC_(0.0225061289966106414794921875), SC_(0.632396042346954345703125), SC_(0.1955070422559485104388995940681677254754e-3431), SC_(35.22874831250725228282816191624496159701), SC_(0.5549644867357881744630482252448403510375e-3433), SC_(1) }, + { SC_(17285.642578125), SC_(252.595855712890625), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4579155613408594147943987501378120777984e-11360)), SC_(0.1329327800877027982650034796865467411697e-574), SC_(BOOST_MATH_SMALL_CONSTANT(0.3444715148804894150399635636083692920444e-10785)), SC_(1) }, + { SC_(17364.01171875), SC_(0.0032844119705259799957275390625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4534117685393013223625663165569470156362e-15561)), SC_(294.3053538476502534219745888362523594316), SC_(BOOST_MATH_SMALL_CONSTANT(0.154061678665218540123085427908925128439e-15563)), SC_(1) }, + { SC_(18709.283203125), SC_(311063.03125), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1623326155096450649755434641645297779583e-31206)), SC_(BOOST_MATH_SMALL_CONSTANT(0.199146209059788229813537624593649188508e-244902)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1226778786472246969416903414773867933151e-213695)) }, + { SC_(18712.064453125), SC_(125.128173828125), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.296851932434343132924442873205905982913e-16251)), SC_(0.5056024816465771861278220568508739133031e-327), SC_(BOOST_MATH_SMALL_CONSTANT(0.587125149124261132925097733767024791782e-15924)), SC_(1) }, + { SC_(18950.81640625), SC_(0.02248309552669525146484375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.8531376165533034514490752209777736500755e-16983)), SC_(35.19754234719377982457251861372588583048), SC_(BOOST_MATH_SMALL_CONSTANT(0.2423855643493024101837650235108650041103e-16984)), SC_(1) }, + { SC_(18966.861328125), SC_(0.00021034784731455147266387939453125), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.4066547098951612620721277536808353340447e-9698)), SC_(4743.61407389308172270355006936173880486), SC_(BOOST_MATH_SMALL_CONSTANT(0.8572676941263477256811863073166251697026e-9702)), SC_(1) }, + { SC_(19108.51171875), SC_(1.5829699039459228515625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8971659142595029657488728896907354438759e-9771)), SC_(0.1489910955347552015717735020626187042582e-6), SC_(BOOST_MATH_SMALL_CONSTANT(0.6021607607081597568215929208053439043328e-9764)), SC_(1) }, + { SC_(19766.611328125), SC_(1197.8387451171875), SC_(0.8350250720977783203125), SC_(0.3185318408399375391201349006284076382164e-2488), SC_(0.6244715042856530734735781967451609038198e-1995), SC_(0.5100822674115662637340284485698509200389e-493), SC_(1) }, + { SC_(19945.158203125), SC_(1.323333263397216796875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1341686475958076796448446957548106673943e-17313)), SC_(0.18252239404929000361227231329604692237e-5), SC_(BOOST_MATH_SMALL_CONSTANT(0.7350804721505875082771016025446126632403e-17308)), SC_(1) }, + { SC_(20612.880859375), SC_(0.0045445901341736316680908203125), SC_(0.913384497165679931640625), SC_(0.5026950516660181375002184069309382660166e-814), SC_(209.7816273601100812081722221573307482765), SC_(0.2396277777000434612070453109788469106733e-816), SC_(1) }, + { SC_(21002.7890625), SC_(3.6717395782470703125), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1662262372153926156509978579564012413128e-18821)), SC_(0.5439464377981884946280312356646226100979e-15), SC_(BOOST_MATH_SMALL_CONSTANT(0.3055930247254690249520818325673208514748e-18806)), SC_(1) }, + { SC_(21820.291015625), SC_(4256.572265625), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1236249902866452151132958091361628613911e-5040)), SC_(BOOST_MATH_SMALL_CONSTANT(0.137446002602018047941490836678526755619e-5307)), SC_(1), SC_(0.1111797883933713598996484573949101107612e-266) }, + { SC_(22356.583984375), SC_(457832.53125), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.2427624054077081053070462603157523396911e-39260)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2811118692419803409475001024557664483642e-487288)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1157971180792454683526657616202966016306e-448027)) }, + { SC_(22697.115234375), SC_(0.3655127875390462577342987060546875e-4), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2422351225756202534756635143055666957355e-20339)), SC_(27348.21883352735268633229163531358469692), SC_(BOOST_MATH_SMALL_CONSTANT(0.8857436897449929818388276572775353757861e-20344)), SC_(1) }, + { SC_(23467.970703125), SC_(2143.580810546875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1302191943227601633813919978470740088649e-5605)), SC_(0.4256209373395801514253968777699399700945e-3201), SC_(0.3059511008474313899338424120814023168547e-2404), SC_(1) }, + { SC_(23857.951171875), SC_(344059.4375), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1820268245405173677104573378456949715364e-38365)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9855951801856089118034713573367093594693e-52980)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5414560093950467116381035650090584886562e-14614)) }, + { SC_(23897.50390625), SC_(0.0264662839472293853759765625), SC_(0.905801355838775634765625), SC_(0.6537725144721824905665984618756409566583e-1030), SC_(28.51287213248977398680191123392335013322), SC_(0.2292903048960905878796791478694241369087e-1031), SC_(1) }, + { SC_(24178.228515625), SC_(454.8056640625), SC_(0.905801355838775634765625), SC_(0.1785916433983294692635116615174974457353e-1508), SC_(0.7879600822752658967292127616670030077666e-985), SC_(0.2266506228115503474591694981080031053324e-523), SC_(1) }, + { SC_(24181.37109375), SC_(463750.875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1849255643263548665067441360065463603155e-41792)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3146356315397489737950931076379571144576e-49041)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1701417717371314989041581514224517991596e-7248)) }, + { SC_(24202.947265625), SC_(0.000431136810220777988433837890625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9414521021069579791689130150635411436057e-21009)), SC_(2308.802802750210144576162773483800451287), SC_(BOOST_MATH_SMALL_CONSTANT(0.4077663544870591868832466457655898176825e-21012)), SC_(1) }, + { SC_(24814.5078125), SC_(0.0022801845334470272064208984375), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3876201512836319382668825596201791404601e-16267)), SC_(427.9958316303507195186244355967105304424), SC_(BOOST_MATH_SMALL_CONSTANT(0.9056633794938679563008497581469693912042e-16270)), SC_(1) }, + { SC_(24942.55078125), SC_(0.03099299408495426177978515625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1225881087866866874909840493874552423954e-21650)), SC_(23.17560209270867089614435392066751649514), SC_(BOOST_MATH_SMALL_CONSTANT(0.5289532858576926135978436656838263708535e-21652)), SC_(1) }, + { SC_(25332.25390625), SC_(0.1855850517749786376953125), SC_(0.8350250720977783203125), SC_(0.507984703157042916373804360059617322265e-1987), SC_(0.7568185447119811054787401996866618079721), SC_(0.671210697341413957308514820423884955283e-1987), SC_(1) }, + { SC_(25354.7421875), SC_(0.02945673465728759765625), SC_(0.9688708782196044921875), SC_(0.6813421592537537934114140295569834417605e-351), SC_(24.77466284487784724303745251655406030537), SC_(0.2750157140461836973908132806701626197706e-352), SC_(1) }, + { SC_(25489.81640625), SC_(0.00049681845121085643768310546875), SC_(0.8350250720977783203125), SC_(0.3241670731870165278670277444065337162173e-1999), SC_(2002.113381083162552722948484655907114959), SC_(0.1619124452440545751504157926476730166189e-2002), SC_(1) }, + { SC_(26425.1640625), SC_(307.398162841796875), SC_(0.913384497165679931640625), SC_(0.240837043913045867013176071571758822933e-1369), SC_(0.1895505175800123992274428762526147765707e-729), SC_(0.1270569170624314329751710900359604903738e-639), SC_(1) }, + { SC_(26463.7421875), SC_(19163.873046875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3811618166243515739079675218011879119595e-24845)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6205606313458244734681171673982181745552e-13482)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6142217172199869571772476440726756588e-11363)), SC_(1) }, + { SC_(26537.091796875), SC_(270229.28125), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.7840170224157673881647928730837906756439e-38821)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1472617967355003738702596497793040110774e-200234)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1878298461961286974428732052785606229546e-161413)) }, + { SC_(26844.490234375), SC_(0.000473332009278237819671630859375), SC_(0.9688708782196044921875), SC_(0.2465535777981155170717536487881773845459e-371), SC_(2101.934770935125324206281681756040345732), SC_(0.1172983963191335457974021591141553130826e-374), SC_(1) }, + { SC_(27758.564453125), SC_(0.18002581782639026641845703125e-4), SC_(0.905801355838775634765625), SC_(0.7572136353491294299735386009252448431571e-1196), SC_(55536.78080233768051407979393020163072174), SC_(0.1363445313915740025302288081798092363667e-1200), SC_(1) }, + { SC_(28065.55078125), SC_(3.5871093273162841796875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2831918939336931775182831068832737617574e-18398)), SC_(0.4052213968913740427625123980894064134795e-15), SC_(BOOST_MATH_SMALL_CONSTANT(0.6988572077046741208424416664469332024614e-18383)), SC_(1) }, + { SC_(28187.794921875), SC_(384992.25), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.4195483788367892268291818901823265579288e-44685)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4922837564878794849276603313467462725246e-172940)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1173365888941702808662502166307690959849e-128254)) }, + { SC_(30225.46484375), SC_(0.1016343958326615393161773681640625e-4), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.5735445758829078877322279214267862293538e-6019)), SC_(98380.99406981288047553435885352296888513), SC_(BOOST_MATH_SMALL_CONSTANT(0.5829831069565231146984689007106713301415e-6024)), SC_(1) }, + { SC_(30472.796875), SC_(42078.734375), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.9483704074780328821085578083750287302226e-21437)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2655891017223718785870199558721735657561e-35320)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.2800478585457378085797559061293897649618e-13883)) }, + { SC_(31113.873046875), SC_(2243.24951171875), SC_(0.9688708782196044921875), SC_(0.1738403130458333833378719546384908867263e-3571), SC_(0.2483709955132829075876446969586895664448e-3810), SC_(1), SC_(0.1428730719368868973678261648125656163208e-238) }, + { SC_(31202.068359375), SC_(0.3144348561763763427734375), SC_(0.9688708782196044921875), SC_(0.1014606551373880184881575878619157270648e-431), SC_(0.1099900996643561454577515798148436940672), SC_(0.9224526157081734634028730038649490917215e-431), SC_(1) }, + { SC_(31365.501953125), SC_(42.0266265869140625), SC_(0.8350250720977783203125), SC_(0.2922365214408881636459506278468027347876e-2492), SC_(0.3844722578182003219478844936798405179602e-139), SC_(0.7600978106958076047155690712834246165663e-2353), SC_(1) }, + { SC_(31426.568359375), SC_(3.5692617893218994140625), SC_(0.905801355838775634765625), SC_(0.3636457231475868049124966817745055235491e-1357), SC_(0.3184250129085964454474326617632075570021e-15), SC_(0.1142013687385704574933108386765313909448e-1341), SC_(1) }, + { SC_(32071.69921875), SC_(37284.46484375), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1415938233451437073644891654526396338438e-20794)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5554990610707697922721920634839578452726e-22591)), SC_(1), SC_(0.3923187099176681260861333290360925901128e-1796) }, + { SC_(32841.03515625), SC_(0.00211882009170949459075927734375), SC_(0.81474220752716064453125), SC_(0.1061606319772079274790936641952283975456e-2925), SC_(461.1125150121719098661013588359762674941), SC_(0.2302271756263341129412695244629710642605e-2928), SC_(1) }, + { SC_(33019.796875), SC_(0.3179961740970611572265625), SC_(0.913384497165679931640625), SC_(0.9925450963325257937067158349703657211857e-1303), SC_(0.1028972504039433204138221286589713750593), SC_(0.9645982690850294997294805844164437309475e-1302), SC_(1) }, + { SC_(33341.328125), SC_(44482.7265625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.4158755572080177693624137640217208898905e-24164)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2696826538514875460811876828109498848842e-23081)), SC_(0.1542092349169174552498114444757830719228e-1082), SC_(1) }, + { SC_(33342.82421875), SC_(33088.58203125), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.4511196723857646439931417508868110380746e-19999)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4047086548745808875099380119057871658307e-27199)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.8971203865578789500681498288400685913727e-7200)) }, + { SC_(34105.53125), SC_(27232.5546875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.858632509974686789044520831374440759616e-31326)), SC_(BOOST_MATH_SMALL_CONSTANT(0.193563172259515494452895394204534986601e-18298)), SC_(BOOST_MATH_SMALL_CONSTANT(0.443592910754476814082200170995698799272e-13027)), SC_(1) }, + { SC_(34199.625), SC_(0.000267275259830057621002197265625), SC_(0.81474220752716064453125), SC_(0.132643294506611330073418825528524868617e-3046), SC_(3730.460399129728567420227043754630634483), SC_(0.3555681613388937499195389288597612766175e-3050), SC_(1) }, + { SC_(34657.7421875), SC_(103.4410247802734375), SC_(0.81474220752716064453125), SC_(0.4146866532289065093188708344417768991589e-3163), SC_(0.159293278333510523988593026460220721103e-306), SC_(0.2603290343241488086207617300289569355598e-2856), SC_(1) }, + { SC_(34691.16796875), SC_(0.1412391960620880126953125), SC_(0.905801355838775634765625), SC_(0.5809634550216812209088028784875721779853e-1494), SC_(1.513770318715366625025854737630098626195), SC_(0.3837857354177119719624259539664969858835e-1494), SC_(1) }, + { SC_(35037.50390625), SC_(11.6895084381103515625), SC_(0.9688708782196044921875), SC_(0.1392515511651523124059194101920454621853e-501), SC_(0.141084174330549940047030109734968874949e-45), SC_(0.9870104271149227190945465193986459578784e-456), SC_(1) }, + { SC_(35093.859375), SC_(0.19068343937397003173828125), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2564880079031630591421972951902695966518e-31446)), SC_(0.6563018747289881100024884524131931727022), SC_(BOOST_MATH_SMALL_CONSTANT(0.3908079769070851238843257638900015112909e-31446)), SC_(1) }, + { SC_(35247.55078125), SC_(0.00044111299212090671062469482421875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.524416373059227452327029532233653483142e-31584)), SC_(2255.97273393481107215818585100800014121), SC_(BOOST_MATH_SMALL_CONSTANT(0.2324568755512189035231803971642924529304e-31587)), SC_(1) }, + { SC_(35426.453125), SC_(0.25611940145608969032764434814453125e-4), SC_(0.81474220752716064453125), SC_(0.8803503845736481738526768470619380243194e-3156), SC_(39033.23844697706670690655117716505316948), SC_(0.2255386484955687817889300452155100323305e-3160), SC_(1) }, + { SC_(35604.6640625), SC_(0.0404350571334362030029296875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2995110884485993993638424385068457774754e-18202)), SC_(15.83573475873814293328067317403119221055), SC_(BOOST_MATH_SMALL_CONSTANT(0.1891362118725368736323990363026947714916e-18203)), SC_(1) }, + { SC_(36098.04296875), SC_(0.00035800389014184474945068359375), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.9429878307894887982229671727138664099931e-7188)), SC_(2782.216745908151514947359188102505687192), SC_(BOOST_MATH_SMALL_CONSTANT(0.3389339928948222109519281563909451175851e-7191)), SC_(1) }, + { SC_(36424.671875), SC_(0.020534180104732513427734375), SC_(0.913384497165679931640625), SC_(0.1998363537649993427821455663211980779133e-1436), SC_(38.80250984361917484278570877400762258836), SC_(0.5150088346614031104127057660043541503683e-1438), SC_(1) }, + { SC_(36495.27734375), SC_(2484.92626953125), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2891129665563148807756785314594203541986e-5070)), SC_(0.7483339000415565880282347712036234787721e-4016), SC_(0.3863422017100385497186393404241853178733e-1054), SC_(1) }, + { SC_(37065.7890625), SC_(2610.560791015625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3309451879311226443563015822821123087694e-32337)), SC_(0.8761279815637359392108508293101243357992e-4182), SC_(BOOST_MATH_SMALL_CONSTANT(0.3777361240539802091868865758227080822171e-28155)), SC_(1) }, + { SC_(37207.1328125), SC_(3485.194091796875), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3056312468045395693244553222208424065696e-5168)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9580419324916712053803069946390067494199e-5168)), SC_(0.2418594078057093959803756377889539827651), SC_(0.7581405921942906040196243622110460172349) }, + { SC_(37353.54296875), SC_(12.2282161712646484375), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.6127780828699515822469574632599335812528e-7443)), SC_(0.8550114765655429655165308741366514996961e-48), SC_(BOOST_MATH_SMALL_CONSTANT(0.7166898920835451515299975390148663687493e-7395)), SC_(1) }, + { SC_(38782.8046875), SC_(35499.7734375), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3154615245272554347164260433201874137959e-22331)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2883157131832080481457769642315887354047e-39245)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.9139488995219699877558490838998145341563e-16914)) }, + { SC_(38926.94140625), SC_(0.02303241193294525146484375), SC_(0.8350250720977783203125), SC_(0.1499284844117009513270765293679465581648e-3051), SC_(33.60081130975603606394362964314838746437), SC_(0.4462049532957825788106406576933266995857e-3053), SC_(1) }, + { SC_(39031.0078125), SC_(0.00275336927734315395355224609375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1333042063563220018903085469232404224353e-33877)), SC_(352.2136571794090544917638968073346300555), SC_(BOOST_MATH_SMALL_CONSTANT(0.3784754044571874378745530172666885958958e-33880)), SC_(1) }, + { SC_(39044.17578125), SC_(143514), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2445319239265617598939834130184288746047e-41153)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9420859125561112963495678455294030032674e-216793)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3852609088533733238151472859262645829194e-175639)) }, + { SC_(39369.1875), SC_(0.004928432404994964599609375), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.874124682703121149706250853273509037208e-7839)), SC_(192.0514067601594880194418396360822303492), SC_(BOOST_MATH_SMALL_CONSTANT(0.4551514083907537411987592363241931698251e-7841)), SC_(1) }, + { SC_(39833.8984375), SC_(0.413198292255401611328125), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1890257504908931707894003312804909768565e-7931)), SC_(0.02696284642773986106932257472445046354622), SC_(BOOST_MATH_SMALL_CONSTANT(0.7010600716711425574687549185433903929967e-7930)), SC_(1) }, + { SC_(40020.80078125), SC_(38980.671875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1340168901428884537927946857577049637898e-30463)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2583038216475443404512247159191887250728e-23780)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5188343296203900135697408474883260619761e-6683)), SC_(1) }, + { SC_(40673.2578125), SC_(3205.197998046875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6802197549545965984035196789549544466361e-21306)), SC_(BOOST_MATH_SMALL_CONSTANT(0.258943490416802222895137511807214102674e-4983)), SC_(BOOST_MATH_SMALL_CONSTANT(0.262690424794883651458380029209063549487e-16322)), SC_(1) }, + { SC_(41349.45703125), SC_(38.29947662353515625), SC_(0.81474220752716064453125), SC_(0.6425739337486675098510616911375013747856e-3711), SC_(0.6234000656743663181579777483541679566988e-133), SC_(0.1030756923410907502062264526828802816786e-3577), SC_(1) }, + { SC_(41562.9375), SC_(0.26003241146099753677845001220703125e-4), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4451628432615203302839774316230569936245e-27244)), SC_(38445.53395226496611584481972736517371363), SC_(BOOST_MATH_SMALL_CONSTANT(0.1157905216804237334489568087834910631462e-27248)), SC_(1) }, + { SC_(42022.34375), SC_(0.4905900061130523681640625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1417209460579730791079348883478424448945e-21482)), SC_(0.009737853159983752988806478754785472880161), SC_(BOOST_MATH_SMALL_CONSTANT(0.1455361297091170471303137485376139560109e-21480)), SC_(1) }, + { SC_(42083.65625), SC_(4.19858837127685546875), SC_(0.9688708782196044921875), SC_(0.3768163821884418241224052326287648485896e-587), SC_(0.2978888719443599109772257168060445641745e-18), SC_(0.1264956222529937610270595263016474793515e-568), SC_(1) }, + { SC_(42177.98046875), SC_(2.612369060516357421875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.6282772223306738618674595731246666952309e-8399)), SC_(0.1193491464720943905209382805095579667749e-11), SC_(BOOST_MATH_SMALL_CONSTANT(0.5264195353735306700582799804942401915427e-8387)), SC_(1) }, + { SC_(42524.5078125), SC_(0.2802095115184783935546875), SC_(0.81474220752716064453125), SC_(0.1193524162120151495829870822995328691468e-3787), SC_(0.1622187320901969961897451599226976127073), SC_(0.7357499018402678581539835169646052661627e-3787), SC_(1) }, + { SC_(42581.58984375), SC_(0.37374455132521688938140869140625e-4), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.4880975703369441798957686255404298423277e-36959)), SC_(26745.00891443861029221559998579428768041), SC_(BOOST_MATH_SMALL_CONSTANT(0.1825004328465334394009465665206216869516e-36963)), SC_(1) }, + { SC_(43662.40625), SC_(0.0046618557535111904144287109375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8908986356863706658573384931232469735442e-22321)), SC_(203.5395372687220792563282284831229950607), SC_(BOOST_MATH_SMALL_CONSTANT(0.4377029876559884758218235401695605907255e-22323)), SC_(1) }, + { SC_(44090.55859375), SC_(0.10735684554674662649631500244140625e-4), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1290253648236426039020448598282133966015e-22539)), SC_(93136.0266985255526497037479478000941428), SC_(BOOST_MATH_SMALL_CONSTANT(0.1385343238243222368094895425484609570952e-22544)), SC_(1) }, + { SC_(44669.99609375), SC_(0.4677930337493307888507843017578125e-4), SC_(0.9688708782196044921875), SC_(0.2261282329889107346362825204067670515544e-616), SC_(21365.69378087691196235245281532328438315), SC_(0.1058370653946673552698442997883654609519e-620), SC_(1) }, + { SC_(45414.3828125), SC_(48.6922149658203125), SC_(0.905801355838775634765625), SC_(0.124686350330629295784253960815731543812e-2004), SC_(0.6241983475781985591204988281618446972134e-166), SC_(0.1997543742536242320628759391631820477378e-1838), SC_(1) }, + { SC_(45461.75390625), SC_(459125.75), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.9597732801097847670639475789719189038193e-66349)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1694625349339944115847813449396605029185e-96720)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1765651726776663809923506725204795102396e-30371)) }, + { SC_(45960.19921875), SC_(49.68207550048828125), SC_(0.913384497165679931640625), SC_(0.1801858939735704757188458424142507079542e-1864), SC_(0.3958744688593045786782344257924267795688e-169), SC_(0.4551591682402971196985143943698001164995e-1695), SC_(1) }, + { SC_(46422.796875), SC_(0.11781878769397735595703125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3128018409960626982809502420265694906417e-30429)), SC_(2.260043414599503805378278737013694930524), SC_(BOOST_MATH_SMALL_CONSTANT(0.1384052354815022296405819797968850482285e-30429)), SC_(1) }, + { SC_(46983.234375), SC_(0.0014450610615313053131103515625), SC_(0.9688708782196044921875), SC_(0.3631579655779383458200579071191530299984e-648), SC_(680.7710207928221035284165757961012688395), SC_(0.5334509761520204264540019443624319725709e-651), SC_(1) }, + { SC_(47575.9296875), SC_(42.76256561279296875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1281007314819202426546706305153763033198e-31189)), SC_(0.5446274668111871054623429242369010326878e-149), SC_(BOOST_MATH_SMALL_CONSTANT(0.2352079894757319391053891898620243458818e-31040)), SC_(1) }, + { SC_(47586.44140625), SC_(449.601318359375), SC_(0.8350250720977783203125), SC_(0.1717885779363308110563529610640180833346e-4081), SC_(0.4055579985382530879990057548669177197369e-1107), SC_(0.4235857227708636823447501475688153166501e-2974), SC_(1) }, + { SC_(47823.16796875), SC_(2585.581787109375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.8873433122876154215235504655591740863431e-43004)), SC_(0.6899131916765299728241300702373898959911e-4430), SC_(BOOST_MATH_SMALL_CONSTANT(0.1286166611963627694262326368951666529208e-38573)), SC_(1) }, + { SC_(48035.7734375), SC_(0.4999766315449960529804229736328125e-4), SC_(0.8350250720977783203125), SC_(0.7526697336024885931646505148613916252162e-3765), SC_(19989.58114015959355372790956380367867298), SC_(0.3765310179963477718170777308052048038044e-3769), SC_(1) }, + { SC_(48295.36328125), SC_(0.0023451945744454860687255859375), SC_(0.905801355838775634765625), SC_(0.1702399821655822132964248219814399971084e-2078), SC_(415.1934803800744794350002685129457832461), SC_(0.4100256632395622464631609228605330128581e-2081), SC_(1) }, + { SC_(48850.35546875), SC_(289555.46875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1294773939114091904070677516334875748016e-60717)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1910549841723689253904285694417754227142e-60668)), SC_(0.6776970225209894702083863339546688639084e-49), SC_(1) }, + { SC_(49373.98046875), SC_(222.311065673828125), SC_(0.9688708782196044921875), SC_(0.6106410258636356710957886396350286515268e-1016), SC_(0.6310884578023346318794902107496885899933e-619), SC_(0.9675997371114916339117077163833508385771e-397), SC_(1) }, + { SC_(49444.171875), SC_(4.673758029937744140625), SC_(0.81474220752716064453125), SC_(0.1214094340613585096764415398046112492438e-4406), SC_(0.1709328901299858846919930075689684944451e-20), SC_(0.710275441835873295036486702114009786702e-4386), SC_(1) }, + { SC_(49532.08984375), SC_(1899.7972412109375), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3285641253811721046295585659566089755466e-32673)), SC_(0.4154294863215141418765544887779036460343e-3532), SC_(BOOST_MATH_SMALL_CONSTANT(0.7909022739105375845300408580947121495777e-29141)), SC_(1) }, + { SC_(49565.796875), SC_(27.7097911834716796875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4032053953934215782773620452150408686366e-44414)), SC_(0.3267223807451580153760937282811257617716e-102), SC_(BOOST_MATH_SMALL_CONSTANT(0.1234091752373462195294816501093343638153e-44311)), SC_(1) }, + { SC_(49846.2421875), SC_(49663.23828125), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.862576376721314951484184712102874499511e-29957)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3356710975950936547856944082829601692435e-75523)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.3891494210298130852536543532323001074747e-45566)) }, + { SC_(49880.1328125), SC_(0.00046944446512497961521148681640625), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3811422605486493883342432112209493755269e-32695)), SC_(2118.813642454311489365540333218677987084), SC_(BOOST_MATH_SMALL_CONSTANT(0.1798847491406352196962183911656597563472e-32698)), SC_(1) }, + { SC_(103920.8984375), SC_(0.111212420961237512528896331787109375e-4), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.402724510532558600508958354716027788154e-68113)), SC_(89905.88600644825125958799928771679492755), SC_(BOOST_MATH_SMALL_CONSTANT(0.4479400942711073418907433981637247217451e-68118)), SC_(1) }, + { SC_(112769.0546875), SC_(421.523895263671875), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1489938256413702851146155215564486467662e-5281)), SC_(0.3067957656567422861129083322098226909147e-1207), SC_(0.4856449870565412989838005491171072436419e-4074), SC_(1) }, + { SC_(116919.109375), SC_(234197.234375), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2064958853295781582868627436497981502063e-97026)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2390507369881614656651790264224788501208e-192438)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.115765375473038638637891869996823133935e-95411)) }, + { SC_(117063.9375), SC_(0.4761638047057203948497772216796875e-4), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3557072314175628838245768895584561334308e-9170)), SC_(20988.93220124087773696925323411944285242), SC_(BOOST_MATH_SMALL_CONSTANT(0.1694737150070613253156363270278658624233e-9174)), SC_(1) }, + { SC_(117666.234375), SC_(0.003791221417486667633056640625), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1521718998877627133096948856559430340768e-5059)), SC_(251.797624834930194264630014030887089571), SC_(BOOST_MATH_SMALL_CONSTANT(0.6043420782365256334800931559435553635151e-5062)), SC_(1) }, + { SC_(119021.8671875), SC_(1724.5032958984375), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.506791007427913391904456640012169560459e-10673)), SC_(0.1395293850133434234550711107533045517001e-3926), SC_(BOOST_MATH_SMALL_CONSTANT(0.3632145353320722644944857764132454568671e-6746)), SC_(1) }, + { SC_(121846.6484375), SC_(0.0102547816932201385498046875), SC_(0.9688708782196044921875), SC_(0.8947177053524591999969874426003937360555e-1677), SC_(85.97781064589153929768992522596508618429), SC_(0.1040637925798606503865143332970238762629e-1678), SC_(1) }, + { SC_(139635.859375), SC_(0.00359443644993007183074951171875), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1200411021373305972085728293542348706339e-10937)), SC_(266.0598728377260065511100686016954842333), SC_(BOOST_MATH_SMALL_CONSTANT(0.4511807844490157479272247531660627407605e-10940)), SC_(1) }, + { SC_(139638.109375), SC_(0.00364904291927814483642578125), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7124698785671631677263569877949201217441e-91522)), SC_(261.9007208942754265545010052942457193583), SC_(BOOST_MATH_SMALL_CONSTANT(0.2720381509964511867366632709770210627566e-91524)), SC_(1) }, + { SC_(140613.5625), SC_(0.04485572874546051025390625), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1213996798462934451546061797201029097163e-6045)), SC_(12.78564295017450834301178895528450273433), SC_(BOOST_MATH_SMALL_CONSTANT(0.9495000002689461028413898434572917976252e-6047)), SC_(1) }, + { SC_(143155.5625), SC_(0.00386732374317944049835205078125), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4964902710277630208125952137476169753569e-128264)), SC_(246.4257926660344960293210192076077331621), SC_(BOOST_MATH_SMALL_CONSTANT(0.2014765847585708337294337097631779282769e-128266)), SC_(1) }, + { SC_(149909.609375), SC_(2.0033237934112548828125), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.5601865597517213906982198460312303425576e-29839)), SC_(0.4282985391041620067373351878082277338411e-10), SC_(BOOST_MATH_SMALL_CONSTANT(0.1307934789886089894651986816995366289121e-29828)), SC_(1) }, + { SC_(155018.640625), SC_(0.27750885486602783203125), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2189600536278663888089739250282366199981e-12142)), SC_(0.1177997645565165471561636064914377897339), SC_(BOOST_MATH_SMALL_CONSTANT(0.1858747803547742923699583327919111965553e-12141)), SC_(1) }, + { SC_(155105.15625), SC_(27467.107421875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1102644209378919640642692274235750137785e-42809)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2501495324258768121484793466326974864798e-33579)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4407940317480506300101086260146805075637e-9230)), SC_(1) }, + { SC_(155440.6875), SC_(25353.65625), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8941214025675720839947382390911459942351e-32016)), SC_(BOOST_MATH_SMALL_CONSTANT(0.7341950414271885193993490458038675049208e-31832)), SC_(0.1217825444352641760127168800486312561702e-183), SC_(1) }, + { SC_(170849.5), SC_(0.00046143750660121440887451171875), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8932798569056563733432357552812282247856e-13382)), SC_(2154.552031316987476016365197599340088807), SC_(BOOST_MATH_SMALL_CONSTANT(0.4146011996561678697797342745398553532881e-13385)), SC_(1) }, + { SC_(171593), SC_(0.0390150845050811767578125), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3808818562331720430729550615151248330977e-148923)), SC_(15.6782046961596187023865989050765796256), SC_(BOOST_MATH_SMALL_CONSTANT(0.2429371625224852285654983284139567086578e-148924)), SC_(1) }, + { SC_(172891), SC_(0.00412352383136749267578125), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1261508876351832263878339216717470434296e-150049)), SC_(230.2002478717688094390524743042864738996), SC_(BOOST_MATH_SMALL_CONSTANT(0.54800500347616723860757541011092778473e-150052)), SC_(1) }, + { SC_(175682.734375), SC_(342375.09375), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3387341086210335388285649512749436564435e-144096)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1795794751912361346488594465486064257971e-370658)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.5301487822478035199922994877956397118574e-226562)) }, + { SC_(177298.140625), SC_(0.00180856394581496715545654296875), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8516891724051227220598361169759734476922e-35289)), SC_(540.4074280614505942989554143978724575293), SC_(BOOST_MATH_SMALL_CONSTANT(0.1576013074913314814731763422753196121745e-35291)), SC_(1) }, + { SC_(184058.265625), SC_(0.0481239259243011474609375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.5011685357386681038084289717245581028305e-94080)), SC_(11.29830628383595379593224834916619211301), SC_(BOOST_MATH_SMALL_CONSTANT(0.4435784649028946789930916331332918288727e-94081)), SC_(1) }, + { SC_(189710.828125), SC_(0.0004468346596695482730865478515625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.5188315366392478090272792788651594123975e-169975)), SC_(2225.270299039879402937966752903472740162), SC_(BOOST_MATH_SMALL_CONSTANT(0.2331543888682215998996030637290955805423e-169978)), SC_(1) }, + { SC_(192153.234375), SC_(4460.083984375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1022452100691270242676491725999926765425e-167048)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1398359931090325990354518704244200134233e-9249)), SC_(BOOST_MATH_SMALL_CONSTANT(0.731179489599681422187067081110076015194e-157799)), SC_(1) }, + { SC_(194577.984375), SC_(0.00036247042589820921421051025390625), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8624226692331135959285353838204701375781e-17318)), SC_(2746.119705338191749945130579954251613059), SC_(BOOST_MATH_SMALL_CONSTANT(0.3140513749479482402469467099759580915747e-17321)), SC_(1) }, + { SC_(196362), SC_(2509.231201171875), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3856482340702243145420560651420455809962e-6481)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5652420341505424085842925275720886631988e-5849)), SC_(0.68227097556498000743757316100203279656e-632), SC_(1) }, + { SC_(207621.90625), SC_(0.00042250819387845695018768310546875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3544168575172053195688364323122776381218e-180191)), SC_(2354.032323315899608882640510773291239734), SC_(BOOST_MATH_SMALL_CONSTANT(0.1505573453715250081770279309998939513989e-180194)), SC_(1) }, + { SC_(212600.609375), SC_(3789.47216796875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1162875437533969677380975629265995346525e-190706)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3572904950620103274095363616181997412084e-8289)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3254705774728612096631189967081659505062e-182417)), SC_(1) }, + { SC_(212603.09375), SC_(20133.15625), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2362572268084451377670154616635164036924e-141527)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3652077641977781302789589817509647608679e-29756)), SC_(BOOST_MATH_SMALL_CONSTANT(0.646911840243626703260093779489488783331e-111771)), SC_(1) }, + { SC_(224776.03125), SC_(0.0415735431015491485595703125), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1658960264768293374695368021921618319401e-201391)), SC_(14.08884084986776431793587580402506526197), SC_(BOOST_MATH_SMALL_CONSTANT(0.1177499470997192873580592646539708667598e-201392)), SC_(1) }, + { SC_(228984.171875), SC_(46.157588958740234375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1540400982450543871048593457437142794287e-198733)), SC_(0.8740613889857634925378998367387854310713e-191), SC_(BOOST_MATH_SMALL_CONSTANT(0.1762348734152394371413169466461289084642e-198542)), SC_(1) }, + { SC_(231101.984375), SC_(155.261932373046875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8852764944774570528678983043239949746808e-118150)), SC_(0.1763399753127686268061992508179417253384e-560), SC_(BOOST_MATH_SMALL_CONSTANT(0.5020282513407808892851228645306011609752e-117589)), SC_(1) }, + { SC_(232169.4375), SC_(16.358287811279296875), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1004815071118392356784942205953132166455e-20674)), SC_(0.587724374876512150244459824716029030012e-75), SC_(BOOST_MATH_SMALL_CONSTANT(0.1709670577010721905366456702457756799289e-20599)), SC_(1) }, + { SC_(235582.25), SC_(0.011084310710430145263671875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1017643250025693405674093870392166132869e-154402)), SC_(78.16455130127354840873852787165449218854), SC_(BOOST_MATH_SMALL_CONSTANT(0.1301924252214203870286963316556287714256e-154404)), SC_(1) }, + { SC_(237315.15625), SC_(3.7124271392822265625), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7536126865779733008730126500222323004189e-155539)), SC_(0.4688134850906469512740105351527398525871e-19), SC_(BOOST_MATH_SMALL_CONSTANT(0.1607489354603908826711205809046906316143e-155519)), SC_(1) }, + { SC_(239513.921875), SC_(3236.540771484375), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.9078466292704468179757983138091189896474e-13616)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4763031957127142496806317602545438438184e-7466)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1906026743977634660356542047153393121634e-6149)), SC_(1) }, + { SC_(241256.71875), SC_(417787.0625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.4139218165554650302732575887154116926375e-190178)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1384615419520965439611502658608246043672e-187999)), SC_(0.2989435266427043771761060718022390102514e-2178), SC_(1) }, + { SC_(242747.59375), SC_(307.633697509765625), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.4135448462258999745189194724632122657543e-9882)), SC_(0.1641240444860787359657006071324757612212e-1025), SC_(BOOST_MATH_SMALL_CONSTANT(0.2519709086629153292670089405584358725747e-8856)), SC_(1) }, + { SC_(244254.640625), SC_(17.7450542449951171875), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3430985610854914780380641194927931339872e-10517)), SC_(0.4237689124483248224991752915244175660383e-81), SC_(BOOST_MATH_SMALL_CONSTANT(0.8096359855734569989336526965289033914691e-10436)), SC_(1) }, + { SC_(246462.734375), SC_(43952.4453125), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3938710785527875787688018700990301514826e-53609)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1105323376193801074638945243105005161062e-56396)), SC_(1), SC_(0.2806307536605947812694951237611079993073e-2787) }, + { SC_(251274.4375), SC_(0.1303907993133179843425750732421875e-4), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1284050969853127988754756985503067194045e-10800)), SC_(76679.51739053277711700788121412509668115), SC_(BOOST_MATH_SMALL_CONSTANT(0.1674568403076129834643607249408326608986e-10805)), SC_(1) }, + { SC_(256001.953125), SC_(0.3102722465991973876953125), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.4517081658880984032838741386685794411436e-11004)), SC_(0.0606067283762034266767895128284342433694), SC_(BOOST_MATH_SMALL_CONSTANT(0.7453102617323536411221722791114842895032e-11003)), SC_(1) }, + { SC_(256341.890625), SC_(0.045557327568531036376953125), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3046836016076670331250987993117619690904e-10090)), SC_(12.14326372762000066047653769127404375479), SC_(BOOST_MATH_SMALL_CONSTANT(0.2509075059571180069981406913298733504809e-10091)), SC_(1) }, + { SC_(259312.890625), SC_(4.09720611572265625), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1889642755657341099597171869122225183632e-10211)), SC_(0.4468819938274178704121653254171240524415e-21), SC_(BOOST_MATH_SMALL_CONSTANT(0.422850502315630443921252075167032941947e-10190)), SC_(1) }, + { SC_(265560.28125), SC_(14.26784992218017578125), SC_(0.9688708782196044921875), SC_(0.2255456396828479920717334888632409438555e-3672), SC_(0.5092282394886762178699134425746537111738e-67), SC_(0.4429165984771814351326604284513000560131e-3605), SC_(1) }, + { SC_(272688.46875), SC_(0.4279204308986663818359375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8125575456729716243938388570732195995244e-236660)), SC_(0.009774280032563511863022336056748788267978), SC_(BOOST_MATH_SMALL_CONSTANT(0.8313221464556926613351826150695679545886e-236658)), SC_(1) }, + { SC_(279777.4375), SC_(110919.8125), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.6148430343219194706377521237908296432287e-103891)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1156211272107542159862785096226588071867e-101231)), SC_(0.5317739492378269700677621217632990048617e-2659), SC_(1) }, + { SC_(280536.21875), SC_(1998.197021484375), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.4730459791299165766564524415469547707803e-13165)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1075155179828709931223331787105624315381e-5162)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4399792588129284315579695728392266529331e-8002)), SC_(1) }, + { SC_(290996.875), SC_(0.00046665043919347226619720458984375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2740689055798068038261548986673720163647e-148738)), SC_(2129.814074427695605797478885855586306243), SC_(BOOST_MATH_SMALL_CONSTANT(0.1286820802202897094627135589769732633674e-148741)), SC_(1) }, + { SC_(294260.65625), SC_(0.393247187137603759765625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.5366621090960572054689623726756327820964e-58566)), SC_(0.01595930469496627944511629771146368297354), SC_(BOOST_MATH_SMALL_CONSTANT(0.3362691040451941966929326235860298229558e-58564)), SC_(1) }, + { SC_(295837.75), SC_(414044.375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2738207633868624490637016944591828716385e-282945)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1291893132914534123455535857061490734143e-209403)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2119531069641324636847604040747073688875e-73541)), SC_(1) }, + { SC_(295905.53125), SC_(0.0040032281540334224700927734375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3432444114466741914522489325459591711318e-151247)), SC_(236.9679241666109725149413470050507888954), SC_(BOOST_MATH_SMALL_CONSTANT(0.1448484695360460463354669319016151667841e-151249)), SC_(1) }, + { SC_(296938.03125), SC_(220.9876708984375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1066546302444701932433833129869504077407e-266057)), SC_(0.799025964451165746090446805742325043734e-788), SC_(BOOST_MATH_SMALL_CONSTANT(0.1334808066190052186293725658701353747668e-265269)), SC_(1) }, + { SC_(300513.1875), SC_(0.37814271450042724609375), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.8089094344018176787861408819014348077561e-269248)), SC_(0.01993759802261050545029555014189027071964), SC_(BOOST_MATH_SMALL_CONSTANT(0.4057206056037757819954051223760869381102e-269246)), SC_(1) }, + { SC_(301512.3125), SC_(290772.15625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4984517826717744682218608311609889507618e-287305)), SC_(BOOST_MATH_SMALL_CONSTANT(0.519892537600854112225555677828535502315e-178255)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9587592562339474907280276143889734396976e-109050)), SC_(1) }, + { SC_(304061), SC_(0.015454678796231746673583984375), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3197884056982186223192534133421457418371e-60516)), SC_(52.7731607602237885882113216192417829959), SC_(BOOST_MATH_SMALL_CONSTANT(0.6059678842265777058340606757102341256221e-60518)), SC_(1) }, + { SC_(319723.40625), SC_(20.909183502197265625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2590505925978753870005807652732470012149e-63642)), SC_(0.1467093689208665286611141322144853204044e-96), SC_(BOOST_MATH_SMALL_CONSTANT(0.1765739942195542522633559404183774890433e-63545)), SC_(1) }, + { SC_(320904.625), SC_(29.05339813232421875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.301795651159796849839717117809261571877e-210325)), SC_(0.3822651521762847371013382041405160862927e-130), SC_(BOOST_MATH_SMALL_CONSTANT(0.7894929721991014467158241189990231432032e-210195)), SC_(1) }, + { SC_(322918.0625), SC_(0.00355008454062044620513916015625), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.7905337968047845333067020031953625780259e-12710)), SC_(268.7312156127938150100094841850794506944), SC_(BOOST_MATH_SMALL_CONSTANT(0.29417267175386104489176827833275889391e-12712)), SC_(1) }, + { SC_(335283.75), SC_(21810.169921875), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3299040575389629100198235447056122444995e-36786)), SC_(BOOST_MATH_SMALL_CONSTANT(0.202307289118563899376051109222726987044e-35658)), SC_(0.1630707716841679611298911719116727449455e-1127), SC_(1) }, + { SC_(336243.46875), SC_(3128.056640625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1989755909590248190077843590850637980752e-68280)), SC_(BOOST_MATH_SMALL_CONSTANT(0.386253976690019495221586847622724535798e-7720)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5151418573450927910578006074003632539119e-60560)), SC_(1) }, + { SC_(347334.96875), SC_(4.06880474090576171875), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1151000019927157406145680469175846621823e-301442)), SC_(0.1869580828614440943080976971537425939805e-21), SC_(BOOST_MATH_SMALL_CONSTANT(0.6156460326886061099554832161303503534759e-301421)), SC_(1) }, + { SC_(347788.625), SC_(37.86353302001953125), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3911807398179509287085805652571430683349e-27266)), SC_(0.128644350335128231481736445186331109064e-166), SC_(BOOST_MATH_SMALL_CONSTANT(0.3040792221336542252097696240821869657085e-27099)), SC_(1) }, + { SC_(349486.5625), SC_(0.0004298138082958757877349853515625), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1865595218115872133983227884322014482709e-69556)), SC_(2313.2859134142840503071282236890179605), SC_(BOOST_MATH_SMALL_CONSTANT(0.8064697957557503876725389314635299246407e-69560)), SC_(1) }, + { SC_(349829.1875), SC_(4556.69775390625), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.8716243656492448960493553078724261487418e-179538)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3005933497722659142770197020235806505349e-10583)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2899679471650323433353852583136590704171e-168954)), SC_(1) }, + { SC_(351569.59375), SC_(0.0152290202677249908447265625), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.142942439498922314939960947453612938523e-27532)), SC_(53.59599328878060781737142119144735114836), SC_(BOOST_MATH_SMALL_CONSTANT(0.2667035924285124443055616600216689774719e-27534)), SC_(1) }, + { SC_(358590.96875), SC_(1.7338650226593017578125), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1058148376671415191380608829185909505343e-28083)), SC_(0.2141548976451757099123225598000962489873e-9), SC_(BOOST_MATH_SMALL_CONSTANT(0.4941042153631326077987405894010837264966e-28074)), SC_(1) }, + { SC_(364175.1875), SC_(2293.671875), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2970907400871436762454120402519455621845e-34088)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3942277478053191901866283024837159384948e-6048)), SC_(BOOST_MATH_SMALL_CONSTANT(0.7536017993179300124085651069786590216621e-28040)), SC_(1) }, + { SC_(365061.53125), SC_(135.407379150390625), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.132561620732637353847620367820812298033e-5221)), SC_(0.9348116048625191354304436021264235582514e-524), SC_(0.1418057072067830448845425654367014413568e-4697), SC_(1) }, + { SC_(366848.125), SC_(489622.875), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1593861357254841199493602244543381689225e-253990)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1087599097235379865638568519804395894287e-742823)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.6823674419891745504101999703531254110972e-488833)) }, + { SC_(369212.46875), SC_(0.00043601836659945547580718994140625), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1589837506262236294533702040658122820427e-241982)), SC_(2280.124431101420007150565551801342146135), SC_(BOOST_MATH_SMALL_CONSTANT(0.6972590989230623579661684537574695268047e-241986)), SC_(1) }, + { SC_(377515.0625), SC_(0.25923203793354332447052001953125e-4), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1846099338711330641874444967580256082628e-327634)), SC_(38562.06263811561345901519963121865990616), SC_(BOOST_MATH_SMALL_CONSTANT(0.4787345936434957111959631565210397850823e-327639)), SC_(1) }, + { SC_(377897.28125), SC_(217.7733001708984375), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.5979546991309016931374244693774165753579e-327980)), SC_(0.1504122228349321219225606712861511198541e-800), SC_(BOOST_MATH_SMALL_CONSTANT(0.3975439547802701271946172226507152197205e-327179)), SC_(1) }, + { SC_(381735.84375), SC_(0.1554123082314617931842803955078125e-4), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3657468778839370617455648636532628074199e-15024)), SC_(64331.53971593053993165972765577354825155), SC_(BOOST_MATH_SMALL_CONSTANT(0.568534313804658519403859557834748785329e-15029)), SC_(1) }, + { SC_(384451.40625), SC_(2821.419677734375), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3774667393849660313070000619550292965817e-252276)), SC_(BOOST_MATH_SMALL_CONSTANT(0.7926054736804532094181417506264134619276e-7253)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4762353427010844825792649025736193403842e-245023)), SC_(1) }, + { SC_(385429.59375), SC_(3.3841388225555419921875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.235912325871912806903517917043120974532e-345328)), SC_(0.3659527638406590216438323566506540139083e-18), SC_(BOOST_MATH_SMALL_CONSTANT(0.6446523955606258252275291431690649324288e-345310)), SC_(1) }, + { SC_(386018), SC_(14093.7041015625), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3533816041883537299284294859041196659449e-346687)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1786199254113275768897792024673451795822e-26493)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1978399685111184439989792884160734955792e-320193)), SC_(1) }, + { SC_(391805.21875), SC_(0.3055977504118345677852630615234375e-4), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.6645640986776143695258650559207070499956e-5385)), SC_(32709.30102510362913407477993114535519627), SC_(BOOST_MATH_SMALL_CONSTANT(0.2031728217510905698625535037789910554642e-5389)), SC_(1) }, + { SC_(392234.125), SC_(2.3254187107086181640625), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3372946332051058353869565881444329491903e-34907)), SC_(0.116500178379113381650444797417636967012e-12), SC_(BOOST_MATH_SMALL_CONSTANT(0.2895228470015607868587943879852069969558e-34894)), SC_(1) }, + { SC_(392420.34375), SC_(26721.41796875), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3760691264606479837185828827725121521107e-204854)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6134691376735092695204920695453546200521e-43174)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6130204493853339987206932621927405818447e-161680)), SC_(1) }, + { SC_(395628.875), SC_(169.021026611328125), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.2526414214512150994786424981884882502037e-35331)), SC_(0.2367657718298624418210670946569777464019e-643), SC_(BOOST_MATH_SMALL_CONSTANT(0.1067052131305367667538379844205511148824e-34687)), SC_(1) }, + { SC_(399928.875), SC_(2.3772995471954345703125), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4575823381440133470258713714489339986042e-5500)), SC_(0.5891271920613133184754929015938875783606e-13), SC_(BOOST_MATH_SMALL_CONSTANT(0.7767123030647523365790059307890380108771e-5487)), SC_(1) }, + { SC_(402603.8125), SC_(15.56592464447021484375), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.839964051894727144748188102571476786515e-15862)), SC_(0.2276187152898794510296259141901545424811e-75), SC_(BOOST_MATH_SMALL_CONSTANT(0.3690224025845181622960356235998888477582e-15786)), SC_(1) }, + { SC_(406768.65625), SC_(0.00042969666537828743457794189453125), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.3845971664948874841658532459081877377021e-16009)), SC_(2313.76926505807402290357969801321322552), SC_(BOOST_MATH_SMALL_CONSTANT(0.1662210542351699700942923632024041265388e-16012)), SC_(1) }, + { SC_(408381.65625), SC_(0.456345951533876359462738037109375e-4), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.256636316436966534711309393776406356604e-36342)), SC_(21899.70679105534773755741399478867643693), SC_(BOOST_MATH_SMALL_CONSTANT(0.1171871015833811629121890074513165499571e-36346)), SC_(1) }, + { SC_(408998), SC_(0.0042365207336843013763427734375), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4679643318850173892444623183563750454659e-5621)), SC_(222.9260767164665503554164247892365552352), SC_(BOOST_MATH_SMALL_CONSTANT(0.2099190632059649758309471308391737222338e-5623)), SC_(1) }, + { SC_(413148.84375), SC_(0.4799632370122708380222320556640625e-4), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.4760216892086520862254727449513859060669e-370163)), SC_(20821.4247115356994008030634209707211316), SC_(BOOST_MATH_SMALL_CONSTANT(0.2286210938029239011421440938749654302622e-370167)), SC_(1) }, + { SC_(422703.84375), SC_(15069.125), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1894290547150840332529440634809860623788e-28480)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5317858193741856644130900155741731742e-28515)), SC_(0.9999999999999999999999999999999999719269), SC_(0.2807308626303566343788814258620297467638e-34) }, + { SC_(424641.03125), SC_(0.2840512692928314208984375), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.3281697221736068695894776974100410805984e-217046)), SC_(0.07983838849602386203799283789214340070297), SC_(BOOST_MATH_SMALL_CONSTANT(0.4110425177105753921575682833010882185377e-217045)), SC_(1) }, + { SC_(431857.34375), SC_(0.000211423015571199357509613037109375), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.5772928801419627986284807700357329751852e-18560)), SC_(4716.320526853965142300050830950109310733), SC_(BOOST_MATH_SMALL_CONSTANT(0.1224032329556379061882981898965492987967e-18563)), SC_(1) }, + { SC_(433260.8125), SC_(3.3808853626251220703125), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.9743394652123491454497722494064540082877e-18624)), SC_(0.2560546738053348250776027384729315592872e-18), SC_(BOOST_MATH_SMALL_CONSTANT(0.3805200860942258123591032689689538525655e-18605)), SC_(1) }, + { SC_(434088.21875), SC_(21.81499481201171875), SC_(0.12707412242889404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.7666944874274611518715379495155788957394e-388925)), SC_(0.3007553193509600488237813376679700633905e-103), SC_(BOOST_MATH_SMALL_CONSTANT(0.254923001555554620514995644832550525135e-388821)), SC_(1) }, + { SC_(434689.125), SC_(39291.4765625), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.4229593173885190819792612716082535703903e-67453)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2997707408973057615935360098045888677795e-58830)), SC_(BOOST_MATH_SMALL_CONSTANT(0.141094262943231928276825070136084907e-8622)), SC_(1) }, + { SC_(435121.25), SC_(397.58978271484375), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1391846018183584493348497097868590409154e-86771)), SC_(0.1011089115991303029245123638141426629899e-1381), SC_(BOOST_MATH_SMALL_CONSTANT(0.13765809523317592290575564449364874034e-85389)), SC_(1) }, + { SC_(437285.3125), SC_(0.2788266647257842123508453369140625e-4), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.7080016520655375267035486305854570379383e-223509)), SC_(35851.012645549836380276487988456969042), SC_(BOOST_MATH_SMALL_CONSTANT(0.1974844222854668306991988406185103636153e-223513)), SC_(1) }, + { SC_(442472.9375), SC_(49476.66015625), SC_(0.1355634629726409912109375), SC_(BOOST_MATH_SMALL_CONSTANT(0.6336326725813869671779066098442524839183e-387139)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2249187802897843416031847629628799944729e-69724)), SC_(BOOST_MATH_SMALL_CONSTANT(0.2817162140773738373578099290063302965899e-317414)), SC_(1) }, + { SC_(450819.5), SC_(499216.46875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3800121390355127178063074898342430570494e-349644)), SC_(BOOST_MATH_SMALL_CONSTANT(0.9678656246284879041515322169506269463219e-285456)), SC_(BOOST_MATH_SMALL_CONSTANT(0.3926290275898362964767484676866590121196e-64188)), SC_(1) }, + { SC_(457779.125), SC_(0.326781928539276123046875), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.5550829230252479526732424261273786286927e-40738)), SC_(0.03865177027724154668769750896774259956337), SC_(BOOST_MATH_SMALL_CONSTANT(0.1436112548128448741327568829062085238803e-40736)), SC_(1) }, + { SC_(458356.625), SC_(0.00327513157390058040618896484375), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.3934256588938313890657511884630295473806e-40789)), SC_(292.0201861612453957241730382306629407247), SC_(BOOST_MATH_SMALL_CONSTANT(0.1347255010229302168172554227989064367004e-40791)), SC_(1) }, + { SC_(462545.71875), SC_(0.01835658587515354156494140625), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.6842410988092162996870266776720414780451e-41162)), SC_(42.43584359872765638163172784469089833824), SC_(BOOST_MATH_SMALL_CONSTANT(0.1612413094174311960166824477001882166453e-41163)), SC_(1) }, + { SC_(466997.53125), SC_(0.356361567974090576171875), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.3241995530691347719937107476224957921527e-6418)), SC_(0.02384677265659975718672488537621955689915), SC_(BOOST_MATH_SMALL_CONSTANT(0.1359511233397070742246772924547520956389e-6416)), SC_(1) }, + { SC_(468932.8125), SC_(0.182366857188753783702850341796875e-4), SC_(0.632396042346954345703125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1103527708644207448237778040457649555939e-93327)), SC_(54820.89133734763217172708014125126167222), SC_(BOOST_MATH_SMALL_CONSTANT(0.2012969292771077366711511442513115417448e-93332)), SC_(1) }, + { SC_(470942.5), SC_(0.326362073421478271484375), SC_(0.913384497165679931640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1471321546322475787061574604050565023955e-18534)), SC_(0.03855775001051170472627007361165177373414), SC_(BOOST_MATH_SMALL_CONSTANT(0.3815890569136841848282960464759255989168e-18533)), SC_(1) }, + { SC_(473791.3125), SC_(0.00037331905332393944263458251953125), SC_(0.9688708782196044921875), SC_(BOOST_MATH_SMALL_CONSTANT(0.5426122640062687858436002133933513536523e-6511)), SC_(2665.063154701061606205642057038907522539), SC_(BOOST_MATH_SMALL_CONSTANT(0.2036020283606124332820904603012161247452e-6514)), SC_(1) }, + { SC_(474410.90625), SC_(1.53685867786407470703125), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.117766994152457958795877225944368333002e-242484)), SC_(0.1678625980035251962785258430723784518394e-8), SC_(BOOST_MATH_SMALL_CONSTANT(0.7015678033887262640021676404777871768517e-242476)), SC_(1) }, + { SC_(481669.8125), SC_(360.35894775390625), SC_(0.8350250720977783203125), SC_(BOOST_MATH_SMALL_CONSTANT(0.1292404819014634354658936369356745477441e-38001)), SC_(0.1184119790891173687044477395438058404198e-1283), SC_(BOOST_MATH_SMALL_CONSTANT(0.1091447697231683701613307519286097336645e-36717)), SC_(1) }, + { SC_(485412.125), SC_(483725.21875), SC_(0.81474220752716064453125), SC_(BOOST_MATH_SMALL_CONSTANT(0.8593009078995238625969168132860357389775e-291741)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4682031506788712249402837988058297965792e-397392)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.544865187939051001712434628531605526675e-105651)) }, + { SC_(489093.59375), SC_(101.60869598388671875), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.2679049247465053509778519007374647739724e-320562)), SC_(0.1239584973345346670544577370734255574289e-418), SC_(BOOST_MATH_SMALL_CONSTANT(0.2161246953675901063139086740469757800594e-320143)), SC_(1) }, + { SC_(489183.34375), SC_(118808.328125), SC_(0.905801355838775634765625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1458359410123570793275225181353576621217e-130434)), SC_(BOOST_MATH_SMALL_CONSTANT(0.259453747115697820698795192063284012701e-142915)), SC_(1), SC_(BOOST_MATH_SMALL_CONSTANT(0.1779079596666185278653733063531830995884e-12480)) }, + { SC_(491651.625), SC_(32.955524444580078125), SC_(0.3082362115383148193359375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1033057257566332368173504705063859426151e-251301)), SC_(0.603837473523874333668117011509794982175e-152), SC_(BOOST_MATH_SMALL_CONSTANT(0.1710820051524158477748585452714475118872e-251149)), SC_(1) }, + { SC_(499024.09375), SC_(0.3617647588253021240234375), SC_(0.221111953258514404296875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1198688160746637782814955712359261486421e-327059)), SC_(0.0213597393543653960374826366383814420494), SC_(BOOST_MATH_SMALL_CONSTANT(0.5611904437877215617130419280865220458283e-327058)), SC_(1) } + } }; +#undef SC_ + + + diff --git a/test/ibeta_small_data.ipp b/test/ibeta_small_data.ipp new file mode 100644 index 000000000..abfb11061 --- /dev/null +++ b/test/ibeta_small_data.ipp @@ -0,0 +1,512 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 500> ibeta_small_data = { { + { SC_(0.011510574258863925933837890625), SC_(2.726669788360595703125), SC_(0.913345992565155029296875), SC_(85.50804647765112454526520766832090120908), SC_(0.0004969774007283958673037601318581948437309), SC_(0.9999941879795790272650838125485136788379), SC_(0.5812020420972734916187451486321162137375e-5) }, + { SC_(0.0463422574102878570556640625), SC_(0.34317314624786376953125), SC_(0.24176712334156036376953125), SC_(20.36367089471426800179696837574809289039), SC_(3.630773740238788693031723031598949317136), SC_(0.8486827348798151491124959025982318049325), SC_(0.1513172651201848508875040974017681950675) }, + { SC_(0.06715317070484161376953125), SC_(2.30631923675537109375), SC_(0.908442795276641845703125), SC_(13.78727207173260438424514878253152024011), SC_(0.001859217475218142037637565734833320618317), SC_(0.9998651679038930266805148691555636600556), SC_(0.0001348320961069733194851308444363399443688) }, + { SC_(0.1190207004547119140625), SC_(7.26954746246337890625), SC_(0.19963125884532928466796875), SC_(6.225047194692518378537141946282961080975), SC_(0.08420413075357450486624447742592649170405), SC_(0.9866538632858121421788318729611834919717), SC_(0.01334613671418785782116812703881650802825) }, + { SC_(0.1540344059467315673828125), SC_(4.049813747406005859375), SC_(0.3462987840175628662109375), SC_(4.872033861103043731550905432482222659763), SC_(0.08561968850485947325255754361164029251743), SC_(0.9827297959310547093553196782752749843992), SC_(0.01727020406894529064468032172472501560077) }, + { SC_(0.15487124025821685791015625), SC_(8.16117000579833984375), SC_(0.678767263889312744140625), SC_(4.38038087876606402301557100951561214911), SC_(0.1540537895441550779731794373253219559374e-4), SC_(0.999996483108386751271915947803000461492), SC_(0.3516891613248728084052196999538507955892e-5) }, + { SC_(0.2251259386539459228515625), SC_(0.4898320138454437255859375), SC_(0.79967319965362548828125), SC_(4.764013990849157580013322088552892632018), SC_(0.9820281524501242644370508756885101403883), SC_(0.8290948573018540323461920074910160298235), SC_(0.1709051426981459676538079925089839701765) }, + { SC_(0.2867415249347686767578125), SC_(5.96057987213134765625), SC_(0.575251102447509765625), SC_(1.911839728052784613470170990261300207059), SC_(0.001412230939458232329324385634994224021816), SC_(0.9992618688130328170087283879882410324961), SC_(0.0007381311869671829912716120117589675039269) }, + { SC_(0.2922028005123138427734375), SC_(2.659206867218017578125), SC_(0.4733414947986602783203125), SC_(2.306780982820498015018593188560459962841), SC_(0.09785807660771959252183084474688989446611), SC_(0.9593044635018992897241131636398162350677), SC_(0.04069553649810071027588683636018376493234) }, + { SC_(0.30540943145751953125), SC_(4.23978328704833984375), SC_(0.546926796436309814453125), SC_(1.925766552541500211935789109529683925689), SC_(0.01136621113828240461645649770280082638802), SC_(0.9941324563027414190664847981329029657831), SC_(0.005867543697258580933515201867097034216903) }, + { SC_(0.318328440189361572265625), SC_(3.1655042171478271484375), SC_(0.077649272978305816650390625), SC_(1.337499870967964297403057650377070193563), SC_(0.6794195418585711764434318012650276929832), SC_(0.6631399660602084538462156083737590843824), SC_(0.3368600339397915461537843916262409156176) }, + { SC_(0.326008260250091552734375), SC_(0.625432431697845458984375), SC_(0.743158161640167236328125), SC_(3.078454179457483361692247221422692039972), SC_(0.7360974885092882497469458885357603771633), SC_(0.8070290947450602569822924525981547293294), SC_(0.1929709052549397430177075474018452706706) }, + { SC_(0.3360383510589599609375), SC_(5.28920650482177734375), SC_(0.81474220752716064453125), SC_(1.550409503660757234080944256429985207784), SC_(0.2836427788609597588510100729645041742761e-4), SC_(0.9999817056339550018928818220116909157891), SC_(0.1829436604499810711817798830908421094105e-4) }, + { SC_(0.344460785388946533203125), SC_(6.63605499267578125), SC_(0.096544884145259857177734375), SC_(1.138099220831291561221229605806786314538), SC_(0.2341007981779031558780678617792900307434), SC_(0.8293974676177770014617748040947131716032), SC_(0.1706025323822229985382251959052868283968) }, + { SC_(0.3571167886257171630859375), SC_(3.6129398345947265625), SC_(0.046266771852970123291015625), SC_(0.9053135817270937856051949826437502245961), SC_(0.7221758562362922538389449085733137575244), SC_(0.5562638752728180895224241888333329380732), SC_(0.4437361247271819104775758111666670619268) }, + { SC_(0.357627332210540771484375), SC_(8.064510345458984375), SC_(0.92886126041412353515625), SC_(1.197177044295353240338824861021333896969), SC_(0.7152754878374974083055684082879234042397e-10), SC_(0.9999999999402531571079558956505173243843), SC_(0.597468428920441043494826756157346017527e-10) }, + { SC_(0.377388656139373779296875), SC_(8.8396854400634765625), SC_(0.50323975086212158203125), SC_(1.048244561726343473675201855489355128708), SC_(0.0003378999437661089518583588179790252882915), SC_(0.999677755487891791262427317664954237941), SC_(0.0003222445121082087375726823350457620590389) }, + { SC_(0.424311339855194091796875), SC_(8.71805095672607421875), SC_(0.594544112682342529296875), SC_(0.8450634150576302527396320143587314116559), SC_(0.5692485563137910015348490929019764830298e-4), SC_(0.9999326428995458545641785392037209582211), SC_(0.6735710045414543582146079627904177891161e-4) }, + { SC_(0.4302380084991455078125), SC_(9.08433628082275390625), SC_(0.3500487506389617919921875), SC_(0.8041671576172428143402874467426430937693), SC_(0.003657242502533209987243300892131746946366), SC_(0.995472725877070621917637160657188675184), SC_(0.004527274122929378082362839342811324816028) }, + { SC_(0.4617138803005218505859375), SC_(1.49113976955413818359375), SC_(0.081217654049396514892578125), SC_(0.6708426431384324314892486199862307536228), SC_(1.06148098502757264044386168615001572695), SC_(0.3872501836441769856742304061740122471689), SC_(0.6127498163558230143257695938259877528311) }, + { SC_(0.4965442717075347900390625), SC_(8.234554290771484375), SC_(0.3013162314891815185546875), SC_(0.6255445999459755311064947246119255484269), SC_(0.01047121638037352884799746710410909796172), SC_(0.9835362327294694289867309219284499434766), SC_(0.01646376727053057101326907807155005652337) }, + { SC_(0.526769936084747314453125), SC_(9.4657726287841796875), SC_(0.695263326168060302734375), SC_(0.5223867123087661970619213259031225900887), SC_(0.1604184643861934563272584858102025314868e-5), SC_(0.9999969291337627338160603638685334704082), SC_(0.3070866237266183939636131466529591820232e-5) }, + { SC_(0.539501190185546875), SC_(3.5276241302490234375), SC_(0.184897840023040771484375), SC_(0.6337086405553985369329386662133114583969), SC_(0.2298885748176341425212030686754049306522), SC_(0.7338011624802040649313396945278096189402), SC_(0.2661988375197959350686603054721903810598) }, + { SC_(0.596188604831695556640625), SC_(9.52472019195556640625), SC_(0.587086021900177001953125), SC_(0.3957027656575689988900171488472459553927), SC_(0.2784518837222712883966491998692226153708e-4), SC_(0.9999296360008322244237915105214427770265), SC_(0.7036399916777557620848947855722297349452e-4) }, + { SC_(0.597795426845550537109375), SC_(4.3524570465087890625), SC_(0.3404516875743865966796875), SC_(0.5857283108172326731547619033650850279516), SC_(0.05176933170314495414753269319008084049281), SC_(0.9187929048671107105645293523464974421304), SC_(0.08120709513288928943547064765350255786955) }, + { SC_(0.604711830615997314453125), SC_(2.7766406536102294921875), SC_(0.65411365032196044921875), SC_(0.8104703643388840470345296228912560465778), SC_(0.02126375318260348616345995572262831556693), SC_(0.9744344343526894636219031995625457203905), SC_(0.02556556564731053637809680043745427960951) }, + { SC_(0.679927647113800048828125), SC_(9.0447483062744140625), SC_(0.887737333774566650390625), SC_(0.3013615312130418242114530511558325766293), SC_(0.2937963547130558679504530467684762405074e-9), SC_(0.999999999025103326081320534896178383616), SC_(0.9748966739186794651038216163839749164796e-9) }, + { SC_(0.688061058521270751953125), SC_(2.9616763591766357421875), SC_(0.815787494182586669921875), SC_(0.6441996486596996003790817490051121624011), SC_(0.0023593844359375506996753278475536050391), SC_(0.9963508599908640401822148000540199843775), SC_(0.003649140009135959817785199945980015622505) }, + { SC_(0.71445453166961669921875), SC_(9.34602642059326171875), SC_(0.5949366092681884765625), SC_(0.2611868075149835081076007360078062823636), SC_(0.2618210260815823472350439860777132136683e-4), SC_(0.9998997672257934489288388082946320821168), SC_(0.0001002327742065510711611917053679178831703) }, + { SC_(0.75854289531707763671875), SC_(4.042085170745849609375), SC_(0.18398940563201904296875), SC_(0.2869641794222026502350604842071731344923), SC_(0.1433368221355461874324336015227538920014), SC_(0.6668917301687721681209003462437186369765), SC_(0.3331082698312278318790996537562813630235) }, + { SC_(0.759666860103607177734375), SC_(7.62421321868896484375), SC_(0.285910427570343017578125), SC_(0.2494067464807902016116972999567207456019), SC_(0.01285822954049965889923791220383840028034), SC_(0.9509723725387721326945071222846981919121), SC_(0.04902762746122786730549287771530180808794) }, + { SC_(0.78175532817840576171875), SC_(8.5445098876953125), SC_(0.2395785152912139892578125), SC_(0.2092181979177349561806385620026173078435), SC_(0.01454489283267034607676299413579126814072), SC_(0.9349986953438432477441465286773755595707), SC_(0.06500130465615675225585347132262444042931) }, + { SC_(0.811257660388946533203125), SC_(3.7941887378692626953125), SC_(0.379480898380279541015625), SC_(0.3489982897256404699956459179424488728876), SC_(0.04918171477157487449577833255024935191165), SC_(0.876483715364670390428440227316937452589), SC_(0.123516284635329609571559772683062547411) }, + { SC_(0.834698200225830078125), SC_(9.0694408416748046875), SC_(0.644353687763214111328125), SC_(0.1803151611837914682987734789219117172738), SC_(0.9959010328687650223890520801118033780347e-5), SC_(0.9999447719190872199805310662295119611992), SC_(0.5522808091278001946893377048803880084592e-4) }, + { SC_(0.83821380138397216796875), SC_(9.12577533721923828125), SC_(0.22599919140338897705078125), SC_(0.1645323980962702319386216945486588491031), SC_(0.01289064037523516697593443936007900173636), SC_(0.9273451718204823928666892977505184246911), SC_(0.07265482817951760713331070224948157530893) }, + { SC_(0.84435856342315673828125), SC_(3.462334156036376953125), SC_(0.2511587440967559814453125), SC_(0.2764659412617420491570801392360458860717), SC_(0.1225038182191884368747109382285656512776), SC_(0.6929496150821833440766199995023216044932), SC_(0.3070503849178166559233800004976783955068) }, + { SC_(0.8551578521728515625), SC_(9.93534755706787109375), SC_(0.47097623348236083984375), SC_(0.156230204191103226500775887222958181338), SC_(0.0001981074086433488391675923367618586808585), SC_(0.9987335578411774548179603749802068600465), SC_(0.001266442158822545182039625019793139953536) }, + { SC_(0.908232867717742919921875), SC_(0.678848326206207275390625), SC_(0.84073317050933837890625), SC_(1.160861004416774987619512191580855025408), SC_(0.4258943431472485997275346962213866620687), SC_(0.7315941970505542617319292810425302688679), SC_(0.2684058029494457382680707189574697311321) }, + { SC_(0.9111347198486328125), SC_(0.862172305583953857421875), SC_(0.95751106739044189453125), SC_(1.185899552667666342813996371641383797478), SC_(0.07629806988531935777484778370164513501807), SC_(0.9395514073850060300319313133177312277542), SC_(0.06044859261499396996806868668226877224576) }, + { SC_(0.942293345928192138671875), SC_(7.764537811279296875), SC_(0.808194696903228759765625), SC_(0.1508102710294228670066826109456423951132), SC_(0.3518058068135974193879013653354450359381e-6), SC_(0.9999976672345740659931913764741265832628), SC_(0.2332765425934006808623525873416737195291e-5) }, + { SC_(0.96454536914825439453125), SC_(2.23419952392578125), SC_(0.3250310420989990234375), SC_(0.2834732098610328524396528653108034866255), SC_(0.190436076037379824356986932760536605902), SC_(0.5981592222309782861598154404834535951026), SC_(0.4018407777690217138401845595165464048974) }, + { SC_(0.96730029582977294921875), SC_(2.896893978118896484375), SC_(0.602882802486419677734375), SC_(0.3423822991371558430034363809431602080871), SC_(0.02405649095246888986382317565418043208486), SC_(0.9343505884118188500531298388527642525024), SC_(0.06564941158818114994687016114723574749757) }, + { SC_(0.971317768096923828125), SC_(9.940685272216796875), SC_(0.0839129984378814697265625), SC_(0.06504707109648754329244702454735921458691), SC_(0.04441883725199691091650283777368267306258), SC_(0.5942221836721104979700277018504213130339), SC_(0.4057778163278895020299722981495786869661) }, + { SC_(0.975403964519500732421875), SC_(5.472205638885498046875), SC_(0.01363777182996273040771484375), SC_(0.01507880323004283665619215274236779141942), SC_(0.1786982587181325975438620221056624556374), SC_(0.07781521238089354585457864638797415249968), SC_(0.9221847876191064541454213536120258475003) }, + { SC_(0.987122833728790283203125), SC_(7.66854095458984375), SC_(0.5060064792633056640625), SC_(0.1344070858100725893412090975881710295211), SC_(0.0005885866608641503352046318734400675414602), SC_(0.9956399590439399652567966381947768119441), SC_(0.004360040956060034743203361805223188055887) }, + { SC_(1.056292057037353515625), SC_(6.812713623046875), SC_(0.82583439350128173828125), SC_(0.1273249881224593174456085109406883283434), SC_(0.9807107058749212025388445092701407127597e-6), SC_(0.9999922976379849114418469705444366389974), SC_(0.7702362015088558153029455563361002570531e-5) }, + { SC_(1.06216347217559814453125), SC_(4.927896022796630859375), SC_(0.6798517704010009765625), SC_(0.1759733200157519723090855217275085438428), SC_(0.0007267069978173745862790504472453784438198), SC_(0.9958873407655927042588117240610652033503), SC_(0.004112659234407295741188275938934796649655) }, + { SC_(1.06652772426605224609375), SC_(4.98544216156005859375), SC_(0.2400285303592681884765625), SC_(0.1252391805582437348633070224949739746442), SC_(0.04764650371569540044683293003295292656369), SC_(0.7244045745268357332739928141189512595386), SC_(0.2755954254731642667260071858810487404614) }, + { SC_(1.0676186084747314453125), SC_(5.01974391937255859375), SC_(0.52858030796051025390625), SC_(0.1668068455926113267781850863056374191068), SC_(0.004416624961366326396236713719703100132342), SC_(0.9742054932826863858080468818188426955095), SC_(0.02579450671731361419195311818115730449051) }, + { SC_(1.07769012451171875), SC_(3.7481257915496826171875), SC_(0.79485189914703369140625), SC_(0.2281820698359616001756803065117048698312), SC_(0.0006946101723822465464098854082125524812235), SC_(0.9969651334842985135690500741329898736386), SC_(0.003034866515701486430949925867010126361423) }, + { SC_(1.111192226409912109375), SC_(7.073215484619140625), SC_(0.4427340030670166015625), SC_(0.1046968991557454481312637878403829272066), SC_(0.002096999016419663891877647532306680630051), SC_(0.9803640558841757103622473467279519746618), SC_(0.0196359441158242896377526532720480253382) }, + { SC_(1.11202752590179443359375), SC_(1.6287212371826171875), SC_(0.3125767409801483154296875), SC_(0.220086487142446497373642338798966428899), SC_(0.3118964792364739989196755511537386999812), SC_(0.4137096505937436937582806779155007896774), SC_(0.5862903494062563062417193220844992103226) }, + { SC_(1.17417657375335693359375), SC_(3.249635219573974609375), SC_(0.4580433666706085205078125), SC_(0.1869937983311457206778828953905356137432), SC_(0.03822122339653544808212099322227995529118), SC_(0.8302900796610687219671714278868655607164), SC_(0.1697099203389312780328285721131344392836) }, + { SC_(1.18997681140899658203125), SC_(4.56032848358154296875), SC_(0.12527024745941162109375), SC_(0.05555200964120607625418119326261288194569), SC_(0.09228270880340905015103067984913154599131), SC_(0.3757710653199377466092636271155968947165), SC_(0.6242289346800622533907363728844031052835) }, + { SC_(1.19396245479583740234375), SC_(1.11079370975494384765625), SC_(0.97992765903472900390625), SC_(0.7328225851446332702348997680527066247573), SC_(0.0116951961415409062229029366185122042514), SC_(0.9842915825041315396299884467742185229104), SC_(0.01570841749586846037001155322578147708963) }, + { SC_(1.206116199493408203125), SC_(7.07159709930419921875), SC_(0.76554024219512939453125), SC_(0.08514084012066408850849087391686636969038), SC_(0.4734137820898855125073110752727038395695e-5), SC_(0.9999443994845048909226930655462551207409), SC_(0.5560051549510907730693445374487925914636e-4) }, + { SC_(1.2331893444061279296875), SC_(2.529559612274169921875), SC_(0.2963911592960357666015625), SC_(0.1382405154740039729873240314162563958491), SC_(0.1368890069023594204450209190811258786034), SC_(0.5024561314975783597879652382184428890429), SC_(0.4975438685024216402120347617815571109571) }, + { SC_(1.2698681354522705078125), SC_(9.68867778778076171875), SC_(0.0048830057494342327117919921875), SC_(0.0008930645663219436259375029549427392107573), SC_(0.0487150324805827097640187868435164513456), SC_(0.01800239516298211400104303995525449332312), SC_(0.9819976048370178859989569600447455066769) }, + { SC_(1.2801439762115478515625), SC_(8.8172550201416015625), SC_(0.731749236583709716796875), SC_(0.05442873325213669923239713181090416341988), SC_(0.9602487242698262216547978489257610558994e-6), SC_(0.9999823579986858710309586582398411826723), SC_(0.1764200131412896904134176015881732771565e-4) }, + { SC_(1.2990620136260986328125), SC_(1.5443842411041259765625), SC_(0.1945759356021881103515625), SC_(0.08612429254157958319406624556530210771471), SC_(0.3723309647381705279199457097687991375742), SC_(0.1878575742649329156233069646006092390117), SC_(0.8121424257350670843766930353993907609883) }, + { SC_(1.3197329044342041015625), SC_(4.903014659881591796875), SC_(0.3325150310993194580078125), SC_(0.08377044198614509980249471998638733724805), SC_(0.02160479444130212505727929870781375087409), SC_(0.7949727547593459429261215463860200453147), SC_(0.2050272452406540570738784536139799546853) }, + { SC_(1.3317101001739501953125), SC_(0.76503980159759521484375), SC_(0.644586086273193359375), SC_(0.4714479913648758636806160397928378378945), SC_(0.5594135526519237359231008536763548833904), SC_(0.4573339592510716805631615045309103737982), SC_(0.5426660407489283194368384954690896262018) }, + { SC_(1.3606855869293212890625), SC_(8.021114349365234375), SC_(0.2625559866428375244140625), SC_(0.04350323940002429317527227412108086401286), SC_(0.007341099233094427676263507625510870409001), SC_(0.8556161918819291979201905701673750189882), SC_(0.1443838081180708020798094298326249810118) }, + { SC_(1.36553132534027099609375), SC_(8.47109699249267578125), SC_(0.513298213481903076171875), SC_(0.04653027405530776618082713028079532619046), SC_(0.0002146805681266171440572997059318298984956), SC_(0.9954074066419353726177520982380355211169), SC_(0.004592593358064627382247901761964478883115) }, + { SC_(1.3862445354461669921875), SC_(7.617311954498291015625), SC_(0.1419721543788909912109375), SC_(0.02815216256571207514729830838921778816916), SC_(0.0232965505412737702410472186055010619599), SC_(0.5471888579053593157366281752785095354745), SC_(0.4528111420946406842633718247214904645255) }, + { SC_(1.41886341571807861328125), SC_(0.0478348396718502044677734375), SC_(0.035808108747005462646484375), SC_(0.006385177295013314977813904391150944527719), SC_(20.38502744980592013209006044838022953662), SC_(0.0003131306992693179449805401756033695664675), SC_(0.9996868693007306820550194598243966304335) }, + { SC_(1.4495480060577392578125), SC_(6.80287075042724609375), SC_(0.2728257477283477783203125), SC_(0.04187355433425784530323106377350995243025), SC_(0.01065109583367346217044837056635847338681), SC_(0.7972171961237270351667809026964387766247), SC_(0.2027828038762729648332190973035612233753) }, + { SC_(1.45538985729217529296875), SC_(2.826733112335205078125), SC_(0.262285530567169189453125), SC_(0.07232058763326474392191561398326810563023), SC_(0.1033248666967808362840677124824034278074), SC_(0.4117418689206221067293489816223537385391), SC_(0.5882581310793778932706510183776462614609) }, + { SC_(1.49294006824493408203125), SC_(2.3015606403350830078125), SC_(0.1450403034687042236328125), SC_(0.03333458104843787972518598613540475659445), SC_(0.1885428279185112804119711040348267326268), SC_(0.1502387340993485103618628891402245148079), SC_(0.8497612659006514896381371108597754851921) }, + { SC_(1.49865448474884033203125), SC_(1.95107400417327880859375), SC_(0.622092902660369873046875), SC_(0.2097910160492195599895120138889891219984), SC_(0.06639747044671675317657978901845091118846), SC_(0.7595936337205219111767086073336295525451), SC_(0.2404063662794780888232913926663704474549) }, + { SC_(1.52378022670745849609375), SC_(5.0319004058837890625), SC_(0.2302330434322357177734375), SC_(0.03944697844936922101076279620193394427818), SC_(0.03077530768376556951978932836749402274838), SC_(0.5617444350157084507793309583166417746211), SC_(0.4382555649842915492206690416833582253789) }, + { SC_(1.5272119045257568359375), SC_(5.402520656585693359375), SC_(0.93401730060577392578125), SC_(0.06292799976574904503574315046515802626382), SC_(0.7520189348487403543193828926006356662266e-7), SC_(0.9999988049548071581297454946461948144423), SC_(0.1195045192841870254505353805185557658584e-5) }, + { SC_(1.536567211151123046875), SC_(5.270428180694580078125), SC_(0.848482906818389892578125), SC_(0.06416111972175887791075879414924363756558), SC_(0.8453999274000799820481114978549430163278e-5), SC_(0.9998682553306220603711336554634655860262), SC_(0.0001317446693779396288663445365344139738098) }, + { SC_(1.5640494823455810546875), SC_(3.357979297637939453125), SC_(0.757224500179290771484375), SC_(0.1165334744710663931921022639371476757104), SC_(0.002283311766235317659937887474997012830956), SC_(0.9807829193286286035456321573422049721223), SC_(0.01921708067137139645436784265779502787774) }, + { SC_(1.57613086700439453125), SC_(7.25838947296142578125), SC_(0.02931735850870609283447265625), SC_(0.002175832563436668262503742006836792009797), SC_(0.03473959762182573632923311429644612349176), SC_(0.0589410052251081974514741138762064373162), SC_(0.9410589947748918025485258861237935626838) }, + { SC_(1.61484754085540771484375), SC_(4.881840229034423828125), SC_(0.801034510135650634765625), SC_(0.06286912265537787014466760187902705453397), SC_(0.6916835856354903326087903310255709631148e-4), SC_(0.9989010130804437064243723367522201778165), SC_(0.001098986919556293575627663247779822183549) }, + { SC_(1.62182295322418212890625), SC_(9.27492809295654296875), SC_(0.2078215181827545166015625), SC_(0.01729959995949158252186804671703892754059), SC_(0.005655299730024484267354449657801376771362), SC_(0.7536343087307253309388864098822535694515), SC_(0.2463656912692746690611135901177464305485) }, + { SC_(1.62611734867095947265625), SC_(6.439609527587890625), SC_(0.12340660393238067626953125), SC_(0.01347775221452777563026524001918629280781), SC_(0.02678423825261055703945294116256349202236), SC_(0.3347512643600733132669432669978196722756), SC_(0.6652487356399266867330567330021803277244) }, + { SC_(1.6564872264862060546875), SC_(1.19547176361083984375), SC_(0.2120031416416168212890625), SC_(0.04495109930684485694092120684406707050249), SC_(0.4278285627404570747669200296255427214368), SC_(0.09507832699949658242764093757178886586108), SC_(0.9049216730005034175723590624282111341389) }, + { SC_(1.6716840267181396484375), SC_(1.7211780548095703125), SC_(0.679734706878662109375), SC_(0.2085503334381458289511405610582403910942), SC_(0.07023616746131068843926100688690333052689), SC_(0.7480646758910283704247396809228029270409), SC_(0.2519353241089716295752603190771970729591) }, + { SC_(1.6792714595794677734375), SC_(9.62997531890869140625), SC_(0.57974660396575927734375), SC_(0.01904093620424363737349206735274579142167), SC_(0.1775327579500677501722344807657484477681e-4), SC_(0.999068494409670670715138094223313796706), SC_(0.0009315055903293292848619057766862032940245) }, + { SC_(1.68990039825439453125), SC_(8.0913715362548828125), SC_(0.35079205036163330078125), SC_(0.0226645038568415316808113621350425402819), SC_(0.002063289976923312081215239992056262871864), SC_(0.9165598843635630117044444052531000073656), SC_(0.08344011563643698829555559474689999263438) }, + { SC_(1.70708048343658447265625), SC_(2.395024776458740234375), SC_(0.4302643835544586181640625), SC_(0.08980982864608822287125309866743205173528), SC_(0.07512991845489259258305942961070344815958), SC_(0.5445008266631091981683775360195067301959), SC_(0.4554991733368908018316224639804932698041) }, + { SC_(1.71121060848236083984375), SC_(7.39297580718994140625), SC_(0.74067318439483642578125), SC_(0.02745961434730233864091228915779711798502), SC_(0.521932550899130264941753340104365418125e-5), SC_(0.9998099633308845359240379298808498667044), SC_(0.000190036669115464075962070119150133295605) }, + { SC_(1.71186673641204833984375), SC_(3.019131183624267578125), SC_(0.075946711003780364990234375), SC_(0.006415168420450487439488225205616221210345), SC_(0.1085093328343223297856917522112878608521), SC_(0.05582072012850319282927455370962255476197), SC_(0.944179279871496807170725446290377445238) }, + { SC_(1.73388612270355224609375), SC_(7.13903903961181640625), SC_(0.64634835720062255859375), SC_(0.02779209557143454660932449320582002039229), SC_(0.6384659511433801914272585076289501120182e-4), SC_(0.9977079721542856695385991411307131189941), SC_(0.002292027845714330461400858869286881005873) }, + { SC_(1.7587440013885498046875), SC_(4.86371135711669921875), SC_(0.92927074432373046875), SC_(0.05025191840214798474124953026366617205682), SC_(0.4987552472712844347736408922558307205113e-6), SC_(0.999990074999861018893940091331229481378), SC_(0.9925000138981106059908668770518622038381e-5) }, + { SC_(1.7813246250152587890625), SC_(3.126769542694091796875), SC_(0.730357825756072998046875), SC_(0.09545821128378472160497353516621871629293), SC_(0.004440290020519288406957293282559364396215), SC_(0.9555519856399689180508128977174066161112), SC_(0.04444801436003108194918710228259338388884) }, + { SC_(1.78766191005706787109375), SC_(4.2912654876708984375), SC_(0.802131235599517822265625), SC_(0.05894209199151744466815827080858829517), SC_(0.0001941328291968485680136018217849712475069), SC_(0.9967171927226432023534820892453162354078), SC_(0.003282807277356797646517910754683764592234) }, + { SC_(1.8184702396392822265625), SC_(9.82360553741455078125), SC_(0.2583700716495513916015625), SC_(0.01150542763210423380031442787839814236668), SC_(0.002157585461743354603071510579258404082646), SC_(0.8420856770813673219220170443209588103815), SC_(0.1579143229186326780779829556790411896185) }, + { SC_(1.82922458648681640625), SC_(2.45019245147705078125), SC_(0.567864835262298583984375), SC_(0.1015574002095356972230631741834666798307), SC_(0.038499201818446849634633242147509717005), SC_(0.7251168366147072550366996049010239306432), SC_(0.2748831633852927449633003950989760693568) }, + { SC_(1.8351116180419921875), SC_(3.857105255126953125), SC_(0.368547737598419189453125), SC_(0.04155951745596927946215901707287771729026), SC_(0.02454273931015210370518643775523748349486), SC_(0.6287155611496352580669363490252911738482), SC_(0.3712844388503647419330636509747088261518) }, + { SC_(1.83907794952392578125), SC_(5.047709941864013671875), SC_(0.296746194362640380859375), SC_(0.02579169304403219804746995259767624043878), SC_(0.0159002711761807336423937515085986731722), SC_(0.6186250402548309865228146225679030871793), SC_(0.3813749597451690134771853774320969128207) }, + { SC_(1.84816324710845947265625), SC_(5.843822479248046875), SC_(0.43872296810150146484375), SC_(0.02857508051036345809288545530305301162369), SC_(0.00336274723249159424945139991989809357113), SC_(0.8947095820177097431183829291878943644054), SC_(0.1052904179822902568816170708121056355946) }, + { SC_(1.8687260150909423828125), SC_(4.08731174468994140625), SC_(0.1081511080265045166015625), SC_(0.006706342628693429961771802325800518408771), SC_(0.05056579168641678576595382294827721958649), SC_(0.1170960836171262239382831369798635517739), SC_(0.8829039163828737760617168630201364482261) }, + { SC_(1.8866198062896728515625), SC_(8.84942626953125), SC_(0.95613896846771240234375), SC_(0.01430607123942810598918544544219325051127), SC_(0.1049011090946787241087043402801168037132e-12), SC_(0.99999999999266737126229332200080945968), SC_(0.7332628737706677999190540319984210356766e-11) }, + { SC_(1.8895499706268310546875), SC_(8.118740081787109375), SC_(0.361357867717742919921875), SC_(0.01508190132054844229537957185306981540468), SC_(0.00152836136276176340065976004671286775027), SC_(0.9079869239938364904681894159382946476945), SC_(0.09201307600616350953181058406170535230548) }, + { SC_(1.90433275699615478515625), SC_(4.56510448455810546875), SC_(0.751291930675506591796875), SC_(0.04471181800599787865845203148864731643557), SC_(0.000310565931308944037699355534374688189697), SC_(0.993101966085549718980986260141770170934), SC_(0.006898033914450281019013739858229829066022) }, + { SC_(1.909236907958984375), SC_(5.959809780120849609375), SC_(0.76244509220123291015625), SC_(0.02787899558703375276148176622369828569901), SC_(0.2597816441771601802888334328943164404273e-4), SC_(0.999069048957038894485440165620053720275), SC_(0.0009309510429611055145598343799462797249997) }, + { SC_(1.91745245456695556640625), SC_(5.4286212921142578125), SC_(0.942056357860565185546875), SC_(0.03252496420742097323876038760702826888359), SC_(0.3389589872121281319769403390228950032624e-7), SC_(0.9999989578508624800443420116036908883539), SC_(0.104214913751995565798839630911164608131e-5) }, + { SC_(1.94764292240142822265625), SC_(4.412234783172607421875), SC_(0.4232228100299835205078125), SC_(0.03404294731016211601916587129163631194493), SC_(0.01094253526676329062034068220776034644763), SC_(0.7567540762055514460904069602101669619769), SC_(0.2432459237944485539095930397898330380231) }, + { SC_(1.96595251560211181640625), SC_(8.4846782684326171875), SC_(0.15814177691936492919921875), SC_(0.006178826720288681314639338500283954981263), SC_(0.007072511346663628976181676855625587905717), SC_(0.4662794571438895014002411553158874055633), SC_(0.5337205428561104985997588446841125944367) }, + { SC_(1.97809827327728271484375), SC_(5.138592243194580078125), SC_(0.5466372966766357421875), SC_(0.03064984996767048867472200510308322337168), SC_(0.002094115042786527269319403425923906039518), SC_(0.9360457708124914965241152502793549820897), SC_(0.06395422918750850347588474972064501791034) }, + { SC_(1.9811840057373046875), SC_(8.64307498931884765625), SC_(0.680438578128814697265625), SC_(0.01243046417524263780921041523257298614424), SC_(0.4338600873108075430951736121152781456702e-5), SC_(0.9996510921040548001066360297740227834163), SC_(0.0003489078959451998933639702259772165836662) }, + { SC_(2.0774228572845458984375), SC_(5.401380062103271484375), SC_(0.412725269794464111328125), SC_(0.02076658118097194757979789708961463443791), SC_(0.005002206744587147413941043807074326193006), SC_(0.8058811784614189783383721077565365498755), SC_(0.1941188215385810216616278922434634501245) }, + { SC_(2.089349269866943359375), SC_(5.878770351409912109375), SC_(0.97059571743011474609375), SC_(0.02152232093009464317137315591896358498015), SC_(0.1639874663880437661193464960597376071962e-9), SC_(0.9999999923805863841918694764206460649879), SC_(0.7619413615808130523579353935012050371324e-8) }, + { SC_(2.21746730804443359375), SC_(8.3121433258056640625), SC_(0.4560872018337249755859375), SC_(0.008384993652043540584455387781579393117567), SC_(0.0003397527240445651863152161573652289492738), SC_(0.9610587277384102797777624641121524160602), SC_(0.03894127226158972022223753588784758393977) }, + { SC_(2.2381193637847900390625), SC_(0.177738964557647705078125), SC_(0.13206009566783905029296875), SC_(0.005209771959313113454156095010183150821445), SC_(4.657735963469510071723215852920223540659), SC_(0.001117270552760143140935910426828666711891), SC_(0.9988827294472398568590640895731713332881) }, + { SC_(2.2404003143310546875), SC_(9.182765960693359375), SC_(0.90006387233734130859375), SC_(0.006800124336193836183243959038486158685185), SC_(0.632180944223619799040497547154171330212e-10), SC_(0.9999999907033914809221680053702364328526), SC_(0.9296608519077831994629763567147435701488e-8) }, + { SC_(2.259217739105224609375), SC_(1.478290081024169921875), SC_(0.4242243468761444091796875), SC_(0.05387884094306878290852148745829185536173), SC_(0.1776046464082098048732217716337800996524), SC_(0.232754575972441110502123645783449010399), SC_(0.767245424027558889497876354216550989601) }, + { SC_(2.261876583099365234375), SC_(4.77995777130126953125), SC_(0.77493298053741455078125), SC_(0.02524715435856237905152641856691930638279), SC_(0.0001293902349124570100351392791975445797971), SC_(0.9949011878100327498698942676637562700405), SC_(0.005098812189967250130105732336243729959542) }, + { SC_(2.2766430377960205078125), SC_(7.99653148651123046875), SC_(0.431470692157745361328125), SC_(0.007987508692621355683212365675481666556691), SC_(0.0005580630251206706480819249991980235639121), SC_(0.9346956478099599688598811020565836284233), SC_(0.06530435219004003114011889794341637157665) }, + { SC_(2.289769649505615234375), SC_(5.054985523223876953125), SC_(0.22774152457714080810546875), SC_(0.00749639580197247968175994472318403697698), SC_(0.01433097419475378413625762391229404805409), SC_(0.3434401763976517653560353790675928681916), SC_(0.6565598236023482346439646209324071318084) }, + { SC_(2.304881572723388671875), SC_(1.9449536800384521484375), SC_(0.42181909084320068359375), SC_(0.04267162400975918545826194943964070440366), SC_(0.09548077954407752679296781148677056807397), SC_(0.308873554944199351252811779930663876864), SC_(0.691126445055800648747188220069336123136) }, + { SC_(2.3159439563751220703125), SC_(4.0157146453857421875), SC_(0.490352451801300048828125), SC_(0.02541298338391240785107976280668506617912), SC_(0.008371281410002501983425734786020182027124), SC_(0.7522135982219064130698833038843461965181), SC_(0.2477864017780935869301166961156538034819) }, + { SC_(2.3477990627288818359375), SC_(5.52881145477294921875), SC_(0.343905150890350341796875), SC_(0.01079728282872497101363208004072559319048), SC_(0.005947448660171923509803022530041944230881), SC_(0.6448167195684468911342719578217201877707), SC_(0.3551832804315531088657280421782798122293) }, + { SC_(2.3623058795928955078125), SC_(3.2823646068572998046875), SC_(0.9797503948211669921875), SC_(0.04824544979919274796977124655379965154987), SC_(0.8233822237290439183113528469792192047384e-6), SC_(0.9999829337652540964618174565824128065135), SC_(0.1706623474590353818254341758719348646456e-4) }, + { SC_(2.372835636138916015625), SC_(9.6864032745361328125), SC_(0.4876201450824737548828125), SC_(0.004695248674983470498753303222856166955214), SC_(0.6749254421293494045930234039400373407471e-4), SC_(0.9858290549272541339457914436234219974619), SC_(0.0141709450727458660542085563765780025381) }, + { SC_(2.3991615772247314453125), SC_(0.4047110974788665771484375), SC_(0.2878762185573577880859375), SC_(0.02412302770311051754901087149774643174004), SC_(1.593636191456647185062747776787849400842), SC_(0.01491138323763637240023825639403957854382), SC_(0.9850886167623636275997617436059604214562) }, + { SC_(2.399320125579833984375), SC_(3.3300526142120361328125), SC_(0.568866729736328125), SC_(0.03473633260470810902843102858029769862335), SC_(0.0104144135351114712946220423304125969993), SC_(0.7693412750508958329417687386843199446809), SC_(0.2306587249491041670582312613156800553191) }, + { SC_(2.399525165557861328125), SC_(8.2260494232177734375), SC_(0.2970997393131256103515625), SC_(0.004840106989165902755828959293971159201399), SC_(0.001699391069586811276887849252510747594209), SC_(0.7401343261640270162811166652769833281185), SC_(0.2598656738359729837188833347230166718815) }, + { SC_(2.4070703983306884765625), SC_(4.1576251983642578125), SC_(0.87595522403717041015625), SC_(0.02828475060029540041650736705230406362128), SC_(0.353405620582920860693824570530241063763e-4), SC_(0.9987521028143697924516293113756989791619), SC_(0.001247897185630207548370688624301020838072) }, + { SC_(2.4169127941131591796875), SC_(2.7275302410125732421875), SC_(0.3188464343547821044921875), SC_(0.01687875418932128752269745303288676836213), SC_(0.04945963164608714577434813724671861227809), SC_(0.2544342009044207266720405327338421344471), SC_(0.7455657990955792733279594672661578655529) }, + { SC_(2.428495883941650390625), SC_(3.3197727203369140625), SC_(0.948930203914642333984375), SC_(0.04411863009618537848130361956723465780333), SC_(0.1463737981882456849557537148925407150513e-4), SC_(0.9996683368203638425183455410152360080705), SC_(0.0003316631796361574816544589847639919294894) }, + { SC_(2.435249805450439453125), SC_(0.1353912651538848876953125), SC_(0.152462780475616455078125), SC_(0.004652331909113610201627081878075279800379), SC_(6.293325635628749681923748568709664485731), SC_(0.000738702474523326520995878238099811740878), SC_(0.9992612975254766734790041217619001882591) }, + { SC_(2.51083850860595703125), SC_(9.55017566680908203125), SC_(0.162266075611114501953125), SC_(0.001518864049622635513260335844822865771674), SC_(0.002332115770134649484292517375014216340894), SC_(0.3944097660107615626463647442480296351729), SC_(0.6055902339892384373536352557519703648271) }, + { SC_(2.518061161041259765625), SC_(6.547235965728759765625), SC_(0.779189288616180419921875), SC_(0.009092111878733893942041778479741627113901), SC_(0.561133501100370189571927000944368204187e-5), SC_(0.9993832154618063053896953383494710530946), SC_(0.0006167845381936946103046616505289469053556) }, + { SC_(2.5428216457366943359375), SC_(3.3244826793670654296875), SC_(0.149199068546295166015625), SC_(0.002399995515538567054182028873516302592247), SC_(0.03696306529137549247262832010542598071658), SC_(0.06097075446726977157225506370016367613526), SC_(0.9390292455327302284277449362998363238647) }, + { SC_(2.547901630401611328125), SC_(9.35214328765869140625), SC_(0.890914142131805419921875), SC_(0.003795040550828905594502219820069819256081), SC_(0.9129301329125373708690029615928052970483e-10), SC_(0.9999999759441276391155781638731269822464), SC_(0.2405587236088442183612687301775362991379e-7) }, + { SC_(2.5509512424468994140625), SC_(8.20840740203857421875), SC_(0.1338230073451995849609375), SC_(0.001144148488050650941236217367686827273247), SC_(0.003989090164218154776531410056936839620455), SC_(0.2228901801682172766380751406864276830656), SC_(0.7771098198317827233619248593135723169344) }, + { SC_(2.5644099712371826171875), SC_(3.430617809295654296875), SC_(0.996135056018829345703125), SC_(0.03605190961219250138710975965713452793869), SC_(0.153109444626530014093759122701506431833e-8), SC_(0.9999999575308382354537715812255358287304), SC_(0.4246916176454622841877446417126962132257e-7) }, + { SC_(2.575082302093505859375), SC_(8.0973453521728515625), SC_(0.1456244289875030517578125), SC_(0.001271337242296358388326731804163374322607), SC_(0.003829466829320152856984746506737389358397), SC_(0.2492425163653570912031525844886745893989), SC_(0.7507574836346429087968474155113254106011) }, + { SC_(2.580646991729736328125), SC_(1.6232850551605224609375), SC_(0.44564163684844970703125), SC_(0.0377249456934484343910391063994086011081), SC_(0.1242724939494340917109686980126619998491), SC_(0.2328737156378008655991719004924116644353), SC_(0.7671262843621991344008280995075883355647) }, + { SC_(2.5987040996551513671875), SC_(0.450595438480377197265625), SC_(0.25435674190521240234375), SC_(0.01228415692678274516836296624561764955031), SC_(1.328266257117124041622388146825369565435), SC_(0.009163517312061644380267909038777200104402), SC_(0.9908364826879383556197320909612227998956) }, + { SC_(2.6072800159454345703125), SC_(6.592105865478515625), SC_(0.7979488372802734375), SC_(0.007884838346507539476900184692061855773416), SC_(0.2937782577676189091319476101695193820282e-5), SC_(0.9996275524901317276307400161571077657795), SC_(0.0003724475098682723692599838428922342204645) }, + { SC_(2.618711948394775390625), SC_(3.2779777050018310546875), SC_(0.50790750980377197265625), SC_(0.023750351150236109270050432819465041679), SC_(0.01401877012948928122183870391771191247343), SC_(0.6288298574472101652212289824463236915355), SC_(0.3711701425527898347787710175536763084645) }, + { SC_(2.622117519378662109375), SC_(0.420541226863861083984375), SC_(0.449611127376556396484375), SC_(0.05939167504979013561568807306246474008024), SC_(1.412902245650176811448220194005078158683), SC_(0.0403395505576452992252545026365654187569), SC_(0.9596604494423547007747454973634345812431) }, + { SC_(2.624822139739990234375), SC_(1.81572973728179931640625), SC_(0.472009599208831787109375), SC_(0.03768860759801834256872385684383238338531), SC_(0.08952029547236269953542673443903381549088), SC_(0.2962733479209887974142744336390002731336), SC_(0.7037266520790112025857255663609997268664) }, + { SC_(2.6297128200531005859375), SC_(3.4021968841552734375), SC_(0.2173161208629608154296875), SC_(0.0045730987768145964998707813463808901918), SC_(0.02990559142258419351014993337885054145869), SC_(0.1326355134248788341608130493252147390037), SC_(0.8673644865751211658391869506747852609963) }, + { SC_(2.6380290985107421875), SC_(0.953551769256591796875), SC_(0.2599444091320037841796875), SC_(0.01095005985612260389209574837477314758979), SC_(0.4003480518823815872467548079876060089014), SC_(0.02662317074551621443047859631250405387502), SC_(0.973376829254483785569521403687495946125) }, + { SC_(2.6528089046478271484375), SC_(9.9647502899169921875), SC_(0.78027403354644775390625), SC_(0.002720755708289861191716679022785944840217), SC_(0.1922096147955325473810365921892668497513e-7), SC_(0.9999929354827285025847486328201872478872), SC_(0.7064517271497415251367179812752112809541e-5) }, + { SC_(2.6647150516510009765625), SC_(0.6914005279541015625), SC_(0.8443243503570556640625), SC_(0.3338388990912521097149652457882997226136), SC_(0.3587830340198169044726444527920341939433), SC_(0.4819929648946269021179782174331735323932), SC_(0.5180070351053730978820217825668264676068) }, + { SC_(2.690616130828857421875), SC_(8.5707244873046875), SC_(0.954947888851165771484375), SC_(0.003704566410662790071456740953562211095793), SC_(0.3148578557357761795055596035830456645775e-12), SC_(0.9999999999150081761787922438355088794653), SC_(0.8499182382120775616449112053473741679287e-10) }, + { SC_(2.691194057464599609375), SC_(9.71877384185791015625), SC_(0.705803692340850830078125), SC_(0.002710844747188206389928947601937055242347), SC_(0.4174483979257276290967368009774575243537e-6), SC_(0.9998460317122389257264163077317288544378), SC_(0.0001539682877610742735836922682711455622217) }, + { SC_(2.7602508068084716796875), SC_(7.05774211883544921875), SC_(0.117505915462970733642578125), SC_(0.000574766465256828612079626877160217999309), SC_(0.004819230030395527988337044870779590745593), SC_(0.1065566997902388599258529505134237279123), SC_(0.8934433002097611400741470494865762720877) }, + { SC_(2.7692296504974365234375), SC_(8.72428798675537109375), SC_(0.078267715871334075927734375), SC_(0.0001987484786553745542542012110923732592629), SC_(0.002931960363049194638969543764821190961544), SC_(0.06348353957666739408926113566240774668759), SC_(0.9365164604233326059107388643375922533124) }, + { SC_(2.784982204437255859375), SC_(1.8838198184967041015625), SC_(0.015501900576055049896240234375), SC_(0.3243607632796906054136076476148372299958e-5), SC_(0.1072883437222704505886445142612816912895), SC_(0.3023170514593439976976130859174697645705e-4), SC_(0.9999697682948540656002302386914082530235) }, + { SC_(2.8100528717041015625), SC_(2.62048816680908203125), SC_(0.849144399166107177734375), SC_(0.0502472027112171152391889093367380663655), SC_(0.002180478270593930517838741239781208789305), SC_(0.9584097898331529684191233768379440909759), SC_(0.04159021016684703158087662316205590902405) }, + { SC_(2.858390331268310546875), SC_(6.79819774627685546875), SC_(0.1712695658206939697265625), SC_(0.001050184749972493355186107000835243886465), SC_(0.004125204275420250058294841847220296596725), SC_(0.2029189969719809141603999311713129545789), SC_(0.7970810030280190858396000688286870454211) }, + { SC_(2.8749816417694091796875), SC_(5.930869579315185546875), SC_(0.957171261310577392578125), SC_(0.007152239662524918565106768420040748709892), SC_(0.1206393724925854448038606724130636701132e-8), SC_(0.9999998313264685801541427753935794813286), SC_(0.1686735314198458572246064205186713615043e-6) }, + { SC_(2.8906457424163818359375), SC_(0.554414272308349609375), SC_(0.87737619876861572265625), SC_(0.4104172931136211264648003088647864717129), SC_(0.5184153535807367870702296242575624745465), SC_(0.441863552680091384254248392993168644891), SC_(0.558136447319908615745751607006831355109) }, + { SC_(2.9044067859649658203125), SC_(0.7806694507598876953125), SC_(0.779711425304412841796875), SC_(0.2055850032161848069379814782539558806517), SC_(0.3255297758972347657116559730242711422621), SC_(0.3870820607917636670069741339443865739959), SC_(0.6129179392082363329930258660556134260041) }, + { SC_(2.91984081268310546875), SC_(8.2463169097900390625), SC_(0.663639128208160400390625), SC_(0.002871135378215250110511669328800495605487), SC_(0.7675244790074839837094968193316868064319e-5), SC_(0.9973338834000611359774823654811631729554), SC_(0.002666116599938864022517634518836827044588) }, + { SC_(2.9632079601287841796875), SC_(2.8780498504638671875), SC_(0.3564095199108123779296875), SC_(0.008933043563400443343164238497992499761011), SC_(0.02884968873172709619337346261385956882195), SC_(0.2364319100488253592284011357633582306721), SC_(0.7635680899511746407715988642366417693279) }, + { SC_(2.9667584896087646484375), SC_(6.557798862457275390625), SC_(0.45855104923248291015625), SC_(0.004127498628102374784013444962557551518574), SC_(0.0007938201947575470783084765241152787338545), SC_(0.8386976696022642529872677056250476163165), SC_(0.1613023303977357470127322943749523836835) }, + { SC_(3.0124633312225341796875), SC_(0.18450842797756195068359375), SC_(0.417325317859649658203125), SC_(0.03273624317172758052863465356510716397569), SC_(4.152711639725853649633019588051145023338), SC_(0.007821443269068808311001274622174009634926), SC_(0.9921785567309311916889987253778259903651) }, + { SC_(3.014549732208251953125), SC_(3.1048996448516845703125), SC_(0.7161290645599365234375), SC_(0.02639699138454097442882667741858511042723), SC_(0.003986227235504262264034042068536250337501), SC_(0.8688016801197500225229996790635078757689), SC_(0.1311983198802499774770003209364921242311) }, + { SC_(3.0634949207305908203125), SC_(1.0806190967559814453125), SC_(0.3886309564113616943359375), SC_(0.01753974376689889118941219097759183807165), SC_(0.2648262685187510209830954637905505617245), SC_(0.0621170502247103353512264670283469381013), SC_(0.9378829497752896646487735329716530618987) }, + { SC_(3.11102294921875), SC_(0.89823162555694580078125), SC_(0.4357551038265228271484375), SC_(0.02528170364324787969185521763047124442766), SC_(0.3662514023616783202792127472238438956332), SC_(0.06457104969031607199197851349933700870917), SC_(0.9354289503096839280080214865006629912908) }, + { SC_(3.1121504306793212890625), SC_(8.626781463623046875), SC_(0.21028804779052734375), SC_(0.0007104652853608580262042451868831532457621), SC_(0.001211277951360573517581804347092906482725), SC_(0.3696983404364359015379132224531359392858), SC_(0.6303016595635640984620867775468640607142) }, + { SC_(3.127189159393310546875), SC_(4.91752147674560546875), SC_(0.800300419330596923828125), SC_(0.008626021941275769482906968021517443576593), SC_(0.5021204238918015541387788377816565263232e-4), SC_(0.9942126915337096566702439345043125984516), SC_(0.005787308466290343329756065495687401548407) }, + { SC_(3.17099475860595703125), SC_(7.63749980926513671875), SC_(0.0899141728878021240234375), SC_(0.9550422207939347013615664029270850590691e-4), SC_(0.002393619425794835493665836526998416474008), SC_(0.03836861305020196825391331840930113370494), SC_(0.9616313869497980317460866815906988662951) }, + { SC_(3.1877830028533935546875), SC_(4.20189952850341796875), SC_(0.45890295505523681640625), SC_(0.00704186067780141233363288553853170980989), SC_(0.005282236270111228562607370010898396014828), SC_(0.571389588021222730804833098256358551602), SC_(0.428610411978777269195166901743641448398) }, + { SC_(3.1959974765777587890625), SC_(3.2532787322998046875), SC_(0.8173215389251708984375), SC_(0.02261037305616861802405065933992409367642), SC_(0.0008771689075638317917629248021845505695829), SC_(0.9626538652312666600586238289909526469751), SC_(0.03734613476873333994137617100904735302488) }, + { SC_(3.2247180938720703125), SC_(3.046635150909423828125), SC_(0.920882701873779296875), SC_(0.02692022140498910244580165186851523254319), SC_(0.0001260179022383322391490758442199226459111), SC_(0.9953406497366657149466795065471257745502), SC_(0.004659350263334285053320493452874225449821) }, + { SC_(3.251456737518310546875), SC_(6.829664707183837890625), SC_(0.82347548007965087890625), SC_(0.003072413217043238435586366088141114641613), SC_(0.7217225736871591548793163517788923122308e-6), SC_(0.9997651510305053107156452668329136836925), SC_(0.0002348489694946892843547331670863163075266) }, + { SC_(3.341630458831787109375), SC_(7.199709415435791015625), SC_(0.543851077556610107421875), SC_(0.002211092828440249015185077033714369015069), SC_(0.000148803480263564200603960902867601262049), SC_(0.9369449074034547821701533612210988436642), SC_(0.06305509259654521782984663877890115633581) }, + { SC_(3.3535683155059814453125), SC_(1.29066169261932373046875), SC_(0.508557856082916259765625), SC_(0.02666555765253891929560130152425942239313), SC_(0.1523792615145851333665426314584849331614), SC_(0.1489323051992291878515112468071005639974), SC_(0.8510676948007708121484887531928994360026) }, + { SC_(3.3712265491485595703125), SC_(3.885697841644287109375), SC_(0.19995288550853729248046875), SC_(0.0008086714614512974049214002590705149492911), SC_(0.01205090945524301781354154966642099121593), SC_(0.0628847445877088930901049863593150226734), SC_(0.9371152554122911069098950136406849773266) }, + { SC_(3.3771941661834716796875), SC_(8.87726116180419921875), SC_(0.3082362115383148193359375), SC_(0.0007675852185268053563112476726240395605536), SC_(0.000443944169925614056391310270079986897049), SC_(0.6335671473122922542070315829787835850029), SC_(0.3664328526877077457929684170212164149971) }, + { SC_(3.394934177398681640625), SC_(6.16272258758544921875), SC_(0.68680679798126220703125), SC_(0.00341612545067499739532823189209030444151), SC_(0.6004246521395373073900716227994039951573e-4), SC_(0.9827273979086251270287764218567886199783), SC_(0.01727260209137487297122357814321138002167) }, + { SC_(3.4038574695587158203125), SC_(8.767574310302734375), SC_(0.12993355095386505126953125), SC_(0.0001265599990061511079472533509698684696025), SC_(0.001085291714122214276635480771217256262071), SC_(0.1044352189587945409799702481375273255486), SC_(0.8955647810412054590200297518624726744514) }, + { SC_(3.4112460613250732421875), SC_(7.230242252349853515625), SC_(0.93900763988494873046875), SC_(0.00213642299598618217609312456804844157662), SC_(0.1997379046394552152960612082822913744712e-9), SC_(0.9999999065082681000572618925659394938792), SC_(0.9349173189994273810743406050612079220705e-7) }, + { SC_(3.438770294189453125), SC_(2.037597179412841796875), SC_(0.7939956188201904296875), SC_(0.04896851324710769560853528658685599913346), SC_(0.01373131053597841043136711804351216596933), SC_(0.7809992164653807773340193178169519137939), SC_(0.2190007835346192226659806821830480862061) }, + { SC_(3.444624423980712890625), SC_(2.2622740268707275390625), SC_(0.904890477657318115234375), SC_(0.04682650450606622225676225402991465214856), SC_(0.001827573877341612166691972016401816163686), SC_(0.962437396040269933237949745827329477572), SC_(0.03756260395973006676205025417267052242804) }, + { SC_(3.499837398529052734375), SC_(9.07364749908447265625), SC_(0.15769731998443603515625), SC_(0.0001595676014392862943646232346637282648971), SC_(0.0007954044601255210393761215597156122794561), SC_(0.1670913818963671822695130478083958726536), SC_(0.8329086181036328177304869521916041273464) }, + { SC_(3.5021800994873046875), SC_(0.6873857975006103515625), SC_(0.988522708415985107421875), SC_(0.5073660342424767846839047605210881249186), SC_(0.06669260635138630073271025616499775701394), SC_(0.8838226591583172293252640451723733711315), SC_(0.1161773408416827706747359548276266288685) }, + { SC_(3.507271289825439453125), SC_(9.90110015869140625), SC_(0.4018678367137908935546875), SC_(0.0006303375202500836777029647923567590031211), SC_(0.893415450734820498924837265842568051911e-4), SC_(0.8758591858812589788924012123963645202476), SC_(0.1241408141187410211075987876036354797524) }, + { SC_(3.509523868560791015625), SC_(1.9955120086669921875), SC_(0.2785703837871551513671875), SC_(0.002518168664557284054635975386953824482137), SC_(0.06100657246447784953562131084727446764158), SC_(0.03964075444939215114060950283596675958899), SC_(0.960359245550607848859390497164033240411) }, + { SC_(3.5165951251983642578125), SC_(0.67595374584197998046875), SC_(0.16295583546161651611328125), SC_(0.0005037787744294979435424091499216027477279), SC_(0.5890276587815100401046801862379880253751), SC_(0.0008545409834597587778080052231511605543407), SC_(0.9991454590165402412221919947768488394457) }, + { SC_(3.531585693359375), SC_(0.53152573108673095703125), SC_(0.3439953327178955078125), SC_(0.007582184914246779034529741378085707778332), SC_(0.8768734775589902175371326044812673096379), SC_(0.008572713405491041890176212533880101987811), SC_(0.9914272865945089581098237874661198980122) }, + { SC_(3.674366474151611328125), SC_(1.5157415866851806640625), SC_(0.498414218425750732421875), SC_(0.01626513473616858113656075588891836370069), SC_(0.0956337109094846385186640122504500168283), SC_(0.1453556973024985841272291527358008650346), SC_(0.8546443026975014158727708472641991349654) }, + { SC_(3.6848456859588623046875), SC_(3.4392974376678466796875), SC_(0.369309842586517333984375), SC_(0.003034418852919506203403439253998317470373), SC_(0.0109770680323691467025482811847071089959), SC_(0.2165665127307431833757078076730444355636), SC_(0.7834334872692568166242921923269555644364) }, + { SC_(3.689165592193603515625), SC_(6.343033313751220703125), SC_(0.753753721714019775390625), SC_(0.002286485687952490352199724116467186529223), SC_(0.1146042802415995661185446288837819384688e-4), SC_(0.995012751628734706448963807994251665798), SC_(0.004987248371265293551036192005748334201973) }, + { SC_(3.6924679279327392578125), SC_(0.332685649394989013671875), SC_(0.3112839162349700927734375), SC_(0.004403067325320050811341626534627106880183), SC_(1.787532718402722553681756796726057156333), SC_(0.002457156869341239214405399462686750970898), SC_(0.9975428431306587607855946005373132490291) }, + { SC_(3.7240974903106689453125), SC_(1.95324766635894775390625), SC_(0.680319011211395263671875), SC_(0.03070754463474470509489852074407147827997), SC_(0.02953364960519138166479753966735371292935), SC_(0.5097432914832148659671128156250804657633), SC_(0.4902567085167851340328871843749195342367) }, + { SC_(3.762722015380859375), SC_(1.7316303253173828125), SC_(0.761755049228668212890625), SC_(0.04819870316749823556815112747531236095765), SC_(0.03101140726001127715477086541673927818416), SC_(0.6084918062525377124364310570386615728699), SC_(0.3915081937474622875635689429613384271301) }, + { SC_(3.7860939502716064453125), SC_(1.4014384746551513671875), SC_(0.3949687182903289794921875), SC_(0.006738681221878219586257799208954857661079), SC_(0.1214383490093244204509172871531264012822), SC_(0.0525732357016163402814641163958969070086), SC_(0.9474267642983836597185358836041030929914) }, + { SC_(3.804458141326904296875), SC_(2.0806806087493896484375), SC_(0.1819288432598114013671875), SC_(0.000339663825744559203667503296831169048772), SC_(0.04920455418500763874393422890478378400164), SC_(0.006855771256109937874856175412338436576411), SC_(0.9931442287438900621251438245876615634236) }, + { SC_(3.815584659576416015625), SC_(2.1020905971527099609375), SC_(0.0976306498050689697265625), SC_(0.3346503003511307025994365425596946350141e-4), SC_(0.04798471509940414812131393471654899623967), SC_(0.0006969241638251121010389345381483734912583), SC_(0.9993030758361748878989610654618516265087) }, + { SC_(3.846190929412841796875), SC_(0.18211762607097625732421875), SC_(0.775735080242156982421875), SC_(0.2305236204942783996346011481007016559976), SC_(3.815090868013124139424764239059567326492), SC_(0.05698111403079542207160108451162265577819), SC_(0.9430188859692045779283989154883773442218) }, + { SC_(3.8677120208740234375), SC_(9.8445262908935546875), SC_(0.910656511783599853515625), SC_(0.0004415987203700542331960592324491142784921), SC_(0.3760552084345910234203225117480150225887e-11), SC_(0.9999999914842324516460849337297567421705), SC_(0.8515767548353915066270243257829503241677e-8) }, + { SC_(3.897388458251953125), SC_(2.10301876068115234375), SC_(0.317167758941650390625), SC_(0.00211995915782613286649077826233994974427), SC_(0.04398177189361145708293661128942341147588), SC_(0.0459843721586247507130171123335138093625), SC_(0.9540156278413752492869828876664861906375) }, + { SC_(3.9093780517578125), SC_(6.172049045562744140625), SC_(0.647781193256378173828125), SC_(0.001892431230992244536103849138578750819333), SC_(0.9136737720090860826601151827042570517444e-4), SC_(0.9539432194258235933399966227832436131393), SC_(0.04605678057417640666000337721675638686074) }, + { SC_(3.922270298004150390625), SC_(4.2208766937255859375), SC_(0.05987356603145599365234375), SC_(0.3485261164462027350126100419607149182019e-5), SC_(0.006443943947570980055585930868032630154809), SC_(0.000540566022770741579637538880453495215718), SC_(0.9994594339772292584203624611195465047843) }, + { SC_(3.955152034759521484375), SC_(6.36468601226806640625), SC_(0.493377506732940673828125), SC_(0.00132096005133563113867213648962620481785), SC_(0.0003909565446960733947620235350881702597231), SC_(0.7716264065654090332018153544028481103726), SC_(0.2283735934345909667981846455971518896274) }, + { SC_(3.9925777912139892578125), SC_(8.58099269866943359375), SC_(0.6551325321197509765625), SC_(0.00059687247521963783109417389221041362613), SC_(0.4186275658160856881103523204909974622039e-5), SC_(0.9930351639468735245403112532730405823494), SC_(0.006964836053126475459688746726959417650638) }, + { SC_(3.9978263378143310546875), SC_(8.5587520599365234375), SC_(0.2530306875705718994140625), SC_(0.0002000342445191602250991895557390544408533), SC_(0.0004024991800349779513010748374275834394527), SC_(0.3319886272984461897376859048400700505655), SC_(0.6680113727015538102623140951599299494345) }, + { SC_(4.018080234527587890625), SC_(3.823329448699951171875), SC_(0.2827450335025787353515625), SC_(0.0007601447127604919068109672519485030363815), SC_(0.00732017134542074002847796227631289188979), SC_(0.09407363614086031579750027558139831732109), SC_(0.9059263638591396842024997244186016826789) }, + { SC_(4.039121150970458984375), SC_(4.924419879913330078125), SC_(0.322578489780426025390625), SC_(0.0008165978619909246999400404020562364744431), SC_(0.00280564472240535747675278521265628616294), SC_(0.2254398602425537884432852190281784932106), SC_(0.7745601397574462115567147809718215067894) }, + { SC_(4.07619190216064453125), SC_(5.160478115081787109375), SC_(0.82121193408966064453125), SC_(0.003000217804080632625650897723212864585433), SC_(0.1634719567696898287973096826539913560409e-4), SC_(0.9945808574725614815820228211556819509052), SC_(0.005419142527438518417977178844318049094759) }, + { SC_(4.0871982574462890625), SC_(1.3373639583587646484375), SC_(0.4468390643596649169921875), SC_(0.007815051877947138848886749252571214308732), SC_(0.1211517004676313751464524014370263674099), SC_(0.06059741550291949701446852158409554478327), SC_(0.9394025844970805029855314784159044552167) }, + { SC_(4.16158580780029296875), SC_(4.334296703338623046875), SC_(0.9928820133209228515625), SC_(0.004915977639327343176813956171124129607676), SC_(0.111326273595334058479857113143408645365e-9), SC_(0.9999999773541949858230378475985897252633), SC_(0.2264580501417696215240141027473673643647e-7) }, + { SC_(4.16799449920654296875), SC_(6.17279148101806640625), SC_(0.655775129795074462890625), SC_(0.001453834981663703224201116746393444570994), SC_(0.7456889254363368424142544897214738315206e-4), SC_(0.9512112643771550799991205368248023521183), SC_(0.04878873562284492000087946317519764788174) }, + { SC_(4.1726703643798828125), SC_(9.81723117828369140625), SC_(0.2999017238616943359375), SC_(0.0001595726362735232103091708394959724349356), SC_(0.0001376529394698152122204501560228893629794), SC_(0.5368738402623807079559457167606133580281), SC_(0.4631261597376192920440542832393866419719) }, + { SC_(4.177441120147705078125), SC_(5.667774200439453125), SC_(0.710732758045196533203125), SC_(0.001955842728313271240461714679655013009371), SC_(0.642197499106641079211196036594811466788e-4), SC_(0.9682090278875300284124753336426606374581), SC_(0.03179097211246997158752466635733936254185) }, + { SC_(4.217612743377685546875), SC_(1.12464511394500732421875), SC_(0.0365376062691211700439453125), SC_(0.20488203214435709486578084489485509793e-6), SC_(0.1837138480169170254057649584408135530396), SC_(0.1115222428068968937946350222553614039584e-5), SC_(0.999998884777571931031062053649777446386) }, + { SC_(4.22835636138916015625), SC_(5.63964939117431640625), SC_(0.706075489521026611328125), SC_(0.001888734028667347821779058752147186501344), SC_(0.7098706947284053362226644050757628201671e-4), SC_(0.9637769529857036400422998604666430889328), SC_(0.03622304701429635995770013953335691106718) }, + { SC_(4.2288570404052734375), SC_(3.947277069091796875), SC_(0.807550251483917236328125), SC_(0.006061291656177201742722114760473465318425), SC_(0.0002224131471504115649228682715632446570155), SC_(0.9646047747130594132571357327170893886648), SC_(0.03539522528694058674286426728291061133519) }, + { SC_(4.234529018402099609375), SC_(6.98146915435791015625), SC_(0.8350250720977783203125), SC_(0.0009337114805446995691056713848520742605454), SC_(0.2980464818946349573530523199543153357105e-6), SC_(0.9996808956726132530854226125950651408583), SC_(0.0003191043273867469145773874049348591416735) }, + { SC_(4.24166774749755859375), SC_(7.819091796875), SC_(0.4625279605388641357421875), SC_(0.0004933174328214183747087477640676701073185), SC_(0.0001273328163186150567482042129753385526036), SC_(0.7948396597035994256120514978087655306256), SC_(0.2051603402964005743879485021912344693744) }, + { SC_(4.2434902191162109375), SC_(0.03001205064356327056884765625), SC_(0.91574394702911376953125), SC_(0.7913118669578982010057645632445222616139), SC_(30.70086471660855969709438760268700586521), SC_(0.02512725231481230674371021454267426341113), SC_(0.9748727476851876932562897854573257365889) }, + { SC_(4.25259304046630859375), SC_(7.69965648651123046875), SC_(0.800088465213775634765625), SC_(0.000647459387938309640207339154469609485359), SC_(0.2858671995876147011552133505101127691791e-6), SC_(0.9995586734177979320327844004192514883373), SC_(0.0004413265822020679672155995807485116626982) }, + { SC_(4.257288455963134765625), SC_(9.00022125244140625), SC_(0.9619019031524658203125), SC_(0.0003666435683632549874185282786292281191341), SC_(0.1675816850101715394970763133208675211631e-13), SC_(0.9999999999542930247622729275804929675019), SC_(0.4570697523772707241950703249807441224536e-10) }, + { SC_(4.2825298309326171875), SC_(7.26893138885498046875), SC_(0.762955129146575927734375), SC_(0.0007678999559307638251236970534436173693689), SC_(0.1831468126780327434607538402149569904173e-5), SC_(0.9976206400446457423279817764123196742157), SC_(0.002379359955354257672018223587680325784283) }, + { SC_(4.302073955535888671875), SC_(6.330636501312255859375), SC_(0.4361739456653594970703125), SC_(0.0007323890497460165920865639771603831807549), SC_(0.0004960371243454562744368325883204754637519), SC_(0.5962011109765562252185491992036464270708), SC_(0.4037988890234437747814508007963535729292) }, + { SC_(4.3141384124755859375), SC_(7.499410152435302734375), SC_(0.257582485675811767578125), SC_(0.0001523524314670596952859386396182223010862), SC_(0.00051298876570815563125771301650668420985), SC_(0.2289839139886271073985185628556134414714), SC_(0.7710160860113728926014814371443865585286) }, + { SC_(4.31651210784912109375), SC_(3.593244075775146484375), SC_(0.66931819915771484375), SC_(0.005962783355305816920422168541076375755496), SC_(0.001980719830818929872695793117050213868802), SC_(0.7506490795800602143785187162493448549819), SC_(0.2493509204199397856214812837506551450181) }, + { SC_(4.323915004730224609375), SC_(2.4431965351104736328125), SC_(0.6397993564605712890625), SC_(0.01179352463873967035321228543041242241238), SC_(0.01321132025387695410494016305688434155583), SC_(0.4716495818865101754914612013681178719455), SC_(0.5283504181134898245085387986318821280545) }, + { SC_(4.35698699951171875), SC_(4.730150699615478515625), SC_(0.4353021681308746337890625), SC_(0.001270595459129720618447321421967813299846), SC_(0.001899346260206705004200144865581969908912), SC_(0.4008261260385880423883646928419693290388), SC_(0.5991738739614119576116353071580306709612) }, + { SC_(4.358585834503173828125), SC_(4.88617706298828125), SC_(0.385771930217742919921875), SC_(0.000873444821049616508120588729906931218686), SC_(0.001966066589777316856366801722914081278398), SC_(0.3076039130250399555159053975412494098092), SC_(0.6923960869749600444840946024587505901908) }, + { SC_(4.38744354248046875), SC_(1.25896632671356201171875), SC_(0.0972220599651336669921875), SC_(0.8079338763992022673426412364828437244812e-5), SC_(0.1357239448119721714929359565157081047217), SC_(0.5952418977425382436263032468692206509502e-4), SC_(0.9999404758102257461756373696753130779349) }, + { SC_(4.38869953155517578125), SC_(6.80406665802001953125), SC_(0.441279351711273193359375), SC_(0.0005625161947369272680055511361920511152622), SC_(0.0003105393995597920009107785226144372460028), SC_(0.6443074168604993123923960868020104779396), SC_(0.3556925831395006876076039131979895220604) }, + { SC_(4.40085124969482421875), SC_(4.833751678466796875), SC_(0.85304582118988037109375), SC_(0.002833024912591884527246949566995738205669), SC_(0.1257055868290681442472551954320936548115e-4), SC_(0.9955824505591881053120414314258630456422), SC_(0.004417549440811894687958568574136954357805) }, + { SC_(4.4267826080322265625), SC_(6.042315006256103515625), SC_(0.2399921715259552001953125), SC_(0.0001389011455829871630376160257617134120336), SC_(0.001146172954177140036185869871464208744483), SC_(0.1080880438014543634757913324639884753479), SC_(0.8919119561985456365242086675360115246521) }, + { SC_(4.4558620452880859375), SC_(4.87568950653076171875), SC_(0.111208103597164154052734375), SC_(0.8737041037785171974163307774126204250124e-5), SC_(0.002635213041449158075813184554804281086475), SC_(0.003304540844268499363827724559721339421078), SC_(0.9966954591557315006361722754402786605789) }, + { SC_(4.46783733367919921875), SC_(7.55789852142333984375), SC_(0.387357175350189208984375), SC_(0.0003095008850999087524788129936783954754585), SC_(0.0002387992000988523661335067068728399564781), SC_(0.5644735309273449447753561304968009317269), SC_(0.4355264690726550552246438695031990682731) }, + { SC_(4.501377105712890625), SC_(9.73915004730224609375), SC_(0.9817249774932861328125), SC_(0.0002021203841721295438561479180561355795204), SC_(0.1142994500838962175228667868690677069228e-17), SC_(0.9999999999999943449815538369451844227015), SC_(0.5655018446163054815577298543453841986834e-14) }, + { SC_(4.50541591644287109375), SC_(7.204934597015380859375), SC_(0.2238895595073699951171875), SC_(0.7677865135582137496042118502912680267248e-4), SC_(0.0005524815694234338122096947721653437890131), SC_(0.1220141506175953966762814987386765667457), SC_(0.8779858493824046033237185012613234332543) }, + { SC_(4.5092372894287109375), SC_(3.7850043773651123046875), SC_(0.3532232344150543212890625), SC_(0.0007968680936695002518585727802563476288224), SC_(0.005125824028528572515404795689671693648465), SC_(0.1345449125546915552987201345041763077545), SC_(0.8654550874453084447012798654958236922455) }, + { SC_(4.537976741790771484375), SC_(4.369328975677490234375), SC_(0.63310039043426513671875), SC_(0.002762624915706083383253982471768001842809), SC_(0.0008416809728271810048334780109156618416524), SC_(0.766479039555187555502980928180056018741), SC_(0.233520960444812444497019071819943981259) }, + { SC_(4.5742435455322265625), SC_(0.944407641887664794921875), SC_(0.8558895587921142578125), SC_(0.1153225004287323657315193236681473951993), SC_(0.1323463706705529555673381822924659652411), SC_(0.465631792630499630263333244029486499679), SC_(0.534368207369500369736666755970513500321) }, + { SC_(4.58725452423095703125), SC_(5.332294940948486328125), SC_(0.982362329959869384765625), SC_(0.001738570953008792154519728834911620451865), SC_(0.7930354071259105373355931983243022755784e-10), SC_(0.9999999543857919873910349588790741402221), SC_(0.4561420801260896504112092585977792265085e-7) }, + { SC_(4.58848857879638671875), SC_(2.137727260589599609375), SC_(0.4886601269245147705078125), SC_(0.00455430106153504018813078846284619613673), SC_(0.0278141825077712670505896683515525386871), SC_(0.1407017122622851357576518311915633940965), SC_(0.8592982877377148642423481688084366059035) }, + { SC_(4.607259273529052734375), SC_(5.297629833221435546875), SC_(0.754711210727691650390625), SC_(0.001701733513898066203341389589425216735055), SC_(0.4833571921485870611611141300227154031345e-4), SC_(0.9723806816894427415508916411884759589432), SC_(0.02761931831055725844910835881152404105676) }, + { SC_(4.609163761138916015625), SC_(4.464239597320556640625), SC_(0.917126178741455078125), SC_(0.003177016906036128958035803489443204712842), SC_(0.2584011233363429895212256270643711409595e-5), SC_(0.9991873158611419479264171634299491469647), SC_(0.0008126841388580520735828365700508530352858) }, + { SC_(4.62449169158935546875), SC_(4.69015598297119140625), SC_(0.913384497165679931640625), SC_(0.002648599834731963898416891188016814860933), SC_(0.1697340977886516276421807912591963390796e-5), SC_(0.9993595657900394117927935760301221664377), SC_(0.0006404342099605882072064239698778335622501) }, + { SC_(4.693906307220458984375), SC_(3.872959136962890625), SC_(0.196675598621368408203125), SC_(0.6224237026848410457525560691244094625343e-4), SC_(0.004798899005565194840196862622125358148202), SC_(0.01280406502429887161160881425215428199059), SC_(0.9871959349757011283883911857478457180094) }, + { SC_(4.70923328399658203125), SC_(9.00183200836181640625), SC_(0.4202479422092437744140625), SC_(0.000158225208277054586885876378105519932316), SC_(0.5674929033569588555189634312012598987484e-4), SC_(0.7360185012552461107213884928708813355786), SC_(0.2639814987447538892786115071291186644214) }, + { SC_(4.70924282073974609375), SC_(7.485051631927490234375), SC_(0.80975353717803955078125), SC_(0.0004420124670015826250696273308415092735237), SC_(0.2733893716591851934792090767797141273164e-6), SC_(0.9993818717742841998195431289280619690091), SC_(0.000618128225715800180456871071938030990896) }, + { SC_(4.710883617401123046875), SC_(3.1823215484619140625), SC_(0.585309207439422607421875), SC_(0.004182974042531005969813386052752853862515), SC_(0.004996399700123027483777650816833831243609), SC_(0.4556927476537829881389520071075269108672), SC_(0.5443072523462170118610479928924730891328) }, + { SC_(4.7135715484619140625), SC_(2.475850582122802734375), SC_(0.92750012874603271484375), SC_(0.01948069384902283527167207628290575644802), SC_(0.0005008590400585332359448614151044972222606), SC_(0.9749339281667031776467067211271153110098), SC_(0.02506607183329682235329327887288468899022) }, + { SC_(4.73288822174072265625), SC_(9.87459564208984375), SC_(0.16269548237323760986328125), SC_(0.1118768224668481038708684146831473990511e-4), SC_(0.0001332344114234768481115225936213370067112), SC_(0.07746517144555315795939763197808416266876), SC_(0.9225348285544468420406023680219158373312) }, + { SC_(4.73486042022705078125), SC_(2.15629291534423828125), SC_(0.933999836444854736328125), SC_(0.02860622310415008153968542990686413539652), SC_(0.001113277625266835850317121039576934930407), SC_(0.9625405004140970361077506667187941519677), SC_(0.03745949958590296389224933328120584803232) }, + { SC_(4.799221515655517578125), SC_(4.0151958465576171875), SC_(0.54726588726043701171875), SC_(0.001999651543873986595861462311584078056876), SC_(0.002012974352945711886168733276820735381988), SC_(0.4983398889636977374834803331212879357163), SC_(0.5016601110363022625165196668787120642837) }, + { SC_(4.820220470428466796875), SC_(8.77573108673095703125), SC_(0.763773620128631591796875), SC_(0.0002099075745047356172104463746743265243803), SC_(0.1457556832397700656046572424828174287601e-6), SC_(0.9993061015356941295191725636277212117678), SC_(0.0006938984643058704808274363722787882321867) }, + { SC_(4.853756427764892578125), SC_(7.981058597564697265625), SC_(0.034413881599903106689453125), SC_(0.1330606079887088311888331240622674173747e-7), SC_(0.000296368754703383214672803066578790720065), SC_(0.448949601219552858966483125924356828299e-4), SC_(0.9999551050398780447141033516874075643172) }, + { SC_(4.867916584014892578125), SC_(9.1056499481201171875), SC_(0.382394731044769287109375), SC_(0.0001070071844954597067478229004231133639916), SC_(0.6449739231166213850504564681821726203361e-4), SC_(0.6239319468179706325730212547544151647585), SC_(0.3760680531820293674269787452455848352415) }, + { SC_(4.886089801788330078125), SC_(3.443279266357421875), SC_(0.4854271113872528076171875), SC_(0.001740082091073594896392627511450985505252), SC_(0.004673780812586334347431924608314054473085), SC_(0.2713001692132607750680896169104317445914), SC_(0.7286998307867392249319103830895682554086) }, + { SC_(4.888977527618408203125), SC_(4.132906436920166015625), SC_(0.490639984607696533203125), SC_(0.001282629392445456323088776120600072948622), SC_(0.002137492964505009326693445752288995023308), SC_(0.3750244168425325474087628198299124215964), SC_(0.6249755831574674525912371801700875784036) }, + { SC_(4.892526149749755859375), SC_(5.4405612945556640625), SC_(0.3064188659191131591796875), SC_(0.0001750006837586270127060720379861705322616), SC_(0.001083612434044039366262807505580660281492), SC_(0.1390424756291669032954627615219234579883), SC_(0.8609575243708330967045372384780765420117) }, + { SC_(4.89687633514404296875), SC_(2.041971683502197265625), SC_(0.681391417980194091796875), SC_(0.01309589833101834225694626978740545490209), SC_(0.01952561425847975496928904324750867640749), SC_(0.401449757888735318264951982905586832392), SC_(0.598550242111264681735048017094413167608) }, + { SC_(4.89764404296875), SC_(4.579891681671142578125), SC_(0.10995076596736907958984375), SC_(0.2923382009052537620649843740171322447237e-5), SC_(0.002356248625825790462906051645685364623159), SC_(0.001239155940874147951370627704432701171814), SC_(0.9987608440591258520486293722955672988282) }, + { SC_(4.899013996124267578125), SC_(3.1015598773956298828125), SC_(0.578567206859588623046875), SC_(0.003635589426478967329720721328543678930707), SC_(0.005366049114582910897340907941531805572118), SC_(0.4038808501246590877493959811314823147957), SC_(0.5961191498753409122506040188685176852043) }, + { SC_(4.90864086151123046875), SC_(2.478476047515869140625), SC_(0.3036836087703704833984375), SC_(0.0003821737361871374517777584507451110720499), SC_(0.01785171255178272346813885338585777591958), SC_(0.02095953271570436113782500619928277365348), SC_(0.9790404672842956388621749938007172263465) }, + { SC_(4.94173908233642578125), SC_(0.12538804113864898681640625), SC_(0.5308444499969482421875), SC_(0.01492948057009154527183257309643154815528), SC_(6.201527219590741009169134628902905833635), SC_(0.002401606138381899904785873465221076733673), SC_(0.9975983938616181000952141265347789232663) }, + { SC_(4.9836406707763671875), SC_(7.739171504974365234375), SC_(0.1259840428829193115234375), SC_(0.3145876450024686392057513024759489209729e-5), SC_(0.0002906330583805864561539634522930981994032), SC_(0.0107083118530556151076914507277685061066), SC_(0.9892916881469443848923085492722314938934) }, + { SC_(5.00022411346435546875), SC_(2.539431095123291015625), SC_(0.547260820865631103515625), SC_(0.00387577213149792780492671679142202310754), SC_(0.01236068808392329287151124939469189793584), SC_(0.238707949890257473266799884331193225485), SC_(0.761292050109742526733200115668806774515) }, + { SC_(5.004716396331787109375), SC_(3.2253296375274658203125), SC_(0.58530557155609130859375), SC_(0.003199153121285395041323999219470534761141), SC_(0.004274605467562257145999410481647695879053), SC_(0.4280514393466191930034151674960010431186), SC_(0.5719485606533808069965848325039989568814) }, + { SC_(5.059570789337158203125), SC_(9.4007396697998046875), SC_(0.1355634629726409912109375), SC_(0.2972426923355312132499585156253792190284e-5), SC_(0.0001182151213827356807877479690485562247179), SC_(0.02452749449017375110317770117245616057168), SC_(0.9754725055098262488968222988275438394283) }, + { SC_(5.078582763671875), SC_(1.1319253444671630859375), SC_(0.46944367885589599609375), SC_(0.003958839558831331147976816806712789679753), SC_(0.1432058291068932670953440825693930210443), SC_(0.02690074726987351324908476447976775755346), SC_(0.9730992527301264867509152355202322424465) }, + { SC_(5.085086822509765625), SC_(3.9358985424041748046875), SC_(0.38867628574371337890625), SC_(0.000517646995240780501212394876616493117754), SC_(0.003068334921029526075145749494458953664571), SC_(0.1443529296375182710248807630742079806522), SC_(0.8556470703624817289751192369257920193478) }, + { SC_(5.107715606689453125), SC_(8.7018680572509765625), SC_(0.3897998631000518798828125), SC_(0.9218588368860460759683712151435435564958e-4), SC_(0.6713017455612673998584769761083444564826e-4), SC_(0.5786352280132014594935071226518029158726), SC_(0.4213647719867985405064928773481970841274) }, + { SC_(5.13249492645263671875), SC_(1.3800132274627685546875), SC_(0.2816991508007049560546875), SC_(0.0002637511732004907339307444471080299268032), SC_(0.08833387736634904356179444308425685398841), SC_(0.00297695522496692494612400102673211127697), SC_(0.997023044775033075053875998973267888723) }, + { SC_(5.1805210113525390625), SC_(9.69837188720703125), SC_(0.868707835674285888671875), SC_(0.926318376181302429834247672939276804215e-4), SC_(0.1706292084281352993358122005421870955537e-9), SC_(0.9999981579886730671468813824843217941114), SC_(0.1842011326932853118617515678205888557373e-5) }, + { SC_(5.1859493255615234375), SC_(9.36055088043212890625), SC_(0.623473227024078369140625), SC_(0.0001052760167786781399442600576284740646208), SC_(0.2039921915033466113410785777258940648188e-5), SC_(0.9809914357562899512367280196583250896585), SC_(0.01900856424371004876327198034167491034153) }, + { SC_(5.21135807037353515625), SC_(1.89905488491058349609375), SC_(0.489815413951873779296875), SC_(0.002889360219014527630566174449643210190743), SC_(0.0330820878668231263711781123891459547675), SC_(0.08032371152030712449913414467785786201517), SC_(0.9196762884796928755008658553221421379848) }, + { SC_(5.21649837493896484375), SC_(6.671141147613525390625), SC_(0.602021753787994384765625), SC_(0.0003764771489573151345431013489377676301121), SC_(0.5540749567173549744564527264029312981928e-4), SC_(0.8717076507331593987860837715768414409239), SC_(0.1282923492668406012139162284231585590761) }, + { SC_(5.268758296966552734375), SC_(9.0893650054931640625), SC_(0.655512332916259765625), SC_(0.0001100239318159776588155468262423778775298), SC_(0.1419685433442957690687557012390447182423e-5), SC_(0.9872609533997305845345390194748066911436), SC_(0.0127390466002694154654609805251933088564) }, + { SC_(5.271427631378173828125), SC_(1.3080546855926513671875), SC_(0.854465544223785400390625), SC_(0.05514970289536350676256168696413389645059), SC_(0.04310029547328752947291890805548064993811), SC_(0.5613201405707128389083811171576100155359), SC_(0.4386798594292871610916188828423899844641) }, + { SC_(5.28533172607421875), SC_(6.203600406646728515625), SC_(0.210380852222442626953125), SC_(0.1839698575307785445002600821210795991046e-4), SC_(0.0005290370735063514917604581303002113260556), SC_(0.03360584794078278437896715845336512100514), SC_(0.9663941520592172156210328415466348789949) }, + { SC_(5.307975292205810546875), SC_(5.92823886871337890625), SC_(0.18695391714572906494140625), SC_(0.1114332013728617204236630580207160646186e-4), SC_(0.0006347538077471138366727979497502318665891), SC_(0.01725246894003925235208158836667843051158), SC_(0.9827475310599607476479184116333215694884) }, + { SC_(5.308642864227294921875), SC_(6.311199188232421875), SC_(0.817645967006683349609375), SC_(0.0004989085753468472436234941242641877367728), SC_(0.1648123386794987008467992488436743477428e-5), SC_(0.9967074191775585616689599560992871603391), SC_(0.003292580822441438331040043900712839660916) }, + { SC_(5.3133392333984375), SC_(7.48609161376953125), SC_(0.823473036289215087890625), SC_(0.0002448421887799069164783058119388673365113), SC_(0.1484989909904823805105688478038566749789e-6), SC_(0.9993938586305396597567283373799999220442), SC_(0.000606141369460340243271662620000077955776) }, + { SC_(5.32825565338134765625), SC_(9.48925113677978515625), SC_(0.399842679500579833984375), SC_(0.5558334880486632092145077500670499378253e-4), SC_(0.3099026708833177991802733018278187205757e-4), SC_(0.6420356621518148088910575702085008420194), SC_(0.3579643378481851911089424297914991579806) }, + { SC_(5.38342380523681640625), SC_(5.46591949462890625), SC_(0.234856426715850830078125), SC_(0.2876982963882477178219291418965025467942e-4), SC_(0.000815698436194295078436142561453029825515), SC_(0.03406857403983270642026461168940508102528), SC_(0.9659314259601672935797353883105949189747) }, + { SC_(5.39126491546630859375), SC_(2.4272365570068359375), SC_(0.725866377353668212890625), SC_(0.008683720041014507910551871470199769065214), SC_(0.007193257330485942051311909270426548331568), SC_(0.5469378608929676277565394286002881432929), SC_(0.4530621391070323722434605713997118567071) }, + { SC_(5.465931415557861328125), SC_(9.807567596435546875), SC_(0.9597480297088623046875), SC_(0.6431648001014576477154896197695193473587e-4), SC_(0.1789219496036074391589648704691992369815e-14), SC_(0.9999999999721810102837708906490786751809), SC_(0.2781898971622910935092132481910150311693e-10) }, + { SC_(5.468057155609130859375), SC_(2.2655131816864013671875), SC_(0.48930370807647705078125), SC_(0.001871642938552319299674466742226126502582), SC_(0.01733223127527205609508609633223755438495), SC_(0.09746173702830086547691505798040182038061), SC_(0.9025382629716991345230849420195981796194) }, + { SC_(5.468814849853515625), SC_(9.92881298065185546875), SC_(0.01661893166601657867431640625), SC_(0.2993116261844011871464007898536706379411e-10), SC_(0.6064040790357035223955910662525402005269e-4), SC_(0.4935842102593868940001099585992427277558e-6), SC_(0.9999995064157897406131059998900414007573) }, + { SC_(5.470088481903076171875), SC_(7.18470001220703125), SC_(0.354702651500701904296875), SC_(0.7522943494979851248771899989221510419832e-4), SC_(0.0001776599340377416880875196678636773778406), SC_(0.2974796261740249308890494795027918261323), SC_(0.7025203738259750691109505204972081738677) }, + { SC_(5.47215557098388671875), SC_(1.58057582378387451171875), SC_(0.14022982120513916015625), SC_(0.3642299055273451763822101284502197068957e-5), SC_(0.05612749713893154315877918909803149124144), SC_(0.648890988449901564972340804647948039446e-4), SC_(0.9999351109011550098435027659195352051961) }, + { SC_(5.478708744049072265625), SC_(5.983688831329345703125), SC_(0.707350790500640869140625), SC_(0.0005129051868782907461348257012199154669064), SC_(0.2996461749785069619780759850324969431113e-4), SC_(0.94480330779810893150911396240921123086), SC_(0.05519669220189106849088603759078876914003) }, + { SC_(5.4972362518310546875), SC_(7.32798671722412109375), SC_(0.1690731346607208251953125), SC_(0.395646175722789032773731717782935160579e-5), SC_(0.0002227238071593519307759729943398251386571), SC_(0.01745393093160613978491169649203658135884), SC_(0.9825460690683938602150883035079634186412) }, + { SC_(5.4986019134521484375), SC_(0.080939121544361114501953125), SC_(0.26599407196044921875), SC_(0.0001584399812540482827902354543983044775523), SC_(10.3966374077173660500706378630201086814), SC_(0.1523930868461937929770993344486012250574e-4), SC_(0.9999847606913153806207022900665551398775) }, + { SC_(5.501563549041748046875), SC_(3.8861515522003173828125), SC_(0.4050408899784088134765625), SC_(0.0003819857495720349371521898040355488820372), SC_(0.002549287934146625034175916683548045521723), SC_(0.1303139149693595986058107451337090073624), SC_(0.8696860850306404013941892548662909926376) }, + { SC_(5.611998081207275390625), SC_(1.31561565399169921875), SC_(0.7447183132171630859375), SC_(0.02469078365129627649518641084457527045565), SC_(0.06465188932241603191786464431699747678648), SC_(0.2763604762369394909566384799216558036677), SC_(0.7236395237630605090433615200783441963323) }, + { SC_(5.67821598052978515625), SC_(5.27371501922607421875), SC_(0.18359279632568359375), SC_(0.5665388729232756936555168900417273709892e-5), SC_(0.000783147701984843744884229617492987761363), SC_(0.007182168749385407638845694447598451682276), SC_(0.9928178312506145923611543055524015483177) }, + { SC_(5.688236236572265625), SC_(3.9490821361541748046875), SC_(0.1948448121547698974609375), SC_(0.9412317037793486494300223033774957695536e-5), SC_(0.002470764033778216404698262558206944877859), SC_(0.003795019267358433296434500940481918167281), SC_(0.9962049807326415667035654990595180818327) }, + { SC_(5.75208568572998046875), SC_(7.575036525726318359375), SC_(0.3402856886386871337890625), SC_(0.4004022292041907268055108169083497632045e-4), SC_(0.0001157898384556698686233847711972296434424), SC_(0.2569480019890627562696190305054358636918), SC_(0.7430519980109372437303809694945641363082) }, + { SC_(5.76209354400634765625), SC_(9.24875926971435546875), SC_(0.959295451641082763671875), SC_(0.6173008350602500429968540750924588254443e-4), SC_(0.1251681535683934257773386938777515922263e-13), SC_(0.9999999997972331375012691181445907177689), SC_(0.2027668624987308818554092822311101719629e-9) }, + { SC_(5.76721477508544921875), SC_(5.14519596099853515625), SC_(0.561601340770721435546875), SC_(0.0004768679019348165820520953691572702957474), SC_(0.0003445900117969779947317874243624370759775), SC_(0.5805141005562381277085180498032127707226), SC_(0.4194858994437618722914819501967872292774) }, + { SC_(5.78525066375732421875), SC_(2.816273212432861328125), SC_(0.4868429601192474365234375), SC_(0.001022514127460012365575554588442412942307), SC_(0.007163659735130946197916752551403139506269), SC_(0.1249074530572433176288387129976543595438), SC_(0.8750925469427566823711612870023456404562) }, + { SC_(5.79704570770263671875), SC_(6.2738437652587890625), SC_(0.2638765275478363037109375), SC_(0.2033669687571857443469676318644859402734e-4), SC_(0.0003255894164846468170839711889697829680688), SC_(0.05878913470326249955669540175038685846538), SC_(0.9412108652967375004433045982496131415346) }, + { SC_(5.82986354827880859375), SC_(7.4733123779296875), SC_(0.77891981601715087890625), SC_(0.0001540516476369544702283461639644614078878), SC_(0.5978413252112784799537532127201433213468e-6), SC_(0.9961342172597961996784500158889499031102), SC_(0.003865782740203800321549984111050096889845) }, + { SC_(5.84069347381591796875), SC_(9.07108592987060546875), SC_(0.7943050861358642578125), SC_(0.6246793719256288926463575846509533464182e-4), SC_(0.2420570419142975289039450578361782348328e-7), SC_(0.9996126600390160898957505241077794745772), SC_(0.00038733996098391010424947589222052542284) }, + { SC_(5.85264110565185546875), SC_(5.9450359344482421875), SC_(0.16763903200626373291015625), SC_(0.2312011535213500519062391082195887032089e-5), SC_(0.0004166071694196365658388405580102548290108), SC_(0.005518991825448743617573046688848076390891), SC_(0.9944810081745512563824269533111519236091) }, + { SC_(5.85267734527587890625), SC_(8.0817546844482421875), SC_(0.12999321520328521728515625), SC_(0.4875941763569227102281811521953287916227e-6), SC_(0.0001053997303659329519571990989460864237583), SC_(0.004604839894336782569599343666449126194324), SC_(0.9953951601056632174304006563335508738057) }, + { SC_(5.8704471588134765625), SC_(4.766380786895751953125), SC_(0.408790290355682373046875), SC_(0.000183039336583886722552829935280521570549), SC_(0.0008697245838107142113948850238435599109866), SC_(0.1738655106220578205986291433696595623871), SC_(0.8261344893779421794013708566303404376129) }, + { SC_(5.895074367523193359375), SC_(2.3476560115814208984375), SC_(0.77393972873687744140625), SC_(0.008849809390509587104924332452299627938885), SC_(0.005769344900257303225415604228365707035702), SC_(0.6053571372523864764521348654725133998354), SC_(0.3946428627476135235478651345274866001646) }, + { SC_(5.94356250762939453125), SC_(5.86765003204345703125), SC_(0.798126041889190673828125), SC_(0.0004090612339484864563523227712661362776423), SC_(0.5644823023473088776454989574739408604243e-5), SC_(0.9863883757457278592097319147584814159604), SC_(0.01361162425427214079026808524151858403958) }, + { SC_(5.948960781097412109375), SC_(4.49556064605712890625), SC_(0.447639644145965576171875), SC_(0.0002700341864380981596254012520017276513658), SC_(0.00100499145035928803923405937885184819063), SC_(0.211787260306679764015818383607533634228), SC_(0.788212739693320235984181616392466365772) }, + { SC_(5.985236644744873046875), SC_(9.74754428863525390625), SC_(0.80915629863739013671875), SC_(0.3829568632937395517134588176621945016114e-4), SC_(0.3887729017336306001575351727343233323962e-8), SC_(0.9998984915860576125829581768310884813618), SC_(0.000101508413942387417041823168911518638216) }, + { SC_(6.0198192596435546875), SC_(4.719567775726318359375), SC_(0.2138513624668121337890625), SC_(0.7292791414814475580097339471646734414244e-5), SC_(0.000991607830004140358102294810108412761471), SC_(0.007300817777503176346887108734097373900272), SC_(0.9926991822224968236531128912659026260997) }, + { SC_(6.02170467376708984375), SC_(7.11880779266357421875), SC_(0.910573899745941162109375), SC_(0.0001640139041987004037611939267964047747315), SC_(0.320391004175329477850959734858286068738e-8), SC_(0.999980466000902606296528959726366294364), SC_(0.195339990973937034710402736337056359538e-4) }, + { SC_(6.028430938720703125), SC_(7.97364139556884765625), SC_(0.4505965411663055419921875), SC_(0.547118533860476854624248713660720342841e-4), SC_(0.4145666247650757664958164568564105015634e-4), SC_(0.5689164784890957631967505991947509935058), SC_(0.4310835215109042368032494008052490064942) }, + { SC_(6.07303905487060546875), SC_(1.2427265644073486328125), SC_(0.981111586093902587890625), SC_(0.08871800724726935136519838420485648794577), SC_(0.005499846280965325535303750423501902782025), SC_(0.9416262833952467139629001957305482173574), SC_(0.05837371660475328603709980426945178264255) }, + { SC_(6.073892116546630859375), SC_(2.8369390964508056640625), SC_(0.94008004665374755859375), SC_(0.006973056362982721812118452411551167256756), SC_(0.9551041995592583549966627651468540190036e-4), SC_(0.9864880076981859042283383286945326202714), SC_(0.01351199230181409577166167130546737972862) }, + { SC_(6.09866619110107421875), SC_(9.34250545501708984375), SC_(0.54990518093109130859375), SC_(0.37521707652660633893856479905611605112e-4), SC_(0.4538128701712859882289953397507614692072e-5), SC_(0.8921030347460927965239954559546194255979), SC_(0.1078969652539072034760045440453805744021) }, + { SC_(6.109586238861083984375), SC_(0.788423717021942138671875), SC_(0.830845534801483154296875), SC_(0.06971309332227915384675522485815847011363), SC_(0.2167567222575425930236365461510368903611), SC_(0.2433523168267420719328373329538551507109), SC_(0.7566476831732579280671626670461448492891) }, + { SC_(6.1346073150634765625), SC_(3.122300624847412109375), SC_(0.996461689472198486328125), SC_(0.00484066794663223826927430657090373872699), SC_(0.7016931325081611131180507061929345622755e-8), SC_(0.9999985504229517786190114582490284162053), SC_(0.1449577048221380988541750971583794707043e-5) }, + { SC_(6.16044712066650390625), SC_(7.788977146148681640625), SC_(0.16241228580474853515625), SC_(0.8097773820784406784677397135052446377968e-6), SC_(0.9489314774293313389967285889931780653399e-4), SC_(0.008461365010742065776928850715146086380278), SC_(0.9915386349892579342230711492848539136197) }, + { SC_(6.17090892791748046875), SC_(4.727691173553466796875), SC_(0.780249416828155517578125), SC_(0.0008450307020461161334076423047134661126446), SC_(0.5919429472835175851780120360961862333289e-4), SC_(0.9345358788581289135029569061840505916932), SC_(0.0654641211418710864970430938159494083068) }, + { SC_(6.17666339874267578125), SC_(4.725252628326416015625), SC_(0.550201356410980224609375), SC_(0.0004034965830925189786684776780896894155788), SC_(0.0004995620465338476110441859828918623934526), SC_(0.4468110594983877387705804134754255636294), SC_(0.5531889405016122612294195865245744363706) }, + { SC_(6.22055149078369140625), SC_(4.38666820526123046875), SC_(0.2769952714443206787109375), SC_(0.2190221160746947912789537394610699543336e-4), SC_(0.00118216792487464235893625755235932603352), SC_(0.01819014602543036113713545063775616622186), SC_(0.9818098539745696388628645493622438337781) }, + { SC_(6.224750995635986328125), SC_(7.796894073486328125), SC_(0.408778965473175048828125), SC_(0.3644746408101077539285537284719144866657e-4), SC_(0.5365927483039532213731433121978635884094e-4), SC_(0.4044921003838160105214325212152689949831), SC_(0.5955078996161839894785674787847310050169) }, + { SC_(6.240601062774658203125), SC_(1.7015228271484375), SC_(0.490915000438690185546875), SC_(0.001283549666248419861847987302315514477005), SC_(0.03556063909387691471617600415284765169506), SC_(0.03483723510931370963061038472122987816086), SC_(0.9651627648906862903693896152787701218391) }, + { SC_(6.256186008453369140625), SC_(8.1576900482177734375), SC_(0.37856256961822509765625), SC_(0.2428460755640741037984643404295494849243e-4), SC_(0.4616313110406550024912798168543388234751e-4), SC_(0.3447180565077969182172822581746660399627), SC_(0.6552819434922030817827177418253339600373) }, + { SC_(6.2797336578369140625), SC_(5.15023708343505859375), SC_(0.660153448581695556640625), SC_(0.0004493896893273164589467537807214707448801), SC_(0.0001345284914090084936750442425624176990581), SC_(0.7696107162832862726456555531981460239943), SC_(0.2303892837167137273543444468018539760057) }, + { SC_(6.323592662811279296875), SC_(3.081670284271240234375), SC_(0.01200087927281856536865234375), SC_(0.1104958718826698957670958487109201575358e-12), SC_(0.004687203315970652428363513949580494631475), SC_(0.235739447238343160070121438963334399884e-10), SC_(0.9999999999764260552761656839929878561037) }, + { SC_(6.35786724090576171875), SC_(7.777940273284912109375), SC_(0.96864354610443115234375), SC_(0.8140834911944604444150515499266719071543e-4), SC_(0.2229178111222996398351353580134891251161e-12), SC_(0.9999999972617328207354268936434040788255), SC_(0.2738267179264573106356595921174518341383e-8) }, + { SC_(6.377090930938720703125), SC_(2.6817638874053955078125), SC_(0.870199739933013916015625), SC_(0.006771554999682028045883911653423472108222), SC_(0.0009251226670092557743136738332322580855926), SC_(0.879802337180770137921327972238168347567), SC_(0.120197662819229862078672027761831652433) }, + { SC_(6.38530731201171875), SC_(6.333632946014404296875), SC_(0.81430339813232421875), SC_(0.0002112091858735835713096682335307382005792), SC_(0.1452345889466053880044225642172814843068e-5), SC_(0.9931706224561371191063201020763636759324), SC_(0.006829377543862880893679897923636324067582) }, + { SC_(6.44318103790283203125), SC_(5.438054561614990234375), SC_(0.3936505019664764404296875), SC_(0.6255819501168566846253981209421629941384e-4), SC_(0.0003498637933802053330113093394545046457263), SC_(0.1516849168387251809041138617445120585855), SC_(0.8483150831612748190958861382554879414145) }, + { SC_(6.44442844390869140625), SC_(9.49714565277099609375), SC_(0.96489202976226806640625), SC_(0.2773016038921772405670621796834280328608e-4), SC_(0.1354073952548909618029962033853510940567e-14), SC_(0.9999999999511696314237947142834072258091), SC_(0.4883036857620528571659277419090857535681e-10) }, + { SC_(6.447645664215087890625), SC_(2.336754322052001953125), SC_(0.757764339447021484375), SC_(0.006316421227802708782594495130002396224912), SC_(0.005957192492726239455331830246391959110865), SC_(0.5146341877484550602109306173242190533733), SC_(0.4853658122515449397890693826757809466267) }, + { SC_(6.46312999725341796875), SC_(7.93974971771240234375), SC_(0.11129163205623626708984375), SC_(0.5286811198169437627825863273658875167104e-7), SC_(0.6725419606003588170913281043273418460222e-4), SC_(0.000785476422602219374625891610916647657133), SC_(0.9992145235773977806253741083890833523429) }, + { SC_(6.47617626190185546875), SC_(9.34521961212158203125), SC_(0.9649698734283447265625), SC_(0.29229025740055908947093280782409066835e-4), SC_(0.2241186087767477278866206572701576853352e-14), SC_(0.9999999999233232709318711782271520796889), SC_(0.7667672906812882177284792031105463912527e-10) }, + { SC_(6.47745990753173828125), SC_(4.93326854705810546875), SC_(0.352827131748199462890625), SC_(0.4406191810159834484838479340184519644862e-4), SC_(0.00058076658157011072496223240072883653155), SC_(0.07051841925384149778813434548370668741733), SC_(0.9294815807461585022118656545162933125827) }, + { SC_(6.48991489410400390625), SC_(6.431809902191162109375), SC_(0.6274216175079345703125), SC_(0.0001493888854694277755554725824694740537974), SC_(0.3387984056691845892340179572218397177203e-4), SC_(0.8151357228281308696468735407018457497519), SC_(0.1848642771718691303531264592981542502481) }, + { SC_(6.491155147552490234375), SC_(2.5829589366912841796875), SC_(0.351017296314239501953125), SC_(0.972122655873300236099137013818846101213e-4), SC_(0.00836466235469617489128093277611446656977), SC_(0.011488265892560937491862742626593692258), SC_(0.988511734107439062508137257373406307742) }, + { SC_(6.537573337554931640625), SC_(0.0159790404140949249267578125), SC_(0.52988898754119873046875), SC_(0.004459901273624707455701078000286294950602), SC_(60.25700323858915194984149591110216676652), SC_(0.7400917669844123274167021004481073457942e-4), SC_(0.9999259908233015587672583297899551892654) }, + { SC_(6.540790557861328125), SC_(5.298419475555419921875), SC_(0.221111953258514404296875), SC_(0.3186484915952283068018806438262978737879e-5), SC_(0.0004328900544161854711639615214862671448564), SC_(0.007307168876437299938314495480737198026881), SC_(0.9926928311235627000616855045192628019731) }, + { SC_(6.54445743560791015625), SC_(9.94505405426025390625), SC_(0.8208587169647216796875), SC_(0.1983522929068780213943657876335029984179e-4), SC_(0.1410534037286516407874567086705542615503e-8), SC_(0.9999288924913821151829756397807491401843), SC_(0.7110750861788481702436021925085981570528e-4) }, + { SC_(6.55098056793212890625), SC_(7.107038974761962890625), SC_(0.11963522434234619140625), SC_(0.7141550171429301646252068655795948161696e-7), SC_(0.0001081192884300751036332330933497820745751), SC_(0.0006600890752990949255087244370377626157914), SC_(0.9993399109247009050744912755629622373842) }, + { SC_(6.554779052734375), SC_(1.73865163326263427734375), SC_(0.067688621580600738525390625), SC_(0.3150010434333768992043610637861470883639e-8), SC_(0.03179626425619222630425761057957681604674), SC_(0.9906856028388037561619010168933596001114e-7), SC_(0.999999900931439716119624383809898310664) }, + { SC_(6.55740642547607421875), SC_(7.97928619384765625), SC_(0.0451550371944904327392578125), SC_(0.1740824245850233906723349767386861568819e-9), SC_(0.6064579297251721062070065593814518991212e-4), SC_(0.2870469926340107967556142305108257777667e-5), SC_(0.9999971295300736598920324438576948917422) }, + { SC_(6.56859874725341796875), SC_(1.80818712711334228515625), SC_(0.655814349651336669921875), SC_(0.00481410590769769513641878998826079156272), SC_(0.02315357021106995427223910620346657575409), SC_(0.1721310661369966178498875061515334984965), SC_(0.8278689338630033821501124938484665015035) }, + { SC_(6.596052646636962890625), SC_(4.22218418121337890625), SC_(0.6225128173828125), SC_(0.0005942540918445236446174054583428412190632), SC_(0.0005588702834024244109266467857983517564144), SC_(0.5153425810786982941722724618736814055441), SC_(0.4846574189213017058277275381263185944559) }, + { SC_(6.619447231292724609375), SC_(6.623002529144287109375), SC_(0.9874608516693115234375), SC_(0.0001448613606327680771293057707253813498468), SC_(0.3606187298415906314212951222085277816987e-13), SC_(0.9999999997510594073004689522058484504929), SC_(0.2489405926995310477941515495071343340136e-9) }, + { SC_(6.620095729827880859375), SC_(2.0595557689666748046875), SC_(0.99011099338531494140625), SC_(0.01792585392986322191907612725451484921732), SC_(0.3474239219214770349170475434407381096773e-4), SC_(0.9980656325898553537849344504305791816327), SC_(0.001934367410144646215065549569420818367322) }, + { SC_(6.663388729095458984375), SC_(7.377908229827880859375), SC_(0.720521390438079833984375), SC_(0.8007169645812952274590828328872821635845e-4), SC_(0.2300230779607556044469375366787239511613e-5), SC_(0.9720750642027742851927199900455611967021), SC_(0.02792493579722571480728000995443880329787) }, + { SC_(6.665279388427734375), SC_(1.85475981235504150390625), SC_(0.72698199748992919921875), SC_(0.007597803257792932044560028750339725170657), SC_(0.01751899307082825490193223630968329387232), SC_(0.3024988998750232520748970909758637325599), SC_(0.6975011001249767479251029090241362674401) }, + { SC_(6.678327083587646484375), SC_(3.0382525920867919921875), SC_(0.900193154811859130859375), SC_(0.004084563173283332876904098344086828950967), SC_(0.0001934659010534569614190167282520399168104), SC_(0.9547768615659889112905635474068568681788), SC_(0.04522313843401108870943645259314313182122) }, + { SC_(6.691753387451171875), SC_(0.0831444561481475830078125), SC_(0.74996602535247802734375), SC_(0.06002877611484809279352962363437042288415), SC_(9.83879569516026976341611721919094487651), SC_(0.006064232807546235967998234374563736799127), SC_(0.9939357671924537640320017656254362632009) }, + { SC_(6.71808147430419921875), SC_(6.137441158294677734375), SC_(0.878442823886871337890625), SC_(0.0001948989890721855758415393352238714792343), SC_(0.2100782171962141141351857465287490862373e-6), SC_(0.9989232780407656278409277498198737768904), SC_(0.001076721959234372159072250180126223109638) }, + { SC_(6.753320217132568359375), SC_(5.10108852386474609375), SC_(0.907373964786529541015625), SC_(0.0004548121022163218323715604931871662213393), SC_(0.6627065335161819350147039109358210509099e-6), SC_(0.9985450204472665742770642914409434544401), SC_(0.001454979552733425722935708559056545559927) }, + { SC_(6.76122283935546875), SC_(4.74718379974365234375), SC_(0.8767697811126708984375), SC_(0.0006236255605425981702466465338452764240241), SC_(0.5506674880390253785461272704975379427893e-5), SC_(0.9912471900653955261005337777697249528805), SC_(0.008752809934604473899466222230275047119451) }, + { SC_(6.787351131439208984375), SC_(3.987385272979736328125), SC_(0.051311306655406951904296875), SC_(0.2263341470343213042556050514890389746087e-9), SC_(0.001337934496954320151253061343925177856992), SC_(0.1691668084359316169220118295376123033183e-6), SC_(0.9999998308331915640683830779881704623877) }, + { SC_(6.79016780853271484375), SC_(0.083242706954479217529296875), SC_(0.967698156833648681640625), SC_(0.9694353899530785108950378096838519784051), SC_(8.90263069332296250189285125624440893603), SC_(0.09819984811440522499244705602865577719655), SC_(0.9018001518855947750075529439713442228035) }, + { SC_(6.79135608673095703125), SC_(2.990518093109130859375), SC_(0.492492735385894775390625), SC_(0.0003964694805387206342822820417806719744121), SC_(0.003956558292917519710400484501858392983759), SC_(0.09107901469324411618571807069331236646202), SC_(0.908920985306755883814281929306687633538) }, + { SC_(6.79702663421630859375), SC_(0.0281843245029449462890625), SC_(0.119085781276226043701171875), SC_(0.8563027964350100746120589029270175690302e-7), SC_(33.16223528650126684883691411032176222281), SC_(0.258216247133514655175625573951610590202e-8), SC_(0.9999999974178375286648534482437442604839) }, + { SC_(6.79727935791015625), SC_(2.919607639312744140625), SC_(0.51082050800323486328125), SC_(0.0004982662578613548749609028981125925701161), SC_(0.004271086637028338485563831779540183163461), SC_(0.1044725078731836819179107920520890604277), SC_(0.8955274921268163180820892079479109395723) }, + { SC_(6.819718837738037109375), SC_(5.347210407257080078125), SC_(0.592864573001861572265625), SC_(0.0002037294837004967262131999503684229870496), SC_(0.0001478354617267542408437841367325097504356), SC_(0.5794931671953462542349712831375968740182), SC_(0.4205068328046537457650287168624031259818) }, + { SC_(6.83363246917724609375), SC_(9.137195587158203125), SC_(0.95949649810791015625), SC_(0.2369788592965004149002448285217976576245e-4), SC_(0.1665088327143394154765268068373658698223e-13), SC_(0.9999999992973684104495815306100862840383), SC_(0.7026315895504184693899137159617450099411e-9) }, + { SC_(6.867754459381103515625), SC_(3.1250798702239990234375), SC_(0.36325013637542724609375), SC_(0.6203661198694198574126164898253317891701e-4), SC_(0.00348674837643487206359831708722239906418), SC_(0.01748108498805682461808251945878710508387), SC_(0.9825189150119431753819174805412128949161) }, + { SC_(6.892145633697509765625), SC_(7.161006927490234375), SC_(0.2218245565891265869140625), SC_(0.1216112669859512228309639649876978991575e-5), SC_(0.7908698885556172917686681824361475363894e-4), SC_(0.01514403113651260601610566559104294775594), SC_(0.9848559688634873939838943344089570522441) }, + { SC_(6.948286533355712890625), SC_(1.25182759761810302734375), SC_(0.085607238113880157470703125), SC_(0.5399926549050818832745335399732396448216e-8), SC_(0.07829755864506759027751142878742868719519), SC_(0.689667247623147050880298500600686619879e-7), SC_(0.9999999310332752376852949119701499399313) }, + { SC_(6.951404571533203125), SC_(4.90619182586669921875), SC_(0.886009514331817626953125), SC_(0.0004833875818969477330119739806402819194932), SC_(0.2673469825328588143007370610100345324391e-5), SC_(0.9944997242304118105632550893536691644309), SC_(0.005500275769588189436744910646330835569098) }, + { SC_(6.959493160247802734375), SC_(6.345019817352294921875), SC_(0.811599314212799072265625), SC_(0.0001391719799822673160192635734978564137402), SC_(0.1389908703110252311310439635391308662022e-5), SC_(0.990111767022273639082379461480065148548), SC_(0.009888232977726360917620538519934851451978) }, + { SC_(6.98105525970458984375), SC_(8.2285919189453125), SC_(0.726681768894195556640625), SC_(0.358860120292934012210787874245941276435e-4), SC_(0.539750025054115336809104017474000228888e-6), SC_(0.9851821898949209585026201430427462828854), SC_(0.01481781010507904149737985695725371711456) }, + { SC_(6.987458705902099609375), SC_(0.6544506549835205078125), SC_(0.544101715087890625), SC_(0.00255236796826421389829333101784568275645), SC_(0.3893302582596082421233475394052227948305), SC_(0.006513092945284232663466408184842247487152), SC_(0.9934869070547157673365335918151577525128) }, + { SC_(6.990767002105712890625), SC_(4.1266651153564453125), SC_(0.136154949665069580078125), SC_(0.8509570094592051632120030799055586044614e-7), SC_(0.001042392270700033540215299867916109587881), SC_(0.8162834387445993433108651261407316802189e-4), SC_(0.999918371656125540065668913487385926832) }, + { SC_(6.99887847900390625), SC_(0.72180259227752685546875), SC_(0.811892807483673095703125), SC_(0.04759409109197475420284257208053802740416), SC_(0.26735872603501418455415718530948691939), SC_(0.1511149877182550244731556545144739197359), SC_(0.8488850122817449755268443454855260802641) }, + { SC_(7.01098728179931640625), SC_(1.2064893245697021484375), SC_(0.71849811077117919921875), SC_(0.01141051807569613948274387844171372601625), SC_(0.07453681229604968222966128715013259531798), SC_(0.1327617510205670526079801939669259556534), SC_(0.8672382489794329473920198060330740443466) }, + { SC_(7.060461521148681640625), SC_(7.972798824310302734375), SC_(0.07605908811092376708984375), SC_(0.1105417045582768436543516139755080655616e-8), SC_(0.4038342593406057222322411969713463794255e-4), SC_(0.2737228856197907674660948881008162338742e-4), SC_(0.9999726277114380209232533905111899183766) }, + { SC_(7.092816829681396484375), SC_(6.49780750274658203125), SC_(0.977004349231719970703125), SC_(0.0001138654107702286025902918767506243865619), SC_(0.3078277092499097921568278954410634084274e-11), SC_(0.9999999729656531473670529426938203015809), SC_(0.270343468526329470573061796984191399153e-7) }, + { SC_(7.093648433685302734375), SC_(9.20874786376953125), SC_(0.1125532686710357666015625), SC_(0.1127247874682365774618362041688104065838e-7), SC_(0.1804943361730357390176930848936304945356e-4), SC_(0.0006241438561080830523830691629056853098608), SC_(0.9993758561438919169476169308370943146901) }, + { SC_(7.112158298492431640625), SC_(1.6755578517913818359375), SC_(0.4509786069393157958984375), SC_(0.0003470370726970068963129446114038543725303), SC_(0.03098054975934099904554832275111389222169), SC_(0.01107768289200303248371804203486482210548), SC_(0.9889223171079969675162819579651351778945) }, + { SC_(7.12694454193115234375), SC_(7.469042301177978515625), SC_(0.5844237804412841796875), SC_(0.4155551272115984710091336234787355102348e-4), SC_(0.1257874028868045725875405045741392266017e-4), SC_(0.7676380555875788106999147989085951911092), SC_(0.2323619444124211893000852010914048088908) }, + { SC_(7.15037059783935546875), SC_(0.986990451812744140625), SC_(0.533979713916778564453125), SC_(0.00158845372948739077560242701045589083769), SC_(0.14311838754292304807602821209827057194), SC_(0.01097704652744875215516137390918187297088), SC_(0.9890229534725512478448386260908181270291) }, + { SC_(7.18358898162841796875), SC_(2.4557473659515380859375), SC_(0.8219211101531982421875), SC_(0.005461496517838803358026008965609409147495), SC_(0.002629990237438906047998584387626745539065), SC_(0.6749682330353586954545154159520809871145), SC_(0.3250317669646413045454845840479190128855) }, + { SC_(7.212275028228759765625), SC_(2.307643890380859375), SC_(0.52741873264312744140625), SC_(0.000610495533847542669250561106808892299211), SC_(0.009500609068047214932311072783920041330384), SC_(0.06037871804166081263451450329915941002008), SC_(0.9396212819583391873654854967008405899799) }, + { SC_(7.217580318450927734375), SC_(4.07501888275146484375), SC_(0.929392993450164794921875), SC_(0.0009848793708889196757885499297219982034819), SC_(0.3486171102111599712165976265452471839705e-5), SC_(0.9964727917415161826116273919413857295011), SC_(0.003527208258483817388372608058614270498922) }, + { SC_(7.224395751953125), SC_(7.047237396240234375), SC_(0.620397984981536865234375), SC_(0.5501531517876683386487294859612119878539e-4), SC_(0.1334553533493679945702771069903591171214e-4), SC_(0.8047780968982890275696870894916419064565), SC_(0.1952219031017109724303129105083580935435) }, + { SC_(7.302487850189208984375), SC_(7.729009151458740234375), SC_(0.79361820220947265625), SC_(0.3932560973357712255209426383757206173476e-4), SC_(0.1852201520392421050499364132242393277856e-6), SC_(0.9953121675101370073187828064993184060536), SC_(0.004687832489862992681217193500681593946427) }, + { SC_(7.303308963775634765625), SC_(1.00738489627838134765625), SC_(0.47669041156768798828125), SC_(0.0006092379525709470223255393358168500863711), SC_(0.1336843847084377055200319084010300747278), SC_(0.004536611199392684235640118777031068776871), SC_(0.9954633888006073157643598812229689312231) }, + { SC_(7.317224025726318359375), SC_(1.298465251922607421875), SC_(0.351724326610565185546875), SC_(0.5847821529837166579038500339420843139136e-4), SC_(0.06596731334899948271834055400647868266238), SC_(0.0008856874550519225926372267469926344767322), SC_(0.9991143125449480774073627732530073655233) }, + { SC_(7.37858104705810546875), SC_(1.6669826507568359375), SC_(0.69910681247711181640625), SC_(0.005085602442056688978479741210636033233161), SC_(0.02494707592816126113859634111533237524111), SC_(0.1693356276575002743788461229236055191358), SC_(0.8306643723424997256211538770763944808642) }, + { SC_(7.38426876068115234375), SC_(7.55924701690673828125), SC_(0.94479274749755859375), SC_(0.418970033279825102364181380181290383302e-4), SC_(0.2976051424501981941337694743479462779697e-10), SC_(0.9999992896748993620060678317223502134124), SC_(0.7103251006379939321682776497865875988898e-6) }, + { SC_(7.43132495880126953125), SC_(4.747586727142333984375), SC_(0.0540447235107421875), SC_(0.4288015661720002501156848942265856450785e-10), SC_(0.0004374143764045996688086115094156086568374), SC_(0.980309626905213935390739909023425106585e-7), SC_(0.9999999019690373094786064609260090976575) }, + { SC_(7.44074249267578125), SC_(6.898012638092041015625), SC_(0.54705417156219482421875), SC_(0.3816298085985872855213856251096939919413e-4), SC_(0.2757590502463681974259864686378649243485e-4), SC_(0.5805236937983980973793258337317417787563), SC_(0.4194763062016019026206741662682582212437) }, + { SC_(7.446928501129150390625), SC_(6.234355449676513671875), SC_(0.3609246313571929931640625), SC_(0.9493874615036504272226332847105584077804e-5), SC_(0.0001018514586158487090275577552188613159799), SC_(0.08526513271418431088151211558569820541137), SC_(0.9147348672858156891184878844143017945886) }, + { SC_(7.481516361236572265625), SC_(9.8837947845458984375), SC_(0.22349761426448822021484375), SC_(0.2657679285737144644540268207309200379989e-6), SC_(0.836007787899585947471855194405070745678e-5), SC_(0.03081065144249285794629007416976906125847), SC_(0.9691893485575071420537099258302309387415) }, + { SC_(7.512670993804931640625), SC_(8.212459564208984375), SC_(0.13308273255825042724609375), SC_(0.1429458681024921308105585489081111732153e-7), SC_(0.2409585135313748006047620884055888318854e-4), SC_(0.0005928867807707763590494897734381225740102), SC_(0.999407113219229223640950510226561877426) }, + { SC_(7.537291049957275390625), SC_(5.61557483673095703125), SC_(0.18165481090545654296875), SC_(0.155240769626332981220316326664090076153e-6), SC_(0.0001799649023801918793973626399476027866552), SC_(0.0008618734524167496429462706830962244276752), SC_(0.9991381265475832503570537293169037755723) }, + { SC_(7.54686641693115234375), SC_(8.07530975341796875), SC_(0.1132812201976776123046875), SC_(0.4590899486883971268598641770957837870915e-8), SC_(0.2579378130440652604543914048256413093774e-4), SC_(0.0001779530681471107316829395126774399397122), SC_(0.9998220469318528892683170604873225600603) }, + { SC_(7.572002410888671875), SC_(3.9232044219970703125), SC_(0.1739477813243865966796875), SC_(0.1438815704806215113502545781833438315414e-6), SC_(0.0009981486208601692648075276147256265037424), SC_(0.0001441276681236186901235618332383071838242), SC_(0.9998558723318763813098764381667616928162) }, + { SC_(7.577401638031005859375), SC_(7.406472682952880859375), SC_(0.0532472543418407440185546875), SC_(0.2164321928037203308205113091366658152472e-10), SC_(0.406823122402614949714684413864444310794e-4), SC_(0.5320053500952252146658006615926664354521e-6), SC_(0.9999994679946499047747853341993384073336) }, + { SC_(7.655000209808349609375), SC_(0.1489169895648956298828125), SC_(0.955022037029266357421875), SC_(0.5903782952990584609175728796486190829028), SC_(4.077695895701669853525299927156058653355), SC_(0.1264714893429092780897647915199114482137), SC_(0.8735285106570907219102352084800885517863) }, + { SC_(7.655168056488037109375), SC_(0.51216423511505126953125), SC_(0.100828416645526885986328125), SC_(0.3221925205686958103897523865572258647332e-8), SC_(0.6204502530913738177128258100721243579337), SC_(0.5192882383241426407918256310444293265891e-8), SC_(0.9999999948071176167585735920817436895557) }, + { SC_(7.701597690582275390625), SC_(9.70944118499755859375), SC_(0.917201936244964599609375), SC_(0.7908703470851791586035857921502665905879e-5), SC_(0.1908803050632652959735883130660938397483e-11), SC_(0.9999997586453206939466993579886747171231), SC_(0.2413546793060533006420113252828768765451e-6) }, + { SC_(7.70285511016845703125), SC_(7.08257579803466796875), SC_(0.98838055133819580078125), SC_(0.4761397331451929725160505325773403281115e-4), SC_(0.2609521141069224555931607374250599751344e-14), SC_(0.9999999999451942159145440140475797331097), SC_(0.5480578408545598595242026689028528201668e-10) }, + { SC_(7.74910449981689453125), SC_(9.77002048492431640625), SC_(0.24360062181949615478515625), SC_(0.2809748748030878906134807236932900984484e-6), SC_(0.7039352803907688750989827476102766088975e-5), SC_(0.03838282753656349006974099376567772899157), SC_(0.9616171724634365099302590062343222710084) }, + { SC_(7.75712680816650390625), SC_(3.0361397266387939453125), SC_(0.38162028789520263671875), SC_(0.3174856064718994407322410576666859162998e-4), SC_(0.002836840704035496000125267546774354047992), SC_(0.01106765650909659492445444599671164724355), SC_(0.9889323434909034050755455540032883527564) }, + { SC_(7.78802204132080078125), SC_(4.589362621307373046875), SC_(0.831231176853179931640625), SC_(0.0004076191410116316877557812655012123322209), SC_(0.2290485203376599265477374882456806019621e-4), SC_(0.9467977339154922936386684541896058168939), SC_(0.05320226608450770636133154581039418310613) }, + { SC_(7.790517330169677734375), SC_(2.8658659458160400390625), SC_(0.53287231922149658203125), SC_(0.0002913507224419806408489878011213008592937), SC_(0.003321939283667330011209971439421244388538), SC_(0.08063308562262316945119654229806988727357), SC_(0.9193669143773768305488034577019301127264) }, + { SC_(7.79167270660400390625), SC_(3.563451290130615234375), SC_(0.18846313655376434326171875), SC_(0.1812064714686872881339510507069901994504e-6), SC_(0.00140763489898018370210968172475096931195), SC_(0.000128714589048228736124566940218461829085), SC_(0.9998712854109517712638754330597815381709) }, + { SC_(7.802274227142333984375), SC_(6.69285106658935546875), SC_(0.37867152690887451171875), SC_(0.6718585690226231195208825063099527425458e-5), SC_(0.5399933622825403546984905024026310319021e-4), SC_(0.1106524314064402252818337094384830270572), SC_(0.8893475685935597747181662905615169729428) }, + { SC_(7.802520751953125), SC_(8.77363872528076171875), SC_(0.3166187703609466552734375), SC_(0.1330342679961968055180712116906051557944e-5), SC_(0.1185649402350161416162403803303276288593e-4), SC_(0.1008841399857895822709543601350802069795), SC_(0.8991158600142104177290456398649197930205) }, + { SC_(7.805196285247802734375), SC_(4.489518642425537109375), SC_(0.905801355838775634765625), SC_(0.0004720268163961014124683042728426255969617), SC_(0.3213119926449902588446593212677240927796e-5), SC_(0.9932389521989391107715054281995243030034), SC_(0.006761047801060889228494571800475696996639) }, + { SC_(7.847393035888671875), SC_(2.1510903835296630859375), SC_(0.923387348651885986328125), SC_(0.009727310156023874504587039016931198473501), SC_(0.001290156224281512158060237873112935820442), SC_(0.8828990096500071119414151034196163945274), SC_(0.1171009903499928880585848965803836054726) }, + { SC_(7.9220733642578125), SC_(8.78430652618408203125), SC_(0.0421499200165271759033203125), SC_(0.1196659474916657441174232181172664977994e-11), SC_(0.1192125777470518177390527779850518935842e-4), SC_(0.1003802935403954907955230666168972539042e-6), SC_(0.9999998996197064596045092044769333831027) }, + { SC_(7.94284534454345703125), SC_(4.361175537109375), SC_(0.2081472575664520263671875), SC_(0.2447381840672728038845348751061544873532e-6), SC_(0.0005126801341235705432586525020297940373363), SC_(0.0004771423599838335979702373300859710852801), SC_(0.9995228576400161664020297626699140289147) }, + { SC_(7.94831371307373046875), SC_(9.1711788177490234375), SC_(0.3923812210559844970703125), SC_(0.2530260105355719165217670313076155257935e-5), SC_(0.6513945294708124573511723982377535946318e-5), SC_(0.279765882510569459790162118110313334035), SC_(0.720234117489430540209837881889686665965) }, + { SC_(7.951999664306640625), SC_(0.3644125163555145263671875), SC_(0.106742106378078460693359375), SC_(0.2514079809927098914743930066084480272919e-8), SC_(1.163872553827728040365603576864556041866), SC_(0.2160098883875358049792204171256175595443e-8), SC_(0.9999999978399011161246419502077958287438) }, + { SC_(7.96183872222900390625), SC_(5.828464031219482421875), SC_(0.505548000335693359375), SC_(0.3364063863780908268518215154033498267906e-4), SC_(0.8233741668099748129123207978729267108772e-4), SC_(0.2900603786236622956858055857862913448877), SC_(0.7099396213763377043141944142137086551123) }, + { SC_(8.0006847381591796875), SC_(6.601194858551025390625), SC_(0.2551696002483367919921875), SC_(0.5391071527078812155948221415853302646129e-6), SC_(0.5713861900140097483894570988207271285832e-4), SC_(0.009346886374602272786085468624166592310538), SC_(0.9906531136253977272139145313758334076895) }, + { SC_(8.00280475616455078125), SC_(2.970294475555419921875), SC_(0.03454263508319854736328125), SC_(0.2359504169396444613199059471054209015455e-12), SC_(0.002895905304882178682123245455032331606492), SC_(0.8147725566945623124011520221149926885917e-10), SC_(0.9999999999185227443305437687598847977885) }, + { SC_(8.0033054351806640625), SC_(4.727321147918701171875), SC_(0.632396042346954345703125), SC_(0.0001642708396456245002155889414278627744641), SC_(0.0001704845640035053813916014623246376461063), SC_(0.4907190081322873482172873252919517435757), SC_(0.5092809918677126517827126747080482564243) }, + { SC_(8.01014614105224609375), SC_(7.629314422607421875), SC_(0.473067760467529296875), SC_(0.9605457087484872556590712611960947795121e-5), SC_(0.1575447390683832403245260104323175510831e-4), SC_(0.3787651113733332962454132963174755174803), SC_(0.6212348886266667037545867036825244825197) }, + { SC_(8.0336437225341796875), SC_(3.969818115234375), SC_(0.652003467082977294921875), SC_(0.0003277010658982649912256687095595909171749), SC_(0.0004464549978352561288330040582897651460958), SC_(0.4233010387051179617160616217704047132117), SC_(0.5766989612948820382839383782295952867883) }, + { SC_(8.05489444732666015625), SC_(4.88401889801025390625), SC_(0.558312952518463134765625), SC_(0.8478675415917430662836332254098759449376e-4), SC_(0.0001920240588286705516762681867659938930953), SC_(0.3062985627042589881021782956541815347691), SC_(0.6937014372957410118978217043458184652309) }, + { SC_(8.1158046722412109375), SC_(1.99872875213623046875), SC_(0.398798644542694091796875), SC_(0.4573303308288477016458861099969373925785e-4), SC_(0.01350273035959787859233312717595515878367), SC_(0.003375514385460934169484510552831678035167), SC_(0.9966244856145390658305154894471683219648) }, + { SC_(8.14284801483154296875), SC_(2.998317241668701171875), SC_(0.149379074573516845703125), SC_(0.1745082435162042904917792022990606418957e-7), SC_(0.002654995292260473100026431771730405625634), SC_(0.65727836512545486164342292030456932044e-5), SC_(0.9999934272163487454513835657707969543068) }, + { SC_(8.14723682403564453125), SC_(1.35477006435394287109375), SC_(0.00291815050877630710601806640625), SC_(0.2730364832830778198135106898054911002111e-21), SC_(0.05048169106541300113169964851536344768866), SC_(0.5408623949013187678564421910413338717616e-20), SC_(0.9999999999999999999945913760509868123214) }, + { SC_(8.1730327606201171875), SC_(3.6318645477294921875), SC_(0.24421386420726776123046875), SC_(0.6371630232310130007593547981622454875113e-6), SC_(0.001110670951089779762717954365668587412204), SC_(0.0005733450652788258416132631006181126500942), SC_(0.9994266549347211741583867368993818873499) }, + { SC_(8.1754703521728515625), SC_(2.318886280059814453125), SC_(0.616083085536956787109375), SC_(0.0008188991309622442567476639566012279127539), SC_(0.006769526355441144134067326378549557222926), SC_(0.1079142349660693376621594572683118548668), SC_(0.8920857650339306623378405427316881451332) }, + { SC_(8.17627716064453125), SC_(3.6086070537567138671875), SC_(0.392287790775299072265625), SC_(0.1908175164083617809262499426787568832925e-4), SC_(0.001124442022622292383524761827210664484964), SC_(0.01668679923435103380027505666462901952011), SC_(0.9833132007656489661997249433353709804799) }, + { SC_(8.1776065826416015625), SC_(3.2673664093017578125), SC_(0.79738438129425048828125), SC_(0.001278705464795437314310908634751591927025), SC_(0.0005186898632948047998567438481753444885048), SC_(0.7114213800444668480364643362476249381052), SC_(0.2885786199555331519635356637523750618948) }, + { SC_(8.1814861297607421875), SC_(0.6552445888519287109375), SC_(0.60427105426788330078125), SC_(0.002597528906581071567322607066609879154373), SC_(0.3490514568713914629739506840284338318669), SC_(0.007386709507591538902867860528160113422691), SC_(0.9926132904924084610971321394718398865773) }, + { SC_(8.1998119354248046875), SC_(7.244538784027099609375), SC_(0.821263849735260009765625), SC_(0.2985298911713392575174019527954184317682e-4), SC_(0.1561941714934421885441864008488829609166e-6), SC_(0.9947951208804594371055070396859819090642), SC_(0.005204879119540562894492960314018090935792) }, + { SC_(8.211940765380859375), SC_(3.225107669830322265625), SC_(0.3443934917449951171875), SC_(0.852844984673369769908777640181362966199e-5), SC_(0.001873718524272210291255858851020160339178), SC_(0.004530994053384390348578716656051600553495), SC_(0.9954690059466156096514212833439483994465) }, + { SC_(8.2345790863037109375), SC_(8.21903324127197265625), SC_(0.0845274031162261962890625), SC_(0.1008622175396472072189867111908510286653e-9), SC_(0.1398148936129306045868087863797307013603e-4), SC_(0.7213930313165907010663134767586999314868e-5), SC_(0.9999927860696868340929893368652324130007) }, + { SC_(8.243762969970703125), SC_(5.32097530364990234375), SC_(0.781930983066558837890625), SC_(0.0001476361600562963831271417149507871345626), SC_(0.134988074988824637031716072218692261504e-4), SC_(0.9162267029702292906851795078487210570433), SC_(0.08377329702977070931482049215127894295673) }, + { SC_(8.2531375885009765625), SC_(5.05919361114501953125), SC_(0.643996536731719970703125), SC_(0.0001156121681748133340562841302486599120247), SC_(0.934617967278239692642012219689531511718e-4), SC_(0.5529725723078539926575013759042181494905), SC_(0.4470274276921460073424986240957818505095) }, + { SC_(8.2581691741943359375), SC_(4.624742031097412109375), SC_(0.23056511580944061279296875), SC_(0.2885178866685566279222747450093997726505e-6), SC_(0.0003307846740693321687142872629895457180421), SC_(0.0008714625456805344354901735652253818459257), SC_(0.9991285374543194655645098264347746181541) }, + { SC_(8.3082866668701171875), SC_(7.935975551605224609375), SC_(0.16573216021060943603515625), SC_(0.1306674927092766877335736422593833174746e-7), SC_(0.1633292411579459902650362319345265220809e-4), SC_(0.0007993855728167438736983893999915298251205), SC_(0.9992006144271832561263016106000084701749) }, + { SC_(8.31379795074462890625), SC_(1.89084184169769287109375), SC_(0.6491506099700927734375), SC_(0.00152938869562792073830729361868671957134), SC_(0.01434738071982103868557500806716407977261), SC_(0.09632870866914162189209256813799656490434), SC_(0.9036712913308583781079074318620034350957) }, + { SC_(8.3291683197021484375), SC_(0.6926252841949462890625), SC_(0.99406909942626953125), SC_(0.2648851559066134819887470428388781209687), SC_(0.04068237317509910353891278363474631331365), SC_(0.8668629049121900407498928546676857220008), SC_(0.1331370950878099592501071453323142779992) }, + { SC_(8.40717220306396484375), SC_(9.88521575927734375), SC_(0.147914230823516845703125), SC_(0.3586078744100753721545697156816073105493e-8), SC_(0.3939131223271255197901991732000987884728e-5), SC_(0.0009095449836760289218364398259850287547721), SC_(0.9990904550163239710781635601740149712452) }, + { SC_(8.41929149627685546875), SC_(0.111925862729549407958984375), SC_(0.99353539943695068359375), SC_(1.645995991321326036514439745545309818658), SC_(5.057472894853114447674130226847323961783), SC_(0.2455439145419333624057322196281698208938), SC_(0.7544560854580666375942677803718301791062) }, + { SC_(8.44308757781982421875), SC_(8.859981536865234375), SC_(0.4221454560756683349609375), SC_(0.2240872469627985359637256547159033519869e-5), SC_(0.5360625095689384132199776709279547262501e-5), SC_(0.2947935522405744373563884081068702206181), SC_(0.7052064477594255626436115918931297793819) }, + { SC_(8.4439220428466796875), SC_(7.901017665863037109375), SC_(0.90272581577301025390625), SC_(0.1527203827280396800125190640941128339653e-4), SC_(0.6542641466998938462121110048430365228876e-9), SC_(0.9999571611786777628904322744984882805837), SC_(0.428388213222371095677255015117194163251e-4) }, + { SC_(8.4912929534912109375), SC_(2.119243144989013671875), SC_(0.0480394922196865081787109375), SC_(0.7157142147553125039175936804727278815863e-12), SC_(0.009954321181750057141950443749065211225333), SC_(0.7189985149525021750897615243564171353529e-10), SC_(0.9999999999281001485047497824910238475644) }, + { SC_(8.53031063079833984375), SC_(5.339331150054931640625), SC_(0.276097476482391357421875), SC_(0.5889653642558661031599582491484625914899e-6), SC_(0.0001358616846656139519705775658570233039026), SC_(0.004316325089891021097941304667679358517042), SC_(0.995683674910108978902058695332320641483) }, + { SC_(8.55522823333740234375), SC_(2.52823352813720703125), SC_(0.757527887821197509765625), SC_(0.001956965380163300681265071978023040691615), SC_(0.002877631169435066553121584441411874492939), SC_(0.4047835967462217786717225566374351817667), SC_(0.5952164032537782213282774433625648182333) }, + { SC_(8.5944232940673828125), SC_(6.10916233062744140625), SC_(0.552925884723663330078125), SC_(0.2459051028813306432219867948151387203488e-4), SC_(0.3789872456769951346177490394023341925445e-4), SC_(0.3935159447041597432117993081110122220279), SC_(0.6064840552958402567882006918889877779721) }, + { SC_(8.686946868896484375), SC_(6.79519748687744140625), SC_(0.24792282283306121826171875), SC_(0.1487041346125827612364843192443702135301e-6), SC_(0.318660172226345553550016834442726284975e-4), SC_(0.004644867370645434834303464311170577390815), SC_(0.9953551326293545651656965356888294226092) }, + { SC_(8.6929225921630859375), SC_(0.77557027339935302734375), SC_(0.2630449831485748291015625), SC_(0.1110413697041890110939831316289488662224e-5), SC_(0.2251589252039880477403834356256277431233), SC_(0.4931664244925502164651547266278223302986e-5), SC_(0.9999950683357550744978353484527337217767) }, + { SC_(8.75371551513671875), SC_(1.20381677150726318359375), SC_(0.8626918792724609375), SC_(0.02295037230959824552015708044758745486436), SC_(0.04346884344455042458185902599008890979751), SC_(0.3455381405668693365636596049497825880116), SC_(0.6544618594331306634363403950502174119884) }, + { SC_(8.7594280242919921875), SC_(0.16520583629608154296875), SC_(0.404268085956573486328125), SC_(0.5979371340845381734687485767368175656545e-4), SC_(3.956897688076528295602296902536363584881), SC_(0.1511103257581782880763761615428321282318e-4), SC_(0.9999848889674241821711923623838457167872) }, + { SC_(8.7965373992919921875), SC_(3.2669925689697265625), SC_(0.797300159931182861328125), SC_(0.0009821984406753187938975914310180591063764), SC_(0.000472414096118496878112443956565851441922), SC_(0.6752302869877854606024469612984144998982), SC_(0.3247697130122145393975530387015855001018) }, + { SC_(8.81866550445556640625), SC_(0.89952909946441650390625), SC_(0.7481768131256103515625), SC_(0.009841011013929298549991722992186043695856), SC_(0.1417785855511473166136148267616265808647), SC_(0.06490593061105686481483430996789811545703), SC_(0.935094069388943135185165690032101884543) }, + { SC_(8.85167980194091796875), SC_(9.59221553802490234375), SC_(0.503712356090545654296875), SC_(0.1962936685938295661716831165955279050466e-5), SC_(0.1407862370418447309984561631639054499991e-5), SC_(0.5823357171755869530075454221503859302484), SC_(0.4176642828244130469924545778496140697516) }, + { SC_(8.86511898040771484375), SC_(5.02362346649169921875), SC_(0.573797285556793212890625), SC_(0.479058564212294760196882751111272421507e-4), SC_(0.0001133709722320212357715978716874399419542), SC_(0.2970411609731506263421030381130500110703), SC_(0.7029588390268493736578969618869499889297) }, + { SC_(8.9090328216552734375), SC_(4.23165130615234375), SC_(0.13808752596378326416015625), SC_(0.1599754832011563696994151500156252846786e-8), SC_(0.0003925619773926243337355475073108451411185), SC_(0.407514839669054984147468977780209687185e-5), SC_(0.9999959248516033094501585253102221979031) }, + { SC_(8.90922451019287109375), SC_(3.5534870624542236328125), SC_(0.54018402099609375), SC_(0.8669579639514216658467840622195540533204e-4), SC_(0.0008524710656804250564420104372583339429561), SC_(0.09231138777995603017390887220177639050053), SC_(0.9076886122200439698260911277982236094995) }, + { SC_(9.00053882598876953125), SC_(3.4383952617645263671875), SC_(0.3111712038516998291015625), SC_(0.1366668328180889698134295596539624266627e-5), SC_(0.001065167580362544530988892118992082926571), SC_(0.00128141063435947609498941949223591584803), SC_(0.998718589365640523905010580507764084152) }, + { SC_(9.02716064453125), SC_(3.0182731151580810546875), SC_(0.3018971383571624755859375), SC_(0.1179434773470281040987572941938752406077e-5), SC_(0.001947673697451668353210754240517537282717), SC_(0.0006051942827131564610485847407840905447697), SC_(0.9993948057172868435389514152592159094552) }, + { SC_(9.03720569610595703125), SC_(3.8475520610809326171875), SC_(0.53838860988616943359375), SC_(0.6370692065720327915386325974115606499101e-4), SC_(0.0005422484128740900164043781808599950704704), SC_(0.1051346809441248502677918033994902997408), SC_(0.8948653190558751497322081966005097002592) }, + { SC_(9.047222137451171875), SC_(2.644765377044677734375), SC_(0.549768626689910888671875), SC_(0.000161036141689452201793507692816913329241), SC_(0.0033327146520256412104459894219158429189), SC_(0.04609262400144281556295987549971263982398), SC_(0.953907375998557184437040124500287360176) }, + { SC_(9.048809051513671875), SC_(7.266544342041015625), SC_(0.4388004839420318603515625), SC_(0.2967806514752360440349527153749822237173e-5), SC_(0.1417715111536709165227714341739243569789e-4), SC_(0.1731008369212098882943614829500956308811), SC_(0.8268991630787901117056385170499043691189) }, + { SC_(9.05791950225830078125), SC_(8.35008525848388671875), SC_(0.0047337622381746768951416015625), SC_(0.9365761772242787374397164497153399708116e-22), SC_(0.71165912390234408468010205769228210554e-5), SC_(0.1316046047563634421262479801585926425442e-16), SC_(0.9999999999999999868395395243636557873752) }, + { SC_(9.0630817413330078125), SC_(8.48088836669921875), SC_(0.795220434665679931640625), SC_(0.6384512221387030519498645334941176886653e-5), SC_(0.338533433867839228125288826530779441978e-7), SC_(0.9947255507581894913373029108744520500915), SC_(0.00527444924181050866269708912554794990851) }, + { SC_(9.106475830078125), SC_(1.329960346221923828125), SC_(0.2581388950347900390625), SC_(0.4433298808071366938193620343309059171981e-6), SC_(0.04623599172337855208980015405504157053995), SC_(0.9588323154595910055544475932445339524054e-5), SC_(0.9999904116768454040899444555240675546605) }, + { SC_(9.1328678131103515625), SC_(0.18066270649433135986328125), SC_(0.504820525646209716796875), SC_(0.0003517078618334413592993322273482889139855), SC_(3.455845872386505033724751385383559724429), SC_(0.0001017615034057659581838153696350851986908), SC_(0.9998982384965942340418161846303649148013) }, + { SC_(9.133373260498046875), SC_(5.582687854766845703125), SC_(0.2290540635585784912109375), SC_(0.5440901342682134994316831399531247846047e-7), SC_(0.7849279102014276390788707715375524780519e-4), SC_(0.0006926919534186828856466794729038889562952), SC_(0.9993073080465813171143533205270961110437) }, + { SC_(9.133758544921875), SC_(2.2103404998779296875), SC_(0.008193102665245532989501953125), SC_(0.9492834082422093442181503717609790399606e-20), SC_(0.007265356531940199386598309751486426259219), SC_(0.130658888393011188931163148349050117368e-17), SC_(0.9999999999999999986934111160698881106884) }, + { SC_(9.15735530853271484375), SC_(6.39763355255126953125), SC_(0.040567062795162200927734375), SC_(0.1605141350622832333810860148924021882822e-13), SC_(0.3489582306305591687831832384426268132857e-4), SC_(0.4599809401211273663713909442483438812396e-9), SC_(0.9999999995400190598788726336286090557517) }, + { SC_(9.159912109375), SC_(6.55213260650634765625), SC_(0.912586271762847900390625), SC_(0.3018047697522979751555243567930781951144e-4), SC_(0.9349325473628660484916460449184096071461e-8), SC_(0.9996903153605288937948213436999850747588), SC_(0.0003096846394711062051786563000149252411828) }, + { SC_(9.17193698883056640625), SC_(6.95232868194580078125), SC_(0.170790970325469970703125), SC_(0.3694701174094692419832407269723819395738e-8), SC_(0.2089445121238316230691957995447673285082e-4), SC_(0.0001767956444259406013614873885791193701386), SC_(0.9998232043555740593986385126114208806299) }, + { SC_(9.17424297332763671875), SC_(8.0176296234130859375), SC_(0.950227081775665283203125), SC_(0.8539523754449092949267812263946732907335e-5), SC_(0.3080273781266635091557520938089589603712e-11), SC_(0.9999996392922183063089445295584381333051), SC_(0.3607077816936910554704415618666949469689e-6) }, + { SC_(9.20332050323486328125), SC_(3.924690723419189453125), SC_(0.69485914707183837890625), SC_(0.0002310503112810029066611893416788379084469), SC_(0.0002841260239293677938812757004432580527586), SC_(0.4484878195863833882626599955886481131739), SC_(0.5515121804136166117373400044113518868261) }, + { SC_(9.2337970733642578125), SC_(6.445505619049072265625), SC_(0.4359149932861328125), SC_(0.3518617297258378498751803839224728042655e-5), SC_(0.2846752000482794851986542503386822247384e-4), SC_(0.1100044454892298999779387975978826443182), SC_(0.8899955545107701000220612024021173556818) }, + { SC_(9.2885417938232421875), SC_(2.441382884979248046875), SC_(0.47481119632720947265625), SC_(0.4761255483176591056175849284001070081479e-4), SC_(0.004586185824940369681133540819136408293863), SC_(0.01027505966586902534866379616980543048538), SC_(0.9897249403341309746513362038301945695146) }, + { SC_(9.292636871337890625), SC_(2.1723785400390625), SC_(0.15452297031879425048828125), SC_(0.2624075056699678414562124647032627161364e-8), SC_(0.007521320523051118214918717491848671514352), SC_(0.3488847647374800274842030525271354542582e-6), SC_(0.9999996511152352625199725157969474728645) }, + { SC_(9.2938594818115234375), SC_(4.584969043731689453125), SC_(0.3805077970027923583984375), SC_(0.3033084082238698622351283936762757320358e-5), SC_(0.0002160623300405638004025369269425911334952), SC_(0.01384366758374349929295072479433910689838), SC_(0.9861563324162565007070492752056608931016) }, + { SC_(9.33993244171142578125), SC_(6.81359577178955078125), SC_(0.0497494600713253021240234375), SC_(0.5518070299877559210026646747715538340941e-13), SC_(0.2146633044365963053975520213612198005479e-4), SC_(0.2570569897903910302588882280913495968099e-8), SC_(0.9999999974294301020960896974111177190865) }, + { SC_(9.340106964111328125), SC_(9.6496639251708984375), SC_(0.18903611600399017333984375), SC_(0.3760693208748964009075562773732041031133e-8), SC_(0.2241360584188258329348724623108553890864e-5), SC_(0.001675051252959087450179950156748128851185), SC_(0.9983249487470409125498200498432518711488) }, + { SC_(9.39001560211181640625), SC_(2.4007594585418701171875), SC_(0.403971731662750244140625), SC_(0.1134959668917263176160589414159781875943e-4), SC_(0.004844797940116370573271103607794275185958), SC_(0.002337160599663038722280937028362435559564), SC_(0.9976628394003369612777190629716375644404) }, + { SC_(9.420505523681640625), SC_(9.54943370819091796875), SC_(0.3371889293193817138671875), SC_(0.1805691602626601023406871171319958471924e-6), SC_(0.2091846165246050032401702854147298202011e-5), SC_(0.07946133712253384615168111931846197902557), SC_(0.9205386628774661538483188806815380209744) }, + { SC_(9.4273700714111328125), SC_(1.3122184276580810546875), SC_(0.709393918514251708984375), SC_(0.003017013444722590640311000913969701534262), SC_(0.04315436163162597522990240737111380539958), SC_(0.06534380749400867203205742252815333005062), SC_(0.9346561925059913279679425774718466699494) }, + { SC_(9.43622684478759765625), SC_(7.562816619873046875), SC_(0.86930525302886962890625), SC_(0.1050377778686616769098759960271509592204e-4), SC_(0.9810847461408665570279905884259728037155e-8), SC_(0.9990668412278015532617620281113608196916), SC_(0.0009331587721984467382379718886391803084328) }, + { SC_(9.447872161865234375), SC_(0.4794428348541259765625), SC_(0.3019829094409942626953125), SC_(0.1527301820162022411297571755969196094484e-5), SC_(0.6378057092170519230917855314560001309605), SC_(0.2394613501875548352256068326033443059895e-5), SC_(0.9999976053864981244516477439316739665569) }, + { SC_(9.45174121856689453125), SC_(0.259588778018951416015625), SC_(0.9688708782196044921875), SC_(0.4793292977141484299090680804809562384231), SC_(1.485529678525234390368678419714687359757), SC_(0.2439509926720312131315430238386720081336), SC_(0.7560490073279687868684569761613279918664) }, + { SC_(9.50222110748291015625), SC_(4.90589046478271484375), SC_(0.095445640385150909423828125), SC_(0.1494828487479906048651881175052573767788e-10), SC_(0.0001378928182363681434821788452535606188609), SC_(0.1084050891519629129496674016152519495829e-6), SC_(0.9999998915949108480370870503325983847481) }, + { SC_(9.51630496978759765625), SC_(8.78050518035888671875), SC_(0.68924558162689208984375), SC_(0.3487950539831946130214243133355575362614e-5), SC_(0.2597595086647305428948201602139996658804e-6), SC_(0.9306884723462189452892185573366006247018), SC_(0.06931152765378105471078144266339937529823) }, + { SC_(9.5613460540771484375), SC_(6.51968669891357421875), SC_(0.3377856314182281494140625), SC_(0.4444839214175533505542773743694858127194e-6), SC_(0.2448798812291126478463498053849728750408e-4), SC_(0.01782751107179748780824836030020235500629), SC_(0.9821724889282025121917516396997976449937) }, + { SC_(9.57166957855224609375), SC_(1.0986175537109375), SC_(0.0333652384579181671142578125), SC_(0.7641149432459472271709082287842355172746e-15), SC_(0.07915132376380966467712577074419741010585), SC_(0.9653849195574867821285790668820816696202e-14), SC_(0.9999999999999903461508044251321787142093) }, + { SC_(9.57506847381591796875), SC_(9.9646129608154296875), SC_(0.01787211932241916656494140625), SC_(0.1658996384153681417135737467814313678843e-17), SC_(0.1513424851355072886884114448435894461463e-5), SC_(0.1096186825970546076551374980438478385039e-11), SC_(0.9999999999989038131740294539234486250196) }, + { SC_(9.57693958282470703125), SC_(7.249060153961181640625), SC_(0.872441589832305908203125), SC_(0.1265918745248280535982657188870855265927e-4), SC_(0.1650447533802566668031298868233442384058e-7), SC_(0.9986979428474589734503870049545106253976), SC_(0.001302057152541026549612995045489374602406) }, + { SC_(9.59291362762451171875), SC_(5.809566974639892578125), SC_(0.1387105882167816162109375), SC_(0.3226608546341382422172814363970325173078e-9), SC_(0.4951645101829454492779247772056654797778e-4), SC_(0.6516193012187428032807345415266845925099e-5), SC_(0.9999934838069878125719671926545847331541) }, + { SC_(9.59492397308349609375), SC_(5.036627292633056640625), SC_(0.043119497597217559814453125), SC_(0.70463813192480350035637684220091276433e-14), SC_(0.0001140624644588322714943677495101932553999), SC_(0.6177651300315304735247529704567042174447e-10), SC_(0.9999999999382234869968469526475247029543) }, + { SC_(9.59743976593017578125), SC_(5.737546443939208984375), SC_(0.12707412242889404296875), SC_(0.1472749033768804794567481194100647733112e-9), SC_(0.5323124639940113790246026061688731976865e-4), SC_(0.276669260771152772688627996297166358751e-5), SC_(0.9999972333073922884722731137200370283364) }, + { SC_(9.61898136138916015625), SC_(9.79925632476806640625), SC_(0.240151941776275634765625), SC_(0.1353843923794317977412052106059477829317e-7), SC_(0.1632783113888411433729758988565696586839e-5), SC_(0.008223447729414564260765034318619123062768), SC_(0.9917765522705854357392349656813808769372) }, + { SC_(9.63088512420654296875), SC_(6.059281826019287109375), SC_(0.488668859004974365234375), SC_(0.581055997045127220418244921269735439886e-5), SC_(0.3187439986268775277133352875803521062324e-4), SC_(0.1541877713596934710853644077040271007484), SC_(0.8458122286403065289146355922959728992516) }, + { SC_(9.6488857269287109375), SC_(9.67694950103759765625), SC_(0.0185489989817142486572265625), SC_(0.1749481595836606883382303122964370689815e-17), SC_(0.1758002864820450185505025032329301561348e-5), SC_(0.995152869681782569163934165768269529895e-12), SC_(0.9999999999990048471303182174308360658342) }, + { SC_(9.686492919921875), SC_(3.323390960693359375), SC_(0.822622716426849365234375), SC_(0.0007256304807823739090101393096545824752395), SC_(0.0002824860673401657300814152223119963953949), SC_(0.7197882845329221918507242489433549020479), SC_(0.2802117154670778081492757510566450979521) }, + { SC_(9.70592784881591796875), SC_(9.81109714508056640625), SC_(0.0319296605885028839111328125), SC_(0.2412648809123635167598641163183182877987e-15), SC_(0.153247481975863672328821013292784593199e-5), SC_(0.1574348092142740770669069066716607378887e-9), SC_(0.9999999998425651907857259229330930933283) }, + { SC_(9.7297458648681640625), SC_(1.422172069549560546875), SC_(0.62565600872039794921875), SC_(0.0007515285211317483408827317273891061880333), SC_(0.03308064211512736093153684853289103287133), SC_(0.02221342902327139455287559010633701337676), SC_(0.9777865709767286054471244098936629866232) }, + { SC_(9.7868061065673828125), SC_(2.324003696441650390625), SC_(0.580998599529266357421875), SC_(0.0001869421048606273257218647038338269425064), SC_(0.004902502132333050539451707571566560474365), SC_(0.03673133964106605423746931249168049356184), SC_(0.9632686603589339457625306875083195064382) }, + { SC_(9.7974834442138671875), SC_(3.546381473541259765625), SC_(0.43892610073089599609375), SC_(0.8846383934988994958104111659144072787642e-5), SC_(0.0006942444162306305791078085627402992944978), SC_(0.01258213581077315616174240184063815608328), SC_(0.9874178641892268438382575981593618439167) }, + { SC_(9.816379547119140625), SC_(4.97869396209716796875), SC_(0.7558143138885498046875), SC_(0.8471586497414725426535462974925383298225e-4), SC_(0.2600787706776670771042095868990896095329e-4), SC_(0.7651102050188879474911089577484436075733), SC_(0.2348897949811120525088910422515563924267) }, + { SC_(9.82663440704345703125), SC_(8.9943599700927734375), SC_(0.79222810268402099609375), SC_(0.2564909668495030018187514949876471506381e-5), SC_(0.1328272157019951695723866392922830834089e-7), SC_(0.9948480487253848974511529374575346247921), SC_(0.005151951274615102548847062542465375207862) }, + { SC_(9.83052539825439453125), SC_(5.54380321502685546875), SC_(0.711244642734527587890625), SC_(0.4142099063694028106257790388260333526588e-4), SC_(0.1706128131291109079313412403482492307802e-4), SC_(0.7082657573983930918019463517369821910095), SC_(0.2917342426016069081980536482630178089905) }, + { SC_(9.84063720703125), SC_(2.9338824748992919921875), SC_(0.679551780223846435546875), SC_(0.0003620677940926280979183654032292271566579), SC_(0.001398063860838349825529157603027032578726), SC_(0.2057049500122911434857054575556857430709), SC_(0.7942950499877088565142945424443142569291) }, + { SC_(9.8798198699951171875), SC_(7.69243144989013671875), SC_(0.498594343662261962890625), SC_(0.2102276377997196459781769309658523199559e-5), SC_(0.5090672027747954852585150635916233053816e-5), SC_(0.2922690751289229878585770869253518082993), SC_(0.7077309248710770121414229130746481917007) }, + { SC_(9.9613475799560546875), SC_(4.475843906402587890625), SC_(0.2373598515987396240234375), SC_(0.2596148971864002645551220232138375643592e-7), SC_(0.0001912089032647389537199491735362492125718), SC_(0.0001357570950881480228485230092737049890207), SC_(0.999864242904911851977151476990726295011) }, + { SC_(9.9908046722412109375), SC_(6.74212932586669921875), SC_(0.73282539844512939453125), SC_(0.1400972426630799368521044086815964034595e-4), SC_(0.1993917002921952527694349144803786583093e-5), SC_(0.8754085417575787330833090864097798601476), SC_(0.1245914582424212669166909135902201398524) } + } }; +#undef SC_ + + + diff --git a/test/igamma_big_data.ipp b/test/igamma_big_data.ipp new file mode 100644 index 000000000..99f6ec939 --- /dev/null +++ b/test/igamma_big_data.ipp @@ -0,0 +1,298 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 287> igamma_big_data = { { + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.1730655441178896580822765827178955078125e-7), SC_(-1), SC_(0.2993117912029903240422582053899047098779533956541385552546168739467202263345519375546082579259835689e-4), SC_(577797.90391619920649973095027584836128926282155274216943338008435801586707772349755359609709258809), SC_(0.9999700688208797009675957741794610095290122046604345861444745383126053279773665448062442806862583006) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.8653277063785935752093791961669921875e-6), SC_(13.38277582367555562294055416847373915500263659346494217875993623821221196887112446988546507684731302), SC_(0.2316099655383339755405731669847576162961123204586203558223557251327214945205980959748823352959805302e-4), SC_(577801.8158305834504756449335090514614341009677858339594077124115869397920785194231187741120056354752), SC_(0.9999768390034461666024459426833015242383703887679541379644177644274867278505479401904023114002150846) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.15575898260067333467304706573486328125e-5), SC_(12.79500378214091254793715786456975103024623413471734292810881005720669047076428987935745392946724363), SC_(0.2214376467251173939070843604623148303831679646741287024258011317172427658231597089388494422353631048e-4), SC_(577802.4036026249851187199369053553654222257241882927070069630627131207976000175299533646400167828553), SC_(0.9999778562353274882606092915639537685169616832035325871297574198868282757234176840291059234224082336) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.1730655412757187150418758392333984375e-5), SC_(12.68964583907062077871829961486723468135682689673266287978904878277523088091119954467857396528045035), SC_(0.2196142619591161296471772336172777007255716660501426039935550192381060291894820144394071807910637318e-4), SC_(577802.5089605680554104891557636050679385746135955306916870113824743952290596073830436993188967470421), SC_(0.9999780385738040883870352822766382722299274428333949857396006444980761893970810517985558692139197711) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.19037209995076409541070461273193359375e-5), SC_(12.59433798893655043954589862357055470940362305301481664366705173244103638298812628401438143132385277), SC_(0.2179648098442542012919725801196235526752581619134538802152189012490537997981862095991665699048812574e-4), SC_(577802.6042684181894808283281645963646185465667993744095332475044714455632541053061169599830892809987), SC_(0.9999782035190155745798708027419880376447324741838086546119784781098750946200201813790398946910551472) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(0.346131082551437430083751678466796875e-5), SC_(11.99651588829393824582180456312241868001302147867883382726363976385247472204566448446731588772998297), SC_(0.2076185589653493482621881863527269295135816556729123147246768142978789975019603223353600738511731743e-4), SC_(577803.2020905188320930220522586568127545759574009487455160639078834141518157662485787595301548245925), SC_(0.9999792381441034650651737811813647273070486418344327087685275323185702121002498039677662842228674524) }, + { SC_(0.1730655412757187150418758392333984375e-5), SC_(100), SC_(0.3683627182454331134963955188773865444199332047934531274456895593248745425858894973030111393161584247e-45), SC_(0.6375095690349819561521120606914926108297136245134545709768047316328210161282911224399118544097308838e-51), SC_(577815.1986064071260312678740632199351732559704224270559871729260900645078949694168616600942877298302), SC_(0.9999999999999999999999999999999999999999999999999993624904309650180438478879393085073891702863754865) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.2165750601079707848839461803436279296875e-7), SC_(17.07036298743991829639232909707087901526592903518599127734139540188516463205963663609773648657087723), SC_(0.3697019560232757110772732624480593336583723516402296244222007952690817919777008967240987096315205331e-4), SC_(461716.0286732860299357310725043145832190410385140498351914099753626833373215850444505022444334646984), SC_(0.999963029804397672428892272673755194066634162764835977037557779920473091820802229910327270922330567) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.1082875314750708639621734619140625e-5), SC_(13.15847397691465595815267467658117236635160976637264298180412548481293452753278961720297628581992752), SC_(0.2849800892415757764539734483805658830800200360898241591461531657548830413725265774914562236687744426e-4), SC_(461719.9405622965551980693121587350729256899528333186485397055126326004095516895712975211391936654494), SC_(0.9999715019910758424223546026551619434116919979963910175840853846834245116958627473422506079043676802) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.1949175612026010639965534210205078125e-5), SC_(12.57070526636212517657129379971158284943858132030323149197288591584777613568565108919579056236543589), SC_(0.2722504687794664306569369785134358990534116641373655972975320770778744429628254055229370221303254972e-4), SC_(461720.5283310071077288508935396119425152068658617647179511953438721693747100814184360491463793889039), SC_(0.9999727749531220533569343063021486564100946588335862634402702467922922125557037174594474707528583518) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.216575062950141727924346923828125e-5), SC_(12.46534797873423664682712357366176987162472172738379809193584747614716729169916499965524978602165451), SC_(0.2699686898069866664183548452276314691424700035617881842498407894456650352425582613848998322249744459e-4), SC_(461720.6336882947356173806377098379923281846797213576373845953809106090753189254049221386869201652476), SC_(0.9999730031310193013333581645154772368530857529996438211815750159210554334964757441738612764307485453) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.2382325646976823918521404266357421875e-5), SC_(12.37004071696991805388122752478307298700621276058091950265758048467078476384585545609003052590305182), SC_(0.2679045696050075721547716691574204592244930158617242358470809118887179680331039379286281767451411551e-4), SC_(461720.7289955564999359735836058868710250692982303244402631846591776005517014532582316822521394253662), SC_(0.9999732095430394992427845228330842579540775506984138275764152919088111282031966896062069053683368566) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(0.43315012590028345584869384765625e-5), SC_(11.77222202288641210205964167726460731035184670773110091246245945382178746024664362553109279728970161), SC_(0.2549572912892171401404180030095052432599185661069912133627122154282800848058328121324720391504851142e-4), SC_(461721.3268142505834419254051917343894907459525963772900817748542986314006987568574435128110771539796), SC_(0.9999745042708710782859859581996990494756740081433893008786637287784571719915194167187865320972916923) }, + { SC_(0.216575062950141727924346923828125e-5), SC_(100), SC_(0.3683634579017030862943995949753137846949736979296757741127256914376144677962154307133740093495808363e-45), SC_(0.7977843881466350722692047722021738976382706440159930605192038431116437783506465250207545631610617926e-51), SC_(461733.0990362734698540274648334116540980563044430846528192294150549989280866221287773176113335726772), SC_(0.999999999999999999999999999999999999999999999999999202215611853364927730795227797826102361729355984) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.7270019608540678746066987514495849609375e-7), SC_(15.85873131324027603680994500593701083673995551510827497457378784799406402441597983944788065984676601), SC_(0.0001152937700708314574190375921633958573930633611632172214032709001883959995018869165672190219989383104), SC_(137534.7765154773198155043727784530103263311602038221971826660153368209797591918890572085146268195923), SC_(0.9998847062299291685425809624078366041426069366388367827785967290998116040004981130834317859606150677) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.363500976163777522742748260498046875e-5), SC_(11.94712370377855206849356853972802387128008268591504291389545599044297977188193456270625002844103574), SC_(0.868561870495419015631694962376837056380169046553848836742030704855372577688384839675927895023169524e-4), SC_(137538.688123086781539472689154919219313296620076651390414726693668678530843444423102485256257450998), SC_(0.9999131438129504580984368305037623162943619830953446151163257969295144627422311615160316563336632746) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.654301766189746558666229248046875e-5), SC_(11.35939219617933366143120008086493854405691096926337486689608980095578074772077473924953323650483309), SC_(0.8258334958467143799950171794348266133126127344865110178937324906877842427949992341364148713573494716e-4), SC_(137539.2758545943807578797515233780823986238432483680420827736930348680180424685842623087129742429342), SC_(0.9999174166504153285620004982820565173386687387265513488982106267509312215757205000765856443189256825) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.72700195232755504548549652099609375e-5), SC_(11.25404152411781013189063221030791950069213486896481451201744166449599357258178579846150790743580515), SC_(0.8181744492801532375947886460140903722510746521679776491443785314602565395703504194717704954065827439e-4), SC_(137539.3812052664422814092920912486394176672080244683406431285716830044778296437232512495009995720032), SC_(0.9999181825550719846762405211353985909627748925347832022350855621468539743460429649580521153319173109) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.7997021384653635323047637939453125e-5), SC_(11.15874024755388081703378542276070157549981458020172273054652486564002395885863126609049696032298202), SC_(0.8112459987940510325956129320339107435160215638035605125726023380005315176840924661421761839904966304e-4), SC_(137539.476506543006210724148938036186635592400344757103734910042599803333799257446405781872010519116), SC_(0.9999188754001205948967404387067966089256483978436196439487427397661999468482315907533850807112287131) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(0.14540039046551100909709930419921875e-4), SC_(10.56095948655061168623605418003161853323578819344933772554926100916849496396397890725434425870422914), SC_(0.767787038395159161757367222671493221399764679021626603575413867936745207659445426399210347886488265e-4), SC_(137540.0742873040094798549466692789157186346643711438561199150398636598053282523410581407081632207348), SC_(0.9999232212961604840838242632777328506778600235320978373396424586132063254792340554573594146049528292) }, + { SC_(0.72700195232755504548549652099609375e-5), SC_(100), SC_(0.3683721352040578625035542191213058231001385172015235695102827758219171635643319097964745619715389846e-45), SC_(0.2678083852852675296525747931813028293308341797284316939479666731722330013321908997535126058327254522e-50), SC_(137550.635246790560091541182723458947337167900159336937085505385066806470268997183732405754158996547), SC_(0.9999999999999999999999999999999999999999999999999973219161471473247034742520681869717066916582027157) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.14000005421621608547866344451904296875e-6), SC_(15.20267805917854753815628244090214839667049079013284121307207600981527369429051379479050029246563141), SC_(0.000212839284799294089771515202962972979787263184811743923962510356993572455648372128284605839985121416), SC_(71412.76736757672594226777131614926452425899670482796435759812610549247602601578025739683076592211497), SC_(0.9997871607152007059102284847970370270202127368151882560760374896430064275443516278717135571888613995) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.70000023697502911090850830078125e-5), SC_(11.29141909326230883966958875900019584358646658107430454213881289111615105204428414548153264983317026), SC_(0.0001580811982483630764639288404865989626895654210675549296284020672607670587485524042452843453497320055), SC_(71416.67862654264218096625800983116647681208072903702289426905936861117514865802648704613973356474743), SC_(0.9998419188017516369235360711595134010373104345789324450703715979327392329412514475957533488014886493) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.126000040836515836417675018310546875e-4), SC_(10.70373329082055239449657483518606481142874325545821945131987913327529111609288538115779787067004457), SC_(0.0001498535277424495070345925587342959337960485628714949943651616208608914719572016270715187995841055091), SC_(71417.26631234508393741143102375498060784423845236263897935987830236901600859397788581046346834391056), SC_(0.9998501464722575504929654074412657040662039514371285050056348383791391085280427983729271849847834439) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.14000004739500582218170166015625e-4), SC_(10.59839072270521094524351095575880524386997946950893653234037834073484898520661255840222881734977303), SC_(0.0001483787193718905056334122230314149572977420671679956361699029601390606768301478556951013052574995591), SC_(71417.37165491319927886068408763440786741179721614858826227885780316155645072486415863321903739723083), SC_(0.9998516212806281094943665877769685850427022579328320043638300970398609393231698521443036151408736946) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.1540000448585487902164459228515625e-4), SC_(10.50309683838772573125941726421973020244283911278816693802809721877148404719015973281760898508378721), SC_(0.0001470445937589604281730698265658277177395861433369834394530184624954932090593614476786270573218152004), SC_(71417.46694879751676407466818132594694245322435650530903187317008428351981566288061145880365722949682), SC_(0.9998529554062410395718269301734341722822604138566630165605469815375045067909406385523201008427606316) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(0.2800000947900116443634033203125e-4), SC_(9.905362625758730832950380165732997088838389659552109844584580076431198316831313148705327140762918642), SC_(0.0001386762443259988347965664731737503432671106791399389549124501709095361518293591970133145764479534118), SC_(71418.06468301014575897297721842443367556682880595854508896661360142586010139323945804291593907381769), SC_(0.9998613237556740011652034335268262496567328893208600610450875498290904638481706408029854851689431666) }, + { SC_(0.14000004739500582218170166015625e-4), SC_(100), SC_(0.3683835765509991294862982614804136847801099409567709282365033456679433396999382650467739713261291934e-45), SC_(0.515741349384052073532197492849381798262021063178704056359276164773687862416427823871341331934634477e-50), SC_(71427.97004563590448980592759859016667265566719561772881523464718237280500144859035812007682196294087), SC_(0.999999999999999999999999999999999999999999999999994842586506159479264678025071506182017379789368213) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.1719645439379746676422655582427978515625e-6), SC_(14.99669319731847902681516901432820497411594146304800437538380922933153677323336904126149912001708466), SC_(0.0002578925163746625551575993078008476785681224051462033705263730458097938280913594746895087755902741312), SC_(58135.94699503091176460657656108692274293661971223570330985275344143300339644004833247949176315386748), SC_(0.9997421074836253374448424006921991523214318775948537966294736269541902061719086405253082653069983582) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.85982273958506993949413299560546875e-5), SC_(11.0855947401242460358028130769947720703971405472239617885567410624616105500881617874679656184668242), SC_(0.0001906348209851726835515900888048454979817969614369117035420426388904830987287387166029562530382486766), SC_(58139.85809348810599759758891702425617584033851315152735243958050959987332266319353973328529665541774), SC_(0.9998093651790148273164484099111951545020182030385630882964579573611095169012712612833953952683876202) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.1547680949443019926548004150390625e-4), SC_(10.49792985626979618498343837040865603489875493195003895029183893179584539788755762879245379872454632), SC_(0.0001805289680689213239964193315133342527700934346776491379903331398469127758468745331930792183429475664), SC_(58140.44575837196044744840829173084229187583689876680127527784541173053908781539414389196080847516002), SC_(0.9998194710319310786760035806684866657472299065653223508620096668601530872241531254668053590665666157) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.17196454791701398789882659912109375e-4), SC_(10.39259104243131584787684932172789160220998254074606161008377922421908251753583638818731650795845545), SC_(0.0001787174959386796170171417214660036462509920156648633276951343784698577165443165555401638674670448533), SC_(58140.55109718579892778551488077952305630852567115800525261805347143811585069574586513256594576592611), SC_(0.9998212825040613203829828582785339963537490079843351366723048656215301422834556834444582899697797568) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.189161000889725983142852783203125e-4), SC_(10.29730049288262983915572894419899582622032686300292319384286203571641340667613238799666075647570598), SC_(0.0001770788200461682436542865143285542655243668892838192491637975251267220026923230344308867743589514937), SC_(58140.64638773534761379423600115705195208451532683574839103429438862661851980660556913275660151740886), SC_(0.9998229211799538317563457134856714457344756331107161807508362024748732779973076769655675811316884015) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(0.3439290958340279757976531982421875e-4), SC_(9.699587680807103601261622470650203003996266491733915126728166383320062295122274381742032062262985566), SC_(0.0001668001766714344289542290154568729225088539118597567100029557551304502067213839272724209870582841905), SC_(58141.24410054742314003213010763060074490673938720701739910140908427901487091815942713901123021162158), SC_(0.9998331998233285655710457709845431270774911460881402432899970442448695497932786160727261351659598326) }, + { SC_(0.17196454791701398789882659912109375e-4), SC_(100), SC_(0.3683890108172782336916850566214648572490832360795647799218485822274949449073067860649358834823228436e-45), SC_(0.6335047850510686697307408415657771107469595030823606800328451826042509413873890781797682010954556142e-50), SC_(58150.94368822823024363339173010125094791073565369838292521731997242864324815666023716275797032750635), SC_(0.9999999999999999999999999999999999999999999999999936649521494893133026925915843422288925304049691764) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.6008507398291840218007564544677734375e-6), SC_(13.74160058590621974033625312730012610410136537881295930824709044545026889620745748440375184515969386), SC_(0.0008256937528942705699607849998658442771868595790970147844407880786142834291538660487838749299250098172), SC_(16628.74907799601202594084165196443464948382177535210832602381574808990587957874779370504510783318879), SC_(0.9991743062471057294300392150001341557228131404209029852155592119213857165708461339512089946743206323) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.300425381283275783061981201171875e-4), SC_(9.832513238723005633097631837924955082193825264175287541690476668759603163349480283667417317916510588), SC_(0.0005908077960576523146351736035109017568698260732630412794481689840933306317500101458272154249803039506), SC_(16632.65816534319524004808027325380982050572931546674599779037236186659654531160577090578144236043197), SC_(0.999409192203942347685364826396489098243130173926736958720551831015906669368249989854167671121737354) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.540765686309896409511566162109375e-4), SC_(9.245107859044843211173818163972984215461691665379384177706413383467141179757266030996728587384159573), SC_(0.0005555122750312157622728934347320953145866629704717469787356004622299329217492690713533177013194531898), SC_(16633.24557072287340247000408692776179137246144906554190115435642515188900729519798515845213109096432), SC_(0.9994444877249687842377271065652679046854133370295282530212643995377700670782507309286418719245451614) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.60085076256655156612396240234375e-4), SC_(9.139815195325465702058514116998788563501807142701475440765267106771579289880354623906060301361921934), SC_(0.0005491855379007642438464238237169830346760645732453909708238330810904250465776863793357928139140845955), SC_(16633.35086338659277997911939097473598702442133358821980989129757142858456918507489656554279937698656), SC_(0.9994508144620992357561535761762830169653239354267546090291761669189095749534223136206594511390163093) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.660935838823206722736358642578125e-4), SC_(9.044566393625459415121859073459850158828436398432103153348140456124938928569654963060372528875497449), SC_(0.0005434623079143664209121383555396154554432696531687514968083873931753596021393389520867990065129290215), SC_(16633.44611218829278626605604601827492542909470433248918217871469807923120954638559622638848714947299), SC_(0.9994565376920856335790878616444603845445567303468312485031916126068246403978606610479084940912271084) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(0.00012017015251331031322479248046875), SC_(8.447118325642176779371141162360900327601474944636635193409056350052051339196526154640029285169099398), SC_(0.0005075633502690321533981228019510321159233334164265252246066292012368729961569458832773514890373635888), SC_(16634.04356025627606890180676392937387526032166578628465013865378218530409713575872503480883039317939), SC_(0.9994924366497309678466018771980489678840766665835734747753933707987631270038430541167182498695001737) }, + { SC_(0.60085076256655156612396240234375e-4), SC_(100), SC_(0.3684619332693842740366397112563557679129773136014184841391168077019097073523515211979175459196833086e-45), SC_(0.221398311337843792387906651823397378558814310863986769724390019581641709025448504005509468793646639e-49), SC_(16642.49067858191824568117790509173477558792314073055282339879345426131950876369889556444397301350545), SC_(0.9999999999999999999999999999999999999999999999999778601688662156207612093348176602621441185689136013) }, + { SC_(0.000116783194243907928466796875), SC_(0.1167831896964344196021556854248046875e-5), SC_(13.0723722013825449744898100710193462792359716907703252698597158252004788687927453810442498996448669), SC_(0.001526736277332467809695602437123220235263581107362260605721933446410778907540799054028524584634579557), SC_(8549.226431769367830517097646440596109822685037794675407325303178003370324075052683729709571259703343), SC_(0.9984732637226675321903043975628767797647364188926377393942780665535892210924592009459582847131158751) }, + { SC_(0.000116783194243907928466796875), SC_(0.583915971219539642333984375e-4), SC_(9.165749854253180926409802205477689189204018839063786945225902234841021037759656339096568352787215729), SC_(0.001070477691108208140608981919686359311648580961364237183752566991085173562551927909006291655595040755), SC_(8553.133054116497194565177654306137766912716990646381945649936991593729781906085772771657252806560994), SC_(0.9989295223088917918593910180803136406883514190386357628162474330089148264374480720909844363536076973) }, + { SC_(0.000116783194243907928466796875), SC_(0.0001051048748195171356201171875), SC_(8.578658478262451685615326332573925102449459095256783298304689641438356262261613546923759105099506562), SC_(0.001001910663790910279977445274614486871801867310549409211969606741492792215683564431003801905795198654), SC_(8553.720145492487923805972130179041530999471550390188949296858204187132446681583815563830062054248703), SC_(0.9989980893362090897200225547253855131281981326894505907880303932585072077843164355689875150115471557) }, + { SC_(0.000116783194243907928466796875), SC_(0.000116783194243907928466796875), SC_(8.473421634611367997218891715600607210314226082228594954553317127160311652789916356205949154787229542), SC_(0.0009896199406965141471241631575803399976897707371128530024174505270783175141644578049364631228025379822), SC_(8553.82538233613900749436856479601484889160678340321713764060957670141049129105551275454787200456098), SC_(0.9990103800593034858528758368424196600023102292628871469975825494729216824858355421950549593570405584) }, + { SC_(0.000116783194243907928466796875), SC_(0.0001284615136682987213134765625), SC_(8.3782233269478559990432172622259390592758960016299563191319285312489835544646004154868362947800528), SC_(0.0009785016289156447435129559980555660843558508977079827560413401591820682591048119667241341447079291968), SC_(8553.920580643802519492544239249389517042645113483815776276030965297321819389380828695266984864568157), SC_(0.999021498371084355256487044001944433915644149102292017243958659840817931740895188033267383828035512) }, + { SC_(0.000116783194243907928466796875), SC_(0.00023356638848781585693359375), SC_(7.781095695005977892942787662267736085116650989029568955515214759815343271383915268781534958881021346), SC_(0.0009087624565727032356397173210058719962540604705711151881320363859761981242119678619361453332751609037), SC_(8554.517708275744397598644668849347720016804358496416163639647679068755459672461513841972286200467188), SC_(0.9990912375434272967643602826789941280037459395294288848118679636140238018757880321380559716149212019) }, + { SC_(0.000116783194243907928466796875), SC_(100), SC_(0.3685583578191641738102885449268264348666032848345216446320717264577480665695232465450804608746700508e-45), SC_(0.4304432328947056962621323115107149816375975950216664061390675433944389059467304308819915958797644574e-49), SC_(8562.298803970750375491587456511615456101921009485077174237343729654760514398918602749427713618803923), SC_(0.9999999999999999999999999999999999999999999999999569556767105294303737867688489285018362402404978334) }, + { SC_(0.000149052008055150508880615234375), SC_(0.14905200487191905267536640167236328125e-5), SC_(12.82591299746853564780110293902388174831655823815863925015513487528138181275844026445097264307240789), SC_(0.001911892535376961605983536062691480293914244401543544143477023382264412065499890086163749263164473714), SC_(6695.664632439852437033167401705228498509464571792463308993994675330823833233030981151177831147347796), SC_(0.9980881074646230383940164639373085197060857555984564558565229766177355879345001099138197285204982504) }, + { SC_(0.000149052008055150508880615234375), SC_(0.745260040275752544403076171875e-4), SC_(8.92063961729477488038309863232250613118874207958871869969383909765235132049465342609921076122509333), SC_(0.001329753624436724272362880267554856885879507745235091597946684888456099795023059019598671447543247654), SC_(6699.569905820026197800585406011929874126592387951033229544455971108452863725294767989529593029195111), SC_(0.9986702463755632757276371197324451431141204922547649084020533151115439002049769409803898068354501711) }, + { SC_(0.000149052008055150508880615234375), SC_(0.00013414680142886936664581298828125), SC_(8.3337189144549510455177521460598951321921957899653410630788260012547864560952328857614541672987351), SC_(0.001242264389881715600481292828695385168054450509254023087812967207616643457676123648814990083256489705), SC_(6700.156826522866021635450752498192485125588934240656607181070984204850428589694188529867349623121469), SC_(0.9987577356101182843995187071713046148319455494907459769121870327923833565423238763511742397211532327) }, + { SC_(0.000149052008055150508880615234375), SC_(0.000149052008055150508880615234375), SC_(8.228512348380456936136461223589742428679018610277749064505318060775217626194556265242838588467072322), SC_(0.001226581791037472050906377105104480090337804907220777113643310236584122671925661721709200437517198241), SC_(6700.262033088940515744832043420662637829102111420344199179644492145329997419594865150385965201953132), SC_(0.9987734182089625279490936228948955199096621950927792228863566897634158773280743382782801640784253738) }, + { SC_(0.000149052008055150508880615234375), SC_(0.00016395721468143165111541748046875), SC_(8.13334143308931556881479551947183001929658259457265424498945050928880024099500889443920832114991824), SC_(0.001212395154767130962760914267280408171755982125560476182798894925488893725331738066083379555809061714), SC_(6700.357204004231657112153709124780550238484547436049293999160359696816414804794412521189595469270286), SC_(0.9987876048452328690372390857327195918282440178744395238172011050745111062746682619339061068215377929) }, + { SC_(0.000149052008055150508880615234375), SC_(0.00029810401611030101776123046875), SC_(7.536387988654402915813414189164240021039561217650163168049429265432893840755490975832852636611563383), SC_(0.001123410391295872653089055777548919613971431092152241499195370394003992076729423439392761956208297706), SC_(6700.95415744866656976515509045508814023674156881297178507610038094067232120503393043979595115380864), SC_(0.9988765896087041273469109442224510803860285689078477585008046296059960079232705765605974887889583636) }, + { SC_(0.000149052008055150508880615234375), SC_(100), SC_(0.3686132475540991527791898043272195985514249652803170791010463586754863934818284125077493762437758491e-45), SC_(0.5494727093337053496710913137576219364357407661067643588527523279820194877649056864192383335403874864e-49), SC_(6708.490545437320972680968504644252380257781130030253334996595711053326025241462201874703127000145633), SC_(0.9999999999999999999999999999999999999999999999999450527290666294650328908686242378063564259233893236) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.39852520785643719136714935302734375e-5), SC_(11.82534165286607861284016769509361004518294908318135101712795122901946412642735323788024248212876687), SC_(0.004713780377457679352754002329823002072784290627147123193223268683119837404219601810061188267815974851), SC_(2496.849375017734120681094229641806145312755020869613516311155949460665435827634872677060984845276173), SC_(0.9952862196225423206472459976701769979272157093728528768067767313168801625957803981898980165379870503) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.00019926260574720799922943115234375), SC_(7.929812627478122406660341211111822337131184007547313038469023759514452459983191955701682556591959385), SC_(0.003160956888823837489122898688646882279549658778907627703745334068363254610215450042677662195629649791), SC_(2500.744904043122076887274056125787933020806785945247554289814876930170447494079033959239544770812981), SC_(0.9968390431111761625108771013113531177204503412210923722962546659316367453897845499572948941151671463) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.000358672696165740489959716796875), SC_(7.34410881241020574238958926442583214740343491562664173285216266962784416146682424379465797129069188), SC_(0.002927485482118213924172628917447962850896548713128960074590118601215267929980173386835526831989028036), SC_(2501.330607858189993551544808072473923210534535037168225595431738020057055792595401671146569356114248), SC_(0.9970725145178817860758273710825520371491034512868710399254098813987847320700198266131390369153743512) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.0003985252114944159984588623046875), SC_(7.239118403480033821563601840293710511746459940926763489256499924585445043085863997188056523312207318), SC_(0.002885634536584107194486046522975616601739423417237144172322524987519690841104229473232686216140080694), SC_(2501.435598267120165472370795496606044846191510011868103839027400765099454910976361917753170804092733), SC_(0.9971143654634158928055139534770243833982605765827628558276774750124803091588957705267422373745103062) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.0004383777268230915069580078125), SC_(7.144143015013571403969513236431739620833436615553467894701051331470534067868827633079037374020859175), SC_(0.002847775746907098186160050696011596070720694057886760815244156823319827619119980079296297558945183091), SC_(2501.530573655586627889964884100468015737104533337241399433582849358214365886193398281862189953384081), SC_(0.997152224253092901813839949303988403929279305942113239184755843176680172380880019920678951549591255) }, + { SC_(0.0003985252114944159984588623046875), SC_(0.000797050422988831996917724609375), SC_(6.548431941579626590096309850874953360834389096936048320349744133280280687230312968061949222223000232), SC_(0.002610315278447263086359249361497287320377469666963091227205296128546697951443408056256761969182627094), SC_(2502.12628472902057270383808748602480199710358085585881900793415655640461926683191294687927810518194), SC_(0.9973896847215527369136407506385027126796225303330369087727947038714533020485565919437205288747175992) }, + { SC_(0.0003985252114944159984588623046875), SC_(100), SC_(0.369037881200369694291732341218443782419461060966120489770537804029279942322658075462328388114400921e-45), SC_(0.1471047157879998510604919985587903650436826333234689456068351855902051506097277723167553993658512991e-48), SC_(2508.67471667060019929393439733689975535793796995242582944708353099539316761284378215409254749657258), SC_(0.9999999999999999999999999999999999999999999999998528952842120001489395080014412096349563173666765311) }, + { SC_(0.00063875340856611728668212890625), SC_(0.63875340856611728668212890625e-5), SC_(11.33900744119970074154938058757495806266712693522488946278408447204030265191463930183154316299193179), SC_(0.007245498134783457873763633175853087093182466309113106071535298453471078304367228977173631314813688396), SC_(1553.633783975933591682506820225378510916043075383315698460597005482261326677785092660636323807320736), SC_(0.992754501865216542126236366824146912906817533690886893928464701546528921695632771022763587061785862) }, + { SC_(0.00063875340856611728668212890625), SC_(0.000319376704283058643341064453125), SC_(7.452215932648408787122305750038079639161187565070604238440976491942121256760535147549706194063144187), SC_(0.004761882106525434937029618145105976223121874387923607690605731984066139837400203035300951085748853616), SC_(1557.520575484484883636933895062915389339549014753469983684940113462359508072939196814918160776249524), SC_(0.9952381178934745650629703818548940237768781256120763923093942680159338601625997969646576419064162296) }, + { SC_(0.00063875340856611728668212890625), SC_(0.000574878067709505558013916015625), SC_(6.867587963770300474981909290374802856251529829263364846236198065191668678548248203491919863670523861), SC_(0.004388311414380232305597584145250441546231315049827691163830841789050650860426759745835867266437627494), SC_(1558.105203453362991949074291522578666122458672489277223077144891889109960651151483758975947106642144), SC_(0.9956116885856197676944024158547495584537686849501723088361691582109493491395732402541259407677630615) }, + { SC_(0.00063875340856611728668212890625), SC_(0.00063875340856611728668212890625), SC_(6.762788423834918432298633441926342277122075359218380456582909518543396385211313757248095465488869595), SC_(0.004321345687876781288916411414922912587279792102939472551261831986855345208431327195583192233166517682), SC_(1558.210002993298373991757567371027126701588126959322207466798180435758232944488418205219771504823799), SC_(0.9956786543121232187110835885850770874127202078970605274487381680131446547915686728043791921246863752) }, + { SC_(0.00063875340856611728668212890625), SC_(0.000702628749422729015350341796875), SC_(6.667985693060746123028839467410531762349362614430057379130705432578838031571448663862082422639980508), SC_(0.004260767809913596138825870400992498500678885539113946756949297476950579901550678272725026564985441717), SC_(1558.304805724072546301027361345542937216360839704110530544250384521722791298128283298605784547672688), SC_(0.9957392321900864038611741295990075014993211144608860532430507025230494200984493217272378791411107008) }, + { SC_(0.00063875340856611728668212890625), SC_(0.0012775068171322345733642578125), SC_(6.073373332949844197435641829764176238961560470669251834902939457628333551317855309876682675839362196), SC_(0.003880817204144622179424763517390375783349194601184469336432621132901458462850631367079678328687376136), SC_(1558.899418084183448226620558983189292739748641847871336088478150496673295778381876652591184294473306), SC_(0.9961191827958553778205752364826096242166508053988155306635673788670985415371493686328864973265634669) }, + { SC_(0.00063875340856611728668212890625), SC_(100), SC_(0.3694472410323591250558914787939423659848299480013090809584703811951613621686811845631038825666292493e-45), SC_(0.2360726289035432642931835256208859435643703367345898079567704817267591466340569110451892593983580926e-48), SC_(1564.972791417133292424056200812953468978710202318171140682348730829245737850905789609952246256839724), SC_(0.9999999999999999999999999999999999999999999999997639273710964567357068164743791140564356296632654102) }, + { SC_(0.0010718167759478092193603515625), SC_(0.10718167686718516051769256591796875e-4), SC_(10.79753030490348580512959586666263753162166163888995228001371468647879516467928257205932258472971769), SC_(0.0115801252444873165343976168637232264497149877446461999994865252863961572630400084677037370875270495), SC_(921.621599621486328129410120868570456659090866283142017172949218577636418177047752320923134991289961), SC_(0.9884198747555126834656023831362767735502850122553538000005134747136038427369599915321957193754861771) }, + { SC_(0.0010718167759478092193603515625), SC_(0.00053590838797390460968017578125), SC_(6.925604325237507242456803509902997408800829650619206779185877969897006810003486199793342183086458978), SC_(0.007427565676161375768740897346652563253993371624296786216034259614693445522217353889373281204089342181), SC_(925.4935256011523066920829132253300967819116982714127626737770552942182065317235486931891153929332197), SC_(0.9925724343238386242312591026533474367460066283757032137839657403853065544777826461105619734461801008) }, + { SC_(0.0010718167759478092193603515625), SC_(0.0009646351099945604801177978515625), SC_(6.342784984935700829992976879241734287565303087444222671111935506203703316966212883148935900791563806), SC_(0.006802504132917601577874216396132373031734379853351279792626734261568927207618936172705182172655394642), SC_(926.0763449414541131045467398559913599031472248345877467818509977579115100247608220098335216752281149), SC_(0.9931974958670823984221257836038676269682656201466487202073732657384310727923810638272354609783215098) }, + { SC_(0.0010718167759478092193603515625), SC_(0.0010718167759478092193603515625), SC_(6.238306143511707249494326440714779793049143862986205228008813874816947545133284003139086942921297872), SC_(0.006690452762379717286790619756823062156410227396726664431656896575511097708499810427226870525102427047), SC_(926.1808237828781066850453902945183143976633840590457642249541193892982657965937508898433706330983808), SC_(0.9933095472376202827132093802431769378435897726032733355683431034244889022915001895727147385929795436) }, + { SC_(0.0010718167759478092193603515625), SC_(0.0011789985001087188720703125), SC_(6.143793459584995340518564587913168407023113056295507853231542431502654675215884452365672897753080281), SC_(0.00658908988715195008184126631354098977003838506810365917095700116412101523338301929853973262544869406), SC_(926.2753364668048185940211521473199257836894148657364615997313908326125586665111504406167846782665984), SC_(0.9934109101128480499181587336864590102299616149318963408290429988358789847666169807014027503168683122) }, + { SC_(0.0010718167759478092193603515625), SC_(0.002143633551895618438720703125), SC_(5.551028733614631441136079945563908235545435915614176767460896380550216784285428030962514558349729002), SC_(0.005953362125949581852682808924678013567301646657883961294154434209933452408736435231681831115962090178), SC_(926.8681011927751824934036367896691859551670920064177926855020368835649965574416068620199430176699497), SC_(0.9940466378740504181473171910753219864326983533421160387058455657900665475912635647682661322778848798) }, + { SC_(0.0010718167759478092193603515625), SC_(100), SC_(0.3701863482966125637807009834686369616110976989170770830279898842911922994633419877963486551793694475e-45), SC_(0.3970171100263001544390324287018903201561376017683191023028076445923793733971044582745929822837954262e-48), SC_(932.4191299263898139345397167352330941907125279216617831046663207003345123582583979394101800761413619), SC_(0.9999999999999999999999999999999999999999999999996029828899736998455609675712981096798438623982316809) }, + { SC_(0.00302191521041095256805419921875), SC_(0.30219152904464863240718841552734375e-4), SC_(9.670884523427657957178827825207640912463524823689696089247963977392906817722815715315768932319175677), SC_(0.02927539433052311514314216255008856965429587773324587314292120345867458704448957878192524315602858739), SC_(320.6708493655194561420245316058817520065052804372223350980607664213471368056830316577456339997583557), SC_(0.970724605669476884856857837449911430345704122266754126857078796541325412955510421217818433559045076) }, + { SC_(0.00302191521041095256805419921875), SC_(0.001510957605205476284027099609375), SC_(5.858928105222976109133588154704940451689511531300336420106738180152772524944561558751766720038131745), SC_(0.01773596098878807048086285734381247131070843457470518036825401251096938206489388550259649817325956596), SC_(324.4828057837241379900697712763844524672792937296116947672019922185872710984612858143096362120393996), SC_(0.9822640390112119295191371426561875286892915654252948196317459874890306179351061144972474139238437218) }, + { SC_(0.00302191521041095256805419921875), SC_(0.002719723619520664215087890625), SC_(5.283238685655406106020684922572791795541801156757024358477546251764271058409234063307784776411764904), SC_(0.01599325227078787122196055059176023367066905038451960746992431571969384434194896690688188812841831683), SC_(325.0584952032917079931826745085166011234270041041550068288311841469757725649966133097536181556657664), SC_(0.9840067477292121287780394494082397663293309496154803925300756842803061556580510330929771617201621888) }, + { SC_(0.00302191521041095256805419921875), SC_(0.00302191521041095256805419921875), SC_(5.180022250992443098456572963282556906941511350140492757862696040032919389731579399244015058727596809), SC_(0.01568079875954710903689181324959728123587836662354167121109134448456551526408297367485485997505175671), SC_(325.1617116379546710007467864678068360120272939107715384294460343587071242336742679738173878733499345), SC_(0.9843192012404528909631081867504027187641216333764583287889086555154344847359170263250069039493536374) }, + { SC_(0.00302191521041095256805419921875), SC_(0.0033241068013012409210205078125), SC_(5.08665155954614832816695020562558519856732388819313760834233943952276587339279488248698220462329858), SC_(0.01539814996931679640512162380521019618516324742657983782779919071422804833579404817772218506732349783), SC_(325.2550823294009657710364092254638077204014813727188935789663909592172777500130524905744207274542328), SC_(0.9846018500306832035948783761947898038148367525734201621722008092857719516642059518221420340391198634) }, + { SC_(0.00302191521041095256805419921875), SC_(0.0060438304208219051361083984375), SC_(4.501174235431703607743793915757073362030162525535349963178890780962259995120753938138193741532333018), SC_(0.01362581161768948428002382983633363229931422314729661959844291873166388034825127448149335275571310275), SC_(325.8405596535154104914595655153323195569386427353766812241298396177777836282850934349232091905451983), SC_(0.9863741883823105157199761701636663677006857768527033804015570812683361196517487255183862614751267574) }, + { SC_(0.00302191521041095256805419921875), SC_(100), SC_(0.3735329358894014290597755983828277403109000009585095691185899796962630068955920695468847481341579698e-45), SC_(0.1130747034266563940839653378009513670204434622477854366552695647743251468644841772118695732365306121e-47), SC_(330.3417338889471140992033594310893929189688052605384982514193289696802680250230196356206315849448808), SC_(0.9999999999999999999999999999999999999999999999988692529657334360591603466219904863297955653775221456) }, + { SC_(0.00499413348734378814697265625), SC_(0.499413363286294043064117431640625e-4), SC_(9.09143174186392218206792714789936156812904780177882655511645754144008392955147525520112582681862457), SC_(0.0455339659818498517717554159843204991325968723648847552163487246073129995344092074225748777688535861), SC_(190.5712057162443534637401226274029819634962592814549820787079322695971581532795795007449751245225544), SC_(0.9544660340181501482282445840156795008674031276351152447836512753926870004655907925770231834121139608) }, + { SC_(0.00499413348734378814697265625), SC_(0.002497066743671894073486328125), SC_(5.333963711356164951856899934737899395234655036721267980759368209113746040033645118790511921612526542), SC_(0.02671488155852542720348233893967370255631947969822798173340480476036001826163187326127585870850951479), SC_(194.3286737467521106939511498405644441363906520465125406530650216019234960427974096371555890297286524), SC_(0.9732851184414745727965176610603262974436805203017720182665951952396399817383681267384869280297806661) }, + { SC_(0.00499413348734378814697265625), SC_(0.004494720138609409332275390625), SC_(4.764608103543422396273460767824913797680918211220254147530766736990032763475791527601286078974636713), SC_(0.02386329342435485410528915621892655527894975521180483827248315548180341266576066691682837163027671281), SC_(194.8980293545648532495345890074774297339443888720135544862936230740472093193552632283448148723665423), SC_(0.9761367065756451458947108437810734447210502447881951617275168445181965873342393330829593753788794447) }, + { SC_(0.00499413348734378814697265625), SC_(0.00499413348734378814697265625), SC_(4.662511603034318364168528096863620509671749270448326278452821039711349440063013476125319687531537714), SC_(0.02335194837848704542317501479979960785677943859199818879547148696844760256087874240214563959245228623), SC_(195.0001258550739572816395216784387230219535578127854823553715687713258926427680412798207812638096413), SC_(0.9766480516215129545768249852002003921432205614080018112045285130315523974391212575976465832772595711) }, + { SC_(0.00499413348734378814697265625), SC_(0.005493546836078166961669921875), SC_(4.570153968023475697973028726833585950462441863354771181689858907128424789689959379371679135045553744), SC_(0.02288937993710691762717340242447631479229364077362362993790510926817164659201098401309690294652813575), SC_(195.0924834900847999478350210484687575811628652198790374521345309039088172931410953765744218162956252), SC_(0.9771106200628930823728265975755236852077063592263763700620948907318283534079890159866993688366479582) }, + { SC_(0.00499413348734378814697265625), SC_(0.0099882669746875762939453125), SC_(3.991154013512935049369200187919861138929383257565931837405545879976870092643426316924994579798069139), SC_(0.01998948859097551085592371345634047802657512403398820023558724073513120474144401325627472905378199928), SC_(195.6714834445953405964388495873824823926959238256678767964188439310603719901876284390211063715431098), SC_(0.9800105114090244891440762865436595219734248759660117997644127592648687952585559867435469258036936357) }, + { SC_(0.00499413348734378814697265625), SC_(100), SC_(0.3769482555838579136592010864491944174085838190332996002822334124753414275598606857542089750306573573e-45), SC_(0.1887925855246434792730496837795316524181267413081017706657594232476888183287282829143324349246616454e-47), SC_(199.6626374581082756458080497753023435316253070828568603782405318973780409963818603402858604413590935), SC_(0.9999999999999999999999999999999999999999999999981120741447535652072695031622046834758187325869189823) }, + { SC_(0.00928423367440700531005859375), SC_(0.92842339654453098773956298828125e-4), SC_(8.32766758281048418780735292973223209604337085137833520544395327107364742252310003489523494741898463), SC_(0.07772597516178416795338408655014516648855152950494450081309343933563117399553230793294010541061578969), SC_(98.81370395323916382835676107678233359685726732004611689093914473336659824016357222231446793635237771), SC_(0.9222740248382158320466159134498548335114484704950554991869065606643688260044676920663617631519646603) }, + { SC_(0.00928423367440700531005859375), SC_(0.004642116837203502655029296875), SC_(4.677052055182783950361462479187826891351644382410773636499047275642185592328110193550925652380952967), SC_(0.04365309112744655672435066251454637088986352549279301888821675817858136467846696401925340767241710544), SC_(102.4643194808668640658026515273267388015489937890136784598840507287980600703585620636587772313904094), SC_(0.9563469088725534432756493374854536291101364745072069811117832418214186353215330359803517078474026215) }, + { SC_(0.00928423367440700531005859375), SC_(0.008355810306966304779052734375), SC_(4.119868713825767954507639185022242702497989461348359320156153154746091619273779670866706133311348331), SC_(0.03845264116709168479462783327141273082956462734885718329377983165867922002567451544279706791885230281), SC_(103.021502822223880061656474821492322990402648710076092776226944849694154043412892586342996750460014), SC_(0.9615473588329083152053721667285872691704353726511428167062201683413207799743254845568543313445203168) }, + { SC_(0.00928423367440700531005859375), SC_(0.00928423367440700531005859375), SC_(4.019921519306157572967927141052306454797972293850429574819892281139435411660594998072654171327963586), SC_(0.0375197877502770480302210199949516089940305508088718070103011894688949231653096730082703479188234313), SC_(103.1214500167434904431961868654622592381026658775740225215632057233008102510260772591370487124433988), SC_(0.9624802122497229519697789800050483910059694491911281929896988105311050768346903269913893536931239148) }, + { SC_(0.00928423367440700531005859375), SC_(0.010212657041847705841064453125), SC_(3.929508072902123437757774897504080575693994395736268934160771242632819260911881416743229201902800358), SC_(0.03667591721634783750587383327156302243799217393479799690498142709119028246928578208069198371104557265), SC_(103.211863463147524578406339109010485117206643775688183162222326761807426401774790840466473681868562), SC_(0.9633240827836521624941261667284369775620078260652020030950185729088097175307142179189752283062863023) }, + { SC_(0.00928423367440700531005859375), SC_(0.0185684673488140106201171875), SC_(3.362962876825342551025582987367579337130892353710432880232450815972945791421066869679704070831109699), SC_(0.03138808873371396968047089077038353233395064458846974896064565363933813332400386490393294692476573265), SC_(103.7784086592243054651385310191469863557697458177140192161506471884672998712656053875299988129402526), SC_(0.968611911266286030319529109229616467666049355411530251039354346360661866675996135095781326500580384) }, + { SC_(0.00928423367440700531005859375), SC_(100), SC_(0.3844857168704707606007207826703247070525704986636359420305976050073019330636593149686501224985731785e-45), SC_(0.3588583115543780419206393147274009793743086058135421976561276361251404038603301301046849133096950379e-47), SC_(107.1413715360496480161641140065145656929006381710399663795126272438395248800163475511113681489592739), SC_(0.999999999999999999999999999999999999999999999996411416884456219580793606852725990206256913941864578) }, + { SC_(0.0241700224578380584716796875), SC_(0.000241700225160457193851470947265625), SC_(6.989567342457767291165813682115083248727717058265847893227551241610436479959394934663352244835979721), SC_(0.1712300864900691830809638583306832029813253539450049252077231783514842512094658469882268373944706235), SC_(33.83017109096958859719977396603901368488700926845493356384309385747826733839150788430927781670596628), SC_(0.8287699135099308169190361416693167970186746460549950747922768216485157487905341530101415161086734135) }, + { SC_(0.0241700224578380584716796875), SC_(0.01208501122891902923583984375), SC_(3.645052082619493510754250102657795647363402619166810163394885759470165706667119548268590046156765514), SC_(0.08929631160092280070447033991155493817323429700259338574714854113985110677424714195589810307485385417), SC_(37.17468635080786237761133754549630128625132370755397129367575933961853811168378327070404001538518049), SC_(0.9107036883990771992955296600884450618267657029974066142528514588601488932257528580432426069697986838) }, + { SC_(0.0241700224578380584716796875), SC_(0.021753020584583282470703125), SC_(3.121681115364872992249370429142630243919758769039445295540102139950204724424648880240696291300224489), SC_(0.07647479467454212823112470840782652796143400926368964944287913565960182578074431119624266771320275773), SC_(37.69805731806248289611621721901146668969496755768133616153054295913849909392625393873193377024172151), SC_(0.9235252053254578717688752915921734720385659907363103505571208643403981742192556888030189055833083723) }, + { SC_(0.0241700224578380584716796875), SC_(0.0241700224578380584716796875), SC_(3.027690225756868892212711633036930400330173071117682435181204227694799527195760005172705581038071537), SC_(0.07417221035589703876248814311106669867021141835493692191966636116530191427281757861109726798229924587), SC_(37.79204820767048699615287601511716653328455325560309902188944087139390429115514281379992448050387446), SC_(0.925827789644102961237511856888933301329788581645063078080333638834698085727182421388186010844846675) }, + { SC_(0.0241700224578380584716796875), SC_(0.02658702433109283447265625), SC_(2.942664605341138937082562074383595860306832724172044272497882818529802086726566077422282020376315413), SC_(0.07208925677317387450963942331401971774864863598173722366608932259553293193482061295798446137870319249), SC_(37.87707382808621695128302557377050107330789360254873718457276228055890173162433674155034804116563059), SC_(0.9279107432268261254903605766859802822513513640182627763339106774044670680651793870413184526090032108) }, + { SC_(0.0241700224578380584716796875), SC_(0.048340044915676116943359375), SC_(2.41074817473566482145221784161961838217114178626157130000716892699054591244755314591797108724580003), SC_(0.05905839349429781950594739017608665222518690248510542891560361255106979598651410633025419940717016623), SC_(38.40899025869169106691336980653447855144358454045921015706347617209815790590334967305465897429614597), SC_(0.940941606505702180494052609823913347774813097514894571084396387448930204013485893669171551255748135) }, + { SC_(0.0241700224578380584716796875), SC_(100), SC_(0.4118273612568114120065807345413501643158568873446145015743819726283523844643802566458722417876724156e-45), SC_(0.1008892700105018944978675108213807722934186311209931576611431317504181560003000532484582926238701235e-46), SC_(40.81973843342735588836558764815409693361472632630895409581383368708212308380955265504227989096454242), SC_(0.9999999999999999999999999999999999999999999999899110729989498105502132489178619227706581368879006842) }, + { SC_(0.06227754056453704833984375), SC_(0.0006227754056453704833984375), SC_(5.398853673219018710862483990962030873762547549939303465609769883203068434312148164896365027156798183), SC_(0.3474560013087092846111301271350181153322167628923569217302635472598482984210909987319052934013456492), SC_(10.13938326292248918091803717140500686234141136932799736792065339615436856422024698064523810115224422), SC_(0.6525439986912907153888698728649818846677832371076430782697364527401517015789090012642543091559873733) }, + { SC_(0.06227754056453704833984375), SC_(0.031138770282268524169921875), SC_(2.624621777840601468672742465553647526902424779628133001278346272637876820856672407823865884146425678), SC_(0.1689137441157049196929670663951454244447909282434660775658465961050462673597111095768335096934485378), SC_(12.91361515830090642310777869681339020920153413963916783225207700671956017767572273771773724416261673), SC_(0.8310862558842950803070329336048545755552090717565339224341534038949537326402888904212728334573946703) }, + { SC_(0.06227754056453704833984375), SC_(0.056049786508083343505859375), SC_(2.162313294165328988202510718803524978627655348865636422277632922509021076722403194443007421877550004), SC_(0.1391607878713606352032987274631824194122117693300193732474663311578257858007756912177290988729444308), SC_(13.3759236419761789035780104435635127574763035704016644112527903568484159218099919510985957064314924), SC_(0.8608392121286393647967012725368175805877882306699806267525336688421742141992243087807016564848934745) }, + { SC_(0.06227754056453704833984375), SC_(0.06227754056453704833984375), SC_(2.079041815599814320147626715140559656723511682076184551416263895975773589837334878234708586848491379), SC_(0.1338016548559650776876410841887370321781490089503796887164231224142746680182809514557714062729304056), SC_(13.45919512054169357163289444722647807938044723719111628211415938338166340869506026730689454146055102), SC_(0.8661983451440349223123589158112629678218509910496203112835768775857253319817190485427177825445887742) }, + { SC_(0.06227754056453704833984375), SC_(0.068505294620990753173828125), SC_(2.003712420009585882584341039453708853317621415374573048462234158676614018214682470062007753415859851), SC_(0.1289536533806487659647983473729504724818872072493062222239213561417858309354665544217620992042013603), SC_(13.53452451613192200919618012291332888278633750389272778506818912068082298031771267547959537489318255), SC_(0.8710463466193512340352016526270495275181127927506937777760786438582141690645334455767799499356738501) }, + { SC_(0.06227754056453704833984375), SC_(0.1245550811290740966796875), SC_(1.53441423129112475737524518331096500840725759515087388767695993717246997306190379676601324775586921), SC_(0.09875085813127999347876403213381417164850985029241959548600682134325557222950784960495023341689149482), SC_(14.00382270485038313440527597905607272769670132411642694585346334218496702547049134877558988055317319), SC_(0.9012491418687200065212359678661858283514901497075804045139931786567444277704921503939211327623995619) }, + { SC_(0.06227754056453704833984375), SC_(100), SC_(0.491012558925029502038958259186637674187082070198644614704728540139757730717007602661319035304115905e-45), SC_(0.3160027491812458572459559308108164731267571181137289219138336973784283559240105100161042789885729545e-46), SC_(15.53823693614150789178052116236703773610395891877628827460539377731847873934575747152474911809627915), SC_(0.9999999999999999999999999999999999999999999999683997250818754142754044069189183526873242881886271078) }, + { SC_(0.12234418094158172607421875), SC_(0.001223441795445978641510009765625), SC_(4.107633028355164744805499178379042539887472133455579773171056895053209516655909782745786364362480172), SC_(0.5330801041122809893124112359299492773161319212862964349749276702570415880581830814691555528860698043), SC_(3.597837494119984489847548621434082521137867680861747675331544830881957821265703839306715563836387709), SC_(0.4669198958877190106875887640700507226838680787137035650250723297429584119418169185234395265537106464) }, + { SC_(0.12234418094158172607421875), SC_(0.061172090470790863037109375), SC_(1.936485981850182971451375681345119726702234863196777116823460031031266400004195740881376398203023874), SC_(0.2513131386593307540991640684543589236443925141145175751221147698677769739319418090600471325094999253), SC_(5.768984540624966263201672118468005334323104951120550331679141694903900937917417881171125529995844007), SC_(0.7486868613406692459008359315456410763556074858854824248778852301322230260680581909363951205060113066) }, + { SC_(0.12234418094158172607421875), SC_(0.11010976135730743408203125), SC_(1.53816896265897443986409464099250739729409691824235216567496380983889196492551187328576895409782409), SC_(0.1996203811529064426596921912381727440618982217331183744501991772754181001205835601426286413225377901), SC_(6.167301559816174794788953158820617663731242896074975282827637916096275372996101748766732974101043791), SC_(0.8003796188470935573403078087618272559381017782668816255498008227245818998794164398545194112902246047) }, + { SC_(0.12234418094158172607421875), SC_(0.12234418094158172607421875), SC_(1.466088111094671282794200828064019673740085117198127869023649937447605151191232298855822127351016404), SC_(0.1902658775759919254783410584245027757110291178093905520960858364206883179566070806285394901876464333), SC_(6.239382411380477951858846971749105387285254697119199579478951788487562186730381323196679800847851477), SC_(0.8097341224240080745216589415754972242889708821906094479039141635793116820433929193687362864076535596) }, + { SC_(0.12234418094158172607421875), SC_(0.13457860052585601806640625), SC_(1.400881043051031737065670764700271767545156491544346318989223397553252185517998812020194463448278763), SC_(0.1818034393830944269473777475699449060079741042819292252135731778565926538411797911185361027107102345), SC_(6.304589479424117497587377035112853293480183322772981129513378328381915152403614810032307464750589118), SC_(0.8181965606169055730526222524300550939920258957180707747864268221434073461588202088788552178361301191) }, + { SC_(0.12234418094158172607421875), SC_(0.2446883618831634521484375), SC_(0.99729395709067241735766067751443046709332587714511939610752695882967697915408677511463530479783466), SC_(0.1294267435300397349603572970957870869630942140868148552925934774957263859825167016525201561153885356), SC_(6.708176565384476817295387122298694593932013937172208052395074767105490358767526846937866623401033221), SC_(0.870573256469960265039642702904212913036905785913185144707406522504273614017483298345586302346735954) }, + { SC_(0.12234418094158172607421875), SC_(100), SC_(0.6478611415197960360753281775792439832263535501609430361693974315110165286653233546268382397444183374e-45), SC_(0.840780766898178008869243443837877352348032400258965863581678185676534322639265269047427246718208775e-46), SC_(7.705470522475149234653047799813125061025339813669466306982805689859839160342369638932330721638712915), SC_(0.9999999999999999999999999999999999999999999999159219233101821991130756556162122647651967599741034136) }, + { SC_(0.249557673931121826171875), SC_(0.002495576627552509307861328125), SC_(2.734855898436444538960197568353345302797643920782849867350472698862801247231931660276599701395230536), SC_(0.7529056368605864071477954107757553871130981376578315260167339297055082424891270839650389931798900742), SC_(0.8975460448403471907260352889952074418600755755686656141024711031215454179607615030145266344852466741), SC_(0.247094363139413592852204589224244612886901862342168473983266070294491757510872916018279343723885963) }, + { SC_(0.249557673931121826171875), SC_(0.1247788369655609130859375), SC_(1.306037037931325273110975961858785853889497163910375544775166642973791438732260951219539444462276157), SC_(0.3595519048624747086399495819773797417369647630495458043003775292793755251130963726432952726923473251), SC_(2.326364905345466456575256895489766890768222332441139936677777159010555226460432212071586891418201053), SC_(0.6404480951375252913600504180226202582630352369504541956996224707206244748869036273485294401209486908) }, + { SC_(0.249557673931121826171875), SC_(0.22460190951824188232421875), SC_(0.9885007575877314066316087571272734600340200679794221131391294101259479058115424831901932604404540439), SC_(0.272134189174010942792674792979994779607650072007003386385396071326733875426150437485572609245441222), SC_(2.643901185689060323054624100221279284623699428372093368313814391858398759381150680100933075440023166), SC_(0.727865810825989057207325207020005220392349927992996613614603928673266124573849562508142534216676462) }, + { SC_(0.249557673931121826171875), SC_(0.249557673931121826171875), SC_(0.9304697144207498511786181051137991461677681312267180398489822962468753694437254969284556768438195259), SC_(0.2561582470637521534054660006356217865146657410166091897536349301024895988045117668110852797208631096), SC_(2.701932228856041878507614752234753598489951365124797441603961505737471295748967666362670659036657684), SC_(0.7438417529362478465945339993643782134853342589833908102463650698975104011954882331829753476099553385) }, + { SC_(0.249557673931121826171875), SC_(0.2745134532451629638671875), SC_(0.8779709241956378784576011912540914136437534750787434695660536599649324901601121739182438383623023227), SC_(0.2417053338000419192707989657345748364586452241630348852579539371629114370069908716417725859412519299), SC_(2.754431019081153851228631666094461331013966021272772011886890142019414175032580989372882497518174888), SC_(0.7582946661999580807292010342654251635413547758369651147420460628370885629930091283526005893666361667) }, + { SC_(0.249557673931121826171875), SC_(0.49911534786224365234375), SC_(0.5574820380397203326014285069632281249087055106561841394270302097686210563673830228776534924132712701), SC_(0.1534747659387098248433194606279114074359802765577343833076334934826433282648710371337205904567250712), SC_(3.07491990523707139708480435038532461974901398569533134202591359221572560882531014041347284346720594), SC_(0.8465252340612901751566805393720885925640197234422656166923665065173566717351289628625605936378764203) }, + { SC_(0.249557673931121826171875), SC_(100), SC_(0.1165337414094056672186119633118372326386267415447466476909140907381699722823700492455473836872619049e-44), SC_(0.3208173082967809365334248788561654088276764416394031356193657910033720148158538043442309513458402166e-45), SC_(3.632401943276791729686232857348552744657719495186178067358887129798227032074320836984863090598461107), SC_(0.9999999999999999999999999999999999999999999996791826917032190634665751211438345911723235583605968644) }, + { SC_(0.4912221431732177734375), SC_(0.0049122213385999202728271484375), SC_(1.654360476952788395565091483618429332080299510750906167043467749622058646861070307300335318412492263), SC_(0.9172475617092936111196120635221962448847409686540639143040750236326102528158054772151362150352426506), SC_(0.1492534502075985265254821470991394670727200544207034025295844784011311472281284530845095489966979154), SC_(0.08275243829070638888038793647780375511525903134593608569592497636738974718419452273806179935283266554) }, + { SC_(0.4912221431732177734375), SC_(0.24561107158660888671875), SC_(0.8591102891364148659027227687752104865250632846967394109711640330263828509348316936924987093062755665), SC_(0.476327154164860371328269663275900029881429197034646391173478221112698601696158930860391522911504252), SC_(0.9445036380239720561878508619423583126279562804748701586018881949968069431543670666923461581029146122), SC_(0.5236728458351396286717303367240999701185708029653536088265217788873013983038410691144755392478034605) }, + { SC_(0.4912221431732177734375), SC_(0.44209992885589599609375), SC_(0.6151178843458194174576092293340509371826806145099227504262259297702119124452239873890995638580032157), SC_(0.3410474243311383959956637270830648167641642947404114286685244577963240267359788030092208093550646792), SC_(1.188496042814567504632964401383517861970338950661686819146826298252977881643974772995745303551186963), SC_(0.6589525756688616040043362729169351832358357052595885713314755422036759732640211969722945795273623916) }, + { SC_(0.4912221431732177734375), SC_(0.4912221431732177734375), SC_(0.5696915887013141088174202631037187419431943497165285167734537828276643143969487860883316475196393758), SC_(0.3158611608185115269548389922894588565147765052878731444901294260986877976956018409426455682815368615), SC_(1.233922338459072813273153367613850057209825215455081052799598445195525479692249974296513219889550803), SC_(0.6841388391814884730451610077105411434852234947121268555098705739013122023043981590401076003404885869) }, + { SC_(0.4912221431732177734375), SC_(0.54034435749053955078125), SC_(0.5285934290336277553075270335394255189292301783737569951938668837616709360843073189655358789025981993), SC_(0.2930745993217330165245425923025781279614684690077922116097918659269501459755406822478769969035730411), SC_(1.275020498126759166783046597178143280223789386797852574379185344261518858004891441419308988506591979), SC_(0.7069254006782669834754574076974218720385315309922077883902081340730498540244593177359960180244233096) }, + { SC_(0.4912221431732177734375), SC_(0.982444286346435546875), SC_(0.2840949896471148762646748327771540499572296357001660825805477398020758104810139640515864061811464973), SC_(0.1575143024618325882485702491499773354535427586337804671901697458836454362130580896667998615293610026), SC_(1.519518937513272045825898797940414749195789929471443486992504488221113983608184796333258461228043681), SC_(0.8424856975381674117514297508500226645464572413662195328098302541163545637869419103237352685973826595) }, + { SC_(0.4912221431732177734375), SC_(100), SC_(0.3554786780644470172552623900210476078762607526788722652651577627104786882801695535346500111600654028e-44), SC_(0.1970924446253934735193962102664889638137156599937937647683125163235828436518801020510525753999891377e-44), SC_(1.803613927160386922090573630717568799153019561616822788928582055470565893878722681713985119354332036), SC_(0.9999999999999999999999999999999999999999999980290755537460652648060378973351103618628434000620623523) }, + { SC_(0.98384749889373779296875), SC_(0.00983847491443157196044921875), SC_(0.9988627703376965237021282483793283998958511662235079530457860091340880858661589398735141371653418962), SC_(0.9893791586391959313589247995867868787348704739765968058480672722518142355189894108676067042917022123), SC_(0.01072264655297708483400968644738690067844313845477925107578282358701250620425937737438075951870309101), SC_(0.01062084136080406864107520041321312126512952602340319415193272774818576448101058913239329570829778771) }, + { SC_(0.98384749889373779296875), SC_(0.491923749446868896484375), SC_(0.6092841483114124309606554974477512970242795125141354196975395333574148201355701398796169799203828208), SC_(0.6034993553966824361696793594754562688154817234268946517170502520522596302645039728904190384003204218), SC_(0.4003012685792611775754824373789640035500147921641517844240292993636857719348481773682779167636621665), SC_(0.3965006446033175638303206405245437311845182765731053482829497479477403697354960271095809615996795782) }, + { SC_(0.98384749889373779296875), SC_(0.88546276092529296875), SC_(0.4090488446933753077167583163878605357381346851487584297426423518534657760013638063743341546240144908), SC_(0.4051651676518526351128802614745574331465937506756696788008839074828702248424459073625363030514551146), SC_(0.6005365721972983008193796184388547648361596195295287743789264808676348160690545108735607420600304965), SC_(0.5948348323481473648871197385254425668534062493243303211991160925171297751575540926374636969485448854) }, + { SC_(0.98384749889373779296875), SC_(0.98384749889373779296875), SC_(0.370352431136295781883241851603824005715411835471534212594866883768994404183305967159443941476563169), SC_(0.3668361536727710626418137759953048564646661886226762568753671876280942811281119959409899282486354536), SC_(0.6392329857543778266528960832228912948588824692067529915267019489521061878871123500884509552074818182), SC_(0.6331638463272289373581862240046951435353338113773237431246328123719057188718880040590100717513645464) }, + { SC_(0.98384749889373779296875), SC_(1.0822322368621826171875), SC_(0.3353386097516048155638557121765199286100693157994542409937828613902311332455629133376101988149887739), SC_(0.3321547678297319321701307848633371126400118606682421587463162459345433014494656069902585162974731598), SC_(0.6742468071390687929722822226501953719642249888788329631277859713308694588248554039102846978690562133), SC_(0.6678452321702680678298692151366628873599881393317578412536837540654566985505343930097414837025268402) }, + { SC_(0.98384749889373779296875), SC_(1.9676949977874755859375), SC_(0.1374456065246148925738161274489277202177338705969611840951631495244789172170178267868315457496175863), SC_(0.1361406417179841828721837185359700588250311762493488349478929164181504739415138270580364665878073599), SC_(0.8721398103660587159623218073777875803565604340813260200264056831966216748534004904610633509344274009), SC_(0.8638593582820158171278162814640299411749688237506511650521070835818495260584861729419635334121926401) }, + { SC_(0.98384749889373779296875), SC_(100), SC_(0.3452847132913471123339782092778794628523602411114956589875948413226849655169889160387754015183450938e-43), SC_(0.3420064389942920918464788466469587061537101076570447060697029713782114356144525921674493801168521542e-43), SC_(1.009585416890673608536137934826715300574294270149815874986857599323279664282472032205022641488524436), SC_(0.999999999999999999999999999999999999999999965799356100570790815352115335304129384628989234295529393) }, + { SC_(1.1576130390167236328125), SC_(0.011576130054891109466552734375), SC_(0.9256421169095858964029301012199937902219788931701720231034368949393485801630195398677134263886026542), SC_(0.994711272355762893770783882299118342770777920879617312700765732169002110231728502249141741960716454), SC_(0.004921497512314303093748497028932256375056038682779382028278912930555847281468235433106618722412350468), SC_(0.005288727644237106229216117700881657229222079120382687299234267830997889768271497750858258039283546044) }, + { SC_(1.1576130390167236328125), SC_(0.57880651950836181640625), SC_(0.5898199377042372764725164622792169813101707344512639726836827769831046554014123519743007640856210835), SC_(0.6338308618166365458438457471248494940233093454055343682264493234958418241433155604354114804552093074), SC_(0.3407436767176629230241621359697090652868641974016874324480330308867997720430754233265192810253939211), SC_(0.3661691381833634541561542528751505059766906545944656317735506765041581758566844395645885195447906926) }, + { SC_(1.1576130390167236328125), SC_(1.0418517589569091796875), SC_(0.3899068736873002418750206980191563744217320493025424515359275118372274765769144292842706093645450701), SC_(0.4190007729127949034485352250754240449758795081655081429524194713873364359023428994156614130045024835), SC_(0.5406567407345999576216579002297696721753028825504089535957882960326769508675733460165494357464699345), SC_(0.5809992270872050965514647749245759550241204918344918570475805286126635640976571005843385869954975165) }, + { SC_(1.1576130390167236328125), SC_(1.1576130390167236328125), SC_(0.350767915499064649485116118680747323698244021478097988905881585794790293404432604891991000560468547), SC_(0.3769413611953594115041815918132996991722140466616286497556462452737080861937062742763079967763701127), SC_(0.5797956989228355500115624795681787228987909103748534162258342220751141340400551704088290445505464577), SC_(0.6230586388046405884958184081867003008277859533383713502443537547262919138062937257236920032236298873) }, + { SC_(1.1576130390167236328125), SC_(1.2733743190765380859375), SC_(0.3153521200099001873943766180507653607009584099715487823224479529882689797923352470224098694307293263), SC_(0.3388829254900626423204433612535434055758034744381629523496573224770360495563296638079271945520351657), SC_(0.6152114944120000121023019801981606858960765218814026228092678548816354476521525282784101756802856783), SC_(0.6611170745099373576795566387464565944241965255618370476503426775229639504436703361920728054479648343) }, + { SC_(1.1576130390167236328125), SC_(2.315226078033447265625), SC_(0.1186902112825402522994923149641941909087538887549201440624759116624595999596336065139636354107987151), SC_(0.1275465851480502036698050289887457969069182012601624005433841921900918431336574265313409489417907447), SC_(0.8118734031393599471971862832847318556882810430980312610692398962074448274848541687727822253074644156), SC_(0.8724534148519497963301949710112542030930817987398375994566158078099081568663425734686590510582092553) }, + { SC_(1.1576130390167236328125), SC_(115.7613067626953125), SC_(0.1125471317451553626979291490952714679039247813920695733726819688247553286279469203175901885989118597e-49), SC_(0.1209451240096827928951168363517962662830507405737678256582015888878404748097196285315499859596572706e-49), SC_(0.9305636144219001994966785982489260465970349318529401504185412923336346345295782481540296526328757977), SC_(0.9999999999999999999999999999999999999999999999999879054875990317207104883163648203733716949259426232) }, + { SC_(3.451677799224853515625), SC_(0.0345167778432369232177734375), SC_(3.152051752007051901166677804203242451762158932058734082278419046998808021620902707379856486480431286), SC_(0.9999991955246725226796507081898210659844067334505908025827252502575654996195689165971232425140116816), SC_(0.2535749905369569950519775399176363360986595319689620087450384044106920459237659816391116922493578419e-5), SC_(0.8044753274773203492918101789340155932665494091974172747497424345003804310834028767574859883184061715e-6) }, + { SC_(3.451677799224853515625), SC_(1.7258388996124267578125), SC_(2.625317365863687824812627271478283212231574859428744298986298851145912049982847565646684436084768396), SC_(0.8328909105597599735546579291952392864992718070378324576497708372302859905131261368260237112268348005), SC_(0.526736921893269445924001052500358415893945059225309472912207646236940078558514379392988441512585384), SC_(0.1671090894402400264453420708047607135007281929621675423502291627697140094868738631739762887731651995) }, + { SC_(3.451677799224853515625), SC_(3.1065099239349365234375), SC_(1.589096467859943405010524166882944076166569421609944233676376552350973263160710964065506274491283582), SC_(0.5041462877185294515224518878604444421797451280508405361038884763922328387930556371432063861495038906), SC_(1.562957819897013865726104157095697551958950497044109538222129945031878865380650980974166603106070198), SC_(0.4958537122814705484775481121395555578202548719491594638961115236077671612069443628567936138504961094) }, + { SC_(3.451677799224853515625), SC_(3.451677799224853515625), SC_(1.350290495171821953838340461553337413581637247730634253229478654476521826150332482913374175912005858), SC_(0.4283842763801844892410352502765636860105928311306069364749108915416602584803704173813954261741978146), SC_(1.801763792585135316898287862425304214543882670923419518669027842906330302391029462126298701685347922), SC_(0.5716157236198155107589647497234363139894071688693930635250891084583397415196295826186045738258021854) }, + { SC_(3.451677799224853515625), SC_(3.7968456745147705078125), SC_(1.134077301013503806882153483536082811051446330041171509406405665769753434166535549993226681832102034), SC_(0.3597899012775341280702093141512305124768832773509499020760489759930518624437955917851941007256656217), SC_(2.017976986743453463854474840442558817074073588612882262492100831613098694374826395046446195765251746), SC_(0.6402100987224658719297906858487694875231167226490500979239510240069481375562044082148058992743343783) }, + { SC_(3.451677799224853515625), SC_(6.90335559844970703125), SC_(0.1643170852637424266478964826850139891761923703977839179733380352749736866481876905951480241402650871), SC_(0.05213015711752623288278480275503274357544910148149545174167877455197749799469290173575128397737013009), SC_(2.987737202493214844088731841293627638949327548256269853925168462107878441893174234123961372842906391), SC_(0.9478698428824737671172151972449672564245508985185045482583212254480225020053070982642487160226298699) }, + { SC_(3.451677799224853515625), SC_(345.16778564453125), SC_(0.2094375381886948717861051084009603807754176504974680675036172416728378934319220506494587623990168143e-143), SC_(0.664447750795984359222246924280149097055745898182376868957852076547683340115261880156857453610755197e-144), SC_(3.15205428775695727073662832397864162812551991865405377189850649738285212854136194503967287759735378), SC_(1) }, + { SC_(7.88237094879150390625), SC_(0.078823707997798919677734375), SC_(3979.809715367829047317888278217078172088596385172406763852068810521047011695645283607170253028037074), SC_(0.9999999999999402750339496456027526821626813759697286540308097229106466855237479103143755044174425076), SC_(0.2376940001372283829873284341281247837900028022641285834769024728477627559837726794234465024502746176e-9), SC_(0.5972496605035439724731783731862403027134596919027708935331447625208968562449558255749243794404123413e-13) }, + { SC_(7.88237094879150390625), SC_(3.941185474395751953125), SC_(3770.434705915005921151777453704734300721493282509257897039293817864056202120074644227549385383332761), SC_(0.9473906984435568457877010097722005184357730540525580221847386845401637090240954581293899228317354176), SC_(209.3750094530608201662480528953311998012312274469388696150391212404677120484184021356046403241277591), SC_(0.0526093015564431542122989902277994815642269459474419778152613154598362909759045418706100771682645824) }, + { SC_(7.88237094879150390625), SC_(7.094133853912353515625), SC_(2259.504281494144548802134149761741281397123723859500278361177114338408775457230422494994047506279229), SC_(0.5677417874450255416764749800116738757724089360970458845040997629985530966419312906823519377101045892), SC_(1720.305433873922192515891356838324219125600786096696488293155824766115138711262623868159978201181292), SC_(0.4322582125549744583235250199883261242275910639029541154959002370014469033580687093176480622898954108) }, + { SC_(7.88237094879150390625), SC_(7.88237094879150390625), SC_(1801.305322480575109423269546102081216632945730622638691742482596740773256796125713409226748012793032), SC_(0.452610916427692594928188307753651727326624609223935469952605541382505774069746156183685426638227764), SC_(2178.504392887491631894755960497984283889778779333558074911850342363750657372367332953927277694667488), SC_(0.547389083572307405071811692246348272673375390776064530047394458617494225930253843816314573361772236) }, + { SC_(7.88237094879150390625), SC_(8.6706085205078125), SC_(1385.998701155253760411361595025274476495767659154297495548279381040684682649756307239204160729721891), SC_(0.348257529952552454187438695468007855109544707669602258493521119260247991038217264638452234765248311), SC_(2593.81101421281298090666391157479102402695685080189927110605355806383923151873673912394986497773863), SC_(0.651742470047447545812561304531992144890455292330397741506478880739752008961782735361547765234751689) }, + { SC_(7.88237094879150390625), SC_(15.7647418975830078125), SC_(41.47366868336445816334718833007928434146800188744317338153324233412729802926570404595789858361504874), SC_(0.01042101800073846697130314826362052370693681910868382585936936546279717697037315660477697660054912625), SC_(3938.336046684702283154678318269986216181256508068753593272799696770396616139227342317196127123845472), SC_(0.9895789819992615330286968517363794762930631808913161741406306345372028230296268433952230233994508738) }, + { SC_(7.88237094879150390625), SC_(788.23712158203125), SC_(0.4098628875490468202415390423958744045264154776200644385505738092296587481868298104440405226599425315e-322), SC_(0.1029855487729370661385592190663704618584360482910039403681761198832811346210837452413806568209947594e-325), SC_(3979.80971536806674131802550660006550052272450995619676665433293910452391416849304636315402570746052), SC_(1) }, + { SC_(15.848876953125), SC_(0.15848876535892486572265625), SC_(864813714589.5954516938617777150516539613650252952868802895634095543853641605725970667855636579584918), SC_(0.9999999999999999999999999868409403435640721040163737321066333492415539198641892936754764753099767295), SC_(0.1138013526198844052876462015238569718651803765821078088805884978586352966759084506756285667686605923e-13), SC_(0.1315905965643592789598362626789336665075844608013581070632452352469002327048208481608930454553515351e-25) }, + { SC_(15.848876953125), SC_(7.9244384765625), SC_(857455078557.8186559439409480231461991712250523655325946499376377076378415854165763602745671614277657), SC_(0.9914910738490440132029194055624275232987632817376600027120470246177703761878889242162637658765959254), SC_(7358636031.77679574992084107204071677858050169437443802532295836478518078593690876536078236006039364), SC_(0.008508926150955986797080594437572476701236718262339997287952975382229623812111075783736234123404074593) }, + { SC_(15.848876953125), SC_(14.26398944854736328125), SC_(543456207431.5277892524584568291692314107739221756802623465364491034830678876003149719981844930135557), SC_(0.6284084054904580890689857435492512109304772890456400367042151473962631724628797458182986586676872755), SC_(321357507158.0676624414033322660176845390316318842267703287241469689399544837531701536371650284746037), SC_(0.3715915945095419109310142564507487890695227109543599632957848526037368275371202541817013413323127245) }, + { SC_(15.848876953125), SC_(15.848876953125), SC_(403510525688.6992732587835681641257109039155879627590731389572008878851682532404312142105015099805464), SC_(0.4665866404306371952836082750838488888638526270616845099302838069048718280475633148830753663725874852), SC_(461303188900.8961784350782209310612050458899660971479595363033951845378541181130539114248480115076129), SC_(0.5334133595693628047163917249161511111361473729383154900697161930951281719524366851169246336274125148) }, + { SC_(15.848876953125), SC_(17.433765411376953125), SC_(276418089995.5182977583485870106970920893181614522453054100708596769898091436424991903972703788274048), SC_(0.3196273201179456360699084292479660831495832765300870907843636160354702907952999370398452431237945279), SC_(588395624594.0771539355132020844898238604873926076617272651897363954332132277109859352380791426607546), SC_(0.6803726798820543639300915707520339168504167234699129092156363839645297092047000629601547568762054721) }, + { SC_(15.848876953125), SC_(31.69775390625), SC_(600115680.0552881611631351060216683189405541890544644705063642761972412838246249798196614828552764838), SC_(0.0006939247955151567565333562468275434183953541839757314991779604903811767298775213262009267488021013578), SC_(864213598909.5401635326986539891652476308649998708525682047542317962257810875288601458156880386328829), SC_(0.9993060752044848432434666437531724565816046458160242685008220395096188232701224786737990732511978986) }, + { SC_(15.848876953125), SC_(1584.8876953125), SC_(0.163113107886086212173341867174873538338245524954349590570123573389562869154431409212893994879965561e-640), SC_(0.1886106859018683526851896176897136734503221273018007213192423142235257246798335688754957508764658987e-652), SC_(864813714589.5954516938617890951869159498055540599070326752605960724230223713534851256353495214881594), SC_(1) }, + { SC_(31.314670562744140625), SC_(0.31314671039581298828125), SC_(778814717265774041244257106576403.8762726779997758454998199471243191703416382620718627158499147494477), SC_(0.9999999999999999999999999999999999999999999999999950959137153087603014420451969750429893744095041344), SC_(0.3819374573258768108704504016301750815256621981358015693603312864160916003899145582284112517497628668e-17), SC_(0.4904086284691239698557954803024957010625590495865573359650157227911125525690354777910557062747862277e-50) }, + { SC_(31.314670562744140625), SC_(15.6573352813720703125), SC_(778566748518545485819764026092029.3967926151533938708061462099726511062555247902358317612307006611185), SC_(0.9996816075226478610969989773281892617240254186595266143385804198244875580182844440178678518270519304), SC_(247968747228555424493080484374.4794800628463819785130483104104361727906174881377817698758360696872852), SC_(0.0003183924773521389030010226718107382759745813404733856614195801755124419817155559821321481729480695913) }, + { SC_(31.314670562744140625), SC_(29.314670562744140625), SC_(482833004676075172025820076340398.5825076976088758458228145385414356908480478542985227797515278585995), SC_(0.6199587578046579563535732598122442716901781651755658652796921025962309785151402994672345926666338678), SC_(295981712589698869218437030236005.2937649803909000034963799818416515881980944240750907513550088722062), SC_(0.3800412421953420436464267401877557283098218348244341347203078974037690214848597005327654073333661322) }, + { SC_(31.314670562744140625), SC_(31.314670562744140625), SC_(370896755851488155472593493346712.4148522225290894677086951560628033554992036606815816518641978652044), SC_(0.4762323407980976323633991971154651466476069357868160897744155471908994651638810938674341752996143168), SC_(407917961414285885771663613229691.4614204554706863816104993643202839235469386176920318792423388656014), SC_(0.5237676592019023676366008028845348533523930642131839102255844528091005348361189061325658247003856832) }, + { SC_(31.314670562744140625), SC_(33.314670562744140625), SC_(265681367758662399528500798549489.3873078049748167004775392929153103324001665415310450711121021919659), SC_(0.341135525393515942422391557029251027725203882426279944364470583016243351049186313788982692413516029), SC_(513133349507111641715756308026914.4889648730249591488416552274677769466459757368425684599944345388399), SC_(0.658864474606484057577608442970748972274796117573720055635529416983756648950813686211017307586483971) }, + { SC_(31.314670562744140625), SC_(62.62934112548828125), SC_(3510010126637801956668819257.072053526730185083745305267217330129045954120627734398876930280129849447), SC_(0.4506861579299091675241191860802733381157752245815262181090987037577205034661630859784327486984048456e-5), SC_(778811207255647403442300437757146.8042191512695907655738892531657571500001881577458791322296064506759), SC_(0.999995493138420700908324758808139197266618842247754184737818909012962422794965338369140215672513016) }, + { SC_(31.314670562744140625), SC_(3131.467041015625), SC_(0.9949734465011292884466475563156032901596853314020868171193367788975411454622042657355174384631237416e-1254), SC_(0.1277548336521214074803527819363002291258891900025277489565447091643729687904056223818620236180077516e-1286), SC_(778814717265774041244257106576403.8762726779997758493191945203830872790461422783736135311065367308058), SC_(1) }, + { SC_(35.515575408935546875), SC_(0.355155766010284423828125), SC_(1839496023049279394690396563357488048160.926936902696873121474514229378668678846124147186118781332621), SC_(0.9999999999999999999999999999999999999999999999999999999988311705518566854522503357086930487486812418), SC_(0.2150057121482511052324363863657911472278809675549019401721908701625163879196312421165006871524811668e-17), SC_(0.1168829448143314547749664291306951251318758167273262927421466644472211354971342245927769000593543944e-56) }, + { SC_(35.515575408935546875), SC_(17.7577877044677734375), SC_(1839250295623752849967374524755040772041.511965420859962594232308478793865855168465893679099785396169), SC_(0.9998664158973721457296652833638056718266664745466398849509354664513991159042158535832578423891303598), SC_(245727425526544723022038602447276119.4149714818369105293922628720673138760020221171649304682152617598), SC_(0.000133584102627854270334716636194328173333525453360115049064533548600884095784146416742157610869640248) }, + { SC_(35.515575408935546875), SC_(33.515575408935546875), SC_(1126716761530690811983406818725232577296.140512385245346121416437687863367701603471251111605815700971), SC_(0.6125138339048784673611008444529708074044457722184180569761021928679936686124029766660288710214041085), SC_(712779261518588582706989744632255470864.7864245174515270022081336629978120295670167597324244379104599), SC_(0.3874861660951215326388991555470291925955542277815819430238978071320063313875970233339711289785958915) }, + { SC_(35.515575408935546875), SC_(35.515575408935546875), SC_(878695297016098993751007321739301720829.4727268066609360575474550081846711938082514413961359329625398), SC_(0.4776826293755782058145073704574612504921398873157110358604907120033842521624253362408436148039094658), SC_(960800726033180400939389241618186327331.4542100960359370660771163426765085373622365694478943206488914), SC_(0.5223173706244217941854926295425387495078601126842889641395092879966157478375746637591563851960905342) }, + { SC_(35.515575408935546875), SC_(37.515575408935546875), SC_(643897589426613602623485968571508913189.7152520524471566296144651913565045824300879927548999957274038), SC_(0.3500402182763315670128709273491916384350933712803249530899083839804758189215891746180200615671579888), SC_(1195598433622665792066910594785979134971.211684850249716494010106159504675148740400018089130257884027), SC_(0.6499597817236684329871290726508083615649066287196750469100916160195241810784108253819799384328420112) }, + { SC_(35.515575408935546875), SC_(71.03115081787109375), SC_(2158910129007642031735750832929901.432294137427407475107438019527761330492604912014324864125358688972), SC_(0.1173642183487235327037390685996140001643280328037847481368390684502765726051207257699613803418768997e-5), SC_(1839493864139150387048364827606655118259.494642765269465648517133331333418400677883098829705389486072), SC_(0.9999988263578165127646729626093140038599983567196719621525186316093154972342739487927423003861965812) }, + { SC_(35.515575408935546875), SC_(3551.5576171875), SC_(0.1340030996194779112296477120665147262826786996479245056900015054289664486503723649859792530476059284e-1419), SC_(0.7284772456172253407403713169396491570909000355628240421568270918043560629979548519498562921345492656e-1459), SC_(1839496023049279394690396563357488048160.926936902696873123624571350861179731170488010844030253611431), SC_(1) }, + { SC_(95.0640411376953125), SC_(0.9506404399871826171875), SC_(0.145510476855517573901572383428911247103923229518208566615055995925169354783431079715899205682607104), SC_(1), SC_(0.3338748844030338166357658335733104939045075103209763229768920051823157362177984933932816984293886097e-4), SC_(0.2294507527004738159428298921938008182351350879950245832976058440950034518526560630407577127311992909e-150) }, + { SC_(95.0640411376953125), SC_(47.53202056884765625), SC_(0.1455104767317315688714628619298764969395583677721590029196049408676387503309128823706686067571141588), SC_(0.9999999991492983343527836690569163403364335708467316108801184271247197504258774844023559647719048361), SC_(0.1237860050301095214990347501643648617460495636954510550575306044525181973452305989254929452136627688), SC_(0.8507016656472163309430836596635664291532683891198815728752802495741225155976440352280951639280628239e-9) }, + { SC_(95.0640411376953125), SC_(93.0640411376953125), SC_(0.8270953894409340626253014797078388694548935740964212374525082405522401617834178085260777282042004003), SC_(0.5684095106513779855100143265286500637194863353225008935081840999467563524252772890135430364314749654), SC_(0.6280093791142416763904223545812736015843387210856644286980517186994533860508929886329143286218706396), SC_(0.4315904893486220144899856734713499362805136646774991064918159000532436475747227109864569635685250346) }, + { SC_(95.0640411376953125), SC_(95.0640411376953125), SC_(0.7077051625452294911344927408220857430447700121426935420144897510955828892742667812806226323972360384), SC_(0.4863602799184931701789661009861255111997908526943918773797582829282683257000441156493062801250089046), SC_(0.7473996060099462478812310934670267279944622830393921241360702081561106585600440158783694244288350016), SC_(0.5136397200815068298210338990138744888002091473056081226202417170717316742999558843506937198749910954) }, + { SC_(95.0640411376953125), SC_(97.0640411376953125), SC_(0.5907750060751459131633159171875333040151503013593145312641721231743104807411741543193437407980260481), SC_(0.406001697500962089288941792982261441414876691538444277046888243696282520680806473204672610497138837), SC_(0.8643297624800298258524079171015791670240819938227711348863878360773830670931366428396483160280449919), SC_(0.593998302499037910711058207017738558585123308461555722953111756303717479319193526795327389502861163) }, + { SC_(95.0640411376953125), SC_(190.128082275390625), SC_(0.1250182074547620992214675725176948920111523542123681850515412344728775663708689887288190847857890665), SC_(0.8591698010782896169858772991337093789443227801953170296511699301738602943099686230052571279996311061e-14), SC_(0.1455104768555163237194978358079190324281980525692884550915138722433188393710863509402354969927198158), SC_(0.9999999999999914083019892171038301412270086629062105567721980468297034883006982613970569003137699474) }, + { SC_(95.0640411376953125), SC_(9506.404296875), SC_(0.410843456339856518931606427624153949626406539905791201082368440245547080360115104031712516488780225e-3754), SC_(0.2823463060655057243296240358288810188079450590292603437426554366141893572584859875591659170203266194e-3900), SC_(0.145510476855517573901572383428911247103923229518208566615055995925169354783431079715899205682607104), SC_(1) }, + { SC_(230.1575469970703125), SC_(1), SC_(0.7943512307351483242116753931994555755252863994748982526699162024988971699725221518219249134173513373), SC_(1), SC_(0.001605325555957824512231082175017738406782181505873305483713006465121498687391150947753752042955234629), SC_(0.2020926630241566676562263620495817485172495859575490783548984837449311511609113883628635101437863762e-445) }, + { SC_(230.1575469970703125), SC_(115.07877349853515625), SC_(0.7943512307351483242096295671350543391046865291446812785362675126379944308580154078637829951922550169), SC_(0.999999999999999999997424532139884915216691694261381644774940945904564087155008373661686631758703312), SC_(0.2045826064401236420599870330216974133648689860902739114506743958141918225096320389822784602629423829), SC_(0.2575467860115084783308305738618355225059054095435912844991626338313368241296687959051921053402245151e-20) }, + { SC_(230.1575469970703125), SC_(228.1575469970703125), SC_(0.4320352500050499378139047005826494686951628124789491900175458122808307767421127117826956600568476985), SC_(0.5438844094258080593135924988903306028970803734274413960639336508587960608083506963680177065156017707), SC_(0.3623159807300983863977706926168061068301235869959490626523703902180663932304094400392292533605036387), SC_(0.4561155905741919406864075011096693971029196265725586039360663491412039391916493036319822934843982293) }, + { SC_(230.1575469970703125), SC_(230.1575469970703125), SC_(0.3902125711209141749169738822595467642465379627204853447527623692260839529414655887300731747165667578), SC_(0.4912343004237358607289747140325946370477956811693055364940306943959659677095875895076435061750962822), SC_(0.4041386596142341492947015109399088112787484367544129079171538332728132170310565630918517387007845794), SC_(0.5087656995762641392710252859674053629522043188306944635059693056040340322904124104923564938249037178) }, + { SC_(230.1575469970703125), SC_(232.1575469970703125), SC_(0.3487501889396853257613873709625756982927978890960690452261371310879305408861795829594157702393902252), SC_(0.4390377649656656899508279604758759349074080513082357116118517884562056435445571208463156984095475396), SC_(0.4456010417954629984502880222368798772324885103788292074437790714109666290863425688625091431779611121), SC_(0.5609622350343343100491720395241240650925919486917642883881482115437943564554428791536843015904524604) }, + { SC_(230.1575469970703125), SC_(460.315093994140625), SC_(0.4407730519635239782394783554127362184391684954328510668870843466275578363345143797655617743698392878), SC_(0.5548843319039131990882691513243314111283345266801758353532094934100654252020248166518909120713686568e-32), SC_(0.7943512307351483242116753931994511677947667642351158578863620751367127782875678233112560425738850617), SC_(0.9999999999999999999999999999999944511566809608680091173084867566858887166547331982416464679050658993) }, + { SC_(230.1575469970703125), SC_(23015.75390625), SC_(BOOST_MATH_SMALL_CONSTANT(0.9559236409417348208950021152441346378729603969644625960148748982677900217226751345451199820074363395e-8996)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1203401724520595328794601630545412981309154417499555052010254193737832188451276268511110869475419232e-9438)), SC_(0.7943512307351483242116753931994555755252863994748982526699162024988971699725221518219249134173513373), SC_(1) }, + { SC_(460.871795654296875), SC_(1), SC_(0.3035697913328577383103573207361433550048171545351043103427946337286406766335561424688872199902627644), SC_(1), SC_(0.0007999570943827548943010381276909696101503474270950161551998016380700161022055691674813276239985866686), SC_(0.263516699362756806302924272183408617249859311132449191463747391836511682589270348351185414999011926e-1029) }, + { SC_(460.871795654296875), SC_(230.4358978271484375), SC_(0.3035697913328577383103573207361433550047925351370884076635599897138082095152794906157429847334951853), SC_(0.9999999999999999999999999999999999999999189003691447412844502774348028830000232618580279072994806341), SC_(0.2461939801590267923464401483246711827665185314423525676757909375351780224332385807676145414825568404), SC_(0.8109963085525871554972256519711699997673814197209270051936588154826179820725730567233569656951290491e-40) }, + { SC_(460.871795654296875), SC_(458.871795654296875), SC_(0.1611931483241718379676730539883166095529909983108046890396800612185587953951876268408693414028956011), SC_(0.530992058255977856491744157658594549661381367389538808982523985300127763450276738767474706920587693), SC_(0.1423766430086859003426842667478267454518261562242996213031145725100818812383685156280178785873671632), SC_(0.469007941744022143508255842341405450338618632610461191017476014699872236549723261232525293079412307) }, + { SC_(460.871795654296875), SC_(460.871795654296875), SC_(0.1499044425611669817452516634978304074804845409565096465620306533651905004146763285309824382109683004), SC_(0.4938055328331401358749551739774500026079273309328516400413537728779540654346471892486393687796370785), SC_(0.1536653487716907565651056572383129475243326135785946637807639803634501762188798139379047817792944639), SC_(0.5061944671668598641250448260225499973920726690671483599586462271220459345653528107513606312203629215) }, + { SC_(460.871795654296875), SC_(462.871795654296875), SC_(0.1386645136476389702527676004487322668191450267077516764379529098330836887026073425447155428151335593), SC_(0.4567796849575072422528834382064975306821917056574500241896950256666133220324798484185934498637551554), SC_(0.164905277685218768057589720287411088185672127827352633904841723895556987930948799924171677175129205), SC_(0.5432203150424927577471165617935024693178082943425499758103049743333866779675201515814065501362448446) }, + { SC_(460.871795654296875), SC_(921.74359130859375), SC_(0.214579568282097447843285341234033253132140021796896174619250110179219191931782655042052951085903063), SC_(0.7068541548220638744450497903888966495830510626579681233627159150684459468037055060183111727855356285e-63), SC_(0.3035697913328577383103573207361433550048171545351043103427946335140611083514586946256018787562295112), SC_(0.9999999999999999999999999999999999999999999999999999999999999992931458451779361255549502096111033504) }, + { SC_(460.871795654296875), SC_(46087.1796875), SC_(BOOST_MATH_SMALL_CONSTANT(0.1759948687946540932943422895133578780806254223549085877126768144753543541319766123991600654675160946e-17870)), SC_(BOOST_MATH_SMALL_CONSTANT(0.5797509298337248254275801202156047189153910514148794160732208629325216030358623936601957024666048442e-18897)), SC_(0.3035697913328577383103573207361433550048171545351043103427946337286406766335561424688872199902627644), SC_(1) }, + { SC_(664.0791015625), SC_(1), SC_(0.5745703266423053012388846296755759814458236575017295797872518233032217040765801424270951932343892656), SC_(1), SC_(0.000554803499100533461700081675382127658415484012034431099012469964977561860611562701898919933771029858), SC_(0.9655972008556621156398909346034920368728235561361941209577148915248010183298024193896373627559762647e-1588) }, + { SC_(664.0791015625), SC_(332.03955078125), SC_(0.5745703266423053012388846296755759814458236575017295797869018458769535952325154619307030524922146164), SC_(0.9999999999999999999999999999999999999999999999999999999993908884429982322791299632237165916284594418), SC_(0.3499774262681088440646804963921407421746491858377886363583697179665453608787350388997316735168900411), SC_(0.6091115570017677208700367762834083715405581683323513398498453028923230365514524283437552918367998412e-57) }, + { SC_(664.0791015625), SC_(662.0791015625), SC_(0.3021167487573438738160129595305571832198618183437747086825419999530854511327755168926331826960039427), SC_(0.5258133508614421049922565116779507398294624638695327972751007507697623513933985163278375927725745103), SC_(0.2724535778849614274228716701450187982259618391579548711047098233501362529438046255344620105383853229), SC_(0.4741866491385578950077434883220492601705375361304672027248992492302376486066014836721624072274254897) }, + { SC_(664.0791015625), SC_(664.0791015625), SC_(0.2843201563499913066053586445117464815121852615133384043443363638833281789611578313103564412744820411), SC_(0.494839609994326789934188822741956842775938040001912655673429653876761834997096017421334224252871364), SC_(0.2902501702923139946335259851638294999336383959883911754429154594198935251154223111167387519599072244), SC_(0.505160390005673210065811177258043157224061959998087344326570346123238165002903982578665775747128636) }, + { SC_(664.0791015625), SC_(666.0791015625), SC_(0.2665770008350486832539682183986178091094039928067551889686056029306641365030303914782037547507298816), SC_(0.4639588723505457189002094923711730626394167476456643807276073537522553952201326725769733994829306401), SC_(0.3079933258072566179849164112769581723364196646949743908186462203725575675735497509488914384836593839), SC_(0.5360411276494542810997905076288269373605832523543356192723926462477446047798673274230266005170693599) }, + { SC_(664.0791015625), SC_(1328.158203125), SC_(0.2815972350463307317319513325546921336811187310092965580873275148483880823923796516975854414779446515), SC_(0.490100553385585993788823794136328178072277263551970508868100075216984438630852032648844240985526793e-90), SC_(0.5745703266423053012388846296755759814458236575017295797872518233032217040765801424270951929527920305), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999995098994466) }, + { SC_(664.0791015625), SC_(66407.90625), SC_(BOOST_MATH_SMALL_CONSTANT(0.8516936430425091984695352018926240039240039876743845066067885000233245389027299911547740471304411031e-25643)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1482314006745992402392065908335891607562619332695970947910626860700838612133574022151344757253035352e-27227)), SC_(0.5745703266423053012388846296755759814458236575017295797872518233032217040765801424270951932343892656), SC_(1) }, + { SC_(1169.2916259765625), SC_(1), SC_(0.2211789888023831503246826752278734722240439253686325962175969884553455378953601789267541504616923277), SC_(1), SC_(0.0003148864236423753142799300005285283127912884357020962982280135041640804352403607375497608504709569992), SC_(0.1423672408249035673853164595912914309562984950734405225106779761662731230245426459145165372095669607e-3081) }, + { SC_(1169.2916259765625), SC_(584.64581298828125), SC_(0.2211789888023831503246826752278734722240439253686325962175969884553455378953601789267541504616923277), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998), SC_(0.4251581173713294990895228243877471105625206871093006314536841396842453368736997236563189985257137593), SC_(0.1922235559866835428767949912699689078565566007500741320105283086319101530842124947089114693215734909e-99) }, + { SC_(1169.2916259765625), SC_(1167.2916259765625), SC_(0.1148913148430660007404559319786710085496945916646259215810780041406350545777929034671173346191878257), SC_(0.5194494986398458229099025998514760815236833039291615271666420090780290283552325279002354379324796388), SC_(0.106287673959317149584226743249202463674349333704006674636518984314710483317567275459636815842504502), SC_(0.4805505013601541770900974001485239184763166960708384728333579909219709716447674720997645620675203612) }, + { SC_(1169.2916259765625), SC_(1169.2916259765625), SC_(0.1097293461334211936196186098765103513825912847901162614195092808968794457897461936852246112756938448), SC_(0.4961110760455691456152544829180582276831949404486516253736169842404434869834516021522451806309381424), SC_(0.1114496426689619567050640653513631208414526405785163347980877075584660921056139852415295391859984829), SC_(0.5038889239544308543847455170819417723168050595513483746263830157595565130165483978477548193690618576) }, + { SC_(1169.2916259765625), SC_(1171.2916259765625), SC_(0.1045761915724994772699317733451515392457114868019129222313801712339302377148535579285521591865594366), SC_(0.4728125042019031691903140623366099509942791065498616795361308461781345126406997089894375857466236069), SC_(0.1166027972298836730547509018827219329783324385667196739862168172214153001805066209982019912751328912), SC_(0.5271874957980968308096859376633900490057208934501383204638691538218654873593002910105624142533763931) }, + { SC_(1169.2916259765625), SC_(2338.583251953125), SC_(0.3853660517961866267548503750089203171857055088519007059620968150399652189311257677799267678599538164), SC_(0.1742326673445910972431954923648105731106713066341076374902708289141328648814063925289049214586889559e-157), SC_(0.2211789888023831503246826752278734722240439253686325962175969884553455378953601789267541504616923277), SC_(1) }, + { SC_(1169.2916259765625), SC_(116929.1640625), SC_(BOOST_MATH_SMALL_CONSTANT(0.1334921973028690412368136130282362266211264532031309191211246173794760240250211434584800981343637091e-44860)), SC_(BOOST_MATH_SMALL_CONSTANT(0.6035482756553351914398657934266315863036146517683943373863531255923722374767324696235963112082335455e-47939)), SC_(0.2211789888023831503246826752278734722240439253686325962175969884553455378953601789267541504616923277), SC_(1) }, + { SC_(2057.796630859375), SC_(1), SC_(0.2296607098745991351513439491999254015070811420500402999956642121725140715538280690982449249151182744), SC_(1), SC_(0.0001788603446415592472512376463686763352142734957575834349538723877570073123201456502328382989629296588), SC_(BOOST_MATH_SMALL_CONSTANT(0.7788025419725549031043567928048587098198224051085568478803331745902750314471563131849915968668166695e-5927)) }, + { SC_(2057.796630859375), SC_(1028.8983154296875), SC_(0.2296607098745991351513439491999254015070811420500402999956642121725140715538280690982449249151182744), SC_(1), SC_(0.9822844006807419524699774209176095928147927787459050881127600530947159125340637625888955323105924994), SC_(0.4277111227327893392956905805573130925190053689139455240870060837560269563451544938490472860053531939e-174) }, + { SC_(2057.796630859375), SC_(2055.796630859375), SC_(0.1181970778393469944551585447788996343247484863125676497955892509032681427741390030228718216377717021), SC_(0.5146595510563637431071584380665041151517840985243959943271211766126099181752511155269841800877407187), SC_(0.1114636320352521406961854044210257671823326557374726502000749612692459287796890660753731032773465723), SC_(0.4853404489436362568928415619334958848482159014756040056728788233873900818247488844730158199122592813) }, + { SC_(2057.796630859375), SC_(2057.796630859375), SC_(0.1141571063368333335549056714887837836223093960256471510446261076349612596796785907592276653667764085), SC_(0.4970685077093341491049428149069921151108953421435248479241067800168777919786478963838719883781055889), SC_(0.1155036035377658015964382777111416178847717460243931489510381045375528118741494783390172595483418659), SC_(0.5029314922906658508950571850930078848891046578564751520758932199831222080213521036161280116218944111) }, + { SC_(2057.796630859375), SC_(2059.796630859375), SC_(0.1101210575241523286005972733062095852404319473645093682804326140992694666629481735607350959283621991), SC_(0.4794945447320151505244609247943138810471077522080625919866429085483861553259121554634814161108765226), SC_(0.1195396523504468065507466758937158162666491946855309317152315980732446048908798955375098289867560753), SC_(0.5205054552679848494755390752056861189528922477919374080133570914516138446740878445365185838891234774) }, + { SC_(2057.796630859375), SC_(4115.59326171875), SC_(0.1184802275824791022571834680209296613447564684666621309564053455602973525777492482319187677060560432), SC_(0.5158924556454278242195499999686615277394459408484310942606310759251402814732192780093913845058465035e-276), SC_(0.2296607098745991351513439491999254015070811420500402999956642121725140715538280690982449249151182744), SC_(1) }, + { SC_(2057.796630859375), SC_(205779.65625), SC_(BOOST_MATH_SMALL_CONSTANT(0.4201428634932982855590128692571495505659212593160178569139973150589427696759188605068591915292645523e-78440)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1829406796324488764221415721149535896951274162966389404491557586743437861782808243268924184165028864e-84363)), SC_(0.2296607098745991351513439491999254015070811420500402999956642121725140715538280690982449249151182744), SC_(1) }, + { SC_(5823.5341796875), SC_(1), SC_(0.1204395397514337475423786621774349420062760132029898805362923119619100468071321611679283901089428652), SC_(1), SC_(0.6318201301512319242829917005636884943368220526214159580849901321408186241292901627433210404056827978e-4), SC_(BOOST_MATH_SMALL_CONSTANT(0.5245952711669263519210693557964617436547132969346871040581963321734735795313612558534271821781318411e-19400)) }, + { SC_(5823.5341796875), SC_(2911.76708984375), SC_(0.1204395397514337475423786621774349420062760132029898805362923119619100468071321611679283901089428652), SC_(1), SC_(0.4035259729288404343552749435692175466685338188811768319423095321055726721842742984032087143214236599), SC_(0.3350444328844562385775121047850168127494131430195647748520977802476677594087402915363606825742343083e-490) }, + { SC_(5823.5341796875), SC_(5821.5341796875), SC_(0.6126920809889162048883575147692727204635949058113441363539761562854353553260508847605536631622514472), SC_(0.5087134028022741086387529518673768528172426138087777028759999654326711259860222847941770091355247484), SC_(0.5917033165254212705354291070050766995991652262185546690089469633336651127452707269187302379271772049), SC_(0.4912865971977258913612470481326231471827573861912222971240000345673288740139777152058229908644752516) }, + { SC_(5823.5341796875), SC_(5823.5341796875), SC_(0.6000989280305561918308588121091415609770180970873138723602626680145344318925207189486424421186686595), SC_(0.4982574072178089990585121217647990047541960897876785713029080474657389735630621455528428027141859677), SC_(0.6042964694837812835929278096652078590857420349425849330026604516045660361788008927306414589707599927), SC_(0.5017425927821910009414878782352009952458039102123214286970919525342610264369378544471571972858140323) }, + { SC_(5823.5341796875), SC_(5825.5341796875), SC_(0.5875100985050789481864072831420352596099318466445228673422078429397158588973815853817471380143431533), SC_(0.48780500134556936977004263447238945560454812532198011665953206594566719692149899347013902778973964), SC_(0.6168852990092585272373793386323141604528282853853759380207152766793846091739400262975367630750854988), SC_(0.51219499865443063022995736552761054439545187467801988334046793405433280307850100652986097221026036) }, + { SC_(5823.5341796875), SC_(11647.068359375), SC_(0.5353527302842454914572421462782089453923068596623200437216734225930083166517293351090646020310494752), SC_(0.4444991498548735493821113261413094182993223786289714525114040696846695823566433886781875769143935322e-778), SC_(0.1204395397514337475423786621774349420062760132029898805362923119619100468071321611679283901089428652), SC_(1) }, + { SC_(5823.5341796875), SC_(582353.4375), SC_(BOOST_MATH_SMALL_CONSTANT(0.1306843628941291279596587214414256236728415340542843841458695749930348339470885205941165569646322079e-219344)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1085061958588009491652051793216903806290512061576938386117858324035783177763463890242081951747644651e-238740)), SC_(0.1204395397514337475423786621774349420062760132029898805362923119619100468071321611679283901089428652), SC_(1) }, + { SC_(9113.3095703125), SC_(1), SC_(0.2058284735294648231534673957777340107191538633051240481422777650293706102527136539254313499140613425), SC_(1), SC_(0.4037170092859947171051886914823887325296146261863938904807985526887128393010583619637026093856940876e-4), SC_(BOOST_MATH_SMALL_CONSTANT(0.1961424492749792906069609223922162691035648940014810214081197868423196767074778143387553776773884785e-32130)) }, + { SC_(9113.3095703125), SC_(4556.65478515625), SC_(0.2058284735294648231534673957777340107191538633051240481422777650293706102527136539254313499140613425), SC_(1), SC_(0.6109377214187031022316054159922887207113747225714451450654131455750653440696736591254903504865772707), SC_(0.2968188564694602134756320513815309578474741421887761461484741830281935296582920785928397009274511509e-766) }, + { SC_(9113.3095703125), SC_(9111.3095703125), SC_(0.1043478778903032904507254378873664862163967379105136115494921359540150657805686187420775552682050699), SC_(0.5069652225515127761139756648006698185865481908723864989191437142873208577668041858919621519562798842), SC_(0.1014805956391615327027419578903675245027571253946104365927856290753555444721450351833537946458562726), SC_(0.4930347774484872238860243351993301814134518091276135010808562857126791422331958141080378480437201158) }, + { SC_(9113.3095703125), SC_(9113.3095703125), SC_(0.1026275177685656364890949896204867326423388372804577577731301989347594536047854290961838095177720948), SC_(0.4986070003277475086621436243232816155603962044739470943558278267678784076324835549046763593951499622), SC_(0.1032009557608991866643724061572472780768150260246662903691475660946111566479282248292475403962892477), SC_(0.5013929996722524913378563756767183844396037955260529056441721732321215923675164450953236406048500378) }, + { SC_(9113.3095703125), SC_(9115.3095703125), SC_(0.1009075351129165861035492191302916783244651730318660685395897540635511698554749260656934916726778491), SC_(0.4902506119906264500395580518169463900862860214613231920536378253585336247100111218942361723610119757), SC_(0.1049209384165482370499181766474423323946886902732579796026880109658194403972387278597378582413834934), SC_(0.5097493880093735499604419481830536099137139785386768079463621746414663752899888781057638276389880243) }, + { SC_(9113.3095703125), SC_(18226.619140625), SC_(0.2844201695607462461046288417599451943410582108941500320299291215678803002029948089751534122462413978), SC_(0.1381831020186965723509796431234180433841791957413460611775479295093149059469403680680588975239641139e-1216), SC_(0.2058284735294648231534673957777340107191538633051240481422777650293706102527136539254313499140613425), SC_(1) }, + { SC_(9113.3095703125), SC_(911330.9375), SC_(BOOST_MATH_SMALL_CONSTANT(0.2634558899021205314041532677186125127324533196940061567254967357798886751103797693911325418379331619e-341479)), SC_(BOOST_MATH_SMALL_CONSTANT(0.127997786401698310219717935271258163287422251796870023632726955567030034172504342639656107002595249e-373605)), SC_(0.2058284735294648231534673957777340107191538633051240481422777650293706102527136539254313499140613425), SC_(1) }, + { SC_(31387.41015625), SC_(1), SC_(0.1907153914260137766081242520060232376058679739088173806739260816310109592191535200104259238502823114), SC_(1), SC_(0.1172097856896058268698780001377136569290991309340363479889876878658000708291760860866831167807270228e-4), SC_(BOOST_MATH_SMALL_CONSTANT(0.6145795827657478246713528055954877980223660793035074463222390108567932746239676554864860396068354328e-127513)) }, + { SC_(31387.41015625), SC_(15693.705078125), SC_(0.1907153914260137766081242520060232376058679739088173806739260816310109592191535200104259238502823114), SC_(1), SC_(0.1178940944440575118484057547609480198287057753687344488602125702168138518988852818906560456377655828), SC_(0.6181676977539246234778546964931531171263852830030672634254567333844990255403536962432314618520183912e-2635) }, + { SC_(31387.41015625), SC_(31385.41015625), SC_(0.9607346152919525199880979895188512454515764100687040469903581036630732159159887778018753399814702988), SC_(0.5037530574267574950285346598748481476034239981169588651898103217495670654430574683807499422545184211), SC_(0.9464192989681852460931445305413811306071033290194697597489027126470363762755464223023838985213528154), SC_(0.4962469425732425049714653401251518523965760018830411348101896782504329345569425316192500577454815789) }, + { SC_(31387.41015625), SC_(31387.41015625), SC_(0.9521454388761436323609355018051756475974072518959609739004957130130269970551939745267389118331132782), SC_(0.4992493955295262078624630020406504359970108488437383103275210393051794296194033332729085717661902896), SC_(0.955008475383994133720307018255056728461272487192212832838765103297082595136341225577520326669709836), SC_(0.5007506044704737921375369979593495640029891511562616896724789606948205703805966667270914282338097104) }, + { SC_(31387.41015625), SC_(31389.41015625), SC_(0.9435568097262039923404683068116690883643670926776098133654518635680589408058715489960845828809997579), SC_(0.4947460205865177317657787953702156470879097009546148598250336067254482340200731084198867465150117276), SC_(0.9635971045339337737407742132485632876943126464105639933738089527420506513856636511081746556218233563), SC_(0.5052539794134822682342212046297843529120902990453851401749663932745517659799268915801132534849882724) }, + { SC_(31387.41015625), SC_(62774.8203125), SC_(0.639440870992195110243168891395043075970119175325222539369097746057899381944623539419388796691846333), SC_(0.3352854041883977247774206822492896029430517273753461135918538525190213990661515897439781385194335162e-4185), SC_(0.1907153914260137766081242520060232376058679739088173806739260816310109592191535200104259238502823114), SC_(1) }, + { SC_(31387.41015625), SC_(3138741), SC_(BOOST_MATH_SMALL_CONSTANT(0.8712340128913840990158681888626366121803871270318591176775961058292458205022056834607179300912579579e-1159228)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4568241746914123883971626233329316053998069787008932952589706205337117010465312411468070532148356825e-1286736)), SC_(0.1907153914260137766081242520060232376058679739088173806739260816310109592191535200104259238502823114), SC_(1) }, + { SC_(53731.765625), SC_(1), SC_(0.1968375061316474051696679914969989794166523446713072964017484226785290381190494752446686823589822611), SC_(1), SC_(0.6846718760933685833021646032164728730373454920630880010700244576412946459126644872424651974762617329e-5), SC_(BOOST_MATH_SMALL_CONSTANT(0.3478360854843646528005950030296176413493884510395694421618624709007598051252449019794914871773442384e-230831)) }, + { SC_(53731.765625), SC_(26865.8828125), SC_(0.1968375061316474051696679914969989794166523446713072964017484226785290381190494752446686823589822611), SC_(1), SC_(0.4596204454239807853790732663423567816759432173785340424309074767567519221051637504214333998617934737), SC_(0.2335024734140762981026837224978008762575936206362713332576404458305954499600642343912165066945157393e-4509) }, + { SC_(53731.765625), SC_(53729.765625), SC_(0.9898336951885252520260938613285785464035396900705476186477833018587239309299831484654462523016012066), SC_(0.5028684393748171144639183376370325602727658807295180617202372561848623433680228389050363745414042978), SC_(0.9785413661279487996705860536414112477629837566425253453697009249265664502605116039812405712882214042), SC_(0.4971315606251828855360816623629674397272341192704819382797627438151376566319771610949636254585957022) }, + { SC_(53731.765625), SC_(53731.765625), SC_(0.9830583039168975325307605275070567301075887193360096847489237445380506065822885212933536241265585848), SC_(0.4994263152569184389892349690243164177907483429757537595214928334958766883412534478021012611761406009), SC_(0.985316757399576519165919387462933064058934727377063279268560482247239774608206231153333199463264026), SC_(0.5005736847430815610107650309756835822092516570242462404785071665041233116587465521978987388238593991) }, + { SC_(53731.765625), SC_(53733.765625), SC_(0.97628316482902031647854485716302419515105170546283958951870828792200970695273562786028952581753817), SC_(0.4959843192567527400639733542343360232035266718796637178642939191793549740917081309022729249590482264), SC_(0.9920918964874537352181350578069655990154717412502333744987759388632806742377591245863972977722844408), SC_(0.5040156807432472599360266457656639767964733281203362821357060808206450259082918690977270750409517736) }, + { SC_(53731.765625), SC_(107463.53125), SC_(0.9857000573732164937380523004169343050694041258310103979727730835148474946175436750885160009501077337), SC_(BOOST_MATH_SMALL_CONSTANT(0.5007684138783834575499330461565279986066528056814362965625964516201140516349885790241319685256190109e-7163)), SC_(0.1968375061316474051696679914969989794166523446713072964017484226785290381190494752446686823589822611), SC_(1) }, + { SC_(53731.765625), SC_(5373176.5), SC_(BOOST_MATH_SMALL_CONSTANT(0.3718061873698555444448063789266736654059535208915550950860496543206793529115247245781925385442586833e-1971920)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1888899095892765882957244319190855136922162514010618617401162857457945289825998923759689962325214871e-2202746)), SC_(0.1968375061316474051696679914969989794166523446713072964017484226785290381190494752446686823589822611), SC_(1) }, + { SC_(117454.09375), SC_(1), SC_(0.9318118105062591002929457015325712659659543801643169834185264964234249069692069364865148866469370692), SC_(1), SC_(0.313213921744632971050579853869676581728906891724484285710033076001673183535297248385604569944902853e-5), SC_(BOOST_MATH_SMALL_CONSTANT(0.3361343118998050869634246624964916040167904082273682960527262239208359804459089238240999775478833994e-544470)) }, + { SC_(117454.09375), SC_(58727.046875), SC_(0.9318118105062591002929457015325712659659543801643169834185264964234249069692069364865148866469370692), SC_(1), SC_(0.9191586889607675560018325512164330792065221712018362595259346904441468428861721496925241967346843064), SC_(BOOST_MATH_SMALL_CONSTANT(0.9864209474457969948221715384559498587958215887291280078996110294207932757072463789506127465999022247e-9855)) }, + { SC_(117454.09375), SC_(117452.09375), SC_(0.4677137205305140734081198423668819310551597308270642385460447347821821628461339537856199850875464552), SC_(0.5019401077095195070323848313576574442812198192986467929838617161888974569553340375704576649153144829), SC_(0.464098089975745026884825859165689334910794649337252744872481761641242744123072982700894901559390614), SC_(0.4980598922904804929676151686423425557187801807013532070161382838111025430446659624295423350846855171) }, + { SC_(117454.09375), SC_(117454.09375), SC_(0.465544343100630356053620730347685891129180124181192306543195806422400059864981029492940362835899938), SC_(0.499611979427151974874897833905897697363907477678490396979994271179885705982324624234690235502943969), SC_(0.4662674674056287442393249711848853748367742559831246768753306900010248471042259069935745238110371312), SC_(0.500388020572848025125102166094102302636092522321509603020005728820114294017675375765309764497056031) }, + { SC_(117454.09375), SC_(117456.09375), SC_(0.4633750026101230583781220405717433582374619595678524934079773142234579837891564729114009490865727437), SC_(0.4972838907873131198433312739984807998957012913706772498633297552685545410772772846679655645399634758), SC_(0.4684368078961360419148236609608279077284924205964644900105491821999669231800504635751139375603643255), SC_(0.5027161092126868801566687260015192001042987086293227501366702447314454589227227153320344354600365242) }, + { SC_(117454.09375), SC_(234908.1875), SC_(0.3765617481860321182118792720765163211623400846148178858934295299139956899505817861365275762655792927), SC_(BOOST_MATH_SMALL_CONSTANT(0.404117809991530155979898593834626437803581387079414920652000290931175084399705146249771222798155904e-15655)), SC_(0.9318118105062591002929457015325712659659543801643169834185264964234249069692069364865148866469370692), SC_(1) }, + { SC_(117454.09375), SC_(11745409), SC_(BOOST_MATH_SMALL_CONSTANT(0.3749176167726247694377808265587192673148265695757522828792546112184190157670775661741020190770516912e-4270588)), SC_(BOOST_MATH_SMALL_CONSTANT(0.4023533642151731445326576999699563877739832531592590216076808854373945772374572855320821690142966099e-4815053)), SC_(0.9318118105062591002929457015325712659659543801643169834185264964234249069692069364865148866469370692), SC_(1) }, + { SC_(246209.65625), SC_(1), SC_(0.3795461409907903896345422567793322831580321819313465092025723355362953841755017486543011371443499473), SC_(1), SC_(0.1494177527177717178022651459992286345909806690553400632385568861175245603174043469215394922999027597e-5), SC_(BOOST_MATH_SMALL_CONSTANT(0.3936748041429758848717153565348260765290237773916575292463198233814160246751477180472839298294153066e-1220467)) }, + { SC_(246209.65625), SC_(123104.828125), SC_(0.3795461409907903896345422567793322831580321819313465092025723355362953841755017486543011371443499473), SC_(1), SC_(0.1099880225198186642903575602493957065333235204076062878495498226949140924550581413780754772537288714), SC_(BOOST_MATH_SMALL_CONSTANT(0.2897882777379825906774307898713470531328730940467466937976093354792190803827781885124627244219939374e-20655)) }, + { SC_(246209.65625), SC_(246207.65625), SC_(0.1902816646704517630357467941804100090646746413808322194033944591897791683237366858242769223987429451), SC_(0.501340006181406305362208182086691817029256585472066242900372017261364294652322499081532560989068282), SC_(0.1892644763203386265987954625989222740933575405505142897991778763465162158517650628300242147456070023), SC_(0.498659993818593694637791817913308182970743414527933757099627982738635705347677500918467439010931718) }, + { SC_(246209.65625), SC_(246209.65625), SC_(0.1896713517815713127245493484616099274345676239686359608007363708235397890202647710003825319379093487), SC_(0.4997319990830143882908170503627598371539437356320335970815080360238724867210261514858758596804507521), SC_(0.1898747892092190769099929083177223557234645579627105484018359647127555951552369776539186052064405986), SC_(0.5002680009169856117091829496372401628460562643679664029184919639761275132789738485141241403195492479) }, + { SC_(246209.65625), SC_(246211.65625), SC_(0.1890610438503187682368919983483183956151051384043983286737369622166833408570431154485100095513248129), SC_(0.4981240050466124914099774918899995777543692453345887329244388038491507106647647777524494210424240252), SC_(0.1904850971404716213976502584310138875429270435269481805288353733196120433184586332057911275930251345), SC_(0.5018759949533875085900225081100004222456307546654112670755611961508492893352352222475505789575759748) }, + { SC_(246209.65625), SC_(492419.3125), SC_(0.3028106368525605792533815094012307413502326516792414546986435189331818430898812546597463686315212235), SC_(BOOST_MATH_SMALL_CONSTANT(0.7978229894844543239003397587270469382229335073444162983048262954417740318171509197684583742725146624e-32814)), SC_(0.3795461409907903896345422567793322831580321819313465092025723355362953841755017486543011371443499473), SC_(1) }, + { SC_(246209.65625), SC_(24620966), SC_(BOOST_MATH_SMALL_CONSTANT(0.4218795130057598537892994786340712622578174601909957638667112927337404423218835974564954011299333039e-8872946)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1111536826338056944878094416758566250614970740769053202708092623400624092701546619232542474200597198e-10093407)), SC_(0.3795461409907903896345422567793322831580321819313465092025723355362953841755017486543011371443499473), SC_(1) }, + { SC_(513669.1875), SC_(1), SC_(0.1026762455478787231848021279669200901989201648818956533640028599511278074166334792418412467632444988), SC_(1), SC_(0.7161810875625776919149453032960193795284794690428570619324428055126959546925115687394362341113623494e-6), SC_(BOOST_MATH_SMALL_CONSTANT(0.6975139027932385209985700478995386866834770542910755702232497033765481032627476632277947185763659989e-2710322)) }, + { SC_(513669.1875), SC_(256834.59375), SC_(0.1026762455478787231848021279669200901989201648818956533640028599511278074166334792418412467632444988), SC_(1), SC_(0.1179256191243649493831993743640418317298811821795430361888926604340800596592353697112775763521543988), SC_(BOOST_MATH_SMALL_CONSTANT(0.1148519002570807149221546626327644677390044371986909218318793705480156216422385159554639234488107623e-43090)) }, + { SC_(513669.1875), SC_(513667.1875), SC_(0.5143337766625515754329179034524882655009493028013958771386522493338908966015454144364713090116144692), SC_(0.5009277208355985110675899414981370183301000099671155624683102665494895878885434589591042983062216035), SC_(0.5124286788162356564151033762167126364882523460175606565013763501773871775647893779819411586208305185), SC_(0.4990722791644014889324100585018629816698999900328844375316897334505104121114565410408957016937783965) }, + { SC_(513669.1875), SC_(513669.1875), SC_(0.513190718063553564130040168577537778516363342785796579467535763268909112927188480469216134219027671), SC_(0.4998144559388361978364898291206210101144861575499062946445741052920369397398298507664833795665274182), SC_(0.5135717374152336677179811110916631234728383060331599541724928362423689612391463119491963334134173167), SC_(0.5001855440611638021635101708793789898855138424500937053554258947079630602601701492335166204334725818) }, + { SC_(513669.1875), SC_(513671.1875), SC_(0.5120476639151014538416521123801457361015160733924052036088039434031905274122651457869413162280154569), SC_(0.4987011953766167745079679008028061016888578219761375469627524901736850480086714928528588625770267132), SC_(0.5147147915636857780063691672890551658876855754265513300312246561080875467540696466314711514044295309), SC_(0.5012988046233832254920320991971938983111421780238624530372475098263149519913285071471411374229732868) }, + { SC_(513669.1875), SC_(1027338.375), SC_(0.7882562004488893531792380896763559346521793801402340843242125104839381998149118866123437196614608104), SC_(BOOST_MATH_SMALL_CONSTANT(0.7677103854380022328284291764195301824754129513473442461734939397474939700912174426752498922553981473e-68457)), SC_(0.1026762455478787231848021279669200901989201648818956533640028599511278074166334792418412467632444988), SC_(1) }, + { SC_(513669.1875), SC_(51366920), SC_(BOOST_MATH_SMALL_CONSTANT(0.8455141442594780273582857781742586590386122698859368213816566938022783163150883258176324338235587287e-18347637)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8234759069615652019245476397172569750885541471334500479714655987220876801411179354025002722103325368e-21057953)), SC_(0.1026762455478787231848021279669200901989201648818956533640028599511278074166334792418412467632444988), SC_(1) }, + { SC_(788352.3125), SC_(1), SC_(0.3254350252275514924133907801285120979971963169854519087242435548802716922496825809327006216635954494), SC_(1), SC_(0.4666440397038730095030131088923330001395921365337505093937538015695853474965515882892883491065022498e-6), SC_(BOOST_MATH_SMALL_CONSTANT(0.1433908471829622508376220400714432285652733465995812102127318484064704211691023381454450301792300023e-4306319)) }, + { SC_(788352.3125), SC_(394176.15625), SC_(0.3254350252275514924133907801285120979971963169854519087242435548802716922496825809327006216635954494), SC_(1), SC_(0.2006257520633973004844236201403980302780110902909388684784270381180202010418543872474966575049005566), SC_(BOOST_MATH_SMALL_CONSTANT(0.6164848172783960800240480360461358265727377175617248578986815365384881763390067655148178076072402911e-66132)) }, + { SC_(788352.3125), SC_(788350.3125), SC_(0.162961216861866486196123635890099179907765436181771479621640418745608625572387287597608545912315394), SC_(0.5007488568506734531584407973208886646226494394047062415392632213315407911442369980288546641886893887), SC_(0.1624738083656850062172671442384129180894308808036804291026031361346630666772952933350920757512800554), SC_(0.4992511431493265468415592026791113353773505605952937584607367786684592088557630019711453358113106113) }, + { SC_(788352.3125), SC_(788352.3125), SC_(0.1626687717822932899593035312904247710866671194963517534486901004447793852560311314241268483442598936), SC_(0.4998502286855928443434206403315169955579486533591805378314370596112904256380207126657714482687295139), SC_(0.1627662534452582024540872488380873269105291974891001552755534544354923069936514495085737733193355558), SC_(0.5001497713144071556565793596684830044420513466408194621685629403887095743619792873342285517312704861) }, + { SC_(788352.3125), SC_(788354.3125), SC_(0.1623763274446328985015387393773169322760017933096679464665287143383813538555079409462603516012733209), SC_(0.4989516028002693214791004285569604766689865869988938477436476252444986636812350914588652370815612146), SC_(0.1630586977829185939118520407511951657211945236757839622577148405418903383941746399864402700623221286), SC_(0.5010483971997306785208995714430395233310134130011061522563523747555013363187649085411347629184387854) }, + { SC_(788352.3125), SC_(1576704.625), SC_(0.62966881391456604663265189232296651965212021691993178179931323658375951801607008550560163062833006), SC_(BOOST_MATH_SMALL_CONSTANT(0.1934852628337369167484390536774609470572595166386051921886173923840391906771189648683653522231175771e-105062)), SC_(0.3254350252275514924133907801285120979971963169854519087242435548802716922496825809327006216635954494), SC_(1) }, + { SC_(788352.3125), SC_(78835232), SC_(BOOST_MATH_SMALL_CONSTANT(0.4164740077948943840500786922849307561907212018086545639004814350805550398839532201156819761152062039e-28012316)), SC_(BOOST_MATH_SMALL_CONSTANT(0.1279745496059271390694582975257723346837265207507390129414161314216004095755396957400977650588924393e-32318629)), SC_(0.3254350252275514924133907801285120979971963169854519087242435548802716922496825809327006216635954494), SC_(1) }, + { SC_(1736170), SC_(1), SC_(0.1262281517971042004488252985099758947734405887636182671673445904506523435537050416445084616475212426), SC_(1), SC_(0.2118914928047443977144200433110895948573532788053230331876929560838004923241637943455403176192920957e-6), SC_(BOOST_MATH_SMALL_CONSTANT(0.1678638954845296242754981240024346426980228514280855063671268705695352948287648087179192945942541815e-10078987)) }, + { SC_(1736170), SC_(868085), SC_(0.1262281517971042004488252985099758947734405887636182671673445904506523435537050416445084616475212426), SC_(1), SC_(0.1448940961583454163407547513975813077281954384418820421315934004081116003090269523192520567562712675), SC_(BOOST_MATH_SMALL_CONSTANT(0.1147874654706537747553860317681134464810452807999399860509102977323900833593912850990760752412482674e-145637)) }, + { SC_(1736170), SC_(1736168), SC_(0.6317777290022475594523330311129906002358832226132013915031845078518775760353610272181933223363237277), SC_(0.500504618033028326360191641057343755999405997498206839871815176619438983969420893139030447209664989), SC_(0.6305037889687944450359199539867683474985226650229812801702613966546458595016893892268912941388886983), SC_(0.499495381966971673639808358942656244000594002501793160128184823380561016030579106860969552790335011) }, + { SC_(1736170), SC_(1736170), SC_(0.6310133650036994505936467834743236622047002119530026486269595591827934240774463130132409395432514033), SC_(0.49989907641044580817879562048675209725080620507540160516376663057508236554638837205467803575236936), SC_(0.6312681529673425538946062016254352855297056756831800230464863453237300114596041034318436769319610226), SC_(0.50010092358955419182120437951324790274919379492459839483623336942491763445361162794532196424763064) }, + { SC_(1736170), SC_(1736172), SC_(0.63024900188566778658967343804876836928228054774250423301619921925975649543556103050219224039778483), SC_(0.4992935354854227744062593568501916692180042004614849112072827608836331168589189268904245367712978671), SC_(0.632032516085374217898579547050990578452125339893678438657246685246766940101489385942892376077427596), SC_(0.5007064645145772255937406431498083307819957995385150887927172391163668831410810731095754632287021329) }, + { SC_(1736170), SC_(3472340), SC_(0.6014445720839096678691921265326588051367345601002845203175453094832083718879547519600219908634900144), SC_(BOOST_MATH_SMALL_CONSTANT(0.4764741965410820548147263974496875110171884751124591798801059384427379413001614590138374358389181743e-231373)), SC_(0.1262281517971042004488252985099758947734405887636182671673445904506523435537050416445084616475212426), SC_(1) }, + { SC_(1736170), SC_(173616992), SC_(BOOST_MATH_SMALL_CONSTANT(0.1028718049106474382663595835099645962497203244264180111334446299544683261400046764833876858973945412e-61095576)), SC_(BOOST_MATH_SMALL_CONSTANT(0.8149672117199407490039815813486797316083480325648451121983304934903758539219857770713382104685664004e-71174558)), SC_(0.1262281517971042004488252985099758947734405887636182671673445904506523435537050416445084616475212426), SC_(1) } + } }; +#undef SC_ + + diff --git a/test/igamma_int_data.ipp b/test/igamma_int_data.ipp new file mode 100644 index 000000000..77e20f289 --- /dev/null +++ b/test/igamma_int_data.ipp @@ -0,0 +1,151 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 140> igamma_int_data = { { + { SC_(0.5), SC_(0.004999999888241291046142578125), SC_(1.631267845368323485191815380032984903074365412587098308286220239190324188420710121791871591309590004), SC_(0.9203443263332001265162236927545643793578786527087679769237787431564844748135321134774112708209554194), SC_(0.1411860055371925421063521033081602797231840435352888199275875506625870961703220596656577919527041757), SC_(0.07965567366679987348377630724543562064212134729123202307622125684351552518646788652258872917904458057) }, + { SC_(0.5), SC_(0.25), SC_(0.8498918380799311297867616098602389766300312781938048348528626579829435160004444680322048858624092311), SC_(0.479500122186953462317253346108035471263548424242036299941194274352806478283146429109461900411394659), SC_(0.9225620128255848975114058734809062061675181779285822933609451318699677685905877134253244973998849491), SC_(0.520499877813046537682746653891964528736451575757963700058805725647193521716853570890538099588605341) }, + { SC_(0.5), SC_(0.449999988079071044921875), SC_(0.6075647752751784703583581789426278456752564880945645704809989500539948786183333019925969429005007538), SC_(0.3427817175407890768272360273834711985342418909050114189064883223090985450970247707985828865357086527), SC_(1.164889075630337556939809304398517337122292968027822557732808839798916405972698879464932440361793426), SC_(0.6572182824592109231727639726165288014657581090949885810935116776909014549029752292014171134642913473) }, + { SC_(0.5), SC_(0.5), SC_(0.5624182315944071242794949573020430690267675647965080152711827351225288269777202721053138351861008813), SC_(0.3173105078629141028295349087359241550441740665467912180252110995140171160255903409776584970430004241), SC_(1.210035619311108903018672526039102113770781891325879112942625054730382457613311909352215548076193299), SC_(0.6826894921370858971704650912640758449558259334532087819747889004859828839744096590223415029569995759) }, + { SC_(0.5), SC_(0.550000011920928955078125), SC_(0.5215730804923022694296157870452972118167645274078781347659207691038036243173236920652888890778334457), SC_(0.2942660990726723860419838415374453483460616872211918064199672606812661428450855377898215276021760526), SC_(1.250880770413213757868551696295847970980784928714508993447887020749107660273708489392240494184460734), SC_(0.7057339009273276139580161584625546516539383127788081935800327393187338571549144622101784723978239474) }, + { SC_(0.5), SC_(1), SC_(0.2788055852806619764992326110774391720885500824971744701584987919357006294674865183689945658651387992), SC_(0.1572992070502851306587793649173907407039330020336970915400621021652827459039891587248999441840165472), SC_(1.493648265624854050798934872263706010708999373625212658055308997917210655123545663088534817397155381), SC_(0.8427007929497148693412206350826092592960669979663029084599378978347172540960108412751000558159834528) }, + { SC_(0.5), SC_(100), SC_(0.3701747860408278920253566448133907572136210252033768764800615129976497004743801458060294976199881689e-44), SC_(0.2088487583762544757000786294957788611560818119321163727012213713938174695833440290513463628030792355e-44), SC_(1.772453850905516027298167483341145182797549452420639267805528869599344836457124609321319131228525415), SC_(0.999999999999999999999999999999999999999999997911512416237455242999213705042211388439181880678836273) }, + { SC_(1), SC_(0.00999999977648258209228515625), SC_(0.9900498339704614360382138392834551161113407838357779440886813669674202814166581683103367609018741592), SC_(0.9900498339704614360382138392834551161113407838357779440886813669674202814166581683014245491001600443), SC_(0.009950166029538563961786160716544883888659216164222055911318633032579718583341831698248133897676852056), SC_(0.009950166029538563961786160716544883888659216164222055911318633032579718583341831698575450899839955738) }, + { SC_(1), SC_(0.5), SC_(0.6065306597126334236037995349911804534419181354871869556828921587350565194137484240072325063075404673), SC_(0.606530659712633423603799534991180453441918135487186955682892158735056519413748423985704188802918523), SC_(0.393469340287366576396200465008819546558081864512813044317107841264943480586251576001352388492010544), SC_(0.393469340287366576396200465008819546558081864512813044317107841264943480586251576014295811197081477) }, + { SC_(1), SC_(0.89999997615814208984375), SC_(0.4065696694339752855534404747740105862953642332665029835031979841616081291898465027056760538362422369), SC_(0.4065696694339752855534404747740105862953642332665029835031979841616081291898465026775698931385242319), SC_(0.5934303305660247144465595252259894137046357667334970164968020158383918708101534973029088409633087743), SC_(0.5934303305660247144465595252259894137046357667334970164968020158383918708101534973224301068614757681) }, + { SC_(1), SC_(1), SC_(0.3678794411714423215955237701614608674458111310317678345078368016974614957448998033087215393207514013), SC_(0.3678794411714423215955237701614608674458111310317678345078368016974614957448998033055633330193769539), SC_(0.63212055882855767840447622983853913255418886896823216549216319830253850425510019669986335547879961), SC_(0.6321205588285576784044762298385391325541888689682321654921631983025385042551001966944366669806230461) }, + { SC_(1), SC_(1.10000002384185791015625), SC_(0.3328710757618145679671571848455601132593649668322841328963855852147267744456382506080158515376624924), SC_(0.332871075761814567967157184845560113259364966832284132896385585214726774445638250618965856020172342), SC_(0.6671289242381854320328428151544398867406350331677158671036144147852732255543617494005690432618885189), SC_(0.667128924238185432032842815154439886740635033167715867103614414785273225554361749381034143979827658) }, + { SC_(1), SC_(2), SC_(0.1353352832366126918939994949724844034076315459095758814681588726540733741014876899370981224906570488), SC_(0.1353352832366126918939994949724844034076315459095758814681588726540733741014876899415500621934116259), SC_(0.8646647167633873081060005050275155965923684540904241185318411273459266258985123100714867723088939625), SC_(0.8646647167633873081060005050275155965923684540904241185318411273459266258985123100584499378065883741) }, + { SC_(1), SC_(100), SC_(0.3720075976020835962959695803863118337358892292376781967120613876663290475895815718157118778642281497e-43), SC_(0.37200759760208359629596958038631183373588922923767819671206138766632904758958157182794930297528019e-43), SC_(0.9999999999999999999999999999999999999999999627992402397916403704030419613688166264196619710317313401), SC_(0.9999999999999999999999999999999999999999999627992402397916403704030419613688166264110770762321803288) }, + { SC_(4.5), SC_(0.04500000178813934326171875), SC_(11.63172821024549441698223162601989743958836118115278238773312379208547617681782066799483071466068875), SC_(0.9999999839815762404539939126624023829295483903490073208372721857918957147514500440457971141443476684), SC_(0.1863219545121619924834063678225205571246503831411699898288242541283108286160415992612505831218724607e-6), SC_(0.1601842375954600608733759761707045160965099267916272781420810428524854995595420288585565233163730242e-7) }, + { SC_(4.5), SC_(2.25), SC_(10.18403214286566234526019345802929635910911247967051220522868706375276166311515909530042932735839335), SC_(0.8755390252983378432498497196860962665082171215981371572250371700817082375787028909649723325825612257), SC_(1.447696253701786583884030651396968902999805826132653323674426557156968642013490188736000648552878518), SC_(0.1244609747016621567501502803139037334917828784018628427749628299182917624212971090350276674174387743) }, + { SC_(4.5), SC_(4.05000019073486328125), SC_(6.09619930418143348416524470101117228128122328067345332825921779733679304342948890732050183956106854), SC_(0.5241008985371801309146383358952143428740875054170474426280841553357280361181152065130979676546783232), SC_(5.535529092386015444978979408415092980827695025129712200643895823572937261699160376715928136350203327), SC_(0.4758991014628198690853616641047856571259124945829525573719158446642719638818847934869020323453216768) }, + { SC_(4.5), SC_(4.5), SC_(5.086254600275426697913639521658010730996650663525051864372270593095170813752910875972462124348963572), SC_(0.4372741889138670641009400424805416858000898092452887404106985701939067450505769204643336461025544414), SC_(6.545473796292022231230584587768254531112267642278113664530843027814559491375738408063967851562308295), SC_(0.5627258110861329358990599575194583141999101907547112595893014298060932549494230795356663538974455586) }, + { SC_(4.5), SC_(4.94999980926513671875), SC_(4.171619037527984520106404613863040137459486720891266230650903452565397410131822886149880468009497741), SC_(0.358641372571856074939053294589508679033634983899266698915641630338280455365687643506844120103652795), SC_(7.460109359039464409037819495563225124649431584911899298252210168344332894996826397886549507901774126), SC_(0.641358627428143925060946705410491320966365016100733301084358369661719544634312356493155879896347205) }, + { SC_(4.5), SC_(9), SC_(0.4091290578259129167084715853082353502626692647486120256202132894658723311868270942796421924196065643), SC_(0.03517353946698479370199687053093014862983302800603394447087367382013309253731519097199460653264692538), SC_(11.2225993387415360124357525241180299118462490410545535032829003314438579739418221897567877834916653), SC_(0.9648264605330152062980031294690698513701669719939660555291263261798669074626848090280053934673530746) }, + { SC_(4.5), SC_(450), SC_(0.7196318925241676790109647122732225514004728234306601365503952006972497663734022332093732557969025565e-186), SC_(0.6186801032394573312940670423335380296959282495326244342840235902543792488308251923279019916234142554e-187), SC_(11.63172839656744892914422410942626526210891830580316552890311362090973030512864928403642997591127187), SC_(1) }, + { SC_(5), SC_(0.0500000007450580596923828125), SC_(23.99999994004916350633644961260122656653664491185268165244451756481952788144669061826601838078812299), SC_(0.9999999975020484794306854005250511069390268713271950688518548985341469950602786506533530129487017602), SC_(0.5995083649366355038739877343346335508814731834755548243518047211855331238431950262301489615187855928e-7), SC_(0.2497951520569314599474948893060973128672804931148145101465853004939721349346646987051298239750878608e-8) }, + { SC_(5), SC_(2.5), SC_(21.38827245393962981636031524084932742973783628208471181487292583987325071465208671448266485830519579), SC_(0.8911780189141512423483464683687219762390765117535296589530385766613854464438367758291769089731179492), SC_(2.611727546060370183639684759150672570262163717915288185127074160126749285347916288102856145497823352), SC_(0.1088219810858487576516535316312780237609234882464703410469614233386145535561632241708230910268820508) }, + { SC_(5), SC_(4.5), SC_(12.7704858329931714614725418087195748313701092021032548034028349273176889749341215454498260899815839), SC_(0.5321035763747154775613559086966489513070878834209689501417847886382370406222547436524965080056891442), SC_(11.22951416700682853852745819128042516862989079789674519659716507268231102506588145713569491382143525), SC_(0.4678964236252845224386440913033510486929121165790310498582152113617629593777452563475034919943108558) }, + { SC_(5), SC_(5), SC_(10.57183884156509787462195997591987764644499890792012904014937903754044682698277371959369884656291927), SC_(0.4404932850652124114425816656633282352685416211633387100062241265641852844576157558256487654577723022), SC_(13.42816115843490212537804002408012235355500109207987095985062096245955317301722928299182215724009988), SC_(0.5595067149347875885574183343366717647314583788366612899937758734358147155423842441743512345422276978) }, + { SC_(5), SC_(5.5), SC_(8.580432058270212656966234830489048321441708054685433321182252592334448446721753741667920409614551336), SC_(0.3575180024279255273735931179370436800600711689452263883825938580139353519467398887190411618148282154), SC_(15.41956794172978734303376516951095167855829194531456667881774740766555155327824926091760059418846781), SC_(0.6424819975720744726264068820629563199399288310547736116174061419860646480532601112809588381851717846) }, + { SC_(5), SC_(10), SC_(0.7020645138470657441463871966283546367191653262325606846222786705870550558435704834746466702985365058), SC_(0.0292526880769610726727661331928481098632985552596900285259282779411272939934821157090356236963392941), SC_(23.29793548615293425585361280337164536328083467376743931537772132941294494415643251911087433350448264), SC_(0.9707473119230389273272338668071518901367014447403099714740717220588727060065178842909643763036607059) }, + { SC_(5), SC_(500), SC_(0.4488697730198279270014087935779332513461985555302178400984791023118393639647158471228961467234795536e-206), SC_(0.1870290720915949695839203306574721880609160648042574333743662926299330683186316811671353639020700731e-207), SC_(24.00000000000000000000000000000000000000000000000000000000000000000000000000000300258552100380301914), SC_(1) }, + { SC_(8.5), SC_(0.085000000894069671630859375), SC_(14034.40729348332597683709082089397938947082951078273372283890406365346315997830789903731495780802164), SC_(0.9999999999999938279022636529759259686788151196749348834678540104000240548960293173305107805271248809), SC_(0.8662173348708113564879084246223256289818562825896457543331130378647651698396085258692890196362671152e-10), SC_(0.6172097736347024074031321184880325065116532145989599975945103970682669489219472875119077752586483254e-14) }, + { SC_(8.5), SC_(4.25), SC_(13398.02611556486261656519607014407040013307010409888898043369516324190546471704361222760825179948947), SC_(0.9546556427634788361102495083939179307956584074020191267048394174113457749206968247380407667019708046), SC_(636.3811779185499820053818318855577801802216392467429280334678649869910065650507633266906668611190987), SC_(0.04534435723652116388975049160608206920434159259798087329516058258865422507930317526195923329802919545) }, + { SC_(8.5), SC_(7.650000095367431640625), SC_(8054.103015923469209837900656383346293994763127034685647011666389839598808773004782279936119536547422), SC_(0.5738826619107189324870222439209789471072353870626357940206528413726551137628061821428968526905863248), SC_(5980.304277559943388732677245646281886318528616310946261455496638389297662509089593274362799124061145), SC_(0.4261173380892810675129777560790210528927646129373642059793471586273448862371938178571031473094136752) }, + { SC_(8.5), SC_(8.5), SC_(6376.759101295021456337303820746054585087015067521626463802044215041631715663748360323703460292800449), SC_(0.4543661137906363847016048969089946512162386170012576111346724358984223716784534102921782488634614219), SC_(7657.648192188391142233274081283573595226276675824005444665118813187264755618346015230595458367808118), SC_(0.5456338862093636152983951030910053487837613829987423888653275641015776283215465897078217511365385781) }, + { SC_(8.5), SC_(9.3500003814697265625), SC_(4856.201041985890295975071614780753073865978989810261110175975652721427895587489346332702495579966446), SC_(0.3460210994618039219480697300093915749627105596536157299373014903896477221607016661374469354919695395), SC_(9178.206251497522302595506287248875106447312753535370798291187375507468575694605029221596423080642121), SC_(0.6539789005381960780519302699906084250372894403463842700626985096103522778392983338625530645080304605) }, + { SC_(8.5), SC_(17), SC_(117.8346090840893084178053642198781750440584425703207167706619826572853421777546878511803698206227762), SC_(0.008396122944130556722290584924449112662756825312131019511304467435544622182743135302677732395312034933), SC_(13916.57268439932329015277253780975000526923330077531119169650104557161112910433968770311854883998579), SC_(0.9916038770558694432777094150755508873372431746878689804886955325644553778172568646973222676046879651) }, + { SC_(8.5), SC_(850), SC_(0.6670782232751103251596111986495271866428233031128299793717854900160169024185809119064510164504617311e-347), SC_(0.4753162775779311547951717390014647469330765650819847441097078096533260879760478891033055186258358972e-351), SC_(14034.40729348341259857057790202962818031329174334563190846716302822889647128209437555429891866060857), SC_(1) }, + { SC_(9), SC_(0.0900000035762786865234375), SC_(40319.99999999996030125065652373437331304590106001929156292487320950118655183517229729467586450286251), SC_(0.9999999999999990154080023939418247349465749270838117947153986411086603807498392677784232391922103959), SC_(0.3969874934347626562668695409893998070843707512679049881344816648072317397499073296196845258814027859e-10), SC_(0.9845919976060581752650534250729161882052846013588913396192501607322215767608077896041018200906107908e-15) }, + { SC_(9), SC_(4.5), SC_(38696.82516072423952355706046040199814503747029763913999664139325564202231313424946996196835932831684), SC_(0.9597426875179622897707604280853670174860483704771612102341615390784231724487200023672016425087257103), SC_(1623.174839275760476442939539598001854962529702360860003358606744357977686867403550506682495907507633), SC_(0.04025731248203771022923957191463298251395162952283878976583846092157682755127999763279835749127428969) }, + { SC_(9), SC_(8.1000003814697265625), SC_(23328.81026793695624997910761458825241844584711605221405377315554020087409799879732429012445630769103), SC_(0.5785915245024046688982913594887959429178037479179616580796913576438708853669391964979037887321261409), SC_(16991.18973206304375002089238541174758155415288394778594622684445979912590200285569617852639892813345), SC_(0.4214084754975953311017086405112040570821962520820383419203086423561291146330608035020962112678738591) }, + { SC_(9), SC_(9), SC_(18371.91300627992311613474965070308734871070902940540801943084535447015551739359979803948312987599234), SC_(0.4556526043224187280787388306225964124184203628324753973073126327993590158084308256453020319784733739), SC_(21948.08699372007688386525034929691265128929097059459198056915464552984448260805322242916772535983214), SC_(0.5443473956775812719212611693774035875815796371675246026926873672006409841915691743546979680215266261) }, + { SC_(9), SC_(9.8999996185302734375), SC_(13877.799172052158434501174306328657751917969824275897916292773962598300200139305593969624214338983), SC_(0.3441914477195475802207632516450559958312988547687474681620231637549181597257208942761352456216558902), SC_(26442.20082794784156549882569367134224808203017572410208370722603740169979986234742649902664089684147), SC_(0.6558085522804524197792367483549440041687011452312525318379768362450818402742791057238647543783441098) }, + { SC_(9), SC_(18), SC_(284.4982888269366160877517511252798455244028043822653104845308033312273987827926604521949427819652366), SC_(0.007056009147493467660906541446559519978283799711861738851302847304841949374574125956866063564974443447), SC_(40035.50171117306338391224824887472015447559719561773468951546919666877260121886036001645591245385924), SC_(0.9929439908525065323390934585534404800217162002881382611486971526951580506254258740431339364350255566) }, + { SC_(9), SC_(900), SC_(0.5926245805028194096046641666744185620899605952111155892295120431029813271130855411472723676020689805e-367), SC_(0.1469803027040722742075059937188538100421529253995822393922400900553029085102085157260496058195358159e-371), SC_(40320.00000000000000000000000000000000000000000000000000000000000000000000000165302046865085523582448), SC_(1) }, + { SC_(12.5), SC_(0.125), SC_(136843365.4655658572552832108710781298837797782743070196644786942067000763272295928128074707860359726), SC_(0.9999999999999999999973208812679129139294956056134857683730770608400891033370414969480772869888334185), SC_(0.3666196237806365401262424499185233610246580977350430222810467436716103864309508576100159651900479157e-12), SC_(0.2679118732087086070504394386514231626922939159910896662958503051922713011166581494211385930044649959e-20) }, + { SC_(12.5), SC_(6.25), SC_(134388480.8348861198942052583624979739301466738655918286054043179133685225593287078568623470331726701), SC_(0.9820606236749017663807192707405338778700064351721085883766267815658460169631346032239469936514779267), SC_(2454884.630679737361444572132360792493759346858633714420099034391066596790181931699616734139294253291), SC_(0.01793937632509823361928072925946612212999356482789141162337321843415398303686539677605300634852207334) }, + { SC_(12.5), SC_(11.25), SC_(83027628.16981147712375563451033436655437271770891097986620758512457999554746790704981173672571558316), SC_(0.6067347721779311900721361379468091439464114517216831148497311096636630527642744678296329544090654199), SC_(53815737.29575438013189419598452439986953330301531456315929576717985512380204273250666734444675134028), SC_(0.3932652278220688099278638620531908560535885482783168851502688903363369472357255321703670455909345801) }, + { SC_(12.5), SC_(12.5), SC_(63272768.13751895464258795290545161333864191418938437646234170610660866375871319512717114875416932903), SC_(0.4623736629266136790024432589792019686354588142002833695517147973817691441435368874792553281999201132), SC_(73570597.32804690261306187758940715308526410653484116656316164619782645559079744442930793241829759441), SC_(0.5376263370733863209975567410207980313645411857997166304482852026182308558564631125207446718000798868) }, + { SC_(12.5), SC_(13.75), SC_(45346885.09422811486658694309600617993749255628538664364547804938729523276990649428521561499639323683), SC_(0.3313780316637917920196119406319880633992936874126714113490597824450097093678546877611635257158571186), SC_(91496480.37133774238906288739885258648641346443883889938002530291713988657960414527126346617607368661), SC_(0.6686219683362082079803880593680119366007063125873285886509402175549902906321453122388364742841428814) }, + { SC_(12.5), SC_(25), SC_(291634.0009284780453292067517573397586842917452779710909635632059087586245211603178769195818161764942), SC_(0.002131151919103176651421229050736255386147703297527935085263815602097869498819238660830130173071480489), SC_(136551731.4646373792103206237431014266652217289789475719345397890985263607249894792386021615906507469), SC_(0.9978688480808968233485787709492637446138522967024720649147361843979021305011807613391698698269285195) }, + { SC_(12.5), SC_(1250), SC_(0.5628251838370822093670984549813087655823566109419034942886891209494234710050575637479118869427495642e-507), SC_(0.411291538995879873328878609309656920676985362275527041419982584635789356289490443028297038424111637e-515), SC_(136843365.4655658572556498304948587664239060207242255430255033523044351193495106395564790811724669234), SC_(1) }, + { SC_(13), SC_(0.12999999523162841796875), SC_(479001599.9999999999997935044119758872017543686979717359487267304675573748752553442191357808632655649), SC_(0.9999999999999999999995689041789753671005574275701203001174249323333311932023985019238725430971056006), SC_(0.2064955880241127982456313020282640512732695324426251261419937408619736604156877680428486714937330842e-12), SC_(0.4310958210246328994425724298796998825750676666688067976014980761274569028943994324163838490197552124e-21) }, + { SC_(13), SC_(6.5), SC_(471324812.7573446522734391013173479981711440350239466084047496559556554645949851471568565525252985193), SC_(0.9839733578287518293747643041638023717898730088249112495756791959685634966428543264700094539465652269), SC_(7676787.242655347726560898682652001828855964976053391595250344044344535406412190803141201998382733319), SC_(0.01602664217124817062523569583619762821012699117508875042432080403143650335714567352999054605343477306) }, + { SC_(13), SC_(11.69999980926513671875), SC_(292302230.0070816725963746814544762636696872449572392926743002189206720871146379793884644857870608234), SC_(0.6102322622869770635345992194065244535084793974743284629410428251610685373736466383236007293439402457), SC_(186699369.9929183274036253185455237363303127550427607073256997810793279128867593585715332687366204292), SC_(0.3897677377130229364654007805934755464915206025256715370589571748389314626263533616763992706560597543) }, + { SC_(13), SC_(13), SC_(221827914.8283426812449459618039906537723573924659330648043327121351752797310404569796170445996717871), SC_(0.4631047470996812562733526606257487527648287447597942570637190191748321503162961920101893109881448021), SC_(257173685.1716573187550540381960093462276426075340669351956672878648247202703568809803807099240094655), SC_(0.5368952529003187437266473393742512472351712552402057429362809808251678496837038079898106890118551979) }, + { SC_(13), SC_(14.30000019073486328125), SC_(157870572.9946750210561331758305711988362338633785606617656456973172395769927459457056301224641362476), SC_(0.329582558794532254289198983532771495619709544558015384010503717142572335862974894377941612540757116), SC_(321131027.005324978943866824169428801163766136621439338234354302682760423008651392254367632059545005), SC_(0.670417441205467745710801016467228504380290455441984615989496282857427664137025105622058387459242884) }, + { SC_(13), SC_(26), SC_(862321.9649085756573800795187107689377787187372682479262292804996623980360097518564772688401806784177), SC_(0.001800248610669725648891526706196323640210635491130401080558562851694854539143837614711873175552347863), SC_(478139278.0350914243426199204812892310622212812627317520737707195003376019653875861035204856835005742), SC_(0.9981997513893302743511084732938036763597893645088695989194414371483051454608561623852881268244476521) }, + { SC_(13), SC_(1300), SC_(0.6144946500866966819756400515650559966475045454738436270212962186900798179035639824155522896612464956e-527), SC_(0.128286554802050072896549834398268397568505939327518661111214705481167457041655740607512514973641764e-535), SC_(479001600.0000000000000000000000000000000000000000000000000000000000000000013973379599977545236812526), SC_(1) }, + { SC_(16.5), SC_(0.16500000655651092529296875), SC_(5189998453040.125083072481768017699264732447502030220543657187756599284467539650371809581521974169451), SC_(0.9999999999999999999999999987745723382650967236488722150412128312324639515303454146319825385083954406), SC_(0.6359967668716725687093414777996004228534393113952843900038379123266266578879036227239604343598224411e-14), SC_(0.1225427661734903276351127784958787168767536048469654585368017461491604559374266453131429478017582777e-26) }, + { SC_(16.5), SC_(8.25), SC_(5151715261216.043779837218979035256352959647395813624635667529855145298731587875407962709872303583674), SC_(0.992623660263009075122253184587048540801846945918618221589970313303750650979766762075115667286754522), SC_(38283191824.08130323526279534241058048952579331001068598566212998837884990461886388525077293685235596), SC_(0.007376339736990924877746815412951459198153054081381778410029686696249349020233237924884332713245478029) }, + { SC_(16.5), SC_(14.8500003814697265625), SC_(3281170062324.489562662671371498689785819541458453535252942745406987512366194288716459533042446669149), SC_(0.6322102197164416139523032718656298410408290904170998573677743388398243158258125272315355187754506265), SC_(1908828390715.63552040981040287897714762963173067010006871044657814616521529820555538842760279376688), SC_(0.3677897802835583860476967281343701589591709095829001426322256611601756841741874727684644812245493735) }, + { SC_(16.5), SC_(16.5), SC_(2425041731503.939538171649250125627303277592420419824296183298715413344683420634781457884706240902129), SC_(0.4672528813729091447747883941065008886716783719424019151711359825453585798767668818478603996596143678), SC_(2764956721536.1855449008325242520396301715807687038110254698932697203328980718594903900759389995339), SC_(0.5327471186270908552252116058934991113283216280575980848288640174546414201232331181521396003403856322) }, + { SC_(16.5), SC_(18.1499996185302734375), SC_(1647422133289.360209741648510375741060393355812928732413438306313733302833145045026521944676353539372), SC_(0.3174224709690146812698759704116603688189327167560198106058627367921125935495318348074863075386583803), SC_(3542576319750.764873330833264001925873055817376194902908214885671400374748347449245326015968886896658), SC_(0.6825775290309853187301240295883396311810672832439801893941372632078874064504681651925136924613416197) }, + { SC_(16.5), SC_(33), SC_(2901186058.305020571211999232924516665685282077969962057923379163927126135950413482820943636880932982), SC_(0.0005589955535739329878732234056712927392864902633844918831542774874781904321157456359281689093477538193), SC_(5187097266981.820062501269775144742416783487907045665359595268605969750455356543858365139701603555097), SC_(0.9994410044464260670121267765943287072607135097366155081168457225125218095678842543640718310906522462) }, + { SC_(16.5), SC_(1650), SC_(0.1946267352533885182968524738572152665958498958163999880266472538302199673522698959999334614825229749e-666), SC_(0.3750034552310565280576801157233877619635177889025441075563944573941372570215399044083676072009131442e-679), SC_(5189998453040.12508307248177437766693344917318912363532165319198513367758149249427184796064524043603), SC_(1) }, + { SC_(17), SC_(0.17000000178813934326171875), SC_(20922789887999.99999999999999585550285263989865320908990534962201305988055560727127752501054067134438), SC_(0.9999999999999999999999999998019146983004821471162827893590335907052378154555171021536348839906953415), SC_(0.4144497147360101346790910094650377986940119446152096661248865026795426422808553938948145597829161787e-14), SC_(0.1980853016995178528837172106409664092947621845444828978463651160093046585489828581527528828869466675e-27) }, + { SC_(17), SC_(8.5), SC_(20784433600502.67097540303723378137542756521119723064689816850936499894851390923610404778992152582084), SC_(0.9933872926011324372480854707028531159699428319963180857694473333229961130562576444429883043720757676), SC_(138356287497.3290245969627662186245724347888027693531018314906350010514878501318347260856459409499552), SC_(0.00661270739886756275191452929714688403005716800368191423055266667700388694374235555701169562792423245) }, + { SC_(17), SC_(15.30000019073486328125), SC_(13287099753146.81563908726762911180304218042070867906651510632558234141904270956355097166492372652512), SC_(0.6350539208333522810496460131116431656908306810923448926959049708132985978549285020416193402477180332), SC_(7635690134853.184360912732370888196957819579291320933484893674417658580959049804387802210643740245682), SC_(0.3649460791666477189503539868883568343091693189076551073040950291867014021450714979583806597522819668) }, + { SC_(17), SC_(17), SC_(9786389836065.484662933923931178566154761312673926353042493107631067618977440495765314161347875510856), SC_(0.4677382838738128355157682846764037701720724116238065355700382030748240423080178307084005801282570024), SC_(11136400051934.51533706607606882143384523868732607364695750689236893238102431887217345971421959125994), SC_(0.5322617161261871644842317153235962298279275883761934644299617969251759576919821692915994198717429976) }, + { SC_(17), SC_(18.700000762939453125), SC_(6606316846932.248047783850738006295546650522014877213547484123836773443331813812630509278068947506478), SC_(0.3157474162048158330090405741786272220223388411095826011615743008876810899891639366537189641631440663), SC_(14316473041067.75195221614926199370445334947798512278645251587616322655666994555530826459749851926432), SC_(0.6842525837951841669909594258213727779776611588904173988384256991123189100108360633462810358368559337) }, + { SC_(17), SC_(34), SC_(9910056056.804399413187707484361240049353376906731624036494056243934933698596212859019749196574567885), SC_(0.0004736488828618494136639923172162211434311650105469731913265417122911239599294674476619883710998844076), SC_(20912879831943.19560058681229251563875995064662309326837596350594375606506806077172591485581827019623), SC_(0.9995263511171381505863360076827837788565688349894530268086734582877088760400705325523380116289001156) }, + { SC_(17), SC_(1700), SC_(0.2458486870964415317217718788554326586945418246595856381802945647755080667210486890463968024635167932e-686), SC_(0.1175028227174641365503215432640837781444444741248006352776382499107702489871018536223821644052375213e-699), SC_(20922789888000.0000000000000000000000000000000000000000000000000000000000017593679387738755674667708), SC_(1) }, + { SC_(20.5), SC_(0.20499999821186065673828125), SC_(540624298233507504.473687364780821829102087234025696758243578603379333048033861452074846033633078383), SC_(0.999999999999999999999999999999999422657785775772262737062201125061400042154183032910755146252341537), SC_(0.3121252294055524747207166162228645932491013737698168406518342062954509290310466641126750345014703397e-15), SC_(0.5773422142242277372629377988749385999578458169670892448537476584629559849301971871019075211556113262e-33) }, + { SC_(20.5), SC_(10.25), SC_(538946805335988652.0709965042629878388797336290391983067462526312939781227450734454841507688955033896), SC_(0.9968971189363850856943032162663079377677473800330018691355952317262889335515107133697970076615234958), SC_(1677492897518852.402690860517834302347583010538973172213942194949948174390161776407535916571781288832), SC_(0.003102881063614914305696783733692062232252619966998130864404768273711066448489286630202992338476504222) }, + { SC_(20.5), SC_(18.5), SC_(350870600436163198.7364975318180419252982809735188997582318059369662979807981699981363242839334102096), SC_(0.6490100455762616918406256396197338343553551005208322891662299606718936269597316444769779046824470834), SC_(189753697797344305.7371898329627802159290356660592717207283888892776283163370652237553624015338744688), SC_(0.3509899544237383081593743603802661656446448994791677108337700393281063730402683555230220953175529166) }, + { SC_(20.5), SC_(20.5), SC_(254429892200746877.619547267113914421792554743293110951578043017441766619415833128863308491477095986), SC_(0.4706223768189808976345190174958215496863188395818484023720734533436530753835271399969728679308838697), SC_(286194406032760626.8541400976669077194347618962850605273821518088021596777194020930283781939901886924), SC_(0.5293776231810191023654809825041784503136811604181515976279265466563469246164728600030271320691161303) }, + { SC_(20.5), SC_(22.5), SC_(166564230981595225.1232057180177844971941373641092607315100831817200402016941276034724830431086627961), SC_(0.3080960872936060240510470665024940294803493434512654502154415432746618007430058687457265447073002346), SC_(374060067251912279.3504816467630376440331792754689107474501116445238860954411076184192036423586218823), SC_(0.6919039127063939759489529334975059705196506565487345497845584567253381992569941312542734552926997654) }, + { SC_(20.5), SC_(41), SC_(80908170732637.92511208009816068271109417702109468117761455902142043347907731125572368454312466128223), SC_(0.0001496569262554527464745335325685386464583793728562383901263243260613982847006246072548944091071889976), SC_(540543390062774866.5485752846826614585162224625570767977825802672225058636561579106359630009241600171), SC_(0.999850343073744547253525466467431461353541620627143761609873675673938601715299375392745105590892811) }, + { SC_(20.5), SC_(2050), SC_(0.1903974835689651617706004158608178882122332263643773645562260375004357181223818669293650115572363009e-825), SC_(0.3521807735817458730053494830686081463253394537138516157394953530571968070553995753734356429302753096e-843), SC_(540624298233507504.4736873647808221412273166395781714789601948262439262971352352218916866854672846784), SC_(1) }, + { SC_(21), SC_(0.20999999344348907470703125), SC_(2432902008176639999.999999999999999772308157712399209862411173233862762286153636670126899636089253877), SC_(0.9999999999999999999999999999999999064114207960860446184442190293349354799025878974408527618001186727), SC_(0.2276918422876007901375888267661372377170528272567496581283801933546699751824687019116072780799381851e-15), SC_(0.9358857920391395538155578097066506452009741210255914723819988132728539758629841178518386142714303973e-34) }, + { SC_(21), SC_(10.5), SC_(2426119495007797370.40376524336035175028046790074405731296091680086344729734192262453341420636270341), SC_(0.9972121716591759302793458038182555963815913921508066795312531588781716095021759440337735350673534736), SC_(6782513168842629.59623475663964824971953209925594268703908319913655270586454130234314355810674382143), SC_(0.002787828340824069720654196181744403618408607849193320468746841121828390497824055966226464932646526408) }, + { SC_(21), SC_(19), SC_(1574511812824323347.940041254339858588371158799540091638983719756794324353518472514974332612071125281), SC_(0.6471743652365000917310541667062840372172362427537768011343976097544263909327586354003721706607604771), SC_(858390195352316652.0599587456601414116288412004599083610162802432056756496879914119022251523983219507), SC_(0.3528256347634999082689458332937159627827637572462231988656023902455736090672413645996278293392395229) }, + { SC_(21), SC_(21), SC_(1145834475653466482.061252354627279360127134084576577302508463538933399896676314167403702844750897965), SC_(0.4709743638677096979187745869898213414114836156728811564349721279282722447347523831952859753731266863), SC_(1287067532523173517.938747645372720639872865915423422697491536461066600106530149759472854919718549267), SC_(0.5290256361322903020812254130101786585885163843271188435650278720717277552652476168047140246268733137) }, + { SC_(21), SC_(23), SC_(754444010774681179.1782906259030682866725169347550464981575900964019870763849280489300061368765366202), SC_(0.3101004513289484840835994598244177527470443778390800601682494869205054681232211068119294191807642768), SC_(1678457997401958820.821709374096931713327483065244953501842409903598012926821535877946551627592910611), SC_(0.6898995486710515159164005401755822472529556221609199398317505130794945318767788931880705808192357232) }, + { SC_(21), SC_(42), SC_(309138187487010.162720227677303694050835397549248621949449793686714776813069243490510764208520969702), SC_(0.0001270656140066638033956074498302991046310047335891718633118915033504153772916738580086368580494085496), SC_(2432592869989152989.837279772322696305949164602450751378050550206313285226393394683386047000260926262), SC_(0.9998729343859933361966043925501697008953689952664108281366881084966495846227083261419913631419505915) }, + { SC_(21), SC_(2100), SC_(0.269232728131886828359357484553907523109988255735406905387089068170333762311982842516226640368397699e-845), SC_(0.1106632027212907295321977020988755421386634327493363623489788714601653349619878624154520901787534427e-863), SC_(2432902008176640000.000000000000000000000000000000000000000000000000000003206463926876557764469447232), SC_(1) }, + { SC_(24.5), SC_(0.24500000476837158203125), SC_(125990634307293746235546.2120618541659368807444577235295166230949255268732373652108637623329938479225), SC_(0.9999999999999999999999999999999999999997227611781397184300222785264653695545658388153856097297425985), SC_(0.3492949502078369059138366090493797207621490149796207508388319605878367180147682626114416143072027397e-16), SC_(0.2772388218602815699777214735346304454341611846143902702574015423419761143217374412527475730060597296e-39) }, + { SC_(24.5), SC_(12.25), SC_(125823677034648511889061.3572394022933144208926313405896801819149937631935451893327901924439542097587), SC_(0.9986748437805462418145972988119198275209493269836409931338017356688128141602611602377636443528815348), SC_(166957272645234346484.854822451872622494781321403723527032563592668617664252092975067851114722047059), SC_(0.001325156219453758185402701188080172479050673016359006866198264331187185839738839762236355647118465171) }, + { SC_(24.5), SC_(22.5), SC_(80127563162173678805638.4970827497912620494334933283216359134701980355856839098748854660331866976061), SC_(0.6359803139552492893898058540149147647405033187209937102704148384920623287552354155265294006673620328), SC_(45863071145120067429907.71497910437467486624045941599157130100838839622552553155087979426188223419962), SC_(0.3640196860447507106101941459850852352594966812790062897295851615079376712447645844734705993326379672) }, + { SC_(24.5), SC_(24.5), SC_(59609734078272681283130.65191195770102228216411883482727180600153695436445385451381437373924724460492), SC_(0.4731282956547652173997215352208794210103454607852125399426567531974233945440640175005045276462118007), SC_(66380900229021064952415.56014989646491463350983390948593540847704947744675558691195088655582168720079), SC_(0.5268717043452347826002784647791205789896545392147874600573432468025766054559359824994954723537881993) }, + { SC_(24.5), SC_(26.5), SC_(40640753938080337896226.24784239868443178185802774240148815785844665586470001481354635904215035959368), SC_(0.322569643065346459458351118206279802619959503357154901174282534384133594129380080161822100237270034), SC_(85349880369213408339319.96421945548150513381592500191171905662013977594650942661221890125291857221204), SC_(0.677430356934653540541648881793720197380040496642845098825717465615866405870619919838177899762729966) }, + { SC_(24.5), SC_(49), SC_(5119371947749950369.360329185306941605229857346797596446200986494865710182516154021979872797215122826), SC_(0.4063295637724703396262423754457665635181954799841258697689252008320003697674069166126366226246611348e-4), SC_(125985514935345996285176.8517326688589953104440953975156107682775999369454992589096112383151961345906), SC_(0.9999593670436227529660373757624554233436481804520015874130231074799167999630232593083387363377375339) }, + { SC_(24.5), SC_(2450), SC_(0.4247235832898155088040188524650788769670099653858944485985120151767792440690541620633018317571613247e-984), SC_(0.3371072664448263359905527459359500845898141806821150832587857954598321585796405105835652436721220935e-1007), SC_(125990634307293746235546.2120618541659369156739527443132072144785864318112094414257652602950689318057), SC_(1) }, + { SC_(25), SC_(0.25), SC_(620448401733239439359999.9999999999999999720629086296192064573656184799764082902831108548614175919024), SC_(0.9999999999999999999999999999999999999999549727402112121313707979195640051759926386511151612192034694), SC_(0.2793709137038079354263438152003183658267823026382085865724949244620001425981390784977186842179479799e-16), SC_(0.4502725978878786862920208043599482400736134888483878079653064270040072612275539760669481124560941441e-40) }, + { SC_(25), SC_(12.5), SC_(619708548751205438154180.288847809651254660315390966301020278449415356119729789629696595664987296899), SC_(0.9988075511517682988099491921420578379705307819799838443610602594400026335328279205785417246744370559), SC_(739852982034001205819.7111521903487453396846090336989797215505846438885150833316445230172889522528912), SC_(0.001192448848231701190050807857942162029469218020016155638939740559997366467172079421458275325562944144) }, + { SC_(25), SC_(23), SC_(393724645607384737076425.2982613186871819894810046263128270697847090072077220492330717222680143784832), SC_(0.6345808039919262587136029033874392715156908989961508509135117393705667712146254420732533914020784457), SC_(226723756125854702283574.7017386813128180105189953736871729302152909928005228237282693964142618706687), SC_(0.3654191960080737412863970966125607284843091010038491490864882606294332287853745579267466085979215543) }, + { SC_(25), SC_(25), SC_(293719323198750164455426.9103167580915569762577632520173320353301458358294584503831662869002913569104), SC_(0.4733984685563493567248096097898752542226436634054655335626455002445213651680516573325489729171204834), SC_(326729078534489274904573.0896832419084430237422367479826679646698541641787864225781748317819848922414), SC_(0.5266015314436506432751903902101247457773563365945344664373544997554786348319483426674510270828795166) }, + { SC_(25), SC_(27), SC_(201123340746644881844220.8766347887740077661869208057270231263993264704535307521596567681820867410827), SC_(0.3241580447057343917309158720274329468745713576502590752898666717688528508234278623287842755377330191), SC_(419325060986594557515779.1233652112259922338130791942729768736006735295547141208016843505001895080692), SC_(0.6758419552942656082690841279725670531254286423497409247101333282311471491765721376712157244622669809) }, + { SC_(25), SC_(50), SC_(21436066546709693903.93782557631631091258857629862868097328697281172967238027768701290777149493027156), SC_(0.3454931382984863942145434713316366603841537912110553761218525385413889480554247251480899217714546107e-4), SC_(620426965666692729666096.0621744236836890874114237013713190267130271882785724926836541057745047542216), SC_(0.9999654506861701513605785456528668363339615846208788944623878147461458611051944575274851910078228545) }, + { SC_(25), SC_(2500), SC_(0.6584808048840185477562925343128472681602285612814620235060693586441766630455361239730732391922799346e-1004), SC_(0.1061298253077185078725394204668571235682904586641213114611433592873760496552482744000852142731313932e-1027), SC_(620448401733239439360000.0000000000000000000000000000000000000000000000082448729613411186822762491519), SC_(1) }, + { SC_(28.5), SC_(0.2849999964237213134765625), SC_(57361842800962338401329150199.53762058572292903857693300666646513812664420063937337854946606911979551), SC_(0.9999999999999999999999999999999999999999999998650877932614163884503521966751540210985757416423689422), SC_(0.773881279486956501771975804719669109144808525603519258451641516404494312769694124793526358376902158e-17), SC_(0.1349122067385836115496478033248459789014242583576310578082789420105686804839321529882474826011261937e-45) }, + { SC_(28.5), SC_(14.25), SC_(57329025675645999380007424269.04064586340779307886426110851578087473411487441327382336789506042295454), SC_(0.9994278927643553937468831308065942000301145480407243376019932583695816802749987696506391122273593834), SC_(32817125316339021321725930.49697472231513596745148469302024928111228737342279064662965626473203355664), SC_(0.0005721072356446062531168691934057999698854519592756623980067416304183197250012303493608877726406166465) }, + { SC_(28.5), SC_(26.5), SC_(35900570085871452757017625073.99150603062055829813329369820580014734075607878374962697352000668696698), SC_(0.6258615193106934525309695815894821675982186893256384744865035810569936289601844746660081346337305862), SC_(21461272715090885644311525125.54611455510237074818245210333023000850564616905231484302403131846802112), SC_(0.3741384806893065474690304184105178324017813106743615255134964189430063710398155253339918653662694138) }, + { SC_(28.5), SC_(28.5), SC_(27251805466015208513274388051.73652891177668287898939088182153854916869634549769806111713198302867877), SC_(0.4750859479981353573526392824740128561807258770438950341897088086926527360947287856209388429944526139), SC_(30110037334947129888054762147.80109167394624616732635491971449160667770590233836640888041934212630933), SC_(0.5249140520018646426473607175259871438192741229561049658102911913073472639052712143790611570055473861) }, + { SC_(28.5), SC_(30.5), SC_(19170265674526286520153832711.74345643559517044329286019886266031241054742932788446962284446043294663), SC_(0.3341989158375622142627673369464799595201121767850709186387023981469534828783915690297939739791899987), SC_(38191577126436051881175317487.79416415012775860302288560267336984343585481850818000037470686472204147), SC_(0.6658010841624377857372326630535200404798878232149290813612976018530465171216084309702060260208100013) }, + { SC_(28.5), SC_(57), SC_(639329848034974228423164.6769791395427949161694033112723560390640960090171034897451044917959104939978), SC_(0.1114555978010260905081072913758752125683667623823399293671927836431826219358538594148130563541170252e-4), SC_(57361203471114303427100727034.8606414461801341301463424902636741167823062388189609802524468333590776), SC_(0.9999888544402198973909491892708624124787431633237617660070632807216356817378064146140585186943645883) }, + { SC_(28.5), SC_(2850), SC_(0.1875727032021411982480690374486891806913355006814066726466649598131563144124266462854328230307976818e-1142), SC_(0.3269990886676924550370677343728083793689049803281483380025931735824580936767960581845054313877892179e-1171), SC_(57361842800962338401329150199.5376205857229290463157458015360301558464022478360644699975513251549881), SC_(1) }, + { SC_(29), SC_(0.2899999916553497314453125), SC_(304888344611713860501503999999.9999999999999999933101642923344849147721790748589030351108422499829174), SC_(0.9999999999999999999999999999999999999999999999780580798646623945308161718263006180927167389812479563), SC_(0.6689835707665515085227850163723649978463120941468404076192514605282469263295003764492776748505276162e-17), SC_(0.2194192013533760546918382817369938190728326101875204366944898705411657891135681016899378264254524897e-46) }, + { SC_(29), SC_(14.5), SC_(304731204308214173404715900123.779306684005152489587864590044536816454370420630653532998543059317866), SC_(0.9994845972098414885079798582306346252147472873798195624648386116966405572046848552450752025928549427), SC_(157140303499687096788099876.2206933159948475104121354099554631835456588179518994805754201321334555052), SC_(0.0005154027901585114920201417693653747852527126201804375351613883033594427953151447549247974071450573192) }, + { SC_(29), SC_(27), SC_(190478756652745756527055462749.1062733701646395525538196356867639581367814280618613549309949857289277), SC_(0.6247492238357855916234987901478134054280690819197591729256016201075976808091531275087303563717011732), SC_(114409587958968103974448537250.8937266298353604474461803643132360418632478105206916586429682057223937), SC_(0.3752507761642144083765012098521865945719309180802408270743983798924023191908468724912696436282988268) }, + { SC_(29), SC_(29), SC_(144913957084466230660547260160.7178382854814124107141846396590098933632626358828780113583703346060302), SC_(0.4753017281425411777481301424926433731869994151512845251734232068420156660058770258953501884904752115), SC_(159974387527247629840956739839.2821617145185875892858153603409901066367666026996750022155928568452912), SC_(0.5246982718574588222518698575073566268130005848487154748265767931579843339941229741046498115095247885) }, + { SC_(29), SC_(31), SC_(102289287494407775982367094392.8031479859409851583807385513331066341315796955931008571539647874864497), SC_(0.3354975331204504322032237504004497778805206868587854082637595456617490065929415360431775135687466019), SC_(202599057117306084519136905607.1968520140590148416192614486668933658684495429894521564199984039648718), SC_(0.6645024668795495677967762495995502221194793131412145917362404543382509934070584639568224864312533981) }, + { SC_(29), SC_(58), SC_(2892517074287968989912469.888918702879367020618358913421677538548776524150308136922924925839572096239), SC_(0.9487135619997846276151041345405856302838389761000159801100790909631178603269050851607213365638567364e-5), SC_(304885452094639572532514087530.1110812971206329793816410865783224614512527144322448766510382656117494), SC_(0.9999905128643800021537238489586545941436971616102389998401988992090903688213967309491483927866343614) }, + { SC_(29), SC_(2900), SC_(0.3143102259608077661740577752916068744868021451921564246761123455026351071030263789592698013016859553e-1162), SC_(0.1030902727229842145420823591763412232948519431888416610764325060829822574393741681193444602752178939e-1191), SC_(304888344611713860501504000000.0000000000000000000000000000000000000000292385825530135739631914513215), SC_(1) }, + { SC_(32.5), SC_(0.324999988079071044921875), SC_(46334060788513904384988971821323500.26802927540630912915186063279843684009289524602475103569566120769), SC_(0.9999999999999999999999999999999999999999999999999999337002400254654465134437777742026615770780541156), SC_(0.3071937108923965070627162971161280609031648943051554034889576558366642743362284829170009040890767968e-17), SC_(0.6629975997453455348655622222579733842292194588440659557355121773647380912409957308044925536720187399e-52) }, + { SC_(32.5), SC_(16.25), SC_(46322522730222611292608497533548302.43943777548545116639369338978347802543343303135760668007261667008), SC_(0.9997509810688953611501047192176947134897284736418296905462081746004660191828341581576205721672751686), SC_(11538058291293092380474287775197.82859149992085796583010435193892388528662518582842496465469348066164), SC_(0.0002490189311046388498952807823052865102715263581703094537918253995339808171658418423794278327248313602) }, + { SC_(32.5), SC_(30.5), SC_(28621007643720182006077134838146782.95883906379256793188822237091897230621059367776008945872023656119), SC_(0.6177098910962549796098763032964066958628227303028015095518499614723898239110229739106407453151542127), SC_(17713053144793722378911836983176717.30919021161374120033557537080342960450946453942594218600707358956), SC_(0.3822901089037450203901236967035933041371772696971984904481500385276101760889770260893592546848457873) }, + { SC_(32.5), SC_(32.5), SC_(22086053016848511566963307387930013.16260281540273487265707840984355296181178149718030229778163622351), SC_(0.4766699192988409044611385448927340913390216019830607900339534117343979333601086446612686588650620676), SC_(24248007771665392818025664433393487.10542646000357425956671933187884894890827672000572934694567392723), SC_(0.5233300807011590955388614551072659086609783980169392099660465882656020666398913553387313411349379324) }, + { SC_(32.5), SC_(34.5), SC_(15929984929735402664933756144665957.49287311113186407619356762099919819017469613256737240979297707395), SC_(0.3438072264472101987883211998866135121555991482820664842271765773700151264261197086071726004781636204), SC_(30404075858778501720055215676657542.77515616427444505603023012072320372054536208461865923493433307679), SC_(0.6561927735527898012116788001133864878444008517179335157728234226299848735738802913928273995218363796) }, + { SC_(32.5), SC_(65), SC_(142761347286773564929810657719.9602609908854108736907492246016219341962310483549118706465501178102169), SC_(0.3081131782046691214702430585972536329343580504205419131996313773478525625472231412293455075097903735e-5), SC_(46333918027166617611424042010665780.30776828452089825853304851712077997652382716883111977408076003294), SC_(0.9999969188682179533087852975694140274636706564194957945808680036862265214743745277685877065449249021) }, + { SC_(32.5), SC_(3250), SC_(0.1484185597736004907504358778932123824630239848300836183590157424893530365583445173075870585504689164e-1300), SC_(0.3203227976305350589149255291837955379623896649388683491749264167255028925437095164617203676065096547e-1335), SC_(46334060788513904384988971821323500.26802927540630913222379774172240191072005821718603164472731015075), SC_(1) }, + { SC_(33), SC_(0.3300000131130218505859375), SC_(263130836933693530167218012159999999.9999999999999999971597009336809473588262277616785778368781691701), SC_(0.9999999999999999999999999999999999999999999999999999892057536873385115678521964144069695214796957037), SC_(0.2840299066319052781318762073475803811776132238243053482256197592739651068520683692770637579337711626e-17), SC_(0.1079424631266148843214780358559303047852030429631156728354872666198273180917792118476042704403843341e-52) }, + { SC_(33), SC_(16.5), SC_(263071754810938555593905150285830039.9013149090036838977830493205901675724636474415759841358850045707), SC_(0.9997754648469048015582150573448994889541539147463865500821162324772215895513769125072676674716742899), SC_(59082122754974573312861874169960.09868509099631610221695067940983256768134239357839751276929683761343), SC_(0.0002245351530951984417849426551005110458460852536134499178837675227784104486230874927323325283257100747) }, + { SC_(33), SC_(31), SC_(162298695681589120992228451249431749.1182640646309791272297056919375804404812200726519322580585642423), SC_(0.6167984625932947936660006970927840753925768251839107574617248176524285825042695426028932570342212548), SC_(100832141252104409174989560910568250.881735935369020872770294308062419699663769762502449390595737166), SC_(0.3832015374067052063339993029072159246074231748160892425382751823475714174957304573971067429657787452) }, + { SC_(33), SC_(33), SC_(125473252468549551731963143517407658.8833751453695524982663979524542201016894851346678414375457457378), SC_(0.4768473886630308507823781455837688570632946883204313471614756839792705550160238355942104302601025457), SC_(137657584465143978435254868642592341.1166248546304475017336020475457800384555047004865402111085556706), SC_(0.5231526113369691492176218544162311429367053116795686528385243160207294449839761644057895697398974543) }, + { SC_(33), SC_(35), SC_(90752382644240602265695985840268093.80155020103808767855232207731872018001496004374357967883306848595), SC_(0.3448945159822120737797161944821761022350313753814505254141386911335679511045428020170838067055914315), SC_(172378454289452927901522026319731906.1984497989619123214476779226812799601300297914108019698212329224), SC_(0.6551054840177879262202838055178238977649686246185494745858613088664320488954571979829161932944085685) }, + { SC_(33), SC_(66), SC_(690689197981234573971964538903.9217983821756186614812519665732869336692719821881476009486685956504548), SC_(0.2624888842485921506876304750022556823451127207465239231677013156569163155317600802678203776018185223e-5), SC_(263130146244495548932644040195461096.0782016178243813385187480334267132064757178529662340477056328127), SC_(0.9999973751111575140784931236952499774431765488727925347607683229868434308368446823991973217962239818) }, + { SC_(33), SC_(3300), SC_(0.2660029095005274146733635911570338124648146558855644546617488369820519446790559159046816506915223932e-1320), SC_(0.1010914998030267427355024834993305293670497251700514115155290007590672282491624577981977807588016461e-1355), SC_(263130836933693530167218012160000000.0000000000000000000000000000000001401449898351543816486543014083), SC_(1) }, + { SC_(36.5), SC_(0.3650000095367431640625), SC_(61783994085109905285617221075553185632871.46593990870317617905112221558346802474495293361093686477298), SC_(0.9999999999999999999999999999999999999999999999999999999999671715496188758407628085162996316950792355), SC_(0.2028272784170699070176744961750260016534774310992690385363535341051709960919433646055822700438618255e-17), SC_(0.3282845038112415923719148370036830492076450037779705575700234148891870089197147052054094034784675396e-58) }, + { SC_(36.5), SC_(18.25), SC_(61777254520646317770028385636707658594498.76692706361131964752360928908845136386547082001572396520059), SC_(0.9998909173069273653963982410400592541189386034850415758139503734982352352344255678028981107922458406), SC_(6739564463587515588835438845527038372.699012845091856533555785710665715731056227075345472916107167543), SC_(0.0001090826930726346036017589599407458810613965149584241860496265017647647655744321971018892077541594021) }, + { SC_(36.5), SC_(34.5), SC_(37747609725485141381203912943265322693554.60633588885976291637124692013534422509674151917211311041349), SC_(0.6109609824429011506164679172242535904254179657867172438923963043601755299082871880515734973007440131), SC_(24036384359624763904413308132287862939316.85960401984341326470814807961882286982495637618908377089426), SC_(0.3890390175570988493835320827757464095745820342132827561076036956398244700917128119484265026992559869) }, + { SC_(36.5), SC_(36.5), SC_(29531867110567733996206172826469404227498.9311927638816270130276092332480177066415858688849469128158), SC_(0.477985723452686052398471307401499970104499214598903118308733135180099804927481749049570771313257641), SC_(32252126974542171289411048249083781405372.53474714482154916805178576650614938828011202647624996849196), SC_(0.522014276547313947601528692598500029895500785401096881691266864819900195072518250950429228686742359) }, + { SC_(36.5), SC_(38.5), SC_(21742960397427655971999858476245787542154.15150586635725616093880001666211564993165974656956851031785), SC_(0.3519189835392620395302152269324892873693310528827889471335875731231959108019664428015002605063426072), SC_(40041033687682249313617362599307398090717.31443404234592002014059498309205144499003814879162837098991), SC_(0.6480810164607379604697847730675107126306689471172110528664124268768040891980335571984997394936573928) }, + { SC_(36.5), SC_(73), SC_(52949442154506109118983369217871874.38246594734925702394423038249326654537455487682886341892236797151), SC_(0.8570090512692680556802347857159858050844535163506777789989580690865292168793799100092698899450718342e-6), SC_(61783941135667750779508102092183967760997.08347396135391915713516461726090054954714301853233346238539), SC_(0.9999991429909487307319443197652142840141949155464836493222210010419309134707831206200899907301100549) }, + { SC_(36.5), SC_(3650), SC_(0.1953355084312233771020954281999372828097757306846922312364706684936133958688600435101169722435920175e-1458), SC_(0.3161587581439635603576946151249429130551615750835979291506861400626078334974808393076908597655919673e-1499), SC_(61783994085109905285617221075553185632871.46593990870317618107939499975416709492169789536119688130775), SC_(1) }, + { SC_(37), SC_(0.37000000476837158203125), SC_(371993326789901217467999448150835199999999.999999999999999998010144152088536780620259902094609630282), SC_(0.9999999999999999999999999999999999999999999999999999999999946508291802582432073734328927504122445964), SC_(0.1989855848803199113330559282105407777739456877542387398548067882388920416527083270608322077134689013e-17), SC_(0.5349170819741756792626567107249587755403553332314009452247515306615350728798447484985751790393880222e-59) }, + { SC_(37), SC_(18.5), SC_(371956712793231153197597830186294584210422.2758111030818172279500018253795285911205314038120175905779), SC_(0.9999015735121217818090760205581543280418411120156879903724853447672046973321848456420679481585530018), SC_(36613996670064270401617964540615789577.72418889691818277204999817551220730283028778038799981744356341), SC_(0.9842648787821819092397944184567195815888798431200962751465523279530266781515435793205184144699823239e-4) }, + { SC_(37), SC_(35), SC_(226989024014514715184435975122876165449017.4354380189351676839148067141921226508640903916939172052318), SC_(0.6101964945804424491761955895760276454618789066404902936457902256016569955365846250467251759013351627), SC_(145004302775386502283563473027959034550982.5645619810648323160851932866996132430867287925061002027896), SC_(0.3898035054195575508238044104239723545381210933595097063542097743983430044634153749532748240986648373) }, + { SC_(37), SC_(37), SC_(177863034503958843994685514205494501614349.5019963234044377047596609195056110031786919237288259549572), SC_(0.4781350139767814391926669215604954535637725270056258313717131858978224542335868299177336178494837268), SC_(194130292285942373473313933945340698385650.4980036765955622952403390813861248907721272604711914530642), SC_(0.5218649860232185608073330784395045464362274729943741686282868141021775457664131700822663821505162732) }, + { SC_(37), SC_(39), SC_(131256580134582475503504585688775961443809.3151145960527074790695530203993802515906461401417853004337), SC_(0.3528465988012605299562448021483701523550172331761938728513557987821171322564921159639473486646029879), SC_(240736746655318741964494862462059238556190.6848854039472925209304469804923556423601730440582321075878), SC_(0.6471534011987394700437551978516298476449827668238061271486442012178828677435078840360526513353970121) }, + { SC_(37), SC_(74), SC_(271778651018441097347065883466473848.2746511977815237362658432276453536467157425861343116997640371484), SC_(0.730600877611816548123508890538883154677474348252631497380790705322862094368509049491763524535733931e-6), SC_(371993055011250199026902101084951733526151.7253488022184762637341567732463822472350765980657057082574), SC_(0.9999992693991223881834518764911094611168453225256517473685026192092946771379056314909505082364754643) }, + { SC_(37), SC_(3700), SC_(0.3714703196437381532843643639864485147019841838742418471961281810239780186658714011436027292802695334e-1478), SC_(0.9985940415902717138423033467831033580547327587141446387368733042084326864839438382850644573580819965e-1520), SC_(371993326789901217467999448150835200000000.0000000000000000000000000008917358939508191842000174080214), SC_(1) } + } }; +#undef SC_ + + diff --git a/test/igamma_inva_data.ipp b/test/igamma_inva_data.ipp new file mode 100644 index 000000000..573821934 --- /dev/null +++ b/test/igamma_inva_data.ipp @@ -0,0 +1,445 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 435> igamma_inva_data = { { + { SC_(0.11342023313045501708984375), SC_(0.097540400922298431396484375), SC_(1.035869900800721563193351335409353423054156223778352824799732510014114331303190861923913851617789576), SC_(0.05862165929221091309602935851268320728966552926925608108837955463403857541085640683871851098187935567) }, + { SC_(0.11342023313045501708984375), SC_(0.12698681652545928955078125), SC_(0.93513162632210132756150227031041961003749580131891848591112697892138664595709032559736553036690404), SC_(0.07702073629515159209895492482246819546302457039495283952439305125976814739590655422243170396591695024) }, + { SC_(0.11342023313045501708984375), SC_(0.135477006435394287109375), SC_(0.9100380607375349140135424653157145054283763683426464165277887838730942363760587929004439481331867906), SC_(0.08239454114833290164904666725589763295213501324448854257672874472236795673343348101283994380015493955) }, + { SC_(0.11342023313045501708984375), SC_(0.188381969928741455078125), SC_(0.779595202624673387363485521164023245809684162801375448392802218438362825559076033610794317185133861), SC_(0.1166391941338030559840976122781824609204768300357456413264936214065498992433137767918843993082512688) }, + { SC_(0.11342023313045501708984375), SC_(0.22103404998779296875), SC_(0.7145928353898281531229899766663421465043332388718242321020543488710755276457340056824233507290026167), SC_(0.1384900078344770795221486812547034082011104407568501332022902743558707268824034463784809050893959221) }, + { SC_(0.11342023313045501708984375), SC_(0.278498232364654541015625), SC_(0.6182586795562308310975349170899684675397900921120847475062459321020936519806102953807288680346855742), SC_(0.1784721480822330050905288284953586748392689370078276538971887861788093058242214704511862158537019216) }, + { SC_(0.11342023313045501708984375), SC_(0.308167040348052978515625), SC_(0.5750762878067446972629162563822329468974137308881623861798146424843915189358227607746127802679658861), SC_(0.1999745971366197606214810194646538480932240109343778328885211338343706229230203595508410364650077464) }, + { SC_(0.11342023313045501708984375), SC_(0.546881496906280517578125), SC_(0.3158581972518262198680262971873178145282238457421313069361242252141961771513906035921435181902024621), SC_(0.40399522554055015965171997281891601803562228187095717362147123937459020167864162427846789506528334) }, + { SC_(0.11342023313045501708984375), SC_(0.54722058773040771484375), SC_(0.3155616219617029735803748550238394725944210138946535670470388364147063820887200160768983610508607508), SC_(0.4043391538070912752469413697358973847567093976055568141867354582154449982775159287792880341381161789) }, + { SC_(0.11342023313045501708984375), SC_(0.6323592662811279296875), SC_(0.2451306925552628674700116671932204741230337234325446757090933316372456823776133088401164345457104668), SC_(0.4981721948503688022008818739022596218839268441108020243647633715157177066183221315388893154605681197) }, + { SC_(0.11342023313045501708984375), SC_(0.814723670482635498046875), SC_(0.1145907253421634340428550841021180213245634728137200905215078642375729374894281996476238899008128165), SC_(0.7862852295173094376574861816166162829803656701458377721112754273299144168379358322286031004477952406) }, + { SC_(0.11342023313045501708984375), SC_(0.835008561611175537109375), SC_(0.101331527591007847744573524795847576083929747580314104040226733069549334001280984610814567479857817), SC_(0.8326058923439134249687721563121076618130208457176003407255229510096659223637127918548740068611902389) }, + { SC_(0.11342023313045501708984375), SC_(0.905791938304901123046875), SC_(0.05656193657838154866774148682961754372226868790952633895057593923638262083267913677844800561062284631), SC_(1.04896840759462485702081614165933409290459738742990942007871315448214243965980816410908535790073786) }, + { SC_(0.11342023313045501708984375), SC_(0.9133758544921875), SC_(0.05189064964852823459637928419581919698509481017420310002496395476818562158762986899770261198573844241), SC_(1.080435768098731745020005560573961257374011084999542196321375433066538881295544756909074244422125722) }, + { SC_(0.11342023313045501708984375), SC_(0.968867778778076171875), SC_(0.01835818396061160048337643098614074549706602146731102647725732066970461614194476008520575667903820769), SC_(1.448797407656090219493165071703219939123058592597047518890784499076538070587802667567859080671028321) }, + { SC_(0.1419346332550048828125), SC_(0.097540400922298431396484375), SC_(1.124578830537963702051998473796288168586685310061027732355203576629632283960817297660062046074915143), SC_(0.0659284721147043282303849180640934562566897224895804233539249128398260667430925608435729540214754515) }, + { SC_(0.1419346332550048828125), SC_(0.12698681652545928955078125), SC_(1.017033751189331824504325403924341720905739138565526684761461549984097760120918333327463981882765665), SC_(0.08649278031454385525728666007963182163925805103763420954040262025741180677454847460411841098791601186) }, + { SC_(0.1419346332550048828125), SC_(0.135477006435394287109375), SC_(0.9902142921858343274435115921427109074354611809918110403382037220186217516256053009853608288056704689), SC_(0.09248877472325344088393739866931009589190859884078310814802341635680304235539767062268472977333731618) }, + { SC_(0.1419346332550048828125), SC_(0.188381969928741455078125), SC_(0.8505785998195794526287491308010932266793339719426224792262622633066161829593612618292878964211114605), SC_(0.1305982554060110903644352571539294106230392294124679024676030185902887691963181187121592257303657878) }, + { SC_(0.1419346332550048828125), SC_(0.22103404998779296875), SC_(0.7808395661964723025065274478432724703812506573362937686319290770429457825258588979051496462804184209), SC_(0.1548317951205897711220384965795747080251080507849479059158897171375778172596890940331713045635641511) }, + { SC_(0.1419346332550048828125), SC_(0.278498232364654541015625), SC_(0.6772609184694136395829214678207043149699253868567694609654501808726365693498576674966232500529840506), SC_(0.1990250470315257234650602086315659437473047214824637904232710507788991505540315624327049715768915247) }, + { SC_(0.1419346332550048828125), SC_(0.308167040348052978515625), SC_(0.630732340145806754814474818656317258739611054139979482135367574881529997048038535582075675545383329), SC_(0.2227203252084107833339010674280717585720589607238234483333954941372899120632213762241351353111801409) }, + { SC_(0.1419346332550048828125), SC_(0.546881496906280517578125), SC_(0.349708717751391355159479214660277171464283691195026088708202769671562811924679353305737371727474314), SC_(0.4456482378008532807988050947059477473750827663770176898902670239364470277606341238138830195865284648) }, + { SC_(0.1419346332550048828125), SC_(0.54722058773040771484375), SC_(0.34938505235700051109422458264248273843369824263538926665971457103150418551006634428413713838463443), SC_(0.4460217175733750342583186470185268231571709276780851712061443842332352649527336346223436093968900516) }, + { SC_(0.1419346332550048828125), SC_(0.6323592662811279296875), SC_(0.2723365665725819880697084193348315672163942836223061717484924369936181601343161297604977832581277765), SC_(0.5476941234441064195196321208511198969055308360244560161002793861902290381370045763117008954093133652) }, + { SC_(0.1419346332550048828125), SC_(0.814723670482635498046875), SC_(0.1283232223230380098811206610224084691036303771630733595757042570301959629906377767938930312924094034), SC_(0.8577498466883962411368177728739427398074845373836199107327704588709507726781916595107240718092847017) }, + { SC_(0.1419346332550048828125), SC_(0.835008561611175537109375), SC_(0.1135836623459303051429194205019356086721666257185933943800095114966831710249674856235457280143561524), SC_(0.9073723077768857915584037443594473495284668640552456222581651191944986071977435720707982921349172822) }, + { SC_(0.1419346332550048828125), SC_(0.905791938304901123046875), SC_(0.06362286490652974750551515900848775590349209643142950504238254147486041451220153135727937086746593346), SC_(1.138548958417806819877672656752528834516707875999494557854245128596101999842871365821587081467468729) }, + { SC_(0.1419346332550048828125), SC_(0.9133758544921875), SC_(0.05839122910435104787959801317712985297073242431714212769707923902518190300188050313568727292734281841), SC_(1.172098433700713966567441591625443115999983390102098023915355276771621952667238157429389664117756093) }, + { SC_(0.1419346332550048828125), SC_(0.968867778778076171875), SC_(0.02071934836253989804136051808125936032827483325843529223729374263952186251046878164288294079384678798), SC_(1.56377644811475640972171606288309488019030758199907780303791244112105872633625554623267734499110393) }, + { SC_(0.476447999477386474609375), SC_(0.097540400922298431396484375), SC_(1.906240501146735627405728538719050272742196757761857063398095587230594456801036092842821773110568176), SC_(0.1557234989288209275828472080090140421199447184166737519995512435500240874319270398254513654236859738) }, + { SC_(0.476447999477386474609375), SC_(0.12698681652545928955078125), SC_(1.746889660226439769707796999615493342006338076754771883758583845080036360375775016213480275141899151), SC_(0.2002596077596651342317325888043366373380954823329671027872122725030008232437680807213017399722523492) }, + { SC_(0.476447999477386474609375), SC_(0.135477006435394287109375), SC_(1.706868853024925966866869647473148895344239016501717692391243187680702442620890834745165798505101534), SC_(0.2129795974646839776665682777757533210339641002049819348270911731567455898031637831725545721717175334) }, + { SC_(0.476447999477386474609375), SC_(0.188381969928741455078125), SC_(1.496402036110226178753807596303443024792020848888375194926104618332228203462037726328030969815045359), SC_(0.2914634957363814616459251957253147303530562178568750069356253062641261676124313970417703556690757765) }, + { SC_(0.476447999477386474609375), SC_(0.22103404998779296875), SC_(1.389780170786465257163165888411919682295334234979373288233859710186808614418780585928648487393921389), SC_(0.3395697694493451480454334226071565211789536369197603012170000008453482663877818774486999446935503578) }, + { SC_(0.476447999477386474609375), SC_(0.278498232364654541015625), SC_(1.229174720073372984084496383837881179087223547169626664699876858397174598071709432222238442958855439), SC_(0.4244425653913050008718190012967890644774095596425806319360580424994718887595717604938855299440668093) }, + { SC_(0.476447999477386474609375), SC_(0.308167040348052978515625), SC_(1.156013053768341543768168548522257409766109807965285308966336963040232539746733111463527005418183613), SC_(0.4686807520841755502989471241669846831690356034356557943101461745637370926841250627778710220335129588) }, + { SC_(0.476447999477386474609375), SC_(0.546881496906280517578125), SC_(0.6947721882838627949038262091975689387764567019453173647065533321382744657450460331419286643574776482), SC_(0.856829730614052242405116918767233984406720091257778872793994440946733518700749262959776269533866004) }, + { SC_(0.476447999477386474609375), SC_(0.54722058773040771484375), SC_(0.6942147568794122696200017270629557570076703163891712593315468480078768034853161200814111932265608757), SC_(0.8574495251440085350859678096982695288723874542394079979930290904412490567933548532369594229447389463) }, + { SC_(0.476447999477386474609375), SC_(0.6323592662811279296875), SC_(0.5589786726957033422941602375813373046879722363449824559752641350510778309452479538716704122275528471), SC_(1.023577834553390956652648263292654002446782700792026164932025970575470481406702608985240964104843903) }, + { SC_(0.476447999477386474609375), SC_(0.814723670482635498046875), SC_(0.2868813784860015606760412218035657927796176303339322211706677987987728973745366052832491215062119951), SC_(1.507304544624902338801973568545168892096379533153391150979079395057066736786348622620184780822628809) }, + { SC_(0.476447999477386474609375), SC_(0.835008561611175537109375), SC_(0.2568935837272709908753487794187791358163818306778911259196867303174376772887052388030733749229137646), SC_(1.582455306019404084804450153498424040275078618162624951343780339565478307193874251513518564374071041) }, + { SC_(0.476447999477386474609375), SC_(0.905791938304901123046875), SC_(0.1506347253417586905688255904812071536482537188067419956228297520577947931339130124933846650042800913), SC_(1.926816526440767605217362474417185267071949430556007186239551941147146911512829851333833992527160027) }, + { SC_(0.476447999477386474609375), SC_(0.9133758544921875), SC_(0.1390101729626404216517230653577629330653433220311021371773880142236168201232166173456231945275187574), SC_(1.976122143213291899358992568071855876137809030571579600545815122411388046064230680375411764664967352) }, + { SC_(0.476447999477386474609375), SC_(0.968867778778076171875), SC_(0.05159397411040075136949974586299580607266007906546148179746530906816283404219559283712915016000747068), SC_(2.542284263439527020342019073908337703600122253760234226452742497319688928938238882786942476219332789) }, + { SC_(0.91750431060791015625), SC_(0.097540400922298431396484375), SC_(2.711998557841879052132321087467458969561301949235923127317988801661751718689072320485397011128703986), SC_(0.3061726301503603217632600102982841385077346866054733051600433778645397037685762699828524837236533078) }, + { SC_(0.91750431060791015625), SC_(0.12698681652545928955078125), SC_(2.509481000222379121131178804027310310687727437209817740982526954619793535767106985904703722992173981), SC_(0.3822051519276465055012709548939149190375605300969726586966346488734400475030867035740034886129308152) }, + { SC_(0.91750431060791015625), SC_(0.135477006435394287109375), SC_(2.458409210485814187917904006480643468287677247468217091147712747506781222972039398943846725155879948), SC_(0.4033904746293868286037552553779666045026032923828053432961548353366544855928138858204135362515178604) }, + { SC_(0.91750431060791015625), SC_(0.188381969928741455078125), SC_(2.188248964434296112467156634950206924818018011278198740766069437791737828165048141277099236739551725), SC_(0.5300375057342607295562845813537553704534506915262751036671547908516811278232077346316361106969729471) }, + { SC_(0.91750431060791015625), SC_(0.22103404998779296875), SC_(2.050243382982923963771613947416005185164866835589951440724672287906538053173918759947072534032562479), SC_(0.6048995169040271003322175754589831184592352477602955261929277367710566412319010019463181893129013214) }, + { SC_(0.91750431060791015625), SC_(0.278498232364654541015625), SC_(1.840631137574182560855013545062548409741029645468452153402874633493413423156847336152022570467587485), SC_(0.7331919863823307457334371983903256057288007300574793309608612666249568883007906616479803455125253383) }, + { SC_(0.91750431060791015625), SC_(0.308167040348052978515625), SC_(1.744350708381118249251051701478690964927494924994787998202024870385872437865333693791226759370437478), SC_(0.7985270666248249234782341193466970190722648005544167202737339109655289100111981472583986555225269834) }, + { SC_(0.91750431060791015625), SC_(0.546881496906280517578125), SC_(1.120988275866673770933424378433083092381263297948091717184698217334546142305039146644397493122003849), SC_(1.343941442413945149850474141269272112823156571412458776367930311034335925948142892854504569698465968) }, + { SC_(0.91750431060791015625), SC_(0.54722058773040771484375), SC_(1.12021163514484362996010705205879519781898026543390250277090751119510005389176045018588094963985866), SC_(1.344784443064824053907594671456442484905035250569516857106637131628604155250443673173345917313602008) }, + { SC_(0.91750431060791015625), SC_(0.6323592662811279296875), SC_(0.9293240216825327545093352853305310256721640901685762721672904270184536206469799441561795745661528528), SC_(1.568574199499938310854235369190277325304253833542345228106276030673519607374432875846172300809994232) }, + { SC_(0.91750431060791015625), SC_(0.814723670482635498046875), SC_(0.5228096647734261169644972715486128823978656677454381890255197889068840629248497112570422338685429578), SC_(2.20231417304730726213995467539874784745519427853423454106752613869892059845988811356944299318984379) }, + { SC_(0.91750431060791015625), SC_(0.835008561611175537109375), SC_(0.4750345879979780591360684481722320160249196132715234673017520389736415383347278898531598719886329476), SC_(2.299046939087323467210160801656799534584651136565626984957054478236859866766997516372016929353644134) }, + { SC_(0.91750431060791015625), SC_(0.905791938304901123046875), SC_(0.2972761333051268065655642868001535283120520062023036586867261237897666211984999364868106369390852782), SC_(2.738057255257541590359936507361258972975839255336912632096628946858828235391499336475392632797750207) }, + { SC_(0.91750431060791015625), SC_(0.9133758544921875), SC_(0.2767701519129049112772997278822374874580856344211742795905110072800118855017824157767903835258124163), SC_(2.800421321050758702868412368794735484993523770111621005724736326060674113571953393614513799961240407) }, + { SC_(0.91750431060791015625), SC_(0.968867778778076171875), SC_(0.1117851406612002011189532448213743771643246380186151461840751027472615492304135396880258366198990242), SC_(3.509662828594721378678565034582473146142482772870812219362439480434178792331392229534633450590419929) }, + { SC_(1.12698686122894287109375), SC_(0.097540400922298431396484375), SC_(3.060838149397433339394387484318603242663389553622965304918339707400575306131043650395111828390494048), SC_(0.3909472575358788660674368944050986842711536568295345063981709934086423113461390895139007742503650417) }, + { SC_(1.12698686122894287109375), SC_(0.12698681652545928955078125), SC_(2.841726505216374453769161868196316523987624607259717506501615251703601637448037023101734235939045411), SC_(0.4814628985458572856283403887948087137020311353476037833065337481262465777267284770780851299306733245) }, + { SC_(1.12698686122894287109375), SC_(0.135477006435394287109375), SC_(2.786400088530337832477457826786432556780644404017319160448736154269583005985698184157152933408230071), SC_(0.5064482163019783309984728948020447518206163219591648115949953749169651962678820640916322576063944774) }, + { SC_(1.12698686122894287109375), SC_(0.188381969928741455078125), SC_(2.493208595410759004800926145040037652002076652079618050097241223986335036211159239009344808077064865), SC_(0.654141381436128976141661331542933754990647597637260881070017714970543980851648666945514495352529338) }, + { SC_(1.12698686122894287109375), SC_(0.22103404998779296875), SC_(2.343058090807411537552423784082983869893330572090052574149206635458941425090668385684616463599190097), SC_(0.7403632920423088673192561431964903700347573718927270985760783608522571686929777532683820207578515972) }, + { SC_(1.12698686122894287109375), SC_(0.278498232364654541015625), SC_(2.11442424745433017619426164664136582139216609327386164797031179506364312661514951530393953883148662), SC_(0.8867294003697711962806206719572810715357940209911836639711508697595047503813271172052288325668806107) }, + { SC_(1.12698686122894287109375), SC_(0.308167040348052978515625), SC_(2.009143652525874338112700813997349308733489832854564859723899567726312411719799778474151958563978719), SC_(0.9607196958937813560487339195404730113204456415819536143083946503756213104878142267264823134114550476) }, + { SC_(1.12698686122894287109375), SC_(0.546881496906280517578125), SC_(1.322002402236170755152388972470598195867632017482510329538177899027517087226163486322954930870394776), SC_(1.569075363339806942678265350026298934922174180405594326925947297868393904547333123634625941775322743) }, + { SC_(1.12698686122894287109375), SC_(0.54722058773040771484375), SC_(1.321138471763160774122261601070813856630606361965940620995802821172170057634692149264412848115388718), SC_(1.570006350054384458248292544528517589268555870393616358076205595127096382850890538912594627235561167) }, + { SC_(1.12698686122894287109375), SC_(0.6323592662811279296875), SC_(1.107954190170831516784210470288076158391826550512733510595475818794428757594250542518006714548250499), SC_(1.816441317699414360914899094629897642305640427381086937596854923642839302274678606714374070793275801) }, + { SC_(1.12698686122894287109375), SC_(0.814723670482635498046875), SC_(0.6457790094417581454292091283090858286935493487777614330171852598854175143043094420654217089974384243), SC_(2.508496256336587012606232966310825027874040590402560244141765653903330072457714261274471033413067883) }, + { SC_(1.12698686122894287109375), SC_(0.835008561611175537109375), SC_(0.5903165832976030686564505574795938463337291115332481067409174390616544243261595307430313775233498983), SC_(2.613564169833158888075563017765131116470577474323369357208483477314808702531834221835415464239925397) }, + { SC_(1.12698686122894287109375), SC_(0.905791938304901123046875), SC_(0.3802576531685206974868107618367987709426736792583771758191326459978927865969469166082047757877076848), SC_(3.089001742517857463056613356364969297036446190980929959940372316943032033095543329919178274895022522) }, + { SC_(1.12698686122894287109375), SC_(0.9133758544921875), SC_(0.3555286795481053701131612229630707329685975582828392650526567873646332385452195287446770778411734531), SC_(3.156376787411160567363210990569768615012155556670487694072893089667354808216542304077599170343565169) }, + { SC_(1.12698686122894287109375), SC_(0.968867778778076171875), SC_(0.1503204924819451569018944951570549785194256667617405588173560670427930456317841776365172249960929169), SC_(3.920321668903544763796268317751460362513513954160257913183125421213113648507200532314124056435029975) }, + { SC_(3.93773555755615234375), SC_(0.097540400922298431396484375), SC_(7.090647963117289564189563243229959353926454951303170352131076248253663584548037483924462684726634502), SC_(2.011216700845572256036623335613689465981597841005889551670812158931922263224024070520165586886489601) }, + { SC_(3.93773555755615234375), SC_(0.12698681652545928955078125), SC_(6.725669946437175204168730333398878198552113653772997339335035703302710070833162324985929449047416224), SC_(2.24704394901208610709070037938980015074842422718959678509831392308942886147793106261902386920958818) }, + { SC_(3.93773555755615234375), SC_(0.135477006435394287109375), SC_(6.632879131834657478533414512289630531926508511387666567081569398538264830185957676165589398235252955), SC_(2.309340255188215071480236453864466396519820378153039048823115643931639070446480965885815031528999041) }, + { SC_(3.93773555755615234375), SC_(0.188381969928741455078125), SC_(6.13640607648798591554025485550699382065069200001562944457944973860744771549814750255632943989393323), SC_(2.659382979057494703069966954699464757525097238470377096445747377274519501906606716557844162522163956) }, + { SC_(3.93773555755615234375), SC_(0.22103404998779296875), SC_(5.878723549745325950881325643773789855133330432642049860752936878610597201845721720562660144244963783), SC_(2.852597402686409917256581279350479527320941173313101946735332401524086274446967330148844983311957837) }, + { SC_(3.93773555755615234375), SC_(0.278498232364654541015625), SC_(5.481178255521565129569394468687453829585831765426562325651074369275833614609384957263638938939603751), SC_(3.167038240297619660789587970800347830123450003718245110393206026726911597682188417889392183471506756) }, + { SC_(3.93773555755615234375), SC_(0.308167040348052978515625), SC_(5.295757076086001603949677924629188345766492964487331828222586065096255937070250552272537124322882343), SC_(3.320804905068096156415483017375939423099758283044330089455026244358365928335488608038480696217934183) }, + { SC_(3.93773555755615234375), SC_(0.546881496906280517578125), SC_(4.036034645963503635857096465328501467548258107613608553328774892624204500309813275512251935180382404), SC_(4.500703658105621269648308224690952774639379575508669732731148657214888219359284211845825204827931833) }, + { SC_(3.93773555755615234375), SC_(0.54722058773040771484375), SC_(4.034380487162329240511745492762873954745447084990269676303379361351256316351768182143295362722723951), SC_(4.502425833082914056732146974946052475017749055588675565332181874432154190710134494693593626281294921) }, + { SC_(3.93773555755615234375), SC_(0.6323592662811279296875), SC_(3.61857988981435383424759454361890575572281254968904358359979943190119662321477180424668338408482285), SC_(4.951936856753917223713244107183498106114092578459125875206546426720584202671432857047490797313985057) }, + { SC_(3.93773555755615234375), SC_(0.814723670482635498046875), SC_(2.640263214154556624985135065822774499976183203041995606620077222804712425986005347458309586021935357), SC_(6.162504274833546820887889395330518839943927249164470643465300075003369371525636984240016347509906576) }, + { SC_(3.93773555755615234375), SC_(0.835008561611175537109375), SC_(2.511506118310711189343620597280621461788506619798274934193287861636903591274743437725341346272243603), SC_(6.341219788469070176667582159955083630314438785592725120336619035851095200008881326064279274188231938) }, + { SC_(3.93773555755615234375), SC_(0.905791938304901123046875), SC_(1.982121331479413542167773934440173449057060084209857151545100391655733552409059780505599514548353337), SC_(7.137285771670346760803883472878011942794091551511519991366832575578805361582357703629061463354800893) }, + { SC_(3.93773555755615234375), SC_(0.9133758544921875), SC_(1.913603146495061632202430044378667625906641719763340751137277981316031173427771035059404361566671949), SC_(7.248615867076294805062210009853896486132454969628669055957510147306520259235121899782604056791397928) }, + { SC_(3.93773555755615234375), SC_(0.968867778778076171875), SC_(1.235749441203342479338639517888806005079940089764523656824278567245324018028423628973654513703399514), SC_(8.490196345283899149257749251053869237574935421169322171118219224052143145618427579437397223903863393) }, + { SC_(7.65350341796875), SC_(0.097540400922298431396484375), SC_(11.82821444375285783760608743609941472872967864281969273300037753841922044097529240098854877166038861), SC_(4.705839144529878187674607785354144323612019668942317593816365715215983521041956152054701700048020412) }, + { SC_(7.65350341796875), SC_(0.12698681652545928955078125), SC_(11.34080511153649760928711143464529195741889710618955561161208691315712432610412710794899548806299564), SC_(5.065554915728640496105573701027525314948644245206442424106254442496227345208920154103468817026020029) }, + { SC_(7.65350341796875), SC_(0.135477006435394287109375), SC_(11.21653244252388383289654575966770688709916494323316877106867296058730610913590229742209841422042384), SC_(5.159632611361717034903762799778097484120311788122407176225121976448416043482472307785506845792539175) }, + { SC_(7.65350341796875), SC_(0.188381969928741455078125), SC_(10.54898323429804471745403371196993703087567736440409589921710915181640168443043677099562579021927454), SC_(5.681960735344740448115245037772604947252870229760366147004618833414943868129560118017601403813693693) }, + { SC_(7.65350341796875), SC_(0.22103404998779296875), SC_(10.20063381747422780049389733609895974336322035597938825470008770356421230276186335285421213718821308), SC_(5.966257390127426961622497147790282391424125510123110857233700335512440426376242465741562719929424846) }, + { SC_(7.65350341796875), SC_(0.278498232364654541015625), SC_(9.660439939590268436606720698423541819841522269940047538334770157300537192447798295758789909423229695), SC_(6.423780026420278237200261749838215067723129632994012376897280553726771484202088950047489620025503985) }, + { SC_(7.65350341796875), SC_(0.308167040348052978515625), SC_(9.407244974364920241058817551269902735989485324930290525676463346371730523201236546935900289625389987), SC_(6.645455812015936829799825459935783024976136680596093591793773789177912992332957590297337975556107638) }, + { SC_(7.65350341796875), SC_(0.546881496906280517578125), SC_(7.661812385842159039275762799959905858955731658383662849059919581092767290244867383662608952041279704), SC_(8.311334842119552955373704185275923560508548498507102367013383135813846880539352565291392564739087051) }, + { SC_(7.65350341796875), SC_(0.54722058773040771484375), SC_(7.659486434215634190761886459580451679937984565181400380471343494145026142761015678106542369746614956), SC_(8.313728622610802730750657029131451141060786082972729460337487080145745571478783112205950546003674194) }, + { SC_(7.65350341796875), SC_(0.6323592662811279296875), SC_(7.071351104627572778401082621991324858856865712639826509023480985411675966780999596453565650447429659), SC_(8.935472593074735297916203481149108953072595227488793544221933995690433318702868009095097186121633008) }, + { SC_(7.65350341796875), SC_(0.814723670482635498046875), SC_(5.653683203336037738089460090209247999635104099542249727314456501696262803880479670922250677407460979), SC_(10.58419001459481752655511494226810758243139734253542702358541233219928509949444226133524775413203295) }, + { SC_(7.65350341796875), SC_(0.835008561611175537109375), SC_(5.462528491900321544333728562536379181045601055201809160466260248879217585507576771857597066547035661), SC_(10.82492659251818488010875904587742215225714774757498666787901038431764202089000299579714709443940435) }, + { SC_(7.65350341796875), SC_(0.905791938304901123046875), SC_(4.661031959853754768698391705666755779259866074006758542093905877560020972580911283367070203700011912), SC_(11.89034212835679183217710407294842871142066815569962633033995901007794800708031921547821370558841429) }, + { SC_(7.65350341796875), SC_(0.9133758544921875), SC_(4.55510776831161496593065717464504416204788013198388866461457712669902507452528889614763227226584724), SC_(12.03851197594705240852432780340279666035987757018785557034912980897472998034802267873596597318489823) }, + { SC_(7.65350341796875), SC_(0.968867778778076171875), SC_(3.467336638191843306954572068679534884971681828698280843552674034068756081630051039571309882403763241), SC_(13.67906243469408205868423526242213772252907043476540759575274036953084454393317182655162273000243588) }, + { SC_(9.76827239990234375), SC_(0.097540400922298431396484375), SC_(14.4105648252792364209416142925723870398950846351923774410777763413637731531230286406856598026355751), SC_(6.352970434171223554039596881213628468441380385675502419544601849304310820186870012003168223366246756) }, + { SC_(9.76827239990234375), SC_(0.12698681652545928955078125), SC_(13.86714236092989436858686636875715132411457519212826786401036309920156365298055211449467361784733225), SC_(6.769082022928333111530944549388612904831057750619240945691281627437637392829936958437480891694054039) }, + { SC_(9.76827239990234375), SC_(0.135477006435394287109375), SC_(13.72846202047042666533773172979216209581161419423382120459763585679857660770558255594807887340573806), SC_(6.877647586500867267712374639442446276279955409467393553154822539850680835207593994775613630333466403) }, + { SC_(9.76827239990234375), SC_(0.188381969928741455078125), SC_(12.98258952844648675184274838612050158771828962153073999888539016602139041543914740559702798176462431), SC_(7.478631114910906893816793579646663230304874865600064923316398391448891241010756452357744969085604488) }, + { SC_(9.76827239990234375), SC_(0.22103404998779296875), SC_(12.59271109847871144690846400455000221588787934664478120907968736169219662818383537966439175164694921), SC_(7.804575651181350395672004094804472296512808337755970826570508759165464889120707039208202532902234086) }, + { SC_(9.76827239990234375), SC_(0.278498232364654541015625), SC_(11.98715491392014206538440016689059991373043251808804119872986554079275169824813619951132359322931648), SC_(8.327589634459012260309321150135556290212526013553493888471916164235670168370634197744287324438209851) }, + { SC_(9.76827239990234375), SC_(0.308167040348052978515625), SC_(11.70289682534425720192891980774510139587823683853717738434776039639832592991108453107838840892994869), SC_(8.580370614990038339897074129919581197242101534022299009286159556441131833931235533225453748336937701) }, + { SC_(9.76827239990234375), SC_(0.546881496906280517578125), SC_(9.734756535946634406365756903957805165451781805105000472235767006615251984223729215213579961547216894), SC_(10.46904631904159626092583399515073545442241060264284272586883987311807571829316095182382452823314885) }, + { SC_(9.76827239990234375), SC_(0.54722058773040771484375), SC_(9.732122541662919880697945684191521474685662938003300712866043181451705674055850494824713556452367393), SC_(10.47174807673689826365572635933598272476721980592136418183456107235071360191077814995261542427199061) }, + { SC_(9.76827239990234375), SC_(0.6323592662811279296875), SC_(9.064977708716869141234469897722650739470373264647415618990409585978654239856882540246818645517870436), SC_(11.17246694264266550055091808988627342657979208803499184743357347388415418152237276687703784607791298) }, + { SC_(9.76827239990234375), SC_(0.814723670482635498046875), SC_(7.44616833628674753518017112491220756369103756458592894253909467727086294578114112415935873930441814), SC_(13.02196769463589095710015153016085873280003451596979905883925128529142594965930051994019912437428325) }, + { SC_(9.76827239990234375), SC_(0.835008561611175537109375), SC_(7.226508967053949840491292811490355193973301068748385110216787313072958009550838756563042168979322499), SC_(13.2911039865177441851505152083681053854060050041321505905010014106894271377054475088432922327680502) }, + { SC_(9.76827239990234375), SC_(0.905791938304901123046875), SC_(6.301021160915732239672603274832229478564498466110628983443648813263214143467683500070075229426498733), SC_(14.47977718265961712554883915859378396697948321247742010596447359838530331363806483181459699933602764) }, + { SC_(9.76827239990234375), SC_(0.9133758544921875), SC_(6.178103654914974753796797063873020317957360521437136717807625099324255260203201083517528142943732992), SC_(14.64479469427112175252937784059402107479765867811497259902730874797930144389987560027081479400962574) }, + { SC_(9.76827239990234375), SC_(0.968867778778076171875), SC_(4.905372725281246949612185947834554381474999110045505008192750020966689986262374382249963934919371615), SC_(16.46762353371676915197018232491217704145207031284511180917772791354977766865377418507272571536677291) }, + { SC_(26.117748260498046875), SC_(0.097540400922298431396484375), SC_(33.33990082384103858804815999924061085034310275317991408596746305141428649011068027471010452186250575), SC_(20.12222302582320429357233791267293572738484185665423834032956023049649193876440766681287202830584524) }, + { SC_(26.117748260498046875), SC_(0.12698681652545928955078125), SC_(32.4875867771145645789445947167149402088304086651188644609379714330023966546132637793598853589277825), SC_(20.84813623633734386096940259034878827640379586074196502977058777595738352422488682147847156322765165) }, + { SC_(26.117748260498046875), SC_(0.135477006435394287109375), SC_(32.26943078388334692339709487489401751162593529601203818618740341989646187262425647692424063131459894), SC_(21.0363705267551419804134638311706857321663193970523006561356969917951031067660308918364563278930973) }, + { SC_(26.117748260498046875), SC_(0.188381969928741455078125), SC_(31.0913615684399413529602676702134417853354304990513114238567759565079847728136998700613725411376766), SC_(22.07036282110167233976264625427889684408397543463852981557220278754094530653460871842677727639661595) }, + { SC_(26.117748260498046875), SC_(0.22103404998779296875), SC_(30.47222798886510415817461763890960344102544043169095540627307846806099034721675634950383224245454021), SC_(22.6258600242481835159040209289063431946404483124165363143433417318648440120244259761961594410464883) }, + { SC_(26.117748260498046875), SC_(0.278498232364654541015625), SC_(29.50573725334829167453109914471584743989233328846093644289195256683526407505478429442777708630922654), SC_(23.51013840099200647321872531752566278685298192598689467850775862843425746102144639359352237884847167) }, + { SC_(26.117748260498046875), SC_(0.308167040348052978515625), SC_(29.04990648800448004241493334394888509808768954434284553424472325748623310201577334258931403657765221), SC_(23.93460187440268508686438247745571092406820020886530773199209426857056189254221297455000203710388948) }, + { SC_(26.117748260498046875), SC_(0.546881496906280517578125), SC_(25.85131753575077816958987221603757055673022656278606498496706949091340823561238879307452535113731494), SC_(27.05396462325385652783916713227269767508939744633046261326519627665980319813823518802868091534590344) }, + { SC_(26.117748260498046875), SC_(0.54722058773040771484375), SC_(25.84698166890532364681596780650204987385746195519768156756969022055798159421721229420005858724280682), SC_(27.05836807381215540678019982645375342749849698121470027868926257798008013414810173904459526165435717) }, + { SC_(26.117748260498046875), SC_(0.6323592662811279296875), SC_(24.74339377253212250821444707736252648853072881666074852935267572682680406487098345833826487954043962), SC_(28.1954360302259404128030015974077624936275777608668539604726472555333304106516218919848541896298166) }, + { SC_(26.117748260498046875), SC_(0.814723670482635498046875), SC_(22.01484146140679010742518125806649830101776181517267878930550859015232421229980080556882550365771876), SC_(31.15376391882797988979152776517421724393051466050904792356452666286764433193581914411332132286088209) }, + { SC_(26.117748260498046875), SC_(0.835008561611175537109375), SC_(21.63818696209947718259805163962932931643628092839313672075094384063276124291334381714881183743914973), SC_(31.57963654870873685533101793033565521944177534670807629337716380204125585341839454596406209119994294) }, + { SC_(26.117748260498046875), SC_(0.905791938304901123046875), SC_(20.03107961192446859932047683204027308493302340944206799255366857022177039230177368297122813821109631), SC_(33.44817213492703188883370875794647612017188121450759178467056915776772158869985978165025052437272738) }, + { SC_(26.117748260498046875), SC_(0.9133758544921875), SC_(19.81494628334001181202049143085197374770748741303741820257836594356304024693875422292914356836360927), SC_(33.70606386718763895885508335847126648395262580882838685881039532496688778842423919276181984814220215) }, + { SC_(26.117748260498046875), SC_(0.968867778778076171875), SC_(17.53225895554651110130631823827822796173920570644475433814452680320849341923828386812159297469698287), SC_(36.53278129475289433697110713377149482380867325121785160705042092233938295556914903018371613798544965) }, + { SC_(41.8613433837890625), SC_(0.097540400922298431396484375), SC_(50.84758872762931257756077708280365160698576525649391550245556758816440226858108391902427383007718827), SC_(34.1016035956211416977128886832288869698621726531675863935651520593266630502880499107496518110969075) }, + { SC_(41.8613433837890625), SC_(0.12698681652545928955078125), SC_(49.78415878283274461673079764109283278399107532527107595958065221583737636598488182508003590055049635), SC_(35.03884335828063527453183203735678044939899062433263746790553397081857374851239505345467527950992218) }, + { SC_(41.8613433837890625), SC_(0.135477006435394287109375), SC_(49.51167355285024766689306226150596234919269659376528998575991699690273931946631611430406423824793311), SC_(35.28145203355297170923249420173395538448346460681592313218543269998338255220534671761402994260312812) }, + { SC_(41.8613433837890625), SC_(0.188381969928741455078125), SC_(48.03808737248691239771040121922563103370739537441924134321802427612986812979423286068143741843851095), SC_(36.61115357744698521329196110680617915909902555620157044732819449307251929048137350676942096923691209) }, + { SC_(41.8613433837890625), SC_(0.22103404998779296875), SC_(47.26215658975399961423359174263326025918145715961323569315835821237528846984447892777665259084685044), SC_(37.3235197466869339636477674708327289879518243956094948151883632822231118826556322233411669366016167) }, + { SC_(41.8613433837890625), SC_(0.278498232364654541015625), SC_(46.04875752645910937851285439652872160593011366801135787731324740079312465280558122834565050738078119), SC_(38.45478729951312004486685081875559376132740251507414897603812561568880135389127045934399780177487875) }, + { SC_(41.8613433837890625), SC_(0.308167040348052978515625), SC_(45.47553926100972654429097599466721362441665056832474180739909570968775787528150901078126749028246295), SC_(38.99666560962976436778718828502477519144467854105025250888081607522484116837186763708998173681485532) }, + { SC_(41.8613433837890625), SC_(0.546881496906280517578125), SC_(41.43494003103211650786516904185315197990778939859275113340275820925889880595037606131347846966356423), SC_(42.95809908737562684343456281834612536895409401847938166273908119657768224519866557129839900663569079) }, + { SC_(41.8613433837890625), SC_(0.54722058773040771484375), SC_(41.42943957175118163947140885999131428539035042882938929224602725973077075553911992348457343739037333), SC_(42.96366708403590436995854866013097658794509702452084139248356991110513808994276052984335104368280248) }, + { SC_(41.8613433837890625), SC_(0.6323592662811279296875), SC_(40.02722158257055949562822111527091862421294333003034940258769271809846534657194106061342566625065851), SC_(44.39934108252066839317500794711394191951382933634067753229156853255267197987185290718512815488570964) }, + { SC_(41.8613433837890625), SC_(0.814723670482635498046875), SC_(36.53987830487131128996233324629087304823439256476355659919481638609046107983436579314362010884951302), SC_(48.1162353942734400976899132295586675892676229901290016724299235143507233102173761352207392011761971) }, + { SC_(41.8613433837890625), SC_(0.835008561611175537109375), SC_(36.05598193632130620335843541319383478397988823488531788877523171381733899255620502144493621205742257), SC_(48.64928819492224693144568283522176092621929740950015988905490146751344779817859379546985354351695164) }, + { SC_(41.8613433837890625), SC_(0.905791938304901123046875), SC_(33.98373867019322860142622656813827646186558819511402294437569256316031988447582293745290243623691211), SC_(50.98255051578110882751891435960751174490350697263008054593739419666884848033941039675205204868903496) }, + { SC_(41.8613433837890625), SC_(0.9133758544921875), SC_(33.70406723459434714902881341193492063157285044945840069835197192714498105616631324908493554952471404), SC_(51.30390219052774337941995066947827945565468081234460705826677067663657076021351369301184247269103546) }, + { SC_(41.8613433837890625), SC_(0.968867778778076171875), SC_(30.73453340085556573940468808899655659820583600155378975618447793923225209255801641725856666790314133), SC_(54.81611890708030426038490784270245000476319788643657675383071629390954241753694211664284472956553441) }, + { SC_(70.242584228515625), SC_(0.097540400922298431396484375), SC_(81.70723500289145157842037391347246142755454512104072931714892269573338383120862162875704915923742478), SC_(60.00434992650556478601970905339459702091235089186352438083048981139733111022182992617618954711557471) }, + { SC_(70.242584228515625), SC_(0.12698681652545928955078125), SC_(80.34727754923494579433491456733191895273334801305964094347065873467395703454548720570639762609152318), SC_(61.23825934723536606421349257591137469365708235261711821801948033496439437255707710800018244369303014) }, + { SC_(70.242584228515625), SC_(0.135477006435394287109375), SC_(79.99847687499868858756110348785817258532948958807560103568841025628275922639035795681926768291752961), SC_(61.55721402603703456338078863070972854805018240395343215955778973557714558932716818745233772758507978) }, + { SC_(70.242584228515625), SC_(0.188381969928741455078125), SC_(78.10974303693652571131092353211609178518283472875055230233500975104846205296285161710227716678531497), SC_(63.30219387188488152941162564244961071332699748877037376043626892123087357812050538022710847732330534) }, + { SC_(70.242584228515625), SC_(0.22103404998779296875), SC_(77.11351639974206491693620712548899334720435288150453638306013530941461417725872700379556527261633703), SC_(64.23490492285467693040556756667357194310242436306337294489621033655595802806444521883499337345259168) }, + { SC_(70.242584228515625), SC_(0.278498232364654541015625), SC_(75.55318957974952875729454965595723297979560923313239713849632734884441955851045423472713920519974355), SC_(65.71315572846613170485541996611735966507512539175313776133214622902105019122652684372995868016756277) }, + { SC_(70.242584228515625), SC_(0.308167040348052978515625), SC_(74.81502156616445042065706332449686409475989735241846158378807229977122150874065383680576161015177138), SC_(66.42000263546676431993198344422786930355593538867893494306805538227936484397941370286864269632216434) }, + { SC_(70.242584228515625), SC_(0.546881496906280517578125), SC_(69.59116306205304548710887555589463810006900101678022621810000033691297106243496793304651075408095159), SC_(71.56473728957153592484504912936238288366256629935882965785706342544083558466959423130088301797706371) }, + { SC_(70.242584228515625), SC_(0.54722058773040771484375), SC_(69.58402602628486218536961078290431952252834120581163525241938018772153900509053882658875600442559205), SC_(71.57194183045325409606724519711837655408455970143153372266760285988410323504621666434490361982338523) }, + { SC_(70.242584228515625), SC_(0.6323592662811279296875), SC_(67.7621629638802043255387840895656506436219197695812744343040904601729644632470749228784751785959567), SC_(73.42724418816436742735520693828692202645396314774159579770782953985601362923273491433470727733676251) }, + { SC_(70.242584228515625), SC_(0.814723670482635498046875), SC_(63.20879160261721314871277680959176167922363581809920055480950487453391098131195688221712718944562829), SC_(78.21001243614165089790180640846724705455150685824798382235126918483053883823362652726070293967124073) }, + { SC_(70.242584228515625), SC_(0.835008561611175537109375), SC_(62.57427838827408590968673785000161156882034987738192925501658339636646812623460658091802486902696341), SC_(78.89364007728315701156486534231881684860202537479559914918704222509080148609099581473197587138764236) }, + { SC_(70.242584228515625), SC_(0.905791938304901123046875), SC_(59.84897823120536758228793713181066348745647947188571401233241885397089057166624430932888773614692555), SC_(81.87968267135975731669594412405531572762004190345439432047508647885748871772014357679567149745535902) }, + { SC_(70.242584228515625), SC_(0.9133758544921875), SC_(59.4801295315447293614588299794282654280973225257702290558341321666386442221246893840797656389323327), SC_(82.29015904890572796617479300320698359761749139519381871843299159257474786332545969307611311806583243) }, + { SC_(70.242584228515625), SC_(0.968867778778076171875), SC_(55.54722922061878085352820690959216410167945205771185524530509593452176492622846979424482262142655786), SC_(86.76484441850837932799813405243124499191907809635724440594504685729966818206807157491043063479917747) }, + { SC_(198.0442352294921875), SC_(0.097540400922298431396484375), SC_(216.8867699997764938588709237179690855450299344242071533206984037137387613603218157496431032342441646), SC_(180.4280267928622902546487519715989840184517805354243459143675386886019259745156758696906560334718378) }, + { SC_(198.0442352294921875), SC_(0.12698681652545928955078125), SC_(214.6443096712521349200149407644337710586986791735906340355417342358772964518499054072082593107782584), SC_(182.5445750166871078537656641592134120020065261293238238286204401150898139589729057825464629671911012) }, + { SC_(198.0442352294921875), SC_(0.135477006435394287109375), SC_(214.0683680005254290446401506986479679848108373519967281865124708665598084663114628998935585231815015), SC_(183.0906999832062858696065819845330081055212843202376608114903967390170498466619605483707176469085653) }, + { SC_(198.0442352294921875), SC_(0.188381969928741455078125), SC_(210.94390452043755506094653574101945970713663634390288494610643776810856469740761667456866523260466), SC_(186.0715350616121428105802323126657915660079409513576084918744519528225781149953430959820481405880431) }, + { SC_(198.0442352294921875), SC_(0.22103404998779296875), SC_(209.2918789001510294284927642347753747209012615247241852419472169544362566269841608631607596603822532), SC_(187.6600924271507608683798962315155735085393647819537012643381171138318877981934226135272418705950625) }, + { SC_(198.0442352294921875), SC_(0.278498232364654541015625), SC_(206.6987063672509871590999543631770702792984595822508802827019181313842764788717581705822879095124016), SC_(190.1712427172873241595357641048089971649977527382443794419338833044911074990309676168427418277365432) }, + { SC_(198.0442352294921875), SC_(0.308167040348052978515625), SC_(205.4694359688433272635751138705693672559872491518158048884305639786930933375830352231403389826368136), SC_(191.3692103348198595083987895395899902033187494987667754959475056271822714921475350833653686615221077) }, + { SC_(198.0442352294921875), SC_(0.546881496906280517578125), SC_(196.7224301503654903490425281854633049768162293824068073725019129508873730270636604051048228596809632), SC_(200.0371332065500539650277661878068115106715261710999388648587449103707397966289696258293250571798921) }, + { SC_(198.0442352294921875), SC_(0.54722058773040771484375), SC_(196.7104201954411636690934524225561231612721643538627675575202087559097657102262210922969132159520187), SC_(200.0492106349809845975160161223675834837569994126997708684959643263409046301527247031419638266939922) }, + { SC_(198.0442352294921875), SC_(0.6323592662811279296875), SC_(193.6390914267177598722267662122769228341652365348420873959564584660799588471481389926094322470686288), SC_(203.1539623516991871112392850734120452314260354186413346378908110384506347555496797268467948200781642) }, + { SC_(198.0442352294921875), SC_(0.814723670482635498046875), SC_(185.9122765671626576556596500283729027900999846445684488514991525411394804317096117986457165947734265), SC_(211.1100247282177863329882712616606876330024764676162689531184093691946168522511163771127329169559182) }, + { SC_(198.0442352294921875), SC_(0.835008561611175537109375), SC_(184.8295046795777415832962017161269470841798306071716451818635684052726469718977942115350564911813712), SC_(212.2418705986810544523357733034441467384970464702585230878604420080926370556263779323641782678965857) }, + { SC_(198.0442352294921875), SC_(0.905791938304901123046875), SC_(180.1610802340863953553474270105056985611869808295358348665892735768026728417526263091562725955362706), SC_(217.1707725951942304832889243038383443173224565788045343901734997365711985799551921419974416219383253) }, + { SC_(198.0442352294921875), SC_(0.9133758544921875), SC_(179.5269608634142846763131536412786077350587833013935598887943189762788735737237677792031898028974388), SC_(217.846469518812062432820658109178275910352598081827681252385275500457225403399450867889741799667375) }, + { SC_(198.0442352294921875), SC_(0.968867778778076171875), SC_(172.7297908786068673911462179186720819033392096461399228420718442674068119001451094660335503148592061), SC_(225.184574261862814737123791988434465113388134281819126131493257124682435292693369844606141854562684) }, + { SC_(327.2955322265625), SC_(0.097540400922298431396484375), SC_(351.3458373055572414062306852147244918335751681786471255175122148822442375715415605195848963906007157), SC_(304.4715332448509165666582046764507286212060841035183523072254419487762127047530715653179698712802386) }, + { SC_(327.2955322265625), SC_(0.12698681652545928955078125), SC_(348.4805325994454172919461950715138880832542268629104498505719326930174318289885056946360589850437697), SC_(307.2109554239725217795567051301355189024655486411578672970243223201165324010339467371531733869114779) }, + { SC_(327.2955322265625), SC_(0.135477006435394287109375), SC_(347.7442757619503455682323786610352234484642565124616886750483858432358448761172894082993552688007067), SC_(307.9174019398675688497576565383334627767905914143984971730720459864621899654615651877102408004408546) }, + { SC_(327.2955322265625), SC_(0.188381969928741455078125), SC_(343.7476024091150756577550508368348020041579849028724812974423516993965830940724234083728576261222), SC_(311.7704743046093440171273674701091933374884541396092014561956355825543576894501431717839815049998679) }, + { SC_(327.2955322265625), SC_(0.22103404998779296875), SC_(341.6326743519805468962770195209395197212860121151912852843892283866958450188880820226413057291963398), SC_(313.8219444641881529741770387999566929148752971763191694610516628020381225209336397496001073914228608) }, + { SC_(327.2955322265625), SC_(0.278498232364654541015625), SC_(338.3104310241027890919345858676960060106396233418208821209352091170986177757673455110268364032363044), SC_(317.0621773407840566912716247342552130802428081753718624671385974171874612493026707899335526097729001) }, + { SC_(327.2955322265625), SC_(0.308167040348052978515625), SC_(336.7344892967135415513428071400898281371905306624919900704155784876170112463414450495221929875240247), SC_(318.6068203139390226027678091369578652714663131021814614017885478817695870608847094367126396649116299) }, + { SC_(327.2955322265625), SC_(0.546881496906280517578125), SC_(325.5003915036225705112414885541395041003701107116559562250780205400029427509224484693670865654181379), SC_(329.7618441687552009811216230210521198645353916458832470249919536625188186056154994248096416593132772) }, + { SC_(327.2955322265625), SC_(0.54722058773040771484375), SC_(325.4849415989607721525540923944237090132522055423295845919610388558680349482161790658128682798400122), SC_(329.7773615399484696280344203977612034847245879152380086025992964648063287811569840188184930767461425) }, + { SC_(327.2955322265625), SC_(0.6323592662811279296875), SC_(321.5315840916234076099959456555847371644719281050423219315602477080271534950280979636232773879061473), SC_(333.7641383909217384474980756689710702710831104432970583358205768555569257558168239200554031595033577) }, + { SC_(327.2955322265625), SC_(0.814723670482635498046875), SC_(311.5647339619416472927045469444391234887022110742212858667626276068046956081720107046099682467869453), SC_(343.9602032809021931786708208567718918584981355777918324381991304060807314365429667615301925649204153) }, + { SC_(327.2955322265625), SC_(0.835008561611175537109375), SC_(310.1655834791022690835564651968048039143846756645510954987446660818728748765513438763355347130927622), SC_(345.4084189104732089179770981827813075634901208995142109486824633283828890779192320344757538836849112) }, + { SC_(327.2955322265625), SC_(0.905791938304901123046875), SC_(304.1258528725503928648721616776709011058987164873150539155622154945930149398559519880423784716266147), SC_(351.7085693813198830125279009316843101818928212713495273121457394600257947176728216271389168342188087) }, + { SC_(327.2955322265625), SC_(0.9133758544921875), SC_(303.3045467267113521360407408730096224257009866942497716581605719632671174193788615634672749554766729), SC_(352.5714421904149471437125036181369387000862683603744311590367422402334533803911842545083914664269368) }, + { SC_(327.2955322265625), SC_(0.968867778778076171875), SC_(294.4866279687565860608887516580031078066083674400482488102182812454191753219929634665241636070156301), SC_(361.9301117273610688139103391284813467920051798481142041733051675879314538796398562702681558827541096) }, + { SC_(608.4515380859375), SC_(0.097540400922298431396484375), SC_(641.022648088358236091929192360791291744187885746917672053329187321354975180516223188111952099107938), SC_(577.1067197102434102658189812061615222768395006019829711065419105714139352228529356389493246853999084) }, + { SC_(608.4515380859375), SC_(0.12698681652545928955078125), SC_(637.1383176120511966097558299310870455075610771790825712219671456841829440785038809996641792307935837), SC_(580.8651886166040325650443729252803956263925723312333075429140679200143933183336550454562049615365436) }, + { SC_(608.4515380859375), SC_(0.135477006435394287109375), SC_(636.1397679655600507219537180895093459293717158863043927173762333601565338336571279361490778067700379), SC_(581.833932465752693665290157721379976374111015710443841024655602170309746617451900688848426271945404) }, + { SC_(608.4515380859375), SC_(0.188381969928741455078125), SC_(630.7160419637329981452509249430200937937292538082039665167384093760645546528916303080704258508495713), SC_(587.1140769215408184269478289914261548542366507901415178407370181772567838979201548002301036047122119) }, + { SC_(608.4515380859375), SC_(0.22103404998779296875), SC_(627.8437288299239577503366877054396900122853556634058096602635211885503543496699197528305522929892679), SC_(589.9229395087973630606126279179930823001284541129254328504830893976841500707993521999870354772638802) }, + { SC_(608.4515380859375), SC_(0.278498232364654541015625), SC_(623.3285882814008066577006050009706371334624447991009406329202245170558589582095768874497989195740786), SC_(594.3560779804170005236807925607568182700410909208228307755437007001886508166854269573545189526072339) }, + { SC_(608.4515380859375), SC_(0.308167040348052978515625), SC_(621.1854210084759427355528414803598908075590741061109293862850277227838489927788577359668484393376332), SC_(596.4679493605775786887237741782165172628959512871451159825355332289552533930040749558511186064542) }, + { SC_(608.4515380859375), SC_(0.546881496906280517578125), SC_(605.8818731682726645888400533764095355771571315311332175904460688648094003629418611026648548926511819), SC_(611.6924296687384590739907105677410851717524876695701143259220643441629047935056819347501671476903968) }, + { SC_(608.4515380859375), SC_(0.54722058773040771484375), SC_(605.8607947080665863933756489348809235646181863304910108929831062116722768685014736068076449001414319), SC_(611.7135755905127347674818100517657292894350831998981272074621079816967665658872882446472452239923428) }, + { SC_(608.4515380859375), SC_(0.6323592662811279296875), SC_(600.4642387696996761093583299024916314146965568400122969664686607885656834242868778450999135397338516), SC_(617.1435483084643313770994629047987135583816596935941664407724124866570971268994974088947710824197703) }, + { SC_(608.4515380859375), SC_(0.814723670482635498046875), SC_(586.8322861852037585966194943394530021540391274073476873259634445306496370833922665914475546439320388), SC_(631.0046923889258878567535559532241022934811563097253134380289830262047072818017125802499752255705786) }, + { SC_(608.4515380859375), SC_(0.835008561611175537109375), SC_(584.915502271994854645083910096611759992358586304546756930645173571957360148734661526338057238411958), SC_(632.9705351804093583366688765735502466987364539428029284347264249934501150484015548505498780109179533) }, + { SC_(608.4515380859375), SC_(0.905791938304901123046875), SC_(576.6322299461169346318272702317922892583951376100702032052520302869250244878139120971528241710854905), SC_(641.5141864867748219273081097564620312756309405566318282939738847683679891482540954695736931630019532) }, + { SC_(608.4515380859375), SC_(0.9133758544921875), SC_(575.5046863471268610330124146566672354479632601777494536001966325481286429046303973048973127245333486), SC_(642.6832890369547874525921675538688798891958885152122612751518433957491619412135416353762957860287378) }, + { SC_(608.4515380859375), SC_(0.968867778778076171875), SC_(563.381051349770210444415929474825958146269686177352122601648824881234332630485902279510780610066527), SC_(655.347544679444166682809453921908338081812791889009510207772625870599778577762723031074200355380006) }, + { SC_(1584.006591796875), SC_(0.097540400922298431396484375), SC_(1636.18616124072132404306529904918168481458713616730288246119646040168628226487411416577426953678142), SC_(1533.053303532697840424614498629338572467146416221595356194444731084945502194402184916109672707786329) }, + { SC_(1584.006591796875), SC_(0.12698681652545928955078125), SC_(1629.956898819518018582640940209721826972530721097100926192055403614829753653950749694822422091918194), SC_(1539.156719416718283410266833993913696662408591807048591301158895812798541976317014449011609686771494) }, + { SC_(1584.006591796875), SC_(0.135477006435394287109375), SC_(1628.354767452109159626516209267702256186233865007676016540021513572934144687542059787907335454649768), SC_(1540.729048233069559073165596030765513069927287240444068362701905219663854348653129927705462273534516) }, + { SC_(1584.006591796875), SC_(0.188381969928741455078125), SC_(1619.647102293724252570108398195955104988721079537174331871930311695544576789225487211520716466382423), SC_(1549.293145800832540535885803696126135747308617843336628800741329900396562522155990919377102450505005) }, + { SC_(1584.006591796875), SC_(0.22103404998779296875), SC_(1615.031866803023948900533356198964609388577045942878653567724793350069045336904401664534192576659705), SC_(1553.844936024330152583297870028265598172402440241704712671845508989983437430098194838270704546363077) }, + { SC_(1584.006591796875), SC_(0.278498232364654541015625), SC_(1607.771558808198943618665349990872577226620952732923596388244490204448915599582250914550385946010841), SC_(1561.023247959319304759120987840546396581352786787796960427598843007487000961279603548560599445079336) }, + { SC_(1584.006591796875), SC_(0.308167040348052978515625), SC_(1604.323047534673736560488493143025256638472985830400832380669765470592671145136457471686870325246903), SC_(1564.440465396953075065631607877466694195985503739415010488261207535487176016478902943220124171497894) }, + { SC_(1584.006591796875), SC_(0.546881496906280517578125), SC_(1579.654463509233606711155267157909532320647489004918620731811578357111952211986846943644079431280252), SC_(1589.029986497553225745119599240438652866804113102020719622088997259239741276838671219360866513448974) }, + { SC_(1584.006591796875), SC_(0.54722058773040771484375), SC_(1579.620432014005873751491448459183064231782357776940773545101751344506085817940463006320990557044973), SC_(1589.064085450778156736101464284598485885619420105663607746864173473826747338218175267557127880732413) }, + { SC_(1584.006591796875), SC_(0.6323592662811279296875), SC_(1570.902641408860442304912612866153900835843515933333655424261914626526411537250228682253475584807473), SC_(1597.815290991064021746673395374661389850479622310692312253850380570187147357134915704693110703762541) }, + { SC_(1584.006591796875), SC_(0.814723670482635498046875), SC_(1548.8363473184752695598449525840183882730683980568968124494229884464437921130963647285171958165226), SC_(1620.110759861592793143936816492952160620996646309400992993057662731930141764479312353912518023709925) }, + { SC_(1584.006591796875), SC_(0.835008561611175537109375), SC_(1545.728386893342861260266105515323865701625663558190603060590752527214654544861759653560337471546282), SC_(1623.267774664636327469375058305143892504528843787978678262612707085161769222775205356733375409293463) }, + { SC_(1584.006591796875), SC_(0.905791938304901123046875), SC_(1532.282411783278742579322491429020848660483041675940581350241574996724846171974801959137639191077003), SC_(1636.97409942341670114755200677641387829537037920381992601376728045570427375954514415114655963962453) }, + { SC_(1584.006591796875), SC_(0.9133758544921875), SC_(1530.450191783583474896466854482563081853851486522239973716768395405075897136142890426776759621810284), SC_(1638.847872844237702149647988101211209474226205855815515581260535306924858671217338799318565327378729) }, + { SC_(1584.006591796875), SC_(0.968867778778076171875), SC_(1510.720206718709451392621643036990376392205660382068574784192806110121803515108802249281510366378873), SC_(1659.118385320999663107926512119481242116697514738383600591372268216955591233909058285156793142156256) }, + { SC_(4081.4208984375), SC_(0.097540400922298431396484375), SC_(4164.80973031512388159466663366844904343432869453832506602242106183241251671227760448244736657710359), SC_(3999.258343736642504587446154812069656467385774299237318283381403325698043942076424087966857377236085) }, + { SC_(4081.4208984375), SC_(0.12698681652545928955078125), SC_(4154.848303749601483885600709319139741875213733099243982923140943864120862530918065402212453299233475), SC_(4009.093929503746392084957889413798888975445649628901092561923595209933054651539000154235299128739666) }, + { SC_(4081.4208984375), SC_(0.135477006435394287109375), SC_(4152.285513928028164216105364377505212731304490617834590347219089497778295043469344270908635764187156), SC_(4011.626918013747491597920788929743386804948801699775549501229264615286824009656312472618511418720204) }, + { SC_(4081.4208984375), SC_(0.188381969928741455078125), SC_(4138.351108948657212301891953219910125155549437838445124199714620554022373999166540080152489657105504), SC_(4025.4177607320468667568363915662475760120803785812929685922761092128347814906232577840435331452293) }, + { SC_(4081.4208984375), SC_(0.22103404998779296875), SC_(4130.961805621813089677127965461306672928237108260379696180019437757391298467620930091783886530827855), SC_(4032.743620808486834012109493608434202506409247586681529390650175149875171289247737732620407672691769) }, + { SC_(4081.4208984375), SC_(0.278498232364654541015625), SC_(4119.332213887684908923150605439127920892858183044938572759076288943585816184710552796483031638503428), SC_(4044.291218782003186642267208088490352135039576855857948638778939664057935213844238298508844672010232) }, + { SC_(4081.4208984375), SC_(0.308167040348052978515625), SC_(4113.806072832367671425803645091977332145898085250234770996608810519608715018472333506291722350389806), SC_(4049.786066787588861170912190035697335932844438229948965621535356409960990438319395111641461586428672) }, + { SC_(4081.4208984375), SC_(0.546881496906280517578125), SC_(4074.231697026389091695417858616515583560958302803267968701835027820278409397569699679161484085693514), SC_(4089.281381430156733148745102691192294545307428081465292114891806621235087716587578511306991420717209) }, + { SC_(4081.4208984375), SC_(0.54722058773040771484375), SC_(4074.177048903722987226307237485296696525502643207603622973418281332241690871196512835603966170993615), SC_(4089.336097009454430160725251536947208479718648224571394903194424018622389737039543995864090338884541) }, + { SC_(4081.4208984375), SC_(0.6323592662811279296875), SC_(4060.17303966288722592697217710081067681674709696958770130600974969681236886570185302776233290336846), SC_(4103.373520480163900312546105803241458972551470057057100608620205427478696347311387600786873286972741) }, + { SC_(4081.4208984375), SC_(0.814723670482635498046875), SC_(4024.682418114815871409401651595637806478357542318968541322603400135186521348662941359650554366799885), SC_(4139.093310420937593610343976451924096922781445879139237235167602573586912038000658330620533408801011) }, + { SC_(4081.4208984375), SC_(0.835008561611175537109375), SC_(4019.678573199243121585798063093577497223396744052940747332062463235147084796449453195296336862254174), SC_(4144.146207995543512083301635815249402677350835381588718481766335351736414120627338982365070514548428) }, + { SC_(4081.4208984375), SC_(0.905791938304901123046875), SC_(3998.015707493737481722936807651537597041876441514029798598639692744103014786692675738079903304625963), SC_(4166.069412151186737013845894639109444219646242453767753462186360654290139408485034260765488922351391) }, + { SC_(4081.4208984375), SC_(0.9133758544921875), SC_(3995.06194845757464489019358850704394391831108071505696718058660603911275763472606412295683910279123), SC_(4169.064722497789214901081201895642371777216175290982606939140233903109130377822073864240796399024825) }, + { SC_(4081.4208984375), SC_(0.968867778778076171875), SC_(3963.226238510626090027570498742066215155757875331520660054051707419114367920397446919437298567681525), SC_(4201.440924289725591612374919078740248603669401464931264657249777908344314361913683850166554623648272) }, + { SC_(8017.9482421875), SC_(0.097540400922298431396484375), SC_(8134.580997388667477561705420100725328396365207359918665586460158095049474494708434471688925823084157), SC_(7902.541762914811970314211999746373443894863807848764794328315623793389838738001660651941281011434622) }, + { SC_(8017.9482421875), SC_(0.12698681652545928955078125), SC_(8120.644123041925063365876385879290454906099307301356768188824911898719459704061019524702071806082329), SC_(7916.352798250364870899533560980165508579152382494715719488108831070335491894693692569725418280623521) }, + { SC_(8017.9482421875), SC_(0.135477006435394287109375), SC_(8117.058051543911074880559223494830743775039934683707386985722148557177855732869915838708701336807789), SC_(7919.909068822844978562386905104120773309699368209423101522443364203969775103871619659210158053428811) }, + { SC_(8017.9482421875), SC_(0.188381969928741455078125), SC_(8097.55617396756076440044131709887620721754266540782867799192436975262535700223706743038687564248251), SC_(7939.26738579814351099899021847257830124450889805268481718054205653681885250508420974888473127010211) }, + { SC_(8017.9482421875), SC_(0.22103404998779296875), SC_(8087.211952566802327089642174759857454460974405850695362830594554905045107249286123142601786520062252), SC_(7949.548164576749736951242268220791553668178068161629438582084174149861225424551099572420601696901631) }, + { SC_(8017.9482421875), SC_(0.278498232364654541015625), SC_(8070.928220637878396747385142967932026205882433538672072578245119606773871192609477783387530625601486), SC_(7965.749903461360250075117818332888356583303822072987358115267067461589259661111980175987737522643674) }, + { SC_(8017.9482421875), SC_(0.308167040348052978515625), SC_(8063.188995026142187593657733514912118288180422904012608055229571359416535141180721600491318791863953), SC_(7973.457836268306357272111341982683504712234981598372357028919012833395056553521412627677573407370773) }, + { SC_(8017.9482421875), SC_(0.546881496906280517578125), SC_(8007.736986263124078210686780528958447940987450153171190977257334486400339216550396831702175495429065), SC_(8028.830784416773880143660806401912383229269548184225101836201617834556265974409436264050652409909329) }, + { SC_(8017.9482421875), SC_(0.54722058773040771484375), SC_(8007.660377322158698717680475905621769584492814551586692390677687667741873589553643603354789612050049), SC_(8028.907460813945292355484846558147262392050834729076516527626559256986008925939686728112027708110522) }, + { SC_(8017.9482421875), SC_(0.6323592662811279296875), SC_(7988.025493685224016652750193069780003844624242361100296732335307799407648000474767489946201955687325), SC_(8048.575758460982096664247715002567299069272229809432007384579164159335557799147089408360257475662959) }, + { SC_(8017.9482421875), SC_(0.814723670482635498046875), SC_(7938.235340328894296003494610569291128896876468120582431382519990428132024250423069817628244486033303), SC_(8098.595078220071189079900417972291896868940318419987803146773305544191003922185190677072613578377164) }, + { SC_(8017.9482421875), SC_(0.835008561611175537109375), SC_(7931.212016901570388356504749634346581624732243278756791191816869426026200711546215985642350338813849), SC_(8105.667453771019184405186919380081742116350370212986329625573950483227615922272570550529246360525464) }, + { SC_(8017.9482421875), SC_(0.905791938304901123046875), SC_(7900.796632785216729619041231709398013201746973179045641457419948412251010433680583292687005047746755), SC_(8136.343172849795123126407640816238212368649583820322350673781265790978775885534093264044182827281766) }, + { SC_(8017.9482421875), SC_(0.9133758544921875), SC_(7896.648231210388635721789230567964836395036794818445262932406633603353926175632783113358764252945171), SC_(8140.533125077776992956578419649920269687449129308036378627895148129612581444682199759840944931837049) }, + { SC_(8017.9482421875), SC_(0.968867778778076171875), SC_(7851.917830671838672565549963803467188367333621614310943181004386200530101359178987782102363602568163), SC_(8185.804006387489464895725304849296455790875148197665635147671414463249319574520134526871983487982858) }, + { SC_(16355.01171875), SC_(0.097540400922298431396484375), SC_(16521.32643453776344654479113292701464846101596871418246487107709163166378216583879741887539158295709), SC_(16189.9232782306300058829047368501769083996266775916016794956993511561273352424247813686604183922167) }, + { SC_(16355.01171875), SC_(0.12698681652545928955078125), SC_(16501.44840225115683149134599359124212070605587073625543824794808834775385614846339963613836479323449), SC_(16209.67547245066680726457896402592183348271203905896487462447905892907961970374745672004290623721066) }, + { SC_(16355.01171875), SC_(0.135477006435394287109375), SC_(16496.33307333544360388934329483765819788362813687314090411239760847090528833560767286038016311171503), SC_(16214.76100064488699973587543423183637084498413154000662362890489200534162046566861461303885248556461) }, + { SC_(16355.01171875), SC_(0.188381969928741455078125), SC_(16468.51080162452772953376174746488721271288290068177986196206844324535165727966776345420788753827906), SC_(16242.43971263218045015564031234122964329535523548294236569691334633892347720576934339769413009697673) }, + { SC_(16355.01171875), SC_(0.22103404998779296875), SC_(16453.75055316027942842503760513330522896602155736834609382640579016584782059207563427560246574956291), SC_(16257.13651880636239475475721431018464873805257031548150424476237163740508732984276088084873763628127) }, + { SC_(16355.01171875), SC_(0.278498232364654541015625), SC_(16430.51135757798972551295401279500018301232365127492908502064959714113867023747137215042759204330831), SC_(16280.29372172297784816760893004544278807966240735687725456848031105517743853138456928062305753266575) }, + { SC_(16355.01171875), SC_(0.308167040348052978515625), SC_(16419.46474593277792861159529800049127186739928047338104010198379991848737445715580507387935398224758), SC_(16291.30904069288109797113143930282684356579788540117425924147193267923747698817215670204060869103719) }, + { SC_(16355.01171875), SC_(0.546881496906280517578125), SC_(16340.28408942386142758289474439564684682283723730323713287415709547136463557561826716301016129839631), SC_(16370.41063687739770968204794858508411516314935914079696963183830508095023680607058128512213817755046) }, + { SC_(16355.01171875), SC_(0.54722058773040771484375), SC_(16340.17466069056217028944539174171189207382895568480587887059120782071992392495527959367613945423429), SC_(16370.52013306667802344470526500048521494969131474696576810756052858595957468963101658449651116958698) }, + { SC_(16355.01171875), SC_(0.6323592662811279296875), SC_(16312.12460343775104601525683562156454153601927827059983559908346347661478519417937787737603029077644), SC_(16398.60360421340860069873639100672138770138924997019826639099123396913530368058389881157056626122267) }, + { SC_(16355.01171875), SC_(0.814723670482635498046875), SC_(16240.96425482972812902054552370917758823751231252026333656002556604758997684687722035257726713286025), SC_(16469.99311817229551369511971508257087283469961934745672924458763429813840181386740694314171553909172) }, + { SC_(16355.01171875), SC_(0.835008561611175537109375), SC_(16230.9228903037153965834813441508690579323093956331186124853565331743909669585246657221502670676359), SC_(16480.08353453892925950744875184551043419955299539477442041732479627547053771805439094369663548810416) }, + { SC_(16355.01171875), SC_(0.905791938304901123046875), SC_(16187.42719062496053042940902367510296946346005782433913708518126081514786755912357002988663473365749), SC_(16523.83956733668874775776513159518241539596650848548844963803293931225600223597386879766865603425243) }, + { SC_(16355.01171875), SC_(0.9133758544921875), SC_(16181.49344305047980062099266881062371970200117808181845463244579170581605944151542326498035149813298), SC_(16529.81486521693127973064705423543271465180497325245583806980754888437151710807218071144666299186728) }, + { SC_(16355.01171875), SC_(0.968867778778076171875), SC_(16117.49249805215154913274915531178224729859464371893849316568472637824454008808632335164373941772991), SC_(16594.35628513401538946461353795014800717480446171474522092088199255446509411147021023291447057460433) }, + { SC_(32192.734375), SC_(0.097540400922298431396484375), SC_(32425.82495293049792395039802542641339589459790572089222344428663682001744429932609194384099363360593), SC_(31960.87007202550314805704320644909550100467437823108025255042853041901382414778055756800098665755799) }, + { SC_(32192.734375), SC_(0.12698681652545928955078125), SC_(32397.9616220057850194815242476914617378821569407177891509205855595521374674586442764791341014748141), SC_(31988.60756533058741825199893191888330414404883199457873279406362518077917335921737528822813658053989) }, + { SC_(32192.734375), SC_(0.135477006435394287109375), SC_(32390.7908718553793270672544131052181148279668451032828053782164870190310958731309716976698507019268), SC_(31995.74851485604190380036583598274150164984504647266175837577337920090208769480851988503628467572172) }, + { SC_(32192.734375), SC_(0.188381969928741455078125), SC_(32351.78544498920440734235353820686117735636326411360993019112203345213394520211596389987837370346472), SC_(32034.61038241375562513019675322967521689870191907559675111525720651014556276225893560381751961597877) }, + { SC_(32192.734375), SC_(0.22103404998779296875), SC_(32331.0897634209448410151523918081622209727182666922041847975891806189146493220354266307529906147819), SC_(32055.24262184908060028478208548424470760970658828458451430813634969941997383941408390279030306803327) }, + { SC_(32192.734375), SC_(0.278498232364654541015625), SC_(32298.5019599122608899162324169522681318489419473882954403893402387349660057876853080789109808710495), SC_(32087.74843287125267053977066098396517446093027603677239987122298433278177223124555632486284422709352) }, + { SC_(32192.734375), SC_(0.308167040348052978515625), SC_(32283.00999911208388410702698271865594316323366433765636620165807103723316402878862335009270945621816), SC_(32103.20910105738949856220393077334870111931526476090179529659753584025012217684411424383789357013257) }, + { SC_(32192.734375), SC_(0.546881496906280517578125), SC_(32171.93643198380995150780818333179951506375943179563199538238314883715455771254411723233109050663908), SC_(32214.20360799856032288463489645633736324070439038824100567544575673084592934924336600218113736716156) }, + { SC_(32192.734375), SC_(0.54722058773040771484375), SC_(32171.78289122135135760951549721123944957400207912792666490555611501872707536713438916894744600180337), SC_(32214.35721621689351469017050149732549482486267563464043834637643521367880915455386578253496390317305) }, + { SC_(32192.734375), SC_(0.6323592662811279296875), SC_(32132.42227018556572622864952194458442327989185606143548655417041666389854084006285276511644352632268), SC_(32253.75125109162146552619835560007251284041251845717052535328975510226097677992410906464845485577538) }, + { SC_(32192.734375), SC_(0.814723670482635498046875), SC_(32032.5389491904466952956623772352240238214958166620227223144989042106941769237401295252813122237434), SC_(32353.86373693987429342941733694189721601541946271494739962134671172621894231513254409837115187292622) }, + { SC_(32192.734375), SC_(0.835008561611175537109375), SC_(32018.44113899795613803729783445621001370364238949502244875045039107530118034893324437861180224615303), SC_(32368.01059883908015165260374631786612616014578234166151117339573092178706893981431433636843495779537) }, + { SC_(32192.734375), SC_(0.905791938304901123046875), SC_(31957.36464975499122412220937065890370586204119213288955609760532680034867149408278025424492055564263), SC_(32429.34742032884155772455287730939393255755082744519092677666977528714809147612399269569455707657653) }, + { SC_(32192.734375), SC_(0.9133758544921875), SC_(31949.03128386695925460834169884369803085925554596380258521917700460949724615657120928055744920370048), SC_(32437.72233635827106809172377426644477809105281105952350054270460185353992021770682610894069664290817) }, + { SC_(32192.734375), SC_(0.968867778778076171875), SC_(31859.12954446904998533712672994010438882018647466592517391780601370883831924807031311352184443104575), SC_(32528.16454790603467136951893051785596757247216314755180213045437382597822932026186236049013817800186) }, + { SC_(64477.4296875), SC_(0.097540400922298431396484375), SC_(64807.0505427630929914525864172477763838207066557118744603812989823067100092085190775552287206316464), SC_(64149.03510703135936734127349990647229298113055287970500075139887493497336977222497286781051406615455) }, + { SC_(64477.4296875), SC_(0.12698681652545928955078125), SC_(64767.64378227641905418339947177122474414473211244751248201062699093524574938600194411955681358390047), SC_(64188.31603012950552205012115592831882847827664692923005500535728313449502599311842579197023206118781) }, + { SC_(64477.4296875), SC_(0.135477006435394287109375), SC_(64757.5017449941416871237799136670686472819522026976447570016883382044464880061167958010891249241271), SC_(64198.42826683675105802890591387216956003460211292892927063840120558498714987614044374397266122383897) }, + { SC_(64477.4296875), SC_(0.188381969928741455078125), SC_(64702.33010734999943945134436233584289208178747052764931325494987086622179457700826617749178398735683), SC_(64253.45634538710313911520979974557798212415112876103681392160927039065967941948163953314798121102414) }, + { SC_(64477.4296875), SC_(0.22103404998779296875), SC_(64673.05424538304980484178544174186230624107303416681337825040820440019356932976635824050232726244945), SC_(64282.66876530236849254501959280812844322582215348694070522166266571889532597305950369134084443277842) }, + { SC_(64477.4296875), SC_(0.278498232364654541015625), SC_(64626.95222026643859674066531556676981814703266619788616447580821308951898696860157275874283861680294), SC_(64328.68879802511059531303575436102976953998363089768278638964661051053871570277458488381637174394599) }, + { SC_(64477.4296875), SC_(0.308167040348052978515625), SC_(64605.0341216983781599168282973868471683748578110647908371593784160764622091333430422020815904075839), SC_(64350.57560401081226936802491717219195961608613834249399167521363480873301834071023703240372683172769) }, + { SC_(64477.4296875), SC_(0.546881496906280517578125), SC_(64447.85657672009685126510895215249339071076823082130700031291419722367883089873107871613457405965164), SC_(64507.67408887298626992680448584116502708156383048098024048497428002815336690551655430566386526661864) }, + { SC_(64477.4296875), SC_(0.54722058773040771484375), SC_(64447.63926817753910356149490644675066845186071066892486758663609294179965377073850119925895759229989), SC_(64507.89146487136356565474895096912259493364142820636729226718688671438335473824215726356323864179445) }, + { SC_(64477.4296875), SC_(0.6323592662811279296875), SC_(64391.92824273149626537582416005742713427764021382223388084035584573321398742187221807591507828306315), SC_(64563.63590412792006608434648954051791873041475859408934713310893465818670188649997352376336518696343) }, + { SC_(64477.4296875), SC_(0.814723670482635498046875), SC_(64250.52337839777895074462370236729595001445475398503820146283182620246598383130948687130376544634925), SC_(64705.26993305740063094242233538163188216037780023788138853293761365022683607438998646442164311391428) }, + { SC_(64477.4296875), SC_(0.835008561611175537109375), SC_(64230.56162730248463956156058772066253658908150155263067786972985400825928192397796735295909572743749), SC_(64725.28073579017019148033368050361514985576438786423904478503758765518466156903628906874425803971563) }, + { SC_(64477.4296875), SC_(0.905791938304901123046875), SC_(64144.07060584699385907827312605105472297437768092158219599227421106926277422343643835601882058410658), SC_(64812.03208904146137603431842552439844110838857519985468491314707081282416706827953479763262578004012) }, + { SC_(64477.4296875), SC_(0.9133758544921875), SC_(64132.26838832436540369532805606418027941149540828562912719544945752354444168151777920485209415948377), SC_(64823.87585662049973391821075349245675482856817401671691790524424811974590483212518931353174882417978) }, + { SC_(64477.4296875), SC_(0.968867778778076171875), SC_(64004.92488410780836353304712656544976503347491480358045814017266235773233360828573823673189564078906), SC_(64951.75983155522184664424166006374363245093228346453405225975203059011665907751439080627403945325992) }, + { SC_(75865.328125), SC_(0.097540400922298431396484375), SC_(76222.82269155096109100383549738236079909682485927693875123853981693903032795484769471288492656326357), SC_(75509.05983321930956661717458355626301247896079079621170079654347413495837561174926592990236780905104) }, + { SC_(75865.328125), SC_(0.12698681652545928955078125), SC_(76180.0826957503877592260430882376471703662648227114565512678461476530061861630501609889088901798996), SC_(75551.67399166594623080758920555419205779017345296059223309330814502697555192868325494354030105054918) }, + { SC_(75865.328125), SC_(0.135477006435394287109375), SC_(76169.08268122138145470531450520490177072397878828438302295772059764032384966509645502809999881891144), SC_(75562.64420562739263987220787633500821434893767582532921339694784595671762411138380819011948219835098) }, + { SC_(75865.328125), SC_(0.188381969928741455078125), SC_(76109.24295141063974534706839908706964920372284649924897977799682465648359681594171979865964714221013), SC_(75622.34037637647624543500037622857316297747749859722939468451417199082934107616099572458782467516942) }, + { SC_(75865.328125), SC_(0.22103404998779296875), SC_(76077.48950967478281873178934548332278131802517547842585356752389721055946588202286572395764378766444), SC_(75654.03037607281052420352414170078074554850538493499959308640216926229635495707975629189679682106014) }, + { SC_(75865.328125), SC_(0.278498232364654541015625), SC_(76027.48516982408918516087861827849502598921279473647288896135560943840404175591819986551261713068033), SC_(75703.95272354350196881117015091035221724957391445693875794169717063361775381746791009783540439555972) }, + { SC_(75865.328125), SC_(0.308167040348052978515625), SC_(76003.71148429472573962869966425278620791820590301768256945474707383072016197575947774999891436323399), SC_(75727.69511649524879052954214062561012913070768455251611573745656924439385198219379404708441889670731) }, + { SC_(75865.328125), SC_(0.546881496906280517578125), SC_(75833.22113006699971011674562796879590711928177851198274213854353670805562890651296840278423067445005), SC_(75898.10641061749434730132402605494657429045684795242038161439094883115707744473746410884619498547629) }, + { SC_(75865.328125), SC_(0.54722058773040771484375), SC_(75832.98540818254367387842761363512146209320287390044923096555918970629339268301900418637469635605512), SC_(75898.34219995776169152881286069309694225953754477602022479322311582182112363485047994966697413161055) }, + { SC_(75865.328125), SC_(0.6323592662811279296875), SC_(75772.55310214621142843803091653954700532347762188301208446197892714621834872595623759227047058710156), SC_(75958.80791980035231663878755001531847551164378215765931103560234745836747946066071380790985199890494) }, + { SC_(75865.328125), SC_(0.814723670482635498046875), SC_(75619.15863623250154445720921548519686399244865009769466811784459445074272963322250020203007107611472), SC_(76112.43155027130181938409111225642799510176169669687168310127089011746717337290891907967756554465972) }, + { SC_(75865.328125), SC_(0.835008561611175537109375), SC_(75597.50363631084430309098793081801274075222368946941278879513998186328488168100804519928043333368324), SC_(76134.13560182007041088999197883741720199723469293129759060291740358840897057677009838810911818904056) }, + { SC_(75865.328125), SC_(0.905791938304901123046875), SC_(75503.67401418081049526580361680077254301138713654066281553485593999653302677902521814064481594127221), SC_(76228.22555567839955693724734632674399042441873244671352224679680708640096015364979115507250037412881) }, + { SC_(75865.328125), SC_(0.9133758544921875), SC_(75490.87014481341853025482969050215923720606085412056100079085335805080879165586968461546289204007955), SC_(76241.0709750894805292047336953308839399093925221117482536851029483173358849345712644326294458953708) }, + { SC_(75865.328125), SC_(0.968867778778076171875), SC_(75352.71510793759418450204002726307008067365054664626018174491080300192826066000984956352924301776981), SC_(76379.76648246917699138837974378930070071267894212615603433453710874094094372061535363945857586400172) }, + { SC_(226209.15625), SC_(0.097540400922298431396484375), SC_(226826.0202829692439728575216858848753797406905170206481766625871777258977568000880540646288661951271), SC_(225593.5184917100269759557302861059369380040829042175259410004769889124594215807262411619035472272178) }, + { SC_(226209.15625), SC_(0.12698681652545928955078125), SC_(226752.2639924273910799882912156968388928437002065579447789075008914652403444808781318802743651474961), SC_(225667.1489450281114631918626707093036289980332740609744779417864857494629592855039495614068211882259) }, + { SC_(226209.15625), SC_(0.135477006435394287109375), SC_(226733.2803600784016884850755284076344492693369703312607066863327479100298375229807874965474846687895), SC_(225686.1027768376583011802441838216802940331053220531923414011099917573370794903140406335894664456915) }, + { SC_(226209.15625), SC_(0.188381969928741455078125), SC_(226630.0032702466268336600023326826433415284183522744239523216837800735415567778997611446325012795611), SC_(225789.2363077286901369263288987706320572509607903476618579611829872153950660127453284324212762112244) }, + { SC_(226209.15625), SC_(0.22103404998779296875), SC_(226575.1955421749934982865772338226913746751228249821797778957795638319243949152699122734108722862235), SC_(225843.9805938065659698989352838986201115599118262470036775980103176446428407854046523513698779336398) }, + { SC_(226209.15625), SC_(0.278498232364654541015625), SC_(226488.8795211116969370819223196761906291107148375893389525414212912366012740317209375260646135706217), SC_(225930.2146225420427053064468107429980631500611854361527609098850220463385129337492237659699836415015) }, + { SC_(226209.15625), SC_(0.308167040348052978515625), SC_(226447.8392925501542365366683006373550364816340955252257121594838806263141057519401401556960385971289), SC_(225971.2235585438138813582597453964697878602561081859480231938132545638004532790660331222148302358595) }, + { SC_(226209.15625), SC_(0.546881496906280517578125), SC_(226153.4710425303029835089927692019667706431268628820672004474473848684457908614108766482129082326359), SC_(226265.5127484981744983526700601938929633600615285202710088228357513051685181673883275114190493894134) }, + { SC_(226209.15625), SC_(0.54722058773040771484375), SC_(226153.0639814461409396590994002860873963267448056494020572161074338716743315579958038301019360762586), SC_(226265.9198770381168420604365533217915202183308738621246324912874108726736916953702211107333421701159) }, + { SC_(226209.15625), SC_(0.6323592662811279296875), SC_(226048.69937714432138545343417754724573877170288907249717725640892829565145068124215177281801780034), SC_(226370.3178951301817075647464340739710747219839279891532524049616326461151311869610603639280050274226) }, + { SC_(226209.15625), SC_(0.814723670482635498046875), SC_(225783.7396926319143784281800179283681353393356807402089652715084381923684207607271514290610478593759), SC_(226635.5067440548606868773026338940097771748813867695170816373962501605414485016069898451577888706875) }, + { SC_(226209.15625), SC_(0.835008561611175537109375), SC_(225746.3287353936242966335111062329717858136016841538794390681953843673543749900105304991570404274489), SC_(226672.9667528812620429168046039483476034674287171165013383776521460864319919109754730291001294327828) }, + { SC_(226209.15625), SC_(0.905791938304901123046875), SC_(225584.2122420286991063608225948125552493129317450685223999918641330162001021559062611937697732816649), SC_(226835.3435777204570991596374599629241887103968812111810003283598385723001952056238034445619043254054) }, + { SC_(226209.15625), SC_(0.9133758544921875), SC_(225562.087840785409162587382569184108323354678741070477199671394526178497219898060312322580296239142), SC_(226857.509528959566699179476664450369389861046245900630379618782269539769856897432219286882866461782) }, + { SC_(226209.15625), SC_(0.968867778778076171875), SC_(225323.3297731976615039884996133592811392218991459935743028405616673965911216575131257793653717400608), SC_(227096.8080662447948073322118261897807601196393395505343588466536694194222208371148831670579641182149) }, + { SC_(516579.0625), SC_(0.097540400922298431396484375), SC_(517510.9355928878591703111786346257806981399743631006858036197931689120309576104950210549218761556626), SC_(515648.4156817655995006123951890706937413181838034617328606819367886743198844833984093896427982364455) }, + { SC_(516579.0625), SC_(0.12698681652545928955078125), SC_(517399.5094400365962283503113701069904336024918846223137184815206059900936703603208740111524464541827), SC_(515759.7159974300154785953606416049053434918655652002430577036533334976288973799371312915054690577552) }, + { SC_(516579.0625), SC_(0.135477006435394287109375), SC_(517370.8295560884465447477278643642547097579055271449491292115982419165159744620430339225903363904512), SC_(515788.366080846697934069853865120656564962918365269845674610757017494202496217658115382323567508747) }, + { SC_(516579.0625), SC_(0.188381969928741455078125), SC_(517214.796985839471436741745776201689199746741515208790529459780958597781869780530331292759157534732), SC_(515944.2550921892269634915417627135106581869884485435334492263854900320219452079450319611343136996384) }, + { SC_(516579.0625), SC_(0.22103404998779296875), SC_(517131.9893972077504282222912973731970890328584531916215785304155993622763557764161124394009814677223), SC_(516026.9992388401715494578551274043279374625132890892884885003496321500459827999398989342118833496413) }, + { SC_(516579.0625), SC_(0.278498232364654541015625), SC_(517001.5721604400010438712525908241298056643495322218488376017597587616100833878695033195863655999779), SC_(516157.3344832949024343945507169495994755489218612063624810206507044262446175979442447262782829988944) }, + { SC_(516579.0625), SC_(0.308167040348052978515625), SC_(516939.5613918776689028938556804212250958696790435014071896480187991283087706479728969219536922853837), SC_(516219.3139593025247546019457834086049873887296726122678501396024496824811480753611254943742853088472) }, + { SC_(516579.0625), SC_(0.546881496906280517578125), SC_(516494.7411098774738011265225390064080564873376917778743088993729884058139836357232581236733017549366), SC_(516664.0551812485722320681775205423371842734417336464136213751733024183890861655274161575645164122853) }, + { SC_(516579.0625), SC_(0.54722058773040771484375), SC_(516494.125954113786647607617010710473841855088628117767550837781434843950315420386668883385426387316), SC_(516664.6704044680308900528091176314093094299591166296830858822688739588540781464028994654819599578514) }, + { SC_(516579.0625), SC_(0.6323592662811279296875), SC_(516336.404748008478698490626760000075318317669110023062030751067483798233670277314055780365953393772), SC_(516822.4250243590420808212921892036912567875051827767103148382043665258713782629467202115353181887635) }, + { SC_(516579.0625), SC_(0.814723670482635498046875), SC_(515935.9470183695763918874471746835684562186493975724331015965000343086642859571474227085833828233064), SC_(517223.1119183690968428614213699067279948471890613570491954090021623128861663084291477581612526477191) }, + { SC_(516579.0625), SC_(0.835008561611175537109375), SC_(515879.4001579768626868282382206281199535788191691114774150127306186858738613518802718725936555644871), SC_(517279.7078303388596415040680392840317580454970952827665965609685430955189026644064922204838773461159) }, + { SC_(516579.0625), SC_(0.905791938304901123046875), SC_(515634.3479969449423015563194382172953941968755763993831322500823581493206223910863836633051196794225), SC_(517525.0203227729970410793778128766571591346205865088385422149969102750855016382593631120603586904694) }, + { SC_(516579.0625), SC_(0.9133758544921875), SC_(515600.903638465575226772975438181151407032792758292277139009560608855602506183227834671606747233999), SC_(517558.5062312346059413116973188241237668715839937525128163778485706181476856736924669582989651991235) }, + { SC_(516579.0625), SC_(0.968867778778076171875), SC_(515239.9613614718905924415997446091707043170654798160874019603099536275157310393932297651443188283863), SC_(517919.9889776970441843829886251060348881751152985953183240319944389735946351475168575824547913893585) }, + { SC_(1038672), SC_(0.097540400922298431396484375), SC_(1039993.123344155948444390909911807923653882879753155366737722888703892710376448302925459584454084826), SC_(1037352.102930487402382281844865098111975958928817716953560018738332914201534783955218909747853403934) }, + { SC_(1038672), SC_(0.12698681652545928955078125), SC_(1039835.149315842430036753081071567668080356240781036138697017695796689402643326048362720140248675939), SC_(1037509.951121628531782935336084355977121762085374418151412871345116401739775692642708044566994262753) }, + { SC_(1038672), SC_(0.135477006435394287109375), SC_(1039794.487972686997346157664944579139933137786941628610454290652218293019704933767138703866012914221), SC_(1037550.582664255620280571507283048939601134989407732087440714697007411008733529208328579422870796214) }, + { SC_(1038672), SC_(0.188381969928741455078125), SC_(1039573.266536299955656845102561202997939756640469183190762933283595381149364590234033862222096164854), SC_(1037771.660541749646140575376174264933187697095736329065217888444741363743142297226243000469914887701) }, + { SC_(1038672), SC_(0.22103404998779296875), SC_(1039455.860093036279412436319356109700106606904989200941294821719439740105358349910763079588615788335), SC_(1037889.003543037629193438974762034449723137556727981105829960171001661090462770510620224332700398402) }, + { SC_(1038672), SC_(0.278498232364654541015625), SC_(1039270.94788584276773301124108140409577969840053991352105445294111197358344707365006770815859943912), SC_(1038073.833757923918394351864029124758927186608439764595603342218424299073791461754012201879139362014) }, + { SC_(1038672), SC_(0.308167040348052978515625), SC_(1039183.02424954714222774349876757311179226469890988686951745625484165465382310513156303615393771035), SC_(1038161.726101666816182187534956051775563256753775574050510754523412476523942429812165448578674924493) }, + { SC_(1038672), SC_(0.546881496906280517578125), SC_(1038552.29346346086939063971953753418435291009416102738346293634425105836884659855955981674730198758), SC_(1038792.377827703383187427470966807112545507260571343031248281875679504401909882240273826790481452983) }, + { SC_(1038672), SC_(0.54722058773040771484375), SC_(1038551.421169349531912052227889607485847056343006936762569956411450298573930468309626038848271402694), SC_(1038793.250189270488726304564642597997169463410179450870069476228240325295897144900768641849827830973) }, + { SC_(1038672), SC_(0.6323592662811279296875), SC_(1038327.768299746329920265763977689753250219933479151314980909971487343500995937536971484724684162792), SC_(1039016.936472657615337102164799291183542707890146035188125040822910674452580533104959912853400193023) }, + { SC_(1038672), SC_(0.814723670482635498046875), SC_(1037759.878405952645373535683495405564523079148698441571327746313089445399810325213062065522035191912), SC_(1039585.055530806350432130602269033531340276895922270056898643323629041630713133375899885100665100403) }, + { SC_(1038672), SC_(0.835008561611175537109375), SC_(1037679.685701980251846869440893782386785585267275366747697580533307742300441830762824057723243083607), SC_(1039665.297286351461240747354237473149155751724201167845607547506523668744833830475498916720707379591) }, + { SC_(1038672), SC_(0.905791938304901123046875), SC_(1037332.151638109014208141917995483845046810004084672255296689457371474617480488051337817821547914199), SC_(1040013.091681596700925701129424372964904824656076325793987685884707977584929221294267794586602260659) }, + { SC_(1038672), SC_(0.9133758544921875), SC_(1037284.719441169657467932531837576930104662471667121936691141049108563099425495864192866330874495483), SC_(1040060.565428512982591779925470307206621191310177799052151176600349975053787196210309716992622044307) }, + { SC_(1038672), SC_(0.968867778778076171875), SC_(1036772.796656464105607231920830659776186334050684419370977689526072902975858488481897938814591567751), SC_(1040573.02868259772175619209122481592511708136416323735380618660561260682499739109123412754917051063) }, + { SC_(2052238.25), SC_(0.097540400922298431396484375), SC_(2054095.027583465223686841978248452556033512641190275730056584715812256080478161168484230836100947052), SC_(2050382.698691173187745922372534387551045895940517684724175215901533960809913513534366769474593763921) }, + { SC_(2052238.25), SC_(0.12698681652545928955078125), SC_(2053872.998192082546723955677339777747836479367344948387773619073183201466370740450206544170555895289), SC_(2050604.602245390540835807465989462437852374721362129721172434953805912731953522818518779820048873869) }, + { SC_(2052238.25), SC_(0.135477006435394287109375), SC_(2053815.848948738672362662387412345896497387388112675249006412886435587608425425685664841188035880858), SC_(2050661.721688207597130264684349124298252696427878190340316893838593627893365881282281425663488084513) }, + { SC_(2052238.25), SC_(0.188381969928741455078125), SC_(2053504.919947703498278038867147328446853767981914290411952526534972183450857608605657672915443848792), SC_(2050972.507130356318314811204479254999541923555062067166889360904521810004836133251034317909725280304) }, + { SC_(2052238.25), SC_(0.22103404998779296875), SC_(2053339.901401341805907104897212095957118651882953731817043730068280829854989833022072007826683459789), SC_(2051137.462234744801505878750082320379542374302606696363007525477859483770662648606525079056227839451) }, + { SC_(2052238.25), SC_(0.278498232364654541015625), SC_(2053079.997689542575296546864223375113926930469449376074035048577439532566749507686783023854207182323), SC_(2051397.283954239641967895180682960542155760358735088770405586016773863546747869621404064727339758829) }, + { SC_(2052238.25), SC_(0.308167040348052978515625), SC_(2052956.414891788683806764206551298054476242455564807691702654925660369363547425428367051736672596977), SC_(2051520.83545944177433097624476440369994595188677665298285942396516791751278175717498481882134161834) }, + { SC_(2052238.25), SC_(0.546881496906280517578125), SC_(2052069.849329213082510337689726538696073912717561995945305414570452369066145302556713000996633019125), SC_(2052407.32196196984035858364025834548401399648935817922598350562581122762250640792202487287141730989) }, + { SC_(2052238.25), SC_(0.54722058773040771484375), SC_(2052068.623182412664967654109888912911112017296589588879658216057212486728014858087494611267360157036), SC_(2052408.5481762260242784967888910268174797785721626516356813867200692400601652133144156629969140318) }, + { SC_(2052238.25), SC_(0.6323592662811279296875), SC_(2051754.240569037547802142594373829006051459599308119674378730431448217035911319362271900655587977869), SC_(2052722.964203384196906439350465837421826322692035205923675364495412885462078877240220643964205556274) }, + { SC_(2052238.25), SC_(0.814723670482635498046875), SC_(2050955.944275709730983841422789858755211669613104602430204931646053312682843491102068166094255929979), SC_(2053521.489661059195786150000462277494838397684632133050026341425875585562325269833891474670670367515) }, + { SC_(2052238.25), SC_(0.835008561611175537109375), SC_(2050843.21210336092371390960727350094853324740373648052249876224738041497777078278635094223667696696), SC_(2053634.270884978603521287169507823951565301637541523753361730343333350257935273971575210584216670402) }, + { SC_(2052238.25), SC_(0.905791938304901123046875), SC_(2050354.650861367231473825090782534818921809420363821320930988865832550934997364545718954344213568815), SC_(2054123.092458332510067650567465482251849879954069948032901338716521198293368849528571732240279017728) }, + { SC_(2052238.25), SC_(0.9133758544921875), SC_(2050287.969750181148873042707384685319074169442528674372925794051806460528476505943046782195572041022), SC_(2054189.815119492919398705560963459087891293979039395550646733858539500957775171385998864317618354795) }, + { SC_(2052238.25), SC_(0.968867778778076171875), SC_(2049568.279998083978083717070005223652136966985879331037425478106519463013914740524256840211610720664), SC_(2054910.045340925509379347848542946674008434059729678497889265125108172395728162426345323483570406674) }, + { SC_(2327548.75), SC_(0.097540400922298431396484375), SC_(2329526.114082296801454515301749916711685327592448700487411930368448822290616084217730068271714360125), SC_(2325572.612192341011257115457310472858239651932516576627739504475639092927758206070364154135493711917) }, + { SC_(2327548.75), SC_(0.12698681652545928955078125), SC_(2329289.664545735704613883153418430866175802581351679286037018431794089164081203052786433572592057633), SC_(2325808.935891737640613040680885071381536312145425180785579314299200735594918690005492545573784766532) }, + { SC_(2327548.75), SC_(0.135477006435394287109375), SC_(2329228.80354581862311698961187648491661647766481942239632595971585572557525627543642925973885202791), SC_(2325869.767091128089029913234295812204399571291611266591967535346154503730431476798901360516233992553) }, + { SC_(2327548.75), SC_(0.188381969928741455078125), SC_(2328897.679575152003689265505829966265021530958723621499513615353122882777916041302543254337542639196), SC_(2326200.747502909051072070412784133099144772573156100988795274468974724396700640824237340780935046666) }, + { SC_(2327548.75), SC_(0.22103404998779296875), SC_(2328721.942590688711496393210017238743734685882987330731336806058435964241299292085371919430715822137), SC_(2326376.421045399435180440353833085577392501041602161094172048871438136863090874283198971210345881252) }, + { SC_(2327548.75), SC_(0.278498232364654541015625), SC_(2328445.15678905003228088229678439200658769886245365571048518441037844941196896735464747263849534909), SC_(2326653.124854734067563633339568376362848269550954365023090632937676635387549254860647893189580559379) }, + { SC_(2327548.75), SC_(0.308167040348052978515625), SC_(2328313.546399751652059713274678372017164383348891447194993162164660829885071412959572752394521233103), SC_(2326784.703951480806064245714717217613575306191844571593409016843210074078710477882506598476346106392) }, + { SC_(2327548.75), SC_(0.546881496906280517578125), SC_(2327369.387304154662410096752126928601205253740576963609663284517925484417216142711670278541786961623), SC_(2327728.783987030523546329567280321796383027755109763464107192906728693179609996052842943543500035192) }, + { SC_(2327548.75), SC_(0.54722058773040771484375), SC_(2327368.081498025582089401907318503213215730025503618025975862059284890621332840713954877115416251501), SC_(2327730.089860615370040244563745093475979746507775795075985262243438365291378880992534385389978678901) }, + { SC_(2327548.75), SC_(0.6323592662811279296875), SC_(2327033.273801844088415206376643110113826445785303219943120801547928132438418103340213979231412894001), SC_(2328064.930970579813823457468264159708586111712861082462442844708647663456049027616263351822455409326) }, + { SC_(2327548.75), SC_(0.814723670482635498046875), SC_(2326183.108412690357616768899081097031188537381782138357737910342416420245413967281606903655593452032), SC_(2328915.325524079772917592305014897329288870488064276913169357434509954800375172709607861098443244384) }, + { SC_(2327548.75), SC_(0.835008561611175537109375), SC_(2326063.050954241613569920181064667103319468137735199060976212458546583325105462081245924778898223872), SC_(2329035.432034098860843227435663627629861084927695603790221290342905612446508160126831989950903483755) }, + { SC_(2327548.75), SC_(0.905791938304901123046875), SC_(2325542.741669800113444930187473766546401748113894048427332848619782119518386971117888443401924877391), SC_(2329556.001649898904016797542482546183791200134818148114806366610367086534751227989400150443040016348) }, + { SC_(2327548.75), SC_(0.9133758544921875), SC_(2325471.727242497392773449639911571066022914913370149675655043817114137532777832647461474174075784684), SC_(2329627.057627175636482679321890332587124140179464134521091120057293262780055485755607840175871399635) }, + { SC_(2327548.75), SC_(0.968867778778076171875), SC_(2324705.264985226344294745203011389326002772462961055280128731391064922559949044503112872046703368467), SC_(2330394.060353776798876224782809597216579299224955719757290503934606630340754068086724147607390669768) }, + { SC_(6230117), SC_(0.097540400922298431396484375), SC_(6233351.692472792061056579423995328493857103363396239930285849771856937399508188067562089564731873418), SC_(6226883.533801842955995418263348267065006324244587298450820602128533786716023362663081376081505278596) }, + { SC_(6230117), SC_(0.12698681652545928955078125), SC_(6232964.887316261881701097347977065367130687058335028215195760161155574674778388777016592959892786101), SC_(6227270.213121212666669646893421478332353213715522094655483973849209986323367490884986293265596032224) }, + { SC_(6230117), SC_(0.135477006435394287109375), SC_(6232865.324662868111190527453037563536761042866213055644551828614498129899296431946798065713700170309), SC_(6227369.745974080667874198600668355855866443350107162047433655601935476580330379827328115355241930538) }, + { SC_(6230117), SC_(0.188381969928741455078125), SC_(6232323.63227185115778658441373123602508832270222793713035148463068189665774304541385361276622984635), SC_(6227911.294806215678453456704655164982523620764595109639499042366654806988561384785145329706145958711) }, + { SC_(6230117), SC_(0.22103404998779296875), SC_(6232036.136536250933679987772671460235733726477628676496527697942146593792117713490188974877896657093), SC_(6228198.727099844400404830340828350312187148760053110689306546858635128471089524390627975414927556548) }, + { SC_(6230117), SC_(0.278498232364654541015625), SC_(6231583.324968307181681406950097442146625275486837869234235041148491080696490646684242945262614873862), SC_(6228651.456675485708645793762391965898293897905472473126963140667980274570043834720563802098830776494) }, + { SC_(6230117), SC_(0.308167040348052978515625), SC_(6231368.01268140366726819175665186638268466543674045388244783605009365981150484906350062278363002165), SC_(6228866.737669838129552659768389036176940614109203793210530779899481841299310894708215176090916781291) }, + { SC_(6230117), SC_(0.546881496906280517578125), SC_(6229823.338725792076249396465479515707976738291090698907050753153528364353246948669279119423361512767), SC_(6230411.332565403676924567021771163447589886484281784991639253912767759502501563110172430307851857965) }, + { SC_(6230117), SC_(0.54722058773040771484375), SC_(6229821.20232969720644266921283636481256709952913709169187035576735749241917052776040711574219186358), SC_(6230413.469028954311951916289817041956497186222746860523204205914506151906118372519765070461530163706) }, + { SC_(6230117), SC_(0.6323592662811279296875), SC_(6229273.426873074414556366664038917730342926119497520622955950028248233012730923731157371779835274121), SC_(6230961.277899359562011793446984848521160452797500133271897124953410729884385903965899957485493616226) }, + { SC_(6230117), SC_(0.814723670482635498046875), SC_(6227882.434048976058402554738706177641614293741446680191726074222637100597948821666067849039597462162), SC_(6232352.49988779969296455486124268083236030976120352890683487451263766450087335752456747789340459989) }, + { SC_(6230117), SC_(0.835008561611175537109375), SC_(6227685.997474726247688087235059841375491699004535827525396018185766370072460519898747215701210901658), SC_(6232548.985513618649457852034579253993054240803224395784331070556455526838927599609658335554516685135) }, + { SC_(6230117), SC_(0.905791938304901123046875), SC_(6226834.658470939251130269088475617573565344834275615564082295817604878528766465312582574980965566951), SC_(6233400.584848756385324680328194932048486178740428764315512985319315075751357006490348772335643597714) }, + { SC_(6230117), SC_(0.9133758544921875), SC_(6226718.46152837504987605910618350148896811668349713499970654969426128470753421783619578121107382213), SC_(6233516.823341293127817703348946693534220889012539925157887472970468357261827764647617813444939050571) }, + { SC_(6230117), SC_(0.968867778778076171875), SC_(6225464.31285320598579378900341589648562621739072429909204840552840676406014931804970799580191477189), SC_(6234771.512485767533460305424549342618110995053933756316716261789635898723192636506248708591368854061) }, + { SC_(15083605), SC_(0.097540400922298431396484375), SC_(15088637.78129839240544084967639490379844477975678197902399407486600207945266721185803386193838048788), SC_(15078573.44497624163292763488000992712939959763710279840335208548585316282432025007551150520834892593) }, + { SC_(15083605), SC_(0.12698681652545928955078125), SC_(15088035.95454486752580740261889753816930358428372354823140840080143163186851089423134281705030456187), SC_(15079175.14589260744374955642608743874599125416522689478871576618133114925591835305586515102168450869) }, + { SC_(15083605), SC_(0.135477006435394287109375), SC_(15087881.04516515058008645681821244786240897066985410758979447193614902902100508841528459831467151797), SC_(15079330.02547179892254772110264023468178754075598873509528620157408889322324875656941277086187068723) }, + { SC_(15083605), SC_(0.188381969928741455078125), SC_(15087038.22164129576331239830876873353215959212349671143829660806147341521657730913830483880795924604), SC_(15080172.70543677309686154480478630061895108326075818775376184189438877404905927698452585456460439436) }, + { SC_(15083605), SC_(0.22103404998779296875), SC_(15086590.90118294501418553538586701765236949743021493354695067962707784877870875603880811865737188093), SC_(15080619.96245315283600996122158277029601757754302700450619766582009047870716487351388585974357884923) }, + { SC_(15083605), SC_(0.278498232364654541015625), SC_(15085886.35747723304468589943584481796024609839822718371399281266195551388857413330568267228846771924), SC_(15081324.42416656292294392879954060790691623450955961557020548135058993368970804049112726766191292319) }, + { SC_(15083605), SC_(0.308167040348052978515625), SC_(15085551.34420515641571775001974011059238876676606782093094374386448901839125525873664701387018457173), SC_(15081659.4061460886503203161240084124632660964064929967501551529928113396007364677184216561021748007) }, + { SC_(15083605), SC_(0.546881496906280517578125), SC_(15083147.88182872830072612604647044724558765934450113173248706039646401749665137590731770281561564279), SC_(15084062.78946247115173608372375734029812941014549468133844220227152081657865687456247081611122282205) }, + { SC_(15083605), SC_(0.54722058773040771484375), SC_(15083144.55761682266607161006212263153448991348641093068040602030513183087566712109971802285493643745), SC_(15084066.11374183255127774349397874273282083208958473269307345912470558386422663180275755856718286894) }, + { SC_(15083605), SC_(0.6323592662811279296875), SC_(15082292.21976072050789874456495350894784125555141581904825165790430182222017429560913482757052410598), SC_(15084918.4850117169954112119454349395093713303826023318028934780952962765491698393599514678303984078) }, + { SC_(15083605), SC_(0.814723670482635498046875), SC_(15080127.79672086471855145296910274760322807117874269748523561539117756164468929742101440033412619451), SC_(15087083.13721591300051187437457165132686653041492870555194851269781626386717551279263922333330837915) }, + { SC_(15083605), SC_(0.835008561611175537109375), SC_(15079822.13137600794879441883791234166660844799568532069150956980805393588464890726312515528384620475), SC_(15087388.85161233849662625412502891217716929149866356777620050803844415678951962999244150794846728711) }, + { SC_(15083605), SC_(0.905791938304901123046875), SC_(15078497.39111859196942643525234208299210155465881136002686264100877073259043613787120296293082019187), SC_(15088713.85220110248343127416083317298417971060035075742320769629655969166242700390981290477097864291) }, + { SC_(15083605), SC_(0.9133758544921875), SC_(15078316.57925461811008046272040141036219718278649375130100601062440179434244992344435579799277359019), SC_(15088894.70561504836921552772384009007949176914160796656104057265657981769338965029262519632953830189) }, + { SC_(15083605), SC_(0.968867778778076171875), SC_(15076364.99664491882324687003477038147511063884443803257690739420141880711939968486790583272510921072), SC_(15090846.82869404432549959125993359239420390163029355290721639099401542481263745861685706736887672797) }, + { SC_(30203694), SC_(0.097540400922298431396484375), SC_(30210815.47566831752036352507646724966902397170938923180599788499483624078712473926944711066637024068), SC_(30196573.75060631617324365602586584702812846344145665137998045911407907692772654641163877762705456397) }, + { SC_(30203694), SC_(0.12698681652545928955078125), SC_(30209963.8757157795480995601711819490850855177202359573561810789532756328719973708836474351335854889), SC_(30197425.22472169556982870125185614985218844456494507799910460728140621558219262938938751348734740307) }, + { SC_(30203694), SC_(0.135477006435394287109375), SC_(30209744.67452031337899415070813774353602917889889616197547160928602825672821125303891065223640309171), SC_(30197644.39611663637853198149681272295131038344158276965149015781362885264090975193062615327536605494) }, + { SC_(30203694), SC_(0.188381969928741455078125), SC_(30208552.05131349505367548465974563992383024423755241876800896941592304014554064168696807336242707805), SC_(30198836.87576457451947027519100177908268502372878129639212126829680623490205917339927211144716523626) }, + { SC_(30203694), SC_(0.22103404998779296875), SC_(30207919.07540045596968115923357225804129946123666237495696182304373656661881886764705270512529825631), SC_(30199469.78823564276686545281804196696004068558549613806405242745080779095956522018947522727857563533) }, + { SC_(30203694), SC_(0.278498232364654541015625), SC_(30206922.11482883621349902576400149622677934703180000493881690157818678904256430739792356870432623573), SC_(30200466.66681496083817322221637013993723066065566124378008761476684957400999798723604743234095626697) }, + { SC_(30203694), SC_(0.308167040348052978515625), SC_(30206448.05460290491450971241953253008423903107052255039907494646751223838472473892280165946724898133), SC_(30200940.69574834130317660059010636635891931231336377577854780281206532038547042794469057516760843273) }, + { SC_(30203694), SC_(0.546881496906280517578125), SC_(30203047.00717058636669137357304329205959160149968637834771106489786699129221742385725439984711498261), SC_(30204341.66412061438892037858238817499573385966690259844837484508562445579642440156011876568390745967) }, + { SC_(30203694), SC_(0.54722058773040771484375), SC_(30203042.30316911510841423755943355619862052255525737384753926509535075864473371673718417804236785854), SC_(30204346.36818954141196718386901594529173091315276193703386689325465835489738438729376667618975581351) }, + { SC_(30203694), SC_(0.6323592662811279296875), SC_(30201836.17980432310579115059624887819436825142777050805037400727522822838623497800967776780877762698), SC_(30205552.52496811563988534014867005476936232886423535822792563048853981792883735017378794452129469264) }, + { SC_(30203694), SC_(0.814723670482635498046875), SC_(30198773.32543295466384303637189930446471572734223223892225111721858159661322380144370334171399592945), SC_(30208615.60850382374838123766556759581715316364613287151987225419255301976073762617401758260722361711) }, + { SC_(30203694), SC_(0.835008561611175537109375), SC_(30198340.77785915372227694900099056895390988180231312503107906339171260486697177517187178707615377744), SC_(30209048.20512919326855490888268848804451625500482635894067819189284827655903055503571740161890393015) }, + { SC_(30203694), SC_(0.905791938304901123046875), SC_(30196466.12565226888150073567973527983647592469381424487408323665472782970590030369753565377529416458), SC_(30210923.11766742515441063993124028259470221758493890083864245553374244107973324231229306719090975719) }, + { SC_(30203694), SC_(0.9133758544921875), SC_(30196210.25585998280064237944520762297790392031265667224175460272447471873119884901896113469469345057), SC_(30211179.02900968308035831437060149239618022354135751179509266594271502924955014841375878474172002289) }, + { SC_(30203694), SC_(0.968867778778076171875), SC_(30193448.52065679169569881618335847186614165117290739943799101539336869203467308211264064437967727749), SC_(30213941.30468216779982532499490538896952642738252393109170337539122327630305298668623088994994675055) } + } }; +#undef SC_ + diff --git a/test/igamma_med_data.ipp b/test/igamma_med_data.ipp new file mode 100644 index 000000000..c4968dd8f --- /dev/null +++ b/test/igamma_med_data.ipp @@ -0,0 +1,712 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 700> igamma_med_data = { { + { SC_(0.9759566783905029296875), SC_(0.009759566746652126312255859375), SC_(1.003339192007827076679495082852814844336347745360235976200689788561799007730110137330271807878843422), SC_(0.9890348932311204142405476428315735322132825375129739181325170152149560168983641202727073881868421137), SC_(0.01112369385656880593053787042266942213006008594885039559843996330162391632861423778173725952365124566), SC_(0.01096510676887958575945235716842646778671746248702608186748298478504398310163587972729261181315788632) }, + { SC_(0.9759566783905029296875), SC_(0.48797833919525146484375), SC_(0.6107075742899761923771199703161020169732161418698525715736270035568544567698769445946517198087313906), SC_(0.60200090392622800556746880021527940973985765617427715855663599678855269649431562996389062378697249), SC_(0.4037553115744196902329129829593822494931916894392338002255027483065684672888474305173573475937632775), SC_(0.39799909607377199443253119978472059026014234382572284144336400321144730350568437003610937621302751) }, + { SC_(0.9759566783905029296875), SC_(0.8783609867095947265625), SC_(0.4103188243195825736649265764483608742565650301514019080978258727846258380934756822777647401521337079), SC_(0.4044690348331089562847173039266064850324957624072768224521011340506874965505832795400716939018472498), SC_(0.6041440615448133089451063768271233922098428011576844637013038790787970859652486928342443272503609601), SC_(0.5955309651668910437152826960733935149675042375927231775478988659493125034494167204599283060981527502) }, + { SC_(0.9759566783905029296875), SC_(0.9759566783905029296875), SC_(0.3716156455565117999679764359314206771522167659503088545148165288456984447337491300360711644068227913), SC_(0.3663176354055262891120913532650947355579995910412343114483952548046833846145392929954730440121592797), SC_(0.6428472403078840826420565173440635893141910653587775172843132230177244793249752450759379029956718767), SC_(0.6336823645944737108879086467349052644420004089587656885516047451953166153854607070045269559878407203) }, + { SC_(0.9759566783905029296875), SC_(1.0735523700714111328125), SC_(0.3365957734341682416974116339033939077306129158759127039900907555371173447101305942124236590906355356), SC_(0.331797030846884313930450730877113627495191936019305203409885944607670085443529202208539000516429768), SC_(0.6778671124302276409126213193720903587357949154331736678090389963263055793485937808995854083118591324), SC_(0.668202969153115686069549269122886372504808063980694796590114055392329914556470797791460999483570232) }, + { SC_(0.9759566783905029296875), SC_(1.951913356781005859375), SC_(0.1385088659605976262491193813236600847409759615506046462442726458845512900567187865481680178692283672), SC_(0.1365341875889111868905471971345765310104098007339706625166294395122010561441478434485743781967094833), SC_(0.8759540199037982563609135719518241817254318697584817255548571059788716340020055885638410495332663008), SC_(0.8634658124110888131094528028654234689895901992660293374833705604877989438558521565514256218032905167) }, + { SC_(0.9759566783905029296875), SC_(100), SC_(0.3329367866516218882556933190525174260789494242751242200806022302568879706613898466339952656223149765e-43), SC_(0.3281902091153740166486606492940994602463196281189732879787170311504671582868285770684776274764428056e-43), SC_(1.014462885864395882610032953275484266466407798015407706636940926294091018806981767406982208969380557), SC_(0.9999999999999999999999999999999999999999999671809790884625983351339350705900539753680371881026712021) }, + { SC_(3.6673679351806640625), SC_(0.03667367994785308837890625), SC_(4.015456203482594363703108922457754241931144753022213644581757557362565251633751067204031319947614119), SC_(0.9999996416031942390887720081336876066391718689312749653540593938756701333363441103622007068271772676), SC_(0.1439127192779586379672567684497393093482122996236962325320321035788002657163475408231449064922934748e-5), SC_(0.3583968057609112279918663123933608281310687250346459406061243298666636558896377992931728227323669815e-6) }, + { SC_(3.6673679351806640625), SC_(1.83368396759033203125), SC_(3.385019930725903437101102788992704693233898009050769147408163022452742444496498683915469724406386969), SC_(0.8429972949548684405745767660490086691148623810631514321669785188982553992208514843501333648638513432), SC_(0.6304377118838837061883858060327340460903402260944407341359198552308585951399095467639698269902920728), SC_(0.1570027050451315594254232339509913308851376189368485678330214811017446007791485156498666351361486568) }, + { SC_(3.6673679351806640625), SC_(3.300631046295166015625), SC_(2.042636694164828921905502083385700066735693044660836778705857972635214071130121556552436672447216837), SC_(0.5086933734500178903640699120946947210401396612791668913147219471061294630383430188409151403350782137), SC_(1.972820948444958221383986511639738672588545190484373102838224905048386968506286674127002878949462205), SC_(0.4913066265499821096359300879053052789598603387208331086852780528938705369616569811590848596649217863) }, + { SC_(3.6673679351806640625), SC_(3.6673679351806640625), SC_(1.728735745904876644611421612335214154871948437794169498245863240719631120462386158739239016328353788), SC_(0.4305202295151868380055049423689706093538316338471304831830580882615064594948400767660055044416881203), SC_(2.286721896704910498678066982690224584452289797351040383298219636963969919174022071940200535068325254), SC_(0.5694797704848131619944950576310293906461683661528695168169419117384935405051599232339944955583118797) }, + { SC_(3.6673679351806640625), SC_(4.034104824066162109375), SC_(1.444516814327011000070882393866730351220066002187575174421871857951121331631687572841352290352819824), SC_(0.3597390242642850341727041436017742040531479500883038068894793884921274228917627066755248387784064007), SC_(2.570940828282776143218606201158708388104172232957634707122211019732479708004720657838087261043859218), SC_(0.6402609757357149658272958563982257959468520499116961931105206115078725771082372933244751612215935993) }, + { SC_(3.6673679351806640625), SC_(7.334735870361328125), SC_(0.1928842173031202025225624838692485746218833743579218885223983296392167688850553059225165015834992419), SC_(0.04803542571495237241980779345714029329653710992944984439518803096715759866423134446016679398725604201), SC_(3.822573425306666940766926111156190164702354860787287993021684548044384270751352884171158251598726148), SC_(0.951964574285047627580192206542859706703462890070550155604811969032842401335768655539833206012743958) }, + { SC_(3.6673679351806640625), SC_(366.736785888671875), SC_(0.372800134674871004133305800038544316286141292939638700513746479143277577659533359615901901430435418e-152), SC_(0.9284125692646457240171069953349802726912792879264744141937156428280981577209798205498168718568776692e-153), SC_(4.015457642609787143289488595025438739324238235145209881544082877683601039636408230679439551396679042), SC_(1) }, + { SC_(3.927384853363037109375), SC_(0.0392738468945026397705078125), SC_(5.481066062312759609088467038496268309673263041819793219043840830040297205342994832270601061056033285), SC_(0.9999998644970030817287440986146656923084586349422512633027737770225692386615800459657372422641664819), SC_(0.7427009783886154185672763382162962257956018203370314581397997422675096103629829713614292219536073734e-6), SC_(0.1355029969182712559013853343076915413650577487366972262229774307613384199540342627577358335181356689e-6) }, + { SC_(3.927384853363037109375), SC_(1.9636924266815185546875), SC_(4.681812913714047542283856210321072659033064415174669810637868258672116849915694109286206104312772615), SC_(0.8541791370671521729901850166624917295981362963337091768339429521680602021206356329487839388666490246), SC_(0.7992538912996904554200293954515338669364244222469437454374307111679226229369110859673663181724826232), SC_(0.1458208629328478270098149833375082704018637036662908231660570478319397978793643670512160611333509754) }, + { SC_(3.927384853363037109375), SC_(3.5346462726593017578125), SC_(2.816382129373238431622360210900121113984870409677894964310059270076658015588413570675787110723304341), SC_(0.5138383146136784446720548677781035602174821016872781850577578962283277420194842365544178296035766061), SC_(2.664684675640499566081525394872485411984618427743718591765239699763381457264191624577785311761950897), SC_(0.4861616853863215553279451322218964397825178983127218149422421037716722579805157634455821703964233939) }, + { SC_(3.927384853363037109375), SC_(3.927384853363037109375), SC_(2.372524524117176265960547286995208847829504338216474626443140132870682887519485551770239936222341945), SC_(0.4328581658495639630270840755675107928235764222751457590954583968179864712767674894422404906165588576), SC_(3.108542280896561731743338318777397678139984499205138929632158836969356585333119643483332486262913293), SC_(0.5671418341504360369729159244324892071764235777248542409045416031820135287232325105577595093834411424) }, + { SC_(3.927384853363037109375), SC_(4.320123195648193359375), SC_(1.970611625388247978708850134084306947654318148394020488479689347566403177940610018095263177207347023), SC_(0.3595306708514582221331302218158069672828911270152191991137293925439419946034877363340407656533313991), SC_(3.510455179625490018995035471688299578315170689027593067595609622273636294911995177158309245277908216), SC_(0.6404693291485417778668697781841930327171088729847808008862706074560580053965122636659592343466686009) }, + { SC_(3.927384853363037109375), SC_(7.85476970672607421875), SC_(0.238706275514383026709028032263691077278567144774320344670291470842396455092581594240259417847732045), SC_(0.04355106113576820787009967250010306075903743361159344036127233964378152216248958038694036508132089635), SC_(5.242360529499354970994857573508915448690921692647293211405007498997643017760023507401906976198864705), SC_(0.9564489388642317921299003274998969392409625663884065596387276603562184778375104196130596349186791037) }, + { SC_(3.927384853363037109375), SC_(392.738494873046875), SC_(0.1078993903281671896766902458293491839848722367396818902919765955362752479299554076754789326345029705e-162), SC_(0.1968583747774567503864275752806505701451497730718605463389743484952827957146229484595624495962975282e-163), SC_(5.481066805013737997703885605772606525969488837421613556075298969840039472852605195253572422485255239), SC_(1) }, + { SC_(4.0533123016357421875), SC_(0.0405331216752529144287109375), SC_(6.41813285759464991786370353876022753573157877461535817238850166391366463955791959530384794100190872), SC_(0.9999999153376853984885845524839724176593964442100629723951601696835883369687013798502558587978588299), SC_(0.5433740291472787177259642030841127451712424954512787213858894935800380943446964607803762001476194369e-6), SC_(0.8466231460151141544751602758234060355578993702760483983031641166303129862014974414120214117007469975e-7) }, + { SC_(4.0533123016357421875), SC_(2.02665615081787109375), SC_(5.514707456930929301459079955313869438197604073116501578585214366340025188854030716468633857798384298), SC_(0.8592385219195666661138078362450122638220024524868804909958062167776733168925557829786689630134192895), SC_(0.9034259440377497636833413094105611816467198727413520450820086834631330307419832235316748635797245696), SC_(0.1407614780804333338861921637549877361779975475131195090041937832223266831074442170213310369865807105) }, + { SC_(4.0533123016357421875), SC_(3.647981166839599609375), SC_(3.31312004338382642184449230231977509243273512126776674881440136854727850356190389201660465913190857), SC_(0.516212399524725097994684175184876436874372793206907921261581372871952489632052496592045138421516394), SC_(3.105013357584852643297928962404655527411588824590086874852821681255879716034110047983704062246200297), SC_(0.483787600475274902005315824815123563125627206793092078738418627128047510367947503407954861578483606) }, + { SC_(4.0533123016357421875), SC_(4.0533123016357421875), SC_(2.784885343934578513149804339717137368299390408067016796848041900953216841366437030241554499406837817), SC_(0.4339089217924731861183993826512701012093309775829357321262802724234704087971362274687905192149369188), SC_(3.633248057034100551992616925007293251544933537790836826819181148849941378229576909758754221971271051), SC_(0.5660910782075268138816006173487298987906690224170642678737197275765295912028637725312094807850630812) }, + { SC_(4.0533123016357421875), SC_(4.458643436431884765625), SC_(2.306553712479142633820833960152698687620756933527776352577981760649736926199934255571033388056820818), SC_(0.3593807682668325353265411226551952864628632629455109728805051026664326234974500588222530217351917741), SC_(4.11157968848953643132158730457173193222356701233007727108924128915342129339607968442927533332128805), SC_(0.6406192317331674646734588773448047135371367370544890271194948973335673765025499411777469782648082259) }, + { SC_(4.0533123016357421875), SC_(8.106624603271484375), SC_(0.2666208775089865235658723894506298859889618919139046778832877954885433336210504108700118485172825721), SC_(0.04154180987711253275131159150161436117019650310762690095170282803753763611183019192983825306101724165), SC_(6.151512523459692541576548875273800733855362053943948945783935254314614885974963388715345260029002709), SC_(0.9584581901228874672486884084983856388298034968923730990482971719624623638881698080701617469389827584) }, + { SC_(4.0533123016357421875), SC_(405.33123779296875), SC_(0.856277210194896595630413928210981825918823933239296642465635762524914381120581031266134384044083328e-168), SC_(0.1334153026588166560974220666148576952626885376443753701545306845816344804832677337563827322024911951e-168), SC_(6.418133400968679065142421264724430619844323945857853623667223049803158219596013940000308721378108868), SC_(1) }, + { SC_(4.125904560089111328125), SC_(0.0412590466439723968505859375), SC_(7.043701108728780223687961843391756553125884985884330252942520360436988162021941273534800312450456719), SC_(0.9999999354299987690775889622689157338228537326556764531411371319964512403841325237126723152152525859), SC_(0.4548118186280665790814208397404344920716063177183303025540785365853082955621661932085259124362671874e-6), SC_(0.6457000123092241103773108426617714626734432354685886286800354875961586747628732768478474741412221914e-7) }, + { SC_(4.125904560089111328125), SC_(2.0629522800445556640625), SC_(6.072072191835942345003502395331628487796947075384854346503939861579817399707683543874382853055509126), SC_(0.8620569933379949084958144772211332547216342276449289652619682285641417368272372653640214768414358773), SC_(0.9716293717046565067510385294809678057634299821057936247688830529357073476225532918266106679208600285), SC_(0.1379430066620050915041855227788667452783657723550710347380317714358582631727627346359785231585641227) }, + { SC_(4.125904560089111328125), SC_(3.713314056396484375), SC_(3.645460819462813679506809267954671376912867065616234453478114473126983778850729102493984996098169322), SC_(0.517549016887986978339058286692363497387152223601701127971415378456062142503029155666791422528985886), SC_(3.398240744077785172247731656857924916647509991874413517794708441388540968479507733207008524878199833), SC_(0.482450983112013021660941713307636502612847776398298872028584621543937857496970844333208577471014114) }, + { SC_(4.125904560089111328125), SC_(4.125904560089111328125), SC_(3.060437018394927204205753747690008049935223919046361115453354046814747587291189903564916268552459642), SC_(0.4344927153410745578456098812651452153289051685042500852197589537423872535948793029632960570229939795), SC_(3.983264545145671647548787177122588243625153138444286855819468867700777160039046932136077252423909513), SC_(0.5655072846589254421543901187348547846710948314957499147802410462576127464051206970367039429770060205) }, + { SC_(4.125904560089111328125), SC_(4.53849506378173828125), SC_(2.53067166889025350190244243571991561404324655614760134290664128572613080628587924183262210511980194), SC_(0.3592815007934807835237693104942265218080115344798406819595849604339747790292814616129198747747177498), SC_(4.513029894650345349852098489092680679517130501343046628366181628789393941044357593868371415856567215), SC_(0.6407184992065192164762306895057734781919884655201593180404150395660252209707185383870801252252822502) }, + { SC_(4.125904560089111328125), SC_(8.25180912017822265625), SC_(0.2847671704591532210212992508182019504542348463951231766726582961911245322997866584102488204616215587), SC_(0.04042862518951068067360068919978890036257988112029108744002473477277769872227048076109444781316316523), SC_(6.758934393081445630733241673994394343106142211095524794600164618324400215030449999868027066943372826), SC_(0.9595713748104893193263993108002110996374201188797089125599752652272223012777295192389055521868368348) }, + { SC_(4.125904560089111328125), SC_(412.5904541015625), SC_(0.9849192524234776299068794846278154032022691748510917397291620486958650212318203702782351817912528128e-171), SC_(0.1398297817615652167353884353734910667012437119857548398337840556682567999355250879796445061410496292e-171), SC_(7.043701563540598851754540924812596293560377057490647971272822914515524747330236835700993520976369155), SC_(1) }, + { SC_(5.0940532684326171875), SC_(0.0509405322372913360595703125), SC_(27.67920294027928923880958239390404343442040936899815307478598799340574231811557367409116092396038856), SC_(0.9999999982379693902044640226314365343521271029087308730060359246592570889283931854443539268908129371), SC_(0.4877160292145176564781609346656380162653242308676730589954979956027538802650302642256952953547903483e-7), SC_(0.1762030609795535977368563465647872897091269126993964075340742911071606814555646073109187062913416189e-8) }, + { SC_(5.0940532684326171875), SC_(2.54702663421630859375), SC_(24.74117379934670885485935851992100343082362193634847845591339750099791646326335667650716993806822169), SC_(0.8938542706281541291842093703813781663719803706713169378020847920356047543953828832584130123038596963), SC_(2.938029189704183305401989521799133470160589059182097705639896391957625415127605024087017408461696412), SC_(0.1061457293718458708157906296186218336280196293286830621979152079643952456046171167415869876961403037) }, + { SC_(5.0940532684326171875), SC_(4.58464813232421875), SC_(14.7675729987104578095439138929485472282856177526532559945486889320051407963321233374742042261580975), SC_(0.533525947425295841907088598191442498030625003421091351895084173752215277026432917855884840150812328), SC_(12.9116299903404343507174341487715896726985932428773201670046049609504010820588383631199831203718206), SC_(0.466474052574704158092911401808557501969374996578908648104915826247784722973567082144115159849187672) }, + { SC_(5.0940532684326171875), SC_(5.0940532684326171875), SC_(12.2077823592235985003120696793331736918834158602172392466220471092575502398077890469114806062483926), SC_(0.4410452990302015213950895634100686065935382954619870959119191902708416268312625047813299941800307603), SC_(15.4714206298272936599492783623869632091007951353133369149312467836979916385831726536827067402815255), SC_(0.5589547009697984786049104365899313934064617045380129040880808097291583731687374952186700058199692397) }, + { SC_(5.0940532684326171875), SC_(5.603458404541015625), SC_(9.889218349233061197877388817321731640408509396976489163081870258238303847158703369099418745543914618), SC_(0.3572797364557409966350802086721683228140681945237226616673898786823074886738611252458152925379220831), SC_(17.78998463981783096238395922439840526057570159855408699847142363471723803123225833149476860098600348), SC_(0.6427202635442590033649197913278316771859318054762773383326101213176925113261388747541847074620779169) }, + { SC_(5.0940532684326171875), SC_(10.188106536865234375), SC_(0.7822639090209128469017740014404389278213317993585533146649871947711294107004337683013750571158629812), SC_(0.02826179313509692702070705503881066214744470133414852372658706264644174732638031855325556636515647396), SC_(26.89693908002997931335957404027969797316287919617202284688830669818441246769052793229281228941405512), SC_(0.971738206864903072979292944961189337852555298665851476273412937353558252673619681446744433634843526) }, + { SC_(5.0940532684326171875), SC_(509.40533447265625), SC_(0.7152104781583126172577145380526976040514099585854760760296929839567558638220447646872943192480272666e-210), SC_(0.2583927284471411991649181400315680779298102709841549255602666891812445052621672738125161953683807107e-211), SC_(27.6792029890508921602613480417201369009842109955305761615532938929555418783909617005941873465299181), SC_(1) }, + { SC_(5.596034526824951171875), SC_(0.0559603460133075714111328125), SC_(61.15722298035936537017631415308397274094789448016853597795214965840284033719264656727655832204443666), SC_(0.9999999997257414964174877578408388041720660119221931882256703080064742903832273083681210101174925492), SC_(0.1677288846245549632144093838722156507107886394056152268018954428714206090657606391814637409180190668e-7), SC_(0.2742585035825122421591611958279339880778068117743296919935257096167726916318789898825074508024511567e-9) }, + { SC_(5.596034526824951171875), SC_(2.7980172634124755859375), SC_(55.46393259928605398529060926253574732815503627091789196500276832668377548368528636291175384881761946), SC_(0.9069073100635526558798059992027420822892194195122167747431420995473747342347831577133123881324620939), SC_(5.693290397846199847341201211989163800014423280329507953510904011908609140649421110940868391373191292), SC_(0.09309268993644734412019400079725791771078058048778322525685790045262526576521684228668761186753790609) }, + { SC_(5.596034526824951171875), SC_(5.03643131256103515625), SC_(33.06999514374162703858384175791605334015778919486040062421563603498081622981834289402299137207575168), SC_(0.540737357307612291724814748021271665690168505397520383106887245752994682792873843998172538751374452), SC_(28.08722785339062679404796871660885778801167035638699929429803630361156839451636457982963086811505907), SC_(0.459262642692387708275185251978728334309831494602479616893112754247005317207126156001827461248625548) }, + { SC_(5.596034526824951171875), SC_(5.596034526824951171875), SC_(27.13866373600460678031845259439722547760861637796306913755584505521252241888403927165288899075121503), SC_(0.4437523877968948326787741867613129330637102551518554802656301099528107574898532377937055841574056371), SC_(34.01855926112764705231335788012768565056084317328433078095782728337986220545066820219973324943959573), SC_(0.5562476122031051673212258132386870669362897448481445197343698900471892425101467622062944158425943629) }, + { SC_(5.596034526824951171875), SC_(6.155638217926025390625), SC_(21.76560826597825775813388197172226288040312333241899565785904138891289832424017292540738182267709586), SC_(0.3558959547100246363088689929831473651825033493608960519357567107283879526378383673378203376307166769), SC_(39.39161473115399607449792850280264824776633621882840426065463094967948630009453454844524041751371489), SC_(0.6441040452899753636911310070168526348174966506391039480642432892716120473621616326621796623692833231) }, + { SC_(5.596034526824951171875), SC_(11.19206905364990234375), SC_(1.439537901002514156618214155186974257624221351786322250188529023352495566195413144729463286616539014), SC_(0.02353831371758027773053258284343068010883900114479589930362450438816623513130470385989369552255442408), SC_(59.71768509612973967601359631933793687054523819946107766832514331523988905813929432912315895357427174), SC_(0.9764616862824197222694674171565693198911609988552041006963754956118337648686952961401063044774455759) }, + { SC_(5.596034526824951171875), SC_(559.60345458984375), SC_(0.3983234659181026903111274462700552641513723834582819185339327841139441160602206309682112473658483409e-230), SC_(0.651310583439638233092076574184467552529925632573274100844292568873582641191086352985401355931335791e-232), SC_(61.15722299713225383263181047452491112816945955124739991851367233859238462433470747385262224019081075), SC_(1) }, + { SC_(10.16461181640625), SC_(0.101646117866039276123046875), SC_(526448.7517568289326110671748510600657971966253053947023808993666002906407096023537805535160810892685), SC_(0.9999999999999999862329405727010614237121156955436061306289155513366940944973015989290727877130269392), SC_(0.7247651250863610508447105825162161128155794519669560025006923071554784515195617094058138920506057017e-11), SC_(0.1376705942729893857628788430445639386937108444866330590550269840107092721228697306082545409586221235e-16) }, + { SC_(10.16461181640625), SC_(5.082305908203125), SC_(510322.9302643930829189712815409463837708346310819194595468756491664935321137893514321335165070003787), SC_(0.9693686775044638948930091763509897559191009201137438746311935914342605022120771270176313690471277963), SC_(16125.82149243585693974714417372419047346781938563637098981823710335713360273607390320451476970598384), SC_(0.0306313224955361051069908236490102440808990798862561253688064085657394977879228729823686309528722037) }, + { SC_(10.16461181640625), SC_(9.14815044403076171875), SC_(309968.4341614876446448332739272161205883835978589370895483864634223256229622694639843445566624856873), SC_(0.5887912795444610424180501080193144141510684557554702797492628985066881626745530757318797160171077655), SC_(216480.3175953412952138851517874544536559188526086187409883074228475250427542559613509934746142206752), SC_(0.4112087204555389575819498919806855858489315442445297202507371014933118373254469242681202839828922345) }, + { SC_(10.16461181640625), SC_(10.16461181640625), SC_(241256.7047700055017897072029796756492117395946188754112428022558826674974871019242969791298393214097), SC_(0.4582719665777533873524111830161408363528108382771615842424631439789215288234234671384465952290754492), SC_(285192.0469868234380690112227349949250325628558486804192938916303871831682294235010383589014373849529), SC_(0.5417280334222466126475888169838591636471891617228384157575368560210784711765765328615534047709245508) }, + { SC_(10.16461181640625), SC_(11.18107318878173828125), SC_(178942.1777796453571690127175124224988678522659240040265896878601138154683469866109080855101605355064), SC_(0.3399042683309471278708545053913110708272442887424368187756502758173278088205879154522251908513691296), SC_(347506.5739771835826897057082022480753764501845435518039470060261560351973695388144272525211161708562), SC_(0.6600957316690528721291454946086889291727557112575631812243497241826721911794120845477748091486308704) }, + { SC_(10.16461181640625), SC_(20.3292236328125), SC_(2485.195013467645101936126206725504402616278686263740815967196583615169019487481725321208547786293062), SC_(0.004720677948564264738297012343425614540389100171646133722525726370697436134069646508149238537023878915), SC_(523963.5567433612947567822995079450698416861717812920897207266896862354966970379436100168227289200695), SC_(0.9952793220514357352617029876565743854596108998283538662774742736293025638659303534918507614629761211) }, + { SC_(10.16461181640625), SC_(1016.461181640625), SC_(0.1316034062561936442010407628172436633248840383182737471639489492599344416496848609453262970601035471e-413), SC_(0.2499833190163633494640443799689533877375622476756834298036337428098160854559625455157155261437961898e-419), SC_(526448.7517568289398587184257146705742443024504675558305366938862698506657165254253353380312767063626), SC_(1) }, + { SC_(10.20526981353759765625), SC_(0.102052696049213409423828125), SC_(577373.2306846846427549334134715517585780256766692203486186052483423835657439070864386632630415473474), SC_(0.9999999999999999881380840833286780649242379976641395794604783446096901891113163248466984120192341719), SC_(0.6848752714918603737059034404508144842114313361494961762164489761147249616550722765380537590095751718e-11), SC_(0.1186191591667132193507576200233586042053952165539030981088868367515330158798076582805259918447900967e-16) }, + { SC_(10.20526981353759765625), SC_(5.102634906768798828125), SC_(559853.9016749728948664889804306760919895279094938352780099902896618071406942326153743697118411159219), SC_(0.9696568388026298724571840350939331650882365861759024141348056816418178953439691167122162876175433685), SC_(17519.3290097117547371971479594794036475321716835299127229283201755381872141642322115431677511541908), SC_(0.03034316119737012754281596490606683491176341382409758586519431835818210465603088328778371238245663146) }, + { SC_(10.20526981353759765625), SC_(9.18474292755126953125), SC_(340147.9462823947749012509541247636967506308559672224065950062576671962159915495947335122182088642714), SC_(0.5891300950669750348303000724524594141538414517925522781976587063475430962359440531500812541019011577), SC_(237225.2844022898747024351742653917988864292252101427841379123521701491119168472528524006613834058414), SC_(0.4108699049330249651696999275475405858461585482074477218023412936524569037640559468499187458980988423) }, + { SC_(10.20526981353759765625), SC_(10.20526981353759765625), SC_(264642.0355283880203354293582319738606772548833999212092816412356457170370548472871640485965341000375), SC_(0.458355222348218734574721395669230340113102133148116484166472456571094271633807629470156631602057135), SC_(312731.1951562966292682567701581816349598051977774439814512773741916282908535495604218642830581700752), SC_(0.541644777651781265425278604330769659886897866851883515833527543428905728366192370529843368397942865) }, + { SC_(10.20526981353759765625), SC_(11.22579669952392578125), SC_(196165.1943714897001070837876769128811521133449935447128366760236479837696847141804665530610309415742), SC_(0.3397545711270073270001418665061276945171161175678639012711536412399231965503301884012220485465706226), SC_(381208.0363131949494966023407132426144849467361838204778962425861893615582236826671193598185613285386), SC_(0.6602454288729926729998581334938723054828838824321360987288463587600768034496698115987779514534293774) }, + { SC_(10.20526981353759765625), SC_(20.4105396270751953125), SC_(2687.807494956632209305226925263539027707814430482777438134001803826256877532124652263840735300645464), SC_(0.00465523400135691249187809344920426062408119894589239915961933246326731876789921752461035407957902137), SC_(574685.4231897280173943809014648919566093522667468824132947846080335190710308647229336490388569694673), SC_(0.9953447659986430875081219065507957393759188010541076008403806675367326812321007824753896459204209786) }, + { SC_(10.20526981353759765625), SC_(1020.5269775390625), SC_(0.310268388782846312556113793189296201730642609204061744839707355617600836642995498294123949804615074e-415), SC_(0.5373792415261632321738888075178751878408184659845876901847706207467620051062405280412592787379049203e-421), SC_(577373.2306846846496036861283901554956370600811773651907329186098373453279083968475859128795922701127), SC_(1) }, + { SC_(11.43124485015869140625), SC_(0.114312447607517242431640625), SC_(10092714.27309532865006107109984160134119234856106351823087953061069644032877254771706374464745498706), SC_(0.9999999999999999998666174677841348871581941134561745067532121430792042081738322222250547480632532191), SC_(0.1346191786676659318338674079302806447239984506476369087821979614833382259967443019093939770966916552e-11), SC_(0.1333825322158651128418058865438254932467878569207957918261677777749452519367467809248161582099366587e-18) }, + { SC_(11.43124485015869140625), SC_(5.715622425079345703125), SC_(9861857.89770996609832128396408583707303095590511419947407646424015770697972718340652782972235297002), SC_(0.9771264330745230394774993912717105823318898449977215560791859715857993651357963116304442071641029835), SC_(230856.375385362553085978922432423586500066735252125204043050877015102436867343925369297185069460058), SC_(0.02287356692547696052250060872828941766811015500227844392081402841420063486420368836955579283589701649) }, + { SC_(11.43124485015869140625), SC_(10.288120269775390625), SC_(6044328.351701444163117136726935374422948885961562834124412634550509169251766297134653929432409387567), SC_(0.5988803594503931822638682857302466014155135206406258678784897866848793983791726668665245270529145337), SC_(4048385.92139388448829012615958288623658213667880349055370688056666364016482823019724319747501304251), SC_(0.4011196405496068177361317142697533985844864793593741321215102133151206016208273331334754729470854663) }, + { SC_(11.43124485015869140625), SC_(11.43124485015869140625), SC_(4649239.343730333416785270770745004484050098527993233900794668999765895229232415000629557944691295372), SC_(0.4606530233521077294152024750299237055842955337979822338527585311794384579895769952369289167626081443), SC_(5443474.929364995234621992115773256175480924112373090777324846117406914187362112331267568962731134705), SC_(0.5393469766478922705847975249700762944157044662020177661472414688205615420104230047630710832373918557) }, + { SC_(11.43124485015869140625), SC_(12.5743694305419921875), SC_(3383643.259017955796656659800421550658071647827116022061323174865995550559638743908600655129998019828), SC_(0.3352560240447813866302950168902559329877251310883796302241206663571916768101959060721830654067811942), SC_(6709071.01407737285475060308609671000145937481325030261679634025117725885695578342329647177742441025), SC_(0.6647439759552186133697049831097440670122748689116203697758793336428083231898040939278169345932188058) }, + { SC_(11.43124485015869140625), SC_(22.8624897003173828125), SC_(30903.23819404242335935936940603101334889108464504016271537068360076922751316540958525260106484009169), SC_(0.003061935308762558208178728021795206614635030454948539057317932317318345947846257896724761649811585573), SC_(10061811.03490128622804790351711222964618213155572128451540414443357204018908136192231187430635758999), SC_(0.9969380646912374417918212719782047933853649695450514609426820676826816540521537421032752383501884144) }, + { SC_(11.43124485015869140625), SC_(1143.12451171875), SC_(0.2825091954340953009223059204899029922029808650851997121188393575907468437445133167654127981344263404e-464), SC_(0.2799139931932827031436483629166505964509166426649585944925188286961163103917655940175015718274800062e-471), SC_(10092714.27309532865140726288651826065953102264036632467811951511717280941659452733189712690742243008), SC_(1) }, + { SC_(11.690219879150390625), SC_(0.1169022023677825927734375), SC_(18808650.09647313719510484406379451190987476255652989262673651261747569800509024507405117261863593745), SC_(0.9999999999999999999482740410833571655579119508141820216007520043338661674579848313795238343269759304), SC_(0.9728954621676797791931442327068294215572730291035264661698800172338583782500576230469904563164771399e-12), SC_(0.5172595891664283444208804918581797839924799566613383254201516862047616567302406961212107454491705266e-19) }, + { SC_(11.690219879150390625), SC_(5.8451099395751953125), SC_(18403136.32293801297862003201902408909834415774760242627319828965105147433679686168281916722125529121), SC_(0.9784400384155605487060520174330022751307330330759436520601522975594544824581516995082778940800448561), SC_(405513.7735351242174577075069381025907237490416342957750954959955277501344632634084658637756307038608), SC_(0.02155996158443945129394798256699772486926696692405634793984770244054551754184830049172210591995514393) }, + { SC_(11.690219879150390625), SC_(10.521198272705078125), SC_(11300880.43696190252412840183812525987009577873512453086890997708560684499549236858946077668992759675), SC_(0.6008342108018141266570377919053377860276755642851878451502716798990410627223006118782210055474487012), SC_(7507769.659511234671949337687836931818972128054112191179383808560972379475767756501824254306958398325), SC_(0.3991657891981858733429622080946622139723244357148121548497283201009589372776993881217789944525512988) }, + { SC_(11.690219879150390625), SC_(11.690219879150390625), SC_(8672509.587204027141047449650776982999738766147950698614692257038746897122992915467614482619093048385), SC_(0.4610915479165745005058792025348932322301556237469077614037776843609409871777916052071130909569703745), SC_(10136140.50926911005503028987518520868932914064128602343360152860783232734826720962367054837779294669), SC_(0.5389084520834254994941207974651067677698443762530922385962223156390590128222083947928869090430296255) }, + { SC_(11.690219879150390625), SC_(12.859241485595703125), SC_(6287954.452547948509208548248214985257796689301980330059387321687317937525963079472467938262956331912), SC_(0.3343118416417890887558019505752886442912001812613510817941400655214992910141971185748270762169440714), SC_(12520695.64392518868686919127774720643127121748725639198890646395926128694529704561881709273392966316), SC_(0.6656881583582109112441980494247113557087998187386489182058599344785007089858028814251729237830559286) }, + { SC_(11.690219879150390625), SC_(23.38043975830078125), SC_(52737.51434305912576323185862500387385932919089021157164745379299882357348980714607562137085667999636), SC_(0.00280389682792536425523049315988273139570015031106610400530594250374235193086174809886542601431038023), SC_(18755912.58213007807031450766733718781520857759834651047664633185358040089777031794520940962602931508), SC_(0.9971961031720746357447695068401172686042998496889338959946940574962576480691382519011345739856896198) }, + { SC_(11.690219879150390625), SC_(1169.02197265625), SC_(0.1258615995440589928894183874007422367750084251989841842081504821900762607529866900998826187957908956e-474), SC_(0.6691687010949268225465318941737153385818662177946591999560276217475180189765295773415664733761718407e-482), SC_(18808650.09647313719607773952596219168906790678923672204829378564657922447126012509128503099688599507), SC_(1) }, + { SC_(12.955684661865234375), SC_(0.12955684959888458251953125), SC_(428307852.9299610352603272531082713661888583896816721467285635713930220656308480438015333066490233856), SC_(0.9999999999999999999994931466175300998756585605008867059180111770451931648396874370987015073892720435), SC_(0.2170892839959712731982318236572811524135888980905680524672678879721525025563824491887194028197413803e-12), SC_(0.5068533824699001243414394991132940819888229548068351603125629012984926107279565026351600154505463801e-21) }, + { SC_(12.955684661865234375), SC_(6.4778423309326171875), SC_(421374733.0132156786323395479536985347385054384758892122222388740186536130714245698919518873402614582), SC_(0.9838127648855434508747718544662632241604964065002861046456693601242792566621453902265899448045645527), SC_(6933119.916745356628204794438568802723551183029440215658738286272459020611890741797553571811318309833), SC_(0.01618723511445654912522814553373677583950359349971389535433063987572074333785460977341005519543544731) }, + { SC_(12.955684661865234375), SC_(11.6601161956787109375), SC_(261236298.1802810712987621880492469341863720184791952589453116572293797457059112363561962554804359674), SC_(0.6099264731973048601765626963152049375033628810929236912032334489202859499894588556091532155300537837), SC_(167071554.7496799639617821543430204032756846030261341689356655030617328879774040753333092036711438006), SC_(0.3900735268026951398234373036847950624966371189070763087967665510797140500105411443908467844699462163) }, + { SC_(12.955684661865234375), SC_(12.955684661865234375), SC_(198324381.4075037895099229974788883561027751227741976333555245513098366363563827914775435905585750081), SC_(0.463041665126636723998208693638109693540497596502913514966430552698722979583809022802525261569028313), SC_(229983471.5224572457506213449133789813592814987311317945254526089812759973269325202119618685930047599), SC_(0.536958334873363276001791306361890306459502403497086485033569447301277020416190977197474738430971687) }, + { SC_(12.955684661865234375), SC_(14.2512531280517578125), SC_(141230735.8874254973009250665663136967557618612703682420576794746955312856987659231137965544806836993), SC_(0.3297411778030607998826961047847508828762412676958433501823084815947456559906204692400882833540571914), SC_(287077117.0425355379596192758259536407062947602349611858232976855955813479845493885757089046708960687), SC_(0.6702588221969392001173038952152491171237587323041566498176915184052543440093795307599117166459428086) }, + { SC_(12.955684661865234375), SC_(25.91136932373046875), SC_(782663.7179885857699463656633848430264031052969771539557675230756095485493336709682441798241628222402), SC_(0.001827339173527996727830528639480721240580411776852898202182852341611686756472171024979973209292115479), SC_(427525189.2119724494905979767288824944356535162083522739252096372155030851339816407212612793274169458), SC_(0.9981726608264720032721694713605192787594195882231471017978171476583883132435278289750200267907078845) }, + { SC_(12.955684661865234375), SC_(1295.5684814453125), SC_(0.3608905612956014718728360841492827803469208542262913410930444827586924022284529876190332295426303354e-525), SC_(0.8425961812906942803681327965776686513602182735742397059258730975433205218108675823256993369297423774e-534), SC_(428307852.929961035260544342392267337462056621505329427880977160291112633683315311689505459151579768), SC_(1) }, + { SC_(13.02671527862548828125), SC_(0.13026715815067291259765625), SC_(512456131.8985713439314859419608942682232163312465814764055829216540810809686139697165303818929464912), SC_(0.9999999999999999999996089876375785556082730797020993512933501586157431890909903416996448292097006065), SC_(0.2003766827710156884109668719700088927792368234308933522173719858336365747396436227576944718509904221e-12), SC_(0.3910123624214443917269202979006487066498413842568109090096583003551707902993935349855742150116524265e-21) }, + { SC_(13.02671527862548828125), SC_(6.513357639312744140625), SC_(504292381.474701294755093414572451066507117979650827675327943247721717397051500332708321678088535672), SC_(0.9840693672771079811296047831348781934315010146617578374281868772416224693552294962586520546484570965), SC_(8163750.423870049176592904071214217404509318467723809970418910755794577269331008994042340379150462875), SC_(0.01593063272289201887039521686512180656849898533824216257181312275837753064477050374134794535154290351) }, + { SC_(13.02671527862548828125), SC_(11.72404384613037109375), SC_(312811511.370335737099981249504067629884221760261211771521346728405536483503354994366811296188166823), SC_(0.6104161739882340392601054170315919816474360234103221597660888635095434009477428140163224523528671548), SC_(199644620.5282356068317050691395976540274055378573397137770154300719754908174763473355527222795193118), SC_(0.3895838260117659607398945829684080183525639765896778402339111364904565990522571859836775476471328452) }, + { SC_(13.02671527862548828125), SC_(13.02671527862548828125), SC_(237340275.6027451556138298054657455871810468338727042152922779419653686854991039505324284434247676821), SC_(0.4631426200783974405370941094794755868570526389877988716806381827967014116363337785340168914481043737), SC_(275115856.2958261883178565131779196967305804642458472700060842165121432888217273911699355750429184527), SC_(0.5368573799216025594629058905205244131429473610122011283193618172032985883636662214659831085518956263) }, + { SC_(13.02671527862548828125), SC_(14.32938671112060546875), SC_(168847646.3349317777841126601706798558420196115600418111455114346072639519130067900201172194868835417), SC_(0.3294870249856844408300641114781382399843859209915639742593184635620302309477771038338395768606135993), SC_(343608485.5636395661475736584729854280696076865585096741528507238702480224078245516822467989808025932), SC_(0.6705129750143155591699358885218617600156140790084360257406815364379697690522228961661604231393864007) }, + { SC_(13.02671527862548828125), SC_(26.0534305572509765625), SC_(914280.5548544152313447697527713571522430738687645775272692644719732005123160962050476620622257883637), SC_(0.001784114771867683680926146018659266869823838208792181637779845196865282058025525019741183868065175688), SC_(511541851.3437169287003415488908939267593842242497869077710928940055387738085152454973163564054603465), SC_(0.9982158852281323163190738539813407331301761617912078183622201548031347179419744749802588161319348243) }, + { SC_(13.02671527862548828125), SC_(1302.6715087890625), SC_(0.5274845075196482758038095191814406458190839939289614665512784576361913542768287604269607416957925801e-528), SC_(0.1029326169959951705444305337097507872401946111420602895456564021725725915339783433545496866599037744e-536), SC_(512456131.8985713439316863186436652839116272981185514852983621584775119743208313417023640184676861348), SC_(1) }, + { SC_(13.13518810272216796875), SC_(0.131351888179779052734375), SC_(674462743.149046021333390617481295959023056986603542715040607449857491437739458385055464991102676626), SC_(0.9999999999999999999997369080074745518228972214981883535468573358653548249895577011421471030914587901), SC_(0.1774457469792620895637286596897675892819508337779648920502389182467829092033972469924933804244251644e-12), SC_(0.2630919925254481771027785018116464531426641346451750104422988578528969085412098813617471539843505748e-21) }, + { SC_(13.13518810272216796875), SC_(6.567594051361083984375), SC_(663976926.1089374238943691132089675858087901675766470056460066856592084102466099092517459591908307117), SC_(0.9844530818838848876935027066618934383202331954767309237438114406387621679702882223974106888092838142), SC_(10485817.04010859743919895001930763530383054768658547698388271503206099238489871472196581482104931156), SC_(0.01554691811611511230649729333810656167976680452326907625618855936123783202971177760258931119071618575) }, + { SC_(13.13518810272216796875), SC_(11.82166957855224609375), SC_(412204696.8307228050226802056656929347987682947430983234210100097034419624393912194117092522454628402), SC_(0.6111600692814426197272298752058182998679453431437421326863094888154883792517219522694163434483279862), SC_(262258046.3183232163108878575625822863138524205201341592088793909878274401921174045620025217664171831), SC_(0.3888399307185573802727701247941817001320546568562578673136905111845116207482780477305836565516720138) }, + { SC_(13.13518810272216796875), SC_(13.13518810272216796875), SC_(312475356.5824610108259197670087841857841677515456614597483364235579229992958904626165438099339229377), SC_(0.4632952075655403599296609250301929956592682160503649373632741625393833157586404593759340018391217222), SC_(361987386.5665850105076482962194910353284529637175710228815529771333464033356181613571679640779570856), SC_(0.5367047924344596400703390749698070043407317839496350626367258374606166842413595406240659981608782778) }, + { SC_(13.13518810272216796875), SC_(14.44870662689208984375), SC_(221965306.4670367895193649944193082058184659433738135892152877254368739610191574173118140847631220421), SC_(0.3290994331735620100541463324249882725381274772589466481096043917775520409559812138661513849624454252), SC_(452497436.6820092318142030688089670152941547718894188934146016752543954416123512066618976892487579812), SC_(0.6709005668264379899458536675750117274618725227410533518903956082224479590440187861338486150375545748) }, + { SC_(13.13518810272216796875), SC_(26.2703762054443359375), SC_(1160144.237126138624187141036000326831571587831367159333885546778122263569600144913457664578892051587), SC_(0.00172010129382308129961759508663594167621919741616388826502029075371462769318294133239408670606225463), SC_(673302598.9119198827093809221922748942810491274318653232960038539131471390619084790602541094329879717), SC_(0.9982798987061769187003824049133640583237808025838361117349797092462853723068170586676059132939377454) }, + { SC_(13.13518810272216796875), SC_(1313.518798828125), SC_(0.2470999421474821597235308289076325123722724994380264375823050668524525489555593662545862037094478454e-532), SC_(0.366365591958096973621356895786731892565071702842932462698171708959737407171613677057820056708003288e-541), SC_(674462743.1490460213335680632282752211126207152632324826298894006912694026315086239737117740118800232), SC_(1) }, + { SC_(13.97996234893798828125), SC_(0.1397996246814727783203125), SC_(5910654223.190215788712221244871743080011197576752925099373275489303262915640348520934061734994150573), SC_(0.9999999999999999999999879657225377205875821928652771785191473449506712055920921533669426197462676218), SC_(0.7113045290546464179234042403712777588894648193088517664505293313012094595346443734096983315932600523e-13), SC_(0.1203427746227941241780713472282148085265504932879440790784663305738025373237822347500872273073455932e-22) }, + { SC_(13.97996234893798828125), SC_(6.989981174468994140625), SC_(5834591455.204726395692966509334949983448949816609165568973206349678278441343056643384796214613337078), SC_(0.987131243833032871289435934724229856545636807331228828080240151990052328357325478870385325351915856), SC_(76062767.9854893930193258659896985612040401005677966581759580861069153594739369304823956413267669592), SC_(0.01286875616696712871056406527577014345436319266877117191975984800994767164267452112961467464808414404) }, + { SC_(13.97996234893798828125), SC_(12.581966400146484375), SC_(3645682417.055270454909039050896463482121995407579205967853528083906892713884167560195360975199787665), SC_(0.6167984590862346659620227837574966526888365201825142428286346309357175181938035409936078191562891425), SC_(2264971806.134945333803253324428185062530994509597756259295636351878301086932826013671830880740316372), SC_(0.3832015409137653340379772162425033473111634798174857571713653690642824818061964590063921808437108575) }, + { SC_(13.97996234893798828125), SC_(13.97996234893798828125), SC_(2745038337.187854045315426210338854801937918819786231725118964785963145351775581938865427692338810608), SC_(0.4644220814707457863066850889417751896925992503532795557288541594665052367354920088452455876392165752), SC_(3165615886.002361743396866164985793742715071097390730502030199649822048449041411635001764163601293429), SC_(0.5355779185292542136933149110582248103074007496467204442711458405334947632645079911547544123607834248) }, + { SC_(13.97996234893798828125), SC_(15.3779582977294921875), SC_(1927484556.644093124630203748371939369194765925990182162651410153287629164154294410760321585479953314), SC_(0.3261034200041146790989240264695734427314492477291489582445757583647475157176232002651402312794889128), SC_(3983169666.546122664082088626952709175458223991186780064497754282497564636662699163106870270460150724), SC_(0.6738965799958853209010759735304265572685507522708510417554242416352524842823767997348597687205110872) }, + { SC_(13.97996234893798828125), SC_(27.9599246978759765625), SC_(7654483.186801090100537714035584375193497829795309590853892322241194318416741649436494892589707636116), SC_(0.001295031463144812467127192586077620504138884124885789866256689374017177058012435430963859346037459526), SC_(5902999740.003414698611754661289064169459492087381652636295272113543999482400251924430696963350396401), SC_(0.9987049685368551875328728074139223794958611158751142101337433106259828229419875645690361406539625405) }, + { SC_(13.97996234893798828125), SC_(1397.9962158203125), SC_(0.4904055013445335192081644569377050869408725751456187962087537739151806712693260228909162408012585564e-566), SC_(0.8296974968023795406403636046332098503901341147128570365381899499874129277768061303222081786262785186e-576), SC_(5910654223.190215788712292375324648544652989917176962227149164435785193800816993573867191855940104038), SC_(1) }, + { SC_(14.6176910400390625), SC_(0.1461769044399261474609375), SC_(31519660692.46732869024507548930255355037911967853982013619073232752287228676685262808266616357023475), SC_(0.9999999999999999999999988262022081047083637867115105431672767937099294804939606827117361373440617719), SC_(0.3699770812210696935052738468272719392639976126676660909447300836125736319652385357274634161244738223e-13), SC_(0.1173797791895291636213288489456832723206290070519506039317288263862655938228112823005203089694088953e-23) }, + { SC_(14.6176910400390625), SC_(7.30884552001953125), SC_(31167676066.53819320268775033554383183668915678842267327077390827766233702619851138225770041728674243), SC_(0.9888328548532486607187315154742385428946975992906366683009569310574627106952660842066882798361149288), SC_(351984625.9291354875573621514668438206593134175018295926107504496218020271774357188333270036466888455), SC_(0.01116714514675133928126848452576145710530240070936333169904306894253728930473391579331172016388507115) }, + { SC_(14.6176910400390625), SC_(13.15592193603515625), SC_(19570099125.17619591839157549727399135699664622021454089386800376892678575276928964259150260565678158), SC_(0.6208854630802901388078823599882107695046878069749612390348018710748344169356894334952666853220906794), SC_(11949561567.2911327718535369897366843003518239857099619695166549583573533006066574584995248152766497), SC_(0.3791145369197098611921176400117892304953121930250387609651981289251655830643105665047333146779093206) }, + { SC_(14.6176910400390625), SC_(14.6176910400390625), SC_(14663174041.62329589286157476555665532316684047736790110136618108283672007259962930914321076294643401), SC_(0.4652072300108087472989370315496163171674553210918711166218977367743499765120963404563966124119965452), SC_(16856486650.84403279738353772145402033418162972855660176201847764444741898077631779194781665798699727), SC_(0.5347927699891912527010629684503836828325446789081288833781022632256500234879036595436033875880034548) }, + { SC_(14.6176910400390625), SC_(16.07946014404296875), SC_(10208254949.95474011323030351891374929422125927587483711019999378034427865583445953237712100199414539), SC_(0.3238694429345282315849777562083497540056373466077788064582305202611175575489044591459168374933849395), SC_(21311405742.51258857701480896809692636312721093004966575318466494693986039754148756871390641893928588), SC_(0.6761305570654717684150222437916502459943626533922211935417694797388824424510955408540831625066150605) }, + { SC_(14.6176910400390625), SC_(29.235382080078125), SC_(32971860.19730178971973540202322703289367756075704569326375433484278668485265826215878064441900777299), SC_(0.001046072815281971369803623292538810967586955544013035650202721488810712223514607317283434291440339657), SC_(31486688832.2700269005253770849874486244547926451674571701209043924413523685232888389322467765144235), SC_(0.9989539271847180286301963767074611890324130444559869643497972785111892877764853926827165657085596603) }, + { SC_(14.6176910400390625), SC_(1461.76904296875), SC_(0.1837274079575618742766879005299834658627116636844600755320690895283356083117515247134201226837863009e-591), SC_(0.582897797505382567251331463700908656294340864527281077988266795290426761472904565814301996724821859e-602), SC_(31519660692.46732869024511248701067565734847020592450286338465872728413905337594710109102742093343128), SC_(1) }, + { SC_(15.336841583251953125), SC_(0.153368413448333740234375), SC_(215436787840.6498033688917411866254554010770010131069213759384360723674889461686630652718805258804018), SC_(0.9999999999999999999999999148485315207308540004075712638988833762504006371042308450906072774722223372), SC_(0.1834475884908808615605608835896651292613264330272229633202545339026271260427924082770171227467220434e-13), SC_(0.8515146847926914599959242873610111662374959936289576915490939272252777766282781701203107405425700438e-25) }, + { SC_(15.336841583251953125), SC_(7.6684207916259765625), SC_(213384824992.9052364637114384909819338645548208970293503896610050350679660061831289096487146448490807), SC_(0.9904753367875948658270835237141575556584719960813703255231980192119260412752367578246294012965590539), SC_(2051962847.744566905180321040402370624608336172165929952790357169942825662281866181076556143743925379), SC_(0.009524663212405134172916476285842444341528003918629674476801980788073958724763242175370598703440946086) }, + { SC_(15.336841583251953125), SC_(13.803157806396484375), SC_(134720211860.4548611287388876929883995204139312197219408661949178622718381989099790865809877468741051), SC_(0.6253352234350158986935261816939058679169668330549521716353734259576857532926282315296200027359765981), SC_(80716575980.19494224015287183839590496874922584947333947625644434273895346955501600414428304171890089), SC_(0.3746647765649841013064738183060941320830331669450478283646265740423142467073717684703799972640234019) }, + { SC_(15.336841583251953125), SC_(15.336841583251953125), SC_(100400688935.4222160975494486837492402074062990767741539099850036046124232390446875671072780594417965), SC_(0.4660331689018901135802494246196675916860931081624262487549716442041703786207708749685033937059692576), SC_(115036098905.2275872713423108476350642817568579924211264324663586003983684294203075236179927291512095), SC_(0.5339668310981098864197505753803324083139068918375737512450283557958296213792291250314966062940307424) }, + { SC_(15.336841583251953125), SC_(16.870525360107421875), SC_(69237106647.76667230123541673252468882864012136830942283792768861865827159001615589439706354373051019), SC_(0.3213801474749923490073107293069496826347224116190437754824150484504253858384552328328361273362056147), SC_(146199681192.8831310676563427988596156605230357008858575045236735863525200784488391963282072448624958), SC_(0.6786198525250076509926892706930503173652775883809562245175849515495746141615447671671638726637943853) }, + { SC_(15.336841583251953125), SC_(30.67368316650390625), SC_(177275987.6165810846503610228623973761521339712590722174965710791805742989978957836823604406599922882), SC_(0.0008228677627133264929670679883746045178882045392737923039990478413887702709616184713423333253791173162), SC_(215259511853.0332222842413985085219071130110230979362081249547911258302173694670993070429103479330137), SC_(0.9991771322372866735070329320116253954821117954607262076960009521586112297290383815286576666746208827) }, + { SC_(15.336841583251953125), SC_(1533.6842041015625), SC_(0.404464971677354272300312220400653389892978951222954756005578734194759082033914650851922271652032288e-620), SC_(0.1877418317137745528841881453283099269043893205561465806855915096531083786826342825765137005225113593e-631), SC_(215436787840.649803368891759531384304489163157069195280342451362205010791668464995090725270788593006), SC_(1) }, + { SC_(16.18250274658203125), SC_(0.1618250310420989990234375), SC_(2158821770372.760492818531138994384948323849490402693726980347001345582980390894754178152171031601257), SC_(0.9999999999999999999999999961010732691950286045901776596055486399684852587368833826176713268209631473), SC_(0.8417087907550067722276208204313839886834638697186402224853742973341766008353683275179408690029515547e-14), SC_(0.3898926730804971395409822340394451360031514741263116617382328673179036852725515582430054001252022724e-26) }, + { SC_(16.18250274658203125), SC_(8.091251373291015625), SC_(2141750209371.305202091498934496242286308211662574211398048139906248448123258204898804563229174115229), SC_(0.9920921860082467252095808788320879153859780477499772959531205779656919515545937024681454219890877306), SC_(17071561001.45529072703221291523056956570555010469053324604698193177355431909208022733191519925203623), SC_(0.007907813991753274790419121167912084614021952250022704046879422034308048445406297531854578010912269402) }, + { SC_(16.18250274658203125), SC_(14.5642528533935546875), SC_(1360858112519.11770959272117011110830051237670082704028845884983028217042655756237417415371631155484), SC_(0.6303707564910003644000428910349335363366072855445841823546700278535404517411162913828376104377948771), SC_(797963657853.6427832258099773003645553615405118518616428353370578980512510197346048577414280618124251), SC_(0.3696292435089996355999571089650664636633927144554158176453299721464595482588837086171623895622051229) }, + { SC_(16.18250274658203125), SC_(16.18250274658203125), SC_(1008025207970.736016611948955570053217411708930912428823729132515630634645797146716506518297999359619), SC_(0.4669330381065602405955418804269019949740065661653284725645578514064708368349014252152857519514215627), SC_(1150796562402.024476206582191841419638462208281766473107565054372549587031780150262525376846374007646), SC_(0.5330669618934397594044581195730980050259934338346715274354421485935291631650985747847142480485784373) }, + { SC_(16.18250274658203125), SC_(17.8007526397705078125), SC_(687572394496.3031782527459531220190303451118625676319160738265510184883521202155279934965281443755715), SC_(0.3184942842120686470147880341335042298919296648800830120898213997841380658494716464595008296937157405), SC_(1471249375876.457314565785194289453825528805350111270015220360337161733325457081451038398616228991694), SC_(0.6815057157879313529852119658664957701080703351199169879101786002158619341505283535404991703062842595) }, + { SC_(16.18250274658203125), SC_(32.3650054931640625), SC_(1340862835.725343546823295587257195519136834019322215899876049580106186155682030269341039343331260904), SC_(0.000621108631628176876872856832760800140394059673621695572899081410018010235255016938583221304233983816), SC_(2157480907537.035149271707851824215660354780378659579715394310838600115491421614948762554105030036004), SC_(0.9993788913683718231231271431672391998596059403263783044271009185899819897647449830614167786957660162) }, + { SC_(16.18250274658203125), SC_(1618.250244140625), SC_(0.8477830782213465246834241939733263939261338923487334014954714154489361608016838198284525527372969536e-654), SC_(0.3927063780142262979318856942808714825925943568720830323175673050066581928234662944018129377557184899e-666), SC_(2158821770372.760492818531147411472855873917212678901931294186888180221677577296979031895144373367265), SC_(1) }, + { SC_(17.5330753326416015625), SC_(0.17533075809478759765625), SC_(94051279987102.18240100970431758631441533829310428405713805017162899803812623206166505735813511025627), SC_(0.9999999999999999999999999999716034587743025834800824170171602368605198026245240473954300019197475383), SC_(0.2670731049483357507220140573333117984431086609013328724469456734788177791595601485431326302655048162e-14), SC_(0.2839654122569741651991758298283976313948019737547595260456999808025246171320964993773699874743842056e-28) }, + { SC_(17.5330753326416015625), SC_(8.76653766632080078125), SC_(93497547863659.07722039785226223028714331545562702021759056200180857223823978275130959130428261619045), SC_(0.9941124445779042901218357810374043201815580779053361690362653129258981513148183766689522504912880174), SC_(553732123443.1051806118520580267583215061949844839801208212878048568864954626390799355105872822436161), SC_(0.005887555422095709878164218962595679818441922094663830963734687074101848685181623331047749508711982648) }, + { SC_(17.5330753326416015625), SC_(15.7797679901123046875), SC_(60006363191958.3292818654714899614130430648346482739289287159800255661862984512939543376891681604771), SC_(0.6380175070470849807968725056236757821464310875191331742100862408557012330808747477813289851549781403), SC_(34044916795143.85311914423283029563242175681596323026878266730958786293843679409643518912570173795697), SC_(0.3619824929529150192031274943763242178535689124808668257899137591442987669191252522186710148450218597) }, + { SC_(17.5330753326416015625), SC_(17.5330753326416015625), SC_(44037888978906.34684387846920881212924616053256036287639647433879321031866848102807760372923542128727), SC_(0.4682327447850313932993828335410870586032071435047259332378295727500660901707161112470028546600613071), SC_(50013391008195.83555713123511144491621866111805114132131490895082021880606676436231192308563447714679), SC_(0.5317672552149686067006171664589129413967928564952740667621704272499339098292838887529971453399386929) }, + { SC_(17.5330753326416015625), SC_(19.2863826751708984375), SC_(29530141813960.42656850685810703152052830500714463230437061872585081744272408591424715281482663234952), SC_(0.3139791592204813426677123217826187660692401178453588792006692049305906342075970449768646948919463738), SC_(64521138173141.75583250284621322552493651664346687189334076456376261168201115947614237400004326608454), SC_(0.6860208407795186573322876782173812339307598821546411207993307950694093657924029550231353051080536262) }, + { SC_(17.5330753326416015625), SC_(35.066150665283203125), SC_(37346685887.93827009294925888421582759248665981153275145062666956660207048145812234463982422912873696), SC_(0.0003970885446009862461399919517100665674364097972275273057162087441642416739350927905627756072859887306), SC_(94013933301214.24413091675506137282963722916395169266495993266294386252266476393226718217504566930533), SC_(0.9996029114553990137538600080482899334325635902027724726942837912558357583260649072094372243927140113) }, + { SC_(17.5330753326416015625), SC_(1753.3074951171875), SC_(0.1525078674926712724325046135741316924285483407797196656709319277016079224940323060664025421446207901e-707), SC_(0.1621539520925027212845478789663506069130441581883635322256007695028305593694715194917682290402460012e-721), SC_(94051279987102.18240100970432025704546482165061150419771138328961342912473524539038952681486989843406), SC_(1) }, + { SC_(17.79958343505859375), SC_(0.1779958307743072509765625), SC_(200646434548288.1803732973648961756822217969899666454361919174953042770888400047118860268601562133222), SC_(0.9999999999999999999999999999892454348802443717831552661537772430284126739903635373642751586509937069), SC_(0.2157865146396350693356620837526451991071983648079243830231212124951443152724517908855699547463650661e-14), SC_(0.1075456511975562821684473384622275697158732600963646263572484134900629308198853962196314394464478562e-28) }, + { SC_(17.79958343505859375), SC_(8.899791717529296875), SC_(199531613707392.420295729526162639748722194516455867844793882680954915912649536831507942385837030595), SC_(0.9944438542184637529261020525075591701925199375937988328943008080172006538667582596992366567184852758), SC_(1114820840895.760077567838735693798645998824204134212235561266340433159838547124208315686444134170286), SC_(0.00555614578153624707389794749244082980748006240620116710569919198279934613324174030076334328151472422) }, + { SC_(17.79958343505859375), SC_(16.0196247100830078125), SC_(128308172215146.9082888540822000688521035773074374380083354439536973477570117441495750735201969422105), SC_(0.6394739707386520932461292690760976255973410271066454985062704736291831592470151764994413295070242544), SC_(72338262333141.27208444328269826469526461603322256404869399999359800131547633980614118455208422255483), SC_(0.3605260292613479067538707309239023744026589728933545014937295263708168407529848235005586704929757456) }, + { SC_(17.79958343505859375), SC_(17.79958343505859375), SC_(93997151021443.71328197824764512308243094877481642668850193518342693734196547989100964529017163657909), SC_(0.4684715740554167356222208384955043010759465579672255407962438903792897989589173368784890741660060397), SC_(106649283526844.4670913191172532104649372445658435753685275087638684117305226040647066127821095281862), SC_(0.5315284259445832643777791615044956989240534420327744592037561096207102010410826631215109258339939603) }, + { SC_(17.79958343505859375), SC_(19.5795421600341796875), SC_(62822753804144.17601615406480343788265946264743062279962351628667799379086001085251637107778842382228), SC_(0.3131017700143834914270597043128924556480747470294779182930053239846043011264116005124142060364253504), SC_(137823680744144.004357143300094895664708730693229379257405927660617355281628073103199886994492740943), SC_(0.6868982299856165085729402956871075443519252529705220817069946760153956988735883994875857939635746496) }, + { SC_(17.79958343505859375), SC_(35.5991668701171875), SC_(72961078040.61425158004818541310957182039210099959885814982678790179322047742655887173823939436135636), SC_(0.0003636300749867310347343015995928063130823651645686545844986292907129182227159103343325792832558191183), SC_(200573473470247.566121717316712920437796372948559002458171294120507447279267606529157386334041770404), SC_(0.9996363699250132689652656984004071936869176348354313454155013707092870817772840896656674207167441809) }, + { SC_(17.79958343505859375), SC_(1779.9583740234375), SC_(0.3833077727689090440442197603122110810470910413352603510498977710837199705333820052849363068763279513e-718), SC_(0.1910364236632677523143350442450627110286028423745128398727891350021040842917926379486406410372408591e-732), SC_(200646434548288.1803732973648983335473681933406600020570294439472953490724880839557162580722811647653), SC_(1) }, + { SC_(19.0938243865966796875), SC_(0.19093824923038482666015625), SC_(8420554991157188.622117441589298392239929979579651790644845706657614936299648483183291532515113833871), SC_(0.9999999999999999999999999999999035097147668922316044591924481748386859242891570852861242692222360591), SC_(0.8125017529178263925874543405159918263431563290973423565824164184553393998473459664322214972276802618e-15), SC_(0.9649028523310776839554080755182516131407571084291471387573077776394088495776256660776941454172484893e-31) }, + { SC_(19.0938243865966796875), SC_(9.54691219329833984375), SC_(8385201272724382.68546065520869263213751421631459844371769498644098772157435311761895932726283502618), SC_(0.9958014978264576979252494756949449800479635061284621136295897294488942078199256252363065371529112978), SC_(35353718432805.93665678638060657260416868109144593438149123620845355788162446290668878766869726303042), SC_(0.004198502173542302074750524305055019952036493871537886370410270551105792180074374763693462847088702226) }, + { SC_(19.0938243865966796875), SC_(17.1844425201416015625), SC_(5442403854975547.720138801765720501736563708768580729209495067288277403216769713131776749613276713112), SC_(0.6463236521453592863088470647933202536217943254964650256271813657109922628322831807423097872821133995), SC_(2978151136181640.901978639823578703005119188637463648889691155361163876239207867393871365318255576098), SC_(0.3536763478546407136911529352066797463782056745035349743728186342890077371677168192576902127178866005) }, + { SC_(19.0938243865966796875), SC_(19.0938243865966796875), SC_(3953950392845518.673914055855861565915481212881042711148188138494710502216249245571393873043320444407), SC_(0.4695593576667741620927637372758890247156458143610874105297122246958103199068566455714092515132956316), SC_(4466604598311669.948203385733437638826201684525001666950998084154730777239728334954254241888211844804), SC_(0.5304406423332258379072362627241109752843541856389125894702877753041896800931433544285907484867043684) }, + { SC_(19.0938243865966796875), SC_(21.0032062530517578125), SC_(2601146605661370.641672635311073248847566616975198349337624254336189260418619173464950543110725118264), SC_(0.3089044140668820652630859920083949304594747006273677663242119384848088219995792270946218097439270492), SC_(5819408385495817.980444806278225955894116280430846028761561968313252019037358407060697571820807170947), SC_(0.6910955859331179347369140079916050695405252993726322336757880615151911780004207729053781902560729508) }, + { SC_(19.0938243865966796875), SC_(38.187648773193359375), SC_(1999053759679.564972373240387984591540801142416633090734820183985585999106626058006740475524514130264), SC_(0.0002374016631657726955698024479273050293551709771839963340497860640248008475706025592191812399818887277), SC_(8418555937397509.05714506834891122015014209626362774500845140246545569345687095446764137445600777508), SC_(0.9997625983368342273044301975520726949706448290228160036659502139359751991524293974407808187600181113) }, + { SC_(19.0938243865966796875), SC_(1909.3824462890625), SC_(0.1360733516606079588038269985399818714801767774194133654815920263827438527585305061735104663204259128e-769), SC_(0.1615966546189708783008559120800700270335519388348121960241325600976405816373252643533128864683136716e-785), SC_(8420554991157188.622117441589299204741682897406044378099186222649441279455977580525648114931532289211), SC_(1) }, + { SC_(19.2440052032470703125), SC_(0.19244004786014556884765625), SC_(13069110641816150.3089434811630667756967353692600753672076252015144340755982652498049001752167375191), SC_(0.9999999999999999999999999999999441520588384130978199003752936786676413101430836332446149341137773325), SC_(0.7298829221584175981610526121546044339042398556150649586818554471146774289377984346124737601805167021e-15), SC_(0.5584794116158690218009962470632133235868985691636675538506588622266753747314459400875018285411934269e-31) }, + { SC_(19.2440052032470703125), SC_(9.62200260162353515625), SC_(13015988822643621.78579271188567536709723836383436344908166519117107297777955023022180950431470347737), SC_(0.9959353149094507593771652152507084116713191756674345391294137025403474019425159238700342659705648733), SC_(53121819172528.52315076927739213848241916384331007917857216494779500205857063464804935275748115640221), SC_(0.00406468509054924062283478474929158832868082433256546087058629745965259805748407612996573402943512673) }, + { SC_(19.2440052032470703125), SC_(17.3196048736572265625), SC_(8456967416687222.510426831494319897463223822973254467022837672035207206070091511438453352245531882014), SC_(0.6470958620266144721146187618525383336428262946094855322381705095559628781131224878034600750806836747), SC_(4612143225128927.798516649668747608116433704704419061237399684083660773768029353431405504826652751762), SC_(0.3529041379733855278853812381474616663571737053905144677618294904440371218868775121965399249193163253) }, + { SC_(19.2440052032470703125), SC_(19.2440052032470703125), SC_(6138279273650026.415028984756172784378581695921527331247681119707043186315129168707920013272823387391), SC_(0.4696784228002388234702590328550799422410372364188997363359818163396204888210813105347086476526344755), SC_(6930831368166123.893914496406894721201075831756146197012556236411824793522991696161938843799361246386), SC_(0.5303215771997611765297409671449200577589627635811002636640181836603795111789186894652913523473655245) }, + { SC_(19.2440052032470703125), SC_(21.1684055328369140625), SC_(4030828044735867.37884957879726243520334205996203475132177936182672833902623422104762056486379730542), SC_(0.3084240508178698029348923333144799163671134468781880964846137144684650208070169431371142202784441316), SC_(9038282597080282.930093902365805070376315467715638776938457994292139640811886643822238292208387328356), SC_(0.6915759491821301970651076666855200836328865531218119035153862855315349791929830568628857797215558684) }, + { SC_(19.2440052032470703125), SC_(38.488010406494140625), SC_(2953180921674.746802955943278264540059550458310508566621762262633670725792099426951970839069856789339), SC_(0.0002259664794806846712437218310717178154627222780711796677094948858206874466548651950840976303445936347), SC_(13066157460894475.56214052521978924103959797721936301969361559385623430911232876544290688623311477699), SC_(0.9997740335205193153287562781689282821845372777219288203322905051141793125533451348049159023696554064) }, + { SC_(19.2440052032470703125), SC_(1924.4005126953125), SC_(0.1466609950283553788446384788489708049238072785060906049463106594174037106216256843002105464382538672e-775), SC_(0.1122195679934764241436958705141835112427296627087805355770888659886154622261761769611565474651347825e-791), SC_(13069110641816150.30894348116306750557965752767767352826023735611886797983812086486985885707218463378), SC_(1) }, + { SC_(21.415802001953125), SC_(0.21415801346302032470703125), SC_(8578100717704568958.950750579193544917015876855009838268353140359095818665346877826082916544400362727), SC_(0.9999999999999999999999999999999999793854805915313516418244276012262407972237650053285737086176164576), SC_(0.1768334237329196788321815486225929115876308756269492387003445914405926488960985050397152851710879457e-15), SC_(0.2061451940846864835817557239877375920277623499467142629138238354236700066865252477198346432974660145e-34) }, + { SC_(21.415802001953125), SC_(10.7079010009765625), SC_(8556219969859071202.942823532050255083404391359585458284576918395999601844674596387414742473343624908), SC_(0.9974492316463086634327235747476015372975205174402555282668015656239023129142979298229118421800396269), SC_(21880747845497756.00792704714329001044490922834405881595777058568912840830315706561741277140132925895), SC_(0.00255076835369133656727642525239846270247948255974447173319843437609768708570207017708815781996037308) }, + { SC_(21.415802001953125), SC_(19.415802001953125), SC_(5538865683370335292.295376928284531802603651071079443655352875677176341168953414060741170607210641392), SC_(0.6456983737598841556361249125807783897458640120095432967022330551108070386392127589927515056886264504), SC_(3039235034334233666.655373650909013291245649516850073445181813304512389084024339392290984637534312775), SC_(0.3543016262401158443638750874192216102541359879904567032977669448891929613607872410072484943113735496) }, + { SC_(21.415802001953125), SC_(21.415802001953125), SC_(4042495476106347398.294017957424417412754963065287157014015596761378936187605883027986358316018979076), SC_(0.4712576372253282201042473456698877375385491227661972555332527962603208542876169820813140428437371982), SC_(4535605241598221560.656732621769127681094337522642360086519092220309794065371870425045796928725975092), SC_(0.5287423627746717798957526543301122624614508772338027444667472037396791457123830179186859571562628018) }, + { SC_(21.415802001953125), SC_(23.415802001953125), SC_(2673968890830578422.058367201050951723352515671960335239029170215767145963242887903494491846749684106), SC_(0.311720388793256216117540305541549884099043555829254586252886254957529582541265342749542669955078227), SC_(5904131826873990536.892383378142593370496784915969181861505518765921584289734865549537663397995270061), SC_(0.688279611206743783882459694458450115900956444170745413747113745042470417458734657250457330044921773) }, + { SC_(21.415802001953125), SC_(42.83160400390625), SC_(951451812956222.6472243729039496310027883903245646555775681429973370726675922206629398402219944193385), SC_(0.0001109163723145026829663592413499705715148479728656815606384723869380652672857771408680624626611632234), SC_(8577149265891612736.303526206289595462846512197604952444957120838691393180310161232369215404522959748), SC_(0.9998890836276854973170336407586500294284851520271343184393615276130619347327142228591319375373388368) }, + { SC_(21.415802001953125), SC_(2141.580078125), SC_(0.8459796636187519800418145873795062251467281610474861875349573565744753185353255818108959162374209711e-862), SC_(0.9862085926232040811098033295689058289712120988868448187364677975736340132742113289638000844236226325e-881), SC_(8578100717704568958.950750579193545093849300587929517100534688981688730252977753453032155244744954167), SC_(1) }, + { SC_(21.5864715576171875), SC_(0.215864717960357666015625), SC_(14423296405753588374.31622060821671685071129398016123777268665736650024318310125439716647851132748548), SC_(0.9999999999999999999999999999999999889208787698677032130816214395302005948074986110680724121518084306), SC_(0.1597974494174754308778206243140915550845390395821100976846141713492205016872754808257971880891925677e-15), SC_(0.1107912123013229678691837856046979940519250138893192758784819156939127090654746689755410156227589298e-34) }, + { SC_(21.5864715576171875), SC_(10.79323577880859375), SC_(14387822199074430186.87755724699870662757552572659477474303694643515589932286116664676615520412427879), SC_(0.9975404924310501451468881464595852302854521319942516024246469084468227494829716736002163294809025083), SC_(35474206679158187.43866336121801038293321767104189390747033524543589894477912733251042099181737803857), SC_(0.002459507568949854853111853540414769714547868005748397575353091553177250517028326399783670519097491657) }, + { SC_(21.5864715576171875), SC_(19.5864715576171875), SC_(9304544345262910887.717303030280171678486278436868264725213433930560031430843201747960622719952920889), SC_(0.6451052577378386799696222899748343841016458891199933849234545602262598928371001079962881938018215962), SC_(5118752060490677486.598917577936545332022464960768403925293847750031766836797092231315953475988735941), SC_(0.3548947422621613200303777100251656158983541108800066150765454397737401071628998920037118061981784038) }, + { SC_(21.5864715576171875), SC_(21.5864715576171875), SC_(6798731326972677099.902162856104311991684091028600360440988413299366457091493040475287577287958719379), SC_(0.4713715322567037679352113072240563206011946337854579156489628256083353908928398870472795342258263785), SC_(7624565078780911274.414057752112405018824652369036308209518868381225341176147253503988998907982937451), SC_(0.5286284677432962320647886927759436793988053662145420843510371743916646091071601129527204657741736215) }, + { SC_(21.5864715576171875), SC_(23.5864715576171875), SC_(4505454584308582032.507647659020312015392697546368261694685418172426081404589312887182692775805326342), SC_(0.312373430980126976491665160933586417387678955045636924697508666679270127258021889605691137597158818), SC_(9917841821445006341.808572949196404995116045851268406955821863508165716863050981092093883420136330488), SC_(0.687626569019873023508334839066413582612321044954363075302491333320729872741978110394308862402841182) }, + { SC_(21.5864715576171875), SC_(43.172943115234375), SC_(1513029361880580.902228477847806409180932847665297124409112963705204028868513011157388497245176298484), SC_(0.000104901772751270595956247924767189218209312480123275352067837133211371218089014732065313036242688236), SC_(14421783376391707793.41399213036891060132781054997137152609816871688659423877178096811918769869648053), SC_(0.9998950982272487294040437520752328107817906875198767246479321628667886287819109852679346869637573118) }, + { SC_(21.5864715576171875), SC_(2158.647216796875), SC_(0.1427648233502627959496585660087676101080514976426381347155595034526767776129415400541405530355360755e-868), SC_(0.9898210459941221711342321295923195685805006437127147382161768965795277929692200357084730639836213432e-888), SC_(14423296405753588374.31622060821671701050874339763666865050728168059179826764029397927657619594165683), SC_(1) }, + { SC_(22.4928874969482421875), SC_(0.22492887079715728759765625), SC_(233098849551075865909.5219273596764853282414017704925733939182004213277285076356681267884387926839414), SC_(0.9999999999999999999999999999999999995902382644161135711592314958480001374454490998034931763961912647), SC_(0.9551498915465607276298231993497285552429842391698728775935233439205820751146358484384285537826251796e-16), SC_(0.4097617355838864288407685041519998625545509001965068236038087352614722903784953342151684399843292495e-36) }, + { SC_(22.4928874969482421875), SC_(11.24644374847412109375), SC_(232626210271430785587.4831851160044087660372447629218825917484720295593639402181079757338286574882907), SC_(0.9979723654554480453069430870728453265704300432368733160470276236620279964087875385997742803412115584), SC_(472639279645080322.0387422436720766577191461622267635651520483267412200917159840680418978945479851381), SC_(0.002027634544551954693056912927154673429569956763126683952972376337972003591212461400225719658788441576) }, + { SC_(22.4928874969482421875), SC_(20.4928874969482421875), SC_(149666294797804717369.1414901435349358094585038767669253728218646917466291084618683339121532017932808), SC_(0.6420722156546307749070890329436715732822454058549210058761503888535899429008821794639361541712107524), SC_(83432554753271148540.38043721614154961429788704838172078407865566455395492347222370986357335024299501), SC_(0.3579277843453692250929109670563284267177545941450789941238496111464100570991178205360638458287892476) }, + { SC_(22.4928874969482421875), SC_(22.4928874969482421875), SC_(110012057613202911310.980067577295036208179363747203392415042632514826487976318413219324136953446032), SC_(0.4719545284117647483387905549151521064170726804878337974316965704138170068447133550864995545921450276), SC_(123086791937872954598.5418597823814492155770271779452537418578878414740960556156788244515895985902438), SC_(0.5280454715882352516612094450848478935829273195121662025683034295861829931552866449135004454078549724) }, + { SC_(22.4928874969482421875), SC_(24.4928874969482421875), SC_(73596654410339793320.16698769515655147647656375595404541052511140899587371004211961115443376851015751), SC_(0.3157315214214025216312278817071697813211476676867346556571833886482845723375362496896867203409386668), SC_(159502195140736072589.3549396645199339472798271691946007463754089473047103218919724326212927835261183), SC_(0.6842684785785974783687721182928302186788523323132653443428166113517154276624637503103132796590613332) }, + { SC_(22.4928874969482421875), SC_(44.985774993896484375), SC_(18192580016803568.98339405390590602337741213743633239167202937185878273748883674818583416323941737536), SC_(0.7804663151208418854762718726422370443692937526168145959428757124340835008118172234590722760657034012e-4), SC_(233080656971059062340.5385333057705794003789787877123137652284909844418012944452552955898923887968585), SC_(0.9999219533684879158114523728127357762955630706247383185404057124287565916499188182776540927723934297) }, + { SC_(22.4928874969482421875), SC_(2249.288818359375), SC_(0.1568833336621902570020366846489865687945210704188898330999168557130384593942102761459263399670369862e-904), SC_(0.6730334961512304178060720014327721663719727764134073825836090692963692587263351540589523224202972032e-925), SC_(233098849551075865909.5219273596764854237563909251486461569005203563005840319340920437757265520362758), SC_(1) }, + { SC_(28.0538349151611328125), SC_(0.2805383503437042236328125), SC_(13016472338795340864664462105.71336711468853331730440114768018693498605643792353168998716302832137117), SC_(0.9999999999999999999999999999999999999999999993177303170307216457230323141415178142973714281217257956), SC_(0.888074445596827836185544815545410682822787386903319575404261023659654369707081334324013108790543015e-17), SC_(0.6822696829692783542769676858584821857026285718782742044398483647022377252442298463360949755901334172e-45) }, + { SC_(28.0538349151611328125), SC_(14.02691745758056640625), SC_(13008297730060067004160158935.39983984286451578774600570528738318647496191266374283006811093893719343), SC_(0.9993719797098243278037005094434595639815735135031567450729018248266312085436512022611759417513473682), SC_(8174608735273860504303170.313527271824017538439139898361082110366542680713895688146925958417373495896), SC_(0.0006280202901756721962994905565404360184264864968432549270981751733687914563487977388240582486526318029) }, + { SC_(28.0538349151611328125), SC_(26.0538349151611328125), SC_(8159760722143660844277247719.957031160083574272344585354505472266327094210104913243552288721773020997), SC_(0.6268795807158636852250188550135852607372300166363965630106924363036497354054055025561399460346211535), SC_(4856711616651680020387214385.756335954604959053840560249142993030514410383272725274662748175581545927), SC_(0.3731204192841363147749811449864147392627699833636034369893075636963502645945944974438600539653788465) }, + { SC_(28.0538349151611328125), SC_(28.0538349151611328125), SC_(6181373660551204248658414434.227667565267633915312811828998936935726105037277050612081608515616386518), SC_(0.4748885488833822603380585394117637546589972534585818236587871263478620162938973458887121399466902973), SC_(6835098678244136616006047671.485699549420899410872333774649528361115399556100587906133428381738180406), SC_(0.5251114511166177396619414605882362453410027465414181763412128736521379837061026541112878600533097027) }, + { SC_(28.0538349151611328125), SC_(30.0538349151611328125), SC_(4334664970468520260458883537.311127295557982255868255677744748778845854433995304467756925337852455601), SC_(0.3330138041740492325933826573103160030786870023398759765529241889225481700183478423834684141807917733), SC_(8681807368326820604205578568.402239819130551070316889925903716517995650159382334050458111559502111323), SC_(0.6669861958259507674066173426896839969213129976601240234470758110774518299816521576165315858192082267) }, + { SC_(28.0538349151611328125), SC_(56.107669830322265625), SC_(167522406810849340438294.7816712301681616282244463884632695362625248464413051818002839220147056630157), SC_(0.1287003133034378969474674225209564271478529891974352215534482385183499320651538935723467004533913475e-4), SC_(13016304816388530015324023810.93169588452037169796069921518519576057897974693633333641475297533986126), SC_(0.9999871299686696562103052532577479043572852147010802564778446551761481650067934846106427653299546609) }, + { SC_(28.0538349151611328125), SC_(2805.383544921875), SC_(0.8375808751313834428308966132045551916984390355221461935110998403861107897297390570657875592842740142e-1125), SC_(0.6434776284469871682454384730763281220946748862619746060422267822913440203668755774461446847109472175e-1153), SC_(13016472338795340864664462105.71336711468853332618514560364846529684150459337763851821503689735456692), SC_(1) }, + { SC_(28.2105731964111328125), SC_(0.282105743885040283203125), SC_(21898880550056087068968035017.59416941780136486571433175547658781294427446592383248702557164470340528), SC_(0.9999999999999999999999999999999999999999999996139282857719128389730879280942656608896007590725826153), SC_(0.8454538353636269825179481028802528021893470080517673827466031735159184154422098980551745505475876308e-17), SC_(0.3860717142280871610269120719057343391103992409274173847090024779040342362394720372905923391922869608e-45) }, + { SC_(28.2105731964111328125), SC_(14.10528659820556640625), SC_(21885570976025369328112028737.69826354190672918994894772302626517805590936530992948558159566149576381), SC_(0.9993922258263250057965172845329206209035083082149061051813680717695947200899972589220233076104730815), SC_(13309574030717740856006279.8959058758946356842199223860865924600678461294164310233374460637253153021), SC_(0.000607774173674994203482715467079379096491691785093894818631928230405279910002741077976692389526918475) }, + { SC_(28.2105731964111328125), SC_(26.2105731964111328125), SC_(13720067509675558873959292369.08099460613013360800699931616588510938354384779470961600620792762935032), SC_(0.6265191263231224507734672472442363727301014406921633041260299583158768073078653602459238294899416418), SC_(8178813040380528195008742648.51317481167123126616187079294697252874021164693165089291283379759172879), SC_(0.3734808736768775492265327527557636272698985593078366958739700416841231926921346397540761705100583582) }, + { SC_(28.2105731964111328125), SC_(28.2105731964111328125), SC_(10401057901876465747305537667.68504177010797475790348486843467753528193252803432883528342198797407188), SC_(0.4749584289526537794254474170027959914657938131002753676446858742159062226972312223385711560090583274), SC_(11497822648179621321662497349.90912764769339011626538524067818010284182296669203167363561973724700723), SC_(0.5250415710473462205745525829972040085342061868997246323553141257840937773027687776614288439909416726) }, + { SC_(28.2105731964111328125), SC_(30.2105731964111328125), SC_(7301809930976113853730149066.320407614550964811616801156820883523247959076512783262131632363041298592), SC_(0.3334330224910703288347527898452622100398967524554017163459220316912367929480297811622444274667543315), SC_(14597070619079973215237885951.27376180325040006255206895229197411487579641821357724678740936217978052), SC_(0.6665669775089296711652472101547377899601032475445982836540779683087632070519702188377555725332456685) }, + { SC_(28.2105731964111328125), SC_(56.421146392822265625), SC_(267946564709036710471756.5284428460347671829927143190882765811708334876926494085672881871937895397723), SC_(0.122356283964638754074585246940066876712921646138102380197275979481465503817657951397451201722947896e-4), SC_(21898612603491378032257563261.06572657176659769117615579002458105695292200703371110035175353802728957), SC_(0.9999877643716035361245925414753059933123287078353861897619802724020518534496182342048602548798277052) }, + { SC_(28.2105731964111328125), SC_(2821.057373046875), SC_(0.5275257237991324125218565753928236252506872123663506084087843539695188643810439168162205617325491417e-1131), SC_(0.2408916394576988191856445728086465820896433922843433314497769550718002612864736936932726956056510062e-1159), SC_(21898880550056087068968035017.59416941780136487416887010911285763812375549472636050891904172522107911), SC_(1) }, + { SC_(30.0544281005859375), SC_(0.3005442917346954345703125), SC_(10630687771914156232192522990611.66667924454995714139881457097700388414217517357019771306054631935899), SC_(0.999999999999999999999999999999999999999999999999523496846153063620678068212341170375568864490521835), SC_(0.5065556250879156501221247004640051982429757838907001969446439966555904012942616055792550404643351327e-17), SC_(0.4765031538469363793219317876588296244311355094781650050057589850584780746435754859969723430881978368e-48) }, + { SC_(30.0544281005859375), SC_(15.02721405029296875), SC_(10626289475468348291892398624261.3137097882218921770593544869432359470206711363529328455974578918585), SC_(0.9995862641683985809245921297689007183962490308476994378806988966128113170066940590059085674947605952), SC_(4398296445807940300124366350.352969456328064969405016334912924438342751041857316849892846266407493841), SC_(0.0004137358316014190754078702310992816037509691523005621193011033871886829933059409940914325052394047864) }, + { SC_(30.0544281005859375), SC_(28.0544281005859375), SC_(6617571477131695205924751951310.914360479658252249109655117208748625035003045867945688986949184769617), SC_(0.6224970217463304024992288057729766180469000983101496979431198684380443903248256270035513270287112756), SC_(4013116294782461026267771039300.752318764891704897354715704647411760328419132342304006503354973496379), SC_(0.3775029782536695975007711942270233819530999016898503020568801315619556096751743729964486729712887244) }, + { SC_(30.0544281005859375), SC_(30.0544281005859375), SC_(5057432674955197628248810746272.516427030808472514321350400639156523906034160847086352123303030583263), SC_(0.475738991066667257936178346973772274305223872588010478008237248782717814613025991177852317934602844), SC_(5573255096958958603943712244339.150252213741484632143020421217003861457388017363163343367001127682733), SC_(0.524261008933332742063821653026227725694776127411989521991762751217282185386974008822147682065397156) }, + { SC_(30.0544281005859375), SC_(32.0544281005859375), SC_(3594651411312654984354910178187.669555577983800201676737292477233757779206987900735621890688181694257), SC_(0.3381391202937572382390191801518397931134172276602009028391127187902769337080613236003651771896237114), SC_(7036036360601501247837612812423.997123666566156944787633529378926627584215190309514073599615976571739), SC_(0.6618608797062427617609808198481602068865827723397990971608872812097230662919386763996348228103762886) }, + { SC_(30.0544281005859375), SC_(60.108856201171875), SC_(71830926550022368739160864.1549330881569974852363286113993864374563634871882440705602102583317945106), SC_(0.6756940669426558527005153388969285418796228099523822290005761371112542054043543075595207414857536131e-5), SC_(10630615940987606209823783829747.5117461563929596612280422104567739479070586910220056249300938999342), SC_(0.9999932430593305734414729948466110307145812037719004761777099942386288874579459564569244047925851425) }, + { SC_(30.0544281005859375), SC_(3005.44287109375), SC_(0.6391527195245049025413093179558230079188094384012206330962942146840926431426512530775297468530536636e-1204), SC_(0.6012336485068448106739821397729627476807906457390751616958028995501634222109472524489597132633102005e-1235), SC_(10630687771914156232192522990611.666679244549957146464370821856160385363422178210249695490304158266), SC_(1) }, + { SC_(30.5403537750244140625), SC_(0.305403530597686767578125), SC_(55323542538198664629008006807946.54428687634080173736167777365188318815509486676117772514834417734427), SC_(0.9999999999999999999999999999999999999999999999999184025276459341154818149297049679325027824257759316), SC_(0.4514261232789653490969618961903151339482817752508086614682397407864259088092804522998499404057721921e-17), SC_(0.8159747235406588451818507029503206749721757422406836575553885196967947470609632268971724278240177342e-49) }, + { SC_(30.5403537750244140625), SC_(15.27017688751220703125), SC_(55302853839860222166198586806368.81539415744782500419116309768217581150131107179696411265204297147692), SC_(0.9996260416923923887406182377865544022389061754871340424846900555538489894507643607309397549538019988), SC_(20688698338442462809420001577.7288927188929767376847759087593608676234027568673649519791189583754309), SC_(0.000373958307607611259381762213445597761093824512865957515309944446151010549235639269060245046198001236) }, + { SC_(30.5403537750244140625), SC_(28.5403537750244140625), SC_(34383546252121214206917852301252.88984011454685951895533652396117056057206788134549036719509931218776), SC_(0.621499359488426985793184603790969450020073269076592138184145110900525820658429590195441116932913502), SC_(20939996286077450422090154506693.6544467617939422229206024824803661185526459473188386974360626176646), SC_(0.378500640511573014206815396209030549979926730923407861815854889099474179341570409804558883067086498) }, + { SC_(30.5403537750244140625), SC_(30.5403537750244140625), SC_(26330290328526345844084130397228.3541540333735952440845277108287629507477594758367547501390226656153), SC_(0.4759328329408108161664521667310343436109256340616918372887474914855057834498301516156908166176271368), SC_(28993252209672318784923876410718.19013284296720649779141129561277372837695435282757431449213926423706), SC_(0.5240671670591891838335478332689656563890743659383081627112525085144942165501698483843091833823728632) }, + { SC_(30.5403537750244140625), SC_(32.54035186767578125), SC_(18772082740947083819880984263251.1107093867959726414180315160973691819128620122791948095998992334882), SC_(0.3393145463883792556965654371397306895857639412163940813527488691639789166612794328550718897854791964), SC_(36551459797251580809127022544695.43357748954482910045790749034416749721185181638513425503126269636416), SC_(0.6606854536116207443034345628602693104142360587836059186472511308360210833387205671449281102145208036) }, + { SC_(30.5403537750244140625), SC_(61.080707550048828125), SC_(319750323893161501547364871.9471324441271532775826666381053065114146222455009560919394791163942737225), SC_(0.5779642973375879860404401701327458421116422508373668948833372781514111241715798106032773118594522845e-5), SC_(55323222787874771467506459443074.59715443221364846429327236833623016771009158316337297269168281345808), SC_(0.9999942203570266241201395955982986725415788835774916263310511666272184858887582842018939672268814055) }, + { SC_(30.5403537750244140625), SC_(3054.035400390625), SC_(0.3961965192787088984378813914974873969117566017019571029955121349210008593552086028374670167947824519e-1223), SC_(0.7161445220272206072300793452176234815783276759662760025607804603387748936425726088632166714558739941e-1255), SC_(55323542538198664629008006807946.54428687634080174187593900644153667912471382866432906463116192985235), SC_(1) }, + { SC_(31.16262054443359375), SC_(0.3116261959075927734375), SC_(462624699113536846626017964322050.649795271710471005992846910940200142218543513602870177746629176643), SC_(0.9999999999999999999999999999999999999999999999999914820705735093686211754549779174556362394141508231), SC_(0.3940604538000569814815372089763812896188968295852802534369064254725795864375460623004512660433445425e-17), SC_(0.851792942649063137882454502208254436376058584917693031771280152106125612010327710841990555290851904e-50) }, + { SC_(31.16262054443359375), SC_(15.581310272216796875), SC_(462472679022930944149999456680562.1306105485603427156764842032800000136313582701687717914585428655053), SC_(0.9996713965101794232737366783645916467900204715247164813334845460874316518996447350687063567484021154), SC_(152020090605902476018507641488.5191847231501282942569672456607699434025573331979112824770546069904561), SC_(0.0003286034898205767262633216354083532099795284752835186665154539125683481003552649312936432515978846218) }, + { SC_(31.16262054443359375), SC_(29.16262054443359375), SC_(286946049873905810015180277182786.1464574167194882882489814121725489111366603067646804307929701108701), SC_(0.6202566582020814780235590166968321221400109807688055430887100332528169469320428807570689614241158865), SC_(175678649239631036610837687139264.5033378549909827216844700367682210458972552966020026431426273616256), SC_(0.3797433417979185219764409833031678778599890192311944569112899667471830530679571192429310385758841135) }, + { SC_(31.16262054443359375), SC_(31.16262054443359375), SC_(220290042968042406374974814947222.8095473829577341359711594853072205747672082037667306935872993126172), SC_(0.476174409602758942761661147551475181775264029268271962657270752444394359227020415739092631410077918), SC_(242334656145494440251043149374827.8402478887527368739622919636335493822667073995999523803482981598786), SC_(0.523825590397241057238338852448524818224735970731728037342729247555605640772979584260907368589922082) }, + { SC_(31.16262054443359375), SC_(33.16262054443359375), SC_(157654541578516148308646650651632.2951976448619167431172265215886965104983850165282499539154206582642), SC_(0.3407828027353652890497680640062128634244574604446298344895961975907000988843356219592519766777621756), SC_(304970157535020698317371313670418.3545976268485542668162249273520734465355305868384331200201768142316), SC_(0.6592171972646347109502319359937871365755425395553701655104038024092999011156643780407480233222378244) }, + { SC_(31.16262054443359375), SC_(62.3252410888671875), SC_(2189310528184656785283050037.843196407451515748345696540993716032241786317858830857836694202382519624), SC_(0.4732368445480163597816816189318208582557462605760362740641908553054689158798284682823277539388591067e-5), SC_(462622509803008661969232681272012.8065988642589552615877549079470539247921292855078522160989032701133), SC_(0.9999952676315545198364021831838106817914174425373942396372593580914469453108412017153171767224606114) }, + { SC_(31.16262054443359375), SC_(3116.261962890625), SC_(0.1013919443759329192692218628975848528482816536544267588192958557394280842230221240818421160246154661e-1247), SC_(0.2191667340075360295553155695217247481431906133894579613057691001221515578083520290277880482861073039e-1280), SC_(462624699113536846626017964322050.6497952717104710099334514489407699570339156033666830739355974724958), SC_(1) }, + { SC_(31.996768951416015625), SC_(0.319967687129974365234375), SC_(8131687260818805862245797820874541.721649761415405030755407418994569883627242661436334086413390859908), SC_(0.9999999999999999999999999999999999999999999999999995879227931512656110115521739097127909502731361732), SC_(0.3350882973405649410726863419053300130357013862326157163284966274439845101072486414613665552382985803e-17), SC_(0.4120772068487343889884478260902872090497268638267653147339322162452153031976748137223232810773565659e-51) }, + { SC_(31.996768951416015625), SC_(15.9983844757080078125), SC_(8129439785636440597403650712505420.639050901677298327344910029550456944532458250343252392481521176987), SC_(0.999723615147720405653566091809971319116875855673455609646448352264151517410556716897680064815473706), SC_(2247475182365264842147108369121.082598859738106706761380362849762349821647830146381824288883545246905), SC_(0.0002763848522795943464339081900286808831241443265443903535516477358484825894432831023199351845262940115) }, + { SC_(31.996768951416015625), SC_(29.996768951416015625), SC_(5030660939716144494990365515138840.049120816436136707464189074209960005346290094688681426207171577273), SC_(0.618649091924077635008542039031859800931879068100503637381030751433958543327863337093338028285629916), SC_(3101026321102661367255432305735701.672528944979268326642101318190259289007815985800952790563233144962), SC_(0.381350908075922364991457960968140199068120931899496362618969248566041456672136662906661971714370084) }, + { SC_(31.996768951416015625), SC_(31.996768951416015625), SC_(3874644227718806677497967114342847.816130085832855443765330676782997537227469326660232000590880198953), SC_(0.4764871180410664529124225629254370242257817306879099084512541146226349247396397481631249409954350422), SC_(4257043033099999184747830706531693.905519675582549590340959715617221757126636753829402216179524523281), SC_(0.5235128819589335470875774370745629757742182693120900915487458853773650752603602518368750590045649578) }, + { SC_(31.996768951416015625), SC_(33.996768951416015625), SC_(2786643940817371536441585713377836.793511032003262701271843316192119518636999426324391506815632093708), SC_(0.3426895122054626772399508130487163734138308659612294674415426488148719531583766081766494000982831144), SC_(5345043320001434325804212107496704.928138729412142332834447076208099775717106654165242709954772628526), SC_(0.6573104877945373227600491869512836265861691340387705325584573511851280468416233918233505999017168856) }, + { SC_(31.996768951416015625), SC_(63.99353790283203125), SC_(29442987317192965566728245708.84014112014619973032980766155911971510528018931425416707227032574873801), SC_(0.362077221772400726205487523182727472465292314585680163890154637266853685108861864353603192662640749e-5), SC_(8131657817831488669280231092628832.881508641269205303776482730841099579248825891175380049698134396485), SC_(0.9999963792277822759927379451247681727252753470768541431983610984536273314631489113813564639680733736) }, + { SC_(31.996768951416015625), SC_(3199.677001953125), SC_(0.1119762009638676714302046624197882089173119539217445349737201580054624865895556463979852751733105453e-1280), SC_(0.1377035261838050889097804901648914306214864152567979357671443381818466611457123269059549866491213953e-1314), SC_(8131687260818805862245797820874541.721649761415405034106290392400219294354106080489634216770404722234), SC_(1) }, + { SC_(32.05139923095703125), SC_(0.3205139935016632080078125), SC_(9818675716055357228155203818677279.285256945198103332492245808102812674592080605634867478315732705061), SC_(0.9999999999999999999999999999999999999999999999999996620610304345820966860690344443966206097465324844), SC_(0.331811315398073920530089721434668430411075002373773608414156223246795294768347163626334762856514246e-17), SC_(0.3379389695654179033139309655556033793902534675155903088494387993844377990933661909125439046096719795e-51) }, + { SC_(32.05139923095703125), SC_(16.025699615478515625), SC_(9815992539490497621590662655533830.032212296575553051737720920350835346450307211576541210063009732466), SC_(0.9997267272448491078221606403386774910108349082393710917755543222432822802621476490253077975955922758), SC_(2683176564859606564541163143449.253044648622550284072638041732716533442670608405010572363472996332674), SC_(0.0002732727551508921778393596613225089891650917606289082244456777567177197378523509746922024044077242358) }, + { SC_(32.05139923095703125), SC_(30.05139923095703125), SC_(6073303024560840658530975896530421.265480151513796851744905238861090622061746884035134402922359753882), SC_(0.6185460443132736276256735065385282025387056993061891718744085602196197532130049805368108310212120092), SC_(3745372691494516569624227922146858.019776793684306484065453723222461257831230935946417379504122974917), SC_(0.3814539556867263723743264934614717974612943006938108281255914397803802467869950194631891689787879908) }, + { SC_(32.05139923095703125), SC_(32.05139923095703125), SC_(4678669387719540278612423224451050.768137047368336968785924830610348881987815957111753963967391353122), SC_(0.4765071709282594421141341686730183212502035595546146038374903558461429885630667825728516648077503354), SC_(5140006328335816949542780594226228.517119897829766367024434131473202997905161862869797818459091375677), SC_(0.5234928290717405578858658313269816787497964404453853961625096441538570114369332174271483351922496646) }, + { SC_(32.05139923095703125), SC_(34.05139923095703125), SC_(3365959972731823332609113054894362.082494817925516232963516514081742638109004541116316374271321718434), SC_(0.3428120115249202115387170085641820173445661430816344363477117870587273142568357225870758321730054538), SC_(6452715743323533895546090763782917.202762127272587102846842448001809241783973278865235408155161010365), SC_(0.6571879884750797884612829914358179826554338569183655636522882129412726857431642774129241678269945462) }, + { SC_(32.05139923095703125), SC_(64.1027984619140625), SC_(34933576489643598627658350324.95005438750111341914848309327867955325552160022783305451344768029843887), SC_(0.355787048069229102745855493000967403320047426057697126500260818047854209781158956042733366277932277e-5), SC_(9818640782478867584556576160326954.335202557696989916661875868804872326637456219753718727913035048501), SC_(0.9999964421295193077089725414450699903259667995257394230287349973918195214579021884104395726663372207) }, + { SC_(32.05139923095703125), SC_(3205.139892578125), SC_(0.7782373393559598965981747130732658364753868663457687446985337237977346471146436976890013042085303316e-1283), SC_(0.7926092701925142502357565925376385947899297820341263599295539228188224717616815405859583881721623736e-1317), SC_(9818675716055357228155203818677279.285256945198103335810358962083551879892977819981551782426482728799), SC_(1) }, + { SC_(36.44875335693359375), SC_(0.36448752880096435546875), SC_(51420445329652109014719459254376563172188.32366319245704729763363307630270870350604200323760830740377), SC_(0.9999999999999999999999999999999999999999999999999999999999604621528329854642446028882912584308766297), SC_(0.2033053708703611454518923311581406170645213325893876433947373848438158114894159371143476560895229522e-17), SC_(0.39537847167014535755397111708741569123370272514212617752145993215148237020868341487906296324676533e-58) }, + { SC_(36.44875335693359375), SC_(18.224376678466796875), SC_(51414776814402041673283991251670059227937.03686947501492506443464226574597328875919899795145699746404), SC_(0.999889761451622463176503202008568401950448379465384649529918324281208838529578900721599500075107085), SC_(5668515250067341435468002706503944251.286793717442122235232044519260346869265766316867557480584945096), SC_(0.000110238548377536823496797991431598049551620534615350470081675718791161470421099278400499924892914981) }, + { SC_(36.44875335693359375), SC_(34.44875335693359375), SC_(31419961216887244186891196057259357744056.14989478323963364758080349466277437402325862146629359297562), SC_(0.6110402392561274143631005300563093577972117730879944658665792838707094563165162003582587225740326937), SC_(20000484112764864827828263197117205428132.17376840921741365208588329034354578400170669335272088507337), SC_(0.3889597607438725856368994699436906422027882269120055341334207161292905436834837996417412774259673063) }, + { SC_(36.44875335693359375), SC_(36.44875335693359375), SC_(24577443048176826290807425729125280009989.89806914115785861854608908164525660040289464046415377829471), SC_(0.4779702488108168982985547789404222036232251733980413390161813024950437400378683177514884972375117106), SC_(26843002281475282723912033525251283162198.42559405129918868112059770336106355762207067435486069975428), SC_(0.5220297511891831017014452210595777963767748266019586609838186975049562599621316822485115027624882894) }, + { SC_(36.44875335693359375), SC_(38.44875335693359375), SC_(18090890995770080236169389671579583132029.73847835026012061784890419554242085396940114132168126763483), SC_(0.3518229155696905018794243453022403618689316334967674745046502945047768724581195390144413925922183878), SC_(33329554333882028778550069582796980040158.58518484219692668181778258946389930405556417349733321041416), SC_(0.6481770844303094981205756546977596381310683665032325254953497054952231275418804609855586074077816122) }, + { SC_(36.44875335693359375), SC_(72.8975067138671875), SC_(44794680330610173790325904871286231.4620528231519159945977388426491694323930467505355470404843506488), SC_(0.8711453205711323891838789066843775586996671839701640699167707900947970508081024297207206827005633679e-6), SC_(51420400534971778404545668928471691885956.86161036930513130506894794235715072563191856428346743756464), SC_(0.9999991288546794288676108161210933156224413003328160298359300832292099052029491918975702792793172994) }, + { SC_(36.44875335693359375), SC_(3644.875244140625), SC_(0.2052333634608248219980577195057580211016968449761099685665601238068322199794065980732846098630791333e-1456), SC_(0.399127938595418913141037228785291251911102190488312264491205030828651058011038455881523456296831284e-1497), SC_(51420445329652109014719459254376563172188.32366319245704729966668678500632015802496531481901447804899), SC_(1) }, + { SC_(38.46506500244140625), SC_(0.384650647640228271484375), SC_(74476097961717736707311283690297342332640635.36828527513831761263423020098285675319043072376838506452), SC_(0.9999999999999999999999999999999999999999999999999999999999999737171591666092260969748612110146801584), SC_(0.1957443428619846316633847000085545945278630730464330492832414282635303960636943114598488847353331592e-17), SC_(0.2628284083339077390302513878898531984157013156072764487802905004186189368583596223709956211045867208e-61) }, + { SC_(38.46506500244140625), SC_(19.232532501220703125), SC_(74470671615104430708019858002669903107825265.43541100343301703784190837164882341226188891290728507243), SC_(0.9999271397567566542717257180570594693345157632435967577481630263036187764612216531692693658186431452), SC_(5426346613305999291425687627439224815369.932874271705300576749765257953879657562388810946645937368386), SC_(0.7286024324334572827428194294053066548423675640324225183697369638122353877834683073063418135685483289e-4) }, + { SC_(38.46506500244140625), SC_(36.46506500244140625), SC_(45284764068480704266436983806916789500344890.34333950265956591896839074526771939756199637058151093573), SC_(0.6080442626271587808203732945953276193884525828877170814104986257359448216684380012490224834049623064), SC_(29191333893237032440874299883380552832295745.02494577247875169562328288433498367226228135327242007407), SC_(0.3919557373728412191796267054046723806115474171122829185895013742640551783315619987509775165950376936) }, + { SC_(38.46506500244140625), SC_(38.46506500244140625), SC_(35640951011207567576511223496938478818114920.08854367148220352219252461742135974563330277014306819674), SC_(0.4785555632832396462325558547156730388446319349095560891771750900522238183809963254426455682172064331), SC_(38835146950510169130800060193358863514525715.27974160365611409239914901218134332419097495371086281306), SC_(0.5214444367167603537674441452843269611553680650904439108228249099477761816190036745573544317827935669) }, + { SC_(38.46506500244140625), SC_(40.46506500244140625), SC_(26473831399532651160030688980409433397456023.5388010732147518462983916570177583732676013476938272969), SC_(0.3554674872083222069089889485735308279452981834706649299929936062561219738535502425333916621181020558), SC_(48002266562185085547280594709887908935184611.8294842019235657682932819725849446965566763761601037129), SC_(0.6445325127916777930910110514264691720547018165293350700070063937438780261464497574666083378818979442) }, + { SC_(38.46506500244140625), SC_(76.9301300048828125), SC_(34104300946544617920962692297574039275.85730427191012670106412036032404395874777953899771382520592097), SC_(0.4579227682427043627144211522493769523300348756892813630883230360181496589572891134745259522852117399e-6), SC_(74476063857416790162693362727605044758601359.51098100322819091352755326927865911107649818485621718459), SC_(0.9999995420772317572956372855788477506230476699651243107186369116769639818503410427108865254740477148) }, + { SC_(38.46506500244140625), SC_(3846.506591796875), SC_(0.6344698375148891978318953694464850822255164730179298739810260812671355972495791867411120280975535882e-1536), SC_(0.8519106866219278699362768240955413679390366943000933299898028077399325357167063246778052166325384945e-1580), SC_(74476097961717736707311283690297342332640635.3682852751383176145916736296027030698242777238539310098), SC_(1) }, + { SC_(39.52658843994140625), SC_(0.395265877246856689453125), SC_(3588963314116707873190446531102509723131836488.566699586405422159688100732294410319129725282925294645), SC_(0.9999999999999999999999999999999999999999999999999999999999999994413425037442482559090495542064250511), SC_(0.2005001259218185099263846061650302487405890709034819657867246183956963807422721600712381503343952107e-17), SC_(0.5586574962557517440909504457935749489254593778564333127652828107846518527700077379392333322331169109e-63) }, + { SC_(39.52658843994140625), SC_(19.763294219970703125), SC_(3588752942961210623579147228611774569788300390.173615040926411068669762348749528382088966070267968551), SC_(0.9999413838657336555190727057480746442916662079890450472838459587230914719720212116869946926785590296), SC_(210371155497249611299302490735153343536098.3930845454790110930233396427630670363046052743076285820272), SC_(0.5861613426634448092729425192535570833379201095495271615404127690852802797878831300530732144097042883e-4) }, + { SC_(39.52658843994140625), SC_(37.52658843994140625), SC_(2176926332123041471652359455849982518759650439.664746147586599923793277400021946569116111917367862322), SC_(0.6065613219172211883500503201931108646583852309925343298117418343317772491146614395752639792377229902), SC_(1412036981993666401538087075252527204372186048.901953438818822237899824591490648849277459427207734811), SC_(0.3934386780827788116499496798068891353416147690074656701882581656682227508853385604247360207622770098) }, + { SC_(39.52658843994140625), SC_(39.52658843994140625), SC_(1718559114930389402365116545582781030067050069.670905329737336887065422344272857700882033772416932418), SC_(0.478845550794756426018221647797646042795415707871750662265780850038803276415249164853764818320195487), SC_(1870404199186318470825329985519728693064786418.895794256668085274627679647239737717511537572158664715), SC_(0.521154449205243573981778352202353957204584292128249337734219149961196723584750835146235181679804513) }, + { SC_(39.52658843994140625), SC_(41.52658843994140625), SC_(1282269703300467478998957438405346680980309491.471855691358950660836887984542870737672895404348891523), SC_(0.3572813626310502685276829446211331746156740790347101192649689399707434825724495595398828412020051764), SC_(2306693610816240394191489092697163042151526997.09484389504647150085621400696972468072067594022670561), SC_(0.6427186373689497314723170553788668253843259209652898807350310600292565174275504404601171587979948236) }, + { SC_(39.52658843994140625), SC_(79.0531768798828125), SC_(1171984262615086272436925774213134455225.080561852545683875484950190010014226695613974410537154834002), SC_(0.3265523105252267972305331530905466429660756200777455296446363626766092337625348242932184525276610451e-6), SC_(3588962142132445258104174094176735509997381263.486137733859738286208151801502581191697957370165059978), SC_(0.9999996734476894747732027694668469094533570339243799222544703553636373233907662374651757067815474723) }, + { SC_(39.52658843994140625), SC_(3952.658935546875), SC_(0.9165655452725188131936353964945234196751456316829463618558966733914701143200131653887872022563731868e-1578), SC_(0.2553844843348859690185933024039368127233065990964138730843062737185193776991267902666556619314473834e-1623), SC_(3588963314116707873190446531102509723131836488.566699586405422161693101991512595418393571344575597133), SC_(1) }, + { SC_(40.1744842529296875), SC_(0.401744842529296875), SC_(38755671301264757235165505802180986445852673110.63366908473899680511163068596862378918614753221667189), SC_(0.9999999999999999999999999999999999999999999999999999999999999999467396388930498977140988253765012606), SC_(0.2064141048447623736751307197431756738511310678385305427209004540018544626350349336944306873171657679e-17), SC_(0.5326036110695010228590117462349873943473287993051473068627989413701510220976334195069405084875790471e-64) }, + { SC_(40.1744842529296875), SC_(20.08724212646484375), SC_(38753681739688963742162950174895334141999519136.43348007739953815561603152538016865585883935029703771), SC_(0.9999486639888049477442293162512901782233651407941165877100024494719547560529604638924021331177915066), SC_(1989561575793493002555627285652303853153974.20018900733945865155974020903607887007861537935139091987), SC_(0.5133601119505225577068374870982177663485920588341228999755052804524394703953610759786688220849341566e-4) }, + { SC_(40.1744842529296875), SC_(38.1744842529296875), SC_(23473754866981740564555486055108018485222914840.89532642432922923677689389951361970679094125439301889), SC_(0.6056856733175899143047735897428789338443720945815721939828003090822229775480176381535315155613375295), SC_(15281916434283016670610019747072967960629758269.73834266040976757039887783490262781914651347525540974), SC_(0.3943143266824100856952264102571210661556279054184278060171996909177770224519823618464684844386624705) }, + { SC_(40.1744842529296875), SC_(40.1744842529296875), SC_(18564620196126416583824924960812700619298333372.43503017151698110378592881334042054748819013683566141), SC_(0.4790168657334178736602681696601428580148630898071515336667084778109915747025016755472166027968034456), SC_(20191051105138340651340580841368285826554339738.19863891322201570338984292107582697844926459281276722), SC_(0.5209831342665821263397318303398571419851369101928484663332915221890084252974983244527833972031965544) }, + { SC_(40.1744842529296875), SC_(42.1744842529296875), SC_(13888306771198703528421483388743752303473940039.4102895562521427143332987616776131260865041010771322), SC_(0.3583554691451176296889241779765488985250327905320915942322545065258820371877960981371943111488811587), SC_(24867364530066053706744022413437234142378733071.22337952848685409284247297273863439985095062857129643), SC_(0.6416445308548823703110758220234511014749672094679084057677454934741179628122039018628056888511188413) }, + { SC_(40.1744842529296875), SC_(80.348968505859375), SC_(10297453142424702584860814468459300310714.26581298933898996634652706129685599333458805088014430853806), SC_(0.2657018391547936949654387140441327114368138897647303719002191428216298823431619777993151352447966925e-6), SC_(38755661003811614810462920941366517986552362396.36785609540000684082924467311939153260286667876828432), SC_(0.9999997342981608452063050345612859558672885631861102352696280997808571783701176568380222006848647552) }, + { SC_(40.1744842529296875), SC_(4017.448486328125), SC_(0.2700477350407812016018325548647399119476191175927851658124516865191402053916788194164832727604714857e-1603), SC_(0.6967954004501231058803493451541279071457936604459712842319233523248254214931231564886775795838955157e-1650), SC_(38755671301264757235165505802180986445852673110.63366908473899680717577173441624752593745472964842863), SC_(1) }, + { SC_(41.168750762939453125), SC_(0.41168749332427978515625), SC_(1524258603069265638743278312423780744130625018590.686165238612013968583442924585101825830212085904134), SC_(0.9999999999999999999999999999999999999999999999999999999999999999985543189618875330036628692360705089), SC_(0.2203591759637034721244346759822017892316646987063867858400490586901496518963689871966743469246620057e-17), SC_(0.1445681038112466996337130763929491133443604338109110730911692777822616154900423152471680813557074612e-65) }, + { SC_(41.168750762939453125), SC_(20.5843753814697265625), SC_(1524194748986895939156748068594470617840101808542.147883921369726677855394627154080363588612453382105), SC_(0.9999581081043327410252978678033412655104043809687323781225330629606153568393178382780136588887519966), SC_(63854082369699586530243829310126290523210048.5382813172422872929316400570680561834859463923440476599), SC_(0.4189189566725897470213219665873448959561903126762187746693703938464316068216172198634111124800341377e-4) }, + { SC_(41.168750762939453125), SC_(39.168750762939453125), SC_(921235832221207999894436234073217083769592391359.6367764729780647438573463877860202466651684393573161), SC_(0.6043828982603059202815090516192595596663242557967821462984970751314593449396962059754752775156110268), SC_(603022770848057638848842078350563660361032627231.0493887656339492269296882964361163004093904063688362), SC_(0.3956171017396940797184909483807404403336757442032178537015029248685406550603037940245247224843889732) }, + { SC_(41.168750762939453125), SC_(41.168750762939453125), SC_(730534252406374013683152885251306441118544771229.5780837527804079903647704402323945156895778195318329), SC_(0.4792718577643986191255396729946647050226502718656690724878496065119580358902563096555433826366021708), SC_(793724350662891625060125427172474303012080247361.1080814858316059804222642439897420313849810261943195), SC_(0.5207281422356013808744603270053352949773497281343309275121503934880419641097436903444566173633978292) }, + { SC_(41.168750762939453125), SC_(43.168750762939453125), SC_(548668567949485117299998089976314174637006606649.3558065210126974974653263152368532751670060638810415), SC_(0.3599576652181456768842813574348807638230264962726768429237893522425321974313715404978628431571321193), SC_(975590035119780521443280222447466569493618411941.3303587175993164733217083689852832719075527818451108), SC_(0.6400423347818543231157186425651192361769735037273231570762106477574678025686284595021371568428678807) }, + { SC_(41.168750762939453125), SC_(82.33750152587890625), SC_(295194151561481442539883184817579927163593.185261637429442582745079888962317546805108318050677448853), SC_(0.1936640875551398648158013681401567369985181153948799089903491694490277067975544317324447372139193959e-6), SC_(1524258307875114077261835772540595926550697854997.500903601182571388041954795259819000269450527675475), SC_(0.9999998063359124448601351841986318598432630014818846051200910096508305509722932024455682675552627861) }, + { SC_(41.168750762939453125), SC_(4116.875), SC_(0.1823183208486564649755902033103732767509437711098764678941584076934788183130309281845347251782807613e-1642), SC_(0.1196111476632233398205596072066382297314675492619930892102829251666369007875620560936819123776857662e-1690), SC_(1524258603069265638743278312423780744130625018590.686165238612013970787034684222136547074558845726152), SC_(1) }, + { SC_(42.46524810791015625), SC_(0.4246524870395660400390625), SC_(189826116208112223374427708716952062262555313430053.0581376558616480180572702552664721584979197550157), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999868838410400578319132217190804235), SC_(0.248978951493405435581825791863767232391819941401534608748931768758315062249939998035433608403527693e-17), SC_(0.1311615895994216808677828091957652628287183331760047625485569591332527650331876930587546923009175046e-67) }, + { SC_(42.46524810791015625), SC_(21.232624053955078125), SC_(189820013558825525413856451277124302722534888018895.5949328854530526624360500962295996242200863846981), SC_(0.9999678513715151426370708901040324345699634151844983814304977600782977945314620725113350584413611004), SC_(6102649286697960571257439827759540020425411157.463204770408595358111009673970926890096091288955325974), SC_(0.3214862848485736292910989596756543003658481550161856950223992170220546853792748866494155863889964229e-4) }, + { SC_(42.46524810791015625), SC_(40.46524810791015625), SC_(114418509469147666618059763730225993904197929287012.7658071312781962775517922244974783993141906654385), SC_(0.6027543088102120114128560801755924306710305322450205040752823481499426851367728588029526240884331002), SC_(75407606738964556756367944986726068358357384143040.29233052458345174299526754570304811500198700821485), SC_(0.3972456911897879885871439198244075693289694677549794959247176518500573148632271411970473759115668998) }, + { SC_(42.46524810791015625), SC_(42.46524810791015625), SC_(91038860601073319555031191320147622356965732166863.27570185908875239864710546014332004091709923594325), SC_(0.479590808786629812456920525708786660803436610293434862004471959968413641666478882385419840449504671), SC_(98787255607038903819396517396804439905589581263189.78243579677289562189995431005720647339907843771015), SC_(0.520409191213370187543079474291213339196563389706565137995528040031586358333521117614580159550495329) }, + { SC_(42.46524810791015625), SC_(44.46524810791015625), SC_(68710885357270162173435573275602262281533441424085.69231057841556932928819252521522739727101779206907), SC_(0.3619675033647124732769363399463223410648460945809521431099493385666606665468411278891661772541151576), SC_(121115230850842061200992135441349799981021872005967.3658270774460786912588672449852991170451598815843), SC_(0.6380324966352875267230636600536776589351539054190478568900506614333393334531588721108338227458848424) }, + { SC_(42.46524810791015625), SC_(84.9304962158203125), SC_(24348327108521101518414501008666294609723236.61824098477188140644477599895081557232651747139912370585), SC_(0.1282664766834679368955418038597182009370967953321035999631116697702154437085777266511155557205717818e-6), SC_(189826091859785114853326190302451053596260703706816.4398966710897666141022837712497109419896602022543), SC_(0.9999998717335233165320631044581961402817990629032046678964000368883302297845562914222733488844442794) }, + { SC_(42.46524810791015625), SC_(4246.52490234375), SC_(0.1582138976529834669433177680858588062216552879141295278678516348608211028079490742605004732613922258e-1693), SC_(0.833467495481647495481160914000063543822730002585076733409460509982719856414211333368378429831102885e-1744), SC_(189826116208112223374427708716952062262555313430053.0581376558616480205470597702005265143161776736534), SC_(1) }, + { SC_(42.497722625732421875), SC_(0.4249772131443023681640625), SC_(214320796587885406489458353728508854097873289394904.6024158630527288917218602076036150242028043390557), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999883411956140219450400432290945474), SC_(0.2498724243265148933181472014474271661064356718503270820032139724307779458620504172510254476937240104e-17), SC_(0.1165880438597805495995677090545256446620949551376648046928037362511313906278612645727943391506149808e-67) }, + { SC_(42.497722625732421875), SC_(21.2488613128662109375), SC_(214313951967646903484275152390899015742965720544957.0244003475522738138072843627099232296750479851478), SC_(0.9999680636674206449787401653783054044121775659544962496092997854430722825546991266056094615440876975), SC_(6844620238503005183201337609838354907568849947.578015515500455080413300088158840727709228368382151053), SC_(0.319363325793550212598346216945955878224340455037503907002145569277174453008733943905384559123024965e-4) }, + { SC_(42.497722625732421875), SC_(40.497722625732421875), SC_(129174249361023537107331876987310933122091042366831.2645618937047613242717506127419300674429383707532), SC_(0.6027144888296163515772252070453834692480092311566955326953291599058029767926908124663436695625012203), SC_(85146547226861869382126476741197920975782247028073.33785396934796756994883383812683388994133798277675), SC_(0.3972855111703836484227747929546165307519907688433044673046708400941970232073091875336563304374987797) }, + { SC_(42.497722625732421875), SC_(42.497722625732421875), SC_(102787956119288975126093723648829399785804945587883.9803151682835690979042911457085841852094068383049), SC_(0.4795986099143638463567892055723837634276116729234156335106960194337764297212436073008822394018180986), SC_(111532840468596431363364630079679454312068343807020.6221006947691597963162933051601797721748695152251), SC_(0.5204013900856361536432107944276162365723883270765843664893039805662235702787563926991177605981819014) }, + { SC_(42.497722625732421875), SC_(44.497722625732421875), SC_(77587716348964293578465407640649663151883390246322.89493559759560806796522105015336899577361192607823), SC_(0.3620167411852088050793255261572635397474417290529254386212890191099213379494954290219523059157586597), SC_(136733080238921112910992946087859190945989899148581.7074802654571208262553634007153949616106644274517), SC_(0.6379832588147911949206744738427364602525582709470745613787109808900786620505045709780476940842413403) }, + { SC_(42.497722625732421875), SC_(84.99544525146484375), SC_(27208070530448802765802909580562168163995461.77254579478951131116041462644391236698700521687109732357), SC_(0.1269502118488614883135844698362221668980787971129111358877071664099451873870630359704078903509597235e-6), SC_(214320769379814876040655587925599273535705125399442.8298700682632175830601698244248515903972711366588), SC_(0.999999873049788151138511686415530163777833101921202887088864112292833590054812612936964029592109649) }, + { SC_(42.497722625732421875), SC_(4249.7724609375), SC_(0.8326144286328681511297509911312044136597406528821339926238202082943488422887032281482269721890781093e-1695), SC_(0.3884897974851648675353071909446415031550976071737151800482655820055346640598305675474382338414838097e-1745), SC_(214320796587885406489458353728508854097873289394904.6024158630527288942205844508687639573842763535299), SC_(1) }, + { SC_(44.155063629150390625), SC_(0.4415506422519683837890625), SC_(108477114678077093078697695322659091260698084784137369.110002963121029559199090947909271120281219104), SC_(0.999999999999999999999999999999999999999999999999999999999999999999999971405835691531463436772501), SC_(0.3101812440813520419483393002469302629985608179508771094556858171811451827514217878742256926755929311e-17), SC_(0.2859416430846853656322749899999994037199837561279552079800218535906471678278076452067456339118630281e-70) }, + { SC_(44.155063629150390625), SC_(22.0775318145751953125), SC_(108474643430185028249549503850872916519826391393005797.430328383897984547126631643749528279128196121), SC_(0.9999772187165984397158403431700925824058753412351532475246527059570351643018381108199138172896039085), SC_(2471247892064829148191471786174740871693391131571.679674579223045015174271744973263260636415985468981), SC_(0.2278128340156028415965682990741759412465876484675247534729404296483569816188918008618271039609146006e-4) }, + { SC_(44.155063629150390625), SC_(42.155063629150390625), SC_(65166733607384328109686174934992652095056623924479329.71630731218031381629055903769763393120666968009), SC_(0.6007417675219041750822628400919139150659383390950652539443606929164707374961076769162586172886969385), SC_(43310381070692764969011520387666439165641460859658039.39369565094071574601034435102515760855794242637), SC_(0.3992582324780958249177371599080860849340616609049347460556393070835292625038923230837413827113030615) }, + { SC_(44.155063629150390625), SC_(44.155063629150390625), SC_(52067413750779344514119345276186742921186293772746499.41380384213826580730156316210705897365261918615), SC_(0.4799852384099410068415064305992278477407571638288250246591103967747364965706434447092705239015834618), SC_(56409700927297748564578350046472348339511791011390869.69619912098276375499934022661573256611199292031), SC_(0.5200147615900589931584935694007721522592428361711749753408896032252635034293565552907294760984165382) }, + { SC_(44.155063629150390625), SC_(46.155063629150390625), SC_(39535757049385602447041006385754985944643699206637761.09264139802081605784331062412697787405216533363), SC_(0.3644617315524494040054148120284369212099063236559308483685850590153452830990755538609910522536928245), SC_(68941357628691490631656688936904105316054385577499608.01736156510021350445759276459581366571244677283), SC_(0.6355382684475505959945851879715630787900936763440691516314149409846547169009244461390089477463071755) }, + { SC_(44.155063629150390625), SC_(88.31012725830078125), SC_(8137413449512315740698282975266611386652928396.043112228062756547178254908982430306893053990429077622), SC_(0.7501502481570763190138780452890031775330360096985795411810658666744412583681565686527092252128233038e-7), SC_(108477106540663643566381954624376115994086698131208973.066890735058273015122648479740361232871558116), SC_(0.9999999249849751842923680986121954710996822466963990301420458818934133325558741631843431347290774787) }, + { SC_(44.155063629150390625), SC_(4415.50634765625), SC_(0.471616374294560277944461078335500447468289615585971440027982546549067486843462830019440340283459081e-1760), SC_(0.4347611712333574492131230726637439063324039886060442151202797559933361183474801399051158585639811607e-1813), SC_(108477114678077093078697695322659091260698084784137369.1100029631210295623009033887227915397646121065), SC_(1) }, + { SC_(44.835826873779296875), SC_(0.4483582675457000732421875), SC_(1425978933609371600254458545091031314924821988225992007.557234079964693407661705427270692856772618663), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999975782049885832827770176393437), SC_(0.3453428667800506345586379402470304713295120863379305752115250295842367161856972936119639096916324187e-17), SC_(0.2421795011416717222982360656263756591421154877670003395133154316227366187748464697721629599772812851e-71) }, + { SC_(44.835826873779296875), SC_(22.4179134368896484375), SC_(1425950651713633889105666908760918881400866742496260282.113179056753909833420877276347905848622289105), SC_(0.999980166680537050201167214079127526076483317084996681897910004842606091655157227350710452797377076), SC_(28281895737711148791636330112433523955245729731725.44405502321078357769425681872329335373670896079778), SC_(0.1983331946294979883278592087247392351668291500331810208999515739390834484277264928954720262292402961e-4) }, + { SC_(44.835826873779296875), SC_(42.835826873779296875), SC_(855535678182104766414101538607812051948212691408357581.4462739593052650716693109932594932935460042787), SC_(0.5999637568393893599087315525330780934527760671826708937832493979646943082931183806407797393962321876), SC_(570443255427266833840357006483219262976609296817634426.1109601206594283394458231018117059088129937868), SC_(0.4000362431606106400912684474669219065472239328173291062167506020353056917068816193592202606037678124) }, + { SC_(44.835826873779296875), SC_(44.835826873779296875), SC_(684666388653978411093045829488133146997666675192448887.548528078215404828846865562619004725827358265), SC_(0.4801378004378947380266451988338181755814166171016997601902346821704416371646920497258774389818801572), SC_(741312544955393189161412715602898167927155313033543120.0087060017492885822682685324521944765316398005), SC_(0.5198621995621052619733548011661818244185833828983002398097653178295583628353079502741225610181198428) }, + { SC_(44.835826873779296875), SC_(46.835826873779296875), SC_(521094130933416047837079183573472533059338367837325116.5799720069159845395376546564897521165798171593), SC_(0.3654290527381402493626935887566776833495382792235610396067617960985112005638177611240789255072658853), SC_(904884802675955552417379361517558781865483620388666890.9772620730487088715774794385814470857791809061), SC_(0.6345709472618597506373064112433223166504617207764389603932382039014887994361822388759210744927341147) }, + { SC_(44.835826873779296875), SC_(89.67165374755859375), SC_(86195751040333604857084573714314451948245512370.79235789734733534050631501122476697460359002262506887), SC_(0.6044672120236652165734581570628687563255578813023631070319335842563478393717628809723536588107406485e-7), SC_(1425978847413620559920853688006457600610370039980479636.764876182617358070608819083846432227755408043), SC_(0.9999999395532787976334783426541842937131243674442118697636892968066415743652160628237119027646341189) }, + { SC_(44.835826873779296875), SC_(4483.58251953125), SC_(0.7605491057948708736924073253960663000703660831533174820826097811656785980099961747730783148348354065e-1787), SC_(0.5333522732133246357469507632120627536627389505909703958332558281193272201000164939932160014407258852e-1841), SC_(1425978933609371600254458545091031314924821988225992007.557234079964693411115134095071199202358998065), SC_(1) }, + { SC_(46.069919586181640625), SC_(0.46069920063018798828125), SC_(156229578645430029892693280469938894161099847723443430447.8937329526294770773514461975762040960485434), SC_(0.999999999999999999999999999999999999999999999999999999999999999999999999972414536373073821020386629), SC_(0.430966535917351299246823445116747633882755453793598188924370382185860462468582139997307910457170432e-17), SC_(0.2758546362692617897961337099106494794692271397414639378058001876362927589908259563322719332609135106e-73) }, + { SC_(46.069919586181640625), SC_(23.0349597930908203125), SC_(156227167802482030291019955950849717986542276783577097596.7764187512164019070117619873055446230194126), SC_(0.9999845685882986913965954484603299408671471664544313095838757262758837338039566255031179892326667966), SC_(2410842947999601673324519089176174557570939866332851.117314201413075174649349569444172465497365238143), SC_(0.1543141170130860340455153967005913285283354556869041612427372411626619604337449688201076733320338164e-4) }, + { SC_(46.069919586181640625), SC_(44.069919586181640625), SC_(93518739167256001160965508843623557287049283164262706802.08206238317796027550427531938997001220645491), SC_(0.598598165456881470526785542920476560627052846085107740656990795501163393325018781713583372398113095), SC_(62710839478174028731727771626315336874050564559180723645.81167056945151680615683623735974707631032292), SC_(0.401401834543118529473214457079523439372947153914892259343009204498836606674981218286416627601886905) }, + { SC_(46.069919586181640625), SC_(46.069919586181640625), SC_(75053579006905291972845878009168891776075391934208005221.27770122160681576900920027778915844077444459), SC_(0.4804056930681655629591455827282010092249885224965548489268707311023785623924484916861804903328450513), SC_(81175999638524737919847402460770002385024455789235425226.61603173102266131265191127896055864774233324), SC_(0.5195943069318344370408544172717989907750114775034451510731292688976214376075515083138195096671549487) }, + { SC_(46.069919586181640625), SC_(48.069919586181640625), SC_(57356732535777750826101726953433302049059639079849857461.90725107209455149651293551223027861293511609), SC_(0.3671310710371395400688098470264602078755856799586471251333558549032032640968970520939771044797009879), SC_(98872846109652279066591553516505592112040208643593572985.98648188053492558514817604451943847558166174), SC_(0.6328689289628604599311901529735397921244143200413528748666441450967967359031029479060228955202990121) }, + { SC_(46.069919586181640625), SC_(92.13983917236328125), SC_(6386261777959473426463268613298083779201778180875.963636401171364540171862037153434000929449897273151), SC_(0.4087741792131039588147504168641433115263864467545102514308424422207845266372182224750302862122549557e-7), SC_(156229572259168251933219854006670280863016068521665249571.9300965514581125414892495195962830875873279), SC_(0.9999999591225820786896041185249583135856688473613553245489748569157557779215473362781777524969713788) }, + { SC_(46.069919586181640625), SC_(4606.9921875), SC_(0.2103364288773543767991509542870335920129305151787917372994954838606983292825200444922887881847471441e-1835), SC_(0.1346329105544874108038106920532274902902258224702979771700801449163515518919323368752942104778867365e-1891), SC_(156229578645430029892693280469938894161099847723443430447.8937329526294770816611115567497170885167778), SC_(1) }, + { SC_(47.73848724365234375), SC_(0.477384865283966064453125), SC_(94297871782126531667698757690457880775688953913143478158783.4026371124564849066620969800384558927427), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999349491816884125540004068), SC_(0.6134153724468481696276626044323259403012657381341431694954157745658077001183420287143157095875836147e-17), SC_(0.6505081831158744599959323819852673084068016573338617816115596248891966884813541934905939397700390915e-76) }, + { SC_(47.73848724365234375), SC_(23.869243621826171875), SC_(94296834823245807652969045967500639423686913863045283825866.12092678998463588262427567075517041016733), SC_(0.9999890033692051938476305602120476157955869002397150769041542477718912839914002884896529349163695651), SC_(1036958880724014729711722957241352002040050098194332917.281710322471849030171975033751767178851992382), SC_(0.1099663079480615236943978795238420441309976028492309584575222810871600859971151034706508363043494305e-4) }, + { SC_(47.73848724365234375), SC_(45.73848724365234375), SC_(56280529723473313322772954173137164595518203073213855235385.45619029103223562820004377606088660146763), SC_(0.5968377510524142493503249212629070417341066991315400614686976736813838796351206883152067091509543647), SC_(38017342058653218344925803517320716180170750839929622923397.94644682142424928459620692844605098755169), SC_(0.4031622489475857506496750787370929582658933008684599385313023263186161203648793116847932908490456353) }, + { SC_(47.73848724365234375), SC_(47.73848724365234375), SC_(45333819229102433455254827525534048742879689999947486539951.19954532498841582752257288476676363338733), SC_(0.480751244671198672827310863786147702830011497912631764613704226381736485766138504104714358349333159), SC_(48964052553024098212443930164923832032809263913195991618832.203091787468069085273677819740173955632), SC_(0.519248755328801327172689136213852297169988502087368235386295773618263514233861495895285641650666841) }, + { SC_(47.73848724365234375), SC_(49.73848724365234375), SC_(34827306725858276966117445978915340810575352880081770694703.4605605862527481970966869862156645736762), SC_(0.3693329029347143432647220290012258387000367719450912937969606556838290008738547030598297130035940408), SC_(59470565056268254701581311711542539965113601033061707464079.94207652620373671569956371829127301534313), SC_(0.6306670970652856567352779709987741612999632280549087062030393443161709991261452969401702869964059592) }, + { SC_(47.73848724365234375), SC_(95.4769744873046875), SC_(2272453501227737595672809400559769771223684974377983.827976395269020528779174166766882031804331639098), SC_(0.2409867219992195465527592924565649658742240559501080492032913406249111902612657779532496540897954508e-7), SC_(94297869509673030439961162017648480215919182689458503780799.57466071718746438401707653774005555721499), SC_(0.999999975901327800078045344724070754343503412577594404989195079670865937508880973873422204675034591) }, + { SC_(47.73848724365234375), SC_(4773.8486328125), SC_(0.4930699700361143527972140765160232135500591407875671436014018474055318469318842911777409267112490955e-1901), SC_(0.5228855760131504268371997964833577252463985153824819644786388969005802260327733579808010387320073253e-1960), SC_(94297871782126531667698757690457880775688953913143478158783.40263711245648491279625070450693758901933), SC_(1) }, + { SC_(48.7948760986328125), SC_(0.48794877529144287109375), SC_(5601572122098061051259791642269275646923022713836767611816339.1137889913367940628079996713078961603), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999985876655788824192282825), SC_(0.7911293120411743533001376111343001937295274002968810106768363279940895381585075390096587193008694434e-17), SC_(0.1412334421117580771717536205560869187212298090709774667602193820952283548749621069654359532291337091e-77) }, + { SC_(48.7948760986328125), SC_(24.39743804931640625), SC_(5601522402139792886638498079287725791823205121779703966794601.016615862491090543010529121958589696189), SC_(0.999991123927857320512363083686512750338327837341403865193132290293173625226193417093316263644182252), SC_(49719958268164621293562981549855099817592057063645021738.09717312884570352770876366976104999711212453), SC_(0.8876072142679487636916313487249661672162658596134806867709706826374773806582906683736355817747966447e-5) }, + { SC_(48.7948760986328125), SC_(46.7948760986328125), SC_(3337252972618945238853345843103427263009076595580958815239085.917364310448605943882838936122588050498), SC_(0.5957707764671218367298061078886198032271253720656163155156411853611522701054849762534337523550633538), SC_(2264319149479115812406445799165848383913946118255808796577253.196424680888188126836453855597051642803), SC_(0.4042292235328781632701938921113801967728746279343836844843588146388477298945150237465662476449366462) }, + { SC_(48.7948760986328125), SC_(48.7948760986328125), SC_(2694136564790500482748260777423500420852012948687403792505394.16676815034093075792922204727697680055), SC_(0.4809607920894563752724322425856259987941807214874355947391297070165003153642341702847879913264921532), SC_(2907435557307560568511530864845775226071009765149363819310944.947020840995863312790070744442662892751), SC_(0.5190392079105436247275677574143740012058192785125644052608702929834996846357658297152120086735078468) }, + { SC_(48.7948760986328125), SC_(50.7948760986328125), SC_(2076343764684620073166086419044050262016135013176153464440846.664429231610555519468550009162785276707), SC_(0.3706716113666547602264918798884556302564009821822648843191020496528632303627131612767514362854816721), SC_(3525228357413440978093705223225225384906887700660614147375492.449359759726238551250742782556854416594), SC_(0.6293283886333452397735081201115443697435990178177351156808979503471367696372868387232485637145183279) }, + { SC_(48.7948760986328125), SC_(97.589752197265625), SC_(96633720783328303798352010014189600454943867848270215.47055760089377523289780774911933669460249883556), SC_(0.1725117854005855020842370419366583086762499064870270317383869431514356647748290788156579276766810871e-7), SC_(5601572025464340267931487843917265632733422258892899763546123.643231390443018837821485042600302998698), SC_(0.9999999827488214599414497915762958063341691323750093512972968261613056848564335225170921184342072323) }, + { SC_(48.7948760986328125), SC_(4879.48779296875), SC_(0.142902764516403185294728217767227941951713037297670494882890420551091468476013775233803109173853481e-1942), SC_(0.2551118889510596062852710063746790917638079926789072602114635625355302609430843127363392446485128694e-2003), SC_(5601572122098061051259791642269275646923022713836767611816339.113788991336794070719292791719639693301), SC_(1) }, + { SC_(49.0131072998046875), SC_(0.490131080150604248046875), SC_(13061864686300908920803719163179816963237677037051715665276991.24303425192689419132654400708683577008), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999993597665573432272928705), SC_(0.836264259562735739627584621018775264415451920404592899346755679500865071935186794232489730130344795e-17), SC_(0.6402334426567727071295084550402072098866010960149830297834331520992735700400049855174658417403349245e-78) }, + { SC_(49.0131072998046875), SC_(24.50655364990234375), SC_(13061753764458253693889131231633966917056697244809076726567854.48561655813426357616271131753200856525), SC_(0.999991507962659300849474722779311188992029309392573691814886457299231043087112170534288979616810278), SC_(110921842655226914587931545850046180979792242638938709136.7574176937926306235264752851821846011056054), SC_(0.849203734069915052527722068881100797069060742630818511354270076895691288782946571102038318972203823e-5) }, + { SC_(49.0131072998046875), SC_(47.0131072998046875), SC_(7779055177224531433847873356756550880745643673160067434883264.175524243200545787554424699998699886704), SC_(0.5955547208648616454908563451934368284777868953754228840242479213047790283151801262424758509649431696), SC_(5282809509076377486955845806423266082492033363891648230393727.067510008726348412134761902715493279651), SC_(0.4044452791351383545091436548065631715222131046245771159757520786952209716848198737575241490350568304) }, + { SC_(49.0131072998046875), SC_(49.0131072998046875), SC_(6282799159117711650413155559190223007042393328845967305871549.376765107501095387327816026904935607209), SC_(0.4810032342248208072042698066580552453179272398068159449689453325312924253220975980845696118149472746), SC_(6779065527183197270390563603989593956195283708205748359405441.866269144425798812361370575809257559146), SC_(0.5189967657751791927957301933419447546820727601931840550310546674687075746779024019154303881850527254) }, + { SC_(49.0131072998046875), SC_(51.0131072998046875), SC_(4845208239695453672310499194053447053092715720355790929554960.433543251225737318347763865778378682507), SC_(0.3709430740602478166121936161323102049305485691941792020654326044473795475903974477495853857611723314), SC_(8216656446605455248493219969126369910144961316695924735722030.809491000701156881341422736935814483848), SC_(0.6290569259397521833878063838676897950694514308058207979345673955526204524096025522504146142388276686) }, + { SC_(49.0131072998046875), SC_(98.026214599609375), SC_(210302546324079617042666137317355910679338721332923180.7011094632185992140992419400883752605588168246), SC_(0.161004995362294501955781899433447647910794848223030498056618820371527992069100268591557647156092188e-7), SC_(13061864475998362596724102120513679645881766357712994332353810.5419247887082949855899446626258179058), SC_(0.9999999838995004637705498044218100566552352089205151776969501943381179628472007930899731408442352844) }, + { SC_(49.0131072998046875), SC_(4901.310546875), SC_(0.3762759202371411607906182163728630489436731159784447719530250581881585367181454133780748766860948066e-1951), SC_(0.2880721315630943547874313385040782195852595290301301095111354119874378149376461073017779801557087002e-2012), SC_(13061864686300908920803719163179816963237677037051715665276991.24303425192689419968918660271419316635), SC_(1) }, + { SC_(49.231555938720703125), SC_(0.4923155605792999267578125), SC_(30513621371784093137907492178483728526708751385403785887891548.23854827764774923684709064035148648646), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999997099978963833420028762), SC_(0.8849014386779600512060918409202638110571377119277677306756900527895703405248910547011395073678119164e-17), SC_(0.2900021036166579971238497856762868731798590837906482108761044532802848110442112916452863099138439806e-78) }, + { SC_(49.231555938720703125), SC_(24.6157779693603515625), SC_(30513373469024151077427407466748464253916093262945790568081786.96468838116647238895631811451178316184), SC_(0.9999918756690029818667536660677441010658447041407899302655904960908028819952123731430693041660260175), SC_(247902759942060480084711735264272792658122457995319809761.273859896481276856739786912619303836679277), SC_(0.8124330997018133246333932255898934155295859210069734409503909197118004787626856930695833973982461035e-5) }, + { SC_(49.231555938720703125), SC_(47.231555938720703125), SC_(18165976531026817699694075872139940080858090169269377566790729.18049740095257364251337317300270303058), SC_(0.5953399076985622259376744449097626597320408517357455652989455255522387615460499030573249546917648582), SC_(12347644840757275438213416306343788445850661216134408321100819.05805087669517560318273185412838396794), SC_(0.4046600923014377740623255550902373402679591482642544347010544744477612384539500969426750453082351418) }, + { SC_(49.231555938720703125), SC_(49.231555938720703125), SC_(14678438286187132704549611673975659053997461881768925114598324.54023317355898087685865946286072013889), SC_(0.4810454356545259460226648234226421578585333714355594346042312300451980308766843304950525841893354252), SC_(15835183085596960433357880504508069472711289503634860773293223.69831510408876836883744556427036685963), SC_(0.5189545643454740539773351765773578421414666285644405653957687699548019691233156695049474158106645748) }, + { SC_(49.231555938720703125), SC_(51.231555938720703125), SC_(11327056074316051728317464973826531163156542845237827110031967.79109381718475434769618838452002397804), SC_(0.3712131030369986195606978160531938715384914963649215103746762677583232808809154482681745158093446569), SC_(19186565297468041409590027204657197363552208540165958777859580.44745446046299489799991664261106302048), SC_(0.6287868969630013804393021839468061284615085036350784896253237322416767191190845517318254841906553431) }, + { SC_(49.231555938720703125), SC_(98.46311187744140625), SC_(458487525192315340840770286858890259374330205634710765.9988768621277089725207826487810563589003265197), SC_(0.1502566737674336393528638656732338483304684381381084127396773752730019404675626466336475080971018729e-7), SC_(30513620913296567945592151337713441667818492011073580253180782.23967141552004027317532237835003063962), SC_(0.9999999849743326232566360647136134326766151669531561861891587260322624726998059532437353366352491903) }, + { SC_(49.231555938720703125), SC_(4923.15576171875), SC_(0.9717321242756456827191901001352849353556786219798769841406587556238286163318346298612203221364212635e-1960), SC_(0.318458472180625909505605899807483871295648097053185716425474836108328454194480870818140154208789747e-2021), SC_(30513621371784093137907492178483728526708751385403785887891548.23854827764774924569610502713108699852), SC_(1) }, + { SC_(49.313610076904296875), SC_(0.493136107921600341796875), SC_(41977462250047053621278529477326524770382434246777810317301271.50355312924884894059528324863289768382), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999997846166238980781349222), SC_(0.9041247539606111811561301659776818578488689362946063791809098998694084062604014379692784132080132169e-17), SC_(0.2153833761019218650777897073040746888619415685741883415747598184105013419478470021362496143382514766e-78) }, + { SC_(49.313610076904296875), SC_(24.6568050384521484375), SC_(41977126834111098802325476057585044641461610329312651133657817.80438041334181472191041470716898161388), SC_(0.999992009618543473456957953827788227898425858640141642904158702373742555202893589905204560663320144), SC_(335415935954818953053419741480128920823917465159183643453.6991727159070342277261160810700278815059985), SC_(0.7990381456526543042046172211772101574141359858357095841297626257444797106410094795439336679855990441e-5) }, + { SC_(49.313610076904296875), SC_(47.313610076904296875), SC_(24987487076314225090859455285460119707445499455299404530418239.95789704471690970870041620817722242819), SC_(0.5952595925754472204052306290824436181794875104709120322748544232982499815973709574172989348541860406), SC_(16989975173732828530419074191866405062936934791478405786883031.54565608453193924093611458006178706719), SC_(0.4047404074245527795947693709175563818205124895290879677251455767017500184026290425827010651458139594) }, + { SC_(49.313610076904296875), SC_(49.313610076904296875), SC_(20193728989961464156407400427712716826877199356621370752578181.00940429055827926222557408902306356367), SC_(0.4810612149365658350199096657185796598997839581312059611269089898075494261587237385701322394433743991), SC_(21783733260085589464871129049613807943505234890156439564723090.49414883869056968741095669921594593172), SC_(0.5189387850634341649800903342814203401002160418687940388730910101924505738412762614298677605566256009) }, + { SC_(49.313610076904296875), SC_(51.313610076904296875), SC_(15586823406579095014352178767892338209924728088557566605812326.27035014833144003135287498797910150214), SC_(0.3713140950192057725345167846810657523567871031455454878884239259485793829239381364071945398866452464), SC_(26390638843467958606926350709434186560457706158220243711488945.23320298091740891828365580025990799324), SC_(0.6286859049807942274654832153189342476432128968544545121115760740514206170760618635928054601133547536) }, + { SC_(49.313610076904296875), SC_(98.62722015380859375), SC_(614582434878766631658381755290327694839226731674591511.4439373352808898253364458766736410914439707921), SC_(0.1464077154588061669542294492075360765560256682717113973689794974636505127774814401769897990679495622e-7), SC_(41977461635464618742511897818944769480054739407551078642709760.05961579396795912430008491156536840394), SC_(0.9999999853592284541193833045770550792463923443974331728288602631020502536349487222518559823010200932) }, + { SC_(49.313610076904296875), SC_(4931.36083984375), SC_(0.5781374421410369483050943901670173138935377941438834462093143122446551440529941418555199448394287663e-1963), SC_(0.137725677340199120569492006946235910213477616632694978279574736604970959505980571279012260573630228e-2024), SC_(41977462250047053621278529477326524770382434246777810317301271.50355312924884894963653078823900949539), SC_(1) }, + { SC_(50.61444091796875), SC_(0.50614440441131591796875), SC_(6714188046232440418685030023377617773603001027074053478294994042.204646644051537335902300746519907618), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999980715363415791268913), SC_(0.1294806764296310636318173346859335327241054167055133004392944644877422244201183535072458036592003221e-16), SC_(0.1928463658420873108652804777026377451373877260124550558001117332744510315505278162911918594962705467e-80) }, + { SC_(50.61444091796875), SC_(25.307220458984375), SC_(6714146820546485816210964392746809241641339557308203649194458429.81834063847038356985374879819165094), SC_(0.999993859914903971804826160490836859357383212078582155689027432935121621190536804019545464384514836), SC_(41225685954602474065630630808531961661469765849829100535612.38630600558115377899661959129136304102089), SC_(0.614008509602819517383950916314064261678792141784431097256706487837880946319598045453561548516398687e-5) }, + { SC_(50.61444091796875), SC_(48.61444091796875), SC_(3988313956145632916566663762336571620536279896513960331887006459.167227525169321876011864521792547979), SC_(0.5940128469269805020475397278656733185177834722866262153069773700644041051113597931821515140004607074), SC_(2725874090086807502118366261041046153066721130560093146407987583.037419118882215472838503867690466002), SC_(0.4059871530730194979524602721343266814822165277133737846930226299355958948886402068178484859995392926) }, + { SC_(50.61444091796875), SC_(50.61444091796875), SC_(3231580463151548830516154806912916051190670333620249597297205901.021990540164873600299658797918958768), SC_(0.4813062191436384758388250043654343574286693186475618754553011841019147867069570438343251387511825629), SC_(3482607583080891588168875216464701722412330693453803880997788141.182656103886663748550709591564055213), SC_(0.5186937808563615241611749956345656425713306813524381245446988158980852132930429561656748612488174371) }, + { SC_(50.61444091796875), SC_(52.61444091796875), SC_(2503613809043348826074455346249509284449404807156470871472444827.438146871104786877235935571082287603), SC_(0.3728840764965187117746424485085442369500169196675495454176896266215341707615979829805709488435240308), SC_(4210574237189091592610574677128108489153596219917582606822549214.766499772946750471614432818400726378), SC_(0.6271159235034812882253575514914557630499830803324504545823103733784658292384020170194290511564759692) }, + { SC_(50.61444091796875), SC_(101.2288818359375), SC_(65157090661144176686930404729589898612925199880024698927.79274861109795689024903768341745546080942518), SC_(0.9704388708282610485660341164426108672165668055174493744243968577985313828355455148136453870853589378e-8), SC_(6714187981075349757540853336447213044013102414148853598270295114.41189803295358045860133070606555852), SC_(0.9999999902956112917173895143396588355738913278343319448255062557560314220146861716445448518635461291) }, + { SC_(50.61444091796875), SC_(5061.4443359375), SC_(0.4289812536466745246255732966601129510431435781396240051532903497325943684690874971818157697955959851e-2014), SC_(0.6389175440020487899249233587686281673752734749390701447354800554184726072346876273924109482210533211e-2078), SC_(6714188046232440418685030023377617773603001027074053478294994042.204646644051537348850368389483013981), SC_(1) }, + { SC_(54.914707183837890625), SC_(0.549147069454193115234375), SC_(164151310522993759069795066972687396443103420991679884830848715223699039.1653106566475602886411567813), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999996719495846733), SC_(0.5384990559349759171681441333454699105568520939738433355014750224830539512407632661747323173299402731e-16), SC_(0.3280504153267450125172471989136226939862161886184417111761738657190547864708487501819152013725201312e-87) }, + { SC_(54.914707183837890625), SC_(27.4573535919189453125), SC_(164150887731298655188038651562491593455570836870325079905734706617590366.5972755127311180833858260057), SC_(0.9999974243781925538844289635804501882857438295912247848668748219088743426660381706768477071244500074), SC_(422791695103881756415410195802987532584121354804925114008606108672.5680351439164422591052363691705433), SC_(0.2575621807446115571036419549811714256170408775215133125178091125657333961829323152292875549992583763e-5) }, + { SC_(54.914707183837890625), SC_(52.914707183837890625), SC_(96884578938958210997376202956674290839773847199735668357379347723709372.39625989326147265466419377192), SC_(0.590215080405263944811319921890712084248273030272297085126732257678891723123563893072502749049830431), SC_(67266731584035548072418864016013105603329573791944216473469367499989666.76905076338608768782686860291), SC_(0.409784919594736055188680078109287915751726969727702914873267742321108276876436106927497250950169569) }, + { SC_(54.914707183837890625), SC_(54.914707183837890625), SC_(79129667267047147526717119118995088355831259181129876934354432191582853.77653680202639544058251024707), SC_(0.4820532167238648515239777182823065099496881627515239823294463925310285574100982896450873030840569627), SC_(85021643255946611543077947853692308087272161810550007896494283032116185.38877385462116490190855212777), SC_(0.5179467832761351484760222817176934900503118372484760176705536074689714425899017103549126969159430373) }, + { SC_(54.914707183837890625), SC_(56.914707183837890625), SC_(61998698233085757229493527411137482480537560623537872923270337904981139.91599151236753006190384612575), SC_(0.3776923744047793622088152487925424046936010452307012286644065629232030935629673512651414067339507712), SC_(102152612289908001840301539561549913962565860368142011907578377318717899.2493191442800302805872162491), SC_(0.6223076255952206377911847512074575953063989547692987713355934370767969064370326487348585932660492288) }, + { SC_(54.914707183837890625), SC_(109.82941436767578125), SC_(409887797602967570461851681889828802007684874925098320507959771.5715434779624004447688690016653063067), SC_(0.2497012032965474725110186547475795550820769743457111426043609148765376435274603693329847732145409736e-8), SC_(164151310113105961466827496510835714553274618983995009905750394715739267.5937671786851598977221933732), SC_(0.9999999975029879670345252748898134525242044491792302565428885739563908512346235647253963066701522679) }, + { SC_(54.914707183837890625), SC_(5491.470703125), SC_(0.5165113766416084345161388194893437492127905673992045258572355165738821959725822506156487309956784915e-2183), SC_(0.3146556521516514313547899769529902715440568138637626889248921733720231539084951313300316259223236421e-2254), SC_(164151310522993759069795066972687396443103420991679884830848715223699039.1653106566475603424910623748), SC_(1) }, + { SC_(54.94844818115234375), SC_(0.5494844913482666015625), SC_(187851168756962008518943585197155939239197451550074484378447714368658665.2380183083961816911607133335), SC_(0.9999999999999999999999999999999999999999999999999999999999999999999999999999999999999997097092642134), SC_(0.5453145399682577866129223201000569205154674653231300863472075774659456902236400591754309838804134088e-16), SC_(0.2902907357865707827052086134526239861006169237323449091651043766816683560186739143948897058595964204e-87) }, + { SC_(54.94844818115234375), SC_(27.474224090576171875), SC_(187850688204754556675259030571735333383262932952997517257249277514417744.3674666108961266782574975188), SC_(0.9999974418460601990063741194487108136798967754558587780131350787376230409100342878319683058714681691), SC_(480552207451843684554625420605855934518597076967121198436854240920.870551697500055067434669811554025), SC_(0.2558153939800993625880551289186320103224544141221986864921262376959089965712168031694128531830910458e-5) }, + { SC_(54.94844818115234375), SC_(52.94844818115234375), SC_(110867332077426050430170113462157612347487429352825641994332385851947222.233911692886205435906040664), SC_(0.5901870763490640405017843227129827156929426843403059593921350219170041223755765166141042849834084803), SC_(76983836679535958088773471734998326891710022197248842384115328516711443.00410661550997630978612666635), SC_(0.4098129236509359594982156772870172843070573156596940406078649780829958776244234833858957150165915197) }, + { SC_(54.94844818115234375), SC_(54.94844818115234375), SC_(90555295593671555882056125352107820301243760681827977424997667068714409.28854900998522407279115121804), SC_(0.4820587286887213413001143913452364408800882507714759540697120562191766618525011812570522720775708377), SC_(97295873163290452636887459845048118937953690868246506953450047299944255.94946929841095767290101611228), SC_(0.5179412713112786586998856086547635591199117492285240459302879437808233381474988187429477279224291623) }, + { SC_(54.94844818115234375), SC_(56.94844818115234375), SC_(70956641203163086936978696616478734493599092913380748575928433966808218.65193597391433636996316283525), SC_(0.3777279730155170598106878915865848184309466262864013694659475230887023301322530086576178253354594503), SC_(116894527553798921581964888580677204745598358636693735802519280401850446.5860823344818453757290044951), SC_(0.6222720269844829401893121084134151815690533737135986305340524769112976698677469913423821746645405497) }, + { SC_(54.94844818115234375), SC_(109.8968963623046875), SC_(464102201043865833557216906582828066994755225561277803369375097.9754584615902564830459384037959935776), SC_(0.2470584580947227152441614199965658460018276150506352260350268803453851765854228808608987929910805107e-8), SC_(187851168292859807475077751639939032656369384555319258817169910999283567.2625598468059252626462289265), SC_(0.9999999975294154190527728475583858000343415399817238494936477396497311965461482341457711913910120701) }, + { SC_(54.94844818115234375), SC_(5494.8447265625), SC_(0.2445298890493541408008467785454571259883344621206772579885985213851975119760419015604019740185833505e-2184), SC_(0.1301721414178273752294907378127263551002731231502211006847882185446847655446946323738171949854707235e-2255), SC_(187851168756962008518943585197155939239197451550074484378447714368658665.2380183083961817456921673303), SC_(1) }, + { SC_(63.41974639892578125), SC_(0.6341974735260009765625), SC_(178781775582555322831393459001548236824080056881981997135875096380855128931018811384607.8263867610159), SC_(1), SC_(0.2419755692515371515173584094950612592700908218521955459597516726810661567670404063127525834621512633e-14), SC_(0.1353468878262712472782977862087874621871057321340893800289611779258406507229157512362295404649566625e-100) }, + { SC_(63.41974639892578125), SC_(31.709873199462890625), SC_(178781692342142170785409780820515383634926532408086873914117894912676684365389019767752.7790978582308), SC_(0.9999995344021342174868290258262038710262198353109634411194483106961237383691635096796115414028455356), SC_(83240413152045983678181032853189153524473895123221757201468178444565629791616855.04728890278507809948), SC_(0.4655978657825131709741737961289737801646890365588805516893038762616308364903203884585971544643507025e-6) }, + { SC_(63.41974639892578125), SC_(61.41974639892578125), SC_(104388333133949398433671787908270687938056375083765771453773799137973989914779780509815.5199712670318), SC_(0.5838868799339473422094395385799267211052253663811901143993747449946945861354588975918358898317080505), SC_(74393442448605924397721671093277548886023681798216225682101297242881139016239030874792.30641549398414), SC_(0.4161131200660526577905604614200732788947746336188098856006252550053054138645411024081641101682919495) }, + { SC_(63.41974639892578125), SC_(63.41974639892578125), SC_(86405254208785822498227842199061501037983747988368704154857210974591637094015848346466.45268598991196), SC_(0.4833001234451149344512694365288854307321929521337507679336835174464874355761806559738848052848309181), SC_(92376521373769500333165616802486735786096308893613292981017885406263491837002963038141.37370077110394), SC_(0.5166998765548850655487305634711145692678070478662492320663164825535125644238193440261151947151690819) }, + { SC_(63.41974639892578125), SC_(65.41974639892578125), SC_(68971970365143646446038678095639125733682362723815819661774560317848098111087911901313.26750485990136), SC_(0.3857885969663319753685565262495054110135097416380730697356245827738402699182051967042563691350925875), SC_(109809805217411676385354780905909111090397694158166177474100536063007030819930899483294.5588819011145), SC_(0.6142114030336680246314434737504945889864902583619269302643754172261597300817948032957436308649074125) }, + { SC_(63.41974639892578125), SC_(126.8394927978515625), SC_(30691980971237319028432377167557319780941716621634262788261966299504612911976.01558503915900095553956), SC_(0.1716728725354045363246736295952678021288539135443891582221118897564061608073873578322466586191962822e-9), SC_(178781775551863341860156139973115859656522737101040280514240833592593162631514198472631.8108017218569), SC_(0.9999999998283271274645954636753263704047321978711460864556108417778881102435938391926126421677533414) }, + { SC_(63.41974639892578125), SC_(6341.974609375), SC_(0.1131375337335908502067153840311730674421577259558430438955710189241642025307830133905323542841378212e-2516), SC_(0.632824757249084362495991804315761507899299220479402442817501455851991753739628539547072013471685414e-2603), SC_(178781775582555322831393459001548236824080056881981997135875096380855128931018811384607.8263867610159), SC_(1) }, + { SC_(64.15645599365234375), SC_(0.641564548015594482421875), SC_(3796435425063500659242313572638614372926115135269320819795223684466906909303368976530175.122451407014), SC_(1), SC_(0.3561664430749769036027482269146899004189751759660599438999688134522266198395501963955535988740201181e-14), SC_(0.9381601507656870649864913343266641376431807844052367907407753504569837108658752233482747677717175015e-102) }, + { SC_(64.15645599365234375), SC_(32.078227996826171875), SC_(3796433900242956980688155158722538505241057205030970671838901774015999554644043025490295.635505813503), SC_(0.9999995983546740682282471759269639979078560500343554366709084460883989623621626228190293213646921447), SC_(1524820543678554158413916075867685057930238350147956321910450907354659325951039879.486945593510789982), SC_(0.4016453259317717528240730360020921439499656445633290915539116010376378373771809706786353078553392674e-6) }, + { SC_(64.15645599365234375), SC_(62.15645599365234375), SC_(2214837906124932528128325425520561459324051607422165451016896221684228033014617351940846.565743533083), SC_(0.5833993359936805156355843233031200457341264817230711049983675821663794766359727700788132399993569834), SC_(1581597518938568131113988147118052913602063527847155368778327462782678876288751624589328.55670787393), SC_(0.4166006640063194843644156766968799542658735182769288950016324178336205233640272299211867600006430166) }, + { SC_(64.15645599365234375), SC_(64.15645599365234375), SC_(1835182831180570409914708629671457763648714041584640291801144804519041877323209225292723.814233700998), SC_(0.4833962982920681250090980397015585499087385229065810522163504847965098050218325264821795143425437337), SC_(1961252593882930249327604942967156609277401093684680527994078879947865031980159751237451.308217706016), SC_(0.5166037017079318749909019602984414500912614770934189477836495152034901949781674735178204856574562663) }, + { SC_(64.15645599365234375), SC_(66.15645599365234375), SC_(1467005652324336015906818546758285433114296416846523551637245253829911651877029717627645.184366720173), SC_(0.3864165955884257684548349803381523125565843035816766982692567090746627380615657140747703389524461245), SC_(2329429772739164643335495025880328939811818718422797268157978430636995257426339258902529.938084686841), SC_(0.6135834044115742315451650196618476874434156964183233017307432909253372619384342859252296610475538755) }, + { SC_(64.15645599365234375), SC_(128.3129119873046875), SC_(517058479756301509601783283211190974417854638395221192100589177873826660470571.1434643133022531163644), SC_(0.1361957788990057661406623390290227662213212373635212449111954036803864924518024633802358205729655158e-9), SC_(3796435424546442179486012063036831089714924160851466181400002492366317731429542316059603.978987093712), SC_(0.9999999998638042211009942338593376609709772337786787626364787550888045963196135075481975366197641794) }, + { SC_(64.15645599365234375), SC_(6415.6455078125), SC_(0.1501972817374904189947192006751610811566378120199453667459490453040374982588451571443047819412729202e-2545), SC_(0.3956271210249234272035512872107835510491067746256581794926752836254227375420570012656191632901861478e-2633), SC_(3796435425063500659242313572638614372926115135269320819795223684466906909303368976530175.122451407014), SC_(1) }, + { SC_(64.80814361572265625), SC_(0.64808142185211181640625), SC_(57064303530430383996729458229257130231801588273800388697126125108151088365381775714781145.95985879319), SC_(1), SC_(0.5049774538054909199584092677118062653666933701505046003708884127507004677678223741124772310809781312e-14), SC_(0.8849270429388562022862722730475310480595182237631208674201045321741549884233443793981741970390437303e-103) }, + { SC_(64.80814361572265625), SC_(32.404071807861328125), SC_(57064283417933883221970238789084305216792101206464811754288528323627940734515192893465592.08684760924), SC_(0.9999996475467979724054120652922043059124000828270789331017697272074390052504823272149944165329867989), SC_(20112496500774759219440172825015009487067335576942837596784523147630866582821315553.87301118395144131), SC_(0.3524532020275945879347077956940875999171729210668982302727925609947495176727850055834670132010959105e-6) }, + { SC_(64.80814361572265625), SC_(62.80814361572265625), SC_(33267066351092621357557801726432026358661364649112280492241559461668010708553935629603600.64360322167), SC_(0.5829750701040706842898845713314486965142088106269133431003371650265263525010185764209656929781262825), SC_(23797237179337762639171656502825103873140223624688108204884565646483077656827840085177545.31625557152), SC_(0.4170249298959293157101154286685513034857911893730866568996628349734736474989814235790343070218737175) }, + { SC_(64.80814361572265625), SC_(64.80814361572265625), SC_(27589449645371862123113533511696817712950177448901812103904222740979949068100159476483178.64080817411), SC_(0.4834800030575923874253729319974034966635835312330768614990931555871329733879043648167080009582767187), SC_(29474853885058521873615924717560312518851410824898576593221902367171139297281616238297967.31905061908), SC_(0.5165199969424076125746270680025965033364164687669231385009068444128670266120956351832919990417232813) }, + { SC_(64.80814361572265625), SC_(66.80814361572265625), SC_(22081806621146139055171477960369436441741722947552119646792081319310182857054289976264452.51802025126), SC_(0.3869635701305052995758522155643032051724326397433195289354322121529371737951138727752313566162150975), SC_(34982496909284244941557980268887693790059865326248269050334043788840905508327485738516693.44183854193), SC_(0.6130364298694947004241477844356967948275673602566804710645677878470628262048861272247686433837849025) }, + { SC_(64.80814361572265625), SC_(129.6162872314453125), SC_(6333069303558022755471401584057186796783754151767482065777881718486350969284051.207123983670851908655), SC_(0.1109812774667585290988500580232166290175194254736216733559281573355525708028349000552975379833083416e-9), SC_(57064303524097314693171435473785728647744401477016634545358643042373206646895424745497094.75273480952), SC_(0.999999999889018722533241470901149941976783370982480574526378326644071842664447429197165099944702462) }, + { SC_(64.80814361572265625), SC_(6480.814453125), SC_(0.4318663435349180480771605832754060841663126038498941314495328213246217229719803389910472016804776487e-2571), SC_(0.7568064741289954268654103373011425276871650316179022296676779264925390727199244910390007532872691374e-2660), SC_(57064303530430383996729458229257130231801588273800388697126125108151088365381775714781145.95985879319), SC_(1) }, + { SC_(65.7200469970703125), SC_(0.65720045566558837890625), SC_(2559334550193453458047928045143681115995090699028390076702073278152157048485934530589741019.993329575), SC_(1), SC_(0.8322935909245563296496052903098445485056609705917670879371842756568484537065699035714913548976504698e-14), SC_(0.3251992166720233650696134882963952235228517897458966941875070780887225768671085910687092858643365674e-104) }, + { SC_(65.7200469970703125), SC_(32.86002349853515625), SC_(2559333798806136046903336846253865446432868075946183012282547839132061159157676016077590697.883689677), SC_(0.9999997064130137443933723045808171802671092117497975520038458170100784225411626966942287198503258944), SC_(751387317411144591198889815669562222623082207064419525439020095889328258514512150322.1096398981007926), SC_(0.2935869862556066276954191828197328907882502024479961541829899215774588373033057712801496741056349697e-6) }, + { SC_(65.7200469970703125), SC_(63.7200469970703125), SC_(1490536274964613671595815806108988693018968387950980022211614580566253330891740694197166613.670925398), SC_(0.5823921201907534526914623237640265941667710613191372790718040782800847758518161432917761081775805404), SC_(1068798275228839786452112239034692422976122311077410054490458697585903717594193836392574406.322404177), SC_(0.4176078798092465473085376762359734058332289386808627209281959217199152241481838567082238918224194596) }, + { SC_(65.7200469970703125), SC_(65.7200469970703125), SC_(1237681478333021299436036260772704189939039726424468025791236592392221839972793647760404305.069112678), SC_(0.4835950338104364542144764339636365461226890386503558396710241559827473710343276447133329329080310481), SC_(1321653071860432158611891784370976926056050972603922050910836685759935208513140882829336714.924216897), SC_(0.5164049661895635457855235660363634538773109613496441603289758440172526289656723552866670670919689519) }, + { SC_(65.7200469970703125), SC_(67.7200469970703125), SC_(992294582857096673020436107615735633555491858668260413925488485824429265079937609704722392.1639511719), SC_(0.3877158548037776851676686582318276647538773116889477970463296988557626867776214215469071342508886513), SC_(1567039967336356785027491937527945482439598840360129662776584792327727783405996920885018627.829378403), SC_(0.6122841451962223148323313417681723352461226883110522029536703011442373132223785784530928657491113487) }, + { SC_(65.7200469970703125), SC_(131.440093994140625), SC_(213300886950808367827748848163362418229652992448625125251021922855379214016709603.3541253196642483556), SC_(0.8334232307952295928887744983382544562611331340725414464157591127627065655955495457938285035431948473e-10), SC_(2559334549980152571097119677315932267831728280798737084253448152901135125630555316573031416.639204255), SC_(0.9999999999166576769204770407111225501661745543738866865927458553584240887237293434404450454206171496) }, + { SC_(65.7200469970703125), SC_(6572.0048828125), SC_(0.7951110665801895186597449581938208498866077147902395876490462398033742287094703422089437391907177183e-2607), SC_(0.3106710166203512300411342022708193644206022181944519266725115058420432680872285730281665183332651508e-2697), SC_(2559334550193453458047928045143681115995090699028390076702073278152157048485934530589741019.993329575), SC_(1) }, + { SC_(65.7462005615234375), SC_(0.65746200084686279296875), SC_(2854841366740655335749682711589405018617970255237657756653413289530476724094493897679244812.123014988), SC_(1), SC_(0.8444683280417830620909648362271240036135499334739793886760751528289379268614864246438558387232915288e-14), SC_(0.2958021898799597230685257872041095903545541336863801310149315080230457436391504684629229689145194224e-104) }, + { SC_(65.7462005615234375), SC_(32.87310028076171875), SC_(2854840532976636690616123908905006010146740361518023308401225712007615174805725753744721184.244032938), SC_(0.9999997079473387353098914999058508099490747926743722046001226817425283756021315976509474394410258526), SC_(833764018645133558802684399008471229893719634448252187577522861549288768143934523627.8789820501151716), SC_(0.2920526612646901085000941491900509252073256277953998773182574716243978684023490525605589741474447032e-6) }, + { SC_(65.7462005615234375), SC_(63.7462005615234375), SC_(1662589901978145349245492139292009919605672053551106941400828015313014944751529712675425485.872785929), SC_(0.5823755818265685614824870041971820963274359402029669131075613669423048624582759616275806290001338387), SC_(1192251464762509986504190572297395099012298201686550815252585274217461779342964185003819326.250229059), SC_(0.4176244181734314385175129958028179036725640597970330868924386330576951375417240383724193709998661613) }, + { SC_(65.7462005615234375), SC_(65.7462005615234375), SC_(1380596424766725998343913761207864541236223769538290252632704764663009433071898936669504936.275679433), SC_(0.48359829756248051328495419810768024737755427516852003106702603082970574141263350210054939794092891), SC_(1474244941973929337405768950381540477381746485699367504020708524867467291022594961009739875.847335555), SC_(0.51640170243751948671504580189231975262244572483147996893297396917029425858736649789945060205907109) }, + { SC_(65.7462005615234375), SC_(67.7462005615234375), SC_(1106928225149486035563430894908913383860784606738093747601687120295559440096387770602132440.181557678), SC_(0.3877372095155168780986027898437480552411677046160511382233187452365216829722816711350588651876171045), SC_(1747913141591169300186251816680491634757185648499564009051726169234917283998106127077112371.94145731), SC_(0.6122627904844831219013972101562519447588322953839488617766812547634783170277183288649411348123828955) }, + { SC_(65.7462005615234375), SC_(131.492401123046875), SC_(235983031974996182434520718201718793478492986693507612270715274155248385596291556.0579580332088916059), SC_(0.826606461305469026265380207366545613849300878252028521478725068264649395360224228367418868733952718e-10), SC_(2854841366504672303774686529154884300416251461759164769959905677259761449939245512082953256.065056955), SC_(0.9999999999173393538694530973734619792633454386150699121747971478521274931735350604639775771632581131) }, + { SC_(65.7462005615234375), SC_(6574.6201171875), SC_(0.7510687037399288751476618913126776904743706200734739131003765240622129428802251747674214841599943012e-2608), SC_(0.2630859677493803168372664020799002982996521138244652974298929967574770207819491498870966084808631374e-2698), SC_(2854841366740655335749682711589405018617970255237657756653413289530476724094493897679244812.123014988), SC_(1) }, + { SC_(66.52874755859375), SC_(0.665287494659423828125), SC_(75437968758597569032633239079728043522874921500813687815049070751153925767719006676562144012.72458575), SC_(1), SC_(0.1310368926314709029218884864097245957203599769879394761921733122276034347692035013026957603074361871e-13), SC_(0.1737015123654648979205709059138716747491083896634223517139402900134914281996402426153610692408187843e-105) }, + { SC_(66.52874755859375), SC_(33.264373779296875), SC_(75437949923163470610979559576525326783503782178493187353264273107179384659359278225112563291.9985126), SC_(0.9999997503189122350937731034617362792130824866556325999968830331547033567314799538196326683448374112), SC_(18835434098421653679503202716739371139322320500461784797643974541108359728451449580720.72607315341318), SC_(0.2496810877649062268965382637207869175133443674000031169668452966432685200461803673316551625887891426e-6) }, + { SC_(66.52874755859375), SC_(64.52874755859375), SC_(43896244662554532338939348278022579463862400482165305546298097450254130252574215857898937405.32542262), SC_(0.5818852944334047084343589707551617331697413232753603391941630268768653072704879308927342810156120602), SC_(31541724096043036693693890801705464059012521018648382268750973300899795515144790818663206607.39916313), SC_(0.4181147055665952915656410292448382668302586767246396608058369731231346927295120691072657189843879398) }, + { SC_(66.52874755859375), SC_(66.52874755859375), SC_(36488972888760509458901859774999522712882718994892665424066553669141913884185547148492076748.54893598), SC_(0.483695060845628982852720695561734966908199416779190979417625654226006698823212593179618976761835803), SC_(38948995869837059573731379304728520809992202505921022390982517082012011883533459528070067264.17564977), SC_(0.516304939154371017147279304438265033091800583220809020582374345773993301176787406820381023238164197) }, + { SC_(66.52874755859375), SC_(68.52874755859375), SC_(29297888206347729296575966698323378323995282817463584378420497014448561006840018344131861862.44449552), SC_(0.3883705869666418658029677176690535808167289848451664644497395275043892882135779613460692453856760943), SC_(46140080552249839736057272381404665198879638683350103436628573736705364760878988332430282150.28009023), SC_(0.6116294130333581341970322823309464191832710151548335355502604724956107117864220386539307546143239057) }, + { SC_(66.52874755859375), SC_(133.0574951171875), SC_(4877301420907752239273593820252772630997062336767277593443758326800991314131573868.232500449651190878), SC_(0.6465313821631620244656225618790585833495030126689809466090929707207843703391670990519534543499386092e-10), SC_(75437968753720267611725486840454449702622148869816625478281793157710167440918015362430570144.4920853), SC_(0.9999999999353468617836837975534377438120941416650496987331019053390907029279215629660832900948046546) }, + { SC_(66.52874755859375), SC_(6652.875), SC_(0.1638371658676746711435298600027710247423818222982576588244433879024066268894343211493208998026040069e-2638), SC_(0.217181306129749627468661278592701590511686711110420093152134477432446731511023484744947255548436328e-2730), SC_(75437968758597569032633239079728043522874921500813687815049070751153925767719006676562144012.72458575), SC_(1) }, + { SC_(68.034149169921875), SC_(0.6803414821624755859375), SC_(42113572483395761632651216760005728893592371847570855411971790947780728317856873505745209325832.18254), SC_(1), SC_(0.3132027947637063691661054357702716767202744008691014359264488944161261735519264427068623189384454917e-13), SC_(0.7437098690385236934785320724586100821607952736613959554958586439217113946281792159173787414727436084e-108) }, + { SC_(68.034149169921875), SC_(34.0170745849609375), SC_(42113564704370016804616237592666406552406081985367936303009583358852186297359128077005267412785.08743), SC_(0.999999815284591496124114094383728334702982090857677274733886977058085052527979049157010887221663125), SC_(7779025744828034979167339322341186289862202919108962207588928542020497745428739941913047.095112193951), SC_(0.1847154085038758859056162716652970179091423227252661130229419149474720209508429891127783368749648998e-6) }, + { SC_(68.034149169921875), SC_(66.034149169921875), SC_(24466563398752767202962055659309985267780106831640515180579794569276035095262688757081815421583.72315), SC_(0.5809662290796932260729255469353907152386036348452413899316923152735713121163657492892399027342077726), SC_(17647009084642994429689161100695743625812265015930340231391996378504693222594184748663393904248.45939), SC_(0.4190337709203067739270744530646092847613963651547586100683076847264286878836342507107600972657922274) }, + { SC_(68.034149169921875), SC_(68.034149169921875), SC_(20377767576628504384241918380752641270626046464542414376923113662405512803808630762772573269062.81299), SC_(0.4838764886228283041456787146224839048785139798476573113651537980736581818384909560116974320885528351), SC_(21735804906767257248409298379253087622966325383028441035048677285375215514048242742972636056769.36954), SC_(0.5161235113771716958543212853775160951214860201523426886348462019263418181615090439883025679114471649) }, + { SC_(68.034149169921875), SC_(70.034149169921875), SC_(16405741205065579848123850793709504105265276933409017996546748518272893268349260912963065782118.80864), SC_(0.3895594754288280396160516404291818270846124267683497095379825143486668985367433005556645469275644442), SC_(25707831278330181784527365966296224788327094914161837415425042429507835049507612592782143543713.3739), SC_(0.6104405245711719603839483595708181729153875732316502904620174856513331014632566994443354530724355558) }, + { SC_(68.034149169921875), SC_(136.06829833984375), SC_(1697492820470778208009116220203957973208892689614393897159237063357334542343247564446.919025546396516), SC_(0.4030749994292347306924187071308939266876541080859990416483819140359357754059960488108142453377687677e-10), SC_(42113572481698268812180438551996612673388413874361962722357397050621491254499538963401961761385.26351), SC_(0.9999999999596925000570765269307581292869106073312345891914000958351618085964064224594003951189185755) }, + { SC_(68.034149169921875), SC_(6803.4150390625), SC_(0.1746953208446148276684736178380634134756844512783961321515133641246683020658829024318666438297263536e-2697), SC_(0.4148195238328271727599871446993282605215932118915975221473394510687974990073548259877394985167337917e-2792), SC_(42113572483395761632651216760005728893592371847570855411971790947780728317856873505745209325832.18254), SC_(1) }, + { SC_(68.2952728271484375), SC_(0.682952702045440673828125), SC_(126582574863438761228830593517522512508520236863029486015592624641165055813258028344773940209822.9421), SC_(1), SC_(0.3655698648380115662039687784607219011874234526434719246838163436733038283726974770745217066866947991e-13), SC_(0.2887995170207271926745273357827530241176788764649377300769413606632940800358016853546556809927628601e-108) }, + { SC_(68.2952728271484375), SC_(34.14763641357421875), SC_(126582552672056417014808434553408814215248582817355988576374246752225659958679332711128204972304.6614), SC_(0.9999998246884899587895163213726572077349758539193495711816791314587048056482776703264498369545112542), SC_(22191382344214022158964113698293271654045673497439218377888939395854578695633645735237518.28067211215), SC_(0.1753115100412104836786273427922650241460806504288183208685412951943517223296735501630454887458449184e-6) }, + { SC_(68.2952728271484375), SC_(66.2952728271484375), SC_(73520417391286104958055858026354647726294780431395263338089827702393209724399772840605246068573.41765), SC_(0.5808099374704790885288115332398236483278087093602159869520640494319793408584923594887640144873276232), SC_(53062157472152656270774735491167864782225456431634222677502796938771846088858255504168694141249.52443), SC_(0.4191900625295209114711884667601763516721912906397840130479359505680206591415076405112359855126723768) }, + { SC_(68.2952728271484375), SC_(68.2952728271484375), SC_(61254237923856606700583230094316089399605722409239888849797195313073413074409245979174715830580.16501), SC_(0.4839073465675634533293329446769704752866300015878567809582937916543251686874530007008349671687899722), SC_(65328336939582154528247363423206423108914514453789597165795429328091642738848782365599224379242.77706), SC_(0.5160926534324365466706670553230295247133699984121432190417062083456748313125469992991650328312100278) }, + { SC_(68.2952728271484375), SC_(70.2952728271484375), SC_(49337059529436736386578004138448953944339164723869614220313229619977576800535898424376469349181.44023), SC_(0.3897618576858868489435844374254280620853484725076235359025117780872035360460872236175286896098847471), SC_(77245515334002024842252589379073558564181072139159871795279395021187479012722129920397470860641.50185), SC_(0.6102381423141131510564155625745719379146515274923764640974882219127964639539127763824713103901152529) }, + { SC_(68.2952728271484375), SC_(136.590545654296875), SC_(4700839111975588779188788696595833993422380714269912159673765499326484306510334737824.987810006664451), SC_(0.3713654203232159689278107243661297519810768725158405273618860447800230335190819159155517036811121922e-10), SC_(126582574858737922116855004738333723811924402869607105301322712481491290313931544038263605471997.9543), SC_(0.9999999999628634579676784031072189275633870248018923127484159472638113955219976966480918084084448296) }, + { SC_(68.2952728271484375), SC_(6829.52734375), SC_(0.1034249536633599236785196035670678143805729443379432919455871398762615137761349996017938427713708189e-2707), SC_(0.8170552208701552862627374775177297737987641024647251179109401241013655399690321523514850019023597052e-2803), SC_(126582574863438761228830593517522512508520236863029486015592624641165055813258028344773940209822.9421), SC_(1) }, + { SC_(69.6354522705078125), SC_(0.69635450839996337890625), SC_(36494733153103885068623195531403959468503907221966838069538523362315536099588670820401092282155839.98), SC_(1), SC_(0.821243650844431145822325914791510770588118888617299276531744580250254622626479394950264619782026395e-13), SC_(0.2250307318042642525746116460953930750388991052682855034004208019619828819236863988316701887577187591e-110) }, + { SC_(69.6354522705078125), SC_(34.81772613525390625), SC_(36494728259617465153947838641094697313286364882611761987084257163440369157700054156490229953794827.34), SC_(0.9999998659125304633585665139721585810438771847327945631914586140873705434034562012506596143901484594), SC_(4893486419914675356890309262155217542339355076082454266198875166941888616663910862328361012.641363817), SC_(0.1340874695366414334860278414189561228152672054368085413859126294565965437987493403856098515406345331e-6) }, + { SC_(69.6354522705078125), SC_(67.6354522705078125), SC_(21167740658497744035526008679318634598857228387431688493381770681347909285798263148871530263916424.97), SC_(0.5800217957395154441416737330896236258949146586865873335628129767424267798404189306705666388937009606), SC_(15326992494606141033097186852085324869646678834535149576156752680967626813790407671529562018239415.0), SC_(0.4199782042604845558583262669103763741050853413134126664371870232575732201595810693294333611062990394) }, + { SC_(69.6354522705078125), SC_(69.6354522705078125), SC_(17665749248223416126653214753745146113923558769155426709622241005034603430531169652272575484240192.01), SC_(0.4840629790088200788456641937463001024839567125091214004413535009897810525448659287785015239623470264), SC_(18828983904880468941969980777658813354580348452811411359916282357280932669057501168128516797915647.97), SC_(0.5159370209911799211543358062536998975160432874908785995586464990102189474551340712214984760376529736) }, + { SC_(69.6354522705078125), SC_(71.6354522705078125), SC_(14261533358525259240019711453763431388235546135384237578066571326238071511513322146246527620781458.43), SC_(0.3907833302601450230403561763286567234144781366045252737464741874179789745604100618957056892866496123), SC_(22233199794578625828603484077640528080268361086582600491471952036077464588075348674154564661374381.55), SC_(0.6092166697398549769596438236713432765855218633954747262535258125820210254395899381042943107133503877) }, + { SC_(69.6354522705078125), SC_(139.270904541015625), SC_(890110899883298394368329713318148943829898387890662786538805253065883137862339993406627.6236715523172), SC_(0.2439011942213897971389923513193673705626597220135575610661785792643343855062508439067085023878478691e-10), SC_(36494733152213774168739897137035629755185758278136939681647860575776730846522787682538752288749212.35), SC_(0.9999999999756098805778610202861007648680632629437340277986442438933821420735665614493749156093291498) }, + { SC_(69.6354522705078125), SC_(6963.54541015625), SC_(0.3383439389850162636134893032919890119060566002639058280359651072479638937963544182265002792730187551e-2760), SC_(0.9271034742618471161644565690139349365375186229622000779791484371703301348184139789335859207544453186e-2858), SC_(36494733153103885068623195531403959468503907221966838069538523362315536099588670820401092282155839.98), SC_(1) }, + { SC_(70.7515869140625), SC_(0.707515895366668701171875), SC_(4163706035657014946019693907658547214916131410196136934921674637717229901325504561441313925622006123.0), SC_(1), SC_(0.1643972071042669722751281362510097721140723220071512581577423934010542168600930704594677005280381427e-12), SC_(0.3948338468095666086577953776027938478067170815924995171522064565083834914000504304114332262445179597e-112) }, + { SC_(70.7515869140625), SC_(35.37579345703125), SC_(4163705589009756561554773694553940051853542079567081889878393834074793598574674923651264184190726964.0), SC_(0.9999998927284360232251844365723191151868508591919963391490480965143823590586647732622993067718293719), SC_(446647258384464920213104607163062589330629055045043280803642436302750829637790049741431279158.8964373), SC_(0.1072715639767748155634276808848131491408080036608509519034856176409413352267377006932281706280659512e-6) }, + { SC_(70.7515869140625), SC_(68.7515869140625), SC_(2412379330002282047150316667300907136731608411820393886825314542906898242708660799711518553964147945.0), SC_(0.5793827204282011567042433334649813466858508509555800163506066185809776625939796223058480971579009996), SC_(1751326705654732898869377240357640078184522998375743048096360094810331658616843761729795371657858178.0), SC_(0.4206172795717988432957566665350186533141491490444199836493933814190223374060203776941519028420990004) }, + { SC_(70.7515869140625), SC_(70.7515869140625), SC_(2016021510264593487997898102849132934082138733466350547072955795822992713628940188390279357107596497.0), SC_(0.484189203800617001147036344895303364629138501352656417207046106554740609314246090553869742251358091), SC_(2147684525392421458021795804809414280833992676729786387848718841894237187696564373051034568514409626.0), SC_(0.515810796199382998852963655104696635370861498647343582792953893445259390685753909446130257748641909) }, + { SC_(70.7515869140625), SC_(72.7515869140625), SC_(1630560205779657737217888653375236420445551678696181688312344962515117513202870943145572271783397219.0), SC_(0.3916127103632959365388824210526464348615132466702460006275409122583637854358837080642212860005116432), SC_(2533145829877357208801805254283310794470579731499955246609329675202112388122633618295741653838608904.0), SC_(0.6083872896367040634611175789473535651384867533297539993724590877416362145641162919357787139994883568) }, + { SC_(70.7515869140625), SC_(141.503173828125), SC_(71562535024855657188714540730942575403180184109238246910612029302370777772950438096110075.79121787223), SC_(0.1718722081050167035523539932377543742301113624703285766427441100752476657998764223251664592709290472e-10), SC_(4163706035585452410994838250469832674185188834792956750812436390806617872023133783668363487525896047.0), SC_(0.9999999999828127791894983296447646006762245625769888637529671423357255889924752334200123577674833541) }, + { SC_(70.7515869140625), SC_(7075.15869140625), SC_(0.6716330277559341551972805983796192839817120592488331206926838690001874330556606168317269085566468756e-2804), SC_(0.1613065432583915222021059592420276667456025460907487840550408152306477160101129674319984601665394559e-2903), SC_(4163706035657014946019693907658547214916131410196136934921674637717229901325504561441313925622006123.0), SC_(1) }, + { SC_(71.0818023681640625), SC_(0.7108180522918701171875), SC_(16967278276545062709413440359643354994456672559374489119855948031522443212720033114985470324312152990.0), SC_(1), SC_(0.2025647769109128315720793176152749380665523689423777423500246900427885686000238065897867498249115696e-12), SC_(0.1193855452886223239391264936785591200069288992993158253990970233471105465596535460023259124969189518e-112) }, + { SC_(71.0818023681640625), SC_(35.54090118408203125), SC_(16967276572674003242408646285164667106576416153691486957360779217241205920301041179619357678262895310.0), SC_(0.9999998995789995486563650978302014019583343710567724543227928084695597460102966041515413997494867488), SC_(1703871059467004794074478687887880256405683002162495168814281237292418991935366112646049257678.235089), SC_(0.1004210004513436349021697985980416656289432275456772071915304402539897033958484586002505132512101627e-6) }, + { SC_(71.0818023681640625), SC_(69.0818023681640625), SC_(9827389239227920296325677028712660539003279904144822000711105472064663276694749906840507394452588047.0), SC_(0.5791965617027062808291416894940335135941340645706906873018268267572126623399061768034329544463859378), SC_(7139889037317142413087763330930694455453392655229667119144842559457779936025283208144962929859564941.0), SC_(0.4208034382972937191708583105059664864058659354293093126981731732427873376600938231965670455536140622) }, + { SC_(71.0818023681640625), SC_(71.0818023681640625), SC_(8215996900810625079496423772075431509048698083968916786640901232363021424433429892415143956427712421.0), SC_(0.4842259770188430872231521626055949922037302117054070521992337232159858497414284902998174593370823492), SC_(8751281375734437629917016587567923485407974475405572333215046799159421788286603222570326367884440568.0), SC_(0.5157740229811569127768478373944050077962697882945929478007662767840141502585715097001825406629176508) }, + { SC_(71.0818023681640625), SC_(73.0818023681640625), SC_(6648704157522568520370762150953374547591311142336083857419182771136113379807064306023401472771637325.0), SC_(0.3918544889261049596367732974173298303572524058400409016773874665848631222839607280171312383703265499), SC_(10318574119022494189042678208689980446865361417038405262436765260386329832912968808962068851540515660.0), SC_(0.6081455110738950403632267025826701696427475941599590983226125334151368777160392719828687616296734501) }, + { SC_(71.0818023681640625), SC_(142.163604736328125), SC_(262938756412896747213215188236001278847027364148037991932490962311991769259393830423375670.6579439202), SC_(0.1549681405157205142304516134193099810298042076407386925208034967910736349876033253562627025264122849e-10), SC_(16967278276282123953000543612430139806220671280527461755707910039589952250408041345726076493888777320.0), SC_(0.9999999999845031859484279485769548386580690018970195792359261307479196503208926365012396674643737297) }, + { SC_(71.0818023681640625), SC_(7108.18017578125), SC_(0.7925901291711046454157466839165010077638812371633385136111648656867383361931098810911787264074165645e-2817), SC_(0.4671286203083920035736680607903529542936082782436866512728934451500865020889719453563455381482969287e-2917), SC_(16967278276545062709413440359643354994456672559374489119855948031522443212720033114985470324312152990.0), SC_(1) }, + { SC_(72.720977783203125), SC_(0.7272098064422607421875), SC_(0.1854183717840343100576419051698198779346986720643644351833194162311895304701678338550713762978721865e104), SC_(1), SC_(0.584227334103519972527148609116497936872689547631761312843570754575529797448093633348073310743075528e-12), SC_(0.3150860017172395570637279099661674301309625325776630587338972912378046558409641268507235499744703355e-115) }, + { SC_(72.720977783203125), SC_(36.3604888916015625), SC_(0.1854183583634267585417812458929086469008447986888731708175244645835645567444997919617141595308541004e104), SC_(0.9999999276198608455720485460479007724476218200884096956888093506941665549335216767569688124396721302), SC_(1342060755151586065927691123103385387337549126436579495164762497372566804189335721676701808609503.974), SC_(0.7238013915442795145395209922755237817991159030431119064930583344506647832324303118756032786981336922e-7) }, + { SC_(72.720977783203125), SC_(70.720977783203125), SC_(0.1072258646513762753202513258857398040376367179405148101676530938486460991350106124410892126373657136e104), SC_(0.5782914800711732805075523468911675312044564188629240860286635747183585394694729255143501788834860785), SC_(7819250713265803473739057928408007389706195412384962501566632238254343133515722141398216366050647292000.0), SC_(0.4217085199288267194924476531088324687955435811370759139713364252816414605305270744856498211165139215) }, + { SC_(72.720977783203125), SC_(72.720977783203125), SC_(0.89817548208652697445514740436429484847253809493416746301212339020224664090337531620151070119462629e103), SC_(0.4844047941121363799771049435504117715732047854514661929196842791217046328821782930228076351074660436), SC_(9560082357538161261212716473339039308744486257094768888210707721096486637983030223492030617840955754000.0), SC_(0.5155952058878636200228950564495882284267952145485338070803157208782953671178217069771923648925339564) }, + { SC_(72.720977783203125), SC_(74.720977783203125), SC_(0.728751999246301164139914975737438488834658224372888105946350974303149343820388663337310800573377606e103), SC_(0.3930311717412305000064382963430835285379561206226218572452185422151244269217642418915329451717589638), SC_(0.1125431718594041936436504075960760290512328496270756245886843188008745960881289675213402962405344259e104), SC_(0.6069688282587694999935617036569164714620438793773781427547814577848755730782357581084670548282410362) }, + { SC_(72.720977783203125), SC_(145.44195556640625), SC_(171894195151014147810335571924903231526337264398363312550405701325074345754859999016607823867.3588057), SC_(0.9270612911606600621792798616374474920082545128135137446295159713701175142329359141418348731791894442e-11), SC_(0.1854183717823153681061317636917165222154496397491010625393357831056854734569170903975227763077061083e104), SC_(0.9999999999907293870883933993782072013836255250799174548718648625537048402862988248576706408585816513) }, + { SC_(72.720977783203125), SC_(7272.09765625), SC_(0.5425373386231230371360332810616549632128743881359974347483988718192634901413455427944545828498974858e-2881), SC_(0.2926017165413588859726165272094472950221094413187804610368358221527567388065186674020469429327224539e-2984), SC_(0.1854183717840343100576419051698198779346986720643644351833194162311895304701678338550713762978721865e104), SC_(1) }, + { SC_(74.19440460205078125), SC_(0.7419440746307373046875), SC_(0.103096944693667078372505855083101936639648483194730208225688678773220655466061737686371464201193946e107), SC_(1), SC_(0.1563071086810666370616205804560007921832366501717499061877351517006994574600267097321586924137548826e-11), SC_(0.1516117758343890980537123029152958931549760787574603647876625489677333670504448297561430544434467781e-117) }, + { SC_(74.19440460205078125), SC_(37.097202301025390625), SC_(0.1030969391330217260555902135020489251872782601501416700539877610692849104277768012939001874637722046e107), SC_(0.9999999460639171331477039661403436371101873018009664508191851295711768302311264182793338651054770588), SC_(556064535231691564158105301145237022304458853817170091770393574503828493639247127673742174148037535.1), SC_(0.5393608286685229603385965636288981269819903354918081487042882316976887358172066613489452294120816897e-7) }, + { SC_(74.19440460205078125), SC_(72.19440460205078125), SC_(0.5953888317413273564906748994122272094904898485200246513231062364344647698117146498367873359094067445e106), SC_(0.5775038566956681337337125376309514374898918147640043989945446770929668710680828681187910833003667777), SC_(0.435580615195343427234383651418792156905994983427277430933780551297741784848902727026927306102532716e106), SC_(0.4224961433043318662662874623690485625101081852359956010054553229070331289319171318812089166996332223) }, + { SC_(74.19440460205078125), SC_(74.19440460205078125), SC_(0.4995670142490296920169498235046103473458813331604768794774339122187026649237876737023481854377831564e106), SC_(0.4845604452521826529478203093948694839652109856692728218739248103267778665671280660876261571060499391), SC_(0.5314024326876410917081087273264090190506034987868252027794528755135038897368297031613664565741563041e106), SC_(0.5154395547478173470521796906051305160347890143307271781260751896732221334328719339123738428939500609) }, + { SC_(74.19440460205078125), SC_(76.19440460205078125), SC_(0.4062604567339247674107670067757848103809706066612943202208411212119734290663837170648982834545366623e106), SC_(0.3940567375115240168365844348765027246508546563091336676273478806021703935900046330928357446637200625), SC_(0.6247089902027460163142915440552345560155142252860077620360456665202331255942336597988163585574027982e106), SC_(0.6059432624884759831634155651234972753491453436908663323726521193978296064099953669071642553362799375) }, + { SC_(74.19440460205078125), SC_(148.3888092041015625), SC_(60237624385313302055665235306873112325974940132774658919644673881062125967566945102151418439872.17501), SC_(0.5842813728796514975532223625090371234787451854132919341858494016625603009928499681651780318180597495e-11), SC_(0.1030969446930647021286527220625452842865797520714704588243609321840242087272511164266957947501724319e107), SC_(0.9999999999941571862712034850244677763749096287652125481458670806581415059833743969900715003183482197) }, + { SC_(74.19440460205078125), SC_(7419.4404296875), SC_(0.1179722193094915578935717266143196959052311594748193029599035189506627590851835025191653960621725195e-2938), SC_(0.114428433994841964446725195470617640729684634102522504382582901169448615548951099979177671548325492e-3044), SC_(0.103096944693667078372505855083101936639648483194730208225688678773220655466061737686371464201193946e107), SC_(1) }, + { SC_(74.441680908203125), SC_(0.74441683292388916015625), SC_(0.298675015341771109328998721195943851260453455178199448830768319841923405180891924820729728180022541e107), SC_(1), SC_(0.184916278561090699099037604033157692346952564770072700307047407346149898349869829557738418214252951e-11), SC_(0.6191220191266841647671841348731786746774022944704988662190443852972301503091054062397502290604517503e-118) }, + { SC_(74.441680908203125), SC_(37.2208404541015625), SC_(0.2986750000080278050049751018850249685720371733056236351180015292529360536590363311414165019708757929e107), SC_(0.9999999486607767081630168403251819011889987238664708573000133871172584781592338078611321120363868025), SC_(1533374330432402361931091888268841628187257581371276679058898735152185559367931322620914674819770733.0), SC_(0.5133922329183698315967481809881100127613352914269998661288274152184076619213886788796361319751992353e-7) }, + { SC_(74.441680908203125), SC_(72.441680908203125), SC_(0.1724471852150723873909426980489912027960762231952930413131682460366243978179577080196454374001637703e107), SC_(0.5773739896447067674956388497956312360551227939544130336051365353278834425198371083350128787877183769), SC_(0.1262278301266987219380560231469526484643772319829064075176000738052990073629342168010842907798587707e107), SC_(0.4226260103552932325043611502043687639448772060455869663948634646721165574801628916649871212122816231) }, + { SC_(74.441680908203125), SC_(74.441680908203125), SC_(0.1447337648301569631097449705777677492631982520699648787303804900450463831830847437810282680563705929e107), SC_(0.4845861133196542388892450821993280933765419405462445100303210962809583210841960294643589341752718066), SC_(0.1539412505116141462192537506181761019972552031082345701003878297968770219978071810397014601236519482e107), SC_(0.5154138866803457611107549178006719066234580594537554899696789037190416789158039705356410658247281934) }, + { SC_(74.441680908203125), SC_(76.441680908203125), SC_(0.1177454502518706856399893134588603779708752816623303626890187782843005287792460099272954088916410525e107), SC_(0.3942259787519744011919334583519262476483397718839405717455562738377942407819730991785080213168913937), SC_(0.1809295650899004236890094077370834732895781735158690861417495415576228764016459148934343192883814885e107), SC_(0.6057740212480255988080665416480737523516602281160594282544437261622057592180269008214919786831086063) }, + { SC_(74.441680908203125), SC_(148.88336181640625), SC_(161503584770533082581086438786413369716697740543373784717828984174173906089093439102689116682267.8527), SC_(0.5407334945165265876318014076261308795786126961901172496358820711934127335713109380040153160738914477e-11), SC_(0.2986750153401560734812933903701329868725893214810324714253345819947451153391501857598387937889956499e107), SC_(0.9999999999945926650548347341236819859237386912042138730380988275036411792880658726642868906199598468) }, + { SC_(74.441680908203125), SC_(7444.16796875), SC_(0.2488406623696112424016604006644025019692138359840932648284366670428296286796017879360301301467396269e-2948), SC_(0.8331485714828377287939547305065686034566344446994003609698927561564347368054402192725806861495894663e-3055), SC_(0.298675015341771109328998721195943851260453455178199448830768319841923405180891924820729728180022541e107), SC_(1) }, + { SC_(75.5913238525390625), SC_(0.755913257598876953125), SC_(0.4242477253272137647617212991868617728511106756522002328947888421119498400032394531507577497663366502e109), SC_(1), SC_(0.4083953741843696549097480758809416708986599224069236672784284441048169867255909538730560453479846561e-11), SC_(0.9626342106357376241892647824720372487706312747481373658665126908592794818779720637021502128379285455e-120) }, + { SC_(75.5913238525390625), SC_(37.79566192626953125), SC_(0.4242477080105636045349249321929870635187340106847933401877266972965759184570668813604407323301216331e109), SC_(0.9999999591826917943500786443023004059424532541058629792801196573986142196731808101005526936326470357), SC_(173166501602267963669938747093323766649674068927070621448153739215461725717903170174362150170907349900.0), SC_(0.4081730820564992135569769959405754674589413702071988034260138578032681918989944730636735296429547881e-7) }, + { SC_(75.5913238525390625), SC_(73.5913238525390625), SC_(0.2446970374383516701170112383132402074039394920380568220886681994285676371810261360732501448770457539e109), SC_(0.5767786668735153526046169661877055882910921621704855001081867184159331632257663411488377824825514857), SC_(0.1795506878888620946447100608736215654471711836141434108061206426833822028222133170775076048892908963e109), SC_(0.4232213331264846473953830338122944117089078378295144998918132815840668367742336588511622175174485143) }, + { SC_(75.5913238525390625), SC_(75.5913238525390625), SC_(0.2056344808006848835561080085495280703614964379005029044017000942125330915956490108510669302259920002e109), SC_(0.4847037910270069952641052407598440232689987079266695197561836838237890345676302180254690285941374783), SC_(0.21861324452652888120561329063733370248961423775169732849308874789941674840759044229969081954034465e109), SC_(0.5152962089729930047358947592401559767310012920733304802438163161762109654323697819745309714058625217) }, + { SC_(75.5913238525390625), SC_(77.5913238525390625), SC_(0.1675788295115058294045845753636932271533646682807641346575870708421114628199695105254128876388142231e109), SC_(0.3950023052740132855310325297889353500550916482172842671141806239812579696380756887917613019545609573), SC_(0.2566688958157079353571367238231685456977460073714360982372017712698383771832699426253448621275224271e109), SC_(0.6049976947259867144689674702110646499449083517827157328858193760187420303619243112082386980454390427) }, + { SC_(75.5913238525390625), SC_(151.182647705078125), SC_(16004304186982045700616799258827168975919727704533783148963144390302145600708157465959364984302758.12), SC_(0.3772395992138377819944827127559729865623396679445628197408225041009515576418821542020120597236816695e-11), SC_(0.4242477253256133343430230946168000929252279587546082601243354637970535255642092385906869340197407137e109), SC_(0.9999999999962276040078616221800551728724402701343766033205543718025917749589904844235811784579798794) }, + { SC_(75.5913238525390625), SC_(7559.13232421875), SC_(0.2601398745149622772144744583365776305968660274907080237808336081668872851245468229455614098220434899e-2993), SC_(0.6131791851431179921360103837730047591606072896964829384579079796625457480060635137783157142794418721e-3102), SC_(0.4242477253272137647617212991868617728511106756522002328947888421119498400032394531507577497663366502e109), SC_(1) }, + { SC_(75.8951416015625), SC_(0.7589514255523681640625), SC_(0.1576610880827630915750715387591471623206435744144183808258662408336033415623736425954764220072782094e110), SC_(1), SC_(0.5050192634470511349043349976487289229957354112070766341391598692045923228355657049103168662600457057e-11), SC_(0.3203195345080612314603495583373330994604684961789754958003980810284858893281575688500125173302385166e-120) }, + { SC_(75.8951416015625), SC_(37.94757080078125), SC_(0.1576610820258149813636386970152189372054304524069321267385874982425732512127241522887111025169610294e110), SC_(0.999999961582479330398379208961911876062341173097680751134854671843505899079503049389620804063815189), SC_(605694811021143284174392822511521312200748625408727874259103009034964949030676531949031718000728726700.0), SC_(0.3841752066960162079103808812393765882690231924886514532815649410092049695061037919593618481102624955e-7) }, + { SC_(75.8951416015625), SC_(73.8951416015625), SC_(0.9091110765615005119277918089117758285357946388207661972224659232217551336177579451980741847577200826e109), SC_(0.5766236219835480113026072910896004673732409498188978113953102351059729008981914020467497010958591154), SC_(0.6674998042661304038229235786796957946706411053234176110361964851142782820059784807566900353150620113e109), SC_(0.4233763780164519886973927089103995326267590501811021886046897648940270991018085979532502989041408846) }, + { SC_(75.8951416015625), SC_(75.8951416015625), SC_(0.764237596000268978530984796692187517926810737194940642906799285851867060496091779021516007667234362e109), SC_(0.4847344422734719223657006252852881767363662262289741501119445655334805879102597863560657863522584568), SC_(0.8123732848273619372197305908992841052796250069492431653518631224841663551276446469332482124055477318e109), SC_(0.5152655577265280776342993747147118232636337737710258498880554344665194120897402136439342136477415432) }, + { SC_(75.8951416015625), SC_(77.8951416015625), SC_(0.6230839153669592598259089314471549400769400799877534670710022817610644858472306334112860309684345069e109), SC_(0.3952046271809792992949502977573670265537317728638628467316893833694358268047261173720764072587760447), SC_(0.9535269654606716559248064561443166831294956641564303411876601265749689297765057925434781891043475869e109), SC_(0.6047953728190207007050497022426329734462682271361371532683106166305641731952738826279235927412239553) }, + { SC_(75.8951416015625), SC_(151.790283203125), SC_(54078715884269576805255278712574436680847609083128203929472593970474554213679039712416414445796411.4), SC_(0.3430061059573642612887287006334947136371136592347414652443019408599131896403145936150929996905295971e-11), SC_(0.1576610880822223044162288429910946095335178300476099047350349587943086156226688970533396316101540452e110), SC_(0.99999999999656993894042635738711271299366505286362886340765258534755698059140086810359685406384907) }, + { SC_(75.8951416015625), SC_(7589.51416015625), SC_(0.3383463503066467090839842408262370538760052444563234782480342568255035474589408675922587445429465453e-3005), SC_(0.2146035869859239750162295431327099841183852786073455225304195666813596199558190520084078814659127595e-3114), SC_(0.1576610880827630915750715387591471623206435744144183808258662408336033415623736425954764220072782094e110), SC_(1) }, + { SC_(76.49312591552734375), SC_(0.764931261539459228515625), SC_(0.2095923693508665733212266664105616002964602515885112111884076725851047321087565163648517442289689027e111), SC_(1), SC_(0.7698288572748873026179137564371431838502118639938578177820006177148089695801437767166418637414672702e-11), SC_(0.3672981319210915227898880809312097359854666507390340797084318735454641478988437178712802050821537283e-121) }, + { SC_(76.49312591552734375), SC_(38.246562957763671875), SC_(0.2095923622039299725226602766154380008064576239864117031054310389919986262904883362715082297886032057e111), SC_(0.999999965900778625989530022564230269191844678207147551716882096559560633619580524178570088917264812), SC_(7146936600798566389795123599490002627602099508082976633593106105818268180093343514440365697011827678000.0), SC_(0.340992213740104699774357697308081553217928524482831179034404393663804194758214299110827351880076558e-7) }, + { SC_(76.49312591552734375), SC_(74.49312591552734375), SC_(0.1207925218672008902550482039366135952593267165302736487785557528976681490519228793780905472936331966e111), SC_(0.5763211811637524469589849392117932169093358049235196647040523602938001945039995246812168264220477701), SC_(0.8879984748366568306617846247394800503713353505823756240985191968743658305683363698676119693533570615e110), SC_(0.4236788188362475530410150607882067830906641950764803352959476397061998054960004753187831735779522299) }, + { SC_(76.49312591552734375), SC_(76.49312591552734375), SC_(0.1016091727209359103838942431594570948339463476748305222059757950224456293063428552220527209725333434e111), SC_(0.4847942367159265124843237811245452986002395500530058790090603393114621555637159504097429216485581152), SC_(0.1079831966299306629373324232511045054625139039136806889824318775626591028024136611427990232564355594e111), SC_(0.5152057632840734875156762188754547013997604499469941209909396606885378444362840495902570783514418848) }, + { SC_(76.49312591552734375), SC_(78.49312591552734375), SC_(0.8291462638915453650596276729374457613056090980945158813709809334992238166822325168128542279373707402e110), SC_(0.3955994516687385335636730824671301123423310505182896208353315392309276179814084520285959802269162267), SC_(0.1266777429617120368152638991168170241658993417790596230513095792351823504405332646835663214352318287e111), SC_(0.6044005483312614664363269175328698876576689494817103791646684607690723820185915479714040197730837733) }, + { SC_(76.49312591552734375), SC_(152.9862518310546875), SC_(596167200161926734374775279692061483473805848530932854833290675599640521913655128888979470223020001.4), SC_(0.2844412714109440655560631961173337073277138278908972143038962875366176409437369537658248142885273558e-11), SC_(0.2095923693502704061210647396761868250167681901050374053398767397302714414331568758429380891000799233e111), SC_(0.9999999999971555872858905593444393680388266629267228617210910278569610371246338235905626304623417519) }, + { SC_(76.49312591552734375), SC_(7649.3125), SC_(0.1370543781717626238626659521982192432483665212936269130702466193589183695345712305328128312282162477e-3028), SC_(0.6539091981079127182312227251265392518337530977209765220846457801683209199242173273269744880301885647e-3139), SC_(0.2095923693508665733212266664105616002964602515885112111884076725851047321087565163648517442289689027e111), SC_(1) }, + { SC_(76.66892242431640625), SC_(0.766689240932464599609375), SC_(0.4488464702502950046259288416482720965186308071384778518157728633611059492520992611162781320049642864e111), SC_(1), SC_(0.8721894906464812908020288700698180546604536334846266549430697676501728524188815019788559904110835842e-11), SC_(0.1943180014672083842033261775328204350472782894788191437488951736682953249353282695825697978138267625e-121) }, + { SC_(76.66892242431640625), SC_(38.334461212158203125), SC_(0.448846455472120894394405798489075125537304391075684796459845221141614259449743648712749774717318238e111), SC_(0.999999967075213709510484718141138021588117712607774693279636765017436992497533819700804894634778285), SC_(0.1477817411023152304315919697098132641606279305535592764221949168980235561240352835728764604835443201e104), SC_(0.3292478629048951528185886197841188228739222530672036323498256300750246618029919510536522171498388696e-7) }, + { SC_(76.66892242431640625), SC_(74.66892242431640625), SC_(0.2586401247543923870698747204830307352368892844471364589497705860380253823565157883651307603675501955e111), SC_(0.5762329480059499157542953888677713666857774551387583623662657389393162741485837032303115672863647067), SC_(0.1902063454959026175560541211652413612817415226913413928660022773230805668955834727511473716374140909e111), SC_(0.4237670519940500842457046111322286333142225448612416376337342610606837258514162967696884327136352933) }, + { SC_(76.66892242431640625), SC_(76.66892242431640625), SC_(0.2176060121931860995839566139994411238233069861787977305760201030781773165102945417863382266658339813e111), SC_(0.4848116819807899066241302106664858704043448057989854381936277707919399546154937459796565134629064748), SC_(0.2312404580571089050419722276488309726953238209596801212397527602829286327418047193299399053391303051e111), SC_(0.5151883180192100933758697893335141295956551942010145618063722292080600453845062540203434865370935252) }, + { SC_(76.66892242431640625), SC_(78.66892242431640625), SC_(0.1776151359243554714845888887637843469290147016342041202242485959056111440952994130837236204251724154e111), SC_(0.3957146768366253712883556927942301194211761225929087680895714536373640226182000808691584053388276181), SC_(0.271231334325939533141339952884487749589616105504273731591524267455494805156799848032554511579791871e111), SC_(0.6042853231633746287116443072057698805788238774070912319104285463626359773817999191308415946611723819) }, + { SC_(76.66892242431640625), SC_(153.3378448486328125), SC_(1208340354750040169673093110162630940646939904953476810111867891477008100681713918881377104158094853.0), SC_(0.2692101720386083368586116719236877857848577387912425077510921207911619506768524998186418313361997967e-11), SC_(0.4488464702490866642711788014785990034084681761978309119108193865509940813606222530155964180860829093e111), SC_(0.9999999999973078982796139166314138832807631221421514226120875749224890787920883804932314750018135817) }, + { SC_(76.66892242431640625), SC_(7666.89208984375), SC_(0.1821123293565225789529725592026371278350411294653651926509483135957711850671254861487385053133806531e-3035), SC_(0.4057341238641563885831526096175456837680872294050387714943344891563851270111831763997700135576580181e-3146), SC_(0.4488464702502950046259288416482720965186308071384778518157728633611059492520992611162781320049642864e111), SC_(1) }, + { SC_(79.32462310791015625), SC_(0.793246209621429443359375), SC_(0.4671121597949982795711144175493706605009846561466580157372296518317719005372678466272806286973583136e116), SC_(1), SC_(0.6039168545348148856452350861970003224978502524901460062877985188730753683893012418024349808946731235e-10), SC_(0.1292873332177556976975851675496753973570456780369174162484505186987337201864822887596441509654278919e-125) }, + { SC_(79.32462310791015625), SC_(39.662311553955078125), SC_(0.4671121507351240492604208198508603377019269254024439937901993046380224468789840420121404558453316837e116), SC_(0.9999999806044992828129231033044713064068338867545802771386030451446152224507990807321593976028763138), SC_(0.9059874230310693597698510322799057730744214021947030347193749453658283804615140172852026629832492352e108), SC_(0.1939550071718707689669552869359316611324541972286139695485538477754920091926784060239712368622000466e-7) }, + { SC_(79.32462310791015625), SC_(77.32462310791015625), SC_(0.2685596907607638612260554874823900767470629784663574316924676978828936868056565540764625568568498545e116), SC_(0.5749362013582064993583896500521535492965535315276841309638485958891645153801820177715668270529624124), SC_(0.1985524690342344183450589300669805837539216776803005840447619539488782137316112925508180718405084591e116), SC_(0.4250637986417935006416103499478464507034464684723158690361514041108354846198179822284331729470375876) }, + { SC_(79.32462310791015625), SC_(79.32462310791015625), SC_(0.2265812192859111793701268319180181432592332033520631459548418870087313461493587143570358980254121858e116), SC_(0.4850681245064375532830474944621702586601181813161844180209856045192746973602966734348745477845995594), SC_(0.2405309405090871002009875856313525172417514527945948697823877648230405543879091322702447306719461278e116), SC_(0.5149318754935624467169525055378297413398818186838155819790143954807253026397033265651254522154004406) }, + { SC_(79.32462310791015625), SC_(81.32462310791015625), SC_(0.1856351400007264179915509790071180444141831443962993101439038589137498188297565091899947197479506563e116), SC_(0.3974102067524771654238415034508869981945050779154473286311149558701105627077748452563626311397099272), SC_(0.2814770197942718615795634385422526160868015117503587055933257929180220817075113374372859089494076573e116), SC_(0.6025897932475228345761584965491130018054949220845526713688850441298894372922251547436373688602900728) }, + { SC_(79.32462310791015625), SC_(158.6492462158203125), SC_(0.5477330720068224780701445363285029876343876715557225104230520850538844174288125862419613510382120732e104), SC_(0.1172594334189900631026684846558912506266654225675454569702894665073176239070434312256368453610018499e-11), SC_(0.4671121597944505464991075950713005159646561531590236280656739293213488484522139622098518161111163522e116), SC_(0.9999999999988274056658100993689733151534410874937333457743245454302971053349268237609295656877436315) }, + { SC_(79.32462310791015625), SC_(7932.46240234375), SC_(0.2507976175576844893816025545348994505732738811599451336268458914861545435100080396913936264183100242e-3139), SC_(0.5369109159302385766715005099968927909596208804645589535759265880326078668348439316806652406126744246e-3255), SC_(0.4671121597949982795711144175493706605009846561466580157372296518317719005372678466272806286973583136e116), SC_(1) }, + { SC_(79.50051116943359375), SC_(0.7950050830841064453125), SC_(0.1007179855256139495130132385414409112491773013873557959418162063411915085777708335264524976384187991e117), SC_(1), SC_(0.6887000237791040303344447785375139417032139911190313071484984882544945606603220114308768983302289135e-10), SC_(0.6837905069139396906610398476672272204595124818016865895753945696678209963279127701144558535997180328e-126) }, + { SC_(79.50051116943359375), SC_(39.750255584716796875), SC_(0.1007179836393830335336233439903068878202174926971471695238825534389799961797697618010140027702267658e117), SC_(0.9999999812721540632909521979986548649380838741865786059637062956721161538067683429285376975236657302), SC_(0.1886230915979389894551134023428959808690208626417933652902211512398001071725438494868192033298369219e109), SC_(0.1872784593670904780200134513506191612581342139403629370432788384619323165707146230247633426975256935e-7) }, + { SC_(79.50051116943359375), SC_(77.50051116943359375), SC_(0.5789799949107917152570710484848434458064808949077017980685125521673178404641929193096087412095242976e116), SC_(0.5748526361893420229789120569013624245836437256323742750737512004325005902604086693828613549873692166), SC_(0.4281998603453477798730613369295656666852921189658561613496495112445972453135154159549162351746636933e116), SC_(0.4251473638106579770210879430986375754163562743676257249262487995674994097395913306171386450126307834) }, + { SC_(79.50051116943359375), SC_(79.50051116943359375), SC_(0.4885674911797652114508761964378804385389577759098921348148099363155387118919106051255954421534190815e116), SC_(0.4850846535800856274945033512970544897150855947006202262011552441697614121488952414904204770326254579), SC_(0.5186123640763742836792561889765286739528152379636658246033521270963763738857977301389295342307689094e116), SC_(0.5149153464199143725054966487029455102849144052993797737988447558302385878511047585095795229673745421) }, + { SC_(79.50051116943359375), SC_(81.50051116943359375), SC_(0.4003737369276933595165444490079175288966803252286052829692800846860985237220765734659062956459984663e116), SC_(0.3975196037115663804827922579647907397844393421819002221608464511372100484695665027416987597795269932), SC_(0.6068061183284461356135879364064915835950926886449526764488819787258165620556317617986186807381895246e116), SC_(0.6024803962884336195172077420352092602155606578180997778391535488627899515304334972583012402204730068) }, + { SC_(79.50051116943359375), SC_(159.0010223388671875), SC_(0.1117782601617957330465406642863402034183538751360069213080811823615253974473994651893700610377698832e105), SC_(0.1109814295614252587586323883157197260814952349004543110702484673237072021217283859901908230123439344e-11), SC_(0.100717985525502171252851442808394370584890961183937442066680199419883427395409308129005098173229429e117), SC_(0.9999999999988901857043857474124136761168428027391850476509954568892975153267629279787827161400980918) }, + { SC_(79.50051116943359375), SC_(7950.05126953125), SC_(0.332617490333505740193238740221960311618356967098140848780280664105621628940315461991208307850364067e-3146), SC_(0.3302463692037571600524407642610776659937268500918407630656802304688906743772950818205739444343777544e-3262), SC_(0.1007179855256139495130132385414409112491773013873557959418162063411915085777708335264524976384187991e117), SC_(1) }, + { SC_(79.6223907470703125), SC_(0.7962238788604736328125), SC_(0.1715657227680164605630917478389861461913239451098814709264168965684594546202062069240005740101091525e117), SC_(1), SC_(0.754509793972818202583506331051781208522710342408733321500163303079991978066951619456360117963549162e-10), SC_(0.4397788682958732887173811193154454955888151794796743370538482289013582498261287684371327392962268777e-126) }, + { SC_(79.6223907470703125), SC_(39.81119537353515625), SC_(0.1715657196320086458068259811820125306571938794776498778512967440364920605026325977989548622193198264e117), SC_(0.9999999817212449890317773405034720825579690706587396281355497774469202517371009703905926320510621998), SC_(0.3136007814756265766656973615534130065632231593075120152531967394117573609125045711790789326099725717e109), SC_(0.1827875501096822265949652791744203092934126037186445022255307974826289902960940736794893780017803728e-7) }, + { SC_(79.6223907470703125), SC_(77.6223907470703125), SC_(0.9861510149806946069119244150539731712756570722452758207734953627951806391685407406714055767796988538e116), SC_(0.5747948943823260940081154817917987955871576341815977930738572693572120360781162011828666339628959371), SC_(0.7295062126994699987189930633358882906375823788535388884906736028894139070335213285686001633213926711e116), SC_(0.4252051056176739059918845182082012044128423658184022069261427306427879639218837988171333660371040629) }, + { SC_(79.6223907470703125), SC_(79.6223907470703125), SC_(0.8322585873047840922376383521441536538728130600255677203896274724206914713520204498344752465338252139e116), SC_(0.4850960750651382367579725536937657793801694464515224466699114589073786351509412021268725682600372838), SC_(0.883398640375380513393279126245707808040426391073246988874541493263903074850041619405530493567266311e116), SC_(0.5149039249348617632420274463062342206198305535484775533300885410926213648490587978731274317399627162) }, + { SC_(79.6223907470703125), SC_(81.6223907470703125), SC_(0.6821370856679498971296525115150974730855745751397914367805592884761332364821411828788225857696117516e116), SC_(0.3975952041366126054894817687557524182144172771315710656488169932801258933992178693882689294640018238), SC_(0.1033520142012214708501264966874763988827664875959023272483609677208461309719920886361183154331479773e117), SC_(0.6024047958633873945105182312442475817855827228684289343511830067198741066007821306117310705359981762) }, + { SC_(79.6223907470703125), SC_(159.244781494140625), SC_(0.1832828915314380334113857311590267904888543149679052917412213341368534561089124778665601159484213666e105), SC_(0.1068295511331625416194923285915509115906296547130247095396640086031391470823974203287727401395873051e-11), SC_(0.1715657227678331776715603098055747604601649183193926166114489912767182332860693534678916615322425924e117), SC_(0.9999999999989317044886683745838050767140844908840937034528697529046033599139686085291760257967122726) }, + { SC_(79.6223907470703125), SC_(7962.2392578125), SC_(0.5707574247311215651651126695679961463941861779012155096590663872746423650263852268844866525688891356e-3151), SC_(0.3326756740930555043164283198692223050084192888424458711044641812297007350754846039812739082533180289e-3267), SC_(0.1715657227680164605630917478389861461913239451098814709264168965684594546202062069240005740101091525e117), SC_(1) }, + { SC_(79.829345703125), SC_(0.79829347133636474609375), SC_(0.4240441081412798178327694732666417723072057669917958145406633586949781267758762767540872567351954665e117), SC_(1), SC_(0.8813645253024489993550976092533766237873460413576730175642301470499238017901799923348019642589712028e-10), SC_(0.2078473697384335815411060540938428709327284148342604097582465097698775123509059896790079916976528154e-126) }, + { SC_(79.829345703125), SC_(39.9146728515625), SC_(0.4240441007032240506684766617917096806560720482076284907552715296700713716577254656043438208489782786e117), SC_(0.9999999824592403847617250977446217538623581070912365241176574333345935152418470913514385563163792275), SC_(0.7438055767164292811474932091651133718784167323785391829024906755118150811149743435886217187953434908e109), SC_(0.1754075961523827490225537824613764189290876347588234256666540648475815290864856144368362077247058852e-7) }, + { SC_(79.829345703125), SC_(77.829345703125), SC_(0.2436969414860120290289689777276043636584936128155226208509461532806576070130144369706266206922376831e117), SC_(0.5746971525066418798438281252523317290894689780779437149862575792522518902192007991791920250991936967), SC_(0.1803471666552677888038004955390374086487121541762731936897172054143205197628618397834606360429577834e117), SC_(0.4253028474933581201561718747476682709105310219220562850137424207477481097807992008208079749008063033) }, + { SC_(79.829345703125), SC_(79.829345703125), SC_(0.2057103310021771387382717064845340168088360551371116254389197414013419499959175159941568001657888962e117), SC_(0.4851154091112618928575307309857291325089832757615232285715171921768187230517940573160602294139425922), SC_(0.2183337771391026790944977667821077554983697118546841891017436172936361767799587607599304565694065703e117), SC_(0.5148845908887381071424692690142708674910167242384767714284828078231812769482059426839397705860574078) }, + { SC_(79.829345703125), SC_(81.829345703125), SC_(0.1686521768646532707913514122900405507011319383133847277363588584916610090298906867600795278457611923e117), SC_(0.3977231934760499265543096531991136395682943725759448848277093454940352318696169596549681950861851036), SC_(0.2553919312766265470414180609766012216060738286784110868043045002033171177459855899940077288894342742e117), SC_(0.6022768065239500734456903468008863604317056274240551151722906545059647681303830403450318049138148964) }, + { SC_(79.829345703125), SC_(159.65869140625), SC_(0.424605873119110364212821116620527380541187863831844970899490116890177789724000182730469046696392776e105), SC_(0.1001324779585531658328192497418062102045756562153670520281231626880522693147593918096011773729412533e-11), SC_(0.4240441081408552119596503629024289511905852396112546266768315137240786366589860989643632565524649975e117), SC_(0.9999999999989986752204144683416718075025819378979542434378463294797187683731194773068524060819039882) }, + { SC_(79.829345703125), SC_(7982.9345703125), SC_(0.4621662479706183011662750662723852497792440727322185958986325739851002898647535816572084573103929877e-3159), SC_(0.1089901354829430235357224959326508852275613378764967203384928943628269735805569956330024274570034831e-3275), SC_(0.4240441081412798178327694732666417723072057669917958145406633586949781267758762767540872567351954665e117), SC_(1) }, + { SC_(79.89389801025390625), SC_(0.7989389896392822265625), SC_(0.5623872428860240914124385034669456317377062335483102811486398321544344297098623896453332740116185409e117), SC_(1), SC_(0.9252400586147207986399310125175872809713146282808823213806627825501812184354791877049496503893417913e-10), SC_(0.1645201007523981261932088980012233717527575414974406339656709968708528716110378383489968733983530401e-126) }, + { SC_(79.89389801025390625), SC_(39.946949005126953125), SC_(0.5623872331473145380256817849925987163138703952898820899999530174122577585060346090230388143581559124e117), SC_(0.9999999826832673098873136057286627605889134128412976054955191328641337338943465638707743252432067262), SC_(0.9738709553386756718474346915423835838258428191148686814742176671203827780622294459653462628520698333e109), SC_(0.1731673269011268639427133723941108658715870239450448086713586626610565343612922567475679327383632885e-7) }, + { SC_(79.89389801025390625), SC_(77.89389801025390625), SC_(0.3231852455582649743730220172309814969465482872883759397817585622260013630088536766339980712786839687e117), SC_(0.5746667436831655490083122794443975439715616394986560265564901985697189264778379184602249247159019612), SC_(0.2392019973277591170394164862359641347911579462599343413668812699284330667010087130113352027329345722e117), SC_(0.4253332563168344509916877205556024560284383605013439734435098014302810735221620815397750752840980388) }, + { SC_(79.89389801025390625), SC_(79.89389801025390625), SC_(0.2728261002814886725877513262716592670634452736295204248614669541739911238383716909024473725449893467e117), SC_(0.4851214243079493673695258359589997582772367754525545927391731121566233487463718849674183056627391385), SC_(0.2895611426045354188246871771952863646742609599187898562871728779804433058714906987428859014666291943e117), SC_(0.5148785756920506326304741640410002417227632245474454072608268878433766512536281150325816943372608615) }, + { SC_(79.89389801025390625), SC_(81.89389801025390625), SC_(0.2236968465488211857538073443874235675754314170333716992581290437541122706752715140400264023666312034e117), SC_(0.3977630171709933097440496739039984011001766085819066051719601609492872712497753172998195051897981828), SC_(0.3386903963372029056586311590795220641622748165149385818905107884003221590345908756053068716449873375e117), SC_(0.6022369828290066902559503260960015988998233914180933948280398390507127287502246827001804948102018172) }, + { SC_(79.89389801025390625), SC_(159.7877960205078125), SC_(0.5518750534826592333439106118852649468895253290019915041723999567802947326613956916938138335229256075e105), SC_(0.9813079163221785503959194191372440868758643367920170695089911061279549457454591920905123279087302061e-12), SC_(0.5623872428854722163589558442336017211258209686014207558196378406502620297530820949126718783199247271e117), SC_(0.9999999999990186920836778214496040805808627559131241356632079829304910088938720450542545408079094877) }, + { SC_(79.89389801025390625), SC_(7989.3896484375), SC_(0.1383507138942006080113356761199370492213922206755980013543626068704345075613213997141592584980275057e-3161), SC_(0.2460061383757941699094234196149238409539858091509580238126731100515831044151186882019558174679678258e-3278), SC_(0.5623872428860240914124385034669456317377062335483102811486398321544344297098623896453332740116185409e117), SC_(1) }, + { SC_(79.911529541015625), SC_(0.79911530017852783203125), SC_(0.6074807445704054176953723897174493928056843658012608492033878323056858035817494945656714304004354818e117), SC_(1), SC_(0.9376075939991310316058652097322864958830318207703330053398677303143367435772012479563172441291508907e-10), SC_(0.1543435907029749124641430961701084628110712234538281039990333691540443834012832931513902983314662334e-126) }, + { SC_(79.911529541015625), SC_(39.9557647705078125), SC_(0.6074807340876916319734828236712344466193462540382862173563921303925649879181289456211087278832922218e117), SC_(0.9999999827439571057762627432397076597338606062216417634020796417035472264920233241424457171679881343), SC_(0.1048271378572188956604621494618633811176297463184699570191312081566362054894456270251714326005997951e110), SC_(0.1725604289422373725676029234026613939377835823659792035829645277350797667585755428283201186567172893e-7) }, + { SC_(79.911529541015625), SC_(77.911529541015625), SC_(0.3490939396819543194423472086692488440899329561754645394349542462300088417893174150204567615974322654e117), SC_(0.5746584444068667128455934529286477397106019468883497914927484236710355942777847424911227111339637018), SC_(0.2583868048884510982530251810482005487157514096257963097684335860756769617924320795452146688030032164e117), SC_(0.4253415555931332871544065470713522602893980531116502085072515763289644057222152575088772888660362982) }, + { SC_(79.911529541015625), SC_(79.911529541015625), SC_(0.294702921344710284583015687923193164602506977430393597564273919764947267165659436584792585193649268e117), SC_(0.4851230660045307699251807140409752727269029578112530269856327993879109642416421942844061192299068579), SC_(0.3127778232256951331123567017942562282031773883708672516391139125407385364160900579808788452067862138e117), SC_(0.5148769339954692300748192859590247272730970421887469730143672006120890357583578057155938807700931421) }, + { SC_(79.911529541015625), SC_(81.911529541015625), SC_(0.2416399766528549473697622900337525778959737836824036578697933604271083054382496466545196926326891434e117), SC_(0.3977738863537748080058086305828367901266073773264507209981113710914944422185002681011018837744666533), SC_(0.3658407679175504703256100996836968149097105821188571913335944718785774981434998479111517377677463384e117), SC_(0.6022261136462251919941913694171632098733926226735492790018886289085055577814997318988981162255333467) }, + { SC_(79.911529541015625), SC_(159.82305908203125), SC_(0.5928468749707662143430063654698739701578602643830176982959642460330223717611053116877688191468460572e105), SC_(0.9759105622187450643987776870080494156376235134608410264363670080614512689454082944531773049734218145e-12), SC_(0.607480744569812570820401623503106386440214491831102988939004814607389839335716472193910325088747713e117), SC_(0.9999999999990240894377812549356012223129919505843623764865391589735636329919385487310545917055468227) }, + { SC_(79.911529541015625), SC_(7991.15283203125), SC_(0.2828851956046506636217187683331236808099435276786311460043401171888690142450033547321326007520746213e-3162), SC_(0.4656694029120210489268327196326841874360145543289128837664634685581941563202048737167103318560911968e-3279), SC_(0.6074807445704054176953723897174493928056843658012608492033878323056858035817494945656714304004354818e117), SC_(1) }, + { SC_(80.12790679931640625), SC_(0.8012790679931640625), SC_(0.1565858955345316778408697383409706114881625261885981877017429104297769723046463114404315151462293643e118), SC_(1), SC_(0.1103906892347550275984936375024131914313306692031262138020588747801109803699328609997449182650183472e-9), SC_(0.7049848829482264367664086348448905216092398164445087477821053207884342501027599062024031746506980864e-127) }, + { SC_(80.12790679931640625), SC_(40.063953399658203125), SC_(0.1565858929464215987700381838538577091475063482521143618128528892829080714162263001395629912384775782e118), SC_(0.9999999834716270566011540626153264222935036769351386967304111779925509195585578623247484278439032468), SC_(0.2588110079070831554487112902340656177936483825888890021146868900888420011300868523907751786185826016e110), SC_(0.1652837294339884593738467357770649632306486130326958882200744908044144213767525157215609675319105551e-7) }, + { SC_(80.12790679931640625), SC_(78.12790679931640625), SC_(0.8996749404983470527985969159238028099249147438421457261648644220762982170441636576776073490786413402e117), SC_(0.5745568190718320112196587122863238592372491398377904557699435971888929284450954160859714184830670111), SC_(0.6661840148469697256101004674859033049567105180438361508525646822214715060022994567267078023836523032e117), SC_(0.4254431809281679887803412877136761407627508601622095442300564028111070715549045839140285815169329889) }, + { SC_(80.12790679931640625), SC_(80.12790679931640625), SC_(0.7596657758652123118886387267866211410677574072189233066134010920575256333497559921564728089270332406e117), SC_(0.4851431690395666803137511593175113993531310895097926504821190772250002016391107113849799128985336875), SC_(0.8061931794801044665200586566230849738138678546670585704040280122402440896967071222478423425352604028e117), SC_(0.5148568309604333196862488406824886006468689104902073495178809227749997983608892886150200871014663125) }, + { SC_(80.12790679931640625), SC_(82.12790679931640625), SC_(0.6230662287369224783044172553715399976985326489531125576573499096252535174637146127256309107572849744e117), SC_(0.3979069932256564687190757801598174636710415784500894668989259748569020372840459038255617885912877157), SC_(0.942792726608394300104280128038166117183092612932869319360079194672516205582748501678684240705008669e117), SC_(0.6020930067743435312809242198401825363289584215499105331010740251430979627159540961744382114087122843) }, + { SC_(80.12790679931640625), SC_(160.2558135986328125), SC_(0.1428131148366242601399739072987256872234264848389817971753261614311088472292008847131795907061501696e106), SC_(0.9120432868433534946432724833845173130774072327633806797938769372461187149892526218428508238215261114e-12), SC_(0.1565858955343888647260331140808306375808638005013747612169039286326016461432152025932023142615161847e118), SC_(0.9999999999990879567131566465053567275166154826869225927672366193202061230627538812850107473781571492) }, + { SC_(80.12790679931640625), SC_(8012.79052734375), SC_(0.9813833801258848564907067590989331933673934913947440748745656518826023432810079629719642554627422948e-3171), SC_(0.6267380448128942072881349135209852478939912748695130086904104200672763288234875394585874700196810928e-3288), SC_(0.1565858955345316778408697383409706114881625261885981877017429104297769723046463114404315151462293643e118), SC_(1) }, + { SC_(80.849334716796875), SC_(0.8084933757781982421875), SC_(0.3695313563630779228975452742878590145583333608065575253717395879967866264156839448832806724001298252e119), SC_(1), SC_(0.1910793356603405396091276046002837621116346950498761631147067245324122512531493535189456406667415525e-9), SC_(0.5170855798028630115329948188964096343551868072260648398316526340490731661038336678850118298026459568e-128) }, + { SC_(80.849334716796875), SC_(40.4246673583984375), SC_(0.3695313510724557961316371554536349288899657621139192752676952633426620723906260032944788331957545609e119), SC_(0.9999999856828871605480739577719564646026456844148429021895784931791924362914873712591824805349456478), SC_(0.5290622126765908118834224085668367598692638250104044324654124554025057941588801839204375264251369873e111), SC_(0.1431711283945192604222804353539735431558515709781042150682080756370851262874081751946505435216986362e-7) }, + { SC_(80.849334716796875), SC_(78.849334716796875), SC_(0.2121926511057782794199272803396497086439772919485559165285769515553270566324785307902295633987797339e119), SC_(0.5742209624486949494208166065593421844336741642102212276714392784181868117532148928657809272365487187), SC_(0.1573387052572996434776179939482093059143560688580016088431626364414595697832054140930511090013500912e119), SC_(0.4257790375513050505791833934406578155663258357897787723285607215818131882467851071342190727634512813) }, + { SC_(80.849334716796875), SC_(80.849334716796875), SC_(0.1793001656053353488041135091497583237236729298957064369768475297283657107769874923206150829448610597e119), SC_(0.4852096108162644014951140255203384523193561677446202760909207893861087596394911130344296970112943799), SC_(0.1902311907577425740934317651381006908346604309108510883948920582684209156386964525626655894552687654e119), SC_(0.5147903891837355985048859744796615476806438322553797239090792106138912403605088869655703029887056201) }, + { SC_(80.849334716796875), SC_(82.849334716796875), SC_(0.147201729366517941328145970611369179771754730056506404447137768869361989564926344576460636984497343e119), SC_(0.3983470599498650344822295094401653774419902739967054315366917017179567697339631514175192150359410387), SC_(0.2223296269965599815693993036764898347865786307500511209246018191274246368507576003068200354156324822e119), SC_(0.6016529400501349655177704905598346225580097260032945684633082982820432302660368485824807849640589613) }, + { SC_(80.849334716796875), SC_(161.69866943359375), SC_(0.2689503176953981729747144490529877231974192647794491251249335107555282326872062865070864188251151032e107), SC_(0.7278146037251159774373769857431458856305825921008314075267928697741501028589999541438705298999868145e-12), SC_(0.3695313563628089725798498761148843001092803730833601061069601388716616929049284166505934661136227387e119), SC_(0.9999999999992721853962748840225626230142568541143694174078991685924732071302258498971410000458561295) }, + { SC_(80.849334716796875), SC_(8084.93359375), SC_(0.6132380305701121462469405302454548114426482733649866731660738888202764961961434042504588482287468179e-3199), SC_(0.165950201521622322495940947866560483471548748879262058555335165308661377207671025476753503896989563e-3317), SC_(0.3695313563630779228975452742878590145583333608065575253717395879967866264156839448832806724001298252e119), SC_(1) }, + { SC_(81.56500244140625), SC_(0.815650045871734619140625), SC_(0.8557910056361559208739241521745494880610417879882744978867358284465498673356955513677886983293923693e120), SC_(1), SC_(0.3314267214918079012256477817183939950867700173962530903842677738990700000165402649306683952481482028e-9), SC_(0.3872753035601728763877314752320223718662757264283768033172506607193758358351421608369197028952524728e-129) }, + { SC_(81.56500244140625), SC_(40.782501220703125), SC_(0.8557909950103422240652532848601310717163547621576865221736181910852871532504420329864215025570134048e120), SC_(0.9999999875836347579863536858812355411289528473513077318224505894944554207512944589881490229084758716), SC_(0.1062581369680867086731441841634468702583058797571311763736126271408525351838136719577237896451181569e113), SC_(0.1241636524201364631411876445887104715264869226817754941050554457924870554101185097709152412836962729e-7) }, + { SC_(81.56500244140625), SC_(79.56500244140625), SC_(0.491131810458415797253133694065392895216348628627804013362612257835154519583201315070753991709603353e120), SC_(0.5738922321266170072005300090309778178461083341052825393193901756574289533407410956212393868747024631), SC_(0.3646591951777401236207904581091565928446931593604704845241235706113953477524942362970347066197890163e120), SC_(0.4261077678733829927994699909690221821538916658947174606806098243425710466592589043787606131252975369) }, + { SC_(81.56500244140625), SC_(81.56500244140625), SC_(0.4152936799533426187546279459127586883946615850364334799487274913233647039071691487511697198843596929e120), SC_(0.4852746490886899161634002152481990679415499680049732093189034240163252493710698745788645052169806065), SC_(0.4404973256828133021192962062617907996663802029518410179380083371231851634285264026166189784450326764e120), SC_(0.5147253509113100838365997847518009320584500319950267906810965759836747506289301254211354947830193935) }, + { SC_(81.56500244140625), SC_(83.56500244140625), SC_(0.3412706588312780908661863866436670552199021881165747254070595902721923230275974137981746022332140344e120), SC_(0.3987780387778124407643074939272984787086376550411699153642160494542210874074353039102140980370086958), SC_(0.5145203468048778300077377655308824328411395998716997724796762381743575443080981375696140960961783349e120), SC_(0.6012219612221875592356925060727015212913623449588300846357839505457789125925646960897859019629913042) }, + { SC_(81.56500244140625), SC_(163.1300048828125), SC_(0.4979569103926362279287184639116260612284836895084960854320411441443349189037934716281790427787321784e108), SC_(0.5818674268754178120372348650715318734531356120929647537057914753089229460774655785119123964053597103e-12), SC_(0.8557910056356579639635315159466207695971301619270460141972273323611178261915512164488849048577641903e120), SC_(0.9999999999994181325731245821879627651349284681265468643879070352462942085246910770539225344214880876) }, + { SC_(81.56500244140625), SC_(8156.5), SC_(0.6481645983237165116476868438359473085675465428063233854312328145204451100927036046633890300552768762e-3227), SC_(0.7573865512198279914135246678286017335513840758213216543189188620312309378889936481224346436723878256e-3347), SC_(0.8557910056361559208739241521745494880610417879882744978867358284465498673356955513677886983293923693e120), SC_(1) }, + { SC_(82.27938079833984375), SC_(0.822793781757354736328125), SC_(0.1983179232494865351873957720975123376379986118808518655503988724938961759719224804417829200263290348e122), SC_(1), SC_(0.577938743053930659084681674082901750744634487798841062507673955184367849107775263686605442346057389e-9), SC_(0.2914203283214478699052169618163989729721081714200892589492120879102489473671080255284348679690862441e-130) }, + { SC_(82.27938079833984375), SC_(41.139690399169921875), SC_(0.1983179211133833816706717400704484917566805497731756340503074559239619980958067187248157997680728896e122), SC_(0.9999999892288951068256276963480248265633848704377949155882701823012280366006306533718564574322629001), SC_(0.2136103153516724032027063845881318062107676231500091416569934177876115761716967120258256145190798483e114), SC_(0.1077110489317437230365197517343661512956220508441172981769877196339936934662814354256773709986367443e-7) }, + { SC_(82.27938079833984375), SC_(80.27938079833984375), SC_(0.1137488962797576184179232683250422036047193135702869592917316403600289371097784619249451487810758879e122), SC_(0.5735684118508039369307481187482281734253148523757919272131028213569543737074997842638856981426621017), SC_(0.8456902696972891676947250377247013403327929831056490625866723213386723886214401851683777124525314685e121), SC_(0.4264315881491960630692518812517718265746851476242080727868971786430456262925002157361143018573378983) }, + { SC_(82.27938079833984375), SC_(82.27938079833984375), SC_(0.9625136741340621762846899382946768160880399753531011770794351092617381718542134240716155001244200256e121), SC_(0.4853387219687690128350225313207321218635154450024860038399871756957560965998204117573335934982355916), SC_(0.1020665558360803175589267782680446560291946143455417478424553615677223587865011380346213700138870322e122), SC_(0.5146612780312309871649774686792678781364845549975139961600128243042439034001795882426664065017644084) }, + { SC_(82.27938079833984375), SC_(84.27938079833984375), SC_(0.7916907438958707079496094482701859713072892331527960241433957694157827310378157294240598011618099335e121), SC_(0.3992028208665302640343590676908354084681030936732554905381867505402633822735374778469003741999907536), SC_(0.1191488488598994643924348272704937405072696885655722631360592955523179028681409074993769399101480414e122), SC_(0.6007971791334697359656409323091645915318969063267445094618132494597366177264625221530996258000092464) }, + { SC_(82.27938079833984375), SC_(164.5587615966796875), SC_(0.9229529795603485153461368490615812168769999815674405829557989909785396829739678098673931808173733641e109), SC_(0.4653906033491797027152972671150951566580532158075195767613418293025216873218072919120345009989942482e-12), SC_(0.1983179232493942398894397372459777239530924537591641655522421284356005960728246264734855232453422955e122), SC_(0.9999999999995346093966508202972847027328849048433419467841924804232386581706974783126781927080879655) }, + { SC_(82.27938079833984375), SC_(8227.9384765625), SC_(0.7735068658678605879711478927950195701281275037675644656423127595544395725667868253109208668000308593e-3255), SC_(0.3900337665873895107561081441533175943567540187707929179576679352340155534583687010995194073636485055e-3376), SC_(0.1983179232494865351873957720975123376379986118808518655503988724938961759719224804417829200263290348e122), SC_(1) }, + { SC_(82.434051513671875), SC_(0.824340522289276123046875), SC_(0.3919727298018941405607217213011860844848358362971197486574977786876580212154309353468872530105839726e122), SC_(1), SC_(0.6524236890668771801216402186187088295435761377068961184835672739387582320547845566414717541543312593e-9), SC_(0.1664461936922542654025055064849818737381098853423292904837662535719895443157365300509947378053417278e-130) }, + { SC_(82.434051513671875), SC_(41.2170257568359375), SC_(0.3919727257078552634465817789575093075992751697658115097122013235789077370594016939005668254228014741e122), SC_(0.9999999895552966677470219099988238773006553770146631982774442737265025711963197188349852651550351783), SC_(0.4094038877114139942343676776885560666531308238945296455108750284156029241446320427587782498488383811e114), SC_(0.1044470333225297809000117612269934462298533680172255572627349742880368028116501473484496482168340509e-7) }, + { SC_(82.434051513671875), SC_(80.434051513671875), SC_(0.2247959137555844463219799838800151023970241303476741068008275124151099011724539590862877473743632319e122), SC_(0.5734988601610064325179525464074205288727851883810181600442835883096950669687954548152247899629835615), SC_(0.1671768160463096942387417374211709820878117059494456418566702662725481200429769762605995056362207407e122), SC_(0.4265011398389935674820474535925794711272148116189818399557164116903049330312045451847752100370164385) }, + { SC_(82.434051513671875), SC_(82.434051513671875), SC_(0.1902449383177598813121943592459519971433465338910958602674765059254867259669384595084196139702804307e122), SC_(0.4853524846330790726472721527323463497803873992912643511478114677216542975827866670784383776733209931), SC_(0.2017277914841342592485273620552340873414893024060238883900212727621712952484924758384676390403035419e122), SC_(0.5146475153669209273527278472676536502196126007087356488521885322783457024172133329215616223266790069) }, + { SC_(82.434051513671875), SC_(84.434051513671875), SC_(0.1565123939362769475080542093432274593734265105911379115094644617192419784217256374202003624400390253e122), SC_(0.3992940886866783975414617111701057707494087359436857749747862726679760264831560352701675002487737709), SC_(0.2354603358656171930526675119579586251114093257059818371480333169684160427937052979266868905705449473e122), SC_(0.6007059113133216024585382888298942292505912640563142250252137273320239735168439647298324997512262291) }, + { SC_(82.434051513671875), SC_(164.86810302734375), SC_(0.1738090887882876028946588574601746951600230312232219029923852247355357987239161631839663686179511776e110), SC_(0.443421380043790231228546841504518339061110443791415012729701037042423965868047423037588575690438944e-12), SC_(0.3919727298017203314719334336982914256273756616019597256262745567846656359906953995481633368474000062e122), SC_(0.9999999999995565786199562097687714531584954816609388895562085849872702989629575760341319525769624114) }, + { SC_(82.434051513671875), SC_(8243.4052734375), SC_(0.6971392368408637469166147868026636930902825591766794678364263839891375076450310438880031744617769396e-3261), SC_(0.1778540147915909791649937511258041695399928890097942907640478290609899239403032100662605389814460253e-3382), SC_(0.3919727298018941405607217213011860844848358362971197486574977786876580212154309353468872530105839726e122), SC_(1) }, + { SC_(83.58335113525390625), SC_(0.835833489894866943359375), SC_(0.6250104983253024354353258195270149601601580964177967772953464029665832309826066468765017864561227479e124), SC_(1), SC_(0.1620705241071594842570781310748864675248805746649472958871212345120860755644227650609100156095285155e-8), SC_(0.2593084828837639831866475426102194444538793153141880945736024613385237932061159355960015751687711728e-132) }, + { SC_(83.58335113525390625), SC_(41.791675567626953125), SC_(0.6250104931313099839582598620334167977407873554242404310308676816768881037822397032441599993948453017e124), SC_(0.9999999916897516675412355459789302888889234159107027372328653716787524776515947724357309935712894211), SC_(0.5193992451477065957493598162419370740993556346264478721289695127200366943632341787061277446254741865e116), SC_(0.8310248332458764454021069711111076584089297262767134628321247522348405227564269006428710578919333882e-8) }, + { SC_(83.58335113525390625), SC_(81.58335113525390625), SC_(0.3581236110580169435832374882697090836972635304200401188299253553682961011486821393884617022010927607e124), SC_(0.5729881530271872360260808321553573713909584341534538894126379779413255242769888734719038057412039819), SC_(0.2668868872672854918520883312573058764628945659977566584654210475982871298339245074880400842550299872e124), SC_(0.4270118469728127639739191678446426286090415658465461105873620220586744757230111265280961942587960181) }, + { SC_(83.58335113525390625), SC_(83.58335113525390625), SC_(0.3034135652832531838128378741720513582025399432760641793461592013625401679615163818012854790001902296e124), SC_(0.4854535501343434421215288303351099254965391999814215447250813059693329765669362512112092267673308653), SC_(0.3215969330420492516224879453549636019576181531417325979491872016040430630210902650752163074559325184e124), SC_(0.5145464498656565578784711696648900745034608000185784552749186940306670234330637487887907732326691347) }, + { SC_(83.58335113525390625), SC_(85.58335113525390625), SC_(0.249982067272088810012029790513346187111716303011738104780587897355003882160116348680389821774479704e124), SC_(0.3999645893019533809881934059957907297669017694037782697271849104891869077217330235130825727265587632), SC_(0.3750284310532136254232960290136687730484417934060586725147585056115793488224902981961119646816430439e124), SC_(0.6000354106980466190118065940042092702330982305962217302728150895108130922782669764869174272734412368) }, + { SC_(83.58335113525390625), SC_(167.1667022705078125), SC_(0.1934974439668089150887715042154903985179484067469905242772479737610784086113668275607824017966298629e112), SC_(0.3095907100525186748471789218381523593198857249530897243372246918365126669665960352697245664667276552e-12), SC_(0.6250104983251089379913590106119261886559426060192788288885994124423059830088455684678904196285619655e124), SC_(0.9999999999996904092899474813251528210781618476406801142750469102756627753081634873330334039647302754) }, + { SC_(83.58335113525390625), SC_(8358.3349609375), SC_(0.845969400365979574886862550187705991723284070666786457986127293036604310791457131354517548720033525e-3306), SC_(0.1353528304936845270173779455432921521105980011190597363844957855384842224786658781328124162824819356e-3429), SC_(0.6250104983253024354353258195270149601601580964177967772953464029665832309826066468765017864561227479e124), SC_(1) }, + { SC_(84.98836517333984375), SC_(0.84988367557525634765625), SC_(0.3147499333307002189617876380154863465986945147349304831342953279964412492709090477424702755899928355e127), SC_(1), SC_(0.5037700606982246407274917999823031629613946019449361457173097271680094755563347755176211603063240909e-8), SC_(0.1600540643066397410823892957288058365712559930427241689451526132591528608330355588924111129711277525e-134) }, + { SC_(84.98836517333984375), SC_(42.494182586669921875), SC_(0.3147499313525519491543202519411381298495260096093970818260315763781959485610432070851745016045700028e127), SC_(0.9999999937151749362594006926800487135537779853714980429323175210007925298585407679620892241967477558), SC_(0.1978148269807467386074348216749168505125533401308263751618245300709865840657295773985422832715776906e119), SC_(0.6284825063740599307319951286446222014628501957067682478999207470141459232037910775803252244198024714e-8) }, + { SC_(84.98836517333984375), SC_(82.98836517333984375), SC_(0.1801559510286215017373426984372473391996227289023760086582069127174569927367777175938093166187628581e127), SC_(0.572378043490595301972894223377929722934098278038486783216220553046121815520930888855461871595810152), SC_(0.1345939823020787172244449395782390073990717858325544744760884152789842565341313301486609589712299774e127), SC_(0.427621956509404698027105776622070277065901721961513216783779446953878184479069111144538128404189848) }, + { SC_(84.98836517333984375), SC_(84.98836517333984375), SC_(0.1528344804497610641801952021604887581831110563535578434293847599694322108222850107445504601298248642e127), SC_(0.485574306029102585556874122974721418897921592282894779628645620022485996122895375194226905132274364), SC_(0.1619154528809391547815924358549975884155834583813726397049105680270090384486240369979198154601679713e127), SC_(0.514425693970897414443125877025278581102078407717105220371354379977514003877104624805773094867725636) }, + { SC_(84.98836517333984375), SC_(86.98836517333984375), SC_(0.1261411865023788640662105876883702788729516312247114401234959866137087875891976831691333107483075437e127), SC_(0.400766364483532200081475145599909941911516053453166983810262672559866631259877897428134003516020265), SC_(0.1886087468283213548955770503271160677257428835102190430107993413827324616817113645733369648416852918e127), SC_(0.599233635516467799918524854400090058088483946546833016189737327440133368740122102571865996483979735) }, + { SC_(84.98836517333984375), SC_(169.9767303466796875), SC_(0.6281449624315834685133457201334404613436484734128638105709409720434543386911579482443896405013115509e114), SC_(0.1995695299390600969639804956282709060088505668835089824363202651524365647992937982247541867155333347e-12), SC_(0.3147499333306374044655444796686350120266811706887961182869540416153841551737047023086011597951683965e127), SC_(0.9999999999998004304700609399030360195043717290939911494331164910175636797348475634352007062017752458) }, + { SC_(84.98836517333984375), SC_(8498.8369140625), SC_(0.1063698418444666347303177736786561475611653701802904162134794938298514958093962015776179400470636075e-3360), SC_(0.3379503236707802212437127054555506777027031449520524797100186373923287140445333930895315220141500838e-3487), SC_(0.3147499333307002189617876380154863465986945147349304831342953279964412492709090477424702755899928355e127), SC_(1) }, + { SC_(87.306671142578125), SC_(0.873066723346710205078125), SC_(0.9518419603985717251524124396281547643233687475892451516078558510838563262744434280250717539531071e131), SC_(1), SC_(0.3444665049805299555904214747446838109733569884695338910567345224298504802504651096927727802743413352e-7), SC_(0.361894641455277916117689957869366844910494857771453540375396899891083126896658179984310187752512426e-138) }, + { SC_(87.306671142578125), SC_(43.6533355712890625), SC_(0.9518419566246364089070974429717785557913466804027507821050077799056290790209905247233466628055053788e131), SC_(0.9999999960351240297653745573638963429547114221552042067021107518679323938467111062268547751267021326), SC_(0.377393531624531499665637620853202206718649436950284807117822724725345290330172509114760172120068062e123), SC_(0.3964875970234625442636103657045288577844795793297889248132067606153288893773145224873297867374630362e-8) }, + { SC_(87.306671142578125), SC_(85.306671142578125), SC_(0.5438862635650597072124788098804889549618986852575264817794776912368300986980621067629603985757404489e131), SC_(0.5714039580029800807607960597771937634408631261196635414408653414781069849503330518337299290121027795), SC_(0.4079556968335120179399336297476658093614700623317186698283781598470262275763813212621113553773666511e131), SC_(0.4285960419970199192392039402228062365591368738803364585591346585218930150496669481662700709878972205) }, + { SC_(87.306671142578125), SC_(87.306671142578125), SC_(0.4623735516545633866666434492710255947551328417022223265415705967753075885286439440423807818862388083e131), SC_(0.4857671450636094437739206652220028766245688155739812735916408232048659280970276933633550515173341512), SC_(0.4894684087440083384857689903571291695682359058870228250662852543085487377457994839826909720668682917e131), SC_(0.5142328549363905562260793347779971233754311844260187264083591767951340719029723066366449484826658488) }, + { SC_(87.306671142578125), SC_(89.306671142578125), SC_(0.3826863314368711658651004534517857991024957793334872733048948216643563079750870152933643039315212161e131), SC_(0.4020481837936900025462790487630907951043397778955163010314690473309731672604280404562679413053620109), SC_(0.5691556289617005592873119861763689652208729682557578783029610294195000182993564127317074500215858839e131), SC_(0.5979518162063099974537209512369092048956602221044836989685309526690268327395719595437320586946379891) }, + { SC_(87.306671142578125), SC_(174.61334228515625), SC_(0.9207203614216600978544808864347204705726423037068411206005513293690692640374769046533509946653880101e118), SC_(0.9673038169446954689708365548049206661691020733405680626494102470392406443497039014353203890007683255e-13), SC_(0.9518419603984796531162702736183693162347252755421878873774851669717962711415065210986680062626417649e131), SC_(0.999999999999903269618305530453102916344519507933383089792665943193735058975296075935565029609856468) }, + { SC_(87.306671142578125), SC_(8730.6669921875), SC_(0.2900680930222122849220593513096194237825422669823092219730282066065468410747117442141400569012612992e-3451), SC_(0.3047439649548019054342147699253553733423211260822116004436472943020783007376126326014215871614523081e-3582), SC_(0.9518419603985717251524124396281547643233687475892451516078558510838563262744434280250717539531071e131), SC_(1) }, + { SC_(87.9038543701171875), SC_(0.8790385723114013671875), SC_(0.1371285032812039464480184999742857673623282854122807058809312584589041795081406375743904552589834206e133), SC_(1), SC_(0.5709879014692858253347111310497184413188089827705203023424448448568530961664223775136110426007124725e-7), SC_(0.4163889255747098282303311497518099096868480856856128406321071889608203808709552473806937114702314829e-139) }, + { SC_(87.9038543701171875), SC_(43.95192718505859375), SC_(0.1371285027983173096599530941847462304610727509616393075570542711013150684667575002037351001436241044e133), SC_(0.9999999964785830426674382910848986147126693070711280529410030882652030874834782169866712480061112024), SC_(0.4828866367880654057895395369012555344506413983238769873575891110413831373706553551153593162153278437e124), SC_(0.3521416957332561708915101385287330692928871947058996911734796912516521783013328751993888797603058565e-8) }, + { SC_(87.9038543701171875), SC_(85.9038543701171875), SC_(0.7832222598482130672447231100378495419106963194909353147066608621749661991613725095396987935415369226e132), SC_(0.5711593440512440008668432644019009783945909058868876544173629887930429201021875761334930531866429801), SC_(0.5880627729638263972354618897050081317125865346318717441026517224140755959200338662042057590482972838e132), SC_(0.4288406559487559991331567355980990216054090941131123455826370112069570798978124238665069468133570199) }, + { SC_(87.9038543701171875), SC_(87.9038543701171875), SC_(0.6661916327413937628868335220025218223927200190567384422699260902783641913047586513236178740915473937e132), SC_(0.4858155794023808319033656578769031457527172423192857266560807668904272854930526046673868007298039101), SC_(0.7050934000706457015933514777403358512305628350660686165393864943106776037766477244202866784982868126e132), SC_(0.5141844205976191680966343421230968542472827576807142733439192331095727145069473953326131992701960899) }, + { SC_(87.9038543701171875), SC_(89.9038543701171875), SC_(0.5517645173124902285443461675305113809686016138028377782551712527793577824048543664882386138507288235e132), SC_(0.4023704073988241260096618308614479419843506170244029548189011549335569096330748008932018722641401952), SC_(0.8195205154995492359358388322123462926546812403199692805541413318096840126765520092556659387391053829e132), SC_(0.5976295926011758739903381691385520580156493829755970451810988450664430903669251991067981277358598048) }, + { SC_(87.9038543701171875), SC_(175.807708740234375), SC_(0.1100758471671216571874904945348343816940499403471959777458028574251205738678312487341657941463745706e120), SC_(0.8027204011801507997304939786302172819890582139869213641050430314818326775172541565634952968684280417e-13), SC_(0.1371285032811929388633017878085670183128748019741113008868965388611295992223981255170036721341100041e133), SC_(0.9999999999999197279598819849200269506021369782718010941786013078635894956968518167322482745843436505) }, + { SC_(87.9038543701171875), SC_(8790.3857421875), SC_(0.1373358261999490763947814039173620510502254439109454275065495374964786861642938022896809167507932816e-3474), SC_(0.1001511887855437181540785413588061699802838236144406958135167813072890198184454198262171479956051549e-3606), SC_(0.1371285032812039464480184999742857673623282854122807058809312584589041795081406375743904552589834206e133), SC_(1) }, + { SC_(90.6262969970703125), SC_(0.90626299381256103515625), SC_(0.2760991447905968099998244747627223571445600955649976457020917582719042855651229604588354402394909185e138), SC_(1), SC_(0.6019880277243076263303088644058669531254501971762422813432732070535195078709052929761867895611137917e-6), SC_(0.2180332822765084168150556254968300997146974845353508933974624745328612653465345298480537267656177249e-143) }, + { SC_(90.6262969970703125), SC_(45.31314849853515625), SC_(0.27609914422427419059678759953644914563405258716380905745373799758045973183356615523965970260547371e138), SC_(0.9999999979488432684840235995803165725301339377839249756053611971133056964406789109650144087975625962), SC_(0.5663226194030368752262732115105075084011885882483537606914445537315568052191757376340172084253521505e129), SC_(0.205115673151597640041968342746986606221607502439463880288669430355932108903498559120243740380039977e-8) }, + { SC_(90.6262969970703125), SC_(88.6262969970703125), SC_(0.1573972774410437243260839260751180196316095514391650415020344615818868314804255719759245145956408335e138), SC_(0.5700752081663247869026412581421822741046403825044177107787477971783452665951230853182864209034778601), SC_(0.1187018673495530856737405486876043375129505441258326042000572966900174540846973884829109256438500849e138), SC_(0.4299247918336752130973587418578177258953596174955822892212522028216547334048769146817135790965221399) }, + { SC_(90.6262969970703125), SC_(90.6262969970703125), SC_(0.1341925450276609640170078763714683523929425593225370960775740050971261681521806683859312208385957931e138), SC_(0.4860302813666346390600522864190792796549723292306669551047023898310899932900183728856710939530385156), SC_(0.1419065997629358459828165983912540047516175362424605496245177531747781174129422920729042194008951254e138), SC_(0.5139697186333653609399477135809207203450276707693330448952976101689100067099816271143289060469614844) }, + { SC_(90.6262969970703125), SC_(92.6262969970703125), SC_(0.1114888614894672880829858090681039497513255322634145649762690156709095145750230643814102952869464243e138), SC_(0.4038000971499724004888563318451891954737695059747291944183013638969006249799930855173241849102317202), SC_(0.1646102833011295219168386656946184073932345633015830807258227426009947709900998960774251449525444942e138), SC_(0.5961999028500275995111436681548108045262304940252708055816986361030993750200069144826758150897682798) }, + { SC_(90.6262969970703125), SC_(181.252593994140625), SC_(0.9472987548437135960848890047517963685870652895575465108730541290562109617810394792612864516074885327e124), SC_(0.3431009377309654126650940644543544134331402222913932505843644459157220461586687601110515226127371097e-13), SC_(0.2760991447905873370122760376267615082545125776013117750491961828067955550238323983492176298446983056e138), SC_(0.9999999999999656899062269034587334905935545645586566859777708606749415635554084277953841331239888948) }, + { SC_(90.6262969970703125), SC_(9062.6298828125), SC_(0.6733028142738727433504501682917135782256407253133656103286819407569504188555592492380068166999921889e-3581), SC_(0.2438626946072321249232337351711433472875255405825154438607198482931327220334100404279311997235593699e-3718), SC_(0.2760991447905968099998244747627223571445600955649976457020917582719042855651229604588354402394909185e138), SC_(1) }, + { SC_(91.38089752197265625), SC_(0.913809001445770263671875), SC_(0.8271168156063419272868148980100652099723865498989358104433664836039747851793965147343675354069691111e139), SC_(1), SC_(0.1173636078351168206677101705950664637888626864853100709679175198025117529332896905828075540319696747e-5), SC_(0.1418948395446174434093368946299219675183068818320376708786350068506630821483216296151085550477636149e-144) }, + { SC_(91.38089752197265625), SC_(45.690448760986328125), SC_(0.8271168141457145530395582905968771952783065228432161516797903162781041165098848330657599964885380586e139), SC_(0.999999998234073655996823828876283579453180682132814964643137071144932588040496076626575687002086842), SC_(0.1460627374247256607413188014694080027055719658763576167325870668669511681668607538918431052500131316e131), SC_(0.1765926344003176171123716420546819317867185035356862928855067411959503923373424312997913158035198356e-8) }, + { SC_(91.38089752197265625), SC_(89.38089752197265625), SC_(0.4712774108857810132297461337187371451535619618564149339790566898887987638670873863076061196698768235e139), SC_(0.5697833752059525756000770780016692346602869050037441575140215928495581860269599601718853476693324499), SC_(0.3558394047205609140570687642913280648188245880425208764643097937151760213123091284267614157370922876e139), SC_(0.4302166247940474243999229219983307653397130949962558424859784071504418139730400398281146523306675501) }, + { SC_(91.38089752197265625), SC_(91.38089752197265625), SC_(0.4020516304974041869331300333192498158943724369343195686818219020453063245746597843699157988075491434e139), SC_(0.4860880868474044981456629314350169340905142835482453857382763436371358817909281373111745265180121052), SC_(0.4250651851089377403536848646908153940780141129646162417615445815586684606047367303644517365994199677e139), SC_(0.5139119131525955018543370685649830659094857164517546142617236563628641182090718626888254734819878948) }, + { SC_(91.38089752197265625), SC_(93.38089752197265625), SC_(0.3343085304178820728370368129959118333262701588219830817687394527297239830908937405585383246554379356e139), SC_(0.4041853872512645340790677210377141135565046684607601842820224129177111740962517595911118837242360801), SC_(0.4928082851884598544497780850141533766461163910769527286746270308742508020885027741758292107515311755e139), SC_(0.5958146127487354659209322789622858864434953315392398157179775870822888259037482404088881162757639199) }, + { SC_(91.38089752197265625), SC_(182.7617950439453125), SC_(0.2242347883104259437001784511984710777882398779126640010013852032385948064536430991705623094015407603e126), SC_(0.2711041343610504888312244980890428719957989769344600100872958766626703931015703696110789010156216201e-13), SC_(0.8271168156063195038079838554156951921272667027911569864555752172038746466590726552537221710970520549e139), SC_(0.9999999999999728895865638949511168775501910957128004201023065539989912704123337329606898429630388921) }, + { SC_(91.38089752197265625), SC_(9138.08984375), SC_(0.2333405346524099127624255741241154919994013551962445138669378665084206519458809297303162487523163497e-3610), SC_(0.2821131553000199596532769712641041750655436227808082779084539017881929532379149155438559785602743135e-3749), SC_(0.8271168156063419272868148980100652099723865498989358104433664836039747851793965147343675354069691111e139), SC_(1) }, + { SC_(91.61568450927734375), SC_(0.916156828403472900390625), SC_(0.2385189268132603569055279026036546112395915526413302413256263736409617454186115678115986264026363563e140), SC_(1), SC_(0.1446453859717900429097782132177879063240359542688517946884893813623675812971708328130670459279510702e-5), SC_(0.6064314807396179557035601629002116264656254440473100721390435473282140291122761398197827485200985883e-145) }, + { SC_(91.61568450927734375), SC_(45.807842254638671875), SC_(0.238518926411223458160612352089912267170034206878002477834678957797293691968846083000679646512203263e140), SC_(0.9999999983144444589100654864475953588852510830926201772112214743526110376318694859429160128628401535), SC_(0.4020368987449155505137423440695573457633277634909474158436680534497654848109189798904330932519000524e131), SC_(0.1685555541089934513552404641114748916907379822788778525647388962368130514057083987137159846524333654e-8) }, + { SC_(91.61568450927734375), SC_(89.61568450927734375), SC_(0.1358826381378452566845392283014301020453500944370103332851395912117357312092954675420960016948060605e140), SC_(0.5696933151314636889402717210561072807102313699205187508039606407930233958262280151724194046635621987), SC_(0.1026362886754151002209886743022245091942414582043199080404867824292260142093161002695026247078302958e140), SC_(0.4303066848685363110597282789438927192897686300794812491960393592069766041737719848275805953364378013) }, + { SC_(91.61568450927734375), SC_(91.61568450927734375), SC_(0.1159454639386415140701919344785711101504330716079660400352039529819548657858671453762086107583345204e140), SC_(0.4861059266354018157904697733562905256389065862860975026641924934910029520357672026469138595111939714), SC_(0.1225734628746188428353359681250835010891584810333642012904224206590068796327444224353900156443018359e140), SC_(0.5138940733645981842095302266437094743610934137139024973358075065089970479642327973530861404888060286) }, + { SC_(91.61568450927734375), SC_(93.61568450927734375), SC_(0.9643423388279861618669781781438069099799900832275488185133844003057310316651022224454395076022114872e139), SC_(0.4043043257455969591796033043242189888972541916103391582990723897824397271660015256348028906827695693), SC_(0.1420846929304617407188300847892739202415925443185753594742879336103886422521013455670546756424152076e140), SC_(0.5956956742544030408203966956757810111027458083896608417009276102175602728339984743651971093172304307) }, + { SC_(91.61568450927734375), SC_(183.2313690185546875), SC_(0.6009474554939568385244398976364296982229594888929610986392548338715402504612508893799738676511000755e126), SC_(0.2519495888745326284176734984445699726983809622642543662087476024883228942742565203028678570088077873e-13), SC_(0.2385189268132543474309729630352693668406151883443480117307374440299753528702728524090940138937425565e140), SC_(0.9999999999999748050411125467371582326501555430027301619037735745633791252397511677105725743479697132) }, + { SC_(91.61568450927734375), SC_(9161.568359375), SC_(0.1593456530256608853233064269366703549460168956394397898165810210118554235782690081080923322853894046e-3619), SC_(0.6680629296576313978312502326105659086966784471453663663580446490696325479332881389705279818795240907e-3759), SC_(0.2385189268132603569055279026036546112395915526413302413256263736409617454186115678115986264026363563e140), SC_(1) }, + { SC_(92.12703704833984375), SC_(0.9212703704833984375), SC_(0.2399876453932557709035963058340481135622175286808518995946642268081351389373379385408490973122764218e141), SC_(1), SC_(0.2285161460865770312684052016459511707861475065482028014778375841615432664705606506253415139167093647e-5), SC_(0.9521996255770543248507019797080309969664705034667222929863386994113202258092320333410356802674857838e-146) }, + { SC_(92.12703704833984375), SC_(46.063518524169921875), SC_(0.2399876450277638485757886841159475759421222612629946380212164618188833289937115257074378242460809734e141), SC_(0.9999999984770385920121252110149154360487429041767187470002014110363695240033054408199869788510190661), SC_(0.3654919223278076217181005376200952674178572615734477649892518099436264128334112730661954483695002139e132), SC_(0.1522961407987874788985084563951257095823281252999798588963630475996694559180013021148980933924946507e-8) }, + { SC_(92.12703704833984375), SC_(90.12703704833984375), SC_(0.1366725728706164496211607713524598709187956968742644666129730537246230023910500337211476317361295124e141), SC_(0.5694983699959134525449270791074549310207375095754663587823908208016178743877145827913884183431730345), SC_(0.1033150725226393212824355344815882426434218318065874329816911730835121365462879048197014655761469094e141), SC_(0.4305016300040865474550729208925450689792624904245336412176091791983821256122854172086115816568269655) }, + { SC_(92.12703704833984375), SC_(92.12703704833984375), SC_(0.1166686845219986488818554224472973818313047319415121068610232864695809611388847169895474560281645051e141), SC_(0.48614454436110451151996468540273911446245403663453944005499929830226081967028024171591317527262112), SC_(0.1233189608712571220217408833867507317309127967393397927336409403385541777984532215513016412841119167e141), SC_(0.51385545563889548848003531459726088553754596336546055994500070169773918032971975828408682472737888) }, + { SC_(92.12703704833984375), SC_(94.12703704833984375), SC_(0.9708984381984547719038796803494227312344065442236234380066800099772773805997925825317171993463153688e140), SC_(0.4045618417596005754006107404734865361987804155104383914748224604608107016638010596702460973672671963), SC_(0.1428978015734102937132083377991058404387768742584895557939962258104074008773586802876773773776448849e141), SC_(0.5954381582403994245993892595265134638012195844895616085251775395391892983361989403297539026327328037) }, + { SC_(92.12703704833984375), SC_(184.2540740966796875), SC_(0.5154654025170943048379933630072361646831059286893631784471351458822835474658284543943173832619619619e127), SC_(0.2147883078199408511675238699806345305806230493370052347091621201654187458303302006729866476491097872e-13), SC_(0.2399876453932506162495711348909997336285874563192050685353773331763506675858791157053744390277324786e141), SC_(0.9999999999999785211692180059148832476130019365469419376950662994765290837879834581254169669799327013) }, + { SC_(92.12703704833984375), SC_(9212.7041015625), SC_(0.1740260185610722150132898864030278176879091468564177201588954956804257120622731650947061696398860464e-3639), SC_(0.7251457393813105181120231572651733738519794464115866097010846557465806558180663021583787844775357479e-3780), SC_(0.2399876453932557709035963058340481135622175286808518995946642268081351389373379385408490973122764218e141), SC_(1) }, + { SC_(93.4323272705078125), SC_(0.934323251247406005859375), SC_(0.8814967134478776682875380788820907155756713245915086236629259348723005585824778198786951082475439305e143), SC_(1), SC_(0.7439264291879768548103199400435278012420110051886328485273432417984741385778097874396393306578837987e-5), SC_(0.8439355675850341606610333856828111362005601766448654572199934359421580463125806995716505409098085548e-148) }, + { SC_(93.4323272705078125), SC_(46.71616363525390625), SC_(0.8814967124115816644428110120532236990775480938286720383273278139949431476870563194223429740319097179e143), SC_(0.9999999988243903941611206237710406412358805844735764378231693011616242798809704624019090670629683518), SC_(0.103629600384472706682886701649812323076283658533559812087735741089542150045635213421563421265495188e135), SC_(0.1175609605838879376228959358764119415526423562176830698838375720119029537598090932937031648150732343e-8) }, + { SC_(93.4323272705078125), SC_(91.4323272705078125), SC_(0.5015787454101221129295525920738692750796895112434379522282892305449693416283657589264175830475498272e143), SC_(0.569008072019068441378141224129859484843913549106268473388321108632746869660168361088019147327254114), SC_(0.3799179680377555553579854868082214404959818133480706714346367043273312169541120609522775251999941033e143), SC_(0.430991927980931558621858775870140515156086450893731526611678891367253130339831638911980852672745886) }, + { SC_(93.4323272705078125), SC_(93.4323272705078125), SC_(0.4286204421291983901657204887758065580849070272358778008816834971857064031129186504368326875862846622e143), SC_(0.486241679169394248977891557118270927040069031656068991568797425507919067660955199856740555894381588), SC_(0.4528762713186792781218175901062841574907642973556308227812424376865941554695591694418624206612592683e143), SC_(0.513758320830605751022108442881729072959930968343931008431202574492080932339044800143259444105618412) }, + { SC_(93.4323272705078125), SC_(95.4323272705078125), SC_(0.3571911708923214852825956235373317199244122044271645894800192401985153692143479124758817967531471405e143), SC_(0.4052098725305593197447557452013893919656732535974720385317845783769326496469985662908191758457480378), SC_(0.52430554255555618300494245534475899565125912016434403418290669467378518936812990740281331149439679e143), SC_(0.5947901274694406802552442547986106080343267464025279614682154216230673503530014337091808241542519622) }, + { SC_(93.4323272705078125), SC_(186.864654541015625), SC_(0.1259953718851497422185155838432709775415377681234627891274319482880983197650512335906366190780121108e130), SC_(0.1429334562035207942219561580292535457466577078886806996466399874934997762978014383761464213682159646e-13), SC_(0.8814967134478650687503495639078688640172869974937544698861135885933878153876490100467186031241848669e143), SC_(0.9999999999999857066543796479205778043841970746454253342292111319300353360012506500223702198561623854) }, + { SC_(93.4323272705078125), SC_(9343.232421875), SC_(0.1960314045329095653874896587430064105960842290239001554238513241670632927461577447737697784737955613e-3690), SC_(0.2223847253680098670168278676241422662084837978009286299217324300789098229947253471418167411428882428e-3833), SC_(0.8814967134478776682875380788820907155756713245915086236629259348723005585824778198786951082475439305e143), SC_(1) }, + { SC_(95.04709625244140625), SC_(0.950470983982086181640625), SC_(0.1347151497701627838023004899030991007135183961667830130160321116038462511703415545257334974334882037e147), SC_(1), SC_(0.3286612795944616265711661159620158180111738426278486839585148422911814462000818729717402563514602976e-4), SC_(0.2439675716912239653605419199699105800940081390120250957910020333139694222067332074038136544243711667e-150) }, + { SC_(95.04709625244140625), SC_(47.523548126220703125), SC_(0.134715149655174837158908365734295756525909899321280250267181720062970685562896010218651352005874697e147), SC_(0.9999999991464364116465534636328681416670507850803823863855186962459346530413634417636243160462913207), SC_(0.114987946643392124168803344187608496845502762748850391540875565607445544307082145427613506749351943e138), SC_(0.8535635883534465363671318583329492149196176136144813037540653469586365582363756839537086792727480771e-9) }, + { SC_(95.04709625244140625), SC_(93.04709625244140625), SC_(0.7657419898087756918044401927859150010110236627212083718551073992050834278986980247942861154148661996e146), SC_(0.5684156467295670833457314748182583026711347615029028702386864296192251088564944072740070382355011149), SC_(0.5814095078928521462185647062450760061241602989466217583052137168333790838047175204630488589200158375e146), SC_(0.4315843532704329166542685251817416973288652384970971297613135703807748911435055927259929617644988851) }, + { SC_(95.04709625244140625), SC_(95.04709625244140625), SC_(0.6551993414891400584657331890429218727010636138597867246040294498234147999757611336129285742445526427e146), SC_(0.4863590640005776572938148287895322447425672342498795296867376257066880031162988779311197928274050768), SC_(0.6919521562124877795572717099880691344341203478080434055562916662150477117276544116444064000903293943e146), SC_(0.5136409359994223427061851712104677552574327657501204703132623742933119968837011220688802071725949232) }, + { SC_(95.04709625244140625), SC_(97.04709625244140625), SC_(0.5469348543810198898788108400219066674055519288845905559098385193141874425095257183053365380552173915e146), SC_(0.4059935763083396511879930219600213943088317540084712903484937176675430142752990570780958626728778976), SC_(0.8002166433206079481441940590090843397296320327832395742504825967242750691938898269519984362796646455e146), SC_(0.5940064236916603488120069780399786056911682459915287096515062823324569857247009429219041373271221024) }, + { SC_(95.04709625244140625), SC_(190.0941925048828125), SC_(0.1163565210751933735917713115824884295377410943134003957027515756150491650147536720126667740467403185e133), SC_(0.8637226122949718303297924930807240476707255995627851606738122984246652433596622525296156940282444593e-14), SC_(0.134715149770161620237089737969363183000402571282487635605088977599889223654585404034083349896768077e147), SC_(0.9999999999999913627738770502816967020750691927595232927440043721483932618770157533475664033774747038) }, + { SC_(95.04709625244140625), SC_(9504.7099609375), SC_(0.1882910792556985454022291750937049650277749642926213574473710789217539816042178440456911801998452087e-3753), SC_(0.1397697880134057195925378652333761731239724208573611460809672748666332725027162330835038869860775248e-3899), SC_(0.1347151497701627838023004899030991007135183961667830130160321116038462511703415545257334974334882037e147), SC_(1) }, + { SC_(95.7381134033203125), SC_(0.95738112926483154296875), SC_(0.3131256477376182698644958520288062730120597952997735383909639369911279332348153218599580667846002149e148), SC_(1), SC_(0.6259638796335379154132491067850054630581491227431517134904320208680904887791967705070062451309013877e-4), SC_(0.1999082106995146361595919566373510363928443455250615728995542441899260700897608092918146555224762139e-151) }, + { SC_(95.7381134033203125), SC_(47.86905670166015625), SC_(0.3131256475045529369814942168364075834643974857802806071524605507825921146892747325138071613543204894e148), SC_(0.9999999992556811153384110140909467483022561115010639504399530543910037541382647473365746503693152161), SC_(0.2330653328830016351923986895476623095194929312385033862085358185455405893461509054302797255478092976e139), SC_(0.7443188846615889859090532516977438884989360495600469456089962458617352526634253496306847838730929468e-9) }, + { SC_(95.7381134033203125), SC_(93.7381134033203125), SC_(0.1779075806560239984812940622982116868384319330920774575055611294206390996442651224588361381273713192e148), SC_(0.5681667469318916109572248335985115949990266831109569692342841499116304801664564362997469459285025136), SC_(0.1352180670815942713832017897305945861736278622076960808854028075704888335905501994011219286572288958e148), SC_(0.4318332530681083890427751664014884050009733168890430307657158500883695198335435637002530540714974864) }, + { SC_(95.7381134033203125), SC_(95.7381134033203125), SC_(0.1523069413357484754374655843484772981270197064005375713583089713574349155157906826494491640806102121e148), SC_(0.486408387291778633373088719439421104518278577765243274560857715290013748197857083438047466237509057), SC_(0.1608187064018697944270302676803289748850400888992359670326549656336930177190246392105089027039900028e148), SC_(0.513591612708221366626911280560578895481721422234756725439142284709986251802142916561952533762490943) }, + { SC_(95.7381134033203125), SC_(97.7381134033203125), SC_(0.1272301724542666352897305399682160778528059289031360213001123841522621279128773634522821199701337433e148), SC_(0.4063230635162737729139607119689733600039122115886902710738823918667641280750498841296328319592011901), SC_(0.1858954752833516345747653120605901951592538663966375170908515528388658053219379584076759468144664717e148), SC_(0.5936769364837262270860392880310266399960877884113097289261176081332358719249501158703671680407988099) }, + { SC_(95.7381134033203125), SC_(191.476226806640625), SC_(0.2180196622498523257301542686260743105073414249254762792124539563440049600216553340937756140491204197e134), SC_(0.6962689381246105216999019579043882106585794758815525099073918717235018946643874538994431733526895434e-14), SC_(0.3131256477376160896678733535055489714693735345566684649767146822283358086952518818103578502312592772e148), SC_(0.9999999999999930373106187538947830009804209561178934142052411844749009260812827649810533561254610056) }, + { SC_(95.7381134033203125), SC_(9573.8115234375), SC_(0.2047732975618550995754113760724771754917001565403564547482936210611620508815755658679756315244336058e-3780), SC_(0.6539652661523390685549576910392316896310064392954560978721253545887258570329705975085945726161612243e-3928), SC_(0.3131256477376182698644958520288062730120597952997735383909639369911279332348153218599580667846002149e148), SC_(1) }, + { SC_(95.7719268798828125), SC_(0.957719266414642333984375), SC_(0.3652849570149194338699061207330042214691456897036249830724716251190496625103977890988745608082955137e148), SC_(1), SC_(0.6460962117384378869279234146664704642368952870130778723019981523479582282998533951667994862931581714e-4), SC_(0.1768745740361953097953374286122383490316270159748731628068026014703218132734349114704652833259151599e-151) }, + { SC_(95.7719268798828125), SC_(47.88596343994140625), SC_(0.3652849567448467119867724600565472535737109986173074600773479878919375666756425665914060545781570586e148), SC_(0.9999999992606519466606367634027247531235874725433591722307935837515353090377636417927730005937149443), SC_(0.2700727218831336606764569678954346910863175229951236372271120958347552225074685062301384551140417128e139), SC_(0.7393480533393632365972752468764125274566408277692064162484646909622363582072269994062850557420366691e-9) }, + { SC_(95.7719268798828125), SC_(93.7719268798828125), SC_(0.2075383422095549687859377236939378107114657757302374892385421489967748556047972620384339732353374175e148), SC_(0.5681546371510678531694417944497217516827858752382429985455100325556076293298399603999204855166479129), SC_(0.1577466148053644650839683970390664107576799139733874938339294761222748069056005270604405875729580962e148), SC_(0.4318453628489321468305582055502782483172141247617570014544899674443923706701600396000795144833520871) }, + { SC_(95.7719268798828125), SC_(95.7719268798828125), SC_(0.177678543462314010033087289241834056162334179822220833301232019405816572090901330642553819015097833e148), SC_(0.4864107871134070173635423726031997269295451919903017667180518041824731982418145023429873050756568583), SC_(0.1876064135526054238368188314911701653068115098814041497712396057132330904194964584563207417931976807e148), SC_(0.5135892128865929826364576273968002730704548080096982332819481958175268017581854976570126949243431417) }, + { SC_(95.7719268798828125), SC_(97.7719268798828125), SC_(0.1484295597668667428775736535331630296681882535240900528013208803104929721032433830611157371241063034e148), SC_(0.4063390975084812857035843719225526404875919795108845743390067002160173730743997401102112392276590868), SC_(0.2168553972480526909923324671998411918009574361795349302711507448085566904071544060377588236841892103e148), SC_(0.5936609024915187142964156280774473595124080204891154256609932997839826269256002598897887607723409132) }, + { SC_(95.7719268798828125), SC_(191.543853759765625), SC_(0.2516686336021675418611698546987653816499941105148260826852650065055606281718805886542475222521621197e134), SC_(0.6889652277465358933659581357101355310973981860453255196360638195856970852590291402046461472367230807e-14), SC_(0.3652849570149169171835700990575856097705987020498084831313664768582228098603327334925928420024089713e148), SC_(0.9999999999999931103477225346410663404186428986446890260181395467448036393618041430291474097085979535) }, + { SC_(95.7719268798828125), SC_(9577.1923828125), SC_(0.9820446416400385471291120811359246173564396216628169581930201486009838862871880857921148673236349781e-3782), SC_(0.2688434392878457976004143846157690027486569442491400678476504825174714873928563405149730139047476491e-3929), SC_(0.3652849570149194338699061207330042214691456897036249830724716251190496625103977890988745608082955137e148), SC_(1) }, + { SC_(95.9694976806640625), SC_(0.95969498157501220703125), SC_(0.8988904723156887356012107799441275312418593243208014880413139676615531337476793393561548314041286741e148), SC_(1), SC_(0.7775532350760850592566798483145674178911053960838610368804008889174502471471979934315644618187284575e-4), SC_(0.8650144361559210582330244822718418745008546595130323716668430638571407656273080012109137913565568591e-152) }, + { SC_(95.9694976806640625), SC_(47.98474884033203125), SC_(0.8988904716766126166939975555980772170756885470646476971694580349494473886587007395701191314780083168e148), SC_(0.999999999289038944577030929194373674906775676461699355270804256922066870404743674860414668366488164), SC_(0.6390761189072132243460503141661707772561537908718559327121057450889785997860356999261203572380515485e139), SC_(0.710961055422969070805626325093224323538300644729195743077933129595256325139585331633511835971429417e-9) }, + { SC_(95.9694976806640625), SC_(93.9694976806640625), SC_(0.5106453031401706958874686731877492178373397076855608964341605247495209661803158176596874047791691091e148), SC_(0.5680840089723778642741157291574694673861764928115673917849250989121876424663867840757203986146950236), SC_(0.3882451691755180397137421067563783134045196166352405916071534429120321675673635216964674266249595649e148), SC_(0.4319159910276221357258842708425305326138235071884326082150749010878123575336132159242796013853049764) }, + { SC_(95.9694976806640625), SC_(95.9694976806640625), SC_(0.4372426036633443703152630474867006269870107139751057689321058911291692380395573600758055950897572711e148), SC_(0.4864247838081273436278930988607284813083308399111701394286159830005270322032526325715030490820724468), SC_(0.461647868652344365285947732457426904254848610345695719109208076532383895708121979280349236314371403e148), SC_(0.5135752161918726563721069011392715186916691600888298605713840169994729677967473674284969509179275532) }, + { SC_(95.9694976806640625), SC_(97.9694976806640625), SC_(0.3653384090294889179570744023709294075670560020484027585130674878302772435343810853747166727161003022e148), SC_(0.4064326191914321662733597058118192064395549037294047488870574711565968218280688126274168958357045322), SC_(0.5335520632861998176441363775731981236748033222723987295282464798312758902132982539814381586880283718e148), SC_(0.5935673808085678337266402941881807935604450962705952511129425288434031781719311873725831041642954678) }, + { SC_(95.9694976806640625), SC_(191.938995361328125), SC_(0.5822982328948006435737807281578419044014484020000974539379528698443953508191288602845044552763522951e134), SC_(0.647796645785670914908748603629668344694911658572068883553404827450404780697858124751787433931707515e-14), SC_(0.898890472315682912618881831937691793434577745901757473557293966687013754218980895402646640115525829e148), SC_(0.9999999999999935220335421432908509125139637033165530508834142793111644659517254959521930214187524821) }, + { SC_(95.9694976806640625), SC_(9596.9501953125), SC_(0.1918665688322226928751168952668221825445953471936491301047602982841331358555390667766866403994938041e-3789), SC_(0.2134482172649389202229921939920421615942616969370868273660456787836678675297174122513258018418992707e-3937), SC_(0.8988904723156887356012107799441275312418593243208014880413139676615531337476793393561548314041286741e148), SC_(1) }, + { SC_(96.50640869140625), SC_(0.965064108371734619140625), SC_(0.104081470313939383399980076902031575333837677123720840219590627347975340149583141194459192157858389e150), SC_(1), SC_(0.0001288878762553660822785032377974479083690693074294903312294189102239252761261013917864670292285100774), SC_(0.1238336428824492076943272225514118974368124534956402163253871707041926408739601180320656758054305306e-152) }, + { SC_(96.50640869140625), SC_(48.253204345703125), SC_(0.1040814702474095423108915813336528582679041752720567555952742474621147139881304843425143166311848848e150), SC_(0.9999999993607907258764165207652036503181063662964695299747817400164165567516881173260046768811448106), SC_(0.6652984108908849556837871706593350185166408462431637988586062616145265685194487552667350419343486044e140), SC_(0.639209274123583479234796349681893633703530470025218259983583443248311882673995323118855189414108806e-9) }, + { SC_(96.50640869140625), SC_(94.50640869140625), SC_(0.5910715674357945417470451356153752698081140399023623838202272541561170885950138267672895201167842354e149), SC_(0.5678931760408016974721714595963387241135092482003720131767831357439503875802461502575415599150064892), SC_(0.4497431357035992922527556334049404835302627313348460183756790193236363129008175851773024014617996549e149), SC_(0.4321068239591983025278285404036612758864907517996279868232168642560496124197538497424584400849935108) }, + { SC_(96.50640869140625), SC_(96.50640869140625), SC_(0.5063174300669548712614426106251515093644403262825368921640208648071899359997799340395772196278629511e149), SC_(0.4864626033238742438159076952113745361558565753687473331434574974285942332471156794257793457918942406), SC_(0.5344972730724389627383581583951642439739364449546715100318854086725634654960514779050147019507209392e149), SC_(0.5135373966761257561840923047886254638441434246312526668565425025714057667528843205742206542081057594) }, + { SC_(96.50640869140625), SC_(98.50640869140625), SC_(0.423284104382396379258562518066386682749446146111560308535351043846909564918271088757702137610426983e149), SC_(0.4066853620588283978244159358965841872554085124555466328379108912595676207745429642516172809905483357), SC_(0.6175305987569974547412382509539290705889306251256480936605552296328438365775603231868897839681569072e149), SC_(0.5933146379411716021755840641034158127445914875444533671620891087404323792254570357483827190094516643) }, + { SC_(96.50640869140625), SC_(193.0128173828125), SC_(0.5702932063362658146497557220876501088111928008680285582303564940585735484128831116740249908317046183e135), SC_(0.5479296214937192369271195386717291116896000385171152183907175724591223930479007358565146607646451507e-14), SC_(0.104081470313938813106773740636216925578115589473612029026789759319417109793089082620910779274746715e150), SC_(0.9999999999999945207037850628076307288046132827088831039996148288478160928242754087760695209926414349) }, + { SC_(96.50640869140625), SC_(9650.640625), SC_(0.216269920331202128905217701996341364898115068952132792986833613785485549214663818827074818564108093e-3810), SC_(0.2077890710794826402679973440509143849983478253598296757658625667957221367082380646538242723072631106e-3959), SC_(0.104081470313939383399980076902031575333837677123720840219590627347975340149583141194459192157858389e150), SC_(1) }, + { SC_(96.78564453125), SC_(0.967856466770172119140625), SC_(0.3724598131294536343398109668923985859203747030194388497798578726261914387526477324667859085720360661e150), SC_(1), SC_(0.0001678332808908020943283293029069396846093850320834892198674110718905131575467436562237443072098180859), SC_(0.4506077567956822298823915943207680555295756301415503786556950504838393851394222930939928077870604193e-153) }, + { SC_(96.78564453125), SC_(48.392822265625), SC_(0.3724598129041874996438790385291063679069971062343384641769258467456117251862533068311161864278702852e150), SC_(0.9999999993951934497222186964978425197646291015421062627878722716222847556072923788106589101179363935), SC_(0.2252661346959319283632922180133775967851003856029320258805797135663944256356697221441657809244158561e141), SC_(0.6048065502777813035021574802353708984578937372121277283777152443927076211893410898820636065283739553e-9) }, + { SC_(96.78564453125), SC_(94.78564453125), SC_(0.211480655749212205044644869596991181812753161585398458122766247612689186207593992606806258457161397e150), SC_(0.5677945600958274005304991276982070488019463096449289389008115674613537863245697729052476184887262383), SC_(0.1609791573802414292951660972954074041076215414340403916570916250135022525450537398599796501148746692e150), SC_(0.4322054399041725994695008723017929511980536903550710610991884325386462136754302270947523815112737617) }, + { SC_(96.78564453125), SC_(96.78564453125), SC_(0.181195049902318147388030211482786423576652183156515684528226096557957212220954664248061902665371483e150), SC_(0.486482147912535372774068981948366664439516605617168951033794949533390980017648272385497423008468406), SC_(0.1912647632271354869517807554096121623437225198629231652516317760682342265316930682187240059066645831e150), SC_(0.513517852087464627225931018051633335560483394382831048966205050466609019982351727614502576991531594) }, + { SC_(96.78564453125), SC_(98.78564453125), SC_(0.1515226118176752313035688446512826968152502868958858183887041039841931003160098346291651851843612774e150), SC_(0.4068160012876648827327081524966805045583725025237251867284387154200792488593249977099978807408178945), SC_(0.2209372013117784030362421222411158891051244161235530313911537686419983384366378978376207233876747887e150), SC_(0.5931839987123351172672918475033194954416274974762748132715612845799207511406750022900021192591821055) }, + { SC_(96.78564453125), SC_(193.5712890625), SC_(0.1870637842991391015010663648296748437142083884191977779539140467046472738549827752985732128679112928e136), SC_(0.5022388394801735521027847423222732342582714241511936352785317356020273036462226147007162693025195549e-14), SC_(0.3724598131294517637019679755013835752567264062710017076959736806484118996121806859940473587442830804e150), SC_(0.9999999999999949776116051982644789721525767772676574172857584880636472146826439797269635377738529928) }, + { SC_(96.78564453125), SC_(9678.564453125), SC_(0.2758384386668010183377737823576817812230999605250417996275087054016893757744886753518863688699504654e-3821), SC_(0.7405857731312599312978054295970517318343436113957608079621190574526458812397822292104098270571378232e-3971), SC_(0.3724598131294536343398109668923985859203747030194388497798578726261914387526477324667859085720360661e150), SC_(1) }, + { SC_(96.90234375), SC_(0.9690234661102294921875), SC_(0.6347320556272004652073982242536028194250409150692933065991408861790148561353721903119442930671763471e150), SC_(1), SC_(0.0001874583589201791437291983798768283723896698260731056267314507479603455787496827788278764167485788292), SC_(0.2953346333437423832394076485593320813165578729931174932400091818159549811163639584775345457776462517e-153) }, + { SC_(96.90234375), SC_(48.451171875), SC_(0.6347320552520839867078549918104881900997296117067298120210355383146608245327375100050746281258299894e150), SC_(0.9999999994090160167995961646372182559459576153174360025635501679412890906560142831362803741195849695), SC_(0.3751164784995432324431146293253113033625634945781053478643540316026346803068696649413463576981119521e141), SC_(0.5909839832004038353627817440540423846825639974364498320587109093439857168637196258804150304528693879e-9) }, + { SC_(96.90234375), SC_(94.90234375), SC_(0.3603713292007616599193847321433693776406224132985977617950650429927701818740197288718386980391139537e150), SC_(0.5677534733056240831243053541942271704991142413473022811865382907937593552157659834684067326969442147), SC_(0.2743607264264388052880134921102334417844185017706955448040758431862446742613524614401055950280623935e150), SC_(0.4322465266943759168756946458057728295008857586526977188134617092062406447842340165315932673030557853) }, + { SC_(96.90234375), SC_(96.90234375), SC_(0.3087909824560275584103431046974543181404229622606248088770167430436689442739193291655649929835173834e150), SC_(0.4864902910109063604317574490403166925735264301207989523508894092408729165424412856192746790398212724), SC_(0.3259410731711729067970551195561485012846179528086684977221241431353459118614528611463793000836589637e150), SC_(0.5135097089890936395682425509596833074264735698792010476491105907591270834575587143807253209601787276) }, + { SC_(96.90234375), SC_(98.90234375), SC_(0.2582537083249196166752992251315786292914265190930702521336240441031477618567462816775728292650975125e150), SC_(0.4068704361712601545380401980897904253692293050276365212662219983212046424823103805791446810847055177), SC_(0.3764783473022808485320989991220241901336143959762230544655168420758670942786259086343714638020788347e150), SC_(0.5931295638287398454619598019102095746307706949723634787337780016787953575176896194208553189152944823) }, + { SC_(96.90234375), SC_(193.8046875), SC_(0.3073956091842520906334222999991014751494347564888634269649774940368938307198659998765531208644280484e136), SC_(0.484291925165972545491085733790579460724785915588532436230595300192679987889820064584958321718595281e-14), SC_(0.6347320556271973912513063817326964852020409240545418122515759975447452063604318213736370944071775816e150), SC_(0.9999999999999951570807483402745450891426620942053927521408441146756376940469980732001211017993541504) }, + { SC_(96.90234375), SC_(9690.234375), SC_(0.7723287903400092132238434162563586125412816998193352152794296763426365221417582924303709204887939552e-3826), SC_(0.1216779243293210874272980541689570391334500547490670817786599996042033528280232172239591316726908051e-3975), SC_(0.6347320556272004652073982242536028194250409150692933065991408861790148561353721903119442930671763471e150), SC_(1) }, + { SC_(97.07398223876953125), SC_(0.970739841461181640625), SC_(0.1390602098901114121749451291573722964962338436836892395635709177769657264832915164849385924487263315e151), SC_(1), SC_(0.0002206239018632627690767847378446033317282464529187679501063029450469716998532478533460905427524571721), SC_(0.1586535084605473190778182620046851287283362311207892713720991931149175973722946235657202316078723266e-153) }, + { SC_(97.07398223876953125), SC_(48.536991119384765625), SC_(0.1390602098106765064700909705681863732023823758577724316703853743472771138627075462610002703522638277e151), SC_(0.9999999994287732934703215628849594223214888332647574438491813559160290445198946227973930490539689349), SC_(0.7943490570485415858918592329385146782591680789318554342968861262058397022393832209646250381387634481e141), SC_(0.5712267065296784371150405776785111667352425561508186440839709554801053772026069509460310650605150922e-9) }, + { SC_(97.07398223876953125), SC_(95.07398223876953125), SC_(0.7894353266841565987861782321798955768786126888151560587018964703541536790461173522028631221430328714e150), SC_(0.5676931793127499352346121685087645812907292134401894428603932426387977992743975009460501537817292928), SC_(0.6011667722169575229632730593938273880837257480217363369338127074155035857867978126465228023442304435e150), SC_(0.4323068206872500647653878314912354187092707865598105571396067573612022007256024990539498462182707072) }, + { SC_(97.07398223876953125), SC_(97.07398223876953125), SC_(0.6765310374491799687911161592387927937432361182800670053630090175678365342909441778772192319630897275e150), SC_(0.4865022409960335966405506224452614435763428868120114813409497819943814759656889306376952973024101145), SC_(0.7140710614519341529583351323349301712191023185568253902727001602018207305419709869721666925241735873e150), SC_(0.5134977590039664033594493775547385564236571131879885186590502180056185240343110693623047026975898855) }, + { SC_(97.07398223876953125), SC_(99.07398223876953125), SC_(0.5659059756647238479027162601695954937224889597067600830708907184786265352965625297621317680730040811e150), SC_(0.4069503246916683160883089096616709612540613828178047608656015929946719366073371994219608414198293247), SC_(0.8246961232363902738467350314041274712398494771301323125648184592910307295363526350872541564142592338e150), SC_(0.5930496753083316839116910903383290387459386171821952391343984070053280633926628005780391585801706753) }, + { SC_(97.07398223876953125), SC_(194.1479644775390625), SC_(0.6383632161739827405539381205559532425372824200941984115614212460584196737360667222050732683537774928e136), SC_(0.4590552658294073405400621127602235511556825500235165921282899372189791108142883841281540591924135969e-14), SC_(0.1390602098901107738117289551746317425581132877304467022811508235785541650620454580652648563820041264e151), SC_(0.9999999999999954094473417059265945993788723977644884431744997648340787171006278102088918571161587185) }, + { SC_(97.07398223876953125), SC_(9707.3984375), SC_(0.1554508300767295629826289151447813502664571621031079084444997489221130098077847451573058000951078545e-3832), SC_(0.1117867074985507336921978163621817009174894348152931507303180908352071729637763538136893928075969754e-3982), SC_(0.1390602098901114121749451291573722964962338436836892395635709177769657264832915164849385924487263315e151), SC_(1) }, + { SC_(98.12041473388671875), SC_(0.98120415210723876953125), SC_(0.1669861126231065195696424210456449455874901874757519165598086560442649717334048611202518743421394436e153), SC_(1), SC_(0.0005995920660668525537494187738509380037779136267531571358642991713728663808182319218773355681394449147), SC_(0.3590670245855430863209564274456623316692224537418637279292316026931209748682832128112907126760146097e-155) }, + { SC_(98.12041473388671875), SC_(49.060207366943359375), SC_(0.1669861125455763331198117763777534542100306355761290717646558166017830188844910799626912721597589294e153), SC_(0.9999999995357087770237577802132886010370796676612177697437781117048098433027613820443436950625134848), SC_(0.7753018644983064466789149137745955189962284479515283944248195284891378115756060218238051413235590034e143), SC_(0.4642912229762422197867113989629203323387822302562218882951901566972386179556563049374865152304991776e-9) }, + { SC_(98.12041473388671875), SC_(96.12041473388671875), SC_(0.9473606987607607444162359033381187331616413605914796182148290306820635206055067013063380990272026731e152), SC_(0.5673290334621938796334557435615629674436183735623090299121721865800802055227599217464685843771893237), SC_(0.7225004274703044512801883071183307227132605141660395473832575297605861967285419098961806443941917625e152), SC_(0.4326709665378061203665442564384370325563816264376909700878278134199197944772400782535314156228106763) }, + { SC_(98.12041473388671875), SC_(98.12041473388671875), SC_(0.8125117040501215495901912543897995656017673674978463794419908130380244834825786707561141646853676885e152), SC_(0.4865744170498709703442065095897757442101073480034036518069836488507185420422249108418259636845307825), SC_(0.8573494221809436461062329560666498902731345072596727861560957474046252338514699404464045787360267471e152), SC_(0.5134255829501290296557934904102242557898926519965963481930163511492814579577750891581740363154692175) }, + { SC_(98.12041473388671875), SC_(100.12041473388671875), SC_(0.6803564871832928177159582514744978657280803772975073660113670706072234550293769642186209286816285035e152), SC_(0.407432975410884100980901523989665724125993095817062210669172889587378725311547568392472868883197767), SC_(0.9895046390477723779804659589819515901468214974600117995867194898354262623046716469838978147397659321e152), SC_(0.592567024589115899019098476010334275874006904182937789330827110412621274688452431607527131116802233) }, + { SC_(98.12041473388671875), SC_(196.2408294677734375), SC_(0.553168185375483171311911317425422099669113043593090421980236738034294414866142668511758051956328719e138), SC_(0.3312659817550235805717646856318195369118825209718113222350421009178599909376141034823064329939271353e-14), SC_(0.1669861126231059664014570455624736336761727620536522474467650629538429914966668268258370081994709318e153), SC_(0.9999999999999966873401824497641942823531436818046308811747902818867776495789908214000906238589651769) }, + { SC_(98.12041473388671875), SC_(9812.041015625), SC_(0.2346250772246972934171285657447916944577522845825685409951114003454529013915430270537003652031158959e-3873), SC_(0.1405057423872452651825780465087118987148174626297156633481913580232931698194660556817189936822231592e-4025), SC_(0.1669861126231065195696424210456449455874901874757519165598086560442649717334048611202518743421394436e153), SC_(1) }, + { SC_(99.29168701171875), SC_(0.992916882038116455078125), SC_(0.3597624564984979874650854926866432905161310445950019636523602570162960992596525061377901113302937769e155), SC_(1), SC_(0.001860653680996480746120215693416169775474692575384950751232870362171917307754109381576689713381564001), SC_(0.5171895086290775861902886429200427445322214598498490011747917328426230694453350912549248682639434057e-157) }, + { SC_(99.29168701171875), SC_(49.645843505859375), SC_(0.3597624563660405669769966065476653256904599130972006072640997946387738493048496378318045373246759746e155), SC_(0.9999999996318197797033279445461782059086398697320519541274375216503024650752574302018488206145517109), SC_(0.1324574204880888861389779648256711314978013563882604623775222499548028683059855740056178023196625975e146), SC_(0.3681802202966720554538217940913601302679480458725624783496975349247425697981511793854482890744472973e-9) }, + { SC_(99.29168701171875), SC_(97.29168701171875), SC_(0.2039595298602704488808504417746175401883689267588590015231184635430435875756193943407960954331784377e155), SC_(0.5669283333379784789854031798208565520520003304176385930356300549361939017465670842801981648578905589), SC_(0.1558029266382275385842350509120257503277621178361429621292417934732525116840331117969940158971153392e155), SC_(0.4330716666620215210145968201791434479479996695823614069643699450638060982534329157198018351421094411) }, + { SC_(99.29168701171875), SC_(99.29168701171875), SC_(0.1750797832530988328169132173893130174254008496321055685339008114105910726769212926522925729047997561e155), SC_(0.4866538464216590454440676436349334932426876959021907449396188196024282900170669737839801733323471724), SC_(0.1846826732453991546481722752973302730907301949628963951184594456057050265827312134854975384254940208e155), SC_(0.5133461535783409545559323563650665067573123040978092550603811803975717099829330262160198266676528276) }, + { SC_(99.29168701171875), SC_(101.29168701171875), SC_(0.1467702746048460278502892487691477658037913099545341024587246861819735300178044798974726957500010696e155), SC_(0.407964399713450354129594185814006095866732327668751744622880206051640575152975771178319565882907657), SC_(0.2129921818936519596147962439174955247123397346404678611936355708343225692418480262403174155802927073e155), SC_(0.592035600286549645870405814185993904133267672331248255377119793948359424847024228821680434117092343) }, + { SC_(99.29168701171875), SC_(198.5833740234375), SC_(0.827233542896868997011855796813781815677230400991992891565280334025260219053460972781573951373944216e140), SC_(0.229938818782866162381957384742067701211139315001140649983601537152353780603212112398035629790115604e-14), SC_(0.3597624564984971602315425958176462786603342308131862864219592650234045339793184808775710578693209953e155), SC_(0.9999999999999977006118121713383761804261525793229878886068499885935001639846284764621939678788760196) }, + { SC_(99.29168701171875), SC_(9929.1689453125), SC_(0.4834473233080081830333768520751663665093597177735535847660483721488578903585873065526523207939684243e-3919), SC_(0.1343795925826480955658960684191085655544382968324780717244341336895034665163230020619295313734211649e-4073), SC_(0.3597624564984979874650854926866432905161310445950019636523602570162960992596525061377901113302937769e155), SC_(1) }, + { SC_(99.40981292724609375), SC_(0.994098126888275146484375), SC_(0.6189775403998407011012861882761402733097287676441233200787688479850177921372028259997245685694001147e155), SC_(1), SC_(0.00208738650682762943074724179328328460912087074928959890241928233000629188305710213804783747970955094), SC_(0.3372313808800301725169188483181072887659421985588169372890476556137167360016957658877023326983095951e-157) }, + { SC_(99.40981292724609375), SC_(49.704906463623046875), SC_(0.6189775401772136033366649694131709554114237751328974114695223637149822231246713201702283730746409055e155), SC_(0.9999999996403308953329536449926347585079614442743745335075024035068298900441595001383387493915938425), SC_(0.2226270977646212188629693178983049925112259086092464842700355690125315058294961954947592092115827498e146), SC_(0.3596691046670463550073652414920385557256254664924975964931701099558404998616612506084061575015153272e-9) }, + { SC_(99.40981292724609375), SC_(97.40981292724609375), SC_(0.3508911365196629713996826314769176339475002271815756817668854924735257948695597303600379465355294383e155), SC_(0.5668883176164969556694640046035019373021062926401136236228527719055084133507101313260179116199909852), SC_(0.2680864038801777297016035567992226393622285404625476383118833555114919972676430956396866220338706763e155), SC_(0.4331116823835030443305359953964980626978937073598863763771472280944915866492898686739820883800090148) }, + { SC_(99.40981292724609375), SC_(99.40981292724609375), SC_(0.3012327110073060776126306088558402484398597921259981479632252878490593671505499604951644728373842357e155), SC_(0.4866617790569895164132848585800606033635106037347255456377686770273865390342095779746840038072262761), SC_(0.317744829392534623488655579420300024869868975518125172115543560135958424986652865504560095732015879e155), SC_(0.5133382209430104835867151414199393966364893962652744543622313229726134609657904220253159961927737239) }, + { SC_(99.40981292724609375), SC_(101.40981292724609375), SC_(0.2525536615874421367012932901172485860763539011272499932099422653784982044920184787105406746658177969e155), SC_(0.4080174886867464334217982943121703482051615723869957786212134749545282348319943206732155228552149625), SC_(0.3664238788123985643999928981588916872333748665168733268688265826065195876451843472891838939035823178e155), SC_(0.5919825113132535665782017056878296517948384276130042213787865250454717651680056793267844771447850375) }, + { SC_(99.40981292724609375), SC_(198.8196258544921875), SC_(0.1371819884134727259345696989796477150536656151060715801081402111868202863481570951651604961881278798e141), SC_(0.221626762620267814217739611891735278077275735293365054216933274355798919338201866535892704439999524e-14), SC_(0.6189775403998393292814020535488809276127389711669727834226177872692167107350909577968610869984484631e155), SC_(0.9999999999999977837323737973218578226038810826472192272426470663494578306672564420108066179813346411) }, + { SC_(99.40981292724609375), SC_(9940.9814453125), SC_(0.1194537579446871083493681851309120071876520743662587465911793406448948030112600502063890936876032829e-3923), SC_(0.1929856095707828218066317814300956090965211451849739733633670381338185644181153034168965828385051012e-4078), SC_(0.6189775403998407011012861882761402733097287676441233200787688479850177921372028259997245685694001147e155), SC_(1) }, + { SC_(99.6479034423828125), SC_(0.996479034423828125), SC_(0.1848618324328595326256540103756933748634832912163837099714564642354930615866313317180770173409626267e156), SC_(1), SC_(0.002632953621713545975680045402254573025958139457581454220024431257252884916204475441566275959699470982), SC_(0.1424281901278791824660099798410885257699748667114052276410912168756372599058364270087640660099318927e-157) }, + { SC_(99.6479034423828125), SC_(49.82395172119140625), SC_(0.1848618323694318986984968527056010536947721607403919764188529025226665743038734891777793577541211654e156), SC_(0.9999999996568916736763733473241955787224548174526161914240157740209114383969351598000863202596909474), SC_(0.6342763392715715767009232116871113047599173355260356171282648728275784254029765958684146128176885942e146), SC_(0.3431083263236266526758044212775451825473838085759842259790885616030648401999136797403090526350547118e-9) }, + { SC_(99.6479034423828125), SC_(97.6479034423828125), SC_(0.104781143510080106941519063115430082168881879110811778245289071826214589716454123584899890589776219e156), SC_(0.5668078809514984818732949250616079106146259355202233070637680474174180977553905187864349475271238675), SC_(0.8008068892277942568413494726026329269460141210557193172616739240927847187017720813317712675118640764e155), SC_(0.4331921190485015181267050749383920893853740644797766929362319525825819022446094812135650524728761325) }, + { SC_(99.6479034423828125), SC_(99.6479034423828125), SC_(0.8996813603114861425627742217275710021870970554377666868921695606836039683900496541598731785012627279e155), SC_(0.4866777249101670793371012779886767047310287873694062698229024013112932567958949261113829499504654837), SC_(0.9489369640171091836937658820293627464477358567260704128223950816713266474762636630208969949083635387e155), SC_(0.5133222750898329206628987220113232952689712126305937301770975986887067432041050738886170500495345163) }, + { SC_(99.6479034423828125), SC_(101.6479034423828125), SC_(0.7544659013596046014875316445704815685260451593376435295742314736115164671432240751181442400434537482e155), SC_(0.4081242144094947811955420069383153567301560395689175929907159931951304506349246950413365552505599538), SC_(0.1094152422968990724769008459186452180108787752826193570140333168743414148723089242062625933366172518e156), SC_(0.5918757855905052188044579930616846432698439604310824070092840068048695493650753049586634447494400462) }, + { SC_(99.6479034423828125), SC_(199.295806884765625), SC_(0.3804006384186390812353329092798841093741132631690706197243637647942568433128668478754826060017677696e141), SC_(0.2057756506101917034700047476092601152101401495116289370474041581162582830156798739943260060771748412e-14), SC_(0.1848618324328591522250155917366121395305740113322743358581932951648733372228665374612337044741147512e156), SC_(0.9999999999999979422434938980829652999525239073988478985985048837106295259584188374171698432012600567) }, + { SC_(99.6479034423828125), SC_(9964.7900390625), SC_(0.6187187441149196707967788811980241646983120637234991013972314808151116439559127711068191156963192852e-3933), SC_(0.3346925300762848381679977351230198692364721942446516591127645420968259313810798749854292537402422257e-4088), SC_(0.1848618324328595326256540103756933748634832912163837099714564642354930615866313317180770173409626267e156), SC_(1) } + } }; +#undef SC_ + + + diff --git a/test/igamma_small_data.ipp b/test/igamma_small_data.ipp new file mode 100644 index 000000000..9a915b80b --- /dev/null +++ b/test/igamma_small_data.ipp @@ -0,0 +1,264 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 252> igamma_small_data = { { + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(0.165048164480104120332981665342231281101703643798828125e-13), SC_(31.15790848492937617968754572910879626038987427321665501824062445965678033809696860327421033588997389), SC_(0.5142555520027874508595595722328287870710653491133268223717400674935981376413784737279829921742056631e-10), SC_(605883754914.8750136902267543620760601500284208480879474455026885251060577270869941538181411625849707), SC_(0.9999999999485744447997212549140440427767171212928934650886673177628259932506401862358621522444918976) }, + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(0.825240808847993445596102901617996394634246826171875e-12), SC_(27.24588549611682625963801859326817650865189920983978484217386169027034380426371292313397641222047523), SC_(0.4496883316923336685099678252541612612557662391990416220973173325702496188138998642060577791819560088e-10), SC_(605883754918.7870366790393042821255872858690405998259225088795587011728204964734306876513968427252046), SC_(0.9999999999550311668307666331490032174745838738744233760800958377902682667429750381186100131967398492) }, + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(0.1485433412558301302652807862614281475543975830078125e-11), SC_(26.65809886043765184861833815671322602877461879268583897860494287446522932950747972178867249013415618), SC_(0.4399870213191659715445515622143744278264487110204265430288897607131180016977120873571283497579633446e-10), SC_(605883754919.3748233147184786931452677224239910797032029260335045647417393122785451624076300440705085), SC_(0.9999999999560012978680834028455448437785625572173551288979573456971110239286881998302287908816411206) }, + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(26.55273831558914007164077488340563437622573207289701433865490306535179619489488183113436762977413663), SC_(0.4382480648941352919111303365625055162099824756683096022952805756000873913572998244587797811350613329e-10), SC_(605883754919.4801838595669904701228309957315827322520896458223292046917791213919782970202279347248134), SC_(0.9999999999561751935105864708088869663437494483790017524331690397704719424399912608642700171714774703) }, + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(0.1815529822833672479731603743857704102993011474609375e-11), SC_(26.45742811190195049533727267568504724879726922010500532361189289376431739839451074960681764629918148), SC_(0.4366749875024881266012524590033039215380435741991291470061983416947539967123967894565937878826126117e-10), SC_(605883754919.5754940632541800464263332034521698596805524986143382197347892929794570935205990162523633), SC_(0.9999999999563325012497511873398747540996696078461956425800870852993801658305246003287603206716974201) }, + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(0.33009632353919737823844116064719855785369873046875e-11), SC_(25.85959113506148614558473903473463000631861077966174981641096804406377885881031868583310284349737406), SC_(0.4268077980959374477897019960137392551284102019659605405168797702263707908186064406194329606569899375e-10), SC_(605883754920.1733310400946443961788668444025871021592109390575937269357141426799956331047910800260781), SC_(0.9999999999573192201904062552210298003986260744871589798034039459483120229773629209181393555554219737) }, + { SC_(0.165048161769598689119220580323599278926849365234375e-11), SC_(100), SC_(0.3683597761710089903097254101781941823648659605630519043409070893481216676279802460792521302677220332e-45), SC_(0.6079710392694377664924030954068840443869972626811800754595244480141084992747696378316144427416336236e-57), SC_(605883754946.0329221751561305417636058791372171084778217183509837671756731964340490869383638804970089), SC_(0.9999999999999999999999999999999999999999999999999999999993920289607305622335075969045931159556130027) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(0.206542072399111542591043644279125146567821502685546875e-13), SC_(30.93364168989949088662225783062562821275952768601909775986922127020315858008889124877888658573404498), SC_(0.6389098545336816619892930503520603759746754856217578076876091016189435240618029150566633773613501762e-10), SC_(484162851275.7955760243922734768637389008721827255248363671120740129064287230363410221766509320371893), SC_(0.9999999999361090145466318338010706949647939624025324514378242192312390898381056475938197081115165694) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(0.103271037554808486902402364648878574371337890625e-11), SC_(27.02161867158789878931620977320803696878717217632829425949582007780935030750254752153846820592898784), SC_(0.5581101193257189977881105127089252324891172434544119082354068522575555605654075175919360728270166827e-10), SC_(484162851279.7075990427038655741697869582897739694971918768028775132798299154301492947629946592776076), SC_(0.9999999999441889880674281002211889487291074767510882756545588091764593147742444439434592478580586656) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(0.185887871935463966366341992397792637348175048828125e-11), SC_(26.43383198338951447575879438498253053353949275687755657420480627486005125327251472959382229622556174), SC_(0.5459698510954741536654673991582696808426815259889022512892158090257346409981992469903104624210780402e-10), SC_(484162851280.2953857309022498877272023465152804047448712962536151985708437183794483489930274512222535), SC_(0.999999999945403014890452584633453260084173031915731847401109774871078419097426535900180074918231649) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(26.32847149106800163239094870586891526845820120393763229343432134045290266659697616892501543756547086), SC_(0.5437937136236059464756234080125646641077276944217179074523941203826804633593467352842472989896410538e-10), SC_(484162851280.4007462232237627310950480256288956698261628491935394793413286527865969356685660118910604), SC_(0.9999999999456206286376394053524376591987435335892272305578282092547605879617319536640653260888398335) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(0.227196278283769981243267466197721660137176513671875e-11), SC_(26.23316133035754938556791779149687928744103895259996107320150619846356673193156719633839660209741738), SC_(0.5418251577863868103129995208921398586460271143353281036151920862215441160993128135190632372203888294e-10), SC_(484162851280.4960563839342149779180789400009316508433251005312106995741437947759328703339749844776792), SC_(0.9999999999458174842213613189687000479107860141353972885664671896384807913778455883900687182653599296) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(0.4130841502192339476096094585955142974853515625e-11), SC_(25.63532431054814484821636003256695231324162132983547239417046128926165869713281292469158572207801148), SC_(0.5294773079214937290303064802551754036436189663559802177554527074961441840149493021783730734829548128e-10), SC_(484162851281.0938934037436195152696366989308586250427427232956993786051887039778409051327292561244901), SC_(0.9999999999470522692078506270969693519744824596356381033644019782244547292503855815985050693994395465) }, + { SC_(0.20654207510961697380480472929775714874267578125e-11), SC_(100), SC_(0.3683597761717143751552636437264047570124229557729804467214558990981423263608011608473991574457783741e-45), SC_(0.7608179255751063148390974562103337563986691710549682719520828630510110088500246233042380098159938087e-57), SC_(484162851306.7292177142917643634859967314978109382843640527628119966039356180842359626956245681566386), SC_(0.9999999999999999999999999999999999999999999999999999999992391820744248936851609025437896662436013308) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(0.693323098043506502730082274865708313882350921630859375e-13), SC_(29.72264969834645019434398391335764181503761657632206675371880634359092033544076863168741139909711396), SC_(0.206073993293117147372414902249210966803119325754493450865229927096149608694728859685200779850164835e-9), SC_(144232900121.1921430521268665012736046760265611169427879527355317858388116749258141965866398426913323), SC_(0.9999999997939260067068828526275850977507890331968806742455065491347700729038503913052711399307582724) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(0.34666154495599510454439950990490615367889404296875e-11), SC_(25.81062670541879230446808925169387675802578353778167356850954822607902657677034794738407159230904849), SC_(0.1789510346003750462291870271302182045706001584982927847421887098868836775584657333644555074456521954e-9), SC_(144232900125.1041660450545243911494993376903261739546209912759249710480697924377079552570605269946721), SC_(0.9999999998210489653996249537708129728697817954293998415017072152578112901131163224415342662517363926) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(0.62399078959440856806395458988845348358154296875e-11), SC_(25.2228400267255531152618952281379932924411003086900105211922184450178012365594286472819270244402403), SC_(0.1748757738375517094192041844150274466299904575196806663645205533642878644093005573820531742584469496e-9), SC_(144232900125.6919527237477635803556933612462096395393042203675880183653995734989332954679798270968166), SC_(0.9999999998251242261624482905807958155849725533700095424803193336354794466357121355906994422341737114) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(25.11747952498746142361430978769868892247381913853328273208683820438926506797390005227064273526406535), SC_(0.1741452851513514725594924878654616781351273183021538570238001845190604483585022624330711346611073093e-9), SC_(144232900125.7973132254858552720032788016855140095065853905243158074707798141274694640535084221081009), SC_(0.9999999998258547148486485274405075121345383218648726816978461429761998154809395516414977371831620222) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(0.762655390229571850113643449731171131134033203125e-11), SC_(25.0221693565736957916669074328284162882489616607965901908363256370029803994953262974955021243250512), SC_(0.173484477746702186443587051705780058873940943597213522737037471163070412731277762961794229093460155e-9), SC_(144232900125.8926233938996209039506811565557866437314428682610083487212923815137541325320821768832415), SC_(0.9999999998265155222532978135564129482942199411260590564027864772629625288369295872687222366544446007) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(0.1386646179823980418177598039619624614715576171875e-10), SC_(24.42433234455626606652839207807430844427730364925975696592664901632954072382133322942821025011393797), SC_(0.1693395357023288385073728566291731739740606678779075780232085702485998742830572554333144562303028157e-9), SC_(144232900126.4904604059170506290891965113098944877031008797978415736309690021871938082060752449505334), SC_(0.9999999998306604642976711614926271433708268260259393321220924219767914297514001257169427441829599575) }, + { SC_(0.6933230899119902090887990198098123073577880859375e-11), SC_(100), SC_(0.3683597761799895153698730317431021061042018369548001861605671269716523992047277326892588602148934185e-45), SC_(0.2553923382214215324259769271798839593251938655786213829878574777436759121294679586832258717739493913e-56), SC_(144232900150.914792750473316695617588589384202931980404528689238763377628503146861501522530642738347), SC_(0.9999999999999999999999999999999999999999999999999999999974460766177857846757402307282011604067480613) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(0.1335144560014878134523996777716092765331268310546875e-12), SC_(29.06735096752258056536729325061718779507401036453523687090019139448425341843714626101878460014693126), SC_(0.3880911362773696280056967206382892877595887264967036046564614404793100056365061158173422079796396869e-9), SC_(74898260328.90196362049089872824818260580093489311271918958613340011303560956530877930271362425243055), SC_(0.9999999996119088637226303719943032793617107122404112735032963953435385595206899943634938837970499892) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(0.6675722474813738926968653686344623565673828125e-11), SC_(25.15532801227009481634854499485265368220513892065216833299624544453507393957181578125784549362418071), SC_(0.3358599771482345384131641676265650413741820004409137933250390439848599040126047403716522597790232213e-9), SC_(74898260332.81398657574338447726693086156546900598159063346920193801698155951448825816804410401336966), SC_(0.9999999996641400228517654615868358323734349586258179995590862066749609560151400959873952592431883364) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(0.12016300281192382470862867194227874279022216796875e-10), SC_(24.56754136200937290895309015643013692734899956077677422972131844692787149062503339568078156875330453), SC_(0.3280121760450920899039398349140014268680649487989970733413326617285218105317582118133799690911870165e-9), SC_(74898260333.40177322600410638466238569998798576083772999334459604129190855712169070711482648959043358), SC_(0.9999999996719878239549079100960601650859985731319350512010029266586673382714781894682417878015279996) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(24.46218083195176010649364880366207427410534536757083785426245216990214243684390452554861676210010203), SC_(0.3266054607281534602931256455991079205489544580937849675334684529926510308105892248315380939599068615e-9), SC_(74898260333.50713375606171918712182705275604841408138418655053241675077483414741976089595535972259839), SC_(0.9999999996733945392718465397068743544008920794510455419062150324665315470073489691894107747833819512) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(0.146865887507008352486082003451883792877197265625e-10), SC_(24.36687069942703621636474649884830858586360466981647453600019531910473642024678190766643820074464995), SC_(0.3253329327405981029506500408194777649632511116495356043137860479733163371392142797229444467383356232e-9), SC_(74898260333.60244388858644307725072935756981410232312488430489573501303168494482577749307797760477695), SC_(0.999999999674667067259401897049349959180522235036748888350464395686213952026683662860785719891986523) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(0.267028898992549557078746147453784942626953125e-10), SC_(23.76903365163368637714726357106366774067839544251260729637154239753687551861168627655362242529563612), SC_(0.3173509443080758666399794602743594938889364162005174867456317123127003777846638219901410439648592437e-9), SC_(74898260334.20028093637979291646821228535445494750833411160876297464168460651268667912817360871759272), SC_(0.9999999996826490556919241333600205397256405061110635837994825132543682876872996222153361776248584503) }, + { SC_(0.1335144494962747785393730737268924713134765625e-10), SC_(100), SC_(0.3683597761909002985725154019522360034186479878704276119409642960482091227291688533040722883793123849e-45), SC_(0.4918135273507806264975899117308317251680883012601122164361829316280219055323411283684053482677186779e-56), SC_(74898260357.96931458801347929361547585641812268818672955375301049482232670547704679643061756772917213), SC_(0.999999999999999999999999999999999999999999999999999999995081864726492193735024100882691682748319117) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(0.163998168886160533563867147677228786051273345947265625e-12), SC_(28.86170546048550903250791364354103174711941404864916093092211628926819150433026199321887056484982165), SC_(0.4733266956017863549356785857349564001556987523623975875099289832122935994033637594200382623146680339e-9), SC_(60976289136.04755502069917679752872010453068861352193805048851530605928360922572999879710208038628732), SC_(0.9999999995266733043982136450643214142650435998443012476376024124900710167877064005966362401936201746) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(0.8199908634043406863156633335165679454803466796875e-11), SC_(24.94968243368988607111279754392317756380227270251133614160416796123146030362622611392135558822201802), SC_(0.4091702328131829335658100117857600486348378315159431029057398228899356970648604050012328736288061661e-9), SC_(60976289139.9595780474947997589238362041485427968390793966263400953772319372624611995011379596838023), SC_(0.9999999995908297671868170664341899882142399513651621684840568970942601771100643029351395946129763398) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(0.147598357147504799513626494444906711578369140625e-10), SC_(24.36189575728456295003132599921358413686026766230814153211787426629972226773292289925946223440568955), SC_(0.3995306387274283086974308494460402604093332809792523127454217860117734923592787164330424168375165454e-9), SC_(60976289140.54736472390012288000530774885813622378108443682953470486352563219419923539444117434569565), SC_(0.9999999996004693612725716913025691505539597395906667190207476872545782139882265076407212831812495514) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(24.25653525342437768437658896325365651337860545156693453226968518332587217946888910687140766162073795), SC_(0.3978027457168313583469989604217433831468153842115388681555701205453351568796200287599732708870424631e-9), SC_(60976289140.65272522776030814566004478481806384726274664757074170471171471516804932365847496673375022), SC_(0.9999999996021972542831686416530010395782566168531846157884611318444298794546648431203799708543335312) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(0.18039798821423147501263883896172046661376953125e-10), SC_(24.16122508327652617519590199369744375455719285280943888605192992266988552275227025898634199908794285), SC_(0.3962396763426015344461764850760900065502450679538123401043299184582485648669591657876624688537040695e-9), SC_(60976289140.74803539790815965484073175437427660608415924632823735092946997582403598037509381461881589), SC_(0.999999999603760323657398465553823514923909993449754932046187659895670081541751435133040833826657752) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(0.327996345361736274526265333406627178192138671875e-10), SC_(23.56338807315918986464012703190798660164528420519711882806071454392864939259008026372492229560609768), SC_(0.3864352586204850403684059827048015121160790089543124664914957341357702119371734421550813514771496104e-9), SC_(60976289141.34587240802549596539650671616373375899606789394055740892068535456527211053728380988023559), SC_(0.9999999996135647413795149596315940172951984878839209910456875335085042658642297880628265574593230393) }, + { SC_(0.1639981726808681372631326667033135890960693359375e-10), SC_(100), SC_(0.3683597761960824456973440458971288797268387514608391776033349781792370202528015534132545784138354776e-45), SC_(0.604103301858629274831499974509457097887751372447864471729689966861315882847250252661528747298098097e-56), SC_(60976289164.90926048118468583003663374807172036064135209876931646078531745279657745775371022166012385), SC_(0.9999999999999999999999999999999999999999999999999999999939589669814137072516850002549054290211224863) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(0.573015918568786641884571508853696286678314208984375e-12), SC_(27.6106472098755373678615892957552188514392208308914370574671979807337950954199264753856743145463171), SC_(0.1582134097247930761916926996566173725184435209521595402428776353387575980092254391589228116683289136e-8), SC_(17451521469.77907015894501840505217305875316969497911380106683817749809146341898826620777197321561114), SC_(0.9999999984178659027520692380830730034338262748155647904784045975712236466124240199077456080148841959) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(0.28650797012641504579733009450137615203857421875e-10), SC_(23.69862417251378038952616559964959814674605472568467557908323168060288798167427651813769915675210729), SC_(0.1357968941336058470934858983350904062268525035853043297384472091732464433008740851052453939768886969e-8), SC_(17451521473.6910931963067753833875967548587903996722799062735996558820577635498953799534219304635863), SC_(0.999999998642031058663941529065141016649095937731474964146956702615527908267535566991259148553582807) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(0.51571434622754708243519417010247707366943359375e-10), SC_(23.11083750844232066541856517547638235383999162398345525748390753321873059549928332132438508557815942), SC_(0.1324287828536846267698242639611554089942976407747771190023041814922702096049274020442481045996545458e-8), SC_(17451521474.27887986037823510749519717903200619257834300797481997748138191093405276612841512727690037), SC_(0.9999999986757121714631537323017573603884459100570235922522288099769581850772979039507259791638448496) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(23.00547699293291896306076158113169930688197033801512141590130210336739204595275152660573883159863242), SC_(0.1318250503050632310467450763954205952944767000377994361106999773822397935549399220964208254390314e-8), SC_(17451521474.38424037588763680985300077337668923953636429394315381906398734078539131567494692199554662), SC_(0.999999998681749496949367689532549236045794047055232999622005638893000226177602064450600778642169471) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(0.63031753427811310075412620790302753448486328125e-10), SC_(22.91016681326285911036482433387052840486554444935997510626386091855902542360680226771757896854966052), SC_(0.131278907782852111998502208711041568433039798572145878940423672650587434270536833762803149353282314e-8), SC_(17451521474.47955055555769666254893802063786014155279018259830012870142852559375793802089618088370649), SC_(0.9999999986872109221714788800149779128895843156696020142785412105957632734941256572946316619783931176) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(0.1146031880505660183189320378005504608154296875e-9), SC_(22.31232981335317761005464626276302124640839375679570163414658599113571272797681619866501215525057952), SC_(0.1278532064765270331994687322853490603421051572461068122465332422383363707192556887865982096498100553e-8), SC_(17451521475.0773875554673781628591160917453673000099408751625736008187034530170706336508822499362733), SC_(0.9999999987214679352347296680053126771465093965789484275389318775346675776166362928074431117407366075) }, + { SC_(0.5730159402528300915946601890027523040771484375e-10), SC_(100), SC_(0.3683597762656143147412501990407375886204955849371483318579496462042737326648157786420372764098334912e-45), SC_(0.2110760235551445314127435252766919837846905764866388122369133762360673813723384183492506286200476097e-55), SC_(17451521497.38971736882055577291376235450838854641833463158991545869967512941153316273678033616204007), SC_(0.9999999999999999999999999999999999999999999999999999999788923976444855468587256474723308016215309424) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(0.111373128601488513567119298386387526988983154296875e-11), SC_(26.94608951197243134264035228299247915597093305955796311160699789459126371976157505899213677920236715), SC_(0.3001070409577089374471433333168337852827278186934568015384061941034070683970493772030484549124621713e-8), SC_(8978826136.539249151558690958757920155035752518348236486400575053128754985659304498206510791901974558), SC_(0.9999999969989295904229106255285666668316621471727218130654319846159380589659293160295062275614104797) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(0.55686566469148601754568517208099365234375e-10), SC_(23.03406647879892918456558105575371863530305442269150174427313454029552311246381074717418197886141832), SC_(0.256537614821776708824059139549998779356958231710371237032476212530912880637154932898525580680102855e-8), SC_(8978826140.451272184732193116832691382274513039016115123267036420462618339955045105504275103719929359), SC_(0.9999999974346238517822329117594086045000122064304176828962876296752378746908711936284506706103796113) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(0.100235819644467483158223330974578857421875e-9), SC_(22.44627981546780063160345897923689021141531165996069633283338363222849323115786681745128136554007249), SC_(0.2499912506019022749286681756424641219890798049130802945055014051352240986468246367658776210980053346e-8), SC_(8978826141.039058848063321669794813458791341462903857885997841831902369248022074986810219033442829972), SC_(0.9999999975000874939809772507133182435753587801092019508691970549449859486477590135317536319374212056) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(0.11137313293829720350913703441619873046875e-9), SC_(22.34091930009065878629576607605680580436877648663609077185455946183181441544231989449089475001167062), SC_(0.2488178175332722466925933740793066027557435701541721453448621185264537582128112706950444385398308279e-8), SC_(8978826141.144419363440463515102506361971425869950393059322447392881193418418753802525765956403216588), SC_(0.9999999975118218246672775330740662592069339724425642984582785465513788147354624178718872926458537691) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(0.122510446232126923860050737857818603515625e-9), SC_(22.24560912054024123074565891630486743833987547514585902039186337009010714935512360613339125060171874), SC_(0.2477563182034598438094638076524734763804195471685307986068331938451454169665770157070003654374647795e-8), SC_(8978826141.239729542990881070652613521723364235979294070812679144343889510160461068612962244760720087), SC_(0.9999999975224368179654015619053619234752652361958045283146920139316680615485458303342298425263856288) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(0.2227462658765944070182740688323974609375e-9), SC_(21.64777212138456539709954300290877830494692393926642861465677572074653039209947495921652032925777053), SC_(0.2410980202447920305932252703615156913733213749270754409716280508079090497684447685131824708511669405e-8), SC_(8978826141.837566542146556904298729435119453369372245606692109550078977159504037825868610891677591008), SC_(0.9999999975890197975520796940677472963848430862667862507292455902837194919209095023155523144651361825) }, + { SC_(0.11137313293829720350913703441619873046875e-9), SC_(100), SC_(0.3683597763575344087226111398438938272509906635605890873692809855359236412596468330566588977515855312e-45), SC_(0.4102538234402647767186847892287525864482147683686713825107594110488699493470720178477194808618775589e-55), SC_(8978826163.485338663531122301398272438028231674319169545590178388378218471527957078201274301714155051), SC_(0.9999999999999999999999999999999999999999999999999999999589746176559735223281315210771247413551785232) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(0.1421470688552084471467651383136399090290069580078125e-11), SC_(26.70211336646544908568240934740043958323639463745235945376703935302866237608631974783048288968757413), SC_(0.3795627228655345499045214618788383433085518008940228005127553183005835414783613474277186904928698803e-8), SC_(7034967254.82543787961887250933704225938674433524740319124325542058211886668755137856799005981116172), SC_(0.9999999962043727713446545009547853812116165669144819910597719948724468169941645852163865253078665254) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(0.71073535945487265053088776767253875732421875e-10), SC_(22.79009035383229651088936044328462880259311619388223140223713350762876228767939634136594532363547752), SC_(0.3239544612193807687729140248051409422455042244368366945302869240880534466665426655075594886171421569e-8), SC_(7034967258.737460892252025084130091163502555115890681634813383472112024712087451466974913466275699286), SC_(0.9999999967604553878061923122708597519485905775449577556316330546971307591194655333345733445142324547) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(0.1279323591507619539697770960628986358642578125e-9), SC_(22.20230373430588518574599517163009252297492442144115684527666225796714704831903638172648260276164122), SC_(0.3155992465324578590322413700410647275858761790240137605372526685389607372650696292286102238187052205e-8), SC_(7034967259.325247511778436409273456435157091395508873407254458029072495961749066706335273425915162007), SC_(0.999999996844007534675421409677586299589352724141238209759862394627473314610392627349303707304442389) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(0.14214707189097453010617755353450775146484375e-9), SC_(22.09694317561163084788256496036530953147092347410452097344643885306928594283321908310393706604685225), SC_(0.3141015770412164346813985170246651814652255069022700252246142790736798295834518551840832933978997408e-8), SC_(7034967259.430608070472690747136886646421874387012874354591093900902719366646927811821090724537707544), SC_(0.9999999968589842295878356531860148297533481853477449309772997477538572092632017041654814477498402666) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(0.1563617846311871062425780110061168670654296875e-9), SC_(22.00163296062632740578891355475648697965306819368909767715932731224145604717237971042081472014338911), SC_(0.3127467702429592568034533791768014054286353115690853318814380713131703123472920670767278141117677138e-8), SC_(7034967259.52591828545799418923053805203069693883072963500651719718983090747475770748193009722082989), SC_(0.9999999968725322975704074319654662082319859457136468843091466811856192868682968765270793288235113682) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(0.2842941437819490602123551070690155029296875e-9), SC_(21.40379599739374373170217506790634548509305249060068813622155560444561248971012412754083900239701767), SC_(0.3042486928630915968194348013502314618692864026682572961369916654475821954744566036682222707414007156e-8), SC_(7034967260.123755248690577863317276538880838433390745338094926738127602615270601264944185680100805608), SC_(0.9999999969575130713690840318056519864976853813071359733174270386300833455241780452554339629092963528) }, + { SC_(0.14214707189097453010617755353450775146484375e-9), SC_(100), SC_(0.3683597764098492386336152539104254151921797155538759249293362379340307895860280821652955424982969586e-45), SC_(0.5236126362337035988875078331237656531466590134182069202925202356413518519426323906077032829275023807e-55), SC_(7034967281.527551246084321595019451606787183918483797828327255097939308981082598500804278846513718819), SC_(0.9999999999999999999999999999999999999999999999999999999476387363766296401112492166876234346853340987) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(0.3800632551731464303657048731110990047454833984375e-11), SC_(25.71863780614397288010147521631315344171623755848822764992072153765456518475074886687422245642758907), SC_(0.9774709294596037940916676527820114124746134691931423205846689548871880716474893103846780972798987393e-8), SC_(2631140914.74519355244884312710983403304386510582491051924104929466536754431055551933332874616599262), SC_(0.9999999902252907054039620590833234721798858752538653080685767941533104511281192835251068956867848609) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(0.1900316293212966911596595309674739837646484375e-9), SC_(21.80661482796232558126385760559778653885688101888695584253422767102912585622853214064975119524812173), SC_(0.8287893093297442617394600080481358743788505091844266098099379969589135302470974626994509955407754548e-8), SC_(2631140918.657216530630490425947451643759232008684267058842321102051861410935994847855545472390463881), SC_(0.9999999917121069067025573826053999195186412562114949081557339019006200304108646975290253725518200384) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(0.34205693832944916721316985785961151123046875e-9), SC_(21.2188281519184091074197349089638501692947807572844549039905336200431000395335389236811368570794375), SC_(0.8064496973764485044921577079125390935718035401464332127026971226261749475158712656444796387312508743e-8), SC_(2631140919.245003206674406899791574340393168378246367320444822040595555461922020664550538689359078219), SC_(0.9999999919355030262355149550784229208746090642819645985356678729730287737382505248412873431034514386) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(0.380063258642593382319319061934947967529296875e-9), SC_(21.11346765339790192582476806127896153063255462874174973171428786920445101329085630010938751413829286), SC_(0.8024453319355788231071856129480638656939376132861242781342055390942782000359263652635592251266388019e-8), SC_(2631140919.350363705194914081386541188078057016908593448987527212871801212760669690793221312930827562), SC_(0.9999999919755466806442117689281438705193613430606238671387572186579446090572179996407363469129993452) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(0.418069578955737597425468266010284423828125e-9), SC_(21.01815748769354753681541483317942613666797384579945147563505042437069525425951965979572590147559531), SC_(0.7988229427188479013538313237093901854500203182219240131819647654827907272005447879997228211158577692e-8), SC_(2631140919.445673870899268470395894416177592410873174231929825468951038657594425449824557953244489175), SC_(0.9999999920117705728115209864616867629060981454997968177807598681803523451720927279945521195516743636) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(0.76012651728518676463863812386989593505859375e-9), SC_(20.42032047884090736154803370761882936092356585970991996993591888602022484329289757651983529816877165), SC_(0.7761013545416957369345649204508277521115402268643724891878670606753809701791569445124111913554009282e-8), SC_(2631140920.043510879751908645663275541738189186617582218019356974650170195944895860791180036520379778), SC_(0.9999999922389864545830426306543507954917224788845977313562751081213293932461902982084305544267412856) }, + { SC_(0.380063258642593382319319061934947967529296875e-9), SC_(100), SC_(0.3683597768143000588501045612366266587026324139543635389694328925328044330110662978123616511521290451e-45), SC_(0.1400000171596142853099853759042719201591767991391272459690176841978253808328348886856967958303393352e-54), SC_(2631140940.4638313585928160072113092493570185475411480773609171677717890231150161428700390225483129), SC_(0.9999999999999999999999999999999999999999999999999999998599999828403857146900146240957280798408232009) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(0.6091627202664540163823403418064117431640625e-11), SC_(25.24689000992704732787135724866261800970811047823684316497350536840230928933317343744190229076667277), SC_(0.1537946420212282290388870648090621015361541890092574171072313575177103301876506923092618393186023679e-7), SC_(1641597476.338518053413636274259836985269533883400419746654418949287301096265401001071611212702220699), SC_(0.9999999846205357978771770961112935190937898463845810990742582892768642482289669812349307685591137124) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(0.30458136013322700819117017090320587158203125e-9), SC_(21.3348670616764575694084620346450007447466560409056884083295587423721196027401461035733919807191439), SC_(0.1299640566038377327023800043707913228319508430302493810014011606711116895510053575891216993291925631e-7), SC_(1641597480.250541001664226032722732199287151148361874183985573705931247722295590687664638546570731009), SC_(0.9999999870035943396162267297619995629208677168049156969750618998598839328888310448994642405935860174) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(0.54824644823980861474410630762577056884765625e-9), SC_(20.74708040475856333272056970156465261678339942423265416913327089251443532761708244171523215357783191), SC_(0.1263834794139344425118232321183354522083053328091741784506671242578844229824808801717866523696617757e-7), SC_(1641597480.838327658582120269410624532367499276325130800658607945127535572153274962787702208428890836), SC_(0.9999999873616520586065557488176767881664547791694667190825821549332875742115577017519119823301646011) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(0.6091627202664540163823403418064117431640625e-9), SC_(20.64171989052690173164125914922577325555846255495170730858843701991262424300992897560083460560989909), SC_(0.1257416624391284537089974684973411094534338190854010147454289269632881992524698950579098446179922177e-7), SC_(1641597480.943688172813781870489935084706378637550067669939554805672369444755086047394855674543288384), SC_(0.9999999874258337560871546291002531502658890546566180914598985254571073036711800747530104937183963693) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(0.67007899229309941802057437598705291748046875e-9), SC_(20.54640971201268516165538039975180650613799708589369843474345136577620599951087683234445613253354479), SC_(0.125161068362796291184557743972318612158944968768911412842186021481421920766907364029319759229230024e-7), SC_(1641597481.038998351327998440475813834180345386970533138997563679517355098891504290893907817799666858), SC_(0.9999999874838931637203708815442256027681387841055031231088587157813978518578079233092635965779033421) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(0.1218325440532908032764680683612823486328125e-8), SC_(19.94857271938925318892629116896502172280225286269393318404939530994624847021543151944491594933174886), SC_(0.1215192682744917095180907842201967631726418753982474528205547736066322224640476863215267020074856382e-7), SC_(1641597481.636835343951430413204903064967130170306277362197328930211411154721461820189353130699207041), SC_(0.9999999878480731725508290481909215779803236827358124601752547179445226393367777535952313673603355112) }, + { SC_(0.6091627202664540163823403418064117431640625e-9), SC_(100), SC_(0.3683597772037626949569747697482535611970023191945352353852558467830678560993595818027632381112498452e-45), SC_(0.224391043997089009006504796203547864580900840098025131345108130163352143724096374336291528176609545e-54), SC_(1641597501.585408063340683602131194233932151893108530224522902337057043769710735520670624030835493708), SC_(0.9999999999999999999999999999999999999999999999999999997756089560029109909934952037964521354190991599) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(0.1022164124175883870293546351604163646697998046875e-10), SC_(24.72929796168890307773053947770197995742396358732380012416282100875772478941865703735421562814163124), SC_(0.2527740137900208072419854593989979018870051288632542079134894518498984221938923689132829272969019949e-7), SC_(978316440.2785138474851210288009664937862366753513412595356375465751281415103498675729580690720758623), SC_(0.9999999747225986209979192758014540601002098112994871136745792086510548150101577806107631080717582274) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(0.5110820655573888871003873646259307861328125e-9), SC_(20.81727504334552751593922417967989654614866927899547854531496033112624345288005347883731107762520171), SC_(0.212786718694132400110619554444385167959227259906753424768221953049311736322141481157530899012218798e-7), SC_(978316444.1905367658284965905922817918083200866266355678639591254229888191418312041115616275889804128), SC_(0.9999999787213281305867599889380445555614832040772740093246575231778046950688263677858518836812897266) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(0.919947729105530243032262660562992095947265625e-9), SC_(20.22948837946149081510940283102401715574362207151558976721095182417003224262558175686865084967739547), SC_(0.2067785742448887368851715908089275811839899812745751344337437720349125190938734268899724092740108311e-7), SC_(978316444.7783234297125332914221031404641994770316827753438479035269973260980424143660333495576406408), SC_(0.999999979322142575511126311482840919107241881601001872542486556625622796508748090612657310442296629) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(0.1022164131114777774200774729251861572265625e-8), SC_(20.12412787820932792787004758754943218994412838742785769353702257560445887047194497166136852635520988), SC_(0.2057016169920909769212256552832601257804726029795106314647013450918863636019822220851706070951506741e-7), SC_(978316444.8836839309646961786614583839387844428311764594315799772009265746636157865196701347649229641), SC_(0.9999999794298383007909023078774344716739874219527397020489368535298654908113636398017777909234014033) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(0.1124380588635176536627113819122314453125e-8), SC_(20.02881766102301393831207531728882281429973282998729105722538170112309033733724834693034977083898903), SC_(0.204727390138150080177445996456666728315290298815939180255768096508032052219381722620656885512093383e-7), SC_(978316444.9789941481510101682194306541993938184755720168721466135125674491449843196543667594959417196), SC_(0.9999999795272609861849919822554003543333271684709701184060819744231903491967947780618277373756099251) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(0.204432826222955554840154945850372314453125e-8), SC_(19.43098071309310856739850006938387356508620516746723173564368303966669585412142301124841461724966083), SC_(0.1986165152902537844517703143761223797636884600083407953619183269710795671567659392502869176952039793e-7), SC_(978316445.5768310960809155391330059021043430676890996793922059350942661106013788028701920951778768732), SC_(0.9999999801383484709746215548229685623877620236311539991659204638081673028920432843234060744178528284) }, + { SC_(0.1022164131114777774200774729251861572265625e-8), SC_(100), SC_(0.368359777905853469344081578473447669941351384460280853428932926883636508105262794753424256125050729e-45), SC_(0.3765241525429219209910825009890207595821295804071954576284646002830176921376604633493543610222973032e-54), SC_(978316465.007811809174024106531505971488216632775304846491077892832095680923993078526566180451757333), SC_(0.9999999999999999999999999999999999999999999999999999996234758474570780790089174990109792404178704196) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(0.2881922998854147266456493525765836238861083984375e-10), SC_(23.69276173287444713600362539532735897074401039338002364459951233632390084933308389649146365396311848), SC_(0.6828071324950950523363279903511969227148981012853760479406773886973120694747625118050536296546829893e-7), SC_(346990518.8092916442712551078592277123048325251606036468328712719807157479670526021253962414418257934), SC_(0.9999999317192867504904947663672009648803077285101898714623952059322611302687930525237488185242755283) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(0.144096146126315716173849068582057952880859375e-8), SC_(19.78073900691445016095885639389753583417329796709626635762393586357077977251532141015520193165795698), SC_(0.5700656526336706765629520015182516359846483872666794203819670490539025121689011616105759423044434712e-7), SC_(346990522.7213143702312520829039967137346556617313160731166285589562922207201736789431587277780875157), SC_(0.9999999429934347366329323437047998481748364015351612733320579618032950946097487831098838380688316345) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(0.259373056366030141361989080905914306640625e-8), SC_(19.19295240283519277001248098401216667945156155882223441569781060870989377430967855446669293260451802), SC_(0.5531260957269927644107691820793416661314585991395812482915927983214683347999464998067057683658614732e-7), SC_(346990523.3091009743105094738503721236200248164530524813906605008824174755810596771488015834665965148), SC_(0.9999999446873904273007235589230817920658333868541400860418751708407201678531665200053500184703914593) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(0.28819229225263143234769813716411590576171875e-8), SC_(19.08759186777013603816792587749223489455280334218748173096139370012582277962819162273541650773187906), SC_(0.550089686310605479374765797849467387524892977968085364683140072885555277963830423179634902496072806e-7), SC_(346990523.4144615093755662056949272301399566013518106980254131856188343841651306718302885151978729396), SC_(0.9999999449910313689394520625234202150532612475107022031914635316859927114444722036169576811800847717) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(0.3170115281392327233334071934223175048828125e-8), SC_(18.99228167262945621502648058021899664954575156309545732994364898814631108103455965848611522527445993), SC_(0.5473429199447724449365598406622974379563743180761029215331144943244495512522245779895163601792014344e-7), SC_(346990523.5097717045162460288363725274131948463588624771174375866365790961446423704239204794471742221), SC_(0.9999999452657080055227555063440159337702562043625681923897078466885505675550448747775422001942970733) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(0.5763845845052628646953962743282318115234375e-8), SC_(18.39444472868215481925071667663763768425283982135035921869937076240377447660477049785366490448039564), SC_(0.5301137199891637530589417121122432352185484755011395918818709838756987883697419864604246167509751675e-7), SC_(346990524.1076086484635474246121364309945538116517742188625356978808573218871789748537096400796245429), SC_(0.9999999469886280010836246941058287887756764781451524498860408118129016124301211630258013531182625026) }, + { SC_(0.28819229225263143234769813716411590576171875e-8), SC_(100), SC_(0.3683597810673910878259453261772515633910704553160155236681772136493967971708576626919997117688756639e-45), SC_(0.1061584498560825341452551983689185819173187227077225650262751236783018804856022567589731517239725586e-53), SC_(346990542.5020533771457022438628531076321914959046140398445351355128369964650081252842074518800947888), SC_(0.9999999999999999999999999999999999999999999999999999989384155014391746585474480163108141808268127729) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(0.47627769783620266252910369075834751129150390625e-10), SC_(23.19038812059928706191522283690527385656309360115541794293373312151507378827895094855876257121879682), SC_(0.1104506437454029732773617676876454573576667359402730267024881849761444919487044475307980205841895399e-6), SC_(209961524.6486165380590072031267839293878743974072625991569323662721967549685473587581377213470662443), SC_(0.9999998895493562545970267226382323123545426423332640597269732975118150238555080512955524678683459398) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(0.238138841979207427357323467731475830078125e-8), SC_(19.27836555303852664717482651321926247182418302115228361998419920630183910868506757364234977717289466), SC_(0.9181855321347166845654648049560415056080198046558664624253121699011682798723257077569007180350152305e-7), SC_(209961528.5606391056197676178671802530738857821461731791600666892217306701817820383520210962634790384), SC_(0.9999999081814467865283315434535195043958494391980195344133537574687830098831720127674292231362492534) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(0.428649915562573369243182241916656494140625e-8), SC_(18.69057894480439921146292761698368931301869064556029920307753752008313567583325198990769357802891858), SC_(0.8901905676146021099392395487493978523199372342624156094924211669240791528864596453711967113373659302e-7), SC_(209961529.1484257138538950535790791493094589409516655547520511061283923564004854712038366799981352375), SC_(0.9999999109809432385397890060760451250602147680062765737584390507578833075920847113540354617306833051) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(0.47627768395841485471464693546295166015625e-8), SC_(18.58521843926516063616159117385745026961037444537118571666682847295485604865340615389551277900606232), SC_(0.8851724818449150137839659430028178647541159466498367093865133518897261306127836051466836650821406931e-7), SC_(209961529.2537862193931336288804155924356979843599817549411645925391014035287650983836825160103160365), SC_(0.9999999114827518155084986216034056997182135245884053350163290613486648110273869387216394841862959044) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(0.523905452354256340186111629009246826171875e-8), SC_(18.48990826861409754915914054745333969856149250183160368187697338734474029092506594451708752846133756), SC_(0.8806330710988985343637930814217292584929923611643492845725318071702064179698045205498127683421126027e-7), SC_(209961529.3490963900441967158828662188398085554088636984807466273289564891388808561120227253887412871), SC_(0.9999999119366928901101465636206918578270741507007638835650715427468192829793582030195479438772826146) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(0.9525553679168297094292938709259033203125e-8), SC_(17.89207132558489254872898191821300829504848015417588185120468252595323909749380952581872497962796603), SC_(0.8521594315595473893570887456010527755175426628801151643709441342537892612282540380918156624991023537e-7), SC_(209961529.9469333330734017163130248480801399589218760461364684580012473505303820495432791440871038359), SC_(0.9999999147840568440452610642911254398947224482457337119884835629055865746210738771745961897014375183) }, + { SC_(0.47627768395841485471464693546295166015625e-8), SC_(100), SC_(0.3683597842647898539638319646575348876461744866014745590506707335656926352325103438525782815849877969e-45), SC_(0.1754415453953704746110331976528379492219515551934825926073073006650744888653580533475753852837452549e-53), SC_(209961547.8390046586582942650420067662931482539703561999439905249411400225197891823813562800938596156), SC_(0.9999999999999999999999999999999999999999999999999999982455845460462952538896680234716205077804844481) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(0.8854135480351743581195478327572345733642578125e-10), SC_(22.57033335902441974267993744902233404760258140104854321621061470853074508808052628280158164776222873), SC_(0.1998407841543141012248490727052655357431167147700169043625632815223933493745191773694679750144185685e-6), SC_(112941554.6684546040980603096308264738863542135073524582948704259914857828870349999674177527113406245), SC_(0.9999998001592158456858987751509272947344642568832852299830956374367184776066506254808226284282727799) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(0.442706760139799371245317161083221435546875e-8), SC_(18.6583111233059802174057509736510213335259196911232853352922340829115561700075570811943199831974457), SC_(0.1652032101858949796302289955659783448274610131859022277392967256843795115700613344316475613920488389e-6), SC_(112941558.5804768398164998349050129492576669275840141682201283069098664085062239180403869543186022891), SC_(0.9999998347967898141050203697710044340216551725389868140977722607032743156204884299386655665460463279) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(0.796872168251638868241570889949798583984375e-8), SC_(18.0705245605242648102377992831995972097341588803833027513799335193795868602291484760468416630743721), SC_(0.1599988684620408736481999579580135345328362406716867645680406556468973459111645286790976591132531006e-6), SC_(112941559.1682634025982152420729646397090910513757749789601108908221669720381932278187955594660806092), SC_(0.9999998400011315379591263518000420419864654671637593283132354319593443531026540888354713191406273324) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(0.88541352027959874249063432216644287109375e-8), SC_(17.96516406309874169586027073544801751692494361289095971992798011086267991084164702767842073224648442), SC_(0.1590659923680337611740761466732621951074525099314948573726344274806655009183601948304105735107350149e-6), SC_(112941559.27362390002373835645049318746067074418499024645245392227412038055510017720629700783450154), SC_(0.999999840934007631966238825923853326737804892547490068505142627365572519334499081639805167835721578) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(0.973954872307558616739697754383087158203125e-8), SC_(17.86985389978732891421375296552633629159861817518313999673519481069116467676882685685258650242248151), SC_(0.1582221032915610444173915208486543787458430568115829248643843717701438660747299147452653328600508464e-6), SC_(112941559.3689340633351511380970109573823519695113156841602736454669056807266154112791171786603357698), SC_(0.9999998417778967084389555826084791513456212541569431884170751356156282298561339252700852529882069275) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(0.17708270405591974849812686443328857421875e-7), SC_(17.27201700306457480169007292747088068426541706139981969244913752412474379026769377057212755710992149), SC_(0.152928774551704942314303679930836765822366796968046157545881586041172919661263558073523024045365045e-6), SC_(112941559.9667709600579052506206909954378075768445167979435939497529629672930362977802502649407947152), SC_(0.9999998470712254482950576856963200691632341776332030319538424541184139588270803387364419247759584121) }, + { SC_(0.88541352027959874249063432216644287109375e-8), SC_(100), SC_(0.3683597912199841112095417550101783502819370608688387755489825879659256088289529750480251391576150657e-45), SC_(0.3261507411404175804375974373269334288186158482865090659836236265501496777030439782340057986262186784e-53), SC_(112941577.2387879631224800523107639229086882611099338589750538509821163802082383330387352768241321059), SC_(0.9999999999999999999999999999999999999999999999999999967384925885958241956240256267306657118138415171) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(0.23050329700513572106501669622957706451416015625e-9), SC_(21.61353463267935449352048389341309488642778138447582971204795317556836678756247536371135745036186673), SC_(0.4981991047054799163092965657908029954911828896480061528870779913970164723377903285957423316894210177e-6), SC_(43383305.31046017371427919608210692543663676807964178467812499051588124043120872686622345022899824395), SC_(0.999999501800895294520083690703434209197004508817110351993847112922008602983527662209671399583124858) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(0.115251648225012104376219213008880615234375e-7), SC_(17.70151346558980219074553873559802545062953610440442392274875326936887722479450448611110773259772437), SC_(0.4080257260260808603668407358210353739699202098264519660278529383367635766312111119708629863286580163e-6), SC_(43383309.22248134080383149885705208325170620387788706474953077981508114663069828963419432782924796172), SC_(0.9999995919742739739191396331592641789646260300797901735480339721470616632364233687888880252365992234) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(0.2074529703577354666776955127716064453125e-7), SC_(17.11372703645314648023233574191699349392156986053582762334085501327543868406684188522246783970598128), SC_(0.3944770548933568744202378879845935305785660886680773995523830392370690108533996110412933013807743745e-6), SC_(43383309.81026776994048720937025507693273816058585330861812707922297940272413683036185692871788785461), SC_(0.9999996055229451066431255797621120154064694214339113319226004476169607629309891466003889549225980929) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(0.23050329645002420875243842601776123046875e-7), SC_(17.00836658306192736527943254555798064290466310600614818592383354255417300588036696814436354636963132), SC_(0.3920484616788299015946145032998463764986093846826987933117874627651585929723682604959056859914410468e-6), SC_(43383309.91562822333170632432315827329175101160276006314780651664000087344540250854833184579599214794), SC_(0.9999996079515383211700984053854967001536235013906153173012066882125372348414070276317395003310627004) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(0.253553622542312950827181339263916015625e-7), SC_(16.9130564581039310496954238697527131665325887870067307826985495683889321255845920433317560168872345), SC_(0.3898515318508115388604206648010335220059794932861661087930643810285091034522888416710893418749840686e-6), SC_(43383310.01093834828970263990716694909701848797483438214722391986528484761064338884410677060859967743), SC_(0.9999996101484681491884611395793351989664779940205067138338912069356189714908965477111583251662672292) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(0.4610065929000484175048768520355224609375e-7), SC_(16.31521970098461681782418424242540259470780067227015303761725169309472242873380410724275262478747214), SC_(0.3760711973419645980949823165656473046482927073589198601872549332887107518773674786869797262683016502e-6), SC_(43383310.60877510540901687177840657642432905979962249688380166494658272290485308569489470669760306953), SC_(0.9999996239288026580354019050176834343526953517072926410801398127450667112892481226325213093941855633) }, + { SC_(0.23050329645002420875243842601776123046875e-7), SC_(100), SC_(0.3683598153531167924132257395642715834888369073597665999403953429895858402238700449439230691342550711e-45), SC_(0.8490815284831955188977848628330511140350836114650287916474006276648459764910645244927747543859253126e-53), SC_(43383326.92399480639363368960259081884973165450742316878559488721071762358634977486479967178327234673), SC_(0.9999999999999999999999999999999999999999999999999999915091847151680448110221513716694888596491638853) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(0.593924909253473742865025997161865234375e-9), SC_(20.66703921191792709768295714831476745107828089229145366896325821357014019311457006331215176651168259), SC_(0.1227466980927991544984574286397941972519965288725356960941458114892383148304630279215771587304737682e-5), SC_(16837124.06519073299227488937851746531753021666590378542294984406922191547756008534632370110203567575), SC_(0.9999987725330190720084550154257136020580274800347112746430390585418851076168516953697207732690739523) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(0.2969624546267368714325129985809326171875e-7), SC_(16.75502071711546687877552816312899511421900051247249059838831263479099924633381620801923527753146366), SC_(0.9951224500103467742981873190183609851784990903160019575948043540834172877160003690539156838774895778e-6), SC_(16837127.97720922779473510828594645050330255352518416524191291464416749425670103212707755639495216473), SC_(0.9999990048775499896532257018126809816390148215009096839980424051956459165827122839996309371196311067) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(0.5345324183281263685785233974456787109375e-7), SC_(16.16723467078082807983390949109229897523429303925060117597873173640665366231398001836241367218011656), SC_(0.9602123713905740946575873907953276442736031477079535087166644150898196354801366643025255847268699409e-6), SC_(16837128.56499527412937390722756512253999869250989163846380233705374839264104661614691374605177377008), SC_(0.9999990397876286094259053424126092046723557263968522920464912833355849101803645198633356888094296657) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(0.593924909253473742865025997161865234375e-7), SC_(16.0618742655130566376615398513143221457641905990919775418902869158682613921792873781312284950599302), SC_(0.9539547542622917210518837837076878650520297551922445808660128001980926996675087224598890817236834732e-6), SC_(16837128.6703556793971453493999347623179755219799940786224259711421932131794388862816063862829589472), SC_(0.9999990460452457377082789481162162923121349479702448077554191339871998019073003324912775314996536636) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(0.6533174001788211171515285968780517578125e-7), SC_(15.96656418556725877411773825764856491499216232874447797425629890501029062664823835764675885358191078), SC_(0.9482940510099550163867520298229688291761802379970900581812748772612166500471186405495792892165888367e-6), SC_(16837128.76566575934294321294373635598373275275202234896992553877618122403740965181265540676742858868), SC_(0.9999990517059489900449836132479701770311708238197620029099418187251227387833499528813594418580427217) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(0.118784981850694748573005199432373046875e-6), SC_(15.36872781507158936238774950132072563313067515901113068784207978569757247703295934697364970511496732), SC_(0.9127870585831879647328972334655501767736868198217547260893471431003681346809412699098680198385937853e-6), SC_(16837129.36350212983861262467372511231157203461350951870327282519040034335012780142793441744053773715), SC_(0.9999990872129414168120352671027665344498232263131801782452739106528568996318653190587300818741359511) }, + { SC_(0.593924909253473742865025997161865234375e-7), SC_(100), SC_(0.368359877133779627789829551660082000613875450854323935272781868541342659113566885072004686000538901e-45), SC_(0.2187781140995117606201452236455813018212902951985671539811835384949649582989793027274879052399928624e-52), SC_(16837144.73222994491020198706147461363229766774418467734604363589870050125787072680095630895061953683), SC_(0.9999999999999999999999999999999999999999999999999999781221885900488239379854776354418698178709704801) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(0.116676501793477882529259659349918365478515625e-8), SC_(19.99179062922895135279135641886320891001581815937183643556509236650684411373876662714850250165891516), SC_(0.2332572378933380896614852404043955731764578465775493974926690084565287424804883371298924493977218701e-5), SC_(8570685.384721901300483028821204717822157533079822661474976225929986450750353145762058562609147949176), SC_(0.9999976674276210666191033851475959560442682354215342245060250733099154347125751951166286805909513369) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(0.5833825156287275603972375392913818359375e-7), SC_(16.0797761652926913291348182928175289155012625988611007066795778694965500481440904574753561437645726), SC_(0.1876132180363857639789676233333532906846598828609086431214348342210527724267593406047436181114213655e-5), SC_(8570689.29673636523674305247774284386783752759437822198571195481550094776064721135673473228229430707), SC_(0.9999981238678196361423602103237666664670931534011713909135687856516577894722757324065939359977568908) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(0.1050088513920854893513023853302001953125e-6), SC_(15.49199068278999056649859842334433759637560196333218447549803510123386873556476009557038640123831097), SC_(0.1807551421058621310807213821771561126961165858814107707981132554842734011637703760338376719425404298e-5), SC_(8570689.884521847739443815113962713341028846720038857514628185997043716023328523936065094187264049597), SC_(0.9999981924485789413786891927861782284388730388341411858922920188674451572659883622962396456459774245) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(0.1166765031257455120794475078582763671875e-6), SC_(15.3866303621595121903055194214640004819643700201239951503589815755084802176013688518707845330302695), SC_(0.1795258346451342009067250034158853144786430547677529568118461283673972754030713169757889866521204212e-5), SC_(8570689.989882168369922191307041715221365961131270800722817511136097241748717041899456337886865917805), SC_(0.9999982047416535486579909327499658411468552135694523224704318815387163260272459692868302262383651242) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(0.1283441548594055348075926303863525390625e-6), SC_(15.29132035994571657638039300287563535180084117803963253552413504942013521352660403189447452392334253), SC_(0.1784137907931195630664561454318510163315338031686619212723404195189619449748018216498706604663238592e-5), SC_(8570690.085192170583717805232168133809731091294799642807180125970943767837062045974221157863175926912), SC_(0.999998215862092068804369335438545681489836684661968313380787276595804810380550251981783485517094816) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(0.233353006251491024158895015716552734375e-6), SC_(14.6934845613070024760494225435742907723124682224201517272497450593684039976083820917023846937113556), SC_(0.171438451280492692951103596089400926290752279997685233733607411600878884237477302606935736342097826e-5), SC_(8570690.683027969222431905563138593111075670783172598426660934245333757888793261892443098055265757124), SC_(0.9999982856154871950730704889640391059907370924772000231476626639258839912111576252269739154651618625) }, + { SC_(0.1166765031257455120794475078582763671875e-6), SC_(100), SC_(0.3683599745150272892400101851084383480541082747012424563695810823445735085141349784587435139634448406e-45), SC_(0.4297895661242704953447061916098768107011138017136912219248455921577410514737583061430570539091243596e-52), SC_(8570705.376512530529434381612561136685366443095640820478452686980051528017187074392460420341614021638), SC_(0.9999999999999999999999999999999999999999999999999999570210433875729504655293808390123189298886198286) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(0.237996733432055407320149242877960205078125e-8), SC_(19.27891673014500384712975954133906727908916527670596021251361724382202588449078822005139406210651264), SC_(0.4588320041682795593560853371393206798770048257652114149928167287258758275442354159184341750549756364e-5), SC_(4201718.29714702201837632903347815093723979460295951469666887255317157666500550243664833189975821244), SC_(0.999995411679958317204406439146628606793201229951742347885850071832712741241724557645840775727840859) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(0.118998372045098221860826015472412109375e-6), SC_(15.36691046244503019303216484318429298749214642591994684691039336237661370327741195067531752721925024), SC_(0.3657275159207103939695479393292554275178977950013236054952077816443786958781500453981083921610508537e-5), SC_(4201722.209153289718349983131072849092014086199978365482682238156395458110417683650024601275834747327), SC_(0.9999963427248407928960603045206067074457248210220499867639450479221835562130412184995459869785992116) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(0.2141970725233477423898875713348388671875e-6), SC_(14.77912606880405554320844579784391642177532601345234307603372558058988212196241643263517065797786068), SC_(0.351738436807596921667056270205114676221693090312843767336644235194061285388943755508505919901508354e-5), SC_(4201722.796937683359324632954791894432390651916798777950286009033063239897149264965020119315981616569), SC_(0.9999964826156319240307833294372979488532377830690968715623266335576480593871461105624448842042705906) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(0.23799674409019644372165203094482421875e-6), SC_(14.67376597396105649453036812443393894917032230518286562033759901077193801319022210687524045783721146), SC_(0.3492309005101563306261817049418309990117558274322812638483854942787654081882300992770309551270324434e-5), SC_(4201722.902297778202323681632869567842368124521802486219763464729189809715093373737214445075911816709), SC_(0.9999965076909948984366937381829505816900098824417256771873615161450572123459181176990071991691878782) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(0.261796429867899860255420207977294921875e-6), SC_(14.57845611939566069440237955049938520426980148453585722510870212146447641337367902080343147878809691), SC_(0.3469625566919142729058458937777665456140511546453599670387706066336210824338287507795926701398807221e-5), SC_(4201722.997607632767719481760858141776921869422323306866771859958086699022554973553757531147720795758), SC_(0.9999965303744330808572709415410622223345438594884535464003296122939336637891756617124921737467728518) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(0.4759934881803928874433040618896484375e-6), SC_(13.98062149012918366428511114800871268266807678547036949113325558045006169779368583987639389614502636), SC_(0.3327342852103207684752363058948584309242224498454602151301549811709032038532266697414493119576702341e-5), SC_(4201723.595442262034196511878126544267594391024048005932259593933533240036969689133750712074758378401), SC_(0.9999966726571478967923152476369410514156907577755015453978486984501882909679614677333025564018378888) }, + { SC_(0.23799674409019644372165203094482421875e-6), SC_(100), SC_(0.3683601807561903453487227917946548385573708423867483923712851961583870164304112447598463530755600432e-45), SC_(0.876685357159490739543651112558346477678429021168165332787394475993615415533427560190914746185518374e-52), SC_(4201737.576063752163380176163237692276307073692124791034268904310598475138308595132817784902903804044), SC_(0.9999999999999999999999999999999999999999999999999999123314642840509260456348887441653522321570978832) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(0.4684659327125473282649181783199310302734375e-8), SC_(18.60167128432713126049714022480406049280333523742253441670062191512753054890362577998854409315927306), SC_(0.8714251809823585100435744204889726642363504946616200983606323205190597998352053381235925565434475928e-5), SC_(2134607.719702335830924452634528139632079027539349189946222122988726342566669414211039830503031253245), SC_(0.9999912857481901764148995642557951102733576364950533837990163936767948094020016479466186885703684354) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(0.2342329707971657626330852508544921875e-6), SC_(14.68968005301031976643331035840593236260593963861875850251422903256292992153558859166979463970637483), SC_(0.6881616658581063689027483359750385205817311632040590464481660589786955565901260462148502140670390048e-5), SC_(2134611.631693567147735946698358006030207157736744788749998037175119225131270041579077018821780706698), SC_(0.9999931183833414189363109725166402496147941826883679594095355183394102130444340987395377917268011473) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(0.4216193474348983727395534515380859375e-6), SC_(14.10189769843010546942720544113574262212174033914815624894996026913136790937284038362109117220840236), SC_(0.6606260569932264669724311527857042192425033889106042448471224318271263526523299301090977515234908494e-5), SC_(2134612.219475921727950243704462923300396898220944088220600290739387988562832053741825226870484174196), SC_(0.9999933937394300677353302756884721429578075749661108939575515287756817287364734767006988516153338386) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(0.468465941594331525266170501708984375e-6), SC_(13.99653795154726872064911358532555715075250091376154209367453177360967827288291670991444029822683104), SC_(0.6556903103556117701756044692650324280448295052811354149178811463849060684472815052010971899919429068e-5), SC_(2134612.324835668610786992482554779110582369590183513607214446014816484084521690231748900577135048177), SC_(0.9999934430968964438822982439553073496757195517049471886458508211885361509393155271849479320446785637) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(0.5153125357537646777927875518798828125e-6), SC_(13.90122846717327900573443124534289408072046032132905084924993091192893336556677221712553463128503422), SC_(0.6512253844142573792983300047299138761413093258190021203127553426086026396006741487672698566897127579e-5), SC_(2134612.420145152984776707397237119093245439622224106039705690439417345765266597547893393366040715119), SC_(0.9999934877461558574262070166999527008612385869067418099787968724465739139736039932585122707013214624) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(0.93693188318866305053234100341796875e-6), SC_(13.30339585924124739759212031089212333847672402485460266025103522751038192551102394791302682656440127), SC_(0.6232189552820929425724063540209542716098976591597168826685547888867254482172533948040105618796411538e-5), SC_(2134613.01797776091680831553954805354401618186596040251415387943831303018381803760364166257854851984), SC_(0.9999937678104471790705742759364597904572839010234084028311733144521111327455178274660519056985963154) }, + { SC_(0.468465941594331525266170501708984375e-6), SC_(100), SC_(0.3683605725479766827321071158248024610889871068121879014042431546717690351697299841424421003359745422e-45), SC_(0.1725644291273138168367812516546848163348272913613526632863050085876922548670669754108825141004909997e-51), SC_(2134626.32137362015805571313166836443613952034268442700039596714137157496209284728988147497905013814), SC_(0.9999999999999999999999999999999999999999999999999998274355708726861831632187483453151836651727086386) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(0.93827008385005683521740138530731201171875e-8), SC_(17.90702316214094572298659865912103321153538476862255045041710203807962909160247665121229985025903671), SC_(0.1680163335056838077398797008411230046919538979550375838318300926071514855201858944311370322393218397e-4), SC_(1065772.709193038698101423512783256447871465508899001686943348418032826098774871502989957411806859754), SC_(0.9999831983666494316192260120299158876995308046102044962416168169907392848514479814105567410513836118) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(0.46913504547774209640920162200927734375e-6), SC_(13.99506127642124776837836720764985109178153219137764302176667988451990936472253249223036783388726104), SC_(0.1313115452836965224479618717278241114458994619815289665069740362966873246648867053544221848734683184e-4), SC_(1065776.621154924417799378121014707919053585262751578931850777068454979658494598382934116393738876125), SC_(0.9999868688454716303477552038128272175888554100538018471033493025963703312675335113294644440469083498) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(0.8444430932286195456981658935546875e-6), SC_(13.40728284792705405921175202864328757097913666333569562548985300639212003935826065277746216166174085), SC_(0.1257965931012412025349983859851347622688710042404386876405001481125409386466765200867553617943513245e-4), SC_(1065777.208933352911993087287629886925617106065147106973798173345281857786283923747205955846644548351), SC_(0.9999874203406898758797465001614014865237731128995759561312359499851887459061353323479912154637617612) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(0.9382700909554841928184032440185546875e-6), SC_(13.30192381681008314644771732812408682463580041914793229749678135625390915881071603376782206792029161), SC_(0.1248080402887664648327282693160891934565219594910834019494607138418106440419781733009870372044594217e-4), SC_(1065777.314292384028964000051664587444817852408483351161561501338353507924494804294750574856284642092), SC_(0.9999875191959711233535167271730683910806543478040508916598050539286158189355958021826697931448859998) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(0.1032097088682348839938640594482421875e-5), SC_(13.20661497875025012762779384532818383022623122387119083035384233620286037680268403521088485551131337), SC_(0.1239137854829003644420967188331993911497101698402351477679546617792491648844782042025557437882226045e-4), SC_(1065777.409601222088797018871588070240720846818052546438302968481292527975543586302782573413221854501), SC_(0.9999876086214517099635557903281166800608850289830159764852232045338220750835115521795796370419387344) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(0.1876540181910968385636806488037109375e-5), SC_(12.60878637553901204491902216024675411864495322083008785555374949312567040765393745883052572611561811), SC_(0.118304535465916112568189714154308952719629521613669050921313209741268280054132615368513967803378903e-4), SC_(1065778.007429825300035101580359755322150558399330549479405943281385371052733555451529149793580983897), SC_(0.9999881695464534083887431810285845691047280370478386330949078686790258731719945867384630460350367092) }, + { SC_(0.9382700909554841928184032440185546875e-6), SC_(100), SC_(0.3683613712043972721284785441217690804271283553619040637700600414034391372851181449249753788454375212e-45), SC_(0.3456226444478972278783411373889022170828597871391079061470766426801423900748326644627836244326757172e-51), SC_(1065790.616216200839047146499381915568904677044283769941132427630737592049925418983706677931353491878), SC_(0.9999999999999999999999999999999999999999999999999996543773555521027721216588626110977829171402128609) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(0.1103985791672812410979531705379486083984375e-7), SC_(17.74435380867648812152933496485960258404476786406173463953011634554605933719259272711311375475803299), SC_(0.1958952753772566953498242883159414020023812695689979643011485485202188001854078620475897206530583608e-4), SC_(905790.4112795657874958983724894534951910792262926339613787307428128021213559866886812984349221420605), SC_(0.9999804104724622743304650175711684058597997618730431002035698851451479781199814592137950717386502682) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(0.5519929118236177600920200347900390625e-6), SC_(13.83240199524921665059220420848373304216701327641200330777099497738421402784766936501759673719510145), SC_(0.1527078544084987963856313110639561426635842499559565987476075848865420373992403312304836431670772084e-4), SC_(905794.3232313792147673693096202098710606211040472216111100625019341702832012960336046605304391596234), SC_(0.9999847292145591501203614368688936043857336415750044043401252392415113457962600759668768194225029971) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(0.993587264019879512488842010498046875e-6), SC_(13.24462490886106316287393487913916575705158663286235766831821349079415376982683222572107578879425981), SC_(0.1462188745651106776872810691146921473336713937031466336213028634135934579146848015983909268434307111e-4), SC_(905794.9110084656029208570278895392156279062194738651607557019547156568732615540544417998269601080242), SC_(0.999985378112543488932231271893088530785266632860629685336637869713658640654208531519840034264879967) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(0.1103985823647235520184040069580078125e-5), SC_(13.13926612806443380620890159824536270285898684727354039095364824370320538431486862617907709057838313), SC_(0.145055727819948523433548946373342543596620467207830016065730221064242728352586933273187223902751026e-4), SC_(905795.0163672463995502136929228201094309604120736507495729793192809039642099395664053993689588062401), SC_(0.9999854944272180051476566451053626657456403379532792169983934269778935757271647413066725556337275229) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(0.1214384383274591527879238128662109375e-5), SC_(13.04395751562867977601479924206537396455788261221552968013029646722097996898267084500789797820621899), SC_(0.14400353357944612109112828053740748994152953755309814198593266309410669228861155727365886727089781e-4), SC_(905795.1116758588353042438870251762894196987131778858075836901426326804464353548986031805401379186123), SC_(0.9999855996466420553878908871719462592510058470462446901858014067336905893307711388442725093726922333) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(0.220797164729447104036808013916015625e-5), SC_(12.44613028245889195314526377802303814639723486374610861628184568447768515751160901944018948547937381), SC_(0.1374036014696301636864284398259471275765181121693288907510605139360489228526085950515688702605826166e-4), SC_(905795.7095030920050920667565606403317555168738256342770047539910834631897301663696650061078464113391), SC_(0.9999862596398530369836313571560174052872423481887830671109248939486063951077147391404947240383896284) }, + { SC_(0.1103985823647235520184040069580078125e-5), SC_(100), SC_(0.3683616529178052381665881389699748020204071322833363349847998142740388515100968673648824635925300167e-45), SC_(0.4066663019392149181472916823511259317809127307013032060113010114362889372649124804879664896024455817e-51), SC_(905808.1556333744639840199018244183547936632710604976547517173551239095008271849113069998294100316003), SC_(0.9999999999999999999999999999999999999999999999999995933336980607850818527083176488740682190872692987) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(0.32917764514195368974469602108001708984375e-7), SC_(16.65155242578472125077865818017999223921392810199846477971403538583319099062102780473636257392323267), SC_(0.5481329253963683268485517924942329825131898981531211012970208366056272337630903039856717034480939281e-4), SC_(303770.1062626347931374589587424136375844975939417950799330311101763610026855930167267593351775462019), SC_(0.9999451867074603631673151448207505767017486810101846878898702979163394372766236909696009596915935406) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(0.1645888232815195806324481964111328125e-5), SC_(12.73972770521527538267822317137670519799596610146753097060923980135013513590328680257040948135671992), SC_(0.4193641552003057301013006606266192945920011495663818867412051935690589833761577054967821955490894716e-4), SC_(303774.0180873553625833270591774224408715388119037956108668402149719454857414477344677615011306387684), SC_(0.9999580635844799694269898699339373380705407998850433618113258794806430941016623842294499591904285528) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(0.2962598728117882274091243743896484375e-5), SC_(12.15196758548750614810816925548754529398909569781173658751755855407673854395668028093021932645444306), SC_(0.4000163691429033836867481155186122291085579015247606273990437494519571006295620896429093158084368877e-4), SC_(303774.6058474750903525616292313383300314428187741992666612233066531927591380396810742831413207936707), SC_(0.9999599983630857096616313251884481387770891442098475239372600956250548042899370437910353630884853472) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(0.329177646563039161264896392822265625e-5), SC_(12.04661176479999811140634155307317082012928547668049387292417363273546037783917473474959920690240891), SC_(0.3965482844427912545484725619799632230432394450139294606522796058003039464067230273188509518679162789e-4), SC_(303774.7112032957778605983310590407444059166785844203979039379000381141004162057985798293219409132227), SC_(0.9999603451715557208745451527438020036776956760554986070539347720394199696053593276972677719022316198) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(0.3620954203142900951206684112548828125e-5), SC_(11.9513058346871546854430268054271323428043892394229824368371646704537864389908357145944831129426804), SC_(0.3934110203040145469851919253885289281354550622190107396674969903577664000002359749940237063215353518e-4), SC_(303774.8065092258907040242943737883904443940034806576554153739870470763820901446469188494770570071825), SC_(0.999960658897969598545301480807461147107186454493778098926033250300964223359999976402500257320128883) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(0.65835529312607832252979278564453125e-5), SC_(11.35349588872610896328418097803638672688730240356916402932870797027235794435578328336447095263168748), SC_(0.3737324158032554751677632184579216486690362817196885886244001238843540197986299939621207201338024427e-4), SC_(303775.4043191718517497464532196157811900099205674935092337814955037765635186392819712807070691674934), SC_(0.9999626267584196744524832236781542078351330963718280311411375599876115645980201370006034645128381626) }, + { SC_(0.329177646563039161264896392822265625e-5), SC_(100), SC_(0.3683653721380312284826205368768214510441742859217687717386032933073829224777109467178511976182069205e-45), SC_(0.1212578766722560187765291681130619215149216547262060090468652488064353079918211357186902778217330973e-50), SC_(303786.757815060577858709737400593817576736807869896710032438686180518353256046760935721038779841092), SC_(0.9999999999999999999999999999999999999999999999999987874212332774398122347083188693807848507834527379) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(0.7517214584140674560330808162689208984375e-7), SC_(15.82526561764454728342966821589472139664724150322851707676102004489341962719271297708142489926523583), SC_(0.0001189624359255592237862815558880713087990446036924919297451377464603066416287689968160968864018086199), SC_(133011.5921247526357962961140535215356573850063967656547310417930455804934915615774106294070251964132), SC_(0.9998810375640744407762137184441119286912009553963075080702548622535396933583712310031828764352585812) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(0.375860736312461085617542266845703125e-5), SC_(11.9136711174867736236214905117854233020595342925902006208819680622720875863414628970824432555409585), SC_(0.8955801256011749182136346603310548654557058568185329217337255660386032244654301322159384759126826361e-4), SC_(133015.5037192527935699559222312256449554795941039762930474976720975631148236024286607094060068401375), SC_(0.9999104419874398825081786365339668945134544294143181467078266274433961396775534569867776319153204317) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(0.676549325362429954111576080322265625e-5), SC_(11.32594135190024678452441579889894896267064982164585841915236898476381380835673532183052606838012168), SC_(0.8513990254102399929452014271628757155054279541445707063427329024562379040764318665190921799104905263e-4), SC_(133016.0914490183800967950193059385314298189829884472373896994016966406230973804133882846579240272983), SC_(0.9999148600974589760007054798572837124284494572045855429293657267097543762095923568133473544750377556) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(0.75172147262492217123508453369140625e-5), SC_(11.22059097367312206653073895077567275460869589512040588102691631953165068957338656005947321526215693), SC_(0.8434795769015184423687469972049239605474093484775830456888644703398218908125781163514294606243344774e-4), SC_(133016.1967993966072215130129827866547060270449423737628422375271493058552604991967370464289768804163), SC_(0.9999156520423098481557631253002795076039452590651522416954311135529660178109187421883641275459281001) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(0.8268936653621494770050048828125e-5), SC_(11.12528990912070334842028256458211381512474226028542360283812420089076532037672003083652011247126413), SC_(0.8363155601580559427806131456374522701121867743686672003991362072258855893888535698270710264009848662e-4), SC_(133016.2921004611596402311234391728482649665288960085978245157159414244961458683934035756519299832072), SC_(0.9999163684439841944057219386854362547729887813225631332799600863792774114410611146430165695397630062) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(0.15034429452498443424701690673828125e-4), SC_(10.52751097678404353575292919405146988083574764759484244648238001487790069471777084676930229500190864), SC_(0.7913790392465455293988206610151183656909612886096098062466517289377091782971893578988250363352489437e-4), SC_(133016.8898793934963000437907925433789089008178906212884056720716856105090104940523527597191478006765), SC_(0.9999208620960753454470601179338984881634309038711390390193753348271062290821702810642094327174263602) }, + { SC_(0.75172147262492217123508453369140625e-5), SC_(100), SC_(0.3683725554432829067612872243280108437998671942257655208036546827649132063228372793002427800872935906e-45), SC_(0.2769147613850834797683717278051538844876953879427870920239713852456644247557063040183715178499272632e-50), SC_(133027.4173903702803435795437217374303787816536382685148755631107827186256239644421139047490234929653), SC_(0.9999999999999999999999999999999999999999999999999972308523861491652023162827219484611551230461205721) }, + { SC_(0.1511466689407825469970703125e-4), SC_(0.1511466649617432267405092716217041015625e-6), SC_(15.12595076570930142415113875823363357295605035404639531204957676229163912554536395484786860379819604), SC_(0.0002286257018554836489431356554919182120306485455045215738223802134748684840969261143987440219174334289), SC_(66145.19916994425442492863121700354068887259624407405386839220202470859982980324427270767267845419994), SC_(0.9997713742981445163510568643445080817879693514544954784261776197865251315159030738855992827268867316) }, + { SC_(0.1511466689407825469970703125e-4), SC_(0.7557333447039127349853515625e-5), SC_(11.21474801747600544021891302933899204062674738345908426984713635013076848581541156507122243455520528), SC_(0.0001695086594120361608152520397283450067867848238131865217585243873315804028629930368548995307101041943), SC_(66149.11037269248772091256344273243533040492554704464117943440446512076070044297422509744932462344293), SC_(0.9998304913405879638391847479602716549932132151761868134782414756126684195971370069631436347615004895) }, + { SC_(0.1511466689407825469970703125e-4), SC_(0.136032003865693695843219757080078125e-4), SC_(10.62706953540145438211228219929587974373693257875211389636116678866837862820728731874228854130261406), SC_(0.0001606260174207471569365081380850234657541134789236385230635168619547026843142926801564681867741869564), SC_(66149.69805117456227197067007356247844270181536184934814980789043468222309030058234934377825851669552), SC_(0.9998393739825792528430634918619149765342458865210763614769364831380452973156857073198421423664634813) }, + { SC_(0.1511466689407825469970703125e-4), SC_(0.1511466689407825469970703125e-4), SC_(10.5217283030920710420271751774083507318685513631792218831470559162612814792956241968239372187464839), SC_(0.0001590338058934127984009976816073822319810839586199611584692214864905119201246855033780257665105196706), SC_(66149.80339240687165531075518058436597171368374306492104182110454555463018744949401246569660983925165), SC_(0.999840966194106587201599002318392617768018916041380038841530778513509488079875314496620598456498655) }, + { SC_(0.1511466689407825469970703125e-4), SC_(0.1662613431108184158802032470703125e-4), SC_(10.4264355109876301271981031203342846202336117292494299224581597787559235184819699396893186880311142), SC_(0.0001575934745176135022714455486103985583399812228677151058973982278479718134100796868413757261550940711), SC_(66149.89868519897609622558425264144003782531868269885083378179344169213554541030766672283122836996702), SC_(0.9998424065254823864977285544513896014416600187771322848941026017721520281865899203131572608626738619) }, + { SC_(0.1511466689407825469970703125e-4), SC_(0.302293337881565093994140625e-4), SC_(9.828708884099554001424941916212075487084962799859414028893879643820622081209781792423102714162883496), SC_(0.0001485589568395712643505830120438173096913648105126899546376260896365457651254865681004600329652559501), SC_(66150.49641182586417235135741384556224695846733162824084967535772182707084684757985487009744434383525), SC_(0.9998514410431604287356494169879561826903086351894873100453623739103634542348745134318982541208041678) }, + { SC_(0.1511466689407825469970703125e-4), SC_(100), SC_(0.3683854715725894513002309725740864196602549074944340531013479342165808771852496626643756869511507703e-45), SC_(0.5568072268394504557778690982775295316749883343441024523739867296038356236511365515664473945650021877e-50), SC_(66160.32512070996372635278235576177432244555229442773187823267901201959123795621555081087378036313487), SC_(0.999999999999999999999999999999999999999999999999994431927731605495442221309017224704683250116656559) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(0.2986399749715928919613361358642578125e-6), SC_(14.44347128866797804254320337144696175530470055470521266198627254611752239956946388063299447899094848), SC_(0.0004313472190155501030896569938956659736892167348807185425401660569277545569606858499250007483497896845), SC_(33470.11525991597136927013076046767951907145561604238395713201888510331477346728061462396798203596631), SC_(0.9995686527809844498969103430061043340263107832651192814574598339430722454430393141500712755580780067) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(0.14931998521205969154834747314453125e-4), SC_(10.53298934494486248592836073751760320361934525816728821248100632046134537149957547738894248753739291), SC_(0.0003145625847871499789390051407327169757776588783212260872212135038949350196457449675293490951092101237), SC_(33474.02574185969448482674560310160887762314097133892188158152415132897095049535050302721203402741986), SC_(0.9996854374152128500210609948592672830242223411216787739127787864961050649803542550324679299115431488) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(0.26877596610574983060359954833984375e-4), SC_(9.945404515480021362587733815872595694113256781757636849823901616022240302898090931796315526851254516), SC_(0.0002970146507026173322852993450024201563994689836192835608369199098273473369769499899600983304965003603), SC_(33474.613326689159325950086230023253885132647059815331532944181256033410055563951987572804660988106), SC_(0.9997029853492973826677147006549975798436005310163807164391630800901726526630230500100373313408178958) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(0.2986399704241193830966949462890625e-4), SC_(9.840079901579465732843214072362487626956847745884392227313451134484924025450963336435141393066081442), SC_(0.000293869182525896149165406949428582823446559979619859120396893923972056280989654049182655440674856527), SC_(33474.71865130305988157983074976676399319980346885120477756669170651494737184139911516816583512189117), SC_(0.9997061308174741038508345930505714171765534400203801408796031060760279437190103459508148012372887276) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(0.3285039565525949001312255859375e-4), SC_(9.744802255840961696791206203994083490265040240805261065790243250755463432092351928601661325593760024), SC_(0.000291023762148601055251356945642216014539145254847673643084466811642833657820854639749072840275506773), SC_(33474.8139289487983856158827576351323973364952763562839087282149143986768324347577265759993151893635), SC_(0.9997089762378513989447486430543577839854608547451523263569155331883571663421791453602484082681593473) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(0.597279940848238766193389892578125e-4), SC_(9.14717104176328918518961076380731786405668690683150842878046749324077715909386465877327730353577352), SC_(0.0002731757976920549034977900895360045226613726748221935551188427826715608884761823170710237722713509186), SC_(33475.41156016287605812748435307531916296270362969025766136522469015619151870775621384582769921142148), SC_(0.9997268242023079450965022099104639954773386273251778064448811572173284391115238176829266105768538286) }, + { SC_(0.2986399704241193830966949462890625e-4), SC_(100), SC_(0.3684105476210905758660119691693999231568920244230418745036699745074355905854317943022531500070237571e-45), SC_(0.1100240115387169835703968243867209607905004251861690953489409564307109814718315728157810594225260069e-49), SC_(33484.55873120463934731267396383912648082676031659672075924638406707356628389768067886893955635255911), SC_(0.9999999999999999999999999999999999999999999999999889975988461283016429603175613279039209499574813831) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(0.33870293236759607680141925811767578125e-6), SC_(14.31720238942907049297552494111382877647727570530129503408811089120835009311148255115581913663095916), SC_(0.0004849373071819764439701163901376387814417526401793160768534459803094529343896336966479239358629863374), SC_(29509.5040779898725862526272859494252292177926958652030180931500803005024829557905223829882923048893), SC_(0.9995150626928180235560298836098623612185582473598206839231465540196905470656103663033478895290088931) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(0.16935146049945615231990814208984375e-4), SC_(10.40691047854504248780606847036856254172159909999597537950418333192964361032354135839895755229081297), SC_(0.0003524919887474451509240612142476498836350009212484998307975031418234945001919280813074483076400324668), SC_(29513.41436990075661425779674242017049545254837247050833774773400785978118943857846357574515388922944), SC_(0.9996475080112525548490759387857523501163649990787515001692024968581765054998080719186895023361162419) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(0.30483262889902107417583465576171875e-4), SC_(9.819350184405234666635908417595308903154195123453563710580835876305653436752112255346451803972055836), SC_(0.0003325907609029898056613328653353558971533877245842967793706896707317906825596839290645004840538710585), SC_(29514.0019301948964220789669024729437490911157764470507494166573553154051796121498926787976596375482), SC_(0.999667409239097010194338667134664644102846612275415703220629310329268209317440316070932621032152602) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(0.3387029209989123046398162841796875e-4), SC_(9.714029967474893226070718648782901035048990936316174905801715892138690043484122559928930089465784884), SC_(0.0003290234646532887453117501035674050108594728887612117842860584809682600005118779722019427987801738806), SC_(29514.10725041182676351953209224175615695922098063418813822143647529957214300541788237421518135205447), SC_(0.9996709765353467112546882498964325949891405271112387882157139415190317399994881220277952093463229449) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(0.372573194908909499645233154296875e-4), SC_(9.618756290295504150679291840361072001457180360929476189681268594037377479585276382430598240905077075), SC_(0.0003257964542919062479775493594577207301243195502275949405490351641413709943370842931416737603794881568), SC_(29514.20252408900615259492351905017798599281279120957483693755692259767345556931672855171351320061518), SC_(0.9996742035457080937520224506405422792698756804497724050594509648358586290056629157068555060919169543) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(0.677405841997824609279632568359375e-4), SC_(9.021150118209977769369661913822350154574260160023683583849934104601272230099275600136580608292265416), SC_(0.0003055549629751071391692953118256452034225544854788440252479570264531927129183256159501686668145844057), SC_(29514.80013026109167897623314897671670783969571141048062954338825708710956081880272933400753083322799), SC_(0.9996944450370248928608307046881743547965774455145211559747520429735468072870816743840471849794429146) }, + { SC_(0.3387029209989123046398162841796875e-4), SC_(100), SC_(0.368417359211589380644106182585882547154830603056568035135712185383458566122516657946904622592495098e-45), SC_(0.124786475203475492981880680444985672669319255539329124753005329473208429357103015626168704610698808e-49), SC_(29523.82128037930165674560281089053905799426997157013589576802660181106672686631612264048223851894846), SC_(0.9999999999999999999999999999999999999999999999999875213524796524507018119319555014327330680744460671) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(0.906601371752913109958171844482421875e-6), SC_(13.32766625254245825110649470500001943129292117610630938841581724589065103928788701940278452816203213), SC_(0.001208351238059217259682792854592180267930773389213798316633481769874991765667218417384814170782114559), SC_(11016.30166068767111816609109076631108341203038434939064808364291555174994086760604419736580896472206), SC_(0.998791648761940782740317207145407819732069226610786201683366518230125008234332781582604748065861277) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(0.453300672234036028385162353515625e-4), SC_(9.419926257182776517022895926409484352067829189600873716110165092219807998664911913725115098307086108), SC_(0.0008540564671719577089585424446736757990193663926394433506865722637349548673930129799998593821387184286), SC_(11020.20940068303079990017468954490161849125547633589608375594856770542078390822901930304347839457701), SC_(0.9991459435328280422910414575553263242009806336073605566493134277362650451326069870199927455104781301) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(0.815941239125095307826995849609375e-4), SC_(8.832692869115279858229943059767604487510279012419295119801389142561491382155749445189733923350106773), SC_(0.000800815023542192128687382174437403663078484345305910836692662587034014381145275804728327151169429313), SC_(11020.79663407109829655896764241154349835581302651307766235225734365507910052473818177157885956953398), SC_(0.9991991849764578078713126178255625963369215156546940891633073374129659856188547241952647349748299213) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(0.90660134446807205677032470703125e-4), SC_(8.727430826049971906348212554025347192715588891977251607850418423784049953050936933323672658446767512), SC_(0.0007912714532239945688448285892749091191211780369711198821360165381978358013539514443857278350234928369), SC_(11020.90189611416360451084937291728575565060771663351970586420831437385654195384299428344492083443732), SC_(0.9992087285467760054311551714107250908808788219630288801178639834618021641986460485556074162504164785) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(0.997261449811048805713653564453125e-4), SC_(8.632209720288806697979836349491137657538473859774062129721005259634448970817472923373720684036830969), SC_(0.0007826382432639295748024473933954531764891438153904447067216215761099225531362101851471566352482218512), SC_(11020.99711721992476971921774912181996518578483166572289534233772753800614293607645829339487280884726), SC_(0.9992173617567360704251975526066045468235108561846095552932783784238900774468637898148460615915283244) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(0.00018132026889361441135406494140625), SC_(8.034937165367621012403385050194062914400399481659795480629196054541348460406924268202873464639812311), SC_(0.0007284865997937062514333984230539655298090748100685469632626687619990184772409167844457303700120984405), SC_(11021.59438977484595540479420042111703992892290604383716199142953674309924344648700694856572002824428), SC_(0.9992715134002062937485666015769460344701909251899314530367373312380009815227590832155479529068724824) }, + { SC_(0.90660134446807205677032470703125e-4), SC_(100), SC_(0.3685139280905710436994721242036189908822907308095409123448069561078678593239959083447966543087282335e-45), SC_(0.3341127042143331894995128098294766903840699864702825478136458410941040661121629222661952842590318733e-49), SC_(11029.62932694021357641719758547131110284332330552512844354396816175394111978269031232060857042237101), SC_(0.9999999999999999999999999999999999999999999999999665887295785666810500487190170523309615930013529717) }, + { SC_(0.000219495341298170387744903564453125), SC_(0.2194953367506968788802623748779296875e-5), SC_(12.43373987899514817371075587132139485443214506207730602735670368997807545425512088305871519481722047), SC_(0.002729493664652995832349973328782885209015536934301774568321583311181753719149821467517250745511891109), SC_(4542.894612779359930696763756270298424153176154602170450605577474902282671287382887284187290135821235), SC_(0.9972705063353470041676500266712171147909844630656982254316784166888182462808501785324591507349176598) }, + { SC_(0.000219495341298170387744903564453125), SC_(0.0001097476706490851938724517822265625), SC_(8.531320852619722141112899767045819093822995930695154031584126041215816155166875882487581518266900471), SC_(0.00187282237242922242378936855346676486844176077719594651316988802092256347855798929174324245822495782), SC_(4546.797031805735356729361612374573999913785303733552602601350052551044930586471132284758423812371555), SC_(0.998127177627570777576210631446533235131558239222804053486830111979077436521442010708240519736292165) }, + { SC_(0.000219495341298170387744903564453125), SC_(0.0001975457998923957347869873046875), SC_(7.944759112436981693486452640261713310657748797857120514031225127700054003781309987895570449794531095), SC_(0.001744058495322440353745047952617773419218224692332730491234823572087297567363166250006584150337481453), SC_(4547.383593545918097176988059501358105696950550866390636118902953464560692737856698179350434880843925), SC_(0.9982559415046775596462549520473822265807817753076672695087651764279127024326368337499782844126231665) }, + { SC_(0.000219495341298170387744903564453125), SC_(0.000219495341298170387744903564453125), SC_(7.839616321276975902690699813828798749419833668845508703463955919591030288317432278320268341823878493), SC_(0.001720977219282558933691469891573016359544150224165216183165218677630320163402413373007606413366651385), SC_(4547.488736337078102967783812327791020258188465995402247929470222672669716453320575888925736988814577), SC_(0.9982790227807174410663085301084269836404558497758347838168347813223696798365975866269774604691539586) }, + { SC_(0.000219495341298170387744903564453125), SC_(0.00024144488270394504070281982421875), SC_(7.744503095161658141207857479767427181352103715589482798242989620972513814982014578857089943239937461), SC_(0.001700097664889995224860509709892924338099619180293268160105700171023341477236813804597436662920417724), SC_(4547.583849563193420729266654661852391826256195948658273834691188971288232926655993588388915387398518), SC_(0.998299902335110004775139490290107075661900380819706731839894299828976658522763186195387809621468277) }, + { SC_(0.000219495341298170387744903564453125), SC_(0.00043899068259634077548980712890625), SC_(7.147916071385270836669332782699214935846752855366642332240367629021824482837854870367056003245966888), SC_(0.001569133006013487071839746656438447527691736574363137207479174522486544497757184099723703382882066507), SC_(4548.180436586969808033805179358920604071761546808881114300693810963238922258800153296878949327392489), SC_(0.9984308669939865129281602533435615524723082634256368627925208254775134555022428159002626681795663891) }, + { SC_(0.000219495341298170387744903564453125), SC_(100), SC_(0.3687331011208829821235783702258587502637929563563458587356807166821056692427493581034758630251865637e-45), SC_(0.8094544949887119231192206599397651337303846082675520365698260713955607488778882482795863326932048023e-49), SC_(4555.328352658355078870474512141619819007608299663879023531813295610137168371412149456123292495415492), SC_(0.9999999999999999999999999999999999999999999999999190545505011288076880779340060234866269615391732448) }, + { SC_(0.00043952159467153251171112060546875), SC_(0.43952159103355370461940765380859375e-5), SC_(11.7248404258160979769354582817952119388035751716360183491651552750743821551293817289372921816962114), SC_(0.005154627299251649735193641851543111286976235039314309717428885320547473321900656370966328331276270019), SC_(2262.899442792160429951010682745048571928617649846264704721195708938592244649554947990471151914901656), SC_(0.9948453727007483502648063581484568887130237649606856902825711146794525266780993436289890516351131804) }, + { SC_(0.00043952159467153251171112060546875), SC_(0.000219760797335766255855560302734375), SC_(7.83083657612641887271360281559479397366267210746489478262532286731624501032259214089515922234449198), SC_(0.003442694529334712229699997236857947438566120263891184624805396362635773775239773564740607533332788745), SC_(2266.793446641850109055232538211248989893758552910435828287735541346350381794361737578513284874253376), SC_(0.996557305470665287770300002763142052561433879736108815375194603637364226224760226435229494340362304) }, + { SC_(0.00043952159467153251171112060546875), SC_(0.0003955694264732301235198974609375), SC_(7.24532144716768982617832697253334219987931811907787823632604929273811234782563327766420074440951253), SC_(0.00318528273026151148152807884201841539015831359711160256942639415483064351635047204129743087811329525), SC_(2267.378961770808838101767814054310441667541906898822844834034814920928514456858696441744243352188355), SC_(0.9968147172697384885184719211579815846098416864028883974305736058451693564836495279586748846296169227) }, + { SC_(0.00043952159467153251171112060546875), SC_(0.00043952159467153251171112060546875), SC_(7.140364480706150532727401915940526168301501877910360741000222814565954726488324514304129622211857059), SC_(0.003139140179495697248617573209358930430661494575899544993040362766436604135787018629165800864694473958), SC_(2267.483918737270377395218739110903257699119723139990362329360641399100672078196005205104314474386011), SC_(0.9968608598205043027513824267906410695693385054241004550069596372335633958642129813708069114497136447) }, + { SC_(0.00043952159467153251171112060546875), SC_(0.00048347376286983489990234375), SC_(7.045419346954026093163136237173731985918760701870650921965535433932498334500966644424283355604192257), SC_(0.003097399161230560809233726951657173100662248650045340000316910346695702614441065249963897375001857947), SC_(2267.578863871022501834783004789670051881502464316030072148395328779734128470183363074984160740993676), SC_(0.9969026008387694391907662730483428268993377513499546599996830896533042973855589347500091738947417394) }, + { SC_(0.00043952159467153251171112060546875), SC_(0.0008790431893430650234222412109375), SC_(6.449900943085110510007025494460553938971912992686386102438225189983220556127979375884854255747233149), SC_(0.002835589591948016030270074882629709463093839412199856857492205860509787683463753223614068822390953578), SC_(2268.174382274891417417939115532383229928449312025214336967922639023683406248556350343523589840850635), SC_(0.9971644104080519839697299251173702905369061605878001431425077941394902123165362467763612539003760559) }, + { SC_(0.00043952159467153251171112060546875), SC_(100), SC_(0.3691077087993230098541586684799498253960030358212388385477602063116389413924752477757872434642021124e-45), SC_(0.1622719459748032306091668523258917509933575031508427758365556526257272383098869157534227205746190056e-48), SC_(2274.624283217976527927946141026843783867421225017531615361561541203812468136204379913573925606138419), SC_(0.9999999999999999999999999999999999999999999999998377280540251967693908331476741082490066424968491572) }, + { SC_(0.000633315183222293853759765625), SC_(0.6333151759463362395763397216796875e-5), SC_(11.34787479276627224580337785406716408637962399339194101942392509498124552134738596941813889524189291), SC_(0.007189406708716155036412741210682079270084489676201376425675990314746938093155481859795382443915378031), SC_(1567.068154864945736082743209084143469696500226900908223039910275026461205789315128688234147685462369), SC_(0.9928105932912838449635872587893179207299155103237986235743240096852530619068445181401423236020871227) }, + { SC_(0.000633315183222293853759765625), SC_(0.0003166575916111469268798828125), SC_(7.46089020000764916854497751483875323689070673926667523004343500772904424536063023825665047822216213), SC_(0.004726821104082162211221019391397195168330253616352950214361929952096861402799079871019712108594353278), SC_(1570.9551394577043591600016094233718805459891441550334888292907651137134070653018844193956361024821), SC_(0.9952731788959178377887789806086028048316697463836470497856380700479031385972009201289391871117416547) }, + { SC_(0.000633315183222293853759765625), SC_(0.0005699836765415966510772705078125), SC_(6.876238555953408718416594537798340473268048068243365549088675013223047395061285527034096028063455391), SC_(0.004356417083172018959221261794953155882713682295744458780583951852807903015349109501873436912557839796), SC_(1571.539791101758599610129992400412293309611802826056798510245525108219403915601229130618190552640806), SC_(0.9956435829168279810407787382050468441172863177042555412194160481471920969846508904980886500292422297) }, + { SC_(0.000633315183222293853759765625), SC_(0.000633315183222293853759765625), SC_(6.771434840437260588331514267600610227543507825827826035725496428238340010820087908340515022118788088), SC_(0.004290019052775130897611439445652375220154925215169162214634538171707307054215692115889625397046700523), SC_(1571.644594817274747740215072670610023555336343068472338023608703693204111299842426749311771558585474), SC_(0.9957099809472248691023885605543476247798450747848308377853654618282926929457843078840730329705876445) }, + { SC_(0.000633315183222293853759765625), SC_(0.0006966466899029910564422607421875), SC_(6.676628330764053718403410068010161982564575265578611073379627007746838969385121207523321517555412416), SC_(0.004229954717459323080685991209588121205189081545404163038362373791787135439566525790025670496067884073), SC_(1571.739401326947954610143176870200471800315275628721552985954573113695612341277393450128965063148849), SC_(0.9957700452825406769193140087904118787948109184545958369616376262082128645604334742099375047892026149) }, + { SC_(0.000633315183222293853759765625), SC_(0.00126663036644458770751953125), SC_(6.081991793575300930669877059912523255467802980275504680256341769545559907751915715125394582719715743), SC_(0.003853224802141811439696054746351860608527516211098292685669914318068132022118945358853821902319624959), SC_(1572.334037864136707397876709878298110527412047914024659379077858351896891402910598942526891997984546), SC_(0.996146775197858188560303945253648139391472483788901707314330085681931867977881054641112595545479944) }, + { SC_(0.000633315183222293853759765625), SC_(100), SC_(0.3694379690261862441325547580779226268301879715648517819995454465782418074378402817780801082967918397e-45), SC_(0.2340561436811439703203842074408197989072039571083394976470309063569495885679226428931556445308685332e-48), SC_(1578.416029657712008328546586938210633782879850893930726090308013877309896552584592044406716408821022), SC_(0.9999999999999999999999999999999999999999999999997659438563188560296796157925591802010927960428916605) }, + { SC_(0.001115123392082750797271728515625), SC_(0.111512335934094153344631195068359375e-4), SC_(10.75565287760055913740896765612346180311358345238570566038074692418172394911119161095101631036767488), SC_(0.01200159039933653983583114137969082611740910486766791959127703282711250142887973666639872027637829415), SC_(885.4299791695606740915428863435242067141380032869117726428486785830959728412220222106788217929350633), SC_(0.9879984096006634601641688586203091738825908951323320804087229671728874985711202633334970564592023341) }, + { SC_(0.001115123392082750797271728515625), SC_(0.0005575616960413753986358642578125), SC_(6.885167272326057966535769528825983541933992512736792077330130169067106186004022887959255171444342864), SC_(0.007682746772672796158096373764491740122177572401804292342758055981690000793802753543348292402431921404), SC_(889.3004647748351752624160844708216849753175942265606862258992953382105906043291909336705829318583953), SC_(0.9923172532273272038419036262355082598778224275981957076572419440183099992061972464565847222834198242) }, + { SC_(0.001115123392082750797271728515625), SC_(0.001003611017949879169464111328125), SC_(6.30252206344623165988876425803389624898732275590340990562159593227980675830276598586422406560337573), SC_(0.007032607796946431298475925944642590950715313399609344319157521664390535346690051356774370432862863186), SC_(889.8831099837150015690630897416137722682642639833940683976078295749978900320304478357656140376993624), SC_(0.9929673922030535687015240740553574090492846866003906556808424783356094646533099486431642498837873551) }, + { SC_(0.001115123392082750797271728515625), SC_(0.001115123392082750797271728515625), SC_(6.198074030154650235800040800844929293448468193045593098727956654474399692192252388629721688277597352), SC_(0.006916060477332535827357501075793973568818642279447521929382182165878590242224495036138432073930557823), SC_(889.9875580170065829931518131988027392238031185462518852045014688528032970981409614330001164150251408), SC_(0.993083939522667464172642498924206026431181357720552478070617817834121409757775504963801193137470936) }, + { SC_(0.001115123392082750797271728515625), SC_(0.001226635766215622425079345703125), SC_(6.10358926752454803303914287923957841459461280215270747928413969329151971770320704193589046351143213), SC_(0.006810630576147588021140262758498336091892334032398841343355219693328993172419541903195723506762135893), SC_(890.082042779636685195912711120408090102656973937144770823945285813986177072630006779693947639791306), SC_(0.9931893694238524119788597372415016639081076659676011586566447803066710068275804580967448107427423296) }, + { SC_(0.001115123392082750797271728515625), SC_(0.00223024678416550159454345703125), SC_(5.511002392559784093447480079969735304976321758213552021607928542239835444892393114944382553871657622), SC_(0.006149398289248371799951508353724551195819571305616213669422026554687463700662545335191097528796241802), SC_(890.6746296546014491355043739196779332122752649810839262816214969650378613454408207066854555494310805), SC_(0.9938506017107516282000484916462754488041804286943837863305779734453125362993374546647551380002973232) }, + { SC_(0.001115123392082750797271728515625), SC_(100), SC_(0.3702603407772645384456820318760441217718875049034628199922739228789532164646234722215423167851765606e-45), SC_(0.4131513913378381515046787628785713975260428930204907684112778279965472625312124850546678692814116117e-48), SC_(896.1856320471612332289518539996476685172515867389272179624521609688320147584571697075857117915787288), SC_(0.9999999999999999999999999999999999999999999999995868486086621618484953212371214286024739571069795092) }, + { SC_(0.00196246779523789882659912109375), SC_(0.19624678316176868975162506103515625e-4), SC_(10.14900337572979834752856828435222968276857358458714259561564982034712198149362402081020553741206422), SC_(0.01993960339030124946382735375426398898016732760536631077824983188773118787016291491977308720148649153), SC_(498.838220546002689994967652630969995367921390863210470202269511362753642603088983457060814250816841), SC_(0.980060396609698750536172646245736011019832672394633689221750168112268812129837085080053110668504355) }, + { SC_(0.00196246779523789882659912109375), SC_(0.000981233897618949413299560546875), SC_(6.305521200834886415416308899675210215771248321994179673970836310627256136803935764077555320110596483), SC_(0.01238836832141093816026665145857334532773760114600233715357901408496679192890752816999172230181319178), SC_(502.6817027208976019270799120156470148349187161258034331239143248724735084477786717137934644681183087), SC_(0.9876116316785890618397333485414266546722623988539976628464209859150332080710924718298997986627453569) }, + { SC_(0.00196246779523789882659912109375), SC_(0.001766221015714108943939208984375), SC_(5.726110295062204477106095949553648066139026407441921607813130915916652757384186149128304038958709409), SC_(0.01125000790971270941434582089991592017532662129224464813640856532380797238503895270719870060927437707), SC_(503.2611136266702838653901249657685769845509380403556911900720302671841118271984213287427157492701958), SC_(0.9887499920902872905856541791000840798246733787077553518635914346761920276149610472927026679132196737) }, + { SC_(0.00196246779523789882659912109375), SC_(0.00196246779523789882659912109375), SC_(5.622235238195502609729557776235833053907662308569455149216171573860273454724603801088353898636734914), SC_(0.01104592605463912342911567873591583653599892781918782710272429010531004179081995306973316838325624233), SC_(503.3649886835369857327666631390863919967823021392281576486689896092404911298580036767826658895921703), SC_(0.9889540739453608765708843212640841634640010721808121728972757098946899582091800469301699655800162906) }, + { SC_(0.00196246779523789882659912109375), SC_(0.00215871445834636688232421875), SC_(5.528268826085020416140321670222386364107340204532141274836755795867025003823450858816714198544287396), SC_(0.01086131157377558900448272017872066564975710285331866197337535645094791015296927056530787659789095208), SC_(503.4589550956474679263558992450998386865826242432654715230484053872337395807591566190543055896846178), SC_(0.9891386884262244109955172798212793343502428971466813380266246435490520898470307294345968544007118276) }, + { SC_(0.00196246779523789882659912109375), SC_(0.0039249355904757976531982421875), SC_(4.938987082914699838457983226719965217476612853363045113042016127451297846013281495884499568865883318), SC_(0.009703558067449986097531968416312103910922126732481402762324146425017417699686163534289754729460729665), SC_(504.0482368388177885040382376886022598332133515944345676848431450556494667385693259819865202193630219), SC_(0.9902964419325500139024680315836878960890778732675185972376758535749825823003138364656249915899590869) }, + { SC_(0.00196246779523789882659912109375), SC_(100), SC_(0.371711069233994618089251980379787404703200868503681252205878708328579900643829653098280882608666812e-45), SC_(0.7302954804444227624038715794279959610192586730525009887130851252337543775699440571494118134245598624e-48), SC_(508.9872239217324883424962209153222250506899644474259017286511665650115126042028200775715570287875006), SC_(0.999999999999999999999999999999999999999999999999269704519555577237596128420572004038980741326947499) }, + { SC_(0.005553754977881908416748046875), SC_(0.5553754817810840904712677001953125e-4), SC_(8.964916995922265562670509435276988555999266212543889148630586594457109756662300790199875201890414176), SC_(0.04994755397027048426834023531853787482994000264191186425566638484033048318774106778174252966339825561), SC_(170.521690121181316177902329265915998355956795018230725850859227674038580240062721109869774095721396), SC_(0.9500524460297295157316597646814621251700599973580881357443336151596695168122589322178155624007872869) }, + { SC_(0.005553754977881908416748046875), SC_(0.0027768774889409542083740234375), SC_(5.222169637141671636404804427422403643545438726610446085568828215923685407329063311433402344362745274), SC_(0.02909503790293689426695312636806957821114009596057981217975996295813570004816536813932743724112559258), SC_(174.2644374799619101041680342737705832684106225041641689139209860525720045893959585886362469532490649), SC_(0.9709049620970631057330468736319304217888599040394201878202400370418642999518346318604135760837493635) }, + { SC_(0.005553754977881908416748046875), SC_(0.004998379386961460113525390625), SC_(4.654508257117303320411512555062309276826075249498977524731665069947789435192356659973016340215335662), SC_(0.02593234298579466195965215749908092357421845490729802493578101747721091498484013447327969090018933084), SC_(174.8320988599862784201613261461306776351299859812756374747581491985479005615326652400966329573964745), SC_(0.9740676570142053380403478425009190764257815450927019750642189825227890850151598655264890660379528003) }, + { SC_(0.005553754977881908416748046875), SC_(0.005553754977881908416748046875), SC_(4.552711102485910264547873147973210224670389064059533400410882648423784089166455372965055776226103584), SC_(0.02536518560137223040331237053691364143746751771600885263808132832279168674495735497543463321073851608), SC_(174.9338960146176714760249655532197766872856721667150815990789316200719059075585665271045935213857066), SC_(0.9746348143986277695966876294630863585625324822839911473619186716772083132550426450243390989132964284) }, + { SC_(0.005553754977881908416748046875), SC_(0.006109130568802356719970703125), SC_(4.460624247688622547953655889386147254858073264917443243978430055334332005853002076023509767191650769), SC_(0.02485212863140451070724595723004764521959822842170598463337027497439070096530401467959144797904202474), SC_(175.0259828694149591926191828118068396570979879658571717555113842131613579908720198240461395304201594), SC_(0.9751478713685954892927540427699523547804017715782940153666297250256092990346959853201867847542934446) }, + { SC_(0.005553754977881908416748046875), SC_(0.01110750995576381683349609375), SC_(3.883357360216657997244393968550088480113409837493760013294217647121382192929527127834473880298138601), SC_(0.02163591714496566646516776444203604062813292121063084740422116343165497104858943114627344800197163485), SC_(175.6032497568869237433284447326428984318426513932808549861955966213743078037954947722351754173136716), SC_(0.9783640828550343335348322355579639593718670787893691525957788365683450289514105688535329977996498619) }, + { SC_(0.005553754977881908416748046875), SC_(100), SC_(0.3779230356323651469251400251436801657115323311828038629573248866991682540425440079590315860323569243e-45), SC_(0.2105577913040578184612113756477261211410811213425891696964581142045415939710425561995401419156912192e-47), SC_(179.4866071171035817405728387011929869119560612303966919638574491215705499715813417359332742369180329), SC_(0.9999999999999999999999999999999999999999999999978944220869594218153878862435227387885891887865741083) }, + { SC_(0.008691129274666309356689453125), SC_(0.869112918735481798648834228515625e-4), SC_(8.412150535244441203168046070317310253724567623691078331486778211100219408535590313077554856570699598), SC_(0.0734742369214086089210153054947260329971557695201341707775521940117156621771297470370953689874816908), SC_(106.0790083759050634625337598716446870920526426681515083014260468453871574230843464967785306090985135), SC_(0.9265257630785913910789846945052739670028442304798658292224478059882843378228702529622462611547659734) }, + { SC_(0.008691129274666309356689453125), SC_(0.0043455646373331546783447265625), SC_(4.747483533337902183946818699971831287857052577276252258033190690531537548113688962993636655174478423), SC_(0.04146594006461382313537482617248709417766142416202542486142474476114080262861893941422971907404955593), SC_(109.7436753778116024817549872419901660579201577145663343748796343659558392835062478468624488104947346), SC_(0.9585340599353861768646251738275129058223385758379745751385752552388591973713810605853961293779614401) }, + { SC_(0.008691129274666309356689453125), SC_(0.00782201625406742095947265625), SC_(4.188714405951040634652072336322477039569342050275559543021997361729942472593051923062465693734697627), SC_(0.03658548350621272832275084129392436578573561492653168803027125335941528070349701044338510087997499593), SC_(110.3024445051984640310497336056395203062078682415670270898908276947574343590268848867936197719345154), SC_(0.9634145164937872716772491587060756342142643850734683119697287466405847192965029895562840836832982795) }, + { SC_(0.008691129274666309356689453125), SC_(0.008691129274666309356689453125), SC_(4.08848737420065935929134320387738037551705209754263277179328266373220927403385787131830593805064886), SC_(0.03571007065596669193904108016015709813865155263375873910595316749759359782915444208415216634230658664), SC_(110.4026715369488453064104627380846169702601581942999538611195423927551675575860789385377795276185642), SC_(0.9642899293440333080609589198398429018613484473662412608940468325024064021708455579155247914668146388) }, + { SC_(0.008691129274666309356689453125), SC_(0.00956024229526519775390625), SC_(3.99782079814824918307908619479527349158197798771392975095659098640536858272574657135383729506757053), SC_(0.03491816168312825922906539505187828450927190406957704260083957374549678225908496848420561100299384268), SC_(110.4933381130012554826227197471667238541952323041286568819562340700820082488941902385022481706016425), SC_(0.9650818383168717407709346049481217154907280959304229573991604262545032177409150315154783785776319255) }, + { SC_(0.008691129274666309356689453125), SC_(0.01738225854933261871337890625), SC_(3.429652593561693644638834896451401252091493865356407433916434404687048079702486661999920641307007191), SC_(0.02995561077535484202820021234487128647994519436125259940646933255344394936860990914312183685175046186), SC_(111.0615063175878110210629710455105960936857164264861791989963906518003287519174501478561648243622059), SC_(0.9700443892246451579717997876551287135200548056387474005935306674465560506313900908566062177985487162) }, + { SC_(0.008691129274666309356689453125), SC_(100), SC_(0.3834347555474465586395291403125251405405389593008695231904802071464782586691835903731927721307539629e-45), SC_(0.3349033752422838748916689259240733539203045003131547237515235304204672805448804838430882271615821179e-47), SC_(114.4911589111495046657018059419619973457772102914591518773653784978478476913074116703328547030652432), SC_(0.9999999999999999999999999999999999999999999999966509662475771612510833107407592664607969549968684528) }, + { SC_(0.0299333669245243072509765625), SC_(0.00029933368205092847347259521484375), SC_(6.65558792122502145790203122705781927392537710568382982650902879917995730340091807239175568813213068), SC_(0.2025490756976798423479118675089777352736957583605687315155725757125233270513154513279880668403039601), SC_(26.20354954113990720677295171562168818585244384318224849305166810303853836693243368037159645376977416), SC_(0.7974509243023201576520881324910222647263042416394312684844274242874766729486845486700376252368081425) }, + { SC_(0.0299333669245243072509765625), SC_(0.01496668346226215362548828125), SC_(3.412781457563949627493849132800205293732370924443084983071137019169168281694119440771156646106558311), SC_(0.1038609568334763548457972777288529241469923900253962807775257423932593724995787612069914513230733471), SC_(29.44635600480097903718113380987930216604545002442299333648955988304932738863923231199219549579534653), SC_(0.8961390431665236451542027222711470758530076099746037192224742576067406275004212387919853803026229454) }, + { SC_(0.0299333669245243072509765625), SC_(0.02694003097712993621826171875), SC_(2.900428060083442521700414212209539293181960970813005023783465175158447954051342500859962243168594771), SC_(0.08826853910591643763067442789157912471708232570630547469480133709625147782109251555169415725060617567), SC_(29.95870940228148614297456873046996816659585997805307329577723172706004771628200925190338989873331007), SC_(0.9117314608940835623693255721084208752829176742936945253051986629037485221789074844474329514837168865) }, + { SC_(0.0299333669245243072509765625), SC_(0.0299333669245243072509765625), SC_(2.80837448661732195170761906499999493821123607368254428592631444869917451230049026839722143354330746), SC_(0.08546707867283131075432095045307988463257577828543753893332063453617336634663328499785869123628549113), SC_(30.05076297574760671296736387767951252156658487518353403363438245351932115803286148436613070835859738), SC_(0.9145329213271686892456790495469201153674242217145624610666793654638266336533667150012954175041413206) }, + { SC_(0.0299333669245243072509765625), SC_(0.0329267047345638275146484375), SC_(2.725101221535109535021413719100843696433626664532974402284107300109171958371467977939595309468299124), SC_(0.08293282879553038976697110966809591185042939605421337827594738688004093044577294705637033103753406651), SC_(30.13403624082981912965356922357866376334419428433310391727658960210932371196188377482375683243360572), SC_(0.9170671712044696102330288903319040881495706039457866217240526131199590695542270529428082023784467733) }, + { SC_(0.0299333669245243072509765625), SC_(0.059866733849048614501953125), SC_(2.204476228650003963881192397589198776933448409172425381454446680594408859247730852369919972696722456), SC_(0.06708868214130365722661165568506456062512493800386324405219217526484257111958289695748025178580326486), SC_(30.65466123371492470079379054509030868284437253969365293810625022162408681108562090039343216920518239), SC_(0.9329113178586963427733883443149354393748750619961367559478078247351574288804171030418509848600074949) }, + { SC_(0.0299333669245243072509765625), SC_(100), SC_(0.4229279999195938340595688371433305871889682449285871973650802503052523480463068726888829167170666972e-45), SC_(0.1287094040140258076521551344643561104581741100997942473491238945795244936062181105143232448905621274e-46), SC_(32.85913746236492866467498294267950745977782094844315031964110306815892683319002116589180337092808888), SC_(0.9999999999999999999999999999999999999999999999871290595985974192347844865535643889541825889900205753) }, + { SC_(0.05124260485172271728515625), SC_(0.00051242602057754993438720703125), SC_(5.750398977913244900274962421353297368031325639433868586950794911944578215691256892664192413362591034), SC_(0.3028722400658670309060582521260906731221817754690304799285207885428553696560930593067285904368322388), SC_(13.23582100930869053226053270179389011404206015970023183245494980462996606312399917775634092248377199), SC_(0.6971277599341329690939417478739093268778182245309695200714792114571446303439069406900635548967258876) }, + { SC_(0.05124260485172271728515625), SC_(0.025621302425861358642578125), SC_(2.832141251899738927184198830918552560705390731127443324742929027769956627452021708549562866974237375), SC_(0.1491682522274481432092518761039267269452211637367753155145843941704919377471471128043007783037985871), SC_(16.15407873532219650535129629222863492136799506800665709466281568880458765136323436187097046887212565), SC_(0.85083174777255185679074812389607327305477883626322468448541560582950806225285288719409849230013501) }, + { SC_(0.05124260485172271728515625), SC_(0.0461183451116085052490234375), SC_(2.354535041475650840188296544626824459348071689176520405240621833882890783690260790374595349243249817), SC_(0.1240128389463671496190159389825520574179898719077050768343103933526658807883438828524452225211835791), SC_(16.63168494574628459234719857852036302272531410995758001416512288269165349512499528004593798660311321), SC_(0.8759871610536328503809840610174479425820101280922949231656896066473341192116561171462170724905049019) }, + { SC_(0.05124260485172271728515625), SC_(0.05124260485172271728515625), SC_(2.268581955935316913153430290814781029572894726877321715668417204937011887527880456166238463358814554), SC_(0.119485708975357549703407111440249731302572941365773848592259365032731048905891169977364697529085816), SC_(16.71763803128661851938206483233240645250049107225677870373732751163753239128737561425429487248754847), SC_(0.8805142910246424502965928885597502686974270586342261514077406349672689510941088300213449330467672867) }, + { SC_(0.05124260485172271728515625), SC_(0.0563668645918369293212890625), SC_(2.190826928493114755175474738392958609573869639135473828240129903375769251681938201165488344589073467), SC_(0.1153903689079543131568507907786239460633868239209515305709967719710419887432512190607714956691512904), SC_(16.79539305872882067736002038475422887249951615999862659116561481319877502713331786925504499125728956), SC_(0.8846096310920456868431492092213760539366131760790484694290032280289580112567487809379809556858218957) }, + { SC_(0.05124260485172271728515625), SC_(0.1024852097034454345703125), SC_(1.705832980948029655675174791358196762256920326164848611959849532446454449849713723349992966594024533), SC_(0.08984584514959194964111225566819986886942747214355191893796722859826575799935451129133496979377311521), SC_(17.2803870062739057768603203317889907198164654729692518074458951841280898289655423470705403692523385), SC_(0.9101541548504080503588877443318001311305725278564480810620327714017342420006454887076845744989248092) }, + { SC_(0.05124260485172271728515625), SC_(100), SC_(0.4666332762470370840214357140870669083484141793110941527015291021554978221892371620740912810024635374e-45), SC_(0.2457747126921997105292850810706506718048727997191850109419737442424277356633748861407006331354595514e-46), SC_(18.98621998722193543253549512314718748207338579866746714315870763255310856472818916227141762310922602), SC_(0.9999999999999999999999999999999999999999999999754225287307800289470714918929349328195127200280814989) } + } }; +#undef SC_ + + + diff --git a/test/laguerre2.ipp b/test/laguerre2.ipp new file mode 100644 index 000000000..ccbb26fe5 --- /dev/null +++ b/test/laguerre2.ipp @@ -0,0 +1,290 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 280> laguerre2 = { + SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.56218428868911115998451316426215010600803852349048e8), + SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.2243354877625806499089339248835065869040287604245e9), + SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(-0.31418973293934559300911242611564538290439848722478e9), + SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.17256344438562512861154328485542977773202418102338e10), + SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.39170586692926680364193521563384606561329196831404e10), + SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.12743797194803555297871516510157023166259117561797e11), + SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.21330001890239721242857731991140245635183835676285e11), + SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.38928352555423736374909603306210170085670252415611e12), + SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.39050320967058708332723880470821630124002299400132e12), + SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.8097387851220286833483200510030936982898650914701e12), + SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.29004794312410106580901353153584987792805041014836e13), + SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.32824640180206380842810590985413965806061220575884e13), + SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.49421323240476384503475902217971923134518824327159e13), + SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.51537136874727263493269087352302138644536549927366e13), + SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.65333402285178696166233025823588675962128036189824e13), + SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.67904577991104770306176706554532355404413293600378e13), + SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.68903095684447650874743766361869788199054585412876e13), + SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.69323852072435892067304941218115151610034557760898e13), + SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.78400756116163888448805990221667549169323386803558e13), + SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.79831715395647963750699081595768764433417262009011e13), + SC_(0.6e1), SC_(0.9754039764404296875e2), SC_(0.80820995722555766966204481326428921093819853380883e9), + SC_(0.6e1), SC_(0.12698681640625e3), SC_(0.43287285333593211699487383676400548034517465653989e10), + SC_(0.6e1), SC_(0.1354770050048828125e3), SC_(0.65078719322668723671436292885961437403753159577959e10), + SC_(0.6e1), SC_(0.1883819732666015625e3), SC_(0.50975971206548972048503974573840505796401940705308e11), + SC_(0.6e1), SC_(0.2210340576171875e3), SC_(0.13704228670315682904098855918609456694715553605731e12), + SC_(0.6e1), SC_(0.27849822998046875e3), SC_(0.56796012600833411397117536544899859778691289306697e12), + SC_(0.6e1), SC_(0.30816705322265625e3), SC_(0.10561318402049538938483073960821297722447423948919e13), + SC_(0.6e1), SC_(0.5468814697265625e3), SC_(0.34765288907987505446684019181571310232694381424255e14), + SC_(0.6e1), SC_(0.5472205810546875e3), SC_(0.34896286395332650547095052626160857783947143332365e14), + SC_(0.6e1), SC_(0.6323592529296875e3), SC_(0.83851035075753307874674729684024391015233495095035e14), + SC_(0.6e1), SC_(0.81472369384765625e3), SC_(0.38851567401648686934604173193933429726823924901636e15), + SC_(0.6e1), SC_(0.835008544921875e3), SC_(0.45077984162776358272899308358214843622672411937698e15), + SC_(0.6e1), SC_(0.90579193115234375e3), SC_(0.73700705849391831486587833923818658629022423687651e15), + SC_(0.6e1), SC_(0.9133758544921875e3), SC_(0.77507405395421988441046439866170936792437945158589e15), + SC_(0.6e1), SC_(0.9575068359375e3), SC_(0.10306131640131364207923517549718197693249532864712e16), + SC_(0.6e1), SC_(0.96488848876953125e3), SC_(0.10795269882491233868704393921117749304908016202882e16), + SC_(0.6e1), SC_(0.9676949462890625e3), SC_(0.10986241099950023947147288133858596641922819961585e16), + SC_(0.6e1), SC_(0.9688677978515625e3), SC_(0.11066879989104805588335103036958066630483588267248e16), + SC_(0.6e1), SC_(0.99288128662109375e3), SC_(0.12829707187512957309933510816037300428272415242332e16), + SC_(0.6e1), SC_(0.9964613037109375e3), SC_(0.13111507527148485594511524621819926397653608283432e16), + SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.97127257986443053526417273414388194974570607385935e10), + SC_(0.7e1), SC_(0.12698681640625e3), SC_(-0.70295995953992755265946027355243029063331213138355e11), + SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.11359707497453571901517561189586228142270903451764e12), + SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(-0.12757018018175550435561074775586631022961625260251e13), + SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.40694229451399857384340512241235666223436876850873e13), + SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.21530849338789697137868260826250260284211997386438e14), + SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.44515334725225153366608120310697334717448915933102e14), + SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.26511725480730864342211918127699219873844104369464e16), + SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.26628530536439102004691253957341772339263353080574e16), + SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.74184365727412655859533662592614553371253178512618e16), + SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.44494974059088898431029461327818954373425462460445e17), + SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.52932169558920439326767431099304484428916542881846e17), + SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.93994900318821345331729187319793077343112028474933e17), + SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.99689577334518532843192829626785299168262387676718e17), + SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.13905456836803030189577542899606637451372078172117e18), + SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.14679265295479813112392016144737523708985227232103e18), + SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.1498299348323053192424220347660666492880084886241e18), + SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.1511151180165814270743545859553488460065643424192e18), + SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.17958742259050562450977760208841036922467251612191e18), + SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.18420258994246922874363794194214384956627167378336e18), + SC_(0.9e1), SC_(0.9754039764404296875e2), SC_(-0.88182421198196903206078231205307338249650868832064e12), + SC_(0.9e1), SC_(0.12698681640625e3), SC_(-0.11916795524742195589589499951943501492084977319524e14), + SC_(0.9e1), SC_(0.1354770050048828125e3), SC_(-0.22344296397638552568674348465205379613306362764566e14), + SC_(0.9e1), SC_(0.1883819732666015625e3), SC_(-0.52450137180856257840726851581544345839939827576715e15), + SC_(0.9e1), SC_(0.2210340576171875e3), SC_(-0.23696400879105564578477838259302061169946747558952e16), + SC_(0.9e1), SC_(0.27849822998046875e3), SC_(-0.2057154069965741250232756687863533313808633945305e17), + SC_(0.9e1), SC_(0.30816705322265625e3), SC_(-0.52706299238279057416545711578165684905744102859115e17), + SC_(0.9e1), SC_(0.5468814697265625e3), SC_(-0.10373504112979138086350224207396056466588729804516e20), + SC_(0.9e1), SC_(0.5472205810546875e3), SC_(-0.10432528153473136570046121526504633952860788360435e20), + SC_(0.9e1), SC_(0.6323592529296875e3), SC_(-0.39130711594017381807257779551743819698560088375668e20), + SC_(0.9e1), SC_(0.81472369384765625e3), SC_(-0.39417960379424891896054061064677368280593070059738e21), + SC_(0.9e1), SC_(0.835008544921875e3), SC_(-0.49304936215932770879646299983700202838606715074253e21), + SC_(0.9e1), SC_(0.90579193115234375e3), SC_(-0.10334424643188761615583739852552783075006729859411e22), + SC_(0.9e1), SC_(0.9133758544921875e3), SC_(-0.11148197370742169335891238953970561388157054787912e22), + SC_(0.9e1), SC_(0.9575068359375e3), SC_(-0.17117643007530823467479808245288438345428761729566e22), + SC_(0.9e1), SC_(0.96488848876953125e3), SC_(-0.18354699865344307677650783008677515871579118218563e22), + SC_(0.9e1), SC_(0.9676949462890625e3), SC_(-0.18845473402555581720266649838772564615998761460957e22), + SC_(0.9e1), SC_(0.9688677978515625e3), SC_(-0.19054005396362814451214549815853296627845049820834e22), + SC_(0.9e1), SC_(0.99288128662109375e3), SC_(-0.2379990415149925129095832370169236951708289834945e22), + SC_(0.9e1), SC_(0.9964613037109375e3), SC_(-0.2459080438944659678243208011185696524084223075751e22), + SC_(0.1e2), SC_(0.9754039764404296875e2), SC_(0.68363285133790726530343716793230261010875353582126e13), + SC_(0.1e2), SC_(0.12698681640625e3), SC_(0.12780346463262387447059318050624889749180569846779e15), + SC_(0.1e2), SC_(0.1354770050048828125e3), SC_(0.25872514080382692007093467972049926364267470684414e15), + SC_(0.1e2), SC_(0.1883819732666015625e3), SC_(0.88592647116085797035522910089956721973984668164933e16), + SC_(0.1e2), SC_(0.2210340576171875e3), SC_(0.47780583657418526717172656140732828044696456184005e17), + SC_(0.1e2), SC_(0.27849822998046875e3), SC_(0.5331900363941173927045807539300156181950112131739e18), + SC_(0.1e2), SC_(0.30816705322265625e3), SC_(0.1522625182085023713301500547784155501632626718952e19), + SC_(0.1e2), SC_(0.5468814697265625e3), SC_(0.54743944979053298043671516089410722749901760176246e21), + SC_(0.1e2), SC_(0.5472205810546875e3), SC_(0.55090819795558138013756209863788327369928434403532e21), + SC_(0.1e2), SC_(0.6323592529296875e3), SC_(0.23996032369722453090472613853380539435510387147265e22), + SC_(0.1e2), SC_(0.81472369384765625e3), SC_(0.3136180217844875856210532455123015078868701049189e23), + SC_(0.1e2), SC_(0.835008544921875e3), SC_(0.40228366570492581887821535861784155838787837068917e23), + SC_(0.1e2), SC_(0.90579193115234375e3), SC_(0.91635424833598371783927550180351600428358564325103e23), + SC_(0.1e2), SC_(0.9133758544921875e3), SC_(0.99696710750634214960945727157571811141128625200737e23), + SC_(0.1e2), SC_(0.9575068359375e3), SC_(0.16063550635202090204108065161018414051528464203492e24), + SC_(0.1e2), SC_(0.96488848876953125e3), SC_(0.17359930740134722080034670472759394163212119095913e24), + SC_(0.1e2), SC_(0.9676949462890625e3), SC_(0.17876999613951749665069145752320997385967469183553e24), + SC_(0.1e2), SC_(0.9688677978515625e3), SC_(0.18097164614992113510626725680969708377447448480682e24), + SC_(0.1e2), SC_(0.99288128662109375e3), SC_(0.23176305706781278086716530835422934581699500133195e24), + SC_(0.1e2), SC_(0.9964613037109375e3), SC_(0.24034525959278928207216174690071010414578307080004e24), + SC_(0.12e2), SC_(0.9754039764404296875e2), SC_(0.28423596453596289989288243804391945134145720558303e15), + SC_(0.12e2), SC_(0.12698681640625e3), SC_(0.10459814166195030538123822665486701112739697771504e17), + SC_(0.12e2), SC_(0.1354770050048828125e3), SC_(0.24809961434471699525764703789755549215916991317009e17), + SC_(0.12e2), SC_(0.1883819732666015625e3), SC_(0.18432001419367650072987948319941023048367873500947e19), + SC_(0.12e2), SC_(0.2210340576171875e3), SC_(0.1425973246788753700961735353907762908357118808801e20), + SC_(0.12e2), SC_(0.27849822998046875e3), SC_(0.2648612039362625663502673525170355605919867648175e21), + SC_(0.12e2), SC_(0.30816705322265625e3), SC_(0.94207669859466343227329712354536538487224976251934e21), + SC_(0.12e2), SC_(0.5468814697265625e3), SC_(0.11416571288332122735760393265732692757218749094333e25), + SC_(0.12e2), SC_(0.5472205810546875e3), SC_(0.11503772311632575693339455966945777225801334633802e25), + SC_(0.12e2), SC_(0.6323592529296875e3), SC_(0.67682817776609426691165241302499154756436610551448e25), + SC_(0.12e2), SC_(0.81472369384765625e3), SC_(0.14925113607158546323278613008648061457814853288569e27), + SC_(0.12e2), SC_(0.835008544921875e3), SC_(0.20137386892159007353644931592676274228203562748065e27), + SC_(0.12e2), SC_(0.90579193115234375e3), SC_(0.5420836690576459643271287711084458171666413772841e27), + SC_(0.12e2), SC_(0.9133758544921875e3), SC_(0.59993957244253616872158941998241312745401619591825e27), + SC_(0.12e2), SC_(0.9575068359375e3), SC_(0.10647596238911981020997681650094944029068747024397e28), + SC_(0.12e2), SC_(0.96488848876953125e3), SC_(0.11689245133960734996588218891178658140879248121018e28), + SC_(0.12e2), SC_(0.9676949462890625e3), SC_(0.1210919349676828488255310851429670495905368349189e28), + SC_(0.12e2), SC_(0.9688677978515625e3), SC_(0.12288756773958775796104364572786513910596933472569e28), + SC_(0.12e2), SC_(0.99288128662109375e3), SC_(0.16546282318562297815258073400590724827059252937711e28), + SC_(0.12e2), SC_(0.9964613037109375e3), SC_(0.17285799188257724376176157543505720262452819750787e28), + SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.15428758327644125855292818843401569330741211168799e16), + SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.80932019891477222056421384256018993299108719527302e17), + SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(-0.20837410443315613138060768891043617064680947230019e18), + SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(-0.23041054581252941723867939936368964100938528845819e20), + SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.21423018746076790532404088387932487576331298937838e21), + SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.51532533774072113882814592946620765040457802277968e22), + SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.20483743080238166781000622328713314260809968894106e23), + SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.45807365658624583832010377136032803302289663432229e26), + SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.46187271245529335025545254036134744857983676852153e26), + SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.31609066199338067621059954633340634981067166015523e27), + SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.90646159399960206374430498227033140094018657322162e28), + SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.12544525904974860594398806285643930469586501530176e29), + SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.36721114150131761392182317349435587031972338255613e29), + SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.40990368279471938330945117709437735030275122009372e29), + SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.76363964177698049737267049485284900489556590512731e29), + SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.84498458446138963220029970565385666164418294081343e29), + SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.87795611207460053386552725647471806319942125987039e29), + SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.8920838990438100428530933894339887359239837726742e29), + SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.12317215421451917683521586907330444625122803485384e30), + SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.12915328980215273183944018711642638080541797445587e30), + SC_(0.22e2), SC_(0.9754039764404296875e2), SC_(0.53519155913211797117581773427472182753318968475881e20), + SC_(0.22e2), SC_(0.12698681640625e3), SC_(0.1482457856077086365579374192841961715732300978721e24), + SC_(0.22e2), SC_(0.1354770050048828125e3), SC_(0.89811862298211814442148491712564277702535951184385e24), + SC_(0.22e2), SC_(0.1883819732666015625e3), SC_(0.53105205911452770051774832885086163468318926564375e28), + SC_(0.22e2), SC_(0.2210340576171875e3), SC_(0.29181385527902060628744587044238065323351755162445e30), + SC_(0.22e2), SC_(0.27849822998046875e3), SC_(0.81926383490939917849013990628644623870335123644678e32), + SC_(0.22e2), SC_(0.30816705322265625e3), SC_(0.92559256235836508755914064074846859174102223189673e33), + SC_(0.22e2), SC_(0.5468814697265625e3), SC_(0.60582355648139314032220922737227351534361291594301e39), + SC_(0.22e2), SC_(0.5472205810546875e3), SC_(0.61450841386618840767372822554085603258088547262603e39), + SC_(0.22e2), SC_(0.6323592529296875e3), SC_(0.16828697247343434191793544661262546124370931417734e41), + SC_(0.22e2), SC_(0.81472369384765625e3), SC_(0.53252364000408391115685655166260738513117912209307e43), + SC_(0.22e2), SC_(0.835008544921875e3), SC_(0.92881368091496514903641566811539878316737606628203e43), + SC_(0.22e2), SC_(0.90579193115234375e3), SC_(0.58353032082389612678363416640153420485594909764931e44), + SC_(0.22e2), SC_(0.9133758544921875e3), SC_(0.70428883480642630449395417614259444733071066152224e44), + SC_(0.22e2), SC_(0.9575068359375e3), SC_(0.20403604900694297028065932589821789954408762498582e45), + SC_(0.22e2), SC_(0.96488848876953125e3), SC_(0.24257231813723197693329702291105633653538223754681e45), + SC_(0.22e2), SC_(0.9676949462890625e3), SC_(0.25897178141402988728665269659702809950051225843733e45), + SC_(0.22e2), SC_(0.9688677978515625e3), SC_(0.26613428214690454856359092251155501252760949702349e45), + SC_(0.22e2), SC_(0.99288128662109375e3), SC_(0.46186282958538147848573463412585781275986740408896e45), + SC_(0.22e2), SC_(0.9964613037109375e3), SC_(0.50083750837345646151818682810006338938882917955936e45), + SC_(0.26e2), SC_(0.9754039764404296875e2), SC_(0.21972677691719817441756091279246498916850254461527e21), + SC_(0.26e2), SC_(0.12698681640625e3), SC_(0.1075388630949279748826454068162739903189328481612e26), + SC_(0.26e2), SC_(0.1354770050048828125e3), SC_(0.10649057118439433153896298751085699481345412933801e27), + SC_(0.26e2), SC_(0.1883819732666015625e3), SC_(0.5116947616838569524143836973058866982145398777318e31), + SC_(0.26e2), SC_(0.2210340576171875e3), SC_(0.67598194000593044124785906843654997129153545590891e33), + SC_(0.26e2), SC_(0.27849822998046875e3), SC_(0.61788821894450276203672680235188870492927609213655e36), + SC_(0.26e2), SC_(0.30816705322265625e3), SC_(0.1143466221863025445538605244032140245989208384596e38), + SC_(0.26e2), SC_(0.5468814697265625e3), SC_(0.10365782377701183452195461556076353497800893592323e45), + SC_(0.26e2), SC_(0.5472205810546875e3), SC_(0.10543127968944428085136728714429047403339769641033e45), + SC_(0.26e2), SC_(0.6323592529296875e3), SC_(0.54336316553928368949063555184249670518669259521127e46), + SC_(0.26e2), SC_(0.81472369384765625e3), SC_(0.51097552617218427263241448611405994401811535704536e49), + SC_(0.26e2), SC_(0.835008544921875e3), SC_(0.98954520453823509774054797214466944211629878869384e49), + SC_(0.26e2), SC_(0.90579193115234375e3), SC_(0.87786375743747677334359888017430029312432056322196e50), + SC_(0.26e2), SC_(0.9133758544921875e3), SC_(0.10975609743646233178198950358966597197707924620818e51), + SC_(0.26e2), SC_(0.9575068359375e3), SC_(0.38807135479289092313349072980539966631345258500198e51), + SC_(0.26e2), SC_(0.96488848876953125e3), SC_(0.47654821142237731628816607894656922038832987256136e51), + SC_(0.26e2), SC_(0.9676949462890625e3), SC_(0.51503194237863964904639112627180500133770486086125e51), + SC_(0.26e2), SC_(0.9688677978515625e3), SC_(0.53198500654007856666562730301281355378772116339286e51), + SC_(0.26e2), SC_(0.99288128662109375e3), SC_(0.10235016527486692862890189415524722222034128311139e52), + SC_(0.26e2), SC_(0.9964613037109375e3), SC_(0.11268082142512355561240466068867830761377375700468e52), + SC_(0.32e2), SC_(0.9754039764404296875e2), SC_(0.57896844151857557407003122100491148696303115075994e20), + SC_(0.32e2), SC_(0.12698681640625e3), SC_(0.42245682831545366496930901995710141383069638790405e27), + SC_(0.32e2), SC_(0.1354770050048828125e3), SC_(0.12500869474828256329426453946772458815922358559551e29), + SC_(0.32e2), SC_(0.1883819732666015625e3), SC_(0.28266779160071220855863136752236809118289513550655e35), + SC_(0.32e2), SC_(0.2210340576171875e3), SC_(0.16043258633437377313296386512455676335765088879499e38), + SC_(0.32e2), SC_(0.27849822998046875e3), SC_(0.98152083075443552200456383499687746658509404557554e41), + SC_(0.32e2), SC_(0.30816705322265625e3), SC_(0.39660303068870304789061389710467952730805922359184e43), + SC_(0.32e2), SC_(0.5468814697265625e3), SC_(0.2124691778655363299602608193872213697408649234399e52), + SC_(0.32e2), SC_(0.5472205810546875e3), SC_(0.21701146117737990401627817320898898731158045140974e52), + SC_(0.32e2), SC_(0.6323592529296875e3), SC_(0.29453956822267682637622660585710995711330784866261e54), + SC_(0.32e2), SC_(0.81472369384765625e3), SC_(0.14579187010342463619209867543395472012389261100613e58), + SC_(0.32e2), SC_(0.835008544921875e3), SC_(0.33104915961295333458609667123641141490590693664242e58), + SC_(0.32e2), SC_(0.90579193115234375e3), SC_(0.49617254391613681021336977691940022261460402301085e59), + SC_(0.32e2), SC_(0.9133758544921875e3), SC_(0.65447509655180124047279400990868215055245034097822e59), + SC_(0.32e2), SC_(0.9575068359375e3), SC_(0.31314186002835766887651202030265122705420348145384e60), + SC_(0.32e2), SC_(0.96488848876953125e3), SC_(0.40390183129399277888276794404622531827627609452775e60), + SC_(0.32e2), SC_(0.9676949462890625e3), SC_(0.44470349220352623223005295792036557179541953880227e60), + SC_(0.32e2), SC_(0.9688677978515625e3), SC_(0.46291347880797126364720392445817548485904681626203e60), + SC_(0.32e2), SC_(0.99288128662109375e3), SC_(0.10414215853249607927566783846023113314868365327492e61), + SC_(0.32e2), SC_(0.9964613037109375e3), SC_(0.11731839293063017507522289233426225751615807834469e61), + SC_(0.33e2), SC_(0.9754039764404296875e2), SC_(-0.15519766552964914960282162902087252393890944756729e21), + SC_(0.33e2), SC_(0.12698681640625e3), SC_(-0.49834394329409786429107636406724247060325054488444e27), + SC_(0.33e2), SC_(0.1354770050048828125e3), SC_(-0.19840581047253598115611184022145906036118542457808e29), + SC_(0.33e2), SC_(0.1883819732666015625e3), SC_(-0.98212428153399951310107146404282928611923578181199e35), + SC_(0.33e2), SC_(0.2210340576171875e3), SC_(-0.72578044049144687694845377262857641629094641588691e38), + SC_(0.33e2), SC_(0.27849822998046875e3), SC_(-0.62057397100619303564513894784492557621908539158042e42), + SC_(0.33e2), SC_(0.30816705322265625e3), SC_(-0.28714296782385167119124999018599500804762523101335e44), + SC_(0.33e2), SC_(0.5468814697265625e3), SC_(-0.30888931981090919336348667046948287489524269522361e53), + SC_(0.33e2), SC_(0.5472205810546875e3), SC_(-0.31571691597216716720754649436373448511713945451381e53), + SC_(0.33e2), SC_(0.6323592529296875e3), SC_(-0.50478315840421718669131419020872977517323737909924e55), + SC_(0.33e2), SC_(0.81472369384765625e3), SC_(-0.33062025262205293767486203308022299641518265442287e59), + SC_(0.33e2), SC_(0.835008544921875e3), SC_(-0.77112383731383286471230156867910260520520657245124e59), + SC_(0.33e2), SC_(0.90579193115234375e3), SC_(-0.1262346064599467935961005524047195599692654321956e61), + SC_(0.33e2), SC_(0.9133758544921875e3), SC_(-0.16801567279045565630405655696613192336457136904877e61), + SC_(0.33e2), SC_(0.9575068359375e3), SC_(-0.84582529186776869237021206078881700754491798000552e61), + SC_(0.33e2), SC_(0.96488848876953125e3), SC_(-0.11000226620410340743835989544374720411357868296468e62), + SC_(0.33e2), SC_(0.9676949462890625e3), SC_(-0.12149322908840894133499880791452022966588461024746e62), + SC_(0.33e2), SC_(0.9688677978515625e3), SC_(-0.12663293722507282266407117288015925037770799060973e62), + SC_(0.33e2), SC_(0.99288128662109375e3), SC_(-0.29247499878319565468778047006263649127299274582216e62), + SC_(0.33e2), SC_(0.9964613037109375e3), SC_(-0.33075364818279888462182974219279083273759877224615e62), + SC_(0.36e2), SC_(0.9754039764404296875e2), SC_(-0.14202381258875603292784398243371786895083677644968e21), + SC_(0.36e2), SC_(0.12698681640625e3), SC_(-0.99689260408784512857796674097683890787134923850651e23), + SC_(0.36e2), SC_(0.1354770050048828125e3), SC_(0.33085802053384704162061389949004801316875589574167e29), + SC_(0.36e2), SC_(0.1883819732666015625e3), SC_(0.29691002837109064218075098689453177656242661416649e37), + SC_(0.36e2), SC_(0.2210340576171875e3), SC_(0.50722869577926074483465513588442579657337298353026e40), + SC_(0.36e2), SC_(0.27849822998046875e3), SC_(0.12276018084343264808614960453898425578975135870535e45), + SC_(0.36e2), SC_(0.30816705322265625e3), SC_(0.86176792520194608969749051518980054897501919421191e46), + SC_(0.36e2), SC_(0.5468814697265625e3), SC_(0.77496906300517296899212867022166471009005365376408e56), + SC_(0.36e2), SC_(0.5472205810546875e3), SC_(0.79380346709534996703125888877181202810222361959297e56), + SC_(0.36e2), SC_(0.6323592529296875e3), SC_(0.20837628323063930783612574671644907853428390635937e59), + SC_(0.36e2), SC_(0.81472369384765625e3), SC_(0.31805284832302734783735872178451062267986916005535e63), + SC_(0.36e2), SC_(0.835008544921875e3), SC_(0.80427224577995045297081384061933456722295034711368e63), + SC_(0.36e2), SC_(0.90579193115234375e3), SC_(0.17180125938368536870586199334103942944296763636498e65), + SC_(0.36e2), SC_(0.9133758544921875e3), SC_(0.2349585543781729049082862094571853647181110727758e65), + SC_(0.36e2), SC_(0.9575068359375e3), SC_(0.13788032216346989091599957999852901194859847097388e66), + SC_(0.36e2), SC_(0.96488848876953125e3), SC_(0.18383754088256510557951005527578044897458936835611e66), + SC_(0.36e2), SC_(0.9676949462890625e3), SC_(0.20496108373672385020966386552222912655862108987654e66), + SC_(0.36e2), SC_(0.9688677978515625e3), SC_(0.21447176171446511024838576925006696393416059852805e66), + SC_(0.36e2), SC_(0.99288128662109375e3), SC_(0.53619191227443818889184097649341805455543103147757e66), + SC_(0.36e2), SC_(0.9964613037109375e3), SC_(0.6134634193224111642857607073780448563124536964454e66), + SC_(0.38e2), SC_(0.9754039764404296875e2), SC_(0.13026109621262939918139850088931337407072881569374e21), + SC_(0.38e2), SC_(0.12698681640625e3), SC_(-0.39045802697684580087249595226480504736900650572604e27), + SC_(0.38e2), SC_(0.1354770050048828125e3), SC_(0.4703084156408515882792903403585270483597230661564e28), + SC_(0.38e2), SC_(0.1883819732666015625e3), SC_(0.21811950666425589665298269088166544127028329061958e38), + SC_(0.38e2), SC_(0.2210340576171875e3), SC_(0.68226335876612312689262066243026383595759661918497e41), + SC_(0.38e2), SC_(0.27849822998046875e3), SC_(0.3417431296914681619225852746415756851618849310483e46), + SC_(0.38e2), SC_(0.30816705322265625e3), SC_(0.31970819524145633109548465679514234447503951190819e48), + SC_(0.38e2), SC_(0.5468814697265625e3), SC_(0.12178742579145686663348414006307088453127654992376e59), + SC_(0.38e2), SC_(0.5472205810546875e3), SC_(0.12492841620300639426815182320836485753685517201536e59), + SC_(0.38e2), SC_(0.6323592529296875e3), SC_(0.45810661530573839216333825165973798523285084973924e61), + SC_(0.38e2), SC_(0.81472369384765625e3), SC_(0.12351347140304796554466586331231292139128275112892e66), + SC_(0.38e2), SC_(0.835008544921875e3), SC_(0.32975853153845151581573454625890910497305801446349e66), + SC_(0.38e2), SC_(0.90579193115234375e3), SC_(0.84216312274962467518837779101216307869158288654706e67), + SC_(0.38e2), SC_(0.9133758544921875e3), SC_(0.11729374185740406136241147249355309364674121773484e68), + SC_(0.38e2), SC_(0.9575068359375e3), SC_(0.76287452793236059887210998415733522854114359820263e68), + SC_(0.38e2), SC_(0.96488848876953125e3), SC_(0.10342759141411866835170522110986503338234205828331e69), + SC_(0.38e2), SC_(0.9676949462890625e3), SC_(0.11604186211493955868813819686880547173842867350967e69), + SC_(0.38e2), SC_(0.9688677978515625e3), SC_(0.12174646477307642518592858476271949696633470067733e69), + SC_(0.38e2), SC_(0.99288128662109375e3), SC_(0.32098315809650975303906367704092470560267558301581e69), + SC_(0.38e2), SC_(0.9964613037109375e3), SC_(0.37011679718261969297940214190611219199030995011675e69), + SC_(0.39e2), SC_(0.9754039764404296875e2), SC_(-0.81788056310459660065120382039447835033044197049489e20), + SC_(0.39e2), SC_(0.12698681640625e3), SC_(0.22229715039776080683928576767759683825519547792559e27), + SC_(0.39e2), SC_(0.1354770050048828125e3), SC_(0.15550461280029801190156888344119462891700106953436e29), + SC_(0.39e2), SC_(0.1883819732666015625e3), SC_(-0.54226895058411233344275595074274527247091920347531e38), + SC_(0.39e2), SC_(0.2210340576171875e3), SC_(-0.23342183174200163814210714804874246930233709812346e42), + SC_(0.39e2), SC_(0.27849822998046875e3), SC_(-0.17013038203469478431364477259901167967979013129897e47), + SC_(0.39e2), SC_(0.30816705322265625e3), SC_(-0.18429253515276943444879261921619357066598024943888e49), + SC_(0.39e2), SC_(0.5468814697265625e3), SC_(-0.14577093593047894021012074885872239431277128765197e60), + SC_(0.39e2), SC_(0.5472205810546875e3), SC_(-0.14963982369811780116397608759812127691336981298577e60), + SC_(0.39e2), SC_(0.6323592529296875e3), SC_(-0.6492862403071900096406830281442380096038500168606e62), + SC_(0.39e2), SC_(0.81472369384765625e3), SC_(-0.23301820931113238390488179765094297019115309966495e67), + SC_(0.39e2), SC_(0.835008544921875e3), SC_(-0.6393122118320767120277111175042508309950280050084e67), + SC_(0.39e2), SC_(0.90579193115234375e3), SC_(-0.1785926484809201389439108598459489796533771170743e69), + SC_(0.39e2), SC_(0.9133758544921875e3), SC_(-0.25102368049271316850934544583200188325859894245069e69), + SC_(0.39e2), SC_(0.9575068359375e3), SC_(-0.17191430467481203804500407886563167282958450012617e70), + SC_(0.39e2), SC_(0.96488848876953125e3), SC_(-0.2350360204862166230883463530178770075607651772555e70), + SC_(0.39e2), SC_(0.9676949462890625e3), SC_(-0.26453813089044823183666856904573749479668606778886e70), + SC_(0.39e2), SC_(0.9688677978515625e3), SC_(-0.27790958611107454497958236687689216620181150284596e70), + SC_(0.39e2), SC_(0.99288128662109375e3), SC_(-0.75250430660256030378942490914723092683335523198301e70), + SC_(0.39e2), SC_(0.9964613037109375e3), SC_(-0.87109521955089946525219892186343098358449543636311e70) + }; +#undef SC_ + diff --git a/test/laguerre3.ipp b/test/laguerre3.ipp new file mode 100644 index 000000000..3567163f7 --- /dev/null +++ b/test/laguerre3.ipp @@ -0,0 +1,2250 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 2240> laguerre3 = { + SC_(0.6e1), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(0.61248773400035441372705568899743424188675775638604e9), + SC_(0.6e1), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.35204789737752362425049635886299775785128782532338e10), + SC_(0.6e1), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.53680020529340456542399945558001901900007952546989e10), + SC_(0.6e1), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.44534031167752568381323984620072514172994661540171e11), + SC_(0.6e1), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.12226434763229329677261432059244153549746269983841e12), + SC_(0.6e1), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.51928144111428742292292453631991614690587389994904e12), + SC_(0.6e1), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.97428426563622634057559347373791034771828164883086e12), + SC_(0.6e1), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.3324381244018248505151003408444078258062512743881e14), + SC_(0.6e1), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.33370020703520225304974334354074929274249826530701e14), + SC_(0.6e1), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.80676208197265431223389966116130786752172758946929e14), + SC_(0.6e1), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.37709198164073899574491439717306334644653651087643e15), + SC_(0.6e1), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.43784677681230003590939175326930086254310296977861e15), + SC_(0.6e1), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.71751164134703529160531275753374390004620108776236e15), + SC_(0.6e1), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.75474163633107959381273333540455867778846765466731e15), + SC_(0.6e1), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.10048213277050885981803871378237693755448856069989e16), + SC_(0.6e1), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.10527174037983159903287634170928938343127358723874e16), + SC_(0.6e1), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.10714192604719650298629709048594099989758377336641e16), + SC_(0.6e1), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.10793165886036598413491640043052411777219226808173e16), + SC_(0.6e1), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.12520056327602887353590139034934048397213872282597e16), + SC_(0.6e1), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.12796190491413846860531891431736127176350842769258e16), + SC_(0.6e1), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.57021748735352796844833665641714981145537658965832e9), + SC_(0.6e1), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.33392337350031500089312750393952812869969520242424e10), + SC_(0.6e1), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.51104706607057706503593300411908865340079809564711e10), + SC_(0.6e1), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.43033684039351042149204372971415695875947452322601e11), + SC_(0.6e1), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.11878421144708082332834762334306478479136415095637e12), + SC_(0.6e1), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.50766913019696586493282931975810537104713641422173e12), + SC_(0.6e1), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.95466760718538857591082062972549747072346150612994e12), + SC_(0.6e1), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.32872226240917190297091739750525454366627699186064e14), + SC_(0.6e1), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.32997259328655255330496759553150199138853700279145e14), + SC_(0.6e1), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.79898329260889892967192058996859678757129709781078e14), + SC_(0.6e1), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.37428017493482775405894670005457409154697608991328e15), + SC_(0.6e1), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.43466223450876443481509940956447737669130708637296e15), + SC_(0.6e1), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.71270545904261412829731553082318032163659205189309e15), + SC_(0.6e1), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.7497285196890962326633452898612092751671091947701e15), + SC_(0.6e1), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.99845803303929955008572627409241608030868175838179e15), + SC_(0.6e1), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.10461023358117816588476498791118019449318399295782e16), + SC_(0.6e1), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.10647064052554109781969489136618692170398077176558e16), + SC_(0.6e1), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.10725625259217407089116034019717976945427232766523e16), + SC_(0.6e1), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.12443623656417308867522424203310475916181187862679e16), + SC_(0.6e1), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.12718355604200258530774511416682851768226221644704e16), + SC_(0.6e1), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.49284811793209280365434949754966958001727610684493e9), + SC_(0.6e1), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.29997862506208045020727302705263463492969194184528e10), + SC_(0.6e1), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.46259460134591536879819144489901451018431480056059e10), + SC_(0.6e1), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.40158369321443255951219796747513198534532980552585e11), + SC_(0.6e1), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.1120699625624019830448773936385820118244175747615e12), + SC_(0.6e1), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.48509038473703058950212476663392650648272020840751e12), + SC_(0.6e1), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.91641718510448442971341501529316096562199222581998e12), + SC_(0.6e1), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.32139411296589331991485384644984994696859399675058e14), + SC_(0.6e1), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.32262120245377330138811808763450924797742804132045e14), + SC_(0.6e1), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.78361281470358220056716850107433788659136608638212e14), + SC_(0.6e1), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.36870888982652886020361269968737789868814568588064e15), + SC_(0.6e1), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.42835095990188177652844730504615356961881860142468e15), + SC_(0.6e1), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.70317345799024105504252323584691230510601850060279e15), + SC_(0.6e1), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.73978540734723097232993500405412015992828695917165e15), + SC_(0.6e1), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.98583204388899485014640108498828265136751380914859e15), + SC_(0.6e1), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.10329759730285883611535736100827742332871039794527e16), + SC_(0.6e1), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.10513856938469798930399543075676194173463962645542e16), + SC_(0.6e1), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.10591599150778794161004483492934728758631873253144e16), + SC_(0.6e1), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.1229192323834801613580240381635673120588670474927e16), + SC_(0.6e1), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.12563867825730434806513584802886506865386445819117e16), + SC_(0.6e1), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.31056176609328262744354290307490499447749128627984e9), + SC_(0.6e1), SC_(0.13e2), SC_(0.12698681640625e3), SC_(0.21474641645375196945003617651061372691638804186296e10), + SC_(0.6e1), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.33939912866617433675302309449585922660229492695138e10), + SC_(0.6e1), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.3246939393485798363604662321181037517515150375214e11), + SC_(0.6e1), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.93785476831971153918912095143821834557237292167987e11), + SC_(0.6e1), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.42229348699358054630103206097276707070997137917402e12), + SC_(0.6e1), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.80921665035606831983918570980305083995391250863279e12), + SC_(0.6e1), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.30021987362168608006705510091464548855616102605746e14), + SC_(0.6e1), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.3013793009404698889289850495408042782537109837479e14), + SC_(0.6e1), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.7389695059502189306373674846273437884319461768123e14), + SC_(0.6e1), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.35240744843758068568366054624709488158274087060876e15), + SC_(0.6e1), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.4098729207588772848089021141281301420706627999216e15), + SC_(0.6e1), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.67521178818255342139438661537971495337615596039104e15), + SC_(0.6e1), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.71061224267344889512925363465089197035709820934262e15), + SC_(0.6e1), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.94874872695964208516621641733125659722361544545777e15), + SC_(0.6e1), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.99441667971961652225223077796484088222447277866909e15), + SC_(0.6e1), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.10122530692858831068332258430998293296495283930143e16), + SC_(0.6e1), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.10197856775415755500167732055815127952881513946199e16), + SC_(0.6e1), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.11846028047307665541922047585702480764211063113749e16), + SC_(0.6e1), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.12109745881583554125132338218009211405499508666071e16), + SC_(0.6e1), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.24278455726195980361923424496753165147487010730985e9), + SC_(0.6e1), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.18030561300133652370839361014673853459811752535873e10), + SC_(0.6e1), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.28881912653305133981890911698470926640429114963515e10), + SC_(0.6e1), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.29108812862427597218212064605049495961212544330731e11), + SC_(0.6e1), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.85616143635967071526809182235517018079343589729518e11), + SC_(0.6e1), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.39352212446993374561133734251485121814802348879652e12), + SC_(0.6e1), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.75965534404424419844204496845212470192096727671235e12), + SC_(0.6e1), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.29007606682763749078137760938450840888887892431046e14), + SC_(0.6e1), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.29120279915635749780172021234758221516201513893146e14), + SC_(0.6e1), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.71745423807489525509070867847267145602821278253669e14), + SC_(0.6e1), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.34448448721794017468717487738286623037893967559024e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.4008857272032547098139448124146495500684039156006e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.66158192958719979428580597488440490193264309489379e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.69638877078679263739469509705373976108324301755808e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.9306471468871133044489467037648480350793545046173e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.97559109159816676915953242609482016333608597005721e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.99314621712374015523569716516073804333679788291835e15), + SC_(0.6e1), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.10005602904979136235528290138828979990104151199654e16), + SC_(0.6e1), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.11628181660003715807927735007640600139772036681539e16), + SC_(0.6e1), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.11887861388958864158184058615107773425485087664827e16), + SC_(0.6e1), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.22309335653387736494310721981505397269088117661973e9), + SC_(0.6e1), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.16989221636139193381325228565875327380060701000354e10), + SC_(0.6e1), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.27341067762482514123133136489132498264704946000748e10), + SC_(0.6e1), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.28054797583055755151994997428941789365119484852733e11), + SC_(0.6e1), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.83027843509612007538993540360122495875672501473246e11), + SC_(0.6e1), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.38430118332897729090795123137235693236025494217705e12), + SC_(0.6e1), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.74370607174932254937454808736955812958708844808005e12), + SC_(0.6e1), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.28675882807252638302604168226582949972059845232418e14), + SC_(0.6e1), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.28787482721484525669184501655178856435990926591034e14), + SC_(0.6e1), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.71039936747584251596658119656419799500423645170633e14), + SC_(0.6e1), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.34187667987176147122943487377169456156512676186783e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.3979266971096269031664978356460423014801874194127e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.65708986178291296466389097975953830127225652838055e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.69170060942959882164308394065320608453667121070456e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.92467756155357394469763677609918463328256277300454e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.9693822194793565324003870619174741124567454813067e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.98684438214284245747452658604014567509934172562005e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.9942192768918591144094672304162837084176807851261e15), + SC_(0.6e1), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.11556311630008029484805513108607960025482527214338e16), + SC_(0.6e1), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.11814656361262310323168186358564055763512052428856e16), + SC_(0.6e1), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.20472704063585550572054075403266601673974226695776e9), + SC_(0.6e1), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.15997889262816446708281543607323243912570229527701e10), + SC_(0.6e1), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.25868597662803047883961134532020870343614747398855e10), + SC_(0.6e1), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.2703255997940056487508759349934282273548803505756e11), + SC_(0.6e1), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.80504712142545830147413723108570439687353136010007e11), + SC_(0.6e1), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.37526023270465036692532134830793943113993440173405e12), + SC_(0.6e1), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.7280357733096316479015820934739475713653365420028e12), + SC_(0.6e1), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.28347319935904825425003716294190117634582641535533e14), + SC_(0.6e1), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.28457854710332732427862760747600280129524146103231e14), + SC_(0.6e1), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.70340230337322354287887370031837408689205236722915e14), + SC_(0.6e1), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.33928532323866537276985347969554661936977357178908e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.394985867474115863830769160644688844359708678963e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.65262321045709583453053595283373997823597487494525e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.68703874832734710727831921962607909094608729357816e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.91873988506019802302087295182743488563062439489215e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.96320627537289498588052934051700431881826025020999e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.98057586899137901094485009404002119831895812692111e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.98791175073829953268191648688861705308879039964707e15), + SC_(0.6e1), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.11484811762474479414963902337591060686954480309955e16), + SC_(0.6e1), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.11741826986419223750776857560528002452315184531949e16), + SC_(0.6e1), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.18761460449981524043369054387724982176351982725087e9), + SC_(0.6e1), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.15054647153702910909609626497135024525439296451247e10), + SC_(0.6e1), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(0.24462079498615275113443202393413586386847989290027e10), + SC_(0.6e1), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.26041334231383446365108360062827659690683870156163e11), + SC_(0.6e1), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.78045437623836571934474494248511821324408483248655e11), + SC_(0.6e1), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.36639646286530571873201058492025378062954144612149e12), + SC_(0.6e1), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.71264054610154159953190976324587324166673183741124e12), + SC_(0.6e1), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.28021893973645105557062633383604925307129880583555e14), + SC_(0.6e1), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.28131371740366029192812388504563846746381174260792e14), + SC_(0.6e1), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.69646266686380072622018077547850562592743043673864e14), + SC_(0.6e1), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.33671033430135016309268384982805298891076656915505e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.39206314874154852521985239871756570568259940811869e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.64818186056623930598750506763920821307507264083892e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.68240306944926664885772794899947157348885752289274e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.91283398096222317653686205605693483643506280778013e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.95706311957843483197898948086674703868502877212331e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.97434053671779183851887408367976927638954191816106e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.98163757056057568724796637425147719028678450613088e15), + SC_(0.6e1), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.11413680532238488326260275605844568908655692453017e16), + SC_(0.6e1), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.11669371722330319882997811510591362069747527848209e16), + SC_(0.8e1), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(0.67715006694439331210368043397959491308636568103362e11), + SC_(0.8e1), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.73817303030957317323371394486904472697229926525406e12), + SC_(0.8e1), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.13098558591448318697071777220856583432999831498671e13), + SC_(0.8e1), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.22977424102575837424702215555898144786349856858211e14), + SC_(0.8e1), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.89702582414011428545171276160388908028107073825988e14), + SC_(0.8e1), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.62798003429155639989236762060722455740467329281041e15), + SC_(0.8e1), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.14624651702194449024597721116057402923773627105075e16), + SC_(0.8e1), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.16596857649089166578836876429002431247941308584683e18), + SC_(0.8e1), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.16681248175420993528938078859472985884759360147021e18), + SC_(0.8e1), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.5435554822080933731633077044432198124008991818063e18), + SC_(0.8e1), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.4273468551248211353795732342515325148969499319854e19), + SC_(0.8e1), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.52179236460848158751192695480449955221394422074323e19), + SC_(0.8e1), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.10096885049765082869829217105395829032895964658858e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.10803050810137912008698161866483343277738463515917e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.15835541759093552308603119943991308006156521250075e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.16852126907427937325182482573141155932096619817246e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.17253346363615269759989102409559177134758905831796e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.17423481269330380781864215079437338191352169792228e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.21245099484407530108678077640469477278300888718997e20), + SC_(0.8e1), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.21873459892109164125208544943714137488770982237018e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.61302099126643393145903758273914829012173637835484e11), + SC_(0.8e1), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.6864674936827371981309267525189425700520367170897e12), + SC_(0.8e1), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.12244944388490422172498339573515672991127089116904e13), + SC_(0.8e1), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.21932329790412455879351274835620473667598919254324e14), + SC_(0.8e1), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.86262731137879792307762287152978657943206605974738e14), + SC_(0.8e1), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.60910586651842165569974325349901866652963033929584e15), + SC_(0.8e1), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.14229226983421378564979194277828747332017690851019e16), + SC_(0.8e1), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.16348551593670760291014787563508413471091998572553e18), + SC_(0.8e1), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.16431837769992427427159144244295674195115025874701e18), + SC_(0.8e1), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.53654437917855760536879348025818053129362946648891e18), + SC_(0.8e1), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.42308732721576030811659045999023438305875469229261e19), + SC_(0.8e1), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.51671968275443647976974127944181455156395297550016e19), + SC_(0.8e1), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.10006502008647809813010846994847289141346923328038e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.10707160285899236931180881971209147390217006318054e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.15701543451779865383265510411255132031181098785104e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.16710631265412616932612303877122888719690329365954e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.17108907442051658867725191756715355685460367230275e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.17277796858988693082176870257954838459407004651476e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.21071810697535905198128996817505895298605570847497e20), + SC_(0.8e1), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.21695694711797939215198655170013954670775223995221e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.50029881584531259711920692545205427742741024520243e11), + SC_(0.8e1), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.5923877231722611609847160647550282495507852077825e12), + SC_(0.8e1), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.1068124000653320696456438820480332694255893482414e13), + SC_(0.8e1), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.19965450425673391029509622797710792277311212027616e14), + SC_(0.8e1), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.79725871757929772594113857945850169649490770738922e14), + SC_(0.8e1), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.57283516772951066580630752081192647112999433645674e15), + SC_(0.8e1), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.13466249318776619676463009132764907736828958763943e16), + SC_(0.8e1), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.15861654244188167296631897990556936176344594072965e18), + SC_(0.8e1), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.15942768764717564714587924805509094546621329882249e18), + SC_(0.8e1), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.52275878780177586583731873317935504589087735645493e18), + SC_(0.8e1), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.414679439454610646771291688620843517702282962541e19), + SC_(0.8e1), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.50670345354101649193921284498416666091452730055264e19), + SC_(0.8e1), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.98278549520803007764840007705858890290864151476072e19), + SC_(0.8e1), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.10517608509131201524266939026120374447150954396375e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.15436516925834427732132986324330006939196579468999e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.16430752001169520718606858255894957082474945476951e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.16823197041815305953469961210311689243066992148067e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.16989618885587841922445274617601730300241166819919e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.20728935832080655369872625308042729171705529931609e20), + SC_(0.8e1), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.21343948921007846007850127862298152393080261904481e20), + SC_(0.8e1), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.26205600051336500119631398576848853214404144005735e11), + SC_(0.8e1), SC_(0.13e2), SC_(0.12698681640625e3), SC_(0.37373031395238729260803608361341296270349897424314e12), + SC_(0.8e1), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.69792336361967502372217127773886947143711522459029e12), + SC_(0.8e1), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.14954212616902133777970414205064801567654217158155e14), + SC_(0.8e1), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.62629057993079616681118660592038197731615796553851e14), + SC_(0.8e1), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.47506506357298101360013372031674176298886189971056e15), + SC_(0.8e1), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.11387035424175230766707550800262637222525017276979e16), + SC_(0.8e1), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.1447609716125466448161535814716822969313398687385e18), + SC_(0.8e1), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.145509848411255016265804057552487899128865574865e18), + SC_(0.8e1), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.48324059338057372602814032302253660879514632804142e18), + SC_(0.8e1), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.390325343461725165775617628261476847529799805715e19), + SC_(0.8e1), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.47766543009018009813468897230936146536131204089437e19), + SC_(0.8e1), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.93085271323655866757533430738735356979379548719926e19), + SC_(0.8e1), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.99664338449439748393646255557139819201067567385988e19), + SC_(0.8e1), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.14664748903424211264003171767673666493956579769087e20), + SC_(0.8e1), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.15615543369403949823701415240056856426889124840719e20), + SC_(0.8e1), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.15990931456080405920651603260574251215154813968338e20), + SC_(0.8e1), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.16150134894756415770748474866665345678933826570185e20), + SC_(0.8e1), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.19729393014358609524745292873466628096681907555511e20), + SC_(0.8e1), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.20318438276702455138600991007603156943792552030292e20), + SC_(0.8e1), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.18523340702622345396830045774502873973472244662797e11), + SC_(0.8e1), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.29352448817711353285068929637944553541761939201641e12), + SC_(0.8e1), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.55882039118204375397257490391999104088555310137965e12), + SC_(0.8e1), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.12887721563060981713791748488966687854941501184506e14), + SC_(0.8e1), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.5534835054316147099803970882567515534474925412204e14), + SC_(0.8e1), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.4318852975077349565047906564578001830017460549125e15), + SC_(0.8e1), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.10456739289032081150155682185021244935964264116148e16), + SC_(0.8e1), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.13823855646268530098279890270785012636408063897842e18), + SC_(0.8e1), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.13895786447346802195540481932582399973876439819461e18), + SC_(0.8e1), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.46447923869666349879137052595602565650284369810052e18), + SC_(0.8e1), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.3786240833274428477773540720801879135635388410226e19), + SC_(0.8e1), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.46369978861368662689633690808972034647894499609949e19), + SC_(0.8e1), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.90579791644923363462497932185143919572402638218542e19), + SC_(0.8e1), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.97004403811391032094402207973974435006308836017962e19), + SC_(0.8e1), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.14291673730989423570325074578687191942679918963255e20), + SC_(0.8e1), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.15221364432894564416149507074418034397046905053101e20), + SC_(0.8e1), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.15588464842825309715035512372147441803644960832785e20), + SC_(0.8e1), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.1574416077294093629633384150485601697864003189673e20), + SC_(0.8e1), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.19245614590761948362411807428969920559405312979152e20), + SC_(0.8e1), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.19822031971404707846169971267269875744903562791799e20), + SC_(0.8e1), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.16435495503294283577044187127680877690731714083345e11), + SC_(0.8e1), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.27032763521372139525375029575205264598044386573662e12), + SC_(0.8e1), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.51812875534299678246884844285846263902126079704557e12), + SC_(0.8e1), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.1225641701315042423183192307725032471825189192879e14), + SC_(0.8e1), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.5309097698059863085654579127544287776126008934302e14), + SC_(0.8e1), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.41827300005196231599682651279308191477904704740216e15), + SC_(0.8e1), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.10161728298775619413848042606036024652772647738027e16), + SC_(0.8e1), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.13612221320525920768361562679601552643294472022654e18), + SC_(0.8e1), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.13683188958706194697599003449875396090702703154239e18), + SC_(0.8e1), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.45836847626451074414940237861976192306244544133263e18), + SC_(0.8e1), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.374792386877437430315049855309289603541292806683e19), + SC_(0.8e1), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.4591245552746346983813892304733845030790072677193e19), + SC_(0.8e1), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.89757833528591955770101345829130018609299434541724e19), + SC_(0.8e1), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.96131655541110427454562641441548071655958469099035e19), + SC_(0.8e1), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.14169172665429954018744050926830465856301603985805e20), + SC_(0.8e1), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.15091918508015939123088509344542542089783364314847e20), + SC_(0.8e1), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.15456291407438947560805120661002236736580363846838e20), + SC_(0.8e1), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.15610832970117494385869853803333273051787627322398e20), + SC_(0.8e1), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.19086675973616140651530751166383392507207541193023e20), + SC_(0.8e1), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.19658935907488061093622127907845282608828780339934e20), + SC_(0.8e1), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.1455237734460207726297886923489154742473092577085e11), + SC_(0.8e1), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.2487305711766109023276394494853920809345253624096e12), + SC_(0.8e1), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.48002397927023011575351809525013632419132996745139e12), + SC_(0.8e1), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.11652145023219267314747185259033304404297770708132e14), + SC_(0.8e1), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.50914108130178336545199287448319170617458277700009e14), + SC_(0.8e1), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.40503596282889432585578769047667158598748797429356e15), + SC_(0.8e1), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.98739976662522539940194188479855438452946847253252e15), + SC_(0.8e1), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.1340342172677690192098573546004751166194433841162e18), + SC_(0.8e1), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.13473437255536620472900311243243152235541918903627e18), + SC_(0.8e1), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.45232805406269531186172211865353002703073638980146e18), + SC_(0.8e1), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.37099461895975587939002262388636084818098374970058e19), + SC_(0.8e1), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.45458882052233018145282462977311312856350551020701e19), + SC_(0.8e1), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.88942401644365119036050064832644455045978590613656e19), + SC_(0.8e1), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.95265777658313096285795858101317969096517563053044e19), + SC_(0.8e1), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.14047590339755544665186048147925567204808919632749e20), + SC_(0.8e1), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.14963435789412686725013392144007566786838641836842e20), + SC_(0.8e1), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.15325098547921576785585673799951071690714085819018e20), + SC_(0.8e1), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.15478493079044790774938548018297417741988311538465e20), + SC_(0.8e1), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.18928885837646580388591191294030623561078464854925e20), + SC_(0.8e1), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.19497014026270056263449362234176742272999229406522e20), + SC_(0.8e1), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.12856873790409686189347241885979466980493657285606e11), + SC_(0.8e1), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.22863897185487070049248956586844501834115078872771e12), + SC_(0.8e1), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(0.4443654111473249765495320678811513680000839367862e12), + SC_(0.8e1), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.11073914367519493844027555800879111750034333357629e14), + SC_(0.8e1), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.48815284717381878805787258115443975294980874540247e14), + SC_(0.8e1), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.39216532206869164143348087874518151097655844263108e15), + SC_(0.8e1), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.95933934391899039901861141875675217702333890309978e15), + SC_(0.8e1), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.13197424322425247584165614503831831173124917788644e18), + SC_(0.8e1), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.13266498689541082851120900275461364765055772770441e18), + SC_(0.8e1), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.44635727812756625964666387676484598156162008131397e18), + SC_(0.8e1), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.36723052207550446348130466084841489811956576937507e19), + SC_(0.8e1), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.45009229208489981937678201431271351061857201263553e19), + SC_(0.8e1), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.88133451578743944695058658886835283564788497411996e19), + SC_(0.8e1), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.94406723806210257783517652040577861252811545582282e19), + SC_(0.8e1), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.13926920848062097534804582231076725488152670342501e20), + SC_(0.8e1), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.14835910133929012761770253932953458230932604387611e20), + SC_(0.8e1), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.15194880028940923802204745812983586414124197333115e20), + SC_(0.8e1), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.15347134825542647739694490199635813909379282539038e20), + SC_(0.8e1), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.18772237069730243974484257449238439071840254086073e20), + SC_(0.8e1), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.19336259082224284465264896341659261073376653225895e20), + SC_(0.11e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.2654889513620312899509622905805297409365029571346e14), + SC_(0.11e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(-0.81115902648784667641185275246238844520373452897371e15), + SC_(0.11e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(-0.18303177801793206294198107175735995171382374716554e16), + SC_(0.11e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(-0.10362838518885829819552800019438641893900246820923e18), + SC_(0.11e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(-0.69734704097532272722141569113044686708404135376113e18), + SC_(0.11e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(-0.10522211502686932614640768244048940260106379941192e20), + SC_(0.11e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(-0.34107339289224241052789636524169975289845647416489e20), + SC_(0.11e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(-0.24072773216663507048509584241925850900805754581485e23), + SC_(0.11e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(-0.24242232838565992362685520446389253906141174455606e23), + SC_(0.11e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(-0.12411154970271265927561376866342160654493910392942e24), + SC_(0.11e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(-0.21410129593338849822100499569387110948424755161124e25), + SC_(0.11e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(-0.28203925001699859587572608553481047640744138844515e25), + SC_(0.11e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(-0.70134003056787947871720938847553330941633839594574e25), + SC_(0.11e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(-0.76990308490274215720852975650583096964781237682073e25), + SC_(0.11e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(-0.13048719354757900151200163995608577257302425662115e26), + SC_(0.11e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(-0.14218162449436221009130053183039474271867088074342e26), + SC_(0.11e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(-0.1468721441925118729790840910911249950717069916788e26), + SC_(0.11e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(-0.14887370644938910462057842329445974287143894697588e26), + SC_(0.11e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(-0.19571076528400033122280880328554895378487065013398e26), + SC_(0.11e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(-0.2037393778116807934910772001986582338275962326715e26), + SC_(0.11e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.22918952906373994072097950582497674882707489024392e14), + SC_(0.11e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.73041964998999856830365433264431033124408793228917e15), + SC_(0.11e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(-0.16612960429082370458421577225205805175841639064411e16), + SC_(0.11e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.97018865877489785536449493423953754325325866249193e17), + SC_(0.11e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.65997769350597274070873216045696912908473229553669e18), + SC_(0.11e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.10081964490177939391669722440701060744101119976398e20), + SC_(0.11e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.32825276631470436842165035722211891612476752436023e20), + SC_(0.11e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.23574648194090967083023273640861338315277346145925e23), + SC_(0.11e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.23740921247709684499306633202845230723180756124965e23), + SC_(0.11e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.12189926779977627760333872375927493941085072875383e24), + SC_(0.11e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.21115568713539824523954704739784049841436440978665e25), + SC_(0.11e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.27825498237488086881149742902897221281528466735298e25), + SC_(0.11e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.69267783481277876159700247128485466511427236849697e25), + SC_(0.11e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.76047437600786628647511744572821765374892979052873e25), + SC_(0.11e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.12896401741742076242343033403989113421097788702529e26), + SC_(0.11e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.14053484125439343471902052403103515238017323914548e26), + SC_(0.11e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.14517604700571381534492255609244246916253518313612e26), + SC_(0.11e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.14715660958730284226057942267657991682388251226149e26), + SC_(0.11e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.19350890358516091987303969149063122054477936168068e26), + SC_(0.11e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.20145555320322521930807018455535636727796572671007e26), + SC_(0.11e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.16958585581594607097295153207343594718459181376761e14), + SC_(0.11e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(-0.59023401437588327267062005651833438346118943127075e15), + SC_(0.11e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.13646998766591427587511403953781296911609259101083e16), + SC_(0.11e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(-0.84928928065825130329877476108452350916912201421678e17), + SC_(0.11e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.59061862567375597034786113437101235930675237745957e18), + SC_(0.11e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.92511218502269766642756868755907224213695843921581e19), + SC_(0.11e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.3039121159201599712146161074049379472731023751431e20), + SC_(0.11e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.22606349173557214348012634186082994349473475318186e23), + SC_(0.11e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.22766410057758185354644302490839019475244512950292e23), + SC_(0.11e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.11758172362527371866558266573619679615007448541372e24), + SC_(0.11e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.20537457692346387649876764905861750513415633817835e25), + SC_(0.11e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.27082441584092159936673844002881905895550196010877e25), + SC_(0.11e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.67564423516083963314259881941111016741900293433894e25), + SC_(0.11e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.74193081810531929322961299295322862052577009759575e25), + SC_(0.11e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.12596600093333655793274005603399152562677835449588e26), + SC_(0.11e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.13729312810307112508553928833908426501325931892589e26), + SC_(0.11e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.1418371018663457935210323066076506948251250550189e26), + SC_(0.11e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.14377625829014690115835287415265973556300425205109e26), + SC_(0.11e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.18917253248512115182763300374822280258577803750661e26), + SC_(0.11e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.19695750931770426740326570123804745930767113448983e26), + SC_(0.11e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.64420104398621373943337896751502702669528961726701e13), + SC_(0.11e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.3024232887864172498464577114594820104540271195964e15), + SC_(0.11e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(-0.73808122395959669985981500802166438905423230324203e15), + SC_(0.11e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(-0.56366295474973599689942144445294137459430926727971e17), + SC_(0.11e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.42021616650043858255184060857715608341012712975699e18), + SC_(0.11e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.71166981311102060286589503944822486236356087786369e19), + SC_(0.11e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.240370682841446123897814293219511399040233827311e20), + SC_(0.11e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.19913936705005225147699715498074540532349127374583e23), + SC_(0.11e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.20056591745714354754624181283742675046827935984615e23), + SC_(0.11e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.1054484536772156392346883807040992393965652295082e24), + SC_(0.11e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.18888276664991738582202828909330761791879606281357e25), + SC_(0.11e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.24960060126582100505951654402810154041817565602064e25), + SC_(0.11e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.62680011405943049978015103342941915821581899329213e25), + SC_(0.11e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.68873646781387944384723081694123781350139686823305e25), + SC_(0.11e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.11734768728892171131333210760531661498579662714689e26), + SC_(0.11e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.12797115823661832064703359842964867004313204542155e26), + SC_(0.11e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.13223432433629925182729242715614129367111286521269e26), + SC_(0.11e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.13405388953558674398463738806767626578491123984891e26), + SC_(0.11e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.17668752490617326721187573488433906452619563687806e26), + SC_(0.11e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.18400507034655644693471665674772407728528583781447e26), + SC_(0.11e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(-0.38057773025950007011433938578152274885854686279073e13), + SC_(0.11e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(-0.21257728460504762101588904440616909660868350634803e15), + SC_(0.11e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(-0.53466483709829787588430660084701911858549149164171e15), + SC_(0.11e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(-0.45630394111540644149132092366374209497812461895313e17), + SC_(0.11e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(-0.35293630489753437359931148235227579212050882960221e18), + SC_(0.11e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(-0.62264213386115029051141580300639173840126979291097e19), + SC_(0.11e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(-0.21334814099760262201799426040773769408601031650255e20), + SC_(0.11e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(-0.1867994623823792738421969432962968916403080478257e23), + SC_(0.11e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(-0.18814552901252353984179681851065922765347730623698e23), + SC_(0.11e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(-0.99818386465219789941768899647738808852451608293366e23), + SC_(0.11e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(-0.18109627147419215781748830714773982707131922235748e25), + SC_(0.11e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(-0.23956543775264971756101290974171542030662220798159e25), + SC_(0.11e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(-0.60360082588325970072887626867629308393586545333928e25), + SC_(0.11e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(-0.66345982639185044591753571011980613032990282286734e25), + SC_(0.11e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(-0.11324254375927948989197977222235751815767526259164e26), + SC_(0.11e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(-0.123529142999845849892314145644740249681359512758e26), + SC_(0.11e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(-0.12765784237079676321261623509836597446906080575884e26), + SC_(0.11e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(-0.12942013523947598980208231989986697239622558341797e26), + SC_(0.11e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(-0.17072996213109986290982330046409789966910173466105e26), + SC_(0.11e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(-0.17782339030237702240778460899315312015090387649893e26), + SC_(0.11e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(-0.31701143747485673927093043589401707044451376507138e13), + SC_(0.11e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(-0.18845389342276811073887560075343064569078610173145e15), + SC_(0.11e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.47902174667541057092297024091753601952701904549563e15), + SC_(0.11e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(-0.42485287587912884259888662446308135041554406172101e17), + SC_(0.11e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(-0.33277531068116750941841789128076410395632751137819e18), + SC_(0.11e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(-0.59528750204833632898436058376380970771974918278532e19), + SC_(0.11e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(-0.20497174898628728011697612124087090434541311659417e20), + SC_(0.11e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(-0.18284300873756345436070368584539621189135349034845e23), + SC_(0.11e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(-0.18416316835944659195229657804961331201400396090374e23), + SC_(0.11e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(-0.98003225311657747582023110913125033212053137139539e23), + SC_(0.11e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(-0.17856627708365344232607111313218265575387883198068e25), + SC_(0.11e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(-0.23630269656410520354976644201774848377234988218507e25), + SC_(0.11e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(-0.59604277290456583334164546701059225003213904332431e25), + SC_(0.11e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(-0.65522337288913879701167843563168909581844975470468e25), + SC_(0.11e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(-0.11190342361401442777889240874201299903181378582893e26), + SC_(0.11e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(-0.12207988548257585591697413948669665281342976921754e26), + SC_(0.11e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(-0.12616461747751417780894813998166341762177246381257e26), + SC_(0.11e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(-0.12790818291151875321420888164921639851281959760912e26), + SC_(0.11e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(-0.16878502485366037199255357413310547116519135939798e26), + SC_(0.11e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(-0.17580513047863062225136663265295850112819552396737e26), + SC_(0.11e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(-0.2630134823976753935638930109755610192696870285461e13), + SC_(0.11e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(-0.16681032554276412627302058363645046229500291315404e15), + SC_(0.11e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.42862761709582401501090039741841954986691762566036e15), + SC_(0.11e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(-0.39537016389253099039775564474483191769364486092522e17), + SC_(0.11e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(-0.31366044530205691007535921357641963378960303753655e18), + SC_(0.11e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(-0.56902488553618315562186379436794723110046238483825e19), + SC_(0.11e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(-0.19689422029159103883485961523868449679656022681374e20), + SC_(0.11e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(-0.17896272769745241294919834696660211330277655916077e23), + SC_(0.11e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(-0.18025742902098689331696828742317666456556663123771e23), + SC_(0.11e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(-0.96218069191148681196623939668868818760209721511544e23), + SC_(0.11e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(-0.17606841319897328737463280865987797621532884093821e25), + SC_(0.11e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(-0.23308035059908738518734555323746607423076245199683e25), + SC_(0.11e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(-0.58857075228638333728610341013363089755536555800652e25), + SC_(0.11e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(-0.64707987121534884897302142026095064703574490453895e25), + SC_(0.11e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(-0.11057869884316759515856405662946232526105389738031e26), + SC_(0.11e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(-0.12064608461657512104891381322146937408672826363603e26), + SC_(0.11e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(-0.12468727061862346001987017770804354411687836468454e26), + SC_(0.11e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(-0.12641228772290442809255106301005704551858725174635e26), + SC_(0.11e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(-0.16686022926841747385056997612130920204577570104166e26), + SC_(0.11e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(-0.17380769444883450695584716321421440567290130641382e26), + SC_(0.11e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.21729817764891506437429238683755664863601728748634e13), + SC_(0.11e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(-0.14741794199318079691783150348936010140299278982706e15), + SC_(0.11e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.38303808294839088317154753828178855823718714819912e15), + SC_(0.11e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(-0.36774506601193768994948770895098500569492667323219e17), + SC_(0.11e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(-0.29554289347548519369132966198112693764504042720276e18), + SC_(0.11e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(-0.54381506779248390125978208673092979039231174322549e19), + SC_(0.11e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(-0.18910596152007470826765455628699090391768141377221e20), + SC_(0.11e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(-0.17515729951961390708292251009846421269145994177086e23), + SC_(0.11e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(-0.1764269843472754898275268345413217391716888116616e23), + SC_(0.11e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(-0.944624717464144632193117392510934006509397997893e23), + SC_(0.11e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(-0.17360231258962961745870991242616494004077112966429e25), + SC_(0.11e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(-0.22989794976530417757393086661885387896834929884485e25), + SC_(0.11e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(-0.58118388269419642512280314745882015815270934950093e25), + SC_(0.11e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(-0.63902837730324253969898682883107037820317574425468e25), + SC_(0.11e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(-0.10926823017753051141001936783888318607814071571909e26), + SC_(0.11e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(-0.11922759204274230599800554914651908396667268668742e26), + SC_(0.11e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(-0.12322564984532432043614432623004822411851436713275e26), + SC_(0.11e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(-0.12493229620228475901063146703748691705538945203686e26), + SC_(0.11e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(-0.16495538765300047118143276158613459992646404118956e26), + SC_(0.11e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(-0.17183088885039785427838154802795741719241049007174e26), + SC_(0.12e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(0.15089512149113030156742408314693520900670054202735e15), + SC_(0.12e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.66479267974159821682739049334222655828402804124797e16), + SC_(0.12e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.16315193986400175984544927975327738988661298665481e17), + SC_(0.12e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.13848792695889625458742901153960072205581397409569e19), + SC_(0.12e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.11226666239737710640452918716688528411170504061517e20), + SC_(0.12e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.21995449009979201790368785613984942214775001522725e21), + SC_(0.12e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.79749594517593139345031920557544620084654916353303e21), + SC_(0.12e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.10422811567670420344781231477742925636200236874246e25), + SC_(0.12e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.10503037495440178519973687468607051208500302748839e25), + SC_(0.12e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.62581954269415863047321929870657460657018985074233e25), + SC_(0.12e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.14050660055413122611592689915703959603099115862285e27), + SC_(0.12e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.18986054995819939231881263520022303833576140625492e27), + SC_(0.12e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.51350046097700413765043452210276280871029647322849e27), + SC_(0.12e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.56856706970596173962754521542724001974649764786303e27), + SC_(0.12e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.10116344430865160866332137293516457455345267423119e28), + SC_(0.12e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.11110462050458988440062213131259010000392811950859e28), + SC_(0.12e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.11511347725214371112631884048561813554472540720287e28), + SC_(0.12e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.11682776747246834052550367252666928020390029075862e28), + SC_(0.12e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.15749999743310645827251475403424012152704288120405e28), + SC_(0.12e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.16456902761642253374478422388844458038185868238816e28), + SC_(0.12e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.12797616858475630749532613256443753412399305300296e15), + SC_(0.12e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.59175071474259835999702506007779552515961924801906e16), + SC_(0.12e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.1465389794349193893870277025280715847107713475904e17), + SC_(0.12e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.12878604037114727603378406219720534662328138747077e19), + SC_(0.12e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.1056668854623173789974418655623155928208577176598e20), + SC_(0.12e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.20987252560961407851201813369914836140364889525086e21), + SC_(0.12e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.76467066854446095660815416985323430923407241109701e21), + SC_(0.12e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.10187065085729510673950998741334312253047463412786e25), + SC_(0.12e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.10265628282963081674980621136578598901268495187589e25), + SC_(0.12e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.61362961591418100271288542633064711262910477786695e25), + SC_(0.12e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.13839504368277724366353142868306119104684751452498e27), + SC_(0.12e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.18707800013445058363069766090993331620760855958139e27), + SC_(0.12e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.50657368262887635003446449738991426205915374954352e27), + SC_(0.12e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.56096232594588307676279404096995784320900834995775e27), + SC_(0.12e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.99873804134477401039087069594765663211342895360938e27), + SC_(0.12e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.10969927209204595005343192607227974848012638711713e28), + SC_(0.12e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.11366171678208657297286961492469371085310005537151e28), + SC_(0.12e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.115356201376595312102897878299903481035661465636e28), + SC_(0.12e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.15556490839725484907378435711933380932159508758724e28), + SC_(0.12e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.16255447208439028155170352204289101670907902512106e28), + SC_(0.12e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.912787233211290365386294138273176558386425070392e14), + SC_(0.12e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.4670297691189698806522725538241743548055246554129e16), + SC_(0.12e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.11782751950431067317433543429366778093426396831846e17), + SC_(0.12e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.11121391069923603426297206572606928134005134588953e19), + SC_(0.12e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.93516417901952787977212467423707406795635002548275e19), + SC_(0.12e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.19096294487497323793597248273650238020893341273387e21), + SC_(0.12e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.70269244067839997806764764988478292425153933014877e21), + SC_(0.12e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.97301426634749083623700529421877454296731902508697e24), + SC_(0.12e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.98054738477521368425490920198960969970840798144769e24), + SC_(0.12e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.5898991602156310410471321295680496601076728807048e25), + SC_(0.12e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.1342588287232902396698535836363084942897175520825e27), + SC_(0.12e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.18162458724386797046722362124033255826751828835281e27), + SC_(0.12e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.49297611130454531487888359421850243401184910502504e27), + SC_(0.12e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.5460315113882064608019426177060057129232100096236e27), + SC_(0.12e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.97339574078466738452975313236000939958452587979591e27), + SC_(0.12e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.10693728683875054136642150813998764736871153065998e28), + SC_(0.12e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.11080836820701329575522670713030565320365575134326e28), + SC_(0.12e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.11246386362536432582732124308057459728276303696792e28), + SC_(0.12e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.15175988745491709788540637050298217932619551658061e28), + SC_(0.12e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.15859294697602927773795466791982141894835066040032e28), + SC_(0.12e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.30669403555955475045501504329231407071643509822856e14), + SC_(0.12e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(0.22195362368392307540962281204185190731491772448714e16), + SC_(0.12e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.59548425283625128011179809770627081963135334526973e16), + SC_(0.12e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.70765698115972864720365567058940114875419689232274e18), + SC_(0.12e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.64297715482292040599682395287217905368132263177349e19), + SC_(0.12e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.14317273525063349738413997854722351194481097765573e21), + SC_(0.12e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.54324013709342987533478848634587578589635193779611e21), + SC_(0.12e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.84695015278344597614205775474385748535772045168522e24), + SC_(0.12e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.85358470107972306322026197549212284677291985584321e24), + SC_(0.12e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.52365505574820482123051909712961918374169986014966e25), + SC_(0.12e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.12251965950133559816410922277906972840290055628367e27), + SC_(0.12e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.16612559942033747256454190585773992290954104203137e27), + SC_(0.12e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.45416317820793414288818115827457511849216368263535e27), + SC_(0.12e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.50339493165355246281838476041863102784296796920976e27), + SC_(0.12e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.90085950976373843441797677908431184218510601282076e27), + SC_(0.12e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.99028861283167388113084152838984050374079700394113e27), + SC_(0.12e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.10263721077088402247451856893204115463216562066125e28), + SC_(0.12e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.10418057576338782908582063908145350817267206366277e28), + SC_(0.12e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.14085027354633664326268132682903004516085027963959e28), + SC_(0.12e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.14723272104302523768363319696060951497031015044023e28), + SC_(0.12e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.16887704351450991018685233596331322096508201142624e14), + SC_(0.12e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.14982496663482270919683226420050697395112591025055e16), + SC_(0.12e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.41604846777533303451385031081878760178523709534238e16), + SC_(0.12e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.56048427295724550891851695527300238861337735391786e18), + SC_(0.12e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.53060383881289739752992473120406905044090974035265e19), + SC_(0.12e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.12362711325153677075678409070861081694157918407854e21), + SC_(0.12e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.47659826609221046744798512063582249005166856368299e21), + SC_(0.12e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.78969223667432326058167100404581038356079770886026e24), + SC_(0.12e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.79591500988481620867243818586428336802856992540148e24), + SC_(0.12e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.49315276268127982962112688398968506053021969556607e25), + SC_(0.12e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.11700956771745070237863342341103721023275218927599e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.1588391154683622041518668594491445754662366368634e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.43582492599491107038618720494260520572911393042546e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.48324027746408211450271370074109080478658255955611e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.86647918208307375256722035433814017432526968015152e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.95278883507036975866094738774980090194670969473009e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.98762035955917407398920963397084205278327026573701e27), + SC_(0.12e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.10025196309831058720580759299007374529642176901403e28), + SC_(0.12e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.13566921141617066651661087030285785468969145251346e28), + SC_(0.12e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.14183662882278432235544256438259337739718004808762e28), + SC_(0.12e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.1371758997670242362597592923739115139206306349191e14), + SC_(0.12e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.13097957729254589812294470412516390938204730007741e16), + SC_(0.12e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.36814629310779197742155328672703399983253519079282e16), + SC_(0.12e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.51799898536933262465862829282669425357182294774576e18), + SC_(0.12e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.49732630774478064658808294207599264004527698921483e19), + SC_(0.12e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.11767423823105340746694048487097271986438169225069e21), + SC_(0.12e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.45610109119358173943628750851173539961712725202357e21), + SC_(0.12e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.77140793580056691514560063546127076237166235982541e24), + SC_(0.12e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.7774986930488715494772085280593220368271695293111e24), + SC_(0.12e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.48335244015011405486292457289837255720901438185212e25), + SC_(0.12e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.11522390494661416795537271227971538367521340095618e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.15647608850272115211636919502896709062851313804155e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.42986449826586541205277075027249928322879253999222e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.47668804373519072653259691638477391382839806200907e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.85528883972167230978933111346393887442208830156863e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.94058084652211217306924997380113123666536671780833e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.97500389781142265620831481997267571102109301935575e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.98972881269195399673665504173581581311293573037944e27), + SC_(0.12e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.13398136116763406279668533456152679997803953891948e28), + SC_(0.12e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.14007857751799801613292889805606379238589809284795e28), + SC_(0.12e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.11087455152725669690336999127635541199366193206449e14), + SC_(0.12e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.114298544738269485495642645761518863152547008762e16), + SC_(0.12e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.32528353139820957592046324698519204484584342822678e16), + SC_(0.12e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.47846196898007952561885272835221106180245846165324e18), + SC_(0.12e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.46596026321457495558054702071835067666631668546118e19), + SC_(0.12e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.11198398937569157591072184692729324755337706840231e21), + SC_(0.12e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.4364116691644226355528015469878669499374712293422e21), + SC_(0.12e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.75351166303082167385068080076461055104138470390934e24), + SC_(0.12e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.75947295014677286014551169931700437037061286618733e24), + SC_(0.12e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.47373063323099918674326217893148567533299340970097e25), + SC_(0.12e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.1134632208146244350816263841931166039130601125468e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.15414528499673027826449573949659242988620551352158e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.42397879074300157867990971617116297425323888441215e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.47021724502303723804286670218216440735804061296368e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.8442309698373555502734747078009926418959829118306e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.92851623806045466096435859247898429925669389144473e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.9625351707495603102063278022018713566094051828873e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.9770875839196635539273999354348101085610770052048e27), + SC_(0.12e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.13231275887494988805817963480031370795758178190906e28), + SC_(0.12e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.13834050057350967106337042642392164832916907978381e28), + SC_(0.12e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.8914473376236519046594075259259974713006020331586e13), + SC_(0.12e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.99556750538951405803859495412582853012247729779298e15), + SC_(0.12e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(0.28697972310337048760330849315701318902212471340687e16), + SC_(0.12e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.44168746237888575662390395745711256123296579433002e18), + SC_(0.12e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.4364059738670264362114140545202379829018126427409e19), + SC_(0.12e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.10654583869776673689812402605998394964945395097005e21), + SC_(0.12e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.41750107301241516472603609135916785954570308796498e21), + SC_(0.12e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.73599593307886028314238854975476412977223870973225e24), + SC_(0.12e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.74183025171204531116275901586287219645344398502117e24), + SC_(0.12e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.46428438605635774042133100500637633526789942972204e25), + SC_(0.12e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.11172719768872813890703928506885495451265240125016e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.15184630549907723648875643083040389109652202053313e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.41816695191605961442868168469657477267171179091714e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.46382696125000481264587683389385370357600885552113e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.83330414681960249913247277101710432328816884025869e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.91659347885618043036455803756433239086002662277599e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.95021260576502787816271336957886653419755374617402e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.96459435429943507802633678873106141685553806000112e27), + SC_(0.12e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.13066320499841988334636530718445236195831714149717e28), + SC_(0.12e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.13662219168500569252058661094364207415724497488309e28), + SC_(0.15e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.13897497591274047533498009684367939859600181843518e17), + SC_(0.15e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(-0.20002307006890941043339501295122373403490232944341e19), + SC_(0.15e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(-0.64050586382051827869987827157623534685759993050653e19), + SC_(0.15e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(-0.19246767972362894525289805373252842015364087926783e22), + SC_(0.15e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(-0.2770362238751076620721553727290628621521017849494e23), + SC_(0.15e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(-0.12082321082909358544481168701974172202477942490852e25), + SC_(0.15e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(-0.61661693049993423631480196836916988104562096069146e25), + SC_(0.15e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(-0.5228564461713116863844169077889220012667766200322e29), + SC_(0.15e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(-0.52792239710741060118429184004989018109107253052917e29), + SC_(0.15e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(-0.49760705159672721838807424817096956077973153352282e30), + SC_(0.15e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(-0.24748605065264601303136041086200981804984421066546e32), + SC_(0.15e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(-0.36108156388134807374055355322696204764951737256006e32), + SC_(0.15e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(-0.12580948429114832873173514397868889437461289133398e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(-0.14295760810815052130210379406913204064890876991041e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(-0.29448884636246585980174365130639538686239042565306e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(-0.33122405209398397881354999013459487773098995548134e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(-0.34627997101450477912801131852690477232319022239384e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(-0.35275927811393035283601232816648099904086225302233e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(-0.51306067544458847740405180616630837584805819553878e33), + SC_(0.15e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(-0.54209922817079398591861371120952594311662132988295e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.1108969523782202948051596666890175276549733744887e17), + SC_(0.15e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.17147873490556443289300617987401189158186797772709e19), + SC_(0.15e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(-0.55611699358534959509555624693365208065031765087464e19), + SC_(0.15e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.17524869442695041008570803619262391695306276386643e22), + SC_(0.15e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.25632247884801680271198515683813768021611812006099e23), + SC_(0.15e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.11380988566242083723935299510664782702542461924261e25), + SC_(0.15e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.58452385446256261378623617485142537127621969054e25), + SC_(0.15e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.50798466713808737514459152749731253442733370198038e29), + SC_(0.15e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.51291618470604208677666438179021641353878484543973e29), + SC_(0.15e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.48542902554094442344715694061245942096241198343427e30), + SC_(0.15e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.24281875530633145208183316159517421414126458390205e32), + SC_(0.15e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.35444140812737774979061623457570752749441797456168e32), + SC_(0.15e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.12368069799745308896377375065087751459258693117772e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.1405591889496863706326323465444153137238773552893e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.28978063744801881297726276469759109785847302901053e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.32596988165507805467532914716532466039464507383761e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.34080322958905333784271341630630434829198618310942e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.34718695349578432825667798711838232425208935322733e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.50515611972206934631163112679780531827566260767488e33), + SC_(0.15e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.53377789206657381415050187229943603902451194054228e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.69628550614503463613761719274731535920169112863944e16), + SC_(0.15e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(-0.12530263788055304980035614551020913279794701390085e19), + SC_(0.15e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.41723383238716439275931659608009793662178116584574e19), + SC_(0.15e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(-0.14500941761957267533845337591388263855312431597018e22), + SC_(0.15e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.21913561479678192363066577052549759496020268796687e23), + SC_(0.15e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.1009036492239361297115968560359114961219760818751e25), + SC_(0.15e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.52494323474465677801312655836030434477642383466431e25), + SC_(0.15e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.47941570203747557502869527845544425337680953199911e29), + SC_(0.15e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.48408821461610312168521176605743566479219005563314e29), + SC_(0.15e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.4619015283676354960306629814114026136782893623078e30), + SC_(0.15e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.23372926950992373003831133234268324928545102380329e32), + SC_(0.15e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.34150117827784134413435405254128207819361512521147e32), + SC_(0.15e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.11952348755672462409917870886824033760787264896556e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.13587446993187484595324873975110117680636441427842e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.28057400758216787706963376173665155387505322234537e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.31569383601119784977781487061410968869152108130771e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.33009116878494956175532588486296619618003231596185e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.33628763766314209036195082116339067537532346096085e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.48968647568970475389786968154186053185269595428412e33), + SC_(0.15e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.51749128249816473831460970937046572384471800906678e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.15076812509700354132482366951975623824828830263294e16), + SC_(0.15e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.46471912971616384860389261685483900167238895654419e18), + SC_(0.15e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(-0.16905808278427297091143378974286821328329960077914e19), + SC_(0.15e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(-0.80811390011627817590103098111422133721897189816465e21), + SC_(0.15e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.13543327493143529872353566504306002845909652906776e23), + SC_(0.15e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.69880320934737308339911974581704921293584589716447e24), + SC_(0.15e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.37834090333321357485409678800989334227626361595514e25), + SC_(0.15e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.4024322970702381449188014826665064833453310570285e29), + SC_(0.15e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.40640145896671498247198672042250027046813683186173e29), + SC_(0.15e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.39753704061058489507918414237259285548486007310758e30), + SC_(0.15e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.20832750192100961674564355492639860655346657547023e32), + SC_(0.15e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.30527369370097887038245001230730081805629890784123e32), + SC_(0.15e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.10782008953565113605062945215599690705142618800025e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.12267886507333495450023738317869000009165787476656e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.25456388752150022923105283544219702350015445623895e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.2866487561493634933275903476481483989593614228562e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.2998083268226442142777226680079185296152076962569e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.30547315343641023736269472979842164002221519959217e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.44588634600644563093959295218548836288433573046471e33), + SC_(0.15e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.4713681943198456641766010279724364324810227153636e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(-0.63736783767973822242974600380497034019294634239547e15), + SC_(0.15e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(-0.27406362235449020902043169285823767594164304924689e18), + SC_(0.15e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(-0.1048666474524126999818431493087242263882389507565e19), + SC_(0.15e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(-0.59737448534169695270614623703960047579494218236652e21), + SC_(0.15e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(-0.10578474992055505965214444013660072479553560488179e23), + SC_(0.15e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(-0.57941363161480976135012188030625280893072008266999e24), + SC_(0.15e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(-0.32027081373453749152056938849253040209526411471848e25), + SC_(0.15e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(-0.36841557118322968204519823748906528784845072069995e29), + SC_(0.15e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(-0.37207111877232497462219932804214362206228397849217e29), + SC_(0.15e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(-0.36858649737918813157674755965814176794338256834011e30), + SC_(0.15e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(-0.19661478878118159538985773137317341586991727486576e32), + SC_(0.15e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(-0.2885348186146557458574708697663270625104644287557e32), + SC_(0.15e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(-0.10237764499965121611785770300972199686879201967308e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(-0.11653864550056450112140557796200765001775042160485e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(-0.2424189903540897046757010758303766845861492209618e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(-0.27307935971013472585679245100969932115592625270665e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(-0.28565777077013707087898632614786827012287494342802e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(-0.29107294492141426866156967468720900710227603127657e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(-0.42538289827595459867493820237435568422792305068675e33), + SC_(0.15e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(-0.44977202718693223931776281434924346505453448274561e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(-0.46967897367522764776619473581894493217633276050021e15), + SC_(0.15e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(-0.22860564658395407230339459916783581942018625913619e18), + SC_(0.15e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.89056954506416400078116008529816021834733689073495e18), + SC_(0.15e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(-0.53930878548628048382319669840795736800548367079143e21), + SC_(0.15e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(-0.9732430149773009503473408516436811523583708500975e22), + SC_(0.15e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(-0.54403092985383690470082299597213759014670313419167e24), + SC_(0.15e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(-0.30283414723259723041287936404911835466573539510199e25), + SC_(0.15e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(-0.35768537713744104023323100588779741427808639879003e29), + SC_(0.15e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(-0.36124159895210687463709750932011458744272600385929e29), + SC_(0.15e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(-0.35938135886302327840367652827853486218916861412064e30), + SC_(0.15e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(-0.19284899250381597617895669841182327013214699496724e32), + SC_(0.15e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(-0.28314808526814094278512649896300549379155477749919e32), + SC_(0.15e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(-0.10062117051933306023981481862134025691728484021997e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(-0.11455641793982716140022018965728731564089225647617e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(-0.23849225053037190941455075678180607790503860314246e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(-0.26869097761844147083988141620918494379426274050795e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(-0.28108102147153832653757827347111048631657363067945e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(-0.28641527267710933817277761533314704661215069960466e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(-0.41874613300718390959429684535604859823578208559785e33), + SC_(0.15e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(-0.44278079161188152778490397388855274200744308265643e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(-0.34243704568385927090084377972628582328825274317013e15), + SC_(0.15e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(-0.19014700921019201163084990887975806912477114208126e18), + SC_(0.15e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.75462289553484000973740189158325872508592921013247e18), + SC_(0.15e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(-0.48650259599176169760848526143895179130527692323398e21), + SC_(0.15e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(-0.89494743959617109802670799262400048989706548552339e22), + SC_(0.15e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(-0.5106637145404383656602706576182832812278895161114e24), + SC_(0.15e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(-0.28628310622022186111528099968809246971180010125511e25), + SC_(0.15e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(-0.34724683207322238640413216175261077436205843182489e29), + SC_(0.15e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(-0.35070623383952820585437938474385390312152996121205e29), + SC_(0.15e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(-0.35039076563753792986595162920540589528678700821386e30), + SC_(0.15e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(-0.18915051117672647585554156204555990183444189729843e32), + SC_(0.15e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(-0.27785520919760433075188965326671624063678493211346e32), + SC_(0.15e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(-0.98892821339661604658749346236854667506979609940683e32), + SC_(0.15e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(-0.11260565742620309273529368178554337435475784764003e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(-0.23462487403411025857805330880059663505026538772097e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(-0.26436841294930588298727390430667755286893875340595e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(-0.276572708891878485457938276079164337172956203198e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(-0.28182716002455584106491273008047825852269528523491e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(-0.41220600724269610006380517522263876682280213575956e33), + SC_(0.15e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(-0.43589097924584966823476019138168699481681313814431e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.24672758032939657278709906026773303881570027007364e15), + SC_(0.15e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(-0.15769214272781451294475902703987859652527522078431e18), + SC_(0.15e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.6379567287051213218111238270109676522079452186235e18), + SC_(0.15e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(-0.43851422939576170830538802217512663313308897389984e21), + SC_(0.15e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(-0.82252436708829401312333441025244502258853814245284e22), + SC_(0.15e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(-0.4792054398359163774915667412186298982246297744782e24), + SC_(0.15e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(-0.27057594059011014211130169180031683044750366286903e25), + SC_(0.15e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(-0.33709257603124293195507028119800782045906909741744e29), + SC_(0.15e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(-0.34045760513207184782093332672320294037673131611059e29), + SC_(0.15e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(-0.34161007485887152238616864912870480347288507162545e30), + SC_(0.15e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(-0.18551822752793620713822325188153262242725685533531e32), + SC_(0.15e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(-0.27265467193999091898539544511315099900724392737831e32), + SC_(0.15e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(-0.97192179293684933315046857174580532063103657123436e32), + SC_(0.15e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(-0.11068590013273104512181340846994193230564361908758e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(-0.23081602756115793256370959941397733891750628652849e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(-0.26011074910924910611853955074413958404756343137404e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(-0.27213188281855178261218817125866024382548846342993e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(-0.27730764236939947790289699259241391177249293262925e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(-0.40576121435044118588462972832105434546536361800046e33), + SC_(0.15e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(-0.42910122386691981061040626096253678706190307675951e33), + SC_(0.16e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(0.50233958213933091481556756926100573547874232094054e17), + SC_(0.16e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.11109423266031709914153858783927085719523688868867e20), + SC_(0.16e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.39081842154282765284532530332430894623970132549408e20), + SC_(0.16e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.18227713296295012175223024577585534054558363436995e23), + SC_(0.16e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.31947045675481698112603715443085590953583305423557e24), + SC_(0.16e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.18299617184176162280023440477921333396096635992331e26), + SC_(0.16e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.1048741594737987651639784322340092001259210825773e27), + SC_(0.16e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.16709392027475601597453535769399875878228995911653e31), + SC_(0.16e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.16882490292815347297737783754053067230610069916271e31), + SC_(0.16e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.18563337181845203987465669262650786770637199950992e32), + SC_(0.16e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.12055029515350726388385560208511706327872275858073e34), + SC_(0.16e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.18046248323929698314579628682469318787465246907743e34), + SC_(0.16e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.68445492874724925809578878619638737640954598883664e34), + SC_(0.16e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.78452635719678510746170484035872111471922272752428e34), + SC_(0.16e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.16973572771972187565362410058062257400086602104375e35), + SC_(0.16e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.1924375659079197078836080976061638017639056325322e35), + SC_(0.16e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.20179247720751744370334363749101622327159753620443e35), + SC_(0.16e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.20582692094623424620919127961595574320408855452749e35), + SC_(0.16e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.30706177786579732145788727616877967751862026587334e35), + SC_(0.16e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.32565439353582396626049780034304221724191993725509e35), + SC_(0.16e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.39144262976111062001040790257198820782376894645183e17), + SC_(0.16e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.93946359169760655852237969851869668037050090915964e19), + SC_(0.16e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.33520672218429269333576967863094373817466956040661e20), + SC_(0.16e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.16475226352025508074365944215659294885027735798331e23), + SC_(0.16e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.29383820887001530085483863874704214151422124222947e24), + SC_(0.16e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.17161518327551953907629910526854855125842389799905e26), + SC_(0.16e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.99028920929173139026116070485494946413158885671896e26), + SC_(0.16e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.16201407360337514222308944241902563343801662209673e31), + SC_(0.16e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.16369574108109305210961119372262850817071285070832e31), + SC_(0.16e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.18077908156304259564018512322038327349674787967557e32), + SC_(0.16e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.11812210760044394936303727046916532113731011274171e34), + SC_(0.16e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.17691806915802320564789012447893611259970828933182e34), + SC_(0.16e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.67208685894750394919941141113129962495028729571887e34), + SC_(0.16e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.77047043830181647039844160570427958334683499199535e34), + SC_(0.16e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.16683792134524168752385147293364666302228129075364e35), + SC_(0.16e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.18917786709136892733685480613451055515995918179382e35), + SC_(0.16e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.19838444491162691032491650332795317978867767437334e35), + SC_(0.16e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.20235505141127640292662449974477191996156766099522e35), + SC_(0.16e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.30201021666857662799477096490080162433586363979659e35), + SC_(0.16e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.32031661461515822811899278162004785685167481784967e35), + SC_(0.16e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.23372833945672876871009721108513070628777521926613e17), + SC_(0.16e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.66743335305123487274647957143020579828473584782742e19), + SC_(0.16e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.24527476479498498719057633836800876086167554956716e20), + SC_(0.16e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.13430468725538133999724935780437295037696453373137e23), + SC_(0.16e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.24821930259421622107569062566854999932275927682602e24), + SC_(0.16e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.15080717863057284099485149461214450479917657621035e26), + SC_(0.16e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.882395947921383105024686719708572394458883569935e26), + SC_(0.16e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.15228483995825675484284777189043318409379031447308e31), + SC_(0.16e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.15387177834459646578286655732715343612140938633364e31), + SC_(0.16e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.17142477477141509499889692665160555737235700319977e32), + SC_(0.16e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.11340247881412951437547133346306504718864112429694e34), + SC_(0.16e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.17002390519182979567839540436926444176326235690797e34), + SC_(0.16e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.64797595718402992456269088372028298433905154538852e34), + SC_(0.16e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.74306315881848582497793330548724170622170519611931e34), + SC_(0.16e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.16118075444622167795026492553535960808153915363602e35), + SC_(0.16e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.18281299373707256076409110414106755763297417086589e35), + SC_(0.16e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.19172945990837312515306853658758336525424624228221e35), + SC_(0.16e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.19557520721906097876987422244125638835835875273478e35), + SC_(0.16e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.292139699654978917573793301052607441881825284108e35), + SC_(0.16e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.30988594406865470755204575454432344262650823114461e35), + SC_(0.16e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.42235817004164247396091193754912808490135009373415e16), + SC_(0.16e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(0.2258685595327441677798893241233813078458460016035e19), + SC_(0.16e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.91689821064294505668033227646731096701766721059982e19), + SC_(0.16e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.71447947988328171691693360808973893010937805216206e22), + SC_(0.16e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.14784248545140507745397250452689603874763259533344e24), + SC_(0.16e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.1016366748156639270701599778738969093996875282093e26), + SC_(0.16e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.62090626629669973210032323482499963588005347680142e26), + SC_(0.16e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.12627529650581726848577396522315779153441196546385e31), + SC_(0.16e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.12760701805949493049998190647752200498505063386322e31), + SC_(0.16e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.14600716852307464441864338393573833952129447172798e32), + SC_(0.16e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.10028102348651510136377986690114539821758136279363e34), + SC_(0.16e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.15082020095653232773676286725185652338442347079668e34), + SC_(0.16e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.58041269678926019673782373726843066445073233130142e34), + SC_(0.16e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.66621801866378653762922155010429020791811146244658e34), + SC_(0.16e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.14526813407907159441043328347296931435441781532765e35), + SC_(0.16e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.16490064389087864897597466441977092128381927959496e35), + SC_(0.16e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.17299709339172213739415974853453930333565735218722e35), + SC_(0.16e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.17648987504958340816927865390815722189813066155159e35), + SC_(0.16e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.26431011341159640698698850154535070237724742929664e35), + SC_(0.16e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.28047028665387483308135962257305491243960044960008e35), + SC_(0.16e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.15885564407235044547491023867968950916811590698909e16), + SC_(0.16e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.12662417098028100980074621151068856625450714523878e19), + SC_(0.16e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.54433979705676182354511271430007365110376068988658e19), + SC_(0.16e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.51550043549365965230019623080268728874827897269309e22), + SC_(0.16e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.11329295792090024761427813565589072716216805910412e24), + SC_(0.16e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.83106509254530137628716394816749630716536505159275e25), + SC_(0.16e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.51921775455225193686499227197429780400038458607139e26), + SC_(0.16e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.11488887904422512686538321081942069537437740626765e31), + SC_(0.16e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.11610785117436369741736851838323355853870906702795e31), + SC_(0.16e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.13466459980708956727965479731501789932476742801988e32), + SC_(0.16e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.94266856429068819659066839919481315053568196116131e33), + SC_(0.16e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.14199872280093523466307759159527047029129563882797e34), + SC_(0.16e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.54916099824704458123308991900647958747304376771922e34), + SC_(0.16e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.63064893417084829421997283764470874402028505785345e34), + SC_(0.16e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.1378753453185119329243965179516070023842521040081e35), + SC_(0.16e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.15657393239346351522388324966270079370015366872251e35), + SC_(0.16e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.1642872720694566987104382246221477685296633345041e35), + SC_(0.16e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.16761512517015029115344859046031553122376935039861e35), + SC_(0.16e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.25134559160184366642895362434778755280931588737668e35), + SC_(0.16e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.26676326249859660927286233196954351258725464463451e35), + SC_(0.16e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.11188774670482768069829076509779501595048263093907e16), + SC_(0.16e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.10376360632188560257040675159390498431248851932517e19), + SC_(0.16e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.45528284255034542346699670577025762926902700081308e19), + SC_(0.16e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.46156955694503160391787656096189155194773060561394e22), + SC_(0.16e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.10356052777112723811080472713945391563858435060315e24), + SC_(0.16e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.77666199955991768581708164857028254815069473817358e25), + SC_(0.16e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.48893433982899221382370433556938596853381104656119e26), + SC_(0.16e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.11131202527285071646305090076054272123159654227975e31), + SC_(0.16e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.11249543518484262867099754329003241266428180698935e31), + SC_(0.16e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.13107078621845933449561803203223255070287574187868e32), + SC_(0.16e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.92338366504030659897277272935363082352246726166459e33), + SC_(0.16e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.13916724194825382523522632660564041535338009105298e34), + SC_(0.16e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.53909888119511127520910843714434556178131528369722e34), + SC_(0.16e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.61919329237686557807995081867898001245619583220584e34), + SC_(0.16e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.13549042281320821383025101038378894160520171797667e35), + SC_(0.16e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.15388702261727910051548443550060894426221104131743e35), + SC_(0.16e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.16147646185474131544506244188743666366649759819731e35), + SC_(0.16e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.16475097244337919777172081430698406075764784340257e35), + SC_(0.16e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.2471581302717718273330106558942270668269580665207e35), + SC_(0.16e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.26233545458247779399501329223065798516718021380795e35), + SC_(0.16e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.77644042136441753608206387125166433621657356622054e15), + SC_(0.16e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.8474890540086640140732176070592917740001140511704e18), + SC_(0.16e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.37982055299686142249325651661193175676043407979984e19), + SC_(0.16e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.41291929734585543415702803481799637281720291329054e22), + SC_(0.16e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.94611053375165527130537647213213910739613695747915e23), + SC_(0.16e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.72559562810587384925105458280845422002790578656244e25), + SC_(0.16e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.46030602920697002771217623560057672156263103643568e26), + SC_(0.16e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.1078395569521184925990095791430166134879759579615e31), + SC_(0.16e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.10898837284644734661245374944259387363306650737723e31), + SC_(0.16e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.12756687856208395519695851574017849175000787179654e32), + SC_(0.16e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.90446861392263395138721857314907483333902307193475e33), + SC_(0.16e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.13638868985627778192770743007297325294701224173184e34), + SC_(0.16e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.52920959906114511474323350252066009503061732270315e34), + SC_(0.16e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.60793272663424526880642145050042567502072004744183e34), + SC_(0.16e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.13314417407286711124447047729578297525469906409946e35), + SC_(0.16e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.15124333848778604168561169645754216873352165378337e35), + SC_(0.16e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.15871073476582253059048305912664502029476803616533e35), + SC_(0.16e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.16193270084313363936107168700617927817242089055022e35), + SC_(0.16e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.2430360701993448663323726041420006791587300451631e35), + SC_(0.16e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.2579765447900192973126656903168411152190120824265e35), + SC_(0.16e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.5297128410350209632949648109839312974008732961469e15), + SC_(0.16e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.68979691128084950112845858001941317747483883038609e18), + SC_(0.16e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(0.31602488012634929031214413391083499153963955793749e19), + SC_(0.16e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.36906787440627926332648923260048370950389401590056e22), + SC_(0.16e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.86385809704282586999304303110689460513728314323387e23), + SC_(0.16e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.67767508412228221150189790868659123020544280911462e25), + SC_(0.16e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.43324843514795901350104606642054503851788067014878e26), + SC_(0.16e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.10446863119180606327945887633103653528338526698732e31), + SC_(0.16e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.10558379679512662813424441617536184422929919421613e31), + SC_(0.16e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.12415077781349523997309682924889144371527902108029e32), + SC_(0.16e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.88591679116984033067339624796092157109629738640121e33), + SC_(0.16e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.13366214313687787273785347562184174295693980245806e34), + SC_(0.16e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.51949038113177662141172881680320204182430695699081e34), + SC_(0.16e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.59686413662097216429424010965343148179015568553308e34), + SC_(0.16e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.13083601379725553191883338130164320186552400123418e35), + SC_(0.16e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.14864223099669355062442630095010077289304601946963e35), + SC_(0.16e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.15598941593763701276436117741405841785651315153103e35), + SC_(0.16e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.15915962441943964458204271708025513905469596122393e35), + SC_(0.16e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.2389784580558404544735263068587901357040764089831e35), + SC_(0.16e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.25368553255135009920656162770721574734839305165891e35), + SC_(0.28e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.16835759643034236257953725148520240561404628201926e20), + SC_(0.28e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.10893031341791870859363988732258087836735465936437e26), + SC_(0.28e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.17957750800089107092129935276264025973557392271513e27), + SC_(0.28e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.50088842060820030660088008039805564632369875945552e32), + SC_(0.28e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.12362620371076551137454507893335687705962665884731e35), + SC_(0.28e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.24664179419103100287681650761791481295020982199267e38), + SC_(0.28e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.62259508558223105885034942877599365239721265558061e39), + SC_(0.28e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.26490114942384932450948341522751303885192769667454e47), + SC_(0.28e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.26984715288014727919328670776881673651154999030438e47), + SC_(0.28e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.19784553574470650500538170441978016609524232588137e49), + SC_(0.28e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.33737653380516468773412897631406650179755679261691e52), + SC_(0.28e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.69133024526517954444787693684418475556662724250333e52), + SC_(0.28e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.73833944902060417837119042213113793776487208102967e53), + SC_(0.28e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.94073038095317564939217941358670703421495886541365e53), + SC_(0.28e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.37002601719349382297182032078548946155324154985378e54), + SC_(0.28e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.4623116206430900676317959084644573504328833881106e54), + SC_(0.28e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.50292064563512935696876653982037350985131453969896e54), + SC_(0.28e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.52089203158390920849265306865009285834329002616505e54), + SC_(0.28e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.10587950565375210113447322206379893258441893821851e55), + SC_(0.28e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.11751067846519589575025977408680528699239269329535e55), + SC_(0.28e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.89724654517650600952187586316507861937068402433819e19), + SC_(0.28e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.70501039615297291760121639585298805810086427194785e25), + SC_(0.28e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.12392451992525862631670680984505098509146581913807e27), + SC_(0.28e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.40702318785681471453039273478082054014327203143201e32), + SC_(0.28e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.10476904725631189629434817596732656990010591621118e35), + SC_(0.28e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.21816513439750283140846334717439897358476376341641e38), + SC_(0.28e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.55866145698296082114947892612266848925395698364568e39), + SC_(0.28e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.25044565593807267095445972647518372240492440322859e47), + SC_(0.28e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.25513152001312543861344744406305302862275621122588e47), + SC_(0.28e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.18859503380717786752600192086501573951570086175591e49), + SC_(0.28e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.32529006914539311065059051931257376092883415250536e52), + SC_(0.28e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.6671908699513475958799246499875897590580295106155e52), + SC_(0.28e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.71465226339156801083140010474422948014903539465995e53), + SC_(0.28e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.91081044905321793226180487216200210146249989815872e53), + SC_(0.28e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.35881972163746420840999121133529949595480070377733e54), + SC_(0.28e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.44842145931340948322795209780377838276955584766534e54), + SC_(0.28e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.48785579978187229973193103138209431928041554880964e54), + SC_(0.28e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.50530843159852944435841581426015320476757025202982e54), + SC_(0.28e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.10279121267311408312149460734435549780353690038787e55), + SC_(0.28e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.11409587507226644665260692025151001461340761376758e55), + SC_(0.28e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.83878381639711204091739272986692587508313990119595e18), + SC_(0.28e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.28217794141202170905617514210918955488768234646038e25), + SC_(0.28e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.57408930041243345300440818312898616080447569417598e26), + SC_(0.28e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.26713456845623674311542974484763082526799756364373e32), + SC_(0.28e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.74973295004119674401463106252541637107617863293343e34), + SC_(0.28e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.1703772978542448309265056497777974607920827194875e38), + SC_(0.28e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.44917380041490299123087177865046381882522260561908e39), + SC_(0.28e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.22377779741119181887128710984023243137326922779696e47), + SC_(0.28e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.22798226254429515066978941421839129100741989999832e47), + SC_(0.28e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.1713270184563564821947720253518351959040621342843e49), + SC_(0.28e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.30235577732906916988145935280442167144523526791971e52), + SC_(0.28e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.6213239765217041106134362816427365427112245449859e52), + SC_(0.28e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.66945432215618547753090048405428256786477314273291e53), + SC_(0.28e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.85369622080848474268416726458860002941006054719755e53), + SC_(0.28e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.33737967999539368390812097993348958341412559200472e54), + SC_(0.28e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.42183714013753860672960925547721399998150894484962e54), + SC_(0.28e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.45901939518518062273335681805001477275144752449357e54), + SC_(0.28e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.47547739031458586198100013206013664733387574259638e54), + SC_(0.28e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.96872851373465372484348655218015423553651963778019e54), + SC_(0.28e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.10755074160655130324682950937688241242701348418451e55), + SC_(0.28e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.72546676839251933027058608533224826980102388232903e17), + SC_(0.28e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(0.99452759492318358807776681920484502454837301234727e23), + SC_(0.28e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.42604878830509845958779637538374688482341156535884e25), + SC_(0.28e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.71648133610323341298398235054516775821700929179652e31), + SC_(0.28e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.26647937078772337786362180696058500544579227244727e34), + SC_(0.28e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.79904431749228041725452676266878030792317330063778e37), + SC_(0.28e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.2307269253831622597281321555040398080303955364599e39), + SC_(0.28e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.15917093644853113785813674916245841748430329708e47), + SC_(0.28e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.16219967578961932808570843841200598487704912296156e47), + SC_(0.28e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.12817497933739775795110805362493206738001738979751e49), + SC_(0.28e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.24251639583888835336936074564097189272303147915783e52), + SC_(0.28e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.50122149752344077643739849971959781209319435873034e52), + SC_(0.28e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.54977704396136482960613958778075124783128065539369e53), + SC_(0.28e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.70230200665621836975545995561389884715838526386868e53), + SC_(0.28e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.28020794186966106977969070788148884498833665151733e54), + SC_(0.28e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.35088092215864331664534132282061982826987336073755e54), + SC_(0.28e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.38202486591760462592498917580436449404704763706425e54), + SC_(0.28e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.39581539380665906317723125475402623915762751677211e54), + SC_(0.28e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.81021722724520305323962060588650944142980127155151e54), + SC_(0.28e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.90013473462954124827572090295038087922418076589202e54), + SC_(0.28e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(-0.49274777221478057496531303487709605619467769162398e17), + SC_(0.28e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.6325152795115993016380711121657813622765140552189e22), + SC_(0.28e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.89545582947021917851467475214516482955599039019089e24), + SC_(0.28e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.35912068140269484291331427360185102771010515967136e31), + SC_(0.28e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.15597571594657675752223460055845766212109316859991e34), + SC_(0.28e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.54225173606926363036770415518864982200702225423065e37), + SC_(0.28e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.16423101461549186717013974669825872589983365381989e39), + SC_(0.28e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.13401837243896595403368212189193796116632009199317e47), + SC_(0.28e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.13658489009016962484462282367749813441756332369564e47), + SC_(0.28e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.11073201533230227054546633618364715407351204005928e49), + SC_(0.28e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.21704871547947812362196878143690282629610996573136e52), + SC_(0.28e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.44988928750299613926036027983023958345998097353565e52), + SC_(0.28e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.49794920300711509697563319103870608290511739378389e53), + SC_(0.28e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.63665477174029587739219541704117177042202094074113e53), + SC_(0.28e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.25524271297574809022785522264711271563865850691722e54), + SC_(0.28e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.31986210880900382499402165212441120086612002836873e54), + SC_(0.28e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.34835237540682318048091216711932249499352445613566e54), + SC_(0.28e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.36097029323800386148118140460333662071756247178793e54), + SC_(0.28e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.74064305959938631336270944943457890555638691220358e54), + SC_(0.28e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.8231213167489931828030811417083497741992476896125e54), + SC_(0.28e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(-0.35496436168338893803203570874213198857147582086442e17), + SC_(0.28e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.15185846454148377906338296050903646184100835195212e21), + SC_(0.28e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.49792718921269128222652161628565066181287848935409e24), + SC_(0.28e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.28375149142167086727665846625854818009649642711189e31), + SC_(0.28e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.1300950054623817511084792974706076683654198958958e34), + SC_(0.28e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.4758480387016663330910435048746056389504187277968e37), + SC_(0.28e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.14648162975821326895560583581017547091918606466137e39), + SC_(0.28e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.12651901268174570332017575684221722234826200231198e47), + SC_(0.28e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.12894711753110476707736585735872744236121047256075e47), + SC_(0.28e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.105443224915917283547178150669003331736732281242e49), + SC_(0.28e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.20914705834409552587110234249873181959239359819876e52), + SC_(0.28e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.43393278899758395457698030294560586661732991556485e52), + SC_(0.28e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.48174384243884528180623880541564326688447251000553e53), + SC_(0.28e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.61611669322874087176344017469725380312018006986608e53), + SC_(0.28e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.24740774303466806838118856765796994820032443323956e54), + SC_(0.28e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.31012250741025600741258462749651359625762757734339e54), + SC_(0.28e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.3377775849517192071997372020286153256453145713607e54), + SC_(0.28e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.35002640224115522721697373949977747528177794474575e54), + SC_(0.28e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.71875811482280194480909740913335364344476421922115e54), + SC_(0.28e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.79889092769570879806659227024891781944940989040718e54), + SC_(0.28e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(-0.18950209178425471157463971046157378460943119148383e17), + SC_(0.28e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(-0.20692404641905589370533998771951939155533708570585e22), + SC_(0.28e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.26297403160194487533323907228663215747459299434439e24), + SC_(0.28e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.22357240362270708664799120737397298948579749383997e31), + SC_(0.28e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.10834590409511059424986116223703194797874419265512e34), + SC_(0.28e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.41727706873057351874444297556126677961077397434787e37), + SC_(0.28e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.13058048815153080543622338863902651082280867653029e39), + SC_(0.28e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.11942423299190949476018871632877475397763248537939e47), + SC_(0.28e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.12172111179789993374314926990288378157214683656902e47), + SC_(0.28e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.1003979822763859980338530217338745238373484837743e49), + SC_(0.28e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.20152276528421011517501698551890407954798795512325e52), + SC_(0.28e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.41852197601496966432061617332036481097019699584493e52), + SC_(0.28e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.46604700487067258136415336573898767467103983186224e53), + SC_(0.28e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.59621745804091143211672436774437865214062544418306e53), + SC_(0.28e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.23980467412791563794272294998655868718578968034134e54), + SC_(0.28e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.30066886341242654474413549165805412254546301104618e54), + SC_(0.28e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.32751232730288932940048844111327444219024325729677e54), + SC_(0.28e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.33940244056089766000667634217784434321634982380748e54), + SC_(0.28e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.69749671125478321374879305012380823810121786324491e54), + SC_(0.28e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.77534830401778729865239548352948049790800708581448e54), + SC_(0.28e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.57071598395670510649979626384151301722978047491938e16), + SC_(0.28e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(-0.24175586516694390362330011176989022987135213482562e22), + SC_(0.28e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(0.12884707674127405924425724227942119191613787630186e24), + SC_(0.28e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.17564708898864086115880240759817575013972011166297e31), + SC_(0.28e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.90094671588017186053852553968997874090462624509757e33), + SC_(0.28e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.36565008875251524728797993707619956363910765890186e37), + SC_(0.28e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.11634241131539329959273010022347258731919414666432e39), + SC_(0.28e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.11271301933286738288914833277809118166064996506298e47), + SC_(0.28e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.1148855001203216045673966903348821440657681261374e47), + SC_(0.28e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.95585488980750414895781635785545471466687120614006e48), + SC_(0.28e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.19416646160239611971025914715513410159075316172304e52), + SC_(0.28e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.40363887954703812972257543835255291188802181306692e52), + SC_(0.28e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.45084332487432407020250060647132449807345104584892e53), + SC_(0.28e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.57693793192121117062833906501076794075455676537583e53), + SC_(0.28e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.23242689698820928420782668223715582236675627478342e54), + SC_(0.28e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.29149309242697453879229762491809005549329753751094e54), + SC_(0.28e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.31754787822386445347634210258682127826108368105881e54), + SC_(0.28e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.32908940239908249750707073959663050012997198708335e54), + SC_(0.28e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.67684174196932714837573547210525321901188100756139e54), + SC_(0.28e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.75247464789406254881646576715850940360968543281461e54), + SC_(0.32e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(0.10999723182968291453614806876732087604997675328875e20), + SC_(0.32e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.34816107995000250435639682340253442347372567560489e26), + SC_(0.32e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.17886849305242356450260813514229045084762073776349e28), + SC_(0.32e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.10503930504771183356074550848878999262007833510402e35), + SC_(0.32e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.73553066722381618500803339756356762198284504624408e37), + SC_(0.32e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.5538188934403863186821810746493427538729366001867e41), + SC_(0.32e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.23961072093738698340228617582074544474367121229783e43), + SC_(0.32e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.16406069822528156992611213359520052742424767967602e52), + SC_(0.32e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.16759788346820384904819611827457083226472082036547e52), + SC_(0.32e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.23628945095297356918574451494762828460738846888478e54), + SC_(0.32e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.1232950829256676245317136507967813920374878971557e58), + SC_(0.32e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.28118474617559213271913744489014319442820512247439e58), + SC_(0.32e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.42718125298886498020586557145596612220734824247332e59), + SC_(0.32e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.56421570570438385551868251798112624211081644754738e59), + SC_(0.32e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.2719158195735901934308917204078620361851437667156e60), + SC_(0.32e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.35112755443351191222204143299638137036047695173494e60), + SC_(0.32e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.38676396790775534215489863855548423340435503235137e60), + SC_(0.32e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.40267330995238668247034509817146109564882805328877e60), + SC_(0.32e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.9091276056398603312150447657677287095739721548481e60), + SC_(0.32e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.10246794066531661559753421937892608296517890145017e61), + SC_(0.32e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.67101337764335444619832750694255707083436604528415e18), + SC_(0.32e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.16241127394807005442764918640086425895422529263411e26), + SC_(0.32e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.10479986363958544296525831631278972472670478306763e28), + SC_(0.32e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.81457354904736733628383983952457681260134878098883e34), + SC_(0.32e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.60292545775719504274922942213160721248303892245743e37), + SC_(0.32e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.47907943199158795353005539943788245981966759215451e41), + SC_(0.32e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.21094421289663185507951031457065709093752641578152e43), + SC_(0.32e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.15373734585797459603878475032869737490760179434778e52), + SC_(0.32e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.15705901920188732701602357558641170911194272740406e52), + SC_(0.32e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.22356824040844733057690493198272231709519637341446e54), + SC_(0.32e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.11821879815575534800532372782550627229068647608851e58), + SC_(0.32e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.26990287253215009373076736732240456427376723779646e58), + SC_(0.32e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.41144099603769657000784061229020148313011544750806e59), + SC_(0.32e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.54360642546573364787831336418177745406674319748724e59), + SC_(0.32e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.26246048202788539359396011213738869831268480706631e60), + SC_(0.32e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.33901507864364849988284358282806714307386916179263e60), + SC_(0.32e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.37346247783030708729119132328021685067137792580674e60), + SC_(0.32e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.38884212812261058405479834252826080293000450692588e60), + SC_(0.32e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.87868623202875744916521528027441463707616541820232e60), + SC_(0.32e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.9904970933638028979930027699619891738593077354648e60), + SC_(0.32e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.39418024433937211855639959059749438597351680401702e19), + SC_(0.32e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.21945076544301124170948783790071054291269061025092e25), + SC_(0.32e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.33070883827794102588711696662120797772003624730607e27), + SC_(0.32e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.48563469795989448826516685902490388226309489363502e34), + SC_(0.32e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.40318006528929334197581309411225900967778035526549e37), + SC_(0.32e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.35765566548583703401159594334480537333716001237694e41), + SC_(0.32e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.16320008288770695183582243296927199911904718263474e43), + SC_(0.32e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.13494109890053800061362895856437317734691082063261e52), + SC_(0.32e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.13786913965349179148758354160397392903281795132128e52), + SC_(0.32e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.20008254145695716398883597947847068186784265570372e54), + SC_(0.32e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.10866578202028634980659126016272752822554839501029e58), + SC_(0.32e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.24863809194990656316035271865849519018691629128369e58), + SC_(0.32e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.38162655088998505887223629999685542598274128239543e59), + SC_(0.32e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.50455061435990913604655924572950237668868338367805e59), + SC_(0.32e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.24449492950204826007836199424966348646978374149033e60), + SC_(0.32e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.31599130624389990447461933535729481194075716362141e60), + SC_(0.32e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.34817464939704710446748008710330550925343510510916e60), + SC_(0.32e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.36254558301978683689323521232922513645343965269922e60), + SC_(0.32e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.82073471835208667922511968444219722076812070759193e60), + SC_(0.32e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.92541175030769033992840124757330125958615660649087e60), + SC_(0.32e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.34767003244266321899096149100119699169539553951002e18), + SC_(0.32e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.17074498410800360239014807928583498252380756786676e24), + SC_(0.32e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.46960126832842412240310365960140043562097124466815e23), + SC_(0.32e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.95311843607577707246526542884541866299967559900284e33), + SC_(0.32e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.11571948584802024493830541197814470743423538893234e37), + SC_(0.32e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.14592865748742210764098619879875140705273194096078e41), + SC_(0.32e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.74476035425023241632890194738565864492008791212413e42), + SC_(0.32e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.90936792603560242395601494705127607601784626540361e51), + SC_(0.32e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.92935703137037893697414869073178560150837684685031e51), + SC_(0.32e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.14306528364796596194954921271135522553330289577151e54), + SC_(0.32e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.84276023197699906333090184371251323489429605342632e57), + SC_(0.32e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.1941210368476886973818957028893230479319444550836e58), + SC_(0.32e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.30419361931338465006762312565678887204139374623349e59), + SC_(0.32e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.4029882207736942195223849341434434556445603345131e59), + SC_(0.32e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.1974517284036275468549318730778250897299017754876e60), + SC_(0.32e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.25563706554524614722877043772183206768006290349496e60), + SC_(0.32e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.28185817319311875664243168075373339550032455015794e60), + SC_(0.32e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.29357197980320030472694387226943495691683655129482e60), + SC_(0.32e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.66821359200404688039243547160368294189510272446085e60), + SC_(0.32e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.75403070575956973230941133282295178994702251131288e60), + SC_(0.32e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(-0.82829485479772225199109356404432073693543786776427e16), + SC_(0.32e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(-0.36983557935788911192797799572146680051405967114983e22), + SC_(0.32e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(-0.14390288588811182183686707792658593697110689220826e25), + SC_(0.32e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.40204641681549519964288358140203716515970946244517e33), + SC_(0.32e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.6046700801223954269404109324111031736568941280992e36), + SC_(0.32e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.92142941565380342270863740417776928078607071863244e40), + SC_(0.32e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.49881445446269394550445362993109717539524644466849e42), + SC_(0.32e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.74503951784935085800347375468339055214379722850354e51), + SC_(0.32e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.76152398601318404809160845111890554020325705738832e51), + SC_(0.32e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.12080500973881285741420577575188927844147478238988e54), + SC_(0.32e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.74159064439052373949227477101522458609244277238199e57), + SC_(0.32e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.17139493611090953254442139764241281150428960194877e58), + SC_(0.32e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.27141412596572266654060222308812440310433988268931e59), + SC_(0.32e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.35992971192890355762092503175647061340790597508753e59), + SC_(0.32e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.17734311609964833337458350884459406430878137637691e60), + SC_(0.32e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.2298053014606589241494394653968346109968783973671e60), + SC_(0.32e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.25346077191771102679364656991564628114172708697112e60), + SC_(0.32e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.26403080170946365599050960128890001754070006579763e60), + SC_(0.32e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.60262591182852953929705568502949735572050131159081e60), + SC_(0.32e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.68028991441096338541245167586557134125561984259282e60), + SC_(0.32e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(-0.50496708702691648661401947402115423150612692942205e17), + SC_(0.32e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.75485029644374306567107767477586998660189222134583e22), + SC_(0.32e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.97092504775116702625992575231289947939116508764e24), + SC_(0.32e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.29905063234622119752123882895114870488160341027171e33), + SC_(0.32e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.4850917055764413156222477520232841681239775431556e36), + SC_(0.32e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.78908777839299949809660227085464515659572829232044e40), + SC_(0.32e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.43585328614540090973248669297367698466953658587628e42), + SC_(0.32e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.69694214291720491655190213718198044678283288046614e51), + SC_(0.32e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.71239626756134554936442938189920762406154448240904e51), + SC_(0.32e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.1141589580567485641125035833206553427830524928365e54), + SC_(0.32e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.71055763597069501541696037624394092768824714114279e57), + SC_(0.32e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.16440847495725933621779463361586183254171688853654e58), + SC_(0.32e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.2612676929480656329904598247358826067299120229457e59), + SC_(0.32e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.34659266861774579962447242091100144231808471459054e59), + SC_(0.32e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.17109184337198472216128613245423612638218967750159e60), + SC_(0.32e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.22177021867820119386912126690431887901559926026622e60), + SC_(0.32e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.24462572551933353447546890677650172596180118473896e60), + SC_(0.32e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.2548390743458848692809325785026683581683362538272e60), + SC_(0.32e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.5821817176285496998789884534615693613977043761042e60), + SC_(0.32e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.65729837208747978256831172065477794983760821280586e60), + SC_(0.32e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(-0.55136627956932194273563339740697311499788334368279e17), + SC_(0.32e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.99861102140791890644641302097875201336678306069079e22), + SC_(0.32e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.57228405128495149386689390631479103910157548663304e24), + SC_(0.32e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.2214613947954068610538664432349842138739825755778e33), + SC_(0.32e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.38835423822998294641894597685347216811864872502724e36), + SC_(0.32e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.67513535170583164938598482367980683137002166832105e40), + SC_(0.32e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.38058325573142940008215067817429924405230388069948e42), + SC_(0.32e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.65185207987785011344783745453482446228573587745436e51), + SC_(0.32e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.6663381702625812292752561626308643863787939887826e51), + SC_(0.32e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.10786705488334864255673692154970585179475464619457e54), + SC_(0.32e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.68078255768732070734722852660339614144994947451597e57), + SC_(0.32e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.15769787561161380877848837293058420077025002483814e58), + SC_(0.32e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.25148869063245157944063595967837072655911281501267e59), + SC_(0.32e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.33373434697474133002510086469769328132323281636903e59), + SC_(0.32e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.16505402605875523035566358657038146101416719843237e60), + SC_(0.32e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.21400728426533974996188481818804926738210446364354e60), + SC_(0.32e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.23608900584148629200890755719890896635021889995786e60), + SC_(0.32e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.24595732077850904277945516447582318850852017148858e60), + SC_(0.32e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.56240938356963973123978518468015581376957683853167e60), + SC_(0.32e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.63505954214182796289392342951556715316655739839102e60), + SC_(0.32e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.3942645895083537625574118828229643257211900740936e17), + SC_(0.32e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.84294512634677064441795986319490091074678347321013e22), + SC_(0.32e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.28998419188777330011231973963029370619651349113588e24), + SC_(0.32e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.16324867772468091081304173265704265963801017836655e33), + SC_(0.32e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.31024768226844629173925353489789140274997435607553e36), + SC_(0.32e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.5771025829127958454192186174359767096100886459393e40), + SC_(0.32e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.33209602924875822282423216820881943461260366842317e42), + SC_(0.32e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.60958740098935953811511375780760893267225968012075e51), + SC_(0.32e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.62316412467422691494226923938771319378247769365909e51), + SC_(0.32e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.10191104032755952229686806327523051822314153673624e54), + SC_(0.32e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.65221606829231005462234403409544590900731560441334e57), + SC_(0.32e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.15125259787214174675752642479455616980998178722566e58), + SC_(0.32e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.24206424344714827208129330592706611281663705185948e59), + SC_(0.32e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.32133811914623484351967944028361578182839476281975e59), + SC_(0.32e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.15922261108606243446062136902543530815201300190903e60), + SC_(0.32e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.20650757844299949399849896263931275319419403954896e60), + SC_(0.32e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.22784086503902756420761305368893296975869212916188e60), + SC_(0.32e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.237375425537776771307251035640462824008860896292e60), + SC_(0.32e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.54328754369512172708327480333255828864417787382524e60), + SC_(0.32e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.61354957806595371320303190584157607584029182846491e60), + SC_(0.41e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.25419315924149875007371610234696649505007172769753e20), + SC_(0.41e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.98147606994478535641819275836202280585694523896319e25), + SC_(0.41e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(-0.20861147383722826276911770080908162939858530817371e28), + SC_(0.41e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(-0.58662906858200537296776801909444561428134884878597e38), + SC_(0.41e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(-0.75865539222874454359755102693356639123477037424547e42), + SC_(0.41e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(-0.1695046526984175160913163650213687029226489502928e48), + SC_(0.41e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(-0.27505118155451057606304393207025328776042413433892e50), + SC_(0.41e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(-0.13569634805393063359600468613726765666387979714905e62), + SC_(0.41e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(-0.13953717382991874041546131700867716531854838304472e62), + SC_(0.41e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(-0.89482414136441493320647327836351018467480855550897e64), + SC_(0.41e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(-0.61265017322562462694530082133674320548912297983034e69), + SC_(0.41e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(-0.17858266359404648160531544853286958308960605241372e70), + SC_(0.41e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(-0.60818555915204679198734317228971543721776906380647e71), + SC_(0.41e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(-0.87221513134540221913175968390363464334829298009342e71), + SC_(0.41e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(-0.66895258300754642802854195025092631157402033582362e72), + SC_(0.41e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(-0.93149270378309351019733213506315181125675740664117e72), + SC_(0.41e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(-0.10557020622200268737123209921563143612794221484977e73), + SC_(0.41e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(-0.11122711091556718035503065647866305953241070910743e73), + SC_(0.41e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(-0.31923014044153480060402416496223681118821520406848e73), + SC_(0.41e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(-0.3727078906643500543713578199592587387917778160971e73), + SC_(0.41e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.11068016580747548632626366758235169490778609161226e20), + SC_(0.41e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.16820929767724442543975522991847893997860230675137e26), + SC_(0.41e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(-0.14482110911669557732129210315679221248561646851659e28), + SC_(0.41e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.38982384405979647383275684471489599291214325802374e38), + SC_(0.41e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.5660008578183693336501219330625399397050776279047e42), + SC_(0.41e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.13844982068375210958201341383946196919117779517605e48), + SC_(0.41e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.23080057431158927143956149760297513120107586468293e50), + SC_(0.41e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.12452369178338198071628977789532651910511867571771e62), + SC_(0.41e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.1280561662141204711089665606662368338252675896932e62), + SC_(0.41e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.83200880691063515134461712042224157364724895431051e64), + SC_(0.41e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.57991172123894455959547752463169257214138305919123e69), + SC_(0.41e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.16928625955525904584672052656260029554382144882629e70), + SC_(0.41e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.57914325350825197035996328166012110835765976645936e71), + SC_(0.41e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.83093042178479596808976357542309280567209992587267e71), + SC_(0.41e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.63882757780543106703617385406248916096073948323499e72), + SC_(0.41e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.88988286201437191785841092981970303442103409295739e72), + SC_(0.41e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.10086878687553857549443332912468079687999773408047e73), + SC_(0.41e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.106280086129324008127046505265519246012876755797e73), + SC_(0.41e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.30539307383233936474035362086714674739087624236237e73), + SC_(0.41e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.35661387037443452788259039526917889244076411880967e73), + SC_(0.41e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.57071806871990297835770085115737011816166072345254e19), + SC_(0.41e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.83602835029331108483826876032953054137050163694379e25), + SC_(0.41e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.32605670939276417357655988117227611354786441337479e27), + SC_(0.41e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(-0.16784936234194392839638605252986809776441734910197e38), + SC_(0.41e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.31199170774753176185463747882848211554179203794208e42), + SC_(0.41e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.92006158170349937687043037252815796651933619505863e47), + SC_(0.41e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.16205523881541417807361226653842667518652476137203e50), + SC_(0.41e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.10479997142199955468533080558976489029874592281237e62), + SC_(0.41e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.10778629707936833836643133446904785075364926530614e62), + SC_(0.41e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.71899502369589437707147792891069740807748147937015e64), + SC_(0.41e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.51946801357001690845955437085088179802281991047643e69), + SC_(0.41e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.15208637124882335332758246176908531713588035650018e70), + SC_(0.41e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.52505596540299028567632994397585949505794895628135e71), + SC_(0.41e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.7539942283817674848523230291681366935530527208666e71), + SC_(0.41e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.58249124798067524797230597564211228343574094831555e72), + SC_(0.41e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.81202596177450506445709134094029292580663300133347e72), + SC_(0.41e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.92070054540542353718199386626018201322889497829261e72), + SC_(0.41e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.97020902907007354022012292745001056543836026098928e72), + SC_(0.41e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.27945014468939628009207005073599736523039751841738e73), + SC_(0.41e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.32643190699062421955174308725628994473005521485078e73), + SC_(0.41e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.11638098878883185404071426284025733774525872818313e19), + SC_(0.41e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.4820478922241670739904241805367302196821794165608e24), + SC_(0.41e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.18028572502075407380626802264093731193207576605188e26), + SC_(0.41e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(-0.10344641329671518107639317217685370346064616827232e37), + SC_(0.41e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.47951828419557036397443969824633839397524246767777e41), + SC_(0.41e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.26128895058751169209961960887367392275922443511205e47), + SC_(0.41e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.54800205649687628370026503290672776310887185936249e49), + SC_(0.41e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.62171180297616842692286491518717310457161744187216e61), + SC_(0.41e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.63967052364000101534892877174892162732981104268441e61), + SC_(0.41e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.46242509389987516617469346563273458676697235008194e64), + SC_(0.41e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.37267336828934228274351943124034761437642254340297e69), + SC_(0.41e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.11008277711696230654556586928931794679606430612995e70), + SC_(0.41e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.39067683700910858541298936300286579384959605130305e71), + SC_(0.41e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.5625269556714907295189763375090803721864016107247e71), + SC_(0.41e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.44099662103629972459425342173303660362095497038002e72), + SC_(0.41e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.61619675835608586956856265233896340289520991700577e72), + SC_(0.41e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.69927032641425706961006871618913249151745296475473e72), + SC_(0.41e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.73713824509815646466758091894582228169659165707057e72), + SC_(0.41e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.21385164590219968714564623100031741356693762201802e73), + SC_(0.41e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.25006487306137423524077756352261875456711393539503e73), + SC_(0.41e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.38756432787003897112394230576769513606571947771529e18), + SC_(0.41e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.99839989345285547538184487258457516863522476198653e23), + SC_(0.41e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(-0.49853515675952341423879069601691425307315450005619e25), + SC_(0.41e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(-0.20703626346223992513149054721841249552292037676472e36), + SC_(0.41e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(-0.17788999256438247803681415262183226225635377746675e41), + SC_(0.41e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(-0.13652899739422701988778282284035621578560602823046e47), + SC_(0.41e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(-0.31429365275889322289079354872507617764945120947442e49), + SC_(0.41e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(-0.47752894251726036193006212493542977764254812468721e61), + SC_(0.41e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(-0.491418154422385043465314079144909533971653215621e61), + SC_(0.41e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(-0.37013033219545181956252106796571743384994805843335e64), + SC_(0.41e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(-0.31531601893121155833953237185394892820409008424281e69), + SC_(0.41e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(-0.93560449174017270992926516843653681084101092455443e69), + SC_(0.41e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(-0.33671025920845933994628330404706359743128884449482e71), + SC_(0.41e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(-0.48547902785506115081107471593969299206814079814412e71), + SC_(0.41e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(-0.38342801257718425392155329928952849385489018673392e72), + SC_(0.41e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(-0.53638338755841488414666051437494065888408897957385e72), + SC_(0.41e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(-0.6089640716801969399750748987025041150970512947946e72), + SC_(0.41e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(-0.64205885063398489887611624729520045394561471921696e72), + SC_(0.41e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(-0.18694659877287876792786166426086039507588733485358e73), + SC_(0.41e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(-0.218718722409308456586240728039465456449834443671e73), + SC_(0.41e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.39904754079242376592002759268138467606037039734643e18), + SC_(0.41e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.10189001009097865402366220564318831743294144929342e24), + SC_(0.41e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.42918687555550874859874826339311369654239232796521e25), + SC_(0.41e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(-0.1151068044262893075425560397545812481549033633774e36), + SC_(0.41e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(-0.12663312084210513047239702981750785288194047083153e41), + SC_(0.41e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(-0.10962660898850710282455424139756407560301206382129e47), + SC_(0.41e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(-0.26056821692743657744935836782038316256880592789176e49), + SC_(0.41e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(-0.43714131912107494130379425306924012662054811196202e61), + SC_(0.41e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(-0.44988522307357322573741774680246203596065179611056e61), + SC_(0.41e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(-0.34355707288876586284004263128481334807866368412994e64), + SC_(0.41e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(-0.29818241109745229656590730863344860961358416681219e69), + SC_(0.41e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(-0.88610230674684299948868646060297634782036168945087e69), + SC_(0.41e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(-0.32039151274788874804440750667683974546918286008973e71), + SC_(0.41e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(-0.46215994418152381763951866169538023759743727319216e71), + SC_(0.41e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(-0.36591895781418019516193088684151288857469458203439e72), + SC_(0.41e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(-0.51209003990586443701751285356459773759185743443067e72), + SC_(0.41e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(-0.58146896977368645682691596124004226974185180713823e72), + SC_(0.41e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(-0.61310700590854934687090590676640794792162596071696e72), + SC_(0.41e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(-0.17873429196565537183694295307275306802851338721637e73), + SC_(0.41e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(-0.20914752701677190350213150169820114321351731360709e73), + SC_(0.41e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.23814064270628925932374601491769017987207167984736e18), + SC_(0.41e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.69929296960759805716913293689686080628972639807548e23), + SC_(0.41e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.26961099618889940997924329478187194202858969003127e25), + SC_(0.41e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(-0.61750915689853607701504418512485648830252765729121e35), + SC_(0.41e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(-0.89693761349554688024987239265828716821197287253054e40), + SC_(0.41e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(-0.87884892725228915019765917512904761318730268620943e46), + SC_(0.41e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(-0.21578934771366929645242109168128340893728439124054e49), + SC_(0.41e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(-0.40008525238128332752148623239763519117976521642327e61), + SC_(0.41e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(-0.41177590320103816066295035661579257120564960875981e61), + SC_(0.41e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(-0.31884471364704101118276914177627629742048549798212e64), + SC_(0.41e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(-0.28195699847084293524922578689922418180517364239186e69), + SC_(0.41e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(-0.83915509699116147296400601053787049039806563376846e69), + SC_(0.41e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(-0.30484430059789664086239492597223896239340370655202e71), + SC_(0.41e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(-0.43993353600063919183393943460099155271188707798633e71), + SC_(0.41e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(-0.34918988409330997620795189408254043922786861219854e72), + SC_(0.41e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(-0.48887004499374786076347645733736919681359796636954e72), + SC_(0.41e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(-0.55518491841138759952195876521067463200616974892712e72), + SC_(0.41e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(-0.58542872586271560151990933199570714145132575434884e72), + SC_(0.41e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(-0.17087391643982559292131727667490401459425399952619e73), + SC_(0.41e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(-0.19998492541202024256975749986171443811079709638996e73), + SC_(0.41e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.40711948512157230147880359995277465040996843914162e17), + SC_(0.41e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.32501921548266647189603772086953178607775442882282e23), + SC_(0.41e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.11852242048826970088830541028479867117837664207482e25), + SC_(0.41e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(-0.31600552147926110338671183117665880279439817429618e35), + SC_(0.41e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(-0.63196186774256337032724976942103729095306155704798e40), + SC_(0.41e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(-0.70340645274857472158861627490662854534125285055461e46), + SC_(0.41e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(-0.17850659337726892706200991328689558873343859721589e49), + SC_(0.41e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(-0.36609287137306391697266638699334555505968966863277e61), + SC_(0.41e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(-0.37681511669909514362070659660311262374898893103155e61), + SC_(0.41e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(-0.29586622098251424893778431403915214422439245303448e64), + SC_(0.41e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(-0.26659284940190086426089374672129836105377147802328e69), + SC_(0.41e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(-0.79463430187079415076461571563649160393001591605559e69), + SC_(0.41e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(-0.29003306042235692662243162485823418936400711614878e71), + SC_(0.41e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(-0.41874988749106071026077477732955288128993747757124e71), + SC_(0.41e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(-0.33320691663765414274005456637938123640286361610155e72), + SC_(0.41e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(-0.46667716799936462182104365541775542599092022637108e72), + SC_(0.41e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(-0.53005991307940787942986127470642183859561841589863e72), + SC_(0.41e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(-0.55896939225711764978562532549614018753339655321111e72), + SC_(0.41e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(-0.16335076857642208614245131720237561482457092780815e73), + SC_(0.41e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(-0.19121391202291572296449027033658220467866804505022e73), + SC_(0.42e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.21359474784266081689770425925832397437477262193879e19), + SC_(0.42e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(-0.4010850781004399948143042288840675571042365793259e26), + SC_(0.42e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.23866196019292253682652447029177669047583988172241e28), + SC_(0.42e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.11059725670377187735390085931929897586000631975326e39), + SC_(0.42e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.21477932899019225802466796495889574800663243670749e43), + SC_(0.42e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.73240038041454877326015927164978577972770724458566e48), + SC_(0.42e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.13922090122902779381217026707692529447192100244206e51), + SC_(0.42e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.14728016087569667397190828754034493940094897658165e63), + SC_(0.42e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.15156252306464377174991878171124363445534520033844e63), + SC_(0.42e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.11546822787289685140391005308513806341009256667913e66), + SC_(0.42e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.10578235992023012122210745155465353458375714854618e71), + SC_(0.42e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.31700159700280375187847446742234210056855072672343e71), + SC_(0.42e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.11823970244954685220527044789719445964560394682583e73), + SC_(0.42e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.17114997332841744915759235105827955211584341118446e73), + SC_(0.42e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.13831189378946387269327579836857053966297663685826e74), + SC_(0.42e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.19423549179450721994821004329951968476465025032177e74), + SC_(0.42e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.22084282336084540624080065867344952176724780172895e74), + SC_(0.42e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.2329878711939915580986493074900525496363685150844e74), + SC_(0.42e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.68698686097979329874903517836254812165706398555655e74), + SC_(0.42e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.80525561720036237740551891365146248108066846059254e74), + SC_(0.42e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.13203964059174156801603409350818409234526335380614e20), + SC_(0.42e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.23287578042319556937454899896558861712563427257454e26), + SC_(0.42e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.93840851076226959505232367134984477990223413205822e27), + SC_(0.42e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.71614872297792229970625174847809376568791993950891e38), + SC_(0.42e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.15817924320835532465965577165264175403612467391702e43), + SC_(0.42e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.59395055973079666367814585781032381053652944940961e48), + SC_(0.42e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.11614084379786886666821411731662778135181341597376e51), + SC_(0.42e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.13482779169735847590027930975081228749043710900988e63), + SC_(0.42e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.13875690644323172463902212564461995107281844136912e63), + SC_(0.42e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.10714813980379049989046388188091564767362007713602e66), + SC_(0.42e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.99983242707840675626152676308336608862343317954264e70), + SC_(0.42e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.3000729710472778472938024147660820710141685818408e71), + SC_(0.42e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.11244826991446433250167081508059324856202734916124e73), + SC_(0.42e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.16284066911056948947669471530404862405912241192573e73), + SC_(0.42e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.13192361801140956202291405982794564805336924202591e74), + SC_(0.42e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.18533666317436350076962593400132265442043990939219e74), + SC_(0.42e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.2107559446732915486913573257609814420792480283209e74), + SC_(0.42e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.2223598625810591572859446569635006250350808395047e74), + SC_(0.42e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.65644755359655936227499981627583344691797636132031e74), + SC_(0.42e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.76959423016291892461725987412454459183659204871158e74), + SC_(0.42e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.71444195102282619490413072573261620192277066633173e19), + SC_(0.42e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(-0.99937645376208120496442316574079144135563230678117e24), + SC_(0.42e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.18098636500779619378869171381812673954517457870581e27), + SC_(0.42e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.29137473989540111064148772810774292035765179994334e38), + SC_(0.42e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.8488822311954510134981366734878451882483730616555e42), + SC_(0.42e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.38900628671843989679026839384924092726373854551798e48), + SC_(0.42e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.80586469750742682224070506370843067124752761310452e50), + SC_(0.42e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.11292296312725344140109981139844351076836274257992e63), + SC_(0.42e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.11622861987949849068534884255718974000736105160342e63), + SC_(0.42e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.92223241452533838939325380184689165967554230777165e65), + SC_(0.42e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.89299763441244239074091328065948877154852161458406e70), + SC_(0.42e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.26881813860453921851314081710833675612000672950873e71), + SC_(0.42e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.10168317155263015921265931740412242801931115879417e73), + SC_(0.42e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.14738520621678082631824483447226345390170193138602e73), + SC_(0.42e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.11999844525269967231911290659597259927316401501989e74), + SC_(0.42e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.16871554061345071886388238323323195541108946580806e74), + SC_(0.42e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.19191177720825835528118235442583612115579415202175e74), + SC_(0.42e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.20250300127306462978777953496453657034353300094747e74), + SC_(0.42e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.59928842754255881278061767154512711287277717307866e74), + SC_(0.42e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.70283125705887393374898970533384900075677361431288e74), + SC_(0.42e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.37232259440551007904419108647161913688867149131376e18), + SC_(0.42e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.12656616309227519234804062150230535575389105373578e24), + SC_(0.42e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.11121125033168497162790871509632901343057840560871e26), + SC_(0.42e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.14173827162180799967103697414037216309076062920444e37), + SC_(0.42e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.1193458926715322948295029085476813154016420189069e42), + SC_(0.42e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.1055453489534846641266669543418816728387523734135e48), + SC_(0.42e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.26266094983142122494568778827797558508629040543892e50), + SC_(0.42e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.66011202522174076815871997486791659576418473322679e62), + SC_(0.42e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.67970219541792296184145740179755223106238693024715e62), + SC_(0.42e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.58597666076404317143494031021224791081602796496336e65), + SC_(0.42e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.63499919797998424645926800383437963837948279129038e70), + SC_(0.42e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.19290935564081822247733655422527561443818826509063e71), + SC_(0.42e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.75070956336131595838789912667020690214659087700923e72), + SC_(0.42e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.10911217946372322543693942581358144469063932044255e73), + SC_(0.42e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.90187542661418182230613108757780048803699259726556e73), + SC_(0.42e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.12710365781824840096911046327504024271824169123875e74), + SC_(0.42e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.14470797052435878411306593441864915314524649901624e74), + SC_(0.42e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.15275085745694370407276596387840974426104216046952e74), + SC_(0.42e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.45540815114604128649362267107066655756251253024203e74), + SC_(0.42e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.53466347202715989861729340330777367209839211099474e74), + SC_(0.42e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(-0.39153630455495741045774375280380675698257034398595e18), + SC_(0.42e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(-0.17018972911970248668275785929257027580160663090018e24), + SC_(0.42e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.69595031894312660777154484919015428711067607371055e25), + SC_(0.42e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.23037961127207740667796861812511909567327144419796e36), + SC_(0.42e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.42077649904104640362928050896857145193997745614009e41), + SC_(0.42e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.53838415983797634806590889741503775771818379652116e47), + SC_(0.42e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.14778454217617661914180607041369474600235202599649e50), + SC_(0.42e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.5032566866979539081935004409215402001246270126687e62), + SC_(0.42e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.5182957148136669332140993143739629704922250597426e62), + SC_(0.42e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.46615222543646183546502915508206402466652934906839e65), + SC_(0.42e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.53487606264692007612533128828321396142399772251962e70), + SC_(0.42e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.16324712792563530867999746102974246145226380354393e71), + SC_(0.42e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.6444734571967625430181383191639775796913445138712e72), + SC_(0.42e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.93801892931730344937532629105929383365124993336535e72), + SC_(0.42e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.78126447327792031669649189893780406266951945843716e73), + SC_(0.42e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.11023798767626438671609586655033250029347208880008e74), + SC_(0.42e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.12556301602772680943254896899059665562520939570186e74), + SC_(0.42e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.13256671936314523803637803812730743976381906848935e74), + SC_(0.42e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.39671197866986465841190450269103357640529670712364e74), + SC_(0.42e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.46600412271264562696192507709355676651691796916768e74), + SC_(0.42e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.75112362374663554622838398775779190778000533604808e16), + SC_(0.42e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(-0.68299719028723832659095653649381958368665181606756e23), + SC_(0.42e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.26676344338761785917279658579704059056828374574534e25), + SC_(0.42e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.11527280684578809913541257837053784751836808082056e36), + SC_(0.42e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.29414337819894127315688347915106359905803698530856e41), + SC_(0.42e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.42875755084946924524135465601747368211517173269987e47), + SC_(0.42e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.12172772048343296139687023363165642974547143320732e50), + SC_(0.42e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.45954255478584641406312101561461618746257220147249e62), + SC_(0.42e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.47330719250630961064035753969371676689615988013155e62), + SC_(0.42e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.43179651814758524918102489195358268985866298065539e65), + SC_(0.42e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.5050578215371748464687405574198691004626393058384e70), + SC_(0.42e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.15438610485816687868511059642371269797406018664942e71), + SC_(0.42e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.61243430592197366821369756849629360514442622786223e72), + SC_(0.42e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.89180293489915106761137442488975580989150620604614e72), + SC_(0.42e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.74467257749650229718029881025365277381205000023372e73), + SC_(0.42e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.10511708727720574234592073801468652291755351445577e74), + SC_(0.42e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.11974832632998994486427980937819623292779087763047e74), + SC_(0.42e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.12643564930405974456766897905964336028460280888218e74), + SC_(0.42e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.37883854947329912122821020738375826960244536840201e74), + SC_(0.42e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.44508937001096843661171192692373665219556623780698e74), + SC_(0.42e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.24565187894375561478602985479526809894987173320785e18), + SC_(0.42e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.16295779320359730578176400403041222603074582007918e22), + SC_(0.42e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.28475528012815508064467089848313514603059442859311e23), + SC_(0.42e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.53521891155934491433908159858052198688115315091441e35), + SC_(0.42e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.20444961684938658513189623988523488223683969805551e41), + SC_(0.42e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.34087265812424033022158873850456892079644146407893e47), + SC_(0.42e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.10014878571206603175162812446352808885174299408327e50), + SC_(0.42e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.41953402954771808131097239237485266834459567983017e62), + SC_(0.42e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.43212960218620579457406250403213750977559491925557e62), + SC_(0.42e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.39991204678288114806274797777595506011661443085718e65), + SC_(0.42e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.47686212169009055294381797872994668228212194159921e70), + SC_(0.42e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.14599455388825526395547053631833399307007953031173e71), + SC_(0.42e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.58194987586218400412745807589906970890508585720702e72), + SC_(0.42e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.8478095812990871484279804814296566546203174982475e72), + SC_(0.42e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.70975358908717129955950362084539872988926313901386e73), + SC_(0.42e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.10022838682726826373828597344131283094941753479207e74), + SC_(0.42e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.1141964771458760688690602217260894866077291801412e74), + SC_(0.42e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.12058136204543258855246988573968628887008955133869e74), + SC_(0.42e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.36175115782931656193607847971626786814301996844939e74), + SC_(0.42e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.42509087746976641235473617693756520838448652816798e74), + SC_(0.42e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.28636382745591284493391021479054556399086857712201e18), + SC_(0.42e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.34131499480302620247421412127257300868082901083074e23), + SC_(0.42e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.12136997328955125169475211926963002263868258636075e25), + SC_(0.42e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.21921339008008381095236976740386318408675497661823e35), + SC_(0.42e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.14125343007513024809917126294313115314153354235071e41), + SC_(0.42e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.27053201284938285806272711101390606626231617902347e47), + SC_(0.42e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.82298126374339139045427133134838529978399134361676e49), + SC_(0.42e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.38292474241041168961370575367551811283862671296689e62), + SC_(0.42e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.39444809051629628021199184437182624740069602615241e62), + SC_(0.42e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.37032542468462972316896954637203984569417518555373e65), + SC_(0.42e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.45020283674990046651772860405781684617674479379689e70), + SC_(0.42e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.13804821086954732244782437916196907703077937115118e71), + SC_(0.42e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.55294656981994831146521491341324628996868514559215e72), + SC_(0.42e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.80593459254998107740190300369670136649132375049038e72), + SC_(0.42e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.67643289742340588528549816420746060624897677740371e73), + SC_(0.42e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.95561615147274617520075536887135276689508332528364e73), + SC_(0.42e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.10889587801508199007476160897902526822177299598222e74), + SC_(0.42e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.11499166812286141205461363248472488699475558580658e74), + SC_(0.42e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.34541608097167435332183334799603030666056287566857e74), + SC_(0.42e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.40596948626747484005828714990390698791661972366296e74), + SC_(0.45e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.29274124972633701570564292792031859629711879838857e20), + SC_(0.45e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(-0.43551505296472007762182583258767163285663695146822e26), + SC_(0.45e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.24455546141674762028980914801678476587962659025292e28), + SC_(0.45e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(-0.44860498498388343742934326820509820115044504619735e39), + SC_(0.45e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(-0.35932655218892004205858182423674489692897442756058e44), + SC_(0.45e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(-0.47037022246279297816598769010931325915837303401464e50), + SC_(0.45e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(-0.14615196666916328996784412454045334845765429827795e53), + SC_(0.45e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(-0.15913095488560146744508198573647780920019427652806e66), + SC_(0.45e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(-0.16413088821949460258127704634006614333903145963927e66), + SC_(0.45e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(-0.21073282920616312629232703845759786403626518197732e69), + SC_(0.45e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(-0.4655330002921972977222878037589602118478572238595e74), + SC_(0.45e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(-0.15166545156907125288350216619915917563544867967108e75), + SC_(0.45e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(-0.74437396731306058953025262438777948266668965321046e76), + SC_(0.45e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(-0.11080232092013776235023981122241759543882337635608e77), + SC_(0.45e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(-0.10483957808091797906097583143677121209443584433792e78), + SC_(0.45e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(-0.15104478172497687075315559198658302216821980421276e78), + SC_(0.45e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(-0.17340437114876778749564805156956445918166936912147e78), + SC_(0.45e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(-0.18367967720887278567016618596884991290819858312266e78), + SC_(0.45e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(-0.58751299094600472689015374414918656420331205183898e78), + SC_(0.45e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(-0.69693141609850983120993020431531230192680193988462e78), + SC_(0.45e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.16684661217739277666198397970770987984811087994828e20), + SC_(0.45e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.194551759062453755910615531609665584349690227622e26), + SC_(0.45e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.83839154351725995911566678804821490629756198330423e27), + SC_(0.45e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.26114802125593751881999007819348947458860662788706e39), + SC_(0.45e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.25336814784035961443322189894592839818128233517725e44), + SC_(0.45e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.37290403939153211715621822181229802537137052984718e50), + SC_(0.45e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.11970873741494677668563168294976400593454647559022e53), + SC_(0.45e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.14460857918609100105772506470820471007130803322658e66), + SC_(0.45e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.14916262041689471651382101593166755895371007300724e66), + SC_(0.45e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.19436426523182449402977121469602612261170672743232e69), + SC_(0.45e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.43806715909354543644934075240707343453715879325229e74), + SC_(0.45e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.14295011407046961505692411410234648994724449517351e75), + SC_(0.45e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.70515668285003909372716830966621510643561174731402e76), + SC_(0.45e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.10501625147980215352949717933686353601546803747292e77), + SC_(0.45e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.99632365566829006137896021069715159039632639159213e77), + SC_(0.45e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.14360343374974471878484473226369188566014798322108e78), + SC_(0.45e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.16488770110404943041422384023322849571226742442932e78), + SC_(0.45e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.17466990653988925739631263127844278071271051930333e78), + SC_(0.45e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.55943164112120066996155176980076108543387279108017e78), + SC_(0.45e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.66374671778835615061106907275595257720512678787067e78), + SC_(0.45e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.60341102903970817465629836527296942664383007219215e19), + SC_(0.45e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.45951503536934950447309131429467587768340298086962e25), + SC_(0.45e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.35032066840676987480391666052772913110515848075275e27), + SC_(0.45e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(-0.8305778807963484169055791107743191778177638568682e38), + SC_(0.45e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.12418279194202088406978444893968482259110836191659e44), + SC_(0.45e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.2332220423605303254878100707358942946042216280311e50), + SC_(0.45e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.80033591342532725993993494030209934966796613185064e52), + SC_(0.45e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.11933756047424799413830351469272123573613375499298e66), + SC_(0.45e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.12311306579710795071214515153024184776996876194134e66), + SC_(0.45e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.16526377267017562638652053409778355871558725495314e69), + SC_(0.45e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.38779904242549596651866105496117791129365969797541e74), + SC_(0.45e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.12696149770652710559839924998882256794167076535682e75), + SC_(0.45e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.63268071285690107145017479406955376823354918209641e76), + SC_(0.45e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.94315607262634119149544528728219377600806138898648e76), + SC_(0.45e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.89964549906468387762111981298317372447963282203614e77), + SC_(0.45e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.12977916900431059311175893739958384256718566666756e78), + SC_(0.45e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.14906208078982675632997616659309814093904428954593e78), + SC_(0.45e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.15792639806980751147233645262030916661693734960713e78), + SC_(0.45e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.50714590444049195943441554518375000278495182731574e78), + SC_(0.45e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.60194173038716297422780011839202284406287894637518e78), + SC_(0.45e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.18253260877797764992750354000317206528923983665559e19), + SC_(0.45e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.73946943613766903950931608210878463232355174687162e24), + SC_(0.45e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.32370319359833569594523274885456122088581350495781e26), + SC_(0.45e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(-0.82500392120735413298555180294044875821042087444241e36), + SC_(0.45e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.12817941084113251882825626123069576850063412666378e43), + SC_(0.45e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.54719171788719775083707720610314862368576977146453e49), + SC_(0.45e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.23238237438843154912169908487509421648268269290893e52), + SC_(0.45e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.66699601369524401585244551501454389010443465618146e65), + SC_(0.45e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.68839406223598354479997330607998598784763060125259e65), + SC_(0.45e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.10120040259379092953635612936812625075216995401234e69), + SC_(0.45e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.26846089785251847935133506102733153107762992492581e74), + SC_(0.45e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.88769051573501320696816215005365976547770798601523e74), + SC_(0.45e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.45620096792925838654790341659221588064002106379683e76), + SC_(0.45e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.68210774978916700451537794151541569006784898245873e76), + SC_(0.45e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.66136987524580307242269410424342351312373430708626e77), + SC_(0.45e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.95652541722774255153412977647631567014836391799747e77), + SC_(0.45e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.10997122122894360053007627043100217768346864173535e78), + SC_(0.45e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.11655783530023270959884177725299867911303276065742e78), + SC_(0.45e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.37731206032352365914876708929449329992287455874807e78), + SC_(0.45e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.44835854807885337834962841104499559098502297668907e78), + SC_(0.45e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.81464730308514291790955054812081785084985872782559e18), + SC_(0.45e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(-0.7755659144622048806584041505317005251764462229187e23), + SC_(0.45e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.53665454490884156928244439712324212505169961977013e25), + SC_(0.45e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.14504784318758867293103291029025386340989492141124e36), + SC_(0.45e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(-0.37640444007883531637674751598294723145660286799466e42), + SC_(0.45e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(-0.25842958456491327021003550171607722930283378449049e49), + SC_(0.45e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(-0.12309189168293629927868226960661325527673140145106e52), + SC_(0.45e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(-0.49707033777482524297842373862629728367057899894763e65), + SC_(0.45e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(-0.51312992598835180588742492745896035067598577941467e65), + SC_(0.45e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(-0.79017794680761591428669772452867569988916289157763e68), + SC_(0.45e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(-0.22309642855468898837703420170924859501646062926286e74), + SC_(0.45e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(-0.74141236532301395993437122842557503685733027292229e74), + SC_(0.45e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(-0.38701691425289108731795960983914690726558977823801e76), + SC_(0.45e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(-0.5795399481157823806876178780247512749701055801335e76), + SC_(0.45e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(-0.5665882940877040849069564942803722757749390974443e77), + SC_(0.45e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(-0.82051251811832676219362840053925933363770991161142e77), + SC_(0.45e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(-0.94380059638508116035033900280289772296489937387914e77), + SC_(0.45e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(-0.10005322172271841100268525743082821928607609841622e78), + SC_(0.45e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(-0.32519942758777374075144640527935348814713681398308e78), + SC_(0.45e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(-0.38665965103193938037332568536616172608348194824624e78), + SC_(0.45e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.72413661121559299010680116115717551526264493743781e18), + SC_(0.45e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.67881905423496700999236989655513868913775011329425e23), + SC_(0.45e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.99818854762116167570376810172961762895622194888639e24), + SC_(0.45e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.12906772033618559755390956750298262495559972202533e36), + SC_(0.45e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(-0.24614915485002465976525652441570206235737099109054e42), + SC_(0.45e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(-0.20044702200359641892041032677462703744252860207732e49), + SC_(0.45e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(-0.99329247753367376635696498141857809221830935821504e51), + SC_(0.45e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(-0.45044470958002410532192469100564215995888914293673e65), + SC_(0.45e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(-0.46503237690009959147736572560167376524932481751263e65), + SC_(0.45e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(-0.72738032391030033321059670356626506329568596949499e68), + SC_(0.45e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(-0.20970935470297452005348050560256113055686398711447e74), + SC_(0.45e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(-0.6981010177928984554612947977433493120069419153101e74), + SC_(0.45e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(-0.36631912352769728297329091975852324896018735936738e76), + SC_(0.45e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(-0.54882396859720707564671628077739356964994903041733e76), + SC_(0.45e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(-0.53804802942821536043461681183029182163868589045869e77), + SC_(0.45e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(-0.77952150125623056923488632950606821328032853399736e77), + SC_(0.45e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(-0.89679735596126858994138734145283982751718707285726e77), + SC_(0.45e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(-0.95076845201674713762755834820526966667127231390139e77), + SC_(0.45e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(-0.30944452104817332234110188373979189312059542460008e78), + SC_(0.45e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(-0.36799935371595952757616496589992329045135430705121e78), + SC_(0.45e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.33252645457044408631279390528637819358312477201633e18), + SC_(0.45e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.11483560684388803497075065554278875153562703657879e24), + SC_(0.45e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.35794016703975172774608571376815792250658373770363e25), + SC_(0.45e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.92977138450765292283402986514466302063615553172253e35), + SC_(0.45e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(-0.15949943281665382460080074668994985859122746550158e42), + SC_(0.45e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(-0.15515037911344884531528033959947219483448957998808e49), + SC_(0.45e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(-0.80043928280098414821983667625988412726556745469951e51), + SC_(0.45e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(-0.40809403185316856070980496599903149133490031551001e65), + SC_(0.45e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(-0.42134157682475158792560506142630683691630179926328e65), + SC_(0.45e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(-0.66946140040927977436402500169848048593506966031597e68), + SC_(0.45e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(-0.19710763510408441626498019698166171485505549571423e74), + SC_(0.45e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(-0.65726329277208679533590061324665636541578984414974e74), + SC_(0.45e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(-0.34670355512546552986840478610509846912034635968223e76), + SC_(0.45e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(-0.51969962817787806739761093994722930583282064500493e76), + SC_(0.45e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(-0.51091333256966059739530364964810016074638126078237e77), + SC_(0.45e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(-0.74053263255291032948749285662558387732024169566712e77), + SC_(0.45e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(-0.85208276683329338297682384139102670627824063571859e77), + SC_(0.45e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(-0.90342459985702419002170217470607758455632738477839e77), + SC_(0.45e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(-0.29443587111849658676857666533292047061683845210936e78), + SC_(0.45e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(-0.35021952695818267888629224968171311185386284106826e78), + SC_(0.45e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.73819339394390948538561004701028550197833191316843e17), + SC_(0.45e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.97436012295256134096121994735911896215994354539306e23), + SC_(0.45e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.3590793652136163629394344329319763764198675950356e25), + SC_(0.45e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.58697436539336138214750144065091213142617912513818e35), + SC_(0.45e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(-0.10232993097120978607346305651137750484401893699268e42), + SC_(0.45e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(-0.11983433576597672081401826908047364081609355643254e49), + SC_(0.45e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(-0.64412951999386022447089506727656680491124839052783e51), + SC_(0.45e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(-0.36963537985184819745245085785278975968577388995451e65), + SC_(0.45e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(-0.38166307767179149895193094308848773942951602864047e65), + SC_(0.45e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(-0.61605085087986960802381364937894992796161978885499e68), + SC_(0.45e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(-0.18524624947434368696488150298614456622641748058275e74), + SC_(0.45e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(-0.61876114204970943223574085055633422800684328007007e74), + SC_(0.45e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(-0.32811491438921383317215468738753124311706991066799e76), + SC_(0.45e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(-0.49208633339854035783256166523388881338207129152126e76), + SC_(0.45e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(-0.48511656022229745520048845791737654703740031073762e77), + SC_(0.45e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(-0.70345035039321876833392790636091919048075988828817e77), + SC_(0.45e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(-0.80954793312314045746657374100847933397983828946714e77), + SC_(0.45e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(-0.85838566907989240579722944017822122162893144120735e77), + SC_(0.45e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(-0.28013893619064636659853856672393961760519984022334e78), + SC_(0.45e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(-0.33327957380998208681970170799654079959221588832505e78), + SC_(0.47e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(0.31101763331955668194447487120587936364346256014167e20), + SC_(0.47e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(0.42267833981947035220265591128673251413883339951645e26), + SC_(0.47e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(-0.27563975272532007331260848379833724903407802405148e28), + SC_(0.47e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(-0.65405977491530370754836310447385983318854476542225e39), + SC_(0.47e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(-0.1799903088898663524015618856288291891867493808538e45), + SC_(0.47e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(-0.62436340815042534040285637249066104829387839949218e51), + SC_(0.47e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(-0.27339223220708666325296171470054985818058666608929e54), + SC_(0.47e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(-0.14631272033298605340890946932067241338126030321208e68), + SC_(0.47e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(-0.15114215438481721410077424958849169364033819347547e68), + SC_(0.47e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(-0.27601472386636982179411627497478741597555457793174e71), + SC_(0.47e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(-0.11025962464533033838642553295976962012397545121313e77), + SC_(0.47e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(-0.3799570754845538116614387506599134436759244083397e77), + SC_(0.47e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(-0.22422829419353665265949814814354836949617820760875e79), + SC_(0.47e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(-0.34009502809176549418106379416079988229889708318749e79), + SC_(0.47e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(-0.35772117909293679342741673810218810571733259897595e80), + SC_(0.47e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(-0.52430089289383546766310422093242129865815249794125e80), + SC_(0.47e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(-0.60583259246953723319154714375919613247448317568898e80), + SC_(0.47e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(-0.64347035019810259410638642885764592466672053261792e80), + SC_(0.47e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(-0.21736733403239177932138563415697454110920201364344e81), + SC_(0.47e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(-0.25992402909300571713171690757861655684392300484906e81), + SC_(0.47e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.17976281268623917719266591994390673123544566479837e20), + SC_(0.47e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(0.29181692556877302777814458986321400489656466451801e26), + SC_(0.47e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(-0.17289852147960591138166959175105713862226251163543e28), + SC_(0.47e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.33335278943933369595132374179688356862292750580931e39), + SC_(0.47e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.12263872763333682349831092285727099989452605376034e45), + SC_(0.47e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.48701336904616759410001262488971836779681613132943e51), + SC_(0.47e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.22105290916442760094388409995759879629964049776431e54), + SC_(0.47e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.13229637034743840505671076760798869416380788293625e68), + SC_(0.47e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.1366732781095952504699323492346597480230682344436e68), + SC_(0.47e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.25352980128001067213484005811593604258686780186494e71), + SC_(0.47e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.10344492997843622358621014677970271541778493092883e77), + SC_(0.47e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.35708629528440082945777717664751643717089957086461e77), + SC_(0.47e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.21185722185121137266498521248929770917300379181853e79), + SC_(0.47e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.32149754008810180834923991111795603959981062687715e79), + SC_(0.47e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.33911822183407967774550313431810368438779491291824e80), + SC_(0.47e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.49725669656032034127826364824272139629326001569461e80), + SC_(0.47e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.57467912676184474582794373376869362777458889332318e80), + SC_(0.47e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.61042399190702385614950227007409923726356134823907e80), + SC_(0.47e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.20649038397643325254431240042336597944248663996534e81), + SC_(0.47e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.24696709431217851700660769241070534398842979086119e81), + SC_(0.47e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(-0.73081251542816933061499547454243244509907630404928e19), + SC_(0.47e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.14582296505589710967719479009344828840009419112744e25), + SC_(0.47e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.90957449631659087712712112247901863400515918561829e26), + SC_(0.47e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(-0.73019500469097895638025361029413912228746974366905e38), + SC_(0.47e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.55917144686888800461844088093163341708421213798709e44), + SC_(0.47e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.29466576180300634056033145209488693765195359574125e51), + SC_(0.47e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.14396520232107722845214722810156813503336310705224e54), + SC_(0.47e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.10808468108848590018241505148216350808800192620711e68), + SC_(0.47e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.11167723133344358268979011005448317907310850321513e68), + SC_(0.47e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.21379736691666705252030247283993412307451952101089e71), + SC_(0.47e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.91027710899858407433887015207697753217987172528895e76), + SC_(0.47e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.31530883832891163711848815939046674114575705404719e77), + SC_(0.47e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.18908367686426138734291660914686449144642298547486e79), + SC_(0.47e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.28723623201541760784689044418621614542133762261314e79), + SC_(0.47e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.30470551327123388157317742072532702368474819143648e80), + SC_(0.47e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.44719650598388405593160025177360009532631324734177e80), + SC_(0.47e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.51699841618189755923678686048001067813423272330789e80), + SC_(0.47e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.54923238391076932071348456328947751445343838416207e80), + SC_(0.47e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.18630895494609058661514047861613527358357054138741e81), + SC_(0.47e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.22291938031476423138544669688081834222727393053012e81), + SC_(0.47e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.21188547631664387983458447789537038960779105100885e19), + SC_(0.47e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(0.61158506244861312781656870133336928825909623164926e24), + SC_(0.47e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(-0.17052723712233405244856221307226693091950897921076e26), + SC_(0.47e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.17478938058510736433951957505830077037568884031657e37), + SC_(0.47e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.44633578572341736961120985293083747359937999109499e43), + SC_(0.47e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.62246000843956066508460636921261043691312722366536e50), + SC_(0.47e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.38515254499227930245586370980922829833765474037147e53), + SC_(0.47e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.58593299077417591428160573966305567717375507945608e67), + SC_(0.47e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.60568515695883428116393195843293665122325796999439e67), + SC_(0.47e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.12768431820033106051695378990023618139059249428503e71), + SC_(0.47e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.61885634378249806478668848799452081085974299700936e76), + SC_(0.47e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.21662174670925226904784772604358092811731017224908e77), + SC_(0.47e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.1341900951242765058597532246093558391604535926944e79), + SC_(0.47e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.20449017561862799895005210264107308841339187876755e79), + SC_(0.47e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.22069507947458542746378915461099893780826507399505e80), + SC_(0.47e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.32477910194623631679103502403496035389576286494523e80), + SC_(0.47e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.37585584475093384547238256579815704060458771576572e80), + SC_(0.47e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.39945907081998585347317226399285809699766535905174e80), + SC_(0.47e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.13665112891682520480822852537431761728424096575653e81), + SC_(0.47e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.16370307847451197027992115292401569912145718345458e81), + SC_(0.47e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(-0.11813099865413477795537497884035409810811280657803e19), + SC_(0.47e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.21402842023494021891915106093184956999714155584467e24), + SC_(0.47e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(-0.12810128759977923559002610898053864419911073001189e26), + SC_(0.47e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(0.37120257551889816079538311739766697847463756349153e36), + SC_(0.47e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(-0.11135166927153545457405380250982248434055893169601e43), + SC_(0.47e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(-0.27794836921154174827998702922968736404916712058401e50), + SC_(0.47e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(-0.19544232559373213732173121212732051192931866132352e53), + SC_(0.47e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(-0.42995017699424363097392751332625656970905083859288e67), + SC_(0.47e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(-0.44454804789003913314223821544545455118368403060047e67), + SC_(0.47e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(-0.98443013852420029593727888070021134858754208879255e70), + SC_(0.47e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(-0.50961481400380441651127671683099065065972319586976e76), + SC_(0.47e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(-0.17933292114266592544897195050104507720745196779275e77), + SC_(0.47e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(-0.11293238937123159255713797695432033331944511181818e79), + SC_(0.47e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(-0.17237017960295976654690034089714988660837720691349e79), + SC_(0.47e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(-0.18765728526232169747171634782102449811174173995231e80), + SC_(0.47e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(-0.27653884835583379075071547248293892229438826686229e80), + SC_(0.47e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(-0.32019390868445758618136628663568557837215114414119e80), + SC_(0.47e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(-0.34037456519754288614125946686307202434894956276373e80), + SC_(0.47e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(-0.11693642962064115379404156842508579672636513953803e81), + SC_(0.47e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(-0.14017193684850157741222699877112443503550795244699e81), + SC_(0.47e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(-0.89466120609314228516210904715755615717329203175778e18), + SC_(0.47e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(-0.10016103276034210185411172456445547194477847117306e23), + SC_(0.47e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.36353300748736374321427974922199746818570636764504e25), + SC_(0.47e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.16720365315243105509699869903844787685554556531248e36), + SC_(0.47e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(-0.68422516950767118394926050722591138057549437739037e42), + SC_(0.47e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(-0.21146805708617736266736970708754314077973451679294e50), + SC_(0.47e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(-0.15542241494594643466145075613014091545983100772974e53), + SC_(0.47e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(-0.38760212325012234485031221998573317642866989132491e67), + SC_(0.47e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(-0.40079375598833640654553131365371098692984607177334e67), + SC_(0.47e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(-0.9023616275194773336163444625072266432828844732154e70), + SC_(0.47e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(-0.47757642895787219497682427840089985620840188500397e76), + SC_(0.47e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(-0.16835813632511749253277059606217007686539773673673e77), + SC_(0.47e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(-0.10660710289400912385121909959634463900991534677926e79), + SC_(0.47e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(-0.16280267564764199570569993469188186222215525315461e79), + SC_(0.47e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(-0.17775932911768948405404542624817036690606531716283e80), + SC_(0.47e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(-0.2620731623095434058735154130140302190467099810584e80), + SC_(0.47e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(-0.30349699664404411477129332288673750476486873534444e80), + SC_(0.47e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(-0.32264846541251356042153670699185440954442729813277e80), + SC_(0.47e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(-0.11100501958330418619670658354186774305311964307321e81), + SC_(0.47e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(-0.1330894097368999886421269994368707521731222457881e81), + SC_(0.47e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(-0.27548597107449270445767440062519313968233122571891e18), + SC_(0.47e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(-0.11922501994312060431922275030195191285047021350049e24), + SC_(0.47e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.19600669398331314172561587759323358311311082712521e25), + SC_(0.47e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.56181869236729241682017267193695077300069120305681e35), + SC_(0.47e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(-0.41443307911664164675878373604354777633662690332216e42), + SC_(0.47e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(-0.16050278287215786158628041890534613699375087100068e50), + SC_(0.47e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(-0.12340689712617057348336866689556016026299902868296e53), + SC_(0.47e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(-0.34933500982453274433379497630520009806163794721203e67), + SC_(0.47e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(-0.36125287985488119582808046247623049104517113093885e67), + SC_(0.47e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(-0.82698773051884716903905029433122674283757755424141e70), + SC_(0.47e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(-0.44750912026298081760502164194062567890563112909532e76), + SC_(0.47e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(-0.15804061480034114641190514223654173288875929552487e77), + SC_(0.47e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(-0.10062851997191212067516862702447404316950592810002e79), + SC_(0.47e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(-0.15375487132050210293189713942656106714176612004073e79), + SC_(0.47e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(-0.16837228630562693123376980832496433586113527563414e80), + SC_(0.47e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(-0.24834800889580593132580284640174709967635193695017e80), + SC_(0.47e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(-0.28765216737046393674419718297918045786386456718342e80), + SC_(0.47e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(-0.3058257902273412588918356492953428723244613608866e80), + SC_(0.47e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(-0.10536804541708571518614017532398260985049098506049e81), + SC_(0.47e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(-0.12635710215225658255091329235229878242259040197029e81), + SC_(0.47e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(0.26986992454976592770819924120614132761079638900312e18), + SC_(0.47e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(-0.13099792431495086435691233341154638229046822534438e24), + SC_(0.47e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(0.39646703024037366372607707147648825799206042685986e25), + SC_(0.47e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.38575218603635664817859794140334908872105878127025e34), + SC_(0.47e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(-0.24697091969682189564177002137256167694177836624665e42), + SC_(0.47e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(-0.12152094223473603258659295763119649728937658085167e50), + SC_(0.47e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(-0.97832674506333314549995528333745073115279533541454e52), + SC_(0.47e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(-0.3147642501974616257918022412031949172914637419987e67), + SC_(0.47e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(-0.32552863449814390010014892072963487255479135039077e67), + SC_(0.47e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(-0.75777434202701570054199426264901634167188683315598e70), + SC_(0.47e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(-0.4192942740628328771028678205102129472651245479925e76), + SC_(0.47e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(-0.14834185441761450972327542926146972314012769759308e77), + SC_(0.47e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(-0.94978051964204331332290309139990978572213579331455e78), + SC_(0.47e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(-0.14519915332676075051592690582647416087475905821838e79), + SC_(0.47e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(-0.15947036005378667586869467885967568136324263441618e80), + SC_(0.47e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(-0.23532630583246167554642420769582489949647465273024e80), + SC_(0.47e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(-0.27261688603000689917456761681263189029684023731186e80), + SC_(0.47e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(-0.28986150071124884976793182103900955632612435508163e80), + SC_(0.47e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(-0.100011210187057890542172305672821416265467526888e81), + SC_(0.47e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(-0.1199580741414231585465192869757233534716507740408e81), + SC_(0.48e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.28358735383550705677269332681562566538357128062088e19), + SC_(0.48e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(-0.31411726418386757337504314588159522719030226665883e26), + SC_(0.48e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.18938555662734926466542719315959788183570526737809e28), + SC_(0.48e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(0.59971974943566306634244706892336696018873678757955e39), + SC_(0.48e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(0.36974665682359345690923851305669366496655506662195e45), + SC_(0.48e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(0.21492805006741742848975097253679221778904854909598e52), + SC_(0.48e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(0.11230172405985135735776011524109114066208566147381e55), + SC_(0.48e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(0.13487952499537804614110090972274150998760152393817e69), + SC_(0.48e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(0.139439663820356498750781525959079729020770561592e69), + SC_(0.48e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(0.30410239602455926578629287029479170014375483281297e72), + SC_(0.48e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(0.16363653120893027974181361894535807965019048585179e78), + SC_(0.48e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(0.58002570814952860995175631118947153556025307525238e78), + SC_(0.48e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(0.37549727252315700341349823032936065536886812239125e80), + SC_(0.48e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(0.57492322694653018594714296993495232766200247807703e80), + SC_(0.48e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(0.63772190475889197309820972735125572701232776805052e81), + SC_(0.48e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(0.94277836675861962051683414990434629292960464735996e81), + SC_(0.48e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(0.10929391497850682398499813168869711318202391165403e82), + SC_(0.48e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(0.11624160220508684959350126567810510282171513664143e82), + SC_(0.48e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(0.4035777848910840747448134491445414831880774108573e82), + SC_(0.48e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(0.48453563178995659405568145006185781997317875117746e82), + SC_(0.48e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(0.15140407730268847151539658726234416469708853673629e20), + SC_(0.48e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.22300338615094545596898556018381222293737602140821e25), + SC_(0.48e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.16487035147743353283757601408540743213442755742657e27), + SC_(0.48e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(0.26636695999632937039112332712648339156580928177024e39), + SC_(0.48e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(0.24710792919025663341092759019942266507202901286161e45), + SC_(0.48e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(0.16622671316280066907974971004782038100936693596303e52), + SC_(0.48e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(0.90196433143408597263371705245331261032121611697379e54), + SC_(0.48e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(0.12164988796063420563542983296194264057122073564454e69), + SC_(0.48e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(0.12577233600939697370378829103561375421846373814764e69), + SC_(0.48e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(0.27874941589655819857280886448319809588506805262647e72), + SC_(0.48e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(0.15329203821108665738319260426738780810841199275891e78), + SC_(0.48e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(0.54431707862108852700597859352471989184316311816592e78), + SC_(0.48e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(0.3543115503380358661469997090804308844515677432094e80), + SC_(0.48e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(0.54277347293772000511221897882315672370202141538931e80), + SC_(0.48e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(0.6038100825754840053236594139194453585735482767587e81), + SC_(0.48e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(0.8930526971025875863890077850800741533002786457905e81), + SC_(0.48e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(0.1035471237108883765267186943510101769042780227208e82), + SC_(0.48e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(0.11013736228601661103200624297736411044907952315904e82), + SC_(0.48e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(0.38292874649344074949038220910220488524382874686077e82), + SC_(0.48e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(0.45983892235873874235502068082078728557433577209134e82), + SC_(0.48e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.10149305487959725178666530778928419221775841991847e20), + SC_(0.48e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(0.12250581715920905952009839171250922953038870974382e26), + SC_(0.48e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(-0.66089809616469971823788178277786649052507963821696e27), + SC_(0.48e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.31690208612833099803702370222636697802113260158637e38), + SC_(0.48e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(0.1081219879403560651724952190780263936916895833792e45), + SC_(0.48e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(0.9884229065184398991813841134278089344475419817553e51), + SC_(0.48e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(0.57949175293738296578325383502367150636969103817252e54), + SC_(0.48e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(0.98882036060226524352301188616565040267698119444162e68), + SC_(0.48e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(0.10224864393679922775217922964147341088022903532416e69), + SC_(0.48e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(0.23408595268139269490121475091846006707390452800907e72), + SC_(0.48e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(0.13448502502930735988712497769999606825038935331803e78), + SC_(0.48e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(0.47922991885638500351811571040876847009672541689829e78), + SC_(0.48e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(0.31538777175147893446588546582363980296436578325635e80), + SC_(0.48e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(0.48366031893463359057729818890369060959763064372293e80), + SC_(0.48e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(0.54119332676804817339428870008539027948767028403842e81), + SC_(0.48e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(0.80117527596149111623191044437059786110795225073783e81), + SC_(0.48e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(0.92926204938390180746843671583296203500438539619041e81), + SC_(0.48e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(0.98854652887723442316130080000282467004290987522892e81), + SC_(0.48e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(0.34468324134792752346886723806587548273430808124576e82), + SC_(0.48e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(0.41408275768243453994558468167404886818302633691608e82), + SC_(0.48e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(0.16597727196612779081570985096724186865347513181316e19), + SC_(0.48e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.1128438540169180862643954182112710199001368752496e25), + SC_(0.48e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(0.56763123156302316727658482659498035809819718669032e26), + SC_(0.48e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(-0.24191302746236976150925219649079593431714110447074e37), + SC_(0.48e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(0.74093598275293935451100409535462274475817473802054e43), + SC_(0.48e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(0.19756127750343396041467515917820356766416871761768e51), + SC_(0.48e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(0.14857396468155736619207355242702052965761321034194e54), + SC_(0.48e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(0.52782038932246507617372576335724694274236047221278e68), + SC_(0.48e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(0.54604792268184783688285045280818719026417079721788e68), + SC_(0.48e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(0.13804494049961421793103705494136937889708116032135e72), + SC_(0.48e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(0.90600960962193239211982698981138629983108091624061e77), + SC_(0.48e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(0.3263408322579853237853153405867786223689729290169e78), + SC_(0.48e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(0.22204294327710797611559558299744817470822226896886e80), + SC_(0.48e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(0.34161295102097822610902671634635151782488810782443e80), + SC_(0.48e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(0.38905903425420462244805403249704394645580203132721e81), + SC_(0.48e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(0.57756079142518855961689915482445734132330301851694e81), + SC_(0.48e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(0.67059753988085646834969100443151272256593229588289e81), + SC_(0.48e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(0.71368993323494377826275985739688913671837754471799e81), + SC_(0.48e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(0.25100836179969527945312514046506044094438105630308e82), + SC_(0.48e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(0.30192424408059560069989136129045064472264782312031e82), + SC_(0.48e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.24295355542453997455088095231618566820565255886206e18), + SC_(0.48e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(0.31186941589283269635905625476109541678859453562036e24), + SC_(0.48e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(-0.68196793727193816642156505861216583004271979577098e25), + SC_(0.48e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(-0.1612747767714563500184577448380993646135282722084e36), + SC_(0.48e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(0.16660832751313705268420772354045591103459787693494e43), + SC_(0.48e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(0.85634966596605094977181188946254508052284604397935e50), + SC_(0.48e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(0.7372449745967162990561233434934863030854907377759e53), + SC_(0.48e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(0.38428251563444070348551872354556973008198369002676e68), + SC_(0.48e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(0.39764899368763662838084739553276377398649024015765e68), + SC_(0.48e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(0.10575274912189266849189880719105075019133754711026e72), + SC_(0.48e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(0.74266142541434778815757076751454493431108051162934e77), + SC_(0.48e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(0.26896494892805084534313152354263703680683325376039e78), + SC_(0.48e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(0.18611704309408815944305474346684789475411519072609e80), + SC_(0.48e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(0.28680904476810422453183371554359045132811636435558e80), + SC_(0.48e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(0.32957438859388121416461677098590323288650748282779e81), + SC_(0.48e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(0.48994352340236260508153466649999730726333518316573e81), + SC_(0.48e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(0.56916687439696826237924177921340648525155058394227e81), + SC_(0.48e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(0.605874449982844372152174236614709835853048538707e81), + SC_(0.48e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(0.21402265660322861366493469926691941290774697319345e82), + SC_(0.48e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(0.25759883912134666904888307980053061619353597090161e82), + SC_(0.48e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(-0.65170765066860231061122809484137048896763947289572e18), + SC_(0.48e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(0.30185331261679848617364508230464986959411668850305e24), + SC_(0.48e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(-0.1045500944759301909635844807834163298228426163416e26), + SC_(0.48e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(0.59288763809747050785409542003485122420172931040781e34), + SC_(0.48e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(0.98185810562369934289281672817864772977048439195902e42), + SC_(0.48e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(0.64488160887987358710444218237500193974311152718641e50), + SC_(0.48e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(0.58182255965076986439467258736334538762565973004615e53), + SC_(0.48e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(0.34552230330942846900048750154699641243911670089427e68), + SC_(0.48e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(0.35756961808880298772629426416739267529350563298032e68), + SC_(0.48e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(0.96729132846697895155735362565978483758508702378104e71), + SC_(0.48e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(0.69490378251856056865988833967445494869024032312895e77), + SC_(0.48e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(0.25212913529553909608985446393642002912029348008672e78), + SC_(0.48e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(0.17545633280468724705793283350721343085312365604817e80), + SC_(0.48e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(0.27052877720334002496126372207440226510590083904012e80), + SC_(0.48e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(0.31179845568211226575921222836108619619590095111151e81), + SC_(0.48e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(0.46373620717140826449418312519859428535866418505989e81), + SC_(0.48e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(0.53881717473256385090211244692473273477506371040782e81), + SC_(0.48e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(0.57360960344159301611002056591552439489860580889372e81), + SC_(0.48e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(0.20292215464489819504526404091273263860243500888612e82), + SC_(0.48e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(0.2442898981476566701846703798568435409762237463228e82), + SC_(0.48e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(-0.92719362174309501506890249546656362864997069861463e18), + SC_(0.48e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.18262829267367788185442233200269795674364647500256e24), + SC_(0.48e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(-0.8494942507759887679102289302409297151153153362908e25), + SC_(0.48e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(0.62110745617703946760558221394043589542086413409759e35), + SC_(0.48e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(0.56742502650705769613403299213509995343385748863685e42), + SC_(0.48e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(0.48437882600771572551816176346965580274936065618573e50), + SC_(0.48e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(0.45841566252459929091130392046778522736266070136319e53), + SC_(0.48e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(0.31058880232697519456710800391647640263295290617307e68), + SC_(0.48e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(0.32144433010331486814348621791976962618898851988643e68), + SC_(0.48e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(0.8845925554150942346534485962266621633013292683569e71), + SC_(0.48e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(0.65015287049226248689938617548039238079967721021941e77), + SC_(0.48e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(0.23632507381550498144866394971276585583141755053423e78), + SC_(0.48e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(0.16539348080749603499041597080476602653617306323816e80), + SC_(0.48e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(0.25515329007128981466807400813174615839172422703605e80), + SC_(0.48e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(0.2949612270515495726358352475285897626097874235481e81), + SC_(0.48e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(0.43890140628182767136160284055841957539102899136487e81), + SC_(0.48e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(0.51005195799551745722769272862681468898867725368948e81), + SC_(0.48e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(0.54302702441885889022083700098599010766615967280506e81), + SC_(0.48e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(0.19238535010318962352665002338033437761738591038007e82), + SC_(0.48e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(0.23165418793243101192957905062161366273396470612577e82), + SC_(0.48e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.65732369719332908736070325426042230103917430961151e18), + SC_(0.48e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.51630368358727017497509998591151574453178249658184e23), + SC_(0.48e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.45302722053561510418415185876444145712325490943094e25), + SC_(0.48e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(0.65968267478067513242344200808077080429297001222462e35), + SC_(0.48e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(0.32045410681023580049226297076253827649207912239021e42), + SC_(0.48e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(0.36285788377297969293156880583845930545998407533405e50), + SC_(0.48e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(0.36058298801826597636130839213404015424738116782174e53), + SC_(0.48e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(0.2791123773072290319879277797961569109038065319732e68), + SC_(0.48e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(0.28889146665350047813347132584680613893350938484736e68), + SC_(0.48e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(0.8088151212123926645992491699617605291341405850413e71), + SC_(0.48e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(0.60822344308597919918909939342937108607316475542016e77), + SC_(0.48e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(0.22149088837374353047633640678661888351740478077492e78), + SC_(0.48e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(0.15589567561107560185718693989076692867895170530502e80), + SC_(0.48e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(0.24063337473861373961648131754909874230424832121421e80), + SC_(0.48e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(0.27901419104617090504896577964262219447346316010648e81), + SC_(0.48e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(0.41536877569858150380696041978883708544138152609185e81), + SC_(0.48e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(0.48279026939251676731023596694555149995899322995829e81), + SC_(0.48e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(0.5140408743477340052440438188820891520335472372969e81), + SC_(0.48e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(0.18238422908448383447243279281305223599083915769127e82), + SC_(0.48e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(0.21965838051828869607492712192404132738679962872169e82), + SC_(0.49e2), SC_(0.4e1), SC_(0.9754039764404296875e2), SC_(-0.33206177306860901034098418198597629379140610858059e20), + SC_(0.49e2), SC_(0.4e1), SC_(0.12698681640625e3), SC_(-0.28196665298434210086077878529005387276221823960713e26), + SC_(0.49e2), SC_(0.4e1), SC_(0.1354770050048828125e3), SC_(0.1592616399596531819269368502130603829210905823746e28), + SC_(0.49e2), SC_(0.4e1), SC_(0.1883819732666015625e3), SC_(-0.37537932279682254631376130221199241034724019227793e39), + SC_(0.49e2), SC_(0.4e1), SC_(0.2210340576171875e3), SC_(-0.71474888666638000785512139053701915411431688780992e45), + SC_(0.49e2), SC_(0.4e1), SC_(0.27849822998046875e3), SC_(-0.71229915791301936694098512201872127350700490137862e52), + SC_(0.49e2), SC_(0.4e1), SC_(0.30816705322265625e3), SC_(-0.44578729873115166164577362501394188799965110092782e55), + SC_(0.49e2), SC_(0.4e1), SC_(0.5468814697265625e3), SC_(-0.12118256060250665066422834145579285785999339602827e70), + SC_(0.49e2), SC_(0.4e1), SC_(0.5472205810546875e3), SC_(-0.12537736450854839510520658499000070776107799007353e70), + SC_(0.49e2), SC_(0.4e1), SC_(0.6323592529296875e3), SC_(-0.32684152122782175169107512080326284810879619460619e73), + SC_(0.49e2), SC_(0.4e1), SC_(0.81472369384765625e3), SC_(-0.23717942745856996833634836183139108617311962055669e79), + SC_(0.49e2), SC_(0.4e1), SC_(0.835008544921875e3), SC_(-0.86483275359917540644232605309150757023817316114033e79), + SC_(0.49e2), SC_(0.4e1), SC_(0.90579193115234375e3), SC_(-0.61434936319702661022539416657199509660223531462324e81), + SC_(0.49e2), SC_(0.4e1), SC_(0.9133758544921875e3), SC_(-0.94956174206533901497672012903515610767471871513573e81), + SC_(0.49e2), SC_(0.4e1), SC_(0.9575068359375e3), SC_(-0.11109245320852877885120232969005657495122958717448e83), + SC_(0.49e2), SC_(0.4e1), SC_(0.96488848876953125e3), SC_(-0.16565898242054343582618214187951581679447302846679e83), + SC_(0.49e2), SC_(0.4e1), SC_(0.9676949462890625e3), SC_(-0.19267234862027382839086629560703055871842322512147e83), + SC_(0.49e2), SC_(0.4e1), SC_(0.9688677978515625e3), SC_(-0.20519946682114906608003313954026271917045934968001e83), + SC_(0.49e2), SC_(0.4e1), SC_(0.99288128662109375e3), SC_(-0.73227176306812783081581609204908054790199912737931e83), + SC_(0.49e2), SC_(0.4e1), SC_(0.9964613037109375e3), SC_(-0.8827169460933748469859793959028017528197667629454e83), + SC_(0.49e2), SC_(0.5e1), SC_(0.9754039764404296875e2), SC_(-0.1806576957659205388255875947236321290943175718443e20), + SC_(0.49e2), SC_(0.5e1), SC_(0.12698681640625e3), SC_(-0.30426699159943664645767734130843509505595584174795e26), + SC_(0.49e2), SC_(0.5e1), SC_(0.1354770050048828125e3), SC_(0.17574867510739653521069445162160112613453333811725e28), + SC_(0.49e2), SC_(0.5e1), SC_(0.1883819732666015625e3), SC_(-0.10901236280049317592263797508550901878143091050769e39), + SC_(0.49e2), SC_(0.5e1), SC_(0.2210340576171875e3), SC_(-0.46764095747612337444419380033759648904228787494831e45), + SC_(0.49e2), SC_(0.5e1), SC_(0.27849822998046875e3), SC_(-0.54607244475021869786123541197090089249763796541558e52), + SC_(0.49e2), SC_(0.5e1), SC_(0.30816705322265625e3), SC_(-0.35559086558774306438240191976861062696752948923044e55), + SC_(0.49e2), SC_(0.5e1), SC_(0.5468814697265625e3), SC_(-0.10901757180644323010068535815959859380287132246382e70), + SC_(0.49e2), SC_(0.5e1), SC_(0.5472205810546875e3), SC_(-0.11280013090760869773482775588643933233923161625877e70), + SC_(0.49e2), SC_(0.5e1), SC_(0.6323592529296875e3), SC_(-0.29896657963816593183379423435494303852028938934355e73), + SC_(0.49e2), SC_(0.5e1), SC_(0.81472369384765625e3), SC_(-0.22185022363746130259802910140465230536227842128079e79), + SC_(0.49e2), SC_(0.5e1), SC_(0.835008544921875e3), SC_(-0.81040104573706655374172819373903558105385684932374e79), + SC_(0.49e2), SC_(0.5e1), SC_(0.90579193115234375e3), SC_(-0.5789182081632230236106941956639520081570785403023e81), + SC_(0.49e2), SC_(0.5e1), SC_(0.9133758544921875e3), SC_(-0.8952843947715670144654982311528404353045165735968e81), + SC_(0.49e2), SC_(0.5e1), SC_(0.9575068359375e3), SC_(-0.10505435238277393879796573555086212136549410440689e83), + SC_(0.49e2), SC_(0.5e1), SC_(0.96488848876953125e3), SC_(-0.15672845544951755996229206402871507526147024200888e83), + SC_(0.49e2), SC_(0.5e1), SC_(0.9676949462890625e3), SC_(-0.18231763624918499073819442617192954102799542284939e83), + SC_(0.49e2), SC_(0.5e1), SC_(0.9688677978515625e3), SC_(-0.19418573059254740497683251524252630812555139736411e83), + SC_(0.49e2), SC_(0.5e1), SC_(0.99288128662109375e3), SC_(-0.69397888841878375586677787113886005937761625269323e83), + SC_(0.49e2), SC_(0.5e1), SC_(0.9964613037109375e3), SC_(-0.83673305385750097275047732782072302426233318573626e83), + SC_(0.49e2), SC_(0.7e1), SC_(0.9754039764404296875e2), SC_(0.9540966553609089780924256830917949985110689839757e19), + SC_(0.49e2), SC_(0.7e1), SC_(0.12698681640625e3), SC_(-0.73837653786608238385200036892761464835187841373059e25), + SC_(0.49e2), SC_(0.7e1), SC_(0.1354770050048828125e3), SC_(0.52664800837622500334389306290818014369569002330043e27), + SC_(0.49e2), SC_(0.7e1), SC_(0.1883819732666015625e3), SC_(0.27387554894270919322792126389178289051542584176489e38), + SC_(0.49e2), SC_(0.7e1), SC_(0.2210340576171875e3), SC_(-0.19547983690852244363735927408838035995048749439119e45), + SC_(0.49e2), SC_(0.7e1), SC_(0.27849822998046875e3), SC_(-0.3189212872662300839689254440758504118429342094904e52), + SC_(0.49e2), SC_(0.7e1), SC_(0.30816705322265625e3), SC_(-0.22529599476815874838053642995371951219025497089071e55), + SC_(0.49e2), SC_(0.7e1), SC_(0.5468814697265625e3), SC_(-0.88160317783513066228400969921463950668451679312915e69), + SC_(0.49e2), SC_(0.7e1), SC_(0.5472205810546875e3), SC_(-0.91233629806914416357494008857599818372454724161784e69), + SC_(0.49e2), SC_(0.7e1), SC_(0.6323592529296875e3), SC_(-0.25001141543272072232834825944285168387476328853162e73), + SC_(0.49e2), SC_(0.7e1), SC_(0.81472369384765625e3), SC_(-0.1940429415226012465462652357125761141800206788919e79), + SC_(0.49e2), SC_(0.7e1), SC_(0.835008544921875e3), SC_(-0.71140197358250043666692017006337721962305419540361e79), + SC_(0.49e2), SC_(0.7e1), SC_(0.90579193115234375e3), SC_(-0.51394981704428462284408793640775540264974115379628e81), + SC_(0.49e2), SC_(0.7e1), SC_(0.9133758544921875e3), SC_(-0.79567996866448612027156968893024015193077706862608e81), + SC_(0.49e2), SC_(0.7e1), SC_(0.9575068359375e3), SC_(-0.93925780334141741448506784128428988752055950534688e82), + SC_(0.49e2), SC_(0.7e1), SC_(0.96488848876953125e3), SC_(-0.14025775342430385358172225488952951794398488374678e83), + SC_(0.49e2), SC_(0.7e1), SC_(0.9676949462890625e3), SC_(-0.16321539684532505702958890499479028964977348220227e83), + SC_(0.49e2), SC_(0.7e1), SC_(0.9688677978515625e3), SC_(-0.17386556763109194719289301467918033721023976147537e83), + SC_(0.49e2), SC_(0.7e1), SC_(0.99288128662109375e3), SC_(-0.6231791505997373453068530187395236100949189310302e83), + SC_(0.49e2), SC_(0.7e1), SC_(0.9964613037109375e3), SC_(-0.75168730851786642244750592451710506720345517904775e83), + SC_(0.49e2), SC_(0.13e2), SC_(0.9754039764404296875e2), SC_(-0.22157149482634265165652967518786429863749635685014e19), + SC_(0.49e2), SC_(0.13e2), SC_(0.12698681640625e3), SC_(-0.37016552044438285038013963527040899364809626611224e24), + SC_(0.49e2), SC_(0.13e2), SC_(0.1354770050048828125e3), SC_(-0.82844535979521606557661572890691104503832959473779e25), + SC_(0.49e2), SC_(0.13e2), SC_(0.1883819732666015625e3), SC_(0.16937690276952177649994161649173282592330859563473e37), + SC_(0.49e2), SC_(0.13e2), SC_(0.2210340576171875e3), SC_(-0.1123319299398139847252326381312609617695809610224e44), + SC_(0.49e2), SC_(0.13e2), SC_(0.27849822998046875e3), SC_(-0.60187182694954086721444463173366342578016936417654e51), + SC_(0.49e2), SC_(0.13e2), SC_(0.30816705322265625e3), SC_(-0.55291906616527193443616911285859673919321234280903e54), + SC_(0.49e2), SC_(0.13e2), SC_(0.5468814697265625e3), SC_(-0.46330766570433160351012234202895592132557379077432e69), + SC_(0.49e2), SC_(0.13e2), SC_(0.5472205810546875e3), SC_(-0.479691246084109583779748311318364602958253393456e69), + SC_(0.49e2), SC_(0.13e2), SC_(0.6323592529296875e3), SC_(-0.14557179112057066391551669126086976311368495942244e73), + SC_(0.49e2), SC_(0.13e2), SC_(0.81472369384765625e3), SC_(-0.1295329418484016324758981437269406217454343072264e79), + SC_(0.49e2), SC_(0.13e2), SC_(0.835008544921875e3), SC_(-0.480160202630671811974690597745726960399950703036e79), + SC_(0.49e2), SC_(0.13e2), SC_(0.90579193115234375e3), SC_(-0.35894167969179998441359002403031274490177610091877e81), + SC_(0.49e2), SC_(0.13e2), SC_(0.9133758544921875e3), SC_(-0.55754327828735213847507517998059581944727327203439e81), + SC_(0.49e2), SC_(0.13e2), SC_(0.9575068359375e3), SC_(-0.67017132883446003779409784631118453849390720368906e82), + SC_(0.49e2), SC_(0.13e2), SC_(0.96488848876953125e3), SC_(-0.10036100400655956103873022404845651255543315747547e83), + SC_(0.49e2), SC_(0.13e2), SC_(0.9676949462890625e3), SC_(-0.11691334699932815101415662742725221700006049862397e83), + SC_(0.49e2), SC_(0.13e2), SC_(0.9688677978515625e3), SC_(-0.12459767366822916659583438902633170085293824041689e83), + SC_(0.49e2), SC_(0.13e2), SC_(0.99288128662109375e3), SC_(-0.4505653337387251708038852993893455212530397241114e83), + SC_(0.49e2), SC_(0.13e2), SC_(0.9964613037109375e3), SC_(-0.54417463316516236218333535495452889567513740674852e83), + SC_(0.49e2), SC_(0.16e2), SC_(0.9754039764404296875e2), SC_(0.16195878468668492500334350503693462701305694020104e19), + SC_(0.49e2), SC_(0.16e2), SC_(0.12698681640625e3), SC_(-0.36856896240517654816422327682648043937913174107659e24), + SC_(0.49e2), SC_(0.16e2), SC_(0.1354770050048828125e3), SC_(0.19859881796548912831158305154291015275078560456686e26), + SC_(0.49e2), SC_(0.16e2), SC_(0.1883819732666015625e3), SC_(-0.23672967187849847069440040765217249660610327095681e36), + SC_(0.49e2), SC_(0.16e2), SC_(0.2210340576171875e3), SC_(-0.22189524123835152332188839893297287905159259126508e43), + SC_(0.49e2), SC_(0.16e2), SC_(0.27849822998046875e3), SC_(-0.25292991496369065504843912064403299970719686840765e51), + SC_(0.49e2), SC_(0.16e2), SC_(0.30816705322265625e3), SC_(-0.26811759256582515949042773559121815694960244836161e54), + SC_(0.49e2), SC_(0.16e2), SC_(0.5468814697265625e3), SC_(-0.33465588069577286826348055416299150706090746022153e69), + SC_(0.49e2), SC_(0.16e2), SC_(0.5472205810546875e3), SC_(-0.34657606038441038404611214060469423120773248842067e69), + SC_(0.49e2), SC_(0.16e2), SC_(0.6323592529296875e3), SC_(-0.11080333365418643651448217207622525665458345454771e73), + SC_(0.49e2), SC_(0.16e2), SC_(0.81472369384765625e3), SC_(-0.10569011916536682361490220330752518535836583233917e79), + SC_(0.49e2), SC_(0.16e2), SC_(0.835008544921875e3), SC_(-0.39397400145962316729456535567553831354513655614438e79), + SC_(0.49e2), SC_(0.16e2), SC_(0.90579193115234375e3), SC_(-0.29965167902642908714407053999885142430037329082242e81), + SC_(0.49e2), SC_(0.16e2), SC_(0.9133758544921875e3), SC_(-0.46622829618959292833994958386574373327102832749242e81), + SC_(0.49e2), SC_(0.16e2), SC_(0.9575068359375e3), SC_(-0.56556493365668541833278026919693598945432955555535e82), + SC_(0.49e2), SC_(0.16e2), SC_(0.96488848876953125e3), SC_(-0.84817836551873634898585602690209361799188978565576e82), + SC_(0.49e2), SC_(0.16e2), SC_(0.9676949462890625e3), SC_(-0.98860165331969355644235260839852564793962728077414e82), + SC_(0.49e2), SC_(0.16e2), SC_(0.9688677978515625e3), SC_(-0.10538163960491416069998803320908176681982874203044e83), + SC_(0.49e2), SC_(0.16e2), SC_(0.99288128662109375e3), SC_(-0.38278803532355350068138688168884754502326101704833e83), + SC_(0.49e2), SC_(0.16e2), SC_(0.9964613037109375e3), SC_(-0.46261531805865013866332685940823444170448300629497e83), + SC_(0.49e2), SC_(0.17e2), SC_(0.9754039764404296875e2), SC_(0.9678801961982469394222069555279757811629299291147e18), + SC_(0.49e2), SC_(0.17e2), SC_(0.12698681640625e3), SC_(-0.66715649788378061990578194521830569785015052573541e23), + SC_(0.49e2), SC_(0.17e2), SC_(0.1354770050048828125e3), SC_(0.94048723489558937347998570759493822927942988225255e25), + SC_(0.49e2), SC_(0.17e2), SC_(0.1883819732666015625e3), SC_(-0.23080079549752376561585945345182398436408597785273e36), + SC_(0.49e2), SC_(0.17e2), SC_(0.2210340576171875e3), SC_(-0.12370943067598158903260672611510810607454415206918e43), + SC_(0.49e2), SC_(0.17e2), SC_(0.27849822998046875e3), SC_(-0.188441754075703296337994902406532805732885715689e51), + SC_(0.49e2), SC_(0.17e2), SC_(0.30816705322265625e3), SC_(-0.209935336600748173050960476854883618187036475357e54), + SC_(0.49e2), SC_(0.17e2), SC_(0.5468814697265625e3), SC_(-0.3001036503648300213634318040082918658169957901321e69), + SC_(0.49e2), SC_(0.17e2), SC_(0.5472205810546875e3), SC_(-0.31081909857553008527348271418795496367838192512264e69), + SC_(0.49e2), SC_(0.17e2), SC_(0.6323592529296875e3), SC_(-0.1011304203695166469989086358196274082787325843099e73), + SC_(0.49e2), SC_(0.17e2), SC_(0.81472369384765625e3), SC_(-0.9874108134018121792830331991078063587146342910788e78), + SC_(0.49e2), SC_(0.17e2), SC_(0.835008544921875e3), SC_(-0.36876108793006925768557990928189631063310720813571e79), + SC_(0.49e2), SC_(0.17e2), SC_(0.90579193115234375e3), SC_(-0.2821060457459603624382772566481300812150609252176e81), + SC_(0.49e2), SC_(0.17e2), SC_(0.9133758544921875e3), SC_(-0.43917541846925892584382321165830350676043824358841e81), + SC_(0.49e2), SC_(0.17e2), SC_(0.9575068359375e3), SC_(-0.5343850880884741917568590463608273698347394604442e82), + SC_(0.49e2), SC_(0.17e2), SC_(0.96488848876953125e3), SC_(-0.80180474480159552253643771438223418945602336714977e82), + SC_(0.49e2), SC_(0.17e2), SC_(0.9676949462890625e3), SC_(-0.93471993584643717135214136370605237446212090973335e82), + SC_(0.49e2), SC_(0.17e2), SC_(0.9688677978515625e3), SC_(-0.99645543570498230538887827549926522870842683941502e82), + SC_(0.49e2), SC_(0.17e2), SC_(0.99288128662109375e3), SC_(-0.36249581985906368117686047759757428116301751615972e83), + SC_(0.49e2), SC_(0.17e2), SC_(0.9964613037109375e3), SC_(-0.43818632824388447164485982142255008760686063166269e83), + SC_(0.49e2), SC_(0.18e2), SC_(0.9754039764404296875e2), SC_(0.40686574455151924353304460061412152512959230500072e17), + SC_(0.49e2), SC_(0.18e2), SC_(0.12698681640625e3), SC_(0.11591264288529981986384413748086738695863142242902e24), + SC_(0.49e2), SC_(0.18e2), SC_(0.1354770050048828125e3), SC_(0.9099298411960060556975677735400851416411454596175e24), + SC_(0.49e2), SC_(0.18e2), SC_(0.1883819732666015625e3), SC_(-0.16869004987981981885530123205778039482199956444297e36), + SC_(0.49e2), SC_(0.18e2), SC_(0.2210340576171875e3), SC_(-0.66966928025275819419203426901598110731158403205496e42), + SC_(0.49e2), SC_(0.18e2), SC_(0.27849822998046875e3), SC_(-0.14000387147493172378617872605956722545794965007043e51), + SC_(0.49e2), SC_(0.18e2), SC_(0.30816705322265625e3), SC_(-0.16409377034828824395983008480810509545077040522068e54), + SC_(0.49e2), SC_(0.18e2), SC_(0.5468814697265625e3), SC_(-0.26904477013213250190672100361664422555370049951479e69), + SC_(0.49e2), SC_(0.18e2), SC_(0.5472205810546875e3), SC_(-0.278674665565198598459134092395978001059483073134e69), + SC_(0.49e2), SC_(0.18e2), SC_(0.6323592529296875e3), SC_(-0.92284494815365704652374149857360786645719291626335e72), + SC_(0.49e2), SC_(0.18e2), SC_(0.81472369384765625e3), SC_(-0.92239552635258593059309458155976712063466657005686e78), + SC_(0.49e2), SC_(0.18e2), SC_(0.835008544921875e3), SC_(-0.34512858054851875954071351431061972504996545308229e79), + SC_(0.49e2), SC_(0.18e2), SC_(0.90579193115234375e3), SC_(-0.26556669766521075893923565956765347856144361889378e81), + SC_(0.49e2), SC_(0.18e2), SC_(0.9133758544921875e3), SC_(-0.4136600894621299443770158108451288909212658208848e81), + SC_(0.49e2), SC_(0.18e2), SC_(0.9575068359375e3), SC_(-0.50488896538331923449327552160796839357376071808939e82), + SC_(0.49e2), SC_(0.18e2), SC_(0.96488848876953125e3), SC_(-0.75791460417341275540027743032639223191692046801329e82), + SC_(0.49e2), SC_(0.18e2), SC_(0.9676949462890625e3), SC_(-0.88371474004688542562937209084337090556325318436441e82), + SC_(0.49e2), SC_(0.18e2), SC_(0.9688677978515625e3), SC_(-0.94215273326309641636679457540066621794181087213452e82), + SC_(0.49e2), SC_(0.18e2), SC_(0.99288128662109375e3), SC_(-0.34325728484874471882419547525954084340127892512171e83), + SC_(0.49e2), SC_(0.18e2), SC_(0.9964613037109375e3), SC_(-0.41502090945064137045190191636038872133346416105012e83), + SC_(0.49e2), SC_(0.19e2), SC_(0.9754039764404296875e2), SC_(-0.61663712273817716300739879419901014852621507911144e18), + SC_(0.49e2), SC_(0.19e2), SC_(0.12698681640625e3), SC_(0.1675430112440268373613541360720189614118096720872e24), + SC_(0.49e2), SC_(0.19e2), SC_(0.1354770050048828125e3), SC_(-0.36203423641601449861439508141043294295914036346919e25), + SC_(0.49e2), SC_(0.19e2), SC_(0.1883819732666015625e3), SC_(-0.10272178240175230561295703124970331439270256322051e36), + SC_(0.49e2), SC_(0.19e2), SC_(0.2210340576171875e3), SC_(-0.34921517344252239369977129825344283081950490966475e42), + SC_(0.49e2), SC_(0.19e2), SC_(0.27849822998046875e3), SC_(-0.10371808309763375449302184547572129491195124253703e51), + SC_(0.49e2), SC_(0.19e2), SC_(0.30816705322265625e3), SC_(-0.12803547154646164632369924559470108002603228843851e54), + SC_(0.49e2), SC_(0.19e2), SC_(0.5468814697265625e3), SC_(-0.24113353240140959870792822563702853446331984631747e69), + SC_(0.49e2), SC_(0.19e2), SC_(0.5472205810546875e3), SC_(-0.24978551889984855064578695981129738716613213464926e69), + SC_(0.49e2), SC_(0.19e2), SC_(0.6323592529296875e3), SC_(-0.84196343603241778006381658157743181354377885775922e72), + SC_(0.49e2), SC_(0.19e2), SC_(0.81472369384765625e3), SC_(-0.86157318204398801067418464221683001202735009451485e78), + SC_(0.49e2), SC_(0.19e2), SC_(0.835008544921875e3), SC_(-0.3229794917111444064930798736319578366982249750048e79), + SC_(0.49e2), SC_(0.19e2), SC_(0.90579193115234375e3), SC_(-0.24997713010410319875351696557857678569354844836328e81), + SC_(0.49e2), SC_(0.19e2), SC_(0.9133758544921875e3), SC_(-0.38959675198826857041536767909021901669084098876338e81), + SC_(0.49e2), SC_(0.19e2), SC_(0.9575068359375e3), SC_(-0.47698754627870214398837894364370617412641440207875e82), + SC_(0.49e2), SC_(0.19e2), SC_(0.96488848876953125e3), SC_(-0.7163777266035546050195813883475085233727823154041e82), + SC_(0.49e2), SC_(0.19e2), SC_(0.9676949462890625e3), SC_(-0.83543571310763374889834849414881575556735386136858e82), + SC_(0.49e2), SC_(0.19e2), SC_(0.9688677978515625e3), SC_(-0.89074864582832301584239019351245730273845614840483e82), + SC_(0.49e2), SC_(0.19e2), SC_(0.99288128662109375e3), SC_(-0.32501886194029633537695219597823561980219500935259e83), + SC_(0.49e2), SC_(0.19e2), SC_(0.9964613037109375e3), SC_(-0.39305507139881250084440920416798458859478419817795e83) + }; +#undef SC_ + diff --git a/test/legendre_p.ipp b/test/legendre_p.ipp new file mode 100644 index 000000000..0a21b9279 --- /dev/null +++ b/test/legendre_p.ipp @@ -0,0 +1,150 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 140> legendre_p = { + SC_(3), SC_(-0.804919183254241943359375), SC_(-0.09637879251279735399302410605920296560178428535437), SC_(-0.84585603807674271376114723023136351467791030262194), + SC_(3), SC_(-0.74602639675140380859375), SC_(0.081027074619746344180737168075984167003866787126753), SC_(-0.80282652754865351221792807765781454966620965987346), + SC_(3), SC_(-0.72904598712921142578125), SC_(0.12483445078630286253952851342405305778981983166886), SC_(-0.77778604740049228448138273219369426999256253154477), + SC_(3), SC_(-0.62323606014251708984375), SC_(0.32965574890576083785628027375894100181596968468511), SC_(-0.54513199810739721932916528089324249381856320981233), + SC_(3), SC_(-0.5579319000244140625), SC_(0.40270407973501426077134190961714921286329627037048), SC_(-0.36518655840013507868281802164420656404202160032323), + SC_(3), SC_(-0.44300353527069091796875), SC_(0.44715433191447753543307951822408097264371917844983), SC_(-0.036791936427532285617966259083782977179826877960429), + SC_(3), SC_(-0.38366591930389404296875), SC_(0.43431026413595020613207998332397363761003816762241), SC_(0.12305391050245773781086426664843252339855233834581), + SC_(3), SC_(0.09376299381256103515625), SC_(-0.13858369755095318860018104847528497280961801152444), SC_(0.63165561565784611978985918320060987131739507929363), + SC_(3), SC_(0.0944411754608154296875), SC_(-0.13955592906053357908142302859499928047171124489978), SC_(0.63114960637026901412475946814198954544987429570206), + SC_(3), SC_(0.264718532562255859375), SC_(-0.35070182432271000038054645231433426033618161454797), SC_(0.39637508312826953308089998658220280933868101174524), + SC_(3), SC_(0.62944734096527099609375), SC_(-0.32069719648529449984920462269136209876307930244366), SC_(-0.561319593950734471650860089348537659182887471015), + SC_(3), SC_(0.67001712322235107421875), SC_(-0.25306053375130974366335052634993663112084050226258), SC_(-0.66081564793406011705012545543655510789740391137235), + SC_(3), SC_(0.81158387660980224609375), SC_(0.11903579598709513016345544955329471825677956076106), SC_(-0.84529721625683760880474150426292608647145977571808), + SC_(3), SC_(0.826751708984375), SC_(0.1726224256643575927228084765374660491943359375), SC_(-0.83881729781391507585288129748948101183986537673708), + SC_(3), SC_(0.91501367092132568359375), SC_(0.54271752467888026988712457448701953488523486157646), SC_(-0.58117864722536578272928121147096403274716994164107), + SC_(3), SC_(0.92977702617645263671875), SC_(0.61478093203605979210896718576903619002393952541752), SC_(-0.47601316933958185359002896997987802108555441085956), + SC_(3), SC_(0.93538987636566162109375), SC_(0.6429734865180513243156944550547871042311953715398), SC_(-0.42776266738524467923677588882284251961316602328383), + SC_(3), SC_(0.93773555755615234375), SC_(0.65488632484399120345028300071987814590102061629295), SC_(-0.40599139678289761995855284290619999445381396586062), + SC_(3), SC_(0.98576259613037109375), SC_(0.91608863936432686136610015203984858089825138449669), SC_(0.49911743300628611193386173368321463301956284745397), + SC_(3), SC_(0.99292266368865966796875), SC_(0.95791076106518834501582130387317692843396343960194), SC_(0.90345674705561627727354266945334737890516023119515), + SC_(5), SC_(-0.804919183254241943359375), SC_(0.39312973382980111956333250391790337182567613112521), SC_(-0.30797722800923861903533473474484308050729533072248), + SC_(5), SC_(-0.74602639675140380859375), SC_(0.4144532363564166856565791456062465926118819061177), SC_(0.036750999302184486102911681342167235245694654813727), + SC_(5), SC_(-0.72904598712921142578125), SC_(0.40170549167165668611417028849058086074027575851596), SC_(0.12520396031165822675600338672833850727710544023424), + SC_(5), SC_(-0.62323606014251708984375), SC_(0.20914641668663499200234579439954172182527145448352), SC_(0.50490192751447088632949650396821036768725468002192), + SC_(5), SC_(-0.5579319000244140625), SC_(0.047804048918209109846499488120279081448233535491368), SC_(0.58010824986594190037517814500067698165903587991196), + SC_(5), SC_(-0.44300353527069091796875), SC_(-0.20426834340719068505951661242682923196540890996203), SC_(0.46263002281764960331577712774593562735119375851165), + SC_(5), SC_(-0.38366591930389404296875), SC_(-0.29067957811088193540744987867754401309946084909752), SC_(0.31516732667905959819121026003137539434799697742685), + SC_(5), SC_(0.09376299381256103515625), SC_(0.16864990731338440263027533820227754755159887863031), SC_(-0.46423435769108284256474941359029876833900529649787), + SC_(5), SC_(0.0944411754608154296875), SC_(0.1697659485252767697264924108060913297868060247664), SC_(-0.46324927263674125093814131181689301223878566421762), + SC_(5), SC_(0.264718532562255859375), SC_(0.34426832813003273714672924371824224133559143244821), SC_(-0.049432441822728069543372084272506540578906568566679), + SC_(5), SC_(0.62944734096527099609375), SC_(-0.22382279528405448977447983371074041669623686569369), SC_(0.49147664711760436466007581944059038967809611892101), + SC_(5), SC_(0.67001712322235107421875), SC_(-0.31223652976417549895070288708720094161868379195206), SC_(0.37610337461310797969209584800253042022904925554525), + SC_(5), SC_(0.81158387660980224609375), SC_(-0.38292680966875416452976755202641274083447045975907), SC_(-0.34885118284757894374218709400505373551960888245662), + SC_(5), SC_(0.826751708984375), SC_(-0.35269763131671469331857533366092200943081591546502), SC_(-0.44136440965471238150156372311112451085353528866709), + SC_(5), SC_(0.91501367092132568359375), SC_(0.063446713438062204473932078136911612759332109107889), SC_(-0.82663633769127728796241230589411701186971587004582), + SC_(5), SC_(0.92977702617645263671875), SC_(0.18225073809630641977015280395310276646936069311641), SC_(-0.82168035297079603201814519993667772968868461426771), + SC_(5), SC_(0.93538987636566162109375), SC_(0.23180510604150429189260138185795569842018206442858), SC_(-0.80887163427971286589959630152315983255456115675709), + SC_(5), SC_(0.93773555755615234375), SC_(0.25325565314935514475658826960850521331006389130604), SC_(-0.80136139259062971113064196979296442577453518790514), + SC_(5), SC_(0.98576259613037109375), SC_(0.79688047965898906667942422168075865228912496237335), SC_(-0.050056541330186097160719119175881895101011997635397), + SC_(5), SC_(0.99292266368865966796875), SC_(0.89644489554848727542361918961404754824639399670787), SC_(0.37903738567797794270627705612855765856516256104433), + SC_(6), SC_(-0.804919183254241943359375), SC_(-0.39836758461472829348998598547346973134856336403357), SC_(-0.11186770789341157073263552304164952167231422725269), + SC_(6), SC_(-0.74602639675140380859375), SC_(-0.26942943612721316815918357350921061418816560550185), SC_(-0.42602747957292468844799426387152791743497741383254), + SC_(6), SC_(-0.72904598712921142578125), SC_(-0.21840146170346573698680050916460454542235139698046), SC_(-0.48296923649820365053381714059193346150823509339657), + SC_(6), SC_(-0.62323606014251708984375), SC_(0.11229562713036701432807908627179645376710821780817), SC_(-0.52579618536742217260788491630929608589881417853436), + SC_(6), SC_(-0.5579319000244140625), SC_(0.25809538238812630583446736370855025636974655379774), SC_(-0.35443454005327430793711175663169328286248363280561), + SC_(6), SC_(-0.44300353527069091796875), SC_(0.32627027269443981686050692334106934126675080884247), SC_(0.076978364356597061911602221500765420329999192593694), + SC_(6), SC_(-0.38366591930389404296875), SC_(0.27296210523874472670236080623125046782530388804834), SC_(0.27741174731966691723650037805968774957839220262642), + SC_(6), SC_(0.09376299381256103515625), SC_(-0.25631763331851885315854599502995062449465614809422), SC_(-0.28268746516151787527692774690914081177303614109476), + SC_(6), SC_(0.0944411754608154296875), SC_(-0.25552408862019782534903797380377055156453603599383), SC_(-0.28448177559590539095516583083575884593430785034601), + SC_(6), SC_(0.264718532562255859375), SC_(0.055663225234594337836693345273561919051283660765644), SC_(-0.49211101331909515135704356361137060677480116821877), + SC_(6), SC_(0.62944734096527099609375), SC_(0.095034738211053556569114686960941777812118998024525), SC_(0.53595663488501203764878594691541436002403012434814), + SC_(6), SC_(0.67001712322235107421875), SC_(-0.027907528859134634498084497388775217092645960712684), SC_(0.56739928086411463246848716706273921826782270933536), + SC_(6), SC_(0.81158387660980224609375), SC_(-0.40564261599347283927948120545903068249295719183982), SC_(0.065698612969198511696728446106187822049301308842024), + SC_(6), SC_(0.826751708984375), SC_(-0.41441668785915980661759850483046331378288487166901), SC_(-0.046051089316127435599875211778830659378778305951565), + SC_(6), SC_(0.91501367092132568359375), SC_(-0.14534417319305000517260528484257988550512306946976), SC_(-0.73321199968869349837797508987098833755655170036581), + SC_(6), SC_(0.92977702617645263671875), SC_(-0.02497873763140766287065827948618680160671583843944), SC_(-0.80187400193518611909857727430796462753119035734657), + SC_(6), SC_(0.93538987636566162109375), SC_(0.028201141383986142054022312024873160606967286580461), SC_(-0.81740119198478364508466660088619509288367234232148), + SC_(6), SC_(0.93773555755615234375), SC_(0.051703886374808225952970501830818053254301264204132), SC_(-0.82169997971024778036115328485043201232954643879117), + SC_(6), SC_(0.98576259613037109375), SC_(0.72170038823497209265542323838206061870527088205587), SC_(-0.25448294588059600387767244854330786413565245709897), + SC_(6), SC_(0.99292266368865966796875), SC_(0.85656129838850274253099953133227725425228299308345), SC_(0.17625410031563921455149796282056956604031098075843), + SC_(13), SC_(-0.804919183254241943359375), SC_(-0.021346989675489582899777513316783512919027984178499), SC_(-0.44112202059370695044753367609499513618897172902607), + SC_(13), SC_(-0.74602639675140380859375), SC_(0.24666838562906154791363844279971485004009388494544), SC_(-0.1559921230869429475133589681910169153699159544855), + SC_(13), SC_(-0.72904598712921142578125), SC_(0.26205171362935296430727406212496048008100313584788), SC_(-0.017605179298092333976782550762974395271667547123874), + SC_(13), SC_(-0.62323606014251708984375), SC_(-0.080372069801645230864998901272264760659582933477599), SC_(0.36425485923732018458592174575151844471405378913141), + SC_(13), SC_(-0.5579319000244140625), SC_(-0.23583528015736737224719659667717786026703268284614), SC_(0.053245393722305081751995109192359134354871591534969), + SC_(13), SC_(-0.44300353527069091796875), SC_(0.018972604977717555259851272576261414873385597702604), SC_(-0.35886939657929715282594368713239077257966834584912), + SC_(13), SC_(-0.38366591930389404296875), SC_(0.18550250811451569348004068552647395938057310465493), SC_(-0.20246148054258569990560069049122417793152050446365), + SC_(13), SC_(0.09376299381256103515625), SC_(0.20769838303968474575312727060982309147206670120161), SC_(-0.10173158142023370803559517312227984933062321078173), + SC_(13), SC_(0.0944411754608154296875), SC_(0.20829227701017635616317556146048162430074934166827), SC_(-0.098728123460385300129782227650749493941872811511327), + SC_(13), SC_(0.264718532562255859375), SC_(-0.1016381458266690823353213981274025318520849829061), SC_(0.30835386562966326517046404619145380164126531151263), + SC_(13), SC_(0.62944734096527099609375), SC_(0.055159037199559177575178459223260433973722342159236), SC_(0.37691576754738027132316322394241161656121459482015), + SC_(13), SC_(0.67001712322235107421875), SC_(-0.11980080975332609846766208424077118471193674213212), SC_(0.34804362893711095691292965673736967284289808313288), + SC_(13), SC_(0.81158387660980224609375), SC_(0.064420961086402494165295142893303224035523617990131), SC_(-0.43419593067780672264639624363068831709493843634964), + SC_(13), SC_(0.826751708984375), SC_(0.16013654257672660076220863480719945813853670795106), SC_(-0.37830883499601794980891054166266352530711732686068), + SC_(13), SC_(0.91501367092132568359375), SC_(0.02981406506695430902920205723465070991144692911286), SC_(0.53391573874244763290223203488170268282792221646375), + SC_(13), SC_(0.92977702617645263671875), SC_(-0.14928783504228836625545729908131879929441545864731), SC_(0.5094824048642415323846575901763459962675439032328), + SC_(13), SC_(0.93538987636566162109375), SC_(-0.21821472006169780300413719938049820079476182672815), SC_(0.45809358526457816919278185678834785451752393960047), + SC_(13), SC_(0.93773555755615234375), SC_(-0.24593495540807619378595982256918019147674926458319), SC_(0.42889513803137504816802334074350455620384537313833), + SC_(13), SC_(0.98576259613037109375), SC_(0.06582920955682109946957491732104452005420774878568), SC_(-0.81713360182404631829162888606556475045158637145556), + SC_(13), SC_(0.99292266368865966796875), SC_(0.45168281361591264659940935116533646174194486856019), SC_(-0.66523405291864568469611605694139032227348875420525), + SC_(16), SC_(-0.804919183254241943359375), SC_(-0.24617676998426440746802697580367697602069689994431), SC_(-0.10342588249052076335368259863624425129111161555058), + SC_(16), SC_(-0.74602639675140380859375), SC_(0.05589693997183205349782501045594495596630477937041), SC_(-0.36756591277520722601404123599925254242454264467136), + SC_(16), SC_(-0.72904598712921142578125), SC_(0.1435839632236998433207972126531002284333052188772), SC_(-0.29678713314015209268198753833877314533807120416601), + SC_(16), SC_(-0.62323606014251708984375), SC_(0.025006544465484963551355899284888512107603542872025), SC_(0.34655424303519465823894024987098609170947386899599), + SC_(16), SC_(-0.5579319000244140625), SC_(-0.20273668414164894060160750060929827332311158866899), SC_(0.1149894928335745044316704348175343096216902152789), + SC_(16), SC_(-0.44300353527069091796875), SC_(0.0568430344346968196836808967847074379571404518767), SC_(-0.31329734713414163463145524081279862392937646591181), + SC_(16), SC_(-0.38366591930389404296875), SC_(0.19955350157037941974526184597940130951592808285846), SC_(-0.069121706148999889753860133645349635646774147838909), + SC_(16), SC_(0.09376299381256103515625), SC_(0.004077511401713283600036273485948150451706308548591), SC_(0.3090887073999325166929620341518083398087059069866), + SC_(16), SC_(0.0944411754608154296875), SC_(0.0018646455756569841632128890021862805086238621865179), SC_(0.30915113128562592599142879370578903469780546339442), + SC_(16), SC_(0.264718532562255859375), SC_(-0.057138811421491531852629180943328986609990232285623), SC_(-0.30102711196776165823913047161703041527490961215075), + SC_(16), SC_(0.62944734096527099609375), SC_(0.053905813652862864225047719177357021912552840167578), SC_(-0.3394893321631230893291882500714616497801870033187), + SC_(16), SC_(0.67001712322235107421875), SC_(0.20571755182888692558409436652095184688145604215735), SC_(-0.15400029036097541197972382773740560927016105513573), + SC_(16), SC_(0.81158387660980224609375), SC_(-0.25610293236665229776934216307688324622589786937523), SC_(0.029961309199690485279175505247898935243066233951638), + SC_(16), SC_(0.826751708984375), SC_(-0.24467257950234667771221825741251222771947492803914), SC_(-0.14584909786233540893014977656569646339205583145946), + SC_(16), SC_(0.91501367092132568359375), SC_(0.30042521371658467516725427482154698462078838756), SC_(0.11242410274334292000251659391599358954645603738835), + SC_(16), SC_(0.92977702617645263671875), SC_(0.20912498055485121957345853172873004479220934035096), SC_(0.38711457227561848903449378495312209659537067985191), + SC_(16), SC_(0.93538987636566162109375), SC_(0.14228176834914109691746234218230423568131480850111), SC_(0.46724475576348077611133336497614776597835295379528), + SC_(16), SC_(0.93773555755615234375), SC_(0.10947822546659067656059296835577708662292349876443), SC_(0.49345958632627785174194039683464075153298036877136), + SC_(16), SC_(0.98576259613037109375), SC_(-0.18053759743174070857427031356500616942177764243751), SC_(-0.69129540587532453519248426712601771804500778047449), + SC_(16), SC_(0.99292266368865966796875), SC_(0.24467850628321941403216962899355195806033451938156), SC_(-0.79611153201220615596111924787398204555433320171123), + SC_(18), SC_(-0.804919183254241943359375), SC_(-0.0091062060443244939758547861277241601517458288228401), SC_(-0.37780874716766649794749661161502596284251171176729), + SC_(18), SC_(-0.74602639675140380859375), SC_(0.22554068680311218202775373160884926839138620763174), SC_(0.043450468136242147653982143862844811198611491554443), + SC_(18), SC_(-0.72904598712921142578125), SC_(0.18653718888369370131458265584018026946159296567964), SC_(0.19518736469516489835563573974741507967360934238079), + SC_(18), SC_(-0.62323606014251708984375), SC_(-0.20837325214812717413067018822585361068165851336255), SC_(-0.037088866497216472583736911887498188987603773369659), + SC_(18), SC_(-0.5579319000244140625), SC_(0.0083537300257362812848909087265145663947906734657682), SC_(-0.31950967163170480424900959261902943297087436887194), + SC_(18), SC_(-0.44300353527069091796875), SC_(0.11695183881480336805185423703698692829975597728824), SC_(0.24681367379374692383023201907678584193776277803732), + SC_(18), SC_(-0.38366591930389404296875), SC_(-0.10358901613970675221183097893317277350294739582856), SC_(0.25578907869474625948919953810862798903271057530686), + SC_(18), SC_(0.09376299381256103515625), SC_(0.030899020693203570750329014297680833991336820156792), SC_(-0.28791754441150052849520877694768651589010597918611), + SC_(18), SC_(0.0944411754608154296875), SC_(0.033208344966164570458319052396398896477890882959009), SC_(-0.28729203288102887394022408730410045130704945170246), + SC_(18), SC_(0.264718532562255859375), SC_(-0.045964012675459912647004385671790829004749499845969), SC_(0.28775273984847125983134846044367147353322574723096), + SC_(18), SC_(0.62944734096527099609375), SC_(-0.21025192720175270695719746239016794207250758550671), SC_(-0.011451910307176188739521846496709015868005938376706), + SC_(18), SC_(0.67001712322235107421875), SC_(-0.11209473575977880537554630008831322938651681961203), SC_(-0.28861574077574071045967706163764266303939167641235), + SC_(18), SC_(0.81158387660980224609375), SC_(-0.059414308841952830929071045427642264332649709039605), SC_(0.36941533931174362399141104265754795528484218175544), + SC_(18), SC_(0.826751708984375), SC_(-0.1661861116384618036402153021294856784649918532195), SC_(0.28742497280291907514593608858531889117823779493292), + SC_(18), SC_(0.91501367092132568359375), SC_(0.24104179066621669826861428047478740284125071072384), SC_(-0.25816581242891276150855737931173321477113736399573), + SC_(18), SC_(0.92977702617645263671875), SC_(0.30345956430814040115575308179633295683878952009221), SC_(0.053205379543234927660568467761641814470230916738039), + SC_(18), SC_(0.93538987636566162109375), SC_(0.28695924419323148602457516358630434274549630594269), SC_(0.19040502613280754358590157800975680518526525190133), + SC_(18), SC_(0.93773555755615234375), SC_(0.27214637032176476176235696410333280489913435468021), SC_(0.24695230662862708114901251701483136230530918002153), + SC_(18), SC_(0.98576259613037109375), SC_(-0.30043454768104230746662772278855454488514250456508), SC_(-0.52586497321495004128692505709794988132542865806662), + SC_(18), SC_(0.99292266368865966796875), SC_(0.10905904618186494808823511070262036756283922080124), SC_(-0.8190043052645567950966181297246945012178431035647), + SC_(19), SC_(-0.804919183254241943359375), SC_(-0.13197080377202665736616914483295430386103226798339), SC_(0.30439185079461838727386102511417679445130143697504), + SC_(19), SC_(-0.74602639675140380859375), SC_(-0.145888472515752488322967820082056444353328274887), SC_(-0.26146280837274387072049326070853702574943967213499), + SC_(19), SC_(-0.72904598712921142578125), SC_(-0.049543273739376098938164118341034405465324305394334), SC_(-0.33399130950651187664252780722066231231086715215037), + SC_(19), SC_(-0.62323606014251708984375), SC_(0.108462474462736719241499115773313996144190665045), SC_(0.27188868340165133975799203281538322711757069710654), + SC_(19), SC_(-0.5579319000244140625), SC_(-0.16898700597587011902855624616392747901805702881528), SC_(0.16296957620279172219978419815087191821651266886829), + SC_(19), SC_(-0.44300353527069091796875), SC_(0.086774244261237041187502205186727910747248943821998), SC_(-0.2669005399736008170995423913834449884708993279043), + SC_(19), SC_(-0.38366591930389404296875), SC_(0.18518233719073980253783272267881493406790394149709), SC_(0.050815807727239433167794934837935315089529954541468), + SC_(19), SC_(0.09376299381256103515625), SC_(-0.1749285947092888721974786955725138685456169025118), SC_(-0.073354024188019371331713593919507214584741353774141), + SC_(19), SC_(0.0944411754608154296875), SC_(-0.17429825143908666454510603569046385180196182465626), SC_(-0.077001126265999192631865199712139132518527301044888), + SC_(19), SC_(0.264718532562255859375), SC_(0.16022500206625985912825819052448183125933330717671), SC_(0.14198924834209712722889554522828334583526568794205), + SC_(19), SC_(0.62944734096527099609375), SC_(-0.13438326361094362774586020859943409104199788819994), SC_(0.24300673266449070282404274854258133237165626165118), + SC_(19), SC_(0.67001712322235107421875), SC_(-0.20602713406941943301157630033028134054188569383329), SC_(-0.060940372673870113382880029493240963759634545830116), + SC_(19), SC_(0.81158387660980224609375), SC_(0.086971455844324875234132438927179131969983584970598), SC_(0.34508503887069582338167006750623249283260807122053), + SC_(19), SC_(0.826751708984375), SC_(-0.033442914793680897952010218712581529745899360903155), SC_(0.37454337915916963566398826067574338174597268932648), + SC_(19), SC_(0.91501367092132568359375), SC_(0.15007656103598576739971044779394255546718356845339), SC_(-0.37908868831917397336990106081043384870642885722423), + SC_(19), SC_(0.92977702617645263671875), SC_(0.28693501649909716776829384064013974960722420152263), SC_(-0.12313038336912701300360856578205807776474791522058), + SC_(19), SC_(0.93538987636566162109375), SC_(0.30324802829239922164147482899163792077902516015462), SC_(0.017801725881771420248228319415115282604840122400748), + SC_(19), SC_(0.93773555755615234375), SC_(0.30185089350015097041813236342216465473811492066808), SC_(0.080512539757557010183574032982523614885735562454396), + SC_(19), SC_(0.98576259613037109375), SC_(-0.34396150797274909426987918450335894287593307514199), SC_(-0.42686745322594445556165789826564473675847159812306), + SC_(19), SC_(0.99292266368865966796875), SC_(0.043969381393564338898972458003559718667557179801894), SC_(-0.81279540498362619452519349374691829897388634698573) + }; +#undef SC_ + diff --git a/test/legendre_p_large.ipp b/test/legendre_p_large.ipp new file mode 100644 index 000000000..a1f7d1ac8 --- /dev/null +++ b/test/legendre_p_large.ipp @@ -0,0 +1,170 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 160> legendre_p_large = { + SC_(29), SC_(-0.74602639675140380859375), SC_(0.050915219643735786802064817454102557266509665552523), SC_(-0.27118035040452065163236941090242943684321195237749), + SC_(29), SC_(-0.72904598712921142578125), SC_(0.15209960929167220423613043592541930303920942697128), SC_(-0.1438359066051312703697159687668902900032679225431), + SC_(29), SC_(-0.5579319000244140625), SC_(0.15849246733249484229246386045081847903407720368835), SC_(-0.046562152771403674797644638451970346262085750814402), + SC_(29), SC_(-0.38366591930389404296875), SC_(0.12421123432704035296982084866318407821031736589989), SC_(-0.13993608234219292039527623183264127314107515942999), + SC_(29), SC_(0.264718532562255859375), SC_(0.14939214703729469665461134129487953904270632801499), SC_(0.011880798886655750194841085329195617037793542295307), + SC_(29), SC_(0.62944734096527099609375), SC_(0.15752641351603055527713997332857496041323176430518), SC_(-0.085333543185746265108134728242042619782666873361817), + SC_(29), SC_(0.67001712322235107421875), SC_(0.054837169775284662482177068305626352949947763721645), SC_(0.25355488589896471253311476119270056443895635234837), + SC_(29), SC_(0.81158387660980224609375), SC_(0.063381360227496634467950288363046198618583970049264), SC_(0.28493842219370104406874711812243725560916796813782), + SC_(29), SC_(0.826751708984375), SC_(-0.08420018636937566660354955907203801287585967235842), SC_(0.27769559592859630765679556893873497642068025145103), + SC_(29), SC_(0.93773555755615234375), SC_(-0.24176816577505910452921016056528287088649954762181), SC_(0.094296671036158090707906492415425184420130303729612), + SC_(32), SC_(-0.74602639675140380859375), SC_(-0.10624862108385367062544557604098705758947684718283), SC_(-0.21143967375447832725357384431573889445833865564692), + SC_(32), SC_(-0.72904598712921142578125), SC_(0.025162565093345926014241859993355739041989277225088), SC_(-0.26274148479323222549160374105375114037174210402628), + SC_(32), SC_(-0.5579319000244140625), SC_(0.14211456817063838568644446010057604214542220046016), SC_(-0.09163254161603810457705450004999666401809984055068), + SC_(32), SC_(-0.38366591930389404296875), SC_(0.14171288019304087574298677776314705938680717437038), SC_(-0.052711866447932948820821929976771090258669811818703), + SC_(32), SC_(0.264718532562255859375), SC_(-0.10746376970464863575465113222711354062288152228845), SC_(0.14703447108655800801097998317667773187484429086529), + SC_(32), SC_(0.62944734096527099609375), SC_(-0.15721886386953844900014008976876572130375292635363), SC_(-0.03463115417113285817814346783115703627607698101613), + SC_(32), SC_(0.67001712322235107421875), SC_(0.048628774250235041116639532793364743422360425715375), SC_(-0.24343097490553436355382554969125452470269482841518), + SC_(32), SC_(0.81158387660980224609375), SC_(0.14709429758897851782623104453504062279048901484918), SC_(-0.17120780885496551232352932901235943774904473019944), + SC_(32), SC_(0.826751708984375), SC_(0.18197608635110136442722424209924919380946511973609), SC_(0.064598428569533734464113024874557402334768980022172), + SC_(32), SC_(0.93773555755615234375), SC_(-0.061512016664104396409494145001588438528631649237376), SC_(0.36010369834698605740012216441227373597825633684005), + SC_(33), SC_(-0.74602639675140380859375), SC_(-0.010238220971698350467857407217583972140726845648941), SC_(0.26483415891807978747956511959896313413438051711664), + SC_(33), SC_(-0.72904598712921142578125), SC_(-0.1308485763851203410864936505227876528881511136519), SC_(0.16199934006548616731309863119775152390583901324519), + SC_(33), SC_(-0.5579319000244140625), SC_(-0.12577548566890528018101278253700971908249029962743), SC_(-0.13213214605592102018000812058769351569734360406003), + SC_(33), SC_(-0.38366591930389404296875), SC_(-0.084070866208971510118625762007538569384131026389396), SC_(-0.18256278466727144314587766075483055968035831220494), + SC_(33), SC_(0.264718532562255859375), SC_(0.060892666049180052331868898508597370624428803024817), SC_(0.19866890409777954034785008801181600022935344886198), + SC_(33), SC_(0.62944734096527099609375), SC_(-0.11433728271514716149262038842691043741855456620044), SC_(0.16755876228487195768012212741139439591382292792337), + SC_(33), SC_(0.67001712322235107421875), SC_(-0.081236062053488889130078168052517557727777089991736), SC_(-0.21649027108290998691804424765459226889986656795972), + SC_(33), SC_(0.81158387660980224609375), SC_(0.054836608100875136695247613465739163323207341583917), SC_(-0.26983701252599468973584716961923532939147494467454), + SC_(33), SC_(0.826751708984375), SC_(0.17096451544704338934795787534509579387648987239154), SC_(-0.10583253904494668067403419241018401345294284279768), + SC_(33), SC_(0.93773555755615234375), SC_(0.021689551526675134145413087356244487320455743955836), SC_(0.36566095216176988383802606024502153062571425905414), + SC_(38), SC_(-0.74602639675140380859375), SC_(-0.084123836557398448368713685848077796605866311328419), SC_(0.20927452879651299362933031503631704855861507328485), + SC_(38), SC_(-0.72904598712921142578125), SC_(-0.15529625891826503441381053635222357317586896447525), SC_(0.0095728141123042996678374510905606631222574103483576), + SC_(38), SC_(-0.5579319000244140625), SC_(0.098453621336514494698473554065871517874604718865768), SC_(-0.15887228344501787123307716070402047502579097616639), + SC_(38), SC_(-0.38366591930389404296875), SC_(0.1142998723616291395401060145662954970184529162179), SC_(0.10927652072714659779878476348183517273638952750771), + SC_(38), SC_(0.264718532562255859375), SC_(0.082342405948218235800013849335056084637027957309688), SC_(0.15992426917043357157539330709673818274284050011282), + SC_(38), SC_(0.62944734096527099609375), SC_(-0.068455729281013919450961847170789295612305662562268), SC_(-0.20232791952033959865517436817152841139901171805722), + SC_(38), SC_(0.67001712322235107421875), SC_(0.14923503774161864776328729535793778940014260423005), SC_(-0.00081555462858474175721539924197608607382214710104177), + SC_(38), SC_(0.81158387660980224609375), SC_(-0.054544375275263481570647398342926037642622621118648), SC_(0.24995338198241340981855015694448657310842038102797), + SC_(38), SC_(0.826751708984375), SC_(-0.16721624694409901980215061835708625790102572947942), SC_(0.059275472334568365380770389586353873529433513464428), + SC_(38), SC_(0.93773555755615234375), SC_(0.20855301957399606773775871068964050472366514949047), SC_(-0.10030484670657737103060450542322599342156588398843), + SC_(42), SC_(-0.74602639675140380859375), SC_(0.049566019304086784068530075774279790089365026819016), SC_(-0.2223326328142980698042327834311390349548637605267), + SC_(42), SC_(-0.72904598712921142578125), SC_(0.14591441453221755504339013126253144361512927416181), SC_(-0.03816847032424030854934985301169674005663852971074), + SC_(42), SC_(-0.5579319000244140625), SC_(-0.13430204358943900275964577227355331227334636201161), SC_(0.0051973684528497691222879613574650304460896053520729), + SC_(42), SC_(-0.38366591930389404296875), SC_(0.065763896800574200794337123835235188691341407252599), SC_(-0.1713134367479732947155934942710203117432539046046), + SC_(42), SC_(0.264718532562255859375), SC_(-0.047554509216288149280305803250205697401306151867419), SC_(0.18095441384071096874666701309266904943143926028736), + SC_(42), SC_(0.62944734096527099609375), SC_(0.10935216508815166523730605326515550073363675346191), SC_(0.1343668237290581228732195022404437327151868599812), + SC_(42), SC_(0.67001712322235107421875), SC_(-0.13896760821264559453299826838169576033084249809532), SC_(0.046166285445723758516981086429175967795330032118854), + SC_(42), SC_(0.81158387660980224609375), SC_(0.13257761059856394025891806012454608734090842373859), SC_(-0.14099679657580961322235886444766213263432122864624), + SC_(42), SC_(0.826751708984375), SC_(0.14083726257982003772240761087663193372628899052788), SC_(0.12939522669379464935358907263220136856872326106689), + SC_(42), SC_(0.93773555755615234375), SC_(-0.030227297367381724405890694551090646808341233639839), SC_(-0.32263036348629243619745931620595788155104891833781), + SC_(47), SC_(-0.74602639675140380859375), SC_(0.10555867750979365926641158999955582823336205722782), SC_(-0.14886382691569576113160226420850148145570650896964), + SC_(47), SC_(-0.72904598712921142578125), SC_(0.12518796913926798559687521769888776380193823473818), SC_(0.098180244656107285818363063590386661434884234727998), + SC_(47), SC_(-0.5579319000244140625), SC_(0.019958376774871797942991524370694468827252910590651), SC_(-0.19713453245538155745224332261651795745681090546712), + SC_(47), SC_(-0.38366591930389404296875), SC_(-0.017374612252196858651395396286373314512171227712276), SC_(0.18725030551272538736891544492946995866076663640595), + SC_(47), SC_(0.264718532562255859375), SC_(-0.018801793887180091986096938136652872878107965315931), SC_(0.1828072182041642441226028996345379902315722570693), + SC_(47), SC_(0.62944734096527099609375), SC_(-0.10497355122531684338594399243517694074545593042325), SC_(0.12395441308292615650354652321967372630461017577647), + SC_(47), SC_(0.67001712322235107421875), SC_(0.042375691594523493089898030922098260697978949901084), SC_(-0.20027976349819205062196975868907081288964978457637), + SC_(47), SC_(0.81158387660980224609375), SC_(-0.12720249332232236538255468589569255750641552199498), SC_(0.12911204921470701304207453622146811162549192306205), + SC_(47), SC_(0.826751708984375), SC_(-0.11972156572489977935845748400575031716451757509736), SC_(-0.15299307930087258161082851169709559917733372444518), + SC_(47), SC_(0.93773555755615234375), SC_(-0.18448824265114203879229766781768231984156422989655), SC_(0.10574076834730194623398317285604209247245691580845), + SC_(50), SC_(-0.74602639675140380859375), SC_(-0.015930599657360476251420277903683541838529410897537), SC_(-0.21465912896739233133099578206788459237386714150655), + SC_(50), SC_(-0.72904598712921142578125), SC_(0.12409002491708828479268113070514774903536846383229), SC_(-0.086287169891479867966715770145964370224141052863963), + SC_(50), SC_(-0.5579319000244140625), SC_(-0.005798165247856899753189081564247189672477629817479), SC_(-0.19337852580649058999917721542653095981057374271772), + SC_(50), SC_(-0.38366591930389404296875), SC_(-0.059497023650103635064046099627669865791536750381894), SC_(0.15794384507010689572165607053156094367974620258235), + SC_(50), SC_(0.264718532562255859375), SC_(-0.065209573905631036859687403696160942576965840778783), SC_(-0.14751871407424188124249576268838594921576865374728), + SC_(50), SC_(0.62944734096527099609375), SC_(0.1254648614906361354063479552814166773167878049504), SC_(-0.034440129398110338581115403924597511980186351811602), + SC_(50), SC_(0.67001712322235107421875), SC_(-0.10619347339517479426067516348745796102076178371881), SC_(0.11862572725603045508458932631769711812763534799817), + SC_(50), SC_(0.81158387660980224609375), SC_(0.11273074165283415173181149763996018303702643671155), SC_(0.14790659055314203028889130297212665219056965725573), + SC_(50), SC_(0.826751708984375), SC_(-0.066592210444900044500145874300565502648306521922739), SC_(0.21057227237727695731942424868416443302373930752217), + SC_(50), SC_(0.93773555755615234375), SC_(-0.02964420684396612633089666751568875846128660261089), SC_(0.29554119190479578704553201067740518317569997711165), + SC_(74), SC_(-0.74602639675140380859375), SC_(-0.11276175922769771071169791815382160822979193457584), SC_(-0.016948886125033992210699876903298192468926010338659), + SC_(74), SC_(-0.72904598712921142578125), SC_(0.043325082362381951121810614501313351872910740229927), SC_(-0.16177588767320896275870106383776756479873939526599), + SC_(74), SC_(-0.5579319000244140625), SC_(-0.10080435030792016569597859069478841148013073447729), SC_(0.018251782587574233476818350810881185458410525739317), + SC_(74), SC_(-0.38366591930389404296875), SC_(0.046884436541549348713098747004974391148402679382921), SC_(-0.13193735158761539160783845591049668332581458959337), + SC_(74), SC_(0.264718532562255859375), SC_(-0.041828012721919454058249300993966878486562319326719), SC_(-0.13246532996002790918584053275877515690218265371078), + SC_(74), SC_(0.62944734096527099609375), SC_(-0.094030311892407800682586230577407806078989970029721), SC_(-0.072919542245915760263666497413547057327808714299635), + SC_(74), SC_(0.67001712322235107421875), SC_(0.029245586267240350595851651237554590988267446471066), SC_(0.16214505190101967431610553130957058464946341991298), + SC_(74), SC_(0.81158387660980224609375), SC_(-0.017184547316074253794515299386081262373448628108694), SC_(-0.18803727598401509696193566641796932606576440421714), + SC_(74), SC_(0.826751708984375), SC_(0.11918365992241106370554467669124109309788511498893), SC_(0.049271190137184585759693541797865288317081249630842), + SC_(74), SC_(0.93773555755615234375), SC_(0.13720035943050209633696665899170965118560455647167), SC_(-0.11934635271777084702112356352205097073497522539851), + SC_(83), SC_(-0.74602639675140380859375), SC_(0.099722551700102296576333533087493494141629020623715), SC_(0.060920145263796023814234079688232261856372810771644), + SC_(83), SC_(-0.72904598712921142578125), SC_(-0.082673563441569816515278309758665439909493115318683), SC_(0.10304666821416430755952808837580442197138532186102), + SC_(83), SC_(-0.5579319000244140625), SC_(-0.071469557226080465580663942218061835065596029503675), SC_(0.10032073353554464505277586981830025137954384680805), + SC_(83), SC_(-0.38366591930389404296875), SC_(0.090342825331683058526707865550737058600999436851883), SC_(0.015229849936687863148217151178879823068202772258005), + SC_(83), SC_(0.264718532562255859375), SC_(0.032973965659052868308616011181565750057675408468301), SC_(-0.12971015008879036949215807951525454450331853071241), + SC_(83), SC_(0.62944734096527099609375), SC_(-0.029540121157521228269021443084960584105688041972903), SC_(0.14851201098143861160585951812951951622661772174285), + SC_(83), SC_(0.67001712322235107421875), SC_(0.10122142405146658235259251832888419156202562486693), SC_(0.0077420083935597411748271095780871224198331320212672), + SC_(83), SC_(0.81158387660980224609375), SC_(0.057246164186558041309336522292709213691507098187941), SC_(-0.15527890012859959180010630068393674149758957305009), + SC_(83), SC_(0.826751708984375), SC_(0.046180391617246980558614459450209311982173717330398), SC_(0.16785562098976736293735241808043927696415685748103), + SC_(83), SC_(0.93773555755615234375), SC_(-0.12572490913391149598157598741888682182134531126631), SC_(0.12308046852619065606878331099164630107367082534757), + SC_(101), SC_(-0.74602639675140380859375), SC_(0.058653496347056952338276621328805913660326830178208), SC_(0.12145297221972220508843876281155663375125894189862), + SC_(101), SC_(-0.72904598712921142578125), SC_(-0.090473034865819302928187941359278959062428518755725), SC_(-0.049121669560248310898765467668228847931197026959131), + SC_(101), SC_(-0.5579319000244140625), SC_(0.032856366144512093838472879802827945157670404434094), SC_(0.12642835711847836774479013663589314743072554059549), + SC_(101), SC_(-0.38366591930389404296875), SC_(-0.063163736094262211023950792526928416942278796176713), SC_(0.08315035982603328572025956598160739433185168321863), + SC_(101), SC_(0.264718532562255859375), SC_(0.071163045255901039101130479356531344296261959626307), SC_(0.059605104967104404152251553269156920601599226776817), + SC_(101), SC_(0.62944734096527099609375), SC_(-0.0007727131004341142524741554693628840685676674658113), SC_(-0.14111849131537663857555529499523590733520446597943), + SC_(101), SC_(0.67001712322235107421875), SC_(-0.070407995641034625719001861506953232343608676996959), SC_(-0.092817700559800711222725905975289230096607292859021), + SC_(101), SC_(0.81158387660980224609375), SC_(0.099307321362112185306610136683788343902740025414221), SC_(0.046418617748086995449796412250804429903067746389578), + SC_(101), SC_(0.826751708984375), SC_(-0.1041094321529210978436084887455176793203883621926), SC_(0.027652245608769378268189646446135419146885683214923), + SC_(101), SC_(0.93773555755615234375), SC_(-0.10613119080999585675059148209842336075096154309699), SC_(0.12944930189574758589151748582113145300025202556463), + SC_(103), SC_(-0.74602639675140380859375), SC_(-0.069509159753968058194042786081992949167966470822951), SC_(0.1042540571293701201528028813211055287246877892261), + SC_(103), SC_(-0.72904598712921142578125), SC_(0.025263082930279778421327606486190138820142052030236), SC_(-0.14351968257852565285920081107438326042937783381617), + SC_(103), SC_(-0.5579319000244140625), SC_(-0.086090797701103710780927800364190497383336250842762), SC_(0.73563687415286537614692801503996295947038747498055e-4), + SC_(103), SC_(-0.38366591930389404296875), SC_(0.0069903138700112647861271558581807248069002924998414), SC_(-0.12772502121884169194613640292720812041466814164591), + SC_(103), SC_(0.264718532562255859375), SC_(-0.041410666477160831448449369636364604203824717736859), SC_(-0.10726985707386768666039161492413816004770025158786), + SC_(103), SC_(0.62944734096527099609375), SC_(-0.086869296604861708037479158615097773729001515720048), SC_(0.030189104543447976063127397009596619632060749539848), + SC_(103), SC_(0.67001712322235107421875), SC_(-0.05108553281416170397625929563635477985617692288556), SC_(0.11834130734691348519983812797384944794665350021719), + SC_(103), SC_(0.81158387660980224609375), SC_(0.058956687321621474446809458105596372447480179278297), SC_(-0.131908419975604481181323208249846590177155219106), + SC_(103), SC_(0.826751708984375), SC_(-0.021621095970943942775281831322383200051308475737036), SC_(0.16069626010796515826935041981775936523380391638463), + SC_(103), SC_(0.93773555755615234375), SC_(-0.026566877946901700789372137814260494007273459963555), SC_(0.20481046345010719355266366241281814363105606775192), + SC_(110), SC_(-0.74602639675140380859375), SC_(-0.033942958151465668508584449603964158663794075720858), SC_(-0.13602869614463514275977560482278281839843937232776), + SC_(110), SC_(-0.72904598712921142578125), SC_(0.061608143475272538317308473633212181102846034412592), SC_(0.10678453148405205098663916975358345244841432153652), + SC_(110), SC_(-0.5579319000244140625), SC_(0.070207133539044196827310003993778517549356416945079), SC_(0.070477582350084174929316416542386486473261420732256), + SC_(110), SC_(-0.38366591930389404296875), SC_(-0.070383145106891206011892398176473132776246310124518), SC_(-0.056304633257010713541779389121079213335581039992689), + SC_(110), SC_(0.264718532562255859375), SC_(0.018413502281400223048564975179622159141770330579945), SC_(0.1179172684960028730149587291496622038750077559426), + SC_(110), SC_(0.62944734096527099609375), SC_(-0.084946393685047629698742653748849213204262536726215), SC_(0.02212137389603911574713594832891805519677492495707), + SC_(110), SC_(0.67001712322235107421875), SC_(-0.075205818842405280724589166472562327621104655346223), SC_(0.072065721597278484368730413339141193881824291866732), + SC_(110), SC_(0.81158387660980224609375), SC_(0.057209406868467160414288975624360868544196124966652), SC_(0.12749587894184737263697744890517205077643805330212), + SC_(110), SC_(0.826751708984375), SC_(-0.074856792842343494297327888969538339348549563347874), SC_(-0.10696602381164176466519470638170406570388141831222), + SC_(110), SC_(0.93773555755615234375), SC_(0.097528283970739845680724641236094845179184947489201), SC_(-0.13210730523293428301663298753017310169984684526741), + SC_(111), SC_(-0.74602639675140380859375), SC_(-0.032200675894540407249249527986931235112743426249519), SC_(0.13636975986133435085016449724426916756505823281803), + SC_(111), SC_(-0.72904598712921142578125), SC_(0.0016092508123221426259782618321854563885148486902523), SC_(-0.14344152276755107203423370387654056491916060539013), + SC_(111), SC_(-0.5579319000244140625), SC_(-0.0019266546022300930027573050620657297985689216768549), SC_(-0.13025449845936477071498681592486478446863468033711), + SC_(111), SC_(-0.38366591930389404296875), SC_(-0.00607083307494418231810803422278831700786776274005), SC_(0.12314301905657725821736747827712979258060988004664), + SC_(111), SC_(0.264718532562255859375), SC_(0.076917600598861354810476795406500521438714159220046), SC_(0.0033075920020254493876180380438220398526976541180716), + SC_(111), SC_(0.62944734096527099609375), SC_(-0.042334521409296933382182292266822707946314463083643), SC_(0.11707980002880993162285312441701953239742048843854), + SC_(111), SC_(0.67001712322235107421875), SC_(-0.01625732237213437043904647280255024284754469471479), SC_(0.13536990666014865190613699141291179267903978819174), + SC_(111), SC_(0.81158387660980224609375), SC_(0.093429234850716867173081121412126317601100287085826), SC_(0.050740491224134820431672350744872870880796379842562), + SC_(111), SC_(0.826751708984375), SC_(-0.099746842249768677069851749588989036311889774927283), SC_(-0.02218254391038425158040959896075971134469612198156), + SC_(111), SC_(0.93773555755615234375), SC_(0.061960098625334578699531381570226002216446334987954), SC_(-0.17630158114468011704453109150917307426932700963538), + SC_(115), SC_(-0.74602639675140380859375), SC_(0.011659882634088537821264971193347238274907192891989), SC_(-0.1417288093884680768867130033428123726827027042855), + SC_(115), SC_(-0.72904598712921142578125), SC_(0.0097131893606856202751128572690136150201795716231646), SC_(0.14012961153023905234915467648238152308202483249179), + SC_(115), SC_(-0.5579319000244140625), SC_(-0.055599872031625140506136394171510860309410123809349), SC_(0.093594483130628843819694780782575925754784924670163), + SC_(115), SC_(-0.38366591930389404296875), SC_(0.077050446497529102420650609981634503271775399693683), SC_(0.0088565512206407663055683543736671275288183109816667), + SC_(115), SC_(0.264718532562255859375), SC_(0.034359839114246272577599724967370326173387403660347), SC_(0.10578248128418573373870536860675213912264059240692), + SC_(115), SC_(0.62944734096527099609375), SC_(0.0082643990325571512244908953318239675941855106132265), SC_(-0.13165640504236233394765218021604504786233485133267), + SC_(115), SC_(0.67001712322235107421875), SC_(-0.0015721055642368064825337799606692523719130974520218), SC_(-0.1353286900783831392195565600906463227612561145681), + SC_(115), SC_(0.81158387660980224609375), SC_(-0.054210930576897856499034808655933306801074683806062), SC_(-0.12659507936588546926051398902517626516964689218928), + SC_(115), SC_(0.826751708984375), SC_(0.06212883372643213611372963364539976692767234086995), SC_(0.12103709534949250997508001328034108589273615963615), + SC_(115), SC_(0.93773555755615234375), SC_(-0.09980919675793132053530446510639647979845319955803), SC_(-0.12070840338940873219064713828143611372512223844091), + SC_(116), SC_(-0.74602639675140380859375), SC_(-0.068487247444151474237653315277483909414503521300912), SC_(0.093133560384715286625946002729620416337163521029867), + SC_(116), SC_(-0.72904598712921142578125), SC_(0.053747789206590672037151315696697693783833792642693), SC_(-0.11211897478819628686868719378051029417346515093252), + SC_(116), SC_(-0.5579319000244140625), SC_(0.080122819627702864075844102189789799443576781457988), SC_(0.020173351559352067990742477146036299831908728103273), + SC_(116), SC_(-0.38366591930389404296875), SC_(-0.024249827411491278686372542928360990815946534826784), SC_(-0.11467110049800068759284312552536360348652573880772), + SC_(116), SC_(0.264718532562255859375), SC_(0.073718014154393579573780297435185676405997097861731), SC_(-0.023941183188976671650101777466534611583995107650774), + SC_(116), SC_(0.62944734096527099609375), SC_(-0.059668625982518363289929597563274657874779402078409), SC_(-0.09255759087664323717343674706577199358384636772319), + SC_(116), SC_(0.67001712322235107421875), SC_(-0.064729455762043452505626574517572044801030359192088), SC_(-0.088456402518418445483355798933259689021877395507254), + SC_(116), SC_(0.81158387660980224609375), SC_(-0.09069070444539916571162153776802786573166522696411), SC_(-0.0527625562114936996735580314666853717965865324919), + SC_(116), SC_(0.826751708984375), SC_(0.094306540731834905126868750171910154657206855132072), SC_(0.044969460070177494430473922626932676591613349156668), + SC_(116), SC_(0.93773555755615234375), SC_(-0.11977051432565183689355134402005152657631906753244), SC_(-0.058477756477300972556925093606746906197796783801524), + SC_(119), SC_(-0.74602639675140380859375), SC_(0.0087647065593993755222972658179029408444330186700542), SC_(0.13981912827212672744690925773170472610548387878822), + SC_(119), SC_(-0.72904598712921142578125), SC_(-0.020501605529893412888893201088044338252329402923723), SC_(-0.13478486824495203061528622211548575586334551817436), + SC_(119), SC_(-0.5579319000244140625), SC_(0.080036079293206370171512732389414344286704185353321), SC_(-0.0057776707755366365863380008852867161540142918927643), + SC_(119), SC_(-0.38366591930389404296875), SC_(0.0052218893934731418741815240011222420959400585517152), SC_(-0.11902359008249444427689952801477258632653373728298), + SC_(119), SC_(0.264718532562255859375), SC_(-0.041958445146548813480092404170567661553263062970998), SC_(0.096369084287714671301426340819694101521306372531871), + SC_(119), SC_(0.62944734096527099609375), SC_(0.026043742963778131871545929796683083958834802939707), SC_(0.12346064721462223505658160979882243719998039566685), + SC_(119), SC_(0.67001712322235107421875), SC_(0.018730148385420890536233247762177938725955754094692), SC_(0.12977342706190187482418503847938799787319981967217), + SC_(119), SC_(0.81158387660980224609375), SC_(-0.0051210369574630302606435588094752910907524904265636), SC_(0.14977897540214287229711857221722487285805056065051), + SC_(119), SC_(0.826751708984375), SC_(0.0070994904638281005505473502488606481760552210237098), SC_(-0.15244878741668898076438519389186244649902911784835), + SC_(119), SC_(0.93773555755615234375), SC_(-0.089511411656126705336943924861664813522610049042024), SC_(0.13442707735952316190476066030580938662981623871763) + }; +#undef SC_ + diff --git a/test/log1p_expm1_data.ipp b/test/log1p_expm1_data.ipp new file mode 100644 index 000000000..a4cd8da04 --- /dev/null +++ b/test/log1p_expm1_data.ipp @@ -0,0 +1,90 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 80> log1p_expm1_data = { { + { SC_(-0.69330310821533203125e0), SC_(-0.1181895342296499380302723361817935835636e1), SC_(-0.5000779577496508480606742934033661111325e0) }, + { SC_(-0.650003612041473388671875e0), SC_(-0.1049832444670425873798449427248829256278e1), SC_(-0.477956108886575099597621504254337139212e0) }, + { SC_(-0.5634434223175048828125e0), SC_(-0.8288372954181591063099417140530721209296e0), SC_(-0.4307544676154126107123951950891833745657e0) }, + { SC_(-0.546193540096282958984375e0), SC_(-0.7900844716039173375586798387434829539395e0), SC_(-0.4208498682390169422105137923243733478616e0) }, + { SC_(-0.542549669742584228515625e0), SC_(-0.7820869679038185958797390511513816016257e0), SC_(-0.4187356706519199578716316143188015118402e0) }, + { SC_(-0.5222184658050537109375e0), SC_(-0.7386016923991178813343233368825674656574e0), SC_(-0.4067969136237976293436891521638796489665e0) }, + { SC_(-0.510332167148590087890625e0), SC_(-0.7140280098902130849529032452448458253718e0), SC_(-0.3997038529677125427667940816216463479375e0) }, + { SC_(-0.50135910511016845703125e0), SC_(-0.6958690918220109127943821843553816517932e0), SC_(-0.3942931192785328340465460021958309251731e0) }, + { SC_(-0.479341685771942138671875e0), SC_(-0.6526612791947966365578043302467499708984e0), SC_(-0.3808091201700817035685503987715593769588e0) }, + { SC_(-0.4362652301788330078125e0), SC_(-0.5731714043684679946812364099230074705554e0), SC_(-0.3535537538578334381043477595638178633635e0) }, + { SC_(-0.4033059179782867431640625e0), SC_(-0.5163507223485766856253687547437478575359e0), SC_(-0.3318923180936536087108170796894639170118e0) }, + { SC_(-0.3905523121356964111328125e0), SC_(-0.4952021616945213559322173628246423264147e0), SC_(-0.3233169689815286035820337522007644642142e0) }, + { SC_(-0.3101024627685546875e0), SC_(-0.3712121891835896680955152331639073308925e0), SC_(-0.2666281909314749260551669118328805822824e0) }, + { SC_(-0.2841587960720062255859375e0), SC_(-0.3342969188422780419049667231102322921458e0), SC_(-0.247352882189668478949423010818860745509e0) }, + { SC_(-0.268566131591796875e0), SC_(-0.3127484680657795755742977783527708289938e0), SC_(-0.2355251348015818742687440901815837983695e0) }, + { SC_(-0.19418840110301971435546875e0), SC_(-0.215905312065666655084617543044814851896e0), SC_(-0.1764972591721576227824907304661137322776e0) }, + { SC_(-0.14176605641841888427734375e0), SC_(-0.1528785551425763265780363302506293842933e0), SC_(-0.1321757453457543023426366655287893957346e0) }, + { SC_(-0.109534211456775665283203125e0), SC_(-0.1160105952462048156067755365883457898243e0), SC_(-0.1037484982319069072752933517880363955799e0) }, + { SC_(-0.2047410048544406890869140625e-1), SC_(-0.2068660038044094868521052319477265955827e-1), SC_(-0.2026592921724753704129022027337835687888e-1) }, + { SC_(0.1690093176520690576580818742513656616211e-8), SC_(0.1690093175092483105529122131518271037775e-8), SC_(0.16900931779488980500463190560092746436e-8) }, + { SC_(0.2114990849122477811761200428009033203125e-8), SC_(0.2114990846885884668978873262661703032735e-8), SC_(0.2114990851359070959273901626052243209537e-8) }, + { SC_(0.7099628440698779741069301962852478027344e-8), SC_(0.7099628415496417862364745346932718974223e-8), SC_(0.7099628465901141798701264063185361883662e-8) }, + { SC_(0.136718796284185373224318027496337890625e-7), SC_(0.1367187953495839188729947299064627330362e-7), SC_(0.1367187972187868403533999531964021065056e-7) }, + { SC_(0.1679341288252089725574478507041931152344e-7), SC_(0.1679341274151154071302093036120830402912e-7), SC_(0.1679341302353025616649699444201095417115e-7) }, + { SC_(0.586768322818898013792932033538818359375e-7), SC_(0.5867683056040454540164807679535005383825e-7), SC_(0.5867683400337515836824145241465956859382e-7) }, + { SC_(0.1140460881288163363933563232421875e-6), SC_(0.1140460816255617220976462903776019835232e-6), SC_(0.1140460946320716923598363683695123099251e-6) }, + { SC_(0.1455586016163579188287258148193359375e-6), SC_(0.1455585910227056945720521239406972268757e-6), SC_(0.1455586122100116850826593912609916845078e-6) }, + { SC_(0.38918477685001562349498271942138671875e-6), SC_(0.3891847011176400068545868550436683472421e-6), SC_(0.3891848525824207140259509650302544482884e-6) }, + { SC_(0.623782625552848912775516510009765625e-6), SC_(0.6237824310005478475318960793412787601785e-6), SC_(0.623782820105271336383228077398355607783e-6) }, + { SC_(0.104669607026153244078159332275390625e-5), SC_(0.1046695522475582933881286527214809459507e-5), SC_(0.1046696618048055313232628353357778906342e-5) }, + { SC_(0.2951089072666945867240428924560546875e-5), SC_(0.2951084718212155380639451770777340673208e-5), SC_(0.2951093427134586747271699561094046027716e-5) }, + { SC_(0.4877083483734168112277984619140625e-5), SC_(0.4877071590801182991613986686611799404767e-5), SC_(0.487709537672515613069814424540824650525e-5) }, + { SC_(0.9066634447663091123104095458984375e-5), SC_(0.9066593345981423108474522054350755440144e-5), SC_(0.9066675549717413905283549214899456610946e-5) }, + { SC_(0.2360353755648247897624969482421875e-4), SC_(0.2360325899737320048013584393963240356542e-4), SC_(0.236038161221667766684232806678163246188e-4) }, + { SC_(0.60817910707555711269378662109375e-4), SC_(0.6081606137340567462263175491115417378507e-4), SC_(0.6081976015418009724388783415958425809014e-4) }, + { SC_(0.119476739200763404369354248046875e-3), SC_(0.1194696024236052968763590872811035649465e-3), SC_(0.1194838768306258449523761123420162837989e-3) }, + { SC_(0.2437086659483611583709716796875e-3), SC_(0.2436789738154874267053728955508067082563e-3), SC_(0.2437383653179059006664060856490910639369e-3) }, + { SC_(0.47970912419259548187255859375e-3), SC_(0.4795941005544676642733520039561612799338e-3), SC_(0.4798242030152303995117671825532525519771e-3) }, + { SC_(0.960788573138415813446044921875e-3), SC_(0.9603273112237537137213831663159454349065e-3), SC_(0.9612502783347382477096533911074491600195e-3) }, + { SC_(0.113048148341476917266845703125e-2), SC_(0.112984297039538753162021050860817616211e-2), SC_(0.1131120718465376073328378699867756887911e-2) }, + { SC_(0.33707791008055210113525390625e-2), SC_(0.3365110759179022039875145678841719780479e-2), SC_(0.3376466565278741394700008076507908493073e-2) }, + { SC_(0.512778759002685546875e-2), SC_(0.5114685258802700303545874906083848033916e-2), SC_(0.5140957193498527263160102812012697907234e-2) }, + { SC_(0.7697627879679203033447265625e-2), SC_(0.7668152306886386648889951166330157951323e-2), SC_(0.7727330782215801339522867700900079915854e-2) }, + { SC_(0.154774188995361328125e-1), SC_(0.1535886535535876489145011045382406354476e-1), SC_(0.1559781448309931312470733745915557934013e-1) }, + { SC_(0.305807329714298248291015625e-1), SC_(0.3012246177452263928099228685195389251529e-1), SC_(0.3105312667138388983748287762435717112768e-1) }, + { SC_(0.346831791102886199951171875e-1), SC_(0.3409527271716101078966670703672108048896e-1), SC_(0.3529165481200088712490838501531684667149e-1) }, + { SC_(0.65634094178676605224609375e-1), SC_(0.6357001557994644965537090025497140391848e-1), SC_(0.6783591829384049159063415288088650400045e-1) }, + { SC_(0.6610882282257080078125e-1), SC_(0.6401540573272318085520396443445644947172e-1), SC_(0.6834297093791793596420077701374399081879e-1) }, + { SC_(0.9283597767353057861328125e-1), SC_(0.8877613176091369848730538080276748892544e-1), SC_(0.9728174180292914206798492307510621372797e-1) }, + { SC_(0.1853029727935791015625e0), SC_(0.1699984151517873986675151014366108622057e0), SC_(0.2035830378085867638230987836336350617284e0) }, + { SC_(0.195668697357177734375e0), SC_(0.1787056082557073958655865192859050644124e0), SC_(0.2161239335120153310995245962871550390859e0) }, + { SC_(0.218036949634552001953125e0), SC_(0.1972405051449346869157040783806052110702e0), SC_(0.2436330185556740271801313404522599276529e0) }, + { SC_(0.22476322948932647705078125e0), SC_(0.2027475432657783430097849833923015479242e0), SC_(0.2520262382028310304455135247279894706452e0) }, + { SC_(0.250229179859161376953125e0), SC_(0.2233268783961024315029665215194302402664e0), SC_(0.2843197231751691135236590716143900016849e0) }, + { SC_(0.253903329372406005859375e0), SC_(0.2262613494244882135168356599690803021814e0), SC_(0.2890471852440059179173797372107595021134e0) }, + { SC_(0.3161745369434356689453125e0), SC_(0.2747294509656754848973082105230889771257e0), SC_(0.3718696766716845552650417052219688730639e0) }, + { SC_(0.409090220928192138671875e0), SC_(0.3429442627531700751753321547062422000484e0), SC_(0.5054475372328648428694815984023805796901e0) }, + { SC_(0.41710007190704345703125e0), SC_(0.3486125805910782371810230966107318794672e0), SC_(0.5175543698964877990407235081110698982288e0) }, + { SC_(0.4173481762409210205078125e0), SC_(0.3487876441750920349995178382655357863143e0), SC_(0.5179309284235235985742545616245146385983e0) }, + { SC_(0.42039263248443603515625e0), SC_(0.3509333351432084595068912946293452186787e0), SC_(0.522559244493788135782100429719474184743e0) }, + { SC_(0.4406131207942962646484375e0), SC_(0.3650688012994099484177768785497336743499e0), SC_(0.5536595074987176176278695373720601072416e0) }, + { SC_(0.4500701129436492919921875e0), SC_(0.3716119090177188338876380950054248074284e0), SC_(0.5684221483289186932443765450666370231476e0) }, + { SC_(0.4690119922161102294921875e0), SC_(0.3845900606819792767555511238898325590012e0), SC_(0.5984141671678306664208145374987554621041e0) }, + { SC_(0.488781034946441650390625e0), SC_(0.3979576877817231446668587804772904526162e0), SC_(0.6303276957438828775174515106733850816524e0) }, + { SC_(0.52980291843414306640625e0), SC_(0.4251389156264805389990504406429844143619e0), SC_(0.6985975133709526468615664928080778563331e0) }, + { SC_(0.56810867786407470703125e0), SC_(0.4498702293886911216071551868503271338352e0), SC_(0.7649258494577443195036874224587751059599e0) }, + { SC_(0.57872617244720458984375e0), SC_(0.4566183018986474768197353974513078612477e0), SC_(0.7837647742172442075416378527651943088102e0) }, + { SC_(0.582029759883880615234375e0), SC_(0.4587086807259736626531803258754840111707e0), SC_(0.7896673415707786528734865994546559029663e0) }, + { SC_(0.607590496540069580078125e0), SC_(0.474736471992995596813856979079879927429e0), SC_(0.836002211172822800500580737750918478977e0) }, + { SC_(0.640033721923828125e0), SC_(0.4947168037733846594212322562172572984505e0), SC_(0.8965448333670257147748892521303229061693e0) }, + { SC_(0.640509545803070068359375e0), SC_(0.4950068922396821400142385044888446891867e0), SC_(0.8974474694176578931586020775970152155848e0) }, + { SC_(0.643289387226104736328125e0), SC_(0.4966999569758336894986723845165627033027e0), SC_(0.9027294105692233274199303070362746252986e0) }, + { SC_(0.64851474761962890625e0), SC_(0.4998747295737266888041967257469236722589e0), SC_(0.9126978792095101927158614842576974964632e0) }, + { SC_(0.650843918323516845703125e0), SC_(0.5012866228091318430397939496252397876475e0), SC_(0.9171580713331758702589264747154474769605e0) }, + { SC_(0.65477287769317626953125e0), SC_(0.5036637653893261974582119443232408393674e0), SC_(0.9247053242168904876365979871823094489023e0) }, + { SC_(0.65641486644744873046875e0), SC_(0.504655547804425337585747233639878779038e0), SC_(0.927868264760303541518755094801625468889e0) }, + { SC_(0.6588299274444580078125e0), SC_(0.5061124908504770714998094003973873746865e0), SC_(0.932529810907327764547265337859703076731e0) }, + { SC_(0.673553526401519775390625e0), SC_(0.5149492258613715166147831918156453824087e0), SC_(0.9611941077924732903931571711562687857294e0) }, + { SC_(0.69003379344940185546875e0), SC_(0.5247485248589687068613254590642295922543e0), SC_(0.9937829089064982966773652105234409046975e0) }, + { SC_(0.69504582881927490234375e0), SC_(0.5277097781183924897416903820415806504912e0), SC_(0.1003800903666412193968978978979482061619e1) } + } }; +#undef SC_ + diff --git a/test/log1p_expm1_test.cpp b/test/log1p_expm1_test.cpp index 9c3e23d6d..bbb823114 100644 --- a/test/log1p_expm1_test.cpp +++ b/test/log1p_expm1_test.cpp @@ -3,556 +3,119 @@ // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include #include #include #include #include +#include +#include "functor.hpp" -#include - -#ifdef BOOST_NO_STDC_NAMESPACE -namespace std{ using ::sqrt; using ::exp; } -#endif +#include "handle_test_result.hpp" // -// These test values were generated at 256-bit precision with NTL, -// we'll use these as a comparison for our own algorithms: +// DESCRIPTION: +// ~~~~~~~~~~~~ // -long double data[][3] = { - { 0.7071067811865475244008443621048490392848L, 0.5347999967395703705239932642507040249904L, 1.028114981647472451108126112746351175174L, }, - { -0.7071067811865475244008443621048490392848L, -1.227947177299515679941225385708880593066L, -0.5069313086047602121540426193848225247642L, }, - { 0.5L, 0.405465108108164381978013115464349136572L, 0.6487212707001281468486507878141635716538L, }, - { -0.5L, -0.6931471805599453094172321214581765680755L, -0.3934693402873665763962004650088195465581L, }, - { 0.3535533905932737622004221810524245196424L, 0.3027332756136080026565008168738916532429L, 0.4241190194809816004138284781974755046316L, }, - { -0.3535533905932737622004221810524245196424L, -0.4362646682381306258028444378052416278323L, -0.2978114986734404037618125202537819364955L, }, - { 0.25L, 0.2231435513142097557662950903098345033746L, 0.2840254166877414840734205680624364583363L, }, - { -0.25L, -0.2876820724517809274392190059938274315035L, -0.2211992169285951317548297330216793527032L, }, - { 0.1767766952966368811002110905262122598212L, 0.1627790866561079067978577664745092478057L, 0.1933645794479495947956947190066751660075L, }, - { -0.1767766952966368811002110905262122598212L, -0.1945277849706882079548540492230348777333L, -0.1620331144212442112773768997051282549751L, }, - { 0.125L, 0.1177830356563834545387941094705217050685L, 0.1331484530668263168290072278117938725655L, }, - { -0.125L, -0.1335313926245226231463436209313499745894L, -0.117503097415404597135107856770949263778L, }, - { 0.0883883476483184405501055452631061299106L, 0.08469802192359444824992033285217108168932L, 0.09241227540153062617063135584671815396877L, }, - { -0.0883883476483184405501055452631061299106L, -0.09254119938462034112310437534311466334391L, -0.08459468781377732889540834505145255847266L, }, - { 0.0625L, 0.0606246218164348425806061320404202632862L, 0.06449445891785942956339059464288967310073L, }, - { -0.0625L, -0.06453852113757117167292391568399292812891L, -0.06058693718652421388028917537769491547532L, }, - { 0.0441941738241592202750527726315530649553L, 0.0432454624194302551610854640871481968471L, 0.04518528280947901327000081260336002430674L, }, - { -0.0441941738241592202750527726315530649553L, -0.04520049725523360571871295632901500898476L, -0.04323183989734343213613354147207468639883L, }, - { 0.03125L, 0.0307716586667536883710282075967721640917L, 0.0317434074991026709387478152815071441945L, }, - { -0.03125L, -0.03174869831458030115699628274852562992756L, -0.03076676552365591815189080675364721639527L, }, - { 0.02209708691207961013752638631577653247765L, 0.02185648424813694627588486704954425304883L, 0.02234303578078870447841893477675632033383L, }, - { -0.02209708691207961013752638631577653247765L, -0.02234488474624582074086983060944116403229L, -0.02185473466225040063461756538971286083712L, }, - { 0.015625L, 0.01550418653596525415085404604244683587787L, 0.01574770858668574745853507208235174890672L, }, - { -0.015625L, -0.01574835696813916860754951146082826952093L, -0.01550356299459159401301117030297963029214L, }, - { 0.01104854345603980506876319315788826623883L, 0.01098795417351052684893633616419361769653L, 0.01110980401773807767277088699717081730887L, }, - { -0.01104854345603980506876319315788826623883L, -0.01111003193719750909051920695450559324905L, -0.0109877324634695920927755509825266486829L, }, - { 0.0078125L, 0.007782140442054948947462900061136763678126L, 0.007843097206447977693453559760123579193392L, }, - { -0.0078125L, -0.007843177461025892873184042490943581654592L, -0.00778206173975648789406277388638216992911L, }, - { 0.005524271728019902534381596578944133119413L, 0.005509068902949034570040757911345564446908L, 0.005539558653829430569890102084787436958606L, }, - { -0.005524271728019902534381596578944133119413L, -0.00553958694674479599776921231398085523465L, -0.005509040998094137069364339639027839483272L, }, - { 0.00390625L, 0.003898640415657323013937343095842907010724L, 0.003913889338347573443609603903460281898814L, }, - { -0.00390625L, -0.003913899321136329092317783643572664842706L, -0.003898630529882509937135338054830955713597L, }, - { 0.002762135864009951267190798289472066559706L, 0.002758328176699244507992500461404507081665L, 0.002765954075939611809020032526494603236975L, }, - { -0.002762135864009951267190798289472066559706L, -0.002765957600334472995309858879390478447378L, -0.002758324676557722165983108723111282889863L, }, - { 0.001953125L, 0.00195122013126174943967404953184153850035L, 0.001955033591002812046518898047477215867356L, }, - { -0.001953125L, -0.001955034835803350557627492241866812137664L, -0.001951218892524527289957340917326404744062L, }, - { 0.001381067932004975633595399144736033279853L, 0.001380115134839422362840066413196608682497L, 0.001382022045502678201141870910789095246896L, }, - { -0.001381067932004975633595399144736033279853L, -0.001382022485291226579353866252268409285565L, -0.001380114696566700781276188886360328730002L, }, - { 0.0009765625L, 0.0009760859730554588959608249080171866726118L, 0.0009770394924165352428452926116065064658516L, }, - { -0.0009765625L, -0.000977039647826612785968075151753465835865L, -0.0009760858180243377652882103896705696807979L, }, - { 0.0006905339660024878167976995723680166399266L, 0.0006902956571239922163465924178424595489941L, 0.0006907724394697735895620855250217767118257L, }, - { -0.0006905339660024878167976995723680166399266L, -0.0006907724943958822152082937884673220890625L, -0.0006902956022926226579739822473659270196051L, }, - { 0.00048828125L, 0.0004881620795013511885370496926454098503177L, 0.0004884004786944731261736238071633537881055L, }, - { -0.00048828125L, -0.0004884004981088744649849635598969109834608L, -0.0004881620601106346120642438969970786650047L, }, - { 0.0003452669830012439083988497861840083199633L, 0.0003452073920725940347605594851408457654352L, 0.0003453265945064500836804861194113777618491L, }, - { -0.0003452669830012439083988497861840083199633L, -0.0003453266013692502439328491689895266497932L, -0.0003452073852157150645328468804957180492811L, }, - { 0.000244140625L, 0.0002441108275273627091604790858234536994612L, 0.0002441704297478549370052339241357737575196L, }, - { -0.000244140625L, -0.0002441704321739144566954654183814336430665L, -0.0002441108251027834869064123317332192226443L, }, - { 0.0001726334915006219541994248930920041599816L, 0.0001726185920541657488047052564217192486562L, 0.0001726483935193326386701093624723297495011L, }, - { -0.0001726334915006219541994248930920041599816L, -0.0001726483943769975333358785791023362275292L, -0.0001726185911968709284892274915373687749247L, }, - { 0.0001220703125L, 0.0001220628625256773716230553671622032006662L, 0.0001220777633837710765035196704053169651876L, }, - { -0.0001220703125L, -0.0001220777636869822415828707903119755525239L, -0.0001220628622225587251301833935672790920603L, }, - { 0.8631674575031097709971244654600207999082e-4L, 0.8631302067436859538170634567406786112601e-4L, 0.8632047114779673053115205017424336944456e-4L, }, - { -0.8631674575031097709971244654600207999082e-4L, -0.8632047125499327478558483802377432851254e-4L, -0.8631302056719518077375662982669623892259e-4L, }, - { 0.6103515625e-4L, 0.6103329368063852491315878964896399244278e-4L, 0.610370189330454217791205985471093033817e-4L, }, - { -0.6103515625e-4L, -0.6103701897094392572114242980681797646601e-4L, -0.6103329364274580338274063706796778431152e-4L, }, - { 0.4315837287515548854985622327300103999541e-4L, 0.4315744157937625036775176424278410274829e-4L, 0.4315930421112837090401086653281340081162e-4L, }, - { -0.4315837287515548854985622327300103999541e-4L, -0.4315930422452721604826114516606004744788e-4L, -0.4315744156597885082640026911399617719788e-4L, }, - { 0.30517578125e-4L, 0.3051711247318637856906951416899468124305e-4L, 0.3051804379102429545128481254124317032922e-4L, }, - { -0.30517578125e-4L, -0.3051804379576142772845440263529078774196e-4L, -0.3051711246844960769262435293040988383306e-4L, }, - { 0.2157918643757774427492811163650051999771e-4L, 0.2157895361028356677465179910857365631679e-4L, 0.2157941926989617246887680913732626816569e-4L, }, - { -0.2157918643757774427492811163650051999771e-4L, -0.2157941927157098293412689381708235824685e-4L, -0.2157895360860884665958278826510182396057e-4L, }, - { 0.152587890625e-4L, 0.1525867264836239740575732513488881988266e-4L, 0.1525890547841394814004262248066173018701e-4L, }, - { -0.152587890625e-4L, -0.152589054790060783804405477297578319824e-4L, -0.1525867264777028975290466417266610381266e-4L, }, - { 0.1078959321878887213746405581825025999885e-4L, 0.1078953501154664660426995857578938351957e-4L, 0.1078965142665913183071896911252005879737e-4L, }, - { -0.1078959321878887213746405581825025999885e-4L, -0.1078965142686848031534799026109936625941e-4L, -0.1078953501133730376652725297740371278837e-4L, }, - { 0.762939453125e-5L, 0.7629365427567572155885296849132278805619e-5L, 0.7629423635154471743184330338220061308624e-5L, }, - { -0.762939453125e-5L, -0.7629423635228487317358417985971365713551e-5L, -0.7629365427493557993432788023738794879446e-5L, }, - { 0.5394796609394436068732027909125129999427e-5L, 0.5394782057531543905412357533557238337288e-5L, 0.5394811161335832678521641682790705055058e-5L, }, - { -0.5394796609394436068732027909125129999427e-5L, -0.5394811161362001062632444450174708967681e-5L, -0.5394782057505375874231949463613865956897e-5L, }, - { 0.3814697265625e-5L, 0.3814689989685889480711784976833932293351e-5L, 0.3814704541591866050787712890332329861816e-5L, }, - { -0.3814697265625e-5L, -0.3814704541601117953442710025273637313909e-5L, -0.3814689989676637666289386515234179775918e-5L, }, - { 0.2697398304697218034366013954562564999713e-5L, 0.2697394666724952981329383449389929775742e-5L, 0.2697401942679296154240372969560137048828e-5L, }, - { -0.2697398304697218034366013954562564999713e-5L, -0.2697401942682567191225066371527710701254e-5L, -0.2697394666721681966402839715630419488434e-5L, }, - { 0.19073486328125e-5L, 0.1907346813825409415469442511204082252649e-5L, 0.1907350451803060028725247653539392997757e-5L, }, - { -0.19073486328125e-5L, -0.1907350451804216513799839071800603067824e-5L, -0.1907346813824252935909388509978972352794e-5L, }, - { 0.1348699152348609017183006977281282499857e-5L, 0.1348698242854724999916487141692522749195e-5L, 0.134870006184371966849355726468816803105e-5L, }, - { -0.1348699152348609017183006977281282499857e-5L, -0.1348700061844128547427324196878709275963e-5L, -0.134869824285431612236135456375901708795e-5L, }, - { 0.95367431640625e-6L, 0.9536738616591882339084155149633361436031e-6L, 0.9536747711537454467882495568742836518855e-6L, }, - { -0.95367431640625e-6L, -0.953674771153890007250243736279163253167e-6L, -0.9536738616590436737910799241224667558785e-6L, }, - { 0.6743495761743045085915034886406412499283e-6L, 0.6743493488007312848688574744255030867349e-6L, 0.6743498035480310616127355457459842044318e-6L, }, - { -0.6743495761743045085915034886406412499283e-6L, -0.6743498035480821714363740085141941426098e-6L, -0.6743493488006801751313836587982646166511e-6L, }, - { 0.476837158203125e-6L, 0.476837044516323418443461751960488410315e-6L, 0.4768372718899807916543919475044056566776e-6L, }, - { -0.476837158203125e-6L, -0.4768372718899988617013706248625400684693e-6L, -0.476837044516305348418024236387592979885e-6L, }, - { 0.3371747880871522542957517443203206249642e-6L, 0.3371747312437461709296447293515154324249e-6L, 0.3371748449305775038268746571498812558228e-6L, }, - { -0.3371747880871522542957517443203206249642e-6L, -0.3371748449305838925521368172669692634241e-6L, -0.3371747312437397822097678596807366844562e-6L, }, - { 0.2384185791015625e-6L, 0.2384185506798575871042367946772990434454e-6L, 0.2384186075232741891586680785801190380695e-6L, }, - { -0.2384185791015625e-6L, -0.2384186075232764479138672515011331430966e-6L, -0.2384185506798553283503839443678621926131e-6L, }, - { 0.1685873940435761271478758721601603124821e-6L, 0.168587379832723009126312584887843306015e-6L, 0.168587408254431640940234436906404041751e-6L, }, - { -0.1685873940435761271478758721601603124821e-6L, -0.1685874082544324395307239165162871748373e-6L, -0.1685873798327222105361596859308544788882e-6L, }, - { 0.11920928955078125e-6L, 0.1192092824453544570875791570625307160609e-6L, 0.1192092966562088899453260246612120070545e-6L, }, - { -0.11920928955078125e-6L, -0.1192092966562091722896838486808843580911e-6L, -0.1192092824453541747433054782060819405655e-6L, }, - { 0.8429369702178806357393793608008015624104e-7L, 0.8429369346907458442100468226515995161268e-7L, 0.8429370057450184219823111772198430837325e-7L, }, - { -0.8429369702178806357393793608008015624104e-7L, -0.8429370057450194202203178452536969989128e-7L, -0.8429369346907448459722505175258045386137e-7L, }, - { 0.59604644775390625e-7L, 0.5960464299903385618582531773708049930377e-7L, 0.5960464655174749969329045951426788010322e-7L, }, - { -0.59604644775390625e-7L, -0.5960464655174753498633255797994360530379e-7L, -0.5960464299903382089278847834410624753006e-7L, }, - { 0.4214684851089403178696896804004007812052e-7L, 0.4214684762271563704279048400454781112143e-7L, 0.4214684939907246396506810043790990273791e-7L, }, - { -0.4214684851089403178696896804004007812052e-7L, -0.4214684939907247644304252640416892209222e-7L, -0.4214684762271562456481737280646416012198e-7L, }, - { 0.298023223876953125e-7L, 0.2980232194360611147319705384762092811637e-7L, 0.2980232283178452676169258265480484667506e-7L, }, - { -0.298023223876953125e-7L, -0.2980232283178453117332268061697887309516e-7L, -0.2980232194360610706156728457749074378475e-7L, }, - { 0.2107342425544701589348448402002003906026e-7L, 0.2107342403340241408794656877702442158955e-7L, 0.2107342447749162237826252139481573399431e-7L, }, - { -0.2107342425544701589348448402002003906026e-7L, -0.2107342447749162393800928355409024145238e-7L, -0.2107342403340241252819988879076087465356e-7L, }, - { 0.1490116119384765625e-7L, 0.1490116108282535489039181703572223587795e-7L, 0.1490116130486995926396939779870689685877e-7L, }, - { -0.1490116119384765625e-7L, -0.1490116130486995981542314977235185765273e-7L, -0.1490116108282535433893808560533001521451e-7L, }, - { 0.1053671212772350794674224201001001953013e-7L, 0.105367120722123571054210921755326087386e-7L, 0.1053671218323465937296840967886895134902e-7L, }, - { -0.1053671212772350794674224201001001953013e-7L, -0.1053671218323465956793675238087159758683e-7L, -0.1053671207221235691045275460934314753341e-7L, }, - { 0.7450580596923828125e-8L, 0.7450580569168252647234521144541847613178e-8L, 0.7450580624679403809560631351738427758694e-8L, }, - { -0.7450580596923828125e-8L, -0.7450580624679403878492349706467386527508e-8L, -0.7450580569168252578302804073766185102522e-8L, }, - { 0.5268356063861753973371121005005009765065e-8L, 0.5268356049983966214298749090640627494123e-8L, 0.5268356077739541805556620309161241660075e-8L, }, - { -0.5268356063861753973371121005005009765065e-8L, -0.5268356077739541829927662986417408073841e-8L, -0.5268356049983966189927706734372785144896e-8L, }, - { 0.37252902984619140625e-8L, 0.3725290291523020175825701002392130168065e-8L, 0.372529030540080797502369309976644431307e-8L, }, - { -0.37252902984619140625e-8L, -0.3725290305400807983640157853984023238563e-8L, -0.3725290291523020167209236328421632258708e-8L, }, - { 0.2634178031930876986685560502502504882532e-8L, 0.2634178028461430040824706930832094693594e-8L, 0.2634178035400323941685555007927781322226e-8L, }, - { -0.2634178031930876986685560502502504882532e-8L, -0.2634178035400323944731935332553916924003e-8L, -0.2634178028461430037778326626267729345852e-8L, }, - { 0.186264514923095703125e-8L, 0.1862645147496233557427309081102319554965e-8L, 0.1862645150965680508303865184175223522918e-8L, }, - { -0.186264514923095703125e-8L, -0.1862645150965680509380923275944699593959e-8L, -0.1862645147496233556350250994348286047433e-8L, }, - { 0.1317089015965438493342780251251252441266e-8L, 0.1317089015098076756115971781941786429449e-8L, 0.1317089016832800231711981337907007052389e-8L, }, - { -0.1317089015965438493342780251251252441266e-8L, -0.1317089016832800232092778877858343679894e-8L, -0.1317089015098076755735174243244310442822e-8L, }, - { 0.931322574615478515625e-9L, 0.9313225741817976469000627485243784799078e-9L, 0.9313225750491593847538340347920469844993e-9L, }, - { -0.931322574615478515625e-9L, -0.9313225750491593848884662961064989128669e-9L, -0.9313225741817976467654304875233917117595e-9L, }, - { 0.6585445079827192466713901256256262206331e-9L, 0.6585445077658788122694886236082174630276e-9L, 0.6585445081995596812160907048505041981019e-9L, }, - { -0.6585445079827192466713901256256262206331e-9L, -0.6585445081995596812636903973052381314413e-9L, -0.658544507765878812221888931231849819743e-9L, }, - { 0.4656612873077392578125e-9L, 0.4656612871993190405976076218769296134401e-9L, 0.465661287416159475077879476047419355854e-9L, }, - { -0.4656612873077392578125e-9L, -0.4656612874161594750947085087019300606305e-9L, -0.4656612871993190405807785892420104811773e-9L, }, - { 0.3292722539913596233356950628128131103166e-9L, 0.3292722539371495147233197642133894314689e-9L, 0.329272254045569731965920246065619388209e-9L, }, - { -0.3292722539913596233356950628128131103166e-9L, -0.32927225404556973197187020762001218331e-9L, -0.3292722539371495147173698026638945294963e-9L, }, - { 0.23283064365386962890625e-9L, 0.232830643626764574598319647310257725638e-9L, 0.2328306436809746832204912399308981321644e-9L, }, - { -0.23283064365386962890625e-9L, -0.23283064368097468322259486901209973362e-9L, -0.2328306436267645745962160182302805974645e-9L, }, - { 0.1646361269956798116678475314064065551583e-9L, 0.1646361269821272845132662163691156862891e-9L, 0.1646361270092323388246600820255233080682e-9L, }, - { -0.1646361269956798116678475314064065551583e-9L, -0.1646361270092323388254038272196693482955e-9L, -0.1646361269821272845125224711752757643824e-9L, }, - { 0.116415321826934814453125e-9L, 0.1164153218201585508756165045575548434501e-9L, 0.1164153218337110780314223563476279035653e-9L, }, - { -0.116415321826934814453125e-9L, -0.1164153218337110780316853099827398389571e-9L, -0.1164153218201585508753535509225194376384e-9L, }, - { 0.8231806349783990583392376570320327757914e-10L, 0.8231806349445177404509250064541675340615e-10L, 0.8231806350122803762303393520872760345474e-10L, }, - { -0.8231806349783990583392376570320327757914e-10L, -0.8231806350122803762312690335798629228563e-10L, -0.8231806349445177404499953249617719697029e-10L, }, - { 0.582076609134674072265625e-10L, 0.5820766091177334133211963773062890278984e-10L, 0.5820766091516147312110396988252133213646e-10L, }, - { -0.582076609134674072265625e-10L, -0.5820766091516147312113683908690793251107e-10L, -0.5820766091177334133208676852624708551399e-10L, }, - { 0.4115903174891995291696188285160163878957e-10L, 0.4115903174807291996973082454984487948242e-10L, 0.4115903174976698586422780420932622119689e-10L, }, - { -0.4115903174891995291696188285160163878957e-10L, -0.4115903174976698586423942522798295941341e-10L, -0.4115903174807291996971920353118933704059e-10L, }, - { 0.2910383045673370361328125e-10L, 0.2910383045631018713966231713156171158976e-10L, 0.2910383045715722008691250882008221724786e-10L, }, - { -0.2910383045673370361328125e-10L, -0.2910383045715722008691661747063039282285e-10L, -0.2910383045631018713965820848101383495845e-10L, }, - { 0.2057951587445997645848094142580081939479e-10L, 0.2057951587424821822167027159569772901036e-10L, 0.2057951587467173469529596913789992503469e-10L, }, - { -0.2057951587445997645848094142580081939479e-10L, -0.205795158746717346952974217652319799438e-10L, -0.2057951587424821822166881896836574883717e-10L, }, - { 0.14551915228366851806640625e-10L, 0.1455191522826097268823486462025345500282e-10L, 0.1455191522847273092504792612370204544388e-10L, }, - { -0.14551915228366851806640625e-10L, -0.1455191522847273092504843970502055804876e-10L, -0.1455191522826097268823435103893496108191e-10L, }, - { 0.1028975793722998822924047071290040969739e-10L, 0.1028975793717704867003744009854164112379e-10L, 0.1028975793728292778844404606250868251343e-10L, }, - { -0.1028975793722998822924047071290040969739e-10L, -0.1028975793728292778844422764092518704157e-10L, -0.1028975793717704867003725852012514126664e-10L, }, - { 0.72759576141834259033203125e-11L, 0.7275957614156956123718744009733740036928e-11L, 0.7275957614209895682922073583260698102783e-11L, }, - { -0.72759576141834259033203125e-11L, -0.7275957614209895682922137780925511594519e-11L, -0.7275957614156956123718679812068927712941e-11L, }, - { 0.5144878968614994114620235356450204848696e-11L, 0.5144878968601759224819432308256387682622e-11L, 0.5144878968628229004421106496550210191044e-11L, }, - { -0.5144878968614994114620235356450204848696e-11L, -0.5144878968628229004421129193852273111093e-11L, -0.514487896860175922481940961095432505451e-11L, }, - { 0.363797880709171295166015625e-11L, 0.3637978807085095506759748078017231913638e-11L, 0.3637978807098330396560588496107072890318e-11L, }, - { -0.363797880709171295166015625e-11L, -0.3637978807098330396560596520815174540293e-11L, -0.3637978807085095506759740053309130336648e-11L, }, - { 0.2572439484307497057310117678225102424348e-11L, 0.2572439484304188334859911241851132472152e-11L, 0.2572439484310805779760332626087345907701e-11L, }, - { -0.2572439484307497057310117678225102424348e-11L, -0.2572439484310805779760335463250103763584e-11L, -0.2572439484304188334859908404688374634515e-11L, }, - { 0.1818989403545856475830078125e-11L, 0.181898940354420211460497407582728258325e-11L, 0.1818989403547510837055185183438255519526e-11L, }, - { -0.1818989403545856475830078125e-11L, -0.1818989403547510837055186186526768223492e-11L, -0.1818989403544202114604973072738769883845e-11L, }, - { 0.1286219742153748528655058839112551212174e-11L, 0.1286219742152921348042506520728369264488e-11L, 0.1286219742154575709267612221432767351825e-11L, }, - { -0.1286219742153748528655058839112551212174e-11L, -0.128621974215457570926761257607811208324e-11L, -0.1286219742152921348042506166083024534213e-11L, }, - { 0.9094947017729282379150390625e-12L, 0.9094947017725146476087627994346924709042e-12L, 0.9094947017733418282213157017234997920852e-12L, }, - { -0.9094947017729282379150390625e-12L, -0.9094947017733418282213158271095638799384e-12L, -0.9094947017725146476087626740486283833361e-12L, }, - { 0.643109871076874264327529419556275606087e-12L, 0.6431098710766674691743912512988939365825e-12L, 0.6431098710770810594806677208056615496228e-12L, }, - { -0.643109871076874264327529419556275606087e-12L, -0.6431098710770810594806677651363296410141e-12L, -0.6431098710766674691743912069682258452625e-12L, }, - { 0.45474735088646411895751953125e-12L, 0.4547473508863607213809504341371570958305e-12L, 0.4547473508865675165340886753826169370521e-12L, }, - { -0.45474735088646411895751953125e-12L, -0.4547473508865675165340886910558749480249e-12L, -0.4547473508863607213809504184638990848755e-12L, }, - { 0.3215549355384371321637647097781378030435e-12L, 0.3215549355383854333754801566311253628365e-12L, 0.3215549355384888309520492795491507775067e-12L, }, - { -0.3215549355384371321637647097781378030435e-12L, -0.3215549355384888309520492850904842889284e-12L, -0.3215549355383854333754801510897918514193e-12L, }, - { 0.227373675443232059478759765625e-12L, 0.2273736754432062100846174874284747712187e-12L, 0.2273736754432579088729020496989969828922e-12L, }, - { -0.227373675443232059478759765625e-12L, -0.2273736754432579088729020516581542342633e-12L, -0.2273736754432062100846174854693175198487e-12L, }, - { 0.1607774677692185660818823548890689015218e-12L, 0.1607774677692056413848112152169824136156e-12L, 0.16077746776923149077895349663915545621e-12L, }, - { -0.1607774677692185660818823548890689015218e-12L, -0.1607774677692314907789534973318221451376e-12L, -0.1607774677692056413848112145243157246883e-12L, }, - { 0.1136868377216160297393798828125e-12L, 0.1136868377216095673908443127735793799622e-12L, 0.1136868377216224920879154535861045893017e-12L, }, - { -0.1136868377216160297393798828125e-12L, -0.1136868377216224920879154538309992457231e-12L, -0.1136868377216095673908443125286847235409e-12L, }, - { 0.8038873388460928304094117744453445076088e-13L, 0.8038873388460605186667339235334615655252e-13L, 0.8038873388461251421520896279547275331701e-13L, }, - { -0.8038873388460928304094117744453445076088e-13L, -0.8038873388461251421520896288205608943295e-13L, -0.803887338846060518666733922667628204366e-13L, }, - { 0.5684341886080801486968994140625e-13L, 0.5684341886080639928255604883529618088522e-13L, 0.5684341886080963045682383406903931527277e-13L, }, - { -0.5684341886080801486968994140625e-13L, -0.5684341886080963045682383409965114732543e-13L, -0.5684341886080639928255604880468434883256e-13L, }, - { 0.4019436694230464152047058872226722538044e-13L, 0.4019436694230383372690364242782431779937e-13L, 0.4019436694230544931403753504917888400498e-13L, }, - { -0.4019436694230464152047058872226722538044e-13L, -0.4019436694230544931403753506000180101947e-13L, -0.4019436694230383372690364241700140078488e-13L, }, - { 0.28421709430404007434844970703125e-13L, 0.2842170943040360353806149755273358720814e-13L, 0.2842170943040441133162844386499584981161e-13L, }, - { -0.28421709430404007434844970703125e-13L, -0.2842170943040441133162844386882232881819e-13L, -0.2842170943040360353806149754890710820156e-13L, }, - { 0.2009718347115232076023529436113361269022e-13L, 0.2009718347115211881184355778481715654133e-13L, 0.2009718347115252270862703094150866271954e-13L, }, - { -0.2009718347115232076023529436113361269022e-13L, -0.2009718347115252270862703094286152734636e-13L, -0.2009718347115211881184355778346429191452e-13L, }, - { 0.142108547152020037174224853515625e-13L, 0.1421085471520190274322661706300802705039e-13L, 0.1421085471520210469161835364155190257708e-13L, }, - { -0.142108547152020037174224853515625e-13L, -0.142108547152021046916183536420302124529e-13L, -0.1421085471520190274322661706252971717457e-13L, }, - { 0.1004859173557616038011764718056680634511e-13L, 0.1004859173557610989301971303614947615118e-13L, 0.1004859173557621086721558132549146077409e-13L, }, - { -0.1004859173557616038011764718056680634511e-13L, -0.1004859173557621086721558132566056885244e-13L, -0.1004859173557610989301971303598036807283e-13L, }, - { 0.710542735760100185871124267578125e-14L, 0.7105427357600976615162275603523054293642e-14L, 0.7105427357601027102260209748218811909792e-14L, }, - { -0.710542735760100185871124267578125e-14L, -0.710542735760102710226020974827860064427e-14L, -0.7105427357600976615162275603463265559164e-14L, }, - { 0.5024295867788080190058823590283403172555e-14L, 0.5024295867788067568284340054136793604486e-14L, 0.5024295867788092811833307126493428270006e-14L, }, - { -0.5024295867788080190058823590283403172555e-14L, -0.50242958677880928118333071265145667798e-14L, -0.5024295867788067568284340054115655094692e-14L, }, - { 0.3552713678800500929355621337890625e-14L, 0.3552713678800494618468379569811128889791e-14L, 0.3552713678800507240242863105992541885638e-14L, }, - { -0.3552713678800500929355621337890625e-14L, -0.3552713678800507240242863106000015477448e-14L, -0.3552713678800494618468379569803655297981e-14L, }, - { 0.2512147933894040095029411795141701586277e-14L, 0.2512147933894036939585790911099764566812e-14L, 0.2512147933894043250473032679191565546916e-14L, }, - { -0.2512147933894040095029411795141701586277e-14L, -0.251214793389404325047303267919420786064e-14L, -0.2512147933894036939585790911097122253087e-14L, }, - { 0.17763568394002504646778106689453125e-14L, 0.1776356839400248886956000226923570074495e-14L, 0.1776356839400252042399621110969857522433e-14L, }, - { -0.17763568394002504646778106689453125e-14L, -0.177635683940025204239962111097079172141e-14L, -0.1776356839400248886956000226922635875519e-14L, }, - { 0.1256073966947020047514705897570850793139e-14L, 0.1256073966947019258653800676559705959841e-14L, 0.1256073966947020836375611118582986494083e-14L, }, - { -0.1256073966947020047514705897570850793139e-14L, -0.1256073966947020836375611118583316783298e-14L, -0.1256073966947019258653800676559375670626e-14L, }, - { 0.88817841970012523233890533447265625e-15L, 0.8881784197001248379084527239669870938798e-15L, 0.8881784197001256267693579449786757307363e-15L, }, - { -0.88817841970012523233890533447265625e-15L, -0.8881784197001256267693579449787925056083e-15L, -0.8881784197001248379084527239668703190077e-15L, }, - { 0.6280369834735100237573529487854253965694e-15L, 0.6280369834735098265421266435325566159411e-15L, 0.6280369834735102209725792540384180356535e-15L, }, - { -0.6280369834735100237573529487854253965694e-15L, -0.6280369834735102209725792540384593218054e-15L, -0.6280369834735098265421266435325153297892e-15L, }, - { 0.444089209850062616169452667236328125e-15L, 0.4440892098500625175618395146098816422519e-15L, 0.4440892098500627147770658198628183983251e-15L, }, - { -0.444089209850062616169452667236328125e-15L, -0.4440892098500627147770658198628329951841e-15L, -0.4440892098500625175618395146098670453929e-15L, }, - { 0.3140184917367550118786764743927126982847e-15L, 0.3140184917367549625748698980794851815896e-15L, 0.3140184917367550611824830507059556972867e-15L, }, - { -0.3140184917367550118786764743927126982847e-15L, -0.3140184917367550611824830507059608580557e-15L, -0.3140184917367549625748698980794800208206e-15L, }, - { 0.2220446049250313080847263336181640625e-15L, 0.2220446049250312834328230454615487925982e-15L, 0.2220446049250313327366296217747848062239e-15L, }, - { -0.2220446049250313080847263336181640625e-15L, -0.2220446049250313327366296217747866308313e-15L, -0.2220446049250312834328230454615469679909e-15L, }, - { 0.1570092458683775059393382371963563491423e-15L, 0.1570092458683774936133865931180481797763e-15L, 0.1570092458683775182652898812746664537967e-15L, }, - { -0.1570092458683775059393382371963563491423e-15L, -0.1570092458683775182652898812746670988928e-15L, -0.1570092458683774936133865931180475346802e-15L, }, - { 0.11102230246251565404236316680908203125e-15L, 0.1110223024625156478793873447699277576227e-15L, 0.1110223024625156602053389888482369891051e-15L, }, - { -0.11102230246251565404236316680908203125e-15L, -0.111022302462515660205338988848237217181e-15L, -0.1110223024625156478793873447699275295468e-15L, }, - { 0.7850462293418875296966911859817817457117e-16L, 0.7850462293418874988818120757860097095564e-16L, 0.7850462293418875605115702961775562009775e-16L, }, - { -0.7850462293418875296966911859817817457117e-16L, -0.7850462293418875605115702961775570073477e-16L, -0.7850462293418874988818120757860089031862e-16L, }, - { 0.55511151231257827021181583404541015625e-16L, 0.555111512312578254804376278947523901992e-16L, 0.5551115123125782856192553891432972657927e-16L, }, - { -0.55511151231257827021181583404541015625e-16L, -0.5551115123125782856192553891432975508876e-16L, -0.5551115123125782548043762789475236168971e-16L, }, - { 0.3925231146709437648483455929908908728559e-16L, 0.3925231146709437571446258154419476622245e-16L, 0.392523114670943772552065370539834385876e-16L, }, - { -0.3925231146709437648483455929908908728559e-16L, -0.3925231146709437725520653705398344866723e-16L, -0.3925231146709437571446258154419475614282e-16L, }, - { 0.277555756156289135105907917022705078125e-16L, 0.2775557561562891312540480282482334432868e-16L, 0.2775557561562891389577678057971768198738e-16L, }, - { -0.277555756156289135105907917022705078125e-16L, -0.2775557561562891389577678057971768555107e-16L, -0.2775557561562891312540480282482334076499e-16L, }, - { 0.1962615573354718824241727964954454364279e-16L, 0.196261557335471880498242852108209608571e-16L, 0.1962615573354718843501027408826813020834e-16L, }, - { -0.1962615573354718824241727964954454364279e-16L, -0.196261557335471884350102740882681314683e-16L, -0.1962615573354718804982428521082095959715e-16L, }, - { 0.1387778780781445675529539585113525390625e-16L, 0.1387778780781445665899889863177346214437e-16L, 0.1387778780781445685159189307049704700451e-16L, }, - { -0.1387778780781445675529539585113525390625e-16L, -0.1387778780781445685159189307049704744997e-16L, -0.1387778780781445665899889863177346169891e-16L, }, - { 0.9813077866773594121208639824772271821396e-17L, 0.9813077866773594073060391215091375809985e-17L, 0.981307786677359416935688843445316830529e-17L, }, - { -0.9813077866773594121208639824772271821396e-17L, -0.9813077866773594169356888434453168462784e-17L, -0.9813077866773594073060391215091375652491e-17L, }, - { 0.6938893903907228377647697925567626953125e-17L, 0.693889390390722835357357362072717890129e-17L, 0.6938893903907228401721822230408075172007e-17L, }, - { -0.6938893903907228377647697925567626953125e-17L, -0.693889390390722840172182223040807522769e-17L, -0.6938893903907228353573573620727178845608e-17L, }, - { 0.4906538933386797060604319912386135910698e-17L, 0.4906538933386797048567257759965911868472e-17L, 0.4906538933386797072641382064806360011985e-17L, }, - { -0.4906538933386797060604319912386135910698e-17L, -0.4906538933386797072641382064806360031672e-17L, -0.4906538933386797048567257759965911848785e-17L, }, - { 0.3469446951953614188823848962783813476563e-17L, 0.3469446951953614182805317886573701449683e-17L, 0.3469446951953614194842380038993925524323e-17L, }, - { -0.3469446951953614188823848962783813476563e-17L, -0.3469446951953614194842380038993925531283e-17L, -0.3469446951953614182805317886573701442723e-17L, }, - { 0.2453269466693398530302159956193067955349e-17L, 0.2453269466693398527292894418088011939871e-17L, 0.245326946669339853331142549429812397821e-17L, }, - { -0.2453269466693398530302159956193067955349e-17L, -0.2453269466693398533311425494298123980671e-17L, -0.245326946669339852729289441808801193741e-17L, }, - { 0.1734723475976807094411924481391906738281e-17L, 0.1734723475976807092907291712339378729821e-17L, 0.1734723475976807095916557250444434749351e-17L, }, - { -0.1734723475976807094411924481391906738281e-17L, -0.1734723475976807095916557250444434750221e-17L, -0.1734723475976807092907291712339378728951e-17L, }, - { 0.1226634733346699265151079978096533977675e-17L, 0.122663473334669926439876359357026997319e-17L, 0.1226634733346699265903396362622797983082e-17L, }, - { -0.1226634733346699265151079978096533977675e-17L, -0.122663473334669926590339636262279798339e-17L, -0.1226634733346699264398763593570269972882e-17L, }, - { 0.8673617379884035472059622406959533691406e-18L, 0.8673617379884035468298040484328213668081e-18L, 0.8673617379884035475821204329590853717994e-18L, }, - { -0.8673617379884035472059622406959533691406e-18L, -0.8673617379884035475821204329590853719081e-18L, -0.8673617379884035468298040484328213666994e-18L, }, - { 0.6133173666733496325755399890482669888373e-18L, 0.6133173666733496323874608929167009876392e-18L, 0.6133173666733496327636190851798329901507e-18L, }, - { -0.6133173666733496325755399890482669888373e-18L, -0.6133173666733496327636190851798329901892e-18L, -0.6133173666733496323874608929167009876007e-18L, }, - { 0.4336808689942017736029811203479766845703e-18L, 0.43368086899420177350894157228219368396e-18L, 0.4336808689942017736970206684137596852214e-18L, }, - { -0.4336808689942017736029811203479766845703e-18L, -0.433680868994201773697020668413759685235e-18L, -0.4336808689942017735089415722821936839464e-18L, }, - { 0.3066586833366748162877699945241334944186e-18L, 0.3066586833366748162407502204912419941095e-18L, 0.3066586833366748163347897685570249947422e-18L, }, - { -0.3066586833366748162877699945241334944186e-18L, -0.306658683336674816334789768557024994747e-18L, -0.3066586833366748162407502204912419941047e-18L, }, - { 0.2168404344971008868014905601739883422852e-18L, 0.2168404344971008867779806731575425921292e-18L, 0.2168404344971008868250004471904340924462e-18L, }, - { -0.2168404344971008868014905601739883422852e-18L, -0.2168404344971008868250004471904340924479e-18L, -0.2168404344971008867779806731575425921275e-18L, }, - { 0.1533293416683374081438849972620667472093e-18L, 0.1533293416683374081321300537538438721308e-18L, 0.1533293416683374081556399407702896222896e-18L, }, - { -0.1533293416683374081438849972620667472093e-18L, -0.1533293416683374081556399407702896222902e-18L, -0.1533293416683374081321300537538438721302e-18L, }, - { 0.1084202172485504434007452800869941711426e-18L, 0.1084202172485504433948678083328827336032e-18L, 0.1084202172485504434066227518411056086826e-18L, }, - { -0.1084202172485504434007452800869941711426e-18L, -0.1084202172485504434066227518411056086828e-18L, -0.1084202172485504433948678083328827336029e-18L, }, - { 0.7666467083416870407194249863103337360466e-19L, 0.7666467083416870406900376275397765483489e-19L, 0.7666467083416870407488123450808909237466e-19L, }, - { -0.7666467083416870407194249863103337360466e-19L, -0.7666467083416870407488123450808909237473e-19L, -0.7666467083416870406900376275397765483481e-19L, }, - { 0.5421010862427522170037264004349708557129e-19L, 0.5421010862427522169890327210496922618638e-19L, 0.5421010862427522170184200798202494495628e-19L, }, - { -0.5421010862427522170037264004349708557129e-19L, -0.542101086242752217018420079820249449563e-19L, -0.5421010862427522169890327210496922618635e-19L, }, - { 0.3833233541708435203597124931551668680233e-19L, 0.3833233541708435203523656534625275710987e-19L, 0.3833233541708435203670593328478061649482e-19L, }, - { -0.3833233541708435203597124931551668680233e-19L, -0.3833233541708435203670593328478061649483e-19L, -0.3833233541708435203523656534625275710986e-19L, }, - { 0.2710505431213761085018632002174854278564e-19L, 0.2710505431213761084981897803711657793941e-19L, 0.2710505431213761085055366200638050763189e-19L, }, - { -0.2710505431213761085018632002174854278564e-19L, -0.2710505431213761085055366200638050763189e-19L, -0.2710505431213761084981897803711657793941e-19L, }, - { 0.1916616770854217601798562465775834340116e-19L, 0.1916616770854217601780195366544236097805e-19L, 0.1916616770854217601816929565007432582429e-19L, }, - { -0.1916616770854217601798562465775834340116e-19L, -0.1916616770854217601816929565007432582429e-19L, -0.1916616770854217601780195366544236097805e-19L, }, - { 0.1355252715606880542509316001087427139282e-19L, 0.1355252715606880542500132451471628018126e-19L, 0.1355252715606880542518499550703226260438e-19L, }, - { -0.1355252715606880542509316001087427139282e-19L, -0.1355252715606880542518499550703226260438e-19L, -0.1355252715606880542500132451471628018126e-19L, }, - { 0.9583083854271088008992812328879171700582e-20L, 0.9583083854271088008946894580800176094803e-20L, 0.9583083854271088009038730076958167306363e-20L, }, - { -0.9583083854271088008992812328879171700582e-20L, -0.9583083854271088009038730076958167306363e-20L, -0.9583083854271088008946894580800176094803e-20L, }, - { 0.6776263578034402712546580005437135696411e-20L, 0.6776263578034402712523621131397637893521e-20L, 0.6776263578034402712569538879476633499301e-20L, }, - { -0.6776263578034402712546580005437135696411e-20L, -0.6776263578034402712569538879476633499301e-20L, -0.6776263578034402712523621131397637893521e-20L, }, - { 0.4791541927135544004496406164439585850291e-20L, 0.4791541927135544004484926727419836948846e-20L, 0.4791541927135544004507885601459334751736e-20L, }, - { -0.4791541927135544004496406164439585850291e-20L, -0.4791541927135544004507885601459334751736e-20L, -0.4791541927135544004484926727419836948846e-20L, }, - { 0.3388131789017201356273290002718567848206e-20L, 0.3388131789017201356267550284208693397483e-20L, 0.3388131789017201356279029721228442298928e-20L, }, - { -0.3388131789017201356273290002718567848206e-20L, -0.3388131789017201356279029721228442298928e-20L, -0.3388131789017201356267550284208693397483e-20L, }, - { 0.2395770963567772002248203082219792925146e-20L, 0.2395770963567772002245333222964855699784e-20L, 0.2395770963567772002251072941474730150507e-20L, }, - { -0.2395770963567772002248203082219792925146e-20L, -0.2395770963567772002251072941474730150507e-20L, -0.2395770963567772002245333222964855699784e-20L, }, - { 0.1694065894508600678136645001359283924103e-20L, 0.1694065894508600678135210071731815311422e-20L, 0.1694065894508600678138079930986752536783e-20L, }, - { -0.1694065894508600678136645001359283924103e-20L, -0.1694065894508600678138079930986752536783e-20L, -0.1694065894508600678135210071731815311422e-20L, }, - { 0.1197885481783886001124101541109896462573e-20L, 0.1197885481783886001123384076296162156232e-20L, 0.1197885481783886001124819005923630768913e-20L, }, - { -0.1197885481783886001124101541109896462573e-20L, -0.1197885481783886001124819005923630768913e-20L, -0.1197885481783886001123384076296162156232e-20L, }, - { 0.8470329472543003390683225006796419620514e-21L, 0.8470329472543003390679637682727748088812e-21L, 0.8470329472543003390686812330865091152215e-21L, }, - { -0.8470329472543003390683225006796419620514e-21L, -0.8470329472543003390686812330865091152215e-21L, -0.8470329472543003390679637682727748088812e-21L, }, - { 0.5989427408919430005620507705549482312864e-21L, 0.5989427408919430005618714043515146547013e-21L, 0.5989427408919430005622301367583818078715e-21L, }, - { -0.5989427408919430005620507705549482312864e-21L, -0.5989427408919430005622301367583818078715e-21L, -0.5989427408919430005618714043515146547013e-21L, }, - { 0.4235164736271501695341612503398209810257e-21L, 0.4235164736271501695340715672381041927332e-21L, 0.4235164736271501695342509334415377693182e-21L, }, - { -0.4235164736271501695341612503398209810257e-21L, -0.4235164736271501695342509334415377693182e-21L, -0.4235164736271501695340715672381041927332e-21L, }, - { 0.2994713704459715002810253852774741156432e-21L, 0.2994713704459715002809805437266157214969e-21L, 0.2994713704459715002810702268283325097895e-21L, }, - { -0.2994713704459715002810253852774741156432e-21L, -0.2994713704459715002810702268283325097895e-21L, -0.2994713704459715002809805437266157214969e-21L, }, - { 0.2117582368135750847670806251699104905128e-21L, 0.2117582368135750847670582043944812934397e-21L, 0.211758236813575084767103045945339687586e-21L, }, - { -0.2117582368135750847670806251699104905128e-21L, -0.211758236813575084767103045945339687586e-21L, -0.2117582368135750847670582043944812934397e-21L, }, - { 0.1497356852229857501405126926387370578216e-21L, 0.149735685222985750140501482251022459285e-21L, 0.1497356852229857501405239030264516563582e-21L, }, - { -0.1497356852229857501405126926387370578216e-21L, -0.1497356852229857501405239030264516563582e-21L, -0.149735685222985750140501482251022459285e-21L, }, - { 0.1058791184067875423835403125849552452564e-21L, 0.1058791184067875423835347073910979459881e-21L, 0.1058791184067875423835459177788125445247e-21L, }, - { -0.1058791184067875423835403125849552452564e-21L, -0.1058791184067875423835459177788125445247e-21L, -0.1058791184067875423835347073910979459881e-21L, }, - { 0.748678426114928750702563463193685289108e-22L, 0.7486784261149287507025354372243987927666e-22L, 0.7486784261149287507025914891629717854494e-22L, }, - { -0.748678426114928750702563463193685289108e-22L, -0.7486784261149287507025914891629717854494e-22L, -0.7486784261149287507025354372243987927666e-22L, }, - { 0.5293955920339377119177015629247762262821e-22L, 0.5293955920339377119176875499401329781114e-22L, 0.5293955920339377119177155759094194744528e-22L, }, - { -0.5293955920339377119177015629247762262821e-22L, -0.5293955920339377119177155759094194744528e-22L, -0.5293955920339377119176875499401329781114e-22L, }, - { 0.374339213057464375351281731596842644554e-22L, 0.3743392130574643753512747251045210204686e-22L, 0.3743392130574643753512887380891642686394e-22L, }, - { -0.374339213057464375351281731596842644554e-22L, -0.3743392130574643753512887380891642686394e-22L, -0.3743392130574643753512747251045210204686e-22L, }, - { 0.2646977960169688559588507814623881131411e-22L, 0.2646977960169688559588472782162273010984e-22L, 0.2646977960169688559588542847085489251837e-22L, }, - { -0.2646977960169688559588507814623881131411e-22L, -0.2646977960169688559588542847085489251837e-22L, -0.2646977960169688559588472782162273010984e-22L, }, - { 0.187169606528732187675640865798421322277e-22L, 0.1871696065287321876756391141753409162557e-22L, 0.1871696065287321876756426174215017282983e-22L, }, - { -0.187169606528732187675640865798421322277e-22L, -0.1871696065287321876756426174215017282983e-22L, -0.1871696065287321876756391141753409162557e-22L, }, - { 0.1323488980084844279794253907311940565705e-22L, 0.1323488980084844279794245149196538535599e-22L, 0.1323488980084844279794262665427342595812e-22L, }, - { -0.1323488980084844279794253907311940565705e-22L, -0.1323488980084844279794262665427342595812e-22L, -0.1323488980084844279794245149196538535599e-22L, }, - { 0.935848032643660938378204328992106611385e-23L, 0.9358480326436609383781999499344055963317e-23L, 0.9358480326436609383782087080498076264383e-23L, }, - { -0.935848032643660938378204328992106611385e-23L, -0.9358480326436609383782087080498076264383e-23L, -0.9358480326436609383781999499344055963317e-23L, }, - { 0.6617444900424221398971269536559702828526e-23L, 0.661744490042422139897124764127119775326e-23L, 0.6617444900424221398971291431848207903793e-23L, }, - { -0.6617444900424221398971269536559702828526e-23L, -0.6617444900424221398971291431848207903793e-23L, -0.661744490042422139897124764127119775326e-23L, }, - { 0.4679240163218304691891021644960533056925e-23L, 0.4679240163218304691891010697316280519292e-23L, 0.4679240163218304691891032592604785594558e-23L, }, - { -0.4679240163218304691891021644960533056925e-23L, -0.4679240163218304691891032592604785594558e-23L, -0.4679240163218304691891010697316280519292e-23L, }, - { 0.3308722450212110699485634768279851414263e-23L, 0.3308722450212110699485629294457725145447e-23L, 0.330872245021211069948564024210197768308e-23L, }, - { -0.3308722450212110699485634768279851414263e-23L, -0.330872245021211069948564024210197768308e-23L, -0.3308722450212110699485629294457725145447e-23L, }, - { 0.2339620081609152345945510822480266528463e-23L, 0.2339620081609152345945508085569203394054e-23L, 0.2339620081609152345945513559391329662871e-23L, }, - { -0.2339620081609152345945510822480266528463e-23L, -0.2339620081609152345945513559391329662871e-23L, -0.2339620081609152345945508085569203394054e-23L, }, - { 0.1654361225106055349742817384139925707132e-23L, 0.1654361225106055349742816015684394139927e-23L, 0.1654361225106055349742818752595457274336e-23L, }, - { -0.1654361225106055349742817384139925707132e-23L, -0.1654361225106055349742818752595457274336e-23L, -0.1654361225106055349742816015684394139927e-23L, }, - { 0.1169810040804576172972755411240133264231e-23L, 0.1169810040804576172972754727012367480629e-23L, 0.1169810040804576172972756095467899047833e-23L, }, - { -0.1169810040804576172972755411240133264231e-23L, -0.1169810040804576172972756095467899047833e-23L, -0.1169810040804576172972754727012367480629e-23L, }, - { 0.8271806125530276748714086920699628535658e-24L, 0.8271806125530276748714083499560799617648e-24L, 0.8271806125530276748714090341838457453669e-24L, }, - { -0.8271806125530276748714086920699628535658e-24L, -0.8271806125530276748714090341838457453669e-24L, -0.8271806125530276748714083499560799617648e-24L, }, - { 0.5849050204022880864863777056200666321156e-24L, 0.5849050204022880864863775345631251862151e-24L, 0.5849050204022880864863778766770080780161e-24L, }, - { -0.5849050204022880864863777056200666321156e-24L, -0.5849050204022880864863778766770080780161e-24L, -0.5849050204022880864863775345631251862151e-24L, }, - { 0.4135903062765138374357043460349814267829e-24L, 0.4135903062765138374357042605065107038326e-24L, 0.4135903062765138374357044315634521497332e-24L, }, - { -0.4135903062765138374357043460349814267829e-24L, -0.4135903062765138374357044315634521497332e-24L, -0.4135903062765138374357042605065107038326e-24L, }, - { 0.2924525102011440432431888528100333160578e-24L, 0.2924525102011440432431888100457979545827e-24L, 0.2924525102011440432431888955742686775329e-24L, }, - { -0.2924525102011440432431888528100333160578e-24L, -0.2924525102011440432431888955742686775329e-24L, -0.2924525102011440432431888100457979545827e-24L, }, - { 0.2067951531382569187178521730174907133915e-24L, 0.2067951531382569187178521516353730326539e-24L, 0.206795153138256918717852194399608394129e-24L, }, - { -0.2067951531382569187178521730174907133915e-24L, -0.206795153138256918717852194399608394129e-24L, -0.2067951531382569187178521516353730326539e-24L, }, - { 0.1462262551005720216215944264050166580289e-24L, 0.1462262551005720216215944157139578176601e-24L, 0.1462262551005720216215944370960754983977e-24L, }, - { -0.1462262551005720216215944264050166580289e-24L, -0.1462262551005720216215944370960754983977e-24L, -0.1462262551005720216215944157139578176601e-24L, }, - { 0.1033975765691284593589260865087453566957e-24L, 0.1033975765691284593589260811632159365113e-24L, 0.1033975765691284593589260918542747768801e-24L, }, - { -0.1033975765691284593589260865087453566957e-24L, -0.1033975765691284593589260918542747768801e-24L, -0.1033975765691284593589260811632159365113e-24L, }, - { 0.7311312755028601081079721320250832901445e-25L, 0.7311312755028601081079721052974361892226e-25L, 0.7311312755028601081079721587527303910665e-25L, }, - { -0.7311312755028601081079721320250832901445e-25L, -0.7311312755028601081079721587527303910665e-25L, -0.7311312755028601081079721052974361892226e-25L, }, - { 0.5169878828456422967946304325437267834786e-25L, 0.5169878828456422967946304191799032330177e-25L, 0.5169878828456422967946304459075503339396e-25L, }, - { -0.5169878828456422967946304325437267834786e-25L, -0.5169878828456422967946304459075503339396e-25L, -0.5169878828456422967946304191799032330177e-25L, }, - { 0.3655656377514300540539860660125416450723e-25L, 0.3655656377514300540539860593306298698418e-25L, 0.3655656377514300540539860726944534203028e-25L, }, - { -0.3655656377514300540539860660125416450723e-25L, -0.3655656377514300540539860726944534203028e-25L, -0.3655656377514300540539860593306298698418e-25L, }, - { 0.2584939414228211483973152162718633917393e-25L, 0.2584939414228211483973152129309075041241e-25L, 0.2584939414228211483973152196128192793546e-25L, }, - { -0.2584939414228211483973152162718633917393e-25L, -0.2584939414228211483973152196128192793546e-25L, -0.2584939414228211483973152129309075041241e-25L, }, - { 0.1827828188757150270269930330062708225361e-25L, 0.1827828188757150270269930313357928787285e-25L, 0.1827828188757150270269930346767487663438e-25L, }, - { -0.1827828188757150270269930330062708225361e-25L, -0.1827828188757150270269930346767487663438e-25L, -0.1827828188757150270269930313357928787285e-25L, }, - { 0.1292469707114105741986576081359316958697e-25L, 0.1292469707114105741986576073006927239658e-25L, 0.1292469707114105741986576089711706677735e-25L, }, - { -0.1292469707114105741986576081359316958697e-25L, -0.1292469707114105741986576089711706677735e-25L, -0.1292469707114105741986576073006927239658e-25L, }, - { 0.9139140943785751351349651650313541126807e-26L, 0.9139140943785751351349651608551592531616e-26L, 0.9139140943785751351349651692075489721997e-26L, }, - { -0.9139140943785751351349651650313541126807e-26L, -0.9139140943785751351349651692075489721997e-26L, -0.9139140943785751351349651608551592531616e-26L, }, - { 0.6462348535570528709932880406796584793483e-26L, 0.6462348535570528709932880385915610495888e-26L, 0.6462348535570528709932880427677559091078e-26L, }, - { -0.6462348535570528709932880406796584793483e-26L, -0.6462348535570528709932880427677559091078e-26L, -0.6462348535570528709932880385915610495888e-26L, }, - { 0.4569570471892875675674825825156770563403e-26L, 0.4569570471892875675674825814716283414606e-26L, 0.4569570471892875675674825835597257712201e-26L, }, - { -0.4569570471892875675674825825156770563403e-26L, -0.4569570471892875675674825835597257712201e-26L, -0.4569570471892875675674825814716283414606e-26L, }, - { 0.3231174267785264354966440203398292396741e-26L, 0.3231174267785264354966440198178048822343e-26L, 0.323117426778526435496644020861853597114e-26L, }, - { -0.3231174267785264354966440203398292396741e-26L, -0.323117426778526435496644020861853597114e-26L, -0.3231174267785264354966440198178048822343e-26L, }, - { 0.2284785235946437837837412912578385281702e-26L, 0.2284785235946437837837412909968263494502e-26L, 0.2284785235946437837837412915188507068901e-26L, }, - { -0.2284785235946437837837412912578385281702e-26L, -0.2284785235946437837837412915188507068901e-26L, -0.2284785235946437837837412909968263494502e-26L, }, - { 0.1615587133892632177483220101699146198371e-26L, 0.1615587133892632177483220100394085304771e-26L, 0.161558713389263217748322010300420709197e-26L, }, - { -0.1615587133892632177483220101699146198371e-26L, -0.161558713389263217748322010300420709197e-26L, -0.1615587133892632177483220100394085304771e-26L, }, - { 0.1142392617973218918918706456289192640851e-26L, 0.1142392617973218918918706455636662194051e-26L, 0.1142392617973218918918706456941723087651e-26L, }, - { -0.1142392617973218918918706456289192640851e-26L, -0.1142392617973218918918706456941723087651e-26L, -0.1142392617973218918918706455636662194051e-26L, }, - { 0.8077935669463160887416100508495730991854e-27L, 0.8077935669463160887416100505233078757854e-27L, 0.8077935669463160887416100511758383225853e-27L, }, - { -0.8077935669463160887416100508495730991854e-27L, -0.8077935669463160887416100511758383225853e-27L, -0.8077935669463160887416100505233078757854e-27L, }, - { 0.5711963089866094594593532281445963204254e-27L, 0.5711963089866094594593532279814637087255e-27L, 0.5711963089866094594593532283077289321254e-27L, }, - { -0.5711963089866094594593532281445963204254e-27L, -0.5711963089866094594593532283077289321254e-27L, -0.5711963089866094594593532279814637087255e-27L, }, - { 0.4038967834731580443708050254247865495927e-27L, 0.4038967834731580443708050253432202437427e-27L, 0.4038967834731580443708050255063528554427e-27L, }, - { -0.4038967834731580443708050254247865495927e-27L, -0.4038967834731580443708050255063528554427e-27L, -0.4038967834731580443708050253432202437427e-27L, }, - { 0.2855981544933047297296766140722981602127e-27L, 0.2855981544933047297296766140315150072877e-27L, 0.2855981544933047297296766141130813131377e-27L, }, - { -0.2855981544933047297296766140722981602127e-27L, -0.2855981544933047297296766141130813131377e-27L, -0.2855981544933047297296766140315150072877e-27L, }, - { 0.2019483917365790221854025127123932747963e-27L, 0.2019483917365790221854025126920016983338e-27L, 0.2019483917365790221854025127327848512588e-27L, }, - { -0.2019483917365790221854025127123932747963e-27L, -0.2019483917365790221854025127327848512588e-27L, -0.2019483917365790221854025126920016983338e-27L, }, - { 0.1427990772466523648648383070361490801064e-27L, 0.1427990772466523648648383070259532918751e-27L, 0.1427990772466523648648383070463448683376e-27L, }, - { -0.1427990772466523648648383070361490801064e-27L, -0.1427990772466523648648383070463448683376e-27L, -0.1427990772466523648648383070259532918751e-27L, }, - { 0.1009741958682895110927012563561966373982e-27L, 0.1009741958682895110927012563510987432825e-27L, 0.1009741958682895110927012563612945315138e-27L, }, - { -0.1009741958682895110927012563561966373982e-27L, -0.1009741958682895110927012563612945315138e-27L, -0.1009741958682895110927012563510987432825e-27L, }, - { 0.7139953862332618243241915351807454005318e-28L, 0.7139953862332618243241915351552559299537e-28L, 0.7139953862332618243241915352062348711099e-28L, }, - { -0.7139953862332618243241915351807454005318e-28L, -0.7139953862332618243241915352062348711099e-28L, -0.7139953862332618243241915351552559299537e-28L, }, - { 0.5048709793414475554635062817809831869909e-28L, 0.5048709793414475554635062817682384517018e-28L, 0.5048709793414475554635062817937279222799e-28L, }, - { -0.5048709793414475554635062817809831869909e-28L, -0.5048709793414475554635062817937279222799e-28L, -0.5048709793414475554635062817682384517018e-28L, }, - { 0.3569976931166309121620957675903727002659e-28L, 0.3569976931166309121620957675840003326214e-28L, 0.3569976931166309121620957675967450679104e-28L, }, - { -0.3569976931166309121620957675903727002659e-28L, -0.3569976931166309121620957675967450679104e-28L, -0.3569976931166309121620957675840003326214e-28L, }, - { 0.2524354896707237777317531408904915934954e-28L, 0.2524354896707237777317531408873054096732e-28L, 0.2524354896707237777317531408936777773177e-28L, }, - { -0.2524354896707237777317531408904915934954e-28L, -0.2524354896707237777317531408936777773177e-28L, -0.2524354896707237777317531408873054096732e-28L, }, - { 0.1784988465583154560810478837951863501329e-28L, 0.1784988465583154560810478837935932582218e-28L, 0.1784988465583154560810478837967794420441e-28L, }, - { -0.1784988465583154560810478837951863501329e-28L, -0.1784988465583154560810478837967794420441e-28L, -0.1784988465583154560810478837935932582218e-28L, }, - { 0.1262177448353618888658765704452457967477e-28L, 0.1262177448353618888658765704444492507921e-28L, 0.1262177448353618888658765704460423427033e-28L, }, - { -0.1262177448353618888658765704452457967477e-28L, -0.1262177448353618888658765704460423427033e-28L, -0.1262177448353618888658765704444492507921e-28L, }, - { 0.8924942327915772804052394189759317506647e-29L, 0.8924942327915772804052394189719490208869e-29L, 0.8924942327915772804052394189799144804425e-29L, }, - { -0.8924942327915772804052394189759317506647e-29L, -0.8924942327915772804052394189799144804425e-29L, -0.8924942327915772804052394189719490208869e-29L, }, - { 0.6310887241768094443293828522262289837386e-29L, 0.6310887241768094443293828522242376188496e-29L, 0.6310887241768094443293828522282203486275e-29L, }, - { -0.6310887241768094443293828522262289837386e-29L, -0.6310887241768094443293828522282203486275e-29L, -0.6310887241768094443293828522242376188496e-29L, }, - { 0.4462471163957886402026197094879658753324e-29L, 0.4462471163957886402026197094869701928879e-29L, 0.4462471163957886402026197094889615577768e-29L, }, - { -0.4462471163957886402026197094879658753324e-29L, -0.4462471163957886402026197094889615577768e-29L, -0.4462471163957886402026197094869701928879e-29L, }, - { 0.3155443620884047221646914261131144918693e-29L, 0.3155443620884047221646914261126166506471e-29L, 0.3155443620884047221646914261136123330915e-29L, }, - { -0.3155443620884047221646914261131144918693e-29L, -0.3155443620884047221646914261136123330915e-29L, -0.3155443620884047221646914261126166506471e-29L, }, - { 0.2231235581978943201013098547439829376662e-29L, 0.2231235581978943201013098547437340170551e-29L, 0.2231235581978943201013098547442318582773e-29L, }, - { -0.2231235581978943201013098547439829376662e-29L, -0.2231235581978943201013098547442318582773e-29L, -0.2231235581978943201013098547437340170551e-29L, }, - { 0.1577721810442023610823457130565572459346e-29L, 0.1577721810442023610823457130564327856291e-29L, 0.1577721810442023610823457130566817062402e-29L, }, - { -0.1577721810442023610823457130565572459346e-29L, -0.1577721810442023610823457130566817062402e-29L, -0.1577721810442023610823457130564327856291e-29L, }, - { 0.1115617790989471600506549273719914688331e-29L, 0.1115617790989471600506549273719292386803e-29L, 0.1115617790989471600506549273720536989859e-29L, }, - { -0.1115617790989471600506549273719914688331e-29L, -0.1115617790989471600506549273720536989859e-29L, -0.1115617790989471600506549273719292386803e-29L, }, - { 0.7888609052210118054117285652827862296732e-30L, 0.7888609052210118054117285652824750789093e-30L, 0.7888609052210118054117285652830973804371e-30L, }, - { -0.7888609052210118054117285652827862296732e-30L, -0.7888609052210118054117285652830973804371e-30L, -0.7888609052210118054117285652824750789093e-30L, }, - { 0.5578088954947358002532746368599573441654e-30L, 0.5578088954947358002532746368598017687835e-30L, 0.5578088954947358002532746368601129195474e-30L, }, - { -0.5578088954947358002532746368599573441654e-30L, -0.5578088954947358002532746368601129195474e-30L, -0.5578088954947358002532746368598017687835e-30L, }, - { 0.3944304526105059027058642826413931148366e-30L, 0.3944304526105059027058642826413153271456e-30L, 0.3944304526105059027058642826414709025276e-30L, }, - { -0.3944304526105059027058642826413931148366e-30L, -0.3944304526105059027058642826414709025276e-30L, -0.3944304526105059027058642826413153271456e-30L, }, - { 0.2789044477473679001266373184299786720827e-30L, 0.2789044477473679001266373184299397782372e-30L, 0.2789044477473679001266373184300175659282e-30L, }, - { -0.2789044477473679001266373184299786720827e-30L, -0.2789044477473679001266373184300175659282e-30L, -0.2789044477473679001266373184299397782372e-30L, }, - { 0.1972152263052529513529321413206965574183e-30L, 0.1972152263052529513529321413206771104956e-30L, 0.197215226305252951352932141320716004341e-30L, }, - { -0.1972152263052529513529321413206965574183e-30L, -0.197215226305252951352932141320716004341e-30L, -0.1972152263052529513529321413206771104956e-30L, }, - { 0.1394522238736839500633186592149893360414e-30L, 0.13945222387368395006331865921497961258e-30L, 0.1394522238736839500633186592149990595027e-30L, }, - { -0.1394522238736839500633186592149893360414e-30L, -0.1394522238736839500633186592149990595027e-30L, -0.13945222387368395006331865921497961258e-30L, }, - { 0.9860761315262647567646607066034827870915e-31L, 0.9860761315262647567646607066034341697846e-31L, 0.9860761315262647567646607066035314043984e-31L, }, - { -0.9860761315262647567646607066034827870915e-31L, -0.9860761315262647567646607066035314043984e-31L, -0.9860761315262647567646607066034341697846e-31L, }, - { 0.6972611193684197503165932960749466802068e-31L, 0.6972611193684197503165932960749223715534e-31L, 0.6972611193684197503165932960749709888602e-31L, }, - { -0.6972611193684197503165932960749466802068e-31L, -0.6972611193684197503165932960749709888602e-31L, -0.6972611193684197503165932960749223715534e-31L, }, - { 0.4930380657631323783823303533017413935458e-31L, 0.493038065763132378382330353301729239219e-31L, 0.4930380657631323783823303533017535478725e-31L, }, - { -0.4930380657631323783823303533017413935458e-31L, -0.4930380657631323783823303533017535478725e-31L, -0.493038065763132378382330353301729239219e-31L, }, - { 0.3486305596842098751582966480374733401034e-31L, 0.34863055968420987515829664803746726294e-31L, 0.3486305596842098751582966480374794172668e-31L, }, - { -0.3486305596842098751582966480374733401034e-31L, -0.3486305596842098751582966480374794172668e-31L, -0.34863055968420987515829664803746726294e-31L, }, - { 0.2465190328815661891911651766508706967729e-31L, 0.2465190328815661891911651766508676581912e-31L, 0.2465190328815661891911651766508737353546e-31L, }, - { -0.2465190328815661891911651766508706967729e-31L, -0.2465190328815661891911651766508737353546e-31L, -0.2465190328815661891911651766508676581912e-31L, }, - { 0.1743152798421049375791483240187366700517e-31L, 0.1743152798421049375791483240187351507609e-31L, 0.1743152798421049375791483240187381893425e-31L, }, - { -0.1743152798421049375791483240187366700517e-31L, -0.1743152798421049375791483240187381893425e-31L, -0.1743152798421049375791483240187351507609e-31L, }, - { 0.1232595164407830945955825883254353483864e-31L, 0.123259516440783094595582588325434588741e-31L, 0.1232595164407830945955825883254361080319e-31L, }, - { -0.1232595164407830945955825883254353483864e-31L, -0.1232595164407830945955825883254361080319e-31L, -0.123259516440783094595582588325434588741e-31L, }, - { 0.8715763992105246878957416200936833502585e-32L, 0.8715763992105246878957416200936795520314e-32L, 0.8715763992105246878957416200936871484856e-32L, }, - { -0.8715763992105246878957416200936833502585e-32L, -0.8715763992105246878957416200936871484856e-32L, -0.8715763992105246878957416200936795520314e-32L, }, - { 0.6162975822039154729779129416271767419322e-32L, 0.6162975822039154729779129416271748428186e-32L, 0.6162975822039154729779129416271786410457e-32L, }, - { -0.6162975822039154729779129416271767419322e-32L, -0.6162975822039154729779129416271786410457e-32L, -0.6162975822039154729779129416271748428186e-32L, }, - { 0.4357881996052623439478708100468416751293e-32L, 0.4357881996052623439478708100468407255725e-32L, 0.435788199605262343947870810046842624686e-32L, }, - { -0.4357881996052623439478708100468416751293e-32L, -0.435788199605262343947870810046842624686e-32L, -0.4357881996052623439478708100468407255725e-32L, }, - { 0.3081487911019577364889564708135883709661e-32L, 0.3081487911019577364889564708135878961877e-32L, 0.3081487911019577364889564708135888457445e-32L, }, - { -0.3081487911019577364889564708135883709661e-32L, -0.3081487911019577364889564708135888457445e-32L, -0.3081487911019577364889564708135878961877e-32L, }, - { 0.2178940998026311719739354050234208375646e-32L, 0.2178940998026311719739354050234206001754e-32L, 0.2178940998026311719739354050234210749538e-32L, }, - { -0.2178940998026311719739354050234208375646e-32L, -0.2178940998026311719739354050234210749538e-32L, -0.2178940998026311719739354050234206001754e-32L, }, - { 0.154074395550978868244478235406794185483e-32L, 0.1540743955509788682444782354067940667885e-32L, 0.1540743955509788682444782354067943041776e-32L, }, - { -0.154074395550978868244478235406794185483e-32L, -0.1540743955509788682444782354067943041776e-32L, -0.1540743955509788682444782354067940667885e-32L, }, - { 0.1089470499013155859869677025117104187823e-32L, 0.108947049901315585986967702511710359435e-32L, 0.1089470499013155859869677025117104781296e-32L, }, - { -0.1089470499013155859869677025117104187823e-32L, -0.1089470499013155859869677025117104781296e-32L, -0.108947049901315585986967702511710359435e-32L, }, - { 0.7703719777548943412223911770339709274152e-33L, 0.7703719777548943412223911770339706306787e-33L, 0.7703719777548943412223911770339712241517e-33L, }, - { -0.7703719777548943412223911770339709274152e-33L, -0.7703719777548943412223911770339712241517e-33L, -0.7703719777548943412223911770339706306787e-33L, }, - { 0.5447352495065779299348385125585520939116e-33L, 0.5447352495065779299348385125585519455433e-33L, 0.5447352495065779299348385125585522422798e-33L, }, - { -0.5447352495065779299348385125585520939116e-33L, -0.5447352495065779299348385125585522422798e-33L, -0.5447352495065779299348385125585519455433e-33L, }, - { 0.3851859888774471706111955885169854637076e-33L, 0.3851859888774471706111955885169853895235e-33L, 0.3851859888774471706111955885169855378917e-33L, }, - { -0.3851859888774471706111955885169854637076e-33L, -0.3851859888774471706111955885169855378917e-33L, -0.3851859888774471706111955885169853895235e-33L, }, - { 0.2723676247532889649674192562792760469558e-33L, 0.2723676247532889649674192562792760098637e-33L, 0.2723676247532889649674192562792760840478e-33L, }, - { -0.2723676247532889649674192562792760469558e-33L, -0.2723676247532889649674192562792760840478e-33L, -0.2723676247532889649674192562792760098637e-33L, }, - { 0.1925929944387235853055977942584927318538e-33L, 0.1925929944387235853055977942584927133078e-33L, 0.1925929944387235853055977942584927503998e-33L, }, - { -0.1925929944387235853055977942584927318538e-33L, -0.1925929944387235853055977942584927503998e-33L, -0.1925929944387235853055977942584927133078e-33L, }, - { 0.1361838123766444824837096281396380234779e-33L, 0.1361838123766444824837096281396380142049e-33L, 0.1361838123766444824837096281396380327509e-33L, }, - { -0.1361838123766444824837096281396380234779e-33L, -0.1361838123766444824837096281396380327509e-33L, -0.1361838123766444824837096281396380142049e-33L, }, - { 0.9629649721936179265279889712924636592691e-34L, 0.962964972193617926527988971292463612904e-34L, 0.9629649721936179265279889712924637056341e-34L, }, - { -0.9629649721936179265279889712924636592691e-34L, -0.9629649721936179265279889712924637056341e-34L, -0.962964972193617926527988971292463612904e-34L, }, - { 0.6809190618832224124185481406981901173895e-34L, 0.6809190618832224124185481406981900942069e-34L, 0.680919061883222412418548140698190140572e-34L, }, - { -0.6809190618832224124185481406981901173895e-34L, -0.680919061883222412418548140698190140572e-34L, -0.6809190618832224124185481406981900942069e-34L, }, - { 0.4814824860968089632639944856462318296345e-34L, 0.4814824860968089632639944856462318180433e-34L, 0.4814824860968089632639944856462318412258e-34L, }, - { -0.4814824860968089632639944856462318296345e-34L, -0.4814824860968089632639944856462318412258e-34L, -0.4814824860968089632639944856462318180433e-34L, }, - { 0.3404595309416112062092740703490950586947e-34L, 0.3404595309416112062092740703490950528991e-34L, 0.3404595309416112062092740703490950644904e-34L, }, - { -0.3404595309416112062092740703490950586947e-34L, -0.3404595309416112062092740703490950644904e-34L, -0.3404595309416112062092740703490950528991e-34L, }, - { 0.2407412430484044816319972428231159148173e-34L, 0.2407412430484044816319972428231159119194e-34L, 0.2407412430484044816319972428231159177151e-34L, }, - { -0.2407412430484044816319972428231159148173e-34L, -0.2407412430484044816319972428231159177151e-34L, -0.2407412430484044816319972428231159119194e-34L, }, - { 0.1702297654708056031046370351745475293474e-34L, 0.1702297654708056031046370351745475278985e-34L, 0.1702297654708056031046370351745475307963e-34L, }, - { -0.1702297654708056031046370351745475293474e-34L, -0.1702297654708056031046370351745475307963e-34L, -0.1702297654708056031046370351745475278985e-34L, }, - { 0.1203706215242022408159986214115579574086e-34L, 0.1203706215242022408159986214115579566842e-34L, 0.1203706215242022408159986214115579581331e-34L, }, - { -0.1203706215242022408159986214115579574086e-34L, -0.1203706215242022408159986214115579581331e-34L, -0.1203706215242022408159986214115579566842e-34L, }, - { 0.8511488273540280155231851758727376467368e-35L, 0.8511488273540280155231851758727376431146e-35L, 0.8511488273540280155231851758727376503591e-35L, }, - { -0.8511488273540280155231851758727376467368e-35L, -0.8511488273540280155231851758727376503591e-35L, -0.8511488273540280155231851758727376431146e-35L, }, - { 0.6018531076210112040799931070577897870432e-35L, 0.601853107621011204079993107057789785232e-35L, 0.6018531076210112040799931070577897888543e-35L, }, - { -0.6018531076210112040799931070577897870432e-35L, -0.6018531076210112040799931070577897888543e-35L, -0.601853107621011204079993107057789785232e-35L, }, - { 0.4255744136770140077615925879363688233684e-35L, 0.4255744136770140077615925879363688224628e-35L, 0.425574413677014007761592587936368824274e-35L, }, - { -0.4255744136770140077615925879363688233684e-35L, -0.425574413677014007761592587936368824274e-35L, -0.4255744136770140077615925879363688224628e-35L, }, - { 0.3009265538105056020399965535288948935216e-35L, 0.3009265538105056020399965535288948930688e-35L, 0.3009265538105056020399965535288948939744e-35L, }, - { -0.3009265538105056020399965535288948935216e-35L, -0.3009265538105056020399965535288948939744e-35L, -0.3009265538105056020399965535288948930688e-35L, }, - { 0.2127872068385070038807962939681844116842e-35L, 0.2127872068385070038807962939681844114578e-35L, 0.2127872068385070038807962939681844119106e-35L, }, - { -0.2127872068385070038807962939681844116842e-35L, -0.2127872068385070038807962939681844119106e-35L, -0.2127872068385070038807962939681844114578e-35L, }, - { 0.1504632769052528010199982767644474467608e-35L, 0.1504632769052528010199982767644474466476e-35L, 0.150463276905252801019998276764447446874e-35L, }, - { -0.1504632769052528010199982767644474467608e-35L, -0.150463276905252801019998276764447446874e-35L, -0.1504632769052528010199982767644474466476e-35L, }, - { 0.1063936034192535019403981469840922058421e-35L, 0.1063936034192535019403981469840922057855e-35L, 0.1063936034192535019403981469840922058987e-35L, }, - { -0.1063936034192535019403981469840922058421e-35L, -0.1063936034192535019403981469840922058987e-35L, -0.1063936034192535019403981469840922057855e-35L, }, - { 0.7523163845262640050999913838222372338039e-36L, 0.752316384526264005099991383822237233521e-36L, 0.7523163845262640050999913838222372340869e-36L, }, - { -0.7523163845262640050999913838222372338039e-36L, -0.7523163845262640050999913838222372340869e-36L, -0.752316384526264005099991383822237233521e-36L, }, - { 0.5319680170962675097019907349204610292105e-36L, 0.531968017096267509701990734920461029069e-36L, 0.531968017096267509701990734920461029352e-36L, }, - { -0.5319680170962675097019907349204610292105e-36L, -0.531968017096267509701990734920461029352e-36L, -0.531968017096267509701990734920461029069e-36L, }, - { 0.376158192263132002549995691911118616902e-36L, 0.3761581922631320025499956919111186168312e-36L, 0.3761581922631320025499956919111186169727e-36L, }, - { -0.376158192263132002549995691911118616902e-36L, -0.3761581922631320025499956919111186169727e-36L, -0.3761581922631320025499956919111186168312e-36L, }, - { 0.2659840085481337548509953674602305146053e-36L, 0.2659840085481337548509953674602305145699e-36L, 0.2659840085481337548509953674602305146406e-36L, }, - { -0.2659840085481337548509953674602305146053e-36L, -0.2659840085481337548509953674602305146406e-36L, -0.2659840085481337548509953674602305145699e-36L, }, - { 0.188079096131566001274997845955559308451e-36L, 0.1880790961315660012749978459555593084333e-36L, 0.1880790961315660012749978459555593084687e-36L, }, - { -0.188079096131566001274997845955559308451e-36L, -0.1880790961315660012749978459555593084687e-36L, -0.1880790961315660012749978459555593084333e-36L, }, - { 0.1329920042740668774254976837301152573026e-36L, 0.1329920042740668774254976837301152572938e-36L, 0.1329920042740668774254976837301152573115e-36L, }, - { -0.1329920042740668774254976837301152573026e-36L, -0.1329920042740668774254976837301152573115e-36L, -0.1329920042740668774254976837301152572938e-36L, }, - { 0.9403954806578300063749892297777965422549e-37L, 0.9403954806578300063749892297777965422107e-37L, 0.9403954806578300063749892297777965422991e-37L, }, - { -0.9403954806578300063749892297777965422549e-37L, -0.9403954806578300063749892297777965422991e-37L, -0.9403954806578300063749892297777965422107e-37L, }, - { 0.6649600213703343871274884186505762865131e-37L, 0.664960021370334387127488418650576286491e-37L, 0.6649600213703343871274884186505762865353e-37L, }, - { -0.6649600213703343871274884186505762865131e-37L, -0.6649600213703343871274884186505762865353e-37L, -0.664960021370334387127488418650576286491e-37L, }, - { 0.4701977403289150031874946148888982711275e-37L, 0.4701977403289150031874946148888982711164e-37L, 0.4701977403289150031874946148888982711385e-37L, }, - { -0.4701977403289150031874946148888982711275e-37L, -0.4701977403289150031874946148888982711385e-37L, -0.4701977403289150031874946148888982711164e-37L, }, - { 0.3324800106851671935637442093252881432566e-37L, 0.332480010685167193563744209325288143251e-37L, 0.3324800106851671935637442093252881432621e-37L, }, - { -0.3324800106851671935637442093252881432566e-37L, -0.3324800106851671935637442093252881432621e-37L, -0.332480010685167193563744209325288143251e-37L, }, - { 0.2350988701644575015937473074444491355637e-37L, 0.235098870164457501593747307444449135561e-37L, 0.2350988701644575015937473074444491355665e-37L, }, - { -0.2350988701644575015937473074444491355637e-37L, -0.2350988701644575015937473074444491355665e-37L, -0.235098870164457501593747307444449135561e-37L, }, - { 0.1662400053425835967818721046626440716283e-37L, 0.1662400053425835967818721046626440716269e-37L, 0.1662400053425835967818721046626440716297e-37L, }, - { -0.1662400053425835967818721046626440716283e-37L, -0.1662400053425835967818721046626440716297e-37L, -0.1662400053425835967818721046626440716269e-37L, }, - { 0.1175494350822287507968736537222245677819e-37L, 0.1175494350822287507968736537222245677812e-37L, 0.1175494350822287507968736537222245677826e-37L, }, - { -0.1175494350822287507968736537222245677819e-37L, -0.1175494350822287507968736537222245677826e-37L, -0.1175494350822287507968736537222245677812e-37L, }, - { 0.8312000267129179839093605233132203581414e-38L, 0.831200026712917983909360523313220358138e-38L, 0.8312000267129179839093605233132203581449e-38L, }, - { -0.8312000267129179839093605233132203581414e-38L, -0.8312000267129179839093605233132203581449e-38L, -0.831200026712917983909360523313220358138e-38L, }, - { 0.5877471754111437539843682686111228389093e-38L, 0.5877471754111437539843682686111228389076e-38L, 0.5877471754111437539843682686111228389111e-38L, }, - { -0.5877471754111437539843682686111228389093e-38L, -0.5877471754111437539843682686111228389111e-38L, -0.5877471754111437539843682686111228389076e-38L, }, - { 0.4156000133564589919546802616566101790707e-38L, 0.4156000133564589919546802616566101790699e-38L, 0.4156000133564589919546802616566101790716e-38L, }, - { -0.4156000133564589919546802616566101790707e-38L, -0.4156000133564589919546802616566101790716e-38L, -0.4156000133564589919546802616566101790699e-38L, }, - { 0.2938735877055718769921841343055614194547e-38L, 0.2938735877055718769921841343055614194542e-38L, 0.2938735877055718769921841343055614194551e-38L, }, - { -0.2938735877055718769921841343055614194547e-38L, -0.2938735877055718769921841343055614194551e-38L, -0.2938735877055718769921841343055614194542e-38L, }, -}; +// This file tests the functions log1p and expm1. The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", // test function + 4, // Max Peek error + 3); // Max mean error + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} template -void test(T) +void do_test(const T& data, const char* type_name, const char* test_name) { - static const T two = 2; + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = &boost::math::log1p; +#else + pg funcp = &boost::math::log1p; +#endif + + boost::math::tools::test_result result; + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; // - // Fudge factor is 3 epsilon, should be less than that, but some - // platforms have poor long double support (some of the test values - // actually test the accuracy of std::log and std::exp, and it's - // usually these, rather than our series expansion that fails otherwise). - // - static const T factor = std::pow(two, 1-std::numeric_limits::digits) * 300; - for(unsigned i = 0; i < sizeof(data)/sizeof(data[0]); ++i) - { - T input_value = static_cast(data[i][0]); - T expected_log1p = static_cast(data[i][1]); - T expected_expm1 = static_cast(data[i][2]); - BOOST_CHECK_CLOSE(boost::math::log1p(input_value), expected_log1p, factor); - BOOST_CHECK_CLOSE(boost::math::expm1(input_value), expected_expm1, factor); - BOOST_CHECK_CLOSE(boost::math::expm1(-input_value), -boost::math::expm1(input_value)/static_cast(std::exp(input_value)), 2*factor); - } + // test log1p against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::log1p; +#else + funcp = &boost::math::log1p; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::log1p", "log1p and expm1"); + std::cout << std::endl; + // + // test expm1 against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::expm1; +#else + funcp = boost::math::expm1; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::expm1", "log1p and expm1"); + std::cout << std::endl; +} + +template +void test(T, const char* type_name) +{ +# include "log1p_expm1_data.ipp" + + do_test(log1p_expm1_data, type_name, "expm1 and log1p"); + // // C99 Appendix F special cases: static const T zero = 0; @@ -571,18 +134,20 @@ void test(T) int test_main(int, char* []) { - std::cout << "Running float tests" << std::endl; - test(float(0)); - std::cout << "Running double tests" << std::endl; - test(double(0)); + expected_results(); + BOOST_MATH_CONTROL_FP; + test(float(0), "float"); + test(double(0), "double"); // // The long double version of these tests fails on some platforms // due to poor std lib support (not enough digits returned from // std::log and std::exp): // -#if !defined(__CYGWIN__) && !defined(__FreeBSD__) && !(defined(__GNUC__) && defined(__sun)) - std::cout << "Running long double tests" << std::endl; - test((long double)(0)); +#if !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) + test((long double)(0), "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test((boost::math::concepts::real_concept)(0), "real_concept"); +#endif #else std::cout << "The long double tests have been disabled on this platform " "either because the long double overloads of the usual math functions are " diff --git a/test/negative_binomial_quantile.ipp b/test/negative_binomial_quantile.ipp new file mode 100644 index 000000000..e20981f94 --- /dev/null +++ b/test/negative_binomial_quantile.ipp @@ -0,0 +1,802 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 792> negative_binomial_quantile_data = {{ + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.097540400922298431396484375), SC_(11.568381290037563253305975817351444024377036234904), SC_(49.67581419477884086070549390307050513757197652133) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(12.977136041273636067294825573363051160267257422387), SC_(46.43808301937089644496373095130068129633820080023) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(13.355446548799362499196093574014767375702882517351), SC_(45.626103029359612367556766004407934151298781150048) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.188381969928741455078125), SC_(15.52940284708738793480132106889874510563268887437), SC_(41.360131052208165673316312211602173007116266843573) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(16.764430009390827897971671993143269955166674809408), SC_(39.199062325902508267047473072514261193252696080063) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.278498232364654541015625), SC_(18.827330684864743271502385688632742201801058689866), SC_(35.937947666898633946380128330076651597919337173838) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.308167040348052978515625), SC_(19.859834305054294539273728119716020535354199181236), SC_(34.447725391983382465551236140743414030393753548228) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.546881496906280517578125), SC_(28.286804773212901440345106101213208895684167630136), SC_(24.86330569705991784268291712045956516535854891059) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.54722058773040771484375), SC_(28.299740373205303221140202770183676832612364871957), SC_(24.851358289573499476668996699249466707769441766967) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.6323592662811279296875), SC_(31.73736778560021399190439490465225517649411428882), SC_(21.903093030340690478633356609280583765345155546618) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(41.581048291789996379031836662067110664529508417554), SC_(15.408543519764343109524257516360446517499916058047) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(43.10384701106176229875584955487632776474324453572), SC_(14.601011028162507643960564673392801813634068117566) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(50.094535137629288573734520653142480510400961256303), SC_(11.397121631223656712589512277532338441195467483516) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(51.098599887179268255648450676362082449552339318083), SC_(10.996003692440138313901526209414132521171300944181) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(62.716516078499341651738309899935421006173913497388), SC_(7.1855867886566362977974128843005441031906018669252) }, + { SC_(4.285762786865234375), SC_(0.12698681652545928955078125), SC_(0.992881298065185546875), SC_(78.135892109397114634653055502437231742885628698282), SC_(3.8338142963160007269966960400281352929892103698611) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.097540400922298431396484375), SC_(10.624056775155116321252971830163132523696456706443), SC_(46.168116272573933025564829848047689892749815610812) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(11.937594680205310062450054769420385143853396936078), SC_(43.147864152428529071931027785565229425525762378092) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(12.290355004920375860856813963510658282713119461282), SC_(42.39042769495045299438101593160196987419972593678) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.188381969928741455078125), SC_(14.317612777721405445071965596006895653029592961372), SC_(38.411036900535023554001380453088305992611092832638) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(15.469376627895497352658331319256284808359682715295), SC_(36.395161073493776973362594888209284880517853786539) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.278498232364654541015625), SC_(17.393291825275618145260282795413109030294855088256), SC_(33.353171765069675931417999475586842722093226138689) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.308167040348052978515625), SC_(18.356266419524471801981332379322445883128639508671), SC_(31.963094506992116634224442588913436038463193120154) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.546881496906280517578125), SC_(26.216303876726192697224223153981767281844891492988), SC_(23.023033560254770287526386240846949403245291727374) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.54722058773040771484375), SC_(26.228369734253914995541211877634676470672322247943), SC_(23.011889788038572395363617637127196883456914071844) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.6323592662811279296875), SC_(29.434900070748812569225007134187585348456304499303), SC_(20.261985460034048292288157734398458612682708046451) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(38.617112313927460960335145788267069989607179492264), SC_(14.204904197096488126288100410890126358086514033082) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(40.03760824455834863265835710080111292324719085546), SC_(13.451845203426820871126354466598672068957015235961) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(46.558712784341762721625765865482997761343544432876), SC_(10.464381400829619482306015575858157249227101387963) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(47.495338004142394072176759174814040313522643424318), SC_(10.090404457802057197979908185083000391010167615374) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(58.332998984396769920995370446832741766431808482186), SC_(6.5387027857285630793165709885860007348429617492412) }, + { SC_(4.285762786865234375), SC_(0.135477006435394287109375), SC_(0.992881298065185546875), SC_(72.716963016212538373008925002498861848899452883834), SC_(3.4174834799389700863014049302100106995335881681039) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.097540400922298431396484375), SC_(0), SC_(1.9547937327529084415676231401628831702037954903797) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(0), SC_(1.7041307252991781679323580074723287867760045629066) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(0), SC_(1.6414748306133560405163701394428396689931747262996) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.188381969928741455078125), SC_(0), SC_(1.3139080330820788064640015554307117317368340089595) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(0), SC_(1.1491765685114908753868077895933142837396779546823) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.278498232364654541015625), SC_(0), SC_(0.90250331040229883092083238887191323216954389922384) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.308167040348052978515625), SC_(0), SC_(0.7906844894303203180025716400800690704614692491791) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.546881496906280517578125), SC_(0.33643388821772044881959233531270322037166163378379), SC_(0.091735147880207113465851696897079149688903180912513) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.54722058773040771484375), SC_(0.33737090254970571341079223904551029855198330085961), SC_(0.090894013814592825141609737324743482898065780375321) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.6323592662811279296875), SC_(0.58906674919926080634908632250576153655308004321212), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(1.3307976988480120615170178638694046084041148521352), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(1.4474500545636407255740334422888311027669007185156), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(1.9872992766331381166501172691754587322828261682177), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(2.065320939161447140828199304809122043263160847658), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(2.9743403170222913933682227515125172778887531678721), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.814723670482635498046875), SC_(0.992881298065185546875), SC_(4.1924853509850394345146624609859359712492767694915), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.097540400922298431396484375), SC_(0), SC_(1.7079178409071888382112767233295154757328901156822) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(0), SC_(1.4745889735036016667743163677457677924180837435699) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(0), SC_(1.4162904010362940285411984061135242974131006375663) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.188381969928741455078125), SC_(0), SC_(1.1116936334489622563000374230836892527422615722757) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(0), SC_(0.95865529557865837834583190604806537898854785956616) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.278498232364654541015625), SC_(0), SC_(0.72971443232583767907740484450701844266905971024921) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.308167040348052978515625), SC_(0), SC_(0.62603871743276241336716309892470885430588607823472) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.546881496906280517578125), SC_(0.20578654435957539606733819394147110908924172707042), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.54722058773040771484375), SC_(0.20665152079860081153721429260279109450429554981613), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.6323592662811279296875), SC_(0.43930604899962627245266961460372218903905055609132), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(1.1273902791007541153525146644324457120504537468556), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(1.2358299319379870542839137873725468238091083665107), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(1.7381860155745523019580819679763567705463527016776), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(1.8108463883970626762098942145349948247449328511667), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(2.6581483604611423296672687586233881889446005776514), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.835008561611175537109375), SC_(0.992881298065185546875), SC_(3.7949950470267022075874317546605823270124738185727), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.097540400922298431396484375), SC_(0), SC_(0.88363331321825375715642717337234855003575333581594) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.71045430617414321474276926275370159590088171899258) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0), SC_(0.66727876093031770394534964261121529020073110172094) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.188381969928741455078125), SC_(0), SC_(0.44242185206833813070299640515675043541769510359096) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(0), SC_(0.32998429550564020028577315054126736024480100800083) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.278498232364654541015625), SC_(0), SC_(0.16261576431011821862926285959718445666004133255343) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.308167040348052978515625), SC_(0), SC_(0.087211897999243794150592945929987460173617372488449) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.6323592662811279296875), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(0.45397634370932193619534190128062115529835010315623), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(0.53390321073029181892943713094659822881600167680857), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(0.90613921339718082652200988725135179234012374668877), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(0.96020063016469196523830950101285124624232815108098), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(1.5935340938699859742576824571685596509768758427999), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.905791938304901123046875), SC_(0.992881298065185546875), SC_(2.4488563960574186547345180307069118204055737783153), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.097540400922298431396484375), SC_(0), SC_(0.11042619189534262790908953978165539120063346376248) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.188381969928741455078125), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.278498232364654541015625), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.308167040348052978515625), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.6323592662811279296875), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(0), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(0.12492707933548932404132387210687773470508202565299), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(0.15980466725911098729064285233845315222755992427118), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(0.57226295659743649286678830817365105319568597964985), SC_(0) }, + { SC_(4.285762786865234375), SC_(0.968867778778076171875), SC_(0.992881298065185546875), SC_(1.1369321436068695377498962278384829019462377490311), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.097540400922298431396484375), SC_(12.25893059687939119996322876958269221296598569479), SC_(51.087414807302476430503936666256449833118965639041) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(13.709419158778537881006632516420192520270496495586), SC_(47.806931135152649784793043676582241839877370607977) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(14.098547610994275136871442560548412759466289526923), SC_(46.983911001248771434117976396121672045613874760611) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.188381969928741455078125), SC_(16.331835698021431801154523835291448105411023383511), SC_(42.657640519414014692788774265870759825798383048944) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(17.598636451905175269479277411596811946654988557443), SC_(40.464426314561116332989473012532350782699263834218) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.278498232364654541015625), SC_(19.711903188362667458821397711340394139675486306901), SC_(37.152515868573876809543410775890497779705421906345) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.308167040348052978515625), SC_(20.768470496231795481545644817717262671929074860016), SC_(35.638081149579012144487963251278170952895579041764) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.546881496906280517578125), SC_(29.36930087161147176592159431981253138356945275474), SC_(25.879463556816837573133107367851361966569915477649) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.54722058773040771484375), SC_(29.382477590797856767528501607415925980898967099506), SC_(25.867275295300009805645978634255537641700833908775) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.6323592662811279296875), SC_(32.881907586305365743979119641487010369968354809836), SC_(22.857343683811152999326723687684579376709287174524) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(42.881780393783447709561896575050033079746350311611), SC_(16.207795984784291413224690113397901515405189803196) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(44.426487200896752083429730510992760306930079373374), SC_(15.378669121143277095831770540754226626427204547051) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(51.511523234867262678185073827608218907681188932694), SC_(12.082431351066992515620070012865769790857744599741) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(52.528380918138772505131626134473043203809655371081), SC_(11.668890818216726146963931467847937701301820651063) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(64.282869475723148444604976457340151662142268994691), SC_(7.7279457531716250976579214034840059399546023671048) }, + { SC_(4.43858623504638671875), SC_(0.12698681652545928955078125), SC_(0.992881298065185546875), SC_(79.857727465918309994754509259104711309788584381186), SC_(4.2342897772806176467454069401388121049224893581391) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.097540400922298431396484375), SC_(11.263392930911391515168360123535715651758335541873), SC_(47.480035777498203691080444311243435647414647742425) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(12.61586300751390979795812127296839555263785244712), SC_(44.419905052178368456387857950318468757614391341996) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(12.978714801579736566271595634680046521920038375309), SC_(43.652170609667906639081183953720024507823224898983) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.188381969928741455078125), SC_(15.061318561290247193565626647448619804898855888127), SC_(39.616534957002788617392997204727810770042888362142) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(16.242720767748580942652272438466216028125808494421), SC_(37.570674780552848499416334968702478706156451778859) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.278498232364654541015625), SC_(18.213616633133179023234564056682386984654342559037), SC_(34.481304808079069839016012969109156879559124136476) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.308167040348052978515625), SC_(19.199037231193778187354987997592948222413529448113), SC_(33.06864302170868920578427603437266138227099193622) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.546881496906280517578125), SC_(27.221244955707124816998548232452955837482351532244), SC_(23.966096913600775539361812106337977797108167104366) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.54722058773040771484375), SC_(27.233535719798247829701059330574236543768460139388), SC_(23.954728481964262080059943032864393473592706085347) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.6323592662811279296875), SC_(30.497713131442431969135979546313433427179351135225), SC_(21.14730402901715857943023665456025822707022437352) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(39.825616352593154356756942963538745957354073723158), SC_(14.945643297413892249662688482038240298181102908837) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(41.266547545179625834282539651299192311190460077264), SC_(14.172440806462254905354297938486122083736748012756) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(47.875657628543348270136612113265845481479045616333), SC_(11.098829581614353501694895833543407833362162424961) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(48.824215853065993077591140536543614378243322099508), SC_(10.713263553391965847819346464628446412312881731662) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(59.789269714264154013859885325755153046270078639114), SC_(7.0397747521049131446147403167162987886602749309516) }, + { SC_(4.43858623504638671875), SC_(0.135477006435394287109375), SC_(0.992881298065185546875), SC_(74.318266912277067911053441760010580684176789578755), SC_(3.7860941252589571884723116050323442189175412931939) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.097540400922298431396484375), SC_(0), SC_(2.016229228811943590529733274178808409704643601922) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(0), SC_(1.7624458093897594826307007335088473117441312876731) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(0), SC_(1.6989863140171035257648546053358694539376364915336) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.188381969928741455078125), SC_(0), SC_(1.3670469031814692075045142766292367490673673003302) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(0), SC_(1.1999961099230724603966516077765245326252328452038) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.278498232364654541015625), SC_(0), SC_(0.94967533338885600170126557789562849855617861933455) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.308167040348052978515625), SC_(0), SC_(0.83612570247248753552050854407991363267300283778767) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.546881496906280517578125), SC_(0.37423162746235820438183325633917834004259995572026), SC_(0.12489340057566566814130039063816330802393925022385) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.54722058773040771484375), SC_(0.37518559749750026012787272607210647413901781395739), SC_(0.12403552062924254959821247151048135038152400776744) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.6323592662811279296875), SC_(0.63124739087971409544135012235224073374043141131612), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(1.3841695436125556957478454154361936278765342850437), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(1.5024078791195589311198936538976854611202631057082), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(2.0491289358428468521540570082575830871881267276915), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(2.1280873946639785406938511125202812395794885684718), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(3.0471772898938074708483656926187671045754823064955), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.814723670482635498046875), SC_(0.992881298065185546875), SC_(4.2769290075217302830893881029915695414299479722625), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.097540400922298431396484375), SC_(0), SC_(1.7627916126193711143512736555270644322287866395061) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(0), SC_(1.5265833492136591540421022433917644984077041825442) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(0), SC_(1.4675435789593727870967193144296629667063567802052) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.188381969928741455078125), SC_(0), SC_(1.1589163460651043233787589976780473904588122854937) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(0), SC_(1.0037420904308344553858066393778329566559699861016) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.278498232364654541015625), SC_(0), SC_(0.77144520748008235970905013638426558408494814322088) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.308167040348052978515625), SC_(0), SC_(0.66617845266178194200763736206081182617274580198241) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.546881496906280517578125), SC_(0.23891382879558701531583610692930573563172679190429), SC_(0.0091540927571036740168911753995223828594032319976354) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.54722058773040771484375), SC_(0.23979433163143679311702730182753255740814832743679), SC_(0.0083650387369646159847448559626953587936867530875107) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.6323592662811279296875), SC_(0.47645140400793023360961439022602722094011529094077), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(1.1748276201802476528138037284695023603357781009954), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(1.2847287183199979845722700613475541031424989244697), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(1.7934236470470585825426451166275690329412299139979), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(1.8669489172671515741605161796239185222439547524799), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(2.7235584667208578055107517412701154054592429800234), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.835008561611175537109375), SC_(0.992881298065185546875), SC_(3.8711519377131032935323999467433702489549347591787), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.097540400922298431396484375), SC_(0), SC_(0.91718441753053256246774840460799309082683763877528) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.74197429022407614735407175773511330273049999382387) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0), SC_(0.69827733642818583134550297286672207651570634585498) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.188381969928741455078125), SC_(0), SC_(0.47059636085352728391785740040699182456378790509113) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(0), SC_(0.356670629509048107707063897133408090235617943663) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.278498232364654541015625), SC_(0), SC_(0.18697733362438091703915694596100146936429308570353) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.308167040348052978515625), SC_(0), SC_(0.11047778041158776687531040479272888589302369771459) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.6323592662811279296875), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(0.48230073153395495029563132285210535234204316696314), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(0.56324971535019921557110352241261776270720486912988), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(0.93994758574938692725772479696113287687157630290048), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(0.99462104955718760508121306796127496346179140086654), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(1.6345829335796032835183305773580337897051945931093), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.905791938304901123046875), SC_(0.992881298065185546875), SC_(2.4976389347682782677046733441629194622249640661661), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.097540400922298431396484375), SC_(0), SC_(0.12561716232502682429377296571942294605835629082182) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.013298027705716899056615110436396867599311735757413) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.188381969928741455078125), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.278498232364654541015625), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.308167040348052978515625), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.6323592662811279296875), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(0), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(0.14026296694324869260918228870540675222781290683212), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(0.1754861034647699064704560546916169192355519761427), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(0.59175024874553379175056420593645202713092057880574), SC_(0) }, + { SC_(4.43858623504638671875), SC_(0.968867778778076171875), SC_(0.992881298065185546875), SC_(1.1609811506564478935439723626084760213864503525595), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.097540400922298431396484375), SC_(77.164315586417023474890667638550122476836584770387), SC_(154.30705501758828215798796385630274036944891308582) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(80.87371593035329045637407522545456463581667243972), SC_(148.7480861461699698435388683962627300678299596489) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(81.846101192197259372049567713853149916210141416411), SC_(147.33755606671424469789540193347434024079444224729) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.188381969928741455078125), SC_(87.264120441810102677101389226816294594616250697866), SC_(139.80813319100646960391184973303454608281350103587) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(90.228001581058382111470655562314434551377666219525), SC_(135.91079564430536849618719706777646207869965231141) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.278498232364654541015625), SC_(95.021950094990911342129199503351245801032548635303), SC_(129.91010536305026025285242046701541799056088649574) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.308167040348052978515625), SC_(97.355938873346508748477360364861740518628862215037), SC_(127.11545840459351982529434360404767663397090628641) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.546881496906280517578125), SC_(115.15014364428750930511991655623919083153896543144), SC_(108.15715710395069549513382985741055737270059868315) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.54722058773040771484375), SC_(115.17605001758494551435618243343514254558930580378), SC_(108.13224411747299384138160759752046850232035913512) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.6323592662811279296875), SC_(121.93864483648763007233087252241338026598841076326), SC_(101.86168474852408237920927615010244494628507566751) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(140.20323882307064185066291368891455978208426858057), SC_(86.969916834802306252385366519426109104086069620843) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(142.91085211890910782695556602717891155688251175425), SC_(84.983847552988481960916054583838011397665869484557) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(155.01868801455287170461271501943359003943968311619), SC_(76.703142792173694215401226417707387051241586721201) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(156.71866680718943335923681156360333533761746447003), SC_(75.613629590788201230993346964504089134783719648197) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(175.80222819528816659106678161973028089982139832541), SC_(64.461810224091190893137103940112289149280460206311) }, + { SC_(16.6650257110595703125), SC_(0.12698681652545928955078125), SC_(0.992881298065185546875), SC_(199.81491988277606943482795496892378958168254710429), SC_(52.804324036829547048149046648029679257766536523631) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.097540400922298431396484375), SC_(71.422267394138613536139754432519863738700649649316), SC_(143.37748917204838789001360028042267277477085866116) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(74.881876275769218439367223498045535364257462936248), SC_(138.19204666176681194577204794849546188844697318265) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(75.788791565300491093632000023950003928722942493049), SC_(136.87629892065041935447772920777437044783030347681) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.188381969928741455078125), SC_(80.84209148416548264973614538568496510681280739779), SC_(129.85285467624284980731490140341415704390726471879) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(83.606502679613640229336534173050813124575861208209), SC_(126.21744028078879791257028206817169497906812863288) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.278498232364654541015625), SC_(88.07787817059469117164580559065513445079524265191), SC_(120.62006240694212392846326927638109217556629203407) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.308167040348052978515625), SC_(90.254843217691235247945131989032366179339430892417), SC_(118.01326097404392410704061889736880212463319881678) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.546881496906280517578125), SC_(106.85233082772437273437370454881558290802878143392), SC_(100.32956579497101757388381430841970246814547446565) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.54722058773040771484375), SC_(106.87649537109947262137745326823227258516013451804), SC_(100.30632817068381730027690954127515159555390795965) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.6323592662811279296875), SC_(113.18444005892532704819319465821998974910211029015), SC_(94.457496910131505938340726746210482143261470091827) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(130.22140782415621521492165145931478277768686057422), SC_(80.567689556599071259738491124775820497485483244065) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(132.74706403361442824681208832240653658482026080256), SC_(78.715303230314616964867288353930389527572803087827) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(144.04130678884775954507918651099975719513397088591), SC_(70.992154766489918226561595497586091377396872200488) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(145.62706368320878748470661057837279237830619143586), SC_(69.976025123263392217640393484742663381195390554064) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(163.428524299723312081994455880137028567368302585), SC_(59.575750283965712466039248648604102623444750872701) }, + { SC_(16.6650257110595703125), SC_(0.135477006435394287109375), SC_(0.992881298065185546875), SC_(185.82821970856794562726820958190774426530892597985), SC_(48.705026590906157690713495250353233049404191056637) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.097540400922298431396484375), SC_(0.71252548661765152839146010158934959420760662423545), SC_(6.1953919837845181031390214672196071297649479422468) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(0.9455733749852267160236893609566286676144037405926), SC_(5.7759192353294601257689093310418655053945590221822) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(1.0076387056632811910717439308597729824938823815715), SC_(5.669803360665967895588085133336298813255828191363) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.188381969928741455078125), SC_(1.3599717199188943585885994287469422336352839287248), SC_(5.1057726890645179842420661557717100531303181039733) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(1.5568840032508634401094759000205331542828016702596), SC_(4.8155668959818617083993804993917705205260967028792) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.278498232364654541015625), SC_(1.8807387849072588577931766148896690866091007551742), SC_(4.3713681561237662532658407683353189027620965370627) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.308167040348052978515625), SC_(2.0405556022736788385853239260452707582836329653575), SC_(4.1656882662251887438632709224498535367262341060662) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.546881496906280517578125), SC_(3.295136604779279500042336355329986815331843398104), SC_(2.7953949502471461079017079630645731191173391004398) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.54722058773040771484375), SC_(3.2970016210008746519611865993564325343954335111252), SC_(2.7936285659341856185975028458204493574125702549868) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.6323592662811279296875), SC_(3.7869112766537811459130510320305675753538201510441), SC_(2.3525957209153769004949080828763973453457299219391) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(5.1352629775535191039242567235645846039324231673734), SC_(1.340576796602420360728069949982139897419599118323) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(5.3376854430115081604944363768766237840782207573474), SC_(1.2104078508006732009681401677740538671551355290283) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(6.2492296291821699998881057894845187815260595520992), SC_(0.68399240281077147794756095599565931738956838004125) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(6.3779604588970546306213943114504088614259846563174), SC_(0.61699924031550661660306016412772112219225111419351) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(7.83340458131777430576608901144473079101478717143), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.814723670482635498046875), SC_(0.992881298065185546875), SC_(9.6859186159785436963124152061119734277155767322909), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.097540400922298431396484375), SC_(0.42990075983882364330910169963179486196462416156412), SC_(5.4699216143912682675400856176004141145566977848919) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(0.63965780265789821784912918419750386496202786138081), SC_(5.0808874912216856131213138834076175952592444625028) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(0.69568702987188085547377830505649148925731890648076), SC_(4.982513323292578768034353123866507838009915127354) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.188381969928741455078125), SC_(1.0148403215888894004933037558501437541075374878568), SC_(4.4599456988025969927200645441431876913330109333705) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(1.1938858042495714925636264277320420808371960094165), SC_(4.1913015942095166198933058418874492493634637206766) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.278498232364654541015625), SC_(1.4891962191355990939766533455840670246495850472156), SC_(3.7804524955408023525036634041905592777345960097735) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.308167040348052978515625), SC_(1.6352549961999981688273556950947541827750063296511), SC_(3.590373301302647258696625103894911577259963669331) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.546881496906280517578125), SC_(2.7872064360107457674955465860965517709334289368977), SC_(2.32738585956973360325438999501419528680491215422) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.54722058773040771484375), SC_(2.7889243814728950682673158013041807044839468859639), SC_(2.325762543530163372137930138957268161834677213114) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.6323592662811279296875), SC_(3.2406249044022766531252520491005115222750663285686), SC_(1.9209588441770396888109641008787788800999454053469) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(4.4872540962653711979920578545255137454570976316683), SC_(0.99722907288574476640069009694370109687226125426838) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(4.6747431309951221992258929058903014112308005016888), SC_(0.87915277287722362022909267587800763245297237171403) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(5.5198705150510170243970422537025387447533685380225), SC_(0.40429510885377359449618824280923422341370140917859) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(5.6393186089090606868736222787847846419475702675352), SC_(0.34424832551156581480931610973787275518454750093484) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(6.9911407270647260733087322684217457898382181138898), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.835008561611175537109375), SC_(0.992881298065185546875), SC_(8.7144575266254253099421036726069171334963569907667), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.097540400922298431396484375), SC_(0), SC_(3.1031836908381855458889927242360170923573846360902) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0), SC_(2.8204516565337077838526733668524752014339051673631) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0), SC_(2.7491270227819224080694228358626076346215375898203) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.188381969928741455078125), SC_(0), SC_(2.3715285914122314446065781567289364423914910090304) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(0.10148767494910622729367689584929079358886561072658), SC_(2.1783421939502555346549260938143162743335871892313) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.278498232364654541015625), SC_(0.29542066408902889600457969625012218858553094315144), SC_(1.8843114888042336994291389108525862443003981763976) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.308167040348052978515625), SC_(0.39270931742027065226828734105437572893393547703045), SC_(1.7489281219164033252141403347232929408137149880138) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.546881496906280517578125), SC_(1.1824353951035366280881382415910759802663629391513), SC_(0.86321874141731574301524061391743570672229255768239) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.54722058773040771484375), SC_(1.1836359418719265434684927834541575296568240234307), SC_(0.86209993071902682689898907161476130414051190451853) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.6323592662811279296875), SC_(1.5010463175714840427957375486846661796742676001705), SC_(0.58521026729852853210473861916001589786891392419055) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(2.3912040208188673569882466544588280688841591395678), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(2.5264642950490542646403097320408738571203012356295), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(3.1395573004347150704634586526113886874682985363614), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(3.2266049522668212859314390792682325836294680621877), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(4.2171560511944778247076752578655216669888340739793), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.905791938304901123046875), SC_(0.992881298065185546875), SC_(5.4908799340173972666111638450414166315574102778387), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.097540400922298431396484375), SC_(0), SC_(1.0374206287240739283577484495075633217099981206053) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.86563249253262857353892402645213967522657648568456) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(0.82254675507948616674151182097285385360725254007485) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.188381969928741455078125), SC_(0), SC_(0.59634622277667767070419996148429194637289053201857) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(0), SC_(0.48199739980919830094421421498841509846802921052731) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.278498232364654541015625), SC_(0), SC_(0.31005444487815978153017705301474768261294673549425) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.308167040348052978515625), SC_(0), SC_(0.23184503878916483920415769131899694892590984123325) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.6323592662811279296875), SC_(0.090450569492071437525965196627770947039897885686424), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(0.6080480039444390782549392481260079041275153943997), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(0.68875477330859779448649672913536415066643152006365), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.0596299080769520311145602220934697133273458743156), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(1.1128746884562313445604010490432165121598104616101), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(1.7268423627991006620479418697319303339609001048657), SC_(0) }, + { SC_(16.6650257110595703125), SC_(0.968867778778076171875), SC_(0.992881298065185546875), SC_(2.5326980370661924506202049641073156088483726002909), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.097540400922298431396484375), SC_(79.246780966080558202939635968605006257471740350755), SC_(157.24507639911748767001426335971210639042796877524) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(83.007024468305236700746329941613823823438518410613), SC_(151.63512196779495178604946470487259889819777861732) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(83.992515102960380731962541624991996189675003579936), SC_(150.21145568497154971920097506814535752850053205127) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.188381969928741455078125), SC_(89.481953091506805543928400745751951877306807314465), SC_(142.6104811141682720577155471294020282878060887381) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(92.483808488948198698789235237405664816826099114067), SC_(138.67511878378298738450976779169586800473306818682) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.278498232364654541015625), SC_(97.337646601750561231394493744910625194566448098551), SC_(132.61448109779207388173711871121805085300104208624) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.308167040348052978515625), SC_(99.7001412068385296686030825769832375145601351881), SC_(129.79130848198598590609635187690756394377912131743) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.546881496906280517578125), SC_(117.69914461354449691189020665280633326436056319036), SC_(110.62816394422800932775000952326048992292091030888) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.54722058773040771484375), SC_(117.7253343763956380688995642464593268525181087272), SC_(110.60296760288884986566488267440502029188868285958) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.6323592662811279296875), SC_(124.56058081719399297575278568819703237087464554097), SC_(104.25977450289734043101837236660714375944465445192) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(143.00940306373868153606345883669377736135301112447), SC_(89.183938931878973275807277552840160065030019965058) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(145.74298264691918047876751461087605962328869726114), SC_(87.171946310720498301498517485781298988789455715625) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(157.96314814040707800661877033892569427860831372438), SC_(78.77919023281181950292644597730069470467374603355) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(159.67842909157167502160988449645034029922821917077), SC_(77.674427102447200221159155860949042993954573217661) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(178.92660862536277136031903133406907018110911393364), SC_(66.358863401314844978011199086427244428759055541459) }, + { SC_(17.0301532745361328125), SC_(0.12698681652545928955078125), SC_(0.992881298065185546875), SC_(203.12999587768655434986512088017096043138974996193), SC_(54.512758677678729461110598683829387755571897718271) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.097540400922298431396484375), SC_(73.353295869229839230675790841342139231172853209518), SC_(146.10655424154979103421877973941451339458285359365) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(76.860330418691462876713684328442746525935370088802), SC_(140.87355391980849123365706385458800300008766822775) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(77.779470144829572937834071463017235860386964115185), SC_(139.54555312943179592211138797211980957621911878334) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.188381969928741455078125), SC_(82.899387826448745013731299903723859501408713517864), SC_(132.45536771504967430576915585721909118081433430504) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(85.699220397450411609287810955487249654632074396806), SC_(128.7844850387993257055225308334433916680431599669) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.278498232364654541015625), SC_(90.226459156020006273827407364535445762653327178539), SC_(123.13119022525215562341207648644703379588104272998) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.308167040348052978515625), SC_(92.430013552370207791627124667424412894975098899179), SC_(120.4977810280032454910563240812813462175966244141) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.546881496906280517578125), SC_(109.21853042137055582734219994881358744481664909522), SC_(102.62301516559236623358102470156008871382745767774) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.54722058773040771484375), SC_(109.24295930066081884453728412479766518906210912712), SC_(102.59951323761555375544115309452169084621988963977) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.6323592662811279296875), SC_(115.61867089731682547238281220330012367710134041785), SC_(96.68293168599300560888561946187388041969671836807) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(132.827480601220949152212838201766529815355046243), SC_(82.621431512098399649588731337330517062021380773573) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(135.37735733621474238470027264835911868990759399881), SC_(80.744864526433831433658764159095793020453685782176) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(146.77637773176666020109532209022606554982535432596), SC_(72.917196673061891946568535878436735314599789572378) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(148.37640803869753498852207041192107588710563380934), SC_(71.886842078541657231350414494362802871250865476865) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(166.33142011761128122908276755183745663618312070302), SC_(61.333826285055338567763210731603698518017496579349) }, + { SC_(17.0301532745361328125), SC_(0.135477006435394287109375), SC_(0.992881298065185546875), SC_(188.90899231041831195403314928456200016744213185623), SC_(50.287151153395194698879580290169476385386148978995) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.097540400922298431396484375), SC_(0.76467699250640560306559252770310186345345459060479), SC_(6.3094270690010673790396108352641554487314122325168) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(1.0014671125242693219901881441986929905805530881232), SC_(5.886259664057651338936199856230807091337653451133) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(1.0644928217031378449992002724381410007202959502354), SC_(5.7791927700168423325028007819422457984809352352207) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.188381969928741455078125), SC_(1.4220352247117311533730612966875746891207057206082), SC_(5.209988025017188841301975768924530266224877978669) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(1.621703943551428897445464787877533902147305478893), SC_(4.9170364434971559499019361001439014433275352688145) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.278498232364654541015625), SC_(1.9498922229900387681920770420371531587284549970904), SC_(4.4685136793819080939529071646281889187951702892606) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.308167040348052978515625), SC_(2.1117671716605896672382244323882769665881819891465), SC_(4.2607780383398794656199989930247881675324674920702) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.546881496906280517578125), SC_(3.3810946493641250381370937653855278149035353443214), SC_(2.8757413229094264823578353443360600163769868546473) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.54722058773040771484375), SC_(3.3829800553679028431350522841085588884469878524482), SC_(2.8739545479486596173214204666605529333747683656643) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.6323592662811279296875), SC_(3.8781182346704195915867981177032729357254978212191), SC_(2.427692384326522905189943768280807086907953137713) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(5.2397540337408834852053591526742200884447094644751), SC_(1.4023632521687765303264786071119010054427158309444) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(5.4440532245804130392760531471128934249503667724354), SC_(1.2703070437058975960854812305510545958197168785993) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(6.3637316985839658664040254204240470645766998738953), SC_(0.7356694529763938385409495263678977492328550129252) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(6.493572721780467671944541185774658065528770774587), SC_(0.66754683026626650560931633233333467899094831350751) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(7.9609946601475676537314366909004857591866478039165), SC_(0.010290323615060139585504120206431986047076529827239) }, + { SC_(17.0301532745361328125), SC_(0.814723670482635498046875), SC_(0.992881298065185546875), SC_(9.8274674240398902253127100807576354641588936110673), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.097540400922298431396484375), SC_(0.47362966266244515343861449158647223093359666962665), SC_(5.5706562176911406958880232282155767514707377178753) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(0.68683790831943933902409984669854406228744184962823), SC_(5.1782156759351620706260239528654331731970907013737) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(0.74375251817112828948825060733573323486647022567888), SC_(5.078964817513348197844659532009139542521114977621) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.188381969928741455078125), SC_(1.0677064737779829678396192466118616144535163758854), SC_(4.5516284519425132520922369294494398511418124114537) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(1.2492910271752415416659604521727275280611456115703), SC_(4.280454285000421258315799999101193037957963335625) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.278498232364654541015625), SC_(1.5485921173446054902158098241121152541180825757071), SC_(3.8656217035753779488502370234881454949280889912661) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.308167040348052978515625), SC_(1.6965458716736065133787023489488376460421498481069), SC_(3.6736489885095663184045793550919667165452856247374) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.546881496906280517578125), SC_(2.8620731656108624951218377075255723756311808098789), SC_(2.397086294647162862467517937918809761550532816202) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.54722058773040771484375), SC_(2.8638098838316941601471146906567676991633142800751), SC_(2.3954442071818509386822078929438468806485159380006) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.6323592662811279296875), SC_(3.3203247108825141612069892615790745736634266633488), SC_(1.9858264791566931846196869349578272719825965371739) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(4.579190930700989595845257083735096426138440977127), SC_(1.0498399860177424674558346770316224616924879677147) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(4.7684095185390488928120342631265493286702835499735), SC_(0.93002479016663550163564303212332146048786362668235) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(5.6210357310913713192739903108223665145076303282971), SC_(0.44758631293437381965844008209588652395846624563105) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(5.7415076049520179474184938879395357434042534509103), SC_(0.38649744355647126447910814311119393631528202904401) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(7.104380222386169694902599662755425591373405100152), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.835008561611175537109375), SC_(0.992881298065185546875), SC_(8.8405867211644999981457715457296168992111549192304), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.097540400922298431396484375), SC_(0), SC_(3.1612717792770215477828062742807181641644225255667) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0), SC_(2.876148268738741432166012498320630213857011799254) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0), SC_(2.8042087733479612782938529897426269758319027296103) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.188381969928741455078125), SC_(0.010852478341122081378284847139187258690005374380992), SC_(2.4232702362010460029383717364032223685742596724315) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(0.12805027055261101537122084892614168218393519979769), SC_(2.2283147555292011211093411469650699666388255419058) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.278498232364654541015625), SC_(0.32473308899073450073099713287219143384954242049793), SC_(1.9315028776382889173863866278304198110204786758527) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.308167040348052978515625), SC_(0.42332962692432653853276089196957085350085083845619), SC_(1.7947992658406691373109816966272749369278932833349) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.546881496906280517578125), SC_(1.2224567342918784628688269228443656148378155021967), SC_(0.89965636030187358473725226836265287684270437526648) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.54722058773040771484375), SC_(1.2236703171370315490653904112461818326846225001653), SC_(0.89852454211338907581012232616907881654833126790193) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.6323592662811279296875), SC_(1.5444272415169183772782686156861811943076221112007), SC_(0.61830230237898182373439926118511158990684877138324) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(2.443123440627431891632290838791322936043913991121), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(2.5795944049487256138523598227474662782024973248018), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(3.197947973035442929048553596575241306697191969684), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(3.2857152629456466692610285245025122831839752330205), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(4.2840558928156667947874829242338957284417614041026), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.905791938304901123046875), SC_(0.992881298065185546875), SC_(5.5669153224772788575638587484635953891185262136926), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.097540400922298431396484375), SC_(0), SC_(1.0603642312910826733267556045333721350523541455969) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.88726239495091533910743890639075896923603697803422) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(0.84384019236408167208846324034373870938162899236312) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.188381969928741455078125), SC_(0), SC_(0.6158217152673041980923886854169600309515663616127) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(0), SC_(0.50051717410028358768520592168595121352943796472749) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.278498232364654541015625), SC_(0), SC_(0.32708276466237010067355204506897971567568673813701) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.308167040348052978515625), SC_(0), SC_(0.2481704776243976519515094205998071974718083114969) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.6323592662811279296875), SC_(0.10546022943479298113572336972360399370242392838202), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(0.62761982026350757393341120689771458133427413174493), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(0.70898390625649660012211119787702744270924372448477), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.0827402825174051563703030981363971563774813477528), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(1.1363821839831785692409371751391813963756747411595), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(1.7546894970518275291438444797501880939925027927796), SC_(0) }, + { SC_(17.0301532745361328125), SC_(0.968867778778076171875), SC_(0.992881298065185546875), SC_(2.5657206628988033090589933791790515523582059905935), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.097540400922298431396484375), SC_(86.548865090237746659034104773727186179850292808047), SC_(167.46179025792665966467814591895849707952792347939) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(90.482372122358633151921675805949750899158397926453), SC_(161.67812086688900773909577265048521116647706204109) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(91.512520110338895134618553040608628281308757908382), SC_(160.20969950476146648609092505063780223179088690906) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.188381969928741455078125), SC_(97.245301850477409483342571999873420210080008951838), SC_(152.36495979595358315935306662113521696621738207472) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(100.37653432716653490487771845179531489717063529151), SC_(148.30006028230217588512306607154865004496750711616) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.278498232364654541015625), SC_(105.43440092691939481983160732670579459180183667436), SC_(142.03521096375478476143848488320518342331120888809) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.308167040348052978515625), SC_(107.89400279626148656132315452644961676779262349367), SC_(139.11486826356609204848404947511629301649598508878) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.546881496906280517578125), SC_(126.59061862474257008571837968124475568287046302183), SC_(119.2539700374463705390965063790811887764399283937) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.54722058773040771484375), SC_(126.61777368277086667625712184861843879407105920303), SC_(119.22780851079598697545563755804326323918194049635) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.6323592662811279296875), SC_(133.70049099846749373224890443541061785550404386583), SC_(112.63720119746338675965715240708138616474831644679) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(152.77688286399325591841376752396493707911682718973), SC_(96.934304841227186720699160049634165216577852408227) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(155.59892360023471231605989408939544126019309934325), SC_(94.83398717542725772921501660451902653983202680201) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(168.20180054022573335229324167996035835553406594011), SC_(86.059401777096490289608438854885579974213324714679) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(169.96922086716139287015093181200169241039821945968), SC_(84.902664865441539778388104728429431765436481708601) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(189.77838547631535388070352368949308058697701651722), SC_(73.028887436514153465076798461062265136126171074893) }, + { SC_(18.3042545318603515625), SC_(0.12698681652545928955078125), SC_(0.992881298065185546875), SC_(214.63183532518319775287237264444803612557404745334), SC_(60.539311887219147804311533834829674985616062494913) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.097540400922298431396484375), SC_(80.124567105431644740144330862383371757207996731202), SC_(155.59650244202501533346903186997686317160847635833) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(83.793218842845068375207238317987837832578737174142), SC_(150.20146602684640531861434939277022032246592414942) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(84.754014035029445820540390863979824331847309779572), SC_(148.8317190762773803352059141631754263824592866202) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.188381969928741455078125), SC_(90.100917003713639800866113855279709500347502054983), SC_(141.51415726148060999204603950148528088536098163278) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(93.021428994101908130589773671707437255717094933307), SC_(137.7224465381768031234663586706194904765609913284) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.278498232364654541015625), SC_(97.73897948142690824991626494197672333994341537493), SC_(131.87866995354924354923096662405307794557151498931) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.308167040348052978515625), SC_(100.03311248737374341656107313196639206072605757891), SC_(129.15462381323814374825676332416751597541962098129) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.546881496906280517578125), SC_(117.47233858709638548834403098994382316179690307036), SC_(110.62901752259269100522686989683672703301973150917) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.54722058773040771484375), SC_(117.49766786005383707593322891633843564386889635566), SC_(110.60461530299720856111029453608626251048150681661) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.6323592662811279296875), SC_(124.10421166886941339267374411364173914183849394154), SC_(104.45725416599252864497992723903565048749525784393) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(141.89839717052279788299732226825187082869399418703), SC_(89.810850624765125836204936675576796211736717423973) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(144.53078763347793264646252442832192453263456099211), SC_(87.851896249475819906445086887232462394802375577297) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(156.28678955881302102549391004856849907460308722927), SC_(79.668065486421079623175589882418604411849384195863) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(157.9354539576270035361560635753094750865747820642), SC_(78.589230446038684536214161497571928832177755283607) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(176.4137379024487794084212759360565407260224048342), SC_(67.515513384839658361962696642785688722932076143487) }, + { SC_(18.3042545318603515625), SC_(0.135477006435394287109375), SC_(0.992881298065185546875), SC_(199.59767437965708024210049343998213068102736107226), SC_(55.86858459239310135359400617781854501115078421882) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.097540400922298431396484375), SC_(0.94919207505004139075519856716293456507811217483515), SC_(6.7047423898027929227375551535531873519226420937742) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(1.1987282582764880808288968562905663238567395033223), SC_(6.2689901199886353689245344054293269234442706401551) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(1.2650252242221898932469114253524113302821372451131), SC_(6.1586838558532746132355589903558838277241850017884) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.188381969928741455078125), SC_(1.6403130103717503546710350314181417806841298127129), SC_(5.5718552201835424994254525656631335159407723627959) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(1.849371830323330544005854145649946488894784018886), SC_(5.2695509530389698382132850768156806559700123307113) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.278498232364654541015625), SC_(2.1923229882088037106095788742811731674582473143171), SC_(4.8062996211836590996894525160518368769638816363099) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.308167040348052978515625), SC_(2.3612093983435093809170686689116830831282142998944), SC_(4.5915615683847653202617240608909891172494733163898) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.546881496906280517578125), SC_(3.6807722764983589546848744967190683158606089778955), SC_(3.1563027028430219316557184423196085805168527166675) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.54722058773040771484375), SC_(3.6827271392968548182840551154615915003400852703616), SC_(3.1544464655360497361999475404562421920943911605891) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.6323592662811279296875), SC_(4.1956757254597281144924812311020509303182093749743), SC_(2.6903699472145263210980532842158391657683486158542) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(5.6025603840384219374872919764932504173717935237984), SC_(1.6196972543105914280261129323353585502542535652311) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(5.8132520552460891767755153219979687665492890186372), SC_(1.4812120763746237394124839328701660708866560223328) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(6.7606376907017769733678967375041984766355871633501), SC_(0.91856863585117386557113012026097864303724122059745) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(6.8942603411113264838239546071699234539200611272362), SC_(0.84659939836250886620078769640600330711052680437665) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(8.4024840835053642550700466097426772974230843621107), SC_(0.14720822645066944847434233438662841657908293508864) }, + { SC_(18.3042545318603515625), SC_(0.814723670482635498046875), SC_(0.992881298065185546875), SC_(10.316514198093407345772311034665818757982482476187), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.097540400922298431396484375), SC_(0.62852987601430671694042451498641415153060429182288), SC_(5.9197569493183662854516087662332574142091896147859) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(0.8534970772763639427920171482054891356355765484245), SC_(5.5157137361146846233569914270609943166044976429884) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(0.91342835323220500862793289181652470722795922915704), SC_(5.4134767702126481752288877824009365546338234398305) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.188381969928741455078125), SC_(1.2537391159621740145797903647747486295769699333451), SC_(4.8698974783041695947439862117620708681550821372504) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(1.4439747848485013361016162679787199959308547316816), SC_(4.5901055115515524269834792649576258342727077393019) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.278498232364654541015625), SC_(1.7568727640583521544425757464246411328398316864258), SC_(4.1617043125729031673512151431651136916959028042549) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.308167040348052978515625), SC_(1.9112829139130547635793506847240305419733011546622), SC_(3.9632817185044167006027794612600589422195947547316) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.546881496906280517578125), SC_(3.1230611987108787006156148106102119414269849091791), SC_(2.6404743089576991143020499431998326099841474280026) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.54722058773040771484375), SC_(3.1248618682109692905367584796993136385819219248647), SC_(2.6387682709669829674224707840261683648992994322226) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.6323592662811279296875), SC_(3.5977766736272246431245501720423539463631894330324), SC_(2.2127496655532735691788178979839467487858779641162) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(4.8983253941688833343117012096756400983913235808598), SC_(1.2350029772540016233538445570647619728734735456197) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(5.0934350692139044477418276739584594784420285439066), SC_(1.1092630140135207470521253662635454019931288283175) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(5.9716031870882601917821521769618108315462461372898), SC_(0.60099517793689005772947227371052952814783041760148) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(6.095562199902746152185504586591238049548417188185), SC_(0.53635562607505522150256479953030095956697570188026) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(7.4960757282718020617119066557528093494028313154879), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.835008561611175537109375), SC_(0.992881298065185546875), SC_(9.2761939689773967520869170667606520685017264349874), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.097540400922298431396484375), SC_(0), SC_(3.362247643386310958473539492184977006184281840929) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0), SC_(3.0689798718686380692014117915958306375063228629316) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0), SC_(2.9949463684156325947158311075872069234819289605931) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.188381969928741455078125), SC_(0.098413065226003839479351384090991029759740936930936), SC_(2.6026319285881139032387224679505911736513450246522) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(0.22157409571149927180039867790785653697281103064878), SC_(2.4016506940569231330008760407569144763531655977698) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.278498232364654541015625), SC_(0.42764485890929397089794038075146313387839506382657), SC_(2.095364850474955871909119528389430149042602452011) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.308167040348052978515625), SC_(0.53070446477930318871506110816851663273585327833771), SC_(1.9541634358840504055291751186749435255018348422191) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.546881496906280517578125), SC_(1.3618875990524636216889946166439604910955017062561), SC_(1.0268712894967200156502589010663422721533506854198) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.54722058773040771484375), SC_(1.3631456115070048173825579250745040420433122457615), SC_(1.0256951247920073412845056081133014728532455100358) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.6323592662811279296875), SC_(1.6953068603134513046864099806556812615371067545095), SC_(0.73410895421363225293975755551450255854118498387793) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(2.6230906389060206645968387049870449832835363102085), SC_(0.086382187232167803202701138110655621631606146078231) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(2.7636851455073073238415900249395207595065181101416), SC_(0.006145356743807486045292644752664162985651694941866) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(3.3999542697576417422650136854221823419087004903252), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(3.4901722220941302379335045286570695036446984936367), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(4.5150380587523322581041019855135056205048116937733), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.905791938304901123046875), SC_(0.992881298065185546875), SC_(5.8290061236751525497492628066021854410284141154799), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.097540400922298431396484375), SC_(0), SC_(1.1394221126046781974288831094405818051938878829726) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(0.96184821286558914554869958013233110265735887873761) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(0.9172804425285785718046277940591628758822716665553) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.188381969928741455078125), SC_(0), SC_(0.68307086409683844802819286811233323946558893429242) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(0), SC_(0.56451038005033535473471974296637035175367795365946) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.278498232364654541015625), SC_(0), SC_(0.38599284105957923732144750257796569450135022237477) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.308167040348052978515625), SC_(0), SC_(0.30468400233276436235664792089621264000632838165925) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.546881496906280517578125), SC_(0), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.54722058773040771484375), SC_(0), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.6323592662811279296875), SC_(0.15748534598946719683038586458555474098306836483445), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(0.69519707566396142178173757059101408004739531710646), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(0.77879994751093990023601584735599007270334899179413), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.1623658100433697060534626305007703869730399077967), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(1.2173593424911361976911174480981192418028768932487), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(1.8504324459543146249665693415521673945088820631078), SC_(0) }, + { SC_(18.3042545318603515625), SC_(0.968867778778076171875), SC_(0.992881298065185546875), SC_(2.6790669139300149512449480393936282522955933021319), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.097540400922298431396484375), SC_(93.098684071399987254156209637410163767980858223509), SC_(176.52313770359206917174861393843004426841301064195) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(97.181555123185542558517054963194252747203885827101), SC_(170.58975290847638276138624750264630965898056986868) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(98.250196914509394107032061716501732895455773898417), SC_(169.0827616859914063682367015480379904597105391068) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.188381969928741455078125), SC_(104.19271371455996019583163566527019770918248040943), SC_(161.02795902343558304337089424400916778171152924355) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.22103404998779296875), SC_(107.43544117764217837365562238153355666389505493455), SC_(156.85143997267466778513200360133145064984787735927) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.278498232364654541015625), SC_(112.66912075971412613174019959016844638853059515766), SC_(150.4106352260101242670310327919827574560007151389) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.308167040348052978515625), SC_(115.21239530359826016919697061850973819441947705215), SC_(147.40657100089893242286645336852450383073723848121) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.546881496906280517578125), SC_(134.51005376814708850997279885654893246041172459693), SC_(126.94452031095568491150205701343659757074568914941) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.54722058773040771484375), SC_(134.53804046925614622510237034552935444721553049479), SC_(126.91752722662361545848424819347736905983017968273) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.6323592662811279296875), SC_(141.83396617942396464067428529270526514875707452102), SC_(120.11375556569041297890394129502441665648815363766) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(161.45108518319808464680719359903512599904933871984), SC_(103.8705278268562569909941985246716159771381709485) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(164.34935461804796500109130267679121419180933349162), SC_(101.69408736274219095833487126978670471097602589897) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(177.28205657705010098716196485472498184408774287895), SC_(92.590363516194684818898086541419467783712973957197) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.9133758544921875), SC_(179.09441617913627236332307735567140785078372130421), SC_(91.388816246725034814612521864743852085162269441616) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(199.38718789528767272070195308256135304765378079246), SC_(79.033590200891596689995043919987788830129094942056) }, + { SC_(19.4396209716796875), SC_(0.12698681652545928955078125), SC_(0.992881298065185546875), SC_(224.80128017561359848525041654813469775801704107616), SC_(65.988510823274106369680322730468508337550821144183) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.097540400922298431396484375), SC_(86.198492492484507886864575792646405840636045241575), SC_(164.01310325384358248160704948431456442830002873871) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(90.006468142127198501328736035700449497687689310809), SC_(158.47841686387544659257474472649783469768909458494) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(91.003169517268944185449958082464554517239152168381), SC_(157.07269314763294337405079102028131743254366891122) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.188381969928741455078125), SC_(96.545708168188851730034173196272601897536680909849), SC_(149.55919132259956811101685977185677237361968971834) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.22103404998779296875), SC_(99.570219567266032958918409094584575143037726031559), SC_(145.66336557258348332825602609487163722276703812905) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.278498232364654541015625), SC_(104.45176310267707909399775268918834908538761867033), SC_(139.65546369214673911752173666573710743606014034589) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.308167040348052978515625), SC_(106.82394332126766893738462072847739169767046971625), SC_(136.85332498040725387338106759227875748092018836985) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.546881496906280517578125), SC_(124.823801504640430408392893354441985400626446227), SC_(117.76698461349280957449892635599695628985514034623) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.54722058773040771484375), SC_(124.84990650514688876183409233382929949183579894535), SC_(117.7418067456648874296899602524785122574571600621) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.6323592662811279296875), SC_(131.65532365080599943436785264217146843835026739331), SC_(111.39561317921959920665836175192852856873663391569) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(149.95388111047413645421560022210513803341544479096), SC_(96.24520510354300874217958004066959170628063043103) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(152.65737523961909894844267070259280368591721361774), SC_(94.215245357223090891406084002019307806923424256022) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(164.7210277415177091092357721370247209524115569294), SC_(85.724401147605860246815490336281188206841593341806) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.9133758544921875), SC_(166.41161016964834464402794811997708852027695894311), SC_(84.603767692085929386484741961910463127861876912923) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(185.34098963550311856373884318848557405443365846235), SC_(73.080957266073051525369310963481921685581418547123) }, + { SC_(19.4396209716796875), SC_(0.135477006435394287109375), SC_(0.992881298065185546875), SC_(209.04788080896296129188822476810829173802022989108), SC_(60.915837557605945157699850101496534050075253115139) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.097540400922298431396484375), SC_(1.1166937313483211159808411039288577106477304299817), SC_(7.0538598853933835939600905882445880677785309738501) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(1.377208171698357215747505484968830394013707816154), SC_(6.6072653924234041150438964510939028726111915142548) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(1.4463230149311405095755039760337731015832427889712), SC_(6.4941683452536965803703924155102003715322771470765) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.188381969928741455078125), SC_(1.8368984828689720558482143741274529502420020114149), SC_(5.8921564618962175713666799634518275006283447329056) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.22103404998779296875), SC_(2.0540477335330767850717695757887443891593430417574), SC_(5.5817947149437128360164012405652928114211582671581) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.278498232364654541015625), SC_(2.4097190959794397195197212982628282751987723603843), SC_(5.1058543858195126704379139139393039506734105720766) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.308167040348052978515625), SC_(2.5846469597557137414777258617158691587776821986909), SC_(4.8850835141014783539317069630818518791510134798264) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.546881496906280517578125), SC_(3.9474944526574447129368801577110408235911501914915), SC_(3.4065540663418679596905906562775333562865629847198) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.54722058773040771484375), SC_(3.9495091590563865120326507247659723458462827993029), SC_(3.4046379781196282864457302795535964881815997130845) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.6323592662811279296875), SC_(4.4778027852423051415188848598099942420620771631271), SC_(2.9252118266596611818091667976257214977742484128917) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(5.9236707207707731573571729700689342330065703419313), SC_(1.8154695965888135710753159359719230950532488978812) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(6.139869601345733986434504407166575221080992553264), SC_(1.6714456028893251991139685089081033260150339655669) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(7.1111256109418397092533208411544507833701131687914), SC_(1.0846786721192604011041176802311389422941142007423) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.9133758544921875), SC_(7.2480062961936501178962099237976604436900381845145), SC_(1.0093968782773527337853155571999995353032636953861) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(8.7913848444048961115498757869726677117891986495359), SC_(0.27373711327702368705614476012729022372569397649685) }, + { SC_(19.4396209716796875), SC_(0.814723670482635498046875), SC_(0.992881298065185546875), SC_(10.746399021623709688002433690935647132473746260038), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.097540400922298431396484375), SC_(0.76937380651257837167230589906629567538298259909781), SC_(6.227930845619993212299652035664826946373753869742) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(1.0044729023004204303976483549107710829451910070826), SC_(5.8138920625395382893631916914711240244091685708361) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(1.0670035575951090667729769370077815513552654788614), SC_(5.7090826047865370383447262750099814727132482114579) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.188381969928741455078125), SC_(1.4214092812623019375977810751748319750782545903961), SC_(5.1515101864365568222914602995698946896271989650285) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.22103404998779296875), SC_(1.619100134757623869167797986080209224625469003926), SC_(4.8642939630256790958657207853323840998961653037698) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.278498232364654541015625), SC_(1.943715557987286793409317026141378772893228005297), SC_(4.424203106229455206984565995824371771109594070314) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.308167040348052978515625), SC_(2.1036896513563749292285003151085349284813535904621), SC_(4.2202236582156591017123361389760909237283307703974) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.546881496906280517578125), SC_(3.355323019528913678976461923102593998897469242179), SC_(2.8575707098274709901870825525297814565243001009484) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.54722058773040771484375), SC_(3.3571787920621057418568429423656897174355327498199), SC_(2.8558095656721032019532151255930829769190174049965) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.6323592662811279296875), SC_(3.8442240400327573093472868109005477844220636024678), SC_(2.4156579226901714119087548635136039259865762233458) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(5.1806836733207283023771665638209207842985616116531), SC_(1.4019237225467993187327625984243757904977831591176) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(5.3808684798177529532076477033266626691955525753984), SC_(1.2710781698799036301545218946501661196958567620572) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(6.2810406557709563646801112811568875087918620952726), SC_(0.74055416713516124135752279000812882328962787967167) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.9133758544921875), SC_(6.4080038219869195513300481198875281145078235425557), SC_(0.67285539755179811611912140250643629705509188574179) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(7.8409463124978356524789934350360672754046245131988), SC_(0.018221040692848489593575087294145737526784671836913) }, + { SC_(19.4396209716796875), SC_(0.835008561611175537109375), SC_(0.992881298065185546875), SC_(9.6589028309669875818843197931847178319565040159789), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.097540400922298431396484375), SC_(0), SC_(3.5392606161394667963325212881270833818959367061567) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0), SC_(3.2389783381082832181636469607598646267918867774475) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0), SC_(3.1631412166165860228967224472399809657349973510432) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.188381969928741455078125), SC_(0.17762428958228061840904614075024134757094893099661), SC_(2.761027699419567801337589912188118963506080267528) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.22103404998779296875), SC_(0.30594119267875838691006989522753507559504187859011), SC_(2.5548553517009618686267837296768249021636612470124) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.278498232364654541015625), SC_(0.52012246949052635928104198110355182030362867576475), SC_(2.2404067973676897464856041799608120152691011035719) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.308167040348052978515625), SC_(0.62703573660863785291482527052139282161809586813954), SC_(2.0953296144698993598863361150945268257047357048713) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.546881496906280517578125), SC_(1.4858725290501716059710760994200143976878562706951), SC_(1.1403221385837576174780305908569360818835331197838) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.54722058773040771484375), SC_(1.4871688468089233091479444531502378892252742404235), SC_(1.1391077248729542714881807435780204014291123652318) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.6323592662811279296875), SC_(1.8291608963578030268534219944933451317245972938117), SC_(0.83771785814261707074670990832909264697612038633952) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(2.7820080210406442034311026912888335656678173274795), SC_(0.16507536970809509339066038058178058977154582860386) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(2.9261546306617076486692889821602091248317304489431), SC_(0.081310745444849958265226410224992699474593964135359) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(3.5778547016928082639017855745169400497430827263207), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.9133758544921875), SC_(3.6701832578632035050636645976223553834807398342364), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(4.7178919857179393592989077370772099771750753529823), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.905791938304901123046875), SC_(0.992881298065185546875), SC_(6.0586497369604994218220517403606276160386680763016), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.097540400922298431396484375), SC_(0), SC_(1.2086622554331304182480637307011278598693732023357) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(1.0272387729801116071985531912629002010377497536151) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(0.98168467541389226291319478321818737656984195843519) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.188381969928741455078125), SC_(0), SC_(0.74214281026112422045452538815742688814928990265441) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.22103404998779296875), SC_(0), SC_(0.62077663711177133205078402931028598662881729306103) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.278498232364654541015625), SC_(0), SC_(0.43787651619733456336656945256392535294523267524984) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.308167040348052978515625), SC_(0), SC_(0.35450023138914178146547561208412540946204728538707) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.546881496906280517578125), SC_(0.012802494123647950223168474309581494381832771706813), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.54722058773040771484375), SC_(0.01351217161992312485473293903902561720437751939435), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.6323592662811279296875), SC_(0.20342707639964025244334339316221582344872239751531), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(0.7545516975039009601043421726947152630192871269055), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(0.84008310304870933900762310739787943195896636942928), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.2320944989087478956108278707140130190064010300436), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.9133758544921875), SC_(1.288251242897032573885223265595270607913214489441), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(1.9340264063290560542153517314853047813246263432306), SC_(0) }, + { SC_(19.4396209716796875), SC_(0.968867778778076171875), SC_(0.992881298065185546875), SC_(2.7777959429252388177693504941218583273466700132889), SC_(0) }, + { SC_(27.2588958740234375), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(144.07513508740869491259487446234170750508169497111), SC_(231.20815044746776782497419684965671569027854982903) }, + { SC_(27.2588958740234375), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(145.38279744423961477798150456298910257889418300686), SC_(229.46178957600224752188566678153572078246853741039) }, + { SC_(27.2588958740234375), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(220.59616548190531329631650077229480231317647653757), SC_(152.23563682370319425783018928206546185835413491435) }, + { SC_(27.2588958740234375), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(223.96740423279465714480925979838596884375858592398), SC_(149.58671278013147384323628706749703945329537632143) }, + { SC_(27.2588958740234375), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(238.94712486662445477089115455007329064499525422233), SC_(138.43912190396106046134407545891365729978047592707) }, + { SC_(27.2588958740234375), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(264.33509627094776600745099246216596279271249769546), SC_(121.61002589834186255658709561379511521246221926519) }, + { SC_(27.2588958740234375), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(133.50257989201279632536565963703652196242272464894), SC_(214.77658512024925211230864014363999016837671962176) }, + { SC_(27.2588958740234375), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(134.72223366435091084073263247404402158864974565572), SC_(213.14758506721348427227380385618391204405543081289) }, + { SC_(27.2588958740234375), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(204.87778711991831602729095191868978880351157495223), SC_(141.1139195723593774273195858167080281005155363321) }, + { SC_(27.2588958740234375), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(208.02245137823182029016400385359048414674131314282), SC_(138.64324051238817511756625663651242905041297089167) }, + { SC_(27.2588958740234375), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(221.9954976211434689789446948097295819439860921087), SC_(128.24592710779115128577220838213003011582436850879) }, + { SC_(27.2588958740234375), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(245.67759793071083779890698619649121687624768617662), SC_(112.55010085647616295785823252138014557768217348885) }, + { SC_(27.2588958740234375), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(2.6607165825750433300919767381603586543832700967989), SC_(8.881533074929377045469347141552445020725265260108) }, + { SC_(27.2588958740234375), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(2.7472829535621744765685093521280203474526429988019), SC_(8.7511324252152701767482899565194618891255911383111) }, + { SC_(27.2588958740234375), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(8.0915124729274133034099921151988823926851538571664), SC_(3.2061128015101830491561441715861713449311924950837) }, + { SC_(27.2588958740234375), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(8.3418568994685436694324647442720142902064517135963), SC_(3.0277637485270054135639477267733250594454907770701) }, + { SC_(27.2588958740234375), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(9.4611170082588398955098069474596269211297025920604), SC_(2.2916195592284244315767264945208217881334707484042) }, + { SC_(27.2588958740234375), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(11.379596301445795999032375587877420275307757293056), SC_(1.2363926494981763065715389681000638617657879922478) }, + { SC_(27.2588958740234375), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(2.0940137004463749519944647232649249988155004422935), SC_(7.8162269855027504498534094254198014525865134588289) }, + { SC_(27.2588958740234375), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(2.1726485473263278243881523152460295003360728027332), SC_(7.6954692798040937123186195389078336546047103633434) }, + { SC_(27.2588958740234375), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(7.0849406876620213085986006206168004183488625731205), SC_(2.5902835088702270120612196849541550505319609897993) }, + { SC_(27.2588958740234375), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(7.3165896284602548626896779702237104505144974912214), SC_(2.4277879599991009801089691757470663543007238470582) }, + { SC_(27.2588958740234375), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(8.3531772993719703673130985967184758943356763784268), SC_(1.7593967476431133215054497578722335272263495332029) }, + { SC_(27.2588958740234375), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(10.132777363120719048228615681719505009731132001144), SC_(0.81083615125429476414523111178408417824643490422822) }, + { SC_(27.2588958740234375), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0.41177113983187812598568093978518110057847619345565), SC_(4.3732718112850936385603545425019380390496519982994) }, + { SC_(27.2588958740234375), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0.46192420820501252456568834699188236394150695647455), SC_(4.2862597168261230360303712711553298464634444971153) }, + { SC_(27.2588958740234375), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(3.8476334179667165849011159915936114509441729561007), SC_(0.73206405316794532118978496413280877159666675712079) }, + { SC_(27.2588958740234375), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(4.0137950027010035240619024025747106885019139161139), SC_(0.62624939895901339828962332375143081046590458991839) }, + { SC_(27.2588958740234375), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(4.7611006017330206394055191825089358130759203419699), SC_(0.20133224904524454371136818470564201177527411822668) }, + { SC_(27.2588958740234375), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(6.0556721280994300993038937843095059256059772715562), SC_(0) }, + { SC_(27.2588958740234375), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(1.456397993849520565449997746649481168748896218119) }, + { SC_(27.2588958740234375), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(1.4047397247564702156285428567448074038471027625429) }, + { SC_(27.2588958740234375), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(1.1463278846430592435737403265810211498473193311565), SC_(0) }, + { SC_(27.2588958740234375), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(1.243811079567454368514313395176954030551653166766), SC_(0) }, + { SC_(27.2588958740234375), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.6880833622663971034220330281266258416824357327572), SC_(0) }, + { SC_(27.2588958740234375), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(2.4756149299188790593033186723101481776197461799557), SC_(0) }, + { SC_(29.0838165283203125), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(155.16981585927166011450805944236750222072210281018), SC_(245.20544982041673261407196787765523131989099246816) }, + { SC_(29.0838165283203125), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(156.52806645776173985618067884504346774614634031635), SC_(243.40844664208978834061954386281869896456503589319) }, + { SC_(29.0838165283203125), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(234.28179813259445941207039184299060047637009843347), SC_(163.6417074517993666455092292891585293942145042164) }, + { SC_(29.0838165283203125), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(237.75308015922423563866624499920917124753161915021), SC_(160.8928153151608129029319726280201373913548004677) }, + { SC_(29.0838165283203125), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(253.16589330112044459925837868008362103345202698857), SC_(149.31262011593241897561712634438406473055812355457) }, + { SC_(29.0838165283203125), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(279.24886525262663948140733878084275351056612053913), SC_(131.79015520955477308587516755164407346638282777712) }, + { SC_(29.0838165283203125), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(143.79422959660821089939945689799270178029938771484), SC_(227.77569918547774046048478229327027196115943684545) }, + { SC_(29.0838165283203125), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(145.06107067935538666996287736179238735827264554838), SC_(226.09946165367715986382482768513120779982006249608) }, + { SC_(29.0838165283203125), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(217.5861888689150141072686733486712580050223308136), SC_(151.69602466752218841914525103326986944939696558855) }, + { SC_(29.0838165283203125), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(220.82417011671561089166291600083943407681147095089), SC_(149.13209839003870874000749331752811394026556398624) }, + { SC_(29.0838165283203125), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(235.201190871320176748500750206332118677628160036), SC_(138.33126346050120881239321098967781272637559796081) }, + { SC_(29.0838165283203125), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(259.53156674447116820571176140440917055693457184785), SC_(121.98867521472490086119947915321318968746351133647) }, + { SC_(29.0838165283203125), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(2.9711094631096942670435588021131057179233089937417), SC_(9.4013304969885952117655155083967862662937946706558) }, + { SC_(29.0838165283203125), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(3.0613595872426838465871969182208963376640993632804), SC_(9.2672721553926612090116490672556425488715397041004) }, + { SC_(29.0838165283203125), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(8.5888134247656071920988605228300795524950098540652), SC_(3.5391288373796271483486027999289317211610230913261) }, + { SC_(29.0838165283203125), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(8.8463755550876328059471827407847377842272678911935), SC_(3.3535294823700452644843167132011859464688844695289) }, + { SC_(29.0838165283203125), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(9.9969214689526802202242105577330571449195071838317), SC_(2.5858588920489410283402169878310043514580491228035) }, + { SC_(29.0838165283203125), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(11.965764472228821347663201648658854011696311873683), SC_(1.4792533309588510221489041946993697363756320464691) }, + { SC_(29.0838165283203125), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(2.3582528314093315729001311632125545998967685981575), SC_(8.273398586498129063621447113971820768171877873711) }, + { SC_(29.0838165283203125), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(2.4402870300172844178804566852109707513572591859207), SC_(8.1492700647166369866892285935072169937199727391737) }, + { SC_(29.0838165283203125), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(7.5213823656290560587765803548200040829452046649388), SC_(2.8753904377859857908672893275301584996853769838633) }, + { SC_(29.0838165283203125), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(7.7596816933587790668429854182096047538128505425939), SC_(2.7062092609774977148215997794851329566334753347158) }, + { SC_(29.0838165283203125), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(8.825102173178121176173371704714139105722726425392), SC_(2.0087211701429259900394461410297495569500660486666) }, + { SC_(29.0838165283203125), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(10.651140345398594712043691429321342029242227158495), SC_(1.0125848116728864204073097719585797250395275173309) }, + { SC_(29.0838165283203125), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(0.53460169694206747939995494008241904342379369164424), SC_(4.6307913449420265174582126178816874690262787891544) }, + { SC_(29.0838165283203125), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(0.58714176430890879011942573769579803110395246905988), SC_(4.5414186635875912839161200819669085696938494124902) }, + { SC_(29.0838165283203125), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(4.0906455962791198629317950408858446318216837282683), SC_(0.86952158317377485982498223378061168447253579137345) }, + { SC_(29.0838165283203125), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(4.2614587761317841711322795211412169598509262657781), SC_(0.75902712260325887618700950869914819802079299587116) }, + { SC_(29.0838165283203125), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(5.0289594766153382056479490959677137265112721253974), SC_(0.31366600942644831373220794395712357561658703178439) }, + { SC_(29.0838165283203125), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(6.356160243633407588714563664062745383758802272117), SC_(0) }, + { SC_(29.0838165283203125), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(1.5524004290087638030543363526021797231662642183749) }, + { SC_(29.0838165283203125), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(1.4994541311063440660604926136600264116869805810802) }, + { SC_(29.0838165283203125), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(1.2344370562145078365726495799099435419004999900374), SC_(0) }, + { SC_(29.0838165283203125), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(1.3344452141461399991290070340577327354186502952798), SC_(0) }, + { SC_(29.0838165283203125), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(1.7897436797511505638626799545061378993762144919093), SC_(0) }, + { SC_(29.0838165283203125), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(2.5952976223359616700581878181452145105072697718789), SC_(0) }, + { SC_(50.492671966552734375), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(287.91512075778359356300514116921451840225893612182), SC_(406.8243168421740370347821804388274850118615307488) }, + { SC_(50.492671966552734375), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(289.77702702790598442345684279891907506988078525618), SC_(404.52331800526276981565857260131124581240054164859) }, + { SC_(50.492671966552734375), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(392.79937376752152129444232429143330915340031815898), SC_(299.48656321127078035072511879148917030848839478288) }, + { SC_(50.492671966552734375), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(397.26604354849777032765798188323689016742442056957), SC_(295.74275581484987865915502078187839448855383495658) }, + { SC_(50.492671966552734375), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(416.98919821398305654797718179156006670956163484808), SC_(279.85528942729789835057576190327894124169144227507) }, + { SC_(50.492671966552734375), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(449.99454215683405783290289173864298073746644012975), SC_(255.42072975293351557876711239524552443459603774123) }, + { SC_(50.492671966552734375), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(266.9447897708271184038891225227435274560139255766), SC_(377.85851115170720816814299637035530529611938777061) }, + { SC_(50.492671966552734375), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(268.68142541051374370398371604406904876765773791271), SC_(375.71216359690125579584829859154285539667689120607) }, + { SC_(50.492671966552734375), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(364.77622282553357447242484737631837576872136269906), SC_(277.73774778411687879330065614608520945456454455107) }, + { SC_(50.492671966552734375), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(368.94266725446057544429853130600398682158367192502), SC_(274.24579678190525030018735949888412537040449488691) }, + { SC_(50.492671966552734375), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(387.34022857341565239796084448681642832494775496896), SC_(259.42727012651280180764629709268294121467099533606) }, + { SC_(50.492671966552734375), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(418.1275727922986500332715266863356689978654911864), SC_(236.63724726710307523195060000678458058353352953547) }, + { SC_(50.492671966552734375), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(6.7996860628811881777584406898358952768423040118176), SC_(15.310837785725209785283663073296755799837763440904) }, + { SC_(50.492671966552734375), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(6.9264740556389419825661527920433770769337989014664), SC_(15.140421518591362886721380067338566224270652628753) }, + { SC_(50.492671966552734375), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(14.274703975348713316376829753300305709746607848438), SC_(7.5922086290704550373407242682847450378525790987307) }, + { SC_(50.492671966552734375), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(14.604010550434282970712766700031244373890287258051), SC_(7.3346334396617408593127855120939393022138288639748) }, + { SC_(50.492671966552734375), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(16.065543199504931681512331576987363165697619967306), SC_(6.2543240935211529814611943155638217578029875480023) }, + { SC_(50.492671966552734375), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(18.535079063457269235847983305512300657974093413741), SC_(4.640421900253913203680072421106492207403361712825) }, + { SC_(50.492671966552734375), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(5.630507175448693011258520719181572265500184113895), SC_(13.4627489240345598656489270320784144435561762366) }, + { SC_(50.492671966552734375), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(5.7462439937487906365000231767667362773894803219075), SC_(13.305119590990879077452317880892424450487655188412) }, + { SC_(50.492671966552734375), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(12.504704890770686532964070258482126382007724184164), SC_(6.3546625102572452502045237007176491658832832250584) }, + { SC_(50.492671966552734375), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(12.80910131499196058144092828520292094496735632876), SC_(6.1191270159782958977735900981906141743007446080278) }, + { SC_(50.492671966552734375), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(14.161076393267976075885006737493797358063703882733), SC_(5.1332282191492566837150497735943208314887885078231) }, + { SC_(50.492671966552734375), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(16.448655517252383357632267382820889533156290590692), SC_(3.6679970617349622641223367635019117640269062326456) }, + { SC_(50.492671966552734375), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(2.0934470758618288270801105514284801297851911290346), SC_(7.5288487392494985680333829411833744529990492579891) }, + { SC_(50.492671966552734375), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(2.1696951836336911623074926094594454135342075089408), SC_(7.4160362395410171277805442050335154108311124878374) }, + { SC_(50.492671966552734375), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(6.8446249901196701632291889400102043158082826998557), SC_(2.5737162916779030596125818880982114271242861012535) }, + { SC_(50.492671966552734375), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(7.0616415230011582080019534463305798907712565345912), SC_(2.4167007021823743164740479808914021280341695096835) }, + { SC_(50.492671966552734375), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(8.029665744149292958568564449454182126632830774164), SC_(1.7683185208887882906952105047226371613112534794461) }, + { SC_(50.492671966552734375), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(9.680657502607467476743769437829888168284408490266), SC_(0.83990659830939867318097824096918818790276499609261) }, + { SC_(50.492671966552734375), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0), SC_(2.6086299563307524437196264515840176477358510617583) }, + { SC_(50.492671966552734375), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0), SC_(2.5429168933239374743898667059640815146047169066545) }, + { SC_(50.492671966552734375), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(2.2123641106649883817655435214162807881532153106463), SC_(0) }, + { SC_(50.492671966552734375), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(2.3374379238280306031655098912004642070465527699384), SC_(0) }, + { SC_(50.492671966552734375), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(2.9020090226442076165168567456633633290799489966108), SC_(0) }, + { SC_(50.492671966552734375), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(3.8856575102437326584809446993448185626866075382222), SC_(0) }, + { SC_(78.72027587890625), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(467.10947924350797223876553341133127805115369220702), SC_(615.74987447029358330477554589289714402420401008601) }, + { SC_(78.72027587890625), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(469.49046492431700744962983978265789479885510207385), SC_(612.92963210979420152989524982905412632609019401103) }, + { SC_(78.72027587890625), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(598.5303143825455790847960686238996763170465906351), SC_(481.87469888242848779356835494849094793564121134178) }, + { SC_(78.72027587890625), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(604.0222002477156436878190322093194003852192112971), SC_(477.10590329842545228397398333120821899536979261924) }, + { SC_(78.72027587890625), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(628.18630345840913140751064441404545498809558688236), SC_(456.77897067487527352017437943261784760801868224554) }, + { SC_(78.72027587890625), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(668.32999792810013247697579573473811562231890304853), SC_(425.21103155180135097160116399481313587333089707358) }, + { SC_(78.72027587890625), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(433.20814440207925501987761985220051496979331349575), SC_(571.85405766749664817979596464549309863692337262227) }, + { SC_(78.72027587890625), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(435.42895980088784193837240960902025726104361104407), SC_(569.22337808650080750138177590401281585957894339042) }, + { SC_(78.72027587890625), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(555.79194420763094762482334757074743932431850772374), SC_(446.98014831970432405409599207146455360320590376833) }, + { SC_(78.72027587890625), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(560.9146735307607299026222748391010180797459808951), SC_(442.53212388158789751520832237178585647681661945618) }, + { SC_(78.72027587890625), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(583.45459518494739988503124527234955690655647569949), SC_(423.57261218971711009227415189154135643549159909504) }, + { SC_(78.72027587890625), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(620.9003512103775769227499321134339356091101899666), SC_(394.12878913041926636821850232118706768759673334264) }, + { SC_(78.72027587890625), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(12.14909982793806491207236430097414257983415199916), SC_(22.800213365855362746151819444541478569154581401041) }, + { SC_(78.72027587890625), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(12.313384741864300890787355098167286738053945947977), SC_(22.592395357410373744535002536449477663450309684333) }, + { SC_(78.72027587890625), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(21.534042100243757256647696076716745295384769023078), SC_(13.172136135512714922618103688638548371972314618548) }, + { SC_(78.72027587890625), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(21.937153459837320103502192994493499025656696161425), SC_(12.840629795000440384848652780993670879533016428623) }, + { SC_(78.72027587890625), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(23.71860211488675719853513322880638313865893018719), SC_(11.439536473676093633348805254971195171043739082202) }, + { SC_(78.72027587890625), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(26.703251773637015659364009336810326707035999642143), SC_(9.3072860814992055331712139923571436980498448264822) }, + { SC_(78.72027587890625), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(10.222682417528471368175194147574980814253213581795), SC_(20.02608238549223207830712276293500165964404949871) }, + { SC_(78.72027587890625), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(10.372983246474333779720883597010862619850867649539), SC_(19.833997934970769085743216740852793052231039570243) }, + { SC_(78.72027587890625), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(18.85613529005274091262186039651384320333146488055), SC_(11.159284370091222079170399298769764152135949093676) }, + { SC_(78.72027587890625), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(19.2285154306410137893711405749393513080386016956), SC_(10.855621312310170110923838885065739551069316721795) }, + { SC_(78.72027587890625), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(20.875206894315669398812566222282869674097124270577), SC_(9.5740120303190181878855195994677021614815798627183) }, + { SC_(78.72027587890625), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(23.637455813632133814596849448254041605547260051724), SC_(7.6303631200162629163715655960184521780450277103408) }, + { SC_(78.72027587890625), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(4.3415846345025556091558343340327730975457672489441), SC_(11.153498480504174763224797759400650161909175748475) }, + { SC_(78.72027587890625), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(4.4420940722508273181755080577806546163043927112015), SC_(11.016607962990034396935271297640309480443272401701) }, + { SC_(78.72027587890625), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(10.321243584378777919429913970681516737543550787398), SC_(4.9707832120908980463615108293024128139441165560393) }, + { SC_(78.72027587890625), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(10.585739094865923040926942191158976366664592400403), SC_(4.7660555216158261807531548615711095731571152148273) }, + { SC_(78.72027587890625), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(11.759737179998043466850145328863384887385203419568), SC_(3.910012712757551891354491934570684757119559847066) }, + { SC_(78.72027587890625), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(13.74305354215741524879238355943113693661411548877), SC_(2.6423796620761183052110650607737220926913375974701) }, + { SC_(78.72027587890625), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0.26760169048072322686614067187819283033514604065561), SC_(3.8908598880080669539962600344458100142797440881114) }, + { SC_(78.72027587890625), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0.31376730026807870597642451820184082852914444851524), SC_(3.8120687501389319519673779000844340161076579415938) }, + { SC_(78.72027587890625), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(3.4143046559274235060260114728977909680504875108572), SC_(0.56250581861537728594177521503988627448575142286204) }, + { SC_(78.72027587890625), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(3.5651007673315295982018067173911192175907682539131), SC_(0.46506584135608068214380217299145855856568768636401) }, + { SC_(78.72027587890625), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(4.2415868955657997312325001235923418329503274676668), SC_(0.074011360117937350116586280294333863103809080606752) }, + { SC_(78.72027587890625), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(5.4069836033073418628501098304808796774477374847431), SC_(0) }, + { SC_(92.12715911865234375), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(553.17577743318335227280870715877115163248637442042), SC_(714.02369059848550270117176277277191630949820047438) }, + { SC_(92.12715911865234375), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(555.7699682791096595070522705490151388337394549222), SC_(710.99020051284902274966816123569081797932455817849) }, + { SC_(92.12715911865234375), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(695.49222053797815159200911935480497353148095013503), SC_(569.25268928425558406945306080227920795830451419404) }, + { SC_(92.12715911865234375), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(701.40510314921338379917059378749609952055501071696), SC_(564.06295603655085880906091241870585168494052904939) }, + { SC_(92.12715911865234375), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(727.39309050677422957306429713837680329272131489575), SC_(541.91252370519847454593654600378600637832335000814) }, + { SC_(92.12715911865234375), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(770.46954529961494848185047056383150010444353223955), SC_(507.41311450703861648724251603792203001218333121348) }, + { SC_(92.12715911865234375), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(513.06845138522271366569160024324789609878200788382), SC_(663.10109205711265433940184144464475811811270903286) }, + { SC_(92.12715911865234375), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(515.48813712112403149425031417057097191130142374963), SC_(660.27150265202113991977938480183032594525807062454) }, + { SC_(92.12715911865234375), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(645.81527632505576569591487160164810320411900643227), SC_(528.06395553367983169635827530202769879115321852193) }, + { SC_(92.12715911865234375), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(651.33069615193245584617400711329803812367616882782), SC_(523.22329541034066454305251143509915890149928254503) }, + { SC_(92.12715911865234375), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(675.57187157983422688213318255280673014565403799446), SC_(502.56288662267651518990751546488087921916015283741) }, + { SC_(92.12715911865234375), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(715.75320453671706042980578052637869102287673375099), SC_(470.38468359580139568995640348917589246520510201977) }, + { SC_(92.12715911865234375), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(14.758919664363396478281568106218817927948329904367), SC_(26.288180326306165501179409955628086520199635672555) }, + { SC_(92.12715911865234375), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(14.938579864105660666511213603402537968109417789605), SC_(26.065012437534724617651938036133539676956436820288) }, + { SC_(92.12715911865234375), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(24.927599829123843133576503663633090549517851151139), SC_(15.876493126091009319691661146561222960653188841038) }, + { SC_(92.12715911865234375), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(25.361001436225663229460354127286038714506547009422), SC_(15.514662382720368120424791913788512283259887946042) }, + { SC_(92.12715911865234375), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(27.273745324966993044574586686603457773527136891786), SC_(13.982042769871186416350255670518588253697924622787) }, + { SC_(92.12715911865234375), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(30.469800919851376723161756532600568182790062738839), SC_(11.637550121554691574118595713674314738525094567757) }, + { SC_(92.12715911865234375), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(12.467420989330169784808554599436886461299502952278), SC_(23.079625774899778808028313882200611939110164668528) }, + { SC_(92.12715911865234375), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(12.631890123927201204761585470570704884383152082692), SC_(22.87340223722446661623001987943346192495663124139) }, + { SC_(92.12715911865234375), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(21.822720066251030102419232582491070862454292414274), SC_(13.491128416521714294347417960881275967576427284246) }, + { SC_(92.12715911865234375), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(22.222999078351180087401304357517203517359656917419), SC_(13.159527345617945825675114211463534999097699448474) }, + { SC_(92.12715911865234375), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(23.990630669518946192102064187397126829115795437605), SC_(11.756711995198832863026678437285810280807776845707) }, + { SC_(92.12715911865234375), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(26.947655103541120960375280057907325148397322822006), SC_(9.6173168408220144467674927871179150470698539789327) }, + { SC_(92.12715911865234375), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(5.4538193319736142740164311787584242237840004561015), SC_(12.830284613921795871162495072288272207404727645874) }, + { SC_(92.12715911865234375), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(5.56425533483261753437400077190505932981823153677), SC_(12.683519483212207922479172171596295789157127184233) }, + { SC_(92.12715911865234375), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(11.937315175579431174388641286127142287473068132514), SC_(6.1439901513771098381342117071178465080694244670914) }, + { SC_(92.12715911865234375), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(12.221285499963922380327952336460750199909932925495), SC_(5.9197198911134598796256402200026499320945029942917) }, + { SC_(92.12715911865234375), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(13.479753436528949778218818924466018443603252329146), SC_(4.9787316567680169164760463300453838990905264488001) }, + { SC_(92.12715911865234375), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(15.599301033472576832749707723841953771519913283776), SC_(3.5730213735811406301487103247675045909679942160226) }, + { SC_(92.12715911865234375), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(0.54693702104896340676770870351785027652089624451382), SC_(4.4749974873298243047715212940538396207571326188943) }, + { SC_(92.12715911865234375), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(0.59852229259601578140205390739929228720474998682566), SC_(4.3908514588203478301305015017568796195470327513194) }, + { SC_(92.12715911865234375), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(3.9655537583654966363547957422295326080334084928664), SC_(0.87502311861630798063580935268468363098503146993293) }, + { SC_(92.12715911865234375), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(4.1268899058228638237672520120171239938716512936606), SC_(0.76697387080780410242928525952810700834268814837358) }, + { SC_(92.12715911865234375), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(4.8491960557963980035292148074528431720035358814699), SC_(0.3294894953986609916033336626015524599685183842467) }, + { SC_(92.12715911865234375), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(6.0888794890331687161400088157347320247735404922968), SC_(0) }, + { SC_(272.01507568359375), SC_(0.12698681652545928955078125), SC_(0.12698681652545928955078125), SC_(1731.9472261440476649223465153309330130218413488263), SC_(2008.6508614482898537589120267609649496227106232271) }, + { SC_(272.01507568359375), SC_(0.12698681652545928955078125), SC_(0.135477006435394287109375), SC_(1736.5657188363527475950980149268636394029462377856), SC_(2003.5929048812123568598412541899222837974710430322) }, + { SC_(272.01507568359375), SC_(0.12698681652545928955078125), SC_(0.814723670482635498046875), SC_(1977.6658673375844247879890881951720880388365161323), SC_(1760.4768198171724421292970489746793096978268967189) }, + { SC_(272.01507568359375), SC_(0.12698681652545928955078125), SC_(0.835008561611175537109375), SC_(1987.5748594608302442841747545677159525079523245726), SC_(1751.2912055326039226777743030902590011897101925503) }, + { SC_(272.01507568359375), SC_(0.12698681652545928955078125), SC_(0.905791938304901123046875), SC_(2030.8783270970520646604300718973721137858224679932), SC_(1711.8267801508003405716493887320367033273610294175) }, + { SC_(272.01507568359375), SC_(0.12698681652545928955078125), SC_(0.968867778778076171875), SC_(2101.8113422970922083642790340601954025169695424125), SC_(1649.4758057819173329762151299386537052435298561197) }, + { SC_(272.01507568359375), SC_(0.135477006435394287109375), SC_(0.12698681652545928955078125), SC_(1606.9588926170896846656483498669616920264800063803), SC_(1865.057452017667176593967617721748030174574264553) }, + { SC_(272.01507568359375), SC_(0.135477006435394287109375), SC_(0.135477006435394287109375), SC_(1611.2667735720526275769754427075345791326588821219), SC_(1860.3395146496086474589192537460496493858774855093) }, + { SC_(272.01507568359375), SC_(0.135477006435394287109375), SC_(0.814723670482635498046875), SC_(1836.1554479864639370648835563618943915719578810277), SC_(1633.56980365889531443250244303087265264199083508) }, + { SC_(272.01507568359375), SC_(0.135477006435394287109375), SC_(0.835008561611175537109375), SC_(1845.3982911408671590706536085656002496777088731952), SC_(1625.0019321861851545406845067942874599651470621026) }, + { SC_(272.01507568359375), SC_(0.135477006435394287109375), SC_(0.905791938304901123046875), SC_(1885.7907110481644515101822055156909400229778888105), SC_(1588.191658721632658396114548288332485386501979879) }, + { SC_(272.01507568359375), SC_(0.135477006435394287109375), SC_(0.968867778778076171875), SC_(1951.9556388864961118467559147283521688612466094879), SC_(1530.0344949644168449167765519849025766327756184264) }, + { SC_(272.01507568359375), SC_(0.814723670482635498046875), SC_(0.12698681652545928955078125), SC_(51.503721941681047189668059038480794252231740904069), SC_(71.360223781060499173547846106290476517830049479487) }, + { SC_(272.01507568359375), SC_(0.814723670482635498046875), SC_(0.135477006435394287109375), SC_(51.829056034111796423875447973035142234788106480785), SC_(70.99148267506361758813861884362168309942833447231) }, + { SC_(272.01507568359375), SC_(0.814723670482635498046875), SC_(0.814723670482635498046875), SC_(69.104281405069657731505451366525028624435678534001), SC_(53.517167321218393705996392789877790658918806192461) }, + { SC_(272.01507568359375), SC_(0.814723670482635498046875), SC_(0.835008561611175537109375), SC_(69.824954950675200362960955162147776517176019826696), SC_(52.867927614647648258025590068385625191365558659749) }, + { SC_(272.01507568359375), SC_(0.814723670482635498046875), SC_(0.905791938304901123046875), SC_(72.982855186913545331380652454483987653281750601456), SC_(50.08923843424186370264772256663907271895697988192) }, + { SC_(272.01507568359375), SC_(0.814723670482635498046875), SC_(0.968867778778076171875), SC_(78.183695006696982291565746619212447845869116855387), SC_(45.736749832811447970557694445419286643307911857461) }, + { SC_(272.01507568359375), SC_(0.835008561611175537109375), SC_(0.12698681652545928955078125), SC_(44.177738587348597492185295632081119882763555344988), SC_(62.458577106278160523290529921712043695082904324879) }, + { SC_(272.01507568359375), SC_(0.835008561611175537109375), SC_(0.135477006435394287109375), SC_(44.476392366774277795103754104395401317214357006499), SC_(62.118285144987383462995105244146148228230086342889) }, + { SC_(272.01507568359375), SC_(0.835008561611175537109375), SC_(0.814723670482635498046875), SC_(60.377091401302131366299140420937567125788560470436), SC_(46.02661418142873125689282953102477300265575172496) }, + { SC_(272.01507568359375), SC_(0.835008561611175537109375), SC_(0.835008561611175537109375), SC_(61.041927204443486505617423941542288870758355052458), SC_(45.430298472888491006364148499244007010567862887573) }, + { SC_(272.01507568359375), SC_(0.835008561611175537109375), SC_(0.905791938304901123046875), SC_(63.956317317172836031691627567406336902394221150367), SC_(42.879669882871641505234380846022342455357840826787) }, + { SC_(272.01507568359375), SC_(0.835008561611175537109375), SC_(0.968867778778076171875), SC_(68.759945784170108399452621965412641264173823351731), SC_(38.889942400075882510189082009569162251302936255753) }, + { SC_(272.01507568359375), SC_(0.905791938304901123046875), SC_(0.12698681652545928955078125), SC_(21.489496587266890076517016454951601933868240710191), SC_(34.21419151204538642582501073593898455181225393677) }, + { SC_(272.01507568359375), SC_(0.905791938304901123046875), SC_(0.135477006435394287109375), SC_(21.693684376277839805051109736192556966243931278661), SC_(33.9738887895006144506312349546109034434543780342) }, + { SC_(272.01507568359375), SC_(0.905791938304901123046875), SC_(0.814723670482635498046875), SC_(32.746018517690654246567264816843784711545696390601), SC_(22.755946481269646466611582848763719170337310131891) }, + { SC_(272.01507568359375), SC_(0.905791938304901123046875), SC_(0.835008561611175537109375), SC_(33.214512480133603302329410116305283062246842134753), SC_(22.346866227457822973178099650153865406868569125644) }, + { SC_(272.01507568359375), SC_(0.905791938304901123046875), SC_(0.905791938304901123046875), SC_(35.273093826701032451443765605959004625391699421517), SC_(20.603814129178545613790080798274981448289703629005) }, + { SC_(272.01507568359375), SC_(0.905791938304901123046875), SC_(0.968867778778076171875), SC_(38.682163065413445271801733134293205558716062791966), SC_(17.901424501093686966740632922099917275901391863203) }, + { SC_(272.01507568359375), SC_(0.968867778778076171875), SC_(0.12698681652545928955078125), SC_(4.8860982307362946848490148677021209303963709988433), SC_(11.700973803207663097096356923398241331317568902751) }, + { SC_(272.01507568359375), SC_(0.968867778778076171875), SC_(0.135477006435394287109375), SC_(4.9887446454577528986006399833823374787746289587588), SC_(11.566258084594318426060043263571263743668198571926) }, + { SC_(272.01507568359375), SC_(0.968867778778076171875), SC_(0.814723670482635498046875), SC_(10.880759501342490984683807982974895981350858245686), SC_(5.5273280527774480805413749184523466447940455089765) }, + { SC_(272.01507568359375), SC_(0.968867778778076171875), SC_(0.835008561611175537109375), SC_(11.141738049641109754624772567404173364587779651847), SC_(5.3190303970916925333893252428450932703036838979127) }, + { SC_(272.01507568359375), SC_(0.968867778778076171875), SC_(0.905791938304901123046875), SC_(12.296689997181380679405006454997551301575272020897), SC_(4.4443542423997783257006693663771333961825154928459) }, + { SC_(272.01507568359375), SC_(0.968867778778076171875), SC_(0.968867778778076171875), SC_(14.235964125170580443450965323386985634646137027791), SC_(3.1360623190240134481707711472606441020054701402056) } + }}; +#undef SC_ + diff --git a/test/poisson_quantile.ipp b/test/poisson_quantile.ipp new file mode 100644 index 000000000..4ed508817 --- /dev/null +++ b/test/poisson_quantile.ipp @@ -0,0 +1,632 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 619> poisson_quantile_data = {{ + { SC_(2.539736270904541015625), SC_(0.097540400922298431396484375), SC_(0.1236392659323415267286721455855935332272165776019), SC_(4.1794244675777288954971650240102219690023733491107) }, + { SC_(2.539736270904541015625), SC_(0.12698681652545928955078125), SC_(0.29692152360861802647109703200927257466043783201072), SC_(3.8759279753758017243263560996428606489658831749751) }, + { SC_(2.539736270904541015625), SC_(0.135477006435394287109375), SC_(0.34320650665410472759846385302850183249926507900385), SC_(3.7989374337321363992500232228194835442428384328783) }, + { SC_(2.539736270904541015625), SC_(0.188381969928741455078125), SC_(0.60664513287123148932168996645967883616307670876159), SC_(3.3882631942049236108254497545125740345098947059879) }, + { SC_(2.539736270904541015625), SC_(0.22103404998779296875), SC_(0.75418046769318689024626280510389922651894870065918), SC_(3.1760120980068421525868462530802458163753626136545) }, + { SC_(2.539736270904541015625), SC_(0.278498232364654541015625), SC_(0.99696859994338450962602588461832487680146529935052), SC_(2.8498938646809092776273924660633540719728165148386) }, + { SC_(2.539736270904541015625), SC_(0.308167040348052978515625), SC_(1.1167608396721874815750956320715232750965151590926), SC_(2.6983883556775732472454879863323713890715761900718) }, + { SC_(2.539736270904541015625), SC_(0.546881496906280517578125), SC_(2.0537693974299930086549193836285319461125762366927), SC_(1.6814731149266990335114284112670893662702121211471) }, + { SC_(2.539736270904541015625), SC_(0.54722058773040771484375), SC_(2.0551559213142958322292400766992089704970302823545), SC_(1.6801546387421272943620405150189924628945228748043) }, + { SC_(2.539736270904541015625), SC_(0.6323592662811279296875), SC_(2.4185680589969635905362050596047384508137625647103), SC_(1.3504767355410436804577399289250217569583832425216) }, + { SC_(2.539736270904541015625), SC_(0.814723670482635498046875), SC_(3.40979576665416423967927240319519423210777415296), SC_(0.59212166896088946445227134508857054551303877571874) }, + { SC_(2.539736270904541015625), SC_(0.835008561611175537109375), SC_(3.5574160837993229129674267171557135101187245049205), SC_(0.49470169893324134464824483154133205955707995130386) }, + { SC_(2.539736270904541015625), SC_(0.905791938304901123046875), SC_(4.2182796507799899023660816530562600398630233374474), SC_(0.1024923825265003493532574009232399351614327762936) }, + { SC_(2.539736270904541015625), SC_(0.9133758544921875), SC_(4.3110965218524397562863677756993861813110388506657), SC_(0.052913915876507499928705143631874173069654329996695) }, + { SC_(2.539736270904541015625), SC_(0.957506835460662841796875), SC_(5.0507514608729399450273591019931952059180132941558), SC_(0) }, + { SC_(2.539736270904541015625), SC_(0.964888513088226318359375), SC_(5.2367753540079862352449652338334329394906217447274), SC_(0) }, + { SC_(2.539736270904541015625), SC_(0.967694938182830810546875), SC_(5.3166351261369765913994722232174376733439995923696), SC_(0) }, + { SC_(2.539736270904541015625), SC_(0.968867778778076171875), SC_(5.3518355852884420289078324978224092379400640232473), SC_(0) }, + { SC_(2.539736270904541015625), SC_(0.992881298065185546875), SC_(6.6543700270027625401829056826390754932290120871122), SC_(0) }, + { SC_(2.539736270904541015625), SC_(0.996461331844329833984375), SC_(7.2179591549437624231339827362963118968410984819945), SC_(0) }, + { SC_(2.7095401287078857421875), SC_(0.097540400922298431396484375), SC_(0.22508778216127669860840111850046509049124774877757), SC_(4.4182474958341612963906186215326419021373601918705) }, + { SC_(2.7095401287078857421875), SC_(0.12698681652545928955078125), SC_(0.40677008040551596304058142704984892724698474450013), SC_(4.1064853787719233590964661701263902837818258099719) }, + { SC_(2.7095401287078857421875), SC_(0.135477006435394287109375), SC_(0.45520478103550794436443361181077958307722151443163), SC_(4.0273711840535234079944645222273276521046853333475) }, + { SC_(2.7095401287078857421875), SC_(0.188381969928741455078125), SC_(0.73026636637142655390107377497566857551034902573012), SC_(3.6051688857008976555752955024438980784366442932919) }, + { SC_(2.7095401287078857421875), SC_(0.22103404998779296875), SC_(0.88392938865124774766856751848756090706730082877896), SC_(3.3868160972875027862660476930182731527926765710517) }, + { SC_(2.7095401287078857421875), SC_(0.278498232364654541015625), SC_(1.1363266606638255225600870950818167357150551989263), SC_(3.0511081900439111988365299857382083529598127860583) }, + { SC_(2.7095401287078857421875), SC_(0.308167040348052978515625), SC_(1.2606742963136106218231304529313368491205193889367), SC_(2.8950505886875929318857627817878016223780947076715) }, + { SC_(2.7095401287078857421875), SC_(0.546881496906280517578125), SC_(2.2302498177659995331854128657702572247393894330154), SC_(1.8455667973744983745400534580442630696797091911164) }, + { SC_(2.7095401287078857421875), SC_(0.54722058773040771484375), SC_(2.2316813572100748575831704135004677863833315667374), SC_(1.8442033129697692145260467544769069766977784230154) }, + { SC_(2.7095401287078857421875), SC_(0.6323592662811279296875), SC_(2.6066425574726804797128859441380116059728489734554), SC_(1.5029787332697810770934731568961824651116215294506) }, + { SC_(2.7095401287078857421875), SC_(0.814723670482635498046875), SC_(3.6273147425851163791281437708804229061207906824314), SC_(0.71512622824161600897697849329545315475907647131057) }, + { SC_(2.7095401287078857421875), SC_(0.835008561611175537109375), SC_(3.7791124414856923080281181724476436460102273386686), SC_(0.6135013062126620064849645584217989596131282386535) }, + { SC_(2.7095401287078857421875), SC_(0.905791938304901123046875), SC_(4.458149225470369081990154475805206149000574987061), SC_(0.20287311758458663949375602873316329115587280439004) }, + { SC_(2.7095401287078857421875), SC_(0.9133758544921875), SC_(4.5534558318934753192152596811095152683421397095551), SC_(0.15075014180575346658654817591045191201000083591655) }, + { SC_(2.7095401287078857421875), SC_(0.957506835460662841796875), SC_(5.3124762617564144681154664570520183781853730044827), SC_(0) }, + { SC_(2.7095401287078857421875), SC_(0.964888513088226318359375), SC_(5.5032495514669336956769948581208817037416052591602), SC_(0) }, + { SC_(2.7095401287078857421875), SC_(0.967694938182830810546875), SC_(5.5851345768544450002123999306065943091761910601596), SC_(0) }, + { SC_(2.7095401287078857421875), SC_(0.968867778778076171875), SC_(5.6212251836473331425223280696624241368486034858104), SC_(0) }, + { SC_(2.7095401287078857421875), SC_(0.992881298065185546875), SC_(6.9557169597554463521475489005690610777985653849856), SC_(0) }, + { SC_(2.7095401287078857421875), SC_(0.996461331844329833984375), SC_(7.5326167149449785832226654644205494408676203885886), SC_(0) }, + { SC_(4.420680999755859375), SC_(0.097540400922298431396484375), SC_(1.3396974430145122585454495048468424419264320352618), SC_(6.7283438763148574872831791875332553675646602300523) }, + { SC_(4.420680999755859375), SC_(0.12698681652545928955078125), SC_(1.5943593540803988177742830666052464453414946104313), SC_(6.3448231261522649376887252175402416326077522703472) }, + { SC_(4.420680999755859375), SC_(0.135477006435394287109375), SC_(1.6614817168246804493298951704417179835901855738303), SC_(6.2472654728602887897097583831549812995898408080858) }, + { SC_(4.420680999755859375), SC_(0.188381969928741455078125), SC_(2.0376543751759201428527313894139151409067294327461), SC_(5.7248971087658352374460042773698359549632379123834) }, + { SC_(4.420680999755859375), SC_(0.22103404998779296875), SC_(2.2446654580224159831483586795367113208776510965331), SC_(5.4534959083816989610894577161849640688969105560161) }, + { SC_(4.420680999755859375), SC_(0.278498232364654541015625), SC_(2.5807621352225720613600353790736865733555987348493), SC_(5.0343733155738426061839689866661543927206541851375) }, + { SC_(4.420680999755859375), SC_(0.308167040348052978515625), SC_(2.7448014090272585998043938931292051157965186772885), SC_(4.8387030783940425933647257151827080974800390869268) }, + { SC_(4.420680999755859375), SC_(0.546881496906280517578125), SC_(3.9981671065238395569228616860453130593511301850379), SC_(3.505557886377919314863622414565557140946176046497) }, + { SC_(4.420680999755859375), SC_(0.54722058773040771484375), SC_(3.9999907952112765051305384945750961898928212599337), SC_(3.5038021853580386246245849220792764933302027406719) }, + { SC_(4.420680999755859375), SC_(0.6323592662811279296875), SC_(4.4755370662322077623602403442109487298546581878422), SC_(3.0619503042413349619855086785373188956985791271542) }, + { SC_(4.420680999755859375), SC_(0.814723670482635498046875), SC_(5.7523737088686858401558160403666922549379961143882), SC_(2.0171468551181771134675292909683635311884497032409) }, + { SC_(4.420680999755859375), SC_(0.835008561611175537109375), SC_(5.9404758600780670389419577812214780175653318248418), SC_(1.8789308781841440866768183847400702725764547783367) }, + { SC_(4.420680999755859375), SC_(0.905791938304901123046875), SC_(6.7773282414671410921194089695719498332958307210814), SC_(1.3082106170807083740259305077843340602783571584871) }, + { SC_(4.420680999755859375), SC_(0.9133758544921875), SC_(6.8942396868242401403890538418965641039295675778748), SC_(1.2339961120705196611183391781202394749539268956262) }, + { SC_(4.420680999755859375), SC_(0.957506835460662841796875), SC_(7.821171397040121531326100235432854843584195583282), SC_(0.69094012860886707349500955292069725225637764995336) }, + { SC_(4.420680999755859375), SC_(0.964888513088226318359375), SC_(8.0530885584480679142446108828803234017581269318602), SC_(0.56731808338239770597650769892754973604608332843093) }, + { SC_(4.420680999755859375), SC_(0.967694938182830810546875), SC_(8.1525139180463156301698889503244013413378449293097), SC_(0.51578894370664249604079957647423257412791686824297) }, + { SC_(4.420680999755859375), SC_(0.968867778778076171875), SC_(8.1963130987087259540234241916685414899812024476517), SC_(0.49336751814322145986719340359087631907186828353415) }, + { SC_(4.420680999755859375), SC_(0.992881298065185546875), SC_(9.8072204903950038451972661576396667151044904421196), SC_(0) }, + { SC_(4.420680999755859375), SC_(0.996461331844329833984375), SC_(10.499064126433495605510366708137413205875937581042), SC_(0) }, + { SC_(6.16334056854248046875), SC_(0.097540400922298431396484375), SC_(2.5859664957940427509461874565129963589589688820455), SC_(8.9677396315283840656695133479880083513730127930784) }, + { SC_(6.16334056854248046875), SC_(0.12698681652545928955078125), SC_(2.9009052707869816176646796920701448375095847243642), SC_(8.5246979852837498907844353402131712031288982600956) }, + { SC_(6.16334056854248046875), SC_(0.135477006435394287109375), SC_(2.9834873073877956898186146652279966961454909598226), SC_(8.4118358800599451811807869174788430578782924434124) }, + { SC_(6.16334056854248046875), SC_(0.188381969928741455078125), SC_(3.4434473940957475393031850953584457336507982842966), SC_(7.8063058825992529562573105885942390515410053671404) }, + { SC_(6.16334056854248046875), SC_(0.22103404998779296875), SC_(3.6947440371998811706376688689734496836804910176123), SC_(7.4908336084580067399217088801958960601472349863788) }, + { SC_(6.16334056854248046875), SC_(0.278498232364654541015625), SC_(4.1003986170918594858212154600658981004419168067157), SC_(7.0023763806308351303214371446635601414005423798617) }, + { SC_(6.16334056854248046875), SC_(0.308167040348052978515625), SC_(4.2974477654438552880411091482794630816925561264025), SC_(6.773765866135877963783975160673357749752284302202) }, + { SC_(6.16334056854248046875), SC_(0.546881496906280517578125), SC_(5.787010458630218045453307890019107853613374669004), SC_(5.2045621740649474362284642896242201992956763546792) }, + { SC_(6.16334056854248046875), SC_(0.54722058773040771484375), SC_(5.7891605475359960637402200827262721850213414058386), SC_(5.2024799770953642190662187080874369352416686100864) }, + { SC_(6.16334056854248046875), SC_(0.6323592662811279296875), SC_(6.3484127404200322386357128405939431323418020518415), SC_(4.6768700753839711497025120757799358155271336141157) }, + { SC_(6.16334056854248046875), SC_(0.814723670482635498046875), SC_(7.8382100591531846602632204646671089815370107201852), SC_(3.4184868779947421662049228866392881111264871883922) }, + { SC_(6.16334056854248046875), SC_(0.835008561611175537109375), SC_(8.0564604740815217756792989543682072856102195403887), SC_(3.249927919219838912312004297710792201709906833035) }, + { SC_(6.16334056854248046875), SC_(0.905791938304901123046875), SC_(9.0242548268313231135791705274880817528987452046331), SC_(2.546833600350249575523714984244661229551120215356) }, + { SC_(6.16334056854248046875), SC_(0.9133758544921875), SC_(9.1590772218426733681824215132720634022321809844007), SC_(2.4544140197883858708871454148128370305443415093863) }, + { SC_(6.16334056854248046875), SC_(0.957506835460662841796875), SC_(10.225083255031436688172872083431154610023237781531), SC_(1.7687703501583610989862012375744075325036292087893) }, + { SC_(6.16334056854248046875), SC_(0.964888513088226318359375), SC_(10.4910429250481057791237409707808406346128053259), SC_(1.6098130786280943639536169387760851064572555054941) }, + { SC_(6.16334056854248046875), SC_(0.967694938182830810546875), SC_(10.604976902691218462157184835908874666143712716419), SC_(1.5431584901383285765046885291630022889777753672441) }, + { SC_(6.16334056854248046875), SC_(0.968867778778076171875), SC_(10.655151475679068385512795414161210208803633817441), SC_(1.5140772460337891512212722486771665938457620462142) }, + { SC_(6.16334056854248046875), SC_(0.992881298065185546875), SC_(12.494340063197501309164691406113117041284264416324), SC_(0.56048583005652240145806181713152405901286812442296) }, + { SC_(6.16334056854248046875), SC_(0.996461331844329833984375), SC_(13.280923712753769694525962616630864161646653800287), SC_(0.21853569573931151163702946751408199066277444874014) }, + { SC_(12.64718532562255859375), SC_(0.097540400922298431396484375), SC_(7.6711344139619895804514836536337678481450584324878), SC_(16.850130506171469776115421283509726284859353740057) }, + { SC_(12.64718532562255859375), SC_(0.12698681652545928955078125), SC_(8.1547201535699795154298162845407243435126798222898), SC_(16.239558767405175964277904784404123282695495538226) }, + { SC_(12.64718532562255859375), SC_(0.135477006435394287109375), SC_(8.2806286612811708041050143926320891533309017112699), SC_(16.083604033627550690555794926242036728995081942033) }, + { SC_(12.64718532562255859375), SC_(0.188381969928741455078125), SC_(8.9758211019641177392680430710427599425163839792393), SC_(15.243808985147436406129215519216902152197904088285) }, + { SC_(12.64718532562255859375), SC_(0.22103404998779296875), SC_(9.3516791282338434124664861759040923544265109549101), SC_(14.804120912602928262364597480725623835331061218201) }, + { SC_(12.64718532562255859375), SC_(0.278498232364654541015625), SC_(9.9532137144075079682088734865811485169502051541194), SC_(14.12015821284293168735206960036708562390870351063) }, + { SC_(12.64718532562255859375), SC_(0.308167040348052978515625), SC_(10.243298807763724010478060698880277720321796708766), SC_(13.798633656540777349502091830430059744331882886278) }, + { SC_(12.64718532562255859375), SC_(0.546881496906280517578125), SC_(12.399275289660469011257714497830554771951746121858), SC_(11.563273411635948200345660594076842943507332490285) }, + { SC_(12.64718532562255859375), SC_(0.54722058773040771484375), SC_(12.402346593646574078222745980931153936118481906153), SC_(11.560269810750595572221219195622818675329824015645) }, + { SC_(12.64718532562255859375), SC_(0.6323592662811279296875), SC_(13.19782665370456596120591738385829220788127750129), SC_(10.798332099951424582914986681188597257286341937357) }, + { SC_(12.64718532562255859375), SC_(0.814723670482635498046875), SC_(15.288189942005947077588095662863900019178028947102), SC_(8.9383434817363300471273936747034404759891162547254) }, + { SC_(12.64718532562255859375), SC_(0.835008561611175537109375), SC_(15.591384567114640046319076067770981691962858112517), SC_(8.6845348611306367395813221127571201197146166918641) }, + { SC_(12.64718532562255859375), SC_(0.905791938304901123046875), SC_(16.927835017840491595687492533629798547524854577836), SC_(7.6106445122443167328298276139682641625898258177196) }, + { SC_(12.64718532562255859375), SC_(0.9133758544921875), SC_(17.113046273942503087359925791727307763838757542972), SC_(7.4674105602937188040477152280060809854748579836014) }, + { SC_(12.64718532562255859375), SC_(0.957506835460662841796875), SC_(18.569973245653494382911382456207569635746744196882), SC_(6.3859448266286921486507096427302924566841556550563) }, + { SC_(12.64718532562255859375), SC_(0.964888513088226318359375), SC_(18.93152783831108116874127183196847811285623625696), SC_(6.1296453214032888616203015159805383672210547060642) }, + { SC_(12.64718532562255859375), SC_(0.967694938182830810546875), SC_(19.086191909497975149053516759983344699801043918198), SC_(6.0214345100468344269863932086605661104721698279907) }, + { SC_(12.64718532562255859375), SC_(0.968867778778076171875), SC_(19.154261931332249800552464671562250972922345148502), SC_(5.9740783822366839368179720805820788798696498458457) }, + { SC_(12.64718532562255859375), SC_(0.992881298065185546875), SC_(21.633315543125658905896300611103319391369453711018), SC_(4.3580642120394167757053733298567833281549145844168) }, + { SC_(12.64718532562255859375), SC_(0.996461331844329833984375), SC_(22.68492256917358231151503114591791247245850445982), SC_(3.7341956318915674599651482908795435597345044824033) }, + { SC_(16.2944736480712890625), SC_(0.097540400922298431396484375), SC_(10.693850670037101152771497711368715584773135538118), SC_(21.121889791601541453681111492941256715103226043036) }, + { SC_(16.2944736480712890625), SC_(0.12698681652545928955078125), SC_(11.252465242025717147870100184437693209234712298237), SC_(20.436540859332260740727910060061745901708024868949) }, + { SC_(16.2944736480712890625), SC_(0.135477006435394287109375), SC_(11.397665967452893835717961188341356148503300339155), SC_(20.261347293825036046882929798668385243692064590023) }, + { SC_(16.2944736480712890625), SC_(0.188381969928741455078125), SC_(12.19770032509947480853558992949527837843154772766), SC_(19.31693484928652851147703100896941457272409982229) }, + { SC_(16.2944736480712890625), SC_(0.22103404998779296875), SC_(12.629130730930436784262974882245754883935149204312), SC_(18.821756648937967508625437122931342224383045686541) }, + { SC_(16.2944736480712890625), SC_(0.278498232364654541015625), SC_(13.318115142036955408997409841452247112332156832314), SC_(18.050435303052834476446622744197116416891576100601) }, + { SC_(16.2944736480712890625), SC_(0.308167040348052978515625), SC_(13.649755729711715293236346615386101989656442500996), SC_(17.687385605745203579801289248551882571772835527034) }, + { SC_(16.2944736480712890625), SC_(0.546881496906280517578125), SC_(16.103587520623140138404770698328267716962876193979), SC_(15.154235931792982710153039116171021793913963478755) }, + { SC_(16.2944736480712890625), SC_(0.54722058773040771484375), SC_(16.107070658704027443991378847308001043628591516482), SC_(15.150820447157110070870972003998711791074624878056) }, + { SC_(16.2944736480712890625), SC_(0.6323592662811279296875), SC_(17.008154017745132103552614725057620576003789945351), SC_(14.283253468555664973748342299413071138952621730455) }, + { SC_(16.2944736480712890625), SC_(0.814723670482635498046875), SC_(19.366888819686739274125549776624219462428989868847), SC_(12.154640181569311916358968875108201381315852554446) }, + { SC_(16.2944736480712890625), SC_(0.835008561611175537109375), SC_(19.708022155420012504510504412036051833181497206306), SC_(11.862821299641407909509350903197583777435762852207) }, + { SC_(16.2944736480712890625), SC_(0.905791938304901123046875), SC_(21.209050162302568225326520542099219835495374869877), SC_(10.623867527454918634576446546790682697872587794339) }, + { SC_(16.2944736480712890625), SC_(0.9133758544921875), SC_(21.416745874946280165168565760970832049836956931192), SC_(10.458054658958050388168990232003684643617840085059) }, + { SC_(16.2944736480712890625), SC_(0.957506835460662841796875), SC_(23.048014594592231066054797831596194398240124284957), SC_(9.2011886604782521931686908767344066197277856236645) }, + { SC_(16.2944736480712890625), SC_(0.964888513088226318359375), SC_(23.452175501874584280562667192409085747799280549345), SC_(8.9019150744407493507319421323364063076968784869333) }, + { SC_(16.2944736480712890625), SC_(0.967694938182830810546875), SC_(23.62498949136929103398172070852459015559160920003), SC_(8.7753818417828787767639479371150461376805861578068) }, + { SC_(16.2944736480712890625), SC_(0.968867778778076171875), SC_(23.701033346498343776960099078249896579474458326563), SC_(8.7199729277053559302911438571086669590056905096611) }, + { SC_(16.2944736480712890625), SC_(0.992881298065185546875), SC_(26.464931905803948999532395821613248145971809244706), SC_(6.8146461008535155890042039196042685746010864745794) }, + { SC_(16.2944736480712890625), SC_(0.996461331844329833984375), SC_(27.634361030515676698472921917162389706998509309217), SC_(6.0698163788270120646200681816079279135033855764337) }, + { SC_(16.7001705169677734375), SC_(0.097540400922298431396484375), SC_(11.034638129824783452597218686565157888493181759292), SC_(21.592486495836760104219637788961504730499201651789) }, + { SC_(16.7001705169677734375), SC_(0.12698681652545928955078125), SC_(11.601044643226705655060860983705162351184833560802), SC_(20.89936699183590999083396625346959347096750555563) }, + { SC_(16.7001705169677734375), SC_(0.135477006435394287109375), SC_(11.748249244916808252496460760484611437190506691017), SC_(20.722174095140127300316933973396618862391340837863) }, + { SC_(16.7001705169677734375), SC_(0.188381969928741455078125), SC_(12.559175460378148013318741337711849725788312287193), SC_(19.766888967437912637562714188270171964545038302194) }, + { SC_(16.7001705169677734375), SC_(0.22103404998779296875), SC_(12.9963803212492396721056053684883452078734224349), SC_(19.265943369199835297312385729043995690990536715021) }, + { SC_(16.7001705169677734375), SC_(0.278498232364654541015625), SC_(13.694452748953162112839552422063793383611749517637), SC_(18.485541861707272111341902580973379530227155741543) }, + { SC_(16.7001705169677734375), SC_(0.308167040348052978515625), SC_(14.03041231133621298019513853704503907640275856256), SC_(18.11817581497518340733428655642167848033767512311) }, + { SC_(16.7001705169677734375), SC_(0.546881496906280517578125), SC_(16.515205206102791169788252845600802269942143242809), SC_(15.554070762596479286613382669810325724417499206967) }, + { SC_(16.7001705169677734375), SC_(0.54722058773040771484375), SC_(16.518731155145697592549800149644097197315486827454), SC_(15.550612462664315126477020374394335347899628729754) }, + { SC_(16.7001705169677734375), SC_(0.6323592662811279296875), SC_(17.43079211193215642969883687437565016942771048078), SC_(14.672065624012867229107115532379446441909076865166) }, + { SC_(16.7001705169677734375), SC_(0.814723670482635498046875), SC_(19.817422157167680843309060698270994027979848365703), SC_(12.515535282957473889402338060329223253320992529717) }, + { SC_(16.7001705169677734375), SC_(0.835008561611175537109375), SC_(20.162498494735419382435778028170891194082141656125), SC_(12.219767278156873458611742557885989700840808085051) }, + { SC_(16.7001705169677734375), SC_(0.905791938304901123046875), SC_(21.680629437827072781546905764890318735820707820674), SC_(10.963669247913543334749498624689102695423221828359) }, + { SC_(16.7001705169677734375), SC_(0.9133758544921875), SC_(21.890661497297095284779459251611569867537016877579), SC_(10.795512033750512251630966482939978292412876733732) }, + { SC_(16.7001705169677734375), SC_(0.957506835460662841796875), SC_(23.540043736005537976133249810576357608087185880221), SC_(9.52044335785104734836069185443264917657882232207) }, + { SC_(16.7001705169677734375), SC_(0.964888513088226318359375), SC_(23.948630657411715351226106251362978904104511469727), SC_(9.2167129369970753002688621491010766026301145655948) }, + { SC_(16.7001705169677734375), SC_(0.967694938182830810546875), SC_(24.123330010288903210268180038047961852955433227349), SC_(9.0882799067309322640282432698470052099055332012573) }, + { SC_(16.7001705169677734375), SC_(0.968867778778076171875), SC_(24.200202149888339030947916427426284228939281350228), SC_(9.0320361062711072532410780804932507825360170321532) }, + { SC_(16.7001705169677734375), SC_(0.992881298065185546875), SC_(26.993682642050434185458056637438208210688246846477), SC_(7.0967572788605379771749741989839291529937674107396) }, + { SC_(16.7001705169677734375), SC_(0.996461331844329833984375), SC_(28.175344078106345126569168135038395326717308633766), SC_(6.3394383939027305766912478902120825568947479585851) }, + { SC_(18.1158390045166015625), SC_(0.097540400922298431396484375), SC_(12.229803145137575990335718583500925394826480618503), SC_(23.228627367533674533821572922276109229785439322765) }, + { SC_(18.1158390045166015625), SC_(0.12698681652545928955078125), SC_(12.822673341761532058015211573173044086031531116737), SC_(22.509111414540839864342953335953686805411522053243) }, + { SC_(18.1158390045166015625), SC_(0.135477006435394287109375), SC_(12.976684059166514734046895999415866313428744860068), SC_(22.325126713605129915066081556032404096371551510549) }, + { SC_(18.1158390045166015625), SC_(0.188381969928741455078125), SC_(13.824606437282753949429957785988824006698569255867), SC_(21.332905860705858496128307473617169005608841036807) }, + { SC_(18.1158390045166015625), SC_(0.22103404998779296875), SC_(14.281426572691848161246895450110642433343094853406), SC_(20.81236726469040732971916907807977212934026001891) }, + { SC_(18.1158390045166015625), SC_(0.278498232364654541015625), SC_(15.01037153052613079691729172739763151661405472572), SC_(20.001118054476604765258550948507385925917493155015) }, + { SC_(18.1158390045166015625), SC_(0.308167040348052978515625), SC_(15.361003389129331876193139511724331195724912409465), SC_(19.619088019727493705142523057273934353720883081836) }, + { SC_(18.1158390045166015625), SC_(0.546881496906280517578125), SC_(17.950981338767316651695771645702465507829660468753), SC_(16.949816059137808649308126779086158538399454219891) }, + { SC_(18.1158390045166015625), SC_(0.54722058773040771484375), SC_(17.954652733218942402920744523224752709207037306433), SC_(16.946212300040719278539497985318257418714458430196) }, + { SC_(18.1158390045166015625), SC_(0.6323592662811279296875), SC_(18.90400875262084625176019157381017401036294356254), SC_(16.030363223014311217316032305097475181277580268705) }, + { SC_(18.1158390045166015625), SC_(0.814723670482635498046875), SC_(21.385406755739170391610530719179388624654968784157), SC_(13.778995984677945747533692055762656599286983552973) }, + { SC_(18.1158390045166015625), SC_(0.835008561611175537109375), SC_(21.743878039515852848017307901035212430884592429209), SC_(13.469813729955726555908505800975759196077957341242) }, + { SC_(18.1158390045166015625), SC_(0.905791938304901123046875), SC_(23.320108024450794895960154014300450155277608250839), SC_(12.155486587438152200205438361713390634424285299801) }, + { SC_(18.1158390045166015625), SC_(0.9133758544921875), SC_(23.538076411450700350595673358353507263727241200012), SC_(11.979367902547473933330686030907997353481482129832) }, + { SC_(18.1158390045166015625), SC_(0.957506835460662841796875), SC_(25.248985693754198008130087056841115436946608909113), SC_(10.64249240527183225201584070811311919594316873085) }, + { SC_(18.1158390045166015625), SC_(0.964888513088226318359375), SC_(25.672605891807719490656368170167660577384994363804), SC_(10.323632149235174143236852255206305357443772220156) }, + { SC_(18.1158390045166015625), SC_(0.967694938182830810546875), SC_(25.853708920308354382681824644886609939970217034117), SC_(10.188750244564714232045499011802059449483552959846) }, + { SC_(18.1158390045166015625), SC_(0.968867778778076171875), SC_(25.933394326577259260680235077008269396707232879955), SC_(10.129672508946807738778255033241855354247796511595) }, + { SC_(18.1158390045166015625), SC_(0.992881298065185546875), SC_(28.827341960599856817150763480721623090399103682994), SC_(8.092771426735276889343277722328757647550934616848) }, + { SC_(18.1158390045166015625), SC_(0.996461331844329833984375), SC_(30.050542481052555238898499443708521579588587755888), SC_(7.2931147895930968783410244498702897570105273223928) }, + { SC_(18.26751708984375), SC_(0.097540400922298431396484375), SC_(12.358378009335293471653123846939290489012834344543), SC_(23.403405544764970115716480763827192560260898281917) }, + { SC_(18.26751708984375), SC_(0.12698681652545928955078125), SC_(12.954020408854467630407302005992337564710960830217), SC_(22.681123987437766980884860184057710579773679792445) }, + { SC_(18.26751708984375), SC_(0.135477006435394287109375), SC_(13.108744132045379106090567522437339958662266837862), SC_(22.496427686228608299917659685541040380184607353219) }, + { SC_(18.26751708984375), SC_(0.188381969928741455078125), SC_(13.960542399862203396981482305302410196543442917059), SC_(21.500336884057086664318614928567802107658912862523) }, + { SC_(18.26751708984375), SC_(0.22103404998779296875), SC_(14.419417630978867214081632221088407753671474536534), SC_(20.977745384619569642813289824152669709574871136045) }, + { SC_(18.26751708984375), SC_(0.278498232364654541015625), SC_(15.151597226827460219771938921158262471181424746215), SC_(20.163263982310714770266391105747405916722773664627) }, + { SC_(18.26751708984375), SC_(0.308167040348052978515625), SC_(15.503766401010795352452110715546674802381197742827), SC_(19.779697451328020657979198606920611929608291640143) }, + { SC_(18.26751708984375), SC_(0.546881496906280517578125), SC_(18.104765710618081300160015572662281056383121409967), SC_(17.099405922607606419193022941413123144383424505584) }, + { SC_(18.26751708984375), SC_(0.54722058773040771484375), SC_(18.10845234514577551782213788442539760347033111491), SC_(17.095786922074606508725271849236860678568263622572) }, + { SC_(18.26751708984375), SC_(0.6323592662811279296875), SC_(19.061716212401396421444362361618259867959980188279), SC_(16.17602928820526173623668686091097089368259450071) }, + { SC_(18.26751708984375), SC_(0.814723670482635498046875), SC_(21.553043948614931900049993412103566204611342227854), SC_(13.914725524939980875158129159562005054461269758533) }, + { SC_(18.26751708984375), SC_(0.835008561611175537109375), SC_(21.9129187017689723401126812211556391507339018288), SC_(13.604137902610091421545588145548575512832456927063) }, + { SC_(18.26751708984375), SC_(0.905791938304901123046875), SC_(23.495235895374225818627173154751522674915316085917), SC_(12.283710780891254067977180887726854068992151499751) }, + { SC_(18.26751708984375), SC_(0.9133758544921875), SC_(23.714035769982387637405439453109509415203186385201), SC_(12.106758142649534359488369899506190851904104134848) }, + { SC_(18.26751708984375), SC_(0.957506835460662841796875), SC_(25.431390999518891793562793245831196862504351323722), SC_(10.763409299859546937116842638355270651761464416255) }, + { SC_(18.26751708984375), SC_(0.964888513088226318359375), SC_(25.856586109036368229599662539600594524566810507709), SC_(10.442964689229539628752640308062765712479889441224) }, + { SC_(18.26751708984375), SC_(0.967694938182830810546875), SC_(26.038359989113882553115159325927230344454944623567), SC_(10.307407514499689969865874687991362198078794603182) }, + { SC_(18.26751708984375), SC_(0.968867778778076171875), SC_(26.118340112716012122094585985589139066105673771364), SC_(10.248033041430365755162111643068023089945087952672) }, + { SC_(18.26751708984375), SC_(0.992881298065185546875), SC_(29.022811997663127528900839262373900861715632679566), SC_(8.2004950879370407225266286238027176334591369105265) }, + { SC_(18.26751708984375), SC_(0.996461331844329833984375), SC_(30.250363466916160780779295100087151395923923353868), SC_(7.3964098804857992892696362629914986068384957057976) }, + { SC_(19.3773555755615234375), SC_(0.097540400922298431396484375), SC_(13.302022456329356645331103380072784620537969427031), SC_(24.679416264071073690717622417575158477758899067476) }, + { SC_(19.3773555755615234375), SC_(0.12698681652545928955078125), SC_(13.917604124550317290574473688745207627437961160936), SC_(23.937240637529651211093644570846387112815467470328) }, + { SC_(19.3773555755615234375), SC_(0.135477006435394287109375), SC_(14.077456352838378538491688948587960175341161428929), SC_(23.747425463361927254633215322286307253701190825571) }, + { SC_(19.3773555755615234375), SC_(0.188381969928741455078125), SC_(14.957134065569689297251729040637353422581282949593), SC_(22.72349595038472280442031066332506051766329398777) }, + { SC_(19.3773555755615234375), SC_(0.22103404998779296875), SC_(15.430792247783457753003015542452001148339921835173), SC_(22.186136545467564437128782554426281997843080370569) }, + { SC_(19.3773555755615234375), SC_(0.278498232364654541015625), SC_(16.186240220029310082752474589255294273528485772967), SC_(21.348403565617717373202072516464489943494553481265) }, + { SC_(19.3773555755615234375), SC_(0.308167040348052978515625), SC_(16.549468286991968215830188896887874669431708709156), SC_(20.953783773282466642767145541416963262008439278799) }, + { SC_(19.3773555755615234375), SC_(0.546881496906280517578125), SC_(19.229753401848391410982600118601181818659329373608), SC_(18.194218765428833455630913518826395017989370589002) }, + { SC_(19.3773555755615234375), SC_(0.54722058773040771484375), SC_(19.233549671995648507075742940917788156251262369621), SC_(18.190490119914581443391766034431556338325765983075) }, + { SC_(19.3773555755615234375), SC_(0.6323592662811279296875), SC_(20.214926176966698652911300446451848285478667141658), SC_(17.242614969067788864564335734896715305130034413922) }, + { SC_(19.3773555755615234375), SC_(0.814723670482635498046875), SC_(22.777686122049501110839759447084655145995486358199), SC_(14.909832349165879848263079573450955552565831244488) }, + { SC_(19.3773555755615234375), SC_(0.835008561611175537109375), SC_(23.147656872099904909451219581367428167123548883022), SC_(14.589135709472514983991252276439570479197292063929) }, + { SC_(19.3773555755615234375), SC_(0.905791938304901123046875), SC_(24.773762072359485842886169274475882543414692823237), SC_(13.22483308005477703594117738756057664899462040858) }, + { SC_(19.3773555755615234375), SC_(0.9133758544921875), SC_(24.998543077459968908195327644207286701087318921193), SC_(13.041882430237504180933480933843715531478985035775) }, + { SC_(19.3773555755615234375), SC_(0.957506835460662841796875), SC_(26.7622646592635570121107040414275120416812576035), SC_(11.651979845855278618699933756016190315033246730554) }, + { SC_(19.3773555755615234375), SC_(0.964888513088226318359375), SC_(27.198787919828989362933843198893710850318958367029), SC_(11.320142558996091685204284118829540651423066293584) }, + { SC_(19.3773555755615234375), SC_(0.967694938182830810546875), SC_(27.385387111939074299514579843568124877120834376414), SC_(11.179729889277513891927084010203453414790009450959) }, + { SC_(19.3773555755615234375), SC_(0.968867778778076171875), SC_(27.467487074764030935907873295153581300436068537063), SC_(11.11822177915428460780975883248379628878491855121) }, + { SC_(19.3773555755615234375), SC_(0.992881298065185546875), SC_(30.447654137118708782205344863087301860796843454219), SC_(8.9942207488711667389602986174100476877674749782464) }, + { SC_(19.3773555755615234375), SC_(0.996461331844329833984375), SC_(31.706497482188934671625956753597350747141596846306), SC_(8.1583155637897770471922745241903260802442258277653) }, + { SC_(30.1589450836181640625), SC_(0.097540400922298431396484375), SC_(22.668644421420827574546806520849206630332837324745), SC_(36.875831250249904197678832069712959926734486928462) }, + { SC_(30.1589450836181640625), SC_(0.12698681652545928955078125), SC_(23.453845205414823000411388938563139157459273154594), SC_(35.964304476276335557381343830942353249193082493714) }, + { SC_(30.1589450836181640625), SC_(0.135477006435394287109375), SC_(23.657332974917157738170445045009826223808840753631), SC_(35.730911026180500741467572797019366789559843411417) }, + { SC_(30.1589450836181640625), SC_(0.188381969928741455078125), SC_(24.77427214734173793924969689843359730995953729143), SC_(34.469963070462593318639812179738672982026023392017) }, + { SC_(30.1589450836181640625), SC_(0.22103404998779296875), SC_(25.373766903155999366143020642334146095871585712049), SC_(33.806857313360481418987615755127875589579427414233) }, + { SC_(30.1589450836181640625), SC_(0.278498232364654541015625), SC_(26.327314254679626967407837795452819948376100969817), SC_(32.771126137698108401187615667081710880502125452114) }, + { SC_(30.1589450836181640625), SC_(0.308167040348052978515625), SC_(26.784705419119920255458022343018796177796468530153), SC_(32.282377312456719156997247111965903029943488716139) }, + { SC_(30.1589450836181640625), SC_(0.546881496906280517578125), SC_(30.140200028986754353933478618812694920412167857749), SC_(28.847677752499432129836345816917281884186312206383) }, + { SC_(30.1589450836181640625), SC_(0.54722058773040771484375), SC_(30.144930030548962955924363500339399873038633718354), SC_(28.843015318390390753909216652196459394527223359436) }, + { SC_(30.1589450836181640625), SC_(0.6323592662811279296875), SC_(31.365730660715230956397508478163395322979273766058), SC_(27.655686301244819720229858881326539742566616621331) }, + { SC_(30.1589450836181640625), SC_(0.814723670482635498046875), SC_(34.53678121024660798430125576148804032673509007061), SC_(24.714332081822305790422354927035893272879055852168) }, + { SC_(30.1589450836181640625), SC_(0.835008561611175537109375), SC_(34.992712342865409288209554479047053788954122415631), SC_(24.307597233737732014671422622070528932413006597407) }, + { SC_(30.1589450836181640625), SC_(0.905791938304901123046875), SC_(36.991588818743800447541768611792046836196657814675), SC_(22.570003712699060344458175010195328307564467030773) }, + { SC_(30.1589450836181640625), SC_(0.9133758544921875), SC_(37.267280294905674663282768076993799825657748606749), SC_(22.336042830318260164170852548641420020626666626766) }, + { SC_(30.1589450836181640625), SC_(0.957506835460662841796875), SC_(39.425596200000835944009921439671940176849778600999), SC_(20.550445059387119356811101323910013373259092669538) }, + { SC_(30.1589450836181640625), SC_(0.964888513088226318359375), SC_(39.958506227725890050648619079467677515474125330912), SC_(20.1218440566614370120405117471074005536189858416) }, + { SC_(30.1589450836181640625), SC_(0.967694938182830810546875), SC_(40.186159588609191984261089444724749792007022054682), SC_(19.940201193331396219447075191481721953866782076346) }, + { SC_(30.1589450836181640625), SC_(0.968867778778076171875), SC_(40.28629484490922558416686504011104423610359010226), SC_(19.860577381779492959046475056545198020687220872117) }, + { SC_(30.1589450836181640625), SC_(0.992881298065185546875), SC_(43.910262535436428289778912063406689115101469273305), SC_(17.0883457422398399303356590728006266852811527362) }, + { SC_(30.1589450836181640625), SC_(0.996461331844329833984375), SC_(45.435126123676131580006803736026384165122567933823), SC_(15.983412368453095646505459192793685790268383676026) }, + { SC_(30.838161468505859375), SC_(0.097540400922298431396484375), SC_(23.268046680563354565606586779001398524095052529787), SC_(37.634855665372713626073743792144511261668316930211) }, + { SC_(30.838161468505859375), SC_(0.12698681652545928955078125), SC_(24.062809557708062395428341113473093227470401596587), SC_(36.713777471539062809949708275903919835943883016543) }, + { SC_(30.838161468505859375), SC_(0.135477006435394287109375), SC_(24.268757565013623445712340846064418164749715650402), SC_(36.47792607017495310498033337862872137178323719441) }, + { SC_(30.838161468505859375), SC_(0.188381969928741455078125), SC_(25.399075914670267020868313999714975605180834579226), SC_(35.203608670236208154011535399226708860251026426583) }, + { SC_(30.838161468505859375), SC_(0.22103404998779296875), SC_(26.005667776585073612280916022596956644991200778382), SC_(34.53340943662709770560394763692024036006559935342) }, + { SC_(30.838161468505859375), SC_(0.278498232364654541015625), SC_(26.970389109385527428965957870935522341965231753821), SC_(33.486508365995182084761234135770612831084924898688) }, + { SC_(30.838161468505859375), SC_(0.308167040348052978515625), SC_(27.433092083447351558339686527360620119823414971664), SC_(32.992449111901469521101506070014319912121851661909) }, + { SC_(30.838161468505859375), SC_(0.546881496906280517578125), SC_(30.826680383354937193226939943931890552076843608004), SC_(29.519658912925663787477991510321051101284998771673) }, + { SC_(30.838161468505859375), SC_(0.54722058773040771484375), SC_(30.831463066127683484397810135170327330240649845048), SC_(29.51494379526919020226420593931175485239206156367) }, + { SC_(30.838161468505859375), SC_(0.6323592662811279296875), SC_(32.065771932396400314656963118674163358624561337925), SC_(28.314105328620060247346159988192723606199635916195) }, + { SC_(30.838161468505859375), SC_(0.814723670482635498046875), SC_(35.271139147194945118793296175986788307686973692746), SC_(25.338423095022514296232006773895697693531559080538) }, + { SC_(30.838161468505859375), SC_(0.835008561611175537109375), SC_(35.7319191618839673163512855522825879101348462362), SC_(24.926836242745884279889350254195915162132292680533) }, + { SC_(30.838161468505859375), SC_(0.905791938304901123046875), SC_(37.751820798027795168750432510397465351743303725447), SC_(23.168196834682344507000703083544618327624627668834) }, + { SC_(30.838161468505859375), SC_(0.9133758544921875), SC_(38.030383426817768908836320994288216103904088234334), SC_(22.931360837305817503628522100454971346387511080772) }, + { SC_(30.838161468505859375), SC_(0.957506835460662841796875), SC_(40.210949977996977136914590633162708825991855789698), SC_(21.123468923767042266150470078450432219821813922137) }, + { SC_(30.838161468505859375), SC_(0.964888513088226318359375), SC_(40.749294277668538301734566703452274895833229274851), SC_(20.689418829062325636463126006833835725683307714982) }, + { SC_(30.838161468505859375), SC_(0.967694938182830810546875), SC_(40.979262159218395944391596126950520963705186731289), SC_(20.505454534930254054763294729181858404303160174338) }, + { SC_(30.838161468505859375), SC_(0.968867778778076171875), SC_(41.080414174959326923333965349008188681373891476679), SC_(20.424810809473124638288418185926706048746044789534) }, + { SC_(30.838161468505859375), SC_(0.992881298065185546875), SC_(44.740668087350496302552933989706675539623372591229), SC_(17.616120691756711510578427427178540011361756806899) }, + { SC_(30.838161468505859375), SC_(0.996461331844329833984375), SC_(46.280519948548857709166200289619638635418741920306), SC_(16.496083384415299195830782920443609983748794449984) }, + { SC_(37.6827239990234375), SC_(0.097540400922298431396484375), SC_(29.352946021749666845843482962472158740256177417383), SC_(45.239030947986461254737281318699609928010001470929) }, + { SC_(37.6827239990234375), SC_(0.12698681652545928955078125), SC_(30.23869955862943665193033752151792999945086107061), SC_(44.227048344268336232736185754498199322631271606189) }, + { SC_(37.6827239990234375), SC_(0.135477006435394287109375), SC_(30.468059822801017995671661231547989409240669389363), SC_(43.967803178981760575804961335175951272390804437288) }, + { SC_(37.6827239990234375), SC_(0.188381969928741455078125), SC_(31.725705243093252423947489513450454529025038929732), SC_(42.566237509216167203970262962197557418354109383711) }, + { SC_(37.6827239990234375), SC_(0.22103404998779296875), SC_(32.399843239570666679273550338271907741953468442885), SC_(41.828521572127310534890499292304472181353368976736) }, + { SC_(37.6827239990234375), SC_(0.278498232364654541015625), SC_(33.470916831178824336949759327572185401335972799101), SC_(40.675301420816796567889252452264317637671150035051) }, + { SC_(37.6827239990234375), SC_(0.308167040348052978515625), SC_(33.984178480196802581888467088217298043522607746886), SC_(40.130694716772379321441170038540435291368314007864) }, + { SC_(37.6827239990234375), SC_(0.546881496906280517578125), SC_(37.740365997371299683057669982762377665495248364282), SC_(36.295330140737936822144745915300188450290325531154) }, + { SC_(37.6827239990234375), SC_(0.54722058773040771484375), SC_(37.745650140982057657851397455560822359429817586109), SC_(36.290113543192465005662851997086543724466786997184) }, + { SC_(37.6827239990234375), SC_(0.6323592662811279296875), SC_(39.108540542348828783395260083611191614855117661191), SC_(34.960683655235230491700353477228238601995517107717) }, + { SC_(37.6827239990234375), SC_(0.814723670482635498046875), SC_(42.640548035772286170948501242411862013356064280976), SC_(31.658268994787235521590444677659527875912140188893) }, + { SC_(37.6827239990234375), SC_(0.835008561611175537109375), SC_(43.147479483746281091517151843762458661274511101554), SC_(31.2005054174787025029366797648089279614383116084) }, + { SC_(37.6827239990234375), SC_(0.905791938304901123046875), SC_(45.367488673462529098662548977043944239948700580183), SC_(29.241590880622401164379230635383991361060420046416) }, + { SC_(37.6827239990234375), SC_(0.9133758544921875), SC_(45.673376318983796212262413228352474087793271496405), SC_(28.977397877967594477687673014569895522824373602474) }, + { SC_(37.6827239990234375), SC_(0.957506835460662841796875), SC_(48.065692470044996778558658693880119772948394475358), SC_(26.957405841047970798009539858031027151979291071372) }, + { SC_(37.6827239990234375), SC_(0.964888513088226318359375), SC_(48.655748925851273162561955326695183771206068638936), SC_(26.471524362760700843451787298299341311578947241774) }, + { SC_(37.6827239990234375), SC_(0.967694938182830810546875), SC_(48.907741192349980536728522958051807610930999105923), SC_(26.26548011994174259538533862720530864373867746059) }, + { SC_(37.6827239990234375), SC_(0.968867778778076171875), SC_(49.018568346853246606918011590411224524608349559362), SC_(26.175135896638374055479720835565124197048906411302) }, + { SC_(37.6827239990234375), SC_(0.992881298065185546875), SC_(53.02407418491247821809186743632936433016449753218), SC_(23.019813176696678971023411190438750354494441104321) }, + { SC_(37.6827239990234375), SC_(0.996461331844329833984375), SC_(54.706513118394944593046682264160930606264906373061), SC_(21.756265173156173203224249376116301767163819366798) }, + { SC_(44.653362274169921875), SC_(0.097540400922298431396484375), SC_(35.618240596300811269413152918291588612106553267115), SC_(52.914976106294007717399717270512543998187614084655) }, + { SC_(44.653362274169921875), SC_(0.12698681652545928955078125), SC_(36.588452076327023713429953804552822888883127952446), SC_(51.818596394764872873002485024538053016282568559311) }, + { SC_(44.653362274169921875), SC_(0.135477006435394287109375), SC_(36.83954526469596624594638033560920299497560170955), SC_(51.537631365760970201822740189946713347302704956653) }, + { SC_(44.653362274169921875), SC_(0.188381969928741455078125), SC_(38.215394320386388785658525903502825381175642791908), SC_(50.017917801033533925183046469134290033878646286364) }, + { SC_(44.653362274169921875), SC_(0.22103404998779296875), SC_(38.952244175784308367316752805823985177260869746127), SC_(49.217510871384175066507190898961611480478984790775) }, + { SC_(44.653362274169921875), SC_(0.278498232364654541015625), SC_(40.122064659061842221357533501115750674753742114962), SC_(47.965567398021912248267285737600118230163443048146) }, + { SC_(44.653362274169921875), SC_(0.308167040348052978515625), SC_(40.682271670856134762049327525114253685181553477862), SC_(47.374023320401046687747405659199479704882112312872) }, + { SC_(44.653362274169921875), SC_(0.546881496906280517578125), SC_(44.775166844273750204693436437598938458674995370859), SC_(43.201968806950762514924060846076158545767565340834) }, + { SC_(44.653362274169921875), SC_(0.54722058773040771484375), SC_(44.780916652872974129195758524252272687403328156345), SC_(43.196286530800993850604328631601837463617864100601) }, + { SC_(44.653362274169921875), SC_(0.6323592662811279296875), SC_(46.263209496766289477581326251209800719449521647638), SC_(41.74744714071843554308740486544400566762146642179) }, + { SC_(44.653362274169921875), SC_(0.814723670482635498046875), SC_(50.098523675409541121626750712816025928785805589963), SC_(38.141660330528983628196827851943275547000394308747) }, + { SC_(44.653362274169921875), SC_(0.835008561611175537109375), SC_(50.648306685816689766554918351883448444256293068421), SC_(37.6410272852110740559690374670146559941775337824) }, + { SC_(44.653362274169921875), SC_(0.905791938304901123046875), SC_(53.054103407043758093947406881581337862401460393742), SC_(35.496206929779901659084503734583249196914077277701) }, + { SC_(44.653362274169921875), SC_(0.9133758544921875), SC_(53.385358933877228179382653378109110562394012464663), SC_(35.206623516005541594716774304809185980224230823056) }, + { SC_(44.653362274169921875), SC_(0.957506835460662841796875), SC_(55.974242184476241283163248842516020657114550480509), SC_(32.989818168578314505460384681239255936684066596111) }, + { SC_(44.653362274169921875), SC_(0.964888513088226318359375), SC_(56.612298353766537712683846765569764778064912890336), SC_(32.455853444144004284193964544433996284001689946921) }, + { SC_(44.653362274169921875), SC_(0.967694938182830810546875), SC_(56.884733269659538473548442137925159914421147572728), SC_(32.229327653093505652976807532660352361574006017286) }, + { SC_(44.653362274169921875), SC_(0.968867778778076171875), SC_(57.004540604968172414189087273105751158640079487408), SC_(32.129985501669815679035197934407217019631622859967) }, + { SC_(44.653362274169921875), SC_(0.992881298065185546875), SC_(61.330450499808012132461984823248778067759558389806), SC_(28.653296774088438599698283237800093445349287250038) }, + { SC_(44.653362274169921875), SC_(0.996461331844329833984375), SC_(63.1451847530032895517210152445898258326670771991), SC_(27.25681349509734372649562975525186400552382134225) }, + { SC_(70.5887451171875), SC_(0.097540400922298431396484375), SC_(59.323766307764924944511985838362609462846757285539), SC_(81.080139733430217014011663293836400739084701459033) }, + { SC_(70.5887451171875), SC_(0.12698681652545928955078125), SC_(60.560876195114799652722402332145061167474736374456), SC_(79.716982843877649560763077680056820839086439966958) }, + { SC_(70.5887451171875), SC_(0.135477006435394287109375), SC_(60.880654539652323046569081472892565513680147278097), SC_(79.367358725762711580876280291041849614396548846976) }, + { SC_(70.5887451171875), SC_(0.188381969928741455078125), SC_(62.630114940556122272472649291007998653671582205194), SC_(77.474145282545937129894511287965565852266350244074) }, + { SC_(70.5887451171875), SC_(0.22103404998779296875), SC_(63.565203525378322623716056626971430469895306397143), SC_(76.475541468756053237162220106008060995831242777508) }, + { SC_(70.5887451171875), SC_(0.278498232364654541015625), SC_(65.047198490951661294289697093312736792316947459838), SC_(74.911470893957693423562192662912099166321674401311) }, + { SC_(70.5887451171875), SC_(0.308167040348052978515625), SC_(65.755825576480159533556650811283624895067921248432), SC_(74.171522839696776547832201698087409455114324503857) }, + { SC_(70.5887451171875), SC_(0.546881496906280517578125), SC_(70.913329942314588537117826690565687715558168153075), SC_(68.934894930949823984053333605524648374809227329172) }, + { SC_(70.5887451171875), SC_(0.54722058773040771484375), SC_(70.920552144456080762521519740730354908369398624764), SC_(68.927740233684966178915892745442040165100139460311) }, + { SC_(70.5887451171875), SC_(0.6323592662811279296875), SC_(72.780383028013092435962833773699309076839518294193), SC_(67.101348522816586359597484746104920122657752978445) }, + { SC_(70.5887451171875), SC_(0.814723670482635498046875), SC_(77.574653386409751776108575377632108278667440107224), SC_(62.536473925715093012708150848425649307156237593513) }, + { SC_(70.5887451171875), SC_(0.835008561611175537109375), SC_(78.259905813861810255676896764118884081711144756296), SC_(61.900335619396635575617144617885535041900269483816) }, + { SC_(70.5887451171875), SC_(0.905791938304901123046875), SC_(81.25299185090190858964179894793694530488140641349), SC_(59.167990012143531443787372615142584425879993904367) }, + { SC_(70.5887451171875), SC_(0.9133758544921875), SC_(81.664429816893036984091842047210659476641847372055), SC_(58.798179343450093655715878624961611325642658626691) }, + { SC_(70.5887451171875), SC_(0.957506835460662841796875), SC_(84.87454906989267154784635574995511241463435525827), SC_(55.959649852053216301475776698816147628226064804139) }, + { SC_(70.5887451171875), SC_(0.964888513088226318359375), SC_(85.664284308608662739239695307078374271686277199771), SC_(55.273840961707984286474836578784103719708404536831) }, + { SC_(70.5887451171875), SC_(0.967694938182830810546875), SC_(86.00131536747544194497073098620207632222159139592), SC_(54.982642219024087975392322044049822559129019576986) }, + { SC_(70.5887451171875), SC_(0.968867778778076171875), SC_(86.149498415798992330020764253916429487454286947359), SC_(54.854889325523534153982429316046281512650760010175) }, + { SC_(70.5887451171875), SC_(0.992881298065185546875), SC_(91.487610078397683660737175430541841512937799428622), SC_(50.364110367514638039584887682837666362656768908397) }, + { SC_(70.5887451171875), SC_(0.996461331844329833984375), SC_(93.720151444029455143528319995335526508406531325585), SC_(48.548571957262221711956033636220622117273017974581) }, + { SC_(85.17789459228515625), SC_(0.097540400922298431396484375), SC_(72.84004553903788231830520034488013479311140960234), SC_(96.742136134427758018486121833576858764226967340758) }, + { SC_(85.17789459228515625), SC_(0.12698681652545928955078125), SC_(74.205534583327996472630052081845889068622132730715), SC_(95.250635933127233193631756396042753853643782897109) }, + { SC_(85.17789459228515625), SC_(0.135477006435394287109375), SC_(74.5583528845271049150210341386169727409405514424), SC_(94.867979576235376983656631750361750287069796802806) }, + { SC_(85.17789459228515625), SC_(0.188381969928741455078125), SC_(76.487546591565817499643888051388651300173293259813), SC_(92.79506588451712270885755022474375428700403972328) }, + { SC_(85.17789459228515625), SC_(0.22103404998779296875), SC_(77.518009776276971399240576675634246686454930934174), SC_(91.701099910780452842777174269910102526069866085803) }, + { SC_(85.17789459228515625), SC_(0.278498232364654541015625), SC_(79.150203736679712645502897500467177875732185657604), SC_(89.986844455763419494773914288091054743718919964303) }, + { SC_(85.17789459228515625), SC_(0.308167040348052978515625), SC_(79.930244450137289743387278661379076187356720396016), SC_(89.175487578165917448742395084949273434187270161134) }, + { SC_(85.17789459228515625), SC_(0.546881496906280517578125), SC_(85.600026763763718200766422350192389450061989152706), SC_(83.426592430539565198996171805635340604205167276962) }, + { SC_(85.17789459228515625), SC_(0.54722058773040771484375), SC_(85.607957480214028276840608288846833225617369369043), SC_(83.418729210700932936050442558249286914515555242146) }, + { SC_(85.17789459228515625), SC_(0.6323592662811279296875), SC_(87.649458344516571277262267550813247585776907004838), SC_(81.410663242087177161406662287955828572958682401628) }, + { SC_(85.17789459228515625), SC_(0.814723670482635498046875), SC_(92.905149753978703287320964315287029527291445721338), SC_(76.384328386737955464322502085689828055034253847245) }, + { SC_(85.17789459228515625), SC_(0.835008561611175537109375), SC_(93.655581124664278676806154731390329100707123981802), SC_(75.683000497494712632402817941960098314023009970091) }, + { SC_(85.17789459228515625), SC_(0.905791938304901123046875), SC_(96.931212316437150395055496559295994194479907517674), SC_(72.668039917898236789601178204416295003009055849504) }, + { SC_(85.17789459228515625), SC_(0.9133758544921875), SC_(97.381223295772200942337268016078658085252552731261), SC_(72.259643005022937869369128436888415650542634925102) }, + { SC_(85.17789459228515625), SC_(0.957506835460662841796875), SC_(100.89017134191776531686592005090940356147015590177), SC_(69.122141014577206469765120219474792648024373108098) }, + { SC_(85.17789459228515625), SC_(0.964888513088226318359375), SC_(101.75285996438338053679125186784903390761295624956), SC_(68.36333026687845986375645362671705799930333028949) }, + { SC_(85.17789459228515625), SC_(0.967694938182830810546875), SC_(102.12095896927722495321629695211982965065206672783), SC_(68.041041044637030936308483398988389737107527280368) }, + { SC_(85.17789459228515625), SC_(0.968867778778076171875), SC_(102.28278931575768870024367012296396167946998758584), SC_(67.899630580013132231120123302044800975365885349387) }, + { SC_(85.17789459228515625), SC_(0.992881298065185546875), SC_(108.10763742269289899272965987151092325470427758751), SC_(62.921563877598128121015588773494301933955584842396) }, + { SC_(85.17789459228515625), SC_(0.996461331844329833984375), SC_(110.54103870335337030666663631411896609047028998653), SC_(60.904803259508646421883730571739561679384210543587) }, + { SC_(86.80068206787109375), SC_(0.097540400922298431396484375), SC_(74.349390051895413755997751108490443743192848829245), SC_(98.478364445645001483570957550579154246024071498568) }, + { SC_(86.80068206787109375), SC_(0.12698681652545928955078125), SC_(75.728452687461834696605445471153035263329044527755), SC_(96.973293897589263882546548986928987532173736464098) }, + { SC_(86.80068206787109375), SC_(0.135477006435394287109375), SC_(76.084764375533948797198909695899646348647411425363), SC_(96.587144852639397224800962465078820062766875027141) }, + { SC_(86.80068206787109375), SC_(0.188381969928741455078125), SC_(78.032962026277743608851436724383962509604064496942), SC_(94.495230211644520791894707402966583490720067261757) }, + { SC_(86.80068206787109375), SC_(0.22103404998779296875), SC_(79.073509767986584206922371237575694416496376674569), SC_(93.391180808416481938086842101322913990280465003782) }, + { SC_(86.80068206787109375), SC_(0.278498232364654541015625), SC_(80.72158544670458022721273181766094008933303320207), SC_(91.66104491502632564091264883789247143901601593626) }, + { SC_(86.80068206787109375), SC_(0.308167040348052978515625), SC_(81.509177365606916315276348678047670806620940025159), SC_(90.842137267883053477172142850724502096971815402632) }, + { SC_(86.80068206787109375), SC_(0.546881496906280517578125), SC_(87.233128280252063375738345844058270328349305674397), SC_(85.039074491353540456407061255718585495961970052596) }, + { SC_(86.80068206787109375), SC_(0.54722058773040771484375), SC_(87.241133915855622785638242938592544777075816774473), SC_(85.03113635161103078915254217943676114810739979116) }, + { SC_(86.80068206787109375), SC_(0.6323592662811279296875), SC_(89.301844754532468844800333017560937326064832310405), SC_(83.003860020267362100413360762199651531354386597777) }, + { SC_(86.80068206787109375), SC_(0.814723670482635498046875), SC_(94.606326601352888176663316155123771196291573221021), SC_(77.928731172129879365784977025977325042048418153296) }, + { SC_(86.80068206787109375), SC_(0.835008561611175537109375), SC_(95.363649825121692220889368492759524230993596787353), SC_(77.220510465826137814799719618156624921270897842663) }, + { SC_(86.80068206787109375), SC_(0.905791938304901123046875), SC_(98.669156059698539068736031635394915346101445074281), SC_(74.175668522644766478265458056185080478690225036755) }, + { SC_(86.80068206787109375), SC_(0.9133758544921875), SC_(99.123245496043582391597118391086162621767360561617), SC_(73.763191955627475331760466538128020469477350230804) }, + { SC_(86.80068206787109375), SC_(0.957506835460662841796875), SC_(102.66378898986011106954544424929548291179775514215), SC_(70.594081524016687156157904859895106520232458693168) }, + { SC_(86.80068206787109375), SC_(0.964888513088226318359375), SC_(103.53419082347456836045570901546588992186067641257), SC_(69.827553185211135658181646841058756278544812780283) }, + { SC_(86.80068206787109375), SC_(0.967694938182830810546875), SC_(103.905574550382128442991762281491249546616977939), SC_(69.501977205282904129463122846937960116854472580745) }, + { SC_(86.80068206787109375), SC_(0.968867778778076171875), SC_(104.06884777992894405556110331383484776197272173805), SC_(69.35912292961542779775252043273421585680547102348) }, + { SC_(86.80068206787109375), SC_(0.992881298065185546875), SC_(109.94515457120489098509918159835385686821319082393), SC_(64.329547798673001385811377084038992307096210246426) }, + { SC_(86.80068206787109375), SC_(0.996461331844329833984375), SC_(112.39978969459072077779888328267706447833062906956), SC_(62.291520692733771342294631246522813542833094235598) }, + { SC_(92.46335601806640625), SC_(0.097540400922298431396484375), SC_(79.624300506522068267902828720200696483065531317386), SC_(104.52879503385161531795348194372857466014766385726) }, + { SC_(92.46335601806640625), SC_(0.12698681652545928955078125), SC_(81.049758354984283796026909747277160412737131200061), SC_(102.97733970478700805868431924186219094649976730897) }, + { SC_(92.46335601806640625), SC_(0.135477006435394287109375), SC_(81.418010683665917934386830487972718524188500613102), SC_(102.57925226634036643439022461160482651650111434553) }, + { SC_(92.46335601806640625), SC_(0.188381969928741455078125), SC_(83.431165577054783920656648575646371447701180031641), SC_(100.42239001297908896843219931933255685819491373978) }, + { SC_(92.46335601806640625), SC_(0.22103404998779296875), SC_(84.506183528782241657194419123095397842516367086027), SC_(99.28387402662051797804016538484344695031434255892) }, + { SC_(92.46335601806640625), SC_(0.278498232364654541015625), SC_(86.208545092288152905475755608269200337897367576059), SC_(97.499456366406991890566423718117604583785761167127) }, + { SC_(92.46335601806640625), SC_(0.308167040348052978515625), SC_(87.021948166662878366428701901062321157789854365613), SC_(96.654738966445745830855836941175059536598955208227) }, + { SC_(92.46335601806640625), SC_(0.546881496906280517578125), SC_(92.931056558061610427190827774087020724935163116998), SC_(90.666521841888910391512660188694400582438697631521) }, + { SC_(92.46335601806640625), SC_(0.54722058773040771484375), SC_(92.939318280539593606505286333998369285792637976529), SC_(90.658327612855691211423679380639323410327095718792) }, + { SC_(92.46335601806640625), SC_(0.6323592662811279296875), SC_(95.065692163132714221761558935562650058294649890967), SC_(88.565386987566008236603182155514295227663898474246) }, + { SC_(92.46335601806640625), SC_(0.814723670482635498046875), SC_(100.5369473337229272155480072403604706803929353327), SC_(83.323473376708319354682692195463959283747239453997) }, + { SC_(92.46335601806640625), SC_(0.835008561611175537109375), SC_(101.31782781209452431981520461575490476358302776333), SC_(82.591692315349241089278956062887078969911461565506) }, + { SC_(92.46335601806640625), SC_(0.905791938304901123046875), SC_(104.72545014408943198303181011615685161762160253903), SC_(79.444713950567701557426742977240109970470926118863) }, + { SC_(92.46335601806640625), SC_(0.9133758544921875), SC_(105.193480083473658627084807927338148801777290855), SC_(79.01829303196521315268481504849434216156252309685) }, + { SC_(92.46335601806640625), SC_(0.957506835460662841796875), SC_(108.84201847573758616613983058378466972097537018215), SC_(75.741145940538776370843452201703739688688021328114) }, + { SC_(92.46335601806640625), SC_(0.964888513088226318359375), SC_(109.73878419084280759373282707418276363330770035722), SC_(74.948239646205953548702815221368133817988824009019) }, + { SC_(92.46335601806640625), SC_(0.967694938182830810546875), SC_(110.1213951153509737792954543580587696172037965924), SC_(74.611429927937825324126852607575575336259223046235) }, + { SC_(92.46335601806640625), SC_(0.968867778778076171875), SC_(110.28960012012223245395106603471532783757932178179), SC_(74.463640895488986731544712908668438357666071823683) }, + { SC_(92.46335601806640625), SC_(0.992881298065185546875), SC_(116.34178974502605772740865693843689317163906647352), SC_(69.258023167049898591579198761970319534604959118839) }, + { SC_(92.46335601806640625), SC_(0.996461331844329833984375), SC_(118.86899907588089249819730952498892803536950195115), SC_(67.147317056951180202296638950750186102915727473141) }, + { SC_(93.070068359375), SC_(0.097540400922298431396484375), SC_(80.190180767201047438584127857080846586159231887536), SC_(105.17633876887803387023097922958333954221860456054) }, + { SC_(93.070068359375), SC_(0.12698681652545928955078125), SC_(81.620524001137966777941688921563162477526311949682), SC_(103.61999909693632003505128751654502481540886882325) }, + { SC_(93.070068359375), SC_(0.135477006435394287109375), SC_(81.990033677429950163245752676911769334743154909802), SC_(103.22065453548512330190203605097489280884494155533) }, + { SC_(93.070068359375), SC_(0.188381969928741455078125), SC_(84.010028595694127338200813414664579405188042572589), SC_(101.05695321994007558359909237098445072885775310274) }, + { SC_(93.070068359375), SC_(0.22103404998779296875), SC_(85.088676297186459241051890386476168572046877377707), SC_(99.914807846441948617880261774307863988683838409148) }, + { SC_(93.070068359375), SC_(0.278498232364654541015625), SC_(86.796754247060508491559040251430505744607709369078), SC_(98.124674211645919322391502678589453771701219568361) }, + { SC_(93.070068359375), SC_(0.308167040348052978515625), SC_(87.612875284252935405590254377093716406929622696301), SC_(97.277238989148364919730416589810116054689313548795) }, + { SC_(93.070068359375), SC_(0.546881496906280517578125), SC_(93.541481193900623396510897325026282182641650268945), SC_(91.269524659302002668129086116861716167215683431575) }, + { SC_(93.070068359375), SC_(0.54722058773040771484375), SC_(93.549769882971089783645776166093766121697307214311), SC_(91.261303463434570260760576997664354789917647958022) }, + { SC_(93.070068359375), SC_(0.6323592662811279296875), SC_(95.683058246309823869280394108236410849823254639446), SC_(89.161448232351710617311772043272811440639743932474) }, + { SC_(93.070068359375), SC_(0.814723670482635498046875), SC_(101.17187498183158493518697697789223878045065856059), SC_(83.901971912693552085021370520395288360807440620226) }, + { SC_(93.070068359375), SC_(0.835008561611175537109375), SC_(101.95523607124827940411353123044214411039138548459), SC_(83.167709930332428246751135883944355798185260204988) }, + { SC_(93.070068359375), SC_(0.905791938304901123046875), SC_(105.37361130680244135217151365650622094751422354585), SC_(80.009976630607086247564985410783942660135456059602) }, + { SC_(93.070068359375), SC_(0.9133758544921875), SC_(105.8431091832272008483055616495391091822782304633), SC_(79.5820873903703273643613204603454371363224312354) }, + { SC_(93.070068359375), SC_(0.957506835460662841796875), SC_(109.50301937199653391756142582473457188610231972936), SC_(76.293564329985415660326938422165257467224225817975) }, + { SC_(93.070068359375), SC_(0.964888513088226318359375), SC_(110.40256116350098996898854980424791294167303581959), SC_(75.497880553362761736599935278565325218347093467695) }, + { SC_(93.070068359375), SC_(0.967694938182830810546875), SC_(110.78635429164723387401247672462956450449722775856), SC_(75.159887978123551342927327324939537431539687364192) }, + { SC_(93.070068359375), SC_(0.968867778778076171875), SC_(110.95507860284919662548670455605508698020641749404), SC_(75.011579341433547269256330299847125014965035203826) }, + { SC_(93.070068359375), SC_(0.992881298065185546875), SC_(117.02578809323804498649533732504977589520280784946), SC_(69.787425794842705183018432566516412758493141444662) }, + { SC_(93.070068359375), SC_(0.996461331844329833984375), SC_(119.56063908164793917813240533624224856342628791395), SC_(67.669067567258052468486386717336134231145041121501) }, + { SC_(97.50942230224609375), SC_(0.097540400922298431396484375), SC_(84.334730289130965545262389129214820368488394624841), SC_(109.91049235827021728586835632039520951173022695148) }, + { SC_(97.50942230224609375), SC_(0.12698681652545928955078125), SC_(85.800345090817981221829041650598191039560852995101), SC_(108.31888835349878319303812323639932796492421066105) }, + { SC_(97.50942230224609375), SC_(0.135477006435394287109375), SC_(86.178932613051346929747870357829354046238952121091), SC_(107.91046750482741592386917095270522040450369004424) }, + { SC_(97.50942230224609375), SC_(0.188381969928741455078125), SC_(88.248311600057558539842327410591146684828908407627), SC_(105.69738880201437751826225712161647159244793734167) }, + { SC_(97.50942230224609375), SC_(0.22103404998779296875), SC_(89.353165729412449175615237429679525994435052185594), SC_(104.52903951773822359684438142631895213182285417866) }, + { SC_(97.50942230224609375), SC_(0.278498232364654541015625), SC_(91.10251554607446676299557156319012411580364762322), SC_(102.69763687478096199695411648691506699383853272752) }, + { SC_(97.50942230224609375), SC_(0.308167040348052978515625), SC_(91.938260111178920345444959509202207659726714391116), SC_(101.83057909830677420437407874772893264308415597261) }, + { SC_(97.50942230224609375), SC_(0.546881496906280517578125), SC_(98.007637409902081796954066425117173547274235025745), SC_(95.682095552433069813634147367960209430799602808304) }, + { SC_(97.50942230224609375), SC_(0.54722058773040771484375), SC_(98.016120797032766069762836540559631718251307244158), SC_(95.673679656826783906449026043409523633568901284124) }, + { SC_(97.50942230224609375), SC_(0.6323592662811279296875), SC_(100.19933150577687904086266141166008391726253299928), SC_(93.523901212015488195583743409481004197082147112786) }, + { SC_(97.50942230224609375), SC_(0.814723670482635498046875), SC_(105.81494179973019180886443362707577349500115370849), SC_(88.137623393137821807489611763921510296000509101214) }, + { SC_(97.50942230224609375), SC_(0.835008561611175537109375), SC_(106.61621268755922976200012059506908649376862421917), SC_(87.385449461036097861918536788142991030030693606217) }, + { SC_(97.50942230224609375), SC_(0.905791938304901123046875), SC_(110.11222263638478181419530820113133306371995495468), SC_(84.150067351017829490666489645487365455516714219145) }, + { SC_(97.50942230224609375), SC_(0.9133758544921875), SC_(110.59231880121337872819907079191639737634041074693), SC_(83.711577153771541707725956647149145469822350719205) }, + { SC_(97.50942230224609375), SC_(0.957506835460662841796875), SC_(114.33433123807107131715636724350534943119078900783), SC_(80.340922897890996493176556041660894741781863419975) }, + { SC_(97.50942230224609375), SC_(0.964888513088226318359375), SC_(115.25391565355845053669733172178000173877216845161), SC_(79.525186744935285095738994948680810805313605104552) }, + { SC_(97.50942230224609375), SC_(0.967694938182830810546875), SC_(115.64624399956107214416550401369069894660905102001), SC_(79.178654420002714741933361087375656943317876953282) }, + { SC_(97.50942230224609375), SC_(0.968867778778076171875), SC_(115.81871757154410082389426043195232216643243893591), SC_(79.026594456810150728045692694520749686991876024809) }, + { SC_(97.50942230224609375), SC_(0.992881298065185546875), SC_(122.02313441056405167602911274904663599588577605625), SC_(73.668622934166266602815804822069174086850643660281) }, + { SC_(97.50942230224609375), SC_(0.996461331844329833984375), SC_(124.61315479736835031696219078555534410920036288274), SC_(71.495022792245047667283036083723799279418500223586) }, + { SC_(158.0711669921875), SC_(0.097540400922298431396484375), SC_(141.39930401458994540018781611027104932984289976636), SC_(173.96936913722630761753971169868755796723391942019) }, + { SC_(158.0711669921875), SC_(0.12698681652545928955078125), SC_(143.28328090256702021851031819369491013717709171459), SC_(171.95946121788005258895686141055036125583168547164) }, + { SC_(158.0711669921875), SC_(0.135477006435394287109375), SC_(143.76954549610446346479850521665451341719759610947), SC_(171.44337583758961462560542164817333949059100072216) }, + { SC_(158.0711669921875), SC_(0.188381969928741455078125), SC_(146.42471460757327494069155935558403708035564628941), SC_(168.64456079854188335325215162678341151219436929099) }, + { SC_(158.0711669921875), SC_(0.22103404998779296875), SC_(147.84043929529586098976171826507697658071964712425), SC_(167.16536123938907164035077133225553074595024487985) }, + { SC_(158.0711669921875), SC_(0.278498232364654541015625), SC_(150.0793849915284335947734585334366792020127515208), SC_(164.84438577208764135822461293373459258820951001914) }, + { SC_(158.0711669921875), SC_(0.308167040348052978515625), SC_(151.14792236571479683547137161685857116913707210936), SC_(163.74454304770130639876658366745601398817376260341) }, + { SC_(158.0711669921875), SC_(0.546881496906280517578125), SC_(158.88731123886938386983182718082603040224594160361), SC_(155.92606548355687798492172882312461914553188703408) }, + { SC_(158.0711669921875), SC_(0.54722058773040771484375), SC_(158.89810440710819228764582708329659131906642944275), SC_(155.9153397932697471081927999047683583426829416034) }, + { SC_(158.0711669921875), SC_(0.6323592662811279296875), SC_(161.6735621561061358634614477565109303759788795868), SC_(153.17330728982976217945532403987222851943428283692) }, + { SC_(158.0711669921875), SC_(0.814723670482635498046875), SC_(168.79332718949371880240531803697845005906761996155), SC_(146.28281068668283052673836788002159079963814632258) }, + { SC_(158.0711669921875), SC_(0.835008561611175537109375), SC_(169.80705402505213255520005203771359901930396291946), SC_(145.31816348155600965239857173817231151310281278493) }, + { SC_(158.0711669921875), SC_(0.905791938304901123046875), SC_(174.2239759889790674610923772970513357124914485025), SC_(141.16175597319258129242068902820618879278233013722) }, + { SC_(158.0711669921875), SC_(0.9133758544921875), SC_(174.82978545099122536651222339453302137453778065061), SC_(140.5975310356458619085934775086282737306100110647) }, + { SC_(158.0711669921875), SC_(0.957506835460662841796875), SC_(179.54562070691279013821200108769908820552347097549), SC_(136.252821628631376639252561033615709625920561977) }, + { SC_(158.0711669921875), SC_(0.964888513088226318359375), SC_(180.70291909696247018159949000309925923228355806836), SC_(135.19929331442113890254665235728083639486227301149) }, + { SC_(158.0711669921875), SC_(0.967694938182830810546875), SC_(181.19647698413507551954037432789902423734319506316), SC_(134.75149512749864967649770240275272942808248241845) }, + { SC_(158.0711669921875), SC_(0.968867778778076171875), SC_(181.413417269003555098383080566493127065432574479), SC_(134.55495189786423296982375793291653440815525821183) }, + { SC_(158.0711669921875), SC_(0.992881298065185546875), SC_(189.20347477378305235313677520776493352698354738815), SC_(127.61045483969625865918997317770910954980337404811) }, + { SC_(158.0711669921875), SC_(0.996461331844329833984375), SC_(192.44766054931038752526528990965921838391984730004), SC_(124.78211058379508565778631343960934648155163063083) }, + { SC_(172.6705322265625), SC_(0.097540400922298431396484375), SC_(155.26276987796449283879663196089044530269534102833), SC_(189.30462837841144440476358983820428128617902221517) }, + { SC_(172.6705322265625), SC_(0.12698681652545928955078125), SC_(157.2347725219936234321704107895981963907837200622), SC_(187.20670263009715533789512148339573430492868437576) }, + { SC_(172.6705322265625), SC_(0.135477006435394287109375), SC_(157.74369351969000608239169170725971270073592702706), SC_(186.667962555388048942886511589024940170462321829) }, + { SC_(172.6705322265625), SC_(0.188381969928741455078125), SC_(160.52212247869622847416578583773234229055786843995), SC_(183.745895007681961641552447526831511502667321977) }, + { SC_(172.6705322265625), SC_(0.22103404998779296875), SC_(162.00326143632704860448917840682988828231819598846), SC_(182.20128394886438264703187798224213628514144475606) }, + { SC_(172.6705322265625), SC_(0.278498232364654541015625), SC_(164.34523156119672510498758273803622599946682794785), SC_(179.77728720439928537590761400654967403463999548066) }, + { SC_(172.6705322265625), SC_(0.308167040348052978515625), SC_(165.46275574259298743432098517467010542964611900856), SC_(178.62845874822270488284372544096799778530184248102) }, + { SC_(172.6705322265625), SC_(0.546881496906280517578125), SC_(173.55357490569441249157766276452936740920252531079), SC_(170.45855329807726412452509367246357667342769065223) }, + { SC_(172.6705322265625), SC_(0.54722058773040771484375), SC_(173.56485413829524145127666094687867154949021994143), SC_(170.44734154156811333684708750549931423743859265428) }, + { SC_(172.6705322265625), SC_(0.6323592662811279296875), SC_(176.46494250917749453409676709788205192837362652786), SC_(167.58067745479308659342765894818122644903507770994) }, + { SC_(172.6705322265625), SC_(0.814723670482635498046875), SC_(183.90122951068662326846591937667772180489013272705), SC_(160.37365012890942336171886048667418988179934530542) }, + { SC_(172.6705322265625), SC_(0.835008561611175537109375), SC_(184.95966236006423828023793529868930156146802707127), SC_(159.3642945452242456442769580571319977356473085762) }, + { SC_(172.6705322265625), SC_(0.905791938304901123046875), SC_(189.57036114117423417570021853745270389788819200132), SC_(155.01409476375046606437632423936204738548870280739) }, + { SC_(172.6705322265625), SC_(0.9133758544921875), SC_(190.20262214089795562719122809187546463787760233939), SC_(154.42341536829176353328275562079579673928089273559) }, + { SC_(172.6705322265625), SC_(0.957506835460662841796875), SC_(195.12335288348622811220076567859980895086261989431), SC_(149.87377887178720381221077030738030742013275243386) }, + { SC_(172.6705322265625), SC_(0.964888513088226318359375), SC_(196.33066467110972651017331434738226874748186240122), SC_(148.77022653645302137736160360578428723767995776931) }, + { SC_(172.6705322265625), SC_(0.967694938182830810546875), SC_(196.845520254247767215341120051624908094959402687), SC_(148.30112572013273898846721039093001103635856842391) }, + { SC_(172.6705322265625), SC_(0.968867778778076171875), SC_(197.07181583698222896992950460817389748958274433431), SC_(148.0952249444964699277280837320424445023674423676) }, + { SC_(172.6705322265625), SC_(0.992881298065185546875), SC_(205.19544851840710044775818468167467387930822469968), SC_(140.81703275903276226379343701430285289551949588087) }, + { SC_(172.6705322265625), SC_(0.996461331844329833984375), SC_(208.57723655924317711044575764822367617407357748671), SC_(137.85100796471648376227497317071806430594333287166) }, + { SC_(343.941375732421875), SC_(0.097540400922298431396484375), SC_(319.52859348120262957645041341655347362020302577062), SC_(367.58046257085413446137527546232265010183716615753) }, + { SC_(343.941375732421875), SC_(0.12698681652545928955078125), SC_(322.33843351781428344524376346585333592867199869227), SC_(364.64474220164073048002245959119931472091646603766) }, + { SC_(343.941375732421875), SC_(0.135477006435394287109375), SC_(323.06300507925157545126411383765155955284962903245), SC_(363.89036079225902258175948218042862831478173586452) }, + { SC_(343.941375732421875), SC_(0.188381969928741455078125), SC_(327.01468884410804594677050805521792123188976795099), SC_(359.79507807435066955378972943683488595637740101119) }, + { SC_(343.941375732421875), SC_(0.22103404998779296875), SC_(329.11849465353463628500266639469983579627555320678), SC_(357.62781513659795683100486737137731610221408365146) }, + { SC_(343.941375732421875), SC_(0.278498232364654541015625), SC_(332.44115642086080923512563467698537637439517869951), SC_(354.2231437940991571895153895393925589573628991326) }, + { SC_(343.941375732421875), SC_(0.308167040348052978515625), SC_(334.02499423455692106820607692406318849463959626598), SC_(352.60800752546254496597342401859025335607813057694) }, + { SC_(343.941375732421875), SC_(0.546881496906280517578125), SC_(345.46121068547064473668301441674402861018506260458), SC_(341.0927178061556260205012594464902565742727351756) }, + { SC_(343.941375732421875), SC_(0.54722058773040771484375), SC_(345.47711697913893258921432502509539971518233670799), SC_(341.07687897849993000186931693380144472337446467921) }, + { SC_(343.941375732421875), SC_(0.6323592662811279296875), SC_(349.56361611281868988574142196794017480435796644167), SC_(337.02379892037415974324110858584141950140615910272) }, + { SC_(343.941375732421875), SC_(0.814723670482635498046875), SC_(360.01293394301724997491319975978028550819665991333), SC_(326.80369341662446794086774578678508138574243613798) }, + { SC_(343.941375732421875), SC_(0.835008561611175537109375), SC_(361.4969175061521603929666991064046266869507936824), SC_(325.36877434415638638140640152843504112319238324225) }, + { SC_(343.941375732421875), SC_(0.905791938304901123046875), SC_(367.95209534070281285564214935447460943533843793798), SC_(319.17401209340509296292533057273098155396766120142) }, + { SC_(343.941375732421875), SC_(0.9133758544921875), SC_(368.83612909654336404984965404884302642188511372918), SC_(318.33154419315381577836628818669341086413147439836) }, + { SC_(343.941375732421875), SC_(0.957506835460662841796875), SC_(375.7070309187892614533485302743963702559237337619), SC_(311.83156633462336416702078396241369003176997015578) }, + { SC_(343.941375732421875), SC_(0.964888513088226318359375), SC_(377.39034115914262207957274900548682058762187983703), SC_(310.25195835293005219150343253186376409070182314542) }, + { SC_(343.941375732421875), SC_(0.967694938182830810546875), SC_(378.10789284334281260807020620530773072693388853821), SC_(309.5801348822718050381774412914620671348840415658) }, + { SC_(343.941375732421875), SC_(0.968867778778076171875), SC_(378.42322482269838135749591142066116673632157308079), SC_(309.28518561116417770865167910789774401383753298091) }, + { SC_(343.941375732421875), SC_(0.992881298065185546875), SC_(389.72131289364466116410416488899635208762186768813), SC_(298.83189340467096767657305227458387853910147714465) }, + { SC_(343.941375732421875), SC_(0.996461331844329833984375), SC_(394.41242956222249893987240602868232584925877296371), SC_(294.5561200509978835371151544952202830582774047984) }, + { SC_(569.76220703125), SC_(0.097540400922298431396484375), SC_(538.45030039031537223511672672755988073568121136779), SC_(600.30040644706731020621005354900165878830335948085) }, + { SC_(569.76220703125), SC_(0.12698681652545928955078125), SC_(542.08524130793528778924696517422920188232333796285), SC_(596.53960230243584125350100030341293668486372816616) }, + { SC_(569.76220703125), SC_(0.135477006435394287109375), SC_(543.02218950968988085128891214412311414609086957687), SC_(595.57284794554982812643492687792909065252807636993) }, + { SC_(569.76220703125), SC_(0.188381969928741455078125), SC_(548.12934331563329581440340966336826823474131360043), SC_(590.32211105573753546281829889693077399392121649682) }, + { SC_(569.76220703125), SC_(0.22103404998779296875), SC_(550.84639357817344913115651838141420278711066644314), SC_(587.54160966502683229457807611289229074649790795304) }, + { SC_(569.76220703125), SC_(0.278498232364654541015625), SC_(555.13492532541460607456549293372367896743828278906), SC_(583.17107517813122130837418138728694762022141485725) }, + { SC_(569.76220703125), SC_(0.308167040348052978515625), SC_(557.1780357080541696025240381981526201942226358325), SC_(581.09666867621769999505668401704059932056267944095) }, + { SC_(569.76220703125), SC_(0.546881496906280517578125), SC_(571.90920239096662385576391800578448563755582505978), SC_(566.2864339540194956598392755317983382970112589154) }, + { SC_(569.76220703125), SC_(0.54722058773040771484375), SC_(571.92966599918166554253764083769625949033845351031), SC_(566.26603780776573262364334820203823771464547304344) }, + { SC_(569.76220703125), SC_(0.6323592662811279296875), SC_(577.18468935759428610001358732671802957739052803431), SC_(561.04443143198467885282782555446681310974694651433) }, + { SC_(569.76220703125), SC_(0.814723670482635498046875), SC_(590.60154262143829455324989824499458064073122360726), SC_(547.856771505263888626757127179895196114427983818) }, + { SC_(569.76220703125), SC_(0.835008561611175537109375), SC_(592.50463785230571254428992611264902789091424168145), SC_(546.0027356485470540812974168258652005248568390162) }, + { SC_(569.76220703125), SC_(0.905791938304901123046875), SC_(600.77633100840406756346970524552444028654634341474), SC_(537.99142470591477846001288790821867726479890944736) }, + { SC_(569.76220703125), SC_(0.9133758544921875), SC_(601.90831261019936014596994111921091142589619055786), SC_(536.90100266498684833863377189798652206407925209042) }, + { SC_(569.76220703125), SC_(0.957506835460662841796875), SC_(610.69968309331161026211184187445284658726962558934), SC_(528.48048815549479123478865563111774590011283705576) }, + { SC_(569.76220703125), SC_(0.964888513088226318359375), SC_(612.8517196603507746509124259182678427694269571442), SC_(526.43213103357586497635943083178324232573553845347) }, + { SC_(569.76220703125), SC_(0.967694938182830810546875), SC_(613.76886783755978873050727093775139036032788769649), SC_(525.560700481401705189450126840950642960488084) }, + { SC_(569.76220703125), SC_(0.968867778778076171875), SC_(614.17187411940339877038207026688412506643030476477), SC_(525.17807208383210656457051479885617135528888655135) }, + { SC_(569.76220703125), SC_(0.992881298065185546875), SC_(628.59560973994366617206998434931984561300078835384), SC_(511.59887573033155421871635167102019231685169968837) }, + { SC_(569.76220703125), SC_(0.996461331844329833984375), SC_(634.57576976847875529807976408334321457506629757947), SC_(506.03389219719146098410453921822122389635018884613) }, + { SC_(677.01727294921875), SC_(0.097540400922298431396484375), SC_(642.91957002956452031050346512146396420717402000347), SC_(710.34126578181259946677430179514987197840671528836) }, + { SC_(677.01727294921875), SC_(0.12698681652545928955078125), SC_(646.88766862133561420411373212005939543252214673924), SC_(706.24730809167535247137260445192242929183589329444) }, + { SC_(677.01727294921875), SC_(0.135477006435394287109375), SC_(647.91037045614661115591875711814070986216195729885), SC_(705.19480099319705924545444664289984970315639677861) }, + { SC_(677.01727294921875), SC_(0.188381969928741455078125), SC_(653.48408474913253548362179782252058727086499922471), SC_(699.47750744808512192684508980001093553515488038336) }, + { SC_(677.01727294921875), SC_(0.22103404998779296875), SC_(656.44875565144928730584655883775976069105452933018), SC_(696.44938686684322233150035914196315241199982173481) }, + { SC_(677.01727294921875), SC_(0.278498232364654541015625), SC_(661.12729648946935993602062203317134305478766160372), SC_(691.6888449406285986346415952602607215541910391933) }, + { SC_(677.01727294921875), SC_(0.308167040348052978515625), SC_(663.35585766604980836222914512581980943145583166855), SC_(689.42898820921343229689471545872333012289399175848) }, + { SC_(677.01727294921875), SC_(0.546881496906280517578125), SC_(679.41750953167193757640545600848709854017104449147), SC_(673.28826956834802290275123751702295264510934935621) }, + { SC_(677.01727294921875), SC_(0.54722058773040771484375), SC_(679.439813365399650216806007417415929600134859859), SC_(673.26603319560200788906336297738825729505499983964) }, + { SC_(677.01727294921875), SC_(0.6323592662811279296875), SC_(685.16668170995136815512880394977788534219754378554), SC_(667.57258132768388094012069751217444313461206711471) }, + { SC_(677.01727294921875), SC_(0.814723670482635498046875), SC_(699.78180256191297181745787886323745544801039269028), SC_(653.18664922499801268220886865957715167032802159489) }, + { SC_(677.01727294921875), SC_(0.835008561611175537109375), SC_(701.85412984993555477138325197892885155261173875602), SC_(651.16338007555682329517923243344180942108653377736) }, + { SC_(677.01727294921875), SC_(0.905791938304901123046875), SC_(710.85930121398056502005391393573658955515342254981), SC_(642.41858286978042713831737573303753580486169035744) }, + { SC_(677.01727294921875), SC_(0.9133758544921875), SC_(712.09139882183290167869691721078026052130705704984), SC_(641.228043303795030348158280951903898931883071141) }, + { SC_(677.01727294921875), SC_(0.957506835460662841796875), SC_(721.65820214300190701023408117810509437101670003484), SC_(632.03207955542592897907259782998601320790100956135) }, + { SC_(677.01727294921875), SC_(0.964888513088226318359375), SC_(723.99949432229638655154119056682865437763848524761), SC_(629.79446132001584139957406571028863388485520069556) }, + { SC_(677.01727294921875), SC_(0.967694938182830810546875), SC_(724.99723229018329529837489574458360436305564279498), SC_(628.84243842412759959160201537845150666923726968521) }, + { SC_(677.01727294921875), SC_(0.968867778778076171875), SC_(725.43563817813245582466749972902951192848304939416), SC_(628.42440925737804967254026122315220910849693653552) }, + { SC_(677.01727294921875), SC_(0.992881298065185546875), SC_(741.12135725059247779601954017373673271599111677915), SC_(613.5831676217110956950174270854090892568855564598) }, + { SC_(677.01727294921875), SC_(0.996461331844329833984375), SC_(747.62194696456693210540372548784701775785919047868), SC_(607.49771423436714130088394928923236856550733433893) }, + { SC_(2116.12060546875), SC_(0.097540400922298431396484375), SC_(2056.131544742772408932858643805303950981232752818), SC_(2175.3359457304797970785037100641123349568038588379) }, + { SC_(2116.12060546875), SC_(0.12698681652545928955078125), SC_(2063.1959270721276706498819302555851852959860945849), SC_(2168.145719222154724036931566914347873067385368355) }, + { SC_(2116.12060546875), SC_(0.135477006435394287109375), SC_(2065.0156080558051561305405020255761335367685351136), SC_(2166.2962361967432753815657498511283230778884122013) }, + { SC_(2116.12060546875), SC_(0.188381969928741455078125), SC_(2074.9254937706348888788098039608450112124443808143), SC_(2156.2427850812096499720210455461512059777264058851) }, + { SC_(2116.12060546875), SC_(0.22103404998779296875), SC_(2080.191553129738008965829769299669473961816057503), SC_(2150.9132812835668596541586003931248430983258162759) }, + { SC_(2116.12060546875), SC_(0.278498232364654541015625), SC_(2088.494869744926400530419366208349116599222198336), SC_(2142.5279695532082951577616260929808659784728040516) }, + { SC_(2116.12060546875), SC_(0.308167040348052978515625), SC_(2092.4470353455992512072041416784592399887614097273), SC_(2138.5445104396349291534141036289050624213170125972) }, + { SC_(2116.12060546875), SC_(0.546881496906280517578125), SC_(2120.8744931713974196430378849569991514817739348621), SC_(2110.0379904126398533345883759827042160255959880304) }, + { SC_(2116.12060546875), SC_(0.54722058773040771484375), SC_(2120.9139004816857211263381566474335413399425926598), SC_(2109.9986505597877445790957391347041866317817036102) }, + { SC_(2116.12060546875), SC_(0.6323592662811279296875), SC_(2131.0261987234513924823236164684832872712903611799), SC_(2099.9197669634262486689664835804784923413832743398) }, + { SC_(2116.12060546875), SC_(0.814723670482635498046875), SC_(2156.7781623132757148773264856230997475967899016508), SC_(2074.3969755293861034226502326154089716551704583128) }, + { SC_(2116.12060546875), SC_(0.835008561611175537109375), SC_(2160.4233304818763757344447976700753289028650300668), SC_(2070.8008610324208942390039818599221856323441049959) }, + { SC_(2116.12060546875), SC_(0.905791938304901123046875), SC_(2176.2453494464134566128218322938753807973910947795), SC_(2055.2391871148797079611505694759189250031135309311) }, + { SC_(2116.12060546875), SC_(0.9133758544921875), SC_(2178.4078986712979241924541284206298932111503287432), SC_(2053.1181904437551686430745112630580255403060549386) }, + { SC_(2116.12060546875), SC_(0.957506835460662841796875), SC_(2195.1812425894289226571940248275039809417912249934), SC_(2036.7156268624278931424545634412307301686029801535) }, + { SC_(2116.12060546875), SC_(0.964888513088226318359375), SC_(2199.2813577438241106170937852846874153889528355289), SC_(2032.7191657889547895029550221244370256123542219595) }, + { SC_(2116.12060546875), SC_(0.967694938182830810546875), SC_(2201.028041797465614878174260623219344982022186032), SC_(2031.0181875900878013681518623055003909690790974723) }, + { SC_(2116.12060546875), SC_(0.968867778778076171875), SC_(2201.7954263315647541150281933266278476205842567018), SC_(2030.271175578312197998561016585672885006572763346) }, + { SC_(2116.12060546875), SC_(0.992881298065185546875), SC_(2229.20870151369012570773754197936771308115802723), SC_(2003.7021547329206222561892892916327507891069653666) }, + { SC_(2116.12060546875), SC_(0.996461331844329833984375), SC_(2240.5453564989999961029978191482616642194855574606), SC_(1992.7804912260618072358104375284439748960983752545) }, + { SC_(4018.59375), SC_(0.097540400922298431396484375), SC_(3936.0707839936534658068037709837022154028468240748), SC_(4100.3429932228490132295562962037005580067753995907) }, + { SC_(4018.59375), SC_(0.12698681652545928955078125), SC_(3945.8298848072531681967763115326701011222304385175), SC_(4090.4580515539203116157511318979828037430114145067) }, + { SC_(4018.59375), SC_(0.135477006435394287109375), SC_(3948.3431860784393591046949054916115421166424892548), SC_(4087.9149489588695231903231724914509574846610121261) }, + { SC_(4018.59375), SC_(0.188381969928741455078125), SC_(3962.026914533454778256547392766703660328918691298), SC_(4074.0876581899245589773390008815568240494771257502) }, + { SC_(4018.59375), SC_(0.22103404998779296875), SC_(3969.295924119662357253869063628711157720432722442), SC_(4066.7552053333087195454276384083262938716698670437) }, + { SC_(4018.59375), SC_(0.278498232364654541015625), SC_(3980.7539798627947628756315568703636848849885829801), SC_(4055.2151558067574346196529235040270145416328741923) }, + { SC_(4018.59375), SC_(0.308167040348052978515625), SC_(3986.2062497747154496657643353483985833864589926666), SC_(4049.7315928373063815919969814866367902655466295348) }, + { SC_(4018.59375), SC_(0.546881496906280517578125), SC_(4025.3960908602849123767621274849217695199979072139), SC_(4010.4626905708512464892384826977057329281210078885) }, + { SC_(4018.59375), SC_(0.54722058773040771484375), SC_(4025.4503839302755820703244733259089479264879146024), SC_(4010.4084649575057182910577968043910936545212117068) }, + { SC_(4018.59375), SC_(0.6323592662811279296875), SC_(4039.3794736838035237650906169931411509654406401368), SC_(3996.512789440848630240966788632148807590981569034) }, + { SC_(4018.59375), SC_(0.814723670482635498046875), SC_(4074.8241513151548652841669363596596548803529459764), SC_(3961.2972802655596803731971008364528155066493702018) }, + { SC_(4018.59375), SC_(0.835008561611175537109375), SC_(4079.8381955836874305784404198828105645281082681895), SC_(3956.3322886731084834061109902611558574385738950652) }, + { SC_(4018.59375), SC_(0.905791938304901123046875), SC_(4101.5930074190889591181905761620964358329914747529), SC_(3934.8378153989023604313456729116156244619773576471) }, + { SC_(4018.59375), SC_(0.9133758544921875), SC_(4104.5653336524982007455874636264703567320104886892), SC_(3931.9070404968629919119483108796691931684445299499) }, + { SC_(4018.59375), SC_(0.957506835460662841796875), SC_(4127.6104965933207419244325669411994374078163135082), SC_(3909.2326447031534155938018309060133626563083616482) }, + { SC_(4018.59375), SC_(0.964888513088226318359375), SC_(4133.2412859243264517014798650589658140926827665051), SC_(3903.7055050316430475007438389660944997197219760915) }, + { SC_(4018.59375), SC_(0.967694938182830810546875), SC_(4135.6397624325915555302918946373349154120603162533), SC_(3901.3527323266136235969547226692101670194348625531) }, + { SC_(4018.59375), SC_(0.968867778778076171875), SC_(4136.6934498135746505912159625886179747445584419212), SC_(3900.3194165334185826338280305204678046660132784103) }, + { SC_(4018.59375), SC_(0.992881298065185546875), SC_(4174.3127205116233800136099201444135805703494110839), SC_(3863.5443505419649285195936402915256514724289152547) }, + { SC_(4018.59375), SC_(0.996461331844329833984375), SC_(4189.8578469221414122575403980876518068299164107252), SC_(3848.4141834068660975656489719558688726469405687791) }, + { SC_(5101.35546875), SC_(0.097540400922298431396484375), SC_(5008.426152334151347018466615583704166261306909695), SC_(5193.5110618343812434701391571589148086548206096888) }, + { SC_(5101.35546875), SC_(0.12698681652545928955078125), SC_(5019.4296910051169477313031600605321003023754924692), SC_(5182.3816830927945755870832159846294799865531524683) }, + { SC_(5101.35546875), SC_(0.135477006435394287109375), SC_(5022.2633108553966419228383432767835999568254565268), SC_(5179.5182620881442498342515988120540644312665750361) }, + { SC_(5101.35546875), SC_(0.188381969928741455078125), SC_(5037.689828091456472035432279595506972532995229467), SC_(5163.9481832669946720329180400716555474916132659457) }, + { SC_(5101.35546875), SC_(0.22103404998779296875), SC_(5045.8838165500017329382878994900282136599876709415), SC_(5155.6907518138736540429861597679212700630561335636) }, + { SC_(5101.35546875), SC_(0.278498232364654541015625), SC_(5058.7987584428690010603073093824403971797603275662), SC_(5142.6938164520721561234287347532261579850659203431) }, + { SC_(5101.35546875), SC_(0.308167040348052978515625), SC_(5064.9437902636676935534342928283342608293049182478), SC_(5136.5174916812811145370471667778822886942667906736) }, + { SC_(5101.35546875), SC_(0.546881496906280517578125), SC_(5109.1038045230881577773454494131957747377023339049), SC_(5092.2784164819403957943872445330649961218154397982) }, + { SC_(5101.35546875), SC_(0.54722058773040771484375), SC_(5109.1649719837236339817513121458663734755641629981), SC_(5092.2173164777632305341962687195555754779642827745) }, + { SC_(5101.35546875), SC_(0.6323592662811279296875), SC_(5124.8566933461619560228289524929629217402167515404), SC_(5076.5590092557104134361305819395460484538854624886) }, + { SC_(5101.35546875), SC_(0.814723670482635498046875), SC_(5164.7775533415905308606362709890697168329548232621), SC_(5036.8673168426772072262956646941015087308374509126) }, + { SC_(5101.35546875), SC_(0.835008561611175537109375), SC_(5170.4237554300480399623331448709478824073733652568), SC_(5031.2701671952285396527764532690773860991255182884) }, + { SC_(5101.35546875), SC_(0.905791938304901123046875), SC_(5194.9183720091812395838082053560344031856973650814), SC_(5007.0358876459690038998296855757812391506748660832) }, + { SC_(5101.35546875), SC_(0.9133758544921875), SC_(5198.2646580002515422865007279639392903132409565951), SC_(5003.7311526976749347229010926113363678356230783871) }, + { SC_(5101.35546875), SC_(0.957506835460662841796875), SC_(5224.2061752496951649870549762278363969288211233393), SC_(4978.1603994816179460771275993941014250706068994958) }, + { SC_(5101.35546875), SC_(0.964888513088226318359375), SC_(5230.543834317593317587404962788996730567373445405), SC_(4971.9263890295074031522728901691049084391709573273) }, + { SC_(5101.35546875), SC_(0.967694938182830810546875), SC_(5233.243310129673082808758006057140301979386234662), SC_(4969.272616536393415260260780938970294644846262622) }, + { SC_(5101.35546875), SC_(0.968867778778076171875), SC_(5234.4292127822792456365135909466993084322468436454), SC_(4968.1070852509782363815136876780603569829587459012) }, + { SC_(5101.35546875), SC_(0.992881298065185546875), SC_(5276.7616062520965173051655898249454045331956387497), SC_(4926.6188847738786707759762074160001917724282411443) }, + { SC_(5101.35546875), SC_(0.996461331844329833984375), SC_(5294.2501844314325125048772034713449994484653720861), SC_(4909.5452582703210591979659987383164828981390456314) }, + { SC_(13472.287109375), SC_(0.097540400922298431396484375), SC_(13321.509336342814016939407594305469126665173908278), SC_(13622.291157811434064811076782402415527051787793896) }, + { SC_(13472.287109375), SC_(0.12698681652545928955078125), SC_(13339.430623859773449473867223285813164096904412236), SC_(13604.244032033515017531483956804339033056504319254) }, + { SC_(13472.287109375), SC_(0.135477006435394287109375), SC_(13344.044875551923055003102393128241906739559136479), SC_(13599.599979577883302140153734053880016126040615276) }, + { SC_(13472.287109375), SC_(0.188381969928741455078125), SC_(13369.159462638029437108114105616614173433348840568), SC_(13574.341832587589025708574775831268207659268611373) }, + { SC_(13472.287109375), SC_(0.22103404998779296875), SC_(13382.49536602799266543338108343575696944508483471), SC_(13560.942486839219001529172723527296716955373812772) }, + { SC_(13472.287109375), SC_(0.278498232364654541015625), SC_(13403.509078586706036133172628024638283744953682557), SC_(13539.846781536909927223317973533611947925723844512) }, + { SC_(13472.287109375), SC_(0.308167040348052978515625), SC_(13413.505148328594948814497371707047100651297815376), SC_(13529.81941909306577703969923735786866013306082014) }, + { SC_(13472.287109375), SC_(0.546881496906280517578125), SC_(13485.294199289283559134394974022412397991553440821), SC_(13457.951307748265022050341604414239085051568694591) }, + { SC_(13472.287109375), SC_(0.54722058773040771484375), SC_(13485.393581281356354101831548685205551565426728831), SC_(13457.851993212219583489480999314033048302363894409) }, + { SC_(13472.287109375), SC_(0.6323592662811279296875), SC_(13510.88371724971574712006111180448448986038903186), SC_(13432.395271161689852106478483997463362663184272793) }, + { SC_(13472.287109375), SC_(0.814723670482635498046875), SC_(13575.687501208338503015327471034179160306983991627), SC_(13367.820652770404302796525145864768036922960857783) }, + { SC_(13472.287109375), SC_(0.835008561611175537109375), SC_(13584.84783738172991634549579798610296097967425791), SC_(13358.709368495873114850112384880806538400658276777) }, + { SC_(13472.287109375), SC_(0.905791938304901123046875), SC_(13624.572865617532065585542679501501354564267191607), SC_(13319.24467375842712259059005432054226850476838892) }, + { SC_(13472.287109375), SC_(0.9133758544921875), SC_(13629.997967694922530299857221893979430454373232789), SC_(13313.861122058286460766002537973251312862384527324) }, + { SC_(13472.287109375), SC_(0.957506835460662841796875), SC_(13672.040076812056139173655258967916835983691304596), SC_(13272.189769794293141289802429921883590322240623341) }, + { SC_(13472.287109375), SC_(0.964888513088226318359375), SC_(13682.307154187056918977757761381544778907402334372), SC_(13262.026338628394852723091843869472676980570491091) }, + { SC_(13472.287109375), SC_(0.967694938182830810546875), SC_(13686.679853573044805715245773961497453039600405299), SC_(13257.699341444709197060065421653399200238946200322) }, + { SC_(13472.287109375), SC_(0.968867778778076171875), SC_(13688.600726767116170546457425717608064097667372415), SC_(13255.798839109163404233963534674631378011190564693) }, + { SC_(13472.287109375), SC_(0.992881298065185546875), SC_(13757.132735620495312173288987252384908485800121366), SC_(13188.11099623988365459730671377960849979963440631) }, + { SC_(13472.287109375), SC_(0.996461331844329833984375), SC_(13785.42461768262875823645818711186354219560847756), SC_(13160.234048332580281387288998623329226376221006978) }, + { SC_(21533.0078125), SC_(0.097540400922298431396484375), SC_(21342.489530774528422442751297452797856912271534306), SC_(21722.752369341177445966709513523872359998152638084) }, + { SC_(21533.0078125), SC_(0.12698681652545928955078125), SC_(21365.163134860999454698235267807132982623870326046), SC_(21699.952927406596208517823030105742141485690107312) }, + // This next one is disabled, because rounding the expected result to float + // results in a change of value when rounding the result. + // { SC_(21533.0078125), SC_(0.135477006435394287109375), SC_(21371.000635839925468224783394436264380332621650997), SC_(21694.085625753365583876792313211090140641237364813) }, + { SC_(21533.0078125), SC_(0.188381969928741455078125), SC_(21402.770687925746754018108265475209057176344684766), SC_(21662.172014146846950443900950560166812044088262695) }, + { SC_(21533.0078125), SC_(0.22103404998779296875), SC_(21419.638962869415971010599238922528933576697585819), SC_(21645.240296989914953912074020329465712841475123166) }, + { SC_(21533.0078125), SC_(0.278498232364654541015625), SC_(21446.216338805119994100950385012299870473665630669), SC_(21618.580928476108223370743123436382577519047601928) }, + { SC_(21533.0078125), SC_(0.308167040348052978515625), SC_(21458.857981420800853369438097216364035795967755877), SC_(21605.907993215065680862411562940327751235639835825) }, + { SC_(21533.0078125), SC_(0.546881496906280517578125), SC_(21549.627545070877730360754111396995498261412405609), SC_(21515.059369307696871271661919837674378168993970665) }, + { SC_(21533.0078125), SC_(0.54722058773040771484375), SC_(21549.753179571013263889918578328687169704467238534), SC_(21514.933802263490359509166807428906690586363289475) }, + { SC_(21533.0078125), SC_(0.6323592662811279296875), SC_(21581.974601302864615857244782514336741884395734384), SC_(21482.745794398686763439050080601847328209204644086) }, + { SC_(21533.0078125), SC_(0.814723670482635498046875), SC_(21663.872367350387475035008256452069501897450083904), SC_(21401.077193458745796458879598059735976167554307072) }, + { SC_(21533.0078125), SC_(0.835008561611175537109375), SC_(21675.446827929503803640203376831878825072934453297), SC_(21389.551784654799299671107702856803076075076776328) }, + { SC_(21533.0078125), SC_(0.905791938304901123046875), SC_(21725.634765736413776389143291809050357300699306627), SC_(21339.6241795405693269559823355712767928082592718) }, + { SC_(21533.0078125), SC_(0.9133758544921875), SC_(21732.48796045968784137781373249147199899474733742), SC_(21332.8125350427175652901170857351517464592136753) }, + { SC_(21533.0078125), SC_(0.957506835460662841796875), SC_(21785.590741330979888005344804033132087524399988861), SC_(21280.080509386589379665484620938712973319935895665) }, + { SC_(21533.0078125), SC_(0.964888513088226318359375), SC_(21798.557218003432867406166855932357022109497728002), SC_(21267.217678374239705649203964780441964266860151737) }, + { SC_(21533.0078125), SC_(0.967694938182830810546875), SC_(21804.079374038028385048187041100264350787618846948), SC_(21261.741224287222313604821025048565879887594278124) }, + { SC_(21533.0078125), SC_(0.968867778778076171875), SC_(21806.505150808045188175269798380893915291446599662), SC_(21259.335818259699059193512358302672174062051718198) }, + { SC_(21533.0078125), SC_(0.992881298065185546875), SC_(21893.035484643765250702345204307305220150252817399), SC_(21173.649644247497441133933107438101115419091883006) }, + { SC_(21533.0078125), SC_(0.996461331844329833984375), SC_(21928.748866501301794010747676997623434830926924354), SC_(21138.35119254861052629794920186014308896076971475) }, + { SC_(36064.203125), SC_(0.097540400922298431396484375), SC_(35817.756768465760157590621734165018504764822234946), SC_(36309.87575645560720888470897187326305111307971067) }, + { SC_(36064.203125), SC_(0.12698681652545928955078125), SC_(35847.118451935014429046646043595383698848956280643), SC_(36280.388235416270565451383221510177119530752580683) }, + { SC_(36064.203125), SC_(0.135477006435394287109375), SC_(35854.677469154058812990446398308816060488884214194), SC_(36272.799417582977292393610184889120531754662042693) }, + { SC_(36064.203125), SC_(0.188381969928741455078125), SC_(35895.813963688688899347185287707174915963110925951), SC_(36231.519363785909686114717073499040831813259848196) }, + { SC_(36064.203125), SC_(0.22103404998779296875), SC_(35917.653456211419739834853063677815640317758960528), SC_(36209.61642914766359611814946788126355540985450165) }, + { SC_(36064.203125), SC_(0.278498232364654541015625), SC_(35952.060752264711660225756482245675795827380357506), SC_(36175.127140627721533908135757767552638737317829985) }, + { SC_(36064.203125), SC_(0.308167040348052978515625), SC_(35968.425594177917174114988015625463665216529807154), SC_(36158.731006107268024793529385791325197439496378759) }, + { SC_(36064.203125), SC_(0.546881496906280517578125), SC_(36085.90704613659583139939209269495550265372509376), SC_(36041.170493976707019744110284599564890573120559004) }, + { SC_(36064.203125), SC_(0.54722058773040771484375), SC_(36086.069626640932451371680215150290901608708630273), SC_(36041.007980928233195582697368438443122786769469145) }, + { SC_(36064.203125), SC_(0.6323592662811279296875), SC_(36127.764204300101112509183105856533197297089468966), SC_(35999.346817101912053061808800875199004294182125904) }, + { SC_(36064.203125), SC_(0.814723670482635498046875), SC_(36233.718875717808828467602793313871953177027240436), SC_(35893.621310482160314578578260464699451147711607827) }, + { SC_(36064.203125), SC_(0.835008561611175537109375), SC_(36248.690808962376388084529607619710721880422487915), SC_(35878.698428929463581276848946039910866441775986925) }, + { SC_(36064.203125), SC_(0.905791938304901123046875), SC_(36313.603520004301043829040859165025143758574372428), SC_(35814.04605003764537924388506916510248513184115016) }, + { SC_(36064.203125), SC_(0.9133758544921875), SC_(36322.466512379710977125706991116296873669955779604), SC_(35805.224607785412252967347192248072950856592829061) }, + { SC_(36064.203125), SC_(0.957506835460662841796875), SC_(36391.135299980195669560575736147367436281777633283), SC_(35736.926574297038969011121854824598284630491333953) }, + { SC_(36064.203125), SC_(0.964888513088226318359375), SC_(36407.900717612615585771720933010639586549398001689), SC_(35720.264801955017393133538609471435523920615869955) }, + { SC_(36064.203125), SC_(0.967694938182830810546875), SC_(36415.040536152281865027842381342733053433785349414), SC_(35713.170685191394470780844154374449975091285878881) }, + { SC_(36064.203125), SC_(0.968867778778076171875), SC_(36418.176877787056615649047742815339774220928179991), SC_(35710.054714220975799133006437370089582352859367611) }, + { SC_(36064.203125), SC_(0.992881298065185546875), SC_(36530.036726520261049674022412341545736190010493948), SC_(35599.039021162752923959319339473143116039188421182) }, + { SC_(36064.203125), SC_(0.996461331844329833984375), SC_(36576.19456101664404260142699288335175602354959484), SC_(35553.29611413405182964733910119676514324895954306) } + }}; +#undef SC_ + diff --git a/test/powm1_sqrtp1m1_test.cpp b/test/powm1_sqrtp1m1_test.cpp new file mode 100644 index 000000000..14fe5bb35 --- /dev/null +++ b/test/powm1_sqrtp1m1_test.cpp @@ -0,0 +1,1658 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the functions powm1 and sqrt1pm1. +// The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 5, 2); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void test_powm1_sqrtp1m1(T, const char* type_name) +{ +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 141> sqrtp1m1_data = { + SC_(-0.990433037281036376953125), SC_(-0.902189148255607021082179865003660033379), + SC_(-0.928576648235321044921875), SC_(-0.7327485233629588435419837213946140663952), + SC_(-0.804919183254241943359375), SC_(-0.5583204592175928547330219789723812512248), + SC_(-0.780276477336883544921875), SC_(-0.5312532425038905348288090678272629719499), + SC_(-0.775070965290069580078125), SC_(-0.525733160857803152349794525146692520785), + SC_(-0.74602639675140380859375), SC_(-0.4960420620244223284705423670972348730775), + SC_(-0.72904598712921142578125), SC_(-0.4794675678972648545670296583048773096015), + SC_(-0.7162272930145263671875), SC_(-0.4672967927771847619430106324762494277417), + SC_(-0.68477380275726318359375), SC_(-0.4385499156267435234127335149836228483716), + SC_(-0.62323606014251708984375), SC_(-0.3861890031471553130754715740017444288273), + SC_(-0.576151371002197265625), SC_(-0.3489634196162225368137418186622322770468), + SC_(-0.5579319000244140625), SC_(-0.3351179804088653673227401220715512851566), + SC_(-0.44300353527069091796875), SC_(-0.2536780421766293214167684432407843582845), + SC_(-0.40594112873077392578125), SC_(-0.2292478535422518369418742953348121057781), + SC_(-0.38366591930389404296875), SC_(-0.2149305249240001453212315877592832894955), + SC_(-0.277411997318267822265625), SC_(-0.1499482352928545459530860365223688354153), + SC_(-0.202522933483123779296875), SC_(-0.1069842854031759981174720343292165991554), + SC_(-0.156477451324462890625), SC_(-0.08156516362044655434273010203540784115386), + SC_(-0.029248714447021484375), SC_(-0.01473288619127324715091701268111937769847), + SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.7157823022213515067013249647418825993242e-30), + SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.8957334661740438174482231412854044374117e-30), + SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.3006809601267770031555316613411940789777e-29), + SC_(0.115805324961653822428570241697281798758e-28), SC_(0.5790266248082691121428512084847326346288e-29), + SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.711228700417000549087855864391394898182e-29), + SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.2485060509163769576814352738907342268877e-28), + SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.483003970752874879587908708209209280428e-28), + SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.6164646566265910656881655476946945507336e-28), + SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.1648261642808879656390930274546578154505e-27), + SC_(0.528364435768055252017009628713605422886e-27), SC_(0.26418221788402762600850481432190658932e-27), + SC_(0.886586057273120049620324386849842094685e-27), SC_(0.4432930286365600248101621933266666927236e-27), + SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.1249834837415521629609078510629667512608e-26), + SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.2065525198616311482157181333686170847381e-26), + SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.3839869048940716775690829359127023723085e-26), + SC_(0.199929739820949207249437007767740538737e-25), SC_(0.9996486991047460362471850338422150855758e-26), + SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.2575738707623489229877064867240932346063e-25), + SC_(0.101200734533556026342258477595279955025e-24), SC_(0.5060036726677801317112923751744139374608e-25), + SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.1032146347948270490899273175045223276369e-24), + SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.2031647166448166697628717010560376261299e-24), + SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.406909788396843122648337201659060874841e-24), + SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.478777531356612690096475392014950219861e-24), + SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.1427580478149250402187809401860126128887e-23), + SC_(0.65201444297915461398563707001320281266e-23), SC_(0.3260072214895773069928180036030590895584e-23), + SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.6554941873181750191604865975243736714241e-23), + SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.1295144418899348104613996701237435743037e-22), + SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.1468889771096827601137038857784795823862e-22), + SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.3931756589002251524876964413613741224383e-22), + SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.9519093035436943818533447771092722109619e-22), + SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.1906121071188675435283289822871922426703e-21), + SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.2746566790070665138588640028286254797086e-21), + SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.4836076817142093477832216739707042687854e-21), + SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.8510847388119071922795771513771277983779e-21), + SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.2408557284988699892835476663213068137742e-20), + SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.3769176496378231591644535904879420358976e-20), + SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.1298152857974999854188882800497720744566e-19), + SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.2222293740162160795491768745456732380306e-19), + SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.4857787460749286968416557290578449901693e-19), + SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.1018299271366726893582284814835737930738e-18), + SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.2124485965829330131855381318229788476899e-18), + SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.3260548743806729481275307007092796054895e-18), + SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.718063082048095028882939519555349077068e-18), + SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.1559454450729630579993578498052878596544e-17), + SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.1796673306797587856195132689035439820049e-17), + SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.4722937427062383596534390682373393588305e-17), + SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.1283091216047040761280036193264127770924e-16), + SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.1681882847574674651186419380749519252198e-16), + SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.53679095066963128825600266401137964529e-16), + SC_(0.186668406231853462907965823802669547149e-15), SC_(0.9333420311592672709834617625880158673234e-16), + SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.1863770401328877670715685744569461355954e-15), + SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.3105823383933427063051696310530511222847e-15), + SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.7805934298771264278032012284733416682125e-15), + SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.1546005382361495038101520151206746652194e-14), + SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.3096425288685840272203037716324248888074e-14), + SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.5239395140074924891505551783318071383455e-14), + SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.989236819494199482255280888212449451182e-14), + SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.2020908126173344817583717046094650765545e-13), + SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.4705151131450806597841891098742774312111e-13), + SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.6672651119794245056505554066901540498883e-13), + SC_(0.266297021326439287136622624529991298914e-12), SC_(0.1331485106632107793053653966876952769505e-12), + SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.29602077625079163483389193486561174812e-12), + SC_(0.155163989296047688526414276566356420517e-11), SC_(0.7758199464799374943373933162927267207972e-12), + SC_(0.326923297461201300961874949280172586441e-11), SC_(0.1634616487304670519279090616362400067267e-11), + SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.1876892955289159453352533516401529801122e-11), + SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.4789582792863088185252592080679746767978e-11), + SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.9290837196763851538764282981715353513818e-11), + SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.2724742653688676823559737485578304836506e-10), + SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.3044759583301913769320592805847923970217e-10), + SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.6688723880097794765058899684143827289977e-10), + SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.1277229433245854586915920539477320784002e-9), + SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.4642802530240543332889135775318577029962e-9), + SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.8491137234171087978551371134983090509552e-9), + SC_(0.339355921141759608872234821319580078125e-8), SC_(0.1696779604269267531629088042873986404561e-8), + SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.3156864320521319970871232105329124668304e-8), + SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.4191632365743462521529019590756957227221e-8), + SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.9813155573280803193195787399755096477409e-8), + SC_(0.5256384838503436185419559478759765625e-7), SC_(0.2628192384714742037346966666026188341227e-7), + SC_(0.116242290459922514855861663818359375e-6), SC_(0.5812114354092759417537613189484537667262e-7), + SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.8884602525353202473263890111106254261705e-7), + SC_(0.246631174150024889968335628509521484375e-6), SC_(0.1233155794716463747702014149912298889881e-6), + SC_(0.7932688959044753573834896087646484375e-6), SC_(0.3966343692928262265327186740527956086072e-6), + SC_(0.1372093493046122603118419647216796875e-5), SC_(0.6860465111931535414103361330991297079332e-6), + SC_(0.214747751670074649155139923095703125e-5), SC_(0.1073738181893531617762304794194699568343e-5), + SC_(0.527022712049074470996856689453125e-5), SC_(0.2635110088342783512028120843144783486949e-5), + SC_(0.9233162927557714283466339111328125e-5), SC_(0.461657080741584719962950298693491037714e-5), + SC_(0.269396477960981428623199462890625e-4), SC_(0.1346973318119308516416495011442959614762e-4), + SC_(0.3208058114978484809398651123046875e-4), SC_(0.1604016193149502975581143111396377659995e-4), + SC_(0.00010957030463032424449920654296875), SC_(0.5478365169091582645735757270110530879622e-4), + SC_(0.000126518702018074691295623779296875), SC_(0.6325735026285620681070344590408428362373e-4), + SC_(0.00028976381872780621051788330078125), SC_(0.0001448714155003885621472683658275189243597), + SC_(0.000687857042066752910614013671875), SC_(0.0003438693979519525361574726383087724411954), + SC_(0.00145484809763729572296142578125), SC_(0.0007271596682270997885618336103424497281234), + SC_(0.0073254108428955078125), SC_(0.003656022172385267560713803761753901548099), + SC_(0.09376299381256103515625), SC_(0.04583124537975104196281645139037475336575), + SC_(0.0944411754608154296875), SC_(0.04615542605332570615786127417302399776704), + SC_(0.264718532562255859375), SC_(0.1245970534205822199491885900676517027912), + SC_(0.27952671051025390625), SC_(0.1311616641799057655376985599143742875242), + SC_(0.31148135662078857421875), SC_(0.1451992650280511659331021017070743457453), + SC_(0.3574702739715576171875), SC_(0.1651052630434546351309425398611544399279), + SC_(0.362719058990478515625), SC_(0.1673555837834839069815597770182209283592), + SC_(0.45167791843414306640625), SC_(0.2048559741455171397876451754340651729329), + SC_(0.58441460132598876953125), SC_(0.2587353182166570039327003862804562417757), + SC_(0.59585726261138916015625), SC_(0.263272441958340655449252054139087309968), + SC_(0.5962116718292236328125), SC_(0.2634127084326893190571263246997038824839), + SC_(0.6005609035491943359375), SC_(0.265132761234643838648662687260938123223), + SC_(0.62944734096527099609375), SC_(0.2764980771490691893425893413189776581002), + SC_(0.67001712322235107421875), SC_(0.2922914234886615056408835783570718269519), + SC_(0.6982586383819580078125), SC_(0.3031725282486421443925178739003813209589), + SC_(0.75686132907867431640625), SC_(0.3254664571684469135448954017993676523574), + SC_(0.81158387660980224609375), SC_(0.3459509190939327287182180832834475919551), + SC_(0.826751708984375), SC_(0.3515737896927326105907938446356122609441), + SC_(0.83147108554840087890625), SC_(0.3533185454830658156956304096558121255029), + SC_(0.8679864406585693359375), SC_(0.3667430046129994134441282712127036765511), + SC_(0.91433393955230712890625), SC_(0.3835945719582406373102286771719657103388), + SC_(0.91501367092132568359375), SC_(0.3838401898056457601350544781643172326518), + SC_(0.918984889984130859375), SC_(0.3852743013512272831269535677278325535267), + SC_(0.92977702617645263671875), SC_(0.3891641465919182859360893492188078577616), + SC_(0.93538987636566162109375), SC_(0.3911829054317989358513931994433199352401), + SC_(0.93773555755615234375), SC_(0.3920257029078710024155036194055376074007), + SC_(0.94118559360504150390625), SC_(0.3932643660142325996680401116017235829116), + SC_(0.96221935749053955078125), SC_(0.4007924034240546775728864480529865192659), + SC_(0.98576259613037109375), SC_(0.4091708896121758495875515950932191750449), + SC_(0.99292266368865966796875), SC_(0.4117091285702801135545007937655927942821), + }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1400> powm1_data = { + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1431564604442703013402649929484277542953e-29), SC_(-0.4876113153308343652049349438365788782568e-28), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1791466932348087634896446282571611213266e-29), SC_(-0.6101991796549119337733033929476086235147e-28), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.6013619202535540063110633226832922483532e-29), SC_(-0.2048324441766037485142714404837079817647e-27), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.115805324961653822428570241697281798758e-28), SC_(-0.3944494481885382670819636026287935618847e-27), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1422457400834001098175711728787848259007e-28), SC_(-0.4845092719324132218645425927278781231393e-27), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4970121018327539153628705477876439795096e-28), SC_(-0.1692894082166527210362866376720838911671e-26), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9660079415057497591758174164417478444323e-28), SC_(-0.3290360780895537432240111567751307160722e-26), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1232929313253182131376331095427391968754e-27), SC_(-0.4199533030361316903341770129910084958631e-26), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3296523285617759312781860549364832953326e-27), SC_(-0.1122842832471787971733666733700489713877e-25), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.528364435768055252017009628713605422886e-27), SC_(-0.1799684601724219422633144864504456459061e-25), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.886586057273120049620324386849842094685e-27), SC_(-0.301983851933262353667369307173490332305e-25), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2499669674831043259218157022821422146034e-26), SC_(-0.851423131205077246153257242575159396693e-25), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4131050397232622964314362671638736040881e-26), SC_(-0.1407094665264327834604146533729082291379e-24), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.7679738097881433551381658732998641759182e-26), SC_(-0.261582829282236901328884539002832986633e-24), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.199929739820949207249437007767740538737e-25), SC_(-0.6809891995464351323188379271234568515929e-24), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.5151477415246978459754129800826163591626e-25), SC_(-0.1754666656712664684348626881941041760604e-23), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.101200734533556026342258477595279955025e-24), SC_(-0.34470413088736644015953540038270992073e-23), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2064292695896540981798546456623054911033e-24), SC_(-0.7031275246329503001381414764473488822476e-23), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4063294332896333395257434433879773416284e-24), SC_(-0.1384015983694437753942599100031834846519e-22), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.8138195767936862452966745688936976428456e-24), SC_(-0.2771985511871706510319651593329877641942e-22), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9575550627132253801929510132578249716542e-24), SC_(-0.3261569070527988349552625022548697814845e-22), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2855160956298500804375620841706273850616e-23), SC_(-0.9725085302202836634236273890970136659468e-22), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.65201444297915461398563707001320281266e-23), SC_(-0.2220854156138726384270360939328805807496e-21), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1310988374636350038320977491775043421995e-22), SC_(-0.4465413322989495361133815710858355990476e-21), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2590288837798696209228010176465529547374e-22), SC_(-0.8822893101478278733146155237640398711321e-21), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2937779542193655202274099291941187976629e-22), SC_(-0.1000649598540977920935091326953457942208e-20), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.7863513178004503049754083414326234074965e-22), SC_(-0.2678424705352926224139081344679444879469e-20), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1903818607087388763706780167350761726053e-21), SC_(-0.6484677619663470968358777401078973025876e-20), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3812242142377350870566942975497647799754e-21), SC_(-0.1298504028134944266344521819289603363198e-19), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.5493133580141330277178034419485741501887e-21), SC_(-0.1871039617763820057590094637996686252126e-19), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9672153634284186955666772243312215295852e-21), SC_(-0.3294473432116758998094638207256180094583e-19), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1702169477623814384559878647986894129041e-20), SC_(-0.5797831933845967032001409153808505427486e-19), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4817114569977399785676754474621208412799e-20), SC_(-0.1640777904312887822627372613029956055284e-18), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.7538352992756463183303278501219690799218e-20), SC_(-0.2567670510166787584153650238170661635392e-18), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2596305715949999708394617609422128090557e-19), SC_(-0.8843387446340099351857154955251648734277e-18), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4444587480324321591032923385589104015025e-19), SC_(-0.1513889866135372642811595930728137815273e-17), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9715574921498573937069095571295029856174e-19), SC_(-0.3309263341636914772803140564669851761043e-17), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2036598542733453787268262970278076551267e-18), SC_(-0.6936945012060519151079315126759585887524e-17), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4248971931658660264162106698360155121463e-18), SC_(-0.1447260421199383628860906433743869048343e-16), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.6521097487613458963613731825259556273977e-18), SC_(-0.2221178781221441480704197986591689852107e-16), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1436126164096190058281493628911107407475e-17), SC_(-0.4891650475869226303643170206367209825168e-16), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3118908901459261162419055180006211003274e-17), SC_(-0.1062344840825147041561189485134686674784e-15), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3593346613595175715618300349429858897565e-17), SC_(-0.1223945090048411651974452688903537147646e-15), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9445874854124767215374919304693435151421e-17), SC_(-0.3217399653341720695630524182811530497325e-15), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2566182432094081539023303073498993853718e-16), SC_(-0.8740783246589107366187111286071499874759e-15), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3363765695149349330660137891158001366421e-16), SC_(-0.114574655589157486912055633512820155344e-14), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1073581901339262605326457800103412409953e-15), SC_(-0.3656773025840533327467103325113205753957e-14), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.186668406231853462907965823802669547149e-15), SC_(-0.6358192065586750730853832514556047648021e-14), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3727540802657755688795382376099496468669e-15), SC_(-0.1269653544166010514919541179082417894329e-13), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.6211646767866855090717281839829411183018e-15), SC_(-0.2115775453968538439661164062909478793222e-13), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1561186859754253464932505224282976996619e-14), SC_(-0.5317625036268033276607060773206517931366e-13), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3092010764722992466335682593125966377556e-14), SC_(-0.1053182951942663933832876385506518241085e-12), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.6192850577371690132255643845837767003104e-14), SC_(-0.2109373203492102058861790697529436159834e-12), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1047879028014987723427253740737796761096e-13), SC_(-0.3569225374615943825992302718383009611711e-12), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1978473638988408750405412206418986897916e-13), SC_(-0.673896330253118868079779235488630600479e-12), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.4041816252346730475863978426787070930004e-13), SC_(-0.1376700243226680691549667180741589712713e-11), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9410302262901834580155480125540634617209e-13), SC_(-0.3205283121576780981640095118048982901968e-11), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1334530223958893535574077304772799834609e-12), SC_(-0.4545600218337299481258164553284154943185e-11), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.266297021326439287136622624529991298914e-12), SC_(-0.9070456229087110845090862250063546365371e-11), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.5920415525016708979677559909760020673275e-12), SC_(-0.2016577940297158071169597347971748413736e-10), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.155163989296047688526414276566356420517e-11), SC_(-0.5285106706035087367329172863247919698404e-10), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.326923297461201300961874949280172586441e-11), SC_(-0.1113547363379608255313626394695583529731e-9), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3753785910581841633870681107509881258011e-11), SC_(-0.1278593002042478917504524915640565559874e-9), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9579165585749116473834874341264367103577e-11), SC_(-0.3262800376442197422488996705022038458178e-9), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1858167439361402273334533674642443656921e-10), SC_(-0.6329183231503080899469654537111874935801e-9), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.5449485307451595872407779097557067871094e-10), SC_(-0.1856172392031744263095629658180062804824e-8), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.6089519166696533147842274047434329986572e-10), SC_(-0.2074177049579756457337028786392419850624e-8), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1337744776064297980155970435589551925659e-9), SC_(-0.455654943076412885664049644579104536681e-8), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2554458866654840676346793770790100097656e-9), SC_(-0.8700851073320290645945712060227430593679e-8), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9285605062636648199259070679545402526855e-9), SC_(-0.3162809427238687518730427707811416855358e-7), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1698227447555211711005540564656257629395e-8), SC_(-0.5784404650086212080717891696990416782702e-7), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.339355921141759608872234821319580078125e-8), SC_(-0.1155894585519911283131451474518816660213e-6), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.6313728651008432279922999441623687744141e-8), SC_(-0.2150545767594101004999522536841406461754e-6), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.8383264749056706932606175541877746582031e-8), SC_(-0.2855459093319640788691378100921481385269e-6), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1962631124285962869180366396903991699219e-7), SC_(-0.6684999204190548245454426331521639746678e-6), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.5256384838503436185419559478759765625e-7), SC_(-0.179039801806545165134802090058682340943e-5), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.116242290459922514855861663818359375e-6), SC_(-0.3959370311448686121052770212054786570022e-5), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1776920584006802528165280818939208984375e-6), SC_(-0.6052426544092270726332077550989562797738e-5), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.246631174150024889968335628509521484375e-6), SC_(-0.8400574149975703424776922592399345686356e-5), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.7932688959044753573834896087646484375e-6), SC_(-0.27019504593353575174331138594035344317e-4), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.1372093493046122603118419647216796875e-5), SC_(-0.4673436860116692184822065995212276990381e-4), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.214747751670074649155139923095703125e-5), SC_(-0.7314347094958011015415152898676611708704e-4), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.527022712049074470996856689453125e-5), SC_(-0.0001794953387273520847063999705353424942151), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.9233162927557714283466339111328125e-5), SC_(-0.0003144452455611145988190362789271573355057), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.269396477960981428623199462890625e-4), SC_(-0.0009171819454041827299228772649419689423581), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.3208058114978484809398651123046875e-4), SC_(-0.001092113543483231235223797564026187686493), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.00010957030463032424449920654296875), SC_(-0.003725165092629997722835852852785971357824), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.000126518702018074691295623779296875), SC_(-0.00430013520740725016534237907337289449972), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.00028976381872780621051788330078125), SC_(-0.009821222484048957677148666590881994977724), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.000687857042066752910614013671875), SC_(-0.02315705443914839871460170590017136367078), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.00145484809763729572296142578125), SC_(-0.04834642336924823485713723180889556615121), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.002847635187208652496337890625), SC_(-0.09243901554235025144966433539780526547712), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.0056468211114406585693359375), SC_(-0.1749726801434218290890659901859536145181), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.011621631681919097900390625), SC_(-0.3268919046371966783822069227177497837546), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.0257236398756504058837890625), SC_(-0.5836311906673689148844925144089516409523), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.0560617186129093170166015625), SC_(-0.851851787129424067479440220671140566588), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.106835305690765380859375), SC_(-0.9737204139282653351703557652385731401992), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.2401093542575836181640625), SC_(-0.9997193681670538982377759944125290364389), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.438671648502349853515625), SC_(-0.9999996757599823494298976392514104009862), + SC_(0.161179845478123719842988847972264920827e-14), SC_(0.903765499591827392578125), SC_(-0.9999999999999572557406571086231285055005), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1431564604442703013402649929484277542953e-29), SC_(-0.4844007908534772131394346887325243880064e-28), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1791466932348087634896446282571611213266e-29), SC_(-0.6061815136558852969659818106156943003957e-28), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.6013619202535540063110633226832922483532e-29), SC_(-0.2034837888950098477207926024848071370102e-27), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.115805324961653822428570241697281798758e-28), SC_(-0.391852318940973320303604982480182149622e-27), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1422457400834001098175711728787848259007e-28), SC_(-0.4813191718913792878925970621589443986986e-27), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4970121018327539153628705477876439795096e-28), SC_(-0.1681747749590792958677137312544793427331e-26), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9660079415057497591758174164417478444323e-28), SC_(-0.3268696427558630548790076209679634511913e-26), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1232929313253182131376331095427391968754e-27), SC_(-0.417188251618426766144157233436814113815e-26), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3296523285617759312781860549364832953326e-27), SC_(-0.11154498243841273107122578840758587454e-25), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.528364435768055252017009628713605422886e-27), SC_(-0.1787835140311622475639860991274546364897e-25), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.886586057273120049620324386849842094685e-27), SC_(-0.2999955335372043527184121145958580830903e-25), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2499669674831043259218157022821422146034e-26), SC_(-0.8458172014052994532431758589389027360406e-25), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4131050397232622964314362671638736040881e-26), SC_(-0.139783008972484357758582011811719467464e-24), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.7679738097881433551381658732998641759182e-26), SC_(-0.2598605188069413080179985074671226218721e-24), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.199929739820949207249437007767740538737e-25), SC_(-0.6765054387615232771938258210126025383256e-24), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.5151477415246978459754129800826163591626e-25), SC_(-0.1743113601904746001017522277567702601782e-23), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.101200734533556026342258477595279955025e-24), SC_(-0.3424345341514720877425029223076741866833e-23), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2064292695896540981798546456623054911033e-24), SC_(-0.6984980009579182199231442594111782966722e-23), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4063294332896333395257434433879773416284e-24), SC_(-0.1374903362528766565146765802153324723796e-22), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.8138195767936862452966745688936976428456e-24), SC_(-0.2753734238660982596336253868089307184809e-22), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9575550627132253801929510132578249716542e-24), SC_(-0.3240094287219449814641214477324994087466e-22), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2855160956298500804375620841706273850616e-23), SC_(-0.9661053514126047301784928416981811109473e-22), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.65201444297915461398563707001320281266e-23), SC_(-0.2206231635280927768363223999023196596939e-21), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1310988374636350038320977491775043421995e-22), SC_(-0.4436012203031383617142073222753070828535e-21), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2590288837798696209228010176465529547374e-22), SC_(-0.8764801516289811807308128013848969166913e-21), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2937779542193655202274099291941187976629e-22), SC_(-0.9940611336543627968065635102501795200551e-21), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.7863513178004503049754083414326234074965e-22), SC_(-0.2660789454063773222600366980456030660059e-20), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1903818607087388763706780167350761726053e-21), SC_(-0.6441981284342428898077697521581402414226e-20), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3812242142377350870566942975497647799754e-21), SC_(-0.1289954433744490880354316722541691455113e-19), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.5493133580141330277178034419485741501887e-21), SC_(-0.1858720341524588254633292074950762494054e-19), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9672153634284186955666772243312215295852e-21), SC_(-0.327278200031182352483851821159619105861e-19), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1702169477623814384559878647986894129041e-20), SC_(-0.5759657919515339462877754431293255193149e-19), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4817114569977399785676754474621208412799e-20), SC_(-0.1629974714439967767492007802627804358342e-18), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.7538352992756463183303278501219690799218e-20), SC_(-0.2550764485299244254665139001625061474125e-18), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2596305715949999708394617609422128090557e-19), SC_(-0.8785160922536063934682803376716121644709e-18), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4444587480324321591032923385589104015025e-19), SC_(-0.1503922130936379389738401096793841960612e-17), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9715574921498573937069095571295029856174e-19), SC_(-0.3287474530290037904749700610945658689136e-17), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2036598542733453787268262970278076551267e-18), SC_(-0.6891270863288581151471557672725046281868e-17), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4248971931658660264162106698360155121463e-18), SC_(-0.1437731386779379837932143059395401138972e-16), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.6521097487613458963613731825259556273977e-18), SC_(-0.2206554122971131139129524597311766415841e-16), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1436126164096190058281493628911107407475e-17), SC_(-0.4859442930445883228137348922949175216834e-16), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3118908901459261162419055180006211003274e-17), SC_(-0.1055350162876483889457554761503780038655e-15), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3593346613595175715618300349429858897565e-17), SC_(-0.1215886405709071742924307747054308864747e-15), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9445874854124767215374919304693435151421e-17), SC_(-0.3196215689771298575136390344854601244426e-15), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2566182432094081539023303073498993853718e-16), SC_(-0.8683232288106103751410423217086764148434e-15), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3363765695149349330660137891158001366421e-16), SC_(-0.1138202745387419932577321617647410529503e-14), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1073581901339262605326457800103412409953e-15), SC_(-0.3632696145467823089954720178273131694505e-14), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.186668406231853462907965823802669547149e-15), SC_(-0.6316328534908726298725443019958683850532e-14), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3727540802657755688795382376099496468669e-15), SC_(-0.1261293906780355188892580207761067957886e-13), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.6211646767866855090717281839829411183018e-15), SC_(-0.2101844791020430642773541142203342494795e-13), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1561186859754253464932505224282976996619e-14), SC_(-0.5282612794337671118039133316909578883138e-13), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3092010764722992466335682593125966377556e-14), SC_(-0.1046248597591077806008202786356426820985e-12), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.6192850577371690132255643845837767003104e-14), SC_(-0.20954846941635251434268850248704701934e-12), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1047879028014987723427253740737796761096e-13), SC_(-0.3545724924421034074396236737574831845485e-12), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1978473638988408750405412206418986897916e-13), SC_(-0.6694592702517320235988690147574107350722e-12), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.4041816252346730475863978426787070930004e-13), SC_(-0.136763579027020869461040423925528219022e-11), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9410302262901834580155480125540634617209e-13), SC_(-0.3184178935527112257177727440556197379289e-11), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1334530223958893535574077304772799834609e-12), SC_(-0.4515671132800559230661721186901784591853e-11), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.266297021326439287136622624529991298914e-12), SC_(-0.9010734641772444722067928174106284922519e-11), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.5920415525016708979677559909760020673275e-12), SC_(-0.2003300412409264445197987894935007034666e-10), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.155163989296047688526414276566356420517e-11), SC_(-0.5250308570899088268956597325889034576883e-10), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.326923297461201300961874949280172586441e-11), SC_(-0.1106215558406617834692768957077652441882e-9), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3753785910581841633870681107509881258011e-11), SC_(-0.1270174505587799408364463356223313843969e-9), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9579165585749116473834874341264367103577e-11), SC_(-0.3241317485987752496947990132937528973582e-9), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1858167439361402273334533674642443656921e-10), SC_(-0.6287510700449849979080586601206737290248e-9), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.5449485307451595872407779097557067871094e-10), SC_(-0.1843951004410181545727179659293501080432e-8), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.6089519166696533147842274047434329986572e-10), SC_(-0.2060520278352719993567570837393709141609e-8), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1337744776064297980155970435589551925659e-9), SC_(-0.4526548253624255940192936818697766683679e-8), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2554458866654840676346793770790100097656e-9), SC_(-0.864356303601324975300150098008619669461e-8), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9285605062636648199259070679545402526855e-9), SC_(-0.3141984896296551029496096338645100058567e-7), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1698227447555211711005540564656257629395e-8), SC_(-0.5746319044607867904532351843764246487694e-7), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.339355921141759608872234821319580078125e-8), SC_(-0.1148283958919762100905636417765440193453e-6), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.6313728651008432279922999441623687744141e-8), SC_(-0.2136386171883463991491417449073061348682e-6), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.8383264749056706932606175541877746582031e-8), SC_(-0.2836658217038255820052319695862381911414e-6), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1962631124285962869180366396903991699219e-7), SC_(-0.6640983928550264487076716288393362934515e-6), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.5256384838503436185419559478759765625e-7), SC_(-0.1778609711747170689000833844616637008016e-5), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.116242290459922514855861663818359375e-6), SC_(-0.3933301124986543207818818644487273191085e-5), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1776920584006802528165280818939208984375e-6), SC_(-0.6012576350834688181085732977929129409074e-5), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.246631174150024889968335628509521484375e-6), SC_(-0.8345263422871632821588559198783594782703e-5), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.7932688959044753573834896087646484375e-6), SC_(-0.2684160548823891069028421052079627257037e-4), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.1372093493046122603118419647216796875e-5), SC_(-0.4642666788425309547022984501278551973067e-4), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.214747751670074649155139923095703125e-5), SC_(-0.7266189809699178326523971745169713532905e-4), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.527022712049074470996856689453125e-5), SC_(-0.0001783136130811065049523382962320407639286), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.9233162927557714283466339111328125e-5), SC_(-0.0003123752024084363268668477179963218575383), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.269396477960981428623199462890625e-4), SC_(-0.000911145799218773746646444219615156988864), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.3208058114978484809398651123046875e-4), SC_(-0.001084926764902528738172824319788974827948), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.00010957030463032424449920654296875), SC_(-0.003700683345993665188517190883989775516663), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.000126518702018074691295623779296875), SC_(-0.004271882870878222814910007056691176648148), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.00028976381872780621051788330078125), SC_(-0.009756874208170178110266341097702108886193), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.000687857042066752910614013671875), SC_(-0.02300635158962086528635239434937191719585), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.00145484809763729572296142578125), SC_(-0.04803587273567413116934075718056596923777), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.002847635187208652496337890625), SC_(-0.09185923466664269951387331370012753321941), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.0056468211114406585693359375), SC_(-0.1739272081185672090101525836675528469431), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.011621631681919097900390625), SC_(-0.3251352635416613049576932478851735637997), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.0257236398756504058837890625), SC_(-0.5812222341617614641543552054608546168083), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.0560617186129093170166015625), SC_(-0.8499773932245513164849346383273868845555), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.106835305690765380859375), SC_(-0.9730831614940445343420828088736870749082), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.2401093542575836181640625), SC_(-0.9997038422742669808353938658563990853002), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.438671648502349853515625), SC_(-0.999999642239583643658188237392236744113), + SC_(0.201701245224235325981254618454840965569e-14), SC_(0.903765499591827392578125), SC_(-0.9999999999999476516969892665713129740181), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1431564604442703013402649929484277542953e-29), SC_(-0.4670646585263469940709901808955382437758e-28), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1791466932348087634896446282571611213266e-29), SC_(-0.5844869930575957226200600044822824983155e-28), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.6013619202535540063110633226832922483532e-29), SC_(-0.19620134436288115149103308253280183024e-27), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.115805324961653822428570241697281798758e-28), SC_(-0.3778283871429173295224218281033374232068e-27), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1422457400834001098175711728787848259007e-28), SC_(-0.4640933270681455745331795406744730255659e-27), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4970121018327539153628705477876439795096e-28), SC_(-0.1621559983430480636456924332764721998048e-26), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9660079415057497591758174164417478444323e-28), SC_(-0.3151713642073222703755018012599557417151e-26), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1232929313253182131376331095427391968754e-27), SC_(-0.4022575767063603482081249297839543231515e-26), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3296523285617759312781860549364832953326e-27), SC_(-0.1075529192285806320476237467015488238885e-25), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.528364435768055252017009628713605422886e-27), SC_(-0.1723850631704759160263389734502030547382e-25), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.886586057273120049620324386849842094685e-27), SC_(-0.2892590476248142013731511886947366714432e-25), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2499669674831043259218157022821422146034e-26), SC_(-0.8155464025028249421637501209664265047502e-25), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4131050397232622964314362671638736040881e-26), SC_(-0.1347803401362882902734793654342734095988e-24), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.7679738097881433551381658732998641759182e-26), SC_(-0.2505604176805653145243612785884078114724e-24), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.199929739820949207249437007767740538737e-25), SC_(-0.6522941079217671379314515550175652218872e-24), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.5151477415246978459754129800826163591626e-25), SC_(-0.1680729624350543500140339548813665482187e-23), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.101200734533556026342258477595279955025e-24), SC_(-0.330179206518811807797546994456889233539e-23), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2064292695896540981798546456623054911033e-24), SC_(-0.6734995822858371523491495726201894721699e-23), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4063294332896333395257434433879773416284e-24), SC_(-0.1325697194661413074389975129129737205398e-22), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.8138195767936862452966745688936976428456e-24), SC_(-0.2655181341851992399243727184578853247614e-22), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9575550627132253801929510132578249716542e-24), SC_(-0.312413513856354742046541652296217654716e-22), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2855160956298500804375620841706273850616e-23), SC_(-0.9315295816568866899504021320688046754633e-22), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.65201444297915461398563707001320281266e-23), SC_(-0.2127273210159156512760646198518192723583e-21), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1310988374636350038320977491775043421995e-22), SC_(-0.4277252564301193321055067703470477963339e-21), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2590288837798696209228010176465529547374e-22), SC_(-0.8451119619446267401173718362869071620453e-21), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2937779542193655202274099291941187976629e-22), SC_(-0.9584848594622303420066613446868755698132e-21), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.7863513178004503049754083414326234074965e-22), SC_(-0.2565562941346879248671683738197120292887e-20), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1903818607087388763706780167350761726053e-21), SC_(-0.6211430380828240395740546833358999026185e-20), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3812242142377350870566942975497647799754e-21), SC_(-0.1243788487731146761472488262362637259264e-19), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.5493133580141330277178034419485741501887e-21), SC_(-0.1792198935267128535562926214858722343728e-19), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9672153634284186955666772243312215295852e-21), SC_(-0.3155652997001798429320322164486809845992e-19), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1702169477623814384559878647986894129041e-20), SC_(-0.55535265635450219027295966056920134225e-19), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4817114569977399785676754474621208412799e-20), SC_(-0.157163984407441759959674443782140863952e-18), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.7538352992756463183303278501219690799218e-20), SC_(-0.2459475636297617006441590683912433787683e-18), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2596305715949999708394617609422128090557e-19), SC_(-0.8470750386583229571630557052498880681824e-18), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4444587480324321591032923385589104015025e-19), SC_(-0.1450098533692296614683964680209407156037e-17), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9715574921498573937069095571295029856174e-19), SC_(-0.3169819698680942798209909967313405111447e-17), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2036598542733453787268262970278076551267e-18), SC_(-0.6644640416262319536369758321461137730053e-17), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4248971931658660264162106698360155121463e-18), SC_(-0.1386276678111046853303166140297811374299e-16), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.6521097487613458963613731825259556273977e-18), SC_(-0.2127584156395719014286056179015852384457e-16), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1436126164096190058281493628911107407475e-17), SC_(-0.4685529205965962627641463132289456691771e-16), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3118908901459261162419055180006211003274e-17), SC_(-0.1017580426698205682533290718321643209762e-15), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3593346613595175715618300349429858897565e-17), SC_(-0.1172371266960037029314016045477824196056e-15), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9445874854124767215374919304693435151421e-17), SC_(-0.3081826904306483808166787058542751288317e-15), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2566182432094081539023303073498993853718e-16), SC_(-0.8372469657622804501545876592687226293867e-15), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3363765695149349330660137891158001366421e-16), SC_(-0.1097467813112902235711533181290032884344e-14), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1073581901339262605326457800103412409953e-15), SC_(-0.3502686239887104556183603267483924538092e-14), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.186668406231853462907965823802669547149e-15), SC_(-0.6090274594926766310097318898918904189533e-14), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3727540802657755688795382376099496468669e-15), SC_(-0.1216153687184881360673588742979606365464e-13), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.6211646767866855090717281839829411183018e-15), SC_(-0.2026622247795390792057156419945858437211e-13), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1561186859754253464932505224282976996619e-14), SC_(-0.5093554320105476807018586816442371125346e-13), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3092010764722992466335682593125966377556e-14), SC_(-0.1008804595687293085666255201604454630459e-12), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.6192850577371690132255643845837767003104e-14), SC_(-0.2020489771295036962841043702748443936045e-12), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1047879028014987723427253740737796761096e-13), SC_(-0.3418827616146511291456502884207649745993e-12), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1978473638988408750405412206418986897916e-13), SC_(-0.6455001134628760079521534669131105956391e-12), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.4041816252346730475863978426787070930004e-13), SC_(-0.1318689720232516020580123962164582013965e-11), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9410302262901834580155480125540634617209e-13), SC_(-0.3070220931283945435837713059354241443233e-11), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1334530223958893535574077304772799834609e-12), SC_(-0.4354060595035063074489098732513294021707e-11), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.266297021326439287136622624529991298914e-12), SC_(-0.8688251088765620667457021296035152000077e-11), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.5920415525016708979677559909760020673275e-12), SC_(-0.1931604656134805361799836893722292796705e-10), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.155163989296047688526414276566356420517e-11), SC_(-0.5062406226683881116608414737604687082455e-10), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.326923297461201300961874949280172586441e-11), SC_(-0.1066625409785978045275661888117913045346e-9), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3753785910581841633870681107509881258011e-11), SC_(-0.1224716459849947744876770763335625029259e-9), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9579165585749116473834874341264367103577e-11), SC_(-0.3125314560510405517739269322326717366916e-9), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1858167439361402273334533674642443656921e-10), SC_(-0.6062488116803458186700114397560238184659e-9), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.5449485307451595872407779097557067871094e-10), SC_(-0.1777958175347169005832208106622024055763e-8), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.6089519166696533147842274047434329986572e-10), SC_(-0.1986776690713578859161025588821554119682e-8), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1337744776064297980155970435589551925659e-9), SC_(-0.4364548436901294166447367781125164853821e-8), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2554458866654840676346793770790100097656e-9), SC_(-0.8334220122510207334577043840076605398572e-8), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9285605062636648199259070679545402526855e-9), SC_(-0.3029536968598131272157030834689682539192e-7), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1698227447555211711005540564656257629395e-8), SC_(-0.5540665076917325215577133620146511883601e-7), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.339355921141759608872234821319580078125e-8), SC_(-0.1107188234191793003548407513913256517037e-6), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.6313728651008432279922999441623687744141e-8), SC_(-0.2059927441298561653785769202991913439107e-6), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.8383264749056706932606175541877746582031e-8), SC_(-0.2735137582842921999867218511345265044419e-6), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1962631124285962869180366396903991699219e-7), SC_(-0.6403311031475707881066461509462911410011e-6), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.5256384838503436185419559478759765625e-7), SC_(-0.1714955424917509853565377296478446588717e-5), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.116242290459922514855861663818359375e-6), SC_(-0.3792533189075770307948598804199129382162e-5), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1776920584006802528165280818939208984375e-6), SC_(-0.5797393966603564614109548422983248771233e-5), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.246631174150024889968335628509521484375e-6), SC_(-0.8046597500633838071232896567874258574425e-5), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.7932688959044753573834896087646484375e-6), SC_(-0.2588098855334784114746356115187656688766e-4), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.1372093493046122603118419647216796875e-5), SC_(-0.4476514945146166310348073528504896865758e-4), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.214747751670074649155139923095703125e-5), SC_(-0.7006150566189193979269085691512524345184e-4), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.527022712049074470996856689453125e-5), SC_(-0.0001719325280577979557725849711147940153461), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.9233162927557714283466339111328125e-5), SC_(-0.0003011973465610182074617306088919186693139), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.269396477960981428623199462890625e-4), SC_(-0.0008785512954806844971925787811026104679626), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.3208058114978484809398651123046875e-4), SC_(-0.001046118833759536454554604741205345872518), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.00010957030463032424449920654296875), SC_(-0.00356847685564822123148350977400303322428), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.000126518702018074691295623779296875), SC_(-0.004119312560332169043533898018737790564652), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.00028976381872780621051788330078125), SC_(-0.009409335282965604709458452119979719540133), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.000687857042066752910614013671875), SC_(-0.02219218723675143425941273152091920012992), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.00145484809763729572296142578125), SC_(-0.04635721512666774012012900306815754937453), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.002847635187208652496337890625), SC_(-0.08872213856761157161353738758915939189135), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.0056468211114406585693359375), SC_(-0.1682589533286847094444390355424124915849), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.011621631681919097900390625), SC_(-0.315570268386307973049039982116169159971), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.0257236398756504058837890625), SC_(-0.5679715214637885742711302281747963865236), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.0560617186129093170166015625), SC_(-0.8394386222531893115849360215766369975108), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.106835305690765380859375), SC_(-0.9693654408932809842438913488064211267056), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.2401093542575836181640625), SC_(-0.9996039015988134850627985522402102650313), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.438671648502349853515625), SC_(-0.999999391442516368767686856850429328651), + SC_(0.6770733299921779385632802927830198314041e-14), SC_(0.903765499591827392578125), SC_(-0.9999999999998436069674179642725048390556), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1431564604442703013402649929484277542953e-29), SC_(-0.4576836344104429456517604264584932284747e-28), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1791466932348087634896446282571611213266e-29), SC_(-0.5727475336975031881646903362900562654118e-28), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.6013619202535540063110633226832922483532e-29), SC_(-0.1922606275703748803999379921456053425121e-27), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.115805324961653822428570241697281798758e-28), SC_(-0.3702396793553404218237800202711211418232e-27), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1422457400834001098175711728787848259007e-28), SC_(-0.4547719823382898701812602276896112982996e-27), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4970121018327539153628705477876439795096e-28), SC_(-0.1588990845448724714046351014391003029543e-26), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9660079415057497591758174164417478444323e-28), SC_(-0.3088411268102136096173518347405241169365e-26), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1232929313253182131376331095427391968754e-27), SC_(-0.3941782070537865987806008706345989318215e-26), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3296523285617759312781860549364832953326e-27), SC_(-0.1053927118341642116888565560193377342088e-25), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.528364435768055252017009628713605422886e-27), SC_(-0.1689226979383767837562270129142188112561e-25), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.886586057273120049620324386849842094685e-27), SC_(-0.2834492607955699817292337275058110941043e-25), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2499669674831043259218157022821422146034e-26), SC_(-0.7991660998405411529548763861428929797149e-25), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4131050397232622964314362671638736040881e-26), SC_(-0.1320732682179000408587410618703226772025e-24), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.7679738097881433551381658732998641759182e-26), SC_(-0.2455278953566357627103257555388002069096e-24), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.199929739820949207249437007767740538737e-25), SC_(-0.6391927382390703388925725094314601383285e-24), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.5151477415246978459754129800826163591626e-25), SC_(-0.1646972060273454609443143683096363086915e-23), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.101200734533556026342258477595279955025e-24), SC_(-0.3235475356304688137060009654456926802713e-23), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2064292695896540981798546456623054911033e-24), SC_(-0.6599722992680869704727736254365743724253e-23), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4063294332896333395257434433879773416284e-24), SC_(-0.1299070480080302189776038836003092355401e-22), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.8138195767936862452966745688936976428456e-24), SC_(-0.2601851851501339074899141114386754841731e-22), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9575550627132253801929510132578249716542e-24), SC_(-0.3061386680633381331917827751652934185889e-22), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2855160956298500804375620841706273850616e-23), SC_(-0.9128197492799882445346136216771188720859e-22), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.65201444297915461398563707001320281266e-23), SC_(-0.2084546789049532018546149488447629509599e-21), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1310988374636350038320977491775043421995e-22), SC_(-0.4191343667699763810630900480617325436685e-21), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2590288837798696209228010176465529547374e-22), SC_(-0.8281378330934832948361688337452449936706e-21), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2937779542193655202274099291941187976629e-22), SC_(-0.9392336285733129065505426348368290979349e-21), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.7863513178004503049754083414326234074965e-22), SC_(-0.2514033442412874267581007499883858640708e-20), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1903818607087388763706780167350761726053e-21), SC_(-0.6086673396686778493371550510019707589098e-20), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3812242142377350870566942975497647799754e-21), SC_(-0.1218806914868614442363178428163220534513e-19), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.5493133580141330277178034419485741501887e-21), SC_(-0.1756202502813247862463984994792399363846e-19), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9672153634284186955666772243312215295852e-21), SC_(-0.3092271500830152539390293064404827736998e-19), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1702169477623814384559878647986894129041e-20), SC_(-0.5441983620464496005891242970018046790907e-19), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4817114569977399785676754474621208412799e-20), SC_(-0.1540073355346077842799391738372805101797e-18), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.7538352992756463183303278501219690799218e-20), SC_(-0.2410076907801688874670912850628612782649e-18), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2596305715949999708394617609422128090557e-19), SC_(-0.8300614812834058274447270567991076964986e-18), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4444587480324321591032923385589104015025e-19), SC_(-0.1420973210106639000468002738423441514335e-17), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9715574921498573937069095571295029856174e-19), SC_(-0.3106153663382499810004103501514106185175e-17), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2036598542733453787268262970278076551267e-18), SC_(-0.6511182380316850294413660631165069138149e-17), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4248971931658660264162106698360155121463e-18), SC_(-0.1358433220655484535433282563890822329602e-16), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.6521097487613458963613731825259556273977e-18), SC_(-0.2084851489910661607334823468566561947389e-16), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1436126164096190058281493628911107407475e-17), SC_(-0.4591420046399868101410450579900532388592e-16), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3118908901459261162419055180006211003274e-17), SC_(-0.9971422574887292722937153254757672122027e-16), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3593346613595175715618300349429858897565e-17), SC_(-0.1148824113632603900131783308508965417968e-15), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9445874854124767215374919304693435151421e-17), SC_(-0.3019928210019576647967558032888200642401e-15), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2566182432094081539023303073498993853718e-16), SC_(-0.820430805872203077560259601545938909032e-15), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3363765695149349330660137891158001366421e-16), SC_(-0.1075425100539178680519852196810206870717e-14), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1073581901339262605326457800103412409953e-15), SC_(-0.3432334558407927537802268484739968889925e-14), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.186668406231853462907965823802669547149e-15), SC_(-0.5967951032643659578568659958577023318101e-14), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3727540802657755688795382376099496468669e-15), SC_(-0.1191727161092919798123625157343681290628e-13), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.6211646767866855090717281839829411183018e-15), SC_(-0.1985917407826593212205439443077791764114e-13), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1561186859754253464932505224282976996619e-14), SC_(-0.4991249949521462427180932679900775040103e-13), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3092010764722992466335682593125966377556e-14), SC_(-0.9885426896157956603114149340902946160351e-13), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.6192850577371690132255643845837767003104e-14), SC_(-0.1979908102516547879748989765228991496763e-12), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1047879028014987723427253740737796761096e-13), SC_(-0.3350160240592180797771261476764337516904e-12), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1978473638988408750405412206418986897916e-13), SC_(-0.6325352016018118342307089629651851902982e-12), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.4041816252346730475863978426787070930004e-13), SC_(-0.1292203751232165767835988707455380182517e-11), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9410302262901834580155480125540634617209e-13), SC_(-0.300855534372191830458549151625414202144e-11), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1334530223958893535574077304772799834609e-12), SC_(-0.426660900412917518009780811303798217014e-11), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.266297021326439287136622624529991298914e-12), SC_(-0.8513746999234309491732296073981503017467e-11), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.5920415525016708979677559909760020673275e-12), SC_(-0.1892808250689370669879461004467640065353e-10), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.155163989296047688526414276566356420517e-11), SC_(-0.4960727467589400330882774486696882456676e-10), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.326923297461201300961874949280172586441e-11), SC_(-0.1045202168894907835176851266302666007759e-9), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3753785910581841633870681107509881258011e-11), SC_(-0.1200117949912250367534712217121551184824e-9), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9579165585749116473834874341264367103577e-11), SC_(-0.306254241382315870578416840778207876678e-9), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1858167439361402273334533674642443656921e-10), SC_(-0.594072264778111368274375677089333414961e-9), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.5449485307451595872407779097557067871094e-10), SC_(-0.1742247769515788478898057219060667252918e-8), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.6089519166696533147842274047434329986572e-10), SC_(-0.1946872151395269773560274878675690506499e-8), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1337744776064297980155970435589551925659e-9), SC_(-0.4276886197195062037700785013461254705044e-8), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2554458866654840676346793770790100097656e-9), SC_(-0.8166826768699312855473201998535874187492e-8), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9285605062636648199259070679545402526855e-9), SC_(-0.2968688521982070868659209377155196789766e-7), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1698227447555211711005540564656257629395e-8), SC_(-0.5429380460655229791611910734387908997677e-7), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.339355921141759608872234821319580078125e-8), SC_(-0.1084950287533348777373165891522186913259e-6), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.6313728651008432279922999441623687744141e-8), SC_(-0.2018553668522742749769063428064977349517e-6), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.8383264749056706932606175541877746582031e-8), SC_(-0.2680202173541270856078281970646947949939e-6), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1962631124285962869180366396903991699219e-7), SC_(-0.6274700152306449635938038051873467096003e-6), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.5256384838503436185419559478759765625e-7), SC_(-0.1680510462347347402690704488039448237192e-5), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.116242290459922514855861663818359375e-6), SC_(-0.3716360054269949707624089241905458968568e-5), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1776920584006802528165280818939208984375e-6), SC_(-0.5680953261582804705578830765241198560168e-5), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.246631174150024889968335628509521484375e-6), SC_(-0.7884981702423820096156321424607597246034e-5), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.7932688959044753573834896087646484375e-6), SC_(-0.2536117380268745579986453976758213516184e-4), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.1372093493046122603118419647216796875e-5), SC_(-0.4386605822686713834736918688546026975306e-4), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.214747751670074649155139923095703125e-5), SC_(-0.6865436405912565016099095734914674324923e-4), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.527022712049074470996856689453125e-5), SC_(-0.0001684795429426290375748066540229315936542), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.9233162927557714283466339111328125e-5), SC_(-0.0002951486710691193140380235522757858793913), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.269396477960981428623199462890625e-4), SC_(-0.000860913133371783332027113437255719030992), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.3208058114978484809398651123046875e-4), SC_(-0.001025118242070136625968938047128000303572), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.00010957030463032424449920654296875), SC_(-0.003496929231056143015211140903172753003707), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.000126518702018074691295623779296875), SC_(-0.004036743119796422185275261877051587365852), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.00028976381872780621051788330078125), SC_(-0.009221222234750118900172217847005146800635), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.000687857042066752910614013671875), SC_(-0.02175133923710351978467930052642747145844), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.00145484809763729572296142578125), SC_(-0.04544761667106517358284474532983548098311), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.002847635187208652496337890625), SC_(-0.08702005945634039017497404179236497904558), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.0056468211114406585693359375), SC_(-0.1651755152288914603917240984520648158053), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.011621631681919097900390625), SC_(-0.3103379996752338368650923165157389362038), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.0257236398756504058837890625), SC_(-0.5606272348374307625044520965986379186451), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.0560617186129093170166015625), SC_(-0.833430364008775042020638226729314813071), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.106835305690765380859375), SC_(-0.967143887842835777817854037909635743789), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.2401093542575836181640625), SC_(-0.9995364074628132999593163736445072059694), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.438671648502349853515625), SC_(-0.9999991887694171862610058365254266630964), + SC_(0.1303852045862058384173565173114184290171e-13), SC_(0.903765499591827392578125), SC_(-0.9999999999997172371310746311970351796287), + SC_(1.2698681354522705078125), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.3420194870024062814047728978212532998563e-30), + SC_(1.2698681354522705078125), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.4280048551647399999228434903587663134634e-30), + SC_(1.2698681354522705078125), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1436732193780183251915891734035523793972e-29), + SC_(1.2698681354522705078125), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2766740509831951084519809145718404791547e-29), + SC_(1.2698681354522705078125), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.3398436570771565748173304184306615543909e-29), + SC_(1.2698681354522705078125), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1187426844553768113983924271844288423442e-28), + SC_(1.2698681354522705078125), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.2307919178559647802149642900401165721481e-28), + SC_(1.2698681354522705078125), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.2945629208213355182163252959258097705325e-28), + SC_(1.2698681354522705078125), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.7875824811115599105986865868056157469008e-28), + SC_(1.2698681354522705078125), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.1262331666422106497789462114589822777359e-27), + SC_(1.2698681354522705078125), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.2118169920875373173985427015088627653426e-27), + SC_(1.2698681354522705078125), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.5972037428195599891261787402460995389719e-27), + SC_(1.2698681354522705078125), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.9869619109454157638442734233027413870915e-27), + SC_(1.2698681354522705078125), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1834789765267188977663823170091590188669e-26), + SC_(1.2698681354522705078125), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.4776582687073725066644404893622921417791e-26), + SC_(1.2698681354522705078125), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.1230755257149676211409917633859091287298e-25), + SC_(1.2698681354522705078125), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.2417817764005694971846160775891732628672e-25), + SC_(1.2698681354522705078125), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.4931864944706428865614203337067832232701e-25), + SC_(1.2698681354522705078125), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.9707741019609786198310523485010740172696e-25), + SC_(1.2698681354522705078125), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1944321292267828828344050037733790054678e-24), + SC_(1.2698681354522705078125), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.228772414677875118955602612841516306209e-24), + SC_(1.2698681354522705078125), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.6821352543587544946351638809580690112947e-24), + SC_(1.2698681354522705078125), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.1557747688185563600528634178272482438289e-23), + SC_(1.2698681354522705078125), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.3132122504061177888115197841327782195659e-23), + SC_(1.2698681354522705078125), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.6188538447671767027554645970431141067489e-23), + SC_(1.2698681354522705078125), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.7018739139183943070584537523519395160206e-23), + SC_(1.2698681354522705078125), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1878696032879880597606438295234445400993e-22), + SC_(1.2698681354522705078125), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.4548471381039414088284351477845900938907e-22), + SC_(1.2698681354522705078125), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.9107944537176083904466648983578898062406e-22), + SC_(1.2698681354522705078125), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.1312381378587531773768084733888620567011e-21), + SC_(1.2698681354522705078125), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2310803867279284395325040960542387104948e-21), + SC_(1.2698681354522705078125), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.4066705265842243511990384452435092146391e-21), + SC_(1.2698681354522705078125), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.1150871605055410326357052222776027126075e-20), + SC_(1.2698681354522705078125), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.1801011016495003147161825515613996028105e-20), + SC_(1.2698681354522705078125), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.6202913555663948280929759905533895728393e-20), + SC_(1.2698681354522705078125), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.1061870016372484253118587189306114048478e-19), + SC_(1.2698681354522705078125), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2321177780082074129440532042729073364871e-19), + SC_(1.2698681354522705078125), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.4865699994634248908023627956961028830466e-19), + SC_(1.2698681354522705078125), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.1015134906132475864793915005929116755576e-18), + SC_(1.2698681354522705078125), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.1557975386150659035553775662378897074586e-18), + SC_(1.2698681354522705078125), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.3431093031991568741685817578089247870823e-18), + SC_(1.2698681354522705078125), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.7451480842526166040425102554556006578373e-18), + SC_(1.2698681354522705078125), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.8584974520811751074564412604859386909514e-18), + SC_(1.2698681354522705078125), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.2256742910428662195907300458159668294607e-17), + SC_(1.2698681354522705078125), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.6130945095007296482544550987552049128862e-17), + SC_(1.2698681354522705078125), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.8036475712523944301253096611257704330887e-17), + SC_(1.2698681354522705078125), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.2564927422846314270714133018927527673521e-16), + SC_(1.2698681354522705078125), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.4459752102059645897424792488546670241155e-16), + SC_(1.2698681354522705078125), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.8905581970586991466939320975391393663305e-16), + SC_(1.2698681354522705078125), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1484043566313956188983726548784674614331e-15), + SC_(1.2698681354522705078125), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.3729879372757421060398162969122566665345e-15), + SC_(1.2698681354522705078125), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.7387217679695032934124755312004784940608e-15), + SC_(1.2698681354522705078125), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1479552910837560805834157616713680398401e-14), + SC_(1.2698681354522705078125), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.2503519900464339012932954652447103903128e-14), + SC_(1.2698681354522705078125), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.4726832005727230498618201285266448046373e-14), + SC_(1.2698681354522705078125), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.9656427079124197097947552889241995946754e-14), + SC_(1.2698681354522705078125), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.2248244153639328280064179719350034279301e-13), + SC_(1.2698681354522705078125), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.3188367057771179968157617218069382264218e-13), + SC_(1.2698681354522705078125), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.6362183749282957838259047728566148154723e-13), + SC_(1.2698681354522705078125), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1414464617540412529087267058049917265071e-12), + SC_(1.2698681354522705078125), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.370707042180260653184099429109179552233e-12), + SC_(1.2698681354522705078125), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.7810624692721233057497812838799967569936e-12), + SC_(1.2698681354522705078125), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.896828496227341088445752699754610938274e-12), + SC_(1.2698681354522705078125), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.2288587807623386713791234899514841493899e-11), + SC_(1.2698681354522705078125), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.4439404777151353666181995924897026455737e-11), + SC_(1.2698681354522705078125), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1301953235997653634700263262629394678664e-10), + SC_(1.2698681354522705078125), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.1454865686841154894708369394823364698654e-10), + SC_(1.2698681354522705078125), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.31960470427744776254708958163118342765e-10), + SC_(1.2698681354522705078125), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.6102935965707334929910468209231817062867e-10), + SC_(1.2698681354522705078125), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.2218452363607120861626064151860511000808e-9), + SC_(1.2698681354522705078125), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.4057287241815955603623730534846927438842e-9), + SC_(1.2698681354522705078125), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.8107656318617117866294966834817726714903e-9), + SC_(1.2698681354522705078125), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1508432263006119427013132176270683105493e-8), + SC_(1.2698681354522705078125), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.2002871475622493393270773060560290521481e-8), + SC_(1.2698681354522705078125), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.4688982179315023500581635814164190019958e-8), + SC_(1.2698681354522705078125), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.125581901903791838140659620318980086674e-7), + SC_(1.2698681354522705078125), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2777180225032743072377212027192763421518e-7), + SC_(1.2698681354522705078125), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.4245295515132007171579175941366890236852e-7), + SC_(1.2698681354522705078125), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.5892341140943752460189213003787636411203e-7), + SC_(1.2698681354522705078125), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1895223210326633627186407689532055005047e-6), + SC_(1.2698681354522705078125), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.3278111152459676807338808062624539138807e-6), + SC_(1.2698681354522705078125), SC_(0.214747751670074649155139923095703125e-5), SC_(0.5130605665632870980170027253254440754451e-6), + SC_(1.2698681354522705078125), SC_(0.527022712049074470996856689453125e-5), SC_(0.1259126905864534707564519232075067997608e-5), + SC_(1.2698681354522705078125), SC_(0.9233162927557714283466339111328125e-5), SC_(0.2205925685198983967324676018114026228766e-5), + SC_(1.2698681354522705078125), SC_(0.269396477960981428623199462890625e-4), SC_(0.6436254530234825694705316236264512301357e-5), + SC_(1.2698681354522705078125), SC_(0.3208058114978484809398651123046875e-4), SC_(0.7664499332850079936680739794066881971046e-5), + SC_(1.2698681354522705078125), SC_(0.00010957030463032424449920654296875), SC_(0.2617811992332665457636119426168275512229e-4), + SC_(1.2698681354522705078125), SC_(0.000126518702018074691295623779296875), SC_(0.3022742768393338821381257470272750370786e-4), + SC_(1.2698681354522705078125), SC_(0.00028976381872780621051788330078125), SC_(0.6923075831766976300466789565154105776674e-4), + SC_(1.2698681354522705078125), SC_(0.000687857042066752910614013671875), SC_(0.000164351538248818105860618367502154175576), + SC_(1.2698681354522705078125), SC_(0.00145484809763729572296142578125), SC_(0.0003476426314174918948018704195274956806275), + SC_(1.2698681354522705078125), SC_(0.002847635187208652496337890625), SC_(0.000680568731680074922669161880274103682441), + SC_(1.2698681354522705078125), SC_(0.0056468211114406585693359375), SC_(0.001350009781592489152232064712193415932619), + SC_(1.2698681354522705078125), SC_(0.011621631681919097900390625), SC_(0.002780417854006973908325787047211816372794), + SC_(1.2698681354522705078125), SC_(0.0257236398756504058837890625), SC_(0.006164637283266366505602149296090563266474), + SC_(1.2698681354522705078125), SC_(0.0560617186129093170166015625), SC_(0.0134839767907499950210480287606334307119), + SC_(1.2698681354522705078125), SC_(0.106835305690765380859375), SC_(0.02585288579558250741731425521987916267727), + SC_(1.2698681354522705078125), SC_(0.2401093542575836181640625), SC_(0.05904256744106580356642467885497221866553), + SC_(1.2698681354522705078125), SC_(0.438671648502349853515625), SC_(0.1104933632279540298689424673420546499493), + SC_(1.2698681354522705078125), SC_(0.903765499591827392578125), SC_(0.2410048139472866141620003722996635906314), + SC_(1.35477006435394287109375), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.4346684599696975402671455475334038730311e-30), + SC_(1.35477006435394287109375), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.543946232083267508305187631764097119092e-30), + SC_(1.35477006435394287109375), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.182592569661074201344820342946185653938e-29), + SC_(1.35477006435394287109375), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.3516217298273326120488390423622761830313e-29), + SC_(1.35477006435394287109375), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.4319032238392848362014276761582776730152e-29), + SC_(1.35477006435394287109375), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1509086521275416486211375995904547917102e-28), + SC_(1.35477006435394287109375), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.2933106776667358781322526450618145182053e-28), + SC_(1.35477006435394287109375), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.3743564797425857105137717585913322179135e-28), + SC_(1.35477006435394287109375), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.100092912004591899463442542292872840124e-27), + SC_(1.35477006435394287109375), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.1604282160129719838241108522731077492994e-27), + SC_(1.35477006435394287109375), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.269195672308156214888914671036944147799e-27), + SC_(1.35477006435394287109375), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.7589790671128956425988310244562285412391e-27), + SC_(1.35477006435394287109375), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.1254318043803087156788686077889298988149e-26), + SC_(1.35477006435394287109375), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.2331812285395425091460001937193325749895e-26), + SC_(1.35477006435394287109375), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.6070501592482794530202847647513877332323e-26), + SC_(1.35477006435394287109375), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.1564152080671049736488993542676328625855e-25), + SC_(1.35477006435394287109375), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.3072775569540396031565668649210987090127e-25), + SC_(1.35477006435394287109375), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.626784794949124855640879021859677666643e-25), + SC_(1.35477006435394287109375), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.1233745151704984504651169396130041455861e-24), + SC_(1.35477006435394287109375), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.2471014588096857154338036760034812976784e-24), + SC_(1.35477006435394287109375), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.2907441153225324701651770229136798814231e-24), + SC_(1.35477006435394287109375), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.8669175054960294708313833109432533870185e-24), + SC_(1.35477006435394287109375), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.1979722835617877432909824292401135860431e-23), + SC_(1.35477006435394287109375), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.3980576888202649500521161897841410231419e-23), + SC_(1.35477006435394287109375), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.7864939217611961289331896158796651127429e-23), + SC_(1.35477006435394287109375), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.892003130960973877376705794115785453666e-23), + SC_(1.35477006435394287109375), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.238761223379454015302604155102700720118e-22), + SC_(1.35477006435394287109375), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.578059767219853091440898725349310555188e-22), + SC_(1.35477006435394287109375), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.1157517736828806740751659171592593909548e-21), + SC_(1.35477006435394287109375), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.1667889738456737745364769967835454077299e-21), + SC_(1.35477006435394287109375), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2936772892929463971966445448499847054145e-21), + SC_(1.35477006435394287109375), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.5168326900162478077819960709525085950495e-21), + SC_(1.35477006435394287109375), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.1462628906255185640976980233954852620135e-20), + SC_(1.35477006435394287109375), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.2288883279106359382950009176243908980249e-20), + SC_(1.35477006435394287109375), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.7883208369781105252744306785950621655756e-20), + SC_(1.35477006435394287109375), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.1349517855692760347142895808847553614241e-19), + SC_(1.35477006435394287109375), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2949956974168135667156808197073231787888e-19), + SC_(1.35477006435394287109375), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.6183759708777513872953328570501725677214e-19), + SC_(1.35477006435394287109375), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.1290122765159817800402213740283310109813e-18), + SC_(1.35477006435394287109375), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.1980012214228124779356815068874369496388e-18), + SC_(1.35477006435394287109375), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.4360534942905293245505752689260940008432e-18), + SC_(1.35477006435394287109375), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.9469997545174276650633607857032679082187e-18), + SC_(1.35477006435394287109375), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.109105410529256834805498048512462946672e-17), + SC_(1.35477006435394287109375), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.286806747188840236538677410101145183657e-17), + SC_(1.35477006435394287109375), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.7791744517138707380833772533614205899588e-17), + SC_(1.35477006435394287109375), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.1021346050238969028275187596396231325334e-16), + SC_(1.35477006435394287109375), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.3259735468858851290566465051497394384048e-16), + SC_(1.35477006435394287109375), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.5667845405648623853390446357365525628399e-16), + SC_(1.35477006435394287109375), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.1131799721184225271458928249504868843214e-15), + SC_(1.35477006435394287109375), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1886053151974602783674544556158370539306e-15), + SC_(1.35477006435394287109375), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.4740258916351755510976682204889287367117e-15), + SC_(1.35477006435394287109375), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.938832626303357894697051759656700794569e-15), + SC_(1.35477006435394287109375), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1880346031841516855769337546314235790654e-14), + SC_(1.35477006435394287109375), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.3181693385882041955286922106493303892486e-14), + SC_(1.35477006435394287109375), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.6007274048833591601597783001452504589672e-14), + SC_(1.35477006435394287109375), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.122722372461282431021848075783061887515e-13), + SC_(1.35477006435394287109375), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.2857266503915347020988103314525614536204e-13), + SC_(1.35477006435394287109375), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.4052057416277482631320308942466563186577e-13), + SC_(1.35477006435394287109375), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.8085622946758080825746284367765171804202e-13), + SC_(1.35477006435394287109375), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1797626101297568840672137193060265187326e-12), + SC_(1.35477006435394287109375), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.4711271294412824829106304681371916647916e-12), + SC_(1.35477006435394287109375), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.9926429152742702703054554070735643184272e-12), + SC_(1.35477006435394287109375), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.1139768569120691065544692978325902161875e-11), + SC_(1.35477006435394287109375), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.2908538769425127863215161715077435412554e-11), + SC_(1.35477006435394287109375), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.5641986234702706533668562124484149537871e-11), + SC_(1.35477006435394287109375), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1654636737235620470978205504080948724594e-10), + SC_(1.35477006435394287109375), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.184897133524674878963951844506509164495e-10), + SC_(1.35477006435394287109375), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.4061817817034875814852773093914474371976e-10), + SC_(1.35477006435394287109375), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.775614805103473668893076112107054063527e-10), + SC_(1.35477006435394287109375), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.2819404475708815591004595352083698435008e-9), + SC_(1.35477006435394287109375), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.5156357646777448789484766496043850538637e-9), + SC_(1.35477006435394287109375), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.1030392308125733705668616120623767224539e-8), + SC_(1.35477006435394287109375), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1917048454197643427385877634015244798617e-8), + SC_(1.35477006435394287109375), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.2545425313897712019064828317034450623532e-8), + SC_(1.35477006435394287109375), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.5959171162631144193665816152742671537119e-8), + SC_(1.35477006435394287109375), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1596005317470424257548009841588541970833e-7), + SC_(1.35477006435394287109375), SC_(0.116242290459922514855861663818359375e-6), SC_(0.3529485020265880596919475204028927512801e-7), + SC_(1.35477006435394287109375), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.5395295134970362732906233403283727078332e-7), + SC_(1.35477006435394287109375), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.7488505676206374863406026808157919943437e-7), + SC_(1.35477006435394287109375), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.2408616487025528515561978599530612181557e-6), + SC_(1.35477006435394287109375), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.4166112293783892260959556502868348983591e-6), + SC_(1.35477006435394287109375), SC_(0.214747751670074649155139923095703125e-5), SC_(0.6520425598876542684833903774124534019394e-6), + SC_(1.35477006435394287109375), SC_(0.527022712049074470996856689453125e-5), SC_(0.16002095413128507927344180962142231847e-5), + SC_(1.35477006435394287109375), SC_(0.9233162927557714283466339111328125e-5), SC_(0.2803485308045222086184242704224431441333e-5), + SC_(1.35477006435394287109375), SC_(0.269396477960981428623199462890625e-4), SC_(0.817976574373463519902797340314014762871e-5), + SC_(1.35477006435394287109375), SC_(0.3208058114978484809398651123046875e-4), SC_(0.9740730299091002262280512341108226291389e-5), + SC_(1.35477006435394287109375), SC_(0.00010957030463032424449920654296875), SC_(0.3326957629495933828880645428848388897065e-4), + SC_(1.35477006435394287109375), SC_(0.000126518702018074691295623779296875), SC_(0.3841583223020501061702565234652379174836e-4), + SC_(1.35477006435394287109375), SC_(0.00028976381872780621051788330078125), SC_(0.8798536461436966877060675684116694683454e-4), + SC_(1.35477006435394287109375), SC_(0.000687857042066752910614013671875), SC_(0.0002088770462671550614362972773327027840634), + SC_(1.35477006435394287109375), SC_(0.00145484809763729572296142578125), SC_(0.0004418356482830615743464365455165332342344), + SC_(1.35477006435394287109375), SC_(0.002847635187208652496337890625), SC_(0.0008650063454750985541660058177986793841704), + SC_(1.35477006435394287109375), SC_(0.0056468211114406585693359375), SC_(0.001716024840256529625913567378533352874622), + SC_(1.35477006435394287109375), SC_(0.011621631681919097900390625), SC_(0.003534929494144331508395673950178983206543), + SC_(1.35477006435394287109375), SC_(0.0257236398756504058837890625), SC_(0.007841095311478799412510932341963582641969), + SC_(1.35477006435394287109375), SC_(0.0560617186129093170166015625), SC_(0.01716781927650258688653495893317532969192), + SC_(1.35477006435394287109375), SC_(0.106835305690765380859375), SC_(0.03297045686500958223466855780868842534087), + SC_(1.35477006435394287109375), SC_(0.2401093542575836181640625), SC_(0.07562815633502792792709905060267641476341), + SC_(1.35477006435394287109375), SC_(0.438671648502349853515625), SC_(0.1424723457223528966681250808495522250368), + SC_(1.35477006435394287109375), SC_(0.903765499591827392578125), SC_(0.3157566460256508623029725507037422680168), + SC_(2.2103404998779296875), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.113544056434324064497545784338755528187e-29), + SC_(2.2103404998779296875), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.1420895863417514235587593434730661156564e-29), + SC_(2.2103404998779296875), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.4769681479887127754732602999884494452096e-29), + SC_(2.2103404998779296875), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.9185059697644637550578685161263247637075e-29), + SC_(2.2103404998779296875), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.1128217216984021149540833352700168873153e-28), + SC_(2.2103404998779296875), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.3942034468015438861282111618526526448826e-28), + SC_(2.2103404998779296875), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.7661858911986258510727160044348824771726e-28), + SC_(2.2103404998779296875), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.9778936632625772683753326669131270882148e-28), + SC_(2.2103404998779296875), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.2614626156707461888850641570798646477338e-27), + SC_(2.2103404998779296875), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.41907044311208384016092465904276084092e-27), + SC_(2.2103404998779296875), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.7031926956596745919082619252778429002887e-27), + SC_(2.2103404998779296875), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.1982604443735002847795119421501924343532e-26), + SC_(2.2103404998779296875), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.327652847786787611152824517398240571351e-26), + SC_(2.2103404998779296875), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.6091157976947442312678548919893389284067e-26), + SC_(2.2103404998779296875), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.1585735885804947118054859952359699228642e-25), + SC_(2.2103404998779296875), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.4085876673268639950654533295689160154488e-25), + SC_(2.2103404998779296875), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.8026701608444971511150594786716526222479e-25), + SC_(2.2103404998779296875), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.1637286683621835613460510758630465292556e-24), + SC_(2.2103404998779296875), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.3222787987435994441362857955482547801035e-24), + SC_(2.2103404998779296875), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.6454782108194994386823177367288297364745e-24), + SC_(2.2103404998779296875), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.7594815193269524677636810539738959230936e-24), + SC_(2.2103404998779296875), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.226456113643043688630560107923008237966e-23), + SC_(2.2103404998779296875), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.517143022954522727544618651691532472474e-23), + SC_(2.2103404998779296875), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.1039805940524776941504913486327592128234e-22), + SC_(2.2103404998779296875), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.2054478722563207934819083258028876432179e-22), + SC_(2.2103404998779296875), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.2330089784947528107264468588426750195853e-22), + SC_(2.2103404998779296875), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.6236918552502042747352326270568582326212e-22), + SC_(2.2103404998779296875), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.1510007209545383730260305774543135012135e-21), + SC_(2.2103404998779296875), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.3023666802127385946619807910284467485336e-21), + SC_(2.2103404998779296875), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.4356860090625489418374213914686629672833e-21), + SC_(2.2103404998779296875), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.7671435537623837195216868945727243097762e-21), + SC_(2.2103404998779296875), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.1350069892957022932985394824585295494688e-20), + SC_(2.2103404998779296875), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.382067792739988712387271268803897239573e-20), + SC_(2.2103404998779296875), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.5979018864919508687514281036079968537009e-20), + SC_(2.2103404998779296875), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.2059250988867151744066203492948950586334e-19), + SC_(2.2103404998779296875), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.3525209341772555369249150375724257906549e-19), + SC_(2.2103404998779296875), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.7705874982903644524067519026267133873655e-19), + SC_(2.2103404998779296875), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.1615321160865183505128353787808388201179e-18), + SC_(2.2103404998779296875), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.3370057539135106965125306224301456904353e-18), + SC_(2.2103404998779296875), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.5172186144093411922105579120765768699787e-18), + SC_(2.2103404998779296875), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.113905854976364504284929597288735620002e-17), + SC_(2.2103404998779296875), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.2473751916062967142882431444403477459773e-17), + SC_(2.2103404998779296875), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.2850050562971067301359785244992360103055e-17), + SC_(2.2103404998779296875), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.7491963297917875107344765057203193285057e-17), + SC_(2.2103404998779296875), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.2035358809418812864287988540884004777584e-16), + SC_(2.2103404998779296875), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.2667959243589747787005179773360369279401e-16), + SC_(2.2103404998779296875), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.8515078091078428277880415261612326730386e-16), + SC_(2.2103404998779296875), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.1480554072510474250247512240729600257286e-15), + SC_(2.2103404998779296875), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.2956486224545779278361194238326617566546e-15), + SC_(2.2103404998779296875), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.4926746365284206858817364168219676908241e-15), + SC_(2.2103404998779296875), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.1238250012317603604269397453825897591703e-14), + SC_(2.2103404998779296875), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.2452417751009692619762264155551728281242e-14), + SC_(2.2103404998779296875), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.491183823115104569225085526533817924118e-14), + SC_(2.2103404998779296875), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.8311216631372152968929101293659046224335e-14), + SC_(2.2103404998779296875), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.1569219592479211069148075557178993819683e-13), + SC_(2.2103404998779296875), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.3205752721388975304877892859290364631272e-13), + SC_(2.2103404998779296875), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.7463749018990070051529885490739294989884e-13), + SC_(2.2103404998779296875), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.1058478077707826704240767632367503550663e-12), + SC_(2.2103404998779296875), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.2112125706653359695225983010011261143797e-12), + SC_(2.2103404998779296875), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.4695757302193123935681588076652272081297e-12), + SC_(2.2103404998779296875), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.1230677868294645738601754834515720019433e-11), + SC_(2.2103404998779296875), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.2592980939978512831393456948513604570032e-11), + SC_(2.2103404998779296875), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.2977302442037073373659741633226979002019e-11), + SC_(2.2103404998779296875), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.7597682385347750350558637534305099370148e-11), + SC_(2.2103404998779296875), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.1473799142183762080678986023548495818435e-10), + SC_(2.2103404998779296875), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.4322240612686516303198646898232044277138e-10), + SC_(2.2103404998779296875), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.4829881276696936992411088540931931106568e-10), + SC_(2.2103404998779296875), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.1061027688759849881043035142977131281485e-9), + SC_(2.2103404998779296875), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.202606030383735803246335572381604218027e-9), + SC_(2.2103404998779296875), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.7364845864274135340389459936374528632136e-9), + SC_(2.2103404998779296875), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.1346943286212731290152899320206693483058e-8), + SC_(2.2103404998779296875), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.2691589872627375759762663884560486790864e-8), + SC_(2.2103404998779296875), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.5007712273908649713033224252630498129911e-8), + SC_(2.2103404998779296875), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.6649157753560806770698669762163438399867e-8), + SC_(2.2103404998779296875), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.1556654168303510693017729921289761484476e-7), + SC_(2.2103404998779296875), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.416908372372826741357131178708640289097e-7), + SC_(2.2103404998779296875), SC_(0.116242290459922514855861663818359375e-6), SC_(0.9219717891539001165302722466972755173166e-7), + SC_(2.2103404998779296875), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.140935857635182293325780947427104819961e-6), + SC_(2.2103404998779296875), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.1956146904456601163353269942965359902827e-6), + SC_(2.2103404998779296875), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.629178706570496148987844682096273195374e-6), + SC_(2.2103404998779296875), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.108827184813522739421660086353558290147e-5), + SC_(2.2103404998779296875), SC_(0.214747751670074649155139923095703125e-5), SC_(0.1703265889973953905010651792171315917245e-5), + SC_(2.2103404998779296875), SC_(0.527022712049074470996856689453125e-5), SC_(0.4180071331858123189933278770825483662709e-5), + SC_(2.2103404998779296875), SC_(0.9233162927557714283466339111328125e-5), SC_(0.7323278376758031314660215592026101660667e-5), + SC_(2.2103404998779296875), SC_(0.269396477960981428623199462890625e-4), SC_(0.2136731768612834393845491631839395961775e-4), + SC_(2.2103404998779296875), SC_(0.3208058114978484809398651123046875e-4), SC_(0.2544492681185144948683838084521582047796e-4), + SC_(2.2103404998779296875), SC_(0.00010957030463032424449920654296875), SC_(0.8690908832535010797435364557905581016139e-4), + SC_(2.2103404998779296875), SC_(0.000126518702018074691295623779296875), SC_(0.00010035291032264936941113629988396983743), + SC_(2.2103404998779296875), SC_(0.00028976381872780621051788330078125), SC_(0.0002298515925041686812616062307466566814354), + SC_(2.2103404998779296875), SC_(0.000687857042066752910614013671875), SC_(0.0005457203088721067508285680739202453850977), + SC_(2.2103404998779296875), SC_(0.00145484809763729572296142578125), SC_(0.001154573794984565689401328437672284137464), + SC_(2.2103404998779296875), SC_(0.002847635187208652496337890625), SC_(0.002261144638932774280741629860724815198317), + SC_(2.2103404998779296875), SC_(0.0056468211114406585693359375), SC_(0.004488801451427910647070198885794977682362), + SC_(2.2103404998779296875), SC_(0.011621631681919097900390625), SC_(0.00926027081123263749767139964130364819499), + SC_(2.2103404998779296875), SC_(0.0257236398756504058837890625), SC_(0.02061217301579647881319524823726294980894), + SC_(2.2103404998779296875), SC_(0.0560617186129093170166015625), SC_(0.04546855212175825897801442555081432132684), + SC_(2.2103404998779296875), SC_(0.106835305690765380859375), SC_(0.08842974526620618171455331479918566244557), + SC_(2.2103404998779296875), SC_(0.2401093542575836181640625), SC_(0.2097840978949737299216830878053929952957), + SC_(2.2103404998779296875), SC_(0.438671648502349853515625), SC_(0.416134414130719918038219956020285288407), + SC_(2.2103404998779296875), SC_(0.903765499591827392578125), SC_(1.047907441370060274169644114866504275322), + SC_(3.081670284271240234375), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.1611185520717568314823155973617711167757e-29), + SC_(3.081670284271240234375), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.2016245423563825681157746100335493201015e-29), + SC_(3.081670284271240234375), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.6768158528204367266258854475192690611878e-29), + SC_(3.081670284271240234375), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.1303356217534067036250250716172227240104e-28), + SC_(3.081670284271240234375), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.1600935620333729507106200488860234636498e-28), + SC_(3.081670284271240234375), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.5593730800616404164427053831623290303e-28), + SC_(3.081670284271240234375), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.1087214648519581934497528988754812776161e-27), + SC_(3.081670284271240234375), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.1387627111914451504334411009396474302627e-27), + SC_(3.081670284271240234375), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.3710143831450268844517355879522607084369e-27), + SC_(3.081670284271240234375), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.5946592462049591428384073261891171039041e-27), + SC_(3.081670284271240234375), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.9978275614774745463815833774434083935213e-27), + SC_(3.081670284271240234375), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.2813307603558986394305127835522469606386e-26), + SC_(3.081670284271240234375), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.4649380520250322071349650654192689223679e-26), + SC_(3.081670284271240234375), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.8643328277193990796566355800772368371045e-26), + SC_(3.081670284271240234375), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.2250152741697216913904384523516261928793e-25), + SC_(3.081670284271240234375), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.579784230204589050279913597684573640108e-25), + SC_(3.081670284271240234375), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.1138985678050647200131155222333664297409e-24), + SC_(3.081670284271240234375), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.2323303113132160111598615290786783476886e-24), + SC_(3.081670284271240234375), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.4573122983943089982242669378258844610491e-24), + SC_(3.081670284271240234375), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.9159309433449788336954133179744170085861e-24), + SC_(3.081670284271240234375), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.1077701172231728538372225932972842404746e-23), + SC_(3.081670284271240234375), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.3213402998251057022555087473420489435704e-23), + SC_(3.081670284271240234375), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.7338238362184864815106492247439099374513e-23), + SC_(3.081670284271240234375), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.1475480380339123385829505774877819111234e-22), + SC_(3.081670284271240234375), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.2915296911495156299456268705511236745575e-22), + SC_(3.081670284271240234375), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.3306387882707776095613692598267905692144e-22), + SC_(3.081670284271240234375), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.8850161938241560734432334736419307545243e-22), + SC_(3.081670284271240234375), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.2142694059557310026468132635557608861119e-21), + SC_(3.081670284271240234375), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.4290570835717772210461778143386231860226e-21), + SC_(3.081670284271240234375), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.6182366663875839410089349666830403828667e-21), + SC_(3.081670284271240234375), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.1088573567783975509940118455542324120655e-20), + SC_(3.081670284271240234375), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.1915743660917430126387769015482828415204e-20), + SC_(3.081670284271240234375), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.5421526365417942386504300766346803457766e-20), + SC_(3.081670284271240234375), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.8484203335493463512606833846920578585603e-20), + SC_(3.081670284271240234375), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.2922068737878133969259824029588766352176e-19), + SC_(3.081670284271240234375), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.5002257649873140104824664051662958782155e-19), + SC_(3.081670284271240234375), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.1093460510995174418291578793832011515439e-18), + SC_(3.081670284271240234375), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.2292134126104661541032908482925310173531e-18), + SC_(3.081670284271240234375), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.4782097875973148530365392653363141428528e-18), + SC_(3.081670284271240234375), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.7339311001839622378170319237223033369594e-18), + SC_(3.081670284271240234375), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.1616319427243881800616876839070988687325e-17), + SC_(3.081670284271240234375), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.3510243859671668114015447789294114453729e-17), + SC_(3.081670284271240234375), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.4044210101854173772052568584500977262538e-17), + SC_(3.081670284271240234375), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.1063106530312731394370945221114577589865e-16), + SC_(3.081670284271240234375), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.2888165832878597073070174805437777192811e-16), + SC_(3.081670284271240234375), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.3785823263785517775913841283360266404166e-16), + SC_(3.081670284271240234375), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.1208286101356655978989267825821491117805e-15), + SC_(3.081670284271240234375), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.2100900178467809780355311483309898859117e-15), + SC_(3.081670284271240234375), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.4195241870669270679568235822116939980401e-15), + SC_(3.081670284271240234375), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.6991032958722281494972268237207947405754e-15), + SC_(3.081670284271240234375), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.1757071707252635757021776909227155254672e-14), + SC_(3.081670284271240234375), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.3479970766645161024115324864896348377545e-14), + SC_(3.081670284271240234375), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.6969878377310835469094076936692296574283e-14), + SC_(3.081670284271240234375), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.1179358243534255376613100037832741628033e-13), + SC_(3.081670284271240234375), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.2226716188963402971286477297381342039567e-13), + SC_(3.081670284271240234375), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.4548950011038629785664879661486185524825e-13), + SC_(3.081670284271240234375), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.1059102935662924931807407941027836281315e-12), + SC_(3.081670284271240234375), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.1501976066696445847907892536948793939421e-12), + SC_(3.081670284271240234375), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.2997097746339349648220262840418873714391e-12), + SC_(3.081670284271240234375), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.6663260422155390476630130771377319671241e-12), + SC_(3.081670284271240234375), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.174632686582879261942845237972252727791e-11), + SC_(3.081670284271240234375), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.3679429357369118715402219339783099461878e-11), + SC_(3.081670284271240234375), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.422477999822460603402470434270331290893e-11), + SC_(3.081670284271240234375), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.1078108025617639564996840882401703556569e-10), + SC_(3.081670284271240234375), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.2091314959945325300456139698423630112915e-10), + SC_(3.081670284271240234375), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.6133241766211751141791377828628892970034e-10), + SC_(3.081670284271240234375), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.685358179393465879297183182258883516519e-10), + SC_(3.081670284271240234375), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.1505593954393473011955514013941002340912e-9), + SC_(3.081670284271240234375), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.2874971291579766817915476026737397913361e-9), + SC_(3.081670284271240234375), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.1045068618587674618710563098430916993829e-8), + SC_(3.081670284271240234375), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.1911307019263791285975489761534102504092e-8), + SC_(3.081670284271240234375), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.3819355031974774192564251891675219233741e-8), + SC_(3.081670284271240234375), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.7105923259640368229860609131512930955636e-8), + SC_(3.081670284271240234375), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.9435127693032368181524002161033185967976e-8), + SC_(3.081670284271240234375), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.2208885910611401144114453165606788366465e-7), + SC_(3.081670284271240234375), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.59159128182850440607462626611272020244e-7), + SC_(3.081670284271240234375), SC_(0.116242290459922514855861663818359375e-6), SC_(0.1308274226353751302833108364549200715007e-6), + SC_(3.081670284271240234375), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.19998741194136552159337658603684838832e-6), + SC_(3.081670284271240234375), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.2775764577197436855139885183694135843601e-6), + SC_(3.081670284271240234375), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.8928021311068074785199579060167240593811e-6), + SC_(3.081670284271240234375), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.1544253657253189098543067799746046631157e-5), + SC_(3.081670284271240234375), SC_(0.214747751670074649155139923095703125e-5), SC_(0.2416928199749181643100601268885193514249e-5), + SC_(3.081670284271240234375), SC_(0.527022712049074470996856689453125e-5), SC_(0.5931509331960228699997899809120289644487e-5), + SC_(3.081670284271240234375), SC_(0.9233162927557714283466339111328125e-5), SC_(0.1039171803239835570149199230342972913351e-4), + SC_(3.081670284271240234375), SC_(0.269396477960981428623199462890625e-4), SC_(0.3032027220182921934725276295799376576054e-4), + SC_(3.081670284271240234375), SC_(0.3208058114978484809398651123046875e-4), SC_(0.3610643963209734621758397838332943183439e-4), + SC_(3.081670284271240234375), SC_(0.00010957030463032424449920654296875), SC_(0.0001233258865212769239899446236395683072946), + SC_(3.081670284271240234375), SC_(0.000126518702018074691295623779296875), SC_(0.0001424033633748521462833870852168266000127), + SC_(3.081670284271240234375), SC_(0.00028976381872780621051788330078125), SC_(0.0003261741754060267279249682887185749343808), + SC_(3.081670284271240234375), SC_(0.000687857042066752910614013671875), SC_(0.00077446341097905547224447459872652910626), + SC_(3.081670284271240234375), SC_(0.00145484809763729572296142578125), SC_(0.001638731690222058425783966330750126376051), + SC_(3.081670284271240234375), SC_(0.002847635187208652496337890625), SC_(0.003210074246402525822534006537661772827066), + SC_(3.081670284271240234375), SC_(0.0056468211114406585693359375), SC_(0.006375575647354314746464320490352208787519), + SC_(3.081670284271240234375), SC_(0.011621631681919097900390625), SC_(0.01316573314478029153750102000765303701693), + SC_(3.081670284271240234375), SC_(0.0257236398756504058837890625), SC_(0.02937439065090196216028526614430881237205), + SC_(3.081670284271240234375), SC_(0.0560617186129093170166015625), SC_(0.0651289594965291790274936548826001602713), + SC_(3.081670284271240234375), SC_(0.106835305690765380859375), SC_(0.1277676169007454599368609354599937296996), + SC_(3.081670284271240234375), SC_(0.2401093542575836181640625), SC_(0.31027402555021715485769456717179160097), + SC_(3.081670284271240234375), SC_(0.438671648502349853515625), SC_(0.6383875352447911147116499256317898261966), + SC_(3.081670284271240234375), SC_(0.903765499591827392578125), SC_(1.765337083764528955511064365585877254958), + SC_(6.323592662811279296875), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.2640216713937599924725935169870336878469e-29), + SC_(6.323592662811279296875), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.3303980080656743193848719859974506438038e-29), + SC_(6.323592662811279296875), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1109084276079271114149147453706727026132e-28), + SC_(6.323592662811279296875), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2135783139495545999684618085405890945762e-28), + SC_(6.323592662811279296875), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.2623420412107904889320304484610549025392e-28), + SC_(6.323592662811279296875), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.9166332097173709132142553989377319218614e-28), + SC_(6.323592662811279296875), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.1781596377170008450538469724209077707655e-27), + SC_(6.323592662811279296875), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.2273876128155517374717470888031885279529e-27), + SC_(6.323592662811279296875), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.6079736708746525343688764872781137336946e-27), + SC_(6.323592662811279296875), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.9744559274766997155824596884015128511179e-27), + SC_(6.323592662811279296875), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.1635119588380558627010826035099821298601e-26), + SC_(6.323592662811279296875), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.4610109550299398554521105933337258419067e-26), + SC_(6.323592662811279296875), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.7618844634076498277644240575253280712652e-26), + SC_(6.323592662811279296875), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1416364502291062812896800893478270568628e-25), + SC_(6.323592662811279296875), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.3687279212201232042063109624304941208785e-25), + SC_(6.323592662811279296875), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.9500805434136804903505520643299761716077e-25), + SC_(6.323592662811279296875), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.1866432502934594433541827585412325115359e-24), + SC_(6.323592662811279296875), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.3807149227671123852231868207099235585832e-24), + SC_(6.323592662811279296875), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.7493882971168561397190365843431779325436e-24), + SC_(6.323592662811279296875), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1500917277580197805728854790038420077474e-23), + SC_(6.323592662811279296875), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.176600683842362435260535661406588759685e-23), + SC_(6.323592662811279296875), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.5265737679184896359661146696537048796582e-23), + SC_(6.323592662811279296875), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.1202502090887074570233461613634947645288e-22), + SC_(6.323592662811279296875), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.2417839479790878125288977678942117907422e-22), + SC_(6.323592662811279296875), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.4777237340360520058118819832033238328801e-22), + SC_(6.323592662811279296875), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.5418110104910798251920517552801475271232e-22), + SC_(6.323592662811279296875), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1450257910708703638231501372705993689616e-21), + SC_(6.323592662811279296875), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.3511188870651282430353895347101449393102e-21), + SC_(6.323592662811279296875), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.7030870552852379469894897807112131647926e-21), + SC_(6.323592662811279296875), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.1013091763038312657778669812906615972673e-20), + SC_(6.323592662811279296875), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.1783823210336399991452860718271760581388e-20), + SC_(6.323592662811279296875), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.3139289900595401379513738037289246532429e-20), + SC_(6.323592662811279296875), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.8884144216151370971376685999266889159817e-20), + SC_(6.323592662811279296875), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.13902890240000855616136881361620942629e-19), + SC_(6.323592662811279296875), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.4788334193559808055847315228140282886654e-19), + SC_(6.323592662811279296875), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.8197097159075328603909653177820246587535e-19), + SC_(6.323592662811279296875), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.1791831344086587158752905974689963984773e-18), + SC_(6.323592662811279296875), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.3756073247004505491197875029299517146387e-18), + SC_(6.323592662811279296875), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.7836325846701193893147797979687408120111e-18), + SC_(6.323592662811279296875), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.120267786215041498931028063321951852684e-17), + SC_(6.323592662811279296875), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.2648629541414183387075993336092813103229e-17), + SC_(6.323592662811279296875), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.5752164719165548416846878232210079425788e-17), + SC_(6.323592662811279296875), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.6627164264010534236716184141142009338674e-17), + SC_(6.323592662811279296875), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.1742090897625379557002226544777241404933e-16), + SC_(6.323592662811279296875), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.4732778197506075746341690759495359419571e-16), + SC_(6.323592662811279296875), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.6203751044515782530569432476712507272081e-16), + SC_(6.323592662811279296875), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.1979993687256799227419533949656782391203e-15), + SC_(6.323592662811279296875), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.3442702093694849241267874103348331144276e-15), + SC_(6.323592662811279296875), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.687465693027008888543693450648884023717e-15), + SC_(6.323592662811279296875), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1145606252536746689746494071388493007353e-14), + SC_(6.323592662811279296875), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.287927741990208979554706572189928219716e-14), + SC_(6.323592662811279296875), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.5702556821649460657410678877087527311379e-14), + SC_(6.323592662811279296875), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1142139694607778851083907918355201497843e-13), + SC_(6.323592662811279296875), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.1932590199117776125622513918660019968254e-13), + SC_(6.323592662811279296875), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.3648874213242890170421744328311442014451e-13), + SC_(6.323592662811279296875), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.745427121555936380928065908178058767459e-13), + SC_(6.323592662811279296875), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.1735530289070848899327475101445921707334e-12), + SC_(6.323592662811279296875), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.2461257418363765792730654099699146351472e-12), + SC_(6.323592662811279296875), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.4911282693048557581723249165619954121061e-12), + SC_(6.323592662811279296875), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1091894838284186038251836896112937706401e-11), + SC_(6.323592662811279296875), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.2861670068328674084615094708262254913112e-11), + SC_(6.323592662811279296875), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.6029405529143244582479683065134643942967e-11), + SC_(6.323592662811279296875), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.6923060454930819217441054464640979660495e-11), + SC_(6.323592662811279296875), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.1766673540740391567943102645108241226625e-10), + SC_(6.323592662811279296875), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.3426994992440822149025126131105427520931e-10), + SC_(6.323592662811279296875), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1005041766691009342634921330244156196593e-9), + SC_(6.323592662811279296875), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.1123082411702773503440362131299934516785e-9), + SC_(6.323592662811279296875), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.2467185976953044158569624193431277797317e-9), + SC_(6.323592662811279296875), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.4711156573351016254227307294740845189647e-9), + SC_(6.323592662811279296875), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.1712532541689447362551869993048849215144e-8), + SC_(6.323592662811279296875), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.3132019668696561736750747340448513321755e-8), + SC_(6.323592662811279296875), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.6258698873913359974687081613348342619904e-8), + SC_(6.323592662811279296875), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1164433093482480163520254315438795733052e-7), + SC_(6.323592662811279296875), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.1546115055530141876216042706262018282201e-7), + SC_(6.323592662811279296875), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.3619656126823783677718697037104997467652e-7), + SC_(6.323592662811279296875), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.9694285354026179470000990982695592498024e-7), + SC_(6.323592662811279296875), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2143842269388389813213009352719362814715e-6), + SC_(6.323592662811279296875), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.3277152969140139122822324864844921678809e-6), + SC_(6.323592662811279296875), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.4548588965115780940122335443447594264831e-6), + SC_(6.323592662811279296875), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1463016983785711661450840189292630083083e-5), + SC_(6.323592662811279296875), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.2530538088029879560464944967972563390119e-5), + SC_(6.323592662811279296875), SC_(0.214747751670074649155139923095703125e-5), SC_(0.3960573796416912678134897725452735748135e-5), + SC_(6.323592662811279296875), SC_(0.527022712049074470996856689453125e-5), SC_(0.971986126939888603885399069969989278817e-5), + SC_(6.323592662811279296875), SC_(0.9233162927557714283466339111328125e-5), SC_(0.1702875201527071042511818411550240394349e-4), + SC_(6.323592662811279296875), SC_(0.269396477960981428623199462890625e-4), SC_(0.4968569013812425366118713653269210769854e-4), + SC_(6.323592662811279296875), SC_(0.3208058114978484809398651123046875e-4), SC_(0.591675653295974588826092428631863663046e-4), + SC_(6.323592662811279296875), SC_(0.00010957030463032424449920654296875), SC_(0.0002020995632187329336952362792392842222475), + SC_(6.323592662811279296875), SC_(0.000126518702018074691295623779296875), SC_(0.0002333640865642182667238138781262256868632), + SC_(6.323592662811279296875), SC_(0.00028976381872780621051788330078125), SC_(0.0005345506118405693182416319246117093130363), + SC_(6.323592662811279296875), SC_(0.000687857042066752910614013671875), SC_(0.00126941116972756188231670540301804238022), + SC_(6.323592662811279296875), SC_(0.00145484809763729572296142578125), SC_(0.00268676106006709776150658499887655198484), + SC_(6.323592662811279296875), SC_(0.002847635187208652496337890625), SC_(0.005265673178025655617449193239271098286881), + SC_(6.323592662811279296875), SC_(0.0056468211114406585693359375), SC_(0.01046877983444355408069324209313930501994), + SC_(6.323592662811279296875), SC_(0.011621631681919097900390625), SC_(0.02166498029451568744434392290105678144036), + SC_(6.323592662811279296875), SC_(0.0257236398756504058837890625), SC_(0.04858515871765421540410821800310430346619), + SC_(6.323592662811279296875), SC_(0.0560617186129093170166015625), SC_(0.1089281600114160026489262189935621154398), + SC_(6.323592662811279296875), SC_(0.106835305690765380859375), SC_(0.2177866862158178437169020404646003493979), + SC_(6.323592662811279296875), SC_(0.2401093542575836181640625), SC_(0.5571086656816731263564355805234016885753), + SC_(6.323592662811279296875), SC_(0.438671648502349853515625), SC_(1.245743486034874630440378386980407164541), + SC_(6.323592662811279296875), SC_(0.903765499591827392578125), SC_(4.295214134949533685152193727106176234023), + SC_(8.14723682403564453125), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.3002962764187653347972894412214699705482e-29), + SC_(8.14723682403564453125), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.3757922258219752347267402157596665385415e-29), + SC_(8.14723682403564453125), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1261464169145770321318890120398854612563e-28), + SC_(8.14723682403564453125), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2429223785467071694571189061291793443736e-28), + SC_(8.14723682403564453125), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.2983858775979273559126169516027652026393e-28), + SC_(8.14723682403564453125), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1042571764154104837466580831424514639287e-27), + SC_(8.14723682403564453125), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.2026374408286396264005774213759479985747e-27), + SC_(8.14723682403564453125), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.2586289719014177795596914746737253162208e-27), + SC_(8.14723682403564453125), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.6915047108084518826259439071949255220125e-27), + SC_(8.14723682403564453125), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.1108338891314068876466374481618204861507e-26), + SC_(8.14723682403564453125), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.1859772803111157884456504072587687508341e-26), + SC_(8.14723682403564453125), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.5243504158311368244991840133692808224351e-26), + SC_(8.14723682403564453125), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.8665616962988200638037564294897244977957e-26), + SC_(8.14723682403564453125), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1610962402610471480071712791338275473577e-25), + SC_(8.14723682403564453125), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.4193883826638476182600418804157794933744e-25), + SC_(8.14723682403564453125), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.1080614511600233806563787463469263198849e-24), + SC_(8.14723682403564453125), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.2122866383882235032870078232483926179772e-24), + SC_(8.14723682403564453125), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.4330223086631203680672072624772930549214e-24), + SC_(8.14723682403564453125), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.852348650124142569583864332670923091027e-24), + SC_(8.14723682403564453125), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1707132097492570967003147340838531255859e-23), + SC_(8.14723682403564453125), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.2008642983392705299695765581848139274246e-23), + SC_(8.14723682403564453125), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.598921069361349484374992174068012361807e-23), + SC_(8.14723682403564453125), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.1367716893741711175200464702736435160588e-22), + SC_(8.14723682403564453125), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.2750032559549373199320920778458197506507e-22), + SC_(8.14723682403564453125), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.5433594058040099707290986349056416146979e-22), + SC_(8.14723682403564453125), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.6162517952191302117861094956373595761412e-22), + SC_(8.14723682403564453125), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1649512512111818004955831530316651421064e-21), + SC_(8.14723682403564453125), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.3993599987809599501685878670403590453519e-21), + SC_(8.14723682403564453125), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.7996859636022348345206395118114881895569e-21), + SC_(8.14723682403564453125), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.115228300201616594413399651589013021783e-20), + SC_(8.14723682403564453125), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2028907191692179192545093848322480540521e-20), + SC_(8.14723682403564453125), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.3570604877892291096818904837199743491231e-20), + SC_(8.14723682403564453125), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.1010475925401865006098240977506391422236e-19), + SC_(8.14723682403564453125), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.1581304348423924557702183910898865913193e-19), + SC_(8.14723682403564453125), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.5446215535959395263786385569195301491108e-19), + SC_(8.14723682403564453125), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.9323317064537522990976000435543820405318e-19), + SC_(8.14723682403564453125), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2038015583187277825165297954172993551461e-18), + SC_(8.14723682403564453125), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.4272129647832585254298530550491334440606e-18), + SC_(8.14723682403564453125), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.8912978469327704136743073992720868519783e-18), + SC_(8.14723682403564453125), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.136791681466336850858739043994763819133e-17), + SC_(8.14723682403564453125), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.3012531451303506521403267939793483351148e-17), + SC_(8.14723682403564453125), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.6542469174572584949884746185717932847323e-17), + SC_(8.14723682403564453125), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.7537687119364649787992623415722169434063e-17), + SC_(8.14723682403564453125), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.1981441171015517669713621273143494442641e-16), + SC_(8.14723682403564453125), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.5383026561131680690067572177474658478986e-16), + SC_(8.14723682403564453125), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.7056100087021666077931534148880848881114e-16), + SC_(8.14723682403564453125), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.2252030026463694583742748890551163061716e-15), + SC_(8.14723682403564453125), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.3915703639394825250101464584673193502066e-15), + SC_(8.14723682403564453125), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.7819183428839392001729888591632596329746e-15), + SC_(8.14723682403564453125), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1303003992296412497333639695669103250231e-14), + SC_(8.14723682403564453125), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.3274868625021751903175847444540694937743e-14), + SC_(8.14723682403564453125), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.6486045522580673933180535249562004618168e-14), + SC_(8.14723682403564453125), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1299061155208216751337721180197078540544e-13), + SC_(8.14723682403564453125), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.2198113653227124650003647332454390917516e-13), + SC_(8.14723682403564453125), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.4150202267764266086007368292612694907912e-13), + SC_(8.14723682403564453125), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.847843238636878629688634386576373742241e-13), + SC_(8.14723682403564453125), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.1973979183862871363544627549465085816321e-12), + SC_(8.14723682403564453125), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.2799415798487301903063820714571160522817e-12), + SC_(8.14723682403564453125), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.5586056240674623129969871288914642634269e-12), + SC_(8.14723682403564453125), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1241913031027744437030775086591973516968e-11), + SC_(8.14723682403564453125), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.3254842154895220360350562900122964558652e-11), + SC_(8.14723682403564453125), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.6857800800453437785097236710724347410561e-11), + SC_(8.14723682403564453125), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.7874237236147777114390384507386571915503e-11), + SC_(8.14723682403564453125), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.2009401285629002547185238237069409269533e-10), + SC_(8.14723682403564453125), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.3897838499792479711219892220178230066437e-10), + SC_(8.14723682403564453125), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1143126996323774119097065969850821243229e-9), + SC_(8.14723682403564453125), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.1277385544027438399433622551231764162295e-9), + SC_(8.14723682403564453125), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.2806158896779336233741305619995731444322e-9), + SC_(8.14723682403564453125), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.5358434287536001582491896939362610296213e-9), + SC_(8.14723682403564453125), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.1947821718046892961553014837249850920506e-8), + SC_(8.14723682403564453125), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.3562335771216184184970866941827809547094e-8), + SC_(8.14723682403564453125), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.7118597340699191804540686314874729268662e-8), + SC_(8.14723682403564453125), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.132441750158373525162868935080838840289e-7), + SC_(8.14723682403564453125), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.1758539714307722824048198124784117315638e-7), + SC_(8.14723682403564453125), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.4116969844809739007223857306170195600183e-7), + SC_(8.14723682403564453125), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1102620780473938808288066281082898627349e-6), + SC_(8.14723682403564453125), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2438390215504947278486570498249757266301e-6), + SC_(8.14723682403564453125), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.3727409385932641184830284812315176859141e-6), + SC_(8.14723682403564453125), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.5173531266029305255369204117738691933193e-6), + SC_(8.14723682403564453125), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1664024753741567137349817967171097549819e-5), + SC_(8.14723682403564453125), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.2878215614882762856182308078227200441801e-5), + SC_(8.14723682403564453125), SC_(0.214747751670074649155139923095703125e-5), SC_(0.4504728270448328808378965972337354594004e-5), + SC_(8.14723682403564453125), SC_(0.527022712049074470996856689453125e-5), SC_(0.1105530496816720602121909418016065775699e-4), + SC_(8.14723682403564453125), SC_(0.9233162927557714283466339111328125e-5), SC_(0.1936839796995393539450852194639748205793e-4), + SC_(8.14723682403564453125), SC_(0.269396477960981428623199462890625e-4), SC_(0.5651232562465381965657403175421220278403e-4), + SC_(8.14723682403564453125), SC_(0.3208058114978484809398651123046875e-4), SC_(0.6729702026750513326048907431986094438406e-4), + SC_(8.14723682403564453125), SC_(0.00010957030463032424449920654296875), SC_(0.00022986972439150582568813762789935818154), + SC_(8.14723682403564453125), SC_(0.000126518702018074691295623779296875), SC_(0.0002654308233220190960060128510217268500465), + SC_(8.14723682403564453125), SC_(0.00028976381872780621051788330078125), SC_(0.0006080161951350230359195132409744484724968), + SC_(8.14723682403564453125), SC_(0.000687857042066752910614013671875), SC_(0.001443944640669855964528390799484686036437), + SC_(8.14723682403564453125), SC_(0.00145484809763729572296142578125), SC_(0.003056465549723277550236744174463742737141), + SC_(8.14723682403564453125), SC_(0.002847635187208652496337890625), SC_(0.005991300521400921393361158561348919757934), + SC_(8.14723682403564453125), SC_(0.0056468211114406585693359375), SC_(0.01191564950603685046390396565923080993845), + SC_(8.14723682403564453125), SC_(0.011621631681919097900390625), SC_(0.0246780346873362021605808087853240101899), + SC_(8.14723682403564453125), SC_(0.0257236398756504058837890625), SC_(0.05544231479185505401377016952082859212136), + SC_(8.14723682403564453125), SC_(0.0560617186129093170166015625), SC_(0.1247935191691613843472500366450303784846), + SC_(8.14723682403564453125), SC_(0.106835305690765380859375), SC_(0.2512038389510235409424816149968257848692), + SC_(8.14723682403564453125), SC_(0.2401093542575836181640625), SC_(0.6547870159122512790726005830749938271159), + SC_(8.14723682403564453125), SC_(0.438671648502349853515625), SC_(1.509772797905131401789530365650239382294), + SC_(8.14723682403564453125), SC_(0.903765499591827392578125), SC_(5.657937524401060919087823696029901420293), + SC_(8.35008525848388671875), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.303816911746048393394900925176479831121e-29), + SC_(8.35008525848388671875), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.3801979660520079493591155051996548231306e-29), + SC_(8.35008525848388671875), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1276253414523568970385340237418638328662e-28), + SC_(8.35008525848388671875), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2457703695970741261302951747977948193401e-28), + SC_(8.35008525848388671875), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.3018841156525633741398803896071070359265e-28), + SC_(8.35008525848388671875), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1054794742833301654764119491149597015675e-27), + SC_(8.35008525848388671875), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.2050131363960954151037327999620809155486e-27), + SC_(8.35008525848388671875), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.261661105053362949521331571474625302723e-27), + SC_(8.35008525848388671875), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.6996118240330591461475652585969851842736e-27), + SC_(8.35008525848388671875), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.1121332915422182033137202753286930185984e-26), + SC_(8.35008525848388671875), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.1881576542769330443012072728830855135065e-26), + SC_(8.35008525848388671875), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.5304978333744577310115147769605291298771e-26), + SC_(8.35008525848388671875), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.8767211553425463654104292902836243726569e-26), + SC_(8.35008525848388671875), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1629849120798232545767493770886803212811e-25), + SC_(8.35008525848388671875), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.4243052386883939863234715495583651591012e-25), + SC_(8.35008525848388671875), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.1093283498608947757724519564692589494537e-24), + SC_(8.35008525848388671875), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.214775459919854855860469177623499747264e-24), + SC_(8.35008525848388671875), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.4380990071009494974444657778777392512375e-24), + SC_(8.35008525848388671875), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.8623414772233518661182971579868599749488e-24), + SC_(8.35008525848388671875), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1727146296944015109953344638919887600832e-23), + SC_(8.35008525848388671875), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.2032192058098413805068266190849302445531e-23), + SC_(8.35008525848388671875), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.6059427437563635612468332606231404035493e-23), + SC_(8.35008525848388671875), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.1383751832540332977251232173344701356117e-22), + SC_(8.35008525848388671875), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.2782273591292393377146410912035666884325e-22), + SC_(8.35008525848388671875), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.5497296823265782289911172955748998204486e-22), + SC_(8.35008525848388671875), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.6234766528384919483230046708585808739178e-22), + SC_(8.35008525848388671875), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1668851186877261729366775205077442586098e-21), + SC_(8.35008525848388671875), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.4040420445817919536244395122738304468065e-21), + SC_(8.35008525848388671875), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.8090613800668210377384738787292658254758e-21), + SC_(8.35008525848388671875), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.116579222128556739661293493199864289008e-20), + SC_(8.35008525848388671875), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2052693841397049732704220591360221495998e-20), + SC_(8.35008525848388671875), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.3612466195064758274683701588091748448199e-20), + SC_(8.35008525848388671875), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.102232261655223366043584230403875938978e-19), + SC_(8.35008525848388671875), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.1599843359358859003043614240098451228971e-19), + SC_(8.35008525848388671875), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.5510066273785920985779323744923667519753e-19), + SC_(8.35008525848388671875), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.9432622447262610405053726165198520690847e-19), + SC_(8.35008525848388671875), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2061909018514850029082537284682245312716e-18), + SC_(8.35008525848388671875), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.4322215552127710416548061649973866087213e-18), + SC_(8.35008525848388671875), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.901747309458462763450102224941690433692e-18), + SC_(8.35008525848388671875), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.1383954097309432722071591383044181578075e-17), + SC_(8.35008525848388671875), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.3047849986646316599823536826165457953048e-17), + SC_(8.35008525848388671875), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.6619172250542598263128134296831740065416e-17), + SC_(8.35008525848388671875), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.7626058003862181805512806919457213036816e-17), + SC_(8.35008525848388671875), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.2004671335134776866079507930597383925792e-16), + SC_(8.35008525848388671875), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.5446136479459122707777712170130656693809e-16), + SC_(8.35008525848388671875), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.7138824906441575420363373409374989236525e-16), + SC_(8.35008525848388671875), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.2278432539887516822635090434738477660544e-15), + SC_(8.35008525848388671875), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.3961610850527872795280743881628279014308e-15), + SC_(8.35008525848388671875), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.7910854540244348513465934381335174491522e-15), + SC_(8.35008525848388671875), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1318280245274229811349400509112621296791e-14), + SC_(8.35008525848388671875), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.3313262768002680373213799824392006451222e-14), + SC_(8.35008525848388671875), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.6562087094835536421935148657707169429622e-14), + SC_(8.35008525848388671875), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1314291182865800526329078268768653499208e-13), + SC_(8.35008525848388671875), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.2223884057952832841780133364614796489439e-13), + SC_(8.35008525848388671875), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.4198858710972658766671444521370475155153e-13), + SC_(8.35008525848388671875), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.8577832448651965377422043802840370255599e-13), + SC_(8.35008525848388671875), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.1997121864594411126451917445231700374726e-12), + SC_(8.35008525848388671875), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.2832235793038836823300148051443354939542e-12), + SC_(8.35008525848388671875), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.5651546453126307347005405388651202867825e-12), + SC_(8.35008525848388671875), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1256473061350448036669401447786418232001e-11), + SC_(8.35008525848388671875), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.3293001510089133195032192369813630570469e-11), + SC_(8.35008525848388671875), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.6938200784274620573725127382346418124212e-11), + SC_(8.35008525848388671875), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.7966553791383517129221888809680799456275e-11), + SC_(8.35008525848388671875), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.2032959250573862910811995273561451963595e-10), + SC_(8.35008525848388671875), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.39435362623033519647896868270251518048e-10), + SC_(8.35008525848388671875), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1156528871748459484879192119255551761764e-9), + SC_(8.35008525848388671875), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.1292361449579070679085354557462440019552e-9), + SC_(8.35008525848388671875), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.283905794656174652826326024378902159596e-9), + SC_(8.35008525848388671875), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.5421255889194592212629474063410851442735e-9), + SC_(8.35008525848388671875), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.1970657732000656088065688384526438968121e-8), + SC_(8.35008525848388671875), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.3604100142509616779027214782233014357877e-8), + SC_(8.35008525848388671875), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.7202054870267985344182616265018696491029e-8), + SC_(8.35008525848388671875), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1339944803923258042086625536682875546438e-7), + SC_(8.35008525848388671875), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.1779156610299678955518645324556312923063e-7), + SC_(8.35008525848388671875), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.4165236676325977052853867589868067553003e-7), + SC_(8.35008525848388671875), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1115547766899315795021036787777738246793e-6), + SC_(8.35008525848388671875), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2466977595594028290046253241160990171727e-6), + SC_(8.35008525848388671875), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.3771109067441330494076108837938934979323e-6), + SC_(8.35008525848388671875), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.5234185104052220487989578542374244461787e-6), + SC_(8.35008525848388671875), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1683533584602828763167290870416711088711e-5), + SC_(8.35008525848388671875), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.2911959497583481521632815773831789242539e-5), + SC_(8.35008525848388671875), SC_(0.214747751670074649155139923095703125e-5), SC_(0.4557541251741361946740815280463978788759e-5), + SC_(8.35008525848388671875), SC_(0.527022712049074470996856689453125e-5), SC_(0.1118491668149296147391580982027848644964e-4), + SC_(8.35008525848388671875), SC_(0.9233162927557714283466339111328125e-5), SC_(0.1959547282760206637598957101789474343893e-4), + SC_(8.35008525848388671875), SC_(0.269396477960981428623199462890625e-4), SC_(0.5717488787825101038116116448568043886015e-4), + SC_(8.35008525848388671875), SC_(0.3208058114978484809398651123046875e-4), SC_(0.6808602882722058087940799635524413983679e-4), + SC_(8.35008525848388671875), SC_(0.00010957030463032424449920654296875), SC_(0.0002325650011386463513065814423233172031071), + SC_(8.35008525848388671875), SC_(0.000126518702018074691295623779296875), SC_(0.0002685431183137980700956096910227791349613), + SC_(8.35008525848388671875), SC_(0.00028976381872780621051788330078125), SC_(0.0006151466916567491000405537059346943296718), + SC_(8.35008525848388671875), SC_(0.000687857042066752910614013671875), SC_(0.001460885623281189582659547621062792419205), + SC_(8.35008525848388671875), SC_(0.00145484809763729572296142578125), SC_(0.003092354511270021672959060525719939657619), + SC_(8.35008525848388671875), SC_(0.002847635187208652496337890625), SC_(0.006061754232424053942762224395926479452724), + SC_(8.35008525848388671875), SC_(0.0056468211114406585693359375), SC_(0.01205618582978607475974534372018331649234), + SC_(8.35008525848388671875), SC_(0.011621631681919097900390625), SC_(0.02497093962240100225008553038129746109154), + SC_(8.35008525848388671875), SC_(0.0257236398756504058837890625), SC_(0.05611021932688490941026883371307113047986), + SC_(8.35008525848388671875), SC_(0.0560617186129093170166015625), SC_(0.1263453655338174105049911829505423628754), + SC_(8.35008525848388671875), SC_(0.106835305690765380859375), SC_(0.2544955644502210185824015471606320029378), + SC_(8.35008525848388671875), SC_(0.2401093542575836181640625), SC_(0.6645874239603678819609156017830715676702), + SC_(8.35008525848388671875), SC_(0.438671648502349853515625), SC_(1.536995347819618393387328773272907959484), + SC_(8.35008525848388671875), SC_(0.903765499591827392578125), SC_(5.807575170920757391333663733086588298286), + SC_(9.05791950225830078125), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.3154652249272743515358442481050496705959e-29), + SC_(9.05791950225830078125), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.3947747220133110322799882025912166405739e-29), + SC_(9.05791950225830078125), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1325184856112988269489259326446958165414e-28), + SC_(9.05791950225830078125), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2551931835519645397384620899693010823261e-28), + SC_(9.05791950225830078125), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.3134583256046998923120958035052167830755e-28), + SC_(9.05791950225830078125), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1095235478787799744975907281941028579988e-27), + SC_(9.05791950225830078125), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.2128733216809857444780474082092193404369e-27), + SC_(9.05791950225830078125), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.2716931683821973114809547479629023087336e-27), + SC_(9.05791950225830078125), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.7264348786971048930313153654157758299519e-27), + SC_(9.05791950225830078125), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.1164324718953423812840797502181511074885e-26), + SC_(9.05791950225830078125), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.1953716018872443147401499351362959093991e-26), + SC_(9.05791950225830078125), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.550837072785437889109549468827089227749e-26), + SC_(9.05791950225830078125), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.9103345659040111376422713882766452663518e-26), + SC_(9.05791950225830078125), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1692337390092051803145956763830592214146e-25), + SC_(9.05791950225830078125), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.440573063531562974560809957989790578186e-25), + SC_(9.05791950225830078125), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.11351998900121629038834906490214739902e-24), + SC_(9.05791950225830078125), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.2230099318141629322715485110014889841194e-24), + SC_(9.05791950225830078125), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.4548956837894464751787453186486142389963e-24), + SC_(9.05791950225830078125), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.8954035722138203560380363554731750197979e-24), + SC_(9.05791950225830078125), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1793364931255639284980704007276052736735e-23), + SC_(9.05791950225830078125), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.2110106119567503000298650286554781054522e-23), + SC_(9.05791950225830078125), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.6291745342732299276098361662975120213963e-23), + SC_(9.05791950225830078125), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.1436804753847090284841789400547023868969e-22), + SC_(9.05791950225830078125), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.2888945711553814592199431071395309118877e-22), + SC_(9.05791950225830078125), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.5708062691036443881725807225889040536907e-22), + SC_(9.05791950225830078125), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.6473806918589257929168848362981256399467e-22), + SC_(9.05791950225830078125), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1732834791890848767051681603427277899451e-21), + SC_(9.05791950225830078125), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.4195329803780372971638862970337421704626e-21), + SC_(9.05791950225830078125), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.84008072090499869521429088340237744825e-21), + SC_(9.05791950225830078125), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.1210488590621064027940195119088838608895e-20), + SC_(9.05791950225830078125), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2131393939401312961699471075038214057137e-20), + SC_(9.05791950225830078125), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.3750967825388348419801806653021941193416e-20), + SC_(9.05791950225830078125), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.1061518374093883020098862460032696167784e-19), + SC_(9.05791950225830078125), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.1661181210446929638476935167073047556707e-19), + SC_(9.05791950225830078125), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.5721321721145671001227774122509306055176e-19), + SC_(9.05791950225830078125), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.9794268346941221703798574479056325989627e-19), + SC_(9.05791950225830078125), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2140962425584338463294826233113563101289e-18), + SC_(9.05791950225830078125), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.4487928909223618938299710968847143982242e-18), + SC_(9.05791950225830078125), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.9363202205269548994010977882112360425486e-18), + SC_(9.05791950225830078125), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.1437014773429318969440529662554354621061e-17), + SC_(9.05791950225830078125), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.3164704282115974280634551112581105735532e-17), + SC_(9.05791950225830078125), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.6872950721700411519896314616257619649159e-17), + SC_(9.05791950225830078125), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.7918440384608098105284168669591190857757e-17), + SC_(9.05791950225830078125), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.2081530254550673990000527907345002592813e-16), + SC_(9.05791950225830078125), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.5654940864231045623097989372344393889809e-16), + SC_(9.05791950225830078125), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.7412526813877441309836883895951271491157e-16), + SC_(9.05791950225830078125), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.2365787439370827419417927163994335313562e-15), + SC_(9.05791950225830078125), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.4113498655666461529741469728959584605667e-15), + SC_(9.05791950225830078125), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.8214155994683834723574831964831005243093e-15), + SC_(9.05791950225830078125), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1368822991789976842621256917018358658063e-14), + SC_(9.05791950225830078125), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.3440292965734564418953577846754869711643e-14), + SC_(9.05791950225830078125), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.681367692623707945134611894380943253949e-14), + SC_(9.05791950225830078125), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.13646809890861383761353246234604301386e-13), + SC_(9.05791950225830078125), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.2309147573525077750995455599061229154568e-13), + SC_(9.05791950225830078125), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.4359842577828666553912992682044051988355e-13), + SC_(9.05791950225830078125), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.890670577635369247768708968495975078987e-13), + SC_(9.05791950225830078125), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.2073691337986060222984783598283581979693e-12), + SC_(9.05791950225830078125), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.2940823459639750406216533544479977491992e-12), + SC_(9.05791950225830078125), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.5868226237888610086993479571271314918231e-12), + SC_(9.05791950225830078125), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1304646125971113163641907177702515707777e-11), + SC_(9.05791950225830078125), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.3419254893007777507867868413269779363349e-11), + SC_(9.05791950225830078125), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.7204210780838943251938695589081939118372e-11), + SC_(9.05791950225830078125), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.8271990750123550233372114200470324412159e-11), + SC_(9.05791950225830078125), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.2110902726134560402003355275619485042681e-10), + SC_(9.05791950225830078125), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.4094731089351581985650299702999672083823e-10), + SC_(9.05791950225830078125), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1200870085095152217108006375172095614186e-9), + SC_(9.05791950225830078125), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.134191047179292714125351544086056023465e-9), + SC_(9.05791950225830078125), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.2947907173933645856408143378003830948434e-9), + SC_(9.05791950225830078125), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.562910635442301128672721898229300339369e-9), + SC_(9.05791950225830078125), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.2046212572996540499923424107815318022543e-8), + SC_(9.05791950225830078125), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.374228101938620755446651962929752618141e-8), + SC_(9.05791950225830078125), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.7478181009885443030654062342037974946626e-8), + SC_(9.05791950225830078125), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1391318168034338234837029722532165802178e-7), + SC_(9.05791950225830078125), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.1847369315996482893977157656361806551841e-7), + SC_(9.05791950225830078125), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.4324931480838746041625206349890339471437e-7), + SC_(9.05791950225830078125), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1158317770831471770924205695789568537273e-6), + SC_(9.05791950225830078125), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2561561307737854087185767462770208718312e-6), + SC_(9.05791950225830078125), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.39156930795883500037782346733448271256e-6), + SC_(9.05791950225830078125), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.5434863346610004614961081293368009808849e-6), + SC_(9.05791950225830078125), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1748080167846223040853665963955169181426e-5), + SC_(9.05791950225830078125), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.3023603932659035997865798381293341205636e-5), + SC_(9.05791950225830078125), SC_(0.214747751670074649155139923095703125e-5), SC_(0.4732277388528918566050741155653964028704e-5), + SC_(9.05791950225830078125), SC_(0.527022712049074470996856689453125e-5), SC_(0.1161374787529083016181945296971724928477e-4), + SC_(9.05791950225830078125), SC_(0.9233162927557714283466339111328125e-5), SC_(0.2034676914359927680695331543608768988425e-4), + SC_(9.05791950225830078125), SC_(0.269396477960981428623199462890625e-4), SC_(0.5936703302530892369764216926987806807892e-4), + SC_(9.05791950225830078125), SC_(0.3208058114978484809398651123046875e-4), SC_(0.7069653334490330852794441936131793027422e-4), + SC_(9.05791950225830078125), SC_(0.00010957030463032424449920654296875), SC_(0.0002414825989570633912995913519215386700583), + SC_(9.05791950225830078125), SC_(0.000126518702018074691295623779296875), SC_(0.0002788404727430997089747468089908789181372), + SC_(9.05791950225830078125), SC_(0.00028976381872780621051788330078125), SC_(0.000638738891360736008829881157043723842803), + SC_(9.05791950225830078125), SC_(0.000687857042066752910614013671875), SC_(0.001516938308174365641969878913071045025617), + SC_(9.05791950225830078125), SC_(0.00145484809763729572296142578125), SC_(0.00321110526183416990135343809918247336095), + SC_(9.05791950225830078125), SC_(0.002847635187208652496337890625), SC_(0.006294891333644249781144157926744671614596), + SC_(9.05791950225830078125), SC_(0.0056468211114406585693359375), SC_(0.01252130101261455228056921833268729571347), + SC_(9.05791950225830078125), SC_(0.011621631681919097900390625), SC_(0.02594063673570323792964668118914872441002), + SC_(9.05791950225830078125), SC_(0.0257236398756504058837890625), SC_(0.05832305078727693333226267606064661195371), + SC_(9.05791950225830078125), SC_(0.0560617186129093170166015625), SC_(0.1314950543792148978624394628956067400208), + SC_(9.05791950225830078125), SC_(0.106835305690765380859375), SC_(0.2654483612415900617941432175085551926815), + SC_(9.05791950225830078125), SC_(0.2401093542575836181640625), SC_(0.6974284805143726880282057511738019555138), + SC_(9.05791950225830078125), SC_(0.438671648502349853515625), SC_(1.629185635178873766677925251039821143485), + SC_(9.05791950225830078125), SC_(0.903765499591827392578125), SC_(6.32705246632545632147034161046161342959), + SC_(9.133758544921875), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.3166588379386359837662710450824745998242e-29), + SC_(9.133758544921875), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.3962684151608216310450856914760484352206e-29), + SC_(9.133758544921875), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1330198904450900967019080660951867562253e-28), + SC_(9.133758544921875), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2561587476783072877437995061182958780849e-28), + SC_(9.133758544921875), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.3146443451922714064504469391515819608822e-28), + SC_(9.133758544921875), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1099379476967907805024633596202812551352e-27), + SC_(9.133758544921875), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.213678761857755691115389300048368707761e-27), + SC_(9.133758544921875), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.2727211628337373159341633878514945047035e-27), + SC_(9.133758544921875), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.7291834609641984080820739719339622110891e-27), + SC_(9.133758544921875), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.116873012729696839367246878018486989899e-26), + SC_(9.133758544921875), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.1961108215147545731654019661289312160823e-26), + SC_(9.133758544921875), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.5529212527370272487719402384883321506077e-26), + SC_(9.133758544921875), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.9137789619790643132454043156307219409037e-26), + SC_(9.133758544921875), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1698740618621894793643662785149599259976e-25), + SC_(9.133758544921875), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.4422400420113873694244706119533817266574e-25), + SC_(9.133758544921875), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.1139495099918507361927196722899871079642e-24), + SC_(9.133758544921875), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.2238537254726798757161646422414983289474e-24), + SC_(9.133758544921875), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.4566168541882075534287139119305248572501e-24), + SC_(9.133758544921875), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.8987914744919890138736138418319428222193e-24), + SC_(9.133758544921875), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1800150413606538243120530969681451426396e-23), + SC_(9.133758544921875), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.21180900427408106498072807137975544998e-23), + SC_(9.133758544921875), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.6315551165091928672573973671753279421403e-23), + SC_(9.133758544921875), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.144224113387716649510960987260862116892e-22), + SC_(9.133758544921875), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.2899876498588179380205715603124867921109e-22), + SC_(9.133758544921875), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.5729660056956125438944678043621476099764e-22), + SC_(9.133758544921875), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.6498301599969281622277012892067585290436e-22), + SC_(9.133758544921875), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1739391248801805801607283296725349924552e-21), + SC_(9.133758544921875), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.4211203503462802062650808793819815783631e-21), + SC_(9.133758544921875), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.8432593003484141482284951403272575802672e-21), + SC_(9.133758544921875), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.1215068667338563382528779550284588948439e-20), + SC_(9.133758544921875), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2139458408437458632544702298187423963293e-20), + SC_(9.133758544921875), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.3765160210627052717818735073383363610292e-20), + SC_(9.133758544921875), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.1065534798228777762983085692745067109424e-19), + SC_(9.133758544921875), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.1667466554600080042731918866079645111871e-19), + SC_(9.133758544921875), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.5742969254721264735800352737628286744035e-19), + SC_(9.133758544921875), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.9831326523918958338122603416318193669595e-19), + SC_(9.133758544921875), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2149063098514620884683636668531297215924e-18), + SC_(9.133758544921875), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.450490970430602546519886934276976341266e-18), + SC_(9.133758544921875), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.9398629374723158741379479331377426086494e-18), + SC_(9.133758544921875), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.1442451948101993414376845665768396656522e-17), + SC_(9.133758544921875), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.3176678445699666680955154923506384383446e-17), + SC_(9.133758544921875), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.6898955627343371549445486787441361048131e-17), + SC_(9.133758544921875), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.7948401067199780099392046222922514366964e-17), + SC_(9.133758544921875), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.2089406056379377447514939065220814131497e-16), + SC_(9.133758544921875), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.5676337235243358738091088936640596066828e-16), + SC_(9.133758544921875), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.7440573291755156029522906020009751167445e-16), + SC_(9.133758544921875), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.2374738773611867553628158083140001517171e-15), + SC_(9.133758544921875), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.4129062734143745293001314520947967973891e-15), + SC_(9.133758544921875), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.8245235564468013190217027819473057111831e-15), + SC_(9.133758544921875), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1374002151976739526070303332333153231473e-14), + SC_(9.133758544921875), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.345330986307322779610281858961887866469e-14), + SC_(9.133758544921875), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.6839457560017699966998240266744866833624e-14), + SC_(9.133758544921875), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1369844477344809694294274855536145555036e-13), + SC_(9.133758544921875), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.2317884601796733088332805910112079640838e-13), + SC_(9.133758544921875), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.4376338737839915159615291094424318821963e-13), + SC_(9.133758544921875), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.8940405718733956105008108936229491171121e-13), + SC_(9.133758544921875), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.2081537480023233882996487367026237796731e-12), + SC_(9.133758544921875), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.2951950534411155963930576171475953294381e-12), + SC_(9.133758544921875), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.5890429608142096452582699368428277658628e-12), + SC_(9.133758544921875), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1309582462746558652863594053840430217562e-11), + SC_(9.133758544921875), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.3432192189441651910506223477029484359357e-11), + SC_(9.133758544921875), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.7231469061768686221153900026064267317522e-11), + SC_(9.133758544921875), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.8303289146932668340064370413905394263433e-11), + SC_(9.133758544921875), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.2118889663395998649174305175749893352622e-10), + SC_(9.133758544921875), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.4110224157747644423583113222517509247955e-10), + SC_(9.133758544921875), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.1205413768662624216495148932262066295668e-9), + SC_(9.133758544921875), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.1346987804166698582103545800495053990511e-9), + SC_(9.133758544921875), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.2959061051069945958835846269141153207358e-9), + SC_(9.133758544921875), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.5650404976451556437547264787093649893696e-9), + SC_(9.133758544921875), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.2053954744750057116474127386247909619633e-8), + SC_(9.133758544921875), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.3756440536735007285724410041691924552336e-8), + SC_(9.133758544921875), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.7506475900995156011288348709812761296664e-8), + SC_(9.133758544921875), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1396582442346313363883316229808727647626e-7), + SC_(9.133758544921875), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.185435913261832036402039632866481232055e-7), + SC_(9.133758544921875), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.434129554949963243700876044278654143025e-7), + SC_(9.133758544921875), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1162700451183168473911017592713844196679e-6), + SC_(9.133758544921875), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2571253384891851869983057722984941167289e-6), + SC_(9.133758544921875), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.3930508732020080511653669652574353308432e-6), + SC_(9.133758544921875), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.5455427024829950357648610380554611106052e-6), + SC_(9.133758544921875), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1754694313872418709490561563784264799798e-5), + SC_(9.133758544921875), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.3035044237918703040505553684515020241501e-5), + SC_(9.133758544921875), SC_(0.214747751670074649155139923095703125e-5), SC_(0.4750182757595584701061593856707247719575e-5), + SC_(9.133758544921875), SC_(0.527022712049074470996856689453125e-5), SC_(0.1165769059949704066228382252035286160394e-4), + SC_(9.133758544921875), SC_(0.9233162927557714283466339111328125e-5), SC_(0.2042375517716371738869107466887463011806e-4), + SC_(9.133758544921875), SC_(0.269396477960981428623199462890625e-4), SC_(0.5959166435958585870676376573465541576689e-4), + SC_(9.133758544921875), SC_(0.3208058114978484809398651123046875e-4), SC_(0.7096403444944712104973145464518363610699e-4), + SC_(9.133758544921875), SC_(0.00010957030463032424449920654296875), SC_(0.0002423963976274547113520639506749754456639), + SC_(9.133758544921875), SC_(0.000126518702018074691295623779296875), SC_(0.0002798956577974984275654773358319046607446), + SC_(9.133758544921875), SC_(0.00028976381872780621051788330078125), SC_(0.0006411564364665104093195535580417210607387), + SC_(9.133758544921875), SC_(0.000687857042066752910614013671875), SC_(0.001522682253857451785825717819605251309824), + SC_(9.133758544921875), SC_(0.00145484809763729572296142578125), SC_(0.003223274550919413078558922991480584957931), + SC_(9.133758544921875), SC_(0.002847635187208652496337890625), SC_(0.006318784151197779190311758585128772805171), + SC_(9.133758544921875), SC_(0.0056468211114406585693359375), SC_(0.01256897385147959593489613597170196869447), + SC_(9.133758544921875), SC_(0.011621631681919097900390625), SC_(0.02604005426676951113278576709191952468673), + SC_(9.133758544921875), SC_(0.0257236398756504058837890625), SC_(0.05855006332475848314609853654570300938235), + SC_(9.133758544921875), SC_(0.0560617186129093170166015625), SC_(0.1320240756877234443504850105930086569822), + SC_(9.133758544921875), SC_(0.106835305690765380859375), SC_(0.2665760915709943020795338378823706112721), + SC_(9.133758544921875), SC_(0.2401093542575836181640625), SC_(0.7008301174292642126150669803023638485546), + SC_(9.133758544921875), SC_(0.438671648502349853515625), SC_(1.638819662694764963830781936726649515985), + SC_(9.133758544921875), SC_(0.903765499591827392578125), SC_(6.382473545580206211190860756907471309227), + SC_(9.68867778778076171875), SC_(0.1431564604442703013402649929484277542953e-29), SC_(0.3251023041419442629663190449032320727026e-29), + SC_(9.68867778778076171875), SC_(0.1791466932348087634896446282571611213266e-29), SC_(0.4068346099736040733007820502305239840058e-29), + SC_(9.68867778778076171875), SC_(0.6013619202535540063110633226832922483532e-29), SC_(0.1365667642877792388513882350014289657906e-28), + SC_(9.68867778778076171875), SC_(0.115805324961653822428570241697281798758e-28), SC_(0.2629890251554282451955534879170468653276e-28), + SC_(9.68867778778076171875), SC_(0.1422457400834001098175711728787848259007e-28), SC_(0.3230340964841896705434811777933594702467e-28), + SC_(9.68867778778076171875), SC_(0.4970121018327539153628705477876439795096e-28), SC_(0.1128693591548812362301112581850657975072e-27), + SC_(9.68867778778076171875), SC_(0.9660079415057497591758174164417478444323e-28), SC_(0.2193763429385665316044594844377369163394e-27), + SC_(9.68867778778076171875), SC_(0.1232929313253182131376331095427391968754e-27), SC_(0.279993064468643928226977638193225502021e-27), + SC_(9.68867778778076171875), SC_(0.3296523285617759312781860549364832953326e-27), SC_(0.748626581354401062400285076958412022658e-27), + SC_(9.68867778778076171875), SC_(0.528364435768055252017009628713605422886e-27), SC_(0.1199893424032530976049611749648424671609e-26), + SC_(9.68867778778076171875), SC_(0.886586057273120049620324386849842094685e-27), SC_(0.2013399668761852677111403309217419036542e-26), + SC_(9.68867778778076171875), SC_(0.2499669674831043259218157022821422146034e-26), SC_(0.5676644758883756040892047084598038565024e-26), + SC_(9.68867778778076171875), SC_(0.4131050397232622964314362671638736040881e-26), SC_(0.9381441804993808004633913547851406415649e-26), + SC_(9.68867778778076171875), SC_(0.7679738097881433551381658732998641759182e-26), SC_(0.1744036240543871557809919087250212910793e-25), + SC_(9.68867778778076171875), SC_(0.199929739820949207249437007767740538737e-25), SC_(0.4540320351633245557172484303204920023135e-25), + SC_(9.68867778778076171875), SC_(0.5151477415246978459754129800826163591626e-25), SC_(0.1169878866964547547221995022196319253455e-24), + SC_(9.68867778778076171875), SC_(0.101200734533556026342258477595279955025e-24), SC_(0.229822614191584026946923327297559366982e-24), + SC_(9.68867778778076171875), SC_(0.2064292695896540981798546456623054911033e-24), SC_(0.4687921940628085039658292492167189278115e-24), + SC_(9.68867778778076171875), SC_(0.4063294332896333395257434433879773416284e-24), SC_(0.9227570630986311860335595959287304929927e-24), + SC_(9.68867778778076171875), SC_(0.8138195767936862452966745688936976428456e-24), SC_(0.1848150050304199833133111992475494790028e-23), + SC_(9.68867778778076171875), SC_(0.9575550627132253801929510132578249716542e-24), SC_(0.2174567296961365499627397209048994087595e-23), + SC_(9.68867778778076171875), SC_(0.2855160956298500804375620841706273850616e-23), SC_(0.6483950516156469579872053996346377811741e-23), + SC_(9.68867778778076171875), SC_(0.65201444297915461398563707001320281266e-23), SC_(0.14806973928282357752174713141185757796e-22), + SC_(9.68867778778076171875), SC_(0.1310988374636350038320977491775043421995e-22), SC_(0.2977199491904860757140525556186179527699e-22), + SC_(9.68867778778076171875), SC_(0.2590288837798696209228010176465529547374e-22), SC_(0.5882437068841482784486186135173126954487e-22), + SC_(9.68867778778076171875), SC_(0.2937779542193655202274099291941187976629e-22), SC_(0.6671573851883745565690238915558861233449e-22), + SC_(9.68867778778076171875), SC_(0.7863513178004503049754083414326234074965e-22), SC_(0.1785770788748308935419019642128233135009e-21), + SC_(9.68867778778076171875), SC_(0.1903818607087388763706780167350761726053e-21), SC_(0.4323492030409370546305056478788417643006e-21), + SC_(9.68867778778076171875), SC_(0.3812242142377350870566942975497647799754e-21), SC_(0.8657441659200391598244521390735246465316e-21), + SC_(9.68867778778076171875), SC_(0.5493133580141330277178034419485741501887e-21), SC_(0.124746754587344929524756930088081819053e-20), + SC_(9.68867778778076171875), SC_(0.9672153634284186955666772243312215295852e-21), SC_(0.2196505433818528328509987828061540879135e-20), + SC_(9.68867778778076171875), SC_(0.1702169477623814384559878647986894129041e-20), SC_(0.3865555333641529419702847527826614072778e-20), + SC_(9.68867778778076171875), SC_(0.4817114569977399785676754474621208412799e-20), SC_(0.1093946470285242032028108746437167153554e-19), + SC_(9.68867778778076171875), SC_(0.7538352992756463183303278501219690799218e-20), SC_(0.1711928277476865895025016138793163450484e-19), + SC_(9.68867778778076171875), SC_(0.2596305715949999708394617609422128090557e-19), SC_(0.5896101146205924080209010975883278777754e-19), + SC_(9.68867778778076171875), SC_(0.4444587480324321591032923385589104015025e-19), SC_(0.1009347134128383557596449566027375645171e-18), + SC_(9.68867778778076171875), SC_(0.9715574921498573937069095571295029856174e-19), SC_(0.2206366225625197607062393262722651761487e-18), + SC_(9.68867778778076171875), SC_(0.2036598542733453787268262970278076551267e-18), SC_(0.4625029682907836869149984686402911484836e-18), + SC_(9.68867778778076171875), SC_(0.4248971931658660264162106698360155121463e-18), SC_(0.9649236652888796690140481551193469292926e-18), + SC_(9.68867778778076171875), SC_(0.6521097487613458963613731825259556273977e-18), SC_(0.1480913828253450121139914131430527700071e-17), + SC_(9.68867778778076171875), SC_(0.1436126164096190058281493628911107407475e-17), SC_(0.326138215164909851026584251749321471815e-17), + SC_(9.68867778778076171875), SC_(0.3118908901459261162419055180006211003274e-17), SC_(0.7082911013072682747000780572255711975698e-17), + SC_(9.68867778778076171875), SC_(0.3593346613595175715618300349429858897565e-17), SC_(0.8160339114525799062082084735226523498546e-17), + SC_(9.68867778778076171875), SC_(0.9445874854124767215374919304693435151421e-17), SC_(0.2145118473998511274881313602044206744275e-16), + SC_(9.68867778778076171875), SC_(0.2566182432094081539023303073498993853718e-16), SC_(0.5827692434789835381847157763572645320376e-16), + SC_(9.68867778778076171875), SC_(0.3363765695149349330660137891158001366421e-16), SC_(0.7638970499081317392873833048234230607465e-16), + SC_(9.68867778778076171875), SC_(0.1073581901339262605326457800103412409953e-15), SC_(0.2438059370337366694971865890221449361133e-15), + SC_(9.68867778778076171875), SC_(0.186668406231853462907965823802669547149e-15), SC_(0.4239161040175672541184411515854470301012e-15), + SC_(9.68867778778076171875), SC_(0.3727540802657755688795382376099496468669e-15), SC_(0.8465088477085573603406429900262807830109e-15), + SC_(9.68867778778076171875), SC_(0.6211646767866855090717281839829411183018e-15), SC_(0.1410638870563247541019592683730600534645e-14), + SC_(9.68867778778076171875), SC_(0.1561186859754253464932505224282976996619e-14), SC_(0.3545389734610116283745403992517326218345e-14), + SC_(9.68867778778076171875), SC_(0.3092010764722992466335682593125966377556e-14), SC_(0.7021826475197518343268876740635260691793e-14), + SC_(9.68867778778076171875), SC_(0.6192850577371690132255643845837767003104e-14), SC_(0.1406370334710871427355144538953530568614e-13), + SC_(9.68867778778076171875), SC_(0.1047879028014987723427253740737796761096e-13), SC_(0.2379689225428403830805824843435024125941e-13), + SC_(9.68867778778076171875), SC_(0.1978473638988408750405412206418986897916e-13), SC_(0.4493030469761010753770634758104886456194e-13), + SC_(9.68867778778076171875), SC_(0.4041816252346730475863978426787070930004e-13), SC_(0.9178794812881475840845530325584300055822e-13), + SC_(9.68867778778076171875), SC_(0.9410302262901834580155480125540634617209e-13), SC_(0.2137040088060036565135543283518672527502e-12), + SC_(9.68867778778076171875), SC_(0.1334530223958893535574077304772799834609e-12), SC_(0.3030662042144195267231304473289146643627e-12), + SC_(9.68867778778076171875), SC_(0.266297021326439287136622624529991298914e-12), SC_(0.6047493417392123849215205373703035008782e-12), + SC_(9.68867778778076171875), SC_(0.5920415525016708979677559909760020673275e-12), SC_(0.1344501479492258945113336046310014816028e-11), + SC_(9.68867778778076171875), SC_(0.155163989296047688526414276566356420517e-11), SC_(0.3523708974330744853236964747567641430526e-11), + SC_(9.68867778778076171875), SC_(0.326923297461201300961874949280172586441e-11), SC_(0.7424290664415293228539717523609736893227e-11), + SC_(9.68867778778076171875), SC_(0.3753785910581841633870681107509881258011e-11), SC_(0.8524690014014443239947636563728062120671e-11), + SC_(9.68867778778076171875), SC_(0.9579165585749116473834874341264367103577e-11), SC_(0.217538823889157646975210405182959223965e-10), + SC_(9.68867778778076171875), SC_(0.1858167439361402273334533674642443656921e-10), SC_(0.4219820147522043070128530753246849254589e-10), + SC_(9.68867778778076171875), SC_(0.5449485307451595872407779097557067871094e-10), SC_(0.123755520669603051486977872131239776802e-9), + SC_(9.68867778778076171875), SC_(0.6089519166696533147842274047434329986572e-10), SC_(0.1382904205791782327650424561456364420732e-9), + SC_(9.68867778778076171875), SC_(0.1337744776064297980155970435589551925659e-9), SC_(0.3037962155314103466980398435578035811679e-9), + SC_(9.68867778778076171875), SC_(0.2554458866654840676346793770790100097656e-9), SC_(0.5801068712155522869254305125924800021551e-9), + SC_(9.68867778778076171875), SC_(0.9285605062636648199259070679545402526855e-9), SC_(0.2108721880262844458250615511467757397605e-8), + SC_(9.68867778778076171875), SC_(0.1698227447555211711005540564656257629395e-8), SC_(0.3856603156494151031626014622236295405284e-8), + SC_(9.68867778778076171875), SC_(0.339355921141759608872234821319580078125e-8), SC_(0.7706630351863533996193594586001707313967e-8), + SC_(9.68867778778076171875), SC_(0.6313728651008432279922999441623687744141e-8), SC_(0.1433821247406628873576148497830599721119e-7), + SC_(9.68867778778076171875), SC_(0.8383264749056706932606175541877746582031e-8), SC_(0.1903804203900791197963208573178075630015e-7), + SC_(9.68867778778076171875), SC_(0.1962631124285962869180366396903991699219e-7), SC_(0.4457052884132293020120854209156627105415e-7), + SC_(9.68867778778076171875), SC_(0.5256384838503436185419559478759765625e-7), SC_(0.1193702973058086549839229184033913497394e-6), + SC_(9.68867778778076171875), SC_(0.116242290459922514855861663818359375e-6), SC_(0.2639813902774001345761419758813907104525e-6), + SC_(9.68867778778076171875), SC_(0.1776920584006802528165280818939208984375e-6), SC_(0.4035312768290402179724322739059024257911e-6), + SC_(9.68867778778076171875), SC_(0.246631174150024889968335628509521484375e-6), SC_(0.5600891862976372697203768774599773207812e-6), + SC_(9.68867778778076171875), SC_(0.7932688959044753573834896087646484375e-6), SC_(0.1801481940511445476740974446351987487537e-5), + SC_(9.68867778778076171875), SC_(0.1372093493046122603118419647216796875e-5), SC_(0.3115971501912317630070527687604350940031e-5), + SC_(9.68867778778076171875), SC_(0.214747751670074649155139923095703125e-5), SC_(0.487684306379282015062143358653997082528e-5), + SC_(9.68867778778076171875), SC_(0.527022712049074470996856689453125e-5), SC_(0.1196853588100977502339779488819564685125e-4), + SC_(9.68867778778076171875), SC_(0.9233162927557714283466339111328125e-5), SC_(0.2096834472868302910410196802704006676419e-4), + SC_(9.68867778778076171875), SC_(0.269396477960981428623199462890625e-4), SC_(0.6118067920858328215848432186906668843509e-4), + SC_(9.68867778778076171875), SC_(0.3208058114978484809398651123046875e-4), SC_(0.728563051879196577689828782571903259951e-4), + SC_(9.68867778778076171875), SC_(0.00010957030463032424449920654296875), SC_(0.0002488605167115786508690708436538612267867), + SC_(9.68867778778076171875), SC_(0.000126518702018074691295623779296875), SC_(0.0002873599340757661525877158215704810459439), + SC_(9.68867778778076171875), SC_(0.00028976381872780621051788330078125), SC_(0.0006582580089946178862548800972604646079047), + SC_(9.68867778778076171875), SC_(0.000687857042066752910614013671875), SC_(0.001563315133764469862768389959281037577749), + SC_(9.68867778778076171875), SC_(0.00145484809763729572296142578125), SC_(0.003309362765364723055307278727456538237784), + SC_(9.68867778778076171875), SC_(0.002847635187208652496337890625), SC_(0.006487815096079959006202372484557638978379), + SC_(9.68867778778076171875), SC_(0.0056468211114406585693359375), SC_(0.01290626953766988799660445158177424847916), + SC_(9.68867778778076171875), SC_(0.011621631681919097900390625), SC_(0.02674359636941844621991721651837741451166), + SC_(9.68867778778076171875), SC_(0.0257236398756504058837890625), SC_(0.06015731222731434671073651753326632370858), + SC_(9.68867778778076171875), SC_(0.0560617186129093170166015625), SC_(0.1357733748610437010694097215927829841061), + SC_(9.68867778778076171875), SC_(0.106835305690765380859375), SC_(0.2745822634838372037418174975910269667509), + SC_(9.68867778778076171875), SC_(0.2401093542575836181640625), SC_(0.7250883224868308476529921117348408126984), + SC_(9.68867778778076171875), SC_(0.438671648502349853515625), SC_(1.707985158316040663526167707818201486792), + SC_(9.68867778778076171875), SC_(0.903765499591827392578125), SC_(6.786671267376742594913276377075578069747), + }; +#undef SC_ + + + using namespace std; + + typedef T (*func_t)(const T&); + func_t f = &boost::math::sqrt1pm1; + + boost::math::tools::test_result result = boost::math::tools::test( + sqrtp1m1_data, + bind_func(f, 0), + extract_result(1)); + + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "Test results for type " << type_name << std::endl << std::endl; + handle_test_result(result, sqrtp1m1_data[result.worst()], result.worst(), type_name, "boost::math::sqrt1pm1", "sqrt1pm1"); + + typedef T (*func2_t)(T const, T const); + func2_t f2 = &boost::math::powm1; + result = boost::math::tools::test( + powm1_data, + bind_func(f2, 0, 1), + extract_result(2)); + handle_test_result(result, powm1_data[result.worst()], result.worst(), type_name, "boost::math::powm1", "powm1"); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + test_powm1_sqrtp1m1(1.0F, "float"); + test_powm1_sqrtp1m1(1.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_powm1_sqrtp1m1(1.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_powm1_sqrtp1m1(boost::math::concepts::real_concept(), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + diff --git a/test/sinc_test.hpp b/test/sinc_test.hpp new file mode 100644 index 000000000..e2f32c0e6 --- /dev/null +++ b/test/sinc_test.hpp @@ -0,0 +1,92 @@ +// unit test file sinc.hpp for the special functions test suite + +// (C) Copyright Hubert Holin 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#include +#include +#include +#include + + +#include + + +#include + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinc_pi_test, T) +{ + using ::std::abs; + + using ::std::numeric_limits; + + using ::boost::math::sinc_pi; + + + BOOST_MESSAGE("Testing sinc_pi in the real domain for " + << string_type_name::_() << "."); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(sinc_pi(static_cast(0))-static_cast(1))) + (numeric_limits::epsilon())); +} + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinc_pi_complex_test, T) +{ + using ::std::abs; + using ::std::sinh; + + using ::std::numeric_limits; + + using ::boost::math::sinc_pi; + + + BOOST_MESSAGE("Testing sinc_pi in the complex domain for " + << string_type_name::_() << "."); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(sinc_pi(::std::complex(0, 1))- + ::std::complex(sinh(static_cast(1))))) + (numeric_limits::epsilon())); +} + + +void sinc_pi_manual_check() +{ + using ::boost::math::sinc_pi; + + + BOOST_MESSAGE(" "); + BOOST_MESSAGE("sinc_pi"); + + for (int i = 0; i <= 100; i++) + { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_MESSAGE( ::std::setw(15) + << sinc_pi(static_cast(i-50)/ + static_cast(50)) + << ::std::setw(15) + << sinc_pi(static_cast(i-50)/ + static_cast(50)) + << ::std::setw(15) + << sinc_pi(static_cast(i-50)/ + static_cast(50))); +#else + BOOST_MESSAGE( ::std::setw(15) + << sinc_pi(static_cast(i-50)/ + static_cast(50)) + << ::std::setw(15) + << sinc_pi(static_cast(i-50)/ + static_cast(50))); +#endif + } + + BOOST_MESSAGE(" "); +} + + diff --git a/test/sinhc_test.hpp b/test/sinhc_test.hpp new file mode 100644 index 000000000..7b7e62ed5 --- /dev/null +++ b/test/sinhc_test.hpp @@ -0,0 +1,92 @@ +// unit test file sinhc.hpp for the special functions test suite + +// (C) Copyright Hubert Holin 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#include +#include +#include +#include + + +#include + + +#include + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinhc_pi_test, T) +{ + using ::std::abs; + + using ::std::numeric_limits; + + using ::boost::math::sinhc_pi; + + + BOOST_MESSAGE("Testing sinhc_pi in the real domain for " + << string_type_name::_() << "."); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(sinhc_pi(static_cast(0))-static_cast(1))) + (numeric_limits::epsilon())); +} + + +BOOST_TEST_CASE_TEMPLATE_FUNCTION(sinhc_pi_complex_test, T) +{ + using ::std::abs; + using ::std::sin; + + using ::std::numeric_limits; + + using ::boost::math::sinhc_pi; + + + BOOST_MESSAGE("Testing sinhc_pi in the complex domain for " + << string_type_name::_() << "."); + + BOOST_CHECK_PREDICATE(::std::less_equal(), + (abs(sinhc_pi(::std::complex(0, 1))- + ::std::complex(sin(static_cast(1))))) + (numeric_limits::epsilon())); +} + + +void sinhc_pi_manual_check() +{ + using ::boost::math::sinhc_pi; + + + BOOST_MESSAGE(" "); + BOOST_MESSAGE("sinc_pi"); + + for (int i = 0; i <= 100; i++) + { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_MESSAGE( ::std::setw(15) + << sinhc_pi(static_cast(i-50)/ + static_cast(50)) + << ::std::setw(15) + << sinhc_pi(static_cast(i-50)/ + static_cast(50)) + << ::std::setw(15) + << sinhc_pi(static_cast(i-50)/ + static_cast(50))); +#else + BOOST_MESSAGE( ::std::setw(15) + << sinhc_pi(static_cast(i-50)/ + static_cast(50)) + << ::std::setw(15) + << sinhc_pi(static_cast(i-50)/ + static_cast(50))); +#endif + } + + BOOST_MESSAGE(" "); +} + + diff --git a/test/special_functions_test.cpp b/test/special_functions_test.cpp new file mode 100644 index 000000000..b6f08edbb --- /dev/null +++ b/test/special_functions_test.cpp @@ -0,0 +1,148 @@ +// test file for special functions. + +// (C) Copyright Hubert Holin 2003. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + + +#include + + +#include + +#include +#include +#include +#include + + +template +struct string_type_name; + +#define DEFINE_TYPE_NAME(Type) \ +template<> struct string_type_name \ +{ \ + static char const * _() \ + { \ + return #Type; \ + } \ +} + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +DEFINE_TYPE_NAME(float); +DEFINE_TYPE_NAME(double); +DEFINE_TYPE_NAME(long double); + +typedef boost::mpl::list test_types; +#else +DEFINE_TYPE_NAME(float); +DEFINE_TYPE_NAME(double); + +typedef boost::mpl::list test_types; +#endif + +// Apple GCC 4.0 uses the "double double" format for its long double, +// which means that epsilon is VERY small but useless for +// comparisons. So, don't do those comparisons. +#if (defined(__APPLE_CC__) && defined(__GNUC__) && __GNUC__ == 4) || defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS) +typedef boost::mpl::list near_eps_test_types; +#else +typedef boost::mpl::list near_eps_test_types; +#endif + +#include "sinc_test.hpp" +#include "sinhc_test.hpp" +#include "atanh_test.hpp" +#include "asinh_test.hpp" +#include "acosh_test.hpp" + + + +boost::unit_test_framework::test_suite * init_unit_test_suite(int, char *[]) +{ + ::boost::unit_test::unit_test_log. + set_threshold_level(::boost::unit_test::log_messages); + + boost::unit_test_framework::test_suite * test = + BOOST_TEST_SUITE("special_functions_test"); + + BOOST_MESSAGE("Results of special functions test."); + BOOST_MESSAGE(" "); + BOOST_MESSAGE("(C) Copyright Hubert Holin 2003-2005."); + BOOST_MESSAGE("Distributed under the Boost Software License, Version 1.0."); + BOOST_MESSAGE("(See accompanying file LICENSE_1_0.txt or copy at"); + BOOST_MESSAGE("http://www.boost.org/LICENSE_1_0.txt)"); + BOOST_MESSAGE(" "); + +#define BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(fct) \ + test->add(BOOST_TEST_CASE_TEMPLATE(fct##_test, test_types)); + +#define BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS(fct) \ + test->add(BOOST_TEST_CASE_TEMPLATE(fct##_test, near_eps_test_types)); + + +#define BOOST_SPECIAL_FUNCTIONS_COMMON_TEST \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(atanh) \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(asinh) \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(acosh) \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(sinc_pi) \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR(sinhc_pi) + +#define BOOST_SPECIAL_FUNCTIONS_TEMPLATE_TEMPLATE_TEST \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS(sinc_pi_complex) \ + BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS(sinhc_pi_complex) + + +#ifdef BOOST_NO_TEMPLATE_TEMPLATES + +#define BOOST_SPECIAL_FUNCTIONS_TEST \ + BOOST_SPECIAL_FUNCTIONS_COMMON_TEST \ + BOOST_MESSAGE("Warning: no template templates; curtailed functionality."); + +#else /* BOOST_NO_TEMPLATE_TEMPLATES */ + +#define BOOST_SPECIAL_FUNCTIONS_TEST \ + BOOST_SPECIAL_FUNCTIONS_COMMON_TEST \ + BOOST_SPECIAL_FUNCTIONS_TEMPLATE_TEMPLATE_TEST + +#endif /* BOOST_NO_TEMPLATE_TEMPLATES */ + + + BOOST_SPECIAL_FUNCTIONS_TEST + + +#undef BOOST_SPECIAL_FUNCTIONS_TEST + +#undef BOOST_SPECIAL_FUNCTIONS_TEMPLATE_TEMPLATE_TEST + +#undef BOOST_SPECIAL_FUNCTIONS_COMMON_TEST + +#undef BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR + +#undef BOOST_SPECIAL_FUNCTIONS_COMMON_GENERATOR_NEAR_EPS + +#ifdef BOOST_SPECIAL_FUNCTIONS_TEST_VERBOSE + + using ::std::numeric_limits; + + BOOST_MESSAGE("epsilon"); + + BOOST_MESSAGE( ::std::setw(15) << numeric_limits::epsilon() + << ::std::setw(15) << numeric_limits::epsilon() + << ::std::setw(15) << numeric_limits::epsilon()); + + BOOST_MESSAGE(" "); + + test->add(BOOST_TEST_CASE(atanh_manual_check)); + test->add(BOOST_TEST_CASE(asinh_manual_check)); + test->add(BOOST_TEST_CASE(acosh_manual_check)); + test->add(BOOST_TEST_CASE(sinc_pi_manual_check)); + test->add(BOOST_TEST_CASE(sinhc_pi_manual_check)); + +#endif /* BOOST_SPECIAL_FUNCTIONS_TEST_VERBOSE */ + + return test; +} + +#undef DEFINE_TYPE_NAME diff --git a/test/sph_bessel_data.ipp b/test/sph_bessel_data.ipp new file mode 100644 index 000000000..aa38b5617 --- /dev/null +++ b/test/sph_bessel_data.ipp @@ -0,0 +1,494 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 483> sph_bessel_data = { + SC_(0), SC_(0.177219114266335964202880859375e-2), SC_(0.999999476556507842202459130864323898236e0), + SC_(0), SC_(0.22177286446094512939453125e-2), SC_(0.9999991802801447287222232346958222796612e0), + SC_(0), SC_(0.7444499991834163665771484375e-2), SC_(0.9999907632622405689302860688925139982587e0), + SC_(0), SC_(0.1433600485324859619140625e-1), SC_(0.9999657468461303487880990241993035937654e0), + SC_(0), SC_(0.1760916970670223236083984375e-1), SC_(0.9999483203249623334100130061926184665364e0), + SC_(0), SC_(0.6152711808681488037109375e-1), SC_(0.9993691883680863109159389449304869676033e0), + SC_(0), SC_(0.11958599090576171875e0), SC_(0.9976182354925345599905760522457355689246e0), + SC_(0), SC_(0.15262925624847412109375e0), SC_(0.9961219049249727586697484380600284691174e0), + SC_(0), SC_(0.408089816570281982421875e0), SC_(0.9724739915431544258938594874310588064205e0), + SC_(0), SC_(0.6540834903717041015625e0), SC_(0.9302056396192119311058689588352213355057e0), + SC_(0), SC_(0.1097540378570556640625e1), SC_(0.8109851883728203095784514632631378051565e0), + SC_(0), SC_(0.30944411754608154296875e1), SC_(0.1523183208785146731314680065502594134681e-1), + SC_(0), SC_(0.51139926910400390625e1), SC_(-0.1799836939747169709868781821542134553205e0), + SC_(0), SC_(0.95070552825927734375e1), SC_(-0.8644582430311092690468530625290874536115e-2), + SC_(0), SC_(0.24750102996826171875e2), SC_(-0.1508556180252377401284155114952468133194e-1), + SC_(0), SC_(0.637722015380859375e2), SC_(0.1266638994943852616886089579836946490336e-1), + SC_(0), SC_(0.1252804412841796875e3), SC_(-0.2984906844146395453998586259283750185621e-2), + SC_(0), SC_(0.25554705810546875e3), SC_(-0.3447656740458789191073137012008656930551e-2), + SC_(0), SC_(0.503011474609375e3), SC_(0.6940935913226775542129988435446092279729e-3), + SC_(0), SC_(0.10074598388671875e4), SC_(0.8305987986864569002626675437293057248821e-3), + SC_(0), SC_(0.1185395751953125e4), SC_(-0.7167649812470622363222627438778746846582e-3), + SC_(0.1e1), SC_(0.177219114266335964202880859375e-2), SC_(0.5907301953593941259509561856854291087832e-3), + SC_(0.1e1), SC_(0.22177286446094512939453125e-2), SC_(0.7392425179532175006179700888774678679099e-3), + SC_(0.1e1), SC_(0.7444499991834163665771484375e-2), SC_(0.2481486244688331388548761462155911660424e-2), + SC_(0.1e1), SC_(0.1433600485324859619140625e-1), SC_(0.477857007345182708698871081176423742643e-2), + SC_(0.1e1), SC_(0.1760916970670223236083984375e-1), SC_(0.5869541227527534973977936514325779485181e-2), + SC_(0.1e1), SC_(0.6152711808681488037109375e-1), SC_(0.205012765381082643967011963466059108825e-1), + SC_(0.1e1), SC_(0.11958599090576171875e0), SC_(0.3980502019486214219412102921577104486039e-1), + SC_(0.1e1), SC_(0.15262925624847412109375e0), SC_(0.507579971871436936245493977138951657167e-1), + SC_(0.1e1), SC_(0.408089816570281982421875e0), SC_(0.1337779656209597925613024398512918494342e0), + SC_(0.1e1), SC_(0.6540834903717041015625e0), SC_(0.2088414497092880298218980583359870711751e0), + SC_(0.1e1), SC_(0.1097540378570556640625e1), SC_(0.3236312899642309880098636972650663742421e0), + SC_(0.1e1), SC_(0.30944411754608154296875e1), SC_(0.3277232784787348060184709473722850920387e0), + SC_(0.1e1), SC_(0.51139926910400390625e1), SC_(-0.1116307129673207101011381466711802872966e0), + SC_(0.1e1), SC_(0.95070552825927734375e1), SC_(0.1039199329743298950197804325967556415006e0), + SC_(0.1e1), SC_(0.24750102996826171875e2), SC_(-0.3809149370198498667373716310901593032325e-1), + SC_(0.1e1), SC_(0.637722015380859375e2), SC_(-0.9045323488777102113973090754530543316476e-2), + SC_(0.1e1), SC_(0.1252804412841796875e3), SC_(-0.7426806470289446901421322001368677195156e-2), + SC_(0.1e1), SC_(0.25554705810546875e3), SC_(0.183761395344989507935202292272917754448e-2), + SC_(0.1e1), SC_(0.503011474609375e3), SC_(-0.1861543185509194453611459536122112443011e-2), + SC_(0.1e1), SC_(0.10074598388671875e4), SC_(0.5442867382073472255455809862764039075858e-3), + SC_(0.1e1), SC_(0.1185395751953125e4), SC_(0.4442651225543710411266851455520061266312e-3), + SC_(0.2e1), SC_(0.177219114266335964202880859375e-2), SC_(0.2093773827720430565251557110538425770714e-6), + SC_(0.2e1), SC_(0.22177286446094512939453125e-2), SC_(0.3278879075515531514779472751721891924383e-6), + SC_(0.2e1), SC_(0.7444499991834163665771484375e-2), SC_(0.3694690716009003179822952040973660348991e-5), + SC_(0.2e1), SC_(0.1433600485324859619140625e-1), SC_(0.1370120120703995134662099191103188366059e-4), + SC_(0.2e1), SC_(0.1760916970670223236083984375e-1), SC_(0.2067173265753174063228459655801741280461e-4), + SC_(0.2e1), SC_(0.6152711808681488037109375e-1), SC_(0.2523041832594696207720873096523404469743e-3), + SC_(0.2e1), SC_(0.11958599090576171875e0), SC_(0.9524137960598563739357464134535327666968e-3), + SC_(0.2e1), SC_(0.15262925624847412109375e0), SC_(0.1550463428413672091078292641795407438935e-2), + SC_(0.2e1), SC_(0.408089816570281982421875e0), SC_(0.1097102611452317567405386767797158993089e-1), + SC_(0.2e1), SC_(0.6540834903717041015625e0), SC_(0.2766037955185958056378446380712964902424e-1), + SC_(0.2e1), SC_(0.1097540378570556640625e1), SC_(0.7362360493389258718677168933368717603075e-1), + SC_(0.2e1), SC_(0.30944411754608154296875e1), SC_(0.3024894557597979701575888951210976888787e0), + SC_(0.2e1), SC_(0.51139926910400390625e1), SC_(0.1144982388451644297330327843104009488548e0), + SC_(0.2e1), SC_(0.95070552825927734375e1), SC_(0.4143704967238294556855640424303560695077e-1), + SC_(0.2e1), SC_(0.24750102996826171875e2), SC_(0.1046843026490516523565262690999881523111e-1), + SC_(0.2e1), SC_(0.637722015380859375e2), SC_(-0.1309190404197185674877392619814616382613e-1), + SC_(0.2e1), SC_(0.1252804412841796875e3), SC_(0.2807062488056296863373885100415798671326e-2), + SC_(0.2e1), SC_(0.25554705810546875e3), SC_(0.3469229447658863624235064543945418606161e-2), + SC_(0.2e1), SC_(0.503011474609375e3), SC_(-0.7051959813046644551033771629828891764763e-3), + SC_(0.2e1), SC_(0.10074598388671875e4), SC_(-0.8289780291514071759326532983957910172243e-3), + SC_(0.2e1), SC_(0.1185395751953125e4), SC_(0.7178893275807378245723639629312389935114e-3), + SC_(0.4e1), SC_(0.177219114266335964202880859375e-2), SC_(0.1043783376837269415656629099992565667092e-13), + SC_(0.4e1), SC_(0.22177286446094512939453125e-2), SC_(0.2559774557671848742422562459374402479171e-13), + SC_(0.4e1), SC_(0.7444499991834163665771484375e-2), SC_(0.3250193613184550377260115454105020657549e-11), + SC_(0.4e1), SC_(0.1433600485324859619140625e-1), SC_(0.4469682677416623924037229681870123528417e-10), + SC_(0.4e1), SC_(0.1760916970670223236083984375e-1), SC_(0.101746056573412727336966799805478893789e-9), + SC_(0.4e1), SC_(0.6152711808681488037109375e-1), SC_(0.1516211386725807703466991840076574150499e-7), + SC_(0.4e1), SC_(0.11958599090576171875e0), SC_(0.216275386096930433390507967308045332362e-6), + SC_(0.4e1), SC_(0.15262925624847412109375e0), SC_(0.5736664261625388112327264738146401787856e-6), + SC_(0.4e1), SC_(0.408089816570281982421875e0), SC_(0.2912740194772400778071406390564947979695e-4), + SC_(0.4e1), SC_(0.6540834903717041015625e0), SC_(0.1899514932067494545272197267372701237686e-3), + SC_(0.4e1), SC_(0.1097540378570556640625e1), SC_(0.1453347874709174940209018570873349993662e-2), + SC_(0.4e1), SC_(0.30944411754608154296875e1), SC_(0.6180107635015316992043827444759368254146e-1), + SC_(0.4e1), SC_(0.51139926910400390625e1), SC_(0.1915321596858163372986487584900250664944e0), + SC_(0.4e1), SC_(0.95070552825927734375e1), SC_(-0.1019068788444761880653772745191206413045e0), + SC_(0.4e1), SC_(0.24750102996826171875e2), SC_(0.9030066589287021559976120569661632677975e-3), + SC_(0.4e1), SC_(0.637722015380859375e2), SC_(0.1397210032438881117957577869478362267954e-1), + SC_(0.4e1), SC_(0.1252804412841796875e3), SC_(-0.2385832623037109699838426896495044868037e-2), + SC_(0.4e1), SC_(0.25554705810546875e3), SC_(-0.3517706422383530613292370111075474391608e-2), + SC_(0.4e1), SC_(0.503011474609375e3), SC_(0.7310040090939546601467579790071020662223e-3), + SC_(0.4e1), SC_(0.10074598388671875e4), SC_(0.8251676474254587452146668417855595386434e-3), + SC_(0.4e1), SC_(0.1185395751953125e4), SC_(-0.7204949210708954243611577591830711882785e-3), + SC_(0.7e1), SC_(0.177219114266335964202880859375e-2), SC_(0.2708412355512061998254744639047117242005e-25), + SC_(0.7e1), SC_(0.22177286446094512939453125e-2), SC_(0.1301666337751972379119644811690242989531e-24), + SC_(0.7e1), SC_(0.7444499991834163665771484375e-2), SC_(0.6251567482081419841960943936252840800054e-21), + SC_(0.7e1), SC_(0.1433600485324859619140625e-1), SC_(0.6139531687093123223760370542940134641589e-19), + SC_(0.7e1), SC_(0.1760916970670223236083984375e-1), SC_(0.2590055598488719668444784072004850390416e-18), + SC_(0.7e1), SC_(0.6152711808681488037109375e-1), SC_(0.1646487937461224311477751736559153713855e-14), + SC_(0.7e1), SC_(0.11958599090576171875e0), SC_(0.1724727019112870072974551941040449676603e-12), + SC_(0.7e1), SC_(0.15262925624847412109375e0), SC_(0.95127883759441487679171959521067497234e-12), + SC_(0.7e1), SC_(0.408089816570281982421875e0), SC_(0.9253444130577989992750702351532090441498e-9), + SC_(0.7e1), SC_(0.6540834903717041015625e0), SC_(0.2495196845317271516108278829583237997479e-7), + SC_(0.7e1), SC_(0.1097540378570556640625e1), SC_(0.9134165775553915557738914845438280809529e-6), + SC_(0.7e1), SC_(0.30944411754608154296875e1), SC_(0.1006985517520869208111066088679440346231e-2), + SC_(0.7e1), SC_(0.51139926910400390625e1), SC_(0.2020027207608275213557945137543520484536e-1), + SC_(0.7e1), SC_(0.95070552825927734375e1), SC_(0.1309975302899428558431047955995222007864e0), + SC_(0.7e1), SC_(0.24750102996826171875e2), SC_(0.3009439581838823094669769473563721003996e-1), + SC_(0.7e1), SC_(0.637722015380859375e2), SC_(0.298617402690478447954804302475942518644e-2), + SC_(0.7e1), SC_(0.1252804412841796875e3), SC_(0.7887555711993028736906736576314283291289e-2), + SC_(0.7e1), SC_(0.25554705810546875e3), SC_(-0.1463292767579579943284849187188066532514e-2), + SC_(0.7e1), SC_(0.503011474609375e3), SC_(0.1821521094606276151942737494477710854595e-2), + SC_(0.7e1), SC_(0.10074598388671875e4), SC_(-0.5663419016539526060091032204835345890129e-3), + SC_(0.7e1), SC_(0.1185395751953125e4), SC_(-0.4278209067597136718349540002556196983317e-3), + SC_(0.1e2), SC_(0.177219114266335964202880859375e-2), SC_(0.2222412467063898207339355229881993867402e-37), + SC_(0.1e2), SC_(0.22177286446094512939453125e-2), SC_(0.2093163200601515020924233805357985251582e-36), + SC_(0.1e2), SC_(0.7444499991834163665771484375e-2), SC_(0.3802540886240934890183051910134291949295e-31), + SC_(0.1e2), SC_(0.1433600485324859619140625e-1), SC_(0.266684964367900816875239147989997648647e-28), + SC_(0.1e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2084994625560126959450283831818652290172e-27), + SC_(0.1e2), SC_(0.6152711808681488037109375e-1), SC_(0.5653912338828260373998244611776434552227e-22), + SC_(0.1e2), SC_(0.11958599090576171875e0), SC_(0.434897713836155706767684061375087761872e-19), + SC_(0.1e2), SC_(0.15262925624847412109375e0), SC_(0.498743230435897612604045721851468634098e-18), + SC_(0.1e2), SC_(0.408089816570281982421875e0), SC_(0.9283337003558958058861668656497082016435e-14), + SC_(0.1e2), SC_(0.6540834903717041015625e0), SC_(0.1032785828790319478929806429586227832242e-11), + SC_(0.1e2), SC_(0.1097540378570556640625e1), SC_(0.1796964101377643846918518764647301038832e-9), + SC_(0.1e2), SC_(0.30944411754608154296875e1), SC_(0.4746440374381865829103554103321044705551e-5), + SC_(0.1e2), SC_(0.51139926910400390625e1), SC_(0.4971062536928122665081320579097067859344e-3), + SC_(0.1e2), SC_(0.95070552825927734375e1), SC_(0.5057461997083240817148363720744832430867e-1), + SC_(0.1e2), SC_(0.24750102996826171875e2), SC_(-0.4052937140121672458358612461490746557027e-1), + SC_(0.1e2), SC_(0.637722015380859375e2), SC_(-0.1535890173916687054981660529993884242007e-1), + SC_(0.1e2), SC_(0.1252804412841796875e3), SC_(-0.4474939888286181251334623695852436518611e-3), + SC_(0.1e2), SC_(0.25554705810546875e3), SC_(0.3765065711063798205085097254744083332607e-2), + SC_(0.1e2), SC_(0.503011474609375e3), SC_(-0.8933414061270055016410291246172182703654e-3), + SC_(0.1e2), SC_(0.10074598388671875e4), SC_(-0.7997283918635939289638161916718765095033e-3), + SC_(0.1e2), SC_(0.1185395751953125e4), SC_(0.7366418035649163180844407244651812974016e-3), + SC_(0.13e2), SC_(0.177219114266335964202880859375e-2), SC_(0.7967549070233529373880017026126952489191e-50), + SC_(0.13e2), SC_(0.22177286446094512939453125e-2), SC_(0.1470607273069396437619925218568282570226e-48), + SC_(0.13e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1010529492888596137769488788134125934543e-41), + SC_(0.13e2), SC_(0.1433600485324859619140625e-1), SC_(0.5061179515261786863969473670883645484482e-38), + SC_(0.13e2), SC_(0.1760916970670223236083984375e-1), SC_(0.7333150083305427873393149999673417624209e-37), + SC_(0.13e2), SC_(0.6152711808681488037109375e-1), SC_(0.8482513831072114971132095039793732605003e-30), + SC_(0.13e2), SC_(0.11958599090576171875e0), SC_(0.4790980140493688074282533717797429273979e-26), + SC_(0.13e2), SC_(0.15262925624847412109375e0), SC_(0.1142363387781932566708234637553639504e-24), + SC_(0.13e2), SC_(0.408089816570281982421875e0), SC_(0.4066915958862166702295650618551698937403e-19), + SC_(0.13e2), SC_(0.6540834903717041015625e0), SC_(0.1865153829735527369701114229684691988478e-16), + SC_(0.13e2), SC_(0.1097540378570556640625e1), SC_(0.1538608747375031523485313338490956011086e-13), + SC_(0.13e2), SC_(0.30944411754608154296875e1), SC_(0.9466058139210775751844332755983630328812e-8), + SC_(0.13e2), SC_(0.51139926910400390625e1), SC_(0.48504542431773440351722505921471017723e-5), + SC_(0.13e2), SC_(0.95070552825927734375e1), SC_(0.4669762150797955475363862542405060020244e-2), + SC_(0.13e2), SC_(0.24750102996826171875e2), SC_(0.4275485766960573697460210427189698102253e-1), + SC_(0.13e2), SC_(0.637722015380859375e2), SC_(0.113970869465756399991670439131126101944e-1), + SC_(0.13e2), SC_(0.1252804412841796875e3), SC_(-0.7536964500733528735734781223525082467916e-2), + SC_(0.13e2), SC_(0.25554705810546875e3), SC_(0.5331122223146610928354973014822996100139e-3), + SC_(0.13e2), SC_(0.503011474609375e3), SC_(-0.1707932339445138163253579221754559361486e-2), + SC_(0.13e2), SC_(0.10074598388671875e4), SC_(0.6161982725605395120038556266779816128265e-3), + SC_(0.13e2), SC_(0.1185395751953125e4), SC_(0.3886012392582820794747915723285121522844e-3), + SC_(0.16e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1494799019178919704164684488697950765401e-62), + SC_(0.16e2), SC_(0.22177286446094512939453125e-2), SC_(0.5406899559381251453544169680868077266279e-61), + SC_(0.16e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1405342026752410287955311949575311259182e-52), + SC_(0.16e2), SC_(0.1433600485324859619140625e-1), SC_(0.5026466492790835096662241130408498936167e-48), + SC_(0.16e2), SC_(0.1760916970670223236083984375e-1), SC_(0.134968983417705578727994627307910143279e-46), + SC_(0.16e2), SC_(0.6152711808681488037109375e-1), SC_(0.665971316060260945039307883943078858114e-38), + SC_(0.16e2), SC_(0.11958599090576171875e0), SC_(0.276191313737021349212591975678624891256e-33), + SC_(0.16e2), SC_(0.15262925624847412109375e0), SC_(0.1369222136686508369518858329528365276932e-31), + SC_(0.16e2), SC_(0.408089816570281982421875e0), SC_(0.9321217895124114971986136959461421247752e-25), + SC_(0.16e2), SC_(0.6540834903717041015625e0), SC_(0.1761530144676075863434436240846302094995e-21), + SC_(0.16e2), SC_(0.1097540378570556640625e1), SC_(0.6881211593792194005308098151953401401657e-18), + SC_(0.16e2), SC_(0.30944411754608154296875e1), SC_(0.9729690406205422015094030111006162785483e-11), + SC_(0.16e2), SC_(0.51139926910400390625e1), SC_(0.2369384609873979026448692174721409067076e-7), + SC_(0.16e2), SC_(0.95070552825927734375e1), SC_(0.1840144164665907839516357934905584301009e-3), + SC_(0.16e2), SC_(0.24750102996826171875e2), SC_(-0.3782449186764807008803327973421536394565e-1), + SC_(0.16e2), SC_(0.637722015380859375e2), SC_(0.9058896143977969311183407247844501595529e-3), + SC_(0.16e2), SC_(0.1252804412841796875e3), SC_(0.5188234812418497350666801838628597224656e-2), + SC_(0.16e2), SC_(0.25554705810546875e3), SC_(-0.3914183257756290386308986660817807901091e-2), + SC_(0.16e2), SC_(0.503011474609375e3), SC_(0.1166797445373819044700790380121207908842e-2), + SC_(0.16e2), SC_(0.10074598388671875e4), SC_(0.7499495974300410955160550557937905221906e-3), + SC_(0.16e2), SC_(0.1185395751953125e4), SC_(-0.7630182265896611227918142846728827781432e-3), + SC_(0.19e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1647328137505776803665556649681294214429e-75), + SC_(0.19e2), SC_(0.22177286446094512939453125e-2), SC_(0.1167721156926765964617081497378340236669e-73), + SC_(0.19e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1148032836839990572733346760555819154369e-63), + SC_(0.19e2), SC_(0.1433600485324859619140625e-1), SC_(0.2932331198078231365628892888986179941717e-58), + SC_(0.19e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1459205707718986730267688124799008768904e-56), + SC_(0.19e2), SC_(0.6152711808681488037109375e-1), SC_(0.3071314610753011509563627469767240897976e-46), + SC_(0.19e2), SC_(0.11958599090576171875e0), SC_(0.9352539352435882122864731154174998436925e-41), + SC_(0.19e2), SC_(0.15262925624847412109375e0), SC_(0.9639933804338041569207162945804028032218e-39), + SC_(0.19e2), SC_(0.408089816570281982421875e0), SC_(0.125474879414245919901052299666990587518e-30), + SC_(0.19e2), SC_(0.6540834903717041015625e0), SC_(0.9768859561346455343073918524536182289401e-27), + SC_(0.19e2), SC_(0.1097540378570556640625e1), SC_(0.1805872345289899044932828488235930856372e-22), + SC_(0.19e2), SC_(0.30944411754608154296875e1), SC_(0.5824898256766049332141670366521224363248e-14), + SC_(0.19e2), SC_(0.51139926910400390625e1), SC_(0.6636835786625579616169200350572117580618e-10), + SC_(0.19e2), SC_(0.95070552825927734375e1), SC_(0.3855699191681560295883321198702198533656e-5), + SC_(0.19e2), SC_(0.24750102996826171875e2), SC_(0.4088696716386786969522279433375948444082e-2), + SC_(0.19e2), SC_(0.637722015380859375e2), SC_(-0.1117794430073494920526792498246447801453e-1), + SC_(0.19e2), SC_(0.1252804412841796875e3), SC_(0.338026617039469683574906738787114656499e-2), + SC_(0.19e2), SC_(0.25554705810546875e3), SC_(0.9737821689979933751640244597139357048864e-3), + SC_(0.19e2), SC_(0.503011474609375e3), SC_(0.1476104412709440376091325195254203816075e-2), + SC_(0.19e2), SC_(0.10074598388671875e4), SC_(-0.6896131282003686830970164872319742255719e-3), + SC_(0.19e2), SC_(0.1185395751953125e4), SC_(-0.3247919500263073292648287044867251022298e-3), + SC_(0.22e2), SC_(0.177219114266335964202880859375e-2), SC_(0.115570496092769541976791861538054839035e-88), + SC_(0.22e2), SC_(0.22177286446094512939453125e-2), SC_(0.1605460200977085471550938888703841087224e-86), + SC_(0.22e2), SC_(0.7444499991834163665771484375e-2), SC_(0.5970299567469574128938480660616379715401e-75), + SC_(0.22e2), SC_(0.1433600485324859619140625e-1), SC_(0.1089012217086948569488309137374168179772e-68), + SC_(0.22e2), SC_(0.1760916970670223236083984375e-1), SC_(0.100431174165530608013874662207409109887e-66), + SC_(0.22e2), SC_(0.6152711808681488037109375e-1), SC_(0.9016993553881957239106946510253201848281e-55), + SC_(0.22e2), SC_(0.11958599090576171875e0), SC_(0.2016115028015319311662627825725368676571e-48), + SC_(0.22e2), SC_(0.15262925624847412109375e0), SC_(0.4320543085613016459083307878983475415807e-46), + SC_(0.22e2), SC_(0.408089816570281982421875e0), SC_(0.1075156900631929554655506824478260122832e-36), + SC_(0.22e2), SC_(0.6540834903717041015625e0), SC_(0.3448005537298630067925105881991666714362e-32), + SC_(0.22e2), SC_(0.1097540378570556640625e1), SC_(0.3015080541362985466164096100863692361889e-27), + SC_(0.22e2), SC_(0.30944411754608154296875e1), SC_(0.2208465739590277824044745620237120652321e-17), + SC_(0.22e2), SC_(0.51139926910400390625e1), SC_(0.1166299570727830472707179451623517252553e-12), + SC_(0.22e2), SC_(0.95070552825927734375e1), SC_(0.4857373355963448563126486224353642389299e-7), + SC_(0.22e2), SC_(0.24750102996826171875e2), SC_(0.590129849978225923266816585759037650451e-1), + SC_(0.22e2), SC_(0.637722015380859375e2), SC_(0.1575558980304030876971199319344467844283e-1), + SC_(0.22e2), SC_(0.1252804412841796875e3), SC_(-0.8027574745134647035512348129760053678816e-2), + SC_(0.22e2), SC_(0.25554705810546875e3), SC_(0.3444714422238110167660953457802558341129e-2), + SC_(0.22e2), SC_(0.503011474609375e3), SC_(-0.1506980286438278486200021177115787936675e-2), + SC_(0.22e2), SC_(0.10074598388671875e4), SC_(-0.6695734911585466996605065690429855975964e-3), + SC_(0.22e2), SC_(0.1185395751953125e4), SC_(0.7948046191878189623863943385417937902111e-3), + SC_(0.25e2), SC_(0.177219114266335964202880859375e-2), SC_(0.5476644488663159849042225880390978995961e-102), + SC_(0.25e2), SC_(0.22177286446094512939453125e-2), SC_(0.1490941661051738605059687877811960169617e-99), + SC_(0.25e2), SC_(0.7444499991834163665771484375e-2), SC_(0.2097194157780967799397144530971517823821e-86), + SC_(0.25e2), SC_(0.1433600485324859619140625e-1), SC_(0.2731826813279762741060215264479056593715e-79), + SC_(0.25e2), SC_(0.1760916970670223236083984375e-1), SC_(0.4668971523482048878387920385920980176132e-77), + SC_(0.25e2), SC_(0.6152711808681488037109375e-1), SC_(0.1788131052412233907472678457841349914873e-63), + SC_(0.25e2), SC_(0.11958599090576171875e0), SC_(0.2935618339628096022270537875225522573166e-56), + SC_(0.25e2), SC_(0.15262925624847412109375e0), SC_(0.1307975998789935802968332268782900511622e-53), + SC_(0.25e2), SC_(0.408089816570281982421875e0), SC_(0.6222460074587683747882003944109421862327e-43), + SC_(0.25e2), SC_(0.6540834903717041015625e0), SC_(0.8219156039882384903916730268217384409663e-38), + SC_(0.25e2), SC_(0.1097540378570556640625e1), SC_(0.3398809376070863184869448598682839548489e-32), + SC_(0.25e2), SC_(0.30944411754608154296875e1), SC_(0.5636498168138861667702497500288192639577e-21), + SC_(0.25e2), SC_(0.51139926910400390625e1), SC_(0.1371245412178991599450811165398791987009e-15), + SC_(0.25e2), SC_(0.95070552825927734375e1), SC_(0.3986605282151849884140862585678481739027e-9), + SC_(0.25e2), SC_(0.24750102996826171875e2), SC_(0.2960574441657556306186264307844324552434e-1), + SC_(0.25e2), SC_(0.637722015380859375e2), SC_(-0.1612522243155876237406606398662193271529e-1), + SC_(0.25e2), SC_(0.1252804412841796875e3), SC_(0.4876199303134212065811103201065382975693e-2), + SC_(0.25e2), SC_(0.25554705810546875e3), SC_(-0.2759186309935219884320850168389728706905e-2), + SC_(0.25e2), SC_(0.503011474609375e3), SC_(-0.1069974373239466105453978588018181219313e-2), + SC_(0.25e2), SC_(0.10074598388671875e4), SC_(0.7788863106315495907326644443477168009543e-3), + SC_(0.25e2), SC_(0.1185395751953125e4), SC_(0.2342098737167276743397666396962575279497e-3), + SC_(0.28e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1834563807666394651412285699642330649596e-115), + SC_(0.28e2), SC_(0.22177286446094512939453125e-2), SC_(0.9787515332871736972368637040925674801202e-113), + SC_(0.28e2), SC_(0.7444499991834163665771484375e-2), SC_(0.5207530819213787944295766953774614574213e-98), + SC_(0.28e2), SC_(0.1433600485324859619140625e-1), SC_(0.4844224393509102989989410547993747354657e-90), + SC_(0.28e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1534350490185687887303259794602735548086e-87), + SC_(0.28e2), SC_(0.6152711808681488037109375e-1), SC_(0.2506612653364868055242532378263674339192e-72), + SC_(0.28e2), SC_(0.11958599090576171875e0), SC_(0.3021572752323760442898558805978716974025e-64), + SC_(0.28e2), SC_(0.15262925624847412109375e0), SC_(0.2799042097273001397629680500476119616954e-61), + SC_(0.28e2), SC_(0.408089816570281982421875e0), SC_(0.2545571914568155257065291034990411748045e-49), + SC_(0.28e2), SC_(0.6540834903717041015625e0), SC_(0.1384814695968473038227676443267055411783e-43), + SC_(0.28e2), SC_(0.1097540378570556640625e1), SC_(0.2707553790339595024432465606734041421116e-37), + SC_(0.28e2), SC_(0.30944411754608154296875e1), SC_(0.1014495285106345089038033287512609253277e-24), + SC_(0.28e2), SC_(0.51139926910400390625e1), SC_(0.1132171226825462869232233839175821823053e-18), + SC_(0.28e2), SC_(0.95070552825927734375e1), SC_(0.2257103866423017458018218876831510764162e-11), + SC_(0.28e2), SC_(0.24750102996826171875e2), SC_(0.6555946796374431213876027943793880171737e-2), + SC_(0.28e2), SC_(0.637722015380859375e2), SC_(0.1503151145481491133995892741625706728646e-1), + SC_(0.28e2), SC_(0.1252804412841796875e3), SC_(0.2157891077843019930205470620066920609457e-2), + SC_(0.28e2), SC_(0.25554705810546875e3), SC_(-0.1788793705149522781267354777425462202614e-2), + SC_(0.28e2), SC_(0.503011474609375e3), SC_(0.1827259871969465268630920775652820115813e-2), + SC_(0.28e2), SC_(0.10074598388671875e4), SC_(0.5510168376335794400191425934521608161138e-3), + SC_(0.28e2), SC_(0.1185395751953125e4), SC_(-0.8246625896207856567855098443845597543213e-3), + SC_(0.31e2), SC_(0.177219114266335964202880859375e-2), SC_(0.450341646547891299535390843219020912013e-129), + SC_(0.31e2), SC_(0.22177286446094512939453125e-2), SC_(0.470842090012514886717204107032003775445e-126), + SC_(0.31e2), SC_(0.7444499991834163665771484375e-2), SC_(0.947580408373511644913421124194380763653e-110), + SC_(0.31e2), SC_(0.1433600485324859619140625e-1), SC_(0.6294863889266647462734778538906921935152e-101), + SC_(0.31e2), SC_(0.1760916970670223236083984375e-1), SC_(0.3695038114267496507939522005920002375773e-98), + SC_(0.31e2), SC_(0.6152711808681488037109375e-1), SC_(0.2574932433769852523604160840325816009115e-81), + SC_(0.31e2), SC_(0.11958599090576171875e0), SC_(0.2279063560902495195438276134818404109147e-72), + SC_(0.31e2), SC_(0.15262925624847412109375e0), SC_(0.4389431868285318525557770624833871905963e-69), + SC_(0.31e2), SC_(0.408089816570281982421875e0), SC_(0.7631094460061294051925710270654754371175e-56), + SC_(0.31e2), SC_(0.6540834903717041015625e0), SC_(0.1709677515111988969844896637060971018075e-49), + SC_(0.31e2), SC_(0.1097540378570556640625e1), SC_(0.1580249445297258620417855161882092111436e-42), + SC_(0.31e2), SC_(0.30944411754608154296875e1), SC_(0.1335793301744010082734635269241679829174e-28), + SC_(0.31e2), SC_(0.51139926910400390625e1), SC_(0.6817791856987874676383799421199833859559e-22), + SC_(0.31e2), SC_(0.95070552825927734375e1), SC_(0.9203901138410915625813992834509825352705e-14), + SC_(0.31e2), SC_(0.24750102996826171875e2), SC_(0.8406280681224935795934794929715395020542e-3), + SC_(0.31e2), SC_(0.637722015380859375e2), SC_(-0.1444818405975203243678768179197624660225e-1), + SC_(0.31e2), SC_(0.1252804412841796875e3), SC_(-0.7286620250338267746409191133617323432711e-2), + SC_(0.31e2), SC_(0.25554705810546875e3), SC_(0.3899856018034826692215108576120608654257e-2), + SC_(0.31e2), SC_(0.503011474609375e3), SC_(0.449338424967868394115991409832934957202e-3), + SC_(0.31e2), SC_(0.10074598388671875e4), SC_(-0.8717559539209677259631192249054121075363e-3), + SC_(0.31e2), SC_(0.1185395751953125e4), SC_(-0.1152529652857399266204015514559382936477e-3), + SC_(0.34e2), SC_(0.177219114266335964202880859375e-2), SC_(0.8341353892742104953202036584429061316869e-143), + SC_(0.34e2), SC_(0.22177286446094512939453125e-2), SC_(0.1709083368431823229093966656933864266194e-139), + SC_(0.34e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1301024394676657908384032627920913316992e-121), + SC_(0.34e2), SC_(0.1433600485324859619140625e-1), SC_(0.6172108756115104932830157128831021920702e-112), + SC_(0.34e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6714263743502974327813570372355250793042e-109), + SC_(0.34e2), SC_(0.6152711808681488037109375e-1), SC_(0.1995856791943837590552573366995511140193e-90), + SC_(0.34e2), SC_(0.11958599090576171875e0), SC_(0.129707217890254721545720000632483663058e-80), + SC_(0.34e2), SC_(0.15262925624847412109375e0), SC_(0.5193869134795032962568000095527078749841e-77), + SC_(0.34e2), SC_(0.408089816570281982421875e0), SC_(0.1726091724796837804929664943698047951843e-62), + SC_(0.34e2), SC_(0.6540834903717041015625e0), SC_(0.159256552301312364196983011108506591544e-55), + SC_(0.34e2), SC_(0.1097540378570556640625e1), SC_(0.6958091265932025190103005038260913661135e-48), + SC_(0.34e2), SC_(0.30944411754608154296875e1), SC_(0.1325440331216567038955043585624653119631e-32), + SC_(0.34e2), SC_(0.51139926910400390625e1), SC_(0.3086962993481446627387430878220817161574e-25), + SC_(0.34e2), SC_(0.95070552825927734375e1), SC_(0.279604214924886058777382343649124639512e-16), + SC_(0.34e2), SC_(0.24750102996826171875e2), SC_(0.7038787062356070483319562476809157144813e-4), + SC_(0.34e2), SC_(0.637722015380859375e2), SC_(0.1519325647788089234580260703583525837011e-1), + SC_(0.34e2), SC_(0.1252804412841796875e3), SC_(0.7738483029713573041966191162279749778184e-2), + SC_(0.34e2), SC_(0.25554705810546875e3), SC_(-0.1042268883854291209522496599816470859589e-2), + SC_(0.34e2), SC_(0.503011474609375e3), SC_(-0.1989426073012910695491145157911143175164e-2), + SC_(0.34e2), SC_(0.10074598388671875e4), SC_(-0.3873351426227495385942642664561499860392e-3), + SC_(0.34e2), SC_(0.1185395751953125e4), SC_(0.8425716719657403986065664237808586888143e-3), + SC_(0.37e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1194333902828176431081258465331146785745e-156), + SC_(0.37e2), SC_(0.22177286446094512939453125e-2), SC_(0.4795633604010179229986966798665208492453e-153), + SC_(0.37e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1380859786119863368217815850587088834151e-133), + SC_(0.37e2), SC_(0.1433600485324859619140625e-1), SC_(0.4678165316034431036960541572672838540796e-123), + SC_(0.37e2), SC_(0.1760916970670223236083984375e-1), SC_(0.9431323362026060346441278627232299466235e-120), + SC_(0.37e2), SC_(0.6152711808681488037109375e-1), SC_(0.1195879789201307779177368623226181252951e-99), + SC_(0.37e2), SC_(0.11958599090576171875e0), SC_(0.5706449780423923474316135603718910535834e-89), + SC_(0.37e2), SC_(0.15262925624847412109375e0), SC_(0.4750807641084782624583571645639875576794e-85), + SC_(0.37e2), SC_(0.408089816570281982421875e0), SC_(0.3018063419569773907826218055899342783603e-69), + SC_(0.37e2), SC_(0.6540834903717041015625e0), SC_(0.114671731226423949814916448453528829483e-61), + SC_(0.37e2), SC_(0.1097540378570556640625e1), SC_(0.2368079824048013481072401097915651323377e-53), + SC_(0.37e2), SC_(0.30944411754608154296875e1), SC_(0.1015669125945783729952707403931897463544e-36), + SC_(0.37e2), SC_(0.51139926910400390625e1), SC_(0.1077570423204979083061012765900776333959e-28), + SC_(0.37e2), SC_(0.95070552825927734375e1), SC_(0.6503015570957313806850401490553942274495e-19), + SC_(0.37e2), SC_(0.24750102996826171875e2), SC_(0.4131272479370448839518852164409687678328e-5), + SC_(0.37e2), SC_(0.637722015380859375e2), SC_(-0.1689985813234713962976503000830873800688e-1), + SC_(0.37e2), SC_(0.1252804412841796875e3), SC_(-0.4331036498034980712992345228610856025587e-2), + SC_(0.37e2), SC_(0.25554705810546875e3), SC_(-0.3028547457000298970847409674877937134343e-2), + SC_(0.37e2), SC_(0.503011474609375e3), SC_(0.3644030566956990427127870072394715592528e-3), + SC_(0.37e2), SC_(0.10074598388671875e4), SC_(0.9504704692090138501500029850106080789549e-3), + SC_(0.37e2), SC_(0.1185395751953125e4), SC_(-0.3174121444895938735016063242693231015462e-4), + SC_(0.4e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1349132519814897141545380723282945134739e-170), + SC_(0.4e2), SC_(0.22177286446094512939453125e-2), SC_(0.106161825600796974715747857778256365494e-166), + SC_(0.4e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1156254296163259779002302460360053861732e-145), + SC_(0.4e2), SC_(0.1433600485324859619140625e-1), SC_(0.2797416868342281344274593630970357327589e-134), + SC_(0.4e2), SC_(0.1760916970670223236083984375e-1), SC_(0.1045168952061520920476230994204419896363e-130), + SC_(0.4e2), SC_(0.6152711808681488037109375e-1), SC_(0.5653080665808000541561966051488700731662e-109), + SC_(0.4e2), SC_(0.11958599090576171875e0), SC_(0.1980646629246866754701297262378946575052e-97), + SC_(0.4e2), SC_(0.15262925624847412109375e0), SC_(0.3428330827878163446284470210708897774377e-93), + SC_(0.4e2), SC_(0.408089816570281982421875e0), SC_(0.4163194976372237202112486963801226702853e-76), + SC_(0.4e2), SC_(0.6540834903717041015625e0), SC_(0.6513888519665116964065443564271785448627e-68), + SC_(0.4e2), SC_(0.1097540378570556640625e1), SC_(0.6357709233470759944100999784732402088283e-59), + SC_(0.4e2), SC_(0.30944411754608154296875e1), SC_(0.6135535486449250123166310560643592708587e-41), + SC_(0.4e2), SC_(0.51139926910400390625e1), SC_(0.2961329488432456251614333144034801018987e-32), + SC_(0.4e2), SC_(0.95070552825927734375e1), SC_(0.118431318659248196855114613884608701832e-21), + SC_(0.4e2), SC_(0.24750102996826171875e2), SC_(0.1782930906773170515093474082811039321474e-6), + SC_(0.4e2), SC_(0.637722015380859375e2), SC_(0.1762506910558869828086954812174717503353e-1), + SC_(0.4e2), SC_(0.1252804412841796875e3), SC_(-0.5125786045312195960751705287079621135715e-3), + SC_(0.4e2), SC_(0.25554705810546875e3), SC_(0.3597803112462359504172319683283900865428e-2), + SC_(0.4e2), SC_(0.503011474609375e3), SC_(0.1820695048737985932185260894452560274482e-2), + SC_(0.4e2), SC_(0.10074598388671875e4), SC_(0.1752013511159797068283377941007942320545e-3), + SC_(0.4e2), SC_(0.1185395751953125e4), SC_(-0.8360151263131336845006028348410474142665e-3), + SC_(0.43e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1223404364522471876386040503647069764552e-184), + SC_(0.43e2), SC_(0.22177286446094512939453125e-2), SC_(0.1886589122980017409865377547551417950166e-180), + SC_(0.43e2), SC_(0.7444499991834163665771484375e-2), SC_(0.7772195206450086612598421132633145706806e-158), + SC_(0.43e2), SC_(0.1433600485324859619140625e-1), SC_(0.1342843412144403056002696624893550210449e-145), + SC_(0.43e2), SC_(0.1760916970670223236083984375e-1), SC_(0.9297943886327958919090815356289191355617e-142), + SC_(0.43e2), SC_(0.6152711808681488037109375e-1), SC_(0.2145207465004238675455364046218459318412e-118), + SC_(0.43e2), SC_(0.11958599090576171875e0), SC_(0.5518666759303511453990791896942022227403e-106), + SC_(0.43e2), SC_(0.15262925624847412109375e0), SC_(0.1986021409119343250882888340048878096855e-101), + SC_(0.43e2), SC_(0.408089816570281982421875e0), SC_(0.4610065828371707886080984411603861015004e-83), + SC_(0.43e2), SC_(0.6540834903717041015625e0), SC_(0.2970291531223911689634747798962485121291e-74), + SC_(0.43e2), SC_(0.1097540378570556640625e1), SC_(0.1370119423055714744180026374929987956621e-64), + SC_(0.43e2), SC_(0.30944411754608154296875e1), SC_(0.297354822546642285914560953158328580393e-45), + SC_(0.43e2), SC_(0.51139926910400390625e1), SC_(0.6522100266019409770044623454800636241776e-36), + SC_(0.43e2), SC_(0.95070552825927734375e1), SC_(0.1721161665321131684779827276882951985891e-24), + SC_(0.43e2), SC_(0.24750102996826171875e2), SC_(0.5859244041710111729905151572270149812223e-8), + SC_(0.43e2), SC_(0.637722015380859375e2), SC_(-0.1353696759272298967044778067036814439029e-1), + SC_(0.43e2), SC_(0.1252804412841796875e3), SC_(0.4706471952825932298541627133673912851846e-2), + SC_(0.43e2), SC_(0.25554705810546875e3), SC_(-0.3013236362131892566197294262018369224863e-3), + SC_(0.43e2), SC_(0.503011474609375e3), SC_(-0.1233256918054408823768226078718921526159e-2), + SC_(0.43e2), SC_(0.10074598388671875e4), SC_(-0.9917026270512502832706583187232360041197e-3), + SC_(0.43e2), SC_(0.1185395751953125e4), SC_(0.2027733948184595880435953384346723574731e-3), + SC_(0.46e2), SC_(0.177219114266335964202880859375e-2), SC_(0.9040394104538269827502763858866574379154e-199), + SC_(0.46e2), SC_(0.22177286446094512939453125e-2), SC_(0.2732047194656667119666757426400199586458e-194), + SC_(0.46e2), SC_(0.7444499991834163665771484375e-2), SC_(0.4257316737171282042400835165934703549258e-170), + SC_(0.46e2), SC_(0.1433600485324859619140625e-1), SC_(0.5252855754628379568905352359955531795544e-157), + SC_(0.46e2), SC_(0.1760916970670223236083984375e-1), SC_(0.6740455687930813305297333291280199789231e-153), + SC_(0.46e2), SC_(0.6152711808681488037109375e-1), SC_(0.6633691265009777819595520409458305226369e-128), + SC_(0.46e2), SC_(0.11958599090576171875e0), SC_(0.125303426149495589011380306130037125168e-114), + SC_(0.46e2), SC_(0.15262925624847412109375e0), SC_(0.937532932288203153989391220247481417114e-110), + SC_(0.46e2), SC_(0.408089816570281982421875e0), SC_(0.4159927057569031050063861406651463379403e-90), + SC_(0.46e2), SC_(0.6540834903717041015625e0), SC_(0.1103697915951208639745638619848387966328e-80), + SC_(0.46e2), SC_(0.1097540378570556640625e1), SC_(0.2405975820030826693648441346218826820867e-70), + SC_(0.46e2), SC_(0.30944411754608154296875e1), SC_(0.1173776299880355139751103170467745542721e-49), + SC_(0.46e2), SC_(0.51139926910400390625e1), SC_(0.1168965825562227495762644707320434058994e-39), + SC_(0.46e2), SC_(0.95070552825927734375e1), SC_(0.2028596251539445836931564425730981539088e-27), + SC_(0.46e2), SC_(0.24750102996826171875e2), SC_(0.1506307082149153247277810883442524835901e-9), + SC_(0.46e2), SC_(0.637722015380859375e2), SC_(0.9981390073397570470311862738222580946682e-3), + SC_(0.46e2), SC_(0.1252804412841796875e3), SC_(-0.7291170921230448995307745765159879879917e-2), + SC_(0.46e2), SC_(0.25554705810546875e3), SC_(-0.3240042995538310471851852251143813655283e-2), + SC_(0.46e2), SC_(0.503011474609375e3), SC_(-0.1180752496915180759015257303074531713751e-2), + SC_(0.46e2), SC_(0.10074598388671875e4), SC_(0.8112995649167475106523147339693999640721e-4), + SC_(0.46e2), SC_(0.1185395751953125e4), SC_(0.7908406619706603256943101136482675770749e-3), + SC_(0.49e2), SC_(0.177219114266335964202880859375e-2), SC_(0.5515546045969304722008600804322812862354e-213), + SC_(0.49e2), SC_(0.22177286446094512939453125e-2), SC_(0.326650164794020092365784924346435136517e-208), + SC_(0.49e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1925360407412391019857608682831977562776e-182), + SC_(0.49e2), SC_(0.1433600485324859619140625e-1), SC_(0.1696482510953376927277246087752612819038e-168), + SC_(0.49e2), SC_(0.1760916970670223236083984375e-1), SC_(0.4034367000095565704299813933456029116899e-164), + SC_(0.49e2), SC_(0.6152711808681488037109375e-1), SC_(0.1693655026076133877660970241165014704451e-137), + SC_(0.49e2), SC_(0.11958599090576171875e0), SC_(0.2348958117281878334841541282897547765415e-123), + SC_(0.49e2), SC_(0.15262925624847412109375e0), SC_(0.3654033502135831724309937917523935502668e-118), + SC_(0.49e2), SC_(0.408089816570281982421875e0), SC_(0.3099167637766167128925774129143043527408e-97), + SC_(0.49e2), SC_(0.6540834903717041015625e0), SC_(0.3385925104782587944340438218046569787901e-87), + SC_(0.49e2), SC_(0.1097540378570556640625e1), SC_(0.3488075239147121457577900092276265954556e-76), + SC_(0.49e2), SC_(0.30944411754608154296875e1), SC_(0.3823874600343831420393015688949984870929e-54), + SC_(0.49e2), SC_(0.51139926910400390625e1), SC_(0.1727893893654003330466257673489103445204e-43), + SC_(0.49e2), SC_(0.95070552825927734375e1), SC_(0.1966295052177707644956458594445543297349e-30), + SC_(0.49e2), SC_(0.24750102996826171875e2), SC_(0.3095382191507684987784237056495861811507e-11), + SC_(0.49e2), SC_(0.637722015380859375e2), SC_(0.158295373743556601533454490387052548217e-1), + SC_(0.49e2), SC_(0.1252804412841796875e3), SC_(0.82836746548166677824971194819851133652e-2), + SC_(0.49e2), SC_(0.25554705810546875e3), SC_(0.3644444755072188782636164173218495212912e-2), + SC_(0.49e2), SC_(0.503011474609375e3), SC_(0.1873650276195313552512971867889734167198e-2), + SC_(0.49e2), SC_(0.10074598388671875e4), SC_(0.96821173121543674370030596847704670817e-3), + SC_(0.49e2), SC_(0.1185395751953125e4), SC_(-0.3882928591259993124112306803057698639751e-3), + SC_(0.52e2), SC_(0.177219114266335964202880859375e-2), SC_(0.2810426956251312594726679498943253449939e-227), + SC_(0.52e2), SC_(0.22177286446094512939453125e-2), SC_(0.3261821586222305590688396082340930337197e-222), + SC_(0.52e2), SC_(0.7444499991834163665771484375e-2), SC_(0.7272282602335146322076473310722428705234e-195), + SC_(0.52e2), SC_(0.1433600485324859619140625e-1), SC_(0.4575999118312716040572653394509627667421e-180), + SC_(0.52e2), SC_(0.1760916970670223236083984375e-1), SC_(0.2016713378994708224486485028173988784384e-175), + SC_(0.52e2), SC_(0.6152711808681488037109375e-1), SC_(0.3611413640730227943802279701896849784546e-147), + SC_(0.52e2), SC_(0.11958599090576171875e0), SC_(0.3677646815864905481023738513580609303132e-132), + SC_(0.52e2), SC_(0.15262925624847412109375e0), SC_(0.1189435235193540319708552300693475643205e-126), + SC_(0.52e2), SC_(0.408089816570281982421875e0), SC_(0.1928344047619157510429385225938387716745e-104), + SC_(0.52e2), SC_(0.6540834903717041015625e0), SC_(0.8675221916812243553880316898424564367176e-94), + SC_(0.52e2), SC_(0.1097540378570556640625e1), SC_(0.4223229826495542762298450140014968626056e-82), + SC_(0.52e2), SC_(0.30944411754608154296875e1), SC_(0.104005992095441008419804771706791846708e-58), + SC_(0.52e2), SC_(0.51139926910400390625e1), SC_(0.2131148367399257759519412699653606504304e-47), + SC_(0.52e2), SC_(0.95070552825927734375e1), SC_(0.1586614197158476471413308754970129553623e-33), + SC_(0.52e2), SC_(0.24750102996826171875e2), SC_(0.5175370600854880940253656288662351415917e-13), + SC_(0.52e2), SC_(0.637722015380859375e2), SC_(-0.17532409288934115094263569459614392385e-1), + SC_(0.52e2), SC_(0.1252804412841796875e3), SC_(-0.81931089129677844005131776262320688731e-2), + SC_(0.52e2), SC_(0.25554705810546875e3), SC_(-0.8105943479828618683212783966808076515887e-3), + SC_(0.52e2), SC_(0.503011474609375e3), SC_(0.8559984069467296788733442052899950392641e-4), + SC_(0.52e2), SC_(0.10074598388671875e4), SC_(-0.3653807379369436466708861221542025660679e-3), + SC_(0.52e2), SC_(0.1185395751953125e4), SC_(-0.6931477169897557084753887842368702759482e-3), + SC_(0.55e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1208288753536924400989698078437356511703e-241), + SC_(0.55e2), SC_(0.22177286446094512939453125e-2), SC_(0.2748224243571374121394628637078216213795e-236), + SC_(0.55e2), SC_(0.7444499991834163665771484375e-2), SC_(0.2317629980513787136420907827650557993837e-207), + SC_(0.55e2), SC_(0.1433600485324859619140625e-1), SC_(0.104144686711366844962623177915396851023e-191), + SC_(0.55e2), SC_(0.1760916970670223236083984375e-1), SC_(0.8506043420003708373323912746376820821917e-187), + SC_(0.55e2), SC_(0.6152711808681488037109375e-1), SC_(0.6497467376347885988588920192401434832693e-157), + SC_(0.55e2), SC_(0.11958599090576171875e0), SC_(0.4858242908178906496481848927231899579715e-141), + SC_(0.55e2), SC_(0.15262925624847412109375e0), SC_(0.3266806562437370063677150237483657480669e-135), + SC_(0.55e2), SC_(0.408089816570281982421875e0), SC_(0.1012363516617469262510002411527525089154e-111), + SC_(0.55e2), SC_(0.6540834903717041015625e0), SC_(0.1875396080076928265201291332242100047049e-100), + SC_(0.55e2), SC_(0.1097540378570556640625e1), SC_(0.4314225131885992800618800784424280652408e-88), + SC_(0.55e2), SC_(0.30944411754608154296875e1), SC_(0.2386188946009811741115402149427915301942e-63), + SC_(0.55e2), SC_(0.51139926910400390625e1), SC_(0.2216092396198493700432387401826650688793e-51), + SC_(0.55e2), SC_(0.95070552825927734375e1), SC_(0.1077268775045601594715005289873066535698e-36), + SC_(0.55e2), SC_(0.24750102996826171875e2), SC_(0.7145924372118157260136350067139292902786e-15), + SC_(0.55e2), SC_(0.637722015380859375e2), SC_(-0.9639150724102627821461487026096968045471e-2), + SC_(0.55e2), SC_(0.1252804412841796875e3), SC_(0.7613679890890913165510416348925798112055e-2), + SC_(0.55e2), SC_(0.25554705810546875e3), SC_(-0.2628460166452094563254227164509714721701e-2), + SC_(0.55e2), SC_(0.503011474609375e3), SC_(-0.1916611872581451277353556345649407783691e-2), + SC_(0.55e2), SC_(0.10074598388671875e4), SC_(-0.8532381652732649330426131075577885254381e-3), + SC_(0.55e2), SC_(0.1185395751953125e4), SC_(0.5715720651795509548926590280953054477066e-3), + SC_(0.58e2), SC_(0.177219114266335964202880859375e-2), SC_(0.442323764221339251671141303318431108478e-256), + SC_(0.58e2), SC_(0.22177286446094512939453125e-2), SC_(0.1971583791626620727195469420538567193962e-250), + SC_(0.58e2), SC_(0.7444499991834163665771484375e-2), SC_(0.6289100883677515415757195488104887078879e-220), + SC_(0.58e2), SC_(0.1433600485324859619140625e-1), SC_(0.2018177733122065474623739428744794685423e-203), + SC_(0.58e2), SC_(0.1760916970670223236083984375e-1), SC_(0.3054795320059194548696602856000938647052e-198), + SC_(0.58e2), SC_(0.6152711808681488037109375e-1), SC_(0.9953642739298005551795428591931462815948e-167), + SC_(0.58e2), SC_(0.11958599090576171875e0), SC_(0.546461267246679212639001052047785879468e-150), + SC_(0.58e2), SC_(0.15262925624847412109375e0), SC_(0.7639710377234199236097520431614621507318e-144), + SC_(0.58e2), SC_(0.408089816570281982421875e0), SC_(0.4525408091084346067559391415753234146623e-119), + SC_(0.58e2), SC_(0.6540834903717041015625e0), SC_(0.3452008641978455477403610949257595865265e-107), + SC_(0.58e2), SC_(0.1097540378570556640625e1), SC_(0.3752484512573063001603693690152615718616e-94), + SC_(0.58e2), SC_(0.30944411754608154296875e1), SC_(0.4660345641388563178171531149615009184069e-68), + SC_(0.58e2), SC_(0.51139926910400390625e1), SC_(0.1960863006295924933138482025108297330693e-55), + SC_(0.58e2), SC_(0.95070552825927734375e1), SC_(0.6213624017861198159027984879634566021036e-40), + SC_(0.58e2), SC_(0.24750102996826171875e2), SC_(0.8252480997909935579863933179819188239925e-17), + SC_(0.58e2), SC_(0.637722015380859375e2), SC_(0.2016586308654754622690091357752537719812e-1), + SC_(0.58e2), SC_(0.1252804412841796875e3), SC_(-0.7017468118833063218312557452977246591573e-2), + SC_(0.58e2), SC_(0.25554705810546875e3), SC_(0.3961059662958721103739812991599937252217e-2), + SC_(0.58e2), SC_(0.503011474609375e3), SC_(0.1159722024061608331934095179228494399393e-2), + SC_(0.58e2), SC_(0.10074598388671875e4), SC_(0.6455961901963375666872388539662639143768e-3), + SC_(0.58e2), SC_(0.1185395751953125e4), SC_(0.5324640861533894098235525421246130031191e-3), + SC_(0.61e2), SC_(0.177219114266335964202880859375e-2), SC_(0.1390063099953273001760976643829493412235e-270), + SC_(0.61e2), SC_(0.22177286446094512939453125e-2), SC_(0.1214235746891325324123447717603508906882e-264), + SC_(0.61e2), SC_(0.7444499991834163665771484375e-2), SC_(0.1465067803501878545612089003565516614999e-232), + SC_(0.61e2), SC_(0.1433600485324859619140625e-1), SC_(0.3357425642907951097269617118707813745614e-215), + SC_(0.61e2), SC_(0.1760916970670223236083984375e-1), SC_(0.9418057496533460392723945550704596626117e-210), + SC_(0.61e2), SC_(0.6152711808681488037109375e-1), SC_(0.1309015102638367959763911559061398598334e-176), + SC_(0.61e2), SC_(0.11958599090576171875e0), SC_(0.5276720779633476596305457037624920158493e-159), + SC_(0.61e2), SC_(0.15262925624847412109375e0), SC_(0.1533750989168073201676611877485582641816e-152), + SC_(0.61e2), SC_(0.408089816570281982421875e0), SC_(0.1736609472559701112844257684577329098627e-126), + SC_(0.61e2), SC_(0.6540834903717041015625e0), SC_(0.5454707501690087691332936974401497393552e-114), + SC_(0.61e2), SC_(0.1097540378570556640625e1), SC_(0.2801873396633198777831566955045782029762e-100), + SC_(0.61e2), SC_(0.30944411754608154296875e1), SC_(0.7812083655684529175645698522139037522772e-73), + SC_(0.61e2), SC_(0.51139926910400390625e1), SC_(0.1488629979362386514563024050166990786373e-59), + SC_(0.61e2), SC_(0.95070552825927734375e1), SC_(0.3070674775920232104372515582146972644154e-43), + SC_(0.61e2), SC_(0.24750102996826171875e2), SC_(0.8059317390853095912429339684297296887014e-19), + SC_(0.61e2), SC_(0.637722015380859375e2), SC_(0.2553438361299694660955712647272386491838e-1), + SC_(0.61e2), SC_(0.1252804412841796875e3), SC_(0.6702527215895999645298014803289940554868e-2), + SC_(0.61e2), SC_(0.25554705810546875e3), SC_(-0.2435818794268515565710215283462154963534e-2), + SC_(0.61e2), SC_(0.503011474609375e3), SC_(0.1113025090458558853547625070047439913018e-2), + SC_(0.61e2), SC_(0.10074598388671875e4), SC_(0.6282813469515595099026690750450965536512e-3), + SC_(0.61e2), SC_(0.1185395751953125e4), SC_(-0.7280704607550679547528319738669934801603e-3) + }; +#undef SC_ + + diff --git a/test/sph_neumann_data.ipp b/test/sph_neumann_data.ipp new file mode 100644 index 000000000..da3467ef6 --- /dev/null +++ b/test/sph_neumann_data.ipp @@ -0,0 +1,295 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 284> sph_neumann_data = { + SC_(0), SC_(0.177219114266335964202880859375e-2), SC_(-0.5642723324792311990959765396871018960216e3), + SC_(0), SC_(0.22177286446094512939453125e-2), SC_(-0.4509106843488238999473616173421364998283e3), + SC_(0), SC_(0.7444499991834163665771484375e-2), SC_(-0.1343236336805396008478682587573788632696e3), + SC_(0), SC_(0.1433600485324859619140625e-1), SC_(-0.6974727279167912880150678975872617495088e2), + SC_(0), SC_(0.1760916970670223236083984375e-1), SC_(-0.5677979025875563956840873378239183466216e2), + SC_(0), SC_(0.6152711808681488037109375e-1), SC_(-0.1622224207701819661207370690041340570512e2), + SC_(0), SC_(0.11958599090576171875e0), SC_(-0.8302461728079151325461513362583139756373e1), + SC_(0), SC_(0.15262925624847412109375e0), SC_(-0.6475657248546134771634572625845233177042e1), + SC_(0), SC_(0.408089816570281982421875e0), SC_(-0.2249212131304610409189209411089291558038e1), + SC_(0), SC_(0.6540834903717041015625e0), SC_(-0.1213309779166084571756446746977955970241e1), + SC_(0), SC_(0.1097540378570556640625e1), SC_(-0.4152801926629981090971418551680239835571e0), + SC_(0), SC_(0.30944411754608154296875e1), SC_(0.3228009577028088632835185600650872623482e0), + SC_(0), SC_(0.51139926910400390625e1), SC_(-0.7643635410754817824148236191571837220126e-1), + SC_(0), SC_(0.95070552825927734375e1), SC_(0.1048292137319730265210439388887370801248e0), + SC_(0), SC_(0.24750102996826171875e2), SC_(-0.3748197858988794731118470575529801883541e-1), + SC_(0), SC_(0.637722015380859375e2), SC_(-0.9243942787530241818116046978138604629927e-2), + SC_(0), SC_(0.1252804412841796875e3), SC_(-0.7402980669441766401839846974565600278467e-2), + SC_(0), SC_(0.25554705810546875e3), SC_(0.1851105232770496300381256908203514858216e-2), + SC_(0), SC_(0.503011474609375e3), SC_(-0.1862923061767209624572519967199174532136e-2), + SC_(0), SC_(0.10074598388671875e4), SC_(0.5434622896619636174822759159195129760936e-3), + SC_(0), SC_(0.1185395751953125e4), SC_(0.4448697855794123235553917677921400676563e-3), + SC_(0.1e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.318404765200112567469157464785027433823e6), + SC_(0.1e1), SC_(0.22177286446094512939453125e-2), SC_(-0.2033219452576704738500460434959917636461e6), + SC_(0.1e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.1804433853974285124747494278925454917131e5), + SC_(0.1e1), SC_(0.1433600485324859619140625e-1), SC_(-0.486618196768193316259977336624918918276e4), + SC_(0.1e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.322544443971191302525452896173067683304e4), + SC_(0.1e1), SC_(0.6152711808681488037109375e-1), SC_(-0.2646594036812657100698306327292119166165e3), + SC_(0.1e1), SC_(0.11958599090576171875e0), SC_(-0.704243267085761836707775439192578042573e2), + SC_(0.1e1), SC_(0.15262925624847412109375e0), SC_(-0.434234874553672313920027034930149194407e2), + SC_(0.1e1), SC_(0.408089816570281982421875e0), SC_(-0.6484035515444221775976367630376209298567e1), + SC_(0.1e1), SC_(0.6540834903717041015625e0), SC_(-0.2785182560801830440325676905703325489184e1), + SC_(0.1e1), SC_(0.1097540378570556640625e1), SC_(-0.1189358686761883310370162855037394165611e1), + SC_(0.1e1), SC_(0.30944411754608154296875e1), SC_(0.8908456605946127242501038405190438284591e-1), + SC_(0.1e1), SC_(0.51139926910400390625e1), SC_(0.1650371817824980920597277760628969935339e0), + SC_(0.1e1), SC_(0.95070552825927734375e1), SC_(0.1967104757813801271824802511806652238075e-1), + SC_(0.1e1), SC_(0.24750102996826171875e2), SC_(0.1357114472738293735380837736920673513642e-1), + SC_(0.1e1), SC_(0.637722015380859375e2), SC_(-0.1281134249246794610073876109037108992935e-1), + SC_(0.1e1), SC_(0.1252804412841796875e3), SC_(0.2925815571849156117920315547136950241325e-2), + SC_(0.1e1), SC_(0.25554705810546875e3), SC_(0.3454900436576811073075917245701360162869e-2), + SC_(0.1e1), SC_(0.503011474609375e3), SC_(-0.6977971312135198156036217479682334535885e-3), + SC_(0.1e1), SC_(0.10074598388671875e4), SC_(-0.830059360518605915833351761559017133065e-3), + SC_(0.1e1), SC_(0.1185395751953125e4), SC_(0.7171402734520886334015615434326112966186e-3), + SC_(0.2e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.5390012807345113883197792587292120542031e9), + SC_(0.2e1), SC_(0.22177286446094512939453125e-2), SC_(-0.2750403378962024584351226505492891996551e9), + SC_(0.2e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.7271410532113085385774156481477356217156e7), + SC_(0.2e1), SC_(0.1433600485324859619140625e-1), SC_(-0.1018243656809079180564791631983824027866e7), + SC_(0.2e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.5494485904403902454288040447187085252735e6), + SC_(0.2e1), SC_(0.6152711808681488037109375e-1), SC_(-0.1288830239246692985269728537863836376468e5), + SC_(0.2e1), SC_(0.11958599090576171875e0), SC_(-0.1758400966704601107905829221340068593333e4), + SC_(0.2e1), SC_(0.15262925624847412109375e0), SC_(-0.8470334639256196191828910705235499636086e3), + SC_(0.2e1), SC_(0.408089816570281982421875e0), SC_(-0.4541702641837159203058389758895634766256e2), + SC_(0.2e1), SC_(0.6540834903717041015625e0), SC_(-0.1156112621471167110574129561700037138981e2), + SC_(0.2e1), SC_(0.1097540378570556640625e1), SC_(-0.2835694559566832562081631532476610393593e1), + SC_(0.2e1), SC_(0.30944411754608154296875e1), SC_(-0.2364352189394648962564115002206693193264e0), + SC_(0.2e1), SC_(0.51139926910400390625e1), SC_(0.1732514211714791641487261827982664865146e0), + SC_(0.2e1), SC_(0.95070552825927734375e1), SC_(-0.9862191389198304425904745146753435952401e-1), + SC_(0.2e1), SC_(0.24750102996826171875e2), SC_(0.3912695898400467874867999209317768037635e-1), + SC_(0.2e1), SC_(0.637722015380859375e2), SC_(0.8641265969881876225898539254984860529714e-2), + SC_(0.2e1), SC_(0.1252804412841796875e3), SC_(0.7473043056080692435099953164437164248053e-2), + SC_(0.2e1), SC_(0.25554705810546875e3), SC_(-0.1810546357287559849120539213331049290221e-2), + SC_(0.2e1), SC_(0.503011474609375e3), SC_(0.1858761344789945377984398470433340989203e-2), + SC_(0.2e1), SC_(0.10074598388671875e4), SC_(-0.5459340289665852636696979017491079500449e-3), + SC_(0.2e1), SC_(0.1185395751953125e4), SC_(-0.4430548467146395559544067187824537160368e-3), + SC_(0.4e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.6006708939031862782547423129663205631395e16), + SC_(0.4e1), SC_(0.22177286446094512939453125e-2), SC_(-0.1957255048386226906846149698887287471033e16), + SC_(0.4e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.4592121279331724272683855783141568753333e13), + SC_(0.4e1), SC_(0.1433600485324859619140625e-1), SC_(-0.173402349594767269025145292017473455282e12), + SC_(0.4e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.6201611030027830575236750989101389849364e11), + SC_(0.4e1), SC_(0.6152711808681488037109375e-1), SC_(-0.1191170341565551054056618133292811190739e9), + SC_(0.4e1), SC_(0.11958599090576171875e0), SC_(-0.4297654348662493392476039106116454381053e7), + SC_(0.4e1), SC_(0.15262925624847412109375e0), SC_(-0.1269764721301016237085922161946420176713e7), + SC_(0.4e1), SC_(0.408089816570281982421875e0), SC_(-0.938834620739078580225698168692023203448e4), + SC_(0.4e1), SC_(0.6540834903717041015625e0), SC_(-0.9044373064697326637009564699789610374151e3), + SC_(0.4e1), SC_(0.1097540378570556640625e1), SC_(-0.7197096999109657262465719753479013842004e2), + SC_(0.4e1), SC_(0.30944411754608154296875e1), SC_(-0.8292878001802161021682270451154977977337e0), + SC_(0.4e1), SC_(0.51139926910400390625e1), SC_(-0.1672938782320394591130634026396133319056e0), + SC_(0.4e1), SC_(0.95070552825927734375e1), SC_(0.4594823416227780746480571313224025888457e-1), + SC_(0.4e1), SC_(0.24750102996826171875e2), SC_(-0.4072966707158819427744567215857101892826e-1), + SC_(0.4e1), SC_(0.637722015380859375e2), SC_(-0.7160652662228105175773913698625518194443e-2), + SC_(0.4e1), SC_(0.1252804412841796875e3), SC_(-0.7619857201446145509948734118435483624086e-2), + SC_(0.4e1), SC_(0.25554705810546875e3), SC_(0.1714938614376801147928666041967663272554e-2), + SC_(0.4e1), SC_(0.503011474609375e3), SC_(-0.1848793551823628970369126596953626884517e-2), + SC_(0.4e1), SC_(0.10074598388671875e4), SC_(0.5516825949084002964790973918927589969002e-3), + SC_(0.4e1), SC_(0.1185395751953125e4), SC_(0.4388089536910184022488035482968780382212e-3), + SC_(0.7e1), SC_(0.177219114266335964202880859375e-2), SC_(-0.1388939744137340433522522155157803129493e28), + SC_(0.7e1), SC_(0.22177286446094512939453125e-2), SC_(-0.2309408077963500230051756342440986301973e27), + SC_(0.7e1), SC_(0.7444499991834163665771484375e-2), SC_(-0.1432466589853457118157199163927226239105e23), + SC_(0.7e1), SC_(0.1433600485324859619140625e-1), SC_(-0.7574363861874272531180922496759086862498e20), + SC_(0.7e1), SC_(0.1760916970670223236083984375e-1), SC_(-0.1461712611084380044913310721560950112306e20), + SC_(0.7e1), SC_(0.6152711808681488037109375e-1), SC_(-0.6581100049139522866420337381107024877831e15), + SC_(0.7e1), SC_(0.11958599090576171875e0), SC_(-0.3232691649492879334595332596749659857755e13), + SC_(0.7e1), SC_(0.15262925624847412109375e0), SC_(-0.4592558497626386579457472880231329928345e12), + SC_(0.7e1), SC_(0.408089816570281982421875e0), SC_(-0.1768093332349639873943590983950796618094e9), + SC_(0.7e1), SC_(0.6540834903717041015625e0), SC_(-0.410071253550436848907977153943779570177e7), + SC_(0.7e1), SC_(0.1097540378570556640625e1), SC_(-0.6723738931189786892469511427815554534622e5), + SC_(0.7e1), SC_(0.30944411754608154296875e1), SC_(-0.2355914723945007502048313939035727585535e2), + SC_(0.7e1), SC_(0.51139926910400390625e1), SC_(-0.9095841466009625950437779235402980858269e0), + SC_(0.7e1), SC_(0.95070552825927734375e1), SC_(0.4137038128161563987674845255425727782835e-2), + SC_(0.7e1), SC_(0.24750102996826171875e2), SC_(0.2840265140460042677367989989206316229572e-1), + SC_(0.7e1), SC_(0.637722015380859375e2), SC_(0.1544929171899375325706484638266664284005e-1), + SC_(0.7e1), SC_(0.1252804412841796875e3), SC_(-0.1270517672039039606712892170401020621663e-2), + SC_(0.7e1), SC_(0.25554705810546875e3), SC_(-0.3630188911697934815681636175552688093357e-2), + SC_(0.7e1), SC_(0.503011474609375e3), SC_(0.7967098511734288574306139155656730858314e-3), + SC_(0.7e1), SC_(0.10074598388671875e4), SC_(0.815186884113040002201698678223896056766e-3), + SC_(0.7e1), SC_(0.1185395751953125e4), SC_(-0.7270795125271877654141198243699517038649e-3), + SC_(0.1e2), SC_(0.1433600485324859619140625e-1), SC_(-0.1245530719806351448480124937794738961635e30), + SC_(0.1e2), SC_(0.1760916970670223236083984375e-1), SC_(-0.1296992613685647077229845683943181048821e29), + SC_(0.1e2), SC_(0.6152711808681488037109375e-1), SC_(-0.1368902717654920136735378996175836140785e23), + SC_(0.1e2), SC_(0.11958599090576171875e0), SC_(-0.9156757241161448651951539042135995904994e19), + SC_(0.1e2), SC_(0.15262925624847412109375e0), SC_(-0.6256222869032686140322813275452916410343e18), + SC_(0.1e2), SC_(0.408089816570281982421875e0), SC_(-0.1257917349261965601916962527396933303977e14), + SC_(0.1e2), SC_(0.6540834903717041015625e0), SC_(-0.7063002197882333005631618484528652399524e11), + SC_(0.1e2), SC_(0.1097540378570556640625e1), SC_(-0.2427889658115064857278886600528596240123e9), + SC_(0.1e2), SC_(0.30944411754608154296875e1), SC_(-0.3394649246350136450439882104151313759251e4), + SC_(0.1e2), SC_(0.51139926910400390625e1), SC_(-0.2150737348962304792352416315737126587418e2), + SC_(0.1e2), SC_(0.95070552825927734375e1), SC_(-0.2157691001768484850020828031987882855639e0), + SC_(0.1e2), SC_(0.24750102996826171875e2), SC_(-0.1260876938605482558721300295302574251533e-1), + SC_(0.1e2), SC_(0.637722015380859375e2), SC_(-0.3658561196157287230123135947541224109443e-2), + SC_(0.1e2), SC_(0.1252804412841796875e3), SC_(0.7983606267849351237703135831852105823276e-2), + SC_(0.1e2), SC_(0.25554705810546875e3), SC_(-0.1072436715227848668749084256488184819454e-2), + SC_(0.1e2), SC_(0.503011474609375e3), SC_(0.1776245695123382255186007833872594145979e-2), + SC_(0.1e2), SC_(0.10074598388671875e4), SC_(-0.5879910859563235660929418753761246514854e-3), + SC_(0.1e2), SC_(0.1185395751953125e4), SC_(-0.411154319810368570839418603704906353283e-3), + SC_(0.13e2), SC_(0.6152711808681488037109375e-1), SC_(-0.7096588472433714153042022789489333121863e30), + SC_(0.13e2), SC_(0.11958599090576171875e0), SC_(-0.6464704713743915427301824299819781954859e26), + SC_(0.13e2), SC_(0.15262925624847412109375e0), SC_(-0.2124330495066614710929484795599742959654e25), + SC_(0.13e2), SC_(0.408089816570281982421875e0), SC_(-0.2232620432299327594678167214732483417736e19), + SC_(0.13e2), SC_(0.6540834903717041015625e0), SC_(-0.3039495964028968670551250826703930725596e16), + SC_(0.13e2), SC_(0.1097540378570556640625e1), SC_(-0.2200572297449479637006380190194549845276e13), + SC_(0.13e2), SC_(0.30944411754608154296875e1), SC_(-0.1299211572249285551909779637874602972508e7), + SC_(0.13e2), SC_(0.51139926910400390625e1), SC_(-0.1614426118247726564069541604511986952086e4), + SC_(0.13e2), SC_(0.95070552825927734375e1), SC_(-0.1192876773324610978227972311096425254541e1), + SC_(0.13e2), SC_(0.24750102996826171875e2), SC_(0.1083090330001395226011081713405820116194e-1), + SC_(0.13e2), SC_(0.637722015380859375e2), SC_(-0.1103112564518912696072370568742481339126e-1), + SC_(0.13e2), SC_(0.1252804412841796875e3), SC_(-0.2698254042376059943851702235540482168386e-2), + SC_(0.13e2), SC_(0.25554705810546875e3), SC_(0.3879446011377107269956022967187011973557e-2), + SC_(0.13e2), SC_(0.503011474609375e3), SC_(-0.1018154003350369531009009098099277689641e-2), + SC_(0.13e2), SC_(0.10074598388671875e4), SC_(-0.7782246846650067854491204003191128582844e-3), + SC_(0.13e2), SC_(0.1185395751953125e4), SC_(0.7487965903672491559847491642545850030768e-3), + SC_(0.16e2), SC_(0.408089816570281982421875e0), SC_(-0.7968764716391730011103329636034855328962e24), + SC_(0.16e2), SC_(0.6540834903717041015625e0), SC_(-0.2632119245040565674510100654677927787303e21), + SC_(0.16e2), SC_(0.1097540378570556640625e1), SC_(-0.4021306302655656019280730356166023954594e17), + SC_(0.16e2), SC_(0.30944411754608154296875e1), SC_(-0.1024734904321332361176888712960645982827e10), + SC_(0.16e2), SC_(0.51139926910400390625e1), SC_(-0.263104548681619029365595821516581062838e6), + SC_(0.16e2), SC_(0.95070552825927734375e1), SC_(-0.212434709466762829773238681303207117582e2), + SC_(0.16e2), SC_(0.24750102996826171875e2), SC_(-0.2743563165647313690782258876808431412109e-1), + SC_(0.16e2), SC_(0.637722015380859375e2), SC_(0.1592868538765449864728958003322337214849e-1), + SC_(0.16e2), SC_(0.1252804412841796875e3), SC_(-0.611189995982529806498215807361518117186e-2), + SC_(0.16e2), SC_(0.25554705810546875e3), SC_(-0.1551975946286214383853261368195650834803e-3), + SC_(0.16e2), SC_(0.503011474609375e3), SC_(-0.1610266445943186662771155287434094951638e-2), + SC_(0.16e2), SC_(0.10074598388671875e4), SC_(0.650348574795961322341087383056013722587e-3), + SC_(0.16e2), SC_(0.1185395751953125e4), SC_(0.3599072645317034685633234775339363892989e-3), + SC_(0.19e2), SC_(0.408089816570281982421875e0), SC_(-0.5008621620829854006954623536723536260922e30), + SC_(0.19e2), SC_(0.6540834903717041015625e0), SC_(-0.4015165392251303629512256297488777013034e26), + SC_(0.19e2), SC_(0.1097540378570556640625e1), SC_(-0.1295742383468043411565809880265553984875e22), + SC_(0.19e2), SC_(0.30944411754608154296875e1), SC_(-0.1440850060936814966263451261627483470922e13), + SC_(0.19e2), SC_(0.51139926910400390625e1), SC_(-0.7829560726823223330394765378802240654337e8), + SC_(0.19e2), SC_(0.95070552825927734375e1), SC_(-0.8017774502788714016096257024597920080947e3), + SC_(0.19e2), SC_(0.24750102996826171875e2), SC_(0.5104725068940265807623171340563537419839e-1), + SC_(0.19e2), SC_(0.637722015380859375e2), SC_(-0.1154540926504216331530538721227045039394e-1), + SC_(0.19e2), SC_(0.1252804412841796875e3), SC_(0.7285128790438104181486799657416599622562e-2), + SC_(0.19e2), SC_(0.25554705810546875e3), SC_(-0.3795974512769646959066511811760180003581e-2), + SC_(0.19e2), SC_(0.503011474609375e3), SC_(0.1332792253280798715550694041485478947804e-2), + SC_(0.19e2), SC_(0.10074598388671875e4), SC_(0.7140475084390964023422450272059931346758e-3), + SC_(0.19e2), SC_(0.1185395751953125e4), SC_(-0.778631877582065133128398725986021189756e-3), + SC_(0.22e2), SC_(0.1097540378570556640625e1), SC_(-0.6723360495833044373602236204563863321495e26), + SC_(0.22e2), SC_(0.30944411754608154296875e1), SC_(-0.3282992248392472051808450625423987455518e16), + SC_(0.22e2), SC_(0.51139926910400390625e1), SC_(-0.3826147075920552238475280662776521115203e11), + SC_(0.22e2), SC_(0.95070552825927734375e1), SC_(-0.5311187095528196500675385994412924026797e5), + SC_(0.22e2), SC_(0.24750102996826171875e2), SC_(-0.1306396947235207229685397581368310264004e-1), + SC_(0.22e2), SC_(0.637722015380859375e2), SC_(0.3811910734895598722091331392361204163648e-2), + SC_(0.22e2), SC_(0.1252804412841796875e3), SC_(-0.5694609931721205895231828943722573661955e-3), + SC_(0.22e2), SC_(0.25554705810546875e3), SC_(0.1872575932276900334277205173009240761345e-2), + SC_(0.22e2), SC_(0.503011474609375e3), SC_(0.1298158890481958119897857861962977581478e-2), + SC_(0.22e2), SC_(0.10074598388671875e4), SC_(-0.7329138049351166151988684874280432719372e-3), + SC_(0.22e2), SC_(0.1185395751953125e4), SC_(-0.2829751774429469196812768758194950064622e-3), + SC_(0.25e2), SC_(0.30944411754608154296875e1), SC_(-0.1132569536096268337562080171402201939034e20), + SC_(0.25e2), SC_(0.51139926910400390625e1), SC_(-0.2854197487832370443625499582893796948668e14), + SC_(0.25e2), SC_(0.95070552825927734375e1), SC_(-0.557640638109575874026675246942198134901e7), + SC_(0.25e2), SC_(0.24750102996826171875e2), SC_(-0.8289220371234890898107740191499805665166e-1), + SC_(0.25e2), SC_(0.637722015380859375e2), SC_(0.2867466802758145719509918727955672959562e-2), + SC_(0.25e2), SC_(0.1252804412841796875e3), SC_(-0.6426359266478851874122389488976604772913e-2), + SC_(0.25e2), SC_(0.25554705810546875e3), SC_(0.2788655268268470964688490819519378700901e-2), + SC_(0.25e2), SC_(0.503011474609375e3), SC_(-0.1677047836678118060016484817598253328862e-2), + SC_(0.25e2), SC_(0.10074598388671875e4), SC_(-0.6155464006245052959192750335825837759874e-3), + SC_(0.25e2), SC_(0.1185395751953125e4), SC_(0.8105378192860076835295337545544333320285e-3), + SC_(0.28e2), SC_(0.30944411754608154296875e1), SC_(-0.5621747105301521557947179246637760022417e23), + SC_(0.28e2), SC_(0.51139926910400390625e1), SC_(-0.3080131695608097771147596640961172595909e17), + SC_(0.28e2), SC_(0.95070552825927734375e1), SC_(-0.8673370399593050580914898499273415127644e9), + SC_(0.28e2), SC_(0.24750102996826171875e2), SC_(-0.2256097627150219672124131497323287189991e0), + SC_(0.28e2), SC_(0.637722015380859375e2), SC_(-0.6991956238153252791738685651136169064703e-2), + SC_(0.28e2), SC_(0.1252804412841796875e3), SC_(0.7795645183045974969575002412572072101911e-2), + SC_(0.28e2), SC_(0.25554705810546875e3), SC_(-0.3494172391974151981967644744599232334284e-2), + SC_(0.28e2), SC_(0.503011474609375e3), SC_(-0.7872272246020384880492778519333779147176e-3), + SC_(0.28e2), SC_(0.10074598388671875e4), SC_(0.825845271938107790489284932094733926616e-3), + SC_(0.28e2), SC_(0.1185395751953125e4), SC_(0.1783213113986488862036590535806820370025e-3), + SC_(0.31e2), SC_(0.30944411754608154296875e1), SC_(-0.3858743092234085837491563707437405089502e27), + SC_(0.31e2), SC_(0.51139926910400390625e1), SC_(-0.4613835194622917257572168439667276505091e20), + SC_(0.31e2), SC_(0.95070552825927734375e1), SC_(-0.1902866311295072781213762448066992585084e12), + SC_(0.31e2), SC_(0.24750102996826171875e2), SC_(-0.1242902083875520340476461862360617369865e1), + SC_(0.31e2), SC_(0.637722015380859375e2), SC_(0.8602616475850209207115672961665438799578e-2), + SC_(0.31e2), SC_(0.1252804412841796875e3), SC_(-0.3568328873757026723718279708146103263332e-2), + SC_(0.31e2), SC_(0.25554705810546875e3), SC_(-0.4708447548154973984774979548889890332232e-3), + SC_(0.31e2), SC_(0.503011474609375e3), SC_(0.1938585486734996435913653188875075463759e-2), + SC_(0.31e2), SC_(0.10074598388671875e4), SC_(0.4751515606683130102889789705916848210342e-3), + SC_(0.31e2), SC_(0.1185395751953125e4), SC_(-0.8358404490289695691960973315323391126047e-3), + SC_(0.34e2), SC_(0.51139926910400390625e1), SC_(-0.9282996603826470817559175093201479899353e23), + SC_(0.34e2), SC_(0.95070552825927734375e1), SC_(-0.5671896870965902667567112773375443299376e14), + SC_(0.34e2), SC_(0.24750102996826171875e2), SC_(-0.1196836896972653347610997098886066849879e2), + SC_(0.34e2), SC_(0.637722015380859375e2), SC_(-0.7840611740006562731867360753764337981193e-2), + SC_(0.34e2), SC_(0.1252804412841796875e3), SC_(-0.2528119461363815663298862242098595394995e-2), + SC_(0.34e2), SC_(0.25554705810546875e3), SC_(0.3790521728300347929686504759069995348496e-2), + SC_(0.34e2), SC_(0.503011474609375e3), SC_(0.6131119580874945273384687636612133212937e-4), + SC_(0.34e2), SC_(0.10074598388671875e4), SC_(-0.9142183498980430984586827864611642159497e-3), + SC_(0.34e2), SC_(0.1185395751953125e4), SC_(-0.4511848776391923835124583337569697441159e-4), + SC_(0.37e2), SC_(0.51139926910400390625e1), SC_(-0.2442375728698405242925453667580696210245e27), + SC_(0.37e2), SC_(0.95070552825927734375e1), SC_(-0.2229542216375343293897440256273780674204e17), + SC_(0.37e2), SC_(0.24750102996826171875e2), SC_(-0.1737444169853745325867053393033933403419e3), + SC_(0.37e2), SC_(0.637722015380859375e2), SC_(0.4279824575041896675727883899347662880186e-2), + SC_(0.37e2), SC_(0.1252804412841796875e3), SC_(0.6929401282911254411240566948180148883389e-2), + SC_(0.37e2), SC_(0.25554705810546875e3), SC_(-0.2511648418349492118440212332844329555998e-2), + SC_(0.37e2), SC_(0.503011474609375e3), SC_(-0.1957162644941089839867703502493036932186e-2), + SC_(0.37e2), SC_(0.10074598388671875e4), SC_(-0.2872884073535241094708945526011230038645e-3), + SC_(0.37e2), SC_(0.1185395751953125e4), SC_(0.8432140708713275871141861113932655356805e-3), + SC_(0.4e2), SC_(0.95070552825927734375e1), SC_(-0.1128026063781401159493204975300213163583e20), + SC_(0.4e2), SC_(0.24750102996826171875e2), SC_(-0.3536320450284364302528532664762113675546e4), + SC_(0.4e2), SC_(0.637722015380859375e2), SC_(0.2749332472515275038091640131810993326854e-2), + SC_(0.4e2), SC_(0.1252804412841796875e3), SC_(-0.8189335561734438098491340276810366230728e-2), + SC_(0.4e2), SC_(0.25554705810546875e3), SC_(-0.1601472101873495352874904527747422350107e-2), + SC_(0.4e2), SC_(0.503011474609375e3), SC_(0.8063429370382054903944011477925178824483e-3), + SC_(0.4e2), SC_(0.10074598388671875e4), SC_(0.9774185681131416958979641163273033546007e-3), + SC_(0.4e2), SC_(0.1185395751953125e4), SC_(-0.1146975806174666671253112473359257996345e-3), + SC_(0.43e2), SC_(0.95070552825927734375e1), SC_(-0.7198591295447037635860529334856057232135e22), + SC_(0.43e2), SC_(0.24750102996826171875e2), SC_(-0.9641200720117521887788006798691601480704e5), + SC_(0.43e2), SC_(0.637722015380859375e2), SC_(-0.1236200080963258936021132338688942409822e-1), + SC_(0.43e2), SC_(0.1252804412841796875e3), SC_(0.6766741286829961971926652018652618379149e-2), + SC_(0.43e2), SC_(0.25554705810546875e3), SC_(0.3930507468976728535272404195834679836265e-2), + SC_(0.43e2), SC_(0.503011474609375e3), SC_(0.1564028674659955458649814316707562782221e-2), + SC_(0.43e2), SC_(0.10074598388671875e4), SC_(0.5187580633057582060435802616437238457919e-4), + SC_(0.43e2), SC_(0.1185395751953125e4), SC_(-0.8191603697467604740041636746614045025268e-3), + SC_(0.46e2), SC_(0.95070552825927734375e1), SC_(-0.5695769033255529210361047038599776733494e25), + SC_(0.46e2), SC_(0.24750102996826171875e2), SC_(-0.3407542572880364861061570256982516465991e7), + SC_(0.46e2), SC_(0.637722015380859375e2), SC_(0.1892031070374081055519173538522022424373e-1), + SC_(0.46e2), SC_(0.1252804412841796875e3), SC_(-0.3930999501654252080115547096167591365109e-2), + SC_(0.46e2), SC_(0.25554705810546875e3), SC_(-0.2252774787151350219685297262688267474083e-2), + SC_(0.46e2), SC_(0.503011474609375e3), SC_(-0.160470127490624290303361714195055152753e-2), + SC_(0.46e2), SC_(0.10074598388671875e4), SC_(-0.9898053187382996942921915807261270222834e-3), + SC_(0.46e2), SC_(0.1185395751953125e4), SC_(0.2945850112272429804450537869110995190276e-3), + SC_(0.49e2), SC_(0.95070552825927734375e1), SC_(-0.5505988900115077682063953616131381316684e28), + SC_(0.49e2), SC_(0.24750102996826171875e2), SC_(-0.1522647860770080599776352342021496844231e9), + SC_(0.49e2), SC_(0.637722015380859375e2), SC_(-0.117811227613905121473227334683521728565e-1), + SC_(0.49e2), SC_(0.1252804412841796875e3), SC_(0.8581798088552142472627658285170409572199e-3), + SC_(0.49e2), SC_(0.25554705810546875e3), SC_(-0.1525297082577234374630319883497973286237e-2), + SC_(0.49e2), SC_(0.503011474609375e3), SC_(-0.6789386510763052793814186176994423811279e-3), + SC_(0.49e2), SC_(0.10074598388671875e4), SC_(0.2213660813860061497235236488103940641175e-3), + SC_(0.49e2), SC_(0.1185395751953125e4), SC_(0.7493404081650790642056171825780752281226e-3), + SC_(0.52e2), SC_(0.24750102996826171875e2), SC_(-0.8431613692546440958427835805924554720791e10), + SC_(0.52e2), SC_(0.637722015380859375e2), SC_(-0.1115225300535010626455229302801432083119e-1), + SC_(0.52e2), SC_(0.1252804412841796875e3), SC_(0.1744660661299516008597246745970354205394e-2), + SC_(0.52e2), SC_(0.25554705810546875e3), SC_(0.3871637644673301315119914349891630279192e-2), + SC_(0.52e2), SC_(0.503011474609375e3), SC_(0.1991638261007561367287975226510189975247e-2), + SC_(0.52e2), SC_(0.10074598388671875e4), SC_(0.9236248731028976631695212457160479065712e-3), + SC_(0.52e2), SC_(0.1185395751953125e4), SC_(-0.4815665463345610915674607850479789186718e-3), + SC_(0.55e2), SC_(0.24750102996826171875e2), SC_(-0.5691393603639469399255323205962188964084e12), + SC_(0.55e2), SC_(0.637722015380859375e2), SC_(0.2006392327938634300862385080463293572511e-1), + SC_(0.55e2), SC_(0.1252804412841796875e3), SC_(-0.3619108023378490361858076559653708839139e-2), + SC_(0.55e2), SC_(0.25554705810546875e3), SC_(-0.2962856754548850012378937612844037689574e-2), + SC_(0.55e2), SC_(0.503011474609375e3), SC_(-0.5505670779964820186689463080699492719812e-3), + SC_(0.55e2), SC_(0.10074598388671875e4), SC_(-0.5086536723538768197623992809520331865266e-3), + SC_(0.55e2), SC_(0.1185395751953125e4), SC_(-0.6210859629328079732529943111160023713285e-3), + SC_(0.58e2), SC_(0.24750102996826171875e2), SC_(-0.4618503933439028301329509946039169091138e14), + SC_(0.58e2), SC_(0.637722015380859375e2), SC_(0.1402558269735743898212790386772249256841e-1), + SC_(0.58e2), SC_(0.1252804412841796875e3), SC_(0.4775384619486356255055098430929380737203e-2), + SC_(0.58e2), SC_(0.25554705810546875e3), SC_(-0.2015373395162996137089683702058573806025e-3), + SC_(0.58e2), SC_(0.503011474609375e3), SC_(-0.1623050637742511470123447378958753891598e-2), + SC_(0.58e2), SC_(0.10074598388671875e4), SC_(-0.7550604452502297124697636692423906683648e-3), + SC_(0.58e2), SC_(0.1185395751953125e4), SC_(0.6549895436356671365157678660370603606525e-3), + SC_(0.61e2), SC_(0.24750102996826171875e2), SC_(-0.4452493733367375303990916467937068229415e16), + SC_(0.61e2), SC_(0.637722015380859375e2), SC_(-0.1321805471789013172474419554540756891808e-1), + SC_(0.61e2), SC_(0.1252804412841796875e3), SC_(-0.531088356762363908667551449646716451263e-2), + SC_(0.61e2), SC_(0.25554705810546875e3), SC_(0.3137411891941427755699863352585675704239e-2), + SC_(0.61e2), SC_(0.503011474609375e3), SC_(0.1656289965758384211758434873072034259055e-2), + SC_(0.61e2), SC_(0.10074598388671875e4), SC_(0.7696420775050426274332928912448241809519e-3), + SC_(0.61e2), SC_(0.1185395751953125e4), SC_(0.4272402417161322625448726249065820441606e-3) + }; +#undef SC_ + + diff --git a/test/spherical_harmonic.ipp b/test/spherical_harmonic.ipp new file mode 100644 index 000000000..0115a0edc --- /dev/null +++ b/test/spherical_harmonic.ipp @@ -0,0 +1,1010 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 1000> spherical_harmonic = { + SC_(0.2e1), SC_(0), SC_(-0.6223074436187744140625e1), SC_(-0.983176708221435546875e0), SC_(0.62736841735769885881246893757736785347239567286304e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(-0.5057456493377685546875e1), SC_(0.59339153766632080078125e0), SC_(-0.20713028443163886820218719974386053923059852163073e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(-0.4687422275543212890625e1), SC_(0.5891966342926025390625e1), SC_(-0.31480190270523966739513025513763623833894947272512e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(-0.28032686710357666015625e1), SC_(0.46800785064697265625e1), SC_(0.52655067270403872306721376357891919506022788695237e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(-0.1743031024932861328125e1), SC_(0.4387288570404052734375e1), SC_(-0.28759993950019252230305986773209798109581312882458e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(0.30552928447723388671875e1), SC_(-0.317191779613494873046875e0), SC_(0.62375382255600227118437993629928966318732328906381e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(0.3735729694366455078125e1), SC_(-0.5883162021636962890625e1), SC_(0.33428112636668248892477814957401134243912590455598e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(0.37734358310699462890625e1), SC_(-0.25506031513214111328125e1), SC_(0.30071249849279422035163175145138750883542632972971e0), SC_(0), + SC_(0.2e1), SC_(0), SC_(0.54537200927734375e1), SC_(0.2279031276702880859375e1), SC_(0.1160546117367807407152783138997786541874144507988e0), SC_(0), + SC_(0.2e1), SC_(0.1e1), SC_(-0.458073139190673828125e1), SC_(0.509933185577392578125e1), SC_(0.37939894994349071850195546472417494785116097463318e-1), SC_(-0.93107300900343613424961589916279630747721170081866e-1), + SC_(0.2e1), SC_(0.1e1), SC_(-0.97907507419586181640625e0), SC_(0.195379292964935302734375e1), SC_(-0.13365658387823648349917293511332555081805906708217e0), SC_(0.33174333022099396014687314581478847312444020861066e0), + SC_(0.2e1), SC_(0.1e1), SC_(0.475549983978271484375e1), SC_(0.5774152278900146484375e1), SC_(0.29046640079014036022889946316442406419301954589267e-1), SC_(-0.16210635922809696460530259867846941769692426758954e-1), + SC_(0.2e1), SC_(0.1e1), SC_(0.52242870330810546875e1), SC_(0.175631821155548095703125e1), SC_(-0.60855473088463839496314678179027675166851871018551e-1), SC_(0.32425114600308867975046215949339819893698567878093e0), + SC_(0.2e1), SC_(0.1e1), SC_(0.5877228260040283203125e1), SC_(-0.4302561283111572265625e1), SC_(-0.11167901750699566664933060087163004380052822920546e0), SC_(0.25707237315223816631488907449414263457063550537321e0), + SC_(0.2e1), SC_(0.2e1), SC_(-0.4902621746063232421875e1), SC_(-0.18377502262592315673828125e0), SC_(0.34758668332269754124667464441534904092678544008633e0), SC_(-0.13383731780379523410231053175504807605617305066684e0), + SC_(0.2e1), SC_(0.2e1), SC_(-0.4131989955902099609375e1), SC_(-0.24892330169677734375e1), SC_(0.71028469303627438443505218504789723476775735703371e-1), SC_(0.26061737572960702576362821401262553454136075924086e0), + SC_(0.2e1), SC_(0.2e1), SC_(-0.39159076213836669921875e1), SC_(0.589130580425262451171875e0), SC_(0.72243575677708396654934991200786489958595832424973e-1), SC_(0.17449231348731311339771539907208960289022209309613e0), + SC_(0.2e1), SC_(0.2e1), SC_(-0.35055897235870361328125e1), SC_(0.16632754802703857421875e1), SC_(-0.48123182288009319551515814304893416646752842717278e-1), SC_(-0.90036880226735999457627735549531053450913137683366e-2), + SC_(0.2e1), SC_(0.2e1), SC_(-0.12724893093109130859375e1), SC_(0.32388579845428466796875e1), SC_(0.34625198570942398650986171441955620010816501680557e0), SC_(0.6821932943579386165556674909693473588513398324536e-1), + SC_(0.2e1), SC_(0.2e1), SC_(0.19570953845977783203125e1), SC_(0.37438814640045166015625e1), SC_(0.11868540133295449383018733211573720238248966454746e0), SC_(0.30946390521414868955137848944282844227519588015905e0), + SC_(0.2e1), SC_(0.2e1), SC_(0.5749200344085693359375e1), SC_(0.623871707916259765625e1), SC_(0.9966808034179761849929083987599231751430505405574e-1), SC_(-0.88875708639419834563244802526935291667296729862762e-2), + SC_(0.2e1), SC_(0.2e1), SC_(0.5913643360137939453125e1), SC_(0.6045803070068359375e1), SC_(0.44818825447699183791615026234271299189304152367279e-1), SC_(-0.23035725896903097839072699428746139571750062847173e-1), + SC_(0.3e1), SC_(0), SC_(-0.440936374664306640625e1), SC_(-0.5062591552734375e1), SC_(0.2844959862964824854388237165468357597848603400639e0), SC_(0), + SC_(0.3e1), SC_(0), SC_(-0.3934875011444091796875e1), SC_(-0.11469180583953857421875e1), SC_(0.14121291094740439000611232468259189623852053498783e0), SC_(0), + SC_(0.3e1), SC_(0), SC_(-0.552507817745208740234375e0), SC_(-0.2055795304477214813232421875e-1), SC_(0.19783391750498753000939983604310666040001705067569e0), SC_(0), + SC_(0.3e1), SC_(0), SC_(0.2055927753448486328125e1), SC_(-0.76976108551025390625e0), SC_(0.33285173555020716750381297236585266229434503862998e0), SC_(0), + SC_(0.3e1), SC_(0.1e1), SC_(-0.6247767925262451171875e1), SC_(0.194901907444000244140625e1), SC_(0.16876892664773021474708993031012643521641026445293e-1), SC_(-0.42473255665367397599231902837920937763489895056333e-1), + SC_(0.3e1), SC_(0.1e1), SC_(-0.47100925445556640625e1), SC_(-0.22983958721160888671875e1), SC_(-0.21493410580929797924752259751422347054230070438068e0), SC_(-0.24133524984657105208106822870162658732975114112697e0), + SC_(0.3e1), SC_(0.1e1), SC_(-0.423974609375e1), SC_(0.18090667724609375e1), SC_(0.2460020537420461905141929611988448892491267501235e-2), SC_(-0.10128361841653616652755617311405848132460463121178e-1), + SC_(0.3e1), SC_(0.1e1), SC_(-0.148838031291961669921875e1), SC_(-0.3641620159149169921875e1), SC_(0.27307271430136733126056860410690628785894268952483e0), SC_(-0.14919005653183612118737489713533290688614488819696e0), + SC_(0.3e1), SC_(0.1e1), SC_(0.528886890411376953125e1), SC_(0.32004873752593994140625e1), SC_(-0.13132892216208786526729131339765405257419451394884e0), SC_(-0.77435354342006197456232571693201218623653117535312e-2), + SC_(0.3e1), SC_(0.2e1), SC_(-0.563958072662353515625e1), SC_(0.3709591388702392578125e1), SC_(0.12400538306523070140083527916246828402942458169912e0), SC_(0.26699858682144904684388476504336635512136556796993e0), + SC_(0.3e1), SC_(0.2e1), SC_(-0.28145520687103271484375e1), SC_(0.25858356952667236328125e1), SC_(-0.4427518193860363815453664754812317897095435941741e-1), SC_(0.89525230913027456917186909094786496675085768579997e-1), + SC_(0.3e1), SC_(0.2e1), SC_(0.5657657146453857421875e1), SC_(-0.11826162040233612060546875e0), SC_(0.27612706743908622809999597264410624935441554778235e0), SC_(-0.66556246601320034007511476245916059803884974109287e-1), + SC_(0.3e1), SC_(0.2e1), SC_(0.5777313232421875e1), SC_(0.92682850360870361328125e0), SC_(-0.58588098669530777703405917826904778693250781231732e-1), SC_(0.20157326960446402040769133558058970326764280176092e0), + SC_(0.3e1), SC_(0.3e1), SC_(-0.527923882007598876953125e0), SC_(-0.683784008026123046875e0), SC_(-0.24654062825223548093087660191000851588872270901477e-1), SC_(-0.47291850857448633744932273700908288294545006619689e-1), + SC_(0.3e1), SC_(0.3e1), SC_(0.1838623523712158203125e1), SC_(0.36941986083984375e1), SC_(-0.3251989759113359602179775532073865855506456807785e-1), SC_(0.37275562661891880526110138370423344373839148188933e0), + SC_(0.3e1), SC_(0.3e1), SC_(0.4064691066741943359375e1), SC_(0.4045156002044677734375e1), SC_(0.19225943415968710973448026931813683101145483967527e0), SC_(-0.88384340622034426527979275575844466979738642942222e-1), + SC_(0.4e1), SC_(0), SC_(-0.440710163116455078125e1), SC_(-0.33909590244293212890625e1), SC_(0.60872192197795412389189648659338955746589054925866e-1), SC_(0), + SC_(0.4e1), SC_(0), SC_(-0.429697513580322265625e1), SC_(-0.4541179180145263671875e1), SC_(-0.10130272828064344799880549551171672634167040868427e0), SC_(0), + SC_(0.4e1), SC_(0), SC_(-0.18641016483306884765625e1), SC_(-0.543375682830810546875e1), SC_(0.77950672871982581371063052627417982915168633930729e-1), SC_(0), + SC_(0.4e1), SC_(0), SC_(0.7485844194889068603515625e-1), SC_(0.5530133724212646484375e1), SC_(0.82273248411762862558841087329680483291796232837127e0), SC_(0), + SC_(0.4e1), SC_(0), SC_(0.35047321319580078125e1), SC_(-0.335662305355072021484375e0), SC_(0.37133004542041317082392079068126598136623939939308e0), SC_(0), + SC_(0.4e1), SC_(0.1e1), SC_(-0.30877811908721923828125e1), SC_(-0.21055171489715576171875e1), SC_(0.51530379745010133318309937545431717391992159587507e-1), SC_(0.87003979532462364316044078325872969424339205057574e-1), + SC_(0.4e1), SC_(0.1e1), SC_(-0.2515388965606689453125e1), SC_(-0.322296047210693359375e1), SC_(0.35728040642895721804296646233781584207546649366613e0), SC_(-0.29135454916493737137065666660072086321415216443954e-1), + SC_(0.4e1), SC_(0.1e1), SC_(0.38922393321990966796875e1), SC_(0.4281579494476318359375e1), SC_(0.73224312308144597581776422776064913903291741167661e-1), SC_(0.15932143480326534106072259313508337288462063133883e0), + SC_(0.4e1), SC_(0.1e1), SC_(0.539428615570068359375e1), SC_(-0.355329418182373046875e1), SC_(0.46533898855307088507984825351331498092468310453766e-1), SC_(-0.20319290220199811762971093203847032309702077858032e-1), + SC_(0.4e1), SC_(0.1e1), SC_(0.577162647247314453125e1), SC_(0.1017331600189208984375e1), SC_(0.24653136285647999037266860579180968024317536393039e0), SC_(0.39899392923702488934009644431361230633591531405502e0), + SC_(0.4e1), SC_(0.2e1), SC_(-0.109746491909027099609375e1), SC_(0.4912235260009765625e1), SC_(-0.11098204562790300318279208564336530955042958737283e0), SC_(-0.46882241953600592630431606043540984795775718139569e-1), + SC_(0.4e1), SC_(0.3e1), SC_(-0.3470681667327880859375e1), SC_(-0.6059832096099853515625e1), SC_(0.31337958445241324767620450698180315330245557945883e-1), SC_(0.24830670306818716181091950369779498234247337466209e-1), + SC_(0.4e1), SC_(0.4e1), SC_(-0.312797260284423828125e1), SC_(0.5717919826507568359375e1), SC_(-0.96954964101799260839348807502986770292227228575254e-8), SC_(-0.11740977624668344825904309478314389528362476219229e-7), + SC_(0.4e1), SC_(0.4e1), SC_(0.4036896228790283203125e1), SC_(-0.3077565670013427734375e1), SC_(0.15878540892930306515344411249534442262277798236826e0), SC_(0.41579282626431184123743601642889070990303304799171e-1), + SC_(0.4e1), SC_(0.4e1), SC_(0.473447322845458984375e1), SC_(0.107150614261627197265625e1), SC_(-0.18283689147350112716914859883900530125561571604351e0), SC_(-0.40252223561364165551747117833207254896015413001567e0), + SC_(0.4e1), SC_(0.4e1), SC_(0.5119096279144287109375e1), SC_(-0.38126966953277587890625e1), SC_(-0.28253048985912201601336039243135828403941707239604e0), SC_(-0.13898722210008351680968086768165980849714173551268e0), + SC_(0.5e1), SC_(0), SC_(-0.6133619785308837890625e1), SC_(0.28519971370697021484375e1), SC_(0.78495683565043724315160369014308547334238000668841e0), SC_(0), + SC_(0.5e1), SC_(0), SC_(-0.132062244415283203125e1), SC_(-0.3846485912799835205078125e0), SC_(0.31693347535795755694751876346186174674215495248026e0), SC_(0), + SC_(0.5e1), SC_(0), SC_(0.193621504306793212890625e1), SC_(0.3750054836273193359375e0), SC_(-0.29624781700952612310404787297827585402918731693093e0), SC_(0), + SC_(0.5e1), SC_(0), SC_(0.32320735454559326171875e1), SC_(-0.135314095020294189453125e1), SC_(-0.8790123246629224792127618910569050934884656058578e0), SC_(0), + SC_(0.5e1), SC_(0), SC_(0.455754852294921875e1), SC_(0.3585579693317413330078125e0), SC_(-0.24115920970937134101170155815017359735279175844133e0), SC_(0), + SC_(0.5e1), SC_(0.1e1), SC_(0.387013494968414306640625e0), SC_(0.11664593219757080078125e1), SC_(-0.21103277179368909749392113640951296749695200975509e0), SC_(-0.49316527556044503500327911477758500378219060039796e0), + SC_(0.5e1), SC_(0.1e1), SC_(0.369808864593505859375e1), SC_(-0.8027703762054443359375e0), SC_(0.21419837825943510697987352828754457359028432984086e0), SC_(-0.22177292654383587982333487011338866121140808680977e0), + SC_(0.5e1), SC_(0.2e1), SC_(0.6248452663421630859375e0), SC_(0.292543506622314453125e1), SC_(0.41573590536157272547449027947361423003543786240211e0), SC_(-0.19183141402020165103358558903368617865081892865933e0), + SC_(0.5e1), SC_(0.3e1), SC_(-0.14002730846405029296875e1), SC_(-0.4245142459869384765625e1), SC_(-0.24179587072105227507534954893340732889531316289458e0), SC_(0.41271158120487694865505940795712844055500009419391e-1), + SC_(0.5e1), SC_(0.3e1), SC_(0.773553669452667236328125e0), SC_(-0.150236189365386962890625e1), SC_(0.86752460384204523734238237483181189266881715764871e-1), SC_(-0.41660395066952655044211855258764940392838274877353e0), + SC_(0.5e1), SC_(0.3e1), SC_(0.85227191448211669921875e0), SC_(0.3439598977565765380859375e0), SC_(-0.2196268910459300563562462210856877243970361932779e0), SC_(-0.36729488140701770922993890678969810345467122358823e0), + SC_(0.5e1), SC_(0.3e1), SC_(0.24533689022064208984375e1), SC_(-0.26912262439727783203125e1), SC_(0.84407718049714982177819663764778352740974157106147e-1), SC_(0.37799906426529471223627861284161774428328546798949e0), + SC_(0.5e1), SC_(0.3e1), SC_(0.27156016826629638671875e1), SC_(0.31183650493621826171875e1), SC_(0.15738150174204471823641953702231269343028123924248e0), SC_(-0.10984570703089041779572343816480593380078028706438e-1), + SC_(0.5e1), SC_(0.4e1), SC_(-0.46507358551025390625e1), SC_(-0.43424549102783203125e1), SC_(-0.81610388990130490457172097141225859717686441857729e-2), SC_(-0.89374756741490952643612742660035362791080713876533e-1), + SC_(0.5e1), SC_(0.4e1), SC_(-0.621512591838836669921875e0), SC_(0.27708027362823486328125e1), SC_(0.12004544884393419000142424854735638715599322929316e-1), SC_(-0.13663000278677616631515950276497097659521716705081e0), + SC_(0.5e1), SC_(0.4e1), SC_(-0.3524012267589569091796875e0), SC_(-0.29785907268524169921875e1), SC_(0.15539463517620091160584166121979812487332568999928e-1), SC_(0.11862472589638443152295111650527149252307457439108e-1), + SC_(0.5e1), SC_(0.4e1), SC_(0.36894562244415283203125e1), SC_(0.1071460247039794921875e1), SC_(0.38153406983899025097770719403625882271965074571694e-1), SC_(0.83955212528015340355210834835918623348871882361705e-1), + SC_(0.5e1), SC_(0.5e1), SC_(-0.42015819549560546875e1), SC_(-0.478091144561767578125e1), SC_(-0.78771509147710774911525721791906161990439181276561e-1), SC_(-0.22084717987914999243192976716629891839889973092779e0), + SC_(0.5e1), SC_(0.5e1), SC_(-0.180522000789642333984375e1), SC_(0.5453938961029052734375e1), SC_(-0.21672250347594585950911058254553519147793823945815e0), SC_(0.34099438042314355745269066747118572610691093362052e0), + SC_(0.5e1), SC_(0.5e1), SC_(-0.12037513256072998046875e1), SC_(-0.5605228424072265625e1), SC_(-0.31874692735033257564857484066099467165425801736272e0), SC_(-0.80775786107272377968028522827249220178768442687974e-1), + SC_(0.6e1), SC_(0), SC_(0.20121209621429443359375e1), SC_(-0.861879289150238037109375e0), SC_(0.32257795431442290461841251687529714907368163562707e0), SC_(0), + SC_(0.6e1), SC_(0), SC_(0.4633154392242431640625e1), SC_(0.22559111118316650390625e1), SC_(-0.27681099511914428364563582745448972945131911762108e0), SC_(0), + SC_(0.6e1), SC_(0.1e1), SC_(-0.3017557621002197265625e1), SC_(-0.571695041656494140625e1), SC_(-0.3182765780247527650661898994294506316455643091238e0), SC_(-0.20231866414632311555370052856158411199370305440248e0), + SC_(0.6e1), SC_(0.1e1), SC_(0.518460178375244140625e1), SC_(-0.340577602386474609375e1), SC_(-0.33139977324999822170079691728884438394414052512003e-1), SC_(0.89645618853660614566673715437819413174948890145033e-2), + SC_(0.6e1), SC_(0.2e1), SC_(-0.6224950313568115234375e1), SC_(-0.5851941585540771484375e1), SC_(0.11367466843852340301572859185434206855654509197407e-1), SC_(0.13270566470379113215836086478491562374358240623435e-1), + SC_(0.6e1), SC_(0.2e1), SC_(-0.193228816986083984375e1), SC_(-0.1259368419647216796875e1), SC_(0.17015439455703996120010725881479695757433339645918e0), SC_(0.12220984654978791100511873145119907611258061014597e0), + SC_(0.6e1), SC_(0.2e1), SC_(0.400869883596897125244140625e-1), SC_(0.4094336986541748046875e1), SC_(-0.27360081358504041462622421950891651651395215185102e-2), SC_(0.78671516012011607353617487800753368671969089199501e-2), + SC_(0.6e1), SC_(0.2e1), SC_(0.100159740447998046875e1), SC_(0.16007587909698486328125e1), SC_(0.33312817952136891151402845107667869437393042975291e0), SC_(0.19986611973298386574420459205971926548352851571804e-1), + SC_(0.6e1), SC_(0.2e1), SC_(0.59941844940185546875e1), SC_(0.3987349987030029296875e1), SC_(-0.39244591286024440252746771258278487487912400705915e-1), SC_(0.3235114873781273794432242397162162922003339463124e0), + SC_(0.6e1), SC_(0.3e1), SC_(-0.6181474208831787109375e1), SC_(-0.44616298675537109375e1), SC_(-0.36555439626733798836250150331159658612721704105969e-2), SC_(0.39060829015610718780646476145797070893363169410104e-2), + SC_(0.6e1), SC_(0.4e1), SC_(-0.182942934334278106689453125e-1), SC_(0.5804382801055908203125e1), SC_(-0.13485527897342181133863650635688529036517094942302e-6), SC_(-0.37594444368148394959570303805408930607416900185595e-6), + SC_(0.6e1), SC_(0.4e1), SC_(0.48182523250579833984375e0), SC_(0.5854918956756591796875e0), SC_(-0.87580495795744127191094582263757800051970023004008e-1), SC_(0.90108633166851281571381334701278548340039592769718e-1), + SC_(0.6e1), SC_(0.4e1), SC_(0.516034984588623046875e1), SC_(-0.4611907958984375e1), SC_(0.23049173553295922558222462993834501197132512377121e0), SC_(0.97973529754174577721376294184893822193214608457915e-1), + SC_(0.6e1), SC_(0.4e1), SC_(0.6061522006988525390625e1), SC_(-0.2968140125274658203125e1), SC_(0.60676772977524853207600487824157980668392948601337e-2), SC_(0.50468623600570621193161410606406246749591675232384e-2), + SC_(0.6e1), SC_(0.5e1), SC_(-0.658673822879791259765625e0), SC_(-0.5300802707672119140625e1), SC_(0.22531653116574577761994224114760107123286633342113e-1), SC_(-0.11142449466127886599912340334619246275444923640014e0), + SC_(0.6e1), SC_(0.6e1), SC_(-0.4454288482666015625e1), SC_(-0.2731008052825927734375e1), SC_(-0.30736978236431376889708302043761105936105814540522e0), SC_(0.24758607297910007253493353507550428937688092735856e0), + SC_(0.6e1), SC_(0.6e1), SC_(-0.720326125621795654296875e0), SC_(0.130981147289276123046875e1), SC_(-0.19448366204955640275137920739967557970612435458044e-3), SC_(0.3979415187870059203520574469327740770369547693405e-1), + SC_(0.6e1), SC_(0.6e1), SC_(0.379644489288330078125e1), SC_(0.4640662670135498046875e1), SC_(-0.22406945511909215157279556250051059356005015977709e-1), SC_(0.10286003034965999858111224927885582369599679113793e-1), + SC_(0.6e1), SC_(0.6e1), SC_(0.5194150447845458984375e1), SC_(0.732226788997650146484375e0), SC_(-0.73382380652652099372339025816919837662648600488596e-1), SC_(-0.22216129075117957646125779178470970035532853520059e0), + SC_(0.7e1), SC_(0), SC_(-0.32678530216217041015625e1), SC_(0.4053973674774169921875e1), SC_(-0.86183169184536587464416234029228370869690020761501e0), SC_(0), + SC_(0.7e1), SC_(0.1e1), SC_(-0.423647403717041015625e1), SC_(0.352175140380859375e1), SC_(0.28971190067302116998255296195312688178773200365056e0), SC_(0.11576795099517211802712504788243112442428479807958e0), + SC_(0.7e1), SC_(0.1e1), SC_(-0.3104446887969970703125e1), SC_(-0.39721319675445556640625e1), SC_(-0.10144486795624163442415177132378036941755821378977e0), SC_(0.11104335122050038919312235174417766930212553647874e0), + SC_(0.7e1), SC_(0.1e1), SC_(-0.770735323429107666015625e0), SC_(-0.187298762798309326171875e1), SC_(0.10796679809902591652952779708058539166627723305903e0), SC_(0.34633730248395313462818797598306208281520945109715e0), + SC_(0.7e1), SC_(0.1e1), SC_(0.3235886096954345703125e1), SC_(-0.5531973361968994140625e1), SC_(0.2647447592114984951727181900888993559516065796256e0), SC_(0.24723527637960256115016859269425703021555156408855e0), + SC_(0.7e1), SC_(0.2e1), SC_(-0.121874995529651641845703125e0), SC_(0.55549716949462890625e1), SC_(0.11900042243877052113869899113467893796769866876714e-1), SC_(-0.1035953886187316715238895150714839838539413397102e0), + SC_(0.7e1), SC_(0.2e1), SC_(0.4436319828033447265625e1), SC_(0.4264160096645355224609375e0), SC_(-0.19781155808981186300021469893781883955717273850325e0), SC_(-0.22646565273170192925993184213147443225034207539808e0), + SC_(0.7e1), SC_(0.3e1), SC_(-0.28556697368621826171875e1), SC_(-0.12074756622314453125e1), SC_(-0.13953471732730374449487481768780304853329504970975e0), SC_(0.72791323297513745960194444547598419337475994993572e-1), + SC_(0.7e1), SC_(0.3e1), SC_(-0.1350553333759307861328125e0), SC_(0.5536253452301025390625e0), SC_(-0.18477573924981138952526910254111509848926179035747e-2), SC_(0.20456958882102401716479094215516956245585045931766e-1), + SC_(0.7e1), SC_(0.3e1), SC_(0.16649867594242095947265625e0), SC_(-0.4549009799957275390625e1), SC_(-0.17558790784346864546478646833203194317506624782308e-1), SC_(0.32908448493169620892988807775917255086560729792027e-1), + SC_(0.7e1), SC_(0.4e1), SC_(-0.3268310070037841796875e1), SC_(-0.57746105194091796875e1), SC_(0.81299195576456833588327428455403529747561860368437e-3), SC_(-0.16265726260462819996568637533684952218178511474723e-2), + SC_(0.7e1), SC_(0.5e1), SC_(-0.164309346675872802734375e1), SC_(-0.5865120410919189453125e1), SC_(0.16760613338897665747453711293098866723837357795454e0), SC_(-0.29305077603622682379949116975213923906974325154042e0), + SC_(0.7e1), SC_(0.5e1), SC_(0.4872310638427734375e1), SC_(0.5027225017547607421875e1), SC_(-0.23067172423896537332892129244592185137175678545074e0), SC_(-0.78056357393757193768619937772666474522840598082238e-3), + SC_(0.7e1), SC_(0.5e1), SC_(0.5060679912567138671875e1), SC_(-0.249031162261962890625e1), SC_(0.13753748478903756341484295477107659377958738581289e0), SC_(0.15860775742632141101079305954903492997755336496804e-1), + SC_(0.7e1), SC_(0.6e1), SC_(-0.33328540325164794921875e1), SC_(0.664524853229522705078125e0), SC_(0.57498062904194064879021232307453500913997423402099e-4), SC_(0.64868309297670987911598603982158050715895820930619e-4), + SC_(0.7e1), SC_(0.6e1), SC_(-0.14786479473114013671875e1), SC_(-0.532855987548828125e1), SC_(0.14259814483048013620331775979350773297786516807031e0), SC_(-0.88497140569694600622038688983909594547952891990795e-1), + SC_(0.7e1), SC_(0.6e1), SC_(-0.138558256626129150390625e1), SC_(-0.364045429229736328125e1), SC_(-0.30725737032055778236658671224207261187058449089194e0), SC_(-0.4594185845226742406411289649702915642149815332278e-1), + SC_(0.7e1), SC_(0.6e1), SC_(0.605351161956787109375e1), SC_(-0.5659209728240966796875e1), SC_(-0.20901957458912927465118670434052080186284236708559e-3), SC_(-0.14369279257657720071703187408655266795825046057259e-3), + SC_(0.7e1), SC_(0.7e1), SC_(-0.5680699825286865234375e1), SC_(-0.11480517685413360595703125e0), SC_(-0.65140704275190863672046807976534224495201358472486e-2), SC_(0.6756119988059887486626728364131012876289737261477e-2), + SC_(0.7e1), SC_(0.7e1), SC_(-0.5071102142333984375e1), SC_(-0.34756076335906982421875e1), SC_(-0.21905578908423564859803694144259024487569003475884e0), SC_(-0.22712796877731922586505713804395568309402460574174e0), + SC_(0.7e1), SC_(0.7e1), SC_(0.5731956005096435546875e1), SC_(0.1909694671630859375e1), SC_(0.37598146043488924163894875530133800955439742466261e-2), SC_(0.38828252880283876450833465635333140864124811461276e-2), + SC_(0.8e1), SC_(0), SC_(-0.174847590923309326171875e1), SC_(0.370496082305908203125e1), SC_(0.18550045831415641967666054709281586733390994411325e-1), SC_(0), + SC_(0.8e1), SC_(0.1e1), SC_(-0.452208614349365234375e1), SC_(0.3915435791015625e1), SC_(0.23019679038581067528534161237276798496352885814285e0), SC_(0.22493746813347214617465466191330729868341816644437e0), + SC_(0.8e1), SC_(0.1e1), SC_(-0.39771163463592529296875e1), SC_(-0.143620395660400390625e1), SC_(0.36301297025341664566666346498271968009720726028362e-2), SC_(-0.26808229305944791926567877056916990487727464113202e-1), + SC_(0.8e1), SC_(0.1e1), SC_(-0.66873514652252197265625e0), SC_(0.321435070037841796875e1), SC_(0.39406873706161791889852906292118603474593888516999e0), SC_(0.28722372365231764992320867288998773612706625034375e-1), + SC_(0.8e1), SC_(0.1e1), SC_(0.187384045124053955078125e1), SC_(-0.3037343502044677734375e1), SC_(0.17794210537795242523013483763026225704890887387774e0), SC_(0.18617807828216999141187248645194382373616915625708e-1), + SC_(0.8e1), SC_(0.2e1), SC_(-0.6167109012603759765625e0), SC_(-0.152680873870849609375e1), SC_(0.24000422949980477957700542249685566058368783514604e-1), SC_(0.21169056137944002734434184984307952573952684330955e-2), + SC_(0.8e1), SC_(0.3e1), SC_(-0.6089620113372802734375e1), SC_(-0.119403922557830810546875e1), SC_(0.77971609467743901980621443154610976052966610640442e-1), SC_(-0.36757537707475739042245470420250110410146728318915e-1), + SC_(0.8e1), SC_(0.3e1), SC_(-0.561525058746337890625e1), SC_(0.4036243438720703125e1), SC_(-0.26183123847934094904688640386937655890466224942618e0), SC_(0.12895535657804239089002419149650357189645019033082e0), + SC_(0.8e1), SC_(0.3e1), SC_(0.3464707851409912109375e1), SC_(-0.2467859745025634765625e1), SC_(-0.12874451667460064623738273537411974899357470290627e0), SC_(0.26624781009709669895450895027368185835791099860145e0), + SC_(0.8e1), SC_(0.4e1), SC_(-0.4651485919952392578125e1), SC_(0.18566305637359619140625e1), SC_(0.12592104641289906870037909199085550396014647571113e0), SC_(0.27641566816857971887002213784137211036509739661967e0), + SC_(0.8e1), SC_(0.4e1), SC_(-0.15152676105499267578125e1), SC_(0.539582347869873046875e1), SC_(-0.28410552168554428566740914478730904671011806202094e0), SC_(0.12275715851863546355879733351914244258278412105518e0), + SC_(0.8e1), SC_(0.4e1), SC_(0.412498533725738525390625e0), SC_(0.56413593292236328125e1), SC_(-0.18315159629088794253245676084584973421892658420177e0), SC_(-0.11850567614428816582904899494364499303201721466813e0), + SC_(0.8e1), SC_(0.4e1), SC_(0.27453744411468505859375e1), SC_(-0.255950832366943359375e1), SC_(-0.13382799462106048953408703301736152134247938249842e0), SC_(0.14149983348273597884779254948404738493440847796772e0), + SC_(0.8e1), SC_(0.4e1), SC_(0.307490062713623046875e1), SC_(0.15511372089385986328125e1), SC_(0.26301753680061811559461671151416773389006755344484e-3), SC_(-0.20725508710879576631848833533657282088636707797968e-4), + SC_(0.8e1), SC_(0.5e1), SC_(0.13535942137241363525390625e0), SC_(0.465190410614013671875e1), SC_(0.12593474577729879328996704229091917560383813171573e-3), SC_(0.40364398522353527224874983148986924630931717284382e-3), + SC_(0.8e1), SC_(0.5e1), SC_(0.3521441936492919921875e1), SC_(0.2127299785614013671875e1), SC_(0.18481832785609232621926986722656522919851307483837e-1), SC_(0.49239249095384773481901232724712132742579607851099e-1), + SC_(0.8e1), SC_(0.5e1), SC_(0.4724236965179443359375e1), SC_(-0.607558155059814453125e1), SC_(-0.14664656434647655165083588276743153778075028708042e-1), SC_(-0.24869927235806125654143309114941607335170358669862e-1), + SC_(0.8e1), SC_(0.6e1), SC_(-0.492523956298828125e1), SC_(0.106922961771488189697265625e0), SC_(-0.86945560388086951661546157470260103502189237664923e-1), SC_(-0.64942837847887454311657325200003786253026431700206e-1), + SC_(0.8e1), SC_(0.6e1), SC_(0.1813555240631103515625e1), SC_(0.55047619342803955078125e0), SC_(0.41411216054779798884986712778874671922915303809168e-1), SC_(0.6736659235066683728553731957200706826935054228731e-2), + SC_(0.8e1), SC_(0.6e1), SC_(0.5159311771392822265625e1), SC_(-0.8060247898101806640625e0), SC_(0.45026286310132596550436782290422648920648265915341e-1), SC_(0.36196070851562878952293191729504618347474427155142e0), + SC_(0.8e1), SC_(0.7e1), SC_(-0.196123659610748291015625e1), SC_(0.15785694122314453125e1), SC_(-0.24678141820863093225455026307807683165941073499112e-1), SC_(0.45309793641314105891246007305737410993278743999935e0), + SC_(0.8e1), SC_(0.7e1), SC_(0.51325283050537109375e1), SC_(-0.4159594058990478515625e1), SC_(-0.29595552905540753070716640268170720910650719148172e0), SC_(0.332059868793872731248540033047341795029884302294e0), + SC_(0.8e1), SC_(0.7e1), SC_(0.6158903598785400390625e1), SC_(0.5516656398773193359375e1), SC_(0.55932218009792233791741442620119426385453938864187e-6), SC_(0.73071425007288902657965660261024096743078980708518e-6), + SC_(0.8e1), SC_(0.8e1), SC_(0.3919124126434326171875e1), SC_(0.23470895290374755859375e1), SC_(0.30154206479106513660501752336796138467374971454367e-1), SC_(-0.22003157529443788047854320046205885770317105778624e-2), + SC_(0.9e1), SC_(0), SC_(-0.34222714900970458984375e1), SC_(0.3765552997589111328125e1), SC_(0.15845610051932134984594945072416514086975939314958e0), SC_(0), + SC_(0.9e1), SC_(0.1e1), SC_(0.167212736606597900390625e1), SC_(-0.39607150554656982421875e1), SC_(0.12548687918987719566500624237591738197416459977741e0), SC_(-0.13424961700581831121800270629853882371441525150884e0), + SC_(0.9e1), SC_(0.2e1), SC_(-0.442551136016845703125e1), SC_(-0.4138004779815673828125e1), SC_(-0.61559188340701767062192232749512812567487416761928e-1), SC_(-0.13710070039767483485760934931022607461523727139633e0), + SC_(0.9e1), SC_(0.2e1), SC_(-0.38390843868255615234375e1), SC_(0.4326712131500244140625e1), SC_(-0.28596046954990044261524611305912535465955673398397e0), SC_(0.2780388792377936953846777097220344386815445164775e0), + SC_(0.9e1), SC_(0.2e1), SC_(-0.3391027748584747314453125e0), SC_(-0.2373758792877197265625e1), SC_(0.21086756314119105658973195323688928631392541514675e-1), SC_(0.60002614848805544763372948640351979856652862384932e0), + SC_(0.9e1), SC_(0.3e1), SC_(-0.4886820316314697265625e1), SC_(0.26052792072296142578125e1), SC_(-0.44986374918179076447614636378810028326092753759167e-4), SC_(-0.11788103094083536288159887351496473520842442297489e-2), + SC_(0.9e1), SC_(0.3e1), SC_(0.119249927997589111328125e1), SC_(-0.633897125720977783203125e0), SC_(0.10661275313759439400343892862074793516663373619121e0), SC_(0.31034911628908485056915422615024906439125319874928e0), + SC_(0.9e1), SC_(0.3e1), SC_(0.265421581268310546875e1), SC_(-0.417761707305908203125e1), SC_(-0.52792186292690383321489339244409914836965808925751e0), SC_(-0.17702251832755797804528673092324193932848132328461e-1), + SC_(0.9e1), SC_(0.3e1), SC_(0.532034587860107421875e1), SC_(0.18164756298065185546875e1), SC_(-0.16474506897438148135756520978224076604140320053414e0), SC_(0.18150276831881486654600903725513285328232281719402e0), + SC_(0.9e1), SC_(0.4e1), SC_(-0.38357050418853759765625e1), SC_(-0.73860776424407958984375e0), SC_(0.37396761117160979118298120310613477596871276736389e0), SC_(0.70821256345155194300947696382447947385433787950901e-1), + SC_(0.9e1), SC_(0.5e1), SC_(0.5043890476226806640625e0), SC_(-0.24976122379302978515625e1), SC_(-0.25304174899252507368917512263852276234451408260751e0), SC_(-0.19856158804896335655269484851897538505219009378056e-1), + SC_(0.9e1), SC_(0.6e1), SC_(-0.1826671123504638671875e1), SC_(-0.768182575702667236328125e0), SC_(-0.36383809511987945745895919711901473701172819344979e-1), SC_(0.35098344557326952520730458181065622337882187260986e0), + SC_(0.9e1), SC_(0.6e1), SC_(-0.139970302581787109375e1), SC_(0.153906738758087158203125e1), SC_(0.34147705076854453980469468519559651082110599266184e0), SC_(-0.65805127404205744152996799319195368187412181730244e-1), + SC_(0.9e1), SC_(0.6e1), SC_(0.10938360691070556640625e1), SC_(-0.2935746610164642333984375e0), SC_(-0.22181162847756730867661777963978478080275815169277e-1), SC_(-0.11493088711446092397691481681882585856690108355921e0), + SC_(0.9e1), SC_(0.6e1), SC_(0.5087884426116943359375e1), SC_(0.28482229709625244140625e1), SC_(0.28428796947170113299347168443705272270194557587573e-1), SC_(0.14828267534273498167890755818225549744798727305814e0), + SC_(0.9e1), SC_(0.7e1), SC_(-0.575471782684326171875e1), SC_(0.12923643589019775390625e1), SC_(0.34643980992172731245838832711437012052613884009057e-1), SC_(-0.13766092300502511712443494068789878311802203272284e-1), + SC_(0.9e1), SC_(0.7e1), SC_(-0.3653880655765533447265625e0), SC_(0.5028850555419921875e1), SC_(-0.31676125282099863384881749068344425268674370699455e-2), SC_(-0.23803333387406967903717335010291243889712301455789e-2), + SC_(0.9e1), SC_(0.8e1), SC_(-0.4243305206298828125e1), SC_(-0.114706027507781982421875e1), SC_(0.39452587206961377866353414029879314567221771636441e0), SC_(0.10002310029803144917098970699288393793970757619897e0), + SC_(0.1e2), SC_(0), SC_(-0.38967626094818115234375e1), SC_(-0.33728845119476318359375e1), SC_(0.25397561084627033281792768375990482785160991577662e0), SC_(0), + SC_(0.1e2), SC_(0), SC_(-0.206896686553955078125e1), SC_(-0.466129207611083984375e1), SC_(-0.17004857598164473358157223354788449341439521048683e0), SC_(0), + SC_(0.1e2), SC_(0.2e1), SC_(-0.58089447021484375e1), SC_(0.4825091838836669921875e1), SC_(-0.81764622822692569335099636423687269158521635212749e-1), SC_(-0.18748822599524126477502240060490200332300445042612e-1), + SC_(0.1e2), SC_(0.2e1), SC_(-0.4144989013671875e1), SC_(0.22510836124420166015625e1), SC_(-0.66251791528537186731323271459989865007095311125344e-1), SC_(-0.31049566955895992317247181720333016387603754364513e0), + SC_(0.1e2), SC_(0.3e1), SC_(-0.100292265415191650390625e1), SC_(-0.95294868946075439453125e0), SC_(-0.19090681261369404030390046317793709401105686711272e0), SC_(-0.55464228266018352876474257954927232151173030835511e-1), + SC_(0.1e2), SC_(0.3e1), SC_(0.37219564914703369140625e1), SC_(0.104107844829559326171875e1), SC_(0.14868402502193691747656109708940395828879257400089e0), SC_(-0.27297451864124138213789366405864236947137289061913e-2), + SC_(0.1e2), SC_(0.3e1), SC_(0.416216182708740234375e1), SC_(-0.480767154693603515625e1), SC_(0.69316556229416063637666344422670728417878305798677e-1), SC_(0.23585379523282713007758467411403656944567532728201e0), + SC_(0.1e2), SC_(0.4e1), SC_(-0.4378448486328125e1), SC_(0.613216304779052734375e1), SC_(0.2801493800592263622049970216336394334792975107886e0), SC_(-0.19334693399544345309856028961389471442888274103706e0), + SC_(0.1e2), SC_(0.4e1), SC_(-0.35968379974365234375e1), SC_(0.581934261322021484375e1), SC_(-0.13505400665232269491060441393347748931385091310871e0), SC_(-0.4617016601251649511569365921476204505165166138494e0), + SC_(0.1e2), SC_(0.4e1), SC_(-0.3301392078399658203125e1), SC_(0.58891086578369140625e1), SC_(-0.11647259959227514254116535946415063214349551191508e-3), SC_(-0.21137150919448156841397051719737116792353054579864e-1), + SC_(0.1e2), SC_(0.4e1), SC_(-0.2941527843475341796875e1), SC_(0.538914012908935546875e1), SC_(-0.43607617827909263080825806984058862183798525320633e-1), SC_(0.20242039234574190109616561742085628057906253739101e-1), + SC_(0.1e2), SC_(0.4e1), SC_(0.28944232463836669921875e1), SC_(-0.501726818084716796875e1), SC_(0.34384588313734143552028174599316937644561255196057e-1), SC_(-0.93824122358359981632816513781695963287234934841715e-1), + SC_(0.1e2), SC_(0.4e1), SC_(0.3353387355804443359375e1), SC_(-0.2992414951324462890625e1), SC_(0.48667999312969118120870840093825300985241507897186e-1), SC_(0.33061094584439697488692020968433054728408665356903e-1), + SC_(0.1e2), SC_(0.5e1), SC_(-0.25550463199615478515625e1), SC_(0.19575879573822021484375e1), SC_(0.4440492882641083750896286684210995764190314340535e0), SC_(0.16874625872887779280553690534836426831021084434415e0), + SC_(0.1e2), SC_(0.6e1), SC_(-0.26142978668212890625e1), SC_(-0.456720829010009765625e1), SC_(-0.1307676306147224499152182081273115968473099419014e0), SC_(-0.1553435200285519991033942206669201586469328427245e0), + SC_(0.1e2), SC_(0.6e1), SC_(0.98750121891498565673828125e-1), SC_(-0.4860765933990478515625e1), SC_(-0.14779726279784082645802605529748674744478999953899e-4), SC_(0.18256809409868681128556729969838452968770523146843e-4), + SC_(0.1e2), SC_(0.7e1), SC_(-0.131299459934234619140625e1), SC_(0.171491467952728271484375e1), SC_(-0.29021189228283220973714594098738075209108277464972e0), SC_(0.18274476855155299681174672929292375748860634571959e0), + SC_(0.1e2), SC_(0.7e1), SC_(0.2780026912689208984375e1), SC_(-0.3383314609527587890625e1), SC_(0.10300460186719276988913693344211453985439973649751e-2), SC_(0.84530345018324844186868559472272777442232566914713e-2), + SC_(0.1e2), SC_(0.8e1), SC_(-0.13951508700847625732421875e0), SC_(-0.108962213993072509765625e1), SC_(-0.73761442162782360964819122485850601716829499806569e-6), SC_(-0.63118551152102010374365089745222581133607205586406e-6), + SC_(0.1e2), SC_(0.8e1), SC_(0.58817803859710693359375e0), SC_(-0.34362576007843017578125e1), SC_(-0.30414784302921429385835433932877643425670372460333e-1), SC_(-0.30346422607976833489631395643876073469922378993145e-1), + SC_(0.1e2), SC_(0.8e1), SC_(0.378266143798828125e1), SC_(0.3304093837738037109375e1), SC_(0.19307856171928346319503741216981369476742908521414e-1), SC_(0.69551432219218254885581740459845931814275000080444e-1), + SC_(0.1e2), SC_(0.8e1), SC_(0.577074909210205078125e1), SC_(0.5193515777587890625e1), SC_(-0.13422362143882942810949980813096787499685801783101e-1), SC_(-0.11476864427514824480795686384997274821094499951914e-1), + SC_(0.1e2), SC_(0.9e1), SC_(0.248108617961406707763671875e-1), SC_(0.193217194080352783203125e1), SC_(-0.95469448087216063409584068294127665888913376089584e-15), SC_(0.85820343091699707961713468711815827174778483009996e-14), + SC_(0.1e2), SC_(0.1e2), SC_(-0.195623314380645751953125e1), SC_(0.98677504062652587890625e0), SC_(-0.2288268745971460517545031273592742457943882851384e0), SC_(-0.10855932915107980719527996101987432101305010062513e0), + SC_(0.1e2), SC_(0.1e2), SC_(0.62019405364990234375e1), SC_(-0.29847362041473388671875e1), SC_(0.15008614784049322626679231171406496436787886041602e-13), SC_(0.67247836637415337848152407553391668101165304165406e-11), + SC_(0.11e2), SC_(0), SC_(0.50858898162841796875e1), SC_(-0.29596750736236572265625e1), SC_(0.30199931918324987696234641080804235519683690284391e0), SC_(0), + SC_(0.11e2), SC_(0.1e1), SC_(-0.181774199008941650390625e1), SC_(-0.2083968639373779296875e1), SC_(-0.15136503627385948092688916598878219694864088397496e0), SC_(-0.26860107909943525947658981544625828617978092341723e0), + SC_(0.11e2), SC_(0.1e1), SC_(-0.363314151763916015625e0), SC_(-0.22841622829437255859375e1), SC_(0.11608929172234139785702184879507592681711245077449e0), SC_(0.13414549563434164090078869895357599380287635097597e0), + SC_(0.11e2), SC_(0.2e1), SC_(-0.2385650157928466796875e1), SC_(-0.417295074462890625e1), SC_(0.41511833951573476195093302994573699935690411217707e-1), SC_(0.77468157183164794692443358393861683034263657319542e-1), + SC_(0.11e2), SC_(0.2e1), SC_(0.545695400238037109375e1), SC_(0.147863948345184326171875e1), SC_(-0.31369257775360208217352876119549972744472479393349e0), SC_(0.58481576482503044570210690850526915411369983763124e-1), + SC_(0.11e2), SC_(0.3e1), SC_(0.31026897430419921875e1), SC_(0.5926645360887050628662109375e-2), SC_(-0.24103193108338051924806338526787355619567057748937e-2), SC_(-0.42859839752331066587382031209311495788228810115997e-4), + SC_(0.11e2), SC_(0.3e1), SC_(0.4516885280609130859375e1), SC_(0.13938140869140625e1), SC_(0.93690135287640016346569046209807087632148425822931e-1), SC_(0.15955691286546242954911672068823567681963401079772e0), + SC_(0.11e2), SC_(0.4e1), SC_(0.54613780975341796875e1), SC_(0.2720598876476287841796875e0), SC_(-0.18258411224119625616970440833647362449446999419253e0), SC_(-0.34853279830762133182915266185991436290956193113148e0), + SC_(0.11e2), SC_(0.4e1), SC_(0.568593120574951171875e1), SC_(0.2286726474761962890625e1), SC_(-0.30248666813093794758574540439378052841488441350582e0), SC_(0.86284878357101113033915596368803469610227643045572e-1), + SC_(0.11e2), SC_(0.5e1), SC_(-0.5922855377197265625e1), SC_(0.12070996761322021484375e1), SC_(-0.17638227406466341219059028104519725988893419300857e0), SC_(0.4460345889241772826092729274366547429190845588879e-1), + SC_(0.11e2), SC_(0.6e1), SC_(-0.574997997283935546875e1), SC_(0.4672241687774658203125e1), SC_(-0.30447452858056984637575033236091241320890110194517e0), SC_(0.74795259810782796857210054118574990110366877791338e-1), + SC_(0.11e2), SC_(0.6e1), SC_(-0.73212467133998870849609375e-1), SC_(-0.6125618457794189453125e1), SC_(0.44549426931423894859711314306916660652909536827046e-5), SC_(0.61695494834648701116593208264470826187561709999518e-5), + SC_(0.11e2), SC_(0.6e1), SC_(0.1741596758365631103515625e0), SC_(-0.58993968963623046875e1), SC_(-0.82867717953783911792238962900865754909037927199117e-3), SC_(0.92238533215406727398131240953233599564714594627181e-3), + SC_(0.11e2), SC_(0.7e1), SC_(-0.3984513759613037109375e1), SC_(-0.320418262481689453125e1), SC_(0.4275691382648662145105399116986093625097881364174e0), SC_(-0.20031521440355624779302843250595691400364553626486e0), + SC_(0.11e2), SC_(0.8e1), SC_(-0.30920422077178955078125e1), SC_(-0.2523058354854583740234375e0), SC_(0.29139811688416707180257820251113316682920221426938e-9), SC_(0.60687657183385711609479195150100891202946032032604e-9), + SC_(0.11e2), SC_(0.8e1), SC_(0.3067127704620361328125e1), SC_(0.23851130008697509765625e1), SC_(-0.16889931796373325241352339447581773490900512276788e-7), SC_(-0.39786903607550816936065433126367518895881744497777e-8), + SC_(0.11e2), SC_(0.8e1), SC_(0.507330226898193359375e1), SC_(-0.144820880889892578125e1), SC_(-0.45597938670697162299938319265917567222687225170266e-1), SC_(-0.68087624277326404793729826794071862013254579710128e-1), + SC_(0.11e2), SC_(0.8e1), SC_(0.601527881622314453125e1), SC_(-0.33627564907073974609375e1), SC_(-0.78576926079844285204506622051641761208000102021087e-4), SC_(-0.39061161529214507409533138734634515556906985749577e-3), + SC_(0.11e2), SC_(0.9e1), SC_(0.249751377105712890625e1), SC_(-0.5460778713226318359375e1), SC_(-0.22134201705446754152863233101198039571985809810129e-1), SC_(-0.4555089208746421807790913757655871467648286174498e-1), + SC_(0.11e2), SC_(0.1e2), SC_(-0.268183231353759765625e1), SC_(0.2702235698699951171875e1), SC_(0.21633956434426947384266278340292328636278670428762e-3), SC_(-0.65541614504317866144229677749864128209698071659402e-3), + SC_(0.11e2), SC_(0.1e2), SC_(-0.20985181331634521484375e1), SC_(0.4857052326202392578125e1), SC_(0.37602689229505437473899554225689581073183849929999e-1), SC_(0.30129182606903602867385598948220183090290637361066e0), + SC_(0.11e2), SC_(0.11e2), SC_(-0.1457462012767791748046875e0), SC_(0.964111030101776123046875e0), SC_(-0.12798908237746641367836110706040011147073516511458e-9), SC_(-0.31105509149776030556238819766596695493231811157094e-9), + SC_(0.12e2), SC_(0), SC_(-0.27939560413360595703125e1), SC_(-0.12659642696380615234375e1), SC_(-0.50245999093202167540131219035072728442143157445386e0), SC_(0), + SC_(0.12e2), SC_(0), SC_(0.2336709201335906982421875e0), SC_(0.54796295166015625e1), SC_(-0.32923865655076526139901756362696025903136327987856e0), SC_(0), + SC_(0.12e2), SC_(0), SC_(0.279525852203369140625e1), SC_(0.2572634220123291015625e1), SC_(-0.50669261011677931032139673183938654989374120383111e0), SC_(0), + SC_(0.12e2), SC_(0.1e1), SC_(-0.4104320049285888671875e1), SC_(0.268799591064453125e1), SC_(0.30458750654711342869502533364737000405804708595095e0), SC_(-0.1484860501237992171651972432543966440056062459275e0), + SC_(0.12e2), SC_(0.2e1), SC_(-0.608856868743896484375e1), SC_(0.39724438190460205078125e1), SC_(-0.5582675526510436143785033474870655984990793661167e-1), SC_(0.61242256488549371093840283162281354130703419721366e0), + SC_(0.12e2), SC_(0.2e1), SC_(-0.5067639827728271484375e1), SC_(-0.2642840862274169921875e1), SC_(0.57762273922813702670312547143053613135865478522471e-1), SC_(0.89467368103216250903593726167898427392831760912897e-1), + SC_(0.12e2), SC_(0.2e1), SC_(-0.38313934803009033203125e1), SC_(0.20056588649749755859375e1), SC_(-0.42941619080976773240453866876589396988871610508178e-1), SC_(-0.50871385318399433042987283750516259893676730642254e-1), + SC_(0.12e2), SC_(0.2e1), SC_(0.147284042835235595703125e1), SC_(0.416424083709716796875e1), SC_(0.51825648699074333055892028815964550270904059000355e-1), SC_(-0.10089876131468112387439420732079791193884641188359e0), + SC_(0.12e2), SC_(0.3e1), SC_(0.511381053924560546875e1), SC_(-0.4609709262847900390625e1), SC_(-0.10108519880868427744711583188043968871668100666509e0), SC_(0.31771132500505811167610709603346358006973657133146e0), + SC_(0.12e2), SC_(0.4e1), SC_(0.3377315998077392578125e0), SC_(0.5138848781585693359375e1), SC_(-0.58059105198654907735263811769382076272563524851227e-1), SC_(0.4273142209763739783364463020811786791881948792003e0), + SC_(0.12e2), SC_(0.4e1), SC_(0.1473772525787353515625e1), SC_(0.197115957736968994140625e1), SC_(-0.41024515101737243101027456944692878467702298766989e-2), SC_(0.13377726571616940795122092559016241346466072755257e0), + SC_(0.12e2), SC_(0.7e1), SC_(-0.4496031284332275390625e1), SC_(0.187228238582611083984375e1), SC_(0.23956898754783719573830896853758404683165423623079e0), SC_(0.14347650027527815184814112865809198181859490012352e0), + SC_(0.12e2), SC_(0.7e1), SC_(0.3812189579010009765625e1), SC_(-0.129456484317779541015625e1), SC_(0.43140621585108485125047585557723609228214759065268e0), SC_(0.16377494005439894573031547195052139380844415778324e0), + SC_(0.12e2), SC_(0.8e1), SC_(0.3774065494537353515625e1), SC_(-0.34265804290771484375e0), SC_(-0.20819421645773526254571842292855254794810423642849e0), SC_(-0.88103684654905422827754298968080254320021941554714e-1), + SC_(0.12e2), SC_(0.1e2), SC_(-0.545978069305419921875e1), SC_(0.399041461944580078125e1), SC_(-0.10513558814776065919585933800421061721589695158219e0), SC_(0.14291991461924719081404104193932101701739439145562e0), + SC_(0.12e2), SC_(0.12e2), SC_(-0.79252445697784423828125e0), SC_(-0.8495934009552001953125e0), SC_(-0.69126171305047711263782984151979985436482121577315e-2), SC_(0.67075458239189379387343801459016374816130690142161e-2), + SC_(0.12e2), SC_(0.12e2), SC_(0.16081607341766357421875e1), SC_(0.1887936294078826904296875e0), SC_(-0.35948565770119602215153199277620253218324995255481e0), SC_(0.43139248190735410966910261223233082565752671715714e0), + SC_(0.12e2), SC_(0.12e2), SC_(0.4079442501068115234375e1), SC_(-0.858896732330322265625e0), SC_(-0.27170815984256964729436100669503499326191901059043e-1), SC_(0.33000590173998374023736042025291527311242708218748e-1), + SC_(0.12e2), SC_(0.12e2), SC_(0.408801364898681640625e1), SC_(0.7438556849956512451171875e-1), SC_(0.28900428087373455615234833868945900490227729042124e-1), SC_(0.35872707414660024986387224869462672443051259361367e-1), + SC_(0.13e2), SC_(0), SC_(0.5563597202301025390625e1), SC_(-0.46342029571533203125e1), SC_(-0.34264387142407785677612584851183910340829977463927e0), SC_(0), + SC_(0.13e2), SC_(0.1e1), SC_(-0.4767066478729248046875e1), SC_(0.209027576446533203125e1), SC_(0.11725833641453014526935161836139872664101869100451e0), SC_(-0.20504339867590444892040571712285801263671980128967e0), + SC_(0.13e2), SC_(0.2e1), SC_(-0.2494990825653076171875e1), SC_(-0.238145351409912109375e1), SC_(-0.56805075141397946060790510451429282557823473149221e-2), SC_(-0.11234943907190646514087058717349791721653688611845e0), + SC_(0.13e2), SC_(0.3e1), SC_(-0.4132814884185791015625e1), SC_(0.30071017742156982421875e1), SC_(-0.78678273483682131621120611026667211062977284162186e-1), SC_(0.33587175914642908695953518344789438884198624921631e-1), + SC_(0.13e2), SC_(0.3e1), SC_(-0.4044706821441650390625e1), SC_(-0.2353971004486083984375e1), SC_(-0.20461244355883492358700355876613584393321436233666e0), SC_(0.20190077435185182644255057733199514569936535316107e0), + SC_(0.13e2), SC_(0.3e1), SC_(0.839149534702301025390625e0), SC_(0.6070216655731201171875e1), SC_(-0.29914795433974747119414384477659869789133427926834e0), SC_(0.2222204666116811334853936680078677685742460998117e0), + SC_(0.13e2), SC_(0.3e1), SC_(0.405716800689697265625e1), SC_(0.20926516056060791015625e1), SC_(0.24581531905440887337165576963344258487806198376217e0), SC_(-0.12857463821698924356568802633629993019344540913099e-2), + SC_(0.13e2), SC_(0.4e1), SC_(-0.4948431491851806640625e1), SC_(-0.90608723461627960205078125e-1), SC_(0.30276993176530380699005482861261503860275299009006e-1), SC_(-0.11480589973698922737358901687378217339935362771337e-1), + SC_(0.13e2), SC_(0.4e1), SC_(-0.3106113433837890625e1), SC_(0.181916487216949462890625e1), SC_(-0.10221553802209164674261963778374548598949137453384e-3), SC_(-0.15692926767151212980219810515941756427410625117683e-3), + SC_(0.13e2), SC_(0.4e1), SC_(0.146112060546875e1), SC_(0.56753559112548828125e1), SC_(-0.24465562841781141867870193998394410152545968273016e0), SC_(-0.21040556941653282743961137825203246852631284540021e0), + SC_(0.13e2), SC_(0.5e1), SC_(-0.15548093318939208984375e1), SC_(-0.4107154369354248046875e1), SC_(-0.37255101991341841703811428303932083505129447414448e-1), SC_(-0.32134509062151516471517305200954289919761799538696e0), + SC_(0.13e2), SC_(0.5e1), SC_(0.561185550689697265625e1), SC_(0.2989013195037841796875e1), SC_(0.19733982733535325402119142359121490906842909229201e-1), SC_(-0.18865318251931835434720296167311384244576051091309e-1), + SC_(0.13e2), SC_(0.6e1), SC_(0.4796903133392333984375e1), SC_(0.627162933349609375e1), SC_(-0.28687709935217613721878535434909230712657517310563e0), SC_(0.19922801517103053174413461992162351353974706470946e-1), + SC_(0.13e2), SC_(0.6e1), SC_(0.4798676013946533203125e1), SC_(-0.5152803897857666015625e1), SC_(-0.25575742997096556614451479209924309013467489147284e0), SC_(-0.13942323363719836584183212564167403336038326505597e0), + SC_(0.13e2), SC_(0.7e1), SC_(-0.54972438812255859375e1), SC_(0.769059360027313232421875e0), SC_(-0.19497959434631629776047031260437326259623602366459e0), SC_(0.24558900467488126934419855593624532012024041831269e0), + SC_(0.13e2), SC_(0.7e1), SC_(-0.16472432613372802734375e1), SC_(0.168770539760589599609375e1), SC_(-0.15961207820522390617719231580189065049751553167995e0), SC_(0.1494210079764469029096489460298243256687558286567e0), + SC_(0.13e2), SC_(0.9e1), SC_(-0.4317742824554443359375e1), SC_(-0.2063424587249755859375e1), SC_(0.27767009520380653405301845519378686016174244934479e0), SC_(0.79464968952704258217721617229068668325054035038998e-1), + SC_(0.13e2), SC_(0.9e1), SC_(-0.22591744363307952880859375e0), SC_(0.474472332000732421875e1), SC_(0.19528996438178665835152785567309001202860316287507e-4), SC_(-0.65202711083197955861140784494464054690607618696963e-4), + SC_(0.13e2), SC_(0.9e1), SC_(0.803806602954864501953125e0), SC_(0.60156345367431640625e0), SC_(-0.28791627397051741658879106612769276285076875577257e0), SC_(0.34066161617452077696332090173091377733679139336719e0), + SC_(0.13e2), SC_(0.1e2), SC_(-0.617870330810546875e1), SC_(-0.3890130519866943359375e1), SC_(0.13950798854909310812169404991015897627109838918204e-8), SC_(-0.36117933836913461210782558965236230028535432831023e-8), + SC_(0.13e2), SC_(0.1e2), SC_(-0.29013309478759765625e1), SC_(0.592978668212890625e1), SC_(0.12655980741670840410151717053619078308123885093993e-4), SC_(-0.52377498950728135706136984568134532260431944986259e-5), + SC_(0.13e2), SC_(0.11e2), SC_(0.3740127980709075927734375e0), SC_(0.6052441120147705078125e1), SC_(0.10961588479261529529127520530621341879177901522438e-3), SC_(0.7554173665231828914804603050166484427373092841182e-4), + SC_(0.13e2), SC_(0.11e2), SC_(0.4916776716709136962890625e0), SC_(-0.32330300807952880859375e1), SC_(0.10661153208677010392189273964845139154131288955771e-2), SC_(-0.1681794653942100270783933643690313988236651463244e-2), + SC_(0.13e2), SC_(0.12e2), SC_(-0.25963599681854248046875e1), SC_(-0.4182485103607177734375e1), SC_(-0.94970691121801412930841933904618901184068118727506e-3), SC_(-0.71993408734104821082349156105458451553393279007511e-4), + SC_(0.13e2), SC_(0.12e2), SC_(-0.129588901996612548828125e0), SC_(-0.37171680927276611328125e1), SC_(0.5136493499212248769207481677103474845446436001796e-10), SC_(-0.36959119559845479635087164033205085393460725001906e-10), + SC_(0.13e2), SC_(0.12e2), SC_(0.120613324642181396484375e1), SC_(-0.90159952640533447265625e0), SC_(-0.81403870943419410638037846203390530815018392887066e-1), SC_(0.45672963534868625466751655372653078387114323756823e0), + SC_(0.13e2), SC_(0.12e2), SC_(0.528204822540283203125e1), SC_(-0.13512732982635498046875e1), SC_(-0.17635048049194146385471497773079906569327805971894e0), SC_(0.98022760626077965936319139846056567882437982131607e-1), + SC_(0.13e2), SC_(0.13e2), SC_(-0.382866191864013671875e1), SC_(-0.379355621337890625e1), SC_(-0.90356158188859353887191344949547031520799246540727e-3), SC_(-0.12615285292913765846474681096464572473295060090888e-2), + SC_(0.14e2), SC_(0), SC_(-0.605432987213134765625e1), SC_(0.1042837619781494140625e1), SC_(-0.53162534399387447027692326131316024132962317781277e0), SC_(0), + SC_(0.14e2), SC_(0.1e1), SC_(-0.537614154815673828125e1), SC_(0.174082887172698974609375e1), SC_(-0.10848528406558257115804504364086818687161873730321e-1), SC_(0.63186602546835839608859029804237595073253494882396e-1), + SC_(0.14e2), SC_(0.1e1), SC_(-0.34408271312713623046875e1), SC_(-0.2765136063098907470703125e0), SC_(-0.27002888552257593138356500763655412827499887947742e0), SC_(0.76629719571216132086270428583471175739673403937352e-1), + SC_(0.14e2), SC_(0.1e1), SC_(-0.3118896484375e1), SC_(0.194431388378143310546875e1), SC_(0.89934094093341326638148545329522648298868109755739e-1), SC_(-0.22947321144850006584851277354241806981606008208288e0), + SC_(0.14e2), SC_(0.1e1), SC_(-0.2949567317962646484375e1), SC_(0.62388896942138671875e1), SC_(-0.63237490091956870193598093066106674126229975855541e0), SC_(0.28029768674266792593951083152901991107258776104463e-1), + SC_(0.14e2), SC_(0.1e1), SC_(0.4033493697643280029296875e0), SC_(0.6065327167510986328125e1), SC_(0.4573951416969808691931508760300540935371964966692e0), SC_(-0.10125426200955844588815691470737971426284651982084e0), + SC_(0.14e2), SC_(0.1e1), SC_(0.33924887180328369140625e1), SC_(-0.23534438610076904296875e1), SC_(0.86691689490004927585189564352166575859444713082536e-1), SC_(0.87169919511907068594509246590566143789107267948305e-1), + SC_(0.14e2), SC_(0.2e1), SC_(-0.3197202205657958984375e1), SC_(0.588922119140625e1), SC_(0.82014157452808707859573396194563930255163921453933e-1), SC_(-0.82430213806611347159021848897870338501372153592935e-1), + SC_(0.14e2), SC_(0.2e1), SC_(0.20006997585296630859375e1), SC_(0.118571555614471435546875e1), SC_(-0.23952154883733628281755344437063840237263810047363e0), SC_(0.23233154515265614436348187402577410941478067094446e0), + SC_(0.14e2), SC_(0.3e1), SC_(-0.6000283718109130859375e1), SC_(-0.5667644500732421875e1), SC_(0.18021395527378150426232309306068544203547826253891e0), SC_(-0.63670690576591548821464981089617880479460201997529e0), + SC_(0.14e2), SC_(0.3e1), SC_(0.39930970668792724609375e1), SC_(-0.2177291393280029296875e1), SC_(-0.24399250396111894343639334246644744209799671515606e0), SC_(0.6196086567082813754036315172685218051490343857915e-1), + SC_(0.14e2), SC_(0.4e1), SC_(-0.5302167415618896484375e1), SC_(0.147140753269195556640625e1), SC_(0.10658705850230735274734268117564694714233863191793e0), SC_(-0.44757434635156715744783889188897231215482547543134e-1), + SC_(0.14e2), SC_(0.4e1), SC_(-0.42539081573486328125e1), SC_(-0.148484051227569580078125e0), SC_(-0.28422830628095944295459326574389573647564559141563e0), SC_(0.19193129287656205865255733746274441443577886014689e0), + SC_(0.14e2), SC_(0.5e1), SC_(0.2462371826171875e1), SC_(0.169020211696624755859375e1), SC_(0.16562000518224774073491407468699530347488061468426e0), SC_(-0.24363621623597510111511828584662398848400921953322e0), + SC_(0.14e2), SC_(0.6e1), SC_(0.596593952178955078125e1), SC_(-0.3653766214847564697265625e0), SC_(-0.72542687539052897269167348320491933495115726450976e-1), SC_(-0.10129954487608121490196649695777331785175066413949e0), + SC_(0.14e2), SC_(0.7e1), SC_(0.437421417236328125e1), SC_(0.4770869731903076171875e1), SC_(0.12731277348239547383554151042385446443359378302837e0), SC_(-0.29343072225138207174781580688193718890655766003548e0), + SC_(0.14e2), SC_(0.9e1), SC_(0.289339160919189453125e1), SC_(0.3429374217987060546875e1), SC_(0.27595075078722537272590756953488182184571556803982e-3), SC_(-0.16977916992400196699914297443137032285403371433635e-3), + SC_(0.14e2), SC_(0.1e2), SC_(-0.4928920269012451171875e1), SC_(-0.15731518268585205078125e1), SC_(0.24424583501847388522395295761698136987535965546016e0), SC_(-0.57542750688882947339626227969189510771613493903897e-2), + SC_(0.14e2), SC_(0.1e2), SC_(0.6214138507843017578125e1), SC_(-0.116089141368865966796875e1), SC_(0.91447854943543293048351438782054774574950471237155e-10), SC_(0.12991563620838806281523576753838105927721720095285e-9), + SC_(0.14e2), SC_(0.11e2), SC_(-0.509906482696533203125e1), SC_(0.347402095794677734375e1), SC_(-0.14756776585094385087678895196884784502531056426028e0), SC_(-0.83537863415678598720706795355100272107195903565931e-1), + SC_(0.14e2), SC_(0.11e2), SC_(-0.256143283843994140625e1), SC_(-0.22669765949249267578125e1), SC_(-0.21784869237271308964355278847759537812709716201558e-1), SC_(-0.432533469035583393536894966419522308691924530118e-2), + SC_(0.14e2), SC_(0.12e2), SC_(-0.89062178134918212890625e0), SC_(-0.969047009944915771484375e0), SC_(0.11809795123617035206090481553484603584988326258895e0), SC_(0.16096130252118992835925668541986981197633977939608e0), + SC_(0.14e2), SC_(0.12e2), SC_(0.3878519833087921142578125e0), SC_(0.164770162105560302734375e1), SC_(0.48387432126182871389329297745502308805988985367078e-4), SC_(0.63924410383286939916905509206921411782482866255201e-4), + SC_(0.14e2), SC_(0.13e2), SC_(-0.37226655483245849609375e1), SC_(0.10564463138580322265625e1), SC_(0.41883347138134890365878132735363491389848183423895e-3), SC_(0.98141423835953734540878304437127773575620065033463e-3), + SC_(0.14e2), SC_(0.13e2), SC_(0.402100276947021484375e1), SC_(0.28205711841583251953125e1), SC_(-0.34232569502159297025407727081038115846088687879469e-1), SC_(0.57224017444548626285559711037085885821986750440056e-1), + SC_(0.14e2), SC_(0.14e2), SC_(-0.5860907077789306640625e1), SC_(0.3634274005889892578125e0), SC_(0.81262686210318332276779678061498258042023106564922e-6), SC_(-0.20608649398078812059496161767390735108124275129723e-5), + SC_(0.14e2), SC_(0.14e2), SC_(0.26032459735870361328125e1), SC_(0.11247842311859130859375e1), SC_(-0.5090919578401763872943627405251108300050320467391e-4), SC_(-0.19872800654992029295789122786508292812037246742391e-5), + SC_(0.15e2), SC_(0), SC_(-0.27519686222076416015625e1), SC_(-0.29901831150054931640625e1), SC_(-0.25708545830932844896853916631333141878349345602876e0), SC_(0), + SC_(0.15e2), SC_(0.1e1), SC_(0.215900516510009765625e1), SC_(0.14293510913848876953125e1), SC_(-0.46695952478768205589420954677461302675216532160778e-1), SC_(-0.32792992077882673644944047367062987620554377664143e0), + SC_(0.15e2), SC_(0.4e1), SC_(-0.29131815433502197265625e1), SC_(0.575155162811279296875e1), SC_(0.17024866807197617775726906905664710247654348681983e0), SC_(0.27413981237727290345063225044275099845880880653994e0), + SC_(0.15e2), SC_(0.4e1), SC_(-0.53502118587493896484375e0), SC_(-0.509640789031982421875e1), SC_(-0.84056968062822180714048706007567969170569817688051e-2), SC_(0.24199748004145114967632816140713630319996031889192e0), + SC_(0.15e2), SC_(0.5e1), SC_(-0.317697942256927490234375e0), SC_(-0.265069293975830078125e1), SC_(0.29354431375467376526517694856564381884468360870824e0), SC_(-0.24084207633151509397103182168944164433195720701915e0), + SC_(0.15e2), SC_(0.5e1), SC_(0.1394347667694091796875e1), SC_(-0.5292422771453857421875e1), SC_(-0.67142280202753317283722758667918502833513106600653e-1), SC_(0.27268537431854373339572487400824925119701082782333e0), + SC_(0.15e2), SC_(0.6e1), SC_(-0.5141866207122802734375e1), SC_(-0.543011951446533203125e1), SC_(-0.24197890596762349278147213876072311401045090261133e-1), SC_(0.56288477303783856035693899003576348218561691838042e-1), + SC_(0.15e2), SC_(0.6e1), SC_(-0.11788280308246612548828125e0), SC_(-0.542876338958740234375e1), SC_(0.3900829586916176748287216017560510253170003872618e-3), SC_(-0.88742915605236003751861924541813557385596019823595e-3), + SC_(0.15e2), SC_(0.7e1), SC_(-0.32583715915679931640625e1), SC_(-0.105855953693389892578125e1), SC_(-0.47044040992895423959634221127256788015728764837077e-4), SC_(0.98882734291256908175285355352723487015959174592621e-4), + SC_(0.15e2), SC_(0.8e1), SC_(-0.541434574127197265625e1), SC_(-0.4352278232574462890625e1), SC_(0.17534973054182809313653905568510341139328038022501e0), SC_(-0.46779514339106151835563711199742107055703636375295e-1), + SC_(0.15e2), SC_(0.8e1), SC_(-0.51602184772491455078125e0), SC_(-0.961919009685516357421875e0), SC_(0.47135735718280777699368441235706685255524650443233e-1), SC_(-0.29464689804367936189424779906231671261817541609781e0), + SC_(0.15e2), SC_(0.1e2), SC_(0.3937534987926483154296875e0), SC_(0.31241142749786376953125e1), SC_(0.64055376103458070014615702857086874456338385652311e-2), SC_(-0.11311260394061828516088489353442931784539655425181e-2), + SC_(0.15e2), SC_(0.1e2), SC_(0.22992246150970458984375e1), SC_(-0.495580959320068359375e1), SC_(-0.3829624113951033603430519179464179050315240089847e0), SC_(-0.32743077762482792704706805489374685454947467156427e0), + SC_(0.15e2), SC_(0.12e2), SC_(-0.477042484283447265625e1), SC_(0.22684945166110992431640625e0), SC_(0.19764424242827293160211165750613723210460278878257e0), SC_(-0.88120113202544520811451099225540002694751129456273e-1), + SC_(0.15e2), SC_(0.12e2), SC_(-0.30813977718353271484375e1), SC_(0.546906375885009765625e1), SC_(0.71695558996220562641365813788165662410313453979638e-13), SC_(-0.25739562769518467006074240596495565975169345508308e-13), + SC_(0.15e2), SC_(0.14e2), SC_(-0.20891387760639190673828125e0), SC_(0.34108579158782958984375e0), SC_(0.54698737617913189595892579722915474423241472104915e-10), SC_(-0.86968564463251914571365038933400073976678383852869e-9), + SC_(0.15e2), SC_(0.15e2), SC_(0.5574726581573486328125e1), SC_(0.32205302715301513671875e1), SC_(-0.357140970001297258623419278009446813076660545654e-3), SC_(-0.87697929196496430306823545734687921239220086339943e-3), + SC_(0.16e2), SC_(0), SC_(-0.21114356517791748046875e1), SC_(0.524550914764404296875e1), SC_(-0.30164010413733437677023132010424343345736624656443e0), SC_(0), + SC_(0.16e2), SC_(0), SC_(-0.142287528514862060546875e1), SC_(0.6087810993194580078125e1), SC_(-0.24478745633908751894176257996158654839601881007758e0), SC_(0), + SC_(0.16e2), SC_(0.2e1), SC_(-0.3573507785797119140625e1), SC_(-0.4364034175872802734375e1), SC_(0.36723587092285428471934531836579931088413461017845e0), SC_(0.30725859561826850111385807315484660068640154247347e0), + SC_(0.16e2), SC_(0.2e1), SC_(0.33949272632598876953125e1), SC_(0.5918058872222900390625e1), SC_(0.38713988102908705646921615016623099572054061775614e0), SC_(-0.34663460445500759434174600673548629382828652016821e0), + SC_(0.16e2), SC_(0.3e1), SC_(0.38509771823883056640625e1), SC_(-0.4073082447052001953125e1), SC_(-0.36778109352194463975248522385157654761928856079281e0), SC_(-0.13305285285962638753856672704410573200059677433374e0), + SC_(0.16e2), SC_(0.4e1), SC_(-0.3384979248046875e1), SC_(0.1283912181854248046875e1), SC_(0.18570709498706729902813091746931106263786734655324e0), SC_(-0.41223530567641324423179101335768666111796283838888e0), + SC_(0.16e2), SC_(0.5e1), SC_(-0.1996487140655517578125e1), SC_(0.28026053905487060546875e1), SC_(0.16274117936700606410723300178074518257205264645725e-1), SC_(0.13042077266364163349627709325169572680431448178276e0), + SC_(0.16e2), SC_(0.5e1), SC_(0.22032878398895263671875e1), SC_(0.12703235447406768798828125e0), SC_(0.12827484160659902689100193844808704749479550073073e0), SC_(0.94545033508102171475362719074623330640400067123789e-1), + SC_(0.16e2), SC_(0.6e1), SC_(-0.29020578861236572265625e1), SC_(0.44871044158935546875e1), SC_(-0.14690737711863346300016730571106598295308155192611e-1), SC_(0.65977454075241443355602407060131957342756667792814e-1), + SC_(0.16e2), SC_(0.6e1), SC_(-0.245467090606689453125e1), SC_(0.35781395435333251953125e1), SC_(0.30752201097773163184960254043123193606669534519961e0), SC_(-0.17702041056258671883165959934037359004898382059187e0), + SC_(0.16e2), SC_(0.6e1), SC_(-0.4718778133392333984375e0), SC_(-0.389361917972564697265625e0), SC_(-0.4044058400342541826500656935196683793204225701439e0), SC_(-0.42093381014426182845265895843452201374875064903161e0), + SC_(0.16e2), SC_(0.6e1), SC_(0.195046722888946533203125e1), SC_(-0.6268721103668212890625e1), SC_(-0.30633168788996373215448357011147037745745784175948e0), SC_(-0.26652008292786385470946722315414301352261877546944e-1), + SC_(0.16e2), SC_(0.6e1), SC_(0.27866938114166259765625e1), SC_(-0.11623651981353759765625e1), SC_(0.26901154779721852128856462691599978142662361317583e0), SC_(-0.22248023802407371024099152345059398016094415775155e0), + SC_(0.16e2), SC_(0.6e1), SC_(0.432775974273681640625e1), SC_(0.36455266475677490234375e1), SC_(0.31640980020674094175782144672412490150931285166082e0), SC_(-0.37506988555329824607521146066632953380244625793576e-1), + SC_(0.16e2), SC_(0.7e1), SC_(-0.267037677764892578125e1), SC_(0.1169764995574951171875e1), SC_(0.1549257272150274130650482871901051339677942625486e0), SC_(-0.44593381323087072616151350368035146251490576526064e0), + SC_(0.16e2), SC_(0.8e1), SC_(-0.624547100067138671875e1), SC_(-0.49113941192626953125e0), SC_(-0.17613107326374166956267033885056787871716661380931e-8), SC_(0.1768810410118516264122556522767812122676486162452e-8), + SC_(0.16e2), SC_(0.1e2), SC_(0.2996160030364990234375e1), SC_(0.321604442596435546875e1), SC_(0.90683117425697861931620687517507958528138889720094e-6), SC_(0.83556168172954829950264365891660988999746104561437e-6), + SC_(0.16e2), SC_(0.11e2), SC_(-0.271818256378173828125e1), SC_(-0.3873643398284912109375e1), SC_(-0.12112084363554166073714127892182840730677993762206e-2), SC_(-0.60190691920327979427421713360733198430453024564436e-2), + SC_(0.16e2), SC_(0.11e2), SC_(-0.3599366247653961181640625e0), SC_(-0.31719396114349365234375e1), SC_(-0.12482187327234307976708842155900018324196564045428e-2), SC_(0.43287573457406611999239316695512907826168224216788e-3), + SC_(0.16e2), SC_(0.14e2), SC_(-0.6096050739288330078125e1), SC_(-0.39123890399932861328125e1), SC_(-0.15221364414761734465052486192029704906822047294341e-9), SC_(0.73419342446747059329557630271550082627570760570294e-9), + SC_(0.16e2), SC_(0.15e2), SC_(-0.5199747562408447265625e1), SC_(0.95767533779144287109375e0), SC_(0.56684456816817302627291609727302835441050046059808e-1), SC_(-0.24433393482033903664944617767154331497287859235478e0), + SC_(0.16e2), SC_(0.16e2), SC_(-0.34403278827667236328125e1), SC_(0.35251140594482421875e1), SC_(0.19004626196368253820245382444888355684005799383552e-8), SC_(-0.28109257030144620003916850670254255840130425975144e-9), + SC_(0.16e2), SC_(0.16e2), SC_(0.5256219387054443359375e1), SC_(0.2109048366546630859375e1), SC_(-0.34461059578475670777955384794247790817516942263014e-1), SC_(0.36399374527736499137866403239210798833169682291803e-1), + SC_(0.17e2), SC_(0.1e1), SC_(-0.2955873966217041015625e1), SC_(-0.181444680690765380859375e1), SC_(-0.97564273624825329574548143955020698822287563480684e-1), SC_(-0.39247177640032355606218617165019499553352359679161e0), + SC_(0.17e2), SC_(0.1e1), SC_(-0.29020233154296875e1), SC_(0.464881610870361328125e1), SC_(0.14430994669294093778639058620178920061780676326958e-1), SC_(0.22669336849140254616918915768514234432764722809716e0), + SC_(0.17e2), SC_(0.1e1), SC_(0.103357350826263427734375e1), SC_(0.6191986560821533203125e1), SC_(0.34204836113388779701085638221116835266801839934059e0), SC_(-0.31281153843271759834152781794460561375581104704408e-1), + SC_(0.17e2), SC_(0.1e1), SC_(0.4183556079864501953125e1), SC_(-0.5412806987762451171875e1), SC_(-0.21730005987468077163421102493427700013644250153143e0), SC_(-0.25776896365563929520656090933849499205300231225488e0), + SC_(0.17e2), SC_(0.2e1), SC_(-0.5956976413726806640625e1), SC_(-0.36576316356658935546875e1), SC_(-0.14930931820863650916175002869357807864967820277616e0), SC_(0.24981113217001939838830337252416848919161679654162e0), + SC_(0.17e2), SC_(0.5e1), SC_(0.20358726978302001953125e1), SC_(-0.369507122039794921875e1), SC_(-0.24844841018528621188257490831458920935003576630695e-1), SC_(-0.97566362684719232241660033646251248646442211940867e-2), + SC_(0.17e2), SC_(0.7e1), SC_(-0.836547374725341796875e0), SC_(0.4296808719635009765625e1), SC_(-0.46910932254297333811038538563424423092614844495962e-1), SC_(0.19809144657372382547097207431267057795142209042387e0), + SC_(0.17e2), SC_(0.9e1), SC_(-0.215844440460205078125e1), SC_(-0.4782807826995849609375e1), SC_(-0.16050610786716661727972736656042909291139330469833e0), SC_(-0.21840410906109625287558013106077099200913645142654e0), + SC_(0.17e2), SC_(0.9e1), SC_(0.13484210968017578125e1), SC_(-0.47215290069580078125e1), SC_(0.28202060318943414326653760815046818650570592901644e-1), SC_(0.34206586101440189881672233691319484207471602990613e0), + SC_(0.17e2), SC_(0.9e1), SC_(0.26299114227294921875e1), SC_(0.1882200717926025390625e1), SC_(0.97619561959928325849652756826390506319931833455586e-1), SC_(0.27688822741859913651081214803381984093943467380885e0), + SC_(0.17e2), SC_(0.9e1), SC_(0.552706050872802734375e1), SC_(-0.3554541110992431640625e1), SC_(0.2084887873521145402352802891490946959488051473673e0), SC_(-0.13509348236780155984031744104667642176243969268266e0), + SC_(0.17e2), SC_(0.1e2), SC_(0.181512153148651123046875e1), SC_(0.565128040313720703125e1), SC_(-0.12453300389782714226258312007808473489777645903901e0), SC_(0.44681342452270240144436989420903828246680804499614e-2), + SC_(0.17e2), SC_(0.1e2), SC_(0.26170427799224853515625e1), SC_(-0.1882215976715087890625e1), SC_(-0.16748158922146434393009935420874310154252050789084e0), SC_(-0.45894997481323039109359289761400908120013314795618e-2), + SC_(0.17e2), SC_(0.12e2), SC_(-0.197214353084564208984375e1), SC_(0.142578971385955810546875e1), SC_(-0.65566491253312408736913042187457221449481044788811e-1), SC_(-0.38361189939459540594299963129740768991259982446014e0), + SC_(0.17e2), SC_(0.12e2), SC_(0.20350577831268310546875e1), SC_(0.2039525508880615234375e1), SC_(0.17693200230281199543285251350964408758389654777225e0), SC_(-0.13687468330591658206315912099113365173602354914054e0), + SC_(0.17e2), SC_(0.13e2), SC_(0.310098171234130859375e1), SC_(-0.4785091400146484375e1), SC_(-0.71531449574228331988258016649483569913383503398036e-16), SC_(-0.51681178141076842487307687269357155394350483409232e-16), + SC_(0.17e2), SC_(0.13e2), SC_(0.5460363864898681640625e1), SC_(0.224959087371826171875e1), SC_(-0.17551352441781166016265666377530605324397529676416e0), SC_(-0.25630047343058630760684371123247223927449683785414e0), + SC_(0.17e2), SC_(0.13e2), SC_(0.6041368007659912109375e1), SC_(-0.93331897258758544921875e0), SC_(0.73723047429671398827326370004157728823967225213225e-6), SC_(0.34099039594775504707388653975253319173365956971267e-6), + SC_(0.17e2), SC_(0.14e2), SC_(0.170634615421295166015625e1), SC_(0.349086284637451171875e1), SC_(0.72451439142438771873066544500037006510143091924304e-1), SC_(-0.40412851380067314418759185148649412853811774732759e0), + SC_(0.17e2), SC_(0.14e2), SC_(0.5842761516571044921875e1), SC_(-0.25807273387908935546875e0), SC_(-0.18272117743683244344280559231817977644966582988605e-3), SC_(0.9314406997671886086788135796199050624924582067747e-4), + SC_(0.17e2), SC_(0.15e2), SC_(0.5955392360687255859375e1), SC_(-0.518670737743377685546875e0), SC_(0.38568805465044296160643576413239450556303487861639e-7), SC_(-0.52080944620264301722864207859762330406951175168727e-6), + SC_(0.17e2), SC_(0.16e2), SC_(0.23042104244232177734375e1), SC_(0.51989536285400390625e1), SC_(-0.14235099754120138302712090299948011524376912627516e-2), SC_(-0.20613633231116752504086778986228284468071093005142e-1), + SC_(0.18e2), SC_(0.1e1), SC_(0.175070858001708984375e1), SC_(0.6065383434295654296875e1), SC_(-0.57082986727100799966376197708815116896791451159807e-1), SC_(0.12633178835218266651846860030378252709546049656524e-1), + SC_(0.18e2), SC_(0.3e1), SC_(0.24663555622100830078125e1), SC_(0.43499965667724609375e1), SC_(0.19340263325020317319565521400561335969501527162468e0), SC_(0.10157884110096902348568665156163132454702318149545e0), + SC_(0.18e2), SC_(0.5e1), SC_(-0.13388669490814208984375e1), SC_(0.46427764892578125e1), SC_(0.93746689283724154186989587930018969983913010151864e-1), SC_(0.25837326172328637892598825027944681409145618209144e0), + SC_(0.18e2), SC_(0.5e1), SC_(0.33598711490631103515625e1), SC_(-0.4953685283660888671875e1), SC_(-0.21049292002975820094429719053689367442422250561918e0), SC_(-0.80268743862826196805505040424097720925062995929297e-1), + SC_(0.18e2), SC_(0.5e1), SC_(0.5976083278656005859375e1), SC_(-0.1903387010097503662109375e0), SC_(0.33336395845935480748654008907899166877070224813372e0), SC_(-0.46784284098456010515273796366274068955703656780187e0), + SC_(0.18e2), SC_(0.6e1), SC_(0.38131678104400634765625e0), SC_(-0.56470012664794921875e1), SC_(-0.45389121887510714251786875069325082259187660495763e0), SC_(-0.3636869855806322491131800646488995912875017245459e0), + SC_(0.18e2), SC_(0.6e1), SC_(0.551486909389495849609375e0), SC_(-0.18524148464202880859375e1), SC_(-0.38158719637616225658322334946950316168812672155382e-2), SC_(-0.31937730810263509553985832555443741111210057264651e-1), + SC_(0.18e2), SC_(0.7e1), SC_(-0.21025569438934326171875e1), SC_(-0.119908320903778076171875e1), SC_(-0.71269543331932737981023645852349941730664012233064e-1), SC_(-0.11900329281349591873069118865528905048588445719022e0), + SC_(0.18e2), SC_(0.7e1), SC_(0.1081864833831787109375e1), SC_(0.20436699390411376953125e1), SC_(-0.53477180599598900950199584293983555920649774869178e-1), SC_(0.31431962802835368220006289448379452054044238375947e0), + SC_(0.18e2), SC_(0.8e1), SC_(-0.64876520633697509765625e0), SC_(0.682464420795440673828125e0), SC_(0.14895032902715554125555227723295425237885293833755e0), SC_(-0.16074674721142079010011541247203459710967790591566e0), + SC_(0.18e2), SC_(0.8e1), SC_(0.4204979419708251953125e1), SC_(0.31924116611480712890625e0), SC_(-0.15168132209206535607331102606659155073722499238054e0), SC_(0.10104656381360884077413004489913001820737352390456e0), + SC_(0.18e2), SC_(0.8e1), SC_(0.5940637111663818359375e1), SC_(-0.179618394374847412109375e1), SC_(-0.25492833684734865003009618398125599858871105894793e-1), SC_(-0.1077576472069137991373822880503137086226339682438e0), + SC_(0.18e2), SC_(0.9e1), SC_(-0.53344440460205078125e1), SC_(0.3031736850738525390625e1), SC_(-0.83947836359991750619658189371056576334422062672375e-1), SC_(0.12754820780109011736320875520892865264583769317998e0), + SC_(0.18e2), SC_(0.9e1), SC_(0.160719335079193115234375e1), SC_(-0.110090769827365875244140625e0), SC_(0.1036323358714537260906275603417508860240301593312e0), SC_(-0.15818373686402031529796566835321555859423360074547e0), + SC_(0.18e2), SC_(0.12e2), SC_(-0.4904686450958251953125e1), SC_(-0.557145893573760986328125e0), SC_(0.30813603446843837650613490096272411252239179283899e0), SC_(-0.13121064124841743212527971509082703248974655954301e0), + SC_(0.18e2), SC_(0.13e2), SC_(-0.4764343738555908203125e1), SC_(0.33112971782684326171875e1), SC_(-0.14172877770700810254702956823985113551409039200517e0), SC_(0.19221102638370231884553477762342092005479877076477e0), + SC_(0.18e2), SC_(0.14e2), SC_(0.6204075336456298828125e1), SC_(0.5687473773956298828125e1), SC_(-0.21475363535678211921353784261963668166865908223984e-13), SC_(-0.40654923253521176415572968274979130931676486109898e-13), + SC_(0.18e2), SC_(0.15e2), SC_(0.34153645038604736328125e1), SC_(-0.4538040637969970703125e1), SC_(-0.64630690507726265702207930730288864426209264030233e-7), SC_(-0.11123127133210209567433481768405237677577325499377e-6), + SC_(0.18e2), SC_(0.16e2), SC_(-0.38164026737213134765625e1), SC_(0.282684326171875e0), SC_(-0.92252043870808798754167677507739202196175310946425e-3), SC_(-0.48113358591534906292868512997536750138755773474584e-2), + SC_(0.18e2), SC_(0.16e2), SC_(-0.11353113651275634765625e1), SC_(0.543939876556396484375e1), SC_(0.28982298981783941149793123109343170759287834327903e0), SC_(-0.39205270969821898686779859494721409809720696544287e0), + SC_(0.18e2), SC_(0.16e2), SC_(0.3265987396240234375e1), SC_(0.185117065906524658203125e1), SC_(-0.10594682689944096333889579066944593920060325794684e-13), SC_(-0.45994081326825694445180471752044919412938884659682e-13), + SC_(0.18e2), SC_(0.17e2), SC_(0.29616458415985107421875e1), SC_(-0.4398264408111572265625e1), SC_(0.59111318036142449142132583269351950447175230015975e-12), SC_(0.42893643601237808320443506527189231338043450164471e-12), + SC_(0.18e2), SC_(0.18e2), SC_(0.2519867718219757080078125e0), SC_(0.143170928955078125e1), SC_(0.69444795446057866403253169724435897525729117164794e-11), SC_(0.51491928114950666353533976551747807660320598510408e-11), + SC_(0.19e2), SC_(0), SC_(-0.4360961437225341796875e1), SC_(-0.212550258636474609375e1), SC_(0.17779208620920819242893021316966842617196832027202e0), SC_(0), + SC_(0.19e2), SC_(0.1e1), SC_(0.3593729496002197265625e1), SC_(0.4872873783111572265625e1), SC_(0.753471226678863467837734232028748689414287271732e-1), SC_(-0.46545930577990764663280377756781252535757029650398e0), + SC_(0.19e2), SC_(0.2e1), SC_(-0.3347132205963134765625e1), SC_(0.29699370861053466796875e1), SC_(-0.6056010975298908675661440068943333305151595611906e0), SC_(0.21648223607036281723163736488593602681085437906058e0), + SC_(0.19e2), SC_(0.4e1), SC_(0.2359915256500244140625e1), SC_(0.4676140308380126953125e1), SC_(0.25619103669659706784223773631846360391309063340523e0), SC_(-0.37408862169435468863314190941076967597276790174712e-1), + SC_(0.19e2), SC_(0.6e1), SC_(-0.7250115871429443359375e0), SC_(0.2091255664825439453125e1), SC_(0.11580958008221846542244366097307849008493876182808e0), SC_(-0.21817197227426580088998672141507994766626450745348e-2), + SC_(0.19e2), SC_(0.7e1), SC_(0.40428676605224609375e1), SC_(-0.63148774206638336181640625e-1), SC_(0.29555915435281645012312596416260749423021427021104e0), SC_(-0.13988129014403976755932941334904969150532455975467e0), + SC_(0.19e2), SC_(0.7e1), SC_(0.567075634002685546875e1), SC_(-0.572455883026123046875e1), SC_(0.15292041322774157775387390779521217071940021479753e0), SC_(0.14792428383855150980193546255474025673576709746613e0), + SC_(0.19e2), SC_(0.8e1), SC_(-0.4795370578765869140625e1), SC_(-0.723793923854827880859375e0), SC_(-0.29286335684820725456858496420178789171430571423756e0), SC_(-0.15727753340072474629727086052270231791006602679315e0), + SC_(0.19e2), SC_(0.12e2), SC_(-0.9511549472808837890625e0), SC_(0.168096458911895751953125e1), SC_(-0.35555560035325925301417211691800377905954964720633e-1), SC_(-0.13996060070687245184438677824430489349072710733457e0), + SC_(0.19e2), SC_(0.14e2), SC_(-0.40382061004638671875e1), SC_(-0.3806934356689453125e1), SC_(0.5090350797897085551466266086416085625730950576293e0), SC_(0.56217768140307330616639654576932558161554190530096e-1), + SC_(0.19e2), SC_(0.18e2), SC_(0.32035858631134033203125e1), SC_(0.5270156383514404296875e1), SC_(-0.57392737050886297399737898576446602274735173065534e-21), SC_(-0.40544546449371808546162865184481960023877754648794e-21), + SC_(0.19e2), SC_(0.18e2), SC_(0.557434558868408203125e1), SC_(0.25641357898712158203125e1), SC_(-0.73663467219069562020616141034192393204230840468033e-3), SC_(0.1073621182829047870755874410520251950547777079213e-2), + SC_(0.19e2), SC_(0.19e2), SC_(-0.13231449127197265625e1), SC_(0.710399150848388671875e0), SC_(0.20927935611855942229397269033871938782391309847475e0), SC_(0.28132879105730784934790684797797225042100948740933e0), + SC_(0.2e2), SC_(0), SC_(0.18518922328948974609375e1), SC_(-0.129695618152618408203125e1), SC_(0.28194337062594057783652774564224670370329371043616e0), SC_(0), + SC_(0.2e2), SC_(0), SC_(0.419089221954345703125e1), SC_(-0.34356572628021240234375e1), SC_(-0.10145533702848632311620637882340902397620946671081e0), SC_(0), + SC_(0.2e2), SC_(0.1e1), SC_(0.2973771572113037109375e1), SC_(-0.4879449367523193359375e1), SC_(0.49015146062890046370876514328844321347761082545908e-1), SC_(0.29066318761749610083362526171043527981340016444775e0), + SC_(0.2e2), SC_(0.3e1), SC_(-0.523828029632568359375e1), SC_(-0.22804915904998779296875e1), SC_(0.2756969730616984461702317334375385552861411106595e0), SC_(-0.17219183703488598027550250093292873812108836273016e0), + SC_(0.2e2), SC_(0.3e1), SC_(-0.4570482730865478515625e1), SC_(-0.29929668903350830078125e1), SC_(-0.75480479938248850980634649558184299375968804101343e-1), SC_(-0.36078192294036965836559847702790905450976716111303e-1), + SC_(0.2e2), SC_(0.3e1), SC_(-0.3658396303653717041015625e0), SC_(0.18125046789646148681640625e0), SC_(-0.39798644754682595723691868152136138944520636879261e0), SC_(-0.24059891903689602820634046188990162914500745527235e0), + SC_(0.2e2), SC_(0.5e1), SC_(-0.3568611621856689453125e1), SC_(-0.4959176540374755859375e1), SC_(0.451312815641806818347744396231646703911408874332e-1), SC_(0.15805255740746552946631957352094906770895015755439e-1), + SC_(0.2e2), SC_(0.5e1), SC_(-0.136743485927581787109375e1), SC_(0.4813317775726318359375e1), SC_(0.12386579484933731481979934899486697855270982047988e0), SC_(-0.22425324980956281609546272536777057329042318313411e0), + SC_(0.2e2), SC_(0.5e1), SC_(0.482901763916015625e1), SC_(0.424260044097900390625e1), SC_(0.16927660442615163242782649766084369287619326605903e0), SC_(-0.16683911998554189054065839864447833053233424456092e0), + SC_(0.2e2), SC_(0.7e1), SC_(-0.37716350555419921875e1), SC_(0.6227814197540283203125e1), SC_(-0.40543184616494956730083894131234778144262741323614e0), SC_(0.16551736932863612649466801839541361240219820437037e0), + SC_(0.2e2), SC_(0.7e1), SC_(0.387690258026123046875e1), SC_(-0.6208118915557861328125e1), SC_(0.18518536161985634576342383710393551398022844389437e-1), SC_(0.10737804853089673114536849109410293454449619908027e-1), + SC_(0.2e2), SC_(0.7e1), SC_(0.616154193878173828125e1), SC_(0.5646119594573974609375e1), SC_(-0.30270484781340871320070838726969163920444803164192e-3), SC_(0.11711672914631801275038710657303566077082801915522e-2), + SC_(0.2e2), SC_(0.8e1), SC_(-0.44194812774658203125e1), SC_(-0.4338510036468505859375e1), SC_(-0.24235394721786425158529197457244252442536508656378e0), SC_(0.36767319975997567222193184230305680282114868661045e-1), + SC_(0.2e2), SC_(0.9e1), SC_(-0.38992140293121337890625e1), SC_(0.218198871612548828125e1), SC_(-0.29409966858298028413394092272393217271957407558631e0), SC_(-0.2958366586408468808998636067732372594425246844194e0), + SC_(0.2e2), SC_(0.9e1), SC_(0.409140682220458984375e1), SC_(-0.59264469146728515625e1), SC_(0.37249404279670709750857124998962380341713845895572e0), SC_(0.25762747247426359773776798889833414947687083260956e-1), + SC_(0.2e2), SC_(0.11e2), SC_(0.24323694705963134765625e1), SC_(-0.15406930446624755859375e1), SC_(-0.15775255386587670558656979781807228019536699947149e0), SC_(0.45885677606086551458789472192765150386791784141844e0), + SC_(0.2e2), SC_(0.15e2), SC_(-0.216687679290771484375e1), SC_(-0.20997421741485595703125e1), SC_(-0.49075409386099536413736323942155063351143351351404e0), SC_(0.3944608235231354840778581241629003947116781434442e-1), + SC_(0.2e2), SC_(0.15e2), SC_(-0.60010993480682373046875e0), SC_(-0.606073625385761260986328125e-1), SC_(0.14938657008780013797821963104178228468214335389752e-1), SC_(-0.19181392727674065857204834312185128679617024004068e-1), + SC_(0.2e2), SC_(0.15e2), SC_(0.1751677989959716796875e1), SC_(0.31253283023834228515625e1), SC_(-0.22249585765031965180759735401621044286673729213685e0), SC_(0.55384456550691248501344848757321867003528867146345e-1), + SC_(0.2e2), SC_(0.17e2), SC_(0.237985515594482421875e1), SC_(-0.771009981632232666015625e0), SC_(0.32234319570125277099141265404163644943271984942533e-1), SC_(-0.19357235515813378491180157998528573224330370335815e-1), + SC_(0.2e2), SC_(0.17e2), SC_(0.4548780918121337890625e1), SC_(-0.85772359371185302734375e0), SC_(-0.1783970883650208810410072590462495815007860958342e0), SC_(-0.37490916784736454216512163770274075175656338804509e0), + SC_(0.2e2), SC_(0.18e2), SC_(0.42806243896484375e0), SC_(0.35437357425689697265625e1), SC_(0.1107745945729121116713583816882859044761290337035e-5), SC_(0.15668342095662384710699751278424405761920723488877e-5), + SC_(0.2e2), SC_(0.19e2), SC_(0.53311748504638671875e1), SC_(-0.4181415557861328125e1), SC_(-0.29360794196564600824227400804180898934317317747906e-1), SC_(0.37542019709332888370517420902071583914255531491941e-1), + SC_(0.21e2), SC_(0.1e1), SC_(0.2091248035430908203125e1), SC_(0.11432034969329833984375e1), SC_(-0.25963017651416901147198375980087596910425766928618e-1), SC_(-0.56972580737889016141484409524661404467483855145306e-1), + SC_(0.21e2), SC_(0.1e1), SC_(0.503726100921630859375e1), SC_(-0.2841108798980712890625e1), SC_(-0.23985252385210358060293628717719948192576495559588e0), SC_(-0.74322258039467863284983693119267119368017523730504e-1), + SC_(0.21e2), SC_(0.3e1), SC_(0.3963398456573486328125e1), SC_(-0.4498321056365966796875e1), SC_(0.22006067233932770638896047704540393996949523075752e0), SC_(-0.29420863992868461444357609649345685257656133295347e0), + SC_(0.21e2), SC_(0.4e1), SC_(0.108176577091217041015625e1), SC_(-0.31826279163360595703125e1), SC_(-0.2632490324365952976879815921304838598928832765999e0), SC_(0.43602259499698616405568042617580701992346901358396e-1), + SC_(0.21e2), SC_(0.5e1), SC_(-0.11399033069610595703125e1), SC_(0.14145519733428955078125e1), SC_(-0.21747105977965965241859571794632919518205331764646e0), SC_(-0.21929517921879405113114020208486299609589713184999e0), + SC_(0.21e2), SC_(0.6e1), SC_(-0.4329843997955322265625e1), SC_(0.61438446044921875e1), SC_(0.22672114607729768595001877142570520134894679655183e0), SC_(-0.25093315603979020161824781035135951819403020477159e0), + SC_(0.21e2), SC_(0.7e1), SC_(-0.405952739715576171875e1), SC_(-0.44282855987548828125e1), SC_(0.28652008447116177899729718330459333095986272198613e0), SC_(0.12724037272559207174447563458563368279483069712349e0), + SC_(0.21e2), SC_(0.9e1), SC_(0.29988424777984619140625e1), SC_(0.3780962467193603515625e1), SC_(0.12606348219904991672194680013653501371982248223556e-3), SC_(-0.73669309093900007054190553243420220117566327142135e-4), + SC_(0.21e2), SC_(0.9e1), SC_(0.3786845684051513671875e1), SC_(0.56724185943603515625e1), SC_(-0.21864817542582421898765060615033373502842562210329e-1), SC_(-0.21903628277081672424734648065555529452791268577459e-1), + SC_(0.21e2), SC_(0.9e1), SC_(0.415498256683349609375e1), SC_(0.104038202762603759765625e1), SC_(0.89166773768408964055452856441084024827126403166979e-1), SC_(-0.54763343044065758750492136756936698655811814743282e-2), + SC_(0.21e2), SC_(0.9e1), SC_(0.5398624420166015625e1), SC_(-0.5972367763519287109375e1), SC_(-0.31419017800991304201118277878357577310520238711979e0), SC_(0.11263991542426107089340605492500003436408819070406e0), + SC_(0.21e2), SC_(0.1e2), SC_(-0.606342220306396484375e1), SC_(-0.257316768169403076171875e0), SC_(-0.98253658631138563168501273585109552463770688396671e-3), SC_(-0.62759394481390143466799842307726950844955331405024e-3), + SC_(0.21e2), SC_(0.13e2), SC_(0.6156896114349365234375e1), SC_(-0.711609542369842529296875e0), SC_(-0.56639571886557959943860298176175097113833266366701e-8), SC_(-0.99474345674215221804166120947316863363222641794754e-9), + SC_(0.21e2), SC_(0.17e2), SC_(-0.22132570743560791015625e1), SC_(0.761013507843017578125e0), SC_(0.36016513692907497120392229690314423630318469450932e0), SC_(0.14005083989377274745869795086473687644063954713393e0), + SC_(0.21e2), SC_(0.18e2), SC_(-0.6276621341705322265625e1), SC_(-0.58613033294677734375e1), SC_(0.84550282971129976905599275434919725304369160575276e-38), SC_(0.3176968692832264083031364160120367789320540857439e-37), + SC_(0.21e2), SC_(0.18e2), SC_(-0.4130377292633056640625e1), SC_(-0.239477641880512237548828125e-1), SC_(-0.3111642862017626910241947909958727382793224765965e0), SC_(0.14310579473858952646955833043043819547786827389279e0), + SC_(0.21e2), SC_(0.2e2), SC_(-0.5592360019683837890625e1), SC_(-0.5070696353912353515625e1), SC_(0.24966134993550706521238616963659099689738357208731e-3), SC_(-0.30383462766490890468925648144173816339846173906576e-3), + SC_(0.21e2), SC_(0.21e2), SC_(-0.37527716159820556640625e1), SC_(0.43376369476318359375e1), SC_(0.55647096592322960477723912751970863413896880651839e-5), SC_(-0.87991256417453787543623721805846240273574893580383e-7), + SC_(0.22e2), SC_(0), SC_(-0.3864028453826904296875e1), SC_(0.5979479312896728515625e1), SC_(-0.37967087388707100427707805986698540905039508773099e0), SC_(0), + SC_(0.22e2), SC_(0.3e1), SC_(0.1368967533111572265625e1), SC_(0.657112419605255126953125e0), SC_(0.12316586097730232533091966369452462083717607753128e0), SC_(-0.29087587762911481194130758056326898414738577412776e0), + SC_(0.22e2), SC_(0.5e1), SC_(-0.366358280181884765625e1), SC_(0.5622122287750244140625e1), SC_(0.27684985110692077499994676227242274323871191478822e0), SC_(-0.45735917259284501414245695270719512179943835826404e-1), + SC_(0.22e2), SC_(0.5e1), SC_(0.5363164424896240234375e1), SC_(-0.606977176666259765625e1), SC_(0.1751648901204294697662582874027059296018256422649e0), SC_(0.31781489303802521190182350791767799341550554001581e0), + SC_(0.22e2), SC_(0.5e1), SC_(0.5382340908050537109375e1), SC_(-0.5070119380950927734375e1), SC_(0.31531046343577100904411895404894921248865376196666e0), SC_(-0.69799944617085695682901813700291853442171437489007e-1), + SC_(0.22e2), SC_(0.6e1), SC_(-0.35059435367584228515625e1), SC_(-0.1310674250125885009765625e0), SC_(0.44639975824520930084449831684677570674949731217019e0), SC_(-0.44729916523966538839145122680956329063569465778055e0), + SC_(0.22e2), SC_(0.6e1), SC_(0.2452491283416748046875e1), SC_(0.3063588619232177734375e1), SC_(0.37363116123718612440182893979763211580427209283854e0), SC_(-0.18886411785123971976060766470720030727601684914718e0), + SC_(0.22e2), SC_(0.6e1), SC_(0.28284170627593994140625e1), SC_(-0.12117390334606170654296875e0), SC_(0.48033735493406664646476932994601229333457762192755e0), SC_(-0.42731153413226458312247849334100993822438760302695e0), + SC_(0.22e2), SC_(0.7e1), SC_(0.6060801029205322265625e1), SC_(0.35501916408538818359375e1), SC_(0.89577224329346208760967333144783186514831997543763e-1), SC_(-0.25894125941642603358561760365605456962732368436741e-1), + SC_(0.22e2), SC_(0.8e1), SC_(0.4333584308624267578125e1), SC_(-0.4655420780181884765625e1), SC_(0.26496603088702572603348436578206876243960666028432e-1), SC_(0.12987605687137328945405726858680858630887621325785e-1), + SC_(0.22e2), SC_(0.1e2), SC_(0.864459812641143798828125e0), SC_(0.15828573703765869140625e1), SC_(-0.10458848750001873164197618676069904037212486649258e0), SC_(-0.12675988097635033852593118386581421544177367424329e-1), + SC_(0.22e2), SC_(0.1e2), SC_(0.163216269016265869140625e1), SC_(0.43768138885498046875e1), SC_(0.10769205475460309308794914608940701214263678218339e0), SC_(-0.23422321835273454290188132545221469210350416953425e-1), + SC_(0.22e2), SC_(0.11e2), SC_(-0.172898852825164794921875e1), SC_(-0.54356231689453125e1), SC_(-0.1335025996960849715903265813094436678810094072623e-1), SC_(0.13609978948258916265734724944928256251378221992011e-2), + SC_(0.22e2), SC_(0.12e2), SC_(-0.20351169109344482421875e1), SC_(0.449889361858367919921875e0), SC_(0.17878540679188264322965944893065283062887151054005e0), SC_(-0.21826872425506224986912933422675902924012236473512e0), + SC_(0.22e2), SC_(0.12e2), SC_(-0.6888487339019775390625e0), SC_(0.615605449676513671875e1), SC_(0.23262385022211008475718553997388761318363343547997e-1), SC_(-0.51400108068513679387034561994627323588391398264502e0), + SC_(0.22e2), SC_(0.12e2), SC_(0.106960904598236083984375e1), SC_(-0.19733583927154541015625e0), SC_(-0.27226521758545893036254882915860201713026965820198e0), SC_(-0.26589547564475006733069948339763008440828985949816e0), + SC_(0.22e2), SC_(0.12e2), SC_(0.4419538974761962890625e1), SC_(-0.2886566638946533203125e1), SC_(0.26296625742818967930147276101793374934473773909799e0), SC_(-0.21421217062421925493761715263871847391566452667958e-1), + SC_(0.22e2), SC_(0.13e2), SC_(0.4435905933380126953125e1), SC_(-0.12813246250152587890625e1), SC_(-0.1994502603548058170882961020550149081586085253674e0), SC_(0.27847016580640654910845435722469110183802493530924e0), + SC_(0.22e2), SC_(0.14e2), SC_(-0.4442024707794189453125e1), SC_(-0.9945828914642333984375e0), SC_(0.1296973807142630520602561405069367183406751677746e-2), SC_(-0.59965265315985629106575527349406388681327592445741e-2), + SC_(0.22e2), SC_(0.15e2), SC_(0.23340003490447998046875e1), SC_(-0.5747199535369873046875e1), SC_(-0.97047210369236124504262026747372680536197441525978e-1), SC_(0.5162824383605399312832886588640438267957441255626e0), + SC_(0.22e2), SC_(0.15e2), SC_(0.5646602630615234375e1), SC_(-0.370086956024169921875e1), SC_(0.70099047237989581963419105029008064056241505095465e-1), SC_(0.11823366414397759576235377840074880901538627773909e0), + SC_(0.22e2), SC_(0.18e2), SC_(-0.4764419078826904296875e1), SC_(-0.5781750202178955078125e1), SC_(-0.28873734553361943376146504742715192480189630599691e0), SC_(0.12171764615416719961400687145073205519603805335772e0), + SC_(0.22e2), SC_(0.18e2), SC_(-0.602382600307464599609375e0), SC_(0.14415314197540283203125e1), SC_(0.22051079783421255041075442087441577571651558309987e-2), SC_(0.23388580730357922522617564497036978348138194251512e-2), + SC_(0.22e2), SC_(0.18e2), SC_(0.125289380550384521484375e1), SC_(0.10234868526458740234375e1), SC_(-0.20756108656065894795840187247351381826303166188039e0), SC_(0.94387295297523600294518324872047767477120423407304e-1), + SC_(0.22e2), SC_(0.18e2), SC_(0.16989471912384033203125e1), SC_(-0.33770077228546142578125e1), SC_(0.29529482620380182728114893943939945095007932514389e-1), SC_(-0.57431573411124672998794190039206379458054603532143e-1), + SC_(0.22e2), SC_(0.18e2), SC_(0.6217523097991943359375e1), SC_(0.485020160675048828125e0), SC_(-0.80437198826822501659130070303795091568128825681545e-19), SC_(0.66986958864633541550450146264372252429299951916435e-19), + SC_(0.22e2), SC_(0.19e2), SC_(-0.597578525543212890625e1), SC_(0.4910336017608642578125e1), SC_(-0.47804997793402321085743862795705266459809548387236e-8), SC_(0.67047195254824818560749900273886729950395336143326e-8), + SC_(0.22e2), SC_(0.19e2), SC_(0.2022489070892333984375e1), SC_(0.504736614227294921875e1), SC_(-0.43326159139679386743853520940223863748311016118727e-1), SC_(0.53121235298576042278559416566379389495615270017184e0), + SC_(0.23e2), SC_(0), SC_(0.29888064861297607421875e1), SC_(-0.13009319305419921875e1), SC_(0.75738929893098462495350827800799399695345377677096e0), SC_(0), + SC_(0.23e2), SC_(0), SC_(0.5227834224700927734375e1), SC_(0.451055812835693359375e1), SC_(0.14853191605883646545449022181751805416325866263486e0), SC_(0), + SC_(0.23e2), SC_(0.3e1), SC_(-0.547917079925537109375e1), SC_(-0.4498243808746337890625e1), SC_(-0.12042433185638232158601425798187407633114484812021e0), SC_(0.16092273708577621342840733394234829666884093892974e0), + SC_(0.23e2), SC_(0.3e1), SC_(0.55184173583984375e1), SC_(-0.554555797576904296875e1), SC_(-0.2298035983414593549064673463692369917410884946655e0), SC_(0.30731004437158444478476636152634839325606939416505e0), + SC_(0.23e2), SC_(0.5e1), SC_(-0.20993845462799072265625e1), SC_(-0.23019187450408935546875e1), SC_(-0.15359745242107965786972893853988106488191265982488e0), SC_(-0.27202352359407390030331662263002014519028242316274e0), + SC_(0.23e2), SC_(0.5e1), SC_(0.545889568328857421875e1), SC_(-0.5044847965240478515625e1), SC_(0.85936753192554254706707642050916866586380300897297e-1), SC_(-0.78851093751912218787076363157244016360880050881498e-2), + SC_(0.23e2), SC_(0.6e1), SC_(-0.593177318572998046875e1), SC_(0.4529429912567138671875e1), SC_(-0.2888004383617216913479816051906518888250307796671e0), SC_(0.56428526154976709721188366384981988147403713306907e0), + SC_(0.23e2), SC_(0.8e1), SC_(0.35884401798248291015625e1), SC_(0.313064479827880859375e1), SC_(-0.59220553861944572728526349267733022699870221067449e0), SC_(0.52000072378830935460116346633206117875833953638951e-1), + SC_(0.23e2), SC_(0.1e2), SC_(-0.35713214874267578125e1), SC_(-0.5895015716552734375e1), SC_(0.27363047177334956393785621839935733927906007921567e0), SC_(0.24990093323567845231465167088461804945796877368968e0), + SC_(0.23e2), SC_(0.11e2), SC_(0.288183689117431640625e1), SC_(-0.4051367282867431640625e1), SC_(-0.27008054438566323442041866091056043346991294041611e-2), SC_(0.17800897467223742426745667205709769443293791401656e-2), + SC_(0.23e2), SC_(0.14e2), SC_(0.27440736293792724609375e1), SC_(0.562889385223388671875e1), SC_(0.52694336150630886094788925618445248259468774455507e-2), SC_(0.14283216133931614223523268257433533500731213592224e-2), + SC_(0.23e2), SC_(0.15e2), SC_(-0.52518482208251953125e1), SC_(0.5665853023529052734375e1), SC_(-0.4135549711402433437559090469608862668469973827373e0), SC_(-0.68774959471297104657173238804389143814112152294236e-1), + SC_(0.23e2), SC_(0.15e2), SC_(-0.4191381931304931640625e1), SC_(-0.4067589282989501953125e1), SC_(-0.96095750532255311845519979802764966717867886737734e-1), SC_(0.38075803261362252763692306470964765229435596293148e0), + SC_(0.23e2), SC_(0.15e2), SC_(-0.127436196804046630859375e1), SC_(0.19672439098358154296875e1), SC_(-0.70178323950894872942146252508886888414269316658327e-1), SC_(-0.20064028045811801960473157780116871915372597167299e0), + SC_(0.23e2), SC_(0.16e2), SC_(-0.4365890979766845703125e1), SC_(0.2873447418212890625e1), SC_(0.66070268152301147670501629421559548165547966030298e-1), SC_(-0.14713280719714581028087523063695627699901661190266e0), + SC_(0.23e2), SC_(0.16e2), SC_(-0.187368810176849365234375e1), SC_(0.176321041584014892578125e1), SC_(0.35181149451317022322548874207766609890359266123822e0), SC_(-0.22181918800123060405270886651387612747002266548699e-1), + SC_(0.23e2), SC_(0.16e2), SC_(-0.987631022930145263671875e0), SC_(-0.25693976879119873046875e1), SC_(-0.14752625223614687995978414827009163508111393964289e-1), SC_(0.40774858170144985725470132137656579592284515508229e-2), + SC_(0.23e2), SC_(0.17e2), SC_(-0.1042644977569580078125e1), SC_(-0.126002967357635498046875e1), SC_(-0.84372836036506907579365776174497016920482554258603e-1), SC_(-0.54157040587253602532939767236091668933755307060758e-1), + SC_(0.23e2), SC_(0.21e2), SC_(-0.162158882617950439453125e1), SC_(0.926264286041259765625e0), SC_(-0.33537009884370457257819832085729754220752139566095e0), SC_(-0.23042213507030152112399657499329678284736738115171e0), + SC_(0.23e2), SC_(0.23e2), SC_(-0.5628755092620849609375e1), SC_(-0.486063861846923828125e1), SC_(-0.19279642809569265771501043324890995674328606788309e-5), SC_(-0.70167395917250045539062331026766596596685495030774e-5), + SC_(0.24e2), SC_(0), SC_(-0.1324918270111083984375e1), SC_(-0.2062782764434814453125e1), SC_(0.31248414740470870068648813349183676826199752058627e0), SC_(0), + SC_(0.24e2), SC_(0), SC_(-0.862500965595245361328125e0), SC_(0.517900943756103515625e1), SC_(0.28761642824529274677889314069723145139439610730308e-1), SC_(0), + SC_(0.24e2), SC_(0), SC_(0.613764095306396484375e1), SC_(0.27141590118408203125e1), SC_(-0.76809865030741529572652412857730476800278075901627e0), SC_(0), + SC_(0.24e2), SC_(0.1e1), SC_(0.37304210662841796875e1), SC_(0.2045906543731689453125e1), SC_(0.17406937330198662132259168765838417087776489150157e0), SC_(-0.33838547049587917953685331170358244820079493271777e0), + SC_(0.24e2), SC_(0.2e1), SC_(-0.596615886688232421875e1), SC_(-0.3750219821929931640625e1), SC_(-0.11972345578499665450698852003835809000878029811576e0), SC_(0.32441191438142413805004166984248260147019477460334e0), + SC_(0.24e2), SC_(0.2e1), SC_(0.482663822174072265625e1), SC_(0.1862316131591796875e1), SC_(-0.25071109310625056452049278178434541704578780231427e0), SC_(-0.16534935117017818943877902117408306235938246945429e0), + SC_(0.24e2), SC_(0.4e1), SC_(0.6276796817779541015625e1), SC_(-0.11994216442108154296875e1), SC_(0.25801612399963249102879730758376329625555131739219e-6), SC_(0.30175536401800446418804784440865574636608737328616e-5), + SC_(0.24e2), SC_(0.1e2), SC_(-0.5570613384246826171875e1), SC_(0.4233923256397247314453125e0), SC_(0.19337378251150843320954417807274626913542733729733e0), SC_(0.37283178307258688225228263568186108488537147181342e0), + SC_(0.24e2), SC_(0.1e2), SC_(0.22040307521820068359375e1), SC_(-0.20946109294891357421875e1), SC_(0.37302897301258406546836692868470724457316471444728e-1), SC_(0.64289673233253501568434095072478328874481417023666e-1), + SC_(0.24e2), SC_(0.11e2), SC_(-0.502376461029052734375e1), SC_(-0.983952462673187255859375e0), SC_(0.28894185384748941092528428359045290042488287748567e-1), SC_(-0.16623375357848744142183060777069550816278314788802e0), + SC_(0.24e2), SC_(0.13e2), SC_(0.4449751377105712890625e1), SC_(0.2216667652130126953125e1), SC_(0.22824011402197158751112985203705119383513476952859e0), SC_(0.13754263343801919733700269665463551158773894003828e0), + SC_(0.24e2), SC_(0.15e2), SC_(-0.4976137638092041015625e1), SC_(-0.310904216766357421875e1), SC_(-0.30389330120851375593946370604183523851559183134456e0), SC_(-0.16141344530020327810859705205819937069987356435226e0), + SC_(0.24e2), SC_(0.15e2), SC_(-0.462989044189453125e1), SC_(0.29690244197845458984375e1), SC_(0.30521077389098319232149363723210282664192767320181e0), SC_(0.18841760449959212347690394670808241696462446304094e0), + SC_(0.24e2), SC_(0.16e2), SC_(-0.54365100860595703125e1), SC_(-0.107414150238037109375e1), SC_(-0.45557665116940822672642712669212000516440479824573e-1), SC_(0.49113352922974654869881563350776976504670140793946e0), + SC_(0.24e2), SC_(0.16e2), SC_(-0.2125865459442138671875e1), SC_(-0.511815166473388671875e1), SC_(-0.38416093886724238216340790326420228393001869248409e0), SC_(0.81486556178465805625708210814255943217651558678561e-1), + SC_(0.24e2), SC_(0.16e2), SC_(-0.17001283168792724609375e1), SC_(0.3998670101165771484375e1), SC_(-0.11138605277601010251188258498857458647912106126701e0), SC_(-0.24681596187119985954323447452100423319448346948214e0), + SC_(0.24e2), SC_(0.18e2), SC_(-0.4075663089752197265625e1), SC_(-0.5742432117462158203125e1), SC_(-0.51266655456634025309426203584175543452638425990346e0), SC_(-0.16353152833753100258373409708197422697689089790348e0), + SC_(0.24e2), SC_(0.18e2), SC_(0.46365203857421875e1), SC_(-0.17638797760009765625e1), SC_(-0.11140821918938605951834868980133015433047714242108e0), SC_(0.38647382721754031499693021268538390526610003867236e-1), + SC_(0.24e2), SC_(0.19e2), SC_(-0.4418343603610992431640625e0), SC_(0.4380367755889892578125e1), SC_(0.97528994148526769438004673063110012855421277572828e-6), SC_(0.38666222714376615580697269201641358307069107285711e-4), + SC_(0.24e2), SC_(0.2e2), SC_(-0.553404712677001953125e1), SC_(-0.4798403263092041015625e1), SC_(-0.44568002302399882798139251940752779565308668211966e-2), SC_(-0.2959108821243276465092713314859992630431731645777e-1), + SC_(0.24e2), SC_(0.22e2), SC_(-0.560159206390380859375e1), SC_(-0.1638908863067626953125e1), SC_(-0.36373486522680725254518973028655936524769190667545e-4), SC_(0.50207113740532464470510299951942942143415384668508e-3), + SC_(0.24e2), SC_(0.22e2), SC_(-0.8115555346012115478515625e-1), SC_(0.2600201129913330078125e1), SC_(0.17079228237050294369757430672219409902092550934305e-22), SC_(0.1313953895770315858484471886621780802232058082472e-22), + SC_(0.24e2), SC_(0.23e2), SC_(-0.5962747097015380859375e1), SC_(0.741824924945831298828125e0), SC_(0.27300200137470974720018871768085999995459732753643e-11), SC_(0.12395239937794373196827378246837635273642840395193e-10), + SC_(0.24e2), SC_(0.23e2), SC_(0.4480103969573974609375e1), SC_(0.5091310024261474609375e1), SC_(0.371317369895599348651474612156066319502066288817e0), SC_(0.4323561691929297334793362661141953034455816226565e0), + SC_(0.24e2), SC_(0.24e2), SC_(-0.5264360904693603515625e1), SC_(-0.6782491207122802734375e0), SC_(-0.11874473221763931033108524336407512892608017319905e-1), SC_(0.76114257408314561038166809303894864473872661846102e-2), + SC_(0.25e2), SC_(0), SC_(-0.3876895427703857421875e1), SC_(-0.32360093593597412109375e1), SC_(-0.24452080451562791198246313501234401060101215892473e0), SC_(0), + SC_(0.25e2), SC_(0.1e1), SC_(-0.27703266143798828125e1), SC_(0.12215938568115234375e1), SC_(0.11746962748701579924923836574918003019510282873987e0), SC_(0.3226080064489771651711357824503959554332405674128e0), + SC_(0.25e2), SC_(0.1e1), SC_(0.7773735523223876953125e0), SC_(0.5681798458099365234375e1), SC_(-0.63218002691708143536080430464529613751050271653976e-1), SC_(0.43378593874156819995284851343146234941137966666292e-1), + SC_(0.25e2), SC_(0.1e1), SC_(0.2005723476409912109375e1), SC_(-0.25890109539031982421875e1), SC_(0.25080805178160619245804883981811723733876125233566e-1), SC_(0.15466404766801889477712656081299736079787792239148e-1), + SC_(0.25e2), SC_(0.3e1), SC_(0.499125385284423828125e1), SC_(0.2625409603118896484375e1), SC_(0.51599564991025433641751334953777473303522774308688e-2), SC_(-0.23189933545442436138439500369133402123625001488003e0), + SC_(0.25e2), SC_(0.5e1), SC_(-0.5153573513031005859375e1), SC_(-0.46076297760009765625e1), SC_(0.39473234214683783091619172393326231275476524627325e-2), SC_(-0.68338514034057717266443350723340867185848364943051e-2), + SC_(0.25e2), SC_(0.6e1), SC_(0.622525119781494140625e1), SC_(0.27696933746337890625e1), SC_(-0.24425625229479477233188544139092463122182434092512e-3), SC_(-0.3143315256687476516940017361078913592775166275262e-3), + SC_(0.25e2), SC_(0.7e1), SC_(0.114450514316558837890625e1), SC_(-0.2546615123748779296875e1), SC_(-0.95637014511567344221264544790152606871926989097047e-1), SC_(-0.15685033719678696999611509536131244333363029683236e0), + SC_(0.25e2), SC_(0.7e1), SC_(0.2645304203033447265625e1), SC_(0.3280132710933685302734375e0), SC_(-0.30647436470681925568674763213354695641056755300071e0), SC_(0.34571952107274179166660249962996491344682011604635e0), + SC_(0.25e2), SC_(0.8e1), SC_(-0.25140659809112548828125e1), SC_(-0.18471310138702392578125e1), SC_(-0.71554921015350386695845601481135992925247309694169e-1), SC_(-0.961295665140334103486942390331186792374042041282e-1), + SC_(0.25e2), SC_(0.9e1), SC_(-0.242069911956787109375e1), SC_(0.5341898441314697265625e1), SC_(-0.1460083067839701489438706250450869484090920317533e0), SC_(-0.20556089324545968654377047800812990995396349780646e0), + SC_(0.25e2), SC_(0.9e1), SC_(0.1712700366973876953125e1), SC_(-0.491151332855224609375e1), SC_(0.31334256426873953231492357029337302275793319860016e0), SC_(-0.70504830560979637998854802373395690866160076937206e-1), + SC_(0.25e2), SC_(0.9e1), SC_(0.511040782928466796875e1), SC_(-0.6116263866424560546875e1), SC_(-0.23590505400258263693433013328826839179698865946289e-1), SC_(-0.3438312035300497706121783539581422771445398525173e0), + SC_(0.25e2), SC_(0.1e2), SC_(0.3095265865325927734375e1), SC_(0.178794467449188232421875e1), SC_(-0.12036667074182603651749819750773626281025819046829e-8), SC_(0.17568031065028703357843791528647300227723575332801e-8), + SC_(0.25e2), SC_(0.1e2), SC_(0.4784619808197021484375e1), SC_(-0.5005569934844970703125e1), SC_(-0.32256570201324250889979735987131248551167770129767e0), SC_(-0.68679305644396201505491801595415389963761424260392e-1), + SC_(0.25e2), SC_(0.12e2), SC_(0.4094234943389892578125e1), SC_(0.205652904510498046875e1), SC_(-0.30330180676691994676055164310923196173641860577758e0), SC_(0.1481581731020885911545974981858342825516482597711e0), + SC_(0.25e2), SC_(0.12e2), SC_(0.4962983608245849609375e1), SC_(-0.163137233257293701171875e1), SC_(-0.15839134993623850489777357359933744313103301843138e0), SC_(0.14086880827905948850990015097149018548509954501518e0), + SC_(0.25e2), SC_(0.13e2), SC_(-0.2300118923187255859375e1), SC_(-0.36115558147430419921875e1), SC_(0.39791804119535103665755545319108981142922247032052e0), SC_(0.69807317190331413170669851171882753950629031686466e-1), + SC_(0.25e2), SC_(0.13e2), SC_(-0.889023125171661376953125e0), SC_(-0.567437839508056640625e1), SC_(0.77488995646546077377528426598426223660068364128541e-2), SC_(-0.12790724893854634917857667665072335967097237791168e0), + SC_(0.25e2), SC_(0.13e2), SC_(0.21100962162017822265625e1), SC_(-0.21088435649871826171875e1), SC_(0.14328387126713818148236022542510962859678723697469e0), SC_(0.16621948669419806269290232665997400106837593517422e0), + SC_(0.25e2), SC_(0.15e2), SC_(-0.5503502368927001953125e1), SC_(0.17439391613006591796875e1), SC_(-0.20612272315235832711064550794393208299382361965088e0), SC_(-0.34042019972211732597646951568375363155696917414732e0), + SC_(0.25e2), SC_(0.19e2), SC_(0.68212032318115234375e-1), SC_(0.5628895282745361328125e1), SC_(-0.12862315073404389959698914161686961550654093238902e-18), SC_(-0.17452067685713628457026780573925765370864488540548e-19), + SC_(0.25e2), SC_(0.21e2), SC_(0.652602493762969970703125e0), SC_(0.1647074222564697265625e1), SC_(0.29482344436261443152558299688997978191119148500104e-2), SC_(0.91541077227606152736369539747397509508686307427872e-4), + SC_(0.25e2), SC_(0.24e2), SC_(-0.560768795013427734375e1), SC_(-0.135371887683868408203125e1), SC_(0.22683331887985147446081280672359733123330908887175e-4), SC_(-0.41772421541307706758709900467145772598020182643899e-4), + SC_(0.25e2), SC_(0.24e2), SC_(-0.25576140880584716796875e1), SC_(-0.5700718402862548828125e1), SC_(-0.39000450874718532083419260533487240120088234728687e-6), SC_(-0.24484192497289751823128107116472159586524030098795e-5), + SC_(0.25e2), SC_(0.24e2), SC_(0.1733565807342529296875e1), SC_(-0.5109857082366943359375e1), SC_(0.55836962543957325906629790288435638719057752040688e0), SC_(-0.64189571383798894090504849164065298725709687409556e-1), + SC_(0.25e2), SC_(0.24e2), SC_(0.267821216583251953125e1), SC_(0.34839074611663818359375e1), SC_(0.61079010931332695678531003634103207962775055239385e-8), SC_(-0.16149896531717650240134485219262264117712269354817e-7), + SC_(0.25e2), SC_(0.24e2), SC_(0.5091073513031005859375e1), SC_(0.507114410400390625e1), SC_(-0.20755548134105865087692788918483802129799964515379e0), SC_(0.2200700189867651973658928910254355227812118256831e0), + SC_(0.26e2), SC_(0), SC_(0.28866140842437744140625e1), SC_(-0.32590219974517822265625e1), SC_(0.59888796023273285414978283053050390085918627286007e0), SC_(0), + SC_(0.26e2), SC_(0.4e1), SC_(-0.4675228118896484375e1), SC_(-0.536728191375732421875e1), SC_(0.15607741424248587444670750100843521079692964025284e0), SC_(0.89783278899561852524446346954599790348748627919629e-1), + SC_(0.26e2), SC_(0.4e1), SC_(-0.3475870609283447265625e1), SC_(0.2798839092254638671875e1), SC_(-0.10330755317046573919679713513393069909634998522503e0), SC_(0.51020315387182095575971247206672588326249150135501e0), + SC_(0.26e2), SC_(0.4e1), SC_(0.52667827606201171875e1), SC_(0.35358884334564208984375e1), SC_(-0.80208715950742831164609891241196492786571490304276e-3), SC_(0.12558357452735600082861913195525690993598139649899e0), + SC_(0.26e2), SC_(0.5e1), SC_(-0.4896442890167236328125e1), SC_(-0.644553959369659423828125e0), SC_(-0.3219917446704770830987636285023782624906334020492e0), SC_(0.2619593665072280598925333284807917974759103914616e-1), + SC_(0.26e2), SC_(0.5e1), SC_(-0.1856127679347991943359375e0), SC_(0.3506732940673828125e1), SC_(0.12808777056376183866778340276701209822128124445917e0), SC_(-0.4915611242976698789268648567893977457275119249108e0), + SC_(0.26e2), SC_(0.6e1), SC_(0.35201609134674072265625e1), SC_(0.712134182453155517578125e0), SC_(0.18167473263617165549862218444646925788793996157123e-2), SC_(0.38631817684229255023504922858120822379142056189224e-2), + SC_(0.26e2), SC_(0.8e1), SC_(0.21621563434600830078125e1), SC_(0.176831352710723876953125e1), SC_(-0.21902677451976515855664026438380708818940415564342e-2), SC_(0.23446519587828903308091387090129442535840190548951e0), + SC_(0.26e2), SC_(0.8e1), SC_(0.29448168277740478515625e1), SC_(0.4156087398529052734375e1), SC_(-0.11648026682090861893404700256346285395509902344719e-1), SC_(0.4344028102678889398661550429910420496309969253894e-1), + SC_(0.26e2), SC_(0.9e1), SC_(-0.7637768052518367767333984375e-2), SC_(0.37568457126617431640625e1), SC_(-0.38666063076948367819941181610041792269034885343045e-14), SC_(0.3572673453413943137086464572968282399473008855551e-14), + SC_(0.26e2), SC_(0.1e2), SC_(-0.130035817623138427734375e1), SC_(0.4838814258575439453125e1), SC_(-0.96096634776053518451225224737094628216737181029099e-1), SC_(-0.30360311349635329844708524547980680440375114974486e0), + SC_(0.26e2), SC_(0.1e2), SC_(-0.1281925678253173828125e1), SC_(0.3520789623260498046875e1), SC_(-0.18971976240579681665607152009114929782194828818254e0), SC_(-0.14433870229808105443741875831309708824618109723486e0), + SC_(0.26e2), SC_(0.11e2), SC_(-0.266436004638671875e1), SC_(-0.146718060970306396484375e1), SC_(0.53754978773168219938186239125756949628605830326527e0), SC_(-0.24719781072866265067668253668334010720688282062476e0), + SC_(0.26e2), SC_(0.12e2), SC_(-0.46720333099365234375e1), SC_(0.5567004680633544921875e1), SC_(0.13159723065828215725901237808308445798477821140514e0), SC_(0.14406923933879002089309396120649556453547842223706e0), + SC_(0.26e2), SC_(0.13e2), SC_(-0.5170716762542724609375e1), SC_(0.396167524158954620361328125e-1), SC_(0.2747066992606051124718983862369076127794027582961e0), SC_(0.15547439604601166462304161698796568643095823328666e0), + SC_(0.26e2), SC_(0.16e2), SC_(0.34189922809600830078125e1), SC_(0.62253940105438232421875e0), SC_(-0.15388447791508385488961606039859778005711466301889e-4), SC_(-0.91377487900087822487029398478309708641358364344333e-5), + SC_(0.26e2), SC_(0.17e2), SC_(-0.2040981292724609375e1), SC_(-0.32355091571807861328125e1), SC_(-0.13937408586961078471459718438769272177699951388526e-2), SC_(-0.5404201520948196392514367169061015489092824027921e-1), + SC_(0.26e2), SC_(0.18e2), SC_(-0.496606349945068359375e1), SC_(-0.3744811534881591796875e1), SC_(-0.93692939929955839702525083671902479242015507776566e-2), SC_(0.67643379276993047968633668940119476977778481029538e-1), + SC_(0.26e2), SC_(0.22e2), SC_(-0.215118408203125e1), SC_(0.4257010936737060546875e1), SC_(0.3233570363068339030724037307349679834283059153667e0), SC_(-0.21816685536363050909681486114218107795833718573678e0), + SC_(0.26e2), SC_(0.23e2), SC_(-0.626444530487060546875e1), SC_(0.30316879749298095703125e1), SC_(-0.14610937060772995527984594628448830882806388111318e-37), SC_(-0.10294396143474871982249659742078628066491723977817e-37), + SC_(0.26e2), SC_(0.23e2), SC_(0.2308638095855712890625e1), SC_(0.2850924015045166015625e1), SC_(-0.24198577688656307591232455670025615741027047043071e-1), SC_(0.10293617054536935634549002148603933883299843345613e-1), + SC_(0.27e2), SC_(0), SC_(0.262725543975830078125e1), SC_(-0.3332263469696044921875e1), SC_(-0.32108559549890749301698421358412842563756110855673e0), SC_(0), + SC_(0.27e2), SC_(0), SC_(0.29525635242462158203125e1), SC_(-0.96874904632568359375e0), SC_(0.23244104762422620766564658428336431139783727577812e0), SC_(0), + SC_(0.27e2), SC_(0.1e1), SC_(-0.3790359020233154296875e1), SC_(-0.33002679347991943359375e1), SC_(-0.39615090450102674096082556731023459539923878348912e0), SC_(0.63392278322470359061713469877762348658777297223449e-1), + SC_(0.27e2), SC_(0.3e1), SC_(0.23251364231109619140625e1), SC_(-0.35694611072540283203125e1), SC_(-0.18399232475186213478532994671392506573104355525209e-1), SC_(0.62295069046281653710453200709810763951905891143402e-1), + SC_(0.27e2), SC_(0.5e1), SC_(0.3879522383213043212890625e0), SC_(-0.38136348724365234375e1), SC_(0.53834161615875287293754381907669271323628694858384e0), SC_(-0.11960293884052284795748049244054999405373272041818e0), + SC_(0.27e2), SC_(0.5e1), SC_(0.650668203830718994140625e0), SC_(0.5258705615997314453125e1), SC_(0.15188383394406850166122344762357200180219134166819e0), SC_(0.34944545086668248072247019650278666496638639469351e0), + SC_(0.27e2), SC_(0.6e1), SC_(-0.166312253475189208984375e1), SC_(-0.119002068042755126953125e1), SC_(-0.13021055843854354343691965096561463265667602208609e0), SC_(0.15031374707675568834777976554388900651625644602142e0), + SC_(0.27e2), SC_(0.7e1), SC_(-0.4965648651123046875e1), SC_(-0.5313018798828125e1), SC_(-0.25930244722780854914235196015039329670614742450185e0), SC_(-0.14435626860269623414202165396442933086661458033335e0), + SC_(0.27e2), SC_(0.9e1), SC_(0.601284885406494140625e1), SC_(-0.14040200710296630859375e1), SC_(0.15932380943538052638751643294167291738338727406529e0), SC_(-0.11140502509579299328368147700939877600963528039524e-1), + SC_(0.27e2), SC_(0.11e2), SC_(-0.5047023773193359375e1), SC_(-0.1643696308135986328125e1), SC_(0.12949376863247812700191578038411775026897240843971e0), SC_(0.12528905474545626016745194874120375569465438710282e0), + SC_(0.27e2), SC_(0.14e2), SC_(-0.5018929004669189453125e1), SC_(-0.61585292816162109375e1), SC_(-0.49444593829854721265248350137908864074848505124683e-1), SC_(0.28065201196709096764215836614007991340683316011596e0), + SC_(0.27e2), SC_(0.14e2), SC_(0.10453426837921142578125e1), SC_(0.4748726367950439453125e1), SC_(0.11447223007891547356823550767384702707901639572594e0), SC_(0.63839321920711976674672958851492878428150855280256e-1), + SC_(0.27e2), SC_(0.15e2), SC_(-0.3675783634185791015625e1), SC_(-0.51941013336181640625e1), SC_(0.19284283285718520917320611396827335529838436413153e0), SC_(0.14010197984265520557426785450181784982418943123654e0), + SC_(0.27e2), SC_(0.15e2), SC_(0.42129802703857421875e1), SC_(-0.11898415088653564453125e1), SC_(0.59606553371851112994505044969982752502609379088643e-1), SC_(0.93227644665587411267658810181860604476389275218165e-1), + SC_(0.27e2), SC_(0.16e2), SC_(-0.519953060150146484375e1), SC_(0.21793434619903564453125e1), SC_(-0.34978662217298386043133441212835046085830245918824e0), SC_(-0.11280893779488382017129004140946079702770950468579e0), + SC_(0.27e2), SC_(0.16e2), SC_(-0.36205046176910400390625e1), SC_(0.31306784152984619140625e1), SC_(-0.40300698085023514517994827194108195059010110782911e-1), SC_(0.71100434044382319252965214747550316204001925413246e-2), + SC_(0.27e2), SC_(0.21e2), SC_(0.3417222499847412109375e1), SC_(0.24105484783649444580078125e0), SC_(0.9175821801343779257885854530260509654111962970602e-9), SC_(-0.25155796556906881651758357739199584186008363674147e-8), + SC_(0.27e2), SC_(0.23e2), SC_(-0.140652561187744140625e1), SC_(0.35428617000579833984375e1), SC_(-0.33402552979090232528742889524607488583682153563735e0), SC_(0.6617806699528517719147513542523733796765945708277e-1), + SC_(0.27e2), SC_(0.24e2), SC_(0.34913151264190673828125e1), SC_(0.3636254787445068359375e1), SC_(-0.44276015746085093586636394741641137465608780422309e-9), SC_(0.36877262381006324108255678772315066310533711139797e-9), + SC_(0.27e2), SC_(0.25e2), SC_(-0.19502545893192291259765625e0), SC_(0.43212947845458984375e1), SC_(0.1293084909882853957297819284583450662042489589536e-16), SC_(0.35142803536333876246035524741838830925177608638617e-16), + SC_(0.27e2), SC_(0.26e2), SC_(0.42383403778076171875e1), SC_(0.4610982418060302734375e1), SC_(-0.96792963912541844209040359834406140802021879909123e-1), SC_(-0.53511150454597223921638356713277351605960241025587e-1), + SC_(0.27e2), SC_(0.27e2), SC_(-0.24535601139068603515625e1), SC_(0.1783678531646728515625e1), SC_(-0.16610346397007784290967506143688737284156397994818e-5), SC_(-0.28003729361654600046367368297838432192011606961365e-5), + SC_(0.28e2), SC_(0.2e1), SC_(0.2177688121795654296875e1), SC_(0.18298971652984619140625e1), SC_(-0.85687523720959234998720552344234982305671299898196e-2), SC_(-0.48857005677113196416359021785218151379203650021081e-2), + SC_(0.28e2), SC_(0.5e1), SC_(-0.846441447734832763671875e0), SC_(-0.56284923553466796875e1), SC_(0.3647923513126111922503115636055725933093205777732e0), SC_(0.48386747098235354960987684318477267981623334144679e-1), + SC_(0.28e2), SC_(0.5e1), SC_(0.4151194095611572265625e1), SC_(-0.5815281391143798828125e1), SC_(0.26726917143067893396495442494135622082707159949158e-2), SC_(-0.27633455488337920174174128039592444686107269780764e-2), + SC_(0.28e2), SC_(0.9e1), SC_(0.1393414020538330078125e1), SC_(-0.4903962612152099609375e1), SC_(-0.32465484455243118463225724415754601138616082359438e0), SC_(0.50185222751834862051129946904541428719603392752397e-1), + SC_(0.28e2), SC_(0.1e2), SC_(-0.84841859340667724609375e0), SC_(-0.27043387889862060546875e1), SC_(0.12909330609310526403894668405290308571894010613022e0), SC_(0.36511541159277651527045081673970587076715433222867e0), + SC_(0.28e2), SC_(0.12e2), SC_(-0.2621095180511474609375e1), SC_(0.357422637939453125e1), SC_(0.27830207480444508442103903815990998408888519620986e0), SC_(-0.53559344562374926298319778445421465060417361512259e0), + SC_(0.28e2), SC_(0.13e2), SC_(-0.14266557991504669189453125e0), SC_(-0.470821475982666015625e1), SC_(-0.88183209080443499816837351366071602837109179504688e-7), SC_(0.16234561983310332804334726913840256338435535503632e-5), + SC_(0.28e2), SC_(0.13e2), SC_(0.506378841400146484375e1), SC_(0.337982940673828125e1), SC_(-0.1865650122895414736250237161955013764378855133958e0), SC_(0.83104058496945432609840437913208892628585320296553e-2), + SC_(0.28e2), SC_(0.14e2), SC_(-0.5219646453857421875e1), SC_(0.32433712482452392578125e1), SC_(-0.53683080326167826661347790717962342153575534204683e-1), SC_(-0.36534000361326218712600869371457843178984446179199e0), + SC_(0.28e2), SC_(0.16e2), SC_(0.503000438213348388671875e0), SC_(-0.231458187103271484375e1), SC_(0.8160256822988137923717617864356537496559291179126e-1), SC_(0.64094222246065219890134215414118365176933409558335e-1), + SC_(0.28e2), SC_(0.16e2), SC_(0.3427127361297607421875e1), SC_(0.35153391361236572265625e1), SC_(0.88842414649858727724678507859023456976045310064479e-4), SC_(-0.27798045063355101148605200522196071346933288033418e-4), + SC_(0.28e2), SC_(0.18e2), SC_(-0.26192047595977783203125e1), SC_(0.152940261363983154296875e1), SC_(-0.2076220547467651797296012614447245899778479020637e-1), SC_(0.19152325659437762869857948324070336161019583882491e-1), + SC_(0.28e2), SC_(0.19e2), SC_(0.3145768642425537109375e1), SC_(-0.6064627170562744140625e0), SC_(-0.88341184376953282584893787413595035721549243557524e-41), SC_(-0.15174070660493520559219146747689439763583330303958e-40), + SC_(0.28e2), SC_(0.19e2), SC_(0.5450787067413330078125e1), SC_(-0.191129744052886962890625e1), SC_(0.10172020391842454645010387046398599344839775038625e0), SC_(0.5395643957632813756083582714606347011863207416976e0), + SC_(0.28e2), SC_(0.22e2), SC_(-0.13068177700042724609375e1), SC_(0.145541286468505859375e1), SC_(0.23314723486748828438576781341885063296772905905627e-2), SC_(0.16058731833356469601277859955322418946539873329667e-2), + SC_(0.28e2), SC_(0.25e2), SC_(0.138050591945648193359375e1), SC_(0.20941126346588134765625e1), SC_(-0.12846379713076890219934659144680944221241334472141e0), SC_(0.22617950598970200061848568141208860634676281592502e0), + SC_(0.28e2), SC_(0.25e2), SC_(0.37426455020904541015625e1), SC_(0.446419525146484375e1), SC_(-0.30193414476467530194579451177295867812762250722799e-5), SC_(0.38461599518589484146449693851194411585041267604652e-4), + SC_(0.28e2), SC_(0.26e2), SC_(0.338872015476226806640625e0), SC_(-0.2938283443450927734375e1), SC_(0.47180815469628669101312406831788890857752827012654e-11), SC_(-0.73020521348926074040478651522705948652200116908528e-11), + SC_(0.28e2), SC_(0.28e2), SC_(0.5292593479156494140625e1), SC_(0.5836107730865478515625e1), SC_(0.46521681564480569204591023639475657415682769495109e-2), SC_(0.22440121774846652185467755015421152029151599618688e-3), + SC_(0.29e2), SC_(0), SC_(-0.5304096698760986328125e1), SC_(0.28013269901275634765625e1), SC_(-0.34374558636242491840981443596475176397358553372639e0), SC_(0), + SC_(0.29e2), SC_(0.6e1), SC_(-0.96623599529266357421875e0), SC_(-0.160583972930908203125e1), SC_(-0.34554988311283977468421467624627937687834304566326e0), SC_(0.73745426424497457276975129325391083183363013350031e-1), + SC_(0.29e2), SC_(0.8e1), SC_(-0.4647654056549072265625e1), SC_(0.587067127227783203125e1), SC_(0.30930236229253840906868604496020677447343005601587e0), SC_(-0.49445352201839267573221621551803070753225218660487e-1), + SC_(0.29e2), SC_(0.8e1), SC_(0.392187595367431640625e0), SC_(-0.287519633769989013671875e0), SC_(-0.22783473767664553001722166505582548516999414563321e0), SC_(-0.25491514760415924822989178358055253661292656118935e0), + SC_(0.29e2), SC_(0.1e2), SC_(-0.166051280498504638671875e1), SC_(-0.5044215679168701171875e1), SC_(0.19634739869929818957613891900276548175011116302552e0), SC_(-0.35055041111834758499728357411289819921477862124714e-1), + SC_(0.29e2), SC_(0.11e2), SC_(-0.4498418331146240234375e1), SC_(0.123935830593109130859375e1), SC_(0.14690621666124024611580070133304967300815386557761e0), SC_(0.26622999350812294628786186427067031828600102198782e0), + SC_(0.29e2), SC_(0.12e2), SC_(-0.74578392505645751953125e0), SC_(0.1655825138092041015625e1), SC_(0.99888331464138590380937139151776111267389823372577e-1), SC_(0.16275738178735920210750975726264147081416847520487e0), + SC_(0.29e2), SC_(0.13e2), SC_(-0.529826259613037109375e1), SC_(-0.618491268157958984375e1), SC_(0.98979467435598604095409774985421677956362899621551e-1), SC_(0.3277921220729318025300220870512544670763508502924e0), + SC_(0.29e2), SC_(0.13e2), SC_(-0.3128500461578369140625e1), SC_(-0.37050945758819580078125e1), SC_(-0.58125775526763659448326852916865612752038485720042e-19), SC_(0.99556742336446969687933404146584340963719811016785e-19), + SC_(0.29e2), SC_(0.14e2), SC_(-0.2293616771697998046875e1), SC_(-0.4944765567779541015625e1), SC_(-0.26456752409113754642102156002114073206323731200161e0), SC_(0.29670242313018655704198158459070860453944419639195e-1), + SC_(0.29e2), SC_(0.24e2), SC_(-0.20265896320343017578125e1), SC_(-0.3549204349517822265625e1), SC_(0.38829064186143240079963069303110733448851686796105e0), SC_(-0.14522471521789769613757985193418678616393961928275e0), + SC_(0.29e2), SC_(0.26e2), SC_(-0.6074800968170166015625e1), SC_(-0.38170487880706787109375e1), SC_(0.49134464663501283579362404490172972856511176968503e-16), SC_(0.16889713007060117605648674492926732435423618839529e-15), + SC_(0.29e2), SC_(0.26e2), SC_(-0.4693541049957275390625e1), SC_(0.21117798984050750732421875e0), SC_(0.84636753168273078124026193887830210701304344868755e-1), SC_(-0.85857411297063483265530066555493102413552722402254e-1), + SC_(0.3e2), SC_(0.1e1), SC_(0.108653104305267333984375e1), SC_(-0.43433170318603515625e1), SC_(0.98908915427691374021854029902073080488614986744833e-1), SC_(-0.25571346682500308908732440427042813790112955761028e0), + SC_(0.3e2), SC_(0.4e1), SC_(0.472572624683380126953125e0), SC_(-0.4141473293304443359375e1), SC_(-0.15490927214237789860573453940991420883686046939352e-3), SC_(0.17918424051917089574886831374610565150993696722213e-3), + SC_(0.3e2), SC_(0.5e1), SC_(0.13224494457244873046875e1), SC_(0.3243536472320556640625e1), SC_(0.26365491798605679927313677444286415933345142724669e0), SC_(0.14738045644608160308680420470804357761454397482851e0), + SC_(0.3e2), SC_(0.5e1), SC_(0.15393459796905517578125e1), SC_(0.41063690185546875e1), SC_(0.28934839933299968852244268798704520786922646850272e-1), SC_(-0.25844571107395323915222897537162027108332006584997e0), + SC_(0.3e2), SC_(0.12e2), SC_(-0.5311216831207275390625e1), SC_(0.44351177215576171875e1), SC_(-0.23641395480393837093083525215186198584158911542983e0), SC_(0.44404587772637704032010827773777202965024463317766e-1), + SC_(0.3e2), SC_(0.12e2), SC_(0.293827056884765625e1), SC_(0.23315105438232421875e1), SC_(-0.12265538183565026657215522947660764910548872080846e-2), SC_(0.37432649161076190722582863270078347981029707060705e-3), + SC_(0.3e2), SC_(0.14e2), SC_(0.443767642974853515625e1), SC_(-0.3618727207183837890625e1), SC_(0.13416211019590894407587077090408767671949275644819e0), SC_(-0.56201434447065499982940764627223367392418609084618e-1), + SC_(0.3e2), SC_(0.17e2), SC_(-0.122919237613677978515625e1), SC_(0.294741058349609375e1), SC_(0.2710266860063696014647030831454921329441436090915e0), SC_(-0.43599814745099186350165299725161120139330177424029e-1), + SC_(0.3e2), SC_(0.17e2), SC_(0.466351985931396484375e1), SC_(0.149558103084564208984375e1), SC_(-0.31636708231385235084218926963010486936015783483521e0), SC_(-0.95144491774198646174163906099598653984767353757822e-1), + SC_(0.3e2), SC_(0.18e2), SC_(-0.30436723232269287109375e1), SC_(-0.4174770832061767578125e1), SC_(0.12643784992924183233372017293751865365024150662377e-12), SC_(0.32601401658620691910357150247267165864754583834782e-13), + SC_(0.3e2), SC_(0.2e2), SC_(-0.149106013774871826171875e1), SC_(0.533106327056884765625e1), SC_(0.94374993459508192098714618955183548094519223880307e-1), SC_(-0.18432664742629340915258888435711247976010709923588e-1), + SC_(0.3e2), SC_(0.2e2), SC_(0.2313419342041015625e1), SC_(0.428986644744873046875e1), SC_(-0.29318407317941253439456421046760337007834035136883e0), SC_(-0.43180987318052629517936366896354388606808306111249e0), + SC_(0.3e2), SC_(0.2e2), SC_(0.36214644908905029296875e1), SC_(0.6067486286163330078125e1), SC_(-0.13138782640381106925001979961496931082228340481569e-2), SC_(0.31214547947555042809850196174813718560611575919433e-2), + SC_(0.3e2), SC_(0.2e2), SC_(0.526058673858642578125e1), SC_(-0.419460964202880859375e1), SC_(0.22582511508808987293935165209714110995770925672756e0), SC_(0.30331458249938896042218753312621592377727002507949e0), + SC_(0.3e2), SC_(0.22e2), SC_(-0.60458240509033203125e1), SC_(-0.5353339672088623046875e1), SC_(-0.85930465999490298964029892818202201788221540684003e-11), SC_(0.23693444365551066509449536762109818344241577450133e-9), + SC_(0.3e2), SC_(0.23e2), SC_(0.726197540760040283203125e0), SC_(0.403766345977783203125e1), SC_(-0.12755301400432633854627948582649036572442590418343e-1), SC_(0.66583164428055150562962447740111911222958448004406e-1), + SC_(0.3e2), SC_(0.24e2), SC_(-0.25868046283721923828125e1), SC_(-0.227922725677490234375e1), SC_(-0.72119753571211453912771025379536109079711921094975e-4), SC_(0.2542298502060570309079242448277729880888534881731e-3), + SC_(0.3e2), SC_(0.28e2), SC_(0.22341783344745635986328125e0), SC_(0.25537784099578857421875e1), SC_(-0.95687897152591358569962065530998323869356081255145e-17), SC_(0.89291963429434019882895832664397638007407748168944e-17), + SC_(0.3e2), SC_(0.29e2), SC_(0.603563213348388671875e1), SC_(0.2597660064697265625e1), SC_(0.10250703048349278067860993003576285045796698426188e-16), SC_(-0.67837273874377012468166466639778833478711594798685e-18), + SC_(0.3e2), SC_(0.3e2), SC_(0.700423657894134521484375e0), SC_(-0.584097194671630859375e1), SC_(0.10225347297727285748147276144679087091036780392267e-5), SC_(0.86132191079023610794410642400064244383036224295423e-6), + SC_(0.31e2), SC_(0.1e1), SC_(0.928564608097076416015625e0), SC_(0.417735576629638671875e1), SC_(-0.35856471993436608867144962448511819760284009045171e-1), SC_(-0.60497017410155836932330444710434133998091026314078e-1), + SC_(0.31e2), SC_(0.4e1), SC_(-0.887741386890411376953125e0), SC_(-0.6742284297943115234375e0), SC_(0.20632124174114237674527171624409443912851954465212e0), SC_(0.98313956344915999174986124429304689389305827770677e-1), + SC_(0.31e2), SC_(0.6e1), SC_(0.574202632904052734375e1), SC_(0.8840157985687255859375e0), SC_(0.15014761214172592376774588930797627043755053007961e-1), SC_(-0.22342430241520771147086566449242736798618992453359e-1), + SC_(0.31e2), SC_(0.7e1), SC_(-0.26366097927093505859375e1), SC_(0.60937328338623046875e1), SC_(0.88100929919455699024943768244623121474006888309583e-1), SC_(-0.35292812879977250086898036419500987291149514768436e0), + SC_(0.31e2), SC_(0.7e1), SC_(0.5836645603179931640625e1), SC_(-0.5976138591766357421875e1), SC_(0.19773015637170180297598234705690105393055744540095e0), SC_(-0.30277002522631753679887090680190060645139097536884e0), + SC_(0.31e2), SC_(0.9e1), SC_(0.122509801387786865234375e1), SC_(-0.5586736202239990234375e1), SC_(-0.1835447283739527910995916592028911308510444396965e0), SC_(0.27796968823091213806899083435678729593065511355864e-2), + SC_(0.31e2), SC_(0.11e2), SC_(0.2281555652618408203125e1), SC_(-0.3464831411838531494140625e0), SC_(-0.76015958003905388816378493978324545073261884273619e-1), SC_(0.60189558647728381716256649564051005049859811088047e-1), + SC_(0.31e2), SC_(0.11e2), SC_(0.30240728855133056640625e1), SC_(0.364751160144805908203125e0), SC_(0.19007877531794893239833867085756272355433916433928e-4), SC_(0.22561167353088321464358503856127270569862042419864e-4), + SC_(0.31e2), SC_(0.15e2), SC_(0.43375396728515625e0), SC_(-0.49521503448486328125e1), SC_(-0.70571879121713793717386306046974511953543544128478e-1), SC_(-0.14431187238624056529651612550423943245255662753848e0), + SC_(0.31e2), SC_(0.15e2), SC_(0.5296014308929443359375e1), SC_(-0.95083713531494140625e0), SC_(0.47556336605805756159571160383412358532090715801204e-1), SC_(0.37727732638798349717419619252929853830563849819192e0), + SC_(0.31e2), SC_(0.16e2), SC_(0.754196941852569580078125e-1), SC_(0.32588040828704833984375e1), SC_(-0.22129354866106521104204765138927535620136724225795e-12), SC_(0.70392963582410131758551153918170650770375736041396e-12), + SC_(0.31e2), SC_(0.18e2), SC_(-0.59573972225189208984375e0), SC_(0.1748990535736083984375e1), SC_(0.34417602662724970168877896701132509066340952614395e0), SC_(0.22715164805922997821149208687693807263713770929382e-1), + SC_(0.31e2), SC_(0.2e2), SC_(-0.33932993412017822265625e1), SC_(0.193132722377777099609375e1), SC_(-0.56356320947342473851511443112692598635687060727182e-7), SC_(-0.75163276800677556476147633584861632899696159210293e-7), + SC_(0.31e2), SC_(0.21e2), SC_(0.6030786991119384765625e1), SC_(-0.25230128765106201171875e1), SC_(-0.13498810396910162090134252881631307336594753214304e-7), SC_(-0.6089904624285230873015003167598944182671966579842e-8), + SC_(0.31e2), SC_(0.23e2), SC_(-0.5045162200927734375e1), SC_(-0.4549957752227783203125e1), SC_(0.17188598027762318906496398169666579485097946256704e0), SC_(-0.25432990204876614368801654107373858183287092141351e0), + SC_(0.31e2), SC_(0.26e2), SC_(-0.326124477386474609375e1), SC_(-0.558091640472412109375e1), SC_(-0.12122240462108415172663806743757572570401894532422e-20), SC_(0.81264283011069600354257445218059504436818433612651e-21), + SC_(0.31e2), SC_(0.27e2), SC_(-0.2207580089569091796875e1), SC_(-0.176423919200897216796875e1), SC_(-0.11681787764663391959627013716270259778551463854622e0), SC_(0.65430297163720305249962671261535705948040912842563e-1), + SC_(0.31e2), SC_(0.27e2), SC_(0.3325610637664794921875e1), SC_(-0.529215872287750244140625e0), SC_(-0.81986339461444704131072732038440779644507649468355e-18), SC_(-0.536436196208583508887279168894720922285530130249e-17), + SC_(0.31e2), SC_(0.29e2), SC_(-0.21260488033294677734375e1), SC_(-0.3617063999176025390625e1), SC_(-0.24601271411846658246464210063697569222669417594421e-1), SC_(0.67711064411241211167026732009031006833426141744155e-1), + SC_(0.31e2), SC_(0.3e2), SC_(0.73286068439483642578125e0), SC_(0.65784461796283721923828125e-1), SC_(-0.94487608256439867034529038228650922819649862573855e-5), SC_(0.22178948686460061070866490389104853268567019025408e-4), + SC_(0.32e2), SC_(0), SC_(0.20807661116123199462890625e0), SC_(-0.4968012332916259765625e1), SC_(0.66298344664836888730906564539274631055366541342095e0), SC_(0), + SC_(0.32e2), SC_(0.2e1), SC_(-0.21638844013214111328125e1), SC_(-0.106696796417236328125e1), SC_(0.1730373585499837778959174314297306708773493756511e0), SC_(0.27408305067680561166146537720059053177935425786118e0), + SC_(0.32e2), SC_(0.2e1), SC_(-0.55312104523181915283203125e-1), SC_(0.22586028575897216796875e1), SC_(-0.13470871325174836931206542661564999567351283863348e0), SC_(-0.68137864605410005585866049296418931158030610598288e0), + SC_(0.32e2), SC_(0.2e1), SC_(0.583700954914093017578125e0), SC_(-0.26306140422821044921875e1), SC_(-0.18798579627145320272320328081177975023893948646504e0), SC_(-0.30741292998911942466794911069091516832135850261479e0), + SC_(0.32e2), SC_(0.3e1), SC_(-0.4228428363800048828125e1), SC_(0.13026702404022216796875e1), SC_(-0.12243694649079274631858229100552657599390134539447e-1), SC_(-0.11787525019271484573107500985123810109931588532403e-1), + SC_(0.32e2), SC_(0.3e1), SC_(0.498306751251220703125e1), SC_(0.5436382770538330078125e1), SC_(-0.16540897059115030171859712666542047676962096767732e0), SC_(-0.11345036003534882596646154596508932481909780901634e0), + SC_(0.32e2), SC_(0.4e1), SC_(-0.58237209320068359375e1), SC_(-0.3628082752227783203125e1), SC_(0.86078901831272428064191837205688710062259082154164e-1), SC_(0.21857640376476717078248483234444535372452049724628e0), + SC_(0.32e2), SC_(0.6e1), SC_(-0.401196765899658203125e1), SC_(0.568090617656707763671875e0), SC_(-0.34002714397528148300121722244505024953616293767765e0), SC_(-0.92990083105225573294865377146019481047624587912796e-1), + SC_(0.32e2), SC_(0.7e1), SC_(0.532406520843505859375e1), SC_(-0.458774089813232421875e1), SC_(0.13078729987539274708760014110228524034154847172216e0), SC_(-0.10977211710600889159192149001437128324287154964944e0), + SC_(0.32e2), SC_(0.1e2), SC_(-0.5482160091400146484375e1), SC_(0.4956043243408203125e1), SC_(0.23847303389160211087345366200999697249841756380708e-1), SC_(-0.2029305580166500753097395160160460571514400800365e-1), + SC_(0.32e2), SC_(0.11e2), SC_(-0.4877975940704345703125e1), SC_(-0.2188639163970947265625e1), SC_(0.15251141369148101078768720197443589036409281851311e0), SC_(0.27069004053143028430587769027179087821604416294607e0), + SC_(0.32e2), SC_(0.16e2), SC_(-0.113722121715545654296875e1), SC_(0.3124237060546875e1), SC_(0.31837895806810353833281101206368208313315354423414e0), SC_(-0.90755329400809358691070463890653118785195245845093e-1), + SC_(0.32e2), SC_(0.19e2), SC_(-0.5408166408538818359375e1), SC_(-0.6025125026702880859375e1), SC_(0.85155456270057723665669575832960967457597060014359e-1), SC_(-0.44098172375387438748618298920157495817981560575925e0), + SC_(0.32e2), SC_(0.2e2), SC_(0.5691125392913818359375e1), SC_(0.3702780246734619140625e1), SC_(0.33245985289150069105210127177798999622998108646666e-1), SC_(-0.14316476282533068534636754351884877495171531101195e0), + SC_(0.32e2), SC_(0.24e2), SC_(0.972564160823822021484375e0), SC_(-0.32377068996429443359375e1), SC_(-0.28185916132339390017243206695609352756821265839239e0), SC_(-0.31121199496397838396016529951689443317449664266775e0), + SC_(0.32e2), SC_(0.25e2), SC_(-0.50359554290771484375e1), SC_(-0.4353111743927001953125e1), SC_(-0.4781367583226849216630168603430725206713112725752e-1), SC_(-0.1008167405799027782331509877467511332697585292248e0), + SC_(0.32e2), SC_(0.25e2), SC_(0.2882596492767333984375e1), SC_(-0.40839481353759765625e1), SC_(0.47171108449629706646618445156309169154829662633038e-13), SC_(-0.15426148860991650127193778562440220393503927928497e-10), + SC_(0.32e2), SC_(0.25e2), SC_(0.569830989837646484375e1), SC_(0.2081862926483154296875e1), SC_(-0.21358219126146379037755730870891179414407721000697e-3), SC_(0.10006182997472336160963499928607568710188406974034e-2), + SC_(0.32e2), SC_(0.31e2), SC_(-0.47728710174560546875e1), SC_(-0.13419498503208160400390625e0), SC_(0.17184574657361548198477627647756338994710221518522e0), SC_(-0.27881847562946397601936836610840150784354405653775e0), + SC_(0.32e2), SC_(0.32e2), SC_(-0.4227705478668212890625e1), SC_(0.20169875621795654296875e1), SC_(-0.20065917919227948858373005166952369187742945080701e-2), SC_(0.14141530837330922160597003865134200637914586765046e-1), + SC_(0.33e2), SC_(0.2e1), SC_(-0.10280778408050537109375e1), SC_(-0.141691577434539794921875e1), SC_(-0.21199357173846927861721140231231265818161126743439e0), SC_(-0.67384412952686462902002371937140117905926739951661e-1), + SC_(0.33e2), SC_(0.2e1), SC_(0.31660518646240234375e1), SC_(0.787688791751861572265625e0), SC_(0.83828966680565351932168328367169458083111452155676e-3), SC_(-0.18298118953521029694312837066798829728000009448976e0), + SC_(0.33e2), SC_(0.3e1), SC_(-0.4496408939361572265625e1), SC_(-0.3676222264766693115234375e0), SC_(0.8778676115933738229214513638612855099604101209253e-1), SC_(-0.17370993939992492669197863127541840669829602569981e0), + SC_(0.33e2), SC_(0.3e1), SC_(0.5052531719207763671875e1), SC_(-0.30459156036376953125e1), SC_(0.10891764351810655565058983711643382330383084583511e0), SC_(0.32150572743612381036346830098927258093240505765618e-1), + SC_(0.33e2), SC_(0.7e1), SC_(0.22033364772796630859375e1), SC_(-0.991332709789276123046875e0), SC_(-0.65078932551511285239653440619719552424121247998126e-1), SC_(0.50107144042480366535275176403238050525103908606693e-1), + SC_(0.33e2), SC_(0.11e2), SC_(0.33593618869781494140625e1), SC_(0.801525056362152099609375e0), SC_(-0.19331012906111682628733926104032195676875292205561e-1), SC_(0.13453409021982401163248455038152669836236852959845e-1), + SC_(0.33e2), SC_(0.11e2), SC_(0.5271373748779296875e1), SC_(0.164856636524200439453125e1), SC_(-0.76189744315738311831420746763593292761815174567881e-1), SC_(0.66196085450301076004049363610755534745383550957475e-1), + SC_(0.33e2), SC_(0.12e2), SC_(-0.6052063465118408203125e1), SC_(0.70831857621669769287109375e-1), SC_(0.87666432557664212122835069239425792690058563707377e-2), SC_(0.99790004000008412448133243600221248292580960270107e-2), + SC_(0.33e2), SC_(0.13e2), SC_(-0.187066686153411865234375e1), SC_(-0.5476586818695068359375e1), SC_(0.16323322590296355006984330973714002298047552591084e0), SC_(0.2919632765818747886808075054035883027514958625827e0), + SC_(0.33e2), SC_(0.14e2), SC_(0.6282451152801513671875e1), SC_(-0.704167187213897705078125e0), SC_(-0.28264715727426954730240390130033997384913600198657e-37), SC_(0.13084870462628237297082358706020472224447204851218e-37), + SC_(0.33e2), SC_(0.15e2), SC_(0.429217052459716796875e1), SC_(0.5220873355865478515625e1), SC_(0.34663658839570367684920973218779144297265382881659e0), SC_(-0.79962812545695387926501798552405211936151318335177e-1), + SC_(0.33e2), SC_(0.16e2), SC_(-0.77481329441070556640625e0), SC_(-0.16290705204010009765625e1), SC_(-0.10857313604670246578131980278415622538736879035396e0), SC_(0.14631036245722678657366426789769020203067076071433e0), + SC_(0.33e2), SC_(0.17e2), SC_(-0.39697129726409912109375e1), SC_(0.893506467342376708984375e0), SC_(-0.42327819382014604870435782055652942153178405302822e-1), SC_(0.2414283096289504477817521242893263417602295779535e-1), + SC_(0.33e2), SC_(0.19e2), SC_(-0.4060759067535400390625e1), SC_(-0.603465747833251953125e1), SC_(-0.19335111727331654212434524796913528239767518465687e-3), SC_(0.20057031870730384770811394001766285555334118787843e-1), + SC_(0.33e2), SC_(0.19e2), SC_(0.3632605075836181640625e1), SC_(-0.125561869144439697265625e1), SC_(0.16606436767628517593082402186229100905795788666483e-1), SC_(0.54687790415583995321124918425096138535972202573216e-1), + SC_(0.33e2), SC_(0.21e2), SC_(0.6058349132537841796875e1), SC_(0.89253747463226318359375e0), SC_(0.65661919271919274660834187104787488584165856454498e-8), SC_(-0.70042097596150469255807440858988819548237459531012e-9), + SC_(0.33e2), SC_(0.25e2), SC_(0.178518903255462646484375e1), SC_(0.163600885868072509765625e1), SC_(0.10285838902352309449698368199635806926573134984729e-1), SC_(0.61290583254192849619309147980259868149640987587218e-3), + SC_(0.33e2), SC_(0.25e2), SC_(0.39727337360382080078125e1), SC_(-0.20406267642974853515625e1), SC_(0.24817825824443781586887155432178279748389272206498e0), SC_(-0.23128852631109200782059759358494316866754795288222e0), + SC_(0.33e2), SC_(0.27e2), SC_(-0.55289669036865234375e1), SC_(0.16090323925018310546875e1), SC_(-0.19374904506881111846630703710192247220468580836629e-1), SC_(0.11572386296762929201845051641664803052227979311569e-1), + SC_(0.33e2), SC_(0.29e2), SC_(-0.19202787876129150390625e1), SC_(0.27044403553009033203125e1), SC_(-0.36528717935641733540863033540170376656373584600122e0), SC_(0.40731253115425075582880994936585949230771316852815e-1), + SC_(0.33e2), SC_(0.29e2), SC_(-0.182119834423065185546875e1), SC_(0.4119784832000732421875e1), SC_(-0.28379244934656280866214380765083155949566246107236e0), SC_(-0.265375535348017689943232823805827261162124246222e-1), + SC_(0.33e2), SC_(0.29e2), SC_(0.1915756702423095703125e1), SC_(0.182224595546722412109375e1), SC_(0.29019140898839473027547321559129655992737941569612e0), SC_(-0.18272155461874450914250644537446209771725174793041e0), + SC_(0.33e2), SC_(0.29e2), SC_(0.4933666706085205078125e1), SC_(-0.137272417545318603515625e1), SC_(0.21439774977906306496796774311686224277178027213006e0), SC_(0.35840642564789112835440912112605173002719929566325e0), + SC_(0.33e2), SC_(0.29e2), SC_(0.5323255062103271484375e1), SC_(-0.3466163158416748046875e1), SC_(0.14809013294088358823162198182939843441477089914292e0), SC_(0.18117244800140409658540127036860536618878261958792e-2), + SC_(0.33e2), SC_(0.31e2), SC_(0.170477139949798583984375e1), SC_(-0.137854945659637451171875e1), SC_(-0.1977141308864077034293892252243671403797001727324e-1), SC_(-0.58963829533132044436078908352660614461994207146641e-1), + SC_(0.33e2), SC_(0.31e2), SC_(0.20581443309783935546875e1), SC_(0.39526233673095703125e1), SC_(0.14703061785490068036808594608634500040037117041804e0), SC_(0.13543221180469735067915161091800474057406870844807e-2), + SC_(0.34e2), SC_(0.1e1), SC_(-0.2188931941986083984375e1), SC_(-0.191715514659881591796875e1), SC_(0.74648429187024477561430282029766499552096205544695e-1), SC_(0.20683529203034600863507770317585540157270626781474e0), + SC_(0.34e2), SC_(0.2e1), SC_(-0.71949017047882080078125e0), SC_(-0.5441914081573486328125e1), SC_(0.22412955231582108996746639938127249053867311156486e-1), SC_(-0.19973476426760867358722786056037002132862660666356e0), + SC_(0.34e2), SC_(0.5e1), SC_(-0.121777820587158203125e1), SC_(0.61085662841796875e1), SC_(-0.10553903941424644179118832121057917709107689882198e0), SC_(0.12588654721669852277934862443869250658563060560821e0), + SC_(0.34e2), SC_(0.7e1), SC_(0.30894107818603515625e1), SC_(0.35562279224395751953125e1), SC_(0.18641041510024639502252334130105107209287395555361e-3), SC_(-0.45449004191754781407370168701778529300136575099457e-4), + SC_(0.34e2), SC_(0.8e1), SC_(-0.6011126041412353515625e1), SC_(0.5419887065887451171875e1), SC_(0.60994914441104821837759997789223220623267125077273e0), SC_(-0.43840214384266110255519390517303780761802145422775e0), + SC_(0.34e2), SC_(0.9e1), SC_(-0.62173640727996826171875e0), SC_(-0.14664161205291748046875e1), SC_(-0.12294641941962225696079801149613521538475085881115e0), SC_(0.89901125793120174279904411318392431036704861349601e-1), + SC_(0.34e2), SC_(0.1e2), SC_(0.3278270721435546875e1), SC_(-0.40134868621826171875e1), SC_(-0.13704591391677795281047775027000968317056208570957e-2), SC_(-0.11680613863702510563648914712059656500356295502456e-2), + SC_(0.34e2), SC_(0.11e2), SC_(-0.205713176727294921875e1), SC_(-0.2949050426483154296875e1), SC_(-0.21616286304576857177427534953488466838105391999285e-1), SC_(0.3548215866206954765658732155903069088884062317148e-1), + SC_(0.34e2), SC_(0.11e2), SC_(0.147377431392669677734375e1), SC_(-0.4987617969512939453125e1), SC_(0.11512174832480081763915981239777491773305624587235e-2), SC_(-0.10048055596871303011680340653458917357004876937073e-1), + SC_(0.34e2), SC_(0.12e2), SC_(-0.5183623790740966796875e1), SC_(-0.478307342529296875e1), SC_(0.19830504045557048270215072167674339387017285629336e0), SC_(-0.2249253534751446118481456151969598698150770681191e0), + SC_(0.34e2), SC_(0.13e2), SC_(-0.17067182064056396484375e0), SC_(0.16002833843231201171875e1), SC_(-0.69970950610382171636908927657545058386162497676311e-4), SC_(0.1735041450185279822280565167940069281542584419891e-3), + SC_(0.34e2), SC_(0.13e2), SC_(0.379619312286376953125e1), SC_(0.3765476226806640625e1), SC_(-0.56296816567933203625217695968330184425299752947632e-2), SC_(0.21464192912326494430844934287639334145161986998958e-1), + SC_(0.34e2), SC_(0.14e2), SC_(0.201837062835693359375e1), SC_(-0.2973775386810302734375e1), SC_(-0.30602319213657541561387676330539096853430197003561e-1), SC_(0.3101843541474430125775501368221380601692868249897e-1), + SC_(0.34e2), SC_(0.17e2), SC_(-0.572339153289794921875e1), SC_(0.37769315242767333984375e1), SC_(-0.11482449549795715541665138029012133310225512950648e0), SC_(-0.58193193669712556825407770368449154350883331795453e0), + SC_(0.34e2), SC_(0.17e2), SC_(-0.23615055084228515625e1), SC_(-0.15888440608978271484375e1), SC_(-0.81701010555781934871874201404533038019079117065051e-1), SC_(-0.25788207870721930877984579776283099772843234559003e0), + SC_(0.34e2), SC_(0.17e2), SC_(0.178838884830474853515625e1), SC_(-0.518894100189208984375e1), SC_(0.77860126506645035871033610549261042083199407374962e-1), SC_(-0.19665688045513046305140827759237637312114795583158e-1), + SC_(0.34e2), SC_(0.18e2), SC_(-0.34216616153717041015625e1), SC_(-0.4451731204986572265625e1), SC_(0.2018250124842600992070972826092525919583422015107e-5), SC_(0.98202528575873328904595294177587194802271010326078e-4), + SC_(0.34e2), SC_(0.22e2), SC_(0.5335441112518310546875e1), SC_(-0.48849849700927734375e1), SC_(-0.35457995819358863070775990515577215744194271828492e0), SC_(0.2726542090502517592749072144971434560486725387608e0), + SC_(0.34e2), SC_(0.25e2), SC_(-0.5717056751251220703125e1), SC_(-0.2651668071746826171875e1), SC_(0.23231054747886190818217635895909590845802850349194e-2), SC_(-0.76535888310941153967539156375933485514543623650535e-3), + SC_(0.34e2), SC_(0.27e2), SC_(-0.5267404079437255859375e1), SC_(-0.607725203037261962890625e0), SC_(0.40178772095461132746981289438498237079704488396183e0), SC_(-0.33884527410380240935777884395196342685193422622907e0), + SC_(0.34e2), SC_(0.27e2), SC_(0.56536662578582763671875e0), SC_(0.37764084339141845703125e0), SC_(0.14482030760668204445837408492449818262868607752451e-3), SC_(0.14085675470049277776015006423447607403857692588278e-3), + SC_(0.34e2), SC_(0.3e2), SC_(-0.5906295299530029296875e1), SC_(-0.96199953556060791015625e0), SC_(-0.34766719496984776597465210065708393620110992296361e-10), SC_(0.2305996270469727378901602626559999771539322611368e-10), + SC_(0.34e2), SC_(0.31e2), SC_(-0.28265569210052490234375e1), SC_(0.21103322505950927734375e1), SC_(0.19037921950282100528451185671424238253882106530834e-13), SC_(-0.1175481467000614047356892390731542939385721039979e-13), + SC_(0.35e2), SC_(0.3e1), SC_(-0.6175082683563232421875e1), SC_(0.552494335174560546875e1), SC_(0.64762661721897286914407043438944796290733340830337e0), SC_(0.76278587040835558544493433474647829686025098006925e0), + SC_(0.35e2), SC_(0.6e1), SC_(0.3778275012969970703125e1), SC_(0.4842569828033447265625e1), SC_(0.26069400829564138472332830963452099519571850583881e0), SC_(0.25845486508349986513227757891492984177186166771467e0), + SC_(0.35e2), SC_(0.9e1), SC_(-0.493931674957275390625e1), SC_(-0.76453101634979248046875e0), SC_(0.17611300450297471655861377670143539666985254732432e-1), SC_(-0.11986431777207887659385788646195950178871750130696e-1), + SC_(0.35e2), SC_(0.11e2), SC_(0.5599313259124755859375e1), SC_(-0.13019330501556396484375e1), SC_(0.39306541370272934098647438084027145948462323623321e-1), SC_(0.21109286765620662127686926497444274161829510098599e0), + SC_(0.35e2), SC_(0.13e2), SC_(-0.3546209812164306640625e1), SC_(-0.5493760585784912109375e1), SC_(0.41140800695038474583623391400282317112025844394376e0), SC_(0.45690144435133473719116479983271298258798212805798e0), + SC_(0.35e2), SC_(0.13e2), SC_(0.55216426849365234375e1), SC_(0.40094776153564453125e1), SC_(0.65650245913257757935984854111888614427215698375688e-1), SC_(-0.22248838661680016523461200549762726853057751155267e0), + SC_(0.35e2), SC_(0.16e2), SC_(-0.26905200481414794921875e1), SC_(0.2040550708770751953125e1), SC_(-0.11410042867695768603335761210976964148910739151645e0), SC_(-0.32471276367906056287942215778218085529932955432059e0), + SC_(0.35e2), SC_(0.16e2), SC_(0.5014043331146240234375e1), SC_(0.61833057403564453125e1), SC_(-0.92628609322787250637744218627217798387397258942743e-3), SC_(-0.33950401545537407458127438621038123686600693271351e-1), + SC_(0.35e2), SC_(0.19e2), SC_(-0.2948562145233154296875e1), SC_(0.23101842403411865234375e1), SC_(0.61054606689296446102355449253333377374709815786486e-7), SC_(-0.54357346336593357491525011939182468075349764344657e-8), + SC_(0.35e2), SC_(0.19e2), SC_(-0.182896327972412109375e1), SC_(0.48633632659912109375e1), SC_(-0.13891158994925192872562838520451890709693704690757e-1), SC_(-0.49597428243820487984069474178404450499221616673685e-1), + SC_(0.35e2), SC_(0.25e2), SC_(0.3565537929534912109375e1), SC_(0.2607357025146484375e1), SC_(-0.11510203219569123647879133930562022919644316425375e-4), SC_(0.11605485085172380895845985292226655593817805360139e-4), + SC_(0.35e2), SC_(0.26e2), SC_(-0.5752410888671875e1), SC_(-0.45506725311279296875e1), SC_(0.2147731130313168954969967501315098314949861144624e-3), SC_(0.38598875598314903959033484143427104468466924065902e-3), + SC_(0.35e2), SC_(0.27e2), SC_(0.23241953551769256591796875e0), SC_(0.608651447296142578125e1), SC_(-0.12145006444031333088222083595802041635330588416337e-12), SC_(-0.17839314516843793734566875676149759876096506462614e-12), + SC_(0.35e2), SC_(0.27e2), SC_(0.3353102207183837890625e1), SC_(0.644649028778076171875e0), SC_(0.23293397144205718343095219616719055681533534205889e-14), SC_(-0.18276846375932362442421251992692060819005093672218e-13), + SC_(0.35e2), SC_(0.28e2), SC_(-0.148924577236175537109375e1), SC_(-0.5757661342620849609375e1), SC_(0.21771116952108476216566724234477798671110879927765e0), SC_(-0.33411424655576977010169522968144926649093725138912e0), + SC_(0.35e2), SC_(0.32e2), SC_(-0.3214913845062255859375e1), SC_(-0.566165637969970703125e1), SC_(-0.38983003305026869249082783272384743339651875210725e-34), SC_(-0.66316242242111015091959302816507433257724152502068e-34), + SC_(0.35e2), SC_(0.32e2), SC_(-0.12234590053558349609375e1), SC_(0.613618755340576171875e1), SC_(-0.49823989819244344298672232477081032502243492034449e-2), SC_(0.58886216218274013551747326518985147414028389639693e0), + SC_(0.35e2), SC_(0.35e2), SC_(0.3947638034820556640625e1), SC_(0.2264188289642333984375e1), SC_(-0.61016549653640153707452484713311968722816165008185e-5), SC_(-0.52104135104164816670829307399702509954801233110894e-5), + SC_(0.36e2), SC_(0.1e1), SC_(0.21743738651275634765625e1), SC_(0.4273143768310546875e1), SC_(-0.48264438420531041154138719748558547250544006921034e-2), SC_(-0.1027211589826428954508318432836077772278057490027e-1), + SC_(0.36e2), SC_(0.3e1), SC_(0.105017936229705810546875e1), SC_(0.9703075885772705078125e0), SC_(0.28023414023822310580330273812051655850887744019713e-1), SC_(-0.65813012076094990648189571910583081697746235900808e-2), + SC_(0.36e2), SC_(0.4e1), SC_(-0.569321155548095703125e0), SC_(0.2670110225677490234375e1), SC_(-0.11803637756901604534884368018564903072556303568166e-1), SC_(-0.36207811251658199088821921427158991402743840081632e-1), + SC_(0.36e2), SC_(0.5e1), SC_(-0.93527507781982421875e0), SC_(-0.35470836162567138671875e1), SC_(0.12856779089854493417126264230632227872523760325072e0), SC_(0.26169223011336727467266527601280179200222323411493e0), + SC_(0.36e2), SC_(0.8e1), SC_(0.349933624267578125e0), SC_(-0.237740230560302734375e1), SC_(-0.2046411806384792179939632417947530204382228090946e0), SC_(0.35056962261399772756804027654658133759034166311288e-1), + SC_(0.36e2), SC_(0.8e1), SC_(0.6177388668060302734375e1), SC_(-0.18279759883880615234375e1), SC_(-0.33405446563805483282662924358124090764569138739511e-2), SC_(-0.63138605584201364702579666904100967104480109266963e-2), + SC_(0.36e2), SC_(0.1e2), SC_(0.37946469783782958984375e1), SC_(-0.52452945709228515625e1), SC_(0.24260398291328944288145139643428076348208156865878e0), SC_(0.34223122061161569086943772129172956133861724761331e0), + SC_(0.36e2), SC_(0.11e2), SC_(-0.4704163074493408203125e1), SC_(-0.34106485843658447265625e1), SC_(0.90540303783993150467870442159489450654975000095926e-1), SC_(0.16660607413992855229762074909459792717465675304504e-1), + SC_(0.36e2), SC_(0.12e2), SC_(0.35546753406524658203125e1), SC_(0.565371227264404296875e1), SC_(0.18316156423729799461879537118973337088638257769457e0), SC_(-0.59147203843269717362931073514970634642013456697092e0), + SC_(0.36e2), SC_(0.13e2), SC_(0.592201328277587890625e1), SC_(-0.32812511920928955078125e0), SC_(-0.19221546392698773279681789373377641644372404904744e0), SC_(0.40122771978321226012148696247896983764497883097323e0), + SC_(0.36e2), SC_(0.16e2), SC_(-0.1280763149261474609375e1), SC_(-0.616000652313232421875e1), SC_(0.13405693401015095495129388603285599750939697886452e0), SC_(-0.31701770527568262964964812962724629734835358749076e0), + SC_(0.36e2), SC_(0.19e2), SC_(-0.3404269695281982421875e1), SC_(0.12897899150848388671875e1), SC_(0.18532299339835815658653258883287556973422377603475e-4), SC_(-0.13419656731737411662155444076113775826744546206039e-4), + SC_(0.36e2), SC_(0.19e2), SC_(0.31481277942657470703125e1), SC_(0.282136058807373046875e1), SC_(0.21608541875911484482619839280377140498992072196971e-34), SC_(0.4352740835449175273786127546343860266602215450184e-35), + SC_(0.36e2), SC_(0.21e2), SC_(0.49584560394287109375e1), SC_(0.28413121700286865234375e1), SC_(0.30818809265046209013246504196838768892343556314636e0), SC_(-0.69985663287759070110991967057193552994228020833338e-2), + SC_(0.36e2), SC_(0.23e2), SC_(0.4612946033477783203125e1), SC_(-0.2902143955230712890625e1), SC_(0.82722576970874955167593382079510927154775020161443e-1), SC_(-0.81160248033739719362640536978430112983799454496176e-1), + SC_(0.36e2), SC_(0.25e2), SC_(0.28841459751129150390625e1), SC_(0.1758579313755035400390625e0), SC_(-0.14614810787689115820681723612053986560929040406321e-9), SC_(-0.447086040437218656153849669311193642383366747105e-9), + SC_(0.36e2), SC_(0.29e2), SC_(0.45498828887939453125e1), SC_(0.650843918323516845703125e0), SC_(-0.17588594232504250844313117597961469791234192935114e0), SC_(-0.43835821579972026957359669574633985853039026566328e-2), + SC_(0.36e2), SC_(0.3e2), SC_(-0.3695554256439208984375e1), SC_(0.34049112796783447265625e1), SC_(-0.49308687446922613354500651342874756115731960080751e-6), SC_(0.10811237988846967988204519015573780804355808552599e-4), + SC_(0.36e2), SC_(0.3e2), SC_(0.138416826725006103515625e1), SC_(0.485745334625244140625e1), SC_(0.11718975012366615190022181338923530348301139954051e0), SC_(0.31090930623855047709904198988043404809066829550887e0), + SC_(0.36e2), SC_(0.3e2), SC_(0.4312946319580078125e1), SC_(-0.665180265903472900390625e0), SC_(-0.10396188509121396049908483789764720268279105376038e-1), SC_(0.20725149598268798180289515654479767979338972915199e-1), + SC_(0.36e2), SC_(0.34e2), SC_(-0.532843017578125e1), SC_(0.25678074359893798828125e1), SC_(0.94419857832555556720572713140264451857907085225083e-2), SC_(-0.73149913789329850940684770701152447685718924379975e-2), + SC_(0.36e2), SC_(0.35e2), SC_(-0.5747106075286865234375e1), SC_(0.5534349918365478515625e1), SC_(-0.15666912588548910010152345853983031099529312521263e-9), SC_(0.29070787518477918567114071799623371683907764556947e-9), + SC_(0.36e2), SC_(0.36e2), SC_(0.27591998577117919921875e1), SC_(0.1727804660797119140625e1), SC_(0.23042699089344079321919140879800356618823276857639e-15), SC_(-0.16832035251153218659707294060847720285511352789236e-15), + SC_(0.37e2), SC_(0), SC_(-0.331193065643310546875e1), SC_(0.19625661373138427734375e1), SC_(-0.59040431719830321939497774067883911626646808828588e0), SC_(0), + SC_(0.37e2), SC_(0.5e1), SC_(-0.399324703216552734375e1), SC_(0.352965450286865234375e1), SC_(-0.34824082871969541568390181605736168436988461887844e-2), SC_(0.89914332727447868563791431523940325441115453093328e-2), + SC_(0.37e2), SC_(0.5e1), SC_(0.162010610103607177734375e1), SC_(-0.4640440464019775390625e1), SC_(-0.29167550643159516617737412802554637678361610162562e-1), SC_(0.77550793331245717502227360054182457195048698483259e-1), + SC_(0.37e2), SC_(0.7e1), SC_(0.3354236602783203125e1), SC_(0.4074541568756103515625e1), SC_(-0.75190283231218629189973893587809314388123277514717e0), SC_(-0.18995695410749039436316705939767864946092237530211e0), + SC_(0.37e2), SC_(0.11e2), SC_(-0.572818470001220703125e1), SC_(0.24856951236724853515625e1), SC_(0.19389074033000062456128524622674459404145802558031e0), SC_(-0.26090056891764454737868371132703309460299600035472e0), + SC_(0.37e2), SC_(0.12e2), SC_(0.28321716785430908203125e1), SC_(-0.202374267578125e1), SC_(-0.2445934666733770593107923893198055065145824587679e0), SC_(-0.27721271566316580609498532960417573178381989003755e0), + SC_(0.37e2), SC_(0.14e2), SC_(-0.3642417430877685546875e1), SC_(0.56937999725341796875e1), SC_(0.83486129949316133491012083764527839421749251725045e-1), SC_(0.1988962321613134897834313141634083269954155515755e0), + SC_(0.37e2), SC_(0.16e2), SC_(-0.38547928333282470703125e1), SC_(-0.37430069446563720703125e1), SC_(0.15340761411680551440173238784517334046739113737875e0), SC_(-0.30754143690986007512519102243784797183691712373023e-1), + SC_(0.37e2), SC_(0.17e2), SC_(0.20390284061431884765625e1), SC_(-0.1286319196224212646484375e0), SC_(-0.20477328143545082417694159720253569894977139994573e0), SC_(-0.28930670033553256197023336028833594936991509573978e0), + SC_(0.37e2), SC_(0.2e2), SC_(-0.5596852779388427734375e1), SC_(-0.6203143596649169921875e1), SC_(-0.94299689671346106785969757870295334716476145037523e-2), SC_(0.31384143819878936152644850799412133061608621063165e0), + SC_(0.37e2), SC_(0.2e2), SC_(0.864350855350494384765625e0), SC_(-0.5037988185882568359375e1), SC_(0.21597965622429421148211487520626925473680903448659e0), SC_(-0.50296622569603223756324097936621770129590028617271e-1), + SC_(0.37e2), SC_(0.21e2), SC_(0.172814190387725830078125e1), SC_(0.3424273967742919921875e1), SC_(0.55493596974124575942502676553571309353893240418355e-1), SC_(-0.20060612855328578086038712293043636418348929939069e-1), + SC_(0.37e2), SC_(0.21e2), SC_(0.4667064189910888671875e1), SC_(-0.137155973911285400390625e1), SC_(-0.48890074984140087476157302649977781549398866542541e-1), SC_(0.28541899575151135107058005274770446820132961524225e-1), + SC_(0.37e2), SC_(0.27e2), SC_(-0.2363231182098388671875e1), SC_(0.363593578338623046875e1), SC_(-0.20556150562252155823978466385454720509982773518548e0), SC_(-0.2037179864858758412786001161234072400070335421107e0), + SC_(0.37e2), SC_(0.27e2), SC_(0.507170963287353515625e1), SC_(0.4142421245574951171875e1), SC_(0.12313415582380836442824153204499733399085003409887e0), SC_(-0.37302491580564145738684158432021011241065982153338e0), + SC_(0.37e2), SC_(0.28e2), SC_(0.5235477924346923828125e1), SC_(0.15546662807464599609375e1), SC_(-0.16694263530629170561134745517964653708576187189061e0), SC_(0.80980691301778800832935373162679443306008601966239e-1), + SC_(0.37e2), SC_(0.3e2), SC_(0.23033859729766845703125e1), SC_(-0.4927413463592529296875e1), SC_(0.11606291542327291942834427890974526617435713058201e0), SC_(-0.1963028395454235833862299815422454069334022623e-1), + SC_(0.37e2), SC_(0.34e2), SC_(-0.4569547176361083984375e1), SC_(0.5106524944305419921875e1), SC_(-0.26597387589294145061485272410316220810284438620564e0), SC_(-0.29331934304289058673104777740185578517140955026007e0), + SC_(0.38e2), SC_(0), SC_(-0.385000514984130859375e1), SC_(0.32233941555023193359375e1), SC_(0.85663667457337634729884391053932869770705247192481e-1), SC_(0), + SC_(0.38e2), SC_(0.5e1), SC_(0.4186511516571044921875e1), SC_(0.11965868473052978515625e1), SC_(-0.30756705730263749730833975121531661231994235007456e0), SC_(0.95226256844637999906010538372845363253556415606187e-1), + SC_(0.38e2), SC_(0.7e1), SC_(0.2454925537109375e1), SC_(-0.85801708698272705078125e0), SC_(-0.37848386928946957960177361544061248751941332163498e0), SC_(-0.10763326668391069617527492664635709253989608914231e0), + SC_(0.38e2), SC_(0.8e1), SC_(0.6020914554595947265625e1), SC_(0.92850553989410400390625e0), SC_(0.32601151655610156404367383997413180224978696137718e0), SC_(0.71854137037188866141963414444072398211974755249061e0), + SC_(0.38e2), SC_(0.11e2), SC_(0.4212505340576171875e1), SC_(-0.25713951587677001953125e1), SC_(0.16138227713070033537990020974723366249742693010514e0), SC_(-0.17773529470076020399451154973983331221873830909747e-2), + SC_(0.38e2), SC_(0.16e2), SC_(0.22381556034088134765625e1), SC_(0.547928142547607421875e1), SC_(0.22164730040201844185792803397297021117475940375287e0), SC_(-0.6761547974912585244399809184220446964697574465315e-1), + SC_(0.38e2), SC_(0.2e2), SC_(-0.28559644222259521484375e1), SC_(-0.21309597492218017578125e1), SC_(0.13052715376145115399607816832066136813211772693062e-4), SC_(0.61939579537732113408829715545908845673183377991271e-4), + SC_(0.38e2), SC_(0.21e2), SC_(0.15013239383697509765625e1), SC_(0.24704010486602783203125e1), SC_(0.11493854322261367622012364225956290739607252419893e-1), SC_(-0.27257158202495689848334660990760226905858948937919e0), + SC_(0.38e2), SC_(0.22e2), SC_(-0.706580340862274169921875e0), SC_(-0.138223898410797119140625e1), SC_(0.27593095583474122258813493311826770616362715602336e0), SC_(0.43610672876685305964947721351249694159707301339709e0), + SC_(0.38e2), SC_(0.24e2), SC_(0.34469749927520751953125e1), SC_(0.31393585205078125e1), SC_(0.57443589774062363104280320554762850898607160281915e-6), SC_(-0.30830341415872819902304942817731497444592618356133e-7), + SC_(0.38e2), SC_(0.26e2), SC_(0.5370316982269287109375e1), SC_(0.828188419342041015625e0), SC_(0.25842854314014818263078202769470828624933272847314e-1), SC_(-0.12747522215101311306826743078548453686256816393693e-1), + SC_(0.38e2), SC_(0.29e2), SC_(-0.4715228557586669921875e1), SC_(-0.31311509609222412109375e1), SC_(0.26924451996433607030454428262435118228565965387604e-1), SC_(0.8411651685457611552185932083165511261217799065308e-2), + SC_(0.38e2), SC_(0.3e2), SC_(0.148707139492034912109375e1), SC_(0.3357749462127685546875e1), SC_(-0.17118569301682477227411290998670554828928357012174e0), SC_(-0.34971848497040761327630670681948633751793416047773e-1), + SC_(0.38e2), SC_(0.31e2), SC_(0.6252527713775634765625e1), SC_(0.19403975009918212890625e1), SC_(-0.27734703906140091407654303548501789219824738599088e-42), SC_(-0.13812428853645629227486800239185285435516576667286e-42), + SC_(0.38e2), SC_(0.32e2), SC_(-0.211925983428955078125e1), SC_(0.184068977832794189453125e1), SC_(-0.36540306401826445203586073983483893923353047129563e0), SC_(0.36744724409151777739983732825837984771450491081829e0), + SC_(0.38e2), SC_(0.34e2), SC_(0.177065169811248779296875e1), SC_(0.268385028839111328125e1), SC_(0.44489390978321896925312513090443818620132711811972e0), SC_(0.64839630736196134505315634619626437453616319400174e-1), + SC_(0.38e2), SC_(0.35e2), SC_(-0.108195507526397705078125e1), SC_(-0.494240093231201171875e1), SC_(-0.21063370417133738566738472865165525423012393225209e0), SC_(0.4191673049618808930269680220452215046716958074704e-1), + SC_(0.38e2), SC_(0.35e2), SC_(-0.501043498516082763671875e0), SC_(-0.180306494235992431640625e0), SC_(0.90609706910817486775327385725551557903183775703621e-9), SC_(-0.24962029457283237350210265045078497842567485138623e-10), + SC_(0.38e2), SC_(0.36e2), SC_(0.50760555267333984375e1), SC_(0.65673887729644775390625e0), SC_(0.3188581332146985668250825945764647498098480235838e-1), SC_(-0.39447980035197207817773108832361416199044211977205e0), + SC_(0.38e2), SC_(0.37e2), SC_(0.495677661895751953125e1), SC_(0.841379821300506591796875e0), SC_(0.49575524826641166367996162563399794544201410813859e0), SC_(-0.14517590970609161993208933474553530979186899216424e0), + SC_(0.39e2), SC_(0.1e1), SC_(-0.22189953327178955078125e1), SC_(-0.568559551239013671875e1), SC_(-0.26362352369126604619827073712298941471465705306636e0), SC_(-0.17942331459264444736582830183148441709749911009171e0), + SC_(0.39e2), SC_(0.3e1), SC_(0.2702335357666015625e1), SC_(-0.49971103668212890625e1), SC_(0.32947376425504896243460752647524994514906015574692e0), SC_(0.28701345716644405530332976547805814355020050920744e0), + SC_(0.39e2), SC_(0.7e1), SC_(0.5940549373626708984375e1), SC_(-0.6232646942138671875e1), SC_(-0.51656586279688044950711634036251354125533716728252e0), SC_(-0.19077040635494184638120206366558534298625300719421e0), + SC_(0.39e2), SC_(0.11e2), SC_(-0.338810634613037109375e1), SC_(0.4586989879608154296875e1), SC_(-0.23877153244768608999890067159152512877447099792542e0), SC_(-0.4626878054862662602734660652549887601766588421787e-1), + SC_(0.39e2), SC_(0.13e2), SC_(-0.248224544525146484375e1), SC_(0.24472157955169677734375e1), SC_(0.54941092645166904834920834727446255000680307548179e-1), SC_(0.23091471424958065001681061908432063952364425648914e-1), + SC_(0.39e2), SC_(0.15e2), SC_(-0.190022623538970947265625e1), SC_(0.74311459064483642578125e0), SC_(0.43464357338660042477118006495680152129360507616133e-1), SC_(-0.28537495656259039876978837909500642477003671348907e0), + SC_(0.39e2), SC_(0.15e2), SC_(0.6118773937225341796875e1), SC_(-0.27456552982330322265625e1), SC_(-0.30802787544450581315318751333233601636223571240946e-4), SC_(0.11039251492516581623768579071290124463674770612662e-4), + SC_(0.39e2), SC_(0.16e2), SC_(0.113862192630767822265625e1), SC_(0.402301251888275146484375e0), SC_(-0.69843082662666438469907379107724580187662162902624e-1), SC_(-0.10815552291147088835252669690754246626577926778838e-1), + SC_(0.39e2), SC_(0.18e2), SC_(0.30042703151702880859375e1), SC_(-0.4114825725555419921875e1), SC_(-0.20948815393434284963434815248781264780604118706442e-8), SC_(-0.85814057146474070445985001188784612705395387648924e-8), + SC_(0.39e2), SC_(0.19e2), SC_(-0.4547080516815185546875e1), SC_(0.4244960308074951171875e1), SC_(-0.14979119947863593888671163915967848470667139837599e0), SC_(0.24784312736335417217830276955636319347100852388625e0), + SC_(0.39e2), SC_(0.19e2), SC_(-0.179863739013671875e1), SC_(0.2398190200328826904296875e0), SC_(0.88771011876196951185099188821790923832267574397737e-3), SC_(0.56505603928521901211793499219351978008379345904375e-2), + SC_(0.39e2), SC_(0.21e2), SC_(0.2903470516204833984375e1), SC_(-0.102999699115753173828125e1), SC_(0.81005435097927983178305242439494753567303393829117e-6), SC_(0.3060279428421732671244180799889083089964584265582e-6), + SC_(0.39e2), SC_(0.22e2), SC_(-0.56102597713470458984375e0), SC_(0.15654294490814208984375e1), SC_(-0.26853168248495340627513459942203432757962017961318e0), SC_(0.31854049206691960868565297873557734721157679072492e-1), + SC_(0.39e2), SC_(0.26e2), SC_(0.189623260498046875e1), SC_(-0.5882033824920654296875e1), SC_(-0.24416704670322721774874359464017402558898849373876e-1), SC_(-0.38461895659007789994759209956968120490261875418424e-1), + SC_(0.39e2), SC_(0.29e2), SC_(-0.31472566127777099609375e1), SC_(-0.32558839321136474609375e1), SC_(-0.29782600311806713071438519559259850541305144000117e-59), SC_(0.51999467971643933528091252225423690752025659468939e-60), + SC_(0.39e2), SC_(0.33e2), SC_(-0.517082977294921875e1), SC_(-0.27457325458526611328125e1), SC_(0.44485772050549760148108071373952867240008433825619e0), SC_(0.24130428948443863212425471655875547270644914086933e0), + SC_(0.39e2), SC_(0.34e2), SC_(-0.795731604099273681640625e0), SC_(0.423138332366943359375e1), SC_(0.37298078383831255143216964283953070387994540231477e-2), SC_(-0.28132865355569288227291542068525502725794275466035e-2), + SC_(0.4e2), SC_(0.3e1), SC_(0.37776181697845458984375e1), SC_(-0.437015628814697265625e1), SC_(-0.44762897582083848054962033395906182795836231423733e-2), SC_(0.27082188219665115221843477268315210055663448216561e-2), + SC_(0.4e2), SC_(0.4e1), SC_(-0.257291126251220703125e1), SC_(-0.168192327022552490234375e1), SC_(-0.33452579380889814397592647665020592181468185457127e0), SC_(0.15933434358144601091537541781205856396916789174386e0), + SC_(0.4e2), SC_(0.7e1), SC_(0.59571781158447265625e1), SC_(0.108623218536376953125e1), SC_(-0.15066685304143155089501514444910373337242367259554e0), SC_(-0.58918330377945397082369473462595166743274962048925e0), + SC_(0.4e2), SC_(0.9e1), SC_(-0.21466524600982666015625e1), SC_(0.48274097442626953125e1), SC_(-0.19012849637414995253299495901029844216370474405966e0), SC_(0.11283691039569148528403234822003574114460332154869e0), + SC_(0.4e2), SC_(0.9e1), SC_(0.3700389385223388671875e1), SC_(-0.635310947895050048828125e0), SC_(0.3858473097149320852394248915156604119119565490555e0), SC_(0.24481208096959495860585691337182183042737517426572e0), + SC_(0.4e2), SC_(0.1e2), SC_(-0.454146480560302734375e1), SC_(-0.14596920013427734375e1), SC_(0.13183360317324389944322693050392606116191901939996e0), SC_(0.26625452629980127019969655041850113347162456402059e0), + SC_(0.4e2), SC_(0.1e2), SC_(0.37030851840972900390625e1), SC_(0.175278103351593017578125e1), SC_(-0.45170634323389672982410842609144643417527702181142e-1), SC_(0.17760568565726107759448606450180599968822314132773e0), + SC_(0.4e2), SC_(0.12e2), SC_(0.35668976306915283203125e1), SC_(-0.12689526081085205078125e1), SC_(0.98479452197270371861686544756821513595602498426226e-1), SC_(0.51336076438396321585068371219478921083311068650963e-1), + SC_(0.4e2), SC_(0.13e2), SC_(0.5966534137725830078125e1), SC_(-0.60297451019287109375e1), SC_(-0.40814888319587251224627559368729895906147542395101e0), SC_(-0.62992985899195241819838302151083705992979344250913e-1), + SC_(0.4e2), SC_(0.14e2), SC_(-0.121276605129241943359375e1), SC_(-0.2129637263715267181396484375e-1), SC_(-0.17622440466028082454444309119417984799272298340445e0), SC_(0.54155438110526668529476730456045528858751411912114e-1), + SC_(0.4e2), SC_(0.15e2), SC_(-0.190999209880828857421875e1), SC_(-0.10845546722412109375e1), SC_(0.44641709124084006993013389525322466495115256717402e-1), SC_(-0.28010293696016297798145039395962388242625468439447e-1), + SC_(0.4e2), SC_(0.15e2), SC_(0.38548543453216552734375e1), SC_(-0.469067287445068359375e1), SC_(0.93373632251474992991169593675039459740595983426086e-2), SC_(-0.27643839420475811736860157626921201409934132878769e-1), + SC_(0.4e2), SC_(0.16e2), SC_(-0.30429947376251220703125e1), SC_(-0.4699630260467529296875e1), SC_(0.39182691470049792887278401849472432789463723587197e-8), SC_(0.81117299585000965530489903892218563700098780701483e-9), + SC_(0.4e2), SC_(0.16e2), SC_(0.459347820281982421875e1), SC_(-0.5229199886322021484375e1), SC_(0.38401195774960842490415846405454674436193731539014e-1), SC_(0.87160512412409821485858623433906534663447952460687e-1), + SC_(0.4e2), SC_(0.19e2), SC_(0.4738133907318115234375e1), SC_(0.625856876373291015625e1), SC_(0.24074378534225175098659151322707561146989517045009e0), SC_(-0.12159818883173160520588469053028402457467987664732e0), + SC_(0.4e2), SC_(0.21e2), SC_(-0.375971221923828125e1), SC_(0.151146328449249267578125e1), SC_(0.57848721407149135967887535562592536133964666466945e0), SC_(0.19479271494721171058806180253330478563386263234169e0), + SC_(0.4e2), SC_(0.21e2), SC_(0.28800032138824462890625e1), SC_(-0.29098837375640869140625e1), SC_(-0.13310019478983451100130411530770127405799208547926e-5), SC_(0.86029115971033637431048736936310285542831587652986e-5), + SC_(0.4e2), SC_(0.23e2), SC_(-0.39055421352386474609375e1), SC_(0.13312530517578125e1), SC_(-0.9007081037290095635686600052829002177364004584175e-1), SC_(0.92205026580488481026551623548061073533619482443032e-1), + SC_(0.4e2), SC_(0.23e2), SC_(-0.157518100738525390625e1), SC_(-0.33773653507232666015625e1), SC_(0.33327344273553296806259811536248755782132403624042e-1), SC_(0.38743943892992262541511169590568513858360814004108e-1), + SC_(0.4e2), SC_(0.23e2), SC_(0.2200527667999267578125e1), SC_(0.2192636966705322265625e1), SC_(0.40233060264922782360971791600003937740009514216918e0), SC_(0.67062998179869328378273708657154818165734314674185e-1), + SC_(0.4e2), SC_(0.25e2), SC_(-0.2899014055728912353515625e0), SC_(-0.1307614147663116455078125e0), SC_(-0.13507709383015693590632361853520826606369848983956e-6), SC_(0.173083988959859126296403537718726138627706063577e-7), + SC_(0.4e2), SC_(0.25e2), SC_(0.27851517200469970703125e1), SC_(0.29652383327484130859375e1), SC_(0.38264840408146744282303594854313779422713995446482e-5), SC_(-0.12217018093513181920638660233049226584954316507899e-4), + SC_(0.4e2), SC_(0.33e2), SC_(-0.20672550201416015625e1), SC_(0.594336986541748046875e1), SC_(-0.1060389896749715128395881260544368034960110652837e0), SC_(-0.47792841908598828730176516794167651470716625984297e0), + SC_(0.4e2), SC_(0.33e2), SC_(0.5824893474578857421875e1), SC_(0.57718982696533203125e1), SC_(-0.11239575764667924426550709740834462169106457079581e-7), SC_(0.26124919737532424928559985927407204733369029083156e-7), + SC_(0.4e2), SC_(0.34e2), SC_(-0.56875209808349609375e1), SC_(0.47037041187286376953125e0), SC_(-0.8757634929310491949722035857147172673734280134627e-5), SC_(-0.25622622923765712457025973291203211731453605863522e-5), + SC_(0.4e2), SC_(0.34e2), SC_(-0.5098448276519775390625e1), SC_(-0.233850765228271484375e1), SC_(-0.27180808118053782911776373329934161771506524548913e-1), SC_(0.39614999267501463222578898064989094333737791338198e-1), + SC_(0.4e2), SC_(0.39e2), SC_(0.39100372791290283203125e1), SC_(0.4565982341766357421875e1), SC_(0.18180670109365057787842199567581333502107779612893e-5), SC_(-0.28157765632310697627215982196127424206233996382758e-5), + SC_(0.41e2), SC_(0.1e1), SC_(0.2786633968353271484375e1), SC_(0.57350695133209228515625e0), SC_(-0.44760371090909016993347029643895660736478199881072e0), SC_(-0.28911953189512459243804783868845499997749736745644e0), + SC_(0.41e2), SC_(0.3e1), SC_(0.21175868511199951171875e1), SC_(0.4694798290729522705078125e0), SC_(-0.44850660846618986970645476839099111847576684048019e-1), SC_(-0.27381589047694237083995300860556295039133973411612e0), + SC_(0.41e2), SC_(0.5e1), SC_(-0.5158113002777099609375e1), SC_(-0.2901681423187255859375e1), SC_(0.10745114844988161076944383880828165711389595466395e0), SC_(0.27601783958596812984550372881019015070706626570317e0), + SC_(0.41e2), SC_(0.8e1), SC_(-0.570272541046142578125e1), SC_(0.306122303009033203125e1), SC_(0.28526664316862824482952086071590174961255665459141e0), SC_(-0.21370755079689401572155170348121531461371386783466e0), + SC_(0.41e2), SC_(0.9e1), SC_(-0.513057994842529296875e1), SC_(0.2766685009002685546875e1), SC_(0.11628498538792599118341763242850424752655709073871e0), SC_(-0.27543539395364710561818402975346634066511532570006e-1), + SC_(0.41e2), SC_(0.9e1), SC_(0.7519805431365966796875e0), SC_(0.1057139873504638671875e1), SC_(0.24699705676628218421728374594781404036130119821091e-1), SC_(0.22160696377651964786951345214359466494054833553114e-2), + SC_(0.41e2), SC_(0.11e2), SC_(-0.3691407144069671630859375e0), SC_(-0.541163158416748046875e1), SC_(-0.19873479786691230812064098894402777997967510381447e0), SC_(-0.32543534928091777817681390635416762886531375120039e-1), + SC_(0.41e2), SC_(0.14e2), SC_(-0.26898710727691650390625e1), SC_(-0.1288261890411376953125e1), SC_(-0.14114439308501138699715615576476406213799579490405e0), SC_(-0.149425341158853137667723597754008887519361320998e0), + SC_(0.41e2), SC_(0.17e2), SC_(-0.4467624187469482421875e1), SC_(0.5521785259246826171875e1), SC_(0.31061432817444388590883580727247736893178861012404e0), SC_(-0.12313870468392041314710116774139076155788978765743e0), + SC_(0.41e2), SC_(0.17e2), SC_(0.6043213367462158203125e1), SC_(-0.104114472866058349609375e1), SC_(0.33163562259315332695135153347916529546350024527475e-3), SC_(0.74122870028555822986561272352259037698028732298604e-3), + SC_(0.41e2), SC_(0.19e2), SC_(-0.5394939899444580078125e1), SC_(0.503642749786376953125e1), SC_(0.41889697971732974586602635059611704564495625175026e-1), SC_(0.32949810789601385241026117965648403279944612283107e0), + SC_(0.41e2), SC_(0.19e2), SC_(0.29545609951019287109375e1), SC_(0.3774587154388427734375e1), SC_(0.67867621291278295915493482070888123912494296005881e-6), SC_(-0.40633453926854345331768951551807003641873314084801e-6), + SC_(0.41e2), SC_(0.2e2), SC_(0.171152722835540771484375e1), SC_(0.2340153217315673828125e1), SC_(-0.29906195201292177353286861304941487031700630881578e0), SC_(0.99380010597569928266886654548185101711035406388685e-1), + SC_(0.41e2), SC_(0.2e2), SC_(0.514093494415283203125e1), SC_(0.609187793731689453125e1), SC_(-0.77374343105202905250737530627478215930457399726053e-1), SC_(0.63154681222097794088938963676337781969606208036491e-1), + SC_(0.41e2), SC_(0.21e2), SC_(-0.35850913524627685546875e1), SC_(-0.83867251873016357421875e0), SC_(-0.2333563753155654210311316578086154477809308917333e-1), SC_(-0.67388121050409449597888592350313195316110946347159e-1), + SC_(0.41e2), SC_(0.21e2), SC_(0.4946534633636474609375e1), SC_(-0.48415355682373046875e1), SC_(-0.69919324560903728928353631917888297706507774695596e-1), SC_(0.15265117982428554944960361339090875253054623998399e0), + SC_(0.41e2), SC_(0.22e2), SC_(-0.172838771343231201171875e1), SC_(-0.422222423553466796875e1), SC_(-0.4977079638224638861157822152177625090816800241581e-1), SC_(-0.23129651896334090187109358139777580008076767016578e0), + SC_(0.41e2), SC_(0.22e2), SC_(0.591207981109619140625e1), SC_(0.10358831882476806640625e1), SC_(-0.14134038630395918678341776110548549572535458501209e-2), SC_(-0.14503001571812621064424380118541042963392414572942e-2), + SC_(0.41e2), SC_(0.23e2), SC_(0.27102906703948974609375e1), SC_(-0.4408702373504638671875e1), SC_(-0.55956984093246998580263217024611818175209323778085e-2), SC_(0.66218258555556140201125517574104315121373299514595e-2), + SC_(0.41e2), SC_(0.28e2), SC_(0.280195140838623046875e1), SC_(-0.601230621337890625e1), SC_(-0.23354137993052426950870473036093545878660021821853e-7), SC_(-0.84592909664490115819274721521067408417143014773123e-7), + SC_(0.41e2), SC_(0.29e2), SC_(-0.476459598541259765625e1), SC_(0.184486472606658935546875e1), SC_(0.78840929810301063790453573244334159608288847000681e-2), SC_(0.74331075339628723047208730083679155160072983392562e-3), + SC_(0.41e2), SC_(0.32e2), SC_(-0.24159405231475830078125e1), SC_(0.4049268245697021484375e1), SC_(0.16505668366641421775293001841157511391319219303939e-1), SC_(0.16046229725849754489105196553804398467711316257933e-1), + SC_(0.41e2), SC_(0.32e2), SC_(0.704719483852386474609375e0), SC_(-0.24672639369964599609375e1), SC_(-0.11987287913210018495639103128089366594250266494911e-1), SC_(0.52475693538344912206019782246067129283971818658146e-2), + SC_(0.41e2), SC_(0.35e2), SC_(-0.35141360759735107421875e0), SC_(-0.306959569454193115234375e0), SC_(-0.11978091867523295994625639273868749999740050953383e-12), SC_(0.46523715929069624312526174060689742902961770313435e-12), + SC_(0.41e2), SC_(0.35e2), SC_(0.3341947078704833984375e1), SC_(0.3522301197052001953125e1), SC_(-0.21593444102896830038920944859640869723121449308558e-20), SC_(-0.20459024208809578921889182191243802099549472746347e-20), + SC_(0.41e2), SC_(0.38e2), SC_(0.31292583942413330078125e1), SC_(0.5742122173309326171875e1), SC_(0.88236154445512265403701000652271970226796206435487e-71), SC_(0.62592299509180428918327187921131788623351582211663e-70), + SC_(0.42e2), SC_(0.1e1), SC_(0.54931964874267578125e1), SC_(0.30963861942291259765625e1), SC_(-0.37065447624222376527473480374628900361171446878783e0), SC_(0.16767400160509097473936715527611962301507922289622e-1), + SC_(0.42e2), SC_(0.2e1), SC_(-0.13086125850677490234375e1), SC_(0.37802193164825439453125e1), SC_(0.1265686306466798255955286308566526245012909283909e-1), SC_(0.41871959738118297810142522963337434319682768231143e-1), + SC_(0.42e2), SC_(0.8e1), SC_(0.96457326412200927734375e0), SC_(-0.196476018428802490234375e1), SC_(0.35383165719216546034992204921505950403246787970813e0), SC_(-0.3580263903523446698569749129509056899951516345304e-2), + SC_(0.42e2), SC_(0.12e2), SC_(0.183848476409912109375e1), SC_(-0.22926352024078369140625e1), SC_(-0.22102739071324446085117239461696799485802058889798e-1), SC_(-0.21121944928260335022194201425513909683551148751589e-1), + SC_(0.42e2), SC_(0.16e2), SC_(0.49776821136474609375e1), SC_(0.15619199275970458984375e1), SC_(0.18032612126454231728664840634674213894054526913705e0), SC_(-0.2578393685356509370899918428183645557608231166465e-1), + SC_(0.42e2), SC_(0.22e2), SC_(-0.45919589996337890625e1), SC_(-0.160456645488739013671875e1), SC_(0.84068343182306297121700818898402238377536650237956e-1), SC_(-0.77216809306544453423453034598135737820796542584815e-1), + SC_(0.42e2), SC_(0.22e2), SC_(0.755321443080902099609375e0), SC_(0.4825696468353271484375e1), SC_(-0.35393211696534831350114676301893436585408368600156e0), SC_(0.26840675840769681747595590373354025593899502516395e0), + SC_(0.42e2), SC_(0.26e2), SC_(0.5576095104217529296875e1), SC_(-0.24977228641510009765625e1), SC_(-0.30599874889718534775320919776907586054079009418347e0), SC_(-0.51263715540835924707617792550592179259559170412e0), + SC_(0.42e2), SC_(0.27e2), SC_(-0.6024259090423583984375e1), SC_(-0.671911537647247314453125e0), SC_(-0.86041972878090301523782074763452497660779624759101e-9), SC_(-0.73648548818155533768830319274246340585527530670346e-9), + SC_(0.42e2), SC_(0.36e2), SC_(0.38493900299072265625e1), SC_(0.28699934482574462890625e1), SC_(-0.36607793994528125608481004889296589657447432932742e-3), SC_(0.13478893781515524984918558255955818953206485523795e-3), + SC_(0.43e2), SC_(0.1e1), SC_(-0.160178196430206298828125e1), SC_(-0.27454612255096435546875e1), SC_(0.6502076902283828085178840580815731887693284873971e-1), SC_(0.27194322026461882480931005976894006261391499412988e-1), + SC_(0.43e2), SC_(0.1e1), SC_(0.193334352970123291015625e1), SC_(0.5253942012786865234375e1), SC_(-0.16940434235987969669001635678648910739145353594867e0), SC_(0.2816165094206977078525631322453265278177663991694e0), + SC_(0.43e2), SC_(0.3e1), SC_(0.5912111759185791015625e1), SC_(0.468163394927978515625e1), SC_(-0.45511375483571548105977295377757139727733506496886e-2), SC_(-0.49186703988235064739081523170471729426524162941611e-1), + SC_(0.43e2), SC_(0.3e1), SC_(0.5928637981414794921875e1), SC_(-0.5262205600738525390625e1), SC_(0.38950731275125627569610073982208858875030537244758e0), SC_(-0.3069945905235465706056740197390004578303326084831e-1), + SC_(0.43e2), SC_(0.7e1), SC_(-0.19417209923267364501953125e0), SC_(-0.437286090850830078125e1), SC_(0.61481308483532017364960216959900644401223523648576e0), SC_(0.64055424887581681583907268656839907438874913498591e0), + SC_(0.43e2), SC_(0.1e2), SC_(-0.434856128692626953125e1), SC_(-0.3684755802154541015625e1), SC_(-0.70165262585061217924626711140433043042893636426591e-1), SC_(-0.80122155565480983654024509998827275734106778173452e-1), + SC_(0.43e2), SC_(0.1e2), SC_(0.125106012821197509765625e1), SC_(0.39075133800506591796875e1), SC_(0.52485287082250021389344263214914764000512860730697e-1), SC_(0.26605086765995645869214589782985506592941048559677e0), + SC_(0.43e2), SC_(0.17e2), SC_(0.2097723484039306640625e1), SC_(-0.4791971683502197265625e1), SC_(-0.16377789599610764789344549419887127908311498854713e0), SC_(-0.36261301289582052796076088829087991025171845767032e-1), + SC_(0.43e2), SC_(0.18e2), SC_(0.54475421905517578125e1), SC_(0.600885105133056640625e1), SC_(-0.12227560598673887221889076301163576057498352219125e-1), SC_(-0.53270782480505198843576101246976970664315947760873e-1), + SC_(0.43e2), SC_(0.23e2), SC_(0.4663701355457305908203125e-1), SC_(-0.117210423946380615234375e1), SC_(0.10578477307021401427507619815264667072161756065346e-22), SC_(0.40604428233472254693938294111214999985360842365261e-22), + SC_(0.43e2), SC_(0.24e2), SC_(0.27731602191925048828125e1), SC_(0.4576013088226318359375e1), SC_(0.4827373378371254410267285017280371281507807161791e-3), SC_(-0.63813420099543301085234886590708611242752505956473e-4), + SC_(0.43e2), SC_(0.33e2), SC_(0.176919162273406982421875e1), SC_(-0.10424125194549560546875e1), SC_(-0.30291233043563300129849982877858513492570763782676e0), SC_(-0.48233244522652771503645402734518941816634117030754e-1), + SC_(0.43e2), SC_(0.4e2), SC_(-0.616541957855224609375e1), SC_(0.4386737346649169921875e1), SC_(0.131823146458441547633836798721374931293128945795e-34), SC_(-0.65261504313363083883479628490167668223107806653275e-35), + SC_(0.44e2), SC_(0.2e1), SC_(-0.210887813568115234375e1), SC_(0.2064402103424072265625e1), SC_(0.66284644235954233363632987433397538765544954096284e-1), SC_(0.10038503289391170703449082166849393783292273385062e0), + SC_(0.44e2), SC_(0.6e1), SC_(-0.270239543914794921875e1), SC_(0.447860622406005859375e1), SC_(0.60015102175321045819349123378786932514320713418143e-1), SC_(-0.35365149331466188300321960764228979860909536999347e0), + SC_(0.44e2), SC_(0.6e1), SC_(0.502216243743896484375e1), SC_(0.55176219940185546875e1), SC_(0.18020475570272501843944024820945189162755654831805e-1), SC_(-0.1507054439952946472559027093517248587458260454792e0), + SC_(0.44e2), SC_(0.9e1), SC_(-0.4739846706390380859375e1), SC_(-0.684512555599212646484375e0), SC_(0.29720600687942097545037255480053597233140974573527e0), SC_(0.36612766138080746022130980274923317786634100148313e-1), + SC_(0.44e2), SC_(0.17e2), SC_(0.61069583892822265625e1), SC_(-0.31832225322723388671875e1), SC_(-0.19724351561898231996746067351765415901455640516974e-4), SC_(0.16875190288492450432384106679901350046274343424895e-4), + SC_(0.44e2), SC_(0.18e2), SC_(0.732429981231689453125e0), SC_(-0.596606922149658203125e1), SC_(0.4311074733137189814083164592670565785920512707363e-2), SC_(-0.27943588251736749003644092959127989087169358190939e-2), + SC_(0.44e2), SC_(0.19e2), SC_(0.41352845728397369384765625e-2), SC_(0.4806464672088623046875e1), SC_(0.23816584139595749620260246926958614624230304798328e-36), SC_(0.52419335130613194463634161064992381220624244564069e-37), + SC_(0.44e2), SC_(0.19e2), SC_(0.443493366241455078125e1), SC_(0.497878170013427734375e1), SC_(0.31914540699308768023021802875001781051308182085836e0), SC_(0.1161619023058994035115426520831430848626638706681e0), + SC_(0.44e2), SC_(0.21e2), SC_(0.5022947788238525390625e1), SC_(0.30831587314605712890625e1), SC_(-0.50132037323238884797543797853839840278747889855096e-1), SC_(0.1400777440654766926502972696961782549165936261845e0), + SC_(0.44e2), SC_(0.22e2), SC_(-0.2321910381317138671875e1), SC_(-0.28238275051116943359375e1), SC_(0.30299881952384371248837650192933033966768509812876e0), SC_(0.25919949336834942177772319757362911533638697396495e0), + SC_(0.44e2), SC_(0.23e2), SC_(0.14365551471710205078125e1), SC_(0.51988544464111328125e1), SC_(0.31332072053015667363946949610174590747952655564775e0), SC_(0.61275838168345603293856987391767615654418702515799e-1), + SC_(0.44e2), SC_(0.25e2), SC_(-0.474674224853515625e1), SC_(-0.4412345409393310546875e1), SC_(-0.31324992129142435373839965159292587033308246958752e0), SC_(0.11537299148658286918994279887325675058499720187771e0), + SC_(0.44e2), SC_(0.28e2), SC_(-0.13963277339935302734375e1), SC_(0.451167011260986328125e1), SC_(0.27791086561301244532611159484631191650774060844459e0), SC_(0.21705253872615266329386024847936506238945025696093e0), + SC_(0.44e2), SC_(0.29e2), SC_(-0.1135275363922119140625e1), SC_(-0.2635244466364383697509765625e-1), SC_(-0.28422531146145117495535273336196996534923484107899e0), SC_(0.27243500407779479862891090435179662344000257040133e0), + SC_(0.44e2), SC_(0.29e2), SC_(0.410391139984130859375e1), SC_(0.551767635345458984375e1), SC_(-0.22556695838212962205131755486923853802156004357055e0), SC_(0.47750462951755744836798874918839062249400663018501e-1), + SC_(0.44e2), SC_(0.32e2), SC_(0.27227523326873779296875e1), SC_(-0.23255970478057861328125e1), SC_(0.225159297318814868776636915494200155274959184538e-6), SC_(0.33506402055328666863189722097476659664932692422277e-6), + SC_(0.44e2), SC_(0.32e2), SC_(0.35741660594940185546875e1), SC_(-0.20553843975067138671875e1), SC_(-0.95208843267735130259986009117365664915838276829943e-6), SC_(-0.19413308574328131999815650494587412826930220403174e-6), + SC_(0.44e2), SC_(0.39e2), SC_(-0.5015091419219970703125e1), SC_(-0.36986305713653564453125e1), SC_(0.65673589762762509196254689824127314259238994729293e-1), SC_(0.17940456940288493861690019949592356205897933668166e-1), + SC_(0.45e2), SC_(0), SC_(0.939174830913543701171875e0), SC_(0.5369831562042236328125e1), SC_(-0.15933733183488475302574634162534414155663773104725e0), SC_(0), + SC_(0.45e2), SC_(0.2e1), SC_(-0.130913650989532470703125e1), SC_(-0.354610443115234375e1), SC_(0.13921098187224773570610176981394499039542145613822e0), SC_(-0.14594925796703871477805511474081865541632485211103e0), + SC_(0.45e2), SC_(0.3e1), SC_(-0.604929065704345703125e1), SC_(-0.20665225982666015625e1), SC_(-0.49911729921863373943368450136926638789712925224419e0), SC_(-0.41832488452007977388497358200789629193628922907864e-1), + SC_(0.45e2), SC_(0.3e1), SC_(-0.552333736419677734375e1), SC_(0.3132267475128173828125e1), SC_(-0.23816772167653511501207331843608268271957639051909e0), SC_(0.66646082580896887544342405123693997582447332336862e-2), + SC_(0.45e2), SC_(0.3e1), SC_(-0.15620987415313720703125e1), SC_(-0.50837457180023193359375e0), SC_(-0.13428904810115399322775375248291552956333652314016e-1), SC_(0.29382086096676203381597203219739487357219947180009e0), + SC_(0.45e2), SC_(0.5e1), SC_(0.16549806296825408935546875e0), SC_(-0.6136397838592529296875e1), SC_(-0.56271021513870705900836394291962825302725244127426e0), SC_(-0.50758335850164506390927543089742197802394050752957e0), + SC_(0.45e2), SC_(0.7e1), SC_(-0.5060004711151123046875e1), SC_(0.193110167980194091796875e0), SC_(-0.71540994144235865560077645766823944384967816471795e-1), SC_(-0.32139382088905621629202225810076786761143583265731e0), + SC_(0.45e2), SC_(0.7e1), SC_(0.5014622211456298828125e0), SC_(-0.587950992584228515625e1), SC_(0.3839338150104470247569276470374314485915123284344e0), SC_(-0.12547208174733428227188968181934135699287480959684e0), + SC_(0.45e2), SC_(0.12e2), SC_(-0.2188745021820068359375e1), SC_(-0.77272093296051025390625e0), SC_(0.34555666780913094925074329525267632969391312273423e0), SC_(0.52977729970812527589078040905728687761822956075162e-1), + SC_(0.45e2), SC_(0.13e2), SC_(0.5684658527374267578125e1), SC_(-0.422357845306396484375e1), SC_(0.27266783223837613881540476320835810520139733921365e-1), SC_(-0.38149831577034554443304936206080974741507979649135e0), + SC_(0.45e2), SC_(0.16e2), SC_(0.197958719730377197265625e1), SC_(-0.619251430034637451171875e0), SC_(-0.30556748124355038731954280799339438065140265556109e0), SC_(0.16034416664717506435272134602067848575693271965245e0), + SC_(0.45e2), SC_(0.18e2), SC_(-0.12556350231170654296875e1), SC_(-0.7369987964630126953125e0), SC_(-0.13973745905530426028905597788108699577861590107185e0), SC_(0.11760556394033085108159337642936562688995826763498e0), + SC_(0.45e2), SC_(0.2e2), SC_(-0.7813746929168701171875e0), SC_(0.27677395343780517578125e1), SC_(-0.39849218351007578506841407237493608495069770578433e-1), SC_(0.10066877387056751526933226791286739608366615374509e0), + SC_(0.45e2), SC_(0.22e2), SC_(-0.6202817440032958984375e1), SC_(0.395440673828125e1), SC_(0.2745769977511131751544732895346113708784179864521e-15), SC_(-0.39864741899734083739809198194152374756235766569503e-15), + SC_(0.45e2), SC_(0.23e2), SC_(-0.10876858234405517578125e1), SC_(-0.54758465290069580078125e0), SC_(-0.36813456165008714961923702579403331542009744543449e0), SC_(0.10338610805549694712336773945006870484644272308057e-1), + SC_(0.45e2), SC_(0.27e2), SC_(-0.22089176177978515625e1), SC_(-0.535065555572509765625e1), SC_(0.41141480172194981846690667274473042845038773638111e0), SC_(0.18757887746647837784832607273188838756300856275546e-1), + SC_(0.45e2), SC_(0.3e2), SC_(0.2447994232177734375e1), SC_(-0.1720281124114990234375e1), SC_(-0.63262997119417630609121090707517619542963845112263e-1), SC_(0.27283653856555771378568400091562423346179839955125e0), + SC_(0.45e2), SC_(0.32e2), SC_(-0.550032520294189453125e1), SC_(-0.197652399539947509765625e1), SC_(0.37914490460800950722564369649799928337346055286563e0), SC_(-0.16791460754886262593803128496604866549198193900205e0), + SC_(0.45e2), SC_(0.33e2), SC_(-0.20435826778411865234375e1), SC_(0.77811157703399658203125e0), SC_(0.77645390567356909989093657298781394838446159128476e-2), SC_(0.47065976737942973470312981088025304876207764952942e-2), + SC_(0.45e2), SC_(0.34e2), SC_(-0.435846805572509765625e1), SC_(-0.4595039844512939453125e1), SC_(-0.23173174951494724049335139235217704962545643146909e0), SC_(-0.26287348321367285049632415964845518701217296430745e0), + SC_(0.45e2), SC_(0.34e2), SC_(0.177516520023345947265625e1), SC_(0.137764739990234375e1), SC_(0.59761588654541651921538993283902141182837198683092e-1), SC_(-0.17435916863343648549723487454804073917582879348239e-1), + SC_(0.45e2), SC_(0.34e2), SC_(0.3879002094268798828125e1), SC_(0.27753543853759765625e1), SC_(-0.59667989412747151036847414005580139704727606438127e-1), SC_(-0.68480632370701762469979880941171986559613724866762e-2), + SC_(0.45e2), SC_(0.4e2), SC_(-0.2200931549072265625e1), SC_(0.5044522762298583984375e1), SC_(-0.37751879505890675204290416319324203430339866034527e-1), SC_(-0.33042938405518148395974728408099392183896536464139e-1), + SC_(0.45e2), SC_(0.4e2), SC_(-0.85712230205535888671875e0), SC_(0.27941138744354248046875e1), SC_(0.15126082014514309105699573435928708984110455017974e-2), SC_(-0.62346115144458295296539248693593197512548415960439e-2), + SC_(0.45e2), SC_(0.4e2), SC_(0.2686634540557861328125e1), SC_(-0.77928817272186279296875e0), SC_(-0.13149478049059040821589095143716566492527139660456e-10), SC_(-0.32792807833371932672386100174246835119468974214531e-11), + SC_(0.46e2), SC_(0.6e1), SC_(-0.432638645172119140625e1), SC_(-0.38857147693634033203125e1), SC_(-0.40016334930735413522008285324026775292932027877037e-1), SC_(0.15826311122866724066507068410824769374050643856726e0), + SC_(0.46e2), SC_(0.9e1), SC_(-0.480351352691650390625e1), SC_(-0.4442025661468505859375e1), SC_(-0.17804425547632560305083458901376629753558029308276e0), SC_(-0.20784592455207982712353861524396387343566007564129e0), + SC_(0.46e2), SC_(0.9e1), SC_(0.19425664842128753662109375e0), SC_(0.235065460205078125e1), SC_(0.38952883997601874903417652597285085753047471617813e0), SC_(-0.43044586433592812110060425497489734963473376324051e0), + SC_(0.46e2), SC_(0.11e2), SC_(0.1100307941436767578125e1), SC_(-0.879623353481292724609375e0), SC_(-0.23481723667983642303785004561261788720018270887495e0), SC_(0.60228627945927417244808749030695729373020587528789e-1), + SC_(0.46e2), SC_(0.12e2), SC_(0.3864775180816650390625e1), SC_(0.4004157543182373046875e1), SC_(0.24428263805252340563167127045447834294287218158908e0), SC_(0.32483329495887636777189975350710117091884719267287e0), + SC_(0.46e2), SC_(0.15e2), SC_(0.4853572845458984375e1), SC_(-0.1043331623077392578125e1), SC_(-0.23302525543734963918261234649372184763674980748449e-1), SC_(-0.13528050372225311322128559869543308439796322737887e-2), + SC_(0.46e2), SC_(0.24e2), SC_(-0.2910006999969482421875e1), SC_(0.117321979999542236328125e1), SC_(-0.16388352843277053045356822643126635895481895595764e-6), SC_(0.19272097241945999466564643840876007968713615827811e-7), + SC_(0.46e2), SC_(0.24e2), SC_(0.30920257568359375e1), SC_(0.41045475006103515625e1), SC_(-0.17141793730524635244619658001858906829425946738015e-22), SC_(-0.353932157629508870861527650447703335456641711151e-22), + SC_(0.46e2), SC_(0.27e2), SC_(-0.30337450504302978515625e1), SC_(-0.26822617053985595703125e1), SC_(0.22182505919358879453411450836404708327950722163022e-17), SC_(-0.36808156453037151724744300957184672127236705649958e-18), + SC_(0.46e2), SC_(0.28e2), SC_(-0.132531630992889404296875e1), SC_(0.546580791473388671875e1), SC_(-0.21329378814290365449612692361118580219648092391161e0), SC_(0.26626936572354782734997372022985821694671870975775e0), + SC_(0.46e2), SC_(0.28e2), SC_(-0.1029656827449798583984375e0), SC_(0.5967599391937255859375e1), SC_(-0.37880142937699879641874135818635870094007889448655e-19), SC_(-0.25273663696314938327515532061787690717970261018698e-19), + SC_(0.46e2), SC_(0.28e2), SC_(0.482559390366077423095703125e-1), SC_(-0.5518924236297607421875e1), SC_(-0.26315848561574888067768081465300364071961272401734e-28), SC_(0.17690086300756944612204623673726731224135866889251e-28), + SC_(0.46e2), SC_(0.28e2), SC_(0.573732852935791015625e1), SC_(0.672823250293731689453125e0), SC_(0.49351179412072949336683976023897526718169335572202e-1), SC_(-0.51844893265478561854065841006330149592977061759561e-3), + SC_(0.46e2), SC_(0.31e2), SC_(-0.6200977802276611328125e1), SC_(0.487247467041015625e1), SC_(-0.10395707481778370618550774477780737547027453922993e-25), SC_(-0.26574212928785201709352578354806008627623144348818e-26), + SC_(0.46e2), SC_(0.31e2), SC_(0.2640482425689697265625e1), SC_(0.4013978481292724609375e1), SC_(0.18993053959502150052468986600791304906563873585754e-3), SC_(-0.53620432352494314091893553128144469715606258596804e-3), + SC_(0.46e2), SC_(0.32e2), SC_(-0.54709758758544921875e1), SC_(0.3057758808135986328125e1), SC_(-0.53766561950689769965804154140988619898087315513611e0), SC_(-0.26565598059831519737826054076822541229399481610759e0), + SC_(0.46e2), SC_(0.32e2), SC_(-0.3191898345947265625e1), SC_(0.595924472808837890625e1), SC_(-0.44145496629530935095307947744856711840542556073239e-34), SC_(0.60613432894613823636685675140616588075400465754263e-34), + SC_(0.46e2), SC_(0.33e2), SC_(0.16479690074920654296875e1), SC_(0.443247222900390625e1), SC_(-0.40907775367135866917702573996177698848809877084062e-1), SC_(0.2155824296611070354716993857852359428103292430576e0), + SC_(0.46e2), SC_(0.38e2), SC_(0.89018189907073974609375e0), SC_(0.36493904590606689453125e1), SC_(0.13889767421801824676794829473709208617257672078469e0), SC_(0.66541168648123245559255467416199141677120092677324e-1), + SC_(0.47e2), SC_(0.3e1), SC_(-0.4007724761962890625e1), SC_(0.150865638256072998046875e1), SC_(-0.26767145533992176767497559163509049956344958420219e-1), SC_(-0.14191811357002032840541828034175393201300045603129e0), + SC_(0.47e2), SC_(0.4e1), SC_(0.2455342769622802734375e1), SC_(-0.99948275089263916015625e0), SC_(0.2174308680625884328795523329330743970260614863717e0), SC_(-0.25069567276564714314225605282895819077172700433603e0), + SC_(0.47e2), SC_(0.6e1), SC_(0.29439375400543212890625e1), SC_(0.5179188251495361328125e0), SC_(0.356948479346197013224774682397014388555120380011e0), SC_(-0.12169409707676878334735987022772795685926883013465e-1), + SC_(0.47e2), SC_(0.8e1), SC_(-0.575384318828582763671875e0), SC_(0.1000965595245361328125e1), SC_(0.52609764735493880386658178470886011732259841641417e-1), SC_(-0.33949223818788971610750151642163418359887123654498e0), + SC_(0.47e2), SC_(0.11e2), SC_(0.7798192501068115234375e0), SC_(-0.7041451930999755859375e0), SC_(-0.56653310111911531477233240689992111230625108233036e-2), SC_(0.52065832061739333971520273981969883254825594657534e-1), + SC_(0.47e2), SC_(0.12e2), SC_(0.4662929534912109375e1), SC_(-0.9241869449615478515625e0), SC_(0.23362894693871191987918828430964470190930593496574e-1), SC_(0.24604723434869110858598425017491701426924638144305e0), + SC_(0.47e2), SC_(0.12e2), SC_(0.559471797943115234375e1), SC_(0.2798630237579345703125e1), SC_(0.17033489008554011818661187796298714500018186073295e0), SC_(-0.250673941390055873246229086782342877123592075417e0), + SC_(0.47e2), SC_(0.16e2), SC_(0.2135078907012939453125e0), SC_(0.17677328586578369140625e1), SC_(-0.40270055436638473531410355130447754148130521624792e-2), SC_(-0.37822169118264880418889481540869124483351373905041e-4), + SC_(0.47e2), SC_(0.2e2), SC_(-0.195895731449127197265625e1), SC_(-0.579391777515411376953125e0), SC_(-0.15577860999005695928154075733762613389761234158943e0), SC_(-0.23152551164929220445481581901016524977854444194532e0), + SC_(0.47e2), SC_(0.21e2), SC_(0.4007311165332794189453125e0), SC_(0.47393741607666015625e1), SC_(-0.70272896583053034791238962988375990671208121812288e-1), SC_(0.11043869498561021486738079932321951805943232163813e0), + SC_(0.47e2), SC_(0.22e2), SC_(-0.24021832942962646484375e1), SC_(-0.17589018344879150390625e1), SC_(-0.22524795870491574224537613981959148215876594881665e0), SC_(0.34829144959822154881414680836189838260621088876932e0), + SC_(0.47e2), SC_(0.23e2), SC_(-0.6144268035888671875e1), SC_(-0.19239718914031982421875e1), SC_(-0.21428418065072641195187189772881405126431473733192e-10), SC_(0.59087250125232030799036036471778804738471950937741e-11), + SC_(0.47e2), SC_(0.24e2), SC_(-0.90589809417724609375e0), SC_(-0.69550454616546630859375e0), SC_(0.21621145388913791954852453820974859105758383446149e0), SC_(-0.325269227515941384150753099077386791354732112632e0), + SC_(0.47e2), SC_(0.28e2), SC_(-0.4909250736236572265625e1), SC_(-0.34989111423492431640625e1), SC_(0.2849042481648421063594526222235567477585168996532e0), SC_(-0.18671717508379687462424778809383789120058232562727e0), + SC_(0.47e2), SC_(0.31e2), SC_(0.731376349925994873046875e0), SC_(0.25832922458648681640625e1), SC_(0.14558311977380004242663313719763696307600681918104e-1), SC_(0.50973041759102896592485887663785873189653213696073e0), + SC_(0.47e2), SC_(0.31e2), SC_(0.4225698947906494140625e1), SC_(0.448341846466064453125e1), SC_(-0.10048142070645931863483498239705078295501286342258e0), SC_(-0.94720792669270806839081551900740318275224474965324e-1), + SC_(0.47e2), SC_(0.33e2), SC_(-0.23726341724395751953125e1), SC_(0.346272182464599609375e1), SC_(0.15886769869597684035077430317752989569837414157117e0), SC_(0.37753328887917336010699798430583391320850404839209e0), + SC_(0.47e2), SC_(0.36e2), SC_(0.345058917999267578125e1), SC_(0.24347667694091796875e1), SC_(-0.42764431337120844123235375883123149895117279758459e-12), SC_(0.13839773517362302854143994286869291829733243112091e-12), + SC_(0.47e2), SC_(0.37e2), SC_(0.2493927001953125e1), SC_(-0.4316608428955078125e1), SC_(0.66667168495166953309758312008417545833856092128204e-3), SC_(0.37003730562098288570362491190035224799197658320599e-3), + SC_(0.48e2), SC_(0.2e1), SC_(-0.2035869121551513671875e1), SC_(-0.6225636005401611328125e1), SC_(0.28606894490141744647813319476199313844842342813869e0), SC_(0.33072309108214894083517702632450561761016797624373e-1), + SC_(0.48e2), SC_(0.5e1), SC_(0.13228361606597900390625e1), SC_(0.14751684665679931640625e1), SC_(-0.84852408402337008554120048209601235452611537689521e-1), SC_(-0.16372931389555959806105883386148626432700901477429e0), + SC_(0.48e2), SC_(0.8e1), SC_(-0.61489925384521484375e1), SC_(-0.557976818084716796875e1), SC_(0.19079773202103238064509095581513541982710490971462e0), SC_(-0.14681385693827482231520169778980942919825638751309e0), + SC_(0.48e2), SC_(0.9e1), SC_(0.1855456829071044921875e1), SC_(-0.34094126224517822265625e1), SC_(-0.20465278494968209294999961968701797552184796734969e0), SC_(-0.18359488295947017699172291314906035468217255253267e0), + SC_(0.48e2), SC_(0.11e2), SC_(-0.510445415973663330078125e0), SC_(-0.2179370403289794921875e1), SC_(-0.17415801107756946800231879780099729296579201750249e0), SC_(-0.39946809289135814220017962080684064709296251216702e0), + SC_(0.48e2), SC_(0.12e2), SC_(0.5127735137939453125e1), SC_(0.147180497646331787109375e1), SC_(0.10235270561549462717073795224019921669009190057754e0), SC_(-0.25411603142079242733272237982972076450193559196436e0), + SC_(0.48e2), SC_(0.13e2), SC_(-0.28512251377105712890625e1), SC_(0.21358762681484222412109375e0), SC_(0.65082793160341590914926316444150324051891586307335e0), SC_(-0.24866103078135174972315060854694095694134464474465e0), + SC_(0.48e2), SC_(0.15e2), SC_(0.21509382724761962890625e1), SC_(0.505238056182861328125e1), SC_(0.33153682677233458889683871883764794291900552041288e0), SC_(0.13530604504841517586204066208483785803300406806222e0), + SC_(0.48e2), SC_(0.17e2), SC_(-0.410233306884765625e1), SC_(-0.5055477142333984375e1), SC_(0.120658610881024129421142111496549042350283006718e0), SC_(-0.24934508488272542971829338925578466799768762724609e0), + SC_(0.48e2), SC_(0.18e2), SC_(0.419954395294189453125e1), SC_(-0.31286038458347320556640625e-1), SC_(0.18229465107186350461724966401750299694404393980909e0), SC_(-0.11509073643647539446369783158526832981463008146529e0), + SC_(0.48e2), SC_(0.19e2), SC_(0.33512248992919921875e1), SC_(0.5698537349700927734375e1), SC_(-0.11430916047691646574027070138178816779368218597795e-4), SC_(-0.10096469757450613482659522651534357791031593710281e-3), + SC_(0.48e2), SC_(0.2e2), SC_(-0.4913626194000244140625e1), SC_(0.4570525646209716796875e1), SC_(0.27544694591170425084361640327912372332575356920479e0), SC_(0.86513078636045023383894712247218808351168016037179e-1), + SC_(0.48e2), SC_(0.22e2), SC_(-0.35437946319580078125e1), SC_(-0.14283583164215087890625e1), SC_(0.92521800679569304410458632278427028786030152854651e-1), SC_(-0.73615833685271087989994719034708442687869544183798e-3), + SC_(0.48e2), SC_(0.24e2), SC_(0.2529537379741668701171875e0), SC_(-0.13951661586761474609375e1), SC_(-0.14461558442027612635993431382924805648986580565293e-5), SC_(-0.26644654773805667856532999455349036511597661939098e-5), + SC_(0.48e2), SC_(0.25e2), SC_(-0.5302140712738037109375e1), SC_(0.534227657318115234375e1), SC_(0.14567724220048959327288429307006198049897616049705e-1), SC_(-0.37118356905088388538181275498694280409563892893147e0), + SC_(0.48e2), SC_(0.26e2), SC_(0.4788922786712646484375e1), SC_(0.114234256744384765625e1), SC_(-0.49889909138094330244956751684356082959364552066594e-1), SC_(-0.34351914682484557095802003482605269948574737582585e0), + SC_(0.48e2), SC_(0.29e2), SC_(-0.155845987796783447265625e1), SC_(0.265560741536319255828857421875e-2), SC_(-0.16358032708366624805995699759082827770270765931603e0), SC_(-0.12622713495579813089501286854682899269376306838204e-1), + SC_(0.48e2), SC_(0.31e2), SC_(-0.814608156681060791015625e0), SC_(-0.5973989009857177734375e1), SC_(-0.21849236027340450931517916914197181334381665924407e0), SC_(-0.35329064201860941281957627439495576583081752554927e-1), + SC_(0.48e2), SC_(0.34e2), SC_(0.5690162181854248046875e1), SC_(-0.4747711181640625e1), SC_(-0.14208000946756588475345650324158728024525891044283e-2), SC_(0.36648708355068107608507564157213823609107549413423e-2), + SC_(0.48e2), SC_(0.36e2), SC_(-0.606925201416015625e1), SC_(-0.6036619663238525390625e1), SC_(-0.33060032760649252071566767946067882261145163749527e-17), SC_(0.20197241068338690816933400483260997588417796049136e-17), + SC_(0.48e2), SC_(0.36e2), SC_(-0.557515811920166015625e1), SC_(0.549843120574951171875e1), SC_(-0.29793042772484214996215596790395794084288963000676e-1), SC_(-0.69091218291545995969013380580434842461096487036142e-3), + SC_(0.48e2), SC_(0.37e2), SC_(-0.4484233856201171875e1), SC_(-0.586126422882080078125e1), SC_(0.28783210566723256763209668589242474045102053584988e0), SC_(-0.27973722891666817142600363847230369142196912070032e-1), + SC_(0.49e2), SC_(0.4e1), SC_(0.7450397014617919921875e0), SC_(-0.486802196502685546875e1), SC_(0.43523446367954232471457024383074543728337571811041e-1), SC_(-0.31238445205075929681258187766528850038918026320874e-1), + SC_(0.49e2), SC_(0.5e1), SC_(-0.705654084682464599609375e0), SC_(0.36159880161285400390625e1), SC_(0.33812266273696200694321547558772118159278050274115e-1), SC_(-0.32761490529250158683739840580938438700363222937706e-1), + SC_(0.49e2), SC_(0.6e1), SC_(0.4099590480327606201171875e0), SC_(-0.148899996280670166015625e1), SC_(0.33872549952379279074817297974186583810635403131808e-1), SC_(0.18101089014763158990806574103071386037200021990488e-1), + SC_(0.49e2), SC_(0.6e1), SC_(0.288681316375732421875e1), SC_(0.555331707000732421875e1), SC_(-0.17299631476757984574148560709032937173460259126009e0), SC_(0.49987182677495761333169759620280021625021164232635e0), + SC_(0.49e2), SC_(0.8e1), SC_(-0.28113791942596435546875e1), SC_(0.4268764019012451171875e1), SC_(0.11234284818582161154493446715155148494092582868555e0), SC_(-0.4848176775276798667653033304055062110686751478506e-1), + SC_(0.49e2), SC_(0.8e1), SC_(-0.175365102291107177734375e1), SC_(0.3699061870574951171875e0), SC_(0.150510223757467945212888241106383078890968767236e0), SC_(-0.27752777621993241253038961455135547546359775538701e-1), + SC_(0.49e2), SC_(0.1e2), SC_(-0.623242966830730438232421875e-1), SC_(0.99178183078765869140625e0), SC_(-0.39129153600073467169496931061202903620397035718226e-4), SC_(-0.21024087848986552498673205313374207046750995885514e-4), + SC_(0.49e2), SC_(0.11e2), SC_(0.4610438823699951171875e1), SC_(0.516170978546142578125e1), SC_(-0.64931321841066713098308595750847102912382779925862e-1), SC_(-0.15212818549984179656962126137889372220056261241257e-1), + SC_(0.49e2), SC_(0.12e2), SC_(-0.492767429351806640625e1), SC_(0.5237930774688720703125e1), SC_(-0.25815646423352702571250699074506009315207777917256e0), SC_(-0.60203250835447592212607712693653576640800332594405e-2), + SC_(0.49e2), SC_(0.12e2), SC_(-0.285912036895751953125e1), SC_(0.203067779541015625e1), SC_(-0.58309335353629437699137207747030784181611219363777e0), SC_(0.55933823022969032857356665544019317581369057604275e0), + SC_(0.49e2), SC_(0.21e2), SC_(0.213364541530609130859375e0), SC_(0.3487752437591552734375e1), SC_(0.68979677728313700400977850242007578301598557836144e-5), SC_(0.10423031489346059064213401632074682208378658096143e-4), + SC_(0.49e2), SC_(0.24e2), SC_(-0.5363933563232421875e1), SC_(-0.13800899982452392578125e1), SC_(-0.39624366668844441499649851882221871259293339848909e-1), SC_(-0.29077551093957529339300484162110207541478366743715e0), + SC_(0.49e2), SC_(0.24e2), SC_(0.113704526424407958984375e1), SC_(-0.524048984050750732421875e0), SC_(-0.95716020864868532424772271176706645369949424860348e-1), SC_(0.10342521283811512447413822494381438186657088095508e-2), + SC_(0.49e2), SC_(0.26e2), SC_(0.195927083492279052734375e1), SC_(0.2748439788818359375e1), SC_(0.11971762382480258608379673285431990043583083168738e0), SC_(-0.12257642890929780276867696344794516000179864725662e0), + SC_(0.49e2), SC_(0.27e2), SC_(0.49123775959014892578125e0), SC_(0.2262770175933837890625e1), SC_(0.10204568382238142188564702604070162264838835105016e-1), SC_(0.60809845254720905762068213640063158711493179195797e-1), + SC_(0.49e2), SC_(0.28e2), SC_(-0.26242389678955078125e1), SC_(0.551108074188232421875e1), SC_(0.62995535686340908516656601005584507927420828344839e-1), SC_(0.24594729609877561046325340633244478848156201312828e-1), + SC_(0.49e2), SC_(0.29e2), SC_(-0.30029771327972412109375e1), SC_(-0.2872400760650634765625e1), SC_(-0.55339515369306716058956107221780747493058274670244e-17), SC_(-0.11662133768710831442193525927180620131415498665886e-15), + SC_(0.49e2), SC_(0.3e2), SC_(0.611942386627197265625e1), SC_(-0.63407027721405029296875e0), SC_(0.1394293153272931999882487586325865494180618327615e-14), SC_(-0.24300519585643234499387785103683410462334687962488e-15), + SC_(0.49e2), SC_(0.35e2), SC_(-0.166894090175628662109375e1), SC_(0.4225218296051025390625e1), SC_(-0.35508021992434406559798366674327649256336649541254e0), SC_(-0.82310724679645695220583934477252032989621192496738e-1), + SC_(0.49e2), SC_(0.36e2), SC_(-0.32497041225433349609375e1), SC_(0.107579600811004638671875e1), SC_(-0.17013596752796213880005913256594710378533147240406e-27), SC_(-0.28302568795764666512713804293802636201022080165826e-27), + SC_(0.49e2), SC_(0.37e2), SC_(-0.5017117023468017578125e1), SC_(0.383155155181884765625e1), SC_(-0.35232624098397971030888657233932783396857095781041e0), SC_(-0.14719428675619986819270542639579914303323853912089e0), + SC_(0.49e2), SC_(0.37e2), SC_(-0.23628532886505126953125e1), SC_(-0.123920929431915283203125e1), SC_(-0.40342907812326051474768377766202705403179945762591e-1), SC_(-0.13151134923462644400467105161114547636592907143886e0), + SC_(0.49e2), SC_(0.38e2), SC_(0.33035366535186767578125e1), SC_(0.2936229705810546875e1), SC_(-0.14617119042429598121920579635742118107020065282388e-24), SC_(0.29099331615315387488356539500057397404411535737234e-23), + SC_(0.49e2), SC_(0.4e2), SC_(0.4189170360565185546875e1), SC_(-0.5219272136688232421875e1), SC_(-0.71881448396381481201576224141351106542999167239121e-1), SC_(0.49216549050921898631651418491099543778321238775524e0) + }; +#undef SC_ + diff --git a/test/std_real_concept_check.cpp b/test/std_real_concept_check.cpp new file mode 100644 index 000000000..1554734ee --- /dev/null +++ b/test/std_real_concept_check.cpp @@ -0,0 +1,199 @@ +// Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_ASSERT_UNDEFINED_POLICY false + +#include +#include + +#include "compile_test/instantiate.hpp" + +// +// The purpose of this test is to verify that our code compiles +// cleanly with a type whose std lib functions are in namespace +// std and can *not* be found by ADL. This verifies that we're +// not finding std lib functions that are in the global namespace +// for example calling ::pow(double) rather than std::pow(long double). +// This is a silent error that does the wrong thing at runtime, and +// of course we can't call std::pow() directly because we want +// the functions to be found by ADL when that's appropriate. +// +// Furthermore our code does different things internally depending +// on numeric_limits<>::digits, so there are some macros that can +// be defined that cause our concept-archetype to emulate various +// floating point types: +// +// EMULATE32: 32-bit float +// EMULATE64: 64-bit double +// EMULATE80: 80-bit long double +// EMULATE128: 128-bit long double +// +// In order to ensure total code coverage this file must be +// compiled with each of the above macros in turn, and then +// without any of the above as well! +// + +#define NULL_MACRO /**/ +#ifdef EMULATE32 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 24; + static const int digits10 = 6; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -125; + static const int min_exponent10 = -37; + static const int max_exponent = 128; + static const int max_exponent10 = 38; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif +#ifdef EMULATE64 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 53; + static const int digits10 = 15; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -1021; + static const int min_exponent10 = -307; + static const int max_exponent = 1024; + static const int max_exponent10 = 308; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif +#ifdef EMULATE80 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 64; + static const int digits10 = 18; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -16381; + static const int min_exponent10 = -4931; + static const int max_exponent = 16384; + static const int max_exponent10 = 4932; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif +#ifdef EMULATE128 +namespace std{ +template<> +struct numeric_limits +{ + static const bool is_specialized = true; + static boost::math::concepts::std_real_concept min NULL_MACRO() throw(); + static boost::math::concepts::std_real_concept max NULL_MACRO() throw(); + static const int digits = 113; + static const int digits10 = 33; + static const bool is_signed = true; + static const bool is_integer = false; + static const bool is_exact = false; + static const int radix = 2; + static boost::math::concepts::std_real_concept epsilon() throw(); + static boost::math::concepts::std_real_concept round_error() throw(); + static const int min_exponent = -16381; + static const int min_exponent10 = -4931; + static const int max_exponent = 16384; + static const int max_exponent10 = 4932; + static const bool has_infinity = true; + static const bool has_quiet_NaN = true; + static const bool has_signaling_NaN = true; + static const float_denorm_style has_denorm = denorm_absent; + static const bool has_denorm_loss = false; + static boost::math::concepts::std_real_concept infinity() throw(); + static boost::math::concepts::std_real_concept quiet_NaN() throw(); + static boost::math::concepts::std_real_concept signaling_NaN() throw(); + static boost::math::concepts::std_real_concept denorm_min() throw(); + static const bool is_iec559 = true; + static const bool is_bounded = false; + static const bool is_modulo = false; + static const bool traps = false; + static const bool tinyness_before = false; + static const float_round_style round_style = round_toward_zero; +}; +} +#endif + + + +int main() +{ + instantiate(boost::math::concepts::std_real_concept(0)); +} + + diff --git a/test/test_bernoulli.cpp b/test/test_bernoulli.cpp new file mode 100644 index 000000000..e86389b27 --- /dev/null +++ b/test/test_bernoulli.cpp @@ -0,0 +1,268 @@ +// test_bernoulli.cpp + +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Basic sanity test for Bernoulli Cumulative Distribution Function. + +// Default domain error policy is +// #define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error + +#include // for bernoulli_distribution +using boost::math::bernoulli_distribution; + +#include // for real_concept +using ::boost::math::concepts::real_concept; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE_FRACTION, BOOST_CHECK_EQUAL... + +#include +using std::cout; +using std::endl; +using std::fixed; +using std::right; +using std::left; +using std::showpoint; +using std::showpos; +using std::setw; +using std::setprecision; + +#include +using std::numeric_limits; + +template // Any floating-point type RealType. +void test_spots(RealType) +{ // Parameter only provides the type, float, double... value ignored. + + // Basic sanity checks, test data may be to double precision only + // so set tolerance to 100 eps expressed as a fraction, + // or 100 eps of type double expressed as a fraction, + // whichever is the larger. + + RealType tolerance = (std::max) + (boost::math::tools::epsilon(), + static_cast(std::numeric_limits::epsilon())); + tolerance *= 100; + + cout << "Tolerance for type " << typeid(RealType).name() << " is " + << setprecision(3) << tolerance << " (or " << tolerance * 100 << "%)." << endl; + + // Sources of spot test values - calculator, + // or Steve Moshier's command interpreter V1.3 100 decimal digit calculator, + // Wolfram function evaluator. + + using boost::math::bernoulli_distribution; // of type RealType. + using ::boost::math::cdf; + using ::boost::math::pdf; + + BOOST_CHECK_EQUAL(bernoulli_distribution(static_cast(0.5)).success_fraction(), static_cast(0.5)); + BOOST_CHECK_EQUAL(bernoulli_distribution(static_cast(0.1L)).success_fraction(), static_cast(0.1L)); + BOOST_CHECK_EQUAL(bernoulli_distribution(static_cast(0.9L)).success_fraction(), static_cast(0.9L)); + + BOOST_CHECK_THROW( // Constructor success_fraction outside 0 to 1. + bernoulli_distribution(static_cast(2)), std::domain_error); + BOOST_CHECK_THROW( + bernoulli_distribution(static_cast(-2)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( // pdf k neither 0 nor 1. + bernoulli_distribution(static_cast(0.25L)), static_cast(-1)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( // pdf k neither 0 nor 1. + bernoulli_distribution(static_cast(0.25L)), static_cast(2)), std::domain_error); + + BOOST_CHECK_EQUAL( + pdf( // OK k (or n) + bernoulli_distribution(static_cast(0.5L)), static_cast(0)), + static_cast(0.5)); // Expect 1 - p. + + BOOST_CHECK_CLOSE_FRACTION( + pdf( // OK k (or n) + bernoulli_distribution(static_cast(0.6L)), static_cast(0)), + static_cast(0.4L), tolerance); // Expect 1 - p. + + BOOST_CHECK_CLOSE_FRACTION( + pdf( // OK k (or n) + bernoulli_distribution(static_cast(0.6L)), static_cast(0)), + static_cast(0.4L), tolerance); // Expect 1- p. + + BOOST_CHECK_CLOSE_FRACTION( + pdf( // OK k (or n) + bernoulli_distribution(static_cast(0.4L)), static_cast(0)), + static_cast(0.6L), tolerance); // Expect 1- p. + + BOOST_CHECK_EQUAL( + mean(bernoulli_distribution(static_cast(0.5L))), static_cast(0.5L)); + + BOOST_CHECK_EQUAL( + mean(bernoulli_distribution(static_cast(0.1L))), + static_cast(0.1L)); + + BOOST_CHECK_CLOSE_FRACTION( + variance(bernoulli_distribution(static_cast(0.1L))), + static_cast(0.09L), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + skewness(bernoulli_distribution(static_cast(0.1L))), + static_cast(2.666666666666666666666666666666666666666666L), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + kurtosis(bernoulli_distribution(static_cast(0.1L))), + static_cast(8.11111111111111111111111111111111111111111111L), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + kurtosis_excess(bernoulli_distribution(static_cast(0.1L))), + static_cast(5.11111111111111111111111111111111111111111111L), + tolerance); + + BOOST_CHECK_THROW( + quantile( + bernoulli_distribution(static_cast(2)), // prob >1 + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + bernoulli_distribution(static_cast(-1)), // prob < 0 + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + bernoulli_distribution(static_cast(0.5L)), // k >1 + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + bernoulli_distribution(static_cast(0.5L)), // k < 0 + static_cast(2)), std::domain_error + ); + + BOOST_CHECK_CLOSE_FRACTION( + cdf( + bernoulli_distribution(static_cast(0.6L)), + static_cast(0)), + static_cast(0.4L), // 1 - p + tolerance + ); + + BOOST_CHECK_CLOSE_FRACTION( + cdf( + bernoulli_distribution(static_cast(0.6L)), + static_cast(1)), + static_cast(1), // p + tolerance + ); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(complement( + bernoulli_distribution(static_cast(0.6L)), + static_cast(1))), + static_cast(0), + tolerance + ); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(complement( + bernoulli_distribution(static_cast(0.6L)), + static_cast(0))), + static_cast(0.6L), + tolerance + ); + + BOOST_CHECK_EQUAL( + quantile( + bernoulli_distribution(static_cast(0.6L)), + static_cast(0.1L)), // < p + static_cast(0) + ); + + BOOST_CHECK_EQUAL( + quantile( + bernoulli_distribution(static_cast(0.6L)), + static_cast(0.9L)), // > p + static_cast(1) + ); + + BOOST_CHECK_EQUAL( + quantile(complement( + bernoulli_distribution(static_cast(0.6L)), + static_cast(0.1L))), // < p + static_cast(1) + ); + + BOOST_CHECK_EQUAL( + quantile(complement( + bernoulli_distribution(static_cast(0.6L)), + static_cast(0.9L))), // > p + static_cast(0) + ); +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + // Check that can generate bernoulli distribution using both convenience methods: + bernoulli_distribution bn1(0.5); // Using default RealType double. + boost::math::bernoulli bn2(0.5); // Using typedef. + + BOOST_CHECK_EQUAL(bn1.success_fraction(), 0.5); + BOOST_CHECK_EQUAL(bn2.success_fraction(), 0.5); + + BOOST_CHECK_THROW(bernoulli_distribution(-1), std::domain_error); // p outside 0 to 1. + BOOST_CHECK_THROW(bernoulli_distribution(+2), std::domain_error); // p outside 0 to 1. + BOOST_CHECK_THROW(bernoulli_distribution bn3(std::numeric_limits::quiet_NaN() ), std::domain_error); // p outside 0 to 1. + BOOST_CHECK_THROW(bernoulli_distribution bn4(std::numeric_limits::infinity() ), std::domain_error); // p outside 0 to 1. + + BOOST_CHECK_EQUAL(kurtosis(bn2) -3, kurtosis_excess(bn2)); + BOOST_CHECK_EQUAL(kurtosis_excess(bn2), -2); + + //using namespace boost::math; or + using boost::math::bernoulli; + + double tol5eps = std::numeric_limits::epsilon() * 5; // 5 eps as a fraction. + // Default bernoulli is type double, so these test values should also be type double. + BOOST_CHECK_CLOSE_FRACTION(kurtosis_excess(bernoulli(0.1)), 5.11111111111111111111111111111111111111111111111111, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(kurtosis_excess(bernoulli(0.9)), 5.11111111111111111111111111111111111111111111111111, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(kurtosis(bernoulli(0.6)), 1./0.4 + 1./0.6 -3., tol5eps); + BOOST_CHECK_EQUAL(kurtosis(bernoulli(0)), +std::numeric_limits::infinity()); + BOOST_CHECK_EQUAL(kurtosis(bernoulli(1)), +std::numeric_limits::infinity()); + // + + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. + test_spots(0.0); // Test double. + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Running 1 test case... +Tolerance for type float is 1.19e-005 (or 0.00119%). +Tolerance for type double is 2.22e-014 (or 2.22e-012%). +Tolerance for type long double is 2.22e-014 (or 2.22e-012%). +Tolerance for type class boost::math::concepts::real_concept is 2.22e-014 (or 2.22e-012%). +*** No errors detected + +No warnings MSVC level 4 31 Jul 2007 + +*/ + + diff --git a/test/test_bessel_hooks.hpp b/test/test_bessel_hooks.hpp new file mode 100644 index 000000000..c089e4acf --- /dev/null +++ b/test/test_bessel_hooks.hpp @@ -0,0 +1,97 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_TEST_ERF_OTHER_HOOKS_HPP +#define BOOST_MATH_TEST_ERF_OTHER_HOOKS_HPP + +#ifdef TEST_CEPHES +namespace other{ +extern "C" { + double jv(double, double); + float jvf(float, float); + long double jvl(long double, long double); + double yv(double, double); + float yvf(float, float); + long double yvl(long double, long double); +} +inline float cyl_bessel_j(float a, float x) +{ return jvf(a, x); } +inline double cyl_bessel_j(double a, double x) +{ return jv(a, x); } +inline long double cyl_bessel_j(long double a, long double x) +{ +#ifdef BOOST_MSVC + return jv((double)a, x); +#else + return jvl(a, x); +#endif +} +inline float cyl_neumann(float a, float x) +{ return yvf(a, x); } +inline double cyl_neumann(double a, double x) +{ return yv(a, x); } +inline long double cyl_neumann(long double a, long double x) +{ +#ifdef BOOST_MSVC + return yv((double)a, x); +#else + return yvl(a, x); +#endif +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_GSL +#include +#include +#include + +namespace other{ +inline float cyl_bessel_j(float a, float x) +{ return (float)gsl_sf_bessel_Jnu(a, x); } +inline double cyl_bessel_j(double a, double x) +{ return gsl_sf_bessel_Jnu(a, x); } +inline long double cyl_bessel_j(long double a, long double x) +{ return gsl_sf_bessel_Jnu(a, x); } + +inline float cyl_bessel_i(float a, float x) +{ return (float)gsl_sf_bessel_Inu(a, x); } +inline double cyl_bessel_i(double a, double x) +{ return gsl_sf_bessel_Inu(a, x); } +inline long double cyl_bessel_i(long double a, long double x) +{ return gsl_sf_bessel_Inu(a, x); } + +inline float cyl_bessel_k(float a, float x) +{ return (float)gsl_sf_bessel_Knu(a, x); } +inline double cyl_bessel_k(double a, double x) +{ return gsl_sf_bessel_Knu(a, x); } +inline long double cyl_bessel_k(long double a, long double x) +{ return gsl_sf_bessel_Knu(a, x); } + +inline float cyl_neumann(float a, float x) +{ return (float)gsl_sf_bessel_Ynu(a, x); } +inline double cyl_neumann(double a, double x) +{ return gsl_sf_bessel_Ynu(a, x); } +inline long double cyl_neumann(long double a, long double x) +{ return gsl_sf_bessel_Ynu(a, x); } +} +#define TEST_OTHER +#endif + +#ifdef TEST_OTHER +namespace other{ + boost::math::concepts::real_concept cyl_bessel_j(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept cyl_bessel_i(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept cyl_bessel_k(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept cyl_neumann(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } +} +#endif + + +#endif + + + diff --git a/test/test_bessel_i.cpp b/test/test_bessel_i.cpp new file mode 100644 index 000000000..0a49128e0 --- /dev/null +++ b/test/test_bessel_i.cpp @@ -0,0 +1,285 @@ +// (C) Copyright John Maddock 2007. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_bessel_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the bessel I function. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + + // + // Mac OS has higher error rates, why? + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 100, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 100, 50); // test function + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 15, 10); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 15, 10); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +T cyl_bessel_i_int_wrapper(T v, T x) +{ + return static_cast( + boost::math::cyl_bessel_i( + boost::math::tools::real_cast(v), x)); +} + +template +void do_test_cyl_bessel_i(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::cyl_bessel_i; +#else + pg funcp = boost::math::cyl_bessel_i; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_bessel_i against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_bessel_i", test_name); + std::cout << std::endl; + +#ifdef TEST_OTHER + if(boost::is_floating_point::value) + { + funcp = other::cyl_bessel_i; + + // + // test other::cyl_bessel_i against data: + // + result = boost::math::tools::test( + data, + boost::lambda::bind(funcp, + boost::lambda::ret(boost::lambda::_1[0]), + boost::lambda::ret(boost::lambda::_1[1])), + boost::lambda::ret(boost::lambda::_1[2])); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::cyl_bessel_i"); + std::cout << std::endl; + } +#endif +} + +template +void do_test_cyl_bessel_i_int(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = cyl_bessel_i_int_wrapper; +#else + pg funcp = cyl_bessel_i_int_wrapper; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_bessel_i against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_bessel_i", test_name); + std::cout << std::endl; +} + +template +void test_bessel(T, const char* name) +{ + // function values calculated on http://functions.wolfram.com/ + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 10> i0_data = {{ + SC_(0), SC_(0), SC_(1), + SC_(0), SC_(1), SC_(1.26606587775200833559824462521471753760767031135496220680814), + SC_(0), SC_(-2), SC_(2.27958530233606726743720444081153335328584110278545905407084), + SC_(0), SC_(4), SC_(11.3019219521363304963562701832171024974126165944353377060065), + SC_(0), SC_(-7), SC_(168.593908510289698857326627187500840376522679234531714193194), + SC_(0), SC_(1) / 1024, SC_(1.00000023841859331241759166109699567801556273303717896447683), + SC_(0), SC_(1) / (1024*1024), SC_(1.00000000000022737367544324498417583090700894607432256476338), + SC_(0), SC_(-1), SC_(1.26606587775200833559824462521471753760767031135496220680814), + SC_(0), SC_(100), SC_(1.07375170713107382351972085760349466128840319332527279540154e42), + SC_(0), SC_(200), SC_(2.03968717340972461954167312677945962233267573614834337894328e85), + }}; + static const boost::array, 10> i1_data = { + SC_(1), SC_(0), SC_(0), + SC_(1), SC_(1), SC_(0.565159103992485027207696027609863307328899621621092009480294), + SC_(1), SC_(-2), SC_(-1.59063685463732906338225442499966624795447815949553664713229), + SC_(1), SC_(4), SC_(9.75946515370444990947519256731268090005597033325296730692753), + SC_(1), SC_(-8), SC_(-399.873136782560098219083086145822754889628443904067647306574), + SC_(1), SC_(1)/1024, SC_(0.000488281308207663226432087816784315537514225208473395063575150), + SC_(1), SC_(1)/(1024*1024), SC_(4.76837158203179210108624277276025646653133998635956784292029E-7), + SC_(1), SC_(-10), SC_(-2670.98830370125465434103196677215254914574515378753771310849), + SC_(1), SC_(100), SC_(1.06836939033816248120614576322429526544612284405623226965918e42), + SC_(1), SC_(200), SC_(2.03458154933206270342742797713906950389661161681122964159220e85), + }; + static const boost::array, 10> in_data = { + SC_(-2), SC_(0), SC_(0), + SC_(2), SC_(1)/(1024*1024), SC_(1.13686837721624646204093977095674566928522671779753217215467e-13), + SC_(5), SC_(10), SC_(777.188286403259959907293484802339632852674154572666041953297), + SC_(-5), SC_(100), SC_(9.47009387303558124618275555002161742321578485033007130107740e41), + SC_(-5), SC_(-1), SC_(-0.000271463155956971875181073905153777342383564426758143634974124), + SC_(10), SC_(20), SC_(3.54020020901952109905289138244985607057267103782948493874391e6), + SC_(10), SC_(-5), SC_(0.00458004441917605126118647027872016953192323139337073320016447), + SC_(1e+02), SC_(9), SC_(2.74306601746058997093587654668959071522869282506446891736820e-93), + SC_(1e+02), SC_(80), SC_(4.65194832850610205318128191404145885093970505338730540776711e8), + SC_(-100), SC_(-200), SC_(4.35275044972702191438729017441198257508190719030765213981307e74), + }; + static const boost::array, 10> iv_data = { + SC_(2.25), SC_(1)/(1024*1024), SC_(2.34379212133481347189068464680335815256364262507955635911656e-15), + SC_(5.5), SC_(3.125), SC_(0.0583514045989371500460946536220735787163510569634133670181210), + SC_(-5) + T(1)/1024, SC_(2.125), SC_(0.0267920938009571023702933210070984416052633027166975342895062), + SC_(-5.5), SC_(10), SC_(597.577606961369169607937419869926705730305175364662688426534), + SC_(-5.5), SC_(100), SC_(9.22362906144706871737354069133813819358704200689067071415379e41), + SC_(-10486074)/(1024*1024), SC_(1)/1024, SC_(1.41474005665181350367684623930576333542989766867888186478185e35), + SC_(-10486074)/(1024*1024), SC_(50), SC_(1.07153277202900671531087024688681954238311679648319534644743e20), + SC_(144794)/1024, SC_(100), SC_(2066.27694757392660413922181531984160871678224178890247540320), + SC_(144794)/1024, SC_(200), SC_(2.23699739472246928794922868978337381373643889659337595319774e64), + SC_(-144794)/1024, SC_(100), SC_(2066.27694672763190927440969155740243346136463461655104698748), + }; + #undef SC_ + + do_test_cyl_bessel_i(i0_data, name, "Bessel I0: Mathworld Data"); + do_test_cyl_bessel_i(i1_data, name, "Bessel I1: Mathworld Data"); + do_test_cyl_bessel_i(in_data, name, "Bessel In: Mathworld Data"); + + do_test_cyl_bessel_i_int(i0_data, name, "Bessel I0: Mathworld Data (Integer Version)"); + do_test_cyl_bessel_i_int(i1_data, name, "Bessel I1: Mathworld Data (Integer Version)"); + do_test_cyl_bessel_i_int(in_data, name, "Bessel In: Mathworld Data (Integer Version)"); + + do_test_cyl_bessel_i(iv_data, name, "Bessel Iv: Mathworld Data"); + +#include "bessel_i_int_data.ipp" + do_test_cyl_bessel_i(bessel_i_int_data, name, "Bessel In: Random Data"); +#include "bessel_i_data.ipp" + do_test_cyl_bessel_i(bessel_i_data, name, "Bessel Iv: Random Data"); +} + +int test_main(int, char* []) +{ +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_bessel(0.1F, "float"); +#endif + test_bessel(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_bessel(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_bessel(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + + diff --git a/test/test_bessel_j.cpp b/test/test_bessel_j.cpp new file mode 100644 index 000000000..3955e18cc --- /dev/null +++ b/test/test_bessel_j.cpp @@ -0,0 +1,544 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_bessel_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the bessel functions. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double|real_concept"; + } + else + { + largest_type = "long double|real_concept"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // HP-UX specific rates: + // + // Error rate for double precision are limited by the accuracy of + // the approximations use, which bracket rather than preserve the root. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 80000000000LL, 80000000000LL); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 3000000, 2000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + "double", // test type(s) + ".*Tricky.*", // test data group + ".*", 100000, 100000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + ".*J.*Tricky.*", // test data group + ".*", 3000, 500); // test function + // + // HP Tru64: + // + add_expected_result( + ".*Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*Tricky.*", // test data group + ".*", 100000, 100000); // test function + add_expected_result( + ".*Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Tricky large.*", // test data group + ".*", 3000, 1000); // test function + // + // Solaris specific rates: + // + // Error rate for double precision are limited by the accuracy of + // the approximations use, which bracket rather than preserve the root. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Sun Solaris", // platform + largest_type, // test type(s) + "Bessel J: Random Data.*Tricky.*", // test data group + ".*", 3000, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Sun Solaris", // platform + "double", // test type(s) + ".*Tricky.*", // test data group + ".*", 200000, 100000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Sun Solaris", // platform + largest_type, // test type(s) + ".*J.*tricky.*", // test data group + ".*", 400000000, 200000000); // test function + // + // Mac OS X: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 400000000, 400000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 3000000, 2000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "Bessel JN.*", // test data group + ".*", 40000, 20000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "Bessel J:.*", // test data group + ".*", 50000, 20000); // test function + + + + // + // Linux specific results: + // + // sin and cos appear to have only double precision for large + // arguments on some linux distros: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + ".*J:.*", // test data group + ".*", 40000, 30000); // test function + + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if((std::numeric_limits::digits != std::numeric_limits::digits) + && (std::numeric_limits::digits < 90)) + { + // some errors spill over into type double as well: + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 400000, 400000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 5000, 5000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*(JN|j).*|.*Tricky.*", // test data group + ".*", 50, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*", // test data group + ".*", 30, 30); // test function + // + // and we have a few cases with higher limits as well: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 400000000, 400000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 5000000, 5000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*(JN|j).*|.*Tricky.*", // test data group + ".*", 33000, 20000); // test function + } +#endif + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*J0.*Tricky.*", // test data group + ".*", 400000000, 400000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*J1.*Tricky.*", // test data group + ".*", 5000000, 5000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*JN.*Integer.*", // test data group + ".*", 30000, 10000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*(JN|j).*|.*Tricky.*", // test data group + ".*", 1500, 700); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 40, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_cyl_bessel_j(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::cyl_bessel_j; +#else + pg funcp = boost::math::cyl_bessel_j; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_bessel_j against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_bessel_j", test_name); + std::cout << std::endl; + +#ifdef TEST_OTHER + if(boost::is_floating_point::value) + { + funcp = other::cyl_bessel_j; + + // + // test other::cyl_bessel_j against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "other::cyl_bessel_j", test_name); + std::cout << std::endl; + } +#endif +} + +template +T cyl_bessel_j_int_wrapper(T v, T x) +{ + return static_cast(boost::math::cyl_bessel_j(boost::math::tools::real_cast(v), x)); +} + + +template +void do_test_cyl_bessel_j_int(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = cyl_bessel_j_int_wrapper; +#else + pg funcp = cyl_bessel_j_int_wrapper; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_bessel_j against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_bessel_j", test_name); + std::cout << std::endl; +} + +template +void do_test_sph_bessel_j(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(unsigned, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::sph_bessel; +#else + pg funcp = boost::math::sph_bessel; +#endif + + typedef int (*cast_t)(value_type); + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test sph_bessel against data: + // + result = boost::math::tools::test( + data, + bind_func_int1(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::sph_bessel", test_name); + std::cout << std::endl; +} + +template +void test_bessel(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // + // function values calculated on http://functions.wolfram.com/ + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 8> j0_data = {{ + { SC_(0), SC_(0), SC_(1) }, + { SC_(0), SC_(1), SC_(0.7651976865579665514497175261026632209093) }, + { SC_(0), SC_(-2), SC_(0.2238907791412356680518274546499486258252) }, + { SC_(0), SC_(4), SC_(-0.3971498098638473722865907684516980419756) }, + { SC_(0), SC_(-8), SC_(0.1716508071375539060908694078519720010684) }, + { SC_(0), SC_(1e-05), SC_(0.999999999975000000000156249999999565972) }, + { SC_(0), SC_(1e-10), SC_(0.999999999999999999997500000000000000000) }, + { SC_(0), SC_(-1e+01), SC_(-0.2459357644513483351977608624853287538296) }, + }}; + static const boost::array, 6> j0_tricky = {{ + // Big numbers make the accuracy of std::sin the limiting factor: + { SC_(0), SC_(1e+03), SC_(0.02478668615242017456133073111569370878617) }, + { SC_(0), SC_(1e+05), SC_(-0.001719201116235972192570601477073201747532) }, + // test at the roots: + { SC_(0), SC_(2521642)/(1024 * 1024), SC_(1.80208819970046790002973759410972422387259992955354630042138e-7) }, + { SC_(0), SC_(5788221)/(1024 * 1024), SC_(-1.37774249380686777043369399806210229535671843632174587432454e-7) }, + { SC_(0), SC_(9074091)/(1024 * 1024), SC_(1.03553057441100845081018471279571355857520645127532785991335e-7) }, + { SC_(0), SC_(12364320)/(1024 * 1024), SC_(-3.53017140778223781420794006033810387155048392363051866610931e-9) } + }}; + + static const boost::array, 8> j1_data = { + SC_(1), SC_(0), SC_(0), + SC_(1), SC_(1), SC_(0.4400505857449335159596822037189149131274), + SC_(1), SC_(-2), SC_(-0.5767248077568733872024482422691370869203), + SC_(1), SC_(4), SC_(-6.604332802354913614318542080327502872742e-02), + SC_(1), SC_(-8), SC_(-0.2346363468539146243812766515904546115488), + SC_(1), SC_(1e-05), SC_(4.999999999937500000000260416666666124132e-06), + SC_(1), SC_(1e-10), SC_(4.999999999999999999993750000000000000000e-11), + SC_(1), SC_(-1e+01), SC_(-4.347274616886143666974876802585928830627e-02), + }; + static const boost::array, 5> j1_tricky = { + // Big numbers make the accuracy of std::sin the limiting factor: + SC_(1), SC_(1e+03), SC_(4.728311907089523917576071901216916285418e-03), + SC_(1), SC_(1e+05), SC_(1.846757562882567716362123967114215743694e-03), + // test zeros: + SC_(1), SC_(4017834)/(1024*1024), SC_(3.53149033321258645807835062770856949751958513973522222203044e-7), + SC_(1), SC_(7356375)/(1024*1024), SC_(-2.31227973111067286051984021150135526024117175836722748404342e-7), + SC_(1), SC_(10667654)/(1024*1024), SC_(1.24591331097191900488116495350277530373473085499043086981229e-7), + }; + + static const boost::array, 14> jn_data = { + SC_(2), SC_(0), SC_(0), + SC_(2), SC_(1e-02), SC_(1.249989583365885362413250958437642113452e-05), + SC_(5), SC_(10), SC_(-0.2340615281867936404436949416457777864635), + SC_(5), SC_(-10), SC_(0.2340615281867936404436949416457777864635), + SC_(-5), SC_(1e+06), SC_(7.259643842453285052375779970433848914846e-04), + SC_(5), SC_(1e+06), SC_(-0.000725964384245328505237577997043384891484649290328285235308619), + SC_(-5), SC_(-1), SC_(2.497577302112344313750655409880451981584e-04), + SC_(10), SC_(10), SC_(0.2074861066333588576972787235187534280327), + SC_(10), SC_(-10), SC_(0.2074861066333588576972787235187534280327), + SC_(10), SC_(-5), SC_(1.467802647310474131107532232606627020895e-03), + SC_(-10), SC_(1e+06), SC_(-3.310793117604488741264958559035744460210e-04), + SC_(10), SC_(1e+06), SC_(-0.000331079311760448874126495855903574446020957243277028930713243), + SC_(1e+02), SC_(8e+01), SC_(4.606553064823477354141298259169874909670e-06), + SC_(1e+03), SC_(1e+05), SC_(1.283178112502480365195139312635384057363e-03), + }; + do_test_cyl_bessel_j(j0_data, name, "Bessel J0: Mathworld Data"); + do_test_cyl_bessel_j(j0_tricky, name, "Bessel J0: Mathworld Data (Tricky cases)"); + do_test_cyl_bessel_j(j1_data, name, "Bessel J1: Mathworld Data"); + do_test_cyl_bessel_j(j1_tricky, name, "Bessel J1: Mathworld Data (tricky cases)"); + do_test_cyl_bessel_j(jn_data, name, "Bessel JN: Mathworld Data"); + + do_test_cyl_bessel_j_int(j0_data, name, "Bessel J0: Mathworld Data (Integer Version)"); + do_test_cyl_bessel_j_int(j0_tricky, name, "Bessel J0: Mathworld Data (Tricky cases) (Integer Version)"); + do_test_cyl_bessel_j_int(j1_data, name, "Bessel J1: Mathworld Data (Integer Version)"); + do_test_cyl_bessel_j_int(j1_tricky, name, "Bessel J1: Mathworld Data (tricky cases) (Integer Version)"); + do_test_cyl_bessel_j_int(jn_data, name, "Bessel JN: Mathworld Data (Integer Version)"); + + static const boost::array, 17> jv_data = { + //SC_(-2.4), SC_(0), std::numeric_limits::infinity(), + SC_(2457)/1024, SC_(1)/1024, SC_(3.80739920118603335646474073457326714709615200130620574875292e-9), + SC_(5.5), SC_(3217)/1024, SC_(0.0281933076257506091621579544064767140470089107926550720453038), + SC_(-5.5), SC_(3217)/1024, SC_(-2.55820064470647911823175836997490971806135336759164272675969), + SC_(-5.5), SC_(1e+04), SC_(2.449843111985605522111159013846599118397e-03), + SC_(5.5), SC_(1e+04), SC_(0.00759343502722670361395585198154817047185480147294665270646578), + SC_(5.5), SC_(1e+06), SC_(-0.000747424248595630177396350688505919533097973148718960064663632), + SC_(5.125), SC_(1e+06), SC_(-0.000776600124835704280633640911329691642748783663198207360238214), + SC_(5.875), SC_(1e+06), SC_(-0.000466322721115193071631008581529503095819705088484386434589780), + SC_(0.5), SC_(101), SC_(0.0358874487875643822020496677692429287863419555699447066226409), + SC_(-5.5), SC_(1e+04), SC_(0.00244984311198560552211115901384659911839737686676766460822577), + SC_(-5.5), SC_(1e+06), SC_(0.000279243200433579511095229508894156656558211060453622750659554), + SC_(-0.5), SC_(101), SC_(0.0708184798097594268482290389188138201440114881159344944791454), + SC_(-10486074) / (1024*1024), SC_(1)/1024, SC_(1.41474013160494695750009004222225969090304185981836460288562e35), + SC_(-10486074) / (1024*1024), SC_(15), SC_(-0.0902239288885423309568944543848111461724911781719692852541489), + SC_(10486074) / (1024*1024), SC_(1e+02), SC_(-0.0547064914615137807616774867984047583596945624129838091326863), + SC_(10486074) / (1024*1024), SC_(2e+04), SC_(-0.00556783614400875611650958980796060611309029233226596737701688), + SC_(-10486074) / (1024*1024), SC_(1e+02), SC_(-0.0547613660316806551338637153942604550779513947674222863858713), + }; + do_test_cyl_bessel_j(jv_data, name, "Bessel J: Mathworld Data"); + + #undef SC_ + +#include "bessel_j_int_data.ipp" + do_test_cyl_bessel_j(bessel_j_int_data, name, "Bessel JN: Random Data"); + +#include "bessel_j_data.ipp" + do_test_cyl_bessel_j(bessel_j_data, name, "Bessel J: Random Data"); + +#include "bessel_j_large_data.ipp" + do_test_cyl_bessel_j(bessel_j_large_data, name, "Bessel J: Random Data (Tricky large values)"); + +#include "sph_bessel_data.ipp" + do_test_sph_bessel_j(sph_bessel_data, name, "Bessel j: Random Data"); +} + +int test_main(int, char* []) +{ +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif + expected_results(); + BOOST_MATH_CONTROL_FP; + + test_bessel(0.1F, "float"); + test_bessel(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_bessel(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_bessel(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + + diff --git a/test/test_bessel_k.cpp b/test/test_bessel_k.cpp new file mode 100644 index 000000000..3f7c286cb --- /dev/null +++ b/test/test_bessel_k.cpp @@ -0,0 +1,278 @@ +// Copyright John Maddock 2006, 2007 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable : 4756) // overflow in constant arithmetic +// Constants are too big for float case, but this doesn't matter for test. +#endif + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_bessel_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the bessel K function. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double|real_concept"; + } + else + { + largest_type = "long double|real_concept"; + } +#else + largest_type = "(long\\s+)?double|real_concept"; +#endif + // + // On MacOS X cyl_bessel_k has much higher error levels than + // expected: given that the implementation is basically + // just a continued fraction evaluation combined with + // exponentiation, we conclude that exp and pow are less + // accurate on this platform, especially when the result + // is outside the range of a double. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 4000, 1300); // test function + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 35, 15); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +T cyl_bessel_k_int_wrapper(T v, T x) +{ + return static_cast( + boost::math::cyl_bessel_k( + boost::math::tools::real_cast(v), x)); +} + +template +void do_test_cyl_bessel_k(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::cyl_bessel_k; +#else + pg funcp = boost::math::cyl_bessel_k; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_bessel_k against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_bessel_k", test_name); + std::cout << std::endl; + +#ifdef TEST_OTHER + if(boost::is_floating_point::value) + { + funcp = other::cyl_bessel_k; + + // + // test other::cyl_bessel_k against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::cyl_bessel_k"); + std::cout << std::endl; + } +#endif +} + +template +void do_test_cyl_bessel_k_int(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = cyl_bessel_k_int_wrapper; +#else + pg funcp = cyl_bessel_k_int_wrapper; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_bessel_k against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_bessel_k", test_name); + std::cout << std::endl; +} + +template +void test_bessel(T, const char* name) +{ + // function values calculated on http://functions.wolfram.com/ + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 9> k0_data = {{ + SC_(0), SC_(1), SC_(0.421024438240708333335627379212609036136219748226660472298970), + SC_(0), SC_(2), SC_(0.113893872749533435652719574932481832998326624388808882892530), + SC_(0), SC_(4), SC_(0.0111596760858530242697451959798334892250090238884743405382553), + SC_(0), SC_(8), SC_(0.000146470705222815387096584408698677921967305368833759024089154), + SC_(0), T(std::ldexp(1.0, -15)), SC_(10.5131392267382037062459525561594822400447325776672021972753), + SC_(0), T(std::ldexp(1.0, -30)), SC_(20.9103469324567717360787328239372191382743831365906131108531), + SC_(0), T(std::ldexp(1.0, -60)), SC_(41.7047623492551310138446473188663682295952219631968830346918), + SC_(0), SC_(50), SC_(3.41016774978949551392067551235295223184502537762334808993276e-23), + SC_(0), SC_(100), SC_(4.65662822917590201893900528948388635580753948544211387402671e-45), + }}; + static const boost::array, 9> k1_data = { + SC_(1), SC_(1), SC_(0.601907230197234574737540001535617339261586889968106456017768), + SC_(1), SC_(2), SC_(0.139865881816522427284598807035411023887234584841515530384442), + SC_(1), SC_(4), SC_(0.0124834988872684314703841799808060684838415849886258457917076), + SC_(1), SC_(8), SC_(0.000155369211805001133916862450622474621117065122872616157079566), + SC_(1), T(std::ldexp(1.0, -15)), SC_(32767.9998319528316432647441316539139725104728341577594326513), + SC_(1), T(std::ldexp(1.0, -30)), SC_(1.07374182399999999003003028572687332810353799544215073362305e9), + SC_(1), T(std::ldexp(1.0, -60)), SC_(1.15292150460684697599999999999999998169660198868126604634036e18), + SC_(1), SC_(50), SC_(3.44410222671755561259185303591267155099677251348256880221927e-23), + SC_(1), SC_(100), SC_(4.67985373563690928656254424202433530797494354694335352937465e-45), + }; + static const boost::array, 9> kn_data = { + SC_(2), T(std::ldexp(1.0, -30)), SC_(2.30584300921369395150000000000000000234841952009593636868109e18), + SC_(5), SC_(10), SC_(0.0000575418499853122792763740236992723196597629124356739596921536), + SC_(-5), SC_(100), SC_(5.27325611329294989461777188449044716451716555009882448801072e-45), + SC_(10), SC_(10), SC_(0.00161425530039067002345725193091329085443750382929208307802221), + SC_(10), T(std::ldexp(1.0, -30)), SC_(3.78470202927236255215249281534478864916684072926050665209083e98), + SC_(-10), SC_(1), SC_(1.80713289901029454691597861302340015908245782948536080022119e8), + SC_(100), SC_(5), SC_(7.03986019306167654653386616796116726248616158936088056952477e115), + SC_(100), SC_(80), SC_(8.39287107246490782848985384895907681748152272748337807033319e-12), + SC_(-1000), SC_(700), SC_(6.51561979144735818903553852606383312984409361984128221539405e-31), + }; + static const boost::array, 11> kv_data = { + SC_(0.5), SC_(0.875), SC_(0.558532231646608646115729767013630967055657943463362504577189), + SC_(0.5), SC_(1.125), SC_(0.383621010650189547146769320487006220295290256657827220786527), + SC_(2.25), T(std::ldexp(1.0, -30)), SC_(5.62397392719283271332307799146649700147907612095185712015604e20), + SC_(5.5), SC_(3217)/1024, SC_(1.30623288775012596319554857587765179889689223531159532808379), + SC_(-5.5), SC_(10), SC_(0.0000733045300798502164644836879577484533096239574909573072142667), + SC_(-5.5), SC_(100), SC_(5.41274555306792267322084448693957747924412508020839543293369e-45), + SC_(10240)/1024, SC_(1)/1024, SC_(2.35522579263922076203415803966825431039900000000993410734978e38), + SC_(10240)/1024, SC_(10), SC_(0.00161425530039067002345725193091329085443750382929208307802221), + SC_(144793)/1024, SC_(100), SC_(1.39565245860302528069481472855619216759142225046370312329416e-6), + SC_(144793)/1024, SC_(200), SC_(9.11950412043225432171915100042647230802198254567007382956336e-68), + SC_(-144793)/1024, SC_(50), SC_(1.30185229717525025165362673848737761549946548375142378172956e42), + }; + #undef SC_ + + do_test_cyl_bessel_k(k0_data, name, "Bessel K0: Mathworld Data"); + do_test_cyl_bessel_k(k1_data, name, "Bessel K1: Mathworld Data"); + do_test_cyl_bessel_k(kn_data, name, "Bessel Kn: Mathworld Data"); + + do_test_cyl_bessel_k_int(k0_data, name, "Bessel K0: Mathworld Data (Integer Version)"); + do_test_cyl_bessel_k_int(k1_data, name, "Bessel K1: Mathworld Data (Integer Version)"); + do_test_cyl_bessel_k_int(kn_data, name, "Bessel Kn: Mathworld Data (Integer Version)"); + + do_test_cyl_bessel_k(kv_data, name, "Bessel Kv: Mathworld Data"); + +#include "bessel_k_int_data.ipp" + do_test_cyl_bessel_k(bessel_k_int_data, name, "Bessel Kn: Random Data"); +#include "bessel_k_data.ipp" + do_test_cyl_bessel_k(bessel_k_data, name, "Bessel Kv: Random Data"); +} + +int test_main(int, char* []) +{ +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_bessel(0.1F, "float"); +#endif + test_bessel(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_bessel(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_bessel(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + + diff --git a/test/test_bessel_y.cpp b/test/test_bessel_y.cpp new file mode 100644 index 000000000..138d1daa2 --- /dev/null +++ b/test/test_bessel_y.cpp @@ -0,0 +1,463 @@ +// (C) Copyright John Maddock 2007. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_bessel_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the bessel Y function. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double|real_concept"; + } + else + { + largest_type = "long double|real_concept"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + + // + // HP-UX and Solaris rates are very slightly higher: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX|Sun Solaris", // platform + largest_type, // test type(s) + ".*(Y[nv]|y).*Random.*", // test data group + ".*", 30000, 30000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX|Sun Solaris", // platform + largest_type, // test type(s) + ".*Y[01Nv].*", // test data group + ".*", 1300, 500); // test function + // + // Tru64: + // + add_expected_result( + ".*Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*(Y[nv]|y).*Random.*", // test data group + ".*", 30000, 30000); // test function + add_expected_result( + ".*Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Y[01Nv].*", // test data group + ".*", 400, 200); // test function + + // + // Mac OS X rates are very slightly higher: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + ".*(Y[nv1]).*", // test data group + ".*", 600000, 100000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + "long double|real_concept", // test type(s) + ".*Y[0].*", // test data group + ".*", 1200, 1000); // test function + + // + // Linux: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + ".*Yv.*Random.*", // test data group + ".*", 200000, 200000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + ".*Y[01v].*", // test data group + ".*", 2000, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + ".*Yn.*", // test data group + ".*", 30000, 30000); // test function + // + // MinGW: + // + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Yv.*Random.*", // test data group + ".*", 200000, 200000); // test function + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Y[01v].*", // test data group + ".*", 2000, 1000); // test function + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Yn.*", // test data group + ".*", 30000, 30000); // test function + // + // Solaris version of long double has it's own error rates, + // again just a touch higher than msvc's 64-bit double: + // + add_expected_result( + "GNU.*", // compiler + ".*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "Y[0N].*Mathworld.*", // test data group + ".*", 2000, 2000); // test function + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if((std::numeric_limits::digits != std::numeric_limits::digits) + && (std::numeric_limits::digits < 90)) + { + // some errors spill over into type double as well: + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*Y[Nn].*", // test data group + ".*", 20, 20); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*Yv.*", // test data group + ".*", 80, 70); // test function + } +#endif + // + // defaults are based on MSVC-8 on Win32: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Y0.*Random.*", // test data group + ".*", 600, 400); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*(Y[nv]|y).*Random.*", // test data group + ".*", 2000, 2000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*(Y[nv]|y).*Random.*", // test data group + ".*", 1500, 1000); // test function + // + // Fallback for sun has to go after the general cases above: + // + add_expected_result( + "GNU.*", // compiler + ".*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "Y[0N].*", // test data group + ".*", 200, 200); // test function + // + // General fallback: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 60, 40); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_cyl_neumann_y(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::cyl_neumann; +#else + pg funcp = boost::math::cyl_neumann; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_neumann against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_neumann", test_name); + std::cout << std::endl; + +#ifdef TEST_OTHER + if(boost::is_floating_point::value) + { + funcp = other::cyl_neumann; + + // + // test other::cyl_neumann against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "other::cyl_neumann", test_name); + std::cout << std::endl; + } +#endif +} + +template +T cyl_neumann_int_wrapper(T v, T x) +{ + return static_cast(boost::math::cyl_neumann(boost::math::tools::real_cast(v), x)); +} + +template +void do_test_cyl_neumann_y_int(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = cyl_neumann_int_wrapper; +#else + pg funcp = cyl_neumann_int_wrapper; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cyl_neumann against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_neumann", test_name); + std::cout << std::endl; +} + +template +void do_test_sph_neumann_y(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(unsigned, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::sph_neumann; +#else + pg funcp = boost::math::sph_neumann; +#endif + + typedef int (*cast_t)(value_type); + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test sph_neumann against data: + // + result = boost::math::tools::test( + data, + bind_func_int1(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cyl_neumann", test_name); + std::cout << std::endl; +} + +template +void test_bessel(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // + // function values calculated on http://functions.wolfram.com/ + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 9> y0_data = {{ + SC_(0), SC_(1), SC_(0.0882569642156769579829267660235151628278175230906755467110438), + SC_(0), SC_(2), SC_(0.510375672649745119596606592727157873268139227085846135571839), + SC_(0), SC_(4), SC_(-0.0169407393250649919036351344471532182404925898980149027169321), + SC_(0), SC_(8), SC_(0.223521489387566220527323400498620359274814930781423577578334), + SC_(0), SC_(1e-05), SC_(-7.40316028370197013259676050746759072070960287586102867247159), + SC_(0), SC_(1e-10), SC_(-14.7325162726972420426916696426209144888762342592762415255386), + SC_(0), SC_(1e-20), SC_(-29.3912282502857968601858410375186700783698345615477536431464), + SC_(0), SC_(1e+03), SC_(0.00471591797762281339977326146566525500985900489680197718528000), + SC_(0), SC_(1e+05), SC_(0.00184676615886506410434074102431546125884886798090392516843524) + }}; + static const boost::array, 9> y1_data = { + SC_(1), SC_(1), SC_(-0.781212821300288716547150000047964820549906390716444607843833), + SC_(1), SC_(2), SC_(-0.107032431540937546888370772277476636687480898235053860525795), + SC_(1), SC_(4), SC_(0.397925710557100005253979972450791852271189181622908340876586), + SC_(1), SC_(8), SC_(-0.158060461731247494255555266187483550327344049526705737651263), + SC_(1), SC_(1e-10), SC_(-6.36619772367581343150789184284462611709080831190542841855708e9), + SC_(1), SC_(1e-20), SC_(-6.36619772367581343075535053490057448139324059868649274367256e19), + SC_(1), SC_(1e+01), SC_(0.249015424206953883923283474663222803260416543069658461246944), + SC_(1), SC_(1e+03), SC_(-0.0247843312923517789148623560971412909386318548648705287583490), + SC_(1), SC_(1e+05), SC_(0.00171921035008825630099494523539897102954509504993494957572726) + }; + static const boost::array, 9> yn_data = { + SC_(2), SC_(1e-20), SC_(-1.27323954473516268615107010698011489627570899691226996904849e40), + SC_(5), SC_(10), SC_(0.135403047689362303197029014762241709088405766746419538495983), + SC_(-5), SC_(1e+06), SC_(0.000331052088322609048503535570014688967096938338061796192422114), + SC_(10), SC_(10), SC_(-0.359814152183402722051986577343560609358382147846904467526222), + SC_(10), SC_(1e-10), SC_(-1.18280490494334933900960937719565669877576135140014365217993e108), + SC_(-10), SC_(1e+06), SC_(0.000725951969295187086245251366365393653610914686201194434805730), + SC_(1e+02), SC_(5), SC_(-5.08486391602022287993091563093082035595081274976837280338134e115), + SC_(1e+03), SC_(1e+05), SC_(0.00217254919137684037092834146629212647764581965821326561261181), + SC_(-1e+03), SC_(7e+02), SC_(-1.88753109980945889960843803284345261796244752396992106755091e77) + }; + static const boost::array, 9> yv_data = { + //SC_(2.25), SC_(1) / 1024, SC_(-1.01759203636941035147948317764932151601257765988969544340275e7), + SC_(0.5), SC_(1) / (1024*1024), SC_(-817.033790261762580469303126467917092806755460418223776544122), + SC_(5.5), SC_(3.125), SC_(-2.61489440328417468776474188539366752698192046890955453259866), + SC_(-5.5), SC_(3.125), SC_(-0.0274994493896489729948109971802244976377957234563871795364056), + SC_(-5.5), SC_(1e+04), SC_(-0.00759343502722670361395585198154817047185480147294665270646578), + SC_(-10486074) / (1024*1024), SC_(1)/1024, SC_(-1.50382374389531766117868938966858995093408410498915220070230e38), + SC_(-10486074) / (1024*1024), SC_(1e+02), SC_(0.0583041891319026009955779707640455341990844522293730214223545), + SC_(141.75), SC_(1e+02), SC_(-5.38829231428696507293191118661269920130838607482708483122068e9), + SC_(141.75), SC_(2e+04), SC_(-0.00376577888677186194728129112270988602876597726657372330194186), + SC_(-141.75), SC_(1e+02), SC_(-3.81009803444766877495905954105669819951653361036342457919021e9), + }; + + do_test_cyl_neumann_y(y0_data, name, "Y0: Mathworld Data"); + do_test_cyl_neumann_y(y1_data, name, "Y1: Mathworld Data"); + do_test_cyl_neumann_y(yn_data, name, "Yn: Mathworld Data"); + do_test_cyl_neumann_y_int(y0_data, name, "Y0: Mathworld Data (Integer Version)"); + do_test_cyl_neumann_y_int(y1_data, name, "Y1: Mathworld Data (Integer Version)"); + do_test_cyl_neumann_y_int(yn_data, name, "Yn: Mathworld Data (Integer Version)"); + do_test_cyl_neumann_y(yv_data, name, "Yv: Mathworld Data"); + +#include "bessel_y01_data.ipp" + do_test_cyl_neumann_y(bessel_y01_data, name, "Y0 and Y1: Random Data"); +#include "bessel_yn_data.ipp" + do_test_cyl_neumann_y(bessel_yn_data, name, "Yn: Random Data"); +#include "bessel_yv_data.ipp" + do_test_cyl_neumann_y(bessel_yv_data, name, "Yv: Random Data"); + +#include "sph_neumann_data.ipp" + do_test_sph_neumann_y(sph_neumann_data, name, "y: Random Data"); +} + +int test_main(int, char* []) +{ +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_bessel(0.1F, "float"); +#endif + test_bessel(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_bessel(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_bessel(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + + diff --git a/test/test_beta.cpp b/test/test_beta.cpp new file mode 100644 index 000000000..aa9ce1482 --- /dev/null +++ b/test/test_beta.cpp @@ -0,0 +1,228 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007 + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_beta_hooks.hpp" +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the function beta. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // +#if LDBL_MANT_DIG == 106 + // Darwin: + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS.*", // platform + "(long\\s+)?double", // test type(s) + "Beta Function: Medium.*", // test data group + "boost::math::beta", 200, 35); // test function +#endif + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "(long\\s+)?double", // test type(s) + "Beta Function: Small.*", // test data group + "boost::math::beta", 8, 5); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "(long\\s+)?double", // test type(s) + "Beta Function: Medium.*", // test data group + "boost::math::beta", 130, 35); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "(long\\s+)?double", // test type(s) + "Beta Function: Divergent.*", // test data group + "boost::math::beta", 20, 6); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Beta Function: Small.*", // test data group + "boost::math::beta", 15, 15); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Beta Function: Medium.*", // test data group + "boost::math::beta", 130, 35); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Beta Function: Divergent.*", // test data group + "boost::math::beta", 25, 8); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_beta(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::beta; +#else + pg funcp = boost::math::beta; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test beta against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::beta", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::beta; + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::beta"); + } +#endif + std::cout << std::endl; +} +template +void test_beta(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and beta(a, b): + // +# include "beta_small_data.ipp" + + do_test_beta(beta_small_data, name, "Beta Function: Small Values"); + +# include "beta_med_data.ipp" + + do_test_beta(beta_med_data, name, "Beta Function: Medium Values"); + +# include "beta_exp_data.ipp" + + do_test_beta(beta_exp_data, name, "Beta Function: Divergent Values"); +} + +#undef small // VC++ #defines small char !!!!!! +template +void test_spots(T) +{ + // + // Basic sanity checks, tolerance is 20 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 20 * 100; + T small = boost::math::tools::epsilon() / 1024; + BOOST_CHECK_CLOSE(::boost::math::beta(static_cast(1), static_cast(1)), static_cast(1), tolerance); + BOOST_CHECK_CLOSE(::boost::math::beta(static_cast(1), static_cast(4)), static_cast(0.25), tolerance); + BOOST_CHECK_CLOSE(::boost::math::beta(static_cast(4), static_cast(1)), static_cast(0.25), tolerance); + BOOST_CHECK_CLOSE(::boost::math::beta(small, static_cast(4)), 1/small, tolerance); + BOOST_CHECK_CLOSE(::boost::math::beta(static_cast(4), small), 1/small, tolerance); + BOOST_CHECK_CLOSE(::boost::math::beta(static_cast(4), static_cast(20)), static_cast(0.00002823263692828910220214568040654997176736L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::beta(static_cast(0.0125L), static_cast(0.000023L)), static_cast(43558.24045647538375006349016083320744662L), tolerance); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + test_spots(0.0F); + test_spots(0.0); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.1)); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + test_beta(0.1F, "float"); + test_beta(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_beta(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_beta(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_beta_dist.cpp b/test/test_beta_dist.cpp new file mode 100644 index 000000000..5256e4a31 --- /dev/null +++ b/test/test_beta_dist.cpp @@ -0,0 +1,579 @@ +// test_beta_dist.cpp + +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Basic sanity tests for the beta Distribution. + +// http://members.aol.com/iandjmsmith/BETAEX.HTM beta distribution calculator +// Appreas to be a 64-bit calculator showing 17 decimal digit (last is noisy). +// Similar to mathCAD? + +// http://www.nuhertz.com/statmat/distributions.html#Beta +// Pretty graphs and explanations for most distributions. + +// http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp +// provided 40 decimal digits accuracy incomplete beta aka beta regularized == cdf + +// http://www.ausvet.com.au/pprev/content.php?page=PPscript +// mode 0.75 5/95% 0.9 alpha 7.39 beta 3.13 +// http://www.epi.ucdavis.edu/diagnostictests/betabuster.html +// Beta Buster also calculates alpha and beta from mode & percentile estimates. +// This is NOT (yet) implemented. + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +#endif + +#include // for beta_distribution +using boost::math::beta_distribution; +using boost::math::beta; + +#include // for real_concept +using ::boost::math::concepts::real_concept; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE_FRACTION + +#include +using std::cout; +using std::endl; +#include +using std::numeric_limits; + +template +void test_spot( + RealType a, // alpha a + RealType b, // beta b + RealType x, // Probability + RealType P, // CDF of beta(a, b) + RealType Q, // Complement of CDF + RealType tol) // Test tolerance. +{ + boost::math::beta_distribution abeta(a, b); + BOOST_CHECK_CLOSE_FRACTION(cdf(abeta, x), P, tol); + if((P < 0.99) && (Q < 0.99)) + { // We can only check this if P is not too close to 1, + // so that we can guarantee that Q is free of error, + // (and similarly for Q) + BOOST_CHECK_CLOSE_FRACTION( + cdf(complement(abeta, x)), Q, tol); + if(x != 0) + { + BOOST_CHECK_CLOSE_FRACTION( + quantile(abeta, P), x, tol); + } + else + { + // Just check quantile is very small: + if((std::numeric_limits::max_exponent <= std::numeric_limits::max_exponent) + && (boost::is_floating_point::value)) + { + // Limit where this is checked: if exponent range is very large we may + // run out of iterations in our root finding algorithm. + BOOST_CHECK(quantile(abeta, P) < boost::math::tools::epsilon() * 10); + } + } // if k + if(x != 0) + { + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(abeta, Q)), x, tol); + } + else + { // Just check quantile is very small: + if((std::numeric_limits::max_exponent <= std::numeric_limits::max_exponent) && (boost::is_floating_point::value)) + { // Limit where this is checked: if exponent range is very large we may + // run out of iterations in our root finding algorithm. + BOOST_CHECK(quantile(complement(abeta, Q)) < boost::math::tools::epsilon() * 10); + } + } // if x + // Estimate alpha & beta from mean and variance: + + BOOST_CHECK_CLOSE_FRACTION( + beta_distribution::find_alpha(mean(abeta), variance(abeta)), + abeta.alpha(), tol); + BOOST_CHECK_CLOSE_FRACTION( + beta_distribution::find_beta(mean(abeta), variance(abeta)), + abeta.beta(), tol); + + // Estimate sample alpha and beta from others: + BOOST_CHECK_CLOSE_FRACTION( + beta_distribution::find_alpha(abeta.beta(), x, P), + abeta.alpha(), tol); + BOOST_CHECK_CLOSE_FRACTION( + beta_distribution::find_beta(abeta.alpha(), x, P), + abeta.beta(), tol); + } // if((P < 0.99) && (Q < 0.99) + +} // template void test_spot + +template // Any floating-point type RealType. +void test_spots(RealType) +{ + // Basic sanity checks with 'known good' values. + // MathCAD test data is to double precision only, + // so set tolerance to 100 eps expressed as a fraction, or + // 100 eps of type double expressed as a fraction, + // whichever is the larger. + + RealType tolerance = (std::max) + (boost::math::tools::epsilon(), + static_cast(std::numeric_limits::epsilon())); // 0 if real_concept. + + cout << "Boost::math::tools::epsilon = " << boost::math::tools::epsilon() <() * 10; + + // Sources of spot test values: + + // MathCAD defines dbeta(x, s1, s2) pdf, s1 == alpha, s2 = beta, x = x in Wolfram + // pbeta(x, s1, s2) cdf and qbeta(x, s1, s2) inverse of cdf + // returns pr(X ,= x) when random variable X + // has the beta distribution with parameters s1)alpha) and s2(beta). + // s1 > 0 and s2 >0 and 0 < x < 1 (but allows x == 0! and x == 1!) + // dbeta(0,1,1) = 0 + // dbeta(0.5,1,1) = 1 + + using boost::math::beta_distribution; + using ::boost::math::cdf; + using ::boost::math::pdf; + + // Tests that should throw: + BOOST_CHECK_THROW(mode(beta_distribution(static_cast(1), static_cast(1))), std::domain_error); + // mode is undefined, and throws domain_error! + + // BOOST_CHECK_THROW(median(beta_distribution(static_cast(1), static_cast(1))), std::domain_error); + // median is undefined, and throws domain_error! + // But now median IS provided via derived accessor as quantile(half). + + + BOOST_CHECK_THROW( // For various bad arguments. + pdf( + beta_distribution(static_cast(-1), static_cast(1)), // bad alpha < 0. + static_cast(1)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( + beta_distribution(static_cast(0), static_cast(1)), // bad alpha == 0. + static_cast(1)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( + beta_distribution(static_cast(1), static_cast(0)), // bad beta == 0. + static_cast(1)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( + beta_distribution(static_cast(1), static_cast(-1)), // bad beta < 0. + static_cast(1)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( + beta_distribution(static_cast(1), static_cast(1)), // bad x < 0. + static_cast(-1)), std::domain_error); + + BOOST_CHECK_THROW( + pdf( + beta_distribution(static_cast(1), static_cast(1)), // bad x > 1. + static_cast(999)), std::domain_error); + + // Some exact pdf values. + + BOOST_CHECK_EQUAL( // a = b = 1 is uniform distribution. + pdf(beta_distribution(static_cast(1), static_cast(1)), + static_cast(1)), // x + static_cast(1)); + BOOST_CHECK_EQUAL( + pdf(beta_distribution(static_cast(1), static_cast(1)), + static_cast(0)), // x + static_cast(1)); + BOOST_CHECK_CLOSE_FRACTION( + pdf(beta_distribution(static_cast(1), static_cast(1)), + static_cast(0.5)), // x + static_cast(1), + tolerance); + + BOOST_CHECK_EQUAL( + beta_distribution(static_cast(1), static_cast(1)).alpha(), + static_cast(1) ); // + + BOOST_CHECK_EQUAL( + mean(beta_distribution(static_cast(1), static_cast(1))), + static_cast(0.5) ); // Exact one half. + + BOOST_CHECK_CLOSE_FRACTION( + pdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.5)), // x + static_cast(1.5), // Exactly 3/2 + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + pdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.5)), // x + static_cast(1.5), // Exactly 3/2 + tolerance); + + // CDF + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.1)), // x + static_cast(0.02800000000000000000000000000000000000000L), // Seems exact. + // http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=BetaRegularized&ptype=0&z=0.1&a=2&b=2&digits=40 + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.0001)), // x + static_cast(2.999800000000000000000000000000000000000e-8L), + // http://members.aol.com/iandjmsmith/BETAEX.HTM 2.9998000000004 + // http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=BetaRegularized&ptype=0&z=0.0001&a=2&b=2&digits=40 + tolerance); + + + BOOST_CHECK_CLOSE_FRACTION( + pdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.0001)), // x + static_cast(0.0005999400000000004L), // http://members.aol.com/iandjmsmith/BETAEX.HTM + // Slightly higher tolerance for real concept: + (std::numeric_limits::is_specialized ? 1 : 10) * tolerance); + + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.9999)), // x + static_cast(0.999999970002L), // http://members.aol.com/iandjmsmith/BETAEX.HTM + // Wolfram 0.9999999700020000000000000000000000000000 + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(0.5), static_cast(2)), + static_cast(0.9)), // x + static_cast(0.9961174629530394895796514664963063381217L), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(0.5), static_cast(0.5)), + static_cast(0.1)), // x + static_cast(0.2048327646991334516491978475505189480977L), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(0.5), static_cast(0.5)), + static_cast(0.9)), // x + static_cast(0.7951672353008665483508021524494810519023L), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + quantile(beta_distribution(static_cast(0.5), static_cast(0.5)), + static_cast(0.7951672353008665483508021524494810519023L)), // x + static_cast(0.9), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(0.5), static_cast(0.5)), + static_cast(0.6)), // x + static_cast(0.5640942168489749316118742861695149357858L), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + quantile(beta_distribution(static_cast(0.5), static_cast(0.5)), + static_cast(0.5640942168489749316118742861695149357858L)), // x + static_cast(0.6), + // Wolfram + tolerance); + + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(2), static_cast(0.5)), + static_cast(0.6)), // x + static_cast(0.1778078083562213736802876784474931812329L), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + quantile(beta_distribution(static_cast(2), static_cast(0.5)), + static_cast(0.1778078083562213736802876784474931812329L)), // x + static_cast(0.6), + // Wolfram + tolerance); // gives + + BOOST_CHECK_CLOSE_FRACTION( + cdf(beta_distribution(static_cast(1), static_cast(1)), + static_cast(0.1)), // x + static_cast(0.1), // 0.1000000000000000000000000000000000000000 + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + quantile(beta_distribution(static_cast(1), static_cast(1)), + static_cast(0.1)), // x + static_cast(0.1), // 0.1000000000000000000000000000000000000000 + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(complement(beta_distribution(static_cast(0.5), static_cast(0.5)), + static_cast(0.1))), // complement of x + static_cast(0.7951672353008665483508021524494810519023L), + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + quantile(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.0280000000000000000000000000000000000L)), // x + static_cast(0.1), + // Wolfram + tolerance); + + + BOOST_CHECK_CLOSE_FRACTION( + cdf(complement(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.1))), // x + static_cast(0.9720000000000000000000000000000000000000L), // Exact. + // Wolfram + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + pdf(beta_distribution(static_cast(2), static_cast(2)), + static_cast(0.9999)), // x + static_cast(0.0005999399999999344L), // http://members.aol.com/iandjmsmith/BETAEX.HTM + tolerance*10); // Note loss of precision calculating 1-p test value. + + //void test_spot( + // RealType a, // alpha a + // RealType b, // beta b + // RealType x, // Probability + // RealType P, // CDF of beta(a, b) + // RealType Q, // Complement of CDF + // RealType tol) // Test tolerance. + + // These test quantiles and complements, and parameter estimates as well. + // Spot values using, for example: + // http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=BetaRegularized&ptype=0&z=0.1&a=0.5&b=3&digits=40 + + test_spot( + static_cast(1), // alpha a + static_cast(1), // beta b + static_cast(0.1), // Probability p + static_cast(0.1), // Probability of result (CDF of beta), P + static_cast(0.9), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.1), // Probability p + static_cast(0.0280000000000000000000000000000000000L), // Probability of result (CDF of beta), P + static_cast(1 - 0.0280000000000000000000000000000000000L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.5), // Probability p + static_cast(0.5), // Probability of result (CDF of beta), P + static_cast(0.5), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.9), // Probability p + static_cast(0.972000000000000), // Probability of result (CDF of beta), P + static_cast(1-0.972000000000000), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.01), // Probability p + static_cast(0.0002980000000000000000000000000000000000000L), // Probability of result (CDF of beta), P + static_cast(1-0.0002980000000000000000000000000000000000000L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.001), // Probability p + static_cast(2.998000000000000000000000000000000000000E-6L), // Probability of result (CDF of beta), P + static_cast(1-2.998000000000000000000000000000000000000E-6L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.0001), // Probability p + static_cast(2.999800000000000000000000000000000000000E-8L), // Probability of result (CDF of beta), P + static_cast(1-2.999800000000000000000000000000000000000E-8L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(2), // alpha a + static_cast(2), // beta b + static_cast(0.99), // Probability p + static_cast(0.9997020000000000000000000000000000000000L), // Probability of result (CDF of beta), P + static_cast(1-0.9997020000000000000000000000000000000000L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(0.5), // alpha a + static_cast(2), // beta b + static_cast(0.5), // Probability p + static_cast(0.8838834764831844055010554526310612991060L), // Probability of result (CDF of beta), P + static_cast(1-0.8838834764831844055010554526310612991060L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(0.5), // alpha a + static_cast(3.), // beta b + static_cast(0.7), // Probability p + static_cast(0.9903963064097119299191611355232156905687L), // Probability of result (CDF of beta), P + static_cast(1-0.9903963064097119299191611355232156905687L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + + test_spot( + static_cast(0.5), // alpha a + static_cast(3.), // beta b + static_cast(0.1), // Probability p + static_cast(0.5545844446520295253493059553548880128511L), // Probability of result (CDF of beta), P + static_cast(1-0.5545844446520295253493059553548880128511L), // Complement of CDF Q = 1 - P + tolerance); // Test tolerance. + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + // Check that can generate beta distribution using one convenience methods: + beta_distribution<> mybeta11(1., 1.); // Using default RealType double. + // but that + // boost::math::beta mybeta1(1., 1.); // Using typedef fails. + // error C2039: 'beta' : is not a member of 'boost::math' + + // Basic sanity-check spot values. + + // Some simple checks using double only. + BOOST_CHECK_EQUAL(mybeta11.alpha(), 1); // + BOOST_CHECK_EQUAL(mybeta11.beta(), 1); + BOOST_CHECK_EQUAL(mean(mybeta11), 0.5); // 1 / (1 + 1) = 1/2 exactly + BOOST_CHECK_THROW(mode(mybeta11), std::domain_error); + beta_distribution<> mybeta22(2., 2.); // pdf is dome shape. + BOOST_CHECK_EQUAL(mode(mybeta22), 0.5); // 2-1 / (2+2-2) = 1/2 exactly. + beta_distribution<> mybetaH2(0.5, 2.); // + beta_distribution<> mybetaH3(0.5, 3.); // + + // Check a few values using double. + BOOST_CHECK_EQUAL(pdf(mybeta11, 1), 1); // is uniform unity over 0 to 1, + BOOST_CHECK_EQUAL(pdf(mybeta11, 0), 1); // including zero and unity. + // Although these next three have an exact result, internally they're + // *not* treated as special cases, and may be out by a couple of eps: + BOOST_CHECK_CLOSE_FRACTION(pdf(mybeta11, 0.5), 1.0, 5*std::numeric_limits::epsilon()); + BOOST_CHECK_CLOSE_FRACTION(pdf(mybeta11, 0.0001), 1.0, 5*std::numeric_limits::epsilon()); + BOOST_CHECK_CLOSE_FRACTION(pdf(mybeta11, 0.9999), 1.0, 5*std::numeric_limits::epsilon()); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta11, 0.1), 0.1, 2 * std::numeric_limits::epsilon()); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta11, 0.5), 0.5, 2 * std::numeric_limits::epsilon()); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta11, 0.9), 0.9, 2 * std::numeric_limits::epsilon()); + BOOST_CHECK_EQUAL(cdf(mybeta11, 1), 1.); // Exact unity expected. + + double tol = std::numeric_limits::epsilon() * 10; + BOOST_CHECK_EQUAL(pdf(mybeta22, 1), 0); // is dome shape. + BOOST_CHECK_EQUAL(pdf(mybeta22, 0), 0); + BOOST_CHECK_CLOSE_FRACTION(pdf(mybeta22, 0.5), 1.5, tol); // top of dome, expect exactly 3/2. + BOOST_CHECK_CLOSE_FRACTION(pdf(mybeta22, 0.0001), 5.9994000000000E-4, tol); + BOOST_CHECK_CLOSE_FRACTION(pdf(mybeta22, 0.9999), 5.9994000000000E-4, tol*50); + + BOOST_CHECK_EQUAL(cdf(mybeta22, 0.), 0); // cdf is a curved line from 0 to 1. + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.1), 0.028000000000000, tol); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.5), 0.5, tol); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.9), 0.972000000000000, tol); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.0001), 2.999800000000000000000000000000000000000E-8, tol); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.001), 2.998000000000000000000000000000000000000E-6, tol); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.01), 0.0002980000000000000000000000000000000000000, tol); + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.1), 0.02800000000000000000000000000000000000000, tol); // exact + BOOST_CHECK_CLOSE_FRACTION(cdf(mybeta22, 0.99), 0.9997020000000000000000000000000000000000, tol); + + BOOST_CHECK_EQUAL(cdf(mybeta22, 1), 1.); // Exact unity expected. + + // Complement + + BOOST_CHECK_CLOSE_FRACTION(cdf(complement(mybeta22, 0.9)), 0.028000000000000, tol); + + // quantile. + BOOST_CHECK_CLOSE_FRACTION(quantile(mybeta22, 0.028), 0.1, tol); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(mybeta22, 1 - 0.028)), 0.1, tol); + BOOST_CHECK_EQUAL(kurtosis(mybeta11), 3+ kurtosis_excess(mybeta11)); // Check kurtosis_excess = kurtosis - 3; + BOOST_CHECK_CLOSE_FRACTION(variance(mybeta22), 0.05, tol); + BOOST_CHECK_CLOSE_FRACTION(mean(mybeta22), 0.5, tol); + BOOST_CHECK_CLOSE_FRACTION(mode(mybeta22), 0.5, tol); + BOOST_CHECK_CLOSE_FRACTION(median(mybeta22), 0.5, tol); + + BOOST_CHECK_CLOSE_FRACTION(skewness(mybeta22), 0.0, tol); + BOOST_CHECK_CLOSE_FRACTION(kurtosis_excess(mybeta22), -144.0 / 168, tol); + BOOST_CHECK_CLOSE_FRACTION(skewness(beta_distribution<>(3, 5)), 0.30983866769659335081434123198259, tol); + + BOOST_CHECK_CLOSE_FRACTION(beta_distribution::find_alpha(mean(mybeta22), variance(mybeta22)), mybeta22.alpha(), tol); // mean, variance, probability. + BOOST_CHECK_CLOSE_FRACTION(beta_distribution::find_beta(mean(mybeta22), variance(mybeta22)), mybeta22.beta(), tol);// mean, variance, probability. + + BOOST_CHECK_CLOSE_FRACTION(mybeta22.find_alpha(mybeta22.beta(), 0.8, cdf(mybeta22, 0.8)), mybeta22.alpha(), tol); + BOOST_CHECK_CLOSE_FRACTION(mybeta22.find_beta(mybeta22.alpha(), 0.8, cdf(mybeta22, 0.8)), mybeta22.beta(), tol); + + + beta_distribution rcbeta22(2, 2); // Using RealType real_concept. + cout << "numeric_limits::is_specialized " << numeric_limits::is_specialized << endl; + cout << "numeric_limits::digits " << numeric_limits::digits << endl; + cout << "numeric_limits::digits10 " << numeric_limits::digits10 << endl; + cout << "numeric_limits::epsilon " << numeric_limits::epsilon() << endl; + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. + test_spots(0.0); // Test double. +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#endif + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +-Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_beta_dist.exe" +Running 1 test case... +numeric_limits::is_specialized 0 +numeric_limits::digits 0 +numeric_limits::digits10 0 +numeric_limits::epsilon 0 +Boost::math::tools::epsilon = 1.19209e-007 +std::numeric_limits::epsilon = 1.19209e-007 +epsilon = 1.19209e-007, Tolerance = 0.0119209%. +Boost::math::tools::epsilon = 2.22045e-016 +std::numeric_limits::epsilon = 2.22045e-016 +epsilon = 2.22045e-016, Tolerance = 2.22045e-011%. +Boost::math::tools::epsilon = 2.22045e-016 +std::numeric_limits::epsilon = 2.22045e-016 +epsilon = 2.22045e-016, Tolerance = 2.22045e-011%. +Boost::math::tools::epsilon = 2.22045e-016 +std::numeric_limits::epsilon = 0 +epsilon = 2.22045e-016, Tolerance = 2.22045e-011%. +*** No errors detected +*/ + + + diff --git a/test/test_beta_hooks.hpp b/test/test_beta_hooks.hpp new file mode 100644 index 000000000..ff2909eb3 --- /dev/null +++ b/test/test_beta_hooks.hpp @@ -0,0 +1,81 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_TEST_BETA_OTHER_HOOKS_HPP +#define BOOST_MATH_TEST_BETA_OTHER_HOOKS_HPP + +#ifdef TEST_CEPHES +namespace other{ +extern "C" { + double beta(double, double); + float betaf(float, float); + long double betal(long double, long double); + + double incbet(double, double, double); + float incbetf(float, float, float); + long double incbetl(long double, long double, long double); +} +inline float beta(float a, float b) +{ return betaf(a, b); } +inline long double beta(long double a, long double b) +{ +#ifdef BOOST_MSVC + return beta((double)a, (double)b); +#else + return betal(a, b); +#endif +} +inline float ibeta(float a, float b, float x) +{ return incbetf(a, b, x); } +inline double ibeta(double a, double b, double x) +{ return incbet(a, b, x); } +inline long double ibeta(long double a, long double b, long double x) +{ +#ifdef BOOST_MSVC + return incbet((double)a, (double)b, (double)x); +#else + return incbetl(a, b); +#endif +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_GSL +#include +#include +#include + +namespace other{ +inline float beta(float a, float b) +{ return (float)gsl_sf_beta(a, b); } +inline double beta(double a, double b) +{ return gsl_sf_beta(a, b); } +inline long double beta(long double a, long double b) +{ return gsl_sf_beta(a, b); } + +inline float ibeta(float a, float b, float x) +{ return (float)gsl_sf_beta_inc(a, b, x); } +inline double ibeta(double a, double b, double x) +{ return gsl_sf_beta_inc(a, b, x); } +inline long double ibeta(long double a, long double b, long double x) +{ + return gsl_sf_beta_inc((double)a, (double)b, (double)x); +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_OTHER +namespace other{ + boost::math::concepts::real_concept beta(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept ibeta(boost::math::concepts::real_concept, boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } +} +#endif + + +#endif + + diff --git a/test/test_binomial.cpp b/test/test_binomial.cpp new file mode 100644 index 000000000..cfe9e5f1b --- /dev/null +++ b/test/test_binomial.cpp @@ -0,0 +1,742 @@ +// test_binomial.cpp + +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Basic sanity test for Binomial Cumulative Distribution Function. + +#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +#endif + +#include // for binomial_distribution +using boost::math::binomial_distribution; + +#include // for real_concept +using ::boost::math::concepts::real_concept; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE + +#include +using std::cout; +using std::endl; +#include +using std::numeric_limits; + +template +void test_spot( + RealType N, // Number of trials + RealType k, // Number of successes + RealType p, // Probability of success + RealType P, // CDF + RealType Q, // Complement of CDF + RealType tol) // Test tolerance +{ + boost::math::binomial_distribution bn(N, p); + BOOST_CHECK_CLOSE( + cdf(bn, k), P, tol); + if((P < 0.99) && (Q < 0.99)) + { + // + // We can only check this if P is not too close to 1, + // so that we can guarentee Q is free of error: + // + BOOST_CHECK_CLOSE( + cdf(complement(bn, k)), Q, tol); + if(k != 0) + { + BOOST_CHECK_CLOSE( + quantile(bn, P), k, tol); + } + else + { + // Just check quantile is very small: + if((std::numeric_limits::max_exponent <= std::numeric_limits::max_exponent) && (boost::is_floating_point::value)) + { + // Limit where this is checked: if exponent range is very large we may + // run out of iterations in our root finding algorithm. + BOOST_CHECK(quantile(bn, P) < boost::math::tools::epsilon() * 10); + } + } + if(k != 0) + { + BOOST_CHECK_CLOSE( + quantile(complement(bn, Q)), k, tol); + } + else + { + // Just check quantile is very small: + if((std::numeric_limits::max_exponent <= std::numeric_limits::max_exponent) && (boost::is_floating_point::value)) + { + // Limit where this is checked: if exponent range is very large we may + // run out of iterations in our root finding algorithm. + BOOST_CHECK(quantile(complement(bn, Q)) < boost::math::tools::epsilon() * 10); + } + } + if(k > 0) + { + // estimate success ratio: + // Note lower bound uses a different formual internally + // from upper bound, have to adjust things to prevent + // fencepost errors: + BOOST_CHECK_CLOSE( + binomial_distribution::find_lower_bound_on_p( + N, k+1, Q), + p, tol); + BOOST_CHECK_CLOSE( + binomial_distribution::find_upper_bound_on_p( + N, k, P), + p, tol); + + if(Q < P) + { + // Default method (Clopper Pearson) + BOOST_CHECK( + binomial_distribution::find_lower_bound_on_p( + N, k, Q) + <= + binomial_distribution::find_upper_bound_on_p( + N, k, Q) + ); + BOOST_CHECK(( + binomial_distribution::find_lower_bound_on_p( + N, k, Q) + <= k/N) && (k/N <= + binomial_distribution::find_upper_bound_on_p( + N, k, Q)) + ); + // Bayes Method (Jeffreys Prior) + BOOST_CHECK( + binomial_distribution::find_lower_bound_on_p( + N, k, Q, binomial_distribution::jeffreys_prior_interval) + <= + binomial_distribution::find_upper_bound_on_p( + N, k, Q, binomial_distribution::jeffreys_prior_interval) + ); + BOOST_CHECK(( + binomial_distribution::find_lower_bound_on_p( + N, k, Q, binomial_distribution::jeffreys_prior_interval) + <= k/N) && (k/N <= + binomial_distribution::find_upper_bound_on_p( + N, k, Q, binomial_distribution::jeffreys_prior_interval)) + ); + } + else + { + // Default method (Clopper Pearson) + BOOST_CHECK( + binomial_distribution::find_lower_bound_on_p( + N, k, P) + <= + binomial_distribution::find_upper_bound_on_p( + N, k, P) + ); + BOOST_CHECK( + (binomial_distribution::find_lower_bound_on_p( + N, k, P) + <= k / N) && (k/N <= + binomial_distribution::find_upper_bound_on_p( + N, k, P)) + ); + // Bayes Method (Jeffreys Prior) + BOOST_CHECK( + binomial_distribution::find_lower_bound_on_p( + N, k, P, binomial_distribution::jeffreys_prior_interval) + <= + binomial_distribution::find_upper_bound_on_p( + N, k, P, binomial_distribution::jeffreys_prior_interval) + ); + BOOST_CHECK( + (binomial_distribution::find_lower_bound_on_p( + N, k, P, binomial_distribution::jeffreys_prior_interval) + <= k / N) && (k/N <= + binomial_distribution::find_upper_bound_on_p( + N, k, P, binomial_distribution::jeffreys_prior_interval)) + ); + } + } + // + // estimate sample size: + // + BOOST_CHECK_CLOSE( + binomial_distribution::find_minimum_number_of_trials( + k, p, P), + N, tol); + BOOST_CHECK_CLOSE( + binomial_distribution::find_maximum_number_of_trials( + k, p, Q), + N, tol); + } + + // Double check consistency of CDF and PDF by computing + // the finite sum: + RealType sum = 0; + for(unsigned i = 0; i <= k; ++i) + sum += pdf(bn, RealType(i)); + BOOST_CHECK_CLOSE( + sum, P, tol); + // And complement as well: + sum = 0; + for(RealType i = N; i > k; i -= 1) + sum += pdf(bn, i); + if(P < 0.99) + { + BOOST_CHECK_CLOSE( + sum, Q, tol); + } + else + { + // Not enough information content in P for Q to be meaningful + RealType tol = (std::max)(2 * Q, boost::math::tools::epsilon()); + BOOST_CHECK(sum < tol); + } +} + +template // Any floating-point type RealType. +void test_spots(RealType) +{ + // Basic sanity checks, test data is to double precision only + // so set tolerance to 100eps expressed as a persent, or + // 100eps of type double expressed as a persent, whichever + // is the larger. + + RealType tolerance = (std::max) + (boost::math::tools::epsilon(), + static_cast(std::numeric_limits::epsilon())); + tolerance *= 100 * 1000; + + cout << "Tolerance = " << tolerance << "%." << endl; + + // Sources of spot test values: + + // MathCAD defines pbinom(k, n, p) + // returns pr(X ,=k) when random variable X has the binomial distribution with parameters n and p. + // 0 <= k ,= n + // 0 <= p <= 1 + // P = pbinom(30, 500, 0.05) = 0.869147702104609 + + using boost::math::binomial_distribution; + using ::boost::math::cdf; + using ::boost::math::pdf; + + // Test binomial using cdf spot values from MathCAD. + // These test quantiles and complements as well. + test_spot( + static_cast(500), // Sample size, N + static_cast(30), // Number of successes, k + static_cast(0.05), // Probability of success, p + static_cast(0.869147702104609), // Probability of result (CDF), P + static_cast(1 - 0.869147702104609), // Q = 1 - P + tolerance); + + test_spot( + static_cast(500), // Sample size, N + static_cast(250), // Number of successes, k + static_cast(0.05), // Probability of success, p + static_cast(1), // Probability of result (CDF), P + static_cast(0), // Q = 1 - P + tolerance); + + test_spot( + static_cast(500), // Sample size, N + static_cast(470), // Number of successes, k + static_cast(0.95), // Probability of success, p + static_cast(0.176470742656766), // Probability of result (CDF), P + static_cast(1 - 0.176470742656766), // Q = 1 - P + tolerance * 10); // Note higher tolerance on this test! + + test_spot( + static_cast(500), // Sample size, N + static_cast(400), // Number of successes, k + static_cast(0.05), // Probability of success, p + static_cast(1), // Probability of result (CDF), P + static_cast(0), // Q = 1 - P + tolerance); + + test_spot( + static_cast(500), // Sample size, N + static_cast(400), // Number of successes, k + static_cast(0.9), // Probability of success, p + static_cast(1.80180425681923E-11), // Probability of result (CDF), P + static_cast(1 - 1.80180425681923E-11), // Q = 1 - P + tolerance); + + test_spot( + static_cast(500), // Sample size, N + static_cast(5), // Number of successes, k + static_cast(0.05), // Probability of success, p + static_cast(9.181808267643E-7), // Probability of result (CDF), P + static_cast(1 - 9.181808267643E-7), // Q = 1 - P + tolerance); + + test_spot( + static_cast(2), // Sample size, N + static_cast(1), // Number of successes, k + static_cast(0.5), // Probability of success, p + static_cast(0.75), // Probability of result (CDF), P + static_cast(0.25), // Q = 1 - P + tolerance); + + test_spot( + static_cast(8), // Sample size, N + static_cast(3), // Number of successes, k + static_cast(0.25), // Probability of success, p + static_cast(0.8861846923828125), // Probability of result (CDF), P + static_cast(1 - 0.8861846923828125), // Q = 1 - P + tolerance); + + test_spot( + static_cast(8), // Sample size, N + static_cast(0), // Number of successes, k + static_cast(0.25), // Probability of success, p + static_cast(0.1001129150390625), // Probability of result (CDF), P + static_cast(1 - 0.1001129150390625), // Q = 1 - P + tolerance); + + test_spot( + static_cast(8), // Sample size, N + static_cast(1), // Number of successes, k + static_cast(0.25), // Probability of success, p + static_cast(0.36708068847656244), // Probability of result (CDF), P + static_cast(1 - 0.36708068847656244), // Q = 1 - P + tolerance); + + test_spot( + static_cast(8), // Sample size, N + static_cast(4), // Number of successes, k + static_cast(0.25), // Probability of success, p + static_cast(0.9727020263671875), // Probability of result (CDF), P + static_cast(1 - 0.9727020263671875), // Q = 1 - P + tolerance); + + test_spot( + static_cast(8), // Sample size, N + static_cast(7), // Number of successes, k + static_cast(0.25), // Probability of success, p + static_cast(0.9999847412109375), // Probability of result (CDF), P + static_cast(1 - 0.9999847412109375), // Q = 1 - P + tolerance); + + // Tests on PDF follow: + BOOST_CHECK_CLOSE( + pdf(binomial_distribution(static_cast(20), static_cast(0.75)), + static_cast(10)), // k. + static_cast(0.00992227527967770583927631378173), // 0.00992227527967770583927631378173 + tolerance); + + BOOST_CHECK_CLOSE( + pdf(binomial_distribution(static_cast(20), static_cast(0.5)), + static_cast(10)), // k. + static_cast(0.17619705200195312500000000000000000000), // get k=10 0.049611376398388612 p = 0.25 + tolerance); + + // Binomial pdf Test values from + // http://www.adsciengineering.com/bpdcalc/index.php for example + // http://www.adsciengineering.com/bpdcalc/index.php?n=20&p=0.25&start=0&stop=20&Submit=Generate + // Appears to use at least 80-bit long double for 32 decimal digits accuracy, + // but loses accuracy of display if leading zeros? + // (if trailings zero then are exact values?) + // so useful for testing 64-bit double accuracy. + // P = 0.25, n = 20, k = 0 to 20 + + //0 C(20,0) * 0.25^0 * 0.75^20 0.00317121193893399322405457496643 + //1 C(20,1) * 0.25^1 * 0.75^19 0.02114141292622662149369716644287 + //2 C(20,2) * 0.25^2 * 0.75^18 0.06694780759971763473004102706909 + //3 C(20,3) * 0.25^3 * 0.75^17 0.13389561519943526946008205413818 + //4 C(20,4) * 0.25^4 * 0.75^16 0.18968545486586663173511624336242 + //5 C(20,5) * 0.25^5 * 0.75^15 0.20233115185692440718412399291992 + //6 C(20,6) * 0.25^6 * 0.75^14 0.16860929321410367265343666076660 + //7 C(20,7) * 0.25^7 * 0.75^13 0.11240619547606911510229110717773 + //8 C(20,8) * 0.25^8 * 0.75^12 0.06088668921620410401374101638793 + //9 C(20,9) * 0.25^9 * 0.75^11 0.02706075076275737956166267395019 + //10 C(20,10) * 0.25^10 * 0.75^10 0.00992227527967770583927631378173 + //11 C(20,11) * 0.25^11 * 0.75^9 0.00300675008475081995129585266113 + //12 C(20,12) * 0.25^12 * 0.75^8 0.00075168752118770498782396316528 + //13 C(20,13) * 0.25^13 * 0.75^7 0.00015419231203850358724594116210 + //14 C(20,14) * 0.25^14 * 0.75^6 0.00002569871867308393120765686035 + //15 C(20,15) * 0.25^15 * 0.75^5 0.00000342649582307785749435424804 + //16 C(20,16) * 0.25^16 * 0.75^4 0.00000035692664823727682232856750 + //17 C(20,17) * 0.25^17 * 0.75^3 0.00000002799424692057073116302490 + //18 C(20,18) * 0.25^18 * 0.75^2 0.00000000155523594003170728683471 + //19 C(20,19) * 0.25^19 * 0.75^1 0.00000000005456968210637569427490 + //20 C(20,20) * 0.25^20 * 0.75^0 0.00000000000090949470177292823791 + + + BOOST_CHECK_CLOSE( + pdf(binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(10)), // k. + static_cast(0.00992227527967770583927631378173), // k=10 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 0 use different formula - only exp so more accurate. + pdf(binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(0)), // k. + static_cast(0.00317121193893399322405457496643), // k=0 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 20 use different formula - only exp so more accurate. + pdf(binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(20)), // k == n. + static_cast(0.00000000000090949470177292823791), // k=20 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 1. + pdf(binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(1)), // k. + static_cast(0.02114141292622662149369716644287), // k=1 p = 0.25 + tolerance); + + // Some exact (probably) values. + BOOST_CHECK_CLOSE( + pdf(binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0)), // k. + static_cast(0.10011291503906250000000000000000), // k=0 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 1. + pdf(binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1)), // k. + static_cast(0.26696777343750000000000000000000), // k=1 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 2. + pdf(binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(2)), // k. + static_cast(0.31146240234375000000000000000000), // k=2 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 3. + pdf(binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(3)), // k. + static_cast(0.20764160156250000000000000000000), // k=3 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 7. + pdf(binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(7)), // k. + static_cast(0.00036621093750000000000000000000), // k=7 p = 0.25 + tolerance); + + BOOST_CHECK_CLOSE( // k = 8. + pdf(binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(8)), // k = n. + static_cast(0.00001525878906250000000000000000), // k=8 p = 0.25 + tolerance); + + RealType tol2 = boost::math::tools::epsilon() * 5 * 100; // 5 eps as a persent + binomial_distribution dist(static_cast(8), static_cast(0.25)); + RealType x = static_cast(0.125); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(8 * 0.25), tol2); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(8 * 0.25 * 0.75), tol2); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , static_cast(sqrt(8 * 0.25L * 0.75L)), tol2); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol2); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tol2); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tol2); + // mode: + BOOST_CHECK_CLOSE( + mode(dist) + , static_cast(std::floor(9 * 0.25)), tol2); + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist) + , static_cast(0.40824829046386301636621401245098L), (std::max)(tol2, static_cast(5e-29))); // test data has 32 digits only. + // kurtosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , static_cast(2.916666666666666666666666666666666666L), tol2); + // kurtosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist) + , static_cast(-0.08333333333333333333333333333333333333L), tol2); + // Check kurtosis_excess == kurtosis -3; + BOOST_CHECK_EQUAL(kurtosis(dist), static_cast(3) + kurtosis_excess(dist)); + + // special cases for PDF: + BOOST_CHECK_EQUAL( + pdf( + binomial_distribution(static_cast(8), static_cast(0)), + static_cast(0)), static_cast(1) + ); + BOOST_CHECK_EQUAL( + pdf( + binomial_distribution(static_cast(8), static_cast(0)), + static_cast(0.0001)), static_cast(0) + ); + BOOST_CHECK_EQUAL( + pdf( + binomial_distribution(static_cast(8), static_cast(1)), + static_cast(0.001)), static_cast(0) + ); + BOOST_CHECK_EQUAL( + pdf( + binomial_distribution(static_cast(8), static_cast(1)), + static_cast(8)), static_cast(1) + ); + BOOST_CHECK_EQUAL( + pdf( + binomial_distribution(static_cast(0), static_cast(0.25)), + static_cast(0)), static_cast(1) + ); + BOOST_CHECK_THROW( + pdf( + binomial_distribution(static_cast(-1), static_cast(0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + binomial_distribution(static_cast(8), static_cast(-0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + binomial_distribution(static_cast(8), static_cast(1.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(9)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(9)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + binomial_distribution(static_cast(8), static_cast(-0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + binomial_distribution(static_cast(8), static_cast(1.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + binomial_distribution(static_cast(8), static_cast(-0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + binomial_distribution(static_cast(8), static_cast(1.25)), + static_cast(0)), std::domain_error + ); + + BOOST_CHECK_EQUAL( + quantile( + binomial_distribution(static_cast(16), static_cast(0.25)), + static_cast(0.01)), // Less than cdf == pdf(binomial_distribution(16, 0.25), 0) + static_cast(0) // so expect zero as best approximation. + ); + + BOOST_CHECK_EQUAL( + cdf( + binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(8)), static_cast(1) + ); + BOOST_CHECK_EQUAL( + cdf( + binomial_distribution(static_cast(8), static_cast(0)), + static_cast(7)), static_cast(1) + ); + BOOST_CHECK_EQUAL( + cdf( + binomial_distribution(static_cast(8), static_cast(1)), + static_cast(7)), static_cast(0) + ); + + { + // This is a visual sanity check that everything is OK: + binomial_distribution my8dist(8., 0.25); // Note: double values (matching the distribution definition) avoid the need for any casting. + //cout << "mean(my8dist) = " << boost::math::mean(my8dist) << endl; // mean(my8dist) = 2 + //cout << "my8dist.trials() = " << my8dist.trials() << endl; // my8dist.trials() = 8 + //cout << "my8dist.success_fraction() = " << my8dist.success_fraction() << endl; // my8dist.success_fraction() = 0.25 + BOOST_CHECK_CLOSE(my8dist.trials(), static_cast(8), tol2); + BOOST_CHECK_CLOSE(my8dist.success_fraction(), static_cast(0.25), tol2); + + //{ + // int n = static_cast(boost::math::tools::real_cast(my8dist.trials())); + // RealType sumcdf = 0.; + // for (int k = 0; k <= n; k++) + // { + // cout << k << ' ' << pdf(my8dist, static_cast(k)); + // sumcdf += pdf(my8dist, static_cast(k)); + // cout << ' ' << sumcdf; + // cout << ' ' << cdf(my8dist, static_cast(k)); + // cout << ' ' << sumcdf - cdf(my8dist, static_cast(k)) << endl; + // } // for k + // } + // n = 8, p =0.25 + //k pdf cdf + //0 0.1001129150390625 0.1001129150390625 + //1 0.26696777343749994 0.36708068847656244 + //2 0.31146240234375017 0.67854309082031261 + //3 0.20764160156249989 0.8861846923828125 + //4 0.086517333984375 0.9727020263671875 + //5 0.023071289062499997 0.9957733154296875 + //6 0.0038452148437500009 0.9996185302734375 + //7 0.00036621093749999984 0.9999847412109375 + //8 1.52587890625e-005 1 1 0 + } +#define T RealType +#include "binomial_quantile.ipp" + + for(unsigned i = 0; i < binomial_quantile_data.size(); ++i) + { + using namespace boost::math::policies; + typedef policy > P1; + typedef policy > P2; + typedef policy > P3; + typedef policy > P4; + typedef policy > P5; + typedef policy > P6; + RealType tol = boost::math::tools::epsilon() * 500; + if(!boost::is_floating_point::value) + tol *= 10; // no lanczos approximation implies less accuracy + // + // Check full real value first: + // + binomial_distribution p1(binomial_quantile_data[i][0], binomial_quantile_data[i][1]); + RealType x = quantile(p1, binomial_quantile_data[i][2]); + BOOST_CHECK_CLOSE_FRACTION(x, binomial_quantile_data[i][3], tol); + x = quantile(complement(p1, binomial_quantile_data[i][2])); + BOOST_CHECK_CLOSE_FRACTION(x, binomial_quantile_data[i][4], tol); + // + // Now with round down to integer: + // + binomial_distribution p2(binomial_quantile_data[i][0], binomial_quantile_data[i][1]); + x = quantile(p2, binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, floor(binomial_quantile_data[i][3])); + x = quantile(complement(p2, binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, floor(binomial_quantile_data[i][4])); + // + // Now with round up to integer: + // + binomial_distribution p3(binomial_quantile_data[i][0], binomial_quantile_data[i][1]); + x = quantile(p3, binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, ceil(binomial_quantile_data[i][3])); + x = quantile(complement(p3, binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, ceil(binomial_quantile_data[i][4])); + // + // Now with round to integer "outside": + // + binomial_distribution p4(binomial_quantile_data[i][0], binomial_quantile_data[i][1]); + x = quantile(p4, binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, binomial_quantile_data[i][2] < 0.5f ? floor(binomial_quantile_data[i][3]) : ceil(binomial_quantile_data[i][3])); + x = quantile(complement(p4, binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, binomial_quantile_data[i][2] < 0.5f ? ceil(binomial_quantile_data[i][4]) : floor(binomial_quantile_data[i][4])); + // + // Now with round to integer "inside": + // + binomial_distribution p5(binomial_quantile_data[i][0], binomial_quantile_data[i][1]); + x = quantile(p5, binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, binomial_quantile_data[i][2] < 0.5f ? ceil(binomial_quantile_data[i][3]) : floor(binomial_quantile_data[i][3])); + x = quantile(complement(p5, binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, binomial_quantile_data[i][2] < 0.5f ? floor(binomial_quantile_data[i][4]) : ceil(binomial_quantile_data[i][4])); + // + // Now with round to nearest integer: + // + binomial_distribution p6(binomial_quantile_data[i][0], binomial_quantile_data[i][1]); + x = quantile(p6, binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, floor(binomial_quantile_data[i][3] + 0.5f)); + x = quantile(complement(p6, binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, floor(binomial_quantile_data[i][4] + 0.5f)); + } + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + // Check that can generate binomial distribution using one convenience methods: + binomial_distribution<> mybn2(1., 0.5); // Using default RealType double. + // but that + // boost::math::binomial mybn1(1., 0.5); // Using typedef fails + // error C2039: 'binomial' : is not a member of 'boost::math' + + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating point type). +#ifdef TEST_FLOAT + test_spots(0.0F); // Test float. +#endif +#ifdef TEST_DOUBLE + test_spots(0.0); // Test double. +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_spots(0.0L); // Test long double. +#endif +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_binomial.exe" +Running 1 test case... +Tolerance = 0.0119209%. +Tolerance = 2.22045e-011%. +Tolerance = 2.22045e-011%. +Tolerance = 2.22045e-011%. +*** No errors detected + +*/ diff --git a/test/test_binomial_coeff.cpp b/test/test_binomial_coeff.cpp new file mode 100644 index 000000000..f8557a4f8 --- /dev/null +++ b/test/test_binomial_coeff.cpp @@ -0,0 +1,197 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include "functor.hpp" +#include + +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the function binomial_coefficient. +// The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these function. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*large.*", // test data group + ".*", 100, 20); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*large.*", // test data group + ".*", 200, 100); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 100, 30); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 2, 1); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +T binomial_wrapper(T n, T k) +{ + return boost::math::binomial_coefficient( + boost::math::tools::real_cast(n), + boost::math::tools::real_cast(k)); +} + +template +void test_binomial(T, const char* type_name) +{ + using namespace std; + + typedef T (*func_t)(T, T); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + func_t f = &binomial_wrapper; +#else + func_t f = &binomial_wrapper; +#endif + +#include "binomial_data.ipp" + + boost::math::tools::test_result result = boost::math::tools::test( + binomial_data, + bind_func(f, 0, 1), + extract_result(2)); + + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "Test results for small arguments and type " << type_name << std::endl << std::endl; + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + handle_test_result(result, binomial_data[result.worst()], result.worst(), type_name, "binomial_coefficient", "Binomials: small arguments"); + std::cout << std::endl; + +#include "binomial_large_data.ipp" + + result = boost::math::tools::test( + binomial_large_data, + bind_func(f, 0, 1), + extract_result(2)); + + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" + "Test results for large arguments and type " << type_name << std::endl << std::endl; + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + handle_test_result(result, binomial_large_data[result.worst()], result.worst(), type_name, "binomial_coefficient", "Binomials: large arguments"); + std::cout << std::endl; +} + +template +void test_spots(T, const char* name) +{ + T tolerance = boost::math::tools::epsilon() * 50 * 100; // 50 eps as a percentage + if(!std::numeric_limits::is_specialized) + tolerance *= 10; // beta function not so accurate without lanczos support + + std::cout << "Testing spot checks for type " << name << " with tolerance " << tolerance << "%\n"; + + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 0), static_cast(1)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 1), static_cast(20)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 2), static_cast(190)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 3), static_cast(1140)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 20), static_cast(1)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 19), static_cast(20)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 18), static_cast(190)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 17), static_cast(1140)); + BOOST_CHECK_EQUAL(boost::math::binomial_coefficient(20, 10), static_cast(184756L)); + + BOOST_CHECK_CLOSE(boost::math::binomial_coefficient(100, 5), static_cast(7.528752e7L), tolerance); + BOOST_CHECK_CLOSE(boost::math::binomial_coefficient(100, 81), static_cast(1.323415729392122674e20L), tolerance); + + BOOST_CHECK_CLOSE(boost::math::binomial_coefficient(300, 3), static_cast(4.45510e6L), tolerance); + BOOST_CHECK_CLOSE(boost::math::binomial_coefficient(300, 7), static_cast(4.043855956140000e13L), tolerance); + BOOST_CHECK_CLOSE(boost::math::binomial_coefficient(300, 290), static_cast(1.3983202332417017700000000e18L), tolerance); + BOOST_CHECK_CLOSE(boost::math::binomial_coefficient(300, 275), static_cast(1.953265141442868389822364184842211512000000e36L), tolerance); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + + test_spots(1.0F, "float"); + test_spots(1.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(1.0L, "long double"); + test_spots(boost::math::concepts::real_concept(), "real_concept"); +#endif + + test_binomial(1.0F, "float"); + test_binomial(1.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_binomial(1.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_binomial(boost::math::concepts::real_concept(), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_carlson.cpp b/test/test_carlson.cpp new file mode 100644 index 000000000..f29ca77d1 --- /dev/null +++ b/test/test_carlson.cpp @@ -0,0 +1,411 @@ +// Copyright 2006 John Maddock +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Carlson Elliptic Integrals. +// There are two sets of tests, spot +// tests which compare our results with the published test values, +// in Numerical Computation of Real or Complex Elliptic Integrals, +// B. C. Carlson: http://arxiv.org/abs/math.CA/9409227 +// However, the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // real long doubles: + // + if(boost::math::policies::digits >() > 53) + { + add_expected_result( + ".*", // compiler + ".*", // stdlib + BOOST_PLATFORM, // platform + largest_type, // test type(s) + ".*RJ.*", // test data group + ".*", 1000, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + BOOST_PLATFORM, // platform + "real_concept", // test type(s) + ".*RJ.*", // test data group + ".*", 1000, 50); // test function + } + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*RJ.*", // test data group + ".*", 180, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*RJ.*", // test data group + ".*", 180, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 15, 8); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 15, 8); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_ellint_rf(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp)(value_type, value_type, value_type) = boost::math::ellint_rf; +#else + value_type (*fp)(value_type, value_type, value_type) = boost::math::ellint_rf; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_rf", test); + + std::cout << std::endl; + +} + +template +void do_test_ellint_rc(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp)(value_type, value_type) = boost::math::ellint_rc; +#else + value_type (*fp)(value_type, value_type) = boost::math::ellint_rc; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_rc", test); + + std::cout << std::endl; + +} + +template +void do_test_ellint_rj(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp)(value_type, value_type, value_type, value_type) = boost::math::ellint_rj; +#else + value_type (*fp)(value_type, value_type, value_type, value_type) = boost::math::ellint_rj; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp, 0, 1, 2, 3), + extract_result(4)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_rf", test); + + std::cout << std::endl; + +} + +template +void do_test_ellint_rd(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp)(value_type, value_type, value_type) = boost::math::ellint_rd; +#else + value_type (*fp)(value_type, value_type, value_type) = boost::math::ellint_rd; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_rd", test); + + std::cout << std::endl; + +} + +template +void test_spots(T, const char* type_name) +{ + using namespace boost::math; + using namespace std; + // Spot values from Numerical Computation of Real or Complex + // Elliptic Integrals, B. C. Carlson: http://arxiv.org/abs/math.CA/9409227 + // RF: + T tolerance = (std::max)(T(1e-13f), tools::epsilon() * 5) * 100; // Note 5eps expressed as a persentage!!! + T eps2 = 2 * tools::epsilon(); + BOOST_CHECK_CLOSE(ellint_rf(T(1), T(2), T(0)), T(1.3110287771461), tolerance); + BOOST_CHECK_CLOSE(ellint_rf(T(0.5), T(1), T(0)), T(1.8540746773014), tolerance); + BOOST_CHECK_CLOSE(ellint_rf(T(2), T(3), T(4)), T(0.58408284167715), tolerance); + // RC: + BOOST_CHECK_CLOSE_FRACTION(ellint_rc(T(0), T(1)/4), boost::math::constants::pi(), eps2); + BOOST_CHECK_CLOSE_FRACTION(ellint_rc(T(9)/4, T(2)), log(T(2)), eps2); + BOOST_CHECK_CLOSE_FRACTION(ellint_rc(T(1)/4, T(-2)), log(T(2))/3, eps2); + // RJ: + BOOST_CHECK_CLOSE(ellint_rj(T(0), T(1), T(2), T(3)), T(0.77688623778582), tolerance); + BOOST_CHECK_CLOSE(ellint_rj(T(2), T(3), T(4), T(5)), T(0.14297579667157), tolerance); + BOOST_CHECK_CLOSE(ellint_rj(T(2), T(3), T(4), T(-0.5)), T(0.24723819703052), tolerance); + BOOST_CHECK_CLOSE(ellint_rj(T(2), T(3), T(4), T(-5)), T(-0.12711230042964), tolerance); + // RD: + BOOST_CHECK_CLOSE(ellint_rd(T(0), T(2), T(1)), T(1.7972103521034), tolerance); + BOOST_CHECK_CLOSE(ellint_rd(T(2), T(3), T(4)), T(0.16510527294261), tolerance); + + // Sanity/consistency checks from Numerical Computation of Real or Complex + // Elliptic Integrals, B. C. Carlson: http://arxiv.org/abs/math.CA/9409227 + std::tr1::mt19937 ran; + std::tr1::uniform_real ur(0, 1000); + T eps40 = 40 * tools::epsilon(); + + for(unsigned i = 0; i < 1000; ++i) + { + T x = ur(ran); + T y = ur(ran); + T z = ur(ran); + T lambda = ur(ran); + T mu = x * y / lambda; + // RF, eq 49: + T s1 = ellint_rf(x+lambda, y+lambda, lambda) + + ellint_rf(x + mu, y + mu, mu); + T s2 = ellint_rf(x, y, T(0)); + BOOST_CHECK_CLOSE_FRACTION(s1, s2, eps40); + // RC is degenerate case of RF: + s1 = ellint_rc(x, y); + s2 = ellint_rf(x, y, y); + BOOST_CHECK_CLOSE_FRACTION(s1, s2, eps40); + // RC, eq 50 (Note have to assume y = x): + T mu2 = x * x / lambda; + s1 = ellint_rc(lambda, x+lambda) + + ellint_rc(mu2, x + mu2); + s2 = ellint_rc(T(0), x); + BOOST_CHECK_CLOSE_FRACTION(s1, s2, eps40); + /* + T p = ????; // no closed form for a, b and p??? + s1 = ellint_rj(x+lambda, y+lambda, lambda, p+lambda) + + ellint_rj(x+mu, y+mu, mu, p+mu); + s2 = ellint_rj(x, y, T(0), p) + - 3 * ellint_rc(a, b); + */ + // RD, eq 53: + s1 = ellint_rd(lambda, x+lambda, y+lambda) + + ellint_rd(mu, x+mu, y+mu); + s2 = ellint_rd(T(0), x, y) + - 3 / (y * sqrt(x+y+lambda+mu)); + BOOST_CHECK_CLOSE_FRACTION(s1, s2, eps40); + // RD is degenerate case of RJ: + s1 = ellint_rd(x, y, z); + s2 = ellint_rj(x, y, z, z); + BOOST_CHECK_CLOSE_FRACTION(s1, s2, eps40); + } + + // + // Now random spot values: + // +#include "ellint_rf_data.ipp" + + do_test_ellint_rf(ellint_rf_data, type_name, "RF: Random data"); + +#include "ellint_rc_data.ipp" + + do_test_ellint_rc(ellint_rc_data, type_name, "RC: Random data"); + +#include "ellint_rj_data.ipp" + + do_test_ellint_rj(ellint_rj_data, type_name, "RJ: Random data"); + +#include "ellint_rd_data.ipp" + + do_test_ellint_rd(ellint_rd_data, type_name, "RD: Random data"); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + + boost::math::ellint_rj(1.778e-31, 1.407e+18, 10.05, -4.83e-10); + + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spots(boost::math::concepts::real_concept(0), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} + +/* + +test_carlson.cpp +Linking... +Embedding manifest... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_carlson.exe" +Running 1 test case... +Tests run with Microsoft Visual C++ version 8.0, Dinkumware standard library version 405, Win32 +Testing: RF: Random data +boost::math::ellint_rf Max = 0 RMS Mean=0 +Testing: RC: Random data +boost::math::ellint_rc Max = 0 RMS Mean=0 +Testing: RJ: Random data +boost::math::ellint_rf Max = 0 RMS Mean=0 +Testing: RD: Random data +boost::math::ellint_rd Max = 0 RMS Mean=0 +Testing: RF: Random data +boost::math::ellint_rf Max = 2.949 RMS Mean=0.7498 + worst case at row: 377 + { 3.418e+025, 2.594e-005, 3.264e-012, 6.169e-012 } +Testing: RC: Random data +boost::math::ellint_rc Max = 2.396 RMS Mean=0.6283 + worst case at row: 10 + { 1.97e-029, 3.224e-025, 2.753e+012 } +Testing: RJ: Random data +boost::math::ellint_rf Max = 152.9 RMS Mean=11.15 + worst case at row: 633 + { 1.876e+016, 0.000278, 3.796e-006, -4.412e-005, -1.656e-005 } +Testing: RD: Random data +boost::math::ellint_rd Max = 2.586 RMS Mean=0.8614 + worst case at row: 45 + { 2.111e-020, 8.757e-026, 1.923e-023, 1.004e+033 } +Testing: RF: Random data +boost::math::ellint_rf Max = 2.949 RMS Mean=0.7498 + worst case at row: 377 + { 3.418e+025, 2.594e-005, 3.264e-012, 6.169e-012 } +Testing: RC: Random data +boost::math::ellint_rc Max = 2.396 RMS Mean=0.6283 + worst case at row: 10 + { 1.97e-029, 3.224e-025, 2.753e+012 } +Testing: RJ: Random data +boost::math::ellint_rf Max = 152.9 RMS Mean=11.15 + worst case at row: 633 + { 1.876e+016, 0.000278, 3.796e-006, -4.412e-005, -1.656e-005 } +Testing: RD: Random data +boost::math::ellint_rd Max = 2.586 RMS Mean=0.8614 + worst case at row: 45 + { 2.111e-020, 8.757e-026, 1.923e-023, 1.004e+033 } +Testing: RF: Random data +boost::math::ellint_rf Max = 2.949 RMS Mean=0.7498 + worst case at row: 377 + { 3.418e+025, 2.594e-005, 3.264e-012, 6.169e-012 } +Testing: RC: Random data +boost::math::ellint_rc Max = 2.396 RMS Mean=0.6283 + worst case at row: 10 + { 1.97e-029, 3.224e-025, 2.753e+012 } +Testing: RJ: Random data +boost::math::ellint_rf Max = 152.9 RMS Mean=11.15 + worst case at row: 633 + { 1.876e+016, 0.000278, 3.796e-006, -4.412e-005, -1.656e-005 } +Testing: RD: Random data +boost::math::ellint_rd Max = 2.586 RMS Mean=0.8614 + worst case at row: 45 + { 2.111e-020, 8.757e-026, 1.923e-023, 1.004e+033 } +*** No errors detected + +*/ diff --git a/test/test_cauchy.cpp b/test/test_cauchy.cpp new file mode 100644 index 000000000..14e6cea71 --- /dev/null +++ b/test/test_cauchy.cpp @@ -0,0 +1,756 @@ +// Copyright John Maddock 2006, 2007. +// Copyright Paul A. Bristow 2007 + +// 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) + +// test_cauchy.cpp Test Cauchy distribution + +#ifdef _MSC_VER +# pragma warning(disable: 4100) // unreferenced formal parameter. +// Seems an entirely spurious warning - formal parameter T IS used - get error if /* T */ +//# pragma warning(disable: 4535) // calling _set_se_translator() requires /EHa (in Boost.test) +// Enable C++ Exceptions Yes With SEH Exceptions (/EHa) prevents warning 4535. +# pragma warning(disable: 4127) // conditional expression is constant +#endif + +// #define BOOST_MATH_ASSERT_UNDEFINED_POLICY false +// To compile even if Cauchy mean is used. + +#include // for real_concept +#include + using boost::math::cauchy_distribution; + +#include // Boost.Test +#include + +#include + using std::cout; + using std::endl; + +template +void test_spots(RealType T) +{ + // Check some bad parameters to the distribution, + BOOST_CHECK_THROW(boost::math::cauchy_distribution nbad1(0, 0), std::domain_error); // zero sd + BOOST_CHECK_THROW(boost::math::cauchy_distribution nbad1(0, -1), std::domain_error); // negative scale (shape) + cauchy_distribution C01; + + BOOST_CHECK_EQUAL(C01.location(), 0); // Check standard values. + BOOST_CHECK_EQUAL(C01.scale(), 1); + + // Tests on extreme values of random variate x, if has numeric_limit infinity etc. + if(std::numeric_limits::has_infinity) + { + BOOST_CHECK_EQUAL(pdf(C01, +std::numeric_limits::infinity()), 0); // x = + infinity, pdf = 0 + BOOST_CHECK_EQUAL(pdf(C01, -std::numeric_limits::infinity()), 0); // x = - infinity, pdf = 0 + BOOST_CHECK_EQUAL(cdf(C01, +std::numeric_limits::infinity()), 1); // x = + infinity, cdf = 1 + BOOST_CHECK_EQUAL(cdf(C01, -std::numeric_limits::infinity()), 0); // x = - infinity, cdf = 0 + BOOST_CHECK_EQUAL(cdf(complement(C01, +std::numeric_limits::infinity())), 0); // x = + infinity, cdf = 0 + BOOST_CHECK_EQUAL(cdf(complement(C01, -std::numeric_limits::infinity())), 1); // x = - infinity, cdf = 1 + BOOST_CHECK_THROW(boost::math::cauchy_distribution nbad1(std::numeric_limits::infinity(), static_cast(1)), std::domain_error); // +infinite mean + BOOST_CHECK_THROW(boost::math::cauchy_distribution nbad1(-std::numeric_limits::infinity(), static_cast(1)), std::domain_error); // -infinite mean + BOOST_CHECK_THROW(boost::math::cauchy_distribution nbad1(static_cast(0), std::numeric_limits::infinity()), std::domain_error); // infinite sd + } + + if (std::numeric_limits::has_quiet_NaN) + { // No longer allow x to be NaN, so these tests should throw. + BOOST_CHECK_THROW(pdf(C01, +std::numeric_limits::quiet_NaN()), std::domain_error); // x = NaN + BOOST_CHECK_THROW(cdf(C01, +std::numeric_limits::quiet_NaN()), std::domain_error); // x = NaN + BOOST_CHECK_THROW(cdf(complement(C01, +std::numeric_limits::quiet_NaN())), std::domain_error); // x = + infinity + BOOST_CHECK_THROW(quantile(C01, +std::numeric_limits::quiet_NaN()), std::domain_error); // p = + infinity + BOOST_CHECK_THROW(quantile(complement(C01, +std::numeric_limits::quiet_NaN())), std::domain_error); // p = + infinity + } + + // Basic sanity checks. + // 50eps as a percentage, up to a maximum of double precision + // (that's the limit of our test data). + RealType tolerance = (std::max)( + static_cast(boost::math::tools::epsilon()), + boost::math::tools::epsilon()); + tolerance *= 50 * 100; + + cout << "Tolerance for type " << typeid(T).name() << " is " << tolerance << " %" << endl; + + // These first sets of test values were calculated by punching numbers + // into a calculator, and using the formulas on the Mathworld website: + // http://mathworld.wolfram.com/CauchyDistribution.html + // and values from MathCAD 200 Professional, + // CDF: + // + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(0.125)), // x + static_cast(0.53958342416056554201085167134004L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(-0.125)), // x + static_cast(0.46041657583943445798914832865996L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(0.5)), // x + static_cast(0.64758361765043327417540107622474L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(-0.5)), // x + static_cast(0.35241638234956672582459892377526L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(1.0)), // x + static_cast(0.75), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(-1.0)), // x + static_cast(0.25), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(2.0)), // x + static_cast(0.85241638234956672582459892377526L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(-2.0)), // x + static_cast(0.14758361765043327417540107622474L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(10.0)), // x + static_cast(0.9682744825694464304850228813987L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(), + static_cast(-10.0)), // x + static_cast(0.031725517430553569514977118601302L), // probability. + tolerance); // % + + // + // Complements: + // + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(0.125))), // x + static_cast(0.46041657583943445798914832865996L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(-0.125))), // x + static_cast(0.53958342416056554201085167134004L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(0.5))), // x + static_cast(0.35241638234956672582459892377526L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(-0.5))), // x + static_cast(0.64758361765043327417540107622474L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(1.0))), // x + static_cast(0.25), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(-1.0))), // x + static_cast(0.75), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(2.0))), // x + static_cast(0.14758361765043327417540107622474L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(-2.0))), // x + static_cast(0.85241638234956672582459892377526L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(10.0))), // x + static_cast(0.031725517430553569514977118601302L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(), + static_cast(-10.0))), // x + static_cast(0.9682744825694464304850228813987L), // probability. + tolerance); // % + + // + // Quantiles: + // + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.53958342416056554201085167134004L)), + static_cast(0.125), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.46041657583943445798914832865996L)), + static_cast(-0.125), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.64758361765043327417540107622474L)), + static_cast(0.5), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.35241638234956672582459892377526)), + static_cast(-0.5), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.75)), + static_cast(1.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.25)), + static_cast(-1.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.85241638234956672582459892377526L)), + static_cast(2.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.14758361765043327417540107622474L)), + static_cast(-2.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.9682744825694464304850228813987L)), + static_cast(10.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(), + static_cast(0.031725517430553569514977118601302L)), + static_cast(-10.0), + tolerance); // % + + // + // Quantile from complement: + // + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.46041657583943445798914832865996L))), + static_cast(0.125), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.53958342416056554201085167134004L))), + static_cast(-0.125), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.35241638234956672582459892377526L))), + static_cast(0.5), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.64758361765043327417540107622474L))), + static_cast(-0.5), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.25))), + static_cast(1.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.75))), + static_cast(-1.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.14758361765043327417540107622474L))), + static_cast(2.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.85241638234956672582459892377526L))), + static_cast(-2.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.031725517430553569514977118601302L))), + static_cast(10.0), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(), + static_cast(0.9682744825694464304850228813987L))), + static_cast(-10.0), + tolerance); // % + + // + // PDF + // + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(0.125)), // x + static_cast(0.31341281101173235351410956479511L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(-0.125)), // x + static_cast(0.31341281101173235351410956479511L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(0.5)), // x + static_cast(0.25464790894703253723021402139602L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(-0.5)), // x + static_cast(0.25464790894703253723021402139602L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(1.0)), // x + static_cast(0.15915494309189533576888376337251L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(-1.0)), // x + static_cast(0.15915494309189533576888376337251L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(2.0)), // x + static_cast(0.063661977236758134307553505349006L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(-2.0)), // x + static_cast(0.063661977236758134307553505349006L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(10.0)), // x + static_cast(0.0031515830315226799162155200667825L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(), + static_cast(-10.0)), // x + static_cast(0.0031515830315226799162155200667825L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(2, 5), + static_cast(1)), // x + static_cast(0.061213439650728975295724524374044L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + cauchy_distribution(-2, 0.25), + static_cast(1)), // x + static_cast(0.0087809623774838805941453110826215L), // probability. + tolerance); // % + + // + // The following test values were calculated using MathCad, + // precision seems to be about 10^-13. + // + tolerance = (std::max)(tolerance, static_cast(1e-11)); + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(1, 1), + static_cast(0.125)), // x + static_cast(0.271189304634946L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(1, 1), + static_cast(0.125))), // x + static_cast(1 - 0.271189304634946L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(1, 1), + static_cast(0.271189304634946L)), // x + static_cast(0.125), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(1, 1), + static_cast(1 - 0.271189304634946L))), // x + static_cast(0.125), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(0.125)), // x + static_cast(0.539583424160566L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(0.5)), // x + static_cast(0.647583617650433L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(1)), // x + static_cast(0.750000000000000), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(2)), // x + static_cast(0.852416382349567), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(10)), // x + static_cast(0.968274482569447), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(100)), // x + static_cast(0.996817007235092), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(-0.125)), // x + static_cast(0.460416575839434), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(-0.5)), // x + static_cast(0.352416382349567), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(-1)), // x + static_cast(0.2500000000000000), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(-2)), // x + static_cast(0.147583617650433), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(-10)), // x + static_cast(0.031725517430554), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(0, 1), + static_cast(-100)), // x + static_cast(3.18299276490824E-3), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(1, 5), + static_cast(1.25)), // x + static_cast(0.515902251256176), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(2, 2), + static_cast(1.25)), // x + static_cast(0.385799748780092), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(4, 0.125), + static_cast(3)), // x + static_cast(0.039583424160566), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(-2, static_cast(0.0001)), + static_cast(-3)), // x + static_cast(3.1830988512275777e-5), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(4, 50), + static_cast(-3)), // x + static_cast(0.455724386698215), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(-4, 50), + static_cast(-3)), // x + static_cast(0.506365349100973), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(1, 5), + static_cast(1.25))), // x + static_cast(1-0.515902251256176), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(2, 2), + static_cast(1.25))), // x + static_cast(1-0.385799748780092), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(4, 0.125), + static_cast(3))), // x + static_cast(1-0.039583424160566), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + cauchy_distribution(-2, static_cast(0.001)), + static_cast(-3)), // x + static_cast(0.000318309780080539), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(4, 50), + static_cast(-3))), // x + static_cast(1-0.455724386698215), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(cauchy_distribution(-4, 50), + static_cast(-3))), // x + static_cast(1-0.506365349100973), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(1, 5), + static_cast(0.515902251256176)), // x + static_cast(1.25), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(2, 2), + static_cast(0.385799748780092)), // x + static_cast(1.25), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(4, 0.125), + static_cast(0.039583424160566)), // x + static_cast(3), // probability. + tolerance); // % + /* + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(-2, 0.0001), + static_cast(-3)), // x + static_cast(0.000015915494296), // probability. + tolerance); // % + */ + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(4, 50), + static_cast(0.455724386698215)), // x + static_cast(-3), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(-4, 50), + static_cast(0.506365349100973)), // x + static_cast(-3), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(1, 5), + static_cast(1-0.515902251256176))), // x + static_cast(1.25), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(2, 2), + static_cast(1-0.385799748780092))), // x + static_cast(1.25), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(4, 0.125), + static_cast(1-0.039583424160566))), // x + static_cast(3), // probability. + tolerance); // % + /* + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + cauchy_distribution(-2, 0.0001), + static_cast(-3)), // x + static_cast(0.000015915494296), // probability. + tolerance); // % + */ + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(4, 50), + static_cast(1-0.455724386698215))), // x + static_cast(-3), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(cauchy_distribution(-4, 50), + static_cast(1-0.506365349100973))), // x + static_cast(-3), // probability. + tolerance); // % + + cauchy_distribution dist; // default (0, 1) + BOOST_CHECK_EQUAL( + mode(dist), + static_cast(0)); + BOOST_CHECK_EQUAL( + median(dist), + static_cast(0)); + // + // Things that now don't compile (BOOST-STATIC_ASSERT_FAILURE) by default. + // #define BOOST_MATH_ASSERT_UNDEFINED_POLICY false + // To compile even if Cauchy mean is used. + // See policy reference, mathematically undefined function policies + // + //BOOST_CHECK_THROW( + // mean(dist), + // std::domain_error); + //BOOST_CHECK_THROW( + // variance(dist), + // std::domain_error); + //BOOST_CHECK_THROW( + // standard_deviation(dist), + // std::domain_error); + //BOOST_CHECK_THROW( + // kurtosis(dist), + // std::domain_error); + //BOOST_CHECK_THROW( + // kurtosis_excess(dist), + // std::domain_error); + //BOOST_CHECK_THROW( + // skewness(dist), + // std::domain_error); + + BOOST_CHECK_THROW( + quantile(dist, RealType(0.0)), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(1.0)), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(complement(dist, RealType(0.0))), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(complement(dist, RealType(1.0))), + std::overflow_error); + + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + // Check that can generate cauchy distribution using the two convenience methods: + boost::math::cauchy mycd1(1.); // Using typedef + cauchy_distribution<> mycd2(1.); // Using default RealType double. + cauchy_distribution<> C01; // Using default RealType double for Standard Cauchy. + BOOST_CHECK_EQUAL(C01.location(), 0); // Check standard values. + BOOST_CHECK_EQUAL(C01.scale(), 1); + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + + +/* +Output: + +Running 1 test case... +Tolerance for type float is 0.000596046 % +Tolerance for type double is 1.11022e-012 % +Tolerance for type long double is 1.11022e-012 % +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-012 % +*** No errors detected + + +*/ diff --git a/test/test_cbrt.cpp b/test/test_cbrt.cpp new file mode 100644 index 000000000..adc30da5c --- /dev/null +++ b/test/test_cbrt.cpp @@ -0,0 +1,135 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the function cbrt. The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; + + add_expected_result( + "Borland.*", // compiler + ".*", // stdlib + ".*", // platform + "long double", // test type(s) + ".*", // test data group + ".*", 10, 6); // test function +} + +struct negative_cbrt +{ + negative_cbrt(){} + + template + typename S::value_type operator()(const S& row) + { + return boost::math::cbrt(-row[1]); + } +}; + + +template +void do_test_cbrt(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::cbrt; +#else + pg funcp = boost::math::cbrt; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test cbrt against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 1), + extract_result(0)); + result += boost::math::tools::test( + data, + negative_cbrt(), + negate(extract_result(0))); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::cbrt", test_name); + std::cout << std::endl; +} +template +void test_cbrt(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "cbrt_data.ipp" + + do_test_cbrt(cbrt_data, name, "cbrt Function"); + +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + test_cbrt(0.1F, "float"); + test_cbrt(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_cbrt(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_cbrt(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif + return 0; +} + + diff --git a/test/test_chi_squared.cpp b/test/test_chi_squared.cpp new file mode 100644 index 000000000..49a788e16 --- /dev/null +++ b/test/test_chi_squared.cpp @@ -0,0 +1,560 @@ +// test_chi_squared.cpp + +// Copyright Paul A. Bristow 2006. +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include // for real_concept +using ::boost::math::concepts::real_concept; + +#include // for chi_squared_distribution +using boost::math::chi_squared_distribution; +using boost::math::chi_squared; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE + +#include +using std::cout; +using std::endl; +#include +using std::numeric_limits; + +template +RealType naive_pdf(RealType df, RealType x) +{ + using namespace std; // For ADL of std functions. + RealType e = log(x) * ((df / 2) - 1) - (x / 2) - boost::math::lgamma(df/2); + e -= log(static_cast(2)) * df / 2; + return exp(e); +} + +template +void test_spot( + RealType df, // Degrees of freedom + RealType cs, // Chi Square statistic + RealType P, // CDF + RealType Q, // Complement of CDF + RealType tol) // Test tolerance +{ + boost::math::chi_squared_distribution dist(df); + BOOST_CHECK_CLOSE( + cdf(dist, cs), P, tol); + BOOST_CHECK_CLOSE( + pdf(dist, cs), naive_pdf(dist.degrees_of_freedom(), cs), tol); + if((P < 0.99) && (Q < 0.99)) + { + // + // We can only check this if P is not too close to 1, + // so that we can guarentee Q is free of error: + // + BOOST_CHECK_CLOSE( + cdf(complement(dist, cs)), Q, tol); + BOOST_CHECK_CLOSE( + quantile(dist, P), cs, tol); + BOOST_CHECK_CLOSE( + quantile(complement(dist, Q)), cs, tol); + } +} + +// +// This test data is taken from the tables of upper and lower +// critical values of the Chi Squared distribution available +// at http://www.itl.nist.gov/div898/handbook/eda/section3/eda3674.htm +// +double q[] = { 0.10, 0.05, 0.025, 0.01, 0.001 }; +double upper_critical_values[][6] = { + { 1, 2.706, 3.841, 5.024, 6.635, 10.828 }, + { 2, 4.605, 5.991, 7.378, 9.210, 13.816 }, + { 3, 6.251, 7.815, 9.348, 11.345, 16.266 }, + { 4, 7.779, 9.488, 11.143, 13.277, 18.467 }, + { 5, 9.236, 11.070, 12.833, 15.086, 20.515 }, + { 6, 10.645, 12.592, 14.449, 16.812, 22.458 }, + { 7, 12.017, 14.067, 16.013, 18.475, 24.322 }, + { 8, 13.362, 15.507, 17.535, 20.090, 26.125 }, + { 9, 14.684, 16.919, 19.023, 21.666, 27.877 }, + { 10, 15.987, 18.307, 20.483, 23.209, 29.588 }, + { 11, 17.275, 19.675, 21.920, 24.725, 31.264 }, + { 12, 18.549, 21.026, 23.337, 26.217, 32.910 }, + { 13, 19.812, 22.362, 24.736, 27.688, 34.528 }, + { 14, 21.064, 23.685, 26.119, 29.141, 36.123 }, + { 15, 22.307, 24.996, 27.488, 30.578, 37.697 }, + { 16, 23.542, 26.296, 28.845, 32.000, 39.252 }, + { 17, 24.769, 27.587, 30.191, 33.409, 40.790 }, + { 18, 25.989, 28.869, 31.526, 34.805, 42.312 }, + { 19, 27.204, 30.144, 32.852, 36.191, 43.820 }, + { 20, 28.412, 31.410, 34.170, 37.566, 45.315 }, + { 21, 29.615, 32.671, 35.479, 38.932, 46.797 }, + { 22, 30.813, 33.924, 36.781, 40.289, 48.268 }, + { 23, 32.007, 35.172, 38.076, 41.638, 49.728 }, + { 24, 33.196, 36.415, 39.364, 42.980, 51.179 }, + { 25, 34.382, 37.652, 40.646, 44.314, 52.620 }, + { 26, 35.563, 38.885, 41.923, 45.642, 54.052 }, + { 27, 36.741, 40.113, 43.195, 46.963, 55.476 }, + { 28, 37.916, 41.337, 44.461, 48.278, 56.892 }, + { 29, 39.087, 42.557, 45.722, 49.588, 58.301 }, + { 30, 40.256, 43.773, 46.979, 50.892, 59.703 }, + { 31, 41.422, 44.985, 48.232, 52.191, 61.098 }, + { 32, 42.585, 46.194, 49.480, 53.486, 62.487 }, + { 33, 43.745, 47.400, 50.725, 54.776, 63.870 }, + { 34, 44.903, 48.602, 51.966, 56.061, 65.247 }, + { 35, 46.059, 49.802, 53.203, 57.342, 66.619 }, + { 36, 47.212, 50.998, 54.437, 58.619, 67.985 }, + { 37, 48.363, 52.192, 55.668, 59.893, 69.347 }, + { 38, 49.513, 53.384, 56.896, 61.162, 70.703 }, + { 39, 50.660, 54.572, 58.120, 62.428, 72.055 }, + { 40, 51.805, 55.758, 59.342, 63.691, 73.402 }, + { 41, 52.949, 56.942, 60.561, 64.950, 74.745 }, + { 42, 54.090, 58.124, 61.777, 66.206, 76.084 }, + { 43, 55.230, 59.304, 62.990, 67.459, 77.419 }, + { 44, 56.369, 60.481, 64.201, 68.710, 78.750 }, + { 45, 57.505, 61.656, 65.410, 69.957, 80.077 }, + { 46, 58.641, 62.830, 66.617, 71.201, 81.400 }, + { 47, 59.774, 64.001, 67.821, 72.443, 82.720 }, + { 48, 60.907, 65.171, 69.023, 73.683, 84.037 }, + { 49, 62.038, 66.339, 70.222, 74.919, 85.351 }, + { 50, 63.167, 67.505, 71.420, 76.154, 86.661 }, + { 51, 64.295, 68.669, 72.616, 77.386, 87.968 }, + { 52, 65.422, 69.832, 73.810, 78.616, 89.272 }, + { 53, 66.548, 70.993, 75.002, 79.843, 90.573 }, + { 54, 67.673, 72.153, 76.192, 81.069, 91.872 }, + { 55, 68.796, 73.311, 77.380, 82.292, 93.168 }, + { 56, 69.919, 74.468, 78.567, 83.513, 94.461 }, + { 57, 71.040, 75.624, 79.752, 84.733, 95.751 }, + { 58, 72.160, 76.778, 80.936, 85.950, 97.039 }, + { 59, 73.279, 77.931, 82.117, 87.166, 98.324 }, + { 60, 74.397, 79.082, 83.298, 88.379, 99.607 }, + { 61, 75.514, 80.232, 84.476, 89.591, 100.888 }, + { 62, 76.630, 81.381, 85.654, 90.802, 102.166 }, + { 63, 77.745, 82.529, 86.830, 92.010, 103.442 }, + { 64, 78.860, 83.675, 88.004, 93.217, 104.716 }, + { 65, 79.973, 84.821, 89.177, 94.422, 105.988 }, + { 66, 81.085, 85.965, 90.349, 95.626, 107.258 }, + { 67, 82.197, 87.108, 91.519, 96.828, 108.526 }, + { 68, 83.308, 88.250, 92.689, 98.028, 109.791 }, + { 69, 84.418, 89.391, 93.856, 99.228, 111.055 }, + { 70, 85.527, 90.531, 95.023, 100.425, 112.317 }, + { 71, 86.635, 91.670, 96.189, 101.621, 113.577 }, + { 72, 87.743, 92.808, 97.353, 102.816, 114.835 }, + { 73, 88.850, 93.945, 98.516, 104.010, 116.092 }, + { 74, 89.956, 95.081, 99.678, 105.202, 117.346 }, + { 75, 91.061, 96.217, 100.839, 106.393, 118.599 }, + { 76, 92.166, 97.351, 101.999, 107.583, 119.850 }, + { 77, 93.270, 98.484, 103.158, 108.771, 121.100 }, + { 78, 94.374, 99.617, 104.316, 109.958, 122.348 }, + { 79, 95.476, 100.749, 105.473, 111.144, 123.594 }, + { 80, 96.578, 101.879, 106.629, 112.329, 124.839 }, + { 81, 97.680, 103.010, 107.783, 113.512, 126.083 }, + { 82, 98.780, 104.139, 108.937, 114.695, 127.324 }, + { 83, 99.880, 105.267, 110.090, 115.876, 128.565 }, + { 84, 100.980, 106.395, 111.242, 117.057, 129.804 }, + { 85, 102.079, 107.522, 112.393, 118.236, 131.041 }, + { 86, 103.177, 108.648, 113.544, 119.414, 132.277 }, + { 87, 104.275, 109.773, 114.693, 120.591, 133.512 }, + { 88, 105.372, 110.898, 115.841, 121.767, 134.746 }, + { 89, 106.469, 112.022, 116.989, 122.942, 135.978 }, + { 90, 107.565, 113.145, 118.136, 124.116, 137.208 }, + { 91, 108.661, 114.268, 119.282, 125.289, 138.438 }, + { 92, 109.756, 115.390, 120.427, 126.462, 139.666 }, + { 93, 110.850, 116.511, 121.571, 127.633, 140.893 }, + { 94, 111.944, 117.632, 122.715, 128.803, 142.119 }, + { 95, 113.038, 118.752, 123.858, 129.973, 143.344 }, + { 96, 114.131, 119.871, 125.000, 131.141, 144.567 }, + { 97, 115.223, 120.990, 126.141, 132.309, 145.789 }, + { 98, 116.315, 122.108, 127.282, 133.476, 147.010 }, + { 99, 117.407, 123.225, 128.422, 134.642, 148.230 }, + { 100, 118.498, 124.342, 129.561, 135.807, 149.449 }, + {100, 118.498, 124.342, 129.561, 135.807, 149.449 } +}; + +double lower_critical_values[][6] = { + /* + These have fewer than 4 significant digits, leave them out + of the tests for now: + 1., .016, .004, .001, .000, .000, + 2., .211, .103, .051, .020, .002, + 3., .584, .352, .216, .115, .024, + 4., 1.064, .711, .484, .297, .091, + 5., 1.610, 1.145, .831, .554, .210, + 6., 2.204, 1.635, 1.237, .872, .381, + 7., 2.833, 2.167, 1.690, 1.239, .598, + 8., 3.490, 2.733, 2.180, 1.646, .857, + */ + { 9., 4.168, 3.325, 2.700, 2.088, 1.152 }, + { 10., 4.865, 3.940, 3.247, 2.558, 1.479 }, + { 11., 5.578, 4.575, 3.816, 3.053, 1.834 }, + { 12., 6.304, 5.226, 4.404, 3.571, 2.214 }, + { 13., 7.042, 5.892, 5.009, 4.107, 2.617 }, + { 14., 7.790, 6.571, 5.629, 4.660, 3.041 }, + { 15., 8.547, 7.261, 6.262, 5.229, 3.483 }, + { 16., 9.312, 7.962, 6.908, 5.812, 3.942 }, + { 17., 10.085, 8.672, 7.564, 6.408, 4.416 }, + { 18., 10.865, 9.390, 8.231, 7.015, 4.905 }, + { 19., 11.651, 10.117, 8.907, 7.633, 5.407 }, + { 20., 12.443, 10.851, 9.591, 8.260, 5.921 }, + { 21., 13.240, 11.591, 10.283, 8.897, 6.447 }, + { 22., 14.041, 12.338, 10.982, 9.542, 6.983 }, + { 23., 14.848, 13.091, 11.689, 10.196, 7.529 }, + { 24., 15.659, 13.848, 12.401, 10.856, 8.085 }, + { 25., 16.473, 14.611, 13.120, 11.524, 8.649 }, + { 26., 17.292, 15.379, 13.844, 12.198, 9.222 }, + { 27., 18.114, 16.151, 14.573, 12.879, 9.803 }, + { 28., 18.939, 16.928, 15.308, 13.565, 10.391 }, + { 29., 19.768, 17.708, 16.047, 14.256, 10.986 }, + { 30., 20.599, 18.493, 16.791, 14.953, 11.588 }, + { 31., 21.434, 19.281, 17.539, 15.655, 12.196 }, + { 32., 22.271, 20.072, 18.291, 16.362, 12.811 }, + { 33., 23.110, 20.867, 19.047, 17.074, 13.431 }, + { 34., 23.952, 21.664, 19.806, 17.789, 14.057 }, + { 35., 24.797, 22.465, 20.569, 18.509, 14.688 }, + { 36., 25.643, 23.269, 21.336, 19.233, 15.324 }, + { 37., 26.492, 24.075, 22.106, 19.960, 15.965 }, + { 38., 27.343, 24.884, 22.878, 20.691, 16.611 }, + { 39., 28.196, 25.695, 23.654, 21.426, 17.262 }, + { 40., 29.051, 26.509, 24.433, 22.164, 17.916 }, + { 41., 29.907, 27.326, 25.215, 22.906, 18.575 }, + { 42., 30.765, 28.144, 25.999, 23.650, 19.239 }, + { 43., 31.625, 28.965, 26.785, 24.398, 19.906 }, + { 44., 32.487, 29.787, 27.575, 25.148, 20.576 }, + { 45., 33.350, 30.612, 28.366, 25.901, 21.251 }, + { 46., 34.215, 31.439, 29.160, 26.657, 21.929 }, + { 47., 35.081, 32.268, 29.956, 27.416, 22.610 }, + { 48., 35.949, 33.098, 30.755, 28.177, 23.295 }, + { 49., 36.818, 33.930, 31.555, 28.941, 23.983 }, + { 50., 37.689, 34.764, 32.357, 29.707, 24.674 }, + { 51., 38.560, 35.600, 33.162, 30.475, 25.368 }, + { 52., 39.433, 36.437, 33.968, 31.246, 26.065 }, + { 53., 40.308, 37.276, 34.776, 32.018, 26.765 }, + { 54., 41.183, 38.116, 35.586, 32.793, 27.468 }, + { 55., 42.060, 38.958, 36.398, 33.570, 28.173 }, + { 56., 42.937, 39.801, 37.212, 34.350, 28.881 }, + { 57., 43.816, 40.646, 38.027, 35.131, 29.592 }, + { 58., 44.696, 41.492, 38.844, 35.913, 30.305 }, + { 59., 45.577, 42.339, 39.662, 36.698, 31.020 }, + { 60., 46.459, 43.188, 40.482, 37.485, 31.738 }, + { 61., 47.342, 44.038, 41.303, 38.273, 32.459 }, + { 62., 48.226, 44.889, 42.126, 39.063, 33.181 }, + { 63., 49.111, 45.741, 42.950, 39.855, 33.906 }, + { 64., 49.996, 46.595, 43.776, 40.649, 34.633 }, + { 65., 50.883, 47.450, 44.603, 41.444, 35.362 }, + { 66., 51.770, 48.305, 45.431, 42.240, 36.093 }, + { 67., 52.659, 49.162, 46.261, 43.038, 36.826 }, + { 68., 53.548, 50.020, 47.092, 43.838, 37.561 }, + { 69., 54.438, 50.879, 47.924, 44.639, 38.298 }, + { 70., 55.329, 51.739, 48.758, 45.442, 39.036 }, + { 71., 56.221, 52.600, 49.592, 46.246, 39.777 }, + { 72., 57.113, 53.462, 50.428, 47.051, 40.519 }, + { 73., 58.006, 54.325, 51.265, 47.858, 41.264 }, + { 74., 58.900, 55.189, 52.103, 48.666, 42.010 }, + { 75., 59.795, 56.054, 52.942, 49.475, 42.757 }, + { 76., 60.690, 56.920, 53.782, 50.286, 43.507 }, + { 77., 61.586, 57.786, 54.623, 51.097, 44.258 }, + { 78., 62.483, 58.654, 55.466, 51.910, 45.010 }, + { 79., 63.380, 59.522, 56.309, 52.725, 45.764 }, + { 80., 64.278, 60.391, 57.153, 53.540, 46.520 }, + { 81., 65.176, 61.261, 57.998, 54.357, 47.277 }, + { 82., 66.076, 62.132, 58.845, 55.174, 48.036 }, + { 83., 66.976, 63.004, 59.692, 55.993, 48.796 }, + { 84., 67.876, 63.876, 60.540, 56.813, 49.557 }, + { 85., 68.777, 64.749, 61.389, 57.634, 50.320 }, + { 86., 69.679, 65.623, 62.239, 58.456, 51.085 }, + { 87., 70.581, 66.498, 63.089, 59.279, 51.850 }, + { 88., 71.484, 67.373, 63.941, 60.103, 52.617 }, + { 89., 72.387, 68.249, 64.793, 60.928, 53.386 }, + { 90., 73.291, 69.126, 65.647, 61.754, 54.155 }, + { 91., 74.196, 70.003, 66.501, 62.581, 54.926 }, + { 92., 75.100, 70.882, 67.356, 63.409, 55.698 }, + { 93., 76.006, 71.760, 68.211, 64.238, 56.472 }, + { 94., 76.912, 72.640, 69.068, 65.068, 57.246 }, + { 95., 77.818, 73.520, 69.925, 65.898, 58.022 }, + { 96., 78.725, 74.401, 70.783, 66.730, 58.799 }, + { 97., 79.633, 75.282, 71.642, 67.562, 59.577 }, + { 98., 80.541, 76.164, 72.501, 68.396, 60.356 }, + { 99., 81.449, 77.046, 73.361, 69.230, 61.137 }, + {100., 82.358, 77.929, 74.222, 70.065, 61.918 } +}; + +template // Any floating-point type RealType. +void test_spots(RealType) +{ + // Basic sanity checks, test data is to three decimal places only + // so set tolerance to 0.001 expressed as a persentage. + + RealType tolerance = 0.001f * 100; + + cout << "Tolerance = " << tolerance << "%." << endl; + + using boost::math::chi_squared_distribution; + using ::boost::math::chi_squared; + using ::boost::math::cdf; + using ::boost::math::pdf; + + for(unsigned i = 0; i < sizeof(upper_critical_values) / sizeof(upper_critical_values[0]); ++i) + { + test_spot( + static_cast(upper_critical_values[i][0]), // degrees of freedom + static_cast(upper_critical_values[i][1]), // Chi Squared statistic + static_cast(1 - q[0]), // Probability of result (CDF), P + static_cast(q[0]), // Q = 1 - P + tolerance); + test_spot( + static_cast(upper_critical_values[i][0]), // degrees of freedom + static_cast(upper_critical_values[i][2]), // Chi Squared statistic + static_cast(1 - q[1]), // Probability of result (CDF), P + static_cast(q[1]), // Q = 1 - P + tolerance); + test_spot( + static_cast(upper_critical_values[i][0]), // degrees of freedom + static_cast(upper_critical_values[i][3]), // Chi Squared statistic + static_cast(1 - q[2]), // Probability of result (CDF), P + static_cast(q[2]), // Q = 1 - P + tolerance); + test_spot( + static_cast(upper_critical_values[i][0]), // degrees of freedom + static_cast(upper_critical_values[i][4]), // Chi Squared statistic + static_cast(1 - q[3]), // Probability of result (CDF), P + static_cast(q[3]), // Q = 1 - P + tolerance); + test_spot( + static_cast(upper_critical_values[i][0]), // degrees of freedom + static_cast(upper_critical_values[i][5]), // Chi Squared statistic + static_cast(1 - q[4]), // Probability of result (CDF), P + static_cast(q[4]), // Q = 1 - P + tolerance); + } + + for(unsigned i = 0; i < sizeof(lower_critical_values) / sizeof(lower_critical_values[0]); ++i) + { + test_spot( + static_cast(lower_critical_values[i][0]), // degrees of freedom + static_cast(lower_critical_values[i][1]), // Chi Squared statistic + static_cast(q[0]), // Probability of result (CDF), P + static_cast(1 - q[0]), // Q = 1 - P + tolerance); + test_spot( + static_cast(lower_critical_values[i][0]), // degrees of freedom + static_cast(lower_critical_values[i][2]), // Chi Squared statistic + static_cast(q[1]), // Probability of result (CDF), P + static_cast(1 - q[1]), // Q = 1 - P + tolerance); + test_spot( + static_cast(lower_critical_values[i][0]), // degrees of freedom + static_cast(lower_critical_values[i][3]), // Chi Squared statistic + static_cast(q[2]), // Probability of result (CDF), P + static_cast(1 - q[2]), // Q = 1 - P + tolerance); + test_spot( + static_cast(lower_critical_values[i][0]), // degrees of freedom + static_cast(lower_critical_values[i][4]), // Chi Squared statistic + static_cast(q[3]), // Probability of result (CDF), P + static_cast(1 - q[3]), // Q = 1 - P + tolerance); + test_spot( + static_cast(lower_critical_values[i][0]), // degrees of freedom + static_cast(lower_critical_values[i][5]), // Chi Squared statistic + static_cast(q[4]), // Probability of result (CDF), P + static_cast(1 - q[4]), // Q = 1 - P + tolerance); + } + + RealType tol2 = boost::math::tools::epsilon() * 5 * 100; // 5 eps as a percentage + chi_squared_distribution dist(static_cast(8)); + RealType x = 7; + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(8), tol2); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(16), tol2); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , static_cast(4), tol2); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol2); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tol2); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tol2); + // mode: + BOOST_CHECK_CLOSE( + mode(dist) + , static_cast(6), tol2); + + BOOST_CHECK_CLOSE( + median(dist), + quantile( + chi_squared_distribution(static_cast(8)), + static_cast(0.5)), static_cast(tol2)); + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist) + , static_cast(1), tol2); + // kurtosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , static_cast(4.5), tol2); + // kurtosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist) + , static_cast(1.5), tol2); + // special cases: + BOOST_CHECK_THROW( + pdf( + chi_squared_distribution(static_cast(1)), + static_cast(0)), std::overflow_error + ); + BOOST_CHECK_EQUAL( + pdf(chi_squared_distribution(2), static_cast(0)) + , static_cast(0.5f)); + BOOST_CHECK_EQUAL( + pdf(chi_squared_distribution(3), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(chi_squared_distribution(1), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(chi_squared_distribution(2), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(chi_squared_distribution(3), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(complement(chi_squared_distribution(1), static_cast(0))) + , static_cast(1)); + BOOST_CHECK_EQUAL( + cdf(complement(chi_squared_distribution(2), static_cast(0))) + , static_cast(1)); + BOOST_CHECK_EQUAL( + cdf(complement(chi_squared_distribution(3), static_cast(0))) + , static_cast(1)); + + BOOST_CHECK_THROW( + pdf( + chi_squared_distribution(static_cast(-1)), + static_cast(1)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + chi_squared_distribution(static_cast(8)), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + chi_squared_distribution(static_cast(-1)), + static_cast(1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + chi_squared_distribution(static_cast(8)), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf(complement( + chi_squared_distribution(static_cast(-1)), + static_cast(1))), std::domain_error + ); + BOOST_CHECK_THROW( + cdf(complement( + chi_squared_distribution(static_cast(8)), + static_cast(-1))), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + chi_squared_distribution(static_cast(-1)), + static_cast(0.5)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + chi_squared_distribution(static_cast(8)), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + chi_squared_distribution(static_cast(8)), + static_cast(1.1)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile(complement( + chi_squared_distribution(static_cast(-1)), + static_cast(0.5))), std::domain_error + ); + BOOST_CHECK_THROW( + quantile(complement( + chi_squared_distribution(static_cast(8)), + static_cast(-1))), std::domain_error + ); + BOOST_CHECK_THROW( + quantile(complement( + chi_squared_distribution(static_cast(8)), + static_cast(1.1))), std::domain_error + ); + + // This first test value is taken from an example here: + // http://www.itl.nist.gov/div898/handbook/prc/section2/prc232.htm + // Subsequent tests just test our empirically generated values, they + // catch regressions, but otherwise aren't worth much. + BOOST_CHECK_EQUAL( + ceil(chi_squared_distribution::find_degrees_of_freedom( + 55, 0.05f, 0.01f, 100)), static_cast(170)); + BOOST_CHECK_EQUAL( + ceil(chi_squared_distribution::find_degrees_of_freedom( + 10, 0.05f, 0.01f, 100)), static_cast(3493)); + BOOST_CHECK_EQUAL( + ceil(chi_squared_distribution::find_degrees_of_freedom( + -55, 0.05f, 0.01f, 100)), static_cast(49)); + BOOST_CHECK_EQUAL( + ceil(chi_squared_distribution::find_degrees_of_freedom( + -10, 0.05f, 0.01f, 100)), static_cast(2826)); +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + // Check that can generate chi_squared distribution using the two convenience methods: + chi_squared_distribution<> mychisqr(8); + chi_squared mychisqr2(8); + + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. + test_spots(0.0); // Test double. +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#endif + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_chi_squared.exe" +Running 1 test case... +Tolerance = 0.1%. +Tolerance = 0.1%. +Tolerance = 0.1%. +Tolerance = 0.1%. +*** No errors detected + +*/ + + + diff --git a/test/test_classify.cpp b/test/test_classify.cpp new file mode 100644 index 000000000..ab457b597 --- /dev/null +++ b/test/test_classify.cpp @@ -0,0 +1,166 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include + +#ifdef _MSC_VER +#pragma warning(disable: 4127) // conditional expression is constant +#endif + +template +void test_classify(T t, const char* type) +{ + std::cout << "Testing type " << type << std::endl; + t = 2; + T u = 2; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL); + if(std::numeric_limits::is_specialized) + { + t = (std::numeric_limits::max)(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL); + t = (std::numeric_limits::min)(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NORMAL); + } + if(std::numeric_limits::has_denorm) + { + t /= 2; + if(t != 0) + { + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_SUBNORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_SUBNORMAL); + } + t = std::numeric_limits::denorm_min(); + if((t != 0) && (t < (std::numeric_limits::min)())) + { + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_SUBNORMAL); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_SUBNORMAL); + } + } + else + { + std::cout << "Denormalised forms not tested" << std::endl; + } + t = 0; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_ZERO); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_ZERO); + t /= -u; // create minus zero if it exists + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_ZERO); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_ZERO); + // inifinity: + if(std::numeric_limits::has_infinity) + { + // At least one std::numeric_limits::infinity)() returns zero + // (Compaq true64 cxx), hence the check. + t = (std::numeric_limits::infinity)(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE); +#if !defined(__BORLANDC__) && !(defined(__DECCXX) && !defined(_IEEE_FP)) + // divide by zero on Borland triggers a C++ exception :-( + // divide by zero on Compaq CXX triggers a C style signal :-( + t = 2; + u = 0; + t /= u; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE); + t = -2; + t /= u; + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_INFINITE); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_INFINITE); +#else + std::cout << "Infinities from divide by zero not tested" << std::endl; +#endif + } + else + { + std::cout << "Infinity not tested" << std::endl; + } +#ifndef __BORLANDC__ + // NaN's: + // Note that Borland throws an exception if we even try to obtain a Nan + // by calling std::numeric_limits::quiet_NaN() !!!!!!! + if(std::numeric_limits::has_quiet_NaN) + { + t = std::numeric_limits::quiet_NaN(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NAN); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NAN); + } + else + { + std::cout << "Quiet NaN's not tested" << std::endl; + } + if(std::numeric_limits::has_signaling_NaN) + { + t = std::numeric_limits::signaling_NaN(); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(t), (int)FP_NAN); + BOOST_CHECK_EQUAL((::boost::math::fpclassify)(-t), (int)FP_NAN); + } + else + { + std::cout << "Signaling NaN's not tested" << std::endl; + } +#endif +} + +int test_main(int, char* [] ) +{ + BOOST_MATH_CONTROL_FP; + // start by printing some information: +#ifdef isnan + std::cout << "Platform has isnan macro." << std::endl; +#endif +#ifdef fpclassify + std::cout << "Platform has fpclassify macro." << std::endl; +#endif +#ifdef BOOST_HAS_FPCLASSIFY + std::cout << "Platform has FP_NORMAL macro." << std::endl; +#endif + std::cout << "FP_ZERO: " << (int)FP_ZERO << std::endl; + std::cout << "FP_NORMAL: " << (int)FP_NORMAL << std::endl; + std::cout << "FP_INFINITE: " << (int)FP_INFINITE << std::endl; + std::cout << "FP_NAN: " << (int)FP_NAN << std::endl; + std::cout << "FP_SUBNORMAL: " << (int)FP_SUBNORMAL << std::endl; + + // then run the tests: + test_classify(float(0), "float"); + test_classify(double(0), "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_classify((long double)(0), "long double"); + test_classify((boost::math::concepts::real_concept)(0), "real_concept"); +#endif + return 0; +} + +/* +Autorun "i:\Boost-sandbox\math_toolkit\libs\math\test\MSVC80\debug\test_classify.exe" +Running 1 test case... +FP_ZERO: 0 +FP_NORMAL: 1 +FP_INFINITE: 2 +FP_NAN: 3 +FP_SUBNORMAL: 4 +Testing type float +Testing type double +Testing type long double +Testing type real_concept +Denormalised forms not tested +Infinity not tested +Quiet NaN's not tested +Signaling NaN's not tested +Test suite "Test Program" passed with: + 79 assertions out of 79 passed + 1 test case out of 1 passed + Test case "test_main_caller( argc, argv )" passed with: + 79 assertions out of 79 passed + +*/ diff --git a/test/test_constants.cpp b/test/test_constants.cpp new file mode 100644 index 000000000..06c250d11 --- /dev/null +++ b/test/test_constants.cpp @@ -0,0 +1,88 @@ +// Copyright Paul Bristow 2007. +// Copyright John Maddock 2006. + +// 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) + +// test_constants.cpp + +#include // for real_concept +#include // Boost.Test +#include + +#include +#include + +template +void test_spots(RealType) +{ + // Basic sanity checks for constants. + + RealType tolerance = static_cast(2e-15); // double + //cout << "Tolerance for type " << typeid(T).name() << " is " << tolerance << "." << endl; + + using namespace boost::math::constants; + using namespace std; // Help ADL of std exp, log... + using std::exp; + + BOOST_CHECK_CLOSE_FRACTION(static_cast(3.14159265358979323846264338327950288419716939937510L), pi(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L)), root_pi(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L/2)), root_half_pi(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(sqrt(3.14159265358979323846264338327950288419716939937510L * 2)), root_two_pi(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(sqrt(log(4.0L))), root_ln_four(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(2.71828182845904523536028747135266249775724709369995L), e(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(0.5), half(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(0.57721566490153286060651209008240243104259335L), euler(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(sqrt(2.0L)), root_two(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(log(2.0L)), ln_two(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(log(log(2.0L))), ln_ln_two(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(1)/3, third(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(2)/3, twothirds(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(0.14159265358979323846264338327950288419716939937510L), pi_minus_three(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(4. - 3.14159265358979323846264338327950288419716939937510L), four_minus_pi(), tolerance); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_CHECK_CLOSE_FRACTION(static_cast(pow((4 - 3.14159265358979323846264338327950288419716939937510L), 1.5L)), pow23_four_minus_pi(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(exp(-0.5L)), exp_minus_half(), tolerance); +#else + BOOST_CHECK_CLOSE_FRACTION(static_cast(pow((4 - 3.14159265358979323846264338327950288419716939937510), 1.5)), pow23_four_minus_pi(), tolerance); + BOOST_CHECK_CLOSE_FRACTION(static_cast(exp(-0.5)), exp_minus_half(), tolerance); +#endif + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_constants.exe" +Running 1 test case... +*** No errors detected + +*/ + + + diff --git a/test/test_digamma.cpp b/test/test_digamma.cpp new file mode 100644 index 000000000..035b94496 --- /dev/null +++ b/test/test_digamma.cpp @@ -0,0 +1,182 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the digamma function. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*Negative.*", // test data group + ".*", 300, 40); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + ".*", // test data group + ".*", 3, 3); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_digamma(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::digamma; +#else + pg funcp = boost::math::digamma; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test digamma against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::digamma", test_name); + std::cout << std::endl; +} + +template +void test_digamma(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "digamma_data.ipp" + + do_test_digamma(digamma_data, name, "Digamma Function: Large Values"); + +# include "digamma_root_data.ipp" + + do_test_digamma(digamma_root_data, name, "Digamma Function: Near the Positive Root"); + +# include "digamma_small_data.ipp" + + do_test_digamma(digamma_small_data, name, "Digamma Function: Near Zero"); + +# include "digamma_neg_data.ipp" + + do_test_digamma(digamma_neg_data, name, "Digamma Function: Negative Values"); + +} + +template +void test_spots(T, const char* t) +{ + std::cout << "Testing basic sanity checks for type " << t << std::endl; + // + // Basic sanity checks, tolerance is 3 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 300; + // + // Special tolerance (200eps) for when we're very near the root, + // and T has more than 64-bits in it's mantissa: + // + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(0.125)), static_cast(-8.3884926632958548678027429230863430000514460424495L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(0.5)), static_cast(-1.9635100260214234794409763329987555671931596046604L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(1)), static_cast(-0.57721566490153286060651209008240243104215933593992L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(1.5)), static_cast(0.036489973978576520559023667001244432806840395339566L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(1.5) - static_cast(1)/32), static_cast(0.00686541147073577672813890866512415766586241385896200579891429L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(2)), static_cast(0.42278433509846713939348790991759756895784066406008L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(8)), static_cast(2.0156414779556099965363450527747404261006978069172L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(12)), static_cast(2.4426616799758120167383652547949424463027180089374L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(22)), static_cast(3.0681430398611966699248760264450329818421699570581L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(50)), static_cast(3.9019896734278921969539597028823666609284424880275L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(500)), static_cast(6.2136077650889917423827750552855712637776544784569L), tolerance); + // + // negative values: + // + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(-0.125)), static_cast(7.1959829284523046176757814502538535827603450463013L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(-10.125)), static_cast(9.9480538258660761287008034071425343357982429855241L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(-10.875)), static_cast(-5.1527360383841562620205965901515879492020193154231L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::digamma(static_cast(-1.5)), static_cast(0.70315664064524318722569033366791109947350706200623L), tolerance); +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif + + expected_results(); + + test_digamma(0.1F, "float"); + test_digamma(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_digamma(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_digamma(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + diff --git a/test/test_dist_overloads.cpp b/test/test_dist_overloads.cpp new file mode 100644 index 000000000..ef1008df0 --- /dev/null +++ b/test/test_dist_overloads.cpp @@ -0,0 +1,101 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// 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) + +// test_dist_overloads.cpp + +#include // for real_concept +#include + using boost::math::normal_distribution; + +#include // Boost.Test +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; + +template +void test_spots(RealType) +{ + // Basic sanity checks, + // 2 eps as a percentage: + RealType tolerance = boost::math::tools::epsilon() * 2 * 100; + + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + for(int i = -4; i <= 4; ++i) + { + BOOST_CHECK_CLOSE( + ::boost::math::cdf(normal_distribution(), i), + ::boost::math::cdf(normal_distribution(), static_cast(i)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::pdf(normal_distribution(), i), + ::boost::math::pdf(normal_distribution(), static_cast(i)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::cdf(complement(normal_distribution(), i)), + ::boost::math::cdf(complement(normal_distribution(), static_cast(i))), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::hazard(normal_distribution(), i), + ::boost::math::hazard(normal_distribution(), static_cast(i)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::chf(normal_distribution(), i), + ::boost::math::chf(normal_distribution(), static_cast(i)), + tolerance); + } + for(float f = 0.01f; f < 1; f += 0.01f) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile(normal_distribution(), f), + ::boost::math::quantile(normal_distribution(), static_cast(f)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::quantile(complement(normal_distribution(), f)), + ::boost::math::quantile(complement(normal_distribution(), static_cast(f))), + tolerance); + } +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Running 1 test case... +Tolerance for type float is 2.38419e-005 % +Tolerance for type double is 4.44089e-014 % +Tolerance for type long double is 4.44089e-014 % +Tolerance for type class boost::math::concepts::real_concept is 4.44089e-014 % +*** No errors detected + +*/ + diff --git a/test/test_ellint_1.cpp b/test/test_ellint_1.cpp new file mode 100644 index 000000000..e99a18902 --- /dev/null +++ b/test/test_ellint_1.cpp @@ -0,0 +1,220 @@ +// Copyright Xiaogang Zhang 2006 +// Copyright John Maddock 2006, 2007 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable : 4756) // overflow in constant arithmetic +// Constants are too big for float case, but this doesn't matter for test. +#endif + +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Elliptic Integrals of the first kind. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 5, 3); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 5, 3); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +template +void do_test_ellint_f(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp2)(value_type, value_type) = boost::math::ellint_1; +#else + value_type (*fp2)(value_type, value_type) = boost::math::ellint_1; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp2, 1, 0), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_1", test); + + std::cout << std::endl; + +} + +template +void do_test_ellint_k(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + boost::math::tools::test_result result; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp1)(value_type) = boost::math::ellint_1; +#else + value_type (*fp1)(value_type) = boost::math::ellint_1; +#endif + result = boost::math::tools::test( + data, + bind_func(fp1, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_1", test); + + std::cout << std::endl; +} + +template +void test_spots(T, const char* type_name) +{ + // Function values calculated on http://functions.wolfram.com/ + // Note that Mathematica's EllipticF accepts k^2 as the second parameter. + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 19> data1 = { + SC_(0), SC_(0), SC_(0), + SC_(-10), SC_(0), SC_(-10), + SC_(-1), SC_(-1), SC_(-1.2261911708835170708130609674719067527242483502207), + SC_(-4), SC_(0.875), SC_(-5.3190556182262405182189463092940736859067548232647), + SC_(8), SC_(-0.625), SC_(9.0419973860310100524448893214394562615252527557062), + SC_(1e-05), SC_(0.875), SC_(0.000010000000000127604166668510945638036143355898993088), + SC_(1e+05), SC_(10)/1024, SC_(100002.38431454899771096037307519328741455615271038), + SC_(1e-20), SC_(1), SC_(1.0000000000000000000000000000000000000000166666667e-20), + SC_(1e-20), SC_(1e-20), SC_(1.000000000000000e-20), + SC_(1e+20), SC_(400)/1024, SC_(1.0418143796499216839719289963154558027005142709763e20), + SC_(1e+50), SC_(0.875), SC_(1.3913251718238765549409892714295358043696028445944e50), + SC_(2), SC_(0.5), SC_(2.1765877052210673672479877957388515321497888026770), + SC_(4), SC_(0.5), SC_(4.2543274975235836861894752787874633017836785640477), + SC_(6), SC_(0.5), SC_(6.4588766202317746302999080620490579800463614807916), + SC_(10), SC_(0.5), SC_(10.697409951222544858346795279378531495869386960090), + SC_(-2), SC_(0.5), SC_(-2.1765877052210673672479877957388515321497888026770), + SC_(-4), SC_(0.5), SC_(-4.2543274975235836861894752787874633017836785640477), + SC_(-6), SC_(0.5), SC_(-6.4588766202317746302999080620490579800463614807916), + SC_(-10), SC_(0.5), SC_(-10.697409951222544858346795279378531495869386960090), + }; + #undef SC_ + + do_test_ellint_f(data1, type_name, "Elliptic Integral F: Mathworld Data"); + +#include "ellint_f_data.ipp" + + do_test_ellint_f(ellint_f_data, type_name, "Elliptic Integral F: Random Data"); + + // Function values calculated on http://functions.wolfram.com/ + // Note that Mathematica's EllipticK accepts k^2 as the second parameter. + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 9> data2 = { + SC_(0), SC_(1.5707963267948966192313216916397514420985846996876), + SC_(0.125), SC_(1.5769867712158131421244030532288080803822271060839), + SC_(0.25), SC_(1.5962422221317835101489690714979498795055744578951), + SC_(300)/1024, SC_(1.6062331054696636704261124078746600894998873503208), + SC_(400)/1024, SC_(1.6364782007562008756208066125715722889067992997614), + SC_(-0.5), SC_(1.6857503548125960428712036577990769895008008941411), + SC_(-0.75), SC_(1.9109897807518291965531482187613425592531451316788), + 1-SC_(1)/8, SC_(2.185488469278223686913080323730158689730428415766), + 1-SC_(1)/1024, SC_(4.5074135978990422666372495313621124487894807327687), + }; + #undef SC_ + + do_test_ellint_k(data2, type_name, "Elliptic Integral K: Mathworld Data"); + +#include "ellint_k_data.ipp" + + do_test_ellint_k(ellint_k_data, type_name, "Elliptic Integral K: Random Data"); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spots(boost::math::concepts::real_concept(0), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} diff --git a/test/test_ellint_2.cpp b/test/test_ellint_2.cpp new file mode 100644 index 000000000..55a93b8d8 --- /dev/null +++ b/test/test_ellint_2.cpp @@ -0,0 +1,212 @@ +// Copyright Xiaogang Zhang 2006 +// Copyright John Maddock 2006, 2007 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable : 4756) // overflow in constant arithmetic +// Constants are too big for float case, but this doesn't matter for test. +#endif + +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Elliptic Integrals of the second kind. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 15, 6); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 15, 6); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + + +template +void do_test_ellint_e2(const T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp2)(value_type, value_type) = boost::math::ellint_2; +#else + value_type (*fp2)(value_type, value_type) = boost::math::ellint_2; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp2, 1, 0), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_2", test); + + std::cout << std::endl; +} + +template +void do_test_ellint_e1(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + boost::math::tools::test_result result; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp1)(value_type) = boost::math::ellint_2; +#else + value_type (*fp1)(value_type) = boost::math::ellint_2; +#endif + result = boost::math::tools::test( + data, + bind_func(fp1, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_2", test); + + std::cout << std::endl; +} + +template +void test_spots(T, const char* type_name) +{ + // Function values calculated on http://functions.wolfram.com/ + // Note that Mathematica's EllipticE accepts k^2 as the second parameter. + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 10> data1 = { + SC_(0), SC_(0), SC_(0), + SC_(-10), SC_(0), SC_(-10), + SC_(-1), SC_(-1), SC_(-0.84147098480789650665250232163029899962256306079837), + SC_(-4), SC_(900) / 1024, SC_(-3.1756145986492562317862928524528520686391383168377), + SC_(8), SC_(-600) / 1024, SC_(7.2473147180505693037677015377802777959345489333465), + SC_(1e-05), SC_(800) / 1024, SC_(9.999999999898274739584436515967055859383969942432E-6), + SC_(1e+05), SC_(100) / 1024, SC_(99761.153306972066658135668386691227343323331995888), + SC_(1e+10), SC_(-0.5), SC_(9.3421545766487137036576748555295222252286528414669e9), + ldexp(SC_(1), 66), SC_(400) / 1024, SC_(7.0886102721911705466476846969992069994308167515242e19), + ldexp(SC_(1), 166), SC_(900) / 1024, SC_(7.1259011068364515942912094521783688927118026465790e49), + }; + #undef SC_ + + do_test_ellint_e2(data1, type_name, "Elliptic Integral E: Mathworld Data"); + +#include "ellint_e2_data.ipp" + + do_test_ellint_e2(ellint_e2_data, type_name, "Elliptic Integral E: Random Data"); + + // Function values calculated on http://functions.wolfram.com/ + // Note that Mathematica's EllipticE accepts k^2 as the second parameter. + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 10> data2 = { + SC_(-1), SC_(1), + SC_(0), SC_(1.5707963267948966192313216916397514420985846996876), + SC_(100) / 1024, SC_(1.5670445330545086723323795143598956428788609133377), + SC_(200) / 1024, SC_(1.5557071588766556854463404816624361127847775545087), + SC_(300) / 1024, SC_(1.5365278991162754883035625322482669608948678755743), + SC_(400) / 1024, SC_(1.5090417763083482272165682786143770446401437564021), + SC_(-0.5), SC_(1.4674622093394271554597952669909161360253617523272), + SC_(-600) / 1024, SC_(1.4257538571071297192428217218834579920545946473778), + SC_(-800) / 1024, SC_(1.2927868476159125056958680222998765985004489572909), + SC_(-900) / 1024, SC_(1.1966864890248739524112920627353824133420353430982), + }; + #undef SC_ + + do_test_ellint_e1(data2, type_name, "Elliptic Integral E: Mathworld Data"); + +#include "ellint_e_data.ipp" + + do_test_ellint_e1(ellint_e_data, type_name, "Elliptic Integral E: Random Data"); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_spots(0.0F, "float"); +#endif + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spots(boost::math::concepts::real_concept(0), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} diff --git a/test/test_ellint_3.cpp b/test/test_ellint_3.cpp new file mode 100644 index 000000000..006f41ead --- /dev/null +++ b/test/test_ellint_3.cpp @@ -0,0 +1,247 @@ +// Copyright Xiaogang Zhang 2006 +// Copyright John Maddock 2006, 2007 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable : 4756) // overflow in constant arithmetic +// Constants are too big for float case, but this doesn't matter for test. +#endif + +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Elliptic Integrals of the third kind. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*Large.*", // test data group + ".*", 50, 20); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*Large.*", // test data group + ".*", 50, 20); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 15, 8); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 15, 8); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_ellint_pi3(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp2)(value_type, value_type, value_type) = boost::math::ellint_3; +#else + value_type (*fp2)(value_type, value_type, value_type) = boost::math::ellint_3; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp2, 2, 0, 1), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_3", test); + + std::cout << std::endl; + +} + +template +void do_test_ellint_pi2(T& data, const char* type_name, const char* test) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << "Testing: " << test << std::endl; + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + value_type (*fp2)(value_type, value_type) = boost::math::ellint_3; +#else + value_type (*fp2)(value_type, value_type) = boost::math::ellint_3; +#endif + boost::math::tools::test_result result; + + result = boost::math::tools::test( + data, + bind_func(fp2, 1, 0), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), + type_name, "boost::math::ellint_3", test); + + std::cout << std::endl; + +} + +template +void test_spots(T, const char* type_name) +{ + // function values calculated on http://functions.wolfram.com/ + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 21> data1 = { + SC_(1), SC_(-1), SC_(0), SC_(-1.557407724654902230506974807458360173087), + SC_(0), SC_(-4), SC_(0.4), SC_(-4.153623371196831087495427530365430979011), + SC_(0), SC_(8), SC_(-0.6), SC_(8.935930619078575123490612395578518914416), + SC_(0), SC_(0.5), SC_(0.25), SC_(0.501246705365439492445236118603525029757890291780157969500480), + SC_(0), SC_(0.5), SC_(0), SC_(0.5), + SC_(-2), SC_(0.5), SC_(0), SC_(0.437501067017546278595664813509803743009132067629603474488486), + SC_(0.25), SC_(0.5), SC_(0), SC_(0.510269830229213412212501938035914557628394166585442994564135), + SC_(0.75), SC_(0.5), SC_(0), SC_(0.533293253875952645421201146925578536430596894471541312806165), + SC_(0.75), SC_(0.75), SC_(0), SC_(0.871827580412760575085768367421866079353646112288567703061975), + SC_(1), SC_(0.25), SC_(0), SC_(0.255341921221036266504482236490473678204201638800822621740476), + SC_(2), SC_(0.25), SC_(0), SC_(0.261119051639220165094943572468224137699644963125853641716219), + SC_(1023)/1024, SC_(1.5), SC_(0), SC_(13.2821612239764190363647953338544569682942329604483733197131), + SC_(0.5), SC_(-1), SC_(0.5), SC_(-1.228014414316220642611298946293865487807), + SC_(0.5), SC_(1e+10), SC_(0.5), SC_(1.536591003599172091573590441336982730551e+10), + SC_(-1e+05), SC_(10), SC_(0.75), SC_(0.0347926099493147087821620459290460547131012904008557007934290), + SC_(-1e+10), SC_(10), SC_(0.875), SC_(0.000109956202759561502329123384755016959364346382187364656768212), + SC_(-1e+10), SC_(1e+20), SC_(0.875), SC_(1.00000626665567332602765201107198822183913978895904937646809e15), + SC_(-1e+10), SC_(1608)/1024, SC_(0.875), SC_(0.0000157080616044072676127333183571107873332593142625043567690379), + 1-SC_(1) / 1024, SC_(1e+20), SC_(0.875), SC_(6.43274293944380717581167058274600202023334985100499739678963e21), + SC_(50), SC_(0.1), SC_(0.25), SC_(0.124573770342749525407523258569507331686458866564082916835900), + SC_(1.125), SC_(1), SC_(0.25), SC_(1.77299767784815770192352979665283069318388205110727241629752), + //SC_(1.125), SC_(10), SC_(0.25), SC_(0.662467818678976949597336360256848770217429434745967677192487), + //SC_(1.125), SC_(3), SC_(0.25), SC_(-0.142697285116693775525461312178015106079842313950476205580178), + }; + #undef SC_ + + do_test_ellint_pi3(data1, type_name, "Elliptic Integral PI: Mathworld Data"); + +#include "ellint_pi3_data.ipp" + + do_test_ellint_pi3(ellint_pi3_data, type_name, "Elliptic Integral PI: Random Data"); + +#include "ellint_pi3_large_data.ipp" + + do_test_ellint_pi3(ellint_pi3_large_data, type_name, "Elliptic Integral PI: Large Random Data"); + + // function values calculated on http://functions.wolfram.com/ + #define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 9> data2 = { + SC_(0), SC_(0.2), SC_(1.586867847454166237308008033828114192951), + SC_(0), SC_(0.4), SC_(1.639999865864511206865258329748601457626), + SC_(0), SC_(0), SC_(1.57079632679489661923132169163975144209858469968755291048747), + SC_(0.5), SC_(0), SC_(2.221441469079183123507940495030346849307), + SC_(-4), SC_(0.3), SC_(0.712708870925620061597924858162260293305195624270730660081949), + SC_(-1e+05), SC_(-0.5), SC_(0.00496944596485066055800109163256108604615568144080386919012831), + SC_(-1e+10), SC_(-0.75), SC_(0.0000157080225184890546939710019277357161497407143903832703317801), + SC_(1) / 1024, SC_(-0.875), SC_(2.18674503176462374414944618968850352696579451638002110619287), + SC_(1023)/1024, SC_(-0.875), SC_(101.045289804941384100960063898569538919135722087486350366997), + }; + #undef SC_ + + do_test_ellint_pi2(data2, type_name, "Complete Elliptic Integral PI: Mathworld Data"); + +#include "ellint_pi2_data.ipp" + + do_test_ellint_pi2(ellint_pi2_data, type_name, "Complete Elliptic Integral PI: Random Data"); + + // Special cases, exceptions etc: + BOOST_CHECK_THROW(boost::math::ellint_3(T(1.0001), T(-1), T(0)), std::domain_error); + BOOST_CHECK_THROW(boost::math::ellint_3(T(0.5), T(20), T(1.5)), std::domain_error); + BOOST_CHECK_THROW(boost::math::ellint_3(T(1.0001), T(-1)), std::domain_error); + BOOST_CHECK_THROW(boost::math::ellint_3(T(0.5), T(1)), std::domain_error); + BOOST_CHECK_THROW(boost::math::ellint_3(T(0.5), T(2)), std::domain_error); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spots(boost::math::concepts::real_concept(0), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} diff --git a/test/test_erf.cpp b/test/test_erf.cpp new file mode 100644 index 000000000..70880439c --- /dev/null +++ b/test/test_erf.cpp @@ -0,0 +1,509 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007 +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_erf_hooks.hpp" +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the functions erf, erfc, and the inverses +// erf_inv and erfc_inv. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double|real_concept"; + } + else + { + largest_type = "long double|real_concept"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // On MacOS X erfc has much higher error levels than + // expected: given that the implementation is basically + // just a rational function evaluation combined with + // exponentiation, we conclude that exp and pow are less + // accurate on this platform, especially when the result + // is outside the range of a double. + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "Erf Function:.*Large.*", // test data group + "boost::math::erfc", 4300, 1300); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "Erf Function:.*", // test data group + "boost::math::erfc", 40, 10); // test function + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Erf Function:.*", // test data group + "boost::math::erfc?", 20, 6); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Inverse Erfc.*", // test data group + "boost::math::erfc_inv", 80, 10); // test function + + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Erf Function:.*", // test data group + "boost::math::erfc?", 2, 2); // test function + add_expected_result( + ".*aCC.*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Inverse Erfc.*", // test data group + "boost::math::erfc_inv", 80, 10); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + ".*", // test type(s) + "Inverse Erf.*", // test data group + "boost::math::erfc?_inv", 18, 4); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_erf(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::erf; +#else + pg funcp = boost::math::erf; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test erf against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::erf", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::erf; + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::erf"); + } +#endif + // + // test erfc against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::erfc; +#else + funcp = boost::math::erfc; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::erfc", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::erfc; + result = boost::math::tools::test( + data, + bind(funcp, 0), + extract_result(2)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::erfc"); + } +#endif + std::cout << std::endl; +} + +template +void do_test_erf_inv(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); + + boost::math::tools::test_result result; + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + // + // test erf_inv against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::erf_inv; +#else + pg funcp = boost::math::erf_inv; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::erf_inv", test_name); + std::cout << std::endl; +} + +template +void do_test_erfc_inv(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::erf; +#else + pg funcp = boost::math::erf; +#endif + + boost::math::tools::test_result result; + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + // + // test erfc_inv against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::erfc_inv; +#else + funcp = boost::math::erfc_inv; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::erfc_inv", test_name); + std::cout << std::endl; +} + +template +void test_erf(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "erf_small_data.ipp" + + do_test_erf(erf_small_data, name, "Erf Function: Small Values"); + +# include "erf_data.ipp" + + do_test_erf(erf_data, name, "Erf Function: Medium Values"); + +# include "erf_large_data.ipp" + + do_test_erf(erf_large_data, name, "Erf Function: Large Values"); + +# include "erf_inv_data.ipp" + + do_test_erf_inv(erf_inv_data, name, "Inverse Erf Function"); + +# include "erfc_inv_data.ipp" + + do_test_erfc_inv(erfc_inv_data, name, "Inverse Erfc Function"); + +# include "erfc_inv_big_data.ipp" + + if(std::numeric_limits::min_exponent <= -4500) + { + do_test_erfc_inv(erfc_inv_big_data, name, "Inverse Erfc Function: extreme values"); + } +} + +template +void test_spots(T, const char* t) +{ + std::cout << "Testing basic sanity checks for type " << t << std::endl; + // + // basic sanity checks, tolerance is 10 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 1000; + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(0.125)), static_cast(0.85968379519866618260697055347837660181302041685015L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(0.5)), static_cast(0.47950012218695346231725334610803547126354842424204L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(1)), static_cast(0.15729920705028513065877936491739074070393300203370L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(5)), static_cast(1.5374597944280348501883434853833788901180503147234e-12L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(-0.125)), static_cast(1.1403162048013338173930294465216233981869795831498L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(-0.5)), static_cast(1.5204998778130465376827466538919645287364515757580L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erfc(static_cast(0)), static_cast(1), tolerance); + + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(0.125)), static_cast(0.14031620480133381739302944652162339818697958314985L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(0.5)), static_cast(0.52049987781304653768274665389196452873645157575796L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(1)), static_cast(0.84270079294971486934122063508260925929606699796630L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(5)), static_cast(0.9999999999984625402055719651498116565146166211099L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(-0.125)), static_cast(-0.14031620480133381739302944652162339818697958314985L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(-0.5)), static_cast(-0.52049987781304653768274665389196452873645157575796L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::erf(static_cast(0)), static_cast(0), tolerance); + + tolerance = boost::math::tools::epsilon() * 100 * 200; // 200 eps %. +#if defined(__CYGWIN__) + // some platforms long double is only reliably accurate to double precision: + if(sizeof(T) == sizeof(long double)) + tolerance = boost::math::tools::epsilon() * 100 * 200; // 200 eps %. +#endif + + for(T i = -0.95f; i < 1; i += 0.125f) + { + T inv = boost::math::erf_inv(i); + T b = boost::math::erf(inv); + BOOST_CHECK_CLOSE(b, i, tolerance); + } + for(T j = 0.125f; j < 2; j += 0.125f) + { + T inv = boost::math::erfc_inv(j); + T b = boost::math::erfc(inv); + BOOST_CHECK_CLOSE(b, j, tolerance); + } +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif + + expected_results(); + + test_erf(0.1F, "float"); + test_erf(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_erf(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_erf(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + +/* + +Output: + +test_erf.cpp +Compiling manifest to resources... +Linking... +Embedding manifest... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_erf.exe" +Running 1 test case... +Testing basic sanity checks for type float +Testing basic sanity checks for type double +Testing basic sanity checks for type long double +Testing basic sanity checks for type real_concept +Tests run with Microsoft Visual C++ version 8.0, Dinkumware standard library version 405, Win32 +Testing Erf Function: Small Values with type float +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 0 RMS Mean=0 +Testing Erf Function: Medium Values with type float +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 0 RMS Mean=0 +Testing Erf Function: Large Values with type float +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 0 RMS Mean=0 +Testing Inverse Erf Function with type float +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf_inv Max = 0 RMS Mean=0 +Testing Inverse Erfc Function with type float +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erfc_inv Max = 0 RMS Mean=0 +Testing Erf Function: Small Values with type double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 0.7857 RMS Mean=0.06415 + worst case at row: 149 + { 0.3343, 0.3636, 0.6364 } +Testing Erf Function: Medium Values with type double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0.9219 RMS Mean=0.1016 + worst case at row: 273 + { 0.5252, 0.5424, 0.4576 } +boost::math::erfc Max = 1.08 RMS Mean=0.3224 + worst case at row: 287 + { 0.8461, 0.7685, 0.2315 } +Testing Erf Function: Large Values with type double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 1.048 RMS Mean=0.2032 + worst case at row: 50 + { 20.96, 1, 4.182e-193 } +Testing Inverse Erf Function with type double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf_inv Max = 1.124 RMS Mean=0.5082 + worst case at row: 98 + { 0.9881, 1.779 } +Testing Inverse Erfc Function with type double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erfc_inv Max = 1.124 RMS Mean=0.5006 + worst case at row: 98 + { 1.988, -1.779 } +Testing Erf Function: Small Values with type long double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 0.7857 RMS Mean=0.06415 + worst case at row: 149 + { 0.3343, 0.3636, 0.6364 } +Testing Erf Function: Medium Values with type long double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0.9219 RMS Mean=0.1016 + worst case at row: 273 + { 0.5252, 0.5424, 0.4576 } +boost::math::erfc Max = 1.08 RMS Mean=0.3224 + worst case at row: 287 + { 0.8461, 0.7685, 0.2315 } +Testing Erf Function: Large Values with type long double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 1.048 RMS Mean=0.2032 + worst case at row: 50 + { 20.96, 1, 4.182e-193 } +Testing Inverse Erf Function with type long double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf_inv Max = 1.124 RMS Mean=0.5082 + worst case at row: 98 + { 0.9881, 1.779 } +Testing Inverse Erfc Function with type long double +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erfc_inv Max = 1.124 RMS Mean=0.5006 + worst case at row: 98 + { 1.988, -1.779 } +Testing Erf Function: Small Values with type real_concept +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 1.271 RMS Mean=0.5381 + worst case at row: 144 + { 0.0109, 0.0123, 0.9877 } +boost::math::erfc Max = 0.7857 RMS Mean=0.07777 + worst case at row: 149 + { 0.3343, 0.3636, 0.6364 } +Testing Erf Function: Medium Values with type real_concept +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 22.5 RMS Mean=4.224 + worst case at row: 233 + { -0.7852, -0.7332, 1.733 } +Peak error greater than expected value of 20 +i:/boost-sandbox/math_toolkit/libs/math/test/handle_test_result.hpp(146): error in "test_main_caller( argc, argv )": check bounds.first >= max_error_found failed +boost::math::erfc Max = 97.77 RMS Mean=8.373 + worst case at row: 289 + { 0.9849, 0.8363, 0.1637 } +Peak error greater than expected value of 20 +i:/boost-sandbox/math_toolkit/libs/math/test/handle_test_result.hpp(146): error in "test_main_caller( argc, argv )": check bounds.first >= max_error_found failed +Mean error greater than expected value of 6 +i:/boost-sandbox/math_toolkit/libs/math/test/handle_test_result.hpp(151): error in "test_main_caller( argc, argv )": check bounds.second >= mean_error_found failed +Testing Erf Function: Large Values with type real_concept +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf Max = 0 RMS Mean=0 +boost::math::erfc Max = 1.395 RMS Mean=0.2908 + worst case at row: 11 + { 10.99, 1, 1.87e-054 } +Testing Inverse Erf Function with type real_concept +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erf_inv Max = 1.124 RMS Mean=0.5082 + worst case at row: 98 + { 0.9881, 1.779 } +Testing Inverse Erfc Function with type real_concept +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +boost::math::erfc_inv Max = 1.124 RMS Mean=0.5006 + worst case at row: 98 + { 1.988, -1.779 } +Test suite "Test Program" failed with: + 181 assertions out of 184 passed + 3 assertions out of 184 failed + 1 test case out of 1 failed + Test case "test_main_caller( argc, argv )" failed with: + 181 assertions out of 184 passed + 3 assertions out of 184 failed +Build Time 0:15 + +*/ diff --git a/test/test_erf_hooks.hpp b/test/test_erf_hooks.hpp new file mode 100644 index 000000000..e1c42af50 --- /dev/null +++ b/test/test_erf_hooks.hpp @@ -0,0 +1,105 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_TEST_ERF_OTHER_HOOKS_HPP +#define BOOST_MATH_TEST_ERF_OTHER_HOOKS_HPP + +#ifdef TEST_NATIVE +namespace other{ +inline float erf(float a) +{ + return ::erff(a); +} +inline float erfc(float a) +{ + return ::erfcf(a); +} +inline double erf(double a) +{ + return ::erf(a); +} +inline double erfc(double a) +{ + return ::erfc(a); +} +inline long double erf(long double a) +{ + return ::erfl(a); +} +inline long double erfc(long double a) +{ + return ::erfcl(a); +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_CEPHES +namespace other{ +extern "C" { + double erf(double); + float erff(float); + long double erfl(long double); +} +inline float erf(float a) +{ return erff(a); } +inline long double erf(long double a) +{ +#ifdef BOOST_MSVC + return erf((double)a); +#else + return erfl(a); +#endif +} +extern "C" { + double erfc(double); + float erfcf(float); + long double erfcl(long double); +} +inline float erfc(float a) +{ return erfcf(a); } +inline long double erfc(long double a) +{ +#ifdef BOOST_MSVC + return erfc((double)a); +#else + return erfcl(a); +#endif +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_GSL +#include + +namespace other{ +inline float erf(float a) +{ return (float)gsl_sf_erf(a); } +inline double erf(double a) +{ return gsl_sf_erf(a); } +inline long double erf(long double a) +{ return gsl_sf_erf(a); } +inline float erfc(float a) +{ return (float)gsl_sf_erfc(a); } +inline double erfc(double a) +{ return gsl_sf_erfc(a); } +inline long double erfc(long double a) +{ return gsl_sf_erfc(a); } +} +#define TEST_OTHER +#endif + +#ifdef TEST_OTHER +namespace other{ + boost::math::concepts::real_concept erf(boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept erfc(boost::math::concepts::real_concept){ return 0; } +} +#endif + + +#endif + + diff --git a/test/test_error_handling.cpp b/test/test_error_handling.cpp new file mode 100644 index 000000000..04d31a314 --- /dev/null +++ b/test/test_error_handling.cpp @@ -0,0 +1,193 @@ +// Copyright Paul A. Bristow 2006-7. +// Copyright John Maddock 2006-7. + +// 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) + +// Test error handling mechanism produces the expected error messages. +// for example Error in function boost::math::test_function(float, float, float): Domain Error evaluating function at 0 + +// Define some custom dummy error handlers that do nothing but throw, +// in order to check that they are otherwise undefined. +// The user MUST define them before they can be used. +// +struct user_defined_error{}; + +namespace boost{ namespace math{ namespace policies{ + +template +T user_domain_error(const char* , const char* , const T& ) +{ + throw user_defined_error(); +} + +template +T user_pole_error(const char* , const char* , const T& ) +{ + throw user_defined_error(); +} + +template +T user_overflow_error(const char* , const char* , const T& ) +{ + throw user_defined_error(); +} + +template +T user_underflow_error(const char* , const char* , const T& ) +{ + throw user_defined_error(); +} + +template +T user_denorm_error(const char* , const char* , const T& ) +{ + throw user_defined_error(); +} + +template +T user_evaluation_error(const char* , const char* , const T& ) +{ + throw user_defined_error(); +} + +}}} // namespaces + +#include +#include +#include +#include // for test_main +// +// Define some policies: +// +using namespace boost::math::policies; +policy< + domain_error, + pole_error, + overflow_error, + underflow_error, + denorm_error, + evaluation_error > throw_policy; +policy< + domain_error, + pole_error, + overflow_error, + underflow_error, + denorm_error, + evaluation_error > errno_policy; +policy< + domain_error, + pole_error, + overflow_error, + underflow_error, + denorm_error, + evaluation_error > user_policy; +policy<> default_policy; + +#define TEST_EXCEPTION(expression, exception)\ + BOOST_CHECK_THROW(expression, exception);\ + try{ expression; }catch(const exception& e){ std::cout << e.what() << std::endl; } + +template +void test_error(T) +{ + const char* func = "boost::math::test_function<%1%>(%1%, %1%, %1%)"; + const char* msg1 = "Error while handling value %1%"; + const char* msg2 = "Error message goes here..."; + + // Check that exception is thrown, catch and show the message, for example: + // Error in function boost::math::test_function(float, float, float): Error while handling value 0 + + TEST_EXCEPTION(boost::math::policies::raise_domain_error(func, msg1, T(0.0), throw_policy), std::domain_error); + TEST_EXCEPTION(boost::math::policies::raise_domain_error(func, 0, T(0.0), throw_policy), std::domain_error); + TEST_EXCEPTION(boost::math::policies::raise_pole_error(func, msg1, T(0.0), throw_policy), std::domain_error); + TEST_EXCEPTION(boost::math::policies::raise_pole_error(func, 0, T(0.0), throw_policy), std::domain_error); + TEST_EXCEPTION(boost::math::policies::raise_overflow_error(func, msg2, throw_policy), std::overflow_error); + TEST_EXCEPTION(boost::math::policies::raise_overflow_error(func, 0, throw_policy), std::overflow_error); + TEST_EXCEPTION(boost::math::policies::raise_underflow_error(func, msg2, throw_policy), std::underflow_error); + TEST_EXCEPTION(boost::math::policies::raise_underflow_error(func, 0, throw_policy), std::underflow_error); + TEST_EXCEPTION(boost::math::policies::raise_denorm_error(func, msg2, T(0), throw_policy), std::underflow_error); + TEST_EXCEPTION(boost::math::policies::raise_denorm_error(func, 0, T(0), throw_policy), std::underflow_error); + TEST_EXCEPTION(boost::math::policies::raise_evaluation_error(func, msg1, T(1.25), throw_policy), boost::math::evaluation_error); + TEST_EXCEPTION(boost::math::policies::raise_evaluation_error(func, 0, T(1.25), throw_policy), boost::math::evaluation_error); + // + // Now try user error handlers: these should all throw user_error(): + // - because by design these are undefined and must be defined by the user ;-) + BOOST_CHECK_THROW(boost::math::policies::raise_domain_error(func, msg1, T(0.0), user_policy), user_defined_error); + BOOST_CHECK_THROW(boost::math::policies::raise_pole_error(func, msg1, T(0.0), user_policy), user_defined_error); + BOOST_CHECK_THROW(boost::math::policies::raise_overflow_error(func, msg2, user_policy), user_defined_error); + BOOST_CHECK_THROW(boost::math::policies::raise_underflow_error(func, msg2, user_policy), user_defined_error); + BOOST_CHECK_THROW(boost::math::policies::raise_denorm_error(func, msg2, T(0), user_policy), user_defined_error); + BOOST_CHECK_THROW(boost::math::policies::raise_evaluation_error(func, msg1, T(0.0), user_policy), user_defined_error); + +} + +int test_main(int, char* []) +{ + // Test error handling. + // (Parameter value, arbitrarily zero, only communicates the floating point type FPT). + test_error(0.0F); // Test float. + test_error(0.0); // Test double. + test_error(0.0L); // Test long double. + test_error(boost::math::concepts::real_concept(0.0L)); // Test concepts. + return 0; +} // int test_main(int, char* []) + +/* + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_error_handling.exe" +Running 1 test case... +Error in function boost::math::test_function(float, float, float): Error while handling value 0 +Error in function boost::math::test_function(float, float, float): Domain Error evaluating function at 0 +Error in function boost::math::test_function(float, float, float): Error while handling value 0 +Error in function boost::math::test_function(float, float, float): Evaluation of function at pole 0 +Error in function boost::math::test_function(float, float, float): Error message goes here... +Error in function boost::math::test_function(float, float, float): Overflow Error +Error in function boost::math::test_function(float, float, float): Error message goes here... +Error in function boost::math::test_function(float, float, float): Underflow Error +Error in function boost::math::test_function(float, float, float): Error message goes here... +Error in function boost::math::test_function(float, float, float): Denorm Error +Error in function boost::math::test_function(float, float, float): Error while handling value 1.25 +Error in function boost::math::test_function(float, float, float): Internal Evaluation Error, best value so far was 1.25 +Error in function boost::math::test_function(double, double, double): Error while handling value 0 +Error in function boost::math::test_function(double, double, double): Domain Error evaluating function at 0 +Error in function boost::math::test_function(double, double, double): Error while handling value 0 +Error in function boost::math::test_function(double, double, double): Evaluation of function at pole 0 +Error in function boost::math::test_function(double, double, double): Error message goes here... +Error in function boost::math::test_function(double, double, double): Overflow Error +Error in function boost::math::test_function(double, double, double): Error message goes here... +Error in function boost::math::test_function(double, double, double): Underflow Error +Error in function boost::math::test_function(double, double, double): Error message goes here... +Error in function boost::math::test_function(double, double, double): Denorm Error +Error in function boost::math::test_function(double, double, double): Error while handling value 1.25 +Error in function boost::math::test_function(double, double, double): Internal Evaluation Error, best value so far was 1.25 +Error in function boost::math::test_function(long double, long double, long double): Error while handling value 0 +Error in function boost::math::test_function(long double, long double, long double): Domain Error evaluating function at 0 +Error in function boost::math::test_function(long double, long double, long double): Error while handling value 0 +Error in function boost::math::test_function(long double, long double, long double): Evaluation of function at pole 0 +Error in function boost::math::test_function(long double, long double, long double): Error message goes here... +Error in function boost::math::test_function(long double, long double, long double): Overflow Error +Error in function boost::math::test_function(long double, long double, long double): Error message goes here... +Error in function boost::math::test_function(long double, long double, long double): Underflow Error +Error in function boost::math::test_function(long double, long double, long double): Error message goes here... +Error in function boost::math::test_function(long double, long double, long double): Denorm Error +Error in function boost::math::test_function(long double, long double, long double): Error while handling value 1.25 +Error in function boost::math::test_function(long double, long double, long double): Internal Evaluation Error, best value so far was 1.25 +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Error while handling value 0 +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Domain Error evaluating function at 0 +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Error while handling value 0 +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Evaluation of function at pole 0 +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Error message goes here... +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Overflow Error +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Error message goes here... +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Underflow Error +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Error message goes here... +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Denorm Error +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Error while handling value 1.25 +Error in function boost::math::test_function(class boost::math::concepts::real_concept, class boost::math::concepts::real_concept, class boost::math::concepts::real_concept): Internal Evaluation Error, best value so far was 1.25 +*** No errors detected + +*/ + diff --git a/test/test_exponential_dist.cpp b/test/test_exponential_dist.cpp new file mode 100644 index 000000000..3a2a7b5fa --- /dev/null +++ b/test/test_exponential_dist.cpp @@ -0,0 +1,291 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// 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) + +// test_exponential_dist.cpp + +#include // for real_concept +#include + using boost::math::exponential_distribution; + +#include // Boost.Test +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; + +template +void test_spot(RealType l, RealType x, RealType p, RealType q, RealType tolerance) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + exponential_distribution(l), + x), + p, + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(exponential_distribution(l), + x)), + q, + tolerance); // % + if(p < 0.999) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + exponential_distribution(l), + p), + x, + tolerance); // % + } + if(q < 0.999) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(exponential_distribution(l), + q)), + x, + tolerance); // % + } +} + +template +void test_spots(RealType T) +{ + // Basic sanity checks. + // 50 eps as a percentage, up to a maximum of double precision + // (that's the limit of our test data: obtained by punching + // numbers into a calculator). + RealType tolerance = (std::max)( + static_cast(boost::math::tools::epsilon()), + boost::math::tools::epsilon()); + tolerance *= 50 * 100; + // # pragma warning(disable: 4100) // unreferenced formal parameter. + // prevent his spurious warning. + if (T != 0) + { + cout << "Expect parameter T == 0!" << endl; + } + cout << "Tolerance for type " << typeid(T).name() << " is " << tolerance << " %" << endl; + + test_spot( + static_cast(0.5), // lambda + static_cast(0.125), // x + static_cast(0.060586937186524213880289175377695L), // p + static_cast(0.93941306281347578611971082462231L), //q + tolerance); + test_spot( + static_cast(0.5), // lambda + static_cast(5), // x + static_cast(0.91791500137610120483047132553284L), // p + static_cast(0.08208499862389879516952867446716L), //q + tolerance); + test_spot( + static_cast(2), // lambda + static_cast(0.125), // x + static_cast(0.22119921692859513175482973302168L), // p + static_cast(0.77880078307140486824517026697832L), //q + tolerance); + test_spot( + static_cast(2), // lambda + static_cast(5), // x + static_cast(0.99995460007023751514846440848444L), // p + static_cast(4.5399929762484851535591515560551e-5L), //q + tolerance); + + // + // Some spot tests generated by MathCAD pexp(x,r): + // + test_spot( + static_cast(1), // lambda + static_cast(1), // x + static_cast(6.321205588285580E-001L), // p + static_cast(1-6.321205588285580E-001L), //q + tolerance); + test_spot( + static_cast(2), // lambda + static_cast(1), // x + static_cast(8.646647167633870E-001L), // p + static_cast(1-8.646647167633870E-001L), //q + tolerance); + test_spot( + static_cast(1), // lambda + static_cast(0.5), // x + static_cast(3.934693402873670E-001L), // p + static_cast(1-3.934693402873670E-001L), //q + tolerance); + test_spot( + static_cast(0.1), // lambda + static_cast(1), // x + static_cast(9.516258196404040E-002L), // p + static_cast(1-9.516258196404040E-002L), //q + tolerance); + test_spot( + static_cast(10), // lambda + static_cast(1), // x + static_cast(9.999546000702380E-001L), // p + static_cast(1-9.999546000702380E-001L), //q + tolerance*10000); // we loose four digits to cancellation + test_spot( + static_cast(0.1), // lambda + static_cast(10), // x + static_cast(6.321205588285580E-001L), // p + static_cast(1-6.321205588285580E-001L), //q + tolerance); + test_spot( + static_cast(1), // lambda + static_cast(0.01), // x + static_cast(9.950166250831950E-003L), // p + static_cast(1-9.950166250831950E-003L), //q + tolerance); + test_spot( + static_cast(1), // lambda + static_cast(0.0001), // x + static_cast(9.999500016666250E-005L), // p + static_cast(1-9.999500016666250E-005L), //q + tolerance); + /* + // This test data appears to be erroneous, MathCad appears + // to suffer from cancellation error as x -> 0 + test_spot( + static_cast(1), // lambda + static_cast(0.0000001), // x + static_cast(9.999999499998730E-008L), // p + static_cast(1-9.999999499998730E-008L), //q + tolerance); + */ + + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + exponential_distribution(0.5), + static_cast(0.125)), // x + static_cast(0.46970653140673789305985541231115L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + exponential_distribution(0.5), + static_cast(5)), // x + static_cast(0.04104249931194939758476433723358L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + exponential_distribution(2), + static_cast(0.125)), // x + static_cast(1.5576015661428097364903405339566L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + exponential_distribution(2), + static_cast(5)), // x + static_cast(9.0799859524969703071183031121101e-5L), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::mean( + exponential_distribution(2)), + static_cast(0.5), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::standard_deviation( + exponential_distribution(2)), + static_cast(0.5), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::mode( + exponential_distribution(2)), + static_cast(0), + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::median( + exponential_distribution(4)), + static_cast(0.693147180559945309417232121458176568075500134360255254) / 4, + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::skewness( + exponential_distribution(2)), + static_cast(2), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis( + exponential_distribution(2)), + static_cast(9), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis_excess( + exponential_distribution(2)), + static_cast(6), + tolerance); // % + + // + // Things that are errors: + // + exponential_distribution dist(0.5); + BOOST_CHECK_THROW( + quantile(dist, RealType(1.0)), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(complement(dist, RealType(0.0))), + std::overflow_error); + BOOST_CHECK_THROW( + pdf(dist, RealType(-1)), + std::domain_error); + BOOST_CHECK_THROW( + cdf(dist, RealType(-1)), + std::domain_error); + BOOST_CHECK_THROW( + cdf(exponential_distribution(-1), RealType(1)), + std::domain_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(-1)), + std::domain_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(2)), + std::domain_error); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Check that can generate exponential distribution using the two convenience methods: + boost::math::exponential mycexp1(1.); // Using typedef + exponential_distribution<> myexp2(1.); // Using default RealType double. + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Running 1 test case... +Tolerance for type float is 0.000596046 % +Tolerance for type double is 1.11022e-012 % +Tolerance for type long double is 1.11022e-012 % +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-012 % +*** No errors detected + +*/ diff --git a/test/test_extreme_value.cpp b/test/test_extreme_value.cpp new file mode 100644 index 000000000..a1575cdcf --- /dev/null +++ b/test/test_extreme_value.cpp @@ -0,0 +1,222 @@ +// Copyright John Maddock 2006. + +// 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) + +// test_extreme_value.cpp + +#include // for real_concept +#include + using boost::math::extreme_value_distribution; + +#include // Boost.Test +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; + +template +void test_spot(RealType a, RealType b, RealType x, RealType p, RealType q, RealType tolerance) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + extreme_value_distribution(a, b), + x), + p, + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(extreme_value_distribution(a, b), + x)), + q, + tolerance); // % + if((p < 0.999) && (p > 0)) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + extreme_value_distribution(a, b), + p), + x, + tolerance); // % + } + if((q < 0.999) && (q > 0)) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(extreme_value_distribution(a, b), + q)), + x, + tolerance); // % + } +} + +template +void test_spots(RealType) +{ + // Basic sanity checks. + // 50eps as a percentage, up to a maximum of double precision + // (that's the limit of our test data). + RealType tolerance = (std::max)( + static_cast(boost::math::tools::epsilon()), + boost::math::tools::epsilon()); + tolerance *= 50 * 100; + + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + // Results calculated by punching numbers into a calculator, + // and using the formula at http://mathworld.wolfram.com/ExtremeValueDistribution.html + test_spot( + static_cast(0.5), // a + static_cast(1.5), // b + static_cast(0.125), // x + static_cast(0.27692033409990891617007608217222L), // p + static_cast(0.72307966590009108382992391782778L), //q + tolerance); + test_spot( + static_cast(0.5), // a + static_cast(2), // b + static_cast(-5), // x + static_cast(1.6087601139887776413169427645933e-7L), // p + static_cast(0.99999983912398860112223586830572L), //q + tolerance); + test_spot( + static_cast(0.5), // a + static_cast(0.25), // b + static_cast(0.75), // x + static_cast(0.69220062755534635386542199718279L), // p + static_cast(0.30779937244465364613457800281721), //q + tolerance); + test_spot( + static_cast(0.5), // a + static_cast(0.25), // b + static_cast(5), // x + static_cast(0.99999998477002037126351248727041L), // p + static_cast(1.5229979628736487512729586276294e-8L), //q + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + extreme_value_distribution(0.5, 2), + static_cast(0.125)), // x + static_cast(0.18052654830890205978204427757846L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + extreme_value_distribution(1, 3), + static_cast(5)), // x + static_cast(0.0675057324099851209129017326286L), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + extreme_value_distribution(1, 3), + static_cast(0)), // x + static_cast(0.11522236828583456431277265757312L), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::mean( + extreme_value_distribution(2, 3)), + static_cast(3.731646994704598581819536270246L), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::standard_deviation( + extreme_value_distribution(-1, 0.5)), + static_cast(0.6412749150809320477720181798355L), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::mode( + extreme_value_distribution(2, 3)), + static_cast(2), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::median( + extreme_value_distribution(0, 1)), + static_cast(+0.36651292058166432701243915823266946945426344783710526305367771367056), + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::skewness( + extreme_value_distribution(2, 3)), + static_cast(1.1395470994046486574927930193898461120875997958366L), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis( + extreme_value_distribution(2, 3)), + static_cast(5.4), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis_excess( + extreme_value_distribution(2, 3)), + static_cast(2.4), + tolerance); // % + + // + // Things that are errors: + // + extreme_value_distribution dist(0.5, 2); + BOOST_CHECK_THROW( + quantile(dist, RealType(1.0)), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(complement(dist, RealType(0.0))), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(0.0)), + std::overflow_error); + BOOST_CHECK_THROW( + quantile(complement(dist, RealType(1.0))), + std::overflow_error); + BOOST_CHECK_THROW( + cdf(extreme_value_distribution(0, -1), RealType(1)), + std::domain_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(-1)), + std::domain_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(2)), + std::domain_error); +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + + // Check that can generate extreme_value distribution using the two convenience methods: + boost::math::extreme_value mycev1(1.); // Using typedef + extreme_value_distribution<> myev2(1.); // Using default RealType double. + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +-Running 1 test case... +Tolerance for type float is 0.000596046 % +Tolerance for type double is 1.11022e-012 % +Tolerance for type long double is 1.11022e-012 % +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-012 % +*** No errors detected +*/ + + diff --git a/test/test_factorials.cpp b/test/test_factorials.cpp new file mode 100644 index 000000000..190abce44 --- /dev/null +++ b/test/test_factorials.cpp @@ -0,0 +1,341 @@ +// Copyright John Maddock 2006. +// 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) + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +# pragma warning(disable: 4245) // int/unsigned int conversion +#endif + +// Return infinities not exceptions: +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include +#include +#include +#include +#include +#include +#include + +#include + using std::cout; + using std::endl; + +template +T naive_falling_factorial(T x, unsigned n) +{ + if(n == 0) + return 1; + T result = x; + while(--n) + { + x -= 1; + result *= x; + } + return result; +} + +template +void test_spots(T) +{ + // + // Basic sanity checks. + // + T tolerance = boost::math::tools::epsilon() * 100 * 2; // 2 eps as a percent. + BOOST_CHECK_CLOSE( + ::boost::math::factorial(0), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::factorial(1), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::factorial(10), + static_cast(3628800L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::unchecked_factorial(0), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::unchecked_factorial(1), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::unchecked_factorial(10), + static_cast(3628800L), tolerance); + + // + // Try some double factorials: + // + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(0), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(1), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(2), + static_cast(2), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(5), + static_cast(15), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(10), + static_cast(3840), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(19), + static_cast(6.547290750e8L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(24), + static_cast(1.961990553600000e12L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(33), + static_cast(6.33265987076285062500000e18L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(42), + static_cast(1.0714547155728479551488000000e26L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::double_factorial(47), + static_cast(1.19256819277443412353990764062500000e30L), tolerance); + + if((std::numeric_limits::has_infinity) && (std::numeric_limits::max_exponent <= 1024)) + { + BOOST_CHECK_EQUAL( + ::boost::math::double_factorial(320), + std::numeric_limits::infinity()); + BOOST_CHECK_EQUAL( + ::boost::math::double_factorial(301), + std::numeric_limits::infinity()); + } + // + // Rising factorials: + // + tolerance = boost::math::tools::epsilon() * 100 * 20; // 20 eps as a percent. + if(std::numeric_limits::is_specialized == 0) + tolerance *= 5; // higher error rates without Lanczos support + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(3), 4), + static_cast(360), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(7), -4), + static_cast(0.00277777777777777777777777777777777777777777777777777777777778L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(120.5f), 8), + static_cast(5.58187566784927180664062500e16L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(120.5f), -4), + static_cast(5.15881498170104646868208445266116850161120996179812063177241e-9L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(5000.25f), 8), + static_cast(3.92974581976666067544013393509103775024414062500000e29L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(5000.25f), -7), + static_cast(1.28674092710208810281923019294164707555099052561945725535047e-26L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(30.25), 21), + static_cast(3.93286957998925490693364184100209193343633629069699964020401e33L), tolerance * 2); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(30.25), -21), + static_cast(3.35010902064291983728782493133164809108646650368560147505884e-27L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-30.25), 21), + static_cast(-9.76168312768123676601980433377916854311706629232503473758698e26L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-30.25), -21), + static_cast(-1.50079704000923674318934280259377728203516775215430875839823e-34L), 2 * tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-30.25), 5), + static_cast(-1.78799177197265625000000e7L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-30.25), -5), + static_cast(-2.47177487004482195012362027432181137141899692171397467859150e-8L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-30.25), 6), + static_cast(4.5146792242309570312500000e8L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-30.25), -6), + static_cast(6.81868929667537089689274558433603136943171564610751635473516e-10L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-3), 6), + static_cast(0), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-3.25), 6), + static_cast(2.99926757812500L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-5.25), 6), + static_cast(50.987548828125000000000000L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-5.25), 13), + static_cast(127230.91046623885631561279296875000L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-3.25), -6), + static_cast(0.0000129609865918182348202632178291407500332449622510474437452125L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-5.25), -6), + static_cast(2.50789821857946332294524052303699065683926911849535903362649e-6L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::rising_factorial(static_cast(-5.25), -13), + static_cast(-1.38984989447269128946284683518361786049649013886981662962096e-14L), tolerance); + + // + // Falling factorials: + // + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(30.25), 0), + static_cast(naive_falling_factorial(30.25L, 0)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(30.25), 1), + static_cast(naive_falling_factorial(30.25L, 1)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(30.25), 2), + static_cast(naive_falling_factorial(30.25L, 2)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(30.25), 5), + static_cast(naive_falling_factorial(30.25L, 5)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(30.25), 22), + static_cast(naive_falling_factorial(30.25L, 22)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(100.5), 6), + static_cast(naive_falling_factorial(100.5L, 6)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(30.75), 30), + static_cast(naive_falling_factorial(30.75L, 30)), + tolerance * 3); + if(boost::math::policies::digits >() > 50) + { + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(-30.75L), 30), + static_cast(naive_falling_factorial(-30.75L, 30)), + tolerance * 3); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(-30.75L), 27), + static_cast(naive_falling_factorial(-30.75L, 27)), + tolerance * 3); + } + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(-12.0), 6), + static_cast(naive_falling_factorial(-12.0L, 6)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(-12), 5), + static_cast(naive_falling_factorial(-12.0L, 5)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(-3.0), 6), + static_cast(naive_falling_factorial(-3.0L, 6)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(-3), 5), + static_cast(naive_falling_factorial(-3.0L, 5)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(3.0), 6), + static_cast(naive_falling_factorial(3.0L, 6)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(3), 5), + static_cast(naive_falling_factorial(3.0L, 5)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(3.25), 4), + static_cast(naive_falling_factorial(3.25L, 4)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(3.25), 5), + static_cast(naive_falling_factorial(3.25L, 5)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(3.25), 6), + static_cast(naive_falling_factorial(3.25L, 6)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(3.25), 7), + static_cast(naive_falling_factorial(3.25L, 7)), + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::falling_factorial(static_cast(8.25), 12), + static_cast(naive_falling_factorial(8.25L, 12)), + tolerance); + + + tolerance = boost::math::tools::epsilon() * 100 * 20; // 20 eps as a percent. + unsigned i = boost::math::max_factorial::value; + if((boost::is_floating_point::value) && (sizeof(T) <= sizeof(double))) + { + // Without Lanczos support, tgamma isn't accurate enough for this test: + BOOST_CHECK_CLOSE( + ::boost::math::unchecked_factorial(i), + boost::math::tgamma(static_cast(i+1)), tolerance); + } + + i += 10; + while(boost::math::lgamma(static_cast(i+1)) < boost::math::tools::log_max_value()) + { + BOOST_CHECK_CLOSE( + ::boost::math::factorial(i), + boost::math::tgamma(static_cast(i+1)), tolerance); + i += 10; + } +} // template void test_spots(T) + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + test_spots(0.0F); + test_spots(0.0); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spots(boost::math::concepts::real_concept(0.)); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + if (std::numeric_limits::digits == std::numeric_limits::digits) + { + cout << "Types double and long double have the same number of floating-point significand bits (" + << std::numeric_limits::digits << ") on this platform." << endl; + } + if (std::numeric_limits::digits == std::numeric_limits::digits) + { + cout << "Types float and double have the same number of floating-point significand bits (" + << std::numeric_limits::digits << ") on this platform." << endl; + } + + using boost::math::max_factorial; + cout << "max factorial for float " << max_factorial::value << endl; + cout << "max factorial for double " << max_factorial::value << endl; + cout << "max factorial for long double " << max_factorial::value << endl; + cout << "max factorial for real_concept " << max_factorial::value << endl; + + + + return 0; +} + +/* + +Output is: + +Running 1 test case... +Types double and long double have the same number of floating-point significand bits (53) on this platform. +max factorial for float 34 +max factorial for double 170 +max factorial for long double 170 +max factorial for real_concept 100 +*** No errors detected + +*/ + + + + diff --git a/test/test_find_location.cpp b/test/test_find_location.cpp new file mode 100644 index 000000000..7f1a8b61f --- /dev/null +++ b/test/test_find_location.cpp @@ -0,0 +1,172 @@ +// test_find_location.cpp + +// Copyright John Maddock 2007. +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Basic sanity test for find_location function. + +// Default domain error policy is +// #define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error + +#include // for normal_distribution + using boost::math::normal; // Default type double. + using boost::math::normal_distribution; // All floating-point types. +#include // for cauchy_distribution + using boost::math::cauchy; +#include // for cauchy_distribution + using boost::math::pareto; +#include + using boost::math::find_location; + using boost::math::complement;// will be needed by users who want complement, +#include + using boost::math::policies::policy; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE_FRACTION, BOOST_CHECK_EQUAL... +#include // for real_concept + +#include + using std::cout; using std::endl; using std::fixed; + using std::right; using std::left; using std::showpoint; + using std::showpos; using std::setw; using std::setprecision; + +#include + using std::numeric_limits; + +template // Any floating-point type RealType. +void test_spots(RealType) +{ // Parameter only provides the type, float, double... value ignored. + + // Basic sanity checks, test data may be to double precision only + // so set tolerance to 100 eps expressed as a fraction, + // or 100 eps of type double expressed as a fraction, + // whichever is the larger. + + RealType tolerance = (std::max) + (boost::math::tools::epsilon(), + static_cast(std::numeric_limits::epsilon())); + tolerance *= 100; // 100 eps as a fraction. + + cout << "Tolerance for type " << typeid(RealType).name() << " is " + << setprecision(3) << tolerance << " (or " << tolerance * 100 << "%)." << endl; + + BOOST_CHECK_THROW( // Probability outside 0 to 1. + find_location >( + static_cast(0.), static_cast(-1.), static_cast(0.) ), + std::domain_error); + + normal_distribution n; // standard N(0,1) + BOOST_CHECK_EQUAL(n.location(), 0); // aka mean. + BOOST_CHECK_EQUAL(n.scale(), 1); // aka standard_deviation. + + // Check for 'bad' arguments. + BOOST_CHECK_THROW(find_location(0., -1., 0.), std::domain_error); // p below 0 to 1. + BOOST_CHECK_THROW(find_location(0., 2., 0.), std::domain_error); // p above 0 to 1. + BOOST_CHECK_THROW(find_location(numeric_limits::infinity(), 0.5, 0.), + std::domain_error); // z not finite. + BOOST_CHECK_THROW(find_location(numeric_limits::quiet_NaN(), -1., 0.), + std::domain_error); // z not finite + BOOST_CHECK_THROW(find_location(0., -1., numeric_limits::quiet_NaN()), + std::domain_error); // scale not finite + + BOOST_CHECK_THROW(find_location(complement(0., -1., 0.)), std::domain_error); // p below 0 to 1. + BOOST_CHECK_THROW(find_location(complement(0., 2., 0.)), std::domain_error); // p above 0 to 1. + BOOST_CHECK_THROW(find_location(complement(numeric_limits::infinity(), 0.5, 0.)), + std::domain_error); // z not finite. + BOOST_CHECK_THROW(find_location(complement(numeric_limits::quiet_NaN(), -1., 0.)), + std::domain_error); // z not finite + BOOST_CHECK_THROW(find_location(complement(0., -1., numeric_limits::quiet_NaN())), + std::domain_error); // scale not finite + + //// Check for ab-use with unsuitable distribution(s) when concept check implemented. + // BOOST_CHECK_THROW(find_location(0., 0.5, 0.), std::domain_error); // pareto can't be used with find_location. + + // Check doesn't throw when an ignore_error for domain_error policy is used. + using boost::math::policies::policy; + using boost::math::policies::domain_error; + using boost::math::policies::ignore_error; + + // Define a (bad?) policy to ignore domain errors ('bad' arguments): + typedef policy > ignore_domain_policy; + // Using a typedef is convenient, especially if it is re-used. + + BOOST_CHECK_NO_THROW(find_location(0, -1, 1, + ignore_domain_policy())); // probability outside [0, 1] + BOOST_CHECK_NO_THROW(find_location(numeric_limits::infinity(), -1, 1, + ignore_domain_policy())); // z not finite. + + BOOST_CHECK_NO_THROW(find_location(complement(0, -1, 1, + ignore_domain_policy()))); // probability outside [0, 1] + BOOST_CHECK_NO_THROW(find_location(complement(numeric_limits::infinity(), -1, 1, + ignore_domain_policy()))); // z not finite. + + // Find location to give a probability p (0.05) of z (-2) + RealType sd = static_cast(1); // normal default standard deviation = 1. + RealType z = static_cast(-2); // z to give prob p + RealType p = static_cast(0.05); // only 5% will be below z + RealType l = find_location >(z, p, sd); + // cout << z << " " << p << " " << sd << " " << l << endl; + + normal_distribution np05pc(l, sd); // Same standard_deviation (scale) but with mean(location) shifted. + // cout << "Normal distribution with mean = " << l << " has " << "fraction <= " << z << " = " << cdf(np05pc, z) << endl; + // Check cdf such that only fraction p really is below offset mean l. + BOOST_CHECK_CLOSE_FRACTION(p, cdf(np05pc, z), tolerance); + + // Check that some policies can be applied (though not used here). + l = find_location >(z, p, sd, policy<>()); // Default policy, needs using boost::math::policies::policy; + l = find_location >(z, p, sd, boost::math::policies::policy<>()); // Default policy, fully specified. + l = find_location >(z, p, sd, ignore_domain_policy()); // find_location with new policy, using typedef. + l = find_location >(z, p, sd, policy >()); // New policy, without typedef. + + // Check that can use the complement version. + RealType q = 1 - p; // complement. + // cout << "find_location >(complement(z, q, sd)) = " << endl; + l = find_location >(complement(z, q, sd)); + + normal_distribution np95pc(l, sd); // Same standard_deviation (scale) but with mean(location) shifted + // cout << "Normal distribution with mean = " << l << " has " << "fraction <= " << z << " = " << cdf(np95pc, z) << endl; + BOOST_CHECK_CLOSE_FRACTION(q, cdf(np95pc, z), tolerance); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating-point type). + test_spots(0.0F); // Test float. + test_spots(0.0); // Test double. + #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. + #endif + #else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; + #endif + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_find_location.exe" +Running 1 test case... +Tolerance for type float is 1.19e-005 (or 0.00119%). +Tolerance for type double is 2.22e-014 (or 2.22e-012%). +Tolerance for type long double is 2.22e-014 (or 2.22e-012%). +Tolerance for type class boost::math::concepts::real_concept is 2.22e-014 (or 2.22e-012%). +*** No errors detected + +*/ + + diff --git a/test/test_find_scale.cpp b/test/test_find_scale.cpp new file mode 100644 index 000000000..4312253a4 --- /dev/null +++ b/test/test_find_scale.cpp @@ -0,0 +1,207 @@ +// test_find_scale.cpp + +// Copyright John Maddock 2007. +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Basic sanity test for find_scale function. + +// Default distribution domain error policy is +// #define BOOST_MATH_DOMAIN_ERROR_POLICY throw_on_error + +#include // for normal_distribution + using boost::math::normal; // Default type double. + using boost::math::normal_distribution; // All floating-point types. +#include // for cauchy_distribution + using boost::math::cauchy; +#include // for cauchy_distribution + using boost::math::pareto; +#include + using boost::math::find_scale; + using boost::math::complement;// will be needed by users who want complement, +#include + using boost::math::policies::policy; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE_FRACTION, BOOST_CHECK_EQUAL... +#include // for real_concept + +#include + using std::cout; using std::endl; using std::fixed; + using std::right; using std::left; using std::showpoint; + using std::showpos; using std::setw; using std::setprecision; + +#include + using std::numeric_limits; + +template // Any floating-point type RealType. +void test_spots(RealType) +{ // Parameter only provides the type, float, double... value ignored. + + // Basic sanity checks, test data may be to double precision only + // so set tolerance to 100 eps expressed as a fraction, + // or 100 eps of type double expressed as a fraction, + // whichever is the larger. + + RealType tolerance = (std::max) + (boost::math::tools::epsilon(), + static_cast(std::numeric_limits::epsilon())); + tolerance *= 100; // 100 eps as a fraction. + + cout << "Tolerance for type " << typeid(RealType).name() << " is " + << setprecision(3) << tolerance << " (or " << tolerance * 100 << "%)." << endl; + + BOOST_CHECK_THROW( // Probability outside 0 to 1. + find_scale >( + static_cast(0.), static_cast(-1.), static_cast(0.) ), + std::domain_error); + + normal_distribution n; // standard N(0,1) + BOOST_CHECK_EQUAL(n.location(), 0); // aka mean. + BOOST_CHECK_EQUAL(n.scale(), 1); // aka standard_deviation. + + // Check for 'bad' arguments. + BOOST_CHECK_THROW(find_scale(0., -1., 0.), std::domain_error); // p below 0 to 1. + BOOST_CHECK_THROW(find_scale(0., 2., 0.), std::domain_error); // p above 0 to 1. + BOOST_CHECK_THROW(find_scale(numeric_limits::infinity(), 0.5, 0.), + std::domain_error); // z not finite. + BOOST_CHECK_THROW(find_scale(numeric_limits::quiet_NaN(), -1., 0.), + std::domain_error); // z not finite + BOOST_CHECK_THROW(find_scale(0., -1., numeric_limits::quiet_NaN()), + std::domain_error); // scale not finite + + + BOOST_CHECK_THROW(find_scale(complement(0., -1., 0.)), std::domain_error); // p below 0 to 1. + BOOST_CHECK_THROW(find_scale(complement(0., 2., 0.)), std::domain_error); // p above 0 to 1. + BOOST_CHECK_THROW(find_scale(complement(numeric_limits::infinity(), 0.5, 0.)), + std::domain_error); // z not finite. + BOOST_CHECK_THROW(find_scale(complement(numeric_limits::quiet_NaN(), -1., 0.)), + std::domain_error); // z not finite + BOOST_CHECK_THROW(find_scale(complement(0., -1., numeric_limits::quiet_NaN())), + std::domain_error); // scale not finite + + BOOST_CHECK_THROW(find_scale(complement(0., -1., 0.)), std::domain_error); // p below 0 to 1. + + + // Check for ab-use with unsuitable distribution(s), for example, + // pareto distribution (and most others) can't be used with find_scale (or find_location) + // because they lack the scale and location attributes. + // BOOST_CHECK_THROW(find_scale(0., 0.5, 0.), std::domain_error); + // correctly fails to compile in find_scale() at + // BOOST_STATIC_ASSERT(::boost::math::tools::is_scaled_distribution::value); + + // Check doesn't throw when an ignore_error for domain_error policy is used. + using boost::math::policies::policy; + using boost::math::policies::domain_error; + using boost::math::policies::ignore_error; + + // Define a (bad?) policy to ignore domain errors ('bad' arguments): + typedef policy > ignore_domain_policy; + // Using a typedef is convenient, especially if it is re-used. + + BOOST_CHECK_NO_THROW(find_scale(0, -1, 1, + ignore_domain_policy())); // probability outside [0, 1] + BOOST_CHECK_NO_THROW(find_scale(numeric_limits::infinity(), -1, 1, + ignore_domain_policy())); // z not finite. + BOOST_CHECK_NO_THROW(find_scale(complement(0, -1, 1, ignore_domain_policy()))); // probability outside [0, 1] + BOOST_CHECK_NO_THROW(find_scale(complement(numeric_limits::infinity(), -1, 1, + ignore_domain_policy()))); // z not finite. + + RealType l = 0.; // standard normal distribution. + RealType sd = static_cast(1); // normal default standard deviation = 1. + normal_distribution n01(l, sd); // mean(location) = 0, standard_deviation (scale) = 1. + RealType z = static_cast(-2); // z to give prob p + //cout << "Standard normal distribution with standard deviation = " << sd + // << " has " << "fraction <= " << z << " = " << cdf(n01, z) << endl; + // Standard normal distribution with standard deviation = 1 has fraction <= -2 = 0.0227501 + + //normal_distribution np001pc(l, sd); // Same mean(location) but with standard_deviation (scale) changed. + //cout << "Normal distribution with standard deviation = " << s + // << " has " << "fraction <= " << z << " = " << cdf(np001pc, z) << endl; + + // Find scale to give a probability p (0.001) of z (-2) + RealType p = static_cast(0.001); // only 0.1% to be below z (-2). + // location (mean) remains at zero. + RealType s = find_scale >(z, p, l); + //cout << "Mean " << l << ", z " << z << ", p " << p + // << ", sd " << sd << ", find_scale " << s + // << ", difference in sd " << s - sd << endl; + // Mean 0, z -2, p 0.001, sd 1, find_scale 0.64720053440907599, difference in sd -0.352799 + + cout.precision(17); + BOOST_CHECK_CLOSE_FRACTION(s, static_cast(0.64720053440907599L), tolerance); + + normal_distribution np001pc(l, s); // Same mean(location) but with standard_deviation (scale) changed. + //cout << "Normal distribution with standard deviation = " << s + // << " has " << "fraction <= " << z << " = " << cdf(np001pc, z) << endl; + // Normal distribution with standard deviation = 0.647201 has fraction <= -2 = 0.001 + + // Check cdf such that only fraction p really is below changed standard deviation s. + BOOST_CHECK_CLOSE_FRACTION(p, cdf(np001pc, z), tolerance); + + // Check that some policies can be applied (though results not used here). + s = find_scale >(z, p, l, policy<>()); // Default policy, needs using boost::math::policies::policy; + s = find_scale >(z, p, l, boost::math::policies::policy<>()); // Default policy, fully specified. + s = find_scale >(z, p, l, ignore_domain_policy()); // find_scale with new policy, using typedef. + s = find_scale >(z, p, l, policy >()); // New policy, without typedef. + + // Check that can use the complement version too. + RealType q = 1 - p; // complement. + s = find_scale >(complement(z, q, l)); // Implicit default policy. + BOOST_CHECK_CLOSE_FRACTION(s, static_cast(0.64720053440907599L), tolerance); + s = find_scale >(complement(z, q, l, policy<>())); // Explicit default policy. + BOOST_CHECK_CLOSE_FRACTION(s, static_cast(0.64720053440907599L), tolerance); + + normal_distribution np95pc(l, s); // Same mean(location) but with new standard_deviation (scale). + + //cout << "Mean " << l << ", z " << z << ", q " << q + //<< ", sd " << sd << ", find_scale " << s + //<< ", difference in sd " << s - sd << endl; + + //cout << "Normal distribution with standard deviation = " << s + // << " has " << "fraction <= " << z << " = " << cdf(np001pc, z) << endl; + BOOST_CHECK_CLOSE_FRACTION(q, cdf(complement(np95pc, z)), tolerance); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating-point type). + test_spots(0.0F); // Test float. + test_spots(0.0); // Test double. + #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. + #endif + #else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; + #endif + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_find_scale.exe" +Running 1 test case... +Tolerance for type float is 1.19e-005 (or 0.00119%). +Tolerance for type double is 2.22e-014 (or 2.22e-012%). +Tolerance for type long double is 2.22e-014 (or 2.22e-012%). +Tolerance for type class boost::math::concepts::real_concept is 2.22e-014 (or 2.22e-012%). +*** No errors detected + + +*/ + + diff --git a/test/test_fisher_f.cpp b/test/test_fisher_f.cpp new file mode 100644 index 000000000..978b08efd --- /dev/null +++ b/test/test_fisher_f.cpp @@ -0,0 +1,549 @@ +// test_fisher_squared.cpp + +// Copyright Paul A. Bristow 2006. +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include // for real_concept +using ::boost::math::concepts::real_concept; + +#include // for fisher_f_distribution +using boost::math::fisher_f_distribution; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE + +#include +using std::cout; +using std::endl; +#include +using std::numeric_limits; + +template +RealType naive_pdf(RealType df1, RealType df2, RealType x) +{ + // + // Calculate the PDF naively using direct evaluation + // of equation 2 from http://mathworld.wolfram.com/F-Distribution.html + // + // Our actual PDF implementation uses a completely different method, + // so this is a good sanity check that our math is correct. + // + using namespace std; // For ADL of std functions. + RealType e = boost::math::lgamma((df1 + df2) / 2); + e += log(df1) * df1 / 2; + e += log(df2) * df2 / 2; + e += log(x) * ((df1 / 2) - 1); + e -= boost::math::lgamma(df1 / 2); + e -= boost::math::lgamma(df2 / 2); + e -= log(df2 + x * df1) * (df1 + df2) / 2; + return exp(e); +} + +template +void test_spot( + RealType df1, // Degrees of freedom 1 + RealType df2, // Degrees of freedom 2 + RealType cs, // Chi Square statistic + RealType P, // CDF + RealType Q, // Complement of CDF + RealType tol) // Test tolerance +{ + boost::math::fisher_f_distribution dist(df1, df2); + BOOST_CHECK_CLOSE( + cdf(dist, cs), P, tol); + BOOST_CHECK_CLOSE( + pdf(dist, cs), naive_pdf(dist.degrees_of_freedom1(), dist.degrees_of_freedom2(), cs), tol); + if((P < 0.999) && (Q < 0.999)) + { + // + // We can only check this if P is not too close to 1, + // so that we can guarentee Q is free of error: + // + BOOST_CHECK_CLOSE( + cdf(complement(dist, cs)), Q, tol); + BOOST_CHECK_CLOSE( + quantile(dist, P), cs, tol); + BOOST_CHECK_CLOSE( + quantile(complement(dist, Q)), cs, tol); + } +} + +// +// This test data is taken from the tables of upper +// critical values of the F distribution available +// at http://www.itl.nist.gov/div898/handbook/eda/section3/eda3673.htm +// +double q[] = { 0.10, 0.05, 0.025, 0.01, 0.001 }; +double upper_critical_values[][10] = { + { 161.448,199.500,215.707,224.583,230.162,233.986,236.768,238.882,240.543,241.882 }, + { 18.513, 19.000, 19.164, 19.247, 19.296, 19.330, 19.353, 19.371, 19.385, 19.396 }, + { 10.128, 9.552, 9.277, 9.117, 9.013, 8.941, 8.887, 8.845, 8.812, 8.786 }, + { 7.709, 6.944, 6.591, 6.388, 6.256, 6.163, 6.094, 6.041, 5.999, 5.964 }, + { 6.608, 5.786, 5.409, 5.192, 5.050, 4.950, 4.876, 4.818, 4.772, 4.735 }, + { 5.987, 5.143, 4.757, 4.534, 4.387, 4.284, 4.207, 4.147, 4.099, 4.060 }, + { 5.591, 4.737, 4.347, 4.120, 3.972, 3.866, 3.787, 3.726, 3.677, 3.637 }, + { 5.318, 4.459, 4.066, 3.838, 3.687, 3.581, 3.500, 3.438, 3.388, 3.347 }, + { 5.117, 4.256, 3.863, 3.633, 3.482, 3.374, 3.293, 3.230, 3.179, 3.137 }, + { 4.965, 4.103, 3.708, 3.478, 3.326, 3.217, 3.135, 3.072, 3.020, 2.978 }, + { 4.844, 3.982, 3.587, 3.357, 3.204, 3.095, 3.012, 2.948, 2.896, 2.854 }, + { 4.747, 3.885, 3.490, 3.259, 3.106, 2.996, 2.913, 2.849, 2.796, 2.753 }, + { 4.667, 3.806, 3.411, 3.179, 3.025, 2.915, 2.832, 2.767, 2.714, 2.671 }, + { 4.600, 3.739, 3.344, 3.112, 2.958, 2.848, 2.764, 2.699, 2.646, 2.602 }, + { 4.543, 3.682, 3.287, 3.056, 2.901, 2.790, 2.707, 2.641, 2.588, 2.544 }, + { 4.494, 3.634, 3.239, 3.007, 2.852, 2.741, 2.657, 2.591, 2.538, 2.494 }, + { 4.451, 3.592, 3.197, 2.965, 2.810, 2.699, 2.614, 2.548, 2.494, 2.450 }, + { 4.414, 3.555, 3.160, 2.928, 2.773, 2.661, 2.577, 2.510, 2.456, 2.412 }, + { 4.381, 3.522, 3.127, 2.895, 2.740, 2.628, 2.544, 2.477, 2.423, 2.378 }, + { 4.351, 3.493, 3.098, 2.866, 2.711, 2.599, 2.514, 2.447, 2.393, 2.348 }, + { 4.325, 3.467, 3.072, 2.840, 2.685, 2.573, 2.488, 2.420, 2.366, 2.321 }, + { 4.301, 3.443, 3.049, 2.817, 2.661, 2.549, 2.464, 2.397, 2.342, 2.297 }, + { 4.279, 3.422, 3.028, 2.796, 2.640, 2.528, 2.442, 2.375, 2.320, 2.275 }, + { 4.260, 3.403, 3.009, 2.776, 2.621, 2.508, 2.423, 2.355, 2.300, 2.255 }, + { 4.242, 3.385, 2.991, 2.759, 2.603, 2.490, 2.405, 2.337, 2.282, 2.236 }, + { 4.225, 3.369, 2.975, 2.743, 2.587, 2.474, 2.388, 2.321, 2.265, 2.220 }, + { 4.210, 3.354, 2.960, 2.728, 2.572, 2.459, 2.373, 2.305, 2.250, 2.204 }, + { 4.196, 3.340, 2.947, 2.714, 2.558, 2.445, 2.359, 2.291, 2.236, 2.190 }, + { 4.183, 3.328, 2.934, 2.701, 2.545, 2.432, 2.346, 2.278, 2.223, 2.177 }, + { 4.171, 3.316, 2.922, 2.690, 2.534, 2.421, 2.334, 2.266, 2.211, 2.165 }, + { 4.160, 3.305, 2.911, 2.679, 2.523, 2.409, 2.323, 2.255, 2.199, 2.153 }, + { 4.149, 3.295, 2.901, 2.668, 2.512, 2.399, 2.313, 2.244, 2.189, 2.142 }, + { 4.139, 3.285, 2.892, 2.659, 2.503, 2.389, 2.303, 2.235, 2.179, 2.133 }, + { 4.130, 3.276, 2.883, 2.650, 2.494, 2.380, 2.294, 2.225, 2.170, 2.123 }, + { 4.121, 3.267, 2.874, 2.641, 2.485, 2.372, 2.285, 2.217, 2.161, 2.114 }, + { 4.113, 3.259, 2.866, 2.634, 2.477, 2.364, 2.277, 2.209, 2.153, 2.106 }, + { 4.105, 3.252, 2.859, 2.626, 2.470, 2.356, 2.270, 2.201, 2.145, 2.098 }, + { 4.098, 3.245, 2.852, 2.619, 2.463, 2.349, 2.262, 2.194, 2.138, 2.091 }, + { 4.091, 3.238, 2.845, 2.612, 2.456, 2.342, 2.255, 2.187, 2.131, 2.084 }, + { 4.085, 3.232, 2.839, 2.606, 2.449, 2.336, 2.249, 2.180, 2.124, 2.077 }, + { 4.079, 3.226, 2.833, 2.600, 2.443, 2.330, 2.243, 2.174, 2.118, 2.071 }, + { 4.073, 3.220, 2.827, 2.594, 2.438, 2.324, 2.237, 2.168, 2.112, 2.065 }, + { 4.067, 3.214, 2.822, 2.589, 2.432, 2.318, 2.232, 2.163, 2.106, 2.059 }, + { 4.062, 3.209, 2.816, 2.584, 2.427, 2.313, 2.226, 2.157, 2.101, 2.054 }, + { 4.057, 3.204, 2.812, 2.579, 2.422, 2.308, 2.221, 2.152, 2.096, 2.049 }, + { 4.052, 3.200, 2.807, 2.574, 2.417, 2.304, 2.216, 2.147, 2.091, 2.044 }, + { 4.047, 3.195, 2.802, 2.570, 2.413, 2.299, 2.212, 2.143, 2.086, 2.039 }, + { 4.043, 3.191, 2.798, 2.565, 2.409, 2.295, 2.207, 2.138, 2.082, 2.035 }, + { 4.038, 3.187, 2.794, 2.561, 2.404, 2.290, 2.203, 2.134, 2.077, 2.030 }, + { 4.034, 3.183, 2.790, 2.557, 2.400, 2.286, 2.199, 2.130, 2.073, 2.026 }, + { 4.030, 3.179, 2.786, 2.553, 2.397, 2.283, 2.195, 2.126, 2.069, 2.022 }, + { 4.027, 3.175, 2.783, 2.550, 2.393, 2.279, 2.192, 2.122, 2.066, 2.018 }, + { 4.023, 3.172, 2.779, 2.546, 2.389, 2.275, 2.188, 2.119, 2.062, 2.015 }, + { 4.020, 3.168, 2.776, 2.543, 2.386, 2.272, 2.185, 2.115, 2.059, 2.011 }, + { 4.016, 3.165, 2.773, 2.540, 2.383, 2.269, 2.181, 2.112, 2.055, 2.008 }, + { 4.013, 3.162, 2.769, 2.537, 2.380, 2.266, 2.178, 2.109, 2.052, 2.005 }, + { 4.010, 3.159, 2.766, 2.534, 2.377, 2.263, 2.175, 2.106, 2.049, 2.001 }, + { 4.007, 3.156, 2.764, 2.531, 2.374, 2.260, 2.172, 2.103, 2.046, 1.998 }, + { 4.004, 3.153, 2.761, 2.528, 2.371, 2.257, 2.169, 2.100, 2.043, 1.995 }, + { 4.001, 3.150, 2.758, 2.525, 2.368, 2.254, 2.167, 2.097, 2.040, 1.993 }, + { 3.998, 3.148, 2.755, 2.523, 2.366, 2.251, 2.164, 2.094, 2.037, 1.990 }, + { 3.996, 3.145, 2.753, 2.520, 2.363, 2.249, 2.161, 2.092, 2.035, 1.987 }, + { 3.993, 3.143, 2.751, 2.518, 2.361, 2.246, 2.159, 2.089, 2.032, 1.985 }, + { 3.991, 3.140, 2.748, 2.515, 2.358, 2.244, 2.156, 2.087, 2.030, 1.982 }, + { 3.989, 3.138, 2.746, 2.513, 2.356, 2.242, 2.154, 2.084, 2.027, 1.980 }, + { 3.986, 3.136, 2.744, 2.511, 2.354, 2.239, 2.152, 2.082, 2.025, 1.977 }, + { 3.984, 3.134, 2.742, 2.509, 2.352, 2.237, 2.150, 2.080, 2.023, 1.975 }, + { 3.982, 3.132, 2.740, 2.507, 2.350, 2.235, 2.148, 2.078, 2.021, 1.973 }, + { 3.980, 3.130, 2.737, 2.505, 2.348, 2.233, 2.145, 2.076, 2.019, 1.971 }, + { 3.978, 3.128, 2.736, 2.503, 2.346, 2.231, 2.143, 2.074, 2.017, 1.969 }, + { 3.976, 3.126, 2.734, 2.501, 2.344, 2.229, 2.142, 2.072, 2.015, 1.967 }, + { 3.974, 3.124, 2.732, 2.499, 2.342, 2.227, 2.140, 2.070, 2.013, 1.965 }, + { 3.972, 3.122, 2.730, 2.497, 2.340, 2.226, 2.138, 2.068, 2.011, 1.963 }, + { 3.970, 3.120, 2.728, 2.495, 2.338, 2.224, 2.136, 2.066, 2.009, 1.961 }, + { 3.968, 3.119, 2.727, 2.494, 2.337, 2.222, 2.134, 2.064, 2.007, 1.959 }, + { 3.967, 3.117, 2.725, 2.492, 2.335, 2.220, 2.133, 2.063, 2.006, 1.958 }, + { 3.965, 3.115, 2.723, 2.490, 2.333, 2.219, 2.131, 2.061, 2.004, 1.956 }, + { 3.963, 3.114, 2.722, 2.489, 2.332, 2.217, 2.129, 2.059, 2.002, 1.954 }, + { 3.962, 3.112, 2.720, 2.487, 2.330, 2.216, 2.128, 2.058, 2.001, 1.953 }, + { 3.960, 3.111, 2.719, 2.486, 2.329, 2.214, 2.126, 2.056, 1.999, 1.951 }, + { 3.959, 3.109, 2.717, 2.484, 2.327, 2.213, 2.125, 2.055, 1.998, 1.950 }, + { 3.957, 3.108, 2.716, 2.483, 2.326, 2.211, 2.123, 2.053, 1.996, 1.948 }, + { 3.956, 3.107, 2.715, 2.482, 2.324, 2.210, 2.122, 2.052, 1.995, 1.947 }, + { 3.955, 3.105, 2.713, 2.480, 2.323, 2.209, 2.121, 2.051, 1.993, 1.945 }, + { 3.953, 3.104, 2.712, 2.479, 2.322, 2.207, 2.119, 2.049, 1.992, 1.944 }, + { 3.952, 3.103, 2.711, 2.478, 2.321, 2.206, 2.118, 2.048, 1.991, 1.943 }, + { 3.951, 3.101, 2.709, 2.476, 2.319, 2.205, 2.117, 2.047, 1.989, 1.941 }, + { 3.949, 3.100, 2.708, 2.475, 2.318, 2.203, 2.115, 2.045, 1.988, 1.940 }, + { 3.948, 3.099, 2.707, 2.474, 2.317, 2.202, 2.114, 2.044, 1.987, 1.939 }, + { 3.947, 3.098, 2.706, 2.473, 2.316, 2.201, 2.113, 2.043, 1.986, 1.938 }, + { 3.946, 3.097, 2.705, 2.472, 2.315, 2.200, 2.112, 2.042, 1.984, 1.936 }, + { 3.945, 3.095, 2.704, 2.471, 2.313, 2.199, 2.111, 2.041, 1.983, 1.935 }, + { 3.943, 3.094, 2.703, 2.470, 2.312, 2.198, 2.110, 2.040, 1.982, 1.934 }, + { 3.942, 3.093, 2.701, 2.469, 2.311, 2.197, 2.109, 2.038, 1.981, 1.933 }, + { 3.941, 3.092, 2.700, 2.467, 2.310, 2.196, 2.108, 2.037, 1.980, 1.932 }, + { 3.940, 3.091, 2.699, 2.466, 2.309, 2.195, 2.106, 2.036, 1.979, 1.931 }, + { 3.939, 3.090, 2.698, 2.465, 2.308, 2.194, 2.105, 2.035, 1.978, 1.930 }, + { 3.938, 3.089, 2.697, 2.465, 2.307, 2.193, 2.104, 2.034, 1.977, 1.929 }, + { 3.937, 3.088, 2.696, 2.464, 2.306, 2.192, 2.103, 2.033, 1.976, 1.928 }, + { 3.936, 3.087, 2.696, 2.463, 2.305, 2.191, 2.103, 2.032, 1.975, 1.927 } +}; + + +template // Any floating-point type RealType. +void test_spots(RealType) +{ + // Basic sanity checks, test data is to three decimal places only + // so set tolerance to 0.002 expressed as a persentage. Note that + // we can't even get full 3 digit accuracy since the data we're + // using as input has *already been rounded*, leading to even + // greater differences in output. As an accuracy test this is + // pretty useless, but it is an excellent sanity check. + + RealType tolerance = 0.002f * 100; + cout << "Tolerance = " << tolerance << "%." << endl; + + using boost::math::fisher_f_distribution; + using ::boost::math::fisher_f; + using ::boost::math::cdf; + using ::boost::math::pdf; + + for(unsigned i = 0; i < sizeof(upper_critical_values) / sizeof(upper_critical_values[0]); ++i) + { + for(unsigned j = 0; j < sizeof(upper_critical_values[0])/sizeof(upper_critical_values[0][0]); ++j) + { + test_spot( + static_cast(j+1), // degrees of freedom 1 + static_cast(i+1), // degrees of freedom 2 + static_cast(upper_critical_values[i][j]), // test statistic F + static_cast(0.95), // Probability of result (CDF), P + static_cast(0.05), // Q = 1 - P + tolerance); + } + } + + // http://www.vias.org/simulations/simusoft_distcalc.html + // Distcalc version 1.2 Copyright 2002 H Lohninger, TU Wein + // H.Lohninger: Teach/Me Data Analysis, Springer-Verlag, Berlin-New York-Tokyo, 1999. ISBN 3-540-14743-8 + // The Windows calculator is available zipped distcalc.exe for download at: + // http://www.vias.org/simulations/simu_stat.html + + // This interactive Windows program was used to find some combination for which the + // result appears to be exact. No doubt this can be done analytically too, + // by mathematicians! + + // Some combinations for which the result is 'exact', or at least is to 40 decimal digits. + // 40 decimal digits includes 128-bit significand User Defined Floating-Point types. + // These all pass tests at near epsilon accuracy for the floating-point type. + tolerance = boost::math::tools::epsilon() * 5 * 100; + cout << "Tolerance = " << tolerance << "%." << endl; + BOOST_CHECK_CLOSE( + cdf(fisher_f_distribution( + static_cast(1.), // df1 + static_cast(2.)), // df2 + static_cast(2.)/static_cast(3.) ), // F + static_cast(0.5), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(1.), // df1 + static_cast(2.)), // df2 + static_cast(1.6L))), // F + static_cast(0.333333333333333333333333333333333333L), // probability. + tolerance * 100); // needs higher tolerance at 128-bit precision - value not exact? + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(1.), // df1 + static_cast(2.)), // df2 + static_cast(6.5333333333333333333333333333333333L))), // F + static_cast(0.125L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(1.))), // F + static_cast(0.5L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(3.))), // F + static_cast(0.25L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(3.))), // F + static_cast(0.25L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(7.))), // F + static_cast(0.125L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(9.))), // F + static_cast(0.1L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(19.))), // F + static_cast(0.05L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(29.))), // F + static_cast(0.03333333333333333333333333333333333333333L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(99.))), // F + static_cast(0.01L), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(4.), // df1 + static_cast(4.)), // df2 + static_cast(9.))), // F + static_cast(0.028L), // probability. + tolerance*10); // not quite exact??? + + BOOST_CHECK_CLOSE( + cdf(complement(fisher_f_distribution( + static_cast(8.), // df1 + static_cast(8.)), // df2 + static_cast(1.))), // F + static_cast(0.5L), // probability. + tolerance); + +// Inverse tests + + BOOST_CHECK_CLOSE( + quantile(complement(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(0.03333333333333333333333333333333333333333L))), // probability + static_cast(29.), // F expected. + tolerance*10); + + BOOST_CHECK_CLOSE( + quantile(fisher_f_distribution( + static_cast(2.), // df1 + static_cast(2.)), // df2 + static_cast(1.0L - 0.03333333333333333333333333333333333333333L)), // probability + static_cast(29.), // F expected. + tolerance*10); + + +// Also note limit cases for F(1, infinity) == normal distribution +// F(1, n2) == Student's t distribution +// F(n1, infinity) == Chisq distribution + +// These might allow some further cross checks? + + RealType tol2 = boost::math::tools::epsilon() * 5 * 100; // 5 eps as a percent + cout << "Tolerance = " << tol2 << "%." << endl; + fisher_f_distribution dist(static_cast(8), static_cast(6)); + RealType x = 7; + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(6)/static_cast(4), tol2); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(2 * 6 * 6 * (8 + 6 - 2)) / static_cast(8 * 16 * 2), tol2); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , sqrt(static_cast(2 * 6 * 6 * (8 + 6 - 2)) / static_cast(8 * 16 * 2)), tol2); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol2); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tol2); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tol2); + BOOST_CHECK_CLOSE( + mode(dist) + , static_cast(6*6)/static_cast(8*8), tol2); + + fisher_f_distribution dist2(static_cast(8), static_cast(12)); + BOOST_CHECK_CLOSE( + skewness(dist2) + , static_cast(26 * sqrt(64.0L)) / (12*6), tol2); + BOOST_CHECK_CLOSE( + kurtosis_excess(dist2) + , static_cast(6272) * 12 / 3456, tol2); + BOOST_CHECK_CLOSE( + kurtosis(dist2) + , static_cast(6272) * 12 / 3456 + 3, tol2); + // special cases: + BOOST_CHECK_THROW( + pdf( + fisher_f_distribution(static_cast(1), static_cast(1)), + static_cast(0)), std::overflow_error + ); + BOOST_CHECK_EQUAL( + pdf(fisher_f_distribution(2, 2), static_cast(0)) + , static_cast(1.0f)); + BOOST_CHECK_EQUAL( + pdf(fisher_f_distribution(3, 3), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(fisher_f_distribution(1, 1), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(fisher_f_distribution(2, 2), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(fisher_f_distribution(3, 3), static_cast(0)) + , static_cast(0.0f)); + BOOST_CHECK_EQUAL( + cdf(complement(fisher_f_distribution(1, 1), static_cast(0))) + , static_cast(1)); + BOOST_CHECK_EQUAL( + cdf(complement(fisher_f_distribution(2, 2), static_cast(0))) + , static_cast(1)); + BOOST_CHECK_EQUAL( + cdf(complement(fisher_f_distribution(3, 3), static_cast(0))) + , static_cast(1)); + + BOOST_CHECK_THROW( + pdf( + fisher_f_distribution(-1, 2), + static_cast(1)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + fisher_f_distribution(1, -1), + static_cast(1)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( + fisher_f_distribution(8, 2), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + fisher_f_distribution(-1, 1), + static_cast(1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( + fisher_f_distribution(8, 4), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf(complement( + fisher_f_distribution(-1, 2), + static_cast(1))), std::domain_error + ); + BOOST_CHECK_THROW( + cdf(complement( + fisher_f_distribution(8, 4), + static_cast(-1))), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + fisher_f_distribution(-1, 2), + static_cast(0.5)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + fisher_f_distribution(8, 8), + static_cast(-1)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( + fisher_f_distribution(8, 8), + static_cast(1.1)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile(complement( + fisher_f_distribution(2, -1), + static_cast(0.5))), std::domain_error + ); + BOOST_CHECK_THROW( + quantile(complement( + fisher_f_distribution(8, 8), + static_cast(-1))), std::domain_error + ); + BOOST_CHECK_THROW( + quantile(complement( + fisher_f_distribution(8, 8), + static_cast(1.1))), std::domain_error + ); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + + // Check that can generate fisher distribution using the two convenience methods: + boost::math::fisher_f myf1(1., 2); // Using typedef + fisher_f_distribution<> myf2(1., 2); // Using default RealType double. + + + // Basic sanity-check spot values. + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. + test_spots(0.0); // Test double. +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#endif + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_fisher.exe" +Running 1 test case... +Tolerance = 0.2%. +Tolerance = 5.96046e-005%. +Tolerance = 5.96046e-005%. +Tolerance = 0.2%. +Tolerance = 1.11022e-013%. +Tolerance = 1.11022e-013%. +Tolerance = 0.2%. +Tolerance = 1.11022e-013%. +Tolerance = 1.11022e-013%. +Tolerance = 0.2%. +Tolerance = 1.11022e-013%. +Tolerance = 1.11022e-013%. +*** No errors detected + +*/ + + + diff --git a/test/test_gamma.cpp b/test/test_gamma.cpp new file mode 100644 index 000000000..f5801084d --- /dev/null +++ b/test/test_gamma.cpp @@ -0,0 +1,497 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_gamma_hooks.hpp" +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the functions tgamma and lgamma, and the +// function tgamma1pm1. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // G++ on Darwin: results are just slightly worse than we might hope for + // but still pretty good: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::tgamma", 100, 15); // test function + + // + // G++ on Linux, result vary a bit by processor type, + // on Itanium results are *much* better than listed here, + // but x86 appears to have much less accurate std::pow + // that throws off the results: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::tgamma", 400, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::lgamma", 30, 10); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + "near (1|2|-10)", // test data group + "boost::math::tgamma", 10, 5); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + "near (1|2|-10)", // test data group + "boost::math::lgamma", 50, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + "tgamma1pm1.*", // test data group + "boost::math::tgamma1pm1", 50, 15); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + "real_concept", // test type(s) + "factorials", // test data group + "boost::math::tgamma", 220, 70); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + "real_concept", // test type(s) + "near (0|-55)", // test data group + "boost::math::(t|l)gamma", 130, 80); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + "real_concept", // test type(s) + "tgamma1pm1.*", // test data group + "boost::math::tgamma1pm1", 40, 10); // test function + // + // HP-UX results: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::tgamma", 5, 4); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + "near (0|-55)", // test data group + "boost::math::tgamma", 10, 5); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + "near (1|2|-10)", // test data group + "boost::math::lgamma", 250, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + "real_concept", // test type(s) + "factorials", // test data group + "boost::math::lgamma", 50, 20); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX", // platform + "real_concept", // test type(s) + "tgamma1pm1.*", // test data group + "boost::math::tgamma1pm1", 200, 80); // test function + // + // Tru64: + // + add_expected_result( + ".*Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "factorials", // test data group + "boost::math::lgamma", 50, 20); // test function + // + // Sun OS: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::tgamma", 300, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "Sun.*", // platform + "real_concept", // test type(s) + "factorials", // test data group + "boost::math::tgamma", 300, 50); // test function + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::tgamma", 4, 1); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "factorials", // test data group + "boost::math::lgamma", 9, 1); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "near (0|-55)", // test data group + "boost::math::(t|l)gamma", 200, 100); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "near (1|2|-10)", // test data group + "boost::math::tgamma", 10, 5); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "near (1|2|-10)", // test data group + "boost::math::lgamma", 14, 7); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "tgamma1pm1.*", // test data group + "boost::math::tgamma1pm1", 30, 9); // test function + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "factorials", // test data group + "boost::math::tgamma", 70, 25); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "factorials", // test data group + "boost::math::lgamma", 40, 4); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "near.*", // test data group + "boost::math::tgamma", 80, 60); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "near.*", // test data group + "boost::math::lgamma", 10000000, 10000000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "tgamma1pm1.*", // test data group + "boost::math::tgamma1pm1", 20, 5); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_gamma(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::tgamma; +#else + pg funcp = boost::math::tgamma; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test tgamma against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::tgamma; + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::tgamma"); + } +#endif + // + // test lgamma against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::lgamma; +#else + funcp = boost::math::lgamma; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::lgamma", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::lgamma; + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(2)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::lgamma"); + } +#endif + + std::cout << std::endl; +} + +template +void do_test_gammap1m1(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::tgamma1pm1; +#else + pg funcp = boost::math::tgamma1pm1; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test tgamma1pm1 against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0), + extract_result(1)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma1pm1", test_name); + std::cout << std::endl; +} + +template +void test_gamma(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value, gamma and lgamma: + // + // gamma and lgamma at integer and half integer values: + // boost::array, N> factorials; + // + // gamma and lgamma for z near 0: + // boost::array, N> near_0; + // + // gamma and lgamma for z near 1: + // boost::array, N> near_1; + // + // gamma and lgamma for z near 2: + // boost::array, N> near_2; + // + // gamma and lgamma for z near -10: + // boost::array, N> near_m10; + // + // gamma and lgamma for z near -55: + // boost::array, N> near_m55; + // + // The last two cases are chosen more or less at random, + // except that one is even and the other odd, and both are + // at negative poles. The data near zero also tests near + // a pole, the data near 1 and 2 are to probe lgamma as + // the result -> 0. + // +# include "test_gamma_data.ipp" + + do_test_gamma(factorials, name, "factorials"); + do_test_gamma(near_0, name, "near 0"); + do_test_gamma(near_1, name, "near 1"); + do_test_gamma(near_2, name, "near 2"); + do_test_gamma(near_m10, name, "near -10"); + do_test_gamma(near_m55, name, "near -55"); + + // + // And now tgamma1pm1 which computes gamma(1+dz)-1: + // + do_test_gammap1m1(gammap1m1_data, name, "tgamma1pm1(dz)"); +} + +template +void test_spots(T) +{ + // + // basic sanity checks, tolerance is 50 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 5000; + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(3.5)), static_cast(3.3233509704478425511840640312646472177454052302295L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(0.125)), static_cast(7.5339415987976119046992298412151336246104195881491L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(-0.125)), static_cast(-8.7172188593831756100190140408231437691829605421405L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(-3.125)), static_cast(1.1668538708507675587790157356605097019141636072094L), tolerance); + // Lower tolerance on this one, is only really needed on Linux x86 systems, result is mostly down to std lib accuracy: + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(-53249.0/1024)), static_cast(-1.2646559519067605488251406578743995122462767733517e-65L), tolerance * 3); + + int sign = 1; + BOOST_CHECK_CLOSE(::boost::math::lgamma(static_cast(3.5), &sign), static_cast(1.2009736023470742248160218814507129957702389154682L), tolerance); + BOOST_CHECK(sign == 1); + BOOST_CHECK_CLOSE(::boost::math::lgamma(static_cast(0.125), &sign), static_cast(2.0194183575537963453202905211670995899482809521344L), tolerance); + BOOST_CHECK(sign == 1); + BOOST_CHECK_CLOSE(::boost::math::lgamma(static_cast(-0.125), &sign), static_cast(2.1653002489051702517540619481440174064962195287626L), tolerance); + BOOST_CHECK(sign == -1); + BOOST_CHECK_CLOSE(::boost::math::lgamma(static_cast(-3.125), &sign), static_cast(0.1543111276840418242676072830970532952413339012367L), tolerance); + BOOST_CHECK(sign == 1); + BOOST_CHECK_CLOSE(::boost::math::lgamma(static_cast(-53249.0/1024), &sign), static_cast(-149.43323093420259741100038126078721302600128285894L), tolerance); + BOOST_CHECK(sign == -1); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_spots(0.0F); +#endif + test_spots(0.0); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); + test_spots(boost::math::concepts::real_concept(0.1)); +#endif + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_gamma(0.1F, "float"); +#endif + test_gamma(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_gamma(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_gamma(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_gamma_data.ipp b/test/test_gamma_data.ipp new file mode 100644 index 000000000..185b41252 --- /dev/null +++ b/test/test_gamma_data.ipp @@ -0,0 +1,582 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 198> factorials = { { + { SC_(1), SC_(1), SC_(0) }, + { SC_(2), SC_(1), SC_(0) }, + { SC_(3), SC_(2), SC_(0.6931471805599453094172321214581765680755) }, + { SC_(4), SC_(6), SC_(1.791759469228055000812477358380702272723) }, + { SC_(5), SC_(24), SC_(3.178053830347945619646941601297055408874) }, + { SC_(6), SC_(120), SC_(4.7874917427820459942477009345232430484) }, + { SC_(7), SC_(720), SC_(6.579251212010100995060178292903945321123) }, + { SC_(8), SC_(5040), SC_(8.52516136106541430016553103634712505076) }, + { SC_(9), SC_(40320), SC_(10.60460290274525022841722740072165475499) }, + { SC_(10), SC_(362880), SC_(12.80182748008146961120771787456670616428) }, + { SC_(11), SC_(3628800), SC_(15.10441257307551529522570932925107037188) }, + { SC_(12), SC_(39916800), SC_(17.5023078458738858392876529072161996717) }, + { SC_(13), SC_(479001600), SC_(19.9872144956618861495173623870550785125) }, + { SC_(14), SC_(6227020800.0), SC_(22.55216385312342288557084982862039711731) }, + { SC_(15), SC_(87178291200.0), SC_(25.19122118273868150009343469352175341502) }, + { SC_(16), SC_(1307674368000.0), SC_(27.89927138384089156608943926367046675919) }, + { SC_(17), SC_(20922789888000.0), SC_(30.6718601060806728037583677495031730315) }, + { SC_(18), SC_(355687428096000.0), SC_(33.50507345013688888400790236737629956708) }, + { SC_(19), SC_(6402373705728000.0), SC_(36.39544520803305357621562496267952754445) }, + { SC_(20), SC_(121645100408832000.0), SC_(39.33988418719949403622465239456738108169) }, + { SC_(21), SC_(0.243290200817664e19), SC_(42.33561646075348502965987597070992185737) }, + { SC_(22), SC_(0.5109094217170944e20), SC_(45.38013889847690802616047395107562729165) }, + { SC_(23), SC_(0.112400072777760768e22), SC_(48.47118135183522387963964965049893315955) }, + { SC_(24), SC_(0.2585201673888497664e23), SC_(51.60667556776437357044640248230912927799) }, + { SC_(25), SC_(0.62044840173323943936e24), SC_(54.78472939811231919009334408360618468687) }, + { SC_(26), SC_(0.15511210043330985984e26), SC_(58.00360522298051993929486275005855996592) }, + { SC_(27), SC_(0.403291461126605635584e27), SC_(61.2617017610020019847655823130820551388) }, + { SC_(28), SC_(0.10888869450418352160768e29), SC_(64.55753862700633105895131802384963225274) }, + { SC_(29), SC_(0.304888344611713860501504e30), SC_(67.88974313718153498289113501020916511853) }, + { SC_(30), SC_(0.8841761993739701954543616e31), SC_(71.25703896716800901007440704257107672402) }, + { SC_(31), SC_(0.26525285981219105863630848e33), SC_(74.65823634883016438548764373417796663627) }, + { SC_(32), SC_(0.822283865417792281772556288e34), SC_(78.09222355331531063141680805872032384672) }, + { SC_(33), SC_(0.26313083693369353016721801216e36), SC_(81.5579594561150371785029686660112066871) }, + { SC_(34), SC_(0.868331761881188649551819440128e37), SC_(85.05446701758151741396015748089886169157) }, + { SC_(35), SC_(0.29523279903960414084761860964352e39), SC_(88.58082754219767880362692422023016479523) }, + { SC_(36), SC_(0.103331479663861449296666513375232e41), SC_(92.13617560368709248333303629689953216439) }, + { SC_(37), SC_(0.3719933267899012174679994481508352e42), SC_(95.71969454214320248495799101366093670984) }, + { SC_(38), SC_(0.137637530912263450463159795815809024e44), SC_(99.33061245478742692932608668469238387374) }, + { SC_(39), SC_(0.5230226174666011117600072241000742912e45), SC_(102.9681986145138126987523462380384139791) }, + { SC_(40), SC_(0.203978820811974433586402817399028973568e47), SC_(106.6317602606434591262010789165262582885) }, + { SC_(41), SC_(0.815915283247897734345611269596115894272e48), SC_(110.3206397147573954290535346141269756323) }, + { SC_(42), SC_(0.3345252661316380710817006205344075166515e50), SC_(114.0342117814617032329202979871643832206) }, + { SC_(43), SC_(0.1405006117752879898543142606244511569936e52), SC_(117.771881399745071538838128088988265223) }, + { SC_(44), SC_(0.6041526306337383563735513206851399750726e53), SC_(121.5330815154386339623109706023341122586) }, + { SC_(45), SC_(0.265827157478844876804362581101461589032e55), SC_(125.3172711493568951252073784232155946945) }, + { SC_(46), SC_(0.1196222208654801945619631614956577150644e57), SC_(129.1239336391272148825986282302868337433) }, + { SC_(47), SC_(0.5502622159812088949850305428800254892962e58), SC_(132.9525750356163098828226131835552064299) }, + { SC_(48), SC_(0.2586232415111681806429643551536119799692e60), SC_(136.8027226373263684696435638533273801388) }, + { SC_(49), SC_(0.1241391559253607267086228904737337503852e62), SC_(140.6739236482342593987077375760826121157) }, + { SC_(50), SC_(0.6082818640342675608722521633212953768876e63), SC_(144.565743946344886008918443062968971575) }, + { SC_(51), SC_(0.3041409320171337804361260816606476884438e65), SC_(148.4777669517730320675371938508795234221) }, + { SC_(52), SC_(0.1551118753287382280224243016469303211063e67), SC_(152.4095925844973578391819737056751756623) }, + { SC_(53), SC_(0.8065817517094387857166063685640376697529e68), SC_(156.3608363030787851940699253901568474033) }, + { SC_(54), SC_(0.427488328406002556429801375338939964969e70), SC_(160.3311282166309070282143945291859051737) }, + { SC_(55), SC_(0.2308436973392413804720927426830275810833e72), SC_(164.3201122631951814118173623614116588557) }, + { SC_(56), SC_(0.1269640335365827592596510084756651695958e74), SC_(168.327445448427652330480065272602975795) }, + { SC_(57), SC_(0.7109985878048634518540456474637249497365e75), SC_(172.3527971391628015638371143804206852289) }, + { SC_(58), SC_(0.4052691950487721675568060190543232213498e77), SC_(176.3958484069973517152413870492310644708) }, + { SC_(59), SC_(0.2350561331282878571829474910515074683829e79), SC_(180.4562914175437710518418912030511526443) }, + { SC_(60), SC_(0.1386831185456898357379390197203894063459e81), SC_(184.5338288614494905024579415767708502684) }, + { SC_(61), SC_(0.8320987112741390144276341183223364380754e82), SC_(188.6281734236715911872884103898359167487) }, + { SC_(62), SC_(0.507580213877224798800856812176625227226e84), SC_(192.7390472878449024360397994932615314951) }, + { SC_(63), SC_(0.3146997326038793752565312235495076408801e86), SC_(196.8661816728899939913861959392620652736) }, + { SC_(64), SC_(0.1982608315404440064116146708361898137545e88), SC_(201.0093163992815266792820391565502964125) }, + { SC_(65), SC_(0.1268869321858841641034333893351614808029e90), SC_(205.168199482641198535785431885299355821) }, + { SC_(66), SC_(0.8247650592082470666723170306785496252186e91), SC_(209.3425867525368356464396786600908620653) }, + { SC_(67), SC_(0.5443449390774430640037292402478427526443e93), SC_(213.5322414945632611913140995964366936378) }, + { SC_(68), SC_(0.3647111091818868528824985909660546442717e95), SC_(217.7369341139542272509841715928004163884) }, + { SC_(69), SC_(0.2480035542436830599600990418569171581047e97), SC_(221.9564418191303339500681704535898960601) }, + { SC_(70), SC_(0.1711224524281413113724683388812728390923e99), SC_(226.1905483237275933322701685223226178832) }, + { SC_(71), SC_(0.1197857166996989179607278372168909873646e101), SC_(230.4390435657769523213935127204501618205) }, + { SC_(72), SC_(0.8504785885678623175211676442399260102886e102), SC_(234.7017234428182677427229672529631959172) }, + { SC_(73), SC_(0.6123445837688608686152407038527467274078e104), SC_(238.9783895618343230537651540911827770308) }, + { SC_(74), SC_(0.4470115461512684340891257138125051110077e106), SC_(243.2688490029827141828572629486213196017) }, + { SC_(75), SC_(0.3307885441519386412259530282212537821457e108), SC_(247.5729140961868839366425907411109433336) }, + { SC_(76), SC_(0.2480914081139539809194647711659403366093e110), SC_(251.8904022097231943772393546444858443173) }, + { SC_(77), SC_(0.188549470166605025498793226086114655823e112), SC_(256.2211355500095254560828463192900509907) }, + { SC_(78), SC_(0.1451830920282858696340707840863082849837e114), SC_(260.5649409718632093052501426406983600202) }, + { SC_(79), SC_(0.1132428117820629783145752115873204622873e116), SC_(264.9216497985528010421161074406443808977) }, + { SC_(80), SC_(0.8946182130782975286851441715398316520698e117), SC_(269.2910976510198225362890529821257918199) }, + { SC_(81), SC_(0.7156945704626380229481153372318653216558e119), SC_(273.6731242856937041485587408011846857317) }, + { SC_(82), SC_(0.5797126020747367985879734231578109105412e121), SC_(278.0675734403661429141397217488747885503) }, + { SC_(83), SC_(0.4753643337012841748421382069894049466438e123), SC_(282.4742926876303960274237172433703727067) }, + { SC_(84), SC_(0.3945523969720658651189747118012061057144e125), SC_(286.8931332954269939508991894666617431598) }, + { SC_(85), SC_(0.3314240134565353266999387579130131288001e127), SC_(291.3239500942703075662342516899438017302) }, + { SC_(86), SC_(0.2817104114380550276949479442260611594801e129), SC_(295.7666013507606240210845456410431159053) }, + { SC_(87), SC_(0.2422709538367273238176552320344125971528e131), SC_(300.220948647014131753974620275847139509) }, + { SC_(88), SC_(0.210775729837952771721360051869938959523e133), SC_(304.6868567656687154725531375451315768191) }, + { SC_(89), SC_(0.1854826422573984391147968456455462843802e135), SC_(309.1641935801469219448667774874712358232) }, + { SC_(90), SC_(0.1650795516090846108121691926245361930984e137), SC_(313.6528299498790617831845930281410850426) }, + { SC_(91), SC_(0.1485715964481761497309522733620825737886e139), SC_(318.1526396202093268499930749566705006595) }, + { SC_(92), SC_(0.1352001527678402962551665687594951421476e141), SC_(322.6634991267261768911519151416789989939) }, + { SC_(93), SC_(0.1243841405464130725547532432587355307758e143), SC_(327.1852877037752172007931322164055482485) }, + { SC_(94), SC_(0.1156772507081641574759205162306240436215e145), SC_(331.7178871969284731381175417778704311636) }, + { SC_(95), SC_(0.1087366156656743080273652852567866010042e147), SC_(336.2611819791984770343557245691007814406) }, + { SC_(96), SC_(0.103299784882390592625997020993947270954e149), SC_(340.8150588707990178689655113342148226173) }, + { SC_(97), SC_(0.9916779348709496892095714015418938011582e150), SC_(345.3794070622668541074469171784282311623) }, + { SC_(98), SC_(0.9619275968248211985332842594956369871234e152), SC_(349.9541180407702369295636388001321928762) }, + { SC_(99), SC_(0.942689044888324774562618574305724247381e154), SC_(354.5390855194408088491915764084767289035) }, + { SC_(1.5), SC_(0.8862269254527580136490837416705725913988), SC_(-0.1207822376352452223455184457816472122519) }, + { SC_(2.5), SC_(1.329340388179137020473625612505858887098), SC_(0.2846828704729191596324946696827019243201) }, + { SC_(3.5), SC_(3.323350970447842551184064031264647217745), SC_(1.20097360234707422481602188145071299577) }, + { SC_(4.5), SC_(11.63172839656744892914422410942626526211), SC_(2.453736570842442220504142503435716157332) }, + { SC_(5.5), SC_(52.34277778455352018114900849241819367949), SC_(3.957813967618716293877400855822590998551) }, + { SC_(6.5), SC_(287.8852778150443609963195467083000652372), SC_(5.662562059857141528522112312329543730298) }, + { SC_(7.5), SC_(1871.254305797788346476077053603950424042), SC_(7.534364236758732955158367632436685767027) }, + { SC_(8.5), SC_(14034.40729348341259857057790202962818031), SC_(9.549267257300997711737140081127222543125) }, + { SC_(9.5), SC_(119292.4619946090070878499121672518395327), SC_(11.68933342079726848256944257754217251064) }, + { SC_(10.5), SC_(1133278.38894878556733457416558889247556), SC_(13.9406252194037636331612378879718494798) }, + { SC_(11.5), SC_(11899423.08396224845701302873868337099338), SC_(16.29200047656724132024460374687937834601) }, + { SC_(12.5), SC_(136843365.4655658572556498304948587664239), SC_(18.73434751193644570163412445723139789638) }, + { SC_(13.5), SC_(1710542068.319573215695622881185734580299), SC_(21.26007615624470114141841100222559660735) }, + { SC_(14.5), SC_(23092317922.31423841189090889600741683403), SC_(23.86276584168908490618691459153499715322) }, + { SC_(15.5), SC_(334838609873.5564569724181789921075440935), SC_(26.53691449111561362395295450243873219064) }, + { SC_(16.5), SC_(5189998453040.125083072481774377666933449), SC_(29.27775451504081456046488670552291283301) }, + { SC_(17.5), SC_(85634974475162.06387069594927723150440191), SC_(32.08111489594734948650484339895239126941) }, + { SC_(18.5), SC_(1498612053315336.117737179112351551327033), SC_(34.94331577687681785679372335416358207049) }, + { SC_(19.5), SC_(27724322986333718.17813781357850369955012), SC_(37.86108650896109699174458690373685266632) }, + { SC_(20.5), SC_(540624298233507504.4736873647808221412273), SC_(40.83150097453079810977608746076652040769) }, + { SC_(21.5), SC_(11082798113786903841.71059097800685389516), SC_(43.851925860675160604225618712345751428) }, + { SC_(22.5), SC_(238280159446418432596.7777060271473587459), SC_(46.91997879580877771828122910423342189548) }, + { SC_(23.5), SC_(5361303587544414733427.498385610815571784), SC_(50.03349410501915216625524678984648437622) }, + { SC_(24.5), SC_(125990634307293746235546.2120618541659369), SC_(53.19049452616926544365896533816048151704) }, + { SC_(25.5), SC_(3086770540528696782770882.195515427065454), SC_(56.38916764371994674445243870358866440824) }, + { SC_(26.5), SC_(78712648783481767960657495.98564339016909), SC_(59.6278460958843272066799864369261400804) }, + { SC_(27.5), SC_(2085885192762266850957423643.619549839481), SC_(62.90499082887650373140722345449702128269) }, + { SC_(28.5), SC_(57361842800962338401329150199.53762058572), SC_(66.21917683354902934065269424423016165396) }, + { SC_(29.5), SC_(1634812519827426644437880780686.822186693), SC_(69.56908092082363418263973479158236432777) }, + { SC_(30.5), SC_(48226969334909086010917483030261.25450745), SC_(72.95347118416940832383855304384388538376) }, + { SC_(31.5), SC_(1470922564714727123332983232422968.262477), SC_(76.371197867782774263172710025811323562) }, + { SC_(32.5), SC_(46334060788513904384988971821323500.26803), SC_(79.82118541361436164165132112164137813285) }, + { SC_(33.5), SC_(1505856975626701892512141584193013758.711), SC_(83.30242550295005344288833577497470780911) }, + { SC_(34.5), SC_(50446208683494513399156743070465960916.82), SC_(86.8139709417810741931411756498802539916) }, + { SC_(35.5), SC_(1740394199580560712270907635931075651630.0), SC_(90.35493026581838826592594159715479924661) }, + { SC_(36.5), SC_(61783994085109905285617221075553185632870.0), SC_(93.9244629622997583778381640082096567753) }, + { SC_(37.5), SC_(0.22551157841065115429250285692576912756e43), SC_(97.52177522288820419751304074419002277813) }, + { SC_(38.5), SC_(0.8456684190399418285968857134716342283499e44), SC_(101.1461161558645693286925725261067471938) }, + { SC_(39.5), SC_(0.3255823413303776040098009996865791779147e46), SC_(104.7967743971583078684426367260568796551) }, + { SC_(40.5), SC_(0.1286050248254991535838713948761987752763e48), SC_(108.4730750690653840531983501460801140092) }, + { SC_(41.5), SC_(0.5208503505432715720146791492486050398691e49), SC_(112.1743770431778775093620989723120402597) }, + { SC_(42.5), SC_(0.2161528954754577023860918469381710915457e51), SC_(115.9000704704145301234203390741452341447) }, + { SC_(43.5), SC_(0.9186498057706952351408903494872271390691e52), SC_(119.6495745463449012688534009037863717517) }, + { SC_(44.5), SC_(0.3996126655102524272862873020269438054951e54), SC_(123.4223354844395396780146860516126324938) }, + { SC_(45.5), SC_(0.1778276361520623301423978494019899934453e56), SC_(127.2178246736117342069152694708243051451) }, + { SC_(46.5), SC_(0.8091157444918836021479102147790544701761e57), SC_(131.0355369995686389386568775343746269115) }, + { SC_(47.5), SC_(0.3762388211887258749987782498722603286319e59), SC_(134.8749893121619495665640549743813332585) }, + { SC_(48.5), SC_(0.1787134400646447906244196686893236561001e61), SC_(138.7357190232025450917566096180371978672) }, + { SC_(49.5), SC_(0.8667601843135272345284353931432197320857e62), SC_(142.6172828211459826044560991182829830129) }, + { SC_(50.5), SC_(0.4290462912351959810915755196058937673824e64), SC_(146.519255490720627221891301048634987154) }, + { SC_(51.5), SC_(0.2166683770737739704512456374009763525281e66), SC_(150.4412288270019413633582671940897997428) }, + { SC_(52.5), SC_(0.111584214192993594782391503261502821552e68), SC_(154.3828106346716318247096373876850639954) }, + { SC_(53.5), SC_(0.5858171245132163726075553921228898131479e69), SC_(158.3436238042692098863937625798187805011) }, + { SC_(54.5), SC_(0.3134121616145707593450421347857460500341e71), SC_(162.3233054581711707502809292753838809346) }, + { SC_(55.5), SC_(0.1708096280799410638430479634582315972686e73), SC_(166.3215061598403691412410136061349060176) }, + { SC_(56.5), SC_(0.9479934358436729043289161971931853648408e74), SC_(170.337889180592757967587122392630702318) }, + { SC_(57.5), SC_(0.535616291251675190945837651414149731135e76), SC_(174.372129818745153226752021764788547422) }, + { SC_(58.5), SC_(0.3079793674697132347938566495631360954026e78), SC_(178.4239147665484579827423018083667546119) }, + { SC_(59.5), SC_(0.1801679299697822423544061399944346158105e80), SC_(182.4929415207862687921690476023189480579) }, + { SC_(60.5), SC_(0.1071999183320204342008716532966885964073e82), SC_(186.5789178333378528681067028421770777551) }, + { SC_(61.5), SC_(0.648559505908723626915273502444966008264e83), SC_(190.6815611983746486468133578766491597866) }, + { SC_(62.5), SC_(0.3988640961338650305528932040036540950824e85), SC_(194.8005983731871208326581343651509165116) }, + { SC_(63.5), SC_(0.2492900600836656440955582525022838094265e87), SC_(198.9357649299294766470431802433713028621) }, + { SC_(64.5), SC_(0.1582991881531276840006794903389502189858e89), SC_(203.0868048358281226106733889296294186889) }, + { SC_(65.5), SC_(0.1021029763587673561804382712686228912459e91), SC_(207.253470059629849416124244558439614861) }, + { SC_(66.5), SC_(0.6687744951499261829818706768094799376603e92), SC_(211.435520202271055650856436448150964186) }, + { SC_(67.5), SC_(0.4447350392747009116829440000783041585441e94), SC_(215.6327221499328641065535845020238208848) }, + { SC_(68.5), SC_(0.3001961515104231153859872000528553070173e96), SC_(219.8448497478113482459228474245594090702) }, + { SC_(69.5), SC_(0.2056343637846398340394012320362058853068e98), SC_(224.0716834930795278518208054310810978927) }, + { SC_(70.5), SC_(0.1429158828303246846573838562651630902882e100), SC_(228.3130102456502742995923582284984651071) }, + { SC_(71.5), SC_(0.1007556973953789026834556186669399786532e102), SC_(232.5686229554684972683913220137349879525) }, + { SC_(72.5), SC_(0.7204032363769591541867076734686208473705e103), SC_(236.8383204051684592390895209118072592891) }, + { SC_(73.5), SC_(0.5222923463732953867853630632647501143436e105), SC_(241.121906967029088331456320155937181966) }, + { SC_(74.5), SC_(0.3838848745843721092872418514995913340426e107), SC_(245.4191923732478793236450387582878905619) }, + { SC_(75.5), SC_(0.2859942315653572214189951793671955438617e109), SC_(249.7299914986333931552202349119338344817) }, + { SC_(76.5), SC_(0.2159256448318447021713413604222326356156e111), SC_(254.0541241548883721745992390899601342039) }, + { SC_(77.5), SC_(0.1651831182963611971610761407230079662459e113), SC_(258.3914148957208623282220320602201355807) }, + { SC_(78.5), SC_(0.1280169166796799277998340090603311738406e115), SC_(262.7416928320801636393347235965305038626) }, + { SC_(79.5), SC_(0.1004932795935487433228696971123599714649e117), SC_(267.1047914568685263873419367114758025432) }, + { SC_(80.5), SC_(0.7989215727687125094168140920432617731457e118), SC_(271.4805484785288126034644189659692094502) }, + { SC_(81.5), SC_(0.6431318660788135700805353440948257273823e120), SC_(275.8688056629533302899592924197644087302) }, + { SC_(82.5), SC_(0.5241524708542330596156363054372829678165e122), SC_(280.2694086832001473146069926644269820387) }, + { SC_(83.5), SC_(0.4324257884547422741828999519857584484486e124), SC_(284.6822069765407826152477086910826481146) }, + { SC_(84.5), SC_(0.3610755333597097989427214599081083044546e126), SC_(289.1070536083975924130902273463692509124) }, + { SC_(85.5), SC_(0.3051088256889547801065996336223515172642e128), SC_(293.5438051427607205757799701080417115539) }, + { SC_(86.5), SC_(0.2608680459640563369911426867471105472609e130), SC_(297.9923215187034351091622558923164399324) }, + { SC_(87.5), SC_(0.2256508597589087314973384240362506233806e132), SC_(302.4524659326412687466785241592992548335) }, + { SC_(88.5), SC_(0.1974445022890451400601711210317192954581e134), SC_(306.9241047260048374915681634477366332741) }, + { SC_(89.5), SC_(0.1747383845258049489532514421130715764804e136), SC_(311.4071072780187213241622269369206800347) }, + { SC_(90.5), SC_(0.1563908541505954293131600406911990609499e138), SC_(315.9013459032995310109227992454839056422) }, + { SC_(91.5), SC_(0.1415337230062888635284098368255351501597e140), SC_(320.4066957540054114483446541626587380014) }, + { SC_(92.5), SC_(0.1295033565507543101284950006953646623961e142), SC_(324.9230347262868870790740563815487018843) }, + { SC_(93.5), SC_(0.1197906048094477368688578756432123127164e144), SC_(329.4502433708052665886256792643481601196) }, + { SC_(94.5), SC_(0.1120042154968336339723821137264035123898e146), SC_(333.988204807099907903519925338728239387) }, + { SC_(95.5), SC_(0.1058439836445077841039010974714513192084e148), SC_(338.5368046415996049733937816714808196625) }, + { SC_(96.5), SC_(0.101081004380504933819225548085236009844e150), SC_(343.095930889086289536826499502225010241) }, + { SC_(97.5), SC_(0.9754316922718726113555265390225274949948e151), SC_(347.6654738974312297792641984341498924371) }, + { SC_(98.5), SC_(0.95104589996507579607163837554696430762e153), SC_(352.245326275435031271896458324405747818) }, + { SC_(99.5), SC_(0.9367802114655996591305637999137598430057e155), SC_(356.835382823613074469259023532110402225) } + } }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 41> near_1 = { { + { SC_(0.5), SC_(1.772453850905516027298167483341145182798), SC_(0.5723649429247000870717136756765293558236) }, + { SC_(0.625), SC_(1.434518848090556775636019739456423136632), SC_(0.3608294954889401811849576858227794878574) }, + { SC_(0.75), SC_(1.225416702465177645129098303362890526851), SC_(0.2032809514312953714814329718624296997597) }, + { SC_(0.875), SC_(1.089652357422896951252376755102892971148), SC_(0.08585870722533432350236558376948770226972) }, + { SC_(0.875), SC_(1.089652357422896951252376755102892971148), SC_(0.08585870722533432350236558376948770226972) }, + { SC_(0.9375), SC_(1.040177011186767171459762817361921128614), SC_(0.03939090173458230065822754634095384450336) }, + { SC_(0.96875), SC_(1.019032525056673950564730047928136024882), SC_(0.01885367233441289053559206570480080890174) }, + { SC_(0.984375), SC_(1.009263984715686303151364227987264939567), SC_(0.009221337197578781045045446027854805411837) }, + { SC_(0.9921875), SC_(1.004570300975031369541819081985749775618), SC_(0.004559888861804558865096599455042458443847) }, + { SC_(0.99609375), SC_(1.002269894807266338070518646683408822875), SC_(0.002267322487909119869224853055660925945503) }, + { SC_(0.998046875), SC_(1.001131154070271719475148653701632936175), SC_(0.001130514797538261731446855551493110644591) }, + { SC_(0.9990234375), SC_(1.000564631256105134179583334797007222469), SC_(0.0005644719118551233842574575277837954032273) }, + { SC_(0.99951171875), SC_(1.000282079501403060312266009234616105409), SC_(0.0002820397244605020216499093258679218227703) }, + { SC_(0.999755859375), SC_(1.000140980758729162527664293184201592009), SC_(0.0001409708218759223705137152436852900410971) }, + { SC_(0.9998779296875), SC_(1.000070475636328154358952919083132410835), SC_(0.7047315303717008615499045661742960649129e-4) }, + { SC_(0.99993896484375), SC_(1.000035234133024267207862236519063784064), SC_(0.3523351231678223923789189421658142521323e-4) }, + { SC_(0.999969482421875), SC_(1.00001761614530457531538182039987833925), SC_(0.1761599014210985977615986870219441253152e-4) }, + { SC_(0.9999847412109375), SC_(1.000008807842360071243230645907272632701), SC_(0.8807803571255486980463673710461571970668e-5) }, + { SC_(0.99999237060546875), SC_(1.000004403863608190592851185888812529877), SC_(0.4403853911211722516241836921789602523957e-5) }, + { SC_(0.999996185302734375), SC_(1.000002201917411285169225005738085227502), SC_(0.2201914987068584780432891571768087250967e-5) }, + { SC_(1), SC_(1), SC_(0) }, + { SC_(1.000003814697265625), SC_(0.9999977981113740328314320876032760067576), SC_(-0.2201891050127487637714181831108975522931e-5) }, + { SC_(1.00000762939453125), SC_(0.9999955962515330814147665236857616584616), SC_(-0.4403758163447332570221840098229107074209e-5) }, + { SC_(1.0000152587890625), SC_(0.9999911926182050168670695717547199129391), SC_(-0.8807420580197905194061157631901679899078e-5) }, + { SC_(1.000030517578125), SC_(0.99998238569695577840308912119540189507), SC_(-0.1761445817787918059338915122874759423839e-4) }, + { SC_(1.00006103515625), SC_(0.9999647732360171681023427372223702590454), SC_(-0.352273844598538899122262467277208094941e-4) }, + { SC_(1.0001220703125), SC_(0.9999295538398379138630109146622273453912), SC_(-0.7044864160936656733821449407577769386531e-4) }, + { SC_(1.000244140625), SC_(0.9998591371459403420587898072239427065107), SC_(-0.0001408727761632663509703058417841195184664) }, + { SC_(1.00048828125), SC_(0.9997183921173586652300583206642029951561), SC_(-0.0002816475415868068318239205463917072406589) }, + { SC_(1.0009765625), SC_(0.999437255220281084345213592031181905165), SC_(-0.0005629031799912046317021499216851450277288) }, + { SC_(1.001953125), SC_(0.998876391856702293840181665944397250951), SC_(-0.001124239864176365593088235002674045499535) }, + { SC_(1.00390625), SC_(0.9977602892435009045255150050890440579513), SC_(-0.002242222659961150144765481909230529929808) }, + { SC_(1.0078125), SC_(0.995550440714294209465143243929765941358), SC_(-0.004459488037952299086670078922352109198758) }, + { SC_(1.015625), SC_(0.9912190698420517341764818662191450397148), SC_(-0.008819709705733069204889229698627066380001) }, + { SC_(1.03125), SC_(0.98290109928362691478263486825456935047), SC_(-0.01724677500176806740289126202224623179737) }, + { SC_(1.0625), SC_(0.9675800675995248847599762987154317516646), SC_(-0.03295710029357781908319883575047418315706) }, + { SC_(1.125), SC_(0.9417426998497014880874037301518917030763), SC_(-0.06002318412603958293140584320743011427822) }, + { SC_(1.125), SC_(0.9417426998497014880874037301518917030763), SC_(-0.06002318412603958293140584320743011427822) }, + { SC_(1.25), SC_(0.9064024770554770779826712889669180007488), SC_(-0.09827183642181316146385380269663584022562) }, + { SC_(1.375), SC_(0.8889135691562253407424275640662446912078), SC_(-0.1177552707410787744513620333179885042465) }, + { SC_(1.5), SC_(0.8862269254527580136490837416705725913988), SC_(-0.1207822376352452223455184457816472122519) } + } }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 41> near_2 = { { + { SC_(1.5), SC_(0.8862269254527580136490837416705725913988), SC_(-0.1207822376352452223455184457816472122519) }, + { SC_(1.625), SC_(0.8965742800565979847725123371602644603951), SC_(-0.1091741337567953724659793453255625768435) }, + { SC_(1.75), SC_(0.9190625268488832338468237275221678951384), SC_(-0.08440112102048555595778603413139773174384) }, + { SC_(1.875), SC_(0.9534458127450348323458296607150313497544), SC_(-0.0476726853991882996439780371618622723197) }, + { SC_(1.875), SC_(0.9534458127450348323458296607150313497544), SC_(-0.0476726853991882996439780371618622723197) }, + { SC_(1.9375), SC_(0.9751659479875942232435276412768010580753), SC_(-0.02514761940298887101469636934303908362555) }, + { SC_(1.96875), SC_(0.9871877586486528896095822339303817741048), SC_(-0.01289502598016741062140421704372482102582) }, + { SC_(1.984375), SC_(0.9934942349545037046646241619249639248858), SC_(-0.006527019770560387562504065432973464109098) }, + { SC_(1.9921875), SC_(0.9967220954986639369672736204077361054958), SC_(-0.003283288599221334008087443035901123210745) }, + { SC_(1.99609375), SC_(0.9983547780306754539374306832198017571606), SC_(-0.001646576833227209223092930587911738897203) }, + { SC_(1.998046875), SC_(0.9991758197849782200230487539873719343464), SC_(-0.0008245200382650888261806366903737014930725) }, + { SC_(1.9990234375), SC_(0.9995875173583940940094860854466195201034), SC_(-0.0004125677359714894017106176239696704326377) }, + { SC_(1.99951171875), SC_(0.9997936605172715158492229105972945155141), SC_(-0.0002063607736483724433350542340289891606905) }, + { SC_(1.999755859375), SC_(0.9998968057145986134157190626438734177924), SC_(-0.0001031996102979920861817501746961436019694) }, + { SC_(1.9998779296875), SC_(0.9999483967208452041447977734631271456482), SC_(-0.5160461064981215542788033369454594603258e-4) }, + { SC_(1.99993896484375), SC_(0.9999741968262534527384281628962293685498), SC_(-0.2580350665416168648325053559023655125278e-4) }, + { SC_(1.999969482421875), SC_(0.9999870980295774847216527132886600812439), SC_(-0.1290205365365156795229453393309637521044e-4) }, + { SC_(1.9999847412109375), SC_(0.9999935489189005625751513729787156979985), SC_(-0.6451101907750591399976874019296260011728e-5) }, + { SC_(1.99999237060546875), SC_(0.9999967744354781276641509840822795646932), SC_(-0.3225569724016764801116581064181763189594e-5) }, + { SC_(1.999996185302734375), SC_(0.9999983872117460118412633921783404380531), SC_(-0.1612789554532533173009818453505550062943e-5) }, + { SC_(2), SC_(1), SC_(0) }, + { SC_(2.000003814697265625), SC_(1.00000161280024011931074434129623713986), SC_(0.161279893955840184299760314572495677042e-5) }, + { SC_(2.00000762939453125), SC_(1.000003225612466396944257297966490462185), SC_(0.322560726412023958566345675090317173141e-5) }, + { SC_(2.0000152587890625), SC_(1.000006451272877535864519325623917830418), SC_(0.6451252068164492211696167502987139983584e-5) }, + { SC_(2.000030517578125), SC_(1.000012902737534909133631207655399313341), SC_(0.1290265429530719797568036294024708700466e-4) }, + { SC_(2.00006103515625), SC_(1.000025806242196124228325546227327679105), SC_(0.2580590922078463500093254292124318294867e-4) }, + { SC_(2.0001220703125), SC_(1.000051615552953128452105520486771074315), SC_(0.5161422091631080428484087308642550680092e-4) }, + { SC_(2.000244140625), SC_(1.000103243380595112650112753954221989398), SC_(0.0001032380513640963581901732440393341809948) }, + { SC_(2.00048828125), SC_(1.000206535863509719265815185078589813025), SC_(0.0002065145379145443567131291462537026096587) }, + { SC_(2.0009765625), SC_(1.000413268164832140091644464679649856244), SC_(0.000413182793064254264258674986332041644883) }, + { SC_(2.001953125), SC_(1.000827322309547415507838270760694901832), SC_(0.000826980267085383846585814529167493000815) }, + { SC_(2.00390625), SC_(1.001657790373358329933817798077673136303), SC_(0.001656417755696172869171861186612377080916) }, + { SC_(2.0078125), SC_(1.003328178532374632976589675522967237775), SC_(0.003322652404102649860792821138784654479368) }, + { SC_(2.015625), SC_(1.00670686780833379252298939537881918096), SC_(0.006684476830232184945964816343819769497868) }, + { SC_(2.03125), SC_(1.013616758636240255869592207887524642672), SC_(0.01352488366498562096813694557452593229433) }, + { SC_(2.0625), SC_(1.028053821824495190057474817385146236144), SC_(0.02766752152285702349740729628994608012915) }, + { SC_(2.125), SC_(1.059460537330914174098329196420878165961), SC_(0.05775985153034387160738826626309159079026) }, + { SC_(2.125), SC_(1.059460537330914174098329196420878165961), SC_(0.05775985153034387160738826626309159079026) }, + { SC_(2.25), SC_(1.133003096319346347478339111208647500936), SC_(0.124871714892396594302441287613198663149) }, + { SC_(2.375), SC_(1.222256157589809843520837900591086450411), SC_(0.2006984603774558413588851802726110913487) }, + { SC_(2.5), SC_(1.329340388179137020473625612505858887098), SC_(0.2846828704729191596324946696827019243201) } + } }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 40> near_0 = { { + { SC_(-0.5), SC_(-3.544907701811032054596334966682290365595), SC_(1.265512123484645396488945797134705923899) }, + { SC_(-0.375), SC_(-3.825383594908151401696052638550461697686), SC_(1.341658748500666418041408813274783487436) }, + { SC_(-0.25), SC_(-4.901666809860710580516393213451562107405), SC_(1.589575312551185990315897214778782835911) }, + { SC_(-0.125), SC_(-8.717218859383175610019014040823143769183), SC_(2.165300248905170251754061948144017406496) }, + { SC_(-0.125), SC_(-8.717218859383175610019014040823143769183), SC_(2.165300248905170251754061948144017406496) }, + { SC_(-0.0625), SC_(-16.64283217898827474335620507779073805782), SC_(2.811979623974363538327156032173660116805) }, + { SC_(-0.03125), SC_(-32.60904080181356641807136153370035279623), SC_(3.484589575134139437621752672995683649279) }, + { SC_(-0.015625), SC_(-64.59289502180392340168731059118495613226), SC_(4.168104420557250637548438174776914213865) }, + { SC_(-0.0078125), SC_(-128.5849985248040153013528424941759712791), SC_(4.856590152781421724785721449662278434972) }, + { SC_(-0.00390625), SC_(-256.581093070660182546052773550952658656), SC_(5.54744476696747159520708182472107347055) }, + { SC_(-0.001953125), SC_(-512.5791508839791203712761106952360633215), SC_(6.239455139837046046486535948675082223324) }, + { SC_(-0.0009765625), SC_(-1024.578182406251657399893334832135395808), SC_(6.932036277511308217556578672109549476158) }, + { SC_(-0.00048828125), SC_(-2048.577698818873467519520786912493783878), SC_(7.624901025883858905611203245365810170653) }, + { SC_(-0.000244140625), SC_(-4096.57745718775464971331294488248972087), SC_(8.317907137541219635377299172741804106947) }, + { SC_(-0.0001220703125), SC_(-8192.577336412800240508542313129020709561), SC_(9.010983820432326192510172569412912814588) }, + { SC_(-0.6103515625e-4), SC_(-16384.5772760354695939336148831283410381), SC_(9.704095761351551114080487592308688534482) }, + { SC_(-0.30517578125e-4), SC_(-32768.57724584934032393443149086321342054), SC_(10.39722532438932175111825798174135071555) }, + { SC_(-0.152587890625e-4), SC_(-65536.57723075690962899636361017901925666), SC_(11.09036369676269620616269440700453555078) }, + { SC_(-0.762939453125e-5), SC_(-131072.577223210852757386190636818435916), SC_(11.78350647337298147181546230662592344689) }, + { SC_(-0.3814697265625e-5), SC_(-262144.5772194378639394013199042046138782), SC_(12.47665145199400263809495861913874999345) }, + { SC_(0.3814697265625e-5), SC_(262143.4227881080344625629331726731855155), SC_(12.47664704818796544202254047206534711638) }, + { SC_(0.762939453125e-5), SC_(131071.4227918809440471962777925401520979), SC_(11.78349766576090681276037584294890342818) }, + { SC_(0.152587890625e-4), SC_(65535.42279942668398540027145451732421438), SC_(11.09034608153854475277051988217319318753) }, + { SC_(0.30517578125e-4), SC_(32767.42281451784694671242432333092929765), SC_(10.39719009394100176207788843272141977354) }, + { SC_(0.6103515625e-4), SC_(16383.4228446989052821887834066513143242), SC_(9.704025300454774477951337474167744232248) }, + { SC_(0.0001220703125), SC_(8191.422905055952190365785412912966413445), SC_(9.010842898637679655856679364462219607288) }, + { SC_(0.000244140625), SC_(4095.423025749771641072803050389269325868), SC_(8.317625293943180446655815151656334697388) }, + { SC_(0.00048828125), SC_(2047.42326705635054639115944072028773408), SC_(7.62433733861781159675772941549355054159) }, + { SC_(0.0009765625), SC_(1023.423749345567830369498718239930270889), SC_(6.930908902419461889540619064660080535727) }, + { SC_(0.001953125), SC_(511.4247126306315744461730129635313924869), SC_(6.23720038517533141916200085812091506718) }, + { SC_(0.00390625), SC_(255.4266340463362315585318413027952788355), SC_(5.542935221819601325193091489756182014674) }, + { SC_(0.0078125), SC_(127.4304564114296588115383352230100404938), SC_(4.84757077588166486683395477128488386733) }, + { SC_(0.015625), SC_(63.43802046989131098729483943802528254174), SC_(4.150063373653938787298503499050432342073) }, + { SC_(0.03125), SC_(31.45283517707606127304431578414621921504), SC_(3.44848912779795847968326934526863660858) }, + { SC_(0.0625), SC_(15.48128108159239815615962077944690802663), SC_(2.739631621946203418585729650082232089145) }, + { SC_(0.125), SC_(7.53394159879761190469922984121513362461), SC_(2.019418357553796345320290521167099589948) }, + { SC_(0.125), SC_(7.53394159879761190469922984121513362461), SC_(2.019418357553796345320290521167099589948) }, + { SC_(0.25), SC_(3.625609908221908311930685155867672002995), SC_(1.288022524698077457370610440219717295925) }, + { SC_(0.375), SC_(2.370436184416600908646473504176652509887), SC_(0.8630739822706474624050890941340154953325) }, + { SC_(0.5), SC_(1.772453850905516027298167483341145182798), SC_(0.5723649429247000870717136756765293558236) } + } }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 40> near_m10 = { { + { SC_(-10.5), SC_(-0.2640121820547716316246385325311240439682e-6), SC_(-15.14727059071784114610117639552631963436) }, + { SC_(-10.375), SC_(-0.3853824777091100016167565620752110328498e-6), SC_(-14.76902954720701012688042720516103787762) }, + { SC_(-10.25), SC_(-0.67808180432946731304891004492754985848e-6), SC_(-14.20399790093109065161116876070387206737) }, + { SC_(-10.125), SC_(-0.1684831262052517456216882327889895477394e-5), SC_(-13.293845140389538484236785089823191703) }, + { SC_(-10.125), SC_(-0.1684831262052517456216882327889895477394e-5), SC_(-13.293845140389538484236785089823191703) }, + { SC_(-10.0625), SC_(-0.3830328107020316635889325503807551568979e-5), SC_(-12.47256009081165579039929355805785844157) }, + { SC_(-10.03125), SC_(-0.820629952953019778657392524711140975814e-5), SC_(-11.71060846332720387792243958913415617938) }, + { SC_(-10.015625), SC_(-0.1700699874643038383461557487368349913225e-4), SC_(-10.98188560766303889037266091827081352261) }, + { SC_(-10.0078125), SC_(-0.3463458256516313677243695342138690766685e-4), SC_(-10.27065787896126424410583159193311350064) }, + { SC_(-10.00390625), SC_(-0.6990332874758209033426446699035926999779e-4), SC_(-9.568397288290682386853008683681967849367) }, + { SC_(-10.001953125), SC_(-0.0001404477363900451708521851118608466504012), SC_(-8.870675121382310094805966387146254501189) }, + { SC_(-10.0009765625), SC_(-0.000281540041401883411812666338203440274148), SC_(-8.175235877509399161097817609681419866606) }, + { SC_(-10.00048828125), SC_(-0.000563726404385624063397951573975953521758), SC_(-7.480941522771659111292091779019988346536) }, + { SC_(-10.000244140625), SC_(-0.001128100008866690679009902807702968873353), SC_(-6.787220469493554911614571257238006425123) }, + { SC_(-10.0001220703125), SC_(-0.002256847657595184957233851276605048793085), SC_(-6.093786281167310238545736320487058532071) }, + { SC_(-10.00006103515625), SC_(-0.004514343175062893955072428860155326550553), SC_(-5.400495578872419834979145899538225218653) }, + { SC_(-10.000030517578125), SC_(-0.009029334320035575647839997474459714791226), SC_(-4.707276632982054173483611347195057396393) }, + { SC_(-10.0000152587890625), SC_(-0.01805931666500754906434806474181437991942), SC_(-4.01409356864116185854622778461065066607) }, + { SC_(-10.00000762939453125), SC_(-0.03611928138246679574769960801636554264536), SC_(-3.320928445911808853642423587159533484381) }, + { SC_(-10.000003814697265625), SC_(-0.07223921083114343778444263107651750106133), SC_(-2.627772294197426150094657771000510514181) }, + { SC_(-9.999996185302734375), SC_(0.07224050699108014022628046448675851453374), SC_(-2.627754351749084271591553302449947161499) }, + { SC_(-9.99999237060546875), SC_(0.03612057754240364069840471083444586728855), SC_(-3.320892561015125097640948165422843317137) }, + { SC_(-9.9999847412109375), SC_(0.01806061282494496405052242015364798732676), SC_(-4.014021798847794354581145064057511795502) }, + { SC_(-9.999969482421875), SC_(0.009030630479975270775894162659645956519741), SC_(-4.707133093395319229856390889602684453056) }, + { SC_(-9.99993896484375), SC_(0.004515639335011709650690623512369371764253), SC_(-5.400208499698950462148264857327856480671) }, + { SC_(-9.9998779296875), SC_(0.002258143817580482923824809786660261248415), SC_(-6.093212122820375608272453375481778776963) }, + { SC_(-9.999755859375), SC_(0.00112939616899791774095825334343857186485), SC_(-6.786072152799718574175843462405206935614) }, + { SC_(-9.99951171875), SC_(0.0005650225651005676902373042742306456894427), SC_(-7.478644889384249821277500306107773873963) }, + { SC_(-9.9990234375), SC_(0.000282836204451696233602080064105049188933), SC_(-8.170642610736687659976646968506313698216) }, + { SC_(-9.998046875), SC_(0.0001417439087793817388175538505551912206884), SC_(-8.861488587853743723990903404527520549863) }, + { SC_(-9.99609375), SC_(0.7119953849576511774290270246050426493188e-4), SC_(-9.550024221368402701862865053477154735263) }, + { SC_(-9.9921875), SC_(0.3593094176075641243360143967272818899195e-4), SC_(-10.23391174619552949434163600960412224542) }, + { SC_(-9.984375), SC_(0.1830395592410737084371847753712605958898e-4), SC_(-10.90839335076217169965796414369624068766) }, + { SC_(-9.96875), SC_(0.9505651717966543211040666528035462899479e-5), SC_(-11.56362401857045907442600014919001566007) }, + { SC_(-9.9375), SC_(0.5139309871979484321498376816774659227047e-5), SC_(-12.17859175366355833461560769108992933228) }, + { SC_(-9.875), SC_(0.3033137834984411836791652786842133042328e-5), SC_(-12.70591288519170921633064985576606088605) }, + { SC_(-9.875), SC_(0.3033137834984411836791652786842133042328e-5), SC_(-12.70591288519170921633064985576606088605) }, + { SC_(-9.75), SC_(0.2197547155462853887868709703817446704567e-5), SC_(-13.02816874893114553892881831326149507953) }, + { SC_(-9.625), SC_(0.2248214426276410648574460028763198846825e-5), SC_(-13.00537424512744790544056216033820032846) }, + { SC_(-9.5), SC_(0.2772127911575102132058704591576802461667e-5), SC_(-12.79589533355436345901781053661879076815) } + } }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 40> near_m55 = { { + { SC_(-55.5), SC_(0.3313939247684676728377268347296671102738e-73), SC_(-169.1931592947433577934436950412776436064) }, + { SC_(-55.375), SC_(0.5931885913251829148011431845907438457576e-73), SC_(-168.6109546898941580979033836431457031234) }, + { SC_(-55.25), SC_(0.128134265213561204650151776242601279892e-72), SC_(-167.8408033134133338381597995376176917559) }, + { SC_(-55.125), SC_(0.3913191103476296924523858848738104144085e-72), SC_(-166.7243586084319013982262850893209212539) }, + { SC_(-55.125), SC_(0.3913191103476296924523858848738104144085e-72), SC_(-166.7243586084319013982262850893209212539) }, + { SC_(-55.0625), SC_(0.986732607487198018754292852511389106856e-72), SC_(-165.7994828862238820223463651561184383051) }, + { SC_(-55.03125), SC_(0.2226660343675615375290464186909601183619e-71), SC_(-164.9856238363615162450940197678605306484) }, + { SC_(-55.015625), SC_(0.4736069454740001055763353712089973133951e-71), SC_(-164.2309191328226253115354307486462442346) }, + { SC_(-55.0078125), SC_(0.977114118293834733521912343859491871413e-71), SC_(-163.5066934315334134525852432438180103697) }, + { SC_(-55.00390625), SC_(0.1984981336813056540008261636773673389822e-70), SC_(-162.7979320905915813518737104001603528406) }, + { SC_(-55.001953125), SC_(0.4001152702583918680236220298606474660766e-70), SC_(-162.0969591073259992663458061954608696748) }, + { SC_(-55.0009765625), SC_(0.8033716579133006533597549451686567408424e-70), SC_(-161.399894344940666691934457343256688548) }, + { SC_(-55.00048828125), SC_(0.1609895558223411179719291838965309144853e-69), SC_(-160.7047872033597077904481004857770657217) }, + { SC_(-55.000244140625), SC_(0.3222948938373906907742658942729222148632e-69), SC_(-160.0106597497627978468127607946271352327) }, + { SC_(-55.0001220703125), SC_(0.6449058492709206027088103024110200975353e-69), SC_(-159.3170223595527956784727838139907674684) }, + { SC_(-55.00006103515625), SC_(0.1290127899946570906748117205135768082314e-68), SC_(-158.6236300558849309281660984198839415596) }, + { SC_(-55.000030517578125), SC_(0.2580572071228903781598785159467838581806e-68), SC_(-157.9303603092003033255947568117785799832) }, + { SC_(-55.0000152587890625), SC_(0.5161460448765772204325064962419091742529e-68), SC_(-157.2371518444353362397006108889220356827) }, + { SC_(-55.00000762939453125), SC_(0.1032323722132728230665906965174285853426e-67), SC_(-156.5439740214872098856520824742320518588) }, + { SC_(-55.000003814697265625), SC_(0.2064679077519460715554797358664728667652e-67), SC_(-155.8508115196617565149201605014267824236) }, + { SC_(-54.999996185302734375), SC_(-0.2064742345776389872444192676691131506575e-67), SC_(-155.8507808769879053144034254273344043224) }, + { SC_(-54.99999237060546875), SC_(-0.1032386990389669331883069223703195417382e-67), SC_(-156.543912736139507484654652677755511734) }, + { SC_(-54.9999847412109375), SC_(-0.5162093131335660989607568848213731056733e-68), SC_(-157.2370292737399314379940741096346901828) }, + { SC_(-54.999969482421875), SC_(-0.258120475380070365932807313377307528986e-68), SC_(-157.9301151678094937244882657625299630878) }, + { SC_(-54.99993896484375), SC_(-0.129076058252601515431668371755594450098e-68), SC_(-158.6231397731033117444057763960015760334) }, + { SC_(-54.9998779296875), SC_(-0.6455385318809423304687659289501264852653e-69), SC_(-159.3160417939895574585734203633457962732) }, + { SC_(-54.999755859375), SC_(-0.3229275765697223526481784197301709161285e-69), SC_(-160.0086986186363225879842786767213113941) }, + { SC_(-54.99951171875), SC_(-0.1616222390439127298761439614470246404862e-69), SC_(-160.70086494110676672055309472267163668) }, + { SC_(-54.9990234375), SC_(-0.8096985096986489455731873769112931053315e-70), SC_(-161.3920498204348601342401201789602276343) }, + { SC_(-54.998046875), SC_(-0.4064422003228156070372890110113661523823e-70), SC_(-162.0812700583149908077227373306519861132) }, + { SC_(-54.99609375), SC_(-0.2048253768707794232109022149495560465895e-70), SC_(-162.7665539925744016887591545718340828031) }, + { SC_(-54.9921875), SC_(-0.1040399076590405899054222579682253865197e-70), SC_(-163.4439372355377521596244089121137210432) }, + { SC_(-54.984375), SC_(-0.5369420317824801296090020359957584504561e-71), SC_(-164.1054067411408869986598886088213583004) }, + { SC_(-54.96875), SC_(-0.2862019916619447982849309567142574291595e-71), SC_(-164.7345990554747140245090340482576614581) }, + { SC_(-54.9375), SC_(-0.1630184748946170270451320476784206632433e-71), SC_(-165.2974333442636798880161449262335724888) }, + { SC_(-54.875), SC_(-0.1068084665867092473960298264876009169786e-71), SC_(-165.7202596830189416811721153572453840111) }, + { SC_(-54.875), SC_(-0.1068084665867092473960298264876009169786e-71), SC_(-165.7202596830189416811721153572453840111) }, + { SC_(-54.75), SC_(-0.9545836185625177195542164628822374598687e-72), SC_(-165.8326067306542059861208673933569437798) }, + { SC_(-54.625), SC_(-0.1206186475649396145903288691554707530168e-71), SC_(-165.5986629859610336595561650158366255984) }, + { SC_(-54.5), SC_(-0.183923628246499558424938393274965246202e-71), SC_(-165.1767762739909689670975862547818473059) } + } }; +#undef SC_ + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 141> gammap1m1_data = { { + { SC_(-0.4952165186405181884765625), SC_(0.7559827693907095754807809442951050489732) }, + { SC_(-0.4642883241176605224609375), SC_(0.6574328869566978138139138799311066062094) }, + { SC_(-0.4024595916271209716796875), SC_(0.4948624198600628575485791492257182331098) }, + { SC_(-0.3901382386684417724609375), SC_(0.466994695902624837582482771934607569504) }, + { SC_(-0.3875354826450347900390625), SC_(0.4612760821854033810460931227828015343156) }, + { SC_(-0.373013198375701904296875), SC_(0.4303940312894863907637421435297095229576) }, + { SC_(-0.364522993564605712890625), SC_(0.4131121158463471061555369932726425070959) }, + { SC_(-0.35811364650726318359375), SC_(0.4004260060282522370607617707987066040664) }, + { SC_(-0.342386901378631591796875), SC_(0.3705491389143732767395411311340356537958) }, + { SC_(-0.311618030071258544921875), SC_(0.3168394199636867612664810682360364987851) }, + { SC_(-0.2880756855010986328125), SC_(0.2795634828731819295069040561405863199118) }, + { SC_(-0.27896595001220703125), SC_(0.2659494215075372040950689557832739194382) }, + { SC_(-0.221501767635345458984375), SC_(0.1892800230490205183297725744929501015544) }, + { SC_(-0.202970564365386962890625), SC_(0.1675837744862475402389911769714649852773) }, + { SC_(-0.191832959651947021484375), SC_(0.1551782986717939911912971517092154248689) }, + { SC_(-0.1387059986591339111328125), SC_(0.1019358076187795495751950704491293377337) }, + { SC_(-0.1012614667415618896484375), SC_(0.06964849559574637322009665674759450635903) }, + { SC_(-0.0782387256622314453125), SC_(0.05168944861403749320872745190411594799105) }, + { SC_(-0.0146243572235107421875), SC_(0.008655823217365420051945171708362679166147) }, + { SC_(0.1431564604442703013402649929484277542953e-29), SC_(-0.8263215150028947028222714725368343067077e-30) }, + { SC_(0.1791466932348087634896446282571611213266e-29), SC_(-0.1034062776504410791508686126702507453693e-29) }, + { SC_(0.6013619202535540063110633226832922483532e-29), SC_(-0.3471155206456177563387123499681270341265e-29) }, + { SC_(0.115805324961653822428570241697281798758e-28), SC_(-0.6684464764687909153739175517973613571261e-29) }, + { SC_(0.1422457400834001098175711728787848259007e-28), SC_(-0.8210646944165041873250036406993552111264e-29) }, + { SC_(0.4970121018327539153628705477876439795096e-28), SC_(-0.2868831708235014101261168518349749234889e-28) }, + { SC_(0.9660079415057497591758174164417478444323e-28), SC_(-0.5575949162564024099347963251548294827165e-28) }, + { SC_(0.1232929313253182131376331095427391968754e-27), SC_(-0.7116661133260258147780879126862696392479e-28) }, + { SC_(0.3296523285617759312781860549364832953326e-27), SC_(-0.1902804880171240659658521971091414147824e-27) }, + { SC_(0.528364435768055252017009628713605422886e-27), SC_(-0.3049802291021812635024061181080113889506e-27) }, + { SC_(0.886586057273120049620324386849842094685e-27), SC_(-0.5117513605413324831805933701656815521236e-27) }, + { SC_(0.2499669674831043259218157022821422146034e-26), SC_(-0.1442848493391799075204112945868205575921e-26) }, + { SC_(0.4131050397232622964314362671638736040881e-26), SC_(-0.2384507001780369908735157814349257650306e-26) }, + { SC_(0.7679738097881433551381658732998641759182e-26), SC_(-0.4432865132438264916724504940164877771849e-26) }, + { SC_(0.199929739820949207249437007767740538737e-25), SC_(-0.1154025777043396680338534232061371984153e-25) }, + { SC_(0.5151477415246978459754129800826163591626e-25), SC_(-0.2973513461467014566158126478567428007026e-25) }, + { SC_(0.101200734533556026342258477595279955025e-24), SC_(-0.5841464927231005972586520769367701801272e-25) }, + { SC_(0.2064292695896540981798546456623054911033e-24), SC_(-0.1191542081013299677372796818685763621433e-24) }, + { SC_(0.4063294332896333395257434433879773416284e-24), SC_(-0.2345397140053387487331153502526122099635e-24) }, + { SC_(0.8138195767936862452966745688936976428456e-24), SC_(-0.4697494081288516881709792363579127898501e-24) }, + { SC_(0.9575550627132253801929510132578249716542e-24), SC_(-0.5527157822038433842858279196451987644551e-24) }, + { SC_(0.2855160956298500804375620841706273850616e-23), SC_(-0.1648043629790735548426012109835882111878e-23) }, + { SC_(0.65201444297915461398563707001320281266e-23), SC_(-0.3763529502296153146061378052316774680657e-23) }, + { SC_(0.1310988374636350038320977491775043421995e-22), SC_(-0.7567230263439006455136418784154172627278e-23) }, + { SC_(0.2590288837798696209228010176465529547374e-22), SC_(-0.1495155293796993236481538654450094828034e-22) }, + { SC_(0.2937779542193655202274099291941187976629e-22), SC_(-0.1695732371781431498672748630538267989951e-22) }, + { SC_(0.7863513178004503049754083414326234074965e-22), SC_(-0.4538942987503834952636621253829968594981e-22) }, + { SC_(0.1903818607087388763706780167350761726053e-21), SC_(-0.109891392314185724619218859435147914583e-21) }, + { SC_(0.3812242142377350870566942975497647799754e-21), SC_(-0.2200485882977986685255989911406099731464e-21) }, + { SC_(0.5493133580141330277178034419485741501887e-21), SC_(-0.3170722751854215599980143372792630827825e-21) }, + { SC_(0.9672153634284186955666772243312215295852e-21), SC_(-0.5582918591043124472447977064584587087382e-21) }, + { SC_(0.1702169477623814384559878647986894129041e-20), SC_(-0.9825188868017248805929057833465618943933e-21) }, + { SC_(0.4817114569977399785676754474621208412799e-20), SC_(-0.2780513989416366360400948471972900830387e-20) }, + { SC_(0.7538352992756463183303278501219690799218e-20), SC_(-0.4351255434976382024407146526549699565796e-20) }, + { SC_(0.2596305715949999708394617609422128090557e-19), SC_(-0.1498628330119729391523576917959646915902e-19) }, + { SC_(0.4444587480324321591032923385589104015025e-19), SC_(-0.2565485517668431887674899070788880246089e-19) }, + { SC_(0.9715574921498573937069095571295029856174e-19), SC_(-0.5607982038213457280620337061143959968827e-19) }, + { SC_(0.2036598542733453787268262970278076551267e-18), SC_(-0.1175556581981383412558675525031327289634e-18) }, + { SC_(0.4248971931658660264162106698360155121463e-18), SC_(-0.2452573158680304024128136998709195441154e-18) }, + { SC_(0.6521097487613458963613731825259556273977e-18), SC_(-0.3764079622200518159115220576707372289309e-18) }, + { SC_(0.1436126164096190058281493628911107407475e-17), SC_(-0.8289545186912702312307596583951073368993e-18) }, + { SC_(0.3118908901459261162419055180006211003274e-17), SC_(-0.1800283075323116855097674712567357424907e-17) }, + { SC_(0.3593346613595175715618300349429858897565e-17), SC_(-0.2074135954788010816821644850649799519675e-17) }, + { SC_(0.9445874854124767215374919304693435151421e-17), SC_(-0.5452306934500297136990208691880314661067e-17) }, + { SC_(0.2566182432094081539023303073498993853718e-16), SC_(-0.1481240698799817909729203530750507585117e-16) }, + { SC_(0.3363765695149349330660137891158001366421e-16), SC_(-0.1941618252298598450712101459398214835952e-16) }, + { SC_(0.1073581901339262605326457800103412409953e-15), SC_(-0.6196882910077942026172170471644452240087e-16) }, + { SC_(0.186668406231853462907965823802669547149e-15), SC_(-0.1077479282192287023344331697438668504475e-15) }, + { SC_(0.3727540802657755688795382376099496468669e-15), SC_(-0.2151594942853688563255514533064804448857e-15) }, + { SC_(0.6211646767866855090717281839829411183018e-15), SC_(-0.3585459819247720488263755672803206966864e-15) }, + { SC_(0.1561186859754253464932505224282976996619e-14), SC_(-0.9011415112885851355703262394946230181441e-15) }, + { SC_(0.3092010764722992466335682593125966377556e-14), SC_(-0.1784757049442269726369719145429686196432e-14) }, + { SC_(0.6192850577371690132255643845837767003104e-14), SC_(-0.3574610363653403859138387348420733335946e-14) }, + { SC_(0.1047879028014987723427253740737796761096e-13), SC_(-0.6048521898920322580919537460083385958307e-14) }, + { SC_(0.1978473638988408750405412206418986897916e-13), SC_(-0.1142005977018810929368580238123776497134e-13) }, + { SC_(0.4041816252346730475863978426787070930004e-13), SC_(-0.2332999655507978182935820166341591465938e-13) }, + { SC_(0.9410302262901834580155480125540634617209e-13), SC_(-0.5431773877604405885692410233977439758357e-13) }, + { SC_(0.1334530223958893535574077304772799834609e-12), SC_(-0.7703117505534481432167486795079037095016e-13) }, + { SC_(0.266297021326439287136622624529991298914e-12), SC_(-0.1537108122261681912683838906901126667239e-12) }, + { SC_(0.5920415525016708979677559909760020673275e-12), SC_(-0.3417356583762410657228951913532598329392e-12) }, + { SC_(0.155163989296047688526414276566356420517e-11), SC_(-0.8956308525005437046951559037146364454014e-12) }, + { SC_(0.326923297461201300961874949280172586441e-11), SC_(-0.1887052485148118271327652592003779278951e-11) }, + { SC_(0.3753785910581841633870681107509881258011e-11), SC_(-0.2166744030260566997416579153839836535144e-11) }, + { SC_(0.9579165585749116473834874341264367103577e-11), SC_(-0.5529244432689301568675461523208969657637e-11) }, + { SC_(0.1858167439361402273334533674642443656921e-10), SC_(-0.1072563353975220567027440177997243696045e-10) }, + { SC_(0.5449485307451595872407779097557067871094e-10), SC_(-0.3145528284818088265306644806429650505592e-10) }, + { SC_(0.6089519166696533147842274047434329986572e-10), SC_(-0.3514965854368603547185748339618264962e-10) }, + { SC_(0.1337744776064297980155970435589551925659e-9), SC_(-0.7721672402075083279577276691763777798079e-10) }, + { SC_(0.2554458866654840676346793770790100097656e-9), SC_(-0.1474473672534405166880467009401481006846e-9) }, + { SC_(0.9285605062636648199259070679545402526855e-9), SC_(-0.5359796691714968347006887450221011388011e-9) }, + { SC_(0.1698227447555211711005540564656257629395e-8), SC_(-0.980243482442200345890191122898173278899e-9) }, + { SC_(0.339355921141759608872234821319580078125e-8), SC_(-0.1958815525210918994679361737180445367869e-8) }, + { SC_(0.6313728651008432279922999441623687744141e-8), SC_(-0.3644383041872783822741274272616254061398e-8) }, + { SC_(0.8383264749056706932606175541877746582031e-8), SC_(-0.4838951666662356901644608730186546413827e-8) }, + { SC_(0.1962631124285962869180366396903991699219e-7), SC_(-0.1132861391263510827635198807950784606364e-7) }, + { SC_(0.5256384838503436185419559478759765625e-7), SC_(-0.3034067396263077516870264512967026960836e-7) }, + { SC_(0.116242290459922514855861663818359375e-6), SC_(-0.6709685761311096545819618213723265238395e-7) }, + { SC_(0.1776920584006802528165280818939208984375e-6), SC_(-0.1025666084085592538025029643343934584008e-6) }, + { SC_(0.246631174150024889968335628509521484375e-6), SC_(-0.142359317011220184093241753035251343271e-6) }, + { SC_(0.7932688959044753573834896087646484375e-6), SC_(-0.4578866108069128537168607745624614794722e-6) }, + { SC_(0.1372093493046122603118419647216796875e-5), SC_(-0.791991995861101927407880386227298092424e-6) }, + { SC_(0.214747751670074649155139923095703125e-5), SC_(-0.1239553101482841564081262476002391564028e-5) }, + { SC_(0.527022712049074470996856689453125e-5), SC_(-0.3042030180348038757030022358659056016131e-5) }, + { SC_(0.9233162927557714283466339111328125e-5), SC_(-0.5329441960781667799420300524501852822265e-5) }, + { SC_(0.269396477960981428623199462890625e-4), SC_(-0.1554926893050895772896453957379474045684e-4) }, + { SC_(0.3208058114978484809398651123046875e-4), SC_(-0.1851639610824637542072201121307897455015e-4) }, + { SC_(0.00010957030463032424449920654296875), SC_(-0.6323382317252073303439803607481865268353e-4) }, + { SC_(0.000126518702018074691295623779296875), SC_(-0.7301274674392621832822527575061291232133e-4) }, + { SC_(0.00028976381872780621051788330078125), SC_(-0.0001671731931845284705043154051351730706298) }, + { SC_(0.000687857042066752910614013671875), SC_(-0.0003965741858362509385654340724912705823236) }, + { SC_(0.00145484809763729572296142578125), SC_(-0.0008376704829300962209037156359622989708524) }, + { SC_(0.00366270542144775390625), SC_(-0.002100946766981816464155333982357752904999) }, + { SC_(0.046881496906280517578125), SC_(-0.02497588947336944943591732868959193811385) }, + { SC_(0.04722058773040771484375), SC_(-0.02514197077286474061941968460870171431946) }, + { SC_(0.1323592662811279296875), SC_(-0.06091072639354085529687250076608036167983) }, + { SC_(0.139763355255126953125), SC_(-0.06350237679012056526225278765134891026831) }, + { SC_(0.155740678310394287109375), SC_(-0.06883441875617310404657299803607175885806) }, + { SC_(0.17873513698577880859375), SC_(-0.07590347542832235360535014668688262042636) }, + { SC_(0.1813595294952392578125), SC_(-0.07666619009216679212771233211297326572625) }, + { SC_(0.225838959217071533203125), SC_(-0.08828121583826801836069461556215827733624) }, + { SC_(0.292207300662994384765625), SC_(-0.1013142147509511845410398110728244632327) }, + { SC_(0.297928631305694580078125), SC_(-0.1022125377703106514269725748156778633457) }, + { SC_(0.29810583591461181640625), SC_(-0.1022398124529602122123098193784073635017) }, + { SC_(0.30028045177459716796875), SC_(-0.1025718475377491669113360177547935208456) }, + { SC_(0.314723670482635498046875), SC_(-0.1046527148786850527567817015912636515928) }, + { SC_(0.335008561611175537109375), SC_(-0.1072166100764849221291653907100739024018) }, + { SC_(0.34912931919097900390625), SC_(-0.1087597918806720999316678995289547437333) }, + { SC_(0.378430664539337158203125), SC_(-0.1113472284261879798379642546535625292991) }, + { SC_(0.405791938304901123046875), SC_(-0.1130363541503776146472634379575969350382) }, + { SC_(0.4133758544921875), SC_(-0.1133834162443148976453781329005327033269) }, + { SC_(0.415735542774200439453125), SC_(-0.1134808289122708542397946052703635909288) }, + { SC_(0.43399322032928466796875), SC_(-0.1140666251072475325460987089801937766512) }, + { SC_(0.457166969776153564453125), SC_(-0.1143882508090213200510081514983929178479) }, + { SC_(0.457506835460662841796875), SC_(-0.1143895043011533114503086722896019260013) }, + { SC_(0.4594924449920654296875), SC_(-0.1143948425572877686750521180317509748309) }, + { SC_(0.464888513088226318359375), SC_(-0.1143922664386800836288584840918904877633) }, + { SC_(0.467694938182830810546875), SC_(-0.1143810844126184461958335384166685988825) }, + { SC_(0.468867778778076171875), SC_(-0.114374421494214380845931849419009841586) }, + { SC_(0.470592796802520751953125), SC_(-0.1143624939837521390307936225841266176506) }, + { SC_(0.481109678745269775390625), SC_(-0.1142351916017016455044428590981136786372) }, + { SC_(0.492881298065185546875), SC_(-0.1139822218283491394475161618135268104636) }, + { SC_(0.496461331844329833984375), SC_(-0.1138823102618022293565213085801050842487) } + } }; +#undef SC_ + + diff --git a/test/test_gamma_dist.cpp b/test/test_gamma_dist.cpp new file mode 100644 index 000000000..0023de948 --- /dev/null +++ b/test/test_gamma_dist.cpp @@ -0,0 +1,256 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// 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) + +// test_gamma_dist.cpp + +// http://en.wikipedia.org/wiki/Gamma_distribution +// http://www.itl.nist.gov/div898/handbook/eda/section3/eda366b.htm +// Also: +// Weisstein, Eric W. "Gamma Distribution." +// From MathWorld--A Wolfram Web Resource. +// http://mathworld.wolfram.com/GammaDistribution.html + +#include // for real_concept +#include // Boost.Test +#include + +#include + using boost::math::gamma_distribution; +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; + +template +RealType NaivePDF(RealType shape, RealType scale, RealType x) +{ + // Deliberately naive PDF calculator again which + // we'll compare our pdf function. However some + // published values to compare against would be better.... + using namespace std; + RealType result = log(x) * (shape - 1) - x / scale - boost::math::lgamma(shape) - log(scale) * shape; + return exp(result); +} + +template +void check_gamma(RealType shape, RealType scale, RealType x, RealType p, RealType q, RealType tol) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + gamma_distribution(shape, scale), // distribution. + x), // random variable. + p, // probability. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement( + gamma_distribution(shape, scale), // distribution. + x)), // random variable. + q, // probability complement. + tol); // %tolerance. + if(p < 0.999) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + gamma_distribution(shape, scale), // distribution. + p), // probability. + x, // random variable. + tol); // %tolerance. + } + if(q < 0.999) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement( + gamma_distribution(shape, scale), // distribution. + q)), // probability complement. + x, // random variable. + tol); // %tolerance. + } + // PDF: + BOOST_CHECK_CLOSE( + boost::math::pdf( + gamma_distribution(shape, scale), // distribution. + x), // random variable. + NaivePDF(shape, scale, x), // PDF + tol); // %tolerance. +} + +template +void test_spots(RealType) +{ + // Basic sanity checks + // + // 15 decimal places expressed as a persentage. + // The first tests use values generated by MathCAD, + // and should be accurate to around double precision. + // + RealType tolerance = (std::max)(5e-14f, boost::math::tools::real_cast(std::numeric_limits::epsilon() * 20)) * 100; + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + check_gamma( + static_cast(0.5), + static_cast(1), + static_cast(0.5), + static_cast(0.682689492137085), + static_cast(1-0.682689492137085), + tolerance); + check_gamma( + static_cast(2), + static_cast(1), + static_cast(0.5), + static_cast(0.090204010431050), + static_cast(1-0.090204010431050), + tolerance); + check_gamma( + static_cast(40), + static_cast(1), + static_cast(10), + static_cast(7.34163631456064E-13), + static_cast(1-7.34163631456064E-13), + tolerance); + + // + // Some more test data generated by the online + // calculator at http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm + // This has the advantage of supporting the scale parameter as well + // as shape, but has only a few digits accuracy, and produces + // some deeply suspect values if the shape parameter is < 1 + // (it doesn't agree with MathCAD or this implementation). + // To be fair the incomplete gamma is tricky to get right in this area... + // + tolerance = 1e-5f * 100; // 5 decimal places as a persentage + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + check_gamma( + static_cast(2), + static_cast(1)/5, + static_cast(0.1), + static_cast(0.090204), + static_cast(1-0.090204), + tolerance); + check_gamma( + static_cast(2), + static_cast(1)/5, + static_cast(0.5), + static_cast(1-0.287298), + static_cast(0.287298), + tolerance); + check_gamma( + static_cast(3), + static_cast(2), + static_cast(1), + static_cast(0.014388), + static_cast(1-0.014388), + tolerance * 10); // one less decimal place in the test value + check_gamma( + static_cast(3), + static_cast(2), + static_cast(5), + static_cast(0.456187), + static_cast(1-0.456187), + tolerance); + + + RealType tol2 = boost::math::tools::epsilon() * 5 * 100; // 5 eps as a persentage + gamma_distribution dist(8, 3); + RealType x = static_cast(0.125); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(8*3), tol2); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(8*3*3), tol2); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , sqrt(static_cast(8*3*3)), tol2); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol2); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tol2); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tol2); + // mode: + BOOST_CHECK_CLOSE( + mode(dist) + , static_cast(7 * 3), tol2); + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist) + , 2 / sqrt(static_cast(8)), tol2); + // kertosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , 3 + 6 / static_cast(8), tol2); + // kertosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist) + , 6 / static_cast(8), tol2); + + BOOST_CHECK_CLOSE( + median(dist), static_cast(23.007748327502412), // double precision test value + (std::max)(tol2, static_cast(std::numeric_limits::epsilon() * 2 * 100))); // 2 eps as persent + // Rely on default definition in derived accessors. + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_gamma_dist.exe" +Running 1 test case... +Tolerance for type float is 0.000238419 % +Tolerance for type float is 0.001 % +Tolerance for type double is 5e-012 % +Tolerance for type double is 0.001 % +Tolerance for type long double is 5e-012 % +Tolerance for type long double is 0.001 % +Tolerance for type class boost::math::concepts::real_concept is 5e-012 % +Tolerance for type class boost::math::concepts::real_concept is 0.001 % +*** No errors detected + +*/ + + diff --git a/test/test_gamma_hooks.hpp b/test/test_gamma_hooks.hpp new file mode 100644 index 000000000..f33fd9a2f --- /dev/null +++ b/test/test_gamma_hooks.hpp @@ -0,0 +1,176 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_TEST_GAMMA_OTHER_HOOKS_HPP +#define BOOST_MATH_TEST_GAMMA_OTHER_HOOKS_HPP + +#ifdef TEST_CEPHES +namespace other{ +extern "C" { + double gamma(double); + float gammaf(float); + long double gammal(long double); + double lgam(double); + float lgamf(float); + long double lgaml(long double); + float igamf(float, float); + double igam(double, double); + long double igaml(long double, long double); + float igamcf(float, float); + double igamc(double, double); + long double igamcl(long double, long double); +} +inline float tgamma(float x) +{ return gammaf(x); } +inline double tgamma(double x) +{ return gamma(x); } +inline long double tgamma(long double x) +{ +#ifdef BOOST_MSVC + return gamma((double)x); +#else + return gammal(x); +#endif +} +inline float lgamma(float x) +{ return lgamf(x); } +inline double lgamma(double x) +{ return lgam(x); } +inline long double lgamma(long double x) +{ +#ifdef BOOST_MSVC + return lgam((double)x); +#else + return lgaml(x); +#endif +} +inline float gamma_q(float x, float y) +{ return igamcf(x, y); } +inline double gamma_q(double x, double y) +{ return igamc(x, y); } +inline long double gamma_q(long double x, long double y) +{ +#ifdef BOOST_MSVC + return igamc((double)x, (double)y); +#else + return igamcl(x, y); +#endif +} +inline float gamma_p(float x, float y) +{ return igamf(x, y); } +inline double gamma_p(double x, double y) +{ return igam(x, y); } +inline long double gamma_p(long double x, long double y) +{ +#ifdef BOOST_MSVC + return igam((double)x, (double)y); +#else + return igaml(x, y); +#endif +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_NATIVE +#include +namespace other{ +#if defined(__FreeBSD__) +// no float version: +inline float tgamma(float x) +{ return ::tgamma(x); } +#else +inline float tgamma(float x) +{ return ::tgammaf(x); } +#endif +inline double tgamma(double x) +{ return ::tgamma(x); } +inline long double tgamma(long double x) +{ +#if defined(__CYGWIN__) || defined(__FreeBSD__) + // no long double versions: + return ::tgamma(x); +#else + return ::tgammal(x); +#endif +} +#if defined(__FreeBSD__) +inline float lgamma(float x) +{ return ::lgamma(x); } +#else +inline float lgamma(float x) +{ return ::lgammaf(x); } +#endif +inline double lgamma(double x) +{ return ::lgamma(x); } +inline long double lgamma(long double x) +{ +#if defined(__CYGWIN__) || defined(__FreeBSD__) + // no long double versions: + return ::lgamma(x); +#else + return ::lgammal(x); +#endif +} +} +#define TEST_OTHER +#endif + +#ifdef TEST_GSL +#define TEST_OTHER +#include + +namespace other{ +float tgamma(float z) +{ + return (float)gsl_sf_gamma(z); +} +double tgamma(double z) +{ + return gsl_sf_gamma(z); +} +long double tgamma(long double z) +{ + return gsl_sf_gamma(z); +} +float lgamma(float z) +{ + return (float)gsl_sf_lngamma(z); +} +double lgamma(double z) +{ + return gsl_sf_lngamma(z); +} +long double lgamma(long double z) +{ + return gsl_sf_lngamma(z); +} +inline float gamma_q(float x, float y) +{ return (float)gsl_sf_gamma_inc_Q(x, y); } +inline double gamma_q(double x, double y) +{ return gsl_sf_gamma_inc_Q(x, y); } +inline long double gamma_q(long double x, long double y) +{ return gsl_sf_gamma_inc_Q(x, y); } +inline float gamma_p(float x, float y) +{ return (float)gsl_sf_gamma_inc_P(x, y); } +inline double gamma_p(double x, double y) +{ return gsl_sf_gamma_inc_P(x, y); } +inline long double gamma_p(long double x, long double y) +{ return gsl_sf_gamma_inc_P(x, y); } +} +#endif + +#ifdef TEST_OTHER +namespace other{ + boost::math::concepts::real_concept tgamma(boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept lgamma(boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept gamma_q(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept gamma_p(boost::math::concepts::real_concept, boost::math::concepts::real_concept){ return 0; } +} +#endif + +#endif + + diff --git a/test/test_hermite.cpp b/test/test_hermite.cpp new file mode 100644 index 000000000..6e207376b --- /dev/null +++ b/test/test_hermite.cpp @@ -0,0 +1,207 @@ +// Copyright John Maddock 2006, 2007 +// Copyright Paul A. Bristow 2007 + +// 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) + +#ifdef _MSC_VER +# pragma warning(disable : 4127) // conditional expression is constant +# pragma warning(disable : 4512) // assignment operator could not be generated +# pragma warning(disable : 4756) // overflow in constant arithmetic +// Constants are too big for float case, but this doesn't matter for test. +#endif + +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_legendre_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Hermite polynomials. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + "boost::math::hermite", 10, 5); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + "boost::math::hermite", 10, 5); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_hermite(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(unsigned, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::hermite; +#else + pg funcp = boost::math::hermite; +#endif + + typedef unsigned (*cast_t)(value_type); + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test hermite against data: + // + result = boost::math::tools::test( + data, + bind_func_int1(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::hermite", test_name); + + std::cout << std::endl; +} + +template +void test_hermite(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "hermite.ipp" + + do_test_hermite(hermite, name, "Hermite Polynomials"); +} + +template +void test_spots(T, const char* t) +{ + std::cout << "Testing basic sanity checks for type " << t << std::endl; + // + // basic sanity checks, tolerance is 100 epsilon: + // These spots were generated by MathCAD, precision is + // 14-16 digits. + // + T tolerance = (std::max)(boost::math::tools::epsilon() * 100, static_cast(1e-14)); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(0, static_cast(1)), static_cast(1.L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(1, static_cast(1)), static_cast(2.L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(1, static_cast(2)), static_cast(4.L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(1, static_cast(10)), static_cast(20), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(1, static_cast(100)), static_cast(200), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(1, static_cast(1e6)), static_cast(2e6), tolerance); + if(std::numeric_limits::max_exponent >= std::numeric_limits::max_exponent) + { + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(1, static_cast(1e307)), static_cast(2e307), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(99, static_cast(100)), static_cast(4.967223743011310E+227L), tolerance); + } + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(10, static_cast(30)), static_cast(5.896624628001300E+17L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(10, static_cast(1000)), static_cast(1.023976960161280E+33L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(10, static_cast(10)), static_cast(8.093278209760000E+12L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(10, static_cast(-10)), static_cast(8.093278209760000E+12L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(3, static_cast(-10)), static_cast(-7.880000000000000E+3L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(3, static_cast(-1000)), static_cast(-7.999988000000000E+9L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::hermite(3, static_cast(-1000000)), static_cast(-7.999999999988000E+18L), tolerance); +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + + boost::math::hermite(51, 915.0); + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_spots(0.0F, "float"); +#endif + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif + + expected_results(); + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_hermite(0.1F, "float"); +#endif + test_hermite(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_hermite(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_hermite(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_ibeta.cpp b/test/test_ibeta.cpp new file mode 100644 index 000000000..40a4611f7 --- /dev/null +++ b/test/test_ibeta.cpp @@ -0,0 +1,582 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_beta_hooks.hpp" +#include "handle_test_result.hpp" + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the incomplete beta functions beta, +// betac, ibeta and ibetac. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Darwin: just one special case for real_concept: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + "real_concept", // test type(s) + "(?i).*large.*", // test data group + ".*", 400000, 50000); // test function + + // + // Linux - results depend quite a bit on the + // processor type, and how good the std::pow + // function is for that processor. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + largest_type, // test type(s) + "(?i).*small.*", // test data group + ".*", 350, 100); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + largest_type, // test type(s) + "(?i).*medium.*", // test data group + ".*", 300, 80); // test function + // + // Deficiencies in pow function really kick in here for + // large arguments. Note also that the tests here get + // *very* extreme due to the increased exponent range + // of 80-bit long doubles. Also effect Mac OS. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux|Mac OS", // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 200000, 10000); // test function +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux|Mac OS|Sun.*", // platform + "double", // test type(s) + "(?i).*large.*", // test data group + ".*", 40, 20); // test function +#endif + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux|Mac OS", // platform + "real_concept", // test type(s) + "(?i).*medium.*", // test data group + ".*", 350, 100); // test function + + // + // HP-UX: + // + // Large value tests include some with *very* extreme + // results, thanks to the large exponent range of + // 128-bit long doubles. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 200000, 10000); // test function + // + // Tru64: + // + add_expected_result( + ".*Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 130000, 10000); // test function + // + // Sun OS: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 130000, 10000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "(?i).*small.*", // test data group + ".*", 130, 30); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "(?i).*medium.*", // test data group + ".*", 200, 40); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + "real_concept", // test type(s) + "(?i).*medium.*", // test data group + ".*", 200, 40); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + "real_concept", // test type(s) + "(?i).*small.*", // test data group + ".*", 130, 30); // test function + // + // MinGW: + // + add_expected_result( + "[^|]*mingw[^|]*", // compiler + "[^|]*", // stdlib + ".*", // platform + "double", // test type(s) + "(?i).*large.*", // test data group + ".*", 20, 10); // test function + add_expected_result( + "[^|]*mingw[^|]*", // compiler + "[^|]*", // stdlib + ".*", // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 200000, 10000); // test function + +#ifdef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + // + // No long doubles: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + BOOST_PLATFORM, // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 13000, 500); // test function +#endif + // + // Catch all cases come last: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "(?i).*small.*", // test data group + ".*", 60, 10); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "(?i).*medium.*", // test data group + ".*", 150, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "(?i).*large.*", // test data group + ".*", 5000, 500); // test function + + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "(?i).*small.*", // test data group + ".*", 60, 15); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "(?i).*medium.*", // test data group + ".*", 200, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "(?i).*large.*", // test data group + ".*", 200000, 50000); // test function + + // catch all default is 2eps for all types: + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "[^|]*", // test type(s) + "[^|]*", // test data group + ".*", 2, 2); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_beta(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::beta; +#else + pg funcp = boost::math::beta; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test beta against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::beta", test_name); + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::betac; +#else + funcp = boost::math::betac; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(4)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::betac", test_name); + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::ibeta; +#else + funcp = boost::math::ibeta; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(5)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibeta", test_name); + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::ibetac; +#else + funcp = boost::math::ibetac; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(6)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibetac", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::ibeta; + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(5)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::ibeta"); + } +#endif + std::cout << std::endl; +} + +template +void test_beta(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // five items, input value a, input value b, integration limits x, beta(a, b, x) and ibeta(a, b, x): + // +# include "ibeta_small_data.ipp" + + do_test_beta(ibeta_small_data, name, "Incomplete Beta Function: Small Values"); + +# include "ibeta_data.ipp" + + do_test_beta(ibeta_data, name, "Incomplete Beta Function: Medium Values"); + +# include "ibeta_large_data.ipp" + + do_test_beta(ibeta_large_data, name, "Incomplete Beta Function: Large and Diverse Values"); + +# include "ibeta_int_data.ipp" + + do_test_beta(ibeta_int_data, name, "Incomplete Beta Function: Small Integer Values"); +} + +template +void test_spots(T) +{ + // + // basic sanity checks, tolerance is 30 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 3000; + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(159) / 10000, //(0.015964560210704803L), + static_cast(1184) / 1000000000L,//(1.1846856068586931e-005L), + static_cast(6917) / 10000),//(0.69176378846168518L)), + static_cast(0.000075393541456247525676062058821484095548666733251733L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(4243) / 100,//(42.434902191162109L), + static_cast(3001) / 10000, //(0.30012050271034241L), + static_cast(9157) / 10000), //(0.91574394702911377L)), + static_cast(0.0028387319012616013434124297160711532419664289474798L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(9713) / 1000, //(9.7131776809692383L), + static_cast(9940) / 100, //(99.406852722167969L), + static_cast(8391) / 100000), //(0.083912998437881470L)), + static_cast(0.46116895440368248909937863372410093344466819447476L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(72.5), + static_cast(1.125), + static_cast(0.75)), + static_cast(1.3423066982487051710597194786268004978931316494920e-9L), tolerance*3); // extra tolerance needed on linux X86EM64 + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(4985)/1000, //(4.9854421615600586L), + static_cast(1066)/1000, //(1.0665277242660522L), + static_cast(7599)/10000), //(0.75997146964073181L)), + static_cast(0.27533431334486812211032939156910472371928659321347L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(6813)/1000, //(6.8127136230468750L), + static_cast(1056)/1000, //(1.0562920570373535L), + static_cast(1741)/10000), //(0.17416560649871826L)), + static_cast(7.6736128722762245852815040810349072461658078840945e-6L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(4898)/10000, //(0.48983201384544373L), + static_cast(2251)/10000, //(0.22512593865394592L), + static_cast(2003)/10000), //(0.20032680034637451L)), + static_cast(0.17089223868046209692215231702890838878342349377008L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(4049)/1000, //(4.0498137474060059L), + static_cast(1540)/10000, //(0.15403440594673157L), + static_cast(6537)/10000), //(0.65370121598243713L)), + static_cast(0.017273988301528087878279199511703371301647583919670L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(7269)/1000, //(7.2695474624633789L), + static_cast(1190)/10000, //(0.11902070045471191L), + static_cast(8003)/10000), //(0.80036874115467072L)), + static_cast(0.013334694467796052900138431733772122625376753696347L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(2726)/1000, //(2.7266697883605957L), + static_cast(1151)/100000, //(0.011510574258863926L), + static_cast(8665)/100000), //(0.086654007434844971L)), + static_cast(5.8218877068298586420691288375690562915515260230173e-6L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(3431)/10000, //(0.34317314624786377L), + static_cast(4634)/100000, //0.046342257410287857L), + static_cast(7582)/10000), //(0.75823287665843964L)), + static_cast(0.15132819929418661038699397753916091907278005695387L), tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(0.34317314624786377L), + static_cast(0.046342257410287857L), + static_cast(0)), + static_cast(0), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibetac( + static_cast(0.34317314624786377L), + static_cast(0.046342257410287857L), + static_cast(0)), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(0.34317314624786377L), + static_cast(0.046342257410287857L), + static_cast(1)), + static_cast(1), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibetac( + static_cast(0.34317314624786377L), + static_cast(0.046342257410287857L), + static_cast(1)), + static_cast(0), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(1), + static_cast(4634)/100000, //(0.046342257410287857L), + static_cast(32)/100), + static_cast(0.017712849440718489999419956301675684844663359595318L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(4634)/100000, //(0.046342257410287857L), + static_cast(1), + static_cast(32)/100), + static_cast(0.94856839398626914764591440181367780660208493234722L), tolerance); + + // try with some integer arguments: + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(3), + static_cast(8), + static_cast(0.25)), + static_cast(0.474407196044921875000000000000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(6), + static_cast(8), + static_cast(0.25)), + static_cast(0.0802125930786132812500000000000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(12), + static_cast(1), + static_cast(0.25)), + static_cast(5.96046447753906250000000000000000000000000000000000000000000e-8L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta( + static_cast(1), + static_cast(8), + static_cast(0.25)), + static_cast(0.899887084960937500000000000000000000000000000000000000000000L), tolerance); + + // very naive check on derivative: + using namespace std; // For ADL of std functions + tolerance = boost::math::tools::epsilon() * 10000; // 100 eps + BOOST_CHECK_CLOSE( + ::boost::math::ibeta_derivative( + static_cast(2), + static_cast(3), + static_cast(0.5)), + pow(static_cast(0.5), static_cast(2)) * pow(static_cast(0.5), static_cast(1)) / boost::math::beta(static_cast(2), static_cast(3)), tolerance); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif +#ifdef TEST_FLOAT + test_spots(0.0F); +#endif +#ifdef TEST_DOUBLE + test_spots(0.0); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_spots(0.0L); +#endif +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_spots(boost::math::concepts::real_concept(0.1)); +#endif +#endif +#endif + +#ifdef TEST_FLOAT + test_beta(0.1F, "float"); +#endif +#ifdef TEST_DOUBLE + test_beta(0.1, "double"); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_beta(0.1L, "long double"); +#endif +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#ifdef TEST_REAL_CONCEPT + test_beta(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + + + diff --git a/test/test_ibeta_inv.cpp b/test/test_ibeta_inv.cpp new file mode 100644 index 000000000..fb6a3705c --- /dev/null +++ b/test/test_ibeta_inv.cpp @@ -0,0 +1,379 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_beta_hooks.hpp" +#include "handle_test_result.hpp" + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the incomplete beta function inverses +// ibeta_inv and ibetac_inv. There are three sets of tests: +// 1) Spot tests which compare our results with selected values +// computed using the online special function calculator at +// functions.wolfram.com, +// 2) TODO!!!! Accuracy tests use values generated with NTL::RR at +// 1000-bit precision and our generic versions of these functions. +// 3) Round trip sanity checks, use the test data for the forward +// functions, and verify that we can get (approximately) back +// where we started. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + // Note that permitted max errors are really pretty high + // at around 10000eps. The reason for this is that even + // if the forward function is off by 1eps, it's enough to + // throw out the inverse by ~7000eps. In other words the + // forward function may flatline, so that many x-values + // all map to about the same p. Trying to invert in this + // region is almost futile. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + // + // Linux etc, + // Extended exponent range of long double + // causes more extreme test cases to be executed: + // + if(std::numeric_limits::digits == 64) + { + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*", // test data group + ".*", 20, 10); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "long double", // test type(s) + ".*", // test data group + ".*", 200000, 100000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 5000000L, 500000); // test function + } +#endif + // + // MinGW, + // Extended exponent range of long double + // causes more extreme test cases to be executed: + // + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*", // test data group + ".*", 10, 10); // test function + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 300000, 20000); // test function + + // + // HP-UX and Solaris: + // Extended exponent range of long double + // causes more extreme test cases to be executed: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "HP-UX|Sun Solaris", // platform + "long double", // test type(s) + ".*", // test data group + ".*", 200000, 100000); // test function + + // + // HP Tru64: + // Extended exponent range of long double + // causes more extreme test cases to be executed: + // + add_expected_result( + "HP Tru64.*", // compiler + ".*", // stdlib + ".*", // platform + "long double", // test type(s) + ".*", // test data group + ".*", 200000, 100000); // test function + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 10000, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 500000, 500000); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void test_inverses(const T& data) +{ + using namespace std; + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + value_type precision = static_cast(ldexp(1.0, 1-boost::math::policies::digits >()/2)) * 100; + if(boost::math::policies::digits >() < 50) + precision = 1; // 1% or two decimal digits, all we can hope for when the input is truncated + + for(unsigned i = 0; i < data.size(); ++i) + { + // + // These inverse tests are thrown off if the output of the + // incomplete beta is too close to 1: basically there is insuffient + // information left in the value we're using as input to the inverse + // to be able to get back to the original value. + // + if(data[i][5] == 0) + BOOST_CHECK_EQUAL(boost::math::ibeta_inv(data[i][0], data[i][1], data[i][5]), value_type(0)); + else if((1 - data[i][5] > 0.001) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::ibeta_inv(data[i][0], data[i][1], data[i][5]); + BOOST_CHECK_CLOSE(data[i][2], inv, precision); + } + else if(1 == data[i][5]) + BOOST_CHECK_EQUAL(boost::math::ibeta_inv(data[i][0], data[i][1], data[i][5]), value_type(1)); + + if(data[i][6] == 0) + BOOST_CHECK_EQUAL(boost::math::ibetac_inv(data[i][0], data[i][1], data[i][6]), value_type(1)); + else if((1 - data[i][6] > 0.001) + && (fabs(data[i][6]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][6]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::ibetac_inv(data[i][0], data[i][1], data[i][6]); + BOOST_CHECK_CLOSE(data[i][2], inv, precision); + } + else if(data[i][6] == 1) + BOOST_CHECK_EQUAL(boost::math::ibetac_inv(data[i][0], data[i][1], data[i][6]), value_type(0)); + } +} + +template +void test_inverses2(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::ibeta_inv; +#else + pg funcp = boost::math::ibeta_inv; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test ibeta_inv(T, T, T) against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibeta_inv", test_name); + // + // test ibetac_inv(T, T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::ibetac_inv; +#else + funcp = boost::math::ibetac_inv; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(4)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibetac_inv", test_name); +} + + +template +void test_beta(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // five items, input value a, input value b, integration limits x, beta(a, b, x) and ibeta(a, b, x): + // +# include "ibeta_small_data.ipp" + + test_inverses(ibeta_small_data); + +# include "ibeta_data.ipp" + + test_inverses(ibeta_data); + +# include "ibeta_large_data.ipp" + + test_inverses(ibeta_large_data); + +# include "ibeta_inv_data.ipp" + + test_inverses2(ibeta_inv_data, name, "Inverse incomplete beta"); +} + +template +void test_spots(T) +{ + // + // basic sanity checks, tolerance is 100 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 10000; + BOOST_CHECK_CLOSE( + ::boost::math::ibeta_inv( + static_cast(1), + static_cast(2), + static_cast(0.5)), + static_cast(0.29289321881345247559915563789515096071516406231153L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta_inv( + static_cast(3), + static_cast(0.5), + static_cast(0.5)), + static_cast(0.92096723292382700385142816696980724853063433975470L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta_inv( + static_cast(20.125), + static_cast(0.5), + static_cast(0.5)), + static_cast(0.98862133312917003480022776106012775747685870929920L), tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::ibeta_inv( + static_cast(40), + static_cast(80), + static_cast(0.5)), + static_cast(0.33240456430025026300937492802591128972548660643778L), tolerance); +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + expected_results(); +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif +#ifdef TEST_FLOAT + test_spots(0.0F); +#endif +#ifdef TEST_DOUBLE + test_spots(0.0); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_spots(0.0L); +#endif +#ifdef TEST_REAL_CONCEPT + test_spots(boost::math::concepts::real_concept(0.1)); +#endif +#endif + +#ifdef TEST_FLOAT + test_beta(0.1F, "float"); +#endif +#ifdef TEST_DOUBLE + test_beta(0.1, "double"); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_beta(0.1L, "long double"); +#endif +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#ifdef TEST_REAL_CONCEPT + test_beta(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + + diff --git a/test/test_ibeta_inv_ab.cpp b/test/test_ibeta_inv_ab.cpp new file mode 100644 index 000000000..3110e41bd --- /dev/null +++ b/test/test_ibeta_inv_ab.cpp @@ -0,0 +1,315 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#ifdef TEST_GSL +#include +#include +#endif + +#include "handle_test_result.hpp" + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the incomplete beta function inverses +// ibeta_inva and ibetac_inva. There are three sets of tests: +// 1) TODO!!!! Accuracy tests use values generated with NTL::RR at +// 1000-bit precision and our generic versions of these functions. +// 2) Round trip sanity checks, use the test data for the forward +// functions, and verify that we can get (approximately) back +// where we started. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Linux: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 3000, 500); // test function + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 500, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "float|double", // test type(s) + ".*", // test data group + ".*", 5, 3); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 1000000, 500000); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void test_inverses(const T& data) +{ + using namespace std; + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + value_type precision = static_cast(ldexp(1.0, 1-boost::math::policies::digits >()/2)) * 100; + if(boost::math::policies::digits >() < 50) + precision = 1; // 1% or two decimal digits, all we can hope for when the input is truncated + + for(unsigned i = 0; i < data.size(); ++i) + { + // + // These inverse tests are thrown off if the output of the + // incomplete beta is too close to 1: basically there is insuffient + // information left in the value we're using as input to the inverse + // to be able to get back to the original value. + // + if(data[i][5] == 0) + { + BOOST_CHECK_EQUAL(boost::math::ibeta_inva(data[i][1], data[i][2], data[i][5]), boost::math::tools::max_value()); + BOOST_CHECK_EQUAL(boost::math::ibeta_invb(data[i][0], data[i][2], data[i][5]), boost::math::tools::min_value()); + } + else if((1 - data[i][5] > 0.001) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::ibeta_inva(data[i][1], data[i][2], data[i][5]); + BOOST_CHECK_CLOSE(data[i][0], inv, precision); + inv = boost::math::ibeta_invb(data[i][0], data[i][2], data[i][5]); + BOOST_CHECK_CLOSE(data[i][1], inv, precision); + } + else if(1 == data[i][5]) + { + BOOST_CHECK_EQUAL(boost::math::ibeta_inva(data[i][1], data[i][2], data[i][5]), boost::math::tools::min_value()); + BOOST_CHECK_EQUAL(boost::math::ibeta_invb(data[i][0], data[i][2], data[i][5]), boost::math::tools::max_value()); + } + + if(data[i][6] == 0) + { + BOOST_CHECK_EQUAL(boost::math::ibetac_inva(data[i][1], data[i][2], data[i][6]), boost::math::tools::min_value()); + BOOST_CHECK_EQUAL(boost::math::ibetac_invb(data[i][0], data[i][2], data[i][6]), boost::math::tools::max_value()); + } + else if((1 - data[i][6] > 0.001) + && (fabs(data[i][6]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][6]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::ibetac_inva(data[i][1], data[i][2], data[i][6]); + BOOST_CHECK_CLOSE(data[i][0], inv, precision); + inv = boost::math::ibetac_invb(data[i][0], data[i][2], data[i][6]); + BOOST_CHECK_CLOSE(data[i][1], inv, precision); + } + else if(data[i][6] == 1) + { + BOOST_CHECK_EQUAL(boost::math::ibetac_inva(data[i][1], data[i][2], data[i][6]), boost::math::tools::max_value()); + BOOST_CHECK_EQUAL(boost::math::ibetac_invb(data[i][0], data[i][2], data[i][6]), boost::math::tools::min_value()); + } + } +} + +template +void test_inverses2(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::ibeta_inva; +#else + pg funcp = boost::math::ibeta_inva; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test ibeta_inva(T, T, T) against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibeta_inva", test_name); + // + // test ibetac_inva(T, T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::ibetac_inva; +#else + funcp = boost::math::ibetac_inva; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(4)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibetac_inva", test_name); + // + // test ibeta_invb(T, T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::ibeta_invb; +#else + funcp = boost::math::ibeta_invb; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(5)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibeta_invb", test_name); + // + // test ibetac_invb(T, T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::ibetac_invb; +#else + funcp = boost::math::ibetac_invb; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1, 2), + extract_result(6)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::ibetac_invb", test_name); +} + +template +void test_beta(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // five items, input value a, input value b, integration limits x, beta(a, b, x) and ibeta(a, b, x): + // + std::cout << "Running sanity checks for type " << name << std::endl; + +# include "ibeta_small_data.ipp" + + test_inverses(ibeta_small_data); + +# include "ibeta_data.ipp" + + test_inverses(ibeta_data); + +# include "ibeta_large_data.ipp" + + test_inverses(ibeta_large_data); +#ifndef FULL_TEST + if(boost::is_floating_point::value){ +#endif + // + // This accuracy test is normally only enabled for "real" + // floating point types and not for class real_concept. + // The reason is that these tests are exceptionally slow + // to complete when T doesn't have Lanczos support defined for it. + // +# include "ibeta_inva_data.ipp" + + test_inverses2(ibeta_inva_data, name, "Inverse incomplete beta"); +#ifndef FULL_TEST + } +#endif +} + +int test_main(int, char* []) +{ + expected_results(); +#ifdef TEST_GSL + gsl_set_error_handler_off(); +#endif + +#ifdef TEST_FLOAT + test_beta(0.1F, "float"); +#endif +#ifdef TEST_DOUBLE + test_beta(0.1, "double"); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_beta(0.1L, "long double"); +#endif +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#ifdef TEST_REAL_CONCEPT + test_beta(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + diff --git a/test/test_igamma.cpp b/test/test_igamma.cpp new file mode 100644 index 000000000..2940ca09e --- /dev/null +++ b/test/test_igamma.cpp @@ -0,0 +1,518 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_gamma_hooks.hpp" +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the incomplete gamma functions tgamma, +// tgamma_lower, gamma_p and gamma_q. There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Linux: + // + // These should not really be needed, but on *some* Linux + // versions these error rates are quite large and appear to + // be related to the accuracy of powl and expl. On Itanium + // or Xeon machines the error rates are much lower than this. + // Worst cases appear to be AMD64 machines. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 1000, 200); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + largest_type, // test type(s) + "[^|]*integer[^|]*", // test data group + "[^|]*", 1000, 200); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + "real_concept", // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 600, 200); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + "real_concept", // test type(s) + "[^|]*integer[^|]*", // test data group + "[^|]*", 600, 200); // test function + + // + // Mac OS X: + // It's not clear why these should be required, but see notes above + // about Linux. + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 5000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 40, 15); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "[^|]*integer[^|]*", // test data group + "[^|]*", 2000, 300); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + "real_concept", // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 5000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + "real_concept", // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 40, 15); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + "real_concept", // test type(s) + "[^|]*integer[^|]*", // test data group + "[^|]*", 2000, 300); // test function + // + // HP-UX: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "HP-UX", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 500, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "HP-UX", // platform + "real_concept", // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 500, 100); // test function + // + // Sun OS: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 500, 100); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + largest_type, // test type(s) + "[^|]*integer[^|]*", // test data group + "[^|]*", 100, 30); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + "real_concept", // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 500, 100); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Sun.*", // platform + "real_concept", // test type(s) + "[^|]*integer[^|]*", // test data group + "[^|]*", 100, 30); // test function + + // + // Mac OS X: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Mac OS", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 100, 50); // test function + + // + // Large exponent range causes more extreme test cases to be evaluated: + // + if(std::numeric_limits::max_exponent > std::numeric_limits::max_exponent) + { + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*large[^|]*", // test data group + ".*", 40000, 3000); // test function + } + + + // + // Catch all cases come last: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 50, 20); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 20, 10); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*large[^|]*", // test data group + "boost::math::gamma_q", 500, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "Cygwin", // platform + largest_type, // test type(s) + "[^|]*large[^|]*", // test data group + "boost::math::gamma_p", 700, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*large[^|]*", // test data group + "boost::math::gamma_p", 350, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*integer[^|]*", // test data group + ".*", 20, 10); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 200, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*small[^|]*", // test data group + ".*", 20, 10); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*large[^|]*", // test data group + ".*", 1000000, 100000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*integer[^|]*", // test data group + ".*", 40, 10); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_gamma_2(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::tgamma; +#else + pg funcp = boost::math::tgamma; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test tgamma(T, T) against data: + // + if(data[0][2] > 0) + { + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma", test_name); + // + // test tgamma_lower(T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::tgamma_lower; +#else + funcp = boost::math::tgamma_lower; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(4)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma_lower", test_name); + } + // + // test gamma_q(T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::gamma_q; +#else + funcp = boost::math::gamma_q; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::gamma_q", test_name); +#if defined(TEST_CEPHES) || defined(TEST_GSL) + // + // test other gamma_q(T, T) against data: + // + if(boost::is_floating_point::value) + { + funcp = other::gamma_q; + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(3)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::gamma_q"); + } +#endif + // + // test gamma_p(T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::gamma_p; +#else + funcp = boost::math::gamma_p; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(5)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::gamma_p", test_name); +#if defined(TEST_CEPHES) || defined(TEST_GSL) + // + // test other gamma_p(T, T) against data: + // + if(boost::is_floating_point::value) + { + funcp = other::gamma_p; + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(5)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::gamma_p"); + } +#endif + std::cout << std::endl; +} + +template +void test_gamma(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // First the data for the incomplete gamma function, each + // row has the following 6 entries: + // Parameter a, parameter z, + // Expected tgamma(a, z), Expected gamma_q(a, z) + // Expected tgamma_lower(a, z), Expected gamma_p(a, z) + // +# include "igamma_med_data.ipp" + + do_test_gamma_2(igamma_med_data, name, "tgamma(a, z) medium values"); + +# include "igamma_small_data.ipp" + + do_test_gamma_2(igamma_small_data, name, "tgamma(a, z) small values"); + +# include "igamma_big_data.ipp" + + do_test_gamma_2(igamma_big_data, name, "tgamma(a, z) large values"); + +# include "igamma_int_data.ipp" + + do_test_gamma_2(igamma_int_data, name, "tgamma(a, z) integer and half integer values"); +} + +template +void test_spots(T) +{ + // + // basic sanity checks, tolerance is 10 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 1000; +#if (defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)) + tolerance *= 10; +#endif + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(5), static_cast(1)), static_cast(23.912163676143750903709045060494956383977723517065L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(5), static_cast(5)), static_cast(10.571838841565097874621959975919877646444998907920L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(5), static_cast(10)), static_cast(0.70206451384706574414638719662835463671916532623256L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(5), static_cast(100)), static_cast(3.8734332808745531496973774140085644548465762343719e-36L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(0.5), static_cast(0.5)), static_cast(0.56241823159440712427949495730204306902676756479651L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(0.5), static_cast(9)/10), static_cast(0.31853210360412109873859360390443790076576777747449L), tolerance*10); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(0.5), static_cast(5)), static_cast(0.0027746032604128093194908357272603294120210079791437L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma(static_cast(0.5), static_cast(100)), static_cast(3.7017478604082789202535664481339075721362102520338e-45L), tolerance); + + BOOST_CHECK_CLOSE(::boost::math::tgamma_lower(static_cast(5), static_cast(1)), static_cast(0.087836323856249096290954939505043616022276482935091L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma_lower(static_cast(5), static_cast(5)), static_cast(13.428161158434902125378040024080122353555001092080L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma_lower(static_cast(5), static_cast(10)), static_cast(23.297935486152934255853612803371645363280834673767L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::tgamma_lower(static_cast(5), static_cast(100)), static_cast(23.999999999999999999999999999999999996126566719125L), tolerance); + + BOOST_CHECK_CLOSE(::boost::math::gamma_q(static_cast(5), static_cast(1)), static_cast(0.99634015317265628765454354418728984933240514654437L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q(static_cast(5), static_cast(5)), static_cast(0.44049328506521241144258166566332823526854162116334L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q(static_cast(5), static_cast(10)), static_cast(0.029252688076961072672766133192848109863298555259690L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q(static_cast(5), static_cast(100)), static_cast(1.6139305336977304790405739225035685228527400976549e-37L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q(static_cast(1.5), static_cast(2)), static_cast(0.26146412994911062220282207597592120190281060919079L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q(static_cast(20.5), static_cast(22)), static_cast(0.34575332043467326814971590879658406632570278929072L), tolerance); + + BOOST_CHECK_CLOSE(::boost::math::gamma_p(static_cast(5), static_cast(1)), static_cast(0.0036598468273437123454564558127101506675948534556288L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_p(static_cast(5), static_cast(5)), static_cast(0.55950671493478758855741833433667176473145837883666L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_p(static_cast(5), static_cast(10)), static_cast(0.97074731192303892732723386680715189013670144474031L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_p(static_cast(5), static_cast(100)), static_cast(0.9999999999999999999999999999999999998386069466302L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_p(static_cast(1.5), static_cast(2)), static_cast(0.73853587005088937779717792402407879809718939080921L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_p(static_cast(20.5), static_cast(22)), static_cast(0.65424667956532673185028409120341593367429721070928L), tolerance); + + // naive check on derivative function: + using namespace std; // For ADL of std functions + tolerance = boost::math::tools::epsilon() * 5000; // 50 eps + BOOST_CHECK_CLOSE(::boost::math::gamma_p_derivative(static_cast(20.5), static_cast(22)), + exp(static_cast(-22)) * pow(static_cast(22), static_cast(19.5)) / boost::math::tgamma(static_cast(20.5)), tolerance); + +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_spots(0.0F); +#endif + test_spots(0.0); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.1)); +#endif +#endif + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_gamma(0.1F, "float"); +#endif + test_gamma(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_gamma(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_gamma(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_igamma_inv.cpp b/test/test_igamma_inv.cpp new file mode 100644 index 000000000..a9530ddee --- /dev/null +++ b/test/test_igamma_inv.cpp @@ -0,0 +1,440 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "test_gamma_hooks.hpp" +#include "handle_test_result.hpp" + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the incomplete gamma function inverses +// gamma_p_inv and gamma_q_inv. There are three sets of tests: +// 1) Spot tests which compare our results with selected values +// computed using the online special function calculator at +// functions.wolfram.com, +// 2) Accuracy tests use values generated with NTL::RR at +// 1000-bit precision and our generic versions of these functions. +// 3) Round trip sanity checks, use the test data for the forward +// functions, and verify that we can get (approximately) back +// where we started. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Large exponent range causes more extreme test cases to be evaluated: + // + if(std::numeric_limits::max_exponent > std::numeric_limits::max_exponent) + { + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 200000, 10000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 70000, 8000); // test function + } + // + // These high error rates are seen on on some Linux + // architectures: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux.*", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 350, 5); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux.*", // platform + largest_type, // test type(s) + "[^|]*large[^|]*", // test data group + "[^|]*", 150, 5); // test function + + + // + // Catch all cases come last: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 20, 5); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*large[^|]*", // test data group + "[^|]*", 5, 2); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 2100, 500); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "float|double", // test type(s) + "[^|]*small[^|]*", // test data group + "boost::math::gamma_p_inv", 500, 60); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "float|double", // test type(s) + "[^|]*", // test data group + "boost::math::gamma_q_inv", 350, 60); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "float|double", // test type(s) + "[^|]*", // test data group + "[^|]*", 4, 2); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*medium[^|]*", // test data group + "[^|]*", 20, 5); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*large[^|]*", // test data group + "[^|]*", 1000, 500); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*small[^|]*", // test data group + "[^|]*", 3700, 500); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +#define BOOST_CHECK_CLOSE_EX(a, b, prec, i) \ + {\ + unsigned int failures = boost::unit_test::results_collector.results( boost::unit_test::framework::current_test_case().p_id ).p_assertions_failed;\ + BOOST_CHECK_CLOSE(a, b, prec); \ + if(failures != boost::unit_test::results_collector.results( boost::unit_test::framework::current_test_case().p_id ).p_assertions_failed)\ + {\ + std::cerr << "Failure was at row " << i << std::endl;\ + std::cerr << std::setprecision(35); \ + std::cerr << "{ " << data[i][0] << " , " << data[i][1] << " , " << data[i][2];\ + std::cerr << " , " << data[i][3] << " , " << data[i][4] << " , " << data[i][5] << " } " << std::endl;\ + }\ + } + +template +void do_test_gamma_2(const T& data, const char* type_name, const char* test_name) +{ + // + // test gamma_p_inv(T, T) against data: + // + using namespace std; + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << test_name << " with type " << type_name << std::endl; + + // + // These sanity checks test for a round trip accuracy of one half + // of the bits in T, unless T is type float, in which case we check + // for just one decimal digit. The problem here is the sensitivity + // of the functions, not their accuracy. This test data was generated + // for the forward functions, which means that when it is used as + // the input to the inverses then it is necessarily inexact. This rounding + // of the input is what makes the data unsuitable for use as an accuracy check, + // and also demonstrates that you can't in general round-trip these functions. + // It is however a useful sanity check. + // + value_type precision = static_cast(ldexp(1.0, 1-boost::math::policies::digits >()/2)) * 100; + if(boost::math::policies::digits >() < 50) + precision = 1; // 1% or two decimal digits, all we can hope for when the input is truncated to float + + for(unsigned i = 0; i < data.size(); ++i) + { + // + // These inverse tests are thrown off if the output of the + // incomplete gamma is too close to 1: basically there is insuffient + // information left in the value we're using as input to the inverse + // to be able to get back to the original value. + // + if(data[i][5] == 0) + BOOST_CHECK_EQUAL(boost::math::gamma_p_inv(data[i][0], data[i][5]), value_type(0)); + else if((1 - data[i][5] > 0.001) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::gamma_p_inv(data[i][0], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][1], inv, precision, i); + } + else if(1 == data[i][5]) + BOOST_CHECK_EQUAL(boost::math::gamma_p_inv(data[i][0], data[i][5]), boost::math::tools::max_value()); + else + { + // not enough bits in our input to get back to x, but we should be in + // the same ball park: + value_type inv = boost::math::gamma_p_inv(data[i][0], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][1], inv, 100000, i); + } + + if(data[i][3] == 0) + BOOST_CHECK_EQUAL(boost::math::gamma_q_inv(data[i][0], data[i][3]), boost::math::tools::max_value()); + else if((1 - data[i][3] > 0.001) && (fabs(data[i][3]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::gamma_q_inv(data[i][0], data[i][3]); + BOOST_CHECK_CLOSE_EX(data[i][1], inv, precision, i); + } + else if(1 == data[i][3]) + BOOST_CHECK_EQUAL(boost::math::gamma_q_inv(data[i][0], data[i][3]), value_type(0)); + else if(fabs(data[i][3]) > 2 * boost::math::tools::min_value()) + { + // not enough bits in our input to get back to x, but we should be in + // the same ball park: + value_type inv = boost::math::gamma_q_inv(data[i][0], data[i][3]); + BOOST_CHECK_CLOSE_EX(data[i][1], inv, 100, i); + } + } + std::cout << std::endl; +} + +template +void do_test_gamma_inv(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::gamma_p_inv; +#else + pg funcp = boost::math::gamma_p_inv; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test gamma_p_inv(T, T) against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::gamma_p_inv", test_name); + // + // test gamma_q_inv(T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::gamma_q_inv; +#else + funcp = boost::math::gamma_q_inv; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::gamma_q_inv", test_name); +} + +template +void test_gamma(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // First the data for the incomplete gamma function, each + // row has the following 6 entries: + // Parameter a, parameter z, + // Expected tgamma(a, z), Expected gamma_q(a, z) + // Expected tgamma_lower(a, z), Expected gamma_p(a, z) + // +# include "igamma_med_data.ipp" + + do_test_gamma_2(igamma_med_data, name, "Running round trip sanity checks on incomplete gamma medium sized values"); + +# include "igamma_small_data.ipp" + + do_test_gamma_2(igamma_small_data, name, "Running round trip sanity checks on incomplete gamma small values"); + +# include "igamma_big_data.ipp" + + do_test_gamma_2(igamma_big_data, name, "Running round trip sanity checks on incomplete gamma large values"); + +# include "gamma_inv_data.ipp" + + do_test_gamma_inv(gamma_inv_data, name, "incomplete gamma inverse(a, z) medium values"); + +# include "gamma_inv_big_data.ipp" + + do_test_gamma_inv(gamma_inv_big_data, name, "incomplete gamma inverse(a, z) large values"); + +# include "gamma_inv_small_data.ipp" + + do_test_gamma_inv(gamma_inv_small_data, name, "incomplete gamma inverse(a, z) small values"); +} + +template +void test_spots(T, const char* type_name) +{ + std::cout << "Running spot checks for type " << type_name << std::endl; + // + // basic sanity checks, tolerance is 100 epsilon expressed as a percentage: + // + T tolerance = boost::math::tools::epsilon() * 10000; + if(tolerance < 1e-25f) + tolerance = 1e-25f; // limit of test data? + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(1)/100, static_cast(1.0/128)), static_cast(0.35767144525455121503672919307647515332256996883787L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(1)/100, static_cast(0.5)), static_cast(4.4655350189103486773248562646452806745879516124613e-31L), tolerance*10); + // + // We can't test in this region against Mathworld's data as the results produced + // by functions.wolfram.com appear to be in error, and do *not* round trip with + // their own version of gamma_q. Using our output from the inverse as input to + // their version of gamma_q *does* round trip however. It should be pointed out + // that the functions in this area are very sensitive with nearly infinite + // first derivatives, it's also questionable how useful these functions are + // in this part of the domain. + // + //BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(1e-2), static_cast(1.0-1.0/128)), static_cast(3.8106736649978161389878528903698068142257930575497e-181L), tolerance); + // + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(0.5), static_cast(1.0/128)), static_cast(3.5379794687984498627918583429482809311448951189097L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(0.5), static_cast(1.0/2)), static_cast(0.22746821155978637597125832348982469815821055329511L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(0.5), static_cast(1.0-1.0/128)), static_cast(0.000047938431649305382237483273209405461203600840052182L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(10), static_cast(1.0/128)), static_cast(19.221865946801723949866005318845155649972164294057L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(10), static_cast(1.0/2)), static_cast(9.6687146147141311517500637401166726067778162022664L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(10), static_cast(1.0-1.0/128)), static_cast(3.9754602513640844712089002210120603689809432130520L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(10000), static_cast(1.0/128)), static_cast(10243.369973939134157953734588122880006091919872879L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(10000), static_cast(1.0/2)), static_cast(9999.6666686420474237369661574633153551436435884101L), tolerance); + BOOST_CHECK_CLOSE(::boost::math::gamma_q_inv(static_cast(10000), static_cast(1.0-1.0/128)), static_cast(9759.8597223369324083191194574874497413261589080204L), tolerance); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS +#ifdef TEST_FLOAT + test_spots(0.0F, "float"); +#endif +#endif +#ifdef TEST_DOUBLE + test_spots(0.0, "double"); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_spots(0.0L, "long double"); +#endif +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#endif + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS +#ifdef TEST_FLOAT + test_gamma(0.1F, "float"); +#endif +#endif +#ifdef TEST_DOUBLE + test_gamma(0.1, "double"); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_gamma(0.1L, "long double"); +#endif +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_gamma(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_igamma_inva.cpp b/test/test_igamma_inva.cpp new file mode 100644 index 000000000..e16f9e24a --- /dev/null +++ b/test/test_igamma_inva.cpp @@ -0,0 +1,307 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the incomplete gamma function inverses +// gamma_p_inva and gamma_q_inva. There are two sets of tests: +// 2) TODO: Accuracy tests use values generated with NTL::RR at +// 1000-bit precision and our generic versions of these functions. +// 3) Round trip sanity checks, use the test data for the forward +// functions, and verify that we can get (approximately) back +// where we started. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Linux: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux", // platform + largest_type, // test type(s) + "[^|]*", // test data group + "[^|]*", 800, 200); // test function + + // + // Catch all cases come last: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*", // test data group + "[^|]*", 3000, 1000); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*", // test data group + "[^|]*", 300, 100); // test function + // this one has to come last in case double *is* the widest + // float type: + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "float|double", // test type(s) + "[^|]*", // test data group + "[^|]*", 10, 5); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +#define BOOST_CHECK_CLOSE_EX(a, b, prec, i) \ + {\ + unsigned int failures = boost::unit_test::results_collector.results( boost::unit_test::framework::current_test_case().p_id ).p_assertions_failed;\ + BOOST_CHECK_CLOSE(a, b, prec); \ + if(failures != boost::unit_test::results_collector.results( boost::unit_test::framework::current_test_case().p_id ).p_assertions_failed)\ + {\ + std::cerr << "Failure was at row " << i << std::endl;\ + std::cerr << std::setprecision(35); \ + std::cerr << "{ " << data[i][0] << " , " << data[i][1] << " , " << data[i][2];\ + std::cerr << " , " << data[i][3] << " , " << data[i][4] << " , " << data[i][5] << " } " << std::endl;\ + }\ + } + +template +void do_test_gamma_2(const T& data, const char* type_name, const char* test_name) +{ + // + // test gamma_p_inva(T, T) against data: + // + using namespace std; + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + std::cout << test_name << " with type " << type_name << std::endl; + + // + // These sanity checks test for a round trip accuracy of one half + // of the bits in T, unless T is type float, in which case we check + // for just one decimal digit. The problem here is the sensitivity + // of the functions, not their accuracy. This test data was generated + // for the forward functions, which means that when it is used as + // the input to the inverses then it is necessarily inexact. This rounding + // of the input is what makes the data unsuitable for use as an accuracy check, + // and also demonstrates that you can't in general round-trip these functions. + // It is however a useful sanity check. + // + value_type precision = static_cast(ldexp(1.0, 1-boost::math::policies::digits >()/2)) * 100; + if(boost::math::policies::digits >() < 50) + precision = 1; // 1% or two decimal digits, all we can hope for when the input is truncated to float + + for(unsigned i = 0; i < data.size(); ++i) + { + // + // These inverse tests are thrown off if the output of the + // incomplete gamma is too close to 1: basically there is insuffient + // information left in the value we're using as input to the inverse + // to be able to get back to the original value. + // + if(data[i][5] == 0) + BOOST_CHECK_EQUAL(boost::math::gamma_p_inva(data[i][1], data[i][5]), boost::math::tools::max_value()); + else if((1 - data[i][5] > 0.001) && (fabs(data[i][5]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::gamma_p_inva(data[i][1], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][0], inv, precision, i); + } + else if(1 == data[i][5]) + BOOST_CHECK_EQUAL(boost::math::gamma_p_inva(data[i][1], data[i][5]), boost::math::tools::min_value()); + else if(data[i][5] > 2 * boost::math::tools::min_value()) + { + // not enough bits in our input to get back to x, but we should be in + // the same ball park: + value_type inv = boost::math::gamma_p_inva(data[i][1], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][0], inv, 100, i); + } + + if(data[i][3] == 0) + BOOST_CHECK_EQUAL(boost::math::gamma_q_inva(data[i][1], data[i][3]), boost::math::tools::min_value()); + else if((1 - data[i][3] > 0.001) + && (fabs(data[i][3]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][3]) > 2 * boost::math::tools::min_value())) + { + value_type inv = boost::math::gamma_q_inva(data[i][1], data[i][3]); + BOOST_CHECK_CLOSE_EX(data[i][0], inv, precision, i); + } + else if(1 == data[i][3]) + BOOST_CHECK_EQUAL(boost::math::gamma_q_inva(data[i][1], data[i][3]), boost::math::tools::max_value()); + else if(data[i][3] > 2 * boost::math::tools::min_value()) + { + // not enough bits in our input to get back to x, but we should be in + // the same ball park: + value_type inv = boost::math::gamma_q_inva(data[i][1], data[i][3]); + BOOST_CHECK_CLOSE_EX(data[i][0], inv, 100, i); + } + } + std::cout << std::endl; +} + +template +void do_test_gamma_inva(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::gamma_p_inva; +#else + pg funcp = boost::math::gamma_p_inva; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test gamma_p_inva(T, T) against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::gamma_p_inva", test_name); + // + // test gamma_q_inva(T, T) against data: + // +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::gamma_q_inva; +#else + funcp = boost::math::gamma_q_inva; +#endif + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::gamma_q_inva", test_name); +} + +template +void test_gamma(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // First the data for the incomplete gamma function, each + // row has the following 6 entries: + // Parameter a, parameter z, + // Expected tgamma(a, z), Expected gamma_q(a, z) + // Expected tgamma_lower(a, z), Expected gamma_p(a, z) + // +# include "igamma_med_data.ipp" + + do_test_gamma_2(igamma_med_data, name, "Running round trip sanity checks on incomplete gamma medium sized values"); + +# include "igamma_small_data.ipp" + + do_test_gamma_2(igamma_small_data, name, "Running round trip sanity checks on incomplete gamma small values"); + +# include "igamma_big_data.ipp" + + do_test_gamma_2(igamma_big_data, name, "Running round trip sanity checks on incomplete gamma large values"); + +# include "igamma_inva_data.ipp" + + do_test_gamma_inva(igamma_inva_data, name, "Incomplete gamma inverses."); +} + +int test_main(int, char* []) +{ + expected_results(); + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS +#ifdef TEST_FLOAT + test_gamma(0.1F, "float"); +#endif +#endif +#ifdef TEST_DOUBLE + test_gamma(0.1, "double"); +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_gamma(0.1L, "long double"); +#endif +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_gamma(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_instantiate1.cpp b/test/test_instantiate1.cpp new file mode 100644 index 000000000..ab45fa1a6 --- /dev/null +++ b/test/test_instantiate1.cpp @@ -0,0 +1,20 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "compile_test/instantiate.hpp" + +extern void other_test(); + +int main(int argc, char* []) +{ + if(argc > 10000) + { + instantiate(double(0)); + instantiate_mixed(double(0)); + other_test(); + } +} + + diff --git a/test/test_instantiate2.cpp b/test/test_instantiate2.cpp new file mode 100644 index 000000000..6996636a6 --- /dev/null +++ b/test/test_instantiate2.cpp @@ -0,0 +1,14 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "compile_test/instantiate.hpp" + +void other_test() +{ + instantiate(double(0)); + instantiate_mixed(double(0)); +} + + diff --git a/test/test_laguerre.cpp b/test/test_laguerre.cpp new file mode 100644 index 000000000..50e45271e --- /dev/null +++ b/test/test_laguerre.cpp @@ -0,0 +1,292 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_legendre_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Laguerre polynomials. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Linux special cases, error rates seem to be much higer here + // even though the implementation contains nothing but basic + // arithmetic? + // + if((std::numeric_limits::digits <= 64) + && (std::numeric_limits::digits != std::numeric_limits::digits)) + { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*", // test data group + ".*", 10, 5); // test function +#endif + } + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux.*|Mac OS|Sun.*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 40000, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "linux.*|Mac OS|Sun.*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 40000, 1000); // test function + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 40000, 1000); // test function + add_expected_result( + ".*mingw.*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 40000, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "IBM Aix", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 5000, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + "IBM Aix", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 5000, 500); // test function + + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 4000, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 4000, 500); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_laguerre2(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(unsigned, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::laguerre; +#else + pg funcp = boost::math::laguerre; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test laguerre against data: + // + result = boost::math::tools::test( + data, + bind_func_int1(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::laguerre(n, x)", test_name); + + std::cout << std::endl; +} + +template +void do_test_laguerre3(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(unsigned, unsigned, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::laguerre; +#else + pg funcp = boost::math::laguerre; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test laguerre against data: + // + result = boost::math::tools::test( + data, + bind_func_int2(funcp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::laguerre(n, m, x)", test_name); + std::cout << std::endl; +} + +template +void test_laguerre(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "laguerre2.ipp" + + do_test_laguerre2(laguerre2, name, "Laguerre Polynomials"); + +# include "laguerre3.ipp" + + do_test_laguerre3(laguerre3, name, "Associated Laguerre Polynomials"); +} + +template +void test_spots(T, const char* t) +{ + std::cout << "Testing basic sanity checks for type " << t << std::endl; + // + // basic sanity checks, tolerance is 100 epsilon: + // + T tolerance = boost::math::tools::epsilon() * 100; + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(1, static_cast(0.5L)), static_cast(0.5L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(4, static_cast(0.5L)), static_cast(-0.3307291666666666666666666666666666666667L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(7, static_cast(0.5L)), static_cast(-0.5183392237103174603174603174603174603175L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(20, static_cast(0.5L)), static_cast(0.3120174870800154148915399248893113634676L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(50, static_cast(0.5L)), static_cast(-0.3181388060269979064951118308575628226834L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(1, static_cast(-0.5L)), static_cast(1.5L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(4, static_cast(-0.5L)), static_cast(3.835937500000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(7, static_cast(-0.5L)), static_cast(7.950934709821428571428571428571428571429L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(20, static_cast(-0.5L)), static_cast(76.12915699869631476833699787070874048223L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(50, static_cast(-0.5L)), static_cast(2307.428631277506570629232863491518399720L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(1, static_cast(4.5L)), static_cast(-3.500000000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(4, static_cast(4.5L)), static_cast(0.08593750000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(7, static_cast(4.5L)), static_cast(-1.036928013392857142857142857142857142857L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(20, static_cast(4.5L)), static_cast(1.437239150257817378525582974722170737587L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(50, static_cast(4.5L)), static_cast(-0.7795068145562651416494321484050019245248L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(4, 5, static_cast(0.5L)), static_cast(88.31510416666666666666666666666666666667L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(10, 0, static_cast(2.5L)), static_cast(-0.8802526766660982969576719576719576719577L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(10, 1, static_cast(4.5L)), static_cast(1.564311458042689732142857142857142857143L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(10, 6, static_cast(8.5L)), static_cast(20.51596541066649098875661375661375661376L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(10, 12, static_cast(12.5L)), static_cast(-199.5560968456234671241181657848324514991L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::laguerre(50, 40, static_cast(12.5L)), static_cast(-4.996769495006119488583146995907246595400e16L), tolerance); +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_spots(0.0F, "float"); +#endif + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif + + expected_results(); + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_laguerre(0.1F, "float"); +#endif + test_laguerre(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_laguerre(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_laguerre(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_legendre.cpp b/test/test_legendre.cpp new file mode 100644 index 000000000..c742bb20b --- /dev/null +++ b/test/test_legendre.cpp @@ -0,0 +1,385 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" +#include "test_legendre_hooks.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the legendre polynomials. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // Linux: + // + if((std::numeric_limits::digits <= 64) + && (std::numeric_limits::digits != std::numeric_limits::digits)) + { +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*", // test data group + ".*", 10, 5); // test function +#endif + } + if(std::numeric_limits::digits == 64) + { + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_p", 1000, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_q", 7000, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_p", 1000, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_q", 7000, 1000); // test function + } + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_p", 500, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_q", 5400, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Legendre Polynomials.*", // test data group + "boost::math::legendre_p", 300, 80); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Legendre Polynomials.*", // test data group + "boost::math::legendre_q", 100, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + "Associated Legendre Polynomials.*", // test data group + ".*", 200, 20); // test function + + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_p", 500, 200); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Legendre Polynomials.*Large.*", // test data group + "boost::math::legendre_q", 5400, 500); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Legendre Polynomials.*", // test data group + "boost::math::legendre_p", 300, 80); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Legendre Polynomials.*", // test data group + "boost::math::legendre_q", 100, 50); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + "Associated Legendre Polynomials.*", // test data group + ".*", 200, 20); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_legendre_p(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(int, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::legendre_p; +#else + pg funcp = boost::math::legendre_p; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test legendre_p against data: + // + result = boost::math::tools::test( + data, + bind_func_int1(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::legendre_p", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::legendre_p; + result = boost::math::tools::test( + data, + bind_func_int1(funcp, 0, 1), + extract_result(2)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::legendre_p"); + } +#endif + + typedef value_type (*pg2)(unsigned, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg2 funcp2 = boost::math::legendre_q; +#else + pg2 funcp2 = boost::math::legendre_q; +#endif + + // + // test legendre_q against data: + // + result = boost::math::tools::test( + data, + bind_func_int1(funcp2, 0, 1), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::legendre_q", test_name); +#ifdef TEST_OTHER + if(::boost::is_floating_point::value){ + funcp = other::legendre_q; + result = boost::math::tools::test( + data, + bind_func_int1(funcp2, 0, 1), + extract_result(3)); + print_test_result(result, data[result.worst()], result.worst(), type_name, "other::legendre_q"); + } +#endif + + + std::cout << std::endl; +} + +template +void do_test_assoc_legendre_p(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(int, int, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::legendre_p; +#else + pg funcp = boost::math::legendre_p; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test legendre_p against data: + // + result = boost::math::tools::test( + data, + bind_func_int2(funcp, 0, 1, 2), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::legendre_p", test_name); + std::cout << std::endl; +} + +template +void test_legendre_p(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "legendre_p.ipp" + + do_test_legendre_p(legendre_p, name, "Legendre Polynomials: Small Values"); + +# include "legendre_p_large.ipp" + + do_test_legendre_p(legendre_p_large, name, "Legendre Polynomials: Large Values"); + +# include "assoc_legendre_p.ipp" + + do_test_assoc_legendre_p(assoc_legendre_p, name, "Associated Legendre Polynomials: Small Values"); + +} + +template +void test_spots(T, const char* t) +{ + std::cout << "Testing basic sanity checks for type " << t << std::endl; + // + // basic sanity checks, tolerance is 100 epsilon: + // + T tolerance = boost::math::tools::epsilon() * 100; + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(1, static_cast(0.5L)), static_cast(0.5L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-1, static_cast(0.5L)), static_cast(1L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(4, static_cast(0.5L)), static_cast(-0.2890625000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-4, static_cast(0.5L)), static_cast(-0.4375000000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(7, static_cast(0.5L)), static_cast(0.2231445312500000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-7, static_cast(0.5L)), static_cast(0.3232421875000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(40, static_cast(0.5L)), static_cast(-0.09542943523261546936538467572384923220258L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-40, static_cast(0.5L)), static_cast(-0.1316993126940266257030910566308990611306L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(4, 2, static_cast(0.5L)), static_cast(4.218750000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-4, 2, static_cast(0.5L)), static_cast(5.625000000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(7, 5, static_cast(0.5L)), static_cast(-5696.789530152175143607977274672800795328L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-7, 4, static_cast(0.5L)), static_cast(465.1171875000000000000000000000000000000L), tolerance); + if(std::numeric_limits::max_exponent > std::numeric_limits::max_exponent) + { + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(40, 30, static_cast(0.5L)), static_cast(-7.855722083232252643913331343916012143461e45L), tolerance); + } + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-40, 20, static_cast(0.5L)), static_cast(4.966634149702370788037088925152355134665e30L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(4, 2, static_cast(-0.5L)), static_cast(4.218750000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-4, 2, static_cast(-0.5L)), static_cast(-5.625000000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(7, 5, static_cast(-0.5L)), static_cast(-5696.789530152175143607977274672800795328L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-7, 4, static_cast(-0.5L)), static_cast(465.1171875000000000000000000000000000000L), tolerance); + if(std::numeric_limits::max_exponent > std::numeric_limits::max_exponent) + { + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(40, 30, static_cast(-0.5L)), static_cast(-7.855722083232252643913331343916012143461e45L), tolerance); + } + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-40, 20, static_cast(-0.5L)), static_cast(-4.966634149702370788037088925152355134665e30L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(4, -2, static_cast(0.5L)), static_cast(0.01171875000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-4, -2, static_cast(0.5L)), static_cast(0.04687500000000000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(7, -5, static_cast(0.5L)), static_cast(0.00002378609812640364935569308025139290054701L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-7, -4, static_cast(0.5L)), static_cast(0.0002563476562500000000000000000000000000000L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(40, -30, static_cast(0.5L)), static_cast(-2.379819988646847616996471299410611801239e-48L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_p(-40, -20, static_cast(0.5L)), static_cast(4.356454600748202401657099008867502679122e-33L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_q(1, static_cast(0.5L)), static_cast(-0.7253469278329725771511886907693685738381L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_q(4, static_cast(0.5L)), static_cast(0.4401745259867706044988642951843745400835L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_q(7, static_cast(0.5L)), static_cast(-0.3439152932669753451878700644212067616780L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::legendre_q(40, static_cast(0.5L)), static_cast(0.1493671665503550095010454949479907886011L), tolerance); +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif + + expected_results(); + + test_legendre_p(0.1F, "float"); + test_legendre_p(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_legendre_p(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_legendre_p(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_legendre_hooks.hpp b/test/test_legendre_hooks.hpp new file mode 100644 index 000000000..3c962615f --- /dev/null +++ b/test/test_legendre_hooks.hpp @@ -0,0 +1,41 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_TEST_LEGENDRE_OTHER_HOOKS_HPP +#define BOOST_MATH_TEST_LEGENDRE_OTHER_HOOKS_HPP + +#ifdef TEST_GSL +#include + +namespace other{ +inline float legendre_p(int l, float a) +{ return (float)gsl_sf_legendre_Pl (l, a); } +inline double legendre_p(int l, double a) +{ return gsl_sf_legendre_Pl (l, a); } +inline long double legendre_p(int l, long double a) +{ return gsl_sf_legendre_Pl (l, a); } + +inline float legendre_q(int l, float a) +{ return (float)gsl_sf_legendre_Ql (l, a); } +inline double legendre_q(int l, double a) +{ return gsl_sf_legendre_Ql (l, a); } +inline long double legendre_q(int l, long double a) +{ return gsl_sf_legendre_Ql (l, a); } + +} +#define TEST_OTHER +#endif + +#ifdef TEST_OTHER +namespace other{ + boost::math::concepts::real_concept legendre_p(int, boost::math::concepts::real_concept){ return 0; } + boost::math::concepts::real_concept legendre_q(int, boost::math::concepts::real_concept){ return 0; } +} +#endif + + +#endif + + diff --git a/test/test_lognormal.cpp b/test/test_lognormal.cpp new file mode 100644 index 000000000..b964b9c0c --- /dev/null +++ b/test/test_lognormal.cpp @@ -0,0 +1,308 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007 + +// 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) + +// test_lognormal.cpp + +#include // for real_concept +#include // Boost.Test +#include + +#include + using boost::math::lognormal_distribution; +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; +#include + +template +void check_lognormal(RealType loc, RealType scale, RealType x, RealType p, RealType q, RealType tol) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + lognormal_distribution(loc, scale), // distribution. + x), // random variable. + p, // probability. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement( + lognormal_distribution(loc, scale), // distribution. + x)), // random variable. + q, // probability complement. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + lognormal_distribution(loc, scale), // distribution. + p), // probability. + x, // random variable. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement( + lognormal_distribution(loc, scale), // distribution. + q)), // probability complement. + x, // random variable. + tol); // %tolerance. +} + +template +void test_spots(RealType) +{ + + // Basic sanity checks. + RealType tolerance = 5e-3 * 100; + // Some tests only pass at 1e-4 because values generated by + // http://faculty.vassar.edu/lowry/VassarStats.html + // give only 5 or 6 *fixed* places, so small values have fewer digits. + + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + using std::exp; + + // + // These test values were generated for the normal distribution + // using the online calculator at http://faculty.vassar.edu/lowry/VassarStats.html + // and then exponentiating the random variate x. + // + + check_lognormal( + static_cast(0), // location + static_cast(5), // scale + static_cast(1), // x + static_cast(0.5), // p + static_cast(0.5), // q + tolerance); + check_lognormal( + static_cast(2), // location + static_cast(2), // scale + static_cast(exp(1.8)), // x + static_cast(0.46017), // p + static_cast(1-0.46017), // q + tolerance); + check_lognormal( + static_cast(2), // location + static_cast(2), // scale + static_cast(exp(2.2)), // x + static_cast(1-0.46017), // p + static_cast(0.46017), // q + tolerance); + check_lognormal( + static_cast(2), // location + static_cast(2), // scale + static_cast(exp(-1.4)), // x + static_cast(0.04457), // p + static_cast(1-0.04457), // q + tolerance); + check_lognormal( + static_cast(2), // location + static_cast(2), // scale + static_cast(exp(5.4)), // x + static_cast(1-0.04457), // p + static_cast(0.04457), // q + tolerance); + + check_lognormal( + static_cast(-3), // location + static_cast(5), // scale + static_cast(exp(-5.0)), // x + static_cast(0.34458), // p + static_cast(1-0.34458), // q + tolerance); + check_lognormal( + static_cast(-3), // location + static_cast(5), // scale + static_cast(exp(-1.0)), // x + static_cast(1-0.34458), // p + static_cast(0.34458), // q + tolerance); + check_lognormal( + static_cast(-3), // location + static_cast(5), // scale + static_cast(exp(-9.0)), // x + static_cast(0.11507), // p + static_cast(1-0.11507), // q + tolerance); + check_lognormal( + static_cast(-3), // location + static_cast(5), // scale + static_cast(exp(3.0)), // x + static_cast(1-0.11507), // p + static_cast(0.11507), // q + tolerance); + + // + // Tests for PDF + // + tolerance = boost::math::tools::epsilon() * 5 * 100; // 5 eps as a percentage + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + BOOST_CHECK_CLOSE( + pdf(lognormal_distribution(), static_cast(1)), + static_cast(0.3989422804014326779399460599343818684759L), // 1/sqrt(2*pi) + tolerance); + BOOST_CHECK_CLOSE( + pdf(lognormal_distribution(3), exp(static_cast(3))), + static_cast(0.3989422804014326779399460599343818684759L) / exp(static_cast(3)), + tolerance); + BOOST_CHECK_CLOSE( + pdf(lognormal_distribution(3, 5), exp(static_cast(3))), + static_cast(0.3989422804014326779399460599343818684759L / (5 * exp(static_cast(3)))), + tolerance); + // + // Spot checks for location = -5, scale = 6, + // use relation to normal to test: + // + for(RealType x = -15; x < 5; x += 0.125) + { + BOOST_CHECK_CLOSE( + pdf(lognormal_distribution(-5, 6), exp(x)), + pdf(boost::math::normal_distribution(-5, 6), x) / exp(x), + tolerance); + } + + // + // These test values were obtained by punching numbers into + // a calculator, using the formulas at http://mathworld.wolfram.com/LogNormalDistribution.html + // + tolerance = (std::max)( + boost::math::tools::epsilon(), + static_cast(boost::math::tools::epsilon())) * 5 * 100; // 5 eps as a percentage + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + lognormal_distribution dist(8, 3); + RealType x = static_cast(0.125); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(268337.28652087445695647967378715L), tolerance); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(583389737628117.49553037857325892L), tolerance); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , static_cast(24153462.228594009489719473727471L), tolerance); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tolerance); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tolerance); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tolerance); + // mode: + BOOST_CHECK_CLOSE( + mode(dist) + , static_cast(0.36787944117144232159552377016146L), tolerance); + + BOOST_CHECK_CLOSE( + median(dist) + , static_cast(exp(dist.location())), tolerance); + + BOOST_CHECK_CLOSE( + median(dist), + quantile(dist, static_cast(0.5)), tolerance); + + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist) + , static_cast(729551.38304660255658441529235697L), tolerance); + // kertosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , static_cast(4312295840576303.2363383232038251L), tolerance); + // kertosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist) + , static_cast(4312295840576300.2363383232038251L), tolerance); + + BOOST_CHECK_CLOSE( + range(dist).first + , static_cast(0), tolerance); + + // + // Special cases: + // + BOOST_CHECK(pdf(dist, 0) == 0); + BOOST_CHECK(cdf(dist, 0) == 0); + BOOST_CHECK(cdf(complement(dist, 0)) == 1); + BOOST_CHECK(quantile(dist, 0) == 0); + BOOST_CHECK(quantile(complement(dist, 1)) == 0); + + // + // Error checks: + // + BOOST_CHECK_THROW(lognormal_distribution(0, -1), std::domain_error); + BOOST_CHECK_THROW(pdf(dist, -1), std::domain_error); + BOOST_CHECK_THROW(cdf(dist, -1), std::domain_error); + BOOST_CHECK_THROW(cdf(complement(dist, -1)), std::domain_error); + BOOST_CHECK_THROW(quantile(dist, 1), std::overflow_error); + BOOST_CHECK_THROW(quantile(complement(dist, 0)), std::overflow_error); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + + // Check that can generate lognormal distribution using the two convenience methods: + boost::math::lognormal myf1(1., 2); // Using typedef + lognormal_distribution<> myf2(1., 2); // Using default RealType double. + + // Test range and support using double only, + // because it supports numeric_limits max for a pseudo-infinity. + BOOST_CHECK_EQUAL(range(myf2).first, 0); // range 0 to +infinity + BOOST_CHECK_EQUAL(range(myf2).second, (std::numeric_limits::max)()); + BOOST_CHECK_EQUAL(support(myf2).first, 0); // support 0 to + infinity. + BOOST_CHECK_EQUAL(support(myf2).second, (std::numeric_limits::max)()); + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* +Running 1 test case... +Tolerance for type float is 0.5 % +Tolerance for type float is 5.96046e-005 % +Tolerance for type float is 5.96046e-005 % +Tolerance for type double is 0.5 % +Tolerance for type double is 1.11022e-013 % +Tolerance for type double is 1.11022e-013 % +Tolerance for type long double is 0.5 % +Tolerance for type long double is 1.11022e-013 % +Tolerance for type long double is 1.11022e-013 % +Tolerance for type class boost::math::concepts::real_concept is 0.5 % +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-013 % +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-013 % +*** No errors detected +*/ + + diff --git a/test/test_minima.cpp b/test/test_minima.cpp new file mode 100644 index 000000000..8d2b4a50b --- /dev/null +++ b/test/test_minima.cpp @@ -0,0 +1,59 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include + +template +struct poly_test +{ + // minima is at (3,4): + T operator()(const T& v) + { + T a = v - 3; + return 3 * a * a + 4; + } +}; + +template +void test_minima(T, const char* /* name */) +{ + std::pair m = boost::math::tools::brent_find_minima(poly_test(), T(-10), T(10), 50); + BOOST_CHECK_CLOSE(m.first, T(3), T(0.001)); + BOOST_CHECK_CLOSE(m.second, T(4), T(0.001)); + + T (*fp)(T); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + fp = boost::math::lgamma; +#else + fp = boost::math::lgamma; +#endif + + m = boost::math::tools::brent_find_minima(fp, T(0.5), T(10), 50); + BOOST_CHECK_CLOSE(m.first, T(1.461632), T(0.1)); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + fp = boost::math::tgamma; +#else + fp = boost::math::tgamma; +#endif + m = boost::math::tools::brent_find_minima(fp, T(0.5), T(10), 50); + BOOST_CHECK_CLOSE(m.first, T(1.461632), T(0.1)); +} + +int test_main(int, char* []) +{ + test_minima(0.1f, "float"); + test_minima(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_minima(0.1L, "long double"); +#endif + return 0; +} + + diff --git a/test/test_negative_binomial.cpp b/test/test_negative_binomial.cpp new file mode 100644 index 000000000..64417d28c --- /dev/null +++ b/test/test_negative_binomial.cpp @@ -0,0 +1,850 @@ +// test_negative_binomial.cpp + +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2006. + +// 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) + +// Tests for Negative Binomial Distribution. + +// Note that these defines must be placed BEFORE #includes. +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error +// because several tests overflow & underflow by design. +#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +#endif + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +#include // for negative_binomial_distribution +using boost::math::negative_binomial_distribution; + +#include + using boost::math::lgamma; // log gamma + +#include // for real_concept +using ::boost::math::concepts::real_concept; + +#include // for test_main +#include // for BOOST_CHECK_CLOSE + +#include +using std::cout; +using std::endl; +using std::setprecision; +using std::showpoint; +#include +using std::numeric_limits; + +template +void test_spot( // Test a single spot value against 'known good' values. + RealType N, // Number of successes. + RealType k, // Number of failures. + RealType p, // Probability of success_fraction. + RealType P, // CDF probability. + RealType Q, // Complement of CDF. + RealType tol) // Test tolerance. +{ + boost::math::negative_binomial_distribution bn(N, p); + BOOST_CHECK_EQUAL(N, bn.successes()); + BOOST_CHECK_EQUAL(p, bn.success_fraction()); + BOOST_CHECK_CLOSE( + cdf(bn, k), P, tol); + + if((P < 0.99) && (Q < 0.99)) + { + // We can only check this if P is not too close to 1, + // so that we can guarantee that Q is free of error: + // + BOOST_CHECK_CLOSE( + cdf(complement(bn, k)), Q, tol); + if(k != 0) + { + BOOST_CHECK_CLOSE( + quantile(bn, P), k, tol); + } + else + { + // Just check quantile is very small: + if((std::numeric_limits::max_exponent <= std::numeric_limits::max_exponent) + && (boost::is_floating_point::value)) + { + // Limit where this is checked: if exponent range is very large we may + // run out of iterations in our root finding algorithm. + BOOST_CHECK(quantile(bn, P) < boost::math::tools::epsilon() * 10); + } + } + if(k != 0) + { + BOOST_CHECK_CLOSE( + quantile(complement(bn, Q)), k, tol); + } + else + { + // Just check quantile is very small: + if((std::numeric_limits::max_exponent <= std::numeric_limits::max_exponent) + && (boost::is_floating_point::value)) + { + // Limit where this is checked: if exponent range is very large we may + // run out of iterations in our root finding algorithm. + BOOST_CHECK(quantile(complement(bn, Q)) < boost::math::tools::epsilon() * 10); + } + } + // estimate success ratio: + BOOST_CHECK_CLOSE( + negative_binomial_distribution::find_lower_bound_on_p( + N+k, N, P), + p, tol); + // Note we bump up the sample size here, purely for the sake of the test, + // internally the function has to adjust the sample size so that we get + // the right upper bound, our test undoes this, so we can verify the result. + BOOST_CHECK_CLOSE( + negative_binomial_distribution::find_upper_bound_on_p( + N+k+1, N, Q), + p, tol); + + if(Q < P) + { + // + // We check two things here, that the upper and lower bounds + // are the right way around, and that they do actually bracket + // the naive estimate of p = successes / (sample size) + // + BOOST_CHECK( + negative_binomial_distribution::find_lower_bound_on_p( + N+k, N, Q) + <= + negative_binomial_distribution::find_upper_bound_on_p( + N+k, N, Q) + ); + BOOST_CHECK( + negative_binomial_distribution::find_lower_bound_on_p( + N+k, N, Q) + <= + N / (N+k) + ); + BOOST_CHECK( + N / (N+k) + <= + negative_binomial_distribution::find_upper_bound_on_p( + N+k, N, Q) + ); + } + else + { + // As above but when P is small. + BOOST_CHECK( + negative_binomial_distribution::find_lower_bound_on_p( + N+k, N, P) + <= + negative_binomial_distribution::find_upper_bound_on_p( + N+k, N, P) + ); + BOOST_CHECK( + negative_binomial_distribution::find_lower_bound_on_p( + N+k, N, P) + <= + N / (N+k) + ); + BOOST_CHECK( + N / (N+k) + <= + negative_binomial_distribution::find_upper_bound_on_p( + N+k, N, P) + ); + } + + // Estimate sample size: + BOOST_CHECK_CLOSE( + negative_binomial_distribution::find_minimum_number_of_trials( + k, p, P), + N+k, tol); + BOOST_CHECK_CLOSE( + negative_binomial_distribution::find_maximum_number_of_trials( + k, p, Q), + N+k, tol); + + // Double check consistency of CDF and PDF by computing the finite sum: + RealType sum = 0; + for(unsigned i = 0; i <= k; ++i) + { + sum += pdf(bn, RealType(i)); + } + BOOST_CHECK_CLOSE(sum, P, tol); + + // Complement is not possible since sum is to infinity. + } // +} // test_spot + +template // Any floating-point type RealType. +void test_spots(RealType) +{ + // Basic sanity checks, test data is to double precision only + // so set tolerance to 1000 eps expressed as a percent, or + // 1000 eps of type double expressed as a percent, whichever + // is the larger. + + RealType tolerance = (std::max) + (boost::math::tools::epsilon(), + static_cast(std::numeric_limits::epsilon())); + tolerance *= 100 * 1000; + + cout << "Tolerance = " << tolerance << "%." << endl; + + RealType tol1eps = boost::math::tools::epsilon() * 2; // Very tight, suit exact values. + //RealType tol2eps = boost::math::tools::epsilon() * 2; // Tight, suit exact values. + RealType tol5eps = boost::math::tools::epsilon() * 5; // Wider 5 epsilon. + cout << "Tolerance 5 eps = " << tol5eps << "%." << endl; + + // Sources of spot test values: + + // MathCAD defines pbinom(k, r, p) (at about 64-bit double precision, about 16 decimal digits) + // returns pr(X , k) when random variable X has the binomial distribution with parameters r and p. + // 0 <= k + // r > 0 + // 0 <= p <= 1 + // P = pbinom(30, 500, 0.05) = 0.869147702104609 + + // And functions.wolfram.com + + using boost::math::negative_binomial_distribution; + using ::boost::math::negative_binomial; + using ::boost::math::cdf; + using ::boost::math::pdf; + + // Test negative binomial using cdf spot values from MathCAD cdf = pnbinom(k, r, p). + // These test quantiles and complements as well. + + test_spot( // pnbinom(1,2,0.5) = 0.5 + static_cast(2), // successes r + static_cast(1), // Number of failures, k + static_cast(0.5), // Probability of success as fraction, p + static_cast(0.5), // Probability of result (CDF), P + static_cast(0.5), // complement CCDF Q = 1 - P + tolerance); + + test_spot( // pbinom(0, 2, 0.25) + static_cast(2), // successes r + static_cast(0), // Number of failures, k + static_cast(0.25), + static_cast(0.0625), // Probability of result (CDF), P + static_cast(0.9375), // Q = 1 - P + tolerance); + + test_spot( // pbinom(48,8,0.25) + static_cast(8), // successes r + static_cast(48), // Number of failures, k + static_cast(0.25), // Probability of success, p + static_cast(9.826582228110670E-1), // Probability of result (CDF), P + static_cast(1 - 9.826582228110670E-1), // Q = 1 - P + tolerance); + + test_spot( // pbinom(2,5,0.4) + static_cast(5), // successes r + static_cast(2), // Number of failures, k + static_cast(0.4), // Probability of success, p + static_cast(9.625600000000020E-2), // Probability of result (CDF), P + static_cast(1 - 9.625600000000020E-2), // Q = 1 - P + tolerance); + + test_spot( // pbinom(10,100,0.9) + static_cast(100), // successes r + static_cast(10), // Number of failures, k + static_cast(0.9), // Probability of success, p + static_cast(4.535522887695670E-1), // Probability of result (CDF), P + static_cast(1 - 4.535522887695670E-1), // Q = 1 - P + tolerance); + + test_spot( // pbinom(1,100,0.991) + static_cast(100), // successes r + static_cast(1), // Number of failures, k + static_cast(0.991), // Probability of success, p + static_cast(7.693413044217000E-1), // Probability of result (CDF), P + static_cast(1 - 7.693413044217000E-1), // Q = 1 - P + tolerance); + + test_spot( // pbinom(10,100,0.991) + static_cast(100), // successes r + static_cast(10), // Number of failures, k + static_cast(0.991), // Probability of success, p + static_cast(9.999999940939000E-1), // Probability of result (CDF), P + static_cast(1 - 9.999999940939000E-1), // Q = 1 - P + tolerance); + +if(std::numeric_limits::is_specialized) +{ // An extreme value test that takes 3 minutes using the real concept type + // for which numeric_limits::is_specialized == false, deliberately + // and for which there is no Lanczos approximation defined (also deliberately) + // giving a very slow computation, but with acceptable accuracy. + // A possible enhancement might be to use a normal approximation for + // extreme values, but this is not implemented. + test_spot( // pbinom(100000,100,0.001) + static_cast(100), // successes r + static_cast(100000), // Number of failures, k + static_cast(0.001), // Probability of success, p + static_cast(5.173047534260320E-1), // Probability of result (CDF), P + static_cast(1 - 5.173047534260320E-1), // Q = 1 - P + tolerance*1000); // *1000 is OK 0.51730475350664229 versus + + // functions.wolfram.com + // for I[0.001](100, 100000+1) gives: + // Wolfram 0.517304753506834882009032744488738352004003696396461766326713 + // JM nonLanczos 0.51730475350664229 differs at the 13th decimal digit. + // MathCAD 0.51730475342603199 differs at 10th decimal digit. +} + // End of single spot tests using RealType + + + // Tests on PDF: + BOOST_CHECK_CLOSE( + pdf(negative_binomial_distribution(static_cast(2), static_cast(0.5)), + static_cast(0) ), // k = 0. + static_cast(0.25), // 0 + tolerance); + + BOOST_CHECK_CLOSE( + pdf(negative_binomial_distribution(static_cast(4), static_cast(0.5)), + static_cast(0)), // k = 0. + static_cast(0.0625), // exact 1/16 + tolerance); + + BOOST_CHECK_CLOSE( + pdf(negative_binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(0)), // k = 0 + static_cast(9.094947017729270E-13), // pbinom(0,20,0.25) = 9.094947017729270E-13 + tolerance); + + BOOST_CHECK_CLOSE( + pdf(negative_binomial_distribution(static_cast(20), static_cast(0.2)), + static_cast(0)), // k = 0 + static_cast(1.0485760000000003e-014), // MathCAD 1.048576000000000E-14 + tolerance); + + BOOST_CHECK_CLOSE( + pdf(negative_binomial_distribution(static_cast(10), static_cast(0.1)), + static_cast(0)), // k = 0. + static_cast(1e-10), // MathCAD says zero, but suffers cancellation error? + tolerance); + + BOOST_CHECK_CLOSE( + pdf(negative_binomial_distribution(static_cast(20), static_cast(0.1)), + static_cast(0)), // k = 0. + static_cast(1e-20), // MathCAD says zero, but suffers cancellation error? + tolerance); + + + BOOST_CHECK_CLOSE( // . + pdf(negative_binomial_distribution(static_cast(20), static_cast(0.9)), + static_cast(0)), // k. + static_cast(1.215766545905690E-1), // k=20 p = 0.9 + tolerance); + + // Tests on cdf: + // MathCAD pbinom k, r, p) == failures, successes, probability. + + BOOST_CHECK_CLOSE(cdf( + negative_binomial_distribution(static_cast(2), static_cast(0.5)), // successes = 2,prob 0.25 + static_cast(0) ), // k = 0 + static_cast(0.25), // probability 1/4 + tolerance); + + BOOST_CHECK_CLOSE(cdf(complement( + negative_binomial_distribution(static_cast(2), static_cast(0.5)), // successes = 2,prob 0.25 + static_cast(0) )), // k = 0 + static_cast(0.75), // probability 3/4 + tolerance); + BOOST_CHECK_CLOSE( // k = 1. + cdf(negative_binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(1)), // k =1. + static_cast(1.455191522836700E-11), + tolerance); + + BOOST_CHECK_SMALL( // Check within an epsilon with CHECK_SMALL + cdf(negative_binomial_distribution(static_cast(20), static_cast(0.25)), + static_cast(1)) - + static_cast(1.455191522836700E-11), + tolerance ); + + // Some exact (probably - judging by trailing zeros) values. + BOOST_CHECK_CLOSE( + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0)), // k. + static_cast(1.525878906250000E-5), + tolerance); + + BOOST_CHECK_CLOSE( + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0)), // k. + static_cast(1.525878906250000E-5), + tolerance); + + BOOST_CHECK_SMALL( + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0)) - + static_cast(1.525878906250000E-5), + tolerance ); + + BOOST_CHECK_CLOSE( // k = 1. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1)), // k. + static_cast(1.068115234375010E-4), + tolerance); + + BOOST_CHECK_CLOSE( // k = 2. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(2)), // k. + static_cast(4.158020019531300E-4), + tolerance); + + BOOST_CHECK_CLOSE( // k = 3. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(3)), // k.bristow + static_cast(1.188278198242200E-3), + tolerance); + + BOOST_CHECK_CLOSE( // k = 4. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(4)), // k. + static_cast(2.781510353088410E-3), + tolerance); + + BOOST_CHECK_CLOSE( // k = 5. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(5)), // k. + static_cast(5.649328231811500E-3), + tolerance); + + BOOST_CHECK_CLOSE( // k = 6. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(6)), // k. + static_cast(1.030953228473680E-2), + tolerance); + + BOOST_CHECK_CLOSE( // k = 7. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(7)), // k. + static_cast(1.729983836412430E-2), + tolerance); + + BOOST_CHECK_CLOSE( // k = 8. + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(8)), // k = n. + static_cast(2.712995628826370E-2), + tolerance); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(48)), // k + static_cast(9.826582228110670E-1), + tolerance); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(64)), // k + static_cast(9.990295004935590E-1), + tolerance); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(5), static_cast(0.4)), + static_cast(26)), // k + static_cast(9.989686246611190E-1), + tolerance); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(5), static_cast(0.4)), + static_cast(2)), // k failures + static_cast(9.625600000000020E-2), + tolerance); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(50), static_cast(0.9)), + static_cast(20)), // k + static_cast(9.999970854144170E-1), + tolerance); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(500), static_cast(0.7)), + static_cast(200)), // k + static_cast(2.172846379930550E-1), + tolerance* 2); + + BOOST_CHECK_CLOSE( // + cdf(negative_binomial_distribution(static_cast(50), static_cast(0.7)), + static_cast(20)), // k + static_cast(4.550203671301790E-1), + tolerance); + + // Tests of other functions, mean and other moments ... + + negative_binomial_distribution dist(static_cast(8), static_cast(0.25)); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist), static_cast(8 * (1 - 0.25) /0.25), tol5eps); + BOOST_CHECK_CLOSE( + mode(dist), static_cast(21), tol1eps); + // variance: + BOOST_CHECK_CLOSE( + variance(dist), static_cast(8 * (1 - 0.25) / (0.25 * 0.25)), tol5eps); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist), // 9.79795897113271239270 + static_cast(9.797958971132712392789136298823565567864L), // using functions.wolfram.com + // 9.79795897113271152534 == sqrt(8 * (1 - 0.25) / (0.25 * 0.25))) + tol5eps * 100); + BOOST_CHECK_CLOSE( + skewness(dist), // + static_cast(0.71443450831176036), + // using http://mathworld.wolfram.com/skewness.html + tolerance); + BOOST_CHECK_CLOSE( + kurtosis_excess(dist), // + static_cast(0.7604166666666666666666666666666666666666L), // using Wikipedia Kurtosis(excess) formula + tol5eps * 100); + BOOST_CHECK_CLOSE( + kurtosis(dist), // true + static_cast(3.76041666666666666666666666666666666666666L), // + tol5eps * 100); + // hazard: + RealType x = static_cast(0.125); + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol5eps); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x), -log(cdf(complement(dist, x))), tol5eps); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tol5eps); + + // Special cases for PDF: + BOOST_CHECK_EQUAL( + pdf( + negative_binomial_distribution(static_cast(8), static_cast(0)), // + static_cast(0)), + static_cast(0) ); + + BOOST_CHECK_EQUAL( + pdf( + negative_binomial_distribution(static_cast(8), static_cast(0)), + static_cast(0.0001)), + static_cast(0) ); + + BOOST_CHECK_EQUAL( + pdf( + negative_binomial_distribution(static_cast(8), static_cast(1)), + static_cast(0.001)), + static_cast(0) ); + + BOOST_CHECK_EQUAL( + pdf( + negative_binomial_distribution(static_cast(8), static_cast(1)), + static_cast(8)), + static_cast(0) ); + + BOOST_CHECK_SMALL( + pdf( + negative_binomial_distribution(static_cast(2), static_cast(0.25)), + static_cast(0))- + static_cast(0.0625), + 2 * boost::math::tools::epsilon() ); // Expect exact, but not quite. + // numeric_limits::epsilon()); // Not suitable for real concept! + + // Quantile boundary cases checks: + BOOST_CHECK_EQUAL( + quantile( // zero P < cdf(0) so should be exactly zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0)), + static_cast(0)); + + BOOST_CHECK_EQUAL( + quantile( // min P < cdf(0) so should be exactly zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(boost::math::tools::min_value())), + static_cast(0)); + + BOOST_CHECK_CLOSE_FRACTION( + quantile( // Small P < cdf(0) so should be near zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(boost::math::tools::epsilon())), // + static_cast(0), + tol5eps); + + BOOST_CHECK_CLOSE( + quantile( // Small P < cdf(0) so should be exactly zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0.0001)), + static_cast(0.95854156929288470), + tolerance); + + //BOOST_CHECK( // Fails with overflow for real_concept + //quantile( // Small P near 1 so k failures should be big. + //negative_binomial_distribution(static_cast(8), static_cast(0.25)), + //static_cast(1 - boost::math::tools::epsilon())) <= + //static_cast(189.56999032670058) // 106.462769 for float + //); + + if(std::numeric_limits::has_infinity) + { // BOOST_CHECK tests for infinity using std::numeric_limits<>::infinity() + // Note that infinity is not implemented for real_concept, so these tests + // are only done for types, like built-in float, double.. that have infinity. + // Note that these assume that BOOST_MATH_OVERFLOW_ERROR_POLICY is NOT throw_on_error. + // #define BOOST_MATH_THROW_ON_OVERFLOW_POLICY == throw_on_error would throw here. + // #define BOOST_MAT_DOMAIN_ERROR_POLICY IS defined throw_on_error, + // so the throw path of error handling is tested below with BOOST_CHECK_THROW tests. + + BOOST_CHECK( + quantile( // At P == 1 so k failures should be infinite. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1)) == + //static_cast(boost::math::tools::infinity()) + static_cast(std::numeric_limits::infinity()) ); + + BOOST_CHECK_EQUAL( + quantile( // At 1 == P so should be infinite. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1)), // + std::numeric_limits::infinity() ); + + BOOST_CHECK_EQUAL( + quantile(complement( // Q zero 1 so P == 1 < cdf(0) so should be exactly infinity. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0))), + std::numeric_limits::infinity() ); + } // test for infinity using std::numeric_limits<>::infinity() + else + { // real_concept case, so check it throws rather than returning infinity. + BOOST_CHECK_EQUAL( + quantile( // At P == 1 so k failures should be infinite. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1)), + boost::math::tools::max_value() ); + + BOOST_CHECK_EQUAL( + quantile(complement( // Q zero 1 so P == 1 < cdf(0) so should be exactly infinity. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0))), + boost::math::tools::max_value()); + } + BOOST_CHECK( // Should work for built-in and real_concept. + quantile(complement( // Q very near to 1 so P nearly 1 < so should be large > 384. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(boost::math::tools::min_value()))) + >= static_cast(384) ); + + BOOST_CHECK_EQUAL( + quantile( // P == 0 < cdf(0) so should be zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(0)), + static_cast(0)); + + // Quantile Complement boundary cases: + + BOOST_CHECK_EQUAL( + quantile(complement( // Q = 1 so P = 0 < cdf(0) so should be exactly zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1))), + static_cast(0) + ); + + BOOST_CHECK_EQUAL( + quantile(complement( // Q very near 1 so P == epsilon < cdf(0) so should be exactly zero. + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(1 - boost::math::tools::epsilon()))), + static_cast(0) + ); + + // Check that duff arguments throw domain_error: + BOOST_CHECK_THROW( + pdf( // Negative successes! + negative_binomial_distribution(static_cast(-1), static_cast(0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( // Negative success_fraction! + negative_binomial_distribution(static_cast(8), static_cast(-0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + pdf( // Success_fraction > 1! + negative_binomial_distribution(static_cast(8), static_cast(1.25)), + static_cast(0)), + std::domain_error + ); + BOOST_CHECK_THROW( + pdf( // Negative k argument ! + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(-1)), + std::domain_error + ); + //BOOST_CHECK_THROW( + //pdf( // Unlike binomial there is NO limit on k (failures) + //negative_binomial_distribution(static_cast(8), static_cast(0.25)), + //static_cast(9)), std::domain_error + //); + BOOST_CHECK_THROW( + cdf( // Negative k argument ! + negative_binomial_distribution(static_cast(8), static_cast(0.25)), + static_cast(-1)), + std::domain_error + ); + BOOST_CHECK_THROW( + cdf( // Negative success_fraction! + negative_binomial_distribution(static_cast(8), static_cast(-0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + cdf( // Success_fraction > 1! + negative_binomial_distribution(static_cast(8), static_cast(1.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( // Negative success_fraction! + negative_binomial_distribution(static_cast(8), static_cast(-0.25)), + static_cast(0)), std::domain_error + ); + BOOST_CHECK_THROW( + quantile( // Success_fraction > 1! + negative_binomial_distribution(static_cast(8), static_cast(1.25)), + static_cast(0)), std::domain_error + ); + // End of check throwing 'duff' out-of-domain values. + +#define T RealType +#include "negative_binomial_quantile.ipp" + + for(unsigned i = 0; i < negative_binomial_quantile_data.size(); ++i) + { + using namespace boost::math::policies; + typedef policy > P1; + typedef policy > P2; + typedef policy > P3; + typedef policy > P4; + typedef policy > P5; + typedef policy > P6; + RealType tol = boost::math::tools::epsilon() * 700; + if(!boost::is_floating_point::value) + tol *= 10; // no lanczos approximation implies less accuracy + // + // Check full real value first: + // + negative_binomial_distribution p1(negative_binomial_quantile_data[i][0], negative_binomial_quantile_data[i][1]); + RealType x = quantile(p1, negative_binomial_quantile_data[i][2]); + BOOST_CHECK_CLOSE_FRACTION(x, negative_binomial_quantile_data[i][3], tol); + x = quantile(complement(p1, negative_binomial_quantile_data[i][2])); + BOOST_CHECK_CLOSE_FRACTION(x, negative_binomial_quantile_data[i][4], tol); + // + // Now with round down to integer: + // + negative_binomial_distribution p2(negative_binomial_quantile_data[i][0], negative_binomial_quantile_data[i][1]); + x = quantile(p2, negative_binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, floor(negative_binomial_quantile_data[i][3])); + x = quantile(complement(p2, negative_binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, floor(negative_binomial_quantile_data[i][4])); + // + // Now with round up to integer: + // + negative_binomial_distribution p3(negative_binomial_quantile_data[i][0], negative_binomial_quantile_data[i][1]); + x = quantile(p3, negative_binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, ceil(negative_binomial_quantile_data[i][3])); + x = quantile(complement(p3, negative_binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, ceil(negative_binomial_quantile_data[i][4])); + // + // Now with round to integer "outside": + // + negative_binomial_distribution p4(negative_binomial_quantile_data[i][0], negative_binomial_quantile_data[i][1]); + x = quantile(p4, negative_binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, negative_binomial_quantile_data[i][2] < 0.5f ? floor(negative_binomial_quantile_data[i][3]) : ceil(negative_binomial_quantile_data[i][3])); + x = quantile(complement(p4, negative_binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, negative_binomial_quantile_data[i][2] < 0.5f ? ceil(negative_binomial_quantile_data[i][4]) : floor(negative_binomial_quantile_data[i][4])); + // + // Now with round to integer "inside": + // + negative_binomial_distribution p5(negative_binomial_quantile_data[i][0], negative_binomial_quantile_data[i][1]); + x = quantile(p5, negative_binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, negative_binomial_quantile_data[i][2] < 0.5f ? ceil(negative_binomial_quantile_data[i][3]) : floor(negative_binomial_quantile_data[i][3])); + x = quantile(complement(p5, negative_binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, negative_binomial_quantile_data[i][2] < 0.5f ? floor(negative_binomial_quantile_data[i][4]) : ceil(negative_binomial_quantile_data[i][4])); + // + // Now with round to nearest integer: + // + negative_binomial_distribution p6(negative_binomial_quantile_data[i][0], negative_binomial_quantile_data[i][1]); + x = quantile(p6, negative_binomial_quantile_data[i][2]); + BOOST_CHECK_EQUAL(x, floor(negative_binomial_quantile_data[i][3] + 0.5f)); + x = quantile(complement(p6, negative_binomial_quantile_data[i][2])); + BOOST_CHECK_EQUAL(x, floor(negative_binomial_quantile_data[i][4] + 0.5f)); + } + + return; +} // template void test_spots(RealType) // Any floating-point type RealType. + +int test_main(int, char* []) +{ + // Check that can generate negative_binomial distribution using the two convenience methods: + using namespace boost::math; + negative_binomial mynb1(2., 0.5); // Using typedef - default type is double. + negative_binomial_distribution<> myf2(2., 0.5); // Using default RealType double. + + // Basic sanity-check spot values. + + // Test some simple double only examples. + negative_binomial_distribution my8dist(8., 0.25); + // 8 successes (r), 0.25 success fraction = 35% or 1 in 4 successes. + // Note: double values (matching the distribution definition) avoid the need for any casting. + + // Check accessor functions return exact values for double at least. + BOOST_CHECK_EQUAL(my8dist.successes(), static_cast(8)); + BOOST_CHECK_EQUAL(my8dist.success_fraction(), static_cast(1./4.)); + + // (Parameter value, arbitrarily zero, only communicates the floating point type). +#ifdef TEST_FLOAT + test_spots(0.0F); // Test float. +#endif +#ifdef TEST_DOUBLE + test_spots(0.0); // Test double. +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS +#ifdef TEST_LDOUBLE + test_spots(0.0L); // Test long double. +#endif + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif + #endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_negative_binomial.exe" +Running 1 test case... +Tolerance = 0.0119209%. +Tolerance 5 eps = 5.96046e-007%. +Tolerance = 2.22045e-011%. +Tolerance 5 eps = 1.11022e-015%. +Tolerance = 2.22045e-011%. +Tolerance 5 eps = 1.11022e-015%. +Tolerance = 2.22045e-011%. +Tolerance 5 eps = 1.11022e-015%. +*** No errors detected + +*/ diff --git a/test/test_normal.cpp b/test/test_normal.cpp new file mode 100644 index 000000000..a4012e071 --- /dev/null +++ b/test/test_normal.cpp @@ -0,0 +1,329 @@ +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2007. + +// 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) + +// test_normal.cpp + +// http://en.wikipedia.org/wiki/Normal_distribution +// http://www.itl.nist.gov/div898/handbook/eda/section3/eda3661.htm +// Also: +// Weisstein, Eric W. "Normal Distribution." +// From MathWorld--A Wolfram Web Resource. +// http://mathworld.wolfram.com/NormalDistribution.html + +#ifdef _MSC_VER +#pragma warning (disable: 4127) // conditional expression is constant +// caused by using if(std::numeric_limits::has_infinity) +// and if (std::numeric_limits::has_quiet_NaN) +#endif + +#include // for real_concept +#include // Boost.Test +#include + +#include + using boost::math::normal_distribution; +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; + +template +RealType NaivePDF(RealType mean, RealType sd, RealType x) +{ + // Deliberately naive PDF calculator again which + // we'll compare our pdf function. However some + // published values to compare against would be better.... + using namespace std; + return exp(-(x-mean)*(x-mean)/(2*sd*sd))/(sd * sqrt(2*boost::math::constants::pi())); +} + +template +void check_normal(RealType mean, RealType sd, RealType x, RealType p, RealType q, RealType tol) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + normal_distribution(mean, sd), // distribution. + x), // random variable. + p, // probability. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement( + normal_distribution(mean, sd), // distribution. + x)), // random variable. + q, // probability complement. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + normal_distribution(mean, sd), // distribution. + p), // probability. + x, // random variable. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement( + normal_distribution(mean, sd), // distribution. + q)), // probability complement. + x, // random variable. + tol); // %tolerance. +} + +template +void test_spots(RealType) +{ + // Basic sanity checks + RealType tolerance = 1e-2f; // 1e-4 (as %) + // Some tests only pass at 1e-4 because values generated by + // http://faculty.vassar.edu/lowry/VassarStats.html + // give only 5 or 6 *fixed* places, so small values have fewer digits. + + // Check some bad parameters to the distribution, + BOOST_CHECK_THROW(boost::math::normal_distribution nbad1(0, 0), std::domain_error); // zero sd + BOOST_CHECK_THROW(boost::math::normal_distribution nbad1(0, -1), std::domain_error); // negative sd + + // Tests on extreme values of random variate x, if has numeric_limit infinity etc. + normal_distribution N01; + if(std::numeric_limits::has_infinity) + { + BOOST_CHECK_EQUAL(pdf(N01, +std::numeric_limits::infinity()), 0); // x = + infinity, pdf = 0 + BOOST_CHECK_EQUAL(pdf(N01, -std::numeric_limits::infinity()), 0); // x = - infinity, pdf = 0 + BOOST_CHECK_EQUAL(cdf(N01, +std::numeric_limits::infinity()), 1); // x = + infinity, cdf = 1 + BOOST_CHECK_EQUAL(cdf(N01, -std::numeric_limits::infinity()), 0); // x = - infinity, cdf = 0 + BOOST_CHECK_EQUAL(cdf(complement(N01, +std::numeric_limits::infinity())), 0); // x = + infinity, c cdf = 0 + BOOST_CHECK_EQUAL(cdf(complement(N01, -std::numeric_limits::infinity())), 1); // x = - infinity, c cdf = 1 + BOOST_CHECK_THROW(boost::math::normal_distribution nbad1(std::numeric_limits::infinity(), static_cast(1)), std::domain_error); // +infinite mean + BOOST_CHECK_THROW(boost::math::normal_distribution nbad1(-std::numeric_limits::infinity(), static_cast(1)), std::domain_error); // -infinite mean + BOOST_CHECK_THROW(boost::math::normal_distribution nbad1(static_cast(0), std::numeric_limits::infinity()), std::domain_error); // infinite sd + } + + if (std::numeric_limits::has_quiet_NaN) + { + // No longer allow x to be NaN, then these tests should throw. + BOOST_CHECK_THROW(pdf(N01, +std::numeric_limits::quiet_NaN()), std::domain_error); // x = NaN + BOOST_CHECK_THROW(cdf(N01, +std::numeric_limits::quiet_NaN()), std::domain_error); // x = NaN + BOOST_CHECK_THROW(cdf(complement(N01, +std::numeric_limits::quiet_NaN())), std::domain_error); // x = + infinity + BOOST_CHECK_THROW(quantile(N01, +std::numeric_limits::quiet_NaN()), std::domain_error); // p = + infinity + BOOST_CHECK_THROW(quantile(complement(N01, +std::numeric_limits::quiet_NaN())), std::domain_error); // p = + infinity + } + + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + check_normal( + static_cast(5), + static_cast(2), + static_cast(4.8), + static_cast(0.46017), + static_cast(1 - 0.46017), + tolerance); + + check_normal( + static_cast(5), + static_cast(2), + static_cast(5.2), + static_cast(1 - 0.46017), + static_cast(0.46017), + tolerance); + + check_normal( + static_cast(5), + static_cast(2), + static_cast(2.2), + static_cast(0.08076), + static_cast(1 - 0.08076), + tolerance); + + check_normal( + static_cast(5), + static_cast(2), + static_cast(7.8), + static_cast(1 - 0.08076), + static_cast(0.08076), + tolerance); + + check_normal( + static_cast(-3), + static_cast(5), + static_cast(-4.5), + static_cast(0.38209), + static_cast(1 - 0.38209), + tolerance); + + check_normal( + static_cast(-3), + static_cast(5), + static_cast(-1.5), + static_cast(1 - 0.38209), + static_cast(0.38209), + tolerance); + + check_normal( + static_cast(-3), + static_cast(5), + static_cast(-8.5), + static_cast(0.13567), + static_cast(1 - 0.13567), + tolerance); + + check_normal( + static_cast(-3), + static_cast(5), + static_cast(2.5), + static_cast(1 - 0.13567), + static_cast(0.13567), + tolerance); + + // + // Tests for PDF: we know that the peak value is at 1/sqrt(2*pi) + // + tolerance = boost::math::tools::epsilon() * 5 * 100; // 5 eps as a percentage + BOOST_CHECK_CLOSE( + pdf(normal_distribution(), static_cast(0)), + static_cast(0.3989422804014326779399460599343818684759L), // 1/sqrt(2*pi) + tolerance); + BOOST_CHECK_CLOSE( + pdf(normal_distribution(3), static_cast(3)), + static_cast(0.3989422804014326779399460599343818684759L), + tolerance); + BOOST_CHECK_CLOSE( + pdf(normal_distribution(3, 5), static_cast(3)), + static_cast(0.3989422804014326779399460599343818684759L / 5), + tolerance); + + // + // Spot checks for mean = -5, sd = 6: + // + for(RealType x = -15; x < 5; x += 0.125) + { + BOOST_CHECK_CLOSE( + pdf(normal_distribution(-5, 6), x), + NaivePDF(RealType(-5), RealType(6), x), + tolerance); + } + + RealType tol2 = boost::math::tools::epsilon() * 5; + normal_distribution dist(8, 3); + RealType x = static_cast(0.125); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(8), tol2); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(9), tol2); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , static_cast(3), tol2); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol2); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tol2); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tol2); + // mode: + BOOST_CHECK_CLOSE( + mode(dist) + , static_cast(8), tol2); + + BOOST_CHECK_CLOSE( + median(dist) + , static_cast(8), tol2); + + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist) + , static_cast(0), tol2); + // kertosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , static_cast(3), tol2); + // kertosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist) + , static_cast(0), tol2); + + normal_distribution norm01(0, 1); // Test default (0, 1) + BOOST_CHECK_CLOSE( + mean(norm01), + static_cast(0), 0); // Mean == zero + + normal_distribution defsd_norm01(0); // Test default (0, sd = 1) + BOOST_CHECK_CLOSE( + mean(defsd_norm01), + static_cast(0), 0); // Mean == zero + + normal_distribution def_norm01; // Test default (0, sd = 1) + BOOST_CHECK_CLOSE( + mean(def_norm01), + static_cast(0), 0); // Mean == zero + + BOOST_CHECK_CLOSE( + standard_deviation(def_norm01), + static_cast(1), 0); // Mean == zero + + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Check that can generate normal distribution using the two convenience methods: + boost::math::normal myf1(1., 2); // Using typedef + normal_distribution<> myf2(1., 2); // Using default RealType double. + boost::math::normal myn01; // Use default values. + // Note NOT myn01() as the compiler will interpret as a function! + + // Check the synonyms, provided to allow generic use of find_location and find_scale. + BOOST_CHECK_EQUAL(myn01.mean(), myn01.location()); + BOOST_CHECK_EQUAL(myn01.standard_deviation(), myn01.scale()); + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_normal.exe" +Running 1 test case... +Tolerance for type float is 0.01 % +Tolerance for type double is 0.01 % +Tolerance for type long double is 0.01 % +Tolerance for type class boost::math::concepts::real_concept is 0.01 % +*** No errors detected + +*/ + + diff --git a/test/test_pareto.cpp b/test/test_pareto.cpp new file mode 100644 index 000000000..7c80d6cef --- /dev/null +++ b/test/test_pareto.cpp @@ -0,0 +1,333 @@ +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2006. +// 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) + +// test_pareto.cpp + +// http://en.wikipedia.org/wiki/pareto_distribution +// http://www.itl.nist.gov/div898/handbook/eda/section3/eda3661.htm +// Also: +// Weisstein, Eric W. "pareto Distribution." +// From MathWorld--A Wolfram Web Resource. +// http://mathworld.wolfram.com/paretoDistribution.html + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +# pragma warning(disable: 4100) // unreferenced formal parameter. +#endif + +#include // for real_concept +#include // Boost.Test +#include + +#include + using boost::math::pareto_distribution; +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; + + template + void check_pareto(RealType location, RealType shape, RealType x, RealType p, RealType q, RealType tol) + { + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + pareto_distribution(location, shape), // distribution. + x), // random variable. + p, // probability. + tol); // tolerance eps. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + complement( + pareto_distribution(location, shape), // distribution. + x)), // random variable. + q, // probability complement. + tol); // tolerance eps. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + pareto_distribution(location, shape), // distribution. + p), // probability. + x, // random variable. + tol); // tolerance eps. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + complement( + pareto_distribution(location, shape), // distribution. + q)), // probability complement. + x, // random variable. + tol); // tolerance eps. + } // check_pareto + +template +void test_spots(RealType) +{ + // Basic sanity checks. + // + // Tolerance are based on units of epsilon, but capped at + // double precision, since that's the limit of out test data: + // + RealType tol = (std::max)((RealType)boost::math::tools::epsilon(), boost::math::tools::epsilon()); + RealType tol5eps = tol * 5; + RealType tol10eps = tol * 10; + RealType tol100eps = tol * 100; + RealType tol1000eps = tol * 1000; + + check_pareto( + static_cast(1.1L), // + static_cast(5.5L), + static_cast(2.2L), + static_cast(0.97790291308792L), + static_cast(0.0220970869120796L), + tol10eps * 4); + + check_pareto( + static_cast(0.5L), + static_cast(10.1L), + static_cast(1.5L), + static_cast(0.99998482686481L), + static_cast(1.51731351900608e-005L), + tol100eps * 1000); // Much less accurate as p close to unity. + + check_pareto( + static_cast(0.1L), + static_cast(2.3L), + static_cast(1.5L), + static_cast(0.99802762220697L), + static_cast(0.00197237779302972L), + tol1000eps); + + // Example from 23.3 page 259 + check_pareto( + static_cast(2.30444301457005L), + static_cast(4), + static_cast(2.4L), + static_cast(0.15L), + static_cast(0.85L), + tol100eps); + + check_pareto( + static_cast(2), + static_cast(3), + static_cast(3.4L), + static_cast(0.796458375737838L), + static_cast(0.203541624262162L), + tol10eps); + + check_pareto( // Probability near 0.5 + static_cast(2), + static_cast(2), + static_cast(3), + static_cast(0.5555555555555555555555555555555555555556L), + static_cast(0.4444444444444444444444444444444444444444L), + tol5eps); // accurate. + + + // Tests for: + + // pdf for shapes 1, 2 & 3 (exact) + BOOST_CHECK_CLOSE_FRACTION( + pdf(pareto_distribution(1, 1), 1), + static_cast(1), // + tol5eps); + + BOOST_CHECK_CLOSE_FRACTION( pdf(pareto_distribution(1, 2), 1), + static_cast(2), // + tol5eps); + + BOOST_CHECK_CLOSE_FRACTION( pdf(pareto_distribution(1, 3), 1), + static_cast(3), // + tol5eps); + + // cdf + BOOST_CHECK_EQUAL( // x = location + cdf(pareto_distribution(1, 1), 1), + static_cast(0) ); + + // Compare with values from StatCalc K. Krishnamoorthy, ISBN 1-58488-635-8 eq 23.1.3 + BOOST_CHECK_CLOSE_FRACTION( // small x + cdf(pareto_distribution(2, 5), static_cast(3.4)), + static_cast(0.929570372227626L), tol5eps); + + BOOST_CHECK_CLOSE_FRACTION( // small x + cdf(pareto_distribution(2, 5), static_cast(3.4)), + static_cast(1 - 0.0704296277723743L), tol5eps); + + BOOST_CHECK_CLOSE_FRACTION( // small x + cdf(complement(pareto_distribution(2, 5), static_cast(3.4))), + static_cast(0.0704296277723743L), tol5eps); + + // quantile + BOOST_CHECK_EQUAL( // x = location + quantile(pareto_distribution(1, 1), 0), + static_cast(1) ); + + BOOST_CHECK_EQUAL( // x = location + quantile(complement(pareto_distribution(1, 1), 1)), + static_cast(1) ); + + BOOST_CHECK_CLOSE_FRACTION( // small x + cdf(complement(pareto_distribution(2, 5), static_cast(3.4))), + static_cast(0.0704296277723743L), tol5eps); + + using namespace std; // ADL of std names. + + pareto_distribution pareto15(1, 5); + // Note: shape must be big enough (5) that all moments up to kurtosis are defined + // to allow all functions to be tested. + + // mean: + BOOST_CHECK_CLOSE_FRACTION( + mean(pareto15), static_cast(1.25), tol5eps); // 1.25 == 5/4 + BOOST_CHECK_EQUAL( + mean(pareto15), static_cast(1.25)); // 1.25 == 5/4 (expect exact so check equal) + + pareto_distribution p12(1, 2); // + BOOST_CHECK_EQUAL( + mean(p12), static_cast(2)); // Exactly two. + + // variance: + BOOST_CHECK_CLOSE_FRACTION( + variance(pareto15), static_cast(0.10416666666666667L), tol5eps); + // std deviation: + BOOST_CHECK_CLOSE_FRACTION( + standard_deviation(pareto15), static_cast(0.32274861218395140L), tol5eps); + // hazard: No independent test values found yet. + //BOOST_CHECK_CLOSE_FRACTION( + // hazard(pareto15, x), pdf(pareto15, x) / cdf(complement(pareto15, x)), tol5eps); + //// cumulative hazard: + //BOOST_CHECK_CLOSE_FRACTION( + // chf(pareto15, x), -log(cdf(complement(pareto15, x))), tol5eps); + //// coefficient_of_variation: + BOOST_CHECK_CLOSE_FRACTION( + coefficient_of_variation(pareto15), static_cast(0.25819888974716110L), tol5eps); + // mode: + BOOST_CHECK_CLOSE_FRACTION( + mode(pareto15), static_cast(1), tol5eps); + + BOOST_CHECK_CLOSE_FRACTION( + median(pareto15), static_cast(1.1486983549970351L), tol5eps); + + // skewness: + BOOST_CHECK_CLOSE_FRACTION( + skewness(pareto15), static_cast(4.6475800154489004L), tol5eps); + // kertosis: + BOOST_CHECK_CLOSE_FRACTION( + kurtosis(pareto15), static_cast(73.8L), tol5eps); + // kertosis excess: + BOOST_CHECK_CLOSE_FRACTION( + kurtosis_excess(pareto15), static_cast(70.8L), tol5eps); + // Check difference between kurtosis and excess: + BOOST_CHECK_CLOSE_FRACTION( + kurtosis_excess(pareto15), kurtosis(pareto15) - static_cast(3L), tol5eps); + // Check kurtosis excess = kurtosis - 3; + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Check that can generate pareto distribution using the two convenience methods: + boost::math::pareto myp1(1., 1); // Using typedef + pareto_distribution<> myp2(1., 1); // Using default RealType double. + boost::math::pareto pareto11; // Use default values (location = 1, shape = 1). + // Note NOT pareto11() as the compiler will interpret as a function! + // Basic sanity-check spot values. + + BOOST_CHECK_EQUAL(pareto11.location(), 1); // Check defaults again. + BOOST_CHECK_EQUAL(pareto11.shape(), 1); + BOOST_CHECK_EQUAL(myp1.location(), 1); + BOOST_CHECK_EQUAL(myp1.shape(), 1); + BOOST_CHECK_EQUAL(myp2.location(), 1); + BOOST_CHECK_EQUAL(myp2.shape(), 1); + + // Test range and support using double only, + // because it supports numeric_limits max for pseudo-infinity. + BOOST_CHECK_EQUAL(range(myp2).first, 0); // range 0 to +infinity + BOOST_CHECK_EQUAL(range(myp2).second, (numeric_limits::max)()); + BOOST_CHECK_EQUAL(support(myp2).first, myp2.location()); // support location to + infinity. + BOOST_CHECK_EQUAL(support(myp2).second, (numeric_limits::max)()); + + // Check some bad parameters to the distribution. + BOOST_CHECK_THROW(boost::math::pareto mypm1(-1, 1), std::domain_error); // Using typedef + BOOST_CHECK_THROW(boost::math::pareto myp0(0, 1), std::domain_error); // Using typedef + BOOST_CHECK_THROW(boost::math::pareto myp1m1(1, -1), std::domain_error); // Using typedef + BOOST_CHECK_THROW(boost::math::pareto myp10(1, 0), std::domain_error); // Using typedef + + // Check some moments that should fail because shape not big enough. + BOOST_CHECK_THROW(variance(myp2), std::domain_error); + BOOST_CHECK_THROW(standard_deviation(myp2), std::domain_error); + BOOST_CHECK_THROW(skewness(myp2), std::domain_error); + BOOST_CHECK_THROW(kurtosis(myp2), std::domain_error); + BOOST_CHECK_THROW(kurtosis_excess(myp2), std::domain_error); + + // Test on extreme values of distribution parameters, + // using just double because it has numeric_limit infinity etc. + BOOST_CHECK_THROW(boost::math::pareto mypinf1(+std::numeric_limits::infinity(), 1), std::domain_error); // Using typedef + BOOST_CHECK_THROW(boost::math::pareto myp1inf(1, +std::numeric_limits::infinity()), std::domain_error); // Using typedef + BOOST_CHECK_THROW(boost::math::pareto mypinf1(+std::numeric_limits::infinity(), +std::numeric_limits::infinity()), std::domain_error); // Using typedef + + // Test on extreme values of random variate x, using just double because it has numeric_limit infinity etc.. + // No longer allow x to be + or - infinity, then these tests should throw. + BOOST_CHECK_THROW(pdf(pareto11, +std::numeric_limits::infinity()), std::domain_error); // x = + infinity + BOOST_CHECK_THROW(pdf(pareto11, -std::numeric_limits::infinity()), std::domain_error); // x = - infinity + BOOST_CHECK_THROW(cdf(pareto11, +std::numeric_limits::infinity()), std::domain_error); // x = + infinity + BOOST_CHECK_THROW(cdf(pareto11, -std::numeric_limits::infinity()), std::domain_error); // x = - infinity + + BOOST_CHECK_EQUAL(pdf(pareto11, 0.5), 0); // x < location but > 0 + BOOST_CHECK_EQUAL(pdf(pareto11, (std::numeric_limits::min)()), 0); // x almost zero but > 0 + BOOST_CHECK_EQUAL(pdf(pareto11, 1), 1); // x == location, result == shape == 1 + BOOST_CHECK_EQUAL(pdf(pareto11, +(std::numeric_limits::max)()), 0); // x = +max, pdf has fallen to zero. + + BOOST_CHECK_THROW(pdf(pareto11, 0), std::domain_error); // x == 0 + BOOST_CHECK_THROW(pdf(pareto11, -1), std::domain_error); // x = -1 + BOOST_CHECK_THROW(pdf(pareto11, -(std::numeric_limits::max)()), std::domain_error); // x = - max + BOOST_CHECK_THROW(pdf(pareto11, -(std::numeric_limits::min)()), std::domain_error); // x = - min + + BOOST_CHECK_EQUAL(cdf(pareto11, 1), 0); // x == location, cdf = zero. + BOOST_CHECK_EQUAL(cdf(pareto11, +(std::numeric_limits::max)()), 1); // x = + max, cdf = unity. + + BOOST_CHECK_THROW(cdf(pareto11, 0), std::domain_error); // x == 0 + BOOST_CHECK_THROW(cdf(pareto11, -(std::numeric_limits::min)()), std::domain_error); // x = - min, + BOOST_CHECK_THROW(cdf(pareto11, -(std::numeric_limits::max)()), std::domain_error); // x = - max, + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tol5eps = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tol5eps = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Compiling... +test_pareto.cpp +Linking... +Embedding manifest... +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_pareto.exe" +Running 1 test case... +*** No errors detected + + + +*/ + + diff --git a/test/test_poisson.cpp b/test/test_poisson.cpp new file mode 100644 index 000000000..361637cd7 --- /dev/null +++ b/test/test_poisson.cpp @@ -0,0 +1,623 @@ +// test_poisson.cpp + +// Copyright Paul A. Bristow 2007. +// Copyright John Maddock 2006. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +// Basic sanity test for Poisson Cumulative Distribution Function. + +#define BOOST_MATH_DISCRETE_QUANTILE_POLICY real + +#if !defined(TEST_FLOAT) && !defined(TEST_DOUBLE) && !defined(TEST_LDOUBLE) && !defined(TEST_REAL_CONCEPT) +# define TEST_FLOAT +# define TEST_DOUBLE +# define TEST_LDOUBLE +# define TEST_REAL_CONCEPT +#endif + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +#endif + +#include // Boost.Test +#include + +#include + using boost::math::poisson_distribution; +#include // for real_concept +#include // for real_concept + +#include // for (incomplete) gamma. +// using boost::math::qamma_Q; + +#include + using std::cout; + using std::endl; + using std::setprecision; + using std::showpoint; + using std::ios; +#include + using std::numeric_limits; + +template // Any floating-point type RealType. +void test_spots(RealType) +{ + // Basic sanity checks, tolerance is about numeric_limits::digits10 decimal places, + // guaranteed for type RealType, eg 6 for float, 15 for double, + // expressed as a percentage (so -2) for BOOST_CHECK_CLOSE, + + int decdigits = numeric_limits::digits10; + // May eb >15 for 80 and 128-bit FP typtes. + if (decdigits <= 0) + { // decdigits is not defined, for example real concept, + // so assume precision of most test data is double (for example, MathCAD). + decdigits = numeric_limits::digits10; // == 15 for 64-bit + } + if (decdigits > 15 ) // numeric_limits::digits10) + { // 15 is the accuracy of the MathCAD test data. + decdigits = 15; // numeric_limits::digits10; + } + + decdigits -= 1; // Perhaps allow some decimal digit(s) margin of numerical error. + RealType tolerance = static_cast(std::pow(10., static_cast(2-decdigits))); // 1e-6 (-2 so as %) + tolerance *= 2; // Allow some bit(s) small margin (2 means + or - 1 bit) of numerical error. + // Typically 2e-13% = 2e-15 as fraction for double. + + // Sources of spot test values: + + // Many be some combinations for which the result is 'exact', + // or at least is good to 40 decimal digits. + // 40 decimal digits includes 128-bit significand User Defined Floating-Point types, + + // Best source of accurate values is: + // Mathworld online calculator (40 decimal digits precision, suitable for up to 128-bit significands) + // http://functions.wolfram.com/webMathematica/FunctionEvaluation.jsp?name=GammaRegularized + // GammaRegularized is same as gamma incomplete, gamma or gamma_q(a, x) or Q(a, z). + + // http://documents.wolfram.com/calculationcenter/v2/Functions/ListsMatrices/Statistics/PoissonDistribution.html + + // MathCAD defines ppois(k, lambda== mean) as k integer, k >=0. + // ppois(0, 5) = 6.73794699908547e-3 + // ppois(1, 5) = 0.040427681994513; + // ppois(10, 10) = 5.830397501929850E-001 + // ppois(10, 1) = 9.999999899522340E-001 + // ppois(5,5) = 0.615960654833065 + + // qpois returns inverse Poission distribution, that is the smallest (floor) k so that ppois(k, lambda) >= p + // p is real number, real mean lambda > 0 + // k is approximately the integer for which probability(X <= k) = p + // when random variable X has the Poisson distribution with parameters lambda. + // Uses discrete bisection. + // qpois(6.73794699908547e-3, 5) = 1 + // qpois(0.040427681994513, 5) = + + // Test Poisson with spot values from MathCAD 'known good'. + + using boost::math::poisson_distribution; + using ::boost::math::poisson; + using ::boost::math::cdf; + using ::boost::math::pdf; + + // Check that bad arguments throw. + BOOST_CHECK_THROW( + cdf(poisson_distribution(static_cast(0)), // mean zero is bad. + static_cast(0)), // even for a good k. + std::domain_error); // Expected error to be thrown. + + BOOST_CHECK_THROW( + cdf(poisson_distribution(static_cast(-1)), // mean negative is bad. + static_cast(0)), + std::domain_error); + + BOOST_CHECK_THROW( + cdf(poisson_distribution(static_cast(1)), // mean unit OK, + static_cast(-1)), // but negative events is bad. + std::domain_error); + + BOOST_CHECK_THROW( + cdf(poisson_distribution(static_cast(0)), // mean zero is bad. + static_cast(99999)), // for any k events. + std::domain_error); + + BOOST_CHECK_THROW( + cdf(poisson_distribution(static_cast(0)), // mean zero is bad. + static_cast(99999)), // for any k events. + std::domain_error); + + BOOST_CHECK_THROW( + quantile(poisson_distribution(static_cast(0)), // mean zero. + static_cast(0.5)), // probability OK. + std::domain_error); + + BOOST_CHECK_THROW( + quantile(poisson_distribution(static_cast(-1)), + static_cast(-1)), // bad probability. + std::domain_error); + + BOOST_CHECK_THROW( + quantile(poisson_distribution(static_cast(1)), + static_cast(-1)), // bad probability. + std::domain_error); + + // Check some test values. + + BOOST_CHECK_CLOSE( // mode + mode(poisson_distribution(static_cast(4))), // mode = mean = 4. + static_cast(4), // mode. + tolerance); + + //BOOST_CHECK_CLOSE( // mode + // median(poisson_distribution(static_cast(4))), // mode = mean = 4. + // static_cast(4), // mode. + // tolerance); + poisson_distribution dist4(static_cast(40)); + + BOOST_CHECK_CLOSE( // median + median(dist4), // mode = mean = 4. median = 40.328333333333333 + quantile(dist4, static_cast(0.5)), // 39.332839138842637 + tolerance); + + // PDF + BOOST_CHECK_CLOSE( + pdf(poisson_distribution(static_cast(4)), // mean 4. + static_cast(0)), + static_cast(1.831563888873410E-002), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + pdf(poisson_distribution(static_cast(4)), // mean 4. + static_cast(2)), + static_cast(1.465251111098740E-001), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + pdf(poisson_distribution(static_cast(20)), // mean big. + static_cast(1)), // k small + static_cast(4.122307244877130E-008), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + pdf(poisson_distribution(static_cast(4)), // mean 4. + static_cast(20)), // K>> mean + static_cast(8.277463646553730E-009), // probability. + tolerance); + + // CDF + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(0)), // zero k events. + static_cast(3.678794411714420E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(1)), // one k event. + static_cast(7.357588823428830E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(2)), // two k events. + static_cast(9.196986029286060E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(10)), // two k events. + static_cast(9.999999899522340E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(15)), // two k events. + static_cast(9.999999999999810E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(16)), // two k events. + static_cast(9.999999999999990E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(17)), // two k events. + static_cast(1.), // probability unity for double. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(33)), // k events at limit for float unchecked_factorial table. + static_cast(1.), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(100)), // mean 100. + static_cast(33)), // k events at limit for float unchecked_factorial table. + static_cast(6.328271240363390E-15), // probability is tiny. + tolerance * static_cast(2e11)); // 6.3495253382825722e-015 MathCAD + // Note that there two tiny probability are much more different. + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(100)), // mean 100. + static_cast(34)), // k events at limit for float unchecked_factorial table. + static_cast(1.898481372109020E-14), // probability is tiny. + tolerance*static_cast(2e11)); // 1.8984813721090199e-014 MathCAD + + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(33)), // mean = k + static_cast(33)), // k events above limit for float unchecked_factorial table. + static_cast(5.461191812386560E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(33)), // mean = k-1 + static_cast(34)), // k events above limit for float unchecked_factorial table. + static_cast(6.133535681502950E-1), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1)), // mean unity. + static_cast(34)), // k events above limit for float unchecked_factorial table. + static_cast(1.), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(5.)), // mean + static_cast(5)), // k events. + static_cast(0.615960654833065), // probability. + tolerance); + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(5.)), // mean + static_cast(1)), // k events. + static_cast(0.040427681994512805), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(5.)), // mean + static_cast(0)), // k events (uses special case formula, not gamma). + static_cast(0.006737946999085467), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(1.)), // mean + static_cast(0)), // k events (uses special case formula, not gamma). + static_cast(0.36787944117144233), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(10.)), // mean + static_cast(10)), // k events. + static_cast(0.5830397501929856), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(4.)), // mean + static_cast(5)), // k events. + static_cast(0.785130387030406), // probability. + tolerance); + + // complement CDF + BOOST_CHECK_CLOSE( // Complement CDF + cdf(complement(poisson_distribution(static_cast(4.)), // mean + static_cast(5))), // k events. + static_cast(1 - 0.785130387030406), // probability. + tolerance); + + BOOST_CHECK_CLOSE( // Complement CDF + cdf(complement(poisson_distribution(static_cast(4.)), // mean + static_cast(0))), // Zero k events (uses special case formula, not gamma). + static_cast(0.98168436111126578), // probability. + tolerance); + BOOST_CHECK_CLOSE( // Complement CDF + cdf(complement(poisson_distribution(static_cast(1.)), // mean + static_cast(0))), // Zero k events (uses special case formula, not gamma). + static_cast(0.63212055882855767), // probability. + tolerance); + + // Example where k is bigger than max_factorial (>34 for float) + // (therefore using log gamma so perhaps less accurate). + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(40.)), // mean + static_cast(40)), // k events. + static_cast(0.5419181783625430), // probability. + tolerance); + + // Quantile & complement. + BOOST_CHECK_CLOSE( + boost::math::quantile( + poisson_distribution(5), // mean. + static_cast(0.615960654833065)), // probability. + static_cast(5.), // Expect k = 5 + tolerance/5); // + + // EQUAL is too optimistic - fails [5.0000000000000124 != 5] + // BOOST_CHECK_EQUAL(boost::math::quantile( // + // poisson_distribution(5.), // mean. + // static_cast(0.615960654833065)), // probability. + // static_cast(5.)); // Expect k = 5 events. + + BOOST_CHECK_CLOSE(boost::math::quantile( + poisson_distribution(4), // mean. + static_cast(0.785130387030406)), // probability. + static_cast(5.), // Expect k = 5 events. + tolerance/5); + + // Check on quantile of other examples of inverse of cdf. + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(10.)), // mean + static_cast(10)), // k events. + static_cast(0.5830397501929856), // probability. + tolerance); + + BOOST_CHECK_CLOSE(boost::math::quantile( // inverse of cdf above. + poisson_distribution(10.), // mean. + static_cast(0.5830397501929856)), // probability. + static_cast(10.), // Expect k = 10 events. + tolerance/5); + + + BOOST_CHECK_CLOSE( + cdf(poisson_distribution(static_cast(4.)), // mean + static_cast(5)), // k events. + static_cast(0.785130387030406), // probability. + tolerance); + + BOOST_CHECK_CLOSE(boost::math::quantile( // inverse of cdf above. + poisson_distribution(4.), // mean. + static_cast(0.785130387030406)), // probability. + static_cast(5.), // Expect k = 10 events. + tolerance/5); + + + + //BOOST_CHECK_CLOSE(boost::math::quantile( + // poisson_distribution(5), // mean. + // static_cast(0.785130387030406)), // probability. + // // 6.1882832344329559 result but MathCAD givest smallest integer ppois(k, mean) >= prob + // static_cast(6.), // Expect k = 6 events. + // tolerance/5); + + //BOOST_CHECK_CLOSE(boost::math::quantile( + // poisson_distribution(5), // mean. + // static_cast(0.77)), // probability. + // // 6.1882832344329559 result but MathCAD givest smallest integer ppois(k, mean) >= prob + // static_cast(7.), // Expect k = 6 events. + // tolerance/5); + + //BOOST_CHECK_CLOSE(boost::math::quantile( + // poisson_distribution(5), // mean. + // static_cast(0.75)), // probability. + // // 6.1882832344329559 result but MathCAD givest smallest integer ppois(k, mean) >= prob + // static_cast(6.), // Expect k = 6 events. + // tolerance/5); + + BOOST_CHECK_CLOSE( + boost::math::quantile( + complement( + poisson_distribution(4), + static_cast(1 - 0.785130387030406))), // complement. + static_cast(5), // Expect k = 5 events. + tolerance/5); + + BOOST_CHECK_EQUAL(boost::math::quantile( // Check case when probability < cdf(0) (== pdf(0)) + poisson_distribution(1), // mean is small, so cdf and pdf(0) are about 0.35. + static_cast(0.0001)), // probability < cdf(0). + static_cast(0)); // Expect k = 0 events exactly. + + BOOST_CHECK_EQUAL( + boost::math::quantile( + complement( + poisson_distribution(1), + static_cast(0.9999))), // complement, so 1-probability < cdf(0) + static_cast(0)); // Expect k = 0 events exactly. + + // + // Test quantile policies against test data: + // +#define T RealType +#include "poisson_quantile.ipp" + + for(unsigned i = 0; i < poisson_quantile_data.size(); ++i) + { + using namespace boost::math::policies; + typedef policy > P1; + typedef policy > P2; + typedef policy > P3; + typedef policy > P4; + typedef policy > P5; + typedef policy > P6; + RealType tol = boost::math::tools::epsilon() * 20; + if(!boost::is_floating_point::value) + tol *= 7; + // + // Check full real value first: + // + poisson_distribution p1(poisson_quantile_data[i][0]); + RealType x = quantile(p1, poisson_quantile_data[i][1]); + BOOST_CHECK_CLOSE_FRACTION(x, poisson_quantile_data[i][2], tol); + x = quantile(complement(p1, poisson_quantile_data[i][1])); + BOOST_CHECK_CLOSE_FRACTION(x, poisson_quantile_data[i][3], tol); + // + // Now with round down to integer: + // + poisson_distribution p2(poisson_quantile_data[i][0]); + x = quantile(p2, poisson_quantile_data[i][1]); + BOOST_CHECK_EQUAL(x, floor(poisson_quantile_data[i][2])); + x = quantile(complement(p2, poisson_quantile_data[i][1])); + BOOST_CHECK_EQUAL(x, floor(poisson_quantile_data[i][3])); + // + // Now with round up to integer: + // + poisson_distribution p3(poisson_quantile_data[i][0]); + x = quantile(p3, poisson_quantile_data[i][1]); + BOOST_CHECK_EQUAL(x, ceil(poisson_quantile_data[i][2])); + x = quantile(complement(p3, poisson_quantile_data[i][1])); + BOOST_CHECK_EQUAL(x, ceil(poisson_quantile_data[i][3])); + // + // Now with round to integer "outside": + // + poisson_distribution p4(poisson_quantile_data[i][0]); + x = quantile(p4, poisson_quantile_data[i][1]); + BOOST_CHECK_EQUAL(x, poisson_quantile_data[i][1] < 0.5f ? floor(poisson_quantile_data[i][2]) : ceil(poisson_quantile_data[i][2])); + x = quantile(complement(p4, poisson_quantile_data[i][1])); + BOOST_CHECK_EQUAL(x, poisson_quantile_data[i][1] < 0.5f ? ceil(poisson_quantile_data[i][3]) : floor(poisson_quantile_data[i][3])); + // + // Now with round to integer "inside": + // + poisson_distribution p5(poisson_quantile_data[i][0]); + x = quantile(p5, poisson_quantile_data[i][1]); + BOOST_CHECK_EQUAL(x, poisson_quantile_data[i][1] < 0.5f ? ceil(poisson_quantile_data[i][2]) : floor(poisson_quantile_data[i][2])); + x = quantile(complement(p5, poisson_quantile_data[i][1])); + BOOST_CHECK_EQUAL(x, poisson_quantile_data[i][1] < 0.5f ? floor(poisson_quantile_data[i][3]) : ceil(poisson_quantile_data[i][3])); + // + // Now with round to nearest integer: + // + poisson_distribution p6(poisson_quantile_data[i][0]); + x = quantile(p6, poisson_quantile_data[i][1]); + BOOST_CHECK_EQUAL(x, floor(poisson_quantile_data[i][2] + 0.5f)); + x = quantile(complement(p6, poisson_quantile_data[i][1])); + BOOST_CHECK_EQUAL(x, floor(poisson_quantile_data[i][3] + 0.5f)); + } + +} // template void test_spots(RealType) + +// + +int test_main(int, char* []) +{ + // Check that can construct normal distribution using the two convenience methods: + using namespace boost::math; + poisson myp1(2); // Using typedef + poisson_distribution<> myp2(2); // Using default RealType double. + + // Basic sanity-check spot values. + + // Some plain double examples & tests: + cout.precision(17); // double max_digits10 + cout.setf(ios::showpoint); + + poisson mypoisson(4.); // // mean = 4, default FP type is double. + cout << "mean(mypoisson, 4.) == " << mean(mypoisson) << endl; + cout << "mean(mypoisson, 0.) == " << mean(mypoisson) << endl; + cout << "cdf(mypoisson, 2.) == " << cdf(mypoisson, 2.) << endl; + cout << "pdf(mypoisson, 2.) == " << pdf(mypoisson, 2.) << endl; + + // poisson mydudpoisson(0.); + // throws (if BOOST_MATH_DOMAIN_ERROR_POLICY == throw_on_error). + + + BOOST_CHECK_THROW(poisson mydudpoisson(-1), std::domain_error);// Mean must be > 0. + BOOST_CHECK_THROW(poisson mydudpoisson(-1), std::logic_error);// Mean must be > 0. + // Passes the check because logic_error is a parent???? + // BOOST_CHECK_THROW(poisson mydudpoisson(-1), std::overflow_error); // fails the check + // because overflow_error is unrelated - except from std::exception + BOOST_CHECK_THROW(cdf(mypoisson, -1), std::domain_error); // k must be >= 0 + + BOOST_CHECK_EQUAL(mean(mypoisson), 4.); + BOOST_CHECK_CLOSE( + pdf(mypoisson, 2.), // k events = 2. + 1.465251111098740E-001, // probability. + 5e-13); + + BOOST_CHECK_CLOSE( + cdf(mypoisson, 2.), // k events = 2. + 0.238103305553545, // probability. + 5e-13); + + +#if 0 + // Compare cdf from finite sum of pdf and gamma_q. + using boost::math::cdf; + using boost::math::pdf; + + double mean = 4.; + cout.precision(17); // double max_digits10 + cout.setf(ios::showpoint); + cout << showpoint << endl; // Ensure trailing zeros are shown. + // This also helps show the expected precision max_digits10 + //cout.unsetf(ios::showpoint); // No trailing zeros are shown. + + cout << "k pdf sum cdf diff" << endl; + double sum = 0.; + for (int i = 0; i <= 50; i++) + { + cout << i << ' ' ; + double p = pdf(poisson_distribution(mean), static_cast(i)); + sum += p; + + cout << p << ' ' << sum << ' ' + << cdf(poisson_distribution(mean), static_cast(i)) << ' '; + { + cout << boost::math::gamma_q(i+1, mean); // cdf + double diff = boost::math::gamma_q(i+1, mean) - sum; // cdf -sum + cout << setprecision (2) << ' ' << diff; // 0 0 to 4, 1 eps 5 to 9, 10 to 20 2 eps, 21 upwards 3 eps + + } + BOOST_CHECK_CLOSE( + cdf(mypoisson, static_cast(i)), + sum, // of pdfs. + 4e-14); // Fails at 2e-14 + // This call puts the precision etc back to default 6 !!! + cout << setprecision(17) << showpoint; + + + cout << endl; + } + + cout << cdf(poisson_distribution(5), static_cast(0)) << ' ' << endl; // 0.006737946999085467 + cout << cdf(poisson_distribution(5), static_cast(1)) << ' ' << endl; // 0.040427681994512805 + cout << cdf(poisson_distribution(2), static_cast(3)) << ' ' << endl; // 0.85712346049854715 + + { // Compare approximate formula in Wikipedia with quantile(half) + for (int i = 1; i < 100; i++) + { + poisson_distribution distn(static_cast(i)); + cout << i << ' ' << median(distn) << ' ' << quantile(distn, 0.5) << ' ' + << median(distn) - quantile(distn, 0.5) << endl; // formula appears to be out-by-one?? + } // so quantile(half) used via derived accressors. + } +#endif + + // (Parameter value, arbitrarily zero, only communicates the floating-point type). +#ifdef TEST_POISSON + test_spots(0.0F); // Test float. +#endif +#ifdef TEST_DOUBLE + test_spots(0.0); // Test double. +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if (numeric_limits::digits10 > numeric_limits::digits10) + { // long double is better than double (so not MSVC where they are same). +#ifdef TEST_LDOUBLE + test_spots(0.0L); // Test long double. +#endif + } + + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) +#ifdef TEST_REAL_CONCEPT + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif + #endif +#endif + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_poisson.exe" +Running 1 test case... +mean(mypoisson, 4.) == 4.0000000000000000 +mean(mypoisson, 0.) == 4.0000000000000000 +cdf(mypoisson, 2.) == 0.23810330555354431 +pdf(mypoisson, 2.) == 0.14652511110987343 +*** No errors detected + +*/ diff --git a/test/test_policy.cpp b/test/test_policy.cpp new file mode 100644 index 000000000..e0410ea1a --- /dev/null +++ b/test/test_policy.cpp @@ -0,0 +1,153 @@ + +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include // for test_main + +template +bool check_same(const P1&, const P2&) +{ + if(!boost::is_same::value) + { + std::cout << "P1 = " << typeid(P1).name() << std::endl; + std::cout << "P2 = " << typeid(P2).name() << std::endl; + } + return boost::is_same::value; +} + + +int test_main(int, char* []) +{ + using namespace boost::math::policies; + using namespace boost; + BOOST_CHECK(is_domain_error >::value); + BOOST_CHECK(0 == is_domain_error >::value); + BOOST_CHECK(is_pole_error >::value); + BOOST_CHECK(0 == is_pole_error >::value); + BOOST_CHECK(is_digits10 >::value); + BOOST_CHECK(0 == is_digits10 >::value); + + BOOST_CHECK((is_same::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same::evaluation_error_type, evaluation_error >::value)); + + BOOST_CHECK((is_same >::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same >::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same >::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same >::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, policy<>::underflow_error_type >::value)); + BOOST_CHECK((is_same >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, policy<>::underflow_error_type >::value)); + BOOST_CHECK((is_same >::denorm_error_type, policy<>::denorm_error_type >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, policy<>::underflow_error_type >::value)); + BOOST_CHECK((is_same >::denorm_error_type, policy<>::denorm_error_type >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, policy<>::evaluation_error_type >::value)); + BOOST_CHECK((is_same >::precision_type, digits2<20> >::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, policy<>::underflow_error_type >::value)); + BOOST_CHECK((is_same >::denorm_error_type, policy<>::denorm_error_type >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, policy<>::evaluation_error_type >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type >::value)); + BOOST_CHECK((is_same >::promote_float_type, promote_float >::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, policy<>::underflow_error_type >::value)); + BOOST_CHECK((is_same >::denorm_error_type, policy<>::denorm_error_type >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, policy<>::evaluation_error_type >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type >::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, promote_double >::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same >::domain_error_type, policy<>::domain_error_type >::value)); + BOOST_CHECK((is_same >::pole_error_type, policy<>::pole_error_type >::value)); + BOOST_CHECK((is_same >::overflow_error_type, policy<>::overflow_error_type >::value)); + BOOST_CHECK((is_same >::underflow_error_type, policy<>::underflow_error_type >::value)); + BOOST_CHECK((is_same >::denorm_error_type, policy<>::denorm_error_type >::value)); + BOOST_CHECK((is_same >::evaluation_error_type, policy<>::evaluation_error_type >::value)); + BOOST_CHECK((is_same >::precision_type, policy<>::precision_type >::value)); + BOOST_CHECK((is_same >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same >::discrete_quantile_type, discrete_quantile >::value)); + + return 0; +} // int test_main(int, char* []) + + + diff --git a/test/test_policy_2.cpp b/test/test_policy_2.cpp new file mode 100644 index 000000000..b51a2d4e8 --- /dev/null +++ b/test/test_policy_2.cpp @@ -0,0 +1,109 @@ + +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include // for test_main + +template +bool check_same(const P1&, const P2&) +{ + if(!boost::is_same::value) + { + std::cout << "P1 = " << typeid(P1).name() << std::endl; + std::cout << "P2 = " << typeid(P2).name() << std::endl; + } + return boost::is_same::value; +} + + +int test_main(int, char* []) +{ + using namespace boost::math::policies; + using namespace boost; + + BOOST_CHECK((is_same, overflow_error >::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same, overflow_error >::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same, overflow_error >::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same, overflow_error >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same, overflow_error >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same, overflow_error >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same, overflow_error >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same, overflow_error >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same, overflow_error >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same, overflow_error >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same, domain_error >::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same, domain_error >::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same, domain_error >::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same, domain_error >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same, domain_error >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same, domain_error >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same, domain_error >::precision_type, policy<>::precision_type>::value)); + BOOST_CHECK((is_same, domain_error >::promote_float_type, policy<>::promote_float_type>::value)); + BOOST_CHECK((is_same, domain_error >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same, domain_error >::discrete_quantile_type, policy<>::discrete_quantile_type>::value)); + + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::precision_type, digits2<20> >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::promote_float_type, promote_float >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error >::discrete_quantile_type, discrete_quantile >::value)); + + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::precision_type, digits2<20> >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::promote_float_type, promote_float >::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same, promote_float, discrete_quantile, denorm_error, domain_error > >::type::discrete_quantile_type, discrete_quantile >::value)); + + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::domain_error_type, domain_error >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::pole_error_type, pole_error >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::overflow_error_type, overflow_error >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::underflow_error_type, underflow_error >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::denorm_error_type, denorm_error >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::evaluation_error_type, evaluation_error >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::precision_type, digits2<20> >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::promote_float_type, promote_float >::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::promote_double_type, policy<>::promote_double_type>::value)); + BOOST_CHECK((is_same, digits2<20>, promote_float, discrete_quantile, denorm_error, domain_error >::type::discrete_quantile_type, discrete_quantile >::value)); + + BOOST_CHECK(check_same(make_policy(), policy<>())); + BOOST_CHECK(check_same(make_policy(denorm_error()), normalise > >::type())); + BOOST_CHECK(check_same(make_policy(digits2<20>()), normalise > >::type())); + BOOST_CHECK(check_same(make_policy(promote_float()), normalise > >::type())); + BOOST_CHECK(check_same(make_policy(domain_error()), normalise > >::type())); + BOOST_CHECK(check_same(make_policy(pole_error()), normalise > >::type())); + + BOOST_CHECK(check_same(make_policy(domain_error()), policy >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error()), policy, pole_error >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error()), policy, pole_error, overflow_error >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error()), policy, pole_error, overflow_error, underflow_error >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error()), policy, pole_error, overflow_error, underflow_error, denorm_error >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error(), evaluation_error()), policy, pole_error, overflow_error, underflow_error, denorm_error, evaluation_error >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error(), evaluation_error(), digits2<10>()), policy, pole_error, overflow_error, underflow_error, denorm_error, evaluation_error, digits2<10> >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error(), evaluation_error(), digits10<5>()), policy, pole_error, overflow_error, underflow_error, denorm_error, evaluation_error, digits2<19> >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error(), evaluation_error(), digits2<10>(), promote_float()), policy, pole_error, overflow_error, underflow_error, denorm_error, evaluation_error, digits2<10>, promote_float >())); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error(), evaluation_error(), digits2<10>(), promote_float(), promote_double()), policy, pole_error, overflow_error, underflow_error, denorm_error, evaluation_error, digits2<10>, promote_float, promote_double >())); + BOOST_CHECK(check_same(make_policy(domain_error(), pole_error(), overflow_error(), underflow_error(), denorm_error(), evaluation_error(), digits2<10>(), promote_float(), promote_double(), discrete_quantile()), policy, pole_error, overflow_error, underflow_error, denorm_error, evaluation_error, digits2<10>, promote_float, promote_double, discrete_quantile >())); +#endif + return 0; +} // int test_main(int, char* []) + + + diff --git a/test/test_policy_sf.cpp b/test/test_policy_sf.cpp new file mode 100644 index 000000000..7c19749d5 --- /dev/null +++ b/test/test_policy_sf.cpp @@ -0,0 +1,138 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file provides very basic sanity checks for the special functions +// declared with BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS, basically we +// just want to make sure that the inline forwarding functions do +// actually forward to the right function!! +// + +namespace test{ + + typedef boost::math::policies::policy<> policy; + + BOOST_MATH_DECLARE_SPECIAL_FUNCTIONS(policy); + +} + +#define TEST_POLICY_SF(call)\ + BOOST_CHECK_EQUAL(boost::math::call , test::call) + +// +// Prevent some macro conflicts just in case: +// +#undef fpclassify +#undef isnormal +#undef isinf +#undef isfinite +#undef isnan + +int test_main(int, char* []) +{ + int i; + TEST_POLICY_SF(tgamma(3.0)); + TEST_POLICY_SF(tgamma1pm1(0.25)); + TEST_POLICY_SF(lgamma(50.0)); + TEST_POLICY_SF(lgamma(50.0, &i)); + TEST_POLICY_SF(digamma(12.0)); + TEST_POLICY_SF(tgamma_ratio(12.0, 13.5)); + TEST_POLICY_SF(tgamma_delta_ratio(100.0, 0.25)); + TEST_POLICY_SF(factorial(8)); + TEST_POLICY_SF(unchecked_factorial(3)); + TEST_POLICY_SF(double_factorial(5)); + TEST_POLICY_SF(rising_factorial(20.5, 5)); + TEST_POLICY_SF(falling_factorial(10.2, 7)); + TEST_POLICY_SF(tgamma(12.0, 13.0)); + TEST_POLICY_SF(tgamma_lower(12.0, 13.0)); + TEST_POLICY_SF(gamma_p(12.0, 13.0)); + TEST_POLICY_SF(gamma_q(12.0, 15.0)); + TEST_POLICY_SF(gamma_p_inv(12.0, 0.25)); + TEST_POLICY_SF(gamma_q_inv(15.0, 0.25)); + TEST_POLICY_SF(gamma_p_inva(12.0, 0.25)); + TEST_POLICY_SF(gamma_q_inva(12.0, 0.25)); + TEST_POLICY_SF(erf(2.5)); + TEST_POLICY_SF(erfc(2.5)); + TEST_POLICY_SF(erf_inv(0.25)); + TEST_POLICY_SF(erfc_inv(0.25)); + TEST_POLICY_SF(beta(12.0, 15.0)); + TEST_POLICY_SF(beta(12.0, 15.0, 0.25)); + TEST_POLICY_SF(betac(12.0, 15.0, 0.25)); + TEST_POLICY_SF(ibeta(12.0, 15.0, 0.25)); + TEST_POLICY_SF(ibetac(12.0, 15.0, 0.25)); + TEST_POLICY_SF(ibeta_inv(12.0, 15.0, 0.25)); + TEST_POLICY_SF(ibetac_inv(12.0, 15.0, 0.25)); + TEST_POLICY_SF(ibeta_inva(12.0, 0.75, 0.25)); + TEST_POLICY_SF(ibetac_inva(12.0, 0.75, 0.25)); + TEST_POLICY_SF(ibeta_invb(12.0, 0.75, 0.25)); + TEST_POLICY_SF(ibetac_invb(12.0, 0.75, 0.25)); + TEST_POLICY_SF(gamma_p_derivative(12.0, 15.0)); + TEST_POLICY_SF(ibeta_derivative(12.0, 15.75, 0.25)); + TEST_POLICY_SF(fpclassify(12.0)); + TEST_POLICY_SF(isfinite(12.0)); + TEST_POLICY_SF(isnormal(12.0)); + TEST_POLICY_SF(isnan(12.0)); + TEST_POLICY_SF(isinf(12.0)); + TEST_POLICY_SF(log1p(0.0025)); + TEST_POLICY_SF(expm1(0.0025)); + TEST_POLICY_SF(cbrt(30.0)); + TEST_POLICY_SF(sqrt1pm1(0.0025)); + TEST_POLICY_SF(powm1(1.0025, 12.0)); + TEST_POLICY_SF(legendre_p(5, 0.75)); + TEST_POLICY_SF(legendre_p(7, 3, 0.75)); + TEST_POLICY_SF(legendre_q(5, 0.75)); + TEST_POLICY_SF(legendre_next(2, 0.25, 12.0, 5.0)); + TEST_POLICY_SF(legendre_next(2, 2, 0.25, 12.0, 5.0)); + TEST_POLICY_SF(laguerre(5, 12.2)); + TEST_POLICY_SF(laguerre(7, 3, 5.0)); + TEST_POLICY_SF(laguerre_next(2, 5.0, 12.0, 5.0)); + TEST_POLICY_SF(laguerre_next(5, 3, 5.0, 20.0, 10.0)); + TEST_POLICY_SF(hermite(1, 2.0)); + TEST_POLICY_SF(hermite_next(2, 2.0, 3.0, 2.0)); + TEST_POLICY_SF(spherical_harmonic_r(5, 4, 0.75, 0.25)); + TEST_POLICY_SF(spherical_harmonic_i(5, 4, 0.75, 0.25)); + TEST_POLICY_SF(ellint_1(0.25)); + TEST_POLICY_SF(ellint_1(0.25, 0.75)); + TEST_POLICY_SF(ellint_2(0.25)); + TEST_POLICY_SF(ellint_2(0.25, 0.75)); + TEST_POLICY_SF(ellint_3(0.25, 0.75)); + TEST_POLICY_SF(ellint_3(0.25, 0.125, 0.75)); + TEST_POLICY_SF(ellint_rc(3.0, 5.0)); + TEST_POLICY_SF(ellint_rd(2.0, 3.0, 4.0)); + TEST_POLICY_SF(ellint_rf(2.0, 3.0, 4.0)); + TEST_POLICY_SF(ellint_rj(2.0, 3.0, 5.0, 0.25)); + TEST_POLICY_SF(hypot(5.0, 3.0)); + TEST_POLICY_SF(sinc_pi(3.0)); + TEST_POLICY_SF(sinhc_pi(2.0)); + TEST_POLICY_SF(asinh(12.0)); + TEST_POLICY_SF(acosh(5.0)); + TEST_POLICY_SF(atanh(0.75)); + TEST_POLICY_SF(sin_pi(5.0)); + TEST_POLICY_SF(cos_pi(6.0)); + TEST_POLICY_SF(cyl_neumann(2.0, 5.0)); + TEST_POLICY_SF(cyl_neumann(2, 5.0)); + TEST_POLICY_SF(cyl_bessel_j(2.0, 5.0)); + TEST_POLICY_SF(cyl_bessel_j(2, 5.0)); + TEST_POLICY_SF(cyl_bessel_i(3.0, 5.0)); + TEST_POLICY_SF(cyl_bessel_i(3, 5.0)); + TEST_POLICY_SF(cyl_bessel_k(3.0, 5.0)); + TEST_POLICY_SF(cyl_bessel_k(3, 5.0)); + TEST_POLICY_SF(sph_bessel(3, 5.0)); + TEST_POLICY_SF(sph_bessel(3, 5)); + TEST_POLICY_SF(sph_neumann(3, 5.0)); + TEST_POLICY_SF(sph_neumann(3, 5)); + return 0; +} + + + + diff --git a/test/test_rational_instances/test_rational.hpp b/test/test_rational_instances/test_rational.hpp new file mode 100644 index 000000000..30820e726 --- /dev/null +++ b/test/test_rational_instances/test_rational.hpp @@ -0,0 +1,5480 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#ifndef BOOST_MATH_TEST_RATIONAL_HPP +#define BOOST_MATH_TEST_RATIONAL_HPP + +#include +#include +#include +#include +#include + +template +void do_test_spots1(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Everything past this point is generated by the program + // ../tools/generate_rational_test.cpp + // + + // + // Polynomials of order 0 + // + static const U n1c[1] = { 2 }; + static const boost::array n1a = { 2 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(0.125), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(0.25), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(0.75), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(6.5), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(10247.25), 1), + static_cast(0.2e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(0.125)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(0.25)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(0.75)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(6.5)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1c, static_cast(10247.25)), + static_cast(0.2e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1a, static_cast(0.125)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1a, static_cast(0.25)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1a, static_cast(0.75)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1a, static_cast(6.5)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n1a, static_cast(10247.25)), + static_cast(0.2e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.125), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.25), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.75), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(6.5f), 1), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(10247.25f), 1), + static_cast(0.2e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.125)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.25)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.75)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(6.5f)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1c, static_cast(10247.25f)), + static_cast(0.2e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1a, static_cast(0.125)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1a, static_cast(0.25)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1a, static_cast(0.75)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1a, static_cast(6.5f)), + static_cast(0.2e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n1a, static_cast(10247.25f)), + static_cast(0.2e1L), + tolerance); + + // + // Rational functions of order 0 + // + static const U d1c[1] = { 3 }; + static const boost::array d1a = { 3 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.125), 1), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.25), 1), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.75), 1), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(1.0f - 1.0f/64.0f), 1), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(6.5f), 1), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(10247.25f), 1), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.125)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.25)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.75)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(6.5f)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1c, d1c, static_cast(10247.25f)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1a, d1a, static_cast(0.125)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1a, d1a, static_cast(0.25)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1a, d1a, static_cast(0.75)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1a, d1a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1a, d1a, static_cast(6.5f)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n1a, d1a, static_cast(10247.25f)), + static_cast(0.6666666666666666666666666666666666666667e0L), + tolerance); + + // + // Polynomials of order 1 + // + static const U n2c[2] = { 3, 1 }; + static const boost::array n2a = { 3, 1 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(0.125), 2), + static_cast(0.3125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(0.25), 2), + static_cast(0.325e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(0.75), 2), + static_cast(0.375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f), 2), + static_cast(0.3984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(6.5), 2), + static_cast(0.95e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(10247.25), 2), + static_cast(0.1025025e5L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(0.125)), + static_cast(0.3125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(0.25)), + static_cast(0.325e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(0.75)), + static_cast(0.375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(6.5)), + static_cast(0.95e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2c, static_cast(10247.25)), + static_cast(0.1025025e5L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2a, static_cast(0.125)), + static_cast(0.3125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2a, static_cast(0.25)), + static_cast(0.325e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2a, static_cast(0.75)), + static_cast(0.375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2a, static_cast(6.5)), + static_cast(0.95e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n2a, static_cast(10247.25)), + static_cast(0.1025025e5L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.125), 2), + static_cast(0.3015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.25), 2), + static_cast(0.30625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.75), 2), + static_cast(0.35625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f), 2), + static_cast(0.3968994140625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(6.5f), 2), + static_cast(0.4525e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(10247.25f), 2), + static_cast(0.1050061355625e9L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.125)), + static_cast(0.3015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.25)), + static_cast(0.30625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.75)), + static_cast(0.35625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3968994140625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(6.5f)), + static_cast(0.4525e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2c, static_cast(10247.25f)), + static_cast(0.1050061355625e9L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2a, static_cast(0.125)), + static_cast(0.3015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2a, static_cast(0.25)), + static_cast(0.30625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2a, static_cast(0.75)), + static_cast(0.35625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3968994140625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2a, static_cast(6.5f)), + static_cast(0.4525e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n2a, static_cast(10247.25f)), + static_cast(0.1050061355625e9L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.125), 2), + static_cast(0.3125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.25), 2), + static_cast(0.325e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.75), 2), + static_cast(0.375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f), 2), + static_cast(0.3984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(6.5f), 2), + static_cast(0.95e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(10247.25f), 2), + static_cast(0.1025025e5L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.125)), + static_cast(0.3125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.25)), + static_cast(0.325e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.75)), + static_cast(0.375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(6.5f)), + static_cast(0.95e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(10247.25f)), + static_cast(0.1025025e5L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(0.125)), + static_cast(0.3125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(0.25)), + static_cast(0.325e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(0.75)), + static_cast(0.375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(6.5f)), + static_cast(0.95e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(10247.25f)), + static_cast(0.1025025e5L), + tolerance); + + // + // Rational functions of order 1 + // + static const U d2c[2] = { 5, 9 }; + static const boost::array d2a = { 5, 9 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.125), 2), + static_cast(0.5102040816326530612244897959183673469388e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.25), 2), + static_cast(0.4482758620689655172413793103448275862069e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.75), 2), + static_cast(0.3191489361702127659574468085106382978723e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(1.0f - 1.0f/64.0f), 2), + static_cast(0.2874859075535512965050732807215332581736e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(6.5f), 2), + static_cast(0.1496062992125984251968503937007874015748e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(10247.25f), 2), + static_cast(0.1111376148281068304596377002122405609873e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.125)), + static_cast(0.5102040816326530612244897959183673469388e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.25)), + static_cast(0.4482758620689655172413793103448275862069e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.75)), + static_cast(0.3191489361702127659574468085106382978723e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.2874859075535512965050732807215332581736e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(6.5f)), + static_cast(0.1496062992125984251968503937007874015748e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2c, d2c, static_cast(10247.25f)), + static_cast(0.1111376148281068304596377002122405609873e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2a, d2a, static_cast(0.125)), + static_cast(0.5102040816326530612244897959183673469388e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2a, d2a, static_cast(0.25)), + static_cast(0.4482758620689655172413793103448275862069e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2a, d2a, static_cast(0.75)), + static_cast(0.3191489361702127659574468085106382978723e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2a, d2a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.2874859075535512965050732807215332581736e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2a, d2a, static_cast(6.5f)), + static_cast(0.1496062992125984251968503937007874015748e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n2a, d2a, static_cast(10247.25f)), + static_cast(0.1111376148281068304596377002122405609873e0L), + tolerance); +} + +template +void do_test_spots2(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 2 + // + static const U n3c[3] = { 10, 6, 11 }; + static const boost::array n3a = { 10, 6, 11 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(0.125), 3), + static_cast(0.10921875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(0.25), 3), + static_cast(0.121875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(0.75), 3), + static_cast(0.206875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f), 3), + static_cast(0.26565185546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(6.5), 3), + static_cast(0.51375e3L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(10247.25), 3), + static_cast(0.11551289516875e10L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(0.125)), + static_cast(0.10921875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(0.25)), + static_cast(0.121875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(0.75)), + static_cast(0.206875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.26565185546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(6.5)), + static_cast(0.51375e3L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3c, static_cast(10247.25)), + static_cast(0.11551289516875e10L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3a, static_cast(0.125)), + static_cast(0.10921875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3a, static_cast(0.25)), + static_cast(0.121875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3a, static_cast(0.75)), + static_cast(0.206875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.26565185546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3a, static_cast(6.5)), + static_cast(0.51375e3L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n3a, static_cast(10247.25)), + static_cast(0.11551289516875e10L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.125), 3), + static_cast(0.10096435546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.25), 3), + static_cast(0.1041796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.75), 3), + static_cast(0.1685546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f), 3), + static_cast(0.26142410933971405029296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(6.5f), 3), + static_cast(0.198991875e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(10247.25f), 3), + static_cast(0.12128916726310335635546875e18L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.125)), + static_cast(0.10096435546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.25)), + static_cast(0.1041796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.75)), + static_cast(0.1685546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.26142410933971405029296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(6.5f)), + static_cast(0.198991875e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3c, static_cast(10247.25f)), + static_cast(0.12128916726310335635546875e18L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3a, static_cast(0.125)), + static_cast(0.10096435546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3a, static_cast(0.25)), + static_cast(0.1041796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3a, static_cast(0.75)), + static_cast(0.1685546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.26142410933971405029296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3a, static_cast(6.5f)), + static_cast(0.198991875e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n3a, static_cast(10247.25f)), + static_cast(0.12128916726310335635546875e18L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.125), 3), + static_cast(0.10771484375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.25), 3), + static_cast(0.11671875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.75), 3), + static_cast(0.19140625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f), 3), + static_cast(0.26398639678955078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(6.5f), 3), + static_cast(0.3069875e4L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(10247.25f), 3), + static_cast(0.11836265072405359375e14L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.125)), + static_cast(0.10771484375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.25)), + static_cast(0.11671875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.75)), + static_cast(0.19140625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.26398639678955078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(6.5f)), + static_cast(0.3069875e4L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(10247.25f)), + static_cast(0.11836265072405359375e14L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(0.125)), + static_cast(0.10771484375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(0.25)), + static_cast(0.11671875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(0.75)), + static_cast(0.19140625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.26398639678955078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(6.5f)), + static_cast(0.3069875e4L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(10247.25f)), + static_cast(0.11836265072405359375e14L), + tolerance); + + // + // Rational functions of order 2 + // + static const U d3c[3] = { 3, 4, 10 }; + static const boost::array d3a = { 3, 4, 10 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.125), 3), + static_cast(0.2987179487179487179487179487179487179487e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.25), 3), + static_cast(0.2635135135135135135135135135135135135135e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.75), 3), + static_cast(0.1779569892473118279569892473118279569892e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(1.0f - 1.0f/64.0f), 3), + static_cast(0.1597671277126831703520981998649164537633e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(6.5f), 3), + static_cast(0.1137873754152823920265780730897009966777e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(10247.25f), 3), + static_cast(0.1100015619716026431429617996316152069115e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.125)), + static_cast(0.2987179487179487179487179487179487179487e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.25)), + static_cast(0.2635135135135135135135135135135135135135e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.75)), + static_cast(0.1779569892473118279569892473118279569892e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1597671277126831703520981998649164537633e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(6.5f)), + static_cast(0.1137873754152823920265780730897009966777e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3c, d3c, static_cast(10247.25f)), + static_cast(0.1100015619716026431429617996316152069115e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3a, d3a, static_cast(0.125)), + static_cast(0.2987179487179487179487179487179487179487e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3a, d3a, static_cast(0.25)), + static_cast(0.2635135135135135135135135135135135135135e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3a, d3a, static_cast(0.75)), + static_cast(0.1779569892473118279569892473118279569892e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3a, d3a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1597671277126831703520981998649164537633e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3a, d3a, static_cast(6.5f)), + static_cast(0.1137873754152823920265780730897009966777e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n3a, d3a, static_cast(10247.25f)), + static_cast(0.1100015619716026431429617996316152069115e1L), + tolerance); +} + +template +void do_test_spots3(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 3 + // + static const U n4c[4] = { 1, 4, 9, 11 }; + static const boost::array n4a = { 1, 4, 9, 11 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(0.125), 4), + static_cast(0.1662109375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(0.25), 4), + static_cast(0.2734375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(0.75), 4), + static_cast(0.13703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f), 4), + static_cast(0.24150836944580078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(6.5), 4), + static_cast(0.3428125e4L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(10247.25), 4), + static_cast(0.11837210107094921875e14L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(0.125)), + static_cast(0.1662109375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(0.25)), + static_cast(0.2734375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(0.75)), + static_cast(0.13703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.24150836944580078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(6.5)), + static_cast(0.3428125e4L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4c, static_cast(10247.25)), + static_cast(0.11837210107094921875e14L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4a, static_cast(0.125)), + static_cast(0.1662109375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4a, static_cast(0.25)), + static_cast(0.2734375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4a, static_cast(0.75)), + static_cast(0.13703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.24150836944580078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4a, static_cast(6.5)), + static_cast(0.3428125e4L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n4a, static_cast(10247.25)), + static_cast(0.11837210107094921875e14L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.125), 4), + static_cast(0.1064739227294921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.25), 4), + static_cast(0.1287841796875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.75), 4), + static_cast(0.8055419921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f), 4), + static_cast(0.23334727106775972060859203338623046875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(6.5f), 4), + static_cast(0.845843359375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(10247.25f), 4), + static_cast(0.12736106409103529349764202508544921875e26L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.125)), + static_cast(0.1064739227294921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.25)), + static_cast(0.1287841796875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.75)), + static_cast(0.8055419921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.23334727106775972060859203338623046875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(6.5f)), + static_cast(0.845843359375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4c, static_cast(10247.25f)), + static_cast(0.12736106409103529349764202508544921875e26L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4a, static_cast(0.125)), + static_cast(0.1064739227294921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4a, static_cast(0.25)), + static_cast(0.1287841796875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4a, static_cast(0.75)), + static_cast(0.8055419921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.23334727106775972060859203338623046875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4a, static_cast(6.5f)), + static_cast(0.845843359375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n4a, static_cast(10247.25f)), + static_cast(0.12736106409103529349764202508544921875e26L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.125), 4), + static_cast(0.1517913818359375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.25), 4), + static_cast(0.21513671875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.75), 4), + static_cast(0.104072265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f), 4), + static_cast(0.23689246584661304950714111328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(6.5f), 4), + static_cast(0.13013059375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(10247.25f), 4), + static_cast(0.12428804224649080826343115234375e22L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.125)), + static_cast(0.1517913818359375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.25)), + static_cast(0.21513671875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.75)), + static_cast(0.104072265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.23689246584661304950714111328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(6.5f)), + static_cast(0.13013059375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(10247.25f)), + static_cast(0.12428804224649080826343115234375e22L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(0.125)), + static_cast(0.1517913818359375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(0.25)), + static_cast(0.21513671875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(0.75)), + static_cast(0.104072265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.23689246584661304950714111328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(6.5f)), + static_cast(0.13013059375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(10247.25f)), + static_cast(0.12428804224649080826343115234375e22L), + tolerance); + + // + // Rational functions of order 3 + // + static const U d4c[4] = { 10, 2, 5, 4 }; + static const boost::array d4a = { 10, 2, 5, 4 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.125), 4), + static_cast(0.1608087679516250944822373393801965230537e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.25), 4), + static_cast(0.2514367816091954022988505747126436781609e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.75), 4), + static_cast(0.8564453125e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(1.0f - 1.0f/64.0f), 4), + static_cast(0.1170714951947222939292918160495461743806e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(6.5f), 4), + static_cast(0.2572219095854436315888201087975989495404e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(10247.25f), 4), + static_cast(0.2749884125808399380227005558292823797886e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.125)), + static_cast(0.1608087679516250944822373393801965230537e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.25)), + static_cast(0.2514367816091954022988505747126436781609e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.75)), + static_cast(0.8564453125e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1170714951947222939292918160495461743806e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(6.5f)), + static_cast(0.2572219095854436315888201087975989495404e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4c, d4c, static_cast(10247.25f)), + static_cast(0.2749884125808399380227005558292823797886e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4a, d4a, static_cast(0.125)), + static_cast(0.1608087679516250944822373393801965230537e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4a, d4a, static_cast(0.25)), + static_cast(0.2514367816091954022988505747126436781609e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4a, d4a, static_cast(0.75)), + static_cast(0.8564453125e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4a, d4a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1170714951947222939292918160495461743806e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4a, d4a, static_cast(6.5f)), + static_cast(0.2572219095854436315888201087975989495404e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n4a, d4a, static_cast(10247.25f)), + static_cast(0.2749884125808399380227005558292823797886e1L), + tolerance); +} + +template +void do_test_spots4(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 4 + // + static const U n5c[5] = { 10, 10, 4, 11, 9 }; + static const boost::array n5a = { 10, 10, 4, 11, 9 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(0.125), 5), + static_cast(0.11336181640625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(0.25), 5), + static_cast(0.1295703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(0.75), 5), + static_cast(0.2723828125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f), 5), + static_cast(0.42662663042545318603515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(6.5), 5), + static_cast(0.193304375e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(10247.25), 5), + static_cast(0.9924842756673782995703125e17L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(0.125)), + static_cast(0.11336181640625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(0.25)), + static_cast(0.1295703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(0.75)), + static_cast(0.2723828125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.42662663042545318603515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(6.5)), + static_cast(0.193304375e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5c, static_cast(10247.25)), + static_cast(0.9924842756673782995703125e17L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5a, static_cast(0.125)), + static_cast(0.11336181640625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5a, static_cast(0.25)), + static_cast(0.1295703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5a, static_cast(0.75)), + static_cast(0.2723828125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.42662663042545318603515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5a, static_cast(6.5)), + static_cast(0.193304375e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n5a, static_cast(10247.25)), + static_cast(0.9924842756673782995703125e17L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.125), 5), + static_cast(0.10157269060611724853515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.25), 5), + static_cast(0.106434478759765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.75), 5), + static_cast(0.197494049072265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f), 5), + static_cast(0.4138858164296656028113829961512237787247e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(6.5f), 5), + static_cast(0.2951521370703125e8L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(10247.25f), 5), + static_cast(0.1094211231602999407223950000397888253311e34L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.125)), + static_cast(0.10157269060611724853515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.25)), + static_cast(0.106434478759765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.75)), + static_cast(0.197494049072265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4138858164296656028113829961512237787247e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(6.5f)), + static_cast(0.2951521370703125e8L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5c, static_cast(10247.25f)), + static_cast(0.1094211231602999407223950000397888253311e34L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5a, static_cast(0.125)), + static_cast(0.10157269060611724853515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5a, static_cast(0.25)), + static_cast(0.106434478759765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5a, static_cast(0.75)), + static_cast(0.197494049072265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4138858164296656028113829961512237787247e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5a, static_cast(6.5f)), + static_cast(0.2951521370703125e8L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n5a, static_cast(10247.25f)), + static_cast(0.1094211231602999407223950000397888253311e34L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.125), 5), + static_cast(0.11258152484893798828125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.25), 5), + static_cast(0.1257379150390625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.75), 5), + static_cast(0.2299920654296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f), 5), + static_cast(0.4188681309761682314274366945028305053711e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(6.5f), 5), + static_cast(0.45408105703125e7L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(10247.25f), 5), + static_cast(0.106780963829612765105169679718983215332e30L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.125)), + static_cast(0.11258152484893798828125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.25)), + static_cast(0.1257379150390625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.75)), + static_cast(0.2299920654296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4188681309761682314274366945028305053711e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(6.5f)), + static_cast(0.45408105703125e7L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(10247.25f)), + static_cast(0.106780963829612765105169679718983215332e30L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(0.125)), + static_cast(0.11258152484893798828125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(0.25)), + static_cast(0.1257379150390625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(0.75)), + static_cast(0.2299920654296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4188681309761682314274366945028305053711e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(6.5f)), + static_cast(0.45408105703125e7L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(10247.25f)), + static_cast(0.106780963829612765105169679718983215332e30L), + tolerance); + + // + // Rational functions of order 4 + // + static const U d5c[5] = { 6, 9, 6, 2, 5 }; + static const boost::array d5a = { 6, 9, 6, 2, 5 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.125), 5), + static_cast(0.1569265605461489066882963263374902835513e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.25), 5), + static_cast(0.1493471409275101305718144979738856371004e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.75), 5), + static_cast(0.1468309117708991366603495472731101284481e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(1.0f - 1.0f/64.0f), 5), + static_cast(0.1564121691159921277310988862398683772017e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(6.5f), 5), + static_cast(0.1973991741181125982091000185089449263153e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(10247.25f), 5), + static_cast(0.1800144410401676792233921448870747965702e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.125)), + static_cast(0.1569265605461489066882963263374902835513e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.25)), + static_cast(0.1493471409275101305718144979738856371004e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.75)), + static_cast(0.1468309117708991366603495472731101284481e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1564121691159921277310988862398683772017e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(6.5f)), + static_cast(0.1973991741181125982091000185089449263153e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5c, d5c, static_cast(10247.25f)), + static_cast(0.1800144410401676792233921448870747965702e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5a, d5a, static_cast(0.125)), + static_cast(0.1569265605461489066882963263374902835513e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5a, d5a, static_cast(0.25)), + static_cast(0.1493471409275101305718144979738856371004e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5a, d5a, static_cast(0.75)), + static_cast(0.1468309117708991366603495472731101284481e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5a, d5a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1564121691159921277310988862398683772017e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5a, d5a, static_cast(6.5f)), + static_cast(0.1973991741181125982091000185089449263153e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n5a, d5a, static_cast(10247.25f)), + static_cast(0.1800144410401676792233921448870747965702e1L), + tolerance); +} + +template +void do_test_spots5(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 5 + // + static const U n6c[6] = { 6, 8, 12, 5, 7, 5 }; + static const boost::array n6a = { 6, 8, 12, 5, 7, 5 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(0.125), 6), + static_cast(0.7199127197265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(0.25), 6), + static_cast(0.88603515625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(0.75), 6), + static_cast(0.242607421875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f), 6), + static_cast(0.41466238017193973064422607421875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(6.5), 6), + static_cast(0.7244809375e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(10247.25), 6), + static_cast(0.5650228315695522094919501953125e21L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(0.125)), + static_cast(0.7199127197265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(0.25)), + static_cast(0.88603515625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(0.75)), + static_cast(0.242607421875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.41466238017193973064422607421875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(6.5)), + static_cast(0.7244809375e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6c, static_cast(10247.25)), + static_cast(0.5650228315695522094919501953125e21L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6a, static_cast(0.125)), + static_cast(0.7199127197265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6a, static_cast(0.25)), + static_cast(0.88603515625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6a, static_cast(0.75)), + static_cast(0.242607421875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.41466238017193973064422607421875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6a, static_cast(6.5)), + static_cast(0.7244809375e5L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n6a, static_cast(10247.25)), + static_cast(0.5650228315695522094919501953125e21L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.125), 6), + static_cast(0.6127949182875454425811767578125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.25), 6), + static_cast(0.654820728302001953125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.75), 6), + static_cast(0.1616912555694580078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f), 6), + static_cast(0.4001137167344577683526091194110563264985e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(6.5f), 6), + static_cast(0.6958411633369140625e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.125)), + static_cast(0.6127949182875454425811767578125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.25)), + static_cast(0.654820728302001953125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.75)), + static_cast(0.1616912555694580078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4001137167344577683526091194110563264985e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6c, static_cast(6.5f)), + static_cast(0.6958411633369140625e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6a, static_cast(0.125)), + static_cast(0.6127949182875454425811767578125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6a, static_cast(0.25)), + static_cast(0.654820728302001953125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6a, static_cast(0.75)), + static_cast(0.1616912555694580078125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4001137167344577683526091194110563264985e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n6a, static_cast(6.5f)), + static_cast(0.6958411633369140625e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.125), 6), + static_cast(0.7023593463003635406494140625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.25), 6), + static_cast(0.8192829132080078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.75), 6), + static_cast(0.19558834075927734375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f), 6), + static_cast(0.4055123471588142408661425974969461094588e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(6.5f), 6), + static_cast(0.107052491744140625e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(10247.25f), 6), + static_cast(0.6229253367792843599034768117351560896265e37L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.125)), + static_cast(0.7023593463003635406494140625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.25)), + static_cast(0.8192829132080078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.75)), + static_cast(0.19558834075927734375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4055123471588142408661425974969461094588e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(6.5f)), + static_cast(0.107052491744140625e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(10247.25f)), + static_cast(0.6229253367792843599034768117351560896265e37L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(0.125)), + static_cast(0.7023593463003635406494140625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(0.25)), + static_cast(0.8192829132080078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(0.75)), + static_cast(0.19558834075927734375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4055123471588142408661425974969461094588e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(6.5f)), + static_cast(0.107052491744140625e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(10247.25f)), + static_cast(0.6229253367792843599034768117351560896265e37L), + tolerance); + + // + // Rational functions of order 5 + // + static const U d6c[6] = { 5, 11, 7, 12, 10, 5 }; + static const boost::array d6a = { 5, 11, 7, 12, 10, 5 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.125), 6), + static_cast(0.1105787665293227020667219792530925829572e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.25), 6), + static_cast(0.1052430112515949425820670455863588910799e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.75), 6), + static_cast(0.9120378868534087154447666948125848966555e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(1.0f - 1.0f/64.0f), 6), + static_cast(0.8626539746676637108178973543021882567334e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(6.5f), 6), + static_cast(0.9109197333022141385660730837432462113756e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(10247.25f), 6), + static_cast(0.9999414458034701919327379302959430043671e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.125)), + static_cast(0.1105787665293227020667219792530925829572e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.25)), + static_cast(0.1052430112515949425820670455863588910799e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.75)), + static_cast(0.9120378868534087154447666948125848966555e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8626539746676637108178973543021882567334e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(6.5f)), + static_cast(0.9109197333022141385660730837432462113756e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6c, d6c, static_cast(10247.25f)), + static_cast(0.9999414458034701919327379302959430043671e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6a, d6a, static_cast(0.125)), + static_cast(0.1105787665293227020667219792530925829572e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6a, d6a, static_cast(0.25)), + static_cast(0.1052430112515949425820670455863588910799e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6a, d6a, static_cast(0.75)), + static_cast(0.9120378868534087154447666948125848966555e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6a, d6a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8626539746676637108178973543021882567334e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6a, d6a, static_cast(6.5f)), + static_cast(0.9109197333022141385660730837432462113756e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n6a, d6a, static_cast(10247.25f)), + static_cast(0.9999414458034701919327379302959430043671e0L), + tolerance); +} + +template +void do_test_spots6(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 6 + // + static const U n7c[7] = { 3, 4, 11, 5, 10, 7, 9 }; + static const boost::array n7a = { 3, 4, 11, 5, 10, 7, 9 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(0.125), 7), + static_cast(0.3684329986572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(0.25), 7), + static_cast(0.4813720703125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(0.75), 7), + static_cast(0.20723876953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f), 7), + static_cast(0.46413680258337990380823612213134765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(6.5), 7), + static_cast(0.779707859375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(10247.25), 7), + static_cast(0.10421241651331160693970241510986328125e26L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(0.125)), + static_cast(0.3684329986572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(0.25)), + static_cast(0.4813720703125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(0.75)), + static_cast(0.20723876953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.46413680258337990380823612213134765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(6.5)), + static_cast(0.779707859375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7c, static_cast(10247.25)), + static_cast(0.10421241651331160693970241510986328125e26L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7a, static_cast(0.125)), + static_cast(0.3684329986572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7a, static_cast(0.25)), + static_cast(0.4813720703125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7a, static_cast(0.75)), + static_cast(0.20723876953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.46413680258337990380823612213134765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7a, static_cast(6.5)), + static_cast(0.779707859375e6L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n7a, static_cast(10247.25)), + static_cast(0.10421241651331160693970241510986328125e26L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.125), 7), + static_cast(0.3065205223058001138269901275634765625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.25), 7), + static_cast(0.3294349253177642822265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.75), 7), + static_cast(0.11300772249698638916015625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f), 7), + static_cast(0.4400013192129567626077980251194602528964e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(6.5f), 7), + static_cast(0.52166734985505126953125e11L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.125)), + static_cast(0.3065205223058001138269901275634765625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.25)), + static_cast(0.3294349253177642822265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.75)), + static_cast(0.11300772249698638916015625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4400013192129567626077980251194602528964e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7c, static_cast(6.5f)), + static_cast(0.52166734985505126953125e11L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7a, static_cast(0.125)), + static_cast(0.3065205223058001138269901275634765625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7a, static_cast(0.25)), + static_cast(0.3294349253177642822265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7a, static_cast(0.75)), + static_cast(0.11300772249698638916015625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4400013192129567626077980251194602528964e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n7a, static_cast(6.5f)), + static_cast(0.52166734985505126953125e11L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.125), 7), + static_cast(0.3521641784464009106159210205078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.25), 7), + static_cast(0.41773970127105712890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.75), 7), + static_cast(0.140676963329315185546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f), 7), + static_cast(0.4465092766607814731253821207562770823074e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(6.5f), 7), + static_cast(0.802565153877001953125e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.125)), + static_cast(0.3521641784464009106159210205078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.25)), + static_cast(0.41773970127105712890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.75)), + static_cast(0.140676963329315185546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4465092766607814731253821207562770823074e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(6.5f)), + static_cast(0.802565153877001953125e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(0.125)), + static_cast(0.3521641784464009106159210205078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(0.25)), + static_cast(0.41773970127105712890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(0.75)), + static_cast(0.140676963329315185546875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4465092766607814731253821207562770823074e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(6.5f)), + static_cast(0.802565153877001953125e10L), + tolerance); + // + // Rational functions of order 6 + // + static const U d7c[7] = { 2, 8, 10, 8, 1, 11, 1 }; + static const boost::array d7a = { 2, 8, 10, 8, 1, 11, 1 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.125), 7), + static_cast(0.1161348466465698540596242849979738853664e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.25), 7), + static_cast(0.1010247476558897371522262642824204539632e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.75), 7), + static_cast(0.103079575951134804308491906398377636644e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(1.0f - 1.0f/64.0f), 7), + static_cast(0.1183671559390403425417413542214181025989e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(6.5f), 7), + static_cast(0.3757457624476840396478985178609736319955e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(10247.25f), 7), + static_cast(0.8991031618241406513349732955332873069556e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.125)), + static_cast(0.1161348466465698540596242849979738853664e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.25)), + static_cast(0.1010247476558897371522262642824204539632e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.75)), + static_cast(0.103079575951134804308491906398377636644e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1183671559390403425417413542214181025989e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(6.5f)), + static_cast(0.3757457624476840396478985178609736319955e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7c, d7c, static_cast(10247.25f)), + static_cast(0.8991031618241406513349732955332873069556e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7a, d7a, static_cast(0.125)), + static_cast(0.1161348466465698540596242849979738853664e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7a, d7a, static_cast(0.25)), + static_cast(0.1010247476558897371522262642824204539632e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7a, d7a, static_cast(0.75)), + static_cast(0.103079575951134804308491906398377636644e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7a, d7a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1183671559390403425417413542214181025989e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7a, d7a, static_cast(6.5f)), + static_cast(0.3757457624476840396478985178609736319955e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n7a, d7a, static_cast(10247.25f)), + static_cast(0.8991031618241406513349732955332873069556e1L), + tolerance); +} + +template +void do_test_spots7(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 7 + // + static const U n8c[8] = { 9, 5, 6, 1, 12, 2, 11, 1 }; + static const boost::array n8a = { 9, 5, 6, 1, 12, 2, 11, 1 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(0.125), 8), + static_cast(0.9723736286163330078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(0.25), 8), + static_cast(0.1069219970703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(0.75), 8), + static_cast(0.2290960693359375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f), 8), + static_cast(0.4470947054706607559637632220983505249023e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(6.5), 8), + static_cast(0.13650267734375e7L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(10247.25), 8), + static_cast(0.1187728773094625678513681460864459228516e29L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(0.125)), + static_cast(0.9723736286163330078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(0.25)), + static_cast(0.1069219970703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(0.75)), + static_cast(0.2290960693359375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4470947054706607559637632220983505249023e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(6.5)), + static_cast(0.13650267734375e7L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8c, static_cast(10247.25)), + static_cast(0.1187728773094625678513681460864459228516e29L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8a, static_cast(0.125)), + static_cast(0.9723736286163330078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8a, static_cast(0.25)), + static_cast(0.1069219970703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8a, static_cast(0.75)), + static_cast(0.2290960693359375e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4470947054706607559637632220983505249023e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8a, static_cast(6.5)), + static_cast(0.13650267734375e7L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n8a, static_cast(10247.25)), + static_cast(0.1187728773094625678513681460864459228516e29L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.125), 8), + static_cast(0.9079594375725946520105935633182525634766e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.25), 8), + static_cast(0.93363673128187656402587890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.75), 8), + static_cast(0.155691558457911014556884765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f), 8), + static_cast(0.4258457138999176910226338119632657870077e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(6.5f), 8), + static_cast(0.30319406120433428955078125e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.125)), + static_cast(0.9079594375725946520105935633182525634766e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.25)), + static_cast(0.93363673128187656402587890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.75)), + static_cast(0.155691558457911014556884765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4258457138999176910226338119632657870077e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8c, static_cast(6.5f)), + static_cast(0.30319406120433428955078125e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8a, static_cast(0.125)), + static_cast(0.9079594375725946520105935633182525634766e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8a, static_cast(0.25)), + static_cast(0.93363673128187656402587890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8a, static_cast(0.75)), + static_cast(0.155691558457911014556884765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4258457138999176910226338119632657870077e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n8a, static_cast(6.5f)), + static_cast(0.30319406120433428955078125e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.125), 8), + static_cast(0.9636755005807572160847485065460205078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.25), 8), + static_cast(0.1034546925127506256103515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.75), 8), + static_cast(0.1775887446105480194091796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f), 8), + static_cast(0.4311765982475354321499772058039525455316e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(6.5f), 8), + static_cast(0.466452401928975830078125e11L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.125)), + static_cast(0.9636755005807572160847485065460205078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.25)), + static_cast(0.1034546925127506256103515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.75)), + static_cast(0.1775887446105480194091796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4311765982475354321499772058039525455316e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(6.5f)), + static_cast(0.466452401928975830078125e11L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(0.125)), + static_cast(0.9636755005807572160847485065460205078125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(0.25)), + static_cast(0.1034546925127506256103515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(0.75)), + static_cast(0.1775887446105480194091796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4311765982475354321499772058039525455316e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(6.5f)), + static_cast(0.466452401928975830078125e11L), + tolerance); + // + // Rational functions of order 7 + // + static const U d8c[8] = { 7, 10, 10, 11, 2, 4, 1, 7 }; + static const boost::array d8a = { 7, 10, 10, 11, 2, 4, 1, 7 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.125), 8), + static_cast(0.1153693678861771369296601206130394355814e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.25), 8), + static_cast(0.103714470093009762768860970830101771981e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.75), 8), + static_cast(0.834289461108456229648481346061946410909e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(1.0f - 1.0f/64.0f), 8), + static_cast(0.8981362736388035283180082845549732926578e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(6.5f), 8), + static_cast(0.383383275200627223098571833372266642165e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(10247.25f), 8), + static_cast(0.1430085023641929377426860779365964126311e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.125)), + static_cast(0.1153693678861771369296601206130394355814e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.25)), + static_cast(0.103714470093009762768860970830101771981e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.75)), + static_cast(0.834289461108456229648481346061946410909e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8981362736388035283180082845549732926578e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(6.5f)), + static_cast(0.383383275200627223098571833372266642165e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8c, d8c, static_cast(10247.25f)), + static_cast(0.1430085023641929377426860779365964126311e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8a, d8a, static_cast(0.125)), + static_cast(0.1153693678861771369296601206130394355814e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8a, d8a, static_cast(0.25)), + static_cast(0.103714470093009762768860970830101771981e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8a, d8a, static_cast(0.75)), + static_cast(0.834289461108456229648481346061946410909e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8a, d8a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8981362736388035283180082845549732926578e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8a, d8a, static_cast(6.5f)), + static_cast(0.383383275200627223098571833372266642165e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n8a, d8a, static_cast(10247.25f)), + static_cast(0.1430085023641929377426860779365964126311e0L), + tolerance); +} + +template +void do_test_spots8(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 8 + // + static const U n9c[9] = { 3, 9, 3, 9, 5, 6, 10, 7, 10 }; + static const boost::array n9a = { 3, 9, 3, 9, 5, 6, 10, 7, 10 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(0.125), 9), + static_cast(0.419089901447296142578125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(0.25), 9), + static_cast(0.5606536865234375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(0.75), 9), + static_cast(0.21955535888671875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f), 9), + static_cast(0.577754343750660055434309470001608133316e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(6.5), 9), + static_cast(0.3613143234375e8L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(10247.25), 9), + static_cast(0.1215873306624182859977656082228297326996e34L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(0.125)), + static_cast(0.419089901447296142578125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(0.25)), + static_cast(0.5606536865234375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(0.75)), + static_cast(0.21955535888671875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.577754343750660055434309470001608133316e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(6.5)), + static_cast(0.3613143234375e8L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9c, static_cast(10247.25)), + static_cast(0.1215873306624182859977656082228297326996e34L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9a, static_cast(0.125)), + static_cast(0.419089901447296142578125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9a, static_cast(0.25)), + static_cast(0.5606536865234375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9a, static_cast(0.75)), + static_cast(0.21955535888671875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.577754343750660055434309470001608133316e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9a, static_cast(6.5)), + static_cast(0.3613143234375e8L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n9a, static_cast(10247.25)), + static_cast(0.1215873306624182859977656082228297326996e34L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.125), 9), + static_cast(0.3141392057908696244794555241242051124573e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.25), 9), + static_cast(0.35764986560679972171783447265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.75), 9), + static_cast(0.119936861679889261722564697265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f), 9), + static_cast(0.5392583642412261279423815221065846904997e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(6.5f), 9), + static_cast(0.103274449934495763275146484375e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.125)), + static_cast(0.3141392057908696244794555241242051124573e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.25)), + static_cast(0.35764986560679972171783447265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.75)), + static_cast(0.119936861679889261722564697265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5392583642412261279423815221065846904997e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9c, static_cast(6.5f)), + static_cast(0.103274449934495763275146484375e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9a, static_cast(0.125)), + static_cast(0.3141392057908696244794555241242051124573e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9a, static_cast(0.25)), + static_cast(0.35764986560679972171783447265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9a, static_cast(0.75)), + static_cast(0.119936861679889261722564697265625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5392583642412261279423815221065846904997e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n9a, static_cast(6.5f)), + static_cast(0.103274449934495763275146484375e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.125), 9), + static_cast(0.4131136463269569958356441929936408996582e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.25), 9), + static_cast(0.530599462427198886871337890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.75), 9), + static_cast(0.1499158155731856822967529296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f), 9), + static_cast(0.5473418303402932093382923399178003205076e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(6.5f), 9), + static_cast(0.1588837691300188665771484375e14L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.125)), + static_cast(0.4131136463269569958356441929936408996582e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.25)), + static_cast(0.530599462427198886871337890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.75)), + static_cast(0.1499158155731856822967529296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5473418303402932093382923399178003205076e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(6.5f)), + static_cast(0.1588837691300188665771484375e14L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(0.125)), + static_cast(0.4131136463269569958356441929936408996582e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(0.25)), + static_cast(0.530599462427198886871337890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(0.75)), + static_cast(0.1499158155731856822967529296875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5473418303402932093382923399178003205076e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(6.5f)), + static_cast(0.1588837691300188665771484375e14L), + tolerance); + // + // Rational functions of order 8 + // + static const U d9c[9] = { 12, 3, 10, 4, 6, 6, 6, 10, 7 }; + static const boost::array d9a = { 12, 3, 10, 4, 6, 6, 6, 10, 7 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.125), 9), + static_cast(0.3341827920887278954826517708316980450243e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.25), 9), + static_cast(0.4162555242250224594229316089330159747956e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.75), 9), + static_cast(0.7844550246723573100342976024389406178802e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(1.0f - 1.0f/64.0f), 9), + static_cast(0.959335028097323235424759017468360386113e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(6.5f), 9), + static_cast(0.1302420407483849169746727326286868117535e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(10247.25f), 9), + static_cast(0.1428469874366314841691622991213446692856e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.125)), + static_cast(0.3341827920887278954826517708316980450243e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.25)), + static_cast(0.4162555242250224594229316089330159747956e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.75)), + static_cast(0.7844550246723573100342976024389406178802e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.959335028097323235424759017468360386113e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(6.5f)), + static_cast(0.1302420407483849169746727326286868117535e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9c, d9c, static_cast(10247.25f)), + static_cast(0.1428469874366314841691622991213446692856e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9a, d9a, static_cast(0.125)), + static_cast(0.3341827920887278954826517708316980450243e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9a, d9a, static_cast(0.25)), + static_cast(0.4162555242250224594229316089330159747956e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9a, d9a, static_cast(0.75)), + static_cast(0.7844550246723573100342976024389406178802e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9a, d9a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.959335028097323235424759017468360386113e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9a, d9a, static_cast(6.5f)), + static_cast(0.1302420407483849169746727326286868117535e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n9a, d9a, static_cast(10247.25f)), + static_cast(0.1428469874366314841691622991213446692856e1L), + tolerance); +} + +template +void do_test_spots9(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 9 + // + static const U n10c[10] = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 }; + static const boost::array n10a = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(0.125), 10), + static_cast(0.3544962465763092041015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(0.25), 10), + static_cast(0.4251861572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(0.75), 10), + static_cast(0.14716278076171875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f), 10), + static_cast(0.4243246072286939307716124858416151255369e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(6.5), 10), + static_cast(0.193326261328125e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(10247.25), 10), + static_cast(0.9967777935240642903307419028007759631098e37L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(0.125)), + static_cast(0.3544962465763092041015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(0.25)), + static_cast(0.4251861572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(0.75)), + static_cast(0.14716278076171875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4243246072286939307716124858416151255369e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(6.5)), + static_cast(0.193326261328125e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10c, static_cast(10247.25)), + static_cast(0.9967777935240642903307419028007759631098e37L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10a, static_cast(0.125)), + static_cast(0.3544962465763092041015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10a, static_cast(0.25)), + static_cast(0.4251861572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10a, static_cast(0.75)), + static_cast(0.14716278076171875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.4243246072286939307716124858416151255369e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10a, static_cast(6.5)), + static_cast(0.193326261328125e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n10a, static_cast(10247.25)), + static_cast(0.9967777935240642903307419028007759631098e37L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.125), 10), + static_cast(0.3063011647232116718697625401546247303486e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.25), 10), + static_cast(0.3259400503826327621936798095703125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.75), 10), + static_cast(0.8067807371844537556171417236328125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f), 10), + static_cast(0.3922779295817342542834377568121069117613e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(6.5f), 10), + static_cast(0.3514067090785774022613525390625e16L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.125)), + static_cast(0.3063011647232116718697625401546247303486e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.25)), + static_cast(0.3259400503826327621936798095703125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.75)), + static_cast(0.8067807371844537556171417236328125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3922779295817342542834377568121069117613e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10c, static_cast(6.5f)), + static_cast(0.3514067090785774022613525390625e16L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10a, static_cast(0.125)), + static_cast(0.3063011647232116718697625401546247303486e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10a, static_cast(0.25)), + static_cast(0.3259400503826327621936798095703125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10a, static_cast(0.75)), + static_cast(0.8067807371844537556171417236328125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3922779295817342542834377568121069117613e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n10a, static_cast(6.5f)), + static_cast(0.3514067090785774022613525390625e16L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.125), 10), + static_cast(0.3504093177856933749581003212369978427887e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.25), 10), + static_cast(0.40376020153053104877471923828125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.75), 10), + static_cast(0.97570764957927167415618896484375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f), 10), + static_cast(0.3980283729084284487958732767615054341702e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(6.5f), 10), + static_cast(0.54062570627473700347900390625e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.125)), + static_cast(0.3504093177856933749581003212369978427887e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.25)), + static_cast(0.40376020153053104877471923828125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.75)), + static_cast(0.97570764957927167415618896484375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3980283729084284487958732767615054341702e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(6.5f)), + static_cast(0.54062570627473700347900390625e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(0.125)), + static_cast(0.3504093177856933749581003212369978427887e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(0.25)), + static_cast(0.40376020153053104877471923828125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(0.75)), + static_cast(0.97570764957927167415618896484375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.3980283729084284487958732767615054341702e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(6.5f)), + static_cast(0.54062570627473700347900390625e15L), + tolerance); + // + // Rational functions of order 9 + // + static const U d10c[10] = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 }; + static const boost::array d10a = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.125), 10), + static_cast(0.8027011456035955638016996485812217742707e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.25), 10), + static_cast(0.7037718026559713894599659542655668311705e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.75), 10), + static_cast(0.5819711007563332500606442409694389231031e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(1.0f - 1.0f/64.0f), 10), + static_cast(0.6021345078884753739086911192013079405483e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(6.5f), 10), + static_cast(0.9827105949744728065574239430024037810213e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(10247.25f), 10), + static_cast(0.9999999928576761766405011572543053028339e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.125)), + static_cast(0.8027011456035955638016996485812217742707e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.25)), + static_cast(0.7037718026559713894599659542655668311705e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.75)), + static_cast(0.5819711007563332500606442409694389231031e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6021345078884753739086911192013079405483e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(6.5f)), + static_cast(0.9827105949744728065574239430024037810213e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10c, d10c, static_cast(10247.25f)), + static_cast(0.9999999928576761766405011572543053028339e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10a, d10a, static_cast(0.125)), + static_cast(0.8027011456035955638016996485812217742707e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10a, d10a, static_cast(0.25)), + static_cast(0.7037718026559713894599659542655668311705e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10a, d10a, static_cast(0.75)), + static_cast(0.5819711007563332500606442409694389231031e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10a, d10a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6021345078884753739086911192013079405483e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10a, d10a, static_cast(6.5f)), + static_cast(0.9827105949744728065574239430024037810213e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n10a, d10a, static_cast(10247.25f)), + static_cast(0.9999999928576761766405011572543053028339e0L), + tolerance); +} + +template +void do_test_spots10(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 10 + // + static const U n11c[11] = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 }; + static const boost::array n11a = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(0.125), 11), + static_cast(0.239738257043063640594482421875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(0.25), 11), + static_cast(0.31906986236572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(0.75), 11), + static_cast(0.187007007598876953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f), 11), + static_cast(0.5807897685780276847943015550157497273176e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(6.5), 11), + static_cast(0.85061053443359375e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(0.125)), + static_cast(0.239738257043063640594482421875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(0.25)), + static_cast(0.31906986236572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(0.75)), + static_cast(0.187007007598876953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5807897685780276847943015550157497273176e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11c, static_cast(6.5)), + static_cast(0.85061053443359375e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11a, static_cast(0.125)), + static_cast(0.239738257043063640594482421875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11a, static_cast(0.25)), + static_cast(0.31906986236572265625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11a, static_cast(0.75)), + static_cast(0.187007007598876953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5807897685780276847943015550157497273176e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n11a, static_cast(6.5)), + static_cast(0.85061053443359375e9L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.125), 11), + static_cast(0.2033245269357184586631048794913567689946e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.25), 11), + static_cast(0.2158985776148256263695657253265380859375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.75), 11), + static_cast(0.8727145384755203849636018276214599609375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f), 11), + static_cast(0.5363972553738812062759598952966094072427e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(6.5f), 11), + static_cast(0.1092297265410211371166019439697265625e18L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.125)), + static_cast(0.2033245269357184586631048794913567689946e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.25)), + static_cast(0.2158985776148256263695657253265380859375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.75)), + static_cast(0.8727145384755203849636018276214599609375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5363972553738812062759598952966094072427e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11c, static_cast(6.5f)), + static_cast(0.1092297265410211371166019439697265625e18L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11a, static_cast(0.125)), + static_cast(0.2033245269357184586631048794913567689946e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11a, static_cast(0.25)), + static_cast(0.2158985776148256263695657253265380859375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11a, static_cast(0.75)), + static_cast(0.8727145384755203849636018276214599609375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.5363972553738812062759598952966094072427e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n11a, static_cast(6.5f)), + static_cast(0.1092297265410211371166019439697265625e18L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.125), 11), + static_cast(0.2265962154857476693048390359308541519567e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.25), 11), + static_cast(0.26359431045930250547826290130615234375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.75), 11), + static_cast(0.109695271796736051328480243682861328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f), 11), + static_cast(0.544594037205212653994625925380682572437e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(6.5f), 11), + static_cast(0.16804573314003253556400299072265625e17L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.125)), + static_cast(0.2265962154857476693048390359308541519567e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.25)), + static_cast(0.26359431045930250547826290130615234375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.75)), + static_cast(0.109695271796736051328480243682861328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.544594037205212653994625925380682572437e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(6.5f)), + static_cast(0.16804573314003253556400299072265625e17L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(0.125)), + static_cast(0.2265962154857476693048390359308541519567e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(0.25)), + static_cast(0.26359431045930250547826290130615234375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(0.75)), + static_cast(0.109695271796736051328480243682861328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.544594037205212653994625925380682572437e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(6.5f)), + static_cast(0.16804573314003253556400299072265625e17L), + tolerance); + // + // Rational functions of order 10 + // + static const U d11c[11] = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 }; + static const boost::array d11a = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.125), 11), + static_cast(0.5718365676248588095654568811483084403598e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.25), 11), + static_cast(0.6888631839546304707516922567568791812269e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.75), 11), + static_cast(0.9783539912974912482969079012097816310129e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(1.0f - 1.0f/64.0f), 11), + static_cast(0.9694017102874332007392886881642471036972e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(6.5f), 11), + static_cast(0.1243900864392932237542421996384079347041e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(10247.25f), 11), + static_cast(0.1499804844733304585200728061706913399511e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.125)), + static_cast(0.5718365676248588095654568811483084403598e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.25)), + static_cast(0.6888631839546304707516922567568791812269e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.75)), + static_cast(0.9783539912974912482969079012097816310129e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9694017102874332007392886881642471036972e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(6.5f)), + static_cast(0.1243900864392932237542421996384079347041e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11c, d11c, static_cast(10247.25f)), + static_cast(0.1499804844733304585200728061706913399511e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11a, d11a, static_cast(0.125)), + static_cast(0.5718365676248588095654568811483084403598e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11a, d11a, static_cast(0.25)), + static_cast(0.6888631839546304707516922567568791812269e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11a, d11a, static_cast(0.75)), + static_cast(0.9783539912974912482969079012097816310129e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11a, d11a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9694017102874332007392886881642471036972e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11a, d11a, static_cast(6.5f)), + static_cast(0.1243900864392932237542421996384079347041e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n11a, d11a, static_cast(10247.25f)), + static_cast(0.1499804844733304585200728061706913399511e1L), + tolerance); +} + +template +void do_test_spots11(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 11 + // + static const U n12c[12] = { 10, 12, 4, 1, 12, 7, 11, 5, 12, 5, 10, 6 }; + static const boost::array n12a = { 10, 12, 4, 1, 12, 7, 11, 5, 12, 5, 10, 6 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(0.125), 12), + static_cast(0.1156764154392294585704803466796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(0.25), 12), + static_cast(0.13322539806365966796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(0.75), 12), + static_cast(0.32148390293121337890625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(1.0f - 1.0f/64.0f), 12), + static_cast(0.8737331822870016474402916385744166660743e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(6.5), 12), + static_cast(0.67419250750654296875e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(0.125)), + static_cast(0.1156764154392294585704803466796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(0.25)), + static_cast(0.13322539806365966796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(0.75)), + static_cast(0.32148390293121337890625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8737331822870016474402916385744166660743e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12c, static_cast(6.5)), + static_cast(0.67419250750654296875e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12a, static_cast(0.125)), + static_cast(0.1156764154392294585704803466796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12a, static_cast(0.25)), + static_cast(0.13322539806365966796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12a, static_cast(0.75)), + static_cast(0.32148390293121337890625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8737331822870016474402916385744166660743e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n12a, static_cast(6.5)), + static_cast(0.67419250750654296875e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(0.125), 12), + static_cast(0.101884810991335118067599354446661763518e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(0.25), 12), + static_cast(0.1076605959896767217287560924887657165527e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(0.75), 12), + static_cast(0.2041755737073560794669901952147483825684e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(1.0f - 1.0f/64.0f), 12), + static_cast(0.8060387357327405373376954971672611741429e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(6.5f), 12), + static_cast(0.4778085851102157284559772014617919921875e19L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(0.125)), + static_cast(0.101884810991335118067599354446661763518e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(0.25)), + static_cast(0.1076605959896767217287560924887657165527e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(0.75)), + static_cast(0.2041755737073560794669901952147483825684e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8060387357327405373376954971672611741429e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12c, static_cast(6.5f)), + static_cast(0.4778085851102157284559772014617919921875e19L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12a, static_cast(0.125)), + static_cast(0.101884810991335118067599354446661763518e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12a, static_cast(0.25)), + static_cast(0.1076605959896767217287560924887657165527e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12a, static_cast(0.75)), + static_cast(0.2041755737073560794669901952147483825684e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8060387357327405373376954971672611741429e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n12a, static_cast(6.5f)), + static_cast(0.4778085851102157284559772014617919921875e19L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(0.125), 12), + static_cast(0.1150784879306809445407948355732941081442e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(0.25), 12), + static_cast(0.1306423839587068869150243699550628662109e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(0.75), 12), + static_cast(0.2389007649431414392893202602863311767578e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(1.0f - 1.0f/64.0f), 12), + static_cast(0.8172456997919903871367065368048367483356e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(6.5f), 12), + static_cast(0.73509013093879343685534954071044921875e18L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(0.125)), + static_cast(0.1150784879306809445407948355732941081442e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(0.25)), + static_cast(0.1306423839587068869150243699550628662109e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(0.75)), + static_cast(0.2389007649431414392893202602863311767578e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8172456997919903871367065368048367483356e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12c, static_cast(6.5f)), + static_cast(0.73509013093879343685534954071044921875e18L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12a, static_cast(0.125)), + static_cast(0.1150784879306809445407948355732941081442e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12a, static_cast(0.25)), + static_cast(0.1306423839587068869150243699550628662109e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12a, static_cast(0.75)), + static_cast(0.2389007649431414392893202602863311767578e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8172456997919903871367065368048367483356e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n12a, static_cast(6.5f)), + static_cast(0.73509013093879343685534954071044921875e18L), + tolerance); + // + // Rational functions of order 11 + // + static const U d12c[12] = { 12, 5, 2, 8, 3, 2, 6, 9, 2, 8, 9, 12 }; + static const boost::array d12a = { 12, 5, 2, 8, 3, 2, 6, 9, 2, 8, 9, 12 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(0.125), 12), + static_cast(0.9128003783370762743953357962892418132189e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(0.25), 12), + static_cast(0.9857041905689267091438933694601440838819e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(0.75), 12), + static_cast(0.1248112763387283893598834927961632655902e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(1.0f - 1.0f/64.0f), 12), + static_cast(0.1227813945781309965073515980672922656926e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(6.5f), 12), + static_cast(0.5670462630528956417277364302989555872917e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(10247.25f), 12), + static_cast(0.5000447249679368028702341332079904080375e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(0.125)), + static_cast(0.9128003783370762743953357962892418132189e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(0.25)), + static_cast(0.9857041905689267091438933694601440838819e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(0.75)), + static_cast(0.1248112763387283893598834927961632655902e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1227813945781309965073515980672922656926e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(6.5f)), + static_cast(0.5670462630528956417277364302989555872917e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12c, d12c, static_cast(10247.25f)), + static_cast(0.5000447249679368028702341332079904080375e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12a, d12a, static_cast(0.125)), + static_cast(0.9128003783370762743953357962892418132189e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12a, d12a, static_cast(0.25)), + static_cast(0.9857041905689267091438933694601440838819e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12a, d12a, static_cast(0.75)), + static_cast(0.1248112763387283893598834927961632655902e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12a, d12a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1227813945781309965073515980672922656926e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12a, d12a, static_cast(6.5f)), + static_cast(0.5670462630528956417277364302989555872917e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n12a, d12a, static_cast(10247.25f)), + static_cast(0.5000447249679368028702341332079904080375e0L), + tolerance); +} + +template +void do_test_spots12(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 12 + // + static const U n13c[13] = { 4, 11, 7, 1, 1, 1, 8, 11, 10, 12, 8, 2, 1 }; + static const boost::array n13a = { 4, 11, 7, 1, 1, 1, 8, 11, 10, 12, 8, 2, 1 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(0.125), 13), + static_cast(0.5486639239141368307173252105712890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(0.25), 13), + static_cast(0.7210838854312896728515625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(0.75), 13), + static_cast(0.22524036943912506103515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(1.0f - 1.0f/64.0f), 13), + static_cast(0.7013317633407797455061737623412208147977e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(6.5), 13), + static_cast(0.8801602436469970703125e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(0.125)), + static_cast(0.5486639239141368307173252105712890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(0.25)), + static_cast(0.7210838854312896728515625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(0.75)), + static_cast(0.22524036943912506103515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7013317633407797455061737623412208147977e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13c, static_cast(6.5)), + static_cast(0.8801602436469970703125e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13a, static_cast(0.125)), + static_cast(0.5486639239141368307173252105712890625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13a, static_cast(0.25)), + static_cast(0.7210838854312896728515625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13a, static_cast(0.75)), + static_cast(0.22524036943912506103515625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7013317633407797455061737623412208147977e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n13a, static_cast(6.5)), + static_cast(0.8801602436469970703125e10L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(0.125), 13), + static_cast(0.4173587859727185607499727379291788731397e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(0.25), 13), + static_cast(0.4715104623414053008900737040676176548004e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(0.75), 13), + static_cast(0.1338397611887558369403450342360883951187e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(1.0f - 1.0f/64.0f), 13), + static_cast(0.6407202225497595548875186059951665936749e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(6.5f), 13), + static_cast(0.3403521961549553788009664398431777954102e20L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(0.125)), + static_cast(0.4173587859727185607499727379291788731397e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(0.25)), + static_cast(0.4715104623414053008900737040676176548004e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(0.75)), + static_cast(0.1338397611887558369403450342360883951187e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6407202225497595548875186059951665936749e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13c, static_cast(6.5f)), + static_cast(0.3403521961549553788009664398431777954102e20L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13a, static_cast(0.125)), + static_cast(0.4173587859727185607499727379291788731397e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13a, static_cast(0.25)), + static_cast(0.4715104623414053008900737040676176548004e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13a, static_cast(0.75)), + static_cast(0.1338397611887558369403450342360883951187e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6407202225497595548875186059951665936749e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n13a, static_cast(6.5f)), + static_cast(0.3403521961549553788009664398431777954102e20L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(0.125), 13), + static_cast(0.5388702877817484859997819034334309851175e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(0.25), 13), + static_cast(0.6860418493656212035602948162704706192017e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(0.75), 13), + static_cast(0.165119681585007782587126712314784526825e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(1.0f - 1.0f/64.0f), 13), + static_cast(0.6502554641775335160762093775188993967491e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(6.5f), 13), + static_cast(0.5236187633153159677245637536048889160156e19L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(0.125)), + static_cast(0.5388702877817484859997819034334309851175e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(0.25)), + static_cast(0.6860418493656212035602948162704706192017e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(0.75)), + static_cast(0.165119681585007782587126712314784526825e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6502554641775335160762093775188993967491e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13c, static_cast(6.5f)), + static_cast(0.5236187633153159677245637536048889160156e19L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13a, static_cast(0.125)), + static_cast(0.5388702877817484859997819034334309851175e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13a, static_cast(0.25)), + static_cast(0.6860418493656212035602948162704706192017e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13a, static_cast(0.75)), + static_cast(0.165119681585007782587126712314784526825e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.6502554641775335160762093775188993967491e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n13a, static_cast(6.5f)), + static_cast(0.5236187633153159677245637536048889160156e19L), + tolerance); + // + // Rational functions of order 12 + // + static const U d13c[13] = { 4, 7, 1, 6, 11, 4, 9, 11, 1, 10, 1, 11, 12 }; + static const boost::array d13a = { 4, 7, 1, 6, 11, 4, 9, 11, 1, 10, 1, 11, 12 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(0.125), 13), + static_cast(0.1118537310443419140823936840990235560775e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(0.25), 13), + static_cast(0.12106743933208147312270004711488386001e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(0.75), 13), + static_cast(0.1042994706832119738384940706309786965245e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(1.0f - 1.0f/64.0f), 13), + static_cast(0.8849937505065081554917467830175954168154e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(6.5f), 13), + static_cast(0.1125049235146435310211414108934070096386e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(10247.25f), 13), + static_cast(0.8334214878002966556152610218152238753709e-1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(0.125)), + static_cast(0.1118537310443419140823936840990235560775e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(0.25)), + static_cast(0.12106743933208147312270004711488386001e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(0.75)), + static_cast(0.1042994706832119738384940706309786965245e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8849937505065081554917467830175954168154e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(6.5f)), + static_cast(0.1125049235146435310211414108934070096386e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13c, d13c, static_cast(10247.25f)), + static_cast(0.8334214878002966556152610218152238753709e-1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13a, d13a, static_cast(0.125)), + static_cast(0.1118537310443419140823936840990235560775e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13a, d13a, static_cast(0.25)), + static_cast(0.12106743933208147312270004711488386001e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13a, d13a, static_cast(0.75)), + static_cast(0.1042994706832119738384940706309786965245e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13a, d13a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8849937505065081554917467830175954168154e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13a, d13a, static_cast(6.5f)), + static_cast(0.1125049235146435310211414108934070096386e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n13a, d13a, static_cast(10247.25f)), + static_cast(0.8334214878002966556152610218152238753709e-1L), + tolerance); +} +template +void do_test_spots13(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 13 + // + static const U n14c[14] = { 5, 5, 3, 5, 12, 8, 10, 5, 5, 9, 2, 10, 3, 3 }; + static const boost::array n14a = { 5, 5, 3, 5, 12, 8, 10, 5, 5, 9, 2, 10, 3, 3 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(0.125), 14), + static_cast(0.5684855352437807596288621425628662109375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(0.25), 14), + static_cast(0.657317422330379486083984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(0.75), 14), + static_cast(0.2256699807941913604736328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(1.0f - 1.0f/64.0f), 14), + static_cast(0.7710103154409585858207746641830426369713e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(6.5), 14), + static_cast(0.1372059025011920166015625e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(0.125)), + static_cast(0.5684855352437807596288621425628662109375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(0.25)), + static_cast(0.657317422330379486083984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(0.75)), + static_cast(0.2256699807941913604736328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7710103154409585858207746641830426369713e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14c, static_cast(6.5)), + static_cast(0.1372059025011920166015625e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14a, static_cast(0.125)), + static_cast(0.5684855352437807596288621425628662109375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14a, static_cast(0.25)), + static_cast(0.657317422330379486083984375e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14a, static_cast(0.75)), + static_cast(0.2256699807941913604736328125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7710103154409585858207746641830426369713e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n14a, static_cast(6.5)), + static_cast(0.1372059025011920166015625e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(0.125), 14), + static_cast(0.5078877218214320312311861835604176527818e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(0.25), 14), + static_cast(0.5325630803958699699407475236512254923582e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(0.75), 14), + static_cast(0.1183906394403697492911931021808413788676e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(1.0f - 1.0f/64.0f), 14), + static_cast(0.7015764398304385537424317046920004042802e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(6.5f), 14), + static_cast(0.4205557544065332561152158209905028343201e22L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(0.125)), + static_cast(0.5078877218214320312311861835604176527818e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(0.25)), + static_cast(0.5325630803958699699407475236512254923582e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(0.75)), + static_cast(0.1183906394403697492911931021808413788676e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7015764398304385537424317046920004042802e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14c, static_cast(6.5f)), + static_cast(0.4205557544065332561152158209905028343201e22L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14a, static_cast(0.125)), + static_cast(0.5078877218214320312311861835604176527818e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14a, static_cast(0.25)), + static_cast(0.5325630803958699699407475236512254923582e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14a, static_cast(0.75)), + static_cast(0.1183906394403697492911931021808413788676e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7015764398304385537424317046920004042802e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n14a, static_cast(6.5f)), + static_cast(0.4205557544065332561152158209905028343201e22L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(0.125), 14), + static_cast(0.5631017745714562498494894684833412222547e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(0.25), 14), + static_cast(0.6302523215834798797629900946049019694328e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(0.75), 14), + static_cast(0.1411875192538263323882574695744551718235e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(1.0f - 1.0f/64.0f), 14), + static_cast(0.7119189230023502768177083984172702519672e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(6.5f), 14), + static_cast(0.6470088529331280863353320322930812835693e21L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(0.125)), + static_cast(0.5631017745714562498494894684833412222547e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(0.25)), + static_cast(0.6302523215834798797629900946049019694328e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(0.75)), + static_cast(0.1411875192538263323882574695744551718235e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7119189230023502768177083984172702519672e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14c, static_cast(6.5f)), + static_cast(0.6470088529331280863353320322930812835693e21L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14a, static_cast(0.125)), + static_cast(0.5631017745714562498494894684833412222547e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14a, static_cast(0.25)), + static_cast(0.6302523215834798797629900946049019694328e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14a, static_cast(0.75)), + static_cast(0.1411875192538263323882574695744551718235e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7119189230023502768177083984172702519672e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n14a, static_cast(6.5f)), + static_cast(0.6470088529331280863353320322930812835693e21L), + tolerance); + // + // Rational functions of order 13 + // + static const U d14c[14] = { 1, 2, 1, 8, 5, 8, 2, 11, 3, 6, 5, 9, 7, 10 }; + static const boost::array d14a = { 1, 2, 1, 8, 5, 8, 2, 11, 3, 6, 5, 9, 7, 10 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(0.125), 14), + static_cast(0.4431848049037056640776200482297774574883e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(0.25), 14), + static_cast(0.3830343514018902583833597521450902906851e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(0.75), 14), + static_cast(0.1657621200711495617835320787645038062003e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(1.0f - 1.0f/64.0f), 14), + static_cast(0.1117985091800992684003226640313705018678e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(6.5f), 14), + static_cast(0.3280672161259396135368350556553925507681e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(10247.25f), 14), + static_cast(0.3000087891957249835881866421118445480875e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(0.125)), + static_cast(0.4431848049037056640776200482297774574883e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(0.25)), + static_cast(0.3830343514018902583833597521450902906851e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(0.75)), + static_cast(0.1657621200711495617835320787645038062003e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1117985091800992684003226640313705018678e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(6.5f)), + static_cast(0.3280672161259396135368350556553925507681e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14c, d14c, static_cast(10247.25f)), + static_cast(0.3000087891957249835881866421118445480875e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14a, d14a, static_cast(0.125)), + static_cast(0.4431848049037056640776200482297774574883e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14a, d14a, static_cast(0.25)), + static_cast(0.3830343514018902583833597521450902906851e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14a, d14a, static_cast(0.75)), + static_cast(0.1657621200711495617835320787645038062003e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14a, d14a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1117985091800992684003226640313705018678e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14a, d14a, static_cast(6.5f)), + static_cast(0.3280672161259396135368350556553925507681e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n14a, d14a, static_cast(10247.25f)), + static_cast(0.3000087891957249835881866421118445480875e0L), + tolerance); +} + +template +void do_test_spots14(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 14 + // + static const U n15c[15] = { 6, 2, 10, 2, 4, 11, 4, 6, 5, 5, 10, 12, 8, 6, 2 }; + static const boost::array n15a = { 6, 2, 10, 2, 4, 11, 4, 6, 5, 5, 10, 12, 8, 6, 2 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(0.125), 15), + static_cast(0.6411486971785507193999364972114562988281e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(0.25), 15), + static_cast(0.7184068299829959869384765625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(0.75), 15), + static_cast(0.21735079027712345123291015625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(1.0f - 1.0f/64.0f), 15), + static_cast(0.8299984286646360949452954853655163780233e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(6.5), 15), + static_cast(0.7599432765217742919921875e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(0.125)), + static_cast(0.6411486971785507193999364972114562988281e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(0.25)), + static_cast(0.7184068299829959869384765625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(0.75)), + static_cast(0.21735079027712345123291015625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8299984286646360949452954853655163780233e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15c, static_cast(6.5)), + static_cast(0.7599432765217742919921875e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15a, static_cast(0.125)), + static_cast(0.6411486971785507193999364972114562988281e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15a, static_cast(0.25)), + static_cast(0.7184068299829959869384765625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15a, static_cast(0.75)), + static_cast(0.21735079027712345123291015625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8299984286646360949452954853655163780233e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n15a, static_cast(6.5)), + static_cast(0.7599432765217742919921875e12L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(0.125), 15), + static_cast(0.603369928436724862526100235763586452224e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(0.25), 15), + static_cast(0.6164622568840771005271861326946236658841e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(0.75), 15), + static_cast(0.1204200081304656236302896843426424311474e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(1.0f - 1.0f/64.0f), 15), + static_cast(0.7438435296991670658675730793779505088179e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(6.5f), 15), + static_cast(0.123975649339443727300884144392229616642e24L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(0.125)), + static_cast(0.603369928436724862526100235763586452224e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(0.25)), + static_cast(0.6164622568840771005271861326946236658841e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(0.75)), + static_cast(0.1204200081304656236302896843426424311474e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7438435296991670658675730793779505088179e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15c, static_cast(6.5f)), + static_cast(0.123975649339443727300884144392229616642e24L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15a, static_cast(0.125)), + static_cast(0.603369928436724862526100235763586452224e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15a, static_cast(0.25)), + static_cast(0.6164622568840771005271861326946236658841e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15a, static_cast(0.75)), + static_cast(0.1204200081304656236302896843426424311474e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7438435296991670658675730793779505088179e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n15a, static_cast(6.5f)), + static_cast(0.123975649339443727300884144392229616642e24L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(0.125), 15), + static_cast(0.6269594274937989002088018861086916177919e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(0.25), 15), + static_cast(0.6658490275363084021087445307784946635365e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(0.75), 15), + static_cast(0.1405600108406208315070529124568565748632e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(1.0f - 1.0f/64.0f), 15), + static_cast(0.7546981889007411462781694774633148026087e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(6.5f), 15), + static_cast(0.1907317682145288112321802221418917179108e23L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(0.125)), + static_cast(0.6269594274937989002088018861086916177919e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(0.25)), + static_cast(0.6658490275363084021087445307784946635365e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(0.75)), + static_cast(0.1405600108406208315070529124568565748632e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7546981889007411462781694774633148026087e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15c, static_cast(6.5f)), + static_cast(0.1907317682145288112321802221418917179108e23L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15a, static_cast(0.125)), + static_cast(0.6269594274937989002088018861086916177919e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15a, static_cast(0.25)), + static_cast(0.6658490275363084021087445307784946635365e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15a, static_cast(0.75)), + static_cast(0.1405600108406208315070529124568565748632e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7546981889007411462781694774633148026087e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n15a, static_cast(6.5f)), + static_cast(0.1907317682145288112321802221418917179108e23L), + tolerance); + // + // Rational functions of order 14 + // + static const U d15c[15] = { 7, 10, 7, 1, 10, 11, 11, 10, 7, 1, 10, 9, 8, 2, 3 }; + static const boost::array d15a = { 7, 10, 7, 1, 10, 11, 11, 10, 7, 1, 10, 9, 8, 2, 3 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(0.125), 15), + static_cast(0.7665435387801205084357966990293734431712e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(0.25), 15), + static_cast(0.7179510450452743437979498898508621162489e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(0.75), 15), + static_cast(0.7245051156202447814210400449367214490615e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(1.0f - 1.0f/64.0f), 15), + static_cast(0.8564567127146107292325365412425895512358e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(6.5f), 15), + static_cast(0.8943937154363365123476971638815814742919e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(10247.25f), 15), + static_cast(0.6668184674989563469735607034881326982176e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(0.125)), + static_cast(0.7665435387801205084357966990293734431712e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(0.25)), + static_cast(0.7179510450452743437979498898508621162489e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(0.75)), + static_cast(0.7245051156202447814210400449367214490615e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8564567127146107292325365412425895512358e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(6.5f)), + static_cast(0.8943937154363365123476971638815814742919e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15c, d15c, static_cast(10247.25f)), + static_cast(0.6668184674989563469735607034881326982176e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15a, d15a, static_cast(0.125)), + static_cast(0.7665435387801205084357966990293734431712e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15a, d15a, static_cast(0.25)), + static_cast(0.7179510450452743437979498898508621162489e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15a, d15a, static_cast(0.75)), + static_cast(0.7245051156202447814210400449367214490615e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15a, d15a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8564567127146107292325365412425895512358e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15a, d15a, static_cast(6.5f)), + static_cast(0.8943937154363365123476971638815814742919e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n15a, d15a, static_cast(10247.25f)), + static_cast(0.6668184674989563469735607034881326982176e0L), + tolerance); +} + +template +void do_test_spots15(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 15 + // + static const U n16c[16] = { 5, 3, 4, 6, 7, 9, 7, 6, 12, 12, 7, 12, 10, 3, 6, 2 }; + static const boost::array n16a = { 5, 3, 4, 6, 7, 9, 7, 6, 12, 12, 7, 12, 10, 3, 6, 2 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(0.125), 16), + static_cast(0.545123276921327715172083117067813873291e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(0.25), 16), + static_cast(0.613219709135591983795166015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(0.75), 16), + static_cast(0.2195364624075591564178466796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(1.0f - 1.0f/64.0f), 16), + static_cast(0.9836568924934260045838041177111855604603e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(6.5), 16), + static_cast(0.474557924297607818603515625e13L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(0.125)), + static_cast(0.545123276921327715172083117067813873291e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(0.25)), + static_cast(0.613219709135591983795166015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(0.75)), + static_cast(0.2195364624075591564178466796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9836568924934260045838041177111855604603e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16c, static_cast(6.5)), + static_cast(0.474557924297607818603515625e13L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16a, static_cast(0.125)), + static_cast(0.545123276921327715172083117067813873291e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16a, static_cast(0.25)), + static_cast(0.613219709135591983795166015625e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16a, static_cast(0.75)), + static_cast(0.2195364624075591564178466796875e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9836568924934260045838041177111855604603e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n16a, static_cast(6.5)), + static_cast(0.474557924297607818603515625e13L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(0.125), 16), + static_cast(0.5047874876401281302859159688868887179229e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(0.25), 16), + static_cast(0.5204705680902215943553490440365294489311e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(0.75), 16), + static_cast(0.1080276729363941941482185615797106947866e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(1.0f - 1.0f/64.0f), 16), + static_cast(0.8750139513999183433264859554731006794881e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(6.5f), 16), + static_cast(0.5231073382834479254225049897383445873857e25L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(0.125)), + static_cast(0.5047874876401281302859159688868887179229e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(0.25)), + static_cast(0.5204705680902215943553490440365294489311e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(0.75)), + static_cast(0.1080276729363941941482185615797106947866e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8750139513999183433264859554731006794881e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16c, static_cast(6.5f)), + static_cast(0.5231073382834479254225049897383445873857e25L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16a, static_cast(0.125)), + static_cast(0.5047874876401281302859159688868887179229e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16a, static_cast(0.25)), + static_cast(0.5204705680902215943553490440365294489311e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16a, static_cast(0.75)), + static_cast(0.1080276729363941941482185615797106947866e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8750139513999183433264859554731006794881e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n16a, static_cast(6.5f)), + static_cast(0.5231073382834479254225049897383445873857e25L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(0.125), 16), + static_cast(0.5382999011210250422873277510951097433836e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(0.25), 16), + static_cast(0.5818822723608863774213961761461177957244e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(0.75), 16), + static_cast(0.1273702305818589255309580821062809263822e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(1.0f - 1.0f/64.0f), 16), + static_cast(0.8881094109459487932205571611155308490038e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(6.5f), 16), + static_cast(0.8047805204360737314192426765205301344395e24L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(0.125)), + static_cast(0.5382999011210250422873277510951097433836e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(0.25)), + static_cast(0.5818822723608863774213961761461177957244e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(0.75)), + static_cast(0.1273702305818589255309580821062809263822e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8881094109459487932205571611155308490038e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16c, static_cast(6.5f)), + static_cast(0.8047805204360737314192426765205301344395e24L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16a, static_cast(0.125)), + static_cast(0.5382999011210250422873277510951097433836e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16a, static_cast(0.25)), + static_cast(0.5818822723608863774213961761461177957244e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16a, static_cast(0.75)), + static_cast(0.1273702305818589255309580821062809263822e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8881094109459487932205571611155308490038e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n16a, static_cast(6.5f)), + static_cast(0.8047805204360737314192426765205301344395e24L), + tolerance); + // + // Rational functions of order 15 + // + static const U d16c[16] = { 9, 5, 2, 4, 4, 12, 11, 5, 1, 4, 1, 7, 9, 6, 6, 10 }; + static const boost::array d16a = { 9, 5, 2, 4, 4, 12, 11, 5, 1, 4, 1, 7, 9, 6, 6, 10 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(0.125), 16), + static_cast(0.5639916333371058636233240074655101514789e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(0.25), 16), + static_cast(0.5858114501425065583332351775671440891069e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(0.75), 16), + static_cast(0.9254727283150680371198227978127749853934e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(1.0f - 1.0f/64.0f), 16), + static_cast(0.1155192269792597191440811772688208898465e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(6.5f), 16), + static_cast(0.2736469218296852258039959401695110274611e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(10247.25f), 16), + static_cast(0.2000468408076577399196121638600795513365e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(0.125)), + static_cast(0.5639916333371058636233240074655101514789e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(0.25)), + static_cast(0.5858114501425065583332351775671440891069e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(0.75)), + static_cast(0.9254727283150680371198227978127749853934e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1155192269792597191440811772688208898465e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(6.5f)), + static_cast(0.2736469218296852258039959401695110274611e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16c, d16c, static_cast(10247.25f)), + static_cast(0.2000468408076577399196121638600795513365e0L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16a, d16a, static_cast(0.125)), + static_cast(0.5639916333371058636233240074655101514789e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16a, d16a, static_cast(0.25)), + static_cast(0.5858114501425065583332351775671440891069e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16a, d16a, static_cast(0.75)), + static_cast(0.9254727283150680371198227978127749853934e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16a, d16a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.1155192269792597191440811772688208898465e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16a, d16a, static_cast(6.5f)), + static_cast(0.2736469218296852258039959401695110274611e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n16a, d16a, static_cast(10247.25f)), + static_cast(0.2000468408076577399196121638600795513365e0L), + tolerance); +} + +template +void do_test_spots16(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 16 + // + static const U n17c[17] = { 9, 6, 11, 2, 9, 10, 6, 3, 3, 3, 4, 9, 10, 2, 3, 2, 2 }; + static const boost::array n17a = { 9, 6, 11, 2, 9, 10, 6, 3, 3, 3, 4, 9, 10, 2, 3, 2, 2 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(0.125), 17), + static_cast(0.9928308216189925872185995103791356086731e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(0.25), 17), + static_cast(0.112653836444951593875885009765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(0.75), 17), + static_cast(0.288157429718412458896636962890625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(1.0f - 1.0f/64.0f), 17), + static_cast(0.8499409476622319741012411965028222548509e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(6.5), 17), + static_cast(0.24291309657542805938720703125e14L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(0.125)), + static_cast(0.9928308216189925872185995103791356086731e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(0.25)), + static_cast(0.112653836444951593875885009765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(0.75)), + static_cast(0.288157429718412458896636962890625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8499409476622319741012411965028222548509e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17c, static_cast(6.5)), + static_cast(0.24291309657542805938720703125e14L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17a, static_cast(0.125)), + static_cast(0.9928308216189925872185995103791356086731e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17a, static_cast(0.25)), + static_cast(0.112653836444951593875885009765625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17a, static_cast(0.75)), + static_cast(0.288157429718412458896636962890625e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8499409476622319741012411965028222548509e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n17a, static_cast(6.5)), + static_cast(0.24291309657542805938720703125e14L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(0.125), 17), + static_cast(0.9096443722112564415334975111453014308977e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(0.25), 17), + static_cast(0.9418604266644799371155545586464796770088e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(0.75), 17), + static_cast(0.1800748238050061998856161277204890325265e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(1.0f - 1.0f/64.0f), 17), + static_cast(0.7725414891276907880696219594586980069116e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(6.5f), 17), + static_cast(0.2112416072820759278619692697965107844211e27L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(0.125)), + static_cast(0.9096443722112564415334975111453014308977e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(0.25)), + static_cast(0.9418604266644799371155545586464796770088e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(0.75)), + static_cast(0.1800748238050061998856161277204890325265e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7725414891276907880696219594586980069116e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17c, static_cast(6.5f)), + static_cast(0.2112416072820759278619692697965107844211e27L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17a, static_cast(0.125)), + static_cast(0.9096443722112564415334975111453014308977e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17a, static_cast(0.25)), + static_cast(0.9418604266644799371155545586464796770088e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17a, static_cast(0.75)), + static_cast(0.1800748238050061998856161277204890325265e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7725414891276907880696219594586980069116e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n17a, static_cast(6.5f)), + static_cast(0.2112416072820759278619692697965107844211e27L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(0.125), 17), + static_cast(0.9771549776900515322679800891624114471814e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(0.25), 17), + static_cast(0.1067441706657919748462218234585918708035e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(0.75), 17), + static_cast(0.210099765073341599847488170293985376702e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(1.0f - 1.0f/64.0f), 17), + static_cast(0.7833754810186065148643778635770900387673e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(6.5f), 17), + static_cast(0.3249870881262706582491835681484781298786e26L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(0.125)), + static_cast(0.9771549776900515322679800891624114471814e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(0.25)), + static_cast(0.1067441706657919748462218234585918708035e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(0.75)), + static_cast(0.210099765073341599847488170293985376702e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7833754810186065148643778635770900387673e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17c, static_cast(6.5f)), + static_cast(0.3249870881262706582491835681484781298786e26L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17a, static_cast(0.125)), + static_cast(0.9771549776900515322679800891624114471814e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17a, static_cast(0.25)), + static_cast(0.1067441706657919748462218234585918708035e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17a, static_cast(0.75)), + static_cast(0.210099765073341599847488170293985376702e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7833754810186065148643778635770900387673e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n17a, static_cast(6.5f)), + static_cast(0.3249870881262706582491835681484781298786e26L), + tolerance); + // + // Rational functions of order 16 + // + static const U d17c[17] = { 7, 12, 3, 11, 10, 2, 5, 10, 4, 11, 10, 6, 2, 12, 1, 2, 1 }; + static const boost::array d17a = { 7, 12, 3, 11, 10, 2, 5, 10, 4, 11, 10, 6, 2, 12, 1, 2, 1 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(0.125), 17), + static_cast(0.1158375951946763080209403673166347533318e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(0.25), 17), + static_cast(0.1082966720285644924561131930917359028989e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(0.75), 17), + static_cast(0.9405394059495731884564238556014726773139e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(1.0f - 1.0f/64.0f), 17), + static_cast(0.8654376623250381987950547557864849720673e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(6.5f), 17), + static_cast(0.1737601600028386310221746538845672721834e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(10247.25f), 17), + static_cast(0.1999804873273333726353229695741031917586e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(0.125)), + static_cast(0.1158375951946763080209403673166347533318e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(0.25)), + static_cast(0.1082966720285644924561131930917359028989e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(0.75)), + static_cast(0.9405394059495731884564238556014726773139e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8654376623250381987950547557864849720673e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(6.5f)), + static_cast(0.1737601600028386310221746538845672721834e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17c, d17c, static_cast(10247.25f)), + static_cast(0.1999804873273333726353229695741031917586e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17a, d17a, static_cast(0.125)), + static_cast(0.1158375951946763080209403673166347533318e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17a, d17a, static_cast(0.25)), + static_cast(0.1082966720285644924561131930917359028989e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17a, d17a, static_cast(0.75)), + static_cast(0.9405394059495731884564238556014726773139e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17a, d17a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8654376623250381987950547557864849720673e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17a, d17a, static_cast(6.5f)), + static_cast(0.1737601600028386310221746538845672721834e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n17a, d17a, static_cast(10247.25f)), + static_cast(0.1999804873273333726353229695741031917586e1L), + tolerance); +} + +template +void do_test_spots17(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 17 + // + static const U n18c[18] = { 6, 5, 7, 8, 12, 9, 4, 1, 3, 5, 1, 5, 12, 8, 4, 6, 1, 10 }; + static const boost::array n18a = { 6, 5, 7, 8, 12, 9, 4, 1, 3, 5, 1, 5, 12, 8, 4, 6, 1, 10 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(0.125), 18), + static_cast(0.6753220299099845114199069939786568284035e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(0.25), 18), + static_cast(0.7869269511546008288860321044921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(0.75), 18), + static_cast(0.25590585466590709984302520751953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(1.0f - 1.0f/64.0f), 18), + static_cast(0.9432688198514753127308115619023015607828e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(6.5), 18), + static_cast(0.680830157865510950897216796875e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(0.125)), + static_cast(0.6753220299099845114199069939786568284035e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(0.25)), + static_cast(0.7869269511546008288860321044921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(0.75)), + static_cast(0.25590585466590709984302520751953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9432688198514753127308115619023015607828e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18c, static_cast(6.5)), + static_cast(0.680830157865510950897216796875e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18a, static_cast(0.125)), + static_cast(0.6753220299099845114199069939786568284035e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18a, static_cast(0.25)), + static_cast(0.7869269511546008288860321044921875e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18a, static_cast(0.75)), + static_cast(0.25590585466590709984302520751953125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9432688198514753127308115619023015607828e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n18a, static_cast(6.5)), + static_cast(0.680830157865510950897216796875e15L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(0.125), 18), + static_cast(0.6079865225649211447450201991749585071453e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(0.25), 18), + static_cast(0.6341988806453956744898332268528529098717e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(0.75), 18), + static_cast(0.1439378129034890784564674906867431936064e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(1.0f - 1.0f/64.0f), 18), + static_cast(0.8374908316692411299816073455081075151876e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(6.5f), 18), + static_cast(0.4367459075155664096657376949959960997093e29L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(0.125)), + static_cast(0.6079865225649211447450201991749585071453e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(0.25)), + static_cast(0.6341988806453956744898332268528529098717e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(0.75)), + static_cast(0.1439378129034890784564674906867431936064e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8374908316692411299816073455081075151876e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18c, static_cast(6.5f)), + static_cast(0.4367459075155664096657376949959960997093e29L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18a, static_cast(0.125)), + static_cast(0.6079865225649211447450201991749585071453e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18a, static_cast(0.25)), + static_cast(0.6341988806453956744898332268528529098717e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18a, static_cast(0.75)), + static_cast(0.1439378129034890784564674906867431936064e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8374908316692411299816073455081075151876e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n18a, static_cast(6.5f)), + static_cast(0.4367459075155664096657376949959960997093e29L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(0.125), 18), + static_cast(0.6638921805193691579601615933996680571626e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(0.25), 18), + static_cast(0.7367955225815826979593329074114116394867e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(0.75), 18), + static_cast(0.1719170838713187712752899875823242581419e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(1.0f - 1.0f/64.0f), 18), + static_cast(0.8498319559814513066479820652780774757461e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(6.5f), 18), + static_cast(0.6719167807931790917934426081938401533989e28L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(0.125)), + static_cast(0.6638921805193691579601615933996680571626e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(0.25)), + static_cast(0.7367955225815826979593329074114116394867e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(0.75)), + static_cast(0.1719170838713187712752899875823242581419e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8498319559814513066479820652780774757461e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18c, static_cast(6.5f)), + static_cast(0.6719167807931790917934426081938401533989e28L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18a, static_cast(0.125)), + static_cast(0.6638921805193691579601615933996680571626e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18a, static_cast(0.25)), + static_cast(0.7367955225815826979593329074114116394867e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18a, static_cast(0.75)), + static_cast(0.1719170838713187712752899875823242581419e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8498319559814513066479820652780774757461e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n18a, static_cast(6.5f)), + static_cast(0.6719167807931790917934426081938401533989e28L), + tolerance); + // + // Rational functions of order 17 + // + static const U d18c[18] = { 6, 2, 11, 2, 12, 4, 1, 5, 7, 12, 5, 7, 5, 7, 5, 7, 2, 9 }; + static const boost::array d18a = { 6, 2, 11, 2, 12, 4, 1, 5, 7, 12, 5, 7, 5, 7, 5, 7, 2, 9 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(0.125), 18), + static_cast(0.1050457095586493221315235501384188635425e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(0.25), 18), + static_cast(0.1082394733850278225180153358339433604182e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(0.75), 18), + static_cast(0.1117650157149023587583496399377426188558e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(1.0f - 1.0f/64.0f), 18), + static_cast(0.9882013696252427983431096654690843223851e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(6.5f), 18), + static_cast(0.1086348665080997883580887205673821889245e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(10247.25f), 18), + static_cast(0.1111097856940394090609547290690047016487e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(0.125)), + static_cast(0.1050457095586493221315235501384188635425e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(0.25)), + static_cast(0.1082394733850278225180153358339433604182e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(0.75)), + static_cast(0.1117650157149023587583496399377426188558e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9882013696252427983431096654690843223851e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(6.5f)), + static_cast(0.1086348665080997883580887205673821889245e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18c, d18c, static_cast(10247.25f)), + static_cast(0.1111097856940394090609547290690047016487e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18a, d18a, static_cast(0.125)), + static_cast(0.1050457095586493221315235501384188635425e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18a, d18a, static_cast(0.25)), + static_cast(0.1082394733850278225180153358339433604182e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18a, d18a, static_cast(0.75)), + static_cast(0.1117650157149023587583496399377426188558e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18a, d18a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.9882013696252427983431096654690843223851e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18a, d18a, static_cast(6.5f)), + static_cast(0.1086348665080997883580887205673821889245e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n18a, d18a, static_cast(10247.25f)), + static_cast(0.1111097856940394090609547290690047016487e1L), + tolerance); +} + +template +void do_test_spots18(T, U) +{ + // + // Tolerance is 4 eps expressed as a persentage: + // + T tolerance = boost::math::tools::epsilon() * 4 * 100; + + // + // Polynomials of order 18 + // + static const U n19c[19] = { 7, 2, 4, 2, 4, 3, 9, 1, 9, 3, 7, 2, 10, 4, 2, 5, 11, 3, 9 }; + static const boost::array n19a = { 7, 2, 4, 2, 4, 3, 9, 1, 9, 3, 7, 2, 10, 4, 2, 5, 11, 3, 9 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(0.125), 19), + static_cast(0.7317509740045990140888676478425622917712e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(0.25), 19), + static_cast(0.7802219584656995721161365509033203125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(0.75), 19), + static_cast(0.17609299321266007609665393829345703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(1.0f - 1.0f/64.0f), 19), + static_cast(0.8327888521934174049333133442289010778727e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(6.5), 19), + static_cast(0.4179028813935817562572479248046875e16L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(0.125)), + static_cast(0.7317509740045990140888676478425622917712e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(0.25)), + static_cast(0.7802219584656995721161365509033203125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(0.75)), + static_cast(0.17609299321266007609665393829345703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8327888521934174049333133442289010778727e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19c, static_cast(6.5)), + static_cast(0.4179028813935817562572479248046875e16L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19a, static_cast(0.125)), + static_cast(0.7317509740045990140888676478425622917712e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19a, static_cast(0.25)), + static_cast(0.7802219584656995721161365509033203125e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19a, static_cast(0.75)), + static_cast(0.17609299321266007609665393829345703125e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8327888521934174049333133442289010778727e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_polynomial(n19a, static_cast(6.5)), + static_cast(0.4179028813935817562572479248046875e16L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(0.125), 19), + static_cast(0.7032234433238304833197011488540991991734e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(0.25), 19), + static_cast(0.7141177719741940632063571816842174888595e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(0.75), 19), + static_cast(0.107671418972012709727788225142148040292e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(1.0f - 1.0f/64.0f), 19), + static_cast(0.7205306905267900876445365429703520869133e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(6.5f), 19), + static_cast(0.1670453627683043936397442394984734181614e31L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(0.125)), + static_cast(0.7032234433238304833197011488540991991734e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(0.25)), + static_cast(0.7141177719741940632063571816842174888595e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(0.75)), + static_cast(0.107671418972012709727788225142148040292e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7205306905267900876445365429703520869133e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19c, static_cast(6.5f)), + static_cast(0.1670453627683043936397442394984734181614e31L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19a, static_cast(0.125)), + static_cast(0.7032234433238304833197011488540991991734e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19a, static_cast(0.25)), + static_cast(0.7141177719741940632063571816842174888595e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19a, static_cast(0.75)), + static_cast(0.107671418972012709727788225142148040292e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7205306905267900876445365429703520869133e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_even_polynomial(n19a, static_cast(6.5f)), + static_cast(0.1670453627683043936397442394984734181614e31L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(0.125), 19), + static_cast(0.7257875465906438665576091908327935933871e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(0.25), 19), + static_cast(0.7564710878967762528254287267368699554382e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(0.75), 19), + static_cast(0.120228558629350279637050966856197387056e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(1.0f - 1.0f/64.0f), 19), + static_cast(0.7308565745034058033214339484143259295627e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(6.5f), 19), + static_cast(0.2569928657973913748303757530804975664022e30L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(0.125)), + static_cast(0.7257875465906438665576091908327935933871e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(0.25)), + static_cast(0.7564710878967762528254287267368699554382e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(0.75)), + static_cast(0.120228558629350279637050966856197387056e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7308565745034058033214339484143259295627e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19c, static_cast(6.5f)), + static_cast(0.2569928657973913748303757530804975664022e30L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19a, static_cast(0.125)), + static_cast(0.7257875465906438665576091908327935933871e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19a, static_cast(0.25)), + static_cast(0.7564710878967762528254287267368699554382e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19a, static_cast(0.75)), + static_cast(0.120228558629350279637050966856197387056e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.7308565745034058033214339484143259295627e2L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_odd_polynomial(n19a, static_cast(6.5f)), + static_cast(0.2569928657973913748303757530804975664022e30L), + tolerance); + // + // Rational functions of order 18 + // + static const U d19c[19] = { 3, 2, 3, 3, 10, 6, 2, 6, 9, 8, 8, 10, 5, 7, 6, 4, 6, 9, 7 }; + static const boost::array d19a = { 3, 2, 3, 3, 10, 6, 2, 6, 9, 8, 8, 10, 5, 7, 6, 4, 6, 9, 7 }; + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(0.125), 19), + static_cast(0.2213824709533496994632324982010106870288e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(0.25), 19), + static_cast(0.2063899260318829004588039751781791436716e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(0.75), 19), + static_cast(0.1085337280046506127330919833145641152667e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(1.0f - 1.0f/64.0f), 19), + static_cast(0.8530644127293554041631338796773621506306e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(6.5f), 19), + static_cast(0.1140014406058131768268407547610620204626e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(10247.25f), 19), + static_cast(0.1285594810697167354761598106316532892359e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(0.125)), + static_cast(0.2213824709533496994632324982010106870288e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(0.25)), + static_cast(0.2063899260318829004588039751781791436716e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(0.75)), + static_cast(0.1085337280046506127330919833145641152667e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8530644127293554041631338796773621506306e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(6.5f)), + static_cast(0.1140014406058131768268407547610620204626e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19c, d19c, static_cast(10247.25f)), + static_cast(0.1285594810697167354761598106316532892359e1L), + tolerance); + + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19a, d19a, static_cast(0.125)), + static_cast(0.2213824709533496994632324982010106870288e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19a, d19a, static_cast(0.25)), + static_cast(0.2063899260318829004588039751781791436716e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19a, d19a, static_cast(0.75)), + static_cast(0.1085337280046506127330919833145641152667e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19a, d19a, static_cast(1.0f - 1.0f/64.0f)), + static_cast(0.8530644127293554041631338796773621506306e0L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19a, d19a, static_cast(6.5f)), + static_cast(0.1140014406058131768268407547610620204626e1L), + tolerance); + BOOST_CHECK_CLOSE( + boost::math::tools::evaluate_rational(n19a, d19a, static_cast(10247.25f)), + static_cast(0.1285594810697167354761598106316532892359e1L), + tolerance); +} + +template +void do_test_spots(T t, U u) +{ + do_test_spots1(t, u); + do_test_spots2(t, u); + do_test_spots3(t, u); + do_test_spots4(t, u); + do_test_spots5(t, u); + do_test_spots6(t, u); + do_test_spots7(t, u); + do_test_spots8(t, u); + do_test_spots9(t, u); + do_test_spots10(t, u); + do_test_spots11(t, u); + do_test_spots12(t, u); + do_test_spots13(t, u); + do_test_spots14(t, u); + do_test_spots15(t, u); + do_test_spots16(t, u); + do_test_spots17(t, u); + do_test_spots18(t, u); +} + +#endif diff --git a/test/test_rational_instances/test_rational_double1.cpp b/test/test_rational_instances/test_rational_double1.cpp new file mode 100644 index 000000000..4cc42ec0f --- /dev/null +++ b/test/test_rational_instances/test_rational_double1.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(double, double); + diff --git a/test/test_rational_instances/test_rational_double2.cpp b/test/test_rational_instances/test_rational_double2.cpp new file mode 100644 index 000000000..254bbcd90 --- /dev/null +++ b/test/test_rational_instances/test_rational_double2.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(double, int); + diff --git a/test/test_rational_instances/test_rational_double3.cpp b/test/test_rational_instances/test_rational_double3.cpp new file mode 100644 index 000000000..d371b988b --- /dev/null +++ b/test/test_rational_instances/test_rational_double3.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(double, unsigned); + diff --git a/test/test_rational_instances/test_rational_double4.cpp b/test/test_rational_instances/test_rational_double4.cpp new file mode 100644 index 000000000..64e31eccd --- /dev/null +++ b/test/test_rational_instances/test_rational_double4.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "test_rational.hpp" + +#ifdef BOOST_HAS_LONG_LONG +template void do_test_spots(double, unsigned long long); +#endif diff --git a/test/test_rational_instances/test_rational_double5.cpp b/test/test_rational_instances/test_rational_double5.cpp new file mode 100644 index 000000000..f5ed5c863 --- /dev/null +++ b/test/test_rational_instances/test_rational_double5.cpp @@ -0,0 +1,9 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(double, float); diff --git a/test/test_rational_instances/test_rational_float1.cpp b/test/test_rational_instances/test_rational_float1.cpp new file mode 100644 index 000000000..227c48267 --- /dev/null +++ b/test/test_rational_instances/test_rational_float1.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(float, float); + diff --git a/test/test_rational_instances/test_rational_float2.cpp b/test/test_rational_instances/test_rational_float2.cpp new file mode 100644 index 000000000..81b843d83 --- /dev/null +++ b/test/test_rational_instances/test_rational_float2.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(float, int); + diff --git a/test/test_rational_instances/test_rational_float3.cpp b/test/test_rational_instances/test_rational_float3.cpp new file mode 100644 index 000000000..aa7a1ae7d --- /dev/null +++ b/test/test_rational_instances/test_rational_float3.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(float, unsigned); + diff --git a/test/test_rational_instances/test_rational_float4.cpp b/test/test_rational_instances/test_rational_float4.cpp new file mode 100644 index 000000000..49f792016 --- /dev/null +++ b/test/test_rational_instances/test_rational_float4.cpp @@ -0,0 +1,11 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +#ifdef BOOST_HAS_LONG_LONG +template void do_test_spots(float, unsigned long long); +#endif diff --git a/test/test_rational_instances/test_rational_ldouble1.cpp b/test/test_rational_instances/test_rational_ldouble1.cpp new file mode 100644 index 000000000..5b69bbafb --- /dev/null +++ b/test/test_rational_instances/test_rational_ldouble1.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(long double, long double); + diff --git a/test/test_rational_instances/test_rational_ldouble2.cpp b/test/test_rational_instances/test_rational_ldouble2.cpp new file mode 100644 index 000000000..593c33f33 --- /dev/null +++ b/test/test_rational_instances/test_rational_ldouble2.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(long double, int); + diff --git a/test/test_rational_instances/test_rational_ldouble3.cpp b/test/test_rational_instances/test_rational_ldouble3.cpp new file mode 100644 index 000000000..82281c381 --- /dev/null +++ b/test/test_rational_instances/test_rational_ldouble3.cpp @@ -0,0 +1,10 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(long double, unsigned); + diff --git a/test/test_rational_instances/test_rational_ldouble4.cpp b/test/test_rational_instances/test_rational_ldouble4.cpp new file mode 100644 index 000000000..9b945b186 --- /dev/null +++ b/test/test_rational_instances/test_rational_ldouble4.cpp @@ -0,0 +1,11 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +#ifdef BOOST_HAS_LONG_LONG +template void do_test_spots(long double, unsigned long long); +#endif diff --git a/test/test_rational_instances/test_rational_ldouble5.cpp b/test/test_rational_instances/test_rational_ldouble5.cpp new file mode 100644 index 000000000..cccd06926 --- /dev/null +++ b/test/test_rational_instances/test_rational_ldouble5.cpp @@ -0,0 +1,9 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include "test_rational.hpp" + +template void do_test_spots(long double, float); diff --git a/test/test_rational_instances/test_rational_real_concept1.cpp b/test/test_rational_instances/test_rational_real_concept1.cpp new file mode 100644 index 000000000..144cc33df --- /dev/null +++ b/test/test_rational_instances/test_rational_real_concept1.cpp @@ -0,0 +1,15 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + +#include "test_rational.hpp" +#include + +template void do_test_spots(boost::math::concepts::real_concept, boost::math::concepts::real_concept); + +#endif diff --git a/test/test_rational_instances/test_rational_real_concept2.cpp b/test/test_rational_instances/test_rational_real_concept2.cpp new file mode 100644 index 000000000..2c04fc62e --- /dev/null +++ b/test/test_rational_instances/test_rational_real_concept2.cpp @@ -0,0 +1,15 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + +#include "test_rational.hpp" +#include + +template void do_test_spots(boost::math::concepts::real_concept, int); + +#endif diff --git a/test/test_rational_instances/test_rational_real_concept3.cpp b/test/test_rational_instances/test_rational_real_concept3.cpp new file mode 100644 index 000000000..e238dcc3e --- /dev/null +++ b/test/test_rational_instances/test_rational_real_concept3.cpp @@ -0,0 +1,15 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + +#include "test_rational.hpp" +#include + +template void do_test_spots(boost::math::concepts::real_concept, unsigned); + +#endif diff --git a/test/test_rational_instances/test_rational_real_concept4.cpp b/test/test_rational_instances/test_rational_real_concept4.cpp new file mode 100644 index 000000000..e74537f75 --- /dev/null +++ b/test/test_rational_instances/test_rational_real_concept4.cpp @@ -0,0 +1,16 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + +#include "test_rational.hpp" +#include + +#ifdef BOOST_HAS_LONG_LONG +template void do_test_spots(boost::math::concepts::real_concept, unsigned long long); +#endif +#endif diff --git a/test/test_rational_instances/test_rational_real_concept5.cpp b/test/test_rational_instances/test_rational_real_concept5.cpp new file mode 100644 index 000000000..1bd217c37 --- /dev/null +++ b/test/test_rational_instances/test_rational_real_concept5.cpp @@ -0,0 +1,15 @@ +// (C) Copyright John Maddock 2006-7. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + +#include "test_rational.hpp" +#include + +template void do_test_spots(boost::math::concepts::real_concept, float); + +#endif diff --git a/test/test_rationals.cpp b/test/test_rationals.cpp new file mode 100644 index 000000000..7987cdfc9 --- /dev/null +++ b/test/test_rationals.cpp @@ -0,0 +1,47 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include + +template +void do_test_spots(T, U); + +template +void test_spots(T t, const char* n) +{ + std::cout << "Testing basic sanity checks for type " << n << std::endl; + do_test_spots(t, int(0)); + do_test_spots(t, unsigned(0)); +#ifdef BOOST_HAS_LONG_LONG + do_test_spots(t, (unsigned long long)(0)); +#endif + do_test_spots(t, float(0)); + do_test_spots(t, T(0)); +} + +int test_main(int, char* []) +{ + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + diff --git a/test/test_rayleigh.cpp b/test/test_rayleigh.cpp new file mode 100644 index 000000000..be876ad24 --- /dev/null +++ b/test/test_rayleigh.cpp @@ -0,0 +1,319 @@ +// Copyright John Maddock 2006. + +// 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) + +// test_rayleigh.cpp + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +# pragma warning(disable: 4100) // unreferenced formal parameter. +#endif + +#include // for real_concept +#include + using boost::math::rayleigh_distribution; + +#include // Boost.Test +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; + +template +void test_spot(RealType s, RealType x, RealType p, RealType q, RealType tolerance) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + rayleigh_distribution(s), + x), + p, + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement(rayleigh_distribution(s), + x)), + q, + tolerance); // % + // Special extra tests for p and q near to unity. + if(p < 0.999) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + rayleigh_distribution(s), + p), + x, + tolerance); // % + } + if(q < 0.999) + { + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement(rayleigh_distribution(s), + q)), + x, + tolerance); // % + } +} // void test_spot + +template +void test_spots(RealType T) +{ + using namespace std; // ADL of std names. + // Basic sanity checks. + // 50 eps as a percentage, up to a maximum of double precision + // (that's the limit of our test data: obtained by punching + // numbers into a calculator). + RealType tolerance = (std::max)( + static_cast(boost::math::tools::epsilon()), + boost::math::tools::epsilon()); + tolerance *= 10 * 100; // 10 eps as a percent + cout << "Tolerance for type " << typeid(T).name() << " is " << tolerance << " %" << endl; + + using namespace boost::math::constants; + + // Things that are errors: + rayleigh_distribution dist(0.5); + + BOOST_CHECK_THROW( + quantile(dist, + RealType(1.)), // quantile unity should overflow. + std::overflow_error); + BOOST_CHECK_THROW( + quantile(complement(dist, + RealType(0.))), // quantile complement zero should overflow. + std::overflow_error); + BOOST_CHECK_THROW( + pdf(dist, RealType(-1)), // Bad negative x. + std::domain_error); + BOOST_CHECK_THROW( + cdf(dist, RealType(-1)), // Bad negative x. + std::domain_error); + BOOST_CHECK_THROW( + cdf(rayleigh_distribution(-1), // bad sigma < 0 + RealType(1)), + std::domain_error); + BOOST_CHECK_THROW( + cdf(rayleigh_distribution(0), // bad sigma == 0 + RealType(1)), + std::domain_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(-1)), // negative quantile probability. + std::domain_error); + BOOST_CHECK_THROW( + quantile(dist, RealType(2)), // > unity quantile probability. + std::domain_error); + + test_spot( + static_cast(1.L), // sigma + static_cast(1.L), // x + static_cast(1 - exp_minus_half()), // p + static_cast(exp_minus_half()), // q + tolerance); + + test_spot( + static_cast(0.5L), // sigma + static_cast(0.5L), // x + static_cast(1 - exp_minus_half()), // p + static_cast(exp_minus_half()), //q + tolerance); + + test_spot( + static_cast(3.L), // sigma + static_cast(3.L), // x + static_cast(1 - exp_minus_half()), // p + static_cast(exp_minus_half()), //q + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + rayleigh_distribution(1.L), + static_cast(1.L)), // x + static_cast(exp_minus_half()), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + rayleigh_distribution(0.5L), + static_cast(0.5L)), // x + static_cast(2 * exp_minus_half()), // probability. + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::pdf( + rayleigh_distribution(2.L), + static_cast(2.L)), // x + static_cast(exp_minus_half() /2), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::mean( + rayleigh_distribution(1.L)), + static_cast(root_half_pi()), + tolerance); // % + BOOST_CHECK_CLOSE( + ::boost::math::variance( + rayleigh_distribution(root_two())), + static_cast(four_minus_pi()), + tolerance * 100); // % + + BOOST_CHECK_CLOSE( + ::boost::math::mode( + rayleigh_distribution(1.L)), + static_cast(1.L), + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::median( + rayleigh_distribution(1.L)), + static_cast(sqrt(log(4.L))), // sigma * sqrt(log_four) + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::skewness( + rayleigh_distribution(1.L)), + static_cast(2.L * root_pi()) * (pi() - 3) / (pow((4 - pi()), static_cast(1.5L))), + tolerance * 100); // % + + BOOST_CHECK_CLOSE( + ::boost::math::skewness( + rayleigh_distribution(1.L)), + static_cast(0.63111065781893713819189935154422777984404221106391L), + tolerance * 100); // % + + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis_excess( + rayleigh_distribution(1.L)), + static_cast(0.2450893006876380628486604106197544154170667057995L), + tolerance * 1000); // % + + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis( + rayleigh_distribution(1.L)), + static_cast(3.2450893006876380628486604106197544154170667057995L), + tolerance * 100); // % + + + BOOST_CHECK_CLOSE( + ::boost::math::kurtosis_excess(rayleigh_distribution(2)), + ::boost::math::kurtosis(rayleigh_distribution(2)) -3, + tolerance* 100); // % + return; + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Check that can generate rayleigh distribution using the two convenience methods: + boost::math::rayleigh ray1(1.); // Using typedef + rayleigh_distribution<> ray2(1.); // Using default RealType double. + + using namespace boost::math::constants; + // Basic sanity-check spot values. + + // Double only tests. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::pdf( + rayleigh_distribution(1.), + static_cast(1)), // x + static_cast(exp_minus_half()), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::pdf( + rayleigh_distribution(0.5), + static_cast(0.5)), // x + static_cast(2 * exp_minus_half()), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::pdf( + rayleigh_distribution(2.), + static_cast(2)), // x + static_cast(exp_minus_half() /2 ), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + rayleigh_distribution(1.), + static_cast(1)), // x + static_cast(1- exp_minus_half()), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + rayleigh_distribution(2.), + static_cast(2)), // x + static_cast(1- exp_minus_half()), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + rayleigh_distribution(3.), + static_cast(3)), // x + static_cast(1- exp_minus_half()), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + rayleigh_distribution(4.), + static_cast(4)), // x + static_cast(1- exp_minus_half()), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf(complement( + rayleigh_distribution(4.), + static_cast(4))), // x + static_cast(exp_minus_half()), // q = 1 - p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + rayleigh_distribution(4.), + static_cast(1- exp_minus_half())), // x + static_cast(4), // p + 1e-15); // % + + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile(complement( + rayleigh_distribution(4.), + static_cast(exp_minus_half()))), // x + static_cast(4), // p + 1e-15); // % + + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output is: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_rayleigh.exe" +Running 1 test case... +Tolerance for type float is 0.000119209 % +Tolerance for type double is 2.22045e-013 % +Tolerance for type long double is 2.22045e-013 % +Tolerance for type class boost::math::concepts::real_concept is 2.22045e-013 % +*** No errors detected + +*/ + + diff --git a/test/test_remez.cpp b/test/test_remez.cpp new file mode 100644 index 000000000..661217ccd --- /dev/null +++ b/test/test_remez.cpp @@ -0,0 +1,181 @@ +// Copyright John Maddock 2006 +// Copyright Paul A. Bristow 2007 +// 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) + +#ifdef _MSC_VER +# pragma warning(disable : 4267) // conversion from 'size_t' to 'const unsigned int', possible loss of data +# pragma warning(disable : 4180) // qualifier applied to function type has no meaning; ignored +# pragma warning(disable : 4224) // nonstandard extension used : formal parameter 'function_ptr' was previously defined as a type +#endif + +#include +#include +#include +#include + + +void test_polynomial() +{ +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + double (*f)(double) = boost::math::expm1; +#else + double (*f)(double) = boost::math::expm1; +#endif + std::cout << "Testing expm1 approximation, pinned to origin, abolute error, 6 term polynomial\n"; + boost::math::tools::remez_minimax approx1(f, 6, 0, -1, 1, true, false); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx1.iterate(); + std::cout << approx1.error_term() << " " << approx1.max_error() << " " << approx1.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + std::cout << "Testing expm1 approximation, pinned to origin, relative error, 6 term polynomial\n"; + boost::math::tools::remez_minimax approx2(f, 6, 0, -1, 1, true, true); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx2.iterate(); + std::cout << approx2.error_term() << " " << approx2.max_error() << " " << approx2.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + + f = std::exp; + std::cout << "Testing exp approximation, not pinned to origin, abolute error, 6 term polynomial\n"; + boost::math::tools::remez_minimax approx3(f, 6, 0, -1, 1, false, false); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx3.iterate(); + std::cout << approx3.error_term() << " " << approx3.max_error() << " " << approx3.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + std::cout << "Testing exp approximation, not pinned to origin, relative error, 6 term polynomial\n"; + boost::math::tools::remez_minimax approx4(f, 6, 0, -1, 1, false, true); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx4.iterate(); + std::cout << approx4.error_term() << " " << approx4.max_error() << " " << approx4.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + + f = std::cos; + std::cout << "Testing cos approximation, not pinned to origin, abolute error, 5 term polynomial\n"; + boost::math::tools::remez_minimax approx5(f, 5, 0, -1, 1, false, false); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx5.iterate(); + std::cout << approx5.error_term() << " " << approx5.max_error() << " " << approx5.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + std::cout << "Testing cos approximation, not pinned to origin, relative error, 5 term polynomial\n"; + boost::math::tools::remez_minimax approx6(f, 5, 0, -1, 1, false, true); + for(unsigned i = 0; i < 7; ++i) + { + approx6.iterate(); + std::cout << approx6.error_term() << " " << approx6.max_error() << " " << approx6.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + + f = std::sin; + std::cout << "Testing sin approximation, pinned to origin, abolute error, 4 term polynomial\n"; + boost::math::tools::remez_minimax approx7(f, 4, 0, 0, 1, true, false); + for(unsigned i = 0; i < 7; ++i) + { + approx7.iterate(); + std::cout << approx7.error_term() << " " << approx7.max_error() << " " << approx7.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + std::cout << "Testing sin approximation, pinned to origin, relative error, 4 term polynomial\n"; + boost::math::tools::remez_minimax approx8(f, 4, 0, 0, 1, true, true); + for(unsigned i = 0; i < 7; ++i) + { + approx8.iterate(); + std::cout << approx8.error_term() << " " << approx8.max_error() << " " << approx8.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; +} + +void test_rational() +{ +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + double (*f)(double) = boost::math::expm1; +#else + double (*f)(double) = boost::math::expm1; +#endif + std::cout << "Testing expm1 approximation, pinned to origin, abolute error, 3+3 term rational\n"; + boost::math::tools::remez_minimax approx1(f, 3, 3, -1, 1, true, false); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx1.iterate(); + std::cout << approx1.error_term() << " " << approx1.max_error() << " " << approx1.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; +#if 0 + // + // This one causes UBLAS to fail on some systems, so disabled for now. + // + std::cout << "Testing expm1 approximation, pinned to origin, relative error, 3+3 term rational\n"; + boost::math::tools::remez_minimax approx2(f, 3, 3, -1, 1, true, true); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx2.iterate(); + std::cout << approx2.error_term() << " " << approx2.max_error() << " " << approx2.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; +#endif + f = std::exp; + std::cout << "Testing exp approximation, not pinned to origin, abolute error, 3+3 term rational\n"; + boost::math::tools::remez_minimax approx3(f, 3, 3, -1, 1, false, false); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx3.iterate(); + std::cout << approx3.error_term() << " " << approx3.max_error() << " " << approx3.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + std::cout << "Testing exp approximation, not pinned to origin, relative error, 3+3 term rational\n"; + boost::math::tools::remez_minimax approx4(f, 3, 3, -1, 1, false, true); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx4.iterate(); + std::cout << approx4.error_term() << " " << approx4.max_error() << " " << approx4.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + + f = std::cos; + std::cout << "Testing cos approximation, not pinned to origin, abolute error, 2+2 term rational\n"; + boost::math::tools::remez_minimax approx5(f, 2, 2, 0, 1, false, false); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx5.iterate(); + std::cout << approx5.error_term() << " " << approx5.max_error() << " " << approx5.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; + std::cout << "Testing cos approximation, not pinned to origin, relative error, 2+2 term rational\n"; + boost::math::tools::remez_minimax approx6(f, 2, 2, 0, 1, false, true); + std::cout << "Interpolation Error: " << approx1.max_error() << std::endl; + for(unsigned i = 0; i < 7; ++i) + { + approx6.iterate(); + std::cout << approx6.error_term() << " " << approx6.max_error() << " " << approx6.max_change() << std::endl; + } + std::cout << "~~~~~~~~~~~~~~~~~~~~~~~~~" << std::endl; +} + +int test_main(int, char* []) +{ + test_polynomial(); + test_rational(); + return 0; +} + + diff --git a/test/test_roots.cpp b/test/test_roots.cpp new file mode 100644 index 000000000..2ac488e5a --- /dev/null +++ b/test/test_roots.cpp @@ -0,0 +1,315 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include + +#define BOOST_CHECK_CLOSE_EX(a, b, prec, i) \ + {\ + unsigned int failures = boost::unit_test::results_collector.results( boost::unit_test::framework::current_test_case().p_id ).p_assertions_failed;\ + BOOST_CHECK_CLOSE(a, b, prec); \ + if(failures != boost::unit_test::results_collector.results( boost::unit_test::framework::current_test_case().p_id ).p_assertions_failed)\ + {\ + std::cerr << "Failure was at row " << i << std::endl;\ + std::cerr << std::setprecision(35); \ + std::cerr << "{ " << data[i][0] << " , " << data[i][1] << " , " << data[i][2];\ + std::cerr << " , " << data[i][3] << " , " << data[i][4] << " , " << data[i][5] << " } " << std::endl;\ + }\ + } + + +// +// Implement various versions of inverse of the incomplete beta +// using different root finding algorithms, and deliberately "bad" +// starting conditions: that way we get all the pathological cases +// we could ever wish for!!! +// + +template +struct ibeta_roots_1 // for first order algorithms +{ + ibeta_roots_1(T _a, T _b, T t, bool inv = false) + : a(_a), b(_b), target(t), invert(inv) {} + + T operator()(const T& x) + { + return boost::math::detail::ibeta_imp(a, b, x, Policy(), invert, true) - target; + } +private: + T a, b, target; + bool invert; +}; + +template +struct ibeta_roots_2 // for second order algorithms +{ + ibeta_roots_2(T _a, T _b, T t, bool inv = false) + : a(_a), b(_b), target(t), invert(inv) {} + + std::tr1::tuple operator()(const T& x) + { + typedef typename boost::math::lanczos::lanczos::type L; + T f = boost::math::detail::ibeta_imp(a, b, x, Policy(), invert, true) - target; + T f1 = invert ? + -boost::math::detail::ibeta_power_terms(b, a, 1 - x, x, L(), true, Policy()) + : boost::math::detail::ibeta_power_terms(a, b, x, 1 - x, L(), true, Policy()); + T y = 1 - x; + if(y == 0) + y = boost::math::tools::min_value() * 8; + f1 /= y * x; + + // make sure we don't have a zero derivative: + if(f1 == 0) + f1 = (invert ? -1 : 1) * boost::math::tools::min_value() * 64; + + return std::tr1::make_tuple(f, f1); + } +private: + T a, b, target; + bool invert; +}; + +template +struct ibeta_roots_3 // for third order algorithms +{ + ibeta_roots_3(T _a, T _b, T t, bool inv = false) + : a(_a), b(_b), target(t), invert(inv) {} + + std::tr1::tuple operator()(const T& x) + { + typedef typename boost::math::lanczos::lanczos::type L; + T f = boost::math::detail::ibeta_imp(a, b, x, Policy(), invert, true) - target; + T f1 = invert ? + -boost::math::detail::ibeta_power_terms(b, a, 1 - x, x, L(), true, Policy()) + : boost::math::detail::ibeta_power_terms(a, b, x, 1 - x, L(), true, Policy()); + T y = 1 - x; + if(y == 0) + y = boost::math::tools::min_value() * 8; + f1 /= y * x; + T f2 = f1 * (-y * a + (b - 2) * x + 1) / (y * x); + if(invert) + f2 = -f2; + + // make sure we don't have a zero derivative: + if(f1 == 0) + f1 = (invert ? -1 : 1) * boost::math::tools::min_value() * 64; + + return std::tr1::make_tuple(f, f1, f2); + } +private: + T a, b, target; + bool invert; +}; + +double inverse_ibeta_bisect(double a, double b, double z) +{ + typedef boost::math::policies::policy<> pol; + bool invert = false; + int bits = std::numeric_limits::digits; + + // + // special cases, we need to have these because there may be other + // possible answers: + // + if(z == 1) return 1; + if(z == 0) return 0; + + // + // We need a good estimate of the error in the incomplete beta function + // so that we don't set the desired precision too high. Assume that 3-bits + // are lost each time the arguments increase by a factor of 10: + // + using namespace std; + int bits_lost = static_cast(ceil(log10((std::max)(a, b)) * 3)); + if(bits_lost < 0) + bits_lost = 3; + else + bits_lost += 3; + int precision = bits - bits_lost; + + double min = 0; + double max = 1; + boost::math::tools::eps_tolerance tol(precision); + return boost::math::tools::bisect(ibeta_roots_1(a, b, z, invert), min, max, tol).first; +} + +double inverse_ibeta_newton(double a, double b, double z) +{ + double guess = 0.5; + bool invert = false; + int bits = std::numeric_limits::digits; + + // + // special cases, we need to have these because there may be other + // possible answers: + // + if(z == 1) return 1; + if(z == 0) return 0; + + // + // We need a good estimate of the error in the incomplete beta function + // so that we don't set the desired precision too high. Assume that 3-bits + // are lost each time the arguments increase by a factor of 10: + // + using namespace std; + int bits_lost = static_cast(ceil(log10((std::max)(a, b)) * 3)); + if(bits_lost < 0) + bits_lost = 3; + else + bits_lost += 3; + int precision = bits - bits_lost; + + double min = 0; + double max = 1; + return boost::math::tools::newton_raphson_iterate(ibeta_roots_2 >(a, b, z, invert), guess, min, max, precision); +} + +double inverse_ibeta_halley(double a, double b, double z) +{ + double guess = 0.5; + bool invert = false; + int bits = std::numeric_limits::digits; + + // + // special cases, we need to have these because there may be other + // possible answers: + // + if(z == 1) return 1; + if(z == 0) return 0; + + // + // We need a good estimate of the error in the incomplete beta function + // so that we don't set the desired precision too high. Assume that 3-bits + // are lost each time the arguments increase by a factor of 10: + // + using namespace std; + int bits_lost = static_cast(ceil(log10((std::max)(a, b)) * 3)); + if(bits_lost < 0) + bits_lost = 3; + else + bits_lost += 3; + int precision = bits - bits_lost; + + double min = 0; + double max = 1; + return boost::math::tools::halley_iterate(ibeta_roots_3 >(a, b, z, invert), guess, min, max, precision); +} + +double inverse_ibeta_schroeder(double a, double b, double z) +{ + double guess = 0.5; + bool invert = false; + int bits = std::numeric_limits::digits; + + // + // special cases, we need to have these because there may be other + // possible answers: + // + if(z == 1) return 1; + if(z == 0) return 0; + + // + // We need a good estimate of the error in the incomplete beta function + // so that we don't set the desired precision too high. Assume that 3-bits + // are lost each time the arguments increase by a factor of 10: + // + using namespace std; + int bits_lost = static_cast(ceil(log10((std::max)(a, b)) * 3)); + if(bits_lost < 0) + bits_lost = 3; + else + bits_lost += 3; + int precision = bits - bits_lost; + + double min = 0; + double max = 1; + return boost::math::tools::schroeder_iterate(ibeta_roots_3 >(a, b, z, invert), guess, min, max, precision); +} + + +template +void test_inverses(const T& data) +{ + using namespace std; + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + value_type precision = static_cast(ldexp(1.0, 1-boost::math::policies::digits >()/2)) * 100; + if(boost::math::policies::digits >() < 50) + precision = 1; // 1% or two decimal digits, all we can hope for when the input is truncated + + for(unsigned i = 0; i < data.size(); ++i) + { + // + // These inverse tests are thrown off if the output of the + // incomplete beta is too close to 1: basically there is insuffient + // information left in the value we're using as input to the inverse + // to be able to get back to the original value. + // + if(data[i][5] == 0) + { + BOOST_CHECK_EQUAL(inverse_ibeta_halley(data[i][0], data[i][1], data[i][5]), value_type(0)); + BOOST_CHECK_EQUAL(inverse_ibeta_schroeder(data[i][0], data[i][1], data[i][5]), value_type(0)); + BOOST_CHECK_EQUAL(inverse_ibeta_newton(data[i][0], data[i][1], data[i][5]), value_type(0)); + BOOST_CHECK_EQUAL(inverse_ibeta_bisect(data[i][0], data[i][1], data[i][5]), value_type(0)); + } + else if((1 - data[i][5] > 0.001) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value()) + && (fabs(data[i][5]) > 2 * boost::math::tools::min_value())) + { + value_type inv = inverse_ibeta_halley(data[i][0], data[i][1], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][2], inv, precision, i); + inv = inverse_ibeta_schroeder(data[i][0], data[i][1], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][2], inv, precision, i); + inv = inverse_ibeta_newton(data[i][0], data[i][1], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][2], inv, precision, i); + inv = inverse_ibeta_bisect(data[i][0], data[i][1], data[i][5]); + BOOST_CHECK_CLOSE_EX(data[i][2], inv, precision, i); + } + else if(1 == data[i][5]) + { + BOOST_CHECK_EQUAL(inverse_ibeta_halley(data[i][0], data[i][1], data[i][5]), value_type(1)); + BOOST_CHECK_EQUAL(inverse_ibeta_schroeder(data[i][0], data[i][1], data[i][5]), value_type(1)); + BOOST_CHECK_EQUAL(inverse_ibeta_newton(data[i][0], data[i][1], data[i][5]), value_type(1)); + BOOST_CHECK_EQUAL(inverse_ibeta_bisect(data[i][0], data[i][1], data[i][5]), value_type(1)); + } + + } +} + +template +void test_beta(T, const char* /* name */) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // five items, input value a, input value b, integration limits x, beta(a, b, x) and ibeta(a, b, x): + // +# include "ibeta_small_data.ipp" + + test_inverses(ibeta_small_data); + +# include "ibeta_data.ipp" + + test_inverses(ibeta_data); + +# include "ibeta_large_data.ipp" + + test_inverses(ibeta_large_data); +} + +int test_main(int, char* []) +{ + test_beta(0.1, "double"); + return 0; +} + + + diff --git a/test/test_spherical_harmonic.cpp b/test/test_spherical_harmonic.cpp new file mode 100644 index 000000000..3b68be35c --- /dev/null +++ b/test/test_spherical_harmonic.cpp @@ -0,0 +1,314 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the Spherical Harmonic Functions. +// There are two sets of tests, spot +// tests which compare our results with selected values computed +// using the online special function calculator at +// functions.wolfram.com, while the bulk of the accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if((std::numeric_limits::digits <= 64) && + (std::numeric_limits::digits != std::numeric_limits::digits)) + { + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "double", // test type(s) + ".*", // test data group + ".*", 10, 5); // test function + } +#endif + // + // Catch all cases come last: + // + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + largest_type, // test type(s) + ".*", // test data group + ".*", 30000, 1000); // test function + add_expected_result( + ".*", // compiler + ".*", // stdlib + ".*", // platform + "real_concept", // test type(s) + ".*", // test data group + ".*", 30000, 1000); // test function + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +template +void do_test_spherical_harmonic(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(unsigned, int, value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::spherical_harmonic_r; +#else + pg funcp = boost::math::spherical_harmonic_r; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test Spheric Harmonic against data: + // + result = boost::math::tools::test( + data, + bind_func_int2(funcp, 0, 1, 2, 3), + extract_result(4)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::spherical_harmonic_r", test_name); + +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + funcp = boost::math::spherical_harmonic_i; +#else + funcp = boost::math::spherical_harmonic_i; +#endif + // + // test Spheric Harmonic against data: + // + result = boost::math::tools::test( + data, + bind_func_int2(funcp, 0, 1, 2, 3), + extract_result(5)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::spherical_harmonic_i", test_name); + + std::cout << std::endl; +} + +template +void test_complex_spherical_harmonic(const T& data, const char* /* name */, boost::mpl::true_ const &) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + for(unsigned i = 0; i < sizeof(data) / sizeof(data[0]); ++i) + { + // + // Sanity check that the complex version does the same thing as the real + // and imaginary versions: + // + std::complex r = boost::math::spherical_harmonic( + boost::math::tools::real_cast(data[i][0]), + boost::math::tools::real_cast(data[i][1]), + data[i][2], + data[i][3]); + value_type re = boost::math::spherical_harmonic_r( + boost::math::tools::real_cast(data[i][0]), + boost::math::tools::real_cast(data[i][1]), + data[i][2], + data[i][3]); + value_type im = boost::math::spherical_harmonic_i( + boost::math::tools::real_cast(data[i][0]), + boost::math::tools::real_cast(data[i][1]), + data[i][2], + data[i][3]); + BOOST_CHECK_CLOSE_FRACTION(std::real(r), re, value_type(5)); + BOOST_CHECK_CLOSE_FRACTION(std::imag(r), im, value_type(5)); + } +} + +template +void test_complex_spherical_harmonic(const T& /* data */, const char* /* name */, boost::mpl::false_ const &) +{ + // T is not a built in type, can't use std::complex with it... +} + +template +void test_spherical_harmonic(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // + // The contents are as follows, each row of data contains + // three items, input value a, input value b and erf(a, b): + // +# include "spherical_harmonic.ipp" + + do_test_spherical_harmonic(spherical_harmonic, name, "Spherical Harmonics"); + + test_complex_spherical_harmonic(spherical_harmonic, name, boost::is_floating_point()); +} + +template +void test_spots(T, const char* t) +{ + std::cout << "Testing basic sanity checks for type " << t << std::endl; + // + // basic sanity checks, tolerance is 100 epsilon: + // + T tolerance = boost::math::tools::epsilon() * 100; + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(3, 2, static_cast(0.5), static_cast(0)), static_cast(0.2061460599687871330692286791802688341213L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 10, static_cast(0.75), static_cast(-0.25)), static_cast(0.06197787102219208244041677775577045124092L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 10, static_cast(0.75), static_cast(-0.25)), static_cast(0.04629885158895932341185988759669916977920L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, 15, static_cast(-0.75), static_cast(2.25)), static_cast(0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, 15, static_cast(-0.75), static_cast(2.25)), static_cast(-0.2933918444656603582282372590387544902135L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, 15, static_cast(-0.75), static_cast(-2.25)), static_cast(0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, 15, static_cast(-0.75), static_cast(-2.25)), static_cast(0.2933918444656603582282372590387544902135L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, 15, static_cast(0.75), static_cast(-2.25)), static_cast(-0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, 15, static_cast(0.75), static_cast(-2.25)), static_cast(-0.2933918444656603582282372590387544902135L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, 15, static_cast(0.75), static_cast(2.25)), static_cast(-0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, 15, static_cast(0.75), static_cast(2.25)), static_cast(0.2933918444656603582282372590387544902135L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(-0.75), static_cast(2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(-0.75), static_cast(2.25)), static_cast(0.0293201066685263879566422194539567289974L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(-0.75), static_cast(-2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(-0.75), static_cast(-2.25)), static_cast(-0.0293201066685263879566422194539567289974L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(0.75), static_cast(-2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(0.75), static_cast(-2.25)), static_cast(-0.0293201066685263879566422194539567289974L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(0.75), static_cast(2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(0.75), static_cast(2.25)), static_cast(0.0293201066685263879566422194539567289974L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(39, 15, static_cast(-0.75), static_cast(2.25)), static_cast(0.1757594233240278196989039119899901986211L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(39, 15, static_cast(-0.75), static_cast(2.25)), static_cast(-0.1837126108841860058078729532035715580790L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(39, 15, static_cast(-0.75), static_cast(-2.25)), static_cast(0.1757594233240278196989039119899901986211L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(39, 15, static_cast(-0.75), static_cast(-2.25)), static_cast(0.1837126108841860058078729532035715580790L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(39, 15, static_cast(0.75), static_cast(-2.25)), static_cast(-0.1757594233240278196989039119899901986211L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(39, 15, static_cast(0.75), static_cast(-2.25)), static_cast(-0.1837126108841860058078729532035715580790L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(39, 15, static_cast(0.75), static_cast(2.25)), static_cast(-0.1757594233240278196989039119899901986211L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(39, 15, static_cast(0.75), static_cast(2.25)), static_cast(0.1837126108841860058078729532035715580790L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(19, 14, static_cast(-0.75), static_cast(2.25)), static_cast(0.2341701030303444033808969389588343934828L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(19, 14, static_cast(-0.75), static_cast(2.25)), static_cast(0.0197340092863212879172432610952871202640L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(19, 14, static_cast(-0.75), static_cast(-2.25)), static_cast(0.2341701030303444033808969389588343934828L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(19, 14, static_cast(-0.75), static_cast(-2.25)), static_cast(-0.0197340092863212879172432610952871202640L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(19, 14, static_cast(0.75), static_cast(-2.25)), static_cast(0.2341701030303444033808969389588343934828L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(19, 14, static_cast(0.75), static_cast(-2.25)), static_cast(-0.0197340092863212879172432610952871202640L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(19, 14, static_cast(0.75), static_cast(2.25)), static_cast(0.2341701030303444033808969389588343934828L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(19, 14, static_cast(0.75), static_cast(2.25)), static_cast(0.0197340092863212879172432610952871202640L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, -15, static_cast(-0.75), static_cast(2.25)), static_cast(-0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, -15, static_cast(-0.75), static_cast(2.25)), static_cast(-0.2933918444656603582282372590387544902135L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, -15, static_cast(-0.75), static_cast(-2.25)), static_cast(-0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, -15, static_cast(-0.75), static_cast(-2.25)), static_cast(0.2933918444656603582282372590387544902135L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, -15, static_cast(0.75), static_cast(-2.25)), static_cast(0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, -15, static_cast(0.75), static_cast(-2.25)), static_cast(-0.2933918444656603582282372590387544902135L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(40, -15, static_cast(0.75), static_cast(2.25)), static_cast(0.2806904825045745687343492963236868973484L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(40, -15, static_cast(0.75), static_cast(2.25)), static_cast(0.2933918444656603582282372590387544902135L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, -14, static_cast(-0.75), static_cast(2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, -14, static_cast(-0.75), static_cast(2.25)), static_cast(-0.0293201066685263879566422194539567289974L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, -14, static_cast(-0.75), static_cast(-2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, -14, static_cast(-0.75), static_cast(-2.25)), static_cast(0.0293201066685263879566422194539567289974L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, -14, static_cast(0.75), static_cast(-2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, -14, static_cast(0.75), static_cast(-2.25)), static_cast(0.0293201066685263879566422194539567289974L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, -14, static_cast(0.75), static_cast(2.25)), static_cast(0.3479218186133435466692822481919867452442L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, -14, static_cast(0.75), static_cast(2.25)), static_cast(-0.0293201066685263879566422194539567289974L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(-4), static_cast(2.25)), static_cast(0.5253373768014719124617844890495875474590L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(-4), static_cast(2.25)), static_cast(0.0442712905622650144694916590407495495699L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(-4), static_cast(-2.25)), static_cast(0.5253373768014719124617844890495875474590L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(-4), static_cast(-2.25)), static_cast(-0.0442712905622650144694916590407495495699L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(4), static_cast(-2.25)), static_cast(0.5253373768014719124617844890495875474590L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(4), static_cast(-2.25)), static_cast(-0.0442712905622650144694916590407495495699L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 14, static_cast(4), static_cast(2.25)), static_cast(0.5253373768014719124617844890495875474590L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 14, static_cast(4), static_cast(2.25)), static_cast(0.0442712905622650144694916590407495495699L), tolerance); + + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 15, static_cast(-4), static_cast(2.25)), static_cast(-0.2991140325667575801827063718821420263438L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 15, static_cast(-4), static_cast(2.25)), static_cast(0.3126490678888350710506307405826667514065L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 15, static_cast(-4), static_cast(-2.25)), static_cast(-0.2991140325667575801827063718821420263438L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 15, static_cast(-4), static_cast(-2.25)), static_cast(-0.3126490678888350710506307405826667514065L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 15, static_cast(4), static_cast(-2.25)), static_cast(0.2991140325667575801827063718821420263438L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 15, static_cast(4), static_cast(-2.25)), static_cast(0.3126490678888350710506307405826667514065L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(20, 15, static_cast(4), static_cast(2.25)), static_cast(0.2991140325667575801827063718821420263438L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(20, 15, static_cast(4), static_cast(2.25)), static_cast(-0.3126490678888350710506307405826667514065L), tolerance); + + BOOST_CHECK_EQUAL(::boost::math::spherical_harmonic_r(10, 15, static_cast(-0.75), static_cast(2.25)), static_cast(0)); + BOOST_CHECK_EQUAL(::boost::math::spherical_harmonic_i(10, 15, static_cast(-0.75), static_cast(2.25)), static_cast(0)); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_r(53, 42, static_cast(-8.75), static_cast(-2.25)), static_cast(-0.0008147976618889536159592309471859037113647L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(::boost::math::spherical_harmonic_i(53, 42, static_cast(-8.75), static_cast(-2.25)), static_cast(0.0002099802242493057018193798824353982612756L), tolerance); +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + test_spots(0.0F, "float"); + test_spots(0.0, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L, "long double"); + test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif + + expected_results(); + + test_spherical_harmonic(0.1F, "float"); + test_spherical_harmonic(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spherical_harmonic(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS + test_spherical_harmonic(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + + diff --git a/test/test_students_t.cpp b/test/test_students_t.cpp new file mode 100644 index 000000000..153f360c7 --- /dev/null +++ b/test/test_students_t.cpp @@ -0,0 +1,416 @@ +// Copyright Paul A. Bristow 2006. +// Copyright John Maddock 2006. + +// 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) + +// test_students_t.cpp + +// http://en.wikipedia.org/wiki/Student%27s_t_distribution +// http://www.itl.nist.gov/div898/handbook/eda/section3/eda3664.htm + +// Basic sanity test for Student's t probability (quantile) (0. < p < 1). +// and Student's t probability Quantile (0. < p < 1). + +#include // Boost.Test +#include + +#include + using boost::math::students_t_distribution; +#include // for real_concept +#include // for real_concept + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; + +template +RealType naive_pdf(RealType v, RealType t) +{ + // Calculate the pdf of the students t in a deliberately + // naive way, using equation (5) from + // http://mathworld.wolfram.com/Studentst-Distribution.html + // This is equivalent to, but a different method + // to the one in the actual implementation, so can be used as + // a very basic sanity check. However some published values + // would be nice.... + + using namespace std; // for ADL + using boost::math::beta; + + //return pow(v / (v + t*t), (1+v) / 2) / (sqrt(v) * beta(v/2, RealType(0.5f))); + RealType result = boost::math::tgamma_ratio((v+1)/2, v/2); + result /= sqrt(v * boost::math::constants::pi()); + result /= pow(1 + t*t/v, (v+1)/2); + return result; +} + +template +void test_spots(RealType) +{ + // Basic sanity checks + RealType tolerance = 1e-4; // 1e-6 (as %) + // Some tests only pass at 1e-5 because probability value is less accurate, + // a digit in 6th decimal place, although calculated using + // a t-distribution generator (claimed 6 decimal digits) at + // http://faculty.vassar.edu/lowry/VassarStats.html + // http://faculty.vassar.edu/lowry/tsamp.html + // df = 5, +/-t = 2.0, 1-tailed = 0.050970, 2-tailed = 0.101939 + + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + // http://en.wikipedia.org/wiki/Student%27s_t_distribution#Table_of_selected_values + // Using tabulated value of t = 3.182 for 0.975, 3 df, one-sided. + + // http://www.mth.kcl.ac.uk/~shaww/web_page/papers/Tdistribution06.pdf refers to: + + // A lookup table of quantiles of the RealType distribution + // for 1 to 25 in steps of 0.1 is provided in CSV form at: + // www.mth.kcl.ac.uk/~shaww/web_page/papers/Tsupp/tquantiles.csv + // gives accurate t of -3.1824463052837 and 3 degrees of freedom. + // Values below are from this source, saved as tquantiles.xls. + // DF are across the columns, probabilities down the rows + // and the t- values (quantiles) are shown. + // These values are probably accurate to nearly 64-bit double + // (perhaps 14 decimal digits). + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(2), // degrees_of_freedom + static_cast(-6.96455673428326)), // t + static_cast(0.01), // probability. + tolerance); // % + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(5), // degrees_of_freedom + static_cast(-3.36492999890721)), // t + static_cast(0.01), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(1), // degrees_of_freedom + static_cast(-31830.988607907)), // t + static_cast(0.00001), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(25.), // degrees_of_freedom + static_cast(-5.2410429995425)), // t + static_cast(0.00001), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(1), // degrees_of_freedom + static_cast(-63661.97723)), // t + static_cast(0.000005), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(5.), // degrees_of_freedom + static_cast(-17.89686614)), // t + static_cast(0.000005), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(25.), // degrees_of_freedom + static_cast(-5.510848412)), // t + static_cast(0.000005), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(10.), // degrees_of_freedom + static_cast(-1.812461123)), // t + static_cast(0.05), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(10), // degrees_of_freedom + static_cast(1.812461123)), // t + static_cast(0.95), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement( + students_t_distribution(10), // degrees_of_freedom + static_cast(1.812461123))), // t + static_cast(0.05), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(10), // degrees_of_freedom + static_cast(9.751995491)), // t + static_cast(0.999999), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(10.), // degrees_of_freedom - for ALL degrees_of_freedom! + static_cast(0.)), // t + static_cast(0.5), // probability. + tolerance); + + + // Student's t Inverse function tests. + // Special cases + + BOOST_CHECK_THROW(boost::math::quantile( + students_t_distribution(1.), // degrees_of_freedom (ignored). + static_cast(0)), std::overflow_error); // t == -infinity. + + BOOST_CHECK_THROW(boost::math::quantile( + students_t_distribution(1.), // degrees_of_freedom (ignored). + static_cast(1)), std::overflow_error); // t == +infinity. + + BOOST_CHECK_EQUAL(boost::math::quantile( + students_t_distribution(1.), // degrees_of_freedom (ignored). + static_cast(0.5)), // probability == half - special case. + static_cast(0)); // t == zero. + + BOOST_CHECK_EQUAL(boost::math::quantile( + complement( + students_t_distribution(1.), // degrees_of_freedom (ignored). + static_cast(0.5))), // probability == half - special case. + static_cast(0)); // t == zero. + + BOOST_CHECK_CLOSE(boost::math::quantile( + students_t_distribution(1.), // degrees_of_freedom (ignored). + static_cast(0.5)), // probability == half - special case. + static_cast(0), // t == zero. + tolerance); + + BOOST_CHECK_CLOSE( // Tests of p middling. + ::boost::math::cdf( + students_t_distribution(5.), // degrees_of_freedom + static_cast(-0.559429644)), // t + static_cast(0.3), // probability. + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + students_t_distribution(5.), // degrees_of_freedom + static_cast(0.3)), // probability. + static_cast(-0.559429644), // t + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement( + students_t_distribution(5.), // degrees_of_freedom + static_cast(0.7))), // probability. + static_cast(-0.559429644), // t + tolerance); + + BOOST_CHECK_CLOSE( // Tests of p high. + ::boost::math::cdf( + students_t_distribution(5.), // degrees_of_freedom + static_cast(1.475884049)), // t + static_cast(0.9), // probability. + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + students_t_distribution(5.), // degrees_of_freedom + static_cast(0.9)), // probability. + static_cast(1.475884049), // t + tolerance); + + BOOST_CHECK_CLOSE( // Tests of p low. + ::boost::math::cdf( + students_t_distribution(5.), // degrees_of_freedom + static_cast(-1.475884049)), // t + static_cast(0.1), // probability. + tolerance); + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + students_t_distribution(5.), // degrees_of_freedom + static_cast(0.1)), // probability. + static_cast(-1.475884049), // t + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + students_t_distribution(2.), // degrees_of_freedom + static_cast(-6.96455673428326)), // t + static_cast(0.01), // probability. + tolerance); + + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + students_t_distribution(2.), // degrees_of_freedom + static_cast(0.01)), // probability. + static_cast(-6.96455673428326), // t + tolerance); + + + // Student's t pdf tests. + // for PDF checks, use 100 eps tolerance expressed as a percent: + tolerance = boost::math::tools::epsilon() * 10000; + + for(unsigned i = 1; i < 20; i += 3) + { + for(RealType r = -10; r < 10; r += 0.125) + { + //std::cout << "df=" << i << " t=" << r << std::endl; + BOOST_CHECK_CLOSE( + boost::math::pdf( + students_t_distribution(static_cast(i)), + r), + naive_pdf(static_cast(i), r), + tolerance); + } + } + + RealType tol2 = boost::math::tools::epsilon() * 5; + students_t_distribution dist(8); + RealType x = static_cast(0.125); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(0), tol2); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , static_cast(8.0L / 6.0L), tol2); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , static_cast(sqrt(8.0L / 6.0L)), tol2); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tol2); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tol2); + // coefficient_of_variation: + BOOST_CHECK_THROW( + coefficient_of_variation(dist), + std::overflow_error); + // mode: + BOOST_CHECK_CLOSE( + mean(dist) + , static_cast(0), tol2); + // median: + BOOST_CHECK_CLOSE( + median(dist) + , static_cast(0), tol2); + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist) + , static_cast(0), tol2); + // kurtosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , static_cast(4.5), tol2); + // kurtosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist) + , static_cast(1.5), tol2); + + // Parameter estimation. These results are close to but + // not identical to those reported on the NIST website at + // http://www.itl.nist.gov/div898/handbook/prc/section2/prc222.htm + // the NIST results appear to be calculated using a normal + // approximation, which slightly under-estimates the degrees of + // freedom required, particularly when the result is small. + // + BOOST_CHECK_EQUAL( + ceil(students_t_distribution::find_degrees_of_freedom( + static_cast(0.5), + static_cast(0.005), + static_cast(0.01), + static_cast(1.0))), + 99); + BOOST_CHECK_EQUAL( + ceil(students_t_distribution::find_degrees_of_freedom( + static_cast(1.5), + static_cast(0.005), + static_cast(0.01), + static_cast(1.0))), + 14); + BOOST_CHECK_EQUAL( + ceil(students_t_distribution::find_degrees_of_freedom( + static_cast(0.5), + static_cast(0.025), + static_cast(0.01), + static_cast(1.0))), + 76); + BOOST_CHECK_EQUAL( + ceil(students_t_distribution::find_degrees_of_freedom( + static_cast(1.5), + static_cast(0.025), + static_cast(0.01), + static_cast(1.0))), + 11); + BOOST_CHECK_EQUAL( + ceil(students_t_distribution::find_degrees_of_freedom( + static_cast(0.5), + static_cast(0.05), + static_cast(0.01), + static_cast(1.0))), + 65); + BOOST_CHECK_EQUAL( + ceil(students_t_distribution::find_degrees_of_freedom( + static_cast(1.5), + static_cast(0.05), + static_cast(0.01), + static_cast(1.0))), + 9); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Check that can construct students_t distribution using the two convenience methods: + using namespace boost::math; + students_t myst1(2); // Using typedef + students_t_distribution<> myst2(2); // Using default RealType double. + //students_t_distribution myst3(2); // Using explicit RealType double. + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_students_t.exe" +Running 1 test case... +Tolerance for type float is 0.0001 % +Tolerance for type double is 0.0001 % +Tolerance for type long double is 0.0001 % +Tolerance for type class boost::math::concepts::real_concept is 0.0001 % +*** No errors detected + +*/ + + diff --git a/test/test_tgamma_ratio.cpp b/test/test_tgamma_ratio.cpp new file mode 100644 index 000000000..4652cdd18 --- /dev/null +++ b/test/test_tgamma_ratio.cpp @@ -0,0 +1,249 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error + +#include +#include +#include +#include +#include +#include +#include +#include "functor.hpp" + +#include "handle_test_result.hpp" + +// +// DESCRIPTION: +// ~~~~~~~~~~~~ +// +// This file tests the gamma ratio functions tgamma_ratio, +// and tgamma_delta_ratio. The accuracy tests +// use values generated with NTL::RR at 1000-bit precision +// and our generic versions of these functions. +// +// Note that when this file is first run on a new platform many of +// these tests will fail: the default accuracy is 1 epsilon which +// is too tight for most platforms. In this situation you will +// need to cast a human eye over the error rates reported and make +// a judgement as to whether they are acceptable. Either way please +// report the results to the Boost mailing list. Acceptable rates of +// error are marked up below as a series of regular expressions that +// identify the compiler/stdlib/platform/data-type/test-data/test-function +// along with the maximum expected peek and RMS mean errors for that +// test. +// + +void expected_results() +{ + // + // Define the max and mean errors expected for + // various compilers and platforms. + // + const char* largest_type; +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + if(boost::math::policies::digits >() == boost::math::policies::digits >()) + { + largest_type = "(long\\s+)?double"; + } + else + { + largest_type = "long double"; + } +#else + largest_type = "(long\\s+)?double"; +#endif + // + // HP-UX + // This is a weird one, HP-UX and Mac OS X show up errors at float + // precision, that don't show up on other platforms. + // There appears to be some kind of rounding issue going on (not enough + // precision in the input to get the answer right): + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "HP-UX|Mac OS|linux|.*(bsd|BSD).*", // platform + "float", // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_ratio[^|]*", 35, 8); // test function + // + // Linux AMD x86em64 has slightly higher rates: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux.*", // platform + largest_type, // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_ratio[^|]*", 300, 100); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "linux.*", // platform + "real_concept", // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_ratio[^|]*", 300, 100); // test function + // + // Catch all cases come last: + // + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_delta_ratio[^|]*", 30, 20); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + largest_type, // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_ratio[^|]*", 100, 50); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_delta_ratio[^|]*", 40, 15); // test function + add_expected_result( + "[^|]*", // compiler + "[^|]*", // stdlib + "[^|]*", // platform + "real_concept", // test type(s) + "[^|]*", // test data group + "boost::math::tgamma_ratio[^|]*", 150, 50); // test function + + // + // Finish off by printing out the compiler/stdlib/platform names, + // we do this to make it easier to mark up expected error rates. + // + std::cout << "Tests run with " << BOOST_COMPILER << ", " + << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; +} + +struct negative_tgamma_ratio +{ + template + typename Row::value_type operator()(const Row& row) + { + return boost::math::tgamma_delta_ratio(row[0], -row[1]); + } +}; + +template +void do_test_tgamma_delta_ratio(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::tgamma_delta_ratio; +#else + pg funcp = boost::math::tgamma_delta_ratio; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test tgamma_delta_ratio against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma_delta_ratio(a, delta)", test_name); + result = boost::math::tools::test( + data, + negative_tgamma_ratio(), + extract_result(3)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma_delta_ratio(a -delta)", test_name); +} + +template +void do_test_tgamma_ratio(const T& data, const char* type_name, const char* test_name) +{ + typedef typename T::value_type row_type; + typedef typename row_type::value_type value_type; + + typedef value_type (*pg)(value_type, value_type); +#if defined(BOOST_MATH_NO_DEDUCED_FUNCTION_POINTERS) + pg funcp = boost::math::tgamma_ratio; +#else + pg funcp = boost::math::tgamma_ratio; +#endif + + boost::math::tools::test_result result; + + std::cout << "Testing " << test_name << " with type " << type_name + << "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + + // + // test tgamma_ratio against data: + // + result = boost::math::tools::test( + data, + bind_func(funcp, 0, 1), + extract_result(2)); + handle_test_result(result, data[result.worst()], result.worst(), type_name, "boost::math::tgamma_ratio(a, b)", test_name); +} + +template +void test_tgamma_ratio(T, const char* name) +{ + // + // The actual test data is rather verbose, so it's in a separate file + // +# include "tgamma_delta_ratio_data.ipp" + + do_test_tgamma_delta_ratio(tgamma_delta_ratio_data, name, "tgamma + small delta ratios"); + +# include "tgamma_delta_ratio_int.ipp" + + do_test_tgamma_delta_ratio(tgamma_delta_ratio_int, name, "tgamma + small integer ratios"); + +# include "tgamma_delta_ratio_int2.ipp" + + do_test_tgamma_delta_ratio(tgamma_delta_ratio_int2, name, "integer tgamma ratios"); + +# include "tgamma_ratio_data.ipp" + + do_test_tgamma_ratio(tgamma_ratio_data, name, "tgamma ratios"); + +} + +int test_main(int, char* []) +{ + BOOST_MATH_CONTROL_FP; + expected_results(); + +#ifndef BOOST_MATH_BUGGY_LARGE_FLOAT_CONSTANTS + test_tgamma_ratio(0.1F, "float"); +#endif + test_tgamma_ratio(0.1, "double"); +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_tgamma_ratio(0.1L, "long double"); +#ifndef BOOST_MATH_NO_REAL_CONCEPT_TESTS +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) + test_tgamma_ratio(boost::math::concepts::real_concept(0.1), "real_concept"); +#endif +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + return 0; +} + + diff --git a/test/test_toms748_solve.cpp b/test/test_toms748_solve.cpp new file mode 100644 index 000000000..d926a6085 --- /dev/null +++ b/test/test_toms748_solve.cpp @@ -0,0 +1,270 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +#include +#include +#include + +// +// Test functor implements the same test cases as used by +// "Algorithm 748: Enclosing Zeros of Continuous Functions" +// by G.E. Alefeld, F.A. Potra and Yixun Shi. +// +// Plus two more: one for inverting the incomplete gamma, +// and one for inverting the incomplete beta. +// +template +struct toms748tester +{ + toms748tester(unsigned i) : k(i), ip(0), a(0), b(0){} + toms748tester(unsigned i, int ip_) : k(i), ip(ip_), a(0), b(0){} + toms748tester(unsigned i, T a_, T b_) : k(i), ip(0), a(a_), b(b_){} + + static unsigned total_calls() + { + return invocations; + } + static void reset() + { + invocations = 0; + } + + T operator()(T x) + { + using namespace std; + + ++invocations; + switch(k) + { + case 1: + return sin(x) - x / 2; + case 2: + { + T r = 0; + for(int i = 1; i <= 20; ++i) + { + T p = (2 * i - 5); + T q = x - i * i; + r += p * p / (q * q * q); + } + r *= -2; + return r; + } + case 3: + return a * x * exp(b * x); + case 4: + return pow(x, b) - a; + case 5: + return sin(x) - 0.5; + case 6: + return 2 * x * exp(-T(ip)) - 2 * exp(-ip * x) + 1; + case 7: + return (1 + (1 - ip) * (1 - ip)) * x - (1 - ip * x) * (1 - ip * x); + case 8: + return x * x - pow(1 - x, a); + case 9: + return (1 + (1 - ip) * (1 - ip) * (1 - ip) * (1 - ip)) * x - (1 - ip * x) * (1 - ip * x) * (1 - ip * x) * (1 - ip * x); + case 10: + return exp(-ip * x) * (x - 1) + pow(x, T(ip)); + case 11: + return (ip * x - 1) / ((ip - 1) * x); + case 12: + return pow(x, T(1)/ip) - pow(T(ip), T(1)/ip); + case 13: + return x == 0 ? 0 : x * exp(-1 / (x * x)); + case 14: + return x >= 0 ? (T(ip)/20) * (x / 1.5f + sin(x) - 1) : -T(ip)/20; + case 15: + { + T d = 2e-3f / (1+ip); + if(x > d) + return exp(1.0) - 1.859; + else if(x > 0) + return exp((ip+1)*x*1000 / 2) - 1.859; + return -0.859f; + } + case 16: + { + return boost::math::gamma_q(x, a) - b; + } + case 17: + return boost::math::ibeta(x, a, 0.5) - b; + } + return 0; + } +private: + int k; // index of problem. + int ip; // integer parameter + T a, b; // real parameter + + static unsigned invocations; +}; + +template +unsigned toms748tester::invocations = 0; + +boost::uintmax_t total = 0; +boost::uintmax_t invocations = 0; + +template +void run_test(T a, T b, int id) +{ + boost::uintmax_t c = 1000; + std::pair r = toms748_solve(toms748tester(id), + a, + b, + boost::math::tools::eps_tolerance(std::numeric_limits::digits), + c); + BOOST_CHECK_EQUAL(c, toms748tester::total_calls()); + total += c; + invocations += toms748tester::total_calls(); + std::cout << "Function " << id << "\nresult={" << r.first << ", " << r.second << "} total calls=" << toms748tester::total_calls() << "\n\n"; + toms748tester::reset(); +} + +template +void run_test(T a, T b, int id, int p) +{ + boost::uintmax_t c = 1000; + std::pair r = toms748_solve(toms748tester(id, p), + a, + b, + boost::math::tools::eps_tolerance(std::numeric_limits::digits), + c); + BOOST_CHECK_EQUAL(c, toms748tester::total_calls()); + total += c; + invocations += toms748tester::total_calls(); + std::cout << "Function " << id << "\nresult={" << r.first << ", " << r.second << "} total calls=" << toms748tester::total_calls() << "\n\n"; + toms748tester::reset(); +} + +template +void run_test(T a, T b, int id, T p1, T p2) +{ + boost::uintmax_t c = 1000; + std::pair r = toms748_solve(toms748tester(id, p1, p2), + a, + b, + boost::math::tools::eps_tolerance(std::numeric_limits::digits), + c); + BOOST_CHECK_EQUAL(c, toms748tester::total_calls()); + total += c; + invocations += toms748tester::total_calls(); + std::cout << "Function " << id << "\n Result={" << r.first << ", " << r.second << "} total calls=" << toms748tester::total_calls() << "\n\n"; + toms748tester::reset(); +} + +int test_main(int, char* []) +{ + std::cout << std::setprecision(18); + run_test(3.14/2, 3.14, 1); + + for(int i = 1; i <= 10; i += 1) + { + run_test(i*i + 1e-9, (i+1)*(i+1) - 1e-9, 2); + } + + run_test(-9.0, 31.0, 3, -40.0, -1.0); + run_test(-9.0, 31.0, 3, -100.0, -2.0); + run_test(-9.0, 31.0, 3, -200.0, -3.0); + + for(int n = 4; n <= 12; n += 2) + { + run_test(0.0, 5.0, 4, 0.2, double(n)); + } + for(int n = 4; n <= 12; n += 2) + { + run_test(0.0, 5.0, 4, 1.0, double(n)); + } + for(int n = 8; n <= 14; n += 2) + { + run_test(-0.95, 4.05, 4, 1.0, double(n)); + } + run_test(0.0, 1.5, 5); + for(int n = 1; n <= 5; ++n) + { + run_test(0.0, 1.0, 6, n); + } + for(int n = 20; n <= 100; n += 20) + { + run_test(0.0, 1.0, 6, n); + } + run_test(0.0, 1.0, 7, 5); + run_test(0.0, 1.0, 7, 10); + run_test(0.0, 1.0, 7, 20); + run_test(0.0, 1.0, 8, 2); + run_test(0.0, 1.0, 8, 5); + run_test(0.0, 1.0, 8, 10); + run_test(0.0, 1.0, 8, 15); + run_test(0.0, 1.0, 8, 20); + run_test(0.0, 1.0, 9, 1); + run_test(0.0, 1.0, 9, 2); + run_test(0.0, 1.0, 9, 4); + run_test(0.0, 1.0, 9, 5); + run_test(0.0, 1.0, 9, 8); + run_test(0.0, 1.0, 9, 15); + run_test(0.0, 1.0, 9, 20); + run_test(0.0, 1.0, 10, 1); + run_test(0.0, 1.0, 10, 5); + run_test(0.0, 1.0, 10, 10); + run_test(0.0, 1.0, 10, 15); + run_test(0.0, 1.0, 10, 20); + + run_test(0.01, 1.0, 11, 2); + run_test(0.01, 1.0, 11, 5); + run_test(0.01, 1.0, 11, 15); + run_test(0.01, 1.0, 11, 20); + + for(int n = 2; n <= 6; ++n) + run_test(1.0, 100.0, 12, n); + for(int n = 7; n <= 33; n+=2) + run_test(1.0, 100.0, 12, n); + + run_test(-1.0, 4.0, 13); + + for(int n = 1; n <= 40; ++n) + run_test(-1e4, 3.14/2, 14, n); + + for(int n = 20; n <= 40; ++n) + run_test(-1e4, 1e-4, 15, n); + + for(int n = 100; n <= 1000; n+=100) + run_test(-1e4, 1e-4, 15, n); + + std::cout << "Total iterations consumed = " << total << std::endl; + std::cout << "Total function invocations consumed = " << invocations << std::endl << std::endl; + + BOOST_CHECK(invocations < 3150); + + std::cout << std::setprecision(18); + + for(int n = 5; n <= 100; n += 10) + run_test(sqrt(double(n)), double(n+1), 16, (double)n, 0.4); + + for(int n = 5; n <= 100; n += 10) + run_test(double(n / 2), double(2*n), 17, (double)n, 0.4); + + + for(int n = 4; n <= 12; n += 2) + { + boost::uintmax_t c = 1000; + std::pair r = bracket_and_solve_root(toms748tester(4, 0.2, double(n)), + 2.0, + 2.0, + true, + boost::math::tools::eps_tolerance(std::numeric_limits::digits), + c); + std::cout << std::setprecision(18); + std::cout << "Function " << 4 << "\n Result={" << r.first << ", " << r.second << "} total calls=" << toms748tester::total_calls() << "\n\n"; + toms748tester::reset(); + BOOST_CHECK(c < 20); + } + + return 0; +} + diff --git a/test/test_triangular.cpp b/test/test_triangular.cpp new file mode 100644 index 000000000..789e2f8a3 --- /dev/null +++ b/test/test_triangular.cpp @@ -0,0 +1,705 @@ +// Copyright Paul Bristow 2006, 2007. +// Copyright John Maddock 2006, 2007. + +// 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) + +// test_triangular.cpp + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +# pragma warning(disable: 4305) // truncation from 'long double' to 'float' +#endif + +#include // for real_concept +#include // Boost.Test +#include + +#include +using boost::math::triangular_distribution; +#include +#include + +#include +using std::cout; +using std::endl; +using std::scientific; +using std::fixed; +using std::left; +using std::right; +using std::setw; +using std::setprecision; +using std::showpos; +#include +using std::numeric_limits; + +template +void check_triangular(RealType lower, RealType mode, RealType upper, RealType x, RealType p, RealType q, RealType tol) +{ + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + triangular_distribution(lower, mode, upper), // distribution. + x), // random variable. + p, // probability. + tol); // tolerance. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + complement( + triangular_distribution(lower, mode, upper), // distribution. + x)), // random variable. + q, // probability complement. + tol); // tolerance. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + triangular_distribution(lower,mode, upper), // distribution. + p), // probability. + x, // random variable. + tol); // tolerance. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + complement( + triangular_distribution(lower, mode, upper), // distribution. + q)), // probability complement. + x, // random variable. + tol); // tolerance. +} // void check_triangular + +template +void test_spots(RealType) +{ + // Basic sanity checks: + // + // Some test values were generated for the triangular distribution + // using the online calculator at + // http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm + // + // Tolerance is just over 5 epsilon expressed as a fraction: + RealType tolerance = boost::math::tools::epsilon() * 5; // 5 eps as a fraction. + RealType tol5eps = boost::math::tools::epsilon() * 5; // 5 eps as a fraction. + + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << "." << endl; + + using namespace std; // for ADL of std::exp; + + // Tests on construction + // Default should be 0, 0, 1 + BOOST_CHECK_EQUAL(triangular_distribution().lower(), -1); + BOOST_CHECK_EQUAL(triangular_distribution().mode(), 0); + BOOST_CHECK_EQUAL(triangular_distribution().upper(), 1); + BOOST_CHECK_EQUAL(support(triangular_distribution()).first, triangular_distribution().lower()); + BOOST_CHECK_EQUAL(support(triangular_distribution()).second, triangular_distribution().upper()); + + if (std::numeric_limits::has_quiet_NaN == true) + { + BOOST_CHECK_THROW( // duff parameter lower. + triangular_distribution(static_cast(std::numeric_limits::quiet_NaN()), 0, 0), + std::domain_error); + + BOOST_CHECK_THROW( // duff parameter mode. + triangular_distribution(0, static_cast(std::numeric_limits::quiet_NaN()), 0), + std::domain_error); + + BOOST_CHECK_THROW( // duff parameter upper. + triangular_distribution(0, 0, static_cast(std::numeric_limits::quiet_NaN())), + std::domain_error); + } // quiet_NaN tests. + + BOOST_CHECK_THROW( // duff parameters upper < lower. + triangular_distribution(1, 0, -1), + std::domain_error); + + BOOST_CHECK_THROW( // duff parameters upper == lower. + triangular_distribution(0, 0, 0), + std::domain_error); + BOOST_CHECK_THROW( // duff parameters mode < lower. + triangular_distribution(0, -1, 1), + std::domain_error); + + BOOST_CHECK_THROW( // duff parameters mode > upper. + triangular_distribution(0, 2, 1), + std::domain_error); + + // Tests for PDF + // // triangular_distribution() default is (0, 0, 1), mode == lower. + BOOST_CHECK_CLOSE_FRACTION( // x == lower == mode + pdf(triangular_distribution(0, 0, 1), static_cast(0)), + static_cast(2), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == upper + pdf(triangular_distribution(0, 0, 1), static_cast(1)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x > upper + pdf(triangular_distribution(0, 0, 1), static_cast(-1)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x < lower + pdf(triangular_distribution(0, 0, 1), static_cast(2)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x < lower + pdf(triangular_distribution(0, 0, 1), static_cast(2)), + static_cast(0), + tolerance); + + // triangular_distribution() (0, 1, 1) mode == upper + BOOST_CHECK_CLOSE_FRACTION( // x == lower + pdf(triangular_distribution(0, 1, 1), static_cast(0)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == upper + pdf(triangular_distribution(0, 1, 1), static_cast(1)), + static_cast(2), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x > upper + pdf(triangular_distribution(0, 1, 1), static_cast(-1)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x < lower + pdf(triangular_distribution(0, 1, 1), static_cast(2)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x < middle so Wiki says special case pdf = 2 * x + pdf(triangular_distribution(0, 1, 1), static_cast(0.25)), + static_cast(0.5), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x < middle so Wiki says special case cdf = x * x + cdf(triangular_distribution(0, 1, 1), static_cast(0.25)), + static_cast(0.25 * 0.25), + tolerance); + + // triangular_distribution() (0, 0.5, 1) mode == middle. + BOOST_CHECK_CLOSE_FRACTION( // x == lower + pdf(triangular_distribution(0, 0.5, 1), static_cast(0)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == upper + pdf(triangular_distribution(0, 0.5, 1), static_cast(1)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x > upper + pdf(triangular_distribution(0, 0.5, 1), static_cast(-1)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x < lower + pdf(triangular_distribution(0, 0.5, 1), static_cast(2)), + static_cast(0), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == mode + pdf(triangular_distribution(0, 0.5, 1), static_cast(0.5)), + static_cast(2), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == half mode + pdf(triangular_distribution(0, 0.5, 1), static_cast(0.25)), + static_cast(1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x == half mode + pdf(triangular_distribution(0, 0.5, 1), static_cast(0.75)), + static_cast(1), + tolerance); + + if(std::numeric_limits::has_infinity) + { // BOOST_CHECK tests for infinity using std::numeric_limits<>::infinity() + // Note that infinity is not implemented for real_concept, so these tests + // are only done for types, like built-in float, double.. that have infinity. + // Note that these assume that BOOST_MATH_OVERFLOW_ERROR_POLICY is NOT throw_on_error. + // #define BOOST_MATH_OVERFLOW_ERROR_POLICY == throw_on_error would give a throw here. + // #define BOOST_MATH_DOMAIN_ERROR_POLICY == throw_on_error IS defined, so the throw path + // of error handling is tested below with BOOST_CHECK_THROW tests. + + BOOST_CHECK_THROW( // x == infinity NOT OK. + pdf(triangular_distribution(0, 0, 1), static_cast(std::numeric_limits::infinity())), + std::domain_error); + + BOOST_CHECK_THROW( // x == minus infinity not OK too. + pdf(triangular_distribution(0, 0, 1), static_cast(-std::numeric_limits::infinity())), + std::domain_error); + } + if(std::numeric_limits::has_quiet_NaN) + { // BOOST_CHECK tests for NaN using std::numeric_limits<>::has_quiet_NaN() - should throw. + BOOST_CHECK_THROW( + pdf(triangular_distribution(0, 0, 1), static_cast(std::numeric_limits::quiet_NaN())), + std::domain_error); + BOOST_CHECK_THROW( + pdf(triangular_distribution(0, 0, 1), static_cast(-std::numeric_limits::quiet_NaN())), + std::domain_error); + } // test for x = NaN using std::numeric_limits<>::quiet_NaN() + + // cdf + BOOST_CHECK_EQUAL( // x < lower + cdf(triangular_distribution(0, 1, 1), static_cast(-1)), + static_cast(0) ); + BOOST_CHECK_CLOSE_FRACTION( // x == lower + cdf(triangular_distribution(0, 1, 1), static_cast(0)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x == upper + cdf(triangular_distribution(0, 1, 1), static_cast(1)), + static_cast(1), + tolerance); + BOOST_CHECK_EQUAL( // x > upper + cdf(triangular_distribution(0, 1, 1), static_cast(2)), + static_cast(1)); + + BOOST_CHECK_CLOSE_FRACTION( // x == mode + cdf(triangular_distribution(-1, 0, 1), static_cast(0)), + //static_cast((mode - lower) / (upper - lower)), + static_cast(0.5), // (0 --1) / (1 -- 1) = 0.5 + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(triangular_distribution(0, 1, 1), static_cast(0.9L)), + static_cast(0.81L), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( + cdf(triangular_distribution(-1, 0, 1), static_cast(-1)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(triangular_distribution(-1, 0, 1), static_cast(-0.5L)), + static_cast(0.125L), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(triangular_distribution(-1, 0, 1), static_cast(0)), + static_cast(0.5), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(triangular_distribution(-1, 0, 1), static_cast(+0.5L)), + static_cast(0.875L), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(triangular_distribution(-1, 0, 1), static_cast(1)), + static_cast(1), + tolerance); + + // cdf complement + BOOST_CHECK_EQUAL( // x < lower + cdf(complement(triangular_distribution(0, 0, 1), static_cast(-1))), + static_cast(1)); + BOOST_CHECK_EQUAL( // x == lower + cdf(complement(triangular_distribution(0, 0, 1), static_cast(0))), + static_cast(1)); + + BOOST_CHECK_EQUAL( // x == mode + cdf(complement(triangular_distribution(-1, 0, 1), static_cast(0))), + static_cast(0.5)); + + BOOST_CHECK_EQUAL( // x == mode + cdf(complement(triangular_distribution(0, 0, 1), static_cast(0))), + static_cast(1)); + BOOST_CHECK_EQUAL( // x == mode + cdf(complement(triangular_distribution(0, 1, 1), static_cast(1))), + static_cast(0)); + + BOOST_CHECK_EQUAL( // x > upper + cdf(complement(triangular_distribution(0, 0, 1), static_cast(2))), + static_cast(0)); + BOOST_CHECK_EQUAL( // x == upper + cdf(complement(triangular_distribution(0, 0, 1), static_cast(1))), + static_cast(0)); + + BOOST_CHECK_CLOSE_FRACTION( // x = -0.5 + cdf(complement(triangular_distribution(-1, 0, 1), static_cast(-0.5))), + static_cast(0.875L), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x = +0.5 + cdf(complement(triangular_distribution(-1, 0, 1), static_cast(0.5))), + static_cast(0.125), + tolerance); + + triangular_distribution triang; // Using typedef == triangular_distribution tristd; + triangular_distribution tristd(0, 0.5, 1); // 'Standard' triangular distribution. + + BOOST_CHECK_CLOSE_FRACTION( // median of Standard triangular is sqrt(mode/2) if c > 1/2 else 1 - sqrt((1-c)/2) + median(tristd), + static_cast(0.5), + tolerance); + triangular_distribution tri011(0, 1, 1); // Using default RealType double. + triangular_distribution tri0q1(0, 0.25, 1); // mode is near bottom. + triangular_distribution tri0h1(0, 0.5, 1); // Equilateral triangle - mode is the middle. + triangular_distribution trim12(-1, -0.5, 2); // mode is negative. + + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0q1, 0.02L), static_cast(0.0016L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0q1, 0.5L), static_cast(0.66666666666666666666666666666666666666666666667L), tolerance); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0q1, 0.98L), static_cast(0.9994666666666666666666666666666666666666666666L), tolerance); + + // quantile + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0q1, static_cast(0.0016L)), static_cast(0.02L), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0q1, static_cast(0.66666666666666666666666666666666666666666666667L)), static_cast(0.5), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0q1, static_cast(0.3333333333333333333333333333333333333333333333333L))), static_cast(0.5), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0q1, static_cast(0.999466666666666666666666666666666666666666666666666L)), static_cast(98) / 100, 10 * tol5eps); + + BOOST_CHECK_CLOSE_FRACTION(pdf(trim12, 0), static_cast(0.533333333333333333333333333333333333333333333L), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(cdf(trim12, 0), static_cast(0.466666666666666666666666666666666666666666667L), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(cdf(complement(trim12, 0)), static_cast(1 - 0.466666666666666666666666666666666666666666667L), tol5eps); + + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0q1, static_cast(1 - 0.999466666666666666666666666666666666666666666666L))), static_cast(0.98L), 10 * tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, static_cast(1))), static_cast(0), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, static_cast(0.5))), static_cast(0.5), tol5eps); // OK + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, static_cast(1 - 0.02L))), static_cast(0.1L), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, static_cast(1 - 0.98L))), static_cast(0.9L), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, 0)), static_cast(1), tol5eps); + + RealType xs [] = {0, 0.01L, 0.02L, 0.05L, 0.1L, 0.2L, 0.3L, 0.4L, 0.5L, 0.6L, 0.7L, 0.8L, 0.9L, 0.95L, 0.98L, 0.99L, 1}; + + const triangular_distribution& distr = triang; + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(distr, 1.)), static_cast(-1), tol5eps); + const triangular_distribution* distp = &triang; + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(*distp, 1.)), static_cast(-1), tol5eps); + + const triangular_distribution* dists [] = {&tristd, &tri011, &tri0q1, &tri0h1, &trim12}; + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(*dists[1], 1.)), static_cast(0), tol5eps); + + for (int i = 0; i < 5; i++) + { + const triangular_distribution* const dist = dists[i]; + // cout << "Distribution " << i << endl; + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], 0.5L), quantile(complement(*dist, 0.5L)), tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], 0.98L), quantile(complement(*dist, 1.L - 0.98L)),tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], 0.98L), quantile(complement(*dist, 1.L - 0.98L)),tol5eps); + } // for i + + // quantile complement + for (int i = 0; i < 5; i++) + { + const triangular_distribution* const dist = dists[i]; + //cout << "Distribution " << i << endl; + BOOST_CHECK_EQUAL(quantile(complement(*dists[i], 1.)), quantile(*dists[i], 0.)); + for (unsigned j = 0; j < sizeof(xs) /sizeof(RealType); j++) + { + RealType x = xs[j]; + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], x), quantile(complement(*dist, 1 - x)), tol5eps); + } // for j + } // for i + + + check_triangular( + static_cast(0), // lower + static_cast(0.5), // mode + static_cast(1), // upper + static_cast(0.5), // x + static_cast(0.5), // p + static_cast(1 - 0.5), // q + tolerance); + + // Some Not-standard triangular tests. + check_triangular( + static_cast(-1), // lower + static_cast(0), // mode + static_cast(1), // upper + static_cast(0), // x + static_cast(0.5), // p + static_cast(1 - 0.5), // q = 1 - p + tolerance); + + check_triangular( + static_cast(1), // lower + static_cast(1), // mode + static_cast(3), // upper + static_cast(2), // x + static_cast(0.75), // p + static_cast(1 - 0.75), // q = 1 - p + tolerance); + + check_triangular( + static_cast(-1), // lower + static_cast(1), // mode + static_cast(2), // upper + static_cast(1), // x + static_cast(0.66666666666666666666666666666666666666666667L), // p + static_cast(0.33333333333333333333333333333333333333333333L), // q = 1 - p + tolerance); + tolerance = (std::max)( + boost::math::tools::epsilon(), + static_cast(boost::math::tools::epsilon())) * 10; // 10 eps as a fraction. + cout << "Tolerance (as fraction) for type " << typeid(RealType).name() << " is " << tolerance << "." << endl; + triangular_distribution tridef; // (-1, 0, 1) // default + RealType x = static_cast(0.5); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE_FRACTION( + mean(tridef), static_cast(0), tolerance); + // variance: + BOOST_CHECK_CLOSE_FRACTION( + variance(tridef), static_cast(0.16666666666666666666666666666666666666666667L), tolerance); + // was 0.0833333333333333333333333333333333333333333L + + // std deviation: + BOOST_CHECK_CLOSE_FRACTION( + standard_deviation(tridef), sqrt(variance(tridef)), tolerance); + // hazard: + BOOST_CHECK_CLOSE_FRACTION( + hazard(tridef, x), pdf(tridef, x) / cdf(complement(tridef, x)), tolerance); + // cumulative hazard: + BOOST_CHECK_CLOSE_FRACTION( + chf(tridef, x), -log(cdf(complement(tridef, x))), tolerance); + // coefficient_of_variation: + if (mean(tridef) != 0) + { + BOOST_CHECK_CLOSE_FRACTION( + coefficient_of_variation(tridef), standard_deviation(tridef) / mean(tridef), tolerance); + } + // mode: + BOOST_CHECK_CLOSE_FRACTION( + mode(tridef), static_cast(0), tolerance); + // skewness: + BOOST_CHECK_CLOSE_FRACTION( + median(trim12), static_cast(-0.13397459621556151), tolerance); + BOOST_CHECK_EQUAL( + skewness(tridef), static_cast(0)); + // kurtosis: + BOOST_CHECK_CLOSE_FRACTION( + kurtosis_excess(tridef), kurtosis(tridef) - static_cast(3L), tolerance); + // kurtosis excess = kurtosis - 3; + BOOST_CHECK_CLOSE_FRACTION( + kurtosis_excess(tridef), static_cast(-0.6), tolerance); // for all distributions. + + if(std::numeric_limits::has_infinity) + { // BOOST_CHECK tests for infinity using std::numeric_limits<>::infinity() + // Note that infinity is not implemented for real_concept, so these tests + // are only done for types, like built-in float, double.. that have infinity. + // Note that these assume that BOOST_MATH_OVERFLOW_ERROR_POLICY is NOT throw_on_error. + // #define BOOST_MATH_OVERFLOW_ERROR_POLICY == throw_on_error would give a throw here. + // #define BOOST_MATH_DOMAIN_ERROR_POLICY == throw_on_error IS defined, so the throw path + // of error handling is tested below with BOOST_CHECK_THROW tests. + + using boost::math::policies::policy; + using boost::math::policies::domain_error; + using boost::math::policies::ignore_error; + + // Define a (bad?) policy to ignore domain errors ('bad' arguments): + typedef policy > inf_policy; // domain error returns infinity. + triangular_distribution tridef_inf(-1, 0., 1); + // But can't use BOOST_CHECK_EQUAL(?, quiet_NaN) + using boost::math::isnan; + BOOST_CHECK((isnan)(pdf(tridef_inf, std::numeric_limits::infinity()))); + } // test for infinity using std::numeric_limits<>::infinity() + else + { // real_concept case, does has_infinfity == false, so can't check it throws. + // cout << std::numeric_limits::infinity() << ' ' + // << boost::math::fpclassify(std::numeric_limits::infinity()) << endl; + // value of std::numeric_limits::infinity() is zero, so FPclassify is zero, + // so (boost::math::isfinite)(std::numeric_limits::infinity()) does not detect infinity. + // so these tests would never throw. + //BOOST_CHECK_THROW(pdf(tridef, std::numeric_limits::infinity()), std::domain_error); + //BOOST_CHECK_THROW(pdf(tridef, std::numeric_limits::quiet_NaN()), std::domain_error); + // BOOST_CHECK_THROW(pdf(tridef, boost::math::tools::max_value() * 2), std::domain_error); // Doesn't throw. + BOOST_CHECK_EQUAL(pdf(tridef, boost::math::tools::max_value()), 0); + } + // Special cases: + BOOST_CHECK(pdf(tridef, -1) == 0); + BOOST_CHECK(pdf(tridef, 1) == 0); + BOOST_CHECK(cdf(tridef, 0) == 0.5); + BOOST_CHECK(pdf(tridef, 1) == 0); + BOOST_CHECK(cdf(tridef, 1) == 1); + BOOST_CHECK(cdf(complement(tridef, -1)) == 1); + BOOST_CHECK(cdf(complement(tridef, 1)) == 0); + BOOST_CHECK(quantile(tridef, 1) == 1); + BOOST_CHECK(quantile(complement(tridef, 1)) == -1); + + BOOST_CHECK_EQUAL(support(trim12).first, trim12.lower()); + BOOST_CHECK_EQUAL(support(trim12).second, trim12.upper()); + + // Error checks: + if(std::numeric_limits::has_quiet_NaN) + { // BOOST_CHECK tests for quiet_NaN (not for real_concept, for example - see notes above). + BOOST_CHECK_THROW(triangular_distribution(0, std::numeric_limits::quiet_NaN()), std::domain_error); + BOOST_CHECK_THROW(triangular_distribution(0, -std::numeric_limits::quiet_NaN()), std::domain_error); + } + BOOST_CHECK_THROW(triangular_distribution(1, 0), std::domain_error); // lower > upper! + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // double toleps = std::numeric_limits::epsilon(); // 5 eps as a fraction. + double tol5eps = std::numeric_limits::epsilon() * 5; // 5 eps as a fraction. + // double tol50eps = std::numeric_limits::epsilon() * 50; // 50 eps as a fraction. + double tol500eps = std::numeric_limits::epsilon() * 500; // 500 eps as a fraction. + + // Check that can construct triangular distribution using the two convenience methods: + using namespace boost::math; + triangular triang; // Using typedef + // == triangular_distribution triang; + + BOOST_CHECK_EQUAL(triang.lower(), -1); // Check default. + BOOST_CHECK_EQUAL(triang.mode(), 0); + BOOST_CHECK_EQUAL(triang.upper(), 1); + + triangular tristd (0, 0.5, 1); // Using typedef + + BOOST_CHECK_EQUAL(tristd.lower(), 0); + BOOST_CHECK_EQUAL(tristd.mode(), 0.5); + BOOST_CHECK_EQUAL(tristd.upper(), 1); + + //cout << "X range from " << range(tristd).first << " to " << range(tristd).second << endl; + //cout << "Supported from "<< support(tristd).first << ' ' << support(tristd).second << endl; + + BOOST_CHECK_EQUAL(support(tristd).first, tristd.lower()); + BOOST_CHECK_EQUAL(support(tristd).second, tristd.upper()); + + triangular_distribution<> tri011(0, 1, 1); // Using default RealType double. + // mode is upper + BOOST_CHECK_EQUAL(tri011.lower(), 0); // Check defaults again. + BOOST_CHECK_EQUAL(tri011.mode(), 1); // Check defaults again. + BOOST_CHECK_EQUAL(tri011.upper(), 1); + BOOST_CHECK_EQUAL(mode(tri011), 1); + + BOOST_CHECK_EQUAL(pdf(tri011, 0), 0); + BOOST_CHECK_EQUAL(pdf(tri011, 0.1), 0.2); + BOOST_CHECK_EQUAL(pdf(tri011, 0.5), 1); + BOOST_CHECK_EQUAL(pdf(tri011, 0.9), 1.8); + BOOST_CHECK_EQUAL(pdf(tri011, 1), 2); + + BOOST_CHECK_EQUAL(cdf(tri011, 0), 0); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri011, 0.1), 0.01, tol5eps); + BOOST_CHECK_EQUAL(cdf(tri011, 0.5), 0.25); + BOOST_CHECK_EQUAL(cdf(tri011, 0.9), 0.81); + BOOST_CHECK_EQUAL(cdf(tri011, 1), 1); + BOOST_CHECK_EQUAL(cdf(tri011, 9), 1); + BOOST_CHECK_EQUAL(mean(tri011), 0.666666666666666666666666666666666666666666666666667); + BOOST_CHECK_EQUAL(variance(tri011), 1./18.); + + triangular tri0h1(0, 0.5, 1); // Equilateral triangle - mode is the middle. + BOOST_CHECK_EQUAL(tri0h1.lower(), 0); + BOOST_CHECK_EQUAL(tri0h1.mode(), 0.5); + BOOST_CHECK_EQUAL(tri0h1.upper(), 1); + BOOST_CHECK_EQUAL(mean(tri0h1), 0.5); + BOOST_CHECK_EQUAL(mode(tri0h1), 0.5); + BOOST_CHECK_EQUAL(pdf(tri0h1, -1), 0); + BOOST_CHECK_EQUAL(cdf(tri0h1, -1), 0); + BOOST_CHECK_EQUAL(pdf(tri0h1, 1), 0); + BOOST_CHECK_EQUAL(pdf(tri0h1, 999), 0); + BOOST_CHECK_EQUAL(cdf(tri0h1, 999), 1); + BOOST_CHECK_EQUAL(cdf(tri0h1, 1), 1); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0h1, 0.1), 0.02, tol5eps); + BOOST_CHECK_EQUAL(cdf(tri0h1, 0.5), 0.5); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0h1, 0.9), 0.98, tol5eps); + + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0h1, 0.), 0., tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0h1, 0.02), 0.1, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0h1, 0.5), 0.5, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0h1, 0.98), 0.9, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0h1, 1.), 1., tol5eps); + + triangular tri0q1(0, 0.25, 1); // mode is near bottom. + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0q1, 0.02), 0.0016, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0q1, 0.5), 0.66666666666666666666666666666666666666666666667, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(cdf(tri0q1, 0.98), 0.99946666666666661, tol5eps); + + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0q1, 0.0016), 0.02, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0q1, 0.66666666666666666666666666666666666666666666667), 0.5, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0q1, 0.3333333333333333333333333333333333333333333333333)), 0.5, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(tri0q1, 0.99946666666666661), 0.98, 10 * tol5eps); + + triangular trim12(-1, -0.5, 2); // mode is negative. + BOOST_CHECK_CLOSE_FRACTION(pdf(trim12, 0), 0.533333333333333333333333333333333333333333333, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(cdf(trim12, 0), 0.466666666666666666666666666666666666666666667, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(cdf(complement(trim12, 0)), 1 - 0.466666666666666666666666666666666666666666667, tol5eps); + + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0q1, 1 - 0.99946666666666661)), 0.98, 10 * tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, 1.)), 0., tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, 0.5)), 0.5, tol5eps); // OK + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, 1. - 0.02)), 0.1, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, 1. - 0.98)), 0.9, tol5eps); + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(tri0h1, 0)), 1., tol5eps); + + double xs [] = {0., 0.01, 0.02, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.98, 0.99, 1.}; + + const triangular_distribution& distr = tristd; + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(distr, 1.)), 0., tol5eps); + const triangular_distribution* distp = &tristd; + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(*distp, 1.)), 0., tol5eps); + + const triangular_distribution* dists [] = {&tristd, &tri011, &tri0q1, &tri0h1, &trim12}; + BOOST_CHECK_CLOSE_FRACTION(quantile(complement(*dists[1], 1.)), 0., tol5eps); + + for (int i = 0; i < 5; i++) + { + const triangular_distribution* const dist = dists[i]; + cout << "Distribution " << i << endl; + BOOST_CHECK_EQUAL(quantile(complement(*dists[i], 1.)), quantile(*dists[i], 0.)); + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], 0.5), quantile(complement(*dist, 0.5)), tol5eps); // OK + BOOST_CHECK_CLOSE_FRACTION(quantile(*dists[i], 0.98), quantile(complement(*dist, 1. - 0.98)),tol5eps); + // cout << setprecision(17) << median(*dist) << endl; + } + + cout << showpos << setprecision(2) << endl; + + //triangular_distribution& dist = trim12; + for (unsigned i = 0; i < sizeof(xs) /sizeof(double); i++) + { + double x = xs[i] * (trim12.upper() - trim12.lower()) + trim12.lower(); + double dx = cdf(trim12, x); + double cx = cdf(complement(trim12, x)); + //cout << fixed << showpos << setprecision(3) + // << xs[i] << ", " << x << ", " << pdf(trim12, x) << ", " << dx << ", " << cx << ",, " ; + + BOOST_CHECK_CLOSE_FRACTION(cx, 1 - dx, tol500eps); // cx == 1 - dx + + // << setprecision(2) << scientific << cr - x << ", " // difference x - quan(cdf) + // << setprecision(3) << fixed + // << quantile(trim12, dx) << ", " + // << quantile(complement(trim12, 1 - dx)) << ", " + // << quantile(complement(trim12, cx)) << ", " + // << endl; + BOOST_CHECK_CLOSE_FRACTION(quantile(trim12, dx), quantile(complement(trim12, 1 - dx)), tol500eps); + } + cout << endl; + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % + #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. + #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. + #endif + #else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; + #endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_triangular.exe" +Running 1 test case... +Distribution 0 +Distribution 1 +Distribution 2 +Distribution 3 +Distribution 4 +Tolerance for type float is 5.96046e-007. +Tolerance for type double is 1.11022e-015. +Tolerance for type long double is 1.11022e-015. +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-015. +*** No errors detected + + + +*/ + + + + diff --git a/test/test_uniform.cpp b/test/test_uniform.cpp new file mode 100644 index 000000000..274f55d3d --- /dev/null +++ b/test/test_uniform.cpp @@ -0,0 +1,450 @@ +// Copyright Paul Bristow 2007. +// Copyright John Maddock 2006. + +// 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) + +// test_uniform.cpp + +#ifdef _MSC_VER +# pragma warning(disable: 4127) // conditional expression is constant. +# pragma warning(disable: 4100) // unreferenced formal parameter. +#endif + +#include // for real_concept +#include // Boost.Test +#include + +#include + using boost::math::uniform_distribution; +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; + +template +void check_uniform(RealType lower, RealType upper, RealType x, RealType p, RealType q, RealType tol) +{ + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + uniform_distribution(lower, upper), // distribution. + x), // random variable. + p, // probability. + tol); // tolerance. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::cdf( + complement( + uniform_distribution(lower, upper), // distribution. + x)), // random variable. + q, // probability complement. + tol); // tolerance. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + uniform_distribution(lower, upper), // distribution. + p), // probability. + x, // random variable. + tol); // tolerance. + BOOST_CHECK_CLOSE_FRACTION( + ::boost::math::quantile( + complement( + uniform_distribution(lower, upper), // distribution. + q)), // probability complement. + x, // random variable. + tol); // tolerance. +} // void check_uniform + +template +void test_spots(RealType) +{ + // Basic sanity checks + // + // These test values were generated for the normal distribution + // using the online calculator at + // http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm + // + // Tolerance is just over 5 decimal digits expressed as a fraction: + // that's the limit of the test data. + RealType tolerance = 2e-5f; + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << "." << endl; + + using std::exp; + + // Tests for PDF + // + BOOST_CHECK_CLOSE_FRACTION( // x == upper + pdf(uniform_distribution(0, 1), static_cast(0)), + static_cast(1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x == lower + pdf(uniform_distribution(0, 1), static_cast(1)), + static_cast(1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x > upper + pdf(uniform_distribution(0, 1), static_cast(-1)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x < lower + pdf(uniform_distribution(0, 1), static_cast(2)), + static_cast(0), + tolerance); + + if(std::numeric_limits::has_infinity) + { // BOOST_CHECK tests for infinity using std::numeric_limits<>::infinity() + // Note that infinity is not implemented for real_concept, so these tests + // are only done for types, like built-in float, double.. that have infinity. + // Note that these assume that BOOST_MATH_OVERFLOW_ERROR_POLICY is NOT throw_on_error. + // #define BOOST_MATH_OVERFLOW_ERROR_POLICY == throw_on_error would give a throw here. + // #define BOOST_MATH_DOMAIN_ERROR_POLICY == throw_on_error IS defined, so the throw path + // of error handling is tested below with BOOST_CHECK_THROW tests. + + BOOST_CHECK_THROW( // x == infinity should NOT be OK. + pdf(uniform_distribution(0, 1), static_cast(std::numeric_limits::infinity())), + std::domain_error); + + BOOST_CHECK_THROW( // x == minus infinity should be OK too. + pdf(uniform_distribution(0, 1), static_cast(-std::numeric_limits::infinity())), + std::domain_error); + } + if(std::numeric_limits::has_quiet_NaN) + { // BOOST_CHECK tests for NaN using std::numeric_limits<>::has_quiet_NaN() - should throw. + BOOST_CHECK_THROW( + pdf(uniform_distribution(0, 1), static_cast(std::numeric_limits::quiet_NaN())), + std::domain_error); + BOOST_CHECK_THROW( + pdf(uniform_distribution(0, 1), static_cast(-std::numeric_limits::quiet_NaN())), + std::domain_error); + } // test for x = NaN using std::numeric_limits<>::quiet_NaN() + + // cdf + BOOST_CHECK_EQUAL( // x < lower + cdf(uniform_distribution(0, 1), static_cast(-1)), + static_cast(0) ); + BOOST_CHECK_CLOSE_FRACTION( + cdf(uniform_distribution(0, 1), static_cast(0)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(uniform_distribution(0, 1), static_cast(0.5)), + static_cast(0.5), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(uniform_distribution(0, 1), static_cast(0.1)), + static_cast(0.1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + cdf(uniform_distribution(0, 1), static_cast(0.9)), + static_cast(0.9), + tolerance); + BOOST_CHECK_EQUAL( // x > upper + cdf(uniform_distribution(0, 1), static_cast(2)), + static_cast(1)); + + // cdf complement + BOOST_CHECK_EQUAL( // x < lower + cdf(complement(uniform_distribution(0, 1), static_cast(0))), + static_cast(1)); + BOOST_CHECK_EQUAL( // x == 0 + cdf(complement(uniform_distribution(0, 1), static_cast(0))), + static_cast(1)); + BOOST_CHECK_CLOSE_FRACTION( // x = 0.1 + cdf(complement(uniform_distribution(0, 1), static_cast(0.1))), + static_cast(0.9), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x = 0.5 + cdf(complement(uniform_distribution(0, 1), static_cast(0.5))), + static_cast(0.5), + tolerance); + BOOST_CHECK_EQUAL( // x == 1 + cdf(complement(uniform_distribution(0, 1), static_cast(1))), + static_cast(0)); + BOOST_CHECK_EQUAL( // x > upper + cdf(complement(uniform_distribution(0, 1), static_cast(2))), + static_cast(1)); + + // quantile + + BOOST_CHECK_CLOSE_FRACTION( + quantile(uniform_distribution(0, 1), static_cast(0.9)), + static_cast(0.9), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(uniform_distribution(0, 1), static_cast(0.1)), + static_cast(0.1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(uniform_distribution(0, 1), static_cast(0.5)), + static_cast(0.5), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(uniform_distribution(0, 1), static_cast(0)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(uniform_distribution(0, 1), static_cast(1)), + static_cast(1), + tolerance); + + // quantile complement + + BOOST_CHECK_CLOSE_FRACTION( + quantile(complement(uniform_distribution(0, 1), static_cast(0.1))), + static_cast(0.9), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(complement(uniform_distribution(0, 1), static_cast(0.9))), + static_cast(0.1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(complement(uniform_distribution(0, 1), static_cast(0.5))), + static_cast(0.5), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(complement(uniform_distribution(0, 1), static_cast(0))), + static_cast(1), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( + quantile(complement(uniform_distribution(0, 1), static_cast(1))), + static_cast(1), + tolerance); + + // Some tests using a different location & scale, neight zero or unity. + BOOST_CHECK_CLOSE_FRACTION( // x == mid + pdf(uniform_distribution(-1, 2), static_cast(1)), + static_cast(0.3333333333333333333333333333333333333333333333333333), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == upper + pdf(uniform_distribution(-1, 2), static_cast(+2)), + static_cast(0.3333333333333333333333333333333333333333333333333333), // 1 / (2 - -1) = 1/3 + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == lower + cdf(uniform_distribution(-1, 2), static_cast(-1)), + static_cast(0), + tolerance); + BOOST_CHECK_CLOSE_FRACTION( // x == upper + cdf(uniform_distribution(-1, 2), static_cast(0)), + static_cast(0.3333333333333333333333333333333333333333333333333333), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == upper + cdf(uniform_distribution(-1, 2), static_cast(1)), + static_cast(0.6666666666666666666666666666666666666666666666666667), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == lower + cdf(uniform_distribution(-1, 2), static_cast(2)), + static_cast(1), + tolerance); + + BOOST_CHECK_CLOSE_FRACTION( // x == upper + quantile(uniform_distribution(-1, 2), static_cast(0.6666666666666666666666666666666666666666666666666667)), + static_cast(1), + tolerance); + + check_uniform( + static_cast(0), // lower + static_cast(1), // upper + static_cast(0.5), // x + static_cast(0.5), // p + static_cast(1 - 0.5), // q + tolerance); + + // Some Not-standard uniform tests. + check_uniform( + static_cast(-1), // lower + static_cast(1), // upper + static_cast(0), // x + static_cast(0.5), // p + static_cast(1 - 0.5), // q = 1 - p + tolerance); + + check_uniform( + static_cast(1), // lower + static_cast(3), // upper + static_cast(2), // x + static_cast(0.5), // p + static_cast(1 - 0.5), // q = 1 - p + tolerance); + + check_uniform( + static_cast(-1), // lower + static_cast(2), // upper + static_cast(1), // x + static_cast(0.66666666666666666666666666666666666666666667), // p + static_cast(0.33333333333333333333333333333333333333333333), // q = 1 - p + tolerance); + tolerance = (std::max)( + boost::math::tools::epsilon(), + static_cast(boost::math::tools::epsilon())) * 5; // 5 eps as a fraction. + cout << "Tolerance (as fraction) for type " << typeid(RealType).name() << " is " << tolerance << "." << endl; + uniform_distribution distu01(0, 1); + RealType x = static_cast(0.5); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE_FRACTION( + mean(distu01), static_cast(0.5), tolerance); + // variance: + BOOST_CHECK_CLOSE_FRACTION( + variance(distu01), static_cast(0.0833333333333333333333333333333333333333333), tolerance); + // std deviation: + BOOST_CHECK_CLOSE_FRACTION( + standard_deviation(distu01), sqrt(variance(distu01)), tolerance); + // hazard: + BOOST_CHECK_CLOSE_FRACTION( + hazard(distu01, x), pdf(distu01, x) / cdf(complement(distu01, x)), tolerance); + // cumulative hazard: + BOOST_CHECK_CLOSE_FRACTION( + chf(distu01, x), -log(cdf(complement(distu01, x))), tolerance); + // coefficient_of_variation: + BOOST_CHECK_CLOSE_FRACTION( + coefficient_of_variation(distu01), standard_deviation(distu01) / mean(distu01), tolerance); + // mode: + BOOST_CHECK_CLOSE_FRACTION( + mode(distu01), static_cast(0), tolerance); + BOOST_CHECK_CLOSE_FRACTION( + median(distu01), static_cast(0.5), tolerance); + // skewness: + BOOST_CHECK_EQUAL( + skewness(distu01), static_cast(0)); + // kertosis: + BOOST_CHECK_CLOSE_FRACTION( + kurtosis(distu01), kurtosis_excess(distu01) + static_cast(3), tolerance); + // kertosis excess: + BOOST_CHECK_CLOSE_FRACTION( + kurtosis_excess(distu01), static_cast(-1.2), tolerance); + + if(std::numeric_limits::has_infinity) + { // BOOST_CHECK tests for infinity using std::numeric_limits<>::infinity() + // Note that infinity is not implemented for real_concept, so these tests + // are only done for types, like built-in float, double, long double, that have infinity. + // Note that these assume that BOOST_MATH_OVERFLOW_ERROR_POLICY is NOT throw_on_error. + // #define BOOST_MATH_OVERFLOW_ERROR_POLICY == throw_on_error would give a throw here. + // #define BOOST_MATH_DOMAIN_ERROR_POLICY == throw_on_error IS defined, so the throw path + // of error handling is tested below with BOOST_CHECK_THROW tests. + + BOOST_CHECK_THROW(pdf(distu01, std::numeric_limits::infinity()), std::domain_error); + BOOST_CHECK_THROW(pdf(distu01, -std::numeric_limits::infinity()), std::domain_error); + } // test for infinity using std::numeric_limits<>::infinity() + else + { // real_concept case, does has_infinfity == false, so can't check it throws. + // cout << std::numeric_limits::infinity() << ' ' + // << boost::math::fpclassify(std::numeric_limits::infinity()) << endl; + // value of std::numeric_limits::infinity() is zero, so FPclassify is zero, + // so (boost::math::isfinite)(std::numeric_limits::infinity()) does not detect infinity. + // so these tests would never throw. + //BOOST_CHECK_THROW(pdf(distu01, std::numeric_limits::infinity()), std::domain_error); + //BOOST_CHECK_THROW(pdf(distu01, std::numeric_limits::quiet_NaN()), std::domain_error); + // BOOST_CHECK_THROW(pdf(distu01, boost::math::tools::max_value() * 2), std::domain_error); // Doesn't throw. + BOOST_CHECK_EQUAL(pdf(distu01, boost::math::tools::max_value()), 0); + } + // Special cases: + BOOST_CHECK(pdf(distu01, 0) == 1); + BOOST_CHECK(cdf(distu01, 0) == 0); + BOOST_CHECK(pdf(distu01, 1) == 1); + BOOST_CHECK(cdf(distu01, 1) == 1); + BOOST_CHECK(cdf(complement(distu01, 0)) == 1); + BOOST_CHECK(cdf(complement(distu01, 1)) == 0); + BOOST_CHECK(quantile(distu01, 0) == 0); + BOOST_CHECK(quantile(complement(distu01, 0)) == 1); + BOOST_CHECK(quantile(distu01, 1) == 1); + BOOST_CHECK(quantile(complement(distu01, 1)) == 1); + + // Error checks: + if(std::numeric_limits::has_quiet_NaN) + { // BOOST_CHECK tests for constructing with quiet_NaN (not for real_concept, for example - see notes above). + BOOST_CHECK_THROW(uniform_distribution(0, std::numeric_limits::quiet_NaN()), std::domain_error); + BOOST_CHECK_THROW(uniform_distribution(0, -std::numeric_limits::quiet_NaN()), std::domain_error); + } + BOOST_CHECK_THROW(uniform_distribution(1, 0), std::domain_error); // lower > upper! + BOOST_CHECK_THROW(uniform_distribution(1, 1), std::domain_error); // lower == upper! + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + // Check that can construct uniform distribution using the two convenience methods: + using namespace boost::math; + uniform unistd; // Using typedef + // == uniform_distribution unistd; + BOOST_CHECK_EQUAL(unistd.lower(), 0); // Check defaults. + BOOST_CHECK_EQUAL(unistd.upper(), 1); + uniform_distribution<> myu01(0, 1); // Using default RealType double. + BOOST_CHECK_EQUAL(myu01.lower(), 0); // Check defaults again. + BOOST_CHECK_EQUAL(myu01.upper(), 1); + + // Test on extreme values of random variate x, using just double because it has numeric_limit infinity etc.. + // No longer allow x to be + or - infinity, then these tests should throw. + BOOST_CHECK_THROW(pdf(unistd, +std::numeric_limits::infinity()), std::domain_error); // x = + infinity + BOOST_CHECK_THROW(pdf(unistd, -std::numeric_limits::infinity()), std::domain_error); // x = - infinity + BOOST_CHECK_THROW(cdf(unistd, +std::numeric_limits::infinity()), std::domain_error); // x = + infinity + BOOST_CHECK_THROW(cdf(unistd, -std::numeric_limits::infinity()), std::domain_error); // x = - infinity + + BOOST_CHECK_EQUAL(pdf(unistd, +(std::numeric_limits::max)()), 0); // x = + max + BOOST_CHECK_EQUAL(pdf(unistd, -(std::numeric_limits::min)()), 0); // x = - min + BOOST_CHECK_EQUAL(cdf(unistd, +(std::numeric_limits::max)()), 1); // x = + max + BOOST_CHECK_EQUAL(cdf(unistd, -(std::numeric_limits::min)()), 0); // x = - min + + BOOST_CHECK_THROW(uniform_distribution<> zinf(0, +std::numeric_limits::infinity()), std::domain_error); // zero to infinity using default RealType double. + + uniform_distribution<> zmax(0, +(std::numeric_limits::max)()); // zero to max using default RealType double. + BOOST_CHECK_EQUAL(zmax.lower(), 0); // Check defaults again. + BOOST_CHECK_EQUAL(zmax.upper(), +(std::numeric_limits::max)()); + + BOOST_CHECK_EQUAL(pdf(zmax, -1), 0); // pdf is 1/(0 - max) = almost zero for all x + BOOST_CHECK_EQUAL(pdf(zmax, 0), (std::numeric_limits::min)()/4); // x = + BOOST_CHECK_EQUAL(pdf(zmax, 1), (std::numeric_limits::min)()/4); // x = + BOOST_CHECK_THROW(pdf(zmax, +std::numeric_limits::infinity()), std::domain_error); // pdf is 1/(0 - infinity) = zero for all x + BOOST_CHECK_THROW(pdf(zmax, -std::numeric_limits::infinity()), std::domain_error); + BOOST_CHECK_EQUAL(pdf(zmax, +(std::numeric_limits::max)()), (std::numeric_limits::min)()/4); // x = + BOOST_CHECK_EQUAL(pdf(zmax, -(std::numeric_limits::max)()), 0); // x = + + // Ensure NaN throws an exception. + BOOST_CHECK_THROW(uniform_distribution<> zNaN(0, std::numeric_limits::quiet_NaN()), std::domain_error); + BOOST_CHECK_THROW(pdf(unistd, std::numeric_limits::quiet_NaN()), std::domain_error); + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_uniform.exe" +Running 1 test case... +Tolerance for type float is 2e-005. +Tolerance (as fraction) for type float is 5.96046e-007. +Tolerance for type double is 2e-005. +Tolerance (as fraction) for type double is 1.11022e-015. +Tolerance for type long double is 2e-005. +Tolerance (as fraction) for type long double is 1.11022e-015. +Tolerance for type class boost::math::concepts::real_concept is 2e-005. +Tolerance (as fraction) for type class boost::math::concepts::real_concept is 1.11022e-015. +*** No errors detected + +*/ + + + diff --git a/test/test_weibull.cpp b/test/test_weibull.cpp new file mode 100644 index 000000000..32c049219 --- /dev/null +++ b/test/test_weibull.cpp @@ -0,0 +1,378 @@ +// Copyright John Maddock 2006. +// Copyright Paul A. Bristow 2007. + +// 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) + +// test_weibull.cpp + +#include // for real_concept +#include // Boost.Test +#include + +#include + using boost::math::weibull_distribution; +#include + +#include + using std::cout; + using std::endl; + using std::setprecision; +#include + using std::numeric_limits; + +template +void check_weibull(RealType shape, RealType scale, RealType x, RealType p, RealType q, RealType tol) +{ + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + weibull_distribution(shape, scale), // distribution. + x), // random variable. + p, // probability. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::cdf( + complement( + weibull_distribution(shape, scale), // distribution. + x)), // random variable. + q, // probability complement. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + weibull_distribution(shape, scale), // distribution. + p), // probability. + x, // random variable. + tol); // %tolerance. + BOOST_CHECK_CLOSE( + ::boost::math::quantile( + complement( + weibull_distribution(shape, scale), // distribution. + q)), // probability complement. + x, // random variable. + tol); // %tolerance. +} + +template +void test_spots(RealType) +{ + // Basic sanity checks + // + // These test values were generated for the normal distribution + // using the online calculator at + // http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm + // + // Tolerance is just over 5 decimal digits expressed as a persentage: + // that's the limit of the test data. + RealType tolerance = 2e-5f * 100; + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + + using std::exp; + + check_weibull( + static_cast(0.25), // shape + static_cast(0.5), // scale + static_cast(0.1), // x + static_cast(0.487646), // p + static_cast(1-0.487646), // q + tolerance); + check_weibull( + static_cast(0.25), // shape + static_cast(0.5), // scale + static_cast(0.5), // x + static_cast(1-0.367879), // p + static_cast(0.367879), // q + tolerance); + check_weibull( + static_cast(0.25), // shape + static_cast(0.5), // scale + static_cast(1), // x + static_cast(1-0.304463), // p + static_cast(0.304463), // q + tolerance); + check_weibull( + static_cast(0.25), // shape + static_cast(0.5), // scale + static_cast(2), // x + static_cast(1-0.243117), // p + static_cast(0.243117), // q + tolerance); + check_weibull( + static_cast(0.25), // shape + static_cast(0.5), // scale + static_cast(5), // x + static_cast(1-0.168929), // p + static_cast(0.168929), // q + tolerance); + + check_weibull( + static_cast(0.5), // shape + static_cast(2), // scale + static_cast(0.1), // x + static_cast(0.200371), // p + static_cast(1-0.200371), // q + tolerance); + check_weibull( + static_cast(0.5), // shape + static_cast(2), // scale + static_cast(0.5), // x + static_cast(0.393469), // p + static_cast(1-0.393469), // q + tolerance); + check_weibull( + static_cast(0.5), // shape + static_cast(2), // scale + static_cast(1), // x + static_cast(1-0.493069), // p + static_cast(0.493069), // q + tolerance); + check_weibull( + static_cast(0.5), // shape + static_cast(2), // scale + static_cast(2), // x + static_cast(1-0.367879), // p + static_cast(0.367879), // q + tolerance); + check_weibull( + static_cast(0.5), // shape + static_cast(2), // scale + static_cast(5), // x + static_cast(1-0.205741), // p + static_cast(0.205741), // q + tolerance); + + check_weibull( + static_cast(2), // shape + static_cast(0.25), // scale + static_cast(0.1), // x + static_cast(0.147856), // p + static_cast(1-0.147856), // q + tolerance); + check_weibull( + static_cast(2), // shape + static_cast(0.25), // scale + static_cast(0.5), // x + static_cast(1-0.018316), // p + static_cast(0.018316), // q + tolerance); + + /* + This test value came from + http://espse.ed.psu.edu/edpsych/faculty/rhale/hale/507Mat/statlets/free/pdist.htm + but appears to be grossly incorrect: certainly it does not agree with the values + I get from pushing numbers into a calculator (0.0001249921878255106610615995196123). + Strangely other test values generated for the same shape and scale parameters do look OK. + check_weibull( + static_cast(3), // shape + static_cast(2), // scale + static_cast(0.1), // x + static_cast(1.25E-40), // p + static_cast(1-1.25E-40), // q + tolerance); + */ + check_weibull( + static_cast(3), // shape + static_cast(2), // scale + static_cast(0.5), // x + static_cast(0.015504), // p + static_cast(1-0.015504), // q + tolerance * 10); // few digits in test value + check_weibull( + static_cast(3), // shape + static_cast(2), // scale + static_cast(1), // x + static_cast(0.117503), // p + static_cast(1-0.117503), // q + tolerance); + check_weibull( + static_cast(3), // shape + static_cast(2), // scale + static_cast(2), // x + static_cast(1-0.367879), // p + static_cast(0.367879), // q + tolerance); + + // + // Tests for PDF + // + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(0.25, 0.5), static_cast(0.1)), + static_cast(0.856579), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(0.25, 0.5), static_cast(0.5)), + static_cast(0.183940), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(0.25, 0.5), static_cast(5)), + static_cast(0.015020), + tolerance * 10); // fewer digits in test value + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(0.5, 2), static_cast(0.1)), + static_cast(0.894013), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(0.5, 2), static_cast(0.5)), + static_cast(0.303265), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(0.5, 2), static_cast(1)), + static_cast(0.174326), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(2, 0.25), static_cast(0.1)), + static_cast(2.726860), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(2, 0.25), static_cast(0.5)), + static_cast(0.293050), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(3, 2), static_cast(1)), + static_cast(0.330936), + tolerance); + BOOST_CHECK_CLOSE( + pdf(weibull_distribution(3, 2), static_cast(2)), + static_cast(0.551819), + tolerance); + + // + // These test values were obtained using the formulas at + // http://en.wikipedia.org/wiki/Weibull_distribution + // which are subtly different to (though mathematically + // the same as) the ones on the Mathworld site + // http://mathworld.wolfram.com/WeibullDistribution.html + // which are the ones used in the implementation. + // The assumption is that if both computation methods + // agree then the implementation is probably correct... + // What's not clear is which method is more accurate. + // + tolerance = (std::max)( + boost::math::tools::epsilon(), + static_cast(boost::math::tools::epsilon())) * 5 * 100; // 5 eps as a percentage + cout << "Tolerance for type " << typeid(RealType).name() << " is " << tolerance << " %" << endl; + weibull_distribution dist(2, 3); + RealType x = static_cast(0.125); + using namespace std; // ADL of std names. + // mean: + BOOST_CHECK_CLOSE( + mean(dist) + , dist.scale() * boost::math::tgamma(1 + 1 / dist.shape()), tolerance); + // variance: + BOOST_CHECK_CLOSE( + variance(dist) + , dist.scale() * dist.scale() * boost::math::tgamma(1 + 2 / dist.shape()) - mean(dist) * mean(dist), tolerance); + // std deviation: + BOOST_CHECK_CLOSE( + standard_deviation(dist) + , sqrt(variance(dist)), tolerance); + // hazard: + BOOST_CHECK_CLOSE( + hazard(dist, x) + , pdf(dist, x) / cdf(complement(dist, x)), tolerance); + // cumulative hazard: + BOOST_CHECK_CLOSE( + chf(dist, x) + , -log(cdf(complement(dist, x))), tolerance); + // coefficient_of_variation: + BOOST_CHECK_CLOSE( + coefficient_of_variation(dist) + , standard_deviation(dist) / mean(dist), tolerance); + // mode: + BOOST_CHECK_CLOSE( + mode(dist) + , dist.scale() * pow((dist.shape() - 1) / dist.shape(), 1/dist.shape()), tolerance); + // median: + BOOST_CHECK_CLOSE( + median(dist) + , dist.scale() * pow(log(static_cast(2)), 1 / dist.shape()), tolerance); + // skewness: + BOOST_CHECK_CLOSE( + skewness(dist), + (boost::math::tgamma(1 + 3/dist.shape()) * pow(dist.scale(), RealType(3)) - 3 * mean(dist) * variance(dist) - pow(mean(dist), RealType(3))) / pow(standard_deviation(dist), RealType(3)), + tolerance * 100); + // kertosis: + BOOST_CHECK_CLOSE( + kurtosis(dist) + , kurtosis_excess(dist) + 3, tolerance); + // kertosis excess: + BOOST_CHECK_CLOSE( + kurtosis_excess(dist), + (pow(dist.scale(), RealType(4)) * boost::math::tgamma(1 + 4/dist.shape()) + - 3 * variance(dist) * variance(dist) + - 4 * skewness(dist) * variance(dist) * standard_deviation(dist) * mean(dist) + - 6 * variance(dist) * mean(dist) * mean(dist) + - pow(mean(dist), RealType(4))) / (variance(dist) * variance(dist)), + tolerance * 1000); + + // + // Special cases: + // + BOOST_CHECK(pdf(dist, 0) == 0); + BOOST_CHECK(cdf(dist, 0) == 0); + BOOST_CHECK(cdf(complement(dist, 0)) == 1); + BOOST_CHECK(quantile(dist, 0) == 0); + BOOST_CHECK(quantile(complement(dist, 1)) == 0); + + // + // Error checks: + // + BOOST_CHECK_THROW(weibull_distribution(0, -1), std::domain_error); + BOOST_CHECK_THROW(weibull_distribution(-1, 1), std::domain_error); + BOOST_CHECK_THROW(pdf(dist, -1), std::domain_error); + BOOST_CHECK_THROW(cdf(dist, -1), std::domain_error); + BOOST_CHECK_THROW(cdf(complement(dist, -1)), std::domain_error); + BOOST_CHECK_THROW(quantile(dist, 1), std::overflow_error); + BOOST_CHECK_THROW(quantile(complement(dist, 0)), std::overflow_error); + +} // template void test_spots(RealType) + +int test_main(int, char* []) +{ + + // Check that can construct weibull distribution using the two convenience methods: + using namespace boost::math; + weibull myw1(2); // Using typedef + weibull_distribution<> myw2(2); // Using default RealType double. + + // Basic sanity-check spot values. + // (Parameter value, arbitrarily zero, only communicates the floating point type). + test_spots(0.0F); // Test float. OK at decdigits = 0 tolerance = 0.0001 % + test_spots(0.0); // Test double. OK at decdigits 7, tolerance = 1e07 % +#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS + test_spots(0.0L); // Test long double. +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0582)) + test_spots(boost::math::concepts::real_concept(0.)); // Test real concept. +#endif +#else + std::cout << "The long double tests have been disabled on this platform " + "either because the long double overloads of the usual math functions are " + "not available at all, or because they are too inaccurate for these tests " + "to pass." << std::cout; +#endif + + return 0; +} // int test_main(int, char* []) + +/* + +Output: + +Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\test_weibull.exe" +Running 1 test case... +Tolerance for type float is 0.002 % +Tolerance for type float is 5.96046e-005 % +Tolerance for type double is 0.002 % +Tolerance for type double is 1.11022e-013 % +Tolerance for type long double is 0.002 % +Tolerance for type long double is 1.11022e-013 % +Tolerance for type class boost::math::concepts::real_concept is 0.002 % +Tolerance for type class boost::math::concepts::real_concept is 1.11022e-013 % +*** No errors detected + +*/ + + + + diff --git a/test/tgamma_delta_ratio_data.ipp b/test/tgamma_delta_ratio_data.ipp new file mode 100644 index 000000000..3a2969b84 --- /dev/null +++ b/test/tgamma_delta_ratio_data.ipp @@ -0,0 +1,570 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 560> tgamma_delta_ratio_data = { { + { SC_(0.2585242462158203125e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999998251530248995276873521622051469349e0), SC_(0.1000000174847005556584935896873247717521e1) }, + { SC_(0.2585242462158203125e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.999999781195646858662207729479648955493e0), SC_(0.1000000218804400836041852388787649318772e1) }, + { SC_(0.2585242462158203125e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999992655149263979633607427932657111612e0), SC_(0.1000000734485611035140775476483228633931e1) }, + { SC_(0.2585242462158203125e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999985855896265447456778263434928930538e0), SC_(0.1000001414412366465930704463900488591982e1) }, + { SC_(0.2585242462158203125e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999982626548644744952904509631607678305e0), SC_(0.1000001737348142509415721770085153528871e1) }, + { SC_(0.2585242462158203125e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999939296621942038545330388383612018463e0), SC_(0.1000006070374515974386401812531964569938e1) }, + { SC_(0.2585242462158203125e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999882015392083420820590401050831666868e0), SC_(0.1000011798599471698320496927282851435367e1) }, + { SC_(0.2585242462158203125e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999849414855571510186069460633635722574e0), SC_(0.100001505874034945059522274595122297502e1) }, + { SC_(0.2585242462158203125e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999597380646515528354486024651847636645e0), SC_(0.1000040263550319943886221473682554015115e1) }, + { SC_(0.2585242462158203125e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999354692330693579923518462608760820048e0), SC_(0.1000064534915704102352131840666481142235e1) }, + { SC_(0.2585242462158203125e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998917208889694530058425389988593934263e0), SC_(0.1000108290792416164012804795838323764558e1) }, + { SC_(0.2585242462158203125e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996947442966006592976441458929101277858e0), SC_(0.1000305348561075817062325093547661856711e1) }, + { SC_(0.2585242462158203125e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994955727290581849404289655378810140685e0), SC_(0.1000504680885139037822534025743748797801e1) }, + { SC_(0.2585242462158203125e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9990624580199676173916703708565427843875e0), SC_(0.1000938418466905798031791435452101055018e1) }, + { SC_(0.2585242462158203125e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9975610861022903221561899703141791348538e0), SC_(0.100244485418677879663798501597244544674e1) }, + { SC_(0.2585242462158203125e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9937278186773194106390554970972851459813e0), SC_(0.100631161956687281471898918527812610804e1) }, + { SC_(0.2585242462158203125e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9877154377124412300856863814182060327707e0), SC_(0.1012436766025790015381991545261255096474e1) }, + { SC_(0.2585242462158203125e2), SC_(0.779867731034755706787109375e-2), SC_(0.9751013656425511680030902634736420475346e0), SC_(0.1025531946310101796079629524884350857053e1) }, + { SC_(0.2585242462158203125e2), SC_(0.15350691974163055419921875e-1), SC_(0.9515790661841248294367778038596333142378e0), SC_(0.1050875058164998685409675651470553880948e1) }, + { SC_(0.2585242462158203125e2), SC_(0.307452343404293060302734375e-1), SC_(0.9053659020566855236992060373732306230212e0), SC_(0.1104484626687114609435978036501693747322e1) }, + { SC_(0.2585242462158203125e2), SC_(0.36175407469272613525390625e-1), SC_(0.8896041540632749956354535217058411588909e0), SC_(0.1124037454973942332969819033951835840808e1) }, + { SC_(0.2585242462158203125e2), SC_(0.10786493122577667236328125e0), SC_(0.7054284924577535378692687185388981829148e0), SC_(0.1416927796010049530382552725533678655455e1) }, + { SC_(0.2585242462158203125e2), SC_(0.2463240921497344970703125e0), SC_(0.4504341244929360176728122486115363051051e0), SC_(0.221477413672608805343931793057582616074e1) }, + { SC_(0.2585242462158203125e2), SC_(0.49527740478515625e0), SC_(0.2006872187401179782199716363143168099368e0), SC_(0.493490170967777908350210290285351802481e1) }, + { SC_(0.2585242462158203125e2), SC_(0.97858345508575439453125e0), SC_(0.4148819733420400314432511432493435069162e-1), SC_(0.2320967613276263777519155169613012005116e2) }, + { SC_(0.2585242462158203125e2), SC_(0.110986173152923583984375e1), SC_(0.2699620660586217424137708692874661231742e-1), SC_(0.3528517488424231302164184504667130625721e2) }, + { SC_(0.2585242462158203125e2), SC_(0.2970751285552978515625e1), SC_(0.5703385229085370029592211356722646834358e-4), SC_(0.1236967264821060149332720477406637969004e5) }, + { SC_(0.2585242462158203125e2), SC_(0.7192423343658447265625e1), SC_(0.312799338488474106328954065959738498016e-10), SC_(0.4040224153039980846285110727435371987011e10) }, + { SC_(0.2761920928955078125e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999998215100084504946489151623116996137e0), SC_(0.1000000178490023300344336544888751699239e1) }, + { SC_(0.2761920928955078125e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997766367584992913505687442889847483e0), SC_(0.1000000223363291222972544528238080595588e1) }, + { SC_(0.2761920928955078125e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999992502115994334380753664176258020911e0), SC_(0.100000074978896084660048277653220975194e1) }, + { SC_(0.2761920928955078125e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999985561197604324202048627296723864958e0), SC_(0.1000001443882317303562220288256332814481e1) }, + { SC_(0.2761920928955078125e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999982264565157295217773527075480014079e0), SC_(0.100000177354661908492980625430723946754e1) }, + { SC_(0.2761920928955078125e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999938031843246022968565105662072274863e0), SC_(0.100000619685394617023653168345222076774e1) }, + { SC_(0.2761920928955078125e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999879557143788616314464477919030261072e0), SC_(0.1000012044430196635832390178516949941026e1) }, + { SC_(0.2761920928955078125e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999846277369625852014465179641266929718e0), SC_(0.1000015372498547580600989775783392643319e1) }, + { SC_(0.2761920928955078125e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999588992062972129323604627467921024011e0), SC_(0.1000041102477328684867704797664834852427e1) }, + { SC_(0.2761920928955078125e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999341247499571836979767075742117953005e0), SC_(0.1000065879575185678690004193797265065374e1) }, + { SC_(0.2761920928955078125e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998894649707082164443658784832372030059e0), SC_(0.1000110547207267300549814469820842704208e1) }, + { SC_(0.2761920928955078125e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996883851604331898952308256993803819919e0), SC_(0.1000311711644735999928553545581742464729e1) }, + { SC_(0.2761920928955078125e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994850655036220003991268188160421351258e0), SC_(0.1000515198892023217559630116410089321457e1) }, + { SC_(0.2761920928955078125e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.999042933396807962846885278439531777276e0), SC_(0.1000957980350590578084038158064766792741e1) }, + { SC_(0.2761920928955078125e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9975103344886355073739215145855973469823e0), SC_(0.1002495858329474867402105752011398641476e1) }, + { SC_(0.2761920928955078125e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9935975605217556837012468820869310269309e0), SC_(0.1006443554296010021005993276583515461795e1) }, + { SC_(0.2761920928955078125e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9874611190750547136880534080754941783709e0), SC_(0.1012697555116673379860030001468132879564e1) }, + { SC_(0.2761920928955078125e2), SC_(0.779867731034755706787109375e-2), SC_(0.9745893388625716715001519308556241582916e0), SC_(0.1026070897467557797970454748122411290968e1) }, + { SC_(0.2761920928955078125e2), SC_(0.15350691974163055419921875e-1), SC_(0.9505959114338431722719396982164571448131e0), SC_(0.1051962563494583070221778404662057531129e1) }, + { SC_(0.2761920928955078125e2), SC_(0.307452343404293060302734375e-1), SC_(0.9034939329460968216717640886309128666327e0), SC_(0.110677572034481643033343126748115192572e1) }, + { SC_(0.2761920928955078125e2), SC_(0.36175407469272613525390625e-1), SC_(0.8874405252579435042694632791381198312809e0), SC_(0.1126781707978335366751137352646824630077e1) }, + { SC_(0.2761920928955078125e2), SC_(0.10786493122577667236328125e0), SC_(0.7003320327234493061313580183001255063169e0), SC_(0.1427281727585703720685841644944143279602e1) }, + { SC_(0.2761920928955078125e2), SC_(0.2463240921497344970703125e0), SC_(0.4430563451131439162318174512541015503353e0), SC_(0.2252005573576556293676722042756139922836e1) }, + { SC_(0.2761920928955078125e2), SC_(0.49527740478515625e0), SC_(0.1941627934229264461348492610519028646766e0), SC_(0.5103944203804764492332257720558791837651e1) }, + { SC_(0.2761920928955078125e2), SC_(0.97858345508575439453125e0), SC_(0.3888824521247676853985207683624450047037e-1), SC_(0.2482243505873736943032698538231350331416e2) }, + { SC_(0.2761920928955078125e2), SC_(0.110986173152923583984375e1), SC_(0.2509014551770987377476189121889722729862e-1), SC_(0.3808616761102880142677543426380565879418e2) }, + { SC_(0.2761920928955078125e2), SC_(0.2970751285552978515625e1), SC_(0.4718526030762142934253192872659692965277e-4), SC_(0.1529656874300164763215173158369610008193e5) }, + { SC_(0.2761920928955078125e2), SC_(0.7192423343658447265625e1), SC_(0.2038584876776042753735024552509501015314e-10), SC_(0.7117746217125398339861109449063861185753e10) }, + { SC_(0.28128620147705078125e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.99999982050364215090892404437474711285e0), SC_(0.1000000179496389962183519600826898508042e1) }, + { SC_(0.28128620147705078125e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997753773868576861852733374803994641e0), SC_(0.1000000224622663431871760007389376686803e1) }, + { SC_(0.28128620147705078125e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999992459841267794835674420602295844729e0), SC_(0.1000000754016439892933523209932790867166e1) }, + { SC_(0.28128620147705078125e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999985479788475257550635071788977964397e0), SC_(0.1000001452023253915649608093438078770695e1) }, + { SC_(0.28128620147705078125e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999982164568909557567830686332457553422e0), SC_(0.1000001783546279624596179562918082644354e1) }, + { SC_(0.28128620147705078125e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.99999376824540582412539568100461608519e0), SC_(0.1000006231793301589458770150117360952875e1) }, + { SC_(0.28128620147705078125e2), SC_(0.364947482012212276458740234375e-5), SC_(0.999987887806426774332420590531830346106e0), SC_(0.1000012112339798222029689224380143781757e1) }, + { SC_(0.28128620147705078125e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999845410653937853580121539066811663283e0), SC_(0.1000015459172803376275951333474425905993e1) }, + { SC_(0.28128620147705078125e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999586674757112488900269170887657293041e0), SC_(0.1000041334227123568212484212847758296888e1) }, + { SC_(0.28128620147705078125e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999337533430812323236628353366489526402e0), SC_(0.1000066251031408293324033434691232915424e1) }, + { SC_(0.28128620147705078125e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998888417846912575831236759902206510008e0), SC_(0.100011117053222590285474149637390038221e1) }, + { SC_(0.28128620147705078125e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996866284857249945552736604631215082189e0), SC_(0.1000313469423919186240115490632144581742e1) }, + { SC_(0.28128620147705078125e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994821629507108273740348715944821214864e0), SC_(0.1000518104461492127398517136132114998172e1) }, + { SC_(0.28128620147705078125e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9990375398767317570782851769498472645723e0), SC_(0.1000963384295845823989304400127601960475e1) }, + { SC_(0.28128620147705078125e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9974963150387197952820545734683233147181e0), SC_(0.1002509948434877032628031640719604010844e1) }, + { SC_(0.28128620147705078125e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9935615802673928866054120633175350641473e0), SC_(0.1006480003641526739693316293507040884998e1) }, + { SC_(0.28128620147705078125e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9873908760653526896085984267682572140042e0), SC_(0.1012769608505647582565989606127517119964e1) }, + { SC_(0.28128620147705078125e2), SC_(0.779867731034755706787109375e-2), SC_(0.974447940366527951390718964887959557003e0), SC_(0.1026219829197710844089563038251930773519e1) }, + { SC_(0.28128620147705078125e2), SC_(0.15350691974163055419921875e-1), SC_(0.9503244952717526597148925015520843277949e0), SC_(0.1052263176388029067074268335575150482226e1) }, + { SC_(0.28128620147705078125e2), SC_(0.307452343404293060302734375e-1), SC_(0.9029774800782163533249350107321576854643e0), SC_(0.1107409445925782785547593904586965815891e1) }, + { SC_(0.28128620147705078125e2), SC_(0.36175407469272613525390625e-1), SC_(0.8868437436958574359577082730479010233505e0), SC_(0.1127540953274292118391012413433480538427e1) }, + { SC_(0.28128620147705078125e2), SC_(0.10786493122577667236328125e0), SC_(0.6989305402390837473390075416084411987971e0), SC_(0.1430155015923060411101542445934199759504e1) }, + { SC_(0.28128620147705078125e2), SC_(0.2463240921497344970703125e0), SC_(0.441039258646631265638266002292144751295e0), SC_(0.2262398386806061960255348113474690901654e1) }, + { SC_(0.28128620147705078125e2), SC_(0.49527740478515625e0), SC_(0.1923974495979627349280893703418369113218e0), SC_(0.5151634413499998259322567499659601379645e1) }, + { SC_(0.28128620147705078125e2), SC_(0.97858345508575439453125e0), SC_(0.3819866600153866889792688955327300559346e-1), SC_(0.2528700391254464295853146546851717036111e2) }, + { SC_(0.28128620147705078125e2), SC_(0.110986173152923583984375e1), SC_(0.2458731521168908886666352655770928565425e-1), SC_(0.3889763817812824851157303765234763726009e2) }, + { SC_(0.28128620147705078125e2), SC_(0.2970751285552978515625e1), SC_(0.4477279761287194547397333295321435266449e-4), SC_(0.1621834657452941630020831711166429479162e5) }, + { SC_(0.28128620147705078125e2), SC_(0.7192423343658447265625e1), SC_(0.1810174684766783750205231846181276505153e-10), SC_(0.8313282217990179437873950646240512744014e10) }, + { SC_(0.3130291748046875e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999998146223058019457585148673917574289e0), SC_(0.1000000185377728468000909293217767326019e1) }, + { SC_(0.3130291748046875e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997680174541876686116227063616326393e0), SC_(0.1000000231982599479553620456640255993681e1) }, + { SC_(0.3130291748046875e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999992212782236456696602028767288991557e0), SC_(0.1000000778722381086918641412268501607418e1) }, + { SC_(0.3130291748046875e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999985004022883117033615112834320392534e0), SC_(0.1000001499599954271597826334221407783537e1) }, + { SC_(0.3130291748046875e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999981580177769830606176529137747811766e0), SC_(0.1000001841985606547186203316781035868685e1) }, + { SC_(0.3130291748046875e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999935640578156336896150429342929869023e0), SC_(0.1000006435983491537256512416939972467957e1) }, + { SC_(0.3130291748046875e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999874909435575320935651895401377079129e0), SC_(0.1000012509212488567659302481759515618848e1) }, + { SC_(0.3130291748046875e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999840345455496659137269601919833562119e0), SC_(0.1000015965708645847643724268882313473586e1) }, + { SC_(0.3130291748046875e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999573132128928905893835373634386600286e0), SC_(0.1000042688604311680074924770643542214075e1) }, + { SC_(0.3130291748046875e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999315827953985814794189723312083034481e0), SC_(0.1000068421872900586832056099110696667628e1) }, + { SC_(0.3130291748046875e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998851998116763138859832859880807510627e0), SC_(0.1000114813332498292482328862504042826204e1) }, + { SC_(0.3130291748046875e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996763623094653040952461088365726931814e0), SC_(0.1000323742176214239385619185317819191166e1) }, + { SC_(0.3130291748046875e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994652002172231670602616670109215041894e0), SC_(0.1000535085155540719336957259460460626064e1) }, + { SC_(0.3130291748046875e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9990060200115972283733985902041862556472e0), SC_(0.1000994966232414255804596774229982673661e1) }, + { SC_(0.3130291748046875e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9974143874097720957046103228974013928514e0), SC_(0.1002592296746049288275440958994914878109e1) }, + { SC_(0.3130291748046875e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9933513325499143738319081419301745583925e0), SC_(0.1006693044324782137471173601835980449213e1) }, + { SC_(0.3130291748046875e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9869804648874866902257200818763595692328e0), SC_(0.1013190798678660419183572431499708306008e1) }, + { SC_(0.3130291748046875e2), SC_(0.779867731034755706787109375e-2), SC_(0.9736219920317667713524464480601516533986e0), SC_(0.1027090630544098083535944869781805125368e1) }, + { SC_(0.3130291748046875e2), SC_(0.15350691974163055419921875e-1), SC_(0.9487398256475081498456439274889126497802e0), SC_(0.1054021686052677865108432462226959624172e1) }, + { SC_(0.3130291748046875e2), SC_(0.307452343404293060302734375e-1), SC_(0.8999650571605559930526930427770877187064e0), SC_(0.1111120156882183657969680756057365208995e1) }, + { SC_(0.3130291748046875e2), SC_(0.36175407469272613525390625e-1), SC_(0.8833639511161311636881986330582900033509e0), SC_(0.1131988144205982995310532252157691215846e1) }, + { SC_(0.3130291748046875e2), SC_(0.10786493122577667236328125e0), SC_(0.6907949715256198119395121584391378600022e0), SC_(0.1447060887865052173204970460139960617926e1) }, + { SC_(0.3130291748046875e2), SC_(0.2463240921497344970703125e0), SC_(0.4294303182806651593330039892696999743449e0), SC_(0.232408437149766057253538917124707055478e1) }, + { SC_(0.3130291748046875e2), SC_(0.49527740478515625e0), SC_(0.1823915581682609095404541547342433371881e0), SC_(0.5439223537848118038375363671726217914022e1) }, + { SC_(0.3130291748046875e2), SC_(0.97858345508575439453125e0), SC_(0.3440250651289441536440687299296903184574e-1), SC_(0.2817780353561301632970608449213426622027e2) }, + { SC_(0.3130291748046875e2), SC_(0.110986173152923583984375e1), SC_(0.2184073692854069754424237685570139328853e-1), SC_(0.4399094210777338656414356664962023530641e2) }, + { SC_(0.3130291748046875e2), SC_(0.2970751285552978515625e1), SC_(0.3291592507891298860147895865362697167952e-4), SC_(0.2280244203925236055062892350579886316534e5) }, + { SC_(0.3130291748046875e2), SC_(0.7192423343658447265625e1), SC_(0.8997000012800248646656945452960101840257e-11), SC_(0.2040947252060745443165508316616345640782e11) }, + { SC_(0.33262042999267578125e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999998112877597544408596798832829128604e0), SC_(0.1000000188712275768603194294595616461519e1) }, + { SC_(0.33262042999267578125e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997638445871876246872787721078873242e0), SC_(0.1000000236155468441965813234505613171547e1) }, + { SC_(0.33262042999267578125e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999992072706978791130537897344388703222e0), SC_(0.1000000792729928965818551886299294984269e1) }, + { SC_(0.33262042999267578125e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999984734277687517163416944223098255768e0), SC_(0.1000001526574555832741726246609113067587e1) }, + { SC_(0.33262042999267578125e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999981248845064025239517106782451277982e0), SC_(0.1000001875119000848163680167470689571921e1) }, + { SC_(0.33262042999267578125e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999934482894294410193863774267758129927e0), SC_(0.1000006551753388146865654264389156731929e1) }, + { SC_(0.33262042999267578125e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999872659339619552100835550861980038268e0), SC_(0.1000012734227790046615522001106340667181e1) }, + { SC_(0.33262042999267578125e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999837473636929606878083913960050760496e0), SC_(0.100001625289979733633425809405544651883e1) }, + { SC_(0.33262042999267578125e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999565453862004410527802378897157578158e0), SC_(0.1000043456497451104859732846841712033594e1) }, + { SC_(0.33262042999267578125e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999303521602685514713654288890237601871e0), SC_(0.1000069652678729262646631902834021934279e1) }, + { SC_(0.33262042999267578125e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998831349250636069059604334237648149781e0), SC_(0.1000116878699734182838217057718341877169e1) }, + { SC_(0.33262042999267578125e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996705417332051793703334175756541617241e0), SC_(0.1000329566573044451381873717637109599848e1) }, + { SC_(0.33262042999267578125e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994555829681673108515321813968006439231e0), SC_(0.1000544712839391731610336278205308208615e1) }, + { SC_(0.33262042999267578125e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.998988149602444448180171370532958585713e0), SC_(0.1001012872704065531633431506408727747677e1) }, + { SC_(0.33262042999267578125e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9973679397750695491817333303346868460396e0), SC_(0.1002638988790327243692534138329806940259e1) }, + { SC_(0.33262042999267578125e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9932321476682132601098491806159175839716e0), SC_(0.1006813851874979000713907909238751768546e1) }, + { SC_(0.33262042999267578125e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9867478482602993616078017673249797986902e0), SC_(0.101342967773639528516327667596114090086e1) }, + { SC_(0.33262042999267578125e2), SC_(0.779867731034755706787109375e-2), SC_(0.9731540093280325726077953953049513109391e0), SC_(0.1027584672275050305394875395277380915331e1) }, + { SC_(0.33262042999267578125e2), SC_(0.15350691974163055419921875e-1), SC_(0.947842518973188564639297423964320650176e0), SC_(0.105501999328244129998558728630725385381e1) }, + { SC_(0.33262042999267578125e2), SC_(0.307452343404293060302734375e-1), SC_(0.8982614942047089075724325630143024857752e0), SC_(0.1113229451027053391963944347565319703526e1) }, + { SC_(0.33262042999267578125e2), SC_(0.36175407469272613525390625e-1), SC_(0.8813969792371007408883213514555871790411e0), SC_(0.1134517230086981588127849290296743275607e1) }, + { SC_(0.33262042999267578125e2), SC_(0.10786493122577667236328125e0), SC_(0.6862237902639329364738739340097749898621e0), SC_(0.1456733171225035531476176455386142074028e1) }, + { SC_(0.33262042999267578125e2), SC_(0.2463240921497344970703125e0), SC_(0.4229824463886604649942994926317357498047e0), SC_(0.2359790201036085410109517942479140848493e1) }, + { SC_(0.33262042999267578125e2), SC_(0.49527740478515625e0), SC_(0.1769477535633527437482138117689958198285e0), SC_(0.5609231650654506941431198952760920540124e1) }, + { SC_(0.33262042999267578125e2), SC_(0.97858345508575439453125e0), SC_(0.3241769494432287753146956421438803419716e-1), SC_(0.2995867884978765216007667088633070539022e2) }, + { SC_(0.33262042999267578125e2), SC_(0.110986173152923583984375e1), SC_(0.2042001100035347645212356327548294500164e-1), SC_(0.4716431074059042802176098298361395680941e2) }, + { SC_(0.33262042999267578125e2), SC_(0.2970751285552978515625e1), SC_(0.2762874619843804424641041720769305829246e-4), SC_(0.2763744482965663719928068485094201444623e5) }, + { SC_(0.33262042999267578125e2), SC_(0.7192423343658447265625e1), SC_(0.6032414607154017416898031502982894153314e-11), SC_(0.3374430783505289802130759274466175710961e11) }, + { SC_(0.3670989227294921875e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999998058765048050824265798241659743432e0), SC_(0.1000000194123532798083220486999834299208e1) }, + { SC_(0.3670989227294921875e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997570729166631021571427564758002868e0), SC_(0.1000000242927142223988242286301543513248e1) }, + { SC_(0.3670989227294921875e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999991845394801937731782736192854073538e0), SC_(0.1000000815461183357294190214169504183736e1) }, + { SC_(0.3670989227294921875e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999984296538949052846492024298418361345e0), SC_(0.1000001570348565799780618052518665986323e1) }, + { SC_(0.3670989227294921875e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999980711162977881237285107338292519813e0), SC_(0.1000001928887414836514307177539556421215e1) }, + { SC_(0.3670989227294921875e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.999993260422129705504175270353684777102e0), SC_(0.10000067396231951503106299349409956699e1) }, + { SC_(0.3670989227294921875e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999869007916242136781519831919005424028e0), SC_(0.1000013099379599494210059135170597612479e1) }, + { SC_(0.3670989227294921875e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999832813291408590453130500297736489354e0), SC_(0.1000016718949778629675136153997009854459e1) }, + { SC_(0.3670989227294921875e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999552993689532132428238458699213921649e0), SC_(0.1000044702624999247456802794308753112074e1) }, + { SC_(0.3670989227294921875e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999283551058610781703647939871457772738e0), SC_(0.1000071650016493754314297983049141716469e1) }, + { SC_(0.3670989227294921875e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998797840647103358046462829628088214914e0), SC_(0.1000120230357914241405526304773708796389e1) }, + { SC_(0.3670989227294921875e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996610962539964252076484899096008871354e0), SC_(0.1000339018394338370595310057531759996607e1) }, + { SC_(0.3670989227294921875e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994399764240571838251294115271042489123e0), SC_(0.1000560336705094747847420502920773314198e1) }, + { SC_(0.3670989227294921875e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.998959150420923525981396019017999831016e0), SC_(0.10010419317487569048571101904009031443e1) }, + { SC_(0.3670989227294921875e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9972925697327819927718569302953226445924e0), SC_(0.1002714764548617766263703253410039761424e1) }, + { SC_(0.3670989227294921875e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9930387660719090950204180874948943381007e0), SC_(0.1007009927075966082204644966479705303835e1) }, + { SC_(0.3670989227294921875e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9863704761401727817567365880088256857352e0), SC_(0.1013817445405334765044034507263811811248e1) }, + { SC_(0.3670989227294921875e2), SC_(0.779867731034755706787109375e-2), SC_(0.9723950449460580596776901966030889049391e0), SC_(0.1028386894474098086190454570290350761404e1) }, + { SC_(0.3670989227294921875e2), SC_(0.15350691974163055419921875e-1), SC_(0.9463881606950703762099549796197994327414e0), SC_(0.1056642014607083971976274302940225800883e1) }, + { SC_(0.3670989227294921875e2), SC_(0.307452343404293060302734375e-1), SC_(0.8955037326900435484890164443703940463929e0), SC_(0.1116660780084997367421062506496038445992e1) }, + { SC_(0.3670989227294921875e2), SC_(0.36175407469272613525390625e-1), SC_(0.8782141811407116532491673175801995044158e0), SC_(0.1138633243987277586895157392655466176043e1) }, + { SC_(0.3670989227294921875e2), SC_(0.10786493122577667236328125e0), SC_(0.6788690662956642739003076222472301226706e0), SC_(0.1472564894285830222800613266980854300001e1) }, + { SC_(0.3670989227294921875e2), SC_(0.2463240921497344970703125e0), SC_(0.4127212951458681339530937941793493741864e0), SC_(0.241888617278227516262004704394836418166e1) }, + { SC_(0.3670989227294921875e2), SC_(0.49527740478515625e0), SC_(0.1684523112162936315983710071254546787534e0), SC_(0.5896319980614204759654980359359005615324e1) }, + { SC_(0.3670989227294921875e2), SC_(0.97858345508575439453125e0), SC_(0.2943422255108695457238391064592356579979e-1), SC_(0.3308728906195819341338891632308933529151e2) }, + { SC_(0.3670989227294921875e2), SC_(0.110986173152923583984375e1), SC_(0.1830584749034101636232823610508342692871e-1), SC_(0.5280011842367078346966481694463221783124e2) }, + { SC_(0.3670989227294921875e2), SC_(0.2970751285552978515625e1), SC_(0.2077495134758931328559800602362998744578e-4), SC_(0.3771359919624017922228235587388755102668e5) }, + { SC_(0.3670989227294921875e2), SC_(0.7192423343658447265625e1), SC_(0.3138061054156714582929737608862362265778e-11), SC_(0.7564545475579148370924576811071418928808e11) }, + { SC_(0.38490020751953125e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999998032811572857536624675408311525215e0), SC_(0.1000000196718881335568373252705375915546e1) }, + { SC_(0.38490020751953125e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997538250862717110939612088164777622e0), SC_(0.1000000246174974209826641687458284406375e1) }, + { SC_(0.38490020751953125e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999991736371277380551796548537375566418e0), SC_(0.1000000826363553779551622774421860490378e1) }, + { SC_(0.38490020751953125e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999984086590586273907048775715174075181e0), SC_(0.1000001591343468704580560374059073220136e1) }, + { SC_(0.38490020751953125e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999980453279763673178307350754930918341e0), SC_(0.1000001954675836781635880067048193613133e1) }, + { SC_(0.38490020751953125e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999931703171780807939492597714758359038e0), SC_(0.1000006829729374006577527302653404490001e1) }, + { SC_(0.38490020751953125e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999867256620062853525805820853854812905e0), SC_(0.1000013274513853535189393266882688728711e1) }, + { SC_(0.38490020751953125e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999830578096017410703812991066657129754e0), SC_(0.1000016942476869868714367300985242782691e1) }, + { SC_(0.38490020751953125e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999547017543748187617749811537180158619e0), SC_(0.1000045300293566592121959688184323764554e1) }, + { SC_(0.38490020751953125e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999273972794934812138091144305754320897e0), SC_(0.1000072607981556011952220479571316964675e1) }, + { SC_(0.38490020751953125e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998781769281102947670698664163209704604e0), SC_(0.1000121837885026281104672213219458947363e1) }, + { SC_(0.38490020751953125e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996565660419830981876402848351629163526e0), SC_(0.1000343551710609907661338804436146721917e1) }, + { SC_(0.38490020751953125e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9994324912945002486536354651159930313755e0), SC_(0.1000567830313045714498710747694312312058e1) }, + { SC_(0.38490020751953125e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9989452421203148613426779718859169673719e0), SC_(0.1001055869350570890334799239900333962508e1) }, + { SC_(0.38490020751953125e2), SC_(0.755313201807439327239990234375e-3), SC_(0.997256422725770668547098695139049743551e0), SC_(0.1002751110141309139616743953900485092607e1) }, + { SC_(0.38490020751953125e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9929460295120156923104980005417395836307e0), SC_(0.1007103982074041246560517750270537316252e1) }, + { SC_(0.38490020751953125e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9861895313176664888684014465324967023071e0), SC_(0.1014003478540031558591424963257431786959e1) }, + { SC_(0.38490020751953125e2), SC_(0.779867731034755706787109375e-2), SC_(0.9720312373557315902754896032338730797349e0), SC_(0.1028771875566399656870753989724573565763e1) }, + { SC_(0.38490020751953125e2), SC_(0.15350691974163055419921875e-1), SC_(0.9456914019032027970679980572463606639483e0), SC_(0.1057420841074118605737900162816005125099e1) }, + { SC_(0.38490020751953125e2), SC_(0.307452343404293060302734375e-1), SC_(0.8941840180397068166500444043522438024888e0), SC_(0.1118310213024847608476334736237040788339e1) }, + { SC_(0.38490020751953125e2), SC_(0.36175407469272613525390625e-1), SC_(0.8766916702054219464196063562741523250397e0), SC_(0.114061258831410324435527690039534595026e1) }, + { SC_(0.38490020751953125e2), SC_(0.10786493122577667236328125e0), SC_(0.6753692227104625369639993294514594126121e0), SC_(0.1480218182917450322990198349872173374119e1) }, + { SC_(0.38490020751953125e2), SC_(0.2463240921497344970703125e0), SC_(0.4078873159974503398446253763900532052496e0), SC_(0.2447745178216028607493118324018578070715e1) }, + { SC_(0.38490020751953125e2), SC_(0.49527740478515625e0), SC_(0.1645217004993884096278136209583741337285e0), SC_(0.6039106305233131369403300538168355612243e1) }, + { SC_(0.38490020751953125e2), SC_(0.97858345508575439453125e0), SC_(0.2810103275882448476680742131057974284712e-1), SC_(0.3470002214810128466629505748155181331805e2) }, + { SC_(0.38490020751953125e2), SC_(0.110986173152923583984375e1), SC_(0.1736994694989569654691930873716952809033e-1), SC_(0.5573380586836199394551303380581079604493e2) }, + { SC_(0.38490020751953125e2), SC_(0.2970751285552978515625e1), SC_(0.1811261008003580207012267207727225211558e-4), SC_(0.4375542654693954965878496604125557503519e5) }, + { SC_(0.38490020751953125e2), SC_(0.7192423343658447265625e1), SC_(0.2289050421233551920821245707164349175361e-11), SC_(0.1110241386609796376668164761522110181183e12) }, + { SC_(0.5281288909912109375e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997859797105017593602353365415404146e0), SC_(0.1000000214020335247023482042628921560229e1) }, + { SC_(0.5281288909912109375e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997321739724525572919984910945419989e0), SC_(0.1000000267826099190685093027006897899613e1) }, + { SC_(0.5281288909912109375e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999991009584350025693540224823153961997e0), SC_(0.1000000899042372287273493848890555726548e1) }, + { SC_(0.5281288909912109375e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999982687005310754879380306125136750399e0), SC_(0.1000001731302462668781531240478556383622e1) }, + { SC_(0.5281288909912109375e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999978734144934137542121947097190385554e0), SC_(0.100000212659002344155351761279071213074e1) }, + { SC_(0.5281288909912109375e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999925696479045943776543859096315186712e0), SC_(0.1000007430407238555151101946481778536145e1) }, + { SC_(0.5281288909912109375e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999855581906897994762065122202461771419e0), SC_(0.1000014442017624476592274874923579905473e1) }, + { SC_(0.5281288909912109375e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999815677555157431527963906275320669833e0), SC_(0.1000018432583823429505700419327480461487e1) }, + { SC_(0.5281288909912109375e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.999950717866495016984330905143477377953e0), SC_(0.1000049284559388457345247483185195135537e1) }, + { SC_(0.5281288909912109375e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999210121145578658918418104532711709302e0), SC_(0.1000078994117404120868467965100877274559e1) }, + { SC_(0.5281288909912109375e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.99986746328796130132013907797456553054e0), SC_(0.1000132554258899677494124282380584738107e1) }, + { SC_(0.5281288909912109375e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996263666651512321482573919331993800495e0), SC_(0.1000373772818365448870301215307080479832e1) }, + { SC_(0.5281288909912109375e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993825943546412383570227676153496979691e0), SC_(0.1000617786604711751775649612833926871005e1) }, + { SC_(0.5281288909912109375e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9988525296660685863849529935780441429662e0), SC_(0.1001148786923793882505202626351673337127e1) }, + { SC_(0.5281288909912109375e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9970154878665386578874346410328309769597e0), SC_(0.1002993435171888098232480838587746244524e1) }, + { SC_(0.5281288909912109375e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9923280354542145315990158460930401317557e0), SC_(0.1007731205681261632883129361476163648079e1) }, + { SC_(0.5281288909912109375e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9849841308342619212036896086526996726959e0), SC_(0.1015244499158838623281194478013371487727e1) }, + { SC_(0.5281288909912109375e2), SC_(0.779867731034755706787109375e-2), SC_(0.9696094091899270234250809945604746533068e0), SC_(0.103134192794584113067116661364235702342e1) }, + { SC_(0.5281288909912109375e2), SC_(0.15350691974163055419921875e-1), SC_(0.9410595094489923194002898013465219822959e0), SC_(0.1062627268095232895646413951086297555228e1) }, + { SC_(0.5281288909912109375e2), SC_(0.307452343404293060302734375e-1), SC_(0.8854353291186898953571598673303603117512e0), SC_(0.1129367553218685522521403925159721249384e1) }, + { SC_(0.5281288909912109375e2), SC_(0.36175407469272613525390625e-1), SC_(0.8666085307934724085857680052163287878012e0), SC_(0.1153894693536308172878344938563745097937e1) }, + { SC_(0.5281288909912109375e2), SC_(0.10786493122577667236328125e0), SC_(0.6524893330052798954878213580925295583436e0), SC_(0.1532251290616085669656390212526354276766e1) }, + { SC_(0.5281288909912109375e2), SC_(0.2463240921497344970703125e0), SC_(0.3770614940813498994864116659737346581123e0), SC_(0.2649013119531351546562780693845437247004e1) }, + { SC_(0.5281288909912109375e2), SC_(0.49527740478515625e0), SC_(0.1405379687719985437013284098796767164373e0), SC_(0.7082228171639505470850515871952794548477e1) }, + { SC_(0.5281288909912109375e2), SC_(0.97858345508575439453125e0), SC_(0.2061774299531252234482516431101360769193e-1), SC_(0.4762210404262706238315917735747381568445e2) }, + { SC_(0.5281288909912109375e2), SC_(0.110986173152923583984375e1), SC_(0.1223199998565167568304142626869509935511e-1), SC_(0.7985017900003305721483390420063063690927e2) }, + { SC_(0.5281288909912109375e2), SC_(0.2970751285552978515625e1), SC_(0.7218771838627776016751025986395100982212e-5), SC_(0.1170125727989454643112624214336712283474e6) }, + { SC_(0.5281288909912109375e2), SC_(0.7192423343658447265625e1), SC_(0.2713193913201301889967867868919059879524e-12), SC_(0.1366802594459550472445475413515210497598e13) }, + { SC_(0.528332366943359375e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997859586791468899794718949547785845e0), SC_(0.1000000214041366610917318772751288020677e1) }, + { SC_(0.528332366943359375e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997321476537138557241077740466374139e0), SC_(0.1000000267852417943519086876309490550818e1) }, + { SC_(0.528332366943359375e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999991008700879784433678908776233419638e0), SC_(0.1000000899130719470646375449746813834049e1) }, + { SC_(0.528332366943359375e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999982685303997958397772553003307791225e0), SC_(0.1000001731472594538979028125511985228311e1) }, + { SC_(0.528332366943359375e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.99999787320551822022821043099197299601e0), SC_(0.1000002126798999526079438937683878725783e1) }, + { SC_(0.528332366943359375e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999925689177410908533563249682532767498e0), SC_(0.1000007431137412936274624981346705864778e1) }, + { SC_(0.528332366943359375e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999855567715316286947877275556824899688e0), SC_(0.1000014443436823739680304856401682495749e1) }, + { SC_(0.528332366943359375e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999815659442317626948812802939489058986e0), SC_(0.1000018434395174348387574733197988825649e1) }, + { SC_(0.528332366943359375e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999507130237557827078951167666958455993e0), SC_(0.1000049289402606224103614662542615010403e1) }, + { SC_(0.528332366943359375e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999210043528806036791234423671022281355e0), SC_(0.1000079001880310706859240407619174212709e1) }, + { SC_(0.528332366943359375e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.999867450264705101138275787135542594805e0), SC_(0.1000132567285617191062980947741004208232e1) }, + { SC_(0.528332366943359375e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996263299558331398329259998395969731671e0), SC_(0.10003738095551982156958230802378904048e1) }, + { SC_(0.528332366943359375e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993825337022390032132246647369118138359e0), SC_(0.100061784733226245651342448836706411557e1) }, + { SC_(0.528332366943359375e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9988524169715097940059578754142689009581e0), SC_(0.1001148899878064689465142913829413778531e1) }, + { SC_(0.528332366943359375e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9970151950251213271026175122059541192699e0), SC_(0.100299372977347527053179615681054280118e1) }, + { SC_(0.528332366943359375e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9923272844623823462305129247438819135283e0), SC_(0.1007731968359124589975167972328962453771e1) }, + { SC_(0.528332366943359375e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9849826664565754684679309289747946103763e0), SC_(0.1015246008637200501631706239287433438935e1) }, + { SC_(0.528332366943359375e2), SC_(0.779867731034755706787109375e-2), SC_(0.9696064688911049650342193561154092348998e0), SC_(0.1031345055921512586818719433659762562459e1) }, + { SC_(0.528332366943359375e2), SC_(0.15350691974163055419921875e-1), SC_(0.941053892677301492623391072069775684744e0), SC_(0.1062633612350355187551200541275348598171e1) }, + { SC_(0.528332366943359375e2), SC_(0.307452343404293060302734375e-1), SC_(0.8854247460596489903275040425814309583544e0), SC_(0.1129381059943411995633065947796126798141e1) }, + { SC_(0.528332366943359375e2), SC_(0.36175407469272613525390625e-1), SC_(0.8665963439852865359850969731756075483669e0), SC_(0.11539109317984468648587989435527384479e1) }, + { SC_(0.528332366943359375e2), SC_(0.10786493122577667236328125e0), SC_(0.6524619926556332917253815740120910404226e0), SC_(0.1532315629587433294849866854115160200865e1) }, + { SC_(0.528332366943359375e2), SC_(0.2463240921497344970703125e0), SC_(0.377025462375175979403172090209857566988e0), SC_(0.2649267476002787271668156065814897333684e1) }, + { SC_(0.528332366943359375e2), SC_(0.49527740478515625e0), SC_(0.1405110311036132860107304303613727276143e0), SC_(0.7083598834546302004520670766483125161136e1) }, + { SC_(0.528332366943359375e2), SC_(0.97858345508575439453125e0), SC_(0.2060997097125024602487449750613439172035e-1), SC_(0.4764040145115247859581412211788698165492e2) }, + { SC_(0.528332366943359375e2), SC_(0.110986173152923583984375e1), SC_(0.1222677704924113668982790295625447586084e-1), SC_(0.798850202103175621124321437876066595333e2) }, + { SC_(0.528332366943359375e2), SC_(0.2970751285552978515625e1), SC_(0.7210665099847737674791039819909480268519e-5), SC_(0.117151822421538624258313560099109299843e6) }, + { SC_(0.528332366943359375e2), SC_(0.7192423343658447265625e1), SC_(0.2706092793341799923651401457596581694302e-12), SC_(0.1370921239059891710637943822592442254902e13) }, + { SC_(0.57941555023193359375e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.999999780921729827737655265606470512344e0), SC_(0.1000000219078318116641813850072897287494e1) }, + { SC_(0.57941555023193359375e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997258443910984116475576404080317093e0), SC_(0.1000000274155683983166175999202482065606e1) }, + { SC_(0.57941555023193359375e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990797112286364969303889114316696625e0), SC_(0.1000000920289617397171342259520180314106e1) }, + { SC_(0.57941555023193359375e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999982277844458004524005040466362498903e0), SC_(0.1000001772218691620968924899002585995704e1) }, + { SC_(0.57941555023193359375e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999978231565583829031329899070632044707e0), SC_(0.1000002176848175247401906793931117000297e1) }, + { SC_(0.57941555023193359375e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999923940456858153976434379615842530506e0), SC_(0.1000007606012103789524615653642769367105e1) }, + { SC_(0.57941555023193359375e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999852168872666434452446355322057511005e0), SC_(0.1000014783331045147167903916665501074638e1) }, + { SC_(0.57941555023193359375e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999811321469931658794824100253234842076e0), SC_(0.1000018868208631728421791070341008187576e1) }, + { SC_(0.57941555023193359375e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999495532022308349418690891257971171888e0), SC_(0.100005044934007675481916901551038550174e1) }, + { SC_(0.57941555023193359375e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999191454550973354099378802747241575939e0), SC_(0.1000080861075951837372344510057929571399e1) }, + { SC_(0.57941555023193359375e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998643312369375974000663805413663746211e0), SC_(0.1000135687152040404922252130806680373535e1) }, + { SC_(0.57941555023193359375e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996175382176194965742602290480831219317e0), SC_(0.1000382607960054350221069426949725825849e1) }, + { SC_(0.57941555023193359375e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993680077304245658029038963714612294904e0), SC_(0.1000632391512105516831251608936992032367e1) }, + { SC_(0.57941555023193359375e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9988254273098140224633808575318156734476e0), SC_(0.100117595246644198100629162134253266115e1) }, + { SC_(0.57941555023193359375e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9969450627974274927131815634187735667017e0), SC_(0.1003064288479900087838633583631759847185e1) }, + { SC_(0.57941555023193359375e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9921474402821598157772153554617517105623e0), SC_(0.1007914643995980876198243798780653176105e1) }, + { SC_(0.57941555023193359375e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9846320142999381692076210600912650469058e0), SC_(0.1015607588430039952854198869333955851968e1) }, + { SC_(0.57941555023193359375e2), SC_(0.779867731034755706787109375e-2), SC_(0.9689025300779478708888575474259084135013e0), SC_(0.1032094467895037385151224198742028175101e1) }, + { SC_(0.57941555023193359375e2), SC_(0.15350691974163055419921875e-1), SC_(0.9397096480006311526898421521105865715679e0), SC_(0.1064154124540263658617753580932791240421e1) }, + { SC_(0.57941555023193359375e2), SC_(0.307452343404293060302734375e-1), SC_(0.8828937394747771295448357839557907435945e0), SC_(0.1132620495134547456602839498468258172474e1) }, + { SC_(0.57941555023193359375e2), SC_(0.36175407469272613525390625e-1), SC_(0.8636825227795041786124465060882446687872e0), SC_(0.1157806476333623531322150377917261683646e1) }, + { SC_(0.57941555023193359375e2), SC_(0.10786493122577667236328125e0), SC_(0.6459466375574522077779028015007920063353e0), SC_(0.1547801964424693973085386826145048743788e1) }, + { SC_(0.57941555023193359375e2), SC_(0.2463240921497344970703125e0), SC_(0.3684934864179692399599046936085734055399e0), SC_(0.2710887212826261808913711150117232590356e1) }, + { SC_(0.57941555023193359375e2), SC_(0.49527740478515625e0), SC_(0.1342046826407496058913818229819202821701e0), SC_(0.7419552864474987788194049482646305739763e1) }, + { SC_(0.57941555023193359375e2), SC_(0.97858345508575439453125e0), SC_(0.1882978401509613471708323935174452216203e-1), SC_(0.5222930407265363135301566561475966179207e2) }, + { SC_(0.57941555023193359375e2), SC_(0.110986173152923583984375e1), SC_(0.1103746507505182122656618817052545363321e-1), SC_(0.88678263221274006807235072443399600401e2) }, + { SC_(0.57941555023193359375e2), SC_(0.2970751285552978515625e1), SC_(0.5507558347475296284476679482675635188822e-5), SC_(0.155699593447114626398232110783075649558e6) }, + { SC_(0.57941555023193359375e2), SC_(0.7192423343658447265625e1), SC_(0.1442091136041628535552547802495637216852e-12), SC_(0.2811060088543540599129711985219039413267e13) }, + { SC_(0.688834228515625e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997714918922038349926708590477961507e0), SC_(0.1000000228508159969359950502673941144497e1) }, + { SC_(0.688834228515625e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997140438469414012057644185093432188e0), SC_(0.1000000285956234762561590393119074590031e1) }, + { SC_(0.688834228515625e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990400990366768417556087911886731989e0), SC_(0.1000000959901883979134858108584584792093e1) }, + { SC_(0.688834228515625e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999981515026160408655435252641720402057e0), SC_(0.1000001848500798109056641749524102289353e1) }, + { SC_(0.688834228515625e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999977294582691290839528691809852193948e0), SC_(0.1000002270546882019380756178338803171803e1) }, + { SC_(0.688834228515625e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999920666620686805348278753242920042872e0), SC_(0.1000007933400818113635519242381285002636e1) }, + { SC_(0.688834228515625e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999845805791169058261240315345362734421e0), SC_(0.1000015419658450536618482125733384357017e1) }, + { SC_(0.688834228515625e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.999980320021485229446601339656630029423e0), SC_(0.1000019680365506679563852651799699259601e1) }, + { SC_(0.688834228515625e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.999947381865976340069895694720356461937e0), SC_(0.1000052620900569206192789614749854676259e1) }, + { SC_(0.688834228515625e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999156653609232448368678037804933223205e0), SC_(0.1000084341746180976023992136715500907427e1) }, + { SC_(0.688834228515625e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998584920288971839757687900439833851793e0), SC_(0.1000141527982035168785244545160585009927e1) }, + { SC_(0.688834228515625e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9996010791228562776647802623175222199419e0), SC_(0.1000399079948058116363639115545484344729e1) }, + { SC_(0.688834228515625e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993408137459394518089780291208788897504e0), SC_(0.1000659620710792366484242113446640471821e1) }, + { SC_(0.688834228515625e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987749010247407313586279800655100942416e0), SC_(0.100122660045128451483357086742919887647e1) }, + { SC_(0.688834228515625e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9968137791086784906690130807301198844494e0), SC_(0.1003196396975654586633134017841242965964e1) }, + { SC_(0.688834228515625e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9918108349870761631809540230209757831179e0), SC_(0.1008256725312417222514619541883758375607e1) }, + { SC_(0.688834228515625e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9839758796502898589758817538769841910875e0), SC_(0.1016284857108949148632013091859031906579e1) }, + { SC_(0.688834228515625e2), SC_(0.779867731034755706787109375e-2), SC_(0.967586025249645048771106266544848501462e0), SC_(0.1033498918476671464799376528578248335476e1) }, + { SC_(0.688834228515625e2), SC_(0.15350691974163055419921875e-1), SC_(0.937198160139430820717956939197593397975e0), SC_(0.1067006527199563113796626805940885458327e1) }, + { SC_(0.688834228515625e2), SC_(0.307452343404293060302734375e-1), SC_(0.8781746301024020474838274130417902011433e0), SC_(0.1138709936480509348706846098853105292513e1) }, + { SC_(0.688834228515625e2), SC_(0.36175407469272613525390625e-1), SC_(0.8582535552084552625084399683949164545713e0), SC_(0.1165134542535821320802909881260801287082e1) }, + { SC_(0.688834228515625e2), SC_(0.10786493122577667236328125e0), SC_(0.6339219814609435425105396911583784220001e0), SC_(0.1577212820172920830532301947352839688616e1) }, + { SC_(0.688834228515625e2), SC_(0.2463240921497344970703125e0), SC_(0.3530319496978802716711708558146601726374e0), SC_(0.2830092640764388315794463996431055172104e1) }, + { SC_(0.688834228515625e2), SC_(0.49527740478515625e0), SC_(0.1231434593917285204464724327101146198197e0), SC_(0.8091532761924054487557194217466087168511e1) }, + { SC_(0.688834228515625e2), SC_(0.97858345508575439453125e0), SC_(0.1589707640101486370213376782369544728697e-1), SC_(0.6202987132295894628162575381517693638749e2) }, + { SC_(0.688834228515625e2), SC_(0.110986173152923583984375e1), SC_(0.9110948101668545494937452164534811478378e-2), SC_(0.1077986348409255804771396022732934658056e3) }, + { SC_(0.688834228515625e2), SC_(0.2970751285552978515625e1), SC_(0.3320314889009004668606916250501750157682e-5), SC_(0.264700838857613744268554767748199724317e6) }, + { SC_(0.688834228515625e2), SC_(0.7192423343658447265625e1), SC_(0.4399844752925456476755996964092282918356e-13), SC_(0.1065180934763502687648102812756617103632e14) }, + { SC_(0.7010051727294921875e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997705378009558297757734851551343248e0), SC_(0.1000000229462251655058706557976776506355e1) }, + { SC_(0.7010051727294921875e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997128498925663246464395898869584756e0), SC_(0.1000000287150189823072436010532364229847e1) }, + { SC_(0.7010051727294921875e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990360911580105119142771330593408532e0), SC_(0.1000000963909770369070148366501510904176e1) }, + { SC_(0.7010051727294921875e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999981437845803333644632864602563166221e0), SC_(0.1000001856218862458686391415160909793023e1) }, + { SC_(0.7010051727294921875e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999977199780726315605488170744689046858e0), SC_(0.100000228002712173113331953571181079052e1) }, + { SC_(0.7010051727294921875e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999920335380847853238502754595836684759e0), SC_(0.100000796652532958135833633883953312211e1) }, + { SC_(0.7010051727294921875e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999845161988112225036692599548105245823e0), SC_(0.1000015484040749230619842467306506474273e1) }, + { SC_(0.7010051727294921875e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.999980237852360956492716954384520776727e0), SC_(0.1000019762537877521152652062217158010672e1) }, + { SC_(0.7010051727294921875e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999471621749750239093582480162296166514e0), SC_(0.1000052840614779741435801564371512634538e1) }, + { SC_(0.7010051727294921875e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999153132529411438205516761145174923272e0), SC_(0.1000084693913786291697789592800570780191e1) }, + { SC_(0.7010051727294921875e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998579012319225198711122599716244858494e0), SC_(0.1000142118946886379988453828381354841433e1) }, + { SC_(0.7010051727294921875e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.999599413841044924819639203822792678898e0), SC_(0.1000400746564353824846513861050404542836e1) }, + { SC_(0.7010051727294921875e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993380623563570007426888466118681007234e0), SC_(0.1000662375745137453956580774327996011969e1) }, + { SC_(0.7010051727294921875e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.99876978902215528898530107312049335716e0), SC_(0.1001231725050116739816802159993089270091e1) }, + { SC_(0.7010051727294921875e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9968004970552610657176210316149067004828e0), SC_(0.1003209764398775866907114617103926809684e1) }, + { SC_(0.7010051727294921875e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9917767842805444544921277254967677053458e0), SC_(0.1008291342801866114121816616820131551755e1) }, + { SC_(0.7010051727294921875e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9839095174925780486095229224480724593466e0), SC_(0.1016353406698592403441489380057332425949e1) }, + { SC_(0.7010051727294921875e2), SC_(0.779867731034755706787109375e-2), SC_(0.9674529229664919419016670464416436983253e0), SC_(0.1033641123450354764749831080334329762038e1) }, + { SC_(0.7010051727294921875e2), SC_(0.15350691974163055419921875e-1), SC_(0.9369444243894474638668426020357101743772e0), SC_(0.1067295549631736053749829650016146994075e1) }, + { SC_(0.7010051727294921875e2), SC_(0.307452343404293060302734375e-1), SC_(0.8776985570699223152668110253659410754886e0), SC_(0.1139327860247670386919674891614261249465e1) }, + { SC_(0.7010051727294921875e2), SC_(0.36175407469272613525390625e-1), SC_(0.8577061536167276809400053201389947270064e0), SC_(0.1165878539911008298452430392620345096543e1) }, + { SC_(0.7010051727294921875e2), SC_(0.10786493122577667236328125e0), SC_(0.6327177960258820632304243606010525456164e0), SC_(0.1580219265226732301562806397612654325423e1) }, + { SC_(0.7010051727294921875e2), SC_(0.2463240921497344970703125e0), SC_(0.3515039102968829854262425804896093886372e0), SC_(0.2842439571769317332783033793361383712688e1) }, + { SC_(0.7010051727294921875e2), SC_(0.49527740478515625e0), SC_(0.1220760134685592770619672655811783189869e0), SC_(0.8162798005574471948292886853743089601804e1) }, + { SC_(0.7010051727294921875e2), SC_(0.97858345508575439453125e0), SC_(0.1562688878433684045621756980905278325472e-1), SC_(0.6311781793854103053757030121737275888158e2) }, + { SC_(0.7010051727294921875e2), SC_(0.110986173152923583984375e1), SC_(0.8935688904031088542967944800457792717725e-2), SC_(0.1099475618121433646478026728123237396308e3) }, + { SC_(0.7010051727294921875e2), SC_(0.2970751285552978515625e1), SC_(0.3154243902558786321896380971732592254334e-5), SC_(0.2792674332576983945961443058438216646228e6) }, + { SC_(0.7010051727294921875e2), SC_(0.7192423343658447265625e1), SC_(0.3899597449134457157882187466370915142923e-13), SC_(0.1217915565864879580737719206358578662298e14) }, + { SC_(0.743475189208984375e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997673344963312469341050724413792094e0), SC_(0.1000000232665557762394632526339110580937e1) }, + { SC_(0.743475189208984375e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997088412617595381326740671832157904e0), SC_(0.1000000291158822951871296681070114614158e1) }, + { SC_(0.743475189208984375e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990226349438290592337768217035926377e0), SC_(0.100000097736601071540482219947098377064e1) }, + { SC_(0.743475189208984375e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999981178717348225548798896809045131585e0), SC_(0.100000188213180499904022445943687744786e1) }, + { SC_(0.743475189208984375e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976881488772733141207252644106343401e0), SC_(0.1000002311856463484119077982902008136519e1) }, + { SC_(0.743475189208984375e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999919223262865074192387018873506241947e0), SC_(0.1000008077738915090965355518885492689669e1) }, + { SC_(0.743475189208984375e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999843000457932992896411451920141977625e0), SC_(0.1000015700200518779039208241385302735588e1) }, + { SC_(0.743475189208984375e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999799619744613460188790190779499408717e0), SC_(0.1000020038426775374063604179341118232885e1) }, + { SC_(0.743475189208984375e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999464245758523532502472315094605119174e0), SC_(0.1000053578292527153152848554865976850954e1) }, + { SC_(0.743475189208984375e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999141310722295067106729648269175319956e0), SC_(0.1000085876296480589098394347737505597692e1) }, + { SC_(0.743475189208984375e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998559176687466513813284067572571964503e0), SC_(0.1000144103078769450522259323634356953173e1) }, + { SC_(0.743475189208984375e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9995938227765372158791023966897062851256e0), SC_(0.100040634214962919017536130933997701279e1) }, + { SC_(0.743475189208984375e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993288247844610994450701250406917028399e0), SC_(0.1000671625664218233185273071164911129136e1) }, + { SC_(0.743475189208984375e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987526259674896740572050982014835391243e0), SC_(0.1001248930776474263395467589289073246727e1) }, + { SC_(0.743475189208984375e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967559046361011648330266939974459709507e0), SC_(0.1003254646020732508811315790755546288582e1) }, + { SC_(0.743475189208984375e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9916624695486609546088909264162581650676e0), SC_(0.1008407577597029469003327294409074273678e1) }, + { SC_(0.743475189208984375e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9836867429996385507447039707793244387257e0), SC_(0.1016583591454058675635612298873431286739e1) }, + { SC_(0.743475189208984375e2), SC_(0.779867731034755706787109375e-2), SC_(0.9670061729367332834941027919540053260813e0), SC_(0.1034118710323854137890640938086958402101e1) }, + { SC_(0.743475189208984375e2), SC_(0.15350691974163055419921875e-1), SC_(0.936093020539672429289776720749520007269e0), SC_(0.1068266493993580528684423938783414611564e1) }, + { SC_(0.743475189208984375e2), SC_(0.307452343404293060302734375e-1), SC_(0.8761020439056582608491659705496036345009e0), SC_(0.1141404939009414892501536559043670010676e1) }, + { SC_(0.743475189208984375e2), SC_(0.36175407469272613525390625e-1), SC_(0.8558708199039115710523349128040036454969e0), SC_(0.1168379919095734833571950941941674306207e1) }, + { SC_(0.743475189208984375e2), SC_(0.10786493122577667236328125e0), SC_(0.6286914048239247324706437124725123490595e0), SC_(0.1590354909947027363954138406193316779898e1) }, + { SC_(0.743475189208984375e2), SC_(0.2463240921497344970703125e0), SC_(0.3464214869881617818575684717090751648279e0), SC_(0.2884286203372593984111447036896714944013e1) }, + { SC_(0.743475189208984375e2), SC_(0.49527740478515625e0), SC_(0.1185588874831200764561987308817414400862e0), SC_(0.840665640692155339483990641976458023364e1) }, + { SC_(0.743475189208984375e2), SC_(0.97858345508575439453125e0), SC_(0.1475267119153552059608474850194069550516e-1), SC_(0.669109965672681599130380842210550983978e2) }, + { SC_(0.743475189208984375e2), SC_(0.110986173152923583984375e1), SC_(0.8371394166048994948909899647715342352604e-2), SC_(0.1174783716447343295204794571835772567902e3) }, + { SC_(0.743475189208984375e2), SC_(0.2970751285552978515625e1), SC_(0.2654725102635687450334493307962283903573e-5), SC_(0.3342455245467688837241762673803777604711e6) }, + { SC_(0.743475189208984375e2), SC_(0.7192423343658447265625e1), SC_(0.2598439869840582199225395734342007738764e-13), SC_(0.1908013378645505156478390368829008228077e14) }, + { SC_(0.7480255126953125e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997670022763863451619641703467290806e0), SC_(0.1000000232997777862241622028896383219541e1) }, + { SC_(0.7480255126953125e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997084255201235556321100283663334283e0), SC_(0.1000000291574564830500203863449813394704e1) }, + { SC_(0.7480255126953125e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990212393779267339450049973612057201e0), SC_(0.100000097876157935191651774789207979173e1) }, + { SC_(0.7480255126953125e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999981151842714028605063372935049024569e0), SC_(0.1000001884819278558159687363239082199869e1) }, + { SC_(0.7480255126953125e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976848478195839704808964549221837743e0), SC_(0.1000002315157536471468128371650391336968e1) }, + { SC_(0.7480255126953125e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.999991910792330284299734957860929455432e0), SC_(0.1000008089273058076808563848117448988204e1) }, + { SC_(0.7480255126953125e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999842776282140366847797419186395367477e0), SC_(0.100001572261880357518573820304780273333e1) }, + { SC_(0.7480255126953125e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999799333627188947767991853221165152941e0), SC_(0.1000020067039667123245483022001939759474e1) }, + { SC_(0.7480255126953125e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999463480782756382998309290662570589931e0), SC_(0.1000053654798320022041710676802525045833e1) }, + { SC_(0.7480255126953125e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999140084664198437306361098592616586449e0), SC_(0.1000085998923397102257325518982753051159e1) }, + { SC_(0.7480255126953125e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998557119503992237075986596433129929446e0), SC_(0.1000144308856545829633345679968854663521e1) }, + { SC_(0.7480255126953125e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9995932429198986133539931298557267490311e0), SC_(0.100040692247868045187371904660830761387e1) }, + { SC_(0.7480255126953125e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.999327866745671746348060433518017921744e0), SC_(0.1000672584993267756463218631068954816899e1) }, + { SC_(0.7480255126953125e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987508459758705023718550511411153985936e0), SC_(0.1001250715227213887364522218452870884555e1) }, + { SC_(0.7480255126953125e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967512799969923918880610564257797627944e0), SC_(0.100325930088105064384115543183761716586e1) }, + { SC_(0.7480255126953125e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9916506145303855532725106079156860391678e0), SC_(0.1008419633258741636643982255796899278498e1) }, + { SC_(0.7480255126953125e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9836636415609313577402758087979729195722e0), SC_(0.1016607467253333039619092666206029835966e1) }, + { SC_(0.7480255126953125e2), SC_(0.779867731034755706787109375e-2), SC_(0.9669598514903495325397237462987495531703e0), SC_(0.1034168254177957590746057456605189129654e1) }, + { SC_(0.7480255126953125e2), SC_(0.15350691974163055419921875e-1), SC_(0.936004764045427191072686453930178850792e0), SC_(0.1068367242408417025254950379189593670976e1) }, + { SC_(0.7480255126953125e2), SC_(0.307452343404293060302734375e-1), SC_(0.875936632075939452630815495861268720384e0), SC_(0.1141620571347982450305784051557940542281e1) }, + { SC_(0.7480255126953125e2), SC_(0.36175407469272613525390625e-1), SC_(0.855680697820716573857404897353197223602e0), SC_(0.1168639646050924874843385734436560542063e1) }, + { SC_(0.7480255126953125e2), SC_(0.10786493122577667236328125e0), SC_(0.6282752804049652299861505843021039248753e0), SC_(0.1591409782224440122861735141457539333432e1) }, + { SC_(0.7480255126953125e2), SC_(0.2463240921497344970703125e0), SC_(0.3458985759186743169695932443708811395534e0), SC_(0.288866104815960755150282059145216557068e1) }, + { SC_(0.7480255126953125e2), SC_(0.49527740478515625e0), SC_(0.1181999310756166464156747737577536024044e0), SC_(0.8432357756443685344199415728091476702913e1) }, + { SC_(0.7480255126953125e2), SC_(0.97858345508575439453125e0), SC_(0.1466483274519428380324135197444804998655e-1), SC_(0.6731712158260973146887064342743872274582e2) }, + { SC_(0.7480255126953125e2), SC_(0.110986173152923583984375e1), SC_(0.8314935589280977450345445906571684818473e-2), SC_(0.1182881354847955983916044113400135281645e3) }, + { SC_(0.7480255126953125e2), SC_(0.2970751285552978515625e1), SC_(0.260764848265619289296167804541770732128e-5), SC_(0.3405290757912272691094478538890443030951e6) }, + { SC_(0.7480255126953125e2), SC_(0.7192423343658447265625e1), SC_(0.2491151736679853224593853577469937276775e-13), SC_(0.1998783533618702149690923637598426630041e14) }, + { SC_(0.77450408935546875e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997651085409137975938108794936111767e0), SC_(0.1000000234891514222202353923133784934725e1) }, + { SC_(0.77450408935546875e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997060556904509603368191025947836257e0), SC_(0.1000000293944395892797091975800121029959e1) }, + { SC_(0.77450408935546875e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990132843087482692720750746324026038e0), SC_(0.1000000986716664189806184944025093706116e1) }, + { SC_(0.77450408935546875e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999980998650684252523931904081376016376e0), SC_(0.1000001900138539606997427778696592692082e1) }, + { SC_(0.77450408935546875e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.999997666030978279265061111306467894742e0), SC_(0.1000002333974465391987778966617276555577e1) }, + { SC_(0.77450408935546875e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999918450459428096779939821363311733336e0), SC_(0.1000008155020515192057706303817903528039e1) }, + { SC_(0.77450408935546875e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999841498425028246765924398514438350777e0), SC_(0.1000015850408555568593949798172201814105e1) }, + { SC_(0.77450408935546875e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999797702687585723677839219753376686685e0), SC_(0.1000020230140209785775769074237358300677e1) }, + { SC_(0.77450408935546875e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999459120233665577802286585312524501998e0), SC_(0.1000054090900285238171580028578737731618e1) }, + { SC_(0.77450408935546875e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999133095834058087957120351130924672583e0), SC_(0.1000086697927295776376441907775610576512e1) }, + { SC_(0.77450408935546875e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998545393059763075091744211634193724872e0), SC_(0.100014548184133442289226325091868069725e1) }, + { SC_(0.77450408935546875e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9995899376006852827921535532793439548796e0), SC_(0.1000410230503528843119582835349015043662e1) }, + { SC_(0.77450408935546875e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993224057061367624450963163082147555173e0), SC_(0.1000678053422471682668322610975924109568e1) }, + { SC_(0.77450408935546875e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987406996456044351918335842438664469947e0), SC_(0.1001260887096068788159418456732777786318e1) }, + { SC_(0.77450408935546875e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967249188225582659572459502193762440423e0), SC_(0.1003285835140526839244726939312065526003e1) }, + { SC_(0.77450408935546875e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9915830406959797148512455392962848446359e0), SC_(0.100848835623250151423879462053334983235e1) }, + { SC_(0.77450408935546875e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9835319679639538437717057010893614266468e0), SC_(0.1016743575824620584746199764992598504633e1) }, + { SC_(0.77450408935546875e2), SC_(0.779867731034755706787109375e-2), SC_(0.966695849929681203529630943453056289844e0), SC_(0.1034450711372377459859607074631149811357e1) }, + { SC_(0.77450408935546875e2), SC_(0.15350691974163055419921875e-1), SC_(0.9355018381204220324192908441950172801425e0), SC_(0.1068941713440484781936720285533977157761e1) }, + { SC_(0.77450408935546875e2), SC_(0.307452343404293060302734375e-1), SC_(0.8749943361711523773968718038573417485365e0), SC_(0.1142850501736836423379303542382931867286e1) }, + { SC_(0.77450408935546875e2), SC_(0.36175407469272613525390625e-1), SC_(0.8545977560054254405918445337695425927563e0), SC_(0.1170121249228135896463735065001185491132e1) }, + { SC_(0.77450408935546875e2), SC_(0.10786493122577667236328125e0), SC_(0.625908488142786276876666921500179463437e0), SC_(0.1597436100018743631747486840335086232232e1) }, + { SC_(0.77450408935546875e2), SC_(0.2463240921497344970703125e0), SC_(0.3429327921917613542362261220793556908031e0), SC_(0.2913724908168098528012031702442529570712e1) }, + { SC_(0.77450408935546875e2), SC_(0.49527740478515625e0), SC_(0.1161743114374623119915836120958399381549e0), SC_(0.8580359310355382447119424348852412323862e1) }, + { SC_(0.77450408935546875e2), SC_(0.97858345508575439453125e0), SC_(0.1417396266554293626630362672110523680182e-1), SC_(0.6967933170575655513517291018681010305373e2) }, + { SC_(0.77450408935546875e2), SC_(0.110986173152923583984375e1), SC_(0.8000256412376990461052493159795603433991e-2), SC_(0.1230109941221686764459970200511954941164e3) }, + { SC_(0.77450408935546875e2), SC_(0.2970751285552978515625e1), SC_(0.2354711767720870141174768692218326088794e-5), SC_(0.3786533300222248954988002469688496185462e6) }, + { SC_(0.77450408935546875e2), SC_(0.7192423343658447265625e1), SC_(0.1958479502964863127335164414678507498891e-13), SC_(0.260434293156096933417015101459315442719e14) }, + { SC_(0.77893310546875e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997647981536204332656619214869186237e0), SC_(0.1000000235201901661695240631176340441798e1) }, + { SC_(0.77893310546875e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997056672703002730089536787646880487e0), SC_(0.1000000294332816272323813805341719921828e1) }, + { SC_(0.77893310546875e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990119804559039987712495304970708743e0), SC_(0.1000000988020519612683016815862203041137e1) }, + { SC_(0.77893310546875e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999980973542183193419369925548125173018e0), SC_(0.1000001902649399275381628915947693325203e1) }, + { SC_(0.77893310546875e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976629468577831568707832695439346388e0), SC_(0.1000002337058600315617628491466314454828e1) }, + { SC_(0.77893310546875e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.99999183426996971352721837953615017996e0), SC_(0.1000008165796664423800610735618519869607e1) }, + { SC_(0.77893310546875e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999841288981530345975662570365740375093e0), SC_(0.1000015871353570746099672427320293049535e1) }, + { SC_(0.77893310546875e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999797435373122196233797370766918144623e0), SC_(0.1000020256872740039360468131704842570739e1) }, + { SC_(0.77893310546875e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999458405530524744623913674803479828043e0), SC_(0.1000054162378347961637072135929822538881e1) }, + { SC_(0.77893310546875e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999131950350315339900984117502238606264e0), SC_(0.1000086812495575883998036329646273204123e1) }, + { SC_(0.77893310546875e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998543471071780102519156536742568607891e0), SC_(0.1000145674096180058419563341962690622653e1) }, + { SC_(0.77893310546875e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9995893958528334496660789530320398963061e0), SC_(0.1000410772696912214048834495563439959443e1) }, + { SC_(0.77893310546875e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993215106329063891477689656818921667028e0), SC_(0.1000678949712544126448556086687217186089e1) }, + { SC_(0.77893310546875e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987390366501431923714911974993406466939e0), SC_(0.1001262554296918609382414227696387999405e1) }, + { SC_(0.77893310546875e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967205982357581165650938862682077126186e0), SC_(0.1003290184228896678157661065065805906925e1) }, + { SC_(0.77893310546875e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9915719656363478914162775634516167917412e0), SC_(0.1008499620518643535949076497214640117212e1) }, + { SC_(0.77893310546875e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9835103880500672380149408190966695017693e0), SC_(0.1016765886037209097555800714989842027281e1) }, + { SC_(0.77893310546875e2), SC_(0.779867731034755706787109375e-2), SC_(0.9666525863397848438370402068926058448118e0), SC_(0.1034497014020163751204738786866994687088e1) }, + { SC_(0.77893310546875e2), SC_(0.15350691974163055419921875e-1), SC_(0.9354194330957198620236608945276891494662e0), SC_(0.1069035899737052666757062359840171952176e1) }, + { SC_(0.77893310546875e2), SC_(0.307452343404293060302734375e-1), SC_(0.8748399879401612475001040508420153518068e0), SC_(0.1143052215479640963409564832834520651938e1) }, + { SC_(0.77893310546875e2), SC_(0.36175407469272613525390625e-1), SC_(0.8544203894430367499477474407335705369595e0), SC_(0.1170364265083507912883741527121184763752e1) }, + { SC_(0.77893310546875e2), SC_(0.10786493122577667236328125e0), SC_(0.6255214115857222223743877735242194719689e0), SC_(0.1598425986474953471444119516298652415523e1) }, + { SC_(0.77893310546875e2), SC_(0.2463240921497344970703125e0), SC_(0.3424491093404917182191191129452441980514e0), SC_(0.2917853484971862375108968537057514908408e1) }, + { SC_(0.77893310546875e2), SC_(0.49527740478515625e0), SC_(0.1158456134496439401214325787125575785997e0), SC_(0.8604862018800169539053750531070707259836e1) }, + { SC_(0.77893310546875e2), SC_(0.97858345508575439453125e0), SC_(0.1409507988635526676346299192818223844556e-1), SC_(0.7007428097878004355482230561066918115433e2) }, + { SC_(0.77893310546875e2), SC_(0.110986173152923583984375e1), SC_(0.7949820566904126682264819997561455495783e-2), SC_(0.1238027510877993499899989349109474673339e3) }, + { SC_(0.77893310546875e2), SC_(0.2970751285552978515625e1), SC_(0.2315646404396544712746209845408470515221e-5), SC_(0.3852942543900131510558098087023466746742e6) }, + { SC_(0.77893310546875e2), SC_(0.7192423343658447265625e1), SC_(0.188269109376006575846632213084029109342e-13), SC_(0.2719669763730075384998067672431135844626e14) }, + { SC_(0.7806169891357421875e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997646806121482749193877075397621496e0), SC_(0.1000000235319443189241412332105820927344e1) }, + { SC_(0.7806169891357421875e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997055201783370987128064647764242276e0), SC_(0.1000000294479908322236229650869523773e1) }, + { SC_(0.7806169891357421875e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990114866960563324781201506202389308e0), SC_(0.1000000988514280437731135349804553609841e1) }, + { SC_(0.7806169891357421875e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999980964033771487065936646464396265472e0), SC_(0.1000001903600244070528372717994287527556e1) }, + { SC_(0.7806169891357421875e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976617789231721478116744932975008245e0), SC_(0.100000233822654039516109921319014072632e1) }, + { SC_(0.7806169891357421875e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999918301891849660194422252725596796054e0), SC_(0.1000008169877515932847161108227991522959e1) }, + { SC_(0.7806169891357421875e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999841209666760522439111538670428609012e0), SC_(0.10000158792852999335184729287283904618e1) }, + { SC_(0.7806169891357421875e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999797334143027809694182224111300844439e0), SC_(0.1000020266996160314274734342813475174033e1) }, + { SC_(0.7806169891357421875e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999458134877514678678643825232585879612e0), SC_(0.1000054189446585973372997227520892059203e1) }, + { SC_(0.7806169891357421875e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999131516563759642549613484904521814239e0), SC_(0.1000086855881776459335494813443311794129e1) }, + { SC_(0.7806169891357421875e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998542743228623747034114362212725552383e0), SC_(0.1000145746901739591932734672105031593903e1) }, + { SC_(0.7806169891357421875e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9995891906968306703346488027036516650403e0), SC_(0.1000410978021787000895630901596417183055e1) }, + { SC_(0.7806169891357421875e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993211716752141118556249729426955598689e0), SC_(0.1000679289131462031679434280169439382658e1) }, + { SC_(0.7806169891357421875e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987384068862449525512296216173874933618e0), SC_(0.1001263185654805942376602754975163199333e1) }, + { SC_(0.7806169891357421875e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967189620649601465518308634418993965848e0), SC_(0.1003291831202784660670403826107988810373e1) }, + { SC_(0.7806169891357421875e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9915677716216977669425466603876461146059e0), SC_(0.1008503886256748977849073020295556337055e1) }, + { SC_(0.7806169891357421875e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9835022160121500426643773302438319076876e0), SC_(0.1016774334883854148904172470506351821591e1) }, + { SC_(0.7806169891357421875e2), SC_(0.779867731034755706787109375e-2), SC_(0.9666362032265442102582396194704040053952e0), SC_(0.1034514549042847552349695975862780562493e1) }, + { SC_(0.7806169891357421875e2), SC_(0.15350691974163055419921875e-1), SC_(0.9353882287785190867938178501116024237141e0), SC_(0.1069071569573632975734057586373010438145e1) }, + { SC_(0.7806169891357421875e2), SC_(0.307452343404293060302734375e-1), SC_(0.8747815444189069099990781688340358343936e0), SC_(0.1143128612280645148940719867283474483985e1) }, + { SC_(0.7806169891357421875e2), SC_(0.36175407469272613525390625e-1), SC_(0.8543532315285289369435241834603932285073e0), SC_(0.1170456306558314979470140026158270065509e1) }, + { SC_(0.7806169891357421875e2), SC_(0.10786493122577667236328125e0), SC_(0.6253748905256139210785355621065155762289e0), SC_(0.1598801008545834485221156108475635773861e1) }, + { SC_(0.7806169891357421875e2), SC_(0.2463240921497344970703125e0), SC_(0.3422661190575470192331389864724858074024e0), SC_(0.2919418464592603690419564503453166649482e1) }, + { SC_(0.7806169891357421875e2), SC_(0.49527740478515625e0), SC_(0.1157213792018716577157848767733379414536e0), SC_(0.8614159158002255439377483298304374687535e1) }, + { SC_(0.7806169891357421875e2), SC_(0.97858345508575439453125e0), SC_(0.1406532153522982523206762480786228464299e-1), SC_(0.702244253770124465904530348548217009243e2) }, + { SC_(0.7806169891357421875e2), SC_(0.110986173152923583984375e1), SC_(0.7930803448719793437064024720691028238653e-2), SC_(0.1241039037599231477014550463721097114481e3) }, + { SC_(0.7806169891357421875e2), SC_(0.2970751285552978515625e1), SC_(0.2301021327521273934026516420500674012334e-5), SC_(0.3878392199194230074483799476431664792479e6) }, + { SC_(0.7806169891357421875e2), SC_(0.7192423343658447265625e1), SC_(0.185475767310878242721847455421611415687e-13), SC_(0.2764655327811727844776895585020663129405e14) }, + { SC_(0.781320648193359375e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997646315696533113749918881208096379e0), SC_(0.1000000235368485707322850229653891221428e1) }, + { SC_(0.781320648193359375e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.99999970545880632319977877968327185978e0), SC_(0.1000000294541280372338112579823125614122e1) }, + { SC_(0.781320648193359375e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990112806818352128122780209616258636e0), SC_(0.1000000988720295066792596634393339870604e1) }, + { SC_(0.781320648193359375e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999980960066522954408753603405924578722e0), SC_(0.1000001903996970436600703421766050121993e1) }, + { SC_(0.781320648193359375e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976612916191918246868834846461053269e0), SC_(0.1000002338713846657953253330437297204553e1) }, + { SC_(0.781320648193359375e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999918284865360099223521649209679816438e0), SC_(0.1000008171580192754023472160876786066537e1) }, + { SC_(0.781320648193359375e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999841176573809525826425820924821606456e0), SC_(0.1000015882594700299089563910528230912591e1) }, + { SC_(0.781320648193359375e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999797291906221787304775723731713281823e0), SC_(0.1000020271220012392263791585013844347591e1) }, + { SC_(0.781320648193359375e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999458021951426656738555359154503529338e0), SC_(0.1000054200740420629291173860239403982268e1) }, + { SC_(0.781320648193359375e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999131335572540676326445875234548576107e0), SC_(0.1000086873984047507141140691134475211315e1) }, + { SC_(0.781320648193359375e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998542439546511826063329167120638124178e0), SC_(0.1000145777278817609310032844221796091931e1) }, + { SC_(0.781320648193359375e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.9995891050984406274778261127588668943382e0), SC_(0.1000411063690661217037184963442755985816e1) }, + { SC_(0.781320648193359375e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993210302500078185586143882398379876428e0), SC_(0.100067943074917570119837407087200500562e1) }, + { SC_(0.781320648193359375e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987381441263991569941574075291436511145e0), SC_(0.1001263449079954443391788157981612501811e1) }, + { SC_(0.781320648193359375e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967182793969289070329075790327655781931e0), SC_(0.1003292518379833591216317455291286162158e1) }, + { SC_(0.781320648193359375e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9915660217343934046340862105154472434191e0), SC_(0.100850566608014855328142093782641426754e1) }, + { SC_(0.781320648193359375e2), SC_(0.38232556544244289398193359375e-2), SC_(0.983498806366375398940717362147562760375e0), SC_(0.1016777860064673730873373303946575855474e1) }, + { SC_(0.781320648193359375e2), SC_(0.779867731034755706787109375e-2), SC_(0.9666293676888693217004127573142363591921e0), SC_(0.1034521865367107587098657239917850257226e1) }, + { SC_(0.781320648193359375e2), SC_(0.15350691974163055419921875e-1), SC_(0.9353752095300845236302724868176205909612e0), SC_(0.1069086452651436767900263786419054080813e1) }, + { SC_(0.781320648193359375e2), SC_(0.307452343404293060302734375e-1), SC_(0.8747571608440423796417952662133445795346e0), SC_(0.1143160489251047933944603107516706079574e1) }, + { SC_(0.781320648193359375e2), SC_(0.36175407469272613525390625e-1), SC_(0.8543252124016784267105878112773399433602e0), SC_(0.1170494711671076408050849317171980448132e1) }, + { SC_(0.781320648193359375e2), SC_(0.10786493122577667236328125e0), SC_(0.6253137667952148614705891174462201578273e0), SC_(0.1598957506976503372263441729146064354681e1) }, + { SC_(0.781320648193359375e2), SC_(0.2463240921497344970703125e0), SC_(0.3421897977112818687820446315919380176838e0), SC_(0.2920071676454890221212294374573954659552e1) }, + { SC_(0.781320648193359375e2), SC_(0.49527740478515625e0), SC_(0.1156695833879813252641340826064070587023e0), SC_(0.8618041206231528557565898382343452901247e1) }, + { SC_(0.781320648193359375e2), SC_(0.97858345508575439453125e0), SC_(0.1405292375371437567646361553534183683304e-1), SC_(0.7028716543552260546742112421293412087192e2) }, + { SC_(0.781320648193359375e2), SC_(0.110986173152923583984375e1), SC_(0.7922882198776867782953173341930795339523e-2), SC_(0.1242297704790579835037229603762694455238e3) }, + { SC_(0.781320648193359375e2), SC_(0.2970751285552978515625e1), SC_(0.2294946393621108717002901340156837762431e-5), SC_(0.3889060014937192816943991460042467021627e6) }, + { SC_(0.781320648193359375e2), SC_(0.7192423343658447265625e1), SC_(0.1843224981973134455598774733072965450563e-13), SC_(0.2783642732168666886200091933371246604227e14) }, + { SC_(0.795728759765625e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997636370319873911458364500067948723e0), SC_(0.1000000236363023843084391597993880354738e1) }, + { SC_(0.795728759765625e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997042142371084139964264902837208849e0), SC_(0.1000000295785850322902049499792279629238e1) }, + { SC_(0.795728759765625e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990071028988241520191112884246404287e0), SC_(0.1000000992898086368743235056285616004256e1) }, + { SC_(0.795728759765625e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999980879614293021464562708929488986486e0), SC_(0.1000001912042224175734653304663331203557e1) }, + { SC_(0.795728759765625e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976514095330275893950994406692209691e0), SC_(0.1000002348595979210422133255352585336494e1) }, + { SC_(0.795728759765625e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999917939583479490290126395852348360419e0), SC_(0.1000008206108947136644400281603772994903e1) }, + { SC_(0.795728759765625e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999840505478565845932816218974202372273e0), SC_(0.1000015949706364060670237897915452643744e1) }, + { SC_(0.795728759765625e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999796435381841149414411234012310498817e0), SC_(0.1000020356875935479090998506975986047108e1) }, + { SC_(0.795728759765625e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999455731912252743089855428422265385825e0), SC_(0.1000054429769251913537428132057978835035e1) }, + { SC_(0.795728759765625e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999127665234189286741535334547565791615e0), SC_(0.1000087241081885074531521090724147537162e1) }, + { SC_(0.795728759765625e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998536281148531086287609681516832976343e0), SC_(0.100014639329882244929658066919764136874e1) }, + { SC_(0.795728759765625e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.999587369241688622583060257470233581657e0), SC_(0.1000412800979912963658106848033558565726e1) }, + { SC_(0.795728759765625e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993181622783779300277972664533170319831e0), SC_(0.1000682302633269252514389872472368794352e1) }, + { SC_(0.795728759765625e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.998732815607993727260204876594748175239e0), SC_(0.1001268791119777665653187146859478161095e1) }, + { SC_(0.795728759765625e2), SC_(0.755313201807439327239990234375e-3), SC_(0.9967044356037983684713214653420508004252e0), SC_(0.1003306453812922827776476445819319335862e1) }, + { SC_(0.795728759765625e2), SC_(0.19461731426417827606201171875e-2), SC_(0.991530536256542390545577439456486858478e0), SC_(0.100854175997048330356939435135480283539e1) }, + { SC_(0.795728759765625e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9834296643523272354007231276017307036074e0), SC_(0.1016849350179695599175228306059853718287e1) }, + { SC_(0.795728759765625e2), SC_(0.779867731034755706787109375e-2), SC_(0.9664907594978947659267027291150398674623e0), SC_(0.1034670244932476117421052339066402017954e1) }, + { SC_(0.795728759765625e2), SC_(0.15350691974163055419921875e-1), SC_(0.9351112297313571593877817254662785717498e0), SC_(0.1069388312498703427687165530803238513065e1) }, + { SC_(0.795728759765625e2), SC_(0.307452343404293060302734375e-1), SC_(0.874262829567999643407713854599092645025e0), SC_(0.1143807116123676433791578498046215480067e1) }, + { SC_(0.795728759765625e2), SC_(0.36175407469272613525390625e-1), SC_(0.8537572066761841431471562920820877392658e0), SC_(0.1171273803004656948917043425982055642042e1) }, + { SC_(0.795728759765625e2), SC_(0.10786493122577667236328125e0), SC_(0.6240755124980628772870742144063508836117e0), SC_(0.1602134440387564542392878298217987483087e1) }, + { SC_(0.795728759765625e2), SC_(0.2463240921497344970703125e0), SC_(0.3406457128281644757741937147882635880569e0), SC_(0.2933349601912094448475907872301054109615e1) }, + { SC_(0.795728759765625e2), SC_(0.49527740478515625e0), SC_(0.114624166906398089405214069025221670396e0), SC_(0.8697141770985558521485208980943091518966e1) }, + { SC_(0.795728759765625e2), SC_(0.97858345508575439453125e0), SC_(0.1380383764751843345951442887228130874544e-1), SC_(0.7157156200995159118422430805664440863363e2) }, + { SC_(0.795728759765625e2), SC_(0.110986173152923583984375e1), SC_(0.7763931843726210488796406082241286754699e-2), SC_(0.1268097765843103155286897872158166183198e3) }, + { SC_(0.795728759765625e2), SC_(0.2970751285552978515625e1), SC_(0.2175133910046204755086217478441687434719e-5), SC_(0.4111794623944349157766473361999156059161e6) }, + { SC_(0.795728759765625e2), SC_(0.7192423343658447265625e1), SC_(0.1624138499690669466220028911716332214379e-13), SC_(0.3197894249142647825854035016296376583773e14) }, + { SC_(0.7978768157958984375e2), SC_(0.5408298164866209845058619976043701171875e-7), SC_(0.9999997634903139203087254347661140244687e0), SC_(0.1000000236509741979646009613989628519662e1) }, + { SC_(0.7978768157958984375e2), SC_(0.676797071719192899763584136962890625e-7), SC_(0.9999997040306334141801847148832986978329e0), SC_(0.1000000295969454125941269489915777961295e1) }, + { SC_(0.7978768157958984375e2), SC_(0.227188110102360951714217662811279296875e-6), SC_(0.9999990064865760161133198010622887760852e0), SC_(0.1000000993514410402822214315220983304456e1) }, + { SC_(0.7978768157958984375e2), SC_(0.43750014810939319431781768798828125e-6), SC_(0.9999980867745667000284844801555354018405e0), SC_(0.1000001913229091324486148053762382022056e1) }, + { SC_(0.7978768157958984375e2), SC_(0.53738921224066871218383312225341796875e-6), SC_(0.9999976499516892242875604735070480236929e0), SC_(0.1000002350053829873523573984991779621917e1) }, + { SC_(0.7978768157958984375e2), SC_(0.187765863302047364413738250732421875e-5), SC_(0.9999917888646153646385473895051318817785e0), SC_(0.1000008211202763467564175791309789645476e1) }, + { SC_(0.7978768157958984375e2), SC_(0.364947482012212276458740234375e-5), SC_(0.9999840406475987418277657778679586330276e0), SC_(0.1000015959606938272699677270433799775095e1) }, + { SC_(0.7978768157958984375e2), SC_(0.465787525172345340251922607421875e-5), SC_(0.9999796309024037139607471319233544748587e0), SC_(0.1000020369512231238338548852679424154525e1) }, + { SC_(0.7978768157958984375e2), SC_(0.12453912859200499951839447021484375e-4), SC_(0.9999455394076805203274716454750204183081e0), SC_(0.1000054463556480884385055403110422734809e1) }, + { SC_(0.7978768157958984375e2), SC_(0.199610440176911652088165283203125e-4), SC_(0.9999127123771704234818306897170832376159e0), SC_(0.1000087295237598131386825924086076636255e1) }, + { SC_(0.7978768157958984375e2), SC_(0.33494274248369038105010986328125e-4), SC_(0.9998535372638011826062417689875164311734e0), SC_(0.100014648417652299301561171051674700624e1) }, + { SC_(0.7978768157958984375e2), SC_(0.944348503253422677516937255859375e-4), SC_(0.999587113161598233468454734084678305589e0), SC_(0.1000413057271838561947236206167671415781e1) }, + { SC_(0.7978768157958984375e2), SC_(0.1560666714794933795928955078125e-3), SC_(0.9993177391847333530108166399937846934428e0), SC_(0.1000682726305481164972102002211593624753e1) }, + { SC_(0.7978768157958984375e2), SC_(0.2901323023252189159393310546875e-3), SC_(0.9987320295266112808968321744348581125643e0), SC_(0.100126957920068045138514617691027204372e1) }, + { SC_(0.7978768157958984375e2), SC_(0.755313201807439327239990234375e-3), SC_(0.996702393329728451276260054525472578427e0), SC_(0.1003308509638527465188853170750534124253e1) }, + { SC_(0.7978768157958984375e2), SC_(0.19461731426417827606201171875e-2), SC_(0.9915253014075514648177162925683418590611e0), SC_(0.1008547084790305965144114625881233228855e1) }, + { SC_(0.7978768157958984375e2), SC_(0.38232556544244289398193359375e-2), SC_(0.9834194646621488038141741559240478803343e0), SC_(0.1016859897102447874057820269275378350685e1) }, + { SC_(0.7978768157958984375e2), SC_(0.779867731034755706787109375e-2), SC_(0.96647031314981521958706391422552055032e0), SC_(0.1034692136253289961682530203701497931086e1) }, + { SC_(0.7978768157958984375e2), SC_(0.15350691974163055419921875e-1), SC_(0.9350722926704194403056098755684301267726e0), SC_(0.1069432851206020276222977029635706852091e1) }, + { SC_(0.7978768157958984375e2), SC_(0.307452343404293060302734375e-1), SC_(0.8741899273929740118512348989798936860313e0), SC_(0.1143902539794300345755398855610730787373e1) }, + { SC_(0.7978768157958984375e2), SC_(0.36175407469272613525390625e-1), SC_(0.853673444028947574453146920519234106748e0), SC_(0.1171388781196630028604025966953752030829e1) }, + { SC_(0.7978768157958984375e2), SC_(0.10786493122577667236328125e0), SC_(0.6238930467503061165450147922993730709957e0), SC_(0.1602603644554494464631490632648253985713e1) }, + { SC_(0.7978768157958984375e2), SC_(0.2463240921497344970703125e0), SC_(0.3404185101843088803843854355525436974705e0), SC_(0.2935313484497773990220628475801307630996e1) }, + { SC_(0.7978768157958984375e2), SC_(0.49527740478515625e0), SC_(0.1144707397438024439442613742493198994445e0), SC_(0.870887189584181010190648970619663964418e1) }, + { SC_(0.7978768157958984375e2), SC_(0.97858345508575439453125e0), SC_(0.137674647370524488408642123698494921405e-1), SC_(0.7176300487625859938764819984066740114382e2) }, + { SC_(0.7978768157958984375e2), SC_(0.110986173152923583984375e1), SC_(0.7740752638659382404316274553019359244794e-2), SC_(0.1271948689069195209595747138373138092093e3) }, + { SC_(0.7978768157958984375e2), SC_(0.2970751285552978515625e1), SC_(0.2157992909774354428566814255364545463342e-5), SC_(0.4145708927186640053679609302173996067288e6) }, + { SC_(0.7978768157958984375e2), SC_(0.7192423343658447265625e1), SC_(0.1594087689108406351642321400531650818267e-13), SC_(0.3263982781831842992979765044201168559318e14) } + } }; +#undef SC_ + diff --git a/test/tgamma_delta_ratio_int.ipp b/test/tgamma_delta_ratio_int.ipp new file mode 100644 index 000000000..ef7baaeee --- /dev/null +++ b/test/tgamma_delta_ratio_int.ipp @@ -0,0 +1,354 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 344> tgamma_delta_ratio_int = { { + { SC_(0.24302618503570556640625e1), SC_(0.1e1), SC_(0.4114782939349022594054088894256271572472e0), SC_(0.14302618503570556640625e1) }, + { SC_(0.301645793914794921875e2), SC_(0.1e1), SC_(0.3315146506841289877594755891064182591548e-1), SC_(0.291645793914794921875e2) }, + { SC_(0.301645793914794921875e2), SC_(0.3e1), SC_(0.3307223761155750711531487469609546246538e-4), SC_(0.2231320586281996185139958610577082254167e5) }, + { SC_(0.301645793914794921875e2), SC_(0.5e1), SC_(0.2918858268609190809990278724248604514024e-7), SC_(0.1469147518070480379794665014907786525186e8) }, + { SC_(0.301645793914794921875e2), SC_(0.7e1), SC_(0.2295219166275465213873613192776013762556e-10), SC_(0.8223734198694550134689130502530947232135e10) }, + { SC_(0.301645793914794921875e2), SC_(0.9e1), SC_(0.1618208430275734434924519990812495766662e-13), SC_(0.3857786609269072710128224389442555988969e13) }, + { SC_(0.301645793914794921875e2), SC_(0.11e2), SC_(0.1028721387871736550385318599923041671733e-16), SC_(0.1490824979713097171415993481052223628558e16) }, + { SC_(0.301645793914794921875e2), SC_(0.13e2), SC_(0.5926882460007524968122855042901912157197e-20), SC_(0.4648203922170334340207682876080006032116e18) }, + { SC_(0.301645793914794921875e2), SC_(0.15e2), SC_(0.3109028494792192917110790291054315941926e-23), SC_(0.1139409800082989383839979690424223084142e21) }, + { SC_(0.301645793914794921875e2), SC_(0.17e2), SC_(0.1491138039359247528148047903357857018565e-26), SC_(0.2124665771291534304735753615395767158197e23) }, + { SC_(0.301645793914794921875e2), SC_(0.19e2), SC_(0.6564083719175744994115607229861959803378e-30), SC_(0.2885559839005887499381495946913235780383e25) }, + { SC_(0.33848663330078125e2), SC_(0.1e1), SC_(0.2954326409431340851983450434701073702185e-1), SC_(0.32848663330078125e2) }, + { SC_(0.33848663330078125e2), SC_(0.3e1), SC_(0.2364827053120534463560561879334289442712e-4), SC_(0.3227344028825395710668999527115374803543e5) }, + { SC_(0.33848663330078125e2), SC_(0.5e1), SC_(0.1695614414470450244250500226271753919667e-7), SC_(0.2779046705870235738963729137775015086257e8) }, + { SC_(0.33848663330078125e2), SC_(0.7e1), SC_(0.1095310525613279305495592465256381394661e-10), SC_(0.2077891515483201757744317351815521823156e11) }, + { SC_(0.33848663330078125e2), SC_(0.9e1), SC_(0.6407340740919580652793383140467826508761e-14), SC_(0.1334639554269227650049353460252698351418e14) }, + { SC_(0.33848663330078125e2), SC_(0.11e2), SC_(0.3410234021200152276254976943763997265065e-17), SC_(0.7272585453555431260958160354377596176673e16) }, + { SC_(0.33848663330078125e2), SC_(0.13e2), SC_(0.1658471451363357954157478377453720607441e-20), SC_(0.3312774860859689395345508883625889572398e19) }, + { SC_(0.33848663330078125e2), SC_(0.15e2), SC_(0.7398454132291610784864741044066350592108e-24), SC_(0.123937789059580278543168468020516206455e22) }, + { SC_(0.33848663330078125e2), SC_(0.17e2), SC_(0.3038328895194104537239753148827028386063e-27), SC_(0.3727133034351634026738359532400494439921e24) }, + { SC_(0.33848663330078125e2), SC_(0.19e2), SC_(0.1152438286925339630084625472113528311441e-30), SC_(0.8771116810258575546832070468458856366617e26) }, + { SC_(0.3462689208984375e2), SC_(0.1e1), SC_(0.2887928831167915505519744344972123660605e-1), SC_(0.3362689208984375e2) }, + { SC_(0.3462689208984375e2), SC_(0.3e1), SC_(0.2213137918593517448219688061454782526597e-4), SC_(0.3469915936700885481513978447765111923218e5) }, + { SC_(0.3462689208984375e2), SC_(0.5e1), SC_(0.1522721097426024895896792330316918422863e-7), SC_(0.3148531028341027662367459391135879115051e8) }, + { SC_(0.3462689208984375e2), SC_(0.7e1), SC_(0.9458379866953813757703618778885035880068e-11), SC_(0.2490085216056195944036457961808452623757e11) }, + { SC_(0.3462689208984375e2), SC_(0.9e1), SC_(0.5330391348709183914871234647798016253296e-14), SC_(0.1699145729193855721519591364984158133864e14) }, + { SC_(0.3462689208984375e2), SC_(0.11e2), SC_(0.2737840710883982300048275891615376700953e-17), SC_(0.9886597038736954287739003770107517853574e16) }, + { SC_(0.3462689208984375e2), SC_(0.13e2), SC_(0.1286917838872088415509337429304986457503e-20), SC_(0.4837999869770538119582666222954992161451e19) }, + { SC_(0.3462689208984375e2), SC_(0.15e2), SC_(0.5556765445986870190361609497371887346956e-24), SC_(0.195862450405695992267877670894152909715e22) }, + { SC_(0.3462689208984375e2), SC_(0.17e2), SC_(0.2211687277609313503714629255037786857888e-27), SC_(0.643083442616985917719955843589721349925e24) }, + { SC_(0.3462689208984375e2), SC_(0.19e2), SC_(0.8140292584590354784620261881745875674798e-31), SC_(0.1670902155865215796953312290630024870723e27) }, + { SC_(0.38969058990478515625e2), SC_(0.1e1), SC_(0.2566138433684874120271097708825946441219e-1), SC_(0.37969058990478515625e2) }, + { SC_(0.38969058990478515625e2), SC_(0.3e1), SC_(0.1567112478553435406702123549078289771168e-4), SC_(0.504890624506973244356999863668988837162e5) }, + { SC_(0.38969058990478515625e2), SC_(0.5e1), SC_(0.8689906310391695151299331020686331039092e-8), SC_(0.5997424205505611045426742533651556939386e8) }, + { SC_(0.38969058990478515625e2), SC_(0.7e1), SC_(0.4394951869162062144764399567493282296601e-11), SC_(0.6321223889260369330291849413168960841557e11) }, + { SC_(0.38969058990478515625e2), SC_(0.9e1), SC_(0.2035525982765477083776753980340839550068e-14), SC_(0.5866813580649745354849775687876536135352e14) }, + { SC_(0.38969058990478515625e2), SC_(0.11e2), SC_(0.8665501322102869433082774775249219150551e-18), SC_(0.475351131137151882575690233470282894011e17) }, + { SC_(0.38969058990478515625e2), SC_(0.13e2), SC_(0.3402404204209133714893020990890855167026e-21), SC_(0.332917433408466146766602692025570579486e20) }, + { SC_(0.38969058990478515625e2), SC_(0.15e2), SC_(0.1236000924581999848584000411105138094148e-24), SC_(0.199246039489905250504763182886478199254e23) }, + { SC_(0.38969058990478515625e2), SC_(0.17e2), SC_(0.4166349010445106129065594246766652774957e-28), SC_(0.1005412674170810825848072062572878094182e26) }, + { SC_(0.38969058990478515625e2), SC_(0.19e2), SC_(0.1306678052162296296302493472338051227226e-31), SC_(0.4209988378715069570506244784182271066633e28) }, + { SC_(0.41507625579833984375e2), SC_(0.1e1), SC_(0.2409195867098306907239470727577262147923e-1), SC_(0.40507625579833984375e2) }, + { SC_(0.41507625579833984375e2), SC_(0.3e1), SC_(0.1302686404207614714166737816227289198388e-4), SC_(0.6162606769838344661754936382180858345237e5) }, + { SC_(0.41507625579833984375e2), SC_(0.5e1), SC_(0.6431633349331497141015690712861511428175e-8), SC_(0.8438545889861793470458005660841864423808e8) }, + { SC_(0.41507625579833984375e2), SC_(0.7e1), SC_(0.2910943566542678829029393631028762223452e-11), SC_(0.1033961398568079581975133990707297357778e12) }, + { SC_(0.41507625579833984375e2), SC_(0.9e1), SC_(0.1212136898003702865187467684297844048505e-14), SC_(0.1126245913457844277854195511466495940505e15) }, + { SC_(0.41507625579833984375e2), SC_(0.11e2), SC_(0.4659326979515309613033501220500527426672e-18), SC_(0.1082573300089022204314702243358580760484e18) }, + { SC_(0.41507625579833984375e2), SC_(0.13e2), SC_(0.1658384118269441042099831807050083163649e-21), SC_(0.91065236945021286603137668511485592393e20) }, + { SC_(0.41507625579833984375e2), SC_(0.15e2), SC_(0.5481194532589979478160202963103776716729e-25), SC_(0.6640129568173827446546480656426857387714e23) }, + { SC_(0.41507625579833984375e2), SC_(0.17e2), SC_(0.1686718935768932765905700917212028498685e-28), SC_(0.4150953075743104724995577406049683820437e26) }, + { SC_(0.41507625579833984375e2), SC_(0.19e2), SC_(0.4844596658382802531655518188204297321602e-32), SC_(0.2196272737681924152751776983696792699708e29) }, + { SC_(0.43424015045166015625e2), SC_(0.1e1), SC_(0.2302873188856175403626965536052891307432e-1), SC_(0.42424015045166015625e2) }, + { SC_(0.43424015045166015625e2), SC_(0.3e1), SC_(0.1141212965168497956273138117867728882609e-4), SC_(0.7104007410816445601492441497271101980004e5) }, + { SC_(0.43424015045166015625e2), SC_(0.5e1), SC_(0.5183530746499905821724585148177857891242e-8), SC_(0.1076135606728602311731733060546098971879e9) }, + { SC_(0.43424015045166015625e2), SC_(0.7e1), SC_(0.2165842442020049314291887953595061977946e-11), SC_(0.1466915836463339236767082142468157916416e12) }, + { SC_(0.43424015045166015625e2), SC_(0.9e1), SC_(0.8352634046179587916965001059409801159114e-15), SC_(0.1788811192909514734098773167283202538717e15) }, + { SC_(0.43424015045166015625e2), SC_(0.11e2), SC_(0.298233654616673156227132531689098798769e-18), SC_(0.1938607613675135351748920729783474442776e18) }, + { SC_(0.43424015045166015625e2), SC_(0.13e2), SC_(0.9887080919142083101358820841666548050753e-22), SC_(0.185339554706118008924758289308683203201e21) }, + { SC_(0.43424015045166015625e2), SC_(0.15e2), SC_(0.3051480135720957858617678876687093192759e-25), SC_(0.155008485690420948357495306520727205633e24) }, + { SC_(0.43424015045166015625e2), SC_(0.17e2), SC_(0.8789358031687555830222445881321568310609e-29), SC_(0.1123273000311193530381181760232005030144e27) }, + { SC_(0.43424015045166015625e2), SC_(0.19e2), SC_(0.236815091235828679607489497499356592008e-32), SC_(0.6975036999910042353046954606166180204346e29) }, + { SC_(0.48126312255859375e2), SC_(0.1e1), SC_(0.2077865419406304236580399656817393498934e-1), SC_(0.47126312255859375e2) }, + { SC_(0.48126312255859375e2), SC_(0.3e1), SC_(0.8437960653693735957134561491100566346538e-5), SC_(0.9809390766368974126976354455109685659409e5) }, + { SC_(0.48126312255859375e2), SC_(0.5e1), SC_(0.3166183100205642887826645435303326518589e-8), SC_(0.1866732086273901183859566573335806986036e9) }, + { SC_(0.48126312255859375e2), SC_(0.7e1), SC_(0.1101077573857436603217685657647966596415e-11), SC_(0.3234113100569470581250886609733700766947e12) }, + { SC_(0.48126312255859375e2), SC_(0.9e1), SC_(0.3558708932056748207836379171964544718017e-15), SC_(0.5077540178064275443217905666528310416763e15) }, + { SC_(0.48126312255859375e2), SC_(0.11e2), SC_(0.1071725362180794722991303758934862096345e-18), SC_(0.7187204167983311927130207619426523150668e18) }, + { SC_(0.48126312255859375e2), SC_(0.13e2), SC_(0.3014658675524784930232885637612008898403e-22), SC_(0.9120447991959640899074143906493307877248e21) }, + { SC_(0.48126312255859375e2), SC_(0.15e2), SC_(0.7938425564547933194404486603257095922217e-26), SC_(0.1031047379391541256772257192115735567411e25) }, + { SC_(0.48126312255859375e2), SC_(0.17e2), SC_(0.1961045599357850472573774141844422974584e-29), SC_(0.1031020187481179725740755298399728721963e28) }, + { SC_(0.48126312255859375e2), SC_(0.19e2), SC_(0.4553621212485033764098492374866479408138e-33), SC_(0.9046876114723798858579300473216770030017e30) }, + { SC_(0.5732621002197265625e2), SC_(0.1e1), SC_(0.1744402777746354370941916545967512574427e-1), SC_(0.5632621002197265625e2) }, + { SC_(0.5732621002197265625e2), SC_(0.3e1), SC_(0.5041228784640157070882863788866523052928e-5), SC_(0.1692976225938017575445293516622768947855e6) }, + { SC_(0.5732621002197265625e2), SC_(0.5e1), SC_(0.1362649746061762165780899778729496018362e-8), SC_(0.4724010543573353489898967888345099619178e9) }, + { SC_(0.5732621002197265625e2), SC_(0.7e1), SC_(0.3452470877574091776976939943305868253657e-12), SC_(0.1220237256004918374402794588004321635773e13) }, + { SC_(0.5732621002197265625e2), SC_(0.9e1), SC_(0.8215889635572593253088457299280361530952e-16), SC_(0.2908739076547419505386953128366070531788e16) }, + { SC_(0.5732621002197265625e2), SC_(0.11e2), SC_(0.1839861990383783313116790937960398559897e-19), SC_(0.6377247376024960772758581650103371965196e19) }, + { SC_(0.5732621002197265625e2), SC_(0.13e2), SC_(0.3884189924419906546211438160184542530819e-23), SC_(0.1281277708500950134229574278029254559604e23) }, + { SC_(0.5732621002197265625e2), SC_(0.15e2), SC_(0.7743442825181098725953308420937013100822e-27), SC_(0.2349650964632549829273721574544611802837e26) }, + { SC_(0.5732621002197265625e2), SC_(0.17e2), SC_(0.1460088396118344727050455134091626254268e-30), SC_(0.3915762470471681302080112870283482585318e29) }, + { SC_(0.5732621002197265625e2), SC_(0.19e2), SC_(0.2607900661303547815997784904334708204525e-34), SC_(0.5901933463224344925351004264635232794604e32) }, + { SC_(0.6708917999267578125e2), SC_(0.1e1), SC_(0.1490553320385152100190219767685565484466e-1), SC_(0.6608917999267578125e2) }, + { SC_(0.6708917999267578125e2), SC_(0.3e1), SC_(0.3168541314348230244338176586647618066319e-5), SC_(0.2756918187852909356618802405591850401834e6) }, + { SC_(0.6708917999267578125e2), SC_(0.5e1), SC_(0.6359235238270467694306514762948600692938e-9), SC_(0.1079927711069486764606829447481594714541e10) }, + { SC_(0.6708917999267578125e2), SC_(0.7e1), SC_(0.1206928980483395131401616270347952345323e-12), SC_(0.3964197272645173254186880587126054169797e13) }, + { SC_(0.6708917999267578125e2), SC_(0.9e1), SC_(0.2169449603169113441576634602908768007594e-16), SC_(0.1360687726333208376708933418787850648315e17) }, + { SC_(0.6708917999267578125e2), SC_(0.11e2), SC_(0.3698564833403065685495438101713488301888e-20), SC_(0.4357038155827756495735598627982153402271e20) }, + { SC_(0.6708917999267578125e2), SC_(0.13e2), SC_(0.5988599929974102276075093857646472184211e-24), SC_(0.1298279108340255309242599851104961474616e24) }, + { SC_(0.6708917999267578125e2), SC_(0.15e2), SC_(0.9221223430860084208480660478607176694238e-28), SC_(0.3590224502635946562912344519237920265067e27) }, + { SC_(0.6708917999267578125e2), SC_(0.17e2), SC_(0.1351942294317151246672282989779576780642e-31), SC_(0.9187438830712173265580555519935862232477e30) }, + { SC_(0.6708917999267578125e2), SC_(0.19e2), SC_(0.1889486089615175900821500798178282183061e-35), SC_(0.2168840476376953444396651759617824397927e34) }, + { SC_(0.8427097320556640625e2), SC_(0.1e1), SC_(0.1186648215822368525285940556232297759327e-1), SC_(0.8327097320556640625e2) }, + { SC_(0.8427097320556640625e2), SC_(0.3e1), SC_(0.1613080620689716420208484819235178725516e-5), SC_(0.5567698833397093278727574272579659009352e6) }, + { SC_(0.8427097320556640625e2), SC_(0.5e1), SC_(0.209395980014543864110860203206230236003e-9), SC_(0.3542814829846800003048627572579833469938e10) }, + { SC_(0.8427097320556640625e2), SC_(0.7e1), SC_(0.259842356333310682276090002104860605906e-13), SC_(0.2142720722760714805908684600682932675833e14) }, + { SC_(0.8427097320556640625e2), SC_(0.9e1), SC_(0.3085404888580255552989822799675831167521e-17), SC_(0.1230133905750725915299263587754107304015e18) }, + { SC_(0.8427097320556640625e2), SC_(0.11e2), SC_(0.3509034712860222962760251333254756074456e-21), SC_(0.6694273682440183097651850852425821561079e21) }, + { SC_(0.8427097320556640625e2), SC_(0.13e2), SC_(0.382588314145346844154066023890122614083e-25), SC_(0.3448101613978414848601011906343645503239e25) }, + { SC_(0.8427097320556640625e2), SC_(0.15e2), SC_(0.4002424816272686355251473755381408937122e-29), SC_(0.167844576749702313295927282736013280741e29) }, + { SC_(0.8427097320556640625e2), SC_(0.17e2), SC_(0.4020922226841006912343851260222267320224e-33), SC_(0.770852202612626995971591900878598550869e32) }, + { SC_(0.8427097320556640625e2), SC_(0.19e2), SC_(0.3882292927715049465002372600227544504974e-37), SC_(0.3334375868469712976869247382063715353114e36) }, + { SC_(0.89811798095703125e2), SC_(0.1e1), SC_(0.1113439460297191290516702101596593625518e-1), SC_(0.88811798095703125e2) }, + { SC_(0.89811798095703125e2), SC_(0.3e1), SC_(0.1335444490742688370916398221699506212709e-5), SC_(0.6770212257637661566889164532767608761787e6) }, + { SC_(0.89811798095703125e2), SC_(0.5e1), SC_(0.1533787499877055704851922853862331905913e-9), SC_(0.4927260887442264107449722332043254688884e10) }, + { SC_(0.89811798095703125e2), SC_(0.7e1), SC_(0.1688432955853503975755394195633939376132e-13), SC_(0.341981750103237950165321335502262598208e14) }, + { SC_(0.89811798095703125e2), SC_(0.9e1), SC_(0.1783053159360378987833322614212698623092e-17), SC_(0.2260963953658029194233890896268059400698e18) }, + { SC_(0.89811798095703125e2), SC_(0.11e2), SC_(0.1807896689731037912191952441414464398209e-21), SC_(0.1422171495262588623348401113709734075071e22) }, + { SC_(0.89811798095703125e2), SC_(0.13e2), SC_(0.1761424939222111582165573895943048297437e-25), SC_(0.850012578933500583549945901967278093095e25) }, + { SC_(0.89811798095703125e2), SC_(0.15e2), SC_(0.1650343978544310543504662580064669574542e-29), SC_(0.4820945735438993461637563603676492585253e29) }, + { SC_(0.89811798095703125e2), SC_(0.17e2), SC_(0.1488093455877324743839187146760945291604e-33), SC_(0.2590954487884657231576363385739495374147e33) }, + { SC_(0.89811798095703125e2), SC_(0.19e2), SC_(0.1292244496857133721942784586550645245778e-37), SC_(0.1317532108625735103660185175445868182099e37) }, + { SC_(0.9314194488525390625e2), SC_(0.1e1), SC_(0.1073630147225236337144701789380848326069e-1), SC_(0.9214194488525390625e2) }, + { SC_(0.9314194488525390625e2), SC_(0.3e1), SC_(0.1198669642925642401979083837454061384817e-5), SC_(0.7570116981991056119860594719739310676232e6) }, + { SC_(0.9314194488525390625e2), SC_(0.5e1), SC_(0.1283452526004013814258198209074314658733e-9), SC_(0.5947950219971087430537343410499591217973e10) }, + { SC_(0.9314194488525390625e2), SC_(0.7e1), SC_(0.1319069609528261818418334198064385877966e-13), SC_(0.446487440194934312111488167312319649152e14) }, + { SC_(0.9314194488525390625e2), SC_(0.9e1), SC_(0.1302328043147194287075115031894665144018e-17), SC_(0.3198639965807964312742815927019467533109e18) }, + { SC_(0.9314194488525390625e2), SC_(0.11e2), SC_(0.1236177836919721403765737215433819476809e-21), SC_(0.218449231007890018378859910694326655596e22) }, + { SC_(0.9314194488525390625e2), SC_(0.13e2), SC_(0.1128961840427586301269384284601706076889e-25), SC_(0.1420547666238493403538237866215459583699e26) }, + { SC_(0.9314194488525390625e2), SC_(0.15e2), SC_(0.9927335423863778471081674966421328808928e-30), SC_(0.8785100738704468872370378063630945463091e29) }, + { SC_(0.9314194488525390625e2), SC_(0.17e2), SC_(0.8410984479269716633215735173087903089852e-34), SC_(0.5160137754598078173774901830327704546949e33) }, + { SC_(0.9314194488525390625e2), SC_(0.19e2), SC_(0.6870939085563419432397431420737067143848e-38), SC_(0.2874800432534232773928956032078197165945e37) }, + { SC_(0.12710662078857421875e3), SC_(0.1e1), SC_(0.7867410791003353577486451327268430675675e-2), SC_(0.12610662078857421875e3) }, + { SC_(0.12710662078857421875e3), SC_(0.3e1), SC_(0.4756765450806589562531023018048496458968e-6), SC_(0.195800200705290083112997123748755257111e7) }, + { SC_(0.12710662078857421875e3), SC_(0.5e1), SC_(0.2788609589402406817185362690366395689257e-10), SC_(0.2943294748730343246175288002751992159513e11) }, + { SC_(0.12710662078857421875e3), SC_(0.7e1), SC_(0.1585854996116424482320092732249935154629e-14), SC_(0.4281230296503233084991678344162952208933e15) }, + { SC_(0.12710662078857421875e3), SC_(0.9e1), SC_(0.8752590775298130060265069047589397445736e-19), SC_(0.6022526744410914057834240385554659208174e19) }, + { SC_(0.12710662078857421875e3), SC_(0.11e2), SC_(0.4690281889744855025211609066562827248911e-23), SC_(0.8188741692549685597026365875536999321889e23) }, + { SC_(0.12710662078857421875e3), SC_(0.13e2), SC_(0.2441387098253283794183905419926209440688e-27), SC_(0.1075544343110230463520754387303580459511e28) }, + { SC_(0.12710662078857421875e3), SC_(0.15e2), SC_(0.1234896600646651797900206200766689032378e-31), SC_(0.1363790339503517746981497053843986612084e32) }, + { SC_(0.12710662078857421875e3), SC_(0.17e2), SC_(0.6072346650919668483463740483655999746732e-36), SC_(0.1668403080561633578115535406759464831818e36) }, + { SC_(0.1461273193359375e3), SC_(0.1e1), SC_(0.6843347325773238936574567174153666228098e-2), SC_(0.1451273193359375e3) }, + { SC_(0.1461273193359375e3), SC_(0.3e1), SC_(0.3140075547804910820730348007344007847771e-6), SC_(0.2993767158806684796218178234994411468506e7) }, + { SC_(0.1461273193359375e3), SC_(0.5e1), SC_(0.140256551243744605089693617870639830199e-10), SC_(0.6004912412162251444625808447134811783596e11) }, + { SC_(0.1461273193359375e3), SC_(0.7e1), SC_(0.6100605814397355322796047543443592595512e-15), SC_(0.1170689999491180219069492096430804603347e16) }, + { SC_(0.1461273193359375e3), SC_(0.9e1), SC_(0.25848816263883092276191275669970092037e-19), SC_(0.2217407326267892687686111316555017262592e20) }, + { SC_(0.1461273193359375e3), SC_(0.11e2), SC_(0.1067267952309297162763126740178063278718e-23), SC_(0.4078814285738904419812600606066702004165e24) }, + { SC_(0.1461273193359375e3), SC_(0.13e2), SC_(0.4295511230508811514272844224670430000081e-28), SC_(0.7283135060320315376814792476942850201157e28) }, + { SC_(0.1461273193359375e3), SC_(0.15e2), SC_(0.1685794679612132385053123312043503744524e-32), SC_(0.1261839651950400169932984542132106432972e33) }, + { SC_(0.1461273193359375e3), SC_(0.17e2), SC_(0.6453261961067914938560421194741957455187e-37), SC_(0.2120268147381352001198535387213620993483e37) }, + { SC_(0.15159515380859375e3), SC_(0.1e1), SC_(0.6596516939206477341584347766569299864921e-2), SC_(0.15059515380859375e3) }, + { SC_(0.15159515380859375e3), SC_(0.3e1), SC_(0.2814468728106491520838410045316091059219e-6), SC_(0.3347596975769214421006836346350610256195e7) }, + { SC_(0.15159515380859375e3), SC_(0.5e1), SC_(0.1170050174122274219289716906957470641344e-10), SC_(0.7243106622107697753701767427475453458565e11) }, + { SC_(0.15159515380859375e3), SC_(0.7e1), SC_(0.4741145783380803523167351947785780908503e-15), SC_(0.1524844421965691280990505705602018747263e16) }, + { SC_(0.15159515380859375e3), SC_(0.9e1), SC_(0.1873154920069057149770578865983941992405e-19), SC_(0.312226732797086143115011497185338443838e20) }, + { SC_(0.15159515380859375e3), SC_(0.11e2), SC_(0.7217934379337425962152588040048356136259e-24), SC_(0.6215682541734979693475414708593432978635e24) }, + { SC_(0.15159515380859375e3), SC_(0.13e2), SC_(0.2713531689941190571783863494210664248978e-28), SC_(0.1202561266975388195941606627628971416737e29) }, + { SC_(0.15159515380859375e3), SC_(0.15e2), SC_(0.9955663999437593890036396769373434643706e-33), SC_(0.2260193601781729884970189178049172916132e33) }, + { SC_(0.15159515380859375e3), SC_(0.17e2), SC_(0.3565713215942443442999683947434689182014e-37), SC_(0.4124955163635293971994182082506455289599e37) }, + { SC_(0.1645175628662109375e3), SC_(0.1e1), SC_(0.6078378396677444992372811165607151963077e-2), SC_(0.1635175628662109375e3) }, + { SC_(0.1645175628662109375e3), SC_(0.3e1), SC_(0.2205380873097440806860405853291950753265e-6), SC_(0.4292244566121655237562748652635491453111e7) }, + { SC_(0.1645175628662109375e3), SC_(0.5e1), SC_(0.7812285172733240207364672610505703104254e-11), SC_(0.1099045120729930198068250257000481111706e12) }, + { SC_(0.1645175628662109375e3), SC_(0.7e1), SC_(0.2702677780688999265822439850657810150329e-15), SC_(0.2744238752447014653148021426722207627682e16) }, + { SC_(0.1645175628662109375e3), SC_(0.9e1), SC_(0.9133818131191891504759712733991113958411e-20), SC_(0.6679814643612934693289752070516990660519e20) }, + { SC_(0.1645175628662109375e3), SC_(0.11e2), SC_(0.301626699016090637156467528907696851999e-24), SC_(0.1584529497354778901524029561541701436987e25) }, + { SC_(0.1645175628662109375e3), SC_(0.13e2), SC_(0.9735567644978941723183432881296453501902e-29), SC_(0.3661703384265443683470603906931571581675e29) }, + { SC_(0.1645175628662109375e3), SC_(0.15e2), SC_(0.3072125850090865013523395726218750822042e-33), SC_(0.8240670485158705651099714124647613897701e33) }, + { SC_(0.1645175628662109375e3), SC_(0.17e2), SC_(0.9480092992913423702080657306401947719897e-38), SC_(0.1805444286999578960267521449296940404066e38) }, + { SC_(0.16461895751953125e3), SC_(0.1e1), SC_(0.6074634507883788504540218314592952400656e-2), SC_(0.16361895751953125e3) }, + { SC_(0.16461895751953125e3), SC_(0.3e1), SC_(0.2201332742551199325713709533670328544111e-6), SC_(0.4300283572285784977111688931472599506378e7) }, + { SC_(0.16461895751953125e3), SC_(0.5e1), SC_(0.7788541854008919998266193972879733577099e-11), SC_(0.1102499415739219045543024521597047724335e12) }, + { SC_(0.16461895751953125e3), SC_(0.7e1), SC_(0.2691252735456801972892144185401932482745e-15), SC_(0.2756397897927628139714249621840003804363e16) }, + { SC_(0.16461895751953125e3), SC_(0.9e1), SC_(0.9084493849023664376903291056109451932335e-20), SC_(0.6718135215809466157643090447862959131928e20) }, + { SC_(0.16461895751953125e3), SC_(0.11e2), SC_(0.299648563361403962549091785801301281677e-24), SC_(0.1595718555038892084761727748419528720606e25) }, + { SC_(0.16461895751953125e3), SC_(0.13e2), SC_(0.9660586377062316532671879717337459492371e-29), SC_(0.369248112540577997190395267666155963113e29) }, + { SC_(0.16461895751953125e3), SC_(0.15e2), SC_(0.304499525945193970754803344804987526429e-33), SC_(0.8321172897192656490917059234703493962031e33) }, + { SC_(0.16461895751953125e3), SC_(0.17e2), SC_(0.9385796160679485820225356016712124423217e-38), SC_(0.1825580089607805279229537669486976536522e38) }, + { SC_(0.1900754241943359375e3), SC_(0.1e1), SC_(0.5261069410938602687387265235334034477441e-2), SC_(0.1890754241943359375e3) }, + { SC_(0.1900754241943359375e3), SC_(0.3e1), SC_(0.1433499012867343334427625347910197380543e-6), SC_(0.6652484511667035082549404023666284047067e7) }, + { SC_(0.1900754241943359375e3), SC_(0.5e1), SC_(0.3825602622303828512007981757322474714134e-11), SC_(0.2290981822147728430172148458292863371602e12) }, + { SC_(0.1900754241943359375e3), SC_(0.7e1), SC_(0.1000170712684688869093666734448899735268e-15), SC_(0.772053688814663031296777332295661575577e16) }, + { SC_(0.1900754241943359375e3), SC_(0.9e1), SC_(0.2562188446596318913021427533537801457325e-20), SC_(0.2545413505346771866533531375091737012538e21) }, + { SC_(0.1900754241943359375e3), SC_(0.11e2), SC_(0.6432794420061412959010552510461479377507e-25), SC_(0.8208216051152292122006711149420720664007e25) }, + { SC_(0.1900754241943359375e3), SC_(0.13e2), SC_(0.1583168643880265318797163963590872071244e-29), SC_(0.2588278814218988926866644375562441337541e30) }, + { SC_(0.1900754241943359375e3), SC_(0.15e2), SC_(0.3820138447649697048871342926349317943583e-34), SC_(0.7978752401651092215783220808668429278738e34) }, + { SC_(0.1900754241943359375e3), SC_(0.17e2), SC_(0.9039393276841188064583115373807867874483e-39), SC_(0.2403852716512804366596487028429967488599e39) }, + { SC_(0.19228924560546875e3), SC_(0.1e1), SC_(0.5200498846678920934578905286105202815963e-2), SC_(0.19128924560546875e3) }, + { SC_(0.19228924560546875e3), SC_(0.3e1), SC_(0.1384804771780416349572449360120986661323e-6), SC_(0.6890182721947382414100502501241862773895e7) }, + { SC_(0.19228924560546875e3), SC_(0.5e1), SC_(0.3612548760454780058130339253872345336028e-11), SC_(0.242979198378728992356654168561851726046e12) }, + { SC_(0.19228924560546875e3), SC_(0.7e1), SC_(0.9234452358142830367952048890690541027504e-16), SC_(0.8387008671431024081454643275024053858084e16) }, + { SC_(0.19228924560546875e3), SC_(0.9e1), SC_(0.2313500784493344895912716776617824202671e-20), SC_(0.283298364949157012739729209926861816494e21) }, + { SC_(0.19228924560546875e3), SC_(0.11e2), SC_(0.5681673642992491608895977423530118958427e-25), SC_(0.9362183678728566564870866597854197912608e25) }, + { SC_(0.19228924560546875e3), SC_(0.13e2), SC_(0.1368095376501954830607269915036171057433e-29), SC_(0.3026225028019096153622851894057081084744e30) }, + { SC_(0.19228924560546875e3), SC_(0.15e2), SC_(0.3230528589087087104485554346193884670649e-34), SC_(0.9565523832902803773297980989361219407399e34) }, + { SC_(0.19228924560546875e3), SC_(0.17e2), SC_(0.7482211335792048528718581996734357828283e-39), SC_(0.2955900761261892848473762268395051091364e39) }, + { SC_(0.218025848388671875e3), SC_(0.1e1), SC_(0.4586612125995780395228568457159589830789e-2), SC_(0.217025848388671875e3) }, + { SC_(0.218025848388671875e3), SC_(0.3e1), SC_(0.9517501181858641419252722414429361748138e-7), SC_(0.1008109835438870626191487644973676651716e8) }, + { SC_(0.218025848388671875e3), SC_(0.5e1), SC_(0.193943993954055604304910270889833561943e-11), SC_(0.4596278996487340212691736168175492263426e12) }, + { SC_(0.218025848388671875e3), SC_(0.7e1), SC_(0.3881709264892642744540975279173258431825e-16), SC_(0.205651010251540840475343366875533875512e17) }, + { SC_(0.218025848388671875e3), SC_(0.9e1), SC_(0.7631896786870356676948553272530092350159e-21), SC_(0.9028250275438757723326198506128512708297e21) }, + { SC_(0.218025848388671875e3), SC_(0.11e2), SC_(0.1474256668331860250887706591410200087125e-25), SC_(0.3888171966661098402376211452617202152346e26) }, + { SC_(0.218025848388671875e3), SC_(0.13e2), SC_(0.2798413963009846872720690855863686540029e-30), SC_(0.1642388114748076095339184748848267222298e31) }, + { SC_(0.218025848388671875e3), SC_(0.15e2), SC_(0.522053505136783860450894755535226562266e-35), SC_(0.6803185611143161435640527806051915880545e35) }, + { SC_(0.2378699798583984375e3), SC_(0.1e1), SC_(0.4203977318177307438998676442504791986322e-2), SC_(0.2368699798583984375e3) }, + { SC_(0.2378699798583984375e3), SC_(0.3e1), SC_(0.7337073887038401084510742741413977278066e-7), SC_(0.1312230729131015162911566562797816004604e8) }, + { SC_(0.2378699798583984375e3), SC_(0.5e1), SC_(0.1259384221515882824908863286623614691569e-11), SC_(0.7146578812667731938470483214291089236169e12) }, + { SC_(0.2378699798583984375e3), SC_(0.7e1), SC_(0.2126307488190618496285152514871326625392e-16), SC_(0.3825693533185043741461763953867673276231e17) }, + { SC_(0.2378699798583984375e3), SC_(0.9e1), SC_(0.3531709857006460790660631676199756407449e-21), SC_(0.2012710285654697856614104382945664580557e22) }, + { SC_(0.2378699798583984375e3), SC_(0.11e2), SC_(0.5771554545008699980336762812434398816258e-26), SC_(0.1040507973109529765694971815692678935317e27) }, + { SC_(0.2378699798583984375e3), SC_(0.13e2), SC_(0.9281244421003152741682573475481994446925e-31), SC_(0.5284883358835913909199591013057957458016e31) }, + { SC_(0.2378699798583984375e3), SC_(0.15e2), SC_(0.1468862378594779541244835664098708765596e-35), SC_(0.2636834307294278205059271375917019986283e36) }, + { SC_(0.2396336517333984375e3), SC_(0.1e1), SC_(0.4173036603024929398213813492338661124862e-2), SC_(0.2386336517333984375e3) }, + { SC_(0.2396336517333984375e3), SC_(0.3e1), SC_(0.7176925119148455626188464113809538811493e-7), SC_(0.1341887585023158702815848641876073088497e8) }, + { SC_(0.2396336517333984375e3), SC_(0.5e1), SC_(0.1214087829839193311748899044076091197599e-11), SC_(0.7418972281368740526297060256166891755519e12) }, + { SC_(0.2396336517333984375e3), SC_(0.7e1), SC_(0.2020440394443324313968944422690969321352e-16), SC_(0.4032289302272052201817721659456643269678e17) }, + { SC_(0.2396336517333984375e3), SC_(0.9e1), SC_(0.3308141271161855221906713800841144527579e-21), SC_(0.2154150355882571003560350589168197390899e22) }, + { SC_(0.2396336517333984375e3), SC_(0.11e2), SC_(0.5329923909490487799880018518255161273404e-26), SC_(0.113097159669886982043703458256007790423e27) }, + { SC_(0.2396336517333984375e3), SC_(0.13e2), SC_(0.8451093508158926832702660794846811220769e-31), SC_(0.5834619783240304562182451239383502427806e31) }, + { SC_(0.2396336517333984375e3), SC_(0.15e2), SC_(0.1318909002880679972666615314264026036024e-35), SC_(0.2957271852656461536789297467897909023669e36) }, + { SC_(0.2402838592529296875e3), SC_(0.1e1), SC_(0.416174437646005716683231471058140145548e-2), SC_(0.2392838592529296875e3) }, + { SC_(0.2402838592529296875e3), SC_(0.3e1), SC_(0.7119059913810169544717804123416115348579e-7), SC_(0.1352932804089974760797687736157968174666e8) }, + { SC_(0.2402838592529296875e3), SC_(0.5e1), SC_(0.119788348942875084133773888206856942214e-11), SC_(0.7521464634400629893693860969377187532556e12) }, + { SC_(0.2402838592529296875e3), SC_(0.7e1), SC_(0.1982940385943767333968884539729509742242e-16), SC_(0.41108296328096429708861234211995370188e17) }, + { SC_(0.2402838592529296875e3), SC_(0.9e1), SC_(0.3229723925503949352255112570136653530107e-21), SC_(0.2208481862402442717455341251684399357461e22) }, + { SC_(0.2402838592529296875e3), SC_(0.11e2), SC_(0.517652598316255671884628601969418476545e-26), SC_(0.1166086638308486633196885006984835989364e27) }, + { SC_(0.2402838592529296875e3), SC_(0.13e2), SC_(0.8165529252358491506884135141043317164656e-31), SC_(0.6050268105028971119072011722657983905528e31) }, + { SC_(0.2402838592529296875e3), SC_(0.15e2), SC_(0.1267821259689119178036978433293359702892e-35), SC_(0.3084311791351099946998151524574241380766e36) }, + { SC_(0.2446023712158203125e3), SC_(0.1e1), SC_(0.4088267807991398268562189973076545665726e-2), SC_(0.2436023712158203125e3) }, + { SC_(0.2446023712158203125e3), SC_(0.3e1), SC_(0.675008953440750234843128316666917127337e-7), SC_(0.1427834084973501079689484072332561481744e8) }, + { SC_(0.2446023712158203125e3), SC_(0.5e1), SC_(0.1096603094903015544428226380640814033626e-11), SC_(0.8231306247287089667176874048268970264256e12) }, + { SC_(0.2446023712158203125e3), SC_(0.7e1), SC_(0.1753135905193477392221071837121071626996e-16), SC_(0.4666532403500354283334158700893903515013e17) }, + { SC_(0.2446023712158203125e3), SC_(0.9e1), SC_(0.2758439299721590466200465663819285937366e-21), SC_(0.260131554194111224375528217072823422931e22) }, + { SC_(0.2446023712158203125e3), SC_(0.11e2), SC_(0.4272161654139629412902095558375556054415e-26), SC_(0.1425616390697479621614555443500242747887e27) }, + { SC_(0.2446023712158203125e3), SC_(0.13e2), SC_(0.6513615730195512823137766903610707082679e-31), SC_(0.7679975227568097316239522607894613615454e31) }, + { SC_(0.2446023712158203125e3), SC_(0.15e2), SC_(0.9777769042515169130578966217914304972965e-36), SC_(0.4066305058943527799012057784947902799586e36) }, + { SC_(0.2506675567626953125e3), SC_(0.1e1), SC_(0.3989347536293621238064935128969891127506e-2), SC_(0.2496675567626953125e3) }, + { SC_(0.2506675567626953125e3), SC_(0.3e1), SC_(0.6273720379307727725969616239885831681538e-7), SC_(0.1537624741355772771577292701294936705381e8) }, + { SC_(0.2506675567626953125e3), SC_(0.5e1), SC_(0.9711506618829705312909883481415605752997e-12), SC_(0.931773162074880986863739757384723927042e12) }, + { SC_(0.2506675567626953125e3), SC_(0.7e1), SC_(0.1479926042979277364594311329110873176647e-16), SC_(0.5555002914234808883854214712572599403515e17) }, + { SC_(0.2506675567626953125e3), SC_(0.9e1), SC_(0.2220436267734040821989616141535115554687e-21), SC_(0.3257724545763733239455669462423380942792e22) }, + { SC_(0.2506675567626953125e3), SC_(0.11e2), SC_(0.3280451636411783880817440530921953275331e-26), SC_(0.1879062206800944374946022762363162566372e27) }, + { SC_(0.2506675567626953125e3), SC_(0.13e2), SC_(0.4772844943345256088303076739119137231116e-31), SC_(0.1065870510318681455449175431176371850927e32) }, + { SC_(0.2506675567626953125e3), SC_(0.15e2), SC_(0.6839430210956838705822977255602522791877e-36), SC_(0.594487836790228861516910426475386693773e36) }, + { SC_(0.2636507568359375e3), SC_(0.1e1), SC_(0.3792896375496741174177376243560248112465e-2), SC_(0.2626507568359375e3) }, + { SC_(0.2636507568359375e3), SC_(0.3e1), SC_(0.5394941997103895837284167682236434180705e-7), SC_(0.1791264183242307000000437255948781967163e8) }, + { SC_(0.2636507568359375e3), SC_(0.5e1), SC_(0.7559193861982150138393393986991315957689e-12), SC_(0.1202992690472770559904649505606003814448e13) }, + { SC_(0.2636507568359375e3), SC_(0.7e1), SC_(0.1043483944902851139229023298184724891181e-16), SC_(0.7954940952306765555225249693645376903255e17) }, + { SC_(0.2636507568359375e3), SC_(0.9e1), SC_(0.1419271906061710275278584620049739523711e-21), SC_(0.5178798509667130333415308021207901325281e22) }, + { SC_(0.2636507568359375e3), SC_(0.11e2), SC_(0.1902226576385359426159396915871952052869e-26), SC_(0.3318835908817403429574080705532597847026e27) }, + { SC_(0.2636507568359375e3), SC_(0.13e2), SC_(0.2512593637222524929452981878672388791736e-31), SC_(0.2093403960863870474024148218903287575664e32) }, + { SC_(0.2636507568359375e3), SC_(0.15e2), SC_(0.3271082754229749735312410902642850923475e-36), SC_(0.1299498294934523204977507758178756030045e37) }, + { SC_(0.271831787109375e3), SC_(0.1e1), SC_(0.3678745633959420633487901722885192779384e-2), SC_(0.270831787109375e3) }, + { SC_(0.271831787109375e3), SC_(0.3e1), SC_(0.4924032731596502751976009876767690645394e-7), SC_(0.1964596492369054605660494416952133178711e8) }, + { SC_(0.271831787109375e3), SC_(0.5e1), SC_(0.6495456161893755702308272439128525814828e-12), SC_(0.1404019205039827281756688018301247600217e13) }, + { SC_(0.271831787109375e3), SC_(0.7e1), SC_(0.8445235550868735241912130607667853334817e-17), SC_(0.9884394502830581280217674894061376874235e17) }, + { SC_(0.271831787109375e3), SC_(0.9e1), SC_(0.1082361756878397050455619345941084436968e-21), SC_(0.6854173250900471775903524943465172192904e22) }, + { SC_(0.271831787109375e3), SC_(0.11e2), SC_(0.1367527916530076551512558387910771274925e-26), SC_(0.4680992709513771555839482351542631373181e27) }, + { SC_(0.271831787109375e3), SC_(0.13e2), SC_(0.1703518880648580763641852827220677410372e-31), SC_(0.3148095191897355169361499293068321504645e32) }, + { SC_(0.271831787109375e3), SC_(0.15e2), SC_(0.2092415709337656865957490293080909938549e-36), SC_(0.2084649705221358565843694703612661831578e37) }, + { SC_(0.274099365234375e3), SC_(0.1e1), SC_(0.364831198767982143222966551499005532145e-2), SC_(0.273099365234375e3) }, + { SC_(0.274099365234375e3), SC_(0.3e1), SC_(0.4803269712170291958762286578761598803649e-7), SC_(0.2014543827085088203602936118841171264648e8) }, + { SC_(0.274099365234375e3), SC_(0.5e1), SC_(0.6233061977138868663684224253038856376853e-12), SC_(0.1464242327106177610668728497392808429733e13) }, + { SC_(0.274099365234375e3), SC_(0.7e1), SC_(0.7973159863070018558286540553872979581751e-17), SC_(0.1048531781239106252425666771402693412894e18) }, + { SC_(0.274099365234375e3), SC_(0.9e1), SC_(0.1005468566547100377514670688591284526002e-21), SC_(0.7396633923105870428846178825572216613732e22) }, + { SC_(0.274099365234375e3), SC_(0.11e2), SC_(0.1250141979824775621810702988292219373285e-26), SC_(0.5139504878541688856369037060950164545717e27) }, + { SC_(0.274099365234375e3), SC_(0.13e2), SC_(0.1532661310316427362936292068175679370524e-31), SC_(0.3517167632289521085203290274879068687879e32) }, + { SC_(0.274099365234375e3), SC_(0.15e2), SC_(0.1852983963408025127050027652437224363032e-36), SC_(0.2370274853775499735793736259776542351768e37) }, + { SC_(0.274804931640625e3), SC_(0.1e1), SC_(0.3638944883666592336005387344183240775372e-2), SC_(0.273804931640625e3) }, + { SC_(0.274804931640625e3), SC_(0.3e1), SC_(0.4766500323634846786726418114758219069239e-7), SC_(0.2030256060269160057941917330026626586914e8) }, + { SC_(0.274804931640625e3), SC_(0.5e1), SC_(0.6154024546690911439951622301069331686792e-12), SC_(0.1483396562376533341738866147081245261408e13) }, + { SC_(0.274804931640625e3), SC_(0.7e1), SC_(0.7832477005907424889818045391405198637502e-17), SC_(0.1067856930955473531945270749186455957324e18) }, + { SC_(0.274804931640625e3), SC_(0.9e1), SC_(0.9827964089790961021148982989284943306226e-22), SC_(0.7573034896598354273614969311589563647814e22) }, + { SC_(0.274804931640625e3), SC_(0.11e2), SC_(0.121589512687081208208115625113120868527e-26), SC_(0.5290283392609316558714446432000706324911e27) }, + { SC_(0.274804931640625e3), SC_(0.13e2), SC_(0.1483336845938378842536785854889108110605e-31), SC_(0.3639906861316648922337742363934475695538e32) }, + { SC_(0.274804931640625e3), SC_(0.15e2), SC_(0.1784583808206143680516380935195677948469e-36), SC_(0.2466342921397522584830960161333299921649e37) }, + { SC_(0.28719293212890625e3), SC_(0.1e1), SC_(0.3481979840475847909058779449603208590017e-2), SC_(0.28619293212890625e3) }, + { SC_(0.28719293212890625e3), SC_(0.3e1), SC_(0.4177873173937715786615028868933817117241e-7), SC_(0.2319588437626001831290523114148527383804e8) }, + { SC_(0.28719293212890625e3), SC_(0.5e1), SC_(0.4944103935479594101728970184152086286306e-12), SC_(0.1853700117663054521198762979989883556474e13) }, + { SC_(0.28719293212890625e3), SC_(0.7e1), SC_(0.5771176926689689378272114553351095923104e-17), SC_(0.1460498293495902410425332026379780530262e18) }, + { SC_(0.28719293212890625e3), SC_(0.9e1), SC_(0.6645477608758422510175449153902904054049e-22), SC_(0.1134361728180550139843806606053711572247e23) }, + { SC_(0.28719293212890625e3), SC_(0.11e2), SC_(0.7549410333602551531197573935902332367997e-27), SC_(0.8684529178419808289808578708873987720728e27) }, + { SC_(0.28719293212890625e3), SC_(0.13e2), SC_(0.8461831166568759018593468368502015254964e-32), SC_(0.6552994599183951259948386008534097644671e32) }, + { SC_(0.28719293212890625e3), SC_(0.15e2), SC_(0.9358777379643248526116678325853529542453e-37), SC_(0.4872884452211613428565268037217322153101e37) }, + { SC_(0.2872945556640625e3), SC_(0.1e1), SC_(0.34807481739031415536832748605597495153e-2), SC_(0.2862945556640625e3) }, + { SC_(0.2872945556640625e3), SC_(0.3e1), SC_(0.4173456607681247504031635400359819979724e-7), SC_(0.2322068976483985302365908864885568618774e8) }, + { SC_(0.2872945556640625e3), SC_(0.5e1), SC_(0.493542599056095325492887019079469782537e-12), SC_(0.1857016860987350865488208769832611253273e13) }, + { SC_(0.2872945556640625e3), SC_(0.7e1), SC_(0.575704887226117173104059000343519557497e-17), SC_(0.1464171118451576900115689247386842164521e18) }, + { SC_(0.2872945556640625e3), SC_(0.9e1), SC_(0.6624639478608017189860202166580888604212e-22), SC_(0.1138043902274032262102313769657480009329e23) }, + { SC_(0.2872945556640625e3), SC_(0.11e2), SC_(0.7520584942137318140193092188213010036169e-27), SC_(0.871912063111857878002810464645372494142e27) }, + { SC_(0.2872945556640625e3), SC_(0.13e2), SC_(0.8423788942077451050455222863566182476902e-32), SC_(0.6583964742879698484706986690635311042633e32) }, + { SC_(0.2872945556640625e3), SC_(0.15e2), SC_(0.9310408458992971329277502791420183457416e-37), SC_(0.489956399730382818727393107483496092863e37) }, + { SC_(0.28788824462890625e3), SC_(0.1e1), SC_(0.3473570104569640055962131640759410960191e-2), SC_(0.28688824462890625e3) }, + { SC_(0.28788824462890625e3), SC_(0.3e1), SC_(0.4147778860826452996008042939379237489236e-7), SC_(0.2336595739914530255396130087319761514664e8) }, + { SC_(0.28788824462890625e3), SC_(0.5e1), SC_(0.4885092799811013921823782549177388581846e-12), SC_(0.1876488429114554752620527238325746098634e13) }, + { SC_(0.28788824462890625e3), SC_(0.7e1), SC_(0.5675297891024780138525697551464866109164e-17), SC_(0.1485786541228514073866161629333886138035e18) }, + { SC_(0.28788824462890625e3), SC_(0.9e1), SC_(0.6504343827584720578007790628197932503555e-22), SC_(0.115976844211059217259122774325677854357e23) }, + { SC_(0.28788824462890625e3), SC_(0.11e2), SC_(0.7354567247175934183847257682176508160719e-27), SC_(0.8923720939211117300320489938065609307863e27) }, + { SC_(0.28788824462890625e3), SC_(0.13e2), SC_(0.8205193867978273440011202644178884562983e-32), SC_(0.6767610329032719369025509390108872609635e32) }, + { SC_(0.28788824462890625e3), SC_(0.15e2), SC_(0.9033112602451792738749403271987921872272e-37), SC_(0.5058171670631253364671295649996237533421e37) }, + { SC_(0.289501678466796875e3), SC_(0.1e1), SC_(0.3454211406635041713966881609665888745256e-2), SC_(0.288501678466796875e3) }, + { SC_(0.289501678466796875e3), SC_(0.3e1), SC_(0.407905168480763018987021853172545228673e-7), SC_(0.2376380058306495433427585339813958853483e8) }, + { SC_(0.289501678466796875e3), SC_(0.5e1), SC_(0.4751385373606723027962691314425005391974e-12), SC_(0.1930231496923894088462545699714651073089e13) }, + { SC_(0.289501678466796875e3), SC_(0.7e1), SC_(0.5459747147595941934931644310213716724959e-17), SC_(0.154591661548185942785563127012845776958e18) }, + { SC_(0.289501678466796875e3), SC_(0.9e1), SC_(0.6189505505380654067781824225524105132565e-22), SC_(0.1220681936608413875283547987492080381155e23) }, + { SC_(0.289501678466796875e3), SC_(0.11e2), SC_(0.6923248423462699258122608833489787193542e-27), SC_(0.9501994073223823891184486514363262976698e27) }, + { SC_(0.289501678466796875e3), SC_(0.13e2), SC_(0.7641406071861718441256397914223803198376e-32), SC_(0.7290849633976240067942394862692220173534e32) }, + { SC_(0.289501678466796875e3), SC_(0.15e2), SC_(0.8323086212678717271324694441691502737994e-37), SC_(0.551375411474552213507390248281996458309e37) }, + { SC_(0.290340789794921875e3), SC_(0.1e1), SC_(0.3444228421043890893385637226929434835625e-2), SC_(0.289340789794921875e3) }, + { SC_(0.290340789794921875e3), SC_(0.3e1), SC_(0.404390772308938863697334002937411013455e-7), SC_(0.2397248344799799768131265409465413540602e8) }, + { SC_(0.290340789794921875e3), SC_(0.5e1), SC_(0.4683584166674361180389483263241938077867e-12), SC_(0.1958664738832016351565037051374224319343e13) }, + { SC_(0.290340789794921875e3), SC_(0.7e1), SC_(0.5351351314668937271340160893033367766944e-17), SC_(0.1578004983694902935556729547125288747567e18) }, + { SC_(0.290340789794921875e3), SC_(0.9e1), SC_(0.6032486205167581064858567225995659032751e-22), SC_(0.1253472175648567782767177252957740552768e23) }, + { SC_(0.290340789794921875e3), SC_(0.11e2), SC_(0.6709901097200500439708799760438557985054e-27), SC_(0.9816018026087682770199262928304104956695e27) }, + { SC_(0.290340789794921875e3), SC_(0.13e2), SC_(0.7364808408015348014875920182650010471344e-32), SC_(0.757750009443894137565133378045564307973e32) }, + { SC_(0.290340789794921875e3), SC_(0.15e2), SC_(0.7977567303667583794462380205536503660325e-37), SC_(0.5765560036226951637956770556326362477979e37) }, + { SC_(0.29069146728515625e3), SC_(0.1e1), SC_(0.3440073454302810870077806885983947303719e-2), SC_(0.28969146728515625e3) }, + { SC_(0.29069146728515625e3), SC_(0.3e1), SC_(0.4029340128900865341649997325071470796219e-7), SC_(0.2406005592837546327814379765186458826065e8) }, + { SC_(0.29069146728515625e3), SC_(0.5e1), SC_(0.4655593347102129154770919320328943988628e-12), SC_(0.197064624191144911113364924372333547971e13) }, + { SC_(0.29069146728515625e3), SC_(0.7e1), SC_(0.5306781300850624992667955983404647577365e-17), SC_(0.1591583373838064839072653291218129731538e18) }, + { SC_(0.29069146728515625e3), SC_(0.9e1), SC_(0.5968181020379241221614164786831856442513e-22), SC_(0.1267406078595540656088386383125599592152e23) }, + { SC_(0.29069146728515625e3), SC_(0.11e2), SC_(0.6622874185773110848120483926856882408505e-27), SC_(0.9950025958171749642234595698560649206203e27) }, + { SC_(0.29069146728515625e3), SC_(0.13e2), SC_(0.7252425880730941952837038289017818623456e-32), SC_(0.7700349214883739827198954590726953390616e32) }, + { SC_(0.29069146728515625e3), SC_(0.15e2), SC_(0.7837732137791901630412251772353086649926e-37), SC_(0.5873940084556647854075928357945884520601e37) }, + { SC_(0.291207244873046875e3), SC_(0.1e1), SC_(0.3433980498788601758552647643188802171892e-2), SC_(0.290207244873046875e3) }, + { SC_(0.291207244873046875e3), SC_(0.3e1), SC_(0.4008040930623875410783774854230681603441e-7), SC_(0.2418924493681085849559053713164757937193e8) }, + { SC_(0.291207244873046875e3), SC_(0.5e1), SC_(0.4614788198337042276507609088027282453366e-12), SC_(0.1988375146420684092396039255743712842102e13) }, + { SC_(0.291207244873046875e3), SC_(0.7e1), SC_(0.5241996237359538672911416208963837661703e-17), SC_(0.1611736435885476675751117506657723086633e18) }, + { SC_(0.291207244873046875e3), SC_(0.9e1), SC_(0.5874980228979750505195933021348442376062e-22), SC_(0.1288150308509289144242116755013782892893e23) }, + { SC_(0.291207244873046875e3), SC_(0.11e2), SC_(0.6497104124488598123554519089149390087186e-27), SC_(0.1015014875890825032948492161856198979056e28) }, + { SC_(0.291207244873046875e3), SC_(0.13e2), SC_(0.7090475834671838093657350842661830590173e-32), SC_(0.7884379604158280127712554109520427430725e32) }, + { SC_(0.291207244873046875e3), SC_(0.15e2), SC_(0.7636792489590183720543570028907531957389e-37), SC_(0.6036805286139762775881723279121968447932e37) }, + { SC_(0.294351806640625e3), SC_(0.1e1), SC_(0.33972952685862159057449623236968809744e-2), SC_(0.293351806640625e3) }, + { SC_(0.294351806640625e3), SC_(0.3e1), SC_(0.3881379282177214776636623282889873598749e-7), SC_(0.2498689343664573460409883409738540649414e8) }, + { SC_(0.294351806640625e3), SC_(0.5e1), SC_(0.4375088373240974671031998487110516857923e-12), SC_(0.2099244362868845821585772253776470963604e13) }, + { SC_(0.294351806640625e3), SC_(0.7e1), SC_(0.4866029054251045038186644286072296391012e-17), SC_(0.1739400555379920223170681407628313381261e18) }, + { SC_(0.294351806640625e3), SC_(0.9e1), SC_(0.534057883457178772917208250643286627359e-22), SC_(0.1421281681033299298280403078077015645206e23) }, + { SC_(0.294351806640625e3), SC_(0.11e2), SC_(0.5784500466126953910491646789719517325936e-27), SC_(0.1145149364382182705993366363639828841506e28) }, + { SC_(0.294351806640625e3), SC_(0.13e2), SC_(0.6183650292423694233820451668640331858573e-32), SC_(0.9097088412307421913798995051293929461461e32) }, + { SC_(0.294351806640625e3), SC_(0.15e2), SC_(0.6524731626576039436199662440884420606257e-37), SC_(0.7124547053047129902329409548948893697576e37) }, + { SC_(0.29787152099609375e3), SC_(0.1e1), SC_(0.3357152092472492109647570746796270004039e-2), SC_(0.29687152099609375e3) }, + { SC_(0.29787152099609375e3), SC_(0.3e1), SC_(0.3745857576153496103596756759785568454842e-7), SC_(0.2590028433522621662064011616166681051254e8) }, + { SC_(0.29787152099609375e3), SC_(0.5e1), SC_(0.4124278994306611649605113542682886173912e-12), SC_(0.2229149394453432862981100413241140703895e13) }, + { SC_(0.29787152099609375e3), SC_(0.7e1), SC_(0.4481254385408609056603897429430645730762e-17), SC_(0.1892483485866810077637251708385021969851e18) }, + { SC_(0.29787152099609375e3), SC_(0.9e1), SC_(0.4805556612415073905868174503601992803965e-22), SC_(0.1584682915857995126890517336563712708005e23) }, + { SC_(0.29787152099609375e3), SC_(0.11e2), SC_(0.5086482969169712932808559443461158258716e-27), SC_(0.1308665081238300833231561815310422586917e28) }, + { SC_(0.29787152099609375e3), SC_(0.13e2), SC_(0.5314446802305598153808326995941985254172e-32), SC_(0.1065733067256237279284265031964211394528e33) }, + { SC_(0.29787152099609375e3), SC_(0.15e2), SC_(0.5481525108002032281510522944958079149289e-37), SC_(0.8557747958232836453478265781438336038069e37) }, + { SC_(0.298941925048828125e3), SC_(0.1e1), SC_(0.3345131332236732968010854526498232035615e-2), SC_(0.297941925048828125e3) }, + { SC_(0.298941925048828125e3), SC_(0.3e1), SC_(0.3705896653431679485941827175484149138275e-7), SC_(0.2618241086285098069268428844225127249956e8) }, + { SC_(0.298941925048828125e3), SC_(0.5e1), SC_(0.4051450186662736366284562621407566077077e-12), SC_(0.2269904983065584876428858402786024561227e13) }, + { SC_(0.298941925048828125e3), SC_(0.7e1), SC_(0.4371220920128659338444328164220492742505e-17), SC_(0.1941268809835496579746004922828460068201e18) }, + { SC_(0.298941925048828125e3), SC_(0.9e1), SC_(0.4654869913634073404921977229252675829028e-22), SC_(0.1637581799972646839641245577548494961723e23) }, + { SC_(0.298941925048828125e3), SC_(0.11e2), SC_(0.489284975257170578658380454302158217284e-27), SC_(0.1362443397656620723242541241397155077558e28) }, + { SC_(0.298941925048828125e3), SC_(0.13e2), SC_(0.5076942804322773765508159231416954589399e-32), SC_(0.111786745604799935748770629080275328159e33) }, + { SC_(0.298941925048828125e3), SC_(0.15e2), SC_(0.5200735573667448543558639259673314877186e-37), SC_(0.9044325612703634083164448623285298649691e37) } + } }; +#undef SC_ + diff --git a/test/tgamma_delta_ratio_int2.ipp b/test/tgamma_delta_ratio_int2.ipp new file mode 100644 index 000000000..eae1564e2 --- /dev/null +++ b/test/tgamma_delta_ratio_int2.ipp @@ -0,0 +1,200 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 190> tgamma_delta_ratio_int2 = { { + { SC_(0.11e2), SC_(0.1e2), SC_(0.1491552059147518383844493235618106619139e-11), SC_(0.36288e7) }, + { SC_(0.12e2), SC_(0.1e2), SC_(0.7812891738391762962994964567523415624059e-12), SC_(0.399168e8) }, + { SC_(0.12e2), SC_(0.11e2), SC_(0.3551314426541710437724983894328825283663e-13), SC_(0.399168e8) }, + { SC_(0.13e2), SC_(0.1e2), SC_(0.4261577311850052525269980673194590340396e-12), SC_(0.2395008e9) }, + { SC_(0.13e2), SC_(0.11e2), SC_(0.1852859700804370663160861162258517539303e-13), SC_(0.4790016e9) }, + { SC_(0.13e2), SC_(0.12e2), SC_(0.7720248753351544429836921509410489747094e-15), SC_(0.4790016e9) }, + { SC_(0.14e2), SC_(0.1e2), SC_(0.2408717611045681862109119510936072801093e-12), SC_(0.10378368e10) }, + { SC_(0.14e2), SC_(0.11e2), SC_(0.1003632337935700775878799796223363667122e-13), SC_(0.31135104e10) }, + { SC_(0.14e2), SC_(0.12e2), SC_(0.4014529351742803103515199184893454668489e-15), SC_(0.62270208e10) }, + { SC_(0.14e2), SC_(0.13e2), SC_(0.1544049750670308885967384301882097949419e-16), SC_(0.62270208e10) }, + { SC_(0.15e2), SC_(0.1e2), SC_(0.1405085273109981086230319714712709133971e-12), SC_(0.36324288e10) }, + { SC_(0.15e2), SC_(0.11e2), SC_(0.5620341092439924344921278858850836535885e-14), SC_(0.145297152e11) }, + { SC_(0.15e2), SC_(0.12e2), SC_(0.2161669650938432440354338022634937129186e-15), SC_(0.435891456e11) }, + { SC_(0.15e2), SC_(0.13e2), SC_(0.8006183892364564593904955639388656034024e-17), SC_(0.871782912e11) }, + { SC_(0.15e2), SC_(0.14e2), SC_(0.2859351390130201640680341299781662869294e-18), SC_(0.871782912e11) }, + { SC_(0.16e2), SC_(0.1e2), SC_(0.8430511638659886517381918288276254803827e-13), SC_(0.108972864e11) }, + { SC_(0.16e2), SC_(0.11e2), SC_(0.324250447640764866053150703395240569378e-14), SC_(0.54486432e11) }, + { SC_(0.16e2), SC_(0.12e2), SC_(0.1200927583854684689085743345908298405104e-15), SC_(0.217945728e12) }, + { SC_(0.16e2), SC_(0.13e2), SC_(0.4289027085195302461020511949672494303941e-17), SC_(0.653837184e12) }, + { SC_(0.16e2), SC_(0.14e2), SC_(0.1478974856963897400351900672300860104807e-18), SC_(0.1307674368e13) }, + { SC_(0.16e2), SC_(0.15e2), SC_(0.4929916189879658001173002241002867016024e-20), SC_(0.1307674368e13) }, + { SC_(0.17e2), SC_(0.1e2), SC_(0.5188007162252237856850411254323849110047e-13), SC_(0.290594304e11) }, + { SC_(0.17e2), SC_(0.11e2), SC_(0.1921484134167495502537189353453277448166e-14), SC_(0.1743565824e12) }, + { SC_(0.17e2), SC_(0.12e2), SC_(0.6862443336312483937632819119475990886306e-16), SC_(0.871782912e12) }, + { SC_(0.17e2), SC_(0.13e2), SC_(0.2366359771142235840563041075681376167692e-17), SC_(0.3487131648e13) }, + { SC_(0.17e2), SC_(0.14e2), SC_(0.7887865903807452801876803585604587225639e-19), SC_(0.10461394944e14) }, + { SC_(0.17e2), SC_(0.15e2), SC_(0.254447287219595251673445276954986684698e-20), SC_(0.20922789888e14) }, + { SC_(0.17e2), SC_(0.16e2), SC_(0.7951477725612351614795164904843333896814e-22), SC_(0.20922789888e14) }, + { SC_(0.18e2), SC_(0.1e2), SC_(0.3266523028084742354313221900870571661882e-13), SC_(0.705729024e11) }, + { SC_(0.18e2), SC_(0.11e2), SC_(0.1166615367173122269397579250310918450672e-14), SC_(0.4940103168e12) }, + { SC_(0.18e2), SC_(0.12e2), SC_(0.4022811610941800928957169828658339485076e-16), SC_(0.29640619008e13) }, + { SC_(0.18e2), SC_(0.13e2), SC_(0.1340937203647266976319056609552779828359e-17), SC_(0.14820309504e14) }, + { SC_(0.18e2), SC_(0.14e2), SC_(0.4325603882733119278448569708234773639867e-19), SC_(0.59281238016e14) }, + { SC_(0.18e2), SC_(0.15e2), SC_(0.1351751213354099774515178033823366762458e-20), SC_(0.177843714048e15) }, + { SC_(0.18e2), SC_(0.16e2), SC_(0.4096215798042726589439933435828384128662e-22), SC_(0.355687428096e15) }, + { SC_(0.18e2), SC_(0.17e2), SC_(0.1204769352365507820423509834067171802548e-23), SC_(0.355687428096e15) }, + { SC_(0.19e2), SC_(0.1e2), SC_(0.209990766091162008491564265055965321121e-13), SC_(0.1587890304e12) }, + { SC_(0.19e2), SC_(0.11e2), SC_(0.7241060899695241672122905691585011073137e-15), SC_(0.12703122432e13) }, + { SC_(0.19e2), SC_(0.12e2), SC_(0.2413686966565080557374301897195003691046e-16), SC_(0.88921857024e13) }, + { SC_(0.19e2), SC_(0.13e2), SC_(0.778608698891961470120742547482259255176e-18), SC_(0.533531142144e14) }, + { SC_(0.19e2), SC_(0.14e2), SC_(0.2433152184037379594127320460882060172425e-19), SC_(0.266765571072e15) }, + { SC_(0.19e2), SC_(0.15e2), SC_(0.7373188436476907860991880184491091431591e-21), SC_(0.1067062284288e16) }, + { SC_(0.19e2), SC_(0.16e2), SC_(0.2168584834257914076762317701320909244586e-22), SC_(0.3201186852864e16) }, + { SC_(0.19e2), SC_(0.17e2), SC_(0.6195956669308325933606622003774026413102e-24), SC_(0.6402373705728e16) }, + { SC_(0.19e2), SC_(0.18e2), SC_(0.1721099074807868314890728334381674003639e-25), SC_(0.6402373705728e16) }, + { SC_(0.2e2), SC_(0.1e2), SC_(0.1375801570942095917703352081401152103896e-13), SC_(0.3352212864e12) }, + { SC_(0.2e2), SC_(0.11e2), SC_(0.4586005236473653059011173604670507012987e-15), SC_(0.30169915776e13) }, + { SC_(0.2e2), SC_(0.12e2), SC_(0.1479356527894726793229410840216292584834e-16), SC_(0.241359326208e14) }, + { SC_(0.2e2), SC_(0.13e2), SC_(0.4622989149671021228841908875675914327607e-18), SC_(0.1689515283456e15) }, + { SC_(0.2e2), SC_(0.14e2), SC_(0.1400905802930612493588457235053307372002e-19), SC_(0.10137091700736e16) }, + { SC_(0.2e2), SC_(0.15e2), SC_(0.4120311185090036745848403632509727564713e-21), SC_(0.5068545850368e16) }, + { SC_(0.2e2), SC_(0.16e2), SC_(0.1177231767168581927385258180717065018489e-22), SC_(0.20274183401472e17) }, + { SC_(0.2e2), SC_(0.17e2), SC_(0.3270088242134949798292383835325180606915e-24), SC_(0.60822550204416e17) }, + { SC_(0.2e2), SC_(0.18e2), SC_(0.8838076330094458914303740095473461099769e-26), SC_(0.121645100408832e18) }, + { SC_(0.2e2), SC_(0.19e2), SC_(0.2325809560551173398500984235650910815729e-27), SC_(0.121645100408832e18) }, + { SC_(0.21e2), SC_(0.1e2), SC_(0.9172010472947306118022347209341014025973e-14), SC_(0.6704425728e12) }, + { SC_(0.21e2), SC_(0.11e2), SC_(0.2958713055789453586458821680432585169669e-15), SC_(0.6704425728e13) }, + { SC_(0.21e2), SC_(0.12e2), SC_(0.9245978299342042457683817751351828655215e-17), SC_(0.60339831552e14) }, + { SC_(0.21e2), SC_(0.13e2), SC_(0.2801811605861224987176914470106614744005e-18), SC_(0.482718652416e15) }, + { SC_(0.21e2), SC_(0.14e2), SC_(0.8240622370180073491696807265019455129425e-20), SC_(0.3379030566912e16) }, + { SC_(0.21e2), SC_(0.15e2), SC_(0.2354463534337163854770516361434130036979e-21), SC_(0.20274183401472e17) }, + { SC_(0.21e2), SC_(0.16e2), SC_(0.6540176484269899596584767670650361213829e-23), SC_(0.10137091700736e18) }, + { SC_(0.21e2), SC_(0.17e2), SC_(0.1767615266018891782860748019094692219954e-24), SC_(0.40548366802944e18) }, + { SC_(0.21e2), SC_(0.18e2), SC_(0.4651619121102346797001968471301821631458e-26), SC_(0.121645100408832e19) }, + { SC_(0.21e2), SC_(0.19e2), SC_(0.1192722851564704306923581659308159392681e-27), SC_(0.243290200817664e19) }, + { SC_(0.21e2), SC_(0.2e2), SC_(0.2981807128911760767308954148270398481704e-29), SC_(0.243290200817664e19) }, + { SC_(0.22e2), SC_(0.1e2), SC_(0.6213297417157852531563525528908428856304e-14), SC_(0.12799358208e13) }, + { SC_(0.22e2), SC_(0.11e2), SC_(0.1941655442861828916113601727783884017595e-15), SC_(0.140792940288e14) }, + { SC_(0.22e2), SC_(0.12e2), SC_(0.5883804372308572473071520387223890962409e-17), SC_(0.140792940288e15) }, + { SC_(0.22e2), SC_(0.13e2), SC_(0.1730530697737815433256329525654085577179e-18), SC_(0.1267136462592e16) }, + { SC_(0.22e2), SC_(0.14e2), SC_(0.4944373422108044095018084359011673077655e-20), SC_(0.10137091700736e17) }, + { SC_(0.22e2), SC_(0.15e2), SC_(0.1373437061696678915282801210836575854904e-21), SC_(0.70959641905152e17) }, + { SC_(0.22e2), SC_(0.16e2), SC_(0.3711992058639672744007570840098853661903e-23), SC_(0.425757851430912e18) }, + { SC_(0.22e2), SC_(0.17e2), SC_(0.9768400154314928273704133789733825426061e-25), SC_(0.212878925715456e19) }, + { SC_(0.22e2), SC_(0.18e2), SC_(0.2504717988285879044539521484547134724631e-26), SC_(0.851515702861824e19) }, + { SC_(0.22e2), SC_(0.19e2), SC_(0.6261794970714697611348803711367836811578e-28), SC_(0.2554547108585472e20) }, + { SC_(0.22e2), SC_(0.2e2), SC_(0.1527267066027975027158244807650691905263e-29), SC_(0.5109094217170944e20) }, + { SC_(0.22e2), SC_(0.21e2), SC_(0.3636350157209464350376773351549266441102e-31), SC_(0.5109094217170944e20) }, + { SC_(0.23e2), SC_(0.1e2), SC_(0.4271641974296023615449923801124544838709e-14), SC_(0.23465490048e13) }, + { SC_(0.23e2), SC_(0.11e2), SC_(0.129443696190788594407573448518925601173e-15), SC_(0.281585880576e14) }, + { SC_(0.23e2), SC_(0.12e2), SC_(0.3807167535023193953163924956438988269794e-17), SC_(0.3097444686336e15) }, + { SC_(0.23e2), SC_(0.13e2), SC_(0.1087762152863769700903978558982568077084e-18), SC_(0.3097444686336e16) }, + { SC_(0.23e2), SC_(0.14e2), SC_(0.3021561535732693613622162663840466880789e-20), SC_(0.27877002177024e17) }, + { SC_(0.23e2), SC_(0.15e2), SC_(0.8166382529007280036816655848217478056187e-22), SC_(0.223016017416192e18) }, + { SC_(0.23e2), SC_(0.16e2), SC_(0.2149048033949284220214909433741441593733e-23), SC_(0.1561112121913344e19) }, + { SC_(0.23e2), SC_(0.17e2), SC_(0.5510379574228933897986947266003696394188e-25), SC_(0.9366672731480064e19) }, + { SC_(0.23e2), SC_(0.18e2), SC_(0.1377594893557233474496736816500924098547e-26), SC_(0.4683336365740032e20) }, + { SC_(0.23e2), SC_(0.19e2), SC_(0.3359987545261545059748138576831522191578e-28), SC_(0.18733345462960128e21) }, + { SC_(0.23e2), SC_(0.2e2), SC_(0.7999970345860821570828901373408386170424e-30), SC_(0.56200036388880384e21) }, + { SC_(0.23e2), SC_(0.21e2), SC_(0.1860458219967632923448581714746136318703e-31), SC_(0.112400072777760768e22) }, + { SC_(0.23e2), SC_(0.22e2), SC_(0.4228314136290074826019503897150309815235e-33), SC_(0.112400072777760768e22) }, + { SC_(0.24e2), SC_(0.1e2), SC_(0.2977205012388137671374189315935288826979e-14), SC_(0.41515867008e13) }, + { SC_(0.24e2), SC_(0.11e2), SC_(0.8756485330553346092277027399809673020527e-16), SC_(0.539706271104e14) }, + { SC_(0.24e2), SC_(0.12e2), SC_(0.2501852951586670312079150685659906577293e-17), SC_(0.6476475253248e15) }, + { SC_(0.24e2), SC_(0.13e2), SC_(0.6949591532185195311330974126833073825815e-19), SC_(0.71241227785728e16) }, + { SC_(0.24e2), SC_(0.14e2), SC_(0.1878267981671674408467830845090019952923e-20), SC_(0.71241227785728e17) }, + { SC_(0.24e2), SC_(0.15e2), SC_(0.4942810478083353706494291697605315665587e-22), SC_(0.641171050071552e18) }, + { SC_(0.24e2), SC_(0.16e2), SC_(0.1267387302072654796536997871180850170663e-23), SC_(0.5129368400572416e19) }, + { SC_(0.24e2), SC_(0.17e2), SC_(0.3168468255181636991342494677952125426658e-25), SC_(0.35905578804006912e20) }, + { SC_(0.24e2), SC_(0.18e2), SC_(0.772797135410155363742071872671250104063e-27), SC_(0.215433472824041472e21) }, + { SC_(0.24e2), SC_(0.19e2), SC_(0.1839993179547988961290647315883928819198e-28), SC_(0.107716736412020736e22) }, + { SC_(0.24e2), SC_(0.2e2), SC_(0.4279053905925555723931737943916113533018e-30), SC_(0.430866945648082944e22) }, + { SC_(0.24e2), SC_(0.21e2), SC_(0.972512251346717209984485896344571257504e-32), SC_(0.1292600836944248832e23) }, + { SC_(0.24e2), SC_(0.22e2), SC_(0.2161138336326038244409968658543491683342e-33), SC_(0.2585201673888497664e23) }, + { SC_(0.24e2), SC_(0.23e2), SC_(0.4698126818100083140021670996833677572483e-35), SC_(0.2585201673888497664e23) }, + { SC_(0.25e2), SC_(0.1e2), SC_(0.2101556479332803062146486575954321524926e-14), SC_(0.71170057728e13) }, + { SC_(0.25e2), SC_(0.11e2), SC_(0.6004447083808008748989961645583775785504e-16), SC_(0.996380808192e14) }, + { SC_(0.25e2), SC_(0.12e2), SC_(0.1667901967724446874719433790439937718196e-17), SC_(0.12952950506496e16) }, + { SC_(0.25e2), SC_(0.13e2), SC_(0.4507843156012018580322794028216047887015e-19), SC_(0.155435406077952e17) }, + { SC_(0.25e2), SC_(0.14e2), SC_(0.1186274514740004889558630007425275759741e-20), SC_(0.1709789466857472e18) }, + { SC_(0.25e2), SC_(0.15e2), SC_(0.3041729524974371511688794890834040409592e-22), SC_(0.1709789466857472e19) }, + { SC_(0.25e2), SC_(0.16e2), SC_(0.760432381243592877922198722708510102398e-24), SC_(0.15388105201717248e20) }, + { SC_(0.25e2), SC_(0.17e2), SC_(0.1854713124984372872980972494411000249751e-25), SC_(0.123104841613737984e21) }, + { SC_(0.25e2), SC_(0.18e2), SC_(0.4415983630915173507097553558121429166074e-27), SC_(0.861733891296165888e21) }, + { SC_(0.25e2), SC_(0.19e2), SC_(0.1026972937422133373743617106539867247924e-28), SC_(0.5170403347776995328e22) }, + { SC_(0.25e2), SC_(0.2e2), SC_(0.233402940323212130396276615122697101801e-30), SC_(0.2585201673888497664e23) }, + { SC_(0.25e2), SC_(0.21e2), SC_(0.5186732007182491786583924780504380040021e-32), SC_(0.10340806695553990656e24) }, + { SC_(0.25e2), SC_(0.22e2), SC_(0.1127550436344019953605201039240082617396e-33), SC_(0.31022420086661971968e24) }, + { SC_(0.25e2), SC_(0.23e2), SC_(0.2399043481583021177883406466468260888076e-35), SC_(0.62044840173323943936e24) }, + { SC_(0.25e2), SC_(0.24e2), SC_(0.4998007253297960787257096805142210183493e-37), SC_(0.62044840173323943936e24) }, + { SC_(0.26e2), SC_(0.1e2), SC_(0.1501111770952002187247490411395943946376e-14), SC_(0.11861676288e14) }, + { SC_(0.26e2), SC_(0.11e2), SC_(0.4169754919311117186798584476099844295489e-16), SC_(0.17792514432e15) }, + { SC_(0.26e2), SC_(0.12e2), SC_(0.1126960789003004645080698507054011971754e-17), SC_(0.249095202048e16) }, + { SC_(0.26e2), SC_(0.13e2), SC_(0.2965686286850012223896575018563189399352e-19), SC_(0.3238237626624e17) }, + { SC_(0.26e2), SC_(0.14e2), SC_(0.760432381243592877922198722708510102398e-21), SC_(0.38858851519488e18) }, + { SC_(0.26e2), SC_(0.15e2), SC_(0.1901080953108982194805496806771275255995e-22), SC_(0.427447366714368e19) }, + { SC_(0.26e2), SC_(0.16e2), SC_(0.4636782812460932182452431236027500624378e-24), SC_(0.427447366714368e20) }, + { SC_(0.26e2), SC_(0.17e2), SC_(0.1103995907728793376774388389530357291519e-25), SC_(0.3847026300429312e21) }, + { SC_(0.26e2), SC_(0.18e2), SC_(0.2567432343555333434359042766349668119811e-27), SC_(0.30776210403434496e22) }, + { SC_(0.26e2), SC_(0.19e2), SC_(0.5835073508080303259906915378067427545024e-29), SC_(0.215433472824041472e23) }, + { SC_(0.26e2), SC_(0.2e2), SC_(0.1296683001795622946645981195126095010005e-30), SC_(0.1292600836944248832e24) }, + { SC_(0.26e2), SC_(0.21e2), SC_(0.281887609086004988401300259810020654349e-32), SC_(0.646300418472124416e24) }, + { SC_(0.26e2), SC_(0.22e2), SC_(0.5997608703957552944708516166170652220191e-34), SC_(0.2585201673888497664e25) }, + { SC_(0.26e2), SC_(0.23e2), SC_(0.1249501813324490196814274201285552545873e-35), SC_(0.7755605021665492992e25) }, + { SC_(0.26e2), SC_(0.24e2), SC_(0.2550003700662224891457702451603168460966e-37), SC_(0.15511210043330985984e26) }, + { SC_(0.26e2), SC_(0.25e2), SC_(0.5100007401324449782915404903206336921931e-39), SC_(0.15511210043330985984e26) }, + { SC_(0.27e2), SC_(0.1e2), SC_(0.1084136279020890468567631963785959516827e-14), SC_(0.19275223968e14) }, + { SC_(0.27e2), SC_(0.11e2), SC_(0.293009805140781207720981611834043112656e-16), SC_(0.308403583488e15) }, + { SC_(0.27e2), SC_(0.12e2), SC_(0.7710784345810031782131095048264292438315e-18), SC_(0.462605375232e16) }, + { SC_(0.27e2), SC_(0.13e2), SC_(0.1977124191233341482597716679042126266235e-19), SC_(0.6476475253248e17) }, + { SC_(0.27e2), SC_(0.14e2), SC_(0.4942810478083353706494291697605315665587e-21), SC_(0.84194178292224e18) }, + { SC_(0.27e2), SC_(0.15e2), SC_(0.1205563531239842367437632121367150162338e-22), SC_(0.1010330139506688e20) }, + { SC_(0.27e2), SC_(0.16e2), SC_(0.2870389360094862779613409812778928957948e-24), SC_(0.11113631534573568e21) }, + { SC_(0.27e2), SC_(0.17e2), SC_(0.6675324093243866929333511192509137111507e-26), SC_(0.11113631534573568e22) }, + { SC_(0.27e2), SC_(0.18e2), SC_(0.1517119112100878847575797998297531161706e-27), SC_(0.100022683811162112e23) }, + { SC_(0.27e2), SC_(0.19e2), SC_(0.3371375804668619661279551107327847026014e-29), SC_(0.800181470489296896e23) }, + { SC_(0.27e2), SC_(0.2e2), SC_(0.7329077836236129698433806755060537013074e-31), SC_(0.5601270293425078272e24) }, + { SC_(0.27e2), SC_(0.21e2), SC_(0.155937826302896376562421420320436957725e-32), SC_(0.33607621760550469632e25) }, + { SC_(0.27e2), SC_(0.22e2), SC_(0.324870471464367451171711292334243661927e-34), SC_(0.16803810880275234816e26) }, + { SC_(0.27e2), SC_(0.23e2), SC_(0.6630009621721784717790026374168237998511e-36), SC_(0.67215243521100939264e26) }, + { SC_(0.27e2), SC_(0.24e2), SC_(0.1326001924344356943558005274833647599702e-37), SC_(0.201645730563302817792e27) }, + { SC_(0.27e2), SC_(0.25e2), SC_(0.2600003773224229301094127989869897254318e-39), SC_(0.403291461126605635584e27) }, + { SC_(0.27e2), SC_(0.26e2), SC_(0.5000007256200440963642553826672879335227e-41), SC_(0.403291461126605635584e27) }, + { SC_(0.28e2), SC_(0.1e2), SC_(0.7911264738801092608466503519519164041712e-15), SC_(0.30613591008e14) }, + { SC_(0.28e2), SC_(0.11e2), SC_(0.2081911773368708581175395663031358958345e-16), SC_(0.520431047136e15) }, + { SC_(0.28e2), SC_(0.12e2), SC_(0.5338235316330022003013835033413740918834e-18), SC_(0.8326896754176e16) }, + { SC_(0.28e2), SC_(0.13e2), SC_(0.1334558829082505500753458758353435229708e-19), SC_(0.12490345131264e18) }, + { SC_(0.28e2), SC_(0.14e2), SC_(0.3255021534347574392081606727691305438313e-21), SC_(0.174864831837696e19) }, + { SC_(0.28e2), SC_(0.15e2), SC_(0.775005127225612950495620649450310818646e-23), SC_(0.2273242813890048e20) }, + { SC_(0.28e2), SC_(0.16e2), SC_(0.1802337505175844070920048021977467020107e-24), SC_(0.27278913766680576e21) }, + { SC_(0.28e2), SC_(0.17e2), SC_(0.4096221602672372888454654595403334136607e-26), SC_(0.300068051433486336e22) }, + { SC_(0.28e2), SC_(0.18e2), SC_(0.9102714672605273085454787989785186970237e-28), SC_(0.300068051433486336e23) }, + { SC_(0.28e2), SC_(0.19e2), SC_(0.197885101578375501857712782386634499353e-29), SC_(0.2700612462901377024e24) }, + { SC_(0.28e2), SC_(0.2e2), SC_(0.4210321310178202167185378348651797858574e-31), SC_(0.21604899703211016192e25) }, + { SC_(0.28e2), SC_(0.21e2), SC_(0.877150272953792118163620489302457887203e-33), SC_(0.151234297922477113344e26) }, + { SC_(0.28e2), SC_(0.22e2), SC_(0.1790102597864881873803307121025424259598e-34), SC_(0.907405787534862680064e26) }, + { SC_(0.28e2), SC_(0.23e2), SC_(0.3580205195729763747606614242050848519196e-36), SC_(0.453702893767431340032e27) }, + { SC_(0.28e2), SC_(0.24e2), SC_(0.7020010187705419112954145572648722586658e-38), SC_(0.1814811575069725360128e28) }, + { SC_(0.28e2), SC_(0.25e2), SC_(0.1350001959174119060183489533201677420511e-39), SC_(0.5444434725209176080384e28) }, + { SC_(0.28e2), SC_(0.26e2), SC_(0.2547173507875696339968848175852221548134e-41), SC_(0.10888869450418352160768e29) }, + { SC_(0.28e2), SC_(0.27e2), SC_(0.4716987977547585814757126251578188052101e-43), SC_(0.10888869450418352160768e29) }, + { SC_(0.29e2), SC_(0.1e2), SC_(0.5829352965432384027291107856487805083366e-15), SC_(0.47621141568e14) }, + { SC_(0.29e2), SC_(0.11e2), SC_(0.1494705888572406160843873809355847457273e-16), SC_(0.857180548224e15) }, + { SC_(0.29e2), SC_(0.12e2), SC_(0.3736764721431015402109684523389618643184e-18), SC_(0.14572069319808e17) }, + { SC_(0.29e2), SC_(0.13e2), SC_(0.9114060296173208297828498837535655227277e-20), SC_(0.233153109116928e18) }, + { SC_(0.29e2), SC_(0.14e2), SC_(0.2170014356231716261387737818460870292209e-21), SC_(0.349729663675392e19) }, + { SC_(0.29e2), SC_(0.15e2), SC_(0.50465450144923633985761344615369076563e-23), SC_(0.4896215291455488e20) }, + { SC_(0.29e2), SC_(0.16e2), SC_(0.114694204874826440876730328671293355825e-24), SC_(0.63650798788921344e21) }, + { SC_(0.29e2), SC_(0.17e2), SC_(0.2548760108329476463927340637139852351666e-26), SC_(0.763809585467056128e22) }, + { SC_(0.29e2), SC_(0.18e2), SC_(0.5540782844194514052015957906825765981884e-28), SC_(0.8401905440137617408e23) }, + { SC_(0.29e2), SC_(0.19e2), SC_(0.1178889966849896606811905937622503400401e-29), SC_(0.8401905440137617408e24) }, + { SC_(0.29e2), SC_(0.2e2), SC_(0.2456020764270617930858137370046882084168e-31), SC_(0.75617148961238556672e25) }, + { SC_(0.29e2), SC_(0.21e2), SC_(0.5012287274021669246649259938871187926874e-33), SC_(0.604937191689908453376e26) }, + { SC_(0.29e2), SC_(0.22e2), SC_(0.1002457454804333849329851987774237585375e-34), SC_(0.4234560341829359173632e27) }, + { SC_(0.29e2), SC_(0.23e2), SC_(0.1965602852557517351627160760341642324264e-36), SC_(0.25407362050976155041792e28) }, + { SC_(0.29e2), SC_(0.24e2), SC_(0.3780005485687533368513770692964696777431e-38), SC_(0.12703681025488077520896e29) }, + { SC_(0.29e2), SC_(0.25e2), SC_(0.7132085822051949751912774892386220334776e-40), SC_(0.50814724101952310083584e29) }, + { SC_(0.29e2), SC_(0.26e2), SC_(0.1320756633713324028131995350441892654588e-41), SC_(0.152444172305856930250752e30) }, + { SC_(0.29e2), SC_(0.27e2), SC_(0.2401375697660589142058173364439804826524e-43), SC_(0.304888344611713860501504e30) }, + { SC_(0.29e2), SC_(0.28e2), SC_(0.4288170888679623467961023865071080047364e-45), SC_(0.304888344611713860501504e30) } + } }; +#undef SC_ + diff --git a/test/tgamma_ratio_data.ipp b/test/tgamma_ratio_data.ipp new file mode 100644 index 000000000..a5f86c315 --- /dev/null +++ b/test/tgamma_ratio_data.ipp @@ -0,0 +1,410 @@ +// (C) Copyright John Maddock 2006-7. +// 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) + +#define SC_(x) static_cast(BOOST_JOIN(x, L)) + static const boost::array, 400> tgamma_ratio_data = { { + { SC_(6.68193912506103515625), SC_(6.68193912506103515625), SC_(1) }, + { SC_(6.68193912506103515625), SC_(8.095367431640625), SC_(0.06544775114440229981894259276990196062764) }, + { SC_(6.68193912506103515625), SC_(8.50289630889892578125), SC_(0.02833082889188931171456297874515804727699) }, + { SC_(6.68193912506103515625), SC_(11.04233455657958984375), SC_(0.9977723749373989179839784596883914860086e-4) }, + { SC_(6.68193912506103515625), SC_(12.6096343994140625), SC_(0.2224848351207471598094573384811702572789e-5) }, + { SC_(6.68193912506103515625), SC_(15.36791515350341796875), SC_(0.1707401795086213382244662934709192347257e-8) }, + { SC_(6.68193912506103515625), SC_(16.792018890380859375), SC_(0.3420632447590243481697274715444998893408e-10) }, + { SC_(6.68193912506103515625), SC_(28.25031280517578125), SC_(0.1600680453581408921824330663433115251581e-25) }, + { SC_(6.68193912506103515625), SC_(28.2665882110595703125), SC_(0.1516395254249637529260062571562632237052e-25) }, + { SC_(6.68193912506103515625), SC_(32.353244781494140625), SC_(0.1435206894862598198928388181910160004221e-31) }, + { SC_(6.68193912506103515625), SC_(41.1067352294921875), SC_(0.3302103464979977987816033282184687805192e-45) }, + { SC_(6.68193912506103515625), SC_(42.080410003662109375), SC_(0.886133585915892288509502556440259057933e-47) }, + { SC_(6.68193912506103515625), SC_(45.4780120849609375), SC_(0.2445790945282646979483178649067515339092e-52) }, + { SC_(6.68193912506103515625), SC_(45.842041015625), SC_(0.6109956711604874877647044786673395753644e-53) }, + { SC_(6.68193912506103515625), SC_(47.9603271484375), SC_(0.1802664125152357631935884543327977871009e-56) }, + { SC_(6.68193912506103515625), SC_(48.314647674560546875), SC_(0.4585435903890089500439815393256424830955e-57) }, + { SC_(6.68193912506103515625), SC_(48.4493560791015625), SC_(0.2722991298511892486629788976421558265475e-57) }, + { SC_(6.68193912506103515625), SC_(48.50565338134765625), SC_(0.2189817526247552395152959212887295282992e-57) }, + { SC_(6.68193912506103515625), SC_(49.65830230712890625), SC_(0.2491707234921651072352951178714074480602e-59) }, + { SC_(6.68193912506103515625), SC_(49.830142974853515625), SC_(0.1275499540450052064566893368701946482382e-59) }, + { SC_(8.095367431640625), SC_(6.68193912506103515625), SC_(15.27936380569631379215981282038521263139) }, + { SC_(8.095367431640625), SC_(8.095367431640625), SC_(1) }, + { SC_(8.095367431640625), SC_(8.50289630889892578125), SC_(0.4328770415561089543785983031850532551013) }, + { SC_(8.095367431640625), SC_(11.04233455657958984375), SC_(0.001524532711194214483439552686740177905313) }, + { SC_(8.095367431640625), SC_(12.6096343994140625), SC_(0.3399426737060256217390151315994565352827e-4) }, + { SC_(8.095367431640625), SC_(15.36791515350341796875), SC_(0.2608801318962120302585268540253614111335e-7) }, + { SC_(8.095367431640625), SC_(16.792018890380859375), SC_(0.5226508761230075927654898387420647235484e-9) }, + { SC_(8.095367431640625), SC_(28.25031280517578125), SC_(0.2445737898693733797769611259209203584443e-24) }, + { SC_(8.095367431640625), SC_(28.2665882110595703125), SC_(0.2316955476291157102884553711299427658036e-24) }, + { SC_(8.095367431640625), SC_(32.353244781494140625), SC_(0.2192904828304937772446028970624034599691e-30) }, + { SC_(8.095367431640625), SC_(41.1067352294921875), SC_(0.5045404016547946090253729607520301559963e-44) }, + { SC_(8.095367431640625), SC_(42.080410003662109375), SC_(0.1353955743965516944489997901950715452755e-45) }, + { SC_(8.095367431640625), SC_(45.4780120849609375), SC_(0.3737012964565144972084775063603050427547e-51) }, + { SC_(8.095367431640625), SC_(45.842041015625), SC_(0.9335625143366679579486394992496451351018e-52) }, + { SC_(8.095367431640625), SC_(47.9603271484375), SC_(0.2754356098768014320479195593046571558735e-55) }, + { SC_(8.095367431640625), SC_(48.314647674560546875), SC_(0.7006254338323859447417411411637098417379e-56) }, + { SC_(8.095367431640625), SC_(48.4493560791015625), SC_(0.4160557468970861681934763285488463143071e-56) }, + { SC_(8.095367431640625), SC_(48.50565338134765625), SC_(0.3345901865162628968218063609001765927876e-56) }, + { SC_(8.095367431640625), SC_(49.65830230712890625), SC_(0.3807170133965351751944945486685393449817e-58) }, + { SC_(8.095367431640625), SC_(49.830142974853515625), SC_(0.1948882151253480684761778785767440869907e-58) }, + { SC_(8.50289630889892578125), SC_(6.68193912506103515625), SC_(35.29723764228744086812043153239973434675) }, + { SC_(8.50289630889892578125), SC_(8.095367431640625), SC_(2.310124825297257793166027233518450467265) }, + { SC_(8.50289630889892578125), SC_(8.50289630889892578125), SC_(1) }, + { SC_(8.50289630889892578125), SC_(11.04233455657958984375), SC_(0.003521860863107489503907274588697768037321) }, + { SC_(8.50289630889892578125), SC_(12.6096343994140625), SC_(0.7853100097062151498541705753484156861086e-4) }, + { SC_(8.50289630889892578125), SC_(15.36791515350341796875), SC_(0.6026656691202623868522041531664940403622e-7) }, + { SC_(8.50289630889892578125), SC_(16.792018890380859375), SC_(0.1207388763895121639743664392369700074862e-8) }, + { SC_(8.50289630889892578125), SC_(28.25031280517578125), SC_(0.564995983594274416859732458938454292755e-24) }, + { SC_(8.50289630889892578125), SC_(28.2665882110595703125), SC_(0.5352456364888634023094937531252471776606e-24) }, + { SC_(8.50289630889892578125), SC_(32.353244781494140625), SC_(0.5065883883381457468092824152960142285326e-30) }, + { SC_(8.50289630889892578125), SC_(41.1067352294921875), SC_(0.1165551307228190672944688371949229156942e-43) }, + { SC_(8.50289630889892578125), SC_(42.080410003662109375), SC_(0.3127806776488558533920147278994474194652e-45) }, + { SC_(8.50289630889892578125), SC_(45.4780120849609375), SC_(0.8632966421899642956616439002226661768323e-51) }, + { SC_(8.50289630889892578125), SC_(45.842041015625), SC_(0.2156645940336063790233453759917649217215e-51) }, + { SC_(8.50289630889892578125), SC_(47.9603271484375), SC_(0.636290640147289561320766371462864805633e-55) }, + { SC_(8.50289630889892578125), SC_(48.314647674560546875), SC_(0.1618532207930856030225979904296120628837e-55) }, + { SC_(8.50289630889892578125), SC_(48.4493560791015625), SC_(0.9611407096145512904645460867653415148676e-56) }, + { SC_(8.50289630889892578125), SC_(48.50565338134765625), SC_(0.7729450961720587246333022260051616437986e-56) }, + { SC_(8.50289630889892578125), SC_(49.65830230712890625), SC_(0.8795038240603645764255409327191808130351e-58) }, + { SC_(8.50289630889892578125), SC_(49.830142974853515625), SC_(0.4502161039189391004948453748106238664575e-58) }, + { SC_(11.04233455657958984375), SC_(6.68193912506103515625), SC_(10022.32598454873883529802018481680750483) }, + { SC_(11.04233455657958984375), SC_(8.095367431640625), SC_(655.9386969248226283606008285879854206903) }, + { SC_(11.04233455657958984375), SC_(8.50289630889892578125), SC_(283.9408025669864016979029738036125553433) }, + { SC_(11.04233455657958984375), SC_(11.04233455657958984375), SC_(1) }, + { SC_(11.04233455657958984375), SC_(12.6096343994140625), SC_(0.02229815544198706106548155624884338219975) }, + { SC_(11.04233455657958984375), SC_(15.36791515350341796875), SC_(0.1711213737695771757346056723032012217735e-4) }, + { SC_(11.04233455657958984375), SC_(16.792018890380859375), SC_(0.3428269346307424929677451108232473785575e-6) }, + { SC_(11.04233455657958984375), SC_(28.25031280517578125), SC_(0.1604254130288821602431198288556314166807e-21) }, + { SC_(11.04233455657958984375), SC_(28.2665882110595703125), SC_(0.1519780755951253359775307669534328048275e-21) }, + { SC_(11.04233455657958984375), SC_(32.353244781494140625), SC_(0.1438411135558492779877017607560708527594e-27) }, + { SC_(11.04233455657958984375), SC_(41.1067352294921875), SC_(0.3309475736073725983644333568012576866264e-41) }, + { SC_(11.04233455657958984375), SC_(42.080410003662109375), SC_(0.8881119663906199633527956939754857810864e-43) }, + { SC_(11.04233455657958984375), SC_(45.4780120849609375), SC_(0.2451251414368029552147021978423765349146e-48) }, + { SC_(11.04233455657958984375), SC_(45.842041015625), SC_(0.6123597791518550235695817819538449632323e-49) }, + { SC_(11.04233455657958984375), SC_(47.9603271484375), SC_(0.180668875029282936658813531008123567654e-52) }, + { SC_(11.04233455657958984375), SC_(48.314647674560546875), SC_(0.4595673341004037743757791338005707049264e-53) }, + { SC_(11.04233455657958984375), SC_(48.4493560791015625), SC_(0.2729070644677585167543616613362210307431e-53) }, + { SC_(11.04233455657958984375), SC_(48.50565338134765625), SC_(0.2194706509473108430521121242061760144749e-53) }, + { SC_(11.04233455657958984375), SC_(49.65830230712890625), SC_(0.2497270216644335227261900379388968235955e-55) }, + { SC_(11.04233455657958984375), SC_(49.830142974853515625), SC_(0.127834721875325319931113426696772699846e-55) }, + { SC_(12.6096343994140625), SC_(6.68193912506103515625), SC_(449468.8365871225090880637003804075021215) }, + { SC_(12.6096343994140625), SC_(8.095367431640625), SC_(29416.72456411801748141580864552978721433) }, + { SC_(12.6096343994140625), SC_(8.50289630889892578125), SC_(12733.82470158632612073644637648016869683) }, + { SC_(12.6096343994140625), SC_(11.04233455657958984375), SC_(44.84675885418828848059201630601876129123) }, + { SC_(12.6096343994140625), SC_(12.6096343994140625), SC_(1) }, + { SC_(12.6096343994140625), SC_(15.36791515350341796875), SC_(0.0007674238984241648745176133088803894583239) }, + { SC_(12.6096343994140625), SC_(16.792018890380859375), SC_(0.1537467686610548047972289678594381553999e-4) }, + { SC_(12.6096343994140625), SC_(28.25031280517578125), SC_(0.7194559812189834234873335855778439262532e-20) }, + { SC_(12.6096343994140625), SC_(28.2665882110595703125), SC_(0.6815724107338184201427157411756637985805e-20) }, + { SC_(12.6096343994140625), SC_(32.353244781494140625), SC_(0.6450807732957086655802565782661071132734e-26) }, + { SC_(12.6096343994140625), SC_(41.1067352294921875), SC_(0.1484192602694856741116728422617234274272e-39) }, + { SC_(12.6096343994140625), SC_(42.080410003662109375), SC_(0.3982894319223910751678842349927917812786e-41) }, + { SC_(12.6096343994140625), SC_(45.4780120849609375), SC_(0.1099306810711509945366434998730348639623e-46) }, + { SC_(12.6096343994140625), SC_(45.842041015625), SC_(0.274623513476272391811856859108919204364e-47) }, + { SC_(12.6096343994140625), SC_(47.9603271484375), SC_(0.810241347089573191684429945851439473934e-51) }, + { SC_(12.6096343994140625), SC_(48.314647674560546875), SC_(0.2061010540966299032852947974148368428554e-51) }, + { SC_(12.6096343994140625), SC_(48.4493560791015625), SC_(0.1223899730978998331529903787096767961407e-51) }, + { SC_(12.6096343994140625), SC_(48.50565338134765625), SC_(0.9842547358605779833538923712423232570025e-52) }, + { SC_(12.6096343994140625), SC_(49.65830230712890625), SC_(0.111994475199595046236871390285568219201e-53) }, + { SC_(12.6096343994140625), SC_(49.830142974853515625), SC_(0.5732972945134943081299851732612679934763e-54) }, + { SC_(15.36791515350341796875), SC_(6.68193912506103515625), SC_(585685222.3524258951890582394256083001576) }, + { SC_(15.36791515350341796875), SC_(8.095367431640625), SC_(38331780.68147549731194464361117084556401) }, + { SC_(15.36791515350341796875), SC_(8.50289630889892578125), SC_(16592947.81897472326464314439304676524505) }, + { SC_(15.36791515350341796875), SC_(11.04233455657958984375), SC_(58438.05352723185438142316878015214017381) }, + { SC_(15.36791515350341796875), SC_(12.6096343994140625), SC_(1303.060801277376142822908410792545798171) }, + { SC_(15.36791515350341796875), SC_(15.36791515350341796875), SC_(1) }, + { SC_(15.36791515350341796875), SC_(16.792018890380859375), SC_(0.02003413875652814571066652179078989954041) }, + { SC_(15.36791515350341796875), SC_(28.25031280517578125), SC_(0.9374948873710094212165195726862414559537e-17) }, + { SC_(15.36791515350341796875), SC_(28.2665882110595703125), SC_(0.8881302916593623546835793196764015323998e-17) }, + { SC_(15.36791515350341796875), SC_(32.353244781494140625), SC_(0.8405794693393355603396329554611706213959e-23) }, + { SC_(15.36791515350341796875), SC_(41.1067352294921875), SC_(0.1933993202117514403001606514962407598318e-36) }, + { SC_(15.36791515350341796875), SC_(42.080410003662109375), SC_(0.5189953463011018705972746440289999179347e-38) }, + { SC_(15.36791515350341796875), SC_(45.4780120849609375), SC_(0.1432463613615417012262764752176405209169e-43) }, + { SC_(15.36791515350341796875), SC_(45.842041015625), SC_(0.3578511355199998082650674837507222484761e-44) }, + { SC_(15.36791515350341796875), SC_(47.9603271484375), SC_(0.1055793738966599881515782984097509185645e-47) }, + { SC_(15.36791515350341796875), SC_(48.314647674560546875), SC_(0.2685622046952664085925475589049444464689e-48) }, + { SC_(15.36791515350341796875), SC_(48.4493560791015625), SC_(0.159481576413265866664196980708080144396e-48) }, + { SC_(15.36791515350341796875), SC_(48.50565338134765625), SC_(0.1282543764771536953500275331153719160188e-48) }, + { SC_(15.36791515350341796875), SC_(49.65830230712890625), SC_(0.1459356105922235513733892190510350897202e-50) }, + { SC_(15.36791515350341796875), SC_(49.830142974853515625), SC_(0.7470412319589057907037612756557718622482e-51) }, + { SC_(16.792018890380859375), SC_(6.68193912506103515625), SC_(29234359882.90635823391118605921737816835) }, + { SC_(16.792018890380859375), SC_(8.095367431640625), SC_(1913323110.482353290836130472488425746906) }, + { SC_(16.792018890380859375), SC_(8.50289630889892578125), SC_(828233647.6065332896125053819194270835445) }, + { SC_(16.792018890380859375), SC_(11.04233455657958984375), SC_(2916923.66901420963969346588479017097418) }, + { SC_(16.792018890380859375), SC_(12.6096343994140625), SC_(65042.01738409006356831104197838388691427) }, + { SC_(16.792018890380859375), SC_(15.36791515350341796875), SC_(49.9147985422706989087560343640323085763) }, + { SC_(16.792018890380859375), SC_(16.792018890380859375), SC_(1) }, + { SC_(16.792018890380859375), SC_(28.25031280517578125), SC_(0.4679486843753269411418228862517177379389e-15) }, + { SC_(16.792018890380859375), SC_(28.2665882110595703125), SC_(0.4433084458746519072299497981474666747637e-15) }, + { SC_(16.792018890380859375), SC_(32.353244781494140625), SC_(0.419573548708417442755623486522184770071e-21) }, + { SC_(16.792018890380859375), SC_(41.1067352294921875), SC_(0.9653488106581674908496338905387581380105e-35) }, + { SC_(16.792018890380859375), SC_(42.080410003662109375), SC_(0.2590554815499551621737548550309621496934e-36) }, + { SC_(16.792018890380859375), SC_(45.4780120849609375), SC_(0.7150113269274663476945386520712712949033e-42) }, + { SC_(16.792018890380859375), SC_(45.842041015625), SC_(0.1786206733760360075331184170337082524712e-42) }, + { SC_(16.792018890380859375), SC_(47.9603271484375), SC_(0.5269973178270857056559108922900691907527e-46) }, + { SC_(16.792018890380859375), SC_(48.314647674560546875), SC_(0.1340522834343228878166099251049916502985e-46) }, + { SC_(16.792018890380859375), SC_(48.4493560791015625), SC_(0.796049075787191615953018903526662612784e-47) }, + { SC_(16.792018890380859375), SC_(48.50565338134765625), SC_(0.6401791364021668688723017597840705133371e-47) }, + { SC_(16.792018890380859375), SC_(49.65830230712890625), SC_(0.7284346602854104489166470773879541649632e-49) }, + { SC_(16.792018890380859375), SC_(49.830142974853515625), SC_(0.372884125959984978120224998171471298247e-49) }, + { SC_(28.25031280517578125), SC_(6.68193912506103515625), SC_(62473431081298641804777214.01857405903626) }, + { SC_(28.25031280517578125), SC_(8.095367431640625), SC_(4088745570545801391196983.124699172800273) }, + { SC_(28.25031280517578125), SC_(8.50289630889892578125), SC_(1769924086253511285151384.459061053897955) }, + { SC_(28.25031280517578125), SC_(11.04233455657958984375), SC_(6233426370047525953488.420164061292416669) }, + { SC_(28.25031280517578125), SC_(12.6096343994140625), SC_(138993910135500892742.7864695002243476543) }, + { SC_(28.25031280517578125), SC_(15.36791515350341796875), SC_(106667248373404137.7424862606421119365799) }, + { SC_(28.25031280517578125), SC_(16.792018890380859375), SC_(2136986454689829.645294520260977067722367) }, + { SC_(28.25031280517578125), SC_(28.25031280517578125), SC_(1) }, + { SC_(28.25031280517578125), SC_(28.2665882110595703125), SC_(0.9473441440837306156894435405765205616538) }, + { SC_(28.25031280517578125), SC_(32.353244781494140625), SC_(0.8966229903360315432265785471347575366187e-6) }, + { SC_(28.25031280517578125), SC_(41.1067352294921875), SC_(0.2062937332427440980050647255152934022249e-19) }, + { SC_(28.25031280517578125), SC_(42.080410003662109375), SC_(0.553598055085405256821894026839771351121e-21) }, + { SC_(28.25031280517578125), SC_(45.4780120849609375), SC_(0.1527969520593797035600021603243532845096e-26) }, + { SC_(28.25031280517578125), SC_(45.842041015625), SC_(0.3817099595321652320717752915013554974954e-27) }, + { SC_(28.25031280517578125), SC_(47.9603271484375), SC_(0.1126186129854353240111534853152770388436e-30) }, + { SC_(28.25031280517578125), SC_(48.314647674560546875), SC_(0.2864679139193898490586764981708771633065e-31) }, + { SC_(28.25031280517578125), SC_(48.4493560791015625), SC_(0.1701146092225586121581280766773655435017e-31) }, + { SC_(28.25031280517578125), SC_(48.50565338134765625), SC_(0.1368054143066463441616962191169102146762e-31) }, + { SC_(28.25031280517578125), SC_(49.65830230712890625), SC_(0.1556655002156509726489852834384209795324e-33) }, + { SC_(28.25031280517578125), SC_(49.830142974853515625), SC_(0.7968483263453441686333408562785570804228e-34) }, + { SC_(28.2665882110595703125), SC_(6.68193912506103515625), SC_(65945867160790676450552857.01051299229165) }, + { SC_(28.2665882110595703125), SC_(8.095367431640625), SC_(4316008702941240037030002.970305100839337) }, + { SC_(28.2665882110595703125), SC_(8.50289630889892578125), SC_(1868301078659623070981861.405928035183232) }, + { SC_(28.2665882110595703125), SC_(11.04233455657958984375), SC_(6579896449432833748117.437551199783201593) }, + { SC_(28.2665882110595703125), SC_(12.6096343994140625), SC_(146719553821632082804.7687454166146662184) }, + { SC_(28.2665882110595703125), SC_(15.36791515350341796875), SC_(112596091968850970.8439271882044997354661) }, + { SC_(28.2665882110595703125), SC_(16.792018890380859375), SC_(2255765729946764.722783709551185452202524) }, + { SC_(28.2665882110595703125), SC_(28.25031280517578125), SC_(1.055582605587537593437732203893348754805) }, + { SC_(28.2665882110595703125), SC_(28.2665882110595703125), SC_(1) }, + { SC_(28.2665882110595703125), SC_(32.353244781494140625), SC_(0.946459632368597715724256879722277889397e-6) }, + { SC_(28.2665882110595703125), SC_(41.1067352294921875), SC_(0.2177600764527562358912888887116281649999e-19) }, + { SC_(28.2665882110595703125), SC_(42.080410003662109375), SC_(0.5843684774352452474934370286317541360408e-21) }, + { SC_(28.2665882110595703125), SC_(45.4780120849609375), SC_(0.1612898047806740956655833448766443166678e-26) }, + { SC_(28.2665882110595703125), SC_(45.842041015625), SC_(0.4029263936616765079754966175414281085225e-27) }, + { SC_(28.2665882110595703125), SC_(47.9603271484375), SC_(0.1188782489328203152284704530721443158468e-30) }, + { SC_(28.2665882110595703125), SC_(48.314647674560546875), SC_(0.3023905469922559656212402750407249939149e-31) }, + { SC_(28.2665882110595703125), SC_(48.4493560791015625), SC_(0.1795700224516541726982838382009867434233e-31) }, + { SC_(28.2665882110595703125), SC_(48.50565338134765625), SC_(0.1444094156922923406749087286540824516294e-31) }, + { SC_(28.2665882110595703125), SC_(49.65830230712890625), SC_(0.1643177943177242488575839919764428781058e-33) }, + { SC_(28.2665882110595703125), SC_(49.830142974853515625), SC_(0.8411392325816868751433694045787429766788e-34) }, + { SC_(32.353244781494140625), SC_(6.68193912506103515625), SC_(69676365378368432444795020485251.09307195) }, + { SC_(32.353244781494140625), SC_(8.095367431640625), SC_(4560161421929905356568615578557.279365205) }, + { SC_(32.353244781494140625), SC_(8.50289630889892578125), SC_(1973989185343316540308533930865.349847103) }, + { SC_(32.353244781494140625), SC_(11.04233455657958984375), SC_(6952115256058062860184065801.537866840414) }, + { SC_(32.353244781494140625), SC_(12.6096343994140625), SC_(155019346630192364869728602.8869080120199) }, + { SC_(32.353244781494140625), SC_(15.36791515350341796875), SC_(118965551322109150849363.3326200253802755) }, + { SC_(32.353244781494140625), SC_(16.792018890380859375), SC_(2383372362434005124341.330168450523485149) }, + { SC_(32.353244781494140625), SC_(28.25031280517578125), SC_(1115295.961377507593179097024286242566993) }, + { SC_(32.353244781494140625), SC_(28.2665882110595703125), SC_(1056569.097931216409235840463512256440074) }, + { SC_(32.353244781494140625), SC_(32.353244781494140625), SC_(1) }, + { SC_(32.353244781494140625), SC_(41.1067352294921875), SC_(0.230078567543121375786035848816303846874e-13) }, + { SC_(32.353244781494140625), SC_(42.080410003662109375), SC_(0.6174256750631954623455466167532501015427e-15) }, + { SC_(32.353244781494140625), SC_(45.4780120849609375), SC_(0.1704138235426188251628860349588581827493e-20) }, + { SC_(32.353244781494140625), SC_(45.842041015625), SC_(0.4257195762837957410297568654413945699168e-21) }, + { SC_(32.353244781494140625), SC_(47.9603271484375), SC_(0.1256030842385925502316656928127624131602e-24) }, + { SC_(32.353244781494140625), SC_(48.314647674560546875), SC_(0.3194965074585349909462871592988276775566e-25) }, + { SC_(32.353244781494140625), SC_(48.4493560791015625), SC_(0.1897281366372325269179364605155767999302e-25) }, + { SC_(32.353244781494140625), SC_(48.50565338134765625), SC_(0.1525785260707793657877269919853594083335e-25) }, + { SC_(32.353244781494140625), SC_(49.65830230712890625), SC_(0.1736131037163250671085653648527909187315e-27) }, + { SC_(32.353244781494140625), SC_(49.830142974853515625), SC_(0.8887217202033885362390904748570386562007e-28) }, + { SC_(41.1067352294921875), SC_(6.68193912506103515625), SC_(0.3028372704263715163504835952465575625009e46) }, + { SC_(41.1067352294921875), SC_(8.095367431640625), SC_(0.1982001831211522515605797569074004688054e45) }, + { SC_(41.1067352294921875), SC_(8.50289630889892578125), SC_(0.8579630890536342775918208432530877707955e44) }, + { SC_(41.1067352294921875), SC_(11.04233455657958984375), SC_(302162662532880029697903971434181885302200.0) }, + { SC_(41.1067352294921875), SC_(12.6096343994140625), SC_(6737670017922838675237007504871318596192.0) }, + { SC_(41.1067352294921875), SC_(15.36791515350341796875), SC_(5170648991449957677068866653769066986.814) }, + { SC_(41.1067352294921875), SC_(16.792018890380859375), SC_(103589499356010765818921585961423599.4406) }, + { SC_(41.1067352294921875), SC_(28.25031280517578125), SC_(48474569938744015282.50089093176414961015) }, + { SC_(41.1067352294921875), SC_(28.2665882110595703125), SC_(45922099968446387179.17575255265451239527) }, + { SC_(41.1067352294921875), SC_(32.353244781494140625), SC_(43463413853729.76037096250807199942469819) }, + { SC_(41.1067352294921875), SC_(41.1067352294921875), SC_(1) }, + { SC_(41.1067352294921875), SC_(42.080410003662109375), SC_(0.02683542763919013909823206518554211904957) }, + { SC_(41.1067352294921875), SC_(45.4780120849609375), SC_(0.7406766539029317836568766778650968264162e-7) }, + { SC_(41.1067352294921875), SC_(45.842041015625), SC_(0.1850322612965709134600999956420699350719e-7) }, + { SC_(41.1067352294921875), SC_(47.9603271484375), SC_(0.5459138831566829558309567482447033388885e-11) }, + { SC_(41.1067352294921875), SC_(48.314647674560546875), SC_(0.1388640892849156343838425312044005814203e-11) }, + { SC_(41.1067352294921875), SC_(48.4493560791015625), SC_(0.8246232522361025121401647179764922571392e-12) }, + { SC_(41.1067352294921875), SC_(48.50565338134765625), SC_(0.6631583623806379307271172259961006876675e-12) }, + { SC_(41.1067352294921875), SC_(49.65830230712890625), SC_(0.7545818177253144666989552303444049809065e-14) }, + { SC_(41.1067352294921875), SC_(49.830142974853515625), SC_(0.3862687992599850117573354058793833486253e-14) }, + { SC_(42.080410003662109375), SC_(6.68193912506103515625), SC_(0.1128498023203146467978663132245598816091e48) }, + { SC_(42.080410003662109375), SC_(8.095367431640625), SC_(0.7385765778954946234446180905963261307482e46) }, + { SC_(42.080410003662109375), SC_(8.50289630889892578125), SC_(0.3197128440020367682901023819522755999032e46) }, + { SC_(42.080410003662109375), SC_(11.04233455657958984375), SC_(0.1125984152723563361522473811515367817721e44) }, + { SC_(42.080410003662109375), SC_(12.6096343994140625), SC_(251073696626441144561432672710834135268300.0) }, + { SC_(42.080410003662109375), SC_(15.36791515350341796875), SC_(192679955056829556051143882191265710675.0) }, + { SC_(42.080410003662109375), SC_(16.792018890380859375), SC_(3860176955210130283165178693263746156.27) }, + { SC_(42.080410003662109375), SC_(28.25031280517578125), SC_(1806364727646535818340.866372759728419801) }, + { SC_(42.080410003662109375), SC_(28.2665882110595703125), SC_(1711249046815348640197.005994210828789221) }, + { SC_(42.080410003662109375), SC_(32.353244781494140625), SC_(1619628143739968.135644008131561755350781) }, + { SC_(42.080410003662109375), SC_(41.1067352294921875), SC_(37.26417232642165549644699320646567792716) }, + { SC_(42.080410003662109375), SC_(42.080410003662109375), SC_(1) }, + { SC_(42.080410003662109375), SC_(45.4780120849609375), SC_(0.2760070246919622084502054144846970360933e-5) }, + { SC_(42.080410003662109375), SC_(45.842041015625), SC_(0.6895074070902898582052114538188684005049e-6) }, + { SC_(42.080410003662109375), SC_(47.9603271484375), SC_(0.2034302901733665011405155578658520655719e-9) }, + { SC_(42.080410003662109375), SC_(48.314647674560546875), SC_(0.517465535306469911855720960451549000057e-10) }, + { SC_(42.080410003662109375), SC_(48.4493560791015625), SC_(0.3072890297570039577779595302220767564036e-10) }, + { SC_(42.080410003662109375), SC_(48.50565338134765625), SC_(0.2471204749545967182493992970099398863642e-10) }, + { SC_(42.080410003662109375), SC_(49.65830230712890625), SC_(0.2811886689010061319057349807717059302635e-12) }, + { SC_(42.080410003662109375), SC_(49.830142974853515625), SC_(0.1439398709994405511661643560149446774768e-12) }, + { SC_(45.4780120849609375), SC_(6.68193912506103515625), SC_(0.4088656890028821935919901994836518337329e53) }, + { SC_(45.4780120849609375), SC_(8.095367431640625), SC_(0.2675933986534521789761510399776556126331e52) }, + { SC_(45.4780120849609375), SC_(8.50289630889892578125), SC_(0.1158350387490508487939853781677669230181e52) }, + { SC_(45.4780120849609375), SC_(11.04233455657958984375), SC_(0.4079548895468217136146832577597417438435e49) }, + { SC_(45.4780120849609375), SC_(12.6096343994140625), SC_(0.9096641540433693005638689695820108869159e47) }, + { SC_(45.4780120849609375), SC_(15.36791515350341796875), SC_(0.6980980113526825114452345252512805269161e44) }, + { SC_(45.4780120849609375), SC_(16.792018890380859375), SC_(1398579242509600215742913467593142392453000.0) }, + { SC_(45.4780120849609375), SC_(28.25031280517578125), SC_(654463316527008747358588396.4182679727482) }, + { SC_(45.4780120849609375), SC_(28.2665882110595703125), SC_(620001990429478771085895798.1037439457856) }, + { SC_(45.4780120849609375), SC_(32.353244781494140625), SC_(586806855929683317050.5676281369409460724) }, + { SC_(45.4780120849609375), SC_(41.1067352294921875), SC_(13501168.08367843372640089979813166357169) }, + { SC_(45.4780120849609375), SC_(42.080410003662109375), SC_(362309.6191540960051341986274244167826597) }, + { SC_(45.4780120849609375), SC_(45.4780120849609375), SC_(1) }, + { SC_(45.4780120849609375), SC_(45.842041015625), SC_(0.2498151660668111540689474747194753397522) }, + { SC_(45.4780120849609375), SC_(47.9603271484375), SC_(0.7370475095711965601458985817834731176697e-4) }, + { SC_(45.4780120849609375), SC_(48.314647674560546875), SC_(0.1874827410222575337847664727987528665907e-4) }, + { SC_(45.4780120849609375), SC_(48.4493560791015625), SC_(0.1113337713414917784311428006709225517837e-4) }, + { SC_(45.4780120849609375), SC_(48.50565338134765625), SC_(0.8953412516597925726495934549425902859791e-5) }, + { SC_(45.4780120849609375), SC_(49.65830230712890625), SC_(0.1018773595399707309340785036193597106951e-6) }, + { SC_(45.4780120849609375), SC_(49.830142974853515625), SC_(0.5215079984289701440670869280863151951865e-7) }, + { SC_(45.842041015625), SC_(6.68193912506103515625), SC_(0.1636672806700351389166966484348185959914e54) }, + { SC_(45.842041015625), SC_(8.095367431640625), SC_(0.1071165545577350466693581364316974639417e53) }, + { SC_(45.842041015625), SC_(8.50289630889892578125), SC_(0.4636829723863588581596877067885310518951e52) }, + { SC_(45.842041015625), SC_(11.04233455657958984375), SC_(0.1633026913336868030298032554541971522606e50) }, + { SC_(45.842041015625), SC_(12.6096343994140625), SC_(0.3641348795453381662072737343405240900951e48) }, + { SC_(45.842041015625), SC_(15.36791515350341796875), SC_(0.2794458088128971087287924855975453115427e45) }, + { SC_(45.842041015625), SC_(16.792018890380859375), SC_(5598456108687816423912115950356573721138000.0) }, + { SC_(45.842041015625), SC_(28.25031280517578125), SC_(2619790170593476068793811656.868928241947) }, + { SC_(45.842041015625), SC_(28.2665882110595703125), SC_(2481842876839847202336902693.583137646128) }, + { SC_(45.842041015625), SC_(32.353244781494140625), SC_(2348964096810464721249.700341060019563492) }, + { SC_(45.842041015625), SC_(41.1067352294921875), SC_(54044629.46043736056008882051200656905718) }, + { SC_(45.842041015625), SC_(42.080410003662109375), SC_(1450310.743172410399712309717648498747175) }, + { SC_(45.842041015625), SC_(45.4780120849609375), SC_(4.002959531018055381158848354630788302898) }, + { SC_(45.842041015625), SC_(45.842041015625), SC_(1) }, + { SC_(45.842041015625), SC_(47.9603271484375), SC_(0.0002950371353251142667227927363208965076247) }, + { SC_(45.842041015625), SC_(48.314647674560546875), SC_(0.7504858250764355503501479690846801695332e-4) }, + { SC_(45.842041015625), SC_(48.4493560791015625), SC_(0.445664581115609343906506002728080870345e-4) }, + { SC_(45.842041015625), SC_(48.50565338134765625), SC_(0.3584014796845201975736657965677048039208e-4) }, + { SC_(45.842041015625), SC_(49.65830230712890625), SC_(0.4078109473654790474115572859782508178562e-6) }, + { SC_(45.842041015625), SC_(49.830142974853515625), SC_(0.2087575412813395090396811867054620783866e-6) }, + { SC_(47.9603271484375), SC_(6.68193912506103515625), SC_(0.5547345099107033950192422871427381318326e57) }, + { SC_(47.9603271484375), SC_(8.095367431640625), SC_(0.3630612615584768705211358221068447588014e56) }, + { SC_(47.9603271484375), SC_(8.50289630889892578125), SC_(0.1571608848070621347187887625096797686567e56) }, + { SC_(47.9603271484375), SC_(11.04233455657958984375), SC_(0.5534987694133365838168750903207890846419e53) }, + { SC_(47.9603271484375), SC_(12.6096343994140625), SC_(0.1234200159732713260948046406761773059092e52) }, + { SC_(47.9603271484375), SC_(15.36791515350341796875), SC_(0.9471546980178058047156855714701255799749e48) }, + { SC_(47.9603271484375), SC_(16.792018890380859375), SC_(0.1897542864398623534143203275335123231973e47) }, + { SC_(47.9603271484375), SC_(28.25031280517578125), SC_(8879526869411252931939692217335.027581608) }, + { SC_(47.9603271484375), SC_(28.2665882110595703125), SC_(8411967781970891444582659322657.818992988) }, + { SC_(47.9603271484375), SC_(32.353244781494140625), SC_(7961587934420658260532166.45718487462272) }, + { SC_(47.9603271484375), SC_(41.1067352294921875), SC_(183179074732.0103620164004788697886647854) }, + { SC_(47.9603271484375), SC_(42.080410003662109375), SC_(4915688804.984666890973837709880731741309) }, + { SC_(47.9603271484375), SC_(45.4780120849609375), SC_(13567.6464137540515576016263211181519026) }, + { SC_(47.9603271484375), SC_(45.842041015625), SC_(3389.403841987743187937133456134050275288) }, + { SC_(47.9603271484375), SC_(47.9603271484375), SC_(1) }, + { SC_(47.9603271484375), SC_(48.314647674560546875), SC_(0.254369953887141203430836876547041268469) }, + { SC_(47.9603271484375), SC_(48.4493560791015625), SC_(0.1510537243471104529394000568510709829461) }, + { SC_(47.9603271484375), SC_(48.50565338134765625), SC_(0.1214767352216804846003235483194497619607) }, + { SC_(47.9603271484375), SC_(49.65830230712890625), SC_(0.001382235991805215999328194183512147103345) }, + { SC_(47.9603271484375), SC_(49.830142974853515625), SC_(0.0007075636124628870328952976620778296772766) }, + { SC_(48.314647674560546875), SC_(6.68193912506103515625), SC_(0.2180817747668531093722592544925729126253e58) }, + { SC_(48.314647674560546875), SC_(8.095367431640625), SC_(0.1427296172407059518070162204755669355033e57) }, + { SC_(48.314647674560546875), SC_(8.50289630889892578125), SC_(0.6178437445359259537189632854102462421372e56) }, + { SC_(48.314647674560546875), SC_(11.04233455657958984375), SC_(0.2175959703396859431461145671433618592455e54) }, + { SC_(48.314647674560546875), SC_(12.6096343994140625), SC_(0.4851988770184323241722734711404662380424e52) }, + { SC_(48.314647674560546875), SC_(15.36791515350341796875), SC_(0.3723532137125122728520959694032265459223e49) }, + { SC_(48.314647674560546875), SC_(16.792018890380859375), SC_(0.7459775949955649520346980577491792943738e47) }, + { SC_(48.314647674560546875), SC_(28.25031280517578125), SC_(34907923415164509403117907607646.53722193) }, + { SC_(48.314647674560546875), SC_(28.2665882110595703125), SC_(33069816829479440699668352125658.38663931) }, + { SC_(48.314647674560546875), SC_(32.353244781494140625), SC_(31299246678925977138939639.90617886264583) }, + { SC_(48.314647674560546875), SC_(41.1067352294921875), SC_(720128584106.6087836526782406609570068993) }, + { SC_(48.314647674560546875), SC_(42.080410003662109375), SC_(19324958509.70535007498641753925442032779) }, + { SC_(48.314647674560546875), SC_(45.4780120849609375), SC_(53338.24300559389759659482368493053044794) }, + { SC_(48.314647674560546875), SC_(45.842041015625), SC_(13324.70203415436802789403082858739642048) }, + { SC_(48.314647674560546875), SC_(47.9603271484375), SC_(3.931281917217627621819257075277788356756) }, + { SC_(48.314647674560546875), SC_(48.314647674560546875), SC_(1) }, + { SC_(48.314647674560546875), SC_(48.4493560791015625), SC_(0.5938347750541714176389461988432523691244) }, + { SC_(48.314647674560546875), SC_(48.50565338134765625), SC_(0.4775592925396261684537108441552323912968) }, + { SC_(48.314647674560546875), SC_(49.65830230712890625), SC_(0.005433959359911218576127565211220850249772) }, + { SC_(48.314647674560546875), SC_(49.830142974853515625), SC_(0.002781632034956529012301208404739032139) }, + { SC_(48.4493560791015625), SC_(6.68193912506103515625), SC_(0.3672431860309275848096310352210359300824e58) }, + { SC_(48.4493560791015625), SC_(8.095367431640625), SC_(0.2403524064882958752535382968929406576241e57) }, + { SC_(48.4493560791015625), SC_(8.50289630889892578125), SC_(0.10404303865154484506684282843186831567e57) }, + { SC_(48.4493560791015625), SC_(11.04233455657958984375), SC_(0.3664251059056556189399723271043139520834e54) }, + { SC_(48.4493560791015625), SC_(12.6096343994140625), SC_(0.8170603969330880027592995122246579755182e52) }, + { SC_(48.4493560791015625), SC_(15.36791515350341796875), SC_(0.6270316750623859609930109821539157012572e49) }, + { SC_(48.4493560791015625), SC_(16.792018890380859375), SC_(0.1256203958293810938859662896531064488227e48) }, + { SC_(48.4493560791015625), SC_(28.25031280517578125), SC_(58783898959066690330084982311593.58176901) }, + { SC_(48.4493560791015625), SC_(28.2665882110595703125), SC_(55688582445281536842136128249815.7120894) }, + { SC_(48.4493560791015625), SC_(32.353244781494140625), SC_(52706995268289507777255328.00690150146548) }, + { SC_(48.4493560791015625), SC_(41.1067352294921875), SC_(1212674997083.012627418774018726582479038) }, + { SC_(48.4493560791015625), SC_(42.080410003662109375), SC_(32542652134.07629836961371382993080880478) }, + { SC_(48.4493560791015625), SC_(45.4780120849609375), SC_(89820.00591111933541455358836544680644042) }, + { SC_(48.4493560791015625), SC_(45.842041015625), SC_(22438.39969280823627579795031102918220746) }, + { SC_(48.4493560791015625), SC_(47.9603271484375), SC_(6.620161166646065997774784626825861718786) }, + { SC_(48.4493560791015625), SC_(48.314647674560546875), SC_(1.683970090685202719773354093869942575742) }, + { SC_(48.4493560791015625), SC_(48.4493560791015625), SC_(1) }, + { SC_(48.4493560791015625), SC_(48.50565338134765625), SC_(0.8041955651655155335585413108852507830832) }, + { SC_(48.4493560791015625), SC_(49.65830230712890625), SC_(0.009150625036089400870200249124096593983071) }, + { SC_(48.4493560791015625), SC_(49.830142974853515625), SC_(0.004684185150158611142693380272341727749532) }, + { SC_(48.50565338134765625), SC_(6.68193912506103515625), SC_(0.4566590540142352287532525189812939660212e58) }, + { SC_(48.50565338134765625), SC_(8.095367431640625), SC_(0.2988730812496183533966920676743957277123e57) }, + { SC_(48.50565338134765625), SC_(8.50289630889892578125), SC_(0.1293752952120933719032874782784950114307e57) }, + { SC_(48.50565338134765625), SC_(11.04233455657958984375), SC_(0.4556417888604494171080971046736770628338e54) }, + { SC_(48.50565338134765625), SC_(12.6096343994140625), SC_(0.1015997143387534962938471142842497266745e53) }, + { SC_(48.50565338134765625), SC_(15.36791515350341796875), SC_(0.779700488566277306704754402527940807414e49) }, + { SC_(48.50565338134765625), SC_(16.792018890380859375), SC_(0.1562062777646958653353788960127206831866e48) }, + { SC_(48.50565338134765625), SC_(28.25031280517578125), SC_(73096522171156316264505015125427.87849809) }, + { SC_(48.50565338134765625), SC_(28.2665882110595703125), SC_(69247562231731518727938759809179.17837236) }, + { SC_(48.50565338134765625), SC_(32.353244781494140625), SC_(65540022292266205196135588.37445817652441) }, + { SC_(48.50565338134765625), SC_(41.1067352294921875), SC_(1507935444574.885075047791039699544486501) }, + { SC_(48.50565338134765625), SC_(42.080410003662109375), SC_(40466092507.45934103380971787300376014527) }, + { SC_(48.50565338134765625), SC_(45.4780120849609375), SC_(111689.257938935572585547796542841786287) }, + { SC_(48.50565338134765625), SC_(45.842041015625), SC_(27901.67051989409614876831141855717974302) }, + { SC_(48.50565338134765625), SC_(47.9603271484375), SC_(8.23202894097474578256346862985747732831) }, + { SC_(48.50565338134765625), SC_(48.314647674560546875), SC_(2.093980822113357920271431337630760310643) }, + { SC_(48.50565338134765625), SC_(48.4493560791015625), SC_(1.243478630467434834721499987219186699646) }, + { SC_(48.50565338134765625), SC_(48.50565338134765625), SC_(1) }, + { SC_(48.50565338134765625), SC_(49.65830230712890625), SC_(0.01137860668779746965294028255799791422986) }, + { SC_(48.50565338134765625), SC_(49.830142974853515625), SC_(0.005824684135375125377888394010247691105308) }, + { SC_(49.65830230712890625), SC_(6.68193912506103515625), SC_(0.4013312583375967416661578325917486444011e60) }, + { SC_(49.65830230712890625), SC_(8.095367431640625), SC_(0.2626622832214886218015717184826554078257e59) }, + { SC_(49.65830230712890625), SC_(8.50289630889892578125), SC_(0.113700472089290789897629737177398002534e59) }, + { SC_(49.65830230712890625), SC_(11.04233455657958984375), SC_(0.4004372427681186817057187355081811104948e56) }, + { SC_(49.65830230712890625), SC_(12.6096343994140625), SC_(0.8929011884004219495315315213522833289702e54) }, + { SC_(49.65830230712890625), SC_(15.36791515350341796875), SC_(0.6852337109098215178887399704270903577856e51) }, + { SC_(49.65830230712890625), SC_(16.792018890380859375), SC_(0.1372806724501805853779867836918351364192e50) }, + { SC_(49.65830230712890625), SC_(28.25031280517578125), SC_(6424031006322219535859735319895730.406516) }, + { SC_(49.65830230712890625), SC_(28.2665882110595703125), SC_(6085768155251669725746553272367876.464595) }, + { SC_(49.65830230712890625), SC_(32.353244781494140625), SC_(5759933890900014436468813901.114329886265) }, + { SC_(49.65830230712890625), SC_(41.1067352294921875), SC_(132523733876135.2881084287595872245597653) }, + { SC_(49.65830230712890625), SC_(42.080410003662109375), SC_(3556331070908.319456261711716187098696346) }, + { SC_(49.65830230712890625), SC_(45.4780120849609375), SC_(9815723.577009849317698980162780336496513) }, + { SC_(49.65830230712890625), SC_(45.842041015625), SC_(2452116.61545662911113776272285650291177) }, + { SC_(49.65830230712890625), SC_(47.9603271484375), SC_(723.4654617074386650606404106270002904964) }, + { SC_(49.65830230712890625), SC_(48.314647674560546875), SC_(184.0278761334604933216410145833973305409) }, + { SC_(49.65830230712890625), SC_(48.4493560791015625), SC_(109.2821524274104329582796424993272683682) }, + { SC_(49.65830230712890625), SC_(48.50565338134765625), SC_(87.88422233386534838722699682176254064215) }, + { SC_(49.65830230712890625), SC_(49.65830230712890625), SC_(1) }, + { SC_(49.65830230712890625), SC_(49.830142974853515625), SC_(0.5118978355778457700907478004290928982057) }, + { SC_(49.830142974853515625), SC_(6.68193912506103515625), SC_(0.7840065545199304670108533691898249387968e60) }, + { SC_(49.830142974853515625), SC_(8.095367431640625), SC_(0.5131146587580068328804320686790697457432e59) }, + { SC_(49.830142974853515625), SC_(8.50289630889892578125), SC_(0.2221155554622383892333093987944533873854e59) }, + { SC_(49.830142974853515625), SC_(11.04233455657958984375), SC_(0.782260081869838348283677686535832364175e56) }, + { SC_(49.830142974853515625), SC_(12.6096343994140625), SC_(0.1744295690159517988946627267959914710007e55) }, + { SC_(49.830142974853515625), SC_(15.36791515350341796875), SC_(0.1338614198546686499416667263462438494101e52) }, + { SC_(49.830142974853515625), SC_(16.792018890380859375), SC_(0.26817982595143034220545161257463255727e50) }, + { SC_(49.830142974853515625), SC_(28.25031280517578125), SC_(12549439672997599030300754159544767.03381) }, + { SC_(49.830142974853515625), SC_(28.2665882110595703125), SC_(11888638185746322677793115992561779.63174) }, + { SC_(49.830142974853515625), SC_(32.353244781494140625), SC_(11252116126644737085315595239.69631493006) }, + { SC_(49.830142974853515625), SC_(41.1067352294921875), SC_(258887076024727.6417888699288378265039062) }, + { SC_(49.830142974853515625), SC_(42.080410003662109375), SC_(6947345395383.094961087609307748110446687) }, + { SC_(49.830142974853515625), SC_(45.4780120849609375), SC_(19175161.3208709184277483875675091000146) }, + { SC_(49.830142974853515625), SC_(45.842041015625), SC_(4790246.109731262408906051742019966433475) }, + { SC_(49.830142974853515625), SC_(47.9603271484375), SC_(1413.300489717384632443829918755401512936) }, + { SC_(49.830142974853515625), SC_(48.314647674560546875), SC_(359.5011803980852094949309930259792159491) }, + { SC_(49.830142974853515625), SC_(48.4493560791015625), SC_(213.4843025934060293962890224642100962277) }, + { SC_(49.830142974853515625), SC_(48.50565338134765625), SC_(171.6831293780700953348759427887881234575) }, + { SC_(49.830142974853515625), SC_(49.65830230712890625), SC_(1.953514804123306623532978094346942918559) }, + { SC_(49.830142974853515625), SC_(49.830142974853515625), SC_(1) } + } }; +#undef SC_ + diff --git a/tools/bessel_data.cpp b/tools/bessel_data.cpp new file mode 100644 index 000000000..d239fa75b --- /dev/null +++ b/tools/bessel_data.cpp @@ -0,0 +1,357 @@ +// Copyright (c) 2007 John Maddock +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +// Computes test data for the various bessel functions using +// archived - deliberately naive - version of the code. +// We'll rely on the high precision of boost::math::ntl::RR to get us out of +// trouble and not worry about how long the calculations take. +// This provides a reasonably independent set of test data to +// compare against newly added asymptotic expansions etc. +// +#include + +#include +#include "ntl_rr_lanczos.hpp" + +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace boost::math::detail; +using namespace std; + +// Compute J(v, x) and Y(v, x) simultaneously by Steed's method, see +// Barnett et al, Computer Physics Communications, vol 8, 377 (1974) +template +int bessel_jy_bare(T v, T x, T* J, T* Y, int kind = need_j|need_y) +{ + // Jv1 = J_(v+1), Yv1 = Y_(v+1), fv = J_(v+1) / J_v + // Ju1 = J_(u+1), Yu1 = Y_(u+1), fu = J_(u+1) / J_u + T u, Jv, Ju, Yv, Yv1, Yu, Yu1, fv, fu; + T W, p, q, gamma, current, prev, next; + bool reflect = false; + int n, k, s; + + using namespace std; + using namespace boost::math::tools; + using namespace boost::math::constants; + + if (v < 0) + { + reflect = true; + v = -v; // v is non-negative from here + kind = need_j|need_y; // need both for reflection formula + } + n = real_cast(v + 0.5L); + u = v - n; // -1/2 <= u < 1/2 + + if (x < 0) + { + *J = *Y = policies::raise_domain_error("", + "Real argument x=%1% must be non-negative, complex number result not supported", x, policies::policy<>()); + return 1; + } + if (x == 0) + { + *J = *Y = policies::raise_overflow_error( + "", 0, policies::policy<>()); + return 1; + } + + // x is positive until reflection + W = T(2) / (x * pi()); // Wronskian + if (x <= 2) // x in (0, 2] + { + if(temme_jy(u, x, &Yu, &Yu1, policies::policy<>())) // Temme series + { + // domain error: + *J = *Y = Yu; + return 1; + } + prev = Yu; + current = Yu1; + for (k = 1; k <= n; k++) // forward recurrence for Y + { + next = 2 * (u + k) * current / x - prev; + prev = current; + current = next; + } + Yv = prev; + Yv1 = current; + CF1_jy(v, x, &fv, &s, policies::policy<>()); // continued fraction CF1 + Jv = W / (Yv * fv - Yv1); // Wronskian relation + } + else // x in (2, \infty) + { + // Get Y(u, x): + CF1_jy(v, x, &fv, &s, policies::policy<>()); + // tiny initial value to prevent overflow + T init = sqrt(tools::min_value()); + prev = fv * s * init; + current = s * init; + for (k = n; k > 0; k--) // backward recurrence for J + { + next = 2 * (u + k) * current / x - prev; + prev = current; + current = next; + } + T ratio = (s * init) / current; // scaling ratio + // can also call CF1() to get fu, not much difference in precision + fu = prev / current; + CF2_jy(u, x, &p, &q, policies::policy<>()); // continued fraction CF2 + T t = u / x - fu; // t = J'/J + gamma = (p - t) / q; + Ju = sign(current) * sqrt(W / (q + gamma * (p - t))); + + Jv = Ju * ratio; // normalization + + Yu = gamma * Ju; + Yu1 = Yu * (u/x - p - q/gamma); + + // compute Y: + prev = Yu; + current = Yu1; + for (k = 1; k <= n; k++) // forward recurrence for Y + { + next = 2 * (u + k) * current / x - prev; + prev = current; + current = next; + } + Yv = prev; + } + + if (reflect) + { + T z = (u + n % 2) * pi(); + *J = cos(z) * Jv - sin(z) * Yv; // reflection formula + *Y = sin(z) * Jv + cos(z) * Yv; + } + else + { + *J = Jv; + *Y = Yv; + } + + return 0; +} + +int progress = 0; + +template +T cyl_bessel_j_bare(T v, T x) +{ + T j, y; + bessel_jy_bare(v, x, &j, &y); + + std::cout << progress++ << ": J(" << v << ", " << x << ") = " << j << std::endl; + + if(fabs(j) > 1e30) + throw std::domain_error(""); + + return j; +} + +template +T cyl_bessel_i_bare(T v, T x) +{ + using namespace std; + if(x < 0) + { + // better have integer v: + if(floor(v) == v) + { + T r = cyl_bessel_i_bare(v, -x); + if(tools::real_cast(v) & 1) + r = -r; + return r; + } + else + return policies::raise_domain_error( + "", + "Got x = %1%, but we need x >= 0", x, policies::policy<>()); + } + if(x == 0) + { + return (v == 0) ? 1 : 0; + } + T I, K; + boost::math::detail::bessel_ik(v, x, &I, &K, 0xffff, policies::policy<>()); + + std::cout << progress++ << ": I(" << v << ", " << x << ") = " << I << std::endl; + + if(fabs(I) > 1e30) + throw std::domain_error(""); + + return I; +} + +template +T cyl_bessel_k_bare(T v, T x) +{ + using namespace std; + if(x < 0) + { + return policies::raise_domain_error( + "", + "Got x = %1%, but we need x > 0", x, policies::policy<>()); + } + if(x == 0) + { + return (v == 0) ? policies::raise_overflow_error("", 0, policies::policy<>()) + : policies::raise_domain_error( + "", + "Got x = %1%, but we need x > 0", x, policies::policy<>()); + } + T I, K; + bessel_ik(v, x, &I, &K, 0xFFFF, policies::policy<>()); + + std::cout << progress++ << ": K(" << v << ", " << x << ") = " << K << std::endl; + + if(fabs(K) > 1e30) + throw std::domain_error(""); + + return K; +} + +template +T cyl_neumann_bare(T v, T x) +{ + T j, y; + bessel_jy(v, x, &j, &y, 0xFFFF, policies::policy<>()); + + std::cout << progress++ << ": Y(" << v << ", " << x << ") = " << y << std::endl; + + if(fabs(y) > 1e30) + throw std::domain_error(""); + + return y; +} + +template +T sph_bessel_j_bare(T v, T x) +{ + std::cout << progress++ << ": j(" << v << ", " << x << ") = "; + if((v < 0) || (floor(v) != v)) + throw std::domain_error(""); + T r = sqrt(constants::pi() / (2 * x)) * cyl_bessel_j_bare(v+0.5, x); + std::cout << r << std::endl; + return r; +} + +template +T sph_bessel_y_bare(T v, T x) +{ + std::cout << progress++ << ": y(" << v << ", " << x << ") = "; + if((v < 0) || (floor(v) != v)) + throw std::domain_error(""); + T r = sqrt(constants::pi() / (2 * x)) * cyl_neumann_bare(v+0.5, x); + std::cout << r << std::endl; + return r; +} + +enum +{ + func_J = 0, + func_Y, + func_I, + func_K, + func_j, + func_y +}; + +int main(int argc, char* argv[]) +{ + std::cout << std::setprecision(17) << std::scientific; + std::cout << sph_bessel_j_bare(0., 0.1185395751953125e4) << std::endl; + std::cout << sph_bessel_j_bare(22., 0.6540834903717041015625) << std::endl; + + parameter_info arg1, arg2; + test_data data; + + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + int functype = 0; + std::string letter = "J"; + + if(argc == 2) + { + if(std::strcmp(argv[1], "--Y") == 0) + { + functype = func_Y; + letter = "Y"; + } + else if(std::strcmp(argv[1], "--I") == 0) + { + functype = func_I; + letter = "I"; + } + else if(std::strcmp(argv[1], "--K") == 0) + { + functype = func_K; + letter = "K"; + } + else if(std::strcmp(argv[1], "--j") == 0) + { + functype = func_j; + letter = "j"; + } + else if(std::strcmp(argv[1], "--y") == 0) + { + functype = func_y; + letter = "y"; + } + else + assert(0); + } + + bool cont; + std::string line; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the Bessel " << letter << " function\n\n"; + do{ + get_user_parameter_info(arg1, "v"); + get_user_parameter_info(arg2, "x"); + boost::math::ntl::RR (*fp)(boost::math::ntl::RR, boost::math::ntl::RR); + if(functype == func_J) + fp = cyl_bessel_j_bare; + else if(functype == func_I) + fp = cyl_bessel_i_bare; + else if(functype == func_K) + fp = cyl_bessel_k_bare; + else if(functype == func_Y) + fp = cyl_neumann_bare; + else if(functype == func_j) + fp = sph_bessel_j_bare; + else if(functype == func_y) + fp = sph_bessel_y_bare; + else + assert(0); + + data.insert(fp, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=bessel_j_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "bessel_j_data.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + + + + diff --git a/tools/beta_data.cpp b/tools/beta_data.cpp new file mode 100644 index 000000000..826a83d62 --- /dev/null +++ b/tools/beta_data.cpp @@ -0,0 +1,72 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +#include + +using namespace boost::math::tools; + +struct beta_data_generator +{ + boost::math::ntl::RR operator()(boost::math::ntl::RR a, boost::math::ntl::RR b) + { + if(a < b) + throw std::domain_error(""); + // very naively calculate spots: + boost::math::ntl::RR g1, g2, g3; + int s1, s2, s3; + g1 = boost::math::lgamma(a, &s1); + g2 = boost::math::lgamma(b, &s2); + g3 = boost::math::lgamma(a+b, &s3); + g1 += g2 - g3; + g1 = exp(g1); + g1 *= s1 * s2 * s3; + return g1; + } +}; + + +int main() +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1, arg2; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the beta function:\n" + " beta(a, b)\n\n"; + + bool cont; + std::string line; + + do{ + get_user_parameter_info(arg1, "a"); + get_user_parameter_info(arg2, "b"); + data.insert(beta_data_generator(), arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=beta_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "beta_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "beta_data"); + + return 0; +} + diff --git a/tools/carlson_ellint_data.cpp b/tools/carlson_ellint_data.cpp new file mode 100644 index 000000000..d74a5bc01 --- /dev/null +++ b/tools/carlson_ellint_data.cpp @@ -0,0 +1,151 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +//#include +#include +#include +#include +#include +#include +#include + +float extern_val; +// confuse the compilers optimiser, and force a truncation to float precision: +float truncate_to_float(float const * pf) +{ + extern_val = *pf; + return *pf; +} + +std::tr1::tuple generate_rf_data(boost::math::ntl::RR n) +{ + static std::tr1::mt19937 r; + std::tr1::uniform_real ur(0, 1); + std::tr1::uniform_int ui(-100, 100); + float x = ur(r); + x = ldexp(x, ui(r)); + boost::math::ntl::RR xr(truncate_to_float(&x)); + float y = ur(r); + y = ldexp(y, ui(r)); + boost::math::ntl::RR yr(truncate_to_float(&y)); + float z = ur(r); + z = ldexp(z, ui(r)); + boost::math::ntl::RR zr(truncate_to_float(&z)); + + boost::math::ntl::RR result = boost::math::ellint_rf(xr, yr, zr); + return std::tr1::make_tuple(xr, yr, zr, result); +} + +std::tr1::tuple generate_rc_data(boost::math::ntl::RR n) +{ + static std::tr1::mt19937 r; + std::tr1::uniform_real ur(0, 1); + std::tr1::uniform_int ui(-100, 100); + float x = ur(r); + x = ldexp(x, ui(r)); + boost::math::ntl::RR xr(truncate_to_float(&x)); + float y = ur(r); + y = ldexp(y, ui(r)); + boost::math::ntl::RR yr(truncate_to_float(&y)); + + boost::math::ntl::RR result = boost::math::ellint_rc(xr, yr); + return std::tr1::make_tuple(xr, yr, result); +} + +std::tr1::tuple generate_rj_data(boost::math::ntl::RR n) +{ + static std::tr1::mt19937 r; + std::tr1::uniform_real ur(0, 1); + std::tr1::uniform_real nur(-1, 1); + std::tr1::uniform_int ui(-100, 100); + float x = ur(r); + x = ldexp(x, ui(r)); + boost::math::ntl::RR xr(truncate_to_float(&x)); + float y = ur(r); + y = ldexp(y, ui(r)); + boost::math::ntl::RR yr(truncate_to_float(&y)); + float z = ur(r); + z = ldexp(z, ui(r)); + boost::math::ntl::RR zr(truncate_to_float(&z)); + float p = nur(r); + p = ldexp(p, ui(r)); + boost::math::ntl::RR pr(truncate_to_float(&p)); + + boost::math::ellint_rj(x, y, z, p); + + boost::math::ntl::RR result = boost::math::ellint_rj(xr, yr, zr, pr); + return std::tr1::make_tuple(xr, yr, zr, pr, result); +} + +std::tr1::tuple generate_rd_data(boost::math::ntl::RR n) +{ + static std::tr1::mt19937 r; + std::tr1::uniform_real ur(0, 1); + std::tr1::uniform_int ui(-100, 100); + float x = ur(r); + x = ldexp(x, ui(r)); + boost::math::ntl::RR xr(truncate_to_float(&x)); + float y = ur(r); + y = ldexp(y, ui(r)); + boost::math::ntl::RR yr(truncate_to_float(&y)); + float z = ur(r); + z = ldexp(z, ui(r)); + boost::math::ntl::RR zr(truncate_to_float(&z)); + + boost::math::ntl::RR result = boost::math::ellint_rd(xr, yr, zr); + return std::tr1::make_tuple(xr, yr, zr, result); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + int count; + std::cout << "Number of points: "; + std::cin >> count; + + arg1 = make_periodic_param(boost::math::ntl::RR(0), boost::math::ntl::RR(1), count); + arg1.type |= dummy_param; + + // + // Change this next line to get the R variant you want: + // + data.insert(&generate_rd_data, arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=ellint_rf_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ellint_rf_data.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + + diff --git a/tools/cbrt_data.cpp b/tools/cbrt_data.cpp new file mode 100644 index 000000000..f98e28e63 --- /dev/null +++ b/tools/cbrt_data.cpp @@ -0,0 +1,68 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +#include + +using namespace boost::math::tools; +using namespace std; + +struct cube_data_generator +{ + boost::math::ntl::RR operator()(boost::math::ntl::RR z) + { + boost::math::ntl::RR result = z*z*z; + // if result is out of range of a float, + // don't include in test data as it messes up our results: + if(result > (std::numeric_limits::max)()) + throw std::domain_error(""); + if(result < (std::numeric_limits::min)()) + throw std::domain_error(""); + return result; + } +}; + +int main(int argc, char* argv[]) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the cbrt function:\n\n"; + + bool cont; + std::string line; + + do{ + if(0 == get_user_parameter_info(arg1, "z")) + return 1; + data.insert(cube_data_generator(), arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=cbrt_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "cbrt_data.ipp"; + std::ofstream ofs(line.c_str()); + ofs << std::scientific; + write_code(ofs, data, "cbrt_data"); + + return 0; +} + + + + diff --git a/tools/digamma_data.cpp b/tools/digamma_data.cpp new file mode 100644 index 000000000..7f2679222 --- /dev/null +++ b/tools/digamma_data.cpp @@ -0,0 +1,67 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include "ntl_rr_digamma.hpp" +#include +#include +#include + +#include + +using namespace boost::math::tools; +using namespace std; + +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1; + test_data data; + + bool cont; + std::string line; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the digamma function:\n" + " digamma(z)\n\n"; + + do{ + if(0 == get_user_parameter_info(arg1, "z")) + return 1; + data.insert(&boost::math::digamma, arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=digamma_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "digamma_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "digamma_data"); + + return 0; +} + + + diff --git a/tools/ellint_e_data.cpp b/tools/ellint_e_data.cpp new file mode 100644 index 000000000..f2b83c555 --- /dev/null +++ b/tools/ellint_e_data.cpp @@ -0,0 +1,64 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + +template +T ellint_e_data(T k) +{ + return ellint_2(k); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "phi")) + return 1; + + data.insert(&ellint_e_data, arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=ellint_e_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ellint_e_data.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/ellint_f_data.cpp b/tools/ellint_f_data.cpp new file mode 100644 index 000000000..eb909e308 --- /dev/null +++ b/tools/ellint_f_data.cpp @@ -0,0 +1,76 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + +float extern_val; +// confuse the compilers optimiser, and force a truncation to float precision: +float truncate_to_float(float const * pf) +{ + extern_val = *pf; + return *pf; +} + + + +template +T ellint_f_data(T phi, T k) +{ + return ellint_1(k, phi); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "phi")) + return 1; + if(0 == get_user_parameter_info(arg2, "k")) + return 1; + + data.insert(&ellint_f_data, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=ellint_f.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ellint_f.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/ellint_k_data.cpp b/tools/ellint_k_data.cpp new file mode 100644 index 000000000..e239b650c --- /dev/null +++ b/tools/ellint_k_data.cpp @@ -0,0 +1,64 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + +template +T ellint_k_data(T k) +{ + return ellint_1(k); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "phi")) + return 1; + + data.insert(&ellint_k_data, arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=ellint_k_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ellint_k_data.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/ellint_pi2_data.cpp b/tools/ellint_pi2_data.cpp new file mode 100644 index 000000000..9bde56feb --- /dev/null +++ b/tools/ellint_pi2_data.cpp @@ -0,0 +1,64 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) +#include +//#include +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "n")) + return 1; + if(0 == get_user_parameter_info(arg2, "k")) + return 1; + + boost::math::ntl::RR (*fp)(boost::math::ntl::RR, boost::math::ntl::RR) = &ellint_3; + data.insert(fp, arg2, arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=ellint_pi2_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ellint_pi2_data.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + + diff --git a/tools/ellint_pi3_data.cpp b/tools/ellint_pi3_data.cpp new file mode 100644 index 000000000..f328a48da --- /dev/null +++ b/tools/ellint_pi3_data.cpp @@ -0,0 +1,79 @@ +// Copyright John Maddock 2006. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt +// or copy at http://www.boost.org/LICENSE_1_0.txt) + + +#include +//#include +#include +#include +#include +#include +#include +#include + +float extern_val; +// confuse the compilers optimiser, and force a truncation to float precision: +float truncate_to_float(float const * pf) +{ + extern_val = *pf; + return *pf; +} + +std::tr1::tuple generate_data(boost::math::ntl::RR n, boost::math::ntl::RR phi) +{ + static std::tr1::mt19937 r; + std::tr1::uniform_real ui(0, 1); + float k = ui(r); + boost::math::ntl::RR kr(truncate_to_float(&k)); + boost::math::ntl::RR result = boost::math::ellint_3(kr, n, phi); + return std::tr1::make_tuple(kr, result); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "n")) + return 1; + if(0 == get_user_parameter_info(arg2, "phi")) + return 1; + + data.insert(&generate_data, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=ellint_pi3_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ellint_pi3_data.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + + diff --git a/tools/erf_data.cpp b/tools/erf_data.cpp new file mode 100644 index 000000000..885be4809 --- /dev/null +++ b/tools/erf_data.cpp @@ -0,0 +1,225 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include // for inverses +#include +#include +#include + +#include + +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; +using namespace std; + +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +struct erf_data_generator +{ + std::tr1::tuple operator()(boost::math::ntl::RR z) + { + // very naively calculate spots using the gamma function at high precision: + int sign = 1; + if(z < 0) + { + sign = -1; + z = -z; + } + boost::math::ntl::RR g1, g2; + g1 = boost::math::tgamma_lower(boost::math::ntl::RR(0.5), z * z); + g1 /= sqrt(boost::math::constants::pi()); + g1 *= sign; + + if(z < 0.5) + { + g2 = 1 - (sign * g1); + } + else + { + g2 = boost::math::tgamma(boost::math::ntl::RR(0.5), z * z); + g2 /= sqrt(boost::math::constants::pi()); + } + if(sign < 1) + g2 = 2 - g2; + return std::tr1::make_tuple(g1, g2); + } +}; + +double double_factorial(int N) +{ + double result = 1; + while(N > 2) + { + N -= 2; + result *= N; + } + return result; +} + +void asymptotic_limit(int Bits) +{ + // + // The following block of code estimates how large z has + // to be before we can use the asymptotic expansion for + // erf/erfc and still get convergence: the series becomes + // divergent eventually so we have to be careful! + // + double result = (std::numeric_limits::max)(); + int terms = 0; + for(int n = 1; n < 15; ++n) + { + double lim = (Bits-n) * log(2.0) - log(sqrt(3.14)) + log(double_factorial(2*n+1)); + double x = 1; + while(x*x + (2*n+1)*log(x) <= lim) + x += 0.1; + if(x < result) + { + result = x; + terms = n; + } + } + + std::cout << "Erf asymptotic limit for " + << Bits << " bit numbers is " + << result << " after approximately " + << terms << " terms." << std::endl; + + result = (std::numeric_limits::max)(); + terms = 0; + for(int n = 1; n < 30; ++n) + { + double x = pow(double_factorial(2*n+1)/pow(2.0, n-Bits), 1 / (2.0*n)); + if(x < result) + { + result = x; + terms = n; + } + } + + std::cout << "Erfc asymptotic limit for " + << Bits << " bit numbers is " + << result << " after approximately " + << terms << " terms." << std::endl; +} + +std::tr1::tuple erfc_inv(boost::math::ntl::RR r) +{ + boost::math::ntl::RR x = exp(-r * r); + x = NTL::RoundToPrecision(x.value(), 64); + std::cout << x << " "; + boost::math::ntl::RR result = boost::math::erfc_inv(x); + std::cout << result << std::endl; + return std::tr1::make_tuple(x, result); +} + + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1; + test_data data; + + bool cont; + std::string line; + + if(argc >= 2) + { + if(strcmp(argv[1], "--limits") == 0) + { + asymptotic_limit(24); + asymptotic_limit(53); + asymptotic_limit(64); + asymptotic_limit(106); + asymptotic_limit(113); + return 0; + } + else if(strcmp(argv[1], "--erf_inv") == 0) + { + boost::math::ntl::RR (*f)(boost::math::ntl::RR); + f = boost::math::erf_inv; + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse erf function:\n"; + std::cout << "Enter the number of data points: "; + int points; + std::cin >> points; + data.insert(f, make_random_param(boost::math::ntl::RR(-1), boost::math::ntl::RR(1), points)); + } + else if(strcmp(argv[1], "--erfc_inv") == 0) + { + std::tr1::tuple (*f)(boost::math::ntl::RR); + f = erfc_inv; + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse erfc function:\n"; + std::cout << "Enter the maximum *result* expected from erfc_inv: "; + double max_val; + std::cin >> max_val; + std::cout << "Enter the number of data points: "; + int points; + std::cin >> points; + parameter_info arg = make_random_param(boost::math::ntl::RR(0), boost::math::ntl::RR(max_val), points); + arg.type |= dummy_param; + data.insert(f, arg); + } + } + else + { + std::cout << "Welcome.\n" + "This program will generate spot tests for the erf and erfc functions:\n" + " erf(z) and erfc(z)\n\n"; + + do{ + if(0 == get_user_parameter_info(arg1, "a")) + return 1; + data.insert(erf_data_generator(), arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + + std::cout << "Enter name of test data file [default=erf_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "erf_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "erf_data"); + + return 0; +} + +/* Output for asymptotic limits: + +Erf asymptotic limit for 24 bit numbers is 2.8 after approximately 6 terms. +Erfc asymptotic limit for 24 bit numbers is 4.12064 after approximately 17 terms. +Erf asymptotic limit for 53 bit numbers is 4.3 after approximately 11 terms. +Erfc asymptotic limit for 53 bit numbers is 6.19035 after approximately 29 terms. +Erf asymptotic limit for 64 bit numbers is 4.8 after approximately 12 terms. +Erfc asymptotic limit for 64 bit numbers is 7.06004 after approximately 29 terms. +Erf asymptotic limit for 106 bit numbers is 6.5 after approximately 14 terms. +Erfc asymptotic limit for 106 bit numbers is 11.6626 after approximately 29 terms. +Erf asymptotic limit for 113 bit numbers is 6.8 after approximately 14 terms. +Erfc asymptotic limit for 113 bit numbers is 12.6802 after approximately 29 terms. +*/ + diff --git a/tools/factorial_tables.cpp b/tools/factorial_tables.cpp new file mode 100644 index 000000000..67234eed1 --- /dev/null +++ b/tools/factorial_tables.cpp @@ -0,0 +1,43 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include + +void write_table(unsigned max_exponent) +{ + boost::math::ntl::RR max = ldexp(boost::math::ntl::RR(1), max_exponent); + + std::vector factorials; + factorials.push_back(1); + + boost::math::ntl::RR f(1); + unsigned i = 1; + + while(f < max) + { + factorials.push_back(f); + ++i; + f *= i; + } + + // + // now write out the results to cout: + // + std::cout << std::scientific; + std::cout << " static const boost::array factorials = {\n"; + for(unsigned j = 0; j < factorials.size(); ++j) + std::cout << " " << factorials[j] << "L,\n"; + std::cout << " };\n\n"; +} + + +int main() +{ + boost::math::ntl::RR::SetPrecision(300); + boost::math::ntl::RR::SetOutputPrecision(40); + write_table(16384/*std::numeric_limits::max_exponent*/); +} diff --git a/tools/gamma_P_inva_data.cpp b/tools/gamma_P_inva_data.cpp new file mode 100644 index 000000000..66e410c1f --- /dev/null +++ b/tools/gamma_P_inva_data.cpp @@ -0,0 +1,75 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; + +// +// Force trunctation to float precision of input values: +// we must ensure that the input values are exactly representable +// in whatever type we are testing, or the output values will all +// be thrown off: +// +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +struct gamma_inverse_generator_a +{ + std::tr1::tuple operator()(const boost::math::ntl::RR x, const boost::math::ntl::RR p) + { + boost::math::ntl::RR x1 = boost::math::gamma_p_inva(x, p); + boost::math::ntl::RR x2 = boost::math::gamma_q_inva(x, p); + std::cout << "Inverse for " << x << " " << p << std::endl; + return std::tr1::make_tuple(x1, x2); + } +}; + + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(100); + + bool cont; + std::string line; + + parameter_info arg1, arg2; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse incomplete gamma function:\n" + " gamma_p_inva(a, p) and gamma_q_inva(a, q)\n\n"; + + arg1 = make_power_param(boost::math::ntl::RR(0), -4, 24); + arg2 = make_random_param(boost::math::ntl::RR(0), boost::math::ntl::RR(1), 15); + data.insert(gamma_inverse_generator_a(), arg1, arg2); + + line = "igamma_inva_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "igamma_inva_data"); + + return 0; +} + diff --git a/tools/generate_rational_code.cpp b/tools/generate_rational_code.cpp new file mode 100644 index 000000000..090175f84 --- /dev/null +++ b/tools/generate_rational_code.cpp @@ -0,0 +1,738 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +int max_order = 20; +const char* path_prefix = "..\\..\\..\\boost\\math\\tools\\detail\\polynomial_"; +const char* path_prefix2 = "..\\..\\..\\boost\\math\\tools\\detail\\rational_"; + +const char* copyright_string = +"// (C) Copyright John Maddock 2007.\n" +"// Use, modification and distribution are subject to the\n" +"// Boost Software License, Version 1.0. (See accompanying file\n" +"// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n" +"//\n" +"// This file is machine generated, do not edit by hand\n\n"; + + +void print_polynomials(int max_order) +{ + for(int i = 2; i <= max_order; ++i) + { + std::stringstream filename; + filename << path_prefix << "horner1_" << i << ".hpp"; + std::ofstream ofs(filename.str().c_str()); + if(ofs.bad()) + break; + // + // Output the boilerplate at the top of the header: + // + ofs << copyright_string << + "// Polynomial evaluation using Horners rule\n" + "#ifndef BOOST_MATH_TOOLS_POLY_EVAL_" << i << "_HPP\n" + "#define BOOST_MATH_TOOLS_POLY_EVAL_" << i << "_HPP\n\n" + "namespace boost{ namespace math{ namespace tools{ namespace detail{\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)\n" + "{\n" + " return static_cast(0);\n" + "}\n" + "\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<1>*)\n" + "{\n" + " return static_cast(a[0]);\n" + "}\n\n"; + + for(int order = 2; order <= i; ++order) + { + ofs << + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<" << order << ">*)\n" + "{\n" + " return static_cast("; + + for(int bracket = 2; bracket < order; ++bracket) + ofs << "("; + ofs << "a[" << order - 1 << "] * x + a[" << order - 2 << "]" ; + for(int item = order - 3; item >= 0; --item) + { + ofs << ") * x + a[" << item << "]"; + } + + ofs << ");\n" + "}\n\n"; + } + // + // And finally the boilerplate at the end of the header: + // + ofs << "\n}}}} // namespaces\n\n#endif // include guard\n\n"; + + filename.str(""); + filename << path_prefix << "horner2_" << i << ".hpp"; + ofs.close(); + ofs.open(filename.str().c_str()); + if(ofs.bad()) + break; + // + // Output the boilerplate at the top of the header: + // + ofs << copyright_string << + "// Polynomial evaluation using second order Horners rule\n" + "#ifndef BOOST_MATH_TOOLS_POLY_EVAL_" << i << "_HPP\n" + "#define BOOST_MATH_TOOLS_POLY_EVAL_" << i << "_HPP\n\n" + "namespace boost{ namespace math{ namespace tools{ namespace detail{\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)\n" + "{\n" + " return static_cast(0);\n" + "}\n" + "\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<1>*)\n" + "{\n" + " return static_cast(a[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<2>*)\n" + "{\n" + " return static_cast(a[1] * x + a[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<3>*)\n" + "{\n" + " return static_cast((a[2] * x + a[1]) * x + a[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<4>*)\n" + "{\n" + " return static_cast(((a[3] * x + a[2]) * x + a[1]) * x + a[0]);\n" + "}\n\n"; + + for(int order = 5; order <= i; ++order) + { + ofs << + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<" << order << ">*)\n" + "{\n" + " V x2 = x * x;\n" + " return static_cast("; + + if(order & 1) + { + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << order - 1 << "] * x2 + a[" << order - 3 << "]" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + ofs << " + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << order - 2 << "] * x2 + a[" << order - 4 << "]" ; + for(int item = order - 6; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + ofs << ") * x"; + } + else + { + for(int bracket = 0; bracket < (order - 1) / 2; ++bracket) + ofs << "("; + ofs << "a[" << order - 1 << "] * x2 + a[" << order - 3 << "]" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + ofs << ") * x + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << order - 2 << "] * x2 + a[" << order - 4 << "]" ; + for(int item = order - 6; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + } + ofs << ");\n" + "}\n\n"; + } + // + // And finally the boilerplate at the end of the header: + // + ofs << "\n}}}} // namespaces\n\n#endif // include guard\n\n"; + + + filename.str(""); + filename << path_prefix << "horner3_" << i << ".hpp"; + ofs.close(); + ofs.open(filename.str().c_str()); + if(ofs.bad()) + break; + // + // Output the boilerplate at the top of the header: + // + ofs << copyright_string << + "// Unrolled polynomial evaluation using second order Horners rule\n" + "#ifndef BOOST_MATH_TOOLS_POLY_EVAL_" << i << "_HPP\n" + "#define BOOST_MATH_TOOLS_POLY_EVAL_" << i << "_HPP\n\n" + "namespace boost{ namespace math{ namespace tools{ namespace detail{\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)\n" + "{\n" + " return static_cast(0);\n" + "}\n" + "\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<1>*)\n" + "{\n" + " return static_cast(a[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<2>*)\n" + "{\n" + " return static_cast(a[1] * x + a[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<3>*)\n" + "{\n" + " return static_cast((a[2] * x + a[1]) * x + a[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<4>*)\n" + "{\n" + " return static_cast(((a[3] * x + a[2]) * x + a[1]) * x + a[0]);\n" + "}\n\n"; + + for(int order = 5; order <= i; ++order) + { + ofs << + "template \n" + "inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<" << order << ">*)\n" + "{\n" + " V x2 = x * x;\n" + " V t[2];\n"; + + if(order & 1) + { + ofs << " t[0] = static_cast(a[" << order - 1 << "] * x2 + a[" << order - 3 << "]);\n" ; + ofs << " t[1] = static_cast(a[" << order - 2 << "] * x2 + a[" << order - 4 << "]);\n" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << " t[0] *= x2;\n"; + if(item - 1 >= 0) + ofs << " t[1] *= x2;\n"; + ofs << " t[0] += static_cast(a[" << item << "]);\n"; + if(item - 1 >= 0) + ofs << " t[1] += static_cast(a[" << item - 1 << "]);\n"; + } + ofs << + " t[1] *= x;\n" + " return t[0] + t[1];\n"; + } + else + { + ofs << " t[0] = a[" << order - 1 << "] * x2 + a[" << order - 3 << "];\n" ; + ofs << " t[1] = a[" << order - 2 << "] * x2 + a[" << order - 4 << "];\n" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << " t[0] *= x2;\n"; + if(item - 1 >= 0) + ofs << " t[1] *= x2;\n"; + ofs << " t[0] += static_cast(a[" << item << "]);\n"; + if(item - 1 >= 0) + ofs << " t[1] += static_cast(a[" << item - 1 << "]);\n"; + } + ofs << " t[0] *= x;\n"; + ofs << " return t[0] + t[1];\n"; + } + ofs << "}\n\n"; + } + // + // And finally the boilerplate at the end of the header: + // + ofs << "\n}}}} // namespaces\n\n#endif // include guard\n\n"; + } +} + +void print_rationals(int max_order) +{ + for(int i = 2; i <= max_order; ++i) + { + std::stringstream filename; + filename << path_prefix2 << "horner1_" << i << ".hpp"; + std::ofstream ofs(filename.str().c_str()); + if(ofs.bad()) + break; + // + // Output the boilerplate at the top of the header: + // + ofs << copyright_string << + "// Polynomial evaluation using Horners rule\n" + "#ifndef BOOST_MATH_TOOLS_POLY_RAT_" << i << "_HPP\n" + "#define BOOST_MATH_TOOLS_POLY_RAT_" << i << "_HPP\n\n" + "namespace boost{ namespace math{ namespace tools{ namespace detail{\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*)\n" + "{\n" + " return static_cast(0);\n" + "}\n" + "\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<1>*)\n" + "{\n" + " return static_cast(a[0]) / static_cast(b[0]);\n" + "}\n\n"; + + for(int order = 2; order <= i; ++order) + { + ofs << + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<" << order << ">*)\n" + "{\n" + " if(x <= 1)\n" + " return static_cast(("; + + for(int bracket = 2; bracket < order; ++bracket) + ofs << "("; + ofs << "a[" << order - 1 << "] * x + a[" << order - 2 << "]" ; + for(int item = order - 3; item >= 0; --item) + { + ofs << ") * x + a[" << item << "]"; + } + + ofs << ") / ("; + for(int bracket = 2; bracket < order; ++bracket) + ofs << "("; + ofs << "b[" << order - 1 << "] * x + b[" << order - 2 << "]" ; + for(int item = order - 3; item >= 0; --item) + { + ofs << ") * x + b[" << item << "]"; + } + + ofs << "));\n else\n {\n V z = 1 / x;\n return static_cast(("; + + for(int bracket = order - 1; bracket > 1; --bracket) + ofs << "("; + ofs << "a[" << 0 << "] * z + a[" << 1 << "]" ; + for(int item = 2; item <= order - 1; ++item) + { + ofs << ") * z + a[" << item << "]"; + } + + ofs << ") / ("; + for(int bracket = 2; bracket < order; ++bracket) + ofs << "("; + ofs << "b[" << 0 << "] * z + b[" << 1 << "]" ; + for(int item = 2; item <= order - 1; ++item) + { + ofs << ") * z + b[" << item << "]"; + } + + ofs << "));\n }\n"; + + ofs << "}\n\n"; + } + // + // And finally the boilerplate at the end of the header: + // + ofs << "\n}}}} // namespaces\n\n#endif // include guard\n\n"; + + filename.str(""); + filename << path_prefix2 << "horner2_" << i << ".hpp"; + ofs.close(); + ofs.open(filename.str().c_str()); + if(ofs.bad()) + break; + // + // Output the boilerplate at the top of the header: + // + ofs << copyright_string << + "// Polynomial evaluation using second order Horners rule\n" + "#ifndef BOOST_MATH_TOOLS_RAT_EVAL_" << i << "_HPP\n" + "#define BOOST_MATH_TOOLS_RAT_EVAL_" << i << "_HPP\n\n" + "namespace boost{ namespace math{ namespace tools{ namespace detail{\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)\n" + "{\n" + " return static_cast(0);\n" + "}\n" + "\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<1>*)\n" + "{\n" + " return static_cast(a[0]) / static_cast(b[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<2>*)\n" + "{\n" + " return static_cast((a[1] * x + a[0]) / (b[1] * x + b[0]));\n" + "}\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<3>*)\n" + "{\n" + " return static_cast(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));\n" + "}\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<4>*)\n" + "{\n" + " return static_cast((((a[3] * x + a[2]) * x + a[1]) * x + a[0]) / (((b[3] * x + b[2]) * x + b[1]) * x + b[0]));\n" + "}\n\n"; + + for(int order = 5; order <= i; ++order) + { + ofs << + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<" << order << ">*)\n" + "{\n" + " if(x <= 1)\n {\n" + " V x2 = x * x;\n" + " return static_cast(("; + + if(order & 1) + { + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << order - 1 << "] * x2 + a[" << order - 3 << "]" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + ofs << " + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << order - 2 << "] * x2 + a[" << order - 4 << "]" ; + for(int item = order - 6; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + ofs << ") * x"; + } + else + { + for(int bracket = 0; bracket < (order - 1) / 2; ++bracket) + ofs << "("; + ofs << "a[" << order - 1 << "] * x2 + a[" << order - 3 << "]" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + ofs << ") * x + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << order - 2 << "] * x2 + a[" << order - 4 << "]" ; + for(int item = order - 6; item >= 0; item -= 2) + { + ofs << ") * x2 + a[" << item << "]"; + } + } + ofs << ") / ("; + if(order & 1) + { + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "b[" << order - 1 << "] * x2 + b[" << order - 3 << "]" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << ") * x2 + b[" << item << "]"; + } + ofs << " + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "b[" << order - 2 << "] * x2 + b[" << order - 4 << "]" ; + for(int item = order - 6; item >= 0; item -= 2) + { + ofs << ") * x2 + b[" << item << "]"; + } + ofs << ") * x"; + } + else + { + for(int bracket = 0; bracket < (order - 1) / 2; ++bracket) + ofs << "("; + ofs << "b[" << order - 1 << "] * x2 + b[" << order - 3 << "]" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << ") * x2 + b[" << item << "]"; + } + ofs << ") * x + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "b[" << order - 2 << "] * x2 + b[" << order - 4 << "]" ; + for(int item = order - 6; item >= 0; item -= 2) + { + ofs << ") * x2 + b[" << item << "]"; + } + } + + ofs << "));\n }\n else\n {\n V z = 1 / x;\n V z2 = 1 / (x * x);\n return static_cast(("; + + if(order & 1) + { + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << 0 << "] * z2 + a[" << 2 << "]" ; + for(int item = 4; item < order; item += 2) + { + ofs << ") * z2 + a[" << item << "]"; + } + ofs << " + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << 1 << "] * z2 + a[" << 3 << "]" ; + for(int item = 5; item < order; item += 2) + { + ofs << ") * z2 + a[" << item << "]"; + } + ofs << ") * z"; + } + else + { + for(int bracket = 0; bracket < (order - 1) / 2; ++bracket) + ofs << "("; + ofs << "a[" << 0 << "] * z2 + a[" << 2 << "]" ; + for(int item = 4; item < order; item += 2) + { + ofs << ") * z2 + a[" << item << "]"; + } + ofs << ") * z + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "a[" << 1 << "] * z2 + a[" << 3 << "]" ; + for(int item = 5; item < order; item += 2) + { + ofs << ") * z2 + a[" << item << "]"; + } + } + + ofs << ") / ("; + + if(order & 1) + { + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "b[" << 0 << "] * z2 + b[" << 2 << "]" ; + for(int item = 4; item < order; item += 2) + { + ofs << ") * z2 + b[" << item << "]"; + } + ofs << " + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "b[" << 1 << "] * z2 + b[" << 3 << "]" ; + for(int item = 5; item < order; item += 2) + { + ofs << ") * z2 + b[" << item << "]"; + } + ofs << ") * z"; + } + else + { + for(int bracket = 0; bracket < (order - 1) / 2; ++bracket) + ofs << "("; + ofs << "b[" << 0 << "] * z2 + b[" << 2 << "]" ; + for(int item = 4; item < order; item += 2) + { + ofs << ") * z2 + b[" << item << "]"; + } + ofs << ") * z + "; + for(int bracket = 0; bracket < (order - 1) / 2 - 1; ++bracket) + ofs << "("; + ofs << "b[" << 1 << "] * z2 + b[" << 3 << "]" ; + for(int item = 5; item < order; item += 2) + { + ofs << ") * z2 + b[" << item << "]"; + } + } + ofs << "));\n }\n"; + + ofs << "}\n\n"; + } + // + // And finally the boilerplate at the end of the header: + // + ofs << "\n}}}} // namespaces\n\n#endif // include guard\n\n"; + + + filename.str(""); + filename << path_prefix2 << "horner3_" << i << ".hpp"; + ofs.close(); + ofs.open(filename.str().c_str()); + if(ofs.bad()) + break; + // + // Output the boilerplate at the top of the header: + // + ofs << copyright_string << + "// Polynomial evaluation using second order Horners rule\n" + "#ifndef BOOST_MATH_TOOLS_RAT_EVAL_" << i << "_HPP\n" + "#define BOOST_MATH_TOOLS_RAT_EVAL_" << i << "_HPP\n\n" + "namespace boost{ namespace math{ namespace tools{ namespace detail{\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)\n" + "{\n" + " return static_cast(0);\n" + "}\n" + "\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<1>*)\n" + "{\n" + " return static_cast(a[0]) / static_cast(b[0]);\n" + "}\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<2>*)\n" + "{\n" + " return static_cast((a[1] * x + a[0]) / (b[1] * x + b[0]));\n" + "}\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<3>*)\n" + "{\n" + " return static_cast(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));\n" + "}\n\n" + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<4>*)\n" + "{\n" + " return static_cast((((a[3] * x + a[2]) * x + a[1]) * x + a[0]) / (((b[3] * x + b[2]) * x + b[1]) * x + b[0]));\n" + "}\n\n"; + + for(int order = 5; order <= i; ++order) + { + ofs << + "template \n" + "inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<" << order << ">*)\n" + "{\n" + " if(x <= 1)\n {\n" + " V x2 = x * x;\n" + " V t[4];\n"; + + if(order & 1) + { + ofs << " t[0] = a[" << order - 1 << "] * x2 + a[" << order - 3 << "];\n" ; + ofs << " t[1] = a[" << order - 2 << "] * x2 + a[" << order - 4 << "];\n" ; + ofs << " t[2] = b[" << order - 1 << "] * x2 + b[" << order - 3 << "];\n" ; + ofs << " t[3] = b[" << order - 2 << "] * x2 + b[" << order - 4 << "];\n" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << " t[0] *= x2;\n"; + if(item - 1 >= 0) + ofs << " t[1] *= x2;\n"; + ofs << " t[2] *= x2;\n"; + if(item - 1 >= 0) + ofs << " t[3] *= x2;\n"; + ofs << " t[0] += static_cast(a[" << item << "]);\n"; + if(item - 1 >= 0) + ofs << " t[1] += static_cast(a[" << item - 1 << "]);\n"; + ofs << " t[2] += static_cast(b[" << item << "]);\n"; + if(item - 1 >= 0) + ofs << " t[3] += static_cast(b[" << item - 1 << "]);\n"; + } + ofs << " t[1] *= x;\n"; + ofs << " t[3] *= x;\n"; + } + else + { + ofs << " t[0] = a[" << order - 1 << "] * x2 + a[" << order - 3 << "];\n" ; + ofs << " t[1] = a[" << order - 2 << "] * x2 + a[" << order - 4 << "];\n" ; + ofs << " t[2] = b[" << order - 1 << "] * x2 + b[" << order - 3 << "];\n" ; + ofs << " t[3] = b[" << order - 2 << "] * x2 + b[" << order - 4 << "];\n" ; + for(int item = order - 5; item >= 0; item -= 2) + { + ofs << " t[0] *= x2;\n"; + if(item - 1 >= 0) + ofs << " t[1] *= x2;\n"; + ofs << " t[2] *= x2;\n"; + if(item - 1 >= 0) + ofs << " t[3] *= x2;\n"; + ofs << " t[0] += static_cast(a[" << item << "]);\n"; + if(item - 1 >= 0) + ofs << " t[1] += static_cast(a[" << item - 1 << "]);\n"; + ofs << " t[2] += static_cast(b[" << item << "]);\n"; + if(item - 1 >= 0) + ofs << " t[3] += static_cast(b[" << item - 1 << "]);\n"; + } + ofs << " t[0] *= x;\n"; + ofs << " t[2] *= x;\n"; + } + ofs << " return (t[0] + t[1]) / (t[2] + t[3]);\n"; + + ofs << " }\n else\n {\n V z = 1 / x;\n V z2 = 1 / (x * x);\n V t[4];\n"; + + if(order & 1) + { + ofs << " t[0] = a[" << 0 << "] * z2 + a[" << 2 << "];\n" ; + ofs << " t[1] = a[" << 1 << "] * z2 + a[" << 3 << "];\n" ; + ofs << " t[2] = b[" << 0 << "] * z2 + b[" << 2 << "];\n" ; + ofs << " t[3] = b[" << 1 << "] * z2 + b[" << 3 << "];\n" ; + for(int item = 4; item < order; item += 2) + { + ofs << " t[0] *= z2;\n"; + if(item + 1 < order) + ofs << " t[1] *= z2;\n"; + ofs << " t[2] *= z2;\n"; + if(item + 1 < order) + ofs << " t[3] *= z2;\n"; + ofs << " t[0] += static_cast(a[" << item << "]);\n"; + if(item + 1 < order) + ofs << " t[1] += static_cast(a[" << item + 1 << "]);\n"; + ofs << " t[2] += static_cast(b[" << item << "]);\n"; + if(item + 1 < order) + ofs << " t[3] += static_cast(b[" << item + 1 << "]);\n"; + } + ofs << " t[1] *= z;\n"; + ofs << " t[3] *= z;\n"; + } + else + { + ofs << " t[0] = a[" << 0 << "] * z2 + a[" << 2 << "];\n" ; + ofs << " t[1] = a[" << 1 << "] * z2 + a[" << 3 << "];\n" ; + ofs << " t[2] = b[" << 0 << "] * z2 + b[" << 2 << "];\n" ; + ofs << " t[3] = b[" << 1 << "] * z2 + b[" << 3 << "];\n" ; + for(int item = 4; item < order; item += 2) + { + ofs << " t[0] *= z2;\n"; + if(item + 1 < order) + ofs << " t[1] *= z2;\n"; + ofs << " t[2] *= z2;\n"; + if(item + 1 < order) + ofs << " t[3] *= z2;\n"; + ofs << " t[0] += static_cast(a[" << item << "]);\n"; + if(item + 1 < order) + ofs << " t[1] += static_cast(a[" << item + 1 << "]);\n"; + ofs << " t[2] += static_cast(b[" << item << "]);\n"; + if(item + 1 < order) + ofs << " t[3] += static_cast(b[" << item + 1 << "]);\n"; + } + ofs << " t[0] *= z;\n"; + ofs << " t[2] *= z;\n"; + } + ofs << " return (t[0] + t[1]) / (t[2] + t[3]);\n }\n"; + + ofs << "}\n\n"; + } + // + // And finally the boilerplate at the end of the header: + // + ofs << "\n}}}} // namespaces\n\n#endif // include guard\n\n"; + } +} + +int main() +{ + for(int i = 2; i <= max_order; ++i) + { + print_polynomials(i); + print_rationals(i); + } + return 0; +} + + + diff --git a/tools/generate_rational_test.cpp b/tools/generate_rational_test.cpp new file mode 100644 index 000000000..d3719faed --- /dev/null +++ b/tools/generate_rational_test.cpp @@ -0,0 +1,526 @@ +// (C) Copyright John Maddock 2007. +// 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) + +#define BOOST_MATH_POLY_METHOD 0 +#define BOOST_MATH_RATIONAL_METHOD 0 + +#include +#include +#include +#include +#include + +int main() +{ + using namespace boost::math; + using namespace boost::math::tools; + + static const unsigned max_order = 20; + + boost::math::ntl::RR::SetPrecision(500); + boost::math::ntl::RR::SetOutputPrecision(40); + + std::tr1::mt19937 rnd; + std::tr1::variate_generator< + std::tr1::mt19937, + std::tr1::uniform_int<> > gen(rnd, std::tr1::uniform_int<>(1, 12)); + + for(unsigned i = 1; i < max_order; ++i) + { + std::vector coef; + for(unsigned j = 0; j < i; ++j) + { + coef.push_back(gen()); + } + std::cout << std::scientific; + std::cout << +" //\n" +" // Polynomials of order " << i-1 << "\n" +" //\n" +" static const U n" << i << "c[" << i << "] = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + std::cout << + " static const boost::array n" << i << "a = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + + boost::math::ntl::RR r1 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + boost::math::ntl::RR r2 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + boost::math::ntl::RR r3 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + boost::math::ntl::RR r4 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + boost::math::ntl::RR r5 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(6.5), i); + boost::math::ntl::RR r6 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(10247.25), i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(6.5), " << i << "),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(10247.25), " << i << "),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(6.5)),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(10247.25)),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(6.5)),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(10247.25)),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + r1 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + r2 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + r3 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + r4 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + r5 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(6.5), i); + r6 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(10247.25), i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(6.5f), " << i << "),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(10247.25f), " << i << "),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(6.5f)),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(10247.25f)),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(6.5f)),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(10247.25f)),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + if(i > 1) + { + r1 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + r2 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + r3 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + r4 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + r5 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(6.5), i); + r6 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(10247.25), i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(6.5f), " << i << "),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(10247.25f), " << i << "),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(6.5f)),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(10247.25f)),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n"; + if(fabs(r5) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(6.5f)),\n" + " static_cast(" << r5 << "L),\n" + " tolerance);\n"; + if(fabs(r6) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(10247.25f)),\n" + " static_cast(" << r6 << "L),\n" + " tolerance);\n\n"; + } + + r1 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + r2 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + r3 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + r4 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + r5 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(6.5), i); + r6 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(10247.25), i); + + coef.clear(); + for(unsigned j = 0; j < i; ++j) + { + coef.push_back(gen()); + } + std::cout << +" //\n" +" // Rational functions of order " << i-1 << "\n" +" //\n" +" static const U d" << i << "c[" << i << "] = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + std::cout << + " static const boost::array d" << i << "a = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + + boost::math::ntl::RR r1d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + boost::math::ntl::RR r2d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + boost::math::ntl::RR r3d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + boost::math::ntl::RR r4d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + boost::math::ntl::RR r5d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(6.5), i); + boost::math::ntl::RR r6d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(10247.25), i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1/r1d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2/r2d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3/r3d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4/r4d << "L),\n" + " tolerance);\n"; + if(fabs(r5/r5d) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(6.5f), " << i << "),\n" + " static_cast(" << r5/r5d << "L),\n" + " tolerance);\n"; + if(fabs(r6/r6d) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(10247.25f), " << i << "),\n" + " static_cast(" << r6/r6d << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1/r1d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2/r2d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3/r3d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4/r4d << "L),\n" + " tolerance);\n"; + if(fabs(r5/r5d) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(6.5f)),\n" + " static_cast(" << r5/r5d << "L),\n" + " tolerance);\n"; + if(fabs(r6/r6d) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(10247.25f)),\n" + " static_cast(" << r6/r6d << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1/r1d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2/r2d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3/r3d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4/r4d << "L),\n" + " tolerance);\n"; + if(fabs(r5/r5d) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(6.5f)),\n" + " static_cast(" << r5/r5d << "L),\n" + " tolerance);\n"; + if(fabs(r6/r6d) < tools::max_value()) + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(10247.25f)),\n" + " static_cast(" << r6/r6d << "L),\n" + " tolerance);\n\n"; + } + + return 0; +} + + + diff --git a/tools/hermite_data.cpp b/tools/hermite_data.cpp new file mode 100644 index 000000000..1df52aa1b --- /dev/null +++ b/tools/hermite_data.cpp @@ -0,0 +1,73 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + + +template +std::tr1::tuple hermite_data(T n, T x) +{ + n = floor(n); + T r1 = hermite(boost::math::tools::real_cast(n), x); + return std::tr1::make_tuple(n, x, r1); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2, arg3; + test_data data; + + std::cout << boost::math::hermite(10, static_cast(1e300)) << std::endl; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "n")) + return 1; + if(0 == get_user_parameter_info(arg2, "x")) + return 1; + arg1.type |= dummy_param; + arg2.type |= dummy_param; + + data.insert(&hermite_data, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=hermite.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "hermite.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/ibeta_data.cpp b/tools/ibeta_data.cpp new file mode 100644 index 000000000..e4c5f76a2 --- /dev/null +++ b/tools/ibeta_data.cpp @@ -0,0 +1,310 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +// speed up beta function computation with a 90-decimal digit approximation: +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + +template +struct ibeta_fraction1_t +{ + typedef std::pair result_type; + + ibeta_fraction1_t(T a_, T b_, T x_) : a(a_), b(b_), x(x_), k(1) {} + + result_type operator()() + { + T aN; + if(k & 1) + { + int m = (k - 1) / 2; + aN = -(a + m) * (a + b + m) * x; + aN /= a + 2*m; + aN /= a + 2*m + 1; + } + else + { + int m = k / 2; + aN = m * (b - m) *x; + aN /= a + 2*m - 1; + aN /= a + 2*m; + } + ++k; + return std::make_pair(aN, T(1)); + } + +private: + T a, b, x; + int k; +}; + +// +// This function caches previous calls to beta +// just so we can speed things up a bit: +// +template +T get_beta(T a, T b) +{ + static std::map, T> m; + + if(a < b) + std::swap(a, b); + + std::pair p(a, b); + std::map, T>::const_iterator i = m.find(p); + if(i != m.end()) + return i->second; + + T r = beta(a, b); + p.first = a; + p.second = b; + m[p] = r; + + return r; +} + +// +// compute the continued fraction: +// +template +T get_ibeta_fraction1(T a, T b, T x) +{ + ibeta_fraction1_t f(a, b, x); + T fract = boost::math::tools::continued_fraction_a(f, boost::math::policies::digits >()); + T denom = (a * (fract + 1)); + T num = pow(x, a) * pow(1 - x, b); + if(num == 0) + return 0; + else if(denom == 0) + return -1; + return num / denom; +} +// +// calculate the incomplete beta from the fraction: +// +template +std::pair ibeta_fraction1(T a, T b, T x) +{ + T bet = get_beta(a, b); + if(x > ((a+1)/(a+b+2))) + { + T fract = get_ibeta_fraction1(b, a, 1-x); + if(fract/bet > 0.75) + { + fract = get_ibeta_fraction1(a, b, x); + return std::make_pair(fract, bet - fract); + } + return std::make_pair(bet - fract, fract); + } + T fract = get_ibeta_fraction1(a, b, x); + if(fract/bet > 0.75) + { + fract = get_ibeta_fraction1(b, a, 1-x); + return std::make_pair(bet - fract, fract); + } + return std::make_pair(fract, bet - fract); + +} +// +// calculate the regularised incomplete beta from the fraction: +// +template +std::pair ibeta_fraction1_regular(T a, T b, T x) +{ + T bet = get_beta(a, b); + if(x > ((a+1)/(a+b+2))) + { + T fract = get_ibeta_fraction1(b, a, 1-x); + if(fract == 0) + bet = 1; // normalise so we don't get 0/0 + else if(bet == 0) + return std::make_pair(T(-1), T(-1)); // Yikes!! + if(fract / bet > 0.75) + { + fract = get_ibeta_fraction1(a, b, x); + return std::make_pair(fract / bet, 1 - (fract / bet)); + } + return std::make_pair(1 - (fract / bet), fract / bet); + } + T fract = get_ibeta_fraction1(a, b, x); + if(fract / bet > 0.75) + { + fract = get_ibeta_fraction1(b, a, 1-x); + return std::make_pair(1 - (fract / bet), fract / bet); + } + return std::make_pair(fract / bet, 1 - (fract / bet)); +} + +// +// we absolutely must trunctate the input values to float +// precision: we have to be certain that the input values +// can be represented exactly in whatever width floating +// point type we are testing, otherwise the output will +// necessarily be off. +// +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +std::tr1::mt19937 rnd; +std::tr1::uniform_real ur_a(1.0F, 5.0F); +std::tr1::variate_generator > gen(rnd, ur_a); +std::tr1::uniform_real ur_a2(0.0F, 100.0F); +std::tr1::variate_generator > gen2(rnd, ur_a2); + +struct beta_data_generator +{ + std::tr1::tuple operator()(boost::math::ntl::RR ap, boost::math::ntl::RR bp, boost::math::ntl::RR x_) + { + float a = truncate_to_float(real_cast(gen() * pow(boost::math::ntl::RR(10), ap))); + float b = truncate_to_float(real_cast(gen() * pow(boost::math::ntl::RR(10), bp))); + float x = truncate_to_float(real_cast(x_)); + std::cout << a << " " << b << " " << x << std::endl; + std::pair ib_full = ibeta_fraction1(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + std::pair ib_reg = ibeta_fraction1_regular(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + return std::tr1::make_tuple(a, b, x, ib_full.first, ib_full.second, ib_reg.first, ib_reg.second); + } +}; + +// medium sized values: +struct beta_data_generator_medium +{ + std::tr1::tuple operator()(boost::math::ntl::RR x_) + { + boost::math::ntl::RR a = gen2(); + boost::math::ntl::RR b = gen2(); + boost::math::ntl::RR x = x_; + a = ConvPrec(a.value(), 22); + b = ConvPrec(b.value(), 22); + x = ConvPrec(x.value(), 22); + std::cout << a << " " << b << " " << x << std::endl; + //boost::math::ntl::RR exp_beta = boost::math::beta(a, b, x); + std::pair ib_full = ibeta_fraction1(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + /*exp_beta = boost::math::tools::relative_error(ib_full.first, exp_beta); + if(exp_beta > 1e-40) + { + std::cout << exp_beta << std::endl; + }*/ + std::pair ib_reg = ibeta_fraction1_regular(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + return std::tr1::make_tuple(a, b, x, ib_full.first, ib_full.second, ib_reg.first, ib_reg.second); + } +}; + +struct beta_data_generator_small +{ + std::tr1::tuple operator()(boost::math::ntl::RR x_) + { + float a = truncate_to_float(gen2()/10); + float b = truncate_to_float(gen2()/10); + float x = truncate_to_float(real_cast(x_)); + std::cout << a << " " << b << " " << x << std::endl; + std::pair ib_full = ibeta_fraction1(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + std::pair ib_reg = ibeta_fraction1_regular(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + return std::tr1::make_tuple(a, b, x, ib_full.first, ib_full.second, ib_reg.first, ib_reg.second); + } +}; + +struct beta_data_generator_int +{ + std::tr1::tuple operator()(boost::math::ntl::RR a, boost::math::ntl::RR b, boost::math::ntl::RR x_) + { + float x = truncate_to_float(real_cast(x_)); + std::cout << a << " " << b << " " << x << std::endl; + std::pair ib_full = ibeta_fraction1(a, b, boost::math::ntl::RR(x)); + std::pair ib_reg = ibeta_fraction1_regular(a, b, boost::math::ntl::RR(x)); + return std::tr1::make_tuple(a, b, x, ib_full.first, ib_full.second, ib_reg.first, ib_reg.second); + } +}; + +int test_main(int, char* []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1, arg2, arg3, arg4, arg5; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the incomplete beta functions:\n" + " beta(a, b, x) and ibeta(a, b, x)\n\n" + "This is not an interactive program be prepared for a long wait!!!\n\n"; + + arg1 = make_periodic_param(boost::math::ntl::RR(-5), boost::math::ntl::RR(6), 11); + arg2 = make_periodic_param(boost::math::ntl::RR(-5), boost::math::ntl::RR(6), 11); + arg3 = make_random_param(boost::math::ntl::RR(0.0001), boost::math::ntl::RR(1), 10); + arg4 = make_random_param(boost::math::ntl::RR(0.0001), boost::math::ntl::RR(1), 100 /*500*/); + arg5 = make_periodic_param(boost::math::ntl::RR(1), boost::math::ntl::RR(41), 10); + + arg1.type |= dummy_param; + arg2.type |= dummy_param; + arg3.type |= dummy_param; + arg4.type |= dummy_param; + arg5.type |= dummy_param; + + // comment out all but one of the following when running + // or this program will take forever to complete! + //data.insert(beta_data_generator(), arg1, arg2, arg3); + //data.insert(beta_data_generator_medium(), arg4); + //data.insert(beta_data_generator_small(), arg4); + data.insert(beta_data_generator_int(), arg5, arg5, arg3); + + test_data::const_iterator i, j; + i = data.begin(); + j = data.end(); + while(i != j) + { + boost::math::ntl::RR v1 = beta((*i)[0], (*i)[1], (*i)[2]); + boost::math::ntl::RR v2 = relative_error(v1, (*i)[3]); + std::string s = boost::lexical_cast((*i)[3]); + boost::math::ntl::RR v3 = boost::lexical_cast(s); + boost::math::ntl::RR v4 = relative_error(v3, (*i)[3]); + if(v2 > 1e-40) + { + std::cout << v2 << std::endl; + } + if(v4 > 1e-60) + { + std::cout << v4 << std::endl; + } + ++ i; + } + + std::cout << "Enter name of test data file [default=ibeta_data.ipp]"; + std::string line; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "ibeta_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "ibeta_data"); + + return 0; +} + + diff --git a/tools/ibeta_inv_data.cpp b/tools/ibeta_inv_data.cpp new file mode 100644 index 000000000..b13fd9400 --- /dev/null +++ b/tools/ibeta_inv_data.cpp @@ -0,0 +1,93 @@ +// (C) Copyright John Maddock 2006. +// 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) + +#if 1 +#include +#include +#include +#include +#include +#include +#include + +#include +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; + +// +// Force trunctation to float precision of input values: +// we must ensure that the input values are exactly representable +// in whatever type we are testing, or the output values will all +// be thrown off: +// +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +std::tr1::mt19937 rnd; +std::tr1::uniform_real ur_a(1.0F, 5.0F); +std::tr1::variate_generator > gen(rnd, ur_a); +std::tr1::uniform_real ur_a2(0.0F, 100.0F); +std::tr1::variate_generator > gen2(rnd, ur_a2); + +struct ibeta_inv_data_generator +{ + std::tr1::tuple operator()(boost::math::ntl::RR ap, boost::math::ntl::RR bp, boost::math::ntl::RR x_) + { + float a = truncate_to_float(real_cast(gen() * pow(boost::math::ntl::RR(10), ap))); + float b = truncate_to_float(real_cast(gen() * pow(boost::math::ntl::RR(10), bp))); + float x = truncate_to_float(real_cast(x_)); + std::cout << a << " " << b << " " << x << std::flush; + boost::math::ntl::RR inv = boost::math::ibeta_inv(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + std::cout << " " << inv << std::flush; + boost::math::ntl::RR invc = boost::math::ibetac_inv(boost::math::ntl::RR(a), boost::math::ntl::RR(b), boost::math::ntl::RR(x)); + std::cout << " " << invc << std::endl; + return std::tr1::make_tuple(a, b, x, inv, invc); + } +}; + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(100); + + bool cont; + std::string line; + + parameter_info arg1, arg2, arg3; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse incomplete beta function:\n" + " ibeta_inv(a, p) and ibetac_inv(a, q)\n\n"; + + arg1 = make_periodic_param(boost::math::ntl::RR(-5), boost::math::ntl::RR(6), 11); + arg2 = make_periodic_param(boost::math::ntl::RR(-5), boost::math::ntl::RR(6), 11); + arg3 = make_random_param(boost::math::ntl::RR(0.0001), boost::math::ntl::RR(1), 10); + + arg1.type |= dummy_param; + arg2.type |= dummy_param; + arg3.type |= dummy_param; + + data.insert(ibeta_inv_data_generator(), arg1, arg2, arg3); + + line = "ibeta_inv_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "ibeta_inv_data"); + + return 0; +} + +#endif diff --git a/tools/ibeta_invab_data.cpp b/tools/ibeta_invab_data.cpp new file mode 100644 index 000000000..9ac7ea0cc --- /dev/null +++ b/tools/ibeta_invab_data.cpp @@ -0,0 +1,96 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; + +// +// Force trunctation to float precision of input values: +// we must ensure that the input values are exactly representable +// in whatever type we are testing, or the output values will all +// be thrown off: +// +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +std::tr1::mt19937 rnd; +std::tr1::uniform_real ur_a(1.0F, 5.0F); +std::tr1::variate_generator > gen(rnd, ur_a); +std::tr1::uniform_real ur_a2(0.0F, 100.0F); +std::tr1::variate_generator > gen2(rnd, ur_a2); + +struct ibeta_inv_data_generator +{ + std::tr1::tuple operator() + (boost::math::ntl::RR bp, boost::math::ntl::RR x_, boost::math::ntl::RR p_) + { + float b = truncate_to_float(real_cast(gen() * pow(boost::math::ntl::RR(10), bp))); + float x = truncate_to_float(real_cast(x_)); + float p = truncate_to_float(real_cast(p_)); + std::cout << b << " " << x << " " << p << std::flush; + boost::math::ntl::RR inv = boost::math::ibeta_inva(boost::math::ntl::RR(b), boost::math::ntl::RR(x), boost::math::ntl::RR(p)); + std::cout << " " << inv << std::flush; + boost::math::ntl::RR invc = boost::math::ibetac_inva(boost::math::ntl::RR(b), boost::math::ntl::RR(x), boost::math::ntl::RR(p)); + std::cout << " " << invc << std::endl; + boost::math::ntl::RR invb = boost::math::ibeta_invb(boost::math::ntl::RR(b), boost::math::ntl::RR(x), boost::math::ntl::RR(p)); + std::cout << " " << invb << std::flush; + boost::math::ntl::RR invbc = boost::math::ibetac_invb(boost::math::ntl::RR(b), boost::math::ntl::RR(x), boost::math::ntl::RR(p)); + std::cout << " " << invbc << std::endl; + return std::tr1::make_tuple(b, x, p, inv, invc, invb, invbc); + } +}; + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(100); + + bool cont; + std::string line; + + parameter_info arg1, arg2, arg3; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse incomplete beta function:\n" + " ibeta_inva(a, p) and ibetac_inva(a, q)\n\n"; + + arg1 = make_periodic_param(boost::math::ntl::RR(-5), boost::math::ntl::RR(6), 11); + arg2 = make_random_param(boost::math::ntl::RR(0.0001), boost::math::ntl::RR(1), 10); + arg3 = make_random_param(boost::math::ntl::RR(0.0001), boost::math::ntl::RR(1), 10); + + arg1.type |= dummy_param; + arg2.type |= dummy_param; + arg3.type |= dummy_param; + + data.insert(ibeta_inv_data_generator(), arg1, arg2, arg3); + + line = "ibeta_inva_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "ibeta_inva_data"); + + return 0; +} + diff --git a/tools/igamma_data.cpp b/tools/igamma_data.cpp new file mode 100644 index 000000000..273870291 --- /dev/null +++ b/tools/igamma_data.cpp @@ -0,0 +1,183 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +#include +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; + +// +// Force trunctation to float precision of input values: +// we must ensure that the input values are exactly representable +// in whatever type we are testing, or the output values will all +// be thrown off: +// +float external_f; +float force_truncate(const float* f) +{ + external_f = *f; + return external_f; +} + +float truncate_to_float(boost::math::ntl::RR r) +{ + float f = boost::math::tools::real_cast(r); + return force_truncate(&f); +} + +// +// Our generator takes two arguments, but the second is interpreted +// as an instruction not a value, the second argument won't be placed +// in the output matrix by class test_data, so we add our algorithmically +// derived second argument to the output. +// +struct igamma_data_generator +{ + std::tr1::tuple operator()(boost::math::ntl::RR a, boost::math::ntl::RR x) + { + // very naively calculate spots: + boost::math::ntl::RR z; + switch((int)real_cast(x)) + { + case 1: + z = truncate_to_float((std::min)(boost::math::ntl::RR(1), a/100)); + break; + case 2: + z = truncate_to_float(a / 2); + break; + case 3: + z = truncate_to_float((std::max)(0.9*a, a - 2)); + break; + case 4: + z = a; + break; + case 5: + z = truncate_to_float((std::min)(1.1*a, a + 2)); + break; + case 6: + z = truncate_to_float(a * 2); + break; + case 7: + z = truncate_to_float((std::max)(boost::math::ntl::RR(100), a*100)); + break; + default: + BOOST_ASSERT(0 == "Can't get here!!"); + } + + //boost::math::ntl::RR g = boost::math::tgamma(a); + boost::math::ntl::RR lg = boost::math::tgamma_lower(a, z); + boost::math::ntl::RR ug = boost::math::tgamma(a, z); + boost::math::ntl::RR rlg = boost::math::gamma_p(a, z); + boost::math::ntl::RR rug = boost::math::gamma_q(a, z); + + return std::tr1::make_tuple(z, ug, rug, lg, rlg); + } +}; + +struct gamma_inverse_generator +{ + std::tr1::tuple operator()(const boost::math::ntl::RR a, const boost::math::ntl::RR p) + { + boost::math::ntl::RR x1 = boost::math::gamma_p_inv(a, p); + boost::math::ntl::RR x2 = boost::math::gamma_q_inv(a, p); + std::cout << "Inverse for " << a << " " << p << std::endl; + return std::tr1::make_tuple(x1, x2); + } +}; + +struct gamma_inverse_generator_a +{ + std::tr1::tuple operator()(const boost::math::ntl::RR x, const boost::math::ntl::RR p) + { + boost::math::ntl::RR x1 = boost::math::gamma_p_inva(x, p); + boost::math::ntl::RR x2 = boost::math::gamma_q_inva(x, p); + std::cout << "Inverse for " << x << " " << p << std::endl; + return std::tr1::make_tuple(x1, x2); + } +}; + + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(100); + + bool cont; + std::string line; + + parameter_info arg1, arg2; + test_data data; + + if((argc >= 2) && (std::strcmp(argv[1], "-inverse") == 0)) + { + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse incomplete gamma function:\n" + " gamma_p_inv(a, p) and gamma_q_inv(a, q)\n\n"; + do{ + get_user_parameter_info(arg1, "a"); + get_user_parameter_info(arg2, "p"); + data.insert(gamma_inverse_generator(), arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + else if((argc >= 2) && (std::strcmp(argv[1], "-inverse_a") == 0)) + { + std::cout << "Welcome.\n" + "This program will generate spot tests for the inverse incomplete gamma function:\n" + " gamma_p_inva(a, p) and gamma_q_inva(a, q)\n\n"; + do{ + get_user_parameter_info(arg1, "x"); + get_user_parameter_info(arg2, "p"); + data.insert(gamma_inverse_generator_a(), arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + else + { + arg2 = make_periodic_param(boost::math::ntl::RR(1), boost::math::ntl::RR(8), 7); + arg2.type |= boost::math::tools::dummy_param; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the incomplete gamma function:\n" + " gamma(a, z)\n\n"; + + do{ + get_user_parameter_info(arg1, "a"); + data.insert(igamma_data_generator(), arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + + std::cout << "Enter name of test data file [default=igamma_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "igamma_data.ipp"; + std::ofstream ofs(line.c_str()); + write_code(ofs, data, "igamma_data"); + + return 0; +} + diff --git a/tools/igamma_temme_large_coef.cpp b/tools/igamma_temme_large_coef.cpp new file mode 100644 index 000000000..d84663890 --- /dev/null +++ b/tools/igamma_temme_large_coef.cpp @@ -0,0 +1,210 @@ +// Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using namespace NTL; +using namespace boost::math; + +// +// This program calculates the coefficients of the polynomials +// used for the regularized incomplete gamma functions gamma_p +// and gamma_q when parameter a is large, and sigma is small +// (where sigma = fabs(1 - x/a) ). +// +// See "The Asymptotic Expansion of the Incomplete Gamma Functions" +// N. M. Temme. +// Siam J. Math Anal. Vol 10 No 4, July 1979, p757. +// Coeffient calculation is described from Eq 3.8 (p762) onwards. +// + +// +// Alpha: +// +RR alpha(unsigned k) +{ + static map data; + if(data.empty()) + { + data[1] = 1; + } + + map::const_iterator pos = data.find(k); + if(pos != data.end()) + return (*pos).second; + // + // OK try and calculate the value: + // + RR result = alpha(k-1); + for(unsigned j = 2; j <= k-1; ++j) + { + result -= j * alpha(j) * alpha(k-j+1); + } + result /= (k+1); + data[k] = result; + return result; +} + +boost::math::ntl::RR gamma(unsigned k) +{ + static map data; + + map::const_iterator pos = data.find(k); + if(pos != data.end()) + return (*pos).second; + + boost::math::ntl::RR result = (k&1) ? -1 : 1; + + for(unsigned i = 1; i <= (2 * k + 1); i += 2) + result *= i; + result *= alpha(2 * k + 1); + data[k] = result; + return result; +} + +boost::math::ntl::RR Coeff(unsigned n, unsigned k) +{ + map > data; + if(data.empty()) + data[0][0] = boost::math::ntl::RR(-1) / 3; + + map >::const_iterator p1 = data.find(n); + if(p1 != data.end()) + { + map::const_iterator p2 = p1->second.find(k); + if(p2 != p1->second.end()) + { + return p2->second; + } + } + + // + // If we don't have the value, calculate it: + // + if(k == 0) + { + // special case: + boost::math::ntl::RR result = (n+2) * alpha(n+2); + data[n][k] = result; + return result; + } + // general case: + boost::math::ntl::RR result = gamma(k) * Coeff(n, 0) + (n+2) * Coeff(n+2, k-1); + data[n][k] = result; + return result; +} + +void calculate_terms(double sigma, double a, unsigned bits) +{ + cout << endl << endl; + cout << "Sigma: " << sigma << endl; + cout << "A: " << a << endl; + double lambda = 1 - sigma; + cout << "Lambda: " << lambda << endl; + double y = a * (-sigma - log1p(-sigma)); + cout << "Y: " << y << endl; + double z = -sqrt(2 * (-sigma - log1p(-sigma))); + cout << "Z: " << z << endl; + double dom = erfc(sqrt(y)) / 2; + cout << "Erfc term: " << dom << endl; + double lead = exp(-y) / sqrt(2 * constants::pi() * a); + cout << "Remainder factor: " << lead << endl; + double eps = ldexp(1.0, 1 - static_cast(bits)); + double target = dom * eps / lead; + cout << "Target smallest term: " << target << endl; + + unsigned max_n = 0; + + for(unsigned n = 0; n < 10000; ++n) + { + double term = tools::real_cast(Coeff(n, 0) * pow(z, (double)n)); + if(fabs(term) < target) + { + max_n = n-1; + break; + } + } + cout << "Max n required: " << max_n << endl; + + unsigned max_k; + for(unsigned k = 1; k < 10000; ++k) + { + double term = tools::real_cast(Coeff(0, k) * pow(a, -((double)k))); + if(fabs(term) < target) + { + max_k = k-1; + break; + } + } + cout << "Max k required: " << max_k << endl << endl; + + bool code = false; + cout << "Print code [0|1]? "; + cin >> code; + + int prec = 2 + (static_cast(bits) * 3010LL)/10000; + RR::SetOutputPrecision(prec); + + if(code) + { + cout << " T workspace[" << max_k+1 << "];\n\n"; + for(unsigned k = 0; k <= max_k; ++k) + { + cout << + " static const T C" << k << "[] = {\n"; + for(unsigned n = 0; n < 10000; ++n) + { + double term = tools::real_cast(Coeff(n, k) * pow(a, -((double)k)) * pow(z, (double)n)); + if(fabs(term) < target) + { + break; + } + cout << " " << Coeff(n, k) << "L,\n"; + } + cout << + " };\n" + " workspace[" << k << "] = tools::evaluate_polynomial(C" << k << ", z);\n\n"; + } + cout << " T result = tools::evaluate_polynomial(workspace, 1/a);\n\n"; + } +} + + +int main() +{ + RR::SetOutputPrecision(50); + RR::SetPrecision(1000); + + bool cont; + do{ + cont = false; + double sigma; + cout << "Enter max value for sigma (sigma = |1 - x/a|): "; + cin >> sigma; + double a; + cout << "Enter min value for a: "; + cin >> a; + unsigned precision; + cout << "Enter number of bits precision required: "; + cin >> precision; + + calculate_terms(sigma, a, precision); + + cout << "Try again[0|1]: "; + cin >> cont; + + }while(cont); + + + return 0; +} + diff --git a/tools/laguerre_data.cpp b/tools/laguerre_data.cpp new file mode 100644 index 000000000..bacc1aae3 --- /dev/null +++ b/tools/laguerre_data.cpp @@ -0,0 +1,106 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + + +template +std::tr1::tuple laguerre2_data(T n, T x) +{ + n = floor(n); + T r1 = laguerre(boost::math::tools::real_cast(n), x); + return std::tr1::make_tuple(n, x, r1); +} + +template +std::tr1::tuple laguerre3_data(T n, T m, T x) +{ + n = floor(n); + m = floor(m); + T r1 = laguerre(real_cast(n), real_cast(m), x); + return std::tr1::make_tuple(n, m, x, r1); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2, arg3; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + if(strcmp(argv[1], "--laguerre2") == 0) + { + do{ + if(0 == get_user_parameter_info(arg1, "n")) + return 1; + if(0 == get_user_parameter_info(arg2, "x")) + return 1; + arg1.type |= dummy_param; + arg2.type |= dummy_param; + + data.insert(&laguerre2_data, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + else if(strcmp(argv[1], "--laguerre3") == 0) + { + do{ + if(0 == get_user_parameter_info(arg1, "n")) + return 1; + if(0 == get_user_parameter_info(arg2, "m")) + return 1; + if(0 == get_user_parameter_info(arg3, "x")) + return 1; + arg1.type |= dummy_param; + arg2.type |= dummy_param; + arg3.type |= dummy_param; + + data.insert(&laguerre3_data, arg1, arg2, arg3); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + + + std::cout << "Enter name of test data file [default=laguerre.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "laguerre.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/lanczos_generator.cpp b/tools/lanczos_generator.cpp new file mode 100644 index 000000000..f5bf59b63 --- /dev/null +++ b/tools/lanczos_generator.cpp @@ -0,0 +1,4368 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// +// this is a sort of recursive include, since this file +// is used to create the contents of gamma.hpp. +// However, we will be using the "generic" version of gamma +// which doesn't use a lanczos approximation. +// +#include + +#include +#include +#include + +using boost::numeric::ublas::matrix; +using boost::numeric::ublas::vector; + +struct lanczos_spot_data +{ + int N; + double g; + double err; +}; + +lanczos_spot_data sweet_spots[] = { +// a few selected spots from Pugh's thesis: +3, 2.03209, 6.4e-7, +4, 3.655180, 8.5e-8, +9, 8.406094, 6.9e-15, +10, 9.656578, 2.1e-16, +11, 10.900511, 6.1e-18, +12, 12.066012, 1.1e-19, +13, 13.144565, 5.2e-21, +14, 13.726821, 4.0e-22, +15, 14.977863, 1.2e-23, +20, 20.298892, 7.8e-31, +21, 21.508926, 2.1e-32, +22, 22.618910, 1.8e-34, +23, 23.118012, 5.2e-35, + +// some more we've found, these are all the points where the first +// negleted term from the Lanczos series changes sign, there is one +// point just above that point, and one just below: + +3, 0.58613894134759903, 0.00036580426080686315, +3, 0.58613894879817963, 0.00036580416320668711, +3, 1.249951496720314, 4.2305536798953929e-005, +3, 1.2499515041708946, 4.2305534015367749e-005, +3, 1.8384982049465179, 1.164778449938813e-005, +3, 1.8384982123970985, 1.1647786529958048e-005, +3, 2.3276706635951996, 5.3732582230468998e-006, +3, 2.3276706710457802, 5.3732600294516588e-006, +3, 2.6038404405117035, 7.4060771171390379e-007, +3, 2.6038404479622841, 7.406058543248471e-007, +4, 0.62704569846391678, 0.00012800533557793425, +4, 0.62704570591449738, 0.00012800531551557324, +4, 1.3344274088740349, 9.0166140418663663e-006, +4, 1.3344274163246155, 9.0166116338646694e-006, +4, 1.9880444705486298, 1.4955557778725745e-006, +4, 1.9880444779992104, 1.4955557079994109e-006, +4, 2.5835030898451805, 4.5877676859600527e-007, +4, 2.5835030972957611, 4.5877667876325684e-007, +4, 3.1086832508444786, 2.1441725587707906e-007, +4, 3.1086832582950592, 2.1441723688775765e-007, +4, 3.5476611852645874, 1.0813760990515544e-007, +4, 3.547661192715168, 1.0813766234070327e-007, +4, 3.6492579728364944, 1.047642251124206e-007, +4, 3.649257980287075, 1.0476415796074403e-007, +5, 0.65435918420553207, 5.5274429026631278e-005, +5, 0.65435919165611267, 5.527441185903385e-005, +5, 1.389187254011631, 2.6307833416554052e-006, +5, 1.3891872614622116, 2.6307826816540255e-006, +5, 2.0801975876092911, 2.9014694764756466e-007, +5, 2.0801975950598717, 2.9014696142909125e-007, +5, 2.7272208333015442, 5.9176544536206063e-008, +5, 2.7272208407521248, 5.9176528019009275e-008, +5, 3.3269794136285782, 1.9379184595472579e-008, +5, 3.3269794210791588, 1.9379189057179851e-008, +5, 3.8722873777151108, 9.0123694745032944e-009, +5, 3.8722873851656914, 9.0123661007867372e-009, +5, 4.3516943231225014, 4.9816097608842378e-009, +5, 4.351694330573082, 4.9816087871575021e-009, +6, 0.67425807565450668, 2.7371903086326379e-005, +6, 0.67425808310508728, 2.7371893712684938e-005, +6, 1.4284561350941658, 9.4138428977455083e-007, +6, 1.4284561425447464, 9.4138417896969612e-007, +6, 2.1447814926505089, 7.4109049995920916e-008, +6, 2.1447815001010895, 7.4109044064461768e-008, +6, 2.8244904428720474, 1.0708333024058614e-008, +6, 2.824490450322628, 1.0708333661155651e-008, +6, 3.4669468700885773, 2.4940116660002578e-009, +6, 3.4669468775391579, 2.4940118560592828e-009, +6, 4.0696377158164978, 8.5267622527507512e-010, +6, 4.0696377232670784, 8.5267624048985822e-010, +6, 4.6278460025787354, 3.9323405231792876e-010, +6, 4.6278460100293159, 3.9323393550021793e-010, +6, 5.1345816180109978, 2.1943462473419721e-010, +6, 5.1345816254615784, 2.1943458105218707e-010, +6, 5.5917193591594696, 1.242916896389048e-010, +6, 5.5917193666100502, 1.2429175679293363e-010, +7, 0.68959406018257141, 1.4934177419305624e-005, +7, 0.68959406763315201, 1.4934171696393048e-005, +7, 1.4584139510989189, 3.8891482410396904e-007, +7, 1.4584139585494995, 3.8891475436265016e-007, +7, 2.1934122517704964, 2.2977989848570384e-008, +7, 2.193412259221077, 2.2977982819591052e-008, +7, 2.8964230641722679, 2.4742239281355561e-009, +7, 2.8964230716228485, 2.4742234478616864e-009, +7, 3.5678729563951492, 4.2816138965285379e-010, +7, 3.5678729638457298, 4.2816128067858218e-010, +7, 4.2069913893938065, 1.0931003472338519e-010, +7, 4.2069913968443871, 1.0931004659777642e-010, +7, 4.8118086308240891, 3.8518213120095777e-011, +7, 4.8118086382746696, 3.8518212172324096e-011, +7, 5.3790060579776764, 1.7613602961109952e-011, +7, 5.379006065428257, 1.7613603275796266e-011, +7, 5.9039439857006073, 9.7098281187573355e-012, +7, 5.9039439931511879, 9.7098271522398387e-012, +7, 6.3838147521018982, 5.7878801570305524e-012, +7, 6.3838147595524788, 5.7878771973838702e-012, +7, 6.7833591029047966, 2.829092368392454e-012, +7, 6.7833591103553772, 2.8290901754246269e-012, +8, 0.70188850909471512, 8.7610752024780369e-006, +8, 0.70188851654529572, 8.7610704217796693e-006, +8, 1.4822541922330856, 1.7881701068328982e-007, +8, 1.4822541996836662, 1.7881694190606741e-007, +8, 2.231784276664257, 8.2272386690167009e-009, +8, 2.2317842841148376, 8.2272367814664617e-009, +8, 2.9525627419352531, 6.8591536474980462e-010, +8, 2.9525627493858337, 6.8591515664364383e-010, +8, 3.6455128863453865, 9.1549235855884194e-011, +8, 3.6455128937959671, 9.1549217088498416e-011, +8, 4.3106606528162956, 1.8015466799942756e-011, +8, 4.3106606602668762, 1.8015467001952356e-011, +8, 4.9472371935844421, 4.918149362493385e-012, +8, 4.9472372010350227, 4.9181495178774722e-012, +8, 5.553666315972805, 1.7720036810370511e-012, +8, 5.5536663234233856, 1.7720035779693502e-012, +8, 6.1274929493665695, 8.0403304333886761e-013, +8, 6.1274929568171501, 8.0403274526493467e-013, +8, 6.6654317826032639, 4.3551924163930176e-013, +8, 6.6654317900538445, 4.3551918580885179e-013, +8, 7.1646013185381889, 2.6142608803934048e-013, +8, 7.1646013259887695, 2.6142610866873453e-013, +8, 7.6312204822897911, 1.5767278184484503e-013, +8, 7.6312204897403717, 1.576728292094547e-013, +8, 7.8779716044664383, 6.0579161144149095e-014, +8, 7.8779716119170189, 6.0579145495868576e-014, +9, 0.7120363786816597, 5.4383680639900953e-006, +9, 0.7120363861322403, 5.4383647430909934e-006, +9, 1.5018193200230598, 8.9331552269793478e-008, +9, 1.5018193274736404, 8.9331529217486569e-008, +9, 2.2630845010280609, 3.2922940247769628e-009, +9, 2.2630845084786415, 3.2922936681951672e-009, +9, 2.9980199560523033, 2.1887825488935961e-010, +9, 2.9980199635028839, 2.1887818854849753e-010, +9, 3.7078000977635384, 2.3213138957857667e-011, +9, 3.707800105214119, 2.3213132917173771e-011, +9, 4.3928612694144249, 3.6226509291513855e-012, +9, 4.3928612768650055, 3.6226507116549233e-012, +9, 5.0530400574207306, 7.8472620106742312e-013, +9, 5.0530400648713112, 7.8472599177745781e-013, +9, 5.6876183524727821, 2.2542091218064693e-013, +9, 5.6876183599233627, 2.2542085472082343e-013, +9, 6.2953110262751579, 8.261026286619692e-014, +9, 6.2953110337257385, 8.2610267677539022e-014, +9, 6.8742315545678139, 3.7226229880661886e-014, +9, 6.8742315620183945, 3.722621661830273e-014, +9, 7.4219388365745544, 1.9804198141916339e-014, +9, 7.421938844025135, 1.9804197841080089e-014, +9, 7.936030775308609, 1.1800366216622659e-014, +9, 7.9360307827591896, 1.1800362381207757e-014, +9, 8.4175376817584038, 7.341772297716249e-015, +9, 8.4175376892089844, 7.3417744970482286e-015, +10, 0.72060277312994003, 3.5324438420494327e-006, +10, 0.72060278058052063, 3.5324425213780505e-006, +10, 1.5182576552033424, 4.7690979892410133e-008, +10, 1.518257662653923, 4.7690968887170632e-008, +10, 2.2892609387636185, 1.4396365431590603e-009, +10, 2.2892609462141991, 1.4396363283470758e-009, +10, 3.0358340814709663, 7.8118059457005561e-011, +10, 3.0358340889215469, 7.8118048721726738e-011, +10, 3.7592824399471283, 6.7417155809106958e-012, +10, 3.7592824473977089, 6.7417147580480395e-012, +10, 4.4602697342634201, 8.5434024476488055e-013, +10, 4.4602697417140007, 8.5434000006256964e-013, +10, 5.1389683187007904, 1.5015237157428729e-013, +10, 5.138968326151371, 1.5015232503714518e-013, +10, 5.795127771794796, 3.5035278065891386e-014, +10, 5.7951277792453766, 3.5035266685032581e-014, +10, 6.4280949085950851, 1.0474518584578706e-014, +10, 6.4280949160456657, 1.047451900091486e-014, +10, 7.0368044599890709, 3.8902615249132166e-015, +10, 7.0368044674396515, 3.8902605386615012e-015, +10, 7.6197631657123566, 1.742442940023884e-015, +10, 7.6197631731629372, 1.7424426824540998e-015, +10, 8.1750892177224159, 9.1144555287546294e-016, +10, 8.1750892251729965, 9.1144560389833963e-016, +10, 8.7008367404341698, 5.3541847847332351e-016, +10, 8.7008367478847504, 5.3541844723127514e-016, +10, 9.1965094059705734, 3.3560389199894529e-016, +10, 9.196509413421154, 3.3560370421140035e-016, +10, 9.6678015515208244, 2.1059571242602905e-016, +10, 9.667801558971405, 2.1059579862533338e-016, +11, 0.72796426713466644, 2.3816013324880167e-006, +11, 0.72796427458524704, 2.3816003939892356e-006, +11, 1.5323273167014122, 2.6884539057733283e-008, +11, 1.5323273241519928, 2.6884532967611841e-008, +11, 2.3115825653076172, 6.7682186491374862e-010, +11, 2.3115825727581978, 6.768217495558193e-010, +11, 3.0679489448666573, 3.0544688315708309e-011, +11, 3.0679489523172379, 3.054468452617125e-011, +11, 3.8027990683913231, 2.186949692679853e-012, +11, 3.8027990758419037, 2.1869496552307528e-012, +11, 4.5169280469417572, 2.2947351040888336e-013, +11, 4.5169280543923378, 2.2947348773371414e-013, +11, 5.2107065990567207, 3.3353640359739479e-014, +11, 5.2107066065073013, 3.335363154144172e-014, +11, 5.8841593414545059, 6.4351159890193404e-015, +11, 5.8841593489050865, 6.435115249418266e-015, +11, 6.5370001494884491, 1.5930548620019077e-015, +11, 6.5370001569390297, 1.59305482454352e-015, +11, 7.1686412021517754, 4.9183710858836462e-016, +11, 7.168641209602356, 4.9183713116224844e-016, +11, 7.7781866490840912, 1.8464804238726119e-016, +11, 7.7781866565346718, 1.8464801709489452e-016, +11, 8.3644260391592979, 8.2263320775918765e-017, +11, 8.3644260466098785, 8.2263297787354186e-017, +11, 8.9258662387728691, 4.2375346461043962e-017, +11, 8.9258662462234497, 4.2375329267920249e-017, +11, 9.4609249979257584, 2.4482616150935944e-017, +11, 9.460925005376339, 2.4482619419420328e-017, +11, 9.968697115778923, 1.5254006021629585e-017, +11, 9.9686971232295036, 1.5254009931381535e-017, +11, 10.451380550861359, 9.7234265908062383e-018, +11, 10.451380558311939, 9.7234241296957717e-018, +11, 10.909898526966572, 6.3147967493977272e-018, +11, 10.909898534417152, 6.3147961332742783e-018, +12, 0.73438271880149841, 1.6566052109275983e-006, +12, 0.73438272625207901, 1.6566045155548952e-006, +12, 1.5445517003536224, 1.5860666784152459e-008, +12, 1.544551707804203, 1.5860658867525684e-008, +12, 2.33091701567173, 3.380059232629492e-010, +12, 2.3309170231223106, 3.3800585031437757e-010, +12, 3.095676377415657, 1.2884951580384992e-011, +12, 3.0956763848662376, 1.2884947453406877e-011, +12, 3.8402339816093445, 7.7768150022424858e-013, +12, 3.8402339890599251, 7.776814490345326e-013, +12, 4.5654622465372086, 6.8670097741098332e-014, +12, 4.5654622539877892, 6.8670083429297199e-014, +12, 5.2718541026115417, 8.38897478481124e-015, +12, 5.2718541100621223, 8.3889742372884196e-015, +12, 5.9596048966050148, 1.3595098759195538e-015, +12, 5.9596049040555954, 1.3595098086325987e-015, +12, 6.6286550611257553, 2.827608125932321e-016, +12, 6.6286550685763359, 2.8276074709416868e-016, +12, 7.2787091657519341, 7.3455425966950088e-017, +12, 7.2787091732025146, 7.3455407058460195e-017, +12, 7.9092400223016739, 2.3285371485286439e-017, +12, 7.9092400297522545, 2.3285373002934362e-017, +12, 8.5194846615195274, 8.8196897130872609e-018, +12, 8.519484668970108, 8.8196870510698361e-018, +12, 9.1084426045417786, 3.9108299199270105e-018, +12, 9.1084426119923592, 3.9108294386613317e-018, +12, 9.6749012768268585, 1.9869557945423399e-018, +12, 9.6749012842774391, 1.9869552330025425e-018, +12, 10.217559166252613, 1.1287442348688164e-018, +12, 10.217559173703194, 1.1287443889939456e-018, +12, 10.735452570021152, 6.9443548691210419e-019, +12, 10.735452577471733, 6.944357314519752e-019, +12, 11.229217991232872, 4.4666546191302752e-019, +12, 11.229217998683453, 4.4666540313320006e-019, +12, 11.70328252017498, 2.9048073087968165e-019, +12, 11.703282527625561, 2.9048072811110897e-019, +12, 12.068153090775013, 1.1197702118472231e-019, +12, 12.068153098225594, 1.1197723483874788e-019, +13, 0.74004656821489334, 1.1833107184182451e-006, +13, 0.74004657566547394, 1.1833097788321784e-006, +13, 1.5553053691983223, 9.7255030271643972e-009, +13, 1.5553053766489029, 9.7254989421162363e-009, +13, 2.3478806391358376, 1.7766237223855854e-010, +13, 2.3478806465864182, 1.7766232949140296e-010, +13, 3.1199393272399902, 5.7956070959333847e-012, +13, 3.1199393346905708, 5.7956067491263655e-012, +13, 3.8728964179754257, 2.9884476000191141e-013, +13, 3.8728964254260063, 2.9884474795319482e-013, +13, 4.6076695621013641, 2.2511499024927438e-014, +13, 4.6076695695519447, 2.2511492228003123e-014, +13, 5.3248289301991463, 2.3433299337790734e-015, +13, 5.3248289376497269, 2.3433296697120652e-015, +13, 6.024680033326149, 3.2334220967999432e-016, +13, 6.0246800407767296, 3.2334220842696106e-016, +13, 6.7073097303509712, 5.7246438539858037e-017, +13, 6.7073097378015518, 5.7246428548181273e-017, +13, 7.3726105690002441, 1.2665024613881524e-017, +13, 7.3726105764508247, 1.2665026479377931e-017, +13, 8.0202914103865623, 3.4243381685006812e-018, +13, 8.0202914178371429, 3.4243378550191225e-018, +13, 8.6498793810606003, 1.1097375058286432e-018, +13, 8.6498793885111809, 1.1097372565619852e-018, +13, 9.2607174664735794, 4.2345371873704953e-019, +13, 9.26071747392416, 4.234535720073341e-019, +13, 9.8519651964306831, 1.8698553775808502e-019, +13, 9.8519652038812637, 1.8698556036241362e-019, +13, 10.4226189032197, 9.3834845010114218e-020, +13, 10.42261891067028, 9.3834849389696859e-020, +13, 10.971594020724297, 5.2445253216776838e-020, +13, 10.971594028174877, 5.244524330346984e-020, +13, 11.497980736196041, 3.1824489086388546e-020, +13, 11.497980743646622, 3.1824504032698097e-020, +13, 12.001743614673615, 2.0418153275918044e-020, +13, 12.001743622124195, 2.0418144824511038e-020, +13, 12.485165499150753, 1.322118298528861e-020, +13, 12.485165506601334, 1.3221186083014843e-020, +13, 12.954543322324753, 8.948147552026443e-021, +13, 12.954543329775333, 8.9481497369716256e-021, +13, 13.141756847500801, 6.2261736884111559e-021, +13, 13.141756854951382, 6.22616137965588e-021, +14, 0.74509535729885101, 8.6479103419423106e-007, +14, 0.74509536474943161, 8.6479038219181041e-007, +14, 1.5648643523454666, 6.1650149037400714e-009, +14, 1.5648643597960472, 6.1650125500027851e-009, +14, 2.3629250749945641, 9.7577785849465913e-011, +14, 2.3629250824451447, 9.7577755012051767e-011, +14, 3.1414090842008591, 2.7542691144474049e-012, +14, 3.1414090916514397, 2.754268644924632e-012, +14, 3.9017298147082329, 1.2272153763375018e-013, +14, 3.9017298221588135, 1.2272152123703597e-013, +14, 4.6448303312063217, 7.978322520490151e-015, +14, 4.6448303386569023, 7.9783225037342658e-015, +14, 5.3713301867246628, 7.1601479759177548e-016, +14, 5.3713301941752434, 7.1601474269921559e-016, +14, 6.0816079154610634, 8.5112993423908193e-017, +14, 6.081607922911644, 8.5112990415141843e-017, +14, 6.775848351418972, 1.2975876577628266e-017, +14, 6.7758483588695526, 1.2975877961248016e-017, +14, 7.454069696366787, 2.472008704163831e-018, +14, 7.4540697038173676, 2.4720086738065271e-018, +14, 8.1161380037665367, 5.7588911760227473e-019, +14, 8.1161380112171173, 5.7588919455128341e-019, +14, 8.7617733329534531, 1.6104402650810633e-019, +14, 8.7617733404040337, 1.6104400596562633e-019, +14, 9.3905506879091263, 5.3175849261375426e-020, +14, 9.3905506953597069, 5.3175840555484183e-020, +14, 10.001898743212223, 2.0418615673652841e-020, +14, 10.001898750662804, 2.0418619107744165e-020, +14, 10.595101684331894, 8.9828277730487657e-021, +14, 10.595101691782475, 8.9828244400191064e-021, +14, 11.169315472245216, 4.4582227129137701e-021, +14, 11.169315479695797, 4.4582210840169188e-021, +14, 11.723624959588051, 2.4539473008929182e-021, +14, 11.723624967038631, 2.4539478386423601e-021, +14, 12.25720601528883, 1.4682386166943286e-021, +14, 12.25720602273941, 1.4682385418038961e-021, +14, 12.76973832398653, 9.3346251997410079e-022, +14, 12.769738331437111, 9.3346223359077701e-022, +14, 13.262287445366383, 6.0874087090840453e-022, +14, 13.262287452816963, 6.0874060113413987e-022, +14, 13.73819725215435, 4.0622784880680064e-022, +14, 13.738197259604931, 4.0622806176204874e-022, +15, 0.74963488429784775, 6.4472609076683897e-007, +15, 0.74963489174842834, 6.4472546314886359e-007, +15, 1.5734371542930603, 4.0226647054678587e-009, +15, 1.5734371617436409, 4.0226622606167611e-009, +15, 2.3763899058103561, 5.5678382926067953e-011, +15, 2.3763899132609367, 5.5678366001298979e-011, +15, 3.1605874672532082, 1.3728924222156093e-012, +15, 3.1605874747037888, 1.3728922232543816e-012, +15, 3.9274342954158783, 5.3378856950128611e-014, +15, 3.9274343028664589, 5.3378843159211659e-014, +15, 4.6778862848877907, 3.0250264329161316e-015, +15, 4.6778862923383713, 3.0250255465237931e-015, +15, 5.4125945195555687, 2.3643655178483816e-016, +15, 5.4125945270061493, 2.364365094900239e-016, +15, 6.1319867372512817, 2.4459487536429736e-017, +15, 6.1319867447018623, 2.4459487650611821e-017, +15, 6.8363150134682655, 3.2436206211824709e-018, +15, 6.8363150209188461, 3.2436197176022979e-018, +15, 7.5256842151284218, 5.3739371041542508e-019, +15, 7.5256842225790024, 5.3739376909794387e-019, +15, 8.2000685408711433, 1.088934674475772e-019, +15, 8.2000685483217239, 1.0889347191934601e-019, +15, 8.8593204915523529, 2.6504714435038781e-020, +15, 8.8593204990029335, 2.6504716387206021e-020, +15, 9.5031745359301567, 7.6282884779808578e-021, +15, 9.5031745433807373, 7.6282871890206407e-021, +15, 10.131247609853745, 2.5596033506939261e-021, +15, 10.131247617304325, 2.5596033059431966e-021, +15, 10.743038579821587, 9.8815320291260219e-022, +15, 10.743038587272167, 9.881528789722149e-022, +15, 11.337930642068386, 4.3327572929097578e-022, +15, 11.337930649518967, 4.3327579478065768e-022, +15, 11.91520432382822, 2.1290839700926256e-022, +15, 11.915204331278801, 2.1290844593454176e-022, +15, 12.47407853603363, 1.1555853827459651e-022, +15, 12.474078543484211, 1.1555851200022939e-022, +15, 13.013818167150021, 6.8144327801967497e-023, +15, 13.013818174600601, 6.814431722582805e-023, +15, 13.533991023898125, 4.2798966509192708e-023, +15, 13.533991031348705, 4.279897117134478e-023, +15, 14.035010702908039, 2.7914921195937233e-023, +15, 14.03501071035862, 2.7914916878659476e-023, +15, 14.518910378217697, 1.833772281462441e-023, +15, 14.518910385668278, 1.8337712497676989e-023, +15, 14.989013738930225, 1.2608384937256306e-023, +15, 14.989013746380806, 1.2608378195451462e-023, +16, 0.75374705344438553, 4.8915337496543224e-007, +16, 0.75374706089496613, 4.8915306793373716e-007, +16, 1.5811846181750298, 2.6923132475156358e-009, +16, 1.5811846256256104, 2.692312137537266e-009, +16, 2.3885360583662987, 3.2852614483624288e-011, +16, 2.3885360658168793, 3.2852599884042077e-011, +16, 3.1778582483530045, 7.1354837117579206e-013, +16, 3.1778582558035851, 7.1354819499657137e-013, +16, 3.9505422189831734, 2.4415794649042575e-014, +16, 3.950542226433754, 2.4415790464100997e-014, +16, 4.7075485289096832, 1.2166614671909252e-015, +16, 4.7075485363602638, 1.2166612061656969e-015, +16, 5.4495479688048363, 8.3551487091643194e-017, +16, 5.4495479762554169, 8.3551474485434551e-017, +16, 6.1770017296075821, 7.5892566535084655e-018, +16, 6.1770017370581627, 7.5892568568026215e-018, +16, 6.890208899974823, 8.8323530753260686e-019, +16, 6.8902089074254036, 8.8323505679897636e-019, +16, 7.5893355086445808, 1.2838109403040181e-019, +16, 7.5893355160951614, 1.2838108671707829e-019, +16, 8.2744322568178177, 2.2821684437156804e-020, +16, 8.2744322642683983, 2.282168749495082e-020, +16, 8.9454451054334641, 4.8744259157716707e-021, +16, 8.9454451128840446, 4.8744247029595045e-021, +16, 9.6022209450602531, 1.2319495868217162e-021, +16, 9.6022209525108337, 1.2319494772820823e-021, +16, 10.244509845972061, 3.6348978875812834e-022, +16, 10.244509853422642, 3.6348985260615e-022, +16, 10.871965378522873, 1.2367742746291744e-022, +16, 10.871965385973454, 1.2367739126564003e-022, +16, 11.484144628047943, 4.7970119302772392e-023, +16, 11.484144635498524, 4.7970127598781626e-023, +16, 12.080510623753071, 2.0970543482083159e-023, +16, 12.080510631203651, 2.0970540591110336e-023, +16, 12.660443000495434, 1.0212748080573996e-023, +16, 12.660443007946014, 1.0212749016622482e-023, +16, 13.223268158733845, 5.4721418402402487e-024, +16, 13.223268166184425, 5.4721424729500052e-024, +16, 13.768333427608013, 3.1810966077030606e-024, +16, 13.768333435058594, 3.181096582631882e-024, +16, 14.295174412429333, 1.9706877841945116e-024, +16, 14.295174419879913, 1.9706884118909232e-024, +16, 14.803859077394009, 1.2794879837821395e-024, +16, 14.803859084844589, 1.2794882377473996e-024, +16, 15.295545108616352, 8.4344716828413924e-025, +16, 15.295545116066933, 8.4344683346343458e-025, +16, 15.772794611752033, 5.7392825698566701e-025, +16, 15.772794619202614, 5.7392822347696177e-025, +16, 16.216887570917606, 3.6997343524479107e-025, +16, 16.216887578368187, 3.6997346587299121e-025, +17, 0.75749634951353073, 3.7692745372019008e-007, +17, 0.75749635696411133, 3.7692700070692814e-007, +17, 1.5882330387830734, 1.8429395479824224e-009, +17, 1.588233046233654, 1.8429387676315583e-009, +17, 2.3995678052306175, 1.9967644390215291e-011, +17, 2.3995678126811981, 1.9967637238366132e-011, +17, 3.1935207024216652, 3.8482056723979746e-013, +17, 3.1935207098722458, 3.8482046172543379e-013, +17, 3.9714667573571205, 1.1675233373393322e-014, +17, 3.9714667648077011, 1.167523092849099e-014, +17, 4.7343658432364464, 5.1547822958137584e-016, +17, 4.734365850687027, 5.1547809052809859e-016, +17, 5.4829004630446434, 3.1343625323079668e-017, +17, 5.482900470495224, 3.1343618068151562e-017, +17, 6.2175545245409012, 2.5193828294777807e-018, +17, 6.2175545319914818, 2.5193819999045696e-018, +17, 6.9386604055762291, 2.5933718219907985e-019, +17, 6.9386604130268097, 2.5933719595613529e-019, +17, 7.6464280635118484, 3.3330158772752984e-020, +17, 7.646428070962429, 3.3330160862180195e-020, +17, 8.3409634903073311, 5.2379397998875143e-021, +17, 8.3409634977579117, 5.2379386588488221e-021, +17, 9.0222802385687828, 9.8908851451647746e-022, +17, 9.0222802460193634, 9.8908823476058462e-022, +17, 9.6903063133358955, 2.2108045577850313e-022, +17, 9.6903063207864761, 2.2108041448570457e-022, +17, 10.344887860119343, 5.7731399489054422e-023, +17, 10.344887867569923, 5.773138110616153e-023, +17, 10.98579066246748, 1.7407181648032493e-023, +17, 10.98579066991806, 1.7407180865759728e-023, +17, 11.6127003505826, 5.9955236166794974e-024, +17, 11.61270035803318, 5.9955216352412096e-024, +17, 12.225222736597061, 2.3349804655788398e-024, +17, 12.225222744047642, 2.3349807732238287e-024, +17, 12.82288621366024, 1.0179952851287067e-024, +17, 12.822886221110821, 1.0179953150198629e-024, +17, 13.405150465667248, 4.9176017252558557e-025, +17, 13.405150473117828, 4.9176033251919074e-025, +17, 13.971429191529751, 2.6038182860572718e-025, +17, 13.971429198980331, 2.603818076773733e-025, +17, 14.521142840385437, 1.4930454888989484e-025, +17, 14.521142847836018, 1.4930452390494677e-025, +17, 15.053831778466702, 9.123082958623521e-026, +17, 15.053831785917282, 9.1230791767726492e-026, +17, 15.569381833076477, 5.8751079623571136e-026, +17, 15.569381840527058, 5.8751075038868982e-026, +17, 16.068407364189625, 3.8749149875575966e-026, +17, 16.068407371640205, 3.8749167349006019e-026, +17, 16.552637793123722, 2.5963438998656586e-026, +17, 16.552637800574303, 2.5963440101195602e-026, +17, 17.024716928601265, 1.7949322494851864e-026, +17, 17.024716936051846, 1.7949319523018589e-026, +17, 17.346179291605949, 2.8309800520891487e-027, +17, 17.34617929905653, 2.8309773118757838e-027, +18, 0.76093439012765884, 2.9450240370798458e-007, +18, 0.76093439757823944, 2.9450203771031953e-007, +18, 1.5946831777691841, 1.2871185298229725e-009, +18, 1.5946831852197647, 1.2871177488403049e-009, +18, 2.4096476435661316, 1.2461251822064865e-011, +18, 2.4096476510167122, 1.2461248257070009e-011, +18, 3.207812137901783, 2.1447968570473172e-013, +18, 3.2078121453523636, 2.1447959182366632e-013, +18, 3.9905342757701874, 5.8079896477904645e-015, +18, 3.990534283220768, 5.8079874820498712e-015, +18, 4.7587697133421898, 2.2873919040338732e-016, +18, 4.7587697207927704, 2.2873918091132165e-016, +18, 5.5132071524858475, 1.2399411155563791e-017, +18, 5.5132071599364281, 1.2399410449684862e-017, +18, 6.2543457671999931, 8.8806343367361896e-019, +18, 6.2543457746505737, 8.8806339445463331e-019, +18, 6.9825416058301926, 8.1418645242373546e-020, +18, 6.9825416132807732, 8.1418638978404545e-020, +18, 7.6980366632342339, 9.3166546160183016e-021, +18, 7.6980366706848145, 9.316653065404742e-021, +18, 8.4009775668382645, 1.3033282065831878e-021, +18, 8.4009775742888451, 1.303327910841165e-021, +18, 9.0914276838302612, 2.1906432409842348e-022, +18, 9.0914276912808418, 2.1906432254533542e-022, +18, 9.7693748101592064, 4.3589910796802725e-023, +18, 9.769374817609787, 4.3589901608432619e-023, +18, 10.434735849499702, 1.0137066700093108e-023, +18, 10.434735856950283, 1.0137066734442173e-023, +18, 11.087359227240086, 2.7240107890987674e-024, +18, 11.087359234690666, 2.7240105244068185e-024, +18, 11.727025918662548, 8.371655684372496e-025, +18, 11.727025926113129, 8.3716527086860413e-025, +18, 12.353449679911137, 2.9146730821631173e-025, +18, 12.353449687361717, 2.9146728028573778e-025, +18, 12.966277495026588, 1.1392339405640447e-025, +18, 12.966277502477169, 1.1392339608927589e-025, +18, 13.565091922879219, 4.9545881072919797e-026, +18, 13.5650919303298, 4.9545866952502942e-026, +18, 14.149418227374554, 2.3758167105055241e-026, +18, 14.149418234825134, 2.3758158313872783e-026, +18, 14.718741856515408, 1.2442765527084641e-026, +18, 14.718741863965988, 1.244276230271342e-026, +18, 15.272546909749508, 7.0424811711899878e-027, +18, 15.272546917200089, 7.0424832994636221e-027, +18, 15.810395196080208, 4.2497327978932225e-027, +18, 15.810395203530788, 4.2497340544704781e-027, +18, 16.332078844308853, 2.7060819868792312e-027, +18, 16.332078851759434, 2.7060823827611486e-027, +18, 16.83788288384676, 1.778958105553305e-027, +18, 16.83788289129734, 1.7789585636337179e-027, +18, 17.328916251659393, 1.1828714637450282e-027, +18, 17.328916259109974, 1.182871994927067e-027, +18, 17.807191208004951, 8.1726141746863567e-028, +18, 17.807191215455532, 8.1726174566351736e-028, +18, 18.284037873148918, 5.6912247207101229e-028, +18, 18.284037880599499, 5.691222218060101e-028, +18, 18.392694972455502, 5.2831137523744097e-028, +18, 18.392694979906082, 5.2831145046877764e-028, +19, 0.764103002846241, 2.3298449147644669e-007, +19, 0.76410301029682159, 2.3298424269489823e-007, +19, 1.6006165370345116, 9.1529116957755399e-010, +19, 1.6006165444850922, 9.1529068365546486e-010, +19, 2.4189066812396049, 7.9633891310433137e-012, +19, 2.4189066886901855, 7.9633842469171524e-012, +19, 3.220923513174057, 1.2312031507978179e-013, +19, 3.2209235206246376, 1.2312028082814339e-013, +19, 4.0080065280199051, 2.9933906948263948e-015, +19, 4.0080065354704857, 2.9933899839494794e-015, +19, 4.7811048328876495, 1.0579214187674311e-016, +19, 4.7811048403382301, 1.0579211525173792e-016, +19, 5.5409095361828804, 5.1437209226821869e-018, +19, 5.540909543633461, 5.1437201098803477e-018, +19, 6.2879297584295273, 3.30285370901757e-019, +19, 6.2879297658801079, 3.3028526990782213e-019, +19, 7.022538423538208, 2.7137393350465049e-020, +19, 7.0225384309887886, 2.7137390145037245e-020, +19, 7.7450010478496552, 2.7820488626315749e-021, +19, 7.7450010553002357, 2.7820487012081861e-021, +19, 8.4554945304989815, 3.4859333557441231e-022, +19, 8.4554945379495621, 3.4859329845518359e-022, +19, 9.1541195586323738, 5.2474008771752571e-023, +19, 9.1541195660829544, 5.2474000384032056e-023, +19, 9.8409088104963303, 9.3512638696111626e-024, +19, 9.8409088179469109, 9.3512648493398201e-024, +19, 10.515832215547562, 1.9479937239944536e-024, +19, 10.515832222998142, 1.9479938575974556e-024, +19, 11.178800173103809, 4.69085412141189e-025, +19, 11.17880018055439, 4.6908548720156987e-025, +19, 11.829665213823318, 1.2928024618486752e-025, +19, 11.829665221273899, 1.2928026753018633e-025, +19, 12.468222707509995, 4.0409290148689646e-026, +19, 12.468222714960575, 4.04092946286875e-026, +19, 13.094211108982563, 1.4204369152574e-026, +19, 13.094211116433144, 1.4204368039399753e-026, +19, 13.707312539219856, 5.5697729454842655e-027, +19, 13.707312546670437, 5.5697729267586886e-027, +19, 14.307154916226864, 2.4168995964876991e-027, +19, 14.307154923677444, 2.4168993118015141e-027, +19, 14.893317893147469, 1.151182873307859e-027, +19, 14.893317900598049, 1.151183249370605e-027, +19, 15.465346492826939, 5.9684896488404262e-028, +19, 15.465346500277519, 5.9684880973262032e-028, +19, 16.022779874503613, 3.3368863785415361e-028, +19, 16.022779881954193, 3.3368858888570371e-028, +19, 16.565208047628403, 1.988896282534073e-028, +19, 16.565208055078983, 1.9888966397094828e-028, +19, 17.092378154397011, 1.2511355195873936e-028, +19, 17.092378161847591, 1.2511357084655119e-028, +19, 17.604376800358295, 8.1764674788794317e-029, +19, 17.604376807808876, 8.1764689419338323e-029, +19, 18.101884864270687, 5.4403818799662857e-029, +19, 18.101884871721268, 5.4403811124044756e-029, +19, 18.586358889937401, 3.703368785213425e-029, +19, 18.586358897387981, 3.7033672461047739e-029, +19, 19.059829846024513, 2.5704197367132541e-029, +19, 19.059829853475094, 2.5704186883245258e-029, +20, 0.76703650504350662, 1.8640212188134082e-007, +20, 0.76703651249408722, 1.8640189110524636e-007, +20, 1.6060998290777206, 6.6157054588464647e-010, +20, 1.6060998365283012, 6.6157015121944875e-010, +20, 2.4274520501494408, 5.1991605763036711e-012, +20, 2.4274520576000214, 5.1991575903475782e-012, +20, 3.2330104410648346, 7.2582820146985349e-014, +20, 3.2330104485154152, 7.2582783832962019e-014, +20, 4.0240962356328964, 1.5927986670250318e-015, +20, 4.024096243083477, 1.5927979999140583e-015, +20, 4.8016504645347595, 5.0788048744312721e-017, +20, 4.8016504719853401, 5.0788029685345059e-017, +20, 5.5663639381527901, 2.2269814628583385e-018, +20, 5.5663639456033707, 2.2269809381302064e-018, +20, 6.3187519386410713, 1.2891132499721331e-019, +20, 6.3187519460916519, 1.2891130172541847e-019, +20, 7.0591993033885956, 9.5451218618123886e-021, +20, 7.0591993108391762, 9.5451218640099815e-021, +20, 7.7879889234900475, 8.8158015376044649e-022, +20, 7.7879889309406281, 8.8158004848661898e-022, +20, 8.5053204819560051, 9.9494735027566205e-023, +20, 8.5053204894065857, 9.9494722416437504e-023, +20, 9.2113229855895042, 1.3487881180413846e-023, +20, 9.2113229930400848, 1.3487880891331086e-023, +20, 9.9060632660984993, 2.1645350197982161e-024, +20, 9.9060632735490799, 2.1645348970951956e-024, +20, 10.589551687240601, 4.0607366596729865e-025, +20, 10.589551694691181, 4.0607361603086007e-025, +20, 11.26174583286047, 8.808202739315011e-026, +20, 11.26174584031105, 8.8082017838145519e-026, +20, 11.922552742063999, 2.1876047727436381e-026, +20, 11.92255274951458, 2.1876050426774313e-026, +20, 12.571830086410046, 6.1662495078304429e-027, +20, 12.571830093860626, 6.1662499348774014e-027, +20, 13.209386698901653, 1.9567173794914837e-027, +20, 13.209386706352234, 1.9567170332738984e-027, +20, 13.834982834756374, 6.9373607598036741e-028, +20, 13.834982842206955, 6.9373595897190232e-028, +20, 14.448330782353878, 2.7280690089401278e-028, +20, 14.448330789804459, 2.7280680945996177e-028, +20, 15.049096845090389, 1.1813689543546431e-028, +20, 15.04909685254097, 1.181369139348639e-028, +20, 15.636906251311302, 5.5924252241628636e-029, +20, 15.636906258761883, 5.5924267990651051e-029, +20, 16.211354024708271, 2.8725730797162321e-029, +20, 16.211354032158852, 2.8725722552333354e-029, +20, 16.772026851773262, 1.5875830143022102e-029, +20, 16.772026859223843, 1.5875829520216891e-029, +20, 17.318544775247574, 9.3495852893429768e-030, +20, 17.318544782698154, 9.3495854282408101e-030, +20, 17.850637152791023, 5.8080378869545303e-030, +20, 17.850637160241604, 5.8080398155538604e-030, +20, 18.36827152967453, 3.766778846313291e-030, +20, 18.368271537125111, 3.766779811191838e-030, +20, 18.871843047440052, 2.5002689211421573e-030, +20, 18.871843054890633, 2.5002682344308047e-030, +20, 19.362363085150719, 1.674243648785181e-030, +20, 19.362363092601299, 1.6742442653555633e-030, +20, 19.841450870037079, 1.1710157057806629e-030, +20, 19.841450877487659, 1.1710152732309025e-030, +20, 20.30974967777729, 8.0586953650643033e-031, +20, 20.309749685227871, 8.0586997818188476e-031, +21, 0.76976337283849716, 1.5066428073454916e-007, +21, 0.76976338028907776, 1.5066414246643623e-007, +21, 1.6111882776021957, 4.8530823596591033e-010, +21, 1.6111882850527763, 4.8530796828419519e-010, +21, 2.4353722333908081, 3.4610451821120009e-012, +21, 2.4353722408413887, 3.4610441424017983e-012, +21, 3.2442012280225754, 4.3835042623395894e-014, +21, 3.244201235473156, 4.3835023934688873e-014, +21, 4.0389783605933189, 8.7240487039547189e-016, +21, 4.0389783680438995, 8.7240461492198342e-016, +21, 4.820635624229908, 2.5219465898201733e-017, +21, 4.8206356316804886, 2.5219460854936753e-017, +21, 5.5898616313934326, 1.0022039268504888e-018, +21, 5.5898616388440132, 1.0022036172718784e-018, +21, 6.3471750691533089, 5.2559389652856588e-020, +21, 6.3471750766038895, 5.2559375594443955e-020, +21, 7.0929690599441528, 3.5247425965088507e-021, +21, 7.0929690673947334, 3.5247425089738368e-021, +21, 7.827539324760437, 2.9476660458905233e-022, +21, 7.8275393322110176, 2.9476655571904849e-022, +21, 8.551102802157402, 3.0115631228572582e-023, +21, 8.5511028096079826, 3.011562652643058e-023, +21, 9.2638102099299431, 3.6952283110718485e-024, +21, 9.2638102173805237, 3.6952283319575928e-024, +21, 9.9657547101378441, 5.3669656457006436e-025, +21, 9.9657547175884247, 5.3669649762144234e-025, +21, 10.656977899372578, 9.1124256917763825e-026, +21, 10.656977906823158, 9.1124268540483906e-026, +21, 11.337473809719086, 1.7890692227696762e-026, +21, 11.337473817169666, 1.7890693666894125e-026, +21, 12.007191583514214, 4.0227743879756425e-027, +21, 12.007191590964794, 4.0227743211391833e-027, +21, 12.666037052869797, 1.0270242765644747e-027, +21, 12.666037060320377, 1.0270242120978496e-027, +21, 13.313873596489429, 2.9538104523737974e-028, +21, 13.31387360394001, 2.9538105861327128e-028, +21, 13.950522527098656, 9.5012147708737886e-029, +21, 13.950522534549236, 9.5012121359051193e-029, +21, 14.575763396918774, 3.3946835963332503e-029, +21, 14.575763404369354, 3.3946830842745097e-029, +21, 15.189334601163864, 1.338384258083857e-029, +21, 15.189334608614445, 1.3383838228935191e-029, +21, 15.790935188531876, 5.7848622633191873e-030, +21, 15.790935195982456, 5.7848637716726903e-030, +21, 16.380228973925114, 2.7230499400143476e-030, +21, 16.380228981375694, 2.7230500761171659e-030, +21, 16.956853300333023, 1.3866916070525852e-030, +21, 16.956853307783604, 1.3866911116291402e-030, +21, 17.520435951650143, 7.5812793671458848e-031, +21, 17.520435959100723, 7.5812815048755598e-031, +21, 18.070626437664032, 4.4134618820380508e-031, +21, 18.070626445114613, 4.4134600003014153e-031, +21, 18.607151560485363, 2.7073121862111579e-031, +21, 18.607151567935944, 2.7073119631598685e-031, +21, 19.129908226430416, 1.7405231919358924e-031, +21, 19.129908233880997, 1.7405224578827498e-031, +21, 19.639103204011917, 1.149909852362787e-031, +21, 19.639103211462498, 1.1499093604025187e-031, +21, 20.135416276752949, 7.7057380617546439e-032, +21, 20.135416284203529, 7.7057377584979628e-032, +21, 20.62007824331522, 5.313635434227207e-032, +21, 20.6200782507658, 5.313638182607342e-032, +21, 21.09471806883812, 3.6998772136443968e-032, +21, 21.0947180762887, 3.6998750382256628e-032, +21, 21.513655178248882, 2.1423087294246753e-032, +21, 21.513655185699463, 2.1423066695903474e-032, +22, 0.77230742573738098, 1.229185164418409e-007, +22, 0.77230743318796158, 1.2291832454378835e-007, +22, 1.6159280240535736, 3.6084429032500014e-010, +22, 1.6159280315041542, 3.6084396590066408e-010, +22, 2.4427410438656807, 2.3451786403587014e-012, +22, 2.4427410513162613, 2.3451775949384816e-012, +22, 3.2546027079224586, 2.7062134880156874e-014, +22, 3.2546027153730392, 2.7062125966134374e-014, +22, 4.0527982860803604, 4.9058357404375516e-016, +22, 4.052798293530941, 4.9058348176902023e-016, +22, 4.8382501602172852, 1.2913921603181287e-017, +22, 4.8382501676678658, 1.2913917228554348e-017, +22, 5.6116434335708618, 4.6717185843067393e-019, +22, 5.6116434410214424, 4.6717179776425538e-019, +22, 6.3734981417655945, 2.2296903198511069e-020, +22, 6.3734981492161751, 2.2296900974904039e-020, +22, 7.1242129951715469, 1.3604387314615133e-021, +22, 7.1242130026221275, 1.3604385613902272e-021, +22, 7.8640931621193886, 1.0348631251961015e-022, +22, 7.8640931695699692, 1.03486285303848e-022, +22, 8.5933686941862106, 9.6152630844306075e-024, +22, 8.5933687016367912, 9.6152607923175558e-024, +22, 9.3122070804238319, 1.0727676244494742e-024, +22, 9.3122070878744125, 1.0727675822781486e-024, +22, 10.020721986889839, 1.4165824772693852e-025, +22, 10.02072199434042, 1.416582491355437e-025, +22, 10.718979395925999, 2.1866391305081649e-026, +22, 10.718979403376579, 2.1866388838497643e-026, +22, 11.407001882791519, 3.9031522459423558e-027, +22, 11.4070018902421, 3.9031521089045438e-027, +22, 12.084771521389484, 7.9802702761510913e-028, +22, 12.084771528840065, 7.980269670975788e-028, +22, 12.752231821417809, 1.8530613678900598e-028, +22, 12.752231828868389, 1.8530616824287783e-028, +22, 13.409288860857487, 4.8494798585916549e-029, +22, 13.409288868308067, 4.8494785536449382e-029, +22, 14.05581197142601, 1.4202884091535673e-029, +22, 14.055811978876591, 1.4202885442138583e-029, +22, 14.691633984446526, 4.6247809754088509e-030, +22, 14.691633991897106, 4.6247795457938258e-030, +22, 15.316551595926285, 1.6639745508668973e-030, +22, 15.316551603376865, 1.6639743599938902e-030, +22, 15.93032594025135, 6.5756901693418488e-031, +22, 15.930325947701931, 6.575690654043178e-031, +22, 16.532684214413166, 2.8372660249774888e-031, +22, 16.532684221863747, 2.8372664253810075e-031, +22, 17.123323194682598, 1.3286347918438753e-031, +22, 17.123323202133179, 1.328634334065038e-031, +22, 17.701916337013245, 6.7120509402607989e-032, +22, 17.701916344463825, 6.7120512896479518e-032, +22, 18.268127046525478, 3.6325184300463703e-032, +22, 18.268127053976059, 3.6325181235491734e-032, +22, 18.821632660925388, 2.0914308743910646e-032, +22, 18.821632668375969, 2.0914299057002497e-032, +22, 19.362165823578835, 1.2686800121696762e-032, +22, 19.362165831029415, 1.2686799446403407e-032, +22, 19.88958266377449, 8.0696445865656865e-033, +22, 19.889582671225071, 8.0696450863153928e-033, +22, 20.403966307640076, 5.2979414488418604e-033, +22, 20.403966315090656, 5.2979393097828398e-033, +22, 20.905758522450924, 3.5438052686101887e-033, +22, 20.905758529901505, 3.5438058521502753e-033, +22, 21.39586365967989, 2.4059587559014193e-033, +22, 21.39586366713047, 2.4059592126750793e-033, +22, 21.87561222910881, 1.686377885007472e-033, +22, 21.875612236559391, 1.6863776494421034e-033, +22, 22.346770018339157, 1.1684307972912237e-033, +22, 22.346770025789738, 1.1684310754271521e-033, +22, 22.618329457938671, 3.0366386951575348e-034, +22, 22.618329465389252, 3.0366315962617322e-034, +23, 0.77468881756067276, 1.0114160950347676e-007, +23, 0.77468882501125336, 1.0114149032370741e-007, +23, 1.6203579902648926, 2.7163743073571882e-010, +23, 1.6203579977154732, 2.7163720774540249e-010, +23, 2.4496206343173981, 1.6150650901954226e-012, +23, 2.4496206417679787, 1.6150639831714421e-012, +23, 3.2643046677112579, 1.7046911971326696e-014, +23, 3.2643046751618385, 1.7046904575466703e-014, +23, 4.0656779706478119, 2.8259863440888197e-016, +23, 4.0656779780983925, 2.8259849772579011e-016, +23, 4.8546530231833458, 6.8011510032153151e-018, +23, 4.8546530306339264, 6.8011494716482078e-018, +23, 5.6319104433059692, 2.2488464281640756e-019, +23, 5.6319104507565498, 2.2488459534517975e-019, +23, 6.3979701548814774, 9.8079791952490223e-021, +23, 6.397970162332058, 9.8079765385497614e-021, +23, 7.1532344222068787, 5.4671937485617472e-022, +23, 7.1532344296574593, 5.4671917378843881e-022, +23, 7.8980152830481529, 3.7986233108918277e-023, +23, 7.8980152904987335, 3.7986220021765903e-023, +23, 8.6325527653098106, 3.2231569433958688e-024, +23, 8.6325527727603912, 3.2231565617086114e-024, +23, 9.3570273742079735, 3.2834969778924849e-025, +23, 9.3570273816585541, 3.2834965760335941e-025, +23, 10.071568876504898, 3.9585335209485738e-026, +23, 10.071568883955479, 3.958533284993818e-026, +23, 10.776262499392033, 5.5783111048939248e-027, +23, 10.776262506842613, 5.5783106522452834e-027, +23, 11.471153371036053, 9.0901545746996052e-028, +23, 11.471153378486633, 9.0901530603778864e-028, +23, 12.156249642372131, 1.6968039360579984e-028, +23, 12.156249649822712, 1.6968035736701341e-028, +23, 12.831524632871151, 3.5977409707902412e-029, +23, 12.831524640321732, 3.5977400460720119e-029, +23, 13.496918246150017, 8.5996241514863787e-030, +23, 13.496918253600597, 8.5996216693376864e-030, +23, 14.152337834239006, 2.301386888748009e-030, +23, 14.152337841689587, 2.3013866363420915e-030, +23, 14.797658666968346, 6.8517867573579195e-031, +23, 14.797658674418926, 6.8517865061112645e-031, +23, 15.432724215090275, 2.2560267724720382e-031, +23, 15.432724222540855, 2.2560264136538832e-031, +23, 16.057346440851688, 8.1688281380273512e-032, +23, 16.057346448302269, 8.1688278348171516e-032, +23, 16.671306401491165, 3.2350057586674508e-032, +23, 16.671306408941746, 3.2350061703509374e-032, +23, 17.274355687201023, 1.3935974246555884e-032, +23, 17.274355694651604, 1.3935975649494885e-032, +23, 17.86621943116188, 6.494692001260146e-033, +23, 17.866219438612461, 6.4946923994178033e-033, +23, 18.446602113544941, 3.2567180669074382e-033, +23, 18.446602120995522, 3.2567169178931394e-033, +23, 19.015198193490505, 1.7458070339763389e-033, +23, 19.015198200941086, 1.7458065238164995e-033, +23, 19.571710675954819, 9.946196118534568e-034, +23, 19.571710683405399, 9.9461948954570997e-034, +23, 20.11588254570961, 5.9690525712299976e-034, +23, 20.115882553160191, 5.9690500193873946e-034, +23, 20.647547744214535, 3.7545858767414626e-034, +23, 20.647547751665115, 3.7545848159991635e-034, +23, 21.166708528995514, 2.4468390226112094e-034, +23, 21.166708536446095, 2.4468378891837283e-034, +23, 21.673638753592968, 1.6305350714270763e-034, +23, 21.673638761043549, 1.6305353199615473e-034, +23, 22.168985672295094, 1.0990783133763909e-034, +23, 22.168985679745674, 1.0990780643508099e-034, +23, 22.653797566890717, 7.660709966183589e-035, +23, 22.653797574341297, 7.6607108605632843e-035, +23, 23.129408702254295, 5.3481086344930933e-035, +23, 23.129408709704876, 5.3481086507387228e-035, +24, 0.77692466974258423, 8.3878559509491768e-008, +24, 0.77692467719316483, 8.3878444500950374e-008, +24, 1.6245112344622612, 2.0682132657809845e-010, +24, 1.6245112419128418, 2.068211277333234e-010, +24, 2.4560637548565865, 1.1289636914686017e-012, +24, 2.4560637623071671, 1.1289631400035527e-012, +24, 3.2733832001686096, 1.0938619422732816e-014, +24, 3.2733832076191902, 1.0938612911479053e-014, +24, 4.077720619738102, 1.6643113288659459e-016, +24, 4.0777206271886826, 1.6643108721731801e-016, +24, 4.8699784204363823, 3.6754217074679444e-018, +24, 4.8699784278869629, 3.6754201672840378e-018, +24, 5.6508321389555931, 1.1149437498689269e-019, +24, 5.6508321464061737, 1.1149432883776919e-019, +24, 6.4208004623651505, 4.4601526574819404e-021, +24, 6.420800469815731, 4.4601509330870358e-021, +24, 7.1802876740694046, 2.279941873373783e-022, +24, 7.1802876815199852, 2.2799412884161901e-022, +24, 7.9296107068657875, 1.4524227687620892e-023, +24, 7.9296107143163681, 1.4524227325357687e-023, +24, 8.6690171509981155, 1.1297516597255878e-024, +24, 8.6690171584486961, 1.1297516022917642e-024, +24, 9.398697666823864, 1.05489876857462e-025, +24, 9.3986976742744446, 1.0548984739860872e-025, +24, 10.118794731795788, 1.1655531704609301e-026, +24, 10.118794739246368, 1.1655532065990126e-026, +24, 10.82940886169672, 1.5051895754488702e-027, +24, 10.829408869147301, 1.5051892821133279e-027, +24, 11.53060320019722, 2.2476895295962268e-028, +24, 11.5306032076478, 2.2476889060302806e-028, +24, 12.22240673750639, 3.844876383499449e-029, +24, 12.22240674495697, 3.8448759550255258e-029, +24, 12.904816634953022, 7.4714391018572407e-030, +24, 12.904816642403603, 7.4714395302486889e-030, +24, 13.577799834311008, 1.6370125904554994e-030, +24, 13.577799841761589, 1.6370124695278897e-030, +24, 14.241294123232365, 4.0168128083279772e-031, +24, 14.241294130682945, 4.016811469349949e-031, +24, 14.895208783447742, 1.0969746370532075e-031, +24, 14.895208790898323, 1.0969744744608578e-031, +24, 15.539424940943718, 3.315109989109058e-032, +24, 15.539424948394299, 3.3151090923815311e-032, +24, 16.173795841634274, 1.1026485108254938e-032, +24, 16.173795849084854, 1.1026484499551487e-032, +24, 16.798147104680538, 4.0158085477948419e-033, +24, 16.798147112131119, 4.0158088226660865e-033, +24, 17.412277333438396, 1.5934132234896702e-033, +24, 17.412277340888977, 1.5934135053593853e-033, +24, 18.015959389507771, 6.8540171917222488e-034, +24, 18.015959396958351, 6.8540185876176649e-034, +24, 18.608942970633507, 3.1800628171362954e-034, +24, 18.608942978084087, 3.1800629680378069e-034, +24, 19.190959438681602, 1.5836246914151322e-034, +24, 19.190959446132183, 1.5836252472988316e-034, +24, 19.76173035800457, 8.4137600917291117e-035, +24, 19.761730365455151, 8.4137587940032584e-035, +24, 20.320982187986374, 4.745679482731015e-035, +24, 20.320982195436954, 4.7456809155199022e-035, +24, 20.868470467627048, 2.8185196647984626e-035, +24, 20.868470475077629, 2.8185199366681781e-035, +24, 21.404018573462963, 1.7531167534135375e-035, +24, 21.404018580913544, 1.7531173016947469e-035, +24, 21.927576221525669, 1.1332672002404092e-035, +24, 21.92757622897625, 1.1332675797508253e-035, +24, 22.439299717545509, 7.5125238131908317e-036, +24, 22.43929972499609, 7.5125236509015167e-036, +24, 22.939641229808331, 5.0568780187314363e-036, +24, 22.939641237258911, 5.0568784513528091e-036, +24, 23.429403953254223, 3.4736003627413405e-036, +24, 23.429403960704803, 3.4735987495009831e-036, +24, 23.90970042347908, 2.4387081321665308e-036, +24, 23.909700430929661, 2.4387083910949941e-036, +24, 24.38177253305912, 1.694733860647387e-036, +24, 24.381772540509701, 1.694733324885658e-036, +25, 0.77902968227863312, 7.0067469371321597e-008, +25, 0.77902968972921371, 7.0067352105092841e-008, +25, 1.6284160688519478, 1.5913112796142118e-010, +25, 1.6284160763025284, 1.5913095865429296e-010, +25, 2.4621154814958572, 8.0010005048491295e-013, +25, 2.4621154889464378, 8.0009951288958997e-013, +25, 3.2819032743573189, 7.1398107739385184e-015, +25, 3.2819032818078995, 7.1398064213538464e-015, +25, 4.0890141874551773, 1.0003569839311091e-016, +25, 4.0890141949057579, 1.0003565214949822e-016, +25, 4.8843406066298485, 2.0339987591563894e-018, +25, 4.8843406140804291, 2.0339981157202125e-018, +25, 5.6685525178909302, 5.6799254581074817e-020, +25, 5.6685525253415108, 5.6799245689717146e-020, +25, 6.4421665593981743, 2.0912595308116639e-021, +25, 6.4421665668487549, 2.0912591224302577e-021, +25, 7.2055878639221191, 9.8372734035261097e-023, +25, 7.2055878713726997, 9.8372708440629524e-023, +25, 7.9591367468237877, 5.7658750176114061e-024, +25, 7.9591367542743683, 5.7658733776591436e-024, +25, 8.7030665054917336, 4.1258272741964985e-025, +25, 8.7030665129423141, 4.1258258782473198e-025, +25, 9.4375757128000259, 3.5435416447318224e-026, +25, 9.4375757202506065, 3.5435412590635847e-026, +25, 10.162816897034645, 3.6008987404838187e-027, +25, 10.162816904485226, 3.6008987502968748e-027, +25, 10.878902837634087, 4.2764878951239796e-028, +25, 10.878902845084667, 4.2764868457382694e-028, +25, 11.58591116219759, 5.8725831294026438e-029, +25, 11.58591116964817, 5.872583554303668e-029, +25, 12.283887647092342, 9.2378193889837239e-030, +25, 12.283887654542923, 9.2378197873933138e-030, +25, 12.97284871339798, 1.6508371998843517e-030, +25, 12.97284872084856, 1.650837412798272e-030, +25, 13.652783133089542, 3.3266754235730111e-031, +25, 13.652783140540123, 3.3266744536286711e-031, +25, 14.323653288185596, 7.5089192296338788e-032, +25, 14.323653295636177, 7.5089195273493671e-032, +25, 14.985395908355713, 1.8869158708375887e-032, +25, 14.985395915806293, 1.8869156141367114e-032, +25, 15.637922637164593, 5.2491829350088782e-033, +25, 15.637922644615173, 5.2491824971659126e-033, +25, 16.281120285391808, 1.6081191935598747e-033, +25, 16.281120292842388, 1.608118845571321e-033, +25, 16.914851076900959, 5.3986271338461797e-034, +25, 16.91485108435154, 5.3986283194236148e-034, +25, 17.538952887058258, 1.9766512695275074e-034, +25, 17.538952894508839, 1.9766507896017455e-034, +25, 18.153239868581295, 7.8569686415203062e-035, +25, 18.153239876031876, 7.8569708046899769e-035, +25, 18.757503516972065, 3.3749866196468743e-035, +25, 18.757503524422646, 3.374985983250723e-035, +25, 19.351514972746372, 1.5594420539380395e-035, +25, 19.351514980196953, 1.5594416192490925e-035, +25, 19.935029000043869, 7.7158386293794966e-036, +25, 19.93502900749445, 7.7158392148375424e-036, +25, 20.507790975272655, 4.0656659632469917e-036, +25, 20.507790982723236, 4.0656647261416748e-036, +25, 21.069548606872559, 2.2711959500700407e-036, +25, 21.069548614323139, 2.2711951777269612e-036, +25, 21.62007087469101, 1.3353866143298436e-036, +25, 21.62007088214159, 1.3353860101843685e-036, +25, 22.159177884459496, 8.2143426189718226e-037, +25, 22.159177891910076, 8.2143413202705087e-037, +25, 22.68678567558527, 5.2648015059720179e-037, +25, 22.686785683035851, 5.2648001075197064e-037, +25, 23.202968575060368, 3.468211073462519e-037, +25, 23.202968582510948, 3.4682107310949544e-037, +25, 23.70803364366293, 2.3273599976356348e-037, +25, 23.70803365111351, 2.3273591213713725e-037, +25, 24.202582977712154, 1.5765602064246655e-037, +25, 24.202582985162735, 1.576559556129669e-037, +25, 24.687517486512661, 1.1088611117377277e-037, +25, 24.687517493963242, 1.1088604968432837e-037, +25, 25.16395078599453, 7.7583898454128553e-038, +25, 25.16395079344511, 7.7583939097854651e-038, +25, 25.627866134047508, 5.3068781900534944e-038, +25, 25.627866141498089, 5.3068810921059701e-038, +26, 0.78101654350757599, 5.8923908707209337e-008, +26, 0.78101655095815659, 5.8923821371534893e-008, +26, 1.6320968940854073, 1.236317730309333e-010, +26, 1.6320969015359879, 1.2363168158688363e-010, +26, 2.4678146317601204, 5.7429811601560071e-013, +26, 2.467814639210701, 5.7429765734855436e-013, +26, 3.2899207398295403, 4.734388742385331e-015, +26, 3.2899207472801208, 4.7343867559584461e-015, +26, 4.0996342152357101, 6.1272431600609502e-017, +26, 4.0996342226862907, 6.1272407979893011e-017, +26, 4.8978375121951103, 1.1506240642534423e-018, +26, 4.8978375196456909, 1.1506236852699587e-018, +26, 5.6851947978138924, 2.9671094902332928e-020, +26, 5.685194805264473, 2.9671085633439803e-020, +26, 6.4622200652956963, 1.0086511721536377e-021, +26, 6.4622200727462769, 1.0086507678940824e-021, +26, 7.2293184027075768, 4.3801061282054169e-023, +26, 7.2293184101581573, 4.3801050332411078e-023, +26, 7.9868123158812523, 2.3696799980087546e-024, +26, 7.9868123233318329, 2.3696791495984219e-024, +26, 8.7349593564867973, 1.5649197470426281e-025, +26, 8.7349593639373779, 1.5649197320553895e-025, +26, 9.4739642217755318, 1.2402917131745359e-026, +26, 9.4739642292261124, 1.2402913154591754e-026, +26, 10.2039874792099, 1.1629424955001513e-027, +26, 10.20398748666048, 1.1629425103997286e-027, +26, 10.925151742994785, 1.2742687180623173e-028, +26, 10.925151750445366, 1.2742686869329822e-028, +26, 11.637546353042126, 1.6143813265406585e-029, +26, 11.637546360492706, 1.6143813107433007e-029, +26, 12.341230750083923, 2.3428227604690718e-030, +26, 12.341230757534504, 2.3428227187060725e-030, +26, 13.036237008869648, 3.8625446674283068e-031, +26, 13.036237016320229, 3.8625439691448719e-031, +26, 13.722571700811386, 7.1813310277242243e-032, +26, 13.722571708261967, 7.1813308590609393e-032, +26, 14.400217205286026, 1.4957140381405686e-032, +26, 14.400217212736607, 1.4957142743655298e-032, +26, 15.069132648408413, 3.4688292162948178e-033, +26, 15.069132655858994, 3.4688284579266739e-033, +26, 15.729254551231861, 8.9084835395664626e-034, +26, 15.729254558682442, 8.908484325639754e-034, +26, 16.3804971575737, 2.5204945088761422e-034, +26, 16.380497165024281, 2.5204938761288704e-034, +26, 17.022752746939659, 7.8188945402045879e-035, +26, 17.02275275439024, 7.8188922746258055e-035, +26, 17.65589178353548, 2.6473364587263948e-035, +26, 17.655891790986061, 2.6473357716097579e-035, +26, 18.279763206839561, 9.7405122544829131e-036, +26, 18.279763214290142, 9.7405091647747447e-036, +26, 18.894194960594177, 3.878059833810667e-036, +26, 18.894194968044758, 3.8780594112881572e-036, +26, 19.498995013535023, 1.6636902562494894e-036, +26, 19.498995020985603, 1.6636907531659472e-036, +26, 20.093953281641006, 7.6577266090817481e-037, +26, 20.093953289091587, 7.657728188363079e-037, +26, 20.678845040500164, 3.7661248096741531e-037, +26, 20.678845047950745, 3.7661237372250638e-037, +26, 21.253436677157879, 1.9691052657118544e-037, +26, 21.253436684608459, 1.9691047946430182e-037, +26, 21.817495100200176, 1.0899858439496351e-037, +26, 21.817495107650757, 1.0899854262898754e-037, +26, 22.370802812278271, 6.3470096664624425e-038, +26, 22.370802819728851, 6.3470080713999366e-038, +26, 22.913181200623512, 3.86373588174236e-038, +26, 22.913181208074093, 3.8637351113998463e-038, +26, 23.444525294005871, 2.4535347310547519e-038, +26, 23.444525301456451, 2.4535359123032401e-038, +26, 23.964852377772331, 1.6049618186436992e-038, +26, 23.964852385222912, 1.604961872563914e-038, +26, 24.474362745881081, 1.0722943070757005e-038, +26, 24.474362753331661, 1.0722942325976742e-038, +26, 24.973499171435833, 7.2558350814098704e-039, +26, 24.973499178886414, 7.2558340329470219e-039, +26, 25.462974481284618, 5.0337622643621282e-039, +26, 25.462974488735199, 5.0337617320777135e-039, +26, 25.943732649087906, 3.5390684241286765e-039, +26, 25.943732656538486, 3.5390691209096449e-039, +26, 26.416851162910461, 2.4665037699450018e-039, +26, 26.416851170361042, 2.4665034955684909e-039, +26, 26.801410645246506, 1.1171525523613971e-039, +26, 26.801410652697086, 1.1171551092920132e-039, +27, 0.7828962579369545, 4.9861854667393399e-008, +27, 0.7828962653875351, 4.9861772593924402e-008, +27, 1.6355748474597931, 9.6921316479103525e-011, +27, 1.6355748549103737, 9.6921206864357132e-011, +27, 2.4731948226690292, 4.171211347524171e-013, +27, 2.4731948301196098, 4.1712091406116398e-013, +27, 3.2974838986992836, 3.1856718158208548e-015, +27, 3.2974839061498642, 3.1856696336218403e-015, +27, 4.1096459552645683, 3.8192029014720663e-017, +27, 4.1096459627151489, 3.8192010297992792e-017, +27, 4.9105536565184593, 6.6429667302540135e-019, +27, 4.9105536639690399, 6.6429652717397208e-019, +27, 5.7008651793003082, 1.5864616200237458e-020, +27, 5.7008651867508888, 1.5864611294551399e-020, +27, 6.4810914397239685, 4.993999498145391e-022, +27, 6.4810914471745491, 4.9939979049271363e-022, +27, 7.2516367882490158, 2.0079266330070849e-023, +27, 7.2516367956995964, 2.0079265308291086e-023, +27, 8.0128250047564507, 1.0056680741144098e-024, +27, 8.0128250122070312, 1.0056677361707529e-024, +27, 8.7649167329072952, 6.1476317533215932e-026, +27, 8.7649167403578758, 6.1476309156933445e-026, +27, 9.5081214383244514, 4.5096613837282808e-027, +27, 9.508121445775032, 4.5096604070043352e-027, +27, 10.242606043815613, 3.9132924912256924e-028, +27, 10.242606051266193, 3.9132926019691446e-028, +27, 10.96850112080574, 3.9680374563073656e-029, +27, 10.968501128256321, 3.968037549032286e-029, +27, 11.685905538499355, 4.6518641224931443e-030, +27, 11.685905545949936, 4.6518631300160416e-030, +27, 12.394889906048775, 6.2467209675851883e-031, +27, 12.394889913499355, 6.2467197889832523e-031, +27, 13.095499135553837, 9.5296302920980662e-032, +27, 13.095499143004417, 9.5296301328881049e-032, +27, 13.787754379212856, 1.6394978658915808e-032, +27, 13.787754386663437, 1.6394979205807897e-032, +27, 14.471654459834099, 3.1600211613408551e-033, +27, 14.471654467284679, 3.1600209693232782e-033, +27, 15.147176899015903, 6.7828954814670378e-034, +27, 15.147176906466484, 6.7828945671314482e-034, +27, 15.81427863240242, 1.6125447486417395e-034, +27, 15.814278639853001, 1.6125444345876133e-034, +27, 16.472896493971348, 4.2246556605945897e-035, +27, 16.472896501421928, 4.224654227049247e-035, +27, 17.122947536408901, 1.2139966311739369e-035, +27, 17.122947543859482, 1.2139966298630524e-035, +27, 17.764329209923744, 3.8095779223206078e-036, +27, 17.764329217374325, 3.8095779252456187e-036, +27, 18.396919578313828, 1.3000203710965374e-036, +27, 18.396919585764408, 1.3000203411711264e-036, +27, 19.020577564835548, 4.8049120367747199e-037, +27, 19.020577572286129, 4.8049124355340798e-037, +27, 19.635143436491489, 1.9158924823061778e-037, +27, 19.63514344394207, 1.9158920386648308e-037, +27, 20.240439757704735, 8.2093208358169539e-038, +27, 20.240439765155315, 8.2093222197429644e-038, +27, 20.836273021996021, 3.7650963780981519e-038, +27, 20.836273029446602, 3.7650975525688663e-038, +27, 21.422436565160751, 1.8412740319560743e-038, +27, 21.422436572611332, 1.8412734834107893e-038, +27, 21.998715363442898, 9.5568938496580513e-039, +27, 21.998715370893478, 9.5568962750049465e-039, +27, 22.564893670380116, 5.2444711828702124e-039, +27, 22.564893677830696, 5.2444725699857754e-039, +27, 23.120767138898373, 3.0256331670909385e-039, +27, 23.120767146348953, 3.0256324528122128e-039, +27, 23.666161254048347, 1.8245360187243205e-039, +27, 23.666161261498928, 1.8245363450061449e-039, +27, 24.200958535075188, 1.1470036575842657e-039, +27, 24.200958542525768, 1.1470033205632092e-039, +27, 24.725136809051037, 7.4468116835290912e-040, +27, 24.725136816501617, 7.4468134793516934e-040, +27, 25.238818168640137, 4.9485796130614579e-040, +27, 25.238818176090717, 4.9485778772589032e-040, +27, 25.742321841418743, 3.3399923581817735e-040, +27, 25.742321848869324, 3.3399911124650134e-040, +27, 26.236201457679272, 2.2838209417828281e-040, +27, 26.236201465129852, 2.2838217806321604e-040, +27, 26.721238203346729, 1.6104454076256336e-040, +27, 26.72123821079731, 1.6104457017695957e-040, +27, 27.198375716805458, 1.12895575803922e-040, +27, 27.198375724256039, 1.1289556733584685e-040, +27, 27.669778347015381, 7.8496301393215855e-041, +27, 27.669778354465961, 7.8496341262896801e-041, +27, 27.884223878383636, 4.4309665223873591e-041, +27, 27.884223885834217, 4.4309591849200503e-041, +28, 0.78467844426631927, 4.2438470083140721e-008, +28, 0.78467845171689987, 4.2438393278981791e-008, +28, 1.6388683915138245, 7.6621569710548971e-011, +28, 1.6388683989644051, 7.66215089154498e-011, +28, 2.4782853201031685, 3.0631204478184193e-013, +28, 2.4782853275537491, 3.063118924040777e-013, +28, 3.304634802043438, 2.1729815422346648e-015, +28, 3.3046348094940186, 2.1729799923068305e-015, +28, 4.1191061362624168, 2.4196250779813722e-017, +28, 4.1191061437129974, 2.4196239816772689e-017, +28, 4.9225624054670334, 3.9085656395735408e-019, +28, 4.922562412917614, 3.9085649025210167e-019, +28, 5.7156557217240334, 8.6680273869165024e-021, +28, 5.715655729174614, 8.6680236478512346e-021, +28, 6.498893603682518, 2.5335387999951474e-022, +28, 6.4988936111330986, 2.5335376908522942e-022, +28, 7.2726791352033615, 9.4573144592121954e-024, +28, 7.2726791426539421, 9.4573116298964195e-024, +28, 8.0373366698622704, 4.3971230185116881e-025, +28, 8.037336677312851, 4.3971227534536684e-025, +28, 8.793128989636898, 2.4950063652246191e-026, +28, 8.7931289970874786, 2.495005720678091e-026, +28, 9.5402692407369614, 1.6986980617997022e-027, +28, 9.540269248187542, 1.6986976051079919e-027, +28, 10.278929390013218, 1.368000853859253e-028, +28, 10.278929397463799, 1.3680004892213298e-028, +28, 11.009246453642845, 1.2872419602896367e-029, +28, 11.009246461093426, 1.2872420187471339e-029, +28, 11.731327079236507, 1.4003201763391476e-030, +28, 11.731327086687088, 1.4003202386076777e-030, +28, 12.445251040160656, 1.7448255734165301e-031, +28, 12.445251047611237, 1.7448253583893487e-031, +28, 13.151073843240738, 2.4698393595556993e-032, +28, 13.151073850691319, 2.4698391161370222e-032, +28, 13.848828695714474, 3.9427669364651789e-033, +28, 13.848828703165054, 3.9427660690914164e-033, +28, 14.538528017699718, 7.0517495293252521e-034, +28, 14.538528025150299, 7.0517474992045073e-034, +28, 15.22016453742981, 1.4046733706426603e-034, +28, 15.22016454488039, 1.4046729721237711e-034, +28, 15.893712103366852, 3.0994444806456431e-035, +28, 15.893712110817432, 3.0994449626913169e-035, +28, 16.55912622064352, 7.5380952232932651e-036, +28, 16.559126228094101, 7.5380932219859205e-036, +28, 17.216344498097897, 2.0114378107354203e-036, +28, 17.216344505548477, 2.0114379656122684e-036, +28, 17.865286819636822, 5.8633939940250315e-037, +28, 17.865286827087402, 5.8633946299343831e-037, +28, 18.505855575203896, 1.8596224339761576e-037, +28, 18.505855582654476, 1.8596221870214534e-037, +28, 19.137935824692249, 6.3922092248869744e-038, +28, 19.13793583214283, 6.3922102380482483e-038, +28, 19.761395521461964, 2.3724862433709197e-038, +28, 19.761395528912544, 2.3724866454052567e-038, +28, 20.376085996627808, 9.4731318337289952e-039, +28, 20.376086004078388, 9.4731287775953353e-039, +28, 20.981842800974846, 4.0545371346860406e-039, +28, 20.981842808425426, 4.0545370535552068e-039, +28, 21.578487128019333, 1.8533283507255836e-039, +28, 21.578487135469913, 1.853328817895879e-039, +28, 22.165828302502632, 9.0155863853882353e-040, +28, 22.165828309953213, 9.0155831427237625e-040, +28, 22.743667811155319, 4.6472893319487125e-040, +28, 22.7436678186059, 4.6472889307429114e-040, +28, 23.311805583536625, 2.5293602604427438e-040, +28, 23.311805590987206, 2.5293596848335514e-040, +28, 23.870049826800823, 1.4463087106544672e-040, +28, 23.870049834251404, 1.4463085194116285e-040, +28, 24.418231755495071, 8.641896329274563e-041, +28, 24.418231762945652, 8.6418996111656845e-041, +28, 24.956227175891399, 5.3786841208254478e-041, +28, 24.95622718334198, 5.378682136136815e-041, +28, 25.483986794948578, 3.4648144680023666e-041, +28, 25.483986802399158, 3.4648129601794969e-041, +28, 26.001575656235218, 2.2884086968613662e-041, +28, 26.001575663685799, 2.2884098625776109e-041, +28, 26.509218297898769, 1.5387898607295863e-041, +28, 26.50921830534935, 1.538789924506611e-041, +28, 27.00733794271946, 1.0458893902132325e-041, +28, 27.00733795017004, 1.0458899705307257e-041, +28, 27.4965685531497, 7.317848728543107e-042, +28, 27.496568560600281, 7.3178520005717001e-042, +28, 27.977721095085144, 5.1513043977723732e-042, +28, 27.977721102535725, 5.1513042258958866e-042, +28, 28.451707921922207, 3.5986164377315787e-042, +28, 28.451707929372787, 3.5986160057693314e-042, +29, 0.78637154400348663, 3.6315909083995129e-008, +29, 0.78637155145406723, 3.6315849334616369e-008, +29, 1.6419936791062355, 6.1049645545974547e-011, +29, 1.6419936865568161, 6.1049599294982487e-011, +29, 2.4831117615103722, 2.2726035573991162e-013, +29, 2.4831117689609528, 2.2726023881733654e-013, +29, 3.3114102259278297, 1.5011780867764562e-015, +29, 3.3114102333784103, 1.5011775587872939e-015, +29, 4.128064326941967, 1.5563805350068021e-017, +29, 4.1280643343925476, 1.5563800665439041e-017, +29, 4.9339278042316437, 2.3406905946198134e-019, +29, 4.9339278116822243, 2.3406896430597371e-019, +29, 5.7296467050909996, 4.8324621843737061e-021, +29, 5.7296467125415802, 4.8324604821555049e-021, +29, 6.5157249048352242, 1.314795562058049e-022, +29, 6.5157249122858047, 1.3147952115386097e-022, +29, 7.2925638258457184, 4.5681547645026199e-024, +29, 7.292563833296299, 4.5681541042570898e-024, +29, 8.0604878067970276, 1.9767148584973311e-025, +29, 8.0604878142476082, 1.9767144437084469e-025, +29, 8.8197610825300217, 1.0437840229618024e-026, +29, 8.8197610899806023, 1.0437836457111727e-026, +29, 9.5705995559692383, 6.6127541570083993e-028, +29, 9.5705995634198189, 6.6127525803998794e-028, +29, 10.313179194927216, 4.9550353823480331e-029, +29, 10.313179202377796, 4.9550344472793234e-029, +29, 11.047642216086388, 4.3379652668743748e-030, +29, 11.047642223536968, 4.3379651694905502e-030, +29, 11.77410165220499, 4.3903098563318958e-031, +29, 11.774101659655571, 4.3903087396488023e-031, +29, 12.492644853889942, 5.0891392311082294e-032, +29, 12.492644861340523, 5.089138080132273e-032, +29, 13.203336097300053, 6.7015567871931459e-033, +29, 13.203336104750633, 6.7015574012559967e-033, +29, 13.906218603253365, 9.9522699683293545e-034, +29, 13.906218610703945, 9.9522699561603004e-034, +29, 14.60131610929966, 1.6559310130268636e-034, +29, 14.60131611675024, 1.6559308877250499e-034, +29, 15.28863400965929, 3.0688012602367554e-035, +29, 15.288634017109871, 3.0688008505595191e-035, +29, 15.968160234391689, 6.3003656761785947e-036, +29, 15.96816024184227, 6.300365157267352e-036, +29, 16.639865875244141, 1.425912288294408e-036, +29, 16.639865882694721, 1.425911844482608e-036, +29, 17.303705655038357, 3.5413918087008817e-037, +29, 17.303705662488937, 3.5413910585270221e-037, +29, 17.959618203341961, 9.6110663827236623e-038, +29, 17.959618210792542, 9.6110639887579061e-038, +29, 18.607526287436485, 2.8389759994471709e-038, +29, 18.607526294887066, 2.8389752688919641e-038, +29, 19.247336961328983, 9.0931089735817269e-039, +29, 19.247336968779564, 9.0931107476948825e-039, +29, 19.878941707313061, 3.1467556490433912e-039, +29, 19.878941714763641, 3.1467564127571162e-039, +29, 20.502216704189777, 1.1724748656710215e-039, +29, 20.502216711640358, 1.1724746734027557e-039, +29, 21.117023251950741, 4.6876364663697041e-040, +29, 21.117023259401321, 4.6876364357803892e-040, +29, 21.723208487033844, 2.0042123089344851e-040, +29, 21.723208494484425, 2.0042116411036911e-040, +29, 22.320606715977192, 9.132472556056144e-041, +29, 22.320606723427773, 9.1324737655785673e-041, +29, 22.909041479229927, 4.4204627633406315e-041, +29, 22.909041486680508, 4.420462690830891e-041, +29, 23.488328985869884, 2.2638612067742748e-041, +29, 23.488328993320465, 2.2638616763927321e-041, +29, 24.05828333646059, 1.2225551251648693e-041, +29, 24.058283343911171, 1.2225553197479533e-041, +29, 24.618724562227726, 6.9314021088591364e-042, +29, 24.618724569678307, 6.9314047935940562e-042, +29, 25.169490531086922, 4.1049308418651103e-042, +29, 25.169490538537502, 4.1049319553758314e-042, +29, 25.710454262793064, 2.5298050928083053e-042, +29, 25.710454270243645, 2.5298056900518227e-042, +29, 26.241548083722591, 1.6166462380689568e-042, +29, 26.241548091173172, 1.6166465098434285e-042, +29, 26.762795478105545, 1.0606841937797943e-042, +29, 26.762795485556126, 1.0606843404549322e-042, +29, 27.274348974227905, 7.0992566551399511e-043, +29, 27.274348981678486, 7.0992546682756672e-043, +29, 27.776527158915997, 4.8148903392572901e-043, +29, 27.776527166366577, 4.814888042092614e-043, +29, 28.269836388528347, 3.3234515341900158e-043, +29, 28.269836395978928, 3.3234500791670542e-043, +29, 28.754959724843502, 2.3456576866672306e-043, +29, 28.754959732294083, 2.345656656614369e-043, +29, 29.232707068324089, 1.6470684285437321e-043, +29, 29.23270707577467, 1.6470683545256373e-043, +29, 29.70374021679163, 1.14547675702381e-043, +29, 29.70374022424221, 1.1454765601759464e-043, +30, 0.7879829928278923, 3.1234103821482427e-008, +30, 0.7879830002784729, 3.1234044655401994e-008, +30, 1.6449649482965469, 4.9000015491257048e-011, +30, 1.6449649557471275, 4.8999963821072772e-011, +30, 2.4876966997981071, 1.7023669931328061e-013, +30, 2.4876967072486877, 1.7023657129354393e-013, +30, 3.3178424835205078, 1.0494761982366968e-015, +30, 3.3178424909710884, 1.0494757357860962e-015, +30, 4.1365640535950661, 1.0154249700920638e-017, +30, 4.1365640610456467, 1.0154243875133412e-017, +30, 4.9447060599923134, 1.4250864555511693e-019, +30, 4.944706067442894, 1.4250858796996163e-019, +30, 5.7429084852337837, 2.7453691120619369e-021, +30, 5.7429084926843643, 2.7453685866311988e-021, +30, 6.5316714197397232, 6.9693659068680088e-023, +30, 6.5316714271903038, 6.9693629187270163e-023, +30, 7.3113943338394165, 2.2591471868696091e-024, +30, 7.3113943412899971, 2.2591466479292196e-024, +30, 8.0824010968208313, 9.1197383000971079e-026, +30, 8.0824011042714119, 9.1197355380522927e-026, +30, 8.8449568077921867, 4.4921066968594634e-027, +30, 8.8449568152427673, 4.4921064406150814e-027, +30, 9.5992793887853622, 2.6545531428409782e-028, +30, 9.5992793962359428, 2.6545522470546947e-028, +30, 10.34554798156023, 1.855221838168487e-029, +30, 10.345547989010811, 1.8552214020399549e-029, +30, 11.083908997476101, 1.5147783374462689e-030, +30, 11.083909004926682, 1.5147781122476647e-030, +30, 11.81448071449995, 1.4297164287403578e-031, +30, 11.814480721950531, 1.429716050915216e-031, +30, 12.537356749176979, 1.5455160104219774e-032, +30, 12.53735675662756, 1.5455160199328339e-032, +30, 13.252608671784401, 1.8978775176433715e-033, +30, 13.252608679234982, 1.8978774707164247e-033, +30, 13.960288092494011, 2.6282911950633352e-034, +30, 13.960288099944592, 2.6282913708927645e-034, +30, 14.660428203642368, 4.0780899601901608e-035, +30, 14.660428211092949, 4.0780894770882105e-035, +30, 15.353045016527176, 7.0479243716573658e-036, +30, 15.353045023977757, 7.0479222548237397e-036, +30, 16.038138270378113, 1.3494709199819255e-036, +30, 16.038138277828693, 1.3494705517069979e-036, +30, 16.715692117810249, 2.8486491673345358e-037, +30, 16.71569212526083, 2.8486483929154767e-037, +30, 17.385675646364689, 6.5998055420207975e-038, +30, 17.385675653815269, 6.5998062646129257e-038, +30, 18.048043206334114, 1.6711936241018928e-038, +30, 18.048043213784695, 1.6711932368686648e-038, +30, 18.702734716236591, 4.6071433653083805e-039, +30, 18.702734723687172, 4.6071443081395363e-039, +30, 19.349675759673119, 1.3776916161772679e-039, +30, 19.349675767123699, 1.3776916401455473e-039, +30, 19.988777793943882, 4.4532108875418354e-040, +30, 19.988777801394463, 4.4532114573536834e-040, +30, 20.619938254356384, 1.5507563718868067e-040, +30, 20.619938261806965, 1.5507566883583332e-040, +30, 21.243040800094604, 5.7990312184030671e-041, +30, 21.243040807545185, 5.7990304989845352e-041, +30, 21.857955724000931, 2.3212797494554108e-041, +30, 21.857955731451511, 2.3212803480860163e-041, +30, 22.464540585875511, 9.914865440882635e-042, +30, 22.464540593326092, 9.9148662773812494e-042, +30, 23.062641389667988, 4.5045190716090583e-042, +30, 23.062641397118568, 4.5045174791143897e-042, +30, 23.652094401419163, 2.1701628812569051e-042, +30, 23.652094408869743, 2.1701625772121853e-042, +30, 24.232729002833366, 1.1046043114766288e-042, +30, 24.232729010283947, 1.1046045034064885e-042, +30, 24.804372116923332, 5.9211173400922859e-043, +30, 24.804372124373913, 5.9211190991234153e-043, +30, 25.366854824125767, 3.3298155214419811e-043, +30, 25.366854831576347, 3.3298157358067105e-043, +30, 25.92002210021019, 1.9551128692966943e-043, +30, 25.92002210766077, 1.9551123692323681e-043, +30, 26.463746801018715, 1.1933006750773454e-043, +30, 26.463746808469296, 1.1933004727347112e-043, +30, 26.997949115931988, 7.5643757950805542e-044, +30, 26.997949123382568, 7.5643761045987683e-044, +30, 27.522622361779213, 4.9284040353068413e-044, +30, 27.522622369229794, 4.9284056246758231e-044, +30, 28.037864476442337, 3.2810162604333193e-044, +30, 28.037864483892918, 3.281017845647255e-044, +30, 28.543911211192608, 2.2181628671749676e-044, +30, 28.543911218643188, 2.218162484652318e-044, +30, 29.041161552071571, 1.5134037301717584e-044, +30, 29.041161559522152, 1.5134029110911047e-044, +30, 29.530181311070919, 1.0667420585863651e-044, +30, 29.5301813185215, 1.0667417522137867e-044, +30, 30.011674650013447, 7.5174774420740806e-045, +30, 30.011674657464027, 7.5174742900736671e-045, +30, 30.486428417265415, 5.2621270182135051e-045, +30, 30.486428424715996, 5.262130311093599e-045, +30, 30.939444169402122, 3.5015139512069607e-045, +30, 30.939444176852703, 3.5015112710245708e-045, +31, 0.78951938450336456, 2.6990963852982276e-008, +31, 0.78951939195394516, 2.6990901272098622e-008, +31, 1.6477948054671288, 3.9599591893838782e-011, +31, 1.6477948129177094, 3.9599558875077027e-011, +31, 2.4920600801706314, 1.2867416450803074e-013, +31, 2.492060087621212, 1.286740858923318e-013, +31, 3.3239601328969002, 7.4191337236762968e-016, +31, 3.3239601403474808, 7.4191298658981141e-016, +31, 4.144643746316433, 6.7136115607620136e-018, +31, 4.1446437537670135, 6.7136080734499562e-018, +31, 4.9549467116594315, 8.8116416572145598e-020, +31, 4.9549467191100121, 8.8116378746161626e-020, +31, 5.7555030211806297, 1.5874468287337354e-021, +31, 5.7555030286312103, 1.5874462991137669e-021, +31, 6.5468088984489441, 3.7683180579985163e-023, +31, 6.5468089058995247, 3.7683164558120959e-023, +31, 7.3292616009712219, 1.1421590109206418e-024, +31, 7.3292616084218025, 1.1421585299332504e-024, +31, 8.103184200823307, 4.3108518074612864e-026, +31, 8.1031842082738876, 4.3108510892707748e-026, +31, 8.8688421621918678, 1.9851855023091017e-027, +31, 8.8688421696424484, 1.9851853532161421e-027, +31, 9.6264548823237419, 1.0966928714056398e-028, +31, 9.6264548897743225, 1.0966926721759533e-028, +31, 10.376203939318657, 7.164836764783927e-030, +31, 10.376203946769238, 7.1648343154883914e-030, +31, 11.118239149451256, 5.4683058705610656e-031, +31, 11.118239156901836, 5.4683043353071719e-031, +31, 11.8526830971241, 4.8242112495562322e-032, +31, 11.85268310457468, 4.8242113495352988e-032, +31, 12.579634577035904, 4.8742340289959263e-033, +31, 12.579634584486485, 4.8742330295078644e-033, +31, 13.299171291291714, 5.5942948410353604e-034, +31, 13.299171298742294, 5.5942937409224875e-034, +31, 14.011351861059666, 7.2408340380396581e-035, +31, 14.011351868510246, 7.2408326912367206e-035, +31, 14.716217450797558, 1.0500501579246543e-035, +31, 14.716217458248138, 1.0500500363643936e-035, +31, 15.413793005049229, 1.6961373883454169e-036, +31, 15.413793012499809, 1.6961372726275582e-036, +31, 16.104088209569454, 3.0354866582877075e-037, +31, 16.104088217020035, 3.0354856266520219e-037, +31, 16.787098243832588, 5.9896173771901093e-038, +31, 16.787098251283169, 5.98961535516797e-038, +31, 17.462804310023785, 1.2972746518568634e-038, +31, 17.462804317474365, 1.2972745309510283e-038, +31, 18.13117404282093, 3.0713680138571644e-039, +31, 18.131174050271511, 3.0713676965074795e-039, +31, 18.79216181486845, 7.9182263243406493e-040, +31, 18.792161822319031, 7.9182241350107358e-040, +31, 19.445708937942982, 2.214898087434925e-040, +31, 19.445708945393562, 2.2148980677402555e-040, +31, 20.091743782162666, 6.6993154618323218e-041, +31, 20.091743789613247, 6.6993135377084829e-041, +31, 20.730181947350502, 2.1839810764001286e-041, +31, 20.730181954801083, 2.1839807962981238e-041, +31, 21.360926359891891, 7.6498865481473596e-042, +31, 21.360926367342472, 7.6498850691523407e-042, +31, 21.983867526054382, 2.8703402503431693e-042, +31, 21.983867533504963, 2.8703404559755345e-042, +31, 22.598883867263794, 1.1502498454193117e-042, +31, 22.598883874714375, 1.1502498916466649e-042, +31, 23.205842353403568, 4.9084725935443196e-043, +31, 23.205842360854149, 4.9084710329663892e-043, +31, 23.80459950864315, 2.2238235774505732e-043, +31, 23.804599516093731, 2.2238237880748328e-043, +31, 24.395002961158752, 1.0666581061637025e-043, +31, 24.395002968609333, 1.0666576688114463e-043, +31, 24.976893968880177, 5.3977921159553397e-044, +31, 24.976893976330757, 5.3977934865920802e-044, +31, 25.550111055374146, 2.8731051700509201e-044, +31, 25.550111062824726, 2.8731044277207976e-044, +31, 26.114495605230331, 1.6031969299858829e-044, +31, 26.114495612680912, 1.6031970042652873e-044, +31, 26.669899813830853, 9.3355015180719599e-045, +31, 26.669899821281433, 9.3355052705843679e-045, +31, 27.216198123991489, 5.6495965443312072e-045, +31, 27.21619813144207, 5.6495939839503296e-045, +31, 27.753303058445454, 3.5492321895997083e-045, +31, 27.753303065896034, 3.5492321163912673e-045, +31, 28.281186141073704, 2.2957811874765475e-045, +31, 28.281186148524284, 2.2957814583395176e-045, +31, 28.799904033541679, 1.5194259395681735e-045, +31, 28.79990404099226, 1.5194267112625272e-045, +31, 29.309627436101437, 1.0230813499247931e-045, +31, 29.309627443552017, 1.0230809924412674e-045, +31, 29.810666806995869, 6.9676223029316235e-046, +31, 29.810666814446449, 6.9676192007503771e-046, +31, 30.303484387695789, 4.8488184998921204e-046, +31, 30.30348439514637, 4.8488172078839344e-046, +31, 30.788682028651237, 3.4250229581297795e-046, +31, 30.788682036101818, 3.4250250734052242e-046, +31, 31.266962468624115, 2.4084133971405881e-046, +31, 31.266962476074696, 2.4084125559476293e-046, +31, 31.73910990357399, 1.6796117435938392e-046, +31, 31.73910991102457, 1.679611553823398e-046, +32, 0.79098659008741379, 2.3428195699417537e-008, +32, 0.79098659753799438, 2.3428153358786678e-008, +32, 1.6504944264888763, 3.2209746415594332e-011, +32, 1.6504944339394569, 3.220970087503767e-011, +32, 2.496219590306282, 9.8084828719793923e-014, +32, 2.4962195977568626, 9.8084762239900993e-014, +32, 3.3297884985804558, 5.3000509925270763e-016, +32, 3.3297885060310364, 5.3000487530063089e-016, +32, 4.152337446808815, 4.4945824866210701e-018, +32, 4.1523374542593956, 4.4945810140566077e-018, +32, 4.9646936282515526, 5.5281595989002857e-020, +32, 4.9646936357021332, 5.5281565203257855e-020, +32, 5.7674851417541504, 9.332409158236809e-022, +32, 5.767485149204731, 9.3324053526450437e-022, +32, 6.5612042769789696, 2.0758269859270062e-023, +32, 6.5612042844295502, 2.0758259829402165e-023, +32, 7.3462459221482277, 5.895162008888518e-025, +32, 7.3462459295988083, 5.8951601605246428e-025, +32, 8.1229320466518402, 2.0846533511721846e-026, +32, 8.1229320541024208, 2.0846528892286505e-026, +32, 8.8915281295776367, 8.9939213820927554e-028, +32, 8.8915281370282173, 8.9939197373278422e-028, +32, 9.6522545516490936, 4.6546437360965095e-029, +32, 9.6522545590996742, 4.6546426636937451e-029, +32, 10.405294768512249, 2.8486464379340495e-030, +32, 10.40529477596283, 2.8486455621645871e-030, +32, 11.150801315903664, 2.0365499436102757e-031, +32, 11.150801323354244, 2.0365494007674272e-031, +32, 11.888900309801102, 1.682907109838634e-032, +32, 11.888900317251682, 1.6829069079598241e-032, +32, 12.619694881141186, 1.5926342764153439e-033, +32, 12.619694888591766, 1.592634174405931e-033, +32, 13.34326783567667, 1.7120603159420472e-034, +32, 13.343267843127251, 1.7120602511528744e-034, +32, 14.059683710336685, 2.075481423520178e-035, +32, 14.059683717787266, 2.075480991830116e-035, +32, 14.768990404903889, 2.8189962905017707e-036, +32, 14.768990412354469, 2.818995942400197e-036, +32, 15.471220426261425, 4.2648503825577588e-037, +32, 15.471220433712006, 4.2648499164953187e-037, +32, 16.166391901671886, 7.1489312549880753e-038, +32, 16.166391909122467, 7.1489309687917951e-038, +32, 16.854509338736534, 1.3213054825449378e-038, +32, 16.854509346187115, 1.3213054922746664e-038, +32, 17.535564221441746, 2.6807748064712788e-039, +32, 17.535564228892326, 2.6807748199492672e-039, +32, 18.209535457193851, 5.9460888344062753e-040, +32, 18.209535464644432, 5.94608895781776e-040, +32, 18.87638970464468, 1.4363587657615266e-040, +32, 18.876389712095261, 1.4363589517907267e-040, +32, 19.536081604659557, 3.765393350640845e-041, +32, 19.536081612110138, 3.7653931802714443e-041, +32, 20.188553966581821, 1.0676300156436359e-041, +32, 20.188553974032402, 1.067629917232314e-041, +32, 20.833737879991531, 3.263757534857454e-042, +32, 20.833737887442112, 3.2637579615392064e-042, +32, 21.471552819013596, 1.0724762195516768e-042, +32, 21.471552826464176, 1.072475891341324e-042, +32, 22.101906821131706, 3.777144305210756e-043, +32, 22.101906828582287, 3.7771444342513115e-043, +32, 22.724696628749371, 1.4217203788681964e-043, +32, 22.724696636199951, 1.4217200228446998e-043, +32, 23.339808091521263, 5.703322551588163e-044, +32, 23.339808098971844, 5.7033226900296373e-044, +32, 23.947116665542126, 2.4316437058578012e-044, +32, 23.947116672992706, 2.431643496160822e-044, +32, 24.546488344669342, 1.0987930055297978e-044, +32, 24.546488352119923, 1.098793076553521e-044, +32, 25.137781016528606, 5.2484169483265025e-045, +32, 25.137781023979187, 5.2484155226682376e-045, +32, 25.720846608281136, 2.6413713577457922e-045, +32, 25.720846615731716, 2.6413705700550837e-045, +32, 26.295534215867519, 1.3965382507957447e-045, +32, 26.2955342233181, 1.3965377603185929e-045, +32, 26.861694745719433, 7.7349160811880277e-046, +32, 26.861694753170013, 7.7349151441627e-046, +32, 27.419187560677528, 4.4682520650157615e-046, +32, 27.419187568128109, 4.4682538523866773e-046, +32, 27.967889867722988, 2.6819888403852565e-046, +32, 27.967889875173569, 2.6819897728379184e-046, +32, 28.507709659636021, 1.6698136917664954e-046, +32, 28.507709667086601, 1.6698129992594366e-046, +32, 29.038602896034718, 1.0721878956432574e-046, +32, 29.038602903485298, 1.0721875356655942e-046, +32, 29.560595072805882, 7.051821086699878e-047, +32, 29.560595080256462, 7.0518182781581043e-047, +32, 30.073806069791317, 4.7259218308968253e-047, +32, 30.073806077241898, 4.7259227603342754e-047, +32, 30.578474305570126, 3.209662989709749e-047, +32, 30.578474313020706, 3.2096634823719178e-047, +32, 31.074972994625568, 2.2043194970557608e-047, +32, 31.074973002076149, 2.2043198986132966e-047, +32, 31.563809163868427, 1.5587084684342884e-047, +32, 31.563809171319008, 1.5587077448629143e-047, +32, 32.045599952340126, 1.0995759280252866e-047, +32, 32.045599959790707, 1.0995758350300892e-047, +32, 32.521030142903328, 7.709762090925553e-048, +32, 32.521030150353909, 7.7097590622875819e-048, +33, 0.79238983243703842, 2.042106061094407e-008, +33, 0.79238983988761902, 2.0421020445651014e-008, +33, 1.6530738100409508, 2.6358450934546795e-011, +33, 1.6530738174915314, 2.635841919126038e-011, +33, 2.5001910030841827, 7.5364817160196323e-014, +33, 2.5001910105347633, 7.5364760748258798e-014, +33, 3.3353501185774803, 3.8237192966188636e-016, +33, 3.3353501260280609, 3.8237162369967308e-016, +33, 4.1596754416823387, 3.0445800511517908e-018, +33, 4.1596754491329193, 3.0445787674974564e-018, +33, 4.9739858210086823, 3.515919024039416e-020, +33, 4.9739858284592628, 3.5159171374646909e-020, +33, 5.7789035513997078, 5.5725899313574696e-022, +33, 5.7789035588502884, 5.5725880635319834e-022, +33, 6.5749169737100601, 1.1637027161635936e-023, +33, 6.5749169811606407, 1.1637021424764075e-023, +33, 7.3624184802174568, 3.1025238187243698e-025, +33, 7.3624184876680374, 3.1025225685285597e-025, +33, 8.1417287290096283, 1.0299156448677693e-026, +33, 8.1417287364602089, 1.0299152761838333e-026, +33, 8.9131129011511803, 4.1710447383740305e-028, +33, 8.9131129086017609, 4.1710436855039434e-028, +33, 9.6767919734120369, 2.0262351044072931e-029, +33, 9.6767919808626175, 2.0262350205955798e-029, +33, 10.432950802147388, 1.1639387550487137e-030, +33, 10.432950809597969, 1.1639386971982789e-030, +33, 11.181744091212749, 7.8101004107994773e-032, +33, 11.18174409866333, 7.8100993240538107e-032, +33, 11.923300854861736, 6.057244317232184e-033, +33, 11.923300862312317, 6.0572438899922103e-033, +33, 12.6577278226614, 5.37984912688152e-034, +33, 12.65772783011198, 5.3798488576528694e-034, +33, 13.385112091898918, 5.4275123456899329e-035, +33, 13.385112099349499, 5.4275107204683884e-035, +33, 14.105523213744164, 6.1747593213329447e-036, +33, 14.105523221194744, 6.174759584448652e-036, +33, 14.819014765322208, 7.8706673148814995e-037, +33, 14.819014772772789, 7.8706658404194138e-037, +33, 15.525625705718994, 1.1174748948810545e-037, +33, 15.525625713169575, 1.1174747454074421e-037, +33, 16.225381337106228, 1.7579206924880998e-038, +33, 16.225381344556808, 1.7579206925033476e-038, +33, 16.918294116854668, 3.0493015445964011e-039, +33, 16.918294124305248, 3.0493005632386758e-039, +33, 17.604364313185215, 5.8065726456748308e-040, +33, 17.604364320635796, 5.8065735081689733e-040, +33, 18.283580414950848, 1.2088940527454202e-040, +33, 18.283580422401428, 1.2088939296397679e-040, +33, 18.955919578671455, 2.7413543307825419e-041, +33, 18.955919586122036, 2.7413546854069123e-041, +33, 19.621347822248936, 6.7471885014535665e-042, +33, 19.621347829699516, 6.7471864084760131e-042, +33, 20.279820293188095, 1.7965045060899062e-042, +33, 20.279820300638676, 1.796504759041087e-042, +33, 20.931281328201294, 5.158585136120737e-043, +33, 20.931281335651875, 5.1585840276484414e-043, +33, 21.575664646923542, 1.5927422905564557e-043, +33, 21.575664654374123, 1.5927419041709561e-043, +33, 22.212893404066563, 5.2728323500442264e-044, +33, 22.212893411517143, 5.272833301596633e-044, +33, 22.842880316078663, 1.8665508074309968e-044, +33, 22.842880323529243, 1.8665503929597308e-044, +33, 23.465527907013893, 7.0465510247547303e-045, +33, 23.465527914464474, 7.0465525196870561e-045, +33, 24.080728746950626, 2.8295466700413958e-045, +33, 24.080728754401207, 2.8295463117518774e-045, +33, 24.688366025686264, 1.2053907748860486e-045, +33, 24.688366033136845, 1.2053907797297697e-045, +33, 25.288314290344715, 5.4333713658348499e-046, +33, 25.288314297795296, 5.4333707575577163e-046, +33, 25.880440697073936, 2.585041776791976e-046, +33, 25.880440704524517, 2.5850416224891656e-046, +33, 26.464606821537018, 1.294202982713015e-046, +33, 26.464606828987598, 1.2942028212485916e-046, +33, 27.040671370923519, 6.7991411240400703e-047, +33, 27.0406713783741, 6.7991425220113025e-047, +33, 27.608494073152542, 3.7390875624622383e-047, +33, 27.608494080603123, 3.7390890064190258e-047, +33, 28.167941257357597, 2.1434291178003268e-047, +33, 28.167941264808178, 2.1434297287968616e-047, +33, 28.718893639743328, 1.2763496554107086e-047, +33, 28.718893647193909, 1.276349581640255e-047, +33, 29.261256985366344, 7.8765374703932726e-048, +33, 29.261256992816925, 7.8765383060880799e-048, +33, 29.794976234436035, 5.0202153746787421e-048, +33, 29.794976241886616, 5.0202165028924652e-048, +33, 30.320053435862064, 3.2803380052293672e-048, +33, 30.320053443312645, 3.2803376399507223e-048, +33, 30.836568854749203, 2.186926240398172e-048, +33, 30.836568862199783, 2.1869261872266441e-048, +33, 31.34470284730196, 1.4800222204585884e-048, +33, 31.344702854752541, 1.4800222979922586e-048, +33, 31.844753533601761, 1.0115642031264472e-048, +33, 31.844753541052341, 1.0115637741760139e-048, +33, 32.337142929434776, 7.0902267468841998e-049, +33, 32.337142936885357, 7.0902246585797814e-049, +33, 32.822405032813549, 5.0119448719507044e-049, +33, 32.82240504026413, 5.0119465060716533e-049, +33, 33.301155410706997, 3.528710823086788e-049, +33, 33.301155418157578, 3.5287089306302669e-049, +33, 33.774044148623943, 2.4656993779862083e-049, +33, 33.774044156074524, 2.4656989685917994e-049, +34, 0.79373380541801453, 1.7870320447571981e-008, +34, 0.79373381286859512, 1.7870276506455547e-008, +34, 1.6555418819189072, 2.1693956252335518e-011, +34, 1.6555418893694878, 2.169393482031388e-011, +34, 2.5039884224534035, 5.8343794749490693e-014, +34, 2.5039884299039841, 5.8343740733510059e-014, +34, 3.3406651616096497, 2.7843628540545165e-016, +34, 3.3406651690602303, 2.7843608026959051e-016, +34, 4.1666847914457321, 2.0853448751062561e-018, +34, 4.1666847988963127, 2.0853434333931684e-018, +34, 4.9828581064939499, 2.2651177977520453e-020, +34, 4.9828581139445305, 2.2651171559715021e-020, +34, 5.7898016795516014, 3.3767540686259957e-022, +34, 5.789801687002182, 3.3767524749671601e-022, +34, 6.5879999399185181, 6.6322446953759727e-024, +34, 6.5879999473690987, 6.6322430150818036e-024, +34, 7.3778426647186279, 1.6630098401402096e-025, +34, 7.3778426721692085, 1.6630090886507645e-025, +34, 8.1596490517258644, 5.1918949421969129e-027, +34, 8.159649059176445, 5.1918938102481311e-027, +34, 8.9336837232112885, 1.9774101387184887e-028, +34, 8.933683730661869, 1.9774100074245055e-028, +34, 9.7001679241657257, 9.0334282304926846e-030, +34, 9.7001679316163063, 9.0334252197952801e-030, +34, 10.45928755402565, 4.8796281980007448e-031, +34, 10.459287561476231, 4.8796275501777707e-031, +34, 11.211199007928371, 3.0788693773199207e-032, +34, 11.211199015378952, 3.0788688420038392e-032, +34, 11.956033661961555, 2.2452940986090922e-033, +34, 11.956033669412136, 2.2452936227253024e-033, +34, 12.693901240825653, 1.8750759204376034e-034, +34, 12.693901248276234, 1.8750752842804171e-034, +34, 13.424892462790012, 1.7786452616498199e-035, +34, 13.424892470240593, 1.7786446652143788e-035, +34, 14.149081096053123, 1.9025691211750822e-036, +34, 14.149081103503704, 1.9025689251028157e-036, +34, 14.866525582969189, 2.2801269981849123e-037, +34, 14.866525590419769, 2.2801266851530347e-037, +34, 15.577270358800888, 3.0437692249582344e-038, +34, 15.577270366251469, 3.0437684609885821e-038, +34, 16.281346872448921, 4.5019816965721435e-039, +34, 16.281346879899502, 4.5019810695604887e-039, +34, 16.978774391114712, 7.3425208917329903e-040, +34, 16.978774398565292, 7.3425186631243907e-040, +34, 17.669560678303242, 1.3146865852739081e-040, +34, 17.669560685753822, 1.3146863252096356e-040, +34, 18.35370247066021, 2.573793005179037e-041, +34, 18.35370247811079, 2.5737926524360587e-041, +34, 19.031185887753963, 5.4887057171033031e-042, +34, 19.031185895204544, 5.488704513022213e-042, +34, 19.701986730098724, 1.2705620774407438e-042, +34, 19.701986737549305, 1.2705617046116079e-042, +34, 20.366070702672005, 3.1822514918640349e-043, +34, 20.366070710122585, 3.1822520959707345e-043, +34, 21.023393549025059, 8.5971363864955409e-044, +34, 21.023393556475639, 8.5971368255369006e-044, +34, 21.673901222646236, 2.498003731865251e-044, +34, 21.673901230096817, 2.4980037715197431e-044, +34, 22.317529946565628, 7.7848759226391922e-045, +34, 22.317529954016209, 7.7848753371433522e-045, +34, 22.954206325113773, 2.5952409109277662e-045, +34, 22.954206332564354, 2.5952404568207584e-045, +34, 23.583847463130951, 9.2311729606610371e-046, +34, 23.583847470581532, 9.2311703994594061e-046, +34, 24.206361152231693, 3.4946377430994947e-046, +34, 24.206361159682274, 3.4946373106458168e-046, +34, 24.821646146476269, 1.404567831635744e-046, +34, 24.821646153926849, 1.4045672999262031e-046, +34, 25.429592646658421, 5.9787752597865641e-047, +34, 25.429592654109001, 5.978774144262924e-047, +34, 26.030082978308201, 2.6886705972105962e-047, +34, 26.030082985758781, 2.6886710855104201e-047, +34, 26.622992672026157, 1.2744191540785126e-047, +34, 26.622992679476738, 1.2744190635266817e-047, +34, 27.208192080259323, 6.3488544121732746e-048, +34, 27.208192087709904, 6.3488565442893872e-048, +34, 27.785548649728298, 3.3151982200499414e-048, +34, 27.785548657178879, 3.3151988733358574e-048, +34, 28.354930281639099, 1.8107632911932828e-048, +34, 28.35493028908968, 1.810762622330984e-048, +34, 28.916210018098354, 1.030369686149161e-048, +34, 28.916210025548935, 1.0303698430412018e-048, +34, 29.469272509217262, 6.0883468905536887e-049, +34, 29.469272516667843, 6.0883480072652297e-049, +34, 30.014022909104824, 3.7247230632777596e-049, +34, 30.014022916555405, 3.7247243481664488e-049, +34, 30.5503985658288, 2.3565034476155617e-049, +34, 30.550398573279381, 2.3565045469963732e-049, +34, 31.078383937478065, 1.5295192725419689e-049, +34, 31.078383944928646, 1.5295187474814393e-049, +34, 31.598028488457203, 1.0139825532853324e-049, +34, 31.598028495907784, 1.0139828355540632e-049, +34, 32.109466001391411, 6.8337062479563186e-050, +34, 32.109466008841991, 6.8337052044204809e-050, +34, 32.612932130694389, 4.6594878059160857e-050, +34, 32.61293213814497, 4.6594858546745958e-050, +34, 33.108774498105049, 3.2254931820997371e-050, +34, 33.10877450555563, 3.2254943146700602e-050, +34, 33.597449377179146, 2.2823015656071796e-050, +34, 33.597449384629726, 2.2823005358520434e-050, +34, 34.079502046108246, 1.6115058560593531e-050, +34, 34.079502053558826, 1.6115055152975725e-050, +34, 34.555533915758133, 1.1315645762275127e-050, +34, 34.555533923208714, 1.1315650253690704e-050, +35, 0.79502273350954056, 1.5696564658820398e-008, +35, 0.79502274096012115, 1.569652771494294e-008, +35, 1.6579066589474678, 1.7951755140845492e-011, +35, 1.6579066663980484, 1.795172599177779e-011, +35, 2.507624514400959, 4.5488206656301077e-014, +35, 2.5076245218515396, 4.5488171430200434e-014, +35, 3.3457516953349113, 2.0453895657036801e-016, +35, 3.3457517027854919, 2.0453878756521357e-016, +35, 4.1733897626399994, 1.4433530097271576e-018, +35, 4.17338977009058, 1.4433524229991216e-018, +35, 4.991341657936573, 1.4771508022017578e-020, +35, 4.9913416653871536, 1.4771500867280908e-020, +35, 5.8002184182405472, 2.0747399443706034e-022, +35, 5.8002184256911278, 2.0747394467376026e-022, +35, 6.6005005240440369, 3.8392364113459108e-024, +35, 6.6005005314946175, 3.8392354381122762e-024, +35, 7.3925751224160194, 9.0695765619146772e-026, +35, 7.3925751298666, 9.069572293654555e-026, +35, 8.1767597943544388, 2.6675509270034494e-027, +35, 8.1767598018050194, 2.6675506136249358e-027, +35, 8.9533184096217155, 9.5711573941640687e-029, +35, 8.9533184170722961, 9.5711567380562427e-029, +35, 9.7224722355604172, 4.1189536616823487e-030, +35, 9.7224722430109978, 4.1189526875111826e-030, +35, 10.484407857060432, 2.0959152421505451e-031, +35, 10.484407864511013, 2.0959146742138462e-031, +35, 11.239283010363579, 1.2457104495496718e-032, +35, 11.239283017814159, 1.245710395515959e-032, +35, 11.987230971455574, 8.5570757828342368e-034, +35, 11.987230978906155, 8.5570743326376781e-034, +35, 12.728363960981369, 6.731095753214648e-035, +35, 12.72836396843195, 6.731094549427605e-035, +35, 13.462775729596615, 6.013970900796823e-036, +35, 13.462775737047195, 6.0139693771309301e-036, +35, 14.190543636679649, 6.0591243108769631e-037, +35, 14.19054364413023, 6.0591231024049275e-037, +35, 14.911730267107487, 6.839443929807019e-038, +35, 14.911730274558067, 6.8394415403820541e-038, +35, 15.626384757459164, 8.5993135893576983e-039, +35, 15.626384764909744, 8.5993113703963994e-039, +35, 16.334543816745281, 1.1979757172554445e-039, +35, 16.334543824195862, 1.1979757632006563e-039, +35, 17.036232560873032, 1.8402986282934665e-040, +35, 17.036232568323612, 1.840298447545906e-040, +35, 17.731465205550194, 3.1036764541195221e-041, +35, 17.731465213000774, 3.1036753988139571e-041, +35, 18.420245580375195, 5.7234487752041445e-042, +35, 18.420245587825775, 5.7234471494298037e-042, +35, 19.102567538619041, 1.149770724442714e-042, +35, 19.102567546069622, 1.1497708502322311e-042, +35, 19.778415270149708, 2.507447858257058e-043, +35, 19.778415277600288, 2.507447274767876e-043, +35, 20.447763599455357, 5.9171812907016089e-044, +35, 20.447763606905937, 5.9171816490569785e-044, +35, 21.110578097403049, 1.5064097471606263e-044, +35, 21.11057810485363, 1.5064094343379064e-044, +35, 21.766815282404423, 4.1254753413104886e-045, +35, 21.766815289855003, 4.1254740159034148e-045, +35, 22.416422687470913, 1.2120731601684306e-045, +35, 22.416422694921494, 1.2120728149051467e-045, +35, 23.059338957071304, 3.8105029138120807e-046, +35, 23.059338964521885, 3.8105021101908041e-046, +35, 23.695493943989277, 1.278651848624312e-046, +35, 23.695493951439857, 1.2786521162296595e-046, +35, 24.324808806180954, 4.5686807873754579e-047, +35, 24.324808813631535, 4.5686813030043594e-047, +35, 24.947196207940578, 1.7340976532386943e-047, +35, 24.947196215391159, 1.7340973755762597e-047, +35, 25.562560573220253, 6.9757455173091851e-048, +35, 25.562560580670834, 6.9757442629046094e-048, +35, 26.170798495411873, 2.9671302137983893e-048, +35, 26.170798502862453, 2.9671302835781711e-048, +35, 26.771799370646477, 1.3313735478811511e-048, +35, 26.771799378097057, 1.3313732423828031e-048, +35, 27.365446366369724, 6.2883216285973802e-049, +35, 27.365446373820305, 6.2883196145848755e-049, +35, 27.951617792248726, 3.1179757440882583e-049, +35, 27.951617799699306, 3.1179754652665415e-049, +35, 28.530189104378223, 1.6188565517709766e-049, +35, 28.530189111828804, 1.6188569145137587e-049, +35, 29.101035751402378, 8.7839901000343891e-050, +35, 29.101035758852959, 8.7839933208888784e-050, +35, 29.664037145674229, 4.9628865328970608e-050, +35, 29.664037153124809, 4.9628851842787253e-050, +35, 30.219082154333591, 2.910666302031331e-050, +35, 30.219082161784172, 2.9106651919731774e-050, +35, 30.766076467931271, 1.7662748357670119e-050, +35, 30.766076475381851, 1.7662748729607436e-050, +35, 31.304952368140221, 1.1088754025811909e-050, +35, 31.304952375590801, 1.1088750925555595e-050, +35, 31.835681214928627, 7.148526917550325e-051, +35, 31.835681222379208, 7.1485250674653274e-051, +35, 32.358288533985615, 4.7111519826619542e-051, +35, 32.358288541436195, 4.7111536596976385e-051, +35, 32.872870914638042, 3.1602889534590541e-051, +35, 32.872870922088623, 3.1602885134279907e-051, +35, 33.379612505435944, 2.148091569354062e-051, +35, 33.379612512886524, 2.1480920659934694e-051, +35, 33.878796987235546, 1.4727237873765687e-051, +35, 33.878796994686127, 1.4727234796573971e-051, +35, 34.370810106396675, 1.0388313927106246e-051, +35, 34.370810113847256, 1.0388309311598943e-051, +35, 34.856128677725792, 7.3481861602270532e-052, +35, 34.856128685176373, 7.3481880076428873e-052, +35, 35.335296384990215, 5.1792611113515678e-052, +35, 35.335296392440796, 5.1792623965812728e-052, +35, 35.808892630040646, 3.6254223058064593e-052, +35, 35.808892637491226, 3.6254226968771535e-052, +36, 0.79626041650772095, 1.3835929450802035e-08, +36, 0.79626042395830154, 1.3835896181998894e-08, +36, 1.6601753905415535, 1.4931244784143379e-11, +36, 1.6601753979921341, 1.493122352780069e-11, +36, 2.5111106708645821, 3.5703899506473421e-14, +36, 2.5111106783151627, 3.5703866047036898e-14, +36, 3.3506259918212891, 1.5150630070913857e-16, +36, 3.3506259992718697, 1.5150618212430521e-16, +36, 4.1798121482133865, 1.0089426735600951e-18, +36, 4.1798121556639671, 1.0089419359975001e-18, +36, 4.9994645193219185, 9.7443777441926607e-21, +36, 4.9994645267724991, 9.7443743955897572e-21, +36, 5.8101886734366417, 1.2915850916227745e-22, +36, 5.8101886808872223, 1.2915844512005848e-22, +36, 6.6124612390995026, 2.2554128885556015e-24, +36, 6.6124612465500832, 2.2554125155276728e-24, +36, 7.4066666588187218, 5.0278360283194926e-26, +36, 7.4066666662693024, 5.0278338546774676e-26, +36, 8.1931207999587059, 1.3954345955970732e-27, +36, 8.1931208074092865, 1.3954341072244855e-27, +36, 8.972086638212204, 4.724464485871543e-29, +36, 8.9720866456627846, 4.7244634031993712e-29, +36, 9.7437852323055267, 1.9184692326394543e-30, +36, 9.7437852397561073, 1.9184685785039855e-30, +36, 10.508403599262238, 9.2110610577508696e-32, +36, 10.508403606712818, 9.2110601266004317e-32, +36, 11.266100466251373, 5.1654694352379121e-33, +36, 11.266100473701954, 5.1654692852681363e-33, +36, 12.017010666429996, 3.3478329826958101e-34, +36, 12.017010673880577, 3.3478329207700918e-34, +36, 12.761248469352722, 2.4846199342754033e-35, +36, 12.761248476803303, 2.4846197946102983e-35, +36, 13.498910188674927, 2.0944139010211171e-36, +36, 13.498910196125507, 2.0944138836963017e-36, +36, 14.230076223611832, 1.9908156870458648e-37, +36, 14.230076231062412, 1.9908153770563911e-37, +36, 14.954812712967396, 2.1201017545655606e-38, +36, 14.954812720417976, 2.1201018528061542e-38, +36, 15.673172801733017, 2.5148501205885068e-39, +36, 15.673172809183598, 2.5148494485055796e-39, +36, 16.385197751224041, 3.3052861787263118e-40, +36, 16.385197758674622, 3.3052861741406174e-40, +36, 17.090917713940144, 4.7903393120159658e-41, +36, 17.090917721390724, 4.790337928020491e-41, +36, 17.790352486073971, 7.6221913499235464e-42, +36, 17.790352493524551, 7.6221887512160983e-42, +36, 18.483512006700039, 1.3261747318690734e-42, +36, 18.48351201415062, 1.3261743247879955e-42, +36, 19.170396812260151, 2.5137057203282608e-43, +36, 19.170396819710732, 2.5137052677277973e-43, +36, 19.850998379290104, 5.1727759046768898e-44, +36, 19.850998386740685, 5.1727766444918836e-44, +36, 20.525299377739429, 1.1519505703963367e-44, +36, 20.52529938519001, 1.1519504260767373e-44, +36, 21.193273916840553, 2.7678273069030527e-45, +36, 21.193273924291134, 2.767827798374501e-45, +36, 21.854887641966343, 7.1550244945029494e-46, +36, 21.854887649416924, 7.1550255906707147e-46, +36, 22.510097898542881, 1.984671431191121e-46, +36, 22.510097905993462, 1.9846717706719504e-46, +36, 23.158853799104691, 5.8920553246780296e-47, +36, 23.158853806555271, 5.8920563816719921e-47, +36, 23.801096305251122, 1.8676209958225792e-47, +36, 23.801096312701702, 1.8676207067911573e-47, +36, 24.436758331954479, 6.3057370674808548e-48, +36, 24.43675833940506, 6.305738069895672e-48, +36, 25.06576481461525, 2.2626653116936076e-48, +36, 25.06576482206583, 2.2626651438466747e-48, +36, 25.688032925128937, 8.609447490993131e-49, +36, 25.688032932579517, 8.6094493022667365e-49, +36, 26.303472265601158, 3.4661501360200687e-49, +36, 26.303472273051739, 3.4661492034038488e-49, +36, 26.9119853079319, 1.4732834984629157e-49, +36, 26.911985315382481, 1.4732837705852057e-49, +36, 27.513467893004417, 6.5968583742268946e-50, +36, 27.513467900454998, 6.5968571516253582e-50, +36, 28.107810139656067, 3.1053437896353887e-50, +36, 28.107810147106647, 3.1053426179920777e-50, +36, 28.694897629320621, 1.5328565224865415e-50, +36, 28.694897636771202, 1.5328568405292139e-50, +36, 29.274613127112389, 7.9154003962363097e-51, +36, 29.274613134562969, 7.9153981703693011e-51, +36, 29.846839085221291, 4.2678541181450703e-51, +36, 29.846839092671871, 4.2678539866995966e-51, +36, 30.411460973322392, 2.3948652243180979e-51, +36, 30.411460980772972, 2.394865944405174e-51, +36, 30.96837193518877, 1.3944290618424927e-51, +36, 30.968371942639351, 1.3944293152714109e-51, +36, 31.5174790173769, 8.3994203358922169e-52, +36, 31.51747902482748, 8.3994196694359044e-52, +36, 32.058711349964142, 5.2303978505284272e-52, +36, 32.058711357414722, 5.2303986168397962e-52, +36, 32.592030584812164, 3.3488642311760486e-52, +36, 32.592030592262745, 3.3488629175690189e-52, +36, 33.117443718016148, 2.1935874637218713e-52, +36, 33.117443725466728, 2.1935864157428464e-52, +36, 33.635017700493336, 1.4640573341386401e-52, +36, 33.635017707943916, 1.4640577637638097e-52, +36, 34.144894443452358, 9.9145231314678597e-53, +36, 34.144894450902939, 9.9145189377303778e-53, +36, 34.647303439676762, 6.7831948011401348e-53, +36, 34.647303447127342, 6.7831938694253262e-53, +36, 35.142567783594131, 4.728695673093241e-53, +36, 35.142567791044712, 4.728693640419844e-53, +36, 35.631099842488766, 3.3479489237088613e-53, +36, 35.631099849939346, 3.3479487366331723e-53, +36, 36.1133848503232, 2.3658904809482673e-53, +36, 36.113384857773781, 2.3658904632138702e-53, +36, 36.589955143630505, 1.6633995727057523e-53, +36, 36.589955151081085, 1.6634000834145591e-53, +37, 0.79745029658079147, 1.2236661930214837e-08, +37, 0.79745030403137207, 1.2236628758929966e-08, +37, 1.6623546034097672, 1.2479305303495537e-11, +37, 1.6623546108603477, 1.2479287682904157e-11, +37, 2.5144571959972382, 2.8202775702029049e-14, +37, 2.5144572034478188, 2.8202750550262852e-14, +37, 3.3553027361631393, 1.1310984736219153e-16, +37, 3.3553027436137199, 1.1310978210383242e-16, +37, 4.1859716475009918, 7.1192220955675187e-19, +37, 4.1859716549515724, 7.1192189237113434e-19, +37, 5.0072519481182098, 6.4985394002265385e-21, +37, 5.0072519555687904, 6.4985349578088278e-21, +37, 5.8197439312934875, 8.1409638138242418e-23, +37, 5.8197439387440681, 8.1409615658792421e-23, +37, 6.623920351266861, 1.3435858973256726e-24, +37, 6.6239203587174416, 1.3435851897008275e-24, +37, 7.4201629906892776, 2.8307382521732816e-26, +37, 7.4201629981398582, 2.8307372642654064e-26, +37, 8.2087858989834785, 7.4250550358011096e-28, +37, 8.2087859064340591, 7.425054233214666e-28, +37, 8.9900510162115097, 2.3757781581308228e-29, +37, 8.9900510236620903, 2.3757776969798374e-29, +37, 9.7641790360212326, 9.117207529070504e-31, +37, 9.7641790434718132, 9.1172056695682319e-31, +37, 10.531357169151306, 4.1367659138735107e-32, +37, 10.531357176601887, 4.1367656716179671e-32, +37, 11.291744880378246, 2.1922792746035818e-33, +37, 11.291744887828827, 2.1922790321494946e-33, +37, 12.045478232204914, 1.3426890905806162e-34, +37, 12.045478239655495, 1.3426888392460162e-34, +37, 12.792673192918301, 9.4164802467780859e-36, +37, 12.792673200368881, 9.4164787873069284e-36, +37, 13.533428221940994, 7.5006766342224927e-37, +37, 13.533428229391575, 7.5006765352776218e-37, +37, 14.267826303839684, 6.7370840809894097e-38, +37, 14.267826311290264, 6.7370818558224836e-38, +37, 14.995936617255211, 6.7794683533193956e-39, +37, 14.995936624705791, 6.7794685669393241e-39, +37, 15.717815771698952, 7.5988197334410899e-40, +37, 15.717815779149532, 7.5988200044185489e-40, +37, 16.433508925139904, 9.4370881848402715e-41, +37, 16.433508932590485, 9.4370869322809968e-41, +37, 17.143050618469715, 1.2923864433326415e-41, +37, 17.143050625920296, 1.2923862031149783e-41, +37, 17.846465460956097, 1.9431631602162195e-42, +37, 17.846465468406677, 1.9431627337446246e-42, +37, 18.543768703937531, 3.1948008999823789e-43, +37, 18.543768711388111, 3.1948010113204146e-43, +37, 19.234966672956944, 5.7225142187488541e-44, +37, 19.234966680407524, 5.7225139397996951e-44, +37, 19.920057162642479, 1.1128777706945255e-44, +37, 19.92005717009306, 1.1128779257270233e-44, +37, 20.599029682576656, 2.3422790968973117e-45, +37, 20.599029690027237, 2.3422787459449697e-45, +37, 21.271865725517273, 5.3194139126989398e-46, +37, 21.271865732967854, 5.3194138487209108e-46, +37, 21.938538894057274, 1.299888245542366e-46, +37, 21.938538901507854, 1.2998883349852924e-46, +37, 22.599015057086945, 3.4089243411358843e-47, +37, 22.599015064537525, 3.408924229182079e-47, +37, 23.253252446651459, 9.5699439516338502e-48, +37, 23.253252454102039, 9.5699415030365759e-48, +37, 23.901201739907265, 2.8690919156987703e-48, +37, 23.901201747357845, 2.8690914333854321e-48, +37, 24.54280611872673, 9.1649001925442593e-49, +37, 24.542806126177311, 9.1649005780835866e-49, +37, 25.17800135165453, 3.1124278518690985e-49, +37, 25.17800135910511, 3.1124268541854008e-49, +37, 25.806715928018093, 1.1213100444461474e-49, +37, 25.806715935468674, 1.1213100629654459e-49, +37, 26.428871154785156, 4.2765508470155986e-50, +37, 26.428871162235737, 4.2765493833034662e-50, +37, 27.044381447136402, 1.7230608895836024e-50, +37, 27.044381454586983, 1.723060324124993e-50, +37, 27.653154633939266, 7.3189360531595413e-51, +37, 27.653154641389847, 7.3189369856880685e-51, +37, 28.255092471837997, 3.270635849960595e-51, +37, 28.255092479288578, 3.2706356611225313e-51, +37, 28.850091427564621, 1.5346672258666679e-51, +37, 28.850091435015202, 1.5346672310873133e-51, +37, 29.438043721020222, 7.543141992030555e-52, +37, 29.438043728470802, 7.543143707916083e-52, +37, 30.018838845193386, 3.874949153397152e-52, +37, 30.018838852643967, 3.874947763251735e-52, +37, 30.592365711927414, 2.0766876525058779e-52, +37, 30.592365719377995, 2.0766871501237398e-52, +37, 31.158515512943268, 1.1576724655066195e-52, +37, 31.158515520393848, 1.1576721953298155e-52, +37, 31.717185698449612, 6.6936395490480338e-53, +37, 31.717185705900192, 6.6936420210855687e-53, +37, 32.26828520745039, 4.0030047819768722e-53, +37, 32.26828521490097, 4.0030029042549631e-53, +37, 32.811741434037685, 2.4728033585097465e-53, +37, 32.811741441488266, 2.472804014857275e-53, +37, 33.347508952021599, 1.5724714477623819e-53, +37, 33.347508959472179, 1.572471299321689e-53, +37, 33.875580437481403, 1.0235954646285162e-53, +37, 33.875580444931984, 1.0235955617103327e-53, +37, 34.395999230444431, 6.7952496882961977e-54, +37, 34.395999237895012, 6.7952461226991219e-54, +37, 34.908872827887535, 4.5825066833067962e-54, +37, 34.908872835338116, 4.5825058071678801e-54, +37, 35.414385139942169, 3.126558694401219e-54, +37, 35.41438514739275, 3.1265575278948968e-54, +37, 35.91280460357666, 2.1535066491957579e-54, +37, 35.912804611027241, 2.153507153607943e-54, +37, 36.404484450817108, 1.5247311886236291e-54, +37, 36.404484458267689, 1.5247312487526864e-54, +37, 36.889852896332741, 1.079237350892692e-54, +37, 36.889852903783321, 1.0792377265221853e-54, +37, 37.369393646717072, 7.6138428826956967e-55, +37, 37.369393654167652, 7.6138390265469377e-55, +37, 37.843620575964451, 5.3377879130874528e-55, +37, 37.843620583415031, 5.3377878086121768e-55, +38, 0.79859550297260284, 1.0856580287562025e-08, +38, 0.79859551042318344, 1.0856554375618626e-08, +38, 1.6644502282142639, 1.0478085209213337e-11, +38, 1.6644502356648445, 1.0478073726155761e-11, +38, 2.5176734104752541, 2.2412324303407208e-14, +38, 2.5176734179258347, 2.2412296392981232e-14, +38, 3.3597952127456665, 8.5076785133405888e-17, +38, 3.3597952201962471, 8.5076706729828499e-17, +38, 4.1918860524892807, 5.0683042781997589e-19, +38, 4.1918860599398613, 5.0683022594556336e-19, +38, 5.0147268176078796, 4.378910643033748e-21, +38, 5.0147268250584602, 4.3789086546405285e-21, +38, 5.828912615776062, 5.1921247627005068e-23, +38, 5.8289126232266426, 5.1921222391432412e-23, +38, 6.6349124535918236, 8.1105425045874404e-25, +38, 6.6349124610424042, 8.110539774075029e-25, +38, 7.4331053867936134, 1.617316665311046e-26, +38, 7.433105394244194, 1.617316440770334e-26, +38, 8.2238036170601845, 4.0151378429904181e-28, +38, 8.2238036245107651, 4.015136984178548e-28, +38, 9.0072679594159126, 1.2159212965962104e-29, +38, 9.0072679668664932, 1.2159208207433248e-29, +38, 9.7837185859680176, 4.4162423160286735e-31, +38, 9.7837185934185982, 4.4162416946544442e-31, +38, 10.553342707455158, 1.8964272424010951e-32, +38, 10.553342714905739, 1.8964267905280257e-32, +38, 11.316300310194492, 9.5114672897534994e-34, +38, 11.316300317645073, 9.5114641548621261e-34, +38, 12.072728417813778, 5.5130997617066586e-35, +38, 12.072728425264359, 5.5130983436961545e-35, +38, 12.822744384407997, 3.6590686844435314e-36, +38, 12.822744391858578, 3.6590683149523385e-36, +38, 13.566448464989662, 2.758274929688359e-37, +38, 13.566448472440243, 2.7582745019573862e-37, +38, 14.303925864398479, 2.3445435874808282e-38, +38, 14.30392587184906, 2.3445436870215827e-38, +38, 15.035248324275017, 2.2326837025369582e-39, +38, 15.035248331725597, 2.2326833393720502e-39, +38, 15.760475471615791, 2.3682080599328576e-40, +38, 15.760475479066372, 2.3682075080605805e-40, +38, 16.479655846953392, 2.7832534710135998e-41, +38, 16.479655854403973, 2.7832532879192518e-41, +38, 17.192827761173248, 3.6070297549176349e-42, +38, 17.192827768623829, 3.6070286895740662e-42, +38, 17.900020033121109, 5.1323150247195217e-43, +38, 17.90002004057169, 5.1323140369858444e-43, +38, 18.601252518594265, 7.9855046226895403e-44, +38, 18.601252526044846, 7.9855030321548096e-44, +38, 19.296536602079868, 1.3536668948114345e-44, +38, 19.296536609530449, 1.3536664254310531e-44, +38, 19.985875576734543, 2.4914698664149824e-45, +38, 19.985875584185123, 2.4914700473896849e-45, +38, 20.669264905154705, 4.9631023266169206e-46, +38, 20.669264912605286, 4.9631015730240982e-46, +38, 21.346692517399788, 1.0668796068050406e-46, +38, 21.346692524850368, 1.0668792858037233e-46, +38, 22.018138960003853, 2.4679368474617229e-47, +38, 22.018138967454433, 2.46793637331118e-47, +38, 22.683577544987202, 6.1273384648171703e-48, +38, 22.683577552437782, 6.1273388538819925e-48, +38, 23.342974461615086, 1.6287464319431956e-48, +38, 23.342974469065666, 1.6287465589289163e-48, +38, 23.996288873255253, 4.6244141135970417e-49, +38, 23.996288880705833, 4.6244139707011605e-49, +38, 24.643472984433174, 1.3992813641664737e-49, +38, 24.643472991883755, 1.3992815290961278e-49, +38, 25.284472092986107, 4.5025702693911814e-50, +38, 25.284472100436687, 4.5025703981392466e-50, +38, 25.919224686920643, 1.5375035399490303e-50, +38, 25.919224694371223, 1.5375036072619918e-50, +38, 26.547662526369095, 5.5601877247885129e-51, +38, 26.547662533819675, 5.5601876296393229e-51, +38, 27.169710800051689, 2.1252757522561053e-51, +38, 27.16971080750227, 2.1252762417162567e-51, +38, 27.785288318991661, 8.5691767255137375e-52, +38, 27.785288326442242, 8.5691769176802675e-52, +38, 28.394307859241962, 3.6375520068298642e-52, +38, 28.394307866692543, 3.6375509456924231e-52, +38, 28.996676616370678, 1.6224427641883163e-52, +38, 28.996676623821259, 1.622442697148659e-52, +38, 29.592296853661537, 7.5897562486105309e-53, +38, 29.592296861112118, 7.5897537052591606e-53, +38, 30.181066893041134, 3.7153358213302024e-53, +38, 30.181066900491714, 3.7153352370458552e-53, +38, 30.762882404029369, 1.8991275765178409e-53, +38, 30.76288241147995, 1.8991268090216899e-53, +38, 31.337638281285763, 1.011897730905427e-53, +38, 31.337638288736343, 1.011898019843859e-53, +38, 31.905231095850468, 5.6053554722310255e-54, +38, 31.905231103301048, 5.6053535423071908e-54, +38, 32.465562544763088, 3.2191655316314136e-54, +38, 32.465562552213669, 3.2191654248135054e-54, +38, 33.018543861806393, 1.911716584704686e-54, +38, 33.018543869256973, 1.9117164960140519e-54, +38, 33.564101710915565, 1.1716842069253844e-54, +38, 33.564101718366146, 1.171683748939402e-54, +38, 34.102185644209385, 7.400328173238866e-55, +38, 34.102185651659966, 7.4003274298963434e-55, +38, 34.63277729600668, 4.7868574640208661e-55, +38, 34.63277730345726, 4.7868570950777136e-55, +38, 35.15590126812458, 3.1601245063659552e-55, +38, 35.155901275575161, 3.1601256141113849e-55, +38, 35.671637006103992, 2.1213819000229862e-55, +38, 35.671637013554573, 2.1213818245865819e-55, +38, 36.180130407214165, 1.4425889599279148e-55, +38, 36.180130414664745, 1.4425882771152319e-55, +38, 36.681602776050568, 9.8990384739542851e-56, +38, 36.681602783501148, 9.8990409760224132e-56, +38, 37.176354207098484, 6.9441499664883014e-56, +38, 37.176354214549065, 6.9441458354194441e-56, +38, 37.664758898317814, 4.9192031215738617e-56, +38, 37.664758905768394, 4.9192014222924419e-56, +38, 38.147251442074776, 3.4788201160648105e-56, +38, 38.147251449525356, 3.4788200837872443e-56, +38, 38.624306313693523, 2.4486355090333834e-56, +38, 38.624306321144104, 2.4486357196694196e-56, +39, 0.79969886690378189, 9.6612143778886286e-09, +39, 0.79969887435436249, 9.6611833659543116e-09, +39, 1.6664676442742348, 8.8363260213997706e-12, +39, 1.6664676517248154, 8.8363150690020779e-12, +39, 2.5207678005099297, 1.7913041342876869e-14, +39, 2.5207678079605103, 1.7913024593913769e-14, +39, 3.3641155064105988, 6.4446628031215182e-17, +39, 3.3641155138611794, 6.4446578879089881e-17, +39, 4.1975715160369873, 3.6388503086830051e-19, +39, 4.1975715234875679, 3.6388472458720568e-19, +39, 5.0219098404049873, 2.9797587595903091e-21, +39, 5.0219098478555679, 2.9797574573664833e-21, +39, 5.8377205207943916, 3.3486821124159864e-23, +39, 5.8377205282449722, 3.3486810759664543e-23, +39, 6.6454688534140587, 4.9578250919485837e-25, +39, 6.6454688608646393, 4.9578240233007194e-25, +39, 7.4455311968922615, 9.3701457525565861e-27, +39, 7.4455312043428421, 9.3701426658016626e-27, +39, 8.2382178753614426, 2.2047425437621379e-28, +39, 8.2382178828120232, 2.2047414756897301e-28, +39, 9.0237884894013405, 6.3279677678366445e-30, +39, 9.0237884968519211, 6.3279653079178988e-30, +39, 9.8024625554680824, 2.1782510395644173e-31, +39, 9.802462562918663, 2.1782507909039509e-31, +39, 10.574427150189877, 8.8650607816370113e-33, +39, 10.574427157640457, 8.8650590820738999e-33, +39, 11.339842580258846, 4.21383409134695e-34, +39, 11.339842587709427, 4.2138338754137614e-34, +39, 12.098846592009068, 2.3147510097171507e-35, +39, 12.098846599459648, 2.3147505763690007e-35, +39, 12.851557679474354, 1.4559671379309136e-36, +39, 12.851557686924934, 1.4559669477038534e-36, +39, 13.598077602684498, 1.0401252086311623e-37, +39, 13.598077610135078, 1.0401250446118563e-37, +39, 14.338493429124355, 8.3785468663638118e-39, +39, 14.338493436574936, 8.3785458033752376e-39, +39, 15.072879135608673, 7.5612898818531167e-40, +39, 15.072879143059254, 7.5612886562067478e-40, +39, 15.801296919584274, 7.6005354226141264e-41, +39, 15.801296927034855, 7.6005337498656611e-41, +39, 16.523798257112503, 8.4650896576241533e-42, +39, 16.523798264563084, 8.4650886253305973e-42, +39, 17.240424759685993, 1.0396412702585144e-42, +39, 17.240424767136574, 1.0396412770497945e-42, +39, 17.951208882033825, 1.4018620637042408e-43, +39, 17.951208889484406, 1.4018616305158902e-43, +39, 18.656174533069134, 2.067083503736078e-44, +39, 18.656174540519714, 2.0670834410366982e-44, +39, 19.355337493121624, 3.3207815601122839e-45, +39, 19.355337500572205, 3.3207812480398958e-45, +39, 20.048705853521824, 5.7925577857641326e-46, +39, 20.048705860972404, 5.7925562215888879e-46, +39, 20.73628031462431, 1.0936340009548834e-46, +39, 20.73628032207489, 1.0936338912944408e-46, +39, 21.418054424226284, 2.2282416173411488e-47, +39, 21.418054431676865, 2.2282419515714618e-47, +39, 22.094014786183834, 4.8858532361936634e-48, +39, 22.094014793634415, 4.8858528829628252e-48, +39, 22.764141239225864, 1.1499462002800235e-48, +39, 22.764141246676445, 1.1499460310878093e-48, +39, 23.428406953811646, 2.8980663905193471e-49, +39, 23.428406961262226, 2.898066276934411e-49, +39, 24.086778528988361, 7.8023090836169274e-50, +39, 24.086778536438942, 7.8023071601284799e-50, +39, 24.739216089248657, 2.2390305872090235e-50, +39, 24.739216096699238, 2.2390301640135304e-50, +39, 25.385673321783543, 6.8343680810092181e-51, +39, 25.385673329234123, 6.8343669565535207e-51, +39, 26.026097558438778, 2.2143788932280574e-51, +39, 26.026097565889359, 2.214379341700106e-51, +39, 26.660429820418358, 7.6008658486826571e-52, +39, 26.660429827868938, 7.600864771708126e-52, +39, 27.288604959845543, 2.7586423498874149e-52, +39, 27.288604967296124, 2.758642998550457e-52, +39, 27.910551734268665, 1.0566445834836509e-52, +39, 27.910551741719246, 1.0566448391841193e-52, +39, 28.526193052530289, 4.2633663243585857e-53, +39, 28.526193059980869, 4.2633674856406724e-53, +39, 29.135446235537529, 1.8086671216346443e-53, +39, 29.13544624298811, 1.8086664439032788e-53, +39, 29.738223470747471, 8.0525691421281269e-54, +39, 29.738223478198051, 8.0525661133114887e-54, +39, 30.334432370960712, 3.7560490711121251e-54, +39, 30.334432378411293, 3.7560482528346272e-54, +39, 30.923976838588715, 1.8315301227125887e-54, +39, 30.923976846039295, 1.8315294529778216e-54, +39, 31.506758250296116, 9.3176473955502718e-55, +39, 31.506758257746696, 9.3176498591590885e-55, +39, 32.082677021622658, 4.9370713759437589e-55, +39, 32.082677029073238, 4.9370727760416717e-55, +39, 32.651634819805622, 2.7182652304916268e-55, +39, 32.651634827256203, 2.7182656586123935e-55, +39, 33.213537447154522, 1.5509397574117082e-55, +39, 33.213537454605103, 1.5509397191650001e-55, +39, 33.76829868555069, 9.1478312540410161e-56, +39, 33.76829869300127, 9.1478350368113743e-56, +39, 34.315845258533955, 5.5636458609342363e-56, +39, 34.315845265984535, 5.5636451195134233e-56, +39, 34.856123223900795, 3.4904081103721966e-56, +39, 34.856123231351376, 3.4904077582346387e-56, +39, 35.389105789363384, 2.2434410644709078e-56, +39, 35.389105796813965, 2.2434413425309701e-56, +39, 35.914802670478821, 1.4725708246351153e-56, +39, 35.914802677929401, 1.4725709043207682e-56, +39, 36.433270551264286, 9.8372978663326332e-57, +39, 36.433270558714867, 9.8372937681131233e-57, +39, 36.944623731076717, 6.6643897045912897e-57, +39, 36.944623738527298, 6.6643904738423579e-57, +39, 37.449043244123459, 4.5619506187543033e-57, +39, 37.449043251574039, 4.5619516037469389e-57, +39, 37.946782201528549, 3.1638952883437559e-57, +39, 37.94678220897913, 3.1638958376894018e-57, +39, 38.438164800405502, 2.2414198125250737e-57, +39, 38.438164807856083, 2.241419676994563e-57, +39, 38.92357762157917, 1.5874855857137775e-57, +39, 38.923577629029751, 1.5874850938683276e-57, +39, 39.403453819453716, 1.1208658754145761e-57, +39, 39.403453826904297, 1.1208655216309198e-57, +39, 39.878253020346165, 7.8686506952910403e-58, +39, 39.878253027796745, 7.8686503959234645e-58, +40, 0.80076299607753754, 8.6220839569040916e-09, +40, 0.80076300352811813, 8.6220617969632951e-09, +40, 1.6684117615222931, 7.482856429765271e-12, +40, 1.6684117689728737, 7.4828434084303384e-12, +40, 2.5237480700016022, 1.4395249763313945e-14, +40, 2.5237480774521828, 1.4395234884855117e-14, +40, 3.3682745918631554, 4.914945972398221e-17, +40, 3.368274599313736, 4.9149416138302671e-17, +40, 4.2030427530407906, 2.6336469660088453e-19, +40, 4.2030427604913712, 2.6336449591696725e-19, +40, 5.0288198664784431, 2.04669313220365e-21, +40, 5.0288198739290237, 2.0466922069270797e-21, +40, 5.8461910635232925, 2.182856581073528e-23, +40, 5.8461910709738731, 2.1828557610574724e-23, +40, 6.6556179970502853, 3.0670597274357603e-25, +40, 6.6556180045008659, 3.0670587692154617e-25, +40, 7.4574743509292603, 5.5011817992950591e-27, +40, 7.4574743583798409, 5.5011804116695148e-27, +40, 8.2520685344934464, 1.2284121858449798e-28, +40, 8.2520685419440269, 1.2284119905636949e-28, +40, 9.039658859372139, 3.3459882136107596e-30, +40, 9.0396588668227196, 3.3459876354353264e-30, +40, 9.8204641044139862, 1.093046091664667e-31, +40, 9.8204641118645668, 1.093045912726458e-31, +40, 10.594671085476875, 4.221612631880723e-33, +40, 10.594671092927456, 4.2216116455431198e-33, +40, 11.362440258264542, 1.9043015174724808e-34, +40, 11.362440265715122, 1.9043013466761215e-34, +40, 12.123909913003445, 9.927033740522332e-36, +40, 12.123909920454025, 9.9270318491872625e-36, +40, 12.87919944524765, 5.9254204573291864e-37, +40, 12.879199452698231, 5.9254185761345363e-37, +40, 13.628411874175072, 4.0169933059966589e-38, +40, 13.628411881625652, 4.0169919637532185e-38, +40, 14.371635846793652, 3.0706343996807527e-39, +40, 14.371635854244232, 3.0706334592178465e-39, +40, 15.10894725471735, 2.6296368343236479e-40, +40, 15.108947262167931, 2.629636883937738e-40, +40, 15.840410508215427, 2.5083165315198936e-41, +40, 15.840410515666008, 2.508316135677605e-41, +40, 16.566079638898373, 2.6509819483710857e-42, +40, 16.566079646348953, 2.6509813339366169e-42, +40, 17.285999126732349, 3.0895557761508032e-43, +40, 17.28599913418293, 3.0895547199180405e-43, +40, 18.000204637646675, 3.9532735587946378e-44, +40, 18.000204645097256, 3.9532738604335661e-44, +40, 18.708723567426205, 5.5316336293557132e-45, +40, 18.708723574876785, 5.5316323436324288e-45, +40, 19.411575593054295, 8.4330816952067172e-46, +40, 19.411575600504875, 8.4330793832693508e-46, +40, 20.10877301543951, 1.3959734563971271e-46, +40, 20.108773022890091, 1.3959734325249744e-46, +40, 20.800321087241173, 2.5012329433504756e-47, +40, 20.800321094691753, 2.5012321368344211e-47, +40, 21.486218318343163, 4.8365841541015896e-48, +40, 21.486218325793743, 4.8365827723172397e-48, +40, 22.166456647217274, 1.0065510121004077e-48, +40, 22.166456654667854, 1.0065511177259529e-48, +40, 22.841021612286568, 2.2486596435899771e-49, +40, 22.841021619737148, 2.2486595284896741e-49, +40, 23.509892523288727, 5.3795421688687128e-50, +40, 23.509892530739307, 5.3795422441328151e-50, +40, 24.17304252833128, 1.3749934138013411e-50, +40, 24.17304253578186, 1.3749936145620943e-50, +40, 24.830438703298569, 3.7466207092405214e-51, +40, 24.830438710749149, 3.7466195892844483e-51, +40, 25.482042148709297, 1.0860643386448439e-51, +40, 25.482042156159878, 1.0860642115645083e-51, +40, 26.12780799716711, 3.3425556909891041e-52, +40, 26.127808004617691, 3.3425556313746612e-52, +40, 26.767685502767563, 1.0901108511699288e-52, +40, 26.767685510218143, 1.0901105953917385e-52, +40, 27.401618115603924, 3.7602645981940591e-53, +40, 27.401618123054504, 3.7602652607389148e-53, +40, 28.029543526470661, 1.369396504373224e-53, +40, 28.029543533921242, 1.3693960150232702e-53, +40, 28.651393860578537, 5.2556184134729698e-54, +40, 28.651393868029118, 5.2556168198097212e-54, +40, 29.267095804214478, 2.1219341342039526e-54, +40, 29.267095811665058, 2.121934465865967e-54, +40, 29.876570880413055, 8.9967556766314939e-55, +40, 29.876570887863636, 8.9967531699707271e-55, +40, 30.479735873639584, 3.9986560136554673e-55, +40, 30.479735881090164, 3.9986558489137015e-55, +40, 31.076503314077854, 1.8599753253287926e-55, +40, 31.076503321528435, 1.8599757156271693e-55, +40, 31.66678225249052, 9.0360299626257797e-56, +40, 31.666782259941101, 9.036026700725493e-56, +40, 32.250479318201542, 4.5760898608462063e-56, +40, 32.250479325652122, 4.5760887986740979e-56, +40, 32.827500082552433, 2.4117678880943317e-56, +40, 32.827500090003014, 2.4117684357547485e-56, +40, 33.397750958800316, 1.3201202030406543e-56, +40, 33.397750966250896, 1.3201196555992101e-56, +40, 33.961141757667065, 7.4847204235456685e-57, +40, 33.961141765117645, 7.4847221559011106e-57, +40, 34.517588913440704, 4.3855925974584337e-57, +40, 34.517588920891285, 4.385593435217874e-57, +40, 35.067019812762737, 2.6491586845734461e-57, +40, 35.067019820213318, 2.6491580564154119e-57, +40, 35.609378203749657, 1.6497934498550021e-57, +40, 35.609378211200237, 1.649793368648089e-57, +40, 36.144630901515484, 1.0536773043718698e-57, +40, 36.144630908966064, 1.0536776720991313e-57, +40, 36.672775842249393, 6.8759153785157124e-58, +40, 36.672775849699974, 6.8759166513298611e-58, +40, 37.193851247429848, 4.5699678490685328e-58, +40, 37.193851254880428, 4.5699698575441556e-58, +40, 37.707945220172405, 3.0831903169784489e-58, +40, 37.707945227622986, 3.0831907114952658e-58, +40, 38.215204663574696, 2.1042675579982823e-58, +40, 38.215204671025276, 2.1042678320825935e-58, +40, 38.715841598808765, 1.44772765360699e-58, +40, 38.715841606259346, 1.4477275844728336e-58, +40, 39.210134834051132, 1.0212982981853514e-58, +40, 39.210134841501713, 1.0212978783646425e-58, +40, 39.698425233364105, 7.2384658423559274e-59, +40, 39.698425240814686, 7.2384626057588699e-59, +40, 40.181104280054569, 5.1224147534757263e-59, +40, 40.18110428750515, 5.1224148163640331e-59, +40, 40.658597514033318, 3.6091357864666219e-59, +40, 40.658597521483898, 3.6091362660315758e-59, +41, 0.80179024487733841, 7.715754717994936e-09, +41, 0.80179025232791901, 7.7157302111467959e-09, +41, 1.6702870726585388, 6.3618331174118259e-12, +41, 1.6702870801091194, 6.3618226594372705e-12, +41, 2.5266212671995163, 1.162850848252617e-14, +41, 2.5266212746500969, 1.1628493459927956e-14, +41, 3.3722824975848198, 3.7724846530163349e-17, +41, 3.3722825050354004, 3.7724808311832636e-17, +41, 4.2083131596446037, 1.920778816112959e-19, +41, 4.2083131670951843, 1.9207773576706867e-19, +41, 5.0354740768671036, 1.4183648576268382e-21, +41, 5.0354740843176842, 1.4183641694691616e-21, +41, 5.8543455973267555, 1.4374026410740077e-23, +41, 5.8543456047773361, 1.4374021204448828e-23, +41, 6.6653857976198196, 1.9190885863488743e-25, +41, 6.6653858050704002, 1.919087824425809e-25, +41, 7.4689657092094421, 3.270760808097721e-27, +41, 7.4689657166600227, 3.2707591863959973e-27, +41, 8.2653918191790581, 6.9399488701523391e-29, +41, 8.2653918266296387, 6.9399461386502186e-29, +41, 9.0549211129546165, 1.7961988013370199e-30, +41, 9.0549211204051971, 1.7961986170950286e-30, +41, 9.8377715349197388, 5.5755077823717882e-32, +41, 9.8377715423703194, 5.5755069110678978e-32, +41, 10.614129528403282, 2.0461508033605068e-33, +41, 10.614129535853863, 2.0461500591140822e-33, +41, 11.384155571460724, 8.7701108074102184e-35, +41, 11.384155578911304, 8.7701090331652339e-35, +41, 12.147988334298134, 4.3440568875966986e-36, +41, 12.147988341748714, 4.3440564786178534e-36, +41, 12.905747920274734, 2.4637601753857343e-37, +41, 12.905747927725315, 2.4637596423878285e-37, +41, 13.657538384199142, 1.5870121728469763e-38, +41, 13.657538391649723, 1.5870116574060113e-38, +41, 14.403449714183807, 1.1526673651546713e-39, +41, 14.403449721634388, 1.1526669722593979e-39, +41, 15.14355943351984, 9.3791993648929087e-41, +41, 15.143559440970421, 9.3791977758924899e-41, +41, 15.877933889627457, 8.5004955033105688e-42, +41, 15.877933897078037, 8.5004957216667634e-42, +41, 16.606629312038422, 8.53610276763418e-43, +41, 16.606629319489002, 8.5361021103963203e-43, +41, 17.32969269156456, 9.4523530357048223e-44, +41, 17.329692699015141, 9.4523506752230666e-44, +41, 18.047162488102913, 1.1491939884925788e-44, +41, 18.047162495553493, 1.1491939201245561e-44, +41, 18.759069196879864, 1.5278674206431506e-45, +41, 18.759069204330444, 1.5278669100935831e-45, +41, 19.465435892343521, 2.2131950384106822e-46, +41, 19.465435899794102, 2.2131952234933592e-46, +41, 20.166278555989265, 3.4811292143934784e-47, +41, 20.166278563439846, 3.4811282177669865e-47, +41, 20.861606501042843, 5.9267645821030561e-48, +41, 20.861606508493423, 5.9267646789506383e-48, +41, 21.55142255872488, 1.089026097386482e-48, +41, 21.551422566175461, 1.089026021431083e-48, +41, 22.235723368823528, 2.1537298245085798e-49, +41, 22.235723376274109, 2.1537300799057606e-49, +41, 22.914499513804913, 4.5725708362403891e-50, +41, 22.914499521255493, 4.5725705992050573e-50, +41, 23.587735697627068, 1.0396699443959863e-50, +41, 23.587735705077648, 1.0396697016213483e-50, +41, 24.255410842597485, 2.525830841332298e-51, +41, 24.255410850048065, 2.5258301837673761e-51, +41, 24.917498178780079, 6.5425362831654044e-52, +41, 24.917498186230659, 6.5425348121202585e-52, +41, 25.573965318500996, 1.8031239693612795e-52, +41, 25.573965325951576, 1.8031234753289202e-52, +41, 26.224774323403835, 5.2769875821328614e-53, +41, 26.224774330854416, 5.276987836076435e-53, +41, 26.869881734251976, 1.6368353014029421e-53, +41, 26.869881741702557, 1.6368354177457138e-53, +41, 27.50923865288496, 5.3714024253680684e-54, +41, 27.509238660335541, 5.371403525428115e-54, +41, 28.142790779471397, 1.8614995765867043e-54, +41, 28.142790786921978, 1.8614993186913763e-54, +41, 28.770478524267673, 6.8010686240834692e-55, +41, 28.770478531718254, 6.8010665157488161e-55, +41, 29.392237104475498, 2.6151090463060908e-55, +41, 29.392237111926079, 2.6151083985090659e-55, +41, 30.00799672305584, 1.0564964051943473e-55, +41, 30.00799673050642, 1.0564965558976623e-55, +41, 30.617682799696922, 4.4769434240746522e-56, +41, 30.617682807147503, 4.476941847194843e-56, +41, 31.221216365695, 1.9865352596664337e-56, +41, 31.22121637314558, 1.9865355524875975e-56, +41, 31.818514481186867, 9.2159451402794094e-57, +41, 31.818514488637447, 9.2159466688116338e-57, +41, 32.409490957856178, 4.4613696997625097e-57, +41, 32.409490965306759, 4.4613679528438168e-57, +41, 32.994057275354862, 2.2495337343609451e-57, +41, 32.994057282805443, 2.2495336072907286e-57, +41, 33.572123780846596, 1.179515303712195e-57, +41, 33.572123788297176, 1.1795156958792046e-57, +41, 34.14360136538744, 6.4199511051895594e-58, +41, 34.14360137283802, 6.4199510962157903e-58, +41, 34.708403661847115, 3.6178146943975811e-58, +41, 34.708403669297695, 3.6178147081673786e-58, +41, 35.266449868679047, 2.1062679049212825e-58, +41, 35.266449876129627, 2.1062685252617971e-58, +41, 35.817668430507183, 1.2639711870312449e-58, +41, 35.817668437957764, 1.2639716152935793e-58, +41, 36.362001702189445, 7.8141248205685345e-59, +41, 36.362001709640026, 7.8141256095820112e-59, +41, 36.899411715567112, 4.9591961766203501e-59, +41, 36.899411723017693, 4.9591939834951158e-59, +41, 37.429887130856514, 3.2171228324064162e-59, +41, 37.429887138307095, 3.2171241631281812e-59, +41, 37.953451178967953, 2.1269491341026847e-59, +41, 37.953451186418533, 2.1269492501039519e-59, +41, 38.470170341432095, 1.4286189358117899e-59, +41, 38.470170348882675, 1.4286192796461194e-59, +41, 38.980162680149078, 9.7171129843050171e-60, +41, 38.980162687599659, 9.7171121503283134e-60, +41, 39.4836046397686, 6.6707774251818163e-60, +41, 39.483604647219181, 6.6707772095156799e-60, +41, 39.980734407901764, 4.6551475379699454e-60, +41, 39.980734415352345, 4.6551461775452092e-60, +41, 40.471850238740444, 3.2996303654595619e-60, +41, 40.471850246191025, 3.299629164010922e-60, +41, 40.957302808761597, 2.3382554940028968e-60, +41, 40.957302816212177, 2.3382555227359038e-60, +41, 41.437482245266438, 1.6521789716672249e-60, +41, 41.437482252717018, 1.6521799531621949e-60, +41, 41.912801884114742, 1.161253768520295e-60, +41, 41.912801891565323, 1.161254060902467e-60, +42, 0.80278279632329941, 6.9226590222761392e-09, +42, 0.80278280377388, 6.9226375602766169e-09, +42, 1.6720976755023003, 5.4292207524054341e-12, +42, 1.6720976829528809, 5.4292105857191855e-12, +42, 2.529393844306469, 9.4401492831892214e-15, +42, 2.5293938517570496, 9.440137562058038e-15, +42, 3.3761483952403069, 2.9133785168914818e-17, +42, 3.3761484026908875, 2.913375858396887e-17, +42, 4.2133949920535088, 1.4111373398855075e-19, +42, 4.2133949995040894, 1.4111362180318768e-19, +42, 5.0418881699442863, 9.9130527366678168e-22, +42, 5.0418881773948669, 9.9130466763312262e-22, +42, 5.8622036203742027, 9.5571596865742465e-24, +42, 5.8622036278247833, 9.557157157815258e-24, +42, 6.6747959107160568, 1.2138894993380412e-25, +42, 6.6747959181666374, 1.2138890999121016e-25, +42, 7.4800334572792053, 1.9681951625914627e-27, +42, 7.4800334647297859, 1.9681946847574354e-27, +42, 8.2782208025455475, 3.9729393004208446e-29, +42, 8.2782208099961281, 3.9729377246408213e-29, +42, 9.0696135759353638, 9.7824189185222744e-31, +42, 9.0696135833859444, 9.782415933019014e-31, +42, 9.854428842663765, 2.8887602415935609e-32, +42, 9.8544288501143456, 2.8887597673727744e-32, +42, 10.63285256922245, 1.0085526144203417e-33, +42, 10.632852576673031, 1.0085524424097982e-33, +42, 11.405045129358768, 4.1124264530225136e-35, +42, 11.405045136809349, 4.1124259662087623e-35, +42, 12.171145439147949, 1.9378425726639904e-36, +42, 12.17114544659853, 1.9378423676609656e-36, +42, 12.931274153292179, 1.045559969037066e-37, +42, 12.93127416074276, 1.0455596177818872e-37, +42, 13.685536183416843, 6.4070132508159121e-39, +42, 13.685536190867424, 6.407013282659424e-39, +42, 14.43402262032032, 4.4269253093815454e-40, +42, 14.434022627770901, 4.4269241541282206e-40, +42, 15.176812402904034, 3.4267679212328663e-41, +42, 15.176812410354614, 3.4267674343162701e-41, +42, 15.913973532617092, 2.9544897572847338e-42, +42, 15.913973540067673, 2.9544887105567143e-42, +42, 16.645564183592796, 2.8223839882129309e-43, +42, 16.645564191043377, 2.8223832928604173e-43, +42, 17.371633522212505, 2.9731354185298358e-44, +42, 17.371633529663086, 2.9731344508034859e-44, +42, 18.092222459614277, 3.4386472737376164e-45, +42, 18.092222467064857, 3.438646475084569e-45, +42, 18.807364217936993, 4.3491258313818515e-46, +42, 18.807364225387573, 4.3491245093441195e-46, +42, 19.517084851861, 5.9932507487453098e-47, +42, 19.517084859311581, 5.9932510605416288e-47, +42, 20.221403621137142, 8.9680022145373332e-48, +42, 20.221403628587723, 8.9680030564321489e-48, +42, 20.920333370566368, 1.4525643162552315e-48, +42, 20.920333378016949, 1.4525644551988813e-48, +42, 21.613880790770054, 2.5392779271460697e-49, +42, 21.613880798220634, 2.5392781202855432e-49, +42, 22.302046649158001, 4.7778624747879543e-50, +42, 22.302046656608582, 4.7778609688180624e-50, +42, 22.984826005995274, 9.6514724249543887e-51, +42, 22.984826013445854, 9.6514719380202041e-51, +42, 23.662208318710327, 2.0880714410437191e-51, +42, 23.662208326160908, 2.0880713844950678e-51, +42, 24.334177613258362, 4.8272884627393777e-52, +42, 24.334177620708942, 4.827289071207131e-52, +42, 25.000712551176548, 1.1899655825914922e-52, +42, 25.000712558627129, 1.1899654828045305e-52, +42, 25.661786533892155, 3.1214193463127235e-53, +42, 25.661786541342735, 3.1214189097750331e-53, +42, 26.317367739975452, 8.6958244653446017e-54, +42, 26.317367747426033, 8.6958215737634595e-54, +42, 26.967419199645519, 2.568029364046961e-54, +42, 26.9674192070961, 2.568029072939054e-54, +42, 27.611898817121983, 8.0249111457810081e-55, +42, 27.611898824572563, 8.0249107539069643e-55, +42, 28.250759445130825, 2.6489724041957653e-55, +42, 28.250759452581406, 2.6489725573532699e-55, +42, 28.883948929607868, 9.2210130457023447e-56, +42, 28.883948937058449, 9.221012553865369e-56, +42, 29.51141019910574, 3.3793032788582558e-56, +42, 29.51141020655632, 3.3793020931771187e-56, +42, 30.133081384003162, 1.3017207647702263e-56, +42, 30.133081391453743, 1.3017209766503453e-56, +42, 30.748895935714245, 5.2620269591213157e-57, +42, 30.748895943164825, 5.2620264324839771e-57, +42, 31.358782909810543, 2.2286239885660763e-57, +42, 31.358782917261124, 2.2286233962325355e-57, +42, 31.962667249143124, 9.8734765335665241e-58, +42, 31.962667256593704, 9.8734771638543485e-58, +42, 32.560470215976238, 4.5689315053016582e-58, +42, 32.560470223426819, 4.5689315012563647e-58, +42, 33.152110017836094, 2.204279572077455e-58, +42, 33.152110025286674, 2.2042786952183643e-58, +42, 33.737502619624138, 1.1068187252756619e-58, +42, 33.737502627074718, 1.1068183477512304e-58, +42, 34.316562816500664, 5.7749063078169861e-59, +42, 34.316562823951244, 5.7749039481390523e-59, +42, 34.88920570909977, 3.1261765683062832e-59, +42, 34.88920571655035, 3.1261767380643983e-59, +42, 35.455348581075668, 1.7513391881906954e-59, +42, 35.455348588526249, 1.7513391738815631e-59, +42, 36.014913402497768, 1.0132955667514977e-59, +42, 36.014913409948349, 1.0132953554711642e-59, +42, 36.567829996347427, 6.0419225386156667e-60, +42, 36.567830003798008, 6.0419249645517703e-60, +42, 37.114040024578571, 3.7084880489823353e-60, +42, 37.114040032029152, 3.70848786570471e-60, +42, 37.653502009809017, 2.338854994512836e-60, +42, 37.653502017259598, 2.3388544174312297e-60, +42, 38.18619729578495, 1.5082771906917482e-60, +42, 38.186197303235531, 1.5082768335011839e-60, +42, 38.712137028574944, 9.9179507405724581e-61, +42, 38.712137036025524, 9.9179533842514018e-61, +42, 39.231369808316231, 6.6305438401582333e-61, +42, 39.231369815766811, 6.6305466146285408e-61, +42, 39.743989452719688, 4.4929623334862857e-61, +42, 39.743989460170269, 4.4929644560224335e-61, +42, 40.250141784548759, 3.0762046694284016e-61, +42, 40.25014179199934, 3.0762050675393587e-61, +42, 40.750029072165489, 2.1232133872540221e-61, +42, 40.75002907961607, 2.1232143184545875e-61, +42, 41.243910521268845, 1.5040992206787617e-61, +42, 41.243910528719425, 1.5040994366927394e-61, +42, 41.732097789645195, 1.066568753779962e-61, +42, 41.732097797095776, 1.0665688191693734e-61, +42, 42.21494534611702, 7.5520351086269267e-62, +42, 42.2149453535676, 7.5520324461586611e-62, +42, 42.692836992442608, 5.3257794840175116e-62, +42, 42.692836999893188, 5.3257796543161497e-62, +43, 0.80374263972043991, 6.2265229208281086e-09, +43, 0.80374264717102051, 6.2265021676836063e-09, +43, 1.6738473474979401, 4.6500497846984813e-12, +43, 1.6738473549485207, 4.6500437983955095e-12, +43, 2.5320717096328735, 7.6999297251521244e-15, +43, 2.5320717170834541, 7.6999200444794929e-15, +43, 3.3798806890845299, 2.2631148188373452e-17, +43, 3.3798806965351105, 2.2631134624768674e-17, +43, 4.2182994857430458, 1.0439730347593901e-19, +43, 4.2182994931936264, 1.0439725582552017e-19, +43, 5.0480765253305435, 6.9846384600905826e-22, +43, 5.0480765327811241, 6.9846329992999297e-22, +43, 5.8697829768061638, 6.4133648817528039e-24, +43, 5.8697829842567444, 6.4133622301576819e-24, +43, 6.6838699728250504, 7.7581908507981851e-26, +43, 6.683869980275631, 7.7581869040059224e-26, +43, 7.4907033443450928, 1.1980536998817066e-27, +43, 7.4907033517956734, 1.1980533287085893e-27, +43, 8.2905857041478157, 2.3032904037204204e-29, +43, 8.2905857115983963, 2.3032899434237301e-29, +43, 9.0837712809443474, 5.4014825819620076e-31, +43, 9.083771288394928, 5.4014818234672467e-31, +43, 9.8704762011766434, 1.5191783549612291e-32, +43, 9.870476208627224, 1.519177820284746e-32, +43, 10.650885902345181, 5.0515644746481509e-34, +43, 10.650885909795761, 5.0515633182229788e-34, +43, 11.425160549581051, 1.9618008332053675e-35, +43, 11.425160557031631, 1.9618004402996259e-35, +43, 12.193439178168774, 8.8044787784929281e-37, +43, 12.193439185619354, 8.8044753063642099e-37, +43, 12.955842867493629, 4.524398586238088e-38, +43, 12.95584287494421, 4.5243971572220065e-38, +43, 13.712477192282677, 2.6405415266954578e-39, +43, 13.712477199733257, 2.6405409196625623e-39, +43, 14.463434211909771, 1.7376536138713058e-40, +43, 14.463434219360352, 1.7376535898353172e-40, +43, 15.20879402756691, 1.2810567130050931e-41, +43, 15.20879403501749, 1.2810562769780531e-41, +43, 15.948626108467579, 1.0519315407923782e-42, +43, 15.948626115918159, 1.0519312156263242e-42, +43, 16.682990290224552, 9.5706606808167989e-44, +43, 16.682990297675133, 9.5706595162643238e-44, +43, 17.411937654018402, 9.6019964557800178e-45, +43, 17.411937661468983, 9.6019932159219121e-45, +43, 18.13551127165556, 1.0576852894588731e-45, +43, 18.13551127910614, 1.0576850398218628e-45, +43, 18.853746756911278, 1.2740748320858259e-46, +43, 18.853746764361858, 1.2740744275602638e-46, +43, 19.566672801971436, 1.6721803291553602e-47, +43, 19.566672809422016, 1.6721802496179909e-47, +43, 20.274311557412148, 2.3831385055210507e-48, +43, 20.274311564862728, 2.383138722927918e-48, +43, 20.976678997278214, 3.6764564183028991e-49, +43, 20.976679004728794, 3.6764551742830879e-49, +43, 21.673785232007504, 6.1214527112754142e-50, +43, 21.673785239458084, 6.1214517381911048e-50, +43, 22.365634694695473, 1.0970868259989562e-50, +43, 22.365634702146053, 1.0970869292873099e-50, +43, 23.052226364612579, 2.1109654457950782e-51, +43, 23.05222637206316, 2.1109648351815291e-51, +43, 23.73355396091938, 4.3504475736244337e-52, +43, 23.733553968369961, 4.3504474174699854e-52, +43, 24.409606009721756, 9.5811885685959652e-53, +43, 24.409606017172337, 9.5811865620694161e-53, +43, 25.080366007983685, 2.2501451275878645e-53, +43, 25.080366015434265, 2.250144411912722e-53, +43, 25.745812483131886, 5.6237768952562137e-54, +43, 25.745812490582466, 5.6237769737644979e-54, +43, 26.405919045209885, 1.4929156510239942e-54, +43, 26.405919052660465, 1.4929154295863137e-54, +43, 27.060654483735561, 4.2017660690891096e-55, +43, 27.060654491186142, 4.2017661352698133e-55, +43, 27.70998277515173, 1.2515559328727676e-55, +43, 27.70998278260231, 1.2515561411826354e-55, +43, 28.353863142430782, 3.9386790330335798e-56, +43, 28.353863149881363, 3.938678699998805e-56, +43, 28.992250114679337, 1.30742297126559e-56, +43, 28.992250122129917, 1.3074227853186405e-56, +43, 29.625093564391136, 4.5703490079865401e-57, +43, 29.625093571841717, 4.5703489945165746e-57, +43, 30.252338789403439, 1.679839691186224e-57, +43, 30.252338796854019, 1.6798400103101351e-57, +43, 30.873926617205143, 6.4818615616990382e-58, +43, 30.873926624655724, 6.4818617121955273e-58, +43, 31.489793568849564, 2.6216783109665946e-58, +43, 31.489793576300144, 2.621678842878726e-58, +43, 32.099872037768364, 1.1097966007180264e-58, +43, 32.099872045218945, 1.1097965164251156e-58, +43, 32.704090610146523, 4.9093647055745871e-59, +43, 32.704090617597103, 4.9093629238590932e-59, +43, 33.302374452352524, 2.2663027175130519e-59, +43, 33.302374459803104, 2.2663030381968129e-59, +43, 33.894645825028419, 1.089821777981862e-59, +43, 33.894645832479, 1.0898215996640809e-59, +43, 34.480824865400791, 5.4503470421960063e-60, +43, 34.480824872851372, 5.4503475216165703e-60, +43, 35.060830503702164, 2.8302994788743613e-60, +43, 35.060830511152744, 2.8302993299817642e-60, +43, 35.634581781923771, 1.5241498107793508e-60, +43, 35.634581789374352, 1.524150366688098e-60, +43, 36.201999485492706, 8.4901039478581528e-61, +43, 36.201999492943287, 8.4901057099943408e-61, +43, 36.763008333742619, 4.8826921073920482e-61, +43, 36.763008341193199, 4.88269148765274e-61, +43, 37.317539721727371, 2.89325097146544e-61, +43, 37.317539729177952, 2.8932501406101497e-61, +43, 37.865535192191601, 1.763384563649848e-61, +43, 37.865535199642181, 1.763384206032246e-61, +43, 38.406950734555721, 1.1052474884369675e-61, +43, 38.406950742006302, 1.1052472149923624e-61, +43, 38.941761992871761, 7.0853082671685455e-62, +43, 38.941762000322342, 7.0853089890115881e-62, +43, 39.46997033059597, 4.6335481062213602e-62, +43, 39.469970338046551, 4.6335497917407068e-62, +43, 39.991609625518322, 3.0826746406189898e-62, +43, 39.991609632968903, 3.0826749253707252e-62, +43, 40.506753340363503, 2.0804026345727385e-62, +43, 40.506753347814083, 2.0804017787903443e-62, +43, 41.015521101653576, 1.4200099809529536e-62, +43, 41.015521109104156, 1.420009712483586e-62, +43, 41.518083661794662, 9.7731968830010019e-63, +43, 41.518083669245243, 9.7731991835116888e-63, +43, 42.014664947986603, 6.8583190565524262e-63, +43, 42.014664955437183, 6.8583151787402871e-63, +43, 42.505540028214455, 4.8636242162072754e-63, +43, 42.505540035665035, 4.8636220226399413e-63, +43, 42.991028398275375, 3.448316649423409e-63, +43, 42.991028405725956, 3.4483150726159365e-63, +43, 43.471483275294304, 2.4381653298784023e-63, +43, 43.471483282744884, 2.4381645543034918e-63, +43, 43.947278343141079, 1.7155393308219594e-63, +43, 43.94727835059166, 1.7155397584796518e-63, +44, 0.80467161536216736, 5.6136778930781251e-09, +44, 0.80467162281274796, 5.6136608371297985e-09, +44, 1.6755395382642746, 3.996456677211653e-12, +44, 1.6755395457148552, 3.996449766244987e-12, +44, 2.5346603021025658, 6.3089402910587147e-15, +44, 2.5346603095531464, 6.308934747725832e-15, +44, 3.3834870904684067, 1.7678471267789971e-17, +44, 3.3834870979189873, 1.7678457325653622e-17, +44, 4.2230369374155998, 7.7750648421336081e-20, +44, 4.2230369448661804, 7.775059336381719e-20, +44, 5.0540523454546928, 4.9595393901990306e-22, +44, 5.0540523529052734, 4.9595359464101014e-22, +44, 5.8771000504493713, 4.3418177822464477e-24, +44, 5.8771000578999519, 4.3418159986033655e-24, +44, 6.692627839744091, 5.0077047309676213e-26, +44, 6.6926278471946716, 5.0077018300841822e-26, +44, 7.5009989961981773, 7.3731092712775596e-28, +44, 7.5009990036487579, 7.3731071442298436e-28, +44, 8.3025142028927803, 1.35151930219129e-29, +44, 8.3025142103433609, 1.3515188596538854e-29, +44, 9.0974262878298759, 3.0219530142929182e-31, +44, 9.0974262952804565, 3.0219525157972958e-31, +44, 9.885950393974781, 8.1037515418772692e-33, +44, 9.8859504014253616, 8.1037496721190902e-33, +44, 10.668271347880363, 2.5692524853802503e-34, +44, 10.668271355330944, 2.5692522872428457e-34, +44, 11.444549031555653, 9.5134883272533602e-36, +44, 11.444549039006233, 9.5134851368063353e-36, +44, 12.214922517538071, 4.0709150121215076e-37, +44, 12.214922524988651, 4.0709145082759209e-37, +44, 12.9795131534338, 1.9945846540912174e-38, +44, 12.97951316088438, 1.9945845789467207e-38, +44, 13.738427057862282, 1.1099089234391263e-39, +44, 13.738427065312862, 1.1099085251966313e-39, +44, 14.491757087409496, 6.9640101710065686e-41, +44, 14.491757094860077, 6.9640078677027602e-41, +44, 15.239584363996983, 4.8951439415325917e-42, +44, 15.239584371447563, 4.8951421880711173e-42, +44, 15.981979586184025, 3.8325250997128576e-43, +44, 15.981979593634605, 3.8325246691666718e-43, +44, 16.719004042446613, 3.3246034933715899e-44, +44, 16.719004049897194, 3.3246028367467908e-44, +44, 17.450710512697697, 3.1802402277522236e-45, +44, 17.450710520148277, 3.1802402020461697e-45, +44, 18.177143938839436, 3.3400774233097505e-46, +44, 18.177143946290016, 3.3400767496533442e-46, +44, 18.898342065513134, 3.8361752046986516e-47, +44, 18.898342072963715, 3.8361742569729389e-47, +44, 19.614335909485817, 4.800572916017465e-48, +44, 19.614335916936398, 4.8005724839761991e-48, +44, 20.325150176882744, 6.5233421352255798e-49, +44, 20.325150184333324, 6.5233403168874937e-49, +44, 21.030803643167019, 9.5954871171553862e-50, +44, 21.030803650617599, 9.5954850050970341e-50, +44, 21.731309413909912, 1.5234114031559522e-50, +44, 21.731309421360493, 1.5234111451311826e-50, +44, 22.42667518556118, 2.6033920081158185e-51, +44, 22.426675193011761, 2.6033911145943002e-51, +44, 23.116903461515903, 4.7767105988238726e-52, +44, 23.116903468966484, 4.7767099043402472e-52, +44, 23.801991693675518, 9.387467949055562e-53, +44, 23.801991701126099, 9.3874684263904844e-53, +44, 24.481932438910007, 1.971615201422645e-53, +44, 24.481932446360588, 1.9716152109831415e-53, +44, 25.156713478267193, 4.4159911548218363e-54, +44, 25.156713485717773, 4.4159913675159231e-54, +44, 25.826317891478539, 1.0526730104836363e-54, +44, 25.826317898929119, 1.0526729250930486e-54, +44, 26.490724146366119, 2.6655572078148186e-55, +44, 26.4907241538167, 2.6655568543053462e-55, +44, 27.149906150996685, 7.1568186823845456e-56, +44, 27.149906158447266, 7.1568199199919761e-56, +44, 27.803833283483982, 2.0339107389822583e-56, +44, 27.803833290934563, 2.0339100579837449e-56, +44, 28.452470488846302, 6.1079388232656124e-57, +44, 28.452470496296883, 6.1079379800803341e-57, +44, 29.095778256654739, 1.9351084823971883e-57, +44, 29.09577826410532, 1.9351087848232976e-57, +44, 29.733712695538998, 6.4577619511222403e-58, +44, 29.733712702989578, 6.4577623280174925e-58, +44, 30.366225592792034, 2.2665241394008965e-58, +44, 30.366225600242615, 2.2665233610200225e-58, +44, 30.993264488875866, 8.3538981878075504e-59, +44, 30.993264496326447, 8.3538973902278832e-59, +44, 31.614772744476795, 3.228699802800217e-59, +44, 31.614772751927376, 3.2286992972912687e-59, +44, 32.230689719319344, 1.3065931274581666e-59, +44, 32.230689726769924, 1.3065932206329812e-59, +44, 32.840950936079025, 5.5283283462661653e-60, +44, 32.840950943529606, 5.5283297905073914e-60, +44, 33.445488356053829, 2.4420363935005462e-60, +44, 33.44548836350441, 2.4420365090235068e-60, +44, 34.044230751693249, 1.1247018428087803e-60, +44, 34.044230759143829, 1.1247019447882527e-60, +44, 34.637104175984859, 5.3916101329900339e-61, +44, 34.63710418343544, 5.3916117966603539e-61, +44, 35.224032618105412, 2.6860578423081937e-61, +44, 35.224032625555992, 2.6860582812593381e-61, +44, 35.80493887513876, 1.3884862436203571e-61, +44, 35.80493888258934, 1.3884857125492079e-61, +44, 36.379745692014694, 7.4395293787923654e-62, +44, 36.379745699465275, 7.439531573426712e-62, +44, 36.948377177119255, 4.1213785665077009e-62, +44, 36.948377184569836, 4.1213775271898848e-62, +44, 37.510760769248009, 2.3563995586116442e-62, +44, 37.510760776698589, 2.3563998572726389e-62, +44, 38.066829569637775, 1.387825922758731e-62, +44, 38.066829577088356, 1.3878263222132413e-62, +44, 38.616525396704674, 8.4026868409755843e-63, +44, 38.616525404155254, 8.4026849826191917e-63, +44, 39.15980252623558, 5.2330380914494507e-63, +44, 39.159802533686161, 5.2330384337581212e-63, +44, 39.696632169187069, 3.334915925394798e-63, +44, 39.69663217663765, 3.3349150946973438e-63, +44, 40.227007821202278, 2.1688592245996604e-63, +44, 40.227007828652859, 2.1688582534753389e-63, +44, 40.750951237976551, 1.4357225842013951e-63, +44, 40.750951245427132, 1.4357220404846224e-63, +44, 41.268518827855587, 9.6476907882532163e-64, +44, 41.268518835306168, 9.6476938144334747e-64, +44, 41.779807850718498, 6.5625953469000859e-64, +44, 41.779807858169079, 6.5625937860509035e-64, +44, 42.284961640834808, 4.5058398148726142e-64, +44, 42.284961648285389, 4.5058416997625145e-64, +44, 42.784172587096691, 3.129001741872849e-64, +44, 42.784172594547272, 3.1290032694075403e-64, +44, 43.277681954205036, 2.2178639138343572e-64, +44, 43.277681961655617, 2.217862574017806e-64, +44, 43.765775695443153, 1.5734475453107395e-64, +44, 43.765775702893734, 1.5734473760285837e-64, +44, 44.248776264488697, 1.1146763587781778e-64, +44, 44.248776271939278, 1.1146759216720561e-64, +44, 44.72703155875206, 7.8671948445613079e-65, +44, 44.727031566202641, 7.8671929349871774e-65, +45, 0.80557141453027725, 5.0726413534345763e-09, +45, 0.80557142198085785, 5.0726286490438008e-09, +45, 1.6771774515509605, 3.4460674497709128e-12, +45, 1.6771774590015411, 3.4460610672915812e-12, +45, 2.5371646136045456, 5.1916332019115706e-15, +45, 2.5371646210551262, 5.1916266282356591e-15, +45, 3.3869747146964073, 1.388371209350898e-17, +45, 3.3869747221469879, 1.3883700616973645e-17, +45, 4.2276168465614319, 5.8275697184933708e-20, +45, 4.2276168540120125, 5.8275654750778e-20, +45, 5.0598277673125267, 3.5477579887516431e-22, +45, 5.0598277747631073, 3.5477564975097925e-22, +45, 5.8841698914766312, 2.9642841271070067e-24, +45, 5.8841698989272118, 2.9642822863171458e-24, +45, 6.7010877579450607, 3.2630738774830459e-26, +45, 6.7010877653956413, 3.263073017156076e-26, +45, 7.5109421014785767, 4.5854715121871508e-28, +45, 7.5109421089291573, 4.5854688992980262e-28, +45, 8.3140317350625992, 8.0223903144934105e-30, +45, 8.3140317425131798, 8.0223889424453224e-30, +45, 9.1106080338358879, 1.7120675939027816e-31, +45, 9.1106080412864685, 1.7120672151200833e-31, +45, 9.9008851423859596, 4.3820095981211352e-33, +45, 9.9008851498365402, 4.3820077220180574e-33, +45, 10.68504723161459, 1.3260186203855025e-34, +45, 10.68504723906517, 1.3260184368382346e-34, +45, 11.463253825902939, 4.6864022295376335e-36, +45, 11.463253833353519, 4.6864003438291794e-36, +45, 12.235643930733204, 1.9140332469174886e-37, +45, 12.235643938183784, 1.9140329245548746e-37, +45, 13.002339072525501, 8.9509286929604941e-39, +45, 13.002339079976082, 8.9509255547380081e-39, +45, 13.763445809483528, 4.7540198232627669e-40, +45, 13.763445816934109, 4.754018125249747e-40, +45, 14.519057631492615, 2.8470235348619623e-41, +45, 14.519057638943195, 2.8470231939414067e-41, +45, 15.269256517291069, 1.9100959307121379e-42, +45, 15.26925652474165, 1.9100954215055896e-42, +45, 16.014114238321781, 1.4273575426163056e-43, +45, 16.014114245772362, 1.4273572183784119e-43, +45, 16.753693364560604, 1.1818045387769778e-44, +45, 16.753693372011185, 1.1818045406989631e-44, +45, 17.488048121333122, 1.0790078448072891e-45, +45, 17.488048128783703, 1.0790075019516635e-45, +45, 18.217225149273872, 1.0816351664675249e-46, +45, 18.217225156724453, 1.0816350186856221e-46, +45, 18.941264040768147, 1.1857252783860139e-47, +45, 18.941264048218727, 1.1857253231470769e-47, +45, 19.660197868943214, 1.4162599457171879e-48, +45, 19.660197876393795, 1.4162594722619744e-48, +45, 20.374053634703159, 1.8369095424586302e-49, +45, 20.37405364215374, 1.8369090653707792e-49, +45, 21.082852572202682, 2.5790366146060495e-50, +45, 21.082852579653263, 2.5790364403184686e-50, +45, 21.786610469222069, 3.9082959513144336e-51, +45, 21.786610476672649, 3.9082953206667202e-51, +45, 22.485337935388088, 6.3752648464290151e-52, +45, 22.485337942838669, 6.3752654487505152e-52, +45, 23.17904057353735, 1.1165741627665863e-52, +45, 23.17904058098793, 1.1165741068514325e-52, +45, 23.867719195783138, 2.0946976196525122e-53, +45, 23.867719203233719, 2.0946972972903319e-53, +45, 24.551369942724705, 4.199784043907654e-54, +45, 24.551369950175285, 4.1997830354107881e-54, +45, 25.229984417557716, 8.9802156001108849e-55, +45, 25.229984425008297, 8.9802170199891646e-55, +45, 25.903549753129482, 2.0437739932039704e-55, +45, 25.903549760580063, 2.0437737107632989e-55, +45, 26.572048746049404, 4.9412956452360819e-56, +45, 26.572048753499985, 4.9412949268715549e-56, +45, 27.235459871590137, 1.266852119595342e-56, +45, 27.235459879040718, 1.266851943610651e-56, +45, 27.893757358193398, 3.4382556738087285e-57, +45, 27.893757365643978, 3.4382553299106011e-57, +45, 28.546911224722862, 9.8618508840267625e-58, +45, 28.546911232173443, 9.8618491033618367e-58, +45, 29.194887325167656, 2.9846563929548203e-58, +45, 29.194887332618237, 2.9846556456038703e-58, +45, 29.837647385895252, 9.5164851985855428e-59, +45, 29.837647393345833, 9.5164859067162488e-59, +45, 30.475149028003216, 3.1919471145235652e-59, +45, 30.475149035453796, 3.1919465385262668e-59, +45, 31.10734585672617, 1.1245990945651224e-59, +45, 31.10734586417675, 1.1245987676615756e-59, +45, 31.734187498688698, 4.156056326015243e-60, +45, 31.734187506139278, 4.1560548844122152e-60, +45, 32.355619706213474, 1.6087715958830335e-60, +45, 32.355619713664055, 1.6087709778691514e-60, +45, 32.971584491431713, 6.5137250453975497e-61, +45, 32.971584498882294, 6.513725581556009e-61, +45, 33.582020282745361, 2.7547442749945884e-61, +45, 33.582020290195942, 2.754744536546609e-61, +45, 34.186862200498581, 1.2151842423090292e-61, +45, 34.186862207949162, 1.2151844807083802e-61, +45, 34.786042362451553, 5.5842073878826692e-62, +45, 34.786042369902134, 5.584208841716622e-62, +45, 35.379490330815315, 2.668953446148253e-62, +45, 35.379490338265896, 2.6689534358362321e-62, +45, 35.967133708298206, 1.3247417718966731e-62, +45, 35.967133715748787, 1.3247418233453314e-62, +45, 36.54889889061451, 6.81830654860711e-63, +45, 36.54889889806509, 6.818308174202415e-63, +45, 37.124712072312832, 3.6352982698527776e-63, +45, 37.124712079763412, 3.6352977649621008e-63, +45, 37.69450056552887, 2.0032179772713561e-63, +45, 37.69450057297945, 2.0032182198683058e-63, +45, 38.258194424211979, 1.1388655591516622e-63, +45, 38.25819443166256, 1.1388660071209926e-63, +45, 38.815728560090065, 6.6679019732380082e-64, +45, 38.815728567540646, 6.6678989599996421e-64, +45, 39.367045409977436, 4.0127865735433081e-64, +45, 39.367045417428017, 4.0127869714530915e-64, +45, 39.912098117172718, 2.4823303830602347e-64, +45, 39.912098124623299, 2.4823303478495604e-64, +45, 40.450854524970055, 1.5726807857647126e-64, +45, 40.450854532420635, 1.572680157861683e-64, +45, 40.983301803469658, 1.0171102749116892e-64, +45, 40.983301810920238, 1.0171100325088395e-64, +45, 41.509451732039452, 6.6986541124123709e-65, +45, 41.509451739490032, 6.698656106772216e-65, +45, 42.029346436262131, 4.4811565030652948e-65, +45, 42.029346443712711, 4.4811552128179833e-65, +45, 42.543064199388027, 3.0368532731017174e-65, +45, 42.543064206838608, 3.0368549286644374e-65, +45, 43.050724543631077, 2.0792657453220576e-65, +45, 43.050724551081657, 2.0792648606503151e-65, +45, 43.552491940557957, 1.4343039408147246e-65, +45, 43.552491948008537, 1.4343037745621818e-65, +45, 44.048576854169369, 1.0116281113567898e-65, +45, 44.048576861619949, 1.0116281946112367e-65, +45, 44.539233565330505, 7.1772181026542797e-66, +45, 44.539233572781086, 7.1772152894419919e-66, +45, 45.024754360318184, 5.0910329745997959e-66, +45, 45.024754367768764, 5.0910353852429258e-66, +45, 45.505460530519485, 3.6018564323451954e-66, +45, 45.505460537970066, 3.6018566644727318e-66, +46, 0.80644359439611435, 4.5937276590999757e-09, +46, 0.80644360184669495, 4.5937132947588083e-09, +46, 1.6787640303373337, 2.98087274959071e-12, +46, 1.6787640377879143, 2.9808661935097509e-12, +46, 2.5395892709493637, 4.2899194266498207e-15, +46, 2.5395892783999443, 4.2899128733913176e-15, +46, 3.3903501108288765, 1.0959512621942293e-17, +46, 3.3903501182794571, 1.0959500272092307e-17, +46, 4.2320479527115822, 4.3946338657974935e-20, +46, 4.2320479601621628, 4.3946295614372081e-20, +46, 5.0654139667749405, 2.5559124327100822e-22, +46, 5.0654139742255211, 2.5559109015816517e-22, +46, 5.8910063803195953, 2.0402090976949595e-24, +46, 5.8910063877701759, 2.0402082133441809e-24, +46, 6.7092665061354637, 2.145610870292747e-26, +46, 6.7092665135860443, 2.1456095483082796e-26, +46, 7.5205526426434517, 2.8805916737655836e-28, +46, 7.5205526500940323, 2.8805901581525201e-28, +46, 8.3251616805791855, 4.8148199932649022e-30, +46, 8.3251616880297661, 4.8148180062818176e-30, +46, 9.1233435869216919, 9.8170133416748883e-32, +46, 9.1233435943722725, 9.8170091250383215e-32, +46, 9.9153114706277847, 2.4005845709495377e-33, +46, 9.9153114780783653, 2.4005840292112442e-33, +46, 10.701248779892921, 6.9403518737356291e-35, +46, 10.701248787343502, 6.9403506658677479e-35, +46, 11.481314651668072, 2.3434809696862083e-36, +46, 11.481314659118652, 2.3434804155032999e-36, +46, 12.255647927522659, 9.1445672766592834e-38, +46, 12.25564793497324, 9.144564597736229e-38, +46, 13.024370245635509, 4.0857760701521376e-39, +46, 13.02437025308609, 4.0857744961794638e-39, +46, 13.787588477134705, 2.0732944897302441e-40, +46, 13.787588484585285, 2.0732942157647581e-40, +46, 14.545396625995636, 1.1862751290774051e-41, +46, 14.545396633446217, 1.1862750069296983e-41, +46, 15.297877408564091, 7.6040389545684135e-43, +46, 15.297877416014671, 7.6040366169514959e-43, +46, 16.045103512704372, 5.4289663713334323e-44, +46, 16.045103520154953, 5.4289651014099083e-44, +46, 16.787138611078262, 4.2946308014331587e-45, +46, 16.787138618528843, 4.2946309393062078e-45, +46, 17.524038217961788, 3.7462898475103639e-46, +46, 17.524038225412369, 3.7462891712075553e-46, +46, 18.255850434303284, 3.5880254135208017e-47, +46, 18.255850441753864, 3.5880241641149892e-47, +46, 18.982616521418095, 3.7580124520341846e-48, +46, 18.982616528868675, 3.7580126105590187e-48, +46, 19.704371377825737, 4.2886328507162675e-49, +46, 19.704371385276318, 4.2886330882959628e-49, +46, 20.421144008636475, 5.3145793544475191e-50, +46, 20.421144016087055, 5.3145791023640892e-50, +46, 21.132957860827446, 7.129322161861212e-51, +46, 21.132957868278027, 7.1293220408739578e-51, +46, 21.839831113815308, 1.0322705745422839e-51, +46, 21.839831121265888, 1.0322702541941654e-51, +46, 22.541776970028877, 1.6088924619052019e-52, +46, 22.541776977479458, 1.6088926207793541e-52, +46, 23.238803811371326, 2.6924552321776528e-53, +46, 23.238803818821907, 2.6924555089976417e-53, +46, 23.93091543763876, 4.8264330441793963e-54, +46, 23.93091544508934, 4.8264333299674338e-54, +46, 24.618111185729504, 9.2467851317038458e-55, +46, 24.618111193180084, 9.246783397684182e-55, +46, 25.300386071205139, 1.8894165539320044e-55, +46, 25.30038607865572, 1.8894160802674772e-55, +46, 25.977730877697468, 4.1093484735817205e-56, +46, 25.977730885148048, 4.1093479284602969e-56, +46, 26.650132246315479, 9.4952675622529843e-57, +46, 26.65013225376606, 9.4952681597268829e-57, +46, 27.317572742700577, 2.3267585353541947e-57, +46, 27.317572750151157, 2.3267584721107382e-57, +46, 27.980030924081802, 6.0361758747634122e-58, +46, 27.980030931532383, 6.0361744186632288e-58, +46, 28.637481383979321, 1.6551114270590451e-58, +46, 28.637481391429901, 1.6551115121338961e-58, +46, 29.289894767105579, 4.7892134847685121e-59, +46, 29.28989477455616, 4.7892139632868144e-59, +46, 29.937237836420536, 1.4602051759997881e-59, +46, 29.937237843871117, 1.4602053759582893e-59, +46, 30.579473488032818, 4.68423576142464e-60, +46, 30.579473495483398, 4.6842348560181774e-60, +46, 31.216560810804367, 1.5787698767498073e-60, +46, 31.216560818254948, 1.5787694868993428e-60, +46, 31.848455116152763, 5.5827601398471846e-61, +46, 31.848455123603344, 5.5827605505046904e-61, +46, 32.475107997655869, 2.0684054277531821e-61, +46, 32.475108005106449, 2.0684050017914515e-61, +46, 33.096467457711697, 8.0184979475855917e-62, +46, 33.096467465162277, 8.0184996083569093e-62, +46, 33.712477974593639, 3.2481838404050001e-62, +46, 33.71247798204422, 3.2481845661858734e-62, +46, 34.323080711066723, 1.3730902387821525e-62, +46, 34.323080718517303, 1.3730905116669834e-62, +46, 34.928213715553284, 6.0490505093449614e-63, +46, 34.928213723003864, 6.0490502061549865e-63, +46, 35.527812235057354, 2.7738302273726239e-63, +46, 35.527812242507935, 2.7738300120352881e-63, +46, 36.121809102594852, 1.3219315330205259e-63, +46, 36.121809110045433, 1.3219315495101077e-63, +46, 36.710135266184807, 6.5381416094508987e-64, +46, 36.710135273635387, 6.5381395439195238e-64, +46, 37.29272049665451, 3.3511256183575924e-64, +46, 37.292720504105091, 3.3511253777416731e-64, +46, 37.869494251906872, 1.7782224670780664e-64, +46, 37.869494259357452, 1.7782230075236345e-64, +46, 38.440386839210987, 9.7485951877403594e-65, +46, 38.440386846661568, 9.7485987533710605e-65, +46, 39.005330882966518, 5.5118745257229395e-65, +46, 39.005330890417099, 5.5118758087036987e-65, +46, 39.564263164997101, 3.2086062422653907e-65, +46, 39.564263172447681, 3.2086059318791368e-65, +46, 40.117126934230328, 1.9195876578735422e-65, +46, 40.117126941680908, 1.9195871483787689e-65, +46, 40.663874745368958, 1.1796387047474248e-65, +46, 40.663874752819538, 1.1796390835335743e-65, +46, 41.204471878707409, 7.4302744969961591e-66, +46, 41.20447188615799, 7.4302749906208339e-66, +46, 41.738900445401669, 4.7787386204187361e-66, +46, 41.738900452852249, 4.7787368414768313e-66, +46, 42.267164044082165, 3.1309961982361379e-66, +46, 42.267164051532745, 3.1309970241249755e-66, +46, 42.789292871952057, 2.0848199024819712e-66, +46, 42.789292879402637, 2.0848208718454793e-66, +46, 43.305349059402943, 1.4072806979517762e-66, +46, 43.305349066853523, 1.4072808312475605e-66, +46, 43.815431639552116, 9.6052084550853495e-67, +46, 43.815431647002697, 9.6052117675199433e-67, +46, 44.319680452346802, 6.6113571969505894e-67, +46, 44.319680459797382, 6.6113606493408914e-67, +46, 44.818278186023235, 4.6166478078491933e-67, +46, 44.818278193473816, 4.6166471165314981e-67, +46, 45.311449721455574, 3.2739994282155191e-67, +46, 45.311449728906155, 3.2740001617951049e-67, +46, 45.799458242952824, 2.3237282013187023e-67, +46, 45.799458250403404, 2.3237271415390931e-67, +46, 46.282598368823528, 1.6469678742677118e-67, +46, 46.282598376274109, 1.6469671711065112e-67, +46, 46.761186890304089, 1.1632539359263231e-67, +46, 46.761186897754669, 1.1632546267503127e-67, +47, 0.80728960782289505, 4.168696487285219e-09, +47, 0.80728961527347565, 4.1686802748840336e-09, +47, 1.6803020089864731, 2.5862826437989554e-12, +47, 1.6803020164370537, 2.5862783742309297e-12, +47, 2.5419385433197021, 3.5589110032244365e-15, +47, 2.5419385507702827, 3.5589055350312847e-15, +47, 3.3936193436384201, 8.6937819098974955e-18, +47, 3.3936193510890007, 8.693773453710869e-18, +47, 4.236338347196579, 3.3334879834427222e-20, +47, 4.2363383546471596, 3.3334862351113778e-20, +47, 5.0708212777972221, 1.8539122147624523e-22, +47, 5.0708212852478027, 1.8539106465989753e-22, +47, 5.8976223096251488, 1.4151117759288016e-24, +47, 5.8976223170757294, 1.4151112842385029e-24, +47, 6.7171796038746834, 1.4231354913857727e-26, +47, 6.717179611325264, 1.4231349092066792e-26, +47, 7.5298490300774574, 1.8270991916084673e-28, +47, 7.529849037528038, 1.8270981509844472e-28, +47, 8.3359256163239479, 2.9204552900337321e-30, +47, 8.3359256237745285, 2.9204539068875798e-30, +47, 9.135657899081707, 5.6943540186214883e-32, +47, 9.1356579065322876, 5.694351434585495e-32, +47, 9.9292579293251038, 1.3316209970119361e-33, +47, 9.9292579367756844, 1.3316206287916541e-33, +47, 10.716908417642117, 3.681688466369277e-35, +47, 10.716908425092697, 3.6816872878015352e-35, +47, 11.498768046498299, 1.1888624622058115e-36, +47, 11.498768053948879, 1.1888620779052879e-36, +47, 12.274975448846817, 4.4364967703657409e-38, +47, 12.274975456297398, 4.4364963392181388e-38, +47, 13.045652270317078, 1.8956597245535588e-39, +47, 13.045652277767658, 1.895659468029324e-39, +47, 13.810905605554581, 9.1993530960854184e-41, +47, 13.810905613005161, 9.1993516327132913e-41, +47, 14.570829890668392, 5.0337694936051544e-42, +47, 14.570829898118973, 5.0337685733871596e-42, +47, 15.325508452951908, 3.0857782210815548e-43, +47, 15.325508460402489, 3.0857781885111563e-43, +47, 16.075014747679234, 2.1069353065285192e-44, +47, 16.075014755129814, 2.1069351219798955e-44, +47, 16.819413416087627, 1.5939494446404127e-45, +47, 16.819413423538208, 1.5939494724979777e-45, +47, 17.558761104941368, 1.3297370293876914e-46, +47, 17.558761112391949, 1.3297368751262161e-46, +47, 18.293107204139233, 1.2179710847308252e-47, +47, 18.293107211589813, 1.2179707147570524e-47, +47, 19.022494435310364, 1.2199964409560206e-48, +47, 19.022494442760944, 1.2199963161526724e-48, +47, 19.746959328651428, 1.3314974725625693e-49, +47, 19.746959336102009, 1.3314971821520744e-49, +47, 20.466532692313194, 1.5780264769522475e-50, +47, 20.466532699763775, 1.5780266017287087e-50, +47, 21.181239917874336, 2.0245178949773632e-51, +47, 21.181239925324917, 2.0245176315944763e-51, +47, 21.891101337969303, 2.8034948326469036e-52, +47, 21.891101345419884, 2.8034939685782499e-52, +47, 22.596132457256317, 4.1790008688926555e-53, +47, 22.596132464706898, 4.1790007819449501e-53, +47, 23.29634415358305, 6.688690844654884e-54, +47, 23.29634416103363, 6.6886903967838107e-54, +47, 23.99174290150404, 1.1467692853330373e-54, +47, 23.99174290895462, 1.146769186365129e-54, +47, 24.682330906391144, 2.1014056175149362e-55, +47, 24.682330913841724, 2.101405889230169e-55, +47, 25.368106223642826, 4.1070651602071193e-56, +47, 25.368106231093407, 4.1070645819933285e-56, +47, 26.04906290769577, 8.5443697879268007e-57, +47, 26.049062915146351, 8.5443710805019463e-57, +47, 26.725191041827202, 1.8886008815516421e-57, +47, 26.725191049277782, 1.8886004404999289e-57, +47, 27.396476879715919, 4.4272816933018068e-58, +47, 27.3964768871665, 4.4272808898189293e-58, +47, 28.062902852892876, 1.0988364859194886e-58, +47, 28.062902860343456, 1.0988366253920036e-58, +47, 28.724447630345821, 2.8828564728611722e-59, +47, 28.724447637796402, 2.8828560006070042e-59, +47, 29.381086193025112, 7.9823493818795601e-60, +47, 29.381086200475693, 7.9823486515529818e-60, +47, 30.032789826393127, 2.3291962093493194e-60, +47, 30.032789833843708, 2.3291961095189567e-60, +47, 30.679526172578335, 7.1518997842789854e-61, +47, 30.679526180028915, 7.1518973239508013e-61, +47, 31.321259275078773, 2.307641249370635e-61, +47, 31.321259282529354, 2.3076405172220076e-61, +47, 31.957949593663216, 7.8136659014415755e-62, +47, 31.957949601113796, 7.8136652248427256e-62, +47, 32.58955405652523, 2.7726990903841993e-62, +47, 32.589554063975811, 2.7726984868935579e-62, +47, 33.216026142239571, 1.0297785058851998e-62, +47, 33.216026149690151, 1.0297785317772547e-62, +47, 33.837315931916237, 3.9977694884441333e-63, +47, 33.837315939366817, 3.9977697411365166e-63, +47, 34.453370243310928, 1.6201996067502547e-63, +47, 34.453370250761509, 1.6201992966533348e-63, +47, 35.064132787287235, 6.8460691000177028e-64, +47, 35.064132794737816, 6.8460695120204543e-64, +47, 35.669544346630573, 3.0121713471962354e-64, +47, 35.669544354081154, 3.0121713531964038e-64, +47, 36.269543081521988, 1.3784224526611186e-64, +47, 36.269543088972569, 1.3784225213845312e-64, +47, 36.864064872264862, 6.551031389687536e-65, +47, 36.864064879715443, 6.5510309622836689e-65, +47, 37.453043811023235, 3.2290009692268078e-65, +47, 37.453043818473816, 3.2290017963920392e-65, +47, 38.036412797868252, 1.6483961550238261e-65, +47, 38.036412805318832, 1.6483964581988733e-65, +47, 38.614104360342026, 8.7068430193326876e-66, +47, 38.614104367792606, 8.7068402136754839e-66, +47, 39.186051674187183, 4.7496069713042888e-66, +47, 39.186051681637764, 4.7496053262899038e-66, +47, 39.752189837396145, 2.6711638237868345e-66, +47, 39.752189844846725, 2.6711631630388347e-66, +47, 40.312457516789436, 1.5462743542785204e-66, +47, 40.312457524240017, 1.5462749942360846e-66, +47, 40.86679895222187, 9.197576438140017e-67, +47, 40.866798959672451, 9.1975795377859577e-67, +47, 41.415166474878788, 5.6155851602094119e-67, +47, 41.415166482329369, 5.6155838713502694e-67, +47, 41.957523517310619, 3.5168645107743576e-67, +47, 41.9575235247612, 3.5168655127769924e-67, +47, 42.493848152458668, 2.2493284118817205e-67, +47, 42.493848159909248, 2.2493291438227212e-67, +47, 43.024137258529663, 1.4660650820917181e-67, +47, 43.024137265980244, 1.4660656316867027e-67, +47, 43.548411078751087, 9.7156719582995046e-68, +47, 43.548411086201668, 9.7156694474500461e-68, +47, 44.066718079149723, 6.5310259797325952e-68, +47, 44.066718086600304, 6.5310260879476081e-68, +47, 44.579139620065689, 4.442438020547419e-68, +47, 44.57913962751627, 4.4424398622724323e-68, +47, 45.085793986916542, 3.0499884991862987e-68, +47, 45.085793994367123, 3.0499874345652321e-68, +47, 45.586839035153389, 2.1083600642969428e-68, +47, 45.58683904260397, 2.1083609447567937e-68, +47, 46.082472607493401, 1.4938147144274907e-68, +47, 46.082472614943981, 1.4938153354270103e-68, +47, 46.572930358350277, 1.0602813294127947e-68, +47, 46.572930365800858, 1.0602819311490823e-68, +47, 47.058480642735958, 7.5239566886279539e-69, +47, 47.058480650186539, 7.5239599111949498e-69, +47, 47.539416998624802, 5.3260856872391961e-69, +47, 47.539417006075382, 5.3260856592438819e-69, +48, 0.8081108033657074, 3.790537216779154e-09, +48, 0.80811081081628799, 3.7905242694972794e-09, +48, 1.6817938983440399, 2.2504531682948115e-12, +48, 1.6817939057946205, 2.2504483820670804e-12, +48, 2.5442163795232773, 2.9637275510465843e-15, +48, 2.5442163869738579, 2.9637227676420457e-15, +48, 3.3967880085110664, 6.9290264628280876e-18, +48, 3.396788015961647, 6.9290183337540871e-18, +48, 4.2404954805970192, 2.5428118362391363e-20, +48, 4.2404954880475998, 2.5428091511397717e-20, +48, 5.0760592594742775, 1.3535154982948461e-22, +48, 5.0760592669248581, 1.3535145215948875e-22, +48, 5.9040295109152794, 9.8885231815640295e-25, +48, 5.90402951836586, 9.8885168237279911e-25, +48, 6.7248413637280464, 9.518302995514812e-27, +48, 6.724841371178627, 9.5183002220780383e-27, +48, 7.5388482883572578, 1.1696457368664985e-28, +48, 7.5388482958078384, 1.169645374012626e-28, +48, 8.346343457698822, 1.7894833131442889e-30, +48, 8.3463434651494026, 1.7894824081088118e-30, +48, 9.1475740000605583, 3.3397293242857729e-32, +48, 9.1475740075111389, 3.339728176140613e-32, +48, 9.9427508860826492, 7.4755270996096026e-34, +48, 9.9427508935332298, 7.4755256245678417e-34, +48, 10.732056066393852, 1.9783655047619916e-35, +48, 10.732056073844433, 1.9783652198251722e-35, +48, 11.51564771682024, 6.1149507579983915e-37, +48, 11.515647724270821, 6.1149494622707338e-37, +48, 12.293664202094078, 2.1842708433101863e-38, +48, 12.293664209544659, 2.1842700354917262e-38, +48, 13.066227130591869, 8.9337538377953074e-40, +48, 13.06622713804245, 8.9337502859897068e-40, +48, 13.833443738520145, 4.149924620485562e-41, +48, 13.833443745970726, 4.1499237221656357e-41, +48, 14.595408782362938, 2.1736394745132589e-42, +48, 14.595408789813519, 2.173638813907354e-42, +48, 15.352206096053123, 1.2754745467294774e-43, +48, 15.352206103503704, 1.2754741693102798e-43, +48, 16.103909812867641, 8.3362836739294546e-45, +48, 16.103909820318222, 8.3362820544674689e-45, +48, 16.850585393607616, 6.0368656344880979e-46, +48, 16.850585401058197, 6.0368647910276049e-46, +48, 17.592290475964546, 4.8208082646747087e-47, +48, 17.592290483415127, 4.8208065336171195e-47, +48, 18.32907559722662, 4.2267802866741478e-48, +48, 18.3290756046772, 4.2267788247523572e-48, +48, 19.060984767973423, 4.0527677000262975e-49, +48, 19.060984775424004, 4.0527678696098182e-49, +48, 19.788055963814259, 4.2340523931993972e-50, +48, 19.788055971264839, 4.2340524276091812e-50, +48, 20.510321587324142, 4.8034783455880191e-51, +48, 20.510321594774723, 4.8034780348731884e-51, +48, 21.227808803319931, 5.899186088148869e-52, +48, 21.227808810770512, 5.8991860762611689e-52, +48, 21.940539844334126, 7.8199420923371399e-53, +48, 21.940539851784706, 7.8199427514005375e-53, +48, 22.648532271385193, 1.1158743726808565e-53, +48, 22.648532278835773, 1.1158741101131104e-53, +48, 23.351799219846725, 1.7097382876171394e-54, +48, 23.351799227297306, 1.7097378990809491e-54, +48, 24.050349555909634, 2.8062000362026087e-55, +48, 24.050349563360214, 2.8062001977088843e-55, +48, 24.744188040494919, 4.9228561141945363e-56, +48, 24.744188047945499, 4.9228560221850344e-56, +48, 25.433315485715866, 9.2112000380037501e-57, +48, 25.433315493166447, 9.2111973817050768e-57, +48, 26.117728859186172, 1.8346687861945116e-57, +48, 26.117728866636753, 1.8346682350681618e-57, +48, 26.797421365976334, 3.8826606576023508e-58, +48, 26.797421373426914, 3.8826600315338496e-58, +48, 27.47238253057003, 8.7148703279250707e-59, +48, 27.472382538020611, 8.7148674108098657e-59, +48, 28.142598286271095, 2.0711829791398647e-59, +48, 28.142598293721676, 2.0711832322860257e-59, +48, 28.808050975203514, 5.203584010105859e-60, +48, 28.808050982654095, 5.2035828616190226e-60, +48, 29.468719460070133, 1.3798854862844653e-60, +48, 29.468719467520714, 1.3798850951568444e-60, +48, 30.124579109251499, 3.8565307240880389e-61, +48, 30.12457911670208, 3.8565299743759719e-61, +48, 30.775601848959923, 1.134342736876812e-61, +48, 30.775601856410503, 1.1343429076941469e-61, +48, 31.42175617814064, 3.5066060548219019e-62, +48, 31.421756185591221, 3.5066056252289294e-62, +48, 32.063007235527039, 1.1377415805787006e-62, +48, 32.063007242977619, 1.1377415420726448e-62, +48, 32.699316792190075, 3.8694437991207317e-63, +48, 32.699316799640656, 3.8694430678757391e-63, +48, 33.330643333494663, 1.3776788233453704e-63, +48, 33.330643340945244, 1.3776791661638305e-63, +48, 33.956942074000835, 5.1285952783952753e-64, +48, 33.956942081451416, 5.1285947602355625e-64, +48, 34.578165091574192, 1.9937127927134763e-64, +48, 34.578165099024773, 1.9937126593845751e-64, +48, 35.194261386990547, 8.0836531292607215e-65, +48, 35.194261394441128, 8.0836543290621667e-65, +48, 35.805177040398121, 3.4143034915050112e-65, +48, 35.805177047848701, 3.4143040521491458e-65, +48, 36.410855405032635, 1.5004193222265229e-65, +48, 36.410855412483215, 1.5004189889736636e-65, +48, 37.011237367987633, 6.8526723104762059e-66, +48, 37.011237375438213, 6.8526715926507402e-66, +}; + +// +// A bunch of helper functions used for calculating the coefficients: +// +boost::math::ntl::RR factorial(unsigned n) +{ + static boost::array, 201> result; + static bool init = false; + if(!init) + { + unsigned k = 1; + boost::math::ntl::RR fact = 1; + do{ + result[k-1][0] = fact; + fact *= k++; + } + while(k < result.size()); + init = true; + } + //static const int array_size = result.size(); + if(n < result.size()) + return result[n][0]; + + unsigned i = (unsigned)result.size()-1; + boost::math::ntl::RR r = result[i][0]; + while(i < n) + r *= ++i; + return r; +} + +template +T binomial(int n, int k, T) +{ + T result; + if(k < 0) + { + result = 0; + } + else if(k > n) + { + result = 1; + } + else + { + result = factorial(n); + result /= factorial(k); + result /= factorial(n-k); + } + return result; +} +// +// Functions for creating the matrices that generate the coefficents. +// See http://my.fit.edu/~gabdo/gamma.txt and http://www.rskey.org/gamma.htm +// +template +matrix make_B(unsigned n, T) +{ + matrix result(n, n); + for(unsigned i = 0; i < n; ++i) + { + for(unsigned j = 0; j < n; ++j) + { + if(i == 0) + result(i, j) = 1; + else if(j >= i) + { + T r = binomial(i+j-1, j-i, T()); + if((j-i) %2) + r = -r; + result(i, j) = r; + } + else + result(i, j) = 0; + } + } + return result; +} + +template +matrix make_C(unsigned n, T) +{ + matrix result(n, n); + for(unsigned i = 0; i < n; ++i) + { + for(unsigned j = 0; j < n; ++j) + { + if((i==0) && (j == 0)) + result(i, j) = 0.5; + else if(j > i) + result(i, j) = 0; + else + { + T r = 0; + for(unsigned k = 0; k <= i; ++k) + { + r += binomial(2*i, 2*k, T()) * binomial(k, k+j-i, T()); + } + if((i-j)%2) + r = -r; + result(i, j) = r; + } + } + } + return result; +} + +template +matrix make_D(unsigned n, T) +{ + matrix result(n, n); + for(unsigned i = 0; i < n; ++i) + { + for(unsigned j = 0; j < n; ++j) + { + if(i != j) + result(i, j) = 0; + else if(i == 0) + result(i, j) = 1; + else if(i == 1) + result(i, j) = -1; + else + { + T r = result(i-1, i-1) * (2 * (2*i - 1)); + r /= (i-1); + result(i, j) = r; + } + } + } + return result; +} + +template +matrix make_F(unsigned n, T g) +{ + using namespace std; + matrix result(n, 1); + for(unsigned i = 0; i < n; ++i) + { + T r = factorial(2 * i); + r /= factorial(i); + r *= exp(double(i) + g + 0.5); + r /= ldexp(1.0, (2*i)-1); + r /= pow(g + i + 0.5, (long)i); + r /= sqrt(g + i + 0.5); + result(i, 0) = r; + } + return result; +} + +template +struct lanczos_info +{ + int n; // number of coefficients + T r; // the arbitrary parameter + std::vector c; // the coefficients + T err; // error found +}; +// +// Create the coefficients, caching previous matrix values as appropriate: +// +template +lanczos_info generate_lanczos(unsigned n, T g) +{ + static unsigned last_n = 0; + static matrix last_prefix; + + matrix B, C, D; + matrix F, P, E, T1, T2; + + if(n == last_n) + { + F = make_F(n, g); + P = prod(last_prefix, F); + } + else + { + B = make_B(n, g); + C = make_C(n, g); + D = make_D(n, g); + F = make_F(n, g); + + T1 = prod(D, B); + T2 = prod(T1, C); + P = prod(T2, F); + + last_n = n; + last_prefix = T2; + } + + lanczos_info result; + result.n = n; + result.r = g; + for(unsigned i = 0; i < n; ++i) + result.c.push_back(P(i, 0)); + + return result; +} +// +// Returns the factorials and half factorials: +// +template +std::vector > const & get_test_data() +{ + // returns factorials and half factorials in the range [0, 100]: + static std::vector > data; + if(data.empty()) + { + T fact = 1; + int k = 1; + std::vector item; + do + { + data.push_back(item); + data.back().push_back(k-1); + data.back().push_back(fact); + data.back().push_back(log(fact)); + fact = fact * T(k++); + }while(k < 100); + + fact = 0.5; + T srpi = sqrt(boost::math::constants::pi()); + T mul = 1.5; + do{ + data.push_back(item); + data.back().push_back(mul-1); + data.back().push_back(fact*srpi); + data.back().push_back(log(fact*srpi)); + fact *= mul; + mul += 1; + }while(mul < 100); + } + + return data; +} + +struct sort_on_0 +{ + template + bool operator ()(const T& a, const T& b) + { + return ((a[0]) < (b[0])); + } +}; +// +// Get test data for points near 0, 1, 2 etc. +template +std::vector > const & get_test_data_near_x(T x) +{ + // + // this *must* be called with a *very* high precision + // type T in order to stand any chance of long double + // precision results: + // + using namespace std; + using namespace boost::math; + static std::vector > data; + static T last_x(-10000); + if(last_x != x) + data.clear(); + if(!data.size()) + { + last_x = x; + std::vector item; + for(int i = -4; i > -20; --i) + { + double val = ldexp(2.0, i); + data.push_back(item); + data.back().push_back(val+x); + data.back().push_back(tgamma(T(val)+x)); + data.back().push_back(lgamma(T(val)+x)); + data.push_back(item); + data.back().push_back(-val+x); + data.back().push_back(tgamma(T(-val)+x)); + data.back().push_back(lgamma(T(-val)+x)); + } + T v = x-0.5; + T interval = T(1)/8; + while(v <= x+0.5) + { + if((floor(v) != v) || (v > 0)) + { + data.push_back(item); + data.back().push_back(v); + data.back().push_back(tgamma(v)); + data.back().push_back(lgamma(v)); + } + v += interval; + } + // + // sort data: + // + std::sort(data.begin(), data.end(), sort_on_0()); + } + return data; +} + +template +std::vector > const & get_test_data_near_1() +{ + return get_test_data_near_x(T(1)); +} + +template +std::vector > const & get_test_data_near_2() +{ + return get_test_data_near_x(T(2)); +} + +// +// Converts Lanczos approximation into rational form via +// polynomial arithmetic: +// +template +struct lanczos_rational +{ + std::vector num, denom; + int N; + T g; + + T gamma(T z) + { + using namespace std; + BOOST_ASSERT(num.size() == denom.size()); + BOOST_ASSERT(num.size() == N); + T zgh = z + g - T(0.5); + T prefix = pow(zgh, T(z - 0.5)) / exp(zgh); + T s1, s2; + if(z < 1) + { + s1 = num[N-1]; + s2 = denom[N-1]; + for(unsigned i = N-2; i >= 0; --i) + { + s1 *= z; + s2 *= z; + s1 += num[i]; + s2 += num[i]; + } + s1 /= s2; + return prefix * s1; + } + else + { + z = 1/z; + s1 = num[0]; + s2 = denom[0]; + for(int i = 1; i < N; ++i) + { + s1 *= z; + s2 *= z; + s1 += num[i]; + s2 += denom[i]; + } + s1 /= s2; + return prefix * s1; + } + } + T factorial(T z) + { + return this->gamma(z+1); + } + template + lanczos_rational(const lanczos_info& info) + { + U l_denom_coef[2] = { 0, 1 }; + boost::math::tools::polynomial l_denom(l_denom_coef, 1), l_num(info.c[1]); + for(unsigned i = 2; i < info.c.size(); ++i) + { + l_denom_coef[0] = i - 1; + boost::math::tools::polynomial bot(l_denom_coef, 1), top(info.c[i]); + l_num *= bot; + top *= l_denom; + l_denom *= bot; + l_num += top; + } + l_num += l_denom * info.c[0]; + for(unsigned i = 0; i < info.c.size(); ++i) + { + num.push_back(boost::math::tools::real_cast(l_num[i])); + denom.push_back(boost::math::tools::real_cast(l_denom[i])); + } + //std::cout << l_num << std::endl; + //std::cout << l_denom << std::endl; + BOOST_ASSERT(num.size() == l_num.degree()+1); + BOOST_ASSERT(denom.size() == l_denom.degree()+1); + g = boost::math::tools::real_cast(info.r); + N = info.n; + /* + for(unsigned i = 0; i < num.size(); ++i) + std::cout << num[i] << " "; + std::cout << std::endl; + for(unsigned i = 0; i < denom.size(); ++i) + std::cout << denom[i] << " "; + std::cout << std::endl; + */ + } +}; +// +// Code to test an approximation against the factorials and +// half factorials, returns the max error found: +// +template +T get_max_error(const lanczos_info& dat, R) +{ + T max_error = 0; + std::vector > const & tests = get_test_data(); + lanczos_rational rational(dat); + + for(unsigned i = 0; i < tests.size(); ++i) + { + R input = boost::math::tools::real_cast(tests[i][0]); + if(std::numeric_limits::is_specialized && (boost::math::tools::real_cast(tests[i][1]) > (std::numeric_limits::max)())) + continue; + + R gamr = rational.factorial(input); + if(std::numeric_limits::is_specialized && (gamr > (std::numeric_limits::max)())) + continue; + T gam = gamr; + T exp = tests[i][1]; + T err = boost::math::tools::relative_error(gam, exp); + if(err > max_error) + max_error = err; + } + + return max_error; +} +// +// This is what prints the "best" approximation out as code: +// +template +void print_code(const lanczos_info& l, const char* name) +{ + using namespace std; + lanczos_info l2(l); + T factor = exp(l.r); + for(unsigned k = 0; k < l2.c.size(); ++k) + l2.c[k] /= factor; + + lanczos_rational rat(l); + T max_term = 0; + for(unsigned i = 0; i < rat.denom.size(); ++i) + { + if(rat.denom[i] > max_term) + max_term = rat.denom[i]; + } + const char* denom_type; + const char* cast_type; + const char* suffix_type; + if(max_term < (std::numeric_limits::max)()) + { + denom_type = "boost::uint16_t"; + cast_type = "static_cast"; + suffix_type = "u"; + } + else if(max_term < (std::numeric_limits::max)()) + { + denom_type = "boost::uint32_t"; + cast_type = "static_cast"; + suffix_type = "u"; + } +#ifdef BOOST_HAS_LONG_LONG + else if(max_term < (std::numeric_limits::max)()) + { + denom_type = "boost::uint64_t"; + cast_type = ""; + suffix_type = "uLL"; + } +#endif + else + { + denom_type = "T"; + cast_type = "static_cast"; + suffix_type = "L"; + } + + std::cout << + "//\n" + "// Lanczos Coefficients for N=" << l.n << " G=" << l.r << "\n" + "// Max experimental error (with "; + if(std::strlen(name) == 0) + std::cout << "arbitary"; + else + std::cout << name; + std::cout << " precision arithmetic) " << l.err << + "\n// Generated with compiler: " << BOOST_COMPILER << " on " << BOOST_PLATFORM << " at " << __DATE__ << "\n" + "//\n" + "struct lanczos" << l.n << name << "\n" + "{\n" + " template \n" + " static T lanczos_sum(const T& z)\n" + " {\n" + " static const T num[" << rat.num.size() << "] = {\n"; + + for(unsigned i = 0; i < rat.num.size(); ++i) + { + std::cout << " static_cast(" << rat.num[i] << "L)"; + if(i != rat.num.size() - 1) + std::cout << ","; + std::cout << "\n"; + } + std::cout << + " };\n" + " static const " << denom_type << " denom[" << rat.denom.size() << "] = {\n"; + for(unsigned i = 0; i < rat.denom.size(); ++i) + { + std::cout << " " << cast_type << "(" << rat.denom[i] << suffix_type << ")"; + if(i != rat.denom.size() - 1) + std::cout << ","; + std::cout << "\n"; + } + std::cout << + " };\n" + " return boost::math::tools::evaluate_rational(num, denom, z);\n" + " }\n\n" + " template \n" + " static T lanczos_sum_expG_scaled(const T& z)\n" + " {\n" + " static const T num[" << rat.num.size() << "] = {\n"; + + for(unsigned i = 0; i < rat.num.size(); ++i) + { + std::cout << " static_cast(" << (rat.num[i]/factor) << "L)"; + if(i != rat.num.size() - 1) + std::cout << ","; + std::cout << "\n"; + } + std::cout << + " };\n" + " static const " << denom_type << " denom[" << rat.denom.size() << "] = {\n"; + for(unsigned i = 0; i < rat.denom.size(); ++i) + { + std::cout << " " << cast_type << "(" << rat.denom[i] << suffix_type << ")"; + if(i != rat.denom.size() - 1) + std::cout << ","; + std::cout << "\n"; + } + std::cout << + " };\n" + " return boost::math::tools::evaluate_rational(num, denom, z);\n" + " }\n\n"; + + std::cout << + "\n template\n" + " static T lanczos_sum_near_1(const T& dz)\n" + " {\n" + " static const T d[" << l2.n-1 << "] = {\n"; + + factor = sqrt((l.r + 0.5)/boost::math::constants::e()) / exp(l.r); + + for(int i = 1; i < l.n; ++i) + { + std::cout << " static_cast(" << l.c[i]*factor << "L)"; + if(i != l.n - 1) + std::cout << ","; + std::cout << "\n"; + } + std::cout << + " };\n" + " T result = 0;\n" + " for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)\n" + " {\n" + " result += (-d[k-1]*dz)/(k*dz + k*k);\n" + " }\n" + " return result;\n" + " }\n"; + + std::cout << + "\n template\n" + " static T lanczos_sum_near_2(const T& dz)\n" + " {\n" + " static const T d[" << l2.n-1 << "] = {\n"; + + factor = pow(boost::math::constants::e()/(l.r+1.5), T(1.5)) * exp(l.r); + //pow((l.r + 1.5)/boost::math::constants::e(), 1.5) / exp(l.r); + + for(int i = 1; i < l.n; ++i) + { + std::cout << " static_cast(" << l.c[i]/factor << "L),\n"; + } + std::cout << + " };\n" + " T result = 0;\n" + " T z = dz + 2;\n" + " for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k)\n" + " {\n" + " result += (-d[k-1]*dz)/(z + k*z + k*k - 1);\n" + " }\n" + " return result;\n" + " }\n\n" + " static double g(){ return " << l.r << "; }\n" + "};\n\n"; +} +// +// Print out the test values: +// +void print_test_values(const std::vector >& v, const char* name, int offset = 1) +{ + std::cout << "#define SC_(x) static_cast(BOOST_JOIN(x, L))\n"; + std::cout << + " static const boost::array, " << v.size() << "> " << name << " = {\n"; + for(unsigned i = 0; i < v.size(); ++i) + { + std::cout << " SC_(" << (v[i][0] + offset) << "), SC_(" << v[i][1] << "), SC_(" << v[i][2] << "),\n"; + } + std::cout << " };\n#undef SC_\n\n"; +} +// +// Get the error for a specific approximation, and print out it's code: +// +void calculate_lanczos_spot(int n, boost::math::ntl::RR r, const char* suffix = "") +{ + lanczos_info info = generate_lanczos(n, r); + // note error is calculated at high precision: + info.err = get_max_error(info, r); + print_code(info, suffix); +} +// +// Scan the sweet-spots for the best approximation: +// +template +void find_best_lanczos(const char* name, T eps, int max_scan = 100) +{ + using namespace std; + + lanczos_info best; + best.err = 100; // best case had better be better than this! + for(int i = 0; i < sizeof(sweet_spots)/sizeof(sweet_spots[0]); ++i) + { + if((sweet_spots[i].err < eps*10) && (sweet_spots[i].N < max_scan)) + { + lanczos_info info = generate_lanczos(sweet_spots[i].N, boost::math::ntl::RR(sweet_spots[i].g)); + boost::math::ntl::RR err = get_max_error(info, eps); + if(err/eps < 1000) + { + std::cout << sweet_spots[i].N << " " << sweet_spots[i].g << " " << err/eps << std::endl; + } + if(err < best.err) + { + best = info; + best.err = err; + } + } + } + std::cout << std::endl; + + print_code(best, name); +} +int test_main(int argc, char*argv []) +{ + bool test_double(false), test_long(false), test_float(false), test_quad(false), spots(false), test_data(false); + + if(argc < 2) + { + std::cout << + "Useage:\n" + " -float test type float for the best approximation\n" + " -double test type double for the best approximation\n" + " -long-double test type long double for the best approximation\n" + " -spots print out the best cases found in previous runs\n" + " -data print out the test data\n" << std::flush; + return 0; + } + + for(int i = 1; i < argc; ++i) + { + if(std::strcmp(argv[i], "-float") == 0) + test_float = true; + else if(std::strcmp(argv[i], "-double") == 0) + test_double = true; + else if(std::strcmp(argv[i], "-long-double") == 0) + test_long = true; + else if(std::strcmp(argv[i], "-quad-float") == 0) + test_quad = true; + else if(std::strcmp(argv[i], "-spots") == 0) + spots = true; + else if(std::strcmp(argv[i], "-data") == 0) + test_data = true; + } + + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + if(spots) + { + // these are optimal N and R from Pugh: + calculate_lanczos_spot(61, 63.192152); + calculate_lanczos_spot(31, 32.080670); + calculate_lanczos_spot(6, 5.581); + calculate_lanczos_spot(11, 10.900511); + calculate_lanczos_spot(13, 13.144565); + calculate_lanczos_spot(22, 22.61891); + // these are the best cases we've already determined + // from previous runs: + calculate_lanczos_spot(6, 1.428456135094165802001953125); + calculate_lanczos_spot(13, 6.024680040776729583740234375); + calculate_lanczos_spot(17, 12.2252227365970611572265625); + boost::math::ntl::RR::SetOutputPrecision(90); + calculate_lanczos_spot(24, 20.3209821879863739013671875); + } + if(test_float) + { + find_best_lanczos("float", std::numeric_limits::epsilon()); + } + if(test_double) + { + find_best_lanczos("double", std::numeric_limits::epsilon()); + } + + if(test_long) + { + find_best_lanczos("long_double", std::numeric_limits::epsilon()); + } + if(test_quad) + { + //find_best_lanczos("quad_float", pow(NTL::quad_float(2), NTL::quad_float(-105))); + } + if(test_data) + { + std::cout << "Test Data follows:\n\n"; + + boost::math::ntl::RR::SetPrecision(1000); + + std::vector > const & tests = get_test_data(); + print_test_values(tests, "factorials"); + print_test_values(get_test_data_near_1(), "near_1", 0); + print_test_values(get_test_data_near_2(), "near_2", 0); + print_test_values(get_test_data_near_x(boost::math::ntl::RR(0)), "near_0", 0); + print_test_values(get_test_data_near_x(boost::math::ntl::RR(-10)), "near_m10", 0); + print_test_values(get_test_data_near_x(boost::math::ntl::RR(-55)), "near_m55", 0); + } + return 0; +} + + + diff --git a/tools/legendre_data.cpp b/tools/legendre_data.cpp new file mode 100644 index 000000000..0bc2b08d3 --- /dev/null +++ b/tools/legendre_data.cpp @@ -0,0 +1,105 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + + +template +std::tr1::tuple legendre_p_data(T n, T x) +{ + n = floor(n); + T r1 = legendre_p(boost::math::tools::real_cast(n), x); + T r2 = legendre_q(boost::math::tools::real_cast(n), x); + return std::tr1::make_tuple(n, x, r1, r2); +} + +template +std::tr1::tuple assoc_legendre_p_data(T n, T x) +{ + static tr1::mt19937 r; + int l = real_cast(floor(n)); + tr1::uniform_int<> ui((std::max)(-l, -40), (std::min)(l, 40)); + int m = ui(r); + T r1 = legendre_p(l, m, x); + return std::tr1::make_tuple(n, m, x, r1); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + if(strcmp(argv[1], "--legendre2") == 0) + { + do{ + if(0 == get_user_parameter_info(arg1, "l")) + return 1; + if(0 == get_user_parameter_info(arg2, "x")) + return 1; + arg1.type |= dummy_param; + arg2.type |= dummy_param; + + data.insert(&legendre_p_data, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + else if(strcmp(argv[1], "--legendre3") == 0) + { + do{ + if(0 == get_user_parameter_info(arg1, "l")) + return 1; + if(0 == get_user_parameter_info(arg2, "x")) + return 1; + arg1.type |= dummy_param; + arg2.type |= dummy_param; + + data.insert(&assoc_legendre_p_data, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + + + std::cout << "Enter name of test data file [default=legendre_p.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "legendre_p.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/log1p_expm1_data.cpp b/tools/log1p_expm1_data.cpp new file mode 100644 index 000000000..92a88ec7d --- /dev/null +++ b/tools/log1p_expm1_data.cpp @@ -0,0 +1,63 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include + +#include +#include +#include + +using namespace boost::math::tools; +using namespace std; + +struct data_generator +{ + std::tr1::tuple operator()(boost::math::ntl::RR z) + { + return std::tr1::make_tuple(boost::math::log1p(z), boost::math::expm1(z)); + } +}; + +int main(int argc, char* argv[]) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1; + test_data data; + + std::cout << "Welcome.\n" + "This program will generate spot tests for the log1p and expm1 functions:\n\n"; + + bool cont; + std::string line; + + do{ + if(0 == get_user_parameter_info(arg1, "z")) + return 1; + data.insert(data_generator(), arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=log1p_expm1_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "log1p_expm1_data.ipp"; + std::ofstream ofs(line.c_str()); + ofs << std::scientific; + write_code(ofs, data, "log1p_expm1_data"); + + return 0; +} + + + + diff --git a/tools/ntl_rr_digamma.hpp b/tools/ntl_rr_digamma.hpp new file mode 100644 index 000000000..faf859210 --- /dev/null +++ b/tools/ntl_rr_digamma.hpp @@ -0,0 +1,292 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_MATH_NTL_DIGAMMA +#define BOOST_MATH_NTL_DIGAMMA + +#include +#include +#include +#include + +namespace boost{ namespace math{ + +boost::math::ntl::RR digamma_imp(boost::math::ntl::RR x) +{ + static const boost::math::ntl::RR P[61] = { + boost::lexical_cast("0.6660133691143982067148122682345055274952e81"), + boost::lexical_cast("0.6365271516829242456324234577164675383137e81"), + boost::lexical_cast("0.2991038873096202943405966144203628966976e81"), + boost::lexical_cast("0.9211116495503170498076013367421231351115e80"), + boost::lexical_cast("0.2090792764676090716286400360584443891749e80"), + boost::lexical_cast("0.3730037777359591428226035156377978092809e79"), + boost::lexical_cast("0.5446396536956682043376492370432031543834e78"), + boost::lexical_cast("0.6692523966335177847425047827449069256345e77"), + boost::lexical_cast("0.7062543624100864681625612653756619116848e76"), + boost::lexical_cast("0.6499914905966283735005256964443226879158e75"), + boost::lexical_cast("0.5280364564853225211197557708655426736091e74"), + boost::lexical_cast("0.3823205608981176913075543599005095206953e73"), + boost::lexical_cast("0.2486733714214237704739129972671154532415e72"), + boost::lexical_cast("0.1462562139602039577983434547171318011675e71"), + boost::lexical_cast("0.7821169065036815012381267259559910324285e69"), + boost::lexical_cast("0.3820552182348155468636157988764435365078e68"), + boost::lexical_cast("0.1711618296983598244658239925535632505062e67"), + boost::lexical_cast("0.7056661618357643731419080738521475204245e65"), + boost::lexical_cast("0.2685246896473614017356264531791459936036e64"), + boost::lexical_cast("0.9455168125599643085283071944864977592391e62"), + boost::lexical_cast("0.3087541626972538362237309145177486236219e61"), + boost::lexical_cast("0.9367928873352980208052601301625005737407e59"), + boost::lexical_cast("0.2645306130689794942883818547314327466007e58"), + boost::lexical_cast("0.6961815141171454309161007351079576190079e56"), + boost::lexical_cast("0.1709637824471794552313802669803885946843e55"), + boost::lexical_cast("0.3921553258481531526663112728778759311158e53"), + boost::lexical_cast("0.8409006354449988687714450897575728228696e51"), + boost::lexical_cast("0.1686755204461325935742097669030363344927e50"), + boost::lexical_cast("0.3166653542877070999007425197729038754254e48"), + boost::lexical_cast("0.5566029092358215049069560272835654229637e46"), + boost::lexical_cast("0.9161766287916328133080586672953875116242e44"), + boost::lexical_cast("1412317772330871298317974693514430627922000"), + boost::lexical_cast("20387991986727877473732570146112459874790"), + boost::lexical_cast("275557928713904105182512535678580359839.3"), + boost::lexical_cast("3485719851040516559072031256589598330.723"), + boost::lexical_cast("41247046743564028399938106707656877.40859"), + boost::lexical_cast("456274078125709314602601667471879.0147312"), + boost::lexical_cast("4714450683242899367025707077155.310613012"), + boost::lexical_cast("45453933537925041680009544258.75073849996"), + boost::lexical_cast("408437900487067278846361972.302331241052"), + boost::lexical_cast("3415719344386166273085838.705771571751035"), + boost::lexical_cast("26541502879185876562320.93134691487351145"), + boost::lexical_cast("191261415065918713661.1571433274648417668"), + boost::lexical_cast("1275349770108718421.645275944284937551702"), + boost::lexical_cast("7849171120971773.318910987434906905704272"), + boost::lexical_cast("44455946386549.80866460312682983576538056"), + boost::lexical_cast("230920362395.3198137186361608905136598046"), + boost::lexical_cast("1095700096.240863858624279930600654130254"), + boost::lexical_cast("4727085.467506050153744334085516289728134"), + boost::lexical_cast("18440.75118859447173303252421991479005424"), + boost::lexical_cast("64.62515887799460295677071749181651317052"), + boost::lexical_cast("0.201851568864688406206528472883512147547"), + boost::lexical_cast("0.0005565091674187978029138500039504078098143"), + boost::lexical_cast("0.1338097668312907986354698683493366559613e-5"), + boost::lexical_cast("0.276308225077464312820179030238305271638e-8"), + boost::lexical_cast("0.4801582970473168520375942100071070575043e-11"), + boost::lexical_cast("0.6829184144212920949740376186058541800175e-14"), + boost::lexical_cast("0.7634080076358511276617829524639455399182e-17"), + boost::lexical_cast("0.6290035083727140966418512608156646142409e-20"), + boost::lexical_cast("0.339652245667538733044036638506893821352e-23"), + boost::lexical_cast("0.9017518064256388530773585529891677854909e-27") + }; + static const boost::math::ntl::RR Q[61] = { + boost::lexical_cast("0"), + boost::lexical_cast("0.1386831185456898357379390197203894063459e81"), + boost::lexical_cast("0.6467076379487574703291056110838151259438e81"), + boost::lexical_cast("0.1394967823848615838336194279565285465161e82"), + boost::lexical_cast("0.1872927317344192945218570366455046340458e82"), + boost::lexical_cast("0.1772461045338946243584650759986310355937e82"), + boost::lexical_cast("0.1267294892200258648315971144069595555118e82"), + boost::lexical_cast("0.7157764838362416821508872117623058626589e81"), + boost::lexical_cast("0.329447266909948668265277828268378274513e81"), + boost::lexical_cast("0.1264376077317689779509250183194342571207e81"), + boost::lexical_cast("0.4118230304191980787640446056583623228873e80"), + boost::lexical_cast("0.1154393529762694616405952270558316515261e80"), + boost::lexical_cast("0.281655612889423906125295485693696744275e79"), + boost::lexical_cast("0.6037483524928743102724159846414025482077e78"), + boost::lexical_cast("0.1145927995397835468123576831800276999614e78"), + boost::lexical_cast("0.1938624296151985600348534009382865995154e77"), + boost::lexical_cast("0.293980925856227626211879961219188406675e76"), + boost::lexical_cast("0.4015574518216966910319562902099567437832e75"), + boost::lexical_cast("0.4961475457509727343545565970423431880907e74"), + boost::lexical_cast("0.5565482348278933960215521991000378896338e73"), + boost::lexical_cast("0.5686112924615820754631098622770303094938e72"), + boost::lexical_cast("0.5305988545844796293285410303747469932856e71"), + boost::lexical_cast("0.4533363413802585060568537458067343491358e70"), + boost::lexical_cast("0.3553932059473516064068322757331575565718e69"), + boost::lexical_cast("0.2561198565218704414618802902533972354203e68"), + boost::lexical_cast("0.1699519313292900324098102065697454295572e67"), + boost::lexical_cast("0.1039830160862334505389615281373574959236e66"), + boost::lexical_cast("0.5873082967977428281000961954715372504986e64"), + boost::lexical_cast("0.3065255179030575882202133042549783442446e63"), + boost::lexical_cast("0.1479494813481364701208655943688307245459e62"), + boost::lexical_cast("0.6608150467921598615495180659808895663164e60"), + boost::lexical_cast("0.2732535313770902021791888953487787496976e59"), + boost::lexical_cast("0.1046402297662493314531194338414508049069e58"), + boost::lexical_cast("0.3711375077192882936085049147920021549622e56"), + boost::lexical_cast("0.1219154482883895482637944309702972234576e55"), + boost::lexical_cast("0.3708359374149458741391374452286837880162e53"), + boost::lexical_cast("0.1044095509971707189716913168889769471468e52"), + boost::lexical_cast("0.271951506225063286130946773813524945052e50"), + boost::lexical_cast("0.6548016291215163843464133978454065823866e48"), + boost::lexical_cast("0.1456062447610542135403751730809295219344e47"), + boost::lexical_cast("0.2986690175077969760978388356833006028929e45"), + boost::lexical_cast("5643149706574013350061247429006443326844000"), + boost::lexical_cast("98047545414467090421964387960743688053480"), + boost::lexical_cast("1563378767746846395507385099301468978550"), + boost::lexical_cast("22823360528584500077862274918382796495"), + boost::lexical_cast("304215527004115213046601295970388750"), + boost::lexical_cast("3690289075895685793844344966820325"), + boost::lexical_cast("40584512015702371433911456606050"), + boost::lexical_cast("402834190897282802772754873905"), + boost::lexical_cast("3589522158493606918146495750"), + boost::lexical_cast("28530557707503483723634725"), + boost::lexical_cast("200714561335055753000730"), + boost::lexical_cast("1237953783437761888641"), + boost::lexical_cast("6614698701445762950"), + boost::lexical_cast("30155495647727505"), + boost::lexical_cast("114953256021450"), + boost::lexical_cast("356398020013"), + boost::lexical_cast("863113950"), + boost::lexical_cast("1531345"), + boost::lexical_cast("1770"), + boost::lexical_cast("1") + }; + static const boost::math::ntl::RR PD[60] = { + boost::lexical_cast("0.6365271516829242456324234577164675383137e81"), + 2*boost::lexical_cast("0.2991038873096202943405966144203628966976e81"), + 3*boost::lexical_cast("0.9211116495503170498076013367421231351115e80"), + 4*boost::lexical_cast("0.2090792764676090716286400360584443891749e80"), + 5*boost::lexical_cast("0.3730037777359591428226035156377978092809e79"), + 6*boost::lexical_cast("0.5446396536956682043376492370432031543834e78"), + 7*boost::lexical_cast("0.6692523966335177847425047827449069256345e77"), + 8*boost::lexical_cast("0.7062543624100864681625612653756619116848e76"), + 9*boost::lexical_cast("0.6499914905966283735005256964443226879158e75"), + 10*boost::lexical_cast("0.5280364564853225211197557708655426736091e74"), + 11*boost::lexical_cast("0.3823205608981176913075543599005095206953e73"), + 12*boost::lexical_cast("0.2486733714214237704739129972671154532415e72"), + 13*boost::lexical_cast("0.1462562139602039577983434547171318011675e71"), + 14*boost::lexical_cast("0.7821169065036815012381267259559910324285e69"), + 15*boost::lexical_cast("0.3820552182348155468636157988764435365078e68"), + 16*boost::lexical_cast("0.1711618296983598244658239925535632505062e67"), + 17*boost::lexical_cast("0.7056661618357643731419080738521475204245e65"), + 18*boost::lexical_cast("0.2685246896473614017356264531791459936036e64"), + 19*boost::lexical_cast("0.9455168125599643085283071944864977592391e62"), + 20*boost::lexical_cast("0.3087541626972538362237309145177486236219e61"), + 21*boost::lexical_cast("0.9367928873352980208052601301625005737407e59"), + 22*boost::lexical_cast("0.2645306130689794942883818547314327466007e58"), + 23*boost::lexical_cast("0.6961815141171454309161007351079576190079e56"), + 24*boost::lexical_cast("0.1709637824471794552313802669803885946843e55"), + 25*boost::lexical_cast("0.3921553258481531526663112728778759311158e53"), + 26*boost::lexical_cast("0.8409006354449988687714450897575728228696e51"), + 27*boost::lexical_cast("0.1686755204461325935742097669030363344927e50"), + 28*boost::lexical_cast("0.3166653542877070999007425197729038754254e48"), + 29*boost::lexical_cast("0.5566029092358215049069560272835654229637e46"), + 30*boost::lexical_cast("0.9161766287916328133080586672953875116242e44"), + 31*boost::lexical_cast("1412317772330871298317974693514430627922000"), + 32*boost::lexical_cast("20387991986727877473732570146112459874790"), + 33*boost::lexical_cast("275557928713904105182512535678580359839.3"), + 34*boost::lexical_cast("3485719851040516559072031256589598330.723"), + 35*boost::lexical_cast("41247046743564028399938106707656877.40859"), + 36*boost::lexical_cast("456274078125709314602601667471879.0147312"), + 37*boost::lexical_cast("4714450683242899367025707077155.310613012"), + 38*boost::lexical_cast("45453933537925041680009544258.75073849996"), + 39*boost::lexical_cast("408437900487067278846361972.302331241052"), + 40*boost::lexical_cast("3415719344386166273085838.705771571751035"), + 41*boost::lexical_cast("26541502879185876562320.93134691487351145"), + 42*boost::lexical_cast("191261415065918713661.1571433274648417668"), + 43*boost::lexical_cast("1275349770108718421.645275944284937551702"), + 44*boost::lexical_cast("7849171120971773.318910987434906905704272"), + 45*boost::lexical_cast("44455946386549.80866460312682983576538056"), + 46*boost::lexical_cast("230920362395.3198137186361608905136598046"), + 47*boost::lexical_cast("1095700096.240863858624279930600654130254"), + 48*boost::lexical_cast("4727085.467506050153744334085516289728134"), + 49*boost::lexical_cast("18440.75118859447173303252421991479005424"), + 50*boost::lexical_cast("64.62515887799460295677071749181651317052"), + 51*boost::lexical_cast("0.201851568864688406206528472883512147547"), + 52*boost::lexical_cast("0.0005565091674187978029138500039504078098143"), + 53*boost::lexical_cast("0.1338097668312907986354698683493366559613e-5"), + 54*boost::lexical_cast("0.276308225077464312820179030238305271638e-8"), + 55*boost::lexical_cast("0.4801582970473168520375942100071070575043e-11"), + 56*boost::lexical_cast("0.6829184144212920949740376186058541800175e-14"), + 57*boost::lexical_cast("0.7634080076358511276617829524639455399182e-17"), + 58*boost::lexical_cast("0.6290035083727140966418512608156646142409e-20"), + 59*boost::lexical_cast("0.339652245667538733044036638506893821352e-23"), + 60*boost::lexical_cast("0.9017518064256388530773585529891677854909e-27") + }; + static const boost::math::ntl::RR QD[60] = { + boost::lexical_cast("0.1386831185456898357379390197203894063459e81"), + 2*boost::lexical_cast("0.6467076379487574703291056110838151259438e81"), + 3*boost::lexical_cast("0.1394967823848615838336194279565285465161e82"), + 4*boost::lexical_cast("0.1872927317344192945218570366455046340458e82"), + 5*boost::lexical_cast("0.1772461045338946243584650759986310355937e82"), + 6*boost::lexical_cast("0.1267294892200258648315971144069595555118e82"), + 7*boost::lexical_cast("0.7157764838362416821508872117623058626589e81"), + 8*boost::lexical_cast("0.329447266909948668265277828268378274513e81"), + 9*boost::lexical_cast("0.1264376077317689779509250183194342571207e81"), + 10*boost::lexical_cast("0.4118230304191980787640446056583623228873e80"), + 11*boost::lexical_cast("0.1154393529762694616405952270558316515261e80"), + 12*boost::lexical_cast("0.281655612889423906125295485693696744275e79"), + 13*boost::lexical_cast("0.6037483524928743102724159846414025482077e78"), + 14*boost::lexical_cast("0.1145927995397835468123576831800276999614e78"), + 15*boost::lexical_cast("0.1938624296151985600348534009382865995154e77"), + 16*boost::lexical_cast("0.293980925856227626211879961219188406675e76"), + 17*boost::lexical_cast("0.4015574518216966910319562902099567437832e75"), + 18*boost::lexical_cast("0.4961475457509727343545565970423431880907e74"), + 19*boost::lexical_cast("0.5565482348278933960215521991000378896338e73"), + 20*boost::lexical_cast("0.5686112924615820754631098622770303094938e72"), + 21*boost::lexical_cast("0.5305988545844796293285410303747469932856e71"), + 22*boost::lexical_cast("0.4533363413802585060568537458067343491358e70"), + 23*boost::lexical_cast("0.3553932059473516064068322757331575565718e69"), + 24*boost::lexical_cast("0.2561198565218704414618802902533972354203e68"), + 25*boost::lexical_cast("0.1699519313292900324098102065697454295572e67"), + 26*boost::lexical_cast("0.1039830160862334505389615281373574959236e66"), + 27*boost::lexical_cast("0.5873082967977428281000961954715372504986e64"), + 28*boost::lexical_cast("0.3065255179030575882202133042549783442446e63"), + 29*boost::lexical_cast("0.1479494813481364701208655943688307245459e62"), + 30*boost::lexical_cast("0.6608150467921598615495180659808895663164e60"), + 31*boost::lexical_cast("0.2732535313770902021791888953487787496976e59"), + 32*boost::lexical_cast("0.1046402297662493314531194338414508049069e58"), + 33*boost::lexical_cast("0.3711375077192882936085049147920021549622e56"), + 34*boost::lexical_cast("0.1219154482883895482637944309702972234576e55"), + 35*boost::lexical_cast("0.3708359374149458741391374452286837880162e53"), + 36*boost::lexical_cast("0.1044095509971707189716913168889769471468e52"), + 37*boost::lexical_cast("0.271951506225063286130946773813524945052e50"), + 38*boost::lexical_cast("0.6548016291215163843464133978454065823866e48"), + 39*boost::lexical_cast("0.1456062447610542135403751730809295219344e47"), + 40*boost::lexical_cast("0.2986690175077969760978388356833006028929e45"), + 41*boost::lexical_cast("5643149706574013350061247429006443326844000"), + 42*boost::lexical_cast("98047545414467090421964387960743688053480"), + 43*boost::lexical_cast("1563378767746846395507385099301468978550"), + 44*boost::lexical_cast("22823360528584500077862274918382796495"), + 45*boost::lexical_cast("304215527004115213046601295970388750"), + 46*boost::lexical_cast("3690289075895685793844344966820325"), + 47*boost::lexical_cast("40584512015702371433911456606050"), + 48*boost::lexical_cast("402834190897282802772754873905"), + 49*boost::lexical_cast("3589522158493606918146495750"), + 50*boost::lexical_cast("28530557707503483723634725"), + 51*boost::lexical_cast("200714561335055753000730"), + 52*boost::lexical_cast("1237953783437761888641"), + 53*boost::lexical_cast("6614698701445762950"), + 54*boost::lexical_cast("30155495647727505"), + 55*boost::lexical_cast("114953256021450"), + 56*boost::lexical_cast("356398020013"), + 57*boost::lexical_cast("863113950"), + 58*boost::lexical_cast("1531345"), + 59*boost::lexical_cast("1770"), + 60*boost::lexical_cast("1") + }; + static const double g = 63.192152; + + boost::math::ntl::RR zgh = x + g - 0.5; + + boost::math::ntl::RR result = (x - 0.5) / zgh; + result += log(zgh); + result += tools::evaluate_polynomial(PD, x) / tools::evaluate_polynomial(P, x); + result -= tools::evaluate_polynomial(QD, x) / tools::evaluate_polynomial(Q, x); + result -= 1; + + return result; +} + +boost::math::ntl::RR digamma(boost::math::ntl::RR x) +{ + if(x < 0) + { + return digamma_imp(1-x) + constants::pi() / tan(constants::pi() * (1-x)); + } + return digamma_imp(x); +} + +}} + +#endif // include guard diff --git a/tools/ntl_rr_lanczos.hpp b/tools/ntl_rr_lanczos.hpp new file mode 100644 index 000000000..750d87c22 --- /dev/null +++ b/tools/ntl_rr_lanczos.hpp @@ -0,0 +1,902 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_LARGE_LANCZOS_HPP +#define BOOST_LARGE_LANCZOS_HPP + +#include +#include +#include + +struct lanczos13UDT +{ + template + static T lanczos_sum(const T& z) + { + static const T num[13] = { + boost::lexical_cast("44012138428004.60895436261759919070125699"), + boost::lexical_cast("41590453358593.20051581730723108131357995"), + boost::lexical_cast("18013842787117.99677796276038389462742949"), + boost::lexical_cast("4728736263475.388896889723995205703970787"), + boost::lexical_cast("837910083628.4046470415724300225777912264"), + boost::lexical_cast("105583707273.4299344907359855510105321192"), + boost::lexical_cast("9701363618.494999493386608345339104922694"), + boost::lexical_cast("654914397.5482052641016767125048538245644"), + boost::lexical_cast("32238322.94213356530668889463945849409184"), + boost::lexical_cast("1128514.219497091438040721811544858643121"), + boost::lexical_cast("26665.79378459858944762533958798805525125"), + boost::lexical_cast("381.8801248632926870394389468349331394196"), + boost::lexical_cast("2.506628274631000502415763426076722427007"), + }; + static const boost::uint32_t denom[13] = { + static_cast(0u), + static_cast(39916800u), + static_cast(120543840u), + static_cast(150917976u), + static_cast(105258076u), + static_cast(45995730u), + static_cast(13339535u), + static_cast(2637558u), + static_cast(357423u), + static_cast(32670u), + static_cast(1925u), + static_cast(66u), + static_cast(1u), + }; + return boost::math::tools::evaluate_rational(num, denom, z, 13); + } + + template + static T lanczos_sum_expG_scaled(const T& z) + { + static const T num[13] = { + boost::lexical_cast("86091529.53418537217994842267760536134841"), + boost::lexical_cast("81354505.17858011242874285785316135398567"), + boost::lexical_cast("35236626.38815461910817650960734605416521"), + boost::lexical_cast("9249814.988024471294683815872977672237195"), + boost::lexical_cast("1639024.216687146960253839656643518985826"), + boost::lexical_cast("206530.8157641225032631778026076868855623"), + boost::lexical_cast("18976.70193530288915698282139308582105936"), + boost::lexical_cast("1281.068909912559479885759622791374106059"), + boost::lexical_cast("63.06093343420234536146194868906771599354"), + boost::lexical_cast("2.207470909792527638222674678171050209691"), + boost::lexical_cast("0.05216058694613505427476207805814960742102"), + boost::lexical_cast("0.0007469903808915448316510079585999893674101"), + boost::lexical_cast("0.4903180573459871862552197089738373164184e-5"), + }; + static const boost::uint32_t denom[13] = { + static_cast(0u), + static_cast(39916800u), + static_cast(120543840u), + static_cast(150917976u), + static_cast(105258076u), + static_cast(45995730u), + static_cast(13339535u), + static_cast(2637558u), + static_cast(357423u), + static_cast(32670u), + static_cast(1925u), + static_cast(66u), + static_cast(1u), + }; + return boost::math::tools::evaluate_rational(num, denom, z, 13); + } + + + template + static T lanczos_sum_near_1(const T& dz) + { + static const T d[12] = { + boost::lexical_cast("4.832115561461656947793029596285626840312"), + boost::lexical_cast("-19.86441536140337740383120735104359034688"), + boost::lexical_cast("33.9927422807443239927197864963170585331"), + boost::lexical_cast("-31.41520692249765980987427413991250886138"), + boost::lexical_cast("17.0270866009599345679868972409543597821"), + boost::lexical_cast("-5.5077216950865501362506920516723682167"), + boost::lexical_cast("1.037811741948214855286817963800439373362"), + boost::lexical_cast("-0.106640468537356182313660880481398642811"), + boost::lexical_cast("0.005276450526660653288757565778182586742831"), + boost::lexical_cast("-0.0001000935625597121545867453746252064770029"), + boost::lexical_cast("0.462590910138598083940803704521211569234e-6"), + boost::lexical_cast("-0.1735307814426389420248044907765671743012e-9"), + }; + T result = 0; + for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(k*dz + k*k); + } + return result; + } + + template + static T lanczos_sum_near_2(const T& dz) + { + static const T d[12] = { + boost::lexical_cast("26.96979819614830698367887026728396466395"), + boost::lexical_cast("-110.8705424709385114023884328797900204863"), + boost::lexical_cast("189.7258846119231466417015694690434770085"), + boost::lexical_cast("-175.3397202971107486383321670769397356553"), + boost::lexical_cast("95.03437648691551457087250340903980824948"), + boost::lexical_cast("-30.7406022781665264273675797983497141978"), + boost::lexical_cast("5.792405601630517993355102578874590410552"), + boost::lexical_cast("-0.5951993240669148697377539518639997795831"), + boost::lexical_cast("0.02944979359164017509944724739946255067671"), + boost::lexical_cast("-0.0005586586555377030921194246330399163602684"), + boost::lexical_cast("0.2581888478270733025288922038673392636029e-5"), + boost::lexical_cast("-0.9685385411006641478305219367315965391289e-9"), + }; + T result = 0; + T z = dz + 2; + for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(z + k*z + k*k - 1); + } + return result; + } + + static double g(){ return 13.1445650000000000545696821063756942749; } +}; + + +// +// Lanczos Coefficients for N=22 G=22.61891 +// Max experimental error (with arbitary precision arithmetic) 2.9524e-38 +// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at Mar 23 2006 +// +struct lanczos22UDT +{ + template + static T lanczos_sum(const T& z) + { + static const T num[22] = { + boost::lexical_cast("46198410803245094237463011094.12173081986"), + boost::lexical_cast("43735859291852324413622037436.321513777"), + boost::lexical_cast("19716607234435171720534556386.97481377748"), + boost::lexical_cast("5629401471315018442177955161.245623932129"), + boost::lexical_cast("1142024910634417138386281569.245580222392"), + boost::lexical_cast("175048529315951173131586747.695329230778"), + boost::lexical_cast("21044290245653709191654675.41581372963167"), + boost::lexical_cast("2033001410561031998451380.335553678782601"), + boost::lexical_cast("160394318862140953773928.8736211601848891"), + boost::lexical_cast("10444944438396359705707.48957290388740896"), + boost::lexical_cast("565075825801617290121.1466393747967538948"), + boost::lexical_cast("25475874292116227538.99448534450411942597"), + boost::lexical_cast("957135055846602154.6720835535232270205725"), + boost::lexical_cast("29874506304047462.23662392445173880821515"), + boost::lexical_cast("769651310384737.2749087590725764959689181"), + boost::lexical_cast("16193289100889.15989633624378404096011797"), + boost::lexical_cast("273781151680.6807433264462376754578933261"), + boost::lexical_cast("3630485900.32917021712188739762161583295"), + boost::lexical_cast("36374352.05577334277856865691538582936484"), + boost::lexical_cast("258945.7742115532455441786924971194951043"), + boost::lexical_cast("1167.501919472435718934219997431551246996"), + boost::lexical_cast("2.50662827463100050241576528481104525333"), + }; + static const boost::uint64_t denom[22] = { + (0uLL), + (2432902008176640000uLL), + (8752948036761600000uLL), + (13803759753640704000uLL), + (12870931245150988800uLL), + (8037811822645051776uLL), + (3599979517947607200uLL), + (1206647803780373360uLL), + (311333643161390640uLL), + (63030812099294896uLL), + (10142299865511450uLL), + (1307535010540395uLL), + (135585182899530uLL), + (11310276995381uLL), + (756111184500uLL), + (40171771630uLL), + (1672280820uLL), + (53327946uLL), + (1256850uLL), + (20615uLL), + (210uLL), + (1uLL), + }; + return boost::math::tools::evaluate_rational(num, denom, z, 22); + } + + template + static T lanczos_sum_expG_scaled(const T& z) + { + static const T num[22] = { + boost::lexical_cast("6939996264376682180.277485395074954356211"), + boost::lexical_cast("6570067992110214451.87201438870245659384"), + boost::lexical_cast("2961859037444440551.986724631496417064121"), + boost::lexical_cast("845657339772791245.3541226499766163431651"), + boost::lexical_cast("171556737035449095.2475716923888737881837"), + boost::lexical_cast("26296059072490867.7822441885603400926007"), + boost::lexical_cast("3161305619652108.433798300149816829198706"), + boost::lexical_cast("305400596026022.4774396904484542582526472"), + boost::lexical_cast("24094681058862.55120507202622377623528108"), + boost::lexical_cast("1569055604375.919477574824168939428328839"), + boost::lexical_cast("84886558909.02047889339710230696942513159"), + boost::lexical_cast("3827024985.166751989686050643579753162298"), + boost::lexical_cast("143782298.9273215199098728674282885500522"), + boost::lexical_cast("4487794.24541641841336786238909171265944"), + boost::lexical_cast("115618.2025760830513505888216285273541959"), + boost::lexical_cast("2432.580773108508276957461757328744780439"), + boost::lexical_cast("41.12782532742893597168530008461874360191"), + boost::lexical_cast("0.5453771709477689805460179187388702295792"), + boost::lexical_cast("0.005464211062612080347167337964166505282809"), + boost::lexical_cast("0.388992321263586767037090706042788910953e-4"), + boost::lexical_cast("0.1753839324538447655939518484052327068859e-6"), + boost::lexical_cast("0.3765495513732730583386223384116545391759e-9"), + }; + static const boost::uint64_t denom[22] = { + (0uLL), + (2432902008176640000uLL), + (8752948036761600000uLL), + (13803759753640704000uLL), + (12870931245150988800uLL), + (8037811822645051776uLL), + (3599979517947607200uLL), + (1206647803780373360uLL), + (311333643161390640uLL), + (63030812099294896uLL), + (10142299865511450uLL), + (1307535010540395uLL), + (135585182899530uLL), + (11310276995381uLL), + (756111184500uLL), + (40171771630uLL), + (1672280820uLL), + (53327946uLL), + (1256850uLL), + (20615uLL), + (210uLL), + (1uLL), + }; + return boost::math::tools::evaluate_rational(num, denom, z, 22); + } + + + template + static T lanczos_sum_near_1(const T& dz) + { + static const T d[21] = { + boost::lexical_cast("8.318998691953337183034781139546384476554"), + boost::lexical_cast("-63.15415991415959158214140353299240638675"), + boost::lexical_cast("217.3108224383632868591462242669081540163"), + boost::lexical_cast("-448.5134281386108366899784093610397354889"), + boost::lexical_cast("619.2903759363285456927248474593012711346"), + boost::lexical_cast("-604.1630177420625418522025080080444177046"), + boost::lexical_cast("428.8166750424646119935047118287362193314"), + boost::lexical_cast("-224.6988753721310913866347429589434550302"), + boost::lexical_cast("87.32181627555510833499451817622786940961"), + boost::lexical_cast("-25.07866854821128965662498003029199058098"), + boost::lexical_cast("5.264398125689025351448861011657789005392"), + boost::lexical_cast("-0.792518936256495243383586076579921559914"), + boost::lexical_cast("0.08317448364744713773350272460937904691566"), + boost::lexical_cast("-0.005845345166274053157781068150827567998882"), + boost::lexical_cast("0.0002599412126352082483326238522490030412391"), + boost::lexical_cast("-0.6748102079670763884917431338234783496303e-5"), + boost::lexical_cast("0.908824383434109002762325095643458603605e-7"), + boost::lexical_cast("-0.5299325929309389890892469299969669579725e-9"), + boost::lexical_cast("0.994306085859549890267983602248532869362e-12"), + boost::lexical_cast("-0.3499893692975262747371544905820891835298e-15"), + boost::lexical_cast("0.7260746353663365145454867069182884694961e-20"), + }; + T result = 0; + for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(k*dz + k*k); + } + return result; + } + + template + static T lanczos_sum_near_2(const T& dz) + { + static const T d[21] = { + boost::lexical_cast("75.39272007105208086018421070699575462226"), + boost::lexical_cast("-572.3481967049935412452681346759966390319"), + boost::lexical_cast("1969.426202741555335078065370698955484358"), + boost::lexical_cast("-4064.74968778032030891520063865996757519"), + boost::lexical_cast("5612.452614138013929794736248384309574814"), + boost::lexical_cast("-5475.357667500026172903620177988213902339"), + boost::lexical_cast("3886.243614216111328329547926490398103492"), + boost::lexical_cast("-2036.382026072125407192448069428134470564"), + boost::lexical_cast("791.3727954936062108045551843636692287652"), + boost::lexical_cast("-227.2808432388436552794021219198885223122"), + boost::lexical_cast("47.70974355562144229897637024320739257284"), + boost::lexical_cast("-7.182373807798293545187073539819697141572"), + boost::lexical_cast("0.7537866989631514559601547530490976100468"), + boost::lexical_cast("-0.05297470142240154822658739758236594717787"), + boost::lexical_cast("0.00235577330936380542539812701472320434133"), + boost::lexical_cast("-0.6115613067659273118098229498679502138802e-4"), + boost::lexical_cast("0.8236417010170941915758315020695551724181e-6"), + boost::lexical_cast("-0.4802628430993048190311242611330072198089e-8"), + boost::lexical_cast("0.9011113376981524418952720279739624707342e-11"), + boost::lexical_cast("-0.3171854152689711198382455703658589996796e-14"), + boost::lexical_cast("0.6580207998808093935798753964580596673177e-19"), + }; + T result = 0; + T z = dz + 2; + for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(z + k*z + k*k - 1); + } + return result; + } + + static double g(){ return 22.61890999999999962710717227309942245483; } +}; + +// +// Lanczos Coefficients for N=31 G=32.08067 +// Max experimental error (with arbitary precision arithmetic) 0.162e-52 +// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at May 9 2006 +// +struct lanczos31UDT +{ + template + static T lanczos_sum(const T& z) + { + static const T num[31] = { + boost::lexical_cast("0.2579646553333513328235723061836959833277e46"), + boost::lexical_cast("0.2444796504337453845497419271639377138264e46"), + boost::lexical_cast("0.1119885499016017172212179730662673475329e46"), + boost::lexical_cast("0.3301983829072723658949204487793889113715e45"), + boost::lexical_cast("0.7041171040503851585152895336505379417066e44"), + boost::lexical_cast("0.1156687509001223855125097826246939403504e44"), + boost::lexical_cast("1522559363393940883866575697565974893306000"), + boost::lexical_cast("164914363507650839510801418717701057005700"), + boost::lexical_cast("14978522943127593263654178827041568394060"), + boost::lexical_cast("1156707153701375383907746879648168666774"), + boost::lexical_cast("76739431129980851159755403434593664173.2"), + boost::lexical_cast("4407916278928188620282281495575981079.306"), + boost::lexical_cast("220487883931812802092792125175269667.3004"), + boost::lexical_cast("9644828280794966468052381443992828.433924"), + boost::lexical_cast("369996467042247229310044531282837.6549068"), + boost::lexical_cast("12468380890717344610932904378961.13494291"), + boost::lexical_cast("369289245210898235894444657859.0529720075"), + boost::lexical_cast("9607992460262594951559461829.34885209022"), + boost::lexical_cast("219225935074853412540086410.981421315799"), + boost::lexical_cast("4374309943598658046326340.720767382079549"), + boost::lexical_cast("76008779092264509404014.10530947173485581"), + boost::lexical_cast("1143503533822162444712.335663112617754987"), + boost::lexical_cast("14779233719977576920.37884890049671578409"), + boost::lexical_cast("162409028440678302.9992838032166348069916"), + boost::lexical_cast("1496561553388385.733407609544964535634135"), + boost::lexical_cast("11347624460661.81008311053190661436107043"), + boost::lexical_cast("68944915931.32004991941950530448472223832"), + boost::lexical_cast("322701221.6391432296123937035480931903651"), + boost::lexical_cast("1092364.213992634267819050120261755371294"), + boost::lexical_cast("2380.151399852411512711176940867823024864"), + boost::lexical_cast("2.506628274631000502415765284811045253007"), + }; + static const T denom[31] = { + boost::lexical_cast("0"), + boost::lexical_cast("0.8841761993739701954543616e31"), + boost::lexical_cast("0.3502799997985980526649278464e32"), + boost::lexical_cast("0.622621928420356134910574592e32"), + boost::lexical_cast("66951000306085302338993639424000"), + boost::lexical_cast("49361465831621147825759587123200"), + boost::lexical_cast("26751280755793398822580822142976"), + boost::lexical_cast("11139316913434780466101123891200"), + boost::lexical_cast("3674201658710345201899117607040"), + boost::lexical_cast("981347603630155088295475765440"), + boost::lexical_cast("215760462268683520394805979744"), + boost::lexical_cast("39539238727270799376544542000"), + boost::lexical_cast("6097272817323042122728617800"), + boost::lexical_cast("796974693974455191377937300"), + boost::lexical_cast("88776380550648116217781890"), + boost::lexical_cast("8459574446076318147830625"), + boost::lexical_cast("691254538651580660999025"), + boost::lexical_cast("48487623689430693038025"), + boost::lexical_cast("2918939500751087661105"), + boost::lexical_cast("150566737512021319125"), + boost::lexical_cast("6634460278534540725"), + boost::lexical_cast("248526574856284725"), + boost::lexical_cast("7860403394108265"), + boost::lexical_cast("207912996295875"), + boost::lexical_cast("4539323721075"), + boost::lexical_cast("80328850875"), + boost::lexical_cast("1122686019"), + boost::lexical_cast("11921175"), + boost::lexical_cast("90335"), + boost::lexical_cast("435"), + boost::lexical_cast("1"), + }; + return boost::math::tools::evaluate_rational(num, denom, z, 31); + } + + template + static T lanczos_sum_expG_scaled(const T& z) + { + static const T num[31] = { + boost::lexical_cast("30137154810677525966583148469478.52374216"), + boost::lexical_cast("28561746428637727032849890123131.36314653"), + boost::lexical_cast("13083250730789213354063781611435.74046294"), + boost::lexical_cast("3857598154697777600846539129354.783647"), + boost::lexical_cast("822596651552555685068015316144.0952185852"), + boost::lexical_cast("135131964033213842052904200372.039133532"), + boost::lexical_cast("17787555889683709693655685146.19771358863"), + boost::lexical_cast("1926639793777927562221423874.149673297196"), + boost::lexical_cast("174989113988888477076973808.6991839697774"), + boost::lexical_cast("13513425905835560387095425.01158383184045"), + boost::lexical_cast("896521313378762433091075.1446749283094845"), + boost::lexical_cast("51496223433749515758124.71524415105430686"), + boost::lexical_cast("2575886794780078381228.37205955912263407"), + boost::lexical_cast("112677328855422964200.4155776009524490958"), + boost::lexical_cast("4322545967487943330.625233358130724324796"), + boost::lexical_cast("145663957202380774.0362027607207590519723"), + boost::lexical_cast("4314283729473470.686566233465428332496534"), + boost::lexical_cast("112246988185485.8877916434026906290603878"), + boost::lexical_cast("2561143864972.040563435178307062626388193"), + boost::lexical_cast("51103611767.9626550674442537989885239605"), + boost::lexical_cast("887985348.0369447209508500133077232094491"), + boost::lexical_cast("13359172.3954672607019822025834072685839"), + boost::lexical_cast("172660.8841147568768783928167105965064459"), + boost::lexical_cast("1897.370795407433013556725714874693719617"), + boost::lexical_cast("17.48383210090980598861217644749573257178"), + boost::lexical_cast("0.1325705316732132940835251054350153028901"), + boost::lexical_cast("0.0008054605783673449641889260501816356090452"), + boost::lexical_cast("0.377001130700104515644336869896819162464e-5"), + boost::lexical_cast("0.1276172868883867038813825443204454996531e-7"), + boost::lexical_cast("0.2780651912081116274907381023821492811093e-10"), + boost::lexical_cast("0.2928410648650955854121639682890739211234e-13"), + }; + static const T denom[31] = { + boost::lexical_cast("0"), + boost::lexical_cast("0.8841761993739701954543616e31"), + boost::lexical_cast("0.3502799997985980526649278464e32"), + boost::lexical_cast("0.622621928420356134910574592e32"), + boost::lexical_cast("66951000306085302338993639424000"), + boost::lexical_cast("49361465831621147825759587123200"), + boost::lexical_cast("26751280755793398822580822142976"), + boost::lexical_cast("11139316913434780466101123891200"), + boost::lexical_cast("3674201658710345201899117607040"), + boost::lexical_cast("981347603630155088295475765440"), + boost::lexical_cast("215760462268683520394805979744"), + boost::lexical_cast("39539238727270799376544542000"), + boost::lexical_cast("6097272817323042122728617800"), + boost::lexical_cast("796974693974455191377937300"), + boost::lexical_cast("88776380550648116217781890"), + boost::lexical_cast("8459574446076318147830625"), + boost::lexical_cast("691254538651580660999025"), + boost::lexical_cast("48487623689430693038025"), + boost::lexical_cast("2918939500751087661105"), + boost::lexical_cast("150566737512021319125"), + boost::lexical_cast("6634460278534540725"), + boost::lexical_cast("248526574856284725"), + boost::lexical_cast("7860403394108265"), + boost::lexical_cast("207912996295875"), + boost::lexical_cast("4539323721075"), + boost::lexical_cast("80328850875"), + boost::lexical_cast("1122686019"), + boost::lexical_cast("11921175"), + boost::lexical_cast("90335"), + boost::lexical_cast("435"), + boost::lexical_cast("1"), + }; + return boost::math::tools::evaluate_rational(num, denom, z, 31); + } + + + template + static T lanczos_sum_near_1(const T& dz) + { + static const T d[30] = { + boost::lexical_cast("11.80038544942943603508206880307972596807"), + boost::lexical_cast("-130.6355975335626214564236363322099481079"), + boost::lexical_cast("676.2177719145993049893392276809256538927"), + boost::lexical_cast("-2174.724497783850503069990936574060452057"), + boost::lexical_cast("4869.877180638131076410069103742986502022"), + boost::lexical_cast("-8065.744271864238179992762265472478229172"), + boost::lexical_cast("10245.03825618572106228191509520638651539"), + boost::lexical_cast("-10212.83902362683215459850403668669647192"), + boost::lexical_cast("8110.289185383288952562767679576754140336"), + boost::lexical_cast("-5179.310892558291062401828964000776095156"), + boost::lexical_cast("2673.987492589052370230989109591011091273"), + boost::lexical_cast("-1118.342574651205183051884250033505609141"), + boost::lexical_cast("378.5812742511620662650096436471920295596"), + boost::lexical_cast("-103.3725999812126067084828735543906768961"), + boost::lexical_cast("22.62913974335996321848099677797888917792"), + boost::lexical_cast("-3.936414819950859548507275533569588041446"), + boost::lexical_cast("0.5376818198843817355682124535902641644854"), + boost::lexical_cast("-0.0567827903603478957483409124122554243201"), + boost::lexical_cast("0.004545544993648879420352693271088478106482"), + boost::lexical_cast("-0.0002689795568951033950042375135970897959935"), + boost::lexical_cast("0.1139493459006846530734617710847103572122e-4"), + boost::lexical_cast("-0.3316581197839213921885210451302820192794e-6"), + boost::lexical_cast("0.6285613334898374028443777562554713906213e-8"), + boost::lexical_cast("-0.7222145115734409070310317999856424167091e-10"), + boost::lexical_cast("0.4562976983547274766890241815002584238219e-12"), + boost::lexical_cast("-0.1380593023819058919640038942493212141072e-14"), + boost::lexical_cast("0.1629663871586410129307496385264268190679e-17"), + boost::lexical_cast("-0.5429994291916548849493889660077076739993e-21"), + boost::lexical_cast("0.2922682842441892106795386303084661338957e-25"), + boost::lexical_cast("-0.8456967065309046044689041041336866118459e-31"), + }; + T result = 0; + for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(k*dz + k*k); + } + return result; + } + + template + static T lanczos_sum_near_2(const T& dz) + { + static const T d[30] = { + boost::lexical_cast("147.9979641587472136175636384176549713358"), + boost::lexical_cast("-1638.404318611773924210055619836375434296"), + boost::lexical_cast("8480.981744216135641122944743711911653273"), + boost::lexical_cast("-27274.93942104458448200467097634494071176"), + boost::lexical_cast("61076.98019918759324489193232276937262854"), + boost::lexical_cast("-101158.8762737154296509560513952101409264"), + boost::lexical_cast("128491.1252383947174824913796141607174379"), + boost::lexical_cast("-128087.2892038336581928787480535905496026"), + boost::lexical_cast("101717.5492545853663296795562084430123258"), + boost::lexical_cast("-64957.8330410311808907869707511362206858"), + boost::lexical_cast("33536.59139229792478811870738772305570317"), + boost::lexical_cast("-14026.01847115365926835980820243003785821"), + boost::lexical_cast("4748.087094096186515212209389240715050212"), + boost::lexical_cast("-1296.477510211815971152205100242259733245"), + boost::lexical_cast("283.8099337545793198947620951499958085157"), + boost::lexical_cast("-49.36969067101255103452092297769364837753"), + boost::lexical_cast("6.743492833270653628580811118017061581404"), + boost::lexical_cast("-0.7121578704864048548351804794951487823626"), + boost::lexical_cast("0.0570092738016915476694118877057948681298"), + boost::lexical_cast("-0.003373485297696102660302960722607722438643"), + boost::lexical_cast("0.0001429128843527532859999752593761934089751"), + boost::lexical_cast("-0.41595867130858508233493767243236888636e-5"), + boost::lexical_cast("0.7883284669307241040059778207492255409785e-7"), + boost::lexical_cast("-0.905786322462384670803148223703187214379e-9"), + boost::lexical_cast("0.5722790216999820323272452464661250331451e-11"), + boost::lexical_cast("-0.1731510870832349779315841757234562309727e-13"), + boost::lexical_cast("0.2043890314358438601429048378015983874378e-16"), + boost::lexical_cast("-0.6810185176079344204740000170500311171065e-20"), + boost::lexical_cast("0.3665567641131713928114853776588342403919e-24"), + boost::lexical_cast("-0.1060655106553177007425710511436497259484e-29"), + }; + T result = 0; + T z = dz + 2; + for(unsigned k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(z + k*z + k*k - 1); + } + return result; + } + + static double g(){ return 32.08066999999999779902282170951366424561; } +}; + +// +// Lanczos Coefficients for N=61 G=63.192152 +// Max experimental error (with 1000-bit precision arithmetic) 3.740e-113 +// Generated with compiler: Microsoft Visual C++ version 8.0 on Win32 at Mar 12 2006 +// +struct lanczos61UDT +{ + template + static T lanczos_sum(const T& z) + { + using namespace boost; + static const T d[61] = { + boost::lexical_cast("2.50662827463100050241576528481104525300698674060993831662992357634229365460784197494659584"), + boost::lexical_cast("13349415823254323512107320481.3495396037261649201426994438803767191136434970492309775123879"), + boost::lexical_cast("-300542621510568204264185787475.230003734889859348050696493467253861933279360152095861484548"), + boost::lexical_cast("3273919938390136737194044982676.40271056035622723775417608127544182097346526115858803376474"), + boost::lexical_cast("-22989594065095806099337396006399.5874206181563663855129141706748733174902067950115092492439"), + boost::lexical_cast("116970582893952893160414263796102.542775878583510989850142808618916073286745084692189044738"), + boost::lexical_cast("-459561969036479455224850813196807.283291532483532558959779434457349912822256480548436066098"), + boost::lexical_cast("1450959909778264914956547227964788.89797179379520834974601372820249784303794436366366810477"), + boost::lexical_cast("-3782846865486775046285288437885921.41537699732805465141128848354901016102326190612528503251"), + boost::lexical_cast("8305043213936355459145388670886540.09976337905520168067329932809302445437208115570138102767"), + boost::lexical_cast("-15580988484396722546934484726970745.4927787160273626078250810989811865283255762028143642311"), + boost::lexical_cast("25262722284076250779006793435537600.0822901485517345545978818780090308947301031347345640449"), + boost::lexical_cast("-35714428027687018805443603728757116.5304655170478705341887572982734901197345415291580897698"), + boost::lexical_cast("44334726194692443174715432419157343.2294160783772787096321009453791271387235388689346602833"), + boost::lexical_cast("-48599573547617297831555162417695106.187829304963846482633791012658974681648157963911491985"), + boost::lexical_cast("47258466493366798944386359199482189.0753349196625125615316002614813737880755896979754845101"), + boost::lexical_cast("-40913448215392412059728312039233342.142914753896559359297977982314043378636755884088383226"), + boost::lexical_cast("31626312914486892948769164616982902.7262756989418188077611392594232674722318027323102462687"), + boost::lexical_cast("-21878079174441332123064991795834438.4699982361692990285700077902601657354101259411789722708"), + boost::lexical_cast("13567268503974326527361474986354265.3136632133935430378937191911532112778452274286122946396"), + boost::lexical_cast("-7551494211746723529747611556474669.62996644923557605747803028485900789337467673523741066527"), + boost::lexical_cast("3775516572689476384052312341432597.70584966904950490541958869730702790312581801585742038997"), + boost::lexical_cast("-1696271471453637244930364711513292.79902955514107737992185368006225264329876265486853482449"), + boost::lexical_cast("684857608019352767999083000986166.20765273693720041519286231015176745354062413008561259139"), + boost::lexical_cast("-248397566275708464679881624417990.410438107634139924805871051723444048539177890346227250473"), + boost::lexical_cast("80880368999557992138783568858556.1512378233079327986518410244522800950609595592170022878937"), + boost::lexical_cast("-23618197945394013802495450485616.9025005749893350650829964098117490779655546610665927669729"), + boost::lexical_cast("6176884636893816103087134481332.06708966653493024119556843727320635285468825056891248447124"), + boost::lexical_cast("-1444348683723439589948246285262.64080678953468490544615312565485170860503207005915261691108"), + boost::lexical_cast("301342031656979076702313946827.961658905182634508217626783081241074250132289461989777865387"), + boost::lexical_cast("-55959656587719766738301589651.3940625826610668990368881615587469329021742236397809951765678"), + boost::lexical_cast("9223339169004064297247180402.36227016155682738556103138196079389248843082157924368301293963"), + boost::lexical_cast("-1344882881571942601385730283.42710150182526891377514071881534880944872423492272147871101373"), + boost::lexical_cast("172841913316760599352601139.54409257740173055624405575900164401527761357324625574736896079"), + boost::lexical_cast("-19496120443876233531343952.3802212016691702737346568192063937387825469602063310488794471653"), + boost::lexical_cast("1920907372583710284097959.44121420322495784420169085871802458519363819782779653621724219067"), + boost::lexical_cast("-164429314798240461613359.399597503536657962383155875723527581699785846599051112719962464604"), + boost::lexical_cast("12154026644351189572525.1452249886865981747374191977801688548318519692423556934568426042152"), + boost::lexical_cast("-770443988366210815096.519382051977221101156336663806705367929328924137169970381042234329058"), + boost::lexical_cast("41558909851418707920.4696085656889424895313728719601503526476333404973280596225722152966128"), + boost::lexical_cast("-1890879946549708819.24562220042687554209318172044783707920086716716717574156283898330017796"), + boost::lexical_cast("71844996557297623.9583461685535340440524052492427928388171299145330229958643439878608673403"), + boost::lexical_cast("-2253785109518255.55600197759875781765803818232939130127735487613049577235879610065545755637"), + boost::lexical_cast("57616883849355.997562563968344493719962252675875692642406455612671495250543228005045106721"), + boost::lexical_cast("-1182495730353.08218118278997948852215670614084013289033222774171548915344541249351599628436"), + boost::lexical_cast("19148649358.6196967288062261380599423925174178776792840639099120170800869284300966978300613"), + boost::lexical_cast("-239779605.891370259668403359614360511661030470269478602533200704639655585967442891496784613"), + boost::lexical_cast("2267583.00284368310957842936892685032434505866445291643236133553754152047677944820353796872"), + boost::lexical_cast("-15749.490806784673108773558070497383604733010677027764233749920147549999361110299643477893"), + boost::lexical_cast("77.7059495149052727171505425584459982871343274332635726864135949842508025564999785370162956"), + boost::lexical_cast("-0.261619987273930331397625130282851629108569607193781378836014468617185550622160348688297247"), + boost::lexical_cast("0.000572252321659691600529444769356185993188551770817110673186068921175991328434642504616377475"), + boost::lexical_cast("-0.765167220661540041663007112207436426423746402583423562585653954743978584117929356523307954e-6"), + boost::lexical_cast("0.579179571056209077507916813937971472839851499147582627425979879366849876944438724610663401e-9"), + boost::lexical_cast("-0.224804733043915149719206760378355636826808754704148660354494460792713189958510735070096991e-12"), + boost::lexical_cast("0.392711975389579343321746945135488409914483448652884894759297584020979857734289645857714768e-16"), + boost::lexical_cast("-0.258603588346412049542768766878162221817684639789901440429511261589010049357907537684380983e-20"), + boost::lexical_cast("0.499992460848751668441190360024540741752242879565548017176883304716370989218399797418478685e-25"), + boost::lexical_cast("-0.196211614533318174187346267877390498735734213905206562766348625767919122511096089367364025e-30"), + boost::lexical_cast("0.874722648949676363732094858062907290148733370978226751462386623191111439121706262759209573e-37"), + boost::lexical_cast("-0.163907874717737848669759890242660846846105433791283903651924563157080252845636658802930428e-44"), + }; + T result = d[0]; + for(int k = 1; k < sizeof(d)/sizeof(d[0]); ++k) + { + result += d[k]/(z+(k-1)); + } + return result; + } + + template + static T lanczos_sum_expG_scaled(const T& z) + { + using namespace boost; + static const T d[61] = { + boost::lexical_cast("0.901751806425638853077358552989167785490911341809902155556127108480303870921448984935411583e-27"), + boost::lexical_cast("4.80241125306810017699523302110401965428995345115391817406006361151407344955277298373661032"), + boost::lexical_cast("-108.119283021710869401330097315436214587270846871451487282117128515476478251641970487922552"), + boost::lexical_cast("1177.78262074811362219818923738088833932279000985161077740440010901595132448469513438139561"), + boost::lexical_cast("-8270.43570321334374279057432173814835581983913167617217749736484999327758232081395983082867"), + boost::lexical_cast("42079.807161997077661752306902088979258826568702655699995911391774839958572703348502730394"), + boost::lexical_cast("-165326.003834443330215001219988296482004968548294447320869281647211603153902436231468280089"), + boost::lexical_cast("521978.361504895300685499370463597042533432134369277742485307843747923127933979566742421213"), + boost::lexical_cast("-1360867.51629992863544553419296636395576666570468519805449755596254912681418267100657262281"), + boost::lexical_cast("2987713.73338656161102517003716335104823650191612448011720936412226357385029800040631754755"), + boost::lexical_cast("-5605212.64915921452169919008770165304171481697939254152852673009005154549681704553438450709"), + boost::lexical_cast("9088186.58332916818449459635132673652700922052988327069535513580836143146727832380184335474"), + boost::lexical_cast("-12848155.5543636394746355365819800465364996596310467415907815393346205151090486190421959769"), + boost::lexical_cast("15949281.2867656960575878805158849857756293807220033618942867694361569866468996967761600898"), + boost::lexical_cast("-17483546.9948295433308250581770557182576171673272450149400973735206019559576269174369907171"), + boost::lexical_cast("17001087.8599749419660906448951424280111036786456594738278573653160553115681287326064596964"), + boost::lexical_cast("-14718487.0643665950346574802384331125115747311674609017568623694516187494204567579595827859"), + boost::lexical_cast("11377468.7255609717716845971105161298889777425898291183866813269222281486121330837791392732"), + boost::lexical_cast("-7870571.64253038587947746661946939286858490057774448573157856145556080330153403858747655263"), + boost::lexical_cast("4880783.08440908743641723492059912671377140680710345996273343885045364205895751515063844239"), + boost::lexical_cast("-2716626.7992639625103140035635916455652302249897918893040695025407382316653674141983775542"), + boost::lexical_cast("1358230.46602865696544327299659410214201327791319846880787515156343361311278133805428800255"), + boost::lexical_cast("-610228.440751458395860905749312275043435828322076830117123636938979942213530882048883969802"), + boost::lexical_cast("246375.416501158654327780901087115642493055617468601787093268312234390446439555559050129729"), + boost::lexical_cast("-89360.2599028475206119333931211015869139511677735549267100272095432140508089207221096740632"), + boost::lexical_cast("29096.4637987498328341260960356772198979319790332957125131055960448759586930781530063775634"), + boost::lexical_cast("-8496.57401431514433694413130585404918350686834939156759654375188338156288564260152505382438"), + boost::lexical_cast("2222.11523574301594407443285016240908726891841242444092960094015874546135316534057865883047"), + boost::lexical_cast("-519.599993280949289705514822058693289933461756514489674453254304308040888101533569480646682"), + boost::lexical_cast("108.406868361306987817730701109400305482972790224573776407166683184990131682003417239181112"), + boost::lexical_cast("-20.1313142142558596796857948064047373605439974799116521459977609253211918146595346493447238"), + boost::lexical_cast("3.31806787671783168020012913552384112429614503798293169239082032849759155847394955909684383"), + boost::lexical_cast("-0.483817477111537877685595212919784447924875428848331771524426361483392903320495411973587861"), + boost::lexical_cast("0.0621793463102927384924303843912913542297042029136293808338022462765755471002366206711862637"), + boost::lexical_cast("-0.00701366932085103924241526535768453911099671087892444015581511551813219720807206445462785293"), + boost::lexical_cast("0.000691040514756294308758606917671220770856269030526647010461217455799229645004351524024364997"), + boost::lexical_cast("-0.591529398871361458428147660822525365922497109038495896497692806150033516658042357799869656e-4"), + boost::lexical_cast("0.437237367535177689875119370170434437030440227275583289093139147244747901678407875809020739e-5"), + boost::lexical_cast("-0.277164853397051135996651958345647824709602266382721185838782221179129726200661453504250697e-6"), + boost::lexical_cast("0.149506899012035980148891401548317536032574502641368034781671941165064546410613201579653674e-7"), + boost::lexical_cast("-0.68023824066463262779882895193964639544061678698791279217407325790147925675797085217462974e-9"), + boost::lexical_cast("0.258460163734186329938721529982859244969655253624066115559707985878606277800329299821882688e-10"), + boost::lexical_cast("-0.810792256024669306744649981276512583535251727474303382740940985102669076169168931092026491e-12"), + boost::lexical_cast("0.207274966207031327521921078048021807442500113231320959236850963529304158700096495799022922e-13"), + boost::lexical_cast("-0.425399199286327802950259994834798737777721414442095221716122926637623478450472871269742436e-15"), + boost::lexical_cast("0.688866766744198529064607574117697940084548375790020728788313274612845280173338912495478431e-17"), + boost::lexical_cast("-0.862599751805643281578607291655858333628582704771553874199104377131082877406179933909898885e-19"), + boost::lexical_cast("0.815756005678735657200275584442908437977926312650210429668619446123450972547018343768177988e-21"), + boost::lexical_cast("-0.566583084099007858124915716926967268295318152203932871370429534546567151650626184750291695e-23"), + boost::lexical_cast("0.279544761599725082805446124351997692260093135930731230328454667675190245860598623539891708e-25"), + boost::lexical_cast("-0.941169851584987983984201821679114408126982142904386301937192011680047611188837432096199601e-28"), + boost::lexical_cast("0.205866011331040736302780507155525142187875191518455173304638008169488993406425201915370746e-30"), + boost::lexical_cast("-0.27526655245712584371295491216289353976964567057707464008951584303679019796521332324352501e-33"), + boost::lexical_cast("0.208358067979444305082929004102609366169534624348056112144990933897581971394396210379638792e-36"), + boost::lexical_cast("-0.808728107661779323263133007119729988596844663194254976820030366188579170595441991680169012e-40"), + boost::lexical_cast("0.141276924383478964519776436955079978012672985961918248012931336621229652792338950573694356e-43"), + boost::lexical_cast("-0.930318449287651389310440021745842417218125582685428432576258687100661462527604238849332053e-48"), + boost::lexical_cast("0.179870748819321661641184169834635133045197146966203370650788171790610563029431722308057539e-52"), + boost::lexical_cast("-0.705865243912790337263229413370018392321238639017433365017168104310561824133229343750737083e-58"), + boost::lexical_cast("0.3146787805734405996448268100558028857930560442377698646099945108125281507396722995748398e-64"), + boost::lexical_cast("-0.589653534231618730406843260601322236697428143603814281282790370329151249078338470962782338e-72"), + }; + T result = d[0]; + for(int k = 1; k < sizeof(d)/sizeof(d[0]); ++k) + { + result += d[k]/(z+(k-1)); + } + return result; + } + + template + static T lanczos_sum_near_1(const T& dz) + { + using namespace boost; + static const T d[60] = { + boost::lexical_cast("23.2463658527729692390378860713647146932236940604550445351214987229819352880524561852919518"), + boost::lexical_cast("-523.358012551815715084547614110229469295755088686612838322817729744722233637819564673967396"), + boost::lexical_cast("5701.12892340421080714956066268650092612647620400476183901625272640935853188559347587495571"), + boost::lexical_cast("-40033.5506451901904954336453419007623117537868026994808919201793803506999271787018654246699"), + boost::lexical_cast("203689.884259074923009439144410340256983393397995558814367995938668111650624499963153485034"), + boost::lexical_cast("-800270.648969745331278757692597096167418585957703057412758177038340791380011708874081291202"), + boost::lexical_cast("2526668.23380061659863999395867315313385499515711742092815402701950519696944982260718031476"), + boost::lexical_cast("-6587362.57559198722630391278043503867973853468105110382293763174847657538179665571836023631"), + boost::lexical_cast("14462211.3454541602975917764900442754186801975533106565506542322063393991552960595701762805"), + boost::lexical_cast("-27132375.1879227404375395522940895789625516798992585980380939378508607160857820002128106898"), + boost::lexical_cast("43991923.8735251977856804364757478459275087361742168436524951824945035673768875988985478116"), + boost::lexical_cast("-62192284.0030124679010201921841372967696262036115679150017649233887633598058364494608060812"), + boost::lexical_cast("77203473.0770033513405070667417251568915937590689150831268228886281254637715669678358204991"), + boost::lexical_cast("-84630180.2217173903516348977915150565994784278120192219937728967986198118628659866582594874"), + boost::lexical_cast("82294807.2253549409847505891112074804416229757832871133388349982640444405470371147991706317"), + boost::lexical_cast("-71245738.2484649177928765605893043553453557808557887270209768163561363857395639001251515788"), + boost::lexical_cast("55073334.3180266913441333534260714059077572215147571872597651029894142803987981342430068594"), + boost::lexical_cast("-38097984.1648990787690036742690550656061009857688125101191167768314179751258568264424911474"), + boost::lexical_cast("23625729.5032184580395130592017474282828236643586203914515183078852982915252442161768527976"), + boost::lexical_cast("-13149998.4348054726172055622442157883429575511528431835657668083088902165366619827169829685"), + boost::lexical_cast("6574597.77221556423683199818131482663205682902023554728024972161230111356285973623550338976"), + boost::lexical_cast("-2953848.1483469149918109110050192571921018042012905892107136410603990336401921230407043408"), + boost::lexical_cast("1192595.29584357246380113611351829515963605337523874715861849584306265512819543347806085356"), + boost::lexical_cast("-432553.812019608638388918135375154289816441900572658692369491476137741687213006403648722272"), + boost::lexical_cast("140843.215385933866391177743292449477205328233960902455943995092958295858485718885800427129"), + boost::lexical_cast("-41128.186992679630058614841985110676526199977321524879849001760603476646382839182691529968"), + boost::lexical_cast("10756.2849191854701631989789887757784944313743544315113894758328432005767448056040879337769"), + boost::lexical_cast("-2515.15559672041299884426826962296210458052543246529646213159169885444118227871246315458787"), + boost::lexical_cast("524.750087004805200600237632074908875763734578390662349666321453103782638818305404274166951"), + boost::lexical_cast("-97.4468596421732493988298219295878130651986131393383646674144877163795143930682205035917965"), + boost::lexical_cast("16.0613108128210806736384551896802799172445298357754547684100294231532127326987175444453058"), + boost::lexical_cast("-2.34194813526540240672426202485306862230641838409943369059203455578340880900483887447559874"), + boost::lexical_cast("0.300982934748016059399829007219431333744032924923669397318820178988611410275964499475465815"), + boost::lexical_cast("-0.033950095985367909789000959795708551814461844488183964432565731809399824963680858993718525"), + boost::lexical_cast("0.00334502394288921146242772614150438404658527112198421937945605441697314216921393987758378122"), + boost::lexical_cast("-0.000286333429067523984607730553301991502191011265745476190940771685897687956262049750683013485"), + boost::lexical_cast("0.211647426149364947402896718485536530479491688838087899435991994237067890628274492042231115e-4"), + boost::lexical_cast("-0.134163345121302758109675190598169832775248626443483098532368562186356128620805552609175683e-5"), + boost::lexical_cast("0.723697303042715085329782938306424498336642078597508935450663080894255773653328980495047891e-7"), + boost::lexical_cast("-0.329273487343139063533251321553223583999676337945788660475231347828772272134656322947906888e-8"), + boost::lexical_cast("0.12510922551028971731767784013117088894558604838820475961392154031378891971216135267744134e-9"), + boost::lexical_cast("-0.392468958215589939603666430583400537413757786057185505426804034745840192914621891690369903e-11"), + boost::lexical_cast("0.100332717101049934370760667782927946803279422001380028508200697081188326364078428184546051e-12"), + boost::lexical_cast("-0.205917088291197705194762747639836655808855850989058813560983717575008725393428497910009756e-14"), + boost::lexical_cast("0.333450178247893143608439314203175490705783992567107481617660357577257627854979230819461489e-16"), + boost::lexical_cast("-0.417546693906616047110563550428133589051498362676394888715581845170969319500638944065594319e-18"), + boost::lexical_cast("0.394871691642184410859178529844325390739857256666676534513661579365702353214518478078730801e-20"), + boost::lexical_cast("-0.274258012587811199757875927548699264063511843669070634471054184977334027224611843434000922e-22"), + boost::lexical_cast("0.135315354265459854889496635967343027244391821142592599244505313738163473730636430399785048e-24"), + boost::lexical_cast("-0.455579032003288910408487905303223613382276173706542364543918076752861628464036586507967767e-27"), + boost::lexical_cast("0.99650703862462739161520123768147312466695159780582506041370833824093136783202694548427718e-30"), + boost::lexical_cast("-0.1332444609228706921659395801935919548447859029572115502899861345555006827214220195650058e-32"), + boost::lexical_cast("0.100856999148765307000182397631280249632761913433008379786888200467467364474581430670889392e-35"), + boost::lexical_cast("-0.39146979455613683472384690509165395074425354524713697428673406058157887065953366609738731e-39"), + boost::lexical_cast("0.683859606707931248105140296850112494069265272540298100341919970496564103098283709868586478e-43"), + boost::lexical_cast("-0.450326344248604222735147147805963966503893913752040066400766411031387063854141246972061792e-47"), + boost::lexical_cast("0.870675378039492904184581895322153006461319724931909799151743284769901586333730037761678891e-52"), + boost::lexical_cast("-0.341678395249272265744518787745356400350877656459401143889000625280131819505857966769964401e-57"), + boost::lexical_cast("0.152322191370871666358069530949353871960316638394428595988162174042653299702098929238880862e-63"), + boost::lexical_cast("-0.285425405297633795767452984791738825078111150078605004958179057245980222485147999495352632e-71"), + }; + T result = 0; + for(int k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(k*dz + k*k); + } + return result; + } + + template + static T lanczos_sum_near_2(const T& dz) + { + using namespace boost; + static const T d[60] = { + boost::lexical_cast("557.56438192770795764344217888434355281097193198928944200046501607026919782564033547346298"), + boost::lexical_cast("-12552.748616427645475141433405567201788681683808077269330800392600825597799119572762385222"), + boost::lexical_cast("136741.650054039199076788077149441364242294724343897779563222338447737802381279007988884806"), + boost::lexical_cast("-960205.223613240309942047656967301131022760634321049075674684679438471862998829007639437133"), + boost::lexical_cast("4885504.47588736223774859617054275229642041717942140469884121916073195308537421162982679289"), + boost::lexical_cast("-19194501.738192166918904824982935279260356575935661514109550613809352009246483412530545583"), + boost::lexical_cast("60602169.8633537742937457094837494059849674261357199218329545854990149896822944801504450843"), + boost::lexical_cast("-157997975.522506767297528502540724511908584668874487506510120462561270100749019845014382885"), + boost::lexical_cast("346876323.86092543685419723290495817330608574729543216092477261152247521712190505658568876"), + boost::lexical_cast("-650770365.471136883718747607976242475416651908858429752332176373467422603953536408709972919"), + boost::lexical_cast("1055146856.05909309330903130910708372830487315684258450293308627289334336871273080305128138"), + boost::lexical_cast("-1491682726.25614447429071368736790697283307005456720192465860871846879804207692411263924608"), + boost::lexical_cast("1851726287.94866167094858600116562210167031458934987154557042242638980748286188183300900268"), + boost::lexical_cast("-2029855953.68334371445800569238095379629407314338521720558391277508374519526853827142679839"), + boost::lexical_cast("1973842002.53354868177824629525448788555435194808657489238517523691040148611221295436287925"), + boost::lexical_cast("-1708829941.98209573247426625323314413060108441455314880934710595647408841619484540679859098"), + boost::lexical_cast("1320934627.12433688699625456833930317624783222321555050330381730035733198249283009357314954"), + boost::lexical_cast("-913780636.858542526294419197161614811332299249415125108737474024007693329922089123296358727"), + boost::lexical_cast("566663423.929632170286007468016419798879660054391183200464733820209439185545886930103546787"), + boost::lexical_cast("-315402880.436816230388857961460509181823167373029384218959199936902955049832392362044305869"), + boost::lexical_cast("157691811.550465734461741500275930418786875005567018699867961482249002625886064187146134966"), + boost::lexical_cast("-70848085.5705405970640618473551954585013808128304384354476488268600720054598122945113512731"), + boost::lexical_cast("28604413.4050137708444142264980840059788755325900041515286382001704951527733220637586013815"), + boost::lexical_cast("-10374808.7067303054787164054055989420809074792801592763124972441820101840292558840131568633"), + boost::lexical_cast("3378126.32016207486657791623723515804931231041318964254116390764473281291389374196880720069"), + boost::lexical_cast("-986460.090390653140964189383080344920103075349535669020623874668558777188889544398718979744"), + boost::lexical_cast("257989.631187387317948158483575125380011593209850756066176921901006833159795100137743395985"), + boost::lexical_cast("-60326.0391159227288325790327830741260824763549807922845004854215660451399733578621565837087"), + boost::lexical_cast("12586.1375399649496159880821645216260841794563919652590583420570326276086323953958907053394"), + boost::lexical_cast("-2337.26417330316922535871922886167444795452055677161063205953141105726549966801856628447293"), + boost::lexical_cast("385.230745012608736644117458716226876976056390433401632749144285378123105481506733917763829"), + boost::lexical_cast("-56.1716559403731491675970177460841997333796694857076749852739159067307309470690838101179615"), + boost::lexical_cast("7.21907953468550196348585224042498727840087634483369357697580053424523903859773769748599575"), + boost::lexical_cast("-0.814293485887386870805786409956942772883474224091975496298369877683530509729332902182019049"), + boost::lexical_cast("0.0802304419995150047616460464220884371214157889148846405799324851793571580868840034085001373"), + boost::lexical_cast("-0.00686771095380619535195996193943858680694970000948742557733102777115482017857981277171196115"), + boost::lexical_cast("0.000507636621977556438232617777542864427109623356049335590894564220687567763620803789858345916"), + boost::lexical_cast("-0.32179095465362720747836116655088181481893063531138957363431280817392443948706754917605911e-4"), + boost::lexical_cast("0.173578890579848508947329833426585354230744194615295570820295052665075101971588563893718407e-5"), + boost::lexical_cast("-0.789762880006288893888161070734302768702358633525134582027140158619195373770299678322596835e-7"), + boost::lexical_cast("0.300074637200885066788470310738617992259402710843493097610337134266720909870967550606601658e-8"), + boost::lexical_cast("-0.941337297619721713151110244242536308266701344868601679868536153775533330272973088246835359e-10"), + boost::lexical_cast("0.24064815013182536657310186836079333949814111498828401548170442715552017773994482539471456e-11"), + boost::lexical_cast("-0.493892399304811910466345686492277504628763169549384435563232052965821874553923373100791477e-13"), + boost::lexical_cast("0.799780678476644196901221989475355609743387528732994566453160178199295104357319723742820593e-15"), + boost::lexical_cast("-0.100148627870893347527249092785257443532967736956154251497569191947184705954310833302770086e-16"), + boost::lexical_cast("0.947100256812658897084619699699028861352615460106539259289295071616221848196411749449858071e-19"), + boost::lexical_cast("-0.657808193528898116367845405906343884364280888644748907819280236995018351085371701094007759e-21"), + boost::lexical_cast("0.324554050057463845012469010247790763753999056976705084126950591088538742509983426730851614e-23"), + boost::lexical_cast("-0.10927068902162908990029309141242256163212535730975970310918370355165185052827948996110107e-25"), + boost::lexical_cast("0.239012340507870646690121104637467232366271566488184795459093215303237974655782634371712486e-28"), + boost::lexical_cast("-0.31958700972990573259359660326375143524864710953063781494908314884519046349402409667329667e-31"), + boost::lexical_cast("0.241905641292988284384362036555782113275737930713192053073501265726048089991747342247551645e-34"), + boost::lexical_cast("-0.93894080230619233745797029179332447129464915420290457418429337322820997038069119047864035e-38"), + boost::lexical_cast("0.164023814025085488413251990798690797467351995518990067783355251949198292596815470576539877e-41"), + boost::lexical_cast("-0.108010831192689925518484618970761942019888832176355541674171850211917230280206410356465451e-45"), + boost::lexical_cast("0.208831600642796805563854019033577205240227465154130766898180386564934443551840379116390645e-50"), + boost::lexical_cast("-0.819516067465171848863933747691434138146789031214932473898084756489529673230665363014007306e-56"), + boost::lexical_cast("0.365344970579318347488211604761724311582675708113250505307342682118101409913523622073678179e-62"), + boost::lexical_cast("-0.684593199208628857931267904308244537968349564351534581234005234847904343404822808648361291e-70"), + }; + T result = 0; + T z = dz + 2; + for(int k = 1; k <= sizeof(d)/sizeof(d[0]); ++k) + { + result += (-d[k-1]*dz)/(z + k*z + k*k - 1); + } + return result; + } + + static double g(){ return 63.19215200000000010049916454590857028961181640625; } +}; + +namespace boost{ namespace math{ namespace lanczos{ + +template +struct lanczos +{ +#ifdef L13 + typedef lanczos13UDT type; +#elif defined(L22) + typedef lanczos22UDT type; +#elif defined(L31) + typedef lanczos31UDT type; +#else + typedef lanczos61UDT type; +#endif +}; + +}}} + +#endif + + diff --git a/tools/process_perf_results.cpp b/tools/process_perf_results.cpp new file mode 100644 index 000000000..816f422c9 --- /dev/null +++ b/tools/process_perf_results.cpp @@ -0,0 +1,127 @@ +// Copyright John Maddock 2007. + +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +std::map results; + +std::map extra_text; + +void load_file(std::string& s, std::istream& is) +{ + s.erase(); + if(is.bad()) return; + s.reserve(is.rdbuf()->in_avail()); + char c; + while(is.get(c)) + { + if(s.capacity() == s.size()) + s.reserve(s.capacity() * 3); + s.append(1, c); + } +} + +int main(int argc, const char* argv[]) +{ + // + // Set any additional text that should accumpany specific results: + // + extra_text["msvc-dist-beta-R-quantile"] = "[footnote There are a small number of our test cases where the R library fails to converge on a result: these tend to dominate the performance result.]"; + extra_text["msvc-dist-nbinom-R-quantile"] = "[footnote The R library appears to use a linear-search strategy, that can perform very badly in a small number of pathological cases, but may or may not be more efficient in \"typical\" cases]"; + extra_text["gcc-4_2-dist-beta-R-quantile"] = "[footnote There are a small number of our test cases where the R library fails to converge on a result: these tend to dominate the performance result.]"; + extra_text["gcc-4_2-dist-nbinom-R-quantile"] = "[footnote The R library appears to use a linear-search strategy, that can perform very badly in a small number of pathological cases, but may or may not be more efficient in \"typical\" cases]"; + boost::regex e("^Testing\\s+(\\S+)\\s+(\\S+)"); + std::string f; + for(int i = 1; i < argc-1; ++i) + { + std::ifstream is(argv[i]); + load_file(f, is); + boost::sregex_iterator a(f.begin(), f.end(), e), b; + while(a != b) + { + results[(*a).str(1)] = boost::lexical_cast((*a).str(2)); + ++a; + } + } + // + // Load quickbook file: + // + std::ifstream is(argv[argc-1]); + std::ofstream os(std::string(argv[argc-1]).append(".bak").c_str()); + e.assign("\\[perf\\s+([^\\s.]+)(?:\\[[^\\]]*\\]|[^\\]])*\\]"); + std::string newfile; + while(is.good()) + { + std::getline(is, f); + os << f << std::endl; + boost::sregex_iterator i(f.begin(), f.end(), e), j; + double min = (std::numeric_limits::max)(); + while(i != j) + { + std::cout << (*i).str() << std::endl << (*i).str(1) << std::endl; + std::string item = (*i).str(1); + if(results.find(item) != results.end()) + { + double r = results[item]; + if(r < min) + min = r; + } + ++i; + } + // + // Now perform the substitutions: + // + std::string newstr; + std::string tail; + i = boost::sregex_iterator(f.begin(), f.end(), e); + while(i != j) + { + std::string item = (*i).str(1); + newstr.append(i->prefix()); + if(results.find(item) != results.end()) + { + double v = results[item]; + double r = v / min; + newstr += std::string((*i)[0].first, (*i)[1].second); + newstr += "..[para "; + if(r < 1.01) + newstr += "*"; + newstr += (boost::format("%.2f") % r).str(); + if(r < 1.01) + newstr += "*"; + if(extra_text.find(item) != extra_text.end()) + { + newstr += extra_text[item]; + } + newstr += "][para ("; + newstr += (boost::format("%.3e") % results[item]).str(); + newstr += "s)]]"; + } + else + { + newstr.append(i->str()); + std::cerr << "Item " << item << " not found!!" << std::endl; + } + tail = i->suffix(); + ++i; + } + if(newstr.size()) + newfile.append(newstr).append(tail); + else + newfile.append(f); + newfile.append("\n"); + } + is.close(); + std::ofstream ns(argv[argc-1]); + ns << newfile; +} + diff --git a/tools/rational_tests.cpp b/tools/rational_tests.cpp new file mode 100644 index 000000000..ebb1bdb78 --- /dev/null +++ b/tools/rational_tests.cpp @@ -0,0 +1,366 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +int main() +{ + using namespace boost::math; + using namespace boost::math::tools; + + boost::math::ntl::RR::SetPrecision(500); + boost::math::ntl::RR::SetOutputPrecision(40); + + std::tr1::mt19937 rnd; + std::tr1::variate_generator< + std::tr1::mt19937, + std::tr1::uniform_int<> > gen(rnd, std::tr1::uniform_int<>(1, 12)); + + for(unsigned i = 1; i < 12; ++i) + { + std::vector coef; + for(unsigned j = 0; j < i; ++j) + { + coef.push_back(gen()); + } + std::cout << +" //\n" +" // Polynomials of order " << i-1 << "\n" +" //\n" +" static const U n" << i << "c[" << i << "] = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + std::cout << + " static const boost::array n" << i << "a = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + + boost::math::ntl::RR r1 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + boost::math::ntl::RR r2 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + boost::math::ntl::RR r3 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + boost::math::ntl::RR r4 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + r1 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + r2 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + r3 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + r4 = boost::math::tools::evaluate_even_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + if(i > 1) + { + r1 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + r2 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + r3 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + r4 = boost::math::tools::evaluate_odd_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3 << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4 << "L),\n" + " tolerance);\n\n"; + } + + r1 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + r2 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + r3 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + r4 = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + + coef.clear(); + for(unsigned j = 0; j < i; ++j) + { + coef.push_back(gen()); + } + std::cout << +" //\n" +" // Rational functions of order " << i-1 << "\n" +" //\n" +" static const U d" << i << "c[" << i << "] = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + std::cout << + " static const boost::array d" << i << "a = { "; + for(unsigned j = 0; j < i; ++j) + { + if(j) + std::cout << ", "; + std::cout << coef[j]; + } + std::cout << " };\n"; + + boost::math::ntl::RR r1d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.125), i); + boost::math::ntl::RR r2d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.25), i); + boost::math::ntl::RR r3d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(0.75), i); + boost::math::ntl::RR r4d = boost::math::tools::evaluate_polynomial(&coef[0], boost::math::ntl::RR(1) - boost::math::ntl::RR(1) / 64, i); + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.125), " << i << "),\n" + " static_cast(" << r1/r1d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.25), " << i << "),\n" + " static_cast(" << r2/r2d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.75), " << i << "),\n" + " static_cast(" << r3/r3d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(1.0f - 1.0f/64.0f), " << i << "),\n" + " static_cast(" << r4/r4d << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.125)),\n" + " static_cast(" << r1/r1d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.25)),\n" + " static_cast(" << r2/r2d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(0.75)),\n" + " static_cast(" << r3/r3d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4/r4d << "L),\n" + " tolerance);\n\n"; + + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(0.125)),\n" + " static_cast(" << r1/r1d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(0.25)),\n" + " static_cast(" << r2/r2d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(0.75)),\n" + " static_cast(" << r3/r3d << "L),\n" + " tolerance);\n"; + std::cout << + " BOOST_CHECK_CLOSE(\n" + " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast(1.0f - 1.0f/64.0f)),\n" + " static_cast(" << r4/r4d << "L),\n" + " tolerance);\n\n"; + } + + return 0; +} + + + diff --git a/tools/spherical_harmonic_data.cpp b/tools/spherical_harmonic_data.cpp new file mode 100644 index 000000000..e66fc228e --- /dev/null +++ b/tools/spherical_harmonic_data.cpp @@ -0,0 +1,91 @@ +// (C) Copyright John Maddock 2007. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include + +using namespace boost::math::tools; +using namespace boost::math; +using namespace std; + +float extern_val; +// confuse the compilers optimiser, and force a truncation to float precision: +float truncate_to_float(float const * pf) +{ + extern_val = *pf; + return *pf; +} + + + +template +std::tr1::tuple spherical_harmonic_data(T i) +{ + static tr1::mt19937 r; + + int n = real_cast(floor(i)); + tr1::uniform_int<> ui(0, (std::min)(n, 40)); + int m = ui(r); + + std::tr1::uniform_real ur(-2*constants::pi(), 2*constants::pi()); + float _theta = ur(r); + float _phi = ur(r); + T theta = truncate_to_float(&_theta); + T phi = truncate_to_float(&_phi); + + T r1 = spherical_harmonic_r(n, m, theta, phi); + T r2 = spherical_harmonic_i(n, m, theta, phi); + return std::tr1::make_tuple(n, m, theta, phi, r1, r2); +} + +int test_main(int argc, char*argv []) +{ + using namespace boost::math::tools; + + boost::math::ntl::RR::SetOutputPrecision(50); + boost::math::ntl::RR::SetPrecision(1000); + + parameter_info arg1, arg2, arg3; + test_data data; + + bool cont; + std::string line; + + if(argc < 1) + return 1; + + do{ + if(0 == get_user_parameter_info(arg1, "n")) + return 1; + arg1.type |= dummy_param; + arg2.type |= dummy_param; + arg3 = arg2; + + data.insert(&spherical_harmonic_data, arg1); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + + std::cout << "Enter name of test data file [default=spherical_harmonic.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "spherical_harmonic.ipp"; + std::ofstream ofs(line.c_str()); + line.erase(line.find('.')); + ofs << std::scientific; + write_code(ofs, data, line.c_str()); + + return 0; +} + diff --git a/tools/tgamma_ratio_data.cpp b/tools/tgamma_ratio_data.cpp new file mode 100644 index 000000000..ed1082cdd --- /dev/null +++ b/tools/tgamma_ratio_data.cpp @@ -0,0 +1,99 @@ +// (C) Copyright John Maddock 2006. +// Use, modification and distribution are subject to the +// Boost Software License, Version 1.0. (See accompanying file +// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include + +#include + +#include "ntl_rr_lanczos.hpp" + +using namespace boost::math::tools; +using namespace std; + +std::tr1::tuple + tgamma_ratio(const boost::math::ntl::RR& a, const boost::math::ntl::RR& delta) +{ + if(delta > a) + throw std::domain_error(""); + boost::math::ntl::RR tg = boost::math::tgamma(a); + boost::math::ntl::RR r1 = tg / boost::math::tgamma(a + delta); + boost::math::ntl::RR r2 = tg / boost::math::tgamma(a - delta); + if((r1 > (std::numeric_limits::max)()) || (r2 > (std::numeric_limits::max)())) + throw std::domain_error(""); + + return std::tr1::make_tuple(r1, r2); +} + +boost::math::ntl::RR tgamma_ratio2(const boost::math::ntl::RR& a, const boost::math::ntl::RR& b) +{ + return boost::math::tgamma(a) / boost::math::tgamma(b); +} + + +int test_main(int argc, char*argv []) +{ + boost::math::ntl::RR::SetPrecision(1000); + boost::math::ntl::RR::SetOutputPrecision(40); + + parameter_info arg1, arg2; + test_data data; + + bool cont; + std::string line; + + if((argc >= 2) && (strcmp(argv[1], "--ratio") == 0)) + { + std::cout << "Welcome.\n" + "This program will generate spot tests for the function tgamma_ratio(a, b)\n\n"; + + do{ + if(0 == get_user_parameter_info(arg1, "a")) + return 1; + if(0 == get_user_parameter_info(arg2, "b")) + return 1; + data.insert(&tgamma_ratio2, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + else + { + std::cout << "Welcome.\n" + "This program will generate spot tests for the function tgamma_delta_ratio(a, delta)\n\n"; + + do{ + if(0 == get_user_parameter_info(arg1, "a")) + return 1; + if(0 == get_user_parameter_info(arg2, "delta")) + return 1; + data.insert(&tgamma_ratio, arg1, arg2); + + std::cout << "Any more data [y/n]?"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + cont = (line == "y"); + }while(cont); + } + + std::cout << "Enter name of test data file [default=tgamma_ratio_data.ipp]"; + std::getline(std::cin, line); + boost::algorithm::trim(line); + if(line == "") + line = "tgamma_ratio_data.ipp"; + std::ofstream ofs(line.c_str()); + ofs << std::scientific; + write_code(ofs, data, "tgamma_ratio_data"); + + return 0; +} + + diff --git a/vc71_fix/Jamfile.v2 b/vc71_fix/Jamfile.v2 new file mode 100644 index 000000000..3ed51cf46 --- /dev/null +++ b/vc71_fix/Jamfile.v2 @@ -0,0 +1,6 @@ +# Copyright 2007 John Maddock and Paul A. Bristow. +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +lib vc_fix : instantiate_all.cpp : static ; + diff --git a/vc71_fix/instantiate_all.cpp b/vc71_fix/instantiate_all.cpp new file mode 100644 index 000000000..450ca188e --- /dev/null +++ b/vc71_fix/instantiate_all.cpp @@ -0,0 +1,29 @@ +// Copyright John Maddock 2006. +// 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) + +// +// MSVC-7.1 has a problem with our tests: sometimes when a +// function is used via a function pointer, it does *not* +// instantiate the template, leading to unresolved externals +// at link time. Therefore we create a small library that +// instantiates "everything", and link all our tests against +// it for msvc-7.1 only. Note that due to some BBv2 limitations +// we can not place this in a sub-folder of the test directory +// as that would lead to recursive project dependencies... +// + +#include "../test/compile_test/instantiate.hpp" +#include + +void some_proc() +{ + instantiate(float(0)); + instantiate(double(0)); + instantiate(static_cast(0)); + instantiate(static_cast(0)); +} + + +